[
  {
    "path": ".github/workflows/build-and-release.yml",
    "content": "name: Build & Release\n\non:\n  push:\n    tags:\n      - 'v*'\n\njobs:\n  build-release:\n    runs-on: ubuntu-latest\n    name: Build and Release for Multiple OS & Arch\n    permissions:\n      contents: write\n    \n    strategy:\n      matrix:\n        include:\n          # Windows targets (64-bit only)\n          - os: windows\n            goos: windows\n            arch: amd64\n            suffix: .exe\n          - os: windows\n            goos: windows\n            arch: arm64\n            suffix: .exe\n          \n          # Linux targets (64-bit architectures)\n          - os: linux\n            goos: linux\n            arch: amd64\n            suffix: ''\n          - os: linux\n            goos: linux\n            arch: arm64\n            suffix: ''\n          \n          # macOS targets (64-bit only)\n          - os: macos\n            goos: darwin\n            arch: amd64\n            suffix: ''\n          - os: macos\n            goos: darwin\n            arch: arm64\n            suffix: ''\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n\n      - name: Set up Go\n        uses: actions/setup-go@v5\n        with:\n          go-version: '1.24.5'\n\n      - name: Prepare workspace\n        run: |\n          echo \"📂 Workspace structure:\"\n          ls -la\n          \n          echo \"📂 gossh directory content:\"\n          ls -la gossh\n          \n          # 确保目录存在\n          if [ ! -d \"gossh\" ]; then\n            echo \"❌ Error: gossh directory not found!\"\n            exit 1\n          fi\n          \n          # 进入gossh目录准备构建\n          cd gossh\n          \n          # 更新依赖\n          go mod tidy\n          go mod download\n\n      - name: Build for ${{ matrix.os }} (${{ matrix.arch }})\n        run: |\n          cd gossh\n          \n          # 静态编译\n          CGO_ENABLED=0 GOOS=${{ matrix.goos }} GOARCH=${{ matrix.arch }} \\\n            go build -trimpath -ldflags=\"-s -w\" -o GoWebSSH${{ matrix.suffix }}\n          \n          # 验证构建结果\n          if [ -f \"GoWebSSH${{ matrix.suffix }}\" ]; then\n            echo \"✅ Build successful! Output file: GoWebSSH${{ matrix.suffix }}\"\n          else\n            echo \"❌ Build failed! No output file found in: $(pwd)\"\n            ls -la\n            exit 1\n          fi\n          \n          # 创建压缩包（在仓库根目录）\n          zip -j ../GoWebSSH-${{ matrix.os }}-${{ matrix.arch }}.zip GoWebSSH${{ matrix.suffix }}\n\n      - name: Create Release and Upload Assets\n        uses: softprops/action-gh-release@v2\n        with:\n          name: ${{ github.ref_name }}\n          tag_name: ${{ github.ref_name }}\n          files: |\n            GoWebSSH-*.zip\n"
  },
  {
    "path": ".gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# Next.js build output\n.next\n\n# Nuxt.js build / generate output\n.nuxt\ndist\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and *not* Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\n\n######################\n# OS generated files #\n######################\n.DS_Store\n.DS_Store?\n._*\n.Spotlight-V100\n.Trashes\nehthumbs.db\nThumbs.db\n\n######################\n# ide #\n######################\n\n.idea\n*.iml\n/gossh/go.sum\n/gossh/gossh\n/gossh/GoWebSSH.db\n"
  },
  {
    "path": "Dockerfile",
    "content": "# 第一阶段：构建\nFROM golang:1.23.4 AS builder\nWORKDIR /mnt\nCOPY gossh ./gossh\nRUN cd /mnt/gossh && CGO_ENABLED=0 go build -o /mnt/gowebssh\n\n# 第二阶段：运行\nFROM alpine:3.21.0\nWORKDIR /root/\nVOLUME /var/lib/webssh\nEXPOSE 8899\nCOPY --from=builder /mnt/gowebssh /bin/gowebssh\nCMD [\"/bin/gowebssh\", \"-WorkDir\", \"/var/lib/webssh\"]"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 o8oo8o\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": "README.md",
    "content": "## GoWebSSH\n<br/>\n\n### 项目介绍：\n* **Web版ssh客户端 + (sshd,sftp)服务端实现**\n<br/>\n\n### 概要：\n* Golang 1.23 + (Vue3.5 + Vite6)  实现一个Web版单文件的(SSH+SSHD)\n* 借助于Golang embed,打包以后只有一个文件,简单高效\n* 使用及编译过程,超级简单,绝对保姆级\n* 上一版主要本地运行,但是通过部分用户反馈,此项目定位改为服务器运行,所以此版本加入了很多企业场景中的功能\n<br/>\n\n### 联系我：\n* **QQ:774309635**\n<br/>\n\n---\n### Quick start(大象装进冰箱只需3步)：\n>  必须使用golang 1.21以上版本\n* git clone https://github.com/o8oo8o/WebSSH.git\n* cd WebSSH/gossh\n* go build\n* ./gossh\n>  打开链接 http://127.0.0.1:8899/ 开始享用吧,第一次需要初始化\n<br/>\n\n### Docker 方式：\n* git clone https://github.com/o8oo8o/WebSSH.git\n* cd WebSSH\n* docker build -f Dockerfile -t gowebssh:v2 .\n* docker run -d --name webssh -p 8899:8899 -v gowebssh:/var/lib/webssh gowebssh:v2\n<br/>\n\n### 打赏我：\n* **每一个开源项目的背后，都有一群默默付出、充满激情的开发者。他们用自己的业余时间，不断地优化代码、修复bug、撰写文档，只为让项目变得更好。如果您觉得我的项目对您有所帮助，如果您认可我的努力和付出，那么请考虑给予我一点小小的打赏，够买一瓶啤酒就行🍺，如果能同时打赏啤酒花生那更好🍺🥜，因为所有的代码都是喝完酒撸的。放上收款码的时候我是羞愧的，一个中年男人的最后的尊严和节操竟然没了😂，友情提示:打赏不退，怕被媳妇查到大额支出🥸，如果需要技术支持，需要收费哦**\n<br/>\n<br/>\n\n![打赏二维码](https://gitee.com/o8oo8o/WebSSH/raw/main/img/pay.png)\n\n<br/>\n\n### 运行环境依赖：\n* 需要MySQL8+及PostgreSQL12.2+或者直接使用内置SQLite数据库\n\n### SSHD服务器功能：\n* 可以配置只监听本地端口\n* 支持Web配置sshd服务器账号密码及公钥\n* 支持密码认证,公钥认证,增强登录过程的安全性\n* 通过SFTP或SCP用户可以安全地在本地和远程服务器之间传输文件\n<br/>\n\n### Web客户端主要功能：\n* 支持同时连接多个主机,支持重连、清屏功能\n* 支持IPv4、IPv6\n* 支持SSH证书登陆及证书密码\n* 支持批量支持命令,当前终端及所有终端\n* 支持命令收藏,方便重复执行命令,批量发送命令到所有会话\n* 可以保存主机连接信息\n* 支持直接通过Web上传下载文件\n* 支持直接通过Web创建目录,删除文件及目录功能\n* 支持手动输入路径\n* 支持自定义终端字体大小、字体颜色、字体样式\n* 支持自定义背景、光标颜色及光标样式\n* 已保存的主机信息可直接编辑并连接\n* 支持后台管理,强制断开连接\n* 支持登陆日志审计,方便监控违规操作\n* 支持访问控制,在公网场景中有效拦截非法访问\n<br/>\n\n### 为什么这么简单:\n* 为了方便您使用,把golang编译的依赖已经整理好了,clone就一起下载了\n* 前端已经编译完成,并把编译完成的静态资源拷贝到gossh/webroot目录中\n* 可执行文件内嵌静态资源,方便你随性所欲的移动可执行文件\n* 因内置sshd服务器,在受限的网络环境依然能通过web访问\n<br/>\n\n### 配置文件：\n* 第一次运行会在用户home目录创建一个 .GoWebSSH 目录\n* GoWebSSH.toml 可以配置server端口等信息\n* cert.pem HTTPS服务器证书文件\n* key.key  HTTPS服务器私钥文件\n<br/>\n\n### 注意: \n* 当程序检测到cert.pem 和 key.key 文件,会使用https协议,否则使用http协议\n* 用户只需把证书文件和私钥文件放到 .GoWebSSH 目录就可以了\n```shell\nopenssl genpkey -algorithm RSA -out key.key -pkeyopt rsa_keygen_bits:2048\n\nopenssl req -new -x509 -key key.key -out cert.pem -days 365 -subj \"/C=CN/ST=bj/L=bj/O=gowebssh/OU=gowebssh/CN=gowebssh.com\"\n```\n<br/>\n\n### Systemd 方式启动: \n```shell\ncat > /etc/systemd/system/gowebssh.service << \"END\"\n##################################\n[Unit]\nDescription=GoWebSSH Daemon\nAfter=network.target\nWants=network-online.target\n\n[Service]\nType=simple\nUser=root\nEnvironment=TERM=xterm\nEnvironment=XDG_SESSION_TYPE=tty\nEnvironment=HOME=/root\nPrivateTmp=true\nLimitNOFILE=65535\n\n# 执行程序路径\nExecStart=/usr/local/gossh\n\n# auto restart\nStartLimitIntervalSec=0\nRestart=always\nRestartSec=1\n\n[Install]\nWantedBy=multi-user.target\n##################################\nEND\n\nsystemctl daemon-reload\n\nsystemctl start gowebssh.service\n\nsystemctl enable gowebssh.service\n\n```\n<br/>\n\n---\n### 演示截图：\n![a](https://gitee.com/o8oo8o/WebSSH/raw/main/img/a.jpg)\n![b](https://gitee.com/o8oo8o/WebSSH/raw/main/img/b.jpg)\n![c](https://gitee.com/o8oo8o/WebSSH/raw/main/img/c.jpg)\n![d](https://gitee.com/o8oo8o/WebSSH/raw/main/img/d.jpg)\n![e](https://gitee.com/o8oo8o/WebSSH/raw/main/img/e.jpg)\n![f](https://gitee.com/o8oo8o/WebSSH/raw/main/img/f.jpg)\n\n\n"
  },
  {
    "path": "gossh/Makefile",
    "content": "\n.PHONY: clean all\n\nall: linux-amd64 linux-arm64 macos-amd64 macos-arm64 windows-amd64\n\nlinux-amd64:\n\tCGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o WebSSH-linux-amd64\n\nlinux-arm64:\n\tCGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -o WebSSH-linux-arm64\n\nmacos-amd64:\n\tCGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o WebSSH-macos-amd64\n\nmacos-arm64:\n\tCGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o WebSSH-macos-arm64\n\nwindows-amd64:\n\tCGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o WebSSH-windows-amd64.exe\n\nWebSSH:\n\tgo build -o WebSSH\n\nclean:\n\trm -f WebSSH-linux-amd64 WebSSH-linux-arm64 WebSSH-macos-amd64 WebSSH-macos-arm64 WebSSH-windows-amd64.exe\n"
  },
  {
    "path": "gossh/app/config/config.go",
    "content": "package config\n\nimport (\n\t\"flag\"\n\t\"gossh/app/utils\"\n\t\"gossh/toml\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path\"\n\t\"time\"\n)\n\ntype AppConfig struct {\n\tWebBaseDir    string        `json:\"web_base_dir\"  toml:\"web_base_dir\"`\n\tAppName       string        `json:\"app_name\"  toml:\"app_name\"`\n\tDbType        string        `json:\"db_type\" toml:\"db_type\"`\n\tDbDsn         string        `json:\"db_dsn\" toml:\"db_dsn\"`\n\tIsInit        bool          `json:\"is_init\" toml:\"is_init\"`\n\tJwtSecret     string        `json:\"jwt_secret\" toml:\"jwt_secret\"`\n\tAesSecret     string        `json:\"aes_secret\" toml:\"aes_secret\"`\n\tJwtExpire     time.Duration `json:\"jwt_expire\" toml:\"jwt_expire\"`\n\tStatusRefresh time.Duration `json:\"status_refresh\" toml:\"status_refresh\"`\n\tClientCheck   time.Duration `json:\"client_check\" toml:\"client_check\"`\n\tSessionSecret string        `json:\"session_secret\" toml:\"session_secret\"`\n\tAddress       string        `json:\"address\" toml:\"address\"`\n\tPort          string        `json:\"port\" toml:\"port\"`\n\tCertFile      string        `json:\"cert_file\" toml:\"cert_file\"`\n\tKeyFile       string        `json:\"key_file\" toml:\"key_file\"`\n}\n\nfunc (c *AppConfig) write() error {\n\tdata, err := toml.Marshal(c)\n\tif err != nil {\n\t\tslog.Error(\"序列化TOML配置文件错误:\", \"err_msg\", err)\n\t\treturn err\n\t}\n\n\terr = os.WriteFile(confFileFullPath, data, os.FileMode(0777))\n\tif err != nil {\n\t\tslog.Error(\"写入默认配置文件错误:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\treturn nil\n}\n\nvar DefaultConfig = AppConfig{\n\tWebBaseDir:    \"\",\n\tAppName:       \"GoWebSHH\",\n\tDbType:        \"mysql\",\n\tDbDsn:         \"\",\n\tIsInit:        false,\n\tJwtSecret:     utils.RandString(64),\n\tAesSecret:     utils.RandString(32),\n\tSessionSecret: utils.RandString(64),\n\tJwtExpire:     time.Minute * 120,\n\tStatusRefresh: time.Second * 3,\n\tClientCheck:   time.Second * 15,\n\tAddress:       \"\",\n\tPort:          \"8899\",\n\tCertFile:      path.Join(WorkDir, \"cert.pem\"),\n\tKeyFile:       path.Join(WorkDir, \"key.key\"),\n}\n\nvar UserHomeDir, _ = os.UserHomeDir()\n\nvar projectName = \"GoWebSSH\"\n\nvar confFileName = \"GoWebSSH.toml\"\n\nvar confPath = string(os.PathSeparator) + \".\" + projectName + string(os.PathSeparator)\n\n// WorkDir 程序默认工作目录,在用户的home目录下 .GoWebSSH 目录\nvar WorkDir = path.Join(UserHomeDir, confPath)\n\nvar confFileFullPath = path.Join(WorkDir, confFileName)\n\nfunc InitConfig() {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"init config failed\", \"err_msg\", err)\n\t\t\tos.Exit(255)\n\t\t}\n\t}()\n\n\tvar configDir string\n\tvar webBaseDir string\n\tflag.StringVar(&configDir, \"ConfigDir\", \"\", \"ConfigDir\")\n\tflag.StringVar(&webBaseDir, \"WebBaseDir\", \"\", \"WebBaseDir\")\n\tflag.Parse()\n\tDefaultConfig.WebBaseDir = configDir\n\tif configDir != \"\" {\n\t\tWorkDir = path.Join(configDir, confPath)\n\t\tconfFileFullPath = path.Join(WorkDir, confFileName)\n\t\tDefaultConfig.CertFile = path.Join(WorkDir, \"cert.pem\")\n\t\tDefaultConfig.KeyFile = path.Join(WorkDir, \"key.key\")\n\t}\n\tslog.Info(\"use-config-file\", \"path\", confFileFullPath)\n\n\tinfo, err := os.Stat(WorkDir)\n\tif os.IsNotExist(err) {\n\t\terr := os.MkdirAll(WorkDir, os.FileMode(0755))\n\t\tif err != nil {\n\t\t\tslog.Error(\"创建工作目录失败\")\n\t\t\treturn\n\t\t}\n\t}\n\n\tinfo, err = os.Stat(WorkDir)\n\tif !info.IsDir() {\n\t\tslog.Error(\"有一个和工作目录同名的目录\", \"dir\", WorkDir)\n\t\treturn\n\t}\n\n\t_, err = os.Stat(confFileFullPath)\n\tif os.IsNotExist(err) {\n\t\tif err := DefaultConfig.write(); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata, err := os.ReadFile(confFileFullPath)\n\tif err != nil {\n\t\tslog.Error(\"读取配置文件错误:\", \"err_msg\", err.Error())\n\t\treturn\n\t}\n\n\terr = toml.Unmarshal(data, &DefaultConfig)\n\tif err != nil {\n\t\tslog.Error(\"TOML解析配置文件错误:\", \"err_msg\", err.Error())\n\t\treturn\n\t}\n\n\t// 修正webBaseDir\n\tif DefaultConfig.WebBaseDir != webBaseDir {\n\t\tDefaultConfig.WebBaseDir = webBaseDir\n\t\tif err := DefaultConfig.write(); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tslog.Debug(\"DefaultConfig:\", \"data\", DefaultConfig)\n\n}\n\nfunc RewriteConfig(conf AppConfig) error {\n\tdata, err := toml.Marshal(conf)\n\tif err != nil {\n\t\tslog.Error(\"序列化TOML配置文件错误:\", \"err_msg\", err)\n\t\treturn err\n\t}\n\t// 覆盖全局变量\n\tDefaultConfig = conf\n\terr = os.Remove(confFileFullPath)\n\tif err != nil {\n\t\tslog.Error(\"删除旧配置文件错误:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\terr = os.WriteFile(confFileFullPath, data, os.FileMode(0777))\n\tif err != nil {\n\t\tslog.Error(\"写入默认配置文件错误:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/app/middleware/db_check.go",
    "content": "package middleware\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n)\n\nfunc DbCheck() gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tif !config.DefaultConfig.IsInit {\n\t\t\tc.Next()\n\t\t\treturn\n\t\t}\n\t\tif model.Db != nil {\n\t\t\ttx := model.Db.Exec(\"select 1=1\")\n\t\t\tif tx.Error == nil {\n\t\t\t\tc.Next()\n\t\t\t} else {\n\t\t\t\terr := model.DbMigrate(config.DefaultConfig.DbType, config.DefaultConfig.DbDsn)\n\t\t\t\tif err != nil {\n\t\t\t\t\tc.Abort()\n\t\t\t\t\tc.JSON(500, gin.H{\"code\": 500, \"msg\": \"数据库连接错误:\" + err.Error()})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "gossh/app/middleware/jwt_auth.go",
    "content": "package middleware\n\nimport (\n\t\"errors\"\n\t\"gossh/app/config\"\n\t\"gossh/gin\"\n\t\"gossh/gin/jwt\"\n\t\"strings\"\n\t\"time\"\n)\n\n// JwtSecret 生成JWT签名的密钥\nvar JwtSecret = []byte(config.DefaultConfig.JwtSecret)\n\ntype JwtClaims struct {\n\t// 用户Id\n\tId uint\n\n\t// 标准Claims结构体，可设置8个标准字段\n\tjwt.RegisteredClaims\n}\n\n// GenerateToken 登录成功后调用，传入SshUser结构体\nfunc GenerateToken(id uint) (string, error) {\n\n\t// 两个小时有效期\n\texpirationTime := time.Now().Add(config.DefaultConfig.JwtExpire)\n\tclaims := &JwtClaims{\n\t\tId: id,\n\t\tRegisteredClaims: jwt.RegisteredClaims{\n\t\t\tExpiresAt: jwt.NewNumericDate(expirationTime),\n\t\t\tIssuer:    \"go_web_ssh\",\n\t\t},\n\t}\n\t// 生成Token，指定签名算法和claims\n\ttoken := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)\n\n\t// 签名\n\ttokenString, err := token.SignedString(JwtSecret)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn tokenString, nil\n}\n\nfunc ParseToken(tokenString string) (*JwtClaims, error) {\n\tclaims := &JwtClaims{}\n\t_, err := jwt.ParseWithClaims(tokenString, claims, func(t *jwt.Token) (any, error) {\n\t\treturn JwtSecret, nil\n\t})\n\t// 若token只是过期claims是有数据的，若token无法解析claims无数据\n\treturn claims, err\n}\n\nfunc RenewToken(claims *JwtClaims) (string, error) {\n\t// 若token过期不超过10分钟则给它续签\n\tif withinLimit(claims.ExpiresAt.Time.Unix(), 600) {\n\t\treturn GenerateToken(claims.Id)\n\t}\n\treturn \"\", errors.New(\"登录已过期\")\n}\n\n// 计算过期时间是否超过l\nfunc withinLimit(s, l int64) bool {\n\treturn time.Now().Unix()-s < l\n}\n\nfunc JWTAuth() gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tauth := c.Request.Header.Get(\"Authorization\")\n\t\tif len(auth) == 0 {\n\t\t\t// Websocket SSE 从请求参数取\n\t\t\tauth = c.Query(\"Authorization\")\n\t\t}\n\t\tif len(auth) == 0 {\n\t\t\t// 无token直接拒绝\n\t\t\tc.Abort()\n\t\t\tc.JSON(401, gin.H{\"code\": 401, \"msg\": \"请添加Authorization请求头\"})\n\t\t\treturn\n\t\t}\n\t\t// 校验token\n\t\tclaims, err := ParseToken(auth)\n\t\tif err != nil {\n\t\t\tif strings.Contains(err.Error(), \"token is expired\") {\n\t\t\t\t// 若过期，调用续签函数\n\t\t\t\tnewToken, _ := RenewToken(claims)\n\t\t\t\tif newToken != \"\" {\n\t\t\t\t\t// 续签成功返回头设置一个NewToken字段\n\t\t\t\t\tc.Header(\"NewToken\", newToken)\n\t\t\t\t\t//c.Request.Header.Set(\"Authorization\", newToken)\n\t\t\t\t\tc.Set(\"uid\", claims.Id)\n\t\t\t\t\tc.Next()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Token验证失败或续签失败直接拒绝请求\n\t\t\tc.Abort()\n\t\t\tc.JSON(401, gin.H{\"code\": 401, \"msg\": \"未登录\"})\n\t\t\treturn\n\t\t}\n\t\tc.Set(\"uid\", claims.Id)\n\t\t// token未过期继续执行其他中间件\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "gossh/app/middleware/net_filter.go",
    "content": "package middleware\n\nimport (\n\t\"fmt\"\n\t\"gossh/app/config\"\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"log/slog\"\n\t\"net\"\n)\n\nfunc check(ip net.IP) bool {\n\tvar policyConf model.PolicyConf\n\tconf, err := policyConf.FindByID(1)\n\tif err != nil {\n\t\tslog.Error(\"get policyConf:\", \"err_msg\", err.Error())\n\t\treturn false\n\t}\n\t// 白名单检查\n\tif conf.NetPolicy == \"Y\" {\n\t\t// slog.Info(\"netFilterPolicy\", \"value\", \"Y\")\n\t\tvar filter model.NetFilter\n\t\tlist, err := filter.FindAllPolicy(\"Y\")\n\t\tif err != nil {\n\t\t\tslog.Error(\"FindAllPolicy:\", \"err_msg\", err.Error())\n\t\t}\n\t\tisOK := false\n\t\tfor _, item := range list {\n\t\t\t_, ipNet, err := net.ParseCIDR(item.Cidr)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"net.ParseCIDR:\", \"err_msg\", err.Error())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif ipNet.Contains(ip) {\n\t\t\t\tisOK = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn isOK\n\t}\n\n\t// 黑名单检查\n\tif conf.NetPolicy == \"N\" {\n\t\t// slog.Info(\"netFilterPolicy\", \"value\", \"N\")\n\t\tvar filter model.NetFilter\n\t\tlist, err := filter.FindAllPolicy(\"N\")\n\t\tif err != nil {\n\t\t\tslog.Error(\"FindAllPolicy:\", \"err_msg\", err.Error())\n\t\t}\n\t\tisOK := true\n\t\tfor _, item := range list {\n\t\t\t_, ipNet, err := net.ParseCIDR(item.Cidr)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"net.ParseCIDR:\", \"err_msg\", err.Error())\n\t\t\t\treturn false\n\t\t\t}\n\t\t\tif ipNet.Contains(ip) {\n\t\t\t\tisOK = false\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn isOK\n\t}\n\treturn false\n}\n\nfunc NetFilter() gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\t// 系统没有进行初始化,过滤功能不生效\n\t\tif !config.DefaultConfig.IsInit {\n\t\t\tc.Next()\n\t\t\treturn\n\t\t}\n\n\t\tip := net.ParseIP(c.RemoteIP())\n\t\tif !check(ip) {\n\t\t\tc.JSON(403, gin.H{\"err_msg\": fmt.Sprintf(\"Deny %s\", ip.String())})\n\t\t\tc.Abort()\n\t\t\treturn\n\t\t}\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "gossh/app/middleware/perm_check.go",
    "content": "package middleware\n\nimport (\n\t\"fmt\"\n\t\"gossh/app/config\"\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"slices\"\n\t\"strings\"\n)\n\nvar checkRoute = []string{\n\t// \"GET:/app/*filepath\",\n\t// \"GET:/web_base_dir\",\n\t// \"HEAD:/app/*filepath\",\n\n\t// \"GET:/api/ssh/conn\",\n\t// \"PATCH:/api/ssh/conn\",\n\t// \"POST:/api/ssh/exec\",\n\t// \"POST:/api/ssh/disconnect\",\n\t// \"POST:/api/ssh/create_session\",\n\n\t// \"GET:/api/conn_conf\",\n\t// \"GET:/api/conn_conf/:id\",\n\t// \"POST:/api/conn_conf\",\n\t// \"PUT:/api/conn_conf\",\n\t// \"DELETE:/api/conn_conf/:id\",\n\n\t// \"GET:/api/cmd_note\",\n\t// \"GET:/api/cmd_note/:id\",\n\t// \"POST:/api/cmd_note\",\n\t// \"PUT:/api/cmd_note\",\n\t// \"DELETE:/api/cmd_note/:id\",\n\n\t// \"GET:/api/sftp/download\",\n\t// \"POST:/api/sftp/create_dir\",\n\t// \"POST:/api/sftp/list\",\n\t// \"DELETE:/api/sftp/delete\",\n\t// \"PUT:/api/sftp/upload\",\n\n\t// \"PUT:/api/conn_manage/refresh_conn_time\",\n\t// \"POST:/api/login\",\n\t// \"PATCH:/api/user/pwd\",\n\n\t\"GET:/api/sshd_cert\",\n\t\"GET:/api/sshd_cert_text\",\n\t\"GET:/api/sshd_cert/:id\",\n\t\"GET:/api/sshd_user\",\n\t\"GET:/api/sshd_user/:id\",\n\t\"GET:/api/sys/is_init\",\n\t\"GET:/api/sys/config\",\n\t\"GET:/api/conn_manage/online_client\",\n\t\"GET:/api/policy_conf\",\n\t\"GET:/api/policy_conf/:id\",\n\t\"GET:/api/net_filter\",\n\t\"GET:/api/net_filter/:id\",\n\t\"GET:/api/user\",\n\t\"GET:/api/user/:id\",\n\t\"POST:/api/sshd_user\",\n\t\"POST:/api/sshd_cert\",\n\t\"POST:/api/sys/db_conn_check\",\n\t\"POST:/api/sys/init\",\n\t\"POST:/api/sys/config\",\n\t\"POST:/api/login_audit\",\n\t\"POST:/api/policy_conf\",\n\t\"POST:/api/net_filter\",\n\t\"POST:/api/user\",\n\t\"PUT:/api/sshd_user\",\n\t\"PUT:/api/sshd_cert\",\n\t\"PUT:/api/policy_conf\",\n\t\"PUT:/api/net_filter\",\n\t\"PUT:/api/user\",\n\t\"DELETE:/api/sshd_user/:id\",\n\t\"DELETE:/api/sshd_cert/:id\",\n\t\"DELETE:/api/policy_conf/:id\",\n\t\"DELETE:/api/net_filter/:id\",\n\t\"DELETE:/api/user/:id\",\n\t\"PATCH:/api/sshd_user/check_name_exists\",\n\t\"PATCH:/api/sshd_cert/check_name_exists\",\n\t\"PATCH:/api/user/check_name_exists\",\n}\n\nfunc PremCheck(engine *gin.Engine) gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\t/*\n\t\t\tfor _, route := range engine.Routes() {\n\t\t\t\tpath := route.Path\n\t\t\t\tmethod := route.Method\n\t\t\t\tfmt.Printf(\"Route==>: %s:%s\\n\", method, path)\n\t\t\t}\n\t\t*/\n\t\tvar tmp = c.FullPath()\n\t\tvar baseDir = strings.Trim(config.DefaultConfig.WebBaseDir, \" \")\n\t\tif baseDir != \"\" && strings.HasPrefix(tmp, baseDir) {\n\t\t\ttmp = strings.TrimPrefix(tmp, baseDir)\n\t\t}\n\n\t\tfull := fmt.Sprintf(\"%s:%s\", c.Request.Method, tmp)\n\t\t// slog.Info(\"PermCheck\", \"base\", baseDir, \"path\", full)\n\t\tif slices.Contains(checkRoute, full) {\n\t\t\tvar wu model.WebUser\n\t\t\tu, err := wu.FindByID(c.GetUint(\"uid\"))\n\t\t\tif err != nil || u.IsAdmin == \"N\" {\n\t\t\t\tc.JSON(200, gin.H{\"code\": 403, \"msg\": \"权限检查失败,非管理员拒绝操作\"})\n\t\t\t\tc.Abort()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "gossh/app/middleware/sys_init.go",
    "content": "package middleware\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/gin\"\n)\n\nfunc SysInit() gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tif !config.DefaultConfig.IsInit {\n\t\t\t// 需要进行系统初始化\n\t\t\tc.Abort()\n\t\t\tc.JSON(401, gin.H{\"code\": 401, \"msg\": \"请对系统进行初始化\"})\n\t\t\treturn\n\t\t}\n\t\tc.Next()\n\t}\n}\n"
  },
  {
    "path": "gossh/app/model/cmd_note.go",
    "content": "package model\n\ntype CmdNote struct {\n\tID      uint   `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tUid     uint   `gorm:\"column:uid;not null;default:0\" form:\"uid\" json:\"uid\"`\n\tCmdName string `gorm:\"column:cmd_name;type:text\" form:\"cmd_name\" binding:\"required\" json:\"cmd_name\"`\n\tCmdData string `gorm:\"column:cmd_data;type:text\" form:\"cmd_data\" binding:\"required\" json:\"cmd_data\"`\n\n\tCreatedAt DateTime `gorm:\"created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"updated_at\" json:\"-\"`\n}\n\nfunc (c CmdNote) Create(cmd *CmdNote) error {\n\treturn Db.Create(cmd).Error\n}\n\nfunc (c CmdNote) FindByName(name string) (CmdNote, error) {\n\tvar cmd CmdNote\n\terr := Db.First(&cmd, \"name = ?\", name).Error\n\treturn cmd, err\n}\n\nfunc (c CmdNote) FindByID(id uint, uid uint) (CmdNote, error) {\n\tvar cmd CmdNote\n\terr := Db.First(&cmd, \"id = ? AND uid = ?\", id, uid).Error\n\treturn cmd, err\n}\n\nfunc (c CmdNote) FindAll(offset, limit int, uid uint) ([]CmdNote, error) {\n\tvar list []CmdNote\n\terr := Db.Where(\"uid = ?\", uid).Offset(offset).Limit(limit).Order(\"updated_at desc\").Find(&list).Error\n\treturn list, err\n}\n\nfunc (c CmdNote) UpdateById(id, uid uint, cmd *CmdNote) error {\n\treturn Db.Model(&c).Where(\"id = ? AND uid = ?\", id, uid).Updates(cmd).Error\n}\n\nfunc (c CmdNote) DeleteByID(id, uid uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ? AND uid = ?\", id, uid).Error\n}\n"
  },
  {
    "path": "gossh/app/model/datetime.go",
    "content": "package model\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"time\"\n)\n\nconst (\n\tTimeFormat = \"2006-01-02 15:04:05\"\n)\n\ntype DateTime time.Time\n\nfunc NewDateTime(str string) (DateTime, error) {\n\tnow, err := time.ParseInLocation(TimeFormat, str, time.Local)\n\tif err != nil {\n\t\treturn DateTime{}, fmt.Errorf(\"can not convert %v to date,must like format:yyyy-MM-dd HH:mm:ss,simple example : %v\", str, TimeFormat)\n\t}\n\tt := DateTime(now)\n\treturn t, nil\n}\n\nfunc (t DateTime) MarshalJSON() ([]byte, error) {\n\treturn []byte(fmt.Sprintf(`\"%s\"`, time.Time(t).Format(TimeFormat))), nil\n}\n\nfunc (t *DateTime) UnmarshalJSON(b []byte) error {\n\tnow, err := time.ParseInLocation(`\"`+TimeFormat+`\"`, string(b), time.Local)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"can not convert %v to date,must like format:yyyy-MM-dd HH:mm:ss,simple example : %v\", string(b), TimeFormat)\n\t}\n\t*t = DateTime(now)\n\treturn nil\n}\nfunc (t DateTime) Value() (driver.Value, error) {\n\tvar zeroTime time.Time\n\tif time.Time(t).UnixNano() == zeroTime.UnixNano() {\n\t\treturn nil, nil\n\t}\n\treturn time.Time(t), nil\n}\nfunc (t *DateTime) Scan(v any) error {\n\tvalue, ok := v.(time.Time)\n\tif ok {\n\t\t*t = DateTime(value)\n\t\treturn nil\n\t}\n\treturn fmt.Errorf(\"can not convert %v to timestamp\", v)\n}\n\nfunc (t *DateTime) ToTime() time.Time {\n\treturn time.Time(*t)\n}\n\nfunc (t DateTime) String() string {\n\treturn time.Time(t).Format(TimeFormat)\n}\n"
  },
  {
    "path": "gossh/app/model/db_init.go",
    "content": "package model\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/app/config\"\n\t\"gossh/gorm\"\n\t\"gossh/gorm/driver/mysql\"\n\t\"gossh/gorm/driver/pgsql\"\n\t\"gossh/gorm/logger\"\n\t_ \"gossh/mysql\"\n\t_ \"gossh/pgsql\"\n\t\"gossh/sqlite\"\n\t\"log/slog\"\n\t\"os\"\n\t\"path\"\n\t\"path/filepath\"\n)\n\nvar Db *gorm.DB\n\nfunc InitDatabase() {\n\tif !config.DefaultConfig.IsInit {\n\t\tslog.Warn(\"系统未初始化,跳过DbMigrate\")\n\t\treturn\n\t}\n\terr := DbMigrate(config.DefaultConfig.DbType, config.DefaultConfig.DbDsn)\n\tif err != nil {\n\t\tslog.Error(\"DbMigrate error\", \"err_msg\", err.Error())\n\t}\n}\n\nfunc GetSqliteDb(dsn string) (*gorm.DB, error) {\n\t//loadInit()\n\tdbPath := path.Join(config.WorkDir, dsn)\n\n\t// 确保数据库目录存在\n\tif err := os.MkdirAll(filepath.Dir(dbPath), 0755); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to create database directory: %v\", err)\n\t}\n\n\t// 尝试打开数据库连接\n\tdb, err := gorm.Open(sqlite.Open(dbPath), &gorm.Config{\n\t\tLogger: logger.Default.LogMode(logger.Warn),\n\t})\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to connect to database: %v\", err)\n\t}\n\n\t// 验证连接\n\tsqlDB, err := db.DB()\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to get database instance: %v\", err)\n\t}\n\n\tif err := sqlDB.Ping(); err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to ping database: %v\", err)\n\t}\n\n\treturn db, nil\n}\n\nfunc DbMigrate(dbType, dsn string) error {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"DbMigrate error\", \"err_msg\", err)\n\t\t}\n\t}()\n\tif dbType == \"pgsql\" {\n\t\tdb, err := gorm.Open(pgsql.Open(dsn), &gorm.Config{\n\t\t\tLogger: logger.Default.LogMode(logger.Warn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = db.Exec(\"select 1=1;\").Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tDb = db\n\t}\n\n\tif dbType == \"mysql\" {\n\t\tdb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{\n\t\t\tLogger: logger.Default.LogMode(logger.Warn),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = db.Exec(\"select 1=1;\").Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tDb = db\n\t}\n\n\tif dbType == \"sqlite\" {\n\t\tdb, err := GetSqliteDb(dsn)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tDb = db\n\t}\n\n\tif Db == nil {\n\t\treturn errors.New(\"请检查数据库链接\")\n\t}\n\n\terr := Db.AutoMigrate(\n\t\tSshConf{}, WebUser{}, CmdNote{},\n\t\tNetFilter{}, PolicyConf{}, LoginAudit{},\n\t\tSshdConf{}, SshdUser{}, SshdCert{})\n\tif err != nil {\n\t\tslog.Error(\"AutoMigrate error:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/app/model/login_audit.go",
    "content": "package model\n\ntype LoginAudit struct {\n\tID        uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tName      string   `gorm:\"column:name;not null;size:128\" form:\"name\" binding:\"required,min=1,max=128\" json:\"name\"`\n\tPwd       string   `gorm:\"column:pwd;size:128\" form:\"pwd\" binding:\"required,min=1,max=128\" json:\"pwd\"`\n\tClientIp  string   `gorm:\"column:client_ip;size:128\" form:\"client_ip\" binding:\"required,min=1,max=128\" json:\"client_ip\"`\n\tUserAgent string   `gorm:\"column:user_agent;size:512\" form:\"user_agent\" binding:\"required,min=0,max=512\" json:\"user_agent\"`\n\tErrMsg    string   `gorm:\"column:err_msg;size:64\" form:\"err_msg\" binding:\"required,min=1,max=64\" json:\"err_msg\"`\n\tIsSuccess string   `gorm:\"column:is_success;not null;size:64;default:'N'\" form:\"is_success\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"is_success\"`\n\tOccurAt   DateTime `gorm:\"column:occur_at;not null\"  json:\"occur_at\"  form:\"occur_at\" binding:\"required\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c LoginAudit) Create(audit *LoginAudit) error {\n\treturn Db.Create(audit).Error\n}\n\nfunc (c LoginAudit) Search(\n\tisSuccess, name, clientIp string,\n\toccurBegin, occurEnd DateTime, offset, limit int,\n) ([]LoginAudit, int64, error) {\n\tvar list []LoginAudit\n\tvar db = Db\n\tif isSuccess != \"\" {\n\t\tdb = db.Where(\"is_success = ?\", isSuccess)\n\t}\n\tif name != \"\" {\n\t\tdb = db.Where(\"name like ?\", \"%\"+name+\"%\")\n\t}\n\tif clientIp != \"\" {\n\t\tdb = db.Where(\"client_ip = ?\", clientIp)\n\t}\n\n\tif occurBegin.String() != \"0001-01-01 00:00:00\" && occurEnd.String() != \"0001-01-01 00:00:00\" {\n\t\tdb = db.Where(\"occur_at between  ? AND ?\", occurBegin, occurEnd)\n\t}\n\tvar count int64\n\terr := db.Model(&LoginAudit{}).Count(&count).Error\n\tif err != nil {\n\t\treturn list, count, err\n\t}\n\treturn list, count, db.Debug().Order(\"occur_at desc\").Offset(offset).Limit(limit).Find(&list).Error\n}\n\nfunc (c LoginAudit) FindByID(id uint) (LoginAudit, error) {\n\tvar audit LoginAudit\n\terr := Db.First(&audit, \"id = ?\", id).Error\n\treturn audit, err\n}\n\nfunc (c LoginAudit) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ? AND is_root = ?\", id, \"N\").Error\n}\n"
  },
  {
    "path": "gossh/app/model/net_filter.go",
    "content": "package model\n\nimport \"time\"\n\ntype NetFilter struct {\n\tID        uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tName      string   `gorm:\"column:name;not null\" form:\"name\" json:\"name\" binding:\"required\"`\n\tCidr      string   `gorm:\"column:cidr;not null\" form:\"cidr\" json:\"cidr\" binding:\"required,cidr\"`\n\tNetPolicy string   `gorm:\"column:net_policy;not null;size:64;default:'Y'\" form:\"net_policy\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"net_policy\"`\n\tPolicyNo  uint     `gorm:\"column:policy_no;not null;\" form:\"policy_no\" json:\"policy_no\" binding:\"required,gte=1,lte=65535\"`\n\tExpiryAt  DateTime `gorm:\"column:expiry_at;not null\"  json:\"expiry_at\"  form:\"expiry_at\" binding:\"required\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c NetFilter) Create(filter *NetFilter) error {\n\treturn Db.Create(filter).Error\n}\n\nfunc (c NetFilter) FindByName(name string) (NetFilter, error) {\n\tvar filter NetFilter\n\terr := Db.First(&filter, \"name = ?\", name).Error\n\treturn filter, err\n}\n\nfunc (c NetFilter) FindByID(id uint) (NetFilter, error) {\n\tvar filter NetFilter\n\terr := Db.First(&filter, \"id = ? \", id).Error\n\treturn filter, err\n}\n\nfunc (c NetFilter) FindAll(offset, limit int) ([]NetFilter, error) {\n\tvar list []NetFilter\n\terr := Db.Offset(offset).Limit(limit).Order(\"policy_no asc, expiry_at, updated_at desc\").Find(&list).Error\n\treturn list, err\n}\n\nfunc (c NetFilter) FindAllPolicy(policy string) ([]NetFilter, error) {\n\tvar list []NetFilter\n\terr := Db.Where(\"net_policy = ? AND expiry_at > ?\", policy, time.Now()).Order(\"policy_no asc, expiry_at, updated_at desc\").Find(&list).Error\n\treturn list, err\n}\n\nfunc (c NetFilter) UpdateById(id uint, filter *NetFilter) error {\n\treturn Db.Model(&c).Where(\"id = ?\", id).Updates(filter).Error\n}\n\nfunc (c NetFilter) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ?\", id).Error\n}\n"
  },
  {
    "path": "gossh/app/model/policy_conf.go",
    "content": "package model\n\ntype PolicyConf struct {\n\tID        uint   `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tNetPolicy string `gorm:\"column:net_policy;not null;size:64;default:'Y'\" form:\"net_policy\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"net_policy\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c PolicyConf) Create(conf *PolicyConf) error {\n\treturn Db.Create(conf).Error\n}\n\nfunc (c PolicyConf) FindByID(id uint) (PolicyConf, error) {\n\tvar conf PolicyConf\n\terr := Db.First(&conf, \"id = ? \", id).Error\n\treturn conf, err\n}\n\nfunc (c PolicyConf) FindAll(offset, limit int) ([]PolicyConf, error) {\n\tvar list []PolicyConf\n\terr := Db.Offset(offset).Limit(limit).Order(\"updated_at desc\").Find(&list).Error\n\treturn list, err\n}\n\nfunc (c PolicyConf) UpdateById(id uint, conf *PolicyConf) error {\n\treturn Db.Model(&c).Where(\"id = ?\", id).Updates(conf).Error\n}\n\nfunc (c PolicyConf) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ?\", id).Error\n}\n"
  },
  {
    "path": "gossh/app/model/ssh_conf.go",
    "content": "package model\n\nimport (\n\t\"errors\"\n\t\"gossh/app/config\"\n\t\"gossh/app/utils\"\n\t\"gossh/gorm\"\n)\n\ntype SshConf struct {\n\tID          uint   `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tUid         uint   `gorm:\"column:uid;not null;default:0\" form:\"uid\" json:\"uid\"`\n\tName        string `gorm:\"column:name;not null;size:64\" form:\"name\" binding:\"required,min=1,max=63\" json:\"name\"`\n\tAddress     string `gorm:\"column:address;size:128\" form:\"address\" binding:\"required,min=1,max=128\" json:\"address\"`\n\tUser        string `gorm:\"column:user;size:128\" form:\"user\" binding:\"required,min=1,max=128\" json:\"user\"`\n\tPwd         string `gorm:\"column:pwd;not null;size:4096;default:''\" form:\"pwd\" binding:\"max=4096\" json:\"pwd\"`\n\tAuthType    string `gorm:\"column:auth_type;not null;size:32;default:'pwd'\" form:\"auth_type\" binding:\"required,min=1,max=32,oneof=pwd cert\" json:\"auth_type\"`\n\tNetType     string `gorm:\"column:net_type;not null;size:32;default:'tcp4'\" form:\"net_type\" binding:\"required,min=1,max=32,oneof=tcp4 tcp6\" json:\"net_type\"`\n\tCertData    string `gorm:\"column:cert_data;type:text\" form:\"cert_data\" json:\"cert_data\"`\n\tCertPwd     string `gorm:\"column:cert_pwd;not null;size:128;default:''\" form:\"cert_pwd\" binding:\"max=128\" json:\"cert_pwd\"`\n\tPort        uint16 `gorm:\"column:port;not null;default:22\" form:\"port\" binding:\"required,gte=1,lte=65535\" json:\"port\"`\n\tFontSize    uint16 `gorm:\"column:font_size;not null;default:14\" form:\"font_size\" binding:\"required,gte=8,lte=48\" json:\"font_size\"`\n\tBackground  string `gorm:\"column:background;not null;size:128;default:'#000000'\" form:\"background\" binding:\"required,hexcolor\" json:\"background\"`\n\tForeground  string `gorm:\"column:foreground;not null;size:128;default:'#FFFFFF'\" form:\"foreground\" binding:\"required,hexcolor\" json:\"foreground\"`\n\tCursorColor string `gorm:\"column:cursor_color;not null;size:128;default:'#FFFFFF'\" form:\"cursor_color\" binding:\"required,hexcolor\" json:\"cursor_color\"`\n\tFontFamily  string `gorm:\"column:font_family;not null;size:128;default:'Courier'\" form:\"font_family\" binding:\"min=1,max=128\" json:\"font_family\"`\n\tCursorStyle string `gorm:\"column:cursor_style;not null;size:128;default:'block'\" form:\"cursor_style\" binding:\"min=1,max=128\" json:\"cursor_style\"`\n\tShell       string `gorm:\"column:shell;not null;size:64;default:'sh'\" form:\"shell\" binding:\"min=1,max=128\" json:\"shell\"`\n\tPtyType     string `gorm:\"column:pty_type;not null;size:64;default:'xterm-256color'\" form:\"pty_type\" binding:\"min=1,max=128\" json:\"pty_type\"`\n\tInitCmd     string `gorm:\"column:init_cmd;type:text\" form:\"init_cmd\" json:\"init_cmd\"`\n\tInitBanner  string `gorm:\"column:init_banner;type:text\" form:\"init_banner\" json:\"init_banner\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c *SshConf) Create(conf *SshConf) error {\n\treturn Db.Create(conf).Error\n}\n\nfunc (c *SshConf) FindByID(id uint, uid uint) (SshConf, error) {\n\tvar conf SshConf\n\terr := Db.First(&conf, \"id = ? AND uid = ?\", id, uid).Error\n\treturn conf, err\n}\n\nfunc (c *SshConf) FindAll(offset, limit int, uid uint) ([]SshConf, error) {\n\tvar list []SshConf\n\terr := Db.Where(\"uid = ?\", uid).Offset(offset).Limit(limit).Order(\"updated_at desc\").Find(&list).Error\n\treturn list, err\n}\n\nfunc (_ *SshConf) UpdateById(id, uid uint, conf *SshConf) error {\n\treturn Db.Model(&conf).Where(\"id = ? AND uid = ?\", id, uid).Select(\"*\").Omit(\"id\", \"uid\").Updates(conf).Error\n}\n\nfunc (c *SshConf) DeleteByID(id, uid uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ? AND uid = ?\", id, uid).Error\n}\n\n// BeforeCreate Hook\nfunc (c *SshConf) BeforeCreate(_ *gorm.DB) error {\n\t_, err := c.sshConfEncrypt()\n\treturn err\n}\n\n// BeforeUpdate Hook\nfunc (c *SshConf) BeforeUpdate(_ *gorm.DB) error {\n\t_, err := c.sshConfEncrypt()\n\treturn err\n}\n\n// AfterFind Hook\nfunc (c *SshConf) AfterFind(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.DecryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn errors.New(\"解密密码错误,\" + err.Error())\n\t}\n\tc.CertPwd, err = utils.DecryptString(c.CertPwd, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn errors.New(\"解密证书密码错误,,\" + err.Error())\n\t}\n\tc.CertData, err = utils.DecryptString(c.CertData, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn errors.New(\"解密密证书数据错误,\" + err.Error())\n\t}\n\treturn nil\n}\n\nfunc (c *SshConf) sshConfEncrypt() (*SshConf, error) {\n\tvar err error\n\tc.Pwd, err = utils.EncryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn c, errors.New(\"加密密码错误,\" + err.Error())\n\t}\n\tc.CertPwd, err = utils.EncryptString(c.CertPwd, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn c, errors.New(\"加密证书密码错误,\" + err.Error())\n\t}\n\tc.CertData, err = utils.EncryptString(c.CertData, config.DefaultConfig.AesSecret)\n\tif err != nil {\n\t\treturn c, errors.New(\"加密证书数据错误,\" + err.Error())\n\t}\n\treturn c, nil\n}\n"
  },
  {
    "path": "gossh/app/model/sshd_cert.go",
    "content": "package model\n\nimport \"time\"\n\ntype SshdCert struct {\n\tID       uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tDescInfo string   `gorm:\"column:desc_info;size:64\" form:\"desc_info\" binding:\"required,min=1,max=64\" json:\"desc_info\"`\n\tName     string   `gorm:\"column:name;uniqueIndex;not null;size:64\" form:\"name\" binding:\"required,min=1,max=63\" json:\"name\"`\n\tPubKey   string   `gorm:\"column:pub_key;type:text;not null;\" form:\"pub_key\" binding:\"required,min=16\" json:\"pub_key\"`\n\tIsEnable string   `gorm:\"column:is_enable;not null;size:64;default:'Y'\" form:\"is_enable\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"is_enable\"`\n\tExpiryAt DateTime `gorm:\"column:expiry_at;not null\"  json:\"expiry_at\"  form:\"expiry_at\" binding:\"required\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c *SshdCert) Create(user *SshdCert) error {\n\treturn Db.Create(user).Error\n}\n\nfunc (c *SshdCert) FindByName(name string) (SshdCert, error) {\n\tvar user SshdCert\n\terr := Db.Find(&user, \"name = ?\", name).Error\n\treturn user, err\n}\n\nfunc (c *SshdCert) FindByID(id uint) (SshdCert, error) {\n\tvar user SshdCert\n\terr := Db.First(&user, \"id = ?\", id).Error\n\treturn user, err\n}\n\nfunc (c *SshdCert) FindAll(limit, offset int) ([]SshdCert, error) {\n\tvar list []SshdCert\n\terr := Db.Limit(limit).Offset(offset).Find(&list).Error\n\treturn list, err\n}\n\nfunc (c *SshdCert) GetAuthorizedKeys() (string, error) {\n\tvar authorizedKeys = \"\"\n\tvar list []string\n\terr := Db.Model(c).Select(\"pub_key\").Where(\"is_enable = ? AND expiry_at > ?\", \"Y\", time.Now()).Find(&list).Error\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor _, v := range list {\n\t\tauthorizedKeys += v + \"\\n\"\n\t}\n\treturn authorizedKeys, err\n}\n\nfunc (c *SshdCert) UpdateById(id uint, user *SshdCert) error {\n\treturn Db.Model(&c).Where(\"id = ?\", id).Select(\"*\").Omit(\"id\").Updates(user).Error\n}\n\nfunc (c *SshdCert) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ?\", id).Error\n}\n"
  },
  {
    "path": "gossh/app/model/sshd_conf.go",
    "content": "package model\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/app/utils\"\n\t\"gossh/gorm\"\n)\n\ntype SshdConf struct {\n\tID            uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tName          string   `gorm:\"column:name;uniqueIndex;not null;size:64\" form:\"name\" binding:\"required,min=1,max=63\" json:\"name\"`\n\tHost          string   `gorm:\"column:host;size:128\" form:\"host\" binding:\"required,min=1,max=128\" json:\"host\"`\n\tPort          uint16   `gorm:\"column:port;uniqueIndex;not null\" form:\"port\" binding:\"required,gte=1,lte=65535\" json:\"port\"`\n\tShell         string   `gorm:\"column:shell;not null;size:64;default:''\" form:\"shell\" binding:\"min=1,max=128\" json:\"shell\"`\n\tKeyFile       string   `gorm:\"column:key_file;not null;type:text\" form:\"key_file\" json:\"key_file\"`\n\tKeySeed       string   `gorm:\"column:key_seed;not null;size:4096;default:''\" form:\"key_seed\" binding:\"max=4096\" json:\"key_seed\"`\n\tKeepAlive     uint16   `gorm:\"column:keep_alive;not null;default:60\" form:\"keep_alive\" binding:\"required,gte=10,lte=360\" json:\"keep_alive\"`\n\tLoadEnv       string   `gorm:\"column:load_env;not null;size:64;default:'Y'\" form:\"load_env\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"load_env\"`\n\tAuthType      string   `gorm:\"column:auth_type;not null;size:32;default:'all'\" form:\"auth_type\" binding:\"required,min=1,max=32,oneof=all pwd cert\" json:\"auth_type\"`\n\tServerVersion string   `gorm:\"column:server_version;not null;size:64;default:'SSH-2.0-OpenSSH'\" form:\"name\" binding:\"required,min=10,max=63\" json:\"server_version\"`\n\tCreatedAt     DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt     DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c *SshdConf) Create(conf *SshdConf) error {\n\treturn Db.Create(conf).Error\n}\n\nfunc (c *SshdConf) FindByName(name string) (SshdConf, error) {\n\tvar conf SshdConf\n\terr := Db.Find(&conf, \"name = ?\", name).Error\n\treturn conf, err\n}\n\nfunc (c *SshdConf) FindByID(id uint) (SshdConf, error) {\n\tvar conf SshdConf\n\terr := Db.First(&conf, \"id = ?\", id).Error\n\treturn conf, err\n}\n\nfunc (c *SshdConf) UpdateByName(name string, conf *SshdConf) error {\n\treturn Db.Model(&c).Where(\"name = ?\", name).Select(\"*\").Omit(\"id\", \"name\").Updates(conf).Error\n}\n\nfunc (c *SshdConf) DeleteByName(name string) error {\n\treturn Db.Unscoped().Delete(&c, \"name = ?\", name).Error\n}\n\n// BeforeCreate Hook\nfunc (c *SshdConf) BeforeCreate(_ *gorm.DB) error {\n\tvar err error\n\tc.KeyFile, err = utils.EncryptString(c.KeyFile, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// BeforeUpdate Hook\nfunc (c *SshdConf) BeforeUpdate(_ *gorm.DB) error {\n\tvar err error\n\tc.KeyFile, err = utils.EncryptString(c.KeyFile, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// AfterFind Hook\nfunc (c *SshdConf) AfterFind(_ *gorm.DB) error {\n\tvar err error\n\tc.KeyFile, err = utils.DecryptString(c.KeyFile, config.DefaultConfig.AesSecret)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/app/model/sshd_user.go",
    "content": "package model\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/app/config\"\n\t\"gossh/app/utils\"\n\t\"gossh/gorm\"\n\t\"time\"\n)\n\ntype SshdUser struct {\n\tID       uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tName     string   `gorm:\"column:name;uniqueIndex;not null;size:64\" form:\"name\" binding:\"required,min=1,max=63\" json:\"name\"`\n\tPwd      string   `gorm:\"column:pwd;size:64\" form:\"pwd\" binding:\"required,min=1,max=64\" json:\"pwd\"`\n\tDescInfo string   `gorm:\"column:desc_info;size:64\" form:\"desc_info\" binding:\"required,min=1,max=64\" json:\"desc_info\"`\n\tIsEnable string   `gorm:\"column:is_enable;not null;size:64;default:'Y'\" form:\"is_enable\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"is_enable\"`\n\tWorkDir  string   `gorm:\"column:work_dir;size:4096;default:''\" form:\"work_dir\" binding:\"max=4096\" json:\"work_dir\"`\n\tExpiryAt DateTime `gorm:\"column:expiry_at;not null\"  json:\"expiry_at\"  form:\"expiry_at\" binding:\"required\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c *SshdUser) Create(user *SshdUser) error {\n\treturn Db.Create(user).Error\n}\n\nfunc (c *SshdUser) FindByNameAndPwd(name, pwd string) (SshdUser, error) {\n\tvar user SshdUser\n\terr := Db.First(&user, \"name = ? AND is_enable = ?\", name, \"Y\").Error\n\tif err != nil {\n\t\treturn SshdUser{}, err\n\t}\n\tif user.Pwd != pwd {\n\t\treturn SshdUser{}, errors.New(\"password error\")\n\t}\n\n\tif user.ExpiryAt.ToTime().Unix() < time.Now().Unix() {\n\t\treturn user, errors.New(fmt.Sprintf(\"sshd user '%s' expired\", name))\n\t}\n\treturn user, err\n}\n\nfunc (c *SshdUser) FindByName(name string) (SshdUser, error) {\n\tvar user SshdUser\n\terr := Db.Find(&user, \"name = ?\", name).Error\n\treturn user, err\n}\n\nfunc (c *SshdUser) FindByID(id uint) (SshdUser, error) {\n\tvar user SshdUser\n\terr := Db.First(&user, \"id = ?\", id).Error\n\treturn user, err\n}\n\nfunc (c *SshdUser) FindAll(limit, offset int) ([]SshdUser, error) {\n\tvar list []SshdUser\n\terr := Db.Limit(limit).Offset(offset).Find(&list).Error\n\treturn list, err\n}\n\nfunc (c *SshdUser) UpdateById(id uint, user *SshdUser) error {\n\treturn Db.Model(&c).Where(\"id = ?\", id).Select(\"*\").Omit(\"id\").Updates(user).Error\n}\n\nfunc (c *SshdUser) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ?\", id).Error\n}\n\n// BeforeCreate Hook\nfunc (c *SshdUser) BeforeCreate(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.EncryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// BeforeUpdate Hook\nfunc (c *SshdUser) BeforeUpdate(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.EncryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// AfterFind Hook\nfunc (c *SshdUser) AfterFind(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.DecryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/app/model/web_user.go",
    "content": "package model\n\nimport (\n\t\"errors\"\n\t\"gossh/app/config\"\n\t\"gossh/app/utils\"\n\t\"gossh/gorm\"\n)\n\ntype WebUser struct {\n\tID       uint     `gorm:\"column:id;primaryKey,autoIncrement\" form:\"id\" json:\"id\"`\n\tName     string   `gorm:\"column:name;uniqueIndex;not null;size:64\" form:\"name\" binding:\"required,min=1,max=63\" json:\"name\"`\n\tPwd      string   `gorm:\"column:pwd;size:64\" form:\"pwd\" binding:\"required,min=1,max=64\" json:\"pwd\"`\n\tDescInfo string   `gorm:\"column:desc_info;size:64\" form:\"desc_info\" binding:\"required,min=1,max=64\" json:\"desc_info\"`\n\tIsAdmin  string   `gorm:\"column:is_admin;not null;size:64;default:'N'\" form:\"is_admin\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"is_admin\"`\n\tIsEnable string   `gorm:\"column:is_enable;not null;size:64;default:'Y'\" form:\"is_enable\" binding:\"required,min=1,max=64,oneof=Y N\" json:\"is_enable\"`\n\tIsRoot   string   `gorm:\"column:is_root;not null;size:64;default:'N'\" form:\"is_root\"  json:\"is_root\"`\n\tExpiryAt DateTime `gorm:\"column:expiry_at;not null\"  json:\"expiry_at\"  form:\"expiry_at\" binding:\"required\"`\n\n\tCreatedAt DateTime `gorm:\"column:created_at\" json:\"-\"`\n\tUpdatedAt DateTime `gorm:\"column:updated_at\" json:\"-\"`\n}\n\nfunc (c *WebUser) Create(user *WebUser) error {\n\treturn Db.Create(user).Error\n}\n\nfunc (c *WebUser) FindByNameAndPwd(name, pwd string) (WebUser, error) {\n\tvar user WebUser\n\terr := Db.First(&user, \"name = ?\", name).Error\n\tif err != nil {\n\t\treturn WebUser{}, err\n\t}\n\tif user.Pwd != pwd {\n\t\treturn WebUser{}, errors.New(\"password error\")\n\t}\n\treturn user, err\n}\n\nfunc (c *WebUser) FindByName(name string) (WebUser, error) {\n\tvar user WebUser\n\terr := Db.Find(&user, \"name = ?\", name).Error\n\treturn user, err\n}\n\nfunc (c *WebUser) FindByID(id uint) (WebUser, error) {\n\tvar user WebUser\n\terr := Db.First(&user, \"id = ?\", id).Error\n\treturn user, err\n}\n\nfunc (c *WebUser) FindAll(limit, offset int) ([]WebUser, error) {\n\tvar list []WebUser\n\terr := Db.Where(\"is_root = ?\", \"N\").Limit(limit).Offset(offset).Find(&list).Error\n\treturn list, err\n}\n\nfunc (c *WebUser) UpdateById(id uint, user *WebUser) error {\n\treturn Db.Model(&c).Where(\"id = ? AND is_root = ?\", id, \"N\").Select(\"*\").Omit(\"id\", \"is_root\").Updates(user).Error\n}\n\nfunc (c *WebUser) UpdatePassword(id uint, user *WebUser) error {\n\treturn Db.Model(&c).Where(\"id = ?\", id).Select(\"*\").Omit(\"id\").Updates(user).Error\n}\n\nfunc (c *WebUser) DeleteByID(id uint) error {\n\treturn Db.Unscoped().Delete(&c, \"id = ? AND is_root = ?\", id, \"N\").Error\n}\n\n// BeforeCreate Hook\nfunc (c *WebUser) BeforeCreate(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.EncryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// BeforeUpdate Hook\nfunc (c *WebUser) BeforeUpdate(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.EncryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n\n// AfterFind Hook\nfunc (c *WebUser) AfterFind(_ *gorm.DB) error {\n\tvar err error\n\tc.Pwd, err = utils.DecryptString(c.Pwd, config.DefaultConfig.AesSecret)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/app/service/cmd_note.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"strconv\"\n)\n\nfunc CmdNoteCreate(c *gin.Context) {\n\tvar cmd model.CmdNote\n\tif err := c.ShouldBind(&cmd); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tcmd.Uid = c.GetUint(\"uid\")\n\terr := cmd.Create(&cmd)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tCmdNoteFindAll(c)\n}\n\nfunc CmdNoteFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar cmd model.CmdNote\n\tdata, err := cmd.FindByID(uint(id), c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc CmdNoteFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tvar cmd model.CmdNote\n\tdata, err := cmd.FindAll(offset, limit, c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc CmdNoteUpdateById(c *gin.Context) {\n\tvar cmd model.CmdNote\n\tif err := c.ShouldBind(&cmd); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := cmd.UpdateById(cmd.ID, c.GetUint(\"uid\"), &cmd)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tCmdNoteFindAll(c)\n}\n\nfunc CmdNoteDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar cmd model.CmdNote\n\terr = cmd.DeleteByID(uint(id), c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tCmdNoteFindAll(c)\n}\n"
  },
  {
    "path": "gossh/app/service/db_conn.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"gossh/gorm\"\n\t\"gossh/gorm/driver/mysql\"\n\t\"gossh/gorm/driver/pgsql\"\n\t_ \"gossh/mysql\"\n\t_ \"gossh/pgsql\"\n\t\"log/slog\"\n)\n\ntype DbConnConf struct {\n\tDbDsn  string `form:\"db_dsn\" binding:\"required,min=1,max=65535\" json:\"db_dsn\"`\n\tDbType string `form:\"db_type\" binding:\"required,oneof=sqlite pgsql mysql\" json:\"db_type\"`\n}\n\nfunc DbConnCheck(c *gin.Context) {\n\tif config.DefaultConfig.IsInit {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"系统已经完成初始化配置\"})\n\t\treturn\n\t}\n\n\tvar dbConf DbConnConf\n\tif err := c.ShouldBind(&dbConf); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := DbConnTestCheck(dbConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"连接成功\"})\n}\n\nfunc DbConnTestCheck(dbConf DbConnConf) error {\n\tslog.Info(\"DB link check\", \"db_type\", dbConf.DbType, \"db_dsn\", dbConf.DbDsn)\n\tif dbConf.DbType == \"pgsql\" {\n\t\tDb, err := gorm.Open(pgsql.Open(dbConf.DbDsn), &gorm.Config{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = Db.Exec(\"select 1=1;\").Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif dbConf.DbType == \"mysql\" {\n\t\tDb, err := gorm.Open(mysql.Open(dbConf.DbDsn), &gorm.Config{})\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = Db.Exec(\"select 1=1;\").Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif dbConf.DbType == \"sqlite\" {\n\t\tDb, err := model.GetSqliteDb(dbConf.DbDsn)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\terr = Db.Exec(\"select 1=1;\").Error\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/app/service/login_audit.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"strconv\"\n)\n\nfunc AuditFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar audit model.LoginAudit\n\tdata, err := audit.FindByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc LoginAuditSearch(c *gin.Context) {\n\ttype Param struct {\n\t\tOccurBegin model.DateTime `json:\"occur_begin\"  form:\"occur_begin\"`\n\t\tOccurEnd   model.DateTime `json:\"occur_end\"  form:\"occur_end\"`\n\t\tOffset     int            `form:\"offset\" json:\"offset\" binding:\"min=0\"`\n\t\tLimit      int            `form:\"limit\" json:\"limit\" binding:\"max=1000\"`\n\t\tName       string         `form:\"name\" binding:\"max=64\" json:\"name\"`\n\t\tClientIp   string         `form:\"client_ip\" binding:\"max=128\" json:\"client_ip\"`\n\t\tIsSuccess  string         `form:\"is_success\" binding:\"max=1\" json:\"is_success\"`\n\t}\n\tvar p Param\n\tif err := c.ShouldBind(&p); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tif p.Limit == 0 {\n\t\tp.Limit = 100\n\t}\n\tvar audit model.LoginAudit\n\tdata, count, err := audit.Search(p.IsSuccess, p.Name, p.ClientIp, p.OccurBegin, p.OccurEnd, p.Offset, p.Limit)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data, \"count\": count})\n}\n\nfunc LoginAuditDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar audit model.LoginAudit\n\terr = audit.DeleteByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n}\n"
  },
  {
    "path": "gossh/app/service/net_filter.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"strconv\"\n)\n\nfunc NetFilterCreate(c *gin.Context) {\n\tvar netFilter model.NetFilter\n\tif err := c.ShouldBind(&netFilter); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\terr := netFilter.Create(&netFilter)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tNetFilterFindAll(c)\n}\n\nfunc NetFilterFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar netFilter model.NetFilter\n\tdata, err := netFilter.FindByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc NetFilterFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tvar netFilter model.NetFilter\n\tdata, err := netFilter.FindAll(offset, limit)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc NetFilterUpdateById(c *gin.Context) {\n\tvar netFilter model.NetFilter\n\tif err := c.ShouldBind(&netFilter); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := netFilter.UpdateById(netFilter.ID, &netFilter)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tNetFilterFindAll(c)\n}\n\nfunc NetFilterDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar netFilter model.NetFilter\n\terr = netFilter.DeleteByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tNetFilterFindAll(c)\n}\n"
  },
  {
    "path": "gossh/app/service/policy_conf.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"strconv\"\n)\n\nfunc PolicyConfCreate(c *gin.Context) {\n\tvar conf model.PolicyConf\n\tif err := c.ShouldBind(&conf); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\terr := conf.Create(&conf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tPolicyConfFindAll(c)\n}\n\nfunc PolicyConfFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar conf model.PolicyConf\n\tdata, err := conf.FindByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc PolicyConfFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tvar conf model.PolicyConf\n\tdata, err := conf.FindAll(offset, limit)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc PolicyConfUpdateById(c *gin.Context) {\n\tvar conf model.PolicyConf\n\tif err := c.ShouldBind(&conf); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := conf.UpdateById(conf.ID, &conf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tdata, err := conf.FindByID(conf.ID)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc PolicyConfDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar conf model.PolicyConf\n\terr = conf.DeleteByID(uint(id))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tPolicyConfFindAll(c)\n}\n"
  },
  {
    "path": "gossh/app/service/service_init.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/config\"\n\t\"io\"\n\t\"log/slog\"\n\t\"sync\"\n\t\"time\"\n)\n\n// OnlineClients 存储的客户端信息\nvar OnlineClients = sync.Map{}\n\nfunc DeleteOnlineClient(sessionId string) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"DeleteOnlineClient recover error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\tcli, ok := OnlineClients.Load(sessionId)\n\tif !ok || cli == nil {\n\t\tslog.Info(\"OnlineClient sessionId not exist\")\n\t\treturn\n\t}\n\n\tconn, ok := cli.(*SshConn)\n\tif !ok || conn == nil {\n\t\tslog.Error(\"DeleteOnlineClient type Asset error\")\n\t\treturn\n\t}\n\n\t// 从map 中删除会话\n\tdefer OnlineClients.Delete(sessionId)\n\n\t// 关闭 ssh 客户端\n\tdefer func() {\n\t\terr := conn.sshClient.Close()\n\t\tif err == io.EOF {\n\t\t\tslog.Info(\"sshClient.Close EOF\")\n\t\t\treturn\n\t\t}\n\t\tif err != nil {\n\t\t\tslog.Error(\"DeleteOnlineClient.Close sshClient error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\n\t// 关闭 sftp 客户端\n\tdefer func() {\n\t\terr := conn.sftpClient.Close()\n\t\tif err == io.EOF {\n\t\t\tslog.Info(\"sftpClient.Close EOF\")\n\t\t\treturn\n\t\t}\n\t\tif err != nil {\n\t\t\tslog.Error(\"DeleteOnlineClient.Close sftpClient error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\n\t// 关闭 ssh 会话\n\tdefer func() {\n\t\terr := conn.sshSession.Close()\n\t\tif err == io.EOF {\n\t\t\tslog.Info(\"sshSession.Close EOF\")\n\t\t\treturn\n\t\t}\n\t\tif err != nil {\n\t\t\tslog.Error(\"DeleteOnlineClient.Close sshSession error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\n\t// 关闭 websocket\n\tdefer func() {\n\t\terr := conn.ws.Close()\n\t\tif err != nil {\n\t\t\tslog.Error(\"DeleteOnlineClient.Close ws error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\n}\n\n// 清理不活跃的会话\nfunc cleanNoActiveSession() {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"cleanNoActiveSession error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\tOnlineClients.Range(func(key, value any) bool {\n\t\t// 对键进行类型断言\n\t\tif sessionId, ok := key.(string); ok {\n\t\t\t// 对值进行类型断言\n\t\t\tif conn, ok := value.(*SshConn); ok {\n\t\t\t\tif conn.LastActiveTime.Add(time.Minute).Before(time.Now()) {\n\t\t\t\t\tslog.Info(\"clean not active session:\", \"sid\", sessionId)\n\t\t\t\t\tDeleteOnlineClient(sessionId)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn true\n\t})\n}\n\nfunc initApp() {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"service init error\")\n\t\t}\n\t}()\n\tif config.DefaultConfig.IsInit {\n\t\tisStartSshd <- true\n\t}\n\tfor {\n\t\tcleanNoActiveSession()\n\t\ttime.Sleep(config.DefaultConfig.ClientCheck)\n\t}\n}\n\nfunc InitSessionClean() {\n\tgo initApp()\n}\n"
  },
  {
    "path": "gossh/app/service/ssh_conf.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"strconv\"\n)\n\nfunc ConfCreate(c *gin.Context) {\n\tvar config model.SshConf\n\tif err := c.ShouldBind(&config); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tconfig.Uid = c.GetUint(\"uid\")\n\terr := config.Create(&config)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tConfFindAll(c)\n}\n\nfunc ConfFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar config model.SshConf\n\tdata, err := config.FindByID(uint(id), c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc ConfFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tvar config model.SshConf\n\tdata, err := config.FindAll(offset, limit, c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc ConfUpdateById(c *gin.Context) {\n\tvar config model.SshConf\n\tif err := c.ShouldBind(&config); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := config.UpdateById(config.ID, c.GetUint(\"uid\"), &config)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\t// c.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\"})\n\tConfFindAll(c)\n}\n\nfunc ConfDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tvar config model.SshConf\n\terr = config.DeleteByID(uint(id), c.GetUint(\"uid\"))\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\t// c.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\"})\n\tConfFindAll(c)\n}\n"
  },
  {
    "path": "gossh/app/service/ssh_conn.go",
    "content": "package service\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"gossh/app/model\"\n\t\"gossh/app/utils\"\n\t\"gossh/crypto/ssh\"\n\t\"gossh/gin\"\n\t\"gossh/sftp\"\n\t\"gossh/websocket\"\n\t\"io\"\n\t\"log/slog\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype SshConn struct {\n\t*model.SshConf\n\n\t//会话ID\n\tSessionId string `json:\"session_id\"`\n\n\t// 最后活跃时间,心跳\n\tLastActiveTime time.Time `json:\"last_active_time\"`\n\n\t// 创建连接的时间\n\tStartTime time.Time `json:\"start_time\"`\n\n\t// 客户端IP\n\tClientIP string `json:\"client_ip\"`\n\n\t//ssh客户端\n\tsshClient *ssh.Client\n\n\t//sftp客户端\n\tsftpClient *sftp.Client\n\n\t//ssh会话\n\tsshSession *ssh.Session\n\n\t// websocket 连接\n\tws *websocket.Conn\n}\n\n// MarshalJSON 重写序列化方法\nfunc (s *SshConn) MarshalJSON() ([]byte, error) {\n\ttype Alias SshConn\n\treturn json.Marshal(&struct {\n\t\tAlias\n\t\tLastActiveTime string `json:\"last_active_time\"`\n\t\tStartTime      string `json:\"start_time\"`\n\t\tPwd            string `json:\"pwd\"`\n\t\tCertData       string `json:\"cert_data\"`\n\t\tCertPwd        string `json:\"cert_pwd\"`\n\t\tCreatedAt      uint   ` json:\"created_at\"`\n\t\tUpdatedAt      uint   ` json:\"updated_at\"`\n\t\tDeletedAt      uint   ` json:\"deleted_at\"`\n\t}{\n\t\tAlias:          (Alias)(*s),\n\t\tLastActiveTime: s.LastActiveTime.Format(\"2006-01-02 15:04:05\"),\n\t\tStartTime:      s.StartTime.Format(\"2006-01-02 15:04:05\"),\n\t\tPwd:            \"\",\n\t\tCertData:       \"\",\n\t\tCertPwd:        \"\",\n\t\tCreatedAt:      0,\n\t\tUpdatedAt:      0,\n\t\tDeletedAt:      0,\n\t})\n}\n\n// 连接主机\nfunc (s *SshConn) connect(clientIp string) error {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"ssh connect error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\ts.ClientIP = clientIp\n\n\tconfig := ssh.ClientConfig{\n\t\tUser: s.User,\n\t\tAuth: []ssh.AuthMethod{\n\t\t\tssh.Password(s.Pwd),\n\t\t\tssh.KeyboardInteractive(func(name, instruction string, questions []string, echos []bool) ([]string, error) {\n\t\t\t\tanswers := make([]string, len(questions))\n\t\t\t\tfor i := range answers {\n\t\t\t\t\tanswers[i] = s.Pwd\n\t\t\t\t}\n\t\t\t\treturn answers, nil\n\t\t\t}),\n\t\t},\n\t\tHostKeyCallback: ssh.InsecureIgnoreHostKey(),\n\t\tTimeout:         30 * time.Second,\n\t}\n\t// 证书认证方式\n\tif s.AuthType == \"cert\" {\n\t\tprivateKeyPassword := []byte(s.CertPwd)\n\t\tprivateKeyBytes := []byte(s.CertData)\n\t\tif s.CertPwd != \"\" {\n\t\t\t// 使用证书有证书密码登陆\n\t\t\tsigner, err := ssh.ParsePrivateKeyWithPassphrase(privateKeyBytes, privateKeyPassword)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"解析带密码私钥Key错误:\", \"err_msg\", err.Error())\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tconfig.Auth = []ssh.AuthMethod{\n\t\t\t\tssh.PublicKeys(signer),\n\t\t\t}\n\t\t} else {\n\t\t\t// 使用证书空密码登陆\n\t\t\tsigner, err := ssh.ParsePrivateKey(privateKeyBytes)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"解析私钥Key错误:\", \"err_msg\", err.Error())\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tconfig.Auth = []ssh.AuthMethod{\n\t\t\t\tssh.PublicKeys(signer),\n\t\t\t}\n\t\t}\n\t}\n\n\taddr := fmt.Sprintf(\"%s:%d\", s.Address, s.Port)\n\tif s.NetType == \"tcp6\" {\n\t\taddr = fmt.Sprintf(\"[%s]:%d\", s.Address, s.Port)\n\t}\n\tsshClient, err := ssh.Dial(s.NetType, addr, &config)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ts.sshClient = sshClient\n\t//使用sshClient构建sftpClient\n\tvar sftpClient *sftp.Client\n\tif sftpClient, err = sftp.NewClient(sshClient); err != nil {\n\t\tslog.Error(\"create sftp sshClient error:\", \"err_msg\", err)\n\t}\n\ts.sftpClient = sftpClient\n\tsshSession, err := s.sshClient.NewSession()\n\tif err != nil {\n\t\tslog.Error(\"sshClient.NewSession error:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\ts.sshSession = sshSession\n\treturn nil\n}\n\n// RunTerminal 运行一个终端\nfunc (s *SshConn) RunTerminal(shell string, stdout, stderr io.Writer, stdin io.Reader, w, h int, ws *websocket.Conn) error {\n\tdefer func() {\n\t\tDeleteOnlineClient(s.SessionId)\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"RunTerminal error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\tvar err error\n\n\ts.ws = ws\n\ts.sshSession.Stdout = stdout\n\ts.sshSession.Stderr = stderr\n\ts.sshSession.Stdin = stdin\n\tmodes := ssh.TerminalModes{}\n\tif err := s.sshSession.RequestPty(s.PtyType, h, w, modes); err != nil {\n\t\tslog.Error(\"sshSession.RequestPty error:\", \"err_msg\", err.Error())\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"sshSession.RequestPty error:\"+err.Error()))\n\t\treturn err\n\t}\n\n\tif err = s.sshSession.Shell(); err != nil {\n\t\tslog.Error(\"sshSession.Shell error:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\n\tif err = s.sshSession.Wait(); err != nil {\n\t\tif strings.Contains(err.Error(), \"remote command exited without exit status or exit signal\") {\n\t\t\tslog.Info(\"sshSession.Wait remote command exited without exit status or exit signal\")\n\t\t\treturn err\n\t\t}\n\t\tslog.Error(\"sshSession.Wait error:\", \"err_msg\", err.Error())\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// ResizeWindow  调整终端大小\nfunc (s *SshConn) ResizeWindow(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"ResizeWindow recover error:\", \"err_msg\", err)\n\t\t}\n\t}()\n\tw, err := strconv.Atoi(c.Query(\"w\"))\n\tif err != nil || (w < 40 || w > 8192) {\n\t\tc.JSON(200, gin.H{\n\t\t\t\"code\": 1,\n\t\t\t\"msg\":  fmt.Sprintf(\"connect error window width !!!\")})\n\t\treturn\n\t}\n\th, err := strconv.Atoi(c.Query(\"h\"))\n\tif err != nil || (h < 2 || h > 4096) {\n\t\tc.JSON(200, gin.H{\n\t\t\t\"code\": 1,\n\t\t\t\"msg\":  fmt.Sprintf(\"connect error window width !!!\")})\n\t\treturn\n\t}\n\n\tsessionId := c.Query(\"session_id\")\n\tcli, ok := OnlineClients.Load(sessionId)\n\tif !ok || cli == nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"the client is disconnected\"})\n\t\treturn\n\t}\n\n\tconn, ok := cli.(*SshConn)\n\tif !ok || conn == nil {\n\t\tDeleteOnlineClient(sessionId)\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"to type SshConn error\"})\n\t\treturn\n\t}\n\n\terr = conn.sshSession.WindowChange(h, w)\n\tif err != nil {\n\t\tDeleteOnlineClient(sessionId)\n\t\tslog.Error(\"sshSession.WindowChange error:\", \"err_msg\", err.Error())\n\t}\n\tstr := fmt.Sprintf(\"W:%d;H:%d\\n\", w, h)\n\tc.JSON(200, gin.H{\"code\": 0, \"data\": str, \"msg\": \"ok\"})\n\treturn\n}\n\nfunc ResizeWindow(c *gin.Context) {\n\tvar sshObj = SshConn{}\n\tsshObj.ResizeWindow(c)\n}\n\nfunc NewSshConn(c *gin.Context) {\n\t// 设置 websocket upgrader\n\tupgrader := websocket.Upgrader{\n\t\tReadBufferSize:  4096,\n\t\tWriteBufferSize: 4096,\n\t\tCheckOrigin: func(r *http.Request) bool {\n\t\t\treturn true\n\t\t},\n\t}\n\n\t// 升级 HTTP 连接为 WebSocket 连接\n\tws, err := upgrader.Upgrade(c.Writer, c.Request, nil)\n\tif err != nil {\n\t\tslog.Error(\"Failed to upgrade connection:\", \"err_msg\", err)\n\t\treturn\n\t}\n\tdefer ws.Close()\n\n\t// 设置 ping handler\n\tws.SetPingHandler(func(appData string) error {\n\t\treturn ws.WriteControl(websocket.PongMessage, []byte{}, time.Now().Add(time.Second*10))\n\t})\n\n\t// 启动 ping 保活\n\tgo func() {\n\t\tticker := time.NewTicker(30 * time.Second)\n\t\tdefer ticker.Stop()\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-ticker.C:\n\t\t\t\tif err := ws.WriteControl(websocket.PingMessage, []byte{}, time.Now().Add(time.Second*10)); err != nil {\n\t\t\t\t\tslog.Error(\"ping error:\", \"err_msg\", err)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}()\n\n\tsessionId := c.Query(\"session_id\")\n\tdefer DeleteOnlineClient(sessionId)\n\n\tw, err := strconv.Atoi(c.Query(\"w\"))\n\tif err != nil || (w < 40 || w > 8192) {\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"connect error window width !!!\"))\n\t\tDeleteOnlineClient(sessionId)\n\t\treturn\n\t}\n\n\th, err := strconv.Atoi(c.Query(\"h\"))\n\tif err != nil || (h < 2 || h > 4096) {\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"connect error window height !!!\"))\n\t\tDeleteOnlineClient(sessionId)\n\t\treturn\n\t}\n\n\tcli, ok := OnlineClients.Load(sessionId)\n\tif !ok || cli == nil {\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"session_id not exists !!!\"))\n\t\tDeleteOnlineClient(sessionId)\n\t\treturn\n\t}\n\n\tconn, ok := cli.(*SshConn)\n\tif !ok || conn == nil {\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"to ssh.Session error !!!\"))\n\t\tDeleteOnlineClient(sessionId)\n\t\treturn\n\t}\n\n\t// 创建一个适配器来实现 io.Reader 和 io.Writer 接口\n\twsReadWriter := &WebSocketReadWriter{ws: ws}\n\n\terr = conn.RunTerminal(conn.Shell, wsReadWriter, wsReadWriter, wsReadWriter, w, h, ws)\n\tif err != nil {\n\t\tws.WriteMessage(websocket.BinaryMessage, []byte(\"connect error:\"+err.Error()))\n\t\tDeleteOnlineClient(sessionId)\n\t\treturn\n\t}\n}\n\n// WebSocketReadWriter 实现 io.Reader 和 io.Writer 接口\ntype WebSocketReadWriter struct {\n\tws *websocket.Conn\n}\n\nfunc (w *WebSocketReadWriter) Read(p []byte) (n int, err error) {\n\t_, message, err := w.ws.ReadMessage()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tcopy(p, message)\n\treturn len(message), nil\n}\n\nfunc (w *WebSocketReadWriter) Write(p []byte) (n int, err error) {\n\terr = w.ws.WriteMessage(websocket.BinaryMessage, p)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn len(p), nil\n}\n\nfunc CreateSessionId(c *gin.Context) {\n\tvar conn SshConn\n\tif err := c.ShouldBind(&conn); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\t// 如果客户提供,使用客户的,并从会话列表删除,防止重复存在\n\tsessionId := c.Query(\"session_id\")\n\t//DeleteOnlineClient(sessionId)\n\tif sessionId == \"\" {\n\t\tsessionId = utils.RandString(15)\n\t}\n\n\tconn.SessionId = sessionId\n\tconn.LastActiveTime = time.Now()\n\tconn.StartTime = time.Now()\n\n\terr := conn.connect(c.RemoteIP())\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"CreateSessionId error:\" + err.Error()})\n\t\treturn\n\t}\n\n\tOnlineClients.Store(sessionId, &conn)\n\tc.JSON(200, gin.H{\"code\": 0, \"data\": sessionId, \"msg\": \"ok\"})\n}\n\nfunc Disconnect(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\n\t\t\t\t\"code\": 1,\n\t\t\t\t\"msg\":  \"delete connect error\",\n\t\t\t})\n\t\t}\n\t}()\n\n\tsessionId := c.Query(\"session_id\")\n\tif sessionId == \"\" {\n\t\tc.JSON(200, gin.H{\n\t\t\t\"code\": 1,\n\t\t\t\"msg\":  \"session not exists\",\n\t\t})\n\t\treturn\n\t}\n\tDeleteOnlineClient(sessionId)\n\tc.JSON(200, gin.H{\n\t\t\"code\": 0,\n\t\t\"msg\":  \"delete connect success\",\n\t})\n}\n\nfunc ExecCommand(c *gin.Context) {\n\ttype Param struct {\n\t\tSessionId string `form:\"session_id\" binding:\"required,min=10\" json:\"session_id\"`\n\t\tCmd       string `form:\"cmd\" binding:\"required,min=1\" json:\"cmd\"`\n\t}\n\tvar param Param\n\tif err := c.ShouldBind(&param); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tcli, ok := OnlineClients.Load(param.SessionId)\n\tif !ok || cli == nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"session not exists\"})\n\t\treturn\n\t}\n\n\tconn, ok := cli.(*SshConn)\n\tif !ok || conn == nil {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"conn not exists\"})\n\t\treturn\n\t}\n\n\t//创建ssh-session\n\tsession, err := conn.sshClient.NewSession()\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"create session error\"})\n\t\treturn\n\t}\n\tdefer func(session *ssh.Session) {\n\t\t_ = session.Close()\n\t}(session)\n\n\t//执行命令\n\tout, err := session.CombinedOutput(param.Cmd)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 6, \"msg\": \"exec cmd error\", \"data\": string(out)})\n\t\treturn\n\t}\n\n\tc.JSON(200, gin.H{\n\t\t\"code\": 0,\n\t\t\"msg\":  \"ok\",\n\t\t\"data\": string(out),\n\t})\n}\n"
  },
  {
    "path": "gossh/app/service/ssh_sftp.go",
    "content": "package service\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/gin\"\n\t\"io\"\n\t\"log/slog\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"path\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nfunc getSshConn(sessionId string) (*SshConn, error) {\n\tcli, ok := OnlineClients.Load(sessionId)\n\tif !ok {\n\t\tslog.Error(\"加载ssh连接错误\")\n\t\treturn nil, errors.New(\"加载ssh连接错误\")\n\t}\n\tconn, ok := cli.(*SshConn)\n\tif conn != nil && !ok {\n\t\tslog.Error(\"断言ssh连接错误\")\n\t\treturn nil, errors.New(\"断言ssh连接错误\")\n\t}\n\treturn conn, nil\n}\n\n// SftpList GET sftp 获取指定目录下文件信息\nfunc SftpList(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"读取目录错误\"})\n\t\t\treturn\n\t\t}\n\t}()\n\tdirPath := c.PostForm(\"path\")\n\n\tconn, err := getSshConn(c.PostForm(\"session_id\"))\n\tif err != nil {\n\t\tslog.Error(err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tfiles, err := conn.sftpClient.ReadDir(dirPath)\n\tif err != nil {\n\t\tslog.Error(\"sftp客户端ReadDir错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"sftp客户端读取目录错误\"})\n\t\treturn\n\t}\n\n\tfileCount := 0\n\tdirCount := 0\n\tvar fileList []any\n\tfor _, file := range files {\n\t\tfileInfo := map[string]any{}\n\t\tfileInfo[\"path\"] = path.Join(dirPath, file.Name())\n\t\tfileInfo[\"name\"] = file.Name()\n\t\tfileInfo[\"mode\"] = file.Mode().String()\n\t\tfileInfo[\"size\"] = file.Size()\n\t\tfileInfo[\"mod_time\"] = file.ModTime().Format(\"2006-01-02 15:04:05\")\n\t\tif file.IsDir() {\n\t\t\tfileInfo[\"type\"] = \"d\"\n\t\t\tdirCount += 1\n\t\t} else {\n\t\t\tfileInfo[\"type\"] = \"f\"\n\t\t\tfileCount += 1\n\t\t}\n\t\tfileList = append(fileList, fileInfo)\n\t}\n\n\t// 内部方法,处理路径信息\n\tpathHandler := func(dirPath string) (paths []map[string]string) {\n\t\ttmp := strings.Split(dirPath, \"/\")\n\n\t\tvar dirs []string\n\t\tif strings.HasPrefix(dirPath, \"/\") {\n\t\t\tdirs = append(dirs, \"/\")\n\t\t}\n\n\t\tfor _, item := range tmp {\n\t\t\tname := strings.TrimSpace(item)\n\t\t\tif len(name) > 0 {\n\t\t\t\tdirs = append(dirs, name)\n\t\t\t}\n\t\t}\n\n\t\tfor i, item := range dirs {\n\t\t\tfullPath := path.Join(dirs[:i+1]...)\n\t\t\tpathInfo := map[string]string{}\n\t\t\tpathInfo[\"name\"] = item\n\t\t\tpathInfo[\"dir\"] = fullPath\n\t\t\tpaths = append(paths, pathInfo)\n\t\t}\n\t\treturn paths\n\t}\n\n\tdata := map[string]any{\n\t\t\"files\":       fileList,\n\t\t\"file_count\":  fileCount,\n\t\t\"dir_count\":   dirCount,\n\t\t\"paths\":       pathHandler(dirPath),\n\t\t\"current_dir\": dirPath,\n\t}\n\n\tc.JSON(200, gin.H{\"code\": 0, \"data\": data, \"msg\": \"ok\"})\n}\n\n// SftpDownLoad POST sftp 下载文件\nfunc SftpDownLoad(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"下载错误\"})\n\t\t\treturn\n\t\t}\n\t}()\n\tfullPath, err := url.QueryUnescape(c.Query(\"path\"))\n\tif err != nil {\n\t\tslog.Error(\"获取文件路径参数错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"获取文件路径参数错误\"})\n\t\treturn\n\t}\n\tconn, err := getSshConn(c.Query(\"session_id\"))\n\tif err != nil {\n\t\tslog.Error(err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tfile, err := conn.sftpClient.Open(fullPath)\n\tdefer func() {\n\t\t_ = file.Close()\n\t}()\n\tif err != nil {\n\t\tslog.Error(\"sftpClient.Openc错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"sftp打开文件错误\"})\n\t\treturn\n\t}\n\n\tstat, err := file.Stat()\n\tif err != nil {\n\t\tslog.Error(\"file.Stat()错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"读取文件信息错误\"})\n\t\treturn\n\t}\n\n\tc.Writer.WriteHeader(http.StatusOK)\n\tc.Header(\"Content-Disposition\", \"attachment; filename=\"+stat.Name())\n\tc.Header(\"Content-Type\", \"application/octet-stream\")\n\t//c.Header(\"Content-Type\", \"application/x-download\")\n\tc.Header(\"Content-Length\", fmt.Sprintf(\"%d\", stat.Size()))\n\t_, err = file.WriteTo(c.Writer)\n\tif err != nil {\n\t\tslog.Error(\"file.WriteTo错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"下载文件错误\"})\n\t\treturn\n\t}\n\tc.Writer.Flush()\n}\n\n// SftpUpload PUT sftp 上传文件\nfunc SftpUpload(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"上传错误\"})\n\t\t\treturn\n\t\t}\n\t}()\n\n\tdstPath := c.PostForm(\"path\")\n\t//获取上传的文件组\n\tform, err := c.MultipartForm()\n\tif err != nil {\n\t\tslog.Error(\"获取form数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取form数据错误\"})\n\t\treturn\n\t}\n\tfiles := form.File[\"files\"]\n\t// files := c.Request.MultipartForm.File[\"file\"]\n\n\tconn, err := getSshConn(c.PostForm(\"session_id\"))\n\tif err != nil {\n\t\tslog.Error(err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\tvar ret []string\n\tfor _, file := range files {\n\t\tsrcFile, err := file.Open()\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\tfileName := file.Filename\n\t\tdstFile, err := conn.sftpClient.Create(path.Join(dstPath, fileName))\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\t_, err = io.Copy(dstFile, srcFile)\n\t\tif err != nil {\n\t\t\tcontinue\n\t\t}\n\t\t_ = srcFile.Close()\n\t\t_ = dstFile.Close()\n\t\tret = append(ret, fileName)\n\t}\n\tmsg := strconv.Itoa(len(ret)) + \" 个文件上传成功\"\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": msg, \"data\": ret})\n}\n\n// SftpDelete DELETE sftp 删除文件或目录\nfunc SftpDelete(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"删除错误\"})\n\t\t\treturn\n\t\t}\n\t}()\n\n\ttype Body struct {\n\t\tSessionId string `form:\"session_id\" binding:\"required,min=1,max=128\" json:\"session_id\"`\n\t\tPath      string `form:\"path\" binding:\"required,min=1,max=1024\" json:\"path\"`\n\t}\n\n\tvar body Body\n\tif err := c.ShouldBind(&body); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\tconn, err := getSshConn(body.SessionId)\n\tif err != nil {\n\t\tslog.Error(err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\terr = conn.sftpClient.RemoveAll(body.Path)\n\tif err != nil {\n\t\tslog.Error(\"sftpClient.Remove错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"删除文件错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"删除成功\"})\n}\n\n// SftpCreateDir sftp 创建目录\nfunc SftpCreateDir(c *gin.Context) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"创建目录错误\"})\n\t\t\treturn\n\t\t}\n\t}()\n\n\ttype Body struct {\n\t\tSessionId string `form:\"session_id\" binding:\"required,min=1,max=128\" json:\"session_id\"`\n\t\tPath      string `form:\"path\" binding:\"required,min=1,max=1024\" json:\"path\"`\n\t}\n\n\tvar body Body\n\tif err := c.ShouldBind(&body); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\tconn, err := getSshConn(body.SessionId)\n\tif err != nil {\n\t\tslog.Error(err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\terr = conn.sftpClient.MkdirAll(body.Path)\n\tif err != nil {\n\t\tslog.Error(\"sftpClient.MkdirAll错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"创建目录错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"创建目录成功\"})\n}\n"
  },
  {
    "path": "gossh/app/service/ssh_status.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/gin\"\n\t\"gossh/gin/sse\"\n\t\"net/http\"\n\t\"sort\"\n\t\"time\"\n)\n\ntype SshConnById []SshConn\n\nfunc (a SshConnById) Len() int           { return len(a) }\nfunc (a SshConnById) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }\nfunc (a SshConnById) Less(i, j int) bool { return a[i].SessionId < a[j].SessionId }\n\nfunc GetOnlineClient(c *gin.Context) {\n\tc.Header(\"Access-Control-Allow-Origin\", \"*\")\n\tc.Header(\"Connection\", \"keep-alive\")\n\tc.Header(\"Cache-Control\", \"no-cache\")\n\tc.Header(\"Content-Type\", \"text/event-stream\")\n\n\tfor {\n\t\tc.Writer.(http.Flusher).Flush()\n\t\ttime.Sleep(config.DefaultConfig.StatusRefresh)\n\t\tselect {\n\t\tcase <-c.Request.Context().Done():\n\t\t\treturn\n\t\tdefault:\n\t\t\tvar data SshConnById\n\t\t\tOnlineClients.Range(func(key, value any) bool {\n\t\t\t\tconn, ok := value.(*SshConn)\n\t\t\t\tif ok && conn != nil {\n\t\t\t\t\tdata = append(data, *conn)\n\t\t\t\t}\n\t\t\t\treturn ok\n\t\t\t})\n\n\t\t\tsort.Sort(data)\n\t\t\tc.Render(200, sse.Event{\n\t\t\t\tId:    \"200\",\n\t\t\t\tEvent: \"message\",\n\t\t\t\tRetry: 10000,\n\t\t\t\tData: map[string]any{\n\t\t\t\t\t\"code\": 0,\n\t\t\t\t\t\"data\": data,\n\t\t\t\t\t\"msg\":  \"ok\",\n\t\t\t\t},\n\t\t\t})\n\t\t}\n\t}\n}\n\nfunc RefreshConnTime(c *gin.Context) {\n\tids := c.PostFormArray(\"ids\")\n\tfor _, key := range ids {\n\t\tcli, ok := OnlineClients.Load(key)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tconn, ok := cli.(*SshConn)\n\t\tif conn != nil && ok {\n\t\t\tconn.LastActiveTime = time.Now()\n\t\t}\n\t}\n\tc.JSON(200, gin.H{\n\t\t\"code\": 0,\n\t\t\"data\": ids,\n\t\t\"msg\":  \"ok\",\n\t})\n}\n"
  },
  {
    "path": "gossh/app/service/sshd_cert.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"log/slog\"\n\t\"strconv\"\n)\n\nfunc SshdCertCreate(c *gin.Context) {\n\tvar sshdCert model.SshdCert\n\tif err := c.ShouldBind(&sshdCert); err != nil {\n\t\tslog.Error(\"SshdCertCreate 绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\n\terr := sshdCert.Create(&sshdCert)\n\tif err != nil {\n\t\tslog.Error(\"创建SSHD证书错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"创建SSHD证书错误\"})\n\t\treturn\n\t}\n\tSshdCertFindAll(c)\n}\n\nfunc CheckSshdCertNameExists(c *gin.Context) {\n\ttype Name struct {\n\t\tName string `form:\"name\" binding:\"required,min=1,max=128\" json:\"name\"`\n\t}\n\tvar name Name\n\tif err := c.ShouldBind(&name); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\n\tvar sshdCert model.SshdCert\n\ttmp, err := sshdCert.FindByName(name.Name)\n\tif err != nil {\n\t\tslog.Error(\"FindByName错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取SSHD证书信息错误\"})\n\t\treturn\n\t}\n\n\tif tmp.ID != 0 {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"名称已经存存在\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\"})\n\treturn\n}\n\nfunc SshdCertFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\tvar sshdCert model.SshdCert\n\tdata, err := sshdCert.FindByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取SSHD证书信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc SshdCertFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tslog.Error(\"获取limit错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取limit错误\"})\n\t\treturn\n\t}\n\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tslog.Error(\"获取offset错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"获取offset错误\"})\n\t\treturn\n\t}\n\n\tvar sshdCert model.SshdCert\n\tdata, err := sshdCert.FindAll(limit, offset)\n\tif err != nil {\n\t\tslog.Error(\"sshdCert.FindAll错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"获取SSHD证书信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc SshdCertUpdateById(c *gin.Context) {\n\tvar sshdCert model.SshdCert\n\tif err := c.ShouldBind(&sshdCert); err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\terr := sshdCert.UpdateById(sshdCert.ID, &sshdCert)\n\tif err != nil {\n\t\tslog.Error(\"UpdateById错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"更新SSHD证书错误\"})\n\t\treturn\n\t}\n\tSshdCertFindAll(c)\n}\n\nfunc SshdCertDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\tvar sshdCert model.SshdCert\n\terr = sshdCert.DeleteByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"sshdCert.DeleteByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"删除SSHD证书错误\"})\n\t\treturn\n\t}\n\tSshdCertFindAll(c)\n}\n\nfunc GetSshdCertAuthorizedKeys(c *gin.Context) {\n\tvar sshdCert model.SshdCert\n\ttext, err := sshdCert.GetAuthorizedKeys()\n\tif err != nil {\n\t\tslog.Error(\"GetAuthorizedKeys failed\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"获取SSHD证书错误\", \"err_msg\": err})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"ok\", \"data\": text})\n}\n"
  },
  {
    "path": "gossh/app/service/sshd_server.go",
    "content": "package service\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha256\"\n\t\"crypto/sha512\"\n\t\"crypto/x509\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"encoding/pem\"\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/app/model\"\n\t\"gossh/crypto/ssh\"\n\t\"gossh/pty\"\n\t\"gossh/sftp\"\n\t\"io\"\n\t\"log\"\n\t\"log/slog\"\n\t\"net\"\n\t\"os\"\n\t\"os/exec\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\ntype Server struct {\n\tcli    *model.SshdConf\n\tconfig *ssh.ServerConfig\n}\n\nfunc NewServer(c *model.SshdConf) (*Server, error) {\n\ts := &Server{cli: c}\n\tsc, err := s.computeSSHConfig()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts.config = sc\n\treturn s, nil\n}\n\nfunc (s *Server) Start() error {\n\tlisten, err := net.Listen(\"tcp\", fmt.Sprintf(\"%s:%d\", s.cli.Host, s.cli.Port))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to listen on\" + fmt.Sprintf(\"%s:%d\", s.cli.Host, s.cli.Port))\n\t}\n\tslog.Info(\"Listening on\", \"host\", s.cli.Host, \"port\", s.cli.Port)\n\tfor {\n\t\ttcpConn, err := listen.Accept()\n\t\tif err != nil {\n\t\t\tslog.Error(\"Failed to accept incoming connection\", \"err\", err)\n\t\t\tcontinue\n\t\t}\n\t\tgo s.handleConn(tcpConn)\n\t}\n}\n\nfunc (s *Server) handleConn(tcpConn net.Conn) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"recovered from panic in handleConn\", \"err\", err)\n\t\t}\n\t}()\n\n\tsshConn, chans, reqs, err := ssh.NewServerConn(tcpConn, s.config)\n\tif err != nil {\n\t\tif err != io.EOF {\n\t\t\tslog.Info(\"Failed to handshake\", \"err\", err)\n\t\t}\n\t\treturn\n\t}\n\tslog.Info(\"New SSH connection from\", \"address\", sshConn.RemoteAddr(), \"client_version\", sshConn.ClientVersion())\n\tgo ssh.DiscardRequests(reqs)\n\tgo s.handleChannels(chans)\n}\n\nfunc (s *Server) handleChannels(chans <-chan ssh.NewChannel) {\n\t// Service the incoming Channel channel in go routine\n\tfor newChannel := range chans {\n\t\tgo s.handleChannel(newChannel)\n\t}\n}\n\nfunc (s *Server) handleChannel(newChannel ssh.NewChannel) {\n\tif t := newChannel.ChannelType(); t != \"session\" {\n\t\t_ = newChannel.Reject(ssh.UnknownChannelType, fmt.Sprintf(\"unknown channel type: %s\", t))\n\t\treturn\n\t}\n\n\tslog.Info(\"Channel request\", \"type\", newChannel.ChannelType())\n\tif d := newChannel.ExtraData(); len(d) > 0 {\n\t\tslog.Info(\"Channel data\", \"data\", d)\n\t}\n\n\tconnection, requests, err := newChannel.Accept()\n\tif err != nil {\n\t\tslog.Error(\"Could not accept channel failed\", \"err\", err)\n\t\treturn\n\t}\n\tlog.Println(\"Channel accepted\")\n\tgo s.handleRequests(connection, requests)\n}\n\nfunc (s *Server) handleRequests(connection ssh.Channel, requests <-chan *ssh.Request) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"handleRequests recovered from panic\", \"err\", err)\n\t\t}\n\t}()\n\n\t// start keep alive loop\n\tif ka := s.cli.KeepAlive; ka > 0 {\n\t\tticking := make(chan bool, 1)\n\t\tinterval := time.Duration(ka) * time.Second\n\t\tgo s.keepAlive(connection, interval, ticking)\n\t\tdefer close(ticking)\n\t}\n\t// prepare to handle client requests\n\tenv := os.Environ()\n\tresizes := make(chan []byte, 10)\n\tdefer close(resizes)\n\n\tfor req := range requests {\n\t\tswitch req.Type {\n\t\tcase \"subsystem\":\n\t\t\tif string(req.Payload[4:]) == \"sftp\" {\n\t\t\t\treq.Reply(true, nil)\n\t\t\t\tserver, err := sftp.NewServer(connection, sftp.WithDebug(os.Stderr))\n\t\t\t\tif err != nil {\n\t\t\t\t\tslog.Error(\"create SFTP server error\", \"err\", err)\n\t\t\t\t\tconnection.Close()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\terr = server.Serve()\n\t\t\t\tif err == io.EOF {\n\t\t\t\t\tserver.Close()\n\t\t\t\t\tconnection.Close()\n\t\t\t\t\treturn\n\t\t\t\t} else if err != nil {\n\t\t\t\t\tslog.Error(\"SFTP server error\", \"err\", err)\n\t\t\t\t\tconnection.Close()\n\t\t\t\t\treturn\n\t\t\t\t} else {\n\t\t\t\t\tconnection.Close()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"pty-req\":\n\t\t\ttermLen := req.Payload[3]\n\t\t\tresizes <- req.Payload[termLen+4:]\n\t\t\treq.Reply(true, nil)\n\t\tcase \"window-change\":\n\t\t\tresizes <- req.Payload\n\t\tcase \"env\":\n\t\t\te := struct{ Name, Value string }{}\n\t\t\t_ = ssh.Unmarshal(req.Payload, &e)\n\t\t\tkv := e.Name + \"=\" + e.Value\n\t\t\tslog.Info(\"env\", \"data\", kv)\n\t\t\tif s.cli.LoadEnv == \"Y\" {\n\t\t\t\tenv = appendEnv(env, kv)\n\t\t\t}\n\t\tcase \"shell\":\n\t\t\tif len(req.Payload) > 0 {\n\t\t\t\tslog.Info(\"shell command ignored\", \"payload\", req.Payload)\n\t\t\t}\n\t\t\tslog.Info(\"sshd attachShell\")\n\t\t\terr := s.attachShell(connection, env, resizes)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"exec shell\", \"err\", err)\n\t\t\t}\n\t\t\treq.Reply(err == nil, []byte{})\n\t\tcase \"exec\":\n\t\t\tif req.WantReply {\n\t\t\t\treq.Reply(true, nil)\n\t\t\t}\n\t\t\tcommand := string(req.Payload[4:])\n\t\t\tslog.Info(\"exec command string\", \"cmd\", command)\n\t\t\tret := ExecuteForChannel(command, connection)\n\t\t\tslog.Info(\"exec return\", \"code\", ret)\n\t\t\tconnection.Close()\n\t\t\treturn\n\t\tdefault:\n\t\t\tslog.Info(\"unknown request\", \"type\", req.Type, \"want_reply\", req.WantReply, \"payload\", req.Payload)\n\t\t}\n\t}\n}\n\nfunc (s *Server) keepAlive(connection ssh.Channel, interval time.Duration, ticking <-chan bool) {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"keepAlive recovered from panic\", \"err\", err)\n\t\t}\n\t}()\n\tticker := time.NewTicker(interval)\n\tdefer ticker.Stop()\n\tfor {\n\t\tselect {\n\t\tcase <-ticker.C:\n\t\t\t_, err := connection.SendRequest(\"ping\", false, nil)\n\t\t\tif err != nil {\n\t\t\t\tslog.Error(\"failed to send keep alive ping\", \"err\", err)\n\t\t\t}\n\t\t\tslog.Info(\"sent keep alive ping\")\n\t\tcase <-ticking:\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (s *Server) attachShell(connection ssh.Channel, env []string, resizes <-chan []byte) error {\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tfmt.Printf(\"recovered from panic in handleRequests: %s\", err)\n\t\t}\n\t}()\n\n\tshell := exec.Command(s.cli.Shell)\n\tdir, err := os.UserHomeDir()\n\tif err == nil {\n\t\tshell.Dir = dir\n\t}\n\n\tshell.Env = env\n\tslog.Info(\"Session env\", \"data\", env)\n\n\tcloseFunc := func() {\n\t\terr := connection.Close()\n\t\tif err != nil {\n\t\t\tslog.Error(\"close connect failed\", \"err_msg\", err)\n\t\t\treturn\n\t\t}\n\t\tslog.Info(\"Session closed\")\n\t}\n\n\tshellPty, err := pty.Start(shell)\n\tif err != nil {\n\t\tcloseFunc()\n\t\treturn fmt.Errorf(\"could not start pty (%s)\\n\", err)\n\t}\n\t//dequeue resizes\n\tgo func() {\n\t\tfor payload := range resizes {\n\t\t\tw, h := parseDims(payload)\n\t\t\tSetWindowSize(shellPty, w, h)\n\t\t}\n\t}()\n\t//pipe session to shell and visa-versa\n\tvar once sync.Once\n\tgo func() {\n\t\t_, _ = io.Copy(connection, shellPty)\n\t\tonce.Do(closeFunc)\n\t}()\n\tgo func() {\n\t\t_, _ = io.Copy(shellPty, connection)\n\t\tonce.Do(closeFunc)\n\t}()\n\tslog.Info(\"shell attached\")\n\tgo func() {\n\t\tif shell.Process != nil {\n\t\t\tif ps, err := shell.Process.Wait(); err != nil && ps != nil {\n\t\t\t\tslog.Error(\"Failed to exit shell\", \"err\", err)\n\t\t\t}\n\t\t\t// shellPty.Close()\n\t\t}\n\t\tslog.Info(\"Shell terminated and Session closed\")\n\t}()\n\treturn nil\n}\n\nfunc (s *Server) loadCertAuthFile() (map[string]string, error) {\n\tvar tmp model.SshdCert\n\tauthorizedKeys, err := tmp.GetAuthorizedKeys()\n\tif err != nil {\n\t\tslog.Error(\"GetAuthorizedKeys failed\", \"err_msg\", err.Error())\n\t\treturn nil, err\n\t}\n\n\tkeys, err := parseKeys([]byte(authorizedKeys))\n\tif err != nil {\n\t\tslog.Error(\"parseKeys failed\", \"err_msg\", err.Error())\n\t\treturn nil, err\n\t}\n\treturn keys, nil\n}\n\nfunc (s *Server) computeSSHConfig() (*ssh.ServerConfig, error) {\n\tsc := &ssh.ServerConfig{}\n\tif s.cli.Shell == \"\" {\n\t\tif runtime.GOOS == \"windows\" {\n\t\t\ts.cli.Shell = \"powershell\"\n\t\t} else {\n\t\t\ts.cli.Shell = \"sh\"\n\t\t}\n\t}\n\tp, err := exec.LookPath(s.cli.Shell)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"find shell failed: %s\\n\", s.cli.Shell)\n\t}\n\ts.cli.Shell = p\n\tslog.Info(\"Session shell\", \"shell\", s.cli.Shell)\n\n\t//user provided key (can generate with 'ssh-keygen -t rsa')\n\tpri, err := ssh.ParsePrivateKey([]byte(s.cli.KeyFile))\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"failed to parse private key\\n\")\n\t}\n\tsc.AddHostKey(pri)\n\tslog.Info(\"RSA key\", \"fingerprint\", fingerprint(pri.PublicKey()))\n\n\t// 注册账号密码认证逻辑(回调函数)\n\tsc.PasswordCallback = func(conn ssh.ConnMetadata, pass []byte) (*ssh.Permissions, error) {\n\t\tvar sshdUsers model.SshdUser\n\t\tu, err := sshdUsers.FindByNameAndPwd(conn.User(), string(pass))\n\t\tif err != nil {\n\t\t\tslog.Error(\"Authentication failed\", \"username\", conn.User(), \"err_msg\", err)\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif conn.User() == u.Name && string(pass) == u.Pwd {\n\t\t\tslog.Info(\"Authentication failed with password\", \"username\", conn.User())\n\t\t\treturn nil, nil\n\t\t}\n\t\tslog.Info(\"Authentication failed\", \"username\", conn.User(), \"password\", u.Pwd)\n\t\treturn nil, fmt.Errorf(\"auth denied\\n\")\n\t}\n\n\t// 注册证书认证逻辑(回调函数)\n\tsc.PublicKeyCallback = func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) {\n\t\tks, err := s.loadCertAuthFile()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tslog.Info(\"Authentication enabled public keys\", \"size\", len(ks))\n\t\treturn nil, s.matchKeys(key, ks)\n\t}\n\n\t// 注册BannerCallback(回调函数)\n\tsc.BannerCallback = func(conn ssh.ConnMetadata) string {\n\t\t// 写入自定义的横幅信息到客户端\n\t\treturn fmt.Sprintf(\"Welcome to the Go_SSH_Server\\n=>user:(%s)\\n=>remote addr:(%s)\\n=>local  addr:(%s)\\n=>client  ver:(%s)\\n=>server  ver:(%s)\\n\\n\",\n\t\t\tconn.User(), conn.RemoteAddr().String(), conn.LocalAddr(),\n\t\t\tconn.ClientVersion(), conn.ServerVersion())\n\t}\n\tsc.ServerVersion = \"SSH-2.0-OpenSSH\"\n\tcf, err := s.cli.FindByID(1)\n\tif err == nil {\n\t\tsc.ServerVersion = cf.ServerVersion\n\t}\n\treturn sc, nil\n}\n\nfunc (s *Server) matchKeys(key ssh.PublicKey, keys map[string]string) error {\n\tif cmt, exists := keys[string(key.Marshal())]; exists {\n\t\tslog.Info(\"User authenticated with public key\", \"username\", cmt, \"public_key\", fingerprint(key))\n\t\treturn nil\n\t}\n\tslog.Error(\"User authentication failed with public key\", \"err\", fingerprint(key))\n\treturn fmt.Errorf(\"denied\\n\")\n}\n\nfunc appendEnv(env []string, kv string) []string {\n\tp := strings.SplitN(kv, \"=\", 2)\n\tk := p[0] + \"=\"\n\tfor i, e := range env {\n\t\tif strings.HasPrefix(e, k) {\n\t\t\tenv[i] = kv\n\t\t\treturn env\n\t\t}\n\t}\n\treturn append(env, kv)\n}\n\n// parseDims extracts terminal dimensions (width x height) from the provided buffer.\nfunc parseDims(b []byte) (uint32, uint32) {\n\tw := binary.BigEndian.Uint32(b)\n\th := binary.BigEndian.Uint32(b[4:])\n\treturn w, h\n}\n\n// SetWindowSize sets the size of the given pty.\nfunc SetWindowSize(t pty.Pty, w, h uint32) {\n\tws := &pty.Winsize{Rows: uint16(h), Cols: uint16(w)}\n\t_ = pty.Setsize(t, ws)\n}\n\nfunc generateKey(seed string) ([]byte, error) {\n\tvar r io.Reader\n\tif seed == \"\" {\n\t\tr = rand.Reader\n\t} else {\n\t\tr = newDetermRand([]byte(seed))\n\t}\n\tprivateKey, err := rsa.GenerateKey(r, 2048)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = privateKey.Validate()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tb := x509.MarshalPKCS1PrivateKey(privateKey)\n\treturn pem.EncodeToMemory(&pem.Block{Type: \"RSA PRIVATE KEY\", Bytes: b}), nil\n}\n\nfunc parseKeys(b []byte) (map[string]string, error) {\n\tlines := bytes.Split(b, []byte(\"\\n\"))\n\t//parse each line\n\tkeys := map[string]string{}\n\tfor _, l := range lines {\n\t\tif key, cmt, _, _, err := ssh.ParseAuthorizedKey(l); err == nil {\n\t\t\tkeys[string(key.Marshal())] = cmt\n\t\t}\n\t}\n\t//ensure we got something\n\tif len(keys) == 0 {\n\t\treturn nil, fmt.Errorf(\"no keys found\\n\")\n\t}\n\treturn keys, nil\n}\n\nfunc fingerprint(k ssh.PublicKey) string {\n\tbytesData := sha256.Sum256(k.Marshal())\n\tb64 := base64.StdEncoding.EncodeToString(bytesData[:])\n\tif strings.HasSuffix(b64, \"=\") {\n\t\tb64 = strings.TrimSuffix(b64, \"=\") + \".\"\n\t}\n\treturn \"SHA256:\" + b64\n}\n\nfunc newDetermRand(seed []byte) io.Reader {\n\tconst randSize = 2048\n\tvar out []byte\n\t//strengthen seed\n\tvar next = seed\n\tfor i := 0; i < randSize; i++ {\n\t\tnext, out = hash(next)\n\t}\n\treturn &determRand{\n\t\tnext: next,\n\t\tout:  out,\n\t}\n}\n\ntype determRand struct {\n\tnext, out []byte\n}\n\nfunc (d *determRand) Read(b []byte) (int, error) {\n\tl := len(b)\n\t//HACK: combat https://golang.org/src/crypto/rsa/rsa.go#L257\n\tif l == 1 {\n\t\treturn 1, nil\n\t}\n\tn := 0\n\tfor n < l {\n\t\tnext, out := hash(d.next)\n\t\tn += copy(b[n:], out)\n\t\td.next = next\n\t}\n\treturn n, nil\n}\n\nfunc hash(input []byte) (next []byte, output []byte) {\n\tnextout := sha512.Sum512(input)\n\treturn nextout[:sha512.Size/2], nextout[sha512.Size/2:]\n}\n\n// ExecuteForChannel Execute a process for the channel.\nfunc ExecuteForChannel(shellCmd string, ch ssh.Channel) uint32 {\n\tvar err error\n\n\t// Windows 下特殊处理命令\n\tvar proc *exec.Cmd\n\tif runtime.GOOS == \"windows\" {\n\t\t// 使用 Command 创建命令，并正确处理参数\n\t\tproc = exec.Command(\"powershell\", \"-NoProfile\", \"-NonInteractive\", \"-Command\",\n\t\t\t\"[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; $OutputEncoding = [System.Text.Encoding]::UTF8; chcp 65001 | Out-Null; \"+shellCmd)\n\t} else {\n\t\tproc = exec.Command(\"sh\", \"-c\", shellCmd)\n\t}\n\n\tproc.Env = append(os.Environ(), \"LANG=zh_CN.UTF-8\", \"LC_ALL=zh_CN.UTF-8\")\n\n\texe, err := os.Executable()\n\tif err != nil {\n\t\tslog.Error(\"get os.Executable error\", \"err\", err)\n\t}\n\tslog.Info(\"os.Executable() exe:\", \"path\", exe)\n\n\tdir := filepath.Dir(exe)\n\tslog.Info(\"exec dir info:\", \"path\", dir)\n\n\tproc.Dir = dir\n\tif userInfo, err := user.Current(); err == nil {\n\t\tproc.Dir = userInfo.HomeDir\n\t}\n\n\tstdin, err := proc.StdinPipe()\n\tif err != nil {\n\t\tslog.Error(\"create pipe failed\", \"err\", err)\n\t\treturn 1\n\t}\n\n\tgo func() {\n\t\tdefer stdin.Close()\n\t\t_, _ = io.Copy(stdin, ch)\n\t}()\n\tproc.Stdout = ch\n\tproc.Stderr = ch.Stderr()\n\n\t// 执行命令\n\terr = proc.Start()\n\tif err != nil {\n\t\tslog.Error(\"start command failed\", \"err\", err)\n\t\t_, _ = ch.Write([]byte(fmt.Sprintf(\"start command failed: %v\\n\", err)))\n\t\treturn 1\n\t}\n\n\t// 等待命令完成\n\terr = proc.Wait()\n\tif err != nil {\n\t\tvar exitErr *exec.ExitError\n\t\tif errors.As(err, &exitErr) {\n\t\t\tslog.Error(\"wait command failed\", \"exit code\", exitErr.ExitCode())\n\t\t\treturn uint32(exitErr.ExitCode())\n\t\t}\n\t\tslog.Error(\"exec command failed\", \"err\", err)\n\t\t_, _ = ch.Write([]byte(fmt.Sprintf(\"exec command failed: %v\\n\", err)))\n\t\treturn 1\n\t}\n\tslog.Info(\"exec command success\")\n\treturn 0\n}\n\nfunc startSshServer() {\n\tstatus := <-isStartSshd\n\tif status {\n\t\tslog.Info(\"start sshd server\")\n\t}\n\n\tvar sshdConf model.SshdConf\n\tconf, err := sshdConf.FindByID(1)\n\tif err != nil {\n\t\tslog.Error(\"find sshd server config failed\", \"err_msg\", err)\n\t\treturn\n\t}\n\tslog.Info(\"find sshd server config\", \"conf\", conf)\n\ts, err := NewServer(&conf)\n\tif err != nil {\n\t\tslog.Error(\"NewServer failed\", \"err_msg\", err)\n\t\treturn\n\t}\n\tslog.Info(\"start sshd server\")\n\terr = s.Start()\n\tif err != nil {\n\t\tslog.Error(\"sshd server start failed\", \"err_msg\", err)\n\t\treturn\n\t}\n}\n\nvar isStartSshd = make(chan bool)\n\nfunc InitSshServer() {\n\tgo startSshServer()\n\tslog.Info(\"exec sshd init func\")\n}\n"
  },
  {
    "path": "gossh/app/service/sshd_user.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"log/slog\"\n\t\"strconv\"\n)\n\nfunc SshdUserCreate(c *gin.Context) {\n\tvar sshdUser model.SshdUser\n\tif err := c.ShouldBind(&sshdUser); err != nil {\n\t\tslog.Error(\"UserCreate 绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\n\terr := sshdUser.Create(&sshdUser)\n\tif err != nil {\n\t\tslog.Error(\"创建用户错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"创建用户错误\"})\n\t\treturn\n\t}\n\tSshdUserFindAll(c)\n}\n\nfunc CheckSshdUserNameExists(c *gin.Context) {\n\ttype Name struct {\n\t\tName string `form:\"name\" binding:\"required,min=1,max=128\" json:\"name\"`\n\t}\n\tvar name Name\n\tif err := c.ShouldBind(&name); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\n\tvar sshdUser model.SshdUser\n\ttmp, err := sshdUser.FindByName(name.Name)\n\tif err != nil {\n\t\tslog.Error(\"FindByName错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\n\tif tmp.ID != 0 {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"用户名已经存存在\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\"})\n\treturn\n}\n\nfunc SshdUserFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\tvar sshdUser model.SshdUser\n\tdata, err := sshdUser.FindByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc SshdUserFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tslog.Error(\"获取limit错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取limit错误\"})\n\t\treturn\n\t}\n\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tslog.Error(\"获取offset错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"获取offset错误\"})\n\t\treturn\n\t}\n\n\tvar sshdUser model.SshdUser\n\tdata, err := sshdUser.FindAll(limit, offset)\n\tif err != nil {\n\t\tslog.Error(\"user.FindAl错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc SshdUserUpdateById(c *gin.Context) {\n\tvar sshdUser model.SshdUser\n\tif err := c.ShouldBind(&sshdUser); err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\terr := sshdUser.UpdateById(sshdUser.ID, &sshdUser)\n\tif err != nil {\n\t\tslog.Error(\"UpdateById错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"更新用户错误\"})\n\t\treturn\n\t}\n\tSshdUserFindAll(c)\n}\n\nfunc SshdUserDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\tvar sshdUser model.SshdUser\n\terr = sshdUser.DeleteByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"user.DeleteByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"删除用户错误\"})\n\t\treturn\n\t}\n\tSshdUserFindAll(c)\n}\n"
  },
  {
    "path": "gossh/app/service/sys_init.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/app/model\"\n\t\"gossh/gin\"\n\t\"log/slog\"\n\t\"os/exec\"\n\t\"runtime\"\n)\n\nfunc GetRunConf(c *gin.Context) {\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": config.DefaultConfig})\n}\n\nfunc SetRunConf(c *gin.Context) {\n\tif config.DefaultConfig.IsInit {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"已经初始化\"})\n\t\treturn\n\t}\n\tvar appConfig config.AppConfig\n\tif err := c.ShouldBind(&appConfig); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\terr := config.RewriteConfig(appConfig)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": config.DefaultConfig})\n}\n\nfunc GetIsInit(c *gin.Context) {\n\tc.JSON(200, gin.H{\n\t\t\"code\": 0, \"msg\": \"ok\", \"data\": map[string]any{\n\t\t\t\"is_init\": config.DefaultConfig.IsInit,\n\t\t},\n\t})\n}\n\ntype InitConfig struct {\n\tDbConnConf\n\tJwtSecret     string `json:\"jwt_secret\"  binding:\"required,min=1,max=128\"`\n\tSessionSecret string `json:\"session_secret\"  binding:\"required,min=1,max=128\"`\n\tUsername      string `json:\"username\"  binding:\"required,min=1,max=63\"`\n\tPassword      string `json:\"password\" binding:\"required,min=1,max=63\"`\n\tSshdHost      string `json:\"sshd_host\"  binding:\"required,min=1,max=127\"`\n\tSshdPort      uint16 `json:\"sshd_port\" binding:\"required,gte=1,lte=65535\"`\n\tSshdUser      string `json:\"sshd_user\"  binding:\"required,min=1,max=63\"`\n\tSshdPwd       string `json:\"sshd_pwd\" binding:\"required,min=1,max=63\"`\n}\n\nfunc SysInit(c *gin.Context) {\n\tvar initConf InitConfig\n\tif err := c.ShouldBind(&initConf); err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\t// 1.检查系统是否已经初始化\n\tif config.DefaultConfig.IsInit {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"系统已经初始化\"})\n\t\treturn\n\t}\n\n\t// 2.数据库连接检查\n\tdbConf := DbConnConf{\n\t\tDbDsn:  initConf.DbDsn,\n\t\tDbType: initConf.DbType,\n\t}\n\terr := DbConnTestCheck(dbConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\t// 3.数据库表迁移\n\terr = model.DbMigrate(initConf.DbType, initConf.DbDsn)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": err.Error(), \"data\": \"执行数据库迁移错误\"})\n\t\treturn\n\t}\n\n\t// root 用户过期时间\n\tdateTime, _ := model.NewDateTime(\"2099-12-31 00:00:00\")\n\n\t// 4.创建初始化用户\n\tvar user = model.WebUser{\n\t\tID:       0,\n\t\tName:     initConf.Username,\n\t\tPwd:      initConf.Password,\n\t\tDescInfo: \"管理员\",\n\t\tIsAdmin:  \"Y\",\n\t\tIsEnable: \"Y\",\n\t\tIsRoot:   \"Y\",\n\t\tExpiryAt: dateTime,\n\t}\n\n\terr = user.Create(&user)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化创建账号错误\"})\n\t\treturn\n\t}\n\n\t// 5.设置默认网络策略\n\tvar policyConf = model.PolicyConf{\n\t\tNetPolicy: \"N\",\n\t}\n\terr = policyConf.Create(&policyConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化网络策略错误\"})\n\t\treturn\n\t}\n\n\tprivateKey, err := generateKey(\"webssh\")\n\tif err != nil {\n\t\tslog.Error(\"failed to generate private key\")\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化生成SSHD私钥错误\"})\n\t\treturn\n\t}\n\n\tvar shell = \"sh\"\n\tif runtime.GOOS == \"windows\" {\n\t\tshell = \"powershell\"\n\t} else {\n\t\tsh, err := exec.LookPath(\"bash\")\n\t\tif err == nil {\n\t\t\tslog.Info(\"init find shell is bash\\n\")\n\t\t\tshell = sh\n\t\t}\n\t}\n\n\t// 6.初始化sshd服务端配置\n\tvar sshdConf = model.SshdConf{\n\t\tID:            1,\n\t\tName:          \"init\",\n\t\tHost:          initConf.SshdHost,\n\t\tPort:          initConf.SshdPort,\n\t\tShell:         shell,\n\t\tKeyFile:       string(privateKey),\n\t\tKeySeed:       \"webssh\",\n\t\tKeepAlive:     60,\n\t\tLoadEnv:       \"Y\",\n\t\tAuthType:      \"all\",\n\t\tServerVersion: \"SSH-2.0-OpenSSH\",\n\t}\n\terr = sshdConf.Create(&sshdConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化SSHD服务端配置错误\"})\n\t\treturn\n\t}\n\n\t// 7.初始化sshd服务端账号\n\tvar sshdUser = model.SshdUser{\n\t\tID:       1,\n\t\tName:     initConf.SshdUser,\n\t\tPwd:      initConf.SshdPwd,\n\t\tDescInfo: \"服务器初始化账号\",\n\t\tIsEnable: \"Y\",\n\t\tWorkDir:  \"\",\n\t\tExpiryAt: dateTime,\n\t}\n\terr = sshdUser.Create(&sshdUser)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化SSHD服务端账号错误\"})\n\t\treturn\n\t}\n\n\t// 8.覆盖默认配置\n\tvar defConf = config.DefaultConfig\n\tdefConf.IsInit = true\n\tdefConf.DbType = initConf.DbType\n\tdefConf.DbDsn = initConf.DbDsn\n\tdefConf.JwtSecret = initConf.JwtSecret\n\tdefConf.SessionSecret = initConf.SessionSecret\n\terr = config.RewriteConfig(defConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": err.Error(), \"data\": \"写入配置错误\"})\n\t\treturn\n\t}\n\n\t// 9.创建默认连接\n\tvar sshConf = model.SshConf{\n\t\tUid:         1,\n\t\tName:        \"self_sshd\",\n\t\tAddress:     \"127.0.0.1\",\n\t\tUser:        initConf.SshdUser,\n\t\tPwd:         initConf.SshdPwd,\n\t\tAuthType:    \"pwd\",\n\t\tNetType:     \"tcp4\",\n\t\tCertData:    \"\",\n\t\tCertPwd:     \"\",\n\t\tPort:        initConf.SshdPort,\n\t\tFontSize:    16,\n\t\tBackground:  \"#000000\",\n\t\tForeground:  \"#FFFFFF\",\n\t\tCursorColor: \"#FFFFFF\",\n\t\tFontFamily:  \"Courier\",\n\t\tCursorStyle: \"block\",\n\t\tShell:       \"sh\",\n\t\tPtyType:     \"xterm-256color\",\n\t\tInitCmd:     \"\",\n\t\tInitBanner:  \"# https://github.com/o8oo8o/WebSSH\",\n\t}\n\n\terr = sshConf.Create(&sshConf)\n\tif err != nil {\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": err.Error(), \"data\": \"初始化创建默认连接错误\"})\n\t\treturn\n\t}\n\n\tisStartSshd <- true\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"系统初始化完成\"})\n}\n"
  },
  {
    "path": "gossh/app/service/web_user.go",
    "content": "package service\n\nimport (\n\t\"gossh/app/config\"\n\t\"gossh/app/middleware\"\n\t\"gossh/app/model\"\n\t\"gossh/app/utils\"\n\t\"gossh/gin\"\n\t\"log/slog\"\n\t\"net/http\"\n\t\"strconv\"\n\t\"time\"\n)\n\nfunc UserCreate(c *gin.Context) {\n\tvar user model.WebUser\n\tif err := c.ShouldBind(&user); err != nil {\n\t\tslog.Error(\"UserCreate 绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\tvar err error\n\tuser.IsRoot = \"N\"\n\terr = user.Create(&user)\n\tif err != nil {\n\t\tslog.Error(\"创建用户错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"创建用户错误\"})\n\t\treturn\n\t}\n\tUserFindAll(c)\n}\n\nfunc ModifyPasswd(c *gin.Context) {\n\ttype password struct {\n\t\tPwd string `form:\"pwd\" binding:\"required,min=1,max=64\" json:\"pwd\"`\n\t}\n\n\tvar pwd password\n\tif err := c.ShouldBind(&pwd); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\n\tuid := c.GetUint(\"uid\")\n\tvar tmp model.WebUser\n\tuser, err := tmp.FindByID(uid)\n\tif err != nil {\n\t\tslog.Error(\"FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\n\tuser.Pwd = pwd.Pwd\n\terr = user.UpdatePassword(uid, &user)\n\tif err != nil {\n\t\tslog.Error(\"UpdatePassword错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"更新用户密码错误\"})\n\t\treturn\n\t}\n\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"更新密码成功\"})\n}\n\nfunc CheckUserNameExists(c *gin.Context) {\n\ttype Name struct {\n\t\tName string `form:\"name\" binding:\"required,min=1,max=128\" json:\"name\"`\n\t}\n\tvar name Name\n\tif err := c.ShouldBind(&name); err != nil {\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\tvar user model.WebUser\n\n\ttmp, err := user.FindByName(name.Name)\n\tif err != nil {\n\t\tslog.Error(\"FindByName错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\n\tif tmp.ID != 0 {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"用户名已经存存在\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\"})\n\treturn\n}\n\nfunc UserFindByID(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\tvar user model.WebUser\n\tdata, err := user.FindByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc UserFindAll(c *gin.Context) {\n\tlimit, err := strconv.Atoi(c.DefaultQuery(\"limit\", \"10000\"))\n\tif err != nil {\n\t\tslog.Error(\"获取limit错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取limit错误\"})\n\t\treturn\n\t}\n\n\toffset, err := strconv.Atoi(c.DefaultQuery(\"offset\", \"0\"))\n\tif err != nil {\n\t\tslog.Error(\"获取offset错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 2, \"msg\": \"获取offset错误\"})\n\t\treturn\n\t}\n\n\tvar user model.WebUser\n\tdata, err := user.FindAll(limit, offset)\n\tif err != nil {\n\t\tslog.Error(\"user.FindAl错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\tc.JSON(200, gin.H{\"code\": 0, \"msg\": \"ok\", \"data\": data})\n}\n\nfunc UserUpdateById(c *gin.Context) {\n\tvar user model.WebUser\n\tif err := c.ShouldBind(&user); err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\n\ttmpUser, err := user.FindByID(user.ID)\n\tif err != nil {\n\t\tslog.Error(\"FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\n\t// 防止越权操作\n\tif tmpUser.IsRoot == \"N\" {\n\t\tuser.IsRoot = \"N\"\n\t}\n\n\tif tmpUser.IsRoot == \"Y\" {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"内置Root用户不能更新\"})\n\t\treturn\n\t}\n\n\terr = user.UpdateById(user.ID, &user)\n\tif err != nil {\n\t\tslog.Error(\"UpdateById错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"更新用户错误\"})\n\t\treturn\n\t}\n\tUserFindAll(c)\n}\n\nfunc UserDeleteById(c *gin.Context) {\n\tid, err := strconv.Atoi(c.Param(\"id\"))\n\tif err != nil {\n\t\tslog.Error(\"获取ID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"获取ID错误\"})\n\t\treturn\n\t}\n\tvar user model.WebUser\n\ttmpUser, err := user.FindByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"user.FindByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 3, \"msg\": \"获取用户信息错误\"})\n\t\treturn\n\t}\n\n\t// 防止越权操作\n\tif tmpUser.IsRoot == \"Y\" {\n\t\tc.JSON(200, gin.H{\"code\": 4, \"msg\": \"内置Root用户不能删除\"})\n\t\treturn\n\t}\n\n\terr = user.DeleteByID(uint(id))\n\tif err != nil {\n\t\tslog.Error(\"user.DeleteByID错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 5, \"msg\": \"删除用户错误\"})\n\t\treturn\n\t}\n\tUserFindAll(c)\n}\n\nfunc UserLogin(c *gin.Context) {\n\tif !config.DefaultConfig.IsInit {\n\t\tslog.Warn(\"system no init\")\n\t\tc.JSON(401, gin.H{\"code\": 401, \"msg\": \"请对系统进行初始化\"})\n\t\treturn\n\t}\n\ttype Param struct {\n\t\tName string `form:\"name\" binding:\"required,min=1,max=64\" json:\"name\"`\n\t\tPwd  string `form:\"pwd\" binding:\"required,min=1,max=64\" json:\"pwd\"`\n\t}\n\n\tvar loginAudit model.LoginAudit\n\tvar param Param\n\n\taudit := model.LoginAudit{\n\t\tClientIp:  c.ClientIP(),\n\t\tUserAgent: utils.TruncateString(c.Request.UserAgent(), 500),\n\t\tErrMsg:    \"请求参数错误\",\n\t\tIsSuccess: \"N\",\n\t\tOccurAt:   model.DateTime(time.Now()),\n\t}\n\tif err := c.ShouldBind(&param); err != nil {\n\t\taudit.Name = utils.TruncateString(param.Name, 60)\n\t\taudit.Pwd = utils.TruncateString(param.Pwd, 60)\n\t\t_ = loginAudit.Create(&audit)\n\t\tslog.Error(\"绑定数据错误\", \"err_msg\", err.Error())\n\t\tc.JSON(200, gin.H{\"code\": 1, \"msg\": \"输入数据不合法\"})\n\t\treturn\n\t}\n\taudit.Name = utils.TruncateString(param.Name, 60)\n\taudit.Pwd = utils.TruncateString(param.Pwd, 60)\n\n\tvar user model.WebUser\n\tu, err := user.FindByNameAndPwd(param.Name, param.Pwd)\n\tif err != nil {\n\t\taudit.ErrMsg = \"账号密码错误\"\n\t\t_ = loginAudit.Create(&audit)\n\t\tslog.Error(\"账号密码错误\", \"err_msg\", err.Error())\n\t\tc.JSON(401, gin.H{\"code\": 2, \"msg\": \"账号密码错误\"})\n\t\treturn\n\t}\n\n\tif u.IsEnable == \"N\" {\n\t\taudit.ErrMsg = \"账号已禁用\"\n\t\t_ = loginAudit.Create(&audit)\n\t\tc.JSON(401, gin.H{\"code\": 3, \"msg\": \"账号已禁用\"})\n\t\treturn\n\t}\n\n\tif u.ExpiryAt.ToTime().Unix() < time.Now().Unix() {\n\t\taudit.ErrMsg = \"账号已过期\"\n\t\t_ = loginAudit.Create(&audit)\n\t\tc.JSON(401, gin.H{\"code\": 4, \"msg\": \"账号已过期\"})\n\t\treturn\n\t}\n\n\ttokenString, err := middleware.GenerateToken(u.ID)\n\tif err != nil {\n\t\taudit.ErrMsg = \"生成Token错误\"\n\t\t_ = loginAudit.Create(&audit)\n\t\tc.JSON(401, gin.H{\"code\": 5, \"msg\": err.Error()})\n\t\treturn\n\t}\n\n\taudit.Name = param.Name\n\taudit.Pwd = \"*\"\n\taudit.ErrMsg = \"*\"\n\taudit.IsSuccess = \"Y\"\n\t_ = loginAudit.Create(&audit)\n\tc.JSON(http.StatusOK, gin.H{\n\t\t\"code\":           0,\n\t\t\"token\":          tokenString,\n\t\t\"msg\":            \"登录成功\",\n\t\t\"is_root\":        u.IsRoot,\n\t\t\"is_admin\":       u.IsAdmin,\n\t\t\"user_name\":      u.Name,\n\t\t\"user_desc\":      u.DescInfo,\n\t\t\"user_expiry_at\": u.ExpiryAt.String(),\n\t})\n}\n"
  },
  {
    "path": "gossh/app/utils/crypto.go",
    "content": "package utils\n\nimport (\n\t\"bytes\"\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/rand\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log/slog\"\n\t\"strings\"\n)\n\nfunc AesEncrypt(orig string, key string) (string, error) {\n\torig = strings.TrimSpace(orig)\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"AES加密错误\", \"err_msg\", err)\n\t\t}\n\t}()\n\tif len(orig) == 0 {\n\t\treturn \"\", nil\n\t}\n\tif len(key) != 32 {\n\t\treturn \"\", errors.New(\"加密需要的key长度错误\")\n\t}\n\t// 转成字节数组\n\torigData := []byte(orig)\n\tk := []byte(key)\n\t// 分组秘钥\n\tblock, err := aes.NewCipher(k)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// 获取秘钥块的长度\n\tblockSize := block.BlockSize()\n\t//补码\n\tPKCS7Padding := func(ciphertext []byte, blockSize int) []byte {\n\t\tpadding := blockSize - len(ciphertext)%blockSize\n\t\tpadText := bytes.Repeat([]byte{byte(padding)}, padding)\n\t\treturn append(ciphertext, padText...)\n\t}\n\torigData = PKCS7Padding(origData, blockSize)\n\t// 加密模式\n\tblockMode := cipher.NewCBCEncrypter(block, k[:blockSize])\n\t// 创建数组\n\tcrypt := make([]byte, len(origData))\n\t// 加密\n\tblockMode.CryptBlocks(crypt, origData)\n\treturn base64.StdEncoding.EncodeToString(crypt), nil\n}\n\nfunc AesDecrypt(crypt string, key string) (string, error) {\n\tcrypt = strings.TrimSpace(crypt)\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"AES解密错误\", \"err_msg\", err)\n\t\t}\n\t}()\n\tif len(crypt) == 0 {\n\t\treturn \"\", nil\n\t}\n\tif len(crypt) < 1 || len(key) != 32 {\n\t\treturn \"\", errors.New(\"解密需要的key长度错误\")\n\t}\n\t// 转成字节数组\n\tcryptByte, _ := base64.StdEncoding.DecodeString(crypt)\n\tk := []byte(key)\n\t// 分组秘钥\n\tblock, err := aes.NewCipher(k)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// 获取秘钥块的长度\n\tblockSize := block.BlockSize()\n\t// 加密模式\n\tblockMode := cipher.NewCBCDecrypter(block, k[:blockSize])\n\t// 创建数组\n\torig := make([]byte, len(cryptByte))\n\t// 解密\n\tblockMode.CryptBlocks(orig, cryptByte)\n\t// 去补全码\n\tPKCS7UnPadding := func(origData []byte) []byte {\n\t\tlength := len(origData)\n\t\tunPadding := int(origData[length-1])\n\t\treturn origData[:(length - unPadding)]\n\t}\n\torig = PKCS7UnPadding(orig)\n\treturn string(orig), nil\n}\n\nfunc EncryptString(plaintext, key string) (string, error) {\n\tplaintext = strings.TrimSpace(plaintext)\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"AES加密错误\", \"err_msg\", err)\n\t\t}\n\t}()\n\tif len(plaintext) == 0 {\n\t\treturn \"\", nil\n\t}\n\tif len(key) != 32 {\n\t\treturn \"\", errors.New(\"加密需要的key长度错误\")\n\t}\n\n\t// 创建 cipher\n\tblock, err := aes.NewCipher([]byte(key))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 创建 GCM 模式\n\tgcm, err := cipher.NewGCM(block)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 创建 nonce\n\tnonce := make([]byte, gcm.NonceSize())\n\tif _, err := io.ReadFull(rand.Reader, nonce); err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 加密\n\tciphertext := gcm.Seal(nonce, nonce, []byte(plaintext), nil)\n\n\t// 返回 base64 编码的结果\n\treturn base64.StdEncoding.EncodeToString(ciphertext), nil\n}\n\nfunc DecryptString(encrypted, key string) (string, error) {\n\tencrypted = strings.TrimSpace(encrypted)\n\tdefer func() {\n\t\tif err := recover(); err != nil {\n\t\t\tslog.Error(\"AES解密错误\", \"err_msg\", err)\n\t\t}\n\t}()\n\tif len(encrypted) == 0 {\n\t\treturn \"\", nil\n\t}\n\tif len(encrypted) < 1 || len(key) != 32 {\n\t\treturn \"\", errors.New(\"解密需要的key长度错误\")\n\t}\n\t// 解码 base64\n\tciphertext, err := base64.StdEncoding.DecodeString(encrypted)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 创建 cipher\n\tblock, err := aes.NewCipher([]byte(key))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 创建 GCM 模式\n\tgcm, err := cipher.NewGCM(block)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\t// 提取 nonce\n\tif len(ciphertext) < gcm.NonceSize() {\n\t\treturn \"\", fmt.Errorf(\"ciphertext too short\")\n\t}\n\tnonce, ciphertext := ciphertext[:gcm.NonceSize()], ciphertext[gcm.NonceSize():]\n\n\t// 解密\n\tplaintext, err := gcm.Open(nil, nonce, ciphertext, nil)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn string(plaintext), nil\n}\n"
  },
  {
    "path": "gossh/app/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"math/rand\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// RandString 生成指定长度随机字符串\nfunc RandString(length int) string {\n\tstr := \"0123456789abcdefghijklmnopqrstuvwxyz\"\n\tdata := []byte(str)\n\tvar result []byte\n\tr := rand.New(rand.NewSource(time.Now().UnixNano()))\n\tfor i := 0; i < length; i++ {\n\t\tresult = append(result, data[r.Intn(len(data))])\n\t}\n\treturn string(result)\n}\n\nfunc TruncateString(s string, length int) string {\n\tif utf8.RuneCountInString(s) <= length {\n\t\treturn s\n\t}\n\n\trunes := []rune(s)\n\tif length < 1 {\n\t\treturn \"\"\n\t}\n\treturn string(runes[:length])\n}\n"
  },
  {
    "path": "gossh/crypto/blowfish/block.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\npackage blowfish\n\n// getNextWord returns the next big-endian uint32 value from the byte slice\n// at the given position in a circular manner, updating the position.\nfunc getNextWord(b []byte, pos *int) uint32 {\n\tvar w uint32\n\tj := *pos\n\tfor i := 0; i < 4; i++ {\n\t\tw = w<<8 | uint32(b[j])\n\t\tj++\n\t\tif j >= len(b) {\n\t\t\tj = 0\n\t\t}\n\t}\n\t*pos = j\n\treturn w\n}\n\n// ExpandKey performs a key expansion on the given *Cipher. Specifically, it\n// performs the Blowfish algorithm's key schedule which sets up the *Cipher's\n// pi and substitution tables for calls to Encrypt. This is used, primarily,\n// by the bcrypt package to reuse the Blowfish key schedule during its\n// set up. It's unlikely that you need to use this directly.\nfunc ExpandKey(key []byte, c *Cipher) {\n\tj := 0\n\tfor i := 0; i < 18; i++ {\n\t\t// Using inlined getNextWord for performance.\n\t\tvar d uint32\n\t\tfor k := 0; k < 4; k++ {\n\t\t\td = d<<8 | uint32(key[j])\n\t\t\tj++\n\t\t\tif j >= len(key) {\n\t\t\t\tj = 0\n\t\t\t}\n\t\t}\n\t\tc.p[i] ^= d\n\t}\n\n\tvar l, r uint32\n\tfor i := 0; i < 18; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.p[i], c.p[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s0[i], c.s0[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s1[i], c.s1[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s2[i], c.s2[i+1] = l, r\n\t}\n\tfor i := 0; i < 256; i += 2 {\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s3[i], c.s3[i+1] = l, r\n\t}\n}\n\n// This is similar to ExpandKey, but folds the salt during the key\n// schedule. While ExpandKey is essentially expandKeyWithSalt with an all-zero\n// salt passed in, reusing ExpandKey turns out to be a place of inefficiency\n// and specializing it here is useful.\nfunc expandKeyWithSalt(key []byte, salt []byte, c *Cipher) {\n\tj := 0\n\tfor i := 0; i < 18; i++ {\n\t\tc.p[i] ^= getNextWord(key, &j)\n\t}\n\n\tj = 0\n\tvar l, r uint32\n\tfor i := 0; i < 18; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.p[i], c.p[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s0[i], c.s0[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s1[i], c.s1[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s2[i], c.s2[i+1] = l, r\n\t}\n\n\tfor i := 0; i < 256; i += 2 {\n\t\tl ^= getNextWord(salt, &j)\n\t\tr ^= getNextWord(salt, &j)\n\t\tl, r = encryptBlock(l, r, c)\n\t\tc.s3[i], c.s3[i+1] = l, r\n\t}\n}\n\nfunc encryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {\n\txl, xr := l, r\n\txl ^= c.p[0]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[1]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[2]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[3]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[4]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[5]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[6]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[7]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[8]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[9]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[10]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[11]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[12]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[13]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[14]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[15]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[16]\n\txr ^= c.p[17]\n\treturn xr, xl\n}\n\nfunc decryptBlock(l, r uint32, c *Cipher) (uint32, uint32) {\n\txl, xr := l, r\n\txl ^= c.p[17]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[16]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[15]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[14]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[13]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[12]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[11]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[10]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[9]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[8]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[7]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[6]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[5]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[4]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[3]\n\txr ^= ((c.s0[byte(xl>>24)] + c.s1[byte(xl>>16)]) ^ c.s2[byte(xl>>8)]) + c.s3[byte(xl)] ^ c.p[2]\n\txl ^= ((c.s0[byte(xr>>24)] + c.s1[byte(xr>>16)]) ^ c.s2[byte(xr>>8)]) + c.s3[byte(xr)] ^ c.p[1]\n\txr ^= c.p[0]\n\treturn xr, xl\n}\n"
  },
  {
    "path": "gossh/crypto/blowfish/cipher.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// Package blowfish implements Bruce Schneier's Blowfish encryption algorithm.\n//\n// Blowfish is a legacy cipher and its short block size makes it vulnerable to\n// birthday bound attacks (see https://sweet32.info). It should only be used\n// where compatibility with legacy systems, not security, is the goal.\n//\n// Deprecated: any new system should use AES (from crypto/aes, if necessary in\n// an AEAD mode like crypto/cipher.NewGCM) or XChaCha20-Poly1305 (from\n// golang.org/x/crypto/chacha20poly1305).\npackage blowfish // import \"golang.org/x/crypto/blowfish\"\n\n// The code is a port of Bruce Schneier's C implementation.\n// See https://www.schneier.com/blowfish.html.\n\nimport \"strconv\"\n\n// The Blowfish block size in bytes.\nconst BlockSize = 8\n\n// A Cipher is an instance of Blowfish encryption using a particular key.\ntype Cipher struct {\n\tp              [18]uint32\n\ts0, s1, s2, s3 [256]uint32\n}\n\ntype KeySizeError int\n\nfunc (k KeySizeError) Error() string {\n\treturn \"crypto/blowfish: invalid key size \" + strconv.Itoa(int(k))\n}\n\n// NewCipher creates and returns a Cipher.\n// The key argument should be the Blowfish key, from 1 to 56 bytes.\nfunc NewCipher(key []byte) (*Cipher, error) {\n\tvar result Cipher\n\tif k := len(key); k < 1 || k > 56 {\n\t\treturn nil, KeySizeError(k)\n\t}\n\tinitCipher(&result)\n\tExpandKey(key, &result)\n\treturn &result, nil\n}\n\n// NewSaltedCipher creates a returns a Cipher that folds a salt into its key\n// schedule. For most purposes, NewCipher, instead of NewSaltedCipher, is\n// sufficient and desirable. For bcrypt compatibility, the key can be over 56\n// bytes.\nfunc NewSaltedCipher(key, salt []byte) (*Cipher, error) {\n\tif len(salt) == 0 {\n\t\treturn NewCipher(key)\n\t}\n\tvar result Cipher\n\tif k := len(key); k < 1 {\n\t\treturn nil, KeySizeError(k)\n\t}\n\tinitCipher(&result)\n\texpandKeyWithSalt(key, salt, &result)\n\treturn &result, nil\n}\n\n// BlockSize returns the Blowfish block size, 8 bytes.\n// It is necessary to satisfy the Block interface in the\n// package \"crypto/cipher\".\nfunc (c *Cipher) BlockSize() int { return BlockSize }\n\n// Encrypt encrypts the 8-byte buffer src using the key k\n// and stores the result in dst.\n// Note that for amounts of data larger than a block,\n// it is not safe to just call Encrypt on successive blocks;\n// instead, use an encryption mode like CBC (see crypto/cipher/cbc.go).\nfunc (c *Cipher) Encrypt(dst, src []byte) {\n\tl := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])\n\tr := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])\n\tl, r = encryptBlock(l, r, c)\n\tdst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l)\n\tdst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r)\n}\n\n// Decrypt decrypts the 8-byte buffer src using the key k\n// and stores the result in dst.\nfunc (c *Cipher) Decrypt(dst, src []byte) {\n\tl := uint32(src[0])<<24 | uint32(src[1])<<16 | uint32(src[2])<<8 | uint32(src[3])\n\tr := uint32(src[4])<<24 | uint32(src[5])<<16 | uint32(src[6])<<8 | uint32(src[7])\n\tl, r = decryptBlock(l, r, c)\n\tdst[0], dst[1], dst[2], dst[3] = byte(l>>24), byte(l>>16), byte(l>>8), byte(l)\n\tdst[4], dst[5], dst[6], dst[7] = byte(r>>24), byte(r>>16), byte(r>>8), byte(r)\n}\n\nfunc initCipher(c *Cipher) {\n\tcopy(c.p[0:], p[0:])\n\tcopy(c.s0[0:], s0[0:])\n\tcopy(c.s1[0:], s1[0:])\n\tcopy(c.s2[0:], s2[0:])\n\tcopy(c.s3[0:], s3[0:])\n}\n"
  },
  {
    "path": "gossh/crypto/blowfish/const.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// The startup permutation array and substitution boxes.\n// They are the hexadecimal digits of PI; see:\n// https://www.schneier.com/code/constants.txt.\n\npackage blowfish\n\nvar s0 = [256]uint32{\n\t0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,\n\t0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,\n\t0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,\n\t0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,\n\t0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,\n\t0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,\n\t0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,\n\t0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,\n\t0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,\n\t0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,\n\t0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,\n\t0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,\n\t0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,\n\t0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,\n\t0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,\n\t0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,\n\t0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,\n\t0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,\n\t0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,\n\t0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,\n\t0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,\n\t0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,\n\t0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,\n\t0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,\n\t0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,\n\t0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,\n\t0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,\n\t0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,\n\t0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,\n\t0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,\n\t0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,\n\t0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,\n\t0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,\n\t0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,\n\t0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,\n\t0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,\n\t0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,\n\t0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,\n\t0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,\n\t0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,\n\t0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,\n\t0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,\n\t0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,\n}\n\nvar s1 = [256]uint32{\n\t0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,\n\t0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n\t0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,\n\t0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n\t0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,\n\t0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n\t0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,\n\t0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n\t0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\n\t0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n\t0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,\n\t0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n\t0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,\n\t0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n\t0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,\n\t0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n\t0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,\n\t0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n\t0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\n\t0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n\t0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,\n\t0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n\t0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,\n\t0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n\t0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,\n\t0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n\t0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,\n\t0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n\t0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\n\t0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n\t0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,\n\t0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n\t0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,\n\t0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n\t0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,\n\t0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n\t0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,\n\t0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n\t0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\n\t0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n\t0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,\n\t0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n\t0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7,\n}\n\nvar s2 = [256]uint32{\n\t0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7,\n\t0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,\n\t0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,\n\t0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,\n\t0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,\n\t0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,\n\t0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec,\n\t0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,\n\t0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,\n\t0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,\n\t0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58,\n\t0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,\n\t0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,\n\t0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,\n\t0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60,\n\t0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,\n\t0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,\n\t0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,\n\t0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74,\n\t0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,\n\t0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3,\n\t0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,\n\t0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,\n\t0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,\n\t0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa,\n\t0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,\n\t0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086,\n\t0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,\n\t0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24,\n\t0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,\n\t0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84,\n\t0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,\n\t0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,\n\t0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,\n\t0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe,\n\t0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,\n\t0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0,\n\t0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,\n\t0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188,\n\t0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,\n\t0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8,\n\t0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,\n\t0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0,\n}\n\nvar s3 = [256]uint32{\n\t0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,\n\t0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,\n\t0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,\n\t0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,\n\t0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,\n\t0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,\n\t0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,\n\t0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,\n\t0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,\n\t0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,\n\t0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,\n\t0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,\n\t0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,\n\t0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,\n\t0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,\n\t0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,\n\t0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,\n\t0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,\n\t0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,\n\t0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,\n\t0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,\n\t0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,\n\t0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,\n\t0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,\n\t0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,\n\t0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,\n\t0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,\n\t0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,\n\t0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,\n\t0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,\n\t0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,\n\t0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,\n\t0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,\n\t0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,\n\t0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,\n\t0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,\n\t0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,\n\t0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,\n\t0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,\n\t0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,\n\t0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,\n\t0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,\n\t0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6,\n}\n\nvar p = [18]uint32{\n\t0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,\n\t0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,\n\t0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b,\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20\n\nconst bufSize = 256\n\n//go:noescape\nfunc xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\txorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter)\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_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//go:build gc && !purego\n\n#include \"textflag.h\"\n\n#define NUM_ROUNDS 10\n\n// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\nTEXT ·xorKeyStreamVX(SB), NOSPLIT, $0\n\tMOVD\tdst+0(FP), R1\n\tMOVD\tsrc+24(FP), R2\n\tMOVD\tsrc_len+32(FP), R3\n\tMOVD\tkey+48(FP), R4\n\tMOVD\tnonce+56(FP), R6\n\tMOVD\tcounter+64(FP), R7\n\n\tMOVD\t$·constants(SB), R10\n\tMOVD\t$·incRotMatrix(SB), R11\n\n\tMOVW\t(R7), R20\n\n\tAND\t$~255, R3, R13\n\tADD\tR2, R13, R12 // R12 for block end\n\tAND\t$255, R3, R13\nloop:\n\tMOVD\t$NUM_ROUNDS, R21\n\tVLD1\t(R11), [V30.S4, V31.S4]\n\n\t// load contants\n\t// VLD4R (R10), [V0.S4, V1.S4, V2.S4, V3.S4]\n\tWORD\t$0x4D60E940\n\n\t// load keys\n\t// VLD4R 16(R4), [V4.S4, V5.S4, V6.S4, V7.S4]\n\tWORD\t$0x4DFFE884\n\t// VLD4R 16(R4), [V8.S4, V9.S4, V10.S4, V11.S4]\n\tWORD\t$0x4DFFE888\n\tSUB\t$32, R4\n\n\t// load counter + nonce\n\t// VLD1R (R7), [V12.S4]\n\tWORD\t$0x4D40C8EC\n\n\t// VLD3R (R6), [V13.S4, V14.S4, V15.S4]\n\tWORD\t$0x4D40E8CD\n\n\t// update counter\n\tVADD\tV30.S4, V12.S4, V12.S4\n\nchacha:\n\t// V0..V3 += V4..V7\n\t// V12..V15 <<<= ((V12..V15 XOR V0..V3), 16)\n\tVADD\tV0.S4, V4.S4, V0.S4\n\tVADD\tV1.S4, V5.S4, V1.S4\n\tVADD\tV2.S4, V6.S4, V2.S4\n\tVADD\tV3.S4, V7.S4, V3.S4\n\tVEOR\tV12.B16, V0.B16, V12.B16\n\tVEOR\tV13.B16, V1.B16, V13.B16\n\tVEOR\tV14.B16, V2.B16, V14.B16\n\tVEOR\tV15.B16, V3.B16, V15.B16\n\tVREV32\tV12.H8, V12.H8\n\tVREV32\tV13.H8, V13.H8\n\tVREV32\tV14.H8, V14.H8\n\tVREV32\tV15.H8, V15.H8\n\t// V8..V11 += V12..V15\n\t// V4..V7 <<<= ((V4..V7 XOR V8..V11), 12)\n\tVADD\tV8.S4, V12.S4, V8.S4\n\tVADD\tV9.S4, V13.S4, V9.S4\n\tVADD\tV10.S4, V14.S4, V10.S4\n\tVADD\tV11.S4, V15.S4, V11.S4\n\tVEOR\tV8.B16, V4.B16, V16.B16\n\tVEOR\tV9.B16, V5.B16, V17.B16\n\tVEOR\tV10.B16, V6.B16, V18.B16\n\tVEOR\tV11.B16, V7.B16, V19.B16\n\tVSHL\t$12, V16.S4, V4.S4\n\tVSHL\t$12, V17.S4, V5.S4\n\tVSHL\t$12, V18.S4, V6.S4\n\tVSHL\t$12, V19.S4, V7.S4\n\tVSRI\t$20, V16.S4, V4.S4\n\tVSRI\t$20, V17.S4, V5.S4\n\tVSRI\t$20, V18.S4, V6.S4\n\tVSRI\t$20, V19.S4, V7.S4\n\n\t// V0..V3 += V4..V7\n\t// V12..V15 <<<= ((V12..V15 XOR V0..V3), 8)\n\tVADD\tV0.S4, V4.S4, V0.S4\n\tVADD\tV1.S4, V5.S4, V1.S4\n\tVADD\tV2.S4, V6.S4, V2.S4\n\tVADD\tV3.S4, V7.S4, V3.S4\n\tVEOR\tV12.B16, V0.B16, V12.B16\n\tVEOR\tV13.B16, V1.B16, V13.B16\n\tVEOR\tV14.B16, V2.B16, V14.B16\n\tVEOR\tV15.B16, V3.B16, V15.B16\n\tVTBL\tV31.B16, [V12.B16], V12.B16\n\tVTBL\tV31.B16, [V13.B16], V13.B16\n\tVTBL\tV31.B16, [V14.B16], V14.B16\n\tVTBL\tV31.B16, [V15.B16], V15.B16\n\n\t// V8..V11 += V12..V15\n\t// V4..V7 <<<= ((V4..V7 XOR V8..V11), 7)\n\tVADD\tV12.S4, V8.S4, V8.S4\n\tVADD\tV13.S4, V9.S4, V9.S4\n\tVADD\tV14.S4, V10.S4, V10.S4\n\tVADD\tV15.S4, V11.S4, V11.S4\n\tVEOR\tV8.B16, V4.B16, V16.B16\n\tVEOR\tV9.B16, V5.B16, V17.B16\n\tVEOR\tV10.B16, V6.B16, V18.B16\n\tVEOR\tV11.B16, V7.B16, V19.B16\n\tVSHL\t$7, V16.S4, V4.S4\n\tVSHL\t$7, V17.S4, V5.S4\n\tVSHL\t$7, V18.S4, V6.S4\n\tVSHL\t$7, V19.S4, V7.S4\n\tVSRI\t$25, V16.S4, V4.S4\n\tVSRI\t$25, V17.S4, V5.S4\n\tVSRI\t$25, V18.S4, V6.S4\n\tVSRI\t$25, V19.S4, V7.S4\n\n\t// V0..V3 += V5..V7, V4\n\t// V15,V12-V14 <<<= ((V15,V12-V14 XOR V0..V3), 16)\n\tVADD\tV0.S4, V5.S4, V0.S4\n\tVADD\tV1.S4, V6.S4, V1.S4\n\tVADD\tV2.S4, V7.S4, V2.S4\n\tVADD\tV3.S4, V4.S4, V3.S4\n\tVEOR\tV15.B16, V0.B16, V15.B16\n\tVEOR\tV12.B16, V1.B16, V12.B16\n\tVEOR\tV13.B16, V2.B16, V13.B16\n\tVEOR\tV14.B16, V3.B16, V14.B16\n\tVREV32\tV12.H8, V12.H8\n\tVREV32\tV13.H8, V13.H8\n\tVREV32\tV14.H8, V14.H8\n\tVREV32\tV15.H8, V15.H8\n\n\t// V10 += V15; V5 <<<= ((V10 XOR V5), 12)\n\t// ...\n\tVADD\tV15.S4, V10.S4, V10.S4\n\tVADD\tV12.S4, V11.S4, V11.S4\n\tVADD\tV13.S4, V8.S4, V8.S4\n\tVADD\tV14.S4, V9.S4, V9.S4\n\tVEOR\tV10.B16, V5.B16, V16.B16\n\tVEOR\tV11.B16, V6.B16, V17.B16\n\tVEOR\tV8.B16, V7.B16, V18.B16\n\tVEOR\tV9.B16, V4.B16, V19.B16\n\tVSHL\t$12, V16.S4, V5.S4\n\tVSHL\t$12, V17.S4, V6.S4\n\tVSHL\t$12, V18.S4, V7.S4\n\tVSHL\t$12, V19.S4, V4.S4\n\tVSRI\t$20, V16.S4, V5.S4\n\tVSRI\t$20, V17.S4, V6.S4\n\tVSRI\t$20, V18.S4, V7.S4\n\tVSRI\t$20, V19.S4, V4.S4\n\n\t// V0 += V5; V15 <<<= ((V0 XOR V15), 8)\n\t// ...\n\tVADD\tV5.S4, V0.S4, V0.S4\n\tVADD\tV6.S4, V1.S4, V1.S4\n\tVADD\tV7.S4, V2.S4, V2.S4\n\tVADD\tV4.S4, V3.S4, V3.S4\n\tVEOR\tV0.B16, V15.B16, V15.B16\n\tVEOR\tV1.B16, V12.B16, V12.B16\n\tVEOR\tV2.B16, V13.B16, V13.B16\n\tVEOR\tV3.B16, V14.B16, V14.B16\n\tVTBL\tV31.B16, [V12.B16], V12.B16\n\tVTBL\tV31.B16, [V13.B16], V13.B16\n\tVTBL\tV31.B16, [V14.B16], V14.B16\n\tVTBL\tV31.B16, [V15.B16], V15.B16\n\n\t// V10 += V15; V5 <<<= ((V10 XOR V5), 7)\n\t// ...\n\tVADD\tV15.S4, V10.S4, V10.S4\n\tVADD\tV12.S4, V11.S4, V11.S4\n\tVADD\tV13.S4, V8.S4, V8.S4\n\tVADD\tV14.S4, V9.S4, V9.S4\n\tVEOR\tV10.B16, V5.B16, V16.B16\n\tVEOR\tV11.B16, V6.B16, V17.B16\n\tVEOR\tV8.B16, V7.B16, V18.B16\n\tVEOR\tV9.B16, V4.B16, V19.B16\n\tVSHL\t$7, V16.S4, V5.S4\n\tVSHL\t$7, V17.S4, V6.S4\n\tVSHL\t$7, V18.S4, V7.S4\n\tVSHL\t$7, V19.S4, V4.S4\n\tVSRI\t$25, V16.S4, V5.S4\n\tVSRI\t$25, V17.S4, V6.S4\n\tVSRI\t$25, V18.S4, V7.S4\n\tVSRI\t$25, V19.S4, V4.S4\n\n\tSUB\t$1, R21\n\tCBNZ\tR21, chacha\n\n\t// VLD4R (R10), [V16.S4, V17.S4, V18.S4, V19.S4]\n\tWORD\t$0x4D60E950\n\n\t// VLD4R 16(R4), [V20.S4, V21.S4, V22.S4, V23.S4]\n\tWORD\t$0x4DFFE894\n\tVADD\tV30.S4, V12.S4, V12.S4\n\tVADD\tV16.S4, V0.S4, V0.S4\n\tVADD\tV17.S4, V1.S4, V1.S4\n\tVADD\tV18.S4, V2.S4, V2.S4\n\tVADD\tV19.S4, V3.S4, V3.S4\n\t// VLD4R 16(R4), [V24.S4, V25.S4, V26.S4, V27.S4]\n\tWORD\t$0x4DFFE898\n\t// restore R4\n\tSUB\t$32, R4\n\n\t// load counter + nonce\n\t// VLD1R (R7), [V28.S4]\n\tWORD\t$0x4D40C8FC\n\t// VLD3R (R6), [V29.S4, V30.S4, V31.S4]\n\tWORD\t$0x4D40E8DD\n\n\tVADD\tV20.S4, V4.S4, V4.S4\n\tVADD\tV21.S4, V5.S4, V5.S4\n\tVADD\tV22.S4, V6.S4, V6.S4\n\tVADD\tV23.S4, V7.S4, V7.S4\n\tVADD\tV24.S4, V8.S4, V8.S4\n\tVADD\tV25.S4, V9.S4, V9.S4\n\tVADD\tV26.S4, V10.S4, V10.S4\n\tVADD\tV27.S4, V11.S4, V11.S4\n\tVADD\tV28.S4, V12.S4, V12.S4\n\tVADD\tV29.S4, V13.S4, V13.S4\n\tVADD\tV30.S4, V14.S4, V14.S4\n\tVADD\tV31.S4, V15.S4, V15.S4\n\n\tVZIP1\tV1.S4, V0.S4, V16.S4\n\tVZIP2\tV1.S4, V0.S4, V17.S4\n\tVZIP1\tV3.S4, V2.S4, V18.S4\n\tVZIP2\tV3.S4, V2.S4, V19.S4\n\tVZIP1\tV5.S4, V4.S4, V20.S4\n\tVZIP2\tV5.S4, V4.S4, V21.S4\n\tVZIP1\tV7.S4, V6.S4, V22.S4\n\tVZIP2\tV7.S4, V6.S4, V23.S4\n\tVZIP1\tV9.S4, V8.S4, V24.S4\n\tVZIP2\tV9.S4, V8.S4, V25.S4\n\tVZIP1\tV11.S4, V10.S4, V26.S4\n\tVZIP2\tV11.S4, V10.S4, V27.S4\n\tVZIP1\tV13.S4, V12.S4, V28.S4\n\tVZIP2\tV13.S4, V12.S4, V29.S4\n\tVZIP1\tV15.S4, V14.S4, V30.S4\n\tVZIP2\tV15.S4, V14.S4, V31.S4\n\tVZIP1\tV18.D2, V16.D2, V0.D2\n\tVZIP2\tV18.D2, V16.D2, V4.D2\n\tVZIP1\tV19.D2, V17.D2, V8.D2\n\tVZIP2\tV19.D2, V17.D2, V12.D2\n\tVLD1.P\t64(R2), [V16.B16, V17.B16, V18.B16, V19.B16]\n\n\tVZIP1\tV22.D2, V20.D2, V1.D2\n\tVZIP2\tV22.D2, V20.D2, V5.D2\n\tVZIP1\tV23.D2, V21.D2, V9.D2\n\tVZIP2\tV23.D2, V21.D2, V13.D2\n\tVLD1.P\t64(R2), [V20.B16, V21.B16, V22.B16, V23.B16]\n\tVZIP1\tV26.D2, V24.D2, V2.D2\n\tVZIP2\tV26.D2, V24.D2, V6.D2\n\tVZIP1\tV27.D2, V25.D2, V10.D2\n\tVZIP2\tV27.D2, V25.D2, V14.D2\n\tVLD1.P\t64(R2), [V24.B16, V25.B16, V26.B16, V27.B16]\n\tVZIP1\tV30.D2, V28.D2, V3.D2\n\tVZIP2\tV30.D2, V28.D2, V7.D2\n\tVZIP1\tV31.D2, V29.D2, V11.D2\n\tVZIP2\tV31.D2, V29.D2, V15.D2\n\tVLD1.P\t64(R2), [V28.B16, V29.B16, V30.B16, V31.B16]\n\tVEOR\tV0.B16, V16.B16, V16.B16\n\tVEOR\tV1.B16, V17.B16, V17.B16\n\tVEOR\tV2.B16, V18.B16, V18.B16\n\tVEOR\tV3.B16, V19.B16, V19.B16\n\tVST1.P\t[V16.B16, V17.B16, V18.B16, V19.B16], 64(R1)\n\tVEOR\tV4.B16, V20.B16, V20.B16\n\tVEOR\tV5.B16, V21.B16, V21.B16\n\tVEOR\tV6.B16, V22.B16, V22.B16\n\tVEOR\tV7.B16, V23.B16, V23.B16\n\tVST1.P\t[V20.B16, V21.B16, V22.B16, V23.B16], 64(R1)\n\tVEOR\tV8.B16, V24.B16, V24.B16\n\tVEOR\tV9.B16, V25.B16, V25.B16\n\tVEOR\tV10.B16, V26.B16, V26.B16\n\tVEOR\tV11.B16, V27.B16, V27.B16\n\tVST1.P\t[V24.B16, V25.B16, V26.B16, V27.B16], 64(R1)\n\tVEOR\tV12.B16, V28.B16, V28.B16\n\tVEOR\tV13.B16, V29.B16, V29.B16\n\tVEOR\tV14.B16, V30.B16, V30.B16\n\tVEOR\tV15.B16, V31.B16, V31.B16\n\tVST1.P\t[V28.B16, V29.B16, V30.B16, V31.B16], 64(R1)\n\n\tADD\t$4, R20\n\tMOVW\tR20, (R7) // update counter\n\n\tCMP\tR2, R12\n\tBGT\tloop\n\n\tRET\n\n\nDATA\t·constants+0x00(SB)/4, $0x61707865\nDATA\t·constants+0x04(SB)/4, $0x3320646e\nDATA\t·constants+0x08(SB)/4, $0x79622d32\nDATA\t·constants+0x0c(SB)/4, $0x6b206574\nGLOBL\t·constants(SB), NOPTR|RODATA, $32\n\nDATA\t·incRotMatrix+0x00(SB)/4, $0x00000000\nDATA\t·incRotMatrix+0x04(SB)/4, $0x00000001\nDATA\t·incRotMatrix+0x08(SB)/4, $0x00000002\nDATA\t·incRotMatrix+0x0c(SB)/4, $0x00000003\nDATA\t·incRotMatrix+0x10(SB)/4, $0x02010003\nDATA\t·incRotMatrix+0x14(SB)/4, $0x06050407\nDATA\t·incRotMatrix+0x18(SB)/4, $0x0A09080B\nDATA\t·incRotMatrix+0x1c(SB)/4, $0x0E0D0C0F\nGLOBL\t·incRotMatrix(SB), NOPTR|RODATA, $32\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_generic.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package chacha20 implements the ChaCha20 and XChaCha20 encryption algorithms\n// as specified in RFC 8439 and draft-irtf-cfrg-xchacha-01.\npackage chacha20\n\nimport (\n\t\"crypto/cipher\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"math/bits\"\n\n\t\"gossh/crypto/internal/alias\"\n)\n\nconst (\n\t// KeySize is the size of the key used by this cipher, in bytes.\n\tKeySize = 32\n\n\t// NonceSize is the size of the nonce used with the standard variant of this\n\t// cipher, in bytes.\n\t//\n\t// Note that this is too short to be safely generated at random if the same\n\t// key is reused more than 2³² times.\n\tNonceSize = 12\n\n\t// NonceSizeX is the size of the nonce used with the XChaCha20 variant of\n\t// this cipher, in bytes.\n\tNonceSizeX = 24\n)\n\n// Cipher is a stateful instance of ChaCha20 or XChaCha20 using a particular key\n// and nonce. A *Cipher implements the cipher.Stream interface.\ntype Cipher struct {\n\t// The ChaCha20 state is 16 words: 4 constant, 8 of key, 1 of counter\n\t// (incremented after each block), and 3 of nonce.\n\tkey     [8]uint32\n\tcounter uint32\n\tnonce   [3]uint32\n\n\t// The last len bytes of buf are leftover key stream bytes from the previous\n\t// XORKeyStream invocation. The size of buf depends on how many blocks are\n\t// computed at a time by xorKeyStreamBlocks.\n\tbuf [bufSize]byte\n\tlen int\n\n\t// overflow is set when the counter overflowed, no more blocks can be\n\t// generated, and the next XORKeyStream call should panic.\n\toverflow bool\n\n\t// The counter-independent results of the first round are cached after they\n\t// are computed the first time.\n\tprecompDone      bool\n\tp1, p5, p9, p13  uint32\n\tp2, p6, p10, p14 uint32\n\tp3, p7, p11, p15 uint32\n}\n\nvar _ cipher.Stream = (*Cipher)(nil)\n\n// NewUnauthenticatedCipher creates a new ChaCha20 stream cipher with the given\n// 32 bytes key and a 12 or 24 bytes nonce. If a nonce of 24 bytes is provided,\n// the XChaCha20 construction will be used. It returns an error if key or nonce\n// have any other length.\n//\n// Note that ChaCha20, like all stream ciphers, is not authenticated and allows\n// attackers to silently tamper with the plaintext. For this reason, it is more\n// appropriate as a building block than as a standalone encryption mechanism.\n// Instead, consider using package golang.org/x/crypto/chacha20poly1305.\nfunc NewUnauthenticatedCipher(key, nonce []byte) (*Cipher, error) {\n\t// This function is split into a wrapper so that the Cipher allocation will\n\t// be inlined, and depending on how the caller uses the return value, won't\n\t// escape to the heap.\n\tc := &Cipher{}\n\treturn newUnauthenticatedCipher(c, key, nonce)\n}\n\nfunc newUnauthenticatedCipher(c *Cipher, key, nonce []byte) (*Cipher, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20: wrong key size\")\n\t}\n\tif len(nonce) == NonceSizeX {\n\t\t// XChaCha20 uses the ChaCha20 core to mix 16 bytes of the nonce into a\n\t\t// derived key, allowing it to operate on a nonce of 24 bytes. See\n\t\t// draft-irtf-cfrg-xchacha-01, Section 2.3.\n\t\tkey, _ = HChaCha20(key, nonce[0:16])\n\t\tcNonce := make([]byte, NonceSize)\n\t\tcopy(cNonce[4:12], nonce[16:24])\n\t\tnonce = cNonce\n\t} else if len(nonce) != NonceSize {\n\t\treturn nil, errors.New(\"chacha20: wrong nonce size\")\n\t}\n\n\tkey, nonce = key[:KeySize], nonce[:NonceSize] // bounds check elimination hint\n\tc.key = [8]uint32{\n\t\tbinary.LittleEndian.Uint32(key[0:4]),\n\t\tbinary.LittleEndian.Uint32(key[4:8]),\n\t\tbinary.LittleEndian.Uint32(key[8:12]),\n\t\tbinary.LittleEndian.Uint32(key[12:16]),\n\t\tbinary.LittleEndian.Uint32(key[16:20]),\n\t\tbinary.LittleEndian.Uint32(key[20:24]),\n\t\tbinary.LittleEndian.Uint32(key[24:28]),\n\t\tbinary.LittleEndian.Uint32(key[28:32]),\n\t}\n\tc.nonce = [3]uint32{\n\t\tbinary.LittleEndian.Uint32(nonce[0:4]),\n\t\tbinary.LittleEndian.Uint32(nonce[4:8]),\n\t\tbinary.LittleEndian.Uint32(nonce[8:12]),\n\t}\n\treturn c, nil\n}\n\n// The constant first 4 words of the ChaCha20 state.\nconst (\n\tj0 uint32 = 0x61707865 // expa\n\tj1 uint32 = 0x3320646e // nd 3\n\tj2 uint32 = 0x79622d32 // 2-by\n\tj3 uint32 = 0x6b206574 // te k\n)\n\nconst blockSize = 64\n\n// quarterRound is the core of ChaCha20. It shuffles the bits of 4 state words.\n// It's executed 4 times for each of the 20 ChaCha20 rounds, operating on all 16\n// words each round, in columnar or diagonal groups of 4 at a time.\nfunc quarterRound(a, b, c, d uint32) (uint32, uint32, uint32, uint32) {\n\ta += b\n\td ^= a\n\td = bits.RotateLeft32(d, 16)\n\tc += d\n\tb ^= c\n\tb = bits.RotateLeft32(b, 12)\n\ta += b\n\td ^= a\n\td = bits.RotateLeft32(d, 8)\n\tc += d\n\tb ^= c\n\tb = bits.RotateLeft32(b, 7)\n\treturn a, b, c, d\n}\n\n// SetCounter sets the Cipher counter. The next invocation of XORKeyStream will\n// behave as if (64 * counter) bytes had been encrypted so far.\n//\n// To prevent accidental counter reuse, SetCounter panics if counter is less\n// than the current value.\n//\n// Note that the execution time of XORKeyStream is not independent of the\n// counter value.\nfunc (s *Cipher) SetCounter(counter uint32) {\n\t// Internally, s may buffer multiple blocks, which complicates this\n\t// implementation slightly. When checking whether the counter has rolled\n\t// back, we must use both s.counter and s.len to determine how many blocks\n\t// we have already output.\n\toutputCounter := s.counter - uint32(s.len)/blockSize\n\tif s.overflow || counter < outputCounter {\n\t\tpanic(\"chacha20: SetCounter attempted to rollback counter\")\n\t}\n\n\t// In the general case, we set the new counter value and reset s.len to 0,\n\t// causing the next call to XORKeyStream to refill the buffer. However, if\n\t// we're advancing within the existing buffer, we can save work by simply\n\t// setting s.len.\n\tif counter < s.counter {\n\t\ts.len = int(s.counter-counter) * blockSize\n\t} else {\n\t\ts.counter = counter\n\t\ts.len = 0\n\t}\n}\n\n// XORKeyStream XORs each byte in the given slice with a byte from the\n// cipher's key stream. Dst and src must overlap entirely or not at all.\n//\n// If len(dst) < len(src), XORKeyStream will panic. It is acceptable\n// to pass a dst bigger than src, and in that case, XORKeyStream will\n// only update dst[:len(src)] and will not touch the rest of dst.\n//\n// Multiple calls to XORKeyStream behave as if the concatenation of\n// the src buffers was passed in a single run. That is, Cipher\n// maintains state and does not reset at each XORKeyStream call.\nfunc (s *Cipher) XORKeyStream(dst, src []byte) {\n\tif len(src) == 0 {\n\t\treturn\n\t}\n\tif len(dst) < len(src) {\n\t\tpanic(\"chacha20: output smaller than input\")\n\t}\n\tdst = dst[:len(src)]\n\tif alias.InexactOverlap(dst, src) {\n\t\tpanic(\"chacha20: invalid buffer overlap\")\n\t}\n\n\t// First, drain any remaining key stream from a previous XORKeyStream.\n\tif s.len != 0 {\n\t\tkeyStream := s.buf[bufSize-s.len:]\n\t\tif len(src) < len(keyStream) {\n\t\t\tkeyStream = keyStream[:len(src)]\n\t\t}\n\t\t_ = src[len(keyStream)-1] // bounds check elimination hint\n\t\tfor i, b := range keyStream {\n\t\t\tdst[i] = src[i] ^ b\n\t\t}\n\t\ts.len -= len(keyStream)\n\t\tdst, src = dst[len(keyStream):], src[len(keyStream):]\n\t}\n\tif len(src) == 0 {\n\t\treturn\n\t}\n\n\t// If we'd need to let the counter overflow and keep generating output,\n\t// panic immediately. If instead we'd only reach the last block, remember\n\t// not to generate any more output after the buffer is drained.\n\tnumBlocks := (uint64(len(src)) + blockSize - 1) / blockSize\n\tif s.overflow || uint64(s.counter)+numBlocks > 1<<32 {\n\t\tpanic(\"chacha20: counter overflow\")\n\t} else if uint64(s.counter)+numBlocks == 1<<32 {\n\t\ts.overflow = true\n\t}\n\n\t// xorKeyStreamBlocks implementations expect input lengths that are a\n\t// multiple of bufSize. Platform-specific ones process multiple blocks at a\n\t// time, so have bufSizes that are a multiple of blockSize.\n\n\tfull := len(src) - len(src)%bufSize\n\tif full > 0 {\n\t\ts.xorKeyStreamBlocks(dst[:full], src[:full])\n\t}\n\tdst, src = dst[full:], src[full:]\n\n\t// If using a multi-block xorKeyStreamBlocks would overflow, use the generic\n\t// one that does one block at a time.\n\tconst blocksPerBuf = bufSize / blockSize\n\tif uint64(s.counter)+blocksPerBuf > 1<<32 {\n\t\ts.buf = [bufSize]byte{}\n\t\tnumBlocks := (len(src) + blockSize - 1) / blockSize\n\t\tbuf := s.buf[bufSize-numBlocks*blockSize:]\n\t\tcopy(buf, src)\n\t\ts.xorKeyStreamBlocksGeneric(buf, buf)\n\t\ts.len = len(buf) - copy(dst, buf)\n\t\treturn\n\t}\n\n\t// If we have a partial (multi-)block, pad it for xorKeyStreamBlocks, and\n\t// keep the leftover keystream for the next XORKeyStream invocation.\n\tif len(src) > 0 {\n\t\ts.buf = [bufSize]byte{}\n\t\tcopy(s.buf[:], src)\n\t\ts.xorKeyStreamBlocks(s.buf[:], s.buf[:])\n\t\ts.len = bufSize - copy(dst, s.buf[:])\n\t}\n}\n\nfunc (s *Cipher) xorKeyStreamBlocksGeneric(dst, src []byte) {\n\tif len(dst) != len(src) || len(dst)%blockSize != 0 {\n\t\tpanic(\"chacha20: internal error: wrong dst and/or src length\")\n\t}\n\n\t// To generate each block of key stream, the initial cipher state\n\t// (represented below) is passed through 20 rounds of shuffling,\n\t// alternatively applying quarterRounds by columns (like 1, 5, 9, 13)\n\t// or by diagonals (like 1, 6, 11, 12).\n\t//\n\t//      0:cccccccc   1:cccccccc   2:cccccccc   3:cccccccc\n\t//      4:kkkkkkkk   5:kkkkkkkk   6:kkkkkkkk   7:kkkkkkkk\n\t//      8:kkkkkkkk   9:kkkkkkkk  10:kkkkkkkk  11:kkkkkkkk\n\t//     12:bbbbbbbb  13:nnnnnnnn  14:nnnnnnnn  15:nnnnnnnn\n\t//\n\t//            c=constant k=key b=blockcount n=nonce\n\tvar (\n\t\tc0, c1, c2, c3   = j0, j1, j2, j3\n\t\tc4, c5, c6, c7   = s.key[0], s.key[1], s.key[2], s.key[3]\n\t\tc8, c9, c10, c11 = s.key[4], s.key[5], s.key[6], s.key[7]\n\t\t_, c13, c14, c15 = s.counter, s.nonce[0], s.nonce[1], s.nonce[2]\n\t)\n\n\t// Three quarters of the first round don't depend on the counter, so we can\n\t// calculate them here, and reuse them for multiple blocks in the loop, and\n\t// for future XORKeyStream invocations.\n\tif !s.precompDone {\n\t\ts.p1, s.p5, s.p9, s.p13 = quarterRound(c1, c5, c9, c13)\n\t\ts.p2, s.p6, s.p10, s.p14 = quarterRound(c2, c6, c10, c14)\n\t\ts.p3, s.p7, s.p11, s.p15 = quarterRound(c3, c7, c11, c15)\n\t\ts.precompDone = true\n\t}\n\n\t// A condition of len(src) > 0 would be sufficient, but this also\n\t// acts as a bounds check elimination hint.\n\tfor len(src) >= 64 && len(dst) >= 64 {\n\t\t// The remainder of the first column round.\n\t\tfcr0, fcr4, fcr8, fcr12 := quarterRound(c0, c4, c8, s.counter)\n\n\t\t// The second diagonal round.\n\t\tx0, x5, x10, x15 := quarterRound(fcr0, s.p5, s.p10, s.p15)\n\t\tx1, x6, x11, x12 := quarterRound(s.p1, s.p6, s.p11, fcr12)\n\t\tx2, x7, x8, x13 := quarterRound(s.p2, s.p7, fcr8, s.p13)\n\t\tx3, x4, x9, x14 := quarterRound(s.p3, fcr4, s.p9, s.p14)\n\n\t\t// The remaining 18 rounds.\n\t\tfor i := 0; i < 9; i++ {\n\t\t\t// Column round.\n\t\t\tx0, x4, x8, x12 = quarterRound(x0, x4, x8, x12)\n\t\t\tx1, x5, x9, x13 = quarterRound(x1, x5, x9, x13)\n\t\t\tx2, x6, x10, x14 = quarterRound(x2, x6, x10, x14)\n\t\t\tx3, x7, x11, x15 = quarterRound(x3, x7, x11, x15)\n\n\t\t\t// Diagonal round.\n\t\t\tx0, x5, x10, x15 = quarterRound(x0, x5, x10, x15)\n\t\t\tx1, x6, x11, x12 = quarterRound(x1, x6, x11, x12)\n\t\t\tx2, x7, x8, x13 = quarterRound(x2, x7, x8, x13)\n\t\t\tx3, x4, x9, x14 = quarterRound(x3, x4, x9, x14)\n\t\t}\n\n\t\t// Add back the initial state to generate the key stream, then\n\t\t// XOR the key stream with the source and write out the result.\n\t\taddXor(dst[0:4], src[0:4], x0, c0)\n\t\taddXor(dst[4:8], src[4:8], x1, c1)\n\t\taddXor(dst[8:12], src[8:12], x2, c2)\n\t\taddXor(dst[12:16], src[12:16], x3, c3)\n\t\taddXor(dst[16:20], src[16:20], x4, c4)\n\t\taddXor(dst[20:24], src[20:24], x5, c5)\n\t\taddXor(dst[24:28], src[24:28], x6, c6)\n\t\taddXor(dst[28:32], src[28:32], x7, c7)\n\t\taddXor(dst[32:36], src[32:36], x8, c8)\n\t\taddXor(dst[36:40], src[36:40], x9, c9)\n\t\taddXor(dst[40:44], src[40:44], x10, c10)\n\t\taddXor(dst[44:48], src[44:48], x11, c11)\n\t\taddXor(dst[48:52], src[48:52], x12, s.counter)\n\t\taddXor(dst[52:56], src[52:56], x13, c13)\n\t\taddXor(dst[56:60], src[56:60], x14, c14)\n\t\taddXor(dst[60:64], src[60:64], x15, c15)\n\n\t\ts.counter += 1\n\n\t\tsrc, dst = src[blockSize:], dst[blockSize:]\n\t}\n}\n\n// HChaCha20 uses the ChaCha20 core to generate a derived key from a 32 bytes\n// key and a 16 bytes nonce. It returns an error if key or nonce have any other\n// length. It is used as part of the XChaCha20 construction.\nfunc HChaCha20(key, nonce []byte) ([]byte, error) {\n\t// This function is split into a wrapper so that the slice allocation will\n\t// be inlined, and depending on how the caller uses the return value, won't\n\t// escape to the heap.\n\tout := make([]byte, 32)\n\treturn hChaCha20(out, key, nonce)\n}\n\nfunc hChaCha20(out, key, nonce []byte) ([]byte, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20: wrong HChaCha20 key size\")\n\t}\n\tif len(nonce) != 16 {\n\t\treturn nil, errors.New(\"chacha20: wrong HChaCha20 nonce size\")\n\t}\n\n\tx0, x1, x2, x3 := j0, j1, j2, j3\n\tx4 := binary.LittleEndian.Uint32(key[0:4])\n\tx5 := binary.LittleEndian.Uint32(key[4:8])\n\tx6 := binary.LittleEndian.Uint32(key[8:12])\n\tx7 := binary.LittleEndian.Uint32(key[12:16])\n\tx8 := binary.LittleEndian.Uint32(key[16:20])\n\tx9 := binary.LittleEndian.Uint32(key[20:24])\n\tx10 := binary.LittleEndian.Uint32(key[24:28])\n\tx11 := binary.LittleEndian.Uint32(key[28:32])\n\tx12 := binary.LittleEndian.Uint32(nonce[0:4])\n\tx13 := binary.LittleEndian.Uint32(nonce[4:8])\n\tx14 := binary.LittleEndian.Uint32(nonce[8:12])\n\tx15 := binary.LittleEndian.Uint32(nonce[12:16])\n\n\tfor i := 0; i < 10; i++ {\n\t\t// Diagonal round.\n\t\tx0, x4, x8, x12 = quarterRound(x0, x4, x8, x12)\n\t\tx1, x5, x9, x13 = quarterRound(x1, x5, x9, x13)\n\t\tx2, x6, x10, x14 = quarterRound(x2, x6, x10, x14)\n\t\tx3, x7, x11, x15 = quarterRound(x3, x7, x11, x15)\n\n\t\t// Column round.\n\t\tx0, x5, x10, x15 = quarterRound(x0, x5, x10, x15)\n\t\tx1, x6, x11, x12 = quarterRound(x1, x6, x11, x12)\n\t\tx2, x7, x8, x13 = quarterRound(x2, x7, x8, x13)\n\t\tx3, x4, x9, x14 = quarterRound(x3, x4, x9, x14)\n\t}\n\n\t_ = out[31] // bounds check elimination hint\n\tbinary.LittleEndian.PutUint32(out[0:4], x0)\n\tbinary.LittleEndian.PutUint32(out[4:8], x1)\n\tbinary.LittleEndian.PutUint32(out[8:12], x2)\n\tbinary.LittleEndian.PutUint32(out[12:16], x3)\n\tbinary.LittleEndian.PutUint32(out[16:20], x12)\n\tbinary.LittleEndian.PutUint32(out[20:24], x13)\n\tbinary.LittleEndian.PutUint32(out[24:28], x14)\n\tbinary.LittleEndian.PutUint32(out[28:32], x15)\n\treturn out, nil\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_noasm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (!arm64 && !s390x && !ppc64le) || !gc || purego\n\npackage chacha20\n\nconst bufSize = blockSize\n\nfunc (s *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\ts.xorKeyStreamBlocksGeneric(dst, src)\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_ppc64le.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20\n\nconst bufSize = 256\n\n//go:noescape\nfunc chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\tchaCha20_ctr32_vsx(&dst[0], &src[0], len(src), &c.key, &c.counter)\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_ppc64le.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// Based on CRYPTOGAMS code with the following comment:\n// # ====================================================================\n// # Written by Andy Polyakov <appro@openssl.org> for the OpenSSL\n// # project. The module is, however, dual licensed under OpenSSL and\n// # CRYPTOGAMS licenses depending on where you obtain it. For further\n// # details see http://www.openssl.org/~appro/cryptogams/.\n// # ====================================================================\n\n// Code for the perl script that generates the ppc64 assembler\n// can be found in the cryptogams repository at the link below. It is based on\n// the original from openssl.\n\n// https://github.com/dot-asm/cryptogams/commit/a60f5b50ed908e91\n\n// The differences in this and the original implementation are\n// due to the calling conventions and initialization of constants.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n\n#define OUT  R3\n#define INP  R4\n#define LEN  R5\n#define KEY  R6\n#define CNT  R7\n#define TMP  R15\n\n#define CONSTBASE  R16\n#define BLOCKS R17\n\nDATA consts<>+0x00(SB)/8, $0x3320646e61707865\nDATA consts<>+0x08(SB)/8, $0x6b20657479622d32\nDATA consts<>+0x10(SB)/8, $0x0000000000000001\nDATA consts<>+0x18(SB)/8, $0x0000000000000000\nDATA consts<>+0x20(SB)/8, $0x0000000000000004\nDATA consts<>+0x28(SB)/8, $0x0000000000000000\nDATA consts<>+0x30(SB)/8, $0x0a0b08090e0f0c0d\nDATA consts<>+0x38(SB)/8, $0x0203000106070405\nDATA consts<>+0x40(SB)/8, $0x090a0b080d0e0f0c\nDATA consts<>+0x48(SB)/8, $0x0102030005060704\nDATA consts<>+0x50(SB)/8, $0x6170786561707865\nDATA consts<>+0x58(SB)/8, $0x6170786561707865\nDATA consts<>+0x60(SB)/8, $0x3320646e3320646e\nDATA consts<>+0x68(SB)/8, $0x3320646e3320646e\nDATA consts<>+0x70(SB)/8, $0x79622d3279622d32\nDATA consts<>+0x78(SB)/8, $0x79622d3279622d32\nDATA consts<>+0x80(SB)/8, $0x6b2065746b206574\nDATA consts<>+0x88(SB)/8, $0x6b2065746b206574\nDATA consts<>+0x90(SB)/8, $0x0000000100000000\nDATA consts<>+0x98(SB)/8, $0x0000000300000002\nGLOBL consts<>(SB), RODATA, $0xa0\n\n//func chaCha20_ctr32_vsx(out, inp *byte, len int, key *[8]uint32, counter *uint32)\nTEXT ·chaCha20_ctr32_vsx(SB),NOSPLIT,$64-40\n\tMOVD out+0(FP), OUT\n\tMOVD inp+8(FP), INP\n\tMOVD len+16(FP), LEN\n\tMOVD key+24(FP), KEY\n\tMOVD counter+32(FP), CNT\n\n\t// Addressing for constants\n\tMOVD $consts<>+0x00(SB), CONSTBASE\n\tMOVD $16, R8\n\tMOVD $32, R9\n\tMOVD $48, R10\n\tMOVD $64, R11\n\tSRD $6, LEN, BLOCKS\n\t// V16\n\tLXVW4X (CONSTBASE)(R0), VS48\n\tADD $80,CONSTBASE\n\n\t// Load key into V17,V18\n\tLXVW4X (KEY)(R0), VS49\n\tLXVW4X (KEY)(R8), VS50\n\n\t// Load CNT, NONCE into V19\n\tLXVW4X (CNT)(R0), VS51\n\n\t// Clear V27\n\tVXOR V27, V27, V27\n\n\t// V28\n\tLXVW4X (CONSTBASE)(R11), VS60\n\n\t// splat slot from V19 -> V26\n\tVSPLTW $0, V19, V26\n\n\tVSLDOI $4, V19, V27, V19\n\tVSLDOI $12, V27, V19, V19\n\n\tVADDUWM V26, V28, V26\n\n\tMOVD $10, R14\n\tMOVD R14, CTR\n\nloop_outer_vsx:\n\t// V0, V1, V2, V3\n\tLXVW4X (R0)(CONSTBASE), VS32\n\tLXVW4X (R8)(CONSTBASE), VS33\n\tLXVW4X (R9)(CONSTBASE), VS34\n\tLXVW4X (R10)(CONSTBASE), VS35\n\n\t// splat values from V17, V18 into V4-V11\n\tVSPLTW $0, V17, V4\n\tVSPLTW $1, V17, V5\n\tVSPLTW $2, V17, V6\n\tVSPLTW $3, V17, V7\n\tVSPLTW $0, V18, V8\n\tVSPLTW $1, V18, V9\n\tVSPLTW $2, V18, V10\n\tVSPLTW $3, V18, V11\n\n\t// VOR\n\tVOR V26, V26, V12\n\n\t// splat values from V19 -> V13, V14, V15\n\tVSPLTW $1, V19, V13\n\tVSPLTW $2, V19, V14\n\tVSPLTW $3, V19, V15\n\n\t// splat   const values\n\tVSPLTISW $-16, V27\n\tVSPLTISW $12, V28\n\tVSPLTISW $8, V29\n\tVSPLTISW $7, V30\n\nloop_vsx:\n\tVADDUWM V0, V4, V0\n\tVADDUWM V1, V5, V1\n\tVADDUWM V2, V6, V2\n\tVADDUWM V3, V7, V3\n\n\tVXOR V12, V0, V12\n\tVXOR V13, V1, V13\n\tVXOR V14, V2, V14\n\tVXOR V15, V3, V15\n\n\tVRLW V12, V27, V12\n\tVRLW V13, V27, V13\n\tVRLW V14, V27, V14\n\tVRLW V15, V27, V15\n\n\tVADDUWM V8, V12, V8\n\tVADDUWM V9, V13, V9\n\tVADDUWM V10, V14, V10\n\tVADDUWM V11, V15, V11\n\n\tVXOR V4, V8, V4\n\tVXOR V5, V9, V5\n\tVXOR V6, V10, V6\n\tVXOR V7, V11, V7\n\n\tVRLW V4, V28, V4\n\tVRLW V5, V28, V5\n\tVRLW V6, V28, V6\n\tVRLW V7, V28, V7\n\n\tVADDUWM V0, V4, V0\n\tVADDUWM V1, V5, V1\n\tVADDUWM V2, V6, V2\n\tVADDUWM V3, V7, V3\n\n\tVXOR V12, V0, V12\n\tVXOR V13, V1, V13\n\tVXOR V14, V2, V14\n\tVXOR V15, V3, V15\n\n\tVRLW V12, V29, V12\n\tVRLW V13, V29, V13\n\tVRLW V14, V29, V14\n\tVRLW V15, V29, V15\n\n\tVADDUWM V8, V12, V8\n\tVADDUWM V9, V13, V9\n\tVADDUWM V10, V14, V10\n\tVADDUWM V11, V15, V11\n\n\tVXOR V4, V8, V4\n\tVXOR V5, V9, V5\n\tVXOR V6, V10, V6\n\tVXOR V7, V11, V7\n\n\tVRLW V4, V30, V4\n\tVRLW V5, V30, V5\n\tVRLW V6, V30, V6\n\tVRLW V7, V30, V7\n\n\tVADDUWM V0, V5, V0\n\tVADDUWM V1, V6, V1\n\tVADDUWM V2, V7, V2\n\tVADDUWM V3, V4, V3\n\n\tVXOR V15, V0, V15\n\tVXOR V12, V1, V12\n\tVXOR V13, V2, V13\n\tVXOR V14, V3, V14\n\n\tVRLW V15, V27, V15\n\tVRLW V12, V27, V12\n\tVRLW V13, V27, V13\n\tVRLW V14, V27, V14\n\n\tVADDUWM V10, V15, V10\n\tVADDUWM V11, V12, V11\n\tVADDUWM V8, V13, V8\n\tVADDUWM V9, V14, V9\n\n\tVXOR V5, V10, V5\n\tVXOR V6, V11, V6\n\tVXOR V7, V8, V7\n\tVXOR V4, V9, V4\n\n\tVRLW V5, V28, V5\n\tVRLW V6, V28, V6\n\tVRLW V7, V28, V7\n\tVRLW V4, V28, V4\n\n\tVADDUWM V0, V5, V0\n\tVADDUWM V1, V6, V1\n\tVADDUWM V2, V7, V2\n\tVADDUWM V3, V4, V3\n\n\tVXOR V15, V0, V15\n\tVXOR V12, V1, V12\n\tVXOR V13, V2, V13\n\tVXOR V14, V3, V14\n\n\tVRLW V15, V29, V15\n\tVRLW V12, V29, V12\n\tVRLW V13, V29, V13\n\tVRLW V14, V29, V14\n\n\tVADDUWM V10, V15, V10\n\tVADDUWM V11, V12, V11\n\tVADDUWM V8, V13, V8\n\tVADDUWM V9, V14, V9\n\n\tVXOR V5, V10, V5\n\tVXOR V6, V11, V6\n\tVXOR V7, V8, V7\n\tVXOR V4, V9, V4\n\n\tVRLW V5, V30, V5\n\tVRLW V6, V30, V6\n\tVRLW V7, V30, V7\n\tVRLW V4, V30, V4\n\tBC   16, LT, loop_vsx\n\n\tVADDUWM V12, V26, V12\n\n\tWORD $0x13600F8C\t\t// VMRGEW V0, V1, V27\n\tWORD $0x13821F8C\t\t// VMRGEW V2, V3, V28\n\n\tWORD $0x10000E8C\t\t// VMRGOW V0, V1, V0\n\tWORD $0x10421E8C\t\t// VMRGOW V2, V3, V2\n\n\tWORD $0x13A42F8C\t\t// VMRGEW V4, V5, V29\n\tWORD $0x13C63F8C\t\t// VMRGEW V6, V7, V30\n\n\tXXPERMDI VS32, VS34, $0, VS33\n\tXXPERMDI VS32, VS34, $3, VS35\n\tXXPERMDI VS59, VS60, $0, VS32\n\tXXPERMDI VS59, VS60, $3, VS34\n\n\tWORD $0x10842E8C\t\t// VMRGOW V4, V5, V4\n\tWORD $0x10C63E8C\t\t// VMRGOW V6, V7, V6\n\n\tWORD $0x13684F8C\t\t// VMRGEW V8, V9, V27\n\tWORD $0x138A5F8C\t\t// VMRGEW V10, V11, V28\n\n\tXXPERMDI VS36, VS38, $0, VS37\n\tXXPERMDI VS36, VS38, $3, VS39\n\tXXPERMDI VS61, VS62, $0, VS36\n\tXXPERMDI VS61, VS62, $3, VS38\n\n\tWORD $0x11084E8C\t\t// VMRGOW V8, V9, V8\n\tWORD $0x114A5E8C\t\t// VMRGOW V10, V11, V10\n\n\tWORD $0x13AC6F8C\t\t// VMRGEW V12, V13, V29\n\tWORD $0x13CE7F8C\t\t// VMRGEW V14, V15, V30\n\n\tXXPERMDI VS40, VS42, $0, VS41\n\tXXPERMDI VS40, VS42, $3, VS43\n\tXXPERMDI VS59, VS60, $0, VS40\n\tXXPERMDI VS59, VS60, $3, VS42\n\n\tWORD $0x118C6E8C\t\t// VMRGOW V12, V13, V12\n\tWORD $0x11CE7E8C\t\t// VMRGOW V14, V15, V14\n\n\tVSPLTISW $4, V27\n\tVADDUWM V26, V27, V26\n\n\tXXPERMDI VS44, VS46, $0, VS45\n\tXXPERMDI VS44, VS46, $3, VS47\n\tXXPERMDI VS61, VS62, $0, VS44\n\tXXPERMDI VS61, VS62, $3, VS46\n\n\tVADDUWM V0, V16, V0\n\tVADDUWM V4, V17, V4\n\tVADDUWM V8, V18, V8\n\tVADDUWM V12, V19, V12\n\n\tCMPU LEN, $64\n\tBLT tail_vsx\n\n\t// Bottom of loop\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V1, V16, V0\n\tVADDUWM V5, V17, V4\n\tVADDUWM V9, V18, V8\n\tVADDUWM V13, V19, V12\n\n\tCMPU  LEN, $64\n\tBLT   tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\tVXOR   V27, V0, V27\n\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(V10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V2, V16, V0\n\tVADDUWM V6, V17, V4\n\tVADDUWM V10, V18, V8\n\tVADDUWM V14, V19, V12\n\n\tCMPU LEN, $64\n\tBLT  tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\tBEQ     done_vsx\n\n\tVADDUWM V3, V16, V0\n\tVADDUWM V7, V17, V4\n\tVADDUWM V11, V18, V8\n\tVADDUWM V15, V19, V12\n\n\tCMPU  LEN, $64\n\tBLT   tail_vsx\n\n\tLXVW4X (INP)(R0), VS59\n\tLXVW4X (INP)(R8), VS60\n\tLXVW4X (INP)(R9), VS61\n\tLXVW4X (INP)(R10), VS62\n\n\tVXOR V27, V0, V27\n\tVXOR V28, V4, V28\n\tVXOR V29, V8, V29\n\tVXOR V30, V12, V30\n\n\tSTXVW4X VS59, (OUT)(R0)\n\tSTXVW4X VS60, (OUT)(R8)\n\tADD     $64, INP\n\tSTXVW4X VS61, (OUT)(R9)\n\tADD     $-64, LEN\n\tSTXVW4X VS62, (OUT)(R10)\n\tADD     $64, OUT\n\n\tMOVD $10, R14\n\tMOVD R14, CTR\n\tBNE  loop_outer_vsx\n\ndone_vsx:\n\t// Increment counter by number of 64 byte blocks\n\tMOVD (CNT), R14\n\tADD  BLOCKS, R14\n\tMOVD R14, (CNT)\n\tRET\n\ntail_vsx:\n\tADD  $32, R1, R11\n\tMOVD LEN, CTR\n\n\t// Save values on stack to copy from\n\tSTXVW4X VS32, (R11)(R0)\n\tSTXVW4X VS36, (R11)(R8)\n\tSTXVW4X VS40, (R11)(R9)\n\tSTXVW4X VS44, (R11)(R10)\n\tADD $-1, R11, R12\n\tADD $-1, INP\n\tADD $-1, OUT\n\nlooptail_vsx:\n\t// Copying the result to OUT\n\t// in bytes.\n\tMOVBZU 1(R12), KEY\n\tMOVBZU 1(INP), TMP\n\tXOR    KEY, TMP, KEY\n\tMOVBU  KEY, 1(OUT)\n\tBC     16, LT, looptail_vsx\n\n\t// Clear the stack values\n\tSTXVW4X VS48, (R11)(R0)\n\tSTXVW4X VS48, (R11)(R8)\n\tSTXVW4X VS48, (R11)(R9)\n\tSTXVW4X VS48, (R11)(R10)\n\tBR      done_vsx\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_s390x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20\n\nimport \"gossh/sys/cpu\"\n\nvar haveAsm = cpu.S390X.HasVX\n\nconst bufSize = 256\n\n// xorKeyStreamVX is an assembly implementation of XORKeyStream. It must only\n// be called when the vector facility is available. Implementation in asm_s390x.s.\n//\n//go:noescape\nfunc xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\n\nfunc (c *Cipher) xorKeyStreamBlocks(dst, src []byte) {\n\tif cpu.S390X.HasVX {\n\t\txorKeyStreamVX(dst, src, &c.key, &c.nonce, &c.counter)\n\t} else {\n\t\tc.xorKeyStreamBlocksGeneric(dst, src)\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20/chacha_s390x.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"go_asm.h\"\n#include \"textflag.h\"\n\n// This is an implementation of the ChaCha20 encryption algorithm as\n// specified in RFC 7539. It uses vector instructions to compute\n// 4 keystream blocks in parallel (256 bytes) which are then XORed\n// with the bytes in the input slice.\n\nGLOBL ·constants<>(SB), RODATA|NOPTR, $32\n// BSWAP: swap bytes in each 4-byte element\nDATA ·constants<>+0x00(SB)/4, $0x03020100\nDATA ·constants<>+0x04(SB)/4, $0x07060504\nDATA ·constants<>+0x08(SB)/4, $0x0b0a0908\nDATA ·constants<>+0x0c(SB)/4, $0x0f0e0d0c\n// J0: [j0, j1, j2, j3]\nDATA ·constants<>+0x10(SB)/4, $0x61707865\nDATA ·constants<>+0x14(SB)/4, $0x3320646e\nDATA ·constants<>+0x18(SB)/4, $0x79622d32\nDATA ·constants<>+0x1c(SB)/4, $0x6b206574\n\n#define BSWAP V5\n#define J0    V6\n#define KEY0  V7\n#define KEY1  V8\n#define NONCE V9\n#define CTR   V10\n#define M0    V11\n#define M1    V12\n#define M2    V13\n#define M3    V14\n#define INC   V15\n#define X0    V16\n#define X1    V17\n#define X2    V18\n#define X3    V19\n#define X4    V20\n#define X5    V21\n#define X6    V22\n#define X7    V23\n#define X8    V24\n#define X9    V25\n#define X10   V26\n#define X11   V27\n#define X12   V28\n#define X13   V29\n#define X14   V30\n#define X15   V31\n\n#define NUM_ROUNDS 20\n\n#define ROUND4(a0, a1, a2, a3, b0, b1, b2, b3, c0, c1, c2, c3, d0, d1, d2, d3) \\\n\tVAF    a1, a0, a0  \\\n\tVAF    b1, b0, b0  \\\n\tVAF    c1, c0, c0  \\\n\tVAF    d1, d0, d0  \\\n\tVX     a0, a2, a2  \\\n\tVX     b0, b2, b2  \\\n\tVX     c0, c2, c2  \\\n\tVX     d0, d2, d2  \\\n\tVERLLF $16, a2, a2 \\\n\tVERLLF $16, b2, b2 \\\n\tVERLLF $16, c2, c2 \\\n\tVERLLF $16, d2, d2 \\\n\tVAF    a2, a3, a3  \\\n\tVAF    b2, b3, b3  \\\n\tVAF    c2, c3, c3  \\\n\tVAF    d2, d3, d3  \\\n\tVX     a3, a1, a1  \\\n\tVX     b3, b1, b1  \\\n\tVX     c3, c1, c1  \\\n\tVX     d3, d1, d1  \\\n\tVERLLF $12, a1, a1 \\\n\tVERLLF $12, b1, b1 \\\n\tVERLLF $12, c1, c1 \\\n\tVERLLF $12, d1, d1 \\\n\tVAF    a1, a0, a0  \\\n\tVAF    b1, b0, b0  \\\n\tVAF    c1, c0, c0  \\\n\tVAF    d1, d0, d0  \\\n\tVX     a0, a2, a2  \\\n\tVX     b0, b2, b2  \\\n\tVX     c0, c2, c2  \\\n\tVX     d0, d2, d2  \\\n\tVERLLF $8, a2, a2  \\\n\tVERLLF $8, b2, b2  \\\n\tVERLLF $8, c2, c2  \\\n\tVERLLF $8, d2, d2  \\\n\tVAF    a2, a3, a3  \\\n\tVAF    b2, b3, b3  \\\n\tVAF    c2, c3, c3  \\\n\tVAF    d2, d3, d3  \\\n\tVX     a3, a1, a1  \\\n\tVX     b3, b1, b1  \\\n\tVX     c3, c1, c1  \\\n\tVX     d3, d1, d1  \\\n\tVERLLF $7, a1, a1  \\\n\tVERLLF $7, b1, b1  \\\n\tVERLLF $7, c1, c1  \\\n\tVERLLF $7, d1, d1\n\n#define PERMUTE(mask, v0, v1, v2, v3) \\\n\tVPERM v0, v0, mask, v0 \\\n\tVPERM v1, v1, mask, v1 \\\n\tVPERM v2, v2, mask, v2 \\\n\tVPERM v3, v3, mask, v3\n\n#define ADDV(x, v0, v1, v2, v3) \\\n\tVAF x, v0, v0 \\\n\tVAF x, v1, v1 \\\n\tVAF x, v2, v2 \\\n\tVAF x, v3, v3\n\n#define XORV(off, dst, src, v0, v1, v2, v3) \\\n\tVLM  off(src), M0, M3          \\\n\tPERMUTE(BSWAP, v0, v1, v2, v3) \\\n\tVX   v0, M0, M0                \\\n\tVX   v1, M1, M1                \\\n\tVX   v2, M2, M2                \\\n\tVX   v3, M3, M3                \\\n\tVSTM M0, M3, off(dst)\n\n#define SHUFFLE(a, b, c, d, t, u, v, w) \\\n\tVMRHF a, c, t \\ // t = {a[0], c[0], a[1], c[1]}\n\tVMRHF b, d, u \\ // u = {b[0], d[0], b[1], d[1]}\n\tVMRLF a, c, v \\ // v = {a[2], c[2], a[3], c[3]}\n\tVMRLF b, d, w \\ // w = {b[2], d[2], b[3], d[3]}\n\tVMRHF t, u, a \\ // a = {a[0], b[0], c[0], d[0]}\n\tVMRLF t, u, b \\ // b = {a[1], b[1], c[1], d[1]}\n\tVMRHF v, w, c \\ // c = {a[2], b[2], c[2], d[2]}\n\tVMRLF v, w, d // d = {a[3], b[3], c[3], d[3]}\n\n// func xorKeyStreamVX(dst, src []byte, key *[8]uint32, nonce *[3]uint32, counter *uint32)\nTEXT ·xorKeyStreamVX(SB), NOSPLIT, $0\n\tMOVD $·constants<>(SB), R1\n\tMOVD dst+0(FP), R2         // R2=&dst[0]\n\tLMG  src+24(FP), R3, R4    // R3=&src[0] R4=len(src)\n\tMOVD key+48(FP), R5        // R5=key\n\tMOVD nonce+56(FP), R6      // R6=nonce\n\tMOVD counter+64(FP), R7    // R7=counter\n\n\t// load BSWAP and J0\n\tVLM (R1), BSWAP, J0\n\n\t// setup\n\tMOVD  $95, R0\n\tVLM   (R5), KEY0, KEY1\n\tVLL   R0, (R6), NONCE\n\tVZERO M0\n\tVLEIB $7, $32, M0\n\tVSRLB M0, NONCE, NONCE\n\n\t// initialize counter values\n\tVLREPF (R7), CTR\n\tVZERO  INC\n\tVLEIF  $1, $1, INC\n\tVLEIF  $2, $2, INC\n\tVLEIF  $3, $3, INC\n\tVAF    INC, CTR, CTR\n\tVREPIF $4, INC\n\nchacha:\n\tVREPF $0, J0, X0\n\tVREPF $1, J0, X1\n\tVREPF $2, J0, X2\n\tVREPF $3, J0, X3\n\tVREPF $0, KEY0, X4\n\tVREPF $1, KEY0, X5\n\tVREPF $2, KEY0, X6\n\tVREPF $3, KEY0, X7\n\tVREPF $0, KEY1, X8\n\tVREPF $1, KEY1, X9\n\tVREPF $2, KEY1, X10\n\tVREPF $3, KEY1, X11\n\tVLR   CTR, X12\n\tVREPF $1, NONCE, X13\n\tVREPF $2, NONCE, X14\n\tVREPF $3, NONCE, X15\n\n\tMOVD $(NUM_ROUNDS/2), R1\n\nloop:\n\tROUND4(X0, X4, X12,  X8, X1, X5, X13,  X9, X2, X6, X14, X10, X3, X7, X15, X11)\n\tROUND4(X0, X5, X15, X10, X1, X6, X12, X11, X2, X7, X13, X8,  X3, X4, X14, X9)\n\n\tADD $-1, R1\n\tBNE loop\n\n\t// decrement length\n\tADD $-256, R4\n\n\t// rearrange vectors\n\tSHUFFLE(X0, X1, X2, X3, M0, M1, M2, M3)\n\tADDV(J0, X0, X1, X2, X3)\n\tSHUFFLE(X4, X5, X6, X7, M0, M1, M2, M3)\n\tADDV(KEY0, X4, X5, X6, X7)\n\tSHUFFLE(X8, X9, X10, X11, M0, M1, M2, M3)\n\tADDV(KEY1, X8, X9, X10, X11)\n\tVAF CTR, X12, X12\n\tSHUFFLE(X12, X13, X14, X15, M0, M1, M2, M3)\n\tADDV(NONCE, X12, X13, X14, X15)\n\n\t// increment counters\n\tVAF INC, CTR, CTR\n\n\t// xor keystream with plaintext\n\tXORV(0*64, R2, R3, X0, X4,  X8, X12)\n\tXORV(1*64, R2, R3, X1, X5,  X9, X13)\n\tXORV(2*64, R2, R3, X2, X6, X10, X14)\n\tXORV(3*64, R2, R3, X3, X7, X11, X15)\n\n\t// increment pointers\n\tMOVD $256(R2), R2\n\tMOVD $256(R3), R3\n\n\tCMPBNE  R4, $0, chacha\n\n\tVSTEF $0, CTR, (R7)\n\tRET\n"
  },
  {
    "path": "gossh/crypto/chacha20/xor.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 src the LICENSE file.\n\npackage chacha20\n\nimport \"runtime\"\n\n// Platforms that have fast unaligned 32-bit little endian accesses.\nconst unaligned = runtime.GOARCH == \"386\" ||\n\truntime.GOARCH == \"amd64\" ||\n\truntime.GOARCH == \"arm64\" ||\n\truntime.GOARCH == \"ppc64le\" ||\n\truntime.GOARCH == \"s390x\"\n\n// addXor reads a little endian uint32 from src, XORs it with (a + b) and\n// places the result in little endian byte order in dst.\nfunc addXor(dst, src []byte, a, b uint32) {\n\t_, _ = src[3], dst[3] // bounds check elimination hint\n\tif unaligned {\n\t\t// The compiler should optimize this code into\n\t\t// 32-bit unaligned little endian loads and stores.\n\t\t// TODO: delete once the compiler does a reliably\n\t\t// good job with the generic code below.\n\t\t// See issue #25111 for more details.\n\t\tv := uint32(src[0])\n\t\tv |= uint32(src[1]) << 8\n\t\tv |= uint32(src[2]) << 16\n\t\tv |= uint32(src[3]) << 24\n\t\tv ^= a + b\n\t\tdst[0] = byte(v)\n\t\tdst[1] = byte(v >> 8)\n\t\tdst[2] = byte(v >> 16)\n\t\tdst[3] = byte(v >> 24)\n\t} else {\n\t\ta += b\n\t\tdst[0] = src[0] ^ byte(a)\n\t\tdst[1] = src[1] ^ byte(a>>8)\n\t\tdst[2] = src[2] ^ byte(a>>16)\n\t\tdst[3] = src[3] ^ byte(a>>24)\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/chacha20poly1305.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package chacha20poly1305 implements the ChaCha20-Poly1305 AEAD and its\n// extended nonce variant XChaCha20-Poly1305, as specified in RFC 8439 and\n// draft-irtf-cfrg-xchacha-01.\npackage chacha20poly1305 // import \"golang.org/x/crypto/chacha20poly1305\"\n\nimport (\n\t\"crypto/cipher\"\n\t\"errors\"\n)\n\nconst (\n\t// KeySize is the size of the key used by this AEAD, in bytes.\n\tKeySize = 32\n\n\t// NonceSize is the size of the nonce used with the standard variant of this\n\t// AEAD, in bytes.\n\t//\n\t// Note that this is too short to be safely generated at random if the same\n\t// key is reused more than 2³² times.\n\tNonceSize = 12\n\n\t// NonceSizeX is the size of the nonce used with the XChaCha20-Poly1305\n\t// variant of this AEAD, in bytes.\n\tNonceSizeX = 24\n\n\t// Overhead is the size of the Poly1305 authentication tag, and the\n\t// difference between a ciphertext length and its plaintext.\n\tOverhead = 16\n)\n\ntype chacha20poly1305 struct {\n\tkey [KeySize]byte\n}\n\n// New returns a ChaCha20-Poly1305 AEAD that uses the given 256-bit key.\nfunc New(key []byte) (cipher.AEAD, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20poly1305: bad key length\")\n\t}\n\tret := new(chacha20poly1305)\n\tcopy(ret.key[:], key)\n\treturn ret, nil\n}\n\nfunc (c *chacha20poly1305) NonceSize() int {\n\treturn NonceSize\n}\n\nfunc (c *chacha20poly1305) Overhead() int {\n\treturn Overhead\n}\n\nfunc (c *chacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte {\n\tif len(nonce) != NonceSize {\n\t\tpanic(\"chacha20poly1305: bad nonce length passed to Seal\")\n\t}\n\n\tif uint64(len(plaintext)) > (1<<38)-64 {\n\t\tpanic(\"chacha20poly1305: plaintext too large\")\n\t}\n\n\treturn c.seal(dst, nonce, plaintext, additionalData)\n}\n\nvar errOpen = errors.New(\"chacha20poly1305: message authentication failed\")\n\nfunc (c *chacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) {\n\tif len(nonce) != NonceSize {\n\t\tpanic(\"chacha20poly1305: bad nonce length passed to Open\")\n\t}\n\tif len(ciphertext) < 16 {\n\t\treturn nil, errOpen\n\t}\n\tif uint64(len(ciphertext)) > (1<<38)-48 {\n\t\tpanic(\"chacha20poly1305: ciphertext too large\")\n\t}\n\n\treturn c.open(dst, nonce, ciphertext, additionalData)\n}\n\n// sliceForAppend takes a slice and a requested number of bytes. It returns a\n// slice with the contents of the given slice followed by that many bytes and a\n// second slice that aliases into it and contains only the extra bytes. If the\n// original slice has sufficient capacity then no allocation is performed.\nfunc sliceForAppend(in []byte, n int) (head, tail []byte) {\n\tif total := len(in) + n; cap(in) >= total {\n\t\thead = in[:total]\n\t} else {\n\t\thead = make([]byte, total)\n\t\tcopy(head, in)\n\t}\n\ttail = head[len(in):]\n\treturn\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/chacha20poly1305_amd64.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage chacha20poly1305\n\nimport (\n\t\"encoding/binary\"\n\n\t\"gossh/crypto/internal/alias\"\n\t\"gossh/sys/cpu\"\n)\n\n//go:noescape\nfunc chacha20Poly1305Open(dst []byte, key []uint32, src, ad []byte) bool\n\n//go:noescape\nfunc chacha20Poly1305Seal(dst []byte, key []uint32, src, ad []byte)\n\nvar (\n\tuseAVX2 = cpu.X86.HasAVX2 && cpu.X86.HasBMI2\n)\n\n// setupState writes a ChaCha20 input matrix to state. See\n// https://tools.ietf.org/html/rfc7539#section-2.3.\nfunc setupState(state *[16]uint32, key *[32]byte, nonce []byte) {\n\tstate[0] = 0x61707865\n\tstate[1] = 0x3320646e\n\tstate[2] = 0x79622d32\n\tstate[3] = 0x6b206574\n\n\tstate[4] = binary.LittleEndian.Uint32(key[0:4])\n\tstate[5] = binary.LittleEndian.Uint32(key[4:8])\n\tstate[6] = binary.LittleEndian.Uint32(key[8:12])\n\tstate[7] = binary.LittleEndian.Uint32(key[12:16])\n\tstate[8] = binary.LittleEndian.Uint32(key[16:20])\n\tstate[9] = binary.LittleEndian.Uint32(key[20:24])\n\tstate[10] = binary.LittleEndian.Uint32(key[24:28])\n\tstate[11] = binary.LittleEndian.Uint32(key[28:32])\n\n\tstate[12] = 0\n\tstate[13] = binary.LittleEndian.Uint32(nonce[0:4])\n\tstate[14] = binary.LittleEndian.Uint32(nonce[4:8])\n\tstate[15] = binary.LittleEndian.Uint32(nonce[8:12])\n}\n\nfunc (c *chacha20poly1305) seal(dst, nonce, plaintext, additionalData []byte) []byte {\n\tif !cpu.X86.HasSSSE3 {\n\t\treturn c.sealGeneric(dst, nonce, plaintext, additionalData)\n\t}\n\n\tvar state [16]uint32\n\tsetupState(&state, &c.key, nonce)\n\n\tret, out := sliceForAppend(dst, len(plaintext)+16)\n\tif alias.InexactOverlap(out, plaintext) {\n\t\tpanic(\"chacha20poly1305: invalid buffer overlap\")\n\t}\n\tchacha20Poly1305Seal(out[:], state[:], plaintext, additionalData)\n\treturn ret\n}\n\nfunc (c *chacha20poly1305) open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) {\n\tif !cpu.X86.HasSSSE3 {\n\t\treturn c.openGeneric(dst, nonce, ciphertext, additionalData)\n\t}\n\n\tvar state [16]uint32\n\tsetupState(&state, &c.key, nonce)\n\n\tciphertext = ciphertext[:len(ciphertext)-16]\n\tret, out := sliceForAppend(dst, len(ciphertext))\n\tif alias.InexactOverlap(out, ciphertext) {\n\t\tpanic(\"chacha20poly1305: invalid buffer overlap\")\n\t}\n\tif !chacha20Poly1305Open(out, state[:], ciphertext, additionalData) {\n\t\tfor i := range out {\n\t\t\tout[i] = 0\n\t\t}\n\t\treturn nil, errOpen\n\t}\n\n\treturn ret, nil\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/chacha20poly1305_amd64.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// This file was originally from https://golang.org/cl/24717 by Vlad Krasnov of CloudFlare.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n// General register allocation\n#define oup DI\n#define inp SI\n#define inl BX\n#define adp CX // free to reuse, after we hash the additional data\n#define keyp R8 // free to reuse, when we copy the key to stack\n#define itr2 R9 // general iterator\n#define itr1 CX // general iterator\n#define acc0 R10\n#define acc1 R11\n#define acc2 R12\n#define t0 R13\n#define t1 R14\n#define t2 R15\n#define t3 R8\n// Register and stack allocation for the SSE code\n#define rStore (0*16)(BP)\n#define sStore (1*16)(BP)\n#define state1Store (2*16)(BP)\n#define state2Store (3*16)(BP)\n#define tmpStore (4*16)(BP)\n#define ctr0Store (5*16)(BP)\n#define ctr1Store (6*16)(BP)\n#define ctr2Store (7*16)(BP)\n#define ctr3Store (8*16)(BP)\n#define A0 X0\n#define A1 X1\n#define A2 X2\n#define B0 X3\n#define B1 X4\n#define B2 X5\n#define C0 X6\n#define C1 X7\n#define C2 X8\n#define D0 X9\n#define D1 X10\n#define D2 X11\n#define T0 X12\n#define T1 X13\n#define T2 X14\n#define T3 X15\n#define A3 T0\n#define B3 T1\n#define C3 T2\n#define D3 T3\n// Register and stack allocation for the AVX2 code\n#define rsStoreAVX2 (0*32)(BP)\n#define state1StoreAVX2 (1*32)(BP)\n#define state2StoreAVX2 (2*32)(BP)\n#define ctr0StoreAVX2 (3*32)(BP)\n#define ctr1StoreAVX2 (4*32)(BP)\n#define ctr2StoreAVX2 (5*32)(BP)\n#define ctr3StoreAVX2 (6*32)(BP)\n#define tmpStoreAVX2 (7*32)(BP) // 256 bytes on stack\n#define AA0 Y0\n#define AA1 Y5\n#define AA2 Y6\n#define AA3 Y7\n#define BB0 Y14\n#define BB1 Y9\n#define BB2 Y10\n#define BB3 Y11\n#define CC0 Y12\n#define CC1 Y13\n#define CC2 Y8\n#define CC3 Y15\n#define DD0 Y4\n#define DD1 Y1\n#define DD2 Y2\n#define DD3 Y3\n#define TT0 DD3\n#define TT1 AA3\n#define TT2 BB3\n#define TT3 CC3\n// ChaCha20 constants\nDATA ·chacha20Constants<>+0x00(SB)/4, $0x61707865\nDATA ·chacha20Constants<>+0x04(SB)/4, $0x3320646e\nDATA ·chacha20Constants<>+0x08(SB)/4, $0x79622d32\nDATA ·chacha20Constants<>+0x0c(SB)/4, $0x6b206574\nDATA ·chacha20Constants<>+0x10(SB)/4, $0x61707865\nDATA ·chacha20Constants<>+0x14(SB)/4, $0x3320646e\nDATA ·chacha20Constants<>+0x18(SB)/4, $0x79622d32\nDATA ·chacha20Constants<>+0x1c(SB)/4, $0x6b206574\n// <<< 16 with PSHUFB\nDATA ·rol16<>+0x00(SB)/8, $0x0504070601000302\nDATA ·rol16<>+0x08(SB)/8, $0x0D0C0F0E09080B0A\nDATA ·rol16<>+0x10(SB)/8, $0x0504070601000302\nDATA ·rol16<>+0x18(SB)/8, $0x0D0C0F0E09080B0A\n// <<< 8 with PSHUFB\nDATA ·rol8<>+0x00(SB)/8, $0x0605040702010003\nDATA ·rol8<>+0x08(SB)/8, $0x0E0D0C0F0A09080B\nDATA ·rol8<>+0x10(SB)/8, $0x0605040702010003\nDATA ·rol8<>+0x18(SB)/8, $0x0E0D0C0F0A09080B\n\nDATA ·avx2InitMask<>+0x00(SB)/8, $0x0\nDATA ·avx2InitMask<>+0x08(SB)/8, $0x0\nDATA ·avx2InitMask<>+0x10(SB)/8, $0x1\nDATA ·avx2InitMask<>+0x18(SB)/8, $0x0\n\nDATA ·avx2IncMask<>+0x00(SB)/8, $0x2\nDATA ·avx2IncMask<>+0x08(SB)/8, $0x0\nDATA ·avx2IncMask<>+0x10(SB)/8, $0x2\nDATA ·avx2IncMask<>+0x18(SB)/8, $0x0\n// Poly1305 key clamp\nDATA ·polyClampMask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF\nDATA ·polyClampMask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC\nDATA ·polyClampMask<>+0x10(SB)/8, $0xFFFFFFFFFFFFFFFF\nDATA ·polyClampMask<>+0x18(SB)/8, $0xFFFFFFFFFFFFFFFF\n\nDATA ·sseIncMask<>+0x00(SB)/8, $0x1\nDATA ·sseIncMask<>+0x08(SB)/8, $0x0\n// To load/store the last < 16 bytes in a buffer\nDATA ·andMask<>+0x00(SB)/8, $0x00000000000000ff\nDATA ·andMask<>+0x08(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x10(SB)/8, $0x000000000000ffff\nDATA ·andMask<>+0x18(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x20(SB)/8, $0x0000000000ffffff\nDATA ·andMask<>+0x28(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x30(SB)/8, $0x00000000ffffffff\nDATA ·andMask<>+0x38(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x40(SB)/8, $0x000000ffffffffff\nDATA ·andMask<>+0x48(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x50(SB)/8, $0x0000ffffffffffff\nDATA ·andMask<>+0x58(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x60(SB)/8, $0x00ffffffffffffff\nDATA ·andMask<>+0x68(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x70(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0x78(SB)/8, $0x0000000000000000\nDATA ·andMask<>+0x80(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0x88(SB)/8, $0x00000000000000ff\nDATA ·andMask<>+0x90(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0x98(SB)/8, $0x000000000000ffff\nDATA ·andMask<>+0xa0(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0xa8(SB)/8, $0x0000000000ffffff\nDATA ·andMask<>+0xb0(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0xb8(SB)/8, $0x00000000ffffffff\nDATA ·andMask<>+0xc0(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0xc8(SB)/8, $0x000000ffffffffff\nDATA ·andMask<>+0xd0(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0xd8(SB)/8, $0x0000ffffffffffff\nDATA ·andMask<>+0xe0(SB)/8, $0xffffffffffffffff\nDATA ·andMask<>+0xe8(SB)/8, $0x00ffffffffffffff\n\nGLOBL ·chacha20Constants<>(SB), (NOPTR+RODATA), $32\nGLOBL ·rol16<>(SB), (NOPTR+RODATA), $32\nGLOBL ·rol8<>(SB), (NOPTR+RODATA), $32\nGLOBL ·sseIncMask<>(SB), (NOPTR+RODATA), $16\nGLOBL ·avx2IncMask<>(SB), (NOPTR+RODATA), $32\nGLOBL ·avx2InitMask<>(SB), (NOPTR+RODATA), $32\nGLOBL ·polyClampMask<>(SB), (NOPTR+RODATA), $32\nGLOBL ·andMask<>(SB), (NOPTR+RODATA), $240\n// No PALIGNR in Go ASM yet (but VPALIGNR is present).\n#define shiftB0Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x04 // PALIGNR $4, X3, X3\n#define shiftB1Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xe4; BYTE $0x04 // PALIGNR $4, X4, X4\n#define shiftB2Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x04 // PALIGNR $4, X5, X5\n#define shiftB3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x04 // PALIGNR $4, X13, X13\n#define shiftC0Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xf6; BYTE $0x08 // PALIGNR $8, X6, X6\n#define shiftC1Left BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x08 // PALIGNR $8, X7, X7\n#define shiftC2Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc0; BYTE $0x08 // PALIGNR $8, X8, X8\n#define shiftC3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xf6; BYTE $0x08 // PALIGNR $8, X14, X14\n#define shiftD0Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc9; BYTE $0x0c // PALIGNR $12, X9, X9\n#define shiftD1Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xd2; BYTE $0x0c // PALIGNR $12, X10, X10\n#define shiftD2Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x0c // PALIGNR $12, X11, X11\n#define shiftD3Left BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x0c // PALIGNR $12, X15, X15\n#define shiftB0Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x0c // PALIGNR $12, X3, X3\n#define shiftB1Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xe4; BYTE $0x0c // PALIGNR $12, X4, X4\n#define shiftB2Right BYTE $0x66; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x0c // PALIGNR $12, X5, X5\n#define shiftB3Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xed; BYTE $0x0c // PALIGNR $12, X13, X13\n#define shiftC0Right shiftC0Left\n#define shiftC1Right shiftC1Left\n#define shiftC2Right shiftC2Left\n#define shiftC3Right shiftC3Left\n#define shiftD0Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xc9; BYTE $0x04 // PALIGNR $4, X9, X9\n#define shiftD1Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xd2; BYTE $0x04 // PALIGNR $4, X10, X10\n#define shiftD2Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xdb; BYTE $0x04 // PALIGNR $4, X11, X11\n#define shiftD3Right BYTE $0x66; BYTE $0x45; BYTE $0x0f; BYTE $0x3a; BYTE $0x0f; BYTE $0xff; BYTE $0x04 // PALIGNR $4, X15, X15\n\n// Some macros\n\n// ROL rotates the uint32s in register R left by N bits, using temporary T.\n#define ROL(N, R, T) \\\n\tMOVO R, T; PSLLL $(N), T; PSRLL $(32-(N)), R; PXOR T, R\n\n// ROL16 rotates the uint32s in register R left by 16, using temporary T if needed.\n#ifdef GOAMD64_v2\n#define ROL16(R, T) PSHUFB ·rol16<>(SB), R\n#else\n#define ROL16(R, T) ROL(16, R, T)\n#endif\n\n// ROL8 rotates the uint32s in register R left by 8, using temporary T if needed.\n#ifdef GOAMD64_v2\n#define ROL8(R, T) PSHUFB ·rol8<>(SB), R\n#else\n#define ROL8(R, T) ROL(8, R, T)\n#endif\n\n#define chachaQR(A, B, C, D, T) \\\n\tPADDD B, A; PXOR A, D; ROL16(D, T) \\\n\tPADDD D, C; PXOR C, B; MOVO B, T; PSLLL $12, T; PSRLL $20, B; PXOR T, B \\\n\tPADDD B, A; PXOR A, D; ROL8(D, T) \\\n\tPADDD D, C; PXOR C, B; MOVO B, T; PSLLL $7, T; PSRLL $25, B; PXOR T, B\n\n#define chachaQR_AVX2(A, B, C, D, T) \\\n\tVPADDD B, A, A; VPXOR A, D, D; VPSHUFB ·rol16<>(SB), D, D                         \\\n\tVPADDD D, C, C; VPXOR C, B, B; VPSLLD $12, B, T; VPSRLD $20, B, B; VPXOR T, B, B \\\n\tVPADDD B, A, A; VPXOR A, D, D; VPSHUFB ·rol8<>(SB), D, D                          \\\n\tVPADDD D, C, C; VPXOR C, B, B; VPSLLD $7, B, T; VPSRLD $25, B, B; VPXOR T, B, B\n\n#define polyAdd(S) ADDQ S, acc0; ADCQ 8+S, acc1; ADCQ $1, acc2\n#define polyMulStage1 MOVQ (0*8)(BP), AX; MOVQ AX, t2; MULQ acc0; MOVQ AX, t0; MOVQ DX, t1; MOVQ (0*8)(BP), AX; MULQ acc1; IMULQ acc2, t2; ADDQ AX, t1; ADCQ DX, t2\n#define polyMulStage2 MOVQ (1*8)(BP), AX; MOVQ AX, t3; MULQ acc0; ADDQ AX, t1; ADCQ $0, DX; MOVQ DX, acc0; MOVQ (1*8)(BP), AX; MULQ acc1; ADDQ AX, t2; ADCQ $0, DX\n#define polyMulStage3 IMULQ acc2, t3; ADDQ acc0, t2; ADCQ DX, t3\n#define polyMulReduceStage MOVQ t0, acc0; MOVQ t1, acc1; MOVQ t2, acc2; ANDQ $3, acc2; MOVQ t2, t0; ANDQ $-4, t0; MOVQ t3, t1; SHRQ $2, t3, t2; SHRQ $2, t3; ADDQ t0, acc0; ADCQ t1, acc1; ADCQ $0, acc2; ADDQ t2, acc0; ADCQ t3, acc1; ADCQ $0, acc2\n\n#define polyMulStage1_AVX2 MOVQ (0*8)(BP), DX; MOVQ DX, t2; MULXQ acc0, t0, t1; IMULQ acc2, t2; MULXQ acc1, AX, DX; ADDQ AX, t1; ADCQ DX, t2\n#define polyMulStage2_AVX2 MOVQ (1*8)(BP), DX; MULXQ acc0, acc0, AX; ADDQ acc0, t1; MULXQ acc1, acc1, t3; ADCQ acc1, t2; ADCQ $0, t3\n#define polyMulStage3_AVX2 IMULQ acc2, DX; ADDQ AX, t2; ADCQ DX, t3\n\n#define polyMul polyMulStage1; polyMulStage2; polyMulStage3; polyMulReduceStage\n#define polyMulAVX2 polyMulStage1_AVX2; polyMulStage2_AVX2; polyMulStage3_AVX2; polyMulReduceStage\n// ----------------------------------------------------------------------------\nTEXT polyHashADInternal<>(SB), NOSPLIT, $0\n\t// adp points to beginning of additional data\n\t// itr2 holds ad length\n\tXORQ acc0, acc0\n\tXORQ acc1, acc1\n\tXORQ acc2, acc2\n\tCMPQ itr2, $13\n\tJNE  hashADLoop\n\nopenFastTLSAD:\n\t// Special treatment for the TLS case of 13 bytes\n\tMOVQ (adp), acc0\n\tMOVQ 5(adp), acc1\n\tSHRQ $24, acc1\n\tMOVQ $1, acc2\n\tpolyMul\n\tRET\n\nhashADLoop:\n\t// Hash in 16 byte chunks\n\tCMPQ itr2, $16\n\tJB   hashADTail\n\tpolyAdd(0(adp))\n\tLEAQ (1*16)(adp), adp\n\tSUBQ $16, itr2\n\tpolyMul\n\tJMP  hashADLoop\n\nhashADTail:\n\tCMPQ itr2, $0\n\tJE   hashADDone\n\n\t// Hash last < 16 byte tail\n\tXORQ t0, t0\n\tXORQ t1, t1\n\tXORQ t2, t2\n\tADDQ itr2, adp\n\nhashADTailLoop:\n\tSHLQ $8, t0, t1\n\tSHLQ $8, t0\n\tMOVB -1(adp), t2\n\tXORQ t2, t0\n\tDECQ adp\n\tDECQ itr2\n\tJNE  hashADTailLoop\n\nhashADTailFinish:\n\tADDQ t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2\n\tpolyMul\n\n\t// Finished AD\nhashADDone:\n\tRET\n\n// ----------------------------------------------------------------------------\n// func chacha20Poly1305Open(dst, key, src, ad []byte) bool\nTEXT ·chacha20Poly1305Open(SB), 0, $288-97\n\t// For aligned stack access\n\tMOVQ SP, BP\n\tADDQ $32, BP\n\tANDQ $-32, BP\n\tMOVQ dst+0(FP), oup\n\tMOVQ key+24(FP), keyp\n\tMOVQ src+48(FP), inp\n\tMOVQ src_len+56(FP), inl\n\tMOVQ ad+72(FP), adp\n\n\t// Check for AVX2 support\n\tCMPB ·useAVX2(SB), $1\n\tJE   chacha20Poly1305Open_AVX2\n\n\t// Special optimization, for very short buffers\n\tCMPQ inl, $128\n\tJBE  openSSE128 // About 16% faster\n\n\t// For long buffers, prepare the poly key first\n\tMOVOU ·chacha20Constants<>(SB), A0\n\tMOVOU (1*16)(keyp), B0\n\tMOVOU (2*16)(keyp), C0\n\tMOVOU (3*16)(keyp), D0\n\tMOVO  D0, T1\n\n\t// Store state on stack for future use\n\tMOVO B0, state1Store\n\tMOVO C0, state2Store\n\tMOVO D0, ctr3Store\n\tMOVQ $10, itr2\n\nopenSSEPreparePolyKey:\n\tchachaQR(A0, B0, C0, D0, T0)\n\tshiftB0Left;  shiftC0Left; shiftD0Left\n\tchachaQR(A0, B0, C0, D0, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\tDECQ          itr2\n\tJNE           openSSEPreparePolyKey\n\n\t// A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL state1Store, B0\n\n\t// Clamp and store the key\n\tPAND ·polyClampMask<>(SB), A0\n\tMOVO A0, rStore; MOVO B0, sStore\n\n\t// Hash AAD\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\nopenSSEMainLoop:\n\tCMPQ inl, $256\n\tJB   openSSEMainLoopDone\n\n\t// Load state, increment counter blocks\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3\n\n\t// Store counters\n\tMOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store\n\n\t// There are 10 ChaCha20 iterations of 2QR each, so for 6 iterations we hash 2 blocks, and for the remaining 4 only 1 block - for a total of 16\n\tMOVQ $4, itr1\n\tMOVQ inp, itr2\n\nopenSSEInternalLoop:\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tpolyAdd(0(itr2))\n\tshiftB0Left;  shiftB1Left; shiftB2Left; shiftB3Left\n\tshiftC0Left;  shiftC1Left; shiftC2Left; shiftC3Left\n\tshiftD0Left;  shiftD1Left; shiftD2Left; shiftD3Left\n\tpolyMulStage1\n\tpolyMulStage2\n\tLEAQ          (2*8)(itr2), itr2\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tpolyMulStage3\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tpolyMulReduceStage\n\tshiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right\n\tshiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right\n\tshiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right\n\tDECQ          itr1\n\tJGE           openSSEInternalLoop\n\n\tpolyAdd(0(itr2))\n\tpolyMul\n\tLEAQ (2*8)(itr2), itr2\n\n\tCMPQ itr1, $-6\n\tJG   openSSEInternalLoop\n\n\t// Add in the state\n\tPADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3\n\tPADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3\n\tPADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3\n\tPADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3\n\n\t// Load - xor - store\n\tMOVO  D3, tmpStore\n\tMOVOU (0*16)(inp), D3; PXOR D3, A0; MOVOU A0, (0*16)(oup)\n\tMOVOU (1*16)(inp), D3; PXOR D3, B0; MOVOU B0, (1*16)(oup)\n\tMOVOU (2*16)(inp), D3; PXOR D3, C0; MOVOU C0, (2*16)(oup)\n\tMOVOU (3*16)(inp), D3; PXOR D3, D0; MOVOU D0, (3*16)(oup)\n\tMOVOU (4*16)(inp), D0; PXOR D0, A1; MOVOU A1, (4*16)(oup)\n\tMOVOU (5*16)(inp), D0; PXOR D0, B1; MOVOU B1, (5*16)(oup)\n\tMOVOU (6*16)(inp), D0; PXOR D0, C1; MOVOU C1, (6*16)(oup)\n\tMOVOU (7*16)(inp), D0; PXOR D0, D1; MOVOU D1, (7*16)(oup)\n\tMOVOU (8*16)(inp), D0; PXOR D0, A2; MOVOU A2, (8*16)(oup)\n\tMOVOU (9*16)(inp), D0; PXOR D0, B2; MOVOU B2, (9*16)(oup)\n\tMOVOU (10*16)(inp), D0; PXOR D0, C2; MOVOU C2, (10*16)(oup)\n\tMOVOU (11*16)(inp), D0; PXOR D0, D2; MOVOU D2, (11*16)(oup)\n\tMOVOU (12*16)(inp), D0; PXOR D0, A3; MOVOU A3, (12*16)(oup)\n\tMOVOU (13*16)(inp), D0; PXOR D0, B3; MOVOU B3, (13*16)(oup)\n\tMOVOU (14*16)(inp), D0; PXOR D0, C3; MOVOU C3, (14*16)(oup)\n\tMOVOU (15*16)(inp), D0; PXOR tmpStore, D0; MOVOU D0, (15*16)(oup)\n\tLEAQ  256(inp), inp\n\tLEAQ  256(oup), oup\n\tSUBQ  $256, inl\n\tJMP   openSSEMainLoop\n\nopenSSEMainLoopDone:\n\t// Handle the various tail sizes efficiently\n\tTESTQ inl, inl\n\tJE    openSSEFinalize\n\tCMPQ  inl, $64\n\tJBE   openSSETail64\n\tCMPQ  inl, $128\n\tJBE   openSSETail128\n\tCMPQ  inl, $192\n\tJBE   openSSETail192\n\tJMP   openSSETail256\n\nopenSSEFinalize:\n\t// Hash in the PT, AAD lengths\n\tADDQ ad_len+80(FP), acc0; ADCQ src_len+56(FP), acc1; ADCQ $1, acc2\n\tpolyMul\n\n\t// Final reduce\n\tMOVQ    acc0, t0\n\tMOVQ    acc1, t1\n\tMOVQ    acc2, t2\n\tSUBQ    $-5, acc0\n\tSBBQ    $-1, acc1\n\tSBBQ    $3, acc2\n\tCMOVQCS t0, acc0\n\tCMOVQCS t1, acc1\n\tCMOVQCS t2, acc2\n\n\t// Add in the \"s\" part of the key\n\tADDQ 0+sStore, acc0\n\tADCQ 8+sStore, acc1\n\n\t// Finally, constant time compare to the tag at the end of the message\n\tXORQ    AX, AX\n\tMOVQ    $1, DX\n\tXORQ    (0*8)(inp), acc0\n\tXORQ    (1*8)(inp), acc1\n\tORQ     acc1, acc0\n\tCMOVQEQ DX, AX\n\n\t// Return true iff tags are equal\n\tMOVB AX, ret+96(FP)\n\tRET\n\n// ----------------------------------------------------------------------------\n// Special optimization for buffers smaller than 129 bytes\nopenSSE128:\n\t// For up to 128 bytes of ciphertext and 64 bytes for the poly key, we require to process three blocks\n\tMOVOU ·chacha20Constants<>(SB), A0; MOVOU (1*16)(keyp), B0; MOVOU (2*16)(keyp), C0; MOVOU (3*16)(keyp), D0\n\tMOVO  A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO  A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO  B0, T1; MOVO C0, T2; MOVO D1, T3\n\tMOVQ  $10, itr2\n\nopenSSE128InnerCipherLoop:\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Left;  shiftB1Left; shiftB2Left\n\tshiftC0Left;  shiftC1Left; shiftC2Left\n\tshiftD0Left;  shiftD1Left; shiftD2Left\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Right; shiftB1Right; shiftB2Right\n\tshiftC0Right; shiftC1Right; shiftC2Right\n\tshiftD0Right; shiftD1Right; shiftD2Right\n\tDECQ          itr2\n\tJNE           openSSE128InnerCipherLoop\n\n\t// A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2\n\tPADDL T1, B0; PADDL T1, B1; PADDL T1, B2\n\tPADDL T2, C1; PADDL T2, C2\n\tPADDL T3, D1; PADDL ·sseIncMask<>(SB), T3; PADDL T3, D2\n\n\t// Clamp and store the key\n\tPAND  ·polyClampMask<>(SB), A0\n\tMOVOU A0, rStore; MOVOU B0, sStore\n\n\t// Hash\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\nopenSSE128Open:\n\tCMPQ inl, $16\n\tJB   openSSETail16\n\tSUBQ $16, inl\n\n\t// Load for hashing\n\tpolyAdd(0(inp))\n\n\t// Load for decryption\n\tMOVOU (inp), T0; PXOR T0, A1; MOVOU A1, (oup)\n\tLEAQ  (1*16)(inp), inp\n\tLEAQ  (1*16)(oup), oup\n\tpolyMul\n\n\t// Shift the stream \"left\"\n\tMOVO B1, A1\n\tMOVO C1, B1\n\tMOVO D1, C1\n\tMOVO A2, D1\n\tMOVO B2, A2\n\tMOVO C2, B2\n\tMOVO D2, C2\n\tJMP  openSSE128Open\n\nopenSSETail16:\n\tTESTQ inl, inl\n\tJE    openSSEFinalize\n\n\t// We can safely load the CT from the end, because it is padded with the MAC\n\tMOVQ   inl, itr2\n\tSHLQ   $4, itr2\n\tLEAQ   ·andMask<>(SB), t0\n\tMOVOU  (inp), T0\n\tADDQ   inl, inp\n\tPAND   -16(t0)(itr2*1), T0\n\tMOVO   T0, 0+tmpStore\n\tMOVQ   T0, t0\n\tMOVQ   8+tmpStore, t1\n\tPXOR   A1, T0\n\n\t// We can only store one byte at a time, since plaintext can be shorter than 16 bytes\nopenSSETail16Store:\n\tMOVQ T0, t3\n\tMOVB t3, (oup)\n\tPSRLDQ $1, T0\n\tINCQ   oup\n\tDECQ   inl\n\tJNE    openSSETail16Store\n\tADDQ   t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2\n\tpolyMul\n\tJMP    openSSEFinalize\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 64 bytes of ciphertext\nopenSSETail64:\n\t// Need to decrypt up to 64 bytes - prepare single block\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store\n\tXORQ itr2, itr2\n\tMOVQ inl, itr1\n\tCMPQ itr1, $16\n\tJB   openSSETail64LoopB\n\nopenSSETail64LoopA:\n\t// Perform ChaCha rounds, while hashing the remaining input\n\tpolyAdd(0(inp)(itr2*1))\n\tpolyMul\n\tSUBQ $16, itr1\n\nopenSSETail64LoopB:\n\tADDQ          $16, itr2\n\tchachaQR(A0, B0, C0, D0, T0)\n\tshiftB0Left;  shiftC0Left; shiftD0Left\n\tchachaQR(A0, B0, C0, D0, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\n\tCMPQ itr1, $16\n\tJAE  openSSETail64LoopA\n\n\tCMPQ itr2, $160\n\tJNE  openSSETail64LoopB\n\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL state1Store, B0; PADDL state2Store, C0; PADDL ctr0Store, D0\n\nopenSSETail64DecLoop:\n\tCMPQ  inl, $16\n\tJB    openSSETail64DecLoopDone\n\tSUBQ  $16, inl\n\tMOVOU (inp), T0\n\tPXOR  T0, A0\n\tMOVOU A0, (oup)\n\tLEAQ  16(inp), inp\n\tLEAQ  16(oup), oup\n\tMOVO  B0, A0\n\tMOVO  C0, B0\n\tMOVO  D0, C0\n\tJMP   openSSETail64DecLoop\n\nopenSSETail64DecLoopDone:\n\tMOVO A0, A1\n\tJMP  openSSETail16\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 128 bytes of ciphertext\nopenSSETail128:\n\t// Need to decrypt up to 128 bytes - prepare two blocks\n\tMOVO ·chacha20Constants<>(SB), A1; MOVO state1Store, B1; MOVO state2Store, C1; MOVO ctr3Store, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr0Store\n\tMOVO A1, A0; MOVO B1, B0; MOVO C1, C0; MOVO D1, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr1Store\n\tXORQ itr2, itr2\n\tMOVQ inl, itr1\n\tANDQ $-16, itr1\n\nopenSSETail128LoopA:\n\t// Perform ChaCha rounds, while hashing the remaining input\n\tpolyAdd(0(inp)(itr2*1))\n\tpolyMul\n\nopenSSETail128LoopB:\n\tADDQ          $16, itr2\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0)\n\tshiftB0Left;  shiftC0Left; shiftD0Left\n\tshiftB1Left;  shiftC1Left; shiftD1Left\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\tshiftB1Right; shiftC1Right; shiftD1Right\n\n\tCMPQ itr2, itr1\n\tJB   openSSETail128LoopA\n\n\tCMPQ itr2, $160\n\tJNE  openSSETail128LoopB\n\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1\n\tPADDL state1Store, B0; PADDL state1Store, B1\n\tPADDL state2Store, C0; PADDL state2Store, C1\n\tPADDL ctr1Store, D0; PADDL ctr0Store, D1\n\n\tMOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3\n\tPXOR  T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1\n\tMOVOU A1, (0*16)(oup); MOVOU B1, (1*16)(oup); MOVOU C1, (2*16)(oup); MOVOU D1, (3*16)(oup)\n\n\tSUBQ $64, inl\n\tLEAQ 64(inp), inp\n\tLEAQ 64(oup), oup\n\tJMP  openSSETail64DecLoop\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 192 bytes of ciphertext\nopenSSETail192:\n\t// Need to decrypt up to 192 bytes - prepare three blocks\n\tMOVO ·chacha20Constants<>(SB), A2; MOVO state1Store, B2; MOVO state2Store, C2; MOVO ctr3Store, D2; PADDL ·sseIncMask<>(SB), D2; MOVO D2, ctr0Store\n\tMOVO A2, A1; MOVO B2, B1; MOVO C2, C1; MOVO D2, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store\n\tMOVO A1, A0; MOVO B1, B0; MOVO C1, C0; MOVO D1, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr2Store\n\n\tMOVQ    inl, itr1\n\tMOVQ    $160, itr2\n\tCMPQ    itr1, $160\n\tCMOVQGT itr2, itr1\n\tANDQ    $-16, itr1\n\tXORQ    itr2, itr2\n\nopenSSLTail192LoopA:\n\t// Perform ChaCha rounds, while hashing the remaining input\n\tpolyAdd(0(inp)(itr2*1))\n\tpolyMul\n\nopenSSLTail192LoopB:\n\tADDQ         $16, itr2\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Left; shiftC0Left; shiftD0Left\n\tshiftB1Left; shiftC1Left; shiftD1Left\n\tshiftB2Left; shiftC2Left; shiftD2Left\n\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\tshiftB1Right; shiftC1Right; shiftD1Right\n\tshiftB2Right; shiftC2Right; shiftD2Right\n\n\tCMPQ itr2, itr1\n\tJB   openSSLTail192LoopA\n\n\tCMPQ itr2, $160\n\tJNE  openSSLTail192LoopB\n\n\tCMPQ inl, $176\n\tJB   openSSLTail192Store\n\n\tpolyAdd(160(inp))\n\tpolyMul\n\n\tCMPQ inl, $192\n\tJB   openSSLTail192Store\n\n\tpolyAdd(176(inp))\n\tpolyMul\n\nopenSSLTail192Store:\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2\n\tPADDL state1Store, B0; PADDL state1Store, B1; PADDL state1Store, B2\n\tPADDL state2Store, C0; PADDL state2Store, C1; PADDL state2Store, C2\n\tPADDL ctr2Store, D0; PADDL ctr1Store, D1; PADDL ctr0Store, D2\n\n\tMOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3\n\tPXOR  T0, A2; PXOR T1, B2; PXOR T2, C2; PXOR T3, D2\n\tMOVOU A2, (0*16)(oup); MOVOU B2, (1*16)(oup); MOVOU C2, (2*16)(oup); MOVOU D2, (3*16)(oup)\n\n\tMOVOU (4*16)(inp), T0; MOVOU (5*16)(inp), T1; MOVOU (6*16)(inp), T2; MOVOU (7*16)(inp), T3\n\tPXOR  T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1\n\tMOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup)\n\n\tSUBQ $128, inl\n\tLEAQ 128(inp), inp\n\tLEAQ 128(oup), oup\n\tJMP  openSSETail64DecLoop\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 256 bytes of ciphertext\nopenSSETail256:\n\t// Need to decrypt up to 256 bytes - prepare four blocks\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3\n\n\t// Store counters\n\tMOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store\n\tXORQ itr2, itr2\n\nopenSSETail256Loop:\n\t// This loop inteleaves 8 ChaCha quarter rounds with 1 poly multiplication\n\tpolyAdd(0(inp)(itr2*1))\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tshiftB0Left;  shiftB1Left; shiftB2Left; shiftB3Left\n\tshiftC0Left;  shiftC1Left; shiftC2Left; shiftC3Left\n\tshiftD0Left;  shiftD1Left; shiftD2Left; shiftD3Left\n\tpolyMulStage1\n\tpolyMulStage2\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tpolyMulStage3\n\tpolyMulReduceStage\n\tshiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right\n\tshiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right\n\tshiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right\n\tADDQ          $2*8, itr2\n\tCMPQ          itr2, $160\n\tJB            openSSETail256Loop\n\tMOVQ          inl, itr1\n\tANDQ          $-16, itr1\n\nopenSSETail256HashLoop:\n\tpolyAdd(0(inp)(itr2*1))\n\tpolyMul\n\tADDQ $2*8, itr2\n\tCMPQ itr2, itr1\n\tJB   openSSETail256HashLoop\n\n\t// Add in the state\n\tPADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3\n\tPADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3\n\tPADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3\n\tPADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3\n\tMOVO  D3, tmpStore\n\n\t// Load - xor - store\n\tMOVOU (0*16)(inp), D3; PXOR D3, A0\n\tMOVOU (1*16)(inp), D3; PXOR D3, B0\n\tMOVOU (2*16)(inp), D3; PXOR D3, C0\n\tMOVOU (3*16)(inp), D3; PXOR D3, D0\n\tMOVOU A0, (0*16)(oup)\n\tMOVOU B0, (1*16)(oup)\n\tMOVOU C0, (2*16)(oup)\n\tMOVOU D0, (3*16)(oup)\n\tMOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0\n\tPXOR  A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1\n\tMOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup)\n\tMOVOU (8*16)(inp), A0; MOVOU (9*16)(inp), B0; MOVOU (10*16)(inp), C0; MOVOU (11*16)(inp), D0\n\tPXOR  A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2\n\tMOVOU A2, (8*16)(oup); MOVOU B2, (9*16)(oup); MOVOU C2, (10*16)(oup); MOVOU D2, (11*16)(oup)\n\tLEAQ  192(inp), inp\n\tLEAQ  192(oup), oup\n\tSUBQ  $192, inl\n\tMOVO  A3, A0\n\tMOVO  B3, B0\n\tMOVO  C3, C0\n\tMOVO  tmpStore, D0\n\n\tJMP openSSETail64DecLoop\n\n// ----------------------------------------------------------------------------\n// ------------------------- AVX2 Code ----------------------------------------\nchacha20Poly1305Open_AVX2:\n\tVZEROUPPER\n\tVMOVDQU ·chacha20Constants<>(SB), AA0\n\tBYTE    $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x70; BYTE $0x10 // broadcasti128 16(r8), ymm14\n\tBYTE    $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x20 // broadcasti128 32(r8), ymm12\n\tBYTE    $0xc4; BYTE $0xc2; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x30 // broadcasti128 48(r8), ymm4\n\tVPADDD  ·avx2InitMask<>(SB), DD0, DD0\n\n\t// Special optimization, for very short buffers\n\tCMPQ inl, $192\n\tJBE  openAVX2192\n\tCMPQ inl, $320\n\tJBE  openAVX2320\n\n\t// For the general key prepare the key first - as a byproduct we have 64 bytes of cipher stream\n\tVMOVDQA BB0, state1StoreAVX2\n\tVMOVDQA CC0, state2StoreAVX2\n\tVMOVDQA DD0, ctr3StoreAVX2\n\tMOVQ    $10, itr2\n\nopenAVX2PreparePolyKey:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0)\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0)\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0\n\tDECQ     itr2\n\tJNE      openAVX2PreparePolyKey\n\n\tVPADDD ·chacha20Constants<>(SB), AA0, AA0\n\tVPADDD state1StoreAVX2, BB0, BB0\n\tVPADDD state2StoreAVX2, CC0, CC0\n\tVPADDD ctr3StoreAVX2, DD0, DD0\n\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\n\t// Clamp and store poly key\n\tVPAND   ·polyClampMask<>(SB), TT0, TT0\n\tVMOVDQA TT0, rsStoreAVX2\n\n\t// Stream for the first 64 bytes\n\tVPERM2I128 $0x13, AA0, BB0, AA0\n\tVPERM2I128 $0x13, CC0, DD0, BB0\n\n\t// Hash AD + first 64 bytes\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\tXORQ itr1, itr1\n\nopenAVX2InitialHash64:\n\tpolyAdd(0(inp)(itr1*1))\n\tpolyMulAVX2\n\tADDQ $16, itr1\n\tCMPQ itr1, $64\n\tJNE  openAVX2InitialHash64\n\n\t// Decrypt the first 64 bytes\n\tVPXOR   (0*32)(inp), AA0, AA0\n\tVPXOR   (1*32)(inp), BB0, BB0\n\tVMOVDQU AA0, (0*32)(oup)\n\tVMOVDQU BB0, (1*32)(oup)\n\tLEAQ    (2*32)(inp), inp\n\tLEAQ    (2*32)(oup), oup\n\tSUBQ    $64, inl\n\nopenAVX2MainLoop:\n\tCMPQ inl, $512\n\tJB   openAVX2MainLoopDone\n\n\t// Load state, increment counter blocks, store the incremented counters\n\tVMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3\n\tVMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3\n\tVMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2\n\tXORQ    itr1, itr1\n\nopenAVX2InternalLoop:\n\t// Lets just say this spaghetti loop interleaves 2 quarter rounds with 3 poly multiplications\n\t// Effectively per 512 bytes of stream we hash 480 bytes of ciphertext\n\tpolyAdd(0*8(inp)(itr1*1))\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tpolyMulStage1_AVX2\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tpolyMulStage2_AVX2\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyMulStage3_AVX2\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulReduceStage\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tpolyAdd(2*8(inp)(itr1*1))\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tpolyMulStage1_AVX2\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulStage2_AVX2\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tpolyMulStage3_AVX2\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tpolyMulReduceStage\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyAdd(4*8(inp)(itr1*1))\n\tLEAQ     (6*8)(itr1), itr1\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulStage1_AVX2\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tpolyMulStage2_AVX2\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tpolyMulStage3_AVX2\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulReduceStage\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3\n\tCMPQ     itr1, $480\n\tJNE      openAVX2InternalLoop\n\n\tVPADDD  ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3\n\tVPADDD  state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3\n\tVPADDD  state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3\n\tVPADDD  ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3\n\tVMOVDQA CC3, tmpStoreAVX2\n\n\t// We only hashed 480 of the 512 bytes available - hash the remaining 32 here\n\tpolyAdd(480(inp))\n\tpolyMulAVX2\n\tVPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0\n\tVPXOR      (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0\n\tVMOVDQU    CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup)\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\tVPXOR      (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup)\n\n\t// and here\n\tpolyAdd(496(inp))\n\tpolyMulAVX2\n\tVPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0\n\tVPXOR      (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup)\n\tVPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0\n\tVPXOR      (12*32)(inp), AA0, AA0; VPXOR (13*32)(inp), BB0, BB0; VPXOR (14*32)(inp), CC0, CC0; VPXOR (15*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (12*32)(oup); VMOVDQU BB0, (13*32)(oup); VMOVDQU CC0, (14*32)(oup); VMOVDQU DD0, (15*32)(oup)\n\tLEAQ       (32*16)(inp), inp\n\tLEAQ       (32*16)(oup), oup\n\tSUBQ       $(32*16), inl\n\tJMP        openAVX2MainLoop\n\nopenAVX2MainLoopDone:\n\t// Handle the various tail sizes efficiently\n\tTESTQ inl, inl\n\tJE    openSSEFinalize\n\tCMPQ  inl, $128\n\tJBE   openAVX2Tail128\n\tCMPQ  inl, $256\n\tJBE   openAVX2Tail256\n\tCMPQ  inl, $384\n\tJBE   openAVX2Tail384\n\tJMP   openAVX2Tail512\n\n// ----------------------------------------------------------------------------\n// Special optimization for buffers smaller than 193 bytes\nopenAVX2192:\n\t// For up to 192 bytes of ciphertext and 64 bytes for the poly key, we process four blocks\n\tVMOVDQA AA0, AA1\n\tVMOVDQA BB0, BB1\n\tVMOVDQA CC0, CC1\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA AA0, AA2\n\tVMOVDQA BB0, BB2\n\tVMOVDQA CC0, CC2\n\tVMOVDQA DD0, DD2\n\tVMOVDQA DD1, TT3\n\tMOVQ    $10, itr2\n\nopenAVX2192InnerCipherLoop:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR   $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1\n\tVPALIGNR   $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR   $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR   $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1\n\tVPALIGNR   $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR   $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1\n\tDECQ       itr2\n\tJNE        openAVX2192InnerCipherLoop\n\tVPADDD     AA2, AA0, AA0; VPADDD AA2, AA1, AA1\n\tVPADDD     BB2, BB0, BB0; VPADDD BB2, BB1, BB1\n\tVPADDD     CC2, CC0, CC0; VPADDD CC2, CC1, CC1\n\tVPADDD     DD2, DD0, DD0; VPADDD TT3, DD1, DD1\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\n\t// Clamp and store poly key\n\tVPAND   ·polyClampMask<>(SB), TT0, TT0\n\tVMOVDQA TT0, rsStoreAVX2\n\n\t// Stream for up to 192 bytes\n\tVPERM2I128 $0x13, AA0, BB0, AA0\n\tVPERM2I128 $0x13, CC0, DD0, BB0\n\tVPERM2I128 $0x02, AA1, BB1, CC0\n\tVPERM2I128 $0x02, CC1, DD1, DD0\n\tVPERM2I128 $0x13, AA1, BB1, AA1\n\tVPERM2I128 $0x13, CC1, DD1, BB1\n\nopenAVX2ShortOpen:\n\t// Hash\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\nopenAVX2ShortOpenLoop:\n\tCMPQ inl, $32\n\tJB   openAVX2ShortTail32\n\tSUBQ $32, inl\n\n\t// Load for hashing\n\tpolyAdd(0*8(inp))\n\tpolyMulAVX2\n\tpolyAdd(2*8(inp))\n\tpolyMulAVX2\n\n\t// Load for decryption\n\tVPXOR   (inp), AA0, AA0\n\tVMOVDQU AA0, (oup)\n\tLEAQ    (1*32)(inp), inp\n\tLEAQ    (1*32)(oup), oup\n\n\t// Shift stream left\n\tVMOVDQA BB0, AA0\n\tVMOVDQA CC0, BB0\n\tVMOVDQA DD0, CC0\n\tVMOVDQA AA1, DD0\n\tVMOVDQA BB1, AA1\n\tVMOVDQA CC1, BB1\n\tVMOVDQA DD1, CC1\n\tVMOVDQA AA2, DD1\n\tVMOVDQA BB2, AA2\n\tJMP     openAVX2ShortOpenLoop\n\nopenAVX2ShortTail32:\n\tCMPQ    inl, $16\n\tVMOVDQA A0, A1\n\tJB      openAVX2ShortDone\n\n\tSUBQ $16, inl\n\n\t// Load for hashing\n\tpolyAdd(0*8(inp))\n\tpolyMulAVX2\n\n\t// Load for decryption\n\tVPXOR      (inp), A0, T0\n\tVMOVDQU    T0, (oup)\n\tLEAQ       (1*16)(inp), inp\n\tLEAQ       (1*16)(oup), oup\n\tVPERM2I128 $0x11, AA0, AA0, AA0\n\tVMOVDQA    A0, A1\n\nopenAVX2ShortDone:\n\tVZEROUPPER\n\tJMP openSSETail16\n\n// ----------------------------------------------------------------------------\n// Special optimization for buffers smaller than 321 bytes\nopenAVX2320:\n\t// For up to 320 bytes of ciphertext and 64 bytes for the poly key, we process six blocks\n\tVMOVDQA AA0, AA1; VMOVDQA BB0, BB1; VMOVDQA CC0, CC1; VPADDD ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA AA0, AA2; VMOVDQA BB0, BB2; VMOVDQA CC0, CC2; VPADDD ·avx2IncMask<>(SB), DD1, DD2\n\tVMOVDQA BB0, TT1; VMOVDQA CC0, TT2; VMOVDQA DD0, TT3\n\tMOVQ    $10, itr2\n\nopenAVX2320InnerCipherLoop:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2\n\tDECQ     itr2\n\tJNE      openAVX2320InnerCipherLoop\n\n\tVMOVDQA ·chacha20Constants<>(SB), TT0\n\tVPADDD  TT0, AA0, AA0; VPADDD TT0, AA1, AA1; VPADDD TT0, AA2, AA2\n\tVPADDD  TT1, BB0, BB0; VPADDD TT1, BB1, BB1; VPADDD TT1, BB2, BB2\n\tVPADDD  TT2, CC0, CC0; VPADDD TT2, CC1, CC1; VPADDD TT2, CC2, CC2\n\tVMOVDQA ·avx2IncMask<>(SB), TT0\n\tVPADDD  TT3, DD0, DD0; VPADDD TT0, TT3, TT3\n\tVPADDD  TT3, DD1, DD1; VPADDD TT0, TT3, TT3\n\tVPADDD  TT3, DD2, DD2\n\n\t// Clamp and store poly key\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\tVPAND      ·polyClampMask<>(SB), TT0, TT0\n\tVMOVDQA    TT0, rsStoreAVX2\n\n\t// Stream for up to 320 bytes\n\tVPERM2I128 $0x13, AA0, BB0, AA0\n\tVPERM2I128 $0x13, CC0, DD0, BB0\n\tVPERM2I128 $0x02, AA1, BB1, CC0\n\tVPERM2I128 $0x02, CC1, DD1, DD0\n\tVPERM2I128 $0x13, AA1, BB1, AA1\n\tVPERM2I128 $0x13, CC1, DD1, BB1\n\tVPERM2I128 $0x02, AA2, BB2, CC1\n\tVPERM2I128 $0x02, CC2, DD2, DD1\n\tVPERM2I128 $0x13, AA2, BB2, AA2\n\tVPERM2I128 $0x13, CC2, DD2, BB2\n\tJMP        openAVX2ShortOpen\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 128 bytes of ciphertext\nopenAVX2Tail128:\n\t// Need to decrypt up to 128 bytes - prepare two blocks\n\tVMOVDQA ·chacha20Constants<>(SB), AA1\n\tVMOVDQA state1StoreAVX2, BB1\n\tVMOVDQA state2StoreAVX2, CC1\n\tVMOVDQA ctr3StoreAVX2, DD1\n\tVPADDD  ·avx2IncMask<>(SB), DD1, DD1\n\tVMOVDQA DD1, DD0\n\n\tXORQ  itr2, itr2\n\tMOVQ  inl, itr1\n\tANDQ  $-16, itr1\n\tTESTQ itr1, itr1\n\tJE    openAVX2Tail128LoopB\n\nopenAVX2Tail128LoopA:\n\t// Perform ChaCha rounds, while hashing the remaining input\n\tpolyAdd(0(inp)(itr2*1))\n\tpolyMulAVX2\n\nopenAVX2Tail128LoopB:\n\tADDQ     $16, itr2\n\tchachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR $4, BB1, BB1, BB1\n\tVPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $12, DD1, DD1, DD1\n\tchachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR $12, BB1, BB1, BB1\n\tVPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $4, DD1, DD1, DD1\n\tCMPQ     itr2, itr1\n\tJB       openAVX2Tail128LoopA\n\tCMPQ     itr2, $160\n\tJNE      openAVX2Tail128LoopB\n\n\tVPADDD     ·chacha20Constants<>(SB), AA1, AA1\n\tVPADDD     state1StoreAVX2, BB1, BB1\n\tVPADDD     state2StoreAVX2, CC1, CC1\n\tVPADDD     DD0, DD1, DD1\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\nopenAVX2TailLoop:\n\tCMPQ inl, $32\n\tJB   openAVX2Tail\n\tSUBQ $32, inl\n\n\t// Load for decryption\n\tVPXOR   (inp), AA0, AA0\n\tVMOVDQU AA0, (oup)\n\tLEAQ    (1*32)(inp), inp\n\tLEAQ    (1*32)(oup), oup\n\tVMOVDQA BB0, AA0\n\tVMOVDQA CC0, BB0\n\tVMOVDQA DD0, CC0\n\tJMP     openAVX2TailLoop\n\nopenAVX2Tail:\n\tCMPQ    inl, $16\n\tVMOVDQA A0, A1\n\tJB      openAVX2TailDone\n\tSUBQ    $16, inl\n\n\t// Load for decryption\n\tVPXOR      (inp), A0, T0\n\tVMOVDQU    T0, (oup)\n\tLEAQ       (1*16)(inp), inp\n\tLEAQ       (1*16)(oup), oup\n\tVPERM2I128 $0x11, AA0, AA0, AA0\n\tVMOVDQA    A0, A1\n\nopenAVX2TailDone:\n\tVZEROUPPER\n\tJMP openSSETail16\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 256 bytes of ciphertext\nopenAVX2Tail256:\n\t// Need to decrypt up to 256 bytes - prepare four blocks\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA DD0, TT1\n\tVMOVDQA DD1, TT2\n\n\t// Compute the number of iterations that will hash data\n\tMOVQ    inl, tmpStoreAVX2\n\tMOVQ    inl, itr1\n\tSUBQ    $128, itr1\n\tSHRQ    $4, itr1\n\tMOVQ    $10, itr2\n\tCMPQ    itr1, $10\n\tCMOVQGT itr2, itr1\n\tMOVQ    inp, inl\n\tXORQ    itr2, itr2\n\nopenAVX2Tail256LoopA:\n\tpolyAdd(0(inl))\n\tpolyMulAVX2\n\tLEAQ 16(inl), inl\n\n\t// Perform ChaCha rounds, while hashing the remaining input\nopenAVX2Tail256LoopB:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1\n\tINCQ     itr2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1\n\tCMPQ     itr2, itr1\n\tJB       openAVX2Tail256LoopA\n\n\tCMPQ itr2, $10\n\tJNE  openAVX2Tail256LoopB\n\n\tMOVQ inl, itr2\n\tSUBQ inp, inl\n\tMOVQ inl, itr1\n\tMOVQ tmpStoreAVX2, inl\n\n\t// Hash the remainder of data (if any)\nopenAVX2Tail256Hash:\n\tADDQ $16, itr1\n\tCMPQ itr1, inl\n\tJGT  openAVX2Tail256HashEnd\n\tpolyAdd (0(itr2))\n\tpolyMulAVX2\n\tLEAQ 16(itr2), itr2\n\tJMP  openAVX2Tail256Hash\n\n// Store 128 bytes safely, then go to store loop\nopenAVX2Tail256HashEnd:\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1\n\tVPADDD     TT1, DD0, DD0; VPADDD TT2, DD1, DD1\n\tVPERM2I128 $0x02, AA0, BB0, AA2; VPERM2I128 $0x02, CC0, DD0, BB2; VPERM2I128 $0x13, AA0, BB0, CC2; VPERM2I128 $0x13, CC0, DD0, DD2\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\n\tVPXOR   (0*32)(inp), AA2, AA2; VPXOR (1*32)(inp), BB2, BB2; VPXOR (2*32)(inp), CC2, CC2; VPXOR (3*32)(inp), DD2, DD2\n\tVMOVDQU AA2, (0*32)(oup); VMOVDQU BB2, (1*32)(oup); VMOVDQU CC2, (2*32)(oup); VMOVDQU DD2, (3*32)(oup)\n\tLEAQ    (4*32)(inp), inp\n\tLEAQ    (4*32)(oup), oup\n\tSUBQ    $4*32, inl\n\n\tJMP openAVX2TailLoop\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 384 bytes of ciphertext\nopenAVX2Tail384:\n\t// Need to decrypt up to 384 bytes - prepare six blocks\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1\n\tVPADDD  ·avx2IncMask<>(SB), DD1, DD2\n\tVMOVDQA DD0, ctr0StoreAVX2\n\tVMOVDQA DD1, ctr1StoreAVX2\n\tVMOVDQA DD2, ctr2StoreAVX2\n\n\t// Compute the number of iterations that will hash two blocks of data\n\tMOVQ    inl, tmpStoreAVX2\n\tMOVQ    inl, itr1\n\tSUBQ    $256, itr1\n\tSHRQ    $4, itr1\n\tADDQ    $6, itr1\n\tMOVQ    $10, itr2\n\tCMPQ    itr1, $10\n\tCMOVQGT itr2, itr1\n\tMOVQ    inp, inl\n\tXORQ    itr2, itr2\n\n\t// Perform ChaCha rounds, while hashing the remaining input\nopenAVX2Tail384LoopB:\n\tpolyAdd(0(inl))\n\tpolyMulAVX2\n\tLEAQ 16(inl), inl\n\nopenAVX2Tail384LoopA:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2\n\tpolyAdd(0(inl))\n\tpolyMulAVX2\n\tLEAQ     16(inl), inl\n\tINCQ     itr2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2\n\n\tCMPQ itr2, itr1\n\tJB   openAVX2Tail384LoopB\n\n\tCMPQ itr2, $10\n\tJNE  openAVX2Tail384LoopA\n\n\tMOVQ inl, itr2\n\tSUBQ inp, inl\n\tMOVQ inl, itr1\n\tMOVQ tmpStoreAVX2, inl\n\nopenAVX2Tail384Hash:\n\tADDQ $16, itr1\n\tCMPQ itr1, inl\n\tJGT  openAVX2Tail384HashEnd\n\tpolyAdd(0(itr2))\n\tpolyMulAVX2\n\tLEAQ 16(itr2), itr2\n\tJMP  openAVX2Tail384Hash\n\n// Store 256 bytes safely, then go to store loop\nopenAVX2Tail384HashEnd:\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2\n\tVPADDD     ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2\n\tVPERM2I128 $0x02, AA0, BB0, TT0; VPERM2I128 $0x02, CC0, DD0, TT1; VPERM2I128 $0x13, AA0, BB0, TT2; VPERM2I128 $0x13, CC0, DD0, TT3\n\tVPXOR      (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3\n\tVMOVDQU    TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup)\n\tVPERM2I128 $0x02, AA1, BB1, TT0; VPERM2I128 $0x02, CC1, DD1, TT1; VPERM2I128 $0x13, AA1, BB1, TT2; VPERM2I128 $0x13, CC1, DD1, TT3\n\tVPXOR      (4*32)(inp), TT0, TT0; VPXOR (5*32)(inp), TT1, TT1; VPXOR (6*32)(inp), TT2, TT2; VPXOR (7*32)(inp), TT3, TT3\n\tVMOVDQU    TT0, (4*32)(oup); VMOVDQU TT1, (5*32)(oup); VMOVDQU TT2, (6*32)(oup); VMOVDQU TT3, (7*32)(oup)\n\tVPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0\n\tLEAQ       (8*32)(inp), inp\n\tLEAQ       (8*32)(oup), oup\n\tSUBQ       $8*32, inl\n\tJMP        openAVX2TailLoop\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 512 bytes of ciphertext\nopenAVX2Tail512:\n\tVMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3\n\tVMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3\n\tVMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2\n\tXORQ    itr1, itr1\n\tMOVQ    inp, itr2\n\nopenAVX2Tail512LoopB:\n\tpolyAdd(0(itr2))\n\tpolyMulAVX2\n\tLEAQ (2*8)(itr2), itr2\n\nopenAVX2Tail512LoopA:\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyAdd(0*8(itr2))\n\tpolyMulAVX2\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyAdd(2*8(itr2))\n\tpolyMulAVX2\n\tLEAQ     (4*8)(itr2), itr2\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3\n\tINCQ     itr1\n\tCMPQ     itr1, $4\n\tJLT      openAVX2Tail512LoopB\n\n\tCMPQ itr1, $10\n\tJNE  openAVX2Tail512LoopA\n\n\tMOVQ inl, itr1\n\tSUBQ $384, itr1\n\tANDQ $-16, itr1\n\nopenAVX2Tail512HashLoop:\n\tTESTQ itr1, itr1\n\tJE    openAVX2Tail512HashEnd\n\tpolyAdd(0(itr2))\n\tpolyMulAVX2\n\tLEAQ  16(itr2), itr2\n\tSUBQ  $16, itr1\n\tJMP   openAVX2Tail512HashLoop\n\nopenAVX2Tail512HashEnd:\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3\n\tVPADDD     ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3\n\tVMOVDQA    CC3, tmpStoreAVX2\n\tVPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0\n\tVPXOR      (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0\n\tVMOVDQU    CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup)\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\tVPXOR      (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup)\n\tVPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0\n\tVPXOR      (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup)\n\tVPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0\n\n\tLEAQ (12*32)(inp), inp\n\tLEAQ (12*32)(oup), oup\n\tSUBQ $12*32, inl\n\n\tJMP openAVX2TailLoop\n\n// ----------------------------------------------------------------------------\n// ----------------------------------------------------------------------------\n// func chacha20Poly1305Seal(dst, key, src, ad []byte)\nTEXT ·chacha20Poly1305Seal(SB), 0, $288-96\n\t// For aligned stack access\n\tMOVQ SP, BP\n\tADDQ $32, BP\n\tANDQ $-32, BP\n\tMOVQ dst+0(FP), oup\n\tMOVQ key+24(FP), keyp\n\tMOVQ src+48(FP), inp\n\tMOVQ src_len+56(FP), inl\n\tMOVQ ad+72(FP), adp\n\n\tCMPB ·useAVX2(SB), $1\n\tJE   chacha20Poly1305Seal_AVX2\n\n\t// Special optimization, for very short buffers\n\tCMPQ inl, $128\n\tJBE  sealSSE128 // About 15% faster\n\n\t// In the seal case - prepare the poly key + 3 blocks of stream in the first iteration\n\tMOVOU ·chacha20Constants<>(SB), A0\n\tMOVOU (1*16)(keyp), B0\n\tMOVOU (2*16)(keyp), C0\n\tMOVOU (3*16)(keyp), D0\n\n\t// Store state on stack for future use\n\tMOVO B0, state1Store\n\tMOVO C0, state2Store\n\n\t// Load state, increment counter blocks\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3\n\n\t// Store counters\n\tMOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store\n\tMOVQ $10, itr2\n\nsealSSEIntroLoop:\n\tMOVO         C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO         tmpStore, C3\n\tMOVO         C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO         tmpStore, C1\n\tshiftB0Left; shiftB1Left; shiftB2Left; shiftB3Left\n\tshiftC0Left; shiftC1Left; shiftC2Left; shiftC3Left\n\tshiftD0Left; shiftD1Left; shiftD2Left; shiftD3Left\n\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tshiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right\n\tshiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right\n\tshiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right\n\tDECQ          itr2\n\tJNE           sealSSEIntroLoop\n\n\t// Add in the state\n\tPADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3\n\tPADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3\n\tPADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3\n\tPADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3\n\n\t// Clamp and store the key\n\tPAND ·polyClampMask<>(SB), A0\n\tMOVO A0, rStore\n\tMOVO B0, sStore\n\n\t// Hash AAD\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\n\tMOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0\n\tPXOR  A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1\n\tMOVOU A1, (0*16)(oup); MOVOU B1, (1*16)(oup); MOVOU C1, (2*16)(oup); MOVOU D1, (3*16)(oup)\n\tMOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0\n\tPXOR  A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2\n\tMOVOU A2, (4*16)(oup); MOVOU B2, (5*16)(oup); MOVOU C2, (6*16)(oup); MOVOU D2, (7*16)(oup)\n\n\tMOVQ $128, itr1\n\tSUBQ $128, inl\n\tLEAQ 128(inp), inp\n\n\tMOVO A3, A1; MOVO B3, B1; MOVO C3, C1; MOVO D3, D1\n\n\tCMPQ inl, $64\n\tJBE  sealSSE128SealHash\n\n\tMOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0\n\tPXOR  A0, A3; PXOR B0, B3; PXOR C0, C3; PXOR D0, D3\n\tMOVOU A3, (8*16)(oup); MOVOU B3, (9*16)(oup); MOVOU C3, (10*16)(oup); MOVOU D3, (11*16)(oup)\n\n\tADDQ $64, itr1\n\tSUBQ $64, inl\n\tLEAQ 64(inp), inp\n\n\tMOVQ $2, itr1\n\tMOVQ $8, itr2\n\n\tCMPQ inl, $64\n\tJBE  sealSSETail64\n\tCMPQ inl, $128\n\tJBE  sealSSETail128\n\tCMPQ inl, $192\n\tJBE  sealSSETail192\n\nsealSSEMainLoop:\n\t// Load state, increment counter blocks\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO A2, A3; MOVO B2, B3; MOVO C2, C3; MOVO D2, D3; PADDL ·sseIncMask<>(SB), D3\n\n\t// Store counters\n\tMOVO D0, ctr0Store; MOVO D1, ctr1Store; MOVO D2, ctr2Store; MOVO D3, ctr3Store\n\nsealSSEInnerLoop:\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tpolyAdd(0(oup))\n\tshiftB0Left;  shiftB1Left; shiftB2Left; shiftB3Left\n\tshiftC0Left;  shiftC1Left; shiftC2Left; shiftC3Left\n\tshiftD0Left;  shiftD1Left; shiftD2Left; shiftD3Left\n\tpolyMulStage1\n\tpolyMulStage2\n\tLEAQ          (2*8)(oup), oup\n\tMOVO          C3, tmpStore\n\tchachaQR(A0, B0, C0, D0, C3); chachaQR(A1, B1, C1, D1, C3); chachaQR(A2, B2, C2, D2, C3)\n\tMOVO          tmpStore, C3\n\tMOVO          C1, tmpStore\n\tpolyMulStage3\n\tchachaQR(A3, B3, C3, D3, C1)\n\tMOVO          tmpStore, C1\n\tpolyMulReduceStage\n\tshiftB0Right; shiftB1Right; shiftB2Right; shiftB3Right\n\tshiftC0Right; shiftC1Right; shiftC2Right; shiftC3Right\n\tshiftD0Right; shiftD1Right; shiftD2Right; shiftD3Right\n\tDECQ          itr2\n\tJGE           sealSSEInnerLoop\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ          (2*8)(oup), oup\n\tDECQ          itr1\n\tJG            sealSSEInnerLoop\n\n\t// Add in the state\n\tPADDD ·chacha20Constants<>(SB), A0; PADDD ·chacha20Constants<>(SB), A1; PADDD ·chacha20Constants<>(SB), A2; PADDD ·chacha20Constants<>(SB), A3\n\tPADDD state1Store, B0; PADDD state1Store, B1; PADDD state1Store, B2; PADDD state1Store, B3\n\tPADDD state2Store, C0; PADDD state2Store, C1; PADDD state2Store, C2; PADDD state2Store, C3\n\tPADDD ctr0Store, D0; PADDD ctr1Store, D1; PADDD ctr2Store, D2; PADDD ctr3Store, D3\n\tMOVO  D3, tmpStore\n\n\t// Load - xor - store\n\tMOVOU (0*16)(inp), D3; PXOR D3, A0\n\tMOVOU (1*16)(inp), D3; PXOR D3, B0\n\tMOVOU (2*16)(inp), D3; PXOR D3, C0\n\tMOVOU (3*16)(inp), D3; PXOR D3, D0\n\tMOVOU A0, (0*16)(oup)\n\tMOVOU B0, (1*16)(oup)\n\tMOVOU C0, (2*16)(oup)\n\tMOVOU D0, (3*16)(oup)\n\tMOVO  tmpStore, D3\n\n\tMOVOU (4*16)(inp), A0; MOVOU (5*16)(inp), B0; MOVOU (6*16)(inp), C0; MOVOU (7*16)(inp), D0\n\tPXOR  A0, A1; PXOR B0, B1; PXOR C0, C1; PXOR D0, D1\n\tMOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup)\n\tMOVOU (8*16)(inp), A0; MOVOU (9*16)(inp), B0; MOVOU (10*16)(inp), C0; MOVOU (11*16)(inp), D0\n\tPXOR  A0, A2; PXOR B0, B2; PXOR C0, C2; PXOR D0, D2\n\tMOVOU A2, (8*16)(oup); MOVOU B2, (9*16)(oup); MOVOU C2, (10*16)(oup); MOVOU D2, (11*16)(oup)\n\tADDQ  $192, inp\n\tMOVQ  $192, itr1\n\tSUBQ  $192, inl\n\tMOVO  A3, A1\n\tMOVO  B3, B1\n\tMOVO  C3, C1\n\tMOVO  D3, D1\n\tCMPQ  inl, $64\n\tJBE   sealSSE128SealHash\n\tMOVOU (0*16)(inp), A0; MOVOU (1*16)(inp), B0; MOVOU (2*16)(inp), C0; MOVOU (3*16)(inp), D0\n\tPXOR  A0, A3; PXOR B0, B3; PXOR C0, C3; PXOR D0, D3\n\tMOVOU A3, (12*16)(oup); MOVOU B3, (13*16)(oup); MOVOU C3, (14*16)(oup); MOVOU D3, (15*16)(oup)\n\tLEAQ  64(inp), inp\n\tSUBQ  $64, inl\n\tMOVQ  $6, itr1\n\tMOVQ  $4, itr2\n\tCMPQ  inl, $192\n\tJG    sealSSEMainLoop\n\n\tMOVQ  inl, itr1\n\tTESTQ inl, inl\n\tJE    sealSSE128SealHash\n\tMOVQ  $6, itr1\n\tCMPQ  inl, $64\n\tJBE   sealSSETail64\n\tCMPQ  inl, $128\n\tJBE   sealSSETail128\n\tJMP   sealSSETail192\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 64 bytes of plaintext\nsealSSETail64:\n\t// Need to encrypt up to 64 bytes - prepare single block, hash 192 or 256 bytes\n\tMOVO  ·chacha20Constants<>(SB), A1\n\tMOVO  state1Store, B1\n\tMOVO  state2Store, C1\n\tMOVO  ctr3Store, D1\n\tPADDL ·sseIncMask<>(SB), D1\n\tMOVO  D1, ctr0Store\n\nsealSSETail64LoopA:\n\t// Perform ChaCha rounds, while hashing the previously encrypted ciphertext\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealSSETail64LoopB:\n\tchachaQR(A1, B1, C1, D1, T1)\n\tshiftB1Left;  shiftC1Left; shiftD1Left\n\tchachaQR(A1, B1, C1, D1, T1)\n\tshiftB1Right; shiftC1Right; shiftD1Right\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ          16(oup), oup\n\n\tDECQ itr1\n\tJG   sealSSETail64LoopA\n\n\tDECQ  itr2\n\tJGE   sealSSETail64LoopB\n\tPADDL ·chacha20Constants<>(SB), A1\n\tPADDL state1Store, B1\n\tPADDL state2Store, C1\n\tPADDL ctr0Store, D1\n\n\tJMP sealSSE128Seal\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 128 bytes of plaintext\nsealSSETail128:\n\t// Need to encrypt up to 128 bytes - prepare two blocks, hash 192 or 256 bytes\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store\n\nsealSSETail128LoopA:\n\t// Perform ChaCha rounds, while hashing the previously encrypted ciphertext\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealSSETail128LoopB:\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0)\n\tshiftB0Left;  shiftC0Left; shiftD0Left\n\tshiftB1Left;  shiftC1Left; shiftD1Left\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ          16(oup), oup\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\tshiftB1Right; shiftC1Right; shiftD1Right\n\n\tDECQ itr1\n\tJG   sealSSETail128LoopA\n\n\tDECQ itr2\n\tJGE  sealSSETail128LoopB\n\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1\n\tPADDL state1Store, B0; PADDL state1Store, B1\n\tPADDL state2Store, C0; PADDL state2Store, C1\n\tPADDL ctr0Store, D0; PADDL ctr1Store, D1\n\n\tMOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3\n\tPXOR  T0, A0; PXOR T1, B0; PXOR T2, C0; PXOR T3, D0\n\tMOVOU A0, (0*16)(oup); MOVOU B0, (1*16)(oup); MOVOU C0, (2*16)(oup); MOVOU D0, (3*16)(oup)\n\n\tMOVQ $64, itr1\n\tLEAQ 64(inp), inp\n\tSUBQ $64, inl\n\n\tJMP sealSSE128SealHash\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 192 bytes of plaintext\nsealSSETail192:\n\t// Need to encrypt up to 192 bytes - prepare three blocks, hash 192 or 256 bytes\n\tMOVO ·chacha20Constants<>(SB), A0; MOVO state1Store, B0; MOVO state2Store, C0; MOVO ctr3Store, D0; PADDL ·sseIncMask<>(SB), D0; MOVO D0, ctr0Store\n\tMOVO A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1; MOVO D1, ctr1Store\n\tMOVO A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2; MOVO D2, ctr2Store\n\nsealSSETail192LoopA:\n\t// Perform ChaCha rounds, while hashing the previously encrypted ciphertext\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealSSETail192LoopB:\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Left; shiftC0Left; shiftD0Left\n\tshiftB1Left; shiftC1Left; shiftD1Left\n\tshiftB2Left; shiftC2Left; shiftD2Left\n\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Right; shiftC0Right; shiftD0Right\n\tshiftB1Right; shiftC1Right; shiftD1Right\n\tshiftB2Right; shiftC2Right; shiftD2Right\n\n\tDECQ itr1\n\tJG   sealSSETail192LoopA\n\n\tDECQ itr2\n\tJGE  sealSSETail192LoopB\n\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2\n\tPADDL state1Store, B0; PADDL state1Store, B1; PADDL state1Store, B2\n\tPADDL state2Store, C0; PADDL state2Store, C1; PADDL state2Store, C2\n\tPADDL ctr0Store, D0; PADDL ctr1Store, D1; PADDL ctr2Store, D2\n\n\tMOVOU (0*16)(inp), T0; MOVOU (1*16)(inp), T1; MOVOU (2*16)(inp), T2; MOVOU (3*16)(inp), T3\n\tPXOR  T0, A0; PXOR T1, B0; PXOR T2, C0; PXOR T3, D0\n\tMOVOU A0, (0*16)(oup); MOVOU B0, (1*16)(oup); MOVOU C0, (2*16)(oup); MOVOU D0, (3*16)(oup)\n\tMOVOU (4*16)(inp), T0; MOVOU (5*16)(inp), T1; MOVOU (6*16)(inp), T2; MOVOU (7*16)(inp), T3\n\tPXOR  T0, A1; PXOR T1, B1; PXOR T2, C1; PXOR T3, D1\n\tMOVOU A1, (4*16)(oup); MOVOU B1, (5*16)(oup); MOVOU C1, (6*16)(oup); MOVOU D1, (7*16)(oup)\n\n\tMOVO A2, A1\n\tMOVO B2, B1\n\tMOVO C2, C1\n\tMOVO D2, D1\n\tMOVQ $128, itr1\n\tLEAQ 128(inp), inp\n\tSUBQ $128, inl\n\n\tJMP sealSSE128SealHash\n\n// ----------------------------------------------------------------------------\n// Special seal optimization for buffers smaller than 129 bytes\nsealSSE128:\n\t// For up to 128 bytes of ciphertext and 64 bytes for the poly key, we require to process three blocks\n\tMOVOU ·chacha20Constants<>(SB), A0; MOVOU (1*16)(keyp), B0; MOVOU (2*16)(keyp), C0; MOVOU (3*16)(keyp), D0\n\tMOVO  A0, A1; MOVO B0, B1; MOVO C0, C1; MOVO D0, D1; PADDL ·sseIncMask<>(SB), D1\n\tMOVO  A1, A2; MOVO B1, B2; MOVO C1, C2; MOVO D1, D2; PADDL ·sseIncMask<>(SB), D2\n\tMOVO  B0, T1; MOVO C0, T2; MOVO D1, T3\n\tMOVQ  $10, itr2\n\nsealSSE128InnerCipherLoop:\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Left;  shiftB1Left; shiftB2Left\n\tshiftC0Left;  shiftC1Left; shiftC2Left\n\tshiftD0Left;  shiftD1Left; shiftD2Left\n\tchachaQR(A0, B0, C0, D0, T0); chachaQR(A1, B1, C1, D1, T0); chachaQR(A2, B2, C2, D2, T0)\n\tshiftB0Right; shiftB1Right; shiftB2Right\n\tshiftC0Right; shiftC1Right; shiftC2Right\n\tshiftD0Right; shiftD1Right; shiftD2Right\n\tDECQ          itr2\n\tJNE           sealSSE128InnerCipherLoop\n\n\t// A0|B0 hold the Poly1305 32-byte key, C0,D0 can be discarded\n\tPADDL ·chacha20Constants<>(SB), A0; PADDL ·chacha20Constants<>(SB), A1; PADDL ·chacha20Constants<>(SB), A2\n\tPADDL T1, B0; PADDL T1, B1; PADDL T1, B2\n\tPADDL T2, C1; PADDL T2, C2\n\tPADDL T3, D1; PADDL ·sseIncMask<>(SB), T3; PADDL T3, D2\n\tPAND  ·polyClampMask<>(SB), A0\n\tMOVOU A0, rStore\n\tMOVOU B0, sStore\n\n\t// Hash\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\tXORQ itr1, itr1\n\nsealSSE128SealHash:\n\t// itr1 holds the number of bytes encrypted but not yet hashed\n\tCMPQ itr1, $16\n\tJB   sealSSE128Seal\n\tpolyAdd(0(oup))\n\tpolyMul\n\n\tSUBQ $16, itr1\n\tADDQ $16, oup\n\n\tJMP sealSSE128SealHash\n\nsealSSE128Seal:\n\tCMPQ inl, $16\n\tJB   sealSSETail\n\tSUBQ $16, inl\n\n\t// Load for decryption\n\tMOVOU (inp), T0\n\tPXOR  T0, A1\n\tMOVOU A1, (oup)\n\tLEAQ  (1*16)(inp), inp\n\tLEAQ  (1*16)(oup), oup\n\n\t// Extract for hashing\n\tMOVQ   A1, t0\n\tPSRLDQ $8, A1\n\tMOVQ A1, t1\n\tADDQ   t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2\n\tpolyMul\n\n\t// Shift the stream \"left\"\n\tMOVO B1, A1\n\tMOVO C1, B1\n\tMOVO D1, C1\n\tMOVO A2, D1\n\tMOVO B2, A2\n\tMOVO C2, B2\n\tMOVO D2, C2\n\tJMP  sealSSE128Seal\n\nsealSSETail:\n\tTESTQ inl, inl\n\tJE    sealSSEFinalize\n\n\t// We can only load the PT one byte at a time to avoid read after end of buffer\n\tMOVQ inl, itr2\n\tSHLQ $4, itr2\n\tLEAQ ·andMask<>(SB), t0\n\tMOVQ inl, itr1\n\tLEAQ -1(inp)(inl*1), inp\n\tXORQ t2, t2\n\tXORQ t3, t3\n\tXORQ AX, AX\n\nsealSSETailLoadLoop:\n\tSHLQ $8, t2, t3\n\tSHLQ $8, t2\n\tMOVB (inp), AX\n\tXORQ AX, t2\n\tLEAQ   -1(inp), inp\n\tDECQ   itr1\n\tJNE    sealSSETailLoadLoop\n\tMOVQ t2, 0+tmpStore\n\tMOVQ t3, 8+tmpStore\n\tPXOR 0+tmpStore, A1\n\tMOVOU  A1, (oup)\n\tMOVOU  -16(t0)(itr2*1), T0\n\tPAND   T0, A1\n\tMOVQ   A1, t0\n\tPSRLDQ $8, A1\n\tMOVQ   A1, t1\n\tADDQ   t0, acc0; ADCQ t1, acc1; ADCQ $1, acc2\n\tpolyMul\n\n\tADDQ inl, oup\n\nsealSSEFinalize:\n\t// Hash in the buffer lengths\n\tADDQ ad_len+80(FP), acc0\n\tADCQ src_len+56(FP), acc1\n\tADCQ $1, acc2\n\tpolyMul\n\n\t// Final reduce\n\tMOVQ    acc0, t0\n\tMOVQ    acc1, t1\n\tMOVQ    acc2, t2\n\tSUBQ    $-5, acc0\n\tSBBQ    $-1, acc1\n\tSBBQ    $3, acc2\n\tCMOVQCS t0, acc0\n\tCMOVQCS t1, acc1\n\tCMOVQCS t2, acc2\n\n\t// Add in the \"s\" part of the key\n\tADDQ 0+sStore, acc0\n\tADCQ 8+sStore, acc1\n\n\t// Finally store the tag at the end of the message\n\tMOVQ acc0, (0*8)(oup)\n\tMOVQ acc1, (1*8)(oup)\n\tRET\n\n// ----------------------------------------------------------------------------\n// ------------------------- AVX2 Code ----------------------------------------\nchacha20Poly1305Seal_AVX2:\n\tVZEROUPPER\n\tVMOVDQU ·chacha20Constants<>(SB), AA0\n\tBYTE    $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x70; BYTE $0x10 // broadcasti128 16(r8), ymm14\n\tBYTE    $0xc4; BYTE $0x42; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x20 // broadcasti128 32(r8), ymm12\n\tBYTE    $0xc4; BYTE $0xc2; BYTE $0x7d; BYTE $0x5a; BYTE $0x60; BYTE $0x30 // broadcasti128 48(r8), ymm4\n\tVPADDD  ·avx2InitMask<>(SB), DD0, DD0\n\n\t// Special optimizations, for very short buffers\n\tCMPQ inl, $192\n\tJBE  seal192AVX2 // 33% faster\n\tCMPQ inl, $320\n\tJBE  seal320AVX2 // 17% faster\n\n\t// For the general key prepare the key first - as a byproduct we have 64 bytes of cipher stream\n\tVMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3; VMOVDQA BB0, state1StoreAVX2\n\tVMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3; VMOVDQA CC0, state2StoreAVX2\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1; VMOVDQA DD0, ctr0StoreAVX2\n\tVPADDD  ·avx2IncMask<>(SB), DD1, DD2; VMOVDQA DD1, ctr1StoreAVX2\n\tVPADDD  ·avx2IncMask<>(SB), DD2, DD3; VMOVDQA DD2, ctr2StoreAVX2\n\tVMOVDQA DD3, ctr3StoreAVX2\n\tMOVQ    $10, itr2\n\nsealAVX2IntroLoop:\n\tVMOVDQA CC3, tmpStoreAVX2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3)\n\tVMOVDQA tmpStoreAVX2, CC3\n\tVMOVDQA CC1, tmpStoreAVX2\n\tchachaQR_AVX2(AA3, BB3, CC3, DD3, CC1)\n\tVMOVDQA tmpStoreAVX2, CC1\n\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0\n\tVPALIGNR $4, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $12, DD1, DD1, DD1\n\tVPALIGNR $4, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $12, DD2, DD2, DD2\n\tVPALIGNR $4, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $12, DD3, DD3, DD3\n\n\tVMOVDQA CC3, tmpStoreAVX2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3)\n\tVMOVDQA tmpStoreAVX2, CC3\n\tVMOVDQA CC1, tmpStoreAVX2\n\tchachaQR_AVX2(AA3, BB3, CC3, DD3, CC1)\n\tVMOVDQA tmpStoreAVX2, CC1\n\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0\n\tVPALIGNR $12, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $4, DD1, DD1, DD1\n\tVPALIGNR $12, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $4, DD2, DD2, DD2\n\tVPALIGNR $12, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $4, DD3, DD3, DD3\n\tDECQ     itr2\n\tJNE      sealAVX2IntroLoop\n\n\tVPADDD ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3\n\tVPADDD state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3\n\tVPADDD state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3\n\tVPADDD ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3\n\n\tVPERM2I128 $0x13, CC0, DD0, CC0 // Stream bytes 96 - 127\n\tVPERM2I128 $0x02, AA0, BB0, DD0 // The Poly1305 key\n\tVPERM2I128 $0x13, AA0, BB0, AA0 // Stream bytes 64 - 95\n\n\t// Clamp and store poly key\n\tVPAND   ·polyClampMask<>(SB), DD0, DD0\n\tVMOVDQA DD0, rsStoreAVX2\n\n\t// Hash AD\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\n\t// Can store at least 320 bytes\n\tVPXOR   (0*32)(inp), AA0, AA0\n\tVPXOR   (1*32)(inp), CC0, CC0\n\tVMOVDQU AA0, (0*32)(oup)\n\tVMOVDQU CC0, (1*32)(oup)\n\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\tVPXOR      (2*32)(inp), AA0, AA0; VPXOR (3*32)(inp), BB0, BB0; VPXOR (4*32)(inp), CC0, CC0; VPXOR (5*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (2*32)(oup); VMOVDQU BB0, (3*32)(oup); VMOVDQU CC0, (4*32)(oup); VMOVDQU DD0, (5*32)(oup)\n\tVPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0\n\tVPXOR      (6*32)(inp), AA0, AA0; VPXOR (7*32)(inp), BB0, BB0; VPXOR (8*32)(inp), CC0, CC0; VPXOR (9*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (6*32)(oup); VMOVDQU BB0, (7*32)(oup); VMOVDQU CC0, (8*32)(oup); VMOVDQU DD0, (9*32)(oup)\n\n\tMOVQ $320, itr1\n\tSUBQ $320, inl\n\tLEAQ 320(inp), inp\n\n\tVPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, CC3, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, CC3, DD3, DD0\n\tCMPQ       inl, $128\n\tJBE        sealAVX2SealHash\n\n\tVPXOR   (0*32)(inp), AA0, AA0; VPXOR (1*32)(inp), BB0, BB0; VPXOR (2*32)(inp), CC0, CC0; VPXOR (3*32)(inp), DD0, DD0\n\tVMOVDQU AA0, (10*32)(oup); VMOVDQU BB0, (11*32)(oup); VMOVDQU CC0, (12*32)(oup); VMOVDQU DD0, (13*32)(oup)\n\tSUBQ    $128, inl\n\tLEAQ    128(inp), inp\n\n\tMOVQ $8, itr1\n\tMOVQ $2, itr2\n\n\tCMPQ inl, $128\n\tJBE  sealAVX2Tail128\n\tCMPQ inl, $256\n\tJBE  sealAVX2Tail256\n\tCMPQ inl, $384\n\tJBE  sealAVX2Tail384\n\tCMPQ inl, $512\n\tJBE  sealAVX2Tail512\n\n\t// We have 448 bytes to hash, but main loop hashes 512 bytes at a time - perform some rounds, before the main loop\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3\n\tVMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2\n\n\tVMOVDQA CC3, tmpStoreAVX2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3)\n\tVMOVDQA tmpStoreAVX2, CC3\n\tVMOVDQA CC1, tmpStoreAVX2\n\tchachaQR_AVX2(AA3, BB3, CC3, DD3, CC1)\n\tVMOVDQA tmpStoreAVX2, CC1\n\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $12, DD0, DD0, DD0\n\tVPALIGNR $4, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $12, DD1, DD1, DD1\n\tVPALIGNR $4, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $12, DD2, DD2, DD2\n\tVPALIGNR $4, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $12, DD3, DD3, DD3\n\n\tVMOVDQA CC3, tmpStoreAVX2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, CC3); chachaQR_AVX2(AA1, BB1, CC1, DD1, CC3); chachaQR_AVX2(AA2, BB2, CC2, DD2, CC3)\n\tVMOVDQA tmpStoreAVX2, CC3\n\tVMOVDQA CC1, tmpStoreAVX2\n\tchachaQR_AVX2(AA3, BB3, CC3, DD3, CC1)\n\tVMOVDQA tmpStoreAVX2, CC1\n\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $8, CC0, CC0, CC0; VPALIGNR $4, DD0, DD0, DD0\n\tVPALIGNR $12, BB1, BB1, BB1; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $4, DD1, DD1, DD1\n\tVPALIGNR $12, BB2, BB2, BB2; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $4, DD2, DD2, DD2\n\tVPALIGNR $12, BB3, BB3, BB3; VPALIGNR $8, CC3, CC3, CC3; VPALIGNR $4, DD3, DD3, DD3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\n\tSUBQ $16, oup                  // Adjust the pointer\n\tMOVQ $9, itr1\n\tJMP  sealAVX2InternalLoopStart\n\nsealAVX2MainLoop:\n\t// Load state, increment counter blocks, store the incremented counters\n\tVMOVDQU ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3\n\tVMOVDQA ctr3StoreAVX2, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3\n\tVMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2\n\tMOVQ    $10, itr1\n\nsealAVX2InternalLoop:\n\tpolyAdd(0*8(oup))\n\tVPADDD  BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tpolyMulStage1_AVX2\n\tVPXOR   AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tpolyMulStage2_AVX2\n\tVPADDD  DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR   CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyMulStage3_AVX2\n\tVMOVDQA CC3, tmpStoreAVX2\n\tVPSLLD  $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD  $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD  $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD  $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA tmpStoreAVX2, CC3\n\tpolyMulReduceStage\n\nsealAVX2InternalLoopStart:\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tpolyAdd(2*8(oup))\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tpolyMulStage1_AVX2\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulStage2_AVX2\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tpolyMulStage3_AVX2\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tpolyMulReduceStage\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyAdd(4*8(oup))\n\tLEAQ     (6*8)(oup), oup\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulStage1_AVX2\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tpolyMulStage2_AVX2\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tpolyMulStage3_AVX2\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyMulReduceStage\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3\n\tDECQ     itr1\n\tJNE      sealAVX2InternalLoop\n\n\tVPADDD  ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3\n\tVPADDD  state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3\n\tVPADDD  state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3\n\tVPADDD  ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3\n\tVMOVDQA CC3, tmpStoreAVX2\n\n\t// We only hashed 480 of the 512 bytes available - hash the remaining 32 here\n\tpolyAdd(0*8(oup))\n\tpolyMulAVX2\n\tLEAQ       (4*8)(oup), oup\n\tVPERM2I128 $0x02, AA0, BB0, CC3; VPERM2I128 $0x13, AA0, BB0, BB0; VPERM2I128 $0x02, CC0, DD0, AA0; VPERM2I128 $0x13, CC0, DD0, CC0\n\tVPXOR      (0*32)(inp), CC3, CC3; VPXOR (1*32)(inp), AA0, AA0; VPXOR (2*32)(inp), BB0, BB0; VPXOR (3*32)(inp), CC0, CC0\n\tVMOVDQU    CC3, (0*32)(oup); VMOVDQU AA0, (1*32)(oup); VMOVDQU BB0, (2*32)(oup); VMOVDQU CC0, (3*32)(oup)\n\tVPERM2I128 $0x02, AA1, BB1, AA0; VPERM2I128 $0x02, CC1, DD1, BB0; VPERM2I128 $0x13, AA1, BB1, CC0; VPERM2I128 $0x13, CC1, DD1, DD0\n\tVPXOR      (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup)\n\n\t// and here\n\tpolyAdd(-2*8(oup))\n\tpolyMulAVX2\n\tVPERM2I128 $0x02, AA2, BB2, AA0; VPERM2I128 $0x02, CC2, DD2, BB0; VPERM2I128 $0x13, AA2, BB2, CC0; VPERM2I128 $0x13, CC2, DD2, DD0\n\tVPXOR      (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup)\n\tVPERM2I128 $0x02, AA3, BB3, AA0; VPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0; VPERM2I128 $0x13, AA3, BB3, CC0; VPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0\n\tVPXOR      (12*32)(inp), AA0, AA0; VPXOR (13*32)(inp), BB0, BB0; VPXOR (14*32)(inp), CC0, CC0; VPXOR (15*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (12*32)(oup); VMOVDQU BB0, (13*32)(oup); VMOVDQU CC0, (14*32)(oup); VMOVDQU DD0, (15*32)(oup)\n\tLEAQ       (32*16)(inp), inp\n\tSUBQ       $(32*16), inl\n\tCMPQ       inl, $512\n\tJG         sealAVX2MainLoop\n\n\t// Tail can only hash 480 bytes\n\tpolyAdd(0*8(oup))\n\tpolyMulAVX2\n\tpolyAdd(2*8(oup))\n\tpolyMulAVX2\n\tLEAQ 32(oup), oup\n\n\tMOVQ $10, itr1\n\tMOVQ $0, itr2\n\tCMPQ inl, $128\n\tJBE  sealAVX2Tail128\n\tCMPQ inl, $256\n\tJBE  sealAVX2Tail256\n\tCMPQ inl, $384\n\tJBE  sealAVX2Tail384\n\tJMP  sealAVX2Tail512\n\n// ----------------------------------------------------------------------------\n// Special optimization for buffers smaller than 193 bytes\nseal192AVX2:\n\t// For up to 192 bytes of ciphertext and 64 bytes for the poly key, we process four blocks\n\tVMOVDQA AA0, AA1\n\tVMOVDQA BB0, BB1\n\tVMOVDQA CC0, CC1\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA AA0, AA2\n\tVMOVDQA BB0, BB2\n\tVMOVDQA CC0, CC2\n\tVMOVDQA DD0, DD2\n\tVMOVDQA DD1, TT3\n\tMOVQ    $10, itr2\n\nsealAVX2192InnerCipherLoop:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR   $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1\n\tVPALIGNR   $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR   $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tVPALIGNR   $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1\n\tVPALIGNR   $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR   $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1\n\tDECQ       itr2\n\tJNE        sealAVX2192InnerCipherLoop\n\tVPADDD     AA2, AA0, AA0; VPADDD AA2, AA1, AA1\n\tVPADDD     BB2, BB0, BB0; VPADDD BB2, BB1, BB1\n\tVPADDD     CC2, CC0, CC0; VPADDD CC2, CC1, CC1\n\tVPADDD     DD2, DD0, DD0; VPADDD TT3, DD1, DD1\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\n\t// Clamp and store poly key\n\tVPAND   ·polyClampMask<>(SB), TT0, TT0\n\tVMOVDQA TT0, rsStoreAVX2\n\n\t// Stream for up to 192 bytes\n\tVPERM2I128 $0x13, AA0, BB0, AA0\n\tVPERM2I128 $0x13, CC0, DD0, BB0\n\tVPERM2I128 $0x02, AA1, BB1, CC0\n\tVPERM2I128 $0x02, CC1, DD1, DD0\n\tVPERM2I128 $0x13, AA1, BB1, AA1\n\tVPERM2I128 $0x13, CC1, DD1, BB1\n\nsealAVX2ShortSeal:\n\t// Hash aad\n\tMOVQ ad_len+80(FP), itr2\n\tCALL polyHashADInternal<>(SB)\n\tXORQ itr1, itr1\n\nsealAVX2SealHash:\n\t// itr1 holds the number of bytes encrypted but not yet hashed\n\tCMPQ itr1, $16\n\tJB   sealAVX2ShortSealLoop\n\tpolyAdd(0(oup))\n\tpolyMul\n\tSUBQ $16, itr1\n\tADDQ $16, oup\n\tJMP  sealAVX2SealHash\n\nsealAVX2ShortSealLoop:\n\tCMPQ inl, $32\n\tJB   sealAVX2ShortTail32\n\tSUBQ $32, inl\n\n\t// Load for encryption\n\tVPXOR   (inp), AA0, AA0\n\tVMOVDQU AA0, (oup)\n\tLEAQ    (1*32)(inp), inp\n\n\t// Now can hash\n\tpolyAdd(0*8(oup))\n\tpolyMulAVX2\n\tpolyAdd(2*8(oup))\n\tpolyMulAVX2\n\tLEAQ (1*32)(oup), oup\n\n\t// Shift stream left\n\tVMOVDQA BB0, AA0\n\tVMOVDQA CC0, BB0\n\tVMOVDQA DD0, CC0\n\tVMOVDQA AA1, DD0\n\tVMOVDQA BB1, AA1\n\tVMOVDQA CC1, BB1\n\tVMOVDQA DD1, CC1\n\tVMOVDQA AA2, DD1\n\tVMOVDQA BB2, AA2\n\tJMP     sealAVX2ShortSealLoop\n\nsealAVX2ShortTail32:\n\tCMPQ    inl, $16\n\tVMOVDQA A0, A1\n\tJB      sealAVX2ShortDone\n\n\tSUBQ $16, inl\n\n\t// Load for encryption\n\tVPXOR   (inp), A0, T0\n\tVMOVDQU T0, (oup)\n\tLEAQ    (1*16)(inp), inp\n\n\t// Hash\n\tpolyAdd(0*8(oup))\n\tpolyMulAVX2\n\tLEAQ       (1*16)(oup), oup\n\tVPERM2I128 $0x11, AA0, AA0, AA0\n\tVMOVDQA    A0, A1\n\nsealAVX2ShortDone:\n\tVZEROUPPER\n\tJMP sealSSETail\n\n// ----------------------------------------------------------------------------\n// Special optimization for buffers smaller than 321 bytes\nseal320AVX2:\n\t// For up to 320 bytes of ciphertext and 64 bytes for the poly key, we process six blocks\n\tVMOVDQA AA0, AA1; VMOVDQA BB0, BB1; VMOVDQA CC0, CC1; VPADDD ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA AA0, AA2; VMOVDQA BB0, BB2; VMOVDQA CC0, CC2; VPADDD ·avx2IncMask<>(SB), DD1, DD2\n\tVMOVDQA BB0, TT1; VMOVDQA CC0, TT2; VMOVDQA DD0, TT3\n\tMOVQ    $10, itr2\n\nsealAVX2320InnerCipherLoop:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2\n\tDECQ     itr2\n\tJNE      sealAVX2320InnerCipherLoop\n\n\tVMOVDQA ·chacha20Constants<>(SB), TT0\n\tVPADDD  TT0, AA0, AA0; VPADDD TT0, AA1, AA1; VPADDD TT0, AA2, AA2\n\tVPADDD  TT1, BB0, BB0; VPADDD TT1, BB1, BB1; VPADDD TT1, BB2, BB2\n\tVPADDD  TT2, CC0, CC0; VPADDD TT2, CC1, CC1; VPADDD TT2, CC2, CC2\n\tVMOVDQA ·avx2IncMask<>(SB), TT0\n\tVPADDD  TT3, DD0, DD0; VPADDD TT0, TT3, TT3\n\tVPADDD  TT3, DD1, DD1; VPADDD TT0, TT3, TT3\n\tVPADDD  TT3, DD2, DD2\n\n\t// Clamp and store poly key\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\tVPAND      ·polyClampMask<>(SB), TT0, TT0\n\tVMOVDQA    TT0, rsStoreAVX2\n\n\t// Stream for up to 320 bytes\n\tVPERM2I128 $0x13, AA0, BB0, AA0\n\tVPERM2I128 $0x13, CC0, DD0, BB0\n\tVPERM2I128 $0x02, AA1, BB1, CC0\n\tVPERM2I128 $0x02, CC1, DD1, DD0\n\tVPERM2I128 $0x13, AA1, BB1, AA1\n\tVPERM2I128 $0x13, CC1, DD1, BB1\n\tVPERM2I128 $0x02, AA2, BB2, CC1\n\tVPERM2I128 $0x02, CC2, DD2, DD1\n\tVPERM2I128 $0x13, AA2, BB2, AA2\n\tVPERM2I128 $0x13, CC2, DD2, BB2\n\tJMP        sealAVX2ShortSeal\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 128 bytes of ciphertext\nsealAVX2Tail128:\n\t// Need to decrypt up to 128 bytes - prepare two blocks\n\t// If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed\n\t// If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed\n\tVMOVDQA ·chacha20Constants<>(SB), AA0\n\tVMOVDQA state1StoreAVX2, BB0\n\tVMOVDQA state2StoreAVX2, CC0\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0\n\tVMOVDQA DD0, DD1\n\nsealAVX2Tail128LoopA:\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealAVX2Tail128LoopB:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0)\n\tpolyAdd(0(oup))\n\tpolyMul\n\tVPALIGNR $4, BB0, BB0, BB0\n\tVPALIGNR $8, CC0, CC0, CC0\n\tVPALIGNR $12, DD0, DD0, DD0\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0)\n\tpolyAdd(16(oup))\n\tpolyMul\n\tLEAQ     32(oup), oup\n\tVPALIGNR $12, BB0, BB0, BB0\n\tVPALIGNR $8, CC0, CC0, CC0\n\tVPALIGNR $4, DD0, DD0, DD0\n\tDECQ     itr1\n\tJG       sealAVX2Tail128LoopA\n\tDECQ     itr2\n\tJGE      sealAVX2Tail128LoopB\n\n\tVPADDD ·chacha20Constants<>(SB), AA0, AA1\n\tVPADDD state1StoreAVX2, BB0, BB1\n\tVPADDD state2StoreAVX2, CC0, CC1\n\tVPADDD DD1, DD0, DD1\n\n\tVPERM2I128 $0x02, AA1, BB1, AA0\n\tVPERM2I128 $0x02, CC1, DD1, BB0\n\tVPERM2I128 $0x13, AA1, BB1, CC0\n\tVPERM2I128 $0x13, CC1, DD1, DD0\n\tJMP        sealAVX2ShortSealLoop\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 256 bytes of ciphertext\nsealAVX2Tail256:\n\t// Need to decrypt up to 256 bytes - prepare two blocks\n\t// If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed\n\t// If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA ·chacha20Constants<>(SB), AA1\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA state1StoreAVX2, BB1\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA state2StoreAVX2, CC1\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD1\n\tVMOVDQA DD0, TT1\n\tVMOVDQA DD1, TT2\n\nsealAVX2Tail256LoopA:\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealAVX2Tail256LoopB:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tpolyAdd(0(oup))\n\tpolyMul\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0)\n\tpolyAdd(16(oup))\n\tpolyMul\n\tLEAQ     32(oup), oup\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1\n\tDECQ     itr1\n\tJG       sealAVX2Tail256LoopA\n\tDECQ     itr2\n\tJGE      sealAVX2Tail256LoopB\n\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1\n\tVPADDD     TT1, DD0, DD0; VPADDD TT2, DD1, DD1\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\tVPERM2I128 $0x02, CC0, DD0, TT1\n\tVPERM2I128 $0x13, AA0, BB0, TT2\n\tVPERM2I128 $0x13, CC0, DD0, TT3\n\tVPXOR      (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3\n\tVMOVDQU    TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup)\n\tMOVQ       $128, itr1\n\tLEAQ       128(inp), inp\n\tSUBQ       $128, inl\n\tVPERM2I128 $0x02, AA1, BB1, AA0\n\tVPERM2I128 $0x02, CC1, DD1, BB0\n\tVPERM2I128 $0x13, AA1, BB1, CC0\n\tVPERM2I128 $0x13, CC1, DD1, DD0\n\n\tJMP sealAVX2SealHash\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 384 bytes of ciphertext\nsealAVX2Tail384:\n\t// Need to decrypt up to 384 bytes - prepare two blocks\n\t// If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed\n\t// If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2\n\tVMOVDQA DD0, TT1; VMOVDQA DD1, TT2; VMOVDQA DD2, TT3\n\nsealAVX2Tail384LoopA:\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealAVX2Tail384LoopB:\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tpolyAdd(0(oup))\n\tpolyMul\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2\n\tchachaQR_AVX2(AA0, BB0, CC0, DD0, TT0); chachaQR_AVX2(AA1, BB1, CC1, DD1, TT0); chachaQR_AVX2(AA2, BB2, CC2, DD2, TT0)\n\tpolyAdd(16(oup))\n\tpolyMul\n\tLEAQ     32(oup), oup\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2\n\tDECQ     itr1\n\tJG       sealAVX2Tail384LoopA\n\tDECQ     itr2\n\tJGE      sealAVX2Tail384LoopB\n\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2\n\tVPADDD     TT1, DD0, DD0; VPADDD TT2, DD1, DD1; VPADDD TT3, DD2, DD2\n\tVPERM2I128 $0x02, AA0, BB0, TT0\n\tVPERM2I128 $0x02, CC0, DD0, TT1\n\tVPERM2I128 $0x13, AA0, BB0, TT2\n\tVPERM2I128 $0x13, CC0, DD0, TT3\n\tVPXOR      (0*32)(inp), TT0, TT0; VPXOR (1*32)(inp), TT1, TT1; VPXOR (2*32)(inp), TT2, TT2; VPXOR (3*32)(inp), TT3, TT3\n\tVMOVDQU    TT0, (0*32)(oup); VMOVDQU TT1, (1*32)(oup); VMOVDQU TT2, (2*32)(oup); VMOVDQU TT3, (3*32)(oup)\n\tVPERM2I128 $0x02, AA1, BB1, TT0\n\tVPERM2I128 $0x02, CC1, DD1, TT1\n\tVPERM2I128 $0x13, AA1, BB1, TT2\n\tVPERM2I128 $0x13, CC1, DD1, TT3\n\tVPXOR      (4*32)(inp), TT0, TT0; VPXOR (5*32)(inp), TT1, TT1; VPXOR (6*32)(inp), TT2, TT2; VPXOR (7*32)(inp), TT3, TT3\n\tVMOVDQU    TT0, (4*32)(oup); VMOVDQU TT1, (5*32)(oup); VMOVDQU TT2, (6*32)(oup); VMOVDQU TT3, (7*32)(oup)\n\tMOVQ       $256, itr1\n\tLEAQ       256(inp), inp\n\tSUBQ       $256, inl\n\tVPERM2I128 $0x02, AA2, BB2, AA0\n\tVPERM2I128 $0x02, CC2, DD2, BB0\n\tVPERM2I128 $0x13, AA2, BB2, CC0\n\tVPERM2I128 $0x13, CC2, DD2, DD0\n\n\tJMP sealAVX2SealHash\n\n// ----------------------------------------------------------------------------\n// Special optimization for the last 512 bytes of ciphertext\nsealAVX2Tail512:\n\t// Need to decrypt up to 512 bytes - prepare two blocks\n\t// If we got here after the main loop - there are 512 encrypted bytes waiting to be hashed\n\t// If we got here before the main loop - there are 448 encrpyred bytes waiting to be hashed\n\tVMOVDQA ·chacha20Constants<>(SB), AA0; VMOVDQA AA0, AA1; VMOVDQA AA0, AA2; VMOVDQA AA0, AA3\n\tVMOVDQA state1StoreAVX2, BB0; VMOVDQA BB0, BB1; VMOVDQA BB0, BB2; VMOVDQA BB0, BB3\n\tVMOVDQA state2StoreAVX2, CC0; VMOVDQA CC0, CC1; VMOVDQA CC0, CC2; VMOVDQA CC0, CC3\n\tVMOVDQA ctr3StoreAVX2, DD0\n\tVPADDD  ·avx2IncMask<>(SB), DD0, DD0; VPADDD ·avx2IncMask<>(SB), DD0, DD1; VPADDD ·avx2IncMask<>(SB), DD1, DD2; VPADDD ·avx2IncMask<>(SB), DD2, DD3\n\tVMOVDQA DD0, ctr0StoreAVX2; VMOVDQA DD1, ctr1StoreAVX2; VMOVDQA DD2, ctr2StoreAVX2; VMOVDQA DD3, ctr3StoreAVX2\n\nsealAVX2Tail512LoopA:\n\tpolyAdd(0(oup))\n\tpolyMul\n\tLEAQ 16(oup), oup\n\nsealAVX2Tail512LoopB:\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tpolyAdd(0*8(oup))\n\tpolyMulAVX2\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPALIGNR $4, BB0, BB0, BB0; VPALIGNR $4, BB1, BB1, BB1; VPALIGNR $4, BB2, BB2, BB2; VPALIGNR $4, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $12, DD0, DD0, DD0; VPALIGNR $12, DD1, DD1, DD1; VPALIGNR $12, DD2, DD2, DD2; VPALIGNR $12, DD3, DD3, DD3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol16<>(SB), DD0, DD0; VPSHUFB ·rol16<>(SB), DD1, DD1; VPSHUFB ·rol16<>(SB), DD2, DD2; VPSHUFB ·rol16<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tpolyAdd(2*8(oup))\n\tpolyMulAVX2\n\tLEAQ     (4*8)(oup), oup\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $12, BB0, CC3; VPSRLD $20, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $12, BB1, CC3; VPSRLD $20, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $12, BB2, CC3; VPSRLD $20, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $12, BB3, CC3; VPSRLD $20, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPADDD   BB0, AA0, AA0; VPADDD BB1, AA1, AA1; VPADDD BB2, AA2, AA2; VPADDD BB3, AA3, AA3\n\tVPXOR    AA0, DD0, DD0; VPXOR AA1, DD1, DD1; VPXOR AA2, DD2, DD2; VPXOR AA3, DD3, DD3\n\tVPSHUFB  ·rol8<>(SB), DD0, DD0; VPSHUFB ·rol8<>(SB), DD1, DD1; VPSHUFB ·rol8<>(SB), DD2, DD2; VPSHUFB ·rol8<>(SB), DD3, DD3\n\tVPADDD   DD0, CC0, CC0; VPADDD DD1, CC1, CC1; VPADDD DD2, CC2, CC2; VPADDD DD3, CC3, CC3\n\tVPXOR    CC0, BB0, BB0; VPXOR CC1, BB1, BB1; VPXOR CC2, BB2, BB2; VPXOR CC3, BB3, BB3\n\tVMOVDQA  CC3, tmpStoreAVX2\n\tVPSLLD   $7, BB0, CC3; VPSRLD $25, BB0, BB0; VPXOR CC3, BB0, BB0\n\tVPSLLD   $7, BB1, CC3; VPSRLD $25, BB1, BB1; VPXOR CC3, BB1, BB1\n\tVPSLLD   $7, BB2, CC3; VPSRLD $25, BB2, BB2; VPXOR CC3, BB2, BB2\n\tVPSLLD   $7, BB3, CC3; VPSRLD $25, BB3, BB3; VPXOR CC3, BB3, BB3\n\tVMOVDQA  tmpStoreAVX2, CC3\n\tVPALIGNR $12, BB0, BB0, BB0; VPALIGNR $12, BB1, BB1, BB1; VPALIGNR $12, BB2, BB2, BB2; VPALIGNR $12, BB3, BB3, BB3\n\tVPALIGNR $8, CC0, CC0, CC0; VPALIGNR $8, CC1, CC1, CC1; VPALIGNR $8, CC2, CC2, CC2; VPALIGNR $8, CC3, CC3, CC3\n\tVPALIGNR $4, DD0, DD0, DD0; VPALIGNR $4, DD1, DD1, DD1; VPALIGNR $4, DD2, DD2, DD2; VPALIGNR $4, DD3, DD3, DD3\n\n\tDECQ itr1\n\tJG   sealAVX2Tail512LoopA\n\tDECQ itr2\n\tJGE  sealAVX2Tail512LoopB\n\n\tVPADDD     ·chacha20Constants<>(SB), AA0, AA0; VPADDD ·chacha20Constants<>(SB), AA1, AA1; VPADDD ·chacha20Constants<>(SB), AA2, AA2; VPADDD ·chacha20Constants<>(SB), AA3, AA3\n\tVPADDD     state1StoreAVX2, BB0, BB0; VPADDD state1StoreAVX2, BB1, BB1; VPADDD state1StoreAVX2, BB2, BB2; VPADDD state1StoreAVX2, BB3, BB3\n\tVPADDD     state2StoreAVX2, CC0, CC0; VPADDD state2StoreAVX2, CC1, CC1; VPADDD state2StoreAVX2, CC2, CC2; VPADDD state2StoreAVX2, CC3, CC3\n\tVPADDD     ctr0StoreAVX2, DD0, DD0; VPADDD ctr1StoreAVX2, DD1, DD1; VPADDD ctr2StoreAVX2, DD2, DD2; VPADDD ctr3StoreAVX2, DD3, DD3\n\tVMOVDQA    CC3, tmpStoreAVX2\n\tVPERM2I128 $0x02, AA0, BB0, CC3\n\tVPXOR      (0*32)(inp), CC3, CC3\n\tVMOVDQU    CC3, (0*32)(oup)\n\tVPERM2I128 $0x02, CC0, DD0, CC3\n\tVPXOR      (1*32)(inp), CC3, CC3\n\tVMOVDQU    CC3, (1*32)(oup)\n\tVPERM2I128 $0x13, AA0, BB0, CC3\n\tVPXOR      (2*32)(inp), CC3, CC3\n\tVMOVDQU    CC3, (2*32)(oup)\n\tVPERM2I128 $0x13, CC0, DD0, CC3\n\tVPXOR      (3*32)(inp), CC3, CC3\n\tVMOVDQU    CC3, (3*32)(oup)\n\n\tVPERM2I128 $0x02, AA1, BB1, AA0\n\tVPERM2I128 $0x02, CC1, DD1, BB0\n\tVPERM2I128 $0x13, AA1, BB1, CC0\n\tVPERM2I128 $0x13, CC1, DD1, DD0\n\tVPXOR      (4*32)(inp), AA0, AA0; VPXOR (5*32)(inp), BB0, BB0; VPXOR (6*32)(inp), CC0, CC0; VPXOR (7*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (4*32)(oup); VMOVDQU BB0, (5*32)(oup); VMOVDQU CC0, (6*32)(oup); VMOVDQU DD0, (7*32)(oup)\n\n\tVPERM2I128 $0x02, AA2, BB2, AA0\n\tVPERM2I128 $0x02, CC2, DD2, BB0\n\tVPERM2I128 $0x13, AA2, BB2, CC0\n\tVPERM2I128 $0x13, CC2, DD2, DD0\n\tVPXOR      (8*32)(inp), AA0, AA0; VPXOR (9*32)(inp), BB0, BB0; VPXOR (10*32)(inp), CC0, CC0; VPXOR (11*32)(inp), DD0, DD0\n\tVMOVDQU    AA0, (8*32)(oup); VMOVDQU BB0, (9*32)(oup); VMOVDQU CC0, (10*32)(oup); VMOVDQU DD0, (11*32)(oup)\n\n\tMOVQ       $384, itr1\n\tLEAQ       384(inp), inp\n\tSUBQ       $384, inl\n\tVPERM2I128 $0x02, AA3, BB3, AA0\n\tVPERM2I128 $0x02, tmpStoreAVX2, DD3, BB0\n\tVPERM2I128 $0x13, AA3, BB3, CC0\n\tVPERM2I128 $0x13, tmpStoreAVX2, DD3, DD0\n\n\tJMP sealAVX2SealHash\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/chacha20poly1305_generic.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 chacha20poly1305\n\nimport (\n\t\"encoding/binary\"\n\n\t\"gossh/crypto/chacha20\"\n\t\"gossh/crypto/internal/alias\"\n\t\"gossh/crypto/internal/poly1305\"\n)\n\nfunc writeWithPadding(p *poly1305.MAC, b []byte) {\n\tp.Write(b)\n\tif rem := len(b) % 16; rem != 0 {\n\t\tvar buf [16]byte\n\t\tpadLen := 16 - rem\n\t\tp.Write(buf[:padLen])\n\t}\n}\n\nfunc writeUint64(p *poly1305.MAC, n int) {\n\tvar buf [8]byte\n\tbinary.LittleEndian.PutUint64(buf[:], uint64(n))\n\tp.Write(buf[:])\n}\n\nfunc (c *chacha20poly1305) sealGeneric(dst, nonce, plaintext, additionalData []byte) []byte {\n\tret, out := sliceForAppend(dst, len(plaintext)+poly1305.TagSize)\n\tciphertext, tag := out[:len(plaintext)], out[len(plaintext):]\n\tif alias.InexactOverlap(out, plaintext) {\n\t\tpanic(\"chacha20poly1305: invalid buffer overlap\")\n\t}\n\n\tvar polyKey [32]byte\n\ts, _ := chacha20.NewUnauthenticatedCipher(c.key[:], nonce)\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.SetCounter(1) // set the counter to 1, skipping 32 bytes\n\ts.XORKeyStream(ciphertext, plaintext)\n\n\tp := poly1305.New(&polyKey)\n\twriteWithPadding(p, additionalData)\n\twriteWithPadding(p, ciphertext)\n\twriteUint64(p, len(additionalData))\n\twriteUint64(p, len(plaintext))\n\tp.Sum(tag[:0])\n\n\treturn ret\n}\n\nfunc (c *chacha20poly1305) openGeneric(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) {\n\ttag := ciphertext[len(ciphertext)-16:]\n\tciphertext = ciphertext[:len(ciphertext)-16]\n\n\tvar polyKey [32]byte\n\ts, _ := chacha20.NewUnauthenticatedCipher(c.key[:], nonce)\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.SetCounter(1) // set the counter to 1, skipping 32 bytes\n\n\tp := poly1305.New(&polyKey)\n\twriteWithPadding(p, additionalData)\n\twriteWithPadding(p, ciphertext)\n\twriteUint64(p, len(additionalData))\n\twriteUint64(p, len(ciphertext))\n\n\tret, out := sliceForAppend(dst, len(ciphertext))\n\tif alias.InexactOverlap(out, ciphertext) {\n\t\tpanic(\"chacha20poly1305: invalid buffer overlap\")\n\t}\n\tif !p.Verify(tag) {\n\t\tfor i := range out {\n\t\t\tout[i] = 0\n\t\t}\n\t\treturn nil, errOpen\n\t}\n\n\ts.XORKeyStream(out, ciphertext)\n\treturn ret, nil\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/chacha20poly1305_noasm.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !amd64 || !gc || purego\n\npackage chacha20poly1305\n\nfunc (c *chacha20poly1305) seal(dst, nonce, plaintext, additionalData []byte) []byte {\n\treturn c.sealGeneric(dst, nonce, plaintext, additionalData)\n}\n\nfunc (c *chacha20poly1305) open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) {\n\treturn c.openGeneric(dst, nonce, ciphertext, additionalData)\n}\n"
  },
  {
    "path": "gossh/crypto/chacha20poly1305/xchacha20poly1305.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 chacha20poly1305\n\nimport (\n\t\"crypto/cipher\"\n\t\"errors\"\n\n\t\"gossh/crypto/chacha20\"\n)\n\ntype xchacha20poly1305 struct {\n\tkey [KeySize]byte\n}\n\n// NewX returns a XChaCha20-Poly1305 AEAD that uses the given 256-bit key.\n//\n// XChaCha20-Poly1305 is a ChaCha20-Poly1305 variant that takes a longer nonce,\n// suitable to be generated randomly without risk of collisions. It should be\n// preferred when nonce uniqueness cannot be trivially ensured, or whenever\n// nonces are randomly generated.\nfunc NewX(key []byte) (cipher.AEAD, error) {\n\tif len(key) != KeySize {\n\t\treturn nil, errors.New(\"chacha20poly1305: bad key length\")\n\t}\n\tret := new(xchacha20poly1305)\n\tcopy(ret.key[:], key)\n\treturn ret, nil\n}\n\nfunc (*xchacha20poly1305) NonceSize() int {\n\treturn NonceSizeX\n}\n\nfunc (*xchacha20poly1305) Overhead() int {\n\treturn Overhead\n}\n\nfunc (x *xchacha20poly1305) Seal(dst, nonce, plaintext, additionalData []byte) []byte {\n\tif len(nonce) != NonceSizeX {\n\t\tpanic(\"chacha20poly1305: bad nonce length passed to Seal\")\n\t}\n\n\t// XChaCha20-Poly1305 technically supports a 64-bit counter, so there is no\n\t// size limit. However, since we reuse the ChaCha20-Poly1305 implementation,\n\t// the second half of the counter is not available. This is unlikely to be\n\t// an issue because the cipher.AEAD API requires the entire message to be in\n\t// memory, and the counter overflows at 256 GB.\n\tif uint64(len(plaintext)) > (1<<38)-64 {\n\t\tpanic(\"chacha20poly1305: plaintext too large\")\n\t}\n\n\tc := new(chacha20poly1305)\n\thKey, _ := chacha20.HChaCha20(x.key[:], nonce[0:16])\n\tcopy(c.key[:], hKey)\n\n\t// The first 4 bytes of the final nonce are unused counter space.\n\tcNonce := make([]byte, NonceSize)\n\tcopy(cNonce[4:12], nonce[16:24])\n\n\treturn c.seal(dst, cNonce[:], plaintext, additionalData)\n}\n\nfunc (x *xchacha20poly1305) Open(dst, nonce, ciphertext, additionalData []byte) ([]byte, error) {\n\tif len(nonce) != NonceSizeX {\n\t\tpanic(\"chacha20poly1305: bad nonce length passed to Open\")\n\t}\n\tif len(ciphertext) < 16 {\n\t\treturn nil, errOpen\n\t}\n\tif uint64(len(ciphertext)) > (1<<38)-48 {\n\t\tpanic(\"chacha20poly1305: ciphertext too large\")\n\t}\n\n\tc := new(chacha20poly1305)\n\thKey, _ := chacha20.HChaCha20(x.key[:], nonce[0:16])\n\tcopy(c.key[:], hKey)\n\n\t// The first 4 bytes of the final nonce are unused counter space.\n\tcNonce := make([]byte, NonceSize)\n\tcopy(cNonce[4:12], nonce[16:24])\n\n\treturn c.open(dst, cNonce[:], ciphertext, additionalData)\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/curve25519.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package curve25519 provides an implementation of the X25519 function, which\n// performs scalar multiplication on the elliptic curve known as Curve25519.\n// See RFC 7748.\n//\n// Starting in Go 1.20, this package is a wrapper for the X25519 implementation\n// in the crypto/ecdh package.\npackage curve25519 // import \"golang.org/x/crypto/curve25519\"\n\n// ScalarMult sets dst to the product scalar * point.\n//\n// Deprecated: when provided a low-order point, ScalarMult will set dst to all\n// zeroes, irrespective of the scalar. Instead, use the X25519 function, which\n// will return an error.\nfunc ScalarMult(dst, scalar, point *[32]byte) {\n\tscalarMult(dst, scalar, point)\n}\n\n// ScalarBaseMult sets dst to the product scalar * base where base is the\n// standard generator.\n//\n// It is recommended to use the X25519 function with Basepoint instead, as\n// copying into fixed size arrays can lead to unexpected bugs.\nfunc ScalarBaseMult(dst, scalar *[32]byte) {\n\tscalarBaseMult(dst, scalar)\n}\n\nconst (\n\t// ScalarSize is the size of the scalar input to X25519.\n\tScalarSize = 32\n\t// PointSize is the size of the point input to X25519.\n\tPointSize = 32\n)\n\n// Basepoint is the canonical Curve25519 generator.\nvar Basepoint []byte\n\nvar basePoint = [32]byte{9}\n\nfunc init() { Basepoint = basePoint[:] }\n\n// X25519 returns the result of the scalar multiplication (scalar * point),\n// according to RFC 7748, Section 5. scalar, point and the return value are\n// slices of 32 bytes.\n//\n// scalar can be generated at random, for example with crypto/rand. point should\n// be either Basepoint or the output of another X25519 call.\n//\n// If point is Basepoint (but not if it's a different slice with the same\n// contents) a precomputed implementation might be used for performance.\nfunc X25519(scalar, point []byte) ([]byte, error) {\n\t// Outline the body of function, to let the allocation be inlined in the\n\t// caller, and possibly avoid escaping to the heap.\n\tvar dst [32]byte\n\treturn x25519(&dst, scalar, point)\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/curve25519_compat.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.20\n\npackage curve25519\n\nimport (\n\t\"crypto/subtle\"\n\t\"errors\"\n\t\"strconv\"\n\n\t\"gossh/crypto/curve25519/internal/field\"\n)\n\nfunc scalarMult(dst, scalar, point *[32]byte) {\n\tvar e [32]byte\n\n\tcopy(e[:], scalar[:])\n\te[0] &= 248\n\te[31] &= 127\n\te[31] |= 64\n\n\tvar x1, x2, z2, x3, z3, tmp0, tmp1 field.Element\n\tx1.SetBytes(point[:])\n\tx2.One()\n\tx3.Set(&x1)\n\tz3.One()\n\n\tswap := 0\n\tfor pos := 254; pos >= 0; pos-- {\n\t\tb := e[pos/8] >> uint(pos&7)\n\t\tb &= 1\n\t\tswap ^= int(b)\n\t\tx2.Swap(&x3, swap)\n\t\tz2.Swap(&z3, swap)\n\t\tswap = int(b)\n\n\t\ttmp0.Subtract(&x3, &z3)\n\t\ttmp1.Subtract(&x2, &z2)\n\t\tx2.Add(&x2, &z2)\n\t\tz2.Add(&x3, &z3)\n\t\tz3.Multiply(&tmp0, &x2)\n\t\tz2.Multiply(&z2, &tmp1)\n\t\ttmp0.Square(&tmp1)\n\t\ttmp1.Square(&x2)\n\t\tx3.Add(&z3, &z2)\n\t\tz2.Subtract(&z3, &z2)\n\t\tx2.Multiply(&tmp1, &tmp0)\n\t\ttmp1.Subtract(&tmp1, &tmp0)\n\t\tz2.Square(&z2)\n\n\t\tz3.Mult32(&tmp1, 121666)\n\t\tx3.Square(&x3)\n\t\ttmp0.Add(&tmp0, &z3)\n\t\tz3.Multiply(&x1, &z2)\n\t\tz2.Multiply(&tmp1, &tmp0)\n\t}\n\n\tx2.Swap(&x3, swap)\n\tz2.Swap(&z3, swap)\n\n\tz2.Invert(&z2)\n\tx2.Multiply(&x2, &z2)\n\tcopy(dst[:], x2.Bytes())\n}\n\nfunc scalarBaseMult(dst, scalar *[32]byte) {\n\tcheckBasepoint()\n\tscalarMult(dst, scalar, &basePoint)\n}\n\nfunc x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {\n\tvar in [32]byte\n\tif l := len(scalar); l != 32 {\n\t\treturn nil, errors.New(\"bad scalar length: \" + strconv.Itoa(l) + \", expected 32\")\n\t}\n\tif l := len(point); l != 32 {\n\t\treturn nil, errors.New(\"bad point length: \" + strconv.Itoa(l) + \", expected 32\")\n\t}\n\tcopy(in[:], scalar)\n\tif &point[0] == &Basepoint[0] {\n\t\tscalarBaseMult(dst, &in)\n\t} else {\n\t\tvar base, zero [32]byte\n\t\tcopy(base[:], point)\n\t\tscalarMult(dst, &in, &base)\n\t\tif subtle.ConstantTimeCompare(dst[:], zero[:]) == 1 {\n\t\t\treturn nil, errors.New(\"bad input point: low order point\")\n\t\t}\n\t}\n\treturn dst[:], nil\n}\n\nfunc checkBasepoint() {\n\tif subtle.ConstantTimeCompare(Basepoint, []byte{\n\t\t0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t\t0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\t}) != 1 {\n\t\tpanic(\"curve25519: global Basepoint value was modified\")\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/curve25519_go120.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.20\n\npackage curve25519\n\nimport \"crypto/ecdh\"\n\nfunc x25519(dst *[32]byte, scalar, point []byte) ([]byte, error) {\n\tcurve := ecdh.X25519()\n\tpub, err := curve.NewPublicKey(point)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpriv, err := curve.NewPrivateKey(scalar)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tout, err := priv.ECDH(pub)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcopy(dst[:], out)\n\treturn dst[:], nil\n}\n\nfunc scalarMult(dst, scalar, point *[32]byte) {\n\tif _, err := x25519(dst, scalar[:], point[:]); err != nil {\n\t\t// The only error condition for x25519 when the inputs are 32 bytes long\n\t\t// is if the output would have been the all-zero value.\n\t\tfor i := range dst {\n\t\t\tdst[i] = 0\n\t\t}\n\t}\n}\n\nfunc scalarBaseMult(dst, scalar *[32]byte) {\n\tcurve := ecdh.X25519()\n\tpriv, err := curve.NewPrivateKey(scalar[:])\n\tif err != nil {\n\t\tpanic(\"curve25519: internal error: scalarBaseMult was not 32 bytes\")\n\t}\n\tcopy(dst[:], priv.PublicKey().Bytes())\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe.go",
    "content": "// Copyright (c) 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// Package field implements fast arithmetic modulo 2^255-19.\npackage field\n\nimport (\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"math/bits\"\n)\n\n// Element represents an element of the field GF(2^255-19). Note that this\n// is not a cryptographically secure group, and should only be used to interact\n// with edwards25519.Point coordinates.\n//\n// This type works similarly to math/big.Int, and all arguments and receivers\n// are allowed to alias.\n//\n// The zero value is a valid zero element.\ntype Element struct {\n\t// An element t represents the integer\n\t//     t.l0 + t.l1*2^51 + t.l2*2^102 + t.l3*2^153 + t.l4*2^204\n\t//\n\t// Between operations, all limbs are expected to be lower than 2^52.\n\tl0 uint64\n\tl1 uint64\n\tl2 uint64\n\tl3 uint64\n\tl4 uint64\n}\n\nconst maskLow51Bits uint64 = (1 << 51) - 1\n\nvar feZero = &Element{0, 0, 0, 0, 0}\n\n// Zero sets v = 0, and returns v.\nfunc (v *Element) Zero() *Element {\n\t*v = *feZero\n\treturn v\n}\n\nvar feOne = &Element{1, 0, 0, 0, 0}\n\n// One sets v = 1, and returns v.\nfunc (v *Element) One() *Element {\n\t*v = *feOne\n\treturn v\n}\n\n// reduce reduces v modulo 2^255 - 19 and returns it.\nfunc (v *Element) reduce() *Element {\n\tv.carryPropagate()\n\n\t// After the light reduction we now have a field element representation\n\t// v < 2^255 + 2^13 * 19, but need v < 2^255 - 19.\n\n\t// If v >= 2^255 - 19, then v + 19 >= 2^255, which would overflow 2^255 - 1,\n\t// generating a carry. That is, c will be 0 if v < 2^255 - 19, and 1 otherwise.\n\tc := (v.l0 + 19) >> 51\n\tc = (v.l1 + c) >> 51\n\tc = (v.l2 + c) >> 51\n\tc = (v.l3 + c) >> 51\n\tc = (v.l4 + c) >> 51\n\n\t// If v < 2^255 - 19 and c = 0, this will be a no-op. Otherwise, it's\n\t// effectively applying the reduction identity to the carry.\n\tv.l0 += 19 * c\n\n\tv.l1 += v.l0 >> 51\n\tv.l0 = v.l0 & maskLow51Bits\n\tv.l2 += v.l1 >> 51\n\tv.l1 = v.l1 & maskLow51Bits\n\tv.l3 += v.l2 >> 51\n\tv.l2 = v.l2 & maskLow51Bits\n\tv.l4 += v.l3 >> 51\n\tv.l3 = v.l3 & maskLow51Bits\n\t// no additional carry\n\tv.l4 = v.l4 & maskLow51Bits\n\n\treturn v\n}\n\n// Add sets v = a + b, and returns v.\nfunc (v *Element) Add(a, b *Element) *Element {\n\tv.l0 = a.l0 + b.l0\n\tv.l1 = a.l1 + b.l1\n\tv.l2 = a.l2 + b.l2\n\tv.l3 = a.l3 + b.l3\n\tv.l4 = a.l4 + b.l4\n\t// Using the generic implementation here is actually faster than the\n\t// assembly. Probably because the body of this function is so simple that\n\t// the compiler can figure out better optimizations by inlining the carry\n\t// propagation. TODO\n\treturn v.carryPropagateGeneric()\n}\n\n// Subtract sets v = a - b, and returns v.\nfunc (v *Element) Subtract(a, b *Element) *Element {\n\t// We first add 2 * p, to guarantee the subtraction won't underflow, and\n\t// then subtract b (which can be up to 2^255 + 2^13 * 19).\n\tv.l0 = (a.l0 + 0xFFFFFFFFFFFDA) - b.l0\n\tv.l1 = (a.l1 + 0xFFFFFFFFFFFFE) - b.l1\n\tv.l2 = (a.l2 + 0xFFFFFFFFFFFFE) - b.l2\n\tv.l3 = (a.l3 + 0xFFFFFFFFFFFFE) - b.l3\n\tv.l4 = (a.l4 + 0xFFFFFFFFFFFFE) - b.l4\n\treturn v.carryPropagate()\n}\n\n// Negate sets v = -a, and returns v.\nfunc (v *Element) Negate(a *Element) *Element {\n\treturn v.Subtract(feZero, a)\n}\n\n// Invert sets v = 1/z mod p, and returns v.\n//\n// If z == 0, Invert returns v = 0.\nfunc (v *Element) Invert(z *Element) *Element {\n\t// Inversion is implemented as exponentiation with exponent p − 2. It uses the\n\t// same sequence of 255 squarings and 11 multiplications as [Curve25519].\n\tvar z2, z9, z11, z2_5_0, z2_10_0, z2_20_0, z2_50_0, z2_100_0, t Element\n\n\tz2.Square(z)             // 2\n\tt.Square(&z2)            // 4\n\tt.Square(&t)             // 8\n\tz9.Multiply(&t, z)       // 9\n\tz11.Multiply(&z9, &z2)   // 11\n\tt.Square(&z11)           // 22\n\tz2_5_0.Multiply(&t, &z9) // 31 = 2^5 - 2^0\n\n\tt.Square(&z2_5_0) // 2^6 - 2^1\n\tfor i := 0; i < 4; i++ {\n\t\tt.Square(&t) // 2^10 - 2^5\n\t}\n\tz2_10_0.Multiply(&t, &z2_5_0) // 2^10 - 2^0\n\n\tt.Square(&z2_10_0) // 2^11 - 2^1\n\tfor i := 0; i < 9; i++ {\n\t\tt.Square(&t) // 2^20 - 2^10\n\t}\n\tz2_20_0.Multiply(&t, &z2_10_0) // 2^20 - 2^0\n\n\tt.Square(&z2_20_0) // 2^21 - 2^1\n\tfor i := 0; i < 19; i++ {\n\t\tt.Square(&t) // 2^40 - 2^20\n\t}\n\tt.Multiply(&t, &z2_20_0) // 2^40 - 2^0\n\n\tt.Square(&t) // 2^41 - 2^1\n\tfor i := 0; i < 9; i++ {\n\t\tt.Square(&t) // 2^50 - 2^10\n\t}\n\tz2_50_0.Multiply(&t, &z2_10_0) // 2^50 - 2^0\n\n\tt.Square(&z2_50_0) // 2^51 - 2^1\n\tfor i := 0; i < 49; i++ {\n\t\tt.Square(&t) // 2^100 - 2^50\n\t}\n\tz2_100_0.Multiply(&t, &z2_50_0) // 2^100 - 2^0\n\n\tt.Square(&z2_100_0) // 2^101 - 2^1\n\tfor i := 0; i < 99; i++ {\n\t\tt.Square(&t) // 2^200 - 2^100\n\t}\n\tt.Multiply(&t, &z2_100_0) // 2^200 - 2^0\n\n\tt.Square(&t) // 2^201 - 2^1\n\tfor i := 0; i < 49; i++ {\n\t\tt.Square(&t) // 2^250 - 2^50\n\t}\n\tt.Multiply(&t, &z2_50_0) // 2^250 - 2^0\n\n\tt.Square(&t) // 2^251 - 2^1\n\tt.Square(&t) // 2^252 - 2^2\n\tt.Square(&t) // 2^253 - 2^3\n\tt.Square(&t) // 2^254 - 2^4\n\tt.Square(&t) // 2^255 - 2^5\n\n\treturn v.Multiply(&t, &z11) // 2^255 - 21\n}\n\n// Set sets v = a, and returns v.\nfunc (v *Element) Set(a *Element) *Element {\n\t*v = *a\n\treturn v\n}\n\n// SetBytes sets v to x, which must be a 32-byte little-endian encoding.\n//\n// Consistent with RFC 7748, the most significant bit (the high bit of the\n// last byte) is ignored, and non-canonical values (2^255-19 through 2^255-1)\n// are accepted. Note that this is laxer than specified by RFC 8032.\nfunc (v *Element) SetBytes(x []byte) *Element {\n\tif len(x) != 32 {\n\t\tpanic(\"edwards25519: invalid field element input size\")\n\t}\n\n\t// Bits 0:51 (bytes 0:8, bits 0:64, shift 0, mask 51).\n\tv.l0 = binary.LittleEndian.Uint64(x[0:8])\n\tv.l0 &= maskLow51Bits\n\t// Bits 51:102 (bytes 6:14, bits 48:112, shift 3, mask 51).\n\tv.l1 = binary.LittleEndian.Uint64(x[6:14]) >> 3\n\tv.l1 &= maskLow51Bits\n\t// Bits 102:153 (bytes 12:20, bits 96:160, shift 6, mask 51).\n\tv.l2 = binary.LittleEndian.Uint64(x[12:20]) >> 6\n\tv.l2 &= maskLow51Bits\n\t// Bits 153:204 (bytes 19:27, bits 152:216, shift 1, mask 51).\n\tv.l3 = binary.LittleEndian.Uint64(x[19:27]) >> 1\n\tv.l3 &= maskLow51Bits\n\t// Bits 204:251 (bytes 24:32, bits 192:256, shift 12, mask 51).\n\t// Note: not bytes 25:33, shift 4, to avoid overread.\n\tv.l4 = binary.LittleEndian.Uint64(x[24:32]) >> 12\n\tv.l4 &= maskLow51Bits\n\n\treturn v\n}\n\n// Bytes returns the canonical 32-byte little-endian encoding of v.\nfunc (v *Element) Bytes() []byte {\n\t// This function is outlined to make the allocations inline in the caller\n\t// rather than happen on the heap.\n\tvar out [32]byte\n\treturn v.bytes(&out)\n}\n\nfunc (v *Element) bytes(out *[32]byte) []byte {\n\tt := *v\n\tt.reduce()\n\n\tvar buf [8]byte\n\tfor i, l := range [5]uint64{t.l0, t.l1, t.l2, t.l3, t.l4} {\n\t\tbitsOffset := i * 51\n\t\tbinary.LittleEndian.PutUint64(buf[:], l<<uint(bitsOffset%8))\n\t\tfor i, bb := range buf {\n\t\t\toff := bitsOffset/8 + i\n\t\t\tif off >= len(out) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tout[off] |= bb\n\t\t}\n\t}\n\n\treturn out[:]\n}\n\n// Equal returns 1 if v and u are equal, and 0 otherwise.\nfunc (v *Element) Equal(u *Element) int {\n\tsa, sv := u.Bytes(), v.Bytes()\n\treturn subtle.ConstantTimeCompare(sa, sv)\n}\n\n// mask64Bits returns 0xffffffff if cond is 1, and 0 otherwise.\nfunc mask64Bits(cond int) uint64 { return ^(uint64(cond) - 1) }\n\n// Select sets v to a if cond == 1, and to b if cond == 0.\nfunc (v *Element) Select(a, b *Element, cond int) *Element {\n\tm := mask64Bits(cond)\n\tv.l0 = (m & a.l0) | (^m & b.l0)\n\tv.l1 = (m & a.l1) | (^m & b.l1)\n\tv.l2 = (m & a.l2) | (^m & b.l2)\n\tv.l3 = (m & a.l3) | (^m & b.l3)\n\tv.l4 = (m & a.l4) | (^m & b.l4)\n\treturn v\n}\n\n// Swap swaps v and u if cond == 1 or leaves them unchanged if cond == 0, and returns v.\nfunc (v *Element) Swap(u *Element, cond int) {\n\tm := mask64Bits(cond)\n\tt := m & (v.l0 ^ u.l0)\n\tv.l0 ^= t\n\tu.l0 ^= t\n\tt = m & (v.l1 ^ u.l1)\n\tv.l1 ^= t\n\tu.l1 ^= t\n\tt = m & (v.l2 ^ u.l2)\n\tv.l2 ^= t\n\tu.l2 ^= t\n\tt = m & (v.l3 ^ u.l3)\n\tv.l3 ^= t\n\tu.l3 ^= t\n\tt = m & (v.l4 ^ u.l4)\n\tv.l4 ^= t\n\tu.l4 ^= t\n}\n\n// IsNegative returns 1 if v is negative, and 0 otherwise.\nfunc (v *Element) IsNegative() int {\n\treturn int(v.Bytes()[0] & 1)\n}\n\n// Absolute sets v to |u|, and returns v.\nfunc (v *Element) Absolute(u *Element) *Element {\n\treturn v.Select(new(Element).Negate(u), u, u.IsNegative())\n}\n\n// Multiply sets v = x * y, and returns v.\nfunc (v *Element) Multiply(x, y *Element) *Element {\n\tfeMul(v, x, y)\n\treturn v\n}\n\n// Square sets v = x * x, and returns v.\nfunc (v *Element) Square(x *Element) *Element {\n\tfeSquare(v, x)\n\treturn v\n}\n\n// Mult32 sets v = x * y, and returns v.\nfunc (v *Element) Mult32(x *Element, y uint32) *Element {\n\tx0lo, x0hi := mul51(x.l0, y)\n\tx1lo, x1hi := mul51(x.l1, y)\n\tx2lo, x2hi := mul51(x.l2, y)\n\tx3lo, x3hi := mul51(x.l3, y)\n\tx4lo, x4hi := mul51(x.l4, y)\n\tv.l0 = x0lo + 19*x4hi // carried over per the reduction identity\n\tv.l1 = x1lo + x0hi\n\tv.l2 = x2lo + x1hi\n\tv.l3 = x3lo + x2hi\n\tv.l4 = x4lo + x3hi\n\t// The hi portions are going to be only 32 bits, plus any previous excess,\n\t// so we can skip the carry propagation.\n\treturn v\n}\n\n// mul51 returns lo + hi * 2⁵¹ = a * b.\nfunc mul51(a uint64, b uint32) (lo uint64, hi uint64) {\n\tmh, ml := bits.Mul64(a, uint64(b))\n\tlo = ml & maskLow51Bits\n\thi = (mh << 13) | (ml >> 51)\n\treturn\n}\n\n// Pow22523 set v = x^((p-5)/8), and returns v. (p-5)/8 is 2^252-3.\nfunc (v *Element) Pow22523(x *Element) *Element {\n\tvar t0, t1, t2 Element\n\n\tt0.Square(x)             // x^2\n\tt1.Square(&t0)           // x^4\n\tt1.Square(&t1)           // x^8\n\tt1.Multiply(x, &t1)      // x^9\n\tt0.Multiply(&t0, &t1)    // x^11\n\tt0.Square(&t0)           // x^22\n\tt0.Multiply(&t1, &t0)    // x^31\n\tt1.Square(&t0)           // x^62\n\tfor i := 1; i < 5; i++ { // x^992\n\t\tt1.Square(&t1)\n\t}\n\tt0.Multiply(&t1, &t0)     // x^1023 -> 1023 = 2^10 - 1\n\tt1.Square(&t0)            // 2^11 - 2\n\tfor i := 1; i < 10; i++ { // 2^20 - 2^10\n\t\tt1.Square(&t1)\n\t}\n\tt1.Multiply(&t1, &t0)     // 2^20 - 1\n\tt2.Square(&t1)            // 2^21 - 2\n\tfor i := 1; i < 20; i++ { // 2^40 - 2^20\n\t\tt2.Square(&t2)\n\t}\n\tt1.Multiply(&t2, &t1)     // 2^40 - 1\n\tt1.Square(&t1)            // 2^41 - 2\n\tfor i := 1; i < 10; i++ { // 2^50 - 2^10\n\t\tt1.Square(&t1)\n\t}\n\tt0.Multiply(&t1, &t0)     // 2^50 - 1\n\tt1.Square(&t0)            // 2^51 - 2\n\tfor i := 1; i < 50; i++ { // 2^100 - 2^50\n\t\tt1.Square(&t1)\n\t}\n\tt1.Multiply(&t1, &t0)      // 2^100 - 1\n\tt2.Square(&t1)             // 2^101 - 2\n\tfor i := 1; i < 100; i++ { // 2^200 - 2^100\n\t\tt2.Square(&t2)\n\t}\n\tt1.Multiply(&t2, &t1)     // 2^200 - 1\n\tt1.Square(&t1)            // 2^201 - 2\n\tfor i := 1; i < 50; i++ { // 2^250 - 2^50\n\t\tt1.Square(&t1)\n\t}\n\tt0.Multiply(&t1, &t0)     // 2^250 - 1\n\tt0.Square(&t0)            // 2^251 - 2\n\tt0.Square(&t0)            // 2^252 - 4\n\treturn v.Multiply(&t0, x) // 2^252 - 3 -> x^(2^252-3)\n}\n\n// sqrtM1 is 2^((p-1)/4), which squared is equal to -1 by Euler's Criterion.\nvar sqrtM1 = &Element{1718705420411056, 234908883556509,\n\t2233514472574048, 2117202627021982, 765476049583133}\n\n// SqrtRatio sets r to the non-negative square root of the ratio of u and v.\n//\n// If u/v is square, SqrtRatio returns r and 1. If u/v is not square, SqrtRatio\n// sets r according to Section 4.3 of draft-irtf-cfrg-ristretto255-decaf448-00,\n// and returns r and 0.\nfunc (r *Element) SqrtRatio(u, v *Element) (rr *Element, wasSquare int) {\n\tvar a, b Element\n\n\t// r = (u * v3) * (u * v7)^((p-5)/8)\n\tv2 := a.Square(v)\n\tuv3 := b.Multiply(u, b.Multiply(v2, v))\n\tuv7 := a.Multiply(uv3, a.Square(v2))\n\tr.Multiply(uv3, r.Pow22523(uv7))\n\n\tcheck := a.Multiply(v, a.Square(r)) // check = v * r^2\n\n\tuNeg := b.Negate(u)\n\tcorrectSignSqrt := check.Equal(u)\n\tflippedSignSqrt := check.Equal(uNeg)\n\tflippedSignSqrtI := check.Equal(uNeg.Multiply(uNeg, sqrtM1))\n\n\trPrime := b.Multiply(r, sqrtM1) // r_prime = SQRT_M1 * r\n\t// r = CT_SELECT(r_prime IF flipped_sign_sqrt | flipped_sign_sqrt_i ELSE r)\n\tr.Select(rPrime, r, flippedSignSqrt|flippedSignSqrtI)\n\n\tr.Absolute(r) // Choose the nonnegative square root.\n\treturn r, correctSignSqrt | flippedSignSqrt\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_amd64.go",
    "content": "// Code generated by command: go run fe_amd64_asm.go -out ../fe_amd64.s -stubs ../fe_amd64.go -pkg field. DO NOT EDIT.\n\n//go:build amd64 && gc && !purego\n\npackage field\n\n// feMul sets out = a * b. It works like feMulGeneric.\n//\n//go:noescape\nfunc feMul(out *Element, a *Element, b *Element)\n\n// feSquare sets out = a * a. It works like feSquareGeneric.\n//\n//go:noescape\nfunc feSquare(out *Element, a *Element)\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_amd64.s",
    "content": "// Code generated by command: go run fe_amd64_asm.go -out ../fe_amd64.s -stubs ../fe_amd64.go -pkg field. DO NOT EDIT.\n\n//go:build amd64 && gc && !purego\n\n#include \"textflag.h\"\n\n// func feMul(out *Element, a *Element, b *Element)\nTEXT ·feMul(SB), NOSPLIT, $0-24\n\tMOVQ a+8(FP), CX\n\tMOVQ b+16(FP), BX\n\n\t// r0 = a0×b0\n\tMOVQ (CX), AX\n\tMULQ (BX)\n\tMOVQ AX, DI\n\tMOVQ DX, SI\n\n\t// r0 += 19×a1×b4\n\tMOVQ   8(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   32(BX)\n\tADDQ   AX, DI\n\tADCQ   DX, SI\n\n\t// r0 += 19×a2×b3\n\tMOVQ   16(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   24(BX)\n\tADDQ   AX, DI\n\tADCQ   DX, SI\n\n\t// r0 += 19×a3×b2\n\tMOVQ   24(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   16(BX)\n\tADDQ   AX, DI\n\tADCQ   DX, SI\n\n\t// r0 += 19×a4×b1\n\tMOVQ   32(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   8(BX)\n\tADDQ   AX, DI\n\tADCQ   DX, SI\n\n\t// r1 = a0×b1\n\tMOVQ (CX), AX\n\tMULQ 8(BX)\n\tMOVQ AX, R9\n\tMOVQ DX, R8\n\n\t// r1 += a1×b0\n\tMOVQ 8(CX), AX\n\tMULQ (BX)\n\tADDQ AX, R9\n\tADCQ DX, R8\n\n\t// r1 += 19×a2×b4\n\tMOVQ   16(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   32(BX)\n\tADDQ   AX, R9\n\tADCQ   DX, R8\n\n\t// r1 += 19×a3×b3\n\tMOVQ   24(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   24(BX)\n\tADDQ   AX, R9\n\tADCQ   DX, R8\n\n\t// r1 += 19×a4×b2\n\tMOVQ   32(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   16(BX)\n\tADDQ   AX, R9\n\tADCQ   DX, R8\n\n\t// r2 = a0×b2\n\tMOVQ (CX), AX\n\tMULQ 16(BX)\n\tMOVQ AX, R11\n\tMOVQ DX, R10\n\n\t// r2 += a1×b1\n\tMOVQ 8(CX), AX\n\tMULQ 8(BX)\n\tADDQ AX, R11\n\tADCQ DX, R10\n\n\t// r2 += a2×b0\n\tMOVQ 16(CX), AX\n\tMULQ (BX)\n\tADDQ AX, R11\n\tADCQ DX, R10\n\n\t// r2 += 19×a3×b4\n\tMOVQ   24(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   32(BX)\n\tADDQ   AX, R11\n\tADCQ   DX, R10\n\n\t// r2 += 19×a4×b3\n\tMOVQ   32(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   24(BX)\n\tADDQ   AX, R11\n\tADCQ   DX, R10\n\n\t// r3 = a0×b3\n\tMOVQ (CX), AX\n\tMULQ 24(BX)\n\tMOVQ AX, R13\n\tMOVQ DX, R12\n\n\t// r3 += a1×b2\n\tMOVQ 8(CX), AX\n\tMULQ 16(BX)\n\tADDQ AX, R13\n\tADCQ DX, R12\n\n\t// r3 += a2×b1\n\tMOVQ 16(CX), AX\n\tMULQ 8(BX)\n\tADDQ AX, R13\n\tADCQ DX, R12\n\n\t// r3 += a3×b0\n\tMOVQ 24(CX), AX\n\tMULQ (BX)\n\tADDQ AX, R13\n\tADCQ DX, R12\n\n\t// r3 += 19×a4×b4\n\tMOVQ   32(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   32(BX)\n\tADDQ   AX, R13\n\tADCQ   DX, R12\n\n\t// r4 = a0×b4\n\tMOVQ (CX), AX\n\tMULQ 32(BX)\n\tMOVQ AX, R15\n\tMOVQ DX, R14\n\n\t// r4 += a1×b3\n\tMOVQ 8(CX), AX\n\tMULQ 24(BX)\n\tADDQ AX, R15\n\tADCQ DX, R14\n\n\t// r4 += a2×b2\n\tMOVQ 16(CX), AX\n\tMULQ 16(BX)\n\tADDQ AX, R15\n\tADCQ DX, R14\n\n\t// r4 += a3×b1\n\tMOVQ 24(CX), AX\n\tMULQ 8(BX)\n\tADDQ AX, R15\n\tADCQ DX, R14\n\n\t// r4 += a4×b0\n\tMOVQ 32(CX), AX\n\tMULQ (BX)\n\tADDQ AX, R15\n\tADCQ DX, R14\n\n\t// First reduction chain\n\tMOVQ   $0x0007ffffffffffff, AX\n\tSHLQ   $0x0d, DI, SI\n\tSHLQ   $0x0d, R9, R8\n\tSHLQ   $0x0d, R11, R10\n\tSHLQ   $0x0d, R13, R12\n\tSHLQ   $0x0d, R15, R14\n\tANDQ   AX, DI\n\tIMUL3Q $0x13, R14, R14\n\tADDQ   R14, DI\n\tANDQ   AX, R9\n\tADDQ   SI, R9\n\tANDQ   AX, R11\n\tADDQ   R8, R11\n\tANDQ   AX, R13\n\tADDQ   R10, R13\n\tANDQ   AX, R15\n\tADDQ   R12, R15\n\n\t// Second reduction chain (carryPropagate)\n\tMOVQ   DI, SI\n\tSHRQ   $0x33, SI\n\tMOVQ   R9, R8\n\tSHRQ   $0x33, R8\n\tMOVQ   R11, R10\n\tSHRQ   $0x33, R10\n\tMOVQ   R13, R12\n\tSHRQ   $0x33, R12\n\tMOVQ   R15, R14\n\tSHRQ   $0x33, R14\n\tANDQ   AX, DI\n\tIMUL3Q $0x13, R14, R14\n\tADDQ   R14, DI\n\tANDQ   AX, R9\n\tADDQ   SI, R9\n\tANDQ   AX, R11\n\tADDQ   R8, R11\n\tANDQ   AX, R13\n\tADDQ   R10, R13\n\tANDQ   AX, R15\n\tADDQ   R12, R15\n\n\t// Store output\n\tMOVQ out+0(FP), AX\n\tMOVQ DI, (AX)\n\tMOVQ R9, 8(AX)\n\tMOVQ R11, 16(AX)\n\tMOVQ R13, 24(AX)\n\tMOVQ R15, 32(AX)\n\tRET\n\n// func feSquare(out *Element, a *Element)\nTEXT ·feSquare(SB), NOSPLIT, $0-16\n\tMOVQ a+8(FP), CX\n\n\t// r0 = l0×l0\n\tMOVQ (CX), AX\n\tMULQ (CX)\n\tMOVQ AX, SI\n\tMOVQ DX, BX\n\n\t// r0 += 38×l1×l4\n\tMOVQ   8(CX), AX\n\tIMUL3Q $0x26, AX, AX\n\tMULQ   32(CX)\n\tADDQ   AX, SI\n\tADCQ   DX, BX\n\n\t// r0 += 38×l2×l3\n\tMOVQ   16(CX), AX\n\tIMUL3Q $0x26, AX, AX\n\tMULQ   24(CX)\n\tADDQ   AX, SI\n\tADCQ   DX, BX\n\n\t// r1 = 2×l0×l1\n\tMOVQ (CX), AX\n\tSHLQ $0x01, AX\n\tMULQ 8(CX)\n\tMOVQ AX, R8\n\tMOVQ DX, DI\n\n\t// r1 += 38×l2×l4\n\tMOVQ   16(CX), AX\n\tIMUL3Q $0x26, AX, AX\n\tMULQ   32(CX)\n\tADDQ   AX, R8\n\tADCQ   DX, DI\n\n\t// r1 += 19×l3×l3\n\tMOVQ   24(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   24(CX)\n\tADDQ   AX, R8\n\tADCQ   DX, DI\n\n\t// r2 = 2×l0×l2\n\tMOVQ (CX), AX\n\tSHLQ $0x01, AX\n\tMULQ 16(CX)\n\tMOVQ AX, R10\n\tMOVQ DX, R9\n\n\t// r2 += l1×l1\n\tMOVQ 8(CX), AX\n\tMULQ 8(CX)\n\tADDQ AX, R10\n\tADCQ DX, R9\n\n\t// r2 += 38×l3×l4\n\tMOVQ   24(CX), AX\n\tIMUL3Q $0x26, AX, AX\n\tMULQ   32(CX)\n\tADDQ   AX, R10\n\tADCQ   DX, R9\n\n\t// r3 = 2×l0×l3\n\tMOVQ (CX), AX\n\tSHLQ $0x01, AX\n\tMULQ 24(CX)\n\tMOVQ AX, R12\n\tMOVQ DX, R11\n\n\t// r3 += 2×l1×l2\n\tMOVQ   8(CX), AX\n\tIMUL3Q $0x02, AX, AX\n\tMULQ   16(CX)\n\tADDQ   AX, R12\n\tADCQ   DX, R11\n\n\t// r3 += 19×l4×l4\n\tMOVQ   32(CX), AX\n\tIMUL3Q $0x13, AX, AX\n\tMULQ   32(CX)\n\tADDQ   AX, R12\n\tADCQ   DX, R11\n\n\t// r4 = 2×l0×l4\n\tMOVQ (CX), AX\n\tSHLQ $0x01, AX\n\tMULQ 32(CX)\n\tMOVQ AX, R14\n\tMOVQ DX, R13\n\n\t// r4 += 2×l1×l3\n\tMOVQ   8(CX), AX\n\tIMUL3Q $0x02, AX, AX\n\tMULQ   24(CX)\n\tADDQ   AX, R14\n\tADCQ   DX, R13\n\n\t// r4 += l2×l2\n\tMOVQ 16(CX), AX\n\tMULQ 16(CX)\n\tADDQ AX, R14\n\tADCQ DX, R13\n\n\t// First reduction chain\n\tMOVQ   $0x0007ffffffffffff, AX\n\tSHLQ   $0x0d, SI, BX\n\tSHLQ   $0x0d, R8, DI\n\tSHLQ   $0x0d, R10, R9\n\tSHLQ   $0x0d, R12, R11\n\tSHLQ   $0x0d, R14, R13\n\tANDQ   AX, SI\n\tIMUL3Q $0x13, R13, R13\n\tADDQ   R13, SI\n\tANDQ   AX, R8\n\tADDQ   BX, R8\n\tANDQ   AX, R10\n\tADDQ   DI, R10\n\tANDQ   AX, R12\n\tADDQ   R9, R12\n\tANDQ   AX, R14\n\tADDQ   R11, R14\n\n\t// Second reduction chain (carryPropagate)\n\tMOVQ   SI, BX\n\tSHRQ   $0x33, BX\n\tMOVQ   R8, DI\n\tSHRQ   $0x33, DI\n\tMOVQ   R10, R9\n\tSHRQ   $0x33, R9\n\tMOVQ   R12, R11\n\tSHRQ   $0x33, R11\n\tMOVQ   R14, R13\n\tSHRQ   $0x33, R13\n\tANDQ   AX, SI\n\tIMUL3Q $0x13, R13, R13\n\tADDQ   R13, SI\n\tANDQ   AX, R8\n\tADDQ   BX, R8\n\tANDQ   AX, R10\n\tADDQ   DI, R10\n\tANDQ   AX, R12\n\tADDQ   R9, R12\n\tANDQ   AX, R14\n\tADDQ   R11, R14\n\n\t// Store output\n\tMOVQ out+0(FP), AX\n\tMOVQ SI, (AX)\n\tMOVQ R8, 8(AX)\n\tMOVQ R10, 16(AX)\n\tMOVQ R12, 24(AX)\n\tMOVQ R14, 32(AX)\n\tRET\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_amd64_noasm.go",
    "content": "// Copyright (c) 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !amd64 || !gc || purego\n\npackage field\n\nfunc feMul(v, x, y *Element) { feMulGeneric(v, x, y) }\n\nfunc feSquare(v, x *Element) { feSquareGeneric(v, x) }\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_arm64.go",
    "content": "// Copyright (c) 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && gc && !purego\n\npackage field\n\n//go:noescape\nfunc carryPropagate(v *Element)\n\nfunc (v *Element) carryPropagate() *Element {\n\tcarryPropagate(v)\n\treturn v\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_arm64.s",
    "content": "// Copyright (c) 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && gc && !purego\n\n#include \"textflag.h\"\n\n// carryPropagate works exactly like carryPropagateGeneric and uses the\n// same AND, ADD, and LSR+MADD instructions emitted by the compiler, but\n// avoids loading R0-R4 twice and uses LDP and STP.\n//\n// See https://golang.org/issues/43145 for the main compiler issue.\n//\n// func carryPropagate(v *Element)\nTEXT ·carryPropagate(SB),NOFRAME|NOSPLIT,$0-8\n\tMOVD v+0(FP), R20\n\n\tLDP 0(R20), (R0, R1)\n\tLDP 16(R20), (R2, R3)\n\tMOVD 32(R20), R4\n\n\tAND $0x7ffffffffffff, R0, R10\n\tAND $0x7ffffffffffff, R1, R11\n\tAND $0x7ffffffffffff, R2, R12\n\tAND $0x7ffffffffffff, R3, R13\n\tAND $0x7ffffffffffff, R4, R14\n\n\tADD R0>>51, R11, R11\n\tADD R1>>51, R12, R12\n\tADD R2>>51, R13, R13\n\tADD R3>>51, R14, R14\n\t// R4>>51 * 19 + R10 -> R10\n\tLSR $51, R4, R21\n\tMOVD $19, R22\n\tMADD R22, R10, R21, R10\n\n\tSTP (R10, R11), 0(R20)\n\tSTP (R12, R13), 16(R20)\n\tMOVD R14, 32(R20)\n\n\tRET\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_arm64_noasm.go",
    "content": "// Copyright (c) 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !arm64 || !gc || purego\n\npackage field\n\nfunc (v *Element) carryPropagate() *Element {\n\treturn v.carryPropagateGeneric()\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/fe_generic.go",
    "content": "// Copyright (c) 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 field\n\nimport \"math/bits\"\n\n// uint128 holds a 128-bit number as two 64-bit limbs, for use with the\n// bits.Mul64 and bits.Add64 intrinsics.\ntype uint128 struct {\n\tlo, hi uint64\n}\n\n// mul64 returns a * b.\nfunc mul64(a, b uint64) uint128 {\n\thi, lo := bits.Mul64(a, b)\n\treturn uint128{lo, hi}\n}\n\n// addMul64 returns v + a * b.\nfunc addMul64(v uint128, a, b uint64) uint128 {\n\thi, lo := bits.Mul64(a, b)\n\tlo, c := bits.Add64(lo, v.lo, 0)\n\thi, _ = bits.Add64(hi, v.hi, c)\n\treturn uint128{lo, hi}\n}\n\n// shiftRightBy51 returns a >> 51. a is assumed to be at most 115 bits.\nfunc shiftRightBy51(a uint128) uint64 {\n\treturn (a.hi << (64 - 51)) | (a.lo >> 51)\n}\n\nfunc feMulGeneric(v, a, b *Element) {\n\ta0 := a.l0\n\ta1 := a.l1\n\ta2 := a.l2\n\ta3 := a.l3\n\ta4 := a.l4\n\n\tb0 := b.l0\n\tb1 := b.l1\n\tb2 := b.l2\n\tb3 := b.l3\n\tb4 := b.l4\n\n\t// Limb multiplication works like pen-and-paper columnar multiplication, but\n\t// with 51-bit limbs instead of digits.\n\t//\n\t//                          a4   a3   a2   a1   a0  x\n\t//                          b4   b3   b2   b1   b0  =\n\t//                         ------------------------\n\t//                        a4b0 a3b0 a2b0 a1b0 a0b0  +\n\t//                   a4b1 a3b1 a2b1 a1b1 a0b1       +\n\t//              a4b2 a3b2 a2b2 a1b2 a0b2            +\n\t//         a4b3 a3b3 a2b3 a1b3 a0b3                 +\n\t//    a4b4 a3b4 a2b4 a1b4 a0b4                      =\n\t//   ----------------------------------------------\n\t//      r8   r7   r6   r5   r4   r3   r2   r1   r0\n\t//\n\t// We can then use the reduction identity (a * 2²⁵⁵ + b = a * 19 + b) to\n\t// reduce the limbs that would overflow 255 bits. r5 * 2²⁵⁵ becomes 19 * r5,\n\t// r6 * 2³⁰⁶ becomes 19 * r6 * 2⁵¹, etc.\n\t//\n\t// Reduction can be carried out simultaneously to multiplication. For\n\t// example, we do not compute r5: whenever the result of a multiplication\n\t// belongs to r5, like a1b4, we multiply it by 19 and add the result to r0.\n\t//\n\t//            a4b0    a3b0    a2b0    a1b0    a0b0  +\n\t//            a3b1    a2b1    a1b1    a0b1 19×a4b1  +\n\t//            a2b2    a1b2    a0b2 19×a4b2 19×a3b2  +\n\t//            a1b3    a0b3 19×a4b3 19×a3b3 19×a2b3  +\n\t//            a0b4 19×a4b4 19×a3b4 19×a2b4 19×a1b4  =\n\t//           --------------------------------------\n\t//              r4      r3      r2      r1      r0\n\t//\n\t// Finally we add up the columns into wide, overlapping limbs.\n\n\ta1_19 := a1 * 19\n\ta2_19 := a2 * 19\n\ta3_19 := a3 * 19\n\ta4_19 := a4 * 19\n\n\t// r0 = a0×b0 + 19×(a1×b4 + a2×b3 + a3×b2 + a4×b1)\n\tr0 := mul64(a0, b0)\n\tr0 = addMul64(r0, a1_19, b4)\n\tr0 = addMul64(r0, a2_19, b3)\n\tr0 = addMul64(r0, a3_19, b2)\n\tr0 = addMul64(r0, a4_19, b1)\n\n\t// r1 = a0×b1 + a1×b0 + 19×(a2×b4 + a3×b3 + a4×b2)\n\tr1 := mul64(a0, b1)\n\tr1 = addMul64(r1, a1, b0)\n\tr1 = addMul64(r1, a2_19, b4)\n\tr1 = addMul64(r1, a3_19, b3)\n\tr1 = addMul64(r1, a4_19, b2)\n\n\t// r2 = a0×b2 + a1×b1 + a2×b0 + 19×(a3×b4 + a4×b3)\n\tr2 := mul64(a0, b2)\n\tr2 = addMul64(r2, a1, b1)\n\tr2 = addMul64(r2, a2, b0)\n\tr2 = addMul64(r2, a3_19, b4)\n\tr2 = addMul64(r2, a4_19, b3)\n\n\t// r3 = a0×b3 + a1×b2 + a2×b1 + a3×b0 + 19×a4×b4\n\tr3 := mul64(a0, b3)\n\tr3 = addMul64(r3, a1, b2)\n\tr3 = addMul64(r3, a2, b1)\n\tr3 = addMul64(r3, a3, b0)\n\tr3 = addMul64(r3, a4_19, b4)\n\n\t// r4 = a0×b4 + a1×b3 + a2×b2 + a3×b1 + a4×b0\n\tr4 := mul64(a0, b4)\n\tr4 = addMul64(r4, a1, b3)\n\tr4 = addMul64(r4, a2, b2)\n\tr4 = addMul64(r4, a3, b1)\n\tr4 = addMul64(r4, a4, b0)\n\n\t// After the multiplication, we need to reduce (carry) the five coefficients\n\t// to obtain a result with limbs that are at most slightly larger than 2⁵¹,\n\t// to respect the Element invariant.\n\t//\n\t// Overall, the reduction works the same as carryPropagate, except with\n\t// wider inputs: we take the carry for each coefficient by shifting it right\n\t// by 51, and add it to the limb above it. The top carry is multiplied by 19\n\t// according to the reduction identity and added to the lowest limb.\n\t//\n\t// The largest coefficient (r0) will be at most 111 bits, which guarantees\n\t// that all carries are at most 111 - 51 = 60 bits, which fits in a uint64.\n\t//\n\t//     r0 = a0×b0 + 19×(a1×b4 + a2×b3 + a3×b2 + a4×b1)\n\t//     r0 < 2⁵²×2⁵² + 19×(2⁵²×2⁵² + 2⁵²×2⁵² + 2⁵²×2⁵² + 2⁵²×2⁵²)\n\t//     r0 < (1 + 19 × 4) × 2⁵² × 2⁵²\n\t//     r0 < 2⁷ × 2⁵² × 2⁵²\n\t//     r0 < 2¹¹¹\n\t//\n\t// Moreover, the top coefficient (r4) is at most 107 bits, so c4 is at most\n\t// 56 bits, and c4 * 19 is at most 61 bits, which again fits in a uint64 and\n\t// allows us to easily apply the reduction identity.\n\t//\n\t//     r4 = a0×b4 + a1×b3 + a2×b2 + a3×b1 + a4×b0\n\t//     r4 < 5 × 2⁵² × 2⁵²\n\t//     r4 < 2¹⁰⁷\n\t//\n\n\tc0 := shiftRightBy51(r0)\n\tc1 := shiftRightBy51(r1)\n\tc2 := shiftRightBy51(r2)\n\tc3 := shiftRightBy51(r3)\n\tc4 := shiftRightBy51(r4)\n\n\trr0 := r0.lo&maskLow51Bits + c4*19\n\trr1 := r1.lo&maskLow51Bits + c0\n\trr2 := r2.lo&maskLow51Bits + c1\n\trr3 := r3.lo&maskLow51Bits + c2\n\trr4 := r4.lo&maskLow51Bits + c3\n\n\t// Now all coefficients fit into 64-bit registers but are still too large to\n\t// be passed around as a Element. We therefore do one last carry chain,\n\t// where the carries will be small enough to fit in the wiggle room above 2⁵¹.\n\t*v = Element{rr0, rr1, rr2, rr3, rr4}\n\tv.carryPropagate()\n}\n\nfunc feSquareGeneric(v, a *Element) {\n\tl0 := a.l0\n\tl1 := a.l1\n\tl2 := a.l2\n\tl3 := a.l3\n\tl4 := a.l4\n\n\t// Squaring works precisely like multiplication above, but thanks to its\n\t// symmetry we get to group a few terms together.\n\t//\n\t//                          l4   l3   l2   l1   l0  x\n\t//                          l4   l3   l2   l1   l0  =\n\t//                         ------------------------\n\t//                        l4l0 l3l0 l2l0 l1l0 l0l0  +\n\t//                   l4l1 l3l1 l2l1 l1l1 l0l1       +\n\t//              l4l2 l3l2 l2l2 l1l2 l0l2            +\n\t//         l4l3 l3l3 l2l3 l1l3 l0l3                 +\n\t//    l4l4 l3l4 l2l4 l1l4 l0l4                      =\n\t//   ----------------------------------------------\n\t//      r8   r7   r6   r5   r4   r3   r2   r1   r0\n\t//\n\t//            l4l0    l3l0    l2l0    l1l0    l0l0  +\n\t//            l3l1    l2l1    l1l1    l0l1 19×l4l1  +\n\t//            l2l2    l1l2    l0l2 19×l4l2 19×l3l2  +\n\t//            l1l3    l0l3 19×l4l3 19×l3l3 19×l2l3  +\n\t//            l0l4 19×l4l4 19×l3l4 19×l2l4 19×l1l4  =\n\t//           --------------------------------------\n\t//              r4      r3      r2      r1      r0\n\t//\n\t// With precomputed 2×, 19×, and 2×19× terms, we can compute each limb with\n\t// only three Mul64 and four Add64, instead of five and eight.\n\n\tl0_2 := l0 * 2\n\tl1_2 := l1 * 2\n\n\tl1_38 := l1 * 38\n\tl2_38 := l2 * 38\n\tl3_38 := l3 * 38\n\n\tl3_19 := l3 * 19\n\tl4_19 := l4 * 19\n\n\t// r0 = l0×l0 + 19×(l1×l4 + l2×l3 + l3×l2 + l4×l1) = l0×l0 + 19×2×(l1×l4 + l2×l3)\n\tr0 := mul64(l0, l0)\n\tr0 = addMul64(r0, l1_38, l4)\n\tr0 = addMul64(r0, l2_38, l3)\n\n\t// r1 = l0×l1 + l1×l0 + 19×(l2×l4 + l3×l3 + l4×l2) = 2×l0×l1 + 19×2×l2×l4 + 19×l3×l3\n\tr1 := mul64(l0_2, l1)\n\tr1 = addMul64(r1, l2_38, l4)\n\tr1 = addMul64(r1, l3_19, l3)\n\n\t// r2 = l0×l2 + l1×l1 + l2×l0 + 19×(l3×l4 + l4×l3) = 2×l0×l2 + l1×l1 + 19×2×l3×l4\n\tr2 := mul64(l0_2, l2)\n\tr2 = addMul64(r2, l1, l1)\n\tr2 = addMul64(r2, l3_38, l4)\n\n\t// r3 = l0×l3 + l1×l2 + l2×l1 + l3×l0 + 19×l4×l4 = 2×l0×l3 + 2×l1×l2 + 19×l4×l4\n\tr3 := mul64(l0_2, l3)\n\tr3 = addMul64(r3, l1_2, l2)\n\tr3 = addMul64(r3, l4_19, l4)\n\n\t// r4 = l0×l4 + l1×l3 + l2×l2 + l3×l1 + l4×l0 = 2×l0×l4 + 2×l1×l3 + l2×l2\n\tr4 := mul64(l0_2, l4)\n\tr4 = addMul64(r4, l1_2, l3)\n\tr4 = addMul64(r4, l2, l2)\n\n\tc0 := shiftRightBy51(r0)\n\tc1 := shiftRightBy51(r1)\n\tc2 := shiftRightBy51(r2)\n\tc3 := shiftRightBy51(r3)\n\tc4 := shiftRightBy51(r4)\n\n\trr0 := r0.lo&maskLow51Bits + c4*19\n\trr1 := r1.lo&maskLow51Bits + c0\n\trr2 := r2.lo&maskLow51Bits + c1\n\trr3 := r3.lo&maskLow51Bits + c2\n\trr4 := r4.lo&maskLow51Bits + c3\n\n\t*v = Element{rr0, rr1, rr2, rr3, rr4}\n\tv.carryPropagate()\n}\n\n// carryPropagateGeneric brings the limbs below 52 bits by applying the reduction\n// identity (a * 2²⁵⁵ + b = a * 19 + b) to the l4 carry. TODO inline\nfunc (v *Element) carryPropagateGeneric() *Element {\n\tc0 := v.l0 >> 51\n\tc1 := v.l1 >> 51\n\tc2 := v.l2 >> 51\n\tc3 := v.l3 >> 51\n\tc4 := v.l4 >> 51\n\n\tv.l0 = v.l0&maskLow51Bits + c4*19\n\tv.l1 = v.l1&maskLow51Bits + c0\n\tv.l2 = v.l2&maskLow51Bits + c1\n\tv.l3 = v.l3&maskLow51Bits + c2\n\tv.l4 = v.l4&maskLow51Bits + c3\n\n\treturn v\n}\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/sync.checkpoint",
    "content": "b0c49ae9f59d233526f8934262c5bbbe14d4358d\n"
  },
  {
    "path": "gossh/crypto/curve25519/internal/field/sync.sh",
    "content": "#! /bin/bash\nset -euo pipefail\n\ncd \"$(git rev-parse --show-toplevel)\"\n\nSTD_PATH=src/crypto/ed25519/internal/edwards25519/field\nLOCAL_PATH=curve25519/internal/field\nLAST_SYNC_REF=$(cat $LOCAL_PATH/sync.checkpoint)\n\ngit fetch https://go.googlesource.com/go master\n\nif git diff --quiet $LAST_SYNC_REF:$STD_PATH FETCH_HEAD:$STD_PATH; then\n    echo \"No changes.\"\nelse\n    NEW_REF=$(git rev-parse FETCH_HEAD | tee $LOCAL_PATH/sync.checkpoint)\n    echo \"Applying changes from $LAST_SYNC_REF to $NEW_REF...\"\n    git diff $LAST_SYNC_REF:$STD_PATH FETCH_HEAD:$STD_PATH | \\\n        git apply -3 --directory=$LOCAL_PATH\nfi\n"
  },
  {
    "path": "gossh/crypto/internal/alias/alias.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !purego\n\n// Package alias implements memory aliasing tests.\npackage alias\n\nimport \"unsafe\"\n\n// AnyOverlap reports whether x and y share memory at any (not necessarily\n// corresponding) index. The memory beyond the slice length is ignored.\nfunc AnyOverlap(x, y []byte) bool {\n\treturn len(x) > 0 && len(y) > 0 &&\n\t\tuintptr(unsafe.Pointer(&x[0])) <= uintptr(unsafe.Pointer(&y[len(y)-1])) &&\n\t\tuintptr(unsafe.Pointer(&y[0])) <= uintptr(unsafe.Pointer(&x[len(x)-1]))\n}\n\n// InexactOverlap reports whether x and y share memory at any non-corresponding\n// index. The memory beyond the slice length is ignored. Note that x and y can\n// have different lengths and still not have any inexact overlap.\n//\n// InexactOverlap can be used to implement the requirements of the crypto/cipher\n// AEAD, Block, BlockMode and Stream interfaces.\nfunc InexactOverlap(x, y []byte) bool {\n\tif len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {\n\t\treturn false\n\t}\n\treturn AnyOverlap(x, y)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/alias/alias_purego.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build purego\n\n// Package alias implements memory aliasing tests.\npackage alias\n\n// This is the Google App Engine standard variant based on reflect\n// because the unsafe package and cgo are disallowed.\n\nimport \"reflect\"\n\n// AnyOverlap reports whether x and y share memory at any (not necessarily\n// corresponding) index. The memory beyond the slice length is ignored.\nfunc AnyOverlap(x, y []byte) bool {\n\treturn len(x) > 0 && len(y) > 0 &&\n\t\treflect.ValueOf(&x[0]).Pointer() <= reflect.ValueOf(&y[len(y)-1]).Pointer() &&\n\t\treflect.ValueOf(&y[0]).Pointer() <= reflect.ValueOf(&x[len(x)-1]).Pointer()\n}\n\n// InexactOverlap reports whether x and y share memory at any non-corresponding\n// index. The memory beyond the slice length is ignored. Note that x and y can\n// have different lengths and still not have any inexact overlap.\n//\n// InexactOverlap can be used to implement the requirements of the crypto/cipher\n// AEAD, Block, BlockMode and Stream interfaces.\nfunc InexactOverlap(x, y []byte) bool {\n\tif len(x) == 0 || len(y) == 0 || &x[0] == &y[0] {\n\t\treturn false\n\t}\n\treturn AnyOverlap(x, y)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/mac_noasm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (!amd64 && !ppc64le && !s390x) || !gc || purego\n\npackage poly1305\n\ntype mac struct{ macGeneric }\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/poly1305.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// Package poly1305 implements Poly1305 one-time message authentication code as\n// specified in https://cr.yp.to/mac/poly1305-20050329.pdf.\n//\n// Poly1305 is a fast, one-time authentication function. It is infeasible for an\n// attacker to generate an authenticator for a message without the key. However, a\n// key must only be used for a single message. Authenticating two different\n// messages with the same key allows an attacker to forge authenticators for other\n// messages with the same key.\n//\n// Poly1305 was originally coupled with AES in order to make Poly1305-AES. AES was\n// used with a fixed key in order to generate one-time keys from an nonce.\n// However, in this package AES isn't used and the one-time key is specified\n// directly.\npackage poly1305\n\nimport \"crypto/subtle\"\n\n// TagSize is the size, in bytes, of a poly1305 authenticator.\nconst TagSize = 16\n\n// Sum generates an authenticator for msg using a one-time key and puts the\n// 16-byte result into out. Authenticating two different messages with the same\n// key allows an attacker to forge messages at will.\nfunc Sum(out *[16]byte, m []byte, key *[32]byte) {\n\th := New(key)\n\th.Write(m)\n\th.Sum(out[:0])\n}\n\n// Verify returns true if mac is a valid authenticator for m with the given key.\nfunc Verify(mac *[16]byte, m []byte, key *[32]byte) bool {\n\tvar tmp [16]byte\n\tSum(&tmp, m, key)\n\treturn subtle.ConstantTimeCompare(tmp[:], mac[:]) == 1\n}\n\n// New returns a new MAC computing an authentication\n// tag of all data written to it with the given key.\n// This allows writing the message progressively instead\n// of passing it as a single slice. Common users should use\n// the Sum function instead.\n//\n// The key must be unique for each message, as authenticating\n// two different messages with the same key allows an attacker\n// to forge messages at will.\nfunc New(key *[32]byte) *MAC {\n\tm := &MAC{}\n\tinitialize(key, &m.macState)\n\treturn m\n}\n\n// MAC is an io.Writer computing an authentication tag\n// of the data written to it.\n//\n// MAC cannot be used like common hash.Hash implementations,\n// because using a poly1305 key twice breaks its security.\n// Therefore writing data to a running MAC after calling\n// Sum or Verify causes it to panic.\ntype MAC struct {\n\tmac // platform-dependent implementation\n\n\tfinalized bool\n}\n\n// Size returns the number of bytes Sum will return.\nfunc (h *MAC) Size() int { return TagSize }\n\n// Write adds more data to the running message authentication code.\n// It never returns an error.\n//\n// It must not be called after the first call of Sum or Verify.\nfunc (h *MAC) Write(p []byte) (n int, err error) {\n\tif h.finalized {\n\t\tpanic(\"poly1305: write to MAC after Sum or Verify\")\n\t}\n\treturn h.mac.Write(p)\n}\n\n// Sum computes the authenticator of all data written to the\n// message authentication code.\nfunc (h *MAC) Sum(b []byte) []byte {\n\tvar mac [TagSize]byte\n\th.mac.Sum(&mac)\n\th.finalized = true\n\treturn append(b, mac[:]...)\n}\n\n// Verify returns whether the authenticator of all data written to\n// the message authentication code matches the expected value.\nfunc (h *MAC) Verify(expected []byte) bool {\n\tvar mac [TagSize]byte\n\th.mac.Sum(&mac)\n\th.finalized = true\n\treturn subtle.ConstantTimeCompare(expected, mac[:]) == 1\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_amd64.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage poly1305\n\n//go:noescape\nfunc update(state *macState, msg []byte)\n\n// mac is a wrapper for macGeneric that redirects calls that would have gone to\n// updateGeneric to update.\n//\n// Its Write and Sum methods are otherwise identical to the macGeneric ones, but\n// using function pointers would carry a major performance cost.\ntype mac struct{ macGeneric }\n\nfunc (h *mac) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < TagSize {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tupdate(&h.macState, h.buffer[:])\n\t}\n\tif n := len(p) - (len(p) % TagSize); n > 0 {\n\t\tupdate(&h.macState, p[:n])\n\t\tp = p[n:]\n\t}\n\tif len(p) > 0 {\n\t\th.offset += copy(h.buffer[h.offset:], p)\n\t}\n\treturn nn, nil\n}\n\nfunc (h *mac) Sum(out *[16]byte) {\n\tstate := h.macState\n\tif h.offset > 0 {\n\t\tupdate(&state, h.buffer[:h.offset])\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_amd64.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//go:build gc && !purego\n\n#include \"textflag.h\"\n\n#define POLY1305_ADD(msg, h0, h1, h2) \\\n\tADDQ 0(msg), h0;  \\\n\tADCQ 8(msg), h1;  \\\n\tADCQ $1, h2;      \\\n\tLEAQ 16(msg), msg\n\n#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3) \\\n\tMOVQ  r0, AX;                  \\\n\tMULQ  h0;                      \\\n\tMOVQ  AX, t0;                  \\\n\tMOVQ  DX, t1;                  \\\n\tMOVQ  r0, AX;                  \\\n\tMULQ  h1;                      \\\n\tADDQ  AX, t1;                  \\\n\tADCQ  $0, DX;                  \\\n\tMOVQ  r0, t2;                  \\\n\tIMULQ h2, t2;                  \\\n\tADDQ  DX, t2;                  \\\n\t                               \\\n\tMOVQ  r1, AX;                  \\\n\tMULQ  h0;                      \\\n\tADDQ  AX, t1;                  \\\n\tADCQ  $0, DX;                  \\\n\tMOVQ  DX, h0;                  \\\n\tMOVQ  r1, t3;                  \\\n\tIMULQ h2, t3;                  \\\n\tMOVQ  r1, AX;                  \\\n\tMULQ  h1;                      \\\n\tADDQ  AX, t2;                  \\\n\tADCQ  DX, t3;                  \\\n\tADDQ  h0, t2;                  \\\n\tADCQ  $0, t3;                  \\\n\t                               \\\n\tMOVQ  t0, h0;                  \\\n\tMOVQ  t1, h1;                  \\\n\tMOVQ  t2, h2;                  \\\n\tANDQ  $3, h2;                  \\\n\tMOVQ  t2, t0;                  \\\n\tANDQ  $0xFFFFFFFFFFFFFFFC, t0; \\\n\tADDQ  t0, h0;                  \\\n\tADCQ  t3, h1;                  \\\n\tADCQ  $0, h2;                  \\\n\tSHRQ  $2, t3, t2;              \\\n\tSHRQ  $2, t3;                  \\\n\tADDQ  t2, h0;                  \\\n\tADCQ  t3, h1;                  \\\n\tADCQ  $0, h2\n\n// func update(state *[7]uint64, msg []byte)\nTEXT ·update(SB), $0-32\n\tMOVQ state+0(FP), DI\n\tMOVQ msg_base+8(FP), SI\n\tMOVQ msg_len+16(FP), R15\n\n\tMOVQ 0(DI), R8   // h0\n\tMOVQ 8(DI), R9   // h1\n\tMOVQ 16(DI), R10 // h2\n\tMOVQ 24(DI), R11 // r0\n\tMOVQ 32(DI), R12 // r1\n\n\tCMPQ R15, $16\n\tJB   bytes_between_0_and_15\n\nloop:\n\tPOLY1305_ADD(SI, R8, R9, R10)\n\nmultiply:\n\tPOLY1305_MUL(R8, R9, R10, R11, R12, BX, CX, R13, R14)\n\tSUBQ $16, R15\n\tCMPQ R15, $16\n\tJAE  loop\n\nbytes_between_0_and_15:\n\tTESTQ R15, R15\n\tJZ    done\n\tMOVQ  $1, BX\n\tXORQ  CX, CX\n\tXORQ  R13, R13\n\tADDQ  R15, SI\n\nflush_buffer:\n\tSHLQ $8, BX, CX\n\tSHLQ $8, BX\n\tMOVB -1(SI), R13\n\tXORQ R13, BX\n\tDECQ SI\n\tDECQ R15\n\tJNZ  flush_buffer\n\n\tADDQ BX, R8\n\tADCQ CX, R9\n\tADCQ $0, R10\n\tMOVQ $16, R15\n\tJMP  multiply\n\ndone:\n\tMOVQ R8, 0(DI)\n\tMOVQ R9, 8(DI)\n\tMOVQ R10, 16(DI)\n\tRET\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_generic.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// This file provides the generic implementation of Sum and MAC. Other files\n// might provide optimized assembly implementations of some of this code.\n\npackage poly1305\n\nimport (\n\t\"encoding/binary\"\n\t\"math/bits\"\n)\n\n// Poly1305 [RFC 7539] is a relatively simple algorithm: the authentication tag\n// for a 64 bytes message is approximately\n//\n//     s + m[0:16] * r⁴ + m[16:32] * r³ + m[32:48] * r² + m[48:64] * r  mod  2¹³⁰ - 5\n//\n// for some secret r and s. It can be computed sequentially like\n//\n//     for len(msg) > 0:\n//         h += read(msg, 16)\n//         h *= r\n//         h %= 2¹³⁰ - 5\n//     return h + s\n//\n// All the complexity is about doing performant constant-time math on numbers\n// larger than any available numeric type.\n\nfunc sumGeneric(out *[TagSize]byte, msg []byte, key *[32]byte) {\n\th := newMACGeneric(key)\n\th.Write(msg)\n\th.Sum(out)\n}\n\nfunc newMACGeneric(key *[32]byte) macGeneric {\n\tm := macGeneric{}\n\tinitialize(key, &m.macState)\n\treturn m\n}\n\n// macState holds numbers in saturated 64-bit little-endian limbs. That is,\n// the value of [x0, x1, x2] is x[0] + x[1] * 2⁶⁴ + x[2] * 2¹²⁸.\ntype macState struct {\n\t// h is the main accumulator. It is to be interpreted modulo 2¹³⁰ - 5, but\n\t// can grow larger during and after rounds. It must, however, remain below\n\t// 2 * (2¹³⁰ - 5).\n\th [3]uint64\n\t// r and s are the private key components.\n\tr [2]uint64\n\ts [2]uint64\n}\n\ntype macGeneric struct {\n\tmacState\n\n\tbuffer [TagSize]byte\n\toffset int\n}\n\n// Write splits the incoming message into TagSize chunks, and passes them to\n// update. It buffers incomplete chunks.\nfunc (h *macGeneric) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < TagSize {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tupdateGeneric(&h.macState, h.buffer[:])\n\t}\n\tif n := len(p) - (len(p) % TagSize); n > 0 {\n\t\tupdateGeneric(&h.macState, p[:n])\n\t\tp = p[n:]\n\t}\n\tif len(p) > 0 {\n\t\th.offset += copy(h.buffer[h.offset:], p)\n\t}\n\treturn nn, nil\n}\n\n// Sum flushes the last incomplete chunk from the buffer, if any, and generates\n// the MAC output. It does not modify its state, in order to allow for multiple\n// calls to Sum, even if no Write is allowed after Sum.\nfunc (h *macGeneric) Sum(out *[TagSize]byte) {\n\tstate := h.macState\n\tif h.offset > 0 {\n\t\tupdateGeneric(&state, h.buffer[:h.offset])\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n\n// [rMask0, rMask1] is the specified Poly1305 clamping mask in little-endian. It\n// clears some bits of the secret coefficient to make it possible to implement\n// multiplication more efficiently.\nconst (\n\trMask0 = 0x0FFFFFFC0FFFFFFF\n\trMask1 = 0x0FFFFFFC0FFFFFFC\n)\n\n// initialize loads the 256-bit key into the two 128-bit secret values r and s.\nfunc initialize(key *[32]byte, m *macState) {\n\tm.r[0] = binary.LittleEndian.Uint64(key[0:8]) & rMask0\n\tm.r[1] = binary.LittleEndian.Uint64(key[8:16]) & rMask1\n\tm.s[0] = binary.LittleEndian.Uint64(key[16:24])\n\tm.s[1] = binary.LittleEndian.Uint64(key[24:32])\n}\n\n// uint128 holds a 128-bit number as two 64-bit limbs, for use with the\n// bits.Mul64 and bits.Add64 intrinsics.\ntype uint128 struct {\n\tlo, hi uint64\n}\n\nfunc mul64(a, b uint64) uint128 {\n\thi, lo := bits.Mul64(a, b)\n\treturn uint128{lo, hi}\n}\n\nfunc add128(a, b uint128) uint128 {\n\tlo, c := bits.Add64(a.lo, b.lo, 0)\n\thi, c := bits.Add64(a.hi, b.hi, c)\n\tif c != 0 {\n\t\tpanic(\"poly1305: unexpected overflow\")\n\t}\n\treturn uint128{lo, hi}\n}\n\nfunc shiftRightBy2(a uint128) uint128 {\n\ta.lo = a.lo>>2 | (a.hi&3)<<62\n\ta.hi = a.hi >> 2\n\treturn a\n}\n\n// updateGeneric absorbs msg into the state.h accumulator. For each chunk m of\n// 128 bits of message, it computes\n//\n//\th₊ = (h + m) * r  mod  2¹³⁰ - 5\n//\n// If the msg length is not a multiple of TagSize, it assumes the last\n// incomplete chunk is the final one.\nfunc updateGeneric(state *macState, msg []byte) {\n\th0, h1, h2 := state.h[0], state.h[1], state.h[2]\n\tr0, r1 := state.r[0], state.r[1]\n\n\tfor len(msg) > 0 {\n\t\tvar c uint64\n\n\t\t// For the first step, h + m, we use a chain of bits.Add64 intrinsics.\n\t\t// The resulting value of h might exceed 2¹³⁰ - 5, but will be partially\n\t\t// reduced at the end of the multiplication below.\n\t\t//\n\t\t// The spec requires us to set a bit just above the message size, not to\n\t\t// hide leading zeroes. For full chunks, that's 1 << 128, so we can just\n\t\t// add 1 to the most significant (2¹²⁸) limb, h2.\n\t\tif len(msg) >= TagSize {\n\t\t\th0, c = bits.Add64(h0, binary.LittleEndian.Uint64(msg[0:8]), 0)\n\t\t\th1, c = bits.Add64(h1, binary.LittleEndian.Uint64(msg[8:16]), c)\n\t\t\th2 += c + 1\n\n\t\t\tmsg = msg[TagSize:]\n\t\t} else {\n\t\t\tvar buf [TagSize]byte\n\t\t\tcopy(buf[:], msg)\n\t\t\tbuf[len(msg)] = 1\n\n\t\t\th0, c = bits.Add64(h0, binary.LittleEndian.Uint64(buf[0:8]), 0)\n\t\t\th1, c = bits.Add64(h1, binary.LittleEndian.Uint64(buf[8:16]), c)\n\t\t\th2 += c\n\n\t\t\tmsg = nil\n\t\t}\n\n\t\t// Multiplication of big number limbs is similar to elementary school\n\t\t// columnar multiplication. Instead of digits, there are 64-bit limbs.\n\t\t//\n\t\t// We are multiplying a 3 limbs number, h, by a 2 limbs number, r.\n\t\t//\n\t\t//                        h2    h1    h0  x\n\t\t//                              r1    r0  =\n\t\t//                       ----------------\n\t\t//                      h2r0  h1r0  h0r0     <-- individual 128-bit products\n\t\t//            +   h2r1  h1r1  h0r1\n\t\t//               ------------------------\n\t\t//                 m3    m2    m1    m0      <-- result in 128-bit overlapping limbs\n\t\t//               ------------------------\n\t\t//         m3.hi m2.hi m1.hi m0.hi           <-- carry propagation\n\t\t//     +         m3.lo m2.lo m1.lo m0.lo\n\t\t//        -------------------------------\n\t\t//           t4    t3    t2    t1    t0      <-- final result in 64-bit limbs\n\t\t//\n\t\t// The main difference from pen-and-paper multiplication is that we do\n\t\t// carry propagation in a separate step, as if we wrote two digit sums\n\t\t// at first (the 128-bit limbs), and then carried the tens all at once.\n\n\t\th0r0 := mul64(h0, r0)\n\t\th1r0 := mul64(h1, r0)\n\t\th2r0 := mul64(h2, r0)\n\t\th0r1 := mul64(h0, r1)\n\t\th1r1 := mul64(h1, r1)\n\t\th2r1 := mul64(h2, r1)\n\n\t\t// Since h2 is known to be at most 7 (5 + 1 + 1), and r0 and r1 have their\n\t\t// top 4 bits cleared by rMask{0,1}, we know that their product is not going\n\t\t// to overflow 64 bits, so we can ignore the high part of the products.\n\t\t//\n\t\t// This also means that the product doesn't have a fifth limb (t4).\n\t\tif h2r0.hi != 0 {\n\t\t\tpanic(\"poly1305: unexpected overflow\")\n\t\t}\n\t\tif h2r1.hi != 0 {\n\t\t\tpanic(\"poly1305: unexpected overflow\")\n\t\t}\n\n\t\tm0 := h0r0\n\t\tm1 := add128(h1r0, h0r1) // These two additions don't overflow thanks again\n\t\tm2 := add128(h2r0, h1r1) // to the 4 masked bits at the top of r0 and r1.\n\t\tm3 := h2r1\n\n\t\tt0 := m0.lo\n\t\tt1, c := bits.Add64(m1.lo, m0.hi, 0)\n\t\tt2, c := bits.Add64(m2.lo, m1.hi, c)\n\t\tt3, _ := bits.Add64(m3.lo, m2.hi, c)\n\n\t\t// Now we have the result as 4 64-bit limbs, and we need to reduce it\n\t\t// modulo 2¹³⁰ - 5. The special shape of this Crandall prime lets us do\n\t\t// a cheap partial reduction according to the reduction identity\n\t\t//\n\t\t//     c * 2¹³⁰ + n  =  c * 5 + n  mod  2¹³⁰ - 5\n\t\t//\n\t\t// because 2¹³⁰ = 5 mod 2¹³⁰ - 5. Partial reduction since the result is\n\t\t// likely to be larger than 2¹³⁰ - 5, but still small enough to fit the\n\t\t// assumptions we make about h in the rest of the code.\n\t\t//\n\t\t// See also https://speakerdeck.com/gtank/engineering-prime-numbers?slide=23\n\n\t\t// We split the final result at the 2¹³⁰ mark into h and cc, the carry.\n\t\t// Note that the carry bits are effectively shifted left by 2, in other\n\t\t// words, cc = c * 4 for the c in the reduction identity.\n\t\th0, h1, h2 = t0, t1, t2&maskLow2Bits\n\t\tcc := uint128{t2 & maskNotLow2Bits, t3}\n\n\t\t// To add c * 5 to h, we first add cc = c * 4, and then add (cc >> 2) = c.\n\n\t\th0, c = bits.Add64(h0, cc.lo, 0)\n\t\th1, c = bits.Add64(h1, cc.hi, c)\n\t\th2 += c\n\n\t\tcc = shiftRightBy2(cc)\n\n\t\th0, c = bits.Add64(h0, cc.lo, 0)\n\t\th1, c = bits.Add64(h1, cc.hi, c)\n\t\th2 += c\n\n\t\t// h2 is at most 3 + 1 + 1 = 5, making the whole of h at most\n\t\t//\n\t\t//     5 * 2¹²⁸ + (2¹²⁸ - 1) = 6 * 2¹²⁸ - 1\n\t}\n\n\tstate.h[0], state.h[1], state.h[2] = h0, h1, h2\n}\n\nconst (\n\tmaskLow2Bits    uint64 = 0x0000000000000003\n\tmaskNotLow2Bits uint64 = ^maskLow2Bits\n)\n\n// select64 returns x if v == 1 and y if v == 0, in constant time.\nfunc select64(v, x, y uint64) uint64 { return ^(v-1)&x | (v-1)&y }\n\n// [p0, p1, p2] is 2¹³⁰ - 5 in little endian order.\nconst (\n\tp0 = 0xFFFFFFFFFFFFFFFB\n\tp1 = 0xFFFFFFFFFFFFFFFF\n\tp2 = 0x0000000000000003\n)\n\n// finalize completes the modular reduction of h and computes\n//\n//\tout = h + s  mod  2¹²⁸\nfunc finalize(out *[TagSize]byte, h *[3]uint64, s *[2]uint64) {\n\th0, h1, h2 := h[0], h[1], h[2]\n\n\t// After the partial reduction in updateGeneric, h might be more than\n\t// 2¹³⁰ - 5, but will be less than 2 * (2¹³⁰ - 5). To complete the reduction\n\t// in constant time, we compute t = h - (2¹³⁰ - 5), and select h as the\n\t// result if the subtraction underflows, and t otherwise.\n\n\thMinusP0, b := bits.Sub64(h0, p0, 0)\n\thMinusP1, b := bits.Sub64(h1, p1, b)\n\t_, b = bits.Sub64(h2, p2, b)\n\n\t// h = h if h < p else h - p\n\th0 = select64(b, h0, hMinusP0)\n\th1 = select64(b, h1, hMinusP1)\n\n\t// Finally, we compute the last Poly1305 step\n\t//\n\t//     tag = h + s  mod  2¹²⁸\n\t//\n\t// by just doing a wide addition with the 128 low bits of h and discarding\n\t// the overflow.\n\th0, c := bits.Add64(h0, s[0], 0)\n\th1, _ = bits.Add64(h1, s[1], c)\n\n\tbinary.LittleEndian.PutUint64(out[0:8], h0)\n\tbinary.LittleEndian.PutUint64(out[8:16], h1)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_ppc64le.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage poly1305\n\n//go:noescape\nfunc update(state *macState, msg []byte)\n\n// mac is a wrapper for macGeneric that redirects calls that would have gone to\n// updateGeneric to update.\n//\n// Its Write and Sum methods are otherwise identical to the macGeneric ones, but\n// using function pointers would carry a major performance cost.\ntype mac struct{ macGeneric }\n\nfunc (h *mac) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < TagSize {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tupdate(&h.macState, h.buffer[:])\n\t}\n\tif n := len(p) - (len(p) % TagSize); n > 0 {\n\t\tupdate(&h.macState, p[:n])\n\t\tp = p[n:]\n\t}\n\tif len(p) > 0 {\n\t\th.offset += copy(h.buffer[h.offset:], p)\n\t}\n\treturn nn, nil\n}\n\nfunc (h *mac) Sum(out *[16]byte) {\n\tstate := h.macState\n\tif h.offset > 0 {\n\t\tupdate(&state, h.buffer[:h.offset])\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_ppc64le.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n\n// This was ported from the amd64 implementation.\n\n#define POLY1305_ADD(msg, h0, h1, h2, t0, t1, t2) \\\n\tMOVD (msg), t0;  \\\n\tMOVD 8(msg), t1; \\\n\tMOVD $1, t2;     \\\n\tADDC t0, h0, h0; \\\n\tADDE t1, h1, h1; \\\n\tADDE t2, h2;     \\\n\tADD  $16, msg\n\n#define POLY1305_MUL(h0, h1, h2, r0, r1, t0, t1, t2, t3, t4, t5) \\\n\tMULLD  r0, h0, t0;  \\\n\tMULHDU r0, h0, t1;  \\\n\tMULLD  r0, h1, t4;  \\\n\tMULHDU r0, h1, t5;  \\\n\tADDC   t4, t1, t1;  \\\n\tMULLD  r0, h2, t2;  \\\n\tMULHDU r1, h0, t4;  \\\n\tMULLD  r1, h0, h0;  \\\n\tADDE   t5, t2, t2;  \\\n\tADDC   h0, t1, t1;  \\\n\tMULLD  h2, r1, t3;  \\\n\tADDZE  t4, h0;      \\\n\tMULHDU r1, h1, t5;  \\\n\tMULLD  r1, h1, t4;  \\\n\tADDC   t4, t2, t2;  \\\n\tADDE   t5, t3, t3;  \\\n\tADDC   h0, t2, t2;  \\\n\tMOVD   $-4, t4;     \\\n\tADDZE  t3;          \\\n\tRLDICL $0, t2, $62, h2; \\\n\tAND    t2, t4, h0;  \\\n\tADDC   t0, h0, h0;  \\\n\tADDE   t3, t1, h1;  \\\n\tSLD    $62, t3, t4; \\\n\tSRD    $2, t2;      \\\n\tADDZE  h2;          \\\n\tOR     t4, t2, t2;  \\\n\tSRD    $2, t3;      \\\n\tADDC   t2, h0, h0;  \\\n\tADDE   t3, h1, h1;  \\\n\tADDZE  h2\n\nDATA ·poly1305Mask<>+0x00(SB)/8, $0x0FFFFFFC0FFFFFFF\nDATA ·poly1305Mask<>+0x08(SB)/8, $0x0FFFFFFC0FFFFFFC\nGLOBL ·poly1305Mask<>(SB), RODATA, $16\n\n// func update(state *[7]uint64, msg []byte)\nTEXT ·update(SB), $0-32\n\tMOVD state+0(FP), R3\n\tMOVD msg_base+8(FP), R4\n\tMOVD msg_len+16(FP), R5\n\n\tMOVD 0(R3), R8   // h0\n\tMOVD 8(R3), R9   // h1\n\tMOVD 16(R3), R10 // h2\n\tMOVD 24(R3), R11 // r0\n\tMOVD 32(R3), R12 // r1\n\n\tCMP R5, $16\n\tBLT bytes_between_0_and_15\n\nloop:\n\tPOLY1305_ADD(R4, R8, R9, R10, R20, R21, R22)\n\n\tPCALIGN $16\nmultiply:\n\tPOLY1305_MUL(R8, R9, R10, R11, R12, R16, R17, R18, R14, R20, R21)\n\tADD $-16, R5\n\tCMP R5, $16\n\tBGE loop\n\nbytes_between_0_and_15:\n\tCMP  R5, $0\n\tBEQ  done\n\tMOVD $0, R16 // h0\n\tMOVD $0, R17 // h1\n\nflush_buffer:\n\tCMP R5, $8\n\tBLE just1\n\n\tMOVD $8, R21\n\tSUB  R21, R5, R21\n\n\t// Greater than 8 -- load the rightmost remaining bytes in msg\n\t// and put into R17 (h1)\n\tMOVD (R4)(R21), R17\n\tMOVD $16, R22\n\n\t// Find the offset to those bytes\n\tSUB R5, R22, R22\n\tSLD $3, R22\n\n\t// Shift to get only the bytes in msg\n\tSRD R22, R17, R17\n\n\t// Put 1 at high end\n\tMOVD $1, R23\n\tSLD  $3, R21\n\tSLD  R21, R23, R23\n\tOR   R23, R17, R17\n\n\t// Remainder is 8\n\tMOVD $8, R5\n\njust1:\n\tCMP R5, $8\n\tBLT less8\n\n\t// Exactly 8\n\tMOVD (R4), R16\n\n\tCMP R17, $0\n\n\t// Check if we've already set R17; if not\n\t// set 1 to indicate end of msg.\n\tBNE  carry\n\tMOVD $1, R17\n\tBR   carry\n\nless8:\n\tMOVD  $0, R16   // h0\n\tMOVD  $0, R22   // shift count\n\tCMP   R5, $4\n\tBLT   less4\n\tMOVWZ (R4), R16\n\tADD   $4, R4\n\tADD   $-4, R5\n\tMOVD  $32, R22\n\nless4:\n\tCMP   R5, $2\n\tBLT   less2\n\tMOVHZ (R4), R21\n\tSLD   R22, R21, R21\n\tOR    R16, R21, R16\n\tADD   $16, R22\n\tADD   $-2, R5\n\tADD   $2, R4\n\nless2:\n\tCMP   R5, $0\n\tBEQ   insert1\n\tMOVBZ (R4), R21\n\tSLD   R22, R21, R21\n\tOR    R16, R21, R16\n\tADD   $8, R22\n\ninsert1:\n\t// Insert 1 at end of msg\n\tMOVD $1, R21\n\tSLD  R22, R21, R21\n\tOR   R16, R21, R16\n\ncarry:\n\t// Add new values to h0, h1, h2\n\tADDC  R16, R8\n\tADDE  R17, R9\n\tADDZE R10, R10\n\tMOVD  $16, R5\n\tADD   R5, R4\n\tBR    multiply\n\ndone:\n\t// Save h0, h1, h2 in state\n\tMOVD R8, 0(R3)\n\tMOVD R9, 8(R3)\n\tMOVD R10, 16(R3)\n\tRET\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_s390x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\npackage poly1305\n\nimport (\n\t\"gossh/sys/cpu\"\n)\n\n// updateVX is an assembly implementation of Poly1305 that uses vector\n// instructions. It must only be called if the vector facility (vx) is\n// available.\n//\n//go:noescape\nfunc updateVX(state *macState, msg []byte)\n\n// mac is a replacement for macGeneric that uses a larger buffer and redirects\n// calls that would have gone to updateGeneric to updateVX if the vector\n// facility is installed.\n//\n// A larger buffer is required for good performance because the vector\n// implementation has a higher fixed cost per call than the generic\n// implementation.\ntype mac struct {\n\tmacState\n\n\tbuffer [16 * TagSize]byte // size must be a multiple of block size (16)\n\toffset int\n}\n\nfunc (h *mac) Write(p []byte) (int, error) {\n\tnn := len(p)\n\tif h.offset > 0 {\n\t\tn := copy(h.buffer[h.offset:], p)\n\t\tif h.offset+n < len(h.buffer) {\n\t\t\th.offset += n\n\t\t\treturn nn, nil\n\t\t}\n\t\tp = p[n:]\n\t\th.offset = 0\n\t\tif cpu.S390X.HasVX {\n\t\t\tupdateVX(&h.macState, h.buffer[:])\n\t\t} else {\n\t\t\tupdateGeneric(&h.macState, h.buffer[:])\n\t\t}\n\t}\n\n\ttail := len(p) % len(h.buffer) // number of bytes to copy into buffer\n\tbody := len(p) - tail          // number of bytes to process now\n\tif body > 0 {\n\t\tif cpu.S390X.HasVX {\n\t\t\tupdateVX(&h.macState, p[:body])\n\t\t} else {\n\t\t\tupdateGeneric(&h.macState, p[:body])\n\t\t}\n\t}\n\th.offset = copy(h.buffer[:], p[body:]) // copy tail bytes - can be 0\n\treturn nn, nil\n}\n\nfunc (h *mac) Sum(out *[TagSize]byte) {\n\tstate := h.macState\n\tremainder := h.buffer[:h.offset]\n\n\t// Use the generic implementation if we have 2 or fewer blocks left\n\t// to sum. The vector implementation has a higher startup time.\n\tif cpu.S390X.HasVX && len(remainder) > 2*TagSize {\n\t\tupdateVX(&state, remainder)\n\t} else if len(remainder) > 0 {\n\t\tupdateGeneric(&state, remainder)\n\t}\n\tfinalize(out, &state.h, &state.s)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/poly1305/sum_s390x.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc && !purego\n\n#include \"textflag.h\"\n\n// This implementation of Poly1305 uses the vector facility (vx)\n// to process up to 2 blocks (32 bytes) per iteration using an\n// algorithm based on the one described in:\n//\n// NEON crypto, Daniel J. Bernstein & Peter Schwabe\n// https://cryptojedi.org/papers/neoncrypto-20120320.pdf\n//\n// This algorithm uses 5 26-bit limbs to represent a 130-bit\n// value. These limbs are, for the most part, zero extended and\n// placed into 64-bit vector register elements. Each vector\n// register is 128-bits wide and so holds 2 of these elements.\n// Using 26-bit limbs allows us plenty of headroom to accommodate\n// accumulations before and after multiplication without\n// overflowing either 32-bits (before multiplication) or 64-bits\n// (after multiplication).\n//\n// In order to parallelise the operations required to calculate\n// the sum we use two separate accumulators and then sum those\n// in an extra final step. For compatibility with the generic\n// implementation we perform this summation at the end of every\n// updateVX call.\n//\n// To use two accumulators we must multiply the message blocks\n// by r² rather than r. Only the final message block should be\n// multiplied by r.\n//\n// Example:\n//\n// We want to calculate the sum (h) for a 64 byte message (m):\n//\n//   h = m[0:16]r⁴ + m[16:32]r³ + m[32:48]r² + m[48:64]r\n//\n// To do this we split the calculation into the even indices\n// and odd indices of the message. These form our SIMD 'lanes':\n//\n//   h = m[ 0:16]r⁴ + m[32:48]r² +   <- lane 0\n//       m[16:32]r³ + m[48:64]r      <- lane 1\n//\n// To calculate this iteratively we refactor so that both lanes\n// are written in terms of r² and r:\n//\n//   h = (m[ 0:16]r² + m[32:48])r² + <- lane 0\n//       (m[16:32]r² + m[48:64])r    <- lane 1\n//                ^             ^\n//                |             coefficients for second iteration\n//                coefficients for first iteration\n//\n// So in this case we would have two iterations. In the first\n// both lanes are multiplied by r². In the second only the\n// first lane is multiplied by r² and the second lane is\n// instead multiplied by r. This gives use the odd and even\n// powers of r that we need from the original equation.\n//\n// Notation:\n//\n//   h - accumulator\n//   r - key\n//   m - message\n//\n//   [a, b]       - SIMD register holding two 64-bit values\n//   [a, b, c, d] - SIMD register holding four 32-bit values\n//   xᵢ[n]        - limb n of variable x with bit width i\n//\n// Limbs are expressed in little endian order, so for 26-bit\n// limbs x₂₆[4] will be the most significant limb and x₂₆[0]\n// will be the least significant limb.\n\n// masking constants\n#define MOD24 V0 // [0x0000000000ffffff, 0x0000000000ffffff] - mask low 24-bits\n#define MOD26 V1 // [0x0000000003ffffff, 0x0000000003ffffff] - mask low 26-bits\n\n// expansion constants (see EXPAND macro)\n#define EX0 V2\n#define EX1 V3\n#define EX2 V4\n\n// key (r², r or 1 depending on context)\n#define R_0 V5\n#define R_1 V6\n#define R_2 V7\n#define R_3 V8\n#define R_4 V9\n\n// precalculated coefficients (5r², 5r or 0 depending on context)\n#define R5_1 V10\n#define R5_2 V11\n#define R5_3 V12\n#define R5_4 V13\n\n// message block (m)\n#define M_0 V14\n#define M_1 V15\n#define M_2 V16\n#define M_3 V17\n#define M_4 V18\n\n// accumulator (h)\n#define H_0 V19\n#define H_1 V20\n#define H_2 V21\n#define H_3 V22\n#define H_4 V23\n\n// temporary registers (for short-lived values)\n#define T_0 V24\n#define T_1 V25\n#define T_2 V26\n#define T_3 V27\n#define T_4 V28\n\nGLOBL ·constants<>(SB), RODATA, $0x30\n// EX0\nDATA ·constants<>+0x00(SB)/8, $0x0006050403020100\nDATA ·constants<>+0x08(SB)/8, $0x1016151413121110\n// EX1\nDATA ·constants<>+0x10(SB)/8, $0x060c0b0a09080706\nDATA ·constants<>+0x18(SB)/8, $0x161c1b1a19181716\n// EX2\nDATA ·constants<>+0x20(SB)/8, $0x0d0d0d0d0d0f0e0d\nDATA ·constants<>+0x28(SB)/8, $0x1d1d1d1d1d1f1e1d\n\n// MULTIPLY multiplies each lane of f and g, partially reduced\n// modulo 2¹³⁰ - 5. The result, h, consists of partial products\n// in each lane that need to be reduced further to produce the\n// final result.\n//\n//   h₁₃₀ = (f₁₃₀g₁₃₀) % 2¹³⁰ + (5f₁₃₀g₁₃₀) / 2¹³⁰\n//\n// Note that the multiplication by 5 of the high bits is\n// achieved by precalculating the multiplication of four of the\n// g coefficients by 5. These are g51-g54.\n#define MULTIPLY(f0, f1, f2, f3, f4, g0, g1, g2, g3, g4, g51, g52, g53, g54, h0, h1, h2, h3, h4) \\\n\tVMLOF  f0, g0, h0        \\\n\tVMLOF  f0, g3, h3        \\\n\tVMLOF  f0, g1, h1        \\\n\tVMLOF  f0, g4, h4        \\\n\tVMLOF  f0, g2, h2        \\\n\tVMLOF  f1, g54, T_0      \\\n\tVMLOF  f1, g2, T_3       \\\n\tVMLOF  f1, g0, T_1       \\\n\tVMLOF  f1, g3, T_4       \\\n\tVMLOF  f1, g1, T_2       \\\n\tVMALOF f2, g53, h0, h0   \\\n\tVMALOF f2, g1, h3, h3    \\\n\tVMALOF f2, g54, h1, h1   \\\n\tVMALOF f2, g2, h4, h4    \\\n\tVMALOF f2, g0, h2, h2    \\\n\tVMALOF f3, g52, T_0, T_0 \\\n\tVMALOF f3, g0, T_3, T_3  \\\n\tVMALOF f3, g53, T_1, T_1 \\\n\tVMALOF f3, g1, T_4, T_4  \\\n\tVMALOF f3, g54, T_2, T_2 \\\n\tVMALOF f4, g51, h0, h0   \\\n\tVMALOF f4, g54, h3, h3   \\\n\tVMALOF f4, g52, h1, h1   \\\n\tVMALOF f4, g0, h4, h4    \\\n\tVMALOF f4, g53, h2, h2   \\\n\tVAG    T_0, h0, h0       \\\n\tVAG    T_3, h3, h3       \\\n\tVAG    T_1, h1, h1       \\\n\tVAG    T_4, h4, h4       \\\n\tVAG    T_2, h2, h2\n\n// REDUCE performs the following carry operations in four\n// stages, as specified in Bernstein & Schwabe:\n//\n//   1: h₂₆[0]->h₂₆[1] h₂₆[3]->h₂₆[4]\n//   2: h₂₆[1]->h₂₆[2] h₂₆[4]->h₂₆[0]\n//   3: h₂₆[0]->h₂₆[1] h₂₆[2]->h₂₆[3]\n//   4: h₂₆[3]->h₂₆[4]\n//\n// The result is that all of the limbs are limited to 26-bits\n// except for h₂₆[1] and h₂₆[4] which are limited to 27-bits.\n//\n// Note that although each limb is aligned at 26-bit intervals\n// they may contain values that exceed 2²⁶ - 1, hence the need\n// to carry the excess bits in each limb.\n#define REDUCE(h0, h1, h2, h3, h4) \\\n\tVESRLG $26, h0, T_0  \\\n\tVESRLG $26, h3, T_1  \\\n\tVN     MOD26, h0, h0 \\\n\tVN     MOD26, h3, h3 \\\n\tVAG    T_0, h1, h1   \\\n\tVAG    T_1, h4, h4   \\\n\tVESRLG $26, h1, T_2  \\\n\tVESRLG $26, h4, T_3  \\\n\tVN     MOD26, h1, h1 \\\n\tVN     MOD26, h4, h4 \\\n\tVESLG  $2, T_3, T_4  \\\n\tVAG    T_3, T_4, T_4 \\\n\tVAG    T_2, h2, h2   \\\n\tVAG    T_4, h0, h0   \\\n\tVESRLG $26, h2, T_0  \\\n\tVESRLG $26, h0, T_1  \\\n\tVN     MOD26, h2, h2 \\\n\tVN     MOD26, h0, h0 \\\n\tVAG    T_0, h3, h3   \\\n\tVAG    T_1, h1, h1   \\\n\tVESRLG $26, h3, T_2  \\\n\tVN     MOD26, h3, h3 \\\n\tVAG    T_2, h4, h4\n\n// EXPAND splits the 128-bit little-endian values in0 and in1\n// into 26-bit big-endian limbs and places the results into\n// the first and second lane of d₂₆[0:4] respectively.\n//\n// The EX0, EX1 and EX2 constants are arrays of byte indices\n// for permutation. The permutation both reverses the bytes\n// in the input and ensures the bytes are copied into the\n// destination limb ready to be shifted into their final\n// position.\n#define EXPAND(in0, in1, d0, d1, d2, d3, d4) \\\n\tVPERM  in0, in1, EX0, d0 \\\n\tVPERM  in0, in1, EX1, d2 \\\n\tVPERM  in0, in1, EX2, d4 \\\n\tVESRLG $26, d0, d1       \\\n\tVESRLG $30, d2, d3       \\\n\tVESRLG $4, d2, d2        \\\n\tVN     MOD26, d0, d0     \\ // [in0₂₆[0], in1₂₆[0]]\n\tVN     MOD26, d3, d3     \\ // [in0₂₆[3], in1₂₆[3]]\n\tVN     MOD26, d1, d1     \\ // [in0₂₆[1], in1₂₆[1]]\n\tVN     MOD24, d4, d4     \\ // [in0₂₆[4], in1₂₆[4]]\n\tVN     MOD26, d2, d2     // [in0₂₆[2], in1₂₆[2]]\n\n// func updateVX(state *macState, msg []byte)\nTEXT ·updateVX(SB), NOSPLIT, $0\n\tMOVD state+0(FP), R1\n\tLMG  msg+8(FP), R2, R3 // R2=msg_base, R3=msg_len\n\n\t// load EX0, EX1 and EX2\n\tMOVD $·constants<>(SB), R5\n\tVLM  (R5), EX0, EX2\n\n\t// generate masks\n\tVGMG $(64-24), $63, MOD24 // [0x00ffffff, 0x00ffffff]\n\tVGMG $(64-26), $63, MOD26 // [0x03ffffff, 0x03ffffff]\n\n\t// load h (accumulator) and r (key) from state\n\tVZERO T_1               // [0, 0]\n\tVL    0(R1), T_0        // [h₆₄[0], h₆₄[1]]\n\tVLEG  $0, 16(R1), T_1   // [h₆₄[2], 0]\n\tVL    24(R1), T_2       // [r₆₄[0], r₆₄[1]]\n\tVPDI  $0, T_0, T_2, T_3 // [h₆₄[0], r₆₄[0]]\n\tVPDI  $5, T_0, T_2, T_4 // [h₆₄[1], r₆₄[1]]\n\n\t// unpack h and r into 26-bit limbs\n\t// note: h₆₄[2] may have the low 3 bits set, so h₂₆[4] is a 27-bit value\n\tVN     MOD26, T_3, H_0            // [h₂₆[0], r₂₆[0]]\n\tVZERO  H_1                        // [0, 0]\n\tVZERO  H_3                        // [0, 0]\n\tVGMG   $(64-12-14), $(63-12), T_0 // [0x03fff000, 0x03fff000] - 26-bit mask with low 12 bits masked out\n\tVESLG  $24, T_1, T_1              // [h₆₄[2]<<24, 0]\n\tVERIMG $-26&63, T_3, MOD26, H_1   // [h₂₆[1], r₂₆[1]]\n\tVESRLG $+52&63, T_3, H_2          // [h₂₆[2], r₂₆[2]] - low 12 bits only\n\tVERIMG $-14&63, T_4, MOD26, H_3   // [h₂₆[1], r₂₆[1]]\n\tVESRLG $40, T_4, H_4              // [h₂₆[4], r₂₆[4]] - low 24 bits only\n\tVERIMG $+12&63, T_4, T_0, H_2     // [h₂₆[2], r₂₆[2]] - complete\n\tVO     T_1, H_4, H_4              // [h₂₆[4], r₂₆[4]] - complete\n\n\t// replicate r across all 4 vector elements\n\tVREPF $3, H_0, R_0 // [r₂₆[0], r₂₆[0], r₂₆[0], r₂₆[0]]\n\tVREPF $3, H_1, R_1 // [r₂₆[1], r₂₆[1], r₂₆[1], r₂₆[1]]\n\tVREPF $3, H_2, R_2 // [r₂₆[2], r₂₆[2], r₂₆[2], r₂₆[2]]\n\tVREPF $3, H_3, R_3 // [r₂₆[3], r₂₆[3], r₂₆[3], r₂₆[3]]\n\tVREPF $3, H_4, R_4 // [r₂₆[4], r₂₆[4], r₂₆[4], r₂₆[4]]\n\n\t// zero out lane 1 of h\n\tVLEIG $1, $0, H_0 // [h₂₆[0], 0]\n\tVLEIG $1, $0, H_1 // [h₂₆[1], 0]\n\tVLEIG $1, $0, H_2 // [h₂₆[2], 0]\n\tVLEIG $1, $0, H_3 // [h₂₆[3], 0]\n\tVLEIG $1, $0, H_4 // [h₂₆[4], 0]\n\n\t// calculate 5r (ignore least significant limb)\n\tVREPIF $5, T_0\n\tVMLF   T_0, R_1, R5_1 // [5r₂₆[1], 5r₂₆[1], 5r₂₆[1], 5r₂₆[1]]\n\tVMLF   T_0, R_2, R5_2 // [5r₂₆[2], 5r₂₆[2], 5r₂₆[2], 5r₂₆[2]]\n\tVMLF   T_0, R_3, R5_3 // [5r₂₆[3], 5r₂₆[3], 5r₂₆[3], 5r₂₆[3]]\n\tVMLF   T_0, R_4, R5_4 // [5r₂₆[4], 5r₂₆[4], 5r₂₆[4], 5r₂₆[4]]\n\n\t// skip r² calculation if we are only calculating one block\n\tCMPBLE R3, $16, skip\n\n\t// calculate r²\n\tMULTIPLY(R_0, R_1, R_2, R_3, R_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, M_0, M_1, M_2, M_3, M_4)\n\tREDUCE(M_0, M_1, M_2, M_3, M_4)\n\tVGBM   $0x0f0f, T_0\n\tVERIMG $0, M_0, T_0, R_0 // [r₂₆[0], r²₂₆[0], r₂₆[0], r²₂₆[0]]\n\tVERIMG $0, M_1, T_0, R_1 // [r₂₆[1], r²₂₆[1], r₂₆[1], r²₂₆[1]]\n\tVERIMG $0, M_2, T_0, R_2 // [r₂₆[2], r²₂₆[2], r₂₆[2], r²₂₆[2]]\n\tVERIMG $0, M_3, T_0, R_3 // [r₂₆[3], r²₂₆[3], r₂₆[3], r²₂₆[3]]\n\tVERIMG $0, M_4, T_0, R_4 // [r₂₆[4], r²₂₆[4], r₂₆[4], r²₂₆[4]]\n\n\t// calculate 5r² (ignore least significant limb)\n\tVREPIF $5, T_0\n\tVMLF   T_0, R_1, R5_1 // [5r₂₆[1], 5r²₂₆[1], 5r₂₆[1], 5r²₂₆[1]]\n\tVMLF   T_0, R_2, R5_2 // [5r₂₆[2], 5r²₂₆[2], 5r₂₆[2], 5r²₂₆[2]]\n\tVMLF   T_0, R_3, R5_3 // [5r₂₆[3], 5r²₂₆[3], 5r₂₆[3], 5r²₂₆[3]]\n\tVMLF   T_0, R_4, R5_4 // [5r₂₆[4], 5r²₂₆[4], 5r₂₆[4], 5r²₂₆[4]]\n\nloop:\n\tCMPBLE R3, $32, b2 // 2 or fewer blocks remaining, need to change key coefficients\n\n\t// load next 2 blocks from message\n\tVLM (R2), T_0, T_1\n\n\t// update message slice\n\tSUB  $32, R3\n\tMOVD $32(R2), R2\n\n\t// unpack message blocks into 26-bit big-endian limbs\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// add 2¹²⁸ to each message block value\n\tVLEIB $4, $1, M_4\n\tVLEIB $12, $1, M_4\n\nmultiply:\n\t// accumulate the incoming message\n\tVAG H_0, M_0, M_0\n\tVAG H_3, M_3, M_3\n\tVAG H_1, M_1, M_1\n\tVAG H_4, M_4, M_4\n\tVAG H_2, M_2, M_2\n\n\t// multiply the accumulator by the key coefficient\n\tMULTIPLY(M_0, M_1, M_2, M_3, M_4, R_0, R_1, R_2, R_3, R_4, R5_1, R5_2, R5_3, R5_4, H_0, H_1, H_2, H_3, H_4)\n\n\t// carry and partially reduce the partial products\n\tREDUCE(H_0, H_1, H_2, H_3, H_4)\n\n\tCMPBNE R3, $0, loop\n\nfinish:\n\t// sum lane 0 and lane 1 and put the result in lane 1\n\tVZERO  T_0\n\tVSUMQG H_0, T_0, H_0\n\tVSUMQG H_3, T_0, H_3\n\tVSUMQG H_1, T_0, H_1\n\tVSUMQG H_4, T_0, H_4\n\tVSUMQG H_2, T_0, H_2\n\n\t// reduce again after summation\n\t// TODO(mundaym): there might be a more efficient way to do this\n\t// now that we only have 1 active lane. For example, we could\n\t// simultaneously pack the values as we reduce them.\n\tREDUCE(H_0, H_1, H_2, H_3, H_4)\n\n\t// carry h[1] through to h[4] so that only h[4] can exceed 2²⁶ - 1\n\t// TODO(mundaym): in testing this final carry was unnecessary.\n\t// Needs a proof before it can be removed though.\n\tVESRLG $26, H_1, T_1\n\tVN     MOD26, H_1, H_1\n\tVAQ    T_1, H_2, H_2\n\tVESRLG $26, H_2, T_2\n\tVN     MOD26, H_2, H_2\n\tVAQ    T_2, H_3, H_3\n\tVESRLG $26, H_3, T_3\n\tVN     MOD26, H_3, H_3\n\tVAQ    T_3, H_4, H_4\n\n\t// h is now < 2(2¹³⁰ - 5)\n\t// Pack each lane in h₂₆[0:4] into h₁₂₈[0:1].\n\tVESLG $26, H_1, H_1\n\tVESLG $26, H_3, H_3\n\tVO    H_0, H_1, H_0\n\tVO    H_2, H_3, H_2\n\tVESLG $4, H_2, H_2\n\tVLEIB $7, $48, H_1\n\tVSLB  H_1, H_2, H_2\n\tVO    H_0, H_2, H_0\n\tVLEIB $7, $104, H_1\n\tVSLB  H_1, H_4, H_3\n\tVO    H_3, H_0, H_0\n\tVLEIB $7, $24, H_1\n\tVSRLB H_1, H_4, H_1\n\n\t// update state\n\tVSTEG $1, H_0, 0(R1)\n\tVSTEG $0, H_0, 8(R1)\n\tVSTEG $1, H_1, 16(R1)\n\tRET\n\nb2:  // 2 or fewer blocks remaining\n\tCMPBLE R3, $16, b1\n\n\t// Load the 2 remaining blocks (17-32 bytes remaining).\n\tMOVD $-17(R3), R0    // index of final byte to load modulo 16\n\tVL   (R2), T_0       // load full 16 byte block\n\tVLL  R0, 16(R2), T_1 // load final (possibly partial) block and pad with zeros to 16 bytes\n\n\t// The Poly1305 algorithm requires that a 1 bit be appended to\n\t// each message block. If the final block is less than 16 bytes\n\t// long then it is easiest to insert the 1 before the message\n\t// block is split into 26-bit limbs. If, on the other hand, the\n\t// final message block is 16 bytes long then we append the 1 bit\n\t// after expansion as normal.\n\tMOVBZ  $1, R0\n\tMOVD   $-16(R3), R3   // index of byte in last block to insert 1 at (could be 16)\n\tCMPBEQ R3, $16, 2(PC) // skip the insertion if the final block is 16 bytes long\n\tVLVGB  R3, R0, T_1    // insert 1 into the byte at index R3\n\n\t// Split both blocks into 26-bit limbs in the appropriate lanes.\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// Append a 1 byte to the end of the second to last block.\n\tVLEIB $4, $1, M_4\n\n\t// Append a 1 byte to the end of the last block only if it is a\n\t// full 16 byte block.\n\tCMPBNE R3, $16, 2(PC)\n\tVLEIB  $12, $1, M_4\n\n\t// Finally, set up the coefficients for the final multiplication.\n\t// We have previously saved r and 5r in the 32-bit even indexes\n\t// of the R_[0-4] and R5_[1-4] coefficient registers.\n\t//\n\t// We want lane 0 to be multiplied by r² so that can be kept the\n\t// same. We want lane 1 to be multiplied by r so we need to move\n\t// the saved r value into the 32-bit odd index in lane 1 by\n\t// rotating the 64-bit lane by 32.\n\tVGBM   $0x00ff, T_0         // [0, 0xffffffffffffffff] - mask lane 1 only\n\tVERIMG $32, R_0, T_0, R_0   // [_,  r²₂₆[0], _,  r₂₆[0]]\n\tVERIMG $32, R_1, T_0, R_1   // [_,  r²₂₆[1], _,  r₂₆[1]]\n\tVERIMG $32, R_2, T_0, R_2   // [_,  r²₂₆[2], _,  r₂₆[2]]\n\tVERIMG $32, R_3, T_0, R_3   // [_,  r²₂₆[3], _,  r₂₆[3]]\n\tVERIMG $32, R_4, T_0, R_4   // [_,  r²₂₆[4], _,  r₂₆[4]]\n\tVERIMG $32, R5_1, T_0, R5_1 // [_, 5r²₂₆[1], _, 5r₂₆[1]]\n\tVERIMG $32, R5_2, T_0, R5_2 // [_, 5r²₂₆[2], _, 5r₂₆[2]]\n\tVERIMG $32, R5_3, T_0, R5_3 // [_, 5r²₂₆[3], _, 5r₂₆[3]]\n\tVERIMG $32, R5_4, T_0, R5_4 // [_, 5r²₂₆[4], _, 5r₂₆[4]]\n\n\tMOVD $0, R3\n\tBR   multiply\n\nskip:\n\tCMPBEQ R3, $0, finish\n\nb1:  // 1 block remaining\n\n\t// Load the final block (1-16 bytes). This will be placed into\n\t// lane 0.\n\tMOVD $-1(R3), R0\n\tVLL  R0, (R2), T_0 // pad to 16 bytes with zeros\n\n\t// The Poly1305 algorithm requires that a 1 bit be appended to\n\t// each message block. If the final block is less than 16 bytes\n\t// long then it is easiest to insert the 1 before the message\n\t// block is split into 26-bit limbs. If, on the other hand, the\n\t// final message block is 16 bytes long then we append the 1 bit\n\t// after expansion as normal.\n\tMOVBZ  $1, R0\n\tCMPBEQ R3, $16, 2(PC)\n\tVLVGB  R3, R0, T_0\n\n\t// Set the message block in lane 1 to the value 0 so that it\n\t// can be accumulated without affecting the final result.\n\tVZERO T_1\n\n\t// Split the final message block into 26-bit limbs in lane 0.\n\t// Lane 1 will be contain 0.\n\tEXPAND(T_0, T_1, M_0, M_1, M_2, M_3, M_4)\n\n\t// Append a 1 byte to the end of the last block only if it is a\n\t// full 16 byte block.\n\tCMPBNE R3, $16, 2(PC)\n\tVLEIB  $4, $1, M_4\n\n\t// We have previously saved r and 5r in the 32-bit even indexes\n\t// of the R_[0-4] and R5_[1-4] coefficient registers.\n\t//\n\t// We want lane 0 to be multiplied by r so we need to move the\n\t// saved r value into the 32-bit odd index in lane 0. We want\n\t// lane 1 to be set to the value 1. This makes multiplication\n\t// a no-op. We do this by setting lane 1 in every register to 0\n\t// and then just setting the 32-bit index 3 in R_0 to 1.\n\tVZERO T_0\n\tMOVD  $0, R0\n\tMOVD  $0x10111213, R12\n\tVLVGP R12, R0, T_1         // [_, 0x10111213, _, 0x00000000]\n\tVPERM T_0, R_0, T_1, R_0   // [_,  r₂₆[0], _, 0]\n\tVPERM T_0, R_1, T_1, R_1   // [_,  r₂₆[1], _, 0]\n\tVPERM T_0, R_2, T_1, R_2   // [_,  r₂₆[2], _, 0]\n\tVPERM T_0, R_3, T_1, R_3   // [_,  r₂₆[3], _, 0]\n\tVPERM T_0, R_4, T_1, R_4   // [_,  r₂₆[4], _, 0]\n\tVPERM T_0, R5_1, T_1, R5_1 // [_, 5r₂₆[1], _, 0]\n\tVPERM T_0, R5_2, T_1, R5_2 // [_, 5r₂₆[2], _, 0]\n\tVPERM T_0, R5_3, T_1, R5_3 // [_, 5r₂₆[3], _, 0]\n\tVPERM T_0, R5_4, T_1, R5_4 // [_, 5r₂₆[4], _, 0]\n\n\t// Set the value of lane 1 to be 1.\n\tVLEIF $3, $1, R_0 // [_,  r₂₆[0], _, 1]\n\n\tMOVD $0, R3\n\tBR   multiply\n"
  },
  {
    "path": "gossh/crypto/internal/testenv/exec.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage testenv\n\nimport (\n\t\"context\"\n\t\"os\"\n\t\"os/exec\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"testing\"\n\t\"time\"\n)\n\n// CommandContext is like exec.CommandContext, but:\n//   - skips t if the platform does not support os/exec,\n//   - sends SIGQUIT (if supported by the platform) instead of SIGKILL\n//     in its Cancel function\n//   - if the test has a deadline, adds a Context timeout and WaitDelay\n//     for an arbitrary grace period before the test's deadline expires,\n//   - fails the test if the command does not complete before the test's deadline, and\n//   - sets a Cleanup function that verifies that the test did not leak a subprocess.\nfunc CommandContext(t testing.TB, ctx context.Context, name string, args ...string) *exec.Cmd {\n\tt.Helper()\n\n\tvar (\n\t\tcancelCtx   context.CancelFunc\n\t\tgracePeriod time.Duration // unlimited unless the test has a deadline (to allow for interactive debugging)\n\t)\n\n\tif t, ok := t.(interface {\n\t\ttesting.TB\n\t\tDeadline() (time.Time, bool)\n\t}); ok {\n\t\tif td, ok := t.Deadline(); ok {\n\t\t\t// Start with a minimum grace period, just long enough to consume the\n\t\t\t// output of a reasonable program after it terminates.\n\t\t\tgracePeriod = 100 * time.Millisecond\n\t\t\tif s := os.Getenv(\"GO_TEST_TIMEOUT_SCALE\"); s != \"\" {\n\t\t\t\tscale, err := strconv.Atoi(s)\n\t\t\t\tif err != nil {\n\t\t\t\t\tt.Fatalf(\"invalid GO_TEST_TIMEOUT_SCALE: %v\", err)\n\t\t\t\t}\n\t\t\t\tgracePeriod *= time.Duration(scale)\n\t\t\t}\n\n\t\t\t// If time allows, increase the termination grace period to 5% of the\n\t\t\t// test's remaining time.\n\t\t\ttestTimeout := time.Until(td)\n\t\t\tif gp := testTimeout / 20; gp > gracePeriod {\n\t\t\t\tgracePeriod = gp\n\t\t\t}\n\n\t\t\t// When we run commands that execute subprocesses, we want to reserve two\n\t\t\t// grace periods to clean up: one for the delay between the first\n\t\t\t// termination signal being sent (via the Cancel callback when the Context\n\t\t\t// expires) and the process being forcibly terminated (via the WaitDelay\n\t\t\t// field), and a second one for the delay becween the process being\n\t\t\t// terminated and and the test logging its output for debugging.\n\t\t\t//\n\t\t\t// (We want to ensure that the test process itself has enough time to\n\t\t\t// log the output before it is also terminated.)\n\t\t\tcmdTimeout := testTimeout - 2*gracePeriod\n\n\t\t\tif cd, ok := ctx.Deadline(); !ok || time.Until(cd) > cmdTimeout {\n\t\t\t\t// Either ctx doesn't have a deadline, or its deadline would expire\n\t\t\t\t// after (or too close before) the test has already timed out.\n\t\t\t\t// Add a shorter timeout so that the test will produce useful output.\n\t\t\t\tctx, cancelCtx = context.WithTimeout(ctx, cmdTimeout)\n\t\t\t}\n\t\t}\n\t}\n\n\tcmd := exec.CommandContext(ctx, name, args...)\n\t// Set the Cancel and WaitDelay fields only if present (go 1.20 and later).\n\t// TODO: When Go 1.19 is no longer supported, remove this use of reflection\n\t// and instead set the fields directly.\n\tif cmdCancel := reflect.ValueOf(cmd).Elem().FieldByName(\"Cancel\"); cmdCancel.IsValid() {\n\t\tcmdCancel.Set(reflect.ValueOf(func() error {\n\t\t\tif cancelCtx != nil && ctx.Err() == context.DeadlineExceeded {\n\t\t\t\t// The command timed out due to running too close to the test's deadline.\n\t\t\t\t// There is no way the test did that intentionally — it's too close to the\n\t\t\t\t// wire! — so mark it as a test failure. That way, if the test expects the\n\t\t\t\t// command to fail for some other reason, it doesn't have to distinguish\n\t\t\t\t// between that reason and a timeout.\n\t\t\t\tt.Errorf(\"test timed out while running command: %v\", cmd)\n\t\t\t} else {\n\t\t\t\t// The command is being terminated due to ctx being canceled, but\n\t\t\t\t// apparently not due to an explicit test deadline that we added.\n\t\t\t\t// Log that information in case it is useful for diagnosing a failure,\n\t\t\t\t// but don't actually fail the test because of it.\n\t\t\t\tt.Logf(\"%v: terminating command: %v\", ctx.Err(), cmd)\n\t\t\t}\n\t\t\treturn cmd.Process.Signal(Sigquit)\n\t\t}))\n\t}\n\tif cmdWaitDelay := reflect.ValueOf(cmd).Elem().FieldByName(\"WaitDelay\"); cmdWaitDelay.IsValid() {\n\t\tcmdWaitDelay.Set(reflect.ValueOf(gracePeriod))\n\t}\n\n\tt.Cleanup(func() {\n\t\tif cancelCtx != nil {\n\t\t\tcancelCtx()\n\t\t}\n\t\tif cmd.Process != nil && cmd.ProcessState == nil {\n\t\t\tt.Errorf(\"command was started, but test did not wait for it to complete: %v\", cmd)\n\t\t}\n\t})\n\n\treturn cmd\n}\n\n// Command is like exec.Command, but applies the same changes as\n// testenv.CommandContext (with a default Context).\nfunc Command(t testing.TB, name string, args ...string) *exec.Cmd {\n\tt.Helper()\n\treturn CommandContext(t, context.Background(), name, args...)\n}\n"
  },
  {
    "path": "gossh/crypto/internal/testenv/testenv_notunix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows || plan9 || (js && wasm) || wasip1\n\npackage testenv\n\nimport (\n\t\"os\"\n)\n\n// Sigquit is the signal to send to kill a hanging subprocess.\n// On Unix we send SIGQUIT, but on non-Unix we only have os.Kill.\nvar Sigquit = os.Kill\n"
  },
  {
    "path": "gossh/crypto/internal/testenv/testenv_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build unix\n\npackage testenv\n\nimport (\n\t\"syscall\"\n)\n\n// Sigquit is the signal to send to kill a hanging subprocess.\n// Send SIGQUIT to get a stack trace.\nvar Sigquit = syscall.SIGQUIT\n"
  },
  {
    "path": "gossh/crypto/ssh/agent/client.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// Package agent implements the ssh-agent protocol, and provides both\n// a client and a server. The client can talk to a standard ssh-agent\n// that uses UNIX sockets, and one could implement an alternative\n// ssh-agent process using the sample server.\n//\n// References:\n//\n//\t[PROTOCOL.agent]: https://tools.ietf.org/html/draft-miller-ssh-agent-00\npackage agent // import \"golang.org/x/crypto/ssh/agent\"\n\nimport (\n\t\"bytes\"\n\t\"crypto/dsa\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/elliptic\"\n\t\"crypto/rsa\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"sync\"\n\n\t\"gossh/crypto/ssh\"\n)\n\n// SignatureFlags represent additional flags that can be passed to the signature\n// requests an defined in [PROTOCOL.agent] section 4.5.1.\ntype SignatureFlags uint32\n\n// SignatureFlag values as defined in [PROTOCOL.agent] section 5.3.\nconst (\n\tSignatureFlagReserved SignatureFlags = 1 << iota\n\tSignatureFlagRsaSha256\n\tSignatureFlagRsaSha512\n)\n\n// Agent represents the capabilities of an ssh-agent.\ntype Agent interface {\n\t// List returns the identities known to the agent.\n\tList() ([]*Key, error)\n\n\t// Sign has the agent sign the data using a protocol 2 key as defined\n\t// in [PROTOCOL.agent] section 2.6.2.\n\tSign(key ssh.PublicKey, data []byte) (*ssh.Signature, error)\n\n\t// Add adds a private key to the agent.\n\tAdd(key AddedKey) error\n\n\t// Remove removes all identities with the given public key.\n\tRemove(key ssh.PublicKey) error\n\n\t// RemoveAll removes all identities.\n\tRemoveAll() error\n\n\t// Lock locks the agent. Sign and Remove will fail, and List will empty an empty list.\n\tLock(passphrase []byte) error\n\n\t// Unlock undoes the effect of Lock\n\tUnlock(passphrase []byte) error\n\n\t// Signers returns signers for all the known keys.\n\tSigners() ([]ssh.Signer, error)\n}\n\ntype ExtendedAgent interface {\n\tAgent\n\n\t// SignWithFlags signs like Sign, but allows for additional flags to be sent/received\n\tSignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error)\n\n\t// Extension processes a custom extension request. Standard-compliant agents are not\n\t// required to support any extensions, but this method allows agents to implement\n\t// vendor-specific methods or add experimental features. See [PROTOCOL.agent] section 4.7.\n\t// If agent extensions are unsupported entirely this method MUST return an\n\t// ErrExtensionUnsupported error. Similarly, if just the specific extensionType in\n\t// the request is unsupported by the agent then ErrExtensionUnsupported MUST be\n\t// returned.\n\t//\n\t// In the case of success, since [PROTOCOL.agent] section 4.7 specifies that the contents\n\t// of the response are unspecified (including the type of the message), the complete\n\t// response will be returned as a []byte slice, including the \"type\" byte of the message.\n\tExtension(extensionType string, contents []byte) ([]byte, error)\n}\n\n// ConstraintExtension describes an optional constraint defined by users.\ntype ConstraintExtension struct {\n\t// ExtensionName consist of a UTF-8 string suffixed by the\n\t// implementation domain following the naming scheme defined\n\t// in Section 4.2 of RFC 4251, e.g.  \"foo@example.com\".\n\tExtensionName string\n\t// ExtensionDetails contains the actual content of the extended\n\t// constraint.\n\tExtensionDetails []byte\n}\n\n// AddedKey describes an SSH key to be added to an Agent.\ntype AddedKey struct {\n\t// PrivateKey must be a *rsa.PrivateKey, *dsa.PrivateKey,\n\t// ed25519.PrivateKey or *ecdsa.PrivateKey, which will be inserted into the\n\t// agent.\n\tPrivateKey any\n\t// Certificate, if not nil, is communicated to the agent and will be\n\t// stored with the key.\n\tCertificate *ssh.Certificate\n\t// Comment is an optional, free-form string.\n\tComment string\n\t// LifetimeSecs, if not zero, is the number of seconds that the\n\t// agent will store the key for.\n\tLifetimeSecs uint32\n\t// ConfirmBeforeUse, if true, requests that the agent confirm with the\n\t// user before each use of this key.\n\tConfirmBeforeUse bool\n\t// ConstraintExtensions are the experimental or private-use constraints\n\t// defined by users.\n\tConstraintExtensions []ConstraintExtension\n}\n\n// See [PROTOCOL.agent], section 3.\nconst (\n\tagentRequestV1Identities   = 1\n\tagentRemoveAllV1Identities = 9\n\n\t// 3.2 Requests from client to agent for protocol 2 key operations\n\tagentAddIdentity         = 17\n\tagentRemoveIdentity      = 18\n\tagentRemoveAllIdentities = 19\n\tagentAddIDConstrained    = 25\n\n\t// 3.3 Key-type independent requests from client to agent\n\tagentAddSmartcardKey            = 20\n\tagentRemoveSmartcardKey         = 21\n\tagentLock                       = 22\n\tagentUnlock                     = 23\n\tagentAddSmartcardKeyConstrained = 26\n\n\t// 3.7 Key constraint identifiers\n\tagentConstrainLifetime = 1\n\tagentConstrainConfirm  = 2\n\t// Constraint extension identifier up to version 2 of the protocol. A\n\t// backward incompatible change will be required if we want to add support\n\t// for SSH_AGENT_CONSTRAIN_MAXSIGN which uses the same ID.\n\tagentConstrainExtensionV00 = 3\n\t// Constraint extension identifier in version 3 and later of the protocol.\n\tagentConstrainExtension = 255\n)\n\n// maxAgentResponseBytes is the maximum agent reply size that is accepted. This\n// is a sanity check, not a limit in the spec.\nconst maxAgentResponseBytes = 16 << 20\n\n// Agent messages:\n// These structures mirror the wire format of the corresponding ssh agent\n// messages found in [PROTOCOL.agent].\n\n// 3.4 Generic replies from agent to client\nconst agentFailure = 5\n\ntype failureAgentMsg struct{}\n\nconst agentSuccess = 6\n\ntype successAgentMsg struct{}\n\n// See [PROTOCOL.agent], section 2.5.2.\nconst agentRequestIdentities = 11\n\ntype requestIdentitiesAgentMsg struct{}\n\n// See [PROTOCOL.agent], section 2.5.2.\nconst agentIdentitiesAnswer = 12\n\ntype identitiesAnswerAgentMsg struct {\n\tNumKeys uint32 `sshtype:\"12\"`\n\tKeys    []byte `ssh:\"rest\"`\n}\n\n// See [PROTOCOL.agent], section 2.6.2.\nconst agentSignRequest = 13\n\ntype signRequestAgentMsg struct {\n\tKeyBlob []byte `sshtype:\"13\"`\n\tData    []byte\n\tFlags   uint32\n}\n\n// See [PROTOCOL.agent], section 2.6.2.\n\n// 3.6 Replies from agent to client for protocol 2 key operations\nconst agentSignResponse = 14\n\ntype signResponseAgentMsg struct {\n\tSigBlob []byte `sshtype:\"14\"`\n}\n\ntype publicKey struct {\n\tFormat string\n\tRest   []byte `ssh:\"rest\"`\n}\n\n// 3.7 Key constraint identifiers\ntype constrainLifetimeAgentMsg struct {\n\tLifetimeSecs uint32 `sshtype:\"1\"`\n}\n\ntype constrainExtensionAgentMsg struct {\n\tExtensionName    string `sshtype:\"255|3\"`\n\tExtensionDetails []byte\n\n\t// Rest is a field used for parsing, not part of message\n\tRest []byte `ssh:\"rest\"`\n}\n\n// See [PROTOCOL.agent], section 4.7\nconst agentExtension = 27\nconst agentExtensionFailure = 28\n\n// ErrExtensionUnsupported indicates that an extension defined in\n// [PROTOCOL.agent] section 4.7 is unsupported by the agent. Specifically this\n// error indicates that the agent returned a standard SSH_AGENT_FAILURE message\n// as the result of a SSH_AGENTC_EXTENSION request. Note that the protocol\n// specification (and therefore this error) does not distinguish between a\n// specific extension being unsupported and extensions being unsupported entirely.\nvar ErrExtensionUnsupported = errors.New(\"agent: extension unsupported\")\n\ntype extensionAgentMsg struct {\n\tExtensionType string `sshtype:\"27\"`\n\t// NOTE: this matches OpenSSH's PROTOCOL.agent, not the IETF draft [PROTOCOL.agent],\n\t// so that it matches what OpenSSH actually implements in the wild.\n\tContents []byte `ssh:\"rest\"`\n}\n\n// Key represents a protocol 2 public key as defined in\n// [PROTOCOL.agent], section 2.5.2.\ntype Key struct {\n\tFormat  string\n\tBlob    []byte\n\tComment string\n}\n\nfunc clientErr(err error) error {\n\treturn fmt.Errorf(\"agent: client error: %v\", err)\n}\n\n// String returns the storage form of an agent key with the format, base64\n// encoded serialized key, and the comment if it is not empty.\nfunc (k *Key) String() string {\n\ts := string(k.Format) + \" \" + base64.StdEncoding.EncodeToString(k.Blob)\n\n\tif k.Comment != \"\" {\n\t\ts += \" \" + k.Comment\n\t}\n\n\treturn s\n}\n\n// Type returns the public key type.\nfunc (k *Key) Type() string {\n\treturn k.Format\n}\n\n// Marshal returns key blob to satisfy the ssh.PublicKey interface.\nfunc (k *Key) Marshal() []byte {\n\treturn k.Blob\n}\n\n// Verify satisfies the ssh.PublicKey interface.\nfunc (k *Key) Verify(data []byte, sig *ssh.Signature) error {\n\tpubKey, err := ssh.ParsePublicKey(k.Blob)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"agent: bad public key: %v\", err)\n\t}\n\treturn pubKey.Verify(data, sig)\n}\n\ntype wireKey struct {\n\tFormat string\n\tRest   []byte `ssh:\"rest\"`\n}\n\nfunc parseKey(in []byte) (out *Key, rest []byte, err error) {\n\tvar record struct {\n\t\tBlob    []byte\n\t\tComment string\n\t\tRest    []byte `ssh:\"rest\"`\n\t}\n\n\tif err := ssh.Unmarshal(in, &record); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tvar wk wireKey\n\tif err := ssh.Unmarshal(record.Blob, &wk); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn &Key{\n\t\tFormat:  wk.Format,\n\t\tBlob:    record.Blob,\n\t\tComment: record.Comment,\n\t}, record.Rest, nil\n}\n\n// client is a client for an ssh-agent process.\ntype client struct {\n\t// conn is typically a *net.UnixConn\n\tconn io.ReadWriter\n\t// mu is used to prevent concurrent access to the agent\n\tmu sync.Mutex\n}\n\n// NewClient returns an Agent that talks to an ssh-agent process over\n// the given connection.\nfunc NewClient(rw io.ReadWriter) ExtendedAgent {\n\treturn &client{conn: rw}\n}\n\n// call sends an RPC to the agent. On success, the reply is\n// unmarshaled into reply and replyType is set to the first byte of\n// the reply, which contains the type of the message.\nfunc (c *client) call(req []byte) (reply any, err error) {\n\tbuf, err := c.callRaw(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treply, err = unmarshal(buf)\n\tif err != nil {\n\t\treturn nil, clientErr(err)\n\t}\n\treturn reply, nil\n}\n\n// callRaw sends an RPC to the agent. On success, the raw\n// bytes of the response are returned; no unmarshalling is\n// performed on the response.\nfunc (c *client) callRaw(req []byte) (reply []byte, err error) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\n\tmsg := make([]byte, 4+len(req))\n\tbinary.BigEndian.PutUint32(msg, uint32(len(req)))\n\tcopy(msg[4:], req)\n\tif _, err = c.conn.Write(msg); err != nil {\n\t\treturn nil, clientErr(err)\n\t}\n\n\tvar respSizeBuf [4]byte\n\tif _, err = io.ReadFull(c.conn, respSizeBuf[:]); err != nil {\n\t\treturn nil, clientErr(err)\n\t}\n\trespSize := binary.BigEndian.Uint32(respSizeBuf[:])\n\tif respSize > maxAgentResponseBytes {\n\t\treturn nil, clientErr(errors.New(\"response too large\"))\n\t}\n\n\tbuf := make([]byte, respSize)\n\tif _, err = io.ReadFull(c.conn, buf); err != nil {\n\t\treturn nil, clientErr(err)\n\t}\n\treturn buf, nil\n}\n\nfunc (c *client) simpleCall(req []byte) error {\n\tresp, err := c.call(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, ok := resp.(*successAgentMsg); ok {\n\t\treturn nil\n\t}\n\treturn errors.New(\"agent: failure\")\n}\n\nfunc (c *client) RemoveAll() error {\n\treturn c.simpleCall([]byte{agentRemoveAllIdentities})\n}\n\nfunc (c *client) Remove(key ssh.PublicKey) error {\n\treq := ssh.Marshal(&agentRemoveIdentityMsg{\n\t\tKeyBlob: key.Marshal(),\n\t})\n\treturn c.simpleCall(req)\n}\n\nfunc (c *client) Lock(passphrase []byte) error {\n\treq := ssh.Marshal(&agentLockMsg{\n\t\tPassphrase: passphrase,\n\t})\n\treturn c.simpleCall(req)\n}\n\nfunc (c *client) Unlock(passphrase []byte) error {\n\treq := ssh.Marshal(&agentUnlockMsg{\n\t\tPassphrase: passphrase,\n\t})\n\treturn c.simpleCall(req)\n}\n\n// List returns the identities known to the agent.\nfunc (c *client) List() ([]*Key, error) {\n\t// see [PROTOCOL.agent] section 2.5.2.\n\treq := []byte{agentRequestIdentities}\n\n\tmsg, err := c.call(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase *identitiesAnswerAgentMsg:\n\t\tif msg.NumKeys > maxAgentResponseBytes/8 {\n\t\t\treturn nil, errors.New(\"agent: too many keys in agent reply\")\n\t\t}\n\t\tkeys := make([]*Key, msg.NumKeys)\n\t\tdata := msg.Keys\n\t\tfor i := uint32(0); i < msg.NumKeys; i++ {\n\t\t\tvar key *Key\n\t\t\tvar err error\n\t\t\tif key, data, err = parseKey(data); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tkeys[i] = key\n\t\t}\n\t\treturn keys, nil\n\tcase *failureAgentMsg:\n\t\treturn nil, errors.New(\"agent: failed to list keys\")\n\t}\n\tpanic(\"unreachable\")\n}\n\n// Sign has the agent sign the data using a protocol 2 key as defined\n// in [PROTOCOL.agent] section 2.6.2.\nfunc (c *client) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) {\n\treturn c.SignWithFlags(key, data, 0)\n}\n\nfunc (c *client) SignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error) {\n\treq := ssh.Marshal(signRequestAgentMsg{\n\t\tKeyBlob: key.Marshal(),\n\t\tData:    data,\n\t\tFlags:   uint32(flags),\n\t})\n\n\tmsg, err := c.call(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase *signResponseAgentMsg:\n\t\tvar sig ssh.Signature\n\t\tif err := ssh.Unmarshal(msg.SigBlob, &sig); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn &sig, nil\n\tcase *failureAgentMsg:\n\t\treturn nil, errors.New(\"agent: failed to sign challenge\")\n\t}\n\tpanic(\"unreachable\")\n}\n\n// unmarshal parses an agent message in packet, returning the parsed\n// form and the message type of packet.\nfunc unmarshal(packet []byte) (any, error) {\n\tif len(packet) < 1 {\n\t\treturn nil, errors.New(\"agent: empty packet\")\n\t}\n\tvar msg any\n\tswitch packet[0] {\n\tcase agentFailure:\n\t\treturn new(failureAgentMsg), nil\n\tcase agentSuccess:\n\t\treturn new(successAgentMsg), nil\n\tcase agentIdentitiesAnswer:\n\t\tmsg = new(identitiesAnswerAgentMsg)\n\tcase agentSignResponse:\n\t\tmsg = new(signResponseAgentMsg)\n\tcase agentV1IdentitiesAnswer:\n\t\tmsg = new(agentV1IdentityMsg)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"agent: unknown type tag %d\", packet[0])\n\t}\n\tif err := ssh.Unmarshal(packet, msg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn msg, nil\n}\n\ntype rsaKeyMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tN           *big.Int\n\tE           *big.Int\n\tD           *big.Int\n\tIqmp        *big.Int // IQMP = Inverse Q Mod P\n\tP           *big.Int\n\tQ           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype dsaKeyMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tP           *big.Int\n\tQ           *big.Int\n\tG           *big.Int\n\tY           *big.Int\n\tX           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype ecdsaKeyMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tCurve       string\n\tKeyBytes    []byte\n\tD           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype ed25519KeyMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tPub         []byte\n\tPriv        []byte\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\n// Insert adds a private key to the agent.\nfunc (c *client) insertKey(s any, comment string, constraints []byte) error {\n\tvar req []byte\n\tswitch k := s.(type) {\n\tcase *rsa.PrivateKey:\n\t\tif len(k.Primes) != 2 {\n\t\t\treturn fmt.Errorf(\"agent: unsupported RSA key with %d primes\", len(k.Primes))\n\t\t}\n\t\tk.Precompute()\n\t\treq = ssh.Marshal(rsaKeyMsg{\n\t\t\tType:        ssh.KeyAlgoRSA,\n\t\t\tN:           k.N,\n\t\t\tE:           big.NewInt(int64(k.E)),\n\t\t\tD:           k.D,\n\t\t\tIqmp:        k.Precomputed.Qinv,\n\t\t\tP:           k.Primes[0],\n\t\t\tQ:           k.Primes[1],\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase *dsa.PrivateKey:\n\t\treq = ssh.Marshal(dsaKeyMsg{\n\t\t\tType:        ssh.KeyAlgoDSA,\n\t\t\tP:           k.P,\n\t\t\tQ:           k.Q,\n\t\t\tG:           k.G,\n\t\t\tY:           k.Y,\n\t\t\tX:           k.X,\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase *ecdsa.PrivateKey:\n\t\tnistID := fmt.Sprintf(\"nistp%d\", k.Params().BitSize)\n\t\treq = ssh.Marshal(ecdsaKeyMsg{\n\t\t\tType:        \"ecdsa-sha2-\" + nistID,\n\t\t\tCurve:       nistID,\n\t\t\tKeyBytes:    elliptic.Marshal(k.Curve, k.X, k.Y),\n\t\t\tD:           k.D,\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase ed25519.PrivateKey:\n\t\treq = ssh.Marshal(ed25519KeyMsg{\n\t\t\tType:        ssh.KeyAlgoED25519,\n\t\t\tPub:         []byte(k)[32:],\n\t\t\tPriv:        []byte(k),\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\t// This function originally supported only *ed25519.PrivateKey, however the\n\t// general idiom is to pass ed25519.PrivateKey by value, not by pointer.\n\t// We still support the pointer variant for backwards compatibility.\n\tcase *ed25519.PrivateKey:\n\t\treq = ssh.Marshal(ed25519KeyMsg{\n\t\t\tType:        ssh.KeyAlgoED25519,\n\t\t\tPub:         []byte(*k)[32:],\n\t\t\tPriv:        []byte(*k),\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tdefault:\n\t\treturn fmt.Errorf(\"agent: unsupported key type %T\", s)\n\t}\n\n\t// if constraints are present then the message type needs to be changed.\n\tif len(constraints) != 0 {\n\t\treq[0] = agentAddIDConstrained\n\t}\n\n\tresp, err := c.call(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, ok := resp.(*successAgentMsg); ok {\n\t\treturn nil\n\t}\n\treturn errors.New(\"agent: failure\")\n}\n\ntype rsaCertMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tCertBytes   []byte\n\tD           *big.Int\n\tIqmp        *big.Int // IQMP = Inverse Q Mod P\n\tP           *big.Int\n\tQ           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype dsaCertMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tCertBytes   []byte\n\tX           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype ecdsaCertMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tCertBytes   []byte\n\tD           *big.Int\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\ntype ed25519CertMsg struct {\n\tType        string `sshtype:\"17|25\"`\n\tCertBytes   []byte\n\tPub         []byte\n\tPriv        []byte\n\tComments    string\n\tConstraints []byte `ssh:\"rest\"`\n}\n\n// Add adds a private key to the agent. If a certificate is given,\n// that certificate is added instead as public key.\nfunc (c *client) Add(key AddedKey) error {\n\tvar constraints []byte\n\n\tif secs := key.LifetimeSecs; secs != 0 {\n\t\tconstraints = append(constraints, ssh.Marshal(constrainLifetimeAgentMsg{secs})...)\n\t}\n\n\tif key.ConfirmBeforeUse {\n\t\tconstraints = append(constraints, agentConstrainConfirm)\n\t}\n\n\tcert := key.Certificate\n\tif cert == nil {\n\t\treturn c.insertKey(key.PrivateKey, key.Comment, constraints)\n\t}\n\treturn c.insertCert(key.PrivateKey, cert, key.Comment, constraints)\n}\n\nfunc (c *client) insertCert(s any, cert *ssh.Certificate, comment string, constraints []byte) error {\n\tvar req []byte\n\tswitch k := s.(type) {\n\tcase *rsa.PrivateKey:\n\t\tif len(k.Primes) != 2 {\n\t\t\treturn fmt.Errorf(\"agent: unsupported RSA key with %d primes\", len(k.Primes))\n\t\t}\n\t\tk.Precompute()\n\t\treq = ssh.Marshal(rsaCertMsg{\n\t\t\tType:        cert.Type(),\n\t\t\tCertBytes:   cert.Marshal(),\n\t\t\tD:           k.D,\n\t\t\tIqmp:        k.Precomputed.Qinv,\n\t\t\tP:           k.Primes[0],\n\t\t\tQ:           k.Primes[1],\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase *dsa.PrivateKey:\n\t\treq = ssh.Marshal(dsaCertMsg{\n\t\t\tType:        cert.Type(),\n\t\t\tCertBytes:   cert.Marshal(),\n\t\t\tX:           k.X,\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase *ecdsa.PrivateKey:\n\t\treq = ssh.Marshal(ecdsaCertMsg{\n\t\t\tType:        cert.Type(),\n\t\t\tCertBytes:   cert.Marshal(),\n\t\t\tD:           k.D,\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tcase ed25519.PrivateKey:\n\t\treq = ssh.Marshal(ed25519CertMsg{\n\t\t\tType:        cert.Type(),\n\t\t\tCertBytes:   cert.Marshal(),\n\t\t\tPub:         []byte(k)[32:],\n\t\t\tPriv:        []byte(k),\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\t// This function originally supported only *ed25519.PrivateKey, however the\n\t// general idiom is to pass ed25519.PrivateKey by value, not by pointer.\n\t// We still support the pointer variant for backwards compatibility.\n\tcase *ed25519.PrivateKey:\n\t\treq = ssh.Marshal(ed25519CertMsg{\n\t\t\tType:        cert.Type(),\n\t\t\tCertBytes:   cert.Marshal(),\n\t\t\tPub:         []byte(*k)[32:],\n\t\t\tPriv:        []byte(*k),\n\t\t\tComments:    comment,\n\t\t\tConstraints: constraints,\n\t\t})\n\tdefault:\n\t\treturn fmt.Errorf(\"agent: unsupported key type %T\", s)\n\t}\n\n\t// if constraints are present then the message type needs to be changed.\n\tif len(constraints) != 0 {\n\t\treq[0] = agentAddIDConstrained\n\t}\n\n\tsigner, err := ssh.NewSignerFromKey(s)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !bytes.Equal(cert.Key.Marshal(), signer.PublicKey().Marshal()) {\n\t\treturn errors.New(\"agent: signer and cert have different public key\")\n\t}\n\n\tresp, err := c.call(req)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, ok := resp.(*successAgentMsg); ok {\n\t\treturn nil\n\t}\n\treturn errors.New(\"agent: failure\")\n}\n\n// Signers provides a callback for client authentication.\nfunc (c *client) Signers() ([]ssh.Signer, error) {\n\tkeys, err := c.List()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar result []ssh.Signer\n\tfor _, k := range keys {\n\t\tresult = append(result, &agentKeyringSigner{c, k})\n\t}\n\treturn result, nil\n}\n\ntype agentKeyringSigner struct {\n\tagent *client\n\tpub   ssh.PublicKey\n}\n\nfunc (s *agentKeyringSigner) PublicKey() ssh.PublicKey {\n\treturn s.pub\n}\n\nfunc (s *agentKeyringSigner) Sign(rand io.Reader, data []byte) (*ssh.Signature, error) {\n\t// The agent has its own entropy source, so the rand argument is ignored.\n\treturn s.agent.Sign(s.pub, data)\n}\n\nfunc (s *agentKeyringSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*ssh.Signature, error) {\n\tif algorithm == \"\" || algorithm == underlyingAlgo(s.pub.Type()) {\n\t\treturn s.Sign(rand, data)\n\t}\n\n\tvar flags SignatureFlags\n\tswitch algorithm {\n\tcase ssh.KeyAlgoRSASHA256:\n\t\tflags = SignatureFlagRsaSha256\n\tcase ssh.KeyAlgoRSASHA512:\n\t\tflags = SignatureFlagRsaSha512\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"agent: unsupported algorithm %q\", algorithm)\n\t}\n\n\treturn s.agent.SignWithFlags(s.pub, data, flags)\n}\n\nvar _ ssh.AlgorithmSigner = &agentKeyringSigner{}\n\n// certKeyAlgoNames is a mapping from known certificate algorithm names to the\n// corresponding public key signature algorithm.\n//\n// This map must be kept in sync with the one in certs.go.\nvar certKeyAlgoNames = map[string]string{\n\tssh.CertAlgoRSAv01:        ssh.KeyAlgoRSA,\n\tssh.CertAlgoRSASHA256v01:  ssh.KeyAlgoRSASHA256,\n\tssh.CertAlgoRSASHA512v01:  ssh.KeyAlgoRSASHA512,\n\tssh.CertAlgoDSAv01:        ssh.KeyAlgoDSA,\n\tssh.CertAlgoECDSA256v01:   ssh.KeyAlgoECDSA256,\n\tssh.CertAlgoECDSA384v01:   ssh.KeyAlgoECDSA384,\n\tssh.CertAlgoECDSA521v01:   ssh.KeyAlgoECDSA521,\n\tssh.CertAlgoSKECDSA256v01: ssh.KeyAlgoSKECDSA256,\n\tssh.CertAlgoED25519v01:    ssh.KeyAlgoED25519,\n\tssh.CertAlgoSKED25519v01:  ssh.KeyAlgoSKED25519,\n}\n\n// underlyingAlgo returns the signature algorithm associated with algo (which is\n// an advertised or negotiated public key or host key algorithm). These are\n// usually the same, except for certificate algorithms.\nfunc underlyingAlgo(algo string) string {\n\tif a, ok := certKeyAlgoNames[algo]; ok {\n\t\treturn a\n\t}\n\treturn algo\n}\n\n// Calls an extension method. It is up to the agent implementation as to whether or not\n// any particular extension is supported and may always return an error. Because the\n// type of the response is up to the implementation, this returns the bytes of the\n// response and does not attempt any type of unmarshalling.\nfunc (c *client) Extension(extensionType string, contents []byte) ([]byte, error) {\n\treq := ssh.Marshal(extensionAgentMsg{\n\t\tExtensionType: extensionType,\n\t\tContents:      contents,\n\t})\n\tbuf, err := c.callRaw(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(buf) == 0 {\n\t\treturn nil, errors.New(\"agent: failure; empty response\")\n\t}\n\t// [PROTOCOL.agent] section 4.7 indicates that an SSH_AGENT_FAILURE message\n\t// represents an agent that does not support the extension\n\tif buf[0] == agentFailure {\n\t\treturn nil, ErrExtensionUnsupported\n\t}\n\tif buf[0] == agentExtensionFailure {\n\t\treturn nil, errors.New(\"agent: generic extension failure\")\n\t}\n\n\treturn buf, nil\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/agent/forward.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage agent\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"sync\"\n\n\t\"gossh/crypto/ssh\"\n)\n\n// RequestAgentForwarding sets up agent forwarding for the session.\n// ForwardToAgent or ForwardToRemote should be called to route\n// the authentication requests.\nfunc RequestAgentForwarding(session *ssh.Session) error {\n\tok, err := session.SendRequest(\"auth-agent-req@openssh.com\", true, nil)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif !ok {\n\t\treturn errors.New(\"forwarding request denied\")\n\t}\n\treturn nil\n}\n\n// ForwardToAgent routes authentication requests to the given keyring.\nfunc ForwardToAgent(client *ssh.Client, keyring Agent) error {\n\tchannels := client.HandleChannelOpen(channelType)\n\tif channels == nil {\n\t\treturn errors.New(\"agent: already have handler for \" + channelType)\n\t}\n\n\tgo func() {\n\t\tfor ch := range channels {\n\t\t\tchannel, reqs, err := ch.Accept()\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgo ssh.DiscardRequests(reqs)\n\t\t\tgo func() {\n\t\t\t\tServeAgent(keyring, channel)\n\t\t\t\tchannel.Close()\n\t\t\t}()\n\t\t}\n\t}()\n\treturn nil\n}\n\nconst channelType = \"auth-agent@openssh.com\"\n\n// ForwardToRemote routes authentication requests to the ssh-agent\n// process serving on the given unix socket.\nfunc ForwardToRemote(client *ssh.Client, addr string) error {\n\tchannels := client.HandleChannelOpen(channelType)\n\tif channels == nil {\n\t\treturn errors.New(\"agent: already have handler for \" + channelType)\n\t}\n\tconn, err := net.Dial(\"unix\", addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tconn.Close()\n\n\tgo func() {\n\t\tfor ch := range channels {\n\t\t\tchannel, reqs, err := ch.Accept()\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tgo ssh.DiscardRequests(reqs)\n\t\t\tgo forwardUnixSocket(channel, addr)\n\t\t}\n\t}()\n\treturn nil\n}\n\nfunc forwardUnixSocket(channel ssh.Channel, addr string) {\n\tconn, err := net.Dial(\"unix\", addr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar wg sync.WaitGroup\n\twg.Add(2)\n\tgo func() {\n\t\tio.Copy(conn, channel)\n\t\tconn.(*net.UnixConn).CloseWrite()\n\t\twg.Done()\n\t}()\n\tgo func() {\n\t\tio.Copy(channel, conn)\n\t\tchannel.CloseWrite()\n\t\twg.Done()\n\t}()\n\n\twg.Wait()\n\tconn.Close()\n\tchannel.Close()\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/agent/keyring.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage agent\n\nimport (\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/subtle\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gossh/crypto/ssh\"\n)\n\ntype privKey struct {\n\tsigner  ssh.Signer\n\tcomment string\n\texpire  *time.Time\n}\n\ntype keyring struct {\n\tmu   sync.Mutex\n\tkeys []privKey\n\n\tlocked     bool\n\tpassphrase []byte\n}\n\nvar errLocked = errors.New(\"agent: locked\")\n\n// NewKeyring returns an Agent that holds keys in memory.  It is safe\n// for concurrent use by multiple goroutines.\nfunc NewKeyring() Agent {\n\treturn &keyring{}\n}\n\n// RemoveAll removes all identities.\nfunc (r *keyring) RemoveAll() error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn errLocked\n\t}\n\n\tr.keys = nil\n\treturn nil\n}\n\n// removeLocked does the actual key removal. The caller must already be holding the\n// keyring mutex.\nfunc (r *keyring) removeLocked(want []byte) error {\n\tfound := false\n\tfor i := 0; i < len(r.keys); {\n\t\tif bytes.Equal(r.keys[i].signer.PublicKey().Marshal(), want) {\n\t\t\tfound = true\n\t\t\tr.keys[i] = r.keys[len(r.keys)-1]\n\t\t\tr.keys = r.keys[:len(r.keys)-1]\n\t\t\tcontinue\n\t\t} else {\n\t\t\ti++\n\t\t}\n\t}\n\n\tif !found {\n\t\treturn errors.New(\"agent: key not found\")\n\t}\n\treturn nil\n}\n\n// Remove removes all identities with the given public key.\nfunc (r *keyring) Remove(key ssh.PublicKey) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn errLocked\n\t}\n\n\treturn r.removeLocked(key.Marshal())\n}\n\n// Lock locks the agent. Sign and Remove will fail, and List will return an empty list.\nfunc (r *keyring) Lock(passphrase []byte) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn errLocked\n\t}\n\n\tr.locked = true\n\tr.passphrase = passphrase\n\treturn nil\n}\n\n// Unlock undoes the effect of Lock\nfunc (r *keyring) Unlock(passphrase []byte) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif !r.locked {\n\t\treturn errors.New(\"agent: not locked\")\n\t}\n\tif 1 != subtle.ConstantTimeCompare(passphrase, r.passphrase) {\n\t\treturn fmt.Errorf(\"agent: incorrect passphrase\")\n\t}\n\n\tr.locked = false\n\tr.passphrase = nil\n\treturn nil\n}\n\n// expireKeysLocked removes expired keys from the keyring. If a key was added\n// with a lifetimesecs contraint and seconds >= lifetimesecs seconds have\n// elapsed, it is removed. The caller *must* be holding the keyring mutex.\nfunc (r *keyring) expireKeysLocked() {\n\tfor _, k := range r.keys {\n\t\tif k.expire != nil && time.Now().After(*k.expire) {\n\t\t\tr.removeLocked(k.signer.PublicKey().Marshal())\n\t\t}\n\t}\n}\n\n// List returns the identities known to the agent.\nfunc (r *keyring) List() ([]*Key, error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\t// section 2.7: locked agents return empty.\n\t\treturn nil, nil\n\t}\n\n\tr.expireKeysLocked()\n\tvar ids []*Key\n\tfor _, k := range r.keys {\n\t\tpub := k.signer.PublicKey()\n\t\tids = append(ids, &Key{\n\t\t\tFormat:  pub.Type(),\n\t\t\tBlob:    pub.Marshal(),\n\t\t\tComment: k.comment})\n\t}\n\treturn ids, nil\n}\n\n// Insert adds a private key to the keyring. If a certificate\n// is given, that certificate is added as public key. Note that\n// any constraints given are ignored.\nfunc (r *keyring) Add(key AddedKey) error {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn errLocked\n\t}\n\tsigner, err := ssh.NewSignerFromKey(key.PrivateKey)\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif cert := key.Certificate; cert != nil {\n\t\tsigner, err = ssh.NewCertSigner(cert, signer)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tp := privKey{\n\t\tsigner:  signer,\n\t\tcomment: key.Comment,\n\t}\n\n\tif key.LifetimeSecs > 0 {\n\t\tt := time.Now().Add(time.Duration(key.LifetimeSecs) * time.Second)\n\t\tp.expire = &t\n\t}\n\n\tr.keys = append(r.keys, p)\n\n\treturn nil\n}\n\n// Sign returns a signature for the data.\nfunc (r *keyring) Sign(key ssh.PublicKey, data []byte) (*ssh.Signature, error) {\n\treturn r.SignWithFlags(key, data, 0)\n}\n\nfunc (r *keyring) SignWithFlags(key ssh.PublicKey, data []byte, flags SignatureFlags) (*ssh.Signature, error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn nil, errLocked\n\t}\n\n\tr.expireKeysLocked()\n\twanted := key.Marshal()\n\tfor _, k := range r.keys {\n\t\tif bytes.Equal(k.signer.PublicKey().Marshal(), wanted) {\n\t\t\tif flags == 0 {\n\t\t\t\treturn k.signer.Sign(rand.Reader, data)\n\t\t\t} else {\n\t\t\t\tif algorithmSigner, ok := k.signer.(ssh.AlgorithmSigner); !ok {\n\t\t\t\t\treturn nil, fmt.Errorf(\"agent: signature does not support non-default signature algorithm: %T\", k.signer)\n\t\t\t\t} else {\n\t\t\t\t\tvar algorithm string\n\t\t\t\t\tswitch flags {\n\t\t\t\t\tcase SignatureFlagRsaSha256:\n\t\t\t\t\t\talgorithm = ssh.KeyAlgoRSASHA256\n\t\t\t\t\tcase SignatureFlagRsaSha512:\n\t\t\t\t\t\talgorithm = ssh.KeyAlgoRSASHA512\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn nil, fmt.Errorf(\"agent: unsupported signature flags: %d\", flags)\n\t\t\t\t\t}\n\t\t\t\t\treturn algorithmSigner.SignWithAlgorithm(rand.Reader, data, algorithm)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn nil, errors.New(\"not found\")\n}\n\n// Signers returns signers for all the known keys.\nfunc (r *keyring) Signers() ([]ssh.Signer, error) {\n\tr.mu.Lock()\n\tdefer r.mu.Unlock()\n\tif r.locked {\n\t\treturn nil, errLocked\n\t}\n\n\tr.expireKeysLocked()\n\ts := make([]ssh.Signer, 0, len(r.keys))\n\tfor _, k := range r.keys {\n\t\ts = append(s, k.signer)\n\t}\n\treturn s, nil\n}\n\n// The keyring does not support any extensions\nfunc (r *keyring) Extension(extensionType string, contents []byte) ([]byte, error) {\n\treturn nil, ErrExtensionUnsupported\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/agent/server.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 agent\n\nimport (\n\t\"crypto/dsa\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/elliptic\"\n\t\"crypto/rsa\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"math/big\"\n\n\t\"gossh/crypto/ssh\"\n)\n\n// server wraps an Agent and uses it to implement the agent side of\n// the SSH-agent, wire protocol.\ntype server struct {\n\tagent Agent\n}\n\nfunc (s *server) processRequestBytes(reqData []byte) []byte {\n\trep, err := s.processRequest(reqData)\n\tif err != nil {\n\t\tif err != errLocked {\n\t\t\t// TODO(hanwen): provide better logging interface?\n\t\t\tlog.Printf(\"agent %d: %v\", reqData[0], err)\n\t\t}\n\t\treturn []byte{agentFailure}\n\t}\n\n\tif err == nil && rep == nil {\n\t\treturn []byte{agentSuccess}\n\t}\n\n\treturn ssh.Marshal(rep)\n}\n\nfunc marshalKey(k *Key) []byte {\n\tvar record struct {\n\t\tBlob    []byte\n\t\tComment string\n\t}\n\trecord.Blob = k.Marshal()\n\trecord.Comment = k.Comment\n\n\treturn ssh.Marshal(&record)\n}\n\n// See [PROTOCOL.agent], section 2.5.1.\nconst agentV1IdentitiesAnswer = 2\n\ntype agentV1IdentityMsg struct {\n\tNumkeys uint32 `sshtype:\"2\"`\n}\n\ntype agentRemoveIdentityMsg struct {\n\tKeyBlob []byte `sshtype:\"18\"`\n}\n\ntype agentLockMsg struct {\n\tPassphrase []byte `sshtype:\"22\"`\n}\n\ntype agentUnlockMsg struct {\n\tPassphrase []byte `sshtype:\"23\"`\n}\n\nfunc (s *server) processRequest(data []byte) (any, error) {\n\tswitch data[0] {\n\tcase agentRequestV1Identities:\n\t\treturn &agentV1IdentityMsg{0}, nil\n\n\tcase agentRemoveAllV1Identities:\n\t\treturn nil, nil\n\n\tcase agentRemoveIdentity:\n\t\tvar req agentRemoveIdentityMsg\n\t\tif err := ssh.Unmarshal(data, &req); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar wk wireKey\n\t\tif err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn nil, s.agent.Remove(&Key{Format: wk.Format, Blob: req.KeyBlob})\n\n\tcase agentRemoveAllIdentities:\n\t\treturn nil, s.agent.RemoveAll()\n\n\tcase agentLock:\n\t\tvar req agentLockMsg\n\t\tif err := ssh.Unmarshal(data, &req); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn nil, s.agent.Lock(req.Passphrase)\n\n\tcase agentUnlock:\n\t\tvar req agentUnlockMsg\n\t\tif err := ssh.Unmarshal(data, &req); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, s.agent.Unlock(req.Passphrase)\n\n\tcase agentSignRequest:\n\t\tvar req signRequestAgentMsg\n\t\tif err := ssh.Unmarshal(data, &req); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar wk wireKey\n\t\tif err := ssh.Unmarshal(req.KeyBlob, &wk); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tk := &Key{\n\t\t\tFormat: wk.Format,\n\t\t\tBlob:   req.KeyBlob,\n\t\t}\n\n\t\tvar sig *ssh.Signature\n\t\tvar err error\n\t\tif extendedAgent, ok := s.agent.(ExtendedAgent); ok {\n\t\t\tsig, err = extendedAgent.SignWithFlags(k, req.Data, SignatureFlags(req.Flags))\n\t\t} else {\n\t\t\tsig, err = s.agent.Sign(k, req.Data)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &signResponseAgentMsg{SigBlob: ssh.Marshal(sig)}, nil\n\n\tcase agentRequestIdentities:\n\t\tkeys, err := s.agent.List()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\trep := identitiesAnswerAgentMsg{\n\t\t\tNumKeys: uint32(len(keys)),\n\t\t}\n\t\tfor _, k := range keys {\n\t\t\trep.Keys = append(rep.Keys, marshalKey(k)...)\n\t\t}\n\t\treturn rep, nil\n\n\tcase agentAddIDConstrained, agentAddIdentity:\n\t\treturn nil, s.insertIdentity(data)\n\n\tcase agentExtension:\n\t\t// Return a stub object where the whole contents of the response gets marshaled.\n\t\tvar responseStub struct {\n\t\t\tRest []byte `ssh:\"rest\"`\n\t\t}\n\n\t\tif extendedAgent, ok := s.agent.(ExtendedAgent); !ok {\n\t\t\t// If this agent doesn't implement extensions, [PROTOCOL.agent] section 4.7\n\t\t\t// requires that we return a standard SSH_AGENT_FAILURE message.\n\t\t\tresponseStub.Rest = []byte{agentFailure}\n\t\t} else {\n\t\t\tvar req extensionAgentMsg\n\t\t\tif err := ssh.Unmarshal(data, &req); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tres, err := extendedAgent.Extension(req.ExtensionType, req.Contents)\n\t\t\tif err != nil {\n\t\t\t\t// If agent extensions are unsupported, return a standard SSH_AGENT_FAILURE\n\t\t\t\t// message as required by [PROTOCOL.agent] section 4.7.\n\t\t\t\tif err == ErrExtensionUnsupported {\n\t\t\t\t\tresponseStub.Rest = []byte{agentFailure}\n\t\t\t\t} else {\n\t\t\t\t\t// As the result of any other error processing an extension request,\n\t\t\t\t\t// [PROTOCOL.agent] section 4.7 requires that we return a\n\t\t\t\t\t// SSH_AGENT_EXTENSION_FAILURE code.\n\t\t\t\t\tresponseStub.Rest = []byte{agentExtensionFailure}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif len(res) == 0 {\n\t\t\t\t\treturn nil, nil\n\t\t\t\t}\n\t\t\t\tresponseStub.Rest = res\n\t\t\t}\n\t\t}\n\n\t\treturn responseStub, nil\n\t}\n\n\treturn nil, fmt.Errorf(\"unknown opcode %d\", data[0])\n}\n\nfunc parseConstraints(constraints []byte) (lifetimeSecs uint32, confirmBeforeUse bool, extensions []ConstraintExtension, err error) {\n\tfor len(constraints) != 0 {\n\t\tswitch constraints[0] {\n\t\tcase agentConstrainLifetime:\n\t\t\tlifetimeSecs = binary.BigEndian.Uint32(constraints[1:5])\n\t\t\tconstraints = constraints[5:]\n\t\tcase agentConstrainConfirm:\n\t\t\tconfirmBeforeUse = true\n\t\t\tconstraints = constraints[1:]\n\t\tcase agentConstrainExtension, agentConstrainExtensionV00:\n\t\t\tvar msg constrainExtensionAgentMsg\n\t\t\tif err = ssh.Unmarshal(constraints, &msg); err != nil {\n\t\t\t\treturn 0, false, nil, err\n\t\t\t}\n\t\t\textensions = append(extensions, ConstraintExtension{\n\t\t\t\tExtensionName:    msg.ExtensionName,\n\t\t\t\tExtensionDetails: msg.ExtensionDetails,\n\t\t\t})\n\t\t\tconstraints = msg.Rest\n\t\tdefault:\n\t\t\treturn 0, false, nil, fmt.Errorf(\"unknown constraint type: %d\", constraints[0])\n\t\t}\n\t}\n\treturn\n}\n\nfunc setConstraints(key *AddedKey, constraintBytes []byte) error {\n\tlifetimeSecs, confirmBeforeUse, constraintExtensions, err := parseConstraints(constraintBytes)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tkey.LifetimeSecs = lifetimeSecs\n\tkey.ConfirmBeforeUse = confirmBeforeUse\n\tkey.ConstraintExtensions = constraintExtensions\n\treturn nil\n}\n\nfunc parseRSAKey(req []byte) (*AddedKey, error) {\n\tvar k rsaKeyMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\tif k.E.BitLen() > 30 {\n\t\treturn nil, errors.New(\"agent: RSA public exponent too large\")\n\t}\n\tpriv := &rsa.PrivateKey{\n\t\tPublicKey: rsa.PublicKey{\n\t\t\tE: int(k.E.Int64()),\n\t\t\tN: k.N,\n\t\t},\n\t\tD:      k.D,\n\t\tPrimes: []*big.Int{k.P, k.Q},\n\t}\n\tpriv.Precompute()\n\n\taddedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseEd25519Key(req []byte) (*AddedKey, error) {\n\tvar k ed25519KeyMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\tpriv := ed25519.PrivateKey(k.Priv)\n\n\taddedKey := &AddedKey{PrivateKey: &priv, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseDSAKey(req []byte) (*AddedKey, error) {\n\tvar k dsaKeyMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\tpriv := &dsa.PrivateKey{\n\t\tPublicKey: dsa.PublicKey{\n\t\t\tParameters: dsa.Parameters{\n\t\t\t\tP: k.P,\n\t\t\t\tQ: k.Q,\n\t\t\t\tG: k.G,\n\t\t\t},\n\t\t\tY: k.Y,\n\t\t},\n\t\tX: k.X,\n\t}\n\n\taddedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc unmarshalECDSA(curveName string, keyBytes []byte, privScalar *big.Int) (priv *ecdsa.PrivateKey, err error) {\n\tpriv = &ecdsa.PrivateKey{\n\t\tD: privScalar,\n\t}\n\n\tswitch curveName {\n\tcase \"nistp256\":\n\t\tpriv.Curve = elliptic.P256()\n\tcase \"nistp384\":\n\t\tpriv.Curve = elliptic.P384()\n\tcase \"nistp521\":\n\t\tpriv.Curve = elliptic.P521()\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"agent: unknown curve %q\", curveName)\n\t}\n\n\tpriv.X, priv.Y = elliptic.Unmarshal(priv.Curve, keyBytes)\n\tif priv.X == nil || priv.Y == nil {\n\t\treturn nil, errors.New(\"agent: point not on curve\")\n\t}\n\n\treturn priv, nil\n}\n\nfunc parseEd25519Cert(req []byte) (*AddedKey, error) {\n\tvar k ed25519CertMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\tpubKey, err := ssh.ParsePublicKey(k.CertBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpriv := ed25519.PrivateKey(k.Priv)\n\tcert, ok := pubKey.(*ssh.Certificate)\n\tif !ok {\n\t\treturn nil, errors.New(\"agent: bad ED25519 certificate\")\n\t}\n\n\taddedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseECDSAKey(req []byte) (*AddedKey, error) {\n\tvar k ecdsaKeyMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpriv, err := unmarshalECDSA(k.Curve, k.KeyBytes, k.D)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\taddedKey := &AddedKey{PrivateKey: priv, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseRSACert(req []byte) (*AddedKey, error) {\n\tvar k rsaCertMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpubKey, err := ssh.ParsePublicKey(k.CertBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcert, ok := pubKey.(*ssh.Certificate)\n\tif !ok {\n\t\treturn nil, errors.New(\"agent: bad RSA certificate\")\n\t}\n\n\t// An RSA publickey as marshaled by rsaPublicKey.Marshal() in keys.go\n\tvar rsaPub struct {\n\t\tName string\n\t\tE    *big.Int\n\t\tN    *big.Int\n\t}\n\tif err := ssh.Unmarshal(cert.Key.Marshal(), &rsaPub); err != nil {\n\t\treturn nil, fmt.Errorf(\"agent: Unmarshal failed to parse public key: %v\", err)\n\t}\n\n\tif rsaPub.E.BitLen() > 30 {\n\t\treturn nil, errors.New(\"agent: RSA public exponent too large\")\n\t}\n\n\tpriv := rsa.PrivateKey{\n\t\tPublicKey: rsa.PublicKey{\n\t\t\tE: int(rsaPub.E.Int64()),\n\t\t\tN: rsaPub.N,\n\t\t},\n\t\tD:      k.D,\n\t\tPrimes: []*big.Int{k.Q, k.P},\n\t}\n\tpriv.Precompute()\n\n\taddedKey := &AddedKey{PrivateKey: &priv, Certificate: cert, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseDSACert(req []byte) (*AddedKey, error) {\n\tvar k dsaCertMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\tpubKey, err := ssh.ParsePublicKey(k.CertBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcert, ok := pubKey.(*ssh.Certificate)\n\tif !ok {\n\t\treturn nil, errors.New(\"agent: bad DSA certificate\")\n\t}\n\n\t// A DSA publickey as marshaled by dsaPublicKey.Marshal() in keys.go\n\tvar w struct {\n\t\tName       string\n\t\tP, Q, G, Y *big.Int\n\t}\n\tif err := ssh.Unmarshal(cert.Key.Marshal(), &w); err != nil {\n\t\treturn nil, fmt.Errorf(\"agent: Unmarshal failed to parse public key: %v\", err)\n\t}\n\n\tpriv := &dsa.PrivateKey{\n\t\tPublicKey: dsa.PublicKey{\n\t\t\tParameters: dsa.Parameters{\n\t\t\t\tP: w.P,\n\t\t\t\tQ: w.Q,\n\t\t\t\tG: w.G,\n\t\t\t},\n\t\t\tY: w.Y,\n\t\t},\n\t\tX: k.X,\n\t}\n\n\taddedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc parseECDSACert(req []byte) (*AddedKey, error) {\n\tvar k ecdsaCertMsg\n\tif err := ssh.Unmarshal(req, &k); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpubKey, err := ssh.ParsePublicKey(k.CertBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcert, ok := pubKey.(*ssh.Certificate)\n\tif !ok {\n\t\treturn nil, errors.New(\"agent: bad ECDSA certificate\")\n\t}\n\n\t// An ECDSA publickey as marshaled by ecdsaPublicKey.Marshal() in keys.go\n\tvar ecdsaPub struct {\n\t\tName string\n\t\tID   string\n\t\tKey  []byte\n\t}\n\tif err := ssh.Unmarshal(cert.Key.Marshal(), &ecdsaPub); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpriv, err := unmarshalECDSA(ecdsaPub.ID, ecdsaPub.Key, k.D)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\taddedKey := &AddedKey{PrivateKey: priv, Certificate: cert, Comment: k.Comments}\n\tif err := setConstraints(addedKey, k.Constraints); err != nil {\n\t\treturn nil, err\n\t}\n\treturn addedKey, nil\n}\n\nfunc (s *server) insertIdentity(req []byte) error {\n\tvar record struct {\n\t\tType string `sshtype:\"17|25\"`\n\t\tRest []byte `ssh:\"rest\"`\n\t}\n\n\tif err := ssh.Unmarshal(req, &record); err != nil {\n\t\treturn err\n\t}\n\n\tvar addedKey *AddedKey\n\tvar err error\n\n\tswitch record.Type {\n\tcase ssh.KeyAlgoRSA:\n\t\taddedKey, err = parseRSAKey(req)\n\tcase ssh.KeyAlgoDSA:\n\t\taddedKey, err = parseDSAKey(req)\n\tcase ssh.KeyAlgoECDSA256, ssh.KeyAlgoECDSA384, ssh.KeyAlgoECDSA521:\n\t\taddedKey, err = parseECDSAKey(req)\n\tcase ssh.KeyAlgoED25519:\n\t\taddedKey, err = parseEd25519Key(req)\n\tcase ssh.CertAlgoRSAv01:\n\t\taddedKey, err = parseRSACert(req)\n\tcase ssh.CertAlgoDSAv01:\n\t\taddedKey, err = parseDSACert(req)\n\tcase ssh.CertAlgoECDSA256v01, ssh.CertAlgoECDSA384v01, ssh.CertAlgoECDSA521v01:\n\t\taddedKey, err = parseECDSACert(req)\n\tcase ssh.CertAlgoED25519v01:\n\t\taddedKey, err = parseEd25519Cert(req)\n\tdefault:\n\t\treturn fmt.Errorf(\"agent: not implemented: %q\", record.Type)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.agent.Add(*addedKey)\n}\n\n// ServeAgent serves the agent protocol on the given connection. It\n// returns when an I/O error occurs.\nfunc ServeAgent(agent Agent, c io.ReadWriter) error {\n\ts := &server{agent}\n\n\tvar length [4]byte\n\tfor {\n\t\tif _, err := io.ReadFull(c, length[:]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tl := binary.BigEndian.Uint32(length[:])\n\t\tif l == 0 {\n\t\t\treturn fmt.Errorf(\"agent: request size is 0\")\n\t\t}\n\t\tif l > maxAgentResponseBytes {\n\t\t\t// We also cap requests.\n\t\t\treturn fmt.Errorf(\"agent: request too large: %d\", l)\n\t\t}\n\n\t\treq := make([]byte, l)\n\t\tif _, err := io.ReadFull(c, req); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trepData := s.processRequestBytes(req)\n\t\tif len(repData) > maxAgentResponseBytes {\n\t\t\treturn fmt.Errorf(\"agent: reply too large: %d bytes\", len(repData))\n\t\t}\n\n\t\tbinary.BigEndian.PutUint32(length[:], uint32(len(repData)))\n\t\tif _, err := c.Write(length[:]); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif _, err := c.Write(repData); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/buffer.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 ssh\n\nimport (\n\t\"io\"\n\t\"sync\"\n)\n\n// buffer provides a linked list buffer for data exchange\n// between producer and consumer. Theoretically the buffer is\n// of unlimited capacity as it does no allocation of its own.\ntype buffer struct {\n\t// protects concurrent access to head, tail and closed\n\t*sync.Cond\n\n\thead *element // the buffer that will be read first\n\ttail *element // the buffer that will be read last\n\n\tclosed bool\n}\n\n// An element represents a single link in a linked list.\ntype element struct {\n\tbuf  []byte\n\tnext *element\n}\n\n// newBuffer returns an empty buffer that is not closed.\nfunc newBuffer() *buffer {\n\te := new(element)\n\tb := &buffer{\n\t\tCond: newCond(),\n\t\thead: e,\n\t\ttail: e,\n\t}\n\treturn b\n}\n\n// write makes buf available for Read to receive.\n// buf must not be modified after the call to write.\nfunc (b *buffer) write(buf []byte) {\n\tb.Cond.L.Lock()\n\te := &element{buf: buf}\n\tb.tail.next = e\n\tb.tail = e\n\tb.Cond.Signal()\n\tb.Cond.L.Unlock()\n}\n\n// eof closes the buffer. Reads from the buffer once all\n// the data has been consumed will receive io.EOF.\nfunc (b *buffer) eof() {\n\tb.Cond.L.Lock()\n\tb.closed = true\n\tb.Cond.Signal()\n\tb.Cond.L.Unlock()\n}\n\n// Read reads data from the internal buffer in buf.  Reads will block\n// if no data is available, or until the buffer is closed.\nfunc (b *buffer) Read(buf []byte) (n int, err error) {\n\tb.Cond.L.Lock()\n\tdefer b.Cond.L.Unlock()\n\n\tfor len(buf) > 0 {\n\t\t// if there is data in b.head, copy it\n\t\tif len(b.head.buf) > 0 {\n\t\t\tr := copy(buf, b.head.buf)\n\t\t\tbuf, b.head.buf = buf[r:], b.head.buf[r:]\n\t\t\tn += r\n\t\t\tcontinue\n\t\t}\n\t\t// if there is a next buffer, make it the head\n\t\tif len(b.head.buf) == 0 && b.head != b.tail {\n\t\t\tb.head = b.head.next\n\t\t\tcontinue\n\t\t}\n\n\t\t// if at least one byte has been copied, return\n\t\tif n > 0 {\n\t\t\tbreak\n\t\t}\n\n\t\t// if nothing was read, and there is nothing outstanding\n\t\t// check to see if the buffer is closed.\n\t\tif b.closed {\n\t\t\terr = io.EOF\n\t\t\tbreak\n\t\t}\n\t\t// out of buffers, wait for producer\n\t\tb.Cond.Wait()\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/certs.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"sort\"\n\t\"time\"\n)\n\n// Certificate algorithm names from [PROTOCOL.certkeys]. These values can appear\n// in Certificate.Type, PublicKey.Type, and ClientConfig.HostKeyAlgorithms.\n// Unlike key algorithm names, these are not passed to AlgorithmSigner nor\n// returned by MultiAlgorithmSigner and don't appear in the Signature.Format\n// field.\nconst (\n\tCertAlgoRSAv01        = \"ssh-rsa-cert-v01@openssh.com\"\n\tCertAlgoDSAv01        = \"ssh-dss-cert-v01@openssh.com\"\n\tCertAlgoECDSA256v01   = \"ecdsa-sha2-nistp256-cert-v01@openssh.com\"\n\tCertAlgoECDSA384v01   = \"ecdsa-sha2-nistp384-cert-v01@openssh.com\"\n\tCertAlgoECDSA521v01   = \"ecdsa-sha2-nistp521-cert-v01@openssh.com\"\n\tCertAlgoSKECDSA256v01 = \"sk-ecdsa-sha2-nistp256-cert-v01@openssh.com\"\n\tCertAlgoED25519v01    = \"ssh-ed25519-cert-v01@openssh.com\"\n\tCertAlgoSKED25519v01  = \"sk-ssh-ed25519-cert-v01@openssh.com\"\n\n\t// CertAlgoRSASHA256v01 and CertAlgoRSASHA512v01 can't appear as a\n\t// Certificate.Type (or PublicKey.Type), but only in\n\t// ClientConfig.HostKeyAlgorithms.\n\tCertAlgoRSASHA256v01 = \"rsa-sha2-256-cert-v01@openssh.com\"\n\tCertAlgoRSASHA512v01 = \"rsa-sha2-512-cert-v01@openssh.com\"\n)\n\nconst (\n\t// Deprecated: use CertAlgoRSAv01.\n\tCertSigAlgoRSAv01 = CertAlgoRSAv01\n\t// Deprecated: use CertAlgoRSASHA256v01.\n\tCertSigAlgoRSASHA2256v01 = CertAlgoRSASHA256v01\n\t// Deprecated: use CertAlgoRSASHA512v01.\n\tCertSigAlgoRSASHA2512v01 = CertAlgoRSASHA512v01\n)\n\n// Certificate types distinguish between host and user\n// certificates. The values can be set in the CertType field of\n// Certificate.\nconst (\n\tUserCert = 1\n\tHostCert = 2\n)\n\n// Signature represents a cryptographic signature.\ntype Signature struct {\n\tFormat string\n\tBlob   []byte\n\tRest   []byte `ssh:\"rest\"`\n}\n\n// CertTimeInfinity can be used for OpenSSHCertV01.ValidBefore to indicate that\n// a certificate does not expire.\nconst CertTimeInfinity = 1<<64 - 1\n\n// An Certificate represents an OpenSSH certificate as defined in\n// [PROTOCOL.certkeys]?rev=1.8. The Certificate type implements the\n// PublicKey interface, so it can be unmarshaled using\n// ParsePublicKey.\ntype Certificate struct {\n\tNonce           []byte\n\tKey             PublicKey\n\tSerial          uint64\n\tCertType        uint32\n\tKeyId           string\n\tValidPrincipals []string\n\tValidAfter      uint64\n\tValidBefore     uint64\n\tPermissions\n\tReserved     []byte\n\tSignatureKey PublicKey\n\tSignature    *Signature\n}\n\n// genericCertData holds the key-independent part of the certificate data.\n// Overall, certificates contain an nonce, public key fields and\n// key-independent fields.\ntype genericCertData struct {\n\tSerial          uint64\n\tCertType        uint32\n\tKeyId           string\n\tValidPrincipals []byte\n\tValidAfter      uint64\n\tValidBefore     uint64\n\tCriticalOptions []byte\n\tExtensions      []byte\n\tReserved        []byte\n\tSignatureKey    []byte\n\tSignature       []byte\n}\n\nfunc marshalStringList(namelist []string) []byte {\n\tvar to []byte\n\tfor _, name := range namelist {\n\t\ts := struct{ N string }{name}\n\t\tto = append(to, Marshal(&s)...)\n\t}\n\treturn to\n}\n\ntype optionsTuple struct {\n\tKey   string\n\tValue []byte\n}\n\ntype optionsTupleValue struct {\n\tValue string\n}\n\n// serialize a map of critical options or extensions\n// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation,\n// we need two length prefixes for a non-empty string value\nfunc marshalTuples(tups map[string]string) []byte {\n\tkeys := make([]string, 0, len(tups))\n\tfor key := range tups {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\n\tvar ret []byte\n\tfor _, key := range keys {\n\t\ts := optionsTuple{Key: key}\n\t\tif value := tups[key]; len(value) > 0 {\n\t\t\ts.Value = Marshal(&optionsTupleValue{value})\n\t\t}\n\t\tret = append(ret, Marshal(&s)...)\n\t}\n\treturn ret\n}\n\n// issue #10569 - per [PROTOCOL.certkeys] and SSH implementation,\n// we need two length prefixes for a non-empty option value\nfunc parseTuples(in []byte) (map[string]string, error) {\n\ttups := map[string]string{}\n\tvar lastKey string\n\tvar haveLastKey bool\n\n\tfor len(in) > 0 {\n\t\tvar key, val, extra []byte\n\t\tvar ok bool\n\n\t\tif key, in, ok = parseString(in); !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tkeyStr := string(key)\n\t\t// according to [PROTOCOL.certkeys], the names must be in\n\t\t// lexical order.\n\t\tif haveLastKey && keyStr <= lastKey {\n\t\t\treturn nil, fmt.Errorf(\"ssh: certificate options are not in lexical order\")\n\t\t}\n\t\tlastKey, haveLastKey = keyStr, true\n\t\t// the next field is a data field, which if non-empty has a string embedded\n\t\tif val, in, ok = parseString(in); !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tif len(val) > 0 {\n\t\t\tval, extra, ok = parseString(val)\n\t\t\tif !ok {\n\t\t\t\treturn nil, errShortRead\n\t\t\t}\n\t\t\tif len(extra) > 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: unexpected trailing data after certificate option value\")\n\t\t\t}\n\t\t\ttups[keyStr] = string(val)\n\t\t} else {\n\t\t\ttups[keyStr] = \"\"\n\t\t}\n\t}\n\treturn tups, nil\n}\n\nfunc parseCert(in []byte, privAlgo string) (*Certificate, error) {\n\tnonce, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn nil, errShortRead\n\t}\n\n\tkey, rest, err := parsePubKey(rest, privAlgo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar g genericCertData\n\tif err := Unmarshal(rest, &g); err != nil {\n\t\treturn nil, err\n\t}\n\n\tc := &Certificate{\n\t\tNonce:       nonce,\n\t\tKey:         key,\n\t\tSerial:      g.Serial,\n\t\tCertType:    g.CertType,\n\t\tKeyId:       g.KeyId,\n\t\tValidAfter:  g.ValidAfter,\n\t\tValidBefore: g.ValidBefore,\n\t}\n\n\tfor principals := g.ValidPrincipals; len(principals) > 0; {\n\t\tprincipal, rest, ok := parseString(principals)\n\t\tif !ok {\n\t\t\treturn nil, errShortRead\n\t\t}\n\t\tc.ValidPrincipals = append(c.ValidPrincipals, string(principal))\n\t\tprincipals = rest\n\t}\n\n\tc.CriticalOptions, err = parseTuples(g.CriticalOptions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.Extensions, err = parseTuples(g.Extensions)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.Reserved = g.Reserved\n\tk, err := ParsePublicKey(g.SignatureKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tc.SignatureKey = k\n\tc.Signature, rest, ok = parseSignatureBody(g.Signature)\n\tif !ok || len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: signature parse error\")\n\t}\n\n\treturn c, nil\n}\n\ntype openSSHCertSigner struct {\n\tpub    *Certificate\n\tsigner Signer\n}\n\ntype algorithmOpenSSHCertSigner struct {\n\t*openSSHCertSigner\n\talgorithmSigner AlgorithmSigner\n}\n\n// NewCertSigner returns a Signer that signs with the given Certificate, whose\n// private key is held by signer. It returns an error if the public key in cert\n// doesn't match the key used by signer.\nfunc NewCertSigner(cert *Certificate, signer Signer) (Signer, error) {\n\tif !bytes.Equal(cert.Key.Marshal(), signer.PublicKey().Marshal()) {\n\t\treturn nil, errors.New(\"ssh: signer and cert have different public key\")\n\t}\n\n\tswitch s := signer.(type) {\n\tcase MultiAlgorithmSigner:\n\t\treturn &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner: &algorithmOpenSSHCertSigner{\n\t\t\t\t&openSSHCertSigner{cert, signer}, s},\n\t\t\tsupportedAlgorithms: s.Algorithms(),\n\t\t}, nil\n\tcase AlgorithmSigner:\n\t\treturn &algorithmOpenSSHCertSigner{\n\t\t\t&openSSHCertSigner{cert, signer}, s}, nil\n\tdefault:\n\t\treturn &openSSHCertSigner{cert, signer}, nil\n\t}\n}\n\nfunc (s *openSSHCertSigner) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn s.signer.Sign(rand, data)\n}\n\nfunc (s *openSSHCertSigner) PublicKey() PublicKey {\n\treturn s.pub\n}\n\nfunc (s *algorithmOpenSSHCertSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\treturn s.algorithmSigner.SignWithAlgorithm(rand, data, algorithm)\n}\n\nconst sourceAddressCriticalOption = \"source-address\"\n\n// CertChecker does the work of verifying a certificate. Its methods\n// can be plugged into ClientConfig.HostKeyCallback and\n// ServerConfig.PublicKeyCallback. For the CertChecker to work,\n// minimally, the IsAuthority callback should be set.\ntype CertChecker struct {\n\t// SupportedCriticalOptions lists the CriticalOptions that the\n\t// server application layer understands. These are only used\n\t// for user certificates.\n\tSupportedCriticalOptions []string\n\n\t// IsUserAuthority should return true if the key is recognized as an\n\t// authority for the given user certificate. This allows for\n\t// certificates to be signed by other certificates. This must be set\n\t// if this CertChecker will be checking user certificates.\n\tIsUserAuthority func(auth PublicKey) bool\n\n\t// IsHostAuthority should report whether the key is recognized as\n\t// an authority for this host. This allows for certificates to be\n\t// signed by other keys, and for those other keys to only be valid\n\t// signers for particular hostnames. This must be set if this\n\t// CertChecker will be checking host certificates.\n\tIsHostAuthority func(auth PublicKey, address string) bool\n\n\t// Clock is used for verifying time stamps. If nil, time.Now\n\t// is used.\n\tClock func() time.Time\n\n\t// UserKeyFallback is called when CertChecker.Authenticate encounters a\n\t// public key that is not a certificate. It must implement validation\n\t// of user keys or else, if nil, all such keys are rejected.\n\tUserKeyFallback func(conn ConnMetadata, key PublicKey) (*Permissions, error)\n\n\t// HostKeyFallback is called when CertChecker.CheckHostKey encounters a\n\t// public key that is not a certificate. It must implement host key\n\t// validation or else, if nil, all such keys are rejected.\n\tHostKeyFallback HostKeyCallback\n\n\t// IsRevoked is called for each certificate so that revocation checking\n\t// can be implemented. It should return true if the given certificate\n\t// is revoked and false otherwise. If nil, no certificates are\n\t// considered to have been revoked.\n\tIsRevoked func(cert *Certificate) bool\n}\n\n// CheckHostKey checks a host key certificate. This method can be\n// plugged into ClientConfig.HostKeyCallback.\nfunc (c *CertChecker) CheckHostKey(addr string, remote net.Addr, key PublicKey) error {\n\tcert, ok := key.(*Certificate)\n\tif !ok {\n\t\tif c.HostKeyFallback != nil {\n\t\t\treturn c.HostKeyFallback(addr, remote, key)\n\t\t}\n\t\treturn errors.New(\"ssh: non-certificate host key\")\n\t}\n\tif cert.CertType != HostCert {\n\t\treturn fmt.Errorf(\"ssh: certificate presented as a host key has type %d\", cert.CertType)\n\t}\n\tif !c.IsHostAuthority(cert.SignatureKey, addr) {\n\t\treturn fmt.Errorf(\"ssh: no authorities for hostname: %v\", addr)\n\t}\n\n\thostname, _, err := net.SplitHostPort(addr)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Pass hostname only as principal for host certificates (consistent with OpenSSH)\n\treturn c.CheckCert(hostname, cert)\n}\n\n// Authenticate checks a user certificate. Authenticate can be used as\n// a value for ServerConfig.PublicKeyCallback.\nfunc (c *CertChecker) Authenticate(conn ConnMetadata, pubKey PublicKey) (*Permissions, error) {\n\tcert, ok := pubKey.(*Certificate)\n\tif !ok {\n\t\tif c.UserKeyFallback != nil {\n\t\t\treturn c.UserKeyFallback(conn, pubKey)\n\t\t}\n\t\treturn nil, errors.New(\"ssh: normal key pairs not accepted\")\n\t}\n\n\tif cert.CertType != UserCert {\n\t\treturn nil, fmt.Errorf(\"ssh: cert has type %d\", cert.CertType)\n\t}\n\tif !c.IsUserAuthority(cert.SignatureKey) {\n\t\treturn nil, fmt.Errorf(\"ssh: certificate signed by unrecognized authority\")\n\t}\n\n\tif err := c.CheckCert(conn.User(), cert); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &cert.Permissions, nil\n}\n\n// CheckCert checks CriticalOptions, ValidPrincipals, revocation, timestamp and\n// the signature of the certificate.\nfunc (c *CertChecker) CheckCert(principal string, cert *Certificate) error {\n\tif c.IsRevoked != nil && c.IsRevoked(cert) {\n\t\treturn fmt.Errorf(\"ssh: certificate serial %d revoked\", cert.Serial)\n\t}\n\n\tfor opt := range cert.CriticalOptions {\n\t\t// sourceAddressCriticalOption will be enforced by\n\t\t// serverAuthenticate\n\t\tif opt == sourceAddressCriticalOption {\n\t\t\tcontinue\n\t\t}\n\n\t\tfound := false\n\t\tfor _, supp := range c.SupportedCriticalOptions {\n\t\t\tif supp == opt {\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\treturn fmt.Errorf(\"ssh: unsupported critical option %q in certificate\", opt)\n\t\t}\n\t}\n\n\tif len(cert.ValidPrincipals) > 0 {\n\t\t// By default, certs are valid for all users/hosts.\n\t\tfound := false\n\t\tfor _, p := range cert.ValidPrincipals {\n\t\t\tif p == principal {\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\treturn fmt.Errorf(\"ssh: principal %q not in the set of valid principals for given certificate: %q\", principal, cert.ValidPrincipals)\n\t\t}\n\t}\n\n\tclock := c.Clock\n\tif clock == nil {\n\t\tclock = time.Now\n\t}\n\n\tunixNow := clock().Unix()\n\tif after := int64(cert.ValidAfter); after < 0 || unixNow < int64(cert.ValidAfter) {\n\t\treturn fmt.Errorf(\"ssh: cert is not yet valid\")\n\t}\n\tif before := int64(cert.ValidBefore); cert.ValidBefore != uint64(CertTimeInfinity) && (unixNow >= before || before < 0) {\n\t\treturn fmt.Errorf(\"ssh: cert has expired\")\n\t}\n\tif err := cert.SignatureKey.Verify(cert.bytesForSigning(), cert.Signature); err != nil {\n\t\treturn fmt.Errorf(\"ssh: certificate signature does not verify\")\n\t}\n\n\treturn nil\n}\n\n// SignCert signs the certificate with an authority, setting the Nonce,\n// SignatureKey, and Signature fields. If the authority implements the\n// MultiAlgorithmSigner interface the first algorithm in the list is used. This\n// is useful if you want to sign with a specific algorithm.\nfunc (c *Certificate) SignCert(rand io.Reader, authority Signer) error {\n\tc.Nonce = make([]byte, 32)\n\tif _, err := io.ReadFull(rand, c.Nonce); err != nil {\n\t\treturn err\n\t}\n\tc.SignatureKey = authority.PublicKey()\n\n\tif v, ok := authority.(MultiAlgorithmSigner); ok {\n\t\tif len(v.Algorithms()) == 0 {\n\t\t\treturn errors.New(\"the provided authority has no signature algorithm\")\n\t\t}\n\t\t// Use the first algorithm in the list.\n\t\tsig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), v.Algorithms()[0])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.Signature = sig\n\t\treturn nil\n\t} else if v, ok := authority.(AlgorithmSigner); ok && v.PublicKey().Type() == KeyAlgoRSA {\n\t\t// Default to KeyAlgoRSASHA512 for ssh-rsa signers.\n\t\t// TODO: consider using KeyAlgoRSASHA256 as default.\n\t\tsig, err := v.SignWithAlgorithm(rand, c.bytesForSigning(), KeyAlgoRSASHA512)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.Signature = sig\n\t\treturn nil\n\t}\n\n\tsig, err := authority.Sign(rand, c.bytesForSigning())\n\tif err != nil {\n\t\treturn err\n\t}\n\tc.Signature = sig\n\treturn nil\n}\n\n// certKeyAlgoNames is a mapping from known certificate algorithm names to the\n// corresponding public key signature algorithm.\n//\n// This map must be kept in sync with the one in agent/client.go.\nvar certKeyAlgoNames = map[string]string{\n\tCertAlgoRSAv01:        KeyAlgoRSA,\n\tCertAlgoRSASHA256v01:  KeyAlgoRSASHA256,\n\tCertAlgoRSASHA512v01:  KeyAlgoRSASHA512,\n\tCertAlgoDSAv01:        KeyAlgoDSA,\n\tCertAlgoECDSA256v01:   KeyAlgoECDSA256,\n\tCertAlgoECDSA384v01:   KeyAlgoECDSA384,\n\tCertAlgoECDSA521v01:   KeyAlgoECDSA521,\n\tCertAlgoSKECDSA256v01: KeyAlgoSKECDSA256,\n\tCertAlgoED25519v01:    KeyAlgoED25519,\n\tCertAlgoSKED25519v01:  KeyAlgoSKED25519,\n}\n\n// underlyingAlgo returns the signature algorithm associated with algo (which is\n// an advertised or negotiated public key or host key algorithm). These are\n// usually the same, except for certificate algorithms.\nfunc underlyingAlgo(algo string) string {\n\tif a, ok := certKeyAlgoNames[algo]; ok {\n\t\treturn a\n\t}\n\treturn algo\n}\n\n// certificateAlgo returns the certificate algorithms that uses the provided\n// underlying signature algorithm.\nfunc certificateAlgo(algo string) (certAlgo string, ok bool) {\n\tfor certName, algoName := range certKeyAlgoNames {\n\t\tif algoName == algo {\n\t\t\treturn certName, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\nfunc (cert *Certificate) bytesForSigning() []byte {\n\tc2 := *cert\n\tc2.Signature = nil\n\tout := c2.Marshal()\n\t// Drop trailing signature length.\n\treturn out[:len(out)-4]\n}\n\n// Marshal serializes c into OpenSSH's wire format. It is part of the\n// PublicKey interface.\nfunc (c *Certificate) Marshal() []byte {\n\tgeneric := genericCertData{\n\t\tSerial:          c.Serial,\n\t\tCertType:        c.CertType,\n\t\tKeyId:           c.KeyId,\n\t\tValidPrincipals: marshalStringList(c.ValidPrincipals),\n\t\tValidAfter:      uint64(c.ValidAfter),\n\t\tValidBefore:     uint64(c.ValidBefore),\n\t\tCriticalOptions: marshalTuples(c.CriticalOptions),\n\t\tExtensions:      marshalTuples(c.Extensions),\n\t\tReserved:        c.Reserved,\n\t\tSignatureKey:    c.SignatureKey.Marshal(),\n\t}\n\tif c.Signature != nil {\n\t\tgeneric.Signature = Marshal(c.Signature)\n\t}\n\tgenericBytes := Marshal(&generic)\n\tkeyBytes := c.Key.Marshal()\n\t_, keyBytes, _ = parseString(keyBytes)\n\tprefix := Marshal(&struct {\n\t\tName  string\n\t\tNonce []byte\n\t\tKey   []byte `ssh:\"rest\"`\n\t}{c.Type(), c.Nonce, keyBytes})\n\n\tresult := make([]byte, 0, len(prefix)+len(genericBytes))\n\tresult = append(result, prefix...)\n\tresult = append(result, genericBytes...)\n\treturn result\n}\n\n// Type returns the certificate algorithm name. It is part of the PublicKey interface.\nfunc (c *Certificate) Type() string {\n\tcertName, ok := certificateAlgo(c.Key.Type())\n\tif !ok {\n\t\tpanic(\"unknown certificate type for key type \" + c.Key.Type())\n\t}\n\treturn certName\n}\n\n// Verify verifies a signature against the certificate's public\n// key. It is part of the PublicKey interface.\nfunc (c *Certificate) Verify(data []byte, sig *Signature) error {\n\treturn c.Key.Verify(data, sig)\n}\n\nfunc parseSignatureBody(in []byte) (out *Signature, rest []byte, ok bool) {\n\tformat, in, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\n\tout = &Signature{\n\t\tFormat: string(format),\n\t}\n\n\tif out.Blob, in, ok = parseString(in); !ok {\n\t\treturn\n\t}\n\n\tswitch out.Format {\n\tcase KeyAlgoSKECDSA256, CertAlgoSKECDSA256v01, KeyAlgoSKED25519, CertAlgoSKED25519v01:\n\t\tout.Rest = in\n\t\treturn out, nil, ok\n\t}\n\n\treturn out, in, ok\n}\n\nfunc parseSignature(in []byte) (out *Signature, rest []byte, ok bool) {\n\tsigBytes, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\n\tout, trailing, ok := parseSignatureBody(sigBytes)\n\tif !ok || len(trailing) > 0 {\n\t\treturn nil, nil, false\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/channel.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 ssh\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sync\"\n)\n\nconst (\n\tminPacketLength = 9\n\t// channelMaxPacket contains the maximum number of bytes that will be\n\t// sent in a single packet. As per RFC 4253, section 6.1, 32k is also\n\t// the minimum.\n\tchannelMaxPacket = 1 << 15\n\t// We follow OpenSSH here.\n\tchannelWindowSize = 64 * channelMaxPacket\n)\n\n// NewChannel represents an incoming request to a channel. It must either be\n// accepted for use by calling Accept, or rejected by calling Reject.\ntype NewChannel interface {\n\t// Accept accepts the channel creation request. It returns the Channel\n\t// and a Go channel containing SSH requests. The Go channel must be\n\t// serviced otherwise the Channel will hang.\n\tAccept() (Channel, <-chan *Request, error)\n\n\t// Reject rejects the channel creation request. After calling\n\t// this, no other methods on the Channel may be called.\n\tReject(reason RejectionReason, message string) error\n\n\t// ChannelType returns the type of the channel, as supplied by the\n\t// client.\n\tChannelType() string\n\n\t// ExtraData returns the arbitrary payload for this channel, as supplied\n\t// by the client. This data is specific to the channel type.\n\tExtraData() []byte\n}\n\n// A Channel is an ordered, reliable, flow-controlled, duplex stream\n// that is multiplexed over an SSH connection.\ntype Channel interface {\n\t// Read reads up to len(data) bytes from the channel.\n\tRead(data []byte) (int, error)\n\n\t// Write writes len(data) bytes to the channel.\n\tWrite(data []byte) (int, error)\n\n\t// Close signals end of channel use. No data may be sent after this\n\t// call.\n\tClose() error\n\n\t// CloseWrite signals the end of sending in-band\n\t// data. Requests may still be sent, and the other side may\n\t// still send data\n\tCloseWrite() error\n\n\t// SendRequest sends a channel request.  If wantReply is true,\n\t// it will wait for a reply and return the result as a\n\t// boolean, otherwise the return value will be false. Channel\n\t// requests are out-of-band messages so they may be sent even\n\t// if the data stream is closed or blocked by flow control.\n\t// If the channel is closed before a reply is returned, io.EOF\n\t// is returned.\n\tSendRequest(name string, wantReply bool, payload []byte) (bool, error)\n\n\t// Stderr returns an io.ReadWriter that writes to this channel\n\t// with the extended data type set to stderr. Stderr may\n\t// safely be read and written from a different goroutine than\n\t// Read and Write respectively.\n\tStderr() io.ReadWriter\n}\n\n// Request is a request sent outside of the normal stream of\n// data. Requests can either be specific to an SSH channel, or they\n// can be global.\ntype Request struct {\n\tType      string\n\tWantReply bool\n\tPayload   []byte\n\n\tch  *channel\n\tmux *mux\n}\n\n// Reply sends a response to a request. It must be called for all requests\n// where WantReply is true and is a no-op otherwise. The payload argument is\n// ignored for replies to channel-specific requests.\nfunc (r *Request) Reply(ok bool, payload []byte) error {\n\tif !r.WantReply {\n\t\treturn nil\n\t}\n\n\tif r.ch == nil {\n\t\treturn r.mux.ackRequest(ok, payload)\n\t}\n\n\treturn r.ch.ackRequest(ok)\n}\n\n// RejectionReason is an enumeration used when rejecting channel creation\n// requests. See RFC 4254, section 5.1.\ntype RejectionReason uint32\n\nconst (\n\tProhibited RejectionReason = iota + 1\n\tConnectionFailed\n\tUnknownChannelType\n\tResourceShortage\n)\n\n// String converts the rejection reason to human readable form.\nfunc (r RejectionReason) String() string {\n\tswitch r {\n\tcase Prohibited:\n\t\treturn \"administratively prohibited\"\n\tcase ConnectionFailed:\n\t\treturn \"connect failed\"\n\tcase UnknownChannelType:\n\t\treturn \"unknown channel type\"\n\tcase ResourceShortage:\n\t\treturn \"resource shortage\"\n\t}\n\treturn fmt.Sprintf(\"unknown reason %d\", int(r))\n}\n\nfunc min(a uint32, b int) uint32 {\n\tif a < uint32(b) {\n\t\treturn a\n\t}\n\treturn uint32(b)\n}\n\ntype channelDirection uint8\n\nconst (\n\tchannelInbound channelDirection = iota\n\tchannelOutbound\n)\n\n// channel is an implementation of the Channel interface that works\n// with the mux class.\ntype channel struct {\n\t// R/O after creation\n\tchanType          string\n\textraData         []byte\n\tlocalId, remoteId uint32\n\n\t// maxIncomingPayload and maxRemotePayload are the maximum\n\t// payload sizes of normal and extended data packets for\n\t// receiving and sending, respectively. The wire packet will\n\t// be 9 or 13 bytes larger (excluding encryption overhead).\n\tmaxIncomingPayload uint32\n\tmaxRemotePayload   uint32\n\n\tmux *mux\n\n\t// decided is set to true if an accept or reject message has been sent\n\t// (for outbound channels) or received (for inbound channels).\n\tdecided bool\n\n\t// direction contains either channelOutbound, for channels created\n\t// locally, or channelInbound, for channels created by the peer.\n\tdirection channelDirection\n\n\t// Pending internal channel messages.\n\tmsg chan any\n\n\t// Since requests have no ID, there can be only one request\n\t// with WantReply=true outstanding.  This lock is held by a\n\t// goroutine that has such an outgoing request pending.\n\tsentRequestMu sync.Mutex\n\n\tincomingRequests chan *Request\n\n\tsentEOF bool\n\n\t// thread-safe data\n\tremoteWin  window\n\tpending    *buffer\n\textPending *buffer\n\n\t// windowMu protects myWindow, the flow-control window, and myConsumed,\n\t// the number of bytes consumed since we last increased myWindow\n\twindowMu   sync.Mutex\n\tmyWindow   uint32\n\tmyConsumed uint32\n\n\t// writeMu serializes calls to mux.conn.writePacket() and\n\t// protects sentClose and packetPool. This mutex must be\n\t// different from windowMu, as writePacket can block if there\n\t// is a key exchange pending.\n\twriteMu   sync.Mutex\n\tsentClose bool\n\n\t// packetPool has a buffer for each extended channel ID to\n\t// save allocations during writes.\n\tpacketPool map[uint32][]byte\n}\n\n// writePacket sends a packet. If the packet is a channel close, it updates\n// sentClose. This method takes the lock c.writeMu.\nfunc (ch *channel) writePacket(packet []byte) error {\n\tch.writeMu.Lock()\n\tif ch.sentClose {\n\t\tch.writeMu.Unlock()\n\t\treturn io.EOF\n\t}\n\tch.sentClose = (packet[0] == msgChannelClose)\n\terr := ch.mux.conn.writePacket(packet)\n\tch.writeMu.Unlock()\n\treturn err\n}\n\nfunc (ch *channel) sendMessage(msg any) error {\n\tif debugMux {\n\t\tlog.Printf(\"send(%d): %#v\", ch.mux.chanList.offset, msg)\n\t}\n\n\tp := Marshal(msg)\n\tbinary.BigEndian.PutUint32(p[1:], ch.remoteId)\n\treturn ch.writePacket(p)\n}\n\n// WriteExtended writes data to a specific extended stream. These streams are\n// used, for example, for stderr.\nfunc (ch *channel) WriteExtended(data []byte, extendedCode uint32) (n int, err error) {\n\tif ch.sentEOF {\n\t\treturn 0, io.EOF\n\t}\n\t// 1 byte message type, 4 bytes remoteId, 4 bytes data length\n\topCode := byte(msgChannelData)\n\theaderLength := uint32(9)\n\tif extendedCode > 0 {\n\t\theaderLength += 4\n\t\topCode = msgChannelExtendedData\n\t}\n\n\tch.writeMu.Lock()\n\tpacket := ch.packetPool[extendedCode]\n\t// We don't remove the buffer from packetPool, so\n\t// WriteExtended calls from different goroutines will be\n\t// flagged as errors by the race detector.\n\tch.writeMu.Unlock()\n\n\tfor len(data) > 0 {\n\t\tspace := min(ch.maxRemotePayload, len(data))\n\t\tif space, err = ch.remoteWin.reserve(space); err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tif want := headerLength + space; uint32(cap(packet)) < want {\n\t\t\tpacket = make([]byte, want)\n\t\t} else {\n\t\t\tpacket = packet[:want]\n\t\t}\n\n\t\ttodo := data[:space]\n\n\t\tpacket[0] = opCode\n\t\tbinary.BigEndian.PutUint32(packet[1:], ch.remoteId)\n\t\tif extendedCode > 0 {\n\t\t\tbinary.BigEndian.PutUint32(packet[5:], uint32(extendedCode))\n\t\t}\n\t\tbinary.BigEndian.PutUint32(packet[headerLength-4:], uint32(len(todo)))\n\t\tcopy(packet[headerLength:], todo)\n\t\tif err = ch.writePacket(packet); err != nil {\n\t\t\treturn n, err\n\t\t}\n\n\t\tn += len(todo)\n\t\tdata = data[len(todo):]\n\t}\n\n\tch.writeMu.Lock()\n\tch.packetPool[extendedCode] = packet\n\tch.writeMu.Unlock()\n\n\treturn n, err\n}\n\nfunc (ch *channel) handleData(packet []byte) error {\n\theaderLen := 9\n\tisExtendedData := packet[0] == msgChannelExtendedData\n\tif isExtendedData {\n\t\theaderLen = 13\n\t}\n\tif len(packet) < headerLen {\n\t\t// malformed data packet\n\t\treturn parseError(packet[0])\n\t}\n\n\tvar extended uint32\n\tif isExtendedData {\n\t\textended = binary.BigEndian.Uint32(packet[5:])\n\t}\n\n\tlength := binary.BigEndian.Uint32(packet[headerLen-4 : headerLen])\n\tif length == 0 {\n\t\treturn nil\n\t}\n\tif length > ch.maxIncomingPayload {\n\t\t// TODO(hanwen): should send Disconnect?\n\t\treturn errors.New(\"ssh: incoming packet exceeds maximum payload size\")\n\t}\n\n\tdata := packet[headerLen:]\n\tif length != uint32(len(data)) {\n\t\treturn errors.New(\"ssh: wrong packet length\")\n\t}\n\n\tch.windowMu.Lock()\n\tif ch.myWindow < length {\n\t\tch.windowMu.Unlock()\n\t\t// TODO(hanwen): should send Disconnect with reason?\n\t\treturn errors.New(\"ssh: remote side wrote too much\")\n\t}\n\tch.myWindow -= length\n\tch.windowMu.Unlock()\n\n\tif extended == 1 {\n\t\tch.extPending.write(data)\n\t} else if extended > 0 {\n\t\t// discard other extended data.\n\t} else {\n\t\tch.pending.write(data)\n\t}\n\treturn nil\n}\n\nfunc (c *channel) adjustWindow(adj uint32) error {\n\tc.windowMu.Lock()\n\t// Since myConsumed and myWindow are managed on our side, and can never\n\t// exceed the initial window setting, we don't worry about overflow.\n\tc.myConsumed += adj\n\tvar sendAdj uint32\n\tif (channelWindowSize-c.myWindow > 3*c.maxIncomingPayload) ||\n\t\t(c.myWindow < channelWindowSize/2) {\n\t\tsendAdj = c.myConsumed\n\t\tc.myConsumed = 0\n\t\tc.myWindow += sendAdj\n\t}\n\tc.windowMu.Unlock()\n\tif sendAdj == 0 {\n\t\treturn nil\n\t}\n\treturn c.sendMessage(windowAdjustMsg{\n\t\tAdditionalBytes: sendAdj,\n\t})\n}\n\nfunc (c *channel) ReadExtended(data []byte, extended uint32) (n int, err error) {\n\tswitch extended {\n\tcase 1:\n\t\tn, err = c.extPending.Read(data)\n\tcase 0:\n\t\tn, err = c.pending.Read(data)\n\tdefault:\n\t\treturn 0, fmt.Errorf(\"ssh: extended code %d unimplemented\", extended)\n\t}\n\n\tif n > 0 {\n\t\terr = c.adjustWindow(uint32(n))\n\t\t// sendWindowAdjust can return io.EOF if the remote\n\t\t// peer has closed the connection, however we want to\n\t\t// defer forwarding io.EOF to the caller of Read until\n\t\t// the buffer has been drained.\n\t\tif n > 0 && err == io.EOF {\n\t\t\terr = nil\n\t\t}\n\t}\n\n\treturn n, err\n}\n\nfunc (c *channel) close() {\n\tc.pending.eof()\n\tc.extPending.eof()\n\tclose(c.msg)\n\tclose(c.incomingRequests)\n\tc.writeMu.Lock()\n\t// This is not necessary for a normal channel teardown, but if\n\t// there was another error, it is.\n\tc.sentClose = true\n\tc.writeMu.Unlock()\n\t// Unblock writers.\n\tc.remoteWin.close()\n}\n\n// responseMessageReceived is called when a success or failure message is\n// received on a channel to check that such a message is reasonable for the\n// given channel.\nfunc (ch *channel) responseMessageReceived() error {\n\tif ch.direction == channelInbound {\n\t\treturn errors.New(\"ssh: channel response message received on inbound channel\")\n\t}\n\tif ch.decided {\n\t\treturn errors.New(\"ssh: duplicate response received for channel\")\n\t}\n\tch.decided = true\n\treturn nil\n}\n\nfunc (ch *channel) handlePacket(packet []byte) error {\n\tswitch packet[0] {\n\tcase msgChannelData, msgChannelExtendedData:\n\t\treturn ch.handleData(packet)\n\tcase msgChannelClose:\n\t\tch.sendMessage(channelCloseMsg{PeersID: ch.remoteId})\n\t\tch.mux.chanList.remove(ch.localId)\n\t\tch.close()\n\t\treturn nil\n\tcase msgChannelEOF:\n\t\t// RFC 4254 is mute on how EOF affects dataExt messages but\n\t\t// it is logical to signal EOF at the same time.\n\t\tch.extPending.eof()\n\t\tch.pending.eof()\n\t\treturn nil\n\t}\n\n\tdecoded, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := decoded.(type) {\n\tcase *channelOpenFailureMsg:\n\t\tif err := ch.responseMessageReceived(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tch.mux.chanList.remove(msg.PeersID)\n\t\tch.msg <- msg\n\tcase *channelOpenConfirmMsg:\n\t\tif err := ch.responseMessageReceived(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 {\n\t\t\treturn fmt.Errorf(\"ssh: invalid MaxPacketSize %d from peer\", msg.MaxPacketSize)\n\t\t}\n\t\tch.remoteId = msg.MyID\n\t\tch.maxRemotePayload = msg.MaxPacketSize\n\t\tch.remoteWin.add(msg.MyWindow)\n\t\tch.msg <- msg\n\tcase *windowAdjustMsg:\n\t\tif !ch.remoteWin.add(msg.AdditionalBytes) {\n\t\t\treturn fmt.Errorf(\"ssh: invalid window update for %d bytes\", msg.AdditionalBytes)\n\t\t}\n\tcase *channelRequestMsg:\n\t\treq := Request{\n\t\t\tType:      msg.Request,\n\t\t\tWantReply: msg.WantReply,\n\t\t\tPayload:   msg.RequestSpecificData,\n\t\t\tch:        ch,\n\t\t}\n\n\t\tch.incomingRequests <- &req\n\tdefault:\n\t\tch.msg <- msg\n\t}\n\treturn nil\n}\n\nfunc (m *mux) newChannel(chanType string, direction channelDirection, extraData []byte) *channel {\n\tch := &channel{\n\t\tremoteWin:        window{Cond: newCond()},\n\t\tmyWindow:         channelWindowSize,\n\t\tpending:          newBuffer(),\n\t\textPending:       newBuffer(),\n\t\tdirection:        direction,\n\t\tincomingRequests: make(chan *Request, chanSize),\n\t\tmsg:              make(chan any, chanSize),\n\t\tchanType:         chanType,\n\t\textraData:        extraData,\n\t\tmux:              m,\n\t\tpacketPool:       make(map[uint32][]byte),\n\t}\n\tch.localId = m.chanList.add(ch)\n\treturn ch\n}\n\nvar errUndecided = errors.New(\"ssh: must Accept or Reject channel\")\nvar errDecidedAlready = errors.New(\"ssh: can call Accept or Reject only once\")\n\ntype extChannel struct {\n\tcode uint32\n\tch   *channel\n}\n\nfunc (e *extChannel) Write(data []byte) (n int, err error) {\n\treturn e.ch.WriteExtended(data, e.code)\n}\n\nfunc (e *extChannel) Read(data []byte) (n int, err error) {\n\treturn e.ch.ReadExtended(data, e.code)\n}\n\nfunc (ch *channel) Accept() (Channel, <-chan *Request, error) {\n\tif ch.decided {\n\t\treturn nil, nil, errDecidedAlready\n\t}\n\tch.maxIncomingPayload = channelMaxPacket\n\tconfirm := channelOpenConfirmMsg{\n\t\tPeersID:       ch.remoteId,\n\t\tMyID:          ch.localId,\n\t\tMyWindow:      ch.myWindow,\n\t\tMaxPacketSize: ch.maxIncomingPayload,\n\t}\n\tch.decided = true\n\tif err := ch.sendMessage(confirm); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn ch, ch.incomingRequests, nil\n}\n\nfunc (ch *channel) Reject(reason RejectionReason, message string) error {\n\tif ch.decided {\n\t\treturn errDecidedAlready\n\t}\n\treject := channelOpenFailureMsg{\n\t\tPeersID:  ch.remoteId,\n\t\tReason:   reason,\n\t\tMessage:  message,\n\t\tLanguage: \"en\",\n\t}\n\tch.decided = true\n\treturn ch.sendMessage(reject)\n}\n\nfunc (ch *channel) Read(data []byte) (int, error) {\n\tif !ch.decided {\n\t\treturn 0, errUndecided\n\t}\n\treturn ch.ReadExtended(data, 0)\n}\n\nfunc (ch *channel) Write(data []byte) (int, error) {\n\tif !ch.decided {\n\t\treturn 0, errUndecided\n\t}\n\treturn ch.WriteExtended(data, 0)\n}\n\nfunc (ch *channel) CloseWrite() error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\tch.sentEOF = true\n\treturn ch.sendMessage(channelEOFMsg{\n\t\tPeersID: ch.remoteId})\n}\n\nfunc (ch *channel) Close() error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\n\treturn ch.sendMessage(channelCloseMsg{\n\t\tPeersID: ch.remoteId})\n}\n\n// Extended returns an io.ReadWriter that sends and receives data on the given,\n// SSH extended stream. Such streams are used, for example, for stderr.\nfunc (ch *channel) Extended(code uint32) io.ReadWriter {\n\tif !ch.decided {\n\t\treturn nil\n\t}\n\treturn &extChannel{code, ch}\n}\n\nfunc (ch *channel) Stderr() io.ReadWriter {\n\treturn ch.Extended(1)\n}\n\nfunc (ch *channel) SendRequest(name string, wantReply bool, payload []byte) (bool, error) {\n\tif !ch.decided {\n\t\treturn false, errUndecided\n\t}\n\n\tif wantReply {\n\t\tch.sentRequestMu.Lock()\n\t\tdefer ch.sentRequestMu.Unlock()\n\t}\n\n\tmsg := channelRequestMsg{\n\t\tPeersID:             ch.remoteId,\n\t\tRequest:             name,\n\t\tWantReply:           wantReply,\n\t\tRequestSpecificData: payload,\n\t}\n\n\tif err := ch.sendMessage(msg); err != nil {\n\t\treturn false, err\n\t}\n\n\tif wantReply {\n\t\tm, ok := (<-ch.msg)\n\t\tif !ok {\n\t\t\treturn false, io.EOF\n\t\t}\n\t\tswitch m.(type) {\n\t\tcase *channelRequestFailureMsg:\n\t\t\treturn false, nil\n\t\tcase *channelRequestSuccessMsg:\n\t\t\treturn true, nil\n\t\tdefault:\n\t\t\treturn false, fmt.Errorf(\"ssh: unexpected response to channel request: %#v\", m)\n\t\t}\n\t}\n\n\treturn false, nil\n}\n\n// ackRequest either sends an ack or nack to the channel request.\nfunc (ch *channel) ackRequest(ok bool) error {\n\tif !ch.decided {\n\t\treturn errUndecided\n\t}\n\n\tvar msg any\n\tif !ok {\n\t\tmsg = channelRequestFailureMsg{\n\t\t\tPeersID: ch.remoteId,\n\t\t}\n\t} else {\n\t\tmsg = channelRequestSuccessMsg{\n\t\t\tPeersID: ch.remoteId,\n\t\t}\n\t}\n\treturn ch.sendMessage(msg)\n}\n\nfunc (ch *channel) ChannelType() string {\n\treturn ch.chanType\n}\n\nfunc (ch *channel) ExtraData() []byte {\n\treturn ch.extraData\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/cipher.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 ssh\n\nimport (\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/des\"\n\t\"crypto/rc4\"\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/crypto/chacha20\"\n\t\"gossh/crypto/internal/poly1305\"\n\t\"hash\"\n\t\"io\"\n)\n\nconst (\n\tpacketSizeMultiple = 16 // TODO(huin) this should be determined by the cipher.\n\n\t// RFC 4253 section 6.1 defines a minimum packet size of 32768 that implementations\n\t// MUST be able to process (plus a few more kilobytes for padding and mac). The RFC\n\t// indicates implementations SHOULD be able to handle larger packet sizes, but then\n\t// waffles on about reasonable limits.\n\t//\n\t// OpenSSH caps their maxPacket at 256kB so we choose to do\n\t// the same. maxPacket is also used to ensure that uint32\n\t// length fields do not overflow, so it should remain well\n\t// below 4G.\n\tmaxPacket = 256 * 1024\n)\n\n// noneCipher implements cipher.Stream and provides no encryption. It is used\n// by the transport before the first key-exchange.\ntype noneCipher struct{}\n\nfunc (c noneCipher) XORKeyStream(dst, src []byte) {\n\tcopy(dst, src)\n}\n\nfunc newAESCTR(key, iv []byte) (cipher.Stream, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn cipher.NewCTR(c, iv), nil\n}\n\nfunc newRC4(key, iv []byte) (cipher.Stream, error) {\n\treturn rc4.NewCipher(key)\n}\n\ntype cipherMode struct {\n\tkeySize int\n\tivSize  int\n\tcreate  func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error)\n}\n\nfunc streamCipherMode(skip int, createFunc func(key, iv []byte) (cipher.Stream, error)) func(key, iv []byte, macKey []byte, algs directionAlgorithms) (packetCipher, error) {\n\treturn func(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) {\n\t\tstream, err := createFunc(key, iv)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar streamDump []byte\n\t\tif skip > 0 {\n\t\t\tstreamDump = make([]byte, 512)\n\t\t}\n\n\t\tfor remainingToDump := skip; remainingToDump > 0; {\n\t\t\tdumpThisTime := remainingToDump\n\t\t\tif dumpThisTime > len(streamDump) {\n\t\t\t\tdumpThisTime = len(streamDump)\n\t\t\t}\n\t\t\tstream.XORKeyStream(streamDump[:dumpThisTime], streamDump[:dumpThisTime])\n\t\t\tremainingToDump -= dumpThisTime\n\t\t}\n\n\t\tmac := macModes[algs.MAC].new(macKey)\n\t\treturn &streamPacketCipher{\n\t\t\tmac:       mac,\n\t\t\tetm:       macModes[algs.MAC].etm,\n\t\t\tmacResult: make([]byte, mac.Size()),\n\t\t\tcipher:    stream,\n\t\t}, nil\n\t}\n}\n\n// cipherModes documents properties of supported ciphers. Ciphers not included\n// are not supported and will not be negotiated, even if explicitly requested in\n// ClientConfig.Crypto.Ciphers.\nvar cipherModes = map[string]*cipherMode{\n\t// Ciphers from RFC 4344, which introduced many CTR-based ciphers. Algorithms\n\t// are defined in the order specified in the RFC.\n\t\"aes128-ctr\": {16, aes.BlockSize, streamCipherMode(0, newAESCTR)},\n\t\"aes192-ctr\": {24, aes.BlockSize, streamCipherMode(0, newAESCTR)},\n\t\"aes256-ctr\": {32, aes.BlockSize, streamCipherMode(0, newAESCTR)},\n\n\t// Ciphers from RFC 4345, which introduces security-improved arcfour ciphers.\n\t// They are defined in the order specified in the RFC.\n\t\"arcfour128\": {16, 0, streamCipherMode(1536, newRC4)},\n\t\"arcfour256\": {32, 0, streamCipherMode(1536, newRC4)},\n\n\t// Cipher defined in RFC 4253, which describes SSH Transport Layer Protocol.\n\t// Note that this cipher is not safe, as stated in RFC 4253: \"Arcfour (and\n\t// RC4) has problems with weak keys, and should be used with caution.\"\n\t// RFC 4345 introduces improved versions of Arcfour.\n\t\"arcfour\": {16, 0, streamCipherMode(0, newRC4)},\n\n\t// AEAD ciphers\n\tgcm128CipherID:     {16, 12, newGCMCipher},\n\tgcm256CipherID:     {32, 12, newGCMCipher},\n\tchacha20Poly1305ID: {64, 0, newChaCha20Cipher},\n\n\t// CBC mode is insecure and so is not included in the default config.\n\t// (See https://www.ieee-security.org/TC/SP2013/papers/4977a526.pdf). If absolutely\n\t// needed, it's possible to specify a custom Config to enable it.\n\t// You should expect that an active attacker can recover plaintext if\n\t// you do.\n\taes128cbcID: {16, aes.BlockSize, newAESCBCCipher},\n\n\t// 3des-cbc is insecure and is not included in the default\n\t// config.\n\ttripledescbcID: {24, des.BlockSize, newTripleDESCBCCipher},\n}\n\n// prefixLen is the length of the packet prefix that contains the packet length\n// and number of padding bytes.\nconst prefixLen = 5\n\n// streamPacketCipher is a packetCipher using a stream cipher.\ntype streamPacketCipher struct {\n\tmac    hash.Hash\n\tcipher cipher.Stream\n\tetm    bool\n\n\t// The following members are to avoid per-packet allocations.\n\tprefix      [prefixLen]byte\n\tseqNumBytes [4]byte\n\tpadding     [2 * packetSizeMultiple]byte\n\tpacketData  []byte\n\tmacResult   []byte\n}\n\n// readCipherPacket reads and decrypt a single packet from the reader argument.\nfunc (s *streamPacketCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tif _, err := io.ReadFull(r, s.prefix[:]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar encryptedPaddingLength [1]byte\n\tif s.mac != nil && s.etm {\n\t\tcopy(encryptedPaddingLength[:], s.prefix[4:5])\n\t\ts.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5])\n\t} else {\n\t\ts.cipher.XORKeyStream(s.prefix[:], s.prefix[:])\n\t}\n\n\tlength := binary.BigEndian.Uint32(s.prefix[0:4])\n\tpaddingLength := uint32(s.prefix[4])\n\n\tvar macSize uint32\n\tif s.mac != nil {\n\t\ts.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum)\n\t\ts.mac.Write(s.seqNumBytes[:])\n\t\tif s.etm {\n\t\t\ts.mac.Write(s.prefix[:4])\n\t\t\ts.mac.Write(encryptedPaddingLength[:])\n\t\t} else {\n\t\t\ts.mac.Write(s.prefix[:])\n\t\t}\n\t\tmacSize = uint32(s.mac.Size())\n\t}\n\n\tif length <= paddingLength+1 {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too small\")\n\t}\n\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too large\")\n\t}\n\n\t// the maxPacket check above ensures that length-1+macSize\n\t// does not overflow.\n\tif uint32(cap(s.packetData)) < length-1+macSize {\n\t\ts.packetData = make([]byte, length-1+macSize)\n\t} else {\n\t\ts.packetData = s.packetData[:length-1+macSize]\n\t}\n\n\tif _, err := io.ReadFull(r, s.packetData); err != nil {\n\t\treturn nil, err\n\t}\n\tmac := s.packetData[length-1:]\n\tdata := s.packetData[:length-1]\n\n\tif s.mac != nil && s.etm {\n\t\ts.mac.Write(data)\n\t}\n\n\ts.cipher.XORKeyStream(data, data)\n\n\tif s.mac != nil {\n\t\tif !s.etm {\n\t\t\ts.mac.Write(data)\n\t\t}\n\t\ts.macResult = s.mac.Sum(s.macResult[:0])\n\t\tif subtle.ConstantTimeCompare(s.macResult, mac) != 1 {\n\t\t\treturn nil, errors.New(\"ssh: MAC failure\")\n\t\t}\n\t}\n\n\treturn s.packetData[:length-paddingLength-1], nil\n}\n\n// writeCipherPacket encrypts and sends a packet of data to the writer argument\nfunc (s *streamPacketCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\tif len(packet) > maxPacket {\n\t\treturn errors.New(\"ssh: packet too large\")\n\t}\n\n\taadlen := 0\n\tif s.mac != nil && s.etm {\n\t\t// packet length is not encrypted for EtM modes\n\t\taadlen = 4\n\t}\n\n\tpaddingLength := packetSizeMultiple - (prefixLen+len(packet)-aadlen)%packetSizeMultiple\n\tif paddingLength < 4 {\n\t\tpaddingLength += packetSizeMultiple\n\t}\n\n\tlength := len(packet) + 1 + paddingLength\n\tbinary.BigEndian.PutUint32(s.prefix[:], uint32(length))\n\ts.prefix[4] = byte(paddingLength)\n\tpadding := s.padding[:paddingLength]\n\tif _, err := io.ReadFull(rand, padding); err != nil {\n\t\treturn err\n\t}\n\n\tif s.mac != nil {\n\t\ts.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(s.seqNumBytes[:], seqNum)\n\t\ts.mac.Write(s.seqNumBytes[:])\n\n\t\tif s.etm {\n\t\t\t// For EtM algorithms, the packet length must stay unencrypted,\n\t\t\t// but the following data (padding length) must be encrypted\n\t\t\ts.cipher.XORKeyStream(s.prefix[4:5], s.prefix[4:5])\n\t\t}\n\n\t\ts.mac.Write(s.prefix[:])\n\n\t\tif !s.etm {\n\t\t\t// For non-EtM algorithms, the algorithm is applied on unencrypted data\n\t\t\ts.mac.Write(packet)\n\t\t\ts.mac.Write(padding)\n\t\t}\n\t}\n\n\tif !(s.mac != nil && s.etm) {\n\t\t// For EtM algorithms, the padding length has already been encrypted\n\t\t// and the packet length must remain unencrypted\n\t\ts.cipher.XORKeyStream(s.prefix[:], s.prefix[:])\n\t}\n\n\ts.cipher.XORKeyStream(packet, packet)\n\ts.cipher.XORKeyStream(padding, padding)\n\n\tif s.mac != nil && s.etm {\n\t\t// For EtM algorithms, packet and padding must be encrypted\n\t\ts.mac.Write(packet)\n\t\ts.mac.Write(padding)\n\t}\n\n\tif _, err := w.Write(s.prefix[:]); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.Write(packet); err != nil {\n\t\treturn err\n\t}\n\tif _, err := w.Write(padding); err != nil {\n\t\treturn err\n\t}\n\n\tif s.mac != nil {\n\t\ts.macResult = s.mac.Sum(s.macResult[:0])\n\t\tif _, err := w.Write(s.macResult); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\ntype gcmCipher struct {\n\taead   cipher.AEAD\n\tprefix [4]byte\n\tiv     []byte\n\tbuf    []byte\n}\n\nfunc newGCMCipher(key, iv, unusedMacKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\taead, err := cipher.NewGCM(c)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &gcmCipher{\n\t\taead: aead,\n\t\tiv:   iv,\n\t}, nil\n}\n\nconst gcmTagSize = 16\n\nfunc (c *gcmCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\t// Pad out to multiple of 16 bytes. This is different from the\n\t// stream cipher because that encrypts the length too.\n\tpadding := byte(packetSizeMultiple - (1+len(packet))%packetSizeMultiple)\n\tif padding < 4 {\n\t\tpadding += packetSizeMultiple\n\t}\n\n\tlength := uint32(len(packet) + int(padding) + 1)\n\tbinary.BigEndian.PutUint32(c.prefix[:], length)\n\tif _, err := w.Write(c.prefix[:]); err != nil {\n\t\treturn err\n\t}\n\n\tif cap(c.buf) < int(length) {\n\t\tc.buf = make([]byte, length)\n\t} else {\n\t\tc.buf = c.buf[:length]\n\t}\n\n\tc.buf[0] = padding\n\tcopy(c.buf[1:], packet)\n\tif _, err := io.ReadFull(rand, c.buf[1+len(packet):]); err != nil {\n\t\treturn err\n\t}\n\tc.buf = c.aead.Seal(c.buf[:0], c.iv, c.buf, c.prefix[:])\n\tif _, err := w.Write(c.buf); err != nil {\n\t\treturn err\n\t}\n\tc.incIV()\n\n\treturn nil\n}\n\nfunc (c *gcmCipher) incIV() {\n\tfor i := 4 + 7; i >= 4; i-- {\n\t\tc.iv[i]++\n\t\tif c.iv[i] != 0 {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nfunc (c *gcmCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tif _, err := io.ReadFull(r, c.prefix[:]); err != nil {\n\t\treturn nil, err\n\t}\n\tlength := binary.BigEndian.Uint32(c.prefix[:])\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: max packet length exceeded\")\n\t}\n\n\tif cap(c.buf) < int(length+gcmTagSize) {\n\t\tc.buf = make([]byte, length+gcmTagSize)\n\t} else {\n\t\tc.buf = c.buf[:length+gcmTagSize]\n\t}\n\n\tif _, err := io.ReadFull(r, c.buf); err != nil {\n\t\treturn nil, err\n\t}\n\n\tplain, err := c.aead.Open(c.buf[:0], c.iv, c.buf, c.prefix[:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.incIV()\n\n\tif len(plain) == 0 {\n\t\treturn nil, errors.New(\"ssh: empty packet\")\n\t}\n\n\tpadding := plain[0]\n\tif padding < 4 {\n\t\t// padding is a byte, so it automatically satisfies\n\t\t// the maximum size, which is 255.\n\t\treturn nil, fmt.Errorf(\"ssh: illegal padding %d\", padding)\n\t}\n\n\tif int(padding+1) >= len(plain) {\n\t\treturn nil, fmt.Errorf(\"ssh: padding %d too large\", padding)\n\t}\n\tplain = plain[1 : length-uint32(padding)]\n\treturn plain, nil\n}\n\n// cbcCipher implements aes128-cbc cipher defined in RFC 4253 section 6.1\ntype cbcCipher struct {\n\tmac       hash.Hash\n\tmacSize   uint32\n\tdecrypter cipher.BlockMode\n\tencrypter cipher.BlockMode\n\n\t// The following members are to avoid per-packet allocations.\n\tseqNumBytes [4]byte\n\tpacketData  []byte\n\tmacResult   []byte\n\n\t// Amount of data we should still read to hide which\n\t// verification error triggered.\n\toracleCamouflage uint32\n}\n\nfunc newCBCCipher(c cipher.Block, key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) {\n\tcbc := &cbcCipher{\n\t\tmac:        macModes[algs.MAC].new(macKey),\n\t\tdecrypter:  cipher.NewCBCDecrypter(c, iv),\n\t\tencrypter:  cipher.NewCBCEncrypter(c, iv),\n\t\tpacketData: make([]byte, 1024),\n\t}\n\tif cbc.mac != nil {\n\t\tcbc.macSize = uint32(cbc.mac.Size())\n\t}\n\n\treturn cbc, nil\n}\n\nfunc newAESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) {\n\tc, err := aes.NewCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcbc, err := newCBCCipher(c, key, iv, macKey, algs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cbc, nil\n}\n\nfunc newTripleDESCBCCipher(key, iv, macKey []byte, algs directionAlgorithms) (packetCipher, error) {\n\tc, err := des.NewTripleDESCipher(key)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tcbc, err := newCBCCipher(c, key, iv, macKey, algs)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn cbc, nil\n}\n\nfunc maxUInt32(a, b int) uint32 {\n\tif a > b {\n\t\treturn uint32(a)\n\t}\n\treturn uint32(b)\n}\n\nconst (\n\tcbcMinPacketSizeMultiple = 8\n\tcbcMinPacketSize         = 16\n\tcbcMinPaddingSize        = 4\n)\n\n// cbcError represents a verification error that may leak information.\ntype cbcError string\n\nfunc (e cbcError) Error() string { return string(e) }\n\nfunc (c *cbcCipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tp, err := c.readCipherPacketLeaky(seqNum, r)\n\tif err != nil {\n\t\tif _, ok := err.(cbcError); ok {\n\t\t\t// Verification error: read a fixed amount of\n\t\t\t// data, to make distinguishing between\n\t\t\t// failing MAC and failing length check more\n\t\t\t// difficult.\n\t\t\tio.CopyN(io.Discard, r, int64(c.oracleCamouflage))\n\t\t}\n\t}\n\treturn p, err\n}\n\nfunc (c *cbcCipher) readCipherPacketLeaky(seqNum uint32, r io.Reader) ([]byte, error) {\n\tblockSize := c.decrypter.BlockSize()\n\n\t// Read the header, which will include some of the subsequent data in the\n\t// case of block ciphers - this is copied back to the payload later.\n\t// How many bytes of payload/padding will be read with this first read.\n\tfirstBlockLength := uint32((prefixLen + blockSize - 1) / blockSize * blockSize)\n\tfirstBlock := c.packetData[:firstBlockLength]\n\tif _, err := io.ReadFull(r, firstBlock); err != nil {\n\t\treturn nil, err\n\t}\n\n\tc.oracleCamouflage = maxPacket + 4 + c.macSize - firstBlockLength\n\n\tc.decrypter.CryptBlocks(firstBlock, firstBlock)\n\tlength := binary.BigEndian.Uint32(firstBlock[:4])\n\tif length > maxPacket {\n\t\treturn nil, cbcError(\"ssh: packet too large\")\n\t}\n\tif length+4 < maxUInt32(cbcMinPacketSize, blockSize) {\n\t\t// The minimum size of a packet is 16 (or the cipher block size, whichever\n\t\t// is larger) bytes.\n\t\treturn nil, cbcError(\"ssh: packet too small\")\n\t}\n\t// The length of the packet (including the length field but not the MAC) must\n\t// be a multiple of the block size or 8, whichever is larger.\n\tif (length+4)%maxUInt32(cbcMinPacketSizeMultiple, blockSize) != 0 {\n\t\treturn nil, cbcError(\"ssh: invalid packet length multiple\")\n\t}\n\n\tpaddingLength := uint32(firstBlock[4])\n\tif paddingLength < cbcMinPaddingSize || length <= paddingLength+1 {\n\t\treturn nil, cbcError(\"ssh: invalid packet length\")\n\t}\n\n\t// Positions within the c.packetData buffer:\n\tmacStart := 4 + length\n\tpaddingStart := macStart - paddingLength\n\n\t// Entire packet size, starting before length, ending at end of mac.\n\tentirePacketSize := macStart + c.macSize\n\n\t// Ensure c.packetData is large enough for the entire packet data.\n\tif uint32(cap(c.packetData)) < entirePacketSize {\n\t\t// Still need to upsize and copy, but this should be rare at runtime, only\n\t\t// on upsizing the packetData buffer.\n\t\tc.packetData = make([]byte, entirePacketSize)\n\t\tcopy(c.packetData, firstBlock)\n\t} else {\n\t\tc.packetData = c.packetData[:entirePacketSize]\n\t}\n\n\tn, err := io.ReadFull(r, c.packetData[firstBlockLength:])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.oracleCamouflage -= uint32(n)\n\n\tremainingCrypted := c.packetData[firstBlockLength:macStart]\n\tc.decrypter.CryptBlocks(remainingCrypted, remainingCrypted)\n\n\tmac := c.packetData[macStart:]\n\tif c.mac != nil {\n\t\tc.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum)\n\t\tc.mac.Write(c.seqNumBytes[:])\n\t\tc.mac.Write(c.packetData[:macStart])\n\t\tc.macResult = c.mac.Sum(c.macResult[:0])\n\t\tif subtle.ConstantTimeCompare(c.macResult, mac) != 1 {\n\t\t\treturn nil, cbcError(\"ssh: MAC failure\")\n\t\t}\n\t}\n\n\treturn c.packetData[prefixLen:paddingStart], nil\n}\n\nfunc (c *cbcCipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, packet []byte) error {\n\teffectiveBlockSize := maxUInt32(cbcMinPacketSizeMultiple, c.encrypter.BlockSize())\n\n\t// Length of encrypted portion of the packet (header, payload, padding).\n\t// Enforce minimum padding and packet size.\n\tencLength := maxUInt32(prefixLen+len(packet)+cbcMinPaddingSize, cbcMinPaddingSize)\n\t// Enforce block size.\n\tencLength = (encLength + effectiveBlockSize - 1) / effectiveBlockSize * effectiveBlockSize\n\n\tlength := encLength - 4\n\tpaddingLength := int(length) - (1 + len(packet))\n\n\t// Overall buffer contains: header, payload, padding, mac.\n\t// Space for the MAC is reserved in the capacity but not the slice length.\n\tbufferSize := encLength + c.macSize\n\tif uint32(cap(c.packetData)) < bufferSize {\n\t\tc.packetData = make([]byte, encLength, bufferSize)\n\t} else {\n\t\tc.packetData = c.packetData[:encLength]\n\t}\n\n\tp := c.packetData\n\n\t// Packet header.\n\tbinary.BigEndian.PutUint32(p, length)\n\tp = p[4:]\n\tp[0] = byte(paddingLength)\n\n\t// Payload.\n\tp = p[1:]\n\tcopy(p, packet)\n\n\t// Padding.\n\tp = p[len(packet):]\n\tif _, err := io.ReadFull(rand, p); err != nil {\n\t\treturn err\n\t}\n\n\tif c.mac != nil {\n\t\tc.mac.Reset()\n\t\tbinary.BigEndian.PutUint32(c.seqNumBytes[:], seqNum)\n\t\tc.mac.Write(c.seqNumBytes[:])\n\t\tc.mac.Write(c.packetData)\n\t\t// The MAC is now appended into the capacity reserved for it earlier.\n\t\tc.packetData = c.mac.Sum(c.packetData)\n\t}\n\n\tc.encrypter.CryptBlocks(c.packetData[:encLength], c.packetData[:encLength])\n\n\tif _, err := w.Write(c.packetData); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nconst chacha20Poly1305ID = \"chacha20-poly1305@openssh.com\"\n\n// chacha20Poly1305Cipher implements the chacha20-poly1305@openssh.com\n// AEAD, which is described here:\n//\n//\thttps://tools.ietf.org/html/draft-josefsson-ssh-chacha20-poly1305-openssh-00\n//\n// the methods here also implement padding, which RFC 4253 Section 6\n// also requires of stream ciphers.\ntype chacha20Poly1305Cipher struct {\n\tlengthKey  [32]byte\n\tcontentKey [32]byte\n\tbuf        []byte\n}\n\nfunc newChaCha20Cipher(key, unusedIV, unusedMACKey []byte, unusedAlgs directionAlgorithms) (packetCipher, error) {\n\tif len(key) != 64 {\n\t\tpanic(len(key))\n\t}\n\n\tc := &chacha20Poly1305Cipher{\n\t\tbuf: make([]byte, 256),\n\t}\n\n\tcopy(c.contentKey[:], key[:32])\n\tcopy(c.lengthKey[:], key[32:])\n\treturn c, nil\n}\n\nfunc (c *chacha20Poly1305Cipher) readCipherPacket(seqNum uint32, r io.Reader) ([]byte, error) {\n\tnonce := make([]byte, 12)\n\tbinary.BigEndian.PutUint32(nonce[8:], seqNum)\n\ts, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar polyKey, discardBuf [32]byte\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes\n\n\tencryptedLength := c.buf[:4]\n\tif _, err := io.ReadFull(r, encryptedLength); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar lenBytes [4]byte\n\tls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tls.XORKeyStream(lenBytes[:], encryptedLength)\n\n\tlength := binary.BigEndian.Uint32(lenBytes[:])\n\tif length > maxPacket {\n\t\treturn nil, errors.New(\"ssh: invalid packet length, packet too large\")\n\t}\n\n\tcontentEnd := 4 + length\n\tpacketEnd := contentEnd + poly1305.TagSize\n\tif uint32(cap(c.buf)) < packetEnd {\n\t\tc.buf = make([]byte, packetEnd)\n\t\tcopy(c.buf[:], encryptedLength)\n\t} else {\n\t\tc.buf = c.buf[:packetEnd]\n\t}\n\n\tif _, err := io.ReadFull(r, c.buf[4:packetEnd]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar mac [poly1305.TagSize]byte\n\tcopy(mac[:], c.buf[contentEnd:packetEnd])\n\tif !poly1305.Verify(&mac, c.buf[:contentEnd], &polyKey) {\n\t\treturn nil, errors.New(\"ssh: MAC failure\")\n\t}\n\n\tplain := c.buf[4:contentEnd]\n\ts.XORKeyStream(plain, plain)\n\n\tif len(plain) == 0 {\n\t\treturn nil, errors.New(\"ssh: empty packet\")\n\t}\n\n\tpadding := plain[0]\n\tif padding < 4 {\n\t\t// padding is a byte, so it automatically satisfies\n\t\t// the maximum size, which is 255.\n\t\treturn nil, fmt.Errorf(\"ssh: illegal padding %d\", padding)\n\t}\n\n\tif int(padding)+1 >= len(plain) {\n\t\treturn nil, fmt.Errorf(\"ssh: padding %d too large\", padding)\n\t}\n\n\tplain = plain[1 : len(plain)-int(padding)]\n\n\treturn plain, nil\n}\n\nfunc (c *chacha20Poly1305Cipher) writeCipherPacket(seqNum uint32, w io.Writer, rand io.Reader, payload []byte) error {\n\tnonce := make([]byte, 12)\n\tbinary.BigEndian.PutUint32(nonce[8:], seqNum)\n\ts, err := chacha20.NewUnauthenticatedCipher(c.contentKey[:], nonce)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar polyKey, discardBuf [32]byte\n\ts.XORKeyStream(polyKey[:], polyKey[:])\n\ts.XORKeyStream(discardBuf[:], discardBuf[:]) // skip the next 32 bytes\n\n\t// There is no blocksize, so fall back to multiple of 8 byte\n\t// padding, as described in RFC 4253, Sec 6.\n\tconst packetSizeMultiple = 8\n\n\tpadding := packetSizeMultiple - (1+len(payload))%packetSizeMultiple\n\tif padding < 4 {\n\t\tpadding += packetSizeMultiple\n\t}\n\n\t// size (4 bytes), padding (1), payload, padding, tag.\n\ttotalLength := 4 + 1 + len(payload) + padding + poly1305.TagSize\n\tif cap(c.buf) < totalLength {\n\t\tc.buf = make([]byte, totalLength)\n\t} else {\n\t\tc.buf = c.buf[:totalLength]\n\t}\n\n\tbinary.BigEndian.PutUint32(c.buf, uint32(1+len(payload)+padding))\n\tls, err := chacha20.NewUnauthenticatedCipher(c.lengthKey[:], nonce)\n\tif err != nil {\n\t\treturn err\n\t}\n\tls.XORKeyStream(c.buf, c.buf[:4])\n\tc.buf[4] = byte(padding)\n\tcopy(c.buf[5:], payload)\n\tpacketEnd := 5 + len(payload) + padding\n\tif _, err := io.ReadFull(rand, c.buf[5+len(payload):packetEnd]); err != nil {\n\t\treturn err\n\t}\n\n\ts.XORKeyStream(c.buf[4:], c.buf[4:packetEnd])\n\n\tvar mac [poly1305.TagSize]byte\n\tpoly1305.Sum(&mac, c.buf[:packetEnd], &polyKey)\n\n\tcopy(c.buf[packetEnd:], mac[:])\n\n\tif _, err := w.Write(c.buf); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/client.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"net\"\n\t\"os\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Client implements a traditional SSH client that supports shells,\n// subprocesses, TCP port/streamlocal forwarding and tunneled dialing.\ntype Client struct {\n\tConn\n\n\thandleForwardsOnce sync.Once // guards calling (*Client).handleForwards\n\n\tforwards        forwardList // forwarded tcpip connections from the remote side\n\tmu              sync.Mutex\n\tchannelHandlers map[string]chan NewChannel\n}\n\n// HandleChannelOpen returns a channel on which NewChannel requests\n// for the given type are sent. If the type already is being handled,\n// nil is returned. The channel is closed when the connection is closed.\nfunc (c *Client) HandleChannelOpen(channelType string) <-chan NewChannel {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.channelHandlers == nil {\n\t\t// The SSH channel has been closed.\n\t\tc := make(chan NewChannel)\n\t\tclose(c)\n\t\treturn c\n\t}\n\n\tch := c.channelHandlers[channelType]\n\tif ch != nil {\n\t\treturn nil\n\t}\n\n\tch = make(chan NewChannel, chanSize)\n\tc.channelHandlers[channelType] = ch\n\treturn ch\n}\n\n// NewClient creates a Client on top of the given connection.\nfunc NewClient(c Conn, chans <-chan NewChannel, reqs <-chan *Request) *Client {\n\tconn := &Client{\n\t\tConn:            c,\n\t\tchannelHandlers: make(map[string]chan NewChannel, 1),\n\t}\n\n\tgo conn.handleGlobalRequests(reqs)\n\tgo conn.handleChannelOpens(chans)\n\tgo func() {\n\t\tconn.Wait()\n\t\tconn.forwards.closeAll()\n\t}()\n\treturn conn\n}\n\n// NewClientConn establishes an authenticated SSH connection using c\n// as the underlying transport.  The Request and NewChannel channels\n// must be serviced or the connection will hang.\nfunc NewClientConn(c net.Conn, addr string, config *ClientConfig) (Conn, <-chan NewChannel, <-chan *Request, error) {\n\tfullConf := *config\n\tfullConf.SetDefaults()\n\tif fullConf.HostKeyCallback == nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, errors.New(\"ssh: must specify HostKeyCallback\")\n\t}\n\n\tconn := &connection{\n\t\tsshConn: sshConn{conn: c, user: fullConf.User},\n\t}\n\n\tif err := conn.clientHandshake(addr, &fullConf); err != nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, fmt.Errorf(\"ssh: handshake failed: %w\", err)\n\t}\n\tconn.mux = newMux(conn.transport)\n\treturn conn, conn.mux.incomingChannels, conn.mux.incomingRequests, nil\n}\n\n// clientHandshake performs the client side key exchange. See RFC 4253 Section\n// 7.\nfunc (c *connection) clientHandshake(dialAddress string, config *ClientConfig) error {\n\tif config.ClientVersion != \"\" {\n\t\tc.clientVersion = []byte(config.ClientVersion)\n\t} else {\n\t\tc.clientVersion = []byte(packageVersion)\n\t}\n\tvar err error\n\tc.serverVersion, err = exchangeVersions(c.sshConn.conn, c.clientVersion)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc.transport = newClientTransport(\n\t\tnewTransport(c.sshConn.conn, config.Rand, true /* is client */),\n\t\tc.clientVersion, c.serverVersion, config, dialAddress, c.sshConn.RemoteAddr())\n\tif err := c.transport.waitSession(); err != nil {\n\t\treturn err\n\t}\n\n\tc.sessionID = c.transport.getSessionID()\n\treturn c.clientAuthenticate(config)\n}\n\n// verifyHostKeySignature verifies the host key obtained in the key exchange.\n// algo is the negotiated algorithm, and may be a certificate type.\nfunc verifyHostKeySignature(hostKey PublicKey, algo string, result *kexResult) error {\n\tsig, rest, ok := parseSignatureBody(result.Signature)\n\tif len(rest) > 0 || !ok {\n\t\treturn errors.New(\"ssh: signature parse error\")\n\t}\n\n\tif a := underlyingAlgo(algo); sig.Format != a {\n\t\treturn fmt.Errorf(\"ssh: invalid signature algorithm %q, expected %q\", sig.Format, a)\n\t}\n\n\treturn hostKey.Verify(result.H, sig)\n}\n\n// NewSession opens a new Session for this client. (A session is a remote\n// execution of a program.)\nfunc (c *Client) NewSession() (*Session, error) {\n\tch, in, err := c.OpenChannel(\"session\", nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newSession(ch, in)\n}\n\nfunc (c *Client) handleGlobalRequests(incoming <-chan *Request) {\n\tfor r := range incoming {\n\t\t// This handles keepalive messages and matches\n\t\t// the behaviour of OpenSSH.\n\t\tr.Reply(false, nil)\n\t}\n}\n\n// handleChannelOpens channel open messages from the remote side.\nfunc (c *Client) handleChannelOpens(in <-chan NewChannel) {\n\tfor ch := range in {\n\t\tc.mu.Lock()\n\t\thandler := c.channelHandlers[ch.ChannelType()]\n\t\tc.mu.Unlock()\n\n\t\tif handler != nil {\n\t\t\thandler <- ch\n\t\t} else {\n\t\t\tch.Reject(UnknownChannelType, fmt.Sprintf(\"unknown channel type: %v\", ch.ChannelType()))\n\t\t}\n\t}\n\n\tc.mu.Lock()\n\tfor _, ch := range c.channelHandlers {\n\t\tclose(ch)\n\t}\n\tc.channelHandlers = nil\n\tc.mu.Unlock()\n}\n\n// Dial starts a client connection to the given SSH server. It is a\n// convenience function that connects to the given network address,\n// initiates the SSH handshake, and then sets up a Client.  For access\n// to incoming channels and requests, use net.Dial with NewClientConn\n// instead.\nfunc Dial(network, addr string, config *ClientConfig) (*Client, error) {\n\tconn, err := net.DialTimeout(network, addr, config.Timeout)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc, chans, reqs, err := NewClientConn(conn, addr, config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn NewClient(c, chans, reqs), nil\n}\n\n// HostKeyCallback is the function type used for verifying server\n// keys.  A HostKeyCallback must return nil if the host key is OK, or\n// an error to reject it. It receives the hostname as passed to Dial\n// or NewClientConn. The remote address is the RemoteAddr of the\n// net.Conn underlying the SSH connection.\ntype HostKeyCallback func(hostname string, remote net.Addr, key PublicKey) error\n\n// BannerCallback is the function type used for treat the banner sent by\n// the server. A BannerCallback receives the message sent by the remote server.\ntype BannerCallback func(message string) error\n\n// A ClientConfig structure is used to configure a Client. It must not be\n// modified after having been passed to an SSH function.\ntype ClientConfig struct {\n\t// Config contains configuration that is shared between clients and\n\t// servers.\n\tConfig\n\n\t// User contains the username to authenticate as.\n\tUser string\n\n\t// Auth contains possible authentication methods to use with the\n\t// server. Only the first instance of a particular RFC 4252 method will\n\t// be used during authentication.\n\tAuth []AuthMethod\n\n\t// HostKeyCallback is called during the cryptographic\n\t// handshake to validate the server's host key. The client\n\t// configuration must supply this callback for the connection\n\t// to succeed. The functions InsecureIgnoreHostKey or\n\t// FixedHostKey can be used for simplistic host key checks.\n\tHostKeyCallback HostKeyCallback\n\n\t// BannerCallback is called during the SSH dance to display a custom\n\t// server's message. The client configuration can supply this callback to\n\t// handle it as wished. The function BannerDisplayStderr can be used for\n\t// simplistic display on Stderr.\n\tBannerCallback BannerCallback\n\n\t// ClientVersion contains the version identification string that will\n\t// be used for the connection. If empty, a reasonable default is used.\n\tClientVersion string\n\n\t// HostKeyAlgorithms lists the public key algorithms that the client will\n\t// accept from the server for host key authentication, in order of\n\t// preference. If empty, a reasonable default is used. Any\n\t// string returned from a PublicKey.Type method may be used, or\n\t// any of the CertAlgo and KeyAlgo constants.\n\tHostKeyAlgorithms []string\n\n\t// Timeout is the maximum amount of time for the TCP connection to establish.\n\t//\n\t// A Timeout of zero means no timeout.\n\tTimeout time.Duration\n}\n\n// InsecureIgnoreHostKey returns a function that can be used for\n// ClientConfig.HostKeyCallback to accept any host key. It should\n// not be used for production code.\nfunc InsecureIgnoreHostKey() HostKeyCallback {\n\treturn func(hostname string, remote net.Addr, key PublicKey) error {\n\t\treturn nil\n\t}\n}\n\ntype fixedHostKey struct {\n\tkey PublicKey\n}\n\nfunc (f *fixedHostKey) check(hostname string, remote net.Addr, key PublicKey) error {\n\tif f.key == nil {\n\t\treturn fmt.Errorf(\"ssh: required host key was nil\")\n\t}\n\tif !bytes.Equal(key.Marshal(), f.key.Marshal()) {\n\t\treturn fmt.Errorf(\"ssh: host key mismatch\")\n\t}\n\treturn nil\n}\n\n// FixedHostKey returns a function for use in\n// ClientConfig.HostKeyCallback to accept only a specific host key.\nfunc FixedHostKey(key PublicKey) HostKeyCallback {\n\thk := &fixedHostKey{key}\n\treturn hk.check\n}\n\n// BannerDisplayStderr returns a function that can be used for\n// ClientConfig.BannerCallback to display banners on os.Stderr.\nfunc BannerDisplayStderr() BannerCallback {\n\treturn func(banner string) error {\n\t\t_, err := os.Stderr.WriteString(banner)\n\n\t\treturn err\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/client_auth.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strings\"\n)\n\ntype authResult int\n\nconst (\n\tauthFailure authResult = iota\n\tauthPartialSuccess\n\tauthSuccess\n)\n\n// clientAuthenticate authenticates with the remote server. See RFC 4252.\nfunc (c *connection) clientAuthenticate(config *ClientConfig) error {\n\t// initiate user auth session\n\tif err := c.transport.writePacket(Marshal(&serviceRequestMsg{serviceUserAuth})); err != nil {\n\t\treturn err\n\t}\n\tpacket, err := c.transport.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\t// The server may choose to send a SSH_MSG_EXT_INFO at this point (if we\n\t// advertised willingness to receive one, which we always do) or not. See\n\t// RFC 8308, Section 2.4.\n\textensions := make(map[string][]byte)\n\tif len(packet) > 0 && packet[0] == msgExtInfo {\n\t\tvar extInfo extInfoMsg\n\t\tif err := Unmarshal(packet, &extInfo); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tpayload := extInfo.Payload\n\t\tfor i := uint32(0); i < extInfo.NumExtensions; i++ {\n\t\t\tname, rest, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn parseError(msgExtInfo)\n\t\t\t}\n\t\t\tvalue, rest, ok := parseString(rest)\n\t\t\tif !ok {\n\t\t\t\treturn parseError(msgExtInfo)\n\t\t\t}\n\t\t\textensions[string(name)] = value\n\t\t\tpayload = rest\n\t\t}\n\t\tpacket, err = c.transport.readPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tvar serviceAccept serviceAcceptMsg\n\tif err := Unmarshal(packet, &serviceAccept); err != nil {\n\t\treturn err\n\t}\n\n\t// during the authentication phase the client first attempts the \"none\" method\n\t// then any untried methods suggested by the server.\n\tvar tried []string\n\tvar lastMethods []string\n\n\tsessionID := c.transport.getSessionID()\n\tfor auth := AuthMethod(new(noneAuth)); auth != nil; {\n\t\tok, methods, err := auth.auth(sessionID, config.User, c.transport, config.Rand, extensions)\n\t\tif err != nil {\n\t\t\t// We return the error later if there is no other method left to\n\t\t\t// try.\n\t\t\tok = authFailure\n\t\t}\n\t\tif ok == authSuccess {\n\t\t\t// success\n\t\t\treturn nil\n\t\t} else if ok == authFailure {\n\t\t\tif m := auth.method(); !contains(tried, m) {\n\t\t\t\ttried = append(tried, m)\n\t\t\t}\n\t\t}\n\t\tif methods == nil {\n\t\t\tmethods = lastMethods\n\t\t}\n\t\tlastMethods = methods\n\n\t\tauth = nil\n\n\tfindNext:\n\t\tfor _, a := range config.Auth {\n\t\t\tcandidateMethod := a.method()\n\t\t\tif contains(tried, candidateMethod) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfor _, meth := range methods {\n\t\t\t\tif meth == candidateMethod {\n\t\t\t\t\tauth = a\n\t\t\t\t\tbreak findNext\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif auth == nil && err != nil {\n\t\t\t// We have an error and there are no other authentication methods to\n\t\t\t// try, so we return it.\n\t\t\treturn err\n\t\t}\n\t}\n\treturn fmt.Errorf(\"ssh: unable to authenticate, attempted methods %v, no supported methods remain\", tried)\n}\n\nfunc contains(list []string, e string) bool {\n\tfor _, s := range list {\n\t\tif s == e {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// An AuthMethod represents an instance of an RFC 4252 authentication method.\ntype AuthMethod interface {\n\t// auth authenticates user over transport t.\n\t// Returns true if authentication is successful.\n\t// If authentication is not successful, a []string of alternative\n\t// method names is returned. If the slice is nil, it will be ignored\n\t// and the previous set of possible methods will be reused.\n\tauth(session []byte, user string, p packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error)\n\n\t// method returns the RFC 4252 method name.\n\tmethod() string\n}\n\n// \"none\" authentication, RFC 4252 section 5.2.\ntype noneAuth int\n\nfunc (n *noneAuth) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\tif err := c.writePacket(Marshal(&userAuthRequestMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  \"none\",\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\treturn handleAuthResponse(c)\n}\n\nfunc (n *noneAuth) method() string {\n\treturn \"none\"\n}\n\n// passwordCallback is an AuthMethod that fetches the password through\n// a function call, e.g. by prompting the user.\ntype passwordCallback func() (password string, err error)\n\nfunc (cb passwordCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\ttype passwordAuthMsg struct {\n\t\tUser     string `sshtype:\"50\"`\n\t\tService  string\n\t\tMethod   string\n\t\tReply    bool\n\t\tPassword string\n\t}\n\n\tpw, err := cb()\n\t// REVIEW NOTE: is there a need to support skipping a password attempt?\n\t// The program may only find out that the user doesn't have a password\n\t// when prompting.\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\tif err := c.writePacket(Marshal(&passwordAuthMsg{\n\t\tUser:     user,\n\t\tService:  serviceSSH,\n\t\tMethod:   cb.method(),\n\t\tReply:    false,\n\t\tPassword: pw,\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\treturn handleAuthResponse(c)\n}\n\nfunc (cb passwordCallback) method() string {\n\treturn \"password\"\n}\n\n// Password returns an AuthMethod using the given password.\nfunc Password(secret string) AuthMethod {\n\treturn passwordCallback(func() (string, error) { return secret, nil })\n}\n\n// PasswordCallback returns an AuthMethod that uses a callback for\n// fetching a password.\nfunc PasswordCallback(prompt func() (secret string, err error)) AuthMethod {\n\treturn passwordCallback(prompt)\n}\n\ntype publickeyAuthMsg struct {\n\tUser    string `sshtype:\"50\"`\n\tService string\n\tMethod  string\n\t// HasSig indicates to the receiver packet that the auth request is signed and\n\t// should be used for authentication of the request.\n\tHasSig   bool\n\tAlgoname string\n\tPubKey   []byte\n\t// Sig is tagged with \"rest\" so Marshal will exclude it during\n\t// validateKey\n\tSig []byte `ssh:\"rest\"`\n}\n\n// publicKeyCallback is an AuthMethod that uses a set of key\n// pairs for authentication.\ntype publicKeyCallback func() ([]Signer, error)\n\nfunc (cb publicKeyCallback) method() string {\n\treturn \"publickey\"\n}\n\nfunc pickSignatureAlgorithm(signer Signer, extensions map[string][]byte) (MultiAlgorithmSigner, string, error) {\n\tvar as MultiAlgorithmSigner\n\tkeyFormat := signer.PublicKey().Type()\n\n\t// If the signer implements MultiAlgorithmSigner we use the algorithms it\n\t// support, if it implements AlgorithmSigner we assume it supports all\n\t// algorithms, otherwise only the key format one.\n\tswitch s := signer.(type) {\n\tcase MultiAlgorithmSigner:\n\t\tas = s\n\tcase AlgorithmSigner:\n\t\tas = &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner:     s,\n\t\t\tsupportedAlgorithms: algorithmsForKeyFormat(underlyingAlgo(keyFormat)),\n\t\t}\n\tdefault:\n\t\tas = &multiAlgorithmSigner{\n\t\t\tAlgorithmSigner:     algorithmSignerWrapper{signer},\n\t\t\tsupportedAlgorithms: []string{underlyingAlgo(keyFormat)},\n\t\t}\n\t}\n\n\tgetFallbackAlgo := func() (string, error) {\n\t\t// Fallback to use if there is no \"server-sig-algs\" extension or a\n\t\t// common algorithm cannot be found. We use the public key format if the\n\t\t// MultiAlgorithmSigner supports it, otherwise we return an error.\n\t\tif !contains(as.Algorithms(), underlyingAlgo(keyFormat)) {\n\t\t\treturn \"\", fmt.Errorf(\"ssh: no common public key signature algorithm, server only supports %q for key type %q, signer only supports %v\",\n\t\t\t\tunderlyingAlgo(keyFormat), keyFormat, as.Algorithms())\n\t\t}\n\t\treturn keyFormat, nil\n\t}\n\n\textPayload, ok := extensions[\"server-sig-algs\"]\n\tif !ok {\n\t\t// If there is no \"server-sig-algs\" extension use the fallback\n\t\t// algorithm.\n\t\talgo, err := getFallbackAlgo()\n\t\treturn as, algo, err\n\t}\n\n\t// The server-sig-algs extension only carries underlying signature\n\t// algorithm, but we are trying to select a protocol-level public key\n\t// algorithm, which might be a certificate type. Extend the list of server\n\t// supported algorithms to include the corresponding certificate algorithms.\n\tserverAlgos := strings.Split(string(extPayload), \",\")\n\tfor _, algo := range serverAlgos {\n\t\tif certAlgo, ok := certificateAlgo(algo); ok {\n\t\t\tserverAlgos = append(serverAlgos, certAlgo)\n\t\t}\n\t}\n\n\t// Filter algorithms based on those supported by MultiAlgorithmSigner.\n\tvar keyAlgos []string\n\tfor _, algo := range algorithmsForKeyFormat(keyFormat) {\n\t\tif contains(as.Algorithms(), underlyingAlgo(algo)) {\n\t\t\tkeyAlgos = append(keyAlgos, algo)\n\t\t}\n\t}\n\n\talgo, err := findCommon(\"public key signature algorithm\", keyAlgos, serverAlgos)\n\tif err != nil {\n\t\t// If there is no overlap, return the fallback algorithm to support\n\t\t// servers that fail to list all supported algorithms.\n\t\talgo, err := getFallbackAlgo()\n\t\treturn as, algo, err\n\t}\n\treturn as, algo, nil\n}\n\nfunc (cb publicKeyCallback) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (authResult, []string, error) {\n\t// Authentication is performed by sending an enquiry to test if a key is\n\t// acceptable to the remote. If the key is acceptable, the client will\n\t// attempt to authenticate with the valid key.  If not the client will repeat\n\t// the process with the remaining keys.\n\n\tsigners, err := cb()\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tvar methods []string\n\tvar errSigAlgo error\n\n\torigSignersLen := len(signers)\n\tfor idx := 0; idx < len(signers); idx++ {\n\t\tsigner := signers[idx]\n\t\tpub := signer.PublicKey()\n\t\tas, algo, err := pickSignatureAlgorithm(signer, extensions)\n\t\tif err != nil && errSigAlgo == nil {\n\t\t\t// If we cannot negotiate a signature algorithm store the first\n\t\t\t// error so we can return it to provide a more meaningful message if\n\t\t\t// no other signers work.\n\t\t\terrSigAlgo = err\n\t\t\tcontinue\n\t\t}\n\t\tok, err := validateKey(pub, algo, user, c)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\t// OpenSSH 7.2-7.7 advertises support for rsa-sha2-256 and rsa-sha2-512\n\t\t// in the \"server-sig-algs\" extension but doesn't support these\n\t\t// algorithms for certificate authentication, so if the server rejects\n\t\t// the key try to use the obtained algorithm as if \"server-sig-algs\" had\n\t\t// not been implemented if supported from the algorithm signer.\n\t\tif !ok && idx < origSignersLen && isRSACert(algo) && algo != CertAlgoRSAv01 {\n\t\t\tif contains(as.Algorithms(), KeyAlgoRSA) {\n\t\t\t\t// We retry using the compat algorithm after all signers have\n\t\t\t\t// been tried normally.\n\t\t\t\tsigners = append(signers, &multiAlgorithmSigner{\n\t\t\t\t\tAlgorithmSigner:     as,\n\t\t\t\t\tsupportedAlgorithms: []string{KeyAlgoRSA},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\n\t\tpubKey := pub.Marshal()\n\t\tdata := buildDataSignedForAuth(session, userAuthRequestMsg{\n\t\t\tUser:    user,\n\t\t\tService: serviceSSH,\n\t\t\tMethod:  cb.method(),\n\t\t}, algo, pubKey)\n\t\tsign, err := as.SignWithAlgorithm(rand, data, underlyingAlgo(algo))\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// manually wrap the serialized signature in a string\n\t\ts := Marshal(sign)\n\t\tsig := make([]byte, stringLength(len(s)))\n\t\tmarshalString(sig, s)\n\t\tmsg := publickeyAuthMsg{\n\t\t\tUser:     user,\n\t\t\tService:  serviceSSH,\n\t\t\tMethod:   cb.method(),\n\t\t\tHasSig:   true,\n\t\t\tAlgoname: algo,\n\t\t\tPubKey:   pubKey,\n\t\t\tSig:      sig,\n\t\t}\n\t\tp := Marshal(&msg)\n\t\tif err := c.writePacket(p); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tvar success authResult\n\t\tsuccess, methods, err = handleAuthResponse(c)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// If authentication succeeds or the list of available methods does not\n\t\t// contain the \"publickey\" method, do not attempt to authenticate with any\n\t\t// other keys.  According to RFC 4252 Section 7, the latter can occur when\n\t\t// additional authentication methods are required.\n\t\tif success == authSuccess || !contains(methods, cb.method()) {\n\t\t\treturn success, methods, err\n\t\t}\n\t}\n\n\treturn authFailure, methods, errSigAlgo\n}\n\n// validateKey validates the key provided is acceptable to the server.\nfunc validateKey(key PublicKey, algo string, user string, c packetConn) (bool, error) {\n\tpubKey := key.Marshal()\n\tmsg := publickeyAuthMsg{\n\t\tUser:     user,\n\t\tService:  serviceSSH,\n\t\tMethod:   \"publickey\",\n\t\tHasSig:   false,\n\t\tAlgoname: algo,\n\t\tPubKey:   pubKey,\n\t}\n\tif err := c.writePacket(Marshal(&msg)); err != nil {\n\t\treturn false, err\n\t}\n\n\treturn confirmKeyAck(key, algo, c)\n}\n\nfunc confirmKeyAck(key PublicKey, algo string, c packetConn) (bool, error) {\n\tpubKey := key.Marshal()\n\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\tcase msgUserAuthPubKeyOk:\n\t\t\tvar msg userAuthPubKeyOkMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\tif msg.Algo != algo || !bytes.Equal(msg.PubKey, pubKey) {\n\t\t\t\treturn false, nil\n\t\t\t}\n\t\t\treturn true, nil\n\t\tcase msgUserAuthFailure:\n\t\t\treturn false, nil\n\t\tdefault:\n\t\t\treturn false, unexpectedMessageError(msgUserAuthPubKeyOk, packet[0])\n\t\t}\n\t}\n}\n\n// PublicKeys returns an AuthMethod that uses the given key\n// pairs.\nfunc PublicKeys(signers ...Signer) AuthMethod {\n\treturn publicKeyCallback(func() ([]Signer, error) { return signers, nil })\n}\n\n// PublicKeysCallback returns an AuthMethod that runs the given\n// function to obtain a list of key pairs.\nfunc PublicKeysCallback(getSigners func() (signers []Signer, err error)) AuthMethod {\n\treturn publicKeyCallback(getSigners)\n}\n\n// handleAuthResponse returns whether the preceding authentication request succeeded\n// along with a list of remaining authentication methods to try next and\n// an error if an unexpected response was received.\nfunc handleAuthResponse(c packetConn) (authResult, []string, error) {\n\tgotMsgExtInfo := false\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\tcase msgExtInfo:\n\t\t\t// Ignore post-authentication RFC 8308 extensions, once.\n\t\t\tif gotMsgExtInfo {\n\t\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0])\n\t\t\t}\n\t\t\tgotMsgExtInfo = true\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthSuccess:\n\t\t\treturn authSuccess, nil, nil\n\t\tdefault:\n\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthSuccess, packet[0])\n\t\t}\n\t}\n}\n\nfunc handleBannerResponse(c packetConn, packet []byte) error {\n\tvar msg userAuthBannerMsg\n\tif err := Unmarshal(packet, &msg); err != nil {\n\t\treturn err\n\t}\n\n\ttransport, ok := c.(*handshakeTransport)\n\tif !ok {\n\t\treturn nil\n\t}\n\n\tif transport.bannerCallback != nil {\n\t\treturn transport.bannerCallback(msg.Message)\n\t}\n\n\treturn nil\n}\n\n// KeyboardInteractiveChallenge should print questions, optionally\n// disabling echoing (e.g. for passwords), and return all the answers.\n// Challenge may be called multiple times in a single session. After\n// successful authentication, the server may send a challenge with no\n// questions, for which the name and instruction messages should be\n// printed.  RFC 4256 section 3.3 details how the UI should behave for\n// both CLI and GUI environments.\ntype KeyboardInteractiveChallenge func(name, instruction string, questions []string, echos []bool) (answers []string, err error)\n\n// KeyboardInteractive returns an AuthMethod using a prompt/response\n// sequence controlled by the server.\nfunc KeyboardInteractive(challenge KeyboardInteractiveChallenge) AuthMethod {\n\treturn challenge\n}\n\nfunc (cb KeyboardInteractiveChallenge) method() string {\n\treturn \"keyboard-interactive\"\n}\n\nfunc (cb KeyboardInteractiveChallenge) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\ttype initiateMsg struct {\n\t\tUser       string `sshtype:\"50\"`\n\t\tService    string\n\t\tMethod     string\n\t\tLanguage   string\n\t\tSubmethods string\n\t}\n\n\tif err := c.writePacket(Marshal(&initiateMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  \"keyboard-interactive\",\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\n\tgotMsgExtInfo := false\n\tfor {\n\t\tpacket, err := c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// like handleAuthResponse, but with less options.\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthBanner:\n\t\t\tif err := handleBannerResponse(c, packet); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tcontinue\n\t\tcase msgExtInfo:\n\t\t\t// Ignore post-authentication RFC 8308 extensions, once.\n\t\t\tif gotMsgExtInfo {\n\t\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])\n\t\t\t}\n\t\t\tgotMsgExtInfo = true\n\t\t\tcontinue\n\t\tcase msgUserAuthInfoRequest:\n\t\t\t// OK\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthSuccess:\n\t\t\treturn authSuccess, nil, nil\n\t\tdefault:\n\t\t\treturn authFailure, nil, unexpectedMessageError(msgUserAuthInfoRequest, packet[0])\n\t\t}\n\n\t\tvar msg userAuthInfoRequestMsg\n\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\t// Manually unpack the prompt/echo pairs.\n\t\trest := msg.Prompts\n\t\tvar prompts []string\n\t\tvar echos []bool\n\t\tfor i := 0; i < int(msg.NumPrompts); i++ {\n\t\t\tprompt, r, ok := parseString(rest)\n\t\t\tif !ok || len(r) == 0 {\n\t\t\t\treturn authFailure, nil, errors.New(\"ssh: prompt format error\")\n\t\t\t}\n\t\t\tprompts = append(prompts, string(prompt))\n\t\t\techos = append(echos, r[0] != 0)\n\t\t\trest = r[1:]\n\t\t}\n\n\t\tif len(rest) != 0 {\n\t\t\treturn authFailure, nil, errors.New(\"ssh: extra data following keyboard-interactive pairs\")\n\t\t}\n\n\t\tanswers, err := cb(msg.Name, msg.Instruction, prompts, echos)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\n\t\tif len(answers) != len(prompts) {\n\t\t\treturn authFailure, nil, fmt.Errorf(\"ssh: incorrect number of answers from keyboard-interactive callback %d (expected %d)\", len(answers), len(prompts))\n\t\t}\n\t\tresponseLength := 1 + 4\n\t\tfor _, a := range answers {\n\t\t\tresponseLength += stringLength(len(a))\n\t\t}\n\t\tserialized := make([]byte, responseLength)\n\t\tp := serialized\n\t\tp[0] = msgUserAuthInfoResponse\n\t\tp = p[1:]\n\t\tp = marshalUint32(p, uint32(len(answers)))\n\t\tfor _, a := range answers {\n\t\t\tp = marshalString(p, []byte(a))\n\t\t}\n\n\t\tif err := c.writePacket(serialized); err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t}\n}\n\ntype retryableAuthMethod struct {\n\tauthMethod AuthMethod\n\tmaxTries   int\n}\n\nfunc (r *retryableAuthMethod) auth(session []byte, user string, c packetConn, rand io.Reader, extensions map[string][]byte) (ok authResult, methods []string, err error) {\n\tfor i := 0; r.maxTries <= 0 || i < r.maxTries; i++ {\n\t\tok, methods, err = r.authMethod.auth(session, user, c, rand, extensions)\n\t\tif ok != authFailure || err != nil { // either success, partial success or error terminate\n\t\t\treturn ok, methods, err\n\t\t}\n\t}\n\treturn ok, methods, err\n}\n\nfunc (r *retryableAuthMethod) method() string {\n\treturn r.authMethod.method()\n}\n\n// RetryableAuthMethod is a decorator for other auth methods enabling them to\n// be retried up to maxTries before considering that AuthMethod itself failed.\n// If maxTries is <= 0, will retry indefinitely\n//\n// This is useful for interactive clients using challenge/response type\n// authentication (e.g. Keyboard-Interactive, Password, etc) where the user\n// could mistype their response resulting in the server issuing a\n// SSH_MSG_USERAUTH_FAILURE (rfc4252 #8 [password] and rfc4256 #3.4\n// [keyboard-interactive]); Without this decorator, the non-retryable\n// AuthMethod would be removed from future consideration, and never tried again\n// (and so the user would never be able to retry their entry).\nfunc RetryableAuthMethod(auth AuthMethod, maxTries int) AuthMethod {\n\treturn &retryableAuthMethod{authMethod: auth, maxTries: maxTries}\n}\n\n// GSSAPIWithMICAuthMethod is an AuthMethod with \"gssapi-with-mic\" authentication.\n// See RFC 4462 section 3\n// gssAPIClient is implementation of the GSSAPIClient interface, see the definition of the interface for details.\n// target is the server host you want to log in to.\nfunc GSSAPIWithMICAuthMethod(gssAPIClient GSSAPIClient, target string) AuthMethod {\n\tif gssAPIClient == nil {\n\t\tpanic(\"gss-api client must be not nil with enable gssapi-with-mic\")\n\t}\n\treturn &gssAPIWithMICCallback{gssAPIClient: gssAPIClient, target: target}\n}\n\ntype gssAPIWithMICCallback struct {\n\tgssAPIClient GSSAPIClient\n\ttarget       string\n}\n\nfunc (g *gssAPIWithMICCallback) auth(session []byte, user string, c packetConn, rand io.Reader, _ map[string][]byte) (authResult, []string, error) {\n\tm := &userAuthRequestMsg{\n\t\tUser:    user,\n\t\tService: serviceSSH,\n\t\tMethod:  g.method(),\n\t}\n\t// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST.\n\t// See RFC 4462 section 3.2.\n\tm.Payload = appendU32(m.Payload, 1)\n\tm.Payload = appendString(m.Payload, string(krb5OID))\n\tif err := c.writePacket(Marshal(m)); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\t// The server responds to the SSH_MSG_USERAUTH_REQUEST with either an\n\t// SSH_MSG_USERAUTH_FAILURE if none of the mechanisms are supported or\n\t// with an SSH_MSG_USERAUTH_GSSAPI_RESPONSE.\n\t// See RFC 4462 section 3.3.\n\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,so I don't want to check\n\t// selected mech if it is valid.\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tuserAuthGSSAPIResp := &userAuthGSSAPIResponse{}\n\tif err := Unmarshal(packet, userAuthGSSAPIResp); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\t// Start the loop into the exchange token.\n\t// See RFC 4462 section 3.4.\n\tvar token []byte\n\tdefer g.gssAPIClient.DeleteSecContext()\n\tfor {\n\t\t// Initiates the establishment of a security context between the application and a remote peer.\n\t\tnextToken, needContinue, err := g.gssAPIClient.InitSecContext(\"host@\"+g.target, token, false)\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tif len(nextToken) > 0 {\n\t\t\tif err := c.writePacket(Marshal(&userAuthGSSAPIToken{\n\t\t\t\tToken: nextToken,\n\t\t\t})); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t}\n\t\tif !needContinue {\n\t\t\tbreak\n\t\t}\n\t\tpacket, err = c.readPacket()\n\t\tif err != nil {\n\t\t\treturn authFailure, nil, err\n\t\t}\n\t\tswitch packet[0] {\n\t\tcase msgUserAuthFailure:\n\t\t\tvar msg userAuthFailureMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\tif msg.PartialSuccess {\n\t\t\t\treturn authPartialSuccess, msg.Methods, nil\n\t\t\t}\n\t\t\treturn authFailure, msg.Methods, nil\n\t\tcase msgUserAuthGSSAPIError:\n\t\t\tuserAuthGSSAPIErrorResp := &userAuthGSSAPIError{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPIErrorResp); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\treturn authFailure, nil, fmt.Errorf(\"GSS-API Error:\\n\"+\n\t\t\t\t\"Major Status: %d\\n\"+\n\t\t\t\t\"Minor Status: %d\\n\"+\n\t\t\t\t\"Error Message: %s\\n\", userAuthGSSAPIErrorResp.MajorStatus, userAuthGSSAPIErrorResp.MinorStatus,\n\t\t\t\tuserAuthGSSAPIErrorResp.Message)\n\t\tcase msgUserAuthGSSAPIToken:\n\t\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\t\treturn authFailure, nil, err\n\t\t\t}\n\t\t\ttoken = userAuthGSSAPITokenReq.Token\n\t\t}\n\t}\n\t// Binding Encryption Keys.\n\t// See RFC 4462 section 3.5.\n\tmicField := buildMIC(string(session), user, \"ssh-connection\", \"gssapi-with-mic\")\n\tmicToken, err := g.gssAPIClient.GetMIC(micField)\n\tif err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\tif err := c.writePacket(Marshal(&userAuthGSSAPIMIC{\n\t\tMIC: micToken,\n\t})); err != nil {\n\t\treturn authFailure, nil, err\n\t}\n\treturn handleAuthResponse(c)\n}\n\nfunc (g *gssAPIWithMICCallback) method() string {\n\treturn \"gssapi-with-mic\"\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/common.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 ssh\n\nimport (\n\t\"crypto\"\n\t\"crypto/rand\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"sync\"\n\n\t_ \"crypto/sha1\"\n\t_ \"crypto/sha256\"\n\t_ \"crypto/sha512\"\n)\n\n// These are string constants in the SSH protocol.\nconst (\n\tcompressionNone = \"none\"\n\tserviceUserAuth = \"ssh-userauth\"\n\tserviceSSH      = \"ssh-connection\"\n)\n\n// supportedCiphers lists ciphers we support but might not recommend.\nvar supportedCiphers = []string{\n\t\"aes128-ctr\", \"aes192-ctr\", \"aes256-ctr\",\n\t\"aes128-gcm@openssh.com\", gcm256CipherID,\n\tchacha20Poly1305ID,\n\t\"arcfour256\", \"arcfour128\", \"arcfour\",\n\taes128cbcID,\n\ttripledescbcID,\n}\n\n// preferredCiphers specifies the default preference for ciphers.\nvar preferredCiphers = []string{\n\t\"aes128-gcm@openssh.com\", gcm256CipherID,\n\tchacha20Poly1305ID,\n\t\"aes128-ctr\", \"aes192-ctr\", \"aes256-ctr\",\n}\n\n// supportedKexAlgos specifies the supported key-exchange algorithms in\n// preference order.\nvar supportedKexAlgos = []string{\n\tkexAlgoCurve25519SHA256, kexAlgoCurve25519SHA256LibSSH,\n\t// P384 and P521 are not constant-time yet, but since we don't\n\t// reuse ephemeral keys, using them for ECDH should be OK.\n\tkexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521,\n\tkexAlgoDH14SHA256, kexAlgoDH16SHA512, kexAlgoDH14SHA1,\n\tkexAlgoDH1SHA1,\n}\n\n// serverForbiddenKexAlgos contains key exchange algorithms, that are forbidden\n// for the server half.\nvar serverForbiddenKexAlgos = map[string]struct{}{\n\tkexAlgoDHGEXSHA1:   {}, // server half implementation is only minimal to satisfy the automated tests\n\tkexAlgoDHGEXSHA256: {}, // server half implementation is only minimal to satisfy the automated tests\n}\n\n// preferredKexAlgos specifies the default preference for key-exchange\n// algorithms in preference order. The diffie-hellman-group16-sha512 algorithm\n// is disabled by default because it is a bit slower than the others.\nvar preferredKexAlgos = []string{\n\tkexAlgoCurve25519SHA256, kexAlgoCurve25519SHA256LibSSH,\n\tkexAlgoECDH256, kexAlgoECDH384, kexAlgoECDH521,\n\tkexAlgoDH14SHA256, kexAlgoDH14SHA1,\n}\n\n// supportedHostKeyAlgos specifies the supported host-key algorithms (i.e. methods\n// of authenticating servers) in preference order.\nvar supportedHostKeyAlgos = []string{\n\tCertAlgoRSASHA256v01, CertAlgoRSASHA512v01,\n\tCertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01,\n\tCertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoED25519v01,\n\n\tKeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521,\n\tKeyAlgoRSASHA256, KeyAlgoRSASHA512,\n\tKeyAlgoRSA, KeyAlgoDSA,\n\n\tKeyAlgoED25519,\n}\n\n// supportedMACs specifies a default set of MAC algorithms in preference order.\n// This is based on RFC 4253, section 6.4, but with hmac-md5 variants removed\n// because they have reached the end of their useful life.\nvar supportedMACs = []string{\n\t\"hmac-sha2-256-etm@openssh.com\", \"hmac-sha2-512-etm@openssh.com\", \"hmac-sha2-256\", \"hmac-sha2-512\", \"hmac-sha1\", \"hmac-sha1-96\",\n}\n\nvar supportedCompressions = []string{compressionNone}\n\n// hashFuncs keeps the mapping of supported signature algorithms to their\n// respective hashes needed for signing and verification.\nvar hashFuncs = map[string]crypto.Hash{\n\tKeyAlgoRSA:       crypto.SHA1,\n\tKeyAlgoRSASHA256: crypto.SHA256,\n\tKeyAlgoRSASHA512: crypto.SHA512,\n\tKeyAlgoDSA:       crypto.SHA1,\n\tKeyAlgoECDSA256:  crypto.SHA256,\n\tKeyAlgoECDSA384:  crypto.SHA384,\n\tKeyAlgoECDSA521:  crypto.SHA512,\n\t// KeyAlgoED25519 doesn't pre-hash.\n\tKeyAlgoSKECDSA256: crypto.SHA256,\n\tKeyAlgoSKED25519:  crypto.SHA256,\n}\n\n// algorithmsForKeyFormat returns the supported signature algorithms for a given\n// public key format (PublicKey.Type), in order of preference. See RFC 8332,\n// Section 2. See also the note in sendKexInit on backwards compatibility.\nfunc algorithmsForKeyFormat(keyFormat string) []string {\n\tswitch keyFormat {\n\tcase KeyAlgoRSA:\n\t\treturn []string{KeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA}\n\tcase CertAlgoRSAv01:\n\t\treturn []string{CertAlgoRSASHA256v01, CertAlgoRSASHA512v01, CertAlgoRSAv01}\n\tdefault:\n\t\treturn []string{keyFormat}\n\t}\n}\n\n// isRSA returns whether algo is a supported RSA algorithm, including certificate\n// algorithms.\nfunc isRSA(algo string) bool {\n\talgos := algorithmsForKeyFormat(KeyAlgoRSA)\n\treturn contains(algos, underlyingAlgo(algo))\n}\n\nfunc isRSACert(algo string) bool {\n\t_, ok := certKeyAlgoNames[algo]\n\tif !ok {\n\t\treturn false\n\t}\n\treturn isRSA(algo)\n}\n\n// supportedPubKeyAuthAlgos specifies the supported client public key\n// authentication algorithms. Note that this doesn't include certificate types\n// since those use the underlying algorithm. This list is sent to the client if\n// it supports the server-sig-algs extension. Order is irrelevant.\nvar supportedPubKeyAuthAlgos = []string{\n\tKeyAlgoED25519,\n\tKeyAlgoSKED25519, KeyAlgoSKECDSA256,\n\tKeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521,\n\tKeyAlgoRSASHA256, KeyAlgoRSASHA512, KeyAlgoRSA,\n\tKeyAlgoDSA,\n}\n\n// unexpectedMessageError results when the SSH message that we received didn't\n// match what we wanted.\nfunc unexpectedMessageError(expected, got uint8) error {\n\treturn fmt.Errorf(\"ssh: unexpected message type %d (expected %d)\", got, expected)\n}\n\n// parseError results from a malformed SSH message.\nfunc parseError(tag uint8) error {\n\treturn fmt.Errorf(\"ssh: parse error in message type %d\", tag)\n}\n\nfunc findCommon(what string, client []string, server []string) (common string, err error) {\n\tfor _, c := range client {\n\t\tfor _, s := range server {\n\t\t\tif c == s {\n\t\t\t\treturn c, nil\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\", fmt.Errorf(\"ssh: no common algorithm for %s; client offered: %v, server offered: %v\", what, client, server)\n}\n\n// directionAlgorithms records algorithm choices in one direction (either read or write)\ntype directionAlgorithms struct {\n\tCipher      string\n\tMAC         string\n\tCompression string\n}\n\n// rekeyBytes returns a rekeying intervals in bytes.\nfunc (a *directionAlgorithms) rekeyBytes() int64 {\n\t// According to RFC 4344 block ciphers should rekey after\n\t// 2^(BLOCKSIZE/4) blocks. For all AES flavors BLOCKSIZE is\n\t// 128.\n\tswitch a.Cipher {\n\tcase \"aes128-ctr\", \"aes192-ctr\", \"aes256-ctr\", gcm128CipherID, gcm256CipherID, aes128cbcID:\n\t\treturn 16 * (1 << 32)\n\n\t}\n\n\t// For others, stick with RFC 4253 recommendation to rekey after 1 Gb of data.\n\treturn 1 << 30\n}\n\nvar aeadCiphers = map[string]bool{\n\tgcm128CipherID:     true,\n\tgcm256CipherID:     true,\n\tchacha20Poly1305ID: true,\n}\n\ntype algorithms struct {\n\tkex     string\n\thostKey string\n\tw       directionAlgorithms\n\tr       directionAlgorithms\n}\n\nfunc findAgreedAlgorithms(isClient bool, clientKexInit, serverKexInit *kexInitMsg) (algs *algorithms, err error) {\n\tresult := &algorithms{}\n\n\tresult.kex, err = findCommon(\"key exchange\", clientKexInit.KexAlgos, serverKexInit.KexAlgos)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tresult.hostKey, err = findCommon(\"host key\", clientKexInit.ServerHostKeyAlgos, serverKexInit.ServerHostKeyAlgos)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc, ctos := &result.w, &result.r\n\tif isClient {\n\t\tctos, stoc = stoc, ctos\n\t}\n\n\tctos.Cipher, err = findCommon(\"client to server cipher\", clientKexInit.CiphersClientServer, serverKexInit.CiphersClientServer)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc.Cipher, err = findCommon(\"server to client cipher\", clientKexInit.CiphersServerClient, serverKexInit.CiphersServerClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif !aeadCiphers[ctos.Cipher] {\n\t\tctos.MAC, err = findCommon(\"client to server MAC\", clientKexInit.MACsClientServer, serverKexInit.MACsClientServer)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif !aeadCiphers[stoc.Cipher] {\n\t\tstoc.MAC, err = findCommon(\"server to client MAC\", clientKexInit.MACsServerClient, serverKexInit.MACsServerClient)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tctos.Compression, err = findCommon(\"client to server compression\", clientKexInit.CompressionClientServer, serverKexInit.CompressionClientServer)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tstoc.Compression, err = findCommon(\"server to client compression\", clientKexInit.CompressionServerClient, serverKexInit.CompressionServerClient)\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn result, nil\n}\n\n// If rekeythreshold is too small, we can't make any progress sending\n// stuff.\nconst minRekeyThreshold uint64 = 256\n\n// Config contains configuration data common to both ServerConfig and\n// ClientConfig.\ntype Config struct {\n\t// Rand provides the source of entropy for cryptographic\n\t// primitives. If Rand is nil, the cryptographic random reader\n\t// in package crypto/rand will be used.\n\tRand io.Reader\n\n\t// The maximum number of bytes sent or received after which a\n\t// new key is negotiated. It must be at least 256. If\n\t// unspecified, a size suitable for the chosen cipher is used.\n\tRekeyThreshold uint64\n\n\t// The allowed key exchanges algorithms. If unspecified then a default set\n\t// of algorithms is used. Unsupported values are silently ignored.\n\tKeyExchanges []string\n\n\t// The allowed cipher algorithms. If unspecified then a sensible default is\n\t// used. Unsupported values are silently ignored.\n\tCiphers []string\n\n\t// The allowed MAC algorithms. If unspecified then a sensible default is\n\t// used. Unsupported values are silently ignored.\n\tMACs []string\n}\n\n// SetDefaults sets sensible values for unset fields in config. This is\n// exported for testing: Configs passed to SSH functions are copied and have\n// default values set automatically.\nfunc (c *Config) SetDefaults() {\n\tif c.Rand == nil {\n\t\tc.Rand = rand.Reader\n\t}\n\tif c.Ciphers == nil {\n\t\tc.Ciphers = preferredCiphers\n\t}\n\tvar ciphers []string\n\tfor _, c := range c.Ciphers {\n\t\tif cipherModes[c] != nil {\n\t\t\t// Ignore the cipher if we have no cipherModes definition.\n\t\t\tciphers = append(ciphers, c)\n\t\t}\n\t}\n\tc.Ciphers = ciphers\n\n\tif c.KeyExchanges == nil {\n\t\tc.KeyExchanges = preferredKexAlgos\n\t}\n\tvar kexs []string\n\tfor _, k := range c.KeyExchanges {\n\t\tif kexAlgoMap[k] != nil {\n\t\t\t// Ignore the KEX if we have no kexAlgoMap definition.\n\t\t\tkexs = append(kexs, k)\n\t\t}\n\t}\n\tc.KeyExchanges = kexs\n\n\tif c.MACs == nil {\n\t\tc.MACs = supportedMACs\n\t}\n\tvar macs []string\n\tfor _, m := range c.MACs {\n\t\tif macModes[m] != nil {\n\t\t\t// Ignore the MAC if we have no macModes definition.\n\t\t\tmacs = append(macs, m)\n\t\t}\n\t}\n\tc.MACs = macs\n\n\tif c.RekeyThreshold == 0 {\n\t\t// cipher specific default\n\t} else if c.RekeyThreshold < minRekeyThreshold {\n\t\tc.RekeyThreshold = minRekeyThreshold\n\t} else if c.RekeyThreshold >= math.MaxInt64 {\n\t\t// Avoid weirdness if somebody uses -1 as a threshold.\n\t\tc.RekeyThreshold = math.MaxInt64\n\t}\n}\n\n// buildDataSignedForAuth returns the data that is signed in order to prove\n// possession of a private key. See RFC 4252, section 7. algo is the advertised\n// algorithm, and may be a certificate type.\nfunc buildDataSignedForAuth(sessionID []byte, req userAuthRequestMsg, algo string, pubKey []byte) []byte {\n\tdata := struct {\n\t\tSession []byte\n\t\tType    byte\n\t\tUser    string\n\t\tService string\n\t\tMethod  string\n\t\tSign    bool\n\t\tAlgo    string\n\t\tPubKey  []byte\n\t}{\n\t\tsessionID,\n\t\tmsgUserAuthRequest,\n\t\treq.User,\n\t\treq.Service,\n\t\treq.Method,\n\t\ttrue,\n\t\talgo,\n\t\tpubKey,\n\t}\n\treturn Marshal(data)\n}\n\nfunc appendU16(buf []byte, n uint16) []byte {\n\treturn append(buf, byte(n>>8), byte(n))\n}\n\nfunc appendU32(buf []byte, n uint32) []byte {\n\treturn append(buf, byte(n>>24), byte(n>>16), byte(n>>8), byte(n))\n}\n\nfunc appendU64(buf []byte, n uint64) []byte {\n\treturn append(buf,\n\t\tbyte(n>>56), byte(n>>48), byte(n>>40), byte(n>>32),\n\t\tbyte(n>>24), byte(n>>16), byte(n>>8), byte(n))\n}\n\nfunc appendInt(buf []byte, n int) []byte {\n\treturn appendU32(buf, uint32(n))\n}\n\nfunc appendString(buf []byte, s string) []byte {\n\tbuf = appendU32(buf, uint32(len(s)))\n\tbuf = append(buf, s...)\n\treturn buf\n}\n\nfunc appendBool(buf []byte, b bool) []byte {\n\tif b {\n\t\treturn append(buf, 1)\n\t}\n\treturn append(buf, 0)\n}\n\n// newCond is a helper to hide the fact that there is no usable zero\n// value for sync.Cond.\nfunc newCond() *sync.Cond { return sync.NewCond(new(sync.Mutex)) }\n\n// window represents the buffer available to clients\n// wishing to write to a channel.\ntype window struct {\n\t*sync.Cond\n\twin          uint32 // RFC 4254 5.2 says the window size can grow to 2^32-1\n\twriteWaiters int\n\tclosed       bool\n}\n\n// add adds win to the amount of window available\n// for consumers.\nfunc (w *window) add(win uint32) bool {\n\t// a zero sized window adjust is a noop.\n\tif win == 0 {\n\t\treturn true\n\t}\n\tw.L.Lock()\n\tif w.win+win < win {\n\t\tw.L.Unlock()\n\t\treturn false\n\t}\n\tw.win += win\n\t// It is unusual that multiple goroutines would be attempting to reserve\n\t// window space, but not guaranteed. Use broadcast to notify all waiters\n\t// that additional window is available.\n\tw.Broadcast()\n\tw.L.Unlock()\n\treturn true\n}\n\n// close sets the window to closed, so all reservations fail\n// immediately.\nfunc (w *window) close() {\n\tw.L.Lock()\n\tw.closed = true\n\tw.Broadcast()\n\tw.L.Unlock()\n}\n\n// reserve reserves win from the available window capacity.\n// If no capacity remains, reserve will block. reserve may\n// return less than requested.\nfunc (w *window) reserve(win uint32) (uint32, error) {\n\tvar err error\n\tw.L.Lock()\n\tw.writeWaiters++\n\tw.Broadcast()\n\tfor w.win == 0 && !w.closed {\n\t\tw.Wait()\n\t}\n\tw.writeWaiters--\n\tif w.win < win {\n\t\twin = w.win\n\t}\n\tw.win -= win\n\tif w.closed {\n\t\terr = io.EOF\n\t}\n\tw.L.Unlock()\n\treturn win, err\n}\n\n// waitWriterBlocked waits until some goroutine is blocked for further\n// writes. It is used in tests only.\nfunc (w *window) waitWriterBlocked() {\n\tw.Cond.L.Lock()\n\tfor w.writeWaiters == 0 {\n\t\tw.Cond.Wait()\n\t}\n\tw.Cond.L.Unlock()\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/connection.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 ssh\n\nimport (\n\t\"fmt\"\n\t\"net\"\n)\n\n// OpenChannelError is returned if the other side rejects an\n// OpenChannel request.\ntype OpenChannelError struct {\n\tReason  RejectionReason\n\tMessage string\n}\n\nfunc (e *OpenChannelError) Error() string {\n\treturn fmt.Sprintf(\"ssh: rejected: %s (%s)\", e.Reason, e.Message)\n}\n\n// ConnMetadata holds metadata for the connection.\ntype ConnMetadata interface {\n\t// User returns the user ID for this connection.\n\tUser() string\n\n\t// SessionID returns the session hash, also denoted by H.\n\tSessionID() []byte\n\n\t// ClientVersion returns the client's version string as hashed\n\t// into the session ID.\n\tClientVersion() []byte\n\n\t// ServerVersion returns the server's version string as hashed\n\t// into the session ID.\n\tServerVersion() []byte\n\n\t// RemoteAddr returns the remote address for this connection.\n\tRemoteAddr() net.Addr\n\n\t// LocalAddr returns the local address for this connection.\n\tLocalAddr() net.Addr\n}\n\n// Conn represents an SSH connection for both server and client roles.\n// Conn is the basis for implementing an application layer, such\n// as ClientConn, which implements the traditional shell access for\n// clients.\ntype Conn interface {\n\tConnMetadata\n\n\t// SendRequest sends a global request, and returns the\n\t// reply. If wantReply is true, it returns the response status\n\t// and payload. See also RFC 4254, section 4.\n\tSendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error)\n\n\t// OpenChannel tries to open an channel. If the request is\n\t// rejected, it returns *OpenChannelError. On success it returns\n\t// the SSH Channel and a Go channel for incoming, out-of-band\n\t// requests. The Go channel must be serviced, or the\n\t// connection will hang.\n\tOpenChannel(name string, data []byte) (Channel, <-chan *Request, error)\n\n\t// Close closes the underlying network connection\n\tClose() error\n\n\t// Wait blocks until the connection has shut down, and returns the\n\t// error causing the shutdown.\n\tWait() error\n\n\t// TODO(hanwen): consider exposing:\n\t//   RequestKeyChange\n\t//   Disconnect\n}\n\n// DiscardRequests consumes and rejects all requests from the\n// passed-in channel.\nfunc DiscardRequests(in <-chan *Request) {\n\tfor req := range in {\n\t\tif req.WantReply {\n\t\t\treq.Reply(false, nil)\n\t\t}\n\t}\n}\n\n// A connection represents an incoming connection.\ntype connection struct {\n\ttransport *handshakeTransport\n\tsshConn\n\n\t// The connection protocol.\n\t*mux\n}\n\nfunc (c *connection) Close() error {\n\treturn c.sshConn.conn.Close()\n}\n\n// sshConn provides net.Conn metadata, but disallows direct reads and\n// writes.\ntype sshConn struct {\n\tconn net.Conn\n\n\tuser          string\n\tsessionID     []byte\n\tclientVersion []byte\n\tserverVersion []byte\n}\n\nfunc dup(src []byte) []byte {\n\tdst := make([]byte, len(src))\n\tcopy(dst, src)\n\treturn dst\n}\n\nfunc (c *sshConn) User() string {\n\treturn c.user\n}\n\nfunc (c *sshConn) RemoteAddr() net.Addr {\n\treturn c.conn.RemoteAddr()\n}\n\nfunc (c *sshConn) Close() error {\n\treturn c.conn.Close()\n}\n\nfunc (c *sshConn) LocalAddr() net.Addr {\n\treturn c.conn.LocalAddr()\n}\n\nfunc (c *sshConn) SessionID() []byte {\n\treturn dup(c.sessionID)\n}\n\nfunc (c *sshConn) ClientVersion() []byte {\n\treturn dup(c.clientVersion)\n}\n\nfunc (c *sshConn) ServerVersion() []byte {\n\treturn dup(c.serverVersion)\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/doc.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/*\nPackage ssh implements an SSH client and server.\n\nSSH is a transport security protocol, an authentication protocol and a\nfamily of application protocols. The most typical application level\nprotocol is a remote shell and this is specifically implemented.  However,\nthe multiplexed nature of SSH is exposed to users that wish to support\nothers.\n\nReferences:\n\n\t[PROTOCOL]: https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL?rev=HEAD\n\t[PROTOCOL.certkeys]: http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.bin/ssh/PROTOCOL.certkeys?rev=HEAD\n\t[SSH-PARAMETERS]:    http://www.iana.org/assignments/ssh-parameters/ssh-parameters.xml#ssh-parameters-1\n\nThis package does not fall under the stability promise of the Go language itself,\nso its API may be changed when pressing needs arise.\n*/\npackage ssh // import \"golang.org/x/crypto/ssh\"\n"
  },
  {
    "path": "gossh/crypto/ssh/handshake.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 ssh\n\nimport (\n\t\"crypto/rand\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"strings\"\n\t\"sync\"\n)\n\n// debugHandshake, if set, prints messages sent and received.  Key\n// exchange messages are printed as if DH were used, so the debug\n// messages are wrong when using ECDH.\nconst debugHandshake = false\n\n// chanSize sets the amount of buffering SSH connections. This is\n// primarily for testing: setting chanSize=0 uncovers deadlocks more\n// quickly.\nconst chanSize = 16\n\n// keyingTransport is a packet based transport that supports key\n// changes. It need not be thread-safe. It should pass through\n// msgNewKeys in both directions.\ntype keyingTransport interface {\n\tpacketConn\n\n\t// prepareKeyChange sets up a key change. The key change for a\n\t// direction will be effected if a msgNewKeys message is sent\n\t// or received.\n\tprepareKeyChange(*algorithms, *kexResult) error\n\n\t// setStrictMode sets the strict KEX mode, notably triggering\n\t// sequence number resets on sending or receiving msgNewKeys.\n\t// If the sequence number is already > 1 when setStrictMode\n\t// is called, an error is returned.\n\tsetStrictMode() error\n\n\t// setInitialKEXDone indicates to the transport that the initial key exchange\n\t// was completed\n\tsetInitialKEXDone()\n}\n\n// handshakeTransport implements rekeying on top of a keyingTransport\n// and offers a thread-safe writePacket() interface.\ntype handshakeTransport struct {\n\tconn   keyingTransport\n\tconfig *Config\n\n\tserverVersion []byte\n\tclientVersion []byte\n\n\t// hostKeys is non-empty if we are the server. In that case,\n\t// it contains all host keys that can be used to sign the\n\t// connection.\n\thostKeys []Signer\n\n\t// publicKeyAuthAlgorithms is non-empty if we are the server. In that case,\n\t// it contains the supported client public key authentication algorithms.\n\tpublicKeyAuthAlgorithms []string\n\n\t// hostKeyAlgorithms is non-empty if we are the client. In that case,\n\t// we accept these key types from the server as host key.\n\thostKeyAlgorithms []string\n\n\t// On read error, incoming is closed, and readError is set.\n\tincoming  chan []byte\n\treadError error\n\n\tmu               sync.Mutex\n\twriteError       error\n\tsentInitPacket   []byte\n\tsentInitMsg      *kexInitMsg\n\tpendingPackets   [][]byte // Used when a key exchange is in progress.\n\twritePacketsLeft uint32\n\twriteBytesLeft   int64\n\n\t// If the read loop wants to schedule a kex, it pings this\n\t// channel, and the write loop will send out a kex\n\t// message.\n\trequestKex chan struct{}\n\n\t// If the other side requests or confirms a kex, its kexInit\n\t// packet is sent here for the write loop to find it.\n\tstartKex    chan *pendingKex\n\tkexLoopDone chan struct{} // closed (with writeError non-nil) when kexLoop exits\n\n\t// data for host key checking\n\thostKeyCallback HostKeyCallback\n\tdialAddress     string\n\tremoteAddr      net.Addr\n\n\t// bannerCallback is non-empty if we are the client and it has been set in\n\t// ClientConfig. In that case it is called during the user authentication\n\t// dance to handle a custom server's message.\n\tbannerCallback BannerCallback\n\n\t// Algorithms agreed in the last key exchange.\n\talgorithms *algorithms\n\n\t// Counters exclusively owned by readLoop.\n\treadPacketsLeft uint32\n\treadBytesLeft   int64\n\n\t// The session ID or nil if first kex did not complete yet.\n\tsessionID []byte\n\n\t// strictMode indicates if the other side of the handshake indicated\n\t// that we should be following the strict KEX protocol restrictions.\n\tstrictMode bool\n}\n\ntype pendingKex struct {\n\totherInit []byte\n\tdone      chan error\n}\n\nfunc newHandshakeTransport(conn keyingTransport, config *Config, clientVersion, serverVersion []byte) *handshakeTransport {\n\tt := &handshakeTransport{\n\t\tconn:          conn,\n\t\tserverVersion: serverVersion,\n\t\tclientVersion: clientVersion,\n\t\tincoming:      make(chan []byte, chanSize),\n\t\trequestKex:    make(chan struct{}, 1),\n\t\tstartKex:      make(chan *pendingKex),\n\t\tkexLoopDone:   make(chan struct{}),\n\n\t\tconfig: config,\n\t}\n\tt.resetReadThresholds()\n\tt.resetWriteThresholds()\n\n\t// We always start with a mandatory key exchange.\n\tt.requestKex <- struct{}{}\n\treturn t\n}\n\nfunc newClientTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ClientConfig, dialAddr string, addr net.Addr) *handshakeTransport {\n\tt := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion)\n\tt.dialAddress = dialAddr\n\tt.remoteAddr = addr\n\tt.hostKeyCallback = config.HostKeyCallback\n\tt.bannerCallback = config.BannerCallback\n\tif config.HostKeyAlgorithms != nil {\n\t\tt.hostKeyAlgorithms = config.HostKeyAlgorithms\n\t} else {\n\t\tt.hostKeyAlgorithms = supportedHostKeyAlgos\n\t}\n\tgo t.readLoop()\n\tgo t.kexLoop()\n\treturn t\n}\n\nfunc newServerTransport(conn keyingTransport, clientVersion, serverVersion []byte, config *ServerConfig) *handshakeTransport {\n\tt := newHandshakeTransport(conn, &config.Config, clientVersion, serverVersion)\n\tt.hostKeys = config.hostKeys\n\tt.publicKeyAuthAlgorithms = config.PublicKeyAuthAlgorithms\n\tgo t.readLoop()\n\tgo t.kexLoop()\n\treturn t\n}\n\nfunc (t *handshakeTransport) getSessionID() []byte {\n\treturn t.sessionID\n}\n\n// waitSession waits for the session to be established. This should be\n// the first thing to call after instantiating handshakeTransport.\nfunc (t *handshakeTransport) waitSession() error {\n\tp, err := t.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\tif p[0] != msgNewKeys {\n\t\treturn fmt.Errorf(\"ssh: first packet should be msgNewKeys\")\n\t}\n\n\treturn nil\n}\n\nfunc (t *handshakeTransport) id() string {\n\tif len(t.hostKeys) > 0 {\n\t\treturn \"server\"\n\t}\n\treturn \"client\"\n}\n\nfunc (t *handshakeTransport) printPacket(p []byte, write bool) {\n\taction := \"got\"\n\tif write {\n\t\taction = \"sent\"\n\t}\n\n\tif p[0] == msgChannelData || p[0] == msgChannelExtendedData {\n\t\tlog.Printf(\"%s %s data (packet %d bytes)\", t.id(), action, len(p))\n\t} else {\n\t\tmsg, err := decode(p)\n\t\tlog.Printf(\"%s %s %T %v (%v)\", t.id(), action, msg, msg, err)\n\t}\n}\n\nfunc (t *handshakeTransport) readPacket() ([]byte, error) {\n\tp, ok := <-t.incoming\n\tif !ok {\n\t\treturn nil, t.readError\n\t}\n\treturn p, nil\n}\n\nfunc (t *handshakeTransport) readLoop() {\n\tfirst := true\n\tfor {\n\t\tp, err := t.readOnePacket(first)\n\t\tfirst = false\n\t\tif err != nil {\n\t\t\tt.readError = err\n\t\t\tclose(t.incoming)\n\t\t\tbreak\n\t\t}\n\t\t// If this is the first kex, and strict KEX mode is enabled,\n\t\t// we don't ignore any messages, as they may be used to manipulate\n\t\t// the packet sequence numbers.\n\t\tif !(t.sessionID == nil && t.strictMode) && (p[0] == msgIgnore || p[0] == msgDebug) {\n\t\t\tcontinue\n\t\t}\n\t\tt.incoming <- p\n\t}\n\n\t// Stop writers too.\n\tt.recordWriteError(t.readError)\n\n\t// Unblock the writer should it wait for this.\n\tclose(t.startKex)\n\n\t// Don't close t.requestKex; it's also written to from writePacket.\n}\n\nfunc (t *handshakeTransport) pushPacket(p []byte) error {\n\tif debugHandshake {\n\t\tt.printPacket(p, true)\n\t}\n\treturn t.conn.writePacket(p)\n}\n\nfunc (t *handshakeTransport) getWriteError() error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\treturn t.writeError\n}\n\nfunc (t *handshakeTransport) recordWriteError(err error) {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.writeError == nil && err != nil {\n\t\tt.writeError = err\n\t}\n}\n\nfunc (t *handshakeTransport) requestKeyExchange() {\n\tselect {\n\tcase t.requestKex <- struct{}{}:\n\tdefault:\n\t\t// something already requested a kex, so do nothing.\n\t}\n}\n\nfunc (t *handshakeTransport) resetWriteThresholds() {\n\tt.writePacketsLeft = packetRekeyThreshold\n\tif t.config.RekeyThreshold > 0 {\n\t\tt.writeBytesLeft = int64(t.config.RekeyThreshold)\n\t} else if t.algorithms != nil {\n\t\tt.writeBytesLeft = t.algorithms.w.rekeyBytes()\n\t} else {\n\t\tt.writeBytesLeft = 1 << 30\n\t}\n}\n\nfunc (t *handshakeTransport) kexLoop() {\n\nwrite:\n\tfor t.getWriteError() == nil {\n\t\tvar request *pendingKex\n\t\tvar sent bool\n\n\t\tfor request == nil || !sent {\n\t\t\tvar ok bool\n\t\t\tselect {\n\t\t\tcase request, ok = <-t.startKex:\n\t\t\t\tif !ok {\n\t\t\t\t\tbreak write\n\t\t\t\t}\n\t\t\tcase <-t.requestKex:\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif !sent {\n\t\t\t\tif err := t.sendKexInit(); err != nil {\n\t\t\t\t\tt.recordWriteError(err)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tsent = true\n\t\t\t}\n\t\t}\n\n\t\tif err := t.getWriteError(); err != nil {\n\t\t\tif request != nil {\n\t\t\t\trequest.done <- err\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\n\t\t// We're not servicing t.requestKex, but that is OK:\n\t\t// we never block on sending to t.requestKex.\n\n\t\t// We're not servicing t.startKex, but the remote end\n\t\t// has just sent us a kexInitMsg, so it can't send\n\t\t// another key change request, until we close the done\n\t\t// channel on the pendingKex request.\n\n\t\terr := t.enterKeyExchange(request.otherInit)\n\n\t\tt.mu.Lock()\n\t\tt.writeError = err\n\t\tt.sentInitPacket = nil\n\t\tt.sentInitMsg = nil\n\n\t\tt.resetWriteThresholds()\n\n\t\t// we have completed the key exchange. Since the\n\t\t// reader is still blocked, it is safe to clear out\n\t\t// the requestKex channel. This avoids the situation\n\t\t// where: 1) we consumed our own request for the\n\t\t// initial kex, and 2) the kex from the remote side\n\t\t// caused another send on the requestKex channel,\n\tclear:\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-t.requestKex:\n\t\t\t\t//\n\t\t\tdefault:\n\t\t\t\tbreak clear\n\t\t\t}\n\t\t}\n\n\t\trequest.done <- t.writeError\n\n\t\t// kex finished. Push packets that we received while\n\t\t// the kex was in progress. Don't look at t.startKex\n\t\t// and don't increment writtenSinceKex: if we trigger\n\t\t// another kex while we are still busy with the last\n\t\t// one, things will become very confusing.\n\t\tfor _, p := range t.pendingPackets {\n\t\t\tt.writeError = t.pushPacket(p)\n\t\t\tif t.writeError != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tt.pendingPackets = t.pendingPackets[:0]\n\t\tt.mu.Unlock()\n\t}\n\n\t// Unblock reader.\n\tt.conn.Close()\n\n\t// drain startKex channel. We don't service t.requestKex\n\t// because nobody does blocking sends there.\n\tfor request := range t.startKex {\n\t\trequest.done <- t.getWriteError()\n\t}\n\n\t// Mark that the loop is done so that Close can return.\n\tclose(t.kexLoopDone)\n}\n\n// The protocol uses uint32 for packet counters, so we can't let them\n// reach 1<<32.  We will actually read and write more packets than\n// this, though: the other side may send more packets, and after we\n// hit this limit on writing we will send a few more packets for the\n// key exchange itself.\nconst packetRekeyThreshold = (1 << 31)\n\nfunc (t *handshakeTransport) resetReadThresholds() {\n\tt.readPacketsLeft = packetRekeyThreshold\n\tif t.config.RekeyThreshold > 0 {\n\t\tt.readBytesLeft = int64(t.config.RekeyThreshold)\n\t} else if t.algorithms != nil {\n\t\tt.readBytesLeft = t.algorithms.r.rekeyBytes()\n\t} else {\n\t\tt.readBytesLeft = 1 << 30\n\t}\n}\n\nfunc (t *handshakeTransport) readOnePacket(first bool) ([]byte, error) {\n\tp, err := t.conn.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif t.readPacketsLeft > 0 {\n\t\tt.readPacketsLeft--\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif t.readBytesLeft > 0 {\n\t\tt.readBytesLeft -= int64(len(p))\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif debugHandshake {\n\t\tt.printPacket(p, false)\n\t}\n\n\tif first && p[0] != msgKexInit {\n\t\treturn nil, fmt.Errorf(\"ssh: first packet should be msgKexInit\")\n\t}\n\n\tif p[0] != msgKexInit {\n\t\treturn p, nil\n\t}\n\n\tfirstKex := t.sessionID == nil\n\n\tkex := pendingKex{\n\t\tdone:      make(chan error, 1),\n\t\totherInit: p,\n\t}\n\tt.startKex <- &kex\n\terr = <-kex.done\n\n\tif debugHandshake {\n\t\tlog.Printf(\"%s exited key exchange (first %v), err %v\", t.id(), firstKex, err)\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tt.resetReadThresholds()\n\n\t// By default, a key exchange is hidden from higher layers by\n\t// translating it into msgIgnore.\n\tsuccessPacket := []byte{msgIgnore}\n\tif firstKex {\n\t\t// sendKexInit() for the first kex waits for\n\t\t// msgNewKeys so the authentication process is\n\t\t// guaranteed to happen over an encrypted transport.\n\t\tsuccessPacket = []byte{msgNewKeys}\n\t}\n\n\treturn successPacket, nil\n}\n\nconst (\n\tkexStrictClient = \"kex-strict-c-v00@openssh.com\"\n\tkexStrictServer = \"kex-strict-s-v00@openssh.com\"\n)\n\n// sendKexInit sends a key change message.\nfunc (t *handshakeTransport) sendKexInit() error {\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.sentInitMsg != nil {\n\t\t// kexInits may be sent either in response to the other side,\n\t\t// or because our side wants to initiate a key change, so we\n\t\t// may have already sent a kexInit. In that case, don't send a\n\t\t// second kexInit.\n\t\treturn nil\n\t}\n\n\tmsg := &kexInitMsg{\n\t\tCiphersClientServer:     t.config.Ciphers,\n\t\tCiphersServerClient:     t.config.Ciphers,\n\t\tMACsClientServer:        t.config.MACs,\n\t\tMACsServerClient:        t.config.MACs,\n\t\tCompressionClientServer: supportedCompressions,\n\t\tCompressionServerClient: supportedCompressions,\n\t}\n\tio.ReadFull(rand.Reader, msg.Cookie[:])\n\n\t// We mutate the KexAlgos slice, in order to add the kex-strict extension algorithm,\n\t// and possibly to add the ext-info extension algorithm. Since the slice may be the\n\t// user owned KeyExchanges, we create our own slice in order to avoid using user\n\t// owned memory by mistake.\n\tmsg.KexAlgos = make([]string, 0, len(t.config.KeyExchanges)+2) // room for kex-strict and ext-info\n\tmsg.KexAlgos = append(msg.KexAlgos, t.config.KeyExchanges...)\n\n\tisServer := len(t.hostKeys) > 0\n\tif isServer {\n\t\tfor _, k := range t.hostKeys {\n\t\t\t// If k is a MultiAlgorithmSigner, we restrict the signature\n\t\t\t// algorithms. If k is a AlgorithmSigner, presume it supports all\n\t\t\t// signature algorithms associated with the key format. If k is not\n\t\t\t// an AlgorithmSigner, we can only assume it only supports the\n\t\t\t// algorithms that matches the key format. (This means that Sign\n\t\t\t// can't pick a different default).\n\t\t\tkeyFormat := k.PublicKey().Type()\n\n\t\t\tswitch s := k.(type) {\n\t\t\tcase MultiAlgorithmSigner:\n\t\t\t\tfor _, algo := range algorithmsForKeyFormat(keyFormat) {\n\t\t\t\t\tif contains(s.Algorithms(), underlyingAlgo(algo)) {\n\t\t\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algo)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase AlgorithmSigner:\n\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, algorithmsForKeyFormat(keyFormat)...)\n\t\t\tdefault:\n\t\t\t\tmsg.ServerHostKeyAlgos = append(msg.ServerHostKeyAlgos, keyFormat)\n\t\t\t}\n\t\t}\n\n\t\tif t.sessionID == nil {\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, kexStrictServer)\n\t\t}\n\t} else {\n\t\tmsg.ServerHostKeyAlgos = t.hostKeyAlgorithms\n\n\t\t// As a client we opt in to receiving SSH_MSG_EXT_INFO so we know what\n\t\t// algorithms the server supports for public key authentication. See RFC\n\t\t// 8308, Section 2.1.\n\t\t//\n\t\t// We also send the strict KEX mode extension algorithm, in order to opt\n\t\t// into the strict KEX mode.\n\t\tif firstKeyExchange := t.sessionID == nil; firstKeyExchange {\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, \"ext-info-c\")\n\t\t\tmsg.KexAlgos = append(msg.KexAlgos, kexStrictClient)\n\t\t}\n\n\t}\n\n\tpacket := Marshal(msg)\n\n\t// writePacket destroys the contents, so save a copy.\n\tpacketCopy := make([]byte, len(packet))\n\tcopy(packetCopy, packet)\n\n\tif err := t.pushPacket(packetCopy); err != nil {\n\t\treturn err\n\t}\n\n\tt.sentInitMsg = msg\n\tt.sentInitPacket = packet\n\n\treturn nil\n}\n\nfunc (t *handshakeTransport) writePacket(p []byte) error {\n\tswitch p[0] {\n\tcase msgKexInit:\n\t\treturn errors.New(\"ssh: only handshakeTransport can send kexInit\")\n\tcase msgNewKeys:\n\t\treturn errors.New(\"ssh: only handshakeTransport can send newKeys\")\n\t}\n\n\tt.mu.Lock()\n\tdefer t.mu.Unlock()\n\tif t.writeError != nil {\n\t\treturn t.writeError\n\t}\n\n\tif t.sentInitMsg != nil {\n\t\t// Copy the packet so the writer can reuse the buffer.\n\t\tcp := make([]byte, len(p))\n\t\tcopy(cp, p)\n\t\tt.pendingPackets = append(t.pendingPackets, cp)\n\t\treturn nil\n\t}\n\n\tif t.writeBytesLeft > 0 {\n\t\tt.writeBytesLeft -= int64(len(p))\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif t.writePacketsLeft > 0 {\n\t\tt.writePacketsLeft--\n\t} else {\n\t\tt.requestKeyExchange()\n\t}\n\n\tif err := t.pushPacket(p); err != nil {\n\t\tt.writeError = err\n\t}\n\n\treturn nil\n}\n\nfunc (t *handshakeTransport) Close() error {\n\t// Close the connection. This should cause the readLoop goroutine to wake up\n\t// and close t.startKex, which will shut down kexLoop if running.\n\terr := t.conn.Close()\n\n\t// Wait for the kexLoop goroutine to complete.\n\t// At that point we know that the readLoop goroutine is complete too,\n\t// because kexLoop itself waits for readLoop to close the startKex channel.\n\t<-t.kexLoopDone\n\n\treturn err\n}\n\nfunc (t *handshakeTransport) enterKeyExchange(otherInitPacket []byte) error {\n\tif debugHandshake {\n\t\tlog.Printf(\"%s entered key exchange\", t.id())\n\t}\n\n\totherInit := &kexInitMsg{}\n\tif err := Unmarshal(otherInitPacket, otherInit); err != nil {\n\t\treturn err\n\t}\n\n\tmagics := handshakeMagics{\n\t\tclientVersion: t.clientVersion,\n\t\tserverVersion: t.serverVersion,\n\t\tclientKexInit: otherInitPacket,\n\t\tserverKexInit: t.sentInitPacket,\n\t}\n\n\tclientInit := otherInit\n\tserverInit := t.sentInitMsg\n\tisClient := len(t.hostKeys) == 0\n\tif isClient {\n\t\tclientInit, serverInit = serverInit, clientInit\n\n\t\tmagics.clientKexInit = t.sentInitPacket\n\t\tmagics.serverKexInit = otherInitPacket\n\t}\n\n\tvar err error\n\tt.algorithms, err = findAgreedAlgorithms(isClient, clientInit, serverInit)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif t.sessionID == nil && ((isClient && contains(serverInit.KexAlgos, kexStrictServer)) || (!isClient && contains(clientInit.KexAlgos, kexStrictClient))) {\n\t\tt.strictMode = true\n\t\tif err := t.conn.setStrictMode(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// We don't send FirstKexFollows, but we handle receiving it.\n\t//\n\t// RFC 4253 section 7 defines the kex and the agreement method for\n\t// first_kex_packet_follows. It states that the guessed packet\n\t// should be ignored if the \"kex algorithm and/or the host\n\t// key algorithm is guessed wrong (server and client have\n\t// different preferred algorithm), or if any of the other\n\t// algorithms cannot be agreed upon\". The other algorithms have\n\t// already been checked above so the kex algorithm and host key\n\t// algorithm are checked here.\n\tif otherInit.FirstKexFollows && (clientInit.KexAlgos[0] != serverInit.KexAlgos[0] || clientInit.ServerHostKeyAlgos[0] != serverInit.ServerHostKeyAlgos[0]) {\n\t\t// other side sent a kex message for the wrong algorithm,\n\t\t// which we have to ignore.\n\t\tif _, err := t.conn.readPacket(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tkex, ok := kexAlgoMap[t.algorithms.kex]\n\tif !ok {\n\t\treturn fmt.Errorf(\"ssh: unexpected key exchange algorithm %v\", t.algorithms.kex)\n\t}\n\n\tvar result *kexResult\n\tif len(t.hostKeys) > 0 {\n\t\tresult, err = t.server(kex, &magics)\n\t} else {\n\t\tresult, err = t.client(kex, &magics)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tfirstKeyExchange := t.sessionID == nil\n\tif firstKeyExchange {\n\t\tt.sessionID = result.H\n\t}\n\tresult.SessionID = t.sessionID\n\n\tif err := t.conn.prepareKeyChange(t.algorithms, result); err != nil {\n\t\treturn err\n\t}\n\tif err = t.conn.writePacket([]byte{msgNewKeys}); err != nil {\n\t\treturn err\n\t}\n\n\t// On the server side, after the first SSH_MSG_NEWKEYS, send a SSH_MSG_EXT_INFO\n\t// message with the server-sig-algs extension if the client supports it. See\n\t// RFC 8308, Sections 2.4 and 3.1, and [PROTOCOL], Section 1.9.\n\tif !isClient && firstKeyExchange && contains(clientInit.KexAlgos, \"ext-info-c\") {\n\t\tsupportedPubKeyAuthAlgosList := strings.Join(t.publicKeyAuthAlgorithms, \",\")\n\t\textInfo := &extInfoMsg{\n\t\t\tNumExtensions: 2,\n\t\t\tPayload:       make([]byte, 0, 4+15+4+len(supportedPubKeyAuthAlgosList)+4+16+4+1),\n\t\t}\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(\"server-sig-algs\"))\n\t\textInfo.Payload = append(extInfo.Payload, \"server-sig-algs\"...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(supportedPubKeyAuthAlgosList))\n\t\textInfo.Payload = append(extInfo.Payload, supportedPubKeyAuthAlgosList...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, len(\"ping@openssh.com\"))\n\t\textInfo.Payload = append(extInfo.Payload, \"ping@openssh.com\"...)\n\t\textInfo.Payload = appendInt(extInfo.Payload, 1)\n\t\textInfo.Payload = append(extInfo.Payload, \"0\"...)\n\t\tif err := t.conn.writePacket(Marshal(extInfo)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif packet, err := t.conn.readPacket(); err != nil {\n\t\treturn err\n\t} else if packet[0] != msgNewKeys {\n\t\treturn unexpectedMessageError(msgNewKeys, packet[0])\n\t}\n\n\tif firstKeyExchange {\n\t\t// Indicates to the transport that the first key exchange is completed\n\t\t// after receiving SSH_MSG_NEWKEYS.\n\t\tt.conn.setInitialKEXDone()\n\t}\n\n\treturn nil\n}\n\n// algorithmSignerWrapper is an AlgorithmSigner that only supports the default\n// key format algorithm.\n//\n// This is technically a violation of the AlgorithmSigner interface, but it\n// should be unreachable given where we use this. Anyway, at least it returns an\n// error instead of panicing or producing an incorrect signature.\ntype algorithmSignerWrapper struct {\n\tSigner\n}\n\nfunc (a algorithmSignerWrapper) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm != underlyingAlgo(a.PublicKey().Type()) {\n\t\treturn nil, errors.New(\"ssh: internal error: algorithmSignerWrapper invoked with non-default algorithm\")\n\t}\n\treturn a.Sign(rand, data)\n}\n\nfunc pickHostKey(hostKeys []Signer, algo string) AlgorithmSigner {\n\tfor _, k := range hostKeys {\n\t\tif s, ok := k.(MultiAlgorithmSigner); ok {\n\t\t\tif !contains(s.Algorithms(), underlyingAlgo(algo)) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t}\n\n\t\tif algo == k.PublicKey().Type() {\n\t\t\treturn algorithmSignerWrapper{k}\n\t\t}\n\n\t\tk, ok := k.(AlgorithmSigner)\n\t\tif !ok {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, a := range algorithmsForKeyFormat(k.PublicKey().Type()) {\n\t\t\tif algo == a {\n\t\t\t\treturn k\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (t *handshakeTransport) server(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) {\n\thostKey := pickHostKey(t.hostKeys, t.algorithms.hostKey)\n\tif hostKey == nil {\n\t\treturn nil, errors.New(\"ssh: internal error: negotiated unsupported signature type\")\n\t}\n\n\tr, err := kex.Server(t.conn, t.config.Rand, magics, hostKey, t.algorithms.hostKey)\n\treturn r, err\n}\n\nfunc (t *handshakeTransport) client(kex kexAlgorithm, magics *handshakeMagics) (*kexResult, error) {\n\tresult, err := kex.Client(t.conn, t.config.Rand, magics)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKey, err := ParsePublicKey(result.HostKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := verifyHostKeySignature(hostKey, t.algorithms.hostKey, result); err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = t.hostKeyCallback(t.dialAddress, t.remoteAddr, hostKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn result, nil\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/internal/bcrypt_pbkdf/bcrypt_pbkdf.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 bcrypt_pbkdf implements bcrypt_pbkdf(3) from OpenBSD.\n//\n// See https://flak.tedunangst.com/post/bcrypt-pbkdf and\n// https://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libutil/bcrypt_pbkdf.c.\npackage bcrypt_pbkdf\n\nimport (\n\t\"crypto/sha512\"\n\t\"errors\"\n\t\"gossh/crypto/blowfish\"\n)\n\nconst blockSize = 32\n\n// Key derives a key from the password, salt and rounds count, returning a\n// []byte of length keyLen that can be used as cryptographic key.\nfunc Key(password, salt []byte, rounds, keyLen int) ([]byte, error) {\n\tif rounds < 1 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: number of rounds is too small\")\n\t}\n\tif len(password) == 0 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: empty password\")\n\t}\n\tif len(salt) == 0 || len(salt) > 1<<20 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: bad salt length\")\n\t}\n\tif keyLen > 1024 {\n\t\treturn nil, errors.New(\"bcrypt_pbkdf: keyLen is too large\")\n\t}\n\n\tnumBlocks := (keyLen + blockSize - 1) / blockSize\n\tkey := make([]byte, numBlocks*blockSize)\n\n\th := sha512.New()\n\th.Write(password)\n\tshapass := h.Sum(nil)\n\n\tshasalt := make([]byte, 0, sha512.Size)\n\tcnt, tmp := make([]byte, 4), make([]byte, blockSize)\n\tfor block := 1; block <= numBlocks; block++ {\n\t\th.Reset()\n\t\th.Write(salt)\n\t\tcnt[0] = byte(block >> 24)\n\t\tcnt[1] = byte(block >> 16)\n\t\tcnt[2] = byte(block >> 8)\n\t\tcnt[3] = byte(block)\n\t\th.Write(cnt)\n\t\tbcryptHash(tmp, shapass, h.Sum(shasalt))\n\n\t\tout := make([]byte, blockSize)\n\t\tcopy(out, tmp)\n\t\tfor i := 2; i <= rounds; i++ {\n\t\t\th.Reset()\n\t\t\th.Write(tmp)\n\t\t\tbcryptHash(tmp, shapass, h.Sum(shasalt))\n\t\t\tfor j := 0; j < len(out); j++ {\n\t\t\t\tout[j] ^= tmp[j]\n\t\t\t}\n\t\t}\n\n\t\tfor i, v := range out {\n\t\t\tkey[i*numBlocks+(block-1)] = v\n\t\t}\n\t}\n\treturn key[:keyLen], nil\n}\n\nvar magic = []byte(\"OxychromaticBlowfishSwatDynamite\")\n\nfunc bcryptHash(out, shapass, shasalt []byte) {\n\tc, err := blowfish.NewSaltedCipher(shapass, shasalt)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfor i := 0; i < 64; i++ {\n\t\tblowfish.ExpandKey(shasalt, c)\n\t\tblowfish.ExpandKey(shapass, c)\n\t}\n\tcopy(out, magic)\n\tfor i := 0; i < 32; i += 8 {\n\t\tfor j := 0; j < 64; j++ {\n\t\t\tc.Encrypt(out[i:i+8], out[i:i+8])\n\t\t}\n\t}\n\t// Swap bytes due to different endianness.\n\tfor i := 0; i < 32; i += 4 {\n\t\tout[i+3], out[i+2], out[i+1], out[i] = out[i], out[i+1], out[i+2], out[i+3]\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/kex.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 ssh\n\nimport (\n\t\"crypto\"\n\t\"crypto/ecdsa\"\n\t\"crypto/elliptic\"\n\t\"crypto/rand\"\n\t\"crypto/subtle\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"gossh/crypto/curve25519\"\n\t\"io\"\n\t\"math/big\"\n)\n\nconst (\n\tkexAlgoDH1SHA1                = \"diffie-hellman-group1-sha1\"\n\tkexAlgoDH14SHA1               = \"diffie-hellman-group14-sha1\"\n\tkexAlgoDH14SHA256             = \"diffie-hellman-group14-sha256\"\n\tkexAlgoDH16SHA512             = \"diffie-hellman-group16-sha512\"\n\tkexAlgoECDH256                = \"ecdh-sha2-nistp256\"\n\tkexAlgoECDH384                = \"ecdh-sha2-nistp384\"\n\tkexAlgoECDH521                = \"ecdh-sha2-nistp521\"\n\tkexAlgoCurve25519SHA256LibSSH = \"curve25519-sha256@libssh.org\"\n\tkexAlgoCurve25519SHA256       = \"curve25519-sha256\"\n\n\t// For the following kex only the client half contains a production\n\t// ready implementation. The server half only consists of a minimal\n\t// implementation to satisfy the automated tests.\n\tkexAlgoDHGEXSHA1   = \"diffie-hellman-group-exchange-sha1\"\n\tkexAlgoDHGEXSHA256 = \"diffie-hellman-group-exchange-sha256\"\n)\n\n// kexResult captures the outcome of a key exchange.\ntype kexResult struct {\n\t// Session hash. See also RFC 4253, section 8.\n\tH []byte\n\n\t// Shared secret. See also RFC 4253, section 8.\n\tK []byte\n\n\t// Host key as hashed into H.\n\tHostKey []byte\n\n\t// Signature of H.\n\tSignature []byte\n\n\t// A cryptographic hash function that matches the security\n\t// level of the key exchange algorithm. It is used for\n\t// calculating H, and for deriving keys from H and K.\n\tHash crypto.Hash\n\n\t// The session ID, which is the first H computed. This is used\n\t// to derive key material inside the transport.\n\tSessionID []byte\n}\n\n// handshakeMagics contains data that is always included in the\n// session hash.\ntype handshakeMagics struct {\n\tclientVersion, serverVersion []byte\n\tclientKexInit, serverKexInit []byte\n}\n\nfunc (m *handshakeMagics) write(w io.Writer) {\n\twriteString(w, m.clientVersion)\n\twriteString(w, m.serverVersion)\n\twriteString(w, m.clientKexInit)\n\twriteString(w, m.serverKexInit)\n}\n\n// kexAlgorithm abstracts different key exchange algorithms.\ntype kexAlgorithm interface {\n\t// Server runs server-side key agreement, signing the result\n\t// with a hostkey. algo is the negotiated algorithm, and may\n\t// be a certificate type.\n\tServer(p packetConn, rand io.Reader, magics *handshakeMagics, s AlgorithmSigner, algo string) (*kexResult, error)\n\n\t// Client runs the client-side key agreement. Caller is\n\t// responsible for verifying the host key signature.\n\tClient(p packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error)\n}\n\n// dhGroup is a multiplicative group suitable for implementing Diffie-Hellman key agreement.\ntype dhGroup struct {\n\tg, p, pMinus1 *big.Int\n\thashFunc      crypto.Hash\n}\n\nfunc (group *dhGroup) diffieHellman(theirPublic, myPrivate *big.Int) (*big.Int, error) {\n\tif theirPublic.Cmp(bigOne) <= 0 || theirPublic.Cmp(group.pMinus1) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\treturn new(big.Int).Exp(theirPublic, myPrivate, group.p), nil\n}\n\nfunc (group *dhGroup) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tvar x *big.Int\n\tfor {\n\t\tvar err error\n\t\tif x, err = rand.Int(randSource, group.pMinus1); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif x.Sign() > 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tX := new(big.Int).Exp(group.g, x, group.p)\n\tkexDHInit := kexDHInitMsg{\n\t\tX: X,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHInit)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexDHReply kexDHReplyMsg\n\tif err = Unmarshal(packet, &kexDHReply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tki, err := group.diffieHellman(kexDHReply.Y, x)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\th := group.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, kexDHReply.HostKey)\n\twriteInt(h, X)\n\twriteInt(h, kexDHReply.Y)\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   kexDHReply.HostKey,\n\t\tSignature: kexDHReply.Signature,\n\t\tHash:      group.hashFunc,\n\t}, nil\n}\n\nfunc (group *dhGroup) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHInit kexDHInitMsg\n\tif err = Unmarshal(packet, &kexDHInit); err != nil {\n\t\treturn\n\t}\n\n\tvar y *big.Int\n\tfor {\n\t\tif y, err = rand.Int(randSource, group.pMinus1); err != nil {\n\t\t\treturn\n\t\t}\n\t\tif y.Sign() > 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\n\tY := new(big.Int).Exp(group.g, y, group.p)\n\tki, err := group.diffieHellman(kexDHInit.X, y)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := group.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteInt(h, kexDHInit.X)\n\twriteInt(h, Y)\n\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, randSource, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexDHReply := kexDHReplyMsg{\n\t\tHostKey:   hostKeyBytes,\n\t\tY:         Y,\n\t\tSignature: sig,\n\t}\n\tpacket = Marshal(&kexDHReply)\n\n\terr = c.writePacket(packet)\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      group.hashFunc,\n\t}, err\n}\n\n// ecdh performs Elliptic Curve Diffie-Hellman key exchange as\n// described in RFC 5656, section 4.\ntype ecdh struct {\n\tcurve elliptic.Curve\n}\n\nfunc (kex *ecdh) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tephKey, err := ecdsa.GenerateKey(kex.curve, rand)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexInit := kexECDHInitMsg{\n\t\tClientPubKey: elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y),\n\t}\n\n\tserialized := Marshal(&kexInit)\n\tif err := c.writePacket(serialized); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar reply kexECDHReplyMsg\n\tif err = Unmarshal(packet, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tx, y, err := unmarshalECKey(kex.curve, reply.EphemeralPubKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// generate shared secret\n\tsecret, _ := kex.curve.ScalarMult(x, y, ephKey.D.Bytes())\n\n\th := ecHash(kex.curve).New()\n\tmagics.write(h)\n\twriteString(h, reply.HostKey)\n\twriteString(h, kexInit.ClientPubKey)\n\twriteString(h, reply.EphemeralPubKey)\n\tK := make([]byte, intLength(secret))\n\tmarshalInt(K, secret)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: reply.Signature,\n\t\tHash:      ecHash(kex.curve),\n\t}, nil\n}\n\n// unmarshalECKey parses and checks an EC key.\nfunc unmarshalECKey(curve elliptic.Curve, pubkey []byte) (x, y *big.Int, err error) {\n\tx, y = elliptic.Unmarshal(curve, pubkey)\n\tif x == nil {\n\t\treturn nil, nil, errors.New(\"ssh: elliptic.Unmarshal failure\")\n\t}\n\tif !validateECPublicKey(curve, x, y) {\n\t\treturn nil, nil, errors.New(\"ssh: public key not on curve\")\n\t}\n\treturn x, y, nil\n}\n\n// validateECPublicKey checks that the point is a valid public key for\n// the given curve. See [SEC1], 3.2.2\nfunc validateECPublicKey(curve elliptic.Curve, x, y *big.Int) bool {\n\tif x.Sign() == 0 && y.Sign() == 0 {\n\t\treturn false\n\t}\n\n\tif x.Cmp(curve.Params().P) >= 0 {\n\t\treturn false\n\t}\n\n\tif y.Cmp(curve.Params().P) >= 0 {\n\t\treturn false\n\t}\n\n\tif !curve.IsOnCurve(x, y) {\n\t\treturn false\n\t}\n\n\t// We don't check if N * PubKey == 0, since\n\t//\n\t// - the NIST curves have cofactor = 1, so this is implicit.\n\t// (We don't foresee an implementation that supports non NIST\n\t// curves)\n\t//\n\t// - for ephemeral keys, we don't need to worry about small\n\t// subgroup attacks.\n\treturn true\n}\n\nfunc (kex *ecdh) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexECDHInit kexECDHInitMsg\n\tif err = Unmarshal(packet, &kexECDHInit); err != nil {\n\t\treturn nil, err\n\t}\n\n\tclientX, clientY, err := unmarshalECKey(kex.curve, kexECDHInit.ClientPubKey)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We could cache this key across multiple users/multiple\n\t// connection attempts, but the benefit is small. OpenSSH\n\t// generates a new key for each incoming connection.\n\tephKey, err := ecdsa.GenerateKey(kex.curve, rand)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\tserializedEphKey := elliptic.Marshal(kex.curve, ephKey.PublicKey.X, ephKey.PublicKey.Y)\n\n\t// generate shared secret\n\tsecret, _ := kex.curve.ScalarMult(clientX, clientY, ephKey.D.Bytes())\n\n\th := ecHash(kex.curve).New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteString(h, kexECDHInit.ClientPubKey)\n\twriteString(h, serializedEphKey)\n\n\tK := make([]byte, intLength(secret))\n\tmarshalInt(K, secret)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, rand, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treply := kexECDHReplyMsg{\n\t\tEphemeralPubKey: serializedEphKey,\n\t\tHostKey:         hostKeyBytes,\n\t\tSignature:       sig,\n\t}\n\n\tserialized := Marshal(&reply)\n\tif err := c.writePacket(serialized); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: sig,\n\t\tHash:      ecHash(kex.curve),\n\t}, nil\n}\n\n// ecHash returns the hash to match the given elliptic curve, see RFC\n// 5656, section 6.2.1\nfunc ecHash(curve elliptic.Curve) crypto.Hash {\n\tbitSize := curve.Params().BitSize\n\tswitch {\n\tcase bitSize <= 256:\n\t\treturn crypto.SHA256\n\tcase bitSize <= 384:\n\t\treturn crypto.SHA384\n\t}\n\treturn crypto.SHA512\n}\n\nvar kexAlgoMap = map[string]kexAlgorithm{}\n\nfunc init() {\n\t// This is the group called diffie-hellman-group1-sha1 in\n\t// RFC 4253 and Oakley Group 2 in RFC 2409.\n\tp, _ := new(big.Int).SetString(\"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF\", 16)\n\tkexAlgoMap[kexAlgoDH1SHA1] = &dhGroup{\n\t\tg:        new(big.Int).SetInt64(2),\n\t\tp:        p,\n\t\tpMinus1:  new(big.Int).Sub(p, bigOne),\n\t\thashFunc: crypto.SHA1,\n\t}\n\n\t// This are the groups called diffie-hellman-group14-sha1 and\n\t// diffie-hellman-group14-sha256 in RFC 4253 and RFC 8268,\n\t// and Oakley Group 14 in RFC 3526.\n\tp, _ = new(big.Int).SetString(\"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF\", 16)\n\tgroup14 := &dhGroup{\n\t\tg:       new(big.Int).SetInt64(2),\n\t\tp:       p,\n\t\tpMinus1: new(big.Int).Sub(p, bigOne),\n\t}\n\n\tkexAlgoMap[kexAlgoDH14SHA1] = &dhGroup{\n\t\tg: group14.g, p: group14.p, pMinus1: group14.pMinus1,\n\t\thashFunc: crypto.SHA1,\n\t}\n\tkexAlgoMap[kexAlgoDH14SHA256] = &dhGroup{\n\t\tg: group14.g, p: group14.p, pMinus1: group14.pMinus1,\n\t\thashFunc: crypto.SHA256,\n\t}\n\n\t// This is the group called diffie-hellman-group16-sha512 in RFC\n\t// 8268 and Oakley Group 16 in RFC 3526.\n\tp, _ = new(big.Int).SetString(\"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AAAC42DAD33170D04507A33A85521ABDF1CBA64ECFB850458DBEF0A8AEA71575D060C7DB3970F85A6E1E4C7ABF5AE8CDB0933D71E8C94E04A25619DCEE3D2261AD2EE6BF12FFA06D98A0864D87602733EC86A64521F2B18177B200CBBE117577A615D6C770988C0BAD946E208E24FA074E5AB3143DB5BFCE0FD108E4B82D120A92108011A723C12A787E6D788719A10BDBA5B2699C327186AF4E23C1A946834B6150BDA2583E9CA2AD44CE8DBBBC2DB04DE8EF92E8EFC141FBECAA6287C59474E6BC05D99B2964FA090C3A2233BA186515BE7ED1F612970CEE2D7AFB81BDD762170481CD0069127D5B05AA993B4EA988D8FDDC186FFB7DC90A6C08F4DF435C934063199FFFFFFFFFFFFFFFF\", 16)\n\n\tkexAlgoMap[kexAlgoDH16SHA512] = &dhGroup{\n\t\tg:        new(big.Int).SetInt64(2),\n\t\tp:        p,\n\t\tpMinus1:  new(big.Int).Sub(p, bigOne),\n\t\thashFunc: crypto.SHA512,\n\t}\n\n\tkexAlgoMap[kexAlgoECDH521] = &ecdh{elliptic.P521()}\n\tkexAlgoMap[kexAlgoECDH384] = &ecdh{elliptic.P384()}\n\tkexAlgoMap[kexAlgoECDH256] = &ecdh{elliptic.P256()}\n\tkexAlgoMap[kexAlgoCurve25519SHA256] = &curve25519sha256{}\n\tkexAlgoMap[kexAlgoCurve25519SHA256LibSSH] = &curve25519sha256{}\n\tkexAlgoMap[kexAlgoDHGEXSHA1] = &dhGEXSHA{hashFunc: crypto.SHA1}\n\tkexAlgoMap[kexAlgoDHGEXSHA256] = &dhGEXSHA{hashFunc: crypto.SHA256}\n}\n\n// curve25519sha256 implements the curve25519-sha256 (formerly known as\n// curve25519-sha256@libssh.org) key exchange method, as described in RFC 8731.\ntype curve25519sha256 struct{}\n\ntype curve25519KeyPair struct {\n\tpriv [32]byte\n\tpub  [32]byte\n}\n\nfunc (kp *curve25519KeyPair) generate(rand io.Reader) error {\n\tif _, err := io.ReadFull(rand, kp.priv[:]); err != nil {\n\t\treturn err\n\t}\n\tcurve25519.ScalarBaseMult(&kp.pub, &kp.priv)\n\treturn nil\n}\n\n// curve25519Zeros is just an array of 32 zero bytes so that we have something\n// convenient to compare against in order to reject curve25519 points with the\n// wrong order.\nvar curve25519Zeros [32]byte\n\nfunc (kex *curve25519sha256) Client(c packetConn, rand io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\tvar kp curve25519KeyPair\n\tif err := kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\tif err := c.writePacket(Marshal(&kexECDHInitMsg{kp.pub[:]})); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar reply kexECDHReplyMsg\n\tif err = Unmarshal(packet, &reply); err != nil {\n\t\treturn nil, err\n\t}\n\tif len(reply.EphemeralPubKey) != 32 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong length\")\n\t}\n\n\tvar servPub, secret [32]byte\n\tcopy(servPub[:], reply.EphemeralPubKey)\n\tcurve25519.ScalarMult(&secret, &kp.priv, &servPub)\n\tif subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong order\")\n\t}\n\n\th := crypto.SHA256.New()\n\tmagics.write(h)\n\twriteString(h, reply.HostKey)\n\twriteString(h, kp.pub[:])\n\twriteString(h, reply.EphemeralPubKey)\n\n\tki := new(big.Int).SetBytes(secret[:])\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   reply.HostKey,\n\t\tSignature: reply.Signature,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n\nfunc (kex *curve25519sha256) Server(c packetConn, rand io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexInit kexECDHInitMsg\n\tif err = Unmarshal(packet, &kexInit); err != nil {\n\t\treturn\n\t}\n\n\tif len(kexInit.ClientPubKey) != 32 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong length\")\n\t}\n\n\tvar kp curve25519KeyPair\n\tif err := kp.generate(rand); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar clientPub, secret [32]byte\n\tcopy(clientPub[:], kexInit.ClientPubKey)\n\tcurve25519.ScalarMult(&secret, &kp.priv, &clientPub)\n\tif subtle.ConstantTimeCompare(secret[:], curve25519Zeros[:]) == 1 {\n\t\treturn nil, errors.New(\"ssh: peer's curve25519 public value has wrong order\")\n\t}\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := crypto.SHA256.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\twriteString(h, kexInit.ClientPubKey)\n\twriteString(h, kp.pub[:])\n\n\tki := new(big.Int).SetBytes(secret[:])\n\tK := make([]byte, intLength(ki))\n\tmarshalInt(K, ki)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\tsig, err := signAndMarshal(priv, rand, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treply := kexECDHReplyMsg{\n\t\tEphemeralPubKey: kp.pub[:],\n\t\tHostKey:         hostKeyBytes,\n\t\tSignature:       sig,\n\t}\n\tif err := c.writePacket(Marshal(&reply)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      crypto.SHA256,\n\t}, nil\n}\n\n// dhGEXSHA implements the diffie-hellman-group-exchange-sha1 and\n// diffie-hellman-group-exchange-sha256 key agreement protocols,\n// as described in RFC 4419\ntype dhGEXSHA struct {\n\thashFunc crypto.Hash\n}\n\nconst (\n\tdhGroupExchangeMinimumBits   = 2048\n\tdhGroupExchangePreferredBits = 2048\n\tdhGroupExchangeMaximumBits   = 8192\n)\n\nfunc (gex *dhGEXSHA) Client(c packetConn, randSource io.Reader, magics *handshakeMagics) (*kexResult, error) {\n\t// Send GexRequest\n\tkexDHGexRequest := kexDHGexRequestMsg{\n\t\tMinBits:      dhGroupExchangeMinimumBits,\n\t\tPreferedBits: dhGroupExchangePreferredBits,\n\t\tMaxBits:      dhGroupExchangeMaximumBits,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHGexRequest)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexGroup\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar msg kexDHGexGroupMsg\n\tif err = Unmarshal(packet, &msg); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// reject if p's bit length < dhGroupExchangeMinimumBits or > dhGroupExchangeMaximumBits\n\tif msg.P.BitLen() < dhGroupExchangeMinimumBits || msg.P.BitLen() > dhGroupExchangeMaximumBits {\n\t\treturn nil, fmt.Errorf(\"ssh: server-generated gex p is out of range (%d bits)\", msg.P.BitLen())\n\t}\n\n\t// Check if g is safe by verifying that 1 < g < p-1\n\tpMinusOne := new(big.Int).Sub(msg.P, bigOne)\n\tif msg.G.Cmp(bigOne) <= 0 || msg.G.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, fmt.Errorf(\"ssh: server provided gex g is not safe\")\n\t}\n\n\t// Send GexInit\n\tpHalf := new(big.Int).Rsh(msg.P, 1)\n\tx, err := rand.Int(randSource, pHalf)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tX := new(big.Int).Exp(msg.G, x, msg.P)\n\tkexDHGexInit := kexDHGexInitMsg{\n\t\tX: X,\n\t}\n\tif err := c.writePacket(Marshal(&kexDHGexInit)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexReply\n\tpacket, err = c.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kexDHGexReply kexDHGexReplyMsg\n\tif err = Unmarshal(packet, &kexDHGexReply); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif kexDHGexReply.Y.Cmp(bigOne) <= 0 || kexDHGexReply.Y.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\tkInt := new(big.Int).Exp(kexDHGexReply.Y, x, msg.P)\n\n\t// Check if k is safe by verifying that k > 1 and k < p - 1\n\tif kInt.Cmp(bigOne) <= 0 || kInt.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, fmt.Errorf(\"ssh: derived k is not safe\")\n\t}\n\n\th := gex.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, kexDHGexReply.HostKey)\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits))\n\twriteInt(h, msg.P)\n\twriteInt(h, msg.G)\n\twriteInt(h, X)\n\twriteInt(h, kexDHGexReply.Y)\n\tK := make([]byte, intLength(kInt))\n\tmarshalInt(K, kInt)\n\th.Write(K)\n\n\treturn &kexResult{\n\t\tH:         h.Sum(nil),\n\t\tK:         K,\n\t\tHostKey:   kexDHGexReply.HostKey,\n\t\tSignature: kexDHGexReply.Signature,\n\t\tHash:      gex.hashFunc,\n\t}, nil\n}\n\n// Server half implementation of the Diffie Hellman Key Exchange with SHA1 and SHA256.\n//\n// This is a minimal implementation to satisfy the automated tests.\nfunc (gex dhGEXSHA) Server(c packetConn, randSource io.Reader, magics *handshakeMagics, priv AlgorithmSigner, algo string) (result *kexResult, err error) {\n\t// Receive GexRequest\n\tpacket, err := c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHGexRequest kexDHGexRequestMsg\n\tif err = Unmarshal(packet, &kexDHGexRequest); err != nil {\n\t\treturn\n\t}\n\n\t// Send GexGroup\n\t// This is the group called diffie-hellman-group14-sha1 in RFC\n\t// 4253 and Oakley Group 14 in RFC 3526.\n\tp, _ := new(big.Int).SetString(\"FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F14374FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7EDEE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF0598DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3BE39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF6955817183995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF\", 16)\n\tg := big.NewInt(2)\n\n\tmsg := &kexDHGexGroupMsg{\n\t\tP: p,\n\t\tG: g,\n\t}\n\tif err := c.writePacket(Marshal(msg)); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Receive GexInit\n\tpacket, err = c.readPacket()\n\tif err != nil {\n\t\treturn\n\t}\n\tvar kexDHGexInit kexDHGexInitMsg\n\tif err = Unmarshal(packet, &kexDHGexInit); err != nil {\n\t\treturn\n\t}\n\n\tpHalf := new(big.Int).Rsh(p, 1)\n\n\ty, err := rand.Int(randSource, pHalf)\n\tif err != nil {\n\t\treturn\n\t}\n\tY := new(big.Int).Exp(g, y, p)\n\n\tpMinusOne := new(big.Int).Sub(p, bigOne)\n\tif kexDHGexInit.X.Cmp(bigOne) <= 0 || kexDHGexInit.X.Cmp(pMinusOne) >= 0 {\n\t\treturn nil, errors.New(\"ssh: DH parameter out of bounds\")\n\t}\n\tkInt := new(big.Int).Exp(kexDHGexInit.X, y, p)\n\n\thostKeyBytes := priv.PublicKey().Marshal()\n\n\th := gex.hashFunc.New()\n\tmagics.write(h)\n\twriteString(h, hostKeyBytes)\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMinimumBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangePreferredBits))\n\tbinary.Write(h, binary.BigEndian, uint32(dhGroupExchangeMaximumBits))\n\twriteInt(h, p)\n\twriteInt(h, g)\n\twriteInt(h, kexDHGexInit.X)\n\twriteInt(h, Y)\n\n\tK := make([]byte, intLength(kInt))\n\tmarshalInt(K, kInt)\n\th.Write(K)\n\n\tH := h.Sum(nil)\n\n\t// H is already a hash, but the hostkey signing will apply its\n\t// own key-specific hash algorithm.\n\tsig, err := signAndMarshal(priv, randSource, H, algo)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tkexDHGexReply := kexDHGexReplyMsg{\n\t\tHostKey:   hostKeyBytes,\n\t\tY:         Y,\n\t\tSignature: sig,\n\t}\n\tpacket = Marshal(&kexDHGexReply)\n\n\terr = c.writePacket(packet)\n\n\treturn &kexResult{\n\t\tH:         H,\n\t\tK:         K,\n\t\tHostKey:   hostKeyBytes,\n\t\tSignature: sig,\n\t\tHash:      gex.hashFunc,\n\t}, err\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/keys.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"crypto\"\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/dsa\"\n\t\"crypto/ecdsa\"\n\t\"crypto/ed25519\"\n\t\"crypto/elliptic\"\n\t\"crypto/md5\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha256\"\n\t\"crypto/x509\"\n\t\"encoding/asn1\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"encoding/hex\"\n\t\"encoding/pem\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"strings\"\n\n\t\"gossh/crypto/ssh/internal/bcrypt_pbkdf\"\n)\n\n// Public key algorithms names. These values can appear in PublicKey.Type,\n// ClientConfig.HostKeyAlgorithms, Signature.Format, or as AlgorithmSigner\n// arguments.\nconst (\n\tKeyAlgoRSA        = \"ssh-rsa\"\n\tKeyAlgoDSA        = \"ssh-dss\"\n\tKeyAlgoECDSA256   = \"ecdsa-sha2-nistp256\"\n\tKeyAlgoSKECDSA256 = \"sk-ecdsa-sha2-nistp256@openssh.com\"\n\tKeyAlgoECDSA384   = \"ecdsa-sha2-nistp384\"\n\tKeyAlgoECDSA521   = \"ecdsa-sha2-nistp521\"\n\tKeyAlgoED25519    = \"ssh-ed25519\"\n\tKeyAlgoSKED25519  = \"sk-ssh-ed25519@openssh.com\"\n\n\t// KeyAlgoRSASHA256 and KeyAlgoRSASHA512 are only public key algorithms, not\n\t// public key formats, so they can't appear as a PublicKey.Type. The\n\t// corresponding PublicKey.Type is KeyAlgoRSA. See RFC 8332, Section 2.\n\tKeyAlgoRSASHA256 = \"rsa-sha2-256\"\n\tKeyAlgoRSASHA512 = \"rsa-sha2-512\"\n)\n\nconst (\n\t// Deprecated: use KeyAlgoRSA.\n\tSigAlgoRSA = KeyAlgoRSA\n\t// Deprecated: use KeyAlgoRSASHA256.\n\tSigAlgoRSASHA2256 = KeyAlgoRSASHA256\n\t// Deprecated: use KeyAlgoRSASHA512.\n\tSigAlgoRSASHA2512 = KeyAlgoRSASHA512\n)\n\n// parsePubKey parses a public key of the given algorithm.\n// Use ParsePublicKey for keys with prepended algorithm.\nfunc parsePubKey(in []byte, algo string) (pubKey PublicKey, rest []byte, err error) {\n\tswitch algo {\n\tcase KeyAlgoRSA:\n\t\treturn parseRSA(in)\n\tcase KeyAlgoDSA:\n\t\treturn parseDSA(in)\n\tcase KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:\n\t\treturn parseECDSA(in)\n\tcase KeyAlgoSKECDSA256:\n\t\treturn parseSKECDSA(in)\n\tcase KeyAlgoED25519:\n\t\treturn parseED25519(in)\n\tcase KeyAlgoSKED25519:\n\t\treturn parseSKEd25519(in)\n\tcase CertAlgoRSAv01, CertAlgoDSAv01, CertAlgoECDSA256v01, CertAlgoECDSA384v01, CertAlgoECDSA521v01, CertAlgoSKECDSA256v01, CertAlgoED25519v01, CertAlgoSKED25519v01:\n\t\tcert, err := parseCert(in, certKeyAlgoNames[algo])\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\treturn cert, nil, nil\n\t}\n\treturn nil, nil, fmt.Errorf(\"ssh: unknown key algorithm: %v\", algo)\n}\n\n// parseAuthorizedKey parses a public key in OpenSSH authorized_keys format\n// (see sshd(8) manual page) once the options and key type fields have been\n// removed.\nfunc parseAuthorizedKey(in []byte) (out PublicKey, comment string, err error) {\n\tin = bytes.TrimSpace(in)\n\n\ti := bytes.IndexAny(in, \" \\t\")\n\tif i == -1 {\n\t\ti = len(in)\n\t}\n\tbase64Key := in[:i]\n\n\tkey := make([]byte, base64.StdEncoding.DecodedLen(len(base64Key)))\n\tn, err := base64.StdEncoding.Decode(key, base64Key)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tkey = key[:n]\n\tout, err = ParsePublicKey(key)\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\tcomment = string(bytes.TrimSpace(in[i:]))\n\treturn out, comment, nil\n}\n\n// ParseKnownHosts parses an entry in the format of the known_hosts file.\n//\n// The known_hosts format is documented in the sshd(8) manual page. This\n// function will parse a single entry from in. On successful return, marker\n// will contain the optional marker value (i.e. \"cert-authority\" or \"revoked\")\n// or else be empty, hosts will contain the hosts that this entry matches,\n// pubKey will contain the public key and comment will contain any trailing\n// comment at the end of the line. See the sshd(8) manual page for the various\n// forms that a host string can take.\n//\n// The unparsed remainder of the input will be returned in rest. This function\n// can be called repeatedly to parse multiple entries.\n//\n// If no entries were found in the input then err will be io.EOF. Otherwise a\n// non-nil err value indicates a parse error.\nfunc ParseKnownHosts(in []byte) (marker string, hosts []string, pubKey PublicKey, comment string, rest []byte, err error) {\n\tfor len(in) > 0 {\n\t\tend := bytes.IndexByte(in, '\\n')\n\t\tif end != -1 {\n\t\t\trest = in[end+1:]\n\t\t\tin = in[:end]\n\t\t} else {\n\t\t\trest = nil\n\t\t}\n\n\t\tend = bytes.IndexByte(in, '\\r')\n\t\tif end != -1 {\n\t\t\tin = in[:end]\n\t\t}\n\n\t\tin = bytes.TrimSpace(in)\n\t\tif len(in) == 0 || in[0] == '#' {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\ti := bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\t// Strip out the beginning of the known_host key.\n\t\t// This is either an optional marker or a (set of) hostname(s).\n\t\tkeyFields := bytes.Fields(in)\n\t\tif len(keyFields) < 3 || len(keyFields) > 5 {\n\t\t\treturn \"\", nil, nil, \"\", nil, errors.New(\"ssh: invalid entry in known_hosts data\")\n\t\t}\n\n\t\t// keyFields[0] is either \"@cert-authority\", \"@revoked\" or a comma separated\n\t\t// list of hosts\n\t\tmarker := \"\"\n\t\tif keyFields[0][0] == '@' {\n\t\t\tmarker = string(keyFields[0][1:])\n\t\t\tkeyFields = keyFields[1:]\n\t\t}\n\n\t\thosts := string(keyFields[0])\n\t\t// keyFields[1] contains the key type (e.g. “ssh-rsa”).\n\t\t// However, that information is duplicated inside the\n\t\t// base64-encoded key and so is ignored here.\n\n\t\tkey := bytes.Join(keyFields[2:], []byte(\" \"))\n\t\tif pubKey, comment, err = parseAuthorizedKey(key); err != nil {\n\t\t\treturn \"\", nil, nil, \"\", nil, err\n\t\t}\n\n\t\treturn marker, strings.Split(hosts, \",\"), pubKey, comment, rest, nil\n\t}\n\n\treturn \"\", nil, nil, \"\", nil, io.EOF\n}\n\n// ParseAuthorizedKey parses a public key from an authorized_keys\n// file used in OpenSSH according to the sshd(8) manual page.\nfunc ParseAuthorizedKey(in []byte) (out PublicKey, comment string, options []string, rest []byte, err error) {\n\tfor len(in) > 0 {\n\t\tend := bytes.IndexByte(in, '\\n')\n\t\tif end != -1 {\n\t\t\trest = in[end+1:]\n\t\t\tin = in[:end]\n\t\t} else {\n\t\t\trest = nil\n\t\t}\n\n\t\tend = bytes.IndexByte(in, '\\r')\n\t\tif end != -1 {\n\t\t\tin = in[:end]\n\t\t}\n\n\t\tin = bytes.TrimSpace(in)\n\t\tif len(in) == 0 || in[0] == '#' {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\ti := bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tif out, comment, err = parseAuthorizedKey(in[i:]); err == nil {\n\t\t\treturn out, comment, options, rest, nil\n\t\t}\n\n\t\t// No key type recognised. Maybe there's an options field at\n\t\t// the beginning.\n\t\tvar b byte\n\t\tinQuote := false\n\t\tvar candidateOptions []string\n\t\toptionStart := 0\n\t\tfor i, b = range in {\n\t\t\tisEnd := !inQuote && (b == ' ' || b == '\\t')\n\t\t\tif (b == ',' && !inQuote) || isEnd {\n\t\t\t\tif i-optionStart > 0 {\n\t\t\t\t\tcandidateOptions = append(candidateOptions, string(in[optionStart:i]))\n\t\t\t\t}\n\t\t\t\toptionStart = i + 1\n\t\t\t}\n\t\t\tif isEnd {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif b == '\"' && (i == 0 || (i > 0 && in[i-1] != '\\\\')) {\n\t\t\t\tinQuote = !inQuote\n\t\t\t}\n\t\t}\n\t\tfor i < len(in) && (in[i] == ' ' || in[i] == '\\t') {\n\t\t\ti++\n\t\t}\n\t\tif i == len(in) {\n\t\t\t// Invalid line: unmatched quote\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tin = in[i:]\n\t\ti = bytes.IndexAny(in, \" \\t\")\n\t\tif i == -1 {\n\t\t\tin = rest\n\t\t\tcontinue\n\t\t}\n\n\t\tif out, comment, err = parseAuthorizedKey(in[i:]); err == nil {\n\t\t\toptions = candidateOptions\n\t\t\treturn out, comment, options, rest, nil\n\t\t}\n\n\t\tin = rest\n\t\tcontinue\n\t}\n\n\treturn nil, \"\", nil, nil, errors.New(\"ssh: no key found\")\n}\n\n// ParsePublicKey parses an SSH public key formatted for use in\n// the SSH wire protocol according to RFC 4253, section 6.6.\nfunc ParsePublicKey(in []byte) (out PublicKey, err error) {\n\talgo, in, ok := parseString(in)\n\tif !ok {\n\t\treturn nil, errShortRead\n\t}\n\tvar rest []byte\n\tout, rest, err = parsePubKey(in, string(algo))\n\tif len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: trailing junk in public key\")\n\t}\n\n\treturn out, err\n}\n\n// MarshalAuthorizedKey serializes key for inclusion in an OpenSSH\n// authorized_keys file. The return value ends with newline.\nfunc MarshalAuthorizedKey(key PublicKey) []byte {\n\tb := &bytes.Buffer{}\n\tb.WriteString(key.Type())\n\tb.WriteByte(' ')\n\te := base64.NewEncoder(base64.StdEncoding, b)\n\te.Write(key.Marshal())\n\te.Close()\n\tb.WriteByte('\\n')\n\treturn b.Bytes()\n}\n\n// MarshalPrivateKey returns a PEM block with the private key serialized in the\n// OpenSSH format.\nfunc MarshalPrivateKey(key crypto.PrivateKey, comment string) (*pem.Block, error) {\n\treturn marshalOpenSSHPrivateKey(key, comment, unencryptedOpenSSHMarshaler)\n}\n\n// MarshalPrivateKeyWithPassphrase returns a PEM block holding the encrypted\n// private key serialized in the OpenSSH format.\nfunc MarshalPrivateKeyWithPassphrase(key crypto.PrivateKey, comment string, passphrase []byte) (*pem.Block, error) {\n\treturn marshalOpenSSHPrivateKey(key, comment, passphraseProtectedOpenSSHMarshaler(passphrase))\n}\n\n// PublicKey represents a public key using an unspecified algorithm.\n//\n// Some PublicKeys provided by this package also implement CryptoPublicKey.\ntype PublicKey interface {\n\t// Type returns the key format name, e.g. \"ssh-rsa\".\n\tType() string\n\n\t// Marshal returns the serialized key data in SSH wire format, with the name\n\t// prefix. To unmarshal the returned data, use the ParsePublicKey function.\n\tMarshal() []byte\n\n\t// Verify that sig is a signature on the given data using this key. This\n\t// method will hash the data appropriately first. sig.Format is allowed to\n\t// be any signature algorithm compatible with the key type, the caller\n\t// should check if it has more stringent requirements.\n\tVerify(data []byte, sig *Signature) error\n}\n\n// CryptoPublicKey, if implemented by a PublicKey,\n// returns the underlying crypto.PublicKey form of the key.\ntype CryptoPublicKey interface {\n\tCryptoPublicKey() crypto.PublicKey\n}\n\n// A Signer can create signatures that verify against a public key.\n//\n// Some Signers provided by this package also implement MultiAlgorithmSigner.\ntype Signer interface {\n\t// PublicKey returns the associated PublicKey.\n\tPublicKey() PublicKey\n\n\t// Sign returns a signature for the given data. This method will hash the\n\t// data appropriately first. The signature algorithm is expected to match\n\t// the key format returned by the PublicKey.Type method (and not to be any\n\t// alternative algorithm supported by the key format).\n\tSign(rand io.Reader, data []byte) (*Signature, error)\n}\n\n// An AlgorithmSigner is a Signer that also supports specifying an algorithm to\n// use for signing.\n//\n// An AlgorithmSigner can't advertise the algorithms it supports, unless it also\n// implements MultiAlgorithmSigner, so it should be prepared to be invoked with\n// every algorithm supported by the public key format.\ntype AlgorithmSigner interface {\n\tSigner\n\n\t// SignWithAlgorithm is like Signer.Sign, but allows specifying a desired\n\t// signing algorithm. Callers may pass an empty string for the algorithm in\n\t// which case the AlgorithmSigner will use a default algorithm. This default\n\t// doesn't currently control any behavior in this package.\n\tSignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error)\n}\n\n// MultiAlgorithmSigner is an AlgorithmSigner that also reports the algorithms\n// supported by that signer.\ntype MultiAlgorithmSigner interface {\n\tAlgorithmSigner\n\n\t// Algorithms returns the available algorithms in preference order. The list\n\t// must not be empty, and it must not include certificate types.\n\tAlgorithms() []string\n}\n\n// NewSignerWithAlgorithms returns a signer restricted to the specified\n// algorithms. The algorithms must be set in preference order. The list must not\n// be empty, and it must not include certificate types. An error is returned if\n// the specified algorithms are incompatible with the public key type.\nfunc NewSignerWithAlgorithms(signer AlgorithmSigner, algorithms []string) (MultiAlgorithmSigner, error) {\n\tif len(algorithms) == 0 {\n\t\treturn nil, errors.New(\"ssh: please specify at least one valid signing algorithm\")\n\t}\n\tvar signerAlgos []string\n\tsupportedAlgos := algorithmsForKeyFormat(underlyingAlgo(signer.PublicKey().Type()))\n\tif s, ok := signer.(*multiAlgorithmSigner); ok {\n\t\tsignerAlgos = s.Algorithms()\n\t} else {\n\t\tsignerAlgos = supportedAlgos\n\t}\n\n\tfor _, algo := range algorithms {\n\t\tif !contains(supportedAlgos, algo) {\n\t\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is not supported for key type %q\",\n\t\t\t\talgo, signer.PublicKey().Type())\n\t\t}\n\t\tif !contains(signerAlgos, algo) {\n\t\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is restricted for the provided signer\", algo)\n\t\t}\n\t}\n\treturn &multiAlgorithmSigner{\n\t\tAlgorithmSigner:     signer,\n\t\tsupportedAlgorithms: algorithms,\n\t}, nil\n}\n\ntype multiAlgorithmSigner struct {\n\tAlgorithmSigner\n\tsupportedAlgorithms []string\n}\n\nfunc (s *multiAlgorithmSigner) Algorithms() []string {\n\treturn s.supportedAlgorithms\n}\n\nfunc (s *multiAlgorithmSigner) isAlgorithmSupported(algorithm string) bool {\n\tif algorithm == \"\" {\n\t\talgorithm = underlyingAlgo(s.PublicKey().Type())\n\t}\n\tfor _, algo := range s.supportedAlgorithms {\n\t\tif algorithm == algo {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (s *multiAlgorithmSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif !s.isAlgorithmSupported(algorithm) {\n\t\treturn nil, fmt.Errorf(\"ssh: algorithm %q is not supported: %v\", algorithm, s.supportedAlgorithms)\n\t}\n\treturn s.AlgorithmSigner.SignWithAlgorithm(rand, data, algorithm)\n}\n\ntype rsaPublicKey rsa.PublicKey\n\nfunc (r *rsaPublicKey) Type() string {\n\treturn \"ssh-rsa\"\n}\n\n// parseRSA parses an RSA key according to RFC 4253, section 6.6.\nfunc parseRSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tE    *big.Int\n\t\tN    *big.Int\n\t\tRest []byte `ssh:\"rest\"`\n\t}\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif w.E.BitLen() > 24 {\n\t\treturn nil, nil, errors.New(\"ssh: exponent too large\")\n\t}\n\te := w.E.Int64()\n\tif e < 3 || e&1 == 0 {\n\t\treturn nil, nil, errors.New(\"ssh: incorrect exponent\")\n\t}\n\n\tvar key rsa.PublicKey\n\tkey.E = int(e)\n\tkey.N = w.N\n\treturn (*rsaPublicKey)(&key), w.Rest, nil\n}\n\nfunc (r *rsaPublicKey) Marshal() []byte {\n\te := new(big.Int).SetInt64(int64(r.E))\n\t// RSA publickey struct layout should match the struct used by\n\t// parseRSACert in the x/crypto/ssh/agent package.\n\twirekey := struct {\n\t\tName string\n\t\tE    *big.Int\n\t\tN    *big.Int\n\t}{\n\t\tKeyAlgoRSA,\n\t\te,\n\t\tr.N,\n\t}\n\treturn Marshal(&wirekey)\n}\n\nfunc (r *rsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tsupportedAlgos := algorithmsForKeyFormat(r.Type())\n\tif !contains(supportedAlgos, sig.Format) {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, r.Type())\n\t}\n\thash := hashFuncs[sig.Format]\n\th := hash.New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\treturn rsa.VerifyPKCS1v15((*rsa.PublicKey)(r), hash, digest, sig.Blob)\n}\n\nfunc (r *rsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*rsa.PublicKey)(r)\n}\n\ntype dsaPublicKey dsa.PublicKey\n\nfunc (k *dsaPublicKey) Type() string {\n\treturn \"ssh-dss\"\n}\n\nfunc checkDSAParams(param *dsa.Parameters) error {\n\t// SSH specifies FIPS 186-2, which only provided a single size\n\t// (1024 bits) DSA key. FIPS 186-3 allows for larger key\n\t// sizes, which would confuse SSH.\n\tif l := param.P.BitLen(); l != 1024 {\n\t\treturn fmt.Errorf(\"ssh: unsupported DSA key size %d\", l)\n\t}\n\n\treturn nil\n}\n\n// parseDSA parses an DSA key according to RFC 4253, section 6.6.\nfunc parseDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tP, Q, G, Y *big.Int\n\t\tRest       []byte `ssh:\"rest\"`\n\t}\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tparam := dsa.Parameters{\n\t\tP: w.P,\n\t\tQ: w.Q,\n\t\tG: w.G,\n\t}\n\tif err := checkDSAParams(&param); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := &dsaPublicKey{\n\t\tParameters: param,\n\t\tY:          w.Y,\n\t}\n\treturn key, w.Rest, nil\n}\n\nfunc (k *dsaPublicKey) Marshal() []byte {\n\t// DSA publickey struct layout should match the struct used by\n\t// parseDSACert in the x/crypto/ssh/agent package.\n\tw := struct {\n\t\tName       string\n\t\tP, Q, G, Y *big.Int\n\t}{\n\t\tk.Type(),\n\t\tk.P,\n\t\tk.Q,\n\t\tk.G,\n\t\tk.Y,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *dsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\th := hashFuncs[sig.Format].New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\n\t// Per RFC 4253, section 6.6,\n\t// The value for 'dss_signature_blob' is encoded as a string containing\n\t// r, followed by s (which are 160-bit integers, without lengths or\n\t// padding, unsigned, and in network byte order).\n\t// For DSS purposes, sig.Blob should be exactly 40 bytes in length.\n\tif len(sig.Blob) != 40 {\n\t\treturn errors.New(\"ssh: DSA signature parse error\")\n\t}\n\tr := new(big.Int).SetBytes(sig.Blob[:20])\n\ts := new(big.Int).SetBytes(sig.Blob[20:])\n\tif dsa.Verify((*dsa.PublicKey)(k), digest, r, s) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\nfunc (k *dsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*dsa.PublicKey)(k)\n}\n\ntype dsaPrivateKey struct {\n\t*dsa.PrivateKey\n}\n\nfunc (k *dsaPrivateKey) PublicKey() PublicKey {\n\treturn (*dsaPublicKey)(&k.PrivateKey.PublicKey)\n}\n\nfunc (k *dsaPrivateKey) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn k.SignWithAlgorithm(rand, data, k.PublicKey().Type())\n}\n\nfunc (k *dsaPrivateKey) Algorithms() []string {\n\treturn []string{k.PublicKey().Type()}\n}\n\nfunc (k *dsaPrivateKey) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm != \"\" && algorithm != k.PublicKey().Type() {\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported signature algorithm %s\", algorithm)\n\t}\n\n\th := hashFuncs[k.PublicKey().Type()].New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\tr, s, err := dsa.Sign(rand, k.PrivateKey, digest)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tsig := make([]byte, 40)\n\trb := r.Bytes()\n\tsb := s.Bytes()\n\n\tcopy(sig[20-len(rb):20], rb)\n\tcopy(sig[40-len(sb):], sb)\n\n\treturn &Signature{\n\t\tFormat: k.PublicKey().Type(),\n\t\tBlob:   sig,\n\t}, nil\n}\n\ntype ecdsaPublicKey ecdsa.PublicKey\n\nfunc (k *ecdsaPublicKey) Type() string {\n\treturn \"ecdsa-sha2-\" + k.nistID()\n}\n\nfunc (k *ecdsaPublicKey) nistID() string {\n\tswitch k.Params().BitSize {\n\tcase 256:\n\t\treturn \"nistp256\"\n\tcase 384:\n\t\treturn \"nistp384\"\n\tcase 521:\n\t\treturn \"nistp521\"\n\t}\n\tpanic(\"ssh: unsupported ecdsa key size\")\n}\n\ntype ed25519PublicKey ed25519.PublicKey\n\nfunc (k ed25519PublicKey) Type() string {\n\treturn KeyAlgoED25519\n}\n\nfunc parseED25519(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tKeyBytes []byte\n\t\tRest     []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif l := len(w.KeyBytes); l != ed25519.PublicKeySize {\n\t\treturn nil, nil, fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\treturn ed25519PublicKey(w.KeyBytes), w.Rest, nil\n}\n\nfunc (k ed25519PublicKey) Marshal() []byte {\n\tw := struct {\n\t\tName     string\n\t\tKeyBytes []byte\n\t}{\n\t\tKeyAlgoED25519,\n\t\t[]byte(k),\n\t}\n\treturn Marshal(&w)\n}\n\nfunc (k ed25519PublicKey) Verify(b []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\tif l := len(k); l != ed25519.PublicKeySize {\n\t\treturn fmt.Errorf(\"ssh: invalid size %d for Ed25519 public key\", l)\n\t}\n\n\tif ok := ed25519.Verify(ed25519.PublicKey(k), b, sig.Blob); !ok {\n\t\treturn errors.New(\"ssh: signature did not verify\")\n\t}\n\n\treturn nil\n}\n\nfunc (k ed25519PublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn ed25519.PublicKey(k)\n}\n\nfunc supportedEllipticCurve(curve elliptic.Curve) bool {\n\treturn curve == elliptic.P256() || curve == elliptic.P384() || curve == elliptic.P521()\n}\n\n// parseECDSA parses an ECDSA key according to RFC 5656, section 3.1.\nfunc parseECDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tCurve    string\n\t\tKeyBytes []byte\n\t\tRest     []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := new(ecdsa.PublicKey)\n\n\tswitch w.Curve {\n\tcase \"nistp256\":\n\t\tkey.Curve = elliptic.P256()\n\tcase \"nistp384\":\n\t\tkey.Curve = elliptic.P384()\n\tcase \"nistp521\":\n\t\tkey.Curve = elliptic.P521()\n\tdefault:\n\t\treturn nil, nil, errors.New(\"ssh: unsupported curve\")\n\t}\n\n\tkey.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes)\n\tif key.X == nil || key.Y == nil {\n\t\treturn nil, nil, errors.New(\"ssh: invalid curve point\")\n\t}\n\treturn (*ecdsaPublicKey)(key), w.Rest, nil\n}\n\nfunc (k *ecdsaPublicKey) Marshal() []byte {\n\t// See RFC 5656, section 3.1.\n\tkeyBytes := elliptic.Marshal(k.Curve, k.X, k.Y)\n\t// ECDSA publickey struct layout should match the struct used by\n\t// parseECDSACert in the x/crypto/ssh/agent package.\n\tw := struct {\n\t\tName string\n\t\tID   string\n\t\tKey  []byte\n\t}{\n\t\tk.Type(),\n\t\tk.nistID(),\n\t\tkeyBytes,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *ecdsaPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\n\th := hashFuncs[sig.Format].New()\n\th.Write(data)\n\tdigest := h.Sum(nil)\n\n\t// Per RFC 5656, section 3.1.2,\n\t// The ecdsa_signature_blob value has the following specific encoding:\n\t//    mpint    r\n\t//    mpint    s\n\tvar ecSig struct {\n\t\tR *big.Int\n\t\tS *big.Int\n\t}\n\n\tif err := Unmarshal(sig.Blob, &ecSig); err != nil {\n\t\treturn err\n\t}\n\n\tif ecdsa.Verify((*ecdsa.PublicKey)(k), digest, ecSig.R, ecSig.S) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\nfunc (k *ecdsaPublicKey) CryptoPublicKey() crypto.PublicKey {\n\treturn (*ecdsa.PublicKey)(k)\n}\n\n// skFields holds the additional fields present in U2F/FIDO2 signatures.\n// See openssh/PROTOCOL.u2f 'SSH U2F Signatures' for details.\ntype skFields struct {\n\t// Flags contains U2F/FIDO2 flags such as 'user present'\n\tFlags byte\n\t// Counter is a monotonic signature counter which can be\n\t// used to detect concurrent use of a private key, should\n\t// it be extracted from hardware.\n\tCounter uint32\n}\n\ntype skECDSAPublicKey struct {\n\t// application is a URL-like string, typically \"ssh:\" for SSH.\n\t// see openssh/PROTOCOL.u2f for details.\n\tapplication string\n\tecdsa.PublicKey\n}\n\nfunc (k *skECDSAPublicKey) Type() string {\n\treturn KeyAlgoSKECDSA256\n}\n\nfunc (k *skECDSAPublicKey) nistID() string {\n\treturn \"nistp256\"\n}\n\nfunc parseSKECDSA(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tCurve       string\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t\tRest        []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tkey := new(skECDSAPublicKey)\n\tkey.application = w.Application\n\n\tif w.Curve != \"nistp256\" {\n\t\treturn nil, nil, errors.New(\"ssh: unsupported curve\")\n\t}\n\tkey.Curve = elliptic.P256()\n\n\tkey.X, key.Y = elliptic.Unmarshal(key.Curve, w.KeyBytes)\n\tif key.X == nil || key.Y == nil {\n\t\treturn nil, nil, errors.New(\"ssh: invalid curve point\")\n\t}\n\n\treturn key, w.Rest, nil\n}\n\nfunc (k *skECDSAPublicKey) Marshal() []byte {\n\t// See RFC 5656, section 3.1.\n\tkeyBytes := elliptic.Marshal(k.Curve, k.X, k.Y)\n\tw := struct {\n\t\tName        string\n\t\tID          string\n\t\tKey         []byte\n\t\tApplication string\n\t}{\n\t\tk.Type(),\n\t\tk.nistID(),\n\t\tkeyBytes,\n\t\tk.application,\n\t}\n\n\treturn Marshal(&w)\n}\n\nfunc (k *skECDSAPublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\n\th := hashFuncs[sig.Format].New()\n\th.Write([]byte(k.application))\n\tappDigest := h.Sum(nil)\n\n\th.Reset()\n\th.Write(data)\n\tdataDigest := h.Sum(nil)\n\n\tvar ecSig struct {\n\t\tR *big.Int\n\t\tS *big.Int\n\t}\n\tif err := Unmarshal(sig.Blob, &ecSig); err != nil {\n\t\treturn err\n\t}\n\n\tvar skf skFields\n\tif err := Unmarshal(sig.Rest, &skf); err != nil {\n\t\treturn err\n\t}\n\n\tblob := struct {\n\t\tApplicationDigest []byte `ssh:\"rest\"`\n\t\tFlags             byte\n\t\tCounter           uint32\n\t\tMessageDigest     []byte `ssh:\"rest\"`\n\t}{\n\t\tappDigest,\n\t\tskf.Flags,\n\t\tskf.Counter,\n\t\tdataDigest,\n\t}\n\n\toriginal := Marshal(blob)\n\n\th.Reset()\n\th.Write(original)\n\tdigest := h.Sum(nil)\n\n\tif ecdsa.Verify((*ecdsa.PublicKey)(&k.PublicKey), digest, ecSig.R, ecSig.S) {\n\t\treturn nil\n\t}\n\treturn errors.New(\"ssh: signature did not verify\")\n}\n\ntype skEd25519PublicKey struct {\n\t// application is a URL-like string, typically \"ssh:\" for SSH.\n\t// see openssh/PROTOCOL.u2f for details.\n\tapplication string\n\ted25519.PublicKey\n}\n\nfunc (k *skEd25519PublicKey) Type() string {\n\treturn KeyAlgoSKED25519\n}\n\nfunc parseSKEd25519(in []byte) (out PublicKey, rest []byte, err error) {\n\tvar w struct {\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t\tRest        []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(in, &w); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif l := len(w.KeyBytes); l != ed25519.PublicKeySize {\n\t\treturn nil, nil, fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\tkey := new(skEd25519PublicKey)\n\tkey.application = w.Application\n\tkey.PublicKey = ed25519.PublicKey(w.KeyBytes)\n\n\treturn key, w.Rest, nil\n}\n\nfunc (k *skEd25519PublicKey) Marshal() []byte {\n\tw := struct {\n\t\tName        string\n\t\tKeyBytes    []byte\n\t\tApplication string\n\t}{\n\t\tKeyAlgoSKED25519,\n\t\t[]byte(k.PublicKey),\n\t\tk.application,\n\t}\n\treturn Marshal(&w)\n}\n\nfunc (k *skEd25519PublicKey) Verify(data []byte, sig *Signature) error {\n\tif sig.Format != k.Type() {\n\t\treturn fmt.Errorf(\"ssh: signature type %s for key type %s\", sig.Format, k.Type())\n\t}\n\tif l := len(k.PublicKey); l != ed25519.PublicKeySize {\n\t\treturn fmt.Errorf(\"invalid size %d for Ed25519 public key\", l)\n\t}\n\n\th := hashFuncs[sig.Format].New()\n\th.Write([]byte(k.application))\n\tappDigest := h.Sum(nil)\n\n\th.Reset()\n\th.Write(data)\n\tdataDigest := h.Sum(nil)\n\n\tvar edSig struct {\n\t\tSignature []byte `ssh:\"rest\"`\n\t}\n\n\tif err := Unmarshal(sig.Blob, &edSig); err != nil {\n\t\treturn err\n\t}\n\n\tvar skf skFields\n\tif err := Unmarshal(sig.Rest, &skf); err != nil {\n\t\treturn err\n\t}\n\n\tblob := struct {\n\t\tApplicationDigest []byte `ssh:\"rest\"`\n\t\tFlags             byte\n\t\tCounter           uint32\n\t\tMessageDigest     []byte `ssh:\"rest\"`\n\t}{\n\t\tappDigest,\n\t\tskf.Flags,\n\t\tskf.Counter,\n\t\tdataDigest,\n\t}\n\n\toriginal := Marshal(blob)\n\n\tif ok := ed25519.Verify(k.PublicKey, original, edSig.Signature); !ok {\n\t\treturn errors.New(\"ssh: signature did not verify\")\n\t}\n\n\treturn nil\n}\n\n// NewSignerFromKey takes an *rsa.PrivateKey, *dsa.PrivateKey,\n// *ecdsa.PrivateKey or any other crypto.Signer and returns a\n// corresponding Signer instance. ECDSA keys must use P-256, P-384 or\n// P-521. DSA keys must use parameter size L1024N160.\nfunc NewSignerFromKey(key any) (Signer, error) {\n\tswitch key := key.(type) {\n\tcase crypto.Signer:\n\t\treturn NewSignerFromSigner(key)\n\tcase *dsa.PrivateKey:\n\t\treturn newDSAPrivateKey(key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", key)\n\t}\n}\n\nfunc newDSAPrivateKey(key *dsa.PrivateKey) (Signer, error) {\n\tif err := checkDSAParams(&key.PublicKey.Parameters); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &dsaPrivateKey{key}, nil\n}\n\ntype wrappedSigner struct {\n\tsigner crypto.Signer\n\tpubKey PublicKey\n}\n\n// NewSignerFromSigner takes any crypto.Signer implementation and\n// returns a corresponding Signer interface. This can be used, for\n// example, with keys kept in hardware modules.\nfunc NewSignerFromSigner(signer crypto.Signer) (Signer, error) {\n\tpubKey, err := NewPublicKey(signer.Public())\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &wrappedSigner{signer, pubKey}, nil\n}\n\nfunc (s *wrappedSigner) PublicKey() PublicKey {\n\treturn s.pubKey\n}\n\nfunc (s *wrappedSigner) Sign(rand io.Reader, data []byte) (*Signature, error) {\n\treturn s.SignWithAlgorithm(rand, data, s.pubKey.Type())\n}\n\nfunc (s *wrappedSigner) Algorithms() []string {\n\treturn algorithmsForKeyFormat(s.pubKey.Type())\n}\n\nfunc (s *wrappedSigner) SignWithAlgorithm(rand io.Reader, data []byte, algorithm string) (*Signature, error) {\n\tif algorithm == \"\" {\n\t\talgorithm = s.pubKey.Type()\n\t}\n\n\tif !contains(s.Algorithms(), algorithm) {\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported signature algorithm %q for key format %q\", algorithm, s.pubKey.Type())\n\t}\n\n\thashFunc := hashFuncs[algorithm]\n\tvar digest []byte\n\tif hashFunc != 0 {\n\t\th := hashFunc.New()\n\t\th.Write(data)\n\t\tdigest = h.Sum(nil)\n\t} else {\n\t\tdigest = data\n\t}\n\n\tsignature, err := s.signer.Sign(rand, digest, hashFunc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// crypto.Signer.Sign is expected to return an ASN.1-encoded signature\n\t// for ECDSA and DSA, but that's not the encoding expected by SSH, so\n\t// re-encode.\n\tswitch s.pubKey.(type) {\n\tcase *ecdsaPublicKey, *dsaPublicKey:\n\t\ttype asn1Signature struct {\n\t\t\tR, S *big.Int\n\t\t}\n\t\tasn1Sig := new(asn1Signature)\n\t\t_, err := asn1.Unmarshal(signature, asn1Sig)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch s.pubKey.(type) {\n\t\tcase *ecdsaPublicKey:\n\t\t\tsignature = Marshal(asn1Sig)\n\n\t\tcase *dsaPublicKey:\n\t\t\tsignature = make([]byte, 40)\n\t\t\tr := asn1Sig.R.Bytes()\n\t\t\ts := asn1Sig.S.Bytes()\n\t\t\tcopy(signature[20-len(r):20], r)\n\t\t\tcopy(signature[40-len(s):40], s)\n\t\t}\n\t}\n\n\treturn &Signature{\n\t\tFormat: algorithm,\n\t\tBlob:   signature,\n\t}, nil\n}\n\n// NewPublicKey takes an *rsa.PublicKey, *dsa.PublicKey, *ecdsa.PublicKey,\n// or ed25519.PublicKey returns a corresponding PublicKey instance.\n// ECDSA keys must use P-256, P-384 or P-521.\nfunc NewPublicKey(key any) (PublicKey, error) {\n\tswitch key := key.(type) {\n\tcase *rsa.PublicKey:\n\t\treturn (*rsaPublicKey)(key), nil\n\tcase *ecdsa.PublicKey:\n\t\tif !supportedEllipticCurve(key.Curve) {\n\t\t\treturn nil, errors.New(\"ssh: only P-256, P-384 and P-521 EC keys are supported\")\n\t\t}\n\t\treturn (*ecdsaPublicKey)(key), nil\n\tcase *dsa.PublicKey:\n\t\treturn (*dsaPublicKey)(key), nil\n\tcase ed25519.PublicKey:\n\t\tif l := len(key); l != ed25519.PublicKeySize {\n\t\t\treturn nil, fmt.Errorf(\"ssh: invalid size %d for Ed25519 public key\", l)\n\t\t}\n\t\treturn ed25519PublicKey(key), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", key)\n\t}\n}\n\n// ParsePrivateKey returns a Signer from a PEM encoded private key. It supports\n// the same keys as ParseRawPrivateKey. If the private key is encrypted, it\n// will return a PassphraseMissingError.\nfunc ParsePrivateKey(pemBytes []byte) (Signer, error) {\n\tkey, err := ParseRawPrivateKey(pemBytes)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewSignerFromKey(key)\n}\n\n// ParsePrivateKeyWithPassphrase returns a Signer from a PEM encoded private\n// key and passphrase. It supports the same keys as\n// ParseRawPrivateKeyWithPassphrase.\nfunc ParsePrivateKeyWithPassphrase(pemBytes, passphrase []byte) (Signer, error) {\n\tkey, err := ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewSignerFromKey(key)\n}\n\n// encryptedBlock tells whether a private key is\n// encrypted by examining its Proc-Type header\n// for a mention of ENCRYPTED\n// according to RFC 1421 Section 4.6.1.1.\nfunc encryptedBlock(block *pem.Block) bool {\n\treturn strings.Contains(block.Headers[\"Proc-Type\"], \"ENCRYPTED\")\n}\n\n// A PassphraseMissingError indicates that parsing this private key requires a\n// passphrase. Use ParsePrivateKeyWithPassphrase.\ntype PassphraseMissingError struct {\n\t// PublicKey will be set if the private key format includes an unencrypted\n\t// public key along with the encrypted private key.\n\tPublicKey PublicKey\n}\n\nfunc (*PassphraseMissingError) Error() string {\n\treturn \"ssh: this private key is passphrase protected\"\n}\n\n// ParseRawPrivateKey returns a private key from a PEM encoded private key. It supports\n// RSA, DSA, ECDSA, and Ed25519 private keys in PKCS#1, PKCS#8, OpenSSL, and OpenSSH\n// formats. If the private key is encrypted, it will return a PassphraseMissingError.\nfunc ParseRawPrivateKey(pemBytes []byte) (any, error) {\n\tblock, _ := pem.Decode(pemBytes)\n\tif block == nil {\n\t\treturn nil, errors.New(\"ssh: no key found\")\n\t}\n\n\tif encryptedBlock(block) {\n\t\treturn nil, &PassphraseMissingError{}\n\t}\n\n\tswitch block.Type {\n\tcase \"RSA PRIVATE KEY\":\n\t\treturn x509.ParsePKCS1PrivateKey(block.Bytes)\n\t// RFC5208 - https://tools.ietf.org/html/rfc5208\n\tcase \"PRIVATE KEY\":\n\t\treturn x509.ParsePKCS8PrivateKey(block.Bytes)\n\tcase \"EC PRIVATE KEY\":\n\t\treturn x509.ParseECPrivateKey(block.Bytes)\n\tcase \"DSA PRIVATE KEY\":\n\t\treturn ParseDSAPrivateKey(block.Bytes)\n\tcase \"OPENSSH PRIVATE KEY\":\n\t\treturn parseOpenSSHPrivateKey(block.Bytes, unencryptedOpenSSHKey)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %q\", block.Type)\n\t}\n}\n\n// ParseRawPrivateKeyWithPassphrase returns a private key decrypted with\n// passphrase from a PEM encoded private key. If the passphrase is wrong, it\n// will return x509.IncorrectPasswordError.\nfunc ParseRawPrivateKeyWithPassphrase(pemBytes, passphrase []byte) (any, error) {\n\tblock, _ := pem.Decode(pemBytes)\n\tif block == nil {\n\t\treturn nil, errors.New(\"ssh: no key found\")\n\t}\n\n\tif block.Type == \"OPENSSH PRIVATE KEY\" {\n\t\treturn parseOpenSSHPrivateKey(block.Bytes, passphraseProtectedOpenSSHKey(passphrase))\n\t}\n\n\tif !encryptedBlock(block) || !x509.IsEncryptedPEMBlock(block) {\n\t\treturn nil, errors.New(\"ssh: not an encrypted key\")\n\t}\n\n\tbuf, err := x509.DecryptPEMBlock(block, passphrase)\n\tif err != nil {\n\t\tif err == x509.IncorrectPasswordError {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, fmt.Errorf(\"ssh: cannot decode encrypted private keys: %v\", err)\n\t}\n\n\tvar result any\n\n\tswitch block.Type {\n\tcase \"RSA PRIVATE KEY\":\n\t\tresult, err = x509.ParsePKCS1PrivateKey(buf)\n\tcase \"EC PRIVATE KEY\":\n\t\tresult, err = x509.ParseECPrivateKey(buf)\n\tcase \"DSA PRIVATE KEY\":\n\t\tresult, err = ParseDSAPrivateKey(buf)\n\tdefault:\n\t\terr = fmt.Errorf(\"ssh: unsupported key type %q\", block.Type)\n\t}\n\t// Because of deficiencies in the format, DecryptPEMBlock does not always\n\t// detect an incorrect password. In these cases decrypted DER bytes is\n\t// random noise. If the parsing of the key returns an asn1.StructuralError\n\t// we return x509.IncorrectPasswordError.\n\tif _, ok := err.(asn1.StructuralError); ok {\n\t\treturn nil, x509.IncorrectPasswordError\n\t}\n\n\treturn result, err\n}\n\n// ParseDSAPrivateKey returns a DSA private key from its ASN.1 DER encoding, as\n// specified by the OpenSSL DSA man page.\nfunc ParseDSAPrivateKey(der []byte) (*dsa.PrivateKey, error) {\n\tvar k struct {\n\t\tVersion int\n\t\tP       *big.Int\n\t\tQ       *big.Int\n\t\tG       *big.Int\n\t\tPub     *big.Int\n\t\tPriv    *big.Int\n\t}\n\trest, err := asn1.Unmarshal(der, &k)\n\tif err != nil {\n\t\treturn nil, errors.New(\"ssh: failed to parse DSA key: \" + err.Error())\n\t}\n\tif len(rest) > 0 {\n\t\treturn nil, errors.New(\"ssh: garbage after DSA key\")\n\t}\n\n\treturn &dsa.PrivateKey{\n\t\tPublicKey: dsa.PublicKey{\n\t\t\tParameters: dsa.Parameters{\n\t\t\t\tP: k.P,\n\t\t\t\tQ: k.Q,\n\t\t\t\tG: k.G,\n\t\t\t},\n\t\t\tY: k.Pub,\n\t\t},\n\t\tX: k.Priv,\n\t}, nil\n}\n\nfunc unencryptedOpenSSHKey(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) {\n\tif kdfName != \"none\" || cipherName != \"none\" {\n\t\treturn nil, &PassphraseMissingError{}\n\t}\n\tif kdfOpts != \"\" {\n\t\treturn nil, errors.New(\"ssh: invalid openssh private key\")\n\t}\n\treturn privKeyBlock, nil\n}\n\nfunc passphraseProtectedOpenSSHKey(passphrase []byte) openSSHDecryptFunc {\n\treturn func(cipherName, kdfName, kdfOpts string, privKeyBlock []byte) ([]byte, error) {\n\t\tif kdfName == \"none\" || cipherName == \"none\" {\n\t\t\treturn nil, errors.New(\"ssh: key is not password protected\")\n\t\t}\n\t\tif kdfName != \"bcrypt\" {\n\t\t\treturn nil, fmt.Errorf(\"ssh: unknown KDF %q, only supports %q\", kdfName, \"bcrypt\")\n\t\t}\n\n\t\tvar opts struct {\n\t\t\tSalt   string\n\t\t\tRounds uint32\n\t\t}\n\t\tif err := Unmarshal([]byte(kdfOpts), &opts); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tk, err := bcrypt_pbkdf.Key(passphrase, []byte(opts.Salt), int(opts.Rounds), 32+16)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tkey, iv := k[:32], k[32:]\n\n\t\tc, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch cipherName {\n\t\tcase \"aes256-ctr\":\n\t\t\tctr := cipher.NewCTR(c, iv)\n\t\t\tctr.XORKeyStream(privKeyBlock, privKeyBlock)\n\t\tcase \"aes256-cbc\":\n\t\t\tif len(privKeyBlock)%c.BlockSize() != 0 {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: invalid encrypted private key length, not a multiple of the block size\")\n\t\t\t}\n\t\t\tcbc := cipher.NewCBCDecrypter(c, iv)\n\t\t\tcbc.CryptBlocks(privKeyBlock, privKeyBlock)\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"ssh: unknown cipher %q, only supports %q or %q\", cipherName, \"aes256-ctr\", \"aes256-cbc\")\n\t\t}\n\n\t\treturn privKeyBlock, nil\n\t}\n}\n\nfunc unencryptedOpenSSHMarshaler(privKeyBlock []byte) ([]byte, string, string, string, error) {\n\tkey := generateOpenSSHPadding(privKeyBlock, 8)\n\treturn key, \"none\", \"none\", \"\", nil\n}\n\nfunc passphraseProtectedOpenSSHMarshaler(passphrase []byte) openSSHEncryptFunc {\n\treturn func(privKeyBlock []byte) ([]byte, string, string, string, error) {\n\t\tsalt := make([]byte, 16)\n\t\tif _, err := rand.Read(salt); err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\topts := struct {\n\t\t\tSalt   []byte\n\t\t\tRounds uint32\n\t\t}{salt, 16}\n\n\t\t// Derive key to encrypt the private key block.\n\t\tk, err := bcrypt_pbkdf.Key(passphrase, salt, int(opts.Rounds), 32+aes.BlockSize)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\t// Add padding matching the block size of AES.\n\t\tkeyBlock := generateOpenSSHPadding(privKeyBlock, aes.BlockSize)\n\n\t\t// Encrypt the private key using the derived secret.\n\n\t\tdst := make([]byte, len(keyBlock))\n\t\tkey, iv := k[:32], k[32:]\n\t\tblock, err := aes.NewCipher(key)\n\t\tif err != nil {\n\t\t\treturn nil, \"\", \"\", \"\", err\n\t\t}\n\n\t\tstream := cipher.NewCTR(block, iv)\n\t\tstream.XORKeyStream(dst, keyBlock)\n\n\t\treturn dst, \"aes256-ctr\", \"bcrypt\", string(Marshal(opts)), nil\n\t}\n}\n\nconst privateKeyAuthMagic = \"openssh-key-v1\\x00\"\n\ntype openSSHDecryptFunc func(CipherName, KdfName, KdfOpts string, PrivKeyBlock []byte) ([]byte, error)\ntype openSSHEncryptFunc func(PrivKeyBlock []byte) (ProtectedKeyBlock []byte, cipherName, kdfName, kdfOptions string, err error)\n\ntype openSSHEncryptedPrivateKey struct {\n\tCipherName   string\n\tKdfName      string\n\tKdfOpts      string\n\tNumKeys      uint32\n\tPubKey       []byte\n\tPrivKeyBlock []byte\n}\n\ntype openSSHPrivateKey struct {\n\tCheck1  uint32\n\tCheck2  uint32\n\tKeytype string\n\tRest    []byte `ssh:\"rest\"`\n}\n\ntype openSSHRSAPrivateKey struct {\n\tN       *big.Int\n\tE       *big.Int\n\tD       *big.Int\n\tIqmp    *big.Int\n\tP       *big.Int\n\tQ       *big.Int\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\ntype openSSHEd25519PrivateKey struct {\n\tPub     []byte\n\tPriv    []byte\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\ntype openSSHECDSAPrivateKey struct {\n\tCurve   string\n\tPub     []byte\n\tD       *big.Int\n\tComment string\n\tPad     []byte `ssh:\"rest\"`\n}\n\n// parseOpenSSHPrivateKey parses an OpenSSH private key, using the decrypt\n// function to unwrap the encrypted portion. unencryptedOpenSSHKey can be used\n// as the decrypt function to parse an unencrypted private key. See\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL.key.\nfunc parseOpenSSHPrivateKey(key []byte, decrypt openSSHDecryptFunc) (crypto.PrivateKey, error) {\n\tif len(key) < len(privateKeyAuthMagic) || string(key[:len(privateKeyAuthMagic)]) != privateKeyAuthMagic {\n\t\treturn nil, errors.New(\"ssh: invalid openssh private key format\")\n\t}\n\tremaining := key[len(privateKeyAuthMagic):]\n\n\tvar w openSSHEncryptedPrivateKey\n\tif err := Unmarshal(remaining, &w); err != nil {\n\t\treturn nil, err\n\t}\n\tif w.NumKeys != 1 {\n\t\t// We only support single key files, and so does OpenSSH.\n\t\t// https://github.com/openssh/openssh-portable/blob/4103a3ec7/sshkey.c#L4171\n\t\treturn nil, errors.New(\"ssh: multi-key files are not supported\")\n\t}\n\n\tprivKeyBlock, err := decrypt(w.CipherName, w.KdfName, w.KdfOpts, w.PrivKeyBlock)\n\tif err != nil {\n\t\tif err, ok := err.(*PassphraseMissingError); ok {\n\t\t\tpub, errPub := ParsePublicKey(w.PubKey)\n\t\t\tif errPub != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"ssh: failed to parse embedded public key: %v\", errPub)\n\t\t\t}\n\t\t\terr.PublicKey = pub\n\t\t}\n\t\treturn nil, err\n\t}\n\n\tvar pk1 openSSHPrivateKey\n\tif err := Unmarshal(privKeyBlock, &pk1); err != nil || pk1.Check1 != pk1.Check2 {\n\t\tif w.CipherName != \"none\" {\n\t\t\treturn nil, x509.IncorrectPasswordError\n\t\t}\n\t\treturn nil, errors.New(\"ssh: malformed OpenSSH key\")\n\t}\n\n\tswitch pk1.Keytype {\n\tcase KeyAlgoRSA:\n\t\tvar key openSSHRSAPrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk := &rsa.PrivateKey{\n\t\t\tPublicKey: rsa.PublicKey{\n\t\t\t\tN: key.N,\n\t\t\t\tE: int(key.E.Int64()),\n\t\t\t},\n\t\t\tD:      key.D,\n\t\t\tPrimes: []*big.Int{key.P, key.Q},\n\t\t}\n\n\t\tif err := pk.Validate(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk.Precompute()\n\n\t\treturn pk, nil\n\tcase KeyAlgoED25519:\n\t\tvar key openSSHEd25519PrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif len(key.Priv) != ed25519.PrivateKeySize {\n\t\t\treturn nil, errors.New(\"ssh: private key unexpected length\")\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpk := ed25519.PrivateKey(make([]byte, ed25519.PrivateKeySize))\n\t\tcopy(pk, key.Priv)\n\t\treturn &pk, nil\n\tcase KeyAlgoECDSA256, KeyAlgoECDSA384, KeyAlgoECDSA521:\n\t\tvar key openSSHECDSAPrivateKey\n\t\tif err := Unmarshal(pk1.Rest, &key); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif err := checkOpenSSHKeyPadding(key.Pad); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tvar curve elliptic.Curve\n\t\tswitch key.Curve {\n\t\tcase \"nistp256\":\n\t\t\tcurve = elliptic.P256()\n\t\tcase \"nistp384\":\n\t\t\tcurve = elliptic.P384()\n\t\tcase \"nistp521\":\n\t\t\tcurve = elliptic.P521()\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"ssh: unhandled elliptic curve: \" + key.Curve)\n\t\t}\n\n\t\tX, Y := elliptic.Unmarshal(curve, key.Pub)\n\t\tif X == nil || Y == nil {\n\t\t\treturn nil, errors.New(\"ssh: failed to unmarshal public key\")\n\t\t}\n\n\t\tif key.D.Cmp(curve.Params().N) >= 0 {\n\t\t\treturn nil, errors.New(\"ssh: scalar is out of range\")\n\t\t}\n\n\t\tx, y := curve.ScalarBaseMult(key.D.Bytes())\n\t\tif x.Cmp(X) != 0 || y.Cmp(Y) != 0 {\n\t\t\treturn nil, errors.New(\"ssh: public key does not match private key\")\n\t\t}\n\n\t\treturn &ecdsa.PrivateKey{\n\t\t\tPublicKey: ecdsa.PublicKey{\n\t\t\t\tCurve: curve,\n\t\t\t\tX:     X,\n\t\t\t\tY:     Y,\n\t\t\t},\n\t\t\tD: key.D,\n\t\t}, nil\n\tdefault:\n\t\treturn nil, errors.New(\"ssh: unhandled key type\")\n\t}\n}\n\nfunc marshalOpenSSHPrivateKey(key crypto.PrivateKey, comment string, encrypt openSSHEncryptFunc) (*pem.Block, error) {\n\tvar w openSSHEncryptedPrivateKey\n\tvar pk1 openSSHPrivateKey\n\n\t// Random check bytes.\n\tvar check uint32\n\tif err := binary.Read(rand.Reader, binary.BigEndian, &check); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpk1.Check1 = check\n\tpk1.Check2 = check\n\tw.NumKeys = 1\n\n\t// Use a []byte directly on ed25519 keys.\n\tif k, ok := key.(*ed25519.PrivateKey); ok {\n\t\tkey = *k\n\t}\n\n\tswitch k := key.(type) {\n\tcase *rsa.PrivateKey:\n\t\tE := new(big.Int).SetInt64(int64(k.PublicKey.E))\n\t\t// Marshal public key:\n\t\t// E and N are in reversed order in the public and private key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tE       *big.Int\n\t\t\tN       *big.Int\n\t\t}{\n\t\t\tKeyAlgoRSA,\n\t\t\tE, k.PublicKey.N,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHRSAPrivateKey{\n\t\t\tN:       k.PublicKey.N,\n\t\t\tE:       E,\n\t\t\tD:       k.D,\n\t\t\tIqmp:    k.Precomputed.Qinv,\n\t\t\tP:       k.Primes[0],\n\t\t\tQ:       k.Primes[1],\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = KeyAlgoRSA\n\t\tpk1.Rest = Marshal(key)\n\tcase ed25519.PrivateKey:\n\t\tpub := make([]byte, ed25519.PublicKeySize)\n\t\tpriv := make([]byte, ed25519.PrivateKeySize)\n\t\tcopy(pub, k[32:])\n\t\tcopy(priv, k)\n\n\t\t// Marshal public key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tPub     []byte\n\t\t}{\n\t\t\tKeyAlgoED25519, pub,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHEd25519PrivateKey{\n\t\t\tPub:     pub,\n\t\t\tPriv:    priv,\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = KeyAlgoED25519\n\t\tpk1.Rest = Marshal(key)\n\tcase *ecdsa.PrivateKey:\n\t\tvar curve, keyType string\n\t\tswitch name := k.Curve.Params().Name; name {\n\t\tcase \"P-256\":\n\t\t\tcurve = \"nistp256\"\n\t\t\tkeyType = KeyAlgoECDSA256\n\t\tcase \"P-384\":\n\t\t\tcurve = \"nistp384\"\n\t\t\tkeyType = KeyAlgoECDSA384\n\t\tcase \"P-521\":\n\t\t\tcurve = \"nistp521\"\n\t\t\tkeyType = KeyAlgoECDSA521\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"ssh: unhandled elliptic curve \" + name)\n\t\t}\n\n\t\tpub := elliptic.Marshal(k.Curve, k.PublicKey.X, k.PublicKey.Y)\n\n\t\t// Marshal public key.\n\t\tpubKey := struct {\n\t\t\tKeyType string\n\t\t\tCurve   string\n\t\t\tPub     []byte\n\t\t}{\n\t\t\tkeyType, curve, pub,\n\t\t}\n\t\tw.PubKey = Marshal(pubKey)\n\n\t\t// Marshal private key.\n\t\tkey := openSSHECDSAPrivateKey{\n\t\t\tCurve:   curve,\n\t\t\tPub:     pub,\n\t\t\tD:       k.D,\n\t\t\tComment: comment,\n\t\t}\n\t\tpk1.Keytype = keyType\n\t\tpk1.Rest = Marshal(key)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported key type %T\", k)\n\t}\n\n\tvar err error\n\t// Add padding and encrypt the key if necessary.\n\tw.PrivKeyBlock, w.CipherName, w.KdfName, w.KdfOpts, err = encrypt(Marshal(pk1))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tb := Marshal(w)\n\tblock := &pem.Block{\n\t\tType:  \"OPENSSH PRIVATE KEY\",\n\t\tBytes: append([]byte(privateKeyAuthMagic), b...),\n\t}\n\treturn block, nil\n}\n\nfunc checkOpenSSHKeyPadding(pad []byte) error {\n\tfor i, b := range pad {\n\t\tif int(b) != i+1 {\n\t\t\treturn errors.New(\"ssh: padding not as expected\")\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc generateOpenSSHPadding(block []byte, blockSize int) []byte {\n\tfor i, l := 0, len(block); (l+i)%blockSize != 0; i++ {\n\t\tblock = append(block, byte(i+1))\n\t}\n\treturn block\n}\n\n// FingerprintLegacyMD5 returns the user presentation of the key's\n// fingerprint as described by RFC 4716 section 4.\nfunc FingerprintLegacyMD5(pubKey PublicKey) string {\n\tmd5sum := md5.Sum(pubKey.Marshal())\n\thexarray := make([]string, len(md5sum))\n\tfor i, c := range md5sum {\n\t\thexarray[i] = hex.EncodeToString([]byte{c})\n\t}\n\treturn strings.Join(hexarray, \":\")\n}\n\n// FingerprintSHA256 returns the user presentation of the key's\n// fingerprint as unpadded base64 encoded sha256 hash.\n// This format was introduced from OpenSSH 6.8.\n// https://www.openssh.com/txt/release-6.8\n// https://tools.ietf.org/html/rfc4648#section-3.2 (unpadded base64 encoding)\nfunc FingerprintSHA256(pubKey PublicKey) string {\n\tsha256sum := sha256.Sum256(pubKey.Marshal())\n\thash := base64.RawStdEncoding.EncodeToString(sha256sum[:])\n\treturn \"SHA256:\" + hash\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/knownhosts/knownhosts.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// Package knownhosts implements a parser for the OpenSSH known_hosts\n// host key database, and provides utility functions for writing\n// OpenSSH compliant known_hosts files.\npackage knownhosts\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"crypto/hmac\"\n\t\"crypto/rand\"\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"strings\"\n\n\t\"gossh/crypto/ssh\"\n)\n\n// See the sshd manpage\n// (http://man.openbsd.org/sshd#SSH_KNOWN_HOSTS_FILE_FORMAT) for\n// background.\n\ntype addr struct{ host, port string }\n\nfunc (a *addr) String() string {\n\th := a.host\n\tif strings.Contains(h, \":\") {\n\t\th = \"[\" + h + \"]\"\n\t}\n\treturn h + \":\" + a.port\n}\n\ntype matcher interface {\n\tmatch(addr) bool\n}\n\ntype hostPattern struct {\n\tnegate bool\n\taddr   addr\n}\n\nfunc (p *hostPattern) String() string {\n\tn := \"\"\n\tif p.negate {\n\t\tn = \"!\"\n\t}\n\n\treturn n + p.addr.String()\n}\n\ntype hostPatterns []hostPattern\n\nfunc (ps hostPatterns) match(a addr) bool {\n\tmatched := false\n\tfor _, p := range ps {\n\t\tif !p.match(a) {\n\t\t\tcontinue\n\t\t}\n\t\tif p.negate {\n\t\t\treturn false\n\t\t}\n\t\tmatched = true\n\t}\n\treturn matched\n}\n\n// See\n// https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/addrmatch.c\n// The matching of * has no regard for separators, unlike filesystem globs\nfunc wildcardMatch(pat []byte, str []byte) bool {\n\tfor {\n\t\tif len(pat) == 0 {\n\t\t\treturn len(str) == 0\n\t\t}\n\t\tif len(str) == 0 {\n\t\t\treturn false\n\t\t}\n\n\t\tif pat[0] == '*' {\n\t\t\tif len(pat) == 1 {\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\tfor j := range str {\n\t\t\t\tif wildcardMatch(pat[1:], str[j:]) {\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\n\t\tif pat[0] == '?' || pat[0] == str[0] {\n\t\t\tpat = pat[1:]\n\t\t\tstr = str[1:]\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n}\n\nfunc (p *hostPattern) match(a addr) bool {\n\treturn wildcardMatch([]byte(p.addr.host), []byte(a.host)) && p.addr.port == a.port\n}\n\ntype keyDBLine struct {\n\tcert     bool\n\tmatcher  matcher\n\tknownKey KnownKey\n}\n\nfunc serialize(k ssh.PublicKey) string {\n\treturn k.Type() + \" \" + base64.StdEncoding.EncodeToString(k.Marshal())\n}\n\nfunc (l *keyDBLine) match(a addr) bool {\n\treturn l.matcher.match(a)\n}\n\ntype hostKeyDB struct {\n\t// Serialized version of revoked keys\n\trevoked map[string]*KnownKey\n\tlines   []keyDBLine\n}\n\nfunc newHostKeyDB() *hostKeyDB {\n\tdb := &hostKeyDB{\n\t\trevoked: make(map[string]*KnownKey),\n\t}\n\n\treturn db\n}\n\nfunc keyEq(a, b ssh.PublicKey) bool {\n\treturn bytes.Equal(a.Marshal(), b.Marshal())\n}\n\n// IsHostAuthority can be used as a callback in ssh.CertChecker\nfunc (db *hostKeyDB) IsHostAuthority(remote ssh.PublicKey, address string) bool {\n\th, p, err := net.SplitHostPort(address)\n\tif err != nil {\n\t\treturn false\n\t}\n\ta := addr{host: h, port: p}\n\n\tfor _, l := range db.lines {\n\t\tif l.cert && keyEq(l.knownKey.Key, remote) && l.match(a) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// IsRevoked can be used as a callback in ssh.CertChecker\nfunc (db *hostKeyDB) IsRevoked(key *ssh.Certificate) bool {\n\t_, ok := db.revoked[string(key.Marshal())]\n\treturn ok\n}\n\nconst markerCert = \"@cert-authority\"\nconst markerRevoked = \"@revoked\"\n\nfunc nextWord(line []byte) (string, []byte) {\n\ti := bytes.IndexAny(line, \"\\t \")\n\tif i == -1 {\n\t\treturn string(line), nil\n\t}\n\n\treturn string(line[:i]), bytes.TrimSpace(line[i:])\n}\n\nfunc parseLine(line []byte) (marker, host string, key ssh.PublicKey, err error) {\n\tif w, next := nextWord(line); w == markerCert || w == markerRevoked {\n\t\tmarker = w\n\t\tline = next\n\t}\n\n\thost, line = nextWord(line)\n\tif len(line) == 0 {\n\t\treturn \"\", \"\", nil, errors.New(\"knownhosts: missing host pattern\")\n\t}\n\n\t// ignore the keytype as it's in the key blob anyway.\n\t_, line = nextWord(line)\n\tif len(line) == 0 {\n\t\treturn \"\", \"\", nil, errors.New(\"knownhosts: missing key type pattern\")\n\t}\n\n\tkeyBlob, _ := nextWord(line)\n\n\tkeyBytes, err := base64.StdEncoding.DecodeString(keyBlob)\n\tif err != nil {\n\t\treturn \"\", \"\", nil, err\n\t}\n\tkey, err = ssh.ParsePublicKey(keyBytes)\n\tif err != nil {\n\t\treturn \"\", \"\", nil, err\n\t}\n\n\treturn marker, host, key, nil\n}\n\nfunc (db *hostKeyDB) parseLine(line []byte, filename string, linenum int) error {\n\tmarker, pattern, key, err := parseLine(line)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif marker == markerRevoked {\n\t\tdb.revoked[string(key.Marshal())] = &KnownKey{\n\t\t\tKey:      key,\n\t\t\tFilename: filename,\n\t\t\tLine:     linenum,\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tentry := keyDBLine{\n\t\tcert: marker == markerCert,\n\t\tknownKey: KnownKey{\n\t\t\tFilename: filename,\n\t\t\tLine:     linenum,\n\t\t\tKey:      key,\n\t\t},\n\t}\n\n\tif pattern[0] == '|' {\n\t\tentry.matcher, err = newHashedHost(pattern)\n\t} else {\n\t\tentry.matcher, err = newHostnameMatcher(pattern)\n\t}\n\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdb.lines = append(db.lines, entry)\n\treturn nil\n}\n\nfunc newHostnameMatcher(pattern string) (matcher, error) {\n\tvar hps hostPatterns\n\tfor _, p := range strings.Split(pattern, \",\") {\n\t\tif len(p) == 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tvar a addr\n\t\tvar negate bool\n\t\tif p[0] == '!' {\n\t\t\tnegate = true\n\t\t\tp = p[1:]\n\t\t}\n\n\t\tif len(p) == 0 {\n\t\t\treturn nil, errors.New(\"knownhosts: negation without following hostname\")\n\t\t}\n\n\t\tvar err error\n\t\tif p[0] == '[' {\n\t\t\ta.host, a.port, err = net.SplitHostPort(p)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t} else {\n\t\t\ta.host, a.port, err = net.SplitHostPort(p)\n\t\t\tif err != nil {\n\t\t\t\ta.host = p\n\t\t\t\ta.port = \"22\"\n\t\t\t}\n\t\t}\n\t\thps = append(hps, hostPattern{\n\t\t\tnegate: negate,\n\t\t\taddr:   a,\n\t\t})\n\t}\n\treturn hps, nil\n}\n\n// KnownKey represents a key declared in a known_hosts file.\ntype KnownKey struct {\n\tKey      ssh.PublicKey\n\tFilename string\n\tLine     int\n}\n\nfunc (k *KnownKey) String() string {\n\treturn fmt.Sprintf(\"%s:%d: %s\", k.Filename, k.Line, serialize(k.Key))\n}\n\n// KeyError is returned if we did not find the key in the host key\n// database, or there was a mismatch.  Typically, in batch\n// applications, this should be interpreted as failure. Interactive\n// applications can offer an interactive prompt to the user.\ntype KeyError struct {\n\t// Want holds the accepted host keys. For each key algorithm,\n\t// there can be one hostkey.  If Want is empty, the host is\n\t// unknown. If Want is non-empty, there was a mismatch, which\n\t// can signify a MITM attack.\n\tWant []KnownKey\n}\n\nfunc (u *KeyError) Error() string {\n\tif len(u.Want) == 0 {\n\t\treturn \"knownhosts: key is unknown\"\n\t}\n\treturn \"knownhosts: key mismatch\"\n}\n\n// RevokedError is returned if we found a key that was revoked.\ntype RevokedError struct {\n\tRevoked KnownKey\n}\n\nfunc (r *RevokedError) Error() string {\n\treturn \"knownhosts: key is revoked\"\n}\n\n// check checks a key against the host database. This should not be\n// used for verifying certificates.\nfunc (db *hostKeyDB) check(address string, remote net.Addr, remoteKey ssh.PublicKey) error {\n\tif revoked := db.revoked[string(remoteKey.Marshal())]; revoked != nil {\n\t\treturn &RevokedError{Revoked: *revoked}\n\t}\n\n\thost, port, err := net.SplitHostPort(remote.String())\n\tif err != nil {\n\t\treturn fmt.Errorf(\"knownhosts: SplitHostPort(%s): %v\", remote, err)\n\t}\n\n\thostToCheck := addr{host, port}\n\tif address != \"\" {\n\t\t// Give preference to the hostname if available.\n\t\thost, port, err := net.SplitHostPort(address)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"knownhosts: SplitHostPort(%s): %v\", address, err)\n\t\t}\n\n\t\thostToCheck = addr{host, port}\n\t}\n\n\treturn db.checkAddr(hostToCheck, remoteKey)\n}\n\n// checkAddr checks if we can find the given public key for the\n// given address.  If we only find an entry for the IP address,\n// or only the hostname, then this still succeeds.\nfunc (db *hostKeyDB) checkAddr(a addr, remoteKey ssh.PublicKey) error {\n\t// TODO(hanwen): are these the right semantics? What if there\n\t// is just a key for the IP address, but not for the\n\t// hostname?\n\n\t// Algorithm => key.\n\tknownKeys := map[string]KnownKey{}\n\tfor _, l := range db.lines {\n\t\tif l.match(a) {\n\t\t\ttyp := l.knownKey.Key.Type()\n\t\t\tif _, ok := knownKeys[typ]; !ok {\n\t\t\t\tknownKeys[typ] = l.knownKey\n\t\t\t}\n\t\t}\n\t}\n\n\tkeyErr := &KeyError{}\n\tfor _, v := range knownKeys {\n\t\tkeyErr.Want = append(keyErr.Want, v)\n\t}\n\n\t// Unknown remote host.\n\tif len(knownKeys) == 0 {\n\t\treturn keyErr\n\t}\n\n\t// If the remote host starts using a different, unknown key type, we\n\t// also interpret that as a mismatch.\n\tif known, ok := knownKeys[remoteKey.Type()]; !ok || !keyEq(known.Key, remoteKey) {\n\t\treturn keyErr\n\t}\n\n\treturn nil\n}\n\n// The Read function parses file contents.\nfunc (db *hostKeyDB) Read(r io.Reader, filename string) error {\n\tscanner := bufio.NewScanner(r)\n\n\tlineNum := 0\n\tfor scanner.Scan() {\n\t\tlineNum++\n\t\tline := scanner.Bytes()\n\t\tline = bytes.TrimSpace(line)\n\t\tif len(line) == 0 || line[0] == '#' {\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := db.parseLine(line, filename, lineNum); err != nil {\n\t\t\treturn fmt.Errorf(\"knownhosts: %s:%d: %v\", filename, lineNum, err)\n\t\t}\n\t}\n\treturn scanner.Err()\n}\n\n// New creates a host key callback from the given OpenSSH host key\n// files. The returned callback is for use in\n// ssh.ClientConfig.HostKeyCallback. By preference, the key check\n// operates on the hostname if available, i.e. if a server changes its\n// IP address, the host key check will still succeed, even though a\n// record of the new IP address is not available.\nfunc New(files ...string) (ssh.HostKeyCallback, error) {\n\tdb := newHostKeyDB()\n\tfor _, fn := range files {\n\t\tf, err := os.Open(fn)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdefer f.Close()\n\t\tif err := db.Read(f, fn); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar certChecker ssh.CertChecker\n\tcertChecker.IsHostAuthority = db.IsHostAuthority\n\tcertChecker.IsRevoked = db.IsRevoked\n\tcertChecker.HostKeyFallback = db.check\n\n\treturn certChecker.CheckHostKey, nil\n}\n\n// Normalize normalizes an address into the form used in known_hosts\nfunc Normalize(address string) string {\n\thost, port, err := net.SplitHostPort(address)\n\tif err != nil {\n\t\thost = address\n\t\tport = \"22\"\n\t}\n\tentry := host\n\tif port != \"22\" {\n\t\tentry = \"[\" + entry + \"]:\" + port\n\t} else if strings.Contains(host, \":\") && !strings.HasPrefix(host, \"[\") {\n\t\tentry = \"[\" + entry + \"]\"\n\t}\n\treturn entry\n}\n\n// Line returns a line to add append to the known_hosts files.\nfunc Line(addresses []string, key ssh.PublicKey) string {\n\tvar trimmed []string\n\tfor _, a := range addresses {\n\t\ttrimmed = append(trimmed, Normalize(a))\n\t}\n\n\treturn strings.Join(trimmed, \",\") + \" \" + serialize(key)\n}\n\n// HashHostname hashes the given hostname. The hostname is not\n// normalized before hashing.\nfunc HashHostname(hostname string) string {\n\t// TODO(hanwen): check if we can safely normalize this always.\n\tsalt := make([]byte, sha1.Size)\n\n\t_, err := rand.Read(salt)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"crypto/rand failure %v\", err))\n\t}\n\n\thash := hashHost(hostname, salt)\n\treturn encodeHash(sha1HashType, salt, hash)\n}\n\nfunc decodeHash(encoded string) (hashType string, salt, hash []byte, err error) {\n\tif len(encoded) == 0 || encoded[0] != '|' {\n\t\terr = errors.New(\"knownhosts: hashed host must start with '|'\")\n\t\treturn\n\t}\n\tcomponents := strings.Split(encoded, \"|\")\n\tif len(components) != 4 {\n\t\terr = fmt.Errorf(\"knownhosts: got %d components, want 3\", len(components))\n\t\treturn\n\t}\n\n\thashType = components[1]\n\tif salt, err = base64.StdEncoding.DecodeString(components[2]); err != nil {\n\t\treturn\n\t}\n\tif hash, err = base64.StdEncoding.DecodeString(components[3]); err != nil {\n\t\treturn\n\t}\n\treturn\n}\n\nfunc encodeHash(typ string, salt []byte, hash []byte) string {\n\treturn strings.Join([]string{\"\",\n\t\ttyp,\n\t\tbase64.StdEncoding.EncodeToString(salt),\n\t\tbase64.StdEncoding.EncodeToString(hash),\n\t}, \"|\")\n}\n\n// See https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120\nfunc hashHost(hostname string, salt []byte) []byte {\n\tmac := hmac.New(sha1.New, salt)\n\tmac.Write([]byte(hostname))\n\treturn mac.Sum(nil)\n}\n\ntype hashedHost struct {\n\tsalt []byte\n\thash []byte\n}\n\nconst sha1HashType = \"1\"\n\nfunc newHashedHost(encoded string) (*hashedHost, error) {\n\ttyp, salt, hash, err := decodeHash(encoded)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The type field seems for future algorithm agility, but it's\n\t// actually hardcoded in openssh currently, see\n\t// https://android.googlesource.com/platform/external/openssh/+/ab28f5495c85297e7a597c1ba62e996416da7c7e/hostfile.c#120\n\tif typ != sha1HashType {\n\t\treturn nil, fmt.Errorf(\"knownhosts: got hash type %s, must be '1'\", typ)\n\t}\n\n\treturn &hashedHost{salt: salt, hash: hash}, nil\n}\n\nfunc (h *hashedHost) match(a addr) bool {\n\treturn bytes.Equal(hashHost(Normalize(a.String()), h.salt), h.hash)\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/mac.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 ssh\n\n// Message authentication support\n\nimport (\n\t\"crypto/hmac\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"crypto/sha512\"\n\t\"hash\"\n)\n\ntype macMode struct {\n\tkeySize int\n\tetm     bool\n\tnew     func(key []byte) hash.Hash\n}\n\n// truncatingMAC wraps around a hash.Hash and truncates the output digest to\n// a given size.\ntype truncatingMAC struct {\n\tlength int\n\thmac   hash.Hash\n}\n\nfunc (t truncatingMAC) Write(data []byte) (int, error) {\n\treturn t.hmac.Write(data)\n}\n\nfunc (t truncatingMAC) Sum(in []byte) []byte {\n\tout := t.hmac.Sum(in)\n\treturn out[:len(in)+t.length]\n}\n\nfunc (t truncatingMAC) Reset() {\n\tt.hmac.Reset()\n}\n\nfunc (t truncatingMAC) Size() int {\n\treturn t.length\n}\n\nfunc (t truncatingMAC) BlockSize() int { return t.hmac.BlockSize() }\n\nvar macModes = map[string]*macMode{\n\t\"hmac-sha2-512-etm@openssh.com\": {64, true, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha512.New, key)\n\t}},\n\t\"hmac-sha2-256-etm@openssh.com\": {32, true, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha256.New, key)\n\t}},\n\t\"hmac-sha2-512\": {64, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha512.New, key)\n\t}},\n\t\"hmac-sha2-256\": {32, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha256.New, key)\n\t}},\n\t\"hmac-sha1\": {20, false, func(key []byte) hash.Hash {\n\t\treturn hmac.New(sha1.New, key)\n\t}},\n\t\"hmac-sha1-96\": {20, false, func(key []byte) hash.Hash {\n\t\treturn truncatingMAC{12, hmac.New(sha1.New, key)}\n\t}},\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/messages.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/big\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// These are SSH message type numbers. They are scattered around several\n// documents but many were taken from [SSH-PARAMETERS].\nconst (\n\tmsgIgnore        = 2\n\tmsgUnimplemented = 3\n\tmsgDebug         = 4\n\tmsgNewKeys       = 21\n)\n\n// SSH messages:\n//\n// These structures mirror the wire format of the corresponding SSH messages.\n// They are marshaled using reflection with the marshal and unmarshal functions\n// in this file. The only wrinkle is that a final member of type []byte with a\n// ssh tag of \"rest\" receives the remainder of a packet when unmarshaling.\n\n// See RFC 4253, section 11.1.\nconst msgDisconnect = 1\n\n// disconnectMsg is the message that signals a disconnect. It is also\n// the error type returned from mux.Wait()\ntype disconnectMsg struct {\n\tReason   uint32 `sshtype:\"1\"`\n\tMessage  string\n\tLanguage string\n}\n\nfunc (d *disconnectMsg) Error() string {\n\treturn fmt.Sprintf(\"ssh: disconnect, reason %d: %s\", d.Reason, d.Message)\n}\n\n// See RFC 4253, section 7.1.\nconst msgKexInit = 20\n\ntype kexInitMsg struct {\n\tCookie                  [16]byte `sshtype:\"20\"`\n\tKexAlgos                []string\n\tServerHostKeyAlgos      []string\n\tCiphersClientServer     []string\n\tCiphersServerClient     []string\n\tMACsClientServer        []string\n\tMACsServerClient        []string\n\tCompressionClientServer []string\n\tCompressionServerClient []string\n\tLanguagesClientServer   []string\n\tLanguagesServerClient   []string\n\tFirstKexFollows         bool\n\tReserved                uint32\n}\n\n// See RFC 4253, section 8.\n\n// Diffie-Hellman\nconst msgKexDHInit = 30\n\ntype kexDHInitMsg struct {\n\tX *big.Int `sshtype:\"30\"`\n}\n\nconst msgKexECDHInit = 30\n\ntype kexECDHInitMsg struct {\n\tClientPubKey []byte `sshtype:\"30\"`\n}\n\nconst msgKexECDHReply = 31\n\ntype kexECDHReplyMsg struct {\n\tHostKey         []byte `sshtype:\"31\"`\n\tEphemeralPubKey []byte\n\tSignature       []byte\n}\n\nconst msgKexDHReply = 31\n\ntype kexDHReplyMsg struct {\n\tHostKey   []byte `sshtype:\"31\"`\n\tY         *big.Int\n\tSignature []byte\n}\n\n// See RFC 4419, section 5.\nconst msgKexDHGexGroup = 31\n\ntype kexDHGexGroupMsg struct {\n\tP *big.Int `sshtype:\"31\"`\n\tG *big.Int\n}\n\nconst msgKexDHGexInit = 32\n\ntype kexDHGexInitMsg struct {\n\tX *big.Int `sshtype:\"32\"`\n}\n\nconst msgKexDHGexReply = 33\n\ntype kexDHGexReplyMsg struct {\n\tHostKey   []byte `sshtype:\"33\"`\n\tY         *big.Int\n\tSignature []byte\n}\n\nconst msgKexDHGexRequest = 34\n\ntype kexDHGexRequestMsg struct {\n\tMinBits      uint32 `sshtype:\"34\"`\n\tPreferedBits uint32\n\tMaxBits      uint32\n}\n\n// See RFC 4253, section 10.\nconst msgServiceRequest = 5\n\ntype serviceRequestMsg struct {\n\tService string `sshtype:\"5\"`\n}\n\n// See RFC 4253, section 10.\nconst msgServiceAccept = 6\n\ntype serviceAcceptMsg struct {\n\tService string `sshtype:\"6\"`\n}\n\n// See RFC 8308, section 2.3\nconst msgExtInfo = 7\n\ntype extInfoMsg struct {\n\tNumExtensions uint32 `sshtype:\"7\"`\n\tPayload       []byte `ssh:\"rest\"`\n}\n\n// See RFC 4252, section 5.\nconst msgUserAuthRequest = 50\n\ntype userAuthRequestMsg struct {\n\tUser    string `sshtype:\"50\"`\n\tService string\n\tMethod  string\n\tPayload []byte `ssh:\"rest\"`\n}\n\n// Used for debug printouts of packets.\ntype userAuthSuccessMsg struct {\n}\n\n// See RFC 4252, section 5.1\nconst msgUserAuthFailure = 51\n\ntype userAuthFailureMsg struct {\n\tMethods        []string `sshtype:\"51\"`\n\tPartialSuccess bool\n}\n\n// See RFC 4252, section 5.1\nconst msgUserAuthSuccess = 52\n\n// See RFC 4252, section 5.4\nconst msgUserAuthBanner = 53\n\ntype userAuthBannerMsg struct {\n\tMessage string `sshtype:\"53\"`\n\t// unused, but required to allow message parsing\n\tLanguage string\n}\n\n// See RFC 4256, section 3.2\nconst msgUserAuthInfoRequest = 60\nconst msgUserAuthInfoResponse = 61\n\ntype userAuthInfoRequestMsg struct {\n\tName        string `sshtype:\"60\"`\n\tInstruction string\n\tLanguage    string\n\tNumPrompts  uint32\n\tPrompts     []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpen = 90\n\ntype channelOpenMsg struct {\n\tChanType         string `sshtype:\"90\"`\n\tPeersID          uint32\n\tPeersWindow      uint32\n\tMaxPacketSize    uint32\n\tTypeSpecificData []byte `ssh:\"rest\"`\n}\n\nconst msgChannelExtendedData = 95\nconst msgChannelData = 94\n\n// Used for debug print outs of packets.\ntype channelDataMsg struct {\n\tPeersID uint32 `sshtype:\"94\"`\n\tLength  uint32\n\tRest    []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpenConfirm = 91\n\ntype channelOpenConfirmMsg struct {\n\tPeersID          uint32 `sshtype:\"91\"`\n\tMyID             uint32\n\tMyWindow         uint32\n\tMaxPacketSize    uint32\n\tTypeSpecificData []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.1.\nconst msgChannelOpenFailure = 92\n\ntype channelOpenFailureMsg struct {\n\tPeersID  uint32 `sshtype:\"92\"`\n\tReason   RejectionReason\n\tMessage  string\n\tLanguage string\n}\n\nconst msgChannelRequest = 98\n\ntype channelRequestMsg struct {\n\tPeersID             uint32 `sshtype:\"98\"`\n\tRequest             string\n\tWantReply           bool\n\tRequestSpecificData []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 5.4.\nconst msgChannelSuccess = 99\n\ntype channelRequestSuccessMsg struct {\n\tPeersID uint32 `sshtype:\"99\"`\n}\n\n// See RFC 4254, section 5.4.\nconst msgChannelFailure = 100\n\ntype channelRequestFailureMsg struct {\n\tPeersID uint32 `sshtype:\"100\"`\n}\n\n// See RFC 4254, section 5.3\nconst msgChannelClose = 97\n\ntype channelCloseMsg struct {\n\tPeersID uint32 `sshtype:\"97\"`\n}\n\n// See RFC 4254, section 5.3\nconst msgChannelEOF = 96\n\ntype channelEOFMsg struct {\n\tPeersID uint32 `sshtype:\"96\"`\n}\n\n// See RFC 4254, section 4\nconst msgGlobalRequest = 80\n\ntype globalRequestMsg struct {\n\tType      string `sshtype:\"80\"`\n\tWantReply bool\n\tData      []byte `ssh:\"rest\"`\n}\n\n// See RFC 4254, section 4\nconst msgRequestSuccess = 81\n\ntype globalRequestSuccessMsg struct {\n\tData []byte `ssh:\"rest\" sshtype:\"81\"`\n}\n\n// See RFC 4254, section 4\nconst msgRequestFailure = 82\n\ntype globalRequestFailureMsg struct {\n\tData []byte `ssh:\"rest\" sshtype:\"82\"`\n}\n\n// See RFC 4254, section 5.2\nconst msgChannelWindowAdjust = 93\n\ntype windowAdjustMsg struct {\n\tPeersID         uint32 `sshtype:\"93\"`\n\tAdditionalBytes uint32\n}\n\n// See RFC 4252, section 7\nconst msgUserAuthPubKeyOk = 60\n\ntype userAuthPubKeyOkMsg struct {\n\tAlgo   string `sshtype:\"60\"`\n\tPubKey []byte\n}\n\n// See RFC 4462, section 3\nconst msgUserAuthGSSAPIResponse = 60\n\ntype userAuthGSSAPIResponse struct {\n\tSupportMech []byte `sshtype:\"60\"`\n}\n\nconst msgUserAuthGSSAPIToken = 61\n\ntype userAuthGSSAPIToken struct {\n\tToken []byte `sshtype:\"61\"`\n}\n\nconst msgUserAuthGSSAPIMIC = 66\n\ntype userAuthGSSAPIMIC struct {\n\tMIC []byte `sshtype:\"66\"`\n}\n\n// See RFC 4462, section 3.9\nconst msgUserAuthGSSAPIErrTok = 64\n\ntype userAuthGSSAPIErrTok struct {\n\tErrorToken []byte `sshtype:\"64\"`\n}\n\n// See RFC 4462, section 3.8\nconst msgUserAuthGSSAPIError = 65\n\ntype userAuthGSSAPIError struct {\n\tMajorStatus uint32 `sshtype:\"65\"`\n\tMinorStatus uint32\n\tMessage     string\n\tLanguageTag string\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPing = 192\n\ntype pingMsg struct {\n\tData string `sshtype:\"192\"`\n}\n\n// Transport layer OpenSSH extension. See [PROTOCOL], section 1.9\nconst msgPong = 193\n\ntype pongMsg struct {\n\tData string `sshtype:\"193\"`\n}\n\n// typeTags returns the possible type bytes for the given reflect.Type, which\n// should be a struct. The possible values are separated by a '|' character.\nfunc typeTags(structType reflect.Type) (tags []byte) {\n\ttagStr := structType.Field(0).Tag.Get(\"sshtype\")\n\n\tfor _, tag := range strings.Split(tagStr, \"|\") {\n\t\ti, err := strconv.Atoi(tag)\n\t\tif err == nil {\n\t\t\ttags = append(tags, byte(i))\n\t\t}\n\t}\n\n\treturn tags\n}\n\nfunc fieldError(t reflect.Type, field int, problem string) error {\n\tif problem != \"\" {\n\t\tproblem = \": \" + problem\n\t}\n\treturn fmt.Errorf(\"ssh: unmarshal error for field %s of type %s%s\", t.Field(field).Name, t.Name(), problem)\n}\n\nvar errShortRead = errors.New(\"ssh: short read\")\n\n// Unmarshal parses data in SSH wire format into a structure. The out\n// argument should be a pointer to struct. If the first member of the\n// struct has the \"sshtype\" tag set to a '|'-separated set of numbers\n// in decimal, the packet must start with one of those numbers. In\n// case of error, Unmarshal returns a ParseError or\n// UnexpectedMessageError.\nfunc Unmarshal(data []byte, out any) error {\n\tv := reflect.ValueOf(out).Elem()\n\tstructType := v.Type()\n\texpectedTypes := typeTags(structType)\n\n\tvar expectedType byte\n\tif len(expectedTypes) > 0 {\n\t\texpectedType = expectedTypes[0]\n\t}\n\n\tif len(data) == 0 {\n\t\treturn parseError(expectedType)\n\t}\n\n\tif len(expectedTypes) > 0 {\n\t\tgoodType := false\n\t\tfor _, e := range expectedTypes {\n\t\t\tif e > 0 && data[0] == e {\n\t\t\t\tgoodType = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !goodType {\n\t\t\treturn fmt.Errorf(\"ssh: unexpected message type %d (expected one of %v)\", data[0], expectedTypes)\n\t\t}\n\t\tdata = data[1:]\n\t}\n\n\tvar ok bool\n\tfor i := 0; i < v.NumField(); i++ {\n\t\tfield := v.Field(i)\n\t\tt := field.Type()\n\t\tswitch t.Kind() {\n\t\tcase reflect.Bool:\n\t\t\tif len(data) < 1 {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetBool(data[0] != 0)\n\t\t\tdata = data[1:]\n\t\tcase reflect.Array:\n\t\t\tif t.Elem().Kind() != reflect.Uint8 {\n\t\t\t\treturn fieldError(structType, i, \"array of unsupported type\")\n\t\t\t}\n\t\t\tif len(data) < t.Len() {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfor j, n := 0, t.Len(); j < n; j++ {\n\t\t\t\tfield.Index(j).Set(reflect.ValueOf(data[j]))\n\t\t\t}\n\t\t\tdata = data[t.Len():]\n\t\tcase reflect.Uint64:\n\t\t\tvar u64 uint64\n\t\t\tif u64, data, ok = parseUint64(data); !ok {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(u64)\n\t\tcase reflect.Uint32:\n\t\t\tvar u32 uint32\n\t\t\tif u32, data, ok = parseUint32(data); !ok {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(uint64(u32))\n\t\tcase reflect.Uint8:\n\t\t\tif len(data) < 1 {\n\t\t\t\treturn errShortRead\n\t\t\t}\n\t\t\tfield.SetUint(uint64(data[0]))\n\t\t\tdata = data[1:]\n\t\tcase reflect.String:\n\t\t\tvar s []byte\n\t\t\tif s, data, ok = parseString(data); !ok {\n\t\t\t\treturn fieldError(structType, i, \"\")\n\t\t\t}\n\t\t\tfield.SetString(string(s))\n\t\tcase reflect.Slice:\n\t\t\tswitch t.Elem().Kind() {\n\t\t\tcase reflect.Uint8:\n\t\t\t\tif structType.Field(i).Tag.Get(\"ssh\") == \"rest\" {\n\t\t\t\t\tfield.Set(reflect.ValueOf(data))\n\t\t\t\t\tdata = nil\n\t\t\t\t} else {\n\t\t\t\t\tvar s []byte\n\t\t\t\t\tif s, data, ok = parseString(data); !ok {\n\t\t\t\t\t\treturn errShortRead\n\t\t\t\t\t}\n\t\t\t\t\tfield.Set(reflect.ValueOf(s))\n\t\t\t\t}\n\t\t\tcase reflect.String:\n\t\t\t\tvar nl []string\n\t\t\t\tif nl, data, ok = parseNameList(data); !ok {\n\t\t\t\t\treturn errShortRead\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(nl))\n\t\t\tdefault:\n\t\t\t\treturn fieldError(structType, i, \"slice of unsupported type\")\n\t\t\t}\n\t\tcase reflect.Ptr:\n\t\t\tif t == bigIntType {\n\t\t\t\tvar n *big.Int\n\t\t\t\tif n, data, ok = parseInt(data); !ok {\n\t\t\t\t\treturn errShortRead\n\t\t\t\t}\n\t\t\t\tfield.Set(reflect.ValueOf(n))\n\t\t\t} else {\n\t\t\t\treturn fieldError(structType, i, \"pointer to unsupported type\")\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fieldError(structType, i, fmt.Sprintf(\"unsupported type: %v\", t))\n\t\t}\n\t}\n\n\tif len(data) != 0 {\n\t\treturn parseError(expectedType)\n\t}\n\n\treturn nil\n}\n\n// Marshal serializes the message in msg to SSH wire format.  The msg\n// argument should be a struct or pointer to struct. If the first\n// member has the \"sshtype\" tag set to a number in decimal, that\n// number is prepended to the result. If the last of member has the\n// \"ssh\" tag set to \"rest\", its contents are appended to the output.\nfunc Marshal(msg any) []byte {\n\tout := make([]byte, 0, 64)\n\treturn marshalStruct(out, msg)\n}\n\nfunc marshalStruct(out []byte, msg any) []byte {\n\tv := reflect.Indirect(reflect.ValueOf(msg))\n\tmsgTypes := typeTags(v.Type())\n\tif len(msgTypes) > 0 {\n\t\tout = append(out, msgTypes[0])\n\t}\n\n\tfor i, n := 0, v.NumField(); i < n; i++ {\n\t\tfield := v.Field(i)\n\t\tswitch t := field.Type(); t.Kind() {\n\t\tcase reflect.Bool:\n\t\t\tvar v uint8\n\t\t\tif field.Bool() {\n\t\t\t\tv = 1\n\t\t\t}\n\t\t\tout = append(out, v)\n\t\tcase reflect.Array:\n\t\t\tif t.Elem().Kind() != reflect.Uint8 {\n\t\t\t\tpanic(fmt.Sprintf(\"array of non-uint8 in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\t\tfor j, l := 0, t.Len(); j < l; j++ {\n\t\t\t\tout = append(out, uint8(field.Index(j).Uint()))\n\t\t\t}\n\t\tcase reflect.Uint32:\n\t\t\tout = appendU32(out, uint32(field.Uint()))\n\t\tcase reflect.Uint64:\n\t\t\tout = appendU64(out, uint64(field.Uint()))\n\t\tcase reflect.Uint8:\n\t\t\tout = append(out, uint8(field.Uint()))\n\t\tcase reflect.String:\n\t\t\ts := field.String()\n\t\t\tout = appendInt(out, len(s))\n\t\t\tout = append(out, s...)\n\t\tcase reflect.Slice:\n\t\t\tswitch t.Elem().Kind() {\n\t\t\tcase reflect.Uint8:\n\t\t\t\tif v.Type().Field(i).Tag.Get(\"ssh\") != \"rest\" {\n\t\t\t\t\tout = appendInt(out, field.Len())\n\t\t\t\t}\n\t\t\t\tout = append(out, field.Bytes()...)\n\t\t\tcase reflect.String:\n\t\t\t\toffset := len(out)\n\t\t\t\tout = appendU32(out, 0)\n\t\t\t\tif n := field.Len(); n > 0 {\n\t\t\t\t\tfor j := 0; j < n; j++ {\n\t\t\t\t\t\tf := field.Index(j)\n\t\t\t\t\t\tif j != 0 {\n\t\t\t\t\t\t\tout = append(out, ',')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tout = append(out, f.String()...)\n\t\t\t\t\t}\n\t\t\t\t\t// overwrite length value\n\t\t\t\t\tbinary.BigEndian.PutUint32(out[offset:], uint32(len(out)-offset-4))\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tpanic(fmt.Sprintf(\"slice of unknown type in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\tcase reflect.Ptr:\n\t\t\tif t == bigIntType {\n\t\t\t\tvar n *big.Int\n\t\t\t\tnValue := reflect.ValueOf(&n)\n\t\t\t\tnValue.Elem().Set(field)\n\t\t\t\tneeded := intLength(n)\n\t\t\t\toldLength := len(out)\n\n\t\t\t\tif cap(out)-len(out) < needed {\n\t\t\t\t\tnewOut := make([]byte, len(out), 2*(len(out)+needed))\n\t\t\t\t\tcopy(newOut, out)\n\t\t\t\t\tout = newOut\n\t\t\t\t}\n\t\t\t\tout = out[:oldLength+needed]\n\t\t\t\tmarshalInt(out[oldLength:], n)\n\t\t\t} else {\n\t\t\t\tpanic(fmt.Sprintf(\"pointer to unknown type in field %d: %T\", i, field.Interface()))\n\t\t\t}\n\t\t}\n\t}\n\n\treturn out\n}\n\nvar bigOne = big.NewInt(1)\n\nfunc parseString(in []byte) (out, rest []byte, ok bool) {\n\tif len(in) < 4 {\n\t\treturn\n\t}\n\tlength := binary.BigEndian.Uint32(in)\n\tin = in[4:]\n\tif uint32(len(in)) < length {\n\t\treturn\n\t}\n\tout = in[:length]\n\trest = in[length:]\n\tok = true\n\treturn\n}\n\nvar (\n\tcomma         = []byte{','}\n\temptyNameList = []string{}\n)\n\nfunc parseNameList(in []byte) (out []string, rest []byte, ok bool) {\n\tcontents, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\tif len(contents) == 0 {\n\t\tout = emptyNameList\n\t\treturn\n\t}\n\tparts := bytes.Split(contents, comma)\n\tout = make([]string, len(parts))\n\tfor i, part := range parts {\n\t\tout[i] = string(part)\n\t}\n\treturn\n}\n\nfunc parseInt(in []byte) (out *big.Int, rest []byte, ok bool) {\n\tcontents, rest, ok := parseString(in)\n\tif !ok {\n\t\treturn\n\t}\n\tout = new(big.Int)\n\n\tif len(contents) > 0 && contents[0]&0x80 == 0x80 {\n\t\t// This is a negative number\n\t\tnotBytes := make([]byte, len(contents))\n\t\tfor i := range notBytes {\n\t\t\tnotBytes[i] = ^contents[i]\n\t\t}\n\t\tout.SetBytes(notBytes)\n\t\tout.Add(out, bigOne)\n\t\tout.Neg(out)\n\t} else {\n\t\t// Positive number\n\t\tout.SetBytes(contents)\n\t}\n\tok = true\n\treturn\n}\n\nfunc parseUint32(in []byte) (uint32, []byte, bool) {\n\tif len(in) < 4 {\n\t\treturn 0, nil, false\n\t}\n\treturn binary.BigEndian.Uint32(in), in[4:], true\n}\n\nfunc parseUint64(in []byte) (uint64, []byte, bool) {\n\tif len(in) < 8 {\n\t\treturn 0, nil, false\n\t}\n\treturn binary.BigEndian.Uint64(in), in[8:], true\n}\n\nfunc intLength(n *big.Int) int {\n\tlength := 4 /* length bytes */\n\tif n.Sign() < 0 {\n\t\tnMinus1 := new(big.Int).Neg(n)\n\t\tnMinus1.Sub(nMinus1, bigOne)\n\t\tbitLen := nMinus1.BitLen()\n\t\tif bitLen%8 == 0 {\n\t\t\t// The number will need 0xff padding\n\t\t\tlength++\n\t\t}\n\t\tlength += (bitLen + 7) / 8\n\t} else if n.Sign() == 0 {\n\t\t// A zero is the zero length string\n\t} else {\n\t\tbitLen := n.BitLen()\n\t\tif bitLen%8 == 0 {\n\t\t\t// The number will need 0x00 padding\n\t\t\tlength++\n\t\t}\n\t\tlength += (bitLen + 7) / 8\n\t}\n\n\treturn length\n}\n\nfunc marshalUint32(to []byte, n uint32) []byte {\n\tbinary.BigEndian.PutUint32(to, n)\n\treturn to[4:]\n}\n\nfunc marshalUint64(to []byte, n uint64) []byte {\n\tbinary.BigEndian.PutUint64(to, n)\n\treturn to[8:]\n}\n\nfunc marshalInt(to []byte, n *big.Int) []byte {\n\tlengthBytes := to\n\tto = to[4:]\n\tlength := 0\n\n\tif n.Sign() < 0 {\n\t\t// A negative number has to be converted to two's-complement\n\t\t// form. So we'll subtract 1 and invert. If the\n\t\t// most-significant-bit isn't set then we'll need to pad the\n\t\t// beginning with 0xff in order to keep the number negative.\n\t\tnMinus1 := new(big.Int).Neg(n)\n\t\tnMinus1.Sub(nMinus1, bigOne)\n\t\tbytes := nMinus1.Bytes()\n\t\tfor i := range bytes {\n\t\t\tbytes[i] ^= 0xff\n\t\t}\n\t\tif len(bytes) == 0 || bytes[0]&0x80 == 0 {\n\t\t\tto[0] = 0xff\n\t\t\tto = to[1:]\n\t\t\tlength++\n\t\t}\n\t\tnBytes := copy(to, bytes)\n\t\tto = to[nBytes:]\n\t\tlength += nBytes\n\t} else if n.Sign() == 0 {\n\t\t// A zero is the zero length string\n\t} else {\n\t\tbytes := n.Bytes()\n\t\tif len(bytes) > 0 && bytes[0]&0x80 != 0 {\n\t\t\t// We'll have to pad this with a 0x00 in order to\n\t\t\t// stop it looking like a negative number.\n\t\t\tto[0] = 0\n\t\t\tto = to[1:]\n\t\t\tlength++\n\t\t}\n\t\tnBytes := copy(to, bytes)\n\t\tto = to[nBytes:]\n\t\tlength += nBytes\n\t}\n\n\tlengthBytes[0] = byte(length >> 24)\n\tlengthBytes[1] = byte(length >> 16)\n\tlengthBytes[2] = byte(length >> 8)\n\tlengthBytes[3] = byte(length)\n\treturn to\n}\n\nfunc writeInt(w io.Writer, n *big.Int) {\n\tlength := intLength(n)\n\tbuf := make([]byte, length)\n\tmarshalInt(buf, n)\n\tw.Write(buf)\n}\n\nfunc writeString(w io.Writer, s []byte) {\n\tvar lengthBytes [4]byte\n\tlengthBytes[0] = byte(len(s) >> 24)\n\tlengthBytes[1] = byte(len(s) >> 16)\n\tlengthBytes[2] = byte(len(s) >> 8)\n\tlengthBytes[3] = byte(len(s))\n\tw.Write(lengthBytes[:])\n\tw.Write(s)\n}\n\nfunc stringLength(n int) int {\n\treturn 4 + n\n}\n\nfunc marshalString(to []byte, s []byte) []byte {\n\tto[0] = byte(len(s) >> 24)\n\tto[1] = byte(len(s) >> 16)\n\tto[2] = byte(len(s) >> 8)\n\tto[3] = byte(len(s))\n\tto = to[4:]\n\tcopy(to, s)\n\treturn to[len(s):]\n}\n\nvar bigIntType = reflect.TypeOf((*big.Int)(nil))\n\n// Decode a packet into its corresponding message.\nfunc decode(packet []byte) (any, error) {\n\tvar msg any\n\tswitch packet[0] {\n\tcase msgDisconnect:\n\t\tmsg = new(disconnectMsg)\n\tcase msgServiceRequest:\n\t\tmsg = new(serviceRequestMsg)\n\tcase msgServiceAccept:\n\t\tmsg = new(serviceAcceptMsg)\n\tcase msgExtInfo:\n\t\tmsg = new(extInfoMsg)\n\tcase msgKexInit:\n\t\tmsg = new(kexInitMsg)\n\tcase msgKexDHInit:\n\t\tmsg = new(kexDHInitMsg)\n\tcase msgKexDHReply:\n\t\tmsg = new(kexDHReplyMsg)\n\tcase msgUserAuthRequest:\n\t\tmsg = new(userAuthRequestMsg)\n\tcase msgUserAuthSuccess:\n\t\treturn new(userAuthSuccessMsg), nil\n\tcase msgUserAuthFailure:\n\t\tmsg = new(userAuthFailureMsg)\n\tcase msgUserAuthPubKeyOk:\n\t\tmsg = new(userAuthPubKeyOkMsg)\n\tcase msgGlobalRequest:\n\t\tmsg = new(globalRequestMsg)\n\tcase msgRequestSuccess:\n\t\tmsg = new(globalRequestSuccessMsg)\n\tcase msgRequestFailure:\n\t\tmsg = new(globalRequestFailureMsg)\n\tcase msgChannelOpen:\n\t\tmsg = new(channelOpenMsg)\n\tcase msgChannelData:\n\t\tmsg = new(channelDataMsg)\n\tcase msgChannelOpenConfirm:\n\t\tmsg = new(channelOpenConfirmMsg)\n\tcase msgChannelOpenFailure:\n\t\tmsg = new(channelOpenFailureMsg)\n\tcase msgChannelWindowAdjust:\n\t\tmsg = new(windowAdjustMsg)\n\tcase msgChannelEOF:\n\t\tmsg = new(channelEOFMsg)\n\tcase msgChannelClose:\n\t\tmsg = new(channelCloseMsg)\n\tcase msgChannelRequest:\n\t\tmsg = new(channelRequestMsg)\n\tcase msgChannelSuccess:\n\t\tmsg = new(channelRequestSuccessMsg)\n\tcase msgChannelFailure:\n\t\tmsg = new(channelRequestFailureMsg)\n\tcase msgUserAuthGSSAPIToken:\n\t\tmsg = new(userAuthGSSAPIToken)\n\tcase msgUserAuthGSSAPIMIC:\n\t\tmsg = new(userAuthGSSAPIMIC)\n\tcase msgUserAuthGSSAPIErrTok:\n\t\tmsg = new(userAuthGSSAPIErrTok)\n\tcase msgUserAuthGSSAPIError:\n\t\tmsg = new(userAuthGSSAPIError)\n\tdefault:\n\t\treturn nil, unexpectedMessageError(0, packet[0])\n\t}\n\tif err := Unmarshal(packet, msg); err != nil {\n\t\treturn nil, err\n\t}\n\treturn msg, nil\n}\n\nvar packetTypeNames = map[byte]string{\n\tmsgDisconnect:          \"disconnectMsg\",\n\tmsgServiceRequest:      \"serviceRequestMsg\",\n\tmsgServiceAccept:       \"serviceAcceptMsg\",\n\tmsgExtInfo:             \"extInfoMsg\",\n\tmsgKexInit:             \"kexInitMsg\",\n\tmsgKexDHInit:           \"kexDHInitMsg\",\n\tmsgKexDHReply:          \"kexDHReplyMsg\",\n\tmsgUserAuthRequest:     \"userAuthRequestMsg\",\n\tmsgUserAuthSuccess:     \"userAuthSuccessMsg\",\n\tmsgUserAuthFailure:     \"userAuthFailureMsg\",\n\tmsgUserAuthPubKeyOk:    \"userAuthPubKeyOkMsg\",\n\tmsgGlobalRequest:       \"globalRequestMsg\",\n\tmsgRequestSuccess:      \"globalRequestSuccessMsg\",\n\tmsgRequestFailure:      \"globalRequestFailureMsg\",\n\tmsgChannelOpen:         \"channelOpenMsg\",\n\tmsgChannelData:         \"channelDataMsg\",\n\tmsgChannelOpenConfirm:  \"channelOpenConfirmMsg\",\n\tmsgChannelOpenFailure:  \"channelOpenFailureMsg\",\n\tmsgChannelWindowAdjust: \"windowAdjustMsg\",\n\tmsgChannelEOF:          \"channelEOFMsg\",\n\tmsgChannelClose:        \"channelCloseMsg\",\n\tmsgChannelRequest:      \"channelRequestMsg\",\n\tmsgChannelSuccess:      \"channelRequestSuccessMsg\",\n\tmsgChannelFailure:      \"channelRequestFailureMsg\",\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/mux.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 ssh\n\nimport (\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\n// debugMux, if set, causes messages in the connection protocol to be\n// logged.\nconst debugMux = false\n\n// chanList is a thread safe channel list.\ntype chanList struct {\n\t// protects concurrent access to chans\n\tsync.Mutex\n\n\t// chans are indexed by the local id of the channel, which the\n\t// other side should send in the PeersId field.\n\tchans []*channel\n\n\t// This is a debugging aid: it offsets all IDs by this\n\t// amount. This helps distinguish otherwise identical\n\t// server/client muxes\n\toffset uint32\n}\n\n// Assigns a channel ID to the given channel.\nfunc (c *chanList) add(ch *channel) uint32 {\n\tc.Lock()\n\tdefer c.Unlock()\n\tfor i := range c.chans {\n\t\tif c.chans[i] == nil {\n\t\t\tc.chans[i] = ch\n\t\t\treturn uint32(i) + c.offset\n\t\t}\n\t}\n\tc.chans = append(c.chans, ch)\n\treturn uint32(len(c.chans)-1) + c.offset\n}\n\n// getChan returns the channel for the given ID.\nfunc (c *chanList) getChan(id uint32) *channel {\n\tid -= c.offset\n\n\tc.Lock()\n\tdefer c.Unlock()\n\tif id < uint32(len(c.chans)) {\n\t\treturn c.chans[id]\n\t}\n\treturn nil\n}\n\nfunc (c *chanList) remove(id uint32) {\n\tid -= c.offset\n\tc.Lock()\n\tif id < uint32(len(c.chans)) {\n\t\tc.chans[id] = nil\n\t}\n\tc.Unlock()\n}\n\n// dropAll forgets all channels it knows, returning them in a slice.\nfunc (c *chanList) dropAll() []*channel {\n\tc.Lock()\n\tdefer c.Unlock()\n\tvar r []*channel\n\n\tfor _, ch := range c.chans {\n\t\tif ch == nil {\n\t\t\tcontinue\n\t\t}\n\t\tr = append(r, ch)\n\t}\n\tc.chans = nil\n\treturn r\n}\n\n// mux represents the state for the SSH connection protocol, which\n// multiplexes many channels onto a single packet transport.\ntype mux struct {\n\tconn     packetConn\n\tchanList chanList\n\n\tincomingChannels chan NewChannel\n\n\tglobalSentMu     sync.Mutex\n\tglobalResponses  chan any\n\tincomingRequests chan *Request\n\n\terrCond *sync.Cond\n\terr     error\n}\n\n// When debugging, each new chanList instantiation has a different\n// offset.\nvar globalOff uint32\n\nfunc (m *mux) Wait() error {\n\tm.errCond.L.Lock()\n\tdefer m.errCond.L.Unlock()\n\tfor m.err == nil {\n\t\tm.errCond.Wait()\n\t}\n\treturn m.err\n}\n\n// newMux returns a mux that runs over the given connection.\nfunc newMux(p packetConn) *mux {\n\tm := &mux{\n\t\tconn:             p,\n\t\tincomingChannels: make(chan NewChannel, chanSize),\n\t\tglobalResponses:  make(chan any, 1),\n\t\tincomingRequests: make(chan *Request, chanSize),\n\t\terrCond:          newCond(),\n\t}\n\tif debugMux {\n\t\tm.chanList.offset = atomic.AddUint32(&globalOff, 1)\n\t}\n\n\tgo m.loop()\n\treturn m\n}\n\nfunc (m *mux) sendMessage(msg any) error {\n\tp := Marshal(msg)\n\tif debugMux {\n\t\tlog.Printf(\"send global(%d): %#v\", m.chanList.offset, msg)\n\t}\n\treturn m.conn.writePacket(p)\n}\n\nfunc (m *mux) SendRequest(name string, wantReply bool, payload []byte) (bool, []byte, error) {\n\tif wantReply {\n\t\tm.globalSentMu.Lock()\n\t\tdefer m.globalSentMu.Unlock()\n\t}\n\n\tif err := m.sendMessage(globalRequestMsg{\n\t\tType:      name,\n\t\tWantReply: wantReply,\n\t\tData:      payload,\n\t}); err != nil {\n\t\treturn false, nil, err\n\t}\n\n\tif !wantReply {\n\t\treturn false, nil, nil\n\t}\n\n\tmsg, ok := <-m.globalResponses\n\tif !ok {\n\t\treturn false, nil, io.EOF\n\t}\n\tswitch msg := msg.(type) {\n\tcase *globalRequestFailureMsg:\n\t\treturn false, msg.Data, nil\n\tcase *globalRequestSuccessMsg:\n\t\treturn true, msg.Data, nil\n\tdefault:\n\t\treturn false, nil, fmt.Errorf(\"ssh: unexpected response to request: %#v\", msg)\n\t}\n}\n\n// ackRequest must be called after processing a global request that\n// has WantReply set.\nfunc (m *mux) ackRequest(ok bool, data []byte) error {\n\tif ok {\n\t\treturn m.sendMessage(globalRequestSuccessMsg{Data: data})\n\t}\n\treturn m.sendMessage(globalRequestFailureMsg{Data: data})\n}\n\nfunc (m *mux) Close() error {\n\treturn m.conn.Close()\n}\n\n// loop runs the connection machine. It will process packets until an\n// error is encountered. To synchronize on loop exit, use mux.Wait.\nfunc (m *mux) loop() {\n\tvar err error\n\tfor err == nil {\n\t\terr = m.onePacket()\n\t}\n\n\tfor _, ch := range m.chanList.dropAll() {\n\t\tch.close()\n\t}\n\n\tclose(m.incomingChannels)\n\tclose(m.incomingRequests)\n\tclose(m.globalResponses)\n\n\tm.conn.Close()\n\n\tm.errCond.L.Lock()\n\tm.err = err\n\tm.errCond.Broadcast()\n\tm.errCond.L.Unlock()\n\n\tif debugMux {\n\t\tlog.Println(\"loop exit\", err)\n\t}\n}\n\n// onePacket reads and processes one packet.\nfunc (m *mux) onePacket() error {\n\tpacket, err := m.conn.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif debugMux {\n\t\tif packet[0] == msgChannelData || packet[0] == msgChannelExtendedData {\n\t\t\tlog.Printf(\"decoding(%d): data packet - %d bytes\", m.chanList.offset, len(packet))\n\t\t} else {\n\t\t\tp, _ := decode(packet)\n\t\t\tlog.Printf(\"decoding(%d): %d %#v - %d bytes\", m.chanList.offset, packet[0], p, len(packet))\n\t\t}\n\t}\n\n\tswitch packet[0] {\n\tcase msgChannelOpen:\n\t\treturn m.handleChannelOpen(packet)\n\tcase msgGlobalRequest, msgRequestSuccess, msgRequestFailure:\n\t\treturn m.handleGlobalPacket(packet)\n\tcase msgPing:\n\t\tvar msg pingMsg\n\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to unmarshal ping@openssh.com message: %w\", err)\n\t\t}\n\t\treturn m.sendMessage(pongMsg(msg))\n\t}\n\n\t// assume a channel packet.\n\tif len(packet) < 5 {\n\t\treturn parseError(packet[0])\n\t}\n\tid := binary.BigEndian.Uint32(packet[1:])\n\tch := m.chanList.getChan(id)\n\tif ch == nil {\n\t\treturn m.handleUnknownChannelPacket(id, packet)\n\t}\n\n\treturn ch.handlePacket(packet)\n}\n\nfunc (m *mux) handleGlobalPacket(packet []byte) error {\n\tmsg, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := msg.(type) {\n\tcase *globalRequestMsg:\n\t\tm.incomingRequests <- &Request{\n\t\t\tType:      msg.Type,\n\t\t\tWantReply: msg.WantReply,\n\t\t\tPayload:   msg.Data,\n\t\t\tmux:       m,\n\t\t}\n\tcase *globalRequestSuccessMsg, *globalRequestFailureMsg:\n\t\tm.globalResponses <- msg\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"not a global message %#v\", msg))\n\t}\n\n\treturn nil\n}\n\n// handleChannelOpen schedules a channel to be Accept()ed.\nfunc (m *mux) handleChannelOpen(packet []byte) error {\n\tvar msg channelOpenMsg\n\tif err := Unmarshal(packet, &msg); err != nil {\n\t\treturn err\n\t}\n\n\tif msg.MaxPacketSize < minPacketLength || msg.MaxPacketSize > 1<<31 {\n\t\tfailMsg := channelOpenFailureMsg{\n\t\t\tPeersID:  msg.PeersID,\n\t\t\tReason:   ConnectionFailed,\n\t\t\tMessage:  \"invalid request\",\n\t\t\tLanguage: \"en_US.UTF-8\",\n\t\t}\n\t\treturn m.sendMessage(failMsg)\n\t}\n\n\tc := m.newChannel(msg.ChanType, channelInbound, msg.TypeSpecificData)\n\tc.remoteId = msg.PeersID\n\tc.maxRemotePayload = msg.MaxPacketSize\n\tc.remoteWin.add(msg.PeersWindow)\n\tm.incomingChannels <- c\n\treturn nil\n}\n\nfunc (m *mux) OpenChannel(chanType string, extra []byte) (Channel, <-chan *Request, error) {\n\tch, err := m.openChannel(chanType, extra)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\treturn ch, ch.incomingRequests, nil\n}\n\nfunc (m *mux) openChannel(chanType string, extra []byte) (*channel, error) {\n\tch := m.newChannel(chanType, channelOutbound, extra)\n\n\tch.maxIncomingPayload = channelMaxPacket\n\n\topen := channelOpenMsg{\n\t\tChanType:         chanType,\n\t\tPeersWindow:      ch.myWindow,\n\t\tMaxPacketSize:    ch.maxIncomingPayload,\n\t\tTypeSpecificData: extra,\n\t\tPeersID:          ch.localId,\n\t}\n\tif err := m.sendMessage(open); err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch msg := (<-ch.msg).(type) {\n\tcase *channelOpenConfirmMsg:\n\t\treturn ch, nil\n\tcase *channelOpenFailureMsg:\n\t\treturn nil, &OpenChannelError{msg.Reason, msg.Message}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unexpected packet in response to channel open: %T\", msg)\n\t}\n}\n\nfunc (m *mux) handleUnknownChannelPacket(id uint32, packet []byte) error {\n\tmsg, err := decode(packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch msg := msg.(type) {\n\t// RFC 4254 section 5.4 says unrecognized channel requests should\n\t// receive a failure response.\n\tcase *channelRequestMsg:\n\t\tif msg.WantReply {\n\t\t\treturn m.sendMessage(channelRequestFailureMsg{\n\t\t\t\tPeersID: msg.PeersID,\n\t\t\t})\n\t\t}\n\t\treturn nil\n\tdefault:\n\t\treturn fmt.Errorf(\"ssh: invalid channel %d\", id)\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/server.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 ssh\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"strings\"\n)\n\n// The Permissions type holds fine-grained permissions that are\n// specific to a user or a specific authentication method for a user.\n// The Permissions value for a successful authentication attempt is\n// available in ServerConn, so it can be used to pass information from\n// the user-authentication phase to the application layer.\ntype Permissions struct {\n\t// CriticalOptions indicate restrictions to the default\n\t// permissions, and are typically used in conjunction with\n\t// user certificates. The standard for SSH certificates\n\t// defines \"force-command\" (only allow the given command to\n\t// execute) and \"source-address\" (only allow connections from\n\t// the given address). The SSH package currently only enforces\n\t// the \"source-address\" critical option. It is up to server\n\t// implementations to enforce other critical options, such as\n\t// \"force-command\", by checking them after the SSH handshake\n\t// is successful. In general, SSH servers should reject\n\t// connections that specify critical options that are unknown\n\t// or not supported.\n\tCriticalOptions map[string]string\n\n\t// Extensions are extra functionality that the server may\n\t// offer on authenticated connections. Lack of support for an\n\t// extension does not preclude authenticating a user. Common\n\t// extensions are \"permit-agent-forwarding\",\n\t// \"permit-X11-forwarding\". The Go SSH library currently does\n\t// not act on any extension, and it is up to server\n\t// implementations to honor them. Extensions can be used to\n\t// pass data from the authentication callbacks to the server\n\t// application layer.\n\tExtensions map[string]string\n}\n\ntype GSSAPIWithMICConfig struct {\n\t// AllowLogin, must be set, is called when gssapi-with-mic\n\t// authentication is selected (RFC 4462 section 3). The srcName is from the\n\t// results of the GSS-API authentication. The format is username@DOMAIN.\n\t// GSSAPI just guarantees to the server who the user is, but not if they can log in, and with what permissions.\n\t// This callback is called after the user identity is established with GSSAPI to decide if the user can login with\n\t// which permissions. If the user is allowed to login, it should return a nil error.\n\tAllowLogin func(conn ConnMetadata, srcName string) (*Permissions, error)\n\n\t// Server must be set. It's the implementation\n\t// of the GSSAPIServer interface. See GSSAPIServer interface for details.\n\tServer GSSAPIServer\n}\n\n// ServerConfig holds server specific configuration data.\ntype ServerConfig struct {\n\t// Config contains configuration shared between client and server.\n\tConfig\n\n\t// PublicKeyAuthAlgorithms specifies the supported client public key\n\t// authentication algorithms. Note that this should not include certificate\n\t// types since those use the underlying algorithm. This list is sent to the\n\t// client if it supports the server-sig-algs extension. Order is irrelevant.\n\t// If unspecified then a default set of algorithms is used.\n\tPublicKeyAuthAlgorithms []string\n\n\thostKeys []Signer\n\n\t// NoClientAuth is true if clients are allowed to connect without\n\t// authenticating.\n\t// To determine NoClientAuth at runtime, set NoClientAuth to true\n\t// and the optional NoClientAuthCallback to a non-nil value.\n\tNoClientAuth bool\n\n\t// NoClientAuthCallback, if non-nil, is called when a user\n\t// attempts to authenticate with auth method \"none\".\n\t// NoClientAuth must also be set to true for this be used, or\n\t// this func is unused.\n\tNoClientAuthCallback func(ConnMetadata) (*Permissions, error)\n\n\t// MaxAuthTries specifies the maximum number of authentication attempts\n\t// permitted per connection. If set to a negative number, the number of\n\t// attempts are unlimited. If set to zero, the number of attempts are limited\n\t// to 6.\n\tMaxAuthTries int\n\n\t// PasswordCallback, if non-nil, is called when a user\n\t// attempts to authenticate using a password.\n\tPasswordCallback func(conn ConnMetadata, password []byte) (*Permissions, error)\n\n\t// PublicKeyCallback, if non-nil, is called when a client\n\t// offers a public key for authentication. It must return a nil error\n\t// if the given public key can be used to authenticate the\n\t// given user. For example, see CertChecker.Authenticate. A\n\t// call to this function does not guarantee that the key\n\t// offered is in fact used to authenticate. To record any data\n\t// depending on the public key, store it inside a\n\t// Permissions.Extensions entry.\n\tPublicKeyCallback func(conn ConnMetadata, key PublicKey) (*Permissions, error)\n\n\t// KeyboardInteractiveCallback, if non-nil, is called when\n\t// keyboard-interactive authentication is selected (RFC\n\t// 4256). The client object's Challenge function should be\n\t// used to query the user. The callback may offer multiple\n\t// Challenge rounds. To avoid information leaks, the client\n\t// should be presented a challenge even if the user is\n\t// unknown.\n\tKeyboardInteractiveCallback func(conn ConnMetadata, client KeyboardInteractiveChallenge) (*Permissions, error)\n\n\t// AuthLogCallback, if non-nil, is called to log all authentication\n\t// attempts.\n\tAuthLogCallback func(conn ConnMetadata, method string, err error)\n\n\t// ServerVersion is the version identification string to announce in\n\t// the public handshake.\n\t// If empty, a reasonable default is used.\n\t// Note that RFC 4253 section 4.2 requires that this string start with\n\t// \"SSH-2.0-\".\n\tServerVersion string\n\n\t// BannerCallback, if present, is called and the return string is sent to\n\t// the client after key exchange completed but before authentication.\n\tBannerCallback func(conn ConnMetadata) string\n\n\t// GSSAPIWithMICConfig includes gssapi server and callback, which if both non-nil, is used\n\t// when gssapi-with-mic authentication is selected (RFC 4462 section 3).\n\tGSSAPIWithMICConfig *GSSAPIWithMICConfig\n}\n\n// AddHostKey adds a private key as a host key. If an existing host\n// key exists with the same public key format, it is replaced. Each server\n// config must have at least one host key.\nfunc (s *ServerConfig) AddHostKey(key Signer) {\n\tfor i, k := range s.hostKeys {\n\t\tif k.PublicKey().Type() == key.PublicKey().Type() {\n\t\t\ts.hostKeys[i] = key\n\t\t\treturn\n\t\t}\n\t}\n\n\ts.hostKeys = append(s.hostKeys, key)\n}\n\n// cachedPubKey contains the results of querying whether a public key is\n// acceptable for a user.\ntype cachedPubKey struct {\n\tuser       string\n\tpubKeyData []byte\n\tresult     error\n\tperms      *Permissions\n}\n\nconst maxCachedPubKeys = 16\n\n// pubKeyCache caches tests for public keys.  Since SSH clients\n// will query whether a public key is acceptable before attempting to\n// authenticate with it, we end up with duplicate queries for public\n// key validity.  The cache only applies to a single ServerConn.\ntype pubKeyCache struct {\n\tkeys []cachedPubKey\n}\n\n// get returns the result for a given user/algo/key tuple.\nfunc (c *pubKeyCache) get(user string, pubKeyData []byte) (cachedPubKey, bool) {\n\tfor _, k := range c.keys {\n\t\tif k.user == user && bytes.Equal(k.pubKeyData, pubKeyData) {\n\t\t\treturn k, true\n\t\t}\n\t}\n\treturn cachedPubKey{}, false\n}\n\n// add adds the given tuple to the cache.\nfunc (c *pubKeyCache) add(candidate cachedPubKey) {\n\tif len(c.keys) < maxCachedPubKeys {\n\t\tc.keys = append(c.keys, candidate)\n\t}\n}\n\n// ServerConn is an authenticated SSH connection, as seen from the\n// server\ntype ServerConn struct {\n\tConn\n\n\t// If the succeeding authentication callback returned a\n\t// non-nil Permissions pointer, it is stored here.\n\tPermissions *Permissions\n}\n\n// NewServerConn starts a new SSH server with c as the underlying\n// transport.  It starts with a handshake and, if the handshake is\n// unsuccessful, it closes the connection and returns an error.  The\n// Request and NewChannel channels must be serviced, or the connection\n// will hang.\n//\n// The returned error may be of type *ServerAuthError for\n// authentication errors.\nfunc NewServerConn(c net.Conn, config *ServerConfig) (*ServerConn, <-chan NewChannel, <-chan *Request, error) {\n\tfullConf := *config\n\tfullConf.SetDefaults()\n\tif fullConf.MaxAuthTries == 0 {\n\t\tfullConf.MaxAuthTries = 6\n\t}\n\tif len(fullConf.PublicKeyAuthAlgorithms) == 0 {\n\t\tfullConf.PublicKeyAuthAlgorithms = supportedPubKeyAuthAlgos\n\t} else {\n\t\tfor _, algo := range fullConf.PublicKeyAuthAlgorithms {\n\t\t\tif !contains(supportedPubKeyAuthAlgos, algo) {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, nil, nil, fmt.Errorf(\"ssh: unsupported public key authentication algorithm %s\", algo)\n\t\t\t}\n\t\t}\n\t}\n\t// Check if the config contains any unsupported key exchanges\n\tfor _, kex := range fullConf.KeyExchanges {\n\t\tif _, ok := serverForbiddenKexAlgos[kex]; ok {\n\t\t\tc.Close()\n\t\t\treturn nil, nil, nil, fmt.Errorf(\"ssh: unsupported key exchange %s for server\", kex)\n\t\t}\n\t}\n\n\ts := &connection{\n\t\tsshConn: sshConn{conn: c},\n\t}\n\tperms, err := s.serverHandshake(&fullConf)\n\tif err != nil {\n\t\tc.Close()\n\t\treturn nil, nil, nil, err\n\t}\n\treturn &ServerConn{s, perms}, s.mux.incomingChannels, s.mux.incomingRequests, nil\n}\n\n// signAndMarshal signs the data with the appropriate algorithm,\n// and serializes the result in SSH wire format. algo is the negotiate\n// algorithm and may be a certificate type.\nfunc signAndMarshal(k AlgorithmSigner, rand io.Reader, data []byte, algo string) ([]byte, error) {\n\tsig, err := k.SignWithAlgorithm(rand, data, underlyingAlgo(algo))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn Marshal(sig), nil\n}\n\n// handshake performs key exchange and user authentication.\nfunc (s *connection) serverHandshake(config *ServerConfig) (*Permissions, error) {\n\tif len(config.hostKeys) == 0 {\n\t\treturn nil, errors.New(\"ssh: server has no host keys\")\n\t}\n\n\tif !config.NoClientAuth && config.PasswordCallback == nil && config.PublicKeyCallback == nil &&\n\t\tconfig.KeyboardInteractiveCallback == nil && (config.GSSAPIWithMICConfig == nil ||\n\t\tconfig.GSSAPIWithMICConfig.AllowLogin == nil || config.GSSAPIWithMICConfig.Server == nil) {\n\t\treturn nil, errors.New(\"ssh: no authentication methods configured but NoClientAuth is also false\")\n\t}\n\n\tif config.ServerVersion != \"\" {\n\t\ts.serverVersion = []byte(config.ServerVersion)\n\t} else {\n\t\ts.serverVersion = []byte(packageVersion)\n\t}\n\tvar err error\n\ts.clientVersion, err = exchangeVersions(s.sshConn.conn, s.serverVersion)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\ttr := newTransport(s.sshConn.conn, config.Rand, false /* not client */)\n\ts.transport = newServerTransport(tr, s.clientVersion, s.serverVersion, config)\n\n\tif err := s.transport.waitSession(); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// We just did the key change, so the session ID is established.\n\ts.sessionID = s.transport.getSessionID()\n\n\tvar packet []byte\n\tif packet, err = s.transport.readPacket(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar serviceRequest serviceRequestMsg\n\tif err = Unmarshal(packet, &serviceRequest); err != nil {\n\t\treturn nil, err\n\t}\n\tif serviceRequest.Service != serviceUserAuth {\n\t\treturn nil, errors.New(\"ssh: requested service '\" + serviceRequest.Service + \"' before authenticating\")\n\t}\n\tserviceAccept := serviceAcceptMsg{\n\t\tService: serviceUserAuth,\n\t}\n\tif err := s.transport.writePacket(Marshal(&serviceAccept)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tperms, err := s.serverAuthenticate(config)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\ts.mux = newMux(s.transport)\n\treturn perms, err\n}\n\nfunc checkSourceAddress(addr net.Addr, sourceAddrs string) error {\n\tif addr == nil {\n\t\treturn errors.New(\"ssh: no address known for client, but source-address match required\")\n\t}\n\n\ttcpAddr, ok := addr.(*net.TCPAddr)\n\tif !ok {\n\t\treturn fmt.Errorf(\"ssh: remote address %v is not an TCP address when checking source-address match\", addr)\n\t}\n\n\tfor _, sourceAddr := range strings.Split(sourceAddrs, \",\") {\n\t\tif allowedIP := net.ParseIP(sourceAddr); allowedIP != nil {\n\t\t\tif allowedIP.Equal(tcpAddr.IP) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t} else {\n\t\t\t_, ipNet, err := net.ParseCIDR(sourceAddr)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"ssh: error parsing source-address restriction %q: %v\", sourceAddr, err)\n\t\t\t}\n\n\t\t\tif ipNet.Contains(tcpAddr.IP) {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fmt.Errorf(\"ssh: remote address %v is not allowed because of source-address restriction\", addr)\n}\n\nfunc gssExchangeToken(gssapiConfig *GSSAPIWithMICConfig, token []byte, s *connection,\n\tsessionID []byte, userAuthReq userAuthRequestMsg) (authErr error, perms *Permissions, err error) {\n\tgssAPIServer := gssapiConfig.Server\n\tdefer gssAPIServer.DeleteSecContext()\n\tvar srcName string\n\tfor {\n\t\tvar (\n\t\t\toutToken     []byte\n\t\t\tneedContinue bool\n\t\t)\n\t\toutToken, srcName, needContinue, err = gssAPIServer.AcceptSecContext(token)\n\t\tif err != nil {\n\t\t\treturn err, nil, nil\n\t\t}\n\t\tif len(outToken) != 0 {\n\t\t\tif err := s.transport.writePacket(Marshal(&userAuthGSSAPIToken{\n\t\t\t\tToken: outToken,\n\t\t\t})); err != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t}\n\t\tif !needContinue {\n\t\t\tbreak\n\t\t}\n\t\tpacket, err := s.transport.readPacket()\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\ttoken = userAuthGSSAPITokenReq.Token\n\t}\n\tpacket, err := s.transport.readPacket()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tuserAuthGSSAPIMICReq := &userAuthGSSAPIMIC{}\n\tif err := Unmarshal(packet, userAuthGSSAPIMICReq); err != nil {\n\t\treturn nil, nil, err\n\t}\n\tmic := buildMIC(string(sessionID), userAuthReq.User, userAuthReq.Service, userAuthReq.Method)\n\tif err := gssAPIServer.VerifyMIC(mic, userAuthGSSAPIMICReq.MIC); err != nil {\n\t\treturn err, nil, nil\n\t}\n\tperms, authErr = gssapiConfig.AllowLogin(s, srcName)\n\treturn authErr, perms, nil\n}\n\n// isAlgoCompatible checks if the signature format is compatible with the\n// selected algorithm taking into account edge cases that occur with old\n// clients.\nfunc isAlgoCompatible(algo, sigFormat string) bool {\n\t// Compatibility for old clients.\n\t//\n\t// For certificate authentication with OpenSSH 7.2-7.7 signature format can\n\t// be rsa-sha2-256 or rsa-sha2-512 for the algorithm\n\t// ssh-rsa-cert-v01@openssh.com.\n\t//\n\t// With gpg-agent < 2.2.6 the algorithm can be rsa-sha2-256 or rsa-sha2-512\n\t// for signature format ssh-rsa.\n\tif isRSA(algo) && isRSA(sigFormat) {\n\t\treturn true\n\t}\n\t// Standard case: the underlying algorithm must match the signature format.\n\treturn underlyingAlgo(algo) == sigFormat\n}\n\n// ServerAuthError represents server authentication errors and is\n// sometimes returned by NewServerConn. It appends any authentication\n// errors that may occur, and is returned if all of the authentication\n// methods provided by the user failed to authenticate.\ntype ServerAuthError struct {\n\t// Errors contains authentication errors returned by the authentication\n\t// callback methods. The first entry is typically ErrNoAuth.\n\tErrors []error\n}\n\nfunc (l ServerAuthError) Error() string {\n\tvar errs []string\n\tfor _, err := range l.Errors {\n\t\terrs = append(errs, err.Error())\n\t}\n\treturn \"[\" + strings.Join(errs, \", \") + \"]\"\n}\n\n// ErrNoAuth is the error value returned if no\n// authentication method has been passed yet. This happens as a normal\n// part of the authentication loop, since the client first tries\n// 'none' authentication to discover available methods.\n// It is returned in ServerAuthError.Errors from NewServerConn.\nvar ErrNoAuth = errors.New(\"ssh: no auth passed yet\")\n\nfunc (s *connection) serverAuthenticate(config *ServerConfig) (*Permissions, error) {\n\tsessionID := s.transport.getSessionID()\n\tvar cache pubKeyCache\n\tvar perms *Permissions\n\n\tauthFailures := 0\n\tvar authErrs []error\n\tvar displayedBanner bool\n\nuserAuthLoop:\n\tfor {\n\t\tif authFailures >= config.MaxAuthTries && config.MaxAuthTries > 0 {\n\t\t\tdiscMsg := &disconnectMsg{\n\t\t\t\tReason:  2,\n\t\t\t\tMessage: \"too many authentication failures\",\n\t\t\t}\n\n\t\t\tif err := s.transport.writePacket(Marshal(discMsg)); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\treturn nil, discMsg\n\t\t}\n\n\t\tvar userAuthReq userAuthRequestMsg\n\t\tif packet, err := s.transport.readPacket(); err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn nil, &ServerAuthError{Errors: authErrs}\n\t\t\t}\n\t\t\treturn nil, err\n\t\t} else if err = Unmarshal(packet, &userAuthReq); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif userAuthReq.Service != serviceSSH {\n\t\t\treturn nil, errors.New(\"ssh: client attempted to negotiate for unknown service: \" + userAuthReq.Service)\n\t\t}\n\n\t\ts.user = userAuthReq.User\n\n\t\tif !displayedBanner && config.BannerCallback != nil {\n\t\t\tdisplayedBanner = true\n\t\t\tmsg := config.BannerCallback(s)\n\t\t\tif msg != \"\" {\n\t\t\t\tbannerMsg := &userAuthBannerMsg{\n\t\t\t\t\tMessage: msg,\n\t\t\t\t}\n\t\t\t\tif err := s.transport.writePacket(Marshal(bannerMsg)); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tperms = nil\n\t\tauthErr := ErrNoAuth\n\n\t\tswitch userAuthReq.Method {\n\t\tcase \"none\":\n\t\t\tif config.NoClientAuth {\n\t\t\t\tif config.NoClientAuthCallback != nil {\n\t\t\t\t\tperms, authErr = config.NoClientAuthCallback(s)\n\t\t\t\t} else {\n\t\t\t\t\tauthErr = nil\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// allow initial attempt of 'none' without penalty\n\t\t\tif authFailures == 0 {\n\t\t\t\tauthFailures--\n\t\t\t}\n\t\tcase \"password\":\n\t\t\tif config.PasswordCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: password auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpayload := userAuthReq.Payload\n\t\t\tif len(payload) < 1 || payload[0] != 0 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\tpayload = payload[1:]\n\t\t\tpassword, payload, ok := parseString(payload)\n\t\t\tif !ok || len(payload) > 0 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\n\t\t\tperms, authErr = config.PasswordCallback(s, password)\n\t\tcase \"keyboard-interactive\":\n\t\t\tif config.KeyboardInteractiveCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: keyboard-interactive auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tprompter := &sshClientKeyboardInteractive{s}\n\t\t\tperms, authErr = config.KeyboardInteractiveCallback(s, prompter.Challenge)\n\t\tcase \"publickey\":\n\t\t\tif config.PublicKeyCallback == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: publickey auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tpayload := userAuthReq.Payload\n\t\t\tif len(payload) < 1 {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\tisQuery := payload[0] == 0\n\t\t\tpayload = payload[1:]\n\t\t\talgoBytes, payload, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\talgo := string(algoBytes)\n\t\t\tif !contains(config.PublicKeyAuthAlgorithms, underlyingAlgo(algo)) {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: algorithm %q not accepted\", algo)\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tpubKeyData, payload, ok := parseString(payload)\n\t\t\tif !ok {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\n\t\t\tpubKey, err := ParsePublicKey(pubKeyData)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\n\t\t\tcandidate, ok := cache.get(s.user, pubKeyData)\n\t\t\tif !ok {\n\t\t\t\tcandidate.user = s.user\n\t\t\t\tcandidate.pubKeyData = pubKeyData\n\t\t\t\tcandidate.perms, candidate.result = config.PublicKeyCallback(s, pubKey)\n\t\t\t\tif candidate.result == nil && candidate.perms != nil && candidate.perms.CriticalOptions != nil && candidate.perms.CriticalOptions[sourceAddressCriticalOption] != \"\" {\n\t\t\t\t\tcandidate.result = checkSourceAddress(\n\t\t\t\t\t\ts.RemoteAddr(),\n\t\t\t\t\t\tcandidate.perms.CriticalOptions[sourceAddressCriticalOption])\n\t\t\t\t}\n\t\t\t\tcache.add(candidate)\n\t\t\t}\n\n\t\t\tif isQuery {\n\t\t\t\t// The client can query if the given public key\n\t\t\t\t// would be okay.\n\n\t\t\t\tif len(payload) > 0 {\n\t\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t\t}\n\n\t\t\t\tif candidate.result == nil {\n\t\t\t\t\tokMsg := userAuthPubKeyOkMsg{\n\t\t\t\t\t\tAlgo:   algo,\n\t\t\t\t\t\tPubKey: pubKeyData,\n\t\t\t\t\t}\n\t\t\t\t\tif err = s.transport.writePacket(Marshal(&okMsg)); err != nil {\n\t\t\t\t\t\treturn nil, err\n\t\t\t\t\t}\n\t\t\t\t\tcontinue userAuthLoop\n\t\t\t\t}\n\t\t\t\tauthErr = candidate.result\n\t\t\t} else {\n\t\t\t\tsig, payload, ok := parseSignature(payload)\n\t\t\t\tif !ok || len(payload) > 0 {\n\t\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t\t}\n\t\t\t\t// Ensure the declared public key algo is compatible with the\n\t\t\t\t// decoded one. This check will ensure we don't accept e.g.\n\t\t\t\t// ssh-rsa-cert-v01@openssh.com algorithm with ssh-rsa public\n\t\t\t\t// key type. The algorithm and public key type must be\n\t\t\t\t// consistent: both must be certificate algorithms, or neither.\n\t\t\t\tif !contains(algorithmsForKeyFormat(pubKey.Type()), algo) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: public key type %q not compatible with selected algorithm %q\",\n\t\t\t\t\t\tpubKey.Type(), algo)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\t// Ensure the public key algo and signature algo\n\t\t\t\t// are supported.  Compare the private key\n\t\t\t\t// algorithm name that corresponds to algo with\n\t\t\t\t// sig.Format.  This is usually the same, but\n\t\t\t\t// for certs, the names differ.\n\t\t\t\tif !contains(config.PublicKeyAuthAlgorithms, sig.Format) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: algorithm %q not accepted\", sig.Format)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tif !isAlgoCompatible(algo, sig.Format) {\n\t\t\t\t\tauthErr = fmt.Errorf(\"ssh: signature %q not compatible with selected algorithm %q\", sig.Format, algo)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\n\t\t\t\tsignedData := buildDataSignedForAuth(sessionID, userAuthReq, algo, pubKeyData)\n\n\t\t\t\tif err := pubKey.Verify(signedData, sig); err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\n\t\t\t\tauthErr = candidate.result\n\t\t\t\tperms = candidate.perms\n\t\t\t}\n\t\tcase \"gssapi-with-mic\":\n\t\t\tif config.GSSAPIWithMICConfig == nil {\n\t\t\t\tauthErr = errors.New(\"ssh: gssapi-with-mic auth not configured\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tgssapiConfig := config.GSSAPIWithMICConfig\n\t\t\tuserAuthRequestGSSAPI, err := parseGSSAPIPayload(userAuthReq.Payload)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, parseError(msgUserAuthRequest)\n\t\t\t}\n\t\t\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication.\n\t\t\tif userAuthRequestGSSAPI.N == 0 {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: Mechanism negotiation is not supported\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tvar i uint32\n\t\t\tpresent := false\n\t\t\tfor i = 0; i < userAuthRequestGSSAPI.N; i++ {\n\t\t\t\tif userAuthRequestGSSAPI.OIDS[i].Equal(krb5Mesh) {\n\t\t\t\t\tpresent = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif !present {\n\t\t\t\tauthErr = fmt.Errorf(\"ssh: GSSAPI authentication must use the Kerberos V5 mechanism\")\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t// Initial server response, see RFC 4462 section 3.3.\n\t\t\tif err := s.transport.writePacket(Marshal(&userAuthGSSAPIResponse{\n\t\t\t\tSupportMech: krb5OID,\n\t\t\t})); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\t// Exchange token, see RFC 4462 section 3.4.\n\t\t\tpacket, err := s.transport.readPacket()\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tuserAuthGSSAPITokenReq := &userAuthGSSAPIToken{}\n\t\t\tif err := Unmarshal(packet, userAuthGSSAPITokenReq); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tauthErr, perms, err = gssExchangeToken(gssapiConfig, userAuthGSSAPITokenReq.Token, s, sessionID,\n\t\t\t\tuserAuthReq)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\tdefault:\n\t\t\tauthErr = fmt.Errorf(\"ssh: unknown method %q\", userAuthReq.Method)\n\t\t}\n\n\t\tauthErrs = append(authErrs, authErr)\n\n\t\tif config.AuthLogCallback != nil {\n\t\t\tconfig.AuthLogCallback(s, userAuthReq.Method, authErr)\n\t\t}\n\n\t\tif authErr == nil {\n\t\t\tbreak userAuthLoop\n\t\t}\n\n\t\tauthFailures++\n\t\tif config.MaxAuthTries > 0 && authFailures >= config.MaxAuthTries {\n\t\t\t// If we have hit the max attempts, don't bother sending the\n\t\t\t// final SSH_MSG_USERAUTH_FAILURE message, since there are\n\t\t\t// no more authentication methods which can be attempted,\n\t\t\t// and this message may cause the client to re-attempt\n\t\t\t// authentication while we send the disconnect message.\n\t\t\t// Continue, and trigger the disconnect at the start of\n\t\t\t// the loop.\n\t\t\t//\n\t\t\t// The SSH specification is somewhat confusing about this,\n\t\t\t// RFC 4252 Section 5.1 requires each authentication failure\n\t\t\t// be responded to with a respective SSH_MSG_USERAUTH_FAILURE\n\t\t\t// message, but Section 4 says the server should disconnect\n\t\t\t// after some number of attempts, but it isn't explicit which\n\t\t\t// message should take precedence (i.e. should there be a failure\n\t\t\t// message than a disconnect message, or if we are going to\n\t\t\t// disconnect, should we only send that message.)\n\t\t\t//\n\t\t\t// Either way, OpenSSH disconnects immediately after the last\n\t\t\t// failed authnetication attempt, and given they are typically\n\t\t\t// considered the golden implementation it seems reasonable\n\t\t\t// to match that behavior.\n\t\t\tcontinue\n\t\t}\n\n\t\tvar failureMsg userAuthFailureMsg\n\t\tif config.PasswordCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"password\")\n\t\t}\n\t\tif config.PublicKeyCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"publickey\")\n\t\t}\n\t\tif config.KeyboardInteractiveCallback != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"keyboard-interactive\")\n\t\t}\n\t\tif config.GSSAPIWithMICConfig != nil && config.GSSAPIWithMICConfig.Server != nil &&\n\t\t\tconfig.GSSAPIWithMICConfig.AllowLogin != nil {\n\t\t\tfailureMsg.Methods = append(failureMsg.Methods, \"gssapi-with-mic\")\n\t\t}\n\n\t\tif len(failureMsg.Methods) == 0 {\n\t\t\treturn nil, errors.New(\"ssh: no authentication methods configured but NoClientAuth is also false\")\n\t\t}\n\n\t\tif err := s.transport.writePacket(Marshal(&failureMsg)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := s.transport.writePacket([]byte{msgUserAuthSuccess}); err != nil {\n\t\treturn nil, err\n\t}\n\treturn perms, nil\n}\n\n// sshClientKeyboardInteractive implements a ClientKeyboardInteractive by\n// asking the client on the other side of a ServerConn.\ntype sshClientKeyboardInteractive struct {\n\t*connection\n}\n\nfunc (c *sshClientKeyboardInteractive) Challenge(name, instruction string, questions []string, echos []bool) (answers []string, err error) {\n\tif len(questions) != len(echos) {\n\t\treturn nil, errors.New(\"ssh: echos and questions must have equal length\")\n\t}\n\n\tvar prompts []byte\n\tfor i := range questions {\n\t\tprompts = appendString(prompts, questions[i])\n\t\tprompts = appendBool(prompts, echos[i])\n\t}\n\n\tif err := c.transport.writePacket(Marshal(&userAuthInfoRequestMsg{\n\t\tName:        name,\n\t\tInstruction: instruction,\n\t\tNumPrompts:  uint32(len(questions)),\n\t\tPrompts:     prompts,\n\t})); err != nil {\n\t\treturn nil, err\n\t}\n\n\tpacket, err := c.transport.readPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif packet[0] != msgUserAuthInfoResponse {\n\t\treturn nil, unexpectedMessageError(msgUserAuthInfoResponse, packet[0])\n\t}\n\tpacket = packet[1:]\n\n\tn, packet, ok := parseUint32(packet)\n\tif !ok || int(n) != len(questions) {\n\t\treturn nil, parseError(msgUserAuthInfoResponse)\n\t}\n\n\tfor i := uint32(0); i < n; i++ {\n\t\tans, rest, ok := parseString(packet)\n\t\tif !ok {\n\t\t\treturn nil, parseError(msgUserAuthInfoResponse)\n\t\t}\n\n\t\tanswers = append(answers, string(ans))\n\t\tpacket = rest\n\t}\n\tif len(packet) != 0 {\n\t\treturn nil, errors.New(\"ssh: junk at end of message\")\n\t}\n\n\treturn answers, nil\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/session.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 ssh\n\n// Session implements an interactive session described in\n// \"RFC 4254, section 6\".\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\n\ntype Signal string\n\n// POSIX signals as listed in RFC 4254 Section 6.10.\nconst (\n\tSIGABRT Signal = \"ABRT\"\n\tSIGALRM Signal = \"ALRM\"\n\tSIGFPE  Signal = \"FPE\"\n\tSIGHUP  Signal = \"HUP\"\n\tSIGILL  Signal = \"ILL\"\n\tSIGINT  Signal = \"INT\"\n\tSIGKILL Signal = \"KILL\"\n\tSIGPIPE Signal = \"PIPE\"\n\tSIGQUIT Signal = \"QUIT\"\n\tSIGSEGV Signal = \"SEGV\"\n\tSIGTERM Signal = \"TERM\"\n\tSIGUSR1 Signal = \"USR1\"\n\tSIGUSR2 Signal = \"USR2\"\n)\n\nvar signals = map[Signal]int{\n\tSIGABRT: 6,\n\tSIGALRM: 14,\n\tSIGFPE:  8,\n\tSIGHUP:  1,\n\tSIGILL:  4,\n\tSIGINT:  2,\n\tSIGKILL: 9,\n\tSIGPIPE: 13,\n\tSIGQUIT: 3,\n\tSIGSEGV: 11,\n\tSIGTERM: 15,\n}\n\ntype TerminalModes map[uint8]uint32\n\n// POSIX terminal mode flags as listed in RFC 4254 Section 8.\nconst (\n\ttty_OP_END    = 0\n\tVINTR         = 1\n\tVQUIT         = 2\n\tVERASE        = 3\n\tVKILL         = 4\n\tVEOF          = 5\n\tVEOL          = 6\n\tVEOL2         = 7\n\tVSTART        = 8\n\tVSTOP         = 9\n\tVSUSP         = 10\n\tVDSUSP        = 11\n\tVREPRINT      = 12\n\tVWERASE       = 13\n\tVLNEXT        = 14\n\tVFLUSH        = 15\n\tVSWTCH        = 16\n\tVSTATUS       = 17\n\tVDISCARD      = 18\n\tIGNPAR        = 30\n\tPARMRK        = 31\n\tINPCK         = 32\n\tISTRIP        = 33\n\tINLCR         = 34\n\tIGNCR         = 35\n\tICRNL         = 36\n\tIUCLC         = 37\n\tIXON          = 38\n\tIXANY         = 39\n\tIXOFF         = 40\n\tIMAXBEL       = 41\n\tIUTF8         = 42 // RFC 8160\n\tISIG          = 50\n\tICANON        = 51\n\tXCASE         = 52\n\tECHO          = 53\n\tECHOE         = 54\n\tECHOK         = 55\n\tECHONL        = 56\n\tNOFLSH        = 57\n\tTOSTOP        = 58\n\tIEXTEN        = 59\n\tECHOCTL       = 60\n\tECHOKE        = 61\n\tPENDIN        = 62\n\tOPOST         = 70\n\tOLCUC         = 71\n\tONLCR         = 72\n\tOCRNL         = 73\n\tONOCR         = 74\n\tONLRET        = 75\n\tCS7           = 90\n\tCS8           = 91\n\tPARENB        = 92\n\tPARODD        = 93\n\tTTY_OP_ISPEED = 128\n\tTTY_OP_OSPEED = 129\n)\n\n// A Session represents a connection to a remote command or shell.\ntype Session struct {\n\t// Stdin specifies the remote process's standard input.\n\t// If Stdin is nil, the remote process reads from an empty\n\t// bytes.Buffer.\n\tStdin io.Reader\n\n\t// Stdout and Stderr specify the remote process's standard\n\t// output and error.\n\t//\n\t// If either is nil, Run connects the corresponding file\n\t// descriptor to an instance of io.Discard. There is a\n\t// fixed amount of buffering that is shared for the two streams.\n\t// If either blocks it may eventually cause the remote\n\t// command to block.\n\tStdout io.Writer\n\tStderr io.Writer\n\n\tch        Channel // the channel backing this session\n\tstarted   bool    // true once Start, Run or Shell is invoked.\n\tcopyFuncs []func() error\n\terrors    chan error // one send per copyFunc\n\n\t// true if pipe method is active\n\tstdinpipe, stdoutpipe, stderrpipe bool\n\n\t// stdinPipeWriter is non-nil if StdinPipe has not been called\n\t// and Stdin was specified by the user; it is the write end of\n\t// a pipe connecting Session.Stdin to the stdin channel.\n\tstdinPipeWriter io.WriteCloser\n\n\texitStatus chan error\n}\n\n// SendRequest sends an out-of-band channel request on the SSH channel\n// underlying the session.\nfunc (s *Session) SendRequest(name string, wantReply bool, payload []byte) (bool, error) {\n\treturn s.ch.SendRequest(name, wantReply, payload)\n}\n\nfunc (s *Session) Close() error {\n\treturn s.ch.Close()\n}\n\n// RFC 4254 Section 6.4.\ntype setenvRequest struct {\n\tName  string\n\tValue string\n}\n\n// Setenv sets an environment variable that will be applied to any\n// command executed by Shell or Run.\nfunc (s *Session) Setenv(name, value string) error {\n\tmsg := setenvRequest{\n\t\tName:  name,\n\t\tValue: value,\n\t}\n\tok, err := s.ch.SendRequest(\"env\", true, Marshal(&msg))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: setenv failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.2.\ntype ptyRequestMsg struct {\n\tTerm     string\n\tColumns  uint32\n\tRows     uint32\n\tWidth    uint32\n\tHeight   uint32\n\tModelist string\n}\n\n// RequestPty requests the association of a pty with the session on the remote host.\nfunc (s *Session) RequestPty(term string, h, w int, termmodes TerminalModes) error {\n\tvar tm []byte\n\tfor k, v := range termmodes {\n\t\tkv := struct {\n\t\t\tKey byte\n\t\t\tVal uint32\n\t\t}{k, v}\n\n\t\ttm = append(tm, Marshal(&kv)...)\n\t}\n\ttm = append(tm, tty_OP_END)\n\treq := ptyRequestMsg{\n\t\tTerm:     term,\n\t\tColumns:  uint32(w),\n\t\tRows:     uint32(h),\n\t\tWidth:    uint32(w * 8),\n\t\tHeight:   uint32(h * 8),\n\t\tModelist: string(tm),\n\t}\n\tok, err := s.ch.SendRequest(\"pty-req\", true, Marshal(&req))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: pty-req failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.5.\ntype subsystemRequestMsg struct {\n\tSubsystem string\n}\n\n// RequestSubsystem requests the association of a subsystem with the session on the remote host.\n// A subsystem is a predefined command that runs in the background when the ssh session is initiated\nfunc (s *Session) RequestSubsystem(subsystem string) error {\n\tmsg := subsystemRequestMsg{\n\t\tSubsystem: subsystem,\n\t}\n\tok, err := s.ch.SendRequest(\"subsystem\", true, Marshal(&msg))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: subsystem request failed\")\n\t}\n\treturn err\n}\n\n// RFC 4254 Section 6.7.\ntype ptyWindowChangeMsg struct {\n\tColumns uint32\n\tRows    uint32\n\tWidth   uint32\n\tHeight  uint32\n}\n\n// WindowChange informs the remote host about a terminal window dimension change to h rows and w columns.\nfunc (s *Session) WindowChange(h, w int) error {\n\treq := ptyWindowChangeMsg{\n\t\tColumns: uint32(w),\n\t\tRows:    uint32(h),\n\t\tWidth:   uint32(w * 8),\n\t\tHeight:  uint32(h * 8),\n\t}\n\t_, err := s.ch.SendRequest(\"window-change\", false, Marshal(&req))\n\treturn err\n}\n\n// RFC 4254 Section 6.9.\ntype signalMsg struct {\n\tSignal string\n}\n\n// Signal sends the given signal to the remote process.\n// sig is one of the SIG* constants.\nfunc (s *Session) Signal(sig Signal) error {\n\tmsg := signalMsg{\n\t\tSignal: string(sig),\n\t}\n\n\t_, err := s.ch.SendRequest(\"signal\", false, Marshal(&msg))\n\treturn err\n}\n\n// RFC 4254 Section 6.5.\ntype execMsg struct {\n\tCommand string\n}\n\n// Start runs cmd on the remote host. Typically, the remote\n// server passes cmd to the shell for interpretation.\n// A Session only accepts one call to Run, Start or Shell.\nfunc (s *Session) Start(cmd string) error {\n\tif s.started {\n\t\treturn errors.New(\"ssh: session already started\")\n\t}\n\treq := execMsg{\n\t\tCommand: cmd,\n\t}\n\n\tok, err := s.ch.SendRequest(\"exec\", true, Marshal(&req))\n\tif err == nil && !ok {\n\t\terr = fmt.Errorf(\"ssh: command %v failed\", cmd)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.start()\n}\n\n// Run runs cmd on the remote host. Typically, the remote\n// server passes cmd to the shell for interpretation.\n// A Session only accepts one call to Run, Start, Shell, Output,\n// or CombinedOutput.\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 remote server does not send an exit status, an error of type\n// *ExitMissingError is returned. If the command completes\n// unsuccessfully or is interrupted by a signal, the error is of type\n// *ExitError. Other error types may be returned for I/O problems.\nfunc (s *Session) Run(cmd string) error {\n\terr := s.Start(cmd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.Wait()\n}\n\n// Output runs cmd on the remote host and returns its standard output.\nfunc (s *Session) Output(cmd string) ([]byte, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tvar b bytes.Buffer\n\ts.Stdout = &b\n\terr := s.Run(cmd)\n\treturn b.Bytes(), err\n}\n\ntype singleWriter struct {\n\tb  bytes.Buffer\n\tmu sync.Mutex\n}\n\nfunc (w *singleWriter) Write(p []byte) (int, error) {\n\tw.mu.Lock()\n\tdefer w.mu.Unlock()\n\treturn w.b.Write(p)\n}\n\n// CombinedOutput runs cmd on the remote host and returns its combined\n// standard output and standard error.\nfunc (s *Session) CombinedOutput(cmd string) ([]byte, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tif s.Stderr != nil {\n\t\treturn nil, errors.New(\"ssh: Stderr already set\")\n\t}\n\tvar b singleWriter\n\ts.Stdout = &b\n\ts.Stderr = &b\n\terr := s.Run(cmd)\n\treturn b.b.Bytes(), err\n}\n\n// Shell starts a login shell on the remote host. A Session only\n// accepts one call to Run, Start, Shell, Output, or CombinedOutput.\nfunc (s *Session) Shell() error {\n\tif s.started {\n\t\treturn errors.New(\"ssh: session already started\")\n\t}\n\n\tok, err := s.ch.SendRequest(\"shell\", true, nil)\n\tif err == nil && !ok {\n\t\treturn errors.New(\"ssh: could not start shell\")\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn s.start()\n}\n\nfunc (s *Session) start() error {\n\ts.started = true\n\n\ttype F func(*Session)\n\tfor _, setupFd := range []F{(*Session).stdin, (*Session).stdout, (*Session).stderr} {\n\t\tsetupFd(s)\n\t}\n\n\ts.errors = make(chan error, len(s.copyFuncs))\n\tfor _, fn := range s.copyFuncs {\n\t\tgo func(fn func() error) {\n\t\t\ts.errors <- fn()\n\t\t}(fn)\n\t}\n\treturn nil\n}\n\n// Wait waits for the remote command to exit.\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 remote server does not send an exit status, an error of type\n// *ExitMissingError is returned. If the command completes\n// unsuccessfully or is interrupted by a signal, the error is of type\n// *ExitError. Other error types may be returned for I/O problems.\nfunc (s *Session) Wait() error {\n\tif !s.started {\n\t\treturn errors.New(\"ssh: session not started\")\n\t}\n\twaitErr := <-s.exitStatus\n\n\tif s.stdinPipeWriter != nil {\n\t\ts.stdinPipeWriter.Close()\n\t}\n\tvar copyError error\n\tfor range s.copyFuncs {\n\t\tif err := <-s.errors; err != nil && copyError == nil {\n\t\t\tcopyError = err\n\t\t}\n\t}\n\tif waitErr != nil {\n\t\treturn waitErr\n\t}\n\treturn copyError\n}\n\nfunc (s *Session) wait(reqs <-chan *Request) error {\n\twm := Waitmsg{status: -1}\n\t// Wait for msg channel to be closed before returning.\n\tfor msg := range reqs {\n\t\tswitch msg.Type {\n\t\tcase \"exit-status\":\n\t\t\twm.status = int(binary.BigEndian.Uint32(msg.Payload))\n\t\tcase \"exit-signal\":\n\t\t\tvar sigval struct {\n\t\t\t\tSignal     string\n\t\t\t\tCoreDumped bool\n\t\t\t\tError      string\n\t\t\t\tLang       string\n\t\t\t}\n\t\t\tif err := Unmarshal(msg.Payload, &sigval); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// Must sanitize strings?\n\t\t\twm.signal = sigval.Signal\n\t\t\twm.msg = sigval.Error\n\t\t\twm.lang = sigval.Lang\n\t\tdefault:\n\t\t\t// This handles keepalives and matches\n\t\t\t// OpenSSH's behaviour.\n\t\t\tif msg.WantReply {\n\t\t\t\tmsg.Reply(false, nil)\n\t\t\t}\n\t\t}\n\t}\n\tif wm.status == 0 {\n\t\treturn nil\n\t}\n\tif wm.status == -1 {\n\t\t// exit-status was never sent from server\n\t\tif wm.signal == \"\" {\n\t\t\t// signal was not sent either.  RFC 4254\n\t\t\t// section 6.10 recommends against this\n\t\t\t// behavior, but it is allowed, so we let\n\t\t\t// clients handle it.\n\t\t\treturn &ExitMissingError{}\n\t\t}\n\t\twm.status = 128\n\t\tif _, ok := signals[Signal(wm.signal)]; ok {\n\t\t\twm.status += signals[Signal(wm.signal)]\n\t\t}\n\t}\n\n\treturn &ExitError{wm}\n}\n\n// ExitMissingError is returned if a session is torn down cleanly, but\n// the server sends no confirmation of the exit status.\ntype ExitMissingError struct{}\n\nfunc (e *ExitMissingError) Error() string {\n\treturn \"wait: remote command exited without exit status or exit signal\"\n}\n\nfunc (s *Session) stdin() {\n\tif s.stdinpipe {\n\t\treturn\n\t}\n\tvar stdin io.Reader\n\tif s.Stdin == nil {\n\t\tstdin = new(bytes.Buffer)\n\t} else {\n\t\tr, w := io.Pipe()\n\t\tgo func() {\n\t\t\t_, err := io.Copy(w, s.Stdin)\n\t\t\tw.CloseWithError(err)\n\t\t}()\n\t\tstdin, s.stdinPipeWriter = r, w\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.ch, stdin)\n\t\tif err1 := s.ch.CloseWrite(); err == nil && err1 != io.EOF {\n\t\t\terr = err1\n\t\t}\n\t\treturn err\n\t})\n}\n\nfunc (s *Session) stdout() {\n\tif s.stdoutpipe {\n\t\treturn\n\t}\n\tif s.Stdout == nil {\n\t\ts.Stdout = io.Discard\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.Stdout, s.ch)\n\t\treturn err\n\t})\n}\n\nfunc (s *Session) stderr() {\n\tif s.stderrpipe {\n\t\treturn\n\t}\n\tif s.Stderr == nil {\n\t\ts.Stderr = io.Discard\n\t}\n\ts.copyFuncs = append(s.copyFuncs, func() error {\n\t\t_, err := io.Copy(s.Stderr, s.ch.Stderr())\n\t\treturn err\n\t})\n}\n\n// sessionStdin reroutes Close to CloseWrite.\ntype sessionStdin struct {\n\tio.Writer\n\tch Channel\n}\n\nfunc (s *sessionStdin) Close() error {\n\treturn s.ch.CloseWrite()\n}\n\n// StdinPipe returns a pipe that will be connected to the\n// remote command's standard input when the command starts.\nfunc (s *Session) StdinPipe() (io.WriteCloser, error) {\n\tif s.Stdin != nil {\n\t\treturn nil, errors.New(\"ssh: Stdin already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StdinPipe after process started\")\n\t}\n\ts.stdinpipe = true\n\treturn &sessionStdin{s.ch, s.ch}, nil\n}\n\n// StdoutPipe returns a pipe that will be connected to the\n// remote command's standard output when the command starts.\n// There is a fixed amount of buffering that is shared between\n// stdout and stderr streams. If the StdoutPipe reader is\n// not serviced fast enough it may eventually cause the\n// remote command to block.\nfunc (s *Session) StdoutPipe() (io.Reader, error) {\n\tif s.Stdout != nil {\n\t\treturn nil, errors.New(\"ssh: Stdout already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StdoutPipe after process started\")\n\t}\n\ts.stdoutpipe = true\n\treturn s.ch, nil\n}\n\n// StderrPipe returns a pipe that will be connected to the\n// remote command's standard error when the command starts.\n// There is a fixed amount of buffering that is shared between\n// stdout and stderr streams. If the StderrPipe reader is\n// not serviced fast enough it may eventually cause the\n// remote command to block.\nfunc (s *Session) StderrPipe() (io.Reader, error) {\n\tif s.Stderr != nil {\n\t\treturn nil, errors.New(\"ssh: Stderr already set\")\n\t}\n\tif s.started {\n\t\treturn nil, errors.New(\"ssh: StderrPipe after process started\")\n\t}\n\ts.stderrpipe = true\n\treturn s.ch.Stderr(), nil\n}\n\n// newSession returns a new interactive session on the remote host.\nfunc newSession(ch Channel, reqs <-chan *Request) (*Session, error) {\n\ts := &Session{\n\t\tch: ch,\n\t}\n\ts.exitStatus = make(chan error, 1)\n\tgo func() {\n\t\ts.exitStatus <- s.wait(reqs)\n\t}()\n\n\treturn s, nil\n}\n\n// An ExitError reports unsuccessful completion of a remote command.\ntype ExitError struct {\n\tWaitmsg\n}\n\nfunc (e *ExitError) Error() string {\n\treturn e.Waitmsg.String()\n}\n\n// Waitmsg stores the information about an exited remote command\n// as reported by Wait.\ntype Waitmsg struct {\n\tstatus int\n\tsignal string\n\tmsg    string\n\tlang   string\n}\n\n// ExitStatus returns the exit status of the remote command.\nfunc (w Waitmsg) ExitStatus() int {\n\treturn w.status\n}\n\n// Signal returns the exit signal of the remote command if\n// it was terminated violently.\nfunc (w Waitmsg) Signal() string {\n\treturn w.signal\n}\n\n// Msg returns the exit message given by the remote command\nfunc (w Waitmsg) Msg() string {\n\treturn w.msg\n}\n\n// Lang returns the language tag. See RFC 3066\nfunc (w Waitmsg) Lang() string {\n\treturn w.lang\n}\n\nfunc (w Waitmsg) String() string {\n\tstr := fmt.Sprintf(\"Process exited with status %v\", w.status)\n\tif w.signal != \"\" {\n\t\tstr += fmt.Sprintf(\" from signal %v\", w.signal)\n\t}\n\tif w.msg != \"\" {\n\t\tstr += fmt.Sprintf(\". Reason was: %v\", w.msg)\n\t}\n\treturn str\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/ssh_gss.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 ssh\n\nimport (\n\t\"encoding/asn1\"\n\t\"errors\"\n)\n\nvar krb5OID []byte\n\nfunc init() {\n\tkrb5OID, _ = asn1.Marshal(krb5Mesh)\n}\n\n// GSSAPIClient provides the API to plug-in GSSAPI authentication for client logins.\ntype GSSAPIClient interface {\n\t// InitSecContext initiates the establishment of a security context for GSS-API between the\n\t// ssh client and ssh server. Initially the token parameter should be specified as nil.\n\t// The routine may return a outputToken which should be transferred to\n\t// the ssh server, where the ssh server will present it to\n\t// AcceptSecContext. If no token need be sent, InitSecContext will indicate this by setting\n\t// needContinue to false. To complete the context\n\t// establishment, one or more reply tokens may be required from the ssh\n\t// server;if so, InitSecContext will return a needContinue which is true.\n\t// In this case, InitSecContext should be called again when the\n\t// reply token is received from the ssh server, passing the reply\n\t// token to InitSecContext via the token parameters.\n\t// See RFC 2743 section 2.2.1 and RFC 4462 section 3.4.\n\tInitSecContext(target string, token []byte, isGSSDelegCreds bool) (outputToken []byte, needContinue bool, err error)\n\t// GetMIC generates a cryptographic MIC for the SSH2 message, and places\n\t// the MIC in a token for transfer to the ssh server.\n\t// The contents of the MIC field are obtained by calling GSS_GetMIC()\n\t// over the following, using the GSS-API context that was just\n\t// established:\n\t//  string    session identifier\n\t//  byte      SSH_MSG_USERAUTH_REQUEST\n\t//  string    user name\n\t//  string    service\n\t//  string    \"gssapi-with-mic\"\n\t// See RFC 2743 section 2.3.1 and RFC 4462 3.5.\n\tGetMIC(micFiled []byte) ([]byte, error)\n\t// Whenever possible, it should be possible for\n\t// DeleteSecContext() calls to be successfully processed even\n\t// if other calls cannot succeed, thereby enabling context-related\n\t// resources to be released.\n\t// In addition to deleting established security contexts,\n\t// gss_delete_sec_context must also be able to delete \"half-built\"\n\t// security contexts resulting from an incomplete sequence of\n\t// InitSecContext()/AcceptSecContext() calls.\n\t// See RFC 2743 section 2.2.3.\n\tDeleteSecContext() error\n}\n\n// GSSAPIServer provides the API to plug in GSSAPI authentication for server logins.\ntype GSSAPIServer interface {\n\t// AcceptSecContext allows a remotely initiated security context between the application\n\t// and a remote peer to be established by the ssh client. The routine may return a\n\t// outputToken which should be transferred to the ssh client,\n\t// where the ssh client will present it to InitSecContext.\n\t// If no token need be sent, AcceptSecContext will indicate this\n\t// by setting the needContinue to false. To\n\t// complete the context establishment, one or more reply tokens may be\n\t// required from the ssh client. if so, AcceptSecContext\n\t// will return a needContinue which is true, in which case it\n\t// should be called again when the reply token is received from the ssh\n\t// client, passing the token to AcceptSecContext via the\n\t// token parameters.\n\t// The srcName return value is the authenticated username.\n\t// See RFC 2743 section 2.2.2 and RFC 4462 section 3.4.\n\tAcceptSecContext(token []byte) (outputToken []byte, srcName string, needContinue bool, err error)\n\t// VerifyMIC verifies that a cryptographic MIC, contained in the token parameter,\n\t// fits the supplied message is received from the ssh client.\n\t// See RFC 2743 section 2.3.2.\n\tVerifyMIC(micField []byte, micToken []byte) error\n\t// Whenever possible, it should be possible for\n\t// DeleteSecContext() calls to be successfully processed even\n\t// if other calls cannot succeed, thereby enabling context-related\n\t// resources to be released.\n\t// In addition to deleting established security contexts,\n\t// gss_delete_sec_context must also be able to delete \"half-built\"\n\t// security contexts resulting from an incomplete sequence of\n\t// InitSecContext()/AcceptSecContext() calls.\n\t// See RFC 2743 section 2.2.3.\n\tDeleteSecContext() error\n}\n\nvar (\n\t// OpenSSH supports Kerberos V5 mechanism only for GSS-API authentication,\n\t// so we also support the krb5 mechanism only.\n\t// See RFC 1964 section 1.\n\tkrb5Mesh = asn1.ObjectIdentifier{1, 2, 840, 113554, 1, 2, 2}\n)\n\n// The GSS-API authentication method is initiated when the client sends an SSH_MSG_USERAUTH_REQUEST\n// See RFC 4462 section 3.2.\ntype userAuthRequestGSSAPI struct {\n\tN    uint32\n\tOIDS []asn1.ObjectIdentifier\n}\n\nfunc parseGSSAPIPayload(payload []byte) (*userAuthRequestGSSAPI, error) {\n\tn, rest, ok := parseUint32(payload)\n\tif !ok {\n\t\treturn nil, errors.New(\"parse uint32 failed\")\n\t}\n\ts := &userAuthRequestGSSAPI{\n\t\tN:    n,\n\t\tOIDS: make([]asn1.ObjectIdentifier, n),\n\t}\n\tfor i := 0; i < int(n); i++ {\n\t\tvar (\n\t\t\tdesiredMech []byte\n\t\t\terr         error\n\t\t)\n\t\tdesiredMech, rest, ok = parseString(rest)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(\"parse string failed\")\n\t\t}\n\t\tif rest, err = asn1.Unmarshal(desiredMech, &s.OIDS[i]); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t}\n\treturn s, nil\n}\n\n// See RFC 4462 section 3.6.\nfunc buildMIC(sessionID string, username string, service string, authMethod string) []byte {\n\tout := make([]byte, 0, 0)\n\tout = appendString(out, sessionID)\n\tout = append(out, msgUserAuthRequest)\n\tout = appendString(out, username)\n\tout = appendString(out, service)\n\tout = appendString(out, authMethod)\n\treturn out\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/streamlocal.go",
    "content": "package ssh\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n)\n\n// streamLocalChannelOpenDirectMsg is a struct used for SSH_MSG_CHANNEL_OPEN message\n// with \"direct-streamlocal@openssh.com\" string.\n//\n// See openssh-portable/PROTOCOL, section 2.4. connection: Unix domain socket forwarding\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL#L235\ntype streamLocalChannelOpenDirectMsg struct {\n\tsocketPath string\n\treserved0  string\n\treserved1  uint32\n}\n\n// forwardedStreamLocalPayload is a struct used for SSH_MSG_CHANNEL_OPEN message\n// with \"forwarded-streamlocal@openssh.com\" string.\ntype forwardedStreamLocalPayload struct {\n\tSocketPath string\n\tReserved0  string\n}\n\n// streamLocalChannelForwardMsg is a struct used for SSH2_MSG_GLOBAL_REQUEST message\n// with \"streamlocal-forward@openssh.com\"/\"cancel-streamlocal-forward@openssh.com\" string.\ntype streamLocalChannelForwardMsg struct {\n\tsocketPath string\n}\n\n// ListenUnix is similar to ListenTCP but uses a Unix domain socket.\nfunc (c *Client) ListenUnix(socketPath string) (net.Listener, error) {\n\tc.handleForwardsOnce.Do(c.handleForwards)\n\tm := streamLocalChannelForwardMsg{\n\t\tsocketPath,\n\t}\n\t// send message\n\tok, _, err := c.SendRequest(\"streamlocal-forward@openssh.com\", true, Marshal(&m))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: streamlocal-forward@openssh.com request denied by peer\")\n\t}\n\tch := c.forwards.add(&net.UnixAddr{Name: socketPath, Net: \"unix\"})\n\n\treturn &unixListener{socketPath, c, ch}, nil\n}\n\nfunc (c *Client) dialStreamLocal(socketPath string) (Channel, error) {\n\tmsg := streamLocalChannelOpenDirectMsg{\n\t\tsocketPath: socketPath,\n\t}\n\tch, in, err := c.OpenChannel(\"direct-streamlocal@openssh.com\", Marshal(&msg))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(in)\n\treturn ch, err\n}\n\ntype unixListener struct {\n\tsocketPath string\n\n\tconn *Client\n\tin   <-chan forward\n}\n\n// Accept waits for and returns the next connection to the listener.\nfunc (l *unixListener) Accept() (net.Conn, error) {\n\ts, ok := <-l.in\n\tif !ok {\n\t\treturn nil, io.EOF\n\t}\n\tch, incoming, err := s.newCh.Accept()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(incoming)\n\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr: &net.UnixAddr{\n\t\t\tName: l.socketPath,\n\t\t\tNet:  \"unix\",\n\t\t},\n\t\traddr: &net.UnixAddr{\n\t\t\tName: \"@\",\n\t\t\tNet:  \"unix\",\n\t\t},\n\t}, nil\n}\n\n// Close closes the listener.\nfunc (l *unixListener) Close() error {\n\t// this also closes the listener.\n\tl.conn.forwards.remove(&net.UnixAddr{Name: l.socketPath, Net: \"unix\"})\n\tm := streamLocalChannelForwardMsg{\n\t\tl.socketPath,\n\t}\n\tok, _, err := l.conn.SendRequest(\"cancel-streamlocal-forward@openssh.com\", true, Marshal(&m))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: cancel-streamlocal-forward@openssh.com failed\")\n\t}\n\treturn err\n}\n\n// Addr returns the listener's network address.\nfunc (l *unixListener) Addr() net.Addr {\n\treturn &net.UnixAddr{\n\t\tName: l.socketPath,\n\t\tNet:  \"unix\",\n\t}\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/tcpip.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 ssh\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math/rand\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\n// Listen requests the remote peer open a listening socket on\n// addr. Incoming connections will be available by calling Accept on\n// the returned net.Listener. The listener must be serviced, or the\n// SSH connection may hang.\n// N must be \"tcp\", \"tcp4\", \"tcp6\", or \"unix\".\nfunc (c *Client) Listen(n, addr string) (net.Listener, error) {\n\tswitch n {\n\tcase \"tcp\", \"tcp4\", \"tcp6\":\n\t\tladdr, err := net.ResolveTCPAddr(n, addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn c.ListenTCP(laddr)\n\tcase \"unix\":\n\t\treturn c.ListenUnix(addr)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported protocol: %s\", n)\n\t}\n}\n\n// Automatic port allocation is broken with OpenSSH before 6.0. See\n// also https://bugzilla.mindrot.org/show_bug.cgi?id=2017.  In\n// particular, OpenSSH 5.9 sends a channelOpenMsg with port number 0,\n// rather than the actual port number. This means you can never open\n// two different listeners with auto allocated ports. We work around\n// this by trying explicit ports until we succeed.\n\nconst openSSHPrefix = \"OpenSSH_\"\n\nvar portRandomizer = rand.New(rand.NewSource(time.Now().UnixNano()))\n\n// isBrokenOpenSSHVersion returns true if the given version string\n// specifies a version of OpenSSH that is known to have a bug in port\n// forwarding.\nfunc isBrokenOpenSSHVersion(versionStr string) bool {\n\ti := strings.Index(versionStr, openSSHPrefix)\n\tif i < 0 {\n\t\treturn false\n\t}\n\ti += len(openSSHPrefix)\n\tj := i\n\tfor ; j < len(versionStr); j++ {\n\t\tif versionStr[j] < '0' || versionStr[j] > '9' {\n\t\t\tbreak\n\t\t}\n\t}\n\tversion, _ := strconv.Atoi(versionStr[i:j])\n\treturn version < 6\n}\n\n// autoPortListenWorkaround simulates automatic port allocation by\n// trying random ports repeatedly.\nfunc (c *Client) autoPortListenWorkaround(laddr *net.TCPAddr) (net.Listener, error) {\n\tvar sshListener net.Listener\n\tvar err error\n\tconst tries = 10\n\tfor i := 0; i < tries; i++ {\n\t\taddr := *laddr\n\t\taddr.Port = 1024 + portRandomizer.Intn(60000)\n\t\tsshListener, err = c.ListenTCP(&addr)\n\t\tif err == nil {\n\t\t\tladdr.Port = addr.Port\n\t\t\treturn sshListener, err\n\t\t}\n\t}\n\treturn nil, fmt.Errorf(\"ssh: listen on random port failed after %d tries: %v\", tries, err)\n}\n\n// RFC 4254 7.1\ntype channelForwardMsg struct {\n\taddr  string\n\trport uint32\n}\n\n// handleForwards starts goroutines handling forwarded connections.\n// It's called on first use by (*Client).ListenTCP to not launch\n// goroutines until needed.\nfunc (c *Client) handleForwards() {\n\tgo c.forwards.handleChannels(c.HandleChannelOpen(\"forwarded-tcpip\"))\n\tgo c.forwards.handleChannels(c.HandleChannelOpen(\"forwarded-streamlocal@openssh.com\"))\n}\n\n// ListenTCP requests the remote peer open a listening socket\n// on laddr. Incoming connections will be available by calling\n// Accept on the returned net.Listener.\nfunc (c *Client) ListenTCP(laddr *net.TCPAddr) (net.Listener, error) {\n\tc.handleForwardsOnce.Do(c.handleForwards)\n\tif laddr.Port == 0 && isBrokenOpenSSHVersion(string(c.ServerVersion())) {\n\t\treturn c.autoPortListenWorkaround(laddr)\n\t}\n\n\tm := channelForwardMsg{\n\t\tladdr.IP.String(),\n\t\tuint32(laddr.Port),\n\t}\n\t// send message\n\tok, resp, err := c.SendRequest(\"tcpip-forward\", true, Marshal(&m))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: tcpip-forward request denied by peer\")\n\t}\n\n\t// If the original port was 0, then the remote side will\n\t// supply a real port number in the response.\n\tif laddr.Port == 0 {\n\t\tvar p struct {\n\t\t\tPort uint32\n\t\t}\n\t\tif err := Unmarshal(resp, &p); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tladdr.Port = int(p.Port)\n\t}\n\n\t// Register this forward, using the port number we obtained.\n\tch := c.forwards.add(laddr)\n\n\treturn &tcpListener{laddr, c, ch}, nil\n}\n\n// forwardList stores a mapping between remote\n// forward requests and the tcpListeners.\ntype forwardList struct {\n\tsync.Mutex\n\tentries []forwardEntry\n}\n\n// forwardEntry represents an established mapping of a laddr on a\n// remote ssh server to a channel connected to a tcpListener.\ntype forwardEntry struct {\n\tladdr net.Addr\n\tc     chan forward\n}\n\n// forward represents an incoming forwarded tcpip connection. The\n// arguments to add/remove/lookup should be address as specified in\n// the original forward-request.\ntype forward struct {\n\tnewCh NewChannel // the ssh client channel underlying this forward\n\traddr net.Addr   // the raddr of the incoming connection\n}\n\nfunc (l *forwardList) add(addr net.Addr) chan forward {\n\tl.Lock()\n\tdefer l.Unlock()\n\tf := forwardEntry{\n\t\tladdr: addr,\n\t\tc:     make(chan forward, 1),\n\t}\n\tl.entries = append(l.entries, f)\n\treturn f.c\n}\n\n// See RFC 4254, section 7.2\ntype forwardedTCPPayload struct {\n\tAddr       string\n\tPort       uint32\n\tOriginAddr string\n\tOriginPort uint32\n}\n\n// parseTCPAddr parses the originating address from the remote into a *net.TCPAddr.\nfunc parseTCPAddr(addr string, port uint32) (*net.TCPAddr, error) {\n\tif port == 0 || port > 65535 {\n\t\treturn nil, fmt.Errorf(\"ssh: port number out of range: %d\", port)\n\t}\n\tip := net.ParseIP(string(addr))\n\tif ip == nil {\n\t\treturn nil, fmt.Errorf(\"ssh: cannot parse IP address %q\", addr)\n\t}\n\treturn &net.TCPAddr{IP: ip, Port: int(port)}, nil\n}\n\nfunc (l *forwardList) handleChannels(in <-chan NewChannel) {\n\tfor ch := range in {\n\t\tvar (\n\t\t\tladdr net.Addr\n\t\t\traddr net.Addr\n\t\t\terr   error\n\t\t)\n\t\tswitch channelType := ch.ChannelType(); channelType {\n\t\tcase \"forwarded-tcpip\":\n\t\t\tvar payload forwardedTCPPayload\n\t\t\tif err = Unmarshal(ch.ExtraData(), &payload); err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, \"could not parse forwarded-tcpip payload: \"+err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// RFC 4254 section 7.2 specifies that incoming\n\t\t\t// addresses should list the address, in string\n\t\t\t// format. It is implied that this should be an IP\n\t\t\t// address, as it would be impossible to connect to it\n\t\t\t// otherwise.\n\t\t\tladdr, err = parseTCPAddr(payload.Addr, payload.Port)\n\t\t\tif err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\traddr, err = parseTCPAddr(payload.OriginAddr, payload.OriginPort)\n\t\t\tif err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\tcase \"forwarded-streamlocal@openssh.com\":\n\t\t\tvar payload forwardedStreamLocalPayload\n\t\t\tif err = Unmarshal(ch.ExtraData(), &payload); err != nil {\n\t\t\t\tch.Reject(ConnectionFailed, \"could not parse forwarded-streamlocal@openssh.com payload: \"+err.Error())\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tladdr = &net.UnixAddr{\n\t\t\t\tName: payload.SocketPath,\n\t\t\t\tNet:  \"unix\",\n\t\t\t}\n\t\t\traddr = &net.UnixAddr{\n\t\t\t\tName: \"@\",\n\t\t\t\tNet:  \"unix\",\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(fmt.Errorf(\"ssh: unknown channel type %s\", channelType))\n\t\t}\n\t\tif ok := l.forward(laddr, raddr, ch); !ok {\n\t\t\t// Section 7.2, implementations MUST reject spurious incoming\n\t\t\t// connections.\n\t\t\tch.Reject(Prohibited, \"no forward for address\")\n\t\t\tcontinue\n\t\t}\n\n\t}\n}\n\n// remove removes the forward entry, and the channel feeding its\n// listener.\nfunc (l *forwardList) remove(addr net.Addr) {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor i, f := range l.entries {\n\t\tif addr.Network() == f.laddr.Network() && addr.String() == f.laddr.String() {\n\t\t\tl.entries = append(l.entries[:i], l.entries[i+1:]...)\n\t\t\tclose(f.c)\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// closeAll closes and clears all forwards.\nfunc (l *forwardList) closeAll() {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor _, f := range l.entries {\n\t\tclose(f.c)\n\t}\n\tl.entries = nil\n}\n\nfunc (l *forwardList) forward(laddr, raddr net.Addr, ch NewChannel) bool {\n\tl.Lock()\n\tdefer l.Unlock()\n\tfor _, f := range l.entries {\n\t\tif laddr.Network() == f.laddr.Network() && laddr.String() == f.laddr.String() {\n\t\t\tf.c <- forward{newCh: ch, raddr: raddr}\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\ntype tcpListener struct {\n\tladdr *net.TCPAddr\n\n\tconn *Client\n\tin   <-chan forward\n}\n\n// Accept waits for and returns the next connection to the listener.\nfunc (l *tcpListener) Accept() (net.Conn, error) {\n\ts, ok := <-l.in\n\tif !ok {\n\t\treturn nil, io.EOF\n\t}\n\tch, incoming, err := s.newCh.Accept()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(incoming)\n\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr:   l.laddr,\n\t\traddr:   s.raddr,\n\t}, nil\n}\n\n// Close closes the listener.\nfunc (l *tcpListener) Close() error {\n\tm := channelForwardMsg{\n\t\tl.laddr.IP.String(),\n\t\tuint32(l.laddr.Port),\n\t}\n\n\t// this also closes the listener.\n\tl.conn.forwards.remove(l.laddr)\n\tok, _, err := l.conn.SendRequest(\"cancel-tcpip-forward\", true, Marshal(&m))\n\tif err == nil && !ok {\n\t\terr = errors.New(\"ssh: cancel-tcpip-forward failed\")\n\t}\n\treturn err\n}\n\n// Addr returns the listener's network address.\nfunc (l *tcpListener) Addr() net.Addr {\n\treturn l.laddr\n}\n\n// DialContext initiates a connection to the addr from the remote host.\n//\n// The provided Context must be non-nil. If the context expires before the\n// connection is complete, an error is returned. Once successfully connected,\n// any expiration of the context will not affect the connection.\n//\n// See func Dial for additional information.\nfunc (c *Client) DialContext(ctx context.Context, n, addr string) (net.Conn, error) {\n\tif err := ctx.Err(); err != nil {\n\t\treturn nil, err\n\t}\n\ttype connErr struct {\n\t\tconn net.Conn\n\t\terr  error\n\t}\n\tch := make(chan connErr)\n\tgo func() {\n\t\tconn, err := c.Dial(n, addr)\n\t\tselect {\n\t\tcase ch <- connErr{conn, err}:\n\t\tcase <-ctx.Done():\n\t\t\tif conn != nil {\n\t\t\t\tconn.Close()\n\t\t\t}\n\t\t}\n\t}()\n\tselect {\n\tcase res := <-ch:\n\t\treturn res.conn, res.err\n\tcase <-ctx.Done():\n\t\treturn nil, ctx.Err()\n\t}\n}\n\n// Dial initiates a connection to the addr from the remote host.\n// The resulting connection has a zero LocalAddr() and RemoteAddr().\nfunc (c *Client) Dial(n, addr string) (net.Conn, error) {\n\tvar ch Channel\n\tswitch n {\n\tcase \"tcp\", \"tcp4\", \"tcp6\":\n\t\t// Parse the address into host and numeric port.\n\t\thost, portString, err := net.SplitHostPort(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tport, err := strconv.ParseUint(portString, 10, 16)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tch, err = c.dial(net.IPv4zero.String(), 0, host, int(port))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// Use a zero address for local and remote address.\n\t\tzeroAddr := &net.TCPAddr{\n\t\t\tIP:   net.IPv4zero,\n\t\t\tPort: 0,\n\t\t}\n\t\treturn &chanConn{\n\t\t\tChannel: ch,\n\t\t\tladdr:   zeroAddr,\n\t\t\traddr:   zeroAddr,\n\t\t}, nil\n\tcase \"unix\":\n\t\tvar err error\n\t\tch, err = c.dialStreamLocal(addr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn &chanConn{\n\t\t\tChannel: ch,\n\t\t\tladdr: &net.UnixAddr{\n\t\t\t\tName: \"@\",\n\t\t\t\tNet:  \"unix\",\n\t\t\t},\n\t\t\traddr: &net.UnixAddr{\n\t\t\t\tName: addr,\n\t\t\t\tNet:  \"unix\",\n\t\t\t},\n\t\t}, nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"ssh: unsupported protocol: %s\", n)\n\t}\n}\n\n// DialTCP connects to the remote address raddr on the network net,\n// which must be \"tcp\", \"tcp4\", or \"tcp6\".  If laddr is not nil, it is used\n// as the local address for the connection.\nfunc (c *Client) DialTCP(n string, laddr, raddr *net.TCPAddr) (net.Conn, error) {\n\tif laddr == nil {\n\t\tladdr = &net.TCPAddr{\n\t\t\tIP:   net.IPv4zero,\n\t\t\tPort: 0,\n\t\t}\n\t}\n\tch, err := c.dial(laddr.IP.String(), laddr.Port, raddr.IP.String(), raddr.Port)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &chanConn{\n\t\tChannel: ch,\n\t\tladdr:   laddr,\n\t\traddr:   raddr,\n\t}, nil\n}\n\n// RFC 4254 7.2\ntype channelOpenDirectMsg struct {\n\traddr string\n\trport uint32\n\tladdr string\n\tlport uint32\n}\n\nfunc (c *Client) dial(laddr string, lport int, raddr string, rport int) (Channel, error) {\n\tmsg := channelOpenDirectMsg{\n\t\traddr: raddr,\n\t\trport: uint32(rport),\n\t\tladdr: laddr,\n\t\tlport: uint32(lport),\n\t}\n\tch, in, err := c.OpenChannel(\"direct-tcpip\", Marshal(&msg))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgo DiscardRequests(in)\n\treturn ch, err\n}\n\ntype tcpChan struct {\n\tChannel // the backing channel\n}\n\n// chanConn fulfills the net.Conn interface without\n// the tcpChan having to hold laddr or raddr directly.\ntype chanConn struct {\n\tChannel\n\tladdr, raddr net.Addr\n}\n\n// LocalAddr returns the local network address.\nfunc (t *chanConn) LocalAddr() net.Addr {\n\treturn t.laddr\n}\n\n// RemoteAddr returns the remote network address.\nfunc (t *chanConn) RemoteAddr() net.Addr {\n\treturn t.raddr\n}\n\n// SetDeadline sets the read and write deadlines associated\n// with the connection.\nfunc (t *chanConn) SetDeadline(deadline time.Time) error {\n\tif err := t.SetReadDeadline(deadline); err != nil {\n\t\treturn err\n\t}\n\treturn t.SetWriteDeadline(deadline)\n}\n\n// SetReadDeadline sets the read deadline.\n// A zero value for t means Read will not time out.\n// After the deadline, the error from Read will implement net.Error\n// with Timeout() == true.\nfunc (t *chanConn) SetReadDeadline(deadline time.Time) error {\n\t// for compatibility with previous version,\n\t// the error message contains \"tcpChan\"\n\treturn errors.New(\"ssh: tcpChan: deadline not supported\")\n}\n\n// SetWriteDeadline exists to satisfy the net.Conn interface\n// but is not implemented by this type.  It always returns an error.\nfunc (t *chanConn) SetWriteDeadline(deadline time.Time) error {\n\treturn errors.New(\"ssh: tcpChan: deadline not supported\")\n}\n"
  },
  {
    "path": "gossh/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\n// Package terminal provides support functions for dealing with terminals, as\n// commonly found on UNIX systems.\n//\n// Deprecated: this package moved to golang.org/x/term.\npackage terminal\n\nimport (\n\t\"io\"\n\n\t\"gossh/term\"\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 = term.EscapeCodes\n\n// Terminal contains the state for running a VT100 terminal that is capable of\n// reading lines of input.\ntype Terminal = term.Terminal\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 term.NewTerminal(c, prompt)\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 = term.ErrPasteIndicator\n\n// State contains the state of a terminal.\ntype State = term.State\n\n// IsTerminal returns whether the given file descriptor is a terminal.\nfunc IsTerminal(fd int) bool {\n\treturn term.IsTerminal(fd)\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\treturn term.ReadPassword(fd)\n}\n\n// MakeRaw puts 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\treturn term.MakeRaw(fd)\n}\n\n// Restore restores the terminal connected to the given file descriptor to a\n// previous state.\nfunc Restore(fd int, oldState *State) error {\n\treturn term.Restore(fd, oldState)\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\treturn term.GetState(fd)\n}\n\n// GetSize returns the dimensions of the given terminal.\nfunc GetSize(fd int) (width, height int, err error) {\n\treturn term.GetSize(fd)\n}\n"
  },
  {
    "path": "gossh/crypto/ssh/transport.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 ssh\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"log\"\n)\n\n// debugTransport if set, will print packet types as they go over the\n// wire. No message decoding is done, to minimize the impact on timing.\nconst debugTransport = false\n\nconst (\n\tgcm128CipherID = \"aes128-gcm@openssh.com\"\n\tgcm256CipherID = \"aes256-gcm@openssh.com\"\n\taes128cbcID    = \"aes128-cbc\"\n\ttripledescbcID = \"3des-cbc\"\n)\n\n// packetConn represents a transport that implements packet based\n// operations.\ntype packetConn interface {\n\t// Encrypt and send a packet of data to the remote peer.\n\twritePacket(packet []byte) error\n\n\t// Read a packet from the connection. The read is blocking,\n\t// i.e. if error is nil, then the returned byte slice is\n\t// always non-empty.\n\treadPacket() ([]byte, error)\n\n\t// Close closes the write-side of the connection.\n\tClose() error\n}\n\n// transport is the keyingTransport that implements the SSH packet\n// protocol.\ntype transport struct {\n\treader connectionState\n\twriter connectionState\n\n\tbufReader *bufio.Reader\n\tbufWriter *bufio.Writer\n\trand      io.Reader\n\tisClient  bool\n\tio.Closer\n\n\tstrictMode     bool\n\tinitialKEXDone bool\n}\n\n// packetCipher represents a combination of SSH encryption/MAC\n// protocol.  A single instance should be used for one direction only.\ntype packetCipher interface {\n\t// writeCipherPacket encrypts the packet and writes it to w. The\n\t// contents of the packet are generally scrambled.\n\twriteCipherPacket(seqnum uint32, w io.Writer, rand io.Reader, packet []byte) error\n\n\t// readCipherPacket reads and decrypts a packet of data. The\n\t// returned packet may be overwritten by future calls of\n\t// readPacket.\n\treadCipherPacket(seqnum uint32, r io.Reader) ([]byte, error)\n}\n\n// connectionState represents one side (read or write) of the\n// connection. This is necessary because each direction has its own\n// keys, and can even have its own algorithms\ntype connectionState struct {\n\tpacketCipher\n\tseqNum           uint32\n\tdir              direction\n\tpendingKeyChange chan packetCipher\n}\n\nfunc (t *transport) setStrictMode() error {\n\tif t.reader.seqNum != 1 {\n\t\treturn errors.New(\"ssh: sequence number != 1 when strict KEX mode requested\")\n\t}\n\tt.strictMode = true\n\treturn nil\n}\n\nfunc (t *transport) setInitialKEXDone() {\n\tt.initialKEXDone = true\n}\n\n// prepareKeyChange sets up key material for a keychange. The key changes in\n// both directions are triggered by reading and writing a msgNewKey packet\n// respectively.\nfunc (t *transport) prepareKeyChange(algs *algorithms, kexResult *kexResult) error {\n\tciph, err := newPacketCipher(t.reader.dir, algs.r, kexResult)\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.reader.pendingKeyChange <- ciph\n\n\tciph, err = newPacketCipher(t.writer.dir, algs.w, kexResult)\n\tif err != nil {\n\t\treturn err\n\t}\n\tt.writer.pendingKeyChange <- ciph\n\n\treturn nil\n}\n\nfunc (t *transport) printPacket(p []byte, write bool) {\n\tif len(p) == 0 {\n\t\treturn\n\t}\n\twho := \"server\"\n\tif t.isClient {\n\t\twho = \"client\"\n\t}\n\twhat := \"read\"\n\tif write {\n\t\twhat = \"write\"\n\t}\n\n\tlog.Println(what, who, p[0])\n}\n\n// Read and decrypt next packet.\nfunc (t *transport) readPacket() (p []byte, err error) {\n\tfor {\n\t\tp, err = t.reader.readPacket(t.bufReader, t.strictMode)\n\t\tif err != nil {\n\t\t\tbreak\n\t\t}\n\t\t// in strict mode we pass through DEBUG and IGNORE packets only during the initial KEX\n\t\tif len(p) == 0 || (t.strictMode && !t.initialKEXDone) || (p[0] != msgIgnore && p[0] != msgDebug) {\n\t\t\tbreak\n\t\t}\n\t}\n\tif debugTransport {\n\t\tt.printPacket(p, false)\n\t}\n\n\treturn p, err\n}\n\nfunc (s *connectionState) readPacket(r *bufio.Reader, strictMode bool) ([]byte, error) {\n\tpacket, err := s.packetCipher.readCipherPacket(s.seqNum, r)\n\ts.seqNum++\n\tif err == nil && len(packet) == 0 {\n\t\terr = errors.New(\"ssh: zero length packet\")\n\t}\n\n\tif len(packet) > 0 {\n\t\tswitch packet[0] {\n\t\tcase msgNewKeys:\n\t\t\tselect {\n\t\t\tcase cipher := <-s.pendingKeyChange:\n\t\t\t\ts.packetCipher = cipher\n\t\t\t\tif strictMode {\n\t\t\t\t\ts.seqNum = 0\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn nil, errors.New(\"ssh: got bogus newkeys message\")\n\t\t\t}\n\n\t\tcase msgDisconnect:\n\t\t\t// Transform a disconnect message into an\n\t\t\t// error. Since this is lowest level at which\n\t\t\t// we interpret message types, doing it here\n\t\t\t// ensures that we don't have to handle it\n\t\t\t// elsewhere.\n\t\t\tvar msg disconnectMsg\n\t\t\tif err := Unmarshal(packet, &msg); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn nil, &msg\n\t\t}\n\t}\n\n\t// The packet may point to an internal buffer, so copy the\n\t// packet out here.\n\tfresh := make([]byte, len(packet))\n\tcopy(fresh, packet)\n\n\treturn fresh, err\n}\n\nfunc (t *transport) writePacket(packet []byte) error {\n\tif debugTransport {\n\t\tt.printPacket(packet, true)\n\t}\n\treturn t.writer.writePacket(t.bufWriter, t.rand, packet, t.strictMode)\n}\n\nfunc (s *connectionState) writePacket(w *bufio.Writer, rand io.Reader, packet []byte, strictMode bool) error {\n\tchangeKeys := len(packet) > 0 && packet[0] == msgNewKeys\n\n\terr := s.packetCipher.writeCipherPacket(s.seqNum, w, rand, packet)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err = w.Flush(); err != nil {\n\t\treturn err\n\t}\n\ts.seqNum++\n\tif changeKeys {\n\t\tselect {\n\t\tcase cipher := <-s.pendingKeyChange:\n\t\t\ts.packetCipher = cipher\n\t\t\tif strictMode {\n\t\t\t\ts.seqNum = 0\n\t\t\t}\n\t\tdefault:\n\t\t\tpanic(\"ssh: no key material for msgNewKeys\")\n\t\t}\n\t}\n\treturn err\n}\n\nfunc newTransport(rwc io.ReadWriteCloser, rand io.Reader, isClient bool) *transport {\n\tt := &transport{\n\t\tbufReader: bufio.NewReader(rwc),\n\t\tbufWriter: bufio.NewWriter(rwc),\n\t\trand:      rand,\n\t\treader: connectionState{\n\t\t\tpacketCipher:     &streamPacketCipher{cipher: noneCipher{}},\n\t\t\tpendingKeyChange: make(chan packetCipher, 1),\n\t\t},\n\t\twriter: connectionState{\n\t\t\tpacketCipher:     &streamPacketCipher{cipher: noneCipher{}},\n\t\t\tpendingKeyChange: make(chan packetCipher, 1),\n\t\t},\n\t\tCloser: rwc,\n\t}\n\tt.isClient = isClient\n\n\tif isClient {\n\t\tt.reader.dir = serverKeys\n\t\tt.writer.dir = clientKeys\n\t} else {\n\t\tt.reader.dir = clientKeys\n\t\tt.writer.dir = serverKeys\n\t}\n\n\treturn t\n}\n\ntype direction struct {\n\tivTag     []byte\n\tkeyTag    []byte\n\tmacKeyTag []byte\n}\n\nvar (\n\tserverKeys = direction{[]byte{'B'}, []byte{'D'}, []byte{'F'}}\n\tclientKeys = direction{[]byte{'A'}, []byte{'C'}, []byte{'E'}}\n)\n\n// setupKeys sets the cipher and MAC keys from kex.K, kex.H and sessionId, as\n// described in RFC 4253, section 6.4. direction should either be serverKeys\n// (to setup server->client keys) or clientKeys (for client->server keys).\nfunc newPacketCipher(d direction, algs directionAlgorithms, kex *kexResult) (packetCipher, error) {\n\tcipherMode := cipherModes[algs.Cipher]\n\n\tiv := make([]byte, cipherMode.ivSize)\n\tkey := make([]byte, cipherMode.keySize)\n\n\tgenerateKeyMaterial(iv, d.ivTag, kex)\n\tgenerateKeyMaterial(key, d.keyTag, kex)\n\n\tvar macKey []byte\n\tif !aeadCiphers[algs.Cipher] {\n\t\tmacMode := macModes[algs.MAC]\n\t\tmacKey = make([]byte, macMode.keySize)\n\t\tgenerateKeyMaterial(macKey, d.macKeyTag, kex)\n\t}\n\n\treturn cipherModes[algs.Cipher].create(key, iv, macKey, algs)\n}\n\n// generateKeyMaterial fills out with key material generated from tag, K, H\n// and sessionId, as specified in RFC 4253, section 7.2.\nfunc generateKeyMaterial(out, tag []byte, r *kexResult) {\n\tvar digestsSoFar []byte\n\n\th := r.Hash.New()\n\tfor len(out) > 0 {\n\t\th.Reset()\n\t\th.Write(r.K)\n\t\th.Write(r.H)\n\n\t\tif len(digestsSoFar) == 0 {\n\t\t\th.Write(tag)\n\t\t\th.Write(r.SessionID)\n\t\t} else {\n\t\t\th.Write(digestsSoFar)\n\t\t}\n\n\t\tdigest := h.Sum(nil)\n\t\tn := copy(out, digest)\n\t\tout = out[n:]\n\t\tif len(out) > 0 {\n\t\t\tdigestsSoFar = append(digestsSoFar, digest...)\n\t\t}\n\t}\n}\n\nconst packageVersion = \"SSH-2.0-Go\"\n\n// Sends and receives a version line.  The versionLine string should\n// be US ASCII, start with \"SSH-2.0-\", and should not include a\n// newline. exchangeVersions returns the other side's version line.\nfunc exchangeVersions(rw io.ReadWriter, versionLine []byte) (them []byte, err error) {\n\t// Contrary to the RFC, we do not ignore lines that don't\n\t// start with \"SSH-2.0-\" to make the library usable with\n\t// nonconforming servers.\n\tfor _, c := range versionLine {\n\t\t// The spec disallows non US-ASCII chars, and\n\t\t// specifically forbids null chars.\n\t\tif c < 32 {\n\t\t\treturn nil, errors.New(\"ssh: junk character in version line\")\n\t\t}\n\t}\n\tif _, err = rw.Write(append(versionLine, '\\r', '\\n')); err != nil {\n\t\treturn\n\t}\n\n\tthem, err = readVersion(rw)\n\treturn them, err\n}\n\n// maxVersionStringBytes is the maximum number of bytes that we'll\n// accept as a version string. RFC 4253 section 4.2 limits this at 255\n// chars\nconst maxVersionStringBytes = 255\n\n// Read version string as specified by RFC 4253, section 4.2.\nfunc readVersion(r io.Reader) ([]byte, error) {\n\tversionString := make([]byte, 0, 64)\n\tvar ok bool\n\tvar buf [1]byte\n\n\tfor length := 0; length < maxVersionStringBytes; length++ {\n\t\t_, err := io.ReadFull(r, buf[:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// The RFC says that the version should be terminated with \\r\\n\n\t\t// but several SSH servers actually only send a \\n.\n\t\tif buf[0] == '\\n' {\n\t\t\tif !bytes.HasPrefix(versionString, []byte(\"SSH-\")) {\n\t\t\t\t// RFC 4253 says we need to ignore all version string lines\n\t\t\t\t// except the one containing the SSH version (provided that\n\t\t\t\t// all the lines do not exceed 255 bytes in total).\n\t\t\t\tversionString = versionString[:0]\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tok = true\n\t\t\tbreak\n\t\t}\n\n\t\t// non ASCII chars are disallowed, but we are lenient,\n\t\t// since Go doesn't use null-terminated strings.\n\n\t\t// The RFC allows a comment after a space, however,\n\t\t// all of it (version and comments) goes into the\n\t\t// session hash.\n\t\tversionString = append(versionString, buf[0])\n\t}\n\n\tif !ok {\n\t\treturn nil, errors.New(\"ssh: overflow reading version string\")\n\t}\n\n\t// There might be a '\\r' on the end which we should remove.\n\tif len(versionString) > 0 && versionString[len(versionString)-1] == '\\r' {\n\t\tversionString = versionString[:len(versionString)-1]\n\t}\n\treturn versionString, nil\n}\n"
  },
  {
    "path": "gossh/gin/auth.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"crypto/subtle\"\n\t\"encoding/base64\"\n\t\"net/http\"\n\t\"strconv\"\n\n\t\"gossh/gin/internal/bytesconv\"\n)\n\n// AuthUserKey is the cookie name for user credential in basic auth.\nconst AuthUserKey = \"user\"\n\n// AuthProxyUserKey is the cookie name for proxy_user credential in basic auth for proxy.\nconst AuthProxyUserKey = \"proxy_user\"\n\n// Accounts defines a key/value for user/pass list of authorized logins.\ntype Accounts map[string]string\n\ntype authPair struct {\n\tvalue string\n\tuser  string\n}\n\ntype authPairs []authPair\n\nfunc (a authPairs) searchCredential(authValue string) (string, bool) {\n\tif authValue == \"\" {\n\t\treturn \"\", false\n\t}\n\tfor _, pair := range a {\n\t\tif subtle.ConstantTimeCompare(bytesconv.StringToBytes(pair.value), bytesconv.StringToBytes(authValue)) == 1 {\n\t\t\treturn pair.user, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// BasicAuthForRealm returns a Basic HTTP Authorization middleware. It takes as arguments a map[string]string where\n// the key is the user name and the value is the password, as well as the name of the Realm.\n// If the realm is empty, \"Authorization Required\" will be used by default.\n// (see http://tools.ietf.org/html/rfc2617#section-1.2)\nfunc BasicAuthForRealm(accounts Accounts, realm string) HandlerFunc {\n\tif realm == \"\" {\n\t\trealm = \"Authorization Required\"\n\t}\n\trealm = \"Basic realm=\" + strconv.Quote(realm)\n\tpairs := processAccounts(accounts)\n\treturn func(c *Context) {\n\t\t// Search user in the slice of allowed credentials\n\t\tuser, found := pairs.searchCredential(c.requestHeader(\"Authorization\"))\n\t\tif !found {\n\t\t\t// Credentials doesn't match, we return 401 and abort handlers chain.\n\t\t\tc.Header(\"WWW-Authenticate\", realm)\n\t\t\tc.AbortWithStatus(http.StatusUnauthorized)\n\t\t\treturn\n\t\t}\n\n\t\t// The user credentials was found, set user's id to key AuthUserKey in this context, the user's id can be read later using\n\t\t// c.MustGet(gin.AuthUserKey).\n\t\tc.Set(AuthUserKey, user)\n\t}\n}\n\n// BasicAuth returns a Basic HTTP Authorization middleware. It takes as argument a map[string]string where\n// the key is the user name and the value is the password.\nfunc BasicAuth(accounts Accounts) HandlerFunc {\n\treturn BasicAuthForRealm(accounts, \"\")\n}\n\nfunc processAccounts(accounts Accounts) authPairs {\n\tlength := len(accounts)\n\tassert1(length > 0, \"Empty list of authorized credentials\")\n\tpairs := make(authPairs, 0, length)\n\tfor user, password := range accounts {\n\t\tassert1(user != \"\", \"User can not be empty\")\n\t\tvalue := authorizationHeader(user, password)\n\t\tpairs = append(pairs, authPair{\n\t\t\tvalue: value,\n\t\t\tuser:  user,\n\t\t})\n\t}\n\treturn pairs\n}\n\nfunc authorizationHeader(user, password string) string {\n\tbase := user + \":\" + password\n\treturn \"Basic \" + base64.StdEncoding.EncodeToString(bytesconv.StringToBytes(base))\n}\n\n// BasicAuthForProxy returns a Basic HTTP Proxy-Authorization middleware.\n// If the realm is empty, \"Proxy Authorization Required\" will be used by default.\nfunc BasicAuthForProxy(accounts Accounts, realm string) HandlerFunc {\n\tif realm == \"\" {\n\t\trealm = \"Proxy Authorization Required\"\n\t}\n\trealm = \"Basic realm=\" + strconv.Quote(realm)\n\tpairs := processAccounts(accounts)\n\treturn func(c *Context) {\n\t\tproxyUser, found := pairs.searchCredential(c.requestHeader(\"Proxy-Authorization\"))\n\t\tif !found {\n\t\t\t// Credentials doesn't match, we return 407 and abort handlers chain.\n\t\t\tc.Header(\"Proxy-Authenticate\", realm)\n\t\t\tc.AbortWithStatus(http.StatusProxyAuthRequired)\n\t\t\treturn\n\t\t}\n\t\t// The proxy_user credentials was found, set proxy_user's id to key AuthProxyUserKey in this context, the proxy_user's id can be read later using\n\t\t// c.MustGet(gin.AuthProxyUserKey).\n\t\tc.Set(AuthProxyUserKey, proxyUser)\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/binding/binding.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport \"net/http\"\n\n// Content-Type MIME of the most common data formats.\nconst (\n\tMIMEJSON              = \"application/json\"\n\tMIMEHTML              = \"text/html\"\n\tMIMEXML               = \"application/xml\"\n\tMIMEXML2              = \"text/xml\"\n\tMIMEPlain             = \"text/plain\"\n\tMIMEPOSTForm          = \"application/x-www-form-urlencoded\"\n\tMIMEMultipartPOSTForm = \"multipart/form-data\"\n)\n\n// Binding describes the interface which needs to be implemented for binding the\n// data present in the request such as JSON request body, query parameters or\n// the form POST.\ntype Binding interface {\n\tName() string\n\tBind(*http.Request, any) error\n}\n\n// BindingBody adds BindBody method to Binding. BindBody is similar with Bind,\n// but it reads the body from supplied bytes instead of req.Body.\ntype BindingBody interface {\n\tBinding\n\tBindBody([]byte, any) error\n}\n\n// BindingUri adds BindUri method to Binding. BindUri is similar with Bind,\n// but it reads the Params.\ntype BindingUri interface {\n\tName() string\n\tBindUri(map[string][]string, any) error\n}\n\n// StructValidator is the minimal interface which needs to be implemented in\n// order for it to be used as the validator engine for ensuring the correctness\n// of the request. Gin provides a default implementation for this using\n// https://github.com/go-playground/validator/tree/v10.6.1.\ntype StructValidator interface {\n\t// ValidateStruct can receive any kind of type and it should never panic, even if the configuration is not right.\n\t// If the received type is a slice|array, the validation should be performed travel on every element.\n\t// If the received type is not a struct or slice|array, any validation should be skipped and nil must be returned.\n\t// If the received type is a struct or pointer to a struct, the validation should be performed.\n\t// If the struct is not valid or the validation itself fails, a descriptive error should be returned.\n\t// Otherwise nil must be returned.\n\tValidateStruct(any) error\n\n\t// Engine returns the underlying validator engine which powers the\n\t// StructValidator implementation.\n\tEngine() any\n}\n\n// Validator is the default validator which implements the StructValidator\n// interface. It uses https://github.com/go-playground/validator/tree/v10.6.1\n// under the hood.\nvar Validator StructValidator = &defaultValidator{}\n\n// These implement the Binding interface and can be used to bind the data\n// present in the request to struct instances.\nvar (\n\tJSON          BindingBody = jsonBinding{}\n\tXML           BindingBody = xmlBinding{}\n\tForm          Binding     = formBinding{}\n\tQuery         Binding     = queryBinding{}\n\tFormPost      Binding     = formPostBinding{}\n\tFormMultipart Binding     = formMultipartBinding{}\n\tUri           BindingUri  = uriBinding{}\n\tHeader        Binding     = headerBinding{}\n)\n\n// Default returns the appropriate Binding instance based on the HTTP method\n// and the content type.\nfunc Default(method, contentType string) Binding {\n\tif method == http.MethodGet {\n\t\treturn Form\n\t}\n\n\tswitch contentType {\n\tcase MIMEJSON:\n\t\treturn JSON\n\tcase MIMEXML, MIMEXML2:\n\t\treturn XML\n\tcase MIMEMultipartPOSTForm:\n\t\treturn FormMultipart\n\tdefault: // case MIMEPOSTForm:\n\t\treturn Form\n\t}\n}\n\nfunc validate(obj any) error {\n\tif Validator == nil {\n\t\treturn nil\n\t}\n\treturn Validator.ValidateStruct(obj)\n}\n"
  },
  {
    "path": "gossh/gin/binding/default_validator.go",
    "content": "// Copyright 2017 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gossh/gin/validator\"\n)\n\ntype defaultValidator struct {\n\tonce     sync.Once\n\tvalidate *validator.Validate\n}\n\ntype SliceValidationError []error\n\n// Error concatenates all error elements in SliceValidationError into a single string separated by \\n.\nfunc (err SliceValidationError) Error() string {\n\tn := len(err)\n\tswitch n {\n\tcase 0:\n\t\treturn \"\"\n\tdefault:\n\t\tvar b strings.Builder\n\t\tif err[0] != nil {\n\t\t\tfmt.Fprintf(&b, \"[%d]: %s\", 0, err[0].Error())\n\t\t}\n\t\tif n > 1 {\n\t\t\tfor i := 1; i < n; i++ {\n\t\t\t\tif err[i] != nil {\n\t\t\t\t\tb.WriteString(\"\\n\")\n\t\t\t\t\tfmt.Fprintf(&b, \"[%d]: %s\", i, err[i].Error())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn b.String()\n\t}\n}\n\nvar _ StructValidator = (*defaultValidator)(nil)\n\n// ValidateStruct receives any kind of type, but only performed struct or pointer to struct type.\nfunc (v *defaultValidator) ValidateStruct(obj any) error {\n\tif obj == nil {\n\t\treturn nil\n\t}\n\n\tvalue := reflect.ValueOf(obj)\n\tswitch value.Kind() {\n\tcase reflect.Ptr:\n\t\tif value.Elem().Kind() != reflect.Struct {\n\t\t\treturn v.ValidateStruct(value.Elem().Interface())\n\t\t}\n\t\treturn v.validateStruct(obj)\n\tcase reflect.Struct:\n\t\treturn v.validateStruct(obj)\n\tcase reflect.Slice, reflect.Array:\n\t\tcount := value.Len()\n\t\tvalidateRet := make(SliceValidationError, 0)\n\t\tfor i := 0; i < count; i++ {\n\t\t\tif err := v.ValidateStruct(value.Index(i).Interface()); err != nil {\n\t\t\t\tvalidateRet = append(validateRet, err)\n\t\t\t}\n\t\t}\n\t\tif len(validateRet) == 0 {\n\t\t\treturn nil\n\t\t}\n\t\treturn validateRet\n\tdefault:\n\t\treturn nil\n\t}\n}\n\n// validateStruct receives struct type\nfunc (v *defaultValidator) validateStruct(obj any) error {\n\tv.lazyinit()\n\treturn v.validate.Struct(obj)\n}\n\n// Engine returns the underlying validator engine which powers the default\n// Validator instance. This is useful if you want to register custom validations\n// or struct level validations. See validator GoDoc for more info -\n// https://pkg.go.dev/github.com/go-playground/validator/v10\nfunc (v *defaultValidator) Engine() any {\n\tv.lazyinit()\n\treturn v.validate\n}\n\nfunc (v *defaultValidator) lazyinit() {\n\tv.once.Do(func() {\n\t\tv.validate = validator.New()\n\t\tv.validate.SetTagName(\"binding\")\n\t})\n}\n"
  },
  {
    "path": "gossh/gin/binding/form.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n)\n\nconst defaultMemory = 32 << 20\n\ntype formBinding struct{}\ntype formPostBinding struct{}\ntype formMultipartBinding struct{}\n\nfunc (formBinding) Name() string {\n\treturn \"form\"\n}\n\nfunc (formBinding) Bind(req *http.Request, obj any) error {\n\tif err := req.ParseForm(); err != nil {\n\t\treturn err\n\t}\n\tif err := req.ParseMultipartForm(defaultMemory); err != nil && !errors.Is(err, http.ErrNotMultipart) {\n\t\treturn err\n\t}\n\tif err := mapForm(obj, req.Form); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n\nfunc (formPostBinding) Name() string {\n\treturn \"form-urlencoded\"\n}\n\nfunc (formPostBinding) Bind(req *http.Request, obj any) error {\n\tif err := req.ParseForm(); err != nil {\n\t\treturn err\n\t}\n\tif err := mapForm(obj, req.PostForm); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n\nfunc (formMultipartBinding) Name() string {\n\treturn \"multipart/form-data\"\n}\n\nfunc (formMultipartBinding) Bind(req *http.Request, obj any) error {\n\tif err := req.ParseMultipartForm(defaultMemory); err != nil {\n\t\treturn err\n\t}\n\tif err := mappingByPtr(obj, (*multipartRequest)(req), \"form\"); err != nil {\n\t\treturn err\n\t}\n\n\treturn validate(obj)\n}\n"
  },
  {
    "path": "gossh/gin/binding/form_mapping.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"mime/multipart\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gossh/gin/internal/bytesconv\"\n\t\"gossh/gin/internal/json\"\n)\n\nvar (\n\terrUnknownType = errors.New(\"unknown type\")\n\n\t// ErrConvertMapStringSlice can not convert to map[string][]string\n\tErrConvertMapStringSlice = errors.New(\"can not convert to map slices of strings\")\n\n\t// ErrConvertToMapString can not convert to map[string]string\n\tErrConvertToMapString = errors.New(\"can not convert to map of strings\")\n)\n\nfunc mapURI(ptr any, m map[string][]string) error {\n\treturn mapFormByTag(ptr, m, \"uri\")\n}\n\nfunc mapForm(ptr any, form map[string][]string) error {\n\treturn mapFormByTag(ptr, form, \"form\")\n}\n\nfunc MapFormWithTag(ptr any, form map[string][]string, tag string) error {\n\treturn mapFormByTag(ptr, form, tag)\n}\n\nvar emptyField = reflect.StructField{}\n\nfunc mapFormByTag(ptr any, form map[string][]string, tag string) error {\n\t// Check if ptr is a map\n\tptrVal := reflect.ValueOf(ptr)\n\tvar pointed any\n\tif ptrVal.Kind() == reflect.Ptr {\n\t\tptrVal = ptrVal.Elem()\n\t\tpointed = ptrVal.Interface()\n\t}\n\tif ptrVal.Kind() == reflect.Map &&\n\t\tptrVal.Type().Key().Kind() == reflect.String {\n\t\tif pointed != nil {\n\t\t\tptr = pointed\n\t\t}\n\t\treturn setFormMap(ptr, form)\n\t}\n\n\treturn mappingByPtr(ptr, formSource(form), tag)\n}\n\n// setter tries to set value on a walking by fields of a struct\ntype setter interface {\n\tTrySet(value reflect.Value, field reflect.StructField, key string, opt setOptions) (isSet bool, err error)\n}\n\ntype formSource map[string][]string\n\nvar _ setter = formSource(nil)\n\n// TrySet tries to set a value by request's form source (like map[string][]string)\nfunc (form formSource) TrySet(value reflect.Value, field reflect.StructField, tagValue string, opt setOptions) (isSet bool, err error) {\n\treturn setByForm(value, field, form, tagValue, opt)\n}\n\nfunc mappingByPtr(ptr any, setter setter, tag string) error {\n\t_, err := mapping(reflect.ValueOf(ptr), emptyField, setter, tag)\n\treturn err\n}\n\nfunc mapping(value reflect.Value, field reflect.StructField, setter setter, tag string) (bool, error) {\n\tif field.Tag.Get(tag) == \"-\" { // just ignoring this field\n\t\treturn false, nil\n\t}\n\n\tvKind := value.Kind()\n\n\tif vKind == reflect.Ptr {\n\t\tvar isNew bool\n\t\tvPtr := value\n\t\tif value.IsNil() {\n\t\t\tisNew = true\n\t\t\tvPtr = reflect.New(value.Type().Elem())\n\t\t}\n\t\tisSet, err := mapping(vPtr.Elem(), field, setter, tag)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif isNew && isSet {\n\t\t\tvalue.Set(vPtr)\n\t\t}\n\t\treturn isSet, nil\n\t}\n\n\tif vKind != reflect.Struct || !field.Anonymous {\n\t\tok, err := tryToSetValue(value, field, setter, tag)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif ok {\n\t\t\treturn true, nil\n\t\t}\n\t}\n\n\tif vKind == reflect.Struct {\n\t\ttValue := value.Type()\n\n\t\tvar isSet bool\n\t\tfor i := 0; i < value.NumField(); i++ {\n\t\t\tsf := tValue.Field(i)\n\t\t\tif sf.PkgPath != \"\" && !sf.Anonymous { // unexported\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tok, err := mapping(value.Field(i), sf, setter, tag)\n\t\t\tif err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t\tisSet = isSet || ok\n\t\t}\n\t\treturn isSet, nil\n\t}\n\treturn false, nil\n}\n\ntype setOptions struct {\n\tisDefaultExists bool\n\tdefaultValue    string\n}\n\nfunc tryToSetValue(value reflect.Value, field reflect.StructField, setter setter, tag string) (bool, error) {\n\tvar tagValue string\n\tvar setOpt setOptions\n\n\ttagValue = field.Tag.Get(tag)\n\ttagValue, opts := head(tagValue, \",\")\n\n\tif tagValue == \"\" { // default value is FieldName\n\t\ttagValue = field.Name\n\t}\n\tif tagValue == \"\" { // when field is \"emptyField\" variable\n\t\treturn false, nil\n\t}\n\n\tvar opt string\n\tfor len(opts) > 0 {\n\t\topt, opts = head(opts, \",\")\n\n\t\tif k, v := head(opt, \"=\"); k == \"default\" {\n\t\t\tsetOpt.isDefaultExists = true\n\t\t\tsetOpt.defaultValue = v\n\t\t}\n\t}\n\n\treturn setter.TrySet(value, field, tagValue, setOpt)\n}\n\nfunc setByForm(value reflect.Value, field reflect.StructField, form map[string][]string, tagValue string, opt setOptions) (isSet bool, err error) {\n\tvs, ok := form[tagValue]\n\tif !ok && !opt.isDefaultExists {\n\t\treturn false, nil\n\t}\n\n\tswitch value.Kind() {\n\tcase reflect.Slice:\n\t\tif !ok {\n\t\t\tvs = []string{opt.defaultValue}\n\t\t}\n\t\treturn true, setSlice(vs, value, field)\n\tcase reflect.Array:\n\t\tif !ok {\n\t\t\tvs = []string{opt.defaultValue}\n\t\t}\n\t\tif len(vs) != value.Len() {\n\t\t\treturn false, fmt.Errorf(\"%q is not valid value for %s\", vs, value.Type().String())\n\t\t}\n\t\treturn true, setArray(vs, value, field)\n\tdefault:\n\t\tvar val string\n\t\tif !ok {\n\t\t\tval = opt.defaultValue\n\t\t}\n\n\t\tif len(vs) > 0 {\n\t\t\tval = vs[0]\n\t\t}\n\t\treturn true, setWithProperType(val, value, field)\n\t}\n}\n\nfunc setWithProperType(val string, value reflect.Value, field reflect.StructField) error {\n\tswitch value.Kind() {\n\tcase reflect.Int:\n\t\treturn setIntField(val, 0, value)\n\tcase reflect.Int8:\n\t\treturn setIntField(val, 8, value)\n\tcase reflect.Int16:\n\t\treturn setIntField(val, 16, value)\n\tcase reflect.Int32:\n\t\treturn setIntField(val, 32, value)\n\tcase reflect.Int64:\n\t\tswitch value.Interface().(type) {\n\t\tcase time.Duration:\n\t\t\treturn setTimeDuration(val, value)\n\t\t}\n\t\treturn setIntField(val, 64, value)\n\tcase reflect.Uint:\n\t\treturn setUintField(val, 0, value)\n\tcase reflect.Uint8:\n\t\treturn setUintField(val, 8, value)\n\tcase reflect.Uint16:\n\t\treturn setUintField(val, 16, value)\n\tcase reflect.Uint32:\n\t\treturn setUintField(val, 32, value)\n\tcase reflect.Uint64:\n\t\treturn setUintField(val, 64, value)\n\tcase reflect.Bool:\n\t\treturn setBoolField(val, value)\n\tcase reflect.Float32:\n\t\treturn setFloatField(val, 32, value)\n\tcase reflect.Float64:\n\t\treturn setFloatField(val, 64, value)\n\tcase reflect.String:\n\t\tvalue.SetString(val)\n\tcase reflect.Struct:\n\t\tswitch value.Interface().(type) {\n\t\tcase time.Time:\n\t\t\treturn setTimeField(val, field, value)\n\t\tcase multipart.FileHeader:\n\t\t\treturn nil\n\t\t}\n\t\treturn json.Unmarshal(bytesconv.StringToBytes(val), value.Addr().Interface())\n\tcase reflect.Map:\n\t\treturn json.Unmarshal(bytesconv.StringToBytes(val), value.Addr().Interface())\n\tcase reflect.Ptr:\n\t\tif !value.Elem().IsValid() {\n\t\t\tvalue.Set(reflect.New(value.Type().Elem()))\n\t\t}\n\t\treturn setWithProperType(val, value.Elem(), field)\n\tdefault:\n\t\treturn errUnknownType\n\t}\n\treturn nil\n}\n\nfunc setIntField(val string, bitSize int, field reflect.Value) error {\n\tif val == \"\" {\n\t\tval = \"0\"\n\t}\n\tintVal, err := strconv.ParseInt(val, 10, bitSize)\n\tif err == nil {\n\t\tfield.SetInt(intVal)\n\t}\n\treturn err\n}\n\nfunc setUintField(val string, bitSize int, field reflect.Value) error {\n\tif val == \"\" {\n\t\tval = \"0\"\n\t}\n\tuintVal, err := strconv.ParseUint(val, 10, bitSize)\n\tif err == nil {\n\t\tfield.SetUint(uintVal)\n\t}\n\treturn err\n}\n\nfunc setBoolField(val string, field reflect.Value) error {\n\tif val == \"\" {\n\t\tval = \"false\"\n\t}\n\tboolVal, err := strconv.ParseBool(val)\n\tif err == nil {\n\t\tfield.SetBool(boolVal)\n\t}\n\treturn err\n}\n\nfunc setFloatField(val string, bitSize int, field reflect.Value) error {\n\tif val == \"\" {\n\t\tval = \"0.0\"\n\t}\n\tfloatVal, err := strconv.ParseFloat(val, bitSize)\n\tif err == nil {\n\t\tfield.SetFloat(floatVal)\n\t}\n\treturn err\n}\n\nfunc setTimeField(val string, structField reflect.StructField, value reflect.Value) error {\n\ttimeFormat := structField.Tag.Get(\"time_format\")\n\tif timeFormat == \"\" {\n\t\ttimeFormat = time.RFC3339\n\t}\n\n\tswitch tf := strings.ToLower(timeFormat); tf {\n\tcase \"unix\", \"unixnano\":\n\t\ttv, err := strconv.ParseInt(val, 10, 64)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\td := time.Duration(1)\n\t\tif tf == \"unixnano\" {\n\t\t\td = time.Second\n\t\t}\n\n\t\tt := time.Unix(tv/int64(d), tv%int64(d))\n\t\tvalue.Set(reflect.ValueOf(t))\n\t\treturn nil\n\t}\n\n\tif val == \"\" {\n\t\tvalue.Set(reflect.ValueOf(time.Time{}))\n\t\treturn nil\n\t}\n\n\tl := time.Local\n\tif isUTC, _ := strconv.ParseBool(structField.Tag.Get(\"time_utc\")); isUTC {\n\t\tl = time.UTC\n\t}\n\n\tif locTag := structField.Tag.Get(\"time_location\"); locTag != \"\" {\n\t\tloc, err := time.LoadLocation(locTag)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tl = loc\n\t}\n\n\tt, err := time.ParseInLocation(timeFormat, val, l)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvalue.Set(reflect.ValueOf(t))\n\treturn nil\n}\n\nfunc setArray(vals []string, value reflect.Value, field reflect.StructField) error {\n\tfor i, s := range vals {\n\t\terr := setWithProperType(s, value.Index(i), field)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc setSlice(vals []string, value reflect.Value, field reflect.StructField) error {\n\tslice := reflect.MakeSlice(value.Type(), len(vals), len(vals))\n\terr := setArray(vals, slice, field)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvalue.Set(slice)\n\treturn nil\n}\n\nfunc setTimeDuration(val string, value reflect.Value) error {\n\td, err := time.ParseDuration(val)\n\tif err != nil {\n\t\treturn err\n\t}\n\tvalue.Set(reflect.ValueOf(d))\n\treturn nil\n}\n\nfunc head(str, sep string) (head string, tail string) {\n\tidx := strings.Index(str, sep)\n\tif idx < 0 {\n\t\treturn str, \"\"\n\t}\n\treturn str[:idx], str[idx+len(sep):]\n}\n\nfunc setFormMap(ptr any, form map[string][]string) error {\n\tel := reflect.TypeOf(ptr).Elem()\n\n\tif el.Kind() == reflect.Slice {\n\t\tptrMap, ok := ptr.(map[string][]string)\n\t\tif !ok {\n\t\t\treturn ErrConvertMapStringSlice\n\t\t}\n\t\tfor k, v := range form {\n\t\t\tptrMap[k] = v\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tptrMap, ok := ptr.(map[string]string)\n\tif !ok {\n\t\treturn ErrConvertToMapString\n\t}\n\tfor k, v := range form {\n\t\tptrMap[k] = v[len(v)-1] // pick last\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/gin/binding/header.go",
    "content": "// Copyright 2022 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"net/http\"\n\t\"net/textproto\"\n\t\"reflect\"\n)\n\ntype headerBinding struct{}\n\nfunc (headerBinding) Name() string {\n\treturn \"header\"\n}\n\nfunc (headerBinding) Bind(req *http.Request, obj any) error {\n\n\tif err := mapHeader(obj, req.Header); err != nil {\n\t\treturn err\n\t}\n\n\treturn validate(obj)\n}\n\nfunc mapHeader(ptr any, h map[string][]string) error {\n\treturn mappingByPtr(ptr, headerSource(h), \"header\")\n}\n\ntype headerSource map[string][]string\n\nvar _ setter = headerSource(nil)\n\nfunc (hs headerSource) TrySet(value reflect.Value, field reflect.StructField, tagValue string, opt setOptions) (bool, error) {\n\treturn setByForm(value, field, hs, textproto.CanonicalMIMEHeaderKey(tagValue), opt)\n}\n"
  },
  {
    "path": "gossh/gin/binding/json.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"io\"\n\t\"net/http\"\n\n\t\"gossh/gin/internal/json\"\n)\n\n// EnableDecoderUseNumber is used to call the UseNumber method on the JSON\n// Decoder instance. UseNumber causes the Decoder to unmarshal a number into an\n// any as a Number instead of as a float64.\nvar EnableDecoderUseNumber = false\n\n// EnableDecoderDisallowUnknownFields is used to call the DisallowUnknownFields method\n// on the JSON Decoder instance. DisallowUnknownFields causes the Decoder to\n// return an error when the destination is a struct and the input contains object\n// keys which do not match any non-ignored, exported fields in the destination.\nvar EnableDecoderDisallowUnknownFields = false\n\ntype jsonBinding struct{}\n\nfunc (jsonBinding) Name() string {\n\treturn \"json\"\n}\n\nfunc (jsonBinding) Bind(req *http.Request, obj any) error {\n\tif req == nil || req.Body == nil {\n\t\treturn errors.New(\"invalid request\")\n\t}\n\treturn decodeJSON(req.Body, obj)\n}\n\nfunc (jsonBinding) BindBody(body []byte, obj any) error {\n\treturn decodeJSON(bytes.NewReader(body), obj)\n}\n\nfunc decodeJSON(r io.Reader, obj any) error {\n\tdecoder := json.NewDecoder(r)\n\tif EnableDecoderUseNumber {\n\t\tdecoder.UseNumber()\n\t}\n\tif EnableDecoderDisallowUnknownFields {\n\t\tdecoder.DisallowUnknownFields()\n\t}\n\tif err := decoder.Decode(obj); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n"
  },
  {
    "path": "gossh/gin/binding/multipart_form_mapping.go",
    "content": "// Copyright 2019 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"errors\"\n\t\"mime/multipart\"\n\t\"net/http\"\n\t\"reflect\"\n)\n\ntype multipartRequest http.Request\n\nvar _ setter = (*multipartRequest)(nil)\n\nvar (\n\t// ErrMultiFileHeader multipart.FileHeader invalid\n\tErrMultiFileHeader = errors.New(\"unsupported field type for multipart.FileHeader\")\n\n\t// ErrMultiFileHeaderLenInvalid array for []*multipart.FileHeader len invalid\n\tErrMultiFileHeaderLenInvalid = errors.New(\"unsupported len of array for []*multipart.FileHeader\")\n)\n\n// TrySet tries to set a value by the multipart request with the binding a form file\nfunc (r *multipartRequest) TrySet(value reflect.Value, field reflect.StructField, key string, opt setOptions) (bool, error) {\n\tif files := r.MultipartForm.File[key]; len(files) != 0 {\n\t\treturn setByMultipartFormFile(value, field, files)\n\t}\n\n\treturn setByForm(value, field, r.MultipartForm.Value, key, opt)\n}\n\nfunc setByMultipartFormFile(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {\n\tswitch value.Kind() {\n\tcase reflect.Ptr:\n\t\tswitch value.Interface().(type) {\n\t\tcase *multipart.FileHeader:\n\t\t\tvalue.Set(reflect.ValueOf(files[0]))\n\t\t\treturn true, nil\n\t\t}\n\tcase reflect.Struct:\n\t\tswitch value.Interface().(type) {\n\t\tcase multipart.FileHeader:\n\t\t\tvalue.Set(reflect.ValueOf(*files[0]))\n\t\t\treturn true, nil\n\t\t}\n\tcase reflect.Slice:\n\t\tslice := reflect.MakeSlice(value.Type(), len(files), len(files))\n\t\tisSet, err = setArrayOfMultipartFormFiles(slice, field, files)\n\t\tif err != nil || !isSet {\n\t\t\treturn isSet, err\n\t\t}\n\t\tvalue.Set(slice)\n\t\treturn true, nil\n\tcase reflect.Array:\n\t\treturn setArrayOfMultipartFormFiles(value, field, files)\n\t}\n\treturn false, ErrMultiFileHeader\n}\n\nfunc setArrayOfMultipartFormFiles(value reflect.Value, field reflect.StructField, files []*multipart.FileHeader) (isSet bool, err error) {\n\tif value.Len() != len(files) {\n\t\treturn false, ErrMultiFileHeaderLenInvalid\n\t}\n\tfor i := range files {\n\t\tset, err := setByMultipartFormFile(value.Index(i), field, files[i:i+1])\n\t\tif err != nil || !set {\n\t\t\treturn set, err\n\t\t}\n\t}\n\treturn true, nil\n}\n"
  },
  {
    "path": "gossh/gin/binding/query.go",
    "content": "// Copyright 2017 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport \"net/http\"\n\ntype queryBinding struct{}\n\nfunc (queryBinding) Name() string {\n\treturn \"query\"\n}\n\nfunc (queryBinding) Bind(req *http.Request, obj any) error {\n\tvalues := req.URL.Query()\n\tif err := mapForm(obj, values); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n"
  },
  {
    "path": "gossh/gin/binding/uri.go",
    "content": "// Copyright 2018 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\ntype uriBinding struct{}\n\nfunc (uriBinding) Name() string {\n\treturn \"uri\"\n}\n\nfunc (uriBinding) BindUri(m map[string][]string, obj any) error {\n\tif err := mapURI(obj, m); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n"
  },
  {
    "path": "gossh/gin/binding/xml.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage binding\n\nimport (\n\t\"bytes\"\n\t\"encoding/xml\"\n\t\"io\"\n\t\"net/http\"\n)\n\ntype xmlBinding struct{}\n\nfunc (xmlBinding) Name() string {\n\treturn \"xml\"\n}\n\nfunc (xmlBinding) Bind(req *http.Request, obj any) error {\n\treturn decodeXML(req.Body, obj)\n}\n\nfunc (xmlBinding) BindBody(body []byte, obj any) error {\n\treturn decodeXML(bytes.NewReader(body), obj)\n}\nfunc decodeXML(r io.Reader, obj any) error {\n\tdecoder := xml.NewDecoder(r)\n\tif err := decoder.Decode(obj); err != nil {\n\t\treturn err\n\t}\n\treturn validate(obj)\n}\n"
  },
  {
    "path": "gossh/gin/context.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"math\"\n\t\"mime/multipart\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gossh/gin/binding\"\n\t\"gossh/gin/render\"\n\t\"gossh/gin/sse\"\n)\n\n// Content-Type MIME of the most common data formats.\nconst (\n\tMIMEJSON              = binding.MIMEJSON\n\tMIMEHTML              = binding.MIMEHTML\n\tMIMEXML               = binding.MIMEXML\n\tMIMEPlain             = binding.MIMEPlain\n\tMIMEPOSTForm          = binding.MIMEPOSTForm\n\tMIMEMultipartPOSTForm = binding.MIMEMultipartPOSTForm\n)\n\n// BodyBytesKey indicates a default body bytes key.\nconst BodyBytesKey = \"_gin-gonic/gin/bodybyteskey\"\n\n// ContextKey is the key that a Context returns itself for.\nconst ContextKey = \"_gin-gonic/gin/contextkey\"\n\ntype ContextKeyType int\n\nconst ContextRequestKey ContextKeyType = 0\n\n// abortIndex represents a typical value used in abort functions.\nconst abortIndex int8 = math.MaxInt8 >> 1\n\n// Context is the most important part of gin. It allows us to pass variables between middleware,\n// manage the flow, validate the JSON of a request and render a JSON response for example.\ntype Context struct {\n\twritermem responseWriter\n\tRequest   *http.Request\n\tWriter    ResponseWriter\n\n\tParams   Params\n\thandlers HandlersChain\n\tindex    int8\n\tfullPath string\n\n\tengine       *Engine\n\tparams       *Params\n\tskippedNodes *[]skippedNode\n\n\t// This mutex protects Keys map.\n\tmu sync.RWMutex\n\n\t// Keys is a key/value pair exclusively for the context of each request.\n\tKeys map[string]any\n\n\t// Errors is a list of errors attached to all the handlers/middlewares who used this context.\n\tErrors errorMsgs\n\n\t// Accepted defines a list of manually accepted formats for content negotiation.\n\tAccepted []string\n\n\t// queryCache caches the query result from c.Request.URL.Query().\n\tqueryCache url.Values\n\n\t// formCache caches c.Request.PostForm, which contains the parsed form data from POST, PATCH,\n\t// or PUT body parameters.\n\tformCache url.Values\n\n\t// SameSite allows a server to define a cookie attribute making it impossible for\n\t// the browser to send this cookie along with cross-site requests.\n\tsameSite http.SameSite\n}\n\n/************************************/\n/********** CONTEXT CREATION ********/\n/************************************/\n\nfunc (c *Context) reset() {\n\tc.Writer = &c.writermem\n\tc.Params = c.Params[:0]\n\tc.handlers = nil\n\tc.index = -1\n\n\tc.fullPath = \"\"\n\tc.Keys = nil\n\tc.Errors = c.Errors[:0]\n\tc.Accepted = nil\n\tc.queryCache = nil\n\tc.formCache = nil\n\tc.sameSite = 0\n\t*c.params = (*c.params)[:0]\n\t*c.skippedNodes = (*c.skippedNodes)[:0]\n}\n\n// Copy returns a copy of the current context that can be safely used outside the request's scope.\n// This has to be used when the context has to be passed to a goroutine.\nfunc (c *Context) Copy() *Context {\n\tcp := Context{\n\t\twritermem: c.writermem,\n\t\tRequest:   c.Request,\n\t\tengine:    c.engine,\n\t}\n\n\tcp.writermem.ResponseWriter = nil\n\tcp.Writer = &cp.writermem\n\tcp.index = abortIndex\n\tcp.handlers = nil\n\tcp.fullPath = c.fullPath\n\n\tcKeys := c.Keys\n\tcp.Keys = make(map[string]any, len(cKeys))\n\tc.mu.RLock()\n\tfor k, v := range cKeys {\n\t\tcp.Keys[k] = v\n\t}\n\tc.mu.RUnlock()\n\n\tcParams := c.Params\n\tcp.Params = make([]Param, len(cParams))\n\tcopy(cp.Params, cParams)\n\n\treturn &cp\n}\n\n// HandlerName returns the main handler's name. For example if the handler is \"handleGetUsers()\",\n// this function will return \"main.handleGetUsers\".\nfunc (c *Context) HandlerName() string {\n\treturn nameOfFunction(c.handlers.Last())\n}\n\n// HandlerNames returns a list of all registered handlers for this context in descending order,\n// following the semantics of HandlerName()\nfunc (c *Context) HandlerNames() []string {\n\thn := make([]string, 0, len(c.handlers))\n\tfor _, val := range c.handlers {\n\t\thn = append(hn, nameOfFunction(val))\n\t}\n\treturn hn\n}\n\n// Handler returns the main handler.\nfunc (c *Context) Handler() HandlerFunc {\n\treturn c.handlers.Last()\n}\n\n// FullPath returns a matched route full path. For not found routes\n// returns an empty string.\n//\n//\trouter.GET(\"/user/:id\", func(c *gin.Context) {\n//\t    c.FullPath() == \"/user/:id\" // true\n//\t})\nfunc (c *Context) FullPath() string {\n\treturn c.fullPath\n}\n\n/************************************/\n/*********** FLOW CONTROL ***********/\n/************************************/\n\n// Next should be used only inside middleware.\n// It executes the pending handlers in the chain inside the calling handler.\n// See example in GitHub.\nfunc (c *Context) Next() {\n\tc.index++\n\tfor c.index < int8(len(c.handlers)) {\n\t\tc.handlers[c.index](c)\n\t\tc.index++\n\t}\n}\n\n// IsAborted returns true if the current context was aborted.\nfunc (c *Context) IsAborted() bool {\n\treturn c.index >= abortIndex\n}\n\n// Abort prevents pending handlers from being called. Note that this will not stop the current handler.\n// Let's say you have an authorization middleware that validates that the current request is authorized.\n// If the authorization fails (ex: the password does not match), call Abort to ensure the remaining handlers\n// for this request are not called.\nfunc (c *Context) Abort() {\n\tc.index = abortIndex\n}\n\n// AbortWithStatus calls `Abort()` and writes the headers with the specified status code.\n// For example, a failed attempt to authenticate a request could use: context.AbortWithStatus(401).\nfunc (c *Context) AbortWithStatus(code int) {\n\tc.Status(code)\n\tc.Writer.WriteHeaderNow()\n\tc.Abort()\n}\n\n// AbortWithStatusJSON calls `Abort()` and then `JSON` internally.\n// This method stops the chain, writes the status code and return a JSON body.\n// It also sets the Content-Type as \"application/json\".\nfunc (c *Context) AbortWithStatusJSON(code int, jsonObj any) {\n\tc.Abort()\n\tc.JSON(code, jsonObj)\n}\n\n// AbortWithError calls `AbortWithStatus()` and `Error()` internally.\n// This method stops the chain, writes the status code and pushes the specified error to `c.Errors`.\n// See Context.Error() for more details.\nfunc (c *Context) AbortWithError(code int, err error) *Error {\n\tc.AbortWithStatus(code)\n\treturn c.Error(err)\n}\n\n/************************************/\n/********* ERROR MANAGEMENT *********/\n/************************************/\n\n// Error attaches an error to the current context. The error is pushed to a list of errors.\n// It's a good idea to call Error for each error that occurred during the resolution of a request.\n// A middleware can be used to collect all the errors and push them to a database together,\n// print a log, or append it in the HTTP response.\n// Error will panic if err is nil.\nfunc (c *Context) Error(err error) *Error {\n\tif err == nil {\n\t\tpanic(\"err is nil\")\n\t}\n\n\tvar parsedError *Error\n\tok := errors.As(err, &parsedError)\n\tif !ok {\n\t\tparsedError = &Error{\n\t\t\tErr:  err,\n\t\t\tType: ErrorTypePrivate,\n\t\t}\n\t}\n\n\tc.Errors = append(c.Errors, parsedError)\n\treturn parsedError\n}\n\n/************************************/\n/******** METADATA MANAGEMENT********/\n/************************************/\n\n// Set is used to store a new key/value pair exclusively for this context.\n// It also lazy initializes  c.Keys if it was not used previously.\nfunc (c *Context) Set(key string, value any) {\n\tc.mu.Lock()\n\tdefer c.mu.Unlock()\n\tif c.Keys == nil {\n\t\tc.Keys = make(map[string]any)\n\t}\n\n\tc.Keys[key] = value\n}\n\n// Get returns the value for the given key, ie: (value, true).\n// If the value does not exist it returns (nil, false)\nfunc (c *Context) Get(key string) (value any, exists bool) {\n\tc.mu.RLock()\n\tdefer c.mu.RUnlock()\n\tvalue, exists = c.Keys[key]\n\treturn\n}\n\n// MustGet returns the value for the given key if it exists, otherwise it panics.\nfunc (c *Context) MustGet(key string) any {\n\tif value, exists := c.Get(key); exists {\n\t\treturn value\n\t}\n\tpanic(\"Key \\\"\" + key + \"\\\" does not exist\")\n}\n\n// GetString returns the value associated with the key as a string.\nfunc (c *Context) GetString(key string) (s string) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\ts, _ = val.(string)\n\t}\n\treturn\n}\n\n// GetBool returns the value associated with the key as a boolean.\nfunc (c *Context) GetBool(key string) (b bool) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tb, _ = val.(bool)\n\t}\n\treturn\n}\n\n// GetInt returns the value associated with the key as an integer.\nfunc (c *Context) GetInt(key string) (i int) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\ti, _ = val.(int)\n\t}\n\treturn\n}\n\n// GetInt64 returns the value associated with the key as an integer.\nfunc (c *Context) GetInt64(key string) (i64 int64) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\ti64, _ = val.(int64)\n\t}\n\treturn\n}\n\n// GetUint returns the value associated with the key as an unsigned integer.\nfunc (c *Context) GetUint(key string) (ui uint) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tui, _ = val.(uint)\n\t}\n\treturn\n}\n\n// GetUint64 returns the value associated with the key as an unsigned integer.\nfunc (c *Context) GetUint64(key string) (ui64 uint64) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tui64, _ = val.(uint64)\n\t}\n\treturn\n}\n\n// GetFloat64 returns the value associated with the key as a float64.\nfunc (c *Context) GetFloat64(key string) (f64 float64) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tf64, _ = val.(float64)\n\t}\n\treturn\n}\n\n// GetTime returns the value associated with the key as time.\nfunc (c *Context) GetTime(key string) (t time.Time) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tt, _ = val.(time.Time)\n\t}\n\treturn\n}\n\n// GetDuration returns the value associated with the key as a duration.\nfunc (c *Context) GetDuration(key string) (d time.Duration) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\td, _ = val.(time.Duration)\n\t}\n\treturn\n}\n\n// GetStringSlice returns the value associated with the key as a slice of strings.\nfunc (c *Context) GetStringSlice(key string) (ss []string) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tss, _ = val.([]string)\n\t}\n\treturn\n}\n\n// GetStringMap returns the value associated with the key as a map of interfaces.\nfunc (c *Context) GetStringMap(key string) (sm map[string]any) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tsm, _ = val.(map[string]any)\n\t}\n\treturn\n}\n\n// GetStringMapString returns the value associated with the key as a map of strings.\nfunc (c *Context) GetStringMapString(key string) (sms map[string]string) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tsms, _ = val.(map[string]string)\n\t}\n\treturn\n}\n\n// GetStringMapStringSlice returns the value associated with the key as a map to a slice of strings.\nfunc (c *Context) GetStringMapStringSlice(key string) (smss map[string][]string) {\n\tif val, ok := c.Get(key); ok && val != nil {\n\t\tsmss, _ = val.(map[string][]string)\n\t}\n\treturn\n}\n\n/************************************/\n/************ INPUT DATA ************/\n/************************************/\n\n// Param returns the value of the URL param.\n// It is a shortcut for c.Params.ByName(key)\n//\n//\trouter.GET(\"/user/:id\", func(c *gin.Context) {\n//\t    // a GET request to /user/john\n//\t    id := c.Param(\"id\") // id == \"john\"\n//\t    // a GET request to /user/john/\n//\t    id := c.Param(\"id\") // id == \"/john/\"\n//\t})\nfunc (c *Context) Param(key string) string {\n\treturn c.Params.ByName(key)\n}\n\n// AddParam adds param to context and\n// replaces path param key with given value for e2e testing purposes\n// Example Route: \"/user/:id\"\n// AddParam(\"id\", 1)\n// Result: \"/user/1\"\nfunc (c *Context) AddParam(key, value string) {\n\tc.Params = append(c.Params, Param{Key: key, Value: value})\n}\n\n// Query returns the keyed url query value if it exists,\n// otherwise it returns an empty string `(\"\")`.\n// It is shortcut for `c.Request.URL.Query().Get(key)`\n//\n//\t    GET /path?id=1234&name=Manu&value=\n//\t\t   c.Query(\"id\") == \"1234\"\n//\t\t   c.Query(\"name\") == \"Manu\"\n//\t\t   c.Query(\"value\") == \"\"\n//\t\t   c.Query(\"wtf\") == \"\"\nfunc (c *Context) Query(key string) (value string) {\n\tvalue, _ = c.GetQuery(key)\n\treturn\n}\n\n// DefaultQuery returns the keyed url query value if it exists,\n// otherwise it returns the specified defaultValue string.\n// See: Query() and GetQuery() for further information.\n//\n//\tGET /?name=Manu&lastname=\n//\tc.DefaultQuery(\"name\", \"unknown\") == \"Manu\"\n//\tc.DefaultQuery(\"id\", \"none\") == \"none\"\n//\tc.DefaultQuery(\"lastname\", \"none\") == \"\"\nfunc (c *Context) DefaultQuery(key, defaultValue string) string {\n\tif value, ok := c.GetQuery(key); ok {\n\t\treturn value\n\t}\n\treturn defaultValue\n}\n\n// GetQuery is like Query(), it returns the keyed url query value\n// if it exists `(value, true)` (even when the value is an empty string),\n// otherwise it returns `(\"\", false)`.\n// It is shortcut for `c.Request.URL.Query().Get(key)`\n//\n//\tGET /?name=Manu&lastname=\n//\t(\"Manu\", true) == c.GetQuery(\"name\")\n//\t(\"\", false) == c.GetQuery(\"id\")\n//\t(\"\", true) == c.GetQuery(\"lastname\")\nfunc (c *Context) GetQuery(key string) (string, bool) {\n\tif values, ok := c.GetQueryArray(key); ok {\n\t\treturn values[0], ok\n\t}\n\treturn \"\", false\n}\n\n// QueryArray returns a slice of strings for a given query key.\n// The length of the slice depends on the number of params with the given key.\nfunc (c *Context) QueryArray(key string) (values []string) {\n\tvalues, _ = c.GetQueryArray(key)\n\treturn\n}\n\nfunc (c *Context) initQueryCache() {\n\tif c.queryCache == nil {\n\t\tif c.Request != nil {\n\t\t\tc.queryCache = c.Request.URL.Query()\n\t\t} else {\n\t\t\tc.queryCache = url.Values{}\n\t\t}\n\t}\n}\n\n// GetQueryArray returns a slice of strings for a given query key, plus\n// a boolean value whether at least one value exists for the given key.\nfunc (c *Context) GetQueryArray(key string) (values []string, ok bool) {\n\tc.initQueryCache()\n\tvalues, ok = c.queryCache[key]\n\treturn\n}\n\n// QueryMap returns a map for a given query key.\nfunc (c *Context) QueryMap(key string) (dicts map[string]string) {\n\tdicts, _ = c.GetQueryMap(key)\n\treturn\n}\n\n// GetQueryMap returns a map for a given query key, plus a boolean value\n// whether at least one value exists for the given key.\nfunc (c *Context) GetQueryMap(key string) (map[string]string, bool) {\n\tc.initQueryCache()\n\treturn c.get(c.queryCache, key)\n}\n\n// PostForm returns the specified key from a POST urlencoded form or multipart form\n// when it exists, otherwise it returns an empty string `(\"\")`.\nfunc (c *Context) PostForm(key string) (value string) {\n\tvalue, _ = c.GetPostForm(key)\n\treturn\n}\n\n// DefaultPostForm returns the specified key from a POST urlencoded form or multipart form\n// when it exists, otherwise it returns the specified defaultValue string.\n// See: PostForm() and GetPostForm() for further information.\nfunc (c *Context) DefaultPostForm(key, defaultValue string) string {\n\tif value, ok := c.GetPostForm(key); ok {\n\t\treturn value\n\t}\n\treturn defaultValue\n}\n\n// GetPostForm is like PostForm(key). It returns the specified key from a POST urlencoded\n// form or multipart form when it exists `(value, true)` (even when the value is an empty string),\n// otherwise it returns (\"\", false).\n// For example, during a PATCH request to update the user's email:\n//\n//\t    email=mail@example.com  -->  (\"mail@example.com\", true) := GetPostForm(\"email\") // set email to \"mail@example.com\"\n//\t\t   email=                  -->  (\"\", true) := GetPostForm(\"email\") // set email to \"\"\n//\t                            -->  (\"\", false) := GetPostForm(\"email\") // do nothing with email\nfunc (c *Context) GetPostForm(key string) (string, bool) {\n\tif values, ok := c.GetPostFormArray(key); ok {\n\t\treturn values[0], ok\n\t}\n\treturn \"\", false\n}\n\n// PostFormArray returns a slice of strings for a given form key.\n// The length of the slice depends on the number of params with the given key.\nfunc (c *Context) PostFormArray(key string) (values []string) {\n\tvalues, _ = c.GetPostFormArray(key)\n\treturn\n}\n\nfunc (c *Context) initFormCache() {\n\tif c.formCache == nil {\n\t\tc.formCache = make(url.Values)\n\t\treq := c.Request\n\t\tif err := req.ParseMultipartForm(c.engine.MaxMultipartMemory); err != nil {\n\t\t\tif !errors.Is(err, http.ErrNotMultipart) {\n\t\t\t\tdebugPrint(\"error on parse multipart form array: %v\", err)\n\t\t\t}\n\t\t}\n\t\tc.formCache = req.PostForm\n\t}\n}\n\n// GetPostFormArray returns a slice of strings for a given form key, plus\n// a boolean value whether at least one value exists for the given key.\nfunc (c *Context) GetPostFormArray(key string) (values []string, ok bool) {\n\tc.initFormCache()\n\tvalues, ok = c.formCache[key]\n\treturn\n}\n\n// PostFormMap returns a map for a given form key.\nfunc (c *Context) PostFormMap(key string) (dicts map[string]string) {\n\tdicts, _ = c.GetPostFormMap(key)\n\treturn\n}\n\n// GetPostFormMap returns a map for a given form key, plus a boolean value\n// whether at least one value exists for the given key.\nfunc (c *Context) GetPostFormMap(key string) (map[string]string, bool) {\n\tc.initFormCache()\n\treturn c.get(c.formCache, key)\n}\n\n// get is an internal method and returns a map which satisfies conditions.\nfunc (c *Context) get(m map[string][]string, key string) (map[string]string, bool) {\n\tdicts := make(map[string]string)\n\texist := false\n\tfor k, v := range m {\n\t\tif i := strings.IndexByte(k, '['); i >= 1 && k[0:i] == key {\n\t\t\tif j := strings.IndexByte(k[i+1:], ']'); j >= 1 {\n\t\t\t\texist = true\n\t\t\t\tdicts[k[i+1:][:j]] = v[0]\n\t\t\t}\n\t\t}\n\t}\n\treturn dicts, exist\n}\n\n// FormFile returns the first file for the provided form key.\nfunc (c *Context) FormFile(name string) (*multipart.FileHeader, error) {\n\tif c.Request.MultipartForm == nil {\n\t\tif err := c.Request.ParseMultipartForm(c.engine.MaxMultipartMemory); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tf, fh, err := c.Request.FormFile(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tf.Close()\n\treturn fh, err\n}\n\n// MultipartForm is the parsed multipart form, including file uploads.\nfunc (c *Context) MultipartForm() (*multipart.Form, error) {\n\terr := c.Request.ParseMultipartForm(c.engine.MaxMultipartMemory)\n\treturn c.Request.MultipartForm, err\n}\n\n// SaveUploadedFile uploads the form file to specific dst.\nfunc (c *Context) SaveUploadedFile(file *multipart.FileHeader, dst string) error {\n\tsrc, err := file.Open()\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer src.Close()\n\n\tif err = os.MkdirAll(filepath.Dir(dst), 0750); err != nil {\n\t\treturn err\n\t}\n\n\tout, err := os.Create(dst)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer out.Close()\n\n\t_, err = io.Copy(out, src)\n\treturn err\n}\n\n// Bind checks the Method and Content-Type to select a binding engine automatically,\n// Depending on the \"Content-Type\" header different bindings are used, for example:\n//\n//\t\"application/json\" --> JSON binding\n//\t\"application/xml\"  --> XML binding\n//\n// It parses the request's body as JSON if Content-Type == \"application/json\" using JSON or XML as a JSON input.\n// It decodes the json payload into the struct specified as a pointer.\n// It writes a 400 error and sets Content-Type header \"text/plain\" in the response if input is not valid.\nfunc (c *Context) Bind(obj any) error {\n\tb := binding.Default(c.Request.Method, c.ContentType())\n\treturn c.MustBindWith(obj, b)\n}\n\n// BindJSON is a shortcut for c.MustBindWith(obj, binding.JSON).\nfunc (c *Context) BindJSON(obj any) error {\n\treturn c.MustBindWith(obj, binding.JSON)\n}\n\n// BindXML is a shortcut for c.MustBindWith(obj, binding.BindXML).\nfunc (c *Context) BindXML(obj any) error {\n\treturn c.MustBindWith(obj, binding.XML)\n}\n\n// BindQuery is a shortcut for c.MustBindWith(obj, binding.Query).\nfunc (c *Context) BindQuery(obj any) error {\n\treturn c.MustBindWith(obj, binding.Query)\n}\n\n// BindHeader is a shortcut for c.MustBindWith(obj, binding.Header).\nfunc (c *Context) BindHeader(obj any) error {\n\treturn c.MustBindWith(obj, binding.Header)\n}\n\n// BindUri binds the passed struct pointer using binding.Uri.\n// It will abort the request with HTTP 400 if any error occurs.\nfunc (c *Context) BindUri(obj any) error {\n\tif err := c.ShouldBindUri(obj); err != nil {\n\t\tc.AbortWithError(http.StatusBadRequest, err).SetType(ErrorTypeBind) //nolint: errcheck\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// MustBindWith binds the passed struct pointer using the specified binding engine.\n// It will abort the request with HTTP 400 if any error occurs.\n// See the binding package.\nfunc (c *Context) MustBindWith(obj any, b binding.Binding) error {\n\tif err := c.ShouldBindWith(obj, b); err != nil {\n\t\tc.AbortWithError(http.StatusBadRequest, err).SetType(ErrorTypeBind) //nolint: errcheck\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ShouldBind checks the Method and Content-Type to select a binding engine automatically,\n// Depending on the \"Content-Type\" header different bindings are used, for example:\n//\n//\t\"application/json\" --> JSON binding\n//\t\"application/xml\"  --> XML binding\n//\n// It parses the request's body as JSON if Content-Type == \"application/json\" using JSON or XML as a JSON input.\n// It decodes the json payload into the struct specified as a pointer.\n// Like c.Bind() but this method does not set the response status code to 400 or abort if input is not valid.\nfunc (c *Context) ShouldBind(obj any) error {\n\tb := binding.Default(c.Request.Method, c.ContentType())\n\treturn c.ShouldBindWith(obj, b)\n}\n\n// ShouldBindJSON is a shortcut for c.ShouldBindWith(obj, binding.JSON).\nfunc (c *Context) ShouldBindJSON(obj any) error {\n\treturn c.ShouldBindWith(obj, binding.JSON)\n}\n\n// ShouldBindXML is a shortcut for c.ShouldBindWith(obj, binding.XML).\nfunc (c *Context) ShouldBindXML(obj any) error {\n\treturn c.ShouldBindWith(obj, binding.XML)\n}\n\n// ShouldBindQuery is a shortcut for c.ShouldBindWith(obj, binding.Query).\nfunc (c *Context) ShouldBindQuery(obj any) error {\n\treturn c.ShouldBindWith(obj, binding.Query)\n}\n\n// ShouldBindHeader is a shortcut for c.ShouldBindWith(obj, binding.Header).\nfunc (c *Context) ShouldBindHeader(obj any) error {\n\treturn c.ShouldBindWith(obj, binding.Header)\n}\n\n// ShouldBindUri binds the passed struct pointer using the specified binding engine.\nfunc (c *Context) ShouldBindUri(obj any) error {\n\tm := make(map[string][]string)\n\tfor _, v := range c.Params {\n\t\tm[v.Key] = []string{v.Value}\n\t}\n\treturn binding.Uri.BindUri(m, obj)\n}\n\n// ShouldBindWith binds the passed struct pointer using the specified binding engine.\n// See the binding package.\nfunc (c *Context) ShouldBindWith(obj any, b binding.Binding) error {\n\treturn b.Bind(c.Request, obj)\n}\n\n// ShouldBindBodyWith is similar with ShouldBindWith, but it stores the request\n// body into the context, and reuse when it is called again.\n//\n// NOTE: This method reads the body before binding. So you should use\n// ShouldBindWith for better performance if you need to call only once.\nfunc (c *Context) ShouldBindBodyWith(obj any, bb binding.BindingBody) (err error) {\n\tvar body []byte\n\tif cb, ok := c.Get(BodyBytesKey); ok {\n\t\tif cbb, ok := cb.([]byte); ok {\n\t\t\tbody = cbb\n\t\t}\n\t}\n\tif body == nil {\n\t\tbody, err = io.ReadAll(c.Request.Body)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.Set(BodyBytesKey, body)\n\t}\n\treturn bb.BindBody(body, obj)\n}\n\n// ShouldBindBodyWithJSON is a shortcut for c.ShouldBindBodyWith(obj, binding.JSON).\nfunc (c *Context) ShouldBindBodyWithJSON(obj any) error {\n\treturn c.ShouldBindBodyWith(obj, binding.JSON)\n}\n\n// ShouldBindBodyWithXML is a shortcut for c.ShouldBindBodyWith(obj, binding.XML).\nfunc (c *Context) ShouldBindBodyWithXML(obj any) error {\n\treturn c.ShouldBindBodyWith(obj, binding.XML)\n}\n\n// ClientIP implements one best effort algorithm to return the real client IP.\n// It calls c.RemoteIP() under the hood, to check if the remote IP is a trusted proxy or not.\n// If it is it will then try to parse the headers defined in Engine.RemoteIPHeaders (defaulting to [X-Forwarded-For, X-Real-Ip]).\n// If the headers are not syntactically valid OR the remote IP does not correspond to a trusted proxy,\n// the remote IP (coming from Request.RemoteAddr) is returned.\nfunc (c *Context) ClientIP() string {\n\t// Check if we're running on a trusted platform, continue running backwards if error\n\tif c.engine.TrustedPlatform != \"\" {\n\t\t// Developers can define their own header of Trusted Platform or use predefined constants\n\t\tif addr := c.requestHeader(c.engine.TrustedPlatform); addr != \"\" {\n\t\t\treturn addr\n\t\t}\n\t}\n\n\t// It also checks if the remoteIP is a trusted proxy or not.\n\t// In order to perform this validation, it will see if the IP is contained within at least one of the CIDR blocks\n\t// defined by Engine.SetTrustedProxies()\n\tremoteIP := net.ParseIP(c.RemoteIP())\n\tif remoteIP == nil {\n\t\treturn \"\"\n\t}\n\ttrusted := c.engine.isTrustedProxy(remoteIP)\n\n\tif trusted && c.engine.ForwardedByClientIP && c.engine.RemoteIPHeaders != nil {\n\t\tfor _, headerName := range c.engine.RemoteIPHeaders {\n\t\t\tip, valid := c.engine.validateHeader(c.requestHeader(headerName))\n\t\t\tif valid {\n\t\t\t\treturn ip\n\t\t\t}\n\t\t}\n\t}\n\treturn remoteIP.String()\n}\n\n// RemoteIP parses the IP from Request.RemoteAddr, normalizes and returns the IP (without the port).\nfunc (c *Context) RemoteIP() string {\n\tip, _, err := net.SplitHostPort(strings.TrimSpace(c.Request.RemoteAddr))\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\treturn ip\n}\n\n// ContentType returns the Content-Type header of the request.\nfunc (c *Context) ContentType() string {\n\treturn filterFlags(c.requestHeader(\"Content-Type\"))\n}\n\n// IsWebsocket returns true if the request headers indicate that a websocket\n// handshake is being initiated by the client.\nfunc (c *Context) IsWebsocket() bool {\n\tif strings.Contains(strings.ToLower(c.requestHeader(\"Connection\")), \"upgrade\") &&\n\t\tstrings.EqualFold(c.requestHeader(\"Upgrade\"), \"websocket\") {\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (c *Context) requestHeader(key string) string {\n\treturn c.Request.Header.Get(key)\n}\n\n/************************************/\n/******** RESPONSE RENDERING ********/\n/************************************/\n\n// bodyAllowedForStatus is a copy of http.bodyAllowedForStatus non-exported function.\nfunc bodyAllowedForStatus(status int) bool {\n\tswitch {\n\tcase status >= 100 && status <= 199:\n\t\treturn false\n\tcase status == http.StatusNoContent:\n\t\treturn false\n\tcase status == http.StatusNotModified:\n\t\treturn false\n\t}\n\treturn true\n}\n\n// Status sets the HTTP response code.\nfunc (c *Context) Status(code int) {\n\tc.Writer.WriteHeader(code)\n}\n\n// Header is an intelligent shortcut for c.Writer.Header().Set(key, value).\n// It writes a header in the response.\n// If value == \"\", this method removes the header `c.Writer.Header().Del(key)`\nfunc (c *Context) Header(key, value string) {\n\tif value == \"\" {\n\t\tc.Writer.Header().Del(key)\n\t\treturn\n\t}\n\tc.Writer.Header().Set(key, value)\n}\n\n// GetHeader returns value from request headers.\nfunc (c *Context) GetHeader(key string) string {\n\treturn c.requestHeader(key)\n}\n\n// GetRawData returns stream data.\nfunc (c *Context) GetRawData() ([]byte, error) {\n\tif c.Request.Body == nil {\n\t\treturn nil, errors.New(\"cannot read nil body\")\n\t}\n\treturn io.ReadAll(c.Request.Body)\n}\n\n// SetSameSite with cookie\nfunc (c *Context) SetSameSite(samesite http.SameSite) {\n\tc.sameSite = samesite\n}\n\n// SetCookie adds a Set-Cookie header to the ResponseWriter's headers.\n// The provided cookie must have a valid Name. Invalid cookies may be\n// silently dropped.\nfunc (c *Context) SetCookie(name, value string, maxAge int, path, domain string, secure, httpOnly bool) {\n\tif path == \"\" {\n\t\tpath = \"/\"\n\t}\n\thttp.SetCookie(c.Writer, &http.Cookie{\n\t\tName:     name,\n\t\tValue:    url.QueryEscape(value),\n\t\tMaxAge:   maxAge,\n\t\tPath:     path,\n\t\tDomain:   domain,\n\t\tSameSite: c.sameSite,\n\t\tSecure:   secure,\n\t\tHttpOnly: httpOnly,\n\t})\n}\n\n// Cookie returns the named cookie provided in the request or\n// ErrNoCookie if not found. And return the named cookie is unescaped.\n// If multiple cookies match the given name, only one cookie will\n// be returned.\nfunc (c *Context) Cookie(name string) (string, error) {\n\tcookie, err := c.Request.Cookie(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tval, _ := url.QueryUnescape(cookie.Value)\n\treturn val, nil\n}\n\n// Render writes the response headers and calls render.Render to render data.\nfunc (c *Context) Render(code int, r render.Render) {\n\tc.Status(code)\n\n\tif !bodyAllowedForStatus(code) {\n\t\tr.WriteContentType(c.Writer)\n\t\tc.Writer.WriteHeaderNow()\n\t\treturn\n\t}\n\n\tif err := r.Render(c.Writer); err != nil {\n\t\t// Pushing error to c.Errors\n\t\t_ = c.Error(err)\n\t\tc.Abort()\n\t}\n}\n\n// HTML renders the HTTP template specified by its file name.\n// It also updates the HTTP code and sets the Content-Type as \"text/html\".\n// See http://golang.org/doc/articles/wiki/\nfunc (c *Context) HTML(code int, name string, obj any) {\n\tinstance := c.engine.HTMLRender.Instance(name, obj)\n\tc.Render(code, instance)\n}\n\n// IndentedJSON serializes the given struct as pretty JSON (indented + endlines) into the response body.\n// It also sets the Content-Type as \"application/json\".\n// WARNING: we recommend using this only for development purposes since printing pretty JSON is\n// more CPU and bandwidth consuming. Use Context.JSON() instead.\nfunc (c *Context) IndentedJSON(code int, obj any) {\n\tc.Render(code, render.IndentedJSON{Data: obj})\n}\n\n// SecureJSON serializes the given struct as Secure JSON into the response body.\n// Default prepends \"while(1),\" to response body if the given struct is array values.\n// It also sets the Content-Type as \"application/json\".\nfunc (c *Context) SecureJSON(code int, obj any) {\n\tc.Render(code, render.SecureJSON{Prefix: c.engine.secureJSONPrefix, Data: obj})\n}\n\n// JSONP serializes the given struct as JSON into the response body.\n// It adds padding to response body to request data from a server residing in a different domain than the client.\n// It also sets the Content-Type as \"application/javascript\".\nfunc (c *Context) JSONP(code int, obj any) {\n\tcallback := c.DefaultQuery(\"callback\", \"\")\n\tif callback == \"\" {\n\t\tc.Render(code, render.JSON{Data: obj})\n\t\treturn\n\t}\n\tc.Render(code, render.JsonpJSON{Callback: callback, Data: obj})\n}\n\n// JSON serializes the given struct as JSON into the response body.\n// It also sets the Content-Type as \"application/json\".\nfunc (c *Context) JSON(code int, obj any) {\n\tc.Render(code, render.JSON{Data: obj})\n}\n\n// AsciiJSON serializes the given struct as JSON into the response body with unicode to ASCII string.\n// It also sets the Content-Type as \"application/json\".\nfunc (c *Context) AsciiJSON(code int, obj any) {\n\tc.Render(code, render.AsciiJSON{Data: obj})\n}\n\n// PureJSON serializes the given struct as JSON into the response body.\n// PureJSON, unlike JSON, does not replace special html characters with their unicode entities.\nfunc (c *Context) PureJSON(code int, obj any) {\n\tc.Render(code, render.PureJSON{Data: obj})\n}\n\n// XML serializes the given struct as XML into the response body.\n// It also sets the Content-Type as \"application/xml\".\nfunc (c *Context) XML(code int, obj any) {\n\tc.Render(code, render.XML{Data: obj})\n}\n\n// String writes the given string into the response body.\nfunc (c *Context) String(code int, format string, values ...any) {\n\tc.Render(code, render.String{Format: format, Data: values})\n}\n\n// Redirect returns an HTTP redirect to the specific location.\nfunc (c *Context) Redirect(code int, location string) {\n\tc.Render(-1, render.Redirect{\n\t\tCode:     code,\n\t\tLocation: location,\n\t\tRequest:  c.Request,\n\t})\n}\n\n// Data writes some data into the body stream and updates the HTTP code.\nfunc (c *Context) Data(code int, contentType string, data []byte) {\n\tc.Render(code, render.Data{\n\t\tContentType: contentType,\n\t\tData:        data,\n\t})\n}\n\n// DataFromReader writes the specified reader into the body stream and updates the HTTP code.\nfunc (c *Context) DataFromReader(code int, contentLength int64, contentType string, reader io.Reader, extraHeaders map[string]string) {\n\tc.Render(code, render.Reader{\n\t\tHeaders:       extraHeaders,\n\t\tContentType:   contentType,\n\t\tContentLength: contentLength,\n\t\tReader:        reader,\n\t})\n}\n\n// File writes the specified file into the body stream in an efficient way.\nfunc (c *Context) File(filepath string) {\n\thttp.ServeFile(c.Writer, c.Request, filepath)\n}\n\n// FileFromFS writes the specified file from http.FileSystem into the body stream in an efficient way.\nfunc (c *Context) FileFromFS(filepath string, fs http.FileSystem) {\n\tdefer func(old string) {\n\t\tc.Request.URL.Path = old\n\t}(c.Request.URL.Path)\n\n\tc.Request.URL.Path = filepath\n\n\thttp.FileServer(fs).ServeHTTP(c.Writer, c.Request)\n}\n\nvar quoteEscaper = strings.NewReplacer(\"\\\\\", \"\\\\\\\\\", `\"`, \"\\\\\\\"\")\n\nfunc escapeQuotes(s string) string {\n\treturn quoteEscaper.Replace(s)\n}\n\n// FileAttachment writes the specified file into the body stream in an efficient way\n// On the client side, the file will typically be downloaded with the given filename\nfunc (c *Context) FileAttachment(filepath, filename string) {\n\tif isASCII(filename) {\n\t\tc.Writer.Header().Set(\"Content-Disposition\", `attachment; filename=\"`+escapeQuotes(filename)+`\"`)\n\t} else {\n\t\tc.Writer.Header().Set(\"Content-Disposition\", `attachment; filename*=UTF-8''`+url.QueryEscape(filename))\n\t}\n\thttp.ServeFile(c.Writer, c.Request, filepath)\n}\n\n// SSEvent writes a Server-Sent Event into the body stream.\nfunc (c *Context) SSEvent(name string, message any) {\n\tc.Render(-1, sse.Event{\n\t\tEvent: name,\n\t\tData:  message,\n\t})\n}\n\n// Stream sends a streaming response and returns a boolean\n// indicates \"Is client disconnected in middle of stream\"\nfunc (c *Context) Stream(step func(w io.Writer) bool) bool {\n\tw := c.Writer\n\n\tclientGone := w.CloseNotify()\n\tfor {\n\t\tselect {\n\t\tcase <-clientGone:\n\t\t\treturn true\n\t\tdefault:\n\t\t\tkeepOpen := step(w)\n\t\t\tw.Flush()\n\t\t\tif !keepOpen {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t}\n}\n\n/************************************/\n/******** CONTENT NEGOTIATION *******/\n/************************************/\n\n// Negotiate contains all negotiations data.\ntype Negotiate struct {\n\tOffered  []string\n\tHTMLName string\n\tHTMLData any\n\tJSONData any\n\tXMLData  any\n\tData     any\n}\n\n// Negotiate calls different Render according to acceptable Accept format.\nfunc (c *Context) Negotiate(code int, config Negotiate) {\n\tswitch c.NegotiateFormat(config.Offered...) {\n\tcase binding.MIMEJSON:\n\t\tdata := chooseData(config.JSONData, config.Data)\n\t\tc.JSON(code, data)\n\n\tcase binding.MIMEHTML:\n\t\tdata := chooseData(config.HTMLData, config.Data)\n\t\tc.HTML(code, config.HTMLName, data)\n\n\tcase binding.MIMEXML:\n\t\tdata := chooseData(config.XMLData, config.Data)\n\t\tc.XML(code, data)\n\n\tdefault:\n\t\tc.AbortWithError(http.StatusNotAcceptable, errors.New(\"the accepted formats are not offered by the server\")) //nolint: errcheck\n\t}\n}\n\n// NegotiateFormat returns an acceptable Accept format.\nfunc (c *Context) NegotiateFormat(offered ...string) string {\n\tassert1(len(offered) > 0, \"you must provide at least one offer\")\n\n\tif c.Accepted == nil {\n\t\tc.Accepted = parseAccept(c.requestHeader(\"Accept\"))\n\t}\n\tif len(c.Accepted) == 0 {\n\t\treturn offered[0]\n\t}\n\tfor _, accepted := range c.Accepted {\n\t\tfor _, offer := range offered {\n\t\t\t// According to RFC 2616 and RFC 2396, non-ASCII characters are not allowed in headers,\n\t\t\t// therefore we can just iterate over the string without casting it into []rune\n\t\t\ti := 0\n\t\t\tfor ; i < len(accepted) && i < len(offer); i++ {\n\t\t\t\tif accepted[i] == '*' || offer[i] == '*' {\n\t\t\t\t\treturn offer\n\t\t\t\t}\n\t\t\t\tif accepted[i] != offer[i] {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif i == len(accepted) {\n\t\t\t\treturn offer\n\t\t\t}\n\t\t}\n\t}\n\treturn \"\"\n}\n\n// SetAccepted sets Accept header data.\nfunc (c *Context) SetAccepted(formats ...string) {\n\tc.Accepted = formats\n}\n\n/************************************/\n/***** GOLANG.ORG/X/NET/CONTEXT *****/\n/************************************/\n\n// hasRequestContext returns whether c.Request has Context and fallback.\nfunc (c *Context) hasRequestContext() bool {\n\thasFallback := c.engine != nil && c.engine.ContextWithFallback\n\thasRequestContext := c.Request != nil && c.Request.Context() != nil\n\treturn hasFallback && hasRequestContext\n}\n\n// Deadline returns that there is no deadline (ok==false) when c.Request has no Context.\nfunc (c *Context) Deadline() (deadline time.Time, ok bool) {\n\tif !c.hasRequestContext() {\n\t\treturn\n\t}\n\treturn c.Request.Context().Deadline()\n}\n\n// Done returns nil (chan which will wait forever) when c.Request has no Context.\nfunc (c *Context) Done() <-chan struct{} {\n\tif !c.hasRequestContext() {\n\t\treturn nil\n\t}\n\treturn c.Request.Context().Done()\n}\n\n// Err returns nil when c.Request has no Context.\nfunc (c *Context) Err() error {\n\tif !c.hasRequestContext() {\n\t\treturn nil\n\t}\n\treturn c.Request.Context().Err()\n}\n\n// Value returns the value associated with this context for key, or nil\n// if no value is associated with key. Successive calls to Value with\n// the same key returns the same result.\nfunc (c *Context) Value(key any) any {\n\tif key == ContextRequestKey {\n\t\treturn c.Request\n\t}\n\tif key == ContextKey {\n\t\treturn c\n\t}\n\tif keyAsString, ok := key.(string); ok {\n\t\tif val, exists := c.Get(keyAsString); exists {\n\t\t\treturn val\n\t\t}\n\t}\n\tif !c.hasRequestContext() {\n\t\treturn nil\n\t}\n\treturn c.Request.Context().Value(key)\n}\n"
  },
  {
    "path": "gossh/gin/debug.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"fmt\"\n\t\"html/template\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nconst ginSupportMinGoVer = 18\n\n// IsDebugging returns true if the framework is running in debug mode.\n// Use SetMode(gin.ReleaseMode) to disable debug mode.\nfunc IsDebugging() bool {\n\treturn ginMode == debugCode\n}\n\n// DebugPrintRouteFunc indicates debug log output format.\nvar DebugPrintRouteFunc func(httpMethod, absolutePath, handlerName string, nuHandlers int)\n\n// DebugPrintFunc indicates debug log output format.\nvar DebugPrintFunc func(format string, values ...any)\n\nfunc debugPrintRoute(httpMethod, absolutePath string, handlers HandlersChain) {\n\tif IsDebugging() {\n\t\tnuHandlers := len(handlers)\n\t\thandlerName := nameOfFunction(handlers.Last())\n\t\tif DebugPrintRouteFunc == nil {\n\t\t\tdebugPrint(\"%-6s %-25s --> %s (%d handlers)\\n\", httpMethod, absolutePath, handlerName, nuHandlers)\n\t\t} else {\n\t\t\tDebugPrintRouteFunc(httpMethod, absolutePath, handlerName, nuHandlers)\n\t\t}\n\t}\n}\n\nfunc debugPrintLoadTemplate(tmpl *template.Template) {\n\tif IsDebugging() {\n\t\tvar buf strings.Builder\n\t\tfor _, tmpl := range tmpl.Templates() {\n\t\t\tbuf.WriteString(\"\\t- \")\n\t\t\tbuf.WriteString(tmpl.Name())\n\t\t\tbuf.WriteString(\"\\n\")\n\t\t}\n\t\tdebugPrint(\"Loaded HTML Templates (%d): \\n%s\\n\", len(tmpl.Templates()), buf.String())\n\t}\n}\n\nfunc debugPrint(format string, values ...any) {\n\tif !IsDebugging() {\n\t\treturn\n\t}\n\n\tif DebugPrintFunc != nil {\n\t\tDebugPrintFunc(format, values...)\n\t\treturn\n\t}\n\n\tif !strings.HasSuffix(format, \"\\n\") {\n\t\tformat += \"\\n\"\n\t}\n\tfmt.Fprintf(DefaultWriter, \"[GIN-debug] \"+format, values...)\n}\n\nfunc getMinVer(v string) (uint64, error) {\n\tfirst := strings.IndexByte(v, '.')\n\tlast := strings.LastIndexByte(v, '.')\n\tif first == last {\n\t\treturn strconv.ParseUint(v[first+1:], 10, 64)\n\t}\n\treturn strconv.ParseUint(v[first+1:last], 10, 64)\n}\n\nfunc debugPrintWARNINGDefault() {\n\tif v, e := getMinVer(runtime.Version()); e == nil && v < ginSupportMinGoVer {\n\t\tdebugPrint(`[WARNING] Now Gin requires Go 1.18+.\n\n`)\n\t}\n\tdebugPrint(`[WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.\n\n`)\n}\n\nfunc debugPrintWARNINGNew() {\n\tdebugPrint(`[WARNING] Running in \"debug\" mode. Switch to \"release\" mode in production.\n - using env:\texport GIN_MODE=release\n - using code:\tgin.SetMode(gin.ReleaseMode)\n\n`)\n}\n\nfunc debugPrintWARNINGSetHTMLTemplate() {\n\tdebugPrint(`[WARNING] Since SetHTMLTemplate() is NOT thread-safe. It should only be called\nat initialization. ie. before any route is registered or the router is listening in a socket:\n\n\trouter := gin.Default()\n\trouter.SetHTMLTemplate(template) // << good place\n\n`)\n}\n\nfunc debugPrintError(err error) {\n\tif err != nil && IsDebugging() {\n\t\tfmt.Fprintf(DefaultErrorWriter, \"[GIN-debug] [ERROR] %v\\n\", err)\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/errors.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gin/internal/json\"\n)\n\n// ErrorType is an unsigned 64-bit error code as defined in the gin spec.\ntype ErrorType uint64\n\nconst (\n\t// ErrorTypeBind is used when Context.Bind() fails.\n\tErrorTypeBind ErrorType = 1 << 63\n\t// ErrorTypeRender is used when Context.Render() fails.\n\tErrorTypeRender ErrorType = 1 << 62\n\t// ErrorTypePrivate indicates a private error.\n\tErrorTypePrivate ErrorType = 1 << 0\n\t// ErrorTypePublic indicates a public error.\n\tErrorTypePublic ErrorType = 1 << 1\n\t// ErrorTypeAny indicates any other error.\n\tErrorTypeAny ErrorType = 1<<64 - 1\n\t// ErrorTypeNu indicates any other error.\n\tErrorTypeNu = 2\n)\n\n// Error represents a error's specification.\ntype Error struct {\n\tErr  error\n\tType ErrorType\n\tMeta any\n}\n\ntype errorMsgs []*Error\n\nvar _ error = (*Error)(nil)\n\n// SetType sets the error's type.\nfunc (msg *Error) SetType(flags ErrorType) *Error {\n\tmsg.Type = flags\n\treturn msg\n}\n\n// SetMeta sets the error's meta data.\nfunc (msg *Error) SetMeta(data any) *Error {\n\tmsg.Meta = data\n\treturn msg\n}\n\n// JSON creates a properly formatted JSON\nfunc (msg *Error) JSON() any {\n\tjsonData := H{}\n\tif msg.Meta != nil {\n\t\tvalue := reflect.ValueOf(msg.Meta)\n\t\tswitch value.Kind() {\n\t\tcase reflect.Struct:\n\t\t\treturn msg.Meta\n\t\tcase reflect.Map:\n\t\t\tfor _, key := range value.MapKeys() {\n\t\t\t\tjsonData[key.String()] = value.MapIndex(key).Interface()\n\t\t\t}\n\t\tdefault:\n\t\t\tjsonData[\"meta\"] = msg.Meta\n\t\t}\n\t}\n\tif _, ok := jsonData[\"error\"]; !ok {\n\t\tjsonData[\"error\"] = msg.Error()\n\t}\n\treturn jsonData\n}\n\n// MarshalJSON implements the json.Marshaller interface.\nfunc (msg *Error) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(msg.JSON())\n}\n\n// Error implements the error interface.\nfunc (msg Error) Error() string {\n\treturn msg.Err.Error()\n}\n\n// IsType judges one error.\nfunc (msg *Error) IsType(flags ErrorType) bool {\n\treturn (msg.Type & flags) > 0\n}\n\n// Unwrap returns the wrapped error, to allow interoperability with errors.Is(), errors.As() and errors.Unwrap()\nfunc (msg *Error) Unwrap() error {\n\treturn msg.Err\n}\n\n// ByType returns a readonly copy filtered the byte.\n// ie ByType(gin.ErrorTypePublic) returns a slice of errors with type=ErrorTypePublic.\nfunc (a errorMsgs) ByType(typ ErrorType) errorMsgs {\n\tif len(a) == 0 {\n\t\treturn nil\n\t}\n\tif typ == ErrorTypeAny {\n\t\treturn a\n\t}\n\tvar result errorMsgs\n\tfor _, msg := range a {\n\t\tif msg.IsType(typ) {\n\t\t\tresult = append(result, msg)\n\t\t}\n\t}\n\treturn result\n}\n\n// Last returns the last error in the slice. It returns nil if the array is empty.\n// Shortcut for errors[len(errors)-1].\nfunc (a errorMsgs) Last() *Error {\n\tif length := len(a); length > 0 {\n\t\treturn a[length-1]\n\t}\n\treturn nil\n}\n\n// Errors returns an array with all the error messages.\n// Example:\n//\n//\tc.Error(errors.New(\"first\"))\n//\tc.Error(errors.New(\"second\"))\n//\tc.Error(errors.New(\"third\"))\n//\tc.Errors.Errors() // == []string{\"first\", \"second\", \"third\"}\nfunc (a errorMsgs) Errors() []string {\n\tif len(a) == 0 {\n\t\treturn nil\n\t}\n\terrorStrings := make([]string, len(a))\n\tfor i, err := range a {\n\t\terrorStrings[i] = err.Error()\n\t}\n\treturn errorStrings\n}\n\nfunc (a errorMsgs) JSON() any {\n\tswitch length := len(a); length {\n\tcase 0:\n\t\treturn nil\n\tcase 1:\n\t\treturn a.Last().JSON()\n\tdefault:\n\t\tjsonData := make([]any, length)\n\t\tfor i, err := range a {\n\t\t\tjsonData[i] = err.JSON()\n\t\t}\n\t\treturn jsonData\n\t}\n}\n\n// MarshalJSON implements the json.Marshaller interface.\nfunc (a errorMsgs) MarshalJSON() ([]byte, error) {\n\treturn json.Marshal(a.JSON())\n}\n\nfunc (a errorMsgs) String() string {\n\tif len(a) == 0 {\n\t\treturn \"\"\n\t}\n\tvar buffer strings.Builder\n\tfor i, msg := range a {\n\t\tfmt.Fprintf(&buffer, \"Error #%02d: %s\\n\", i+1, msg.Err)\n\t\tif msg.Meta != nil {\n\t\t\tfmt.Fprintf(&buffer, \"     Meta: %v\\n\", msg.Meta)\n\t\t}\n\t}\n\treturn buffer.String()\n}\n"
  },
  {
    "path": "gossh/gin/fs.go",
    "content": "// Copyright 2017 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"net/http\"\n\t\"os\"\n)\n\ntype onlyFilesFS struct {\n\tfs http.FileSystem\n}\n\ntype neuteredReaddirFile struct {\n\thttp.File\n}\n\n// Dir returns a http.FileSystem that can be used by http.FileServer(). It is used internally\n// in router.Static().\n// if listDirectory == true, then it works the same as http.Dir() otherwise it returns\n// a filesystem that prevents http.FileServer() to list the directory files.\nfunc Dir(root string, listDirectory bool) http.FileSystem {\n\tfs := http.Dir(root)\n\tif listDirectory {\n\t\treturn fs\n\t}\n\treturn &onlyFilesFS{fs}\n}\n\n// Open conforms to http.Filesystem.\nfunc (fs onlyFilesFS) Open(name string) (http.File, error) {\n\tf, err := fs.fs.Open(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn neuteredReaddirFile{f}, nil\n}\n\n// Readdir overrides the http.File default implementation.\nfunc (f neuteredReaddirFile) Readdir(_ int) ([]os.FileInfo, error) {\n\t// this disables directory listing\n\treturn nil, nil\n}\n"
  },
  {
    "path": "gossh/gin/gin.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"fmt\"\n\t\"html/template\"\n\t\"net\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gossh/gin/internal/bytesconv\"\n\t\"gossh/gin/render\"\n)\n\nconst defaultMultipartMemory = 32 << 20 // 32 MB\n\nvar (\n\tdefault404Body = []byte(\"404 page not found\")\n\tdefault405Body = []byte(\"405 method not allowed\")\n)\n\nvar defaultPlatform string\n\nvar defaultTrustedCIDRs = []*net.IPNet{\n\t{ // 0.0.0.0/0 (IPv4)\n\t\tIP:   net.IP{0x0, 0x0, 0x0, 0x0},\n\t\tMask: net.IPMask{0x0, 0x0, 0x0, 0x0},\n\t},\n\t{ // ::/0 (IPv6)\n\t\tIP:   net.IP{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},\n\t\tMask: net.IPMask{0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0},\n\t},\n}\n\nvar regSafePrefix = regexp.MustCompile(\"[^a-zA-Z0-9/-]+\")\nvar regRemoveRepeatedChar = regexp.MustCompile(\"/{2,}\")\n\n// HandlerFunc defines the handler used by gin middleware as return value.\ntype HandlerFunc func(*Context)\n\n// OptionFunc defines the function to change the default configuration\ntype OptionFunc func(*Engine)\n\n// HandlersChain defines a HandlerFunc slice.\ntype HandlersChain []HandlerFunc\n\n// Last returns the last handler in the chain. i.e. the last handler is the main one.\nfunc (c HandlersChain) Last() HandlerFunc {\n\tif length := len(c); length > 0 {\n\t\treturn c[length-1]\n\t}\n\treturn nil\n}\n\n// RouteInfo represents a request route's specification which contains method and path and its handler.\ntype RouteInfo struct {\n\tMethod      string\n\tPath        string\n\tHandler     string\n\tHandlerFunc HandlerFunc\n}\n\n// RoutesInfo defines a RouteInfo slice.\ntype RoutesInfo []RouteInfo\n\n// Engine is the framework's instance, it contains the muxer, middleware and configuration settings.\n// Create an instance of Engine, by using New() or Default()\ntype Engine struct {\n\tRouterGroup\n\n\t// RedirectTrailingSlash enables automatic redirection if the current route can't be matched but a\n\t// handler for the path with (without) the trailing slash exists.\n\t// For example if /foo/ is requested but a route only exists for /foo, the\n\t// client is redirected to /foo with http status code 301 for GET requests\n\t// and 307 for all other request methods.\n\tRedirectTrailingSlash bool\n\n\t// RedirectFixedPath if enabled, the router tries to fix the current request path, if no\n\t// handle is registered for it.\n\t// First superfluous path elements like ../ or // are removed.\n\t// Afterwards the router does a case-insensitive lookup of the cleaned path.\n\t// If a handle can be found for this route, the router makes a redirection\n\t// to the corrected path with status code 301 for GET requests and 307 for\n\t// all other request methods.\n\t// For example /FOO and /..//Foo could be redirected to /foo.\n\t// RedirectTrailingSlash is independent of this option.\n\tRedirectFixedPath bool\n\n\t// HandleMethodNotAllowed if enabled, the router checks if another method is allowed for the\n\t// current route, if the current request can not be routed.\n\t// If this is the case, the request is answered with 'Method Not Allowed'\n\t// and HTTP status code 405.\n\t// If no other Method is allowed, the request is delegated to the NotFound\n\t// handler.\n\tHandleMethodNotAllowed bool\n\n\t// ForwardedByClientIP if enabled, client IP will be parsed from the request's headers that\n\t// match those stored at `(*gin.Engine).RemoteIPHeaders`. If no IP was\n\t// fetched, it falls back to the IP obtained from\n\t// `(*gin.Context).Request.RemoteAddr`.\n\tForwardedByClientIP bool\n\n\t// UseRawPath if enabled, the url.RawPath will be used to find parameters.\n\tUseRawPath bool\n\n\t// UnescapePathValues if true, the path value will be unescaped.\n\t// If UseRawPath is false (by default), the UnescapePathValues effectively is true,\n\t// as url.Path gonna be used, which is already unescaped.\n\tUnescapePathValues bool\n\n\t// RemoveExtraSlash a parameter can be parsed from the URL even with extra slashes.\n\t// See the PR #1817 and issue #1644\n\tRemoveExtraSlash bool\n\n\t// RemoteIPHeaders list of headers used to obtain the client IP when\n\t// `(*gin.Engine).ForwardedByClientIP` is `true` and\n\t// `(*gin.Context).Request.RemoteAddr` is matched by at least one of the\n\t// network origins of list defined by `(*gin.Engine).SetTrustedProxies()`.\n\tRemoteIPHeaders []string\n\n\t// TrustedPlatform if set to a constant of value gin.Platform*, trusts the headers set by\n\t// that platform, for example to determine the client IP\n\tTrustedPlatform string\n\n\t// MaxMultipartMemory value of 'maxMemory' param that is given to http.Request's ParseMultipartForm\n\t// method call.\n\tMaxMultipartMemory int64\n\n\t// ContextWithFallback enable fallback Context.Deadline(), Context.Done(), Context.Err() and Context.Value() when Context.Request.Context() is not nil.\n\tContextWithFallback bool\n\n\tdelims           render.Delims\n\tsecureJSONPrefix string\n\tHTMLRender       render.HTMLRender\n\tFuncMap          template.FuncMap\n\tallNoRoute       HandlersChain\n\tallNoMethod      HandlersChain\n\tnoRoute          HandlersChain\n\tnoMethod         HandlersChain\n\tpool             sync.Pool\n\ttrees            methodTrees\n\tmaxParams        uint16\n\tmaxSections      uint16\n\ttrustedProxies   []string\n\ttrustedCIDRs     []*net.IPNet\n}\n\nvar _ IRouter = (*Engine)(nil)\n\n// New returns a new blank Engine instance without any middleware attached.\n// By default, the configuration is:\n// - RedirectTrailingSlash:  true\n// - RedirectFixedPath:      false\n// - HandleMethodNotAllowed: false\n// - ForwardedByClientIP:    true\n// - UseRawPath:             false\n// - UnescapePathValues:     true\nfunc New(opts ...OptionFunc) *Engine {\n\tdebugPrintWARNINGNew()\n\tengine := &Engine{\n\t\tRouterGroup: RouterGroup{\n\t\t\tHandlers: nil,\n\t\t\tbasePath: \"/\",\n\t\t\troot:     true,\n\t\t},\n\t\tFuncMap:                template.FuncMap{},\n\t\tRedirectTrailingSlash:  true,\n\t\tRedirectFixedPath:      false,\n\t\tHandleMethodNotAllowed: false,\n\t\tForwardedByClientIP:    true,\n\t\tRemoteIPHeaders:        []string{\"X-Forwarded-For\", \"X-Real-IP\"},\n\t\tTrustedPlatform:        defaultPlatform,\n\t\tUseRawPath:             false,\n\t\tRemoveExtraSlash:       false,\n\t\tUnescapePathValues:     true,\n\t\tMaxMultipartMemory:     defaultMultipartMemory,\n\t\ttrees:                  make(methodTrees, 0, 9),\n\t\tdelims:                 render.Delims{Left: \"{{\", Right: \"}}\"},\n\t\tsecureJSONPrefix:       \"while(1);\",\n\t\ttrustedProxies:         []string{\"0.0.0.0/0\", \"::/0\"},\n\t\ttrustedCIDRs:           defaultTrustedCIDRs,\n\t}\n\tengine.RouterGroup.engine = engine\n\tengine.pool.New = func() any {\n\t\treturn engine.allocateContext(engine.maxParams)\n\t}\n\treturn engine.With(opts...)\n}\n\n// Default returns an Engine instance with the Logger and Recovery middleware already attached.\nfunc Default(opts ...OptionFunc) *Engine {\n\tdebugPrintWARNINGDefault()\n\tengine := New()\n\tengine.Use(Logger(), Recovery())\n\treturn engine.With(opts...)\n}\n\nfunc (engine *Engine) Handler() http.Handler {\n\treturn engine\n}\n\nfunc (engine *Engine) allocateContext(maxParams uint16) *Context {\n\tv := make(Params, 0, maxParams)\n\tskippedNodes := make([]skippedNode, 0, engine.maxSections)\n\treturn &Context{engine: engine, params: &v, skippedNodes: &skippedNodes}\n}\n\n// Delims sets template left and right delims and returns an Engine instance.\nfunc (engine *Engine) Delims(left, right string) *Engine {\n\tengine.delims = render.Delims{Left: left, Right: right}\n\treturn engine\n}\n\n// SecureJsonPrefix sets the secureJSONPrefix used in Context.SecureJSON.\nfunc (engine *Engine) SecureJsonPrefix(prefix string) *Engine {\n\tengine.secureJSONPrefix = prefix\n\treturn engine\n}\n\n// LoadHTMLGlob loads HTML files identified by glob pattern\n// and associates the result with HTML renderer.\nfunc (engine *Engine) LoadHTMLGlob(pattern string) {\n\tleft := engine.delims.Left\n\tright := engine.delims.Right\n\ttempl := template.Must(template.New(\"\").Delims(left, right).Funcs(engine.FuncMap).ParseGlob(pattern))\n\n\tif IsDebugging() {\n\t\tdebugPrintLoadTemplate(templ)\n\t\tengine.HTMLRender = render.HTMLDebug{Glob: pattern, FuncMap: engine.FuncMap, Delims: engine.delims}\n\t\treturn\n\t}\n\n\tengine.SetHTMLTemplate(templ)\n}\n\n// LoadHTMLFiles loads a slice of HTML files\n// and associates the result with HTML renderer.\nfunc (engine *Engine) LoadHTMLFiles(files ...string) {\n\tif IsDebugging() {\n\t\tengine.HTMLRender = render.HTMLDebug{Files: files, FuncMap: engine.FuncMap, Delims: engine.delims}\n\t\treturn\n\t}\n\n\ttempl := template.Must(template.New(\"\").Delims(engine.delims.Left, engine.delims.Right).Funcs(engine.FuncMap).ParseFiles(files...))\n\tengine.SetHTMLTemplate(templ)\n}\n\n// SetHTMLTemplate associate a template with HTML renderer.\nfunc (engine *Engine) SetHTMLTemplate(templ *template.Template) {\n\tif len(engine.trees) > 0 {\n\t\tdebugPrintWARNINGSetHTMLTemplate()\n\t}\n\n\tengine.HTMLRender = render.HTMLProduction{Template: templ.Funcs(engine.FuncMap)}\n}\n\n// SetFuncMap sets the FuncMap used for template.FuncMap.\nfunc (engine *Engine) SetFuncMap(funcMap template.FuncMap) {\n\tengine.FuncMap = funcMap\n}\n\n// NoRoute adds handlers for NoRoute. It returns a 404 code by default.\nfunc (engine *Engine) NoRoute(handlers ...HandlerFunc) {\n\tengine.noRoute = handlers\n\tengine.rebuild404Handlers()\n}\n\n// NoMethod sets the handlers called when Engine.HandleMethodNotAllowed = true.\nfunc (engine *Engine) NoMethod(handlers ...HandlerFunc) {\n\tengine.noMethod = handlers\n\tengine.rebuild405Handlers()\n}\n\n// Use attaches a global middleware to the router. i.e. the middleware attached through Use() will be\n// included in the handlers chain for every single request. Even 404, 405, static files...\n// For example, this is the right place for a logger or error management middleware.\nfunc (engine *Engine) Use(middleware ...HandlerFunc) IRoutes {\n\tengine.RouterGroup.Use(middleware...)\n\tengine.rebuild404Handlers()\n\tengine.rebuild405Handlers()\n\treturn engine\n}\n\n// With returns a new Engine instance with the provided options.\nfunc (engine *Engine) With(opts ...OptionFunc) *Engine {\n\tfor _, opt := range opts {\n\t\topt(engine)\n\t}\n\n\treturn engine\n}\n\nfunc (engine *Engine) rebuild404Handlers() {\n\tengine.allNoRoute = engine.combineHandlers(engine.noRoute)\n}\n\nfunc (engine *Engine) rebuild405Handlers() {\n\tengine.allNoMethod = engine.combineHandlers(engine.noMethod)\n}\n\nfunc (engine *Engine) addRoute(method, path string, handlers HandlersChain) {\n\tassert1(path[0] == '/', \"path must begin with '/'\")\n\tassert1(method != \"\", \"HTTP method can not be empty\")\n\tassert1(len(handlers) > 0, \"there must be at least one handler\")\n\n\tdebugPrintRoute(method, path, handlers)\n\n\troot := engine.trees.get(method)\n\tif root == nil {\n\t\troot = new(node)\n\t\troot.fullPath = \"/\"\n\t\tengine.trees = append(engine.trees, methodTree{method: method, root: root})\n\t}\n\troot.addRoute(path, handlers)\n\n\tif paramsCount := countParams(path); paramsCount > engine.maxParams {\n\t\tengine.maxParams = paramsCount\n\t}\n\n\tif sectionsCount := countSections(path); sectionsCount > engine.maxSections {\n\t\tengine.maxSections = sectionsCount\n\t}\n}\n\n// Routes returns a slice of registered routes, including some useful information, such as:\n// the http method, path and the handler name.\nfunc (engine *Engine) Routes() (routes RoutesInfo) {\n\tfor _, tree := range engine.trees {\n\t\troutes = iterate(\"\", tree.method, routes, tree.root)\n\t}\n\treturn routes\n}\n\nfunc iterate(path, method string, routes RoutesInfo, root *node) RoutesInfo {\n\tpath += root.path\n\tif len(root.handlers) > 0 {\n\t\thandlerFunc := root.handlers.Last()\n\t\troutes = append(routes, RouteInfo{\n\t\t\tMethod:      method,\n\t\t\tPath:        path,\n\t\t\tHandler:     nameOfFunction(handlerFunc),\n\t\t\tHandlerFunc: handlerFunc,\n\t\t})\n\t}\n\tfor _, child := range root.children {\n\t\troutes = iterate(path, method, routes, child)\n\t}\n\treturn routes\n}\n\n// Run attaches the router to a http.Server and starts listening and serving HTTP requests.\n// It is a shortcut for http.ListenAndServe(addr, router)\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc (engine *Engine) Run(addr ...string) (err error) {\n\tdefer func() { debugPrintError(err) }()\n\n\tif engine.isUnsafeTrustedProxies() {\n\t\tdebugPrint(\"[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\\n\" +\n\t\t\t\"Please check https://pkg.go.dev/gossh/gin#readme-don-t-trust-all-proxies for details.\")\n\t}\n\n\taddress := resolveAddress(addr)\n\tdebugPrint(\"Listening and serving HTTP on %s\\n\", address)\n\terr = http.ListenAndServe(address, engine.Handler())\n\treturn\n}\n\nfunc (engine *Engine) prepareTrustedCIDRs() ([]*net.IPNet, error) {\n\tif engine.trustedProxies == nil {\n\t\treturn nil, nil\n\t}\n\n\tcidr := make([]*net.IPNet, 0, len(engine.trustedProxies))\n\tfor _, trustedProxy := range engine.trustedProxies {\n\t\tif !strings.Contains(trustedProxy, \"/\") {\n\t\t\tip := parseIP(trustedProxy)\n\t\t\tif ip == nil {\n\t\t\t\treturn cidr, &net.ParseError{Type: \"IP address\", Text: trustedProxy}\n\t\t\t}\n\n\t\t\tswitch len(ip) {\n\t\t\tcase net.IPv4len:\n\t\t\t\ttrustedProxy += \"/32\"\n\t\t\tcase net.IPv6len:\n\t\t\t\ttrustedProxy += \"/128\"\n\t\t\t}\n\t\t}\n\t\t_, cidrNet, err := net.ParseCIDR(trustedProxy)\n\t\tif err != nil {\n\t\t\treturn cidr, err\n\t\t}\n\t\tcidr = append(cidr, cidrNet)\n\t}\n\treturn cidr, nil\n}\n\n// SetTrustedProxies set a list of network origins (IPv4 addresses,\n// IPv4 CIDRs, IPv6 addresses or IPv6 CIDRs) from which to trust\n// request's headers that contain alternative client IP when\n// `(*gin.Engine).ForwardedByClientIP` is `true`. `TrustedProxies`\n// feature is enabled by default, and it also trusts all proxies\n// by default. If you want to disable this feature, use\n// Engine.SetTrustedProxies(nil), then Context.ClientIP() will\n// return the remote address directly.\nfunc (engine *Engine) SetTrustedProxies(trustedProxies []string) error {\n\tengine.trustedProxies = trustedProxies\n\treturn engine.parseTrustedProxies()\n}\n\n// isUnsafeTrustedProxies checks if Engine.trustedCIDRs contains all IPs, it's not safe if it has (returns true)\nfunc (engine *Engine) isUnsafeTrustedProxies() bool {\n\treturn engine.isTrustedProxy(net.ParseIP(\"0.0.0.0\")) || engine.isTrustedProxy(net.ParseIP(\"::\"))\n}\n\n// parseTrustedProxies parse Engine.trustedProxies to Engine.trustedCIDRs\nfunc (engine *Engine) parseTrustedProxies() error {\n\ttrustedCIDRs, err := engine.prepareTrustedCIDRs()\n\tengine.trustedCIDRs = trustedCIDRs\n\treturn err\n}\n\n// isTrustedProxy will check whether the IP address is included in the trusted list according to Engine.trustedCIDRs\nfunc (engine *Engine) isTrustedProxy(ip net.IP) bool {\n\tif engine.trustedCIDRs == nil {\n\t\treturn false\n\t}\n\tfor _, cidr := range engine.trustedCIDRs {\n\t\tif cidr.Contains(ip) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// validateHeader will parse X-Forwarded-For header and return the trusted client IP address\nfunc (engine *Engine) validateHeader(header string) (clientIP string, valid bool) {\n\tif header == \"\" {\n\t\treturn \"\", false\n\t}\n\titems := strings.Split(header, \",\")\n\tfor i := len(items) - 1; i >= 0; i-- {\n\t\tipStr := strings.TrimSpace(items[i])\n\t\tip := net.ParseIP(ipStr)\n\t\tif ip == nil {\n\t\t\tbreak\n\t\t}\n\n\t\t// X-Forwarded-For is appended by proxy\n\t\t// Check IPs in reverse order and stop when find untrusted proxy\n\t\tif (i == 0) || (!engine.isTrustedProxy(ip)) {\n\t\t\treturn ipStr, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// parseIP parse a string representation of an IP and returns a net.IP with the\n// minimum byte representation or nil if input is invalid.\nfunc parseIP(ip string) net.IP {\n\tparsedIP := net.ParseIP(ip)\n\n\tif ipv4 := parsedIP.To4(); ipv4 != nil {\n\t\t// return ip in a 4-byte representation\n\t\treturn ipv4\n\t}\n\n\t// return ip in a 16-byte representation or nil\n\treturn parsedIP\n}\n\n// RunTLS attaches the router to a http.Server and starts listening and serving HTTPS (secure) requests.\n// It is a shortcut for http.ListenAndServeTLS(addr, certFile, keyFile, router)\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc (engine *Engine) RunTLS(addr, certFile, keyFile string) (err error) {\n\tdebugPrint(\"Listening and serving HTTPS on %s\\n\", addr)\n\tdefer func() { debugPrintError(err) }()\n\n\tif engine.isUnsafeTrustedProxies() {\n\t\tdebugPrint(\"[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\\n\" +\n\t\t\t\"Please check https://pkg.go.dev/gossh/gin#readme-don-t-trust-all-proxies for details.\")\n\t}\n\n\terr = http.ListenAndServeTLS(addr, certFile, keyFile, engine.Handler())\n\treturn\n}\n\n// RunUnix attaches the router to a http.Server and starts listening and serving HTTP requests\n// through the specified unix socket (i.e. a file).\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc (engine *Engine) RunUnix(file string) (err error) {\n\tdebugPrint(\"Listening and serving HTTP on unix:/%s\", file)\n\tdefer func() { debugPrintError(err) }()\n\n\tif engine.isUnsafeTrustedProxies() {\n\t\tdebugPrint(\"[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\\n\" +\n\t\t\t\"Please check https://gossh/gin/blob/master/docs/doc.md#dont-trust-all-proxies for details.\")\n\t}\n\n\tlistener, err := net.Listen(\"unix\", file)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer listener.Close()\n\tdefer os.Remove(file)\n\n\terr = http.Serve(listener, engine.Handler())\n\treturn\n}\n\n// RunFd attaches the router to a http.Server and starts listening and serving HTTP requests\n// through the specified file descriptor.\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc (engine *Engine) RunFd(fd int) (err error) {\n\tdebugPrint(\"Listening and serving HTTP on fd@%d\", fd)\n\tdefer func() { debugPrintError(err) }()\n\n\tif engine.isUnsafeTrustedProxies() {\n\t\tdebugPrint(\"[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\\n\" +\n\t\t\t\"Please check https://gossh/gin/blob/master/docs/doc.md#dont-trust-all-proxies for details.\")\n\t}\n\n\tf := os.NewFile(uintptr(fd), fmt.Sprintf(\"fd@%d\", fd))\n\tlistener, err := net.FileListener(f)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer listener.Close()\n\terr = engine.RunListener(listener)\n\treturn\n}\n\n// RunListener attaches the router to a http.Server and starts listening and serving HTTP requests\n// through the specified net.Listener\nfunc (engine *Engine) RunListener(listener net.Listener) (err error) {\n\tdebugPrint(\"Listening and serving HTTP on listener what's bind with address@%s\", listener.Addr())\n\tdefer func() { debugPrintError(err) }()\n\n\tif engine.isUnsafeTrustedProxies() {\n\t\tdebugPrint(\"[WARNING] You trusted all proxies, this is NOT safe. We recommend you to set a value.\\n\" +\n\t\t\t\"Please check https://gossh/gin/blob/master/docs/doc.md#dont-trust-all-proxies for details.\")\n\t}\n\n\terr = http.Serve(listener, engine.Handler())\n\treturn\n}\n\n// ServeHTTP conforms to the http.Handler interface.\nfunc (engine *Engine) ServeHTTP(w http.ResponseWriter, req *http.Request) {\n\tc := engine.pool.Get().(*Context)\n\tc.writermem.reset(w)\n\tc.Request = req\n\tc.reset()\n\n\tengine.handleHTTPRequest(c)\n\n\tengine.pool.Put(c)\n}\n\n// HandleContext re-enters a context that has been rewritten.\n// This can be done by setting c.Request.URL.Path to your new target.\n// Disclaimer: You can loop yourself to deal with this, use wisely.\nfunc (engine *Engine) HandleContext(c *Context) {\n\toldIndexValue := c.index\n\tc.reset()\n\tengine.handleHTTPRequest(c)\n\n\tc.index = oldIndexValue\n}\n\nfunc (engine *Engine) handleHTTPRequest(c *Context) {\n\thttpMethod := c.Request.Method\n\trPath := c.Request.URL.Path\n\tunescape := false\n\tif engine.UseRawPath && len(c.Request.URL.RawPath) > 0 {\n\t\trPath = c.Request.URL.RawPath\n\t\tunescape = engine.UnescapePathValues\n\t}\n\n\tif engine.RemoveExtraSlash {\n\t\trPath = cleanPath(rPath)\n\t}\n\n\t// Find root of the tree for the given HTTP method\n\tt := engine.trees\n\tfor i, tl := 0, len(t); i < tl; i++ {\n\t\tif t[i].method != httpMethod {\n\t\t\tcontinue\n\t\t}\n\t\troot := t[i].root\n\t\t// Find route in tree\n\t\tvalue := root.getValue(rPath, c.params, c.skippedNodes, unescape)\n\t\tif value.params != nil {\n\t\t\tc.Params = *value.params\n\t\t}\n\t\tif value.handlers != nil {\n\t\t\tc.handlers = value.handlers\n\t\t\tc.fullPath = value.fullPath\n\t\t\tc.Next()\n\t\t\tc.writermem.WriteHeaderNow()\n\t\t\treturn\n\t\t}\n\t\tif httpMethod != http.MethodConnect && rPath != \"/\" {\n\t\t\tif value.tsr && engine.RedirectTrailingSlash {\n\t\t\t\tredirectTrailingSlash(c)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tif engine.RedirectFixedPath && redirectFixedPath(c, root, engine.RedirectFixedPath) {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tbreak\n\t}\n\n\tif engine.HandleMethodNotAllowed {\n\t\t// According to RFC 7231 section 6.5.5, MUST generate an Allow header field in response\n\t\t// containing a list of the target resource's currently supported methods.\n\t\tallowed := make([]string, 0, len(t)-1)\n\t\tfor _, tree := range engine.trees {\n\t\t\tif tree.method == httpMethod {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif value := tree.root.getValue(rPath, nil, c.skippedNodes, unescape); value.handlers != nil {\n\t\t\t\tallowed = append(allowed, tree.method)\n\t\t\t}\n\t\t}\n\t\tif len(allowed) > 0 {\n\t\t\tc.handlers = engine.allNoMethod\n\t\t\tc.writermem.Header().Set(\"Allow\", strings.Join(allowed, \", \"))\n\t\t\tserveError(c, http.StatusMethodNotAllowed, default405Body)\n\t\t\treturn\n\t\t}\n\t}\n\n\tc.handlers = engine.allNoRoute\n\tserveError(c, http.StatusNotFound, default404Body)\n}\n\nvar mimePlain = []string{MIMEPlain}\n\nfunc serveError(c *Context, code int, defaultMessage []byte) {\n\tc.writermem.status = code\n\tc.Next()\n\tif c.writermem.Written() {\n\t\treturn\n\t}\n\tif c.writermem.Status() == code {\n\t\tc.writermem.Header()[\"Content-Type\"] = mimePlain\n\t\t_, err := c.Writer.Write(defaultMessage)\n\t\tif err != nil {\n\t\t\tdebugPrint(\"cannot write message to writer during serve error: %v\", err)\n\t\t}\n\t\treturn\n\t}\n\tc.writermem.WriteHeaderNow()\n}\n\nfunc redirectTrailingSlash(c *Context) {\n\treq := c.Request\n\tp := req.URL.Path\n\tif prefix := path.Clean(c.Request.Header.Get(\"X-Forwarded-Prefix\")); prefix != \".\" {\n\t\tprefix = regSafePrefix.ReplaceAllString(prefix, \"\")\n\t\tprefix = regRemoveRepeatedChar.ReplaceAllString(prefix, \"/\")\n\n\t\tp = prefix + \"/\" + req.URL.Path\n\t}\n\treq.URL.Path = p + \"/\"\n\tif length := len(p); length > 1 && p[length-1] == '/' {\n\t\treq.URL.Path = p[:length-1]\n\t}\n\tredirectRequest(c)\n}\n\nfunc redirectFixedPath(c *Context, root *node, trailingSlash bool) bool {\n\treq := c.Request\n\trPath := req.URL.Path\n\n\tif fixedPath, ok := root.findCaseInsensitivePath(cleanPath(rPath), trailingSlash); ok {\n\t\treq.URL.Path = bytesconv.BytesToString(fixedPath)\n\t\tredirectRequest(c)\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc redirectRequest(c *Context) {\n\treq := c.Request\n\trPath := req.URL.Path\n\trURL := req.URL.String()\n\n\tcode := http.StatusMovedPermanently // Permanent redirect, request with GET method\n\tif req.Method != http.MethodGet {\n\t\tcode = http.StatusTemporaryRedirect\n\t}\n\tdebugPrint(\"redirecting request %d: %s --> %s\", code, rPath, rURL)\n\thttp.Redirect(c.Writer, req, rURL, code)\n\tc.writermem.WriteHeaderNow()\n}\n"
  },
  {
    "path": "gossh/gin/ginS/README.md",
    "content": "# Gin Default Server\n\nThis is API experiment for Gin.\n\n```go\npackage main\n\nimport (\n\t\"gossh/gin\"\n\t\"gossh/gin/ginS\"\n)\n\nfunc main() {\n\tginS.GET(\"/\", func(c *gin.Context) { c.String(200, \"Hello World\") })\n\tginS.Run()\n}\n```\n"
  },
  {
    "path": "gossh/gin/ginS/gins.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage ginS\n\nimport (\n\t\"html/template\"\n\t\"net/http\"\n\t\"sync\"\n\n\t\"gossh/gin\"\n)\n\nvar once sync.Once\nvar internalEngine *gin.Engine\n\nfunc engine() *gin.Engine {\n\tonce.Do(func() {\n\t\tinternalEngine = gin.Default()\n\t})\n\treturn internalEngine\n}\n\n// LoadHTMLGlob is a wrapper for Engine.LoadHTMLGlob.\nfunc LoadHTMLGlob(pattern string) {\n\tengine().LoadHTMLGlob(pattern)\n}\n\n// LoadHTMLFiles is a wrapper for Engine.LoadHTMLFiles.\nfunc LoadHTMLFiles(files ...string) {\n\tengine().LoadHTMLFiles(files...)\n}\n\n// SetHTMLTemplate is a wrapper for Engine.SetHTMLTemplate.\nfunc SetHTMLTemplate(templ *template.Template) {\n\tengine().SetHTMLTemplate(templ)\n}\n\n// NoRoute adds handlers for NoRoute. It returns a 404 code by default.\nfunc NoRoute(handlers ...gin.HandlerFunc) {\n\tengine().NoRoute(handlers...)\n}\n\n// NoMethod is a wrapper for Engine.NoMethod.\nfunc NoMethod(handlers ...gin.HandlerFunc) {\n\tengine().NoMethod(handlers...)\n}\n\n// Group creates a new router group. You should add all the routes that have common middlewares or the same path prefix.\n// For example, all the routes that use a common middleware for authorization could be grouped.\nfunc Group(relativePath string, handlers ...gin.HandlerFunc) *gin.RouterGroup {\n\treturn engine().Group(relativePath, handlers...)\n}\n\n// Handle is a wrapper for Engine.Handle.\nfunc Handle(httpMethod, relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().Handle(httpMethod, relativePath, handlers...)\n}\n\n// POST is a shortcut for router.Handle(\"POST\", path, handle)\nfunc POST(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().POST(relativePath, handlers...)\n}\n\n// GET is a shortcut for router.Handle(\"GET\", path, handle)\nfunc GET(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().GET(relativePath, handlers...)\n}\n\n// DELETE is a shortcut for router.Handle(\"DELETE\", path, handle)\nfunc DELETE(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().DELETE(relativePath, handlers...)\n}\n\n// PATCH is a shortcut for router.Handle(\"PATCH\", path, handle)\nfunc PATCH(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().PATCH(relativePath, handlers...)\n}\n\n// PUT is a shortcut for router.Handle(\"PUT\", path, handle)\nfunc PUT(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().PUT(relativePath, handlers...)\n}\n\n// OPTIONS is a shortcut for router.Handle(\"OPTIONS\", path, handle)\nfunc OPTIONS(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().OPTIONS(relativePath, handlers...)\n}\n\n// HEAD is a shortcut for router.Handle(\"HEAD\", path, handle)\nfunc HEAD(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().HEAD(relativePath, handlers...)\n}\n\n// Any is a wrapper for Engine.Any.\nfunc Any(relativePath string, handlers ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().Any(relativePath, handlers...)\n}\n\n// StaticFile is a wrapper for Engine.StaticFile.\nfunc StaticFile(relativePath, filepath string) gin.IRoutes {\n\treturn engine().StaticFile(relativePath, filepath)\n}\n\n// Static serves files from the given file system root.\n// Internally a http.FileServer is used, therefore http.NotFound is used instead\n// of the Router's NotFound handler.\n// To use the operating system's file system implementation,\n// use :\n//\n//\trouter.Static(\"/static\", \"/var/www\")\nfunc Static(relativePath, root string) gin.IRoutes {\n\treturn engine().Static(relativePath, root)\n}\n\n// StaticFS is a wrapper for Engine.StaticFS.\nfunc StaticFS(relativePath string, fs http.FileSystem) gin.IRoutes {\n\treturn engine().StaticFS(relativePath, fs)\n}\n\n// Use attaches a global middleware to the router. i.e. the middlewares attached through Use() will be\n// included in the handlers chain for every single request. Even 404, 405, static files...\n// For example, this is the right place for a logger or error management middleware.\nfunc Use(middlewares ...gin.HandlerFunc) gin.IRoutes {\n\treturn engine().Use(middlewares...)\n}\n\n// Routes returns a slice of registered routes.\nfunc Routes() gin.RoutesInfo {\n\treturn engine().Routes()\n}\n\n// Run attaches to a http.Server and starts listening and serving HTTP requests.\n// It is a shortcut for http.ListenAndServe(addr, router)\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc Run(addr ...string) (err error) {\n\treturn engine().Run(addr...)\n}\n\n// RunTLS attaches to a http.Server and starts listening and serving HTTPS requests.\n// It is a shortcut for http.ListenAndServeTLS(addr, certFile, keyFile, router)\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc RunTLS(addr, certFile, keyFile string) (err error) {\n\treturn engine().RunTLS(addr, certFile, keyFile)\n}\n\n// RunUnix attaches to a http.Server and starts listening and serving HTTP requests\n// through the specified unix socket (i.e. a file)\n// Note: this method will block the calling goroutine indefinitely unless an error happens.\nfunc RunUnix(file string) (err error) {\n\treturn engine().RunUnix(file)\n}\n\n// RunFd attaches the router to a http.Server and starts listening and serving HTTP requests\n// through the specified file descriptor.\n// Note: the method will block the calling goroutine indefinitely unless on error happens.\nfunc RunFd(fd int) (err error) {\n\treturn engine().RunFd(fd)\n}\n"
  },
  {
    "path": "gossh/gin/internal/bytesconv/bytesconv.go",
    "content": "// Copyright 2023 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage bytesconv\n\nimport (\n\t\"unsafe\"\n)\n\n// StringToBytes converts string to byte slice without a memory allocation.\n// For more details, see https://github.com/golang/go/issues/53003#issuecomment-1140276077.\nfunc StringToBytes(s string) []byte {\n\treturn unsafe.Slice(unsafe.StringData(s), len(s))\n}\n\n// BytesToString converts byte slice to string without a memory allocation.\n// For more details, see https://github.com/golang/go/issues/53003#issuecomment-1140276077.\nfunc BytesToString(b []byte) string {\n\treturn unsafe.String(unsafe.SliceData(b), len(b))\n}\n"
  },
  {
    "path": "gossh/gin/internal/json/json.go",
    "content": "// Copyright 2017 Bo-Yi Wu. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage json\n\nimport \"encoding/json\"\n\nvar (\n\t// Marshal is exported by gin/json package.\n\tMarshal = json.Marshal\n\t// Unmarshal is exported by gin/json package.\n\tUnmarshal = json.Unmarshal\n\t// MarshalIndent is exported by gin/json package.\n\tMarshalIndent = json.MarshalIndent\n\t// NewDecoder is exported by gin/json package.\n\tNewDecoder = json.NewDecoder\n\t// NewEncoder is exported by gin/json package.\n\tNewEncoder = json.NewEncoder\n)\n"
  },
  {
    "path": "gossh/gin/jwt/README.md",
    "content": "# jwt-go\n\n[![build](https://github.com/golang-jwt/jwt/actions/workflows/build.yml/badge.svg)](https://github.com/golang-jwt/jwt/actions/workflows/build.yml)\n[![Go\nReference](https://pkg.go.dev/badge/github.com/golang-jwt/jwt/v5.svg)](https://pkg.go.dev/github.com/golang-jwt/jwt/v5)\n[![Coverage Status](https://coveralls.io/repos/github/golang-jwt/jwt/badge.svg?branch=main)](https://coveralls.io/github/golang-jwt/jwt?branch=main)\n\nA [go](http://www.golang.org) (or 'golang' for search engine friendliness)\nimplementation of [JSON Web\nTokens](https://datatracker.ietf.org/doc/html/rfc7519).\n\nStarting with [v4.0.0](https://github.com/golang-jwt/jwt/releases/tag/v4.0.0)\nthis project adds Go module support, but maintains backwards compatibility with\nolder `v3.x.y` tags and upstream `github.com/dgrijalva/jwt-go`. See the\n[`MIGRATION_GUIDE.md`](./MIGRATION_GUIDE.md) for more information. Version\nv5.0.0 introduces major improvements to the validation of tokens, but is not\nentirely backwards compatible. \n\n> After the original author of the library suggested migrating the maintenance\n> of `jwt-go`, a dedicated team of open source maintainers decided to clone the\n> existing library into this repository. See\n> [dgrijalva/jwt-go#462](https://github.com/dgrijalva/jwt-go/issues/462) for a\n> detailed discussion on this topic.\n\n\n**SECURITY NOTICE:** Some older versions of Go have a security issue in the\ncrypto/elliptic. Recommendation is to upgrade to at least 1.15 See issue\n[dgrijalva/jwt-go#216](https://github.com/dgrijalva/jwt-go/issues/216) for more\ndetail.\n\n**SECURITY NOTICE:** It's important that you [validate the `alg` presented is\nwhat you\nexpect](https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/).\nThis library attempts to make it easy to do the right thing by requiring key\ntypes match the expected alg, but you should take the extra step to verify it in\nyour usage.  See the examples provided.\n\n### Supported Go versions\n\nOur support of Go versions is aligned with Go's [version release\npolicy](https://golang.org/doc/devel/release#policy). So we will support a major\nversion of Go until there are two newer major releases. We no longer support\nbuilding jwt-go with unsupported Go versions, as these contain security\nvulnerabilities which will not be fixed.\n\n## What the heck is a JWT?\n\nJWT.io has [a great introduction](https://jwt.io/introduction) to JSON Web\nTokens.\n\nIn short, it's a signed JSON object that does something useful (for example,\nauthentication).  It's commonly used for `Bearer` tokens in Oauth 2.  A token is\nmade of three parts, separated by `.`'s.  The first two parts are JSON objects,\nthat have been [base64url](https://datatracker.ietf.org/doc/html/rfc4648)\nencoded.  The last part is the signature, encoded the same way.\n\nThe first part is called the header.  It contains the necessary information for\nverifying the last part, the signature.  For example, which encryption method\nwas used for signing and what key was used.\n\nThe part in the middle is the interesting bit.  It's called the Claims and\ncontains the actual stuff you care about.  Refer to [RFC\n7519](https://datatracker.ietf.org/doc/html/rfc7519) for information about\nreserved keys and the proper way to add your own.\n\n## What's in the box?\n\nThis library supports the parsing and verification as well as the generation and\nsigning of JWTs.  Current supported signing algorithms are HMAC SHA, RSA,\nRSA-PSS, and ECDSA, though hooks are present for adding your own.\n\n## Installation Guidelines\n\n1. To install the jwt package, you first need to have\n   [Go](https://go.dev/doc/install) installed, then you can use the command\n   below to add `jwt-go` as a dependency in your Go program.\n\n```sh\ngo get -u github.com/golang-jwt/jwt/v5\n```\n\n2. Import it in your code:\n\n```go\nimport \"github.com/golang-jwt/jwt/v5\"\n```\n\n## Usage\n\nA detailed usage guide, including how to sign and verify tokens can be found on\nour [documentation website](https://golang-jwt.github.io/jwt/usage/create/).\n\n## Examples\n\nSee [the project documentation](https://pkg.go.dev/github.com/golang-jwt/jwt/v5)\nfor examples of usage:\n\n* [Simple example of parsing and validating a\n  token](https://pkg.go.dev/github.com/golang-jwt/jwt/v5#example-Parse-Hmac)\n* [Simple example of building and signing a\n  token](https://pkg.go.dev/github.com/golang-jwt/jwt/v5#example-New-Hmac)\n* [Directory of\n  Examples](https://pkg.go.dev/github.com/golang-jwt/jwt/v5#pkg-examples)\n\n## Compliance\n\nThis library was last reviewed to comply with [RFC\n7519](https://datatracker.ietf.org/doc/html/rfc7519) dated May 2015 with a few\nnotable differences:\n\n* In order to protect against accidental use of [Unsecured\n  JWTs](https://datatracker.ietf.org/doc/html/rfc7519#section-6), tokens using\n  `alg=none` will only be accepted if the constant\n  `jwt.UnsafeAllowNoneSignatureType` is provided as the key.\n\n## Project Status & Versioning\n\nThis library is considered production ready.  Feedback and feature requests are\nappreciated.  The API should be considered stable.  There should be very few\nbackwards-incompatible changes outside of major version updates (and only with\ngood reason).\n\nThis project uses [Semantic Versioning 2.0.0](http://semver.org).  Accepted pull\nrequests will land on `main`.  Periodically, versions will be tagged from\n`main`.  You can find all the releases on [the project releases\npage](https://github.com/golang-jwt/jwt/releases).\n\n**BREAKING CHANGES:*** A full list of breaking changes is available in\n`VERSION_HISTORY.md`.  See `MIGRATION_GUIDE.md` for more information on updating\nyour code.\n\n## Extensions\n\nThis library publishes all the necessary components for adding your own signing\nmethods or key functions.  Simply implement the `SigningMethod` interface and\nregister a factory method using `RegisterSigningMethod` or provide a\n`jwt.Keyfunc`.\n\nA common use case would be integrating with different 3rd party signature\nproviders, like key management services from various cloud providers or Hardware\nSecurity Modules (HSMs) or to implement additional standards.\n\n| Extension | Purpose                                                                                                  | Repo                                       |\n| --------- | -------------------------------------------------------------------------------------------------------- | ------------------------------------------ |\n| GCP       | Integrates with multiple Google Cloud Platform signing tools (AppEngine, IAM API, Cloud KMS)             | https://github.com/someone1/gcp-jwt-go     |\n| AWS       | Integrates with AWS Key Management Service, KMS                                                          | https://github.com/matelang/jwt-go-aws-kms |\n| JWKS      | Provides support for JWKS ([RFC 7517](https://datatracker.ietf.org/doc/html/rfc7517)) as a `jwt.Keyfunc` | https://github.com/MicahParks/keyfunc      |\n\n*Disclaimer*: Unless otherwise specified, these integrations are maintained by\nthird parties and should not be considered as a primary offer by any of the\nmentioned cloud providers\n\n## More\n\nGo package documentation can be found [on\npkg.go.dev](https://pkg.go.dev/github.com/golang-jwt/jwt/v5). Additional\ndocumentation can be found on [our project\npage](https://golang-jwt.github.io/jwt/).\n\nThe command line utility included in this project (cmd/jwt) provides a\nstraightforward example of token creation and parsing as well as a useful tool\nfor debugging your own integration. You'll also find several implementation\nexamples in the documentation.\n\n[golang-jwt](https://github.com/orgs/golang-jwt) incorporates a modified version\nof the JWT logo, which is distributed under the terms of the [MIT\nLicense](https://github.com/jsonwebtoken/jsonwebtoken.github.io/blob/master/LICENSE.txt).\n"
  },
  {
    "path": "gossh/gin/jwt/claims.go",
    "content": "package jwt\n\n// Claims represent any form of a JWT Claims Set according to\n// https://datatracker.ietf.org/doc/html/rfc7519#section-4. In order to have a\n// common basis for validation, it is required that an implementation is able to\n// supply at least the claim names provided in\n// https://datatracker.ietf.org/doc/html/rfc7519#section-4.1 namely `exp`,\n// `iat`, `nbf`, `iss`, `sub` and `aud`.\ntype Claims interface {\n\tGetExpirationTime() (*NumericDate, error)\n\tGetIssuedAt() (*NumericDate, error)\n\tGetNotBefore() (*NumericDate, error)\n\tGetIssuer() (string, error)\n\tGetSubject() (string, error)\n\tGetAudience() (ClaimStrings, error)\n}\n"
  },
  {
    "path": "gossh/gin/jwt/cmd/jwt/README.md",
    "content": "`jwt` command-line tool\n=======================\n\nThis is a simple tool to sign, verify and show JSON Web Tokens from\nthe command line.\n\nThe following will create and sign a token, then verify it and output the original claims:\n\n     echo {\\\"foo\\\":\\\"bar\\\"} | ./jwt -key ../../test/sample_key -alg RS256 -sign - | ./jwt -key ../../test/sample_key.pub -alg RS256 -verify -\n\nKey files should be in PEM format. Other formats are not supported by this tool.\n\nTo simply display a token, use:\n\n    echo $JWT | ./jwt -show -\n\nYou can install this tool with the following command:\n\n     go install github.com/golang-jwt/jwt/v5/cmd/jwt"
  },
  {
    "path": "gossh/gin/jwt/cmd/jwt/main.go",
    "content": "// A useful example app.  You can use this to debug your tokens on the command line.\n// This is also a great place to look at how you might use this library.\n//\n// Example usage:\n// The following will create and sign a token, then verify it and output the original claims.\n//\n//\techo {\\\"foo\\\":\\\"bar\\\"} | bin/jwt -key test/sample_key -alg RS256 -sign - | bin/jwt -key test/sample_key.pub -verify -\npackage main\n\nimport (\n\t\"encoding/json\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"gossh/gin/jwt\"\n)\n\nvar (\n\t// Options\n\tflagAlg     = flag.String(\"alg\", \"\", algHelp())\n\tflagKey     = flag.String(\"key\", \"\", \"path to key file or '-' to read from stdin\")\n\tflagCompact = flag.Bool(\"compact\", false, \"output compact JSON\")\n\tflagDebug   = flag.Bool(\"debug\", false, \"print out all kinds of debug data\")\n\tflagClaims  = make(ArgList)\n\tflagHead    = make(ArgList)\n\n\t// Modes - exactly one of these is required\n\tflagSign   = flag.String(\"sign\", \"\", \"path to claims object to sign, '-' to read from stdin, or '+' to use only -claim args\")\n\tflagVerify = flag.String(\"verify\", \"\", \"path to JWT token to verify or '-' to read from stdin\")\n\tflagShow   = flag.String(\"show\", \"\", \"path to JWT file or '-' to read from stdin\")\n)\n\nfunc main() {\n\t// Plug in Var flags\n\tflag.Var(flagClaims, \"claim\", \"add additional claims. may be used more than once\")\n\tflag.Var(flagHead, \"header\", \"add additional header params. may be used more than once\")\n\n\t// Usage message if you ask for -help or if you mess up inputs.\n\tflag.Usage = func() {\n\t\tfmt.Fprintf(os.Stderr, \"Usage of %s:\\n\", os.Args[0])\n\t\tfmt.Fprintf(os.Stderr, \"  One of the following flags is required: sign, verify\\n\")\n\t\tflag.PrintDefaults()\n\t}\n\n\t// Parse command line options\n\tflag.Parse()\n\n\t// Do the thing.  If something goes wrong, print error to stderr\n\t// and exit with a non-zero status code\n\tif err := start(); err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"Error: %v\\n\", err)\n\t\tos.Exit(1)\n\t}\n}\n\n// Figure out which thing to do and then do that\nfunc start() error {\n\tswitch {\n\tcase *flagSign != \"\":\n\t\treturn signToken()\n\tcase *flagVerify != \"\":\n\t\treturn verifyToken()\n\tcase *flagShow != \"\":\n\t\treturn showToken()\n\tdefault:\n\t\tflag.Usage()\n\t\treturn fmt.Errorf(\"none of the required flags are present.  What do you want me to do?\")\n\t}\n}\n\n// Helper func:  Read input from specified file or stdin\nfunc loadData(p string) ([]byte, error) {\n\tif p == \"\" {\n\t\treturn nil, fmt.Errorf(\"no path specified\")\n\t}\n\n\tvar rdr io.Reader\n\tswitch p {\n\tcase \"-\":\n\t\trdr = os.Stdin\n\tcase \"+\":\n\t\treturn []byte(\"{}\"), nil\n\tdefault:\n\t\tf, err := os.Open(p)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\trdr = f\n\t\tdefer f.Close()\n\t}\n\treturn io.ReadAll(rdr)\n}\n\n// Print a json object in accordance with the prophecy (or the command line options)\nfunc printJSON(j any) error {\n\tvar out []byte\n\tvar err error\n\n\tif !*flagCompact {\n\t\tout, err = json.MarshalIndent(j, \"\", \"    \")\n\t} else {\n\t\tout, err = json.Marshal(j)\n\t}\n\n\tif err == nil {\n\t\tfmt.Println(string(out))\n\t}\n\n\treturn err\n}\n\n// Verify a token and output the claims.  This is a great example\n// of how to verify and view a token.\nfunc verifyToken() error {\n\t// get the token\n\ttokData, err := loadData(*flagVerify)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"couldn't read token: %w\", err)\n\t}\n\n\t// trim possible whitespace from token\n\ttokData = regexp.MustCompile(`\\s*$`).ReplaceAll(tokData, []byte{})\n\tif *flagDebug {\n\t\tfmt.Fprintf(os.Stderr, \"Token len: %v bytes\\n\", len(tokData))\n\t}\n\n\t// Parse the token.  Load the key from command line option\n\ttoken, err := jwt.Parse(string(tokData), func(t *jwt.Token) (any, error) {\n\t\tif isNone() {\n\t\t\treturn jwt.UnsafeAllowNoneSignatureType, nil\n\t\t}\n\t\tdata, err := loadData(*flagKey)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch {\n\t\tcase isEs():\n\t\t\treturn jwt.ParseECPublicKeyFromPEM(data)\n\t\tcase isRs():\n\t\t\treturn jwt.ParseRSAPublicKeyFromPEM(data)\n\t\tcase isEd():\n\t\t\treturn jwt.ParseEdPublicKeyFromPEM(data)\n\t\tdefault:\n\t\t\treturn data, nil\n\t\t}\n\t})\n\n\t// Print an error if we can't parse for some reason\n\tif err != nil {\n\t\treturn fmt.Errorf(\"couldn't parse token: %w\", err)\n\t}\n\n\t// Print some debug data\n\tif *flagDebug {\n\t\tfmt.Fprintf(os.Stderr, \"Header:\\n%v\\n\", token.Header)\n\t\tfmt.Fprintf(os.Stderr, \"Claims:\\n%v\\n\", token.Claims)\n\t}\n\n\t// Print the token details\n\tif err := printJSON(token.Claims); err != nil {\n\t\treturn fmt.Errorf(\"failed to output claims: %w\", err)\n\t}\n\n\treturn nil\n}\n\n// Create, sign, and output a token.  This is a great, simple example of\n// how to use this library to create and sign a token.\nfunc signToken() error {\n\t// get the token data from command line arguments\n\ttokData, err := loadData(*flagSign)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"couldn't read token: %w\", err)\n\t} else if *flagDebug {\n\t\tfmt.Fprintf(os.Stderr, \"Token: %v bytes\", len(tokData))\n\t}\n\n\t// parse the JSON of the claims\n\tvar claims jwt.MapClaims\n\tif err := json.Unmarshal(tokData, &claims); err != nil {\n\t\treturn fmt.Errorf(\"couldn't parse claims JSON: %w\", err)\n\t}\n\n\t// add command line claims\n\tif len(flagClaims) > 0 {\n\t\tfor k, v := range flagClaims {\n\t\t\tclaims[k] = v\n\t\t}\n\t}\n\n\t// get the key\n\tvar key any\n\tif isNone() {\n\t\tkey = jwt.UnsafeAllowNoneSignatureType\n\t} else {\n\t\tkey, err = loadData(*flagKey)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"couldn't read key: %w\", err)\n\t\t}\n\t}\n\n\t// get the signing alg\n\talg := jwt.GetSigningMethod(*flagAlg)\n\tif alg == nil {\n\t\treturn fmt.Errorf(\"couldn't find signing method: %v\", *flagAlg)\n\t}\n\n\t// create a new token\n\ttoken := jwt.NewWithClaims(alg, claims)\n\n\t// add command line headers\n\tif len(flagHead) > 0 {\n\t\tfor k, v := range flagHead {\n\t\t\ttoken.Header[k] = v\n\t\t}\n\t}\n\n\tswitch {\n\tcase isEs():\n\t\tk, ok := key.([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"couldn't convert key data to key\")\n\t\t}\n\t\tkey, err = jwt.ParseECPrivateKeyFromPEM(k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\tcase isRs():\n\t\tk, ok := key.([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"couldn't convert key data to key\")\n\t\t}\n\t\tkey, err = jwt.ParseRSAPrivateKeyFromPEM(k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\tcase isEd():\n\t\tk, ok := key.([]byte)\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"couldn't convert key data to key\")\n\t\t}\n\t\tkey, err = jwt.ParseEdPrivateKeyFromPEM(k)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tout, err := token.SignedString(key)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"error signing token: %w\", err)\n\t}\n\tfmt.Println(out)\n\n\treturn nil\n}\n\n// showToken pretty-prints the token on the command line.\nfunc showToken() error {\n\t// get the token\n\ttokData, err := loadData(*flagShow)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"couldn't read token: %w\", err)\n\t}\n\n\t// trim possible whitespace from token\n\ttokData = regexp.MustCompile(`\\s*$`).ReplaceAll(tokData, []byte{})\n\tif *flagDebug {\n\t\tfmt.Fprintf(os.Stderr, \"Token len: %v bytes\\n\", len(tokData))\n\t}\n\n\ttoken, err := jwt.Parse(string(tokData), nil)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"malformed token: %w\", err)\n\t}\n\n\t// Print the token details\n\tfmt.Println(\"Header:\")\n\tif err := printJSON(token.Header); err != nil {\n\t\treturn fmt.Errorf(\"failed to output header: %w\", err)\n\t}\n\n\tfmt.Println(\"Claims:\")\n\tif err := printJSON(token.Claims); err != nil {\n\t\treturn fmt.Errorf(\"failed to output claims: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc isEs() bool {\n\treturn strings.HasPrefix(*flagAlg, \"ES\")\n}\n\nfunc isRs() bool {\n\treturn strings.HasPrefix(*flagAlg, \"RS\") || strings.HasPrefix(*flagAlg, \"PS\")\n}\n\nfunc isEd() bool {\n\treturn *flagAlg == \"EdDSA\"\n}\n\nfunc isNone() bool {\n\treturn *flagAlg == \"none\"\n}\n\nfunc algHelp() string {\n\talgs := jwt.GetAlgorithms()\n\tsort.Strings(algs)\n\n\tvar b strings.Builder\n\tb.WriteString(\"signing algorithm identifier, one of\\n\")\n\tfor i, alg := range algs {\n\t\tif i > 0 {\n\t\t\tif i%7 == 0 {\n\t\t\t\tb.WriteString(\",\\n\")\n\t\t\t} else {\n\t\t\t\tb.WriteString(\", \")\n\t\t\t}\n\t\t}\n\t\tb.WriteString(alg)\n\t}\n\treturn b.String()\n}\n\ntype ArgList map[string]string\n\nfunc (l ArgList) String() string {\n\tdata, _ := json.Marshal(l)\n\treturn string(data)\n}\n\nfunc (l ArgList) Set(arg string) error {\n\tparts := strings.SplitN(arg, \"=\", 2)\n\tif len(parts) != 2 {\n\t\treturn fmt.Errorf(\"invalid argument '%v'.  Must use format 'key=value'. %v\", arg, parts)\n\t}\n\tl[parts[0]] = parts[1]\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/ecdsa.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/ecdsa\"\n\t\"crypto/rand\"\n\t\"errors\"\n\t\"math/big\"\n)\n\nvar (\n\t// Sadly this is missing from crypto/ecdsa compared to crypto/rsa\n\tErrECDSAVerification = errors.New(\"crypto/ecdsa: verification error\")\n)\n\n// SigningMethodECDSA implements the ECDSA family of signing methods.\n// Expects *ecdsa.PrivateKey for signing and *ecdsa.PublicKey for verification\ntype SigningMethodECDSA struct {\n\tName      string\n\tHash      crypto.Hash\n\tKeySize   int\n\tCurveBits int\n}\n\n// Specific instances for EC256 and company\nvar (\n\tSigningMethodES256 *SigningMethodECDSA\n\tSigningMethodES384 *SigningMethodECDSA\n\tSigningMethodES512 *SigningMethodECDSA\n)\n\nfunc init() {\n\t// ES256\n\tSigningMethodES256 = &SigningMethodECDSA{\"ES256\", crypto.SHA256, 32, 256}\n\tRegisterSigningMethod(SigningMethodES256.Alg(), func() SigningMethod {\n\t\treturn SigningMethodES256\n\t})\n\n\t// ES384\n\tSigningMethodES384 = &SigningMethodECDSA{\"ES384\", crypto.SHA384, 48, 384}\n\tRegisterSigningMethod(SigningMethodES384.Alg(), func() SigningMethod {\n\t\treturn SigningMethodES384\n\t})\n\n\t// ES512\n\tSigningMethodES512 = &SigningMethodECDSA{\"ES512\", crypto.SHA512, 66, 521}\n\tRegisterSigningMethod(SigningMethodES512.Alg(), func() SigningMethod {\n\t\treturn SigningMethodES512\n\t})\n}\n\nfunc (m *SigningMethodECDSA) Alg() string {\n\treturn m.Name\n}\n\n// Verify implements token verification for the SigningMethod.\n// For this verify method, key must be an ecdsa.PublicKey struct\nfunc (m *SigningMethodECDSA) Verify(signingString string, sig []byte, key any) error {\n\t// Get the key\n\tvar ecdsaKey *ecdsa.PublicKey\n\tswitch k := key.(type) {\n\tcase *ecdsa.PublicKey:\n\t\tecdsaKey = k\n\tdefault:\n\t\treturn newError(\"ECDSA verify expects *ecdsa.PublicKey\", ErrInvalidKeyType)\n\t}\n\n\tif len(sig) != 2*m.KeySize {\n\t\treturn ErrECDSAVerification\n\t}\n\n\tr := big.NewInt(0).SetBytes(sig[:m.KeySize])\n\ts := big.NewInt(0).SetBytes(sig[m.KeySize:])\n\n\t// Create hasher\n\tif !m.Hash.Available() {\n\t\treturn ErrHashUnavailable\n\t}\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\t// Verify the signature\n\tif verifystatus := ecdsa.Verify(ecdsaKey, hasher.Sum(nil), r, s); verifystatus {\n\t\treturn nil\n\t}\n\n\treturn ErrECDSAVerification\n}\n\n// Sign implements token signing for the SigningMethod.\n// For this signing method, key must be an ecdsa.PrivateKey struct\nfunc (m *SigningMethodECDSA) Sign(signingString string, key any) ([]byte, error) {\n\t// Get the key\n\tvar ecdsaKey *ecdsa.PrivateKey\n\tswitch k := key.(type) {\n\tcase *ecdsa.PrivateKey:\n\t\tecdsaKey = k\n\tdefault:\n\t\treturn nil, newError(\"ECDSA sign expects *ecdsa.PrivateKey\", ErrInvalidKeyType)\n\t}\n\n\t// Create the hasher\n\tif !m.Hash.Available() {\n\t\treturn nil, ErrHashUnavailable\n\t}\n\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\t// Sign the string and return r, s\n\tif r, s, err := ecdsa.Sign(rand.Reader, ecdsaKey, hasher.Sum(nil)); err == nil {\n\t\tcurveBits := ecdsaKey.Curve.Params().BitSize\n\n\t\tif m.CurveBits != curveBits {\n\t\t\treturn nil, ErrInvalidKey\n\t\t}\n\n\t\tkeyBytes := curveBits / 8\n\t\tif curveBits%8 > 0 {\n\t\t\tkeyBytes += 1\n\t\t}\n\n\t\t// We serialize the outputs (r and s) into big-endian byte arrays\n\t\t// padded with zeros on the left to make sure the sizes work out.\n\t\t// Output must be 2*keyBytes long.\n\t\tout := make([]byte, 2*keyBytes)\n\t\tr.FillBytes(out[0:keyBytes]) // r is assigned to the first half of output.\n\t\ts.FillBytes(out[keyBytes:])  // s is assigned to the second half of output.\n\n\t\treturn out, nil\n\t} else {\n\t\treturn nil, err\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/ecdsa_utils.go",
    "content": "package jwt\n\nimport (\n\t\"crypto/ecdsa\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"errors\"\n)\n\nvar (\n\tErrNotECPublicKey  = errors.New(\"key is not a valid ECDSA public key\")\n\tErrNotECPrivateKey = errors.New(\"key is not a valid ECDSA private key\")\n)\n\n// ParseECPrivateKeyFromPEM parses a PEM encoded Elliptic Curve Private Key Structure\nfunc ParseECPrivateKeyFromPEM(key []byte) (*ecdsa.PrivateKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\t// Parse the key\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParseECPrivateKey(block.Bytes); err != nil {\n\t\tif parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar pkey *ecdsa.PrivateKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(*ecdsa.PrivateKey); !ok {\n\t\treturn nil, ErrNotECPrivateKey\n\t}\n\n\treturn pkey, nil\n}\n\n// ParseECPublicKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 public key\nfunc ParseECPublicKeyFromPEM(key []byte) (*ecdsa.PublicKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\t// Parse the key\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {\n\t\tif cert, err := x509.ParseCertificate(block.Bytes); err == nil {\n\t\t\tparsedKey = cert.PublicKey\n\t\t} else {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar pkey *ecdsa.PublicKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(*ecdsa.PublicKey); !ok {\n\t\treturn nil, ErrNotECPublicKey\n\t}\n\n\treturn pkey, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/ed25519.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/ed25519\"\n\t\"crypto/rand\"\n\t\"errors\"\n)\n\nvar (\n\tErrEd25519Verification = errors.New(\"ed25519: verification error\")\n)\n\n// SigningMethodEd25519 implements the EdDSA family.\n// Expects ed25519.PrivateKey for signing and ed25519.PublicKey for verification\ntype SigningMethodEd25519 struct{}\n\n// Specific instance for EdDSA\nvar (\n\tSigningMethodEdDSA *SigningMethodEd25519\n)\n\nfunc init() {\n\tSigningMethodEdDSA = &SigningMethodEd25519{}\n\tRegisterSigningMethod(SigningMethodEdDSA.Alg(), func() SigningMethod {\n\t\treturn SigningMethodEdDSA\n\t})\n}\n\nfunc (m *SigningMethodEd25519) Alg() string {\n\treturn \"EdDSA\"\n}\n\n// Verify implements token verification for the SigningMethod.\n// For this verify method, key must be an ed25519.PublicKey\nfunc (m *SigningMethodEd25519) Verify(signingString string, sig []byte, key any) error {\n\tvar ed25519Key ed25519.PublicKey\n\tvar ok bool\n\n\tif ed25519Key, ok = key.(ed25519.PublicKey); !ok {\n\t\treturn newError(\"Ed25519 verify expects ed25519.PublicKey\", ErrInvalidKeyType)\n\t}\n\n\tif len(ed25519Key) != ed25519.PublicKeySize {\n\t\treturn ErrInvalidKey\n\t}\n\n\t// Verify the signature\n\tif !ed25519.Verify(ed25519Key, []byte(signingString), sig) {\n\t\treturn ErrEd25519Verification\n\t}\n\n\treturn nil\n}\n\n// Sign implements token signing for the SigningMethod.\n// For this signing method, key must be an ed25519.PrivateKey\nfunc (m *SigningMethodEd25519) Sign(signingString string, key any) ([]byte, error) {\n\tvar ed25519Key crypto.Signer\n\tvar ok bool\n\n\tif ed25519Key, ok = key.(crypto.Signer); !ok {\n\t\treturn nil, newError(\"Ed25519 sign expects crypto.Signer\", ErrInvalidKeyType)\n\t}\n\n\tif _, ok := ed25519Key.Public().(ed25519.PublicKey); !ok {\n\t\treturn nil, ErrInvalidKey\n\t}\n\n\t// Sign the string and return the result. ed25519 performs a two-pass hash\n\t// as part of its algorithm. Therefore, we need to pass a non-prehashed\n\t// message into the Sign function, as indicated by crypto.Hash(0)\n\tsig, err := ed25519Key.Sign(rand.Reader, []byte(signingString), crypto.Hash(0))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn sig, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/ed25519_utils.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/ed25519\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"errors\"\n)\n\nvar (\n\tErrNotEdPrivateKey = errors.New(\"key is not a valid Ed25519 private key\")\n\tErrNotEdPublicKey  = errors.New(\"key is not a valid Ed25519 public key\")\n)\n\n// ParseEdPrivateKeyFromPEM parses a PEM-encoded Edwards curve private key\nfunc ParseEdPrivateKeyFromPEM(key []byte) (crypto.PrivateKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\t// Parse the key\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar pkey ed25519.PrivateKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(ed25519.PrivateKey); !ok {\n\t\treturn nil, ErrNotEdPrivateKey\n\t}\n\n\treturn pkey, nil\n}\n\n// ParseEdPublicKeyFromPEM parses a PEM-encoded Edwards curve public key\nfunc ParseEdPublicKeyFromPEM(key []byte) (crypto.PublicKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\t// Parse the key\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar pkey ed25519.PublicKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(ed25519.PublicKey); !ok {\n\t\treturn nil, ErrNotEdPublicKey\n\t}\n\n\treturn pkey, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/errors.go",
    "content": "package jwt\n\nimport (\n\t\"errors\"\n\t\"strings\"\n)\n\nvar (\n\tErrInvalidKey                = errors.New(\"key is invalid\")\n\tErrInvalidKeyType            = errors.New(\"key is of invalid type\")\n\tErrHashUnavailable           = errors.New(\"the requested hash function is unavailable\")\n\tErrTokenMalformed            = errors.New(\"token is malformed\")\n\tErrTokenUnverifiable         = errors.New(\"token is unverifiable\")\n\tErrTokenSignatureInvalid     = errors.New(\"token signature is invalid\")\n\tErrTokenRequiredClaimMissing = errors.New(\"token is missing required claim\")\n\tErrTokenInvalidAudience      = errors.New(\"token has invalid audience\")\n\tErrTokenExpired              = errors.New(\"token is expired\")\n\tErrTokenUsedBeforeIssued     = errors.New(\"token used before issued\")\n\tErrTokenInvalidIssuer        = errors.New(\"token has invalid issuer\")\n\tErrTokenInvalidSubject       = errors.New(\"token has invalid subject\")\n\tErrTokenNotValidYet          = errors.New(\"token is not valid yet\")\n\tErrTokenInvalidId            = errors.New(\"token has invalid id\")\n\tErrTokenInvalidClaims        = errors.New(\"token has invalid claims\")\n\tErrInvalidType               = errors.New(\"invalid type for claim\")\n)\n\n// joinedError is an error type that works similar to what [errors.Join]\n// produces, with the exception that it has a nice error string; mainly its\n// error messages are concatenated using a comma, rather than a newline.\ntype joinedError struct {\n\terrs []error\n}\n\nfunc (je joinedError) Error() string {\n\tmsg := []string{}\n\tfor _, err := range je.errs {\n\t\tmsg = append(msg, err.Error())\n\t}\n\n\treturn strings.Join(msg, \", \")\n}\n\n// joinErrors joins together multiple errors. Useful for scenarios where\n// multiple errors next to each other occur, e.g., in claims validation.\nfunc joinErrors(errs ...error) error {\n\treturn &joinedError{\n\t\terrs: errs,\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/errors_go1_20.go",
    "content": "//go:build go1.20\n// +build go1.20\n\npackage jwt\n\nimport (\n\t\"fmt\"\n)\n\n// Unwrap implements the multiple error unwrapping for this error type, which is\n// possible in Go 1.20.\nfunc (je joinedError) Unwrap() []error {\n\treturn je.errs\n}\n\n// newError creates a new error message with a detailed error message. The\n// message will be prefixed with the contents of the supplied error type.\n// Additionally, more errors, that provide more context can be supplied which\n// will be appended to the message. This makes use of Go 1.20's possibility to\n// include more than one %w formatting directive in [fmt.Errorf].\n//\n// For example,\n//\n//\tnewError(\"no keyfunc was provided\", ErrTokenUnverifiable)\n//\n// will produce the error string\n//\n//\t\"token is unverifiable: no keyfunc was provided\"\nfunc newError(message string, err error, more ...error) error {\n\tvar format string\n\tvar args []any\n\tif message != \"\" {\n\t\tformat = \"%w: %s\"\n\t\targs = []any{err, message}\n\t} else {\n\t\tformat = \"%w\"\n\t\targs = []any{err}\n\t}\n\n\tfor _, e := range more {\n\t\tformat += \": %w\"\n\t\targs = append(args, e)\n\t}\n\n\terr = fmt.Errorf(format, args...)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/gin/jwt/errors_go_other.go",
    "content": "//go:build !go1.20\n// +build !go1.20\n\npackage jwt\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Is implements checking for multiple errors using [errors.Is], since multiple\n// error unwrapping is not possible in versions less than Go 1.20.\nfunc (je joinedError) Is(err error) bool {\n\tfor _, e := range je.errs {\n\t\tif errors.Is(e, err) {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// wrappedErrors is a workaround for wrapping multiple errors in environments\n// where Go 1.20 is not available. It basically uses the already implemented\n// functionality of joinedError to handle multiple errors with supplies a\n// custom error message that is identical to the one we produce in Go 1.20 using\n// multiple %w directives.\ntype wrappedErrors struct {\n\tmsg string\n\tjoinedError\n}\n\n// Error returns the stored error string\nfunc (we wrappedErrors) Error() string {\n\treturn we.msg\n}\n\n// newError creates a new error message with a detailed error message. The\n// message will be prefixed with the contents of the supplied error type.\n// Additionally, more errors, that provide more context can be supplied which\n// will be appended to the message. Since we cannot use of Go 1.20's possibility\n// to include more than one %w formatting directive in [fmt.Errorf], we have to\n// emulate that.\n//\n// For example,\n//\n//\tnewError(\"no keyfunc was provided\", ErrTokenUnverifiable)\n//\n// will produce the error string\n//\n//\t\"token is unverifiable: no keyfunc was provided\"\nfunc newError(message string, err error, more ...error) error {\n\t// We cannot wrap multiple errors here with %w, so we have to be a little\n\t// bit creative. Basically, we are using %s instead of %w to produce the\n\t// same error message and then throw the result into a custom error struct.\n\tvar format string\n\tvar args []any\n\tif message != \"\" {\n\t\tformat = \"%s: %s\"\n\t\targs = []any{err, message}\n\t} else {\n\t\tformat = \"%s\"\n\t\targs = []any{err}\n\t}\n\terrs := []error{err}\n\n\tfor _, e := range more {\n\t\tformat += \": %s\"\n\t\targs = append(args, e)\n\t\terrs = append(errs, e)\n\t}\n\n\terr = &wrappedErrors{\n\t\tmsg:         fmt.Sprintf(format, args...),\n\t\tjoinedError: joinedError{errs: errs},\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "gossh/gin/jwt/hmac.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/hmac\"\n\t\"errors\"\n)\n\n// SigningMethodHMAC implements the HMAC-SHA family of signing methods.\n// Expects key type of []byte for both signing and validation\ntype SigningMethodHMAC struct {\n\tName string\n\tHash crypto.Hash\n}\n\n// Specific instances for HS256 and company\nvar (\n\tSigningMethodHS256  *SigningMethodHMAC\n\tSigningMethodHS384  *SigningMethodHMAC\n\tSigningMethodHS512  *SigningMethodHMAC\n\tErrSignatureInvalid = errors.New(\"signature is invalid\")\n)\n\nfunc init() {\n\t// HS256\n\tSigningMethodHS256 = &SigningMethodHMAC{\"HS256\", crypto.SHA256}\n\tRegisterSigningMethod(SigningMethodHS256.Alg(), func() SigningMethod {\n\t\treturn SigningMethodHS256\n\t})\n\n\t// HS384\n\tSigningMethodHS384 = &SigningMethodHMAC{\"HS384\", crypto.SHA384}\n\tRegisterSigningMethod(SigningMethodHS384.Alg(), func() SigningMethod {\n\t\treturn SigningMethodHS384\n\t})\n\n\t// HS512\n\tSigningMethodHS512 = &SigningMethodHMAC{\"HS512\", crypto.SHA512}\n\tRegisterSigningMethod(SigningMethodHS512.Alg(), func() SigningMethod {\n\t\treturn SigningMethodHS512\n\t})\n}\n\nfunc (m *SigningMethodHMAC) Alg() string {\n\treturn m.Name\n}\n\n// Verify implements token verification for the SigningMethod. Returns nil if\n// the signature is valid. Key must be []byte.\n//\n// Note it is not advised to provide a []byte which was converted from a 'human\n// readable' string using a subset of ASCII characters. To maximize entropy, you\n// should ideally be providing a []byte key which was produced from a\n// cryptographically random source, e.g. crypto/rand. Additional information\n// about this, and why we intentionally are not supporting string as a key can\n// be found on our usage guide\n// https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types.\nfunc (m *SigningMethodHMAC) Verify(signingString string, sig []byte, key any) error {\n\t// Verify the key is the right type\n\tkeyBytes, ok := key.([]byte)\n\tif !ok {\n\t\treturn newError(\"HMAC verify expects []byte\", ErrInvalidKeyType)\n\t}\n\n\t// Can we use the specified hashing method?\n\tif !m.Hash.Available() {\n\t\treturn ErrHashUnavailable\n\t}\n\n\t// This signing method is symmetric, so we validate the signature\n\t// by reproducing the signature from the signing string and key, then\n\t// comparing that against the provided signature.\n\thasher := hmac.New(m.Hash.New, keyBytes)\n\thasher.Write([]byte(signingString))\n\tif !hmac.Equal(sig, hasher.Sum(nil)) {\n\t\treturn ErrSignatureInvalid\n\t}\n\n\t// No validation errors.  Signature is good.\n\treturn nil\n}\n\n// Sign implements token signing for the SigningMethod. Key must be []byte.\n//\n// Note it is not advised to provide a []byte which was converted from a 'human\n// readable' string using a subset of ASCII characters. To maximize entropy, you\n// should ideally be providing a []byte key which was produced from a\n// cryptographically random source, e.g. crypto/rand. Additional information\n// about this, and why we intentionally are not supporting string as a key can\n// be found on our usage guide https://golang-jwt.github.io/jwt/usage/signing_methods/.\nfunc (m *SigningMethodHMAC) Sign(signingString string, key any) ([]byte, error) {\n\tif keyBytes, ok := key.([]byte); ok {\n\t\tif !m.Hash.Available() {\n\t\t\treturn nil, ErrHashUnavailable\n\t\t}\n\n\t\thasher := hmac.New(m.Hash.New, keyBytes)\n\t\thasher.Write([]byte(signingString))\n\n\t\treturn hasher.Sum(nil), nil\n\t}\n\n\treturn nil, newError(\"HMAC sign expects []byte\", ErrInvalidKeyType)\n}\n"
  },
  {
    "path": "gossh/gin/jwt/map_claims.go",
    "content": "package jwt\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n)\n\n// MapClaims is a claims type that uses the map[string]interface{} for JSON\n// decoding. This is the default claims type if you don't supply one\ntype MapClaims map[string]any\n\n// GetExpirationTime implements the Claims interface.\nfunc (m MapClaims) GetExpirationTime() (*NumericDate, error) {\n\treturn m.parseNumericDate(\"exp\")\n}\n\n// GetNotBefore implements the Claims interface.\nfunc (m MapClaims) GetNotBefore() (*NumericDate, error) {\n\treturn m.parseNumericDate(\"nbf\")\n}\n\n// GetIssuedAt implements the Claims interface.\nfunc (m MapClaims) GetIssuedAt() (*NumericDate, error) {\n\treturn m.parseNumericDate(\"iat\")\n}\n\n// GetAudience implements the Claims interface.\nfunc (m MapClaims) GetAudience() (ClaimStrings, error) {\n\treturn m.parseClaimsString(\"aud\")\n}\n\n// GetIssuer implements the Claims interface.\nfunc (m MapClaims) GetIssuer() (string, error) {\n\treturn m.parseString(\"iss\")\n}\n\n// GetSubject implements the Claims interface.\nfunc (m MapClaims) GetSubject() (string, error) {\n\treturn m.parseString(\"sub\")\n}\n\n// parseNumericDate tries to parse a key in the map claims type as a number\n// date. This will succeed, if the underlying type is either a [float64] or a\n// [json.Number]. Otherwise, nil will be returned.\nfunc (m MapClaims) parseNumericDate(key string) (*NumericDate, error) {\n\tv, ok := m[key]\n\tif !ok {\n\t\treturn nil, nil\n\t}\n\n\tswitch exp := v.(type) {\n\tcase float64:\n\t\tif exp == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\treturn newNumericDateFromSeconds(exp), nil\n\tcase json.Number:\n\t\tv, _ := exp.Float64()\n\n\t\treturn newNumericDateFromSeconds(v), nil\n\t}\n\n\treturn nil, newError(fmt.Sprintf(\"%s is invalid\", key), ErrInvalidType)\n}\n\n// parseClaimsString tries to parse a key in the map claims type as a\n// [ClaimsStrings] type, which can either be a string or an array of string.\nfunc (m MapClaims) parseClaimsString(key string) (ClaimStrings, error) {\n\tvar cs []string\n\tswitch v := m[key].(type) {\n\tcase string:\n\t\tcs = append(cs, v)\n\tcase []string:\n\t\tcs = v\n\tcase []any:\n\t\tfor _, a := range v {\n\t\t\tvs, ok := a.(string)\n\t\t\tif !ok {\n\t\t\t\treturn nil, newError(fmt.Sprintf(\"%s is invalid\", key), ErrInvalidType)\n\t\t\t}\n\t\t\tcs = append(cs, vs)\n\t\t}\n\t}\n\n\treturn cs, nil\n}\n\n// parseString tries to parse a key in the map claims type as a [string] type.\n// If the key does not exist, an empty string is returned. If the key has the\n// wrong type, an error is returned.\nfunc (m MapClaims) parseString(key string) (string, error) {\n\tvar (\n\t\tok  bool\n\t\traw any\n\t\tiss string\n\t)\n\traw, ok = m[key]\n\tif !ok {\n\t\treturn \"\", nil\n\t}\n\n\tiss, ok = raw.(string)\n\tif !ok {\n\t\treturn \"\", newError(fmt.Sprintf(\"%s is invalid\", key), ErrInvalidType)\n\t}\n\n\treturn iss, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/none.go",
    "content": "package jwt\n\n// SigningMethodNone implements the none signing method.  This is required by the spec\n// but you probably should never use it.\nvar SigningMethodNone *signingMethodNone\n\nconst UnsafeAllowNoneSignatureType unsafeNoneMagicConstant = \"none signing method allowed\"\n\nvar NoneSignatureTypeDisallowedError error\n\ntype signingMethodNone struct{}\ntype unsafeNoneMagicConstant string\n\nfunc init() {\n\tSigningMethodNone = &signingMethodNone{}\n\tNoneSignatureTypeDisallowedError = newError(\"'none' signature type is not allowed\", ErrTokenUnverifiable)\n\n\tRegisterSigningMethod(SigningMethodNone.Alg(), func() SigningMethod {\n\t\treturn SigningMethodNone\n\t})\n}\n\nfunc (m *signingMethodNone) Alg() string {\n\treturn \"none\"\n}\n\n// Only allow 'none' alg type if UnsafeAllowNoneSignatureType is specified as the key\nfunc (m *signingMethodNone) Verify(signingString string, sig []byte, key any) (err error) {\n\t// Key must be UnsafeAllowNoneSignatureType to prevent accidentally\n\t// accepting 'none' signing method\n\tif _, ok := key.(unsafeNoneMagicConstant); !ok {\n\t\treturn NoneSignatureTypeDisallowedError\n\t}\n\t// If signing method is none, signature must be an empty string\n\tif len(sig) != 0 {\n\t\treturn newError(\"'none' signing method with non-empty signature\", ErrTokenUnverifiable)\n\t}\n\n\t// Accept 'none' signing method.\n\treturn nil\n}\n\n// Only allow 'none' signing if UnsafeAllowNoneSignatureType is specified as the key\nfunc (m *signingMethodNone) Sign(signingString string, key any) ([]byte, error) {\n\tif _, ok := key.(unsafeNoneMagicConstant); ok {\n\t\treturn []byte{}, nil\n\t}\n\n\treturn nil, NoneSignatureTypeDisallowedError\n}\n"
  },
  {
    "path": "gossh/gin/jwt/parser.go",
    "content": "package jwt\n\nimport (\n\t\"bytes\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"strings\"\n)\n\ntype Parser struct {\n\t// If populated, only these methods will be considered valid.\n\tvalidMethods []string\n\n\t// Use JSON Number format in JSON decoder.\n\tuseJSONNumber bool\n\n\t// Skip claims validation during token parsing.\n\tskipClaimsValidation bool\n\n\tvalidator *Validator\n\n\tdecodeStrict bool\n\n\tdecodePaddingAllowed bool\n}\n\n// NewParser creates a new Parser with the specified options\nfunc NewParser(options ...ParserOption) *Parser {\n\tp := &Parser{\n\t\tvalidator: &Validator{},\n\t}\n\n\t// Loop through our parsing options and apply them\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\treturn p\n}\n\n// Parse parses, validates, verifies the signature and returns the parsed token.\n// keyFunc will receive the parsed token and should return the key for validating.\nfunc (p *Parser) Parse(tokenString string, keyFunc Keyfunc) (*Token, error) {\n\treturn p.ParseWithClaims(tokenString, MapClaims{}, keyFunc)\n}\n\n// ParseWithClaims parses, validates, and verifies like Parse, but supplies a default object implementing the Claims\n// interface. This provides default values which can be overridden and allows a caller to use their own type, rather\n// than the default MapClaims implementation of Claims.\n//\n// Note: If you provide a custom claim implementation that embeds one of the standard claims (such as RegisteredClaims),\n// make sure that a) you either embed a non-pointer version of the claims or b) if you are using a pointer, allocate the\n// proper memory for it before passing in the overall claims, otherwise you might run into a panic.\nfunc (p *Parser) ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc) (*Token, error) {\n\ttoken, parts, err := p.ParseUnverified(tokenString, claims)\n\tif err != nil {\n\t\treturn token, err\n\t}\n\n\t// Verify signing method is in the required set\n\tif p.validMethods != nil {\n\t\tvar signingMethodValid = false\n\t\tvar alg = token.Method.Alg()\n\t\tfor _, m := range p.validMethods {\n\t\t\tif m == alg {\n\t\t\t\tsigningMethodValid = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !signingMethodValid {\n\t\t\t// signing method is not in the listed set\n\t\t\treturn token, newError(fmt.Sprintf(\"signing method %v is invalid\", alg), ErrTokenSignatureInvalid)\n\t\t}\n\t}\n\n\t// Decode signature\n\ttoken.Signature, err = p.DecodeSegment(parts[2])\n\tif err != nil {\n\t\treturn token, newError(\"could not base64 decode signature\", ErrTokenMalformed, err)\n\t}\n\ttext := strings.Join(parts[0:2], \".\")\n\n\t// Lookup key(s)\n\tif keyFunc == nil {\n\t\t// keyFunc was not provided.  short circuiting validation\n\t\treturn token, newError(\"no keyfunc was provided\", ErrTokenUnverifiable)\n\t}\n\n\tgot, err := keyFunc(token)\n\tif err != nil {\n\t\treturn token, newError(\"error while executing keyfunc\", ErrTokenUnverifiable, err)\n\t}\n\n\tswitch have := got.(type) {\n\tcase VerificationKeySet:\n\t\tif len(have.Keys) == 0 {\n\t\t\treturn token, newError(\"keyfunc returned empty verification key set\", ErrTokenUnverifiable)\n\t\t}\n\t\t// Iterate through keys and verify signature, skipping the rest when a match is found.\n\t\t// Return the last error if no match is found.\n\t\tfor _, key := range have.Keys {\n\t\t\tif err = token.Method.Verify(text, token.Signature, key); err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\tdefault:\n\t\terr = token.Method.Verify(text, token.Signature, have)\n\t}\n\tif err != nil {\n\t\treturn token, newError(\"\", ErrTokenSignatureInvalid, err)\n\t}\n\n\t// Validate Claims\n\tif !p.skipClaimsValidation {\n\t\t// Make sure we have at least a default validator\n\t\tif p.validator == nil {\n\t\t\tp.validator = NewValidator()\n\t\t}\n\n\t\tif err := p.validator.Validate(claims); err != nil {\n\t\t\treturn token, newError(\"\", ErrTokenInvalidClaims, err)\n\t\t}\n\t}\n\n\t// No errors so far, token is valid.\n\ttoken.Valid = true\n\n\treturn token, nil\n}\n\n// ParseUnverified parses the token but doesn't validate the signature.\n//\n// WARNING: Don't use this method unless you know what you're doing.\n//\n// It's only ever useful in cases where you know the signature is valid (since it has already\n// been or will be checked elsewhere in the stack) and you want to extract values from it.\nfunc (p *Parser) ParseUnverified(tokenString string, claims Claims) (token *Token, parts []string, err error) {\n\tparts = strings.Split(tokenString, \".\")\n\tif len(parts) != 3 {\n\t\treturn nil, parts, newError(\"token contains an invalid number of segments\", ErrTokenMalformed)\n\t}\n\n\ttoken = &Token{Raw: tokenString}\n\n\t// parse Header\n\tvar headerBytes []byte\n\tif headerBytes, err = p.DecodeSegment(parts[0]); err != nil {\n\t\treturn token, parts, newError(\"could not base64 decode header\", ErrTokenMalformed, err)\n\t}\n\tif err = json.Unmarshal(headerBytes, &token.Header); err != nil {\n\t\treturn token, parts, newError(\"could not JSON decode header\", ErrTokenMalformed, err)\n\t}\n\n\t// parse Claims\n\ttoken.Claims = claims\n\n\tclaimBytes, err := p.DecodeSegment(parts[1])\n\tif err != nil {\n\t\treturn token, parts, newError(\"could not base64 decode claim\", ErrTokenMalformed, err)\n\t}\n\n\t// If `useJSONNumber` is enabled then we must use *json.Decoder to decode\n\t// the claims. However, this comes with a performance penalty so only use\n\t// it if we must and, otherwise, simple use json.Unmarshal.\n\tif !p.useJSONNumber {\n\t\t// JSON Unmarshal. Special case for map type to avoid weird pointer behavior.\n\t\tif c, ok := token.Claims.(MapClaims); ok {\n\t\t\terr = json.Unmarshal(claimBytes, &c)\n\t\t} else {\n\t\t\terr = json.Unmarshal(claimBytes, &claims)\n\t\t}\n\t} else {\n\t\tdec := json.NewDecoder(bytes.NewBuffer(claimBytes))\n\t\tdec.UseNumber()\n\t\t// JSON Decode. Special case for map type to avoid weird pointer behavior.\n\t\tif c, ok := token.Claims.(MapClaims); ok {\n\t\t\terr = dec.Decode(&c)\n\t\t} else {\n\t\t\terr = dec.Decode(&claims)\n\t\t}\n\t}\n\tif err != nil {\n\t\treturn token, parts, newError(\"could not JSON decode claim\", ErrTokenMalformed, err)\n\t}\n\n\t// Lookup signature method\n\tif method, ok := token.Header[\"alg\"].(string); ok {\n\t\tif token.Method = GetSigningMethod(method); token.Method == nil {\n\t\t\treturn token, parts, newError(\"signing method (alg) is unavailable\", ErrTokenUnverifiable)\n\t\t}\n\t} else {\n\t\treturn token, parts, newError(\"signing method (alg) is unspecified\", ErrTokenUnverifiable)\n\t}\n\n\treturn token, parts, nil\n}\n\n// DecodeSegment decodes a JWT specific base64url encoding. This function will\n// take into account whether the [Parser] is configured with additional options,\n// such as [WithStrictDecoding] or [WithPaddingAllowed].\nfunc (p *Parser) DecodeSegment(seg string) ([]byte, error) {\n\tencoding := base64.RawURLEncoding\n\n\tif p.decodePaddingAllowed {\n\t\tif l := len(seg) % 4; l > 0 {\n\t\t\tseg += strings.Repeat(\"=\", 4-l)\n\t\t}\n\t\tencoding = base64.URLEncoding\n\t}\n\n\tif p.decodeStrict {\n\t\tencoding = encoding.Strict()\n\t}\n\treturn encoding.DecodeString(seg)\n}\n\n// Parse parses, validates, verifies the signature and returns the parsed token.\n// keyFunc will receive the parsed token and should return the cryptographic key\n// for verifying the signature. The caller is strongly encouraged to set the\n// WithValidMethods option to validate the 'alg' claim in the token matches the\n// expected algorithm. For more details about the importance of validating the\n// 'alg' claim, see\n// https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/\nfunc Parse(tokenString string, keyFunc Keyfunc, options ...ParserOption) (*Token, error) {\n\treturn NewParser(options...).Parse(tokenString, keyFunc)\n}\n\n// ParseWithClaims is a shortcut for NewParser().ParseWithClaims().\n//\n// Note: If you provide a custom claim implementation that embeds one of the\n// standard claims (such as RegisteredClaims), make sure that a) you either\n// embed a non-pointer version of the claims or b) if you are using a pointer,\n// allocate the proper memory for it before passing in the overall claims,\n// otherwise you might run into a panic.\nfunc ParseWithClaims(tokenString string, claims Claims, keyFunc Keyfunc, options ...ParserOption) (*Token, error) {\n\treturn NewParser(options...).ParseWithClaims(tokenString, claims, keyFunc)\n}\n"
  },
  {
    "path": "gossh/gin/jwt/parser_option.go",
    "content": "package jwt\n\nimport \"time\"\n\n// ParserOption is used to implement functional-style options that modify the\n// behavior of the parser. To add new options, just create a function (ideally\n// beginning with With or Without) that returns an anonymous function that takes\n// a *Parser type as input and manipulates its configuration accordingly.\ntype ParserOption func(*Parser)\n\n// WithValidMethods is an option to supply algorithm methods that the parser\n// will check. Only those methods will be considered valid. It is heavily\n// encouraged to use this option in order to prevent attacks such as\n// https://auth0.com/blog/critical-vulnerabilities-in-json-web-token-libraries/.\nfunc WithValidMethods(methods []string) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validMethods = methods\n\t}\n}\n\n// WithJSONNumber is an option to configure the underlying JSON parser with\n// UseNumber.\nfunc WithJSONNumber() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.useJSONNumber = true\n\t}\n}\n\n// WithoutClaimsValidation is an option to disable claims validation. This\n// option should only be used if you exactly know what you are doing.\nfunc WithoutClaimsValidation() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.skipClaimsValidation = true\n\t}\n}\n\n// WithLeeway returns the ParserOption for specifying the leeway window.\nfunc WithLeeway(leeway time.Duration) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.leeway = leeway\n\t}\n}\n\n// WithTimeFunc returns the ParserOption for specifying the time func. The\n// primary use-case for this is testing. If you are looking for a way to account\n// for clock-skew, WithLeeway should be used instead.\nfunc WithTimeFunc(f func() time.Time) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.timeFunc = f\n\t}\n}\n\n// WithIssuedAt returns the ParserOption to enable verification\n// of issued-at.\nfunc WithIssuedAt() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.verifyIat = true\n\t}\n}\n\n// WithExpirationRequired returns the ParserOption to make exp claim required.\n// By default exp claim is optional.\nfunc WithExpirationRequired() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.requireExp = true\n\t}\n}\n\n// WithAudience configures the validator to require the specified audience in\n// the `aud` claim. Validation will fail if the audience is not listed in the\n// token or the `aud` claim is missing.\n//\n// NOTE: While the `aud` claim is OPTIONAL in a JWT, the handling of it is\n// application-specific. Since this validation API is helping developers in\n// writing secure application, we decided to REQUIRE the existence of the claim,\n// if an audience is expected.\nfunc WithAudience(aud string) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.expectedAud = aud\n\t}\n}\n\n// WithIssuer configures the validator to require the specified issuer in the\n// `iss` claim. Validation will fail if a different issuer is specified in the\n// token or the `iss` claim is missing.\n//\n// NOTE: While the `iss` claim is OPTIONAL in a JWT, the handling of it is\n// application-specific. Since this validation API is helping developers in\n// writing secure application, we decided to REQUIRE the existence of the claim,\n// if an issuer is expected.\nfunc WithIssuer(iss string) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.expectedIss = iss\n\t}\n}\n\n// WithSubject configures the validator to require the specified subject in the\n// `sub` claim. Validation will fail if a different subject is specified in the\n// token or the `sub` claim is missing.\n//\n// NOTE: While the `sub` claim is OPTIONAL in a JWT, the handling of it is\n// application-specific. Since this validation API is helping developers in\n// writing secure application, we decided to REQUIRE the existence of the claim,\n// if a subject is expected.\nfunc WithSubject(sub string) ParserOption {\n\treturn func(p *Parser) {\n\t\tp.validator.expectedSub = sub\n\t}\n}\n\n// WithPaddingAllowed will enable the codec used for decoding JWTs to allow\n// padding. Note that the JWS RFC7515 states that the tokens will utilize a\n// Base64url encoding with no padding. Unfortunately, some implementations of\n// JWT are producing non-standard tokens, and thus require support for decoding.\nfunc WithPaddingAllowed() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.decodePaddingAllowed = true\n\t}\n}\n\n// WithStrictDecoding will switch the codec used for decoding JWTs into strict\n// mode. In this mode, the decoder requires that trailing padding bits are zero,\n// as described in RFC 4648 section 3.5.\nfunc WithStrictDecoding() ParserOption {\n\treturn func(p *Parser) {\n\t\tp.decodeStrict = true\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/registered_claims.go",
    "content": "package jwt\n\n// RegisteredClaims are a structured version of the JWT Claims Set,\n// restricted to Registered Claim Names, as referenced at\n// https://datatracker.ietf.org/doc/html/rfc7519#section-4.1\n//\n// This type can be used on its own, but then additional private and\n// public claims embedded in the JWT will not be parsed. The typical use-case\n// therefore is to embedded this in a user-defined claim type.\n//\n// See examples for how to use this with your own claim types.\ntype RegisteredClaims struct {\n\t// the `iss` (Issuer) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.1\n\tIssuer string `json:\"iss,omitempty\"`\n\n\t// the `sub` (Subject) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2\n\tSubject string `json:\"sub,omitempty\"`\n\n\t// the `aud` (Audience) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.3\n\tAudience ClaimStrings `json:\"aud,omitempty\"`\n\n\t// the `exp` (Expiration Time) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.4\n\tExpiresAt *NumericDate `json:\"exp,omitempty\"`\n\n\t// the `nbf` (Not Before) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.5\n\tNotBefore *NumericDate `json:\"nbf,omitempty\"`\n\n\t// the `iat` (Issued At) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.6\n\tIssuedAt *NumericDate `json:\"iat,omitempty\"`\n\n\t// the `jti` (JWT ID) claim. See https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.7\n\tID string `json:\"jti,omitempty\"`\n}\n\n// GetExpirationTime implements the Claims interface.\nfunc (c RegisteredClaims) GetExpirationTime() (*NumericDate, error) {\n\treturn c.ExpiresAt, nil\n}\n\n// GetNotBefore implements the Claims interface.\nfunc (c RegisteredClaims) GetNotBefore() (*NumericDate, error) {\n\treturn c.NotBefore, nil\n}\n\n// GetIssuedAt implements the Claims interface.\nfunc (c RegisteredClaims) GetIssuedAt() (*NumericDate, error) {\n\treturn c.IssuedAt, nil\n}\n\n// GetAudience implements the Claims interface.\nfunc (c RegisteredClaims) GetAudience() (ClaimStrings, error) {\n\treturn c.Audience, nil\n}\n\n// GetIssuer implements the Claims interface.\nfunc (c RegisteredClaims) GetIssuer() (string, error) {\n\treturn c.Issuer, nil\n}\n\n// GetSubject implements the Claims interface.\nfunc (c RegisteredClaims) GetSubject() (string, error) {\n\treturn c.Subject, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/request/doc.go",
    "content": "// Utility package for extracting JWT tokens from\n// HTTP requests.\n//\n// The main function is ParseFromRequest and it's WithClaims variant.\n// See examples for how to use the various Extractor implementations\n// or roll your own.\npackage request\n"
  },
  {
    "path": "gossh/gin/jwt/request/extractor.go",
    "content": "package request\n\nimport (\n\t\"errors\"\n\t\"net/http\"\n\t\"strings\"\n)\n\n// Errors\nvar (\n\tErrNoTokenInRequest = errors.New(\"no token present in request\")\n)\n\n// Extractor is an interface for extracting a token from an HTTP request.\n// The ExtractToken method should return a token string or an error.\n// If no token is present, you must return ErrNoTokenInRequest.\ntype Extractor interface {\n\tExtractToken(*http.Request) (string, error)\n}\n\n// HeaderExtractor is an extractor for finding a token in a header.\n// Looks at each specified header in order until there's a match\ntype HeaderExtractor []string\n\nfunc (e HeaderExtractor) ExtractToken(req *http.Request) (string, error) {\n\t// loop over header names and return the first one that contains data\n\tfor _, header := range e {\n\t\tif ah := req.Header.Get(header); ah != \"\" {\n\t\t\treturn ah, nil\n\t\t}\n\t}\n\treturn \"\", ErrNoTokenInRequest\n}\n\n// ArgumentExtractor extracts a token from request arguments.  This includes a POSTed form or\n// GET URL arguments.  Argument names are tried in order until there's a match.\n// This extractor calls `ParseMultipartForm` on the request\ntype ArgumentExtractor []string\n\nfunc (e ArgumentExtractor) ExtractToken(req *http.Request) (string, error) {\n\t// Make sure form is parsed. We are explicitly ignoring errors at this point\n\t_ = req.ParseMultipartForm(10e6)\n\n\t// loop over arg names and return the first one that contains data\n\tfor _, arg := range e {\n\t\tif ah := req.Form.Get(arg); ah != \"\" {\n\t\t\treturn ah, nil\n\t\t}\n\t}\n\n\treturn \"\", ErrNoTokenInRequest\n}\n\n// MultiExtractor tries Extractors in order until one returns a token string or an error occurs\ntype MultiExtractor []Extractor\n\nfunc (e MultiExtractor) ExtractToken(req *http.Request) (string, error) {\n\t// loop over header names and return the first one that contains data\n\tfor _, extractor := range e {\n\t\tif tok, err := extractor.ExtractToken(req); tok != \"\" {\n\t\t\treturn tok, nil\n\t\t} else if !errors.Is(err, ErrNoTokenInRequest) {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn \"\", ErrNoTokenInRequest\n}\n\n// PostExtractionFilter wraps an Extractor in this to post-process the value before it's handed off.\n// See AuthorizationHeaderExtractor for an example\ntype PostExtractionFilter struct {\n\tExtractor\n\tFilter func(string) (string, error)\n}\n\nfunc (e *PostExtractionFilter) ExtractToken(req *http.Request) (string, error) {\n\tif tok, err := e.Extractor.ExtractToken(req); tok != \"\" {\n\t\treturn e.Filter(tok)\n\t} else {\n\t\treturn \"\", err\n\t}\n}\n\n// BearerExtractor extracts a token from the Authorization header.\n// The header is expected to match the format \"Bearer XX\", where \"XX\" is the\n// JWT token.\ntype BearerExtractor struct{}\n\nfunc (e BearerExtractor) ExtractToken(req *http.Request) (string, error) {\n\ttokenHeader := req.Header.Get(\"Authorization\")\n\t// The usual convention is for \"Bearer\" to be title-cased. However, there's no\n\t// strict rule around this, and it's best to follow the robustness principle here.\n\tif len(tokenHeader) < 7 || !strings.EqualFold(tokenHeader[:7], \"bearer \") {\n\t\treturn \"\", ErrNoTokenInRequest\n\t}\n\treturn tokenHeader[7:], nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/request/oauth2.go",
    "content": "package request\n\nimport (\n\t\"strings\"\n)\n\n// Strips 'Bearer ' prefix from bearer token string\nfunc stripBearerPrefixFromTokenString(tok string) (string, error) {\n\t// Should be a bearer token\n\tif len(tok) > 6 && strings.EqualFold(tok[:7], \"bearer \") {\n\t\treturn tok[7:], nil\n\t}\n\treturn tok, nil\n}\n\n// AuthorizationHeaderExtractor extracts a bearer token from Authorization header\n// Uses PostExtractionFilter to strip \"Bearer \" prefix from header\nvar AuthorizationHeaderExtractor = &PostExtractionFilter{\n\tHeaderExtractor{\"Authorization\"},\n\tstripBearerPrefixFromTokenString,\n}\n\n// OAuth2Extractor is an Extractor for OAuth2 access tokens.  Looks in 'Authorization'\n// header then 'access_token' argument for a token.\nvar OAuth2Extractor = &MultiExtractor{\n\tAuthorizationHeaderExtractor,\n\tArgumentExtractor{\"access_token\"},\n}\n"
  },
  {
    "path": "gossh/gin/jwt/request/request.go",
    "content": "package request\n\nimport (\n\t\"net/http\"\n\n\t\"gossh/gin/jwt\"\n)\n\n// ParseFromRequest extracts and parses a JWT token from an HTTP request.\n// This behaves the same as Parse, but accepts a request and an extractor\n// instead of a token string.  The Extractor interface allows you to define\n// the logic for extracting a token.  Several useful implementations are provided.\n//\n// You can provide options to modify parsing behavior\nfunc ParseFromRequest(req *http.Request, extractor Extractor, keyFunc jwt.Keyfunc, options ...ParseFromRequestOption) (token *jwt.Token, err error) {\n\t// Create basic parser struct\n\tp := &fromRequestParser{req, extractor, nil, nil}\n\n\t// Handle options\n\tfor _, option := range options {\n\t\toption(p)\n\t}\n\n\t// Set defaults\n\tif p.claims == nil {\n\t\tp.claims = jwt.MapClaims{}\n\t}\n\tif p.parser == nil {\n\t\tp.parser = &jwt.Parser{}\n\t}\n\n\t// perform extract\n\ttokenString, err := p.extractor.ExtractToken(req)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// perform parse\n\treturn p.parser.ParseWithClaims(tokenString, p.claims, keyFunc)\n}\n\n// ParseFromRequestWithClaims is an alias for ParseFromRequest but with custom Claims type.\n//\n// Deprecated: use ParseFromRequest and the WithClaims option\nfunc ParseFromRequestWithClaims(req *http.Request, extractor Extractor, claims jwt.Claims, keyFunc jwt.Keyfunc) (token *jwt.Token, err error) {\n\treturn ParseFromRequest(req, extractor, keyFunc, WithClaims(claims))\n}\n\ntype fromRequestParser struct {\n\treq       *http.Request\n\textractor Extractor\n\tclaims    jwt.Claims\n\tparser    *jwt.Parser\n}\n\ntype ParseFromRequestOption func(*fromRequestParser)\n\n// WithClaims parses with custom claims\nfunc WithClaims(claims jwt.Claims) ParseFromRequestOption {\n\treturn func(p *fromRequestParser) {\n\t\tp.claims = claims\n\t}\n}\n\n// WithParser parses using a custom parser\nfunc WithParser(parser *jwt.Parser) ParseFromRequestOption {\n\treturn func(p *fromRequestParser) {\n\t\tp.parser = parser\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/rsa.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n)\n\n// SigningMethodRSA implements the RSA family of signing methods.\n// Expects *rsa.PrivateKey for signing and *rsa.PublicKey for validation\ntype SigningMethodRSA struct {\n\tName string\n\tHash crypto.Hash\n}\n\n// Specific instances for RS256 and company\nvar (\n\tSigningMethodRS256 *SigningMethodRSA\n\tSigningMethodRS384 *SigningMethodRSA\n\tSigningMethodRS512 *SigningMethodRSA\n)\n\nfunc init() {\n\t// RS256\n\tSigningMethodRS256 = &SigningMethodRSA{\"RS256\", crypto.SHA256}\n\tRegisterSigningMethod(SigningMethodRS256.Alg(), func() SigningMethod {\n\t\treturn SigningMethodRS256\n\t})\n\n\t// RS384\n\tSigningMethodRS384 = &SigningMethodRSA{\"RS384\", crypto.SHA384}\n\tRegisterSigningMethod(SigningMethodRS384.Alg(), func() SigningMethod {\n\t\treturn SigningMethodRS384\n\t})\n\n\t// RS512\n\tSigningMethodRS512 = &SigningMethodRSA{\"RS512\", crypto.SHA512}\n\tRegisterSigningMethod(SigningMethodRS512.Alg(), func() SigningMethod {\n\t\treturn SigningMethodRS512\n\t})\n}\n\nfunc (m *SigningMethodRSA) Alg() string {\n\treturn m.Name\n}\n\n// Verify implements token verification for the SigningMethod\n// For this signing method, must be an *rsa.PublicKey structure.\nfunc (m *SigningMethodRSA) Verify(signingString string, sig []byte, key any) error {\n\tvar rsaKey *rsa.PublicKey\n\tvar ok bool\n\n\tif rsaKey, ok = key.(*rsa.PublicKey); !ok {\n\t\treturn newError(\"RSA verify expects *rsa.PublicKey\", ErrInvalidKeyType)\n\t}\n\n\t// Create hasher\n\tif !m.Hash.Available() {\n\t\treturn ErrHashUnavailable\n\t}\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\t// Verify the signature\n\treturn rsa.VerifyPKCS1v15(rsaKey, m.Hash, hasher.Sum(nil), sig)\n}\n\n// Sign implements token signing for the SigningMethod\n// For this signing method, must be an *rsa.PrivateKey structure.\nfunc (m *SigningMethodRSA) Sign(signingString string, key any) ([]byte, error) {\n\tvar rsaKey *rsa.PrivateKey\n\tvar ok bool\n\n\t// Validate type of key\n\tif rsaKey, ok = key.(*rsa.PrivateKey); !ok {\n\t\treturn nil, newError(\"RSA sign expects *rsa.PrivateKey\", ErrInvalidKeyType)\n\t}\n\n\t// Create the hasher\n\tif !m.Hash.Available() {\n\t\treturn nil, ErrHashUnavailable\n\t}\n\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\t// Sign the string and return the encoded bytes\n\tif sigBytes, err := rsa.SignPKCS1v15(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil)); err == nil {\n\t\treturn sigBytes, nil\n\t} else {\n\t\treturn nil, err\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/rsa_pss.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n)\n\n// SigningMethodRSAPSS implements the RSAPSS family of signing methods signing methods\ntype SigningMethodRSAPSS struct {\n\t*SigningMethodRSA\n\tOptions *rsa.PSSOptions\n\t// VerifyOptions is optional. If set overrides Options for rsa.VerifyPPS.\n\t// Used to accept tokens signed with rsa.PSSSaltLengthAuto, what doesn't follow\n\t// https://tools.ietf.org/html/rfc7518#section-3.5 but was used previously.\n\t// See https://github.com/dgrijalva/jwt-go/issues/285#issuecomment-437451244 for details.\n\tVerifyOptions *rsa.PSSOptions\n}\n\n// Specific instances for RS/PS and company.\nvar (\n\tSigningMethodPS256 *SigningMethodRSAPSS\n\tSigningMethodPS384 *SigningMethodRSAPSS\n\tSigningMethodPS512 *SigningMethodRSAPSS\n)\n\nfunc init() {\n\t// PS256\n\tSigningMethodPS256 = &SigningMethodRSAPSS{\n\t\tSigningMethodRSA: &SigningMethodRSA{\n\t\t\tName: \"PS256\",\n\t\t\tHash: crypto.SHA256,\n\t\t},\n\t\tOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthEqualsHash,\n\t\t},\n\t\tVerifyOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthAuto,\n\t\t},\n\t}\n\tRegisterSigningMethod(SigningMethodPS256.Alg(), func() SigningMethod {\n\t\treturn SigningMethodPS256\n\t})\n\n\t// PS384\n\tSigningMethodPS384 = &SigningMethodRSAPSS{\n\t\tSigningMethodRSA: &SigningMethodRSA{\n\t\t\tName: \"PS384\",\n\t\t\tHash: crypto.SHA384,\n\t\t},\n\t\tOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthEqualsHash,\n\t\t},\n\t\tVerifyOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthAuto,\n\t\t},\n\t}\n\tRegisterSigningMethod(SigningMethodPS384.Alg(), func() SigningMethod {\n\t\treturn SigningMethodPS384\n\t})\n\n\t// PS512\n\tSigningMethodPS512 = &SigningMethodRSAPSS{\n\t\tSigningMethodRSA: &SigningMethodRSA{\n\t\t\tName: \"PS512\",\n\t\t\tHash: crypto.SHA512,\n\t\t},\n\t\tOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthEqualsHash,\n\t\t},\n\t\tVerifyOptions: &rsa.PSSOptions{\n\t\t\tSaltLength: rsa.PSSSaltLengthAuto,\n\t\t},\n\t}\n\tRegisterSigningMethod(SigningMethodPS512.Alg(), func() SigningMethod {\n\t\treturn SigningMethodPS512\n\t})\n}\n\n// Verify implements token verification for the SigningMethod.\n// For this verify method, key must be an rsa.PublicKey struct\nfunc (m *SigningMethodRSAPSS) Verify(signingString string, sig []byte, key any) error {\n\tvar rsaKey *rsa.PublicKey\n\tswitch k := key.(type) {\n\tcase *rsa.PublicKey:\n\t\trsaKey = k\n\tdefault:\n\t\treturn newError(\"RSA-PSS verify expects *rsa.PublicKey\", ErrInvalidKeyType)\n\t}\n\n\t// Create hasher\n\tif !m.Hash.Available() {\n\t\treturn ErrHashUnavailable\n\t}\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\topts := m.Options\n\tif m.VerifyOptions != nil {\n\t\topts = m.VerifyOptions\n\t}\n\n\treturn rsa.VerifyPSS(rsaKey, m.Hash, hasher.Sum(nil), sig, opts)\n}\n\n// Sign implements token signing for the SigningMethod.\n// For this signing method, key must be an rsa.PrivateKey struct\nfunc (m *SigningMethodRSAPSS) Sign(signingString string, key any) ([]byte, error) {\n\tvar rsaKey *rsa.PrivateKey\n\n\tswitch k := key.(type) {\n\tcase *rsa.PrivateKey:\n\t\trsaKey = k\n\tdefault:\n\t\treturn nil, newError(\"RSA-PSS sign expects *rsa.PrivateKey\", ErrInvalidKeyType)\n\t}\n\n\t// Create the hasher\n\tif !m.Hash.Available() {\n\t\treturn nil, ErrHashUnavailable\n\t}\n\n\thasher := m.Hash.New()\n\thasher.Write([]byte(signingString))\n\n\t// Sign the string and return the encoded bytes\n\tif sigBytes, err := rsa.SignPSS(rand.Reader, rsaKey, m.Hash, hasher.Sum(nil), m.Options); err == nil {\n\t\treturn sigBytes, nil\n\t} else {\n\t\treturn nil, err\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/jwt/rsa_utils.go",
    "content": "package jwt\n\nimport (\n\t\"crypto/rsa\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"errors\"\n)\n\nvar (\n\tErrKeyMustBePEMEncoded = errors.New(\"invalid key: Key must be a PEM encoded PKCS1 or PKCS8 key\")\n\tErrNotRSAPrivateKey    = errors.New(\"key is not a valid RSA private key\")\n\tErrNotRSAPublicKey     = errors.New(\"key is not a valid RSA public key\")\n)\n\n// ParseRSAPrivateKeyFromPEM parses a PEM encoded PKCS1 or PKCS8 private key\nfunc ParseRSAPrivateKeyFromPEM(key []byte) (*rsa.PrivateKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParsePKCS1PrivateKey(block.Bytes); err != nil {\n\t\tif parsedKey, err = x509.ParsePKCS8PrivateKey(block.Bytes); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar pkey *rsa.PrivateKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(*rsa.PrivateKey); !ok {\n\t\treturn nil, ErrNotRSAPrivateKey\n\t}\n\n\treturn pkey, nil\n}\n\n// ParseRSAPrivateKeyFromPEMWithPassword parses a PEM encoded PKCS1 or PKCS8 private key protected with password\n//\n// Deprecated: This function is deprecated and should not be used anymore. It uses the deprecated x509.DecryptPEMBlock\n// function, which was deprecated since RFC 1423 is regarded insecure by design. Unfortunately, there is no alternative\n// in the Go standard library for now. See https://github.com/golang/go/issues/8860.\nfunc ParseRSAPrivateKeyFromPEMWithPassword(key []byte, password string) (*rsa.PrivateKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\tvar parsedKey any\n\n\tvar blockDecrypted []byte\n\tif blockDecrypted, err = x509.DecryptPEMBlock(block, []byte(password)); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif parsedKey, err = x509.ParsePKCS1PrivateKey(blockDecrypted); err != nil {\n\t\tif parsedKey, err = x509.ParsePKCS8PrivateKey(blockDecrypted); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tvar pkey *rsa.PrivateKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(*rsa.PrivateKey); !ok {\n\t\treturn nil, ErrNotRSAPrivateKey\n\t}\n\n\treturn pkey, nil\n}\n\n// ParseRSAPublicKeyFromPEM parses a certificate or a PEM encoded PKCS1 or PKIX public key\nfunc ParseRSAPublicKeyFromPEM(key []byte) (*rsa.PublicKey, error) {\n\tvar err error\n\n\t// Parse PEM block\n\tvar block *pem.Block\n\tif block, _ = pem.Decode(key); block == nil {\n\t\treturn nil, ErrKeyMustBePEMEncoded\n\t}\n\n\t// Parse the key\n\tvar parsedKey any\n\tif parsedKey, err = x509.ParsePKIXPublicKey(block.Bytes); err != nil {\n\t\tif cert, err := x509.ParseCertificate(block.Bytes); err == nil {\n\t\t\tparsedKey = cert.PublicKey\n\t\t} else {\n\t\t\tif parsedKey, err = x509.ParsePKCS1PublicKey(block.Bytes); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\tvar pkey *rsa.PublicKey\n\tvar ok bool\n\tif pkey, ok = parsedKey.(*rsa.PublicKey); !ok {\n\t\treturn nil, ErrNotRSAPublicKey\n\t}\n\n\treturn pkey, nil\n}\n"
  },
  {
    "path": "gossh/gin/jwt/signing_method.go",
    "content": "package jwt\n\nimport (\n\t\"sync\"\n)\n\nvar signingMethods = map[string]func() SigningMethod{}\nvar signingMethodLock = new(sync.RWMutex)\n\n// SigningMethod can be used add new methods for signing or verifying tokens. It\n// takes a decoded signature as an input in the Verify function and produces a\n// signature in Sign. The signature is then usually base64 encoded as part of a\n// JWT.\ntype SigningMethod interface {\n\tVerify(signingString string, sig []byte, key any) error // Returns nil if signature is valid\n\tSign(signingString string, key any) ([]byte, error)     // Returns signature or error\n\tAlg() string                                            // returns the alg identifier for this method (example: 'HS256')\n}\n\n// RegisterSigningMethod registers the \"alg\" name and a factory function for signing method.\n// This is typically done during init() in the method's implementation\nfunc RegisterSigningMethod(alg string, f func() SigningMethod) {\n\tsigningMethodLock.Lock()\n\tdefer signingMethodLock.Unlock()\n\n\tsigningMethods[alg] = f\n}\n\n// GetSigningMethod retrieves a signing method from an \"alg\" string\nfunc GetSigningMethod(alg string) (method SigningMethod) {\n\tsigningMethodLock.RLock()\n\tdefer signingMethodLock.RUnlock()\n\n\tif methodF, ok := signingMethods[alg]; ok {\n\t\tmethod = methodF()\n\t}\n\treturn\n}\n\n// GetAlgorithms returns a list of registered \"alg\" names\nfunc GetAlgorithms() (algs []string) {\n\tsigningMethodLock.RLock()\n\tdefer signingMethodLock.RUnlock()\n\n\tfor alg := range signingMethods {\n\t\talgs = append(algs, alg)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/gin/jwt/token.go",
    "content": "package jwt\n\nimport (\n\t\"crypto\"\n\t\"encoding/base64\"\n\t\"encoding/json\"\n)\n\n// Keyfunc will be used by the Parse methods as a callback function to supply\n// the key for verification.  The function receives the parsed, but unverified\n// Token.  This allows you to use properties in the Header of the token (such as\n// `kid`) to identify which key to use.\n//\n// The returned interface{} may be a single key or a VerificationKeySet containing\n// multiple keys.\ntype Keyfunc func(*Token) (any, error)\n\n// VerificationKey represents a public or secret key for verifying a token's signature.\ntype VerificationKey interface {\n\tcrypto.PublicKey | []uint8\n}\n\n// VerificationKeySet is a set of public or secret keys. It is used by the parser to verify a token.\ntype VerificationKeySet struct {\n\tKeys []VerificationKey\n}\n\n// Token represents a JWT Token.  Different fields will be used depending on\n// whether you're creating or parsing/verifying a token.\ntype Token struct {\n\tRaw       string         // Raw contains the raw token.  Populated when you [Parse] a token\n\tMethod    SigningMethod  // Method is the signing method used or to be used\n\tHeader    map[string]any // Header is the first segment of the token in decoded form\n\tClaims    Claims         // Claims is the second segment of the token in decoded form\n\tSignature []byte         // Signature is the third segment of the token in decoded form.  Populated when you Parse a token\n\tValid     bool           // Valid specifies if the token is valid.  Populated when you Parse/Verify a token\n}\n\n// New creates a new [Token] with the specified signing method and an empty map\n// of claims. Additional options can be specified, but are currently unused.\nfunc New(method SigningMethod, opts ...TokenOption) *Token {\n\treturn NewWithClaims(method, MapClaims{}, opts...)\n}\n\n// NewWithClaims creates a new [Token] with the specified signing method and\n// claims. Additional options can be specified, but are currently unused.\nfunc NewWithClaims(method SigningMethod, claims Claims, opts ...TokenOption) *Token {\n\treturn &Token{\n\t\tHeader: map[string]any{\n\t\t\t\"typ\": \"JWT\",\n\t\t\t\"alg\": method.Alg(),\n\t\t},\n\t\tClaims: claims,\n\t\tMethod: method,\n\t}\n}\n\n// SignedString creates and returns a complete, signed JWT. The token is signed\n// using the SigningMethod specified in the token. Please refer to\n// https://golang-jwt.github.io/jwt/usage/signing_methods/#signing-methods-and-key-types\n// for an overview of the different signing methods and their respective key\n// types.\nfunc (t *Token) SignedString(key any) (string, error) {\n\tsstr, err := t.SigningString()\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tsig, err := t.Method.Sign(sstr, key)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn sstr + \".\" + t.EncodeSegment(sig), nil\n}\n\n// SigningString generates the signing string.  This is the most expensive part\n// of the whole deal.  Unless you need this for something special, just go\n// straight for the SignedString.\nfunc (t *Token) SigningString() (string, error) {\n\th, err := json.Marshal(t.Header)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tc, err := json.Marshal(t.Claims)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn t.EncodeSegment(h) + \".\" + t.EncodeSegment(c), nil\n}\n\n// EncodeSegment encodes a JWT specific base64url encoding with padding\n// stripped. In the future, this function might take into account a\n// [TokenOption]. Therefore, this function exists as a method of [Token], rather\n// than a global function.\nfunc (*Token) EncodeSegment(seg []byte) string {\n\treturn base64.RawURLEncoding.EncodeToString(seg)\n}\n"
  },
  {
    "path": "gossh/gin/jwt/token_option.go",
    "content": "package jwt\n\n// TokenOption is a reserved type, which provides some forward compatibility,\n// if we ever want to introduce token creation-related options.\ntype TokenOption func(*Token)\n"
  },
  {
    "path": "gossh/gin/jwt/types.go",
    "content": "package jwt\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// TimePrecision sets the precision of times and dates within this library. This\n// has an influence on the precision of times when comparing expiry or other\n// related time fields. Furthermore, it is also the precision of times when\n// serializing.\n//\n// For backwards compatibility the default precision is set to seconds, so that\n// no fractional timestamps are generated.\nvar TimePrecision = time.Second\n\n// MarshalSingleStringAsArray modifies the behavior of the ClaimStrings type,\n// especially its MarshalJSON function.\n//\n// If it is set to true (the default), it will always serialize the type as an\n// array of strings, even if it just contains one element, defaulting to the\n// behavior of the underlying []string. If it is set to false, it will serialize\n// to a single string, if it contains one element. Otherwise, it will serialize\n// to an array of strings.\nvar MarshalSingleStringAsArray = true\n\n// NumericDate represents a JSON numeric date value, as referenced at\n// https://datatracker.ietf.org/doc/html/rfc7519#section-2.\ntype NumericDate struct {\n\ttime.Time\n}\n\n// NewNumericDate constructs a new *NumericDate from a standard library time.Time struct.\n// It will truncate the timestamp according to the precision specified in TimePrecision.\nfunc NewNumericDate(t time.Time) *NumericDate {\n\treturn &NumericDate{t.Truncate(TimePrecision)}\n}\n\n// newNumericDateFromSeconds creates a new *NumericDate out of a float64 representing a\n// UNIX epoch with the float fraction representing non-integer seconds.\nfunc newNumericDateFromSeconds(f float64) *NumericDate {\n\tround, frac := math.Modf(f)\n\treturn NewNumericDate(time.Unix(int64(round), int64(frac*1e9)))\n}\n\n// MarshalJSON is an implementation of the json.RawMessage interface and serializes the UNIX epoch\n// represented in NumericDate to a byte array, using the precision specified in TimePrecision.\nfunc (date NumericDate) MarshalJSON() (b []byte, err error) {\n\tvar prec int\n\tif TimePrecision < time.Second {\n\t\tprec = int(math.Log10(float64(time.Second) / float64(TimePrecision)))\n\t}\n\ttruncatedDate := date.Truncate(TimePrecision)\n\n\t// For very large timestamps, UnixNano would overflow an int64, but this\n\t// function requires nanosecond level precision, so we have to use the\n\t// following technique to get round the issue:\n\t//\n\t// 1. Take the normal unix timestamp to form the whole number part of the\n\t//    output,\n\t// 2. Take the result of the Nanosecond function, which returns the offset\n\t//    within the second of the particular unix time instance, to form the\n\t//    decimal part of the output\n\t// 3. Concatenate them to produce the final result\n\tseconds := strconv.FormatInt(truncatedDate.Unix(), 10)\n\tnanosecondsOffset := strconv.FormatFloat(float64(truncatedDate.Nanosecond())/float64(time.Second), 'f', prec, 64)\n\n\toutput := append([]byte(seconds), []byte(nanosecondsOffset)[1:]...)\n\n\treturn output, nil\n}\n\n// UnmarshalJSON is an implementation of the json.RawMessage interface and\n// deserializes a [NumericDate] from a JSON representation, i.e. a\n// [json.Number]. This number represents an UNIX epoch with either integer or\n// non-integer seconds.\nfunc (date *NumericDate) UnmarshalJSON(b []byte) (err error) {\n\tvar (\n\t\tnumber json.Number\n\t\tf      float64\n\t)\n\n\tif err = json.Unmarshal(b, &number); err != nil {\n\t\treturn fmt.Errorf(\"could not parse NumericData: %w\", err)\n\t}\n\n\tif f, err = number.Float64(); err != nil {\n\t\treturn fmt.Errorf(\"could not convert json number value to float: %w\", err)\n\t}\n\n\tn := newNumericDateFromSeconds(f)\n\t*date = *n\n\n\treturn nil\n}\n\n// ClaimStrings is basically just a slice of strings, but it can be either\n// serialized from a string array or just a string. This type is necessary,\n// since the \"aud\" claim can either be a single string or an array.\ntype ClaimStrings []string\n\nfunc (s *ClaimStrings) UnmarshalJSON(data []byte) (err error) {\n\tvar value any\n\n\tif err = json.Unmarshal(data, &value); err != nil {\n\t\treturn err\n\t}\n\n\tvar aud []string\n\n\tswitch v := value.(type) {\n\tcase string:\n\t\taud = append(aud, v)\n\tcase []string:\n\t\taud = ClaimStrings(v)\n\tcase []any:\n\t\tfor _, vv := range v {\n\t\t\tvs, ok := vv.(string)\n\t\t\tif !ok {\n\t\t\t\treturn ErrInvalidType\n\t\t\t}\n\t\t\taud = append(aud, vs)\n\t\t}\n\tcase nil:\n\t\treturn nil\n\tdefault:\n\t\treturn ErrInvalidType\n\t}\n\n\t*s = aud\n\n\treturn\n}\n\nfunc (s ClaimStrings) MarshalJSON() (b []byte, err error) {\n\t// This handles a special case in the JWT RFC. If the string array, e.g.\n\t// used by the \"aud\" field, only contains one element, it MAY be serialized\n\t// as a single string. This may or may not be desired based on the ecosystem\n\t// of other JWT library used, so we make it configurable by the variable\n\t// MarshalSingleStringAsArray.\n\tif len(s) == 1 && !MarshalSingleStringAsArray {\n\t\treturn json.Marshal(s[0])\n\t}\n\n\treturn json.Marshal([]string(s))\n}\n"
  },
  {
    "path": "gossh/gin/jwt/validator.go",
    "content": "package jwt\n\nimport (\n\t\"crypto/subtle\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// ClaimsValidator is an interface that can be implemented by custom claims who\n// wish to execute any additional claims validation based on\n// application-specific logic. The Validate function is then executed in\n// addition to the regular claims validation and any error returned is appended\n// to the final validation result.\n//\n//\ttype MyCustomClaims struct {\n//\t    Foo string `json:\"foo\"`\n//\t    jwt.RegisteredClaims\n//\t}\n//\n//\tfunc (m MyCustomClaims) Validate() error {\n//\t    if m.Foo != \"bar\" {\n//\t        return errors.New(\"must be foobar\")\n//\t    }\n//\t    return nil\n//\t}\ntype ClaimsValidator interface {\n\tClaims\n\tValidate() error\n}\n\n// Validator is the core of the new Validation API. It is automatically used by\n// a [Parser] during parsing and can be modified with various parser options.\n//\n// The [NewValidator] function should be used to create an instance of this\n// struct.\ntype Validator struct {\n\t// leeway is an optional leeway that can be provided to account for clock skew.\n\tleeway time.Duration\n\n\t// timeFunc is used to supply the current time that is needed for\n\t// validation. If unspecified, this defaults to time.Now.\n\ttimeFunc func() time.Time\n\n\t// requireExp specifies whether the exp claim is required\n\trequireExp bool\n\n\t// verifyIat specifies whether the iat (Issued At) claim will be verified.\n\t// According to https://www.rfc-editor.org/rfc/rfc7519#section-4.1.6 this\n\t// only specifies the age of the token, but no validation check is\n\t// necessary. However, if wanted, it can be checked if the iat is\n\t// unrealistic, i.e., in the future.\n\tverifyIat bool\n\n\t// expectedAud contains the audience this token expects. Supplying an empty\n\t// string will disable aud checking.\n\texpectedAud string\n\n\t// expectedIss contains the issuer this token expects. Supplying an empty\n\t// string will disable iss checking.\n\texpectedIss string\n\n\t// expectedSub contains the subject this token expects. Supplying an empty\n\t// string will disable sub checking.\n\texpectedSub string\n}\n\n// NewValidator can be used to create a stand-alone validator with the supplied\n// options. This validator can then be used to validate already parsed claims.\n//\n// Note: Under normal circumstances, explicitly creating a validator is not\n// needed and can potentially be dangerous; instead functions of the [Parser]\n// class should be used.\n//\n// The [Validator] is only checking the *validity* of the claims, such as its\n// expiration time, but it does NOT perform *signature verification* of the\n// token.\nfunc NewValidator(opts ...ParserOption) *Validator {\n\tp := NewParser(opts...)\n\treturn p.validator\n}\n\n// Validate validates the given claims. It will also perform any custom\n// validation if claims implements the [ClaimsValidator] interface.\n//\n// Note: It will NOT perform any *signature verification* on the token that\n// contains the claims and expects that the [Claim] was already successfully\n// verified.\nfunc (v *Validator) Validate(claims Claims) error {\n\tvar (\n\t\tnow  time.Time\n\t\terrs []error = make([]error, 0, 6)\n\t\terr  error\n\t)\n\n\t// Check, if we have a time func\n\tif v.timeFunc != nil {\n\t\tnow = v.timeFunc()\n\t} else {\n\t\tnow = time.Now()\n\t}\n\n\t// We always need to check the expiration time, but usage of the claim\n\t// itself is OPTIONAL by default. requireExp overrides this behavior\n\t// and makes the exp claim mandatory.\n\tif err = v.verifyExpiresAt(claims, now, v.requireExp); err != nil {\n\t\terrs = append(errs, err)\n\t}\n\n\t// We always need to check not-before, but usage of the claim itself is\n\t// OPTIONAL.\n\tif err = v.verifyNotBefore(claims, now, false); err != nil {\n\t\terrs = append(errs, err)\n\t}\n\n\t// Check issued-at if the option is enabled\n\tif v.verifyIat {\n\t\tif err = v.verifyIssuedAt(claims, now, false); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\t// If we have an expected audience, we also require the audience claim\n\tif v.expectedAud != \"\" {\n\t\tif err = v.verifyAudience(claims, v.expectedAud, true); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\t// If we have an expected issuer, we also require the issuer claim\n\tif v.expectedIss != \"\" {\n\t\tif err = v.verifyIssuer(claims, v.expectedIss, true); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\t// If we have an expected subject, we also require the subject claim\n\tif v.expectedSub != \"\" {\n\t\tif err = v.verifySubject(claims, v.expectedSub, true); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\t// Finally, we want to give the claim itself some possibility to do some\n\t// additional custom validation based on a custom Validate function.\n\tcvt, ok := claims.(ClaimsValidator)\n\tif ok {\n\t\tif err := cvt.Validate(); err != nil {\n\t\t\terrs = append(errs, err)\n\t\t}\n\t}\n\n\tif len(errs) == 0 {\n\t\treturn nil\n\t}\n\n\treturn joinErrors(errs...)\n}\n\n// verifyExpiresAt compares the exp claim in claims against cmp. This function\n// will succeed if cmp < exp. Additional leeway is taken into account.\n//\n// If exp is not set, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifyExpiresAt(claims Claims, cmp time.Time, required bool) error {\n\texp, err := claims.GetExpirationTime()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif exp == nil {\n\t\treturn errorIfRequired(required, \"exp\")\n\t}\n\n\treturn errorIfFalse(cmp.Before((exp.Time).Add(+v.leeway)), ErrTokenExpired)\n}\n\n// verifyIssuedAt compares the iat claim in claims against cmp. This function\n// will succeed if cmp >= iat. Additional leeway is taken into account.\n//\n// If iat is not set, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifyIssuedAt(claims Claims, cmp time.Time, required bool) error {\n\tiat, err := claims.GetIssuedAt()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif iat == nil {\n\t\treturn errorIfRequired(required, \"iat\")\n\t}\n\n\treturn errorIfFalse(!cmp.Before(iat.Add(-v.leeway)), ErrTokenUsedBeforeIssued)\n}\n\n// verifyNotBefore compares the nbf claim in claims against cmp. This function\n// will return true if cmp >= nbf. Additional leeway is taken into account.\n//\n// If nbf is not set, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifyNotBefore(claims Claims, cmp time.Time, required bool) error {\n\tnbf, err := claims.GetNotBefore()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif nbf == nil {\n\t\treturn errorIfRequired(required, \"nbf\")\n\t}\n\n\treturn errorIfFalse(!cmp.Before(nbf.Add(-v.leeway)), ErrTokenNotValidYet)\n}\n\n// verifyAudience compares the aud claim against cmp.\n//\n// If aud is not set or an empty list, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifyAudience(claims Claims, cmp string, required bool) error {\n\taud, err := claims.GetAudience()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(aud) == 0 {\n\t\treturn errorIfRequired(required, \"aud\")\n\t}\n\n\t// use a var here to keep constant time compare when looping over a number of claims\n\tresult := false\n\n\tvar stringClaims string\n\tfor _, a := range aud {\n\t\tif subtle.ConstantTimeCompare([]byte(a), []byte(cmp)) != 0 {\n\t\t\tresult = true\n\t\t}\n\t\tstringClaims = stringClaims + a\n\t}\n\n\t// case where \"\" is sent in one or many aud claims\n\tif stringClaims == \"\" {\n\t\treturn errorIfRequired(required, \"aud\")\n\t}\n\n\treturn errorIfFalse(result, ErrTokenInvalidAudience)\n}\n\n// verifyIssuer compares the iss claim in claims against cmp.\n//\n// If iss is not set, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifyIssuer(claims Claims, cmp string, required bool) error {\n\tiss, err := claims.GetIssuer()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif iss == \"\" {\n\t\treturn errorIfRequired(required, \"iss\")\n\t}\n\n\treturn errorIfFalse(iss == cmp, ErrTokenInvalidIssuer)\n}\n\n// verifySubject compares the sub claim against cmp.\n//\n// If sub is not set, it will succeed if the claim is not required,\n// otherwise ErrTokenRequiredClaimMissing will be returned.\n//\n// Additionally, if any error occurs while retrieving the claim, e.g., when its\n// the wrong type, an ErrTokenUnverifiable error will be returned.\nfunc (v *Validator) verifySubject(claims Claims, cmp string, required bool) error {\n\tsub, err := claims.GetSubject()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif sub == \"\" {\n\t\treturn errorIfRequired(required, \"sub\")\n\t}\n\n\treturn errorIfFalse(sub == cmp, ErrTokenInvalidSubject)\n}\n\n// errorIfFalse returns the error specified in err, if the value is true.\n// Otherwise, nil is returned.\nfunc errorIfFalse(value bool, err error) error {\n\tif value {\n\t\treturn nil\n\t} else {\n\t\treturn err\n\t}\n}\n\n// errorIfRequired returns an ErrTokenRequiredClaimMissing error if required is\n// true. Otherwise, nil is returned.\nfunc errorIfRequired(required bool, claim string) error {\n\tif required {\n\t\treturn newError(fmt.Sprintf(\"%s claim is required\", claim), ErrTokenRequiredClaimMissing)\n\t} else {\n\t\treturn nil\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/logger.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"os\"\n\t\"time\"\n)\n\ntype consoleColorModeValue int\n\nconst (\n\tautoColor consoleColorModeValue = iota\n\tdisableColor\n\tforceColor\n)\n\nconst (\n\tgreen   = \"\\033[97;42m\"\n\twhite   = \"\\033[90;47m\"\n\tyellow  = \"\\033[90;43m\"\n\tred     = \"\\033[97;41m\"\n\tblue    = \"\\033[97;44m\"\n\tmagenta = \"\\033[97;45m\"\n\tcyan    = \"\\033[97;46m\"\n\treset   = \"\\033[0m\"\n)\n\nvar consoleColorMode = autoColor\n\n// LoggerConfig defines the config for Logger middleware.\ntype LoggerConfig struct {\n\t// Optional. Default value is gin.defaultLogFormatter\n\tFormatter LogFormatter\n\n\t// Output is a writer where logs are written.\n\t// Optional. Default value is gin.DefaultWriter.\n\tOutput io.Writer\n\n\t// SkipPaths is an url path array which logs are not written.\n\t// Optional.\n\tSkipPaths []string\n\n\t// Skip is a Skipper that indicates which logs should not be written.\n\t// Optional.\n\tSkip Skipper\n}\n\n// Skipper is a function to skip logs based on provided Context\ntype Skipper func(c *Context) bool\n\n// LogFormatter gives the signature of the formatter function passed to LoggerWithFormatter\ntype LogFormatter func(params LogFormatterParams) string\n\n// LogFormatterParams is the structure any formatter will be handed when time to log comes\ntype LogFormatterParams struct {\n\tRequest *http.Request\n\n\t// TimeStamp shows the time after the server returns a response.\n\tTimeStamp time.Time\n\t// StatusCode is HTTP response code.\n\tStatusCode int\n\t// Latency is how much time the server cost to process a certain request.\n\tLatency time.Duration\n\t// ClientIP equals Context's ClientIP method.\n\tClientIP string\n\t// Method is the HTTP method given to the request.\n\tMethod string\n\t// Path is a path the client requests.\n\tPath string\n\t// ErrorMessage is set if error has occurred in processing the request.\n\tErrorMessage string\n\t// isTerm shows whether gin's output descriptor refers to a terminal.\n\tisTerm bool\n\t// BodySize is the size of the Response Body\n\tBodySize int\n\t// Keys are the keys set on the request's context.\n\tKeys map[string]any\n}\n\n// StatusCodeColor is the ANSI color for appropriately logging http status code to a terminal.\nfunc (p *LogFormatterParams) StatusCodeColor() string {\n\tcode := p.StatusCode\n\n\tswitch {\n\tcase code >= http.StatusContinue && code < http.StatusOK:\n\t\treturn white\n\tcase code >= http.StatusOK && code < http.StatusMultipleChoices:\n\t\treturn green\n\tcase code >= http.StatusMultipleChoices && code < http.StatusBadRequest:\n\t\treturn white\n\tcase code >= http.StatusBadRequest && code < http.StatusInternalServerError:\n\t\treturn yellow\n\tdefault:\n\t\treturn red\n\t}\n}\n\n// MethodColor is the ANSI color for appropriately logging http method to a terminal.\nfunc (p *LogFormatterParams) MethodColor() string {\n\tmethod := p.Method\n\n\tswitch method {\n\tcase http.MethodGet:\n\t\treturn blue\n\tcase http.MethodPost:\n\t\treturn cyan\n\tcase http.MethodPut:\n\t\treturn yellow\n\tcase http.MethodDelete:\n\t\treturn red\n\tcase http.MethodPatch:\n\t\treturn green\n\tcase http.MethodHead:\n\t\treturn magenta\n\tcase http.MethodOptions:\n\t\treturn white\n\tdefault:\n\t\treturn reset\n\t}\n}\n\n// ResetColor resets all escape attributes.\nfunc (p *LogFormatterParams) ResetColor() string {\n\treturn reset\n}\n\n// IsOutputColor indicates whether can colors be outputted to the log.\nfunc (p *LogFormatterParams) IsOutputColor() bool {\n\treturn consoleColorMode == forceColor || (consoleColorMode == autoColor && p.isTerm)\n}\n\n// defaultLogFormatter is the default log format function Logger middleware uses.\nvar defaultLogFormatter = func(param LogFormatterParams) string {\n\tvar statusColor, methodColor, resetColor string\n\tif param.IsOutputColor() {\n\t\tstatusColor = param.StatusCodeColor()\n\t\tmethodColor = param.MethodColor()\n\t\tresetColor = param.ResetColor()\n\t}\n\n\tif param.Latency > time.Minute {\n\t\tparam.Latency = param.Latency.Truncate(time.Second)\n\t}\n\treturn fmt.Sprintf(\"[GIN] %v |%s %3d %s| %13v | %15s |%s %-7s %s %#v\\n%s\",\n\t\tparam.TimeStamp.Format(\"2006/01/02 - 15:04:05\"),\n\t\tstatusColor, param.StatusCode, resetColor,\n\t\tparam.Latency,\n\t\tparam.ClientIP,\n\t\tmethodColor, param.Method, resetColor,\n\t\tparam.Path,\n\t\tparam.ErrorMessage,\n\t)\n}\n\n// DisableConsoleColor disables color output in the console.\nfunc DisableConsoleColor() {\n\tconsoleColorMode = disableColor\n}\n\n// ForceConsoleColor force color output in the console.\nfunc ForceConsoleColor() {\n\tconsoleColorMode = forceColor\n}\n\n// ErrorLogger returns a HandlerFunc for any error type.\nfunc ErrorLogger() HandlerFunc {\n\treturn ErrorLoggerT(ErrorTypeAny)\n}\n\n// ErrorLoggerT returns a HandlerFunc for a given error type.\nfunc ErrorLoggerT(typ ErrorType) HandlerFunc {\n\treturn func(c *Context) {\n\t\tc.Next()\n\t\terrors := c.Errors.ByType(typ)\n\t\tif len(errors) > 0 {\n\t\t\tc.JSON(-1, errors)\n\t\t}\n\t}\n}\n\n// Logger instances a Logger middleware that will write the logs to gin.DefaultWriter.\n// By default, gin.DefaultWriter = os.Stdout.\nfunc Logger() HandlerFunc {\n\treturn LoggerWithConfig(LoggerConfig{})\n}\n\n// LoggerWithFormatter instance a Logger middleware with the specified log format function.\nfunc LoggerWithFormatter(f LogFormatter) HandlerFunc {\n\treturn LoggerWithConfig(LoggerConfig{\n\t\tFormatter: f,\n\t})\n}\n\n// LoggerWithWriter instance a Logger middleware with the specified writer buffer.\n// Example: os.Stdout, a file opened in write mode, a socket...\nfunc LoggerWithWriter(out io.Writer, notlogged ...string) HandlerFunc {\n\treturn LoggerWithConfig(LoggerConfig{\n\t\tOutput:    out,\n\t\tSkipPaths: notlogged,\n\t})\n}\n\n// LoggerWithConfig instance a Logger middleware with config.\nfunc LoggerWithConfig(conf LoggerConfig) HandlerFunc {\n\tformatter := conf.Formatter\n\tif formatter == nil {\n\t\tformatter = defaultLogFormatter\n\t}\n\n\tout := conf.Output\n\tif out == nil {\n\t\tout = DefaultWriter\n\t}\n\n\tnotlogged := conf.SkipPaths\n\n\tisTerm := true\n\n\tif _, ok := out.(*os.File); !ok || os.Getenv(\"TERM\") == \"dumb\" {\n\t\tisTerm = false\n\t}\n\n\tvar skip map[string]struct{}\n\n\tif length := len(notlogged); length > 0 {\n\t\tskip = make(map[string]struct{}, length)\n\n\t\tfor _, path := range notlogged {\n\t\t\tskip[path] = struct{}{}\n\t\t}\n\t}\n\n\treturn func(c *Context) {\n\t\t// Start timer\n\t\tstart := time.Now()\n\t\tpath := c.Request.URL.Path\n\t\traw := c.Request.URL.RawQuery\n\n\t\t// Process request\n\t\tc.Next()\n\n\t\t// Log only when it is not being skipped\n\t\tif _, ok := skip[path]; ok || (conf.Skip != nil && conf.Skip(c)) {\n\t\t\treturn\n\t\t}\n\n\t\tparam := LogFormatterParams{\n\t\t\tRequest: c.Request,\n\t\t\tisTerm:  isTerm,\n\t\t\tKeys:    c.Keys,\n\t\t}\n\n\t\t// Stop timer\n\t\tparam.TimeStamp = time.Now()\n\t\tparam.Latency = param.TimeStamp.Sub(start)\n\n\t\tparam.ClientIP = c.ClientIP()\n\t\tparam.Method = c.Request.Method\n\t\tparam.StatusCode = c.Writer.Status()\n\t\tparam.ErrorMessage = c.Errors.ByType(ErrorTypePrivate).String()\n\n\t\tparam.BodySize = c.Writer.Size()\n\n\t\tif raw != \"\" {\n\t\t\tpath = path + \"?\" + raw\n\t\t}\n\n\t\tparam.Path = path\n\n\t\tfmt.Fprint(out, formatter(param))\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/mode.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"flag\"\n\t\"io\"\n\t\"os\"\n\n\t\"gossh/gin/binding\"\n)\n\n// EnvGinMode indicates environment name for gin mode.\nconst EnvGinMode = \"GIN_MODE\"\n\nconst (\n\t// DebugMode indicates gin mode is debug.\n\tDebugMode = \"debug\"\n\t// ReleaseMode indicates gin mode is release.\n\tReleaseMode = \"release\"\n\t// TestMode indicates gin mode is test.\n\tTestMode = \"test\"\n)\n\nconst (\n\tdebugCode = iota\n\treleaseCode\n\ttestCode\n)\n\n// DefaultWriter is the default io.Writer used by Gin for debug output and\n// middleware output like Logger() or Recovery().\n// Note that both Logger and Recovery provides custom ways to configure their\n// output io.Writer.\n// To support coloring in Windows use:\n//\n//\timport \"github.com/mattn/go-colorable\"\n//\tgin.DefaultWriter = colorable.NewColorableStdout()\nvar DefaultWriter io.Writer = os.Stdout\n\n// DefaultErrorWriter is the default io.Writer used by Gin to debug errors\nvar DefaultErrorWriter io.Writer = os.Stderr\n\nvar (\n\tginMode  = debugCode\n\tmodeName = DebugMode\n)\n\nfunc init() {\n\tmode := os.Getenv(EnvGinMode)\n\tSetMode(mode)\n}\n\n// SetMode sets gin mode according to input string.\nfunc SetMode(value string) {\n\tif value == \"\" {\n\t\tif flag.Lookup(\"test.v\") != nil {\n\t\t\tvalue = TestMode\n\t\t} else {\n\t\t\tvalue = DebugMode\n\t\t}\n\t}\n\n\tswitch value {\n\tcase DebugMode:\n\t\tginMode = debugCode\n\tcase ReleaseMode:\n\t\tginMode = releaseCode\n\tcase TestMode:\n\t\tginMode = testCode\n\tdefault:\n\t\tpanic(\"gin mode unknown: \" + value + \" (available mode: debug release test)\")\n\t}\n\n\tmodeName = value\n}\n\n// DisableBindValidation closes the default validator.\nfunc DisableBindValidation() {\n\tbinding.Validator = nil\n}\n\n// EnableJsonDecoderUseNumber sets true for binding.EnableDecoderUseNumber to\n// call the UseNumber method on the JSON Decoder instance.\nfunc EnableJsonDecoderUseNumber() {\n\tbinding.EnableDecoderUseNumber = true\n}\n\n// EnableJsonDecoderDisallowUnknownFields sets true for binding.EnableDecoderDisallowUnknownFields to\n// call the DisallowUnknownFields method on the JSON Decoder instance.\nfunc EnableJsonDecoderDisallowUnknownFields() {\n\tbinding.EnableDecoderDisallowUnknownFields = true\n}\n\n// Mode returns current gin mode.\nfunc Mode() string {\n\treturn modeName\n}\n"
  },
  {
    "path": "gossh/gin/path.go",
    "content": "// Copyright 2013 Julien Schmidt. All rights reserved.\n// Based on the path package, Copyright 2009 The Go Authors.\n// Use of this source code is governed by a BSD-style license that can be found\n// at https://github.com/julienschmidt/httprouter/blob/master/LICENSE.\n\npackage gin\n\n// cleanPath is the URL version of path.Clean, it returns a canonical URL path\n// for p, eliminating . and .. elements.\n//\n// The following rules are applied iteratively until no further processing can\n// be done:\n//  1. Replace multiple slashes with a single slash.\n//  2. Eliminate each . path name element (the current directory).\n//  3. Eliminate each inner .. path name element (the parent directory)\n//     along with the non-.. element that precedes it.\n//  4. Eliminate .. elements that begin a rooted path:\n//     that is, replace \"/..\" by \"/\" at the beginning of a path.\n//\n// If the result of this process is an empty string, \"/\" is returned.\nfunc cleanPath(p string) string {\n\tconst stackBufSize = 128\n\t// Turn empty string into \"/\"\n\tif p == \"\" {\n\t\treturn \"/\"\n\t}\n\n\t// Reasonably sized buffer on stack to avoid allocations in the common case.\n\t// If a larger buffer is required, it gets allocated dynamically.\n\tbuf := make([]byte, 0, stackBufSize)\n\n\tn := len(p)\n\n\t// Invariants:\n\t//      reading from path; r is index of next byte to process.\n\t//      writing to buf; w is index of next byte to write.\n\n\t// path must start with '/'\n\tr := 1\n\tw := 1\n\n\tif p[0] != '/' {\n\t\tr = 0\n\n\t\tif n+1 > stackBufSize {\n\t\t\tbuf = make([]byte, n+1)\n\t\t} else {\n\t\t\tbuf = buf[:n+1]\n\t\t}\n\t\tbuf[0] = '/'\n\t}\n\n\ttrailing := n > 1 && p[n-1] == '/'\n\n\t// A bit more clunky without a 'lazybuf' like the path package, but the loop\n\t// gets completely inlined (bufApp calls).\n\t// loop has no expensive function calls (except 1x make)\t\t// So in contrast to the path package this loop has no expensive function\n\t// calls (except make, if needed).\n\n\tfor r < n {\n\t\tswitch {\n\t\tcase p[r] == '/':\n\t\t\t// empty path element, trailing slash is added after the end\n\t\t\tr++\n\n\t\tcase p[r] == '.' && r+1 == n:\n\t\t\ttrailing = true\n\t\t\tr++\n\n\t\tcase p[r] == '.' && p[r+1] == '/':\n\t\t\t// . element\n\t\t\tr += 2\n\n\t\tcase p[r] == '.' && p[r+1] == '.' && (r+2 == n || p[r+2] == '/'):\n\t\t\t// .. element: remove to last /\n\t\t\tr += 3\n\n\t\t\tif w > 1 {\n\t\t\t\t// can backtrack\n\t\t\t\tw--\n\n\t\t\t\tif len(buf) == 0 {\n\t\t\t\t\tfor w > 1 && p[w] != '/' {\n\t\t\t\t\t\tw--\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor w > 1 && buf[w] != '/' {\n\t\t\t\t\t\tw--\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\tdefault:\n\t\t\t// Real path element.\n\t\t\t// Add slash if needed\n\t\t\tif w > 1 {\n\t\t\t\tbufApp(&buf, p, w, '/')\n\t\t\t\tw++\n\t\t\t}\n\n\t\t\t// Copy element\n\t\t\tfor r < n && p[r] != '/' {\n\t\t\t\tbufApp(&buf, p, w, p[r])\n\t\t\t\tw++\n\t\t\t\tr++\n\t\t\t}\n\t\t}\n\t}\n\n\t// Re-append trailing slash\n\tif trailing && w > 1 {\n\t\tbufApp(&buf, p, w, '/')\n\t\tw++\n\t}\n\n\t// If the original string was not modified (or only shortened at the end),\n\t// return the respective substring of the original string.\n\t// Otherwise return a new string from the buffer.\n\tif len(buf) == 0 {\n\t\treturn p[:w]\n\t}\n\treturn string(buf[:w])\n}\n\n// Internal helper to lazily create a buffer if necessary.\n// Calls to this function get inlined.\nfunc bufApp(buf *[]byte, s string, w int, c byte) {\n\tb := *buf\n\tif len(b) == 0 {\n\t\t// No modification of the original string so far.\n\t\t// If the next character is the same as in the original string, we do\n\t\t// not yet have to allocate a buffer.\n\t\tif s[w] == c {\n\t\t\treturn\n\t\t}\n\n\t\t// Otherwise use either the stack buffer, if it is large enough, or\n\t\t// allocate a new buffer on the heap, and copy all previous characters.\n\t\tlength := len(s)\n\t\tif length > cap(b) {\n\t\t\t*buf = make([]byte, length)\n\t\t} else {\n\t\t\t*buf = (*buf)[:length]\n\t\t}\n\t\tb = *buf\n\n\t\tcopy(b, s[:w])\n\t}\n\tb[w] = c\n}\n"
  },
  {
    "path": "gossh/gin/recovery.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httputil\"\n\t\"os\"\n\t\"runtime\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\tdunno     = []byte(\"???\")\n\tcenterDot = []byte(\"·\")\n\tdot       = []byte(\".\")\n\tslash     = []byte(\"/\")\n)\n\n// RecoveryFunc defines the function passable to CustomRecovery.\ntype RecoveryFunc func(c *Context, err any)\n\n// Recovery returns a middleware that recovers from any panics and writes a 500 if there was one.\nfunc Recovery() HandlerFunc {\n\treturn RecoveryWithWriter(DefaultErrorWriter)\n}\n\n// CustomRecovery returns a middleware that recovers from any panics and calls the provided handle func to handle it.\nfunc CustomRecovery(handle RecoveryFunc) HandlerFunc {\n\treturn RecoveryWithWriter(DefaultErrorWriter, handle)\n}\n\n// RecoveryWithWriter returns a middleware for a given writer that recovers from any panics and writes a 500 if there was one.\nfunc RecoveryWithWriter(out io.Writer, recovery ...RecoveryFunc) HandlerFunc {\n\tif len(recovery) > 0 {\n\t\treturn CustomRecoveryWithWriter(out, recovery[0])\n\t}\n\treturn CustomRecoveryWithWriter(out, defaultHandleRecovery)\n}\n\n// CustomRecoveryWithWriter returns a middleware for a given writer that recovers from any panics and calls the provided handle func to handle it.\nfunc CustomRecoveryWithWriter(out io.Writer, handle RecoveryFunc) HandlerFunc {\n\tvar logger *log.Logger\n\tif out != nil {\n\t\tlogger = log.New(out, \"\\n\\n\\x1b[31m\", log.LstdFlags)\n\t}\n\treturn func(c *Context) {\n\t\tdefer func() {\n\t\t\tif err := recover(); err != nil {\n\t\t\t\t// Check for a broken connection, as it is not really a\n\t\t\t\t// condition that warrants a panic stack trace.\n\t\t\t\tvar brokenPipe bool\n\t\t\t\tif ne, ok := err.(*net.OpError); ok {\n\t\t\t\t\tvar se *os.SyscallError\n\t\t\t\t\tif errors.As(ne, &se) {\n\t\t\t\t\t\tseStr := strings.ToLower(se.Error())\n\t\t\t\t\t\tif strings.Contains(seStr, \"broken pipe\") ||\n\t\t\t\t\t\t\tstrings.Contains(seStr, \"connection reset by peer\") {\n\t\t\t\t\t\t\tbrokenPipe = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif logger != nil {\n\t\t\t\t\tstack := stack(3)\n\t\t\t\t\thttpRequest, _ := httputil.DumpRequest(c.Request, false)\n\t\t\t\t\theaders := strings.Split(string(httpRequest), \"\\r\\n\")\n\t\t\t\t\tfor idx, header := range headers {\n\t\t\t\t\t\tcurrent := strings.Split(header, \":\")\n\t\t\t\t\t\tif current[0] == \"Authorization\" {\n\t\t\t\t\t\t\theaders[idx] = current[0] + \": *\"\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\theadersToStr := strings.Join(headers, \"\\r\\n\")\n\t\t\t\t\tif brokenPipe {\n\t\t\t\t\t\tlogger.Printf(\"%s\\n%s%s\", err, headersToStr, reset)\n\t\t\t\t\t} else if IsDebugging() {\n\t\t\t\t\t\tlogger.Printf(\"[Recovery] %s panic recovered:\\n%s\\n%s\\n%s%s\",\n\t\t\t\t\t\t\ttimeFormat(time.Now()), headersToStr, err, stack, reset)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlogger.Printf(\"[Recovery] %s panic recovered:\\n%s\\n%s%s\",\n\t\t\t\t\t\t\ttimeFormat(time.Now()), err, stack, reset)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif brokenPipe {\n\t\t\t\t\t// If the connection is dead, we can't write a status to it.\n\t\t\t\t\tc.Error(err.(error)) //nolint: errcheck\n\t\t\t\t\tc.Abort()\n\t\t\t\t} else {\n\t\t\t\t\thandle(c, err)\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t\tc.Next()\n\t}\n}\n\nfunc defaultHandleRecovery(c *Context, _ any) {\n\tc.AbortWithStatus(http.StatusInternalServerError)\n}\n\n// stack returns a nicely formatted stack frame, skipping skip frames.\nfunc stack(skip int) []byte {\n\tbuf := new(bytes.Buffer) // the returned data\n\t// As we loop, we open files and read them. These variables record the currently\n\t// loaded file.\n\tvar lines [][]byte\n\tvar lastFile string\n\tfor i := skip; ; i++ { // Skip the expected number of frames\n\t\tpc, file, line, ok := runtime.Caller(i)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\t// Print this much at least.  If we can't find the source, it won't show.\n\t\tfmt.Fprintf(buf, \"%s:%d (0x%x)\\n\", file, line, pc)\n\t\tif file != lastFile {\n\t\t\tdata, err := os.ReadFile(file)\n\t\t\tif err != nil {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tlines = bytes.Split(data, []byte{'\\n'})\n\t\t\tlastFile = file\n\t\t}\n\t\tfmt.Fprintf(buf, \"\\t%s: %s\\n\", function(pc), source(lines, line))\n\t}\n\treturn buf.Bytes()\n}\n\n// source returns a space-trimmed slice of the n'th line.\nfunc source(lines [][]byte, n int) []byte {\n\tn-- // in stack trace, lines are 1-indexed but our array is 0-indexed\n\tif n < 0 || n >= len(lines) {\n\t\treturn dunno\n\t}\n\treturn bytes.TrimSpace(lines[n])\n}\n\n// function returns, if possible, the name of the function containing the PC.\nfunc function(pc uintptr) []byte {\n\tfn := runtime.FuncForPC(pc)\n\tif fn == nil {\n\t\treturn dunno\n\t}\n\tname := []byte(fn.Name())\n\t// The name includes the path name to the package, which is unnecessary\n\t// since the file name is already included.  Plus, it has center dots.\n\t// That is, we see\n\t//\truntime/debug.*T·ptrmethod\n\t// and want\n\t//\t*T.ptrmethod\n\t// Also the package path might contain dot (e.g. code.google.com/...),\n\t// so first eliminate the path prefix\n\tif lastSlash := bytes.LastIndex(name, slash); lastSlash >= 0 {\n\t\tname = name[lastSlash+1:]\n\t}\n\tif period := bytes.Index(name, dot); period >= 0 {\n\t\tname = name[period+1:]\n\t}\n\tname = bytes.ReplaceAll(name, centerDot, dot)\n\treturn name\n}\n\n// timeFormat returns a customized time string for logger.\nfunc timeFormat(t time.Time) string {\n\treturn t.Format(\"2006/01/02 - 15:04:05\")\n}\n"
  },
  {
    "path": "gossh/gin/render/data.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport \"net/http\"\n\n// Data contains ContentType and bytes data.\ntype Data struct {\n\tContentType string\n\tData        []byte\n}\n\n// Render (Data) writes data with custom ContentType.\nfunc (r Data) Render(w http.ResponseWriter) (err error) {\n\tr.WriteContentType(w)\n\t_, err = w.Write(r.Data)\n\treturn\n}\n\n// WriteContentType (Data) writes custom ContentType.\nfunc (r Data) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, []string{r.ContentType})\n}\n"
  },
  {
    "path": "gossh/gin/render/html.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"html/template\"\n\t\"net/http\"\n)\n\n// Delims represents a set of Left and Right delimiters for HTML template rendering.\ntype Delims struct {\n\t// Left delimiter, defaults to {{.\n\tLeft string\n\t// Right delimiter, defaults to }}.\n\tRight string\n}\n\n// HTMLRender interface is to be implemented by HTMLProduction and HTMLDebug.\ntype HTMLRender interface {\n\t// Instance returns an HTML instance.\n\tInstance(string, any) Render\n}\n\n// HTMLProduction contains template reference and its delims.\ntype HTMLProduction struct {\n\tTemplate *template.Template\n\tDelims   Delims\n}\n\n// HTMLDebug contains template delims and pattern and function with file list.\ntype HTMLDebug struct {\n\tFiles   []string\n\tGlob    string\n\tDelims  Delims\n\tFuncMap template.FuncMap\n}\n\n// HTML contains template reference and its name with given interface object.\ntype HTML struct {\n\tTemplate *template.Template\n\tName     string\n\tData     any\n}\n\nvar htmlContentType = []string{\"text/html; charset=utf-8\"}\n\n// Instance (HTMLProduction) returns an HTML instance which it realizes Render interface.\nfunc (r HTMLProduction) Instance(name string, data any) Render {\n\treturn HTML{\n\t\tTemplate: r.Template,\n\t\tName:     name,\n\t\tData:     data,\n\t}\n}\n\n// Instance (HTMLDebug) returns an HTML instance which it realizes Render interface.\nfunc (r HTMLDebug) Instance(name string, data any) Render {\n\treturn HTML{\n\t\tTemplate: r.loadTemplate(),\n\t\tName:     name,\n\t\tData:     data,\n\t}\n}\nfunc (r HTMLDebug) loadTemplate() *template.Template {\n\tif r.FuncMap == nil {\n\t\tr.FuncMap = template.FuncMap{}\n\t}\n\tif len(r.Files) > 0 {\n\t\treturn template.Must(template.New(\"\").Delims(r.Delims.Left, r.Delims.Right).Funcs(r.FuncMap).ParseFiles(r.Files...))\n\t}\n\tif r.Glob != \"\" {\n\t\treturn template.Must(template.New(\"\").Delims(r.Delims.Left, r.Delims.Right).Funcs(r.FuncMap).ParseGlob(r.Glob))\n\t}\n\tpanic(\"the HTML debug render was created without files or glob pattern\")\n}\n\n// Render (HTML) executes template and writes its result with custom ContentType for response.\nfunc (r HTML) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\n\tif r.Name == \"\" {\n\t\treturn r.Template.Execute(w, r.Data)\n\t}\n\treturn r.Template.ExecuteTemplate(w, r.Name, r.Data)\n}\n\n// WriteContentType (HTML) writes HTML ContentType.\nfunc (r HTML) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, htmlContentType)\n}\n"
  },
  {
    "path": "gossh/gin/render/json.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"html/template\"\n\t\"net/http\"\n\n\t\"gossh/gin/internal/bytesconv\"\n\t\"gossh/gin/internal/json\"\n)\n\n// JSON contains the given interface object.\ntype JSON struct {\n\tData any\n}\n\n// IndentedJSON contains the given interface object.\ntype IndentedJSON struct {\n\tData any\n}\n\n// SecureJSON contains the given interface object and its prefix.\ntype SecureJSON struct {\n\tPrefix string\n\tData   any\n}\n\n// JsonpJSON contains the given interface object its callback.\ntype JsonpJSON struct {\n\tCallback string\n\tData     any\n}\n\n// AsciiJSON contains the given interface object.\ntype AsciiJSON struct {\n\tData any\n}\n\n// PureJSON contains the given interface object.\ntype PureJSON struct {\n\tData any\n}\n\nvar (\n\tjsonContentType      = []string{\"application/json; charset=utf-8\"}\n\tjsonpContentType     = []string{\"application/javascript; charset=utf-8\"}\n\tjsonASCIIContentType = []string{\"application/json\"}\n)\n\n// Render (JSON) writes data with custom ContentType.\nfunc (r JSON) Render(w http.ResponseWriter) error {\n\treturn WriteJSON(w, r.Data)\n}\n\n// WriteContentType (JSON) writes JSON ContentType.\nfunc (r JSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonContentType)\n}\n\n// WriteJSON marshals the given interface object and writes it with custom ContentType.\nfunc WriteJSON(w http.ResponseWriter, obj any) error {\n\twriteContentType(w, jsonContentType)\n\tjsonBytes, err := json.Marshal(obj)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = w.Write(jsonBytes)\n\treturn err\n}\n\n// Render (IndentedJSON) marshals the given interface object and writes it with custom ContentType.\nfunc (r IndentedJSON) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\tjsonBytes, err := json.MarshalIndent(r.Data, \"\", \"    \")\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = w.Write(jsonBytes)\n\treturn err\n}\n\n// WriteContentType (IndentedJSON) writes JSON ContentType.\nfunc (r IndentedJSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonContentType)\n}\n\n// Render (SecureJSON) marshals the given interface object and writes it with custom ContentType.\nfunc (r SecureJSON) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\tjsonBytes, err := json.Marshal(r.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\t// if the jsonBytes is array values\n\tif bytes.HasPrefix(jsonBytes, bytesconv.StringToBytes(\"[\")) && bytes.HasSuffix(jsonBytes,\n\t\tbytesconv.StringToBytes(\"]\")) {\n\t\tif _, err = w.Write(bytesconv.StringToBytes(r.Prefix)); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t_, err = w.Write(jsonBytes)\n\treturn err\n}\n\n// WriteContentType (SecureJSON) writes JSON ContentType.\nfunc (r SecureJSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonContentType)\n}\n\n// Render (JsonpJSON) marshals the given interface object and writes it and its callback with custom ContentType.\nfunc (r JsonpJSON) Render(w http.ResponseWriter) (err error) {\n\tr.WriteContentType(w)\n\tret, err := json.Marshal(r.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif r.Callback == \"\" {\n\t\t_, err = w.Write(ret)\n\t\treturn err\n\t}\n\n\tcallback := template.JSEscapeString(r.Callback)\n\tif _, err = w.Write(bytesconv.StringToBytes(callback)); err != nil {\n\t\treturn err\n\t}\n\n\tif _, err = w.Write(bytesconv.StringToBytes(\"(\")); err != nil {\n\t\treturn err\n\t}\n\n\tif _, err = w.Write(ret); err != nil {\n\t\treturn err\n\t}\n\n\tif _, err = w.Write(bytesconv.StringToBytes(\");\")); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n// WriteContentType (JsonpJSON) writes Javascript ContentType.\nfunc (r JsonpJSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonpContentType)\n}\n\n// Render (AsciiJSON) marshals the given interface object and writes it with custom ContentType.\nfunc (r AsciiJSON) Render(w http.ResponseWriter) (err error) {\n\tr.WriteContentType(w)\n\tret, err := json.Marshal(r.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar buffer bytes.Buffer\n\tfor _, r := range bytesconv.BytesToString(ret) {\n\t\tcvt := string(r)\n\t\tif r >= 128 {\n\t\t\tcvt = fmt.Sprintf(\"\\\\u%04x\", int64(r))\n\t\t}\n\t\tbuffer.WriteString(cvt)\n\t}\n\n\t_, err = w.Write(buffer.Bytes())\n\treturn err\n}\n\n// WriteContentType (AsciiJSON) writes JSON ContentType.\nfunc (r AsciiJSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonASCIIContentType)\n}\n\n// Render (PureJSON) writes custom ContentType and encodes the given interface object.\nfunc (r PureJSON) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\tencoder := json.NewEncoder(w)\n\tencoder.SetEscapeHTML(false)\n\treturn encoder.Encode(r.Data)\n}\n\n// WriteContentType (PureJSON) writes custom ContentType.\nfunc (r PureJSON) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, jsonContentType)\n}\n"
  },
  {
    "path": "gossh/gin/render/reader.go",
    "content": "// Copyright 2018 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"io\"\n\t\"net/http\"\n\t\"strconv\"\n)\n\n// Reader contains the IO reader and its length, and custom ContentType and other headers.\ntype Reader struct {\n\tContentType   string\n\tContentLength int64\n\tReader        io.Reader\n\tHeaders       map[string]string\n}\n\n// Render (Reader) writes data with custom ContentType and headers.\nfunc (r Reader) Render(w http.ResponseWriter) (err error) {\n\tr.WriteContentType(w)\n\tif r.ContentLength >= 0 {\n\t\tif r.Headers == nil {\n\t\t\tr.Headers = map[string]string{}\n\t\t}\n\t\tr.Headers[\"Content-Length\"] = strconv.FormatInt(r.ContentLength, 10)\n\t}\n\tr.writeHeaders(w, r.Headers)\n\t_, err = io.Copy(w, r.Reader)\n\treturn\n}\n\n// WriteContentType (Reader) writes custom ContentType.\nfunc (r Reader) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, []string{r.ContentType})\n}\n\n// writeHeaders writes custom Header.\nfunc (r Reader) writeHeaders(w http.ResponseWriter, headers map[string]string) {\n\theader := w.Header()\n\tfor k, v := range headers {\n\t\tif header.Get(k) == \"\" {\n\t\t\theader.Set(k, v)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/render/redirect.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n)\n\n// Redirect contains the http request reference and redirects status code and location.\ntype Redirect struct {\n\tCode     int\n\tRequest  *http.Request\n\tLocation string\n}\n\n// Render (Redirect) redirects the http request to new location and writes redirect response.\nfunc (r Redirect) Render(w http.ResponseWriter) error {\n\tif (r.Code < http.StatusMultipleChoices || r.Code > http.StatusPermanentRedirect) && r.Code != http.StatusCreated {\n\t\tpanic(fmt.Sprintf(\"Cannot redirect with status code %d\", r.Code))\n\t}\n\thttp.Redirect(w, r.Request, r.Location, r.Code)\n\treturn nil\n}\n\n// WriteContentType (Redirect) don't write any ContentType.\nfunc (r Redirect) WriteContentType(http.ResponseWriter) {}\n"
  },
  {
    "path": "gossh/gin/render/render.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport \"net/http\"\n\n// Render interface is to be implemented by JSON, XML, HTML, YAML and so on.\ntype Render interface {\n\t// Render writes data with custom ContentType.\n\tRender(http.ResponseWriter) error\n\t// WriteContentType writes custom ContentType.\n\tWriteContentType(w http.ResponseWriter)\n}\n\nvar (\n\t_ Render     = (*JSON)(nil)\n\t_ Render     = (*IndentedJSON)(nil)\n\t_ Render     = (*SecureJSON)(nil)\n\t_ Render     = (*JsonpJSON)(nil)\n\t_ Render     = (*XML)(nil)\n\t_ Render     = (*String)(nil)\n\t_ Render     = (*Redirect)(nil)\n\t_ Render     = (*Data)(nil)\n\t_ Render     = (*HTML)(nil)\n\t_ HTMLRender = (*HTMLDebug)(nil)\n\t_ HTMLRender = (*HTMLProduction)(nil)\n\t_ Render     = (*Reader)(nil)\n\t_ Render     = (*AsciiJSON)(nil)\n)\n\nfunc writeContentType(w http.ResponseWriter, value []string) {\n\theader := w.Header()\n\tif val := header[\"Content-Type\"]; len(val) == 0 {\n\t\theader[\"Content-Type\"] = value\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/render/text.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"fmt\"\n\t\"net/http\"\n\n\t\"gossh/gin/internal/bytesconv\"\n)\n\n// String contains the given interface object slice and its format.\ntype String struct {\n\tFormat string\n\tData   []any\n}\n\nvar plainContentType = []string{\"text/plain; charset=utf-8\"}\n\n// Render (String) writes data with custom ContentType.\nfunc (r String) Render(w http.ResponseWriter) error {\n\treturn WriteString(w, r.Format, r.Data)\n}\n\n// WriteContentType (String) writes Plain ContentType.\nfunc (r String) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, plainContentType)\n}\n\n// WriteString writes data according to its format and write custom ContentType.\nfunc WriteString(w http.ResponseWriter, format string, data []any) (err error) {\n\twriteContentType(w, plainContentType)\n\tif len(data) > 0 {\n\t\t_, err = fmt.Fprintf(w, format, data...)\n\t\treturn\n\t}\n\t_, err = w.Write(bytesconv.StringToBytes(format))\n\treturn\n}\n"
  },
  {
    "path": "gossh/gin/render/xml.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage render\n\nimport (\n\t\"encoding/xml\"\n\t\"net/http\"\n)\n\n// XML contains the given interface object.\ntype XML struct {\n\tData any\n}\n\nvar xmlContentType = []string{\"application/xml; charset=utf-8\"}\n\n// Render (XML) encodes the given interface object and writes data with custom ContentType.\nfunc (r XML) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\treturn xml.NewEncoder(w).Encode(r.Data)\n}\n\n// WriteContentType (XML) writes XML ContentType for response.\nfunc (r XML) WriteContentType(w http.ResponseWriter) {\n\twriteContentType(w, xmlContentType)\n}\n"
  },
  {
    "path": "gossh/gin/response_writer.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n)\n\nconst (\n\tnoWritten     = -1\n\tdefaultStatus = http.StatusOK\n)\n\n// ResponseWriter ...\ntype ResponseWriter interface {\n\thttp.ResponseWriter\n\thttp.Hijacker\n\thttp.Flusher\n\thttp.CloseNotifier\n\n\t// Status returns the HTTP response status code of the current request.\n\tStatus() int\n\n\t// Size returns the number of bytes already written into the response http body.\n\t// See Written()\n\tSize() int\n\n\t// WriteString writes the string into the response body.\n\tWriteString(string) (int, error)\n\n\t// Written returns true if the response body was already written.\n\tWritten() bool\n\n\t// WriteHeaderNow forces to write the http header (status code + headers).\n\tWriteHeaderNow()\n\n\t// Pusher get the http.Pusher for server push\n\tPusher() http.Pusher\n}\n\ntype responseWriter struct {\n\thttp.ResponseWriter\n\tsize   int\n\tstatus int\n}\n\nvar _ ResponseWriter = (*responseWriter)(nil)\n\nfunc (w *responseWriter) Unwrap() http.ResponseWriter {\n\treturn w.ResponseWriter\n}\n\nfunc (w *responseWriter) reset(writer http.ResponseWriter) {\n\tw.ResponseWriter = writer\n\tw.size = noWritten\n\tw.status = defaultStatus\n}\n\nfunc (w *responseWriter) WriteHeader(code int) {\n\tif code > 0 && w.status != code {\n\t\tif w.Written() {\n\t\t\tdebugPrint(\"[WARNING] Headers were already written. Wanted to override status code %d with %d\", w.status, code)\n\t\t\treturn\n\t\t}\n\t\tw.status = code\n\t}\n}\n\nfunc (w *responseWriter) WriteHeaderNow() {\n\tif !w.Written() {\n\t\tw.size = 0\n\t\tw.ResponseWriter.WriteHeader(w.status)\n\t}\n}\n\nfunc (w *responseWriter) Write(data []byte) (n int, err error) {\n\tw.WriteHeaderNow()\n\tn, err = w.ResponseWriter.Write(data)\n\tw.size += n\n\treturn\n}\n\nfunc (w *responseWriter) WriteString(s string) (n int, err error) {\n\tw.WriteHeaderNow()\n\tn, err = io.WriteString(w.ResponseWriter, s)\n\tw.size += n\n\treturn\n}\n\nfunc (w *responseWriter) Status() int {\n\treturn w.status\n}\n\nfunc (w *responseWriter) Size() int {\n\treturn w.size\n}\n\nfunc (w *responseWriter) Written() bool {\n\treturn w.size != noWritten\n}\n\n// Hijack implements the http.Hijacker interface.\nfunc (w *responseWriter) Hijack() (net.Conn, *bufio.ReadWriter, error) {\n\tif w.size < 0 {\n\t\tw.size = 0\n\t}\n\treturn w.ResponseWriter.(http.Hijacker).Hijack()\n}\n\n// CloseNotify implements the http.CloseNotifier interface.\nfunc (w *responseWriter) CloseNotify() <-chan bool {\n\treturn w.ResponseWriter.(http.CloseNotifier).CloseNotify()\n}\n\n// Flush implements the http.Flusher interface.\nfunc (w *responseWriter) Flush() {\n\tw.WriteHeaderNow()\n\tw.ResponseWriter.(http.Flusher).Flush()\n}\n\nfunc (w *responseWriter) Pusher() (pusher http.Pusher) {\n\tif pusher, ok := w.ResponseWriter.(http.Pusher); ok {\n\t\treturn pusher\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/gin/routergroup.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"net/http\"\n\t\"path\"\n\t\"regexp\"\n\t\"strings\"\n)\n\nvar (\n\t// regEnLetter matches english letters for http method name\n\tregEnLetter = regexp.MustCompile(\"^[A-Z]+$\")\n\n\t// anyMethods for RouterGroup Any method\n\tanyMethods = []string{\n\t\thttp.MethodGet, http.MethodPost, http.MethodPut, http.MethodPatch,\n\t\thttp.MethodHead, http.MethodOptions, http.MethodDelete, http.MethodConnect,\n\t\thttp.MethodTrace,\n\t}\n)\n\n// IRouter defines all router handle interface includes single and group router.\ntype IRouter interface {\n\tIRoutes\n\tGroup(string, ...HandlerFunc) *RouterGroup\n}\n\n// IRoutes defines all router handle interface.\ntype IRoutes interface {\n\tUse(...HandlerFunc) IRoutes\n\n\tHandle(string, string, ...HandlerFunc) IRoutes\n\tAny(string, ...HandlerFunc) IRoutes\n\tGET(string, ...HandlerFunc) IRoutes\n\tPOST(string, ...HandlerFunc) IRoutes\n\tDELETE(string, ...HandlerFunc) IRoutes\n\tPATCH(string, ...HandlerFunc) IRoutes\n\tPUT(string, ...HandlerFunc) IRoutes\n\tOPTIONS(string, ...HandlerFunc) IRoutes\n\tHEAD(string, ...HandlerFunc) IRoutes\n\tMatch([]string, string, ...HandlerFunc) IRoutes\n\n\tStaticFile(string, string) IRoutes\n\tStaticFileFS(string, string, http.FileSystem) IRoutes\n\tStatic(string, string) IRoutes\n\tStaticFS(string, http.FileSystem) IRoutes\n}\n\n// RouterGroup is used internally to configure router, a RouterGroup is associated with\n// a prefix and an array of handlers (middleware).\ntype RouterGroup struct {\n\tHandlers HandlersChain\n\tbasePath string\n\tengine   *Engine\n\troot     bool\n}\n\nvar _ IRouter = (*RouterGroup)(nil)\n\n// Use adds middleware to the group, see example code in GitHub.\nfunc (group *RouterGroup) Use(middleware ...HandlerFunc) IRoutes {\n\tgroup.Handlers = append(group.Handlers, middleware...)\n\treturn group.returnObj()\n}\n\n// Group creates a new router group. You should add all the routes that have common middlewares or the same path prefix.\n// For example, all the routes that use a common middleware for authorization could be grouped.\nfunc (group *RouterGroup) Group(relativePath string, handlers ...HandlerFunc) *RouterGroup {\n\treturn &RouterGroup{\n\t\tHandlers: group.combineHandlers(handlers),\n\t\tbasePath: group.calculateAbsolutePath(relativePath),\n\t\tengine:   group.engine,\n\t}\n}\n\n// BasePath returns the base path of router group.\n// For example, if v := router.Group(\"/rest/n/v1/api\"), v.BasePath() is \"/rest/n/v1/api\".\nfunc (group *RouterGroup) BasePath() string {\n\treturn group.basePath\n}\n\nfunc (group *RouterGroup) handle(httpMethod, relativePath string, handlers HandlersChain) IRoutes {\n\tabsolutePath := group.calculateAbsolutePath(relativePath)\n\thandlers = group.combineHandlers(handlers)\n\tgroup.engine.addRoute(httpMethod, absolutePath, handlers)\n\treturn group.returnObj()\n}\n\n// Handle registers a new request handle and middleware with the given path and method.\n// The last handler should be the real handler, the other ones should be middleware that can and should be shared among different routes.\n// See the example code in GitHub.\n//\n// For GET, POST, PUT, PATCH and DELETE requests the respective shortcut\n// functions can be used.\n//\n// This function is intended for bulk loading and to allow the usage of less\n// frequently used, non-standardized or custom methods (e.g. for internal\n// communication with a proxy).\nfunc (group *RouterGroup) Handle(httpMethod, relativePath string, handlers ...HandlerFunc) IRoutes {\n\tif matched := regEnLetter.MatchString(httpMethod); !matched {\n\t\tpanic(\"http method \" + httpMethod + \" is not valid\")\n\t}\n\treturn group.handle(httpMethod, relativePath, handlers)\n}\n\n// POST is a shortcut for router.Handle(\"POST\", path, handlers).\nfunc (group *RouterGroup) POST(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodPost, relativePath, handlers)\n}\n\n// GET is a shortcut for router.Handle(\"GET\", path, handlers).\nfunc (group *RouterGroup) GET(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodGet, relativePath, handlers)\n}\n\n// DELETE is a shortcut for router.Handle(\"DELETE\", path, handlers).\nfunc (group *RouterGroup) DELETE(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodDelete, relativePath, handlers)\n}\n\n// PATCH is a shortcut for router.Handle(\"PATCH\", path, handlers).\nfunc (group *RouterGroup) PATCH(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodPatch, relativePath, handlers)\n}\n\n// PUT is a shortcut for router.Handle(\"PUT\", path, handlers).\nfunc (group *RouterGroup) PUT(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodPut, relativePath, handlers)\n}\n\n// OPTIONS is a shortcut for router.Handle(\"OPTIONS\", path, handlers).\nfunc (group *RouterGroup) OPTIONS(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodOptions, relativePath, handlers)\n}\n\n// HEAD is a shortcut for router.Handle(\"HEAD\", path, handlers).\nfunc (group *RouterGroup) HEAD(relativePath string, handlers ...HandlerFunc) IRoutes {\n\treturn group.handle(http.MethodHead, relativePath, handlers)\n}\n\n// Any registers a route that matches all the HTTP methods.\n// GET, POST, PUT, PATCH, HEAD, OPTIONS, DELETE, CONNECT, TRACE.\nfunc (group *RouterGroup) Any(relativePath string, handlers ...HandlerFunc) IRoutes {\n\tfor _, method := range anyMethods {\n\t\tgroup.handle(method, relativePath, handlers)\n\t}\n\n\treturn group.returnObj()\n}\n\n// Match registers a route that matches the specified methods that you declared.\nfunc (group *RouterGroup) Match(methods []string, relativePath string, handlers ...HandlerFunc) IRoutes {\n\tfor _, method := range methods {\n\t\tgroup.handle(method, relativePath, handlers)\n\t}\n\n\treturn group.returnObj()\n}\n\n// StaticFile registers a single route in order to serve a single file of the local filesystem.\n// router.StaticFile(\"favicon.ico\", \"./resources/favicon.ico\")\nfunc (group *RouterGroup) StaticFile(relativePath, filepath string) IRoutes {\n\treturn group.staticFileHandler(relativePath, func(c *Context) {\n\t\tc.File(filepath)\n\t})\n}\n\n// StaticFileFS works just like `StaticFile` but a custom `http.FileSystem` can be used instead..\n// router.StaticFileFS(\"favicon.ico\", \"./resources/favicon.ico\", Dir{\".\", false})\n// Gin by default uses: gin.Dir()\nfunc (group *RouterGroup) StaticFileFS(relativePath, filepath string, fs http.FileSystem) IRoutes {\n\treturn group.staticFileHandler(relativePath, func(c *Context) {\n\t\tc.FileFromFS(filepath, fs)\n\t})\n}\n\nfunc (group *RouterGroup) staticFileHandler(relativePath string, handler HandlerFunc) IRoutes {\n\tif strings.Contains(relativePath, \":\") || strings.Contains(relativePath, \"*\") {\n\t\tpanic(\"URL parameters can not be used when serving a static file\")\n\t}\n\tgroup.GET(relativePath, handler)\n\tgroup.HEAD(relativePath, handler)\n\treturn group.returnObj()\n}\n\n// Static serves files from the given file system root.\n// Internally a http.FileServer is used, therefore http.NotFound is used instead\n// of the Router's NotFound handler.\n// To use the operating system's file system implementation,\n// use :\n//\n//\trouter.Static(\"/static\", \"/var/www\")\nfunc (group *RouterGroup) Static(relativePath, root string) IRoutes {\n\treturn group.StaticFS(relativePath, Dir(root, false))\n}\n\n// StaticFS works just like `Static()` but a custom `http.FileSystem` can be used instead.\n// Gin by default uses: gin.Dir()\nfunc (group *RouterGroup) StaticFS(relativePath string, fs http.FileSystem) IRoutes {\n\tif strings.Contains(relativePath, \":\") || strings.Contains(relativePath, \"*\") {\n\t\tpanic(\"URL parameters can not be used when serving a static folder\")\n\t}\n\thandler := group.createStaticHandler(relativePath, fs)\n\turlPattern := path.Join(relativePath, \"/*filepath\")\n\n\t// Register GET and HEAD handlers\n\tgroup.GET(urlPattern, handler)\n\tgroup.HEAD(urlPattern, handler)\n\treturn group.returnObj()\n}\n\nfunc (group *RouterGroup) createStaticHandler(relativePath string, fs http.FileSystem) HandlerFunc {\n\tabsolutePath := group.calculateAbsolutePath(relativePath)\n\tfileServer := http.StripPrefix(absolutePath, http.FileServer(fs))\n\n\treturn func(c *Context) {\n\t\tif _, noListing := fs.(*onlyFilesFS); noListing {\n\t\t\tc.Writer.WriteHeader(http.StatusNotFound)\n\t\t}\n\n\t\tfile := c.Param(\"filepath\")\n\t\t// Check if file exists and/or if we have permission to access it\n\t\tf, err := fs.Open(file)\n\t\tif err != nil {\n\t\t\tc.Writer.WriteHeader(http.StatusNotFound)\n\t\t\tc.handlers = group.engine.noRoute\n\t\t\t// Reset index\n\t\t\tc.index = -1\n\t\t\treturn\n\t\t}\n\t\tf.Close()\n\n\t\tfileServer.ServeHTTP(c.Writer, c.Request)\n\t}\n}\n\nfunc (group *RouterGroup) combineHandlers(handlers HandlersChain) HandlersChain {\n\tfinalSize := len(group.Handlers) + len(handlers)\n\tassert1(finalSize < int(abortIndex), \"too many handlers\")\n\tmergedHandlers := make(HandlersChain, finalSize)\n\tcopy(mergedHandlers, group.Handlers)\n\tcopy(mergedHandlers[len(group.Handlers):], handlers)\n\treturn mergedHandlers\n}\n\nfunc (group *RouterGroup) calculateAbsolutePath(relativePath string) string {\n\treturn joinPaths(group.basePath, relativePath)\n}\n\nfunc (group *RouterGroup) returnObj() IRoutes {\n\tif group.root {\n\t\treturn group.engine\n\t}\n\treturn group\n}\n"
  },
  {
    "path": "gossh/gin/sessions/context/context.go",
    "content": "package 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[any]any)\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 any) {\n\tmutex.Lock()\n\tif data[r] == nil {\n\t\tdata[r] = make(map[any]any)\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 any) any {\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 any) (any, 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[any]any {\n\tmutex.RLock()\n\tif context, ok := data[r]; ok {\n\t\tresult := make(map[any]any, 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[any]any, bool) {\n\tmutex.RLock()\n\tcontext, ok := data[r]\n\tresult := make(map[any]any, 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 any) {\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[any]any)\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": "gossh/gin/sessions/cookie/cookie.go",
    "content": "package cookie\n\nimport (\n\t\"gossh/gin/sessions\"\n\tgsessions \"gossh/gin/sessions/sessions\"\n)\n\ntype Store interface {\n\tsessions.Store\n}\n\n// Keys are defined in pairs to allow key rotation, but the common case is to set a single\n// authentication key and optionally an encryption key.\n//\n// The first key in a pair is used for authentication and the second for encryption. The\n// encryption key can be set to nil or omitted in the last pair, but the authentication key\n// is required in all pairs.\n//\n// It is recommended to use an authentication key with 32 or 64 bytes. The encryption key,\n// if set, must be either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256 modes.\nfunc NewStore(keyPairs ...[]byte) Store {\n\treturn &store{gsessions.NewCookieStore(keyPairs...)}\n}\n\ntype store struct {\n\t*gsessions.CookieStore\n}\n\nfunc (c *store) Options(options sessions.Options) {\n\tc.CookieStore.Options = options.ToGorillaOptions()\n}\n"
  },
  {
    "path": "gossh/gin/sessions/memstore/cache.go",
    "content": "package memstore\n\nimport (\n\t\"sync\"\n)\n\ntype cache struct {\n\tdata  map[string]valueType\n\tmutex sync.RWMutex\n}\n\nfunc newCache() *cache {\n\treturn &cache{\n\t\tdata: make(map[string]valueType),\n\t}\n}\n\nfunc (c *cache) value(name string) (valueType, bool) {\n\tc.mutex.RLock()\n\tdefer c.mutex.RUnlock()\n\n\tv, ok := c.data[name]\n\treturn v, ok\n}\n\nfunc (c *cache) setValue(name string, value valueType) {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\tc.data[name] = value\n}\n\nfunc (c *cache) delete(name string) {\n\tc.mutex.Lock()\n\tdefer c.mutex.Unlock()\n\n\tif _, ok := c.data[name]; ok {\n\t\tdelete(c.data, name)\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/sessions/memstore/memstore.go",
    "content": "package memstore\n\nimport (\n\t\"bytes\"\n\t\"encoding/base32\"\n\t\"encoding/gob\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"strings\"\n\n\t\"gossh/gin/sessions/securecookie\"\n\t\"gossh/gin/sessions/sessions\"\n)\n\n// MemStore is an in-memory implementation of gorilla/sessions, suitable\n// for use in tests and development environments. Do not use in production.\n// Values are cached in a map. The cache is protected and can be used by\n// multiple goroutines.\ntype MemStore struct {\n\tCodecs  []securecookie.Codec\n\tOptions *sessions.Options\n\tcache   *cache\n}\n\ntype valueType map[any]any\n\n// NewMemStore returns a new MemStore.\n//\n// Keys are defined in pairs to allow key rotation, but the common case is\n// to set a single authentication key and optionally an encryption key.\n//\n// The first key in a pair is used for authentication and the second for\n// encryption. The encryption key can be set to nil or omitted in the last\n// pair, but the authentication key is required in all pairs.\n//\n// It is recommended to use an authentication key with 32 or 64 bytes.\n// The encryption key, if set, must be either 16, 24, or 32 bytes to select\n// AES-128, AES-192, or AES-256 modes.\n//\n// Use the convenience function securecookie.GenerateRandomKey() to create\n// strong keys.\nfunc NewMemStore(keyPairs ...[]byte) *MemStore {\n\tstore := MemStore{\n\t\tCodecs: securecookie.CodecsFromPairs(keyPairs...),\n\t\tOptions: &sessions.Options{\n\t\t\tPath:   \"/\",\n\t\t\tMaxAge: 86400 * 30,\n\t\t},\n\t\tcache: newCache(),\n\t}\n\tstore.MaxAge(store.Options.MaxAge)\n\treturn &store\n}\n\n// Get returns a session for the given name after adding it to the registry.\n//\n// It returns a new session if the sessions doesn't exist. Access IsNew on\n// the session to check if it is an existing session or a new one.\n//\n// It returns a new session and an error if the session exists but could\n// not be decoded.\nfunc (m *MemStore) Get(r *http.Request, name string) (*sessions.Session, error) {\n\treturn sessions.GetRegistry(r).Get(m, name)\n}\n\n// New returns a session for the given name without adding it to the registry.\n//\n// The difference between New() and Get() is that calling New() twice will\n// decode the session data twice, while Get() registers and reuses the same\n// decoded session after the first call.\nfunc (m *MemStore) New(r *http.Request, name string) (*sessions.Session, error) {\n\tsession := sessions.NewSession(m, name)\n\toptions := *m.Options\n\tsession.Options = &options\n\tsession.IsNew = true\n\n\tc, err := r.Cookie(name)\n\tif err != nil {\n\t\t// Cookie not found, this is a new session\n\t\treturn session, nil\n\t}\n\n\terr = securecookie.DecodeMulti(name, c.Value, &session.ID, m.Codecs...)\n\tif err != nil {\n\t\t// Value could not be decrypted, consider this is a new session\n\t\treturn session, err\n\t}\n\n\tv, ok := m.cache.value(session.ID)\n\tif !ok {\n\t\t// No value found in cache, don't set any values in session object,\n\t\t// consider a new session\n\t\treturn session, nil\n\t}\n\n\t// Values found in session, this is not a new session\n\tsession.Values = m.copy(v)\n\tsession.IsNew = false\n\treturn session, nil\n}\n\n// Save adds a single session to the response.\n// Set Options.MaxAge to -1 or call MaxAge(-1) before saving the session to delete all values in it.\nfunc (m *MemStore) Save(r *http.Request, w http.ResponseWriter, s *sessions.Session) error {\n\tvar cookieValue string\n\tif s.Options.MaxAge < 0 {\n\t\tcookieValue = \"\"\n\t\tm.cache.delete(s.ID)\n\t\tfor k := range s.Values {\n\t\t\tdelete(s.Values, k)\n\t\t}\n\t} else {\n\t\tif s.ID == \"\" {\n\t\t\ts.ID = strings.TrimRight(base32.StdEncoding.EncodeToString(securecookie.GenerateRandomKey(32)), \"=\")\n\t\t}\n\t\tencrypted, err := securecookie.EncodeMulti(s.Name(), s.ID, m.Codecs...)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tcookieValue = encrypted\n\t\tm.cache.setValue(s.ID, m.copy(s.Values))\n\t}\n\thttp.SetCookie(w, sessions.NewCookie(s.Name(), cookieValue, s.Options))\n\treturn nil\n}\n\n// MaxAge sets the maximum age for the store and the underlying cookie\n// implementation. Individual sessions can be deleted by setting Options.MaxAge\n// = -1 for that session.\nfunc (m *MemStore) MaxAge(age int) {\n\tm.Options.MaxAge = age\n\n\t// Set the maxAge for each securecookie instance.\n\tfor _, codec := range m.Codecs {\n\t\tif sc, ok := codec.(*securecookie.SecureCookie); ok {\n\t\t\tsc.MaxAge(age)\n\t\t}\n\t}\n}\n\nfunc (m *MemStore) copy(v valueType) valueType {\n\tvar buf bytes.Buffer\n\tenc := gob.NewEncoder(&buf)\n\tdec := gob.NewDecoder(&buf)\n\terr := enc.Encode(v)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"could not copy memstore value. Encoding to gob failed: %v\", err))\n\t}\n\tvar value valueType\n\terr = dec.Decode(&value)\n\tif err != nil {\n\t\tpanic(fmt.Errorf(\"could not copy memstore value. Decoding from gob failed: %v\", err))\n\t}\n\treturn value\n}\n"
  },
  {
    "path": "gossh/gin/sessions/memstore/store.go",
    "content": "package memstore\n\nimport (\n\t\"gossh/gin/sessions\"\n)\n\ntype Store interface {\n\tsessions.Store\n}\n\n// Keys are defined in pairs to allow key rotation, but the common case is to set a single\n// authentication key and optionally an encryption key.\n//\n// The first key in a pair is used for authentication and the second for encryption. The\n// encryption key can be set to nil or omitted in the last pair, but the authentication key\n// is required in all pairs.\n//\n// It is recommended to use an authentication key with 32 or 64 bytes. The encryption key,\n// if set, must be either 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256 modes.\nfunc NewStore(keyPairs ...[]byte) Store {\n\treturn &store{NewMemStore(keyPairs...)}\n}\n\ntype store struct {\n\t*MemStore\n}\n\nfunc (c *store) Options(options sessions.Options) {\n\tc.MemStore.Options = options.ToGorillaOptions()\n}\n"
  },
  {
    "path": "gossh/gin/sessions/securecookie/securecookie.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 securecookie\n\nimport (\n\t\"bytes\"\n\t\"crypto/aes\"\n\t\"crypto/cipher\"\n\t\"crypto/hmac\"\n\t\"crypto/rand\"\n\t\"crypto/sha256\"\n\t\"crypto/subtle\"\n\t\"encoding/base64\"\n\t\"encoding/gob\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"hash\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// Error is the interface of all errors returned by functions in this library.\ntype Error interface {\n\terror\n\n\t// IsUsage returns true for errors indicating the client code probably\n\t// uses this library incorrectly.  For example, the client may have\n\t// failed to provide a valid hash key, or may have failed to configure\n\t// the Serializer adequately for encoding value.\n\tIsUsage() bool\n\n\t// IsDecode returns true for errors indicating that a cookie could not\n\t// be decoded and validated.  Since cookies are usually untrusted\n\t// user-provided input, errors of this type should be expected.\n\t// Usually, the proper action is simply to reject the request.\n\tIsDecode() bool\n\n\t// IsInternal returns true for unexpected errors occurring in the\n\t// securecookie implementation.\n\tIsInternal() bool\n\n\t// Cause, if it returns a non-nil value, indicates that this error was\n\t// propagated from some underlying library.  If this method returns nil,\n\t// this error was raised directly by this library.\n\t//\n\t// Cause is provided principally for debugging/logging purposes; it is\n\t// rare that application logic should perform meaningfully different\n\t// logic based on Cause.  See, for example, the caveats described on\n\t// (MultiError).Cause().\n\tCause() error\n}\n\n// errorType is a bitmask giving the error type(s) of an cookieError value.\ntype errorType int\n\nconst (\n\tusageError = errorType(1 << iota)\n\tdecodeError\n\tinternalError\n)\n\ntype cookieError struct {\n\ttyp   errorType\n\tmsg   string\n\tcause error\n}\n\nfunc (e cookieError) IsUsage() bool    { return (e.typ & usageError) != 0 }\nfunc (e cookieError) IsDecode() bool   { return (e.typ & decodeError) != 0 }\nfunc (e cookieError) IsInternal() bool { return (e.typ & internalError) != 0 }\n\nfunc (e cookieError) Cause() error { return e.cause }\n\nfunc (e cookieError) Error() string {\n\tparts := []string{\"securecookie: \"}\n\tif e.msg == \"\" {\n\t\tparts = append(parts, \"error\")\n\t} else {\n\t\tparts = append(parts, e.msg)\n\t}\n\tif c := e.Cause(); c != nil {\n\t\tparts = append(parts, \" - caused by: \", c.Error())\n\t}\n\treturn strings.Join(parts, \"\")\n}\n\nvar (\n\terrGeneratingIV = cookieError{typ: internalError, msg: \"failed to generate random iv\"}\n\n\terrNoCodecs            = cookieError{typ: usageError, msg: \"no codecs provided\"}\n\terrHashKeyNotSet       = cookieError{typ: usageError, msg: \"hash key is not set\"}\n\terrBlockKeyNotSet      = cookieError{typ: usageError, msg: \"block key is not set\"}\n\terrEncodedValueTooLong = cookieError{typ: usageError, msg: \"the value is too long\"}\n\n\terrValueToDecodeTooLong = cookieError{typ: decodeError, msg: \"the value is too long\"}\n\terrTimestampInvalid     = cookieError{typ: decodeError, msg: \"invalid timestamp\"}\n\terrTimestampTooNew      = cookieError{typ: decodeError, msg: \"timestamp is too new\"}\n\terrTimestampExpired     = cookieError{typ: decodeError, msg: \"expired timestamp\"}\n\terrDecryptionFailed     = cookieError{typ: decodeError, msg: \"the value could not be decrypted\"}\n\terrValueNotByte         = cookieError{typ: decodeError, msg: \"value not a []byte.\"}\n\terrValueNotBytePtr      = cookieError{typ: decodeError, msg: \"value not a pointer to []byte.\"}\n\n\t// ErrMacInvalid indicates that cookie decoding failed because the HMAC\n\t// could not be extracted and verified.  Direct use of this error\n\t// variable is deprecated; it is public only for legacy compatibility,\n\t// and may be privatized in the future, as it is rarely useful to\n\t// distinguish between this error and other Error implementations.\n\tErrMacInvalid = cookieError{typ: decodeError, msg: \"the value is not valid\"}\n)\n\n// Codec defines an interface to encode and decode cookie values.\ntype Codec interface {\n\tEncode(name string, value any) (string, error)\n\tDecode(name, value string, dst any) error\n}\n\n// New returns a new SecureCookie.\n//\n// hashKey is required, used to authenticate values using HMAC. Create it using\n// GenerateRandomKey(). It is recommended to use a key with 32 or 64 bytes.\n//\n// blockKey is optional, used to encrypt values. Create it using\n// GenerateRandomKey(). The key length must correspond to the key size\n// of the encryption algorithm. For AES, used by default, valid lengths are\n// 16, 24, or 32 bytes to select AES-128, AES-192, or AES-256.\n// The default encoder used for cookie serialization is encoding/gob.\n//\n// Note that keys created using GenerateRandomKey() are not automatically\n// persisted. New keys will be created when the application is restarted, and\n// previously issued cookies will not be able to be decoded.\nfunc New(hashKey, blockKey []byte) *SecureCookie {\n\ts := &SecureCookie{\n\t\thashKey:   hashKey,\n\t\tblockKey:  blockKey,\n\t\thashFunc:  sha256.New,\n\t\tmaxAge:    86400 * 30,\n\t\tmaxLength: 4096,\n\t\tsz:        GobEncoder{},\n\t}\n\tif len(hashKey) == 0 {\n\t\ts.err = errHashKeyNotSet\n\t}\n\tif blockKey != nil {\n\t\ts.BlockFunc(aes.NewCipher)\n\t}\n\treturn s\n}\n\n// SecureCookie encodes and decodes authenticated and optionally encrypted\n// cookie values.\ntype SecureCookie struct {\n\thashKey   []byte\n\thashFunc  func() hash.Hash\n\tblockKey  []byte\n\tblock     cipher.Block\n\tmaxLength int\n\tmaxAge    int64\n\tminAge    int64\n\terr       error\n\tsz        Serializer\n\t// For testing purposes, the function that returns the current timestamp.\n\t// If not set, it will use time.Now().UTC().Unix().\n\ttimeFunc func() int64\n}\n\n// Serializer provides an interface for providing custom serializers for cookie\n// values.\ntype Serializer interface {\n\tSerialize(src any) ([]byte, error)\n\tDeserialize(src []byte, dst any) error\n}\n\n// GobEncoder encodes cookie values using encoding/gob. This is the simplest\n// encoder and can handle complex types via gob.Register.\ntype GobEncoder struct{}\n\n// JSONEncoder encodes cookie values using encoding/json. Users who wish to\n// encode complex types need to satisfy the json.Marshaller and\n// json.Unmarshaller interfaces.\ntype JSONEncoder struct{}\n\n// NopEncoder does not encode cookie values, and instead simply accepts a []byte\n// (as an interface{}) and returns a []byte. This is particularly useful when\n// you encoding an object upstream and do not wish to re-encode it.\ntype NopEncoder struct{}\n\n// MaxLength restricts the maximum length, in bytes, for the cookie value.\n//\n// Default is 4096, which is the maximum value accepted by Internet Explorer.\nfunc (s *SecureCookie) MaxLength(value int) *SecureCookie {\n\ts.maxLength = value\n\treturn s\n}\n\n// MaxAge restricts the maximum age, in seconds, for the cookie value.\n//\n// Default is 86400 * 30. Set it to 0 for no restriction.\nfunc (s *SecureCookie) MaxAge(value int) *SecureCookie {\n\ts.maxAge = int64(value)\n\treturn s\n}\n\n// MinAge restricts the minimum age, in seconds, for the cookie value.\n//\n// Default is 0 (no restriction).\nfunc (s *SecureCookie) MinAge(value int) *SecureCookie {\n\ts.minAge = int64(value)\n\treturn s\n}\n\n// HashFunc sets the hash function used to create HMAC.\n//\n// Default is crypto/sha256.New.\nfunc (s *SecureCookie) HashFunc(f func() hash.Hash) *SecureCookie {\n\ts.hashFunc = f\n\treturn s\n}\n\n// BlockFunc sets the encryption function used to create a cipher.Block.\n//\n// Default is crypto/aes.New.\nfunc (s *SecureCookie) BlockFunc(f func([]byte) (cipher.Block, error)) *SecureCookie {\n\tif s.blockKey == nil {\n\t\ts.err = errBlockKeyNotSet\n\t} else if block, err := f(s.blockKey); err == nil {\n\t\ts.block = block\n\t} else {\n\t\ts.err = cookieError{cause: err, typ: usageError}\n\t}\n\treturn s\n}\n\n// Encoding sets the encoding/serialization method for cookies.\n//\n// Default is encoding/gob.  To encode special structures using encoding/gob,\n// they must be registered first using gob.Register().\nfunc (s *SecureCookie) SetSerializer(sz Serializer) *SecureCookie {\n\ts.sz = sz\n\n\treturn s\n}\n\n// Encode encodes a cookie value.\n//\n// It serializes, optionally encrypts, signs with a message authentication code,\n// and finally encodes the value.\n//\n// The name argument is the cookie name. It is stored with the encoded value.\n// The value argument is the value to be encoded. It can be any value that can\n// be encoded using the currently selected serializer; see SetSerializer().\n//\n// It is the client's responsibility to ensure that value, when encoded using\n// the current serialization/encryption settings on s and then base64-encoded,\n// is shorter than the maximum permissible length.\nfunc (s *SecureCookie) Encode(name string, value any) (string, error) {\n\tif s.err != nil {\n\t\treturn \"\", s.err\n\t}\n\tif s.hashKey == nil {\n\t\ts.err = errHashKeyNotSet\n\t\treturn \"\", s.err\n\t}\n\tvar err error\n\tvar b []byte\n\t// 1. Serialize.\n\tif b, err = s.sz.Serialize(value); err != nil {\n\t\treturn \"\", cookieError{cause: err, typ: usageError}\n\t}\n\t// 2. Encrypt (optional).\n\tif s.block != nil {\n\t\tif b, err = encrypt(s.block, b); err != nil {\n\t\t\treturn \"\", cookieError{cause: err, typ: usageError}\n\t\t}\n\t}\n\tb = encode(b)\n\t// 3. Create MAC for \"name|date|value\". Extra pipe to be used later.\n\tb = []byte(fmt.Sprintf(\"%s|%d|%s|\", name, s.timestamp(), b))\n\tmac := createMac(hmac.New(s.hashFunc, s.hashKey), b[:len(b)-1])\n\t// Append mac, remove name.\n\tb = append(b, mac...)[len(name)+1:]\n\t// 4. Encode to base64.\n\tb = encode(b)\n\t// 5. Check length.\n\tif s.maxLength != 0 && len(b) > s.maxLength {\n\t\treturn \"\", fmt.Errorf(\"%s: %d\", errEncodedValueTooLong, len(b))\n\t}\n\t// Done.\n\treturn string(b), nil\n}\n\n// Decode decodes a cookie value.\n//\n// It decodes, verifies a message authentication code, optionally decrypts and\n// finally deserializes the value.\n//\n// The name argument is the cookie name. It must be the same name used when\n// it was stored. The value argument is the encoded cookie value. The dst\n// argument is where the cookie will be decoded. It must be a pointer.\nfunc (s *SecureCookie) Decode(name, value string, dst any) error {\n\tif s.err != nil {\n\t\treturn s.err\n\t}\n\tif s.hashKey == nil {\n\t\ts.err = errHashKeyNotSet\n\t\treturn s.err\n\t}\n\t// 1. Check length.\n\tif s.maxLength != 0 && len(value) > s.maxLength {\n\t\treturn fmt.Errorf(\"%s: %d\", errValueToDecodeTooLong, len(value))\n\t}\n\t// 2. Decode from base64.\n\tb, err := decode([]byte(value))\n\tif err != nil {\n\t\treturn err\n\t}\n\t// 3. Verify MAC. Value is \"date|value|mac\".\n\tparts := bytes.SplitN(b, []byte(\"|\"), 3)\n\tif len(parts) != 3 {\n\t\treturn ErrMacInvalid\n\t}\n\th := hmac.New(s.hashFunc, s.hashKey)\n\tb = append([]byte(name+\"|\"), b[:len(b)-len(parts[2])-1]...)\n\tif err = verifyMac(h, b, parts[2]); err != nil {\n\t\treturn err\n\t}\n\t// 4. Verify date ranges.\n\tvar t1 int64\n\tif t1, err = strconv.ParseInt(string(parts[0]), 10, 64); err != nil {\n\t\treturn errTimestampInvalid\n\t}\n\tt2 := s.timestamp()\n\tif s.minAge != 0 && t1 > t2-s.minAge {\n\t\treturn errTimestampTooNew\n\t}\n\tif s.maxAge != 0 && t1 < t2-s.maxAge {\n\t\treturn errTimestampExpired\n\t}\n\t// 5. Decrypt (optional).\n\tb, err = decode(parts[1])\n\tif err != nil {\n\t\treturn err\n\t}\n\tif s.block != nil {\n\t\tif b, err = decrypt(s.block, b); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\t// 6. Deserialize.\n\tif err = s.sz.Deserialize(b, dst); err != nil {\n\t\treturn cookieError{cause: err, typ: decodeError}\n\t}\n\t// Done.\n\treturn nil\n}\n\n// timestamp returns the current timestamp, in seconds.\n//\n// For testing purposes, the function that generates the timestamp can be\n// overridden. If not set, it will return time.Now().UTC().Unix().\nfunc (s *SecureCookie) timestamp() int64 {\n\tif s.timeFunc == nil {\n\t\treturn time.Now().UTC().Unix()\n\t}\n\treturn s.timeFunc()\n}\n\n// Authentication -------------------------------------------------------------\n\n// createMac creates a message authentication code (MAC).\nfunc createMac(h hash.Hash, value []byte) []byte {\n\th.Write(value)\n\treturn h.Sum(nil)\n}\n\n// verifyMac verifies that a message authentication code (MAC) is valid.\nfunc verifyMac(h hash.Hash, value []byte, mac []byte) error {\n\tmac2 := createMac(h, value)\n\t// Check that both MACs are of equal length, as subtle.ConstantTimeCompare\n\t// does not do this prior to Go 1.4.\n\tif len(mac) == len(mac2) && subtle.ConstantTimeCompare(mac, mac2) == 1 {\n\t\treturn nil\n\t}\n\treturn ErrMacInvalid\n}\n\n// Encryption -----------------------------------------------------------------\n\n// encrypt encrypts a value using the given block in counter mode.\n//\n// A random initialization vector ( https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Initialization_vector_(IV) ) with the length of the\n// block size is prepended to the resulting ciphertext.\nfunc encrypt(block cipher.Block, value []byte) ([]byte, error) {\n\tiv := GenerateRandomKey(block.BlockSize())\n\tif iv == nil {\n\t\treturn nil, errGeneratingIV\n\t}\n\t// Encrypt it.\n\tstream := cipher.NewCTR(block, iv)\n\tstream.XORKeyStream(value, value)\n\t// Return iv + ciphertext.\n\treturn append(iv, value...), nil\n}\n\n// decrypt decrypts a value using the given block in counter mode.\n//\n// The value to be decrypted must be prepended by a initialization vector\n// ( https://en.wikipedia.org/wiki/Block_cipher_mode_of_operation#Initialization_vector_(IV) ) with the length of the block size.\nfunc decrypt(block cipher.Block, value []byte) ([]byte, error) {\n\tsize := block.BlockSize()\n\tif len(value) > size {\n\t\t// Extract iv.\n\t\tiv := value[:size]\n\t\t// Extract ciphertext.\n\t\tvalue = value[size:]\n\t\t// Decrypt it.\n\t\tstream := cipher.NewCTR(block, iv)\n\t\tstream.XORKeyStream(value, value)\n\t\treturn value, nil\n\t}\n\treturn nil, errDecryptionFailed\n}\n\n// Serialization --------------------------------------------------------------\n\n// Serialize encodes a value using gob.\nfunc (e GobEncoder) Serialize(src any) ([]byte, error) {\n\tbuf := new(bytes.Buffer)\n\tenc := gob.NewEncoder(buf)\n\tif err := enc.Encode(src); err != nil {\n\t\treturn nil, cookieError{cause: err, typ: usageError}\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// Deserialize decodes a value using gob.\nfunc (e GobEncoder) Deserialize(src []byte, dst any) error {\n\tdec := gob.NewDecoder(bytes.NewBuffer(src))\n\tif err := dec.Decode(dst); err != nil {\n\t\treturn cookieError{cause: err, typ: decodeError}\n\t}\n\treturn nil\n}\n\n// Serialize encodes a value using encoding/json.\nfunc (e JSONEncoder) Serialize(src any) ([]byte, error) {\n\tbuf := new(bytes.Buffer)\n\tenc := json.NewEncoder(buf)\n\tif err := enc.Encode(src); err != nil {\n\t\treturn nil, cookieError{cause: err, typ: usageError}\n\t}\n\treturn buf.Bytes(), nil\n}\n\n// Deserialize decodes a value using encoding/json.\nfunc (e JSONEncoder) Deserialize(src []byte, dst any) error {\n\tdec := json.NewDecoder(bytes.NewReader(src))\n\tif err := dec.Decode(dst); err != nil {\n\t\treturn cookieError{cause: err, typ: decodeError}\n\t}\n\treturn nil\n}\n\n// Serialize passes a []byte through as-is.\nfunc (e NopEncoder) Serialize(src any) ([]byte, error) {\n\tif b, ok := src.([]byte); ok {\n\t\treturn b, nil\n\t}\n\n\treturn nil, errValueNotByte\n}\n\n// Deserialize passes a []byte through as-is.\nfunc (e NopEncoder) Deserialize(src []byte, dst any) error {\n\tif dat, ok := dst.(*[]byte); ok {\n\t\t*dat = src\n\t\treturn nil\n\t}\n\treturn errValueNotBytePtr\n}\n\n// Encoding -------------------------------------------------------------------\n\n// encode encodes a value using base64.\nfunc encode(value []byte) []byte {\n\tencoded := make([]byte, base64.URLEncoding.EncodedLen(len(value)))\n\tbase64.URLEncoding.Encode(encoded, value)\n\treturn encoded\n}\n\n// decode decodes a cookie using base64.\nfunc decode(value []byte) ([]byte, error) {\n\tdecoded := make([]byte, base64.URLEncoding.DecodedLen(len(value)))\n\tb, err := base64.URLEncoding.Decode(decoded, value)\n\tif err != nil {\n\t\treturn nil, cookieError{cause: err, typ: decodeError, msg: \"base64 decode failed\"}\n\t}\n\treturn decoded[:b], nil\n}\n\n// Helpers --------------------------------------------------------------------\n\n// GenerateRandomKey creates a random key with the given length in bytes.\n// On failure, returns nil.\n//\n// Note that keys created using `GenerateRandomKey()` are not automatically\n// persisted. New keys will be created when the application is restarted, and\n// previously issued cookies will not be able to be decoded.\n//\n// Callers should explicitly check for the possibility of a nil return, treat\n// it as a failure of the system random number generator, and not continue.\nfunc GenerateRandomKey(length int) []byte {\n\tk := make([]byte, length)\n\tif _, err := io.ReadFull(rand.Reader, k); err != nil {\n\t\treturn nil\n\t}\n\treturn k\n}\n\n// CodecsFromPairs returns a slice of SecureCookie instances.\n//\n// It is a convenience function to create a list of codecs for key rotation. Note\n// that the generated Codecs will have the default options applied: callers\n// should iterate over each Codec and type-assert the underlying *SecureCookie to\n// change these.\n//\n// Example:\n//\n//\tcodecs := securecookie.CodecsFromPairs(\n//\t     []byte(\"new-hash-key\"),\n//\t     []byte(\"new-block-key\"),\n//\t     []byte(\"old-hash-key\"),\n//\t     []byte(\"old-block-key\"),\n//\t )\n//\n//\t// Modify each instance.\n//\tfor _, s := range codecs {\n//\t       if cookie, ok := s.(*securecookie.SecureCookie); ok {\n//\t           cookie.MaxAge(86400 * 7)\n//\t           cookie.SetSerializer(securecookie.JSONEncoder{})\n//\t           cookie.HashFunc(sha512.New512_256)\n//\t       }\n//\t   }\nfunc CodecsFromPairs(keyPairs ...[]byte) []Codec {\n\tcodecs := make([]Codec, len(keyPairs)/2+len(keyPairs)%2)\n\tfor i := 0; i < len(keyPairs); i += 2 {\n\t\tvar blockKey []byte\n\t\tif i+1 < len(keyPairs) {\n\t\t\tblockKey = keyPairs[i+1]\n\t\t}\n\t\tcodecs[i/2] = New(keyPairs[i], blockKey)\n\t}\n\treturn codecs\n}\n\n// EncodeMulti encodes a cookie value using a group of codecs.\n//\n// The codecs are tried in order. Multiple codecs are accepted to allow\n// key rotation.\n//\n// On error, may return a MultiError.\nfunc EncodeMulti(name string, value any, codecs ...Codec) (string, error) {\n\tif len(codecs) == 0 {\n\t\treturn \"\", errNoCodecs\n\t}\n\n\tvar errors MultiError\n\tfor _, codec := range codecs {\n\t\tencoded, err := codec.Encode(name, value)\n\t\tif err == nil {\n\t\t\treturn encoded, nil\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\treturn \"\", errors\n}\n\n// DecodeMulti decodes a cookie value using a group of codecs.\n//\n// The codecs are tried in order. Multiple codecs are accepted to allow\n// key rotation.\n//\n// On error, may return a MultiError.\nfunc DecodeMulti(name string, value string, dst any, codecs ...Codec) error {\n\tif len(codecs) == 0 {\n\t\treturn errNoCodecs\n\t}\n\n\tvar errors MultiError\n\tfor _, codec := range codecs {\n\t\terr := codec.Decode(name, value, dst)\n\t\tif err == nil {\n\t\t\treturn nil\n\t\t}\n\t\terrors = append(errors, err)\n\t}\n\treturn errors\n}\n\n// MultiError groups multiple errors.\ntype MultiError []error\n\nfunc (m MultiError) IsUsage() bool    { return m.any(func(e Error) bool { return e.IsUsage() }) }\nfunc (m MultiError) IsDecode() bool   { return m.any(func(e Error) bool { return e.IsDecode() }) }\nfunc (m MultiError) IsInternal() bool { return m.any(func(e Error) bool { return e.IsInternal() }) }\n\n// Cause returns nil for MultiError; there is no unique underlying cause in the\n// general case.\n//\n// Note: we could conceivably return a non-nil Cause only when there is exactly\n// one child error with a Cause.  However, it would be brittle for client code\n// to rely on the arity of causes inside a MultiError, so we have opted not to\n// provide this functionality.  Clients which really wish to access the Causes\n// of the underlying errors are free to iterate through the errors themselves.\nfunc (m MultiError) Cause() error { return nil }\n\nfunc (m MultiError) Error() string {\n\ts, n := \"\", 0\n\tfor _, e := range m {\n\t\tif e != nil {\n\t\t\tif n == 0 {\n\t\t\t\ts = e.Error()\n\t\t\t}\n\t\t\tn++\n\t\t}\n\t}\n\tswitch n {\n\tcase 0:\n\t\treturn \"(0 errors)\"\n\tcase 1:\n\t\treturn s\n\tcase 2:\n\t\treturn s + \" (and 1 other error)\"\n\t}\n\treturn fmt.Sprintf(\"%s (and %d other errors)\", s, n-1)\n}\n\n// any returns true if any element of m is an Error for which pred returns true.\nfunc (m MultiError) any(pred func(Error) bool) bool {\n\tfor _, e := range m {\n\t\tif ourErr, ok := e.(Error); ok && pred(ourErr) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "gossh/gin/sessions/session_options_go1.10.go",
    "content": "//go:build !go1.11\n// +build !go1.11\n\npackage sessions\n\nimport (\n\tgsessions \"gossh/gin/sessions/sessions\"\n)\n\n// Options stores configuration for a session or session store.\n// Fields are a subset of http.Cookie fields.\ntype Options struct {\n\tPath   string\n\tDomain string\n\t// MaxAge=0 means no 'Max-Age' attribute specified.\n\t// MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'.\n\t// MaxAge>0 means Max-Age attribute present and given in seconds.\n\tMaxAge   int\n\tSecure   bool\n\tHttpOnly bool\n}\n\nfunc (options Options) ToGorillaOptions() *gsessions.Options {\n\treturn &gsessions.Options{\n\t\tPath:     options.Path,\n\t\tDomain:   options.Domain,\n\t\tMaxAge:   options.MaxAge,\n\t\tSecure:   options.Secure,\n\t\tHttpOnly: options.HttpOnly,\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/sessions/session_options_go1.11.go",
    "content": "//go:build go1.11\n// +build go1.11\n\npackage sessions\n\nimport (\n\t\"net/http\"\n\n\tgsessions \"gossh/gin/sessions/sessions\"\n)\n\n// Options stores configuration for a session or session store.\n// Fields are a subset of http.Cookie fields.\ntype Options struct {\n\tPath   string\n\tDomain string\n\t// MaxAge=0 means no 'Max-Age' attribute specified.\n\t// MaxAge<0 means delete cookie now, equivalently 'Max-Age: 0'.\n\t// MaxAge>0 means Max-Age attribute present and given in seconds.\n\tMaxAge   int\n\tSecure   bool\n\tHttpOnly bool\n\t// rfc-draft to preventing CSRF: https://tools.ietf.org/html/draft-west-first-party-cookies-07\n\t//   refer: https://godoc.org/net/http\n\t//          https://www.sjoerdlangkemper.nl/2016/04/14/preventing-csrf-with-samesite-cookie-attribute/\n\tSameSite http.SameSite\n}\n\nfunc (options Options) ToGorillaOptions() *gsessions.Options {\n\treturn &gsessions.Options{\n\t\tPath:     options.Path,\n\t\tDomain:   options.Domain,\n\t\tMaxAge:   options.MaxAge,\n\t\tSecure:   options.Secure,\n\t\tHttpOnly: options.HttpOnly,\n\t\tSameSite: options.SameSite,\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/cookie.go",
    "content": "//go:build !go1.11\n// +build !go1.11\n\npackage sessions\n\nimport \"net/http\"\n\n// newCookieFromOptions returns an http.Cookie with the options set.\nfunc newCookieFromOptions(name, value string, options *Options) *http.Cookie {\n\treturn &http.Cookie{\n\t\tName:     name,\n\t\tValue:    value,\n\t\tPath:     options.Path,\n\t\tDomain:   options.Domain,\n\t\tMaxAge:   options.MaxAge,\n\t\tSecure:   options.Secure,\n\t\tHttpOnly: options.HttpOnly,\n\t}\n\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/cookie_go111.go",
    "content": "//go:build go1.11\n// +build go1.11\n\npackage sessions\n\nimport \"net/http\"\n\n// newCookieFromOptions returns an http.Cookie with the options set.\nfunc newCookieFromOptions(name, value string, options *Options) *http.Cookie {\n\treturn &http.Cookie{\n\t\tName:     name,\n\t\tValue:    value,\n\t\tPath:     options.Path,\n\t\tDomain:   options.Domain,\n\t\tMaxAge:   options.MaxAge,\n\t\tSecure:   options.Secure,\n\t\tHttpOnly: options.HttpOnly,\n\t\tSameSite: options.SameSite,\n\t}\n\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/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 sessions provides cookie and filesystem sessions and\ninfrastructure for custom session backends.\n\nThe key features are:\n\n  - Simple API: use it as an easy way to set signed (and optionally\n    encrypted) cookies.\n  - Built-in backends to store sessions in cookies or the filesystem.\n  - Flash messages: session values that last until read.\n  - Convenient way to switch session persistency (aka \"remember me\") and set\n    other attributes.\n  - Mechanism to rotate authentication and encryption keys.\n  - Multiple sessions per request, even using different backends.\n  - Interfaces and infrastructure for custom session backends: sessions from\n    different stores can be retrieved and batch-saved using a common API.\n\nLet's start with an example that shows the sessions API in a nutshell:\n\n\timport (\n\t\t\"net/http\"\n\t\t\"github.com/gorilla/sessions\"\n\t)\n\n\t// Note: Don't store your key in your source code. Pass it via an\n\t// environmental variable, or flag (or both), and don't accidentally commit it\n\t// alongside your code. Ensure your key is sufficiently random - i.e. use Go's\n\t// crypto/rand or securecookie.GenerateRandomKey(32) and persist the result.\n\t// Ensure SESSION_KEY exists in the environment, or sessions will fail.\n\tvar store = sessions.NewCookieStore([]byte(os.Getenv(\"SESSION_KEY\")))\n\n\tfunc MyHandler(w http.ResponseWriter, r *http.Request) {\n\t\t// Get a session. Get() always returns a session, even if empty.\n\t\tsession, err := store.Get(r, \"session-name\")\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\t// Set some session values.\n\t\tsession.Values[\"foo\"] = \"bar\"\n\t\tsession.Values[42] = 43\n\t\t// Save it before we write to the response/return from the handler.\n\t\terr = session.Save(r, w)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\nFirst we initialize a session store calling NewCookieStore() and passing a\nsecret key used to authenticate the session. Inside the handler, we call\nstore.Get() to retrieve an existing session or a new one. Then we set some\nsession values in session.Values, which is a map[interface{}]interface{}.\nAnd finally we call session.Save() to save the session in the response.\n\nNote that in production code, we should check for errors when calling\nsession.Save(r, w), and either display an error message or otherwise handle it.\n\nSave must be called before writing to the response, otherwise the session\ncookie will not be sent to the client.\n\nThat's all you need to know for the basic usage. Let's take a look at other\noptions, starting with flash messages.\n\nFlash messages are session values that last until read. The term appeared with\nRuby On Rails a few years back. When we request a flash message, it is removed\nfrom the session. To add a flash, call session.AddFlash(), and to get all\nflashes, call session.Flashes(). Here is an example:\n\n\tfunc MyHandler(w http.ResponseWriter, r *http.Request) {\n\t\t// Get a session.\n\t\tsession, err := store.Get(r, \"session-name\")\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\t// Get the previous flashes, if any.\n\t\tif flashes := session.Flashes(); len(flashes) > 0 {\n\t\t\t// Use the flash values.\n\t\t} else {\n\t\t\t// Set a new flash.\n\t\t\tsession.AddFlash(\"Hello, flash messages world!\")\n\t\t}\n\t\terr = session.Save(r, w)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\nFlash messages are useful to set information to be read after a redirection,\nlike after form submissions.\n\nThere may also be cases where you want to store a complex datatype within a\nsession, such as a struct. Sessions are serialised using the encoding/gob package,\nso it is easy to register new datatypes for storage in sessions:\n\n\timport(\n\t\t\"encoding/gob\"\n\t\t\"github.com/gorilla/sessions\"\n\t)\n\n\ttype Person struct {\n\t\tFirstName\tstring\n\t\tLastName \tstring\n\t\tEmail\t\tstring\n\t\tAge\t\t\tint\n\t}\n\n\ttype M map[string]interface{}\n\n\tfunc init() {\n\n\t\tgob.Register(&Person{})\n\t\tgob.Register(&M{})\n\t}\n\nAs it's not possible to pass a raw type as a parameter to a function, gob.Register()\nrelies on us passing it a value of the desired type. In the example above we've passed\nit a pointer to a struct and a pointer to a custom type representing a\nmap[string]interface. (We could have passed non-pointer values if we wished.) This will\nthen allow us to serialise/deserialise values of those types to and from our sessions.\n\nNote that because session values are stored in a map[string]interface{}, there's\na need to type-assert data when retrieving it. We'll use the Person struct we registered above:\n\n\tfunc MyHandler(w http.ResponseWriter, r *http.Request) {\n\t\tsession, err := store.Get(r, \"session-name\")\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\n\t\t// Retrieve our struct and type-assert it\n\t\tval := session.Values[\"person\"]\n\t\tvar person = &Person{}\n\t\tif person, ok := val.(*Person); !ok {\n\t\t\t// Handle the case that it's not an expected type\n\t\t}\n\n\t\t// Now we can use our person object\n\t}\n\nBy default, session cookies last for a month. This is probably too long for\nsome cases, but it is easy to change this and other attributes during\nruntime. Sessions can be configured individually or the store can be\nconfigured and then all sessions saved using it will use that configuration.\nWe access session.Options or store.Options to set a new configuration. The\nfields are basically a subset of http.Cookie fields. Let's change the\nmaximum age of a session to one week:\n\n\tsession.Options = &sessions.Options{\n\t\tPath:     \"/\",\n\t\tMaxAge:   86400 * 7,\n\t\tHttpOnly: true,\n\t}\n\nSometimes we may want to change authentication and/or encryption keys without\nbreaking existing sessions. The CookieStore supports key rotation, and to use\nit you just need to set multiple authentication and encryption keys, in pairs,\nto be tested in order:\n\n\tvar store = sessions.NewCookieStore(\n\t\t[]byte(\"new-authentication-key\"),\n\t\t[]byte(\"new-encryption-key\"),\n\t\t[]byte(\"old-authentication-key\"),\n\t\t[]byte(\"old-encryption-key\"),\n\t)\n\nNew sessions will be saved using the first pair. Old sessions can still be\nread because the first pair will fail, and the second will be tested. This\nmakes it easy to \"rotate\" secret keys and still be able to validate existing\nsessions. Note: for all pairs the encryption key is optional; set it to nil\nor omit it and and encryption won't be used.\n\nMultiple sessions can be used in the same request, even with different\nsession backends. When this happens, calling Save() on each session\nindividually would be cumbersome, so we have a way to save all sessions\nat once: it's sessions.Save(). Here's an example:\n\n\tvar store = sessions.NewCookieStore([]byte(\"something-very-secret\"))\n\n\tfunc MyHandler(w http.ResponseWriter, r *http.Request) {\n\t\t// Get a session and set a value.\n\t\tsession1, _ := store.Get(r, \"session-one\")\n\t\tsession1.Values[\"foo\"] = \"bar\"\n\t\t// Get another session and set another value.\n\t\tsession2, _ := store.Get(r, \"session-two\")\n\t\tsession2.Values[42] = 43\n\t\t// Save all sessions.\n\t\terr = sessions.Save(r, w)\n\t\tif err != nil {\n\t\t\thttp.Error(w, err.Error(), http.StatusInternalServerError)\n\t\t\treturn\n\t\t}\n\t}\n\nThis is possible because when we call Get() from a session store, it adds the\nsession to a common registry. Save() uses it to save all registered sessions.\n*/\npackage sessions\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/lex.go",
    "content": "// This file contains code adapted from the Go standard library\n// https://github.com/golang/go/blob/39ad0fd0789872f9469167be7fe9578625ff246e/src/net/http/lex.go\n\npackage sessions\n\nimport \"strings\"\n\nvar isTokenTable = [127]bool{\n\t'!':  true,\n\t'#':  true,\n\t'$':  true,\n\t'%':  true,\n\t'&':  true,\n\t'\\'': true,\n\t'*':  true,\n\t'+':  true,\n\t'-':  true,\n\t'.':  true,\n\t'0':  true,\n\t'1':  true,\n\t'2':  true,\n\t'3':  true,\n\t'4':  true,\n\t'5':  true,\n\t'6':  true,\n\t'7':  true,\n\t'8':  true,\n\t'9':  true,\n\t'A':  true,\n\t'B':  true,\n\t'C':  true,\n\t'D':  true,\n\t'E':  true,\n\t'F':  true,\n\t'G':  true,\n\t'H':  true,\n\t'I':  true,\n\t'J':  true,\n\t'K':  true,\n\t'L':  true,\n\t'M':  true,\n\t'N':  true,\n\t'O':  true,\n\t'P':  true,\n\t'Q':  true,\n\t'R':  true,\n\t'S':  true,\n\t'T':  true,\n\t'U':  true,\n\t'W':  true,\n\t'V':  true,\n\t'X':  true,\n\t'Y':  true,\n\t'Z':  true,\n\t'^':  true,\n\t'_':  true,\n\t'`':  true,\n\t'a':  true,\n\t'b':  true,\n\t'c':  true,\n\t'd':  true,\n\t'e':  true,\n\t'f':  true,\n\t'g':  true,\n\t'h':  true,\n\t'i':  true,\n\t'j':  true,\n\t'k':  true,\n\t'l':  true,\n\t'm':  true,\n\t'n':  true,\n\t'o':  true,\n\t'p':  true,\n\t'q':  true,\n\t'r':  true,\n\t's':  true,\n\t't':  true,\n\t'u':  true,\n\t'v':  true,\n\t'w':  true,\n\t'x':  true,\n\t'y':  true,\n\t'z':  true,\n\t'|':  true,\n\t'~':  true,\n}\n\nfunc isToken(r rune) bool {\n\ti := int(r)\n\treturn i < len(isTokenTable) && isTokenTable[i]\n}\n\nfunc isNotToken(r rune) bool {\n\treturn !isToken(r)\n}\n\nfunc isCookieNameValid(raw string) bool {\n\tif raw == \"\" {\n\t\treturn false\n\t}\n\treturn strings.IndexFunc(raw, isNotToken) < 0\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/options.go",
    "content": "//go:build !go1.11\n// +build !go1.11\n\npackage sessions\n\n// Options stores configuration for a session or session store.\n//\n// Fields are a subset of http.Cookie fields.\ntype Options struct {\n\tPath   string\n\tDomain string\n\t// MaxAge=0 means no Max-Age attribute specified and the cookie will be\n\t// deleted after the browser session ends.\n\t// MaxAge<0 means delete cookie immediately.\n\t// MaxAge>0 means Max-Age attribute present and given in seconds.\n\tMaxAge   int\n\tSecure   bool\n\tHttpOnly bool\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/options_go111.go",
    "content": "//go:build go1.11\n// +build go1.11\n\npackage sessions\n\nimport \"net/http\"\n\n// Options stores configuration for a session or session store.\n//\n// Fields are a subset of http.Cookie fields.\ntype Options struct {\n\tPath   string\n\tDomain string\n\t// MaxAge=0 means no Max-Age attribute specified and the cookie will be\n\t// deleted after the browser session ends.\n\t// MaxAge<0 means delete cookie immediately.\n\t// MaxAge>0 means Max-Age attribute present and given in seconds.\n\tMaxAge   int\n\tSecure   bool\n\tHttpOnly bool\n\t// Defaults to http.SameSiteDefaultMode\n\tSameSite http.SameSite\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/sessions.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 sessions\n\nimport (\n\t\"context\"\n\t\"encoding/gob\"\n\t\"fmt\"\n\t\"net/http\"\n\t\"time\"\n)\n\n// Default flashes key.\nconst flashesKey = \"_flash\"\n\n// Session --------------------------------------------------------------------\n\n// NewSession is called by session stores to create a new session instance.\nfunc NewSession(store Store, name string) *Session {\n\treturn &Session{\n\t\tValues:  make(map[any]any),\n\t\tstore:   store,\n\t\tname:    name,\n\t\tOptions: new(Options),\n\t}\n}\n\n// Session stores the values and optional configuration for a session.\ntype Session struct {\n\t// The ID of the session, generated by stores. It should not be used for\n\t// user data.\n\tID string\n\t// Values contains the user-data for the session.\n\tValues  map[any]any\n\tOptions *Options\n\tIsNew   bool\n\tstore   Store\n\tname    string\n}\n\n// Flashes returns a slice of flash messages from the session.\n//\n// A single variadic argument is accepted, and it is optional: it defines\n// the flash key. If not defined \"_flash\" is used by default.\nfunc (s *Session) Flashes(vars ...string) []any {\n\tvar flashes []any\n\tkey := flashesKey\n\tif len(vars) > 0 {\n\t\tkey = vars[0]\n\t}\n\tif v, ok := s.Values[key]; ok {\n\t\t// Drop the flashes and return it.\n\t\tdelete(s.Values, key)\n\t\tflashes = v.([]any)\n\t}\n\treturn flashes\n}\n\n// AddFlash adds a flash message to the session.\n//\n// A single variadic argument is accepted, and it is optional: it defines\n// the flash key. If not defined \"_flash\" is used by default.\nfunc (s *Session) AddFlash(value any, vars ...string) {\n\tkey := flashesKey\n\tif len(vars) > 0 {\n\t\tkey = vars[0]\n\t}\n\tvar flashes []any\n\tif v, ok := s.Values[key]; ok {\n\t\tflashes = v.([]any)\n\t}\n\ts.Values[key] = append(flashes, value)\n}\n\n// Save is a convenience method to save this session. It is the same as calling\n// store.Save(request, response, session). You should call Save before writing to\n// the response or returning from the handler.\nfunc (s *Session) Save(r *http.Request, w http.ResponseWriter) error {\n\treturn s.store.Save(r, w, s)\n}\n\n// Name returns the name used to register the session.\nfunc (s *Session) Name() string {\n\treturn s.name\n}\n\n// Store returns the session store used to register the session.\nfunc (s *Session) Store() Store {\n\treturn s.store\n}\n\n// Registry -------------------------------------------------------------------\n\n// sessionInfo stores a session tracked by the registry.\ntype sessionInfo struct {\n\ts *Session\n\te error\n}\n\n// contextKey is the type used to store the registry in the context.\ntype contextKey int\n\n// registryKey is the key used to store the registry in the context.\nconst registryKey contextKey = 0\n\n// GetRegistry returns a registry instance for the current request.\nfunc GetRegistry(r *http.Request) *Registry {\n\tvar ctx = r.Context()\n\tregistry := ctx.Value(registryKey)\n\tif registry != nil {\n\t\treturn registry.(*Registry)\n\t}\n\tnewRegistry := &Registry{\n\t\trequest:  r,\n\t\tsessions: make(map[string]sessionInfo),\n\t}\n\t*r = *r.WithContext(context.WithValue(ctx, registryKey, newRegistry))\n\treturn newRegistry\n}\n\n// Registry stores sessions used during a request.\ntype Registry struct {\n\trequest  *http.Request\n\tsessions map[string]sessionInfo\n}\n\n// Get registers and returns a session for the given name and session store.\n//\n// It returns a new session if there are no sessions registered for the name.\nfunc (s *Registry) Get(store Store, name string) (session *Session, err error) {\n\tif !isCookieNameValid(name) {\n\t\treturn nil, fmt.Errorf(\"sessions: invalid character in cookie name: %s\", name)\n\t}\n\tif info, ok := s.sessions[name]; ok {\n\t\tsession, err = info.s, info.e\n\t} else {\n\t\tsession, err = store.New(s.request, name)\n\t\tsession.name = name\n\t\ts.sessions[name] = sessionInfo{s: session, e: err}\n\t}\n\tsession.store = store\n\treturn\n}\n\n// Save saves all sessions registered for the current request.\nfunc (s *Registry) Save(w http.ResponseWriter) error {\n\tvar errMulti MultiError\n\tfor name, info := range s.sessions {\n\t\tsession := info.s\n\t\tif session.store == nil {\n\t\t\terrMulti = append(errMulti, fmt.Errorf(\n\t\t\t\t\"sessions: missing store for session %q\", name))\n\t\t} else if err := session.store.Save(s.request, w, session); err != nil {\n\t\t\terrMulti = append(errMulti, fmt.Errorf(\n\t\t\t\t\"sessions: error saving session %q -- %v\", name, err))\n\t\t}\n\t}\n\tif errMulti != nil {\n\t\treturn errMulti\n\t}\n\treturn nil\n}\n\n// Helpers --------------------------------------------------------------------\n\nfunc init() {\n\tgob.Register([]any{})\n}\n\n// Save saves all sessions used during the current request.\nfunc Save(r *http.Request, w http.ResponseWriter) error {\n\treturn GetRegistry(r).Save(w)\n}\n\n// NewCookie returns an http.Cookie with the options set. It also sets\n// the Expires field calculated based on the MaxAge value, for Internet\n// Explorer compatibility.\nfunc NewCookie(name, value string, options *Options) *http.Cookie {\n\tcookie := newCookieFromOptions(name, value, options)\n\tif options.MaxAge > 0 {\n\t\td := time.Duration(options.MaxAge) * time.Second\n\t\tcookie.Expires = time.Now().Add(d)\n\t} else if options.MaxAge < 0 {\n\t\t// Set it to the past to expire now.\n\t\tcookie.Expires = time.Unix(1, 0)\n\t}\n\treturn cookie\n}\n\n// Error ----------------------------------------------------------------------\n\n// MultiError stores multiple errors.\n//\n// Borrowed from the App Engine SDK.\ntype MultiError []error\n\nfunc (m MultiError) Error() string {\n\ts, n := \"\", 0\n\tfor _, e := range m {\n\t\tif e != nil {\n\t\t\tif n == 0 {\n\t\t\t\ts = e.Error()\n\t\t\t}\n\t\t\tn++\n\t\t}\n\t}\n\tswitch n {\n\tcase 0:\n\t\treturn \"(0 errors)\"\n\tcase 1:\n\t\treturn s\n\tcase 2:\n\t\treturn s + \" (and 1 other error)\"\n\t}\n\treturn fmt.Sprintf(\"%s (and %d other errors)\", s, n-1)\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions/store.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 sessions\n\nimport (\n\t\"encoding/base32\"\n\t\"net/http\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"sync\"\n\n\t\"gossh/gin/sessions/securecookie\"\n)\n\n// Store is an interface for custom session stores.\n//\n// See CookieStore and FilesystemStore for examples.\ntype Store interface {\n\t// Get should return a cached session.\n\tGet(r *http.Request, name string) (*Session, error)\n\n\t// New should create and return a new session.\n\t//\n\t// Note that New should never return a nil session, even in the case of\n\t// an error if using the Registry infrastructure to cache the session.\n\tNew(r *http.Request, name string) (*Session, error)\n\n\t// Save should persist session to the underlying store implementation.\n\tSave(r *http.Request, w http.ResponseWriter, s *Session) error\n}\n\n// CookieStore ----------------------------------------------------------------\n\n// NewCookieStore returns a new CookieStore.\n//\n// Keys are defined in pairs to allow key rotation, but the common case is\n// to set a single authentication key and optionally an encryption key.\n//\n// The first key in a pair is used for authentication and the second for\n// encryption. The encryption key can be set to nil or omitted in the last\n// pair, but the authentication key is required in all pairs.\n//\n// It is recommended to use an authentication key with 32 or 64 bytes.\n// The encryption key, if set, must be either 16, 24, or 32 bytes to select\n// AES-128, AES-192, or AES-256 modes.\nfunc NewCookieStore(keyPairs ...[]byte) *CookieStore {\n\tcs := &CookieStore{\n\t\tCodecs: securecookie.CodecsFromPairs(keyPairs...),\n\t\tOptions: &Options{\n\t\t\tPath:   \"/\",\n\t\t\tMaxAge: 86400 * 30,\n\t\t},\n\t}\n\n\tcs.MaxAge(cs.Options.MaxAge)\n\treturn cs\n}\n\n// CookieStore stores sessions using secure cookies.\ntype CookieStore struct {\n\tCodecs  []securecookie.Codec\n\tOptions *Options // default configuration\n}\n\n// Get returns a session for the given name after adding it to the registry.\n//\n// It returns a new session if the sessions doesn't exist. Access IsNew on\n// the session to check if it is an existing session or a new one.\n//\n// It returns a new session and an error if the session exists but could\n// not be decoded.\nfunc (s *CookieStore) Get(r *http.Request, name string) (*Session, error) {\n\treturn GetRegistry(r).Get(s, name)\n}\n\n// New returns a session for the given name without adding it to the registry.\n//\n// The difference between New() and Get() is that calling New() twice will\n// decode the session data twice, while Get() registers and reuses the same\n// decoded session after the first call.\nfunc (s *CookieStore) New(r *http.Request, name string) (*Session, error) {\n\tsession := NewSession(s, name)\n\topts := *s.Options\n\tsession.Options = &opts\n\tsession.IsNew = true\n\tvar err error\n\tif c, errCookie := r.Cookie(name); errCookie == nil {\n\t\terr = securecookie.DecodeMulti(name, c.Value, &session.Values,\n\t\t\ts.Codecs...)\n\t\tif err == nil {\n\t\t\tsession.IsNew = false\n\t\t}\n\t}\n\treturn session, err\n}\n\n// Save adds a single session to the response.\nfunc (s *CookieStore) Save(r *http.Request, w http.ResponseWriter,\n\tsession *Session) error {\n\tencoded, err := securecookie.EncodeMulti(session.Name(), session.Values,\n\t\ts.Codecs...)\n\tif err != nil {\n\t\treturn err\n\t}\n\thttp.SetCookie(w, NewCookie(session.Name(), encoded, session.Options))\n\treturn nil\n}\n\n// MaxAge sets the maximum age for the store and the underlying cookie\n// implementation. Individual sessions can be deleted by setting Options.MaxAge\n// = -1 for that session.\nfunc (s *CookieStore) MaxAge(age int) {\n\ts.Options.MaxAge = age\n\n\t// Set the maxAge for each securecookie instance.\n\tfor _, codec := range s.Codecs {\n\t\tif sc, ok := codec.(*securecookie.SecureCookie); ok {\n\t\t\tsc.MaxAge(age)\n\t\t}\n\t}\n}\n\n// FilesystemStore ------------------------------------------------------------\n\nvar fileMutex sync.RWMutex\n\n// NewFilesystemStore returns a new FilesystemStore.\n//\n// The path argument is the directory where sessions will be saved. If empty\n// it will use os.TempDir().\n//\n// See NewCookieStore() for a description of the other parameters.\nfunc NewFilesystemStore(path string, keyPairs ...[]byte) *FilesystemStore {\n\tif path == \"\" {\n\t\tpath = os.TempDir()\n\t}\n\tfs := &FilesystemStore{\n\t\tCodecs: securecookie.CodecsFromPairs(keyPairs...),\n\t\tOptions: &Options{\n\t\t\tPath:   \"/\",\n\t\t\tMaxAge: 86400 * 30,\n\t\t},\n\t\tpath: path,\n\t}\n\n\tfs.MaxAge(fs.Options.MaxAge)\n\treturn fs\n}\n\n// FilesystemStore stores sessions in the filesystem.\n//\n// It also serves as a reference for custom stores.\n//\n// This store is still experimental and not well tested. Feedback is welcome.\ntype FilesystemStore struct {\n\tCodecs  []securecookie.Codec\n\tOptions *Options // default configuration\n\tpath    string\n}\n\n// MaxLength restricts the maximum length of new sessions to l.\n// If l is 0 there is no limit to the size of a session, use with caution.\n// The default for a new FilesystemStore is 4096.\nfunc (s *FilesystemStore) MaxLength(l int) {\n\tfor _, c := range s.Codecs {\n\t\tif codec, ok := c.(*securecookie.SecureCookie); ok {\n\t\t\tcodec.MaxLength(l)\n\t\t}\n\t}\n}\n\n// Get returns a session for the given name after adding it to the registry.\n//\n// See CookieStore.Get().\nfunc (s *FilesystemStore) Get(r *http.Request, name string) (*Session, error) {\n\treturn GetRegistry(r).Get(s, name)\n}\n\n// New returns a session for the given name without adding it to the registry.\n//\n// See CookieStore.New().\nfunc (s *FilesystemStore) New(r *http.Request, name string) (*Session, error) {\n\tsession := NewSession(s, name)\n\topts := *s.Options\n\tsession.Options = &opts\n\tsession.IsNew = true\n\tvar err error\n\tif c, errCookie := r.Cookie(name); errCookie == nil {\n\t\terr = securecookie.DecodeMulti(name, c.Value, &session.ID, s.Codecs...)\n\t\tif err == nil {\n\t\t\terr = s.load(session)\n\t\t\tif err == nil {\n\t\t\t\tsession.IsNew = false\n\t\t\t}\n\t\t}\n\t}\n\treturn session, err\n}\n\nvar base32RawStdEncoding = base32.StdEncoding.WithPadding(base32.NoPadding)\n\n// Save adds a single session to the response.\n//\n// If the Options.MaxAge of the session is <= 0 then the session file will be\n// deleted from the store path. With this process it enforces the properly\n// session cookie handling so no need to trust in the cookie management in the\n// web browser.\nfunc (s *FilesystemStore) Save(r *http.Request, w http.ResponseWriter,\n\tsession *Session) error {\n\t// Delete if max-age is <= 0\n\tif session.Options.MaxAge <= 0 {\n\t\tif err := s.erase(session); err != nil && !os.IsNotExist(err) {\n\t\t\treturn err\n\t\t}\n\t\thttp.SetCookie(w, NewCookie(session.Name(), \"\", session.Options))\n\t\treturn nil\n\t}\n\n\tif session.ID == \"\" {\n\t\t// Because the ID is used in the filename, encode it to\n\t\t// use alphanumeric characters only.\n\t\tsession.ID = base32RawStdEncoding.EncodeToString(\n\t\t\tsecurecookie.GenerateRandomKey(32))\n\t}\n\tif err := s.save(session); err != nil {\n\t\treturn err\n\t}\n\tencoded, err := securecookie.EncodeMulti(session.Name(), session.ID,\n\t\ts.Codecs...)\n\tif err != nil {\n\t\treturn err\n\t}\n\thttp.SetCookie(w, NewCookie(session.Name(), encoded, session.Options))\n\treturn nil\n}\n\n// MaxAge sets the maximum age for the store and the underlying cookie\n// implementation. Individual sessions can be deleted by setting Options.MaxAge\n// = -1 for that session.\nfunc (s *FilesystemStore) MaxAge(age int) {\n\ts.Options.MaxAge = age\n\n\t// Set the maxAge for each securecookie instance.\n\tfor _, codec := range s.Codecs {\n\t\tif sc, ok := codec.(*securecookie.SecureCookie); ok {\n\t\t\tsc.MaxAge(age)\n\t\t}\n\t}\n}\n\n// save writes encoded session.Values to a file.\nfunc (s *FilesystemStore) save(session *Session) error {\n\tencoded, err := securecookie.EncodeMulti(session.Name(), session.Values,\n\t\ts.Codecs...)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfilename := filepath.Join(s.path, \"session_\"+session.ID)\n\tfileMutex.Lock()\n\tdefer fileMutex.Unlock()\n\treturn os.WriteFile(filename, []byte(encoded), 0600)\n}\n\n// load reads a file and decodes its content into session.Values.\nfunc (s *FilesystemStore) load(session *Session) error {\n\tfilename := filepath.Join(s.path, \"session_\"+session.ID)\n\tfileMutex.RLock()\n\tdefer fileMutex.RUnlock()\n\tfdata, err := os.ReadFile(filepath.Clean(filename))\n\tif err != nil {\n\t\treturn err\n\t}\n\tif err = securecookie.DecodeMulti(session.Name(), string(fdata),\n\t\t&session.Values, s.Codecs...); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// delete session file\nfunc (s *FilesystemStore) erase(session *Session) error {\n\tfilename := filepath.Join(s.path, \"session_\"+session.ID)\n\n\tfileMutex.RLock()\n\tdefer fileMutex.RUnlock()\n\n\terr := os.Remove(filename)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/gin/sessions/sessions.go",
    "content": "package sessions\n\nimport (\n\t\"log\"\n\t\"net/http\"\n\n\t\"gossh/gin\"\n\t\"gossh/gin/sessions/context\"\n\t\"gossh/gin/sessions/sessions\"\n)\n\nconst (\n\tDefaultKey  = \"gin-sessions\"\n\terrorFormat = \"[sessions] ERROR! %s\\n\"\n)\n\ntype Store interface {\n\tsessions.Store\n\tOptions(Options)\n}\n\n// Wraps thinly gorilla-session methods.\n// Session stores the values and optional configuration for a session.\ntype Session interface {\n\t// ID of the session, generated by stores. It should not be used for user data.\n\tID() string\n\t// Get returns the session value associated to the given key.\n\tGet(key any) any\n\t// Set sets the session value associated to the given key.\n\tSet(key any, val any)\n\t// Delete removes the session value associated to the given key.\n\tDelete(key any)\n\t// Clear deletes all values in the session.\n\tClear()\n\t// AddFlash adds a flash message to the session.\n\t// A single variadic argument is accepted, and it is optional: it defines the flash key.\n\t// If not defined \"_flash\" is used by default.\n\tAddFlash(value any, vars ...string)\n\t// Flashes returns a slice of flash messages from the session.\n\t// A single variadic argument is accepted, and it is optional: it defines the flash key.\n\t// If not defined \"_flash\" is used by default.\n\tFlashes(vars ...string) []any\n\t// Options sets configuration for a session.\n\tOptions(Options)\n\t// Save saves all sessions used during the current request.\n\tSave() error\n}\n\nfunc Sessions(name string, store Store) gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\ts := &session{name, c.Request, store, nil, false, c.Writer}\n\t\tc.Set(DefaultKey, s)\n\t\tdefer context.Clear(c.Request)\n\t\tc.Next()\n\t}\n}\n\nfunc SessionsMany(names []string, store Store) gin.HandlerFunc {\n\treturn func(c *gin.Context) {\n\t\tsessions := make(map[string]Session, len(names))\n\t\tfor _, name := range names {\n\t\t\tsessions[name] = &session{name, c.Request, store, nil, false, c.Writer}\n\t\t}\n\t\tc.Set(DefaultKey, sessions)\n\t\tdefer context.Clear(c.Request)\n\t\tc.Next()\n\t}\n}\n\ntype session struct {\n\tname    string\n\trequest *http.Request\n\tstore   Store\n\tsession *sessions.Session\n\twritten bool\n\twriter  http.ResponseWriter\n}\n\nfunc (s *session) ID() string {\n\treturn s.Session().ID\n}\n\nfunc (s *session) Get(key any) any {\n\treturn s.Session().Values[key]\n}\n\nfunc (s *session) Set(key any, val any) {\n\ts.Session().Values[key] = val\n\ts.written = true\n}\n\nfunc (s *session) Delete(key any) {\n\tdelete(s.Session().Values, key)\n\ts.written = true\n}\n\nfunc (s *session) Clear() {\n\tfor key := range s.Session().Values {\n\t\ts.Delete(key)\n\t}\n}\n\nfunc (s *session) AddFlash(value any, vars ...string) {\n\ts.Session().AddFlash(value, vars...)\n\ts.written = true\n}\n\nfunc (s *session) Flashes(vars ...string) []any {\n\ts.written = true\n\treturn s.Session().Flashes(vars...)\n}\n\nfunc (s *session) Options(options Options) {\n\ts.written = true\n\ts.Session().Options = options.ToGorillaOptions()\n}\n\nfunc (s *session) Save() error {\n\tif s.Written() {\n\t\te := s.Session().Save(s.request, s.writer)\n\t\tif e == nil {\n\t\t\ts.written = false\n\t\t}\n\t\treturn e\n\t}\n\treturn nil\n}\n\nfunc (s *session) Session() *sessions.Session {\n\tif s.session == nil {\n\t\tvar err error\n\t\ts.session, err = s.store.Get(s.request, s.name)\n\t\tif err != nil {\n\t\t\tlog.Printf(errorFormat, err)\n\t\t}\n\t}\n\treturn s.session\n}\n\nfunc (s *session) Written() bool {\n\treturn s.written\n}\n\n// shortcut to get session\nfunc Default(c *gin.Context) Session {\n\treturn c.MustGet(DefaultKey).(Session)\n}\n\n// shortcut to get session with given name\nfunc DefaultMany(c *gin.Context, name string) Session {\n\treturn c.MustGet(DefaultKey).(map[string]Session)[name]\n}\n"
  },
  {
    "path": "gossh/gin/sse/sse-decoder.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida.  All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage sse\n\nimport (\n\t\"bytes\"\n\t\"io\"\n)\n\ntype decoder struct {\n\tevents []Event\n}\n\nfunc Decode(r io.Reader) ([]Event, error) {\n\tvar dec decoder\n\treturn dec.decode(r)\n}\n\nfunc (d *decoder) dispatchEvent(event Event, data string) {\n\tdataLength := len(data)\n\tif dataLength > 0 {\n\t\t//If the data buffer's last character is a U+000A LINE FEED (LF) character, then remove the last character from the data buffer.\n\t\tdata = data[:dataLength-1]\n\t\tdataLength--\n\t}\n\tif dataLength == 0 && event.Event == \"\" {\n\t\treturn\n\t}\n\tif event.Event == \"\" {\n\t\tevent.Event = \"message\"\n\t}\n\tevent.Data = data\n\td.events = append(d.events, event)\n}\n\nfunc (d *decoder) decode(r io.Reader) ([]Event, error) {\n\tbuf, err := io.ReadAll(r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar currentEvent Event\n\tvar dataBuffer *bytes.Buffer = new(bytes.Buffer)\n\t// TODO (and unit tests)\n\t// Lines must be separated by either a U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair,\n\t// a single U+000A LINE FEED (LF) character,\n\t// or a single U+000D CARRIAGE RETURN (CR) character.\n\tlines := bytes.Split(buf, []byte{'\\n'})\n\tfor _, line := range lines {\n\t\tif len(line) == 0 {\n\t\t\t// If the line is empty (a blank line). Dispatch the event.\n\t\t\td.dispatchEvent(currentEvent, dataBuffer.String())\n\n\t\t\t// reset current event and data buffer\n\t\t\tcurrentEvent = Event{}\n\t\t\tdataBuffer.Reset()\n\t\t\tcontinue\n\t\t}\n\t\tif line[0] == byte(':') {\n\t\t\t// If the line starts with a U+003A COLON character (:), ignore the line.\n\t\t\tcontinue\n\t\t}\n\n\t\tvar field, value []byte\n\t\tcolonIndex := bytes.IndexRune(line, ':')\n\t\tif colonIndex != -1 {\n\t\t\t// If the line contains a U+003A COLON character character (:)\n\t\t\t// Collect the characters on the line before the first U+003A COLON character (:),\n\t\t\t// and let field be that string.\n\t\t\tfield = line[:colonIndex]\n\t\t\t// Collect the characters on the line after the first U+003A COLON character (:),\n\t\t\t// and let value be that string.\n\t\t\tvalue = line[colonIndex+1:]\n\t\t\t// If value starts with a single U+0020 SPACE character, remove it from value.\n\t\t\tif len(value) > 0 && value[0] == ' ' {\n\t\t\t\tvalue = value[1:]\n\t\t\t}\n\t\t} else {\n\t\t\t// Otherwise, the string is not empty but does not contain a U+003A COLON character character (:)\n\t\t\t// Use the whole line as the field name, and the empty string as the field value.\n\t\t\tfield = line\n\t\t\tvalue = []byte{}\n\t\t}\n\t\t// The steps to process the field given a field name and a field value depend on the field name,\n\t\t// as given in the following list. Field names must be compared literally,\n\t\t// with no case folding performed.\n\t\tswitch string(field) {\n\t\tcase \"event\":\n\t\t\t// Set the event name buffer to field value.\n\t\t\tcurrentEvent.Event = string(value)\n\t\tcase \"id\":\n\t\t\t// Set the event stream's last event ID to the field value.\n\t\t\tcurrentEvent.Id = string(value)\n\t\tcase \"retry\":\n\t\t\t// If the field value consists of only characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9),\n\t\t\t// then interpret the field value as an integer in base ten, and set the event stream's reconnection time to that integer.\n\t\t\t// Otherwise, ignore the field.\n\t\t\tcurrentEvent.Id = string(value)\n\t\tcase \"data\":\n\t\t\t// Append the field value to the data buffer,\n\t\t\tdataBuffer.Write(value)\n\t\t\t// then append a single U+000A LINE FEED (LF) character to the data buffer.\n\t\t\tdataBuffer.WriteString(\"\\n\")\n\t\tdefault:\n\t\t\t//Otherwise. The field is ignored.\n\t\t\tcontinue\n\t\t}\n\t}\n\t// Once the end of the file is reached, the user agent must dispatch the event one final time.\n\td.dispatchEvent(currentEvent, dataBuffer.String())\n\n\treturn d.events, nil\n}\n"
  },
  {
    "path": "gossh/gin/sse/sse-encoder.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida.  All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage sse\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Server-Sent Events\n// W3C Working Draft 29 October 2009\n// http://www.w3.org/TR/2009/WD-eventsource-20091029/\n\nconst ContentType = \"text/event-stream\"\n\nvar contentType = []string{ContentType}\nvar noCache = []string{\"no-cache\"}\n\nvar fieldReplacer = strings.NewReplacer(\n\t\"\\n\", \"\\\\n\",\n\t\"\\r\", \"\\\\r\")\n\nvar dataReplacer = strings.NewReplacer(\n\t\"\\n\", \"\\ndata:\",\n\t\"\\r\", \"\\\\r\")\n\ntype Event struct {\n\tEvent string\n\tId    string\n\tRetry uint\n\tData  any\n}\n\nfunc Encode(writer io.Writer, event Event) error {\n\tw := checkWriter(writer)\n\twriteId(w, event.Id)\n\twriteEvent(w, event.Event)\n\twriteRetry(w, event.Retry)\n\treturn writeData(w, event.Data)\n}\n\nfunc writeId(w stringWriter, id string) {\n\tif len(id) > 0 {\n\t\tw.WriteString(\"id:\")\n\t\tfieldReplacer.WriteString(w, id)\n\t\tw.WriteString(\"\\n\")\n\t}\n}\n\nfunc writeEvent(w stringWriter, event string) {\n\tif len(event) > 0 {\n\t\tw.WriteString(\"event:\")\n\t\tfieldReplacer.WriteString(w, event)\n\t\tw.WriteString(\"\\n\")\n\t}\n}\n\nfunc writeRetry(w stringWriter, retry uint) {\n\tif retry > 0 {\n\t\tw.WriteString(\"retry:\")\n\t\tw.WriteString(strconv.FormatUint(uint64(retry), 10))\n\t\tw.WriteString(\"\\n\")\n\t}\n}\n\nfunc writeData(w stringWriter, data any) error {\n\tw.WriteString(\"data:\")\n\tswitch kindOfData(data) {\n\tcase reflect.Struct, reflect.Slice, reflect.Map:\n\t\terr := json.NewEncoder(w).Encode(data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tw.WriteString(\"\\n\")\n\tdefault:\n\t\tdataReplacer.WriteString(w, fmt.Sprint(data))\n\t\tw.WriteString(\"\\n\\n\")\n\t}\n\treturn nil\n}\n\nfunc (r Event) Render(w http.ResponseWriter) error {\n\tr.WriteContentType(w)\n\treturn Encode(w, r)\n}\n\nfunc (r Event) WriteContentType(w http.ResponseWriter) {\n\theader := w.Header()\n\theader[\"Content-Type\"] = contentType\n\n\tif _, exist := header[\"Cache-Control\"]; !exist {\n\t\theader[\"Cache-Control\"] = noCache\n\t}\n}\n\nfunc kindOfData(data any) reflect.Kind {\n\tvalue := reflect.ValueOf(data)\n\tvalueType := value.Kind()\n\tif valueType == reflect.Ptr {\n\t\tvalueType = value.Elem().Kind()\n\t}\n\treturn valueType\n}\n"
  },
  {
    "path": "gossh/gin/sse/writer.go",
    "content": "package sse\n\nimport \"io\"\n\ntype stringWriter interface {\n\tio.Writer\n\tWriteString(string) (int, error)\n}\n\ntype stringWrapper struct {\n\tio.Writer\n}\n\nfunc (w stringWrapper) WriteString(str string) (int, error) {\n\treturn w.Writer.Write([]byte(str))\n}\n\nfunc checkWriter(writer io.Writer) stringWriter {\n\tif w, ok := writer.(stringWriter); ok {\n\t\treturn w\n\t} else {\n\t\treturn stringWrapper{writer}\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/tree.go",
    "content": "// Copyright 2013 Julien Schmidt. All rights reserved.\n// Use of this source code is governed by a BSD-style license that can be found\n// at https://github.com/julienschmidt/httprouter/blob/master/LICENSE\n\npackage gin\n\nimport (\n\t\"bytes\"\n\t\"net/url\"\n\t\"strings\"\n\t\"unicode\"\n\t\"unicode/utf8\"\n\n\t\"gossh/gin/internal/bytesconv\"\n)\n\nvar (\n\tstrColon = []byte(\":\")\n\tstrStar  = []byte(\"*\")\n\tstrSlash = []byte(\"/\")\n)\n\n// Param is a single URL parameter, consisting of a key and a value.\ntype Param struct {\n\tKey   string\n\tValue string\n}\n\n// Params is a Param-slice, as returned by the router.\n// The slice is ordered, the first URL parameter is also the first slice value.\n// It is therefore safe to read values by the index.\ntype Params []Param\n\n// Get returns the value of the first Param which key matches the given name and a boolean true.\n// If no matching Param is found, an empty string is returned and a boolean false .\nfunc (ps Params) Get(name string) (string, bool) {\n\tfor _, entry := range ps {\n\t\tif entry.Key == name {\n\t\t\treturn entry.Value, true\n\t\t}\n\t}\n\treturn \"\", false\n}\n\n// ByName returns the value of the first Param which key matches the given name.\n// If no matching Param is found, an empty string is returned.\nfunc (ps Params) ByName(name string) (va string) {\n\tva, _ = ps.Get(name)\n\treturn\n}\n\ntype methodTree struct {\n\tmethod string\n\troot   *node\n}\n\ntype methodTrees []methodTree\n\nfunc (trees methodTrees) get(method string) *node {\n\tfor _, tree := range trees {\n\t\tif tree.method == method {\n\t\t\treturn tree.root\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc min(a, b int) int {\n\tif a <= b {\n\t\treturn a\n\t}\n\treturn b\n}\n\nfunc longestCommonPrefix(a, b string) int {\n\ti := 0\n\tmax := min(len(a), len(b))\n\tfor i < max && a[i] == b[i] {\n\t\ti++\n\t}\n\treturn i\n}\n\n// addChild will add a child node, keeping wildcardChild at the end\nfunc (n *node) addChild(child *node) {\n\tif n.wildChild && len(n.children) > 0 {\n\t\twildcardChild := n.children[len(n.children)-1]\n\t\tn.children = append(n.children[:len(n.children)-1], child, wildcardChild)\n\t} else {\n\t\tn.children = append(n.children, child)\n\t}\n}\n\nfunc countParams(path string) uint16 {\n\tvar n uint16\n\ts := bytesconv.StringToBytes(path)\n\tn += uint16(bytes.Count(s, strColon))\n\tn += uint16(bytes.Count(s, strStar))\n\treturn n\n}\n\nfunc countSections(path string) uint16 {\n\ts := bytesconv.StringToBytes(path)\n\treturn uint16(bytes.Count(s, strSlash))\n}\n\ntype nodeType uint8\n\nconst (\n\tstatic nodeType = iota\n\troot\n\tparam\n\tcatchAll\n)\n\ntype node struct {\n\tpath      string\n\tindices   string\n\twildChild bool\n\tnType     nodeType\n\tpriority  uint32\n\tchildren  []*node // child nodes, at most 1 :param style node at the end of the array\n\thandlers  HandlersChain\n\tfullPath  string\n}\n\n// Increments priority of the given child and reorders if necessary\nfunc (n *node) incrementChildPrio(pos int) int {\n\tcs := n.children\n\tcs[pos].priority++\n\tprio := cs[pos].priority\n\n\t// Adjust position (move to front)\n\tnewPos := pos\n\tfor ; newPos > 0 && cs[newPos-1].priority < prio; newPos-- {\n\t\t// Swap node positions\n\t\tcs[newPos-1], cs[newPos] = cs[newPos], cs[newPos-1]\n\t}\n\n\t// Build new index char string\n\tif newPos != pos {\n\t\tn.indices = n.indices[:newPos] + // Unchanged prefix, might be empty\n\t\t\tn.indices[pos:pos+1] + // The index char we move\n\t\t\tn.indices[newPos:pos] + n.indices[pos+1:] // Rest without char at 'pos'\n\t}\n\n\treturn newPos\n}\n\n// addRoute adds a node with the given handle to the path.\n// Not concurrency-safe!\nfunc (n *node) addRoute(path string, handlers HandlersChain) {\n\tfullPath := path\n\tn.priority++\n\n\t// Empty tree\n\tif len(n.path) == 0 && len(n.children) == 0 {\n\t\tn.insertChild(path, fullPath, handlers)\n\t\tn.nType = root\n\t\treturn\n\t}\n\n\tparentFullPathIndex := 0\n\nwalk:\n\tfor {\n\t\t// Find the longest common prefix.\n\t\t// This also implies that the common prefix contains no ':' or '*'\n\t\t// since the existing key can't contain those chars.\n\t\ti := longestCommonPrefix(path, n.path)\n\n\t\t// Split edge\n\t\tif i < len(n.path) {\n\t\t\tchild := node{\n\t\t\t\tpath:      n.path[i:],\n\t\t\t\twildChild: n.wildChild,\n\t\t\t\tnType:     static,\n\t\t\t\tindices:   n.indices,\n\t\t\t\tchildren:  n.children,\n\t\t\t\thandlers:  n.handlers,\n\t\t\t\tpriority:  n.priority - 1,\n\t\t\t\tfullPath:  n.fullPath,\n\t\t\t}\n\n\t\t\tn.children = []*node{&child}\n\t\t\t// []byte for proper unicode char conversion, see #65\n\t\t\tn.indices = bytesconv.BytesToString([]byte{n.path[i]})\n\t\t\tn.path = path[:i]\n\t\t\tn.handlers = nil\n\t\t\tn.wildChild = false\n\t\t\tn.fullPath = fullPath[:parentFullPathIndex+i]\n\t\t}\n\n\t\t// Make new node a child of this node\n\t\tif i < len(path) {\n\t\t\tpath = path[i:]\n\t\t\tc := path[0]\n\n\t\t\t// '/' after param\n\t\t\tif n.nType == param && c == '/' && len(n.children) == 1 {\n\t\t\t\tparentFullPathIndex += len(n.path)\n\t\t\t\tn = n.children[0]\n\t\t\t\tn.priority++\n\t\t\t\tcontinue walk\n\t\t\t}\n\n\t\t\t// Check if a child with the next path byte exists\n\t\t\tfor i, max := 0, len(n.indices); i < max; i++ {\n\t\t\t\tif c == n.indices[i] {\n\t\t\t\t\tparentFullPathIndex += len(n.path)\n\t\t\t\t\ti = n.incrementChildPrio(i)\n\t\t\t\t\tn = n.children[i]\n\t\t\t\t\tcontinue walk\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Otherwise insert it\n\t\t\tif c != ':' && c != '*' && n.nType != catchAll {\n\t\t\t\t// []byte for proper unicode char conversion, see #65\n\t\t\t\tn.indices += bytesconv.BytesToString([]byte{c})\n\t\t\t\tchild := &node{\n\t\t\t\t\tfullPath: fullPath,\n\t\t\t\t}\n\t\t\t\tn.addChild(child)\n\t\t\t\tn.incrementChildPrio(len(n.indices) - 1)\n\t\t\t\tn = child\n\t\t\t} else if n.wildChild {\n\t\t\t\t// inserting a wildcard node, need to check if it conflicts with the existing wildcard\n\t\t\t\tn = n.children[len(n.children)-1]\n\t\t\t\tn.priority++\n\n\t\t\t\t// Check if the wildcard matches\n\t\t\t\tif len(path) >= len(n.path) && n.path == path[:len(n.path)] &&\n\t\t\t\t\t// Adding a child to a catchAll is not possible\n\t\t\t\t\tn.nType != catchAll &&\n\t\t\t\t\t// Check for longer wildcard, e.g. :name and :names\n\t\t\t\t\t(len(n.path) >= len(path) || path[len(n.path)] == '/') {\n\t\t\t\t\tcontinue walk\n\t\t\t\t}\n\n\t\t\t\t// Wildcard conflict\n\t\t\t\tpathSeg := path\n\t\t\t\tif n.nType != catchAll {\n\t\t\t\t\tpathSeg = strings.SplitN(pathSeg, \"/\", 2)[0]\n\t\t\t\t}\n\t\t\t\tprefix := fullPath[:strings.Index(fullPath, pathSeg)] + n.path\n\t\t\t\tpanic(\"'\" + pathSeg +\n\t\t\t\t\t\"' in new path '\" + fullPath +\n\t\t\t\t\t\"' conflicts with existing wildcard '\" + n.path +\n\t\t\t\t\t\"' in existing prefix '\" + prefix +\n\t\t\t\t\t\"'\")\n\t\t\t}\n\n\t\t\tn.insertChild(path, fullPath, handlers)\n\t\t\treturn\n\t\t}\n\n\t\t// Otherwise add handle to current node\n\t\tif n.handlers != nil {\n\t\t\tpanic(\"handlers are already registered for path '\" + fullPath + \"'\")\n\t\t}\n\t\tn.handlers = handlers\n\t\tn.fullPath = fullPath\n\t\treturn\n\t}\n}\n\n// Search for a wildcard segment and check the name for invalid characters.\n// Returns -1 as index, if no wildcard was found.\nfunc findWildcard(path string) (wildcard string, i int, valid bool) {\n\t// Find start\n\tfor start, c := range []byte(path) {\n\t\t// A wildcard starts with ':' (param) or '*' (catch-all)\n\t\tif c != ':' && c != '*' {\n\t\t\tcontinue\n\t\t}\n\n\t\t// Find end and check for invalid characters\n\t\tvalid = true\n\t\tfor end, c := range []byte(path[start+1:]) {\n\t\t\tswitch c {\n\t\t\tcase '/':\n\t\t\t\treturn path[start : start+1+end], start, valid\n\t\t\tcase ':', '*':\n\t\t\t\tvalid = false\n\t\t\t}\n\t\t}\n\t\treturn path[start:], start, valid\n\t}\n\treturn \"\", -1, false\n}\n\nfunc (n *node) insertChild(path string, fullPath string, handlers HandlersChain) {\n\tfor {\n\t\t// Find prefix until first wildcard\n\t\twildcard, i, valid := findWildcard(path)\n\t\tif i < 0 { // No wildcard found\n\t\t\tbreak\n\t\t}\n\n\t\t// The wildcard name must only contain one ':' or '*' character\n\t\tif !valid {\n\t\t\tpanic(\"only one wildcard per path segment is allowed, has: '\" +\n\t\t\t\twildcard + \"' in path '\" + fullPath + \"'\")\n\t\t}\n\n\t\t// check if the wildcard has a name\n\t\tif len(wildcard) < 2 {\n\t\t\tpanic(\"wildcards must be named with a non-empty name in path '\" + fullPath + \"'\")\n\t\t}\n\n\t\tif wildcard[0] == ':' { // param\n\t\t\tif i > 0 {\n\t\t\t\t// Insert prefix before the current wildcard\n\t\t\t\tn.path = path[:i]\n\t\t\t\tpath = path[i:]\n\t\t\t}\n\n\t\t\tchild := &node{\n\t\t\t\tnType:    param,\n\t\t\t\tpath:     wildcard,\n\t\t\t\tfullPath: fullPath,\n\t\t\t}\n\t\t\tn.addChild(child)\n\t\t\tn.wildChild = true\n\t\t\tn = child\n\t\t\tn.priority++\n\n\t\t\t// if the path doesn't end with the wildcard, then there\n\t\t\t// will be another subpath starting with '/'\n\t\t\tif len(wildcard) < len(path) {\n\t\t\t\tpath = path[len(wildcard):]\n\n\t\t\t\tchild := &node{\n\t\t\t\t\tpriority: 1,\n\t\t\t\t\tfullPath: fullPath,\n\t\t\t\t}\n\t\t\t\tn.addChild(child)\n\t\t\t\tn = child\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Otherwise we're done. Insert the handle in the new leaf\n\t\t\tn.handlers = handlers\n\t\t\treturn\n\t\t}\n\n\t\t// catchAll\n\t\tif i+len(wildcard) != len(path) {\n\t\t\tpanic(\"catch-all routes are only allowed at the end of the path in path '\" + fullPath + \"'\")\n\t\t}\n\n\t\tif len(n.path) > 0 && n.path[len(n.path)-1] == '/' {\n\t\t\tpathSeg := \"\"\n\t\t\tif len(n.children) != 0 {\n\t\t\t\tpathSeg = strings.SplitN(n.children[0].path, \"/\", 2)[0]\n\t\t\t}\n\t\t\tpanic(\"catch-all wildcard '\" + path +\n\t\t\t\t\"' in new path '\" + fullPath +\n\t\t\t\t\"' conflicts with existing path segment '\" + pathSeg +\n\t\t\t\t\"' in existing prefix '\" + n.path + pathSeg +\n\t\t\t\t\"'\")\n\t\t}\n\n\t\t// currently fixed width 1 for '/'\n\t\ti--\n\t\tif path[i] != '/' {\n\t\t\tpanic(\"no / before catch-all in path '\" + fullPath + \"'\")\n\t\t}\n\n\t\tn.path = path[:i]\n\n\t\t// First node: catchAll node with empty path\n\t\tchild := &node{\n\t\t\twildChild: true,\n\t\t\tnType:     catchAll,\n\t\t\tfullPath:  fullPath,\n\t\t}\n\n\t\tn.addChild(child)\n\t\tn.indices = string('/')\n\t\tn = child\n\t\tn.priority++\n\n\t\t// second node: node holding the variable\n\t\tchild = &node{\n\t\t\tpath:     path[i:],\n\t\t\tnType:    catchAll,\n\t\t\thandlers: handlers,\n\t\t\tpriority: 1,\n\t\t\tfullPath: fullPath,\n\t\t}\n\t\tn.children = []*node{child}\n\n\t\treturn\n\t}\n\n\t// If no wildcard was found, simply insert the path and handle\n\tn.path = path\n\tn.handlers = handlers\n\tn.fullPath = fullPath\n}\n\n// nodeValue holds return values of (*Node).getValue method\ntype nodeValue struct {\n\thandlers HandlersChain\n\tparams   *Params\n\ttsr      bool\n\tfullPath string\n}\n\ntype skippedNode struct {\n\tpath        string\n\tnode        *node\n\tparamsCount int16\n}\n\n// Returns the handle registered with the given path (key). The values of\n// wildcards are saved to a map.\n// If no handle can be found, a TSR (trailing slash redirect) recommendation is\n// made if a handle exists with an extra (without the) trailing slash for the\n// given path.\nfunc (n *node) getValue(path string, params *Params, skippedNodes *[]skippedNode, unescape bool) (value nodeValue) {\n\tvar globalParamsCount int16\n\nwalk: // Outer loop for walking the tree\n\tfor {\n\t\tprefix := n.path\n\t\tif len(path) > len(prefix) {\n\t\t\tif path[:len(prefix)] == prefix {\n\t\t\t\tpath = path[len(prefix):]\n\n\t\t\t\t// Try all the non-wildcard children first by matching the indices\n\t\t\t\tidxc := path[0]\n\t\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\t\tif c == idxc {\n\t\t\t\t\t\t//  strings.HasPrefix(n.children[len(n.children)-1].path, \":\") == n.wildChild\n\t\t\t\t\t\tif n.wildChild {\n\t\t\t\t\t\t\tindex := len(*skippedNodes)\n\t\t\t\t\t\t\t*skippedNodes = (*skippedNodes)[:index+1]\n\t\t\t\t\t\t\t(*skippedNodes)[index] = skippedNode{\n\t\t\t\t\t\t\t\tpath: prefix + path,\n\t\t\t\t\t\t\t\tnode: &node{\n\t\t\t\t\t\t\t\t\tpath:      n.path,\n\t\t\t\t\t\t\t\t\twildChild: n.wildChild,\n\t\t\t\t\t\t\t\t\tnType:     n.nType,\n\t\t\t\t\t\t\t\t\tpriority:  n.priority,\n\t\t\t\t\t\t\t\t\tchildren:  n.children,\n\t\t\t\t\t\t\t\t\thandlers:  n.handlers,\n\t\t\t\t\t\t\t\t\tfullPath:  n.fullPath,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tparamsCount: globalParamsCount,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tn = n.children[i]\n\t\t\t\t\t\tcontinue walk\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !n.wildChild {\n\t\t\t\t\t// If the path at the end of the loop is not equal to '/' and the current node has no child nodes\n\t\t\t\t\t// the current node needs to roll back to last valid skippedNode\n\t\t\t\t\tif path != \"/\" {\n\t\t\t\t\t\tfor length := len(*skippedNodes); length > 0; length-- {\n\t\t\t\t\t\t\tskippedNode := (*skippedNodes)[length-1]\n\t\t\t\t\t\t\t*skippedNodes = (*skippedNodes)[:length-1]\n\t\t\t\t\t\t\tif strings.HasSuffix(skippedNode.path, path) {\n\t\t\t\t\t\t\t\tpath = skippedNode.path\n\t\t\t\t\t\t\t\tn = skippedNode.node\n\t\t\t\t\t\t\t\tif value.params != nil {\n\t\t\t\t\t\t\t\t\t*value.params = (*value.params)[:skippedNode.paramsCount]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tglobalParamsCount = skippedNode.paramsCount\n\t\t\t\t\t\t\t\tcontinue walk\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Nothing found.\n\t\t\t\t\t// We can recommend to redirect to the same URL without a\n\t\t\t\t\t// trailing slash if a leaf exists for that path.\n\t\t\t\t\tvalue.tsr = path == \"/\" && n.handlers != nil\n\t\t\t\t\treturn value\n\t\t\t\t}\n\n\t\t\t\t// Handle wildcard child, which is always at the end of the array\n\t\t\t\tn = n.children[len(n.children)-1]\n\t\t\t\tglobalParamsCount++\n\n\t\t\t\tswitch n.nType {\n\t\t\t\tcase param:\n\t\t\t\t\t// fix truncate the parameter\n\t\t\t\t\t// tree_test.go  line: 204\n\n\t\t\t\t\t// Find param end (either '/' or path end)\n\t\t\t\t\tend := 0\n\t\t\t\t\tfor end < len(path) && path[end] != '/' {\n\t\t\t\t\t\tend++\n\t\t\t\t\t}\n\n\t\t\t\t\t// Save param value\n\t\t\t\t\tif params != nil {\n\t\t\t\t\t\t// Preallocate capacity if necessary\n\t\t\t\t\t\tif cap(*params) < int(globalParamsCount) {\n\t\t\t\t\t\t\tnewParams := make(Params, len(*params), globalParamsCount)\n\t\t\t\t\t\t\tcopy(newParams, *params)\n\t\t\t\t\t\t\t*params = newParams\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif value.params == nil {\n\t\t\t\t\t\t\tvalue.params = params\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Expand slice within preallocated capacity\n\t\t\t\t\t\ti := len(*value.params)\n\t\t\t\t\t\t*value.params = (*value.params)[:i+1]\n\t\t\t\t\t\tval := path[:end]\n\t\t\t\t\t\tif unescape {\n\t\t\t\t\t\t\tif v, err := url.QueryUnescape(val); err == nil {\n\t\t\t\t\t\t\t\tval = v\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t(*value.params)[i] = Param{\n\t\t\t\t\t\t\tKey:   n.path[1:],\n\t\t\t\t\t\t\tValue: val,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// we need to go deeper!\n\t\t\t\t\tif end < len(path) {\n\t\t\t\t\t\tif len(n.children) > 0 {\n\t\t\t\t\t\t\tpath = path[end:]\n\t\t\t\t\t\t\tn = n.children[0]\n\t\t\t\t\t\t\tcontinue walk\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// ... but we can't\n\t\t\t\t\t\tvalue.tsr = len(path) == end+1\n\t\t\t\t\t\treturn value\n\t\t\t\t\t}\n\n\t\t\t\t\tif value.handlers = n.handlers; value.handlers != nil {\n\t\t\t\t\t\tvalue.fullPath = n.fullPath\n\t\t\t\t\t\treturn value\n\t\t\t\t\t}\n\t\t\t\t\tif len(n.children) == 1 {\n\t\t\t\t\t\t// No handle found. Check if a handle for this path + a\n\t\t\t\t\t\t// trailing slash exists for TSR recommendation\n\t\t\t\t\t\tn = n.children[0]\n\t\t\t\t\t\tvalue.tsr = (n.path == \"/\" && n.handlers != nil) || (n.path == \"\" && n.indices == \"/\")\n\t\t\t\t\t}\n\t\t\t\t\treturn value\n\n\t\t\t\tcase catchAll:\n\t\t\t\t\t// Save param value\n\t\t\t\t\tif params != nil {\n\t\t\t\t\t\t// Preallocate capacity if necessary\n\t\t\t\t\t\tif cap(*params) < int(globalParamsCount) {\n\t\t\t\t\t\t\tnewParams := make(Params, len(*params), globalParamsCount)\n\t\t\t\t\t\t\tcopy(newParams, *params)\n\t\t\t\t\t\t\t*params = newParams\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif value.params == nil {\n\t\t\t\t\t\t\tvalue.params = params\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Expand slice within preallocated capacity\n\t\t\t\t\t\ti := len(*value.params)\n\t\t\t\t\t\t*value.params = (*value.params)[:i+1]\n\t\t\t\t\t\tval := path\n\t\t\t\t\t\tif unescape {\n\t\t\t\t\t\t\tif v, err := url.QueryUnescape(path); err == nil {\n\t\t\t\t\t\t\t\tval = v\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t(*value.params)[i] = Param{\n\t\t\t\t\t\t\tKey:   n.path[2:],\n\t\t\t\t\t\t\tValue: val,\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tvalue.handlers = n.handlers\n\t\t\t\t\tvalue.fullPath = n.fullPath\n\t\t\t\t\treturn value\n\n\t\t\t\tdefault:\n\t\t\t\t\tpanic(\"invalid node type\")\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif path == prefix {\n\t\t\t// If the current path does not equal '/' and the node does not have a registered handle and the most recently matched node has a child node\n\t\t\t// the current node needs to roll back to last valid skippedNode\n\t\t\tif n.handlers == nil && path != \"/\" {\n\t\t\t\tfor length := len(*skippedNodes); length > 0; length-- {\n\t\t\t\t\tskippedNode := (*skippedNodes)[length-1]\n\t\t\t\t\t*skippedNodes = (*skippedNodes)[:length-1]\n\t\t\t\t\tif strings.HasSuffix(skippedNode.path, path) {\n\t\t\t\t\t\tpath = skippedNode.path\n\t\t\t\t\t\tn = skippedNode.node\n\t\t\t\t\t\tif value.params != nil {\n\t\t\t\t\t\t\t*value.params = (*value.params)[:skippedNode.paramsCount]\n\t\t\t\t\t\t}\n\t\t\t\t\t\tglobalParamsCount = skippedNode.paramsCount\n\t\t\t\t\t\tcontinue walk\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t//\tn = latestNode.children[len(latestNode.children)-1]\n\t\t\t}\n\t\t\t// We should have reached the node containing the handle.\n\t\t\t// Check if this node has a handle registered.\n\t\t\tif value.handlers = n.handlers; value.handlers != nil {\n\t\t\t\tvalue.fullPath = n.fullPath\n\t\t\t\treturn value\n\t\t\t}\n\n\t\t\t// If there is no handle for this route, but this route has a\n\t\t\t// wildcard child, there must be a handle for this path with an\n\t\t\t// additional trailing slash\n\t\t\tif path == \"/\" && n.wildChild && n.nType != root {\n\t\t\t\tvalue.tsr = true\n\t\t\t\treturn value\n\t\t\t}\n\n\t\t\tif path == \"/\" && n.nType == static {\n\t\t\t\tvalue.tsr = true\n\t\t\t\treturn value\n\t\t\t}\n\n\t\t\t// No handle found. Check if a handle for this path + a\n\t\t\t// trailing slash exists for trailing slash recommendation\n\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\tif c == '/' {\n\t\t\t\t\tn = n.children[i]\n\t\t\t\t\tvalue.tsr = (len(n.path) == 1 && n.handlers != nil) ||\n\t\t\t\t\t\t(n.nType == catchAll && n.children[0].handlers != nil)\n\t\t\t\t\treturn value\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn value\n\t\t}\n\n\t\t// Nothing found. We can recommend to redirect to the same URL with an\n\t\t// extra trailing slash if a leaf exists for that path\n\t\tvalue.tsr = path == \"/\" ||\n\t\t\t(len(prefix) == len(path)+1 && prefix[len(path)] == '/' &&\n\t\t\t\tpath == prefix[:len(prefix)-1] && n.handlers != nil)\n\n\t\t// roll back to last valid skippedNode\n\t\tif !value.tsr && path != \"/\" {\n\t\t\tfor length := len(*skippedNodes); length > 0; length-- {\n\t\t\t\tskippedNode := (*skippedNodes)[length-1]\n\t\t\t\t*skippedNodes = (*skippedNodes)[:length-1]\n\t\t\t\tif strings.HasSuffix(skippedNode.path, path) {\n\t\t\t\t\tpath = skippedNode.path\n\t\t\t\t\tn = skippedNode.node\n\t\t\t\t\tif value.params != nil {\n\t\t\t\t\t\t*value.params = (*value.params)[:skippedNode.paramsCount]\n\t\t\t\t\t}\n\t\t\t\t\tglobalParamsCount = skippedNode.paramsCount\n\t\t\t\t\tcontinue walk\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value\n\t}\n}\n\n// Makes a case-insensitive lookup of the given path and tries to find a handler.\n// It can optionally also fix trailing slashes.\n// It returns the case-corrected path and a bool indicating whether the lookup\n// was successful.\nfunc (n *node) findCaseInsensitivePath(path string, fixTrailingSlash bool) ([]byte, bool) {\n\tconst stackBufSize = 128\n\n\t// Use a static sized buffer on the stack in the common case.\n\t// If the path is too long, allocate a buffer on the heap instead.\n\tbuf := make([]byte, 0, stackBufSize)\n\tif length := len(path) + 1; length > stackBufSize {\n\t\tbuf = make([]byte, 0, length)\n\t}\n\n\tciPath := n.findCaseInsensitivePathRec(\n\t\tpath,\n\t\tbuf,       // Preallocate enough memory for new path\n\t\t[4]byte{}, // Empty rune buffer\n\t\tfixTrailingSlash,\n\t)\n\n\treturn ciPath, ciPath != nil\n}\n\n// Shift bytes in array by n bytes left\nfunc shiftNRuneBytes(rb [4]byte, n int) [4]byte {\n\tswitch n {\n\tcase 0:\n\t\treturn rb\n\tcase 1:\n\t\treturn [4]byte{rb[1], rb[2], rb[3], 0}\n\tcase 2:\n\t\treturn [4]byte{rb[2], rb[3]}\n\tcase 3:\n\t\treturn [4]byte{rb[3]}\n\tdefault:\n\t\treturn [4]byte{}\n\t}\n}\n\n// Recursive case-insensitive lookup function used by n.findCaseInsensitivePath\nfunc (n *node) findCaseInsensitivePathRec(path string, ciPath []byte, rb [4]byte, fixTrailingSlash bool) []byte {\n\tnpLen := len(n.path)\n\nwalk: // Outer loop for walking the tree\n\tfor len(path) >= npLen && (npLen == 0 || strings.EqualFold(path[1:npLen], n.path[1:])) {\n\t\t// Add common prefix to result\n\t\toldPath := path\n\t\tpath = path[npLen:]\n\t\tciPath = append(ciPath, n.path...)\n\n\t\tif len(path) == 0 {\n\t\t\t// We should have reached the node containing the handle.\n\t\t\t// Check if this node has a handle registered.\n\t\t\tif n.handlers != nil {\n\t\t\t\treturn ciPath\n\t\t\t}\n\n\t\t\t// No handle found.\n\t\t\t// Try to fix the path by adding a trailing slash\n\t\t\tif fixTrailingSlash {\n\t\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\t\tif c == '/' {\n\t\t\t\t\t\tn = n.children[i]\n\t\t\t\t\t\tif (len(n.path) == 1 && n.handlers != nil) ||\n\t\t\t\t\t\t\t(n.nType == catchAll && n.children[0].handlers != nil) {\n\t\t\t\t\t\t\treturn append(ciPath, '/')\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\t// If this node does not have a wildcard (param or catchAll) child,\n\t\t// we can just look up the next child node and continue to walk down\n\t\t// the tree\n\t\tif !n.wildChild {\n\t\t\t// Skip rune bytes already processed\n\t\t\trb = shiftNRuneBytes(rb, npLen)\n\n\t\t\tif rb[0] != 0 {\n\t\t\t\t// Old rune not finished\n\t\t\t\tidxc := rb[0]\n\t\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\t\tif c == idxc {\n\t\t\t\t\t\t// continue with child node\n\t\t\t\t\t\tn = n.children[i]\n\t\t\t\t\t\tnpLen = len(n.path)\n\t\t\t\t\t\tcontinue walk\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Process a new rune\n\t\t\t\tvar rv rune\n\n\t\t\t\t// Find rune start.\n\t\t\t\t// Runes are up to 4 byte long,\n\t\t\t\t// -4 would definitely be another rune.\n\t\t\t\tvar off int\n\t\t\t\tfor max := min(npLen, 3); off < max; off++ {\n\t\t\t\t\tif i := npLen - off; utf8.RuneStart(oldPath[i]) {\n\t\t\t\t\t\t// read rune from cached path\n\t\t\t\t\t\trv, _ = utf8.DecodeRuneInString(oldPath[i:])\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Calculate lowercase bytes of current rune\n\t\t\t\tlo := unicode.ToLower(rv)\n\t\t\t\tutf8.EncodeRune(rb[:], lo)\n\n\t\t\t\t// Skip already processed bytes\n\t\t\t\trb = shiftNRuneBytes(rb, off)\n\n\t\t\t\tidxc := rb[0]\n\t\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\t\t// Lowercase matches\n\t\t\t\t\tif c == idxc {\n\t\t\t\t\t\t// must use a recursive approach since both the\n\t\t\t\t\t\t// uppercase byte and the lowercase byte might exist\n\t\t\t\t\t\t// as an index\n\t\t\t\t\t\tif out := n.children[i].findCaseInsensitivePathRec(\n\t\t\t\t\t\t\tpath, ciPath, rb, fixTrailingSlash,\n\t\t\t\t\t\t); out != nil {\n\t\t\t\t\t\t\treturn out\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// If we found no match, the same for the uppercase rune,\n\t\t\t\t// if it differs\n\t\t\t\tif up := unicode.ToUpper(rv); up != lo {\n\t\t\t\t\tutf8.EncodeRune(rb[:], up)\n\t\t\t\t\trb = shiftNRuneBytes(rb, off)\n\n\t\t\t\t\tidxc := rb[0]\n\t\t\t\t\tfor i, c := range []byte(n.indices) {\n\t\t\t\t\t\t// Uppercase matches\n\t\t\t\t\t\tif c == idxc {\n\t\t\t\t\t\t\t// Continue with child node\n\t\t\t\t\t\t\tn = n.children[i]\n\t\t\t\t\t\t\tnpLen = len(n.path)\n\t\t\t\t\t\t\tcontinue walk\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// Nothing found. We can recommend to redirect to the same URL\n\t\t\t// without a trailing slash if a leaf exists for that path\n\t\t\tif fixTrailingSlash && path == \"/\" && n.handlers != nil {\n\t\t\t\treturn ciPath\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\tn = n.children[0]\n\t\tswitch n.nType {\n\t\tcase param:\n\t\t\t// Find param end (either '/' or path end)\n\t\t\tend := 0\n\t\t\tfor end < len(path) && path[end] != '/' {\n\t\t\t\tend++\n\t\t\t}\n\n\t\t\t// Add param value to case insensitive path\n\t\t\tciPath = append(ciPath, path[:end]...)\n\n\t\t\t// We need to go deeper!\n\t\t\tif end < len(path) {\n\t\t\t\tif len(n.children) > 0 {\n\t\t\t\t\t// Continue with child node\n\t\t\t\t\tn = n.children[0]\n\t\t\t\t\tnpLen = len(n.path)\n\t\t\t\t\tpath = path[end:]\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// ... but we can't\n\t\t\t\tif fixTrailingSlash && len(path) == end+1 {\n\t\t\t\t\treturn ciPath\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tif n.handlers != nil {\n\t\t\t\treturn ciPath\n\t\t\t}\n\n\t\t\tif fixTrailingSlash && len(n.children) == 1 {\n\t\t\t\t// No handle found. Check if a handle for this path + a\n\t\t\t\t// trailing slash exists\n\t\t\t\tn = n.children[0]\n\t\t\t\tif n.path == \"/\" && n.handlers != nil {\n\t\t\t\t\treturn append(ciPath, '/')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn nil\n\n\t\tcase catchAll:\n\t\t\treturn append(ciPath, path...)\n\n\t\tdefault:\n\t\t\tpanic(\"invalid node type\")\n\t\t}\n\t}\n\n\t// Nothing found.\n\t// Try to fix the path by adding / removing a trailing slash\n\tif fixTrailingSlash {\n\t\tif path == \"/\" {\n\t\t\treturn ciPath\n\t\t}\n\t\tif len(path)+1 == npLen && n.path[len(path)] == '/' &&\n\t\t\tstrings.EqualFold(path[1:], n.path[1:len(path)]) && n.handlers != nil {\n\t\t\treturn append(ciPath, n.path...)\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/gin/utils.go",
    "content": "// Copyright 2014 Manu Martinez-Almeida. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\nimport (\n\t\"encoding/xml\"\n\t\"net/http\"\n\t\"os\"\n\t\"path\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strings\"\n\t\"unicode\"\n)\n\n// BindKey indicates a default bind key.\nconst BindKey = \"_gin-gonic/gin/bindkey\"\n\n// Bind is a helper function for given interface object and returns a Gin middleware.\nfunc Bind(val any) HandlerFunc {\n\tvalue := reflect.ValueOf(val)\n\tif value.Kind() == reflect.Ptr {\n\t\tpanic(`Bind struct can not be a pointer. Example:\n\tUse: gin.Bind(Struct{}) instead of gin.Bind(&Struct{})\n`)\n\t}\n\ttyp := value.Type()\n\n\treturn func(c *Context) {\n\t\tobj := reflect.New(typ).Interface()\n\t\tif c.Bind(obj) == nil {\n\t\t\tc.Set(BindKey, obj)\n\t\t}\n\t}\n}\n\n// WrapF is a helper function for wrapping http.HandlerFunc and returns a Gin middleware.\nfunc WrapF(f http.HandlerFunc) HandlerFunc {\n\treturn func(c *Context) {\n\t\tf(c.Writer, c.Request)\n\t}\n}\n\n// WrapH is a helper function for wrapping http.Handler and returns a Gin middleware.\nfunc WrapH(h http.Handler) HandlerFunc {\n\treturn func(c *Context) {\n\t\th.ServeHTTP(c.Writer, c.Request)\n\t}\n}\n\n// H is a shortcut for map[string]any\ntype H map[string]any\n\n// MarshalXML allows type H to be used with xml.Marshal.\nfunc (h H) MarshalXML(e *xml.Encoder, start xml.StartElement) error {\n\tstart.Name = xml.Name{\n\t\tSpace: \"\",\n\t\tLocal: \"map\",\n\t}\n\tif err := e.EncodeToken(start); err != nil {\n\t\treturn err\n\t}\n\tfor key, value := range h {\n\t\telem := xml.StartElement{\n\t\t\tName: xml.Name{Space: \"\", Local: key},\n\t\t\tAttr: []xml.Attr{},\n\t\t}\n\t\tif err := e.EncodeElement(value, elem); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn e.EncodeToken(xml.EndElement{Name: start.Name})\n}\n\nfunc assert1(guard bool, text string) {\n\tif !guard {\n\t\tpanic(text)\n\t}\n}\n\nfunc filterFlags(content string) string {\n\tfor i, char := range content {\n\t\tif char == ' ' || char == ';' {\n\t\t\treturn content[:i]\n\t\t}\n\t}\n\treturn content\n}\n\nfunc chooseData(custom, wildcard any) any {\n\tif custom != nil {\n\t\treturn custom\n\t}\n\tif wildcard != nil {\n\t\treturn wildcard\n\t}\n\tpanic(\"negotiation config is invalid\")\n}\n\nfunc parseAccept(acceptHeader string) []string {\n\tparts := strings.Split(acceptHeader, \",\")\n\tout := make([]string, 0, len(parts))\n\tfor _, part := range parts {\n\t\tif i := strings.IndexByte(part, ';'); i > 0 {\n\t\t\tpart = part[:i]\n\t\t}\n\t\tif part = strings.TrimSpace(part); part != \"\" {\n\t\t\tout = append(out, part)\n\t\t}\n\t}\n\treturn out\n}\n\nfunc lastChar(str string) uint8 {\n\tif str == \"\" {\n\t\tpanic(\"The length of the string can't be 0\")\n\t}\n\treturn str[len(str)-1]\n}\n\nfunc nameOfFunction(f any) string {\n\treturn runtime.FuncForPC(reflect.ValueOf(f).Pointer()).Name()\n}\n\nfunc joinPaths(absolutePath, relativePath string) string {\n\tif relativePath == \"\" {\n\t\treturn absolutePath\n\t}\n\n\tfinalPath := path.Join(absolutePath, relativePath)\n\tif lastChar(relativePath) == '/' && lastChar(finalPath) != '/' {\n\t\treturn finalPath + \"/\"\n\t}\n\treturn finalPath\n}\n\nfunc resolveAddress(addr []string) string {\n\tswitch len(addr) {\n\tcase 0:\n\t\tif port := os.Getenv(\"PORT\"); port != \"\" {\n\t\t\tdebugPrint(\"Environment variable PORT=\\\"%s\\\"\", port)\n\t\t\treturn \":\" + port\n\t\t}\n\t\tdebugPrint(\"Environment variable PORT is undefined. Using port :8080 by default\")\n\t\treturn \":8080\"\n\tcase 1:\n\t\treturn addr[0]\n\tdefault:\n\t\tpanic(\"too many parameters\")\n\t}\n}\n\n// https://stackoverflow.com/questions/53069040/checking-a-string-contains-only-ascii-characters\nfunc isASCII(s string) bool {\n\tfor i := 0; i < len(s); i++ {\n\t\tif s[i] > unicode.MaxASCII {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "gossh/gin/validator/baked_in.go",
    "content": "package validator\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/sha256\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io/fs\"\n\t\"net\"\n\t\"net/url\"\n\t\"os\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\n// Func accepts a FieldLevel interface for all validation needs. The return\n// value should be true when validation succeeds.\ntype Func func(fl FieldLevel) bool\n\n// FuncCtx accepts a context.Context and FieldLevel interface for all\n// validation needs. The return value should be true when validation succeeds.\ntype FuncCtx func(ctx context.Context, fl FieldLevel) bool\n\n// wrapFunc wraps normal Func makes it compatible with FuncCtx\nfunc wrapFunc(fn Func) FuncCtx {\n\tif fn == nil {\n\t\treturn nil // be sure not to wrap a bad function.\n\t}\n\treturn func(ctx context.Context, fl FieldLevel) bool {\n\t\treturn fn(fl)\n\t}\n}\n\nvar (\n\trestrictedTags = map[string]struct{}{\n\t\tdiveTag:           {},\n\t\tkeysTag:           {},\n\t\tendKeysTag:        {},\n\t\tstructOnlyTag:     {},\n\t\tomitempty:         {},\n\t\tomitnil:           {},\n\t\tskipValidationTag: {},\n\t\tutf8HexComma:      {},\n\t\tutf8Pipe:          {},\n\t\tnoStructLevelTag:  {},\n\t\trequiredTag:       {},\n\t\tisdefault:         {},\n\t}\n\n\t// bakedInAliases is a default mapping of a single validation tag that\n\t// defines a common or complex set of validation(s) to simplify\n\t// adding validation to structs.\n\tbakedInAliases = map[string]string{\n\t\t\"iscolor\":      \"hexcolor|rgb|rgba|hsl|hsla\",\n\t\t\"country_code\": \"iso3166_1_alpha2|iso3166_1_alpha3|iso3166_1_alpha_numeric\",\n\t}\n\n\t// bakedInValidators is the default map of ValidationFunc\n\t// you can add, remove or even replace items to suite your needs,\n\t// or even disregard and use your own map if so desired.\n\tbakedInValidators = map[string]Func{\n\t\t\"required\":                      hasValue,\n\t\t\"required_if\":                   requiredIf,\n\t\t\"required_unless\":               requiredUnless,\n\t\t\"skip_unless\":                   skipUnless,\n\t\t\"required_with\":                 requiredWith,\n\t\t\"required_with_all\":             requiredWithAll,\n\t\t\"required_without\":              requiredWithout,\n\t\t\"required_without_all\":          requiredWithoutAll,\n\t\t\"excluded_if\":                   excludedIf,\n\t\t\"excluded_unless\":               excludedUnless,\n\t\t\"excluded_with\":                 excludedWith,\n\t\t\"excluded_with_all\":             excludedWithAll,\n\t\t\"excluded_without\":              excludedWithout,\n\t\t\"excluded_without_all\":          excludedWithoutAll,\n\t\t\"isdefault\":                     isDefault,\n\t\t\"len\":                           hasLengthOf,\n\t\t\"min\":                           hasMinOf,\n\t\t\"max\":                           hasMaxOf,\n\t\t\"eq\":                            isEq,\n\t\t\"eq_ignore_case\":                isEqIgnoreCase,\n\t\t\"ne\":                            isNe,\n\t\t\"ne_ignore_case\":                isNeIgnoreCase,\n\t\t\"lt\":                            isLt,\n\t\t\"lte\":                           isLte,\n\t\t\"gt\":                            isGt,\n\t\t\"gte\":                           isGte,\n\t\t\"eqfield\":                       isEqField,\n\t\t\"eqcsfield\":                     isEqCrossStructField,\n\t\t\"necsfield\":                     isNeCrossStructField,\n\t\t\"gtcsfield\":                     isGtCrossStructField,\n\t\t\"gtecsfield\":                    isGteCrossStructField,\n\t\t\"ltcsfield\":                     isLtCrossStructField,\n\t\t\"ltecsfield\":                    isLteCrossStructField,\n\t\t\"nefield\":                       isNeField,\n\t\t\"gtefield\":                      isGteField,\n\t\t\"gtfield\":                       isGtField,\n\t\t\"ltefield\":                      isLteField,\n\t\t\"ltfield\":                       isLtField,\n\t\t\"fieldcontains\":                 fieldContains,\n\t\t\"fieldexcludes\":                 fieldExcludes,\n\t\t\"alpha\":                         isAlpha,\n\t\t\"alphanum\":                      isAlphanum,\n\t\t\"alphaunicode\":                  isAlphaUnicode,\n\t\t\"alphanumunicode\":               isAlphanumUnicode,\n\t\t\"boolean\":                       isBoolean,\n\t\t\"numeric\":                       isNumeric,\n\t\t\"number\":                        isNumber,\n\t\t\"hexadecimal\":                   isHexadecimal,\n\t\t\"hexcolor\":                      isHEXColor,\n\t\t\"rgb\":                           isRGB,\n\t\t\"rgba\":                          isRGBA,\n\t\t\"hsl\":                           isHSL,\n\t\t\"hsla\":                          isHSLA,\n\t\t\"e164\":                          isE164,\n\t\t\"email\":                         isEmail,\n\t\t\"url\":                           isURL,\n\t\t\"http_url\":                      isHttpURL,\n\t\t\"uri\":                           isURI,\n\t\t\"file\":                          isFile,\n\t\t\"filepath\":                      isFilePath,\n\t\t\"base64\":                        isBase64,\n\t\t\"base64url\":                     isBase64URL,\n\t\t\"base64rawurl\":                  isBase64RawURL,\n\t\t\"contains\":                      contains,\n\t\t\"containsany\":                   containsAny,\n\t\t\"containsrune\":                  containsRune,\n\t\t\"excludes\":                      excludes,\n\t\t\"excludesall\":                   excludesAll,\n\t\t\"excludesrune\":                  excludesRune,\n\t\t\"startswith\":                    startsWith,\n\t\t\"endswith\":                      endsWith,\n\t\t\"startsnotwith\":                 startsNotWith,\n\t\t\"endsnotwith\":                   endsNotWith,\n\t\t\"isbn\":                          isISBN,\n\t\t\"isbn10\":                        isISBN10,\n\t\t\"isbn13\":                        isISBN13,\n\t\t\"issn\":                          isISSN,\n\t\t\"eth_addr\":                      isEthereumAddress,\n\t\t\"btc_addr\":                      isBitcoinAddress,\n\t\t\"btc_addr_bech32\":               isBitcoinBech32Address,\n\t\t\"uuid\":                          isUUID,\n\t\t\"uuid3\":                         isUUID3,\n\t\t\"uuid4\":                         isUUID4,\n\t\t\"uuid5\":                         isUUID5,\n\t\t\"uuid_rfc4122\":                  isUUIDRFC4122,\n\t\t\"uuid3_rfc4122\":                 isUUID3RFC4122,\n\t\t\"uuid4_rfc4122\":                 isUUID4RFC4122,\n\t\t\"uuid5_rfc4122\":                 isUUID5RFC4122,\n\t\t\"ulid\":                          isULID,\n\t\t\"md4\":                           isMD4,\n\t\t\"md5\":                           isMD5,\n\t\t\"sha256\":                        isSHA256,\n\t\t\"sha384\":                        isSHA384,\n\t\t\"sha512\":                        isSHA512,\n\t\t\"ripemd128\":                     isRIPEMD128,\n\t\t\"ripemd160\":                     isRIPEMD160,\n\t\t\"tiger128\":                      isTIGER128,\n\t\t\"tiger160\":                      isTIGER160,\n\t\t\"tiger192\":                      isTIGER192,\n\t\t\"ascii\":                         isASCII,\n\t\t\"printascii\":                    isPrintableASCII,\n\t\t\"multibyte\":                     hasMultiByteCharacter,\n\t\t\"datauri\":                       isDataURI,\n\t\t\"latitude\":                      isLatitude,\n\t\t\"longitude\":                     isLongitude,\n\t\t\"ssn\":                           isSSN,\n\t\t\"ipv4\":                          isIPv4,\n\t\t\"ipv6\":                          isIPv6,\n\t\t\"ip\":                            isIP,\n\t\t\"cidrv4\":                        isCIDRv4,\n\t\t\"cidrv6\":                        isCIDRv6,\n\t\t\"cidr\":                          isCIDR,\n\t\t\"tcp4_addr\":                     isTCP4AddrResolvable,\n\t\t\"tcp6_addr\":                     isTCP6AddrResolvable,\n\t\t\"tcp_addr\":                      isTCPAddrResolvable,\n\t\t\"udp4_addr\":                     isUDP4AddrResolvable,\n\t\t\"udp6_addr\":                     isUDP6AddrResolvable,\n\t\t\"udp_addr\":                      isUDPAddrResolvable,\n\t\t\"ip4_addr\":                      isIP4AddrResolvable,\n\t\t\"ip6_addr\":                      isIP6AddrResolvable,\n\t\t\"ip_addr\":                       isIPAddrResolvable,\n\t\t\"unix_addr\":                     isUnixAddrResolvable,\n\t\t\"mac\":                           isMAC,\n\t\t\"hostname\":                      isHostnameRFC952,  // RFC 952\n\t\t\"hostname_rfc1123\":              isHostnameRFC1123, // RFC 1123\n\t\t\"fqdn\":                          isFQDN,\n\t\t\"unique\":                        isUnique,\n\t\t\"oneof\":                         isOneOf,\n\t\t\"html\":                          isHTML,\n\t\t\"html_encoded\":                  isHTMLEncoded,\n\t\t\"url_encoded\":                   isURLEncoded,\n\t\t\"dir\":                           isDir,\n\t\t\"dirpath\":                       isDirPath,\n\t\t\"json\":                          isJSON,\n\t\t\"jwt\":                           isJWT,\n\t\t\"hostname_port\":                 isHostnamePort,\n\t\t\"lowercase\":                     isLowercase,\n\t\t\"uppercase\":                     isUppercase,\n\t\t\"datetime\":                      isDatetime,\n\t\t\"timezone\":                      isTimeZone,\n\t\t\"iso3166_1_alpha2\":              isIso3166Alpha2,\n\t\t\"iso3166_1_alpha3\":              isIso3166Alpha3,\n\t\t\"iso3166_1_alpha_numeric\":       isIso3166AlphaNumeric,\n\t\t\"iso3166_2\":                     isIso31662,\n\t\t\"iso4217\":                       isIso4217,\n\t\t\"iso4217_numeric\":               isIso4217Numeric,\n\t\t\"postcode_iso3166_alpha2\":       isPostcodeByIso3166Alpha2,\n\t\t\"postcode_iso3166_alpha2_field\": isPostcodeByIso3166Alpha2Field,\n\t\t\"bic\":                           isIsoBicFormat,\n\t\t\"semver\":                        isSemverFormat,\n\t\t\"dns_rfc1035_label\":             isDnsRFC1035LabelFormat,\n\t\t\"credit_card\":                   isCreditCard,\n\t\t\"cve\":                           isCveFormat,\n\t\t\"luhn_checksum\":                 hasLuhnChecksum,\n\t\t\"mongodb\":                       isMongoDB,\n\t\t\"cron\":                          isCron,\n\t\t\"spicedb\":                       isSpiceDB,\n\t}\n)\n\nvar (\n\toneofValsCache       = map[string][]string{}\n\toneofValsCacheRWLock = sync.RWMutex{}\n)\n\nfunc parseOneOfParam2(s string) []string {\n\toneofValsCacheRWLock.RLock()\n\tvals, ok := oneofValsCache[s]\n\toneofValsCacheRWLock.RUnlock()\n\tif !ok {\n\t\toneofValsCacheRWLock.Lock()\n\t\tvals = splitParamsRegex.FindAllString(s, -1)\n\t\tfor i := 0; i < len(vals); i++ {\n\t\t\tvals[i] = strings.Replace(vals[i], \"'\", \"\", -1)\n\t\t}\n\t\toneofValsCache[s] = vals\n\t\toneofValsCacheRWLock.Unlock()\n\t}\n\treturn vals\n}\n\nfunc isURLEncoded(fl FieldLevel) bool {\n\treturn uRLEncodedRegex.MatchString(fl.Field().String())\n}\n\nfunc isHTMLEncoded(fl FieldLevel) bool {\n\treturn hTMLEncodedRegex.MatchString(fl.Field().String())\n}\n\nfunc isHTML(fl FieldLevel) bool {\n\treturn hTMLRegex.MatchString(fl.Field().String())\n}\n\nfunc isOneOf(fl FieldLevel) bool {\n\tvals := parseOneOfParam2(fl.Param())\n\n\tfield := fl.Field()\n\n\tvar v string\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tv = field.String()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tv = strconv.FormatInt(field.Int(), 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tv = strconv.FormatUint(field.Uint(), 10)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\tfor i := 0; i < len(vals); i++ {\n\t\tif vals[i] == v {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// isUnique is the validation function for validating if each array|slice|map value is unique\nfunc isUnique(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\tv := reflect.ValueOf(struct{}{})\n\n\tswitch field.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\telem := field.Type().Elem()\n\t\tif elem.Kind() == reflect.Ptr {\n\t\t\telem = elem.Elem()\n\t\t}\n\n\t\tif param == \"\" {\n\t\t\tm := reflect.MakeMap(reflect.MapOf(elem, v.Type()))\n\n\t\t\tfor i := 0; i < field.Len(); i++ {\n\t\t\t\tm.SetMapIndex(reflect.Indirect(field.Index(i)), v)\n\t\t\t}\n\t\t\treturn field.Len() == m.Len()\n\t\t}\n\n\t\tsf, ok := elem.FieldByName(param)\n\t\tif !ok {\n\t\t\tpanic(fmt.Sprintf(\"Bad field name %s\", param))\n\t\t}\n\n\t\tsfTyp := sf.Type\n\t\tif sfTyp.Kind() == reflect.Ptr {\n\t\t\tsfTyp = sfTyp.Elem()\n\t\t}\n\n\t\tm := reflect.MakeMap(reflect.MapOf(sfTyp, v.Type()))\n\t\tvar fieldlen int\n\t\tfor i := 0; i < field.Len(); i++ {\n\t\t\tkey := reflect.Indirect(reflect.Indirect(field.Index(i)).FieldByName(param))\n\t\t\tif key.IsValid() {\n\t\t\t\tfieldlen++\n\t\t\t\tm.SetMapIndex(key, v)\n\t\t\t}\n\t\t}\n\t\treturn fieldlen == m.Len()\n\tcase reflect.Map:\n\t\tvar m reflect.Value\n\t\tif field.Type().Elem().Kind() == reflect.Ptr {\n\t\t\tm = reflect.MakeMap(reflect.MapOf(field.Type().Elem().Elem(), v.Type()))\n\t\t} else {\n\t\t\tm = reflect.MakeMap(reflect.MapOf(field.Type().Elem(), v.Type()))\n\t\t}\n\n\t\tfor _, k := range field.MapKeys() {\n\t\t\tm.SetMapIndex(reflect.Indirect(field.MapIndex(k)), v)\n\t\t}\n\n\t\treturn field.Len() == m.Len()\n\tdefault:\n\t\tif parent := fl.Parent(); parent.Kind() == reflect.Struct {\n\t\t\tuniqueField := parent.FieldByName(param)\n\t\t\tif uniqueField == reflect.ValueOf(nil) {\n\t\t\t\tpanic(fmt.Sprintf(\"Bad field name provided %s\", param))\n\t\t\t}\n\n\t\t\tif uniqueField.Kind() != field.Kind() {\n\t\t\t\tpanic(fmt.Sprintf(\"Bad field type %T:%T\", field.Interface(), uniqueField.Interface()))\n\t\t\t}\n\n\t\t\treturn field.Interface() != uniqueField.Interface()\n\t\t}\n\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n}\n\n// isMAC is the validation function for validating if the field's value is a valid MAC address.\nfunc isMAC(fl FieldLevel) bool {\n\t_, err := net.ParseMAC(fl.Field().String())\n\n\treturn err == nil\n}\n\n// isCIDRv4 is the validation function for validating if the field's value is a valid v4 CIDR address.\nfunc isCIDRv4(fl FieldLevel) bool {\n\tip, net, err := net.ParseCIDR(fl.Field().String())\n\n\treturn err == nil && ip.To4() != nil && net.IP.Equal(ip)\n}\n\n// isCIDRv6 is the validation function for validating if the field's value is a valid v6 CIDR address.\nfunc isCIDRv6(fl FieldLevel) bool {\n\tip, _, err := net.ParseCIDR(fl.Field().String())\n\n\treturn err == nil && ip.To4() == nil\n}\n\n// isCIDR is the validation function for validating if the field's value is a valid v4 or v6 CIDR address.\nfunc isCIDR(fl FieldLevel) bool {\n\t_, _, err := net.ParseCIDR(fl.Field().String())\n\n\treturn err == nil\n}\n\n// isIPv4 is the validation function for validating if a value is a valid v4 IP address.\nfunc isIPv4(fl FieldLevel) bool {\n\tip := net.ParseIP(fl.Field().String())\n\n\treturn ip != nil && ip.To4() != nil\n}\n\n// isIPv6 is the validation function for validating if the field's value is a valid v6 IP address.\nfunc isIPv6(fl FieldLevel) bool {\n\tip := net.ParseIP(fl.Field().String())\n\n\treturn ip != nil && ip.To4() == nil\n}\n\n// isIP is the validation function for validating if the field's value is a valid v4 or v6 IP address.\nfunc isIP(fl FieldLevel) bool {\n\tip := net.ParseIP(fl.Field().String())\n\n\treturn ip != nil\n}\n\n// isSSN is the validation function for validating if the field's value is a valid SSN.\nfunc isSSN(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Len() != 11 {\n\t\treturn false\n\t}\n\n\treturn sSNRegex.MatchString(field.String())\n}\n\n// isLongitude is the validation function for validating if the field's value is a valid longitude coordinate.\nfunc isLongitude(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tvar v string\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tv = field.String()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tv = strconv.FormatInt(field.Int(), 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tv = strconv.FormatUint(field.Uint(), 10)\n\tcase reflect.Float32:\n\t\tv = strconv.FormatFloat(field.Float(), 'f', -1, 32)\n\tcase reflect.Float64:\n\t\tv = strconv.FormatFloat(field.Float(), 'f', -1, 64)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\n\treturn longitudeRegex.MatchString(v)\n}\n\n// isLatitude is the validation function for validating if the field's value is a valid latitude coordinate.\nfunc isLatitude(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tvar v string\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tv = field.String()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tv = strconv.FormatInt(field.Int(), 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tv = strconv.FormatUint(field.Uint(), 10)\n\tcase reflect.Float32:\n\t\tv = strconv.FormatFloat(field.Float(), 'f', -1, 32)\n\tcase reflect.Float64:\n\t\tv = strconv.FormatFloat(field.Float(), 'f', -1, 64)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\n\treturn latitudeRegex.MatchString(v)\n}\n\n// isDataURI is the validation function for validating if the field's value is a valid data URI.\nfunc isDataURI(fl FieldLevel) bool {\n\turi := strings.SplitN(fl.Field().String(), \",\", 2)\n\n\tif len(uri) != 2 {\n\t\treturn false\n\t}\n\n\tif !dataURIRegex.MatchString(uri[0]) {\n\t\treturn false\n\t}\n\n\treturn base64Regex.MatchString(uri[1])\n}\n\n// hasMultiByteCharacter is the validation function for validating if the field's value has a multi byte character.\nfunc hasMultiByteCharacter(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Len() == 0 {\n\t\treturn true\n\t}\n\n\treturn multibyteRegex.MatchString(field.String())\n}\n\n// isPrintableASCII is the validation function for validating if the field's value is a valid printable ASCII character.\nfunc isPrintableASCII(fl FieldLevel) bool {\n\treturn printableASCIIRegex.MatchString(fl.Field().String())\n}\n\n// isASCII is the validation function for validating if the field's value is a valid ASCII character.\nfunc isASCII(fl FieldLevel) bool {\n\treturn aSCIIRegex.MatchString(fl.Field().String())\n}\n\n// isUUID5 is the validation function for validating if the field's value is a valid v5 UUID.\nfunc isUUID5(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID5Regex, fl)\n}\n\n// isUUID4 is the validation function for validating if the field's value is a valid v4 UUID.\nfunc isUUID4(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID4Regex, fl)\n}\n\n// isUUID3 is the validation function for validating if the field's value is a valid v3 UUID.\nfunc isUUID3(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID3Regex, fl)\n}\n\n// isUUID is the validation function for validating if the field's value is a valid UUID of any version.\nfunc isUUID(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUIDRegex, fl)\n}\n\n// isUUID5RFC4122 is the validation function for validating if the field's value is a valid RFC4122 v5 UUID.\nfunc isUUID5RFC4122(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID5RFC4122Regex, fl)\n}\n\n// isUUID4RFC4122 is the validation function for validating if the field's value is a valid RFC4122 v4 UUID.\nfunc isUUID4RFC4122(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID4RFC4122Regex, fl)\n}\n\n// isUUID3RFC4122 is the validation function for validating if the field's value is a valid RFC4122 v3 UUID.\nfunc isUUID3RFC4122(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUID3RFC4122Regex, fl)\n}\n\n// isUUIDRFC4122 is the validation function for validating if the field's value is a valid RFC4122 UUID of any version.\nfunc isUUIDRFC4122(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uUIDRFC4122Regex, fl)\n}\n\n// isULID is the validation function for validating if the field's value is a valid ULID.\nfunc isULID(fl FieldLevel) bool {\n\treturn fieldMatchesRegexByStringerValOrString(uLIDRegex, fl)\n}\n\n// isMD4 is the validation function for validating if the field's value is a valid MD4.\nfunc isMD4(fl FieldLevel) bool {\n\treturn md4Regex.MatchString(fl.Field().String())\n}\n\n// isMD5 is the validation function for validating if the field's value is a valid MD5.\nfunc isMD5(fl FieldLevel) bool {\n\treturn md5Regex.MatchString(fl.Field().String())\n}\n\n// isSHA256 is the validation function for validating if the field's value is a valid SHA256.\nfunc isSHA256(fl FieldLevel) bool {\n\treturn sha256Regex.MatchString(fl.Field().String())\n}\n\n// isSHA384 is the validation function for validating if the field's value is a valid SHA384.\nfunc isSHA384(fl FieldLevel) bool {\n\treturn sha384Regex.MatchString(fl.Field().String())\n}\n\n// isSHA512 is the validation function for validating if the field's value is a valid SHA512.\nfunc isSHA512(fl FieldLevel) bool {\n\treturn sha512Regex.MatchString(fl.Field().String())\n}\n\n// isRIPEMD128 is the validation function for validating if the field's value is a valid PIPEMD128.\nfunc isRIPEMD128(fl FieldLevel) bool {\n\treturn ripemd128Regex.MatchString(fl.Field().String())\n}\n\n// isRIPEMD160 is the validation function for validating if the field's value is a valid PIPEMD160.\nfunc isRIPEMD160(fl FieldLevel) bool {\n\treturn ripemd160Regex.MatchString(fl.Field().String())\n}\n\n// isTIGER128 is the validation function for validating if the field's value is a valid TIGER128.\nfunc isTIGER128(fl FieldLevel) bool {\n\treturn tiger128Regex.MatchString(fl.Field().String())\n}\n\n// isTIGER160 is the validation function for validating if the field's value is a valid TIGER160.\nfunc isTIGER160(fl FieldLevel) bool {\n\treturn tiger160Regex.MatchString(fl.Field().String())\n}\n\n// isTIGER192 is the validation function for validating if the field's value is a valid isTIGER192.\nfunc isTIGER192(fl FieldLevel) bool {\n\treturn tiger192Regex.MatchString(fl.Field().String())\n}\n\n// isISBN is the validation function for validating if the field's value is a valid v10 or v13 ISBN.\nfunc isISBN(fl FieldLevel) bool {\n\treturn isISBN10(fl) || isISBN13(fl)\n}\n\n// isISBN13 is the validation function for validating if the field's value is a valid v13 ISBN.\nfunc isISBN13(fl FieldLevel) bool {\n\ts := strings.Replace(strings.Replace(fl.Field().String(), \"-\", \"\", 4), \" \", \"\", 4)\n\n\tif !iSBN13Regex.MatchString(s) {\n\t\treturn false\n\t}\n\n\tvar checksum int32\n\tvar i int32\n\n\tfactor := []int32{1, 3}\n\n\tfor i = 0; i < 12; i++ {\n\t\tchecksum += factor[i%2] * int32(s[i]-'0')\n\t}\n\n\treturn (int32(s[12]-'0'))-((10-(checksum%10))%10) == 0\n}\n\n// isISBN10 is the validation function for validating if the field's value is a valid v10 ISBN.\nfunc isISBN10(fl FieldLevel) bool {\n\ts := strings.Replace(strings.Replace(fl.Field().String(), \"-\", \"\", 3), \" \", \"\", 3)\n\n\tif !iSBN10Regex.MatchString(s) {\n\t\treturn false\n\t}\n\n\tvar checksum int32\n\tvar i int32\n\n\tfor i = 0; i < 9; i++ {\n\t\tchecksum += (i + 1) * int32(s[i]-'0')\n\t}\n\n\tif s[9] == 'X' {\n\t\tchecksum += 10 * 10\n\t} else {\n\t\tchecksum += 10 * int32(s[9]-'0')\n\t}\n\n\treturn checksum%11 == 0\n}\n\n// isISSN is the validation function for validating if the field's value is a valid ISSN.\nfunc isISSN(fl FieldLevel) bool {\n\ts := fl.Field().String()\n\n\tif !iSSNRegex.MatchString(s) {\n\t\treturn false\n\t}\n\ts = strings.ReplaceAll(s, \"-\", \"\")\n\n\tpos := 8\n\tchecksum := 0\n\n\tfor i := 0; i < 7; i++ {\n\t\tchecksum += pos * int(s[i]-'0')\n\t\tpos--\n\t}\n\n\tif s[7] == 'X' {\n\t\tchecksum += 10\n\t} else {\n\t\tchecksum += int(s[7] - '0')\n\t}\n\n\treturn checksum%11 == 0\n}\n\n// isEthereumAddress is the validation function for validating if the field's value is a valid Ethereum address.\nfunc isEthereumAddress(fl FieldLevel) bool {\n\taddress := fl.Field().String()\n\n\treturn ethAddressRegex.MatchString(address)\n}\n\n// isBitcoinAddress is the validation function for validating if the field's value is a valid btc address\nfunc isBitcoinAddress(fl FieldLevel) bool {\n\taddress := fl.Field().String()\n\n\tif !btcAddressRegex.MatchString(address) {\n\t\treturn false\n\t}\n\n\talphabet := []byte(\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\")\n\n\tdecode := [25]byte{}\n\n\tfor _, n := range []byte(address) {\n\t\td := bytes.IndexByte(alphabet, n)\n\n\t\tfor i := 24; i >= 0; i-- {\n\t\t\td += 58 * int(decode[i])\n\t\t\tdecode[i] = byte(d % 256)\n\t\t\td /= 256\n\t\t}\n\t}\n\n\th := sha256.New()\n\t_, _ = h.Write(decode[:21])\n\td := h.Sum([]byte{})\n\th = sha256.New()\n\t_, _ = h.Write(d)\n\n\tvalidchecksum := [4]byte{}\n\tcomputedchecksum := [4]byte{}\n\n\tcopy(computedchecksum[:], h.Sum(d[:0]))\n\tcopy(validchecksum[:], decode[21:])\n\n\treturn validchecksum == computedchecksum\n}\n\n// isBitcoinBech32Address is the validation function for validating if the field's value is a valid bech32 btc address\nfunc isBitcoinBech32Address(fl FieldLevel) bool {\n\taddress := fl.Field().String()\n\n\tif !btcLowerAddressRegexBech32.MatchString(address) && !btcUpperAddressRegexBech32.MatchString(address) {\n\t\treturn false\n\t}\n\n\tam := len(address) % 8\n\n\tif am == 0 || am == 3 || am == 5 {\n\t\treturn false\n\t}\n\n\taddress = strings.ToLower(address)\n\n\talphabet := \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\"\n\n\thr := []int{3, 3, 0, 2, 3} // the human readable part will always be bc\n\taddr := address[3:]\n\tdp := make([]int, 0, len(addr))\n\n\tfor _, c := range addr {\n\t\tdp = append(dp, strings.IndexRune(alphabet, c))\n\t}\n\n\tver := dp[0]\n\n\tif ver < 0 || ver > 16 {\n\t\treturn false\n\t}\n\n\tif ver == 0 {\n\t\tif len(address) != 42 && len(address) != 62 {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tvalues := append(hr, dp...)\n\n\tGEN := []int{0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3}\n\n\tp := 1\n\n\tfor _, v := range values {\n\t\tb := p >> 25\n\t\tp = (p&0x1ffffff)<<5 ^ v\n\n\t\tfor i := 0; i < 5; i++ {\n\t\t\tif (b>>uint(i))&1 == 1 {\n\t\t\t\tp ^= GEN[i]\n\t\t\t}\n\t\t}\n\t}\n\n\tif p != 1 {\n\t\treturn false\n\t}\n\n\tb := uint(0)\n\tacc := 0\n\tmv := (1 << 5) - 1\n\tvar sw []int\n\n\tfor _, v := range dp[1 : len(dp)-6] {\n\t\tacc = (acc << 5) | v\n\t\tb += 5\n\t\tfor b >= 8 {\n\t\t\tb -= 8\n\t\t\tsw = append(sw, (acc>>b)&mv)\n\t\t}\n\t}\n\n\tif len(sw) < 2 || len(sw) > 40 {\n\t\treturn false\n\t}\n\n\treturn true\n}\n\n// excludesRune is the validation function for validating that the field's value does not contain the rune specified within the param.\nfunc excludesRune(fl FieldLevel) bool {\n\treturn !containsRune(fl)\n}\n\n// excludesAll is the validation function for validating that the field's value does not contain any of the characters specified within the param.\nfunc excludesAll(fl FieldLevel) bool {\n\treturn !containsAny(fl)\n}\n\n// excludes is the validation function for validating that the field's value does not contain the text specified within the param.\nfunc excludes(fl FieldLevel) bool {\n\treturn !contains(fl)\n}\n\n// containsRune is the validation function for validating that the field's value contains the rune specified within the param.\nfunc containsRune(fl FieldLevel) bool {\n\tr, _ := utf8.DecodeRuneInString(fl.Param())\n\n\treturn strings.ContainsRune(fl.Field().String(), r)\n}\n\n// containsAny is the validation function for validating that the field's value contains any of the characters specified within the param.\nfunc containsAny(fl FieldLevel) bool {\n\treturn strings.ContainsAny(fl.Field().String(), fl.Param())\n}\n\n// contains is the validation function for validating that the field's value contains the text specified within the param.\nfunc contains(fl FieldLevel) bool {\n\treturn strings.Contains(fl.Field().String(), fl.Param())\n}\n\n// startsWith is the validation function for validating that the field's value starts with the text specified within the param.\nfunc startsWith(fl FieldLevel) bool {\n\treturn strings.HasPrefix(fl.Field().String(), fl.Param())\n}\n\n// endsWith is the validation function for validating that the field's value ends with the text specified within the param.\nfunc endsWith(fl FieldLevel) bool {\n\treturn strings.HasSuffix(fl.Field().String(), fl.Param())\n}\n\n// startsNotWith is the validation function for validating that the field's value does not start with the text specified within the param.\nfunc startsNotWith(fl FieldLevel) bool {\n\treturn !startsWith(fl)\n}\n\n// endsNotWith is the validation function for validating that the field's value does not end with the text specified within the param.\nfunc endsNotWith(fl FieldLevel) bool {\n\treturn !endsWith(fl)\n}\n\n// fieldContains is the validation function for validating if the current field's value contains the field specified by the param's value.\nfunc fieldContains(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tcurrentField, _, ok := fl.GetStructFieldOK()\n\n\tif !ok {\n\t\treturn false\n\t}\n\n\treturn strings.Contains(field.String(), currentField.String())\n}\n\n// fieldExcludes is the validation function for validating if the current field's value excludes the field specified by the param's value.\nfunc fieldExcludes(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tcurrentField, _, ok := fl.GetStructFieldOK()\n\tif !ok {\n\t\treturn true\n\t}\n\n\treturn !strings.Contains(field.String(), currentField.String())\n}\n\n// isNeField is the validation function for validating if the current field's value is not equal to the field specified by the param's value.\nfunc isNeField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\n\tif !ok || currentKind != kind {\n\t\treturn true\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() != currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() != currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() != currentField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) != int64(currentField.Len())\n\n\tcase reflect.Bool:\n\t\treturn field.Bool() != currentField.Bool()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Interface().(time.Time)\n\t\t\tfieldTime := field.Interface().(time.Time)\n\n\t\t\treturn !fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() != currentField.String()\n}\n\n// isNe is the validation function for validating that the field's value does not equal the provided param value.\nfunc isNe(fl FieldLevel) bool {\n\treturn !isEq(fl)\n}\n\n// isNeIgnoreCase is the validation function for validating that the field's string value does not equal the\n// provided param value. The comparison is case-insensitive\nfunc isNeIgnoreCase(fl FieldLevel) bool {\n\treturn !isEqIgnoreCase(fl)\n}\n\n// isLteCrossStructField is the validation function for validating if the current field's value is less than or equal to the field, within a separate struct, specified by the param's value.\nfunc isLteCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, topKind, ok := fl.GetStructFieldOK()\n\tif !ok || topKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() <= topField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() <= topField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() <= topField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) <= int64(topField.Len())\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\t\t\ttopTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Before(topTime) || fieldTime.Equal(topTime)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() <= topField.String()\n}\n\n// isLtCrossStructField is the validation function for validating if the current field's value is less than the field, within a separate struct, specified by the param's value.\n// NOTE: This is exposed for use within your own custom functions and not intended to be called directly.\nfunc isLtCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, topKind, ok := fl.GetStructFieldOK()\n\tif !ok || topKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() < topField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() < topField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() < topField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) < int64(topField.Len())\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\t\t\ttopTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Before(topTime)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() < topField.String()\n}\n\n// isGteCrossStructField is the validation function for validating if the current field's value is greater than or equal to the field, within a separate struct, specified by the param's value.\nfunc isGteCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, topKind, ok := fl.GetStructFieldOK()\n\tif !ok || topKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() >= topField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() >= topField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() >= topField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) >= int64(topField.Len())\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\t\t\ttopTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.After(topTime) || fieldTime.Equal(topTime)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() >= topField.String()\n}\n\n// isGtCrossStructField is the validation function for validating if the current field's value is greater than the field, within a separate struct, specified by the param's value.\nfunc isGtCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, topKind, ok := fl.GetStructFieldOK()\n\tif !ok || topKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() > topField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() > topField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() > topField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) > int64(topField.Len())\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\t\t\ttopTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.After(topTime)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() > topField.String()\n}\n\n// isNeCrossStructField is the validation function for validating that the current field's value is not equal to the field, within a separate struct, specified by the param's value.\nfunc isNeCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn true\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn topField.Int() != field.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn topField.Uint() != field.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn topField.Float() != field.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(topField.Len()) != int64(field.Len())\n\n\tcase reflect.Bool:\n\t\treturn topField.Bool() != field.Bool()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := field.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn !fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn true\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn topField.String() != field.String()\n}\n\n// isEqCrossStructField is the validation function for validating that the current field's value is equal to the field, within a separate struct, specified by the param's value.\nfunc isEqCrossStructField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\ttopField, topKind, ok := fl.GetStructFieldOK()\n\tif !ok || topKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn topField.Int() == field.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn topField.Uint() == field.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn topField.Float() == field.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(topField.Len()) == int64(field.Len())\n\n\tcase reflect.Bool:\n\t\treturn topField.Bool() == field.Bool()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && topField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := field.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := topField.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != topField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn topField.String() == field.String()\n}\n\n// isEqField is the validation function for validating if the current field's value is equal to the field specified by the param's value.\nfunc isEqField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() == currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() == currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn field.Float() == currentField.Float()\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) == int64(currentField.Len())\n\n\tcase reflect.Bool:\n\t\treturn field.Bool() == currentField.Bool()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String:\n\treturn field.String() == currentField.String()\n}\n\n// isEq is the validation function for validating if the current field's value is equal to the param's value.\nfunc isEq(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\treturn field.String() == param\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) == p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() == p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() == p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() == p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() == p\n\n\tcase reflect.Bool:\n\t\tp := asBool(param)\n\n\t\treturn field.Bool() == p\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isEqIgnoreCase is the validation function for validating if the current field's string value is\n// equal to the param's value.\n// The comparison is case-insensitive.\nfunc isEqIgnoreCase(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\treturn strings.EqualFold(field.String(), param)\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isPostcodeByIso3166Alpha2 validates by value which is country code in iso 3166 alpha 2\n// example: `postcode_iso3166_alpha2=US`\nfunc isPostcodeByIso3166Alpha2(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\treg, found := postCodeRegexDict[param]\n\tif !found {\n\t\treturn false\n\t}\n\n\treturn reg.MatchString(field.String())\n}\n\n// isPostcodeByIso3166Alpha2Field validates by field which represents for a value of country code in iso 3166 alpha 2\n// example: `postcode_iso3166_alpha2_field=CountryCode`\nfunc isPostcodeByIso3166Alpha2Field(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparams := parseOneOfParam2(fl.Param())\n\n\tif len(params) != 1 {\n\t\treturn false\n\t}\n\n\tcurrentField, kind, _, found := fl.GetStructFieldOKAdvanced2(fl.Parent(), params[0])\n\tif !found {\n\t\treturn false\n\t}\n\n\tif kind != reflect.String {\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", currentField.Interface()))\n\t}\n\n\treg, found := postCodeRegexDict[currentField.String()]\n\tif !found {\n\t\treturn false\n\t}\n\n\treturn reg.MatchString(field.String())\n}\n\n// isBase64 is the validation function for validating if the current field's value is a valid base 64.\nfunc isBase64(fl FieldLevel) bool {\n\treturn base64Regex.MatchString(fl.Field().String())\n}\n\n// isBase64URL is the validation function for validating if the current field's value is a valid base64 URL safe string.\nfunc isBase64URL(fl FieldLevel) bool {\n\treturn base64URLRegex.MatchString(fl.Field().String())\n}\n\n// isBase64RawURL is the validation function for validating if the current field's value is a valid base64 URL safe string without '=' padding.\nfunc isBase64RawURL(fl FieldLevel) bool {\n\treturn base64RawURLRegex.MatchString(fl.Field().String())\n}\n\n// isURI is the validation function for validating if the current field's value is a valid URI.\nfunc isURI(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tswitch field.Kind() {\n\tcase reflect.String:\n\n\t\ts := field.String()\n\n\t\t// checks needed as of Go 1.6 because of change https://github.com/golang/go/commit/617c93ce740c3c3cc28cdd1a0d712be183d0b328#diff-6c2d018290e298803c0c9419d8739885L195\n\t\t// emulate browser and strip the '#' suffix prior to validation. see issue-#237\n\t\tif i := strings.Index(s, \"#\"); i > -1 {\n\t\t\ts = s[:i]\n\t\t}\n\n\t\tif len(s) == 0 {\n\t\t\treturn false\n\t\t}\n\n\t\t_, err := url.ParseRequestURI(s)\n\n\t\treturn err == nil\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isFileURL is the helper function for validating if the `path` valid file URL as per RFC8089\nfunc isFileURL(path string) bool {\n\tif !strings.HasPrefix(path, \"file:/\") {\n\t\treturn false\n\t}\n\t_, err := url.ParseRequestURI(path)\n\treturn err == nil\n}\n\n// isURL is the validation function for validating if the current field's value is a valid URL.\nfunc isURL(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tswitch field.Kind() {\n\tcase reflect.String:\n\n\t\ts := strings.ToLower(field.String())\n\n\t\tif len(s) == 0 {\n\t\t\treturn false\n\t\t}\n\n\t\tif isFileURL(s) {\n\t\t\treturn true\n\t\t}\n\n\t\turl, err := url.Parse(s)\n\t\tif err != nil || url.Scheme == \"\" {\n\t\t\treturn false\n\t\t}\n\n\t\tif url.Host == \"\" && url.Fragment == \"\" && url.Opaque == \"\" {\n\t\t\treturn false\n\t\t}\n\n\t\treturn true\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isHttpURL is the validation function for validating if the current field's value is a valid HTTP(s) URL.\nfunc isHttpURL(fl FieldLevel) bool {\n\tif !isURL(fl) {\n\t\treturn false\n\t}\n\n\tfield := fl.Field()\n\tswitch field.Kind() {\n\tcase reflect.String:\n\n\t\ts := strings.ToLower(field.String())\n\n\t\turl, err := url.Parse(s)\n\t\tif err != nil || url.Host == \"\" {\n\t\t\treturn false\n\t\t}\n\n\t\treturn url.Scheme == \"http\" || url.Scheme == \"https\"\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isFile is the validation function for validating if the current field's value is a valid existing file path.\nfunc isFile(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tfileInfo, err := os.Stat(field.String())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\treturn !fileInfo.IsDir()\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isFilePath is the validation function for validating if the current field's value is a valid file path.\nfunc isFilePath(fl FieldLevel) bool {\n\n\tvar exists bool\n\tvar err error\n\n\tfield := fl.Field()\n\n\t// Not valid if it is a directory.\n\tif isDir(fl) {\n\t\treturn false\n\t}\n\t// If it exists, it obviously is valid.\n\t// This is done first to avoid code duplication and unnecessary additional logic.\n\tif exists = isFile(fl); exists {\n\t\treturn true\n\t}\n\n\t// It does not exist but may still be a valid filepath.\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\t// Every OS allows for whitespace, but none\n\t\t// let you use a file with no filename (to my knowledge).\n\t\t// Unless you're dealing with raw inodes, but I digress.\n\t\tif strings.TrimSpace(field.String()) == \"\" {\n\t\t\treturn false\n\t\t}\n\t\t// We make sure it isn't a directory.\n\t\tif strings.HasSuffix(field.String(), string(os.PathSeparator)) {\n\t\t\treturn false\n\t\t}\n\t\tif _, err = os.Stat(field.String()); err != nil {\n\t\t\tswitch t := err.(type) {\n\t\t\tcase *fs.PathError:\n\t\t\t\tif t.Err == syscall.EINVAL {\n\t\t\t\t\t// It's definitely an invalid character in the filepath.\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// It could be a permission error, a does-not-exist error, etc.\n\t\t\t\t// Out-of-scope for this validation, though.\n\t\t\t\treturn true\n\t\t\tdefault:\n\t\t\t\t// Something went *seriously* wrong.\n\t\t\t\t/*\n\t\t\t\t\tPer https://pkg.go.dev/os#Stat:\n\t\t\t\t\t\t\"If there is an error, it will be of type *PathError.\"\n\t\t\t\t*/\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isE164 is the validation function for validating if the current field's value is a valid e.164 formatted phone number.\nfunc isE164(fl FieldLevel) bool {\n\treturn e164Regex.MatchString(fl.Field().String())\n}\n\n// isEmail is the validation function for validating if the current field's value is a valid email address.\nfunc isEmail(fl FieldLevel) bool {\n\treturn emailRegex.MatchString(fl.Field().String())\n}\n\n// isHSLA is the validation function for validating if the current field's value is a valid HSLA color.\nfunc isHSLA(fl FieldLevel) bool {\n\treturn hslaRegex.MatchString(fl.Field().String())\n}\n\n// isHSL is the validation function for validating if the current field's value is a valid HSL color.\nfunc isHSL(fl FieldLevel) bool {\n\treturn hslRegex.MatchString(fl.Field().String())\n}\n\n// isRGBA is the validation function for validating if the current field's value is a valid RGBA color.\nfunc isRGBA(fl FieldLevel) bool {\n\treturn rgbaRegex.MatchString(fl.Field().String())\n}\n\n// isRGB is the validation function for validating if the current field's value is a valid RGB color.\nfunc isRGB(fl FieldLevel) bool {\n\treturn rgbRegex.MatchString(fl.Field().String())\n}\n\n// isHEXColor is the validation function for validating if the current field's value is a valid HEX color.\nfunc isHEXColor(fl FieldLevel) bool {\n\treturn hexColorRegex.MatchString(fl.Field().String())\n}\n\n// isHexadecimal is the validation function for validating if the current field's value is a valid hexadecimal.\nfunc isHexadecimal(fl FieldLevel) bool {\n\treturn hexadecimalRegex.MatchString(fl.Field().String())\n}\n\n// isNumber is the validation function for validating if the current field's value is a valid number.\nfunc isNumber(fl FieldLevel) bool {\n\tswitch fl.Field().Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.Float32, reflect.Float64:\n\t\treturn true\n\tdefault:\n\t\treturn numberRegex.MatchString(fl.Field().String())\n\t}\n}\n\n// isNumeric is the validation function for validating if the current field's value is a valid numeric value.\nfunc isNumeric(fl FieldLevel) bool {\n\tswitch fl.Field().Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr, reflect.Float32, reflect.Float64:\n\t\treturn true\n\tdefault:\n\t\treturn numericRegex.MatchString(fl.Field().String())\n\t}\n}\n\n// isAlphanum is the validation function for validating if the current field's value is a valid alphanumeric value.\nfunc isAlphanum(fl FieldLevel) bool {\n\treturn alphaNumericRegex.MatchString(fl.Field().String())\n}\n\n// isAlpha is the validation function for validating if the current field's value is a valid alpha value.\nfunc isAlpha(fl FieldLevel) bool {\n\treturn alphaRegex.MatchString(fl.Field().String())\n}\n\n// isAlphanumUnicode is the validation function for validating if the current field's value is a valid alphanumeric unicode value.\nfunc isAlphanumUnicode(fl FieldLevel) bool {\n\treturn alphaUnicodeNumericRegex.MatchString(fl.Field().String())\n}\n\n// isAlphaUnicode is the validation function for validating if the current field's value is a valid alpha unicode value.\nfunc isAlphaUnicode(fl FieldLevel) bool {\n\treturn alphaUnicodeRegex.MatchString(fl.Field().String())\n}\n\n// isBoolean is the validation function for validating if the current field's value is a valid boolean value or can be safely converted to a boolean value.\nfunc isBoolean(fl FieldLevel) bool {\n\tswitch fl.Field().Kind() {\n\tcase reflect.Bool:\n\t\treturn true\n\tdefault:\n\t\t_, err := strconv.ParseBool(fl.Field().String())\n\t\treturn err == nil\n\t}\n}\n\n// isDefault is the opposite of required aka hasValue\nfunc isDefault(fl FieldLevel) bool {\n\treturn !hasValue(fl)\n}\n\n// hasValue is the validation function for validating if the current field's value is not the default static value.\nfunc hasValue(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tswitch field.Kind() {\n\tcase reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func:\n\t\treturn !field.IsNil()\n\tdefault:\n\t\tif fl.(*validate).fldIsPointer && field.Interface() != nil {\n\t\t\treturn true\n\t\t}\n\t\treturn field.IsValid() && !field.IsZero()\n\t}\n}\n\n// requireCheckFieldKind is a func for check field kind\nfunc requireCheckFieldKind(fl FieldLevel, param string, defaultNotFoundValue bool) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\tvar nullable, found bool\n\tif len(param) > 0 {\n\t\tfield, kind, nullable, found = fl.GetStructFieldOKAdvanced2(fl.Parent(), param)\n\t\tif !found {\n\t\t\treturn defaultNotFoundValue\n\t\t}\n\t}\n\tswitch kind {\n\tcase reflect.Invalid:\n\t\treturn defaultNotFoundValue\n\tcase reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func:\n\t\treturn field.IsNil()\n\tdefault:\n\t\tif nullable && field.Interface() != nil {\n\t\t\treturn false\n\t\t}\n\t\treturn field.IsValid() && field.IsZero()\n\t}\n}\n\n// requireCheckFieldValue is a func for check field value\nfunc requireCheckFieldValue(\n\tfl FieldLevel, param string, value string, defaultNotFoundValue bool,\n) bool {\n\tfield, kind, _, found := fl.GetStructFieldOKAdvanced2(fl.Parent(), param)\n\tif !found {\n\t\treturn defaultNotFoundValue\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn field.Int() == asInt(value)\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\treturn field.Uint() == asUint(value)\n\n\tcase reflect.Float32:\n\t\treturn field.Float() == asFloat32(value)\n\n\tcase reflect.Float64:\n\t\treturn field.Float() == asFloat64(value)\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\treturn int64(field.Len()) == asInt(value)\n\n\tcase reflect.Bool:\n\t\treturn field.Bool() == asBool(value)\n\t}\n\n\t// default reflect.String:\n\treturn field.String() == value\n}\n\n// requiredIf is the validation function\n// The field under validation must be present and not empty only if all the other specified fields are equal to the value following with the specified field.\nfunc requiredIf(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tif len(params)%2 != 0 {\n\t\tpanic(fmt.Sprintf(\"Bad param number for required_if %s\", fl.FieldName()))\n\t}\n\tfor i := 0; i < len(params); i += 2 {\n\t\tif !requireCheckFieldValue(fl, params[i], params[i+1], false) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn hasValue(fl)\n}\n\n// excludedIf is the validation function\n// The field under validation must not be present or is empty only if all the other specified fields are equal to the value following with the specified field.\nfunc excludedIf(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tif len(params)%2 != 0 {\n\t\tpanic(fmt.Sprintf(\"Bad param number for excluded_if %s\", fl.FieldName()))\n\t}\n\n\tfor i := 0; i < len(params); i += 2 {\n\t\tif !requireCheckFieldValue(fl, params[i], params[i+1], false) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn !hasValue(fl)\n}\n\n// requiredUnless is the validation function\n// The field under validation must be present and not empty only unless all the other specified fields are equal to the value following with the specified field.\nfunc requiredUnless(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tif len(params)%2 != 0 {\n\t\tpanic(fmt.Sprintf(\"Bad param number for required_unless %s\", fl.FieldName()))\n\t}\n\n\tfor i := 0; i < len(params); i += 2 {\n\t\tif requireCheckFieldValue(fl, params[i], params[i+1], false) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn hasValue(fl)\n}\n\n// skipUnless is the validation function\n// The field under validation must be present and not empty only unless all the other specified fields are equal to the value following with the specified field.\nfunc skipUnless(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tif len(params)%2 != 0 {\n\t\tpanic(fmt.Sprintf(\"Bad param number for skip_unless %s\", fl.FieldName()))\n\t}\n\tfor i := 0; i < len(params); i += 2 {\n\t\tif !requireCheckFieldValue(fl, params[i], params[i+1], false) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn hasValue(fl)\n}\n\n// excludedUnless is the validation function\n// The field under validation must not be present or is empty unless all the other specified fields are equal to the value following with the specified field.\nfunc excludedUnless(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tif len(params)%2 != 0 {\n\t\tpanic(fmt.Sprintf(\"Bad param number for excluded_unless %s\", fl.FieldName()))\n\t}\n\tfor i := 0; i < len(params); i += 2 {\n\t\tif !requireCheckFieldValue(fl, params[i], params[i+1], false) {\n\t\t\treturn !hasValue(fl)\n\t\t}\n\t}\n\treturn true\n}\n\n// excludedWith is the validation function\n// The field under validation must not be present or is empty if any of the other specified fields are present.\nfunc excludedWith(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif !requireCheckFieldKind(fl, param, true) {\n\t\t\treturn !hasValue(fl)\n\t\t}\n\t}\n\treturn true\n}\n\n// requiredWith is the validation function\n// The field under validation must be present and not empty only if any of the other specified fields are present.\nfunc requiredWith(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif !requireCheckFieldKind(fl, param, true) {\n\t\t\treturn hasValue(fl)\n\t\t}\n\t}\n\treturn true\n}\n\n// excludedWithAll is the validation function\n// The field under validation must not be present or is empty if all of the other specified fields are present.\nfunc excludedWithAll(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif requireCheckFieldKind(fl, param, true) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn !hasValue(fl)\n}\n\n// requiredWithAll is the validation function\n// The field under validation must be present and not empty only if all of the other specified fields are present.\nfunc requiredWithAll(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif requireCheckFieldKind(fl, param, true) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn hasValue(fl)\n}\n\n// excludedWithout is the validation function\n// The field under validation must not be present or is empty when any of the other specified fields are not present.\nfunc excludedWithout(fl FieldLevel) bool {\n\tif requireCheckFieldKind(fl, strings.TrimSpace(fl.Param()), true) {\n\t\treturn !hasValue(fl)\n\t}\n\treturn true\n}\n\n// requiredWithout is the validation function\n// The field under validation must be present and not empty only when any of the other specified fields are not present.\nfunc requiredWithout(fl FieldLevel) bool {\n\tif requireCheckFieldKind(fl, strings.TrimSpace(fl.Param()), true) {\n\t\treturn hasValue(fl)\n\t}\n\treturn true\n}\n\n// excludedWithoutAll is the validation function\n// The field under validation must not be present or is empty when all of the other specified fields are not present.\nfunc excludedWithoutAll(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif !requireCheckFieldKind(fl, param, true) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn !hasValue(fl)\n}\n\n// requiredWithoutAll is the validation function\n// The field under validation must be present and not empty only when all of the other specified fields are not present.\nfunc requiredWithoutAll(fl FieldLevel) bool {\n\tparams := parseOneOfParam2(fl.Param())\n\tfor _, param := range params {\n\t\tif !requireCheckFieldKind(fl, param, true) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn hasValue(fl)\n}\n\n// isGteField is the validation function for validating if the current field's value is greater than or equal to the field specified by the param's value.\nfunc isGteField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\n\t\treturn field.Int() >= currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\n\t\treturn field.Uint() >= currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\n\t\treturn field.Float() >= currentField.Float()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.After(t) || fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String\n\treturn len(field.String()) >= len(currentField.String())\n}\n\n// isGtField is the validation function for validating if the current field's value is greater than the field specified by the param's value.\nfunc isGtField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\n\t\treturn field.Int() > currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\n\t\treturn field.Uint() > currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\n\t\treturn field.Float() > currentField.Float()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.After(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String\n\treturn len(field.String()) > len(currentField.String())\n}\n\n// isGte is the validation function for validating if the current field's value is greater than or equal to the param's value.\nfunc isGte(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\tp := asInt(param)\n\n\t\treturn int64(utf8.RuneCountInString(field.String())) >= p\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) >= p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() >= p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() >= p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() >= p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() >= p\n\n\tcase reflect.Struct:\n\n\t\tif field.Type().ConvertibleTo(timeType) {\n\n\t\t\tnow := time.Now().UTC()\n\t\t\tt := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn t.After(now) || t.Equal(now)\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isGt is the validation function for validating if the current field's value is greater than the param's value.\nfunc isGt(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\tp := asInt(param)\n\n\t\treturn int64(utf8.RuneCountInString(field.String())) > p\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) > p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() > p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() > p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() > p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() > p\n\n\tcase reflect.Struct:\n\n\t\tif field.Type().ConvertibleTo(timeType) {\n\n\t\t\treturn field.Convert(timeType).Interface().(time.Time).After(time.Now().UTC())\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// hasLengthOf is the validation function for validating if the current field's value is equal to the param's value.\nfunc hasLengthOf(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\tp := asInt(param)\n\n\t\treturn int64(utf8.RuneCountInString(field.String())) == p\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) == p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() == p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() == p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() == p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() == p\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// hasMinOf is the validation function for validating if the current field's value is greater than or equal to the param's value.\nfunc hasMinOf(fl FieldLevel) bool {\n\treturn isGte(fl)\n}\n\n// isLteField is the validation function for validating if the current field's value is less than or equal to the field specified by the param's value.\nfunc isLteField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\n\t\treturn field.Int() <= currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\n\t\treturn field.Uint() <= currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\n\t\treturn field.Float() <= currentField.Float()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Before(t) || fieldTime.Equal(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String\n\treturn len(field.String()) <= len(currentField.String())\n}\n\n// isLtField is the validation function for validating if the current field's value is less than the field specified by the param's value.\nfunc isLtField(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tkind := field.Kind()\n\n\tcurrentField, currentKind, ok := fl.GetStructFieldOK()\n\tif !ok || currentKind != kind {\n\t\treturn false\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\n\t\treturn field.Int() < currentField.Int()\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\n\t\treturn field.Uint() < currentField.Uint()\n\n\tcase reflect.Float32, reflect.Float64:\n\n\t\treturn field.Float() < currentField.Float()\n\n\tcase reflect.Struct:\n\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(timeType) && currentField.Type().ConvertibleTo(timeType) {\n\n\t\t\tt := currentField.Convert(timeType).Interface().(time.Time)\n\t\t\tfieldTime := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn fieldTime.Before(t)\n\t\t}\n\n\t\t// Not Same underlying type i.e. struct and time\n\t\tif fieldType != currentField.Type() {\n\t\t\treturn false\n\t\t}\n\t}\n\n\t// default reflect.String\n\treturn len(field.String()) < len(currentField.String())\n}\n\n// isLte is the validation function for validating if the current field's value is less than or equal to the param's value.\nfunc isLte(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\tp := asInt(param)\n\n\t\treturn int64(utf8.RuneCountInString(field.String())) <= p\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) <= p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() <= p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() <= p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() <= p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() <= p\n\n\tcase reflect.Struct:\n\n\t\tif field.Type().ConvertibleTo(timeType) {\n\n\t\t\tnow := time.Now().UTC()\n\t\t\tt := field.Convert(timeType).Interface().(time.Time)\n\n\t\t\treturn t.Before(now) || t.Equal(now)\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isLt is the validation function for validating if the current field's value is less than the param's value.\nfunc isLt(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tswitch field.Kind() {\n\n\tcase reflect.String:\n\t\tp := asInt(param)\n\n\t\treturn int64(utf8.RuneCountInString(field.String())) < p\n\n\tcase reflect.Slice, reflect.Map, reflect.Array:\n\t\tp := asInt(param)\n\n\t\treturn int64(field.Len()) < p\n\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tp := asIntFromType(field.Type(), param)\n\n\t\treturn field.Int() < p\n\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:\n\t\tp := asUint(param)\n\n\t\treturn field.Uint() < p\n\n\tcase reflect.Float32:\n\t\tp := asFloat32(param)\n\n\t\treturn field.Float() < p\n\n\tcase reflect.Float64:\n\t\tp := asFloat64(param)\n\n\t\treturn field.Float() < p\n\n\tcase reflect.Struct:\n\n\t\tif field.Type().ConvertibleTo(timeType) {\n\n\t\t\treturn field.Convert(timeType).Interface().(time.Time).Before(time.Now().UTC())\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// hasMaxOf is the validation function for validating if the current field's value is less than or equal to the param's value.\nfunc hasMaxOf(fl FieldLevel) bool {\n\treturn isLte(fl)\n}\n\n// isTCP4AddrResolvable is the validation function for validating if the field's value is a resolvable tcp4 address.\nfunc isTCP4AddrResolvable(fl FieldLevel) bool {\n\tif !isIP4Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveTCPAddr(\"tcp4\", fl.Field().String())\n\treturn err == nil\n}\n\n// isTCP6AddrResolvable is the validation function for validating if the field's value is a resolvable tcp6 address.\nfunc isTCP6AddrResolvable(fl FieldLevel) bool {\n\tif !isIP6Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveTCPAddr(\"tcp6\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isTCPAddrResolvable is the validation function for validating if the field's value is a resolvable tcp address.\nfunc isTCPAddrResolvable(fl FieldLevel) bool {\n\tif !isIP4Addr(fl) && !isIP6Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveTCPAddr(\"tcp\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isUDP4AddrResolvable is the validation function for validating if the field's value is a resolvable udp4 address.\nfunc isUDP4AddrResolvable(fl FieldLevel) bool {\n\tif !isIP4Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveUDPAddr(\"udp4\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isUDP6AddrResolvable is the validation function for validating if the field's value is a resolvable udp6 address.\nfunc isUDP6AddrResolvable(fl FieldLevel) bool {\n\tif !isIP6Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveUDPAddr(\"udp6\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isUDPAddrResolvable is the validation function for validating if the field's value is a resolvable udp address.\nfunc isUDPAddrResolvable(fl FieldLevel) bool {\n\tif !isIP4Addr(fl) && !isIP6Addr(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveUDPAddr(\"udp\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isIP4AddrResolvable is the validation function for validating if the field's value is a resolvable ip4 address.\nfunc isIP4AddrResolvable(fl FieldLevel) bool {\n\tif !isIPv4(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveIPAddr(\"ip4\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isIP6AddrResolvable is the validation function for validating if the field's value is a resolvable ip6 address.\nfunc isIP6AddrResolvable(fl FieldLevel) bool {\n\tif !isIPv6(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveIPAddr(\"ip6\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isIPAddrResolvable is the validation function for validating if the field's value is a resolvable ip address.\nfunc isIPAddrResolvable(fl FieldLevel) bool {\n\tif !isIP(fl) {\n\t\treturn false\n\t}\n\n\t_, err := net.ResolveIPAddr(\"ip\", fl.Field().String())\n\n\treturn err == nil\n}\n\n// isUnixAddrResolvable is the validation function for validating if the field's value is a resolvable unix address.\nfunc isUnixAddrResolvable(fl FieldLevel) bool {\n\t_, err := net.ResolveUnixAddr(\"unix\", fl.Field().String())\n\n\treturn err == nil\n}\n\nfunc isIP4Addr(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\n\tif idx := strings.LastIndex(val, \":\"); idx != -1 {\n\t\tval = val[0:idx]\n\t}\n\n\tip := net.ParseIP(val)\n\n\treturn ip != nil && ip.To4() != nil\n}\n\nfunc isIP6Addr(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\n\tif idx := strings.LastIndex(val, \":\"); idx != -1 {\n\t\tif idx != 0 && val[idx-1:idx] == \"]\" {\n\t\t\tval = val[1 : idx-1]\n\t\t}\n\t}\n\n\tip := net.ParseIP(val)\n\n\treturn ip != nil && ip.To4() == nil\n}\n\nfunc isHostnameRFC952(fl FieldLevel) bool {\n\treturn hostnameRegexRFC952.MatchString(fl.Field().String())\n}\n\nfunc isHostnameRFC1123(fl FieldLevel) bool {\n\treturn hostnameRegexRFC1123.MatchString(fl.Field().String())\n}\n\nfunc isFQDN(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\n\tif val == \"\" {\n\t\treturn false\n\t}\n\n\treturn fqdnRegexRFC1123.MatchString(val)\n}\n\n// isDir is the validation function for validating if the current field's value is a valid existing directory.\nfunc isDir(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Kind() == reflect.String {\n\t\tfileInfo, err := os.Stat(field.String())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\treturn fileInfo.IsDir()\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isDirPath is the validation function for validating if the current field's value is a valid directory.\nfunc isDirPath(fl FieldLevel) bool {\n\n\tvar exists bool\n\tvar err error\n\n\tfield := fl.Field()\n\n\t// If it exists, it obviously is valid.\n\t// This is done first to avoid code duplication and unnecessary additional logic.\n\tif exists = isDir(fl); exists {\n\t\treturn true\n\t}\n\n\t// It does not exist but may still be a valid path.\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\t// Every OS allows for whitespace, but none\n\t\t// let you use a dir with no name (to my knowledge).\n\t\t// Unless you're dealing with raw inodes, but I digress.\n\t\tif strings.TrimSpace(field.String()) == \"\" {\n\t\t\treturn false\n\t\t}\n\t\tif _, err = os.Stat(field.String()); err != nil {\n\t\t\tswitch t := err.(type) {\n\t\t\tcase *fs.PathError:\n\t\t\t\tif t.Err == syscall.EINVAL {\n\t\t\t\t\t// It's definitely an invalid character in the path.\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t\t// It could be a permission error, a does-not-exist error, etc.\n\t\t\t\t// Out-of-scope for this validation, though.\n\t\t\t\t// Lastly, we make sure it is a directory.\n\t\t\t\tif strings.HasSuffix(field.String(), string(os.PathSeparator)) {\n\t\t\t\t\treturn true\n\t\t\t\t} else {\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\t// Something went *seriously* wrong.\n\t\t\t\t/*\n\t\t\t\t\tPer https://pkg.go.dev/os#Stat:\n\t\t\t\t\t\t\"If there is an error, it will be of type *PathError.\"\n\t\t\t\t*/\n\t\t\t\tpanic(err)\n\t\t\t}\n\t\t}\n\t\t// We repeat the check here to make sure it is an explicit directory in case the above os.Stat didn't trigger an error.\n\t\tif strings.HasSuffix(field.String(), string(os.PathSeparator)) {\n\t\t\treturn true\n\t\t} else {\n\t\t\treturn false\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isJSON is the validation function for validating if the current field's value is a valid json string.\nfunc isJSON(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tval := field.String()\n\t\treturn json.Valid([]byte(val))\n\tcase reflect.Slice:\n\t\tfieldType := field.Type()\n\n\t\tif fieldType.ConvertibleTo(byteSliceType) {\n\t\t\tb := field.Convert(byteSliceType).Interface().([]byte)\n\t\t\treturn json.Valid(b)\n\t\t}\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isJWT is the validation function for validating if the current field's value is a valid JWT string.\nfunc isJWT(fl FieldLevel) bool {\n\treturn jWTRegex.MatchString(fl.Field().String())\n}\n\n// isHostnamePort validates a <dns>:<port> combination for fields typically used for socket address.\nfunc isHostnamePort(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\thost, port, err := net.SplitHostPort(val)\n\tif err != nil {\n\t\treturn false\n\t}\n\t// Port must be a iny <= 65535.\n\tif portNum, err := strconv.ParseInt(\n\t\tport, 10, 32,\n\t); err != nil || portNum > 65535 || portNum < 1 {\n\t\treturn false\n\t}\n\n\t// If host is specified, it should match a DNS name\n\tif host != \"\" {\n\t\treturn hostnameRegexRFC1123.MatchString(host)\n\t}\n\treturn true\n}\n\n// isLowercase is the validation function for validating if the current field's value is a lowercase string.\nfunc isLowercase(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Kind() == reflect.String {\n\t\tif field.String() == \"\" {\n\t\t\treturn false\n\t\t}\n\t\treturn field.String() == strings.ToLower(field.String())\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isUppercase is the validation function for validating if the current field's value is an uppercase string.\nfunc isUppercase(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Kind() == reflect.String {\n\t\tif field.String() == \"\" {\n\t\t\treturn false\n\t\t}\n\t\treturn field.String() == strings.ToUpper(field.String())\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isDatetime is the validation function for validating if the current field's value is a valid datetime string.\nfunc isDatetime(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tparam := fl.Param()\n\n\tif field.Kind() == reflect.String {\n\t\t_, err := time.Parse(param, field.String())\n\n\t\treturn err == nil\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isTimeZone is the validation function for validating if the current field's value is a valid time zone string.\nfunc isTimeZone(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tif field.Kind() == reflect.String {\n\t\t// empty value is converted to UTC by time.LoadLocation but disallow it as it is not a valid time zone name\n\t\tif field.String() == \"\" {\n\t\t\treturn false\n\t\t}\n\n\t\t// Local value is converted to the current system time zone by time.LoadLocation but disallow it as it is not a valid time zone name\n\t\tif strings.ToLower(field.String()) == \"local\" {\n\t\t\treturn false\n\t\t}\n\n\t\t_, err := time.LoadLocation(field.String())\n\t\treturn err == nil\n\t}\n\n\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n}\n\n// isIso3166Alpha2 is the validation function for validating if the current field's value is a valid iso3166-1 alpha-2 country code.\nfunc isIso3166Alpha2(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn iso3166_1_alpha2[val]\n}\n\n// isIso3166Alpha3 is the validation function for validating if the current field's value is a valid iso3166-1 alpha-3 country code.\nfunc isIso3166Alpha3(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn iso3166_1_alpha3[val]\n}\n\n// isIso3166AlphaNumeric is the validation function for validating if the current field's value is a valid iso3166-1 alpha-numeric country code.\nfunc isIso3166AlphaNumeric(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tvar code int\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\ti, err := strconv.Atoi(field.String())\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tcode = i % 1000\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tcode = int(field.Int() % 1000)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tcode = int(field.Uint() % 1000)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\treturn iso3166_1_alpha_numeric[code]\n}\n\n// isIso31662 is the validation function for validating if the current field's value is a valid iso3166-2 code.\nfunc isIso31662(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn iso3166_2[val]\n}\n\n// isIso4217 is the validation function for validating if the current field's value is a valid iso4217 currency code.\nfunc isIso4217(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn iso4217[val]\n}\n\n// isIso4217Numeric is the validation function for validating if the current field's value is a valid iso4217 numeric currency code.\nfunc isIso4217Numeric(fl FieldLevel) bool {\n\tfield := fl.Field()\n\n\tvar code int\n\tswitch field.Kind() {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tcode = int(field.Int())\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tcode = int(field.Uint())\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\treturn iso4217_numeric[code]\n}\n\n// isIsoBicFormat is the validation function for validating if the current field's value is a valid Business Identifier Code (SWIFT code), defined in ISO 9362\nfunc isIsoBicFormat(fl FieldLevel) bool {\n\tbicString := fl.Field().String()\n\n\treturn bicRegex.MatchString(bicString)\n}\n\n// isSemverFormat is the validation function for validating if the current field's value is a valid semver version, defined in Semantic Versioning 2.0.0\nfunc isSemverFormat(fl FieldLevel) bool {\n\tsemverString := fl.Field().String()\n\n\treturn semverRegex.MatchString(semverString)\n}\n\n// isCveFormat is the validation function for validating if the current field's value is a valid cve id, defined in CVE mitre org\nfunc isCveFormat(fl FieldLevel) bool {\n\tcveString := fl.Field().String()\n\n\treturn cveRegex.MatchString(cveString)\n}\n\n// isDnsRFC1035LabelFormat is the validation function\n// for validating if the current field's value is\n// a valid dns RFC 1035 label, defined in RFC 1035.\nfunc isDnsRFC1035LabelFormat(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn dnsRegexRFC1035Label.MatchString(val)\n}\n\n// digitsHaveLuhnChecksum returns true if and only if the last element of the given digits slice is the Luhn checksum of the previous elements\nfunc digitsHaveLuhnChecksum(digits []string) bool {\n\tsize := len(digits)\n\tsum := 0\n\tfor i, digit := range digits {\n\t\tvalue, err := strconv.Atoi(digit)\n\t\tif err != nil {\n\t\t\treturn false\n\t\t}\n\t\tif size%2 == 0 && i%2 == 0 || size%2 == 1 && i%2 == 1 {\n\t\t\tv := value * 2\n\t\t\tif v >= 10 {\n\t\t\t\tsum += 1 + (v % 10)\n\t\t\t} else {\n\t\t\t\tsum += v\n\t\t\t}\n\t\t} else {\n\t\t\tsum += value\n\t\t}\n\t}\n\treturn (sum % 10) == 0\n}\n\n// isMongoDB is the validation function for validating if the current field's value is valid mongoDB objectID\nfunc isMongoDB(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\treturn mongodbRegex.MatchString(val)\n}\n\n// isSpiceDB is the validation function for validating if the current field's value is valid for use with Authzed SpiceDB in the indicated way\nfunc isSpiceDB(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\tparam := fl.Param()\n\n\tswitch param {\n\tcase \"permission\":\n\t\treturn spicedbPermissionRegex.MatchString(val)\n\tcase \"type\":\n\t\treturn spicedbTypeRegex.MatchString(val)\n\tcase \"id\", \"\":\n\t\treturn spicedbIDRegex.MatchString(val)\n\t}\n\n\tpanic(\"Unrecognized parameter: \" + param)\n}\n\n// isCreditCard is the validation function for validating if the current field's value is a valid credit card number\nfunc isCreditCard(fl FieldLevel) bool {\n\tval := fl.Field().String()\n\tvar creditCard bytes.Buffer\n\tsegments := strings.Split(val, \" \")\n\tfor _, segment := range segments {\n\t\tif len(segment) < 3 {\n\t\t\treturn false\n\t\t}\n\t\tcreditCard.WriteString(segment)\n\t}\n\n\tccDigits := strings.Split(creditCard.String(), \"\")\n\tsize := len(ccDigits)\n\tif size < 12 || size > 19 {\n\t\treturn false\n\t}\n\n\treturn digitsHaveLuhnChecksum(ccDigits)\n}\n\n// hasLuhnChecksum is the validation for validating if the current field's value has a valid Luhn checksum\nfunc hasLuhnChecksum(fl FieldLevel) bool {\n\tfield := fl.Field()\n\tvar str string // convert to a string which will then be split into single digits; easier and more readable than shifting/extracting single digits from a number\n\tswitch field.Kind() {\n\tcase reflect.String:\n\t\tstr = field.String()\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tstr = strconv.FormatInt(field.Int(), 10)\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tstr = strconv.FormatUint(field.Uint(), 10)\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"Bad field type %T\", field.Interface()))\n\t}\n\tsize := len(str)\n\tif size < 2 { // there has to be at least one digit that carries a meaning + the checksum\n\t\treturn false\n\t}\n\tdigits := strings.Split(str, \"\")\n\treturn digitsHaveLuhnChecksum(digits)\n}\n\n// isCron is the validation function for validating if the current field's value is a valid cron expression\nfunc isCron(fl FieldLevel) bool {\n\tcronString := fl.Field().String()\n\treturn cronRegex.MatchString(cronString)\n}\n"
  },
  {
    "path": "gossh/gin/validator/cache.go",
    "content": "package validator\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n)\n\ntype tagType uint8\n\nconst (\n\ttypeDefault tagType = iota\n\ttypeOmitEmpty\n\ttypeIsDefault\n\ttypeNoStructLevel\n\ttypeStructOnly\n\ttypeDive\n\ttypeOr\n\ttypeKeys\n\ttypeEndKeys\n\ttypeOmitNil\n)\n\nconst (\n\tinvalidValidation   = \"Invalid validation tag on field '%s'\"\n\tundefinedValidation = \"Undefined validation function '%s' on field '%s'\"\n\tkeysTagNotDefined   = \"'\" + endKeysTag + \"' tag encountered without a corresponding '\" + keysTag + \"' tag\"\n)\n\ntype structCache struct {\n\tlock sync.Mutex\n\tm    atomic.Value // map[reflect.Type]*cStruct\n}\n\nfunc (sc *structCache) Get(key reflect.Type) (c *cStruct, found bool) {\n\tc, found = sc.m.Load().(map[reflect.Type]*cStruct)[key]\n\treturn\n}\n\nfunc (sc *structCache) Set(key reflect.Type, value *cStruct) {\n\tm := sc.m.Load().(map[reflect.Type]*cStruct)\n\tnm := make(map[reflect.Type]*cStruct, len(m)+1)\n\tfor k, v := range m {\n\t\tnm[k] = v\n\t}\n\tnm[key] = value\n\tsc.m.Store(nm)\n}\n\ntype tagCache struct {\n\tlock sync.Mutex\n\tm    atomic.Value // map[string]*cTag\n}\n\nfunc (tc *tagCache) Get(key string) (c *cTag, found bool) {\n\tc, found = tc.m.Load().(map[string]*cTag)[key]\n\treturn\n}\n\nfunc (tc *tagCache) Set(key string, value *cTag) {\n\tm := tc.m.Load().(map[string]*cTag)\n\tnm := make(map[string]*cTag, len(m)+1)\n\tfor k, v := range m {\n\t\tnm[k] = v\n\t}\n\tnm[key] = value\n\ttc.m.Store(nm)\n}\n\ntype cStruct struct {\n\tname   string\n\tfields []*cField\n\tfn     StructLevelFuncCtx\n}\n\ntype cField struct {\n\tidx        int\n\tname       string\n\taltName    string\n\tnamesEqual bool\n\tcTags      *cTag\n}\n\ntype cTag struct {\n\ttag                  string\n\taliasTag             string\n\tactualAliasTag       string\n\tparam                string\n\tkeys                 *cTag // only populated when using tag's 'keys' and 'endkeys' for map key validation\n\tnext                 *cTag\n\tfn                   FuncCtx\n\ttypeof               tagType\n\thasTag               bool\n\thasAlias             bool\n\thasParam             bool // true if parameter used eg. eq= where the equal sign has been set\n\tisBlockEnd           bool // indicates the current tag represents the last validation in the block\n\trunValidationWhenNil bool\n}\n\nfunc (v *Validate) extractStructCache(current reflect.Value, sName string) *cStruct {\n\tv.structCache.lock.Lock()\n\tdefer v.structCache.lock.Unlock() // leave as defer! because if inner panics, it will never get unlocked otherwise!\n\n\ttyp := current.Type()\n\n\t// could have been multiple trying to access, but once first is done this ensures struct\n\t// isn't parsed again.\n\tcs, ok := v.structCache.Get(typ)\n\tif ok {\n\t\treturn cs\n\t}\n\n\tcs = &cStruct{name: sName, fields: make([]*cField, 0), fn: v.structLevelFuncs[typ]}\n\n\tnumFields := current.NumField()\n\trules := v.rules[typ]\n\n\tvar ctag *cTag\n\tvar fld reflect.StructField\n\tvar tag string\n\tvar customName string\n\n\tfor i := 0; i < numFields; i++ {\n\n\t\tfld = typ.Field(i)\n\n\t\tif !fld.Anonymous && len(fld.PkgPath) > 0 {\n\t\t\tcontinue\n\t\t}\n\n\t\tif rtag, ok := rules[fld.Name]; ok {\n\t\t\ttag = rtag\n\t\t} else {\n\t\t\ttag = fld.Tag.Get(v.tagName)\n\t\t}\n\n\t\tif tag == skipValidationTag {\n\t\t\tcontinue\n\t\t}\n\n\t\tcustomName = fld.Name\n\n\t\tif v.hasTagNameFunc {\n\t\t\tname := v.tagNameFunc(fld)\n\t\t\tif len(name) > 0 {\n\t\t\t\tcustomName = name\n\t\t\t}\n\t\t}\n\n\t\t// NOTE: cannot use shared tag cache, because tags may be equal, but things like alias may be different\n\t\t// and so only struct level caching can be used instead of combined with Field tag caching\n\n\t\tif len(tag) > 0 {\n\t\t\tctag, _ = v.parseFieldTagsRecursive(tag, fld.Name, \"\", false)\n\t\t} else {\n\t\t\t// even if field doesn't have validations need cTag for traversing to potential inner/nested\n\t\t\t// elements of the field.\n\t\t\tctag = new(cTag)\n\t\t}\n\n\t\tcs.fields = append(cs.fields, &cField{\n\t\t\tidx:        i,\n\t\t\tname:       fld.Name,\n\t\t\taltName:    customName,\n\t\t\tcTags:      ctag,\n\t\t\tnamesEqual: fld.Name == customName,\n\t\t})\n\t}\n\tv.structCache.Set(typ, cs)\n\treturn cs\n}\n\nfunc (v *Validate) parseFieldTagsRecursive(tag string, fieldName string, alias string, hasAlias bool) (firstCtag *cTag, current *cTag) {\n\tvar t string\n\tnoAlias := len(alias) == 0\n\ttags := strings.Split(tag, tagSeparator)\n\n\tfor i := 0; i < len(tags); i++ {\n\t\tt = tags[i]\n\t\tif noAlias {\n\t\t\talias = t\n\t\t}\n\n\t\t// check map for alias and process new tags, otherwise process as usual\n\t\tif tagsVal, found := v.aliases[t]; found {\n\t\t\tif i == 0 {\n\t\t\t\tfirstCtag, current = v.parseFieldTagsRecursive(tagsVal, fieldName, t, true)\n\t\t\t} else {\n\t\t\t\tnext, curr := v.parseFieldTagsRecursive(tagsVal, fieldName, t, true)\n\t\t\t\tcurrent.next, current = next, curr\n\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tvar prevTag tagType\n\n\t\tif i == 0 {\n\t\t\tcurrent = &cTag{aliasTag: alias, hasAlias: hasAlias, hasTag: true, typeof: typeDefault}\n\t\t\tfirstCtag = current\n\t\t} else {\n\t\t\tprevTag = current.typeof\n\t\t\tcurrent.next = &cTag{aliasTag: alias, hasAlias: hasAlias, hasTag: true}\n\t\t\tcurrent = current.next\n\t\t}\n\n\t\tswitch t {\n\t\tcase diveTag:\n\t\t\tcurrent.typeof = typeDive\n\t\t\tcontinue\n\n\t\tcase keysTag:\n\t\t\tcurrent.typeof = typeKeys\n\n\t\t\tif i == 0 || prevTag != typeDive {\n\t\t\t\tpanic(fmt.Sprintf(\"'%s' tag must be immediately preceded by the '%s' tag\", keysTag, diveTag))\n\t\t\t}\n\n\t\t\tcurrent.typeof = typeKeys\n\n\t\t\t// need to pass along only keys tag\n\t\t\t// need to increment i to skip over the keys tags\n\t\t\tb := make([]byte, 0, 64)\n\n\t\t\ti++\n\n\t\t\tfor ; i < len(tags); i++ {\n\n\t\t\t\tb = append(b, tags[i]...)\n\t\t\t\tb = append(b, ',')\n\n\t\t\t\tif tags[i] == endKeysTag {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcurrent.keys, _ = v.parseFieldTagsRecursive(string(b[:len(b)-1]), fieldName, \"\", false)\n\t\t\tcontinue\n\n\t\tcase endKeysTag:\n\t\t\tcurrent.typeof = typeEndKeys\n\n\t\t\t// if there are more in tags then there was no keysTag defined\n\t\t\t// and an error should be thrown\n\t\t\tif i != len(tags)-1 {\n\t\t\t\tpanic(keysTagNotDefined)\n\t\t\t}\n\t\t\treturn\n\n\t\tcase omitempty:\n\t\t\tcurrent.typeof = typeOmitEmpty\n\t\t\tcontinue\n\n\t\tcase omitnil:\n\t\t\tcurrent.typeof = typeOmitNil\n\t\t\tcontinue\n\n\t\tcase structOnlyTag:\n\t\t\tcurrent.typeof = typeStructOnly\n\t\t\tcontinue\n\n\t\tcase noStructLevelTag:\n\t\t\tcurrent.typeof = typeNoStructLevel\n\t\t\tcontinue\n\n\t\tdefault:\n\t\t\tif t == isdefault {\n\t\t\t\tcurrent.typeof = typeIsDefault\n\t\t\t}\n\t\t\t// if a pipe character is needed within the param you must use the utf8Pipe representation \"0x7C\"\n\t\t\torVals := strings.Split(t, orSeparator)\n\n\t\t\tfor j := 0; j < len(orVals); j++ {\n\t\t\t\tvals := strings.SplitN(orVals[j], tagKeySeparator, 2)\n\t\t\t\tif noAlias {\n\t\t\t\t\talias = vals[0]\n\t\t\t\t\tcurrent.aliasTag = alias\n\t\t\t\t} else {\n\t\t\t\t\tcurrent.actualAliasTag = t\n\t\t\t\t}\n\n\t\t\t\tif j > 0 {\n\t\t\t\t\tcurrent.next = &cTag{aliasTag: alias, actualAliasTag: current.actualAliasTag, hasAlias: hasAlias, hasTag: true}\n\t\t\t\t\tcurrent = current.next\n\t\t\t\t}\n\t\t\t\tcurrent.hasParam = len(vals) > 1\n\n\t\t\t\tcurrent.tag = vals[0]\n\t\t\t\tif len(current.tag) == 0 {\n\t\t\t\t\tpanic(strings.TrimSpace(fmt.Sprintf(invalidValidation, fieldName)))\n\t\t\t\t}\n\n\t\t\t\tif wrapper, ok := v.validations[current.tag]; ok {\n\t\t\t\t\tcurrent.fn = wrapper.fn\n\t\t\t\t\tcurrent.runValidationWhenNil = wrapper.runValidatinOnNil\n\t\t\t\t} else {\n\t\t\t\t\tpanic(strings.TrimSpace(fmt.Sprintf(undefinedValidation, current.tag, fieldName)))\n\t\t\t\t}\n\n\t\t\t\tif len(orVals) > 1 {\n\t\t\t\t\tcurrent.typeof = typeOr\n\t\t\t\t}\n\n\t\t\t\tif len(vals) > 1 {\n\t\t\t\t\tcurrent.param = strings.Replace(strings.Replace(vals[1], utf8HexComma, \",\", -1), utf8Pipe, \"|\", -1)\n\t\t\t\t}\n\t\t\t}\n\t\t\tcurrent.isBlockEnd = true\n\t\t}\n\t}\n\treturn\n}\n\nfunc (v *Validate) fetchCacheTag(tag string) *cTag {\n\t// find cached tag\n\tctag, found := v.tagCache.Get(tag)\n\tif !found {\n\t\tv.tagCache.lock.Lock()\n\t\tdefer v.tagCache.lock.Unlock()\n\n\t\t// could have been multiple trying to access, but once first is done this ensures tag\n\t\t// isn't parsed again.\n\t\tctag, found = v.tagCache.Get(tag)\n\t\tif !found {\n\t\t\tctag, _ = v.parseFieldTagsRecursive(tag, \"\", \"\", false)\n\t\t\tv.tagCache.Set(tag, ctag)\n\t\t}\n\t}\n\treturn ctag\n}\n"
  },
  {
    "path": "gossh/gin/validator/country_codes.go",
    "content": "package validator\n\nvar iso3166_1_alpha2 = map[string]bool{\n\t// see: https://www.iso.org/iso-3166-country-codes.html\n\t\"AF\": true, \"AX\": true, \"AL\": true, \"DZ\": true, \"AS\": true,\n\t\"AD\": true, \"AO\": true, \"AI\": true, \"AQ\": true, \"AG\": true,\n\t\"AR\": true, \"AM\": true, \"AW\": true, \"AU\": true, \"AT\": true,\n\t\"AZ\": true, \"BS\": true, \"BH\": true, \"BD\": true, \"BB\": true,\n\t\"BY\": true, \"BE\": true, \"BZ\": true, \"BJ\": true, \"BM\": true,\n\t\"BT\": true, \"BO\": true, \"BQ\": true, \"BA\": true, \"BW\": true,\n\t\"BV\": true, \"BR\": true, \"IO\": true, \"BN\": true, \"BG\": true,\n\t\"BF\": true, \"BI\": true, \"KH\": true, \"CM\": true, \"CA\": true,\n\t\"CV\": true, \"KY\": true, \"CF\": true, \"TD\": true, \"CL\": true,\n\t\"CN\": true, \"CX\": true, \"CC\": true, \"CO\": true, \"KM\": true,\n\t\"CG\": true, \"CD\": true, \"CK\": true, \"CR\": true, \"CI\": true,\n\t\"HR\": true, \"CU\": true, \"CW\": true, \"CY\": true, \"CZ\": true,\n\t\"DK\": true, \"DJ\": true, \"DM\": true, \"DO\": true, \"EC\": true,\n\t\"EG\": true, \"SV\": true, \"GQ\": true, \"ER\": true, \"EE\": true,\n\t\"ET\": true, \"FK\": true, \"FO\": true, \"FJ\": true, \"FI\": true,\n\t\"FR\": true, \"GF\": true, \"PF\": true, \"TF\": true, \"GA\": true,\n\t\"GM\": true, \"GE\": true, \"DE\": true, \"GH\": true, \"GI\": true,\n\t\"GR\": true, \"GL\": true, \"GD\": true, \"GP\": true, \"GU\": true,\n\t\"GT\": true, \"GG\": true, \"GN\": true, \"GW\": true, \"GY\": true,\n\t\"HT\": true, \"HM\": true, \"VA\": true, \"HN\": true, \"HK\": true,\n\t\"HU\": true, \"IS\": true, \"IN\": true, \"ID\": true, \"IR\": true,\n\t\"IQ\": true, \"IE\": true, \"IM\": true, \"IL\": true, \"IT\": true,\n\t\"JM\": true, \"JP\": true, \"JE\": true, \"JO\": true, \"KZ\": true,\n\t\"KE\": true, \"KI\": true, \"KP\": true, \"KR\": true, \"KW\": true,\n\t\"KG\": true, \"LA\": true, \"LV\": true, \"LB\": true, \"LS\": true,\n\t\"LR\": true, \"LY\": true, \"LI\": true, \"LT\": true, \"LU\": true,\n\t\"MO\": true, \"MK\": true, \"MG\": true, \"MW\": true, \"MY\": true,\n\t\"MV\": true, \"ML\": true, \"MT\": true, \"MH\": true, \"MQ\": true,\n\t\"MR\": true, \"MU\": true, \"YT\": true, \"MX\": true, \"FM\": true,\n\t\"MD\": true, \"MC\": true, \"MN\": true, \"ME\": true, \"MS\": true,\n\t\"MA\": true, \"MZ\": true, \"MM\": true, \"NA\": true, \"NR\": true,\n\t\"NP\": true, \"NL\": true, \"NC\": true, \"NZ\": true, \"NI\": true,\n\t\"NE\": true, \"NG\": true, \"NU\": true, \"NF\": true, \"MP\": true,\n\t\"NO\": true, \"OM\": true, \"PK\": true, \"PW\": true, \"PS\": true,\n\t\"PA\": true, \"PG\": true, \"PY\": true, \"PE\": true, \"PH\": true,\n\t\"PN\": true, \"PL\": true, \"PT\": true, \"PR\": true, \"QA\": true,\n\t\"RE\": true, \"RO\": true, \"RU\": true, \"RW\": true, \"BL\": true,\n\t\"SH\": true, \"KN\": true, \"LC\": true, \"MF\": true, \"PM\": true,\n\t\"VC\": true, \"WS\": true, \"SM\": true, \"ST\": true, \"SA\": true,\n\t\"SN\": true, \"RS\": true, \"SC\": true, \"SL\": true, \"SG\": true,\n\t\"SX\": true, \"SK\": true, \"SI\": true, \"SB\": true, \"SO\": true,\n\t\"ZA\": true, \"GS\": true, \"SS\": true, \"ES\": true, \"LK\": true,\n\t\"SD\": true, \"SR\": true, \"SJ\": true, \"SZ\": true, \"SE\": true,\n\t\"CH\": true, \"SY\": true, \"TW\": true, \"TJ\": true, \"TZ\": true,\n\t\"TH\": true, \"TL\": true, \"TG\": true, \"TK\": true, \"TO\": true,\n\t\"TT\": true, \"TN\": true, \"TR\": true, \"TM\": true, \"TC\": true,\n\t\"TV\": true, \"UG\": true, \"UA\": true, \"AE\": true, \"GB\": true,\n\t\"US\": true, \"UM\": true, \"UY\": true, \"UZ\": true, \"VU\": true,\n\t\"VE\": true, \"VN\": true, \"VG\": true, \"VI\": true, \"WF\": true,\n\t\"EH\": true, \"YE\": true, \"ZM\": true, \"ZW\": true, \"XK\": true,\n}\n\nvar iso3166_1_alpha3 = map[string]bool{\n\t// see: https://www.iso.org/iso-3166-country-codes.html\n\t\"AFG\": true, \"ALB\": true, \"DZA\": true, \"ASM\": true, \"AND\": true,\n\t\"AGO\": true, \"AIA\": true, \"ATA\": true, \"ATG\": true, \"ARG\": true,\n\t\"ARM\": true, \"ABW\": true, \"AUS\": true, \"AUT\": true, \"AZE\": true,\n\t\"BHS\": true, \"BHR\": true, \"BGD\": true, \"BRB\": true, \"BLR\": true,\n\t\"BEL\": true, \"BLZ\": true, \"BEN\": true, \"BMU\": true, \"BTN\": true,\n\t\"BOL\": true, \"BES\": true, \"BIH\": true, \"BWA\": true, \"BVT\": true,\n\t\"BRA\": true, \"IOT\": true, \"BRN\": true, \"BGR\": true, \"BFA\": true,\n\t\"BDI\": true, \"CPV\": true, \"KHM\": true, \"CMR\": true, \"CAN\": true,\n\t\"CYM\": true, \"CAF\": true, \"TCD\": true, \"CHL\": true, \"CHN\": true,\n\t\"CXR\": true, \"CCK\": true, \"COL\": true, \"COM\": true, \"COD\": true,\n\t\"COG\": true, \"COK\": true, \"CRI\": true, \"HRV\": true, \"CUB\": true,\n\t\"CUW\": true, \"CYP\": true, \"CZE\": true, \"CIV\": true, \"DNK\": true,\n\t\"DJI\": true, \"DMA\": true, \"DOM\": true, \"ECU\": true, \"EGY\": true,\n\t\"SLV\": true, \"GNQ\": true, \"ERI\": true, \"EST\": true, \"SWZ\": true,\n\t\"ETH\": true, \"FLK\": true, \"FRO\": true, \"FJI\": true, \"FIN\": true,\n\t\"FRA\": true, \"GUF\": true, \"PYF\": true, \"ATF\": true, \"GAB\": true,\n\t\"GMB\": true, \"GEO\": true, \"DEU\": true, \"GHA\": true, \"GIB\": true,\n\t\"GRC\": true, \"GRL\": true, \"GRD\": true, \"GLP\": true, \"GUM\": true,\n\t\"GTM\": true, \"GGY\": true, \"GIN\": true, \"GNB\": true, \"GUY\": true,\n\t\"HTI\": true, \"HMD\": true, \"VAT\": true, \"HND\": true, \"HKG\": true,\n\t\"HUN\": true, \"ISL\": true, \"IND\": true, \"IDN\": true, \"IRN\": true,\n\t\"IRQ\": true, \"IRL\": true, \"IMN\": true, \"ISR\": true, \"ITA\": true,\n\t\"JAM\": true, \"JPN\": true, \"JEY\": true, \"JOR\": true, \"KAZ\": true,\n\t\"KEN\": true, \"KIR\": true, \"PRK\": true, \"KOR\": true, \"KWT\": true,\n\t\"KGZ\": true, \"LAO\": true, \"LVA\": true, \"LBN\": true, \"LSO\": true,\n\t\"LBR\": true, \"LBY\": true, \"LIE\": true, \"LTU\": true, \"LUX\": true,\n\t\"MAC\": true, \"MDG\": true, \"MWI\": true, \"MYS\": true, \"MDV\": true,\n\t\"MLI\": true, \"MLT\": true, \"MHL\": true, \"MTQ\": true, \"MRT\": true,\n\t\"MUS\": true, \"MYT\": true, \"MEX\": true, \"FSM\": true, \"MDA\": true,\n\t\"MCO\": true, \"MNG\": true, \"MNE\": true, \"MSR\": true, \"MAR\": true,\n\t\"MOZ\": true, \"MMR\": true, \"NAM\": true, \"NRU\": true, \"NPL\": true,\n\t\"NLD\": true, \"NCL\": true, \"NZL\": true, \"NIC\": true, \"NER\": true,\n\t\"NGA\": true, \"NIU\": true, \"NFK\": true, \"MKD\": true, \"MNP\": true,\n\t\"NOR\": true, \"OMN\": true, \"PAK\": true, \"PLW\": true, \"PSE\": true,\n\t\"PAN\": true, \"PNG\": true, \"PRY\": true, \"PER\": true, \"PHL\": true,\n\t\"PCN\": true, \"POL\": true, \"PRT\": true, \"PRI\": true, \"QAT\": true,\n\t\"ROU\": true, \"RUS\": true, \"RWA\": true, \"REU\": true, \"BLM\": true,\n\t\"SHN\": true, \"KNA\": true, \"LCA\": true, \"MAF\": true, \"SPM\": true,\n\t\"VCT\": true, \"WSM\": true, \"SMR\": true, \"STP\": true, \"SAU\": true,\n\t\"SEN\": true, \"SRB\": true, \"SYC\": true, \"SLE\": true, \"SGP\": true,\n\t\"SXM\": true, \"SVK\": true, \"SVN\": true, \"SLB\": true, \"SOM\": true,\n\t\"ZAF\": true, \"SGS\": true, \"SSD\": true, \"ESP\": true, \"LKA\": true,\n\t\"SDN\": true, \"SUR\": true, \"SJM\": true, \"SWE\": true, \"CHE\": true,\n\t\"SYR\": true, \"TWN\": true, \"TJK\": true, \"TZA\": true, \"THA\": true,\n\t\"TLS\": true, \"TGO\": true, \"TKL\": true, \"TON\": true, \"TTO\": true,\n\t\"TUN\": true, \"TUR\": true, \"TKM\": true, \"TCA\": true, \"TUV\": true,\n\t\"UGA\": true, \"UKR\": true, \"ARE\": true, \"GBR\": true, \"UMI\": true,\n\t\"USA\": true, \"URY\": true, \"UZB\": true, \"VUT\": true, \"VEN\": true,\n\t\"VNM\": true, \"VGB\": true, \"VIR\": true, \"WLF\": true, \"ESH\": true,\n\t\"YEM\": true, \"ZMB\": true, \"ZWE\": true, \"ALA\": true, \"UNK\": true,\n}\nvar iso3166_1_alpha_numeric = map[int]bool{\n\t// see: https://www.iso.org/iso-3166-country-codes.html\n\t4: true, 8: true, 12: true, 16: true, 20: true,\n\t24: true, 660: true, 10: true, 28: true, 32: true,\n\t51: true, 533: true, 36: true, 40: true, 31: true,\n\t44: true, 48: true, 50: true, 52: true, 112: true,\n\t56: true, 84: true, 204: true, 60: true, 64: true,\n\t68: true, 535: true, 70: true, 72: true, 74: true,\n\t76: true, 86: true, 96: true, 100: true, 854: true,\n\t108: true, 132: true, 116: true, 120: true, 124: true,\n\t136: true, 140: true, 148: true, 152: true, 156: true,\n\t162: true, 166: true, 170: true, 174: true, 180: true,\n\t178: true, 184: true, 188: true, 191: true, 192: true,\n\t531: true, 196: true, 203: true, 384: true, 208: true,\n\t262: true, 212: true, 214: true, 218: true, 818: true,\n\t222: true, 226: true, 232: true, 233: true, 748: true,\n\t231: true, 238: true, 234: true, 242: true, 246: true,\n\t250: true, 254: true, 258: true, 260: true, 266: true,\n\t270: true, 268: true, 276: true, 288: true, 292: true,\n\t300: true, 304: true, 308: true, 312: true, 316: true,\n\t320: true, 831: true, 324: true, 624: true, 328: true,\n\t332: true, 334: true, 336: true, 340: true, 344: true,\n\t348: true, 352: true, 356: true, 360: true, 364: true,\n\t368: true, 372: true, 833: true, 376: true, 380: true,\n\t388: true, 392: true, 832: true, 400: true, 398: true,\n\t404: true, 296: true, 408: true, 410: true, 414: true,\n\t417: true, 418: true, 428: true, 422: true, 426: true,\n\t430: true, 434: true, 438: true, 440: true, 442: true,\n\t446: true, 450: true, 454: true, 458: true, 462: true,\n\t466: true, 470: true, 584: true, 474: true, 478: true,\n\t480: true, 175: true, 484: true, 583: true, 498: true,\n\t492: true, 496: true, 499: true, 500: true, 504: true,\n\t508: true, 104: true, 516: true, 520: true, 524: true,\n\t528: true, 540: true, 554: true, 558: true, 562: true,\n\t566: true, 570: true, 574: true, 807: true, 580: true,\n\t578: true, 512: true, 586: true, 585: true, 275: true,\n\t591: true, 598: true, 600: true, 604: true, 608: true,\n\t612: true, 616: true, 620: true, 630: true, 634: true,\n\t642: true, 643: true, 646: true, 638: true, 652: true,\n\t654: true, 659: true, 662: true, 663: true, 666: true,\n\t670: true, 882: true, 674: true, 678: true, 682: true,\n\t686: true, 688: true, 690: true, 694: true, 702: true,\n\t534: true, 703: true, 705: true, 90: true, 706: true,\n\t710: true, 239: true, 728: true, 724: true, 144: true,\n\t729: true, 740: true, 744: true, 752: true, 756: true,\n\t760: true, 158: true, 762: true, 834: true, 764: true,\n\t626: true, 768: true, 772: true, 776: true, 780: true,\n\t788: true, 792: true, 795: true, 796: true, 798: true,\n\t800: true, 804: true, 784: true, 826: true, 581: true,\n\t840: true, 858: true, 860: true, 548: true, 862: true,\n\t704: true, 92: true, 850: true, 876: true, 732: true,\n\t887: true, 894: true, 716: true, 248: true, 153: true,\n}\n\nvar iso3166_2 = map[string]bool{\n\t\"AD-02\": true, \"AD-03\": true, \"AD-04\": true, \"AD-05\": true, \"AD-06\": true,\n\t\"AD-07\": true, \"AD-08\": true, \"AE-AJ\": true, \"AE-AZ\": true, \"AE-DU\": true,\n\t\"AE-FU\": true, \"AE-RK\": true, \"AE-SH\": true, \"AE-UQ\": true, \"AF-BAL\": true,\n\t\"AF-BAM\": true, \"AF-BDG\": true, \"AF-BDS\": true, \"AF-BGL\": true, \"AF-DAY\": true,\n\t\"AF-FRA\": true, \"AF-FYB\": true, \"AF-GHA\": true, \"AF-GHO\": true, \"AF-HEL\": true,\n\t\"AF-HER\": true, \"AF-JOW\": true, \"AF-KAB\": true, \"AF-KAN\": true, \"AF-KAP\": true,\n\t\"AF-KDZ\": true, \"AF-KHO\": true, \"AF-KNR\": true, \"AF-LAG\": true, \"AF-LOG\": true,\n\t\"AF-NAN\": true, \"AF-NIM\": true, \"AF-NUR\": true, \"AF-PAN\": true, \"AF-PAR\": true,\n\t\"AF-PIA\": true, \"AF-PKA\": true, \"AF-SAM\": true, \"AF-SAR\": true, \"AF-TAK\": true,\n\t\"AF-URU\": true, \"AF-WAR\": true, \"AF-ZAB\": true, \"AG-03\": true, \"AG-04\": true,\n\t\"AG-05\": true, \"AG-06\": true, \"AG-07\": true, \"AG-08\": true, \"AG-10\": true,\n\t\"AG-11\": true, \"AL-01\": true, \"AL-02\": true, \"AL-03\": true, \"AL-04\": true,\n\t\"AL-05\": true, \"AL-06\": true, \"AL-07\": true, \"AL-08\": true, \"AL-09\": true,\n\t\"AL-10\": true, \"AL-11\": true, \"AL-12\": true, \"AL-BR\": true, \"AL-BU\": true,\n\t\"AL-DI\": true, \"AL-DL\": true, \"AL-DR\": true, \"AL-DV\": true, \"AL-EL\": true,\n\t\"AL-ER\": true, \"AL-FR\": true, \"AL-GJ\": true, \"AL-GR\": true, \"AL-HA\": true,\n\t\"AL-KA\": true, \"AL-KB\": true, \"AL-KC\": true, \"AL-KO\": true, \"AL-KR\": true,\n\t\"AL-KU\": true, \"AL-LB\": true, \"AL-LE\": true, \"AL-LU\": true, \"AL-MK\": true,\n\t\"AL-MM\": true, \"AL-MR\": true, \"AL-MT\": true, \"AL-PG\": true, \"AL-PQ\": true,\n\t\"AL-PR\": true, \"AL-PU\": true, \"AL-SH\": true, \"AL-SK\": true, \"AL-SR\": true,\n\t\"AL-TE\": true, \"AL-TP\": true, \"AL-TR\": true, \"AL-VL\": true, \"AM-AG\": true,\n\t\"AM-AR\": true, \"AM-AV\": true, \"AM-ER\": true, \"AM-GR\": true, \"AM-KT\": true,\n\t\"AM-LO\": true, \"AM-SH\": true, \"AM-SU\": true, \"AM-TV\": true, \"AM-VD\": true,\n\t\"AO-BGO\": true, \"AO-BGU\": true, \"AO-BIE\": true, \"AO-CAB\": true, \"AO-CCU\": true,\n\t\"AO-CNN\": true, \"AO-CNO\": true, \"AO-CUS\": true, \"AO-HUA\": true, \"AO-HUI\": true,\n\t\"AO-LNO\": true, \"AO-LSU\": true, \"AO-LUA\": true, \"AO-MAL\": true, \"AO-MOX\": true,\n\t\"AO-NAM\": true, \"AO-UIG\": true, \"AO-ZAI\": true, \"AR-A\": true, \"AR-B\": true,\n\t\"AR-C\": true, \"AR-D\": true, \"AR-E\": true, \"AR-F\": true, \"AR-G\": true, \"AR-H\": true,\n\t\"AR-J\": true, \"AR-K\": true, \"AR-L\": true, \"AR-M\": true, \"AR-N\": true,\n\t\"AR-P\": true, \"AR-Q\": true, \"AR-R\": true, \"AR-S\": true, \"AR-T\": true,\n\t\"AR-U\": true, \"AR-V\": true, \"AR-W\": true, \"AR-X\": true, \"AR-Y\": true,\n\t\"AR-Z\": true, \"AT-1\": true, \"AT-2\": true, \"AT-3\": true, \"AT-4\": true,\n\t\"AT-5\": true, \"AT-6\": true, \"AT-7\": true, \"AT-8\": true, \"AT-9\": true,\n\t\"AU-ACT\": true, \"AU-NSW\": true, \"AU-NT\": true, \"AU-QLD\": true, \"AU-SA\": true,\n\t\"AU-TAS\": true, \"AU-VIC\": true, \"AU-WA\": true, \"AZ-ABS\": true, \"AZ-AGA\": true,\n\t\"AZ-AGC\": true, \"AZ-AGM\": true, \"AZ-AGS\": true, \"AZ-AGU\": true, \"AZ-AST\": true,\n\t\"AZ-BA\": true, \"AZ-BAB\": true, \"AZ-BAL\": true, \"AZ-BAR\": true, \"AZ-BEY\": true,\n\t\"AZ-BIL\": true, \"AZ-CAB\": true, \"AZ-CAL\": true, \"AZ-CUL\": true, \"AZ-DAS\": true,\n\t\"AZ-FUZ\": true, \"AZ-GA\": true, \"AZ-GAD\": true, \"AZ-GOR\": true, \"AZ-GOY\": true,\n\t\"AZ-GYG\": true, \"AZ-HAC\": true, \"AZ-IMI\": true, \"AZ-ISM\": true, \"AZ-KAL\": true,\n\t\"AZ-KAN\": true, \"AZ-KUR\": true, \"AZ-LA\": true, \"AZ-LAC\": true, \"AZ-LAN\": true,\n\t\"AZ-LER\": true, \"AZ-MAS\": true, \"AZ-MI\": true, \"AZ-NA\": true, \"AZ-NEF\": true,\n\t\"AZ-NV\": true, \"AZ-NX\": true, \"AZ-OGU\": true, \"AZ-ORD\": true, \"AZ-QAB\": true,\n\t\"AZ-QAX\": true, \"AZ-QAZ\": true, \"AZ-QBA\": true, \"AZ-QBI\": true, \"AZ-QOB\": true,\n\t\"AZ-QUS\": true, \"AZ-SA\": true, \"AZ-SAB\": true, \"AZ-SAD\": true, \"AZ-SAH\": true,\n\t\"AZ-SAK\": true, \"AZ-SAL\": true, \"AZ-SAR\": true, \"AZ-SAT\": true, \"AZ-SBN\": true,\n\t\"AZ-SIY\": true, \"AZ-SKR\": true, \"AZ-SM\": true, \"AZ-SMI\": true, \"AZ-SMX\": true,\n\t\"AZ-SR\": true, \"AZ-SUS\": true, \"AZ-TAR\": true, \"AZ-TOV\": true, \"AZ-UCA\": true,\n\t\"AZ-XA\": true, \"AZ-XAC\": true, \"AZ-XCI\": true, \"AZ-XIZ\": true, \"AZ-XVD\": true,\n\t\"AZ-YAR\": true, \"AZ-YE\": true, \"AZ-YEV\": true, \"AZ-ZAN\": true, \"AZ-ZAQ\": true,\n\t\"AZ-ZAR\": true, \"BA-01\": true, \"BA-02\": true, \"BA-03\": true, \"BA-04\": true,\n\t\"BA-05\": true, \"BA-06\": true, \"BA-07\": true, \"BA-08\": true, \"BA-09\": true,\n\t\"BA-10\": true, \"BA-BIH\": true, \"BA-BRC\": true, \"BA-SRP\": true, \"BB-01\": true,\n\t\"BB-02\": true, \"BB-03\": true, \"BB-04\": true, \"BB-05\": true, \"BB-06\": true,\n\t\"BB-07\": true, \"BB-08\": true, \"BB-09\": true, \"BB-10\": true, \"BB-11\": true,\n\t\"BD-01\": true, \"BD-02\": true, \"BD-03\": true, \"BD-04\": true, \"BD-05\": true,\n\t\"BD-06\": true, \"BD-07\": true, \"BD-08\": true, \"BD-09\": true, \"BD-10\": true,\n\t\"BD-11\": true, \"BD-12\": true, \"BD-13\": true, \"BD-14\": true, \"BD-15\": true,\n\t\"BD-16\": true, \"BD-17\": true, \"BD-18\": true, \"BD-19\": true, \"BD-20\": true,\n\t\"BD-21\": true, \"BD-22\": true, \"BD-23\": true, \"BD-24\": true, \"BD-25\": true,\n\t\"BD-26\": true, \"BD-27\": true, \"BD-28\": true, \"BD-29\": true, \"BD-30\": true,\n\t\"BD-31\": true, \"BD-32\": true, \"BD-33\": true, \"BD-34\": true, \"BD-35\": true,\n\t\"BD-36\": true, \"BD-37\": true, \"BD-38\": true, \"BD-39\": true, \"BD-40\": true,\n\t\"BD-41\": true, \"BD-42\": true, \"BD-43\": true, \"BD-44\": true, \"BD-45\": true,\n\t\"BD-46\": true, \"BD-47\": true, \"BD-48\": true, \"BD-49\": true, \"BD-50\": true,\n\t\"BD-51\": true, \"BD-52\": true, \"BD-53\": true, \"BD-54\": true, \"BD-55\": true,\n\t\"BD-56\": true, \"BD-57\": true, \"BD-58\": true, \"BD-59\": true, \"BD-60\": true,\n\t\"BD-61\": true, \"BD-62\": true, \"BD-63\": true, \"BD-64\": true, \"BD-A\": true,\n\t\"BD-B\": true, \"BD-C\": true, \"BD-D\": true, \"BD-E\": true, \"BD-F\": true,\n\t\"BD-G\": true, \"BE-BRU\": true, \"BE-VAN\": true, \"BE-VBR\": true, \"BE-VLG\": true,\n\t\"BE-VLI\": true, \"BE-VOV\": true, \"BE-VWV\": true, \"BE-WAL\": true, \"BE-WBR\": true,\n\t\"BE-WHT\": true, \"BE-WLG\": true, \"BE-WLX\": true, \"BE-WNA\": true, \"BF-01\": true,\n\t\"BF-02\": true, \"BF-03\": true, \"BF-04\": true, \"BF-05\": true, \"BF-06\": true,\n\t\"BF-07\": true, \"BF-08\": true, \"BF-09\": true, \"BF-10\": true, \"BF-11\": true,\n\t\"BF-12\": true, \"BF-13\": true, \"BF-BAL\": true, \"BF-BAM\": true, \"BF-BAN\": true,\n\t\"BF-BAZ\": true, \"BF-BGR\": true, \"BF-BLG\": true, \"BF-BLK\": true, \"BF-COM\": true,\n\t\"BF-GAN\": true, \"BF-GNA\": true, \"BF-GOU\": true, \"BF-HOU\": true, \"BF-IOB\": true,\n\t\"BF-KAD\": true, \"BF-KEN\": true, \"BF-KMD\": true, \"BF-KMP\": true, \"BF-KOP\": true,\n\t\"BF-KOS\": true, \"BF-KOT\": true, \"BF-KOW\": true, \"BF-LER\": true, \"BF-LOR\": true,\n\t\"BF-MOU\": true, \"BF-NAM\": true, \"BF-NAO\": true, \"BF-NAY\": true, \"BF-NOU\": true,\n\t\"BF-OUB\": true, \"BF-OUD\": true, \"BF-PAS\": true, \"BF-PON\": true, \"BF-SEN\": true,\n\t\"BF-SIS\": true, \"BF-SMT\": true, \"BF-SNG\": true, \"BF-SOM\": true, \"BF-SOR\": true,\n\t\"BF-TAP\": true, \"BF-TUI\": true, \"BF-YAG\": true, \"BF-YAT\": true, \"BF-ZIR\": true,\n\t\"BF-ZON\": true, \"BF-ZOU\": true, \"BG-01\": true, \"BG-02\": true, \"BG-03\": true,\n\t\"BG-04\": true, \"BG-05\": true, \"BG-06\": true, \"BG-07\": true, \"BG-08\": true,\n\t\"BG-09\": true, \"BG-10\": true, \"BG-11\": true, \"BG-12\": true, \"BG-13\": true,\n\t\"BG-14\": true, \"BG-15\": true, \"BG-16\": true, \"BG-17\": true, \"BG-18\": true,\n\t\"BG-19\": true, \"BG-20\": true, \"BG-21\": true, \"BG-22\": true, \"BG-23\": true,\n\t\"BG-24\": true, \"BG-25\": true, \"BG-26\": true, \"BG-27\": true, \"BG-28\": true,\n\t\"BH-13\": true, \"BH-14\": true, \"BH-15\": true, \"BH-16\": true, \"BH-17\": true,\n\t\"BI-BB\": true, \"BI-BL\": true, \"BI-BM\": true, \"BI-BR\": true, \"BI-CA\": true,\n\t\"BI-CI\": true, \"BI-GI\": true, \"BI-KI\": true, \"BI-KR\": true, \"BI-KY\": true,\n\t\"BI-MA\": true, \"BI-MU\": true, \"BI-MW\": true, \"BI-NG\": true, \"BI-RM\": true, \"BI-RT\": true,\n\t\"BI-RY\": true, \"BJ-AK\": true, \"BJ-AL\": true, \"BJ-AQ\": true, \"BJ-BO\": true,\n\t\"BJ-CO\": true, \"BJ-DO\": true, \"BJ-KO\": true, \"BJ-LI\": true, \"BJ-MO\": true,\n\t\"BJ-OU\": true, \"BJ-PL\": true, \"BJ-ZO\": true, \"BN-BE\": true, \"BN-BM\": true,\n\t\"BN-TE\": true, \"BN-TU\": true, \"BO-B\": true, \"BO-C\": true, \"BO-H\": true,\n\t\"BO-L\": true, \"BO-N\": true, \"BO-O\": true, \"BO-P\": true, \"BO-S\": true,\n\t\"BO-T\": true, \"BQ-BO\": true, \"BQ-SA\": true, \"BQ-SE\": true, \"BR-AC\": true,\n\t\"BR-AL\": true, \"BR-AM\": true, \"BR-AP\": true, \"BR-BA\": true, \"BR-CE\": true,\n\t\"BR-DF\": true, \"BR-ES\": true, \"BR-FN\": true, \"BR-GO\": true, \"BR-MA\": true,\n\t\"BR-MG\": true, \"BR-MS\": true, \"BR-MT\": true, \"BR-PA\": true, \"BR-PB\": true,\n\t\"BR-PE\": true, \"BR-PI\": true, \"BR-PR\": true, \"BR-RJ\": true, \"BR-RN\": true,\n\t\"BR-RO\": true, \"BR-RR\": true, \"BR-RS\": true, \"BR-SC\": true, \"BR-SE\": true,\n\t\"BR-SP\": true, \"BR-TO\": true, \"BS-AK\": true, \"BS-BI\": true, \"BS-BP\": true,\n\t\"BS-BY\": true, \"BS-CE\": true, \"BS-CI\": true, \"BS-CK\": true, \"BS-CO\": true,\n\t\"BS-CS\": true, \"BS-EG\": true, \"BS-EX\": true, \"BS-FP\": true, \"BS-GC\": true,\n\t\"BS-HI\": true, \"BS-HT\": true, \"BS-IN\": true, \"BS-LI\": true, \"BS-MC\": true,\n\t\"BS-MG\": true, \"BS-MI\": true, \"BS-NE\": true, \"BS-NO\": true, \"BS-NP\": true, \"BS-NS\": true,\n\t\"BS-RC\": true, \"BS-RI\": true, \"BS-SA\": true, \"BS-SE\": true, \"BS-SO\": true,\n\t\"BS-SS\": true, \"BS-SW\": true, \"BS-WG\": true, \"BT-11\": true, \"BT-12\": true,\n\t\"BT-13\": true, \"BT-14\": true, \"BT-15\": true, \"BT-21\": true, \"BT-22\": true,\n\t\"BT-23\": true, \"BT-24\": true, \"BT-31\": true, \"BT-32\": true, \"BT-33\": true,\n\t\"BT-34\": true, \"BT-41\": true, \"BT-42\": true, \"BT-43\": true, \"BT-44\": true,\n\t\"BT-45\": true, \"BT-GA\": true, \"BT-TY\": true, \"BW-CE\": true, \"BW-CH\": true, \"BW-GH\": true,\n\t\"BW-KG\": true, \"BW-KL\": true, \"BW-KW\": true, \"BW-NE\": true, \"BW-NW\": true,\n\t\"BW-SE\": true, \"BW-SO\": true, \"BY-BR\": true, \"BY-HM\": true, \"BY-HO\": true,\n\t\"BY-HR\": true, \"BY-MA\": true, \"BY-MI\": true, \"BY-VI\": true, \"BZ-BZ\": true,\n\t\"BZ-CY\": true, \"BZ-CZL\": true, \"BZ-OW\": true, \"BZ-SC\": true, \"BZ-TOL\": true,\n\t\"CA-AB\": true, \"CA-BC\": true, \"CA-MB\": true, \"CA-NB\": true, \"CA-NL\": true,\n\t\"CA-NS\": true, \"CA-NT\": true, \"CA-NU\": true, \"CA-ON\": true, \"CA-PE\": true,\n\t\"CA-QC\": true, \"CA-SK\": true, \"CA-YT\": true, \"CD-BC\": true, \"CD-BN\": true,\n\t\"CD-EQ\": true, \"CD-HK\": true, \"CD-IT\": true, \"CD-KA\": true, \"CD-KC\": true, \"CD-KE\": true, \"CD-KG\": true, \"CD-KN\": true,\n\t\"CD-KW\": true, \"CD-KS\": true, \"CD-LU\": true, \"CD-MA\": true, \"CD-NK\": true, \"CD-OR\": true, \"CD-SA\": true, \"CD-SK\": true,\n\t\"CD-TA\": true, \"CD-TO\": true, \"CF-AC\": true, \"CF-BB\": true, \"CF-BGF\": true, \"CF-BK\": true, \"CF-HK\": true, \"CF-HM\": true,\n\t\"CF-HS\": true, \"CF-KB\": true, \"CF-KG\": true, \"CF-LB\": true, \"CF-MB\": true,\n\t\"CF-MP\": true, \"CF-NM\": true, \"CF-OP\": true, \"CF-SE\": true, \"CF-UK\": true,\n\t\"CF-VK\": true, \"CG-11\": true, \"CG-12\": true, \"CG-13\": true, \"CG-14\": true,\n\t\"CG-15\": true, \"CG-16\": true, \"CG-2\": true, \"CG-5\": true, \"CG-7\": true, \"CG-8\": true,\n\t\"CG-9\": true, \"CG-BZV\": true, \"CH-AG\": true, \"CH-AI\": true, \"CH-AR\": true,\n\t\"CH-BE\": true, \"CH-BL\": true, \"CH-BS\": true, \"CH-FR\": true, \"CH-GE\": true,\n\t\"CH-GL\": true, \"CH-GR\": true, \"CH-JU\": true, \"CH-LU\": true, \"CH-NE\": true,\n\t\"CH-NW\": true, \"CH-OW\": true, \"CH-SG\": true, \"CH-SH\": true, \"CH-SO\": true,\n\t\"CH-SZ\": true, \"CH-TG\": true, \"CH-TI\": true, \"CH-UR\": true, \"CH-VD\": true,\n\t\"CH-VS\": true, \"CH-ZG\": true, \"CH-ZH\": true, \"CI-AB\": true, \"CI-BS\": true,\n\t\"CI-CM\": true, \"CI-DN\": true, \"CI-GD\": true, \"CI-LC\": true, \"CI-LG\": true,\n\t\"CI-MG\": true, \"CI-SM\": true, \"CI-SV\": true, \"CI-VB\": true, \"CI-WR\": true,\n\t\"CI-YM\": true, \"CI-ZZ\": true, \"CL-AI\": true, \"CL-AN\": true, \"CL-AP\": true,\n\t\"CL-AR\": true, \"CL-AT\": true, \"CL-BI\": true, \"CL-CO\": true, \"CL-LI\": true,\n\t\"CL-LL\": true, \"CL-LR\": true, \"CL-MA\": true, \"CL-ML\": true, \"CL-NB\": true, \"CL-RM\": true,\n\t\"CL-TA\": true, \"CL-VS\": true, \"CM-AD\": true, \"CM-CE\": true, \"CM-EN\": true,\n\t\"CM-ES\": true, \"CM-LT\": true, \"CM-NO\": true, \"CM-NW\": true, \"CM-OU\": true,\n\t\"CM-SU\": true, \"CM-SW\": true, \"CN-AH\": true, \"CN-BJ\": true, \"CN-CQ\": true,\n\t\"CN-FJ\": true, \"CN-GS\": true, \"CN-GD\": true, \"CN-GX\": true, \"CN-GZ\": true,\n\t\"CN-HI\": true, \"CN-HE\": true, \"CN-HL\": true, \"CN-HA\": true, \"CN-HB\": true,\n\t\"CN-HN\": true, \"CN-JS\": true, \"CN-JX\": true, \"CN-JL\": true, \"CN-LN\": true,\n\t\"CN-NM\": true, \"CN-NX\": true, \"CN-QH\": true, \"CN-SN\": true, \"CN-SD\": true, \"CN-SH\": true,\n\t\"CN-SX\": true, \"CN-SC\": true, \"CN-TJ\": true, \"CN-XJ\": true, \"CN-XZ\": true, \"CN-YN\": true,\n\t\"CN-ZJ\": true, \"CO-AMA\": true, \"CO-ANT\": true, \"CO-ARA\": true, \"CO-ATL\": true,\n\t\"CO-BOL\": true, \"CO-BOY\": true, \"CO-CAL\": true, \"CO-CAQ\": true, \"CO-CAS\": true,\n\t\"CO-CAU\": true, \"CO-CES\": true, \"CO-CHO\": true, \"CO-COR\": true, \"CO-CUN\": true,\n\t\"CO-DC\": true, \"CO-GUA\": true, \"CO-GUV\": true, \"CO-HUI\": true, \"CO-LAG\": true,\n\t\"CO-MAG\": true, \"CO-MET\": true, \"CO-NAR\": true, \"CO-NSA\": true, \"CO-PUT\": true,\n\t\"CO-QUI\": true, \"CO-RIS\": true, \"CO-SAN\": true, \"CO-SAP\": true, \"CO-SUC\": true,\n\t\"CO-TOL\": true, \"CO-VAC\": true, \"CO-VAU\": true, \"CO-VID\": true, \"CR-A\": true,\n\t\"CR-C\": true, \"CR-G\": true, \"CR-H\": true, \"CR-L\": true, \"CR-P\": true,\n\t\"CR-SJ\": true, \"CU-01\": true, \"CU-02\": true, \"CU-03\": true, \"CU-04\": true,\n\t\"CU-05\": true, \"CU-06\": true, \"CU-07\": true, \"CU-08\": true, \"CU-09\": true,\n\t\"CU-10\": true, \"CU-11\": true, \"CU-12\": true, \"CU-13\": true, \"CU-14\": true, \"CU-15\": true,\n\t\"CU-16\": true, \"CU-99\": true, \"CV-B\": true, \"CV-BR\": true, \"CV-BV\": true, \"CV-CA\": true,\n\t\"CV-CF\": true, \"CV-CR\": true, \"CV-MA\": true, \"CV-MO\": true, \"CV-PA\": true,\n\t\"CV-PN\": true, \"CV-PR\": true, \"CV-RB\": true, \"CV-RG\": true, \"CV-RS\": true,\n\t\"CV-S\": true, \"CV-SD\": true, \"CV-SF\": true, \"CV-SL\": true, \"CV-SM\": true,\n\t\"CV-SO\": true, \"CV-SS\": true, \"CV-SV\": true, \"CV-TA\": true, \"CV-TS\": true,\n\t\"CY-01\": true, \"CY-02\": true, \"CY-03\": true, \"CY-04\": true, \"CY-05\": true,\n\t\"CY-06\": true, \"CZ-10\": true, \"CZ-101\": true, \"CZ-102\": true, \"CZ-103\": true,\n\t\"CZ-104\": true, \"CZ-105\": true, \"CZ-106\": true, \"CZ-107\": true, \"CZ-108\": true,\n\t\"CZ-109\": true, \"CZ-110\": true, \"CZ-111\": true, \"CZ-112\": true, \"CZ-113\": true,\n\t\"CZ-114\": true, \"CZ-115\": true, \"CZ-116\": true, \"CZ-117\": true, \"CZ-118\": true,\n\t\"CZ-119\": true, \"CZ-120\": true, \"CZ-121\": true, \"CZ-122\": true, \"CZ-20\": true,\n\t\"CZ-201\": true, \"CZ-202\": true, \"CZ-203\": true, \"CZ-204\": true, \"CZ-205\": true,\n\t\"CZ-206\": true, \"CZ-207\": true, \"CZ-208\": true, \"CZ-209\": true, \"CZ-20A\": true,\n\t\"CZ-20B\": true, \"CZ-20C\": true, \"CZ-31\": true, \"CZ-311\": true, \"CZ-312\": true,\n\t\"CZ-313\": true, \"CZ-314\": true, \"CZ-315\": true, \"CZ-316\": true, \"CZ-317\": true,\n\t\"CZ-32\": true, \"CZ-321\": true, \"CZ-322\": true, \"CZ-323\": true, \"CZ-324\": true,\n\t\"CZ-325\": true, \"CZ-326\": true, \"CZ-327\": true, \"CZ-41\": true, \"CZ-411\": true,\n\t\"CZ-412\": true, \"CZ-413\": true, \"CZ-42\": true, \"CZ-421\": true, \"CZ-422\": true,\n\t\"CZ-423\": true, \"CZ-424\": true, \"CZ-425\": true, \"CZ-426\": true, \"CZ-427\": true,\n\t\"CZ-51\": true, \"CZ-511\": true, \"CZ-512\": true, \"CZ-513\": true, \"CZ-514\": true,\n\t\"CZ-52\": true, \"CZ-521\": true, \"CZ-522\": true, \"CZ-523\": true, \"CZ-524\": true,\n\t\"CZ-525\": true, \"CZ-53\": true, \"CZ-531\": true, \"CZ-532\": true, \"CZ-533\": true,\n\t\"CZ-534\": true, \"CZ-63\": true, \"CZ-631\": true, \"CZ-632\": true, \"CZ-633\": true,\n\t\"CZ-634\": true, \"CZ-635\": true, \"CZ-64\": true, \"CZ-641\": true, \"CZ-642\": true,\n\t\"CZ-643\": true, \"CZ-644\": true, \"CZ-645\": true, \"CZ-646\": true, \"CZ-647\": true,\n\t\"CZ-71\": true, \"CZ-711\": true, \"CZ-712\": true, \"CZ-713\": true, \"CZ-714\": true,\n\t\"CZ-715\": true, \"CZ-72\": true, \"CZ-721\": true, \"CZ-722\": true, \"CZ-723\": true,\n\t\"CZ-724\": true, \"CZ-80\": true, \"CZ-801\": true, \"CZ-802\": true, \"CZ-803\": true,\n\t\"CZ-804\": true, \"CZ-805\": true, \"CZ-806\": true, \"DE-BB\": true, \"DE-BE\": true,\n\t\"DE-BW\": true, \"DE-BY\": true, \"DE-HB\": true, \"DE-HE\": true, \"DE-HH\": true,\n\t\"DE-MV\": true, \"DE-NI\": true, \"DE-NW\": true, \"DE-RP\": true, \"DE-SH\": true,\n\t\"DE-SL\": true, \"DE-SN\": true, \"DE-ST\": true, \"DE-TH\": true, \"DJ-AR\": true,\n\t\"DJ-AS\": true, \"DJ-DI\": true, \"DJ-DJ\": true, \"DJ-OB\": true, \"DJ-TA\": true,\n\t\"DK-81\": true, \"DK-82\": true, \"DK-83\": true, \"DK-84\": true, \"DK-85\": true,\n\t\"DM-01\": true, \"DM-02\": true, \"DM-03\": true, \"DM-04\": true, \"DM-05\": true,\n\t\"DM-06\": true, \"DM-07\": true, \"DM-08\": true, \"DM-09\": true, \"DM-10\": true,\n\t\"DO-01\": true, \"DO-02\": true, \"DO-03\": true, \"DO-04\": true, \"DO-05\": true,\n\t\"DO-06\": true, \"DO-07\": true, \"DO-08\": true, \"DO-09\": true, \"DO-10\": true,\n\t\"DO-11\": true, \"DO-12\": true, \"DO-13\": true, \"DO-14\": true, \"DO-15\": true,\n\t\"DO-16\": true, \"DO-17\": true, \"DO-18\": true, \"DO-19\": true, \"DO-20\": true,\n\t\"DO-21\": true, \"DO-22\": true, \"DO-23\": true, \"DO-24\": true, \"DO-25\": true,\n\t\"DO-26\": true, \"DO-27\": true, \"DO-28\": true, \"DO-29\": true, \"DO-30\": true, \"DO-31\": true,\n\t\"DZ-01\": true, \"DZ-02\": true, \"DZ-03\": true, \"DZ-04\": true, \"DZ-05\": true,\n\t\"DZ-06\": true, \"DZ-07\": true, \"DZ-08\": true, \"DZ-09\": true, \"DZ-10\": true,\n\t\"DZ-11\": true, \"DZ-12\": true, \"DZ-13\": true, \"DZ-14\": true, \"DZ-15\": true,\n\t\"DZ-16\": true, \"DZ-17\": true, \"DZ-18\": true, \"DZ-19\": true, \"DZ-20\": true,\n\t\"DZ-21\": true, \"DZ-22\": true, \"DZ-23\": true, \"DZ-24\": true, \"DZ-25\": true,\n\t\"DZ-26\": true, \"DZ-27\": true, \"DZ-28\": true, \"DZ-29\": true, \"DZ-30\": true,\n\t\"DZ-31\": true, \"DZ-32\": true, \"DZ-33\": true, \"DZ-34\": true, \"DZ-35\": true,\n\t\"DZ-36\": true, \"DZ-37\": true, \"DZ-38\": true, \"DZ-39\": true, \"DZ-40\": true,\n\t\"DZ-41\": true, \"DZ-42\": true, \"DZ-43\": true, \"DZ-44\": true, \"DZ-45\": true,\n\t\"DZ-46\": true, \"DZ-47\": true, \"DZ-48\": true, \"DZ-49\": true, \"DZ-51\": true,\n\t\"DZ-53\": true, \"DZ-55\": true, \"DZ-56\": true, \"DZ-57\": true, \"EC-A\": true, \"EC-B\": true,\n\t\"EC-C\": true, \"EC-D\": true, \"EC-E\": true, \"EC-F\": true, \"EC-G\": true,\n\t\"EC-H\": true, \"EC-I\": true, \"EC-L\": true, \"EC-M\": true, \"EC-N\": true,\n\t\"EC-O\": true, \"EC-P\": true, \"EC-R\": true, \"EC-S\": true, \"EC-SD\": true,\n\t\"EC-SE\": true, \"EC-T\": true, \"EC-U\": true, \"EC-W\": true, \"EC-X\": true,\n\t\"EC-Y\": true, \"EC-Z\": true, \"EE-37\": true, \"EE-39\": true, \"EE-44\": true, \"EE-45\": true,\n\t\"EE-49\": true, \"EE-50\": true, \"EE-51\": true, \"EE-52\": true, \"EE-56\": true, \"EE-57\": true,\n\t\"EE-59\": true, \"EE-60\": true, \"EE-64\": true, \"EE-65\": true, \"EE-67\": true, \"EE-68\": true,\n\t\"EE-70\": true, \"EE-71\": true, \"EE-74\": true, \"EE-78\": true, \"EE-79\": true, \"EE-81\": true, \"EE-82\": true,\n\t\"EE-84\": true, \"EE-86\": true, \"EE-87\": true, \"EG-ALX\": true, \"EG-ASN\": true, \"EG-AST\": true,\n\t\"EG-BA\": true, \"EG-BH\": true, \"EG-BNS\": true, \"EG-C\": true, \"EG-DK\": true,\n\t\"EG-DT\": true, \"EG-FYM\": true, \"EG-GH\": true, \"EG-GZ\": true, \"EG-HU\": true,\n\t\"EG-IS\": true, \"EG-JS\": true, \"EG-KB\": true, \"EG-KFS\": true, \"EG-KN\": true,\n\t\"EG-LX\": true, \"EG-MN\": true, \"EG-MNF\": true, \"EG-MT\": true, \"EG-PTS\": true, \"EG-SHG\": true,\n\t\"EG-SHR\": true, \"EG-SIN\": true, \"EG-SU\": true, \"EG-SUZ\": true, \"EG-WAD\": true,\n\t\"ER-AN\": true, \"ER-DK\": true, \"ER-DU\": true, \"ER-GB\": true, \"ER-MA\": true,\n\t\"ER-SK\": true, \"ES-A\": true, \"ES-AB\": true, \"ES-AL\": true, \"ES-AN\": true,\n\t\"ES-AR\": true, \"ES-AS\": true, \"ES-AV\": true, \"ES-B\": true, \"ES-BA\": true,\n\t\"ES-BI\": true, \"ES-BU\": true, \"ES-C\": true, \"ES-CA\": true, \"ES-CB\": true,\n\t\"ES-CC\": true, \"ES-CE\": true, \"ES-CL\": true, \"ES-CM\": true, \"ES-CN\": true,\n\t\"ES-CO\": true, \"ES-CR\": true, \"ES-CS\": true, \"ES-CT\": true, \"ES-CU\": true,\n\t\"ES-EX\": true, \"ES-GA\": true, \"ES-GC\": true, \"ES-GI\": true, \"ES-GR\": true,\n\t\"ES-GU\": true, \"ES-H\": true, \"ES-HU\": true, \"ES-IB\": true, \"ES-J\": true,\n\t\"ES-L\": true, \"ES-LE\": true, \"ES-LO\": true, \"ES-LU\": true, \"ES-M\": true,\n\t\"ES-MA\": true, \"ES-MC\": true, \"ES-MD\": true, \"ES-ML\": true, \"ES-MU\": true,\n\t\"ES-NA\": true, \"ES-NC\": true, \"ES-O\": true, \"ES-OR\": true, \"ES-P\": true,\n\t\"ES-PM\": true, \"ES-PO\": true, \"ES-PV\": true, \"ES-RI\": true, \"ES-S\": true,\n\t\"ES-SA\": true, \"ES-SE\": true, \"ES-SG\": true, \"ES-SO\": true, \"ES-SS\": true,\n\t\"ES-T\": true, \"ES-TE\": true, \"ES-TF\": true, \"ES-TO\": true, \"ES-V\": true,\n\t\"ES-VA\": true, \"ES-VC\": true, \"ES-VI\": true, \"ES-Z\": true, \"ES-ZA\": true,\n\t\"ET-AA\": true, \"ET-AF\": true, \"ET-AM\": true, \"ET-BE\": true, \"ET-DD\": true,\n\t\"ET-GA\": true, \"ET-HA\": true, \"ET-OR\": true, \"ET-SN\": true, \"ET-SO\": true,\n\t\"ET-TI\": true, \"FI-01\": true, \"FI-02\": true, \"FI-03\": true, \"FI-04\": true,\n\t\"FI-05\": true, \"FI-06\": true, \"FI-07\": true, \"FI-08\": true, \"FI-09\": true,\n\t\"FI-10\": true, \"FI-11\": true, \"FI-12\": true, \"FI-13\": true, \"FI-14\": true,\n\t\"FI-15\": true, \"FI-16\": true, \"FI-17\": true, \"FI-18\": true, \"FI-19\": true,\n\t\"FJ-C\": true, \"FJ-E\": true, \"FJ-N\": true, \"FJ-R\": true, \"FJ-W\": true,\n\t\"FM-KSA\": true, \"FM-PNI\": true, \"FM-TRK\": true, \"FM-YAP\": true, \"FR-01\": true,\n\t\"FR-02\": true, \"FR-03\": true, \"FR-04\": true, \"FR-05\": true, \"FR-06\": true,\n\t\"FR-07\": true, \"FR-08\": true, \"FR-09\": true, \"FR-10\": true, \"FR-11\": true,\n\t\"FR-12\": true, \"FR-13\": true, \"FR-14\": true, \"FR-15\": true, \"FR-16\": true,\n\t\"FR-17\": true, \"FR-18\": true, \"FR-19\": true, \"FR-20R\": true, \"FR-21\": true, \"FR-22\": true,\n\t\"FR-23\": true, \"FR-24\": true, \"FR-25\": true, \"FR-26\": true, \"FR-27\": true,\n\t\"FR-28\": true, \"FR-29\": true, \"FR-2A\": true, \"FR-2B\": true, \"FR-30\": true,\n\t\"FR-31\": true, \"FR-32\": true, \"FR-33\": true, \"FR-34\": true, \"FR-35\": true,\n\t\"FR-36\": true, \"FR-37\": true, \"FR-38\": true, \"FR-39\": true, \"FR-40\": true,\n\t\"FR-41\": true, \"FR-42\": true, \"FR-43\": true, \"FR-44\": true, \"FR-45\": true,\n\t\"FR-46\": true, \"FR-47\": true, \"FR-48\": true, \"FR-49\": true, \"FR-50\": true,\n\t\"FR-51\": true, \"FR-52\": true, \"FR-53\": true, \"FR-54\": true, \"FR-55\": true,\n\t\"FR-56\": true, \"FR-57\": true, \"FR-58\": true, \"FR-59\": true, \"FR-60\": true,\n\t\"FR-61\": true, \"FR-62\": true, \"FR-63\": true, \"FR-64\": true, \"FR-65\": true,\n\t\"FR-66\": true, \"FR-67\": true, \"FR-68\": true, \"FR-69\": true, \"FR-70\": true,\n\t\"FR-71\": true, \"FR-72\": true, \"FR-73\": true, \"FR-74\": true, \"FR-75\": true,\n\t\"FR-76\": true, \"FR-77\": true, \"FR-78\": true, \"FR-79\": true, \"FR-80\": true,\n\t\"FR-81\": true, \"FR-82\": true, \"FR-83\": true, \"FR-84\": true, \"FR-85\": true,\n\t\"FR-86\": true, \"FR-87\": true, \"FR-88\": true, \"FR-89\": true, \"FR-90\": true,\n\t\"FR-91\": true, \"FR-92\": true, \"FR-93\": true, \"FR-94\": true, \"FR-95\": true,\n\t\"FR-ARA\": true, \"FR-BFC\": true, \"FR-BL\": true, \"FR-BRE\": true, \"FR-COR\": true,\n\t\"FR-CP\": true, \"FR-CVL\": true, \"FR-GES\": true, \"FR-GF\": true, \"FR-GP\": true,\n\t\"FR-GUA\": true, \"FR-HDF\": true, \"FR-IDF\": true, \"FR-LRE\": true, \"FR-MAY\": true,\n\t\"FR-MF\": true, \"FR-MQ\": true, \"FR-NAQ\": true, \"FR-NC\": true, \"FR-NOR\": true,\n\t\"FR-OCC\": true, \"FR-PAC\": true, \"FR-PDL\": true, \"FR-PF\": true, \"FR-PM\": true,\n\t\"FR-RE\": true, \"FR-TF\": true, \"FR-WF\": true, \"FR-YT\": true, \"GA-1\": true,\n\t\"GA-2\": true, \"GA-3\": true, \"GA-4\": true, \"GA-5\": true, \"GA-6\": true,\n\t\"GA-7\": true, \"GA-8\": true, \"GA-9\": true, \"GB-ABC\": true, \"GB-ABD\": true,\n\t\"GB-ABE\": true, \"GB-AGB\": true, \"GB-AGY\": true, \"GB-AND\": true, \"GB-ANN\": true,\n\t\"GB-ANS\": true, \"GB-BAS\": true, \"GB-BBD\": true, \"GB-BDF\": true, \"GB-BDG\": true,\n\t\"GB-BEN\": true, \"GB-BEX\": true, \"GB-BFS\": true, \"GB-BGE\": true, \"GB-BGW\": true,\n\t\"GB-BIR\": true, \"GB-BKM\": true, \"GB-BMH\": true, \"GB-BNE\": true, \"GB-BNH\": true,\n\t\"GB-BNS\": true, \"GB-BOL\": true, \"GB-BPL\": true, \"GB-BRC\": true, \"GB-BRD\": true,\n\t\"GB-BRY\": true, \"GB-BST\": true, \"GB-BUR\": true, \"GB-CAM\": true, \"GB-CAY\": true,\n\t\"GB-CBF\": true, \"GB-CCG\": true, \"GB-CGN\": true, \"GB-CHE\": true, \"GB-CHW\": true,\n\t\"GB-CLD\": true, \"GB-CLK\": true, \"GB-CMA\": true, \"GB-CMD\": true, \"GB-CMN\": true,\n\t\"GB-CON\": true, \"GB-COV\": true, \"GB-CRF\": true, \"GB-CRY\": true, \"GB-CWY\": true,\n\t\"GB-DAL\": true, \"GB-DBY\": true, \"GB-DEN\": true, \"GB-DER\": true, \"GB-DEV\": true,\n\t\"GB-DGY\": true, \"GB-DNC\": true, \"GB-DND\": true, \"GB-DOR\": true, \"GB-DRS\": true,\n\t\"GB-DUD\": true, \"GB-DUR\": true, \"GB-EAL\": true, \"GB-EAW\": true, \"GB-EAY\": true,\n\t\"GB-EDH\": true, \"GB-EDU\": true, \"GB-ELN\": true, \"GB-ELS\": true, \"GB-ENF\": true,\n\t\"GB-ENG\": true, \"GB-ERW\": true, \"GB-ERY\": true, \"GB-ESS\": true, \"GB-ESX\": true,\n\t\"GB-FAL\": true, \"GB-FIF\": true, \"GB-FLN\": true, \"GB-FMO\": true, \"GB-GAT\": true,\n\t\"GB-GBN\": true, \"GB-GLG\": true, \"GB-GLS\": true, \"GB-GRE\": true, \"GB-GWN\": true,\n\t\"GB-HAL\": true, \"GB-HAM\": true, \"GB-HAV\": true, \"GB-HCK\": true, \"GB-HEF\": true,\n\t\"GB-HIL\": true, \"GB-HLD\": true, \"GB-HMF\": true, \"GB-HNS\": true, \"GB-HPL\": true,\n\t\"GB-HRT\": true, \"GB-HRW\": true, \"GB-HRY\": true, \"GB-IOS\": true, \"GB-IOW\": true,\n\t\"GB-ISL\": true, \"GB-IVC\": true, \"GB-KEC\": true, \"GB-KEN\": true, \"GB-KHL\": true,\n\t\"GB-KIR\": true, \"GB-KTT\": true, \"GB-KWL\": true, \"GB-LAN\": true, \"GB-LBC\": true,\n\t\"GB-LBH\": true, \"GB-LCE\": true, \"GB-LDS\": true, \"GB-LEC\": true, \"GB-LEW\": true,\n\t\"GB-LIN\": true, \"GB-LIV\": true, \"GB-LND\": true, \"GB-LUT\": true, \"GB-MAN\": true,\n\t\"GB-MDB\": true, \"GB-MDW\": true, \"GB-MEA\": true, \"GB-MIK\": true, \"GD-01\": true,\n\t\"GB-MLN\": true, \"GB-MON\": true, \"GB-MRT\": true, \"GB-MRY\": true, \"GB-MTY\": true,\n\t\"GB-MUL\": true, \"GB-NAY\": true, \"GB-NBL\": true, \"GB-NEL\": true, \"GB-NET\": true,\n\t\"GB-NFK\": true, \"GB-NGM\": true, \"GB-NIR\": true, \"GB-NLK\": true, \"GB-NLN\": true,\n\t\"GB-NMD\": true, \"GB-NSM\": true, \"GB-NTH\": true, \"GB-NTL\": true, \"GB-NTT\": true,\n\t\"GB-NTY\": true, \"GB-NWM\": true, \"GB-NWP\": true, \"GB-NYK\": true, \"GB-OLD\": true,\n\t\"GB-ORK\": true, \"GB-OXF\": true, \"GB-PEM\": true, \"GB-PKN\": true, \"GB-PLY\": true,\n\t\"GB-POL\": true, \"GB-POR\": true, \"GB-POW\": true, \"GB-PTE\": true, \"GB-RCC\": true,\n\t\"GB-RCH\": true, \"GB-RCT\": true, \"GB-RDB\": true, \"GB-RDG\": true, \"GB-RFW\": true,\n\t\"GB-RIC\": true, \"GB-ROT\": true, \"GB-RUT\": true, \"GB-SAW\": true, \"GB-SAY\": true,\n\t\"GB-SCB\": true, \"GB-SCT\": true, \"GB-SFK\": true, \"GB-SFT\": true, \"GB-SGC\": true,\n\t\"GB-SHF\": true, \"GB-SHN\": true, \"GB-SHR\": true, \"GB-SKP\": true, \"GB-SLF\": true,\n\t\"GB-SLG\": true, \"GB-SLK\": true, \"GB-SND\": true, \"GB-SOL\": true, \"GB-SOM\": true,\n\t\"GB-SOS\": true, \"GB-SRY\": true, \"GB-STE\": true, \"GB-STG\": true, \"GB-STH\": true,\n\t\"GB-STN\": true, \"GB-STS\": true, \"GB-STT\": true, \"GB-STY\": true, \"GB-SWA\": true,\n\t\"GB-SWD\": true, \"GB-SWK\": true, \"GB-TAM\": true, \"GB-TFW\": true, \"GB-THR\": true,\n\t\"GB-TOB\": true, \"GB-TOF\": true, \"GB-TRF\": true, \"GB-TWH\": true, \"GB-UKM\": true,\n\t\"GB-VGL\": true, \"GB-WAR\": true, \"GB-WBK\": true, \"GB-WDU\": true, \"GB-WFT\": true,\n\t\"GB-WGN\": true, \"GB-WIL\": true, \"GB-WKF\": true, \"GB-WLL\": true, \"GB-WLN\": true,\n\t\"GB-WLS\": true, \"GB-WLV\": true, \"GB-WND\": true, \"GB-WNM\": true, \"GB-WOK\": true,\n\t\"GB-WOR\": true, \"GB-WRL\": true, \"GB-WRT\": true, \"GB-WRX\": true, \"GB-WSM\": true,\n\t\"GB-WSX\": true, \"GB-YOR\": true, \"GB-ZET\": true, \"GD-02\": true, \"GD-03\": true,\n\t\"GD-04\": true, \"GD-05\": true, \"GD-06\": true, \"GD-10\": true, \"GE-AB\": true,\n\t\"GE-AJ\": true, \"GE-GU\": true, \"GE-IM\": true, \"GE-KA\": true, \"GE-KK\": true,\n\t\"GE-MM\": true, \"GE-RL\": true, \"GE-SJ\": true, \"GE-SK\": true, \"GE-SZ\": true,\n\t\"GE-TB\": true, \"GH-AA\": true, \"GH-AH\": true, \"GH-AF\": true, \"GH-BA\": true, \"GH-BO\": true, \"GH-BE\": true, \"GH-CP\": true,\n\t\"GH-EP\": true, \"GH-NP\": true, \"GH-TV\": true, \"GH-UE\": true, \"GH-UW\": true,\n\t\"GH-WP\": true, \"GL-AV\": true, \"GL-KU\": true, \"GL-QA\": true, \"GL-QT\": true, \"GL-QE\": true, \"GL-SM\": true,\n\t\"GM-B\": true, \"GM-L\": true, \"GM-M\": true, \"GM-N\": true, \"GM-U\": true,\n\t\"GM-W\": true, \"GN-B\": true, \"GN-BE\": true, \"GN-BF\": true, \"GN-BK\": true,\n\t\"GN-C\": true, \"GN-CO\": true, \"GN-D\": true, \"GN-DB\": true, \"GN-DI\": true,\n\t\"GN-DL\": true, \"GN-DU\": true, \"GN-F\": true, \"GN-FA\": true, \"GN-FO\": true,\n\t\"GN-FR\": true, \"GN-GA\": true, \"GN-GU\": true, \"GN-K\": true, \"GN-KA\": true,\n\t\"GN-KB\": true, \"GN-KD\": true, \"GN-KE\": true, \"GN-KN\": true, \"GN-KO\": true,\n\t\"GN-KS\": true, \"GN-L\": true, \"GN-LA\": true, \"GN-LE\": true, \"GN-LO\": true,\n\t\"GN-M\": true, \"GN-MC\": true, \"GN-MD\": true, \"GN-ML\": true, \"GN-MM\": true,\n\t\"GN-N\": true, \"GN-NZ\": true, \"GN-PI\": true, \"GN-SI\": true, \"GN-TE\": true,\n\t\"GN-TO\": true, \"GN-YO\": true, \"GQ-AN\": true, \"GQ-BN\": true, \"GQ-BS\": true,\n\t\"GQ-C\": true, \"GQ-CS\": true, \"GQ-I\": true, \"GQ-KN\": true, \"GQ-LI\": true,\n\t\"GQ-WN\": true, \"GR-01\": true, \"GR-03\": true, \"GR-04\": true, \"GR-05\": true,\n\t\"GR-06\": true, \"GR-07\": true, \"GR-11\": true, \"GR-12\": true, \"GR-13\": true,\n\t\"GR-14\": true, \"GR-15\": true, \"GR-16\": true, \"GR-17\": true, \"GR-21\": true,\n\t\"GR-22\": true, \"GR-23\": true, \"GR-24\": true, \"GR-31\": true, \"GR-32\": true,\n\t\"GR-33\": true, \"GR-34\": true, \"GR-41\": true, \"GR-42\": true, \"GR-43\": true,\n\t\"GR-44\": true, \"GR-51\": true, \"GR-52\": true, \"GR-53\": true, \"GR-54\": true,\n\t\"GR-55\": true, \"GR-56\": true, \"GR-57\": true, \"GR-58\": true, \"GR-59\": true,\n\t\"GR-61\": true, \"GR-62\": true, \"GR-63\": true, \"GR-64\": true, \"GR-69\": true,\n\t\"GR-71\": true, \"GR-72\": true, \"GR-73\": true, \"GR-81\": true, \"GR-82\": true,\n\t\"GR-83\": true, \"GR-84\": true, \"GR-85\": true, \"GR-91\": true, \"GR-92\": true,\n\t\"GR-93\": true, \"GR-94\": true, \"GR-A\": true, \"GR-A1\": true, \"GR-B\": true,\n\t\"GR-C\": true, \"GR-D\": true, \"GR-E\": true, \"GR-F\": true, \"GR-G\": true,\n\t\"GR-H\": true, \"GR-I\": true, \"GR-J\": true, \"GR-K\": true, \"GR-L\": true,\n\t\"GR-M\": true, \"GT-01\": true, \"GT-02\": true, \"GT-03\": true, \"GT-04\": true,\n\t\"GT-05\": true, \"GT-06\": true, \"GT-07\": true, \"GT-08\": true, \"GT-09\": true,\n\t\"GT-10\": true, \"GT-11\": true, \"GT-12\": true, \"GT-13\": true, \"GT-14\": true,\n\t\"GT-15\": true, \"GT-16\": true, \"GT-17\": true, \"GT-18\": true, \"GT-19\": true,\n\t\"GT-20\": true, \"GT-21\": true, \"GT-22\": true, \"GW-BA\": true, \"GW-BL\": true,\n\t\"GW-BM\": true, \"GW-BS\": true, \"GW-CA\": true, \"GW-GA\": true, \"GW-L\": true,\n\t\"GW-N\": true, \"GW-OI\": true, \"GW-QU\": true, \"GW-S\": true, \"GW-TO\": true,\n\t\"GY-BA\": true, \"GY-CU\": true, \"GY-DE\": true, \"GY-EB\": true, \"GY-ES\": true,\n\t\"GY-MA\": true, \"GY-PM\": true, \"GY-PT\": true, \"GY-UD\": true, \"GY-UT\": true,\n\t\"HN-AT\": true, \"HN-CH\": true, \"HN-CL\": true, \"HN-CM\": true, \"HN-CP\": true,\n\t\"HN-CR\": true, \"HN-EP\": true, \"HN-FM\": true, \"HN-GD\": true, \"HN-IB\": true,\n\t\"HN-IN\": true, \"HN-LE\": true, \"HN-LP\": true, \"HN-OC\": true, \"HN-OL\": true,\n\t\"HN-SB\": true, \"HN-VA\": true, \"HN-YO\": true, \"HR-01\": true, \"HR-02\": true,\n\t\"HR-03\": true, \"HR-04\": true, \"HR-05\": true, \"HR-06\": true, \"HR-07\": true,\n\t\"HR-08\": true, \"HR-09\": true, \"HR-10\": true, \"HR-11\": true, \"HR-12\": true,\n\t\"HR-13\": true, \"HR-14\": true, \"HR-15\": true, \"HR-16\": true, \"HR-17\": true,\n\t\"HR-18\": true, \"HR-19\": true, \"HR-20\": true, \"HR-21\": true, \"HT-AR\": true,\n\t\"HT-CE\": true, \"HT-GA\": true, \"HT-ND\": true, \"HT-NE\": true, \"HT-NO\": true, \"HT-NI\": true,\n\t\"HT-OU\": true, \"HT-SD\": true, \"HT-SE\": true, \"HU-BA\": true, \"HU-BC\": true,\n\t\"HU-BE\": true, \"HU-BK\": true, \"HU-BU\": true, \"HU-BZ\": true, \"HU-CS\": true,\n\t\"HU-DE\": true, \"HU-DU\": true, \"HU-EG\": true, \"HU-ER\": true, \"HU-FE\": true,\n\t\"HU-GS\": true, \"HU-GY\": true, \"HU-HB\": true, \"HU-HE\": true, \"HU-HV\": true,\n\t\"HU-JN\": true, \"HU-KE\": true, \"HU-KM\": true, \"HU-KV\": true, \"HU-MI\": true,\n\t\"HU-NK\": true, \"HU-NO\": true, \"HU-NY\": true, \"HU-PE\": true, \"HU-PS\": true,\n\t\"HU-SD\": true, \"HU-SF\": true, \"HU-SH\": true, \"HU-SK\": true, \"HU-SN\": true,\n\t\"HU-SO\": true, \"HU-SS\": true, \"HU-ST\": true, \"HU-SZ\": true, \"HU-TB\": true,\n\t\"HU-TO\": true, \"HU-VA\": true, \"HU-VE\": true, \"HU-VM\": true, \"HU-ZA\": true,\n\t\"HU-ZE\": true, \"ID-AC\": true, \"ID-BA\": true, \"ID-BB\": true, \"ID-BE\": true,\n\t\"ID-BT\": true, \"ID-GO\": true, \"ID-IJ\": true, \"ID-JA\": true, \"ID-JB\": true,\n\t\"ID-JI\": true, \"ID-JK\": true, \"ID-JT\": true, \"ID-JW\": true, \"ID-KA\": true,\n\t\"ID-KB\": true, \"ID-KI\": true, \"ID-KU\": true, \"ID-KR\": true, \"ID-KS\": true,\n\t\"ID-KT\": true, \"ID-LA\": true, \"ID-MA\": true, \"ID-ML\": true, \"ID-MU\": true,\n\t\"ID-NB\": true, \"ID-NT\": true, \"ID-NU\": true, \"ID-PA\": true, \"ID-PB\": true,\n\t\"ID-PE\": true, \"ID-PP\": true, \"ID-PS\": true, \"ID-PT\": true, \"ID-RI\": true,\n\t\"ID-SA\": true, \"ID-SB\": true, \"ID-SG\": true, \"ID-SL\": true, \"ID-SM\": true,\n\t\"ID-SN\": true, \"ID-SR\": true, \"ID-SS\": true, \"ID-ST\": true, \"ID-SU\": true,\n\t\"ID-YO\": true, \"IE-C\": true, \"IE-CE\": true, \"IE-CN\": true, \"IE-CO\": true,\n\t\"IE-CW\": true, \"IE-D\": true, \"IE-DL\": true, \"IE-G\": true, \"IE-KE\": true,\n\t\"IE-KK\": true, \"IE-KY\": true, \"IE-L\": true, \"IE-LD\": true, \"IE-LH\": true,\n\t\"IE-LK\": true, \"IE-LM\": true, \"IE-LS\": true, \"IE-M\": true, \"IE-MH\": true,\n\t\"IE-MN\": true, \"IE-MO\": true, \"IE-OY\": true, \"IE-RN\": true, \"IE-SO\": true,\n\t\"IE-TA\": true, \"IE-U\": true, \"IE-WD\": true, \"IE-WH\": true, \"IE-WW\": true,\n\t\"IE-WX\": true, \"IL-D\": true, \"IL-HA\": true, \"IL-JM\": true, \"IL-M\": true,\n\t\"IL-TA\": true, \"IL-Z\": true, \"IN-AN\": true, \"IN-AP\": true, \"IN-AR\": true,\n\t\"IN-AS\": true, \"IN-BR\": true, \"IN-CH\": true, \"IN-CT\": true, \"IN-DH\": true,\n\t\"IN-DL\": true, \"IN-DN\": true, \"IN-GA\": true, \"IN-GJ\": true, \"IN-HP\": true,\n\t\"IN-HR\": true, \"IN-JH\": true, \"IN-JK\": true, \"IN-KA\": true, \"IN-KL\": true,\n\t\"IN-LD\": true, \"IN-MH\": true, \"IN-ML\": true, \"IN-MN\": true, \"IN-MP\": true,\n\t\"IN-MZ\": true, \"IN-NL\": true, \"IN-TG\": true, \"IN-OR\": true, \"IN-PB\": true, \"IN-PY\": true,\n\t\"IN-RJ\": true, \"IN-SK\": true, \"IN-TN\": true, \"IN-TR\": true, \"IN-UP\": true,\n\t\"IN-UT\": true, \"IN-WB\": true, \"IQ-AN\": true, \"IQ-AR\": true, \"IQ-BA\": true,\n\t\"IQ-BB\": true, \"IQ-BG\": true, \"IQ-DA\": true, \"IQ-DI\": true, \"IQ-DQ\": true,\n\t\"IQ-KA\": true, \"IQ-KI\": true, \"IQ-MA\": true, \"IQ-MU\": true, \"IQ-NA\": true, \"IQ-NI\": true,\n\t\"IQ-QA\": true, \"IQ-SD\": true, \"IQ-SW\": true, \"IQ-SU\": true, \"IQ-TS\": true, \"IQ-WA\": true,\n\t\"IR-00\": true, \"IR-01\": true, \"IR-02\": true, \"IR-03\": true, \"IR-04\": true, \"IR-05\": true,\n\t\"IR-06\": true, \"IR-07\": true, \"IR-08\": true, \"IR-09\": true, \"IR-10\": true, \"IR-11\": true,\n\t\"IR-12\": true, \"IR-13\": true, \"IR-14\": true, \"IR-15\": true, \"IR-16\": true,\n\t\"IR-17\": true, \"IR-18\": true, \"IR-19\": true, \"IR-20\": true, \"IR-21\": true,\n\t\"IR-22\": true, \"IR-23\": true, \"IR-24\": true, \"IR-25\": true, \"IR-26\": true,\n\t\"IR-27\": true, \"IR-28\": true, \"IR-29\": true, \"IR-30\": true, \"IR-31\": true,\n\t\"IS-0\": true, \"IS-1\": true, \"IS-2\": true, \"IS-3\": true, \"IS-4\": true,\n\t\"IS-5\": true, \"IS-6\": true, \"IS-7\": true, \"IS-8\": true, \"IT-21\": true,\n\t\"IT-23\": true, \"IT-25\": true, \"IT-32\": true, \"IT-34\": true, \"IT-36\": true,\n\t\"IT-42\": true, \"IT-45\": true, \"IT-52\": true, \"IT-55\": true, \"IT-57\": true,\n\t\"IT-62\": true, \"IT-65\": true, \"IT-67\": true, \"IT-72\": true, \"IT-75\": true,\n\t\"IT-77\": true, \"IT-78\": true, \"IT-82\": true, \"IT-88\": true, \"IT-AG\": true,\n\t\"IT-AL\": true, \"IT-AN\": true, \"IT-AO\": true, \"IT-AP\": true, \"IT-AQ\": true,\n\t\"IT-AR\": true, \"IT-AT\": true, \"IT-AV\": true, \"IT-BA\": true, \"IT-BG\": true,\n\t\"IT-BI\": true, \"IT-BL\": true, \"IT-BN\": true, \"IT-BO\": true, \"IT-BR\": true,\n\t\"IT-BS\": true, \"IT-BT\": true, \"IT-BZ\": true, \"IT-CA\": true, \"IT-CB\": true,\n\t\"IT-CE\": true, \"IT-CH\": true, \"IT-CI\": true, \"IT-CL\": true, \"IT-CN\": true,\n\t\"IT-CO\": true, \"IT-CR\": true, \"IT-CS\": true, \"IT-CT\": true, \"IT-CZ\": true,\n\t\"IT-EN\": true, \"IT-FC\": true, \"IT-FE\": true, \"IT-FG\": true, \"IT-FI\": true,\n\t\"IT-FM\": true, \"IT-FR\": true, \"IT-GE\": true, \"IT-GO\": true, \"IT-GR\": true,\n\t\"IT-IM\": true, \"IT-IS\": true, \"IT-KR\": true, \"IT-LC\": true, \"IT-LE\": true,\n\t\"IT-LI\": true, \"IT-LO\": true, \"IT-LT\": true, \"IT-LU\": true, \"IT-MB\": true,\n\t\"IT-MC\": true, \"IT-ME\": true, \"IT-MI\": true, \"IT-MN\": true, \"IT-MO\": true,\n\t\"IT-MS\": true, \"IT-MT\": true, \"IT-NA\": true, \"IT-NO\": true, \"IT-NU\": true,\n\t\"IT-OG\": true, \"IT-OR\": true, \"IT-OT\": true, \"IT-PA\": true, \"IT-PC\": true,\n\t\"IT-PD\": true, \"IT-PE\": true, \"IT-PG\": true, \"IT-PI\": true, \"IT-PN\": true,\n\t\"IT-PO\": true, \"IT-PR\": true, \"IT-PT\": true, \"IT-PU\": true, \"IT-PV\": true,\n\t\"IT-PZ\": true, \"IT-RA\": true, \"IT-RC\": true, \"IT-RE\": true, \"IT-RG\": true,\n\t\"IT-RI\": true, \"IT-RM\": true, \"IT-RN\": true, \"IT-RO\": true, \"IT-SA\": true,\n\t\"IT-SI\": true, \"IT-SO\": true, \"IT-SP\": true, \"IT-SR\": true, \"IT-SS\": true,\n\t\"IT-SV\": true, \"IT-TA\": true, \"IT-TE\": true, \"IT-TN\": true, \"IT-TO\": true,\n\t\"IT-TP\": true, \"IT-TR\": true, \"IT-TS\": true, \"IT-TV\": true, \"IT-UD\": true,\n\t\"IT-VA\": true, \"IT-VB\": true, \"IT-VC\": true, \"IT-VE\": true, \"IT-VI\": true,\n\t\"IT-VR\": true, \"IT-VS\": true, \"IT-VT\": true, \"IT-VV\": true, \"JM-01\": true,\n\t\"JM-02\": true, \"JM-03\": true, \"JM-04\": true, \"JM-05\": true, \"JM-06\": true,\n\t\"JM-07\": true, \"JM-08\": true, \"JM-09\": true, \"JM-10\": true, \"JM-11\": true,\n\t\"JM-12\": true, \"JM-13\": true, \"JM-14\": true, \"JO-AJ\": true, \"JO-AM\": true,\n\t\"JO-AQ\": true, \"JO-AT\": true, \"JO-AZ\": true, \"JO-BA\": true, \"JO-IR\": true,\n\t\"JO-JA\": true, \"JO-KA\": true, \"JO-MA\": true, \"JO-MD\": true, \"JO-MN\": true,\n\t\"JP-01\": true, \"JP-02\": true, \"JP-03\": true, \"JP-04\": true, \"JP-05\": true,\n\t\"JP-06\": true, \"JP-07\": true, \"JP-08\": true, \"JP-09\": true, \"JP-10\": true,\n\t\"JP-11\": true, \"JP-12\": true, \"JP-13\": true, \"JP-14\": true, \"JP-15\": true,\n\t\"JP-16\": true, \"JP-17\": true, \"JP-18\": true, \"JP-19\": true, \"JP-20\": true,\n\t\"JP-21\": true, \"JP-22\": true, \"JP-23\": true, \"JP-24\": true, \"JP-25\": true,\n\t\"JP-26\": true, \"JP-27\": true, \"JP-28\": true, \"JP-29\": true, \"JP-30\": true,\n\t\"JP-31\": true, \"JP-32\": true, \"JP-33\": true, \"JP-34\": true, \"JP-35\": true,\n\t\"JP-36\": true, \"JP-37\": true, \"JP-38\": true, \"JP-39\": true, \"JP-40\": true,\n\t\"JP-41\": true, \"JP-42\": true, \"JP-43\": true, \"JP-44\": true, \"JP-45\": true,\n\t\"JP-46\": true, \"JP-47\": true, \"KE-01\": true, \"KE-02\": true, \"KE-03\": true,\n\t\"KE-04\": true, \"KE-05\": true, \"KE-06\": true, \"KE-07\": true, \"KE-08\": true,\n\t\"KE-09\": true, \"KE-10\": true, \"KE-11\": true, \"KE-12\": true, \"KE-13\": true,\n\t\"KE-14\": true, \"KE-15\": true, \"KE-16\": true, \"KE-17\": true, \"KE-18\": true,\n\t\"KE-19\": true, \"KE-20\": true, \"KE-21\": true, \"KE-22\": true, \"KE-23\": true,\n\t\"KE-24\": true, \"KE-25\": true, \"KE-26\": true, \"KE-27\": true, \"KE-28\": true,\n\t\"KE-29\": true, \"KE-30\": true, \"KE-31\": true, \"KE-32\": true, \"KE-33\": true,\n\t\"KE-34\": true, \"KE-35\": true, \"KE-36\": true, \"KE-37\": true, \"KE-38\": true,\n\t\"KE-39\": true, \"KE-40\": true, \"KE-41\": true, \"KE-42\": true, \"KE-43\": true,\n\t\"KE-44\": true, \"KE-45\": true, \"KE-46\": true, \"KE-47\": true, \"KG-B\": true,\n\t\"KG-C\": true, \"KG-GB\": true, \"KG-GO\": true, \"KG-J\": true, \"KG-N\": true, \"KG-O\": true,\n\t\"KG-T\": true, \"KG-Y\": true, \"KH-1\": true, \"KH-10\": true, \"KH-11\": true,\n\t\"KH-12\": true, \"KH-13\": true, \"KH-14\": true, \"KH-15\": true, \"KH-16\": true,\n\t\"KH-17\": true, \"KH-18\": true, \"KH-19\": true, \"KH-2\": true, \"KH-20\": true,\n\t\"KH-21\": true, \"KH-22\": true, \"KH-23\": true, \"KH-24\": true, \"KH-3\": true,\n\t\"KH-4\": true, \"KH-5\": true, \"KH-6\": true, \"KH-7\": true, \"KH-8\": true,\n\t\"KH-9\": true, \"KI-G\": true, \"KI-L\": true, \"KI-P\": true, \"KM-A\": true,\n\t\"KM-G\": true, \"KM-M\": true, \"KN-01\": true, \"KN-02\": true, \"KN-03\": true,\n\t\"KN-04\": true, \"KN-05\": true, \"KN-06\": true, \"KN-07\": true, \"KN-08\": true,\n\t\"KN-09\": true, \"KN-10\": true, \"KN-11\": true, \"KN-12\": true, \"KN-13\": true,\n\t\"KN-15\": true, \"KN-K\": true, \"KN-N\": true, \"KP-01\": true, \"KP-02\": true,\n\t\"KP-03\": true, \"KP-04\": true, \"KP-05\": true, \"KP-06\": true, \"KP-07\": true,\n\t\"KP-08\": true, \"KP-09\": true, \"KP-10\": true, \"KP-13\": true, \"KR-11\": true,\n\t\"KR-26\": true, \"KR-27\": true, \"KR-28\": true, \"KR-29\": true, \"KR-30\": true,\n\t\"KR-31\": true, \"KR-41\": true, \"KR-42\": true, \"KR-43\": true, \"KR-44\": true,\n\t\"KR-45\": true, \"KR-46\": true, \"KR-47\": true, \"KR-48\": true, \"KR-49\": true,\n\t\"KW-AH\": true, \"KW-FA\": true, \"KW-HA\": true, \"KW-JA\": true, \"KW-KU\": true,\n\t\"KW-MU\": true, \"KZ-10\": true, \"KZ-75\": true, \"KZ-19\": true, \"KZ-11\": true,\n\t\"KZ-15\": true, \"KZ-71\": true, \"KZ-23\": true, \"KZ-27\": true, \"KZ-47\": true,\n\t\"KZ-55\": true, \"KZ-35\": true, \"KZ-39\": true, \"KZ-43\": true, \"KZ-63\": true,\n\t\"KZ-79\": true, \"KZ-59\": true, \"KZ-61\": true, \"KZ-62\": true, \"KZ-31\": true,\n\t\"KZ-33\": true, \"LA-AT\": true, \"LA-BK\": true, \"LA-BL\": true,\n\t\"LA-CH\": true, \"LA-HO\": true, \"LA-KH\": true, \"LA-LM\": true, \"LA-LP\": true,\n\t\"LA-OU\": true, \"LA-PH\": true, \"LA-SL\": true, \"LA-SV\": true, \"LA-VI\": true,\n\t\"LA-VT\": true, \"LA-XA\": true, \"LA-XE\": true, \"LA-XI\": true, \"LA-XS\": true,\n\t\"LB-AK\": true, \"LB-AS\": true, \"LB-BA\": true, \"LB-BH\": true, \"LB-BI\": true,\n\t\"LB-JA\": true, \"LB-JL\": true, \"LB-NA\": true, \"LC-01\": true, \"LC-02\": true,\n\t\"LC-03\": true, \"LC-05\": true, \"LC-06\": true, \"LC-07\": true, \"LC-08\": true,\n\t\"LC-10\": true, \"LC-11\": true, \"LI-01\": true, \"LI-02\": true,\n\t\"LI-03\": true, \"LI-04\": true, \"LI-05\": true, \"LI-06\": true, \"LI-07\": true,\n\t\"LI-08\": true, \"LI-09\": true, \"LI-10\": true, \"LI-11\": true, \"LK-1\": true,\n\t\"LK-11\": true, \"LK-12\": true, \"LK-13\": true, \"LK-2\": true, \"LK-21\": true,\n\t\"LK-22\": true, \"LK-23\": true, \"LK-3\": true, \"LK-31\": true, \"LK-32\": true,\n\t\"LK-33\": true, \"LK-4\": true, \"LK-41\": true, \"LK-42\": true, \"LK-43\": true,\n\t\"LK-44\": true, \"LK-45\": true, \"LK-5\": true, \"LK-51\": true, \"LK-52\": true,\n\t\"LK-53\": true, \"LK-6\": true, \"LK-61\": true, \"LK-62\": true, \"LK-7\": true,\n\t\"LK-71\": true, \"LK-72\": true, \"LK-8\": true, \"LK-81\": true, \"LK-82\": true,\n\t\"LK-9\": true, \"LK-91\": true, \"LK-92\": true, \"LR-BG\": true, \"LR-BM\": true,\n\t\"LR-CM\": true, \"LR-GB\": true, \"LR-GG\": true, \"LR-GK\": true, \"LR-LO\": true,\n\t\"LR-MG\": true, \"LR-MO\": true, \"LR-MY\": true, \"LR-NI\": true, \"LR-RI\": true,\n\t\"LR-SI\": true, \"LS-A\": true, \"LS-B\": true, \"LS-C\": true, \"LS-D\": true,\n\t\"LS-E\": true, \"LS-F\": true, \"LS-G\": true, \"LS-H\": true, \"LS-J\": true,\n\t\"LS-K\": true, \"LT-AL\": true, \"LT-KL\": true, \"LT-KU\": true, \"LT-MR\": true,\n\t\"LT-PN\": true, \"LT-SA\": true, \"LT-TA\": true, \"LT-TE\": true, \"LT-UT\": true,\n\t\"LT-VL\": true, \"LU-CA\": true, \"LU-CL\": true, \"LU-DI\": true, \"LU-EC\": true,\n\t\"LU-ES\": true, \"LU-GR\": true, \"LU-LU\": true, \"LU-ME\": true, \"LU-RD\": true,\n\t\"LU-RM\": true, \"LU-VD\": true, \"LU-WI\": true, \"LU-D\": true, \"LU-G\": true, \"LU-L\": true,\n\t\"LV-001\": true, \"LV-111\": true, \"LV-112\": true, \"LV-113\": true,\n\t\"LV-002\": true, \"LV-003\": true, \"LV-004\": true, \"LV-005\": true, \"LV-006\": true,\n\t\"LV-007\": true, \"LV-008\": true, \"LV-009\": true, \"LV-010\": true, \"LV-011\": true,\n\t\"LV-012\": true, \"LV-013\": true, \"LV-014\": true, \"LV-015\": true, \"LV-016\": true,\n\t\"LV-017\": true, \"LV-018\": true, \"LV-019\": true, \"LV-020\": true, \"LV-021\": true,\n\t\"LV-022\": true, \"LV-023\": true, \"LV-024\": true, \"LV-025\": true, \"LV-026\": true,\n\t\"LV-027\": true, \"LV-028\": true, \"LV-029\": true, \"LV-030\": true, \"LV-031\": true,\n\t\"LV-032\": true, \"LV-033\": true, \"LV-034\": true, \"LV-035\": true, \"LV-036\": true,\n\t\"LV-037\": true, \"LV-038\": true, \"LV-039\": true, \"LV-040\": true, \"LV-041\": true,\n\t\"LV-042\": true, \"LV-043\": true, \"LV-044\": true, \"LV-045\": true, \"LV-046\": true,\n\t\"LV-047\": true, \"LV-048\": true, \"LV-049\": true, \"LV-050\": true, \"LV-051\": true,\n\t\"LV-052\": true, \"LV-053\": true, \"LV-054\": true, \"LV-055\": true, \"LV-056\": true,\n\t\"LV-057\": true, \"LV-058\": true, \"LV-059\": true, \"LV-060\": true, \"LV-061\": true,\n\t\"LV-062\": true, \"LV-063\": true, \"LV-064\": true, \"LV-065\": true, \"LV-066\": true,\n\t\"LV-067\": true, \"LV-068\": true, \"LV-069\": true, \"LV-070\": true, \"LV-071\": true,\n\t\"LV-072\": true, \"LV-073\": true, \"LV-074\": true, \"LV-075\": true, \"LV-076\": true,\n\t\"LV-077\": true, \"LV-078\": true, \"LV-079\": true, \"LV-080\": true, \"LV-081\": true,\n\t\"LV-082\": true, \"LV-083\": true, \"LV-084\": true, \"LV-085\": true, \"LV-086\": true,\n\t\"LV-087\": true, \"LV-088\": true, \"LV-089\": true, \"LV-090\": true, \"LV-091\": true,\n\t\"LV-092\": true, \"LV-093\": true, \"LV-094\": true, \"LV-095\": true, \"LV-096\": true,\n\t\"LV-097\": true, \"LV-098\": true, \"LV-099\": true, \"LV-100\": true, \"LV-101\": true,\n\t\"LV-102\": true, \"LV-103\": true, \"LV-104\": true, \"LV-105\": true, \"LV-106\": true,\n\t\"LV-107\": true, \"LV-108\": true, \"LV-109\": true, \"LV-110\": true, \"LV-DGV\": true,\n\t\"LV-JEL\": true, \"LV-JKB\": true, \"LV-JUR\": true, \"LV-LPX\": true, \"LV-REZ\": true,\n\t\"LV-RIX\": true, \"LV-VEN\": true, \"LV-VMR\": true, \"LY-BA\": true, \"LY-BU\": true,\n\t\"LY-DR\": true, \"LY-GT\": true, \"LY-JA\": true, \"LY-JB\": true, \"LY-JG\": true,\n\t\"LY-JI\": true, \"LY-JU\": true, \"LY-KF\": true, \"LY-MB\": true, \"LY-MI\": true,\n\t\"LY-MJ\": true, \"LY-MQ\": true, \"LY-NL\": true, \"LY-NQ\": true, \"LY-SB\": true,\n\t\"LY-SR\": true, \"LY-TB\": true, \"LY-WA\": true, \"LY-WD\": true, \"LY-WS\": true,\n\t\"LY-ZA\": true, \"MA-01\": true, \"MA-02\": true, \"MA-03\": true, \"MA-04\": true,\n\t\"MA-05\": true, \"MA-06\": true, \"MA-07\": true, \"MA-08\": true, \"MA-09\": true,\n\t\"MA-10\": true, \"MA-11\": true, \"MA-12\": true, \"MA-13\": true, \"MA-14\": true,\n\t\"MA-15\": true, \"MA-16\": true, \"MA-AGD\": true, \"MA-AOU\": true, \"MA-ASZ\": true,\n\t\"MA-AZI\": true, \"MA-BEM\": true, \"MA-BER\": true, \"MA-BES\": true, \"MA-BOD\": true,\n\t\"MA-BOM\": true, \"MA-CAS\": true, \"MA-CHE\": true, \"MA-CHI\": true, \"MA-CHT\": true,\n\t\"MA-ERR\": true, \"MA-ESI\": true, \"MA-ESM\": true, \"MA-FAH\": true, \"MA-FES\": true,\n\t\"MA-FIG\": true, \"MA-GUE\": true, \"MA-HAJ\": true, \"MA-HAO\": true, \"MA-HOC\": true,\n\t\"MA-IFR\": true, \"MA-INE\": true, \"MA-JDI\": true, \"MA-JRA\": true, \"MA-KEN\": true,\n\t\"MA-KES\": true, \"MA-KHE\": true, \"MA-KHN\": true, \"MA-KHO\": true, \"MA-LAA\": true,\n\t\"MA-LAR\": true, \"MA-MED\": true, \"MA-MEK\": true, \"MA-MMD\": true, \"MA-MMN\": true,\n\t\"MA-MOH\": true, \"MA-MOU\": true, \"MA-NAD\": true, \"MA-NOU\": true, \"MA-OUA\": true,\n\t\"MA-OUD\": true, \"MA-OUJ\": true, \"MA-RAB\": true, \"MA-SAF\": true, \"MA-SAL\": true,\n\t\"MA-SEF\": true, \"MA-SET\": true, \"MA-SIK\": true, \"MA-SKH\": true, \"MA-SYB\": true,\n\t\"MA-TAI\": true, \"MA-TAO\": true, \"MA-TAR\": true, \"MA-TAT\": true, \"MA-TAZ\": true,\n\t\"MA-TET\": true, \"MA-TIZ\": true, \"MA-TNG\": true, \"MA-TNT\": true, \"MA-ZAG\": true,\n\t\"MC-CL\": true, \"MC-CO\": true, \"MC-FO\": true, \"MC-GA\": true, \"MC-JE\": true,\n\t\"MC-LA\": true, \"MC-MA\": true, \"MC-MC\": true, \"MC-MG\": true, \"MC-MO\": true,\n\t\"MC-MU\": true, \"MC-PH\": true, \"MC-SD\": true, \"MC-SO\": true, \"MC-SP\": true,\n\t\"MC-SR\": true, \"MC-VR\": true, \"MD-AN\": true, \"MD-BA\": true, \"MD-BD\": true,\n\t\"MD-BR\": true, \"MD-BS\": true, \"MD-CA\": true, \"MD-CL\": true, \"MD-CM\": true,\n\t\"MD-CR\": true, \"MD-CS\": true, \"MD-CT\": true, \"MD-CU\": true, \"MD-DO\": true,\n\t\"MD-DR\": true, \"MD-DU\": true, \"MD-ED\": true, \"MD-FA\": true, \"MD-FL\": true,\n\t\"MD-GA\": true, \"MD-GL\": true, \"MD-HI\": true, \"MD-IA\": true, \"MD-LE\": true,\n\t\"MD-NI\": true, \"MD-OC\": true, \"MD-OR\": true, \"MD-RE\": true, \"MD-RI\": true,\n\t\"MD-SD\": true, \"MD-SI\": true, \"MD-SN\": true, \"MD-SO\": true, \"MD-ST\": true,\n\t\"MD-SV\": true, \"MD-TA\": true, \"MD-TE\": true, \"MD-UN\": true, \"ME-01\": true,\n\t\"ME-02\": true, \"ME-03\": true, \"ME-04\": true, \"ME-05\": true, \"ME-06\": true,\n\t\"ME-07\": true, \"ME-08\": true, \"ME-09\": true, \"ME-10\": true, \"ME-11\": true,\n\t\"ME-12\": true, \"ME-13\": true, \"ME-14\": true, \"ME-15\": true, \"ME-16\": true,\n\t\"ME-17\": true, \"ME-18\": true, \"ME-19\": true, \"ME-20\": true, \"ME-21\": true, \"ME-24\": true,\n\t\"MG-A\": true, \"MG-D\": true, \"MG-F\": true, \"MG-M\": true, \"MG-T\": true,\n\t\"MG-U\": true, \"MH-ALK\": true, \"MH-ALL\": true, \"MH-ARN\": true, \"MH-AUR\": true,\n\t\"MH-EBO\": true, \"MH-ENI\": true, \"MH-JAB\": true, \"MH-JAL\": true, \"MH-KIL\": true,\n\t\"MH-KWA\": true, \"MH-L\": true, \"MH-LAE\": true, \"MH-LIB\": true, \"MH-LIK\": true,\n\t\"MH-MAJ\": true, \"MH-MAL\": true, \"MH-MEJ\": true, \"MH-MIL\": true, \"MH-NMK\": true,\n\t\"MH-NMU\": true, \"MH-RON\": true, \"MH-T\": true, \"MH-UJA\": true, \"MH-UTI\": true,\n\t\"MH-WTJ\": true, \"MH-WTN\": true, \"MK-101\": true, \"MK-102\": true, \"MK-103\": true,\n\t\"MK-104\": true, \"MK-105\": true,\n\t\"MK-106\": true, \"MK-107\": true, \"MK-108\": true, \"MK-109\": true, \"MK-201\": true,\n\t\"MK-202\": true, \"MK-205\": true, \"MK-206\": true, \"MK-207\": true, \"MK-208\": true,\n\t\"MK-209\": true, \"MK-210\": true, \"MK-211\": true, \"MK-301\": true, \"MK-303\": true,\n\t\"MK-307\": true, \"MK-308\": true, \"MK-310\": true, \"MK-311\": true, \"MK-312\": true,\n\t\"MK-401\": true, \"MK-402\": true, \"MK-403\": true, \"MK-404\": true, \"MK-405\": true,\n\t\"MK-406\": true, \"MK-408\": true, \"MK-409\": true, \"MK-410\": true, \"MK-501\": true,\n\t\"MK-502\": true, \"MK-503\": true, \"MK-505\": true, \"MK-506\": true, \"MK-507\": true,\n\t\"MK-508\": true, \"MK-509\": true, \"MK-601\": true, \"MK-602\": true, \"MK-604\": true,\n\t\"MK-605\": true, \"MK-606\": true, \"MK-607\": true, \"MK-608\": true, \"MK-609\": true,\n\t\"MK-701\": true, \"MK-702\": true, \"MK-703\": true, \"MK-704\": true, \"MK-705\": true,\n\t\"MK-803\": true, \"MK-804\": true, \"MK-806\": true, \"MK-807\": true, \"MK-809\": true,\n\t\"MK-810\": true, \"MK-811\": true, \"MK-812\": true, \"MK-813\": true, \"MK-814\": true,\n\t\"MK-816\": true, \"ML-1\": true, \"ML-2\": true, \"ML-3\": true, \"ML-4\": true,\n\t\"ML-5\": true, \"ML-6\": true, \"ML-7\": true, \"ML-8\": true, \"ML-BKO\": true,\n\t\"MM-01\": true, \"MM-02\": true, \"MM-03\": true, \"MM-04\": true, \"MM-05\": true,\n\t\"MM-06\": true, \"MM-07\": true, \"MM-11\": true, \"MM-12\": true, \"MM-13\": true,\n\t\"MM-14\": true, \"MM-15\": true, \"MM-16\": true, \"MM-17\": true, \"MM-18\": true, \"MN-035\": true,\n\t\"MN-037\": true, \"MN-039\": true, \"MN-041\": true, \"MN-043\": true, \"MN-046\": true,\n\t\"MN-047\": true, \"MN-049\": true, \"MN-051\": true, \"MN-053\": true, \"MN-055\": true,\n\t\"MN-057\": true, \"MN-059\": true, \"MN-061\": true, \"MN-063\": true, \"MN-064\": true,\n\t\"MN-065\": true, \"MN-067\": true, \"MN-069\": true, \"MN-071\": true, \"MN-073\": true,\n\t\"MN-1\": true, \"MR-01\": true, \"MR-02\": true, \"MR-03\": true, \"MR-04\": true,\n\t\"MR-05\": true, \"MR-06\": true, \"MR-07\": true, \"MR-08\": true, \"MR-09\": true,\n\t\"MR-10\": true, \"MR-11\": true, \"MR-12\": true, \"MR-13\": true, \"MR-NKC\": true, \"MT-01\": true,\n\t\"MT-02\": true, \"MT-03\": true, \"MT-04\": true, \"MT-05\": true, \"MT-06\": true,\n\t\"MT-07\": true, \"MT-08\": true, \"MT-09\": true, \"MT-10\": true, \"MT-11\": true,\n\t\"MT-12\": true, \"MT-13\": true, \"MT-14\": true, \"MT-15\": true, \"MT-16\": true,\n\t\"MT-17\": true, \"MT-18\": true, \"MT-19\": true, \"MT-20\": true, \"MT-21\": true,\n\t\"MT-22\": true, \"MT-23\": true, \"MT-24\": true, \"MT-25\": true, \"MT-26\": true,\n\t\"MT-27\": true, \"MT-28\": true, \"MT-29\": true, \"MT-30\": true, \"MT-31\": true,\n\t\"MT-32\": true, \"MT-33\": true, \"MT-34\": true, \"MT-35\": true, \"MT-36\": true,\n\t\"MT-37\": true, \"MT-38\": true, \"MT-39\": true, \"MT-40\": true, \"MT-41\": true,\n\t\"MT-42\": true, \"MT-43\": true, \"MT-44\": true, \"MT-45\": true, \"MT-46\": true,\n\t\"MT-47\": true, \"MT-48\": true, \"MT-49\": true, \"MT-50\": true, \"MT-51\": true,\n\t\"MT-52\": true, \"MT-53\": true, \"MT-54\": true, \"MT-55\": true, \"MT-56\": true,\n\t\"MT-57\": true, \"MT-58\": true, \"MT-59\": true, \"MT-60\": true, \"MT-61\": true,\n\t\"MT-62\": true, \"MT-63\": true, \"MT-64\": true, \"MT-65\": true, \"MT-66\": true,\n\t\"MT-67\": true, \"MT-68\": true, \"MU-AG\": true, \"MU-BL\": true, \"MU-BR\": true,\n\t\"MU-CC\": true, \"MU-CU\": true, \"MU-FL\": true, \"MU-GP\": true, \"MU-MO\": true,\n\t\"MU-PA\": true, \"MU-PL\": true, \"MU-PU\": true, \"MU-PW\": true, \"MU-QB\": true,\n\t\"MU-RO\": true, \"MU-RP\": true, \"MU-RR\": true, \"MU-SA\": true, \"MU-VP\": true, \"MV-00\": true,\n\t\"MV-01\": true, \"MV-02\": true, \"MV-03\": true, \"MV-04\": true, \"MV-05\": true,\n\t\"MV-07\": true, \"MV-08\": true, \"MV-12\": true, \"MV-13\": true, \"MV-14\": true,\n\t\"MV-17\": true, \"MV-20\": true, \"MV-23\": true, \"MV-24\": true, \"MV-25\": true,\n\t\"MV-26\": true, \"MV-27\": true, \"MV-28\": true, \"MV-29\": true, \"MV-CE\": true,\n\t\"MV-MLE\": true, \"MV-NC\": true, \"MV-NO\": true, \"MV-SC\": true, \"MV-SU\": true,\n\t\"MV-UN\": true, \"MV-US\": true, \"MW-BA\": true, \"MW-BL\": true, \"MW-C\": true,\n\t\"MW-CK\": true, \"MW-CR\": true, \"MW-CT\": true, \"MW-DE\": true, \"MW-DO\": true,\n\t\"MW-KR\": true, \"MW-KS\": true, \"MW-LI\": true, \"MW-LK\": true, \"MW-MC\": true,\n\t\"MW-MG\": true, \"MW-MH\": true, \"MW-MU\": true, \"MW-MW\": true, \"MW-MZ\": true,\n\t\"MW-N\": true, \"MW-NB\": true, \"MW-NE\": true, \"MW-NI\": true, \"MW-NK\": true,\n\t\"MW-NS\": true, \"MW-NU\": true, \"MW-PH\": true, \"MW-RU\": true, \"MW-S\": true,\n\t\"MW-SA\": true, \"MW-TH\": true, \"MW-ZO\": true, \"MX-AGU\": true, \"MX-BCN\": true,\n\t\"MX-BCS\": true, \"MX-CAM\": true, \"MX-CHH\": true, \"MX-CHP\": true, \"MX-COA\": true,\n\t\"MX-COL\": true, \"MX-CMX\": true, \"MX-DIF\": true, \"MX-DUR\": true, \"MX-GRO\": true, \"MX-GUA\": true,\n\t\"MX-HID\": true, \"MX-JAL\": true, \"MX-MEX\": true, \"MX-MIC\": true, \"MX-MOR\": true,\n\t\"MX-NAY\": true, \"MX-NLE\": true, \"MX-OAX\": true, \"MX-PUE\": true, \"MX-QUE\": true,\n\t\"MX-ROO\": true, \"MX-SIN\": true, \"MX-SLP\": true, \"MX-SON\": true, \"MX-TAB\": true,\n\t\"MX-TAM\": true, \"MX-TLA\": true, \"MX-VER\": true, \"MX-YUC\": true, \"MX-ZAC\": true,\n\t\"MY-01\": true, \"MY-02\": true, \"MY-03\": true, \"MY-04\": true, \"MY-05\": true,\n\t\"MY-06\": true, \"MY-07\": true, \"MY-08\": true, \"MY-09\": true, \"MY-10\": true,\n\t\"MY-11\": true, \"MY-12\": true, \"MY-13\": true, \"MY-14\": true, \"MY-15\": true,\n\t\"MY-16\": true, \"MZ-A\": true, \"MZ-B\": true, \"MZ-G\": true, \"MZ-I\": true,\n\t\"MZ-L\": true, \"MZ-MPM\": true, \"MZ-N\": true, \"MZ-P\": true, \"MZ-Q\": true,\n\t\"MZ-S\": true, \"MZ-T\": true, \"NA-CA\": true, \"NA-ER\": true, \"NA-HA\": true,\n\t\"NA-KA\": true, \"NA-KE\": true, \"NA-KH\": true, \"NA-KU\": true, \"NA-KW\": true, \"NA-OD\": true, \"NA-OH\": true,\n\t\"NA-OK\": true, \"NA-ON\": true, \"NA-OS\": true, \"NA-OT\": true, \"NA-OW\": true,\n\t\"NE-1\": true, \"NE-2\": true, \"NE-3\": true, \"NE-4\": true, \"NE-5\": true,\n\t\"NE-6\": true, \"NE-7\": true, \"NE-8\": true, \"NG-AB\": true, \"NG-AD\": true,\n\t\"NG-AK\": true, \"NG-AN\": true, \"NG-BA\": true, \"NG-BE\": true, \"NG-BO\": true,\n\t\"NG-BY\": true, \"NG-CR\": true, \"NG-DE\": true, \"NG-EB\": true, \"NG-ED\": true,\n\t\"NG-EK\": true, \"NG-EN\": true, \"NG-FC\": true, \"NG-GO\": true, \"NG-IM\": true,\n\t\"NG-JI\": true, \"NG-KD\": true, \"NG-KE\": true, \"NG-KN\": true, \"NG-KO\": true,\n\t\"NG-KT\": true, \"NG-KW\": true, \"NG-LA\": true, \"NG-NA\": true, \"NG-NI\": true,\n\t\"NG-OG\": true, \"NG-ON\": true, \"NG-OS\": true, \"NG-OY\": true, \"NG-PL\": true,\n\t\"NG-RI\": true, \"NG-SO\": true, \"NG-TA\": true, \"NG-YO\": true, \"NG-ZA\": true,\n\t\"NI-AN\": true, \"NI-AS\": true, \"NI-BO\": true, \"NI-CA\": true, \"NI-CI\": true,\n\t\"NI-CO\": true, \"NI-ES\": true, \"NI-GR\": true, \"NI-JI\": true, \"NI-LE\": true,\n\t\"NI-MD\": true, \"NI-MN\": true, \"NI-MS\": true, \"NI-MT\": true, \"NI-NS\": true,\n\t\"NI-RI\": true, \"NI-SJ\": true, \"NL-AW\": true, \"NL-BQ1\": true, \"NL-BQ2\": true,\n\t\"NL-BQ3\": true, \"NL-CW\": true, \"NL-DR\": true, \"NL-FL\": true, \"NL-FR\": true,\n\t\"NL-GE\": true, \"NL-GR\": true, \"NL-LI\": true, \"NL-NB\": true, \"NL-NH\": true,\n\t\"NL-OV\": true, \"NL-SX\": true, \"NL-UT\": true, \"NL-ZE\": true, \"NL-ZH\": true,\n\t\"NO-03\": true, \"NO-11\": true, \"NO-15\": true, \"NO-16\": true, \"NO-17\": true,\n\t\"NO-18\": true, \"NO-21\": true, \"NO-30\": true, \"NO-34\": true, \"NO-38\": true,\n\t\"NO-42\": true, \"NO-46\": true, \"NO-50\": true, \"NO-54\": true,\n\t\"NO-22\": true, \"NP-1\": true, \"NP-2\": true, \"NP-3\": true, \"NP-4\": true,\n\t\"NP-5\": true, \"NP-BA\": true, \"NP-BH\": true, \"NP-DH\": true, \"NP-GA\": true,\n\t\"NP-JA\": true, \"NP-KA\": true, \"NP-KO\": true, \"NP-LU\": true, \"NP-MA\": true,\n\t\"NP-ME\": true, \"NP-NA\": true, \"NP-RA\": true, \"NP-SA\": true, \"NP-SE\": true,\n\t\"NR-01\": true, \"NR-02\": true, \"NR-03\": true, \"NR-04\": true, \"NR-05\": true,\n\t\"NR-06\": true, \"NR-07\": true, \"NR-08\": true, \"NR-09\": true, \"NR-10\": true,\n\t\"NR-11\": true, \"NR-12\": true, \"NR-13\": true, \"NR-14\": true, \"NZ-AUK\": true,\n\t\"NZ-BOP\": true, \"NZ-CAN\": true, \"NZ-CIT\": true, \"NZ-GIS\": true, \"NZ-HKB\": true,\n\t\"NZ-MBH\": true, \"NZ-MWT\": true, \"NZ-N\": true, \"NZ-NSN\": true, \"NZ-NTL\": true,\n\t\"NZ-OTA\": true, \"NZ-S\": true, \"NZ-STL\": true, \"NZ-TAS\": true, \"NZ-TKI\": true,\n\t\"NZ-WGN\": true, \"NZ-WKO\": true, \"NZ-WTC\": true, \"OM-BA\": true, \"OM-BS\": true, \"OM-BU\": true, \"OM-BJ\": true,\n\t\"OM-DA\": true, \"OM-MA\": true, \"OM-MU\": true, \"OM-SH\": true, \"OM-SJ\": true, \"OM-SS\": true, \"OM-WU\": true,\n\t\"OM-ZA\": true, \"OM-ZU\": true, \"PA-1\": true, \"PA-2\": true, \"PA-3\": true,\n\t\"PA-4\": true, \"PA-5\": true, \"PA-6\": true, \"PA-7\": true, \"PA-8\": true,\n\t\"PA-9\": true, \"PA-EM\": true, \"PA-KY\": true, \"PA-NB\": true, \"PE-AMA\": true,\n\t\"PE-ANC\": true, \"PE-APU\": true, \"PE-ARE\": true, \"PE-AYA\": true, \"PE-CAJ\": true,\n\t\"PE-CAL\": true, \"PE-CUS\": true, \"PE-HUC\": true, \"PE-HUV\": true, \"PE-ICA\": true,\n\t\"PE-JUN\": true, \"PE-LAL\": true, \"PE-LAM\": true, \"PE-LIM\": true, \"PE-LMA\": true,\n\t\"PE-LOR\": true, \"PE-MDD\": true, \"PE-MOQ\": true, \"PE-PAS\": true, \"PE-PIU\": true,\n\t\"PE-PUN\": true, \"PE-SAM\": true, \"PE-TAC\": true, \"PE-TUM\": true, \"PE-UCA\": true,\n\t\"PG-CPK\": true, \"PG-CPM\": true, \"PG-EBR\": true, \"PG-EHG\": true, \"PG-EPW\": true,\n\t\"PG-ESW\": true, \"PG-GPK\": true, \"PG-MBA\": true, \"PG-MPL\": true, \"PG-MPM\": true,\n\t\"PG-MRL\": true, \"PG-NCD\": true, \"PG-NIK\": true, \"PG-NPP\": true, \"PG-NSB\": true,\n\t\"PG-SAN\": true, \"PG-SHM\": true, \"PG-WBK\": true, \"PG-WHM\": true, \"PG-WPD\": true,\n\t\"PH-00\": true, \"PH-01\": true, \"PH-02\": true, \"PH-03\": true, \"PH-05\": true,\n\t\"PH-06\": true, \"PH-07\": true, \"PH-08\": true, \"PH-09\": true, \"PH-10\": true,\n\t\"PH-11\": true, \"PH-12\": true, \"PH-13\": true, \"PH-14\": true, \"PH-15\": true,\n\t\"PH-40\": true, \"PH-41\": true, \"PH-ABR\": true, \"PH-AGN\": true, \"PH-AGS\": true,\n\t\"PH-AKL\": true, \"PH-ALB\": true, \"PH-ANT\": true, \"PH-APA\": true, \"PH-AUR\": true,\n\t\"PH-BAN\": true, \"PH-BAS\": true, \"PH-BEN\": true, \"PH-BIL\": true, \"PH-BOH\": true,\n\t\"PH-BTG\": true, \"PH-BTN\": true, \"PH-BUK\": true, \"PH-BUL\": true, \"PH-CAG\": true,\n\t\"PH-CAM\": true, \"PH-CAN\": true, \"PH-CAP\": true, \"PH-CAS\": true, \"PH-CAT\": true,\n\t\"PH-CAV\": true, \"PH-CEB\": true, \"PH-COM\": true, \"PH-DAO\": true, \"PH-DAS\": true,\n\t\"PH-DAV\": true, \"PH-DIN\": true, \"PH-EAS\": true, \"PH-GUI\": true, \"PH-IFU\": true,\n\t\"PH-ILI\": true, \"PH-ILN\": true, \"PH-ILS\": true, \"PH-ISA\": true, \"PH-KAL\": true,\n\t\"PH-LAG\": true, \"PH-LAN\": true, \"PH-LAS\": true, \"PH-LEY\": true, \"PH-LUN\": true,\n\t\"PH-MAD\": true, \"PH-MAG\": true, \"PH-MAS\": true, \"PH-MDC\": true, \"PH-MDR\": true,\n\t\"PH-MOU\": true, \"PH-MSC\": true, \"PH-MSR\": true, \"PH-NCO\": true, \"PH-NEC\": true,\n\t\"PH-NER\": true, \"PH-NSA\": true, \"PH-NUE\": true, \"PH-NUV\": true, \"PH-PAM\": true,\n\t\"PH-PAN\": true, \"PH-PLW\": true, \"PH-QUE\": true, \"PH-QUI\": true, \"PH-RIZ\": true,\n\t\"PH-ROM\": true, \"PH-SAR\": true, \"PH-SCO\": true, \"PH-SIG\": true, \"PH-SLE\": true,\n\t\"PH-SLU\": true, \"PH-SOR\": true, \"PH-SUK\": true, \"PH-SUN\": true, \"PH-SUR\": true,\n\t\"PH-TAR\": true, \"PH-TAW\": true, \"PH-WSA\": true, \"PH-ZAN\": true, \"PH-ZAS\": true,\n\t\"PH-ZMB\": true, \"PH-ZSI\": true, \"PK-BA\": true, \"PK-GB\": true, \"PK-IS\": true,\n\t\"PK-JK\": true, \"PK-KP\": true, \"PK-PB\": true, \"PK-SD\": true, \"PK-TA\": true,\n\t\"PL-02\": true, \"PL-04\": true, \"PL-06\": true, \"PL-08\": true, \"PL-10\": true,\n\t\"PL-12\": true, \"PL-14\": true, \"PL-16\": true, \"PL-18\": true, \"PL-20\": true,\n\t\"PL-22\": true, \"PL-24\": true, \"PL-26\": true, \"PL-28\": true, \"PL-30\": true, \"PL-32\": true,\n\t\"PS-BTH\": true, \"PS-DEB\": true, \"PS-GZA\": true, \"PS-HBN\": true,\n\t\"PS-JEM\": true, \"PS-JEN\": true, \"PS-JRH\": true, \"PS-KYS\": true, \"PS-NBS\": true,\n\t\"PS-NGZ\": true, \"PS-QQA\": true, \"PS-RBH\": true, \"PS-RFH\": true, \"PS-SLT\": true,\n\t\"PS-TBS\": true, \"PS-TKM\": true, \"PT-01\": true, \"PT-02\": true, \"PT-03\": true,\n\t\"PT-04\": true, \"PT-05\": true, \"PT-06\": true, \"PT-07\": true, \"PT-08\": true,\n\t\"PT-09\": true, \"PT-10\": true, \"PT-11\": true, \"PT-12\": true, \"PT-13\": true,\n\t\"PT-14\": true, \"PT-15\": true, \"PT-16\": true, \"PT-17\": true, \"PT-18\": true,\n\t\"PT-20\": true, \"PT-30\": true, \"PW-002\": true, \"PW-004\": true, \"PW-010\": true,\n\t\"PW-050\": true, \"PW-100\": true, \"PW-150\": true, \"PW-212\": true, \"PW-214\": true,\n\t\"PW-218\": true, \"PW-222\": true, \"PW-224\": true, \"PW-226\": true, \"PW-227\": true,\n\t\"PW-228\": true, \"PW-350\": true, \"PW-370\": true, \"PY-1\": true, \"PY-10\": true,\n\t\"PY-11\": true, \"PY-12\": true, \"PY-13\": true, \"PY-14\": true, \"PY-15\": true,\n\t\"PY-16\": true, \"PY-19\": true, \"PY-2\": true, \"PY-3\": true, \"PY-4\": true,\n\t\"PY-5\": true, \"PY-6\": true, \"PY-7\": true, \"PY-8\": true, \"PY-9\": true,\n\t\"PY-ASU\": true, \"QA-DA\": true, \"QA-KH\": true, \"QA-MS\": true, \"QA-RA\": true,\n\t\"QA-US\": true, \"QA-WA\": true, \"QA-ZA\": true, \"RO-AB\": true, \"RO-AG\": true,\n\t\"RO-AR\": true, \"RO-B\": true, \"RO-BC\": true, \"RO-BH\": true, \"RO-BN\": true,\n\t\"RO-BR\": true, \"RO-BT\": true, \"RO-BV\": true, \"RO-BZ\": true, \"RO-CJ\": true,\n\t\"RO-CL\": true, \"RO-CS\": true, \"RO-CT\": true, \"RO-CV\": true, \"RO-DB\": true,\n\t\"RO-DJ\": true, \"RO-GJ\": true, \"RO-GL\": true, \"RO-GR\": true, \"RO-HD\": true,\n\t\"RO-HR\": true, \"RO-IF\": true, \"RO-IL\": true, \"RO-IS\": true, \"RO-MH\": true,\n\t\"RO-MM\": true, \"RO-MS\": true, \"RO-NT\": true, \"RO-OT\": true, \"RO-PH\": true,\n\t\"RO-SB\": true, \"RO-SJ\": true, \"RO-SM\": true, \"RO-SV\": true, \"RO-TL\": true,\n\t\"RO-TM\": true, \"RO-TR\": true, \"RO-VL\": true, \"RO-VN\": true, \"RO-VS\": true,\n\t\"RS-00\": true, \"RS-01\": true, \"RS-02\": true, \"RS-03\": true, \"RS-04\": true,\n\t\"RS-05\": true, \"RS-06\": true, \"RS-07\": true, \"RS-08\": true, \"RS-09\": true,\n\t\"RS-10\": true, \"RS-11\": true, \"RS-12\": true, \"RS-13\": true, \"RS-14\": true,\n\t\"RS-15\": true, \"RS-16\": true, \"RS-17\": true, \"RS-18\": true, \"RS-19\": true,\n\t\"RS-20\": true, \"RS-21\": true, \"RS-22\": true, \"RS-23\": true, \"RS-24\": true,\n\t\"RS-25\": true, \"RS-26\": true, \"RS-27\": true, \"RS-28\": true, \"RS-29\": true,\n\t\"RS-KM\": true, \"RS-VO\": true, \"RU-AD\": true, \"RU-AL\": true, \"RU-ALT\": true,\n\t\"RU-AMU\": true, \"RU-ARK\": true, \"RU-AST\": true, \"RU-BA\": true, \"RU-BEL\": true,\n\t\"RU-BRY\": true, \"RU-BU\": true, \"RU-CE\": true, \"RU-CHE\": true, \"RU-CHU\": true,\n\t\"RU-CU\": true, \"RU-DA\": true, \"RU-IN\": true, \"RU-IRK\": true, \"RU-IVA\": true,\n\t\"RU-KAM\": true, \"RU-KB\": true, \"RU-KC\": true, \"RU-KDA\": true, \"RU-KEM\": true,\n\t\"RU-KGD\": true, \"RU-KGN\": true, \"RU-KHA\": true, \"RU-KHM\": true, \"RU-KIR\": true,\n\t\"RU-KK\": true, \"RU-KL\": true, \"RU-KLU\": true, \"RU-KO\": true, \"RU-KOS\": true,\n\t\"RU-KR\": true, \"RU-KRS\": true, \"RU-KYA\": true, \"RU-LEN\": true, \"RU-LIP\": true,\n\t\"RU-MAG\": true, \"RU-ME\": true, \"RU-MO\": true, \"RU-MOS\": true, \"RU-MOW\": true,\n\t\"RU-MUR\": true, \"RU-NEN\": true, \"RU-NGR\": true, \"RU-NIZ\": true, \"RU-NVS\": true,\n\t\"RU-OMS\": true, \"RU-ORE\": true, \"RU-ORL\": true, \"RU-PER\": true, \"RU-PNZ\": true,\n\t\"RU-PRI\": true, \"RU-PSK\": true, \"RU-ROS\": true, \"RU-RYA\": true, \"RU-SA\": true,\n\t\"RU-SAK\": true, \"RU-SAM\": true, \"RU-SAR\": true, \"RU-SE\": true, \"RU-SMO\": true,\n\t\"RU-SPE\": true, \"RU-STA\": true, \"RU-SVE\": true, \"RU-TA\": true, \"RU-TAM\": true,\n\t\"RU-TOM\": true, \"RU-TUL\": true, \"RU-TVE\": true, \"RU-TY\": true, \"RU-TYU\": true,\n\t\"RU-UD\": true, \"RU-ULY\": true, \"RU-VGG\": true, \"RU-VLA\": true, \"RU-VLG\": true,\n\t\"RU-VOR\": true, \"RU-YAN\": true, \"RU-YAR\": true, \"RU-YEV\": true, \"RU-ZAB\": true,\n\t\"RW-01\": true, \"RW-02\": true, \"RW-03\": true, \"RW-04\": true, \"RW-05\": true,\n\t\"SA-01\": true, \"SA-02\": true, \"SA-03\": true, \"SA-04\": true, \"SA-05\": true,\n\t\"SA-06\": true, \"SA-07\": true, \"SA-08\": true, \"SA-09\": true, \"SA-10\": true,\n\t\"SA-11\": true, \"SA-12\": true, \"SA-14\": true, \"SB-CE\": true, \"SB-CH\": true,\n\t\"SB-CT\": true, \"SB-GU\": true, \"SB-IS\": true, \"SB-MK\": true, \"SB-ML\": true,\n\t\"SB-RB\": true, \"SB-TE\": true, \"SB-WE\": true, \"SC-01\": true, \"SC-02\": true,\n\t\"SC-03\": true, \"SC-04\": true, \"SC-05\": true, \"SC-06\": true, \"SC-07\": true,\n\t\"SC-08\": true, \"SC-09\": true, \"SC-10\": true, \"SC-11\": true, \"SC-12\": true,\n\t\"SC-13\": true, \"SC-14\": true, \"SC-15\": true, \"SC-16\": true, \"SC-17\": true,\n\t\"SC-18\": true, \"SC-19\": true, \"SC-20\": true, \"SC-21\": true, \"SC-22\": true,\n\t\"SC-23\": true, \"SC-24\": true, \"SC-25\": true, \"SD-DC\": true, \"SD-DE\": true,\n\t\"SD-DN\": true, \"SD-DS\": true, \"SD-DW\": true, \"SD-GD\": true, \"SD-GK\": true, \"SD-GZ\": true,\n\t\"SD-KA\": true, \"SD-KH\": true, \"SD-KN\": true, \"SD-KS\": true, \"SD-NB\": true,\n\t\"SD-NO\": true, \"SD-NR\": true, \"SD-NW\": true, \"SD-RS\": true, \"SD-SI\": true,\n\t\"SE-AB\": true, \"SE-AC\": true, \"SE-BD\": true, \"SE-C\": true, \"SE-D\": true,\n\t\"SE-E\": true, \"SE-F\": true, \"SE-G\": true, \"SE-H\": true, \"SE-I\": true,\n\t\"SE-K\": true, \"SE-M\": true, \"SE-N\": true, \"SE-O\": true, \"SE-S\": true,\n\t\"SE-T\": true, \"SE-U\": true, \"SE-W\": true, \"SE-X\": true, \"SE-Y\": true,\n\t\"SE-Z\": true, \"SG-01\": true, \"SG-02\": true, \"SG-03\": true, \"SG-04\": true,\n\t\"SG-05\": true, \"SH-AC\": true, \"SH-HL\": true, \"SH-TA\": true, \"SI-001\": true,\n\t\"SI-002\": true, \"SI-003\": true, \"SI-004\": true, \"SI-005\": true, \"SI-006\": true,\n\t\"SI-007\": true, \"SI-008\": true, \"SI-009\": true, \"SI-010\": true, \"SI-011\": true,\n\t\"SI-012\": true, \"SI-013\": true, \"SI-014\": true, \"SI-015\": true, \"SI-016\": true,\n\t\"SI-017\": true, \"SI-018\": true, \"SI-019\": true, \"SI-020\": true, \"SI-021\": true,\n\t\"SI-022\": true, \"SI-023\": true, \"SI-024\": true, \"SI-025\": true, \"SI-026\": true,\n\t\"SI-027\": true, \"SI-028\": true, \"SI-029\": true, \"SI-030\": true, \"SI-031\": true,\n\t\"SI-032\": true, \"SI-033\": true, \"SI-034\": true, \"SI-035\": true, \"SI-036\": true,\n\t\"SI-037\": true, \"SI-038\": true, \"SI-039\": true, \"SI-040\": true, \"SI-041\": true,\n\t\"SI-042\": true, \"SI-043\": true, \"SI-044\": true, \"SI-045\": true, \"SI-046\": true,\n\t\"SI-047\": true, \"SI-048\": true, \"SI-049\": true, \"SI-050\": true, \"SI-051\": true,\n\t\"SI-052\": true, \"SI-053\": true, \"SI-054\": true, \"SI-055\": true, \"SI-056\": true,\n\t\"SI-057\": true, \"SI-058\": true, \"SI-059\": true, \"SI-060\": true, \"SI-061\": true,\n\t\"SI-062\": true, \"SI-063\": true, \"SI-064\": true, \"SI-065\": true, \"SI-066\": true,\n\t\"SI-067\": true, \"SI-068\": true, \"SI-069\": true, \"SI-070\": true, \"SI-071\": true,\n\t\"SI-072\": true, \"SI-073\": true, \"SI-074\": true, \"SI-075\": true, \"SI-076\": true,\n\t\"SI-077\": true, \"SI-078\": true, \"SI-079\": true, \"SI-080\": true, \"SI-081\": true,\n\t\"SI-082\": true, \"SI-083\": true, \"SI-084\": true, \"SI-085\": true, \"SI-086\": true,\n\t\"SI-087\": true, \"SI-088\": true, \"SI-089\": true, \"SI-090\": true, \"SI-091\": true,\n\t\"SI-092\": true, \"SI-093\": true, \"SI-094\": true, \"SI-095\": true, \"SI-096\": true,\n\t\"SI-097\": true, \"SI-098\": true, \"SI-099\": true, \"SI-100\": true, \"SI-101\": true,\n\t\"SI-102\": true, \"SI-103\": true, \"SI-104\": true, \"SI-105\": true, \"SI-106\": true,\n\t\"SI-107\": true, \"SI-108\": true, \"SI-109\": true, \"SI-110\": true, \"SI-111\": true,\n\t\"SI-112\": true, \"SI-113\": true, \"SI-114\": true, \"SI-115\": true, \"SI-116\": true,\n\t\"SI-117\": true, \"SI-118\": true, \"SI-119\": true, \"SI-120\": true, \"SI-121\": true,\n\t\"SI-122\": true, \"SI-123\": true, \"SI-124\": true, \"SI-125\": true, \"SI-126\": true,\n\t\"SI-127\": true, \"SI-128\": true, \"SI-129\": true, \"SI-130\": true, \"SI-131\": true,\n\t\"SI-132\": true, \"SI-133\": true, \"SI-134\": true, \"SI-135\": true, \"SI-136\": true,\n\t\"SI-137\": true, \"SI-138\": true, \"SI-139\": true, \"SI-140\": true, \"SI-141\": true,\n\t\"SI-142\": true, \"SI-143\": true, \"SI-144\": true, \"SI-146\": true, \"SI-147\": true,\n\t\"SI-148\": true, \"SI-149\": true, \"SI-150\": true, \"SI-151\": true, \"SI-152\": true,\n\t\"SI-153\": true, \"SI-154\": true, \"SI-155\": true, \"SI-156\": true, \"SI-157\": true,\n\t\"SI-158\": true, \"SI-159\": true, \"SI-160\": true, \"SI-161\": true, \"SI-162\": true,\n\t\"SI-163\": true, \"SI-164\": true, \"SI-165\": true, \"SI-166\": true, \"SI-167\": true,\n\t\"SI-168\": true, \"SI-169\": true, \"SI-170\": true, \"SI-171\": true, \"SI-172\": true,\n\t\"SI-173\": true, \"SI-174\": true, \"SI-175\": true, \"SI-176\": true, \"SI-177\": true,\n\t\"SI-178\": true, \"SI-179\": true, \"SI-180\": true, \"SI-181\": true, \"SI-182\": true,\n\t\"SI-183\": true, \"SI-184\": true, \"SI-185\": true, \"SI-186\": true, \"SI-187\": true,\n\t\"SI-188\": true, \"SI-189\": true, \"SI-190\": true, \"SI-191\": true, \"SI-192\": true,\n\t\"SI-193\": true, \"SI-194\": true, \"SI-195\": true, \"SI-196\": true, \"SI-197\": true,\n\t\"SI-198\": true, \"SI-199\": true, \"SI-200\": true, \"SI-201\": true, \"SI-202\": true,\n\t\"SI-203\": true, \"SI-204\": true, \"SI-205\": true, \"SI-206\": true, \"SI-207\": true,\n\t\"SI-208\": true, \"SI-209\": true, \"SI-210\": true, \"SI-211\": true, \"SI-212\": true, \"SI-213\": true, \"SK-BC\": true,\n\t\"SK-BL\": true, \"SK-KI\": true, \"SK-NI\": true, \"SK-PV\": true, \"SK-TA\": true,\n\t\"SK-TC\": true, \"SK-ZI\": true, \"SL-E\": true, \"SL-N\": true, \"SL-S\": true,\n\t\"SL-W\": true, \"SM-01\": true, \"SM-02\": true, \"SM-03\": true, \"SM-04\": true,\n\t\"SM-05\": true, \"SM-06\": true, \"SM-07\": true, \"SM-08\": true, \"SM-09\": true,\n\t\"SN-DB\": true, \"SN-DK\": true, \"SN-FK\": true, \"SN-KA\": true, \"SN-KD\": true,\n\t\"SN-KE\": true, \"SN-KL\": true, \"SN-LG\": true, \"SN-MT\": true, \"SN-SE\": true,\n\t\"SN-SL\": true, \"SN-TC\": true, \"SN-TH\": true, \"SN-ZG\": true, \"SO-AW\": true,\n\t\"SO-BK\": true, \"SO-BN\": true, \"SO-BR\": true, \"SO-BY\": true, \"SO-GA\": true,\n\t\"SO-GE\": true, \"SO-HI\": true, \"SO-JD\": true, \"SO-JH\": true, \"SO-MU\": true,\n\t\"SO-NU\": true, \"SO-SA\": true, \"SO-SD\": true, \"SO-SH\": true, \"SO-SO\": true,\n\t\"SO-TO\": true, \"SO-WO\": true, \"SR-BR\": true, \"SR-CM\": true, \"SR-CR\": true,\n\t\"SR-MA\": true, \"SR-NI\": true, \"SR-PM\": true, \"SR-PR\": true, \"SR-SA\": true,\n\t\"SR-SI\": true, \"SR-WA\": true, \"SS-BN\": true, \"SS-BW\": true, \"SS-EC\": true,\n\t\"SS-EE8\": true, \"SS-EE\": true, \"SS-EW\": true, \"SS-JG\": true, \"SS-LK\": true, \"SS-NU\": true,\n\t\"SS-UY\": true, \"SS-WR\": true, \"ST-01\": true, \"ST-P\": true, \"ST-S\": true, \"SV-AH\": true,\n\t\"SV-CA\": true, \"SV-CH\": true, \"SV-CU\": true, \"SV-LI\": true, \"SV-MO\": true,\n\t\"SV-PA\": true, \"SV-SA\": true, \"SV-SM\": true, \"SV-SO\": true, \"SV-SS\": true,\n\t\"SV-SV\": true, \"SV-UN\": true, \"SV-US\": true, \"SY-DI\": true, \"SY-DR\": true,\n\t\"SY-DY\": true, \"SY-HA\": true, \"SY-HI\": true, \"SY-HL\": true, \"SY-HM\": true,\n\t\"SY-ID\": true, \"SY-LA\": true, \"SY-QU\": true, \"SY-RA\": true, \"SY-RD\": true,\n\t\"SY-SU\": true, \"SY-TA\": true, \"SZ-HH\": true, \"SZ-LU\": true, \"SZ-MA\": true,\n\t\"SZ-SH\": true, \"TD-BA\": true, \"TD-BG\": true, \"TD-BO\": true, \"TD-CB\": true,\n\t\"TD-EN\": true, \"TD-GR\": true, \"TD-HL\": true, \"TD-KA\": true, \"TD-LC\": true,\n\t\"TD-LO\": true, \"TD-LR\": true, \"TD-MA\": true, \"TD-MC\": true, \"TD-ME\": true,\n\t\"TD-MO\": true, \"TD-ND\": true, \"TD-OD\": true, \"TD-SA\": true, \"TD-SI\": true,\n\t\"TD-TA\": true, \"TD-TI\": true, \"TD-WF\": true, \"TG-C\": true, \"TG-K\": true,\n\t\"TG-M\": true, \"TG-P\": true, \"TG-S\": true, \"TH-10\": true, \"TH-11\": true,\n\t\"TH-12\": true, \"TH-13\": true, \"TH-14\": true, \"TH-15\": true, \"TH-16\": true,\n\t\"TH-17\": true, \"TH-18\": true, \"TH-19\": true, \"TH-20\": true, \"TH-21\": true,\n\t\"TH-22\": true, \"TH-23\": true, \"TH-24\": true, \"TH-25\": true, \"TH-26\": true,\n\t\"TH-27\": true, \"TH-30\": true, \"TH-31\": true, \"TH-32\": true, \"TH-33\": true,\n\t\"TH-34\": true, \"TH-35\": true, \"TH-36\": true, \"TH-37\": true, \"TH-38\": true, \"TH-39\": true,\n\t\"TH-40\": true, \"TH-41\": true, \"TH-42\": true, \"TH-43\": true, \"TH-44\": true,\n\t\"TH-45\": true, \"TH-46\": true, \"TH-47\": true, \"TH-48\": true, \"TH-49\": true,\n\t\"TH-50\": true, \"TH-51\": true, \"TH-52\": true, \"TH-53\": true, \"TH-54\": true,\n\t\"TH-55\": true, \"TH-56\": true, \"TH-57\": true, \"TH-58\": true, \"TH-60\": true,\n\t\"TH-61\": true, \"TH-62\": true, \"TH-63\": true, \"TH-64\": true, \"TH-65\": true,\n\t\"TH-66\": true, \"TH-67\": true, \"TH-70\": true, \"TH-71\": true, \"TH-72\": true,\n\t\"TH-73\": true, \"TH-74\": true, \"TH-75\": true, \"TH-76\": true, \"TH-77\": true,\n\t\"TH-80\": true, \"TH-81\": true, \"TH-82\": true, \"TH-83\": true, \"TH-84\": true,\n\t\"TH-85\": true, \"TH-86\": true, \"TH-90\": true, \"TH-91\": true, \"TH-92\": true,\n\t\"TH-93\": true, \"TH-94\": true, \"TH-95\": true, \"TH-96\": true, \"TH-S\": true,\n\t\"TJ-GB\": true, \"TJ-KT\": true, \"TJ-SU\": true, \"TJ-DU\": true, \"TJ-RA\": true, \"TL-AL\": true, \"TL-AN\": true,\n\t\"TL-BA\": true, \"TL-BO\": true, \"TL-CO\": true, \"TL-DI\": true, \"TL-ER\": true,\n\t\"TL-LA\": true, \"TL-LI\": true, \"TL-MF\": true, \"TL-MT\": true, \"TL-OE\": true,\n\t\"TL-VI\": true, \"TM-A\": true, \"TM-B\": true, \"TM-D\": true, \"TM-L\": true,\n\t\"TM-M\": true, \"TM-S\": true, \"TN-11\": true, \"TN-12\": true, \"TN-13\": true,\n\t\"TN-14\": true, \"TN-21\": true, \"TN-22\": true, \"TN-23\": true, \"TN-31\": true,\n\t\"TN-32\": true, \"TN-33\": true, \"TN-34\": true, \"TN-41\": true, \"TN-42\": true,\n\t\"TN-43\": true, \"TN-51\": true, \"TN-52\": true, \"TN-53\": true, \"TN-61\": true,\n\t\"TN-71\": true, \"TN-72\": true, \"TN-73\": true, \"TN-81\": true, \"TN-82\": true,\n\t\"TN-83\": true, \"TO-01\": true, \"TO-02\": true, \"TO-03\": true, \"TO-04\": true,\n\t\"TO-05\": true, \"TR-01\": true, \"TR-02\": true, \"TR-03\": true, \"TR-04\": true,\n\t\"TR-05\": true, \"TR-06\": true, \"TR-07\": true, \"TR-08\": true, \"TR-09\": true,\n\t\"TR-10\": true, \"TR-11\": true, \"TR-12\": true, \"TR-13\": true, \"TR-14\": true,\n\t\"TR-15\": true, \"TR-16\": true, \"TR-17\": true, \"TR-18\": true, \"TR-19\": true,\n\t\"TR-20\": true, \"TR-21\": true, \"TR-22\": true, \"TR-23\": true, \"TR-24\": true,\n\t\"TR-25\": true, \"TR-26\": true, \"TR-27\": true, \"TR-28\": true, \"TR-29\": true,\n\t\"TR-30\": true, \"TR-31\": true, \"TR-32\": true, \"TR-33\": true, \"TR-34\": true,\n\t\"TR-35\": true, \"TR-36\": true, \"TR-37\": true, \"TR-38\": true, \"TR-39\": true,\n\t\"TR-40\": true, \"TR-41\": true, \"TR-42\": true, \"TR-43\": true, \"TR-44\": true,\n\t\"TR-45\": true, \"TR-46\": true, \"TR-47\": true, \"TR-48\": true, \"TR-49\": true,\n\t\"TR-50\": true, \"TR-51\": true, \"TR-52\": true, \"TR-53\": true, \"TR-54\": true,\n\t\"TR-55\": true, \"TR-56\": true, \"TR-57\": true, \"TR-58\": true, \"TR-59\": true,\n\t\"TR-60\": true, \"TR-61\": true, \"TR-62\": true, \"TR-63\": true, \"TR-64\": true,\n\t\"TR-65\": true, \"TR-66\": true, \"TR-67\": true, \"TR-68\": true, \"TR-69\": true,\n\t\"TR-70\": true, \"TR-71\": true, \"TR-72\": true, \"TR-73\": true, \"TR-74\": true,\n\t\"TR-75\": true, \"TR-76\": true, \"TR-77\": true, \"TR-78\": true, \"TR-79\": true,\n\t\"TR-80\": true, \"TR-81\": true, \"TT-ARI\": true, \"TT-CHA\": true, \"TT-CTT\": true,\n\t\"TT-DMN\": true, \"TT-ETO\": true, \"TT-MRC\": true, \"TT-TOB\": true, \"TT-PED\": true, \"TT-POS\": true, \"TT-PRT\": true,\n\t\"TT-PTF\": true, \"TT-RCM\": true, \"TT-SFO\": true, \"TT-SGE\": true, \"TT-SIP\": true,\n\t\"TT-SJL\": true, \"TT-TUP\": true, \"TT-WTO\": true, \"TV-FUN\": true, \"TV-NIT\": true,\n\t\"TV-NKF\": true, \"TV-NKL\": true, \"TV-NMA\": true, \"TV-NMG\": true, \"TV-NUI\": true,\n\t\"TV-VAI\": true, \"TW-CHA\": true, \"TW-CYI\": true, \"TW-CYQ\": true, \"TW-KIN\": true, \"TW-HSQ\": true,\n\t\"TW-HSZ\": true, \"TW-HUA\": true, \"TW-LIE\": true, \"TW-ILA\": true, \"TW-KEE\": true, \"TW-KHH\": true,\n\t\"TW-KHQ\": true, \"TW-MIA\": true, \"TW-NAN\": true, \"TW-NWT\": true, \"TW-PEN\": true, \"TW-PIF\": true,\n\t\"TW-TAO\": true, \"TW-TNN\": true, \"TW-TNQ\": true, \"TW-TPE\": true, \"TW-TPQ\": true,\n\t\"TW-TTT\": true, \"TW-TXG\": true, \"TW-TXQ\": true, \"TW-YUN\": true, \"TZ-01\": true,\n\t\"TZ-02\": true, \"TZ-03\": true, \"TZ-04\": true, \"TZ-05\": true, \"TZ-06\": true,\n\t\"TZ-07\": true, \"TZ-08\": true, \"TZ-09\": true, \"TZ-10\": true, \"TZ-11\": true,\n\t\"TZ-12\": true, \"TZ-13\": true, \"TZ-14\": true, \"TZ-15\": true, \"TZ-16\": true,\n\t\"TZ-17\": true, \"TZ-18\": true, \"TZ-19\": true, \"TZ-20\": true, \"TZ-21\": true,\n\t\"TZ-22\": true, \"TZ-23\": true, \"TZ-24\": true, \"TZ-25\": true, \"TZ-26\": true, \"TZ-27\": true, \"TZ-28\": true, \"TZ-29\": true, \"TZ-30\": true, \"TZ-31\": true,\n\t\"UA-05\": true, \"UA-07\": true, \"UA-09\": true, \"UA-12\": true, \"UA-14\": true,\n\t\"UA-18\": true, \"UA-21\": true, \"UA-23\": true, \"UA-26\": true, \"UA-30\": true,\n\t\"UA-32\": true, \"UA-35\": true, \"UA-40\": true, \"UA-43\": true, \"UA-46\": true,\n\t\"UA-48\": true, \"UA-51\": true, \"UA-53\": true, \"UA-56\": true, \"UA-59\": true,\n\t\"UA-61\": true, \"UA-63\": true, \"UA-65\": true, \"UA-68\": true, \"UA-71\": true,\n\t\"UA-74\": true, \"UA-77\": true, \"UG-101\": true, \"UG-102\": true, \"UG-103\": true,\n\t\"UG-104\": true, \"UG-105\": true, \"UG-106\": true, \"UG-107\": true, \"UG-108\": true,\n\t\"UG-109\": true, \"UG-110\": true, \"UG-111\": true, \"UG-112\": true, \"UG-113\": true,\n\t\"UG-114\": true, \"UG-115\": true, \"UG-116\": true, \"UG-201\": true, \"UG-202\": true,\n\t\"UG-203\": true, \"UG-204\": true, \"UG-205\": true, \"UG-206\": true, \"UG-207\": true,\n\t\"UG-208\": true, \"UG-209\": true, \"UG-210\": true, \"UG-211\": true, \"UG-212\": true,\n\t\"UG-213\": true, \"UG-214\": true, \"UG-215\": true, \"UG-216\": true, \"UG-217\": true,\n\t\"UG-218\": true, \"UG-219\": true, \"UG-220\": true, \"UG-221\": true, \"UG-222\": true,\n\t\"UG-223\": true, \"UG-224\": true, \"UG-301\": true, \"UG-302\": true, \"UG-303\": true,\n\t\"UG-304\": true, \"UG-305\": true, \"UG-306\": true, \"UG-307\": true, \"UG-308\": true,\n\t\"UG-309\": true, \"UG-310\": true, \"UG-311\": true, \"UG-312\": true, \"UG-313\": true,\n\t\"UG-314\": true, \"UG-315\": true, \"UG-316\": true, \"UG-317\": true, \"UG-318\": true,\n\t\"UG-319\": true, \"UG-320\": true, \"UG-321\": true, \"UG-401\": true, \"UG-402\": true,\n\t\"UG-403\": true, \"UG-404\": true, \"UG-405\": true, \"UG-406\": true, \"UG-407\": true,\n\t\"UG-408\": true, \"UG-409\": true, \"UG-410\": true, \"UG-411\": true, \"UG-412\": true,\n\t\"UG-413\": true, \"UG-414\": true, \"UG-415\": true, \"UG-416\": true, \"UG-417\": true,\n\t\"UG-418\": true, \"UG-419\": true, \"UG-C\": true, \"UG-E\": true, \"UG-N\": true,\n\t\"UG-W\": true, \"UG-322\": true, \"UG-323\": true, \"UG-420\": true, \"UG-117\": true,\n\t\"UG-118\": true, \"UG-225\": true, \"UG-120\": true, \"UG-226\": true,\n\t\"UG-121\": true, \"UG-122\": true, \"UG-227\": true, \"UG-421\": true,\n\t\"UG-325\": true, \"UG-228\": true, \"UG-123\": true, \"UG-422\": true,\n\t\"UG-326\": true, \"UG-229\": true, \"UG-124\": true, \"UG-423\": true,\n\t\"UG-230\": true, \"UG-327\": true, \"UG-424\": true, \"UG-328\": true,\n\t\"UG-425\": true, \"UG-426\": true, \"UG-330\": true,\n\t\"UM-67\": true, \"UM-71\": true, \"UM-76\": true, \"UM-79\": true,\n\t\"UM-81\": true, \"UM-84\": true, \"UM-86\": true, \"UM-89\": true, \"UM-95\": true,\n\t\"US-AK\": true, \"US-AL\": true, \"US-AR\": true, \"US-AS\": true, \"US-AZ\": true,\n\t\"US-CA\": true, \"US-CO\": true, \"US-CT\": true, \"US-DC\": true, \"US-DE\": true,\n\t\"US-FL\": true, \"US-GA\": true, \"US-GU\": true, \"US-HI\": true, \"US-IA\": true,\n\t\"US-ID\": true, \"US-IL\": true, \"US-IN\": true, \"US-KS\": true, \"US-KY\": true,\n\t\"US-LA\": true, \"US-MA\": true, \"US-MD\": true, \"US-ME\": true, \"US-MI\": true,\n\t\"US-MN\": true, \"US-MO\": true, \"US-MP\": true, \"US-MS\": true, \"US-MT\": true,\n\t\"US-NC\": true, \"US-ND\": true, \"US-NE\": true, \"US-NH\": true, \"US-NJ\": true,\n\t\"US-NM\": true, \"US-NV\": true, \"US-NY\": true, \"US-OH\": true, \"US-OK\": true,\n\t\"US-OR\": true, \"US-PA\": true, \"US-PR\": true, \"US-RI\": true, \"US-SC\": true,\n\t\"US-SD\": true, \"US-TN\": true, \"US-TX\": true, \"US-UM\": true, \"US-UT\": true,\n\t\"US-VA\": true, \"US-VI\": true, \"US-VT\": true, \"US-WA\": true, \"US-WI\": true,\n\t\"US-WV\": true, \"US-WY\": true, \"UY-AR\": true, \"UY-CA\": true, \"UY-CL\": true,\n\t\"UY-CO\": true, \"UY-DU\": true, \"UY-FD\": true, \"UY-FS\": true, \"UY-LA\": true,\n\t\"UY-MA\": true, \"UY-MO\": true, \"UY-PA\": true, \"UY-RN\": true, \"UY-RO\": true,\n\t\"UY-RV\": true, \"UY-SA\": true, \"UY-SJ\": true, \"UY-SO\": true, \"UY-TA\": true,\n\t\"UY-TT\": true, \"UZ-AN\": true, \"UZ-BU\": true, \"UZ-FA\": true, \"UZ-JI\": true,\n\t\"UZ-NG\": true, \"UZ-NW\": true, \"UZ-QA\": true, \"UZ-QR\": true, \"UZ-SA\": true,\n\t\"UZ-SI\": true, \"UZ-SU\": true, \"UZ-TK\": true, \"UZ-TO\": true, \"UZ-XO\": true,\n\t\"VC-01\": true, \"VC-02\": true, \"VC-03\": true, \"VC-04\": true, \"VC-05\": true,\n\t\"VC-06\": true, \"VE-A\": true, \"VE-B\": true, \"VE-C\": true, \"VE-D\": true,\n\t\"VE-E\": true, \"VE-F\": true, \"VE-G\": true, \"VE-H\": true, \"VE-I\": true,\n\t\"VE-J\": true, \"VE-K\": true, \"VE-L\": true, \"VE-M\": true, \"VE-N\": true,\n\t\"VE-O\": true, \"VE-P\": true, \"VE-R\": true, \"VE-S\": true, \"VE-T\": true,\n\t\"VE-U\": true, \"VE-V\": true, \"VE-W\": true, \"VE-X\": true, \"VE-Y\": true,\n\t\"VE-Z\": true, \"VN-01\": true, \"VN-02\": true, \"VN-03\": true, \"VN-04\": true,\n\t\"VN-05\": true, \"VN-06\": true, \"VN-07\": true, \"VN-09\": true, \"VN-13\": true,\n\t\"VN-14\": true, \"VN-15\": true, \"VN-18\": true, \"VN-20\": true, \"VN-21\": true,\n\t\"VN-22\": true, \"VN-23\": true, \"VN-24\": true, \"VN-25\": true, \"VN-26\": true,\n\t\"VN-27\": true, \"VN-28\": true, \"VN-29\": true, \"VN-30\": true, \"VN-31\": true,\n\t\"VN-32\": true, \"VN-33\": true, \"VN-34\": true, \"VN-35\": true, \"VN-36\": true,\n\t\"VN-37\": true, \"VN-39\": true, \"VN-40\": true, \"VN-41\": true, \"VN-43\": true,\n\t\"VN-44\": true, \"VN-45\": true, \"VN-46\": true, \"VN-47\": true, \"VN-49\": true,\n\t\"VN-50\": true, \"VN-51\": true, \"VN-52\": true, \"VN-53\": true, \"VN-54\": true,\n\t\"VN-55\": true, \"VN-56\": true, \"VN-57\": true, \"VN-58\": true, \"VN-59\": true,\n\t\"VN-61\": true, \"VN-63\": true, \"VN-66\": true, \"VN-67\": true, \"VN-68\": true,\n\t\"VN-69\": true, \"VN-70\": true, \"VN-71\": true, \"VN-72\": true, \"VN-73\": true,\n\t\"VN-CT\": true, \"VN-DN\": true, \"VN-HN\": true, \"VN-HP\": true, \"VN-SG\": true,\n\t\"VU-MAP\": true, \"VU-PAM\": true, \"VU-SAM\": true, \"VU-SEE\": true, \"VU-TAE\": true,\n\t\"VU-TOB\": true, \"WF-SG\": true, \"WF-UV\": true, \"WS-AA\": true, \"WS-AL\": true, \"WS-AT\": true, \"WS-FA\": true,\n\t\"WS-GE\": true, \"WS-GI\": true, \"WS-PA\": true, \"WS-SA\": true, \"WS-TU\": true,\n\t\"WS-VF\": true, \"WS-VS\": true, \"YE-AB\": true, \"YE-AD\": true, \"YE-AM\": true,\n\t\"YE-BA\": true, \"YE-DA\": true, \"YE-DH\": true, \"YE-HD\": true, \"YE-HJ\": true, \"YE-HU\": true,\n\t\"YE-IB\": true, \"YE-JA\": true, \"YE-LA\": true, \"YE-MA\": true, \"YE-MR\": true,\n\t\"YE-MU\": true, \"YE-MW\": true, \"YE-RA\": true, \"YE-SA\": true, \"YE-SD\": true, \"YE-SH\": true,\n\t\"YE-SN\": true, \"YE-TA\": true, \"ZA-EC\": true, \"ZA-FS\": true, \"ZA-GP\": true,\n\t\"ZA-LP\": true, \"ZA-MP\": true, \"ZA-NC\": true, \"ZA-NW\": true, \"ZA-WC\": true,\n\t\"ZA-ZN\": true, \"ZA-KZN\": true, \"ZM-01\": true, \"ZM-02\": true, \"ZM-03\": true, \"ZM-04\": true,\n\t\"ZM-05\": true, \"ZM-06\": true, \"ZM-07\": true, \"ZM-08\": true, \"ZM-09\": true, \"ZM-10\": true,\n\t\"ZW-BU\": true, \"ZW-HA\": true, \"ZW-MA\": true, \"ZW-MC\": true, \"ZW-ME\": true,\n\t\"ZW-MI\": true, \"ZW-MN\": true, \"ZW-MS\": true, \"ZW-MV\": true, \"ZW-MW\": true,\n}\n"
  },
  {
    "path": "gossh/gin/validator/currency_codes.go",
    "content": "package validator\n\nvar iso4217 = map[string]bool{\n\t\"AFN\": true, \"EUR\": true, \"ALL\": true, \"DZD\": true, \"USD\": true,\n\t\"AOA\": true, \"XCD\": true, \"ARS\": true, \"AMD\": true, \"AWG\": true,\n\t\"AUD\": true, \"AZN\": true, \"BSD\": true, \"BHD\": true, \"BDT\": true,\n\t\"BBD\": true, \"BYN\": true, \"BZD\": true, \"XOF\": true, \"BMD\": true,\n\t\"INR\": true, \"BTN\": true, \"BOB\": true, \"BOV\": true, \"BAM\": true,\n\t\"BWP\": true, \"NOK\": true, \"BRL\": true, \"BND\": true, \"BGN\": true,\n\t\"BIF\": true, \"CVE\": true, \"KHR\": true, \"XAF\": true, \"CAD\": true,\n\t\"KYD\": true, \"CLP\": true, \"CLF\": true, \"CNY\": true, \"COP\": true,\n\t\"COU\": true, \"KMF\": true, \"CDF\": true, \"NZD\": true, \"CRC\": true,\n\t\"HRK\": true, \"CUP\": true, \"CUC\": true, \"ANG\": true, \"CZK\": true,\n\t\"DKK\": true, \"DJF\": true, \"DOP\": true, \"EGP\": true, \"SVC\": true,\n\t\"ERN\": true, \"SZL\": true, \"ETB\": true, \"FKP\": true, \"FJD\": true,\n\t\"XPF\": true, \"GMD\": true, \"GEL\": true, \"GHS\": true, \"GIP\": true,\n\t\"GTQ\": true, \"GBP\": true, \"GNF\": true, \"GYD\": true, \"HTG\": true,\n\t\"HNL\": true, \"HKD\": true, \"HUF\": true, \"ISK\": true, \"IDR\": true,\n\t\"XDR\": true, \"IRR\": true, \"IQD\": true, \"ILS\": true, \"JMD\": true,\n\t\"JPY\": true, \"JOD\": true, \"KZT\": true, \"KES\": true, \"KPW\": true,\n\t\"KRW\": true, \"KWD\": true, \"KGS\": true, \"LAK\": true, \"LBP\": true,\n\t\"LSL\": true, \"ZAR\": true, \"LRD\": true, \"LYD\": true, \"CHF\": true,\n\t\"MOP\": true, \"MKD\": true, \"MGA\": true, \"MWK\": true, \"MYR\": true,\n\t\"MVR\": true, \"MRU\": true, \"MUR\": true, \"XUA\": true, \"MXN\": true,\n\t\"MXV\": true, \"MDL\": true, \"MNT\": true, \"MAD\": true, \"MZN\": true,\n\t\"MMK\": true, \"NAD\": true, \"NPR\": true, \"NIO\": true, \"NGN\": true,\n\t\"OMR\": true, \"PKR\": true, \"PAB\": true, \"PGK\": true, \"PYG\": true,\n\t\"PEN\": true, \"PHP\": true, \"PLN\": true, \"QAR\": true, \"RON\": true,\n\t\"RUB\": true, \"RWF\": true, \"SHP\": true, \"WST\": true, \"STN\": true,\n\t\"SAR\": true, \"RSD\": true, \"SCR\": true, \"SLL\": true, \"SGD\": true,\n\t\"XSU\": true, \"SBD\": true, \"SOS\": true, \"SSP\": true, \"LKR\": true,\n\t\"SDG\": true, \"SRD\": true, \"SEK\": true, \"CHE\": true, \"CHW\": true,\n\t\"SYP\": true, \"TWD\": true, \"TJS\": true, \"TZS\": true, \"THB\": true,\n\t\"TOP\": true, \"TTD\": true, \"TND\": true, \"TRY\": true, \"TMT\": true,\n\t\"UGX\": true, \"UAH\": true, \"AED\": true, \"USN\": true, \"UYU\": true,\n\t\"UYI\": true, \"UYW\": true, \"UZS\": true, \"VUV\": true, \"VES\": true,\n\t\"VND\": true, \"YER\": true, \"ZMW\": true, \"ZWL\": true, \"XBA\": true,\n\t\"XBB\": true, \"XBC\": true, \"XBD\": true, \"XTS\": true, \"XXX\": true,\n\t\"XAU\": true, \"XPD\": true, \"XPT\": true, \"XAG\": true,\n}\n\nvar iso4217_numeric = map[int]bool{\n\t8: true, 12: true, 32: true, 36: true, 44: true,\n\t48: true, 50: true, 51: true, 52: true, 60: true,\n\t64: true, 68: true, 72: true, 84: true, 90: true,\n\t96: true, 104: true, 108: true, 116: true, 124: true,\n\t132: true, 136: true, 144: true, 152: true, 156: true,\n\t170: true, 174: true, 188: true, 191: true, 192: true,\n\t203: true, 208: true, 214: true, 222: true, 230: true,\n\t232: true, 238: true, 242: true, 262: true, 270: true,\n\t292: true, 320: true, 324: true, 328: true, 332: true,\n\t340: true, 344: true, 348: true, 352: true, 356: true,\n\t360: true, 364: true, 368: true, 376: true, 388: true,\n\t392: true, 398: true, 400: true, 404: true, 408: true,\n\t410: true, 414: true, 417: true, 418: true, 422: true,\n\t426: true, 430: true, 434: true, 446: true, 454: true,\n\t458: true, 462: true, 480: true, 484: true, 496: true,\n\t498: true, 504: true, 512: true, 516: true, 524: true,\n\t532: true, 533: true, 548: true, 554: true, 558: true,\n\t566: true, 578: true, 586: true, 590: true, 598: true,\n\t600: true, 604: true, 608: true, 634: true, 643: true,\n\t646: true, 654: true, 682: true, 690: true, 694: true,\n\t702: true, 704: true, 706: true, 710: true, 728: true,\n\t748: true, 752: true, 756: true, 760: true, 764: true,\n\t776: true, 780: true, 784: true, 788: true, 800: true,\n\t807: true, 818: true, 826: true, 834: true, 840: true,\n\t858: true, 860: true, 882: true, 886: true, 901: true,\n\t927: true, 928: true, 929: true, 930: true, 931: true,\n\t932: true, 933: true, 934: true, 936: true, 938: true,\n\t940: true, 941: true, 943: true, 944: true, 946: true,\n\t947: true, 948: true, 949: true, 950: true, 951: true,\n\t952: true, 953: true, 955: true, 956: true, 957: true,\n\t958: true, 959: true, 960: true, 961: true, 962: true,\n\t963: true, 964: true, 965: true, 967: true, 968: true,\n\t969: true, 970: true, 971: true, 972: true, 973: true,\n\t975: true, 976: true, 977: true, 978: true, 979: true,\n\t980: true, 981: true, 984: true, 985: true, 986: true,\n\t990: true, 994: true, 997: true, 999: true,\n}\n"
  },
  {
    "path": "gossh/gin/validator/errors.go",
    "content": "package validator\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\n\t\"reflect\"\n\t\"strings\"\n)\n\nconst (\n\tfieldErrMsg = \"Key: '%s' Error:Field validation for '%s' failed on the '%s' tag\"\n)\n\n// ValidationErrorsTranslations is the translation return type\ntype ValidationErrorsTranslations map[string]string\n\n// InvalidValidationError describes an invalid argument passed to\n// `Struct`, `StructExcept`, StructPartial` or `Field`\ntype InvalidValidationError struct {\n\tType reflect.Type\n}\n\n// Error returns InvalidValidationError message\nfunc (e *InvalidValidationError) Error() string {\n\n\tif e.Type == nil {\n\t\treturn \"validator: (nil)\"\n\t}\n\n\treturn \"validator: (nil \" + e.Type.String() + \")\"\n}\n\n// ValidationErrors is an array of FieldError's\n// for use in custom error messages post validation.\ntype ValidationErrors []FieldError\n\n// Error is intended for use in development + debugging and not intended to be a production error message.\n// It allows ValidationErrors to subscribe to the Error interface.\n// All information to create an error message specific to your application is contained within\n// the FieldError found within the ValidationErrors array\nfunc (ve ValidationErrors) Error() string {\n\n\tbuff := bytes.NewBufferString(\"\")\n\n\tfor i := 0; i < len(ve); i++ {\n\n\t\tbuff.WriteString(ve[i].Error())\n\t\tbuff.WriteString(\"\\n\")\n\t}\n\n\treturn strings.TrimSpace(buff.String())\n}\n\n// FieldError contains all functions to get error details\ntype FieldError interface {\n\n\t// Tag returns the validation tag that failed. if the\n\t// validation was an alias, this will return the\n\t// alias name and not the underlying tag that failed.\n\t//\n\t// eg. alias \"iscolor\": \"hexcolor|rgb|rgba|hsl|hsla\"\n\t// will return \"iscolor\"\n\tTag() string\n\n\t// ActualTag returns the validation tag that failed, even if an\n\t// alias the actual tag within the alias will be returned.\n\t// If an 'or' validation fails the entire or will be returned.\n\t//\n\t// eg. alias \"iscolor\": \"hexcolor|rgb|rgba|hsl|hsla\"\n\t// will return \"hexcolor|rgb|rgba|hsl|hsla\"\n\tActualTag() string\n\n\t// Namespace returns the namespace for the field error, with the tag\n\t// name taking precedence over the field's actual name.\n\t//\n\t// eg. JSON name \"User.fname\"\n\t//\n\t// See StructNamespace() for a version that returns actual names.\n\t//\n\t// NOTE: this field can be blank when validating a single primitive field\n\t// using validate.Field(...) as there is no way to extract it's name\n\tNamespace() string\n\n\t// StructNamespace returns the namespace for the field error, with the field's\n\t// actual name.\n\t//\n\t// eq. \"User.FirstName\" see Namespace for comparison\n\t//\n\t// NOTE: this field can be blank when validating a single primitive field\n\t// using validate.Field(...) as there is no way to extract its name\n\tStructNamespace() string\n\n\t// Field returns the fields name with the tag name taking precedence over the\n\t// field's actual name.\n\t//\n\t// eq. JSON name \"fname\"\n\t// see StructField for comparison\n\tField() string\n\n\t// StructField returns the field's actual name from the struct, when able to determine.\n\t//\n\t// eq.  \"FirstName\"\n\t// see Field for comparison\n\tStructField() string\n\n\t// Value returns the actual field's value in case needed for creating the error\n\t// message\n\tValue() any\n\n\t// Param returns the param value, in string form for comparison; this will also\n\t// help with generating an error message\n\tParam() string\n\n\t// Kind returns the Field's reflect Kind\n\t//\n\t// eg. time.Time's kind is a struct\n\tKind() reflect.Kind\n\n\t// Type returns the Field's reflect Type\n\t//\n\t// eg. time.Time's type is time.Time\n\tType() reflect.Type\n\n\t// Translate returns the FieldError's translated error\n\t// from the provided 'ut.Translator' and registered 'TranslationFunc'\n\t//\n\t// NOTE: if no registered translator can be found it returns the same as\n\t// calling fe.Error()\n\tTranslate() string\n\n\t// Error returns the FieldError's message\n\tError() string\n}\n\n// compile time interface checks\n\nvar _ error = new(fieldError)\n\n// fieldError contains a single field's validation error along\n// with other properties that may be needed for error message creation\n// it complies with the FieldError interface\ntype fieldError struct {\n\tv              *Validate\n\ttag            string\n\tactualTag      string\n\tns             string\n\tstructNs       string\n\tfieldLen       uint8\n\tstructfieldLen uint8\n\tvalue          any\n\tparam          string\n\tkind           reflect.Kind\n\ttyp            reflect.Type\n}\n\nfunc (fe *fieldError) Translate() string {\n\treturn \"\"\n}\n\n// Tag returns the validation tag that failed.\nfunc (fe *fieldError) Tag() string {\n\treturn fe.tag\n}\n\n// ActualTag returns the validation tag that failed, even if an\n// alias the actual tag within the alias will be returned.\nfunc (fe *fieldError) ActualTag() string {\n\treturn fe.actualTag\n}\n\n// Namespace returns the namespace for the field error, with the tag\n// name taking precedence over the field's actual name.\nfunc (fe *fieldError) Namespace() string {\n\treturn fe.ns\n}\n\n// StructNamespace returns the namespace for the field error, with the field's\n// actual name.\nfunc (fe *fieldError) StructNamespace() string {\n\treturn fe.structNs\n}\n\n// Field returns the field's name with the tag name taking precedence over the\n// field's actual name.\nfunc (fe *fieldError) Field() string {\n\n\treturn fe.ns[len(fe.ns)-int(fe.fieldLen):]\n\t// // return fe.field\n\t// fld := fe.ns[len(fe.ns)-int(fe.fieldLen):]\n\n\t// log.Println(\"FLD:\", fld)\n\n\t// if len(fld) > 0 && fld[:1] == \".\" {\n\t// \treturn fld[1:]\n\t// }\n\n\t// return fld\n}\n\n// StructField returns the field's actual name from the struct, when able to determine.\nfunc (fe *fieldError) StructField() string {\n\t// return fe.structField\n\treturn fe.structNs[len(fe.structNs)-int(fe.structfieldLen):]\n}\n\n// Value returns the actual field's value in case needed for creating the error\n// message\nfunc (fe *fieldError) Value() any {\n\treturn fe.value\n}\n\n// Param returns the param value, in string form for comparison; this will\n// also help with generating an error message\nfunc (fe *fieldError) Param() string {\n\treturn fe.param\n}\n\n// Kind returns the Field's reflect Kind\nfunc (fe *fieldError) Kind() reflect.Kind {\n\treturn fe.kind\n}\n\n// Type returns the Field's reflect Type\nfunc (fe *fieldError) Type() reflect.Type {\n\treturn fe.typ\n}\n\n// Error returns the fieldError's error message\nfunc (fe *fieldError) Error() string {\n\treturn fmt.Sprintf(fieldErrMsg, fe.ns, fe.Field(), fe.tag)\n}\n"
  },
  {
    "path": "gossh/gin/validator/field_level.go",
    "content": "package validator\n\nimport \"reflect\"\n\n// FieldLevel contains all the information and helper functions\n// to validate a field\ntype FieldLevel interface {\n\n\t// Top returns the top level struct, if any\n\tTop() reflect.Value\n\n\t// Parent returns the current fields parent struct, if any or\n\t// the comparison value if called 'VarWithValue'\n\tParent() reflect.Value\n\n\t// Field returns current field for validation\n\tField() reflect.Value\n\n\t// FieldName returns the field's name with the tag\n\t// name taking precedence over the fields actual name.\n\tFieldName() string\n\n\t// StructFieldName returns the struct field's name\n\tStructFieldName() string\n\n\t// Param returns param for validation against current field\n\tParam() string\n\n\t// GetTag returns the current validations tag name\n\tGetTag() string\n\n\t// ExtractType gets the actual underlying type of field value.\n\t// It will dive into pointers, customTypes and return you the\n\t// underlying value and it's kind.\n\tExtractType(field reflect.Value) (value reflect.Value, kind reflect.Kind, nullable bool)\n\n\t// GetStructFieldOK traverses the parent struct to retrieve a specific field denoted by the provided namespace\n\t// in the param and returns the field, field kind and whether is was successful in retrieving\n\t// the field at all.\n\t//\n\t// NOTE: when not successful ok will be false, this can happen when a nested struct is nil and so the field\n\t// could not be retrieved because it didn't exist.\n\t//\n\t// Deprecated: Use GetStructFieldOK2() instead which also return if the value is nullable.\n\tGetStructFieldOK() (reflect.Value, reflect.Kind, bool)\n\n\t// GetStructFieldOKAdvanced is the same as GetStructFieldOK except that it accepts the parent struct to start looking for\n\t// the field and namespace allowing more extensibility for validators.\n\t//\n\t// Deprecated: Use GetStructFieldOKAdvanced2() instead which also return if the value is nullable.\n\tGetStructFieldOKAdvanced(val reflect.Value, namespace string) (reflect.Value, reflect.Kind, bool)\n\n\t// GetStructFieldOK2 traverses the parent struct to retrieve a specific field denoted by the provided namespace\n\t// in the param and returns the field, field kind, if it's a nullable type and whether is was successful in retrieving\n\t// the field at all.\n\t//\n\t// NOTE: when not successful ok will be false, this can happen when a nested struct is nil and so the field\n\t// could not be retrieved because it didn't exist.\n\tGetStructFieldOK2() (reflect.Value, reflect.Kind, bool, bool)\n\n\t// GetStructFieldOKAdvanced2 is the same as GetStructFieldOK except that it accepts the parent struct to start looking for\n\t// the field and namespace allowing more extensibility for validators.\n\tGetStructFieldOKAdvanced2(val reflect.Value, namespace string) (reflect.Value, reflect.Kind, bool, bool)\n}\n\nvar _ FieldLevel = new(validate)\n\n// Field returns current field for validation\nfunc (v *validate) Field() reflect.Value {\n\treturn v.flField\n}\n\n// FieldName returns the field's name with the tag\n// name taking precedence over the fields actual name.\nfunc (v *validate) FieldName() string {\n\treturn v.cf.altName\n}\n\n// GetTag returns the current validations tag name\nfunc (v *validate) GetTag() string {\n\treturn v.ct.tag\n}\n\n// StructFieldName returns the struct field's name\nfunc (v *validate) StructFieldName() string {\n\treturn v.cf.name\n}\n\n// Param returns param for validation against current field\nfunc (v *validate) Param() string {\n\treturn v.ct.param\n}\n\n// GetStructFieldOK returns Param returns param for validation against current field\n//\n// Deprecated: Use GetStructFieldOK2() instead which also return if the value is nullable.\nfunc (v *validate) GetStructFieldOK() (reflect.Value, reflect.Kind, bool) {\n\tcurrent, kind, _, found := v.getStructFieldOKInternal(v.slflParent, v.ct.param)\n\treturn current, kind, found\n}\n\n// GetStructFieldOKAdvanced is the same as GetStructFieldOK except that it accepts the parent struct to start looking for\n// the field and namespace allowing more extensibility for validators.\n//\n// Deprecated: Use GetStructFieldOKAdvanced2() instead which also return if the value is nullable.\nfunc (v *validate) GetStructFieldOKAdvanced(val reflect.Value, namespace string) (reflect.Value, reflect.Kind, bool) {\n\tcurrent, kind, _, found := v.GetStructFieldOKAdvanced2(val, namespace)\n\treturn current, kind, found\n}\n\n// GetStructFieldOK2 returns Param returns param for validation against current field\nfunc (v *validate) GetStructFieldOK2() (reflect.Value, reflect.Kind, bool, bool) {\n\treturn v.getStructFieldOKInternal(v.slflParent, v.ct.param)\n}\n\n// GetStructFieldOKAdvanced2 is the same as GetStructFieldOK except that it accepts the parent struct to start looking for\n// the field and namespace allowing more extensibility for validators.\nfunc (v *validate) GetStructFieldOKAdvanced2(val reflect.Value, namespace string) (reflect.Value, reflect.Kind, bool, bool) {\n\treturn v.getStructFieldOKInternal(val, namespace)\n}\n"
  },
  {
    "path": "gossh/gin/validator/options.go",
    "content": "package validator\n\n// Option represents a configurations option to be applied to validator during initialization.\ntype Option func(*Validate)\n\n// WithRequiredStructEnabled enables required tag on non-pointer structs to be applied instead of ignored.\n//\n// This was made opt-in behaviour in order to maintain backward compatibility with the behaviour previous\n// to being able to apply struct level validations on struct fields directly.\n//\n// It is recommended you enabled this as it will be the default behaviour in v11+\nfunc WithRequiredStructEnabled() Option {\n\treturn func(v *Validate) {\n\t\tv.requiredStructEnabled = true\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/validator/postcode_regexes.go",
    "content": "package validator\n\nimport \"regexp\"\n\nvar postCodePatternDict = map[string]string{\n\t\"GB\": `^GIR[ ]?0AA|((AB|AL|B|BA|BB|BD|BH|BL|BN|BR|BS|BT|CA|CB|CF|CH|CM|CO|CR|CT|CV|CW|DA|DD|DE|DG|DH|DL|DN|DT|DY|E|EC|EH|EN|EX|FK|FY|G|GL|GY|GU|HA|HD|HG|HP|HR|HS|HU|HX|IG|IM|IP|IV|JE|KA|KT|KW|KY|L|LA|LD|LE|LL|LN|LS|LU|M|ME|MK|ML|N|NE|NG|NN|NP|NR|NW|OL|OX|PA|PE|PH|PL|PO|PR|RG|RH|RM|S|SA|SE|SG|SK|SL|SM|SN|SO|SP|SR|SS|ST|SW|SY|TA|TD|TF|TN|TQ|TR|TS|TW|UB|W|WA|WC|WD|WF|WN|WR|WS|WV|YO|ZE)(\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}))|BFPO[ ]?\\d{1,4}$`,\n\t\"JE\": `^JE\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$`,\n\t\"GG\": `^GY\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$`,\n\t\"IM\": `^IM\\d[\\dA-Z]?[ ]?\\d[ABD-HJLN-UW-Z]{2}$`,\n\t\"US\": `^\\d{5}([ \\-]\\d{4})?$`,\n\t\"CA\": `^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJ-NPRSTV-Z][ ]?\\d[ABCEGHJ-NPRSTV-Z]\\d$`,\n\t\"DE\": `^\\d{5}$`,\n\t\"JP\": `^\\d{3}-\\d{4}$`,\n\t\"FR\": `^\\d{2}[ ]?\\d{3}$`,\n\t\"AU\": `^\\d{4}$`,\n\t\"IT\": `^\\d{5}$`,\n\t\"CH\": `^\\d{4}$`,\n\t\"AT\": `^\\d{4}$`,\n\t\"ES\": `^\\d{5}$`,\n\t\"NL\": `^\\d{4}[ ]?[A-Z]{2}$`,\n\t\"BE\": `^\\d{4}$`,\n\t\"DK\": `^\\d{4}$`,\n\t\"SE\": `^\\d{3}[ ]?\\d{2}$`,\n\t\"NO\": `^\\d{4}$`,\n\t\"BR\": `^\\d{5}[\\-]?\\d{3}$`,\n\t\"PT\": `^\\d{4}([\\-]\\d{3})?$`,\n\t\"FI\": `^\\d{5}$`,\n\t\"AX\": `^22\\d{3}$`,\n\t\"KR\": `^\\d{3}[\\-]\\d{3}$`,\n\t\"CN\": `^\\d{6}$`,\n\t\"TW\": `^\\d{3}(\\d{2})?$`,\n\t\"SG\": `^\\d{6}$`,\n\t\"DZ\": `^\\d{5}$`,\n\t\"AD\": `^AD\\d{3}$`,\n\t\"AR\": `^([A-HJ-NP-Z])?\\d{4}([A-Z]{3})?$`,\n\t\"AM\": `^(37)?\\d{4}$`,\n\t\"AZ\": `^\\d{4}$`,\n\t\"BH\": `^((1[0-2]|[2-9])\\d{2})?$`,\n\t\"BD\": `^\\d{4}$`,\n\t\"BB\": `^(BB\\d{5})?$`,\n\t\"BY\": `^\\d{6}$`,\n\t\"BM\": `^[A-Z]{2}[ ]?[A-Z0-9]{2}$`,\n\t\"BA\": `^\\d{5}$`,\n\t\"IO\": `^BBND 1ZZ$`,\n\t\"BN\": `^[A-Z]{2}[ ]?\\d{4}$`,\n\t\"BG\": `^\\d{4}$`,\n\t\"KH\": `^\\d{5}$`,\n\t\"CV\": `^\\d{4}$`,\n\t\"CL\": `^\\d{7}$`,\n\t\"CR\": `^\\d{4,5}|\\d{3}-\\d{4}$`,\n\t\"HR\": `^\\d{5}$`,\n\t\"CY\": `^\\d{4}$`,\n\t\"CZ\": `^\\d{3}[ ]?\\d{2}$`,\n\t\"DO\": `^\\d{5}$`,\n\t\"EC\": `^([A-Z]\\d{4}[A-Z]|(?:[A-Z]{2})?\\d{6})?$`,\n\t\"EG\": `^\\d{5}$`,\n\t\"EE\": `^\\d{5}$`,\n\t\"FO\": `^\\d{3}$`,\n\t\"GE\": `^\\d{4}$`,\n\t\"GR\": `^\\d{3}[ ]?\\d{2}$`,\n\t\"GL\": `^39\\d{2}$`,\n\t\"GT\": `^\\d{5}$`,\n\t\"HT\": `^\\d{4}$`,\n\t\"HN\": `^(?:\\d{5})?$`,\n\t\"HU\": `^\\d{4}$`,\n\t\"IS\": `^\\d{3}$`,\n\t\"IN\": `^\\d{6}$`,\n\t\"ID\": `^\\d{5}$`,\n\t\"IL\": `^\\d{5}$`,\n\t\"JO\": `^\\d{5}$`,\n\t\"KZ\": `^\\d{6}$`,\n\t\"KE\": `^\\d{5}$`,\n\t\"KW\": `^\\d{5}$`,\n\t\"LA\": `^\\d{5}$`,\n\t\"LV\": `^\\d{4}$`,\n\t\"LB\": `^(\\d{4}([ ]?\\d{4})?)?$`,\n\t\"LI\": `^(948[5-9])|(949[0-7])$`,\n\t\"LT\": `^\\d{5}$`,\n\t\"LU\": `^\\d{4}$`,\n\t\"MK\": `^\\d{4}$`,\n\t\"MY\": `^\\d{5}$`,\n\t\"MV\": `^\\d{5}$`,\n\t\"MT\": `^[A-Z]{3}[ ]?\\d{2,4}$`,\n\t\"MU\": `^(\\d{3}[A-Z]{2}\\d{3})?$`,\n\t\"MX\": `^\\d{5}$`,\n\t\"MD\": `^\\d{4}$`,\n\t\"MC\": `^980\\d{2}$`,\n\t\"MA\": `^\\d{5}$`,\n\t\"NP\": `^\\d{5}$`,\n\t\"NZ\": `^\\d{4}$`,\n\t\"NI\": `^((\\d{4}-)?\\d{3}-\\d{3}(-\\d{1})?)?$`,\n\t\"NG\": `^(\\d{6})?$`,\n\t\"OM\": `^(PC )?\\d{3}$`,\n\t\"PK\": `^\\d{5}$`,\n\t\"PY\": `^\\d{4}$`,\n\t\"PH\": `^\\d{4}$`,\n\t\"PL\": `^\\d{2}-\\d{3}$`,\n\t\"PR\": `^00[679]\\d{2}([ \\-]\\d{4})?$`,\n\t\"RO\": `^\\d{6}$`,\n\t\"RU\": `^\\d{6}$`,\n\t\"SM\": `^4789\\d$`,\n\t\"SA\": `^\\d{5}$`,\n\t\"SN\": `^\\d{5}$`,\n\t\"SK\": `^\\d{3}[ ]?\\d{2}$`,\n\t\"SI\": `^\\d{4}$`,\n\t\"ZA\": `^\\d{4}$`,\n\t\"LK\": `^\\d{5}$`,\n\t\"TJ\": `^\\d{6}$`,\n\t\"TH\": `^\\d{5}$`,\n\t\"TN\": `^\\d{4}$`,\n\t\"TR\": `^\\d{5}$`,\n\t\"TM\": `^\\d{6}$`,\n\t\"UA\": `^\\d{5}$`,\n\t\"UY\": `^\\d{5}$`,\n\t\"UZ\": `^\\d{6}$`,\n\t\"VA\": `^00120$`,\n\t\"VE\": `^\\d{4}$`,\n\t\"ZM\": `^\\d{5}$`,\n\t\"AS\": `^96799$`,\n\t\"CC\": `^6799$`,\n\t\"CK\": `^\\d{4}$`,\n\t\"RS\": `^\\d{6}$`,\n\t\"ME\": `^8\\d{4}$`,\n\t\"CS\": `^\\d{5}$`,\n\t\"YU\": `^\\d{5}$`,\n\t\"CX\": `^6798$`,\n\t\"ET\": `^\\d{4}$`,\n\t\"FK\": `^FIQQ 1ZZ$`,\n\t\"NF\": `^2899$`,\n\t\"FM\": `^(9694[1-4])([ \\-]\\d{4})?$`,\n\t\"GF\": `^9[78]3\\d{2}$`,\n\t\"GN\": `^\\d{3}$`,\n\t\"GP\": `^9[78][01]\\d{2}$`,\n\t\"GS\": `^SIQQ 1ZZ$`,\n\t\"GU\": `^969[123]\\d([ \\-]\\d{4})?$`,\n\t\"GW\": `^\\d{4}$`,\n\t\"HM\": `^\\d{4}$`,\n\t\"IQ\": `^\\d{5}$`,\n\t\"KG\": `^\\d{6}$`,\n\t\"LR\": `^\\d{4}$`,\n\t\"LS\": `^\\d{3}$`,\n\t\"MG\": `^\\d{3}$`,\n\t\"MH\": `^969[67]\\d([ \\-]\\d{4})?$`,\n\t\"MN\": `^\\d{6}$`,\n\t\"MP\": `^9695[012]([ \\-]\\d{4})?$`,\n\t\"MQ\": `^9[78]2\\d{2}$`,\n\t\"NC\": `^988\\d{2}$`,\n\t\"NE\": `^\\d{4}$`,\n\t\"VI\": `^008(([0-4]\\d)|(5[01]))([ \\-]\\d{4})?$`,\n\t\"VN\": `^[0-9]{1,6}$`,\n\t\"PF\": `^987\\d{2}$`,\n\t\"PG\": `^\\d{3}$`,\n\t\"PM\": `^9[78]5\\d{2}$`,\n\t\"PN\": `^PCRN 1ZZ$`,\n\t\"PW\": `^96940$`,\n\t\"RE\": `^9[78]4\\d{2}$`,\n\t\"SH\": `^(ASCN|STHL) 1ZZ$`,\n\t\"SJ\": `^\\d{4}$`,\n\t\"SO\": `^\\d{5}$`,\n\t\"SZ\": `^[HLMS]\\d{3}$`,\n\t\"TC\": `^TKCA 1ZZ$`,\n\t\"WF\": `^986\\d{2}$`,\n\t\"XK\": `^\\d{5}$`,\n\t\"YT\": `^976\\d{2}$`,\n}\n\nvar postCodeRegexDict = map[string]*regexp.Regexp{}\n\nfunc init() {\n\tfor countryCode, pattern := range postCodePatternDict {\n\t\tpostCodeRegexDict[countryCode] = regexp.MustCompile(pattern)\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/validator/regexes.go",
    "content": "package validator\n\nimport \"regexp\"\n\nconst (\n\talphaRegexString                 = \"^[a-zA-Z]+$\"\n\talphaNumericRegexString          = \"^[a-zA-Z0-9]+$\"\n\talphaUnicodeRegexString          = \"^[\\\\p{L}]+$\"\n\talphaUnicodeNumericRegexString   = \"^[\\\\p{L}\\\\p{N}]+$\"\n\tnumericRegexString               = \"^[-+]?[0-9]+(?:\\\\.[0-9]+)?$\"\n\tnumberRegexString                = \"^[0-9]+$\"\n\thexadecimalRegexString           = \"^(0[xX])?[0-9a-fA-F]+$\"\n\thexColorRegexString              = \"^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})$\"\n\trgbRegexString                   = \"^rgb\\\\(\\\\s*(?:(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])|(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%)\\\\s*\\\\)$\"\n\trgbaRegexString                  = \"^rgba\\\\(\\\\s*(?:(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])|(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%\\\\s*,\\\\s*(?:0|[1-9]\\\\d?|1\\\\d\\\\d?|2[0-4]\\\\d|25[0-5])%)\\\\s*,\\\\s*(?:(?:0.[1-9]*)|[01])\\\\s*\\\\)$\"\n\thslRegexString                   = \"^hsl\\\\(\\\\s*(?:0|[1-9]\\\\d?|[12]\\\\d\\\\d|3[0-5]\\\\d|360)\\\\s*,\\\\s*(?:(?:0|[1-9]\\\\d?|100)%)\\\\s*,\\\\s*(?:(?:0|[1-9]\\\\d?|100)%)\\\\s*\\\\)$\"\n\thslaRegexString                  = \"^hsla\\\\(\\\\s*(?:0|[1-9]\\\\d?|[12]\\\\d\\\\d|3[0-5]\\\\d|360)\\\\s*,\\\\s*(?:(?:0|[1-9]\\\\d?|100)%)\\\\s*,\\\\s*(?:(?:0|[1-9]\\\\d?|100)%)\\\\s*,\\\\s*(?:(?:0.[1-9]*)|[01])\\\\s*\\\\)$\"\n\temailRegexString                 = \"^(?:(?:(?:(?:[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\te164RegexString                  = \"^\\\\+[1-9]?[0-9]{7,14}$\"\n\tbase64RegexString                = \"^(?:[A-Za-z0-9+\\\\/]{4})*(?:[A-Za-z0-9+\\\\/]{2}==|[A-Za-z0-9+\\\\/]{3}=|[A-Za-z0-9+\\\\/]{4})$\"\n\tbase64URLRegexString             = \"^(?:[A-Za-z0-9-_]{4})*(?:[A-Za-z0-9-_]{2}==|[A-Za-z0-9-_]{3}=|[A-Za-z0-9-_]{4})$\"\n\tbase64RawURLRegexString          = \"^(?:[A-Za-z0-9-_]{4})*(?:[A-Za-z0-9-_]{2,4})$\"\n\tiSBN10RegexString                = \"^(?:[0-9]{9}X|[0-9]{10})$\"\n\tiSBN13RegexString                = \"^(?:(?:97(?:8|9))[0-9]{10})$\"\n\tiSSNRegexString                  = \"^(?:[0-9]{4}-[0-9]{3}[0-9X])$\"\n\tuUID3RegexString                 = \"^[0-9a-f]{8}-[0-9a-f]{4}-3[0-9a-f]{3}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n\tuUID4RegexString                 = \"^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"\n\tuUID5RegexString                 = \"^[0-9a-f]{8}-[0-9a-f]{4}-5[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$\"\n\tuUIDRegexString                  = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\"\n\tuUID3RFC4122RegexString          = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-3[0-9a-fA-F]{3}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\"\n\tuUID4RFC4122RegexString          = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\"\n\tuUID5RFC4122RegexString          = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-5[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$\"\n\tuUIDRFC4122RegexString           = \"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\"\n\tuLIDRegexString                  = \"^[A-HJKMNP-TV-Z0-9]{26}$\"\n\tmd4RegexString                   = \"^[0-9a-f]{32}$\"\n\tmd5RegexString                   = \"^[0-9a-f]{32}$\"\n\tsha256RegexString                = \"^[0-9a-f]{64}$\"\n\tsha384RegexString                = \"^[0-9a-f]{96}$\"\n\tsha512RegexString                = \"^[0-9a-f]{128}$\"\n\tripemd128RegexString             = \"^[0-9a-f]{32}$\"\n\tripemd160RegexString             = \"^[0-9a-f]{40}$\"\n\ttiger128RegexString              = \"^[0-9a-f]{32}$\"\n\ttiger160RegexString              = \"^[0-9a-f]{40}$\"\n\ttiger192RegexString              = \"^[0-9a-f]{48}$\"\n\taSCIIRegexString                 = \"^[\\x00-\\x7F]*$\"\n\tprintableASCIIRegexString        = \"^[\\x20-\\x7E]*$\"\n\tmultibyteRegexString             = \"[^\\x00-\\x7F]\"\n\tdataURIRegexString               = `^data:((?:\\w+\\/(?:([^;]|;[^;]).)+)?)`\n\tlatitudeRegexString              = \"^[-+]?([1-8]?\\\\d(\\\\.\\\\d+)?|90(\\\\.0+)?)$\"\n\tlongitudeRegexString             = \"^[-+]?(180(\\\\.0+)?|((1[0-7]\\\\d)|([1-9]?\\\\d))(\\\\.\\\\d+)?)$\"\n\tsSNRegexString                   = `^[0-9]{3}[ -]?(0[1-9]|[1-9][0-9])[ -]?([1-9][0-9]{3}|[0-9][1-9][0-9]{2}|[0-9]{2}[1-9][0-9]|[0-9]{3}[1-9])$`\n\thostnameRegexStringRFC952        = `^[a-zA-Z]([a-zA-Z0-9\\-]+[\\.]?)*[a-zA-Z0-9]$`                                                                   // https://tools.ietf.org/html/rfc952\n\thostnameRegexStringRFC1123       = `^([a-zA-Z0-9]{1}[a-zA-Z0-9-]{0,62}){1}(\\.[a-zA-Z0-9]{1}[a-zA-Z0-9-]{0,62})*?$`                                 // accepts hostname starting with a digit https://tools.ietf.org/html/rfc1123\n\tfqdnRegexStringRFC1123           = `^([a-zA-Z0-9]{1}[a-zA-Z0-9-]{0,62})(\\.[a-zA-Z0-9]{1}[a-zA-Z0-9-]{0,62})*?(\\.[a-zA-Z]{1}[a-zA-Z0-9]{0,62})\\.?$` // same as hostnameRegexStringRFC1123 but must contain a non numerical TLD (possibly ending with '.')\n\tbtcAddressRegexString            = `^[13][a-km-zA-HJ-NP-Z1-9]{25,34}$`                                                                             // bitcoin address\n\tbtcAddressUpperRegexStringBech32 = `^BC1[02-9AC-HJ-NP-Z]{7,76}$`                                                                                   // bitcoin bech32 address https://en.bitcoin.it/wiki/Bech32\n\tbtcAddressLowerRegexStringBech32 = `^bc1[02-9ac-hj-np-z]{7,76}$`                                                                                   // bitcoin bech32 address https://en.bitcoin.it/wiki/Bech32\n\tethAddressRegexString            = `^0x[0-9a-fA-F]{40}$`\n\tethAddressUpperRegexString       = `^0x[0-9A-F]{40}$`\n\tethAddressLowerRegexString       = `^0x[0-9a-f]{40}$`\n\tuRLEncodedRegexString            = `^(?:[^%]|%[0-9A-Fa-f]{2})*$`\n\thTMLEncodedRegexString           = `&#[x]?([0-9a-fA-F]{2})|(&gt)|(&lt)|(&quot)|(&amp)+[;]?`\n\thTMLRegexString                  = `<[/]?([a-zA-Z]+).*?>`\n\tjWTRegexString                   = \"^[A-Za-z0-9-_]+\\\\.[A-Za-z0-9-_]+\\\\.[A-Za-z0-9-_]*$\"\n\tsplitParamsRegexString           = `'[^']*'|\\S+`\n\tbicRegexString                   = `^[A-Za-z]{6}[A-Za-z0-9]{2}([A-Za-z0-9]{3})?$`\n\tsemverRegexString                = `^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-((?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+([0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?$` // numbered capture groups https://semver.org/\n\tdnsRegexStringRFC1035Label       = \"^[a-z]([-a-z0-9]*[a-z0-9]){0,62}$\"\n\tcveRegexString                   = `^CVE-(1999|2\\d{3})-(0[^0]\\d{2}|0\\d[^0]\\d{1}|0\\d{2}[^0]|[1-9]{1}\\d{3,})$` // CVE Format Id https://cve.mitre.org/cve/identifiers/syntaxchange.html\n\tmongodbRegexString               = \"^[a-f\\\\d]{24}$\"\n\tcronRegexString                  = `(@(annually|yearly|monthly|weekly|daily|hourly|reboot))|(@every (\\d+(ns|us|µs|ms|s|m|h))+)|((((\\d+,)+\\d+|(\\d+(\\/|-)\\d+)|\\d+|\\*) ?){5,7})`\n\tspicedbIDRegexString             = `^(([a-zA-Z0-9/_|\\-=+]{1,})|\\*)$`\n\tspicedbPermissionRegexString     = \"^([a-z][a-z0-9_]{1,62}[a-z0-9])?$\"\n\tspicedbTypeRegexString           = \"^([a-z][a-z0-9_]{1,61}[a-z0-9]/)?[a-z][a-z0-9_]{1,62}[a-z0-9]$\"\n)\n\nvar (\n\talphaRegex                 = regexp.MustCompile(alphaRegexString)\n\talphaNumericRegex          = regexp.MustCompile(alphaNumericRegexString)\n\talphaUnicodeRegex          = regexp.MustCompile(alphaUnicodeRegexString)\n\talphaUnicodeNumericRegex   = regexp.MustCompile(alphaUnicodeNumericRegexString)\n\tnumericRegex               = regexp.MustCompile(numericRegexString)\n\tnumberRegex                = regexp.MustCompile(numberRegexString)\n\thexadecimalRegex           = regexp.MustCompile(hexadecimalRegexString)\n\thexColorRegex              = regexp.MustCompile(hexColorRegexString)\n\trgbRegex                   = regexp.MustCompile(rgbRegexString)\n\trgbaRegex                  = regexp.MustCompile(rgbaRegexString)\n\thslRegex                   = regexp.MustCompile(hslRegexString)\n\thslaRegex                  = regexp.MustCompile(hslaRegexString)\n\te164Regex                  = regexp.MustCompile(e164RegexString)\n\temailRegex                 = regexp.MustCompile(emailRegexString)\n\tbase64Regex                = regexp.MustCompile(base64RegexString)\n\tbase64URLRegex             = regexp.MustCompile(base64URLRegexString)\n\tbase64RawURLRegex          = regexp.MustCompile(base64RawURLRegexString)\n\tiSBN10Regex                = regexp.MustCompile(iSBN10RegexString)\n\tiSBN13Regex                = regexp.MustCompile(iSBN13RegexString)\n\tiSSNRegex                  = regexp.MustCompile(iSSNRegexString)\n\tuUID3Regex                 = regexp.MustCompile(uUID3RegexString)\n\tuUID4Regex                 = regexp.MustCompile(uUID4RegexString)\n\tuUID5Regex                 = regexp.MustCompile(uUID5RegexString)\n\tuUIDRegex                  = regexp.MustCompile(uUIDRegexString)\n\tuUID3RFC4122Regex          = regexp.MustCompile(uUID3RFC4122RegexString)\n\tuUID4RFC4122Regex          = regexp.MustCompile(uUID4RFC4122RegexString)\n\tuUID5RFC4122Regex          = regexp.MustCompile(uUID5RFC4122RegexString)\n\tuUIDRFC4122Regex           = regexp.MustCompile(uUIDRFC4122RegexString)\n\tuLIDRegex                  = regexp.MustCompile(uLIDRegexString)\n\tmd4Regex                   = regexp.MustCompile(md4RegexString)\n\tmd5Regex                   = regexp.MustCompile(md5RegexString)\n\tsha256Regex                = regexp.MustCompile(sha256RegexString)\n\tsha384Regex                = regexp.MustCompile(sha384RegexString)\n\tsha512Regex                = regexp.MustCompile(sha512RegexString)\n\tripemd128Regex             = regexp.MustCompile(ripemd128RegexString)\n\tripemd160Regex             = regexp.MustCompile(ripemd160RegexString)\n\ttiger128Regex              = regexp.MustCompile(tiger128RegexString)\n\ttiger160Regex              = regexp.MustCompile(tiger160RegexString)\n\ttiger192Regex              = regexp.MustCompile(tiger192RegexString)\n\taSCIIRegex                 = regexp.MustCompile(aSCIIRegexString)\n\tprintableASCIIRegex        = regexp.MustCompile(printableASCIIRegexString)\n\tmultibyteRegex             = regexp.MustCompile(multibyteRegexString)\n\tdataURIRegex               = regexp.MustCompile(dataURIRegexString)\n\tlatitudeRegex              = regexp.MustCompile(latitudeRegexString)\n\tlongitudeRegex             = regexp.MustCompile(longitudeRegexString)\n\tsSNRegex                   = regexp.MustCompile(sSNRegexString)\n\thostnameRegexRFC952        = regexp.MustCompile(hostnameRegexStringRFC952)\n\thostnameRegexRFC1123       = regexp.MustCompile(hostnameRegexStringRFC1123)\n\tfqdnRegexRFC1123           = regexp.MustCompile(fqdnRegexStringRFC1123)\n\tbtcAddressRegex            = regexp.MustCompile(btcAddressRegexString)\n\tbtcUpperAddressRegexBech32 = regexp.MustCompile(btcAddressUpperRegexStringBech32)\n\tbtcLowerAddressRegexBech32 = regexp.MustCompile(btcAddressLowerRegexStringBech32)\n\tethAddressRegex            = regexp.MustCompile(ethAddressRegexString)\n\tuRLEncodedRegex            = regexp.MustCompile(uRLEncodedRegexString)\n\thTMLEncodedRegex           = regexp.MustCompile(hTMLEncodedRegexString)\n\thTMLRegex                  = regexp.MustCompile(hTMLRegexString)\n\tjWTRegex                   = regexp.MustCompile(jWTRegexString)\n\tsplitParamsRegex           = regexp.MustCompile(splitParamsRegexString)\n\tbicRegex                   = regexp.MustCompile(bicRegexString)\n\tsemverRegex                = regexp.MustCompile(semverRegexString)\n\tdnsRegexRFC1035Label       = regexp.MustCompile(dnsRegexStringRFC1035Label)\n\tcveRegex                   = regexp.MustCompile(cveRegexString)\n\tmongodbRegex               = regexp.MustCompile(mongodbRegexString)\n\tcronRegex                  = regexp.MustCompile(cronRegexString)\n\tspicedbIDRegex             = regexp.MustCompile(spicedbIDRegexString)\n\tspicedbPermissionRegex     = regexp.MustCompile(spicedbPermissionRegexString)\n\tspicedbTypeRegex           = regexp.MustCompile(spicedbTypeRegexString)\n)\n"
  },
  {
    "path": "gossh/gin/validator/struct_level.go",
    "content": "package validator\n\nimport (\n\t\"context\"\n\t\"reflect\"\n)\n\n// StructLevelFunc accepts all values needed for struct level validation\ntype StructLevelFunc func(sl StructLevel)\n\n// StructLevelFuncCtx accepts all values needed for struct level validation\n// but also allows passing of contextual validation information via context.Context.\ntype StructLevelFuncCtx func(ctx context.Context, sl StructLevel)\n\n// wrapStructLevelFunc wraps normal StructLevelFunc makes it compatible with StructLevelFuncCtx\nfunc wrapStructLevelFunc(fn StructLevelFunc) StructLevelFuncCtx {\n\treturn func(ctx context.Context, sl StructLevel) {\n\t\tfn(sl)\n\t}\n}\n\n// StructLevel contains all the information and helper functions\n// to validate a struct\ntype StructLevel interface {\n\n\t// Validator returns the main validation object, in case one wants to call validations internally.\n\t// this is so you don't have to use anonymous functions to get access to the validate\n\t// instance.\n\tValidator() *Validate\n\n\t// Top returns the top level struct, if any\n\tTop() reflect.Value\n\n\t// Parent returns the current fields parent struct, if any\n\tParent() reflect.Value\n\n\t// Current returns the current struct.\n\tCurrent() reflect.Value\n\n\t// ExtractType gets the actual underlying type of field value.\n\t// It will dive into pointers, customTypes and return you the\n\t// underlying value and its kind.\n\tExtractType(field reflect.Value) (value reflect.Value, kind reflect.Kind, nullable bool)\n\n\t// ReportError reports an error just by passing the field and tag information\n\t//\n\t// NOTES:\n\t//\n\t// fieldName and altName get appended to the existing namespace that\n\t// validator is on. e.g. pass 'FirstName' or 'Names[0]' depending\n\t// on the nesting\n\t//\n\t// tag can be an existing validation tag or just something you make up\n\t// and process on the flip side it's up to you.\n\tReportError(field any, fieldName, structFieldName string, tag, param string)\n\n\t// ReportValidationErrors reports an error just by passing ValidationErrors\n\t//\n\t// NOTES:\n\t//\n\t// relativeNamespace and relativeActualNamespace get appended to the\n\t// existing namespace that validator is on.\n\t// e.g. pass 'User.FirstName' or 'Users[0].FirstName' depending\n\t// on the nesting. most of the time they will be blank, unless you validate\n\t// at a level lower the current field depth\n\tReportValidationErrors(relativeNamespace, relativeActualNamespace string, errs ValidationErrors)\n}\n\nvar _ StructLevel = new(validate)\n\n// Top returns the top level struct\n//\n// NOTE: this can be the same as the current struct being validated\n// if not is a nested struct.\n//\n// this is only called when within Struct and Field Level validation and\n// should not be relied upon for an accurate value otherwise.\nfunc (v *validate) Top() reflect.Value {\n\treturn v.top\n}\n\n// Parent returns the current structs parent\n//\n// NOTE: this can be the same as the current struct being validated\n// if not is a nested struct.\n//\n// this is only called when within Struct and Field Level validation and\n// should not be relied upon for an accurate value otherwise.\nfunc (v *validate) Parent() reflect.Value {\n\treturn v.slflParent\n}\n\n// Current returns the current struct.\nfunc (v *validate) Current() reflect.Value {\n\treturn v.slCurrent\n}\n\n// Validator returns the main validation object, in case one want to call validations internally.\nfunc (v *validate) Validator() *Validate {\n\treturn v.v\n}\n\n// ExtractType gets the actual underlying type of field value.\nfunc (v *validate) ExtractType(field reflect.Value) (reflect.Value, reflect.Kind, bool) {\n\treturn v.extractTypeInternal(field, false)\n}\n\n// ReportError reports an error just by passing the field and tag information\nfunc (v *validate) ReportError(field any, fieldName, structFieldName, tag, param string) {\n\n\tfv, kind, _ := v.extractTypeInternal(reflect.ValueOf(field), false)\n\n\tif len(structFieldName) == 0 {\n\t\tstructFieldName = fieldName\n\t}\n\n\tv.str1 = string(append(v.ns, fieldName...))\n\n\tif v.v.hasTagNameFunc || fieldName != structFieldName {\n\t\tv.str2 = string(append(v.actualNs, structFieldName...))\n\t} else {\n\t\tv.str2 = v.str1\n\t}\n\n\tif kind == reflect.Invalid {\n\n\t\tv.errs = append(v.errs,\n\t\t\t&fieldError{\n\t\t\t\tv:              v.v,\n\t\t\t\ttag:            tag,\n\t\t\t\tactualTag:      tag,\n\t\t\t\tns:             v.str1,\n\t\t\t\tstructNs:       v.str2,\n\t\t\t\tfieldLen:       uint8(len(fieldName)),\n\t\t\t\tstructfieldLen: uint8(len(structFieldName)),\n\t\t\t\tparam:          param,\n\t\t\t\tkind:           kind,\n\t\t\t},\n\t\t)\n\t\treturn\n\t}\n\n\tv.errs = append(v.errs,\n\t\t&fieldError{\n\t\t\tv:              v.v,\n\t\t\ttag:            tag,\n\t\t\tactualTag:      tag,\n\t\t\tns:             v.str1,\n\t\t\tstructNs:       v.str2,\n\t\t\tfieldLen:       uint8(len(fieldName)),\n\t\t\tstructfieldLen: uint8(len(structFieldName)),\n\t\t\tvalue:          fv.Interface(),\n\t\t\tparam:          param,\n\t\t\tkind:           kind,\n\t\t\ttyp:            fv.Type(),\n\t\t},\n\t)\n}\n\n// ReportValidationErrors reports ValidationErrors obtained from running validations within the Struct Level validation.\n//\n// NOTE: this function prepends the current namespace to the relative ones.\nfunc (v *validate) ReportValidationErrors(relativeNamespace, relativeStructNamespace string, errs ValidationErrors) {\n\n\tvar err *fieldError\n\n\tfor i := 0; i < len(errs); i++ {\n\n\t\terr = errs[i].(*fieldError)\n\t\terr.ns = string(append(append(v.ns, relativeNamespace...), err.ns...))\n\t\terr.structNs = string(append(append(v.actualNs, relativeStructNamespace...), err.structNs...))\n\n\t\tv.errs = append(v.errs, err)\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/validator/util.go",
    "content": "package validator\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\n// extractTypeInternal gets the actual underlying type of field value.\n// It will dive into pointers, customTypes and return you the\n// underlying value and it's kind.\nfunc (v *validate) extractTypeInternal(current reflect.Value, nullable bool) (reflect.Value, reflect.Kind, bool) {\n\nBEGIN:\n\tswitch current.Kind() {\n\tcase reflect.Ptr:\n\n\t\tnullable = true\n\n\t\tif current.IsNil() {\n\t\t\treturn current, reflect.Ptr, nullable\n\t\t}\n\n\t\tcurrent = current.Elem()\n\t\tgoto BEGIN\n\n\tcase reflect.Interface:\n\n\t\tnullable = true\n\n\t\tif current.IsNil() {\n\t\t\treturn current, reflect.Interface, nullable\n\t\t}\n\n\t\tcurrent = current.Elem()\n\t\tgoto BEGIN\n\n\tcase reflect.Invalid:\n\t\treturn current, reflect.Invalid, nullable\n\n\tdefault:\n\n\t\tif v.v.hasCustomFuncs {\n\n\t\t\tif fn, ok := v.v.customFuncs[current.Type()]; ok {\n\t\t\t\tcurrent = reflect.ValueOf(fn(current))\n\t\t\t\tgoto BEGIN\n\t\t\t}\n\t\t}\n\n\t\treturn current, current.Kind(), nullable\n\t}\n}\n\n// getStructFieldOKInternal traverses a struct to retrieve a specific field denoted by the provided namespace and\n// returns the field, field kind and whether is was successful in retrieving the field at all.\n//\n// NOTE: when not successful ok will be false, this can happen when a nested struct is nil and so the field\n// could not be retrieved because it didn't exist.\nfunc (v *validate) getStructFieldOKInternal(val reflect.Value, namespace string) (current reflect.Value, kind reflect.Kind, nullable bool, found bool) {\n\nBEGIN:\n\tcurrent, kind, nullable = v.ExtractType(val)\n\tif kind == reflect.Invalid {\n\t\treturn\n\t}\n\n\tif namespace == \"\" {\n\t\tfound = true\n\t\treturn\n\t}\n\n\tswitch kind {\n\n\tcase reflect.Ptr, reflect.Interface:\n\t\treturn\n\n\tcase reflect.Struct:\n\n\t\ttyp := current.Type()\n\t\tfld := namespace\n\t\tvar ns string\n\n\t\tif !typ.ConvertibleTo(timeType) {\n\n\t\t\tidx := strings.Index(namespace, namespaceSeparator)\n\n\t\t\tif idx != -1 {\n\t\t\t\tfld = namespace[:idx]\n\t\t\t\tns = namespace[idx+1:]\n\t\t\t} else {\n\t\t\t\tns = \"\"\n\t\t\t}\n\n\t\t\tbracketIdx := strings.Index(fld, leftBracket)\n\t\t\tif bracketIdx != -1 {\n\t\t\t\tfld = fld[:bracketIdx]\n\n\t\t\t\tns = namespace[bracketIdx:]\n\t\t\t}\n\n\t\t\tval = current.FieldByName(fld)\n\t\t\tnamespace = ns\n\t\t\tgoto BEGIN\n\t\t}\n\n\tcase reflect.Array, reflect.Slice:\n\t\tidx := strings.Index(namespace, leftBracket)\n\t\tidx2 := strings.Index(namespace, rightBracket)\n\n\t\tarrIdx, _ := strconv.Atoi(namespace[idx+1 : idx2])\n\n\t\tif arrIdx >= current.Len() {\n\t\t\treturn\n\t\t}\n\n\t\tstartIdx := idx2 + 1\n\n\t\tif startIdx < len(namespace) {\n\t\t\tif namespace[startIdx:startIdx+1] == namespaceSeparator {\n\t\t\t\tstartIdx++\n\t\t\t}\n\t\t}\n\n\t\tval = current.Index(arrIdx)\n\t\tnamespace = namespace[startIdx:]\n\t\tgoto BEGIN\n\n\tcase reflect.Map:\n\t\tidx := strings.Index(namespace, leftBracket) + 1\n\t\tidx2 := strings.Index(namespace, rightBracket)\n\n\t\tendIdx := idx2\n\n\t\tif endIdx+1 < len(namespace) {\n\t\t\tif namespace[endIdx+1:endIdx+2] == namespaceSeparator {\n\t\t\t\tendIdx++\n\t\t\t}\n\t\t}\n\n\t\tkey := namespace[idx:idx2]\n\n\t\tswitch current.Type().Key().Kind() {\n\t\tcase reflect.Int:\n\t\t\ti, _ := strconv.Atoi(key)\n\t\t\tval = current.MapIndex(reflect.ValueOf(i))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Int8:\n\t\t\ti, _ := strconv.ParseInt(key, 10, 8)\n\t\t\tval = current.MapIndex(reflect.ValueOf(int8(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Int16:\n\t\t\ti, _ := strconv.ParseInt(key, 10, 16)\n\t\t\tval = current.MapIndex(reflect.ValueOf(int16(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Int32:\n\t\t\ti, _ := strconv.ParseInt(key, 10, 32)\n\t\t\tval = current.MapIndex(reflect.ValueOf(int32(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Int64:\n\t\t\ti, _ := strconv.ParseInt(key, 10, 64)\n\t\t\tval = current.MapIndex(reflect.ValueOf(i))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Uint:\n\t\t\ti, _ := strconv.ParseUint(key, 10, 0)\n\t\t\tval = current.MapIndex(reflect.ValueOf(uint(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Uint8:\n\t\t\ti, _ := strconv.ParseUint(key, 10, 8)\n\t\t\tval = current.MapIndex(reflect.ValueOf(uint8(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Uint16:\n\t\t\ti, _ := strconv.ParseUint(key, 10, 16)\n\t\t\tval = current.MapIndex(reflect.ValueOf(uint16(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Uint32:\n\t\t\ti, _ := strconv.ParseUint(key, 10, 32)\n\t\t\tval = current.MapIndex(reflect.ValueOf(uint32(i)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Uint64:\n\t\t\ti, _ := strconv.ParseUint(key, 10, 64)\n\t\t\tval = current.MapIndex(reflect.ValueOf(i))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Float32:\n\t\t\tf, _ := strconv.ParseFloat(key, 32)\n\t\t\tval = current.MapIndex(reflect.ValueOf(float32(f)))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Float64:\n\t\t\tf, _ := strconv.ParseFloat(key, 64)\n\t\t\tval = current.MapIndex(reflect.ValueOf(f))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\tcase reflect.Bool:\n\t\t\tb, _ := strconv.ParseBool(key)\n\t\t\tval = current.MapIndex(reflect.ValueOf(b))\n\t\t\tnamespace = namespace[endIdx+1:]\n\n\t\t// reflect.Type = string\n\t\tdefault:\n\t\t\tval = current.MapIndex(reflect.ValueOf(key))\n\t\t\tnamespace = namespace[endIdx+1:]\n\t\t}\n\n\t\tgoto BEGIN\n\t}\n\n\t// if got here there was more namespace, cannot go any deeper\n\tpanic(\"Invalid field namespace\")\n}\n\n// asInt returns the parameter as a int64\n// or panics if it can't convert\nfunc asInt(param string) int64 {\n\ti, err := strconv.ParseInt(param, 0, 64)\n\tpanicIf(err)\n\n\treturn i\n}\n\n// asIntFromTimeDuration parses param as time.Duration and returns it as int64\n// or panics on error.\nfunc asIntFromTimeDuration(param string) int64 {\n\td, err := time.ParseDuration(param)\n\tif err != nil {\n\t\t// attempt parsing as an integer assuming nanosecond precision\n\t\treturn asInt(param)\n\t}\n\treturn int64(d)\n}\n\n// asIntFromType calls the proper function to parse param as int64,\n// given a field's Type t.\nfunc asIntFromType(t reflect.Type, param string) int64 {\n\tswitch t {\n\tcase timeDurationType:\n\t\treturn asIntFromTimeDuration(param)\n\tdefault:\n\t\treturn asInt(param)\n\t}\n}\n\n// asUint returns the parameter as a uint64\n// or panics if it can't convert\nfunc asUint(param string) uint64 {\n\n\ti, err := strconv.ParseUint(param, 0, 64)\n\tpanicIf(err)\n\n\treturn i\n}\n\n// asFloat64 returns the parameter as a float64\n// or panics if it can't convert\nfunc asFloat64(param string) float64 {\n\ti, err := strconv.ParseFloat(param, 64)\n\tpanicIf(err)\n\treturn i\n}\n\n// asFloat64 returns the parameter as a float64\n// or panics if it can't convert\nfunc asFloat32(param string) float64 {\n\ti, err := strconv.ParseFloat(param, 32)\n\tpanicIf(err)\n\treturn i\n}\n\n// asBool returns the parameter as a bool\n// or panics if it can't convert\nfunc asBool(param string) bool {\n\n\ti, err := strconv.ParseBool(param)\n\tpanicIf(err)\n\n\treturn i\n}\n\nfunc panicIf(err error) {\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n\n// Checks if field value matches regex. If fl.Field can be cast to Stringer, it uses the Stringer interfaces\n// String() return value. Otherwise, it uses fl.Field's String() value.\nfunc fieldMatchesRegexByStringerValOrString(regex *regexp.Regexp, fl FieldLevel) bool {\n\tswitch fl.Field().Kind() {\n\tcase reflect.String:\n\t\treturn regex.MatchString(fl.Field().String())\n\tdefault:\n\t\tif stringer, ok := fl.Field().Interface().(fmt.Stringer); ok {\n\t\t\treturn regex.MatchString(stringer.String())\n\t\t} else {\n\t\t\treturn regex.MatchString(fl.Field().String())\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gin/validator/validator.go",
    "content": "package validator\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n)\n\n// per validate construct\ntype validate struct {\n\tv              *Validate\n\ttop            reflect.Value\n\tns             []byte\n\tactualNs       []byte\n\terrs           ValidationErrors\n\tincludeExclude map[string]struct{} // reset only if StructPartial or StructExcept are called, no need otherwise\n\tffn            FilterFunc\n\tslflParent     reflect.Value // StructLevel & FieldLevel\n\tslCurrent      reflect.Value // StructLevel & FieldLevel\n\tflField        reflect.Value // StructLevel & FieldLevel\n\tcf             *cField       // StructLevel & FieldLevel\n\tct             *cTag         // StructLevel & FieldLevel\n\tmisc           []byte        // misc reusable\n\tstr1           string        // misc reusable\n\tstr2           string        // misc reusable\n\tfldIsPointer   bool          // StructLevel & FieldLevel\n\tisPartial      bool\n\thasExcludes    bool\n}\n\n// parent and current will be the same the first run of validateStruct\nfunc (v *validate) validateStruct(ctx context.Context, parent reflect.Value, current reflect.Value, typ reflect.Type, ns []byte, structNs []byte, ct *cTag) {\n\n\tcs, ok := v.v.structCache.Get(typ)\n\tif !ok {\n\t\tcs = v.v.extractStructCache(current, typ.Name())\n\t}\n\n\tif len(ns) == 0 && len(cs.name) != 0 {\n\n\t\tns = append(ns, cs.name...)\n\t\tns = append(ns, '.')\n\n\t\tstructNs = append(structNs, cs.name...)\n\t\tstructNs = append(structNs, '.')\n\t}\n\n\t// ct is nil on top level struct, and structs as fields that have no tag info\n\t// so if nil or if not nil and the structonly tag isn't present\n\tif ct == nil || ct.typeof != typeStructOnly {\n\n\t\tvar f *cField\n\n\t\tfor i := 0; i < len(cs.fields); i++ {\n\n\t\t\tf = cs.fields[i]\n\n\t\t\tif v.isPartial {\n\n\t\t\t\tif v.ffn != nil {\n\t\t\t\t\t// used with StructFiltered\n\t\t\t\t\tif v.ffn(append(structNs, f.name...)) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\n\t\t\t\t} else {\n\t\t\t\t\t// used with StructPartial & StructExcept\n\t\t\t\t\t_, ok = v.includeExclude[string(append(structNs, f.name...))]\n\n\t\t\t\t\tif (ok && v.hasExcludes) || (!ok && !v.hasExcludes) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tv.traverseField(ctx, current, current.Field(f.idx), ns, structNs, f, f.cTags)\n\t\t}\n\t}\n\n\t// check if any struct level validations, after all field validations already checked.\n\t// first iteration will have no info about nostructlevel tag, and is checked prior to\n\t// calling the next iteration of validateStruct called from traverseField.\n\tif cs.fn != nil {\n\n\t\tv.slflParent = parent\n\t\tv.slCurrent = current\n\t\tv.ns = ns\n\t\tv.actualNs = structNs\n\n\t\tcs.fn(ctx, v)\n\t}\n}\n\n// traverseField validates any field, be it a struct or single field, ensures it's validity and passes it along to be validated via it's tag options\nfunc (v *validate) traverseField(ctx context.Context, parent reflect.Value, current reflect.Value, ns []byte, structNs []byte, cf *cField, ct *cTag) {\n\tvar typ reflect.Type\n\tvar kind reflect.Kind\n\n\tcurrent, kind, v.fldIsPointer = v.extractTypeInternal(current, false)\n\n\tvar isNestedStruct bool\n\n\tswitch kind {\n\tcase reflect.Ptr, reflect.Interface, reflect.Invalid:\n\n\t\tif ct == nil {\n\t\t\treturn\n\t\t}\n\n\t\tif ct.typeof == typeOmitEmpty || ct.typeof == typeIsDefault {\n\t\t\treturn\n\t\t}\n\n\t\tif ct.typeof == typeOmitNil && (kind != reflect.Invalid && current.IsNil()) {\n\t\t\treturn\n\t\t}\n\n\t\tif ct.hasTag {\n\t\t\tif kind == reflect.Invalid {\n\t\t\t\tv.str1 = string(append(ns, cf.altName...))\n\t\t\t\tif v.v.hasTagNameFunc {\n\t\t\t\t\tv.str2 = string(append(structNs, cf.name...))\n\t\t\t\t} else {\n\t\t\t\t\tv.str2 = v.str1\n\t\t\t\t}\n\t\t\t\tv.errs = append(v.errs,\n\t\t\t\t\t&fieldError{\n\t\t\t\t\t\tv:              v.v,\n\t\t\t\t\t\ttag:            ct.aliasTag,\n\t\t\t\t\t\tactualTag:      ct.tag,\n\t\t\t\t\t\tns:             v.str1,\n\t\t\t\t\t\tstructNs:       v.str2,\n\t\t\t\t\t\tfieldLen:       uint8(len(cf.altName)),\n\t\t\t\t\t\tstructfieldLen: uint8(len(cf.name)),\n\t\t\t\t\t\tparam:          ct.param,\n\t\t\t\t\t\tkind:           kind,\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tv.str1 = string(append(ns, cf.altName...))\n\t\t\tif v.v.hasTagNameFunc {\n\t\t\t\tv.str2 = string(append(structNs, cf.name...))\n\t\t\t} else {\n\t\t\t\tv.str2 = v.str1\n\t\t\t}\n\t\t\tif !ct.runValidationWhenNil {\n\t\t\t\tv.errs = append(v.errs,\n\t\t\t\t\t&fieldError{\n\t\t\t\t\t\tv:              v.v,\n\t\t\t\t\t\ttag:            ct.aliasTag,\n\t\t\t\t\t\tactualTag:      ct.tag,\n\t\t\t\t\t\tns:             v.str1,\n\t\t\t\t\t\tstructNs:       v.str2,\n\t\t\t\t\t\tfieldLen:       uint8(len(cf.altName)),\n\t\t\t\t\t\tstructfieldLen: uint8(len(cf.name)),\n\t\t\t\t\t\tvalue:          current.Interface(),\n\t\t\t\t\t\tparam:          ct.param,\n\t\t\t\t\t\tkind:           kind,\n\t\t\t\t\t\ttyp:            current.Type(),\n\t\t\t\t\t},\n\t\t\t\t)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif kind == reflect.Invalid {\n\t\t\treturn\n\t\t}\n\n\tcase reflect.Struct:\n\t\tisNestedStruct = !current.Type().ConvertibleTo(timeType)\n\t\t// For backward compatibility before struct level validation tags were supported\n\t\t// as there were a number of projects relying on `required` not failing on non-pointer\n\t\t// structs. Since it's basically nonsensical to use `required` with a non-pointer struct\n\t\t// are explicitly skipping the required validation for it. This WILL be removed in the\n\t\t// next major version.\n\t\tif isNestedStruct && !v.v.requiredStructEnabled && ct != nil && ct.tag == requiredTag {\n\t\t\tct = ct.next\n\t\t}\n\t}\n\n\ttyp = current.Type()\n\nOUTER:\n\tfor {\n\t\tif ct == nil || !ct.hasTag || (isNestedStruct && len(cf.name) == 0) {\n\t\t\t// isNestedStruct check here\n\t\t\tif isNestedStruct {\n\t\t\t\t// if len == 0 then validating using 'Var' or 'VarWithValue'\n\t\t\t\t// Var - doesn't make much sense to do it that way, should call 'Struct', but no harm...\n\t\t\t\t// VarWithField - this allows for validating against each field within the struct against a specific value\n\t\t\t\t//                pretty handy in certain situations\n\t\t\t\tif len(cf.name) > 0 {\n\t\t\t\t\tns = append(append(ns, cf.altName...), '.')\n\t\t\t\t\tstructNs = append(append(structNs, cf.name...), '.')\n\t\t\t\t}\n\n\t\t\t\tv.validateStruct(ctx, parent, current, typ, ns, structNs, ct)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tswitch ct.typeof {\n\t\tcase typeNoStructLevel:\n\t\t\treturn\n\n\t\tcase typeStructOnly:\n\t\t\tif isNestedStruct {\n\t\t\t\t// if len == 0 then validating using 'Var' or 'VarWithValue'\n\t\t\t\t// Var - doesn't make much sense to do it that way, should call 'Struct', but no harm...\n\t\t\t\t// VarWithField - this allows for validating against each field within the struct against a specific value\n\t\t\t\t//                pretty handy in certain situations\n\t\t\t\tif len(cf.name) > 0 {\n\t\t\t\t\tns = append(append(ns, cf.altName...), '.')\n\t\t\t\t\tstructNs = append(append(structNs, cf.name...), '.')\n\t\t\t\t}\n\n\t\t\t\tv.validateStruct(ctx, parent, current, typ, ns, structNs, ct)\n\t\t\t}\n\t\t\treturn\n\n\t\tcase typeOmitEmpty:\n\n\t\t\t// set Field Level fields\n\t\t\tv.slflParent = parent\n\t\t\tv.flField = current\n\t\t\tv.cf = cf\n\t\t\tv.ct = ct\n\n\t\t\tif !hasValue(v) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tct = ct.next\n\t\t\tcontinue\n\n\t\tcase typeOmitNil:\n\t\t\tv.slflParent = parent\n\t\t\tv.flField = current\n\t\t\tv.cf = cf\n\t\t\tv.ct = ct\n\n\t\t\tswitch field := v.Field(); field.Kind() {\n\t\t\tcase reflect.Slice, reflect.Map, reflect.Ptr, reflect.Interface, reflect.Chan, reflect.Func:\n\t\t\t\tif field.IsNil() {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tif v.fldIsPointer && field.Interface() == nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tct = ct.next\n\t\t\tcontinue\n\n\t\tcase typeEndKeys:\n\t\t\treturn\n\n\t\tcase typeDive:\n\n\t\t\tct = ct.next\n\n\t\t\t// traverse slice or map here\n\t\t\t// or panic ;)\n\t\t\tswitch kind {\n\t\t\tcase reflect.Slice, reflect.Array:\n\n\t\t\t\tvar i64 int64\n\t\t\t\treusableCF := &cField{}\n\n\t\t\t\tfor i := 0; i < current.Len(); i++ {\n\n\t\t\t\t\ti64 = int64(i)\n\n\t\t\t\t\tv.misc = append(v.misc[0:0], cf.name...)\n\t\t\t\t\tv.misc = append(v.misc, '[')\n\t\t\t\t\tv.misc = strconv.AppendInt(v.misc, i64, 10)\n\t\t\t\t\tv.misc = append(v.misc, ']')\n\n\t\t\t\t\treusableCF.name = string(v.misc)\n\n\t\t\t\t\tif cf.namesEqual {\n\t\t\t\t\t\treusableCF.altName = reusableCF.name\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\tv.misc = append(v.misc[0:0], cf.altName...)\n\t\t\t\t\t\tv.misc = append(v.misc, '[')\n\t\t\t\t\t\tv.misc = strconv.AppendInt(v.misc, i64, 10)\n\t\t\t\t\t\tv.misc = append(v.misc, ']')\n\n\t\t\t\t\t\treusableCF.altName = string(v.misc)\n\t\t\t\t\t}\n\t\t\t\t\tv.traverseField(ctx, parent, current.Index(i), ns, structNs, reusableCF, ct)\n\t\t\t\t}\n\n\t\t\tcase reflect.Map:\n\n\t\t\t\tvar pv string\n\t\t\t\treusableCF := &cField{}\n\n\t\t\t\tfor _, key := range current.MapKeys() {\n\n\t\t\t\t\tpv = fmt.Sprintf(\"%v\", key.Interface())\n\n\t\t\t\t\tv.misc = append(v.misc[0:0], cf.name...)\n\t\t\t\t\tv.misc = append(v.misc, '[')\n\t\t\t\t\tv.misc = append(v.misc, pv...)\n\t\t\t\t\tv.misc = append(v.misc, ']')\n\n\t\t\t\t\treusableCF.name = string(v.misc)\n\n\t\t\t\t\tif cf.namesEqual {\n\t\t\t\t\t\treusableCF.altName = reusableCF.name\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv.misc = append(v.misc[0:0], cf.altName...)\n\t\t\t\t\t\tv.misc = append(v.misc, '[')\n\t\t\t\t\t\tv.misc = append(v.misc, pv...)\n\t\t\t\t\t\tv.misc = append(v.misc, ']')\n\n\t\t\t\t\t\treusableCF.altName = string(v.misc)\n\t\t\t\t\t}\n\n\t\t\t\t\tif ct != nil && ct.typeof == typeKeys && ct.keys != nil {\n\t\t\t\t\t\tv.traverseField(ctx, parent, key, ns, structNs, reusableCF, ct.keys)\n\t\t\t\t\t\t// can be nil when just keys being validated\n\t\t\t\t\t\tif ct.next != nil {\n\t\t\t\t\t\t\tv.traverseField(ctx, parent, current.MapIndex(key), ns, structNs, reusableCF, ct.next)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv.traverseField(ctx, parent, current.MapIndex(key), ns, structNs, reusableCF, ct)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tdefault:\n\t\t\t\t// throw error, if not a slice or map then should not have gotten here\n\t\t\t\t// bad dive tag\n\t\t\t\tpanic(\"dive error! can't dive on a non slice or map\")\n\t\t\t}\n\n\t\t\treturn\n\n\t\tcase typeOr:\n\n\t\t\tv.misc = v.misc[0:0]\n\n\t\t\tfor {\n\n\t\t\t\t// set Field Level fields\n\t\t\t\tv.slflParent = parent\n\t\t\t\tv.flField = current\n\t\t\t\tv.cf = cf\n\t\t\t\tv.ct = ct\n\n\t\t\t\tif ct.fn(ctx, v) {\n\t\t\t\t\tif ct.isBlockEnd {\n\t\t\t\t\t\tct = ct.next\n\t\t\t\t\t\tcontinue OUTER\n\t\t\t\t\t}\n\n\t\t\t\t\t// drain rest of the 'or' values, then continue or leave\n\t\t\t\t\tfor {\n\n\t\t\t\t\t\tct = ct.next\n\n\t\t\t\t\t\tif ct == nil {\n\t\t\t\t\t\t\tcontinue OUTER\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ct.typeof != typeOr {\n\t\t\t\t\t\t\tcontinue OUTER\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ct.isBlockEnd {\n\t\t\t\t\t\t\tct = ct.next\n\t\t\t\t\t\t\tcontinue OUTER\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tv.misc = append(v.misc, '|')\n\t\t\t\tv.misc = append(v.misc, ct.tag...)\n\n\t\t\t\tif ct.hasParam {\n\t\t\t\t\tv.misc = append(v.misc, '=')\n\t\t\t\t\tv.misc = append(v.misc, ct.param...)\n\t\t\t\t}\n\n\t\t\t\tif ct.isBlockEnd || ct.next == nil {\n\t\t\t\t\t// if we get here, no valid 'or' value and no more tags\n\t\t\t\t\tv.str1 = string(append(ns, cf.altName...))\n\n\t\t\t\t\tif v.v.hasTagNameFunc {\n\t\t\t\t\t\tv.str2 = string(append(structNs, cf.name...))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tv.str2 = v.str1\n\t\t\t\t\t}\n\n\t\t\t\t\tif ct.hasAlias {\n\n\t\t\t\t\t\tv.errs = append(v.errs,\n\t\t\t\t\t\t\t&fieldError{\n\t\t\t\t\t\t\t\tv:              v.v,\n\t\t\t\t\t\t\t\ttag:            ct.aliasTag,\n\t\t\t\t\t\t\t\tactualTag:      ct.actualAliasTag,\n\t\t\t\t\t\t\t\tns:             v.str1,\n\t\t\t\t\t\t\t\tstructNs:       v.str2,\n\t\t\t\t\t\t\t\tfieldLen:       uint8(len(cf.altName)),\n\t\t\t\t\t\t\t\tstructfieldLen: uint8(len(cf.name)),\n\t\t\t\t\t\t\t\tvalue:          current.Interface(),\n\t\t\t\t\t\t\t\tparam:          ct.param,\n\t\t\t\t\t\t\t\tkind:           kind,\n\t\t\t\t\t\t\t\ttyp:            typ,\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\ttVal := string(v.misc)[1:]\n\n\t\t\t\t\t\tv.errs = append(v.errs,\n\t\t\t\t\t\t\t&fieldError{\n\t\t\t\t\t\t\t\tv:              v.v,\n\t\t\t\t\t\t\t\ttag:            tVal,\n\t\t\t\t\t\t\t\tactualTag:      tVal,\n\t\t\t\t\t\t\t\tns:             v.str1,\n\t\t\t\t\t\t\t\tstructNs:       v.str2,\n\t\t\t\t\t\t\t\tfieldLen:       uint8(len(cf.altName)),\n\t\t\t\t\t\t\t\tstructfieldLen: uint8(len(cf.name)),\n\t\t\t\t\t\t\t\tvalue:          current.Interface(),\n\t\t\t\t\t\t\t\tparam:          ct.param,\n\t\t\t\t\t\t\t\tkind:           kind,\n\t\t\t\t\t\t\t\ttyp:            typ,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tct = ct.next\n\t\t\t}\n\n\t\tdefault:\n\n\t\t\t// set Field Level fields\n\t\t\tv.slflParent = parent\n\t\t\tv.flField = current\n\t\t\tv.cf = cf\n\t\t\tv.ct = ct\n\n\t\t\tif !ct.fn(ctx, v) {\n\t\t\t\tv.str1 = string(append(ns, cf.altName...))\n\n\t\t\t\tif v.v.hasTagNameFunc {\n\t\t\t\t\tv.str2 = string(append(structNs, cf.name...))\n\t\t\t\t} else {\n\t\t\t\t\tv.str2 = v.str1\n\t\t\t\t}\n\n\t\t\t\tv.errs = append(v.errs,\n\t\t\t\t\t&fieldError{\n\t\t\t\t\t\tv:              v.v,\n\t\t\t\t\t\ttag:            ct.aliasTag,\n\t\t\t\t\t\tactualTag:      ct.tag,\n\t\t\t\t\t\tns:             v.str1,\n\t\t\t\t\t\tstructNs:       v.str2,\n\t\t\t\t\t\tfieldLen:       uint8(len(cf.altName)),\n\t\t\t\t\t\tstructfieldLen: uint8(len(cf.name)),\n\t\t\t\t\t\tvalue:          current.Interface(),\n\t\t\t\t\t\tparam:          ct.param,\n\t\t\t\t\t\tkind:           kind,\n\t\t\t\t\t\ttyp:            typ,\n\t\t\t\t\t},\n\t\t\t\t)\n\n\t\t\t\treturn\n\t\t\t}\n\t\t\tct = ct.next\n\t\t}\n\t}\n\n}\n"
  },
  {
    "path": "gossh/gin/validator/validator_instance.go",
    "content": "package validator\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\tdefaultTagName        = \"validate\"\n\tutf8HexComma          = \"0x2C\"\n\tutf8Pipe              = \"0x7C\"\n\ttagSeparator          = \",\"\n\torSeparator           = \"|\"\n\ttagKeySeparator       = \"=\"\n\tstructOnlyTag         = \"structonly\"\n\tnoStructLevelTag      = \"nostructlevel\"\n\tomitempty             = \"omitempty\"\n\tomitnil               = \"omitnil\"\n\tisdefault             = \"isdefault\"\n\trequiredWithoutAllTag = \"required_without_all\"\n\trequiredWithoutTag    = \"required_without\"\n\trequiredWithTag       = \"required_with\"\n\trequiredWithAllTag    = \"required_with_all\"\n\trequiredIfTag         = \"required_if\"\n\trequiredUnlessTag     = \"required_unless\"\n\tskipUnlessTag         = \"skip_unless\"\n\texcludedWithoutAllTag = \"excluded_without_all\"\n\texcludedWithoutTag    = \"excluded_without\"\n\texcludedWithTag       = \"excluded_with\"\n\texcludedWithAllTag    = \"excluded_with_all\"\n\texcludedIfTag         = \"excluded_if\"\n\texcludedUnlessTag     = \"excluded_unless\"\n\tskipValidationTag     = \"-\"\n\tdiveTag               = \"dive\"\n\tkeysTag               = \"keys\"\n\tendKeysTag            = \"endkeys\"\n\trequiredTag           = \"required\"\n\tnamespaceSeparator    = \".\"\n\tleftBracket           = \"[\"\n\trightBracket          = \"]\"\n\trestrictedTagChars    = \".[],|=+()`~!@#$%^&*\\\\\\\"/?<>{}\"\n\trestrictedAliasErr    = \"Alias '%s' either contains restricted characters or is the same as a restricted tag needed for normal operation\"\n\trestrictedTagErr      = \"Tag '%s' either contains restricted characters or is the same as a restricted tag needed for normal operation\"\n)\n\nvar (\n\ttimeDurationType = reflect.TypeOf(time.Duration(0))\n\ttimeType         = reflect.TypeOf(time.Time{})\n\n\tbyteSliceType = reflect.TypeOf([]byte{})\n\n\tdefaultCField = &cField{namesEqual: true}\n)\n\n// FilterFunc is the type used to filter fields using\n// StructFiltered(...) function.\n// returning true results in the field being filtered/skipped from\n// validation\ntype FilterFunc func(ns []byte) bool\n\n// CustomTypeFunc allows for overriding or adding custom field type handler functions\n// field = field value of the type to return a value to be validated\n// example Valuer from sql drive see https://golang.org/src/database/sql/driver/types.go?s=1210:1293#L29\ntype CustomTypeFunc func(field reflect.Value) any\n\n// TagNameFunc allows for adding of a custom tag name parser\ntype TagNameFunc func(field reflect.StructField) string\n\ntype internalValidationFuncWrapper struct {\n\tfn                FuncCtx\n\trunValidatinOnNil bool\n}\n\n// Validate contains the validator settings and cache\ntype Validate struct {\n\ttagName               string\n\tpool                  *sync.Pool\n\ttagNameFunc           TagNameFunc\n\tstructLevelFuncs      map[reflect.Type]StructLevelFuncCtx\n\tcustomFuncs           map[reflect.Type]CustomTypeFunc\n\taliases               map[string]string\n\tvalidations           map[string]internalValidationFuncWrapper\n\trules                 map[reflect.Type]map[string]string\n\ttagCache              *tagCache\n\tstructCache           *structCache\n\thasCustomFuncs        bool\n\thasTagNameFunc        bool\n\trequiredStructEnabled bool\n}\n\n// New returns a new instance of 'validate' with sane defaults.\n// Validate is designed to be thread-safe and used as a singleton instance.\n// It caches information about your struct and validations,\n// in essence only parsing your validation tags once per struct type.\n// Using multiple instances neglects the benefit of caching.\nfunc New(options ...Option) *Validate {\n\n\ttc := new(tagCache)\n\ttc.m.Store(make(map[string]*cTag))\n\n\tsc := new(structCache)\n\tsc.m.Store(make(map[reflect.Type]*cStruct))\n\n\tv := &Validate{\n\t\ttagName:     defaultTagName,\n\t\taliases:     make(map[string]string, len(bakedInAliases)),\n\t\tvalidations: make(map[string]internalValidationFuncWrapper, len(bakedInValidators)),\n\t\ttagCache:    tc,\n\t\tstructCache: sc,\n\t}\n\n\t// must copy alias validators for separate validations to be used in each validator instance\n\tfor k, val := range bakedInAliases {\n\t\tv.RegisterAlias(k, val)\n\t}\n\n\t// must copy validators for separate validations to be used in each instance\n\tfor k, val := range bakedInValidators {\n\n\t\tswitch k {\n\t\t// these require that even if the value is nil that the validation should run, omitempty still overrides this behaviour\n\t\tcase requiredIfTag, requiredUnlessTag, requiredWithTag, requiredWithAllTag, requiredWithoutTag, requiredWithoutAllTag,\n\t\t\texcludedIfTag, excludedUnlessTag, excludedWithTag, excludedWithAllTag, excludedWithoutTag, excludedWithoutAllTag,\n\t\t\tskipUnlessTag:\n\t\t\t_ = v.registerValidation(k, wrapFunc(val), true, true)\n\t\tdefault:\n\t\t\t// no need to error check here, baked in will always be valid\n\t\t\t_ = v.registerValidation(k, wrapFunc(val), true, false)\n\t\t}\n\t}\n\n\tv.pool = &sync.Pool{\n\t\tNew: func() any {\n\t\t\treturn &validate{\n\t\t\t\tv:        v,\n\t\t\t\tns:       make([]byte, 0, 64),\n\t\t\t\tactualNs: make([]byte, 0, 64),\n\t\t\t\tmisc:     make([]byte, 32),\n\t\t\t}\n\t\t},\n\t}\n\n\tfor _, o := range options {\n\t\to(v)\n\t}\n\treturn v\n}\n\n// SetTagName allows for changing of the default tag name of 'validate'\nfunc (v *Validate) SetTagName(name string) {\n\tv.tagName = name\n}\n\n// ValidateMapCtx validates a map using a map of validation rules and allows passing of contextual\n// validation information via context.Context.\nfunc (v Validate) ValidateMapCtx(ctx context.Context, data map[string]any, rules map[string]any) map[string]any {\n\terrs := make(map[string]any)\n\tfor field, rule := range rules {\n\t\tif ruleObj, ok := rule.(map[string]any); ok {\n\t\t\tif dataObj, ok := data[field].(map[string]any); ok {\n\t\t\t\terr := v.ValidateMapCtx(ctx, dataObj, ruleObj)\n\t\t\t\tif len(err) > 0 {\n\t\t\t\t\terrs[field] = err\n\t\t\t\t}\n\t\t\t} else if dataObjs, ok := data[field].([]map[string]any); ok {\n\t\t\t\tfor _, obj := range dataObjs {\n\t\t\t\t\terr := v.ValidateMapCtx(ctx, obj, ruleObj)\n\t\t\t\t\tif len(err) > 0 {\n\t\t\t\t\t\terrs[field] = err\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terrs[field] = errors.New(\"The field: '\" + field + \"' is not a map to dive\")\n\t\t\t}\n\t\t} else if ruleStr, ok := rule.(string); ok {\n\t\t\terr := v.VarCtx(ctx, data[field], ruleStr)\n\t\t\tif err != nil {\n\t\t\t\terrs[field] = err\n\t\t\t}\n\t\t}\n\t}\n\treturn errs\n}\n\n// ValidateMap validates map data from a map of tags\nfunc (v *Validate) ValidateMap(data map[string]any, rules map[string]any) map[string]any {\n\treturn v.ValidateMapCtx(context.Background(), data, rules)\n}\n\n// RegisterTagNameFunc registers a function to get alternate names for StructFields.\n//\n// eg. to use the names which have been specified for JSON representations of structs, rather than normal Go field names:\n//\n//\tvalidate.RegisterTagNameFunc(func(fld reflect.StructField) string {\n//\t    name := strings.SplitN(fld.Tag.Get(\"json\"), \",\", 2)[0]\n//\t    // skip if tag key says it should be ignored\n//\t    if name == \"-\" {\n//\t        return \"\"\n//\t    }\n//\t    return name\n//\t})\nfunc (v *Validate) RegisterTagNameFunc(fn TagNameFunc) {\n\tv.tagNameFunc = fn\n\tv.hasTagNameFunc = true\n}\n\n// RegisterValidation adds a validation with the given tag\n//\n// NOTES:\n// - if the key already exists, the previous validation function will be replaced.\n// - this method is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterValidation(tag string, fn Func, callValidationEvenIfNull ...bool) error {\n\treturn v.RegisterValidationCtx(tag, wrapFunc(fn), callValidationEvenIfNull...)\n}\n\n// RegisterValidationCtx does the same as RegisterValidation on accepts a FuncCtx validation\n// allowing context.Context validation support.\nfunc (v *Validate) RegisterValidationCtx(tag string, fn FuncCtx, callValidationEvenIfNull ...bool) error {\n\tvar nilCheckable bool\n\tif len(callValidationEvenIfNull) > 0 {\n\t\tnilCheckable = callValidationEvenIfNull[0]\n\t}\n\treturn v.registerValidation(tag, fn, false, nilCheckable)\n}\n\nfunc (v *Validate) registerValidation(tag string, fn FuncCtx, bakedIn bool, nilCheckable bool) error {\n\tif len(tag) == 0 {\n\t\treturn errors.New(\"function Key cannot be empty\")\n\t}\n\n\tif fn == nil {\n\t\treturn errors.New(\"function cannot be empty\")\n\t}\n\n\t_, ok := restrictedTags[tag]\n\tif !bakedIn && (ok || strings.ContainsAny(tag, restrictedTagChars)) {\n\t\tpanic(fmt.Sprintf(restrictedTagErr, tag))\n\t}\n\tv.validations[tag] = internalValidationFuncWrapper{fn: fn, runValidatinOnNil: nilCheckable}\n\treturn nil\n}\n\n// RegisterAlias registers a mapping of a single validation tag that\n// defines a common or complex set of validation(s) to simplify adding validation\n// to structs.\n//\n// NOTE: this function is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterAlias(alias, tags string) {\n\n\t_, ok := restrictedTags[alias]\n\n\tif ok || strings.ContainsAny(alias, restrictedTagChars) {\n\t\tpanic(fmt.Sprintf(restrictedAliasErr, alias))\n\t}\n\n\tv.aliases[alias] = tags\n}\n\n// RegisterStructValidation registers a StructLevelFunc against a number of types.\n//\n// NOTE:\n// - this method is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterStructValidation(fn StructLevelFunc, types ...any) {\n\tv.RegisterStructValidationCtx(wrapStructLevelFunc(fn), types...)\n}\n\n// RegisterStructValidationCtx registers a StructLevelFuncCtx against a number of types and allows passing\n// of contextual validation information via context.Context.\n//\n// NOTE:\n// - this method is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterStructValidationCtx(fn StructLevelFuncCtx, types ...any) {\n\n\tif v.structLevelFuncs == nil {\n\t\tv.structLevelFuncs = make(map[reflect.Type]StructLevelFuncCtx)\n\t}\n\n\tfor _, t := range types {\n\t\ttv := reflect.ValueOf(t)\n\t\tif tv.Kind() == reflect.Ptr {\n\t\t\tt = reflect.Indirect(tv).Interface()\n\t\t}\n\n\t\tv.structLevelFuncs[reflect.TypeOf(t)] = fn\n\t}\n}\n\n// RegisterStructValidationMapRules registers validate map rules.\n// Be aware that map validation rules supersede those defined on a/the struct if present.\n//\n// NOTE: this method is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterStructValidationMapRules(rules map[string]string, types ...any) {\n\tif v.rules == nil {\n\t\tv.rules = make(map[reflect.Type]map[string]string)\n\t}\n\n\tdeepCopyRules := make(map[string]string)\n\tfor i, rule := range rules {\n\t\tdeepCopyRules[i] = rule\n\t}\n\n\tfor _, t := range types {\n\t\ttyp := reflect.TypeOf(t)\n\n\t\tif typ.Kind() == reflect.Ptr {\n\t\t\ttyp = typ.Elem()\n\t\t}\n\n\t\tif typ.Kind() != reflect.Struct {\n\t\t\tcontinue\n\t\t}\n\t\tv.rules[typ] = deepCopyRules\n\t}\n}\n\n// RegisterCustomTypeFunc registers a CustomTypeFunc against a number of types\n//\n// NOTE: this method is not thread-safe it is intended that these all be registered prior to any validation\nfunc (v *Validate) RegisterCustomTypeFunc(fn CustomTypeFunc, types ...any) {\n\n\tif v.customFuncs == nil {\n\t\tv.customFuncs = make(map[reflect.Type]CustomTypeFunc)\n\t}\n\n\tfor _, t := range types {\n\t\tv.customFuncs[reflect.TypeOf(t)] = fn\n\t}\n\n\tv.hasCustomFuncs = true\n}\n\n// Struct validates a structs exposed fields, and automatically validates nested structs, unless otherwise specified.\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) Struct(s any) error {\n\treturn v.StructCtx(context.Background(), s)\n}\n\n// StructCtx validates a structs exposed fields, and automatically validates nested structs, unless otherwise specified\n// and also allows passing of context.Context for contextual validation information.\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructCtx(ctx context.Context, s any) (err error) {\n\n\tval := reflect.ValueOf(s)\n\ttop := val\n\n\tif val.Kind() == reflect.Ptr && !val.IsNil() {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() != reflect.Struct || val.Type().ConvertibleTo(timeType) {\n\t\treturn &InvalidValidationError{Type: reflect.TypeOf(s)}\n\t}\n\n\t// good to validate\n\tvd := v.pool.Get().(*validate)\n\tvd.top = top\n\tvd.isPartial = false\n\t// vd.hasExcludes = false // only need to reset in StructPartial and StructExcept\n\n\tvd.validateStruct(ctx, top, val, val.Type(), vd.ns[0:0], vd.actualNs[0:0], nil)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\n\tv.pool.Put(vd)\n\n\treturn\n}\n\n// StructFiltered validates a structs exposed fields, that pass the FilterFunc check and automatically validates\n// nested structs, unless otherwise specified.\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructFiltered(s any, fn FilterFunc) error {\n\treturn v.StructFilteredCtx(context.Background(), s, fn)\n}\n\n// StructFilteredCtx validates a structs exposed fields, that pass the FilterFunc check and automatically validates\n// nested structs, unless otherwise specified and also allows passing of contextual validation information via\n// context.Context\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructFilteredCtx(ctx context.Context, s any, fn FilterFunc) (err error) {\n\tval := reflect.ValueOf(s)\n\ttop := val\n\n\tif val.Kind() == reflect.Ptr && !val.IsNil() {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() != reflect.Struct || val.Type().ConvertibleTo(timeType) {\n\t\treturn &InvalidValidationError{Type: reflect.TypeOf(s)}\n\t}\n\n\t// good to validate\n\tvd := v.pool.Get().(*validate)\n\tvd.top = top\n\tvd.isPartial = true\n\tvd.ffn = fn\n\t// vd.hasExcludes = false // only need to reset in StructPartial and StructExcept\n\n\tvd.validateStruct(ctx, top, val, val.Type(), vd.ns[0:0], vd.actualNs[0:0], nil)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\n\tv.pool.Put(vd)\n\n\treturn\n}\n\n// StructPartial validates the fields passed in only, ignoring all others.\n// Fields may be provided in a namespaced fashion relative to the  struct provided\n// eg. NestedStruct.Field or NestedArrayField[0].Struct.Name\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructPartial(s any, fields ...string) error {\n\treturn v.StructPartialCtx(context.Background(), s, fields...)\n}\n\n// StructPartialCtx validates the fields passed in only, ignoring all others and allows passing of contextual\n// validation information via context.Context\n// Fields may be provided in a namespaced fashion relative to the  struct provided\n// eg. NestedStruct.Field or NestedArrayField[0].Struct.Name\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructPartialCtx(ctx context.Context, s any, fields ...string) (err error) {\n\tval := reflect.ValueOf(s)\n\ttop := val\n\n\tif val.Kind() == reflect.Ptr && !val.IsNil() {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() != reflect.Struct || val.Type().ConvertibleTo(timeType) {\n\t\treturn &InvalidValidationError{Type: reflect.TypeOf(s)}\n\t}\n\n\t// good to validate\n\tvd := v.pool.Get().(*validate)\n\tvd.top = top\n\tvd.isPartial = true\n\tvd.ffn = nil\n\tvd.hasExcludes = false\n\tvd.includeExclude = make(map[string]struct{})\n\n\ttyp := val.Type()\n\tname := typ.Name()\n\n\tfor _, k := range fields {\n\n\t\tflds := strings.Split(k, namespaceSeparator)\n\t\tif len(flds) > 0 {\n\n\t\t\tvd.misc = append(vd.misc[0:0], name...)\n\t\t\t// Don't append empty name for unnamed structs\n\t\t\tif len(vd.misc) != 0 {\n\t\t\t\tvd.misc = append(vd.misc, '.')\n\t\t\t}\n\n\t\t\tfor _, s := range flds {\n\n\t\t\t\tidx := strings.Index(s, leftBracket)\n\n\t\t\t\tif idx != -1 {\n\t\t\t\t\tfor idx != -1 {\n\t\t\t\t\t\tvd.misc = append(vd.misc, s[:idx]...)\n\t\t\t\t\t\tvd.includeExclude[string(vd.misc)] = struct{}{}\n\n\t\t\t\t\t\tidx2 := strings.Index(s, rightBracket)\n\t\t\t\t\t\tidx2++\n\t\t\t\t\t\tvd.misc = append(vd.misc, s[idx:idx2]...)\n\t\t\t\t\t\tvd.includeExclude[string(vd.misc)] = struct{}{}\n\t\t\t\t\t\ts = s[idx2:]\n\t\t\t\t\t\tidx = strings.Index(s, leftBracket)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\n\t\t\t\t\tvd.misc = append(vd.misc, s...)\n\t\t\t\t\tvd.includeExclude[string(vd.misc)] = struct{}{}\n\t\t\t\t}\n\n\t\t\t\tvd.misc = append(vd.misc, '.')\n\t\t\t}\n\t\t}\n\t}\n\n\tvd.validateStruct(ctx, top, val, typ, vd.ns[0:0], vd.actualNs[0:0], nil)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\n\tv.pool.Put(vd)\n\n\treturn\n}\n\n// StructExcept validates all fields except the ones passed in.\n// Fields may be provided in a namespaced fashion relative to the  struct provided\n// i.e. NestedStruct.Field or NestedArrayField[0].Struct.Name\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructExcept(s any, fields ...string) error {\n\treturn v.StructExceptCtx(context.Background(), s, fields...)\n}\n\n// StructExceptCtx validates all fields except the ones passed in and allows passing of contextual\n// validation information via context.Context\n// Fields may be provided in a namespaced fashion relative to the  struct provided\n// i.e. NestedStruct.Field or NestedArrayField[0].Struct.Name\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\nfunc (v *Validate) StructExceptCtx(ctx context.Context, s any, fields ...string) (err error) {\n\tval := reflect.ValueOf(s)\n\ttop := val\n\n\tif val.Kind() == reflect.Ptr && !val.IsNil() {\n\t\tval = val.Elem()\n\t}\n\n\tif val.Kind() != reflect.Struct || val.Type().ConvertibleTo(timeType) {\n\t\treturn &InvalidValidationError{Type: reflect.TypeOf(s)}\n\t}\n\n\t// good to validate\n\tvd := v.pool.Get().(*validate)\n\tvd.top = top\n\tvd.isPartial = true\n\tvd.ffn = nil\n\tvd.hasExcludes = true\n\tvd.includeExclude = make(map[string]struct{})\n\n\ttyp := val.Type()\n\tname := typ.Name()\n\n\tfor _, key := range fields {\n\n\t\tvd.misc = vd.misc[0:0]\n\n\t\tif len(name) > 0 {\n\t\t\tvd.misc = append(vd.misc, name...)\n\t\t\tvd.misc = append(vd.misc, '.')\n\t\t}\n\n\t\tvd.misc = append(vd.misc, key...)\n\t\tvd.includeExclude[string(vd.misc)] = struct{}{}\n\t}\n\n\tvd.validateStruct(ctx, top, val, typ, vd.ns[0:0], vd.actualNs[0:0], nil)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\n\tv.pool.Put(vd)\n\n\treturn\n}\n\n// Var validates a single variable using tag style validation.\n// eg.\n// var i int\n// validate.Var(i, \"gt=1,lt=10\")\n//\n// WARNING: a struct can be passed for validation eg. time.Time is a struct or\n// if you have a custom type and have registered a custom type handler, so must\n// allow it; however unforeseen validations will occur if trying to validate a\n// struct that is meant to be passed to 'validate.Struct'\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\n// validate Array, Slice and maps fields which may contain more than one error\nfunc (v *Validate) Var(field any, tag string) error {\n\treturn v.VarCtx(context.Background(), field, tag)\n}\n\n// VarCtx validates a single variable using tag style validation and allows passing of contextual\n// validation information via context.Context.\n// eg.\n// var i int\n// validate.Var(i, \"gt=1,lt=10\")\n//\n// WARNING: a struct can be passed for validation eg. time.Time is a struct or\n// if you have a custom type and have registered a custom type handler, so must\n// allow it; however unforeseen validations will occur if trying to validate a\n// struct that is meant to be passed to 'validate.Struct'\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\n// validate Array, Slice and maps fields which may contain more than one error\nfunc (v *Validate) VarCtx(ctx context.Context, field any, tag string) (err error) {\n\tif len(tag) == 0 || tag == skipValidationTag {\n\t\treturn nil\n\t}\n\n\tctag := v.fetchCacheTag(tag)\n\n\tval := reflect.ValueOf(field)\n\tvd := v.pool.Get().(*validate)\n\tvd.top = val\n\tvd.isPartial = false\n\tvd.traverseField(ctx, val, val, vd.ns[0:0], vd.actualNs[0:0], defaultCField, ctag)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\tv.pool.Put(vd)\n\treturn\n}\n\n// VarWithValue validates a single variable, against another variable/field's value using tag style validation\n// eg.\n// s1 := \"abcd\"\n// s2 := \"abcd\"\n// validate.VarWithValue(s1, s2, \"eqcsfield\") // returns true\n//\n// WARNING: a struct can be passed for validation eg. time.Time is a struct or\n// if you have a custom type and have registered a custom type handler, so must\n// allow it; however unforeseen validations will occur if trying to validate a\n// struct that is meant to be passed to 'validate.Struct'\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\n// validate Array, Slice and maps fields which may contain more than one error\nfunc (v *Validate) VarWithValue(field any, other any, tag string) error {\n\treturn v.VarWithValueCtx(context.Background(), field, other, tag)\n}\n\n// VarWithValueCtx validates a single variable, against another variable/field's value using tag style validation and\n// allows passing of contextual validation validation information via context.Context.\n// eg.\n// s1 := \"abcd\"\n// s2 := \"abcd\"\n// validate.VarWithValue(s1, s2, \"eqcsfield\") // returns true\n//\n// WARNING: a struct can be passed for validation eg. time.Time is a struct or\n// if you have a custom type and have registered a custom type handler, so must\n// allow it; however unforeseen validations will occur if trying to validate a\n// struct that is meant to be passed to 'validate.Struct'\n//\n// It returns InvalidValidationError for bad values passed in and nil or ValidationErrors as error otherwise.\n// You will need to assert the error if it's not nil eg. err.(validator.ValidationErrors) to access the array of errors.\n// validate Array, Slice and maps fields which may contain more than one error\nfunc (v *Validate) VarWithValueCtx(ctx context.Context, field any, other any, tag string) (err error) {\n\tif len(tag) == 0 || tag == skipValidationTag {\n\t\treturn nil\n\t}\n\tctag := v.fetchCacheTag(tag)\n\totherVal := reflect.ValueOf(other)\n\tvd := v.pool.Get().(*validate)\n\tvd.top = otherVal\n\tvd.isPartial = false\n\tvd.traverseField(ctx, otherVal, reflect.ValueOf(field), vd.ns[0:0], vd.actualNs[0:0], defaultCField, ctag)\n\n\tif len(vd.errs) > 0 {\n\t\terr = vd.errs\n\t\tvd.errs = nil\n\t}\n\tv.pool.Put(vd)\n\treturn\n}\n"
  },
  {
    "path": "gossh/gin/version.go",
    "content": "// Copyright 2018 Gin Core Team. All rights reserved.\n// Use of this source code is governed by a MIT style\n// license that can be found in the LICENSE file.\n\npackage gin\n\n// Version is the current gin framework's version.\nconst Version = \"v1.9.1\"\n"
  },
  {
    "path": "gossh/go.mod",
    "content": "module gossh\n\ngo 1.23\n\nrequire (\n\tgithub.com/dustin/go-humanize v1.0.1 // indirect\n\tgithub.com/glebarez/go-sqlite v1.21.2 // indirect\n\tgithub.com/glebarez/sqlite v1.11.0 // indirect\n\tgithub.com/google/uuid v1.3.0 // indirect\n\tgithub.com/jinzhu/inflection v1.0.0 // indirect\n\tgithub.com/jinzhu/now v1.1.5 // indirect\n\tgithub.com/mattn/go-isatty v0.0.17 // indirect\n\tgithub.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect\n\tgolang.org/x/sys v0.7.0 // indirect\n\tgorm.io/gorm v1.25.7 // indirect\n\tmodernc.org/libc v1.22.5 // indirect\n\tmodernc.org/mathutil v1.5.0 // indirect\n\tmodernc.org/memory v1.5.0 // indirect\n\tmodernc.org/sqlite v1.23.1 // indirect\n)\n"
  },
  {
    "path": "gossh/gorm/association.go",
    "content": "package gorm\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// Association Mode contains some helper methods to handle relationship things easily.\ntype Association struct {\n\tDB           *DB\n\tRelationship *schema.Relationship\n\tUnscope      bool\n\tError        error\n}\n\nfunc (db *DB) Association(column string) *Association {\n\tassociation := &Association{DB: db}\n\ttable := db.Statement.Table\n\n\tif err := db.Statement.Parse(db.Statement.Model); err == nil {\n\t\tdb.Statement.Table = table\n\t\tassociation.Relationship = db.Statement.Schema.Relationships.Relations[column]\n\n\t\tif association.Relationship == nil {\n\t\t\tassociation.Error = fmt.Errorf(\"%w: %s\", ErrUnsupportedRelation, column)\n\t\t}\n\n\t\tdb.Statement.ReflectValue = reflect.ValueOf(db.Statement.Model)\n\t\tfor db.Statement.ReflectValue.Kind() == reflect.Ptr {\n\t\t\tdb.Statement.ReflectValue = db.Statement.ReflectValue.Elem()\n\t\t}\n\t} else {\n\t\tassociation.Error = err\n\t}\n\n\treturn association\n}\n\nfunc (association *Association) Unscoped() *Association {\n\treturn &Association{\n\t\tDB:           association.DB,\n\t\tRelationship: association.Relationship,\n\t\tError:        association.Error,\n\t\tUnscope:      true,\n\t}\n}\n\nfunc (association *Association) Find(out any, conds ...any) error {\n\tif association.Error == nil {\n\t\tassociation.Error = association.buildCondition().Find(out, conds...).Error\n\t}\n\treturn association.Error\n}\n\nfunc (association *Association) Append(values ...any) error {\n\tif association.Error == nil {\n\t\tswitch association.Relationship.Type {\n\t\tcase schema.HasOne, schema.BelongsTo:\n\t\t\tif len(values) > 0 {\n\t\t\t\tassociation.Error = association.Replace(values...)\n\t\t\t}\n\t\tdefault:\n\t\t\tassociation.saveAssociation( /*clear*/ false, values...)\n\t\t}\n\t}\n\n\treturn association.Error\n}\n\nfunc (association *Association) Replace(values ...any) error {\n\tif association.Error == nil {\n\t\treflectValue := association.DB.Statement.ReflectValue\n\t\trel := association.Relationship\n\n\t\tvar oldBelongsToExpr clause.Expression\n\t\t// we have to record the old BelongsTo value\n\t\tif association.Unscope && rel.Type == schema.BelongsTo {\n\t\t\tvar foreignFields []*schema.Field\n\t\t\tfor _, ref := range rel.References {\n\t\t\t\tif !ref.OwnPrimaryKey {\n\t\t\t\t\tforeignFields = append(foreignFields, ref.ForeignKey)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif _, fvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, foreignFields); len(fvs) > 0 {\n\t\t\t\tcolumn, values := schema.ToQueryValues(rel.FieldSchema.Table, rel.FieldSchema.PrimaryFieldDBNames, fvs)\n\t\t\t\toldBelongsToExpr = clause.IN{Column: column, Values: values}\n\t\t\t}\n\t\t}\n\n\t\t// save associations\n\t\tif association.saveAssociation( /*clear*/ true, values...); association.Error != nil {\n\t\t\treturn association.Error\n\t\t}\n\n\t\t// set old associations's foreign key to null\n\t\tswitch rel.Type {\n\t\tcase schema.BelongsTo:\n\t\t\tif len(values) == 0 {\n\t\t\t\tupdateMap := map[string]any{}\n\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\t\t\t\tassociation.Error = rel.Field.Set(association.DB.Statement.Context, reflectValue.Index(i), reflect.Zero(rel.Field.FieldType).Interface())\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tassociation.Error = rel.Field.Set(association.DB.Statement.Context, reflectValue, reflect.Zero(rel.Field.FieldType).Interface())\n\t\t\t\t}\n\n\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\tupdateMap[ref.ForeignKey.DBName] = nil\n\t\t\t\t}\n\n\t\t\t\tassociation.Error = association.DB.UpdateColumns(updateMap).Error\n\t\t\t}\n\t\t\tif association.Unscope && oldBelongsToExpr != nil {\n\t\t\t\tassociation.Error = association.DB.Model(nil).Where(oldBelongsToExpr).Delete(reflect.New(rel.FieldSchema.ModelType).Interface()).Error\n\t\t\t}\n\t\tcase schema.HasOne, schema.HasMany:\n\t\t\tvar (\n\t\t\t\tprimaryFields []*schema.Field\n\t\t\t\tforeignKeys   []string\n\t\t\t\tupdateMap     = map[string]any{}\n\t\t\t\trelValues     = schema.GetRelationsValues(association.DB.Statement.Context, reflectValue, []*schema.Relationship{rel})\n\t\t\t\tmodelValue    = reflect.New(rel.FieldSchema.ModelType).Interface()\n\t\t\t\ttx            = association.DB.Model(modelValue)\n\t\t\t)\n\n\t\t\tif _, rvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, relValues, rel.FieldSchema.PrimaryFields); len(rvs) > 0 {\n\t\t\t\tif column, values := schema.ToQueryValues(rel.FieldSchema.Table, rel.FieldSchema.PrimaryFieldDBNames, rvs); len(values) > 0 {\n\t\t\t\t\ttx.Not(clause.IN{Column: column, Values: values})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, ref := range rel.References {\n\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\tprimaryFields = append(primaryFields, ref.PrimaryKey)\n\t\t\t\t\tforeignKeys = append(foreignKeys, ref.ForeignKey.DBName)\n\t\t\t\t\tupdateMap[ref.ForeignKey.DBName] = nil\n\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\ttx.Where(clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif _, pvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, primaryFields); len(pvs) > 0 {\n\t\t\t\tcolumn, values := schema.ToQueryValues(rel.FieldSchema.Table, foreignKeys, pvs)\n\t\t\t\tif association.Unscope {\n\t\t\t\t\tassociation.Error = tx.Where(clause.IN{Column: column, Values: values}).Delete(modelValue).Error\n\t\t\t\t} else {\n\t\t\t\t\tassociation.Error = tx.Where(clause.IN{Column: column, Values: values}).UpdateColumns(updateMap).Error\n\t\t\t\t}\n\t\t\t}\n\t\tcase schema.Many2Many:\n\t\t\tvar (\n\t\t\t\tprimaryFields, relPrimaryFields     []*schema.Field\n\t\t\t\tjoinPrimaryKeys, joinRelPrimaryKeys []string\n\t\t\t\tmodelValue                          = reflect.New(rel.JoinTable.ModelType).Interface()\n\t\t\t\ttx                                  = association.DB.Model(modelValue)\n\t\t\t)\n\n\t\t\tfor _, ref := range rel.References {\n\t\t\t\tif ref.PrimaryValue == \"\" {\n\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\tprimaryFields = append(primaryFields, ref.PrimaryKey)\n\t\t\t\t\t\tjoinPrimaryKeys = append(joinPrimaryKeys, ref.ForeignKey.DBName)\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelPrimaryFields = append(relPrimaryFields, ref.PrimaryKey)\n\t\t\t\t\t\tjoinRelPrimaryKeys = append(joinRelPrimaryKeys, ref.ForeignKey.DBName)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\ttx.Clauses(clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_, pvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, primaryFields)\n\t\t\tif column, values := schema.ToQueryValues(rel.JoinTable.Table, joinPrimaryKeys, pvs); len(values) > 0 {\n\t\t\t\ttx.Where(clause.IN{Column: column, Values: values})\n\t\t\t} else {\n\t\t\t\treturn ErrPrimaryKeyRequired\n\t\t\t}\n\n\t\t\t_, rvs := schema.GetIdentityFieldValuesMapFromValues(association.DB.Statement.Context, values, relPrimaryFields)\n\t\t\tif relColumn, relValues := schema.ToQueryValues(rel.JoinTable.Table, joinRelPrimaryKeys, rvs); len(relValues) > 0 {\n\t\t\t\ttx.Where(clause.Not(clause.IN{Column: relColumn, Values: relValues}))\n\t\t\t}\n\n\t\t\tassociation.Error = tx.Delete(modelValue).Error\n\t\t}\n\t}\n\treturn association.Error\n}\n\nfunc (association *Association) Delete(values ...any) error {\n\tif association.Error == nil {\n\t\tvar (\n\t\t\treflectValue  = association.DB.Statement.ReflectValue\n\t\t\trel           = association.Relationship\n\t\t\tprimaryFields []*schema.Field\n\t\t\tforeignKeys   []string\n\t\t\tupdateAttrs   = map[string]any{}\n\t\t\tconds         []clause.Expression\n\t\t)\n\n\t\tfor _, ref := range rel.References {\n\t\t\tif ref.PrimaryValue == \"\" {\n\t\t\t\tprimaryFields = append(primaryFields, ref.PrimaryKey)\n\t\t\t\tforeignKeys = append(foreignKeys, ref.ForeignKey.DBName)\n\t\t\t\tupdateAttrs[ref.ForeignKey.DBName] = nil\n\t\t\t} else {\n\t\t\t\tconds = append(conds, clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t}\n\t\t}\n\n\t\tswitch rel.Type {\n\t\tcase schema.BelongsTo:\n\t\t\tassociationDB := association.DB.Session(&Session{})\n\t\t\ttx := associationDB.Model(reflect.New(rel.Schema.ModelType).Interface())\n\n\t\t\t_, pvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, rel.Schema.PrimaryFields)\n\t\t\tif pcolumn, pvalues := schema.ToQueryValues(rel.Schema.Table, rel.Schema.PrimaryFieldDBNames, pvs); len(pvalues) > 0 {\n\t\t\t\tconds = append(conds, clause.IN{Column: pcolumn, Values: pvalues})\n\t\t\t} else {\n\t\t\t\treturn ErrPrimaryKeyRequired\n\t\t\t}\n\n\t\t\t_, rvs := schema.GetIdentityFieldValuesMapFromValues(association.DB.Statement.Context, values, primaryFields)\n\t\t\trelColumn, relValues := schema.ToQueryValues(rel.Schema.Table, foreignKeys, rvs)\n\t\t\tconds = append(conds, clause.IN{Column: relColumn, Values: relValues})\n\n\t\t\tassociation.Error = tx.Clauses(conds...).UpdateColumns(updateAttrs).Error\n\t\t\tif association.Unscope {\n\t\t\t\tvar foreignFields []*schema.Field\n\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\tif !ref.OwnPrimaryKey {\n\t\t\t\t\t\tforeignFields = append(foreignFields, ref.ForeignKey)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif _, fvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, foreignFields); len(fvs) > 0 {\n\t\t\t\t\tcolumn, values := schema.ToQueryValues(rel.FieldSchema.Table, rel.FieldSchema.PrimaryFieldDBNames, fvs)\n\t\t\t\t\tassociation.Error = associationDB.Model(nil).Where(clause.IN{Column: column, Values: values}).Delete(reflect.New(rel.FieldSchema.ModelType).Interface()).Error\n\t\t\t\t}\n\t\t\t}\n\t\tcase schema.HasOne, schema.HasMany:\n\t\t\tmodel := reflect.New(rel.FieldSchema.ModelType).Interface()\n\t\t\ttx := association.DB.Model(model)\n\n\t\t\t_, pvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, primaryFields)\n\t\t\tif pcolumn, pvalues := schema.ToQueryValues(rel.FieldSchema.Table, foreignKeys, pvs); len(pvalues) > 0 {\n\t\t\t\tconds = append(conds, clause.IN{Column: pcolumn, Values: pvalues})\n\t\t\t} else {\n\t\t\t\treturn ErrPrimaryKeyRequired\n\t\t\t}\n\n\t\t\t_, rvs := schema.GetIdentityFieldValuesMapFromValues(association.DB.Statement.Context, values, rel.FieldSchema.PrimaryFields)\n\t\t\trelColumn, relValues := schema.ToQueryValues(rel.FieldSchema.Table, rel.FieldSchema.PrimaryFieldDBNames, rvs)\n\t\t\tconds = append(conds, clause.IN{Column: relColumn, Values: relValues})\n\n\t\t\tif association.Unscope {\n\t\t\t\tassociation.Error = tx.Clauses(conds...).Delete(model).Error\n\t\t\t} else {\n\t\t\t\tassociation.Error = tx.Clauses(conds...).UpdateColumns(updateAttrs).Error\n\t\t\t}\n\t\tcase schema.Many2Many:\n\t\t\tvar (\n\t\t\t\tprimaryFields, relPrimaryFields     []*schema.Field\n\t\t\t\tjoinPrimaryKeys, joinRelPrimaryKeys []string\n\t\t\t\tjoinValue                           = reflect.New(rel.JoinTable.ModelType).Interface()\n\t\t\t)\n\n\t\t\tfor _, ref := range rel.References {\n\t\t\t\tif ref.PrimaryValue == \"\" {\n\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\tprimaryFields = append(primaryFields, ref.PrimaryKey)\n\t\t\t\t\t\tjoinPrimaryKeys = append(joinPrimaryKeys, ref.ForeignKey.DBName)\n\t\t\t\t\t} else {\n\t\t\t\t\t\trelPrimaryFields = append(relPrimaryFields, ref.PrimaryKey)\n\t\t\t\t\t\tjoinRelPrimaryKeys = append(joinRelPrimaryKeys, ref.ForeignKey.DBName)\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconds = append(conds, clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t_, pvs := schema.GetIdentityFieldValuesMap(association.DB.Statement.Context, reflectValue, primaryFields)\n\t\t\tif pcolumn, pvalues := schema.ToQueryValues(rel.JoinTable.Table, joinPrimaryKeys, pvs); len(pvalues) > 0 {\n\t\t\t\tconds = append(conds, clause.IN{Column: pcolumn, Values: pvalues})\n\t\t\t} else {\n\t\t\t\treturn ErrPrimaryKeyRequired\n\t\t\t}\n\n\t\t\t_, rvs := schema.GetIdentityFieldValuesMapFromValues(association.DB.Statement.Context, values, relPrimaryFields)\n\t\t\trelColumn, relValues := schema.ToQueryValues(rel.JoinTable.Table, joinRelPrimaryKeys, rvs)\n\t\t\tconds = append(conds, clause.IN{Column: relColumn, Values: relValues})\n\n\t\t\tassociation.Error = association.DB.Where(clause.Where{Exprs: conds}).Model(nil).Delete(joinValue).Error\n\t\t}\n\n\t\tif association.Error == nil {\n\t\t\t// clean up deleted values's foreign key\n\t\t\trelValuesMap, _ := schema.GetIdentityFieldValuesMapFromValues(association.DB.Statement.Context, values, rel.FieldSchema.PrimaryFields)\n\n\t\t\tcleanUpDeletedRelations := func(data reflect.Value) {\n\t\t\t\tif _, zero := rel.Field.ValueOf(association.DB.Statement.Context, data); !zero {\n\t\t\t\t\tfieldValue := reflect.Indirect(rel.Field.ReflectValueOf(association.DB.Statement.Context, data))\n\t\t\t\t\tprimaryValues := make([]any, len(rel.FieldSchema.PrimaryFields))\n\n\t\t\t\t\tswitch fieldValue.Kind() {\n\t\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\t\tvalidFieldValues := reflect.Zero(rel.Field.IndirectFieldType)\n\t\t\t\t\t\tfor i := 0; i < fieldValue.Len(); i++ {\n\t\t\t\t\t\t\tfor idx, field := range rel.FieldSchema.PrimaryFields {\n\t\t\t\t\t\t\t\tprimaryValues[idx], _ = field.ValueOf(association.DB.Statement.Context, fieldValue.Index(i))\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif _, ok := relValuesMap[utils.ToStringKey(primaryValues...)]; !ok {\n\t\t\t\t\t\t\t\tvalidFieldValues = reflect.Append(validFieldValues, fieldValue.Index(i))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tassociation.Error = rel.Field.Set(association.DB.Statement.Context, data, validFieldValues.Interface())\n\t\t\t\t\tcase reflect.Struct:\n\t\t\t\t\t\tfor idx, field := range rel.FieldSchema.PrimaryFields {\n\t\t\t\t\t\t\tprimaryValues[idx], _ = field.ValueOf(association.DB.Statement.Context, fieldValue)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif _, ok := relValuesMap[utils.ToStringKey(primaryValues...)]; ok {\n\t\t\t\t\t\t\tif association.Error = rel.Field.Set(association.DB.Statement.Context, data, reflect.Zero(rel.FieldSchema.ModelType).Interface()); association.Error != nil {\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif rel.JoinTable == nil {\n\t\t\t\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\t\t\t\tif ref.OwnPrimaryKey || ref.PrimaryValue != \"\" {\n\t\t\t\t\t\t\t\t\t\tassociation.Error = ref.ForeignKey.Set(association.DB.Statement.Context, fieldValue, reflect.Zero(ref.ForeignKey.FieldType).Interface())\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassociation.Error = ref.ForeignKey.Set(association.DB.Statement.Context, data, reflect.Zero(ref.ForeignKey.FieldType).Interface())\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}\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\tswitch reflectValue.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\t\t\tcleanUpDeletedRelations(reflect.Indirect(reflectValue.Index(i)))\n\t\t\t\t}\n\t\t\tcase reflect.Struct:\n\t\t\t\tcleanUpDeletedRelations(reflectValue)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn association.Error\n}\n\nfunc (association *Association) Clear() error {\n\treturn association.Replace()\n}\n\nfunc (association *Association) Count() (count int64) {\n\tif association.Error == nil {\n\t\tassociation.Error = association.buildCondition().Count(&count).Error\n\t}\n\treturn\n}\n\ntype assignBack struct {\n\tSource reflect.Value\n\tIndex  int\n\tDest   reflect.Value\n}\n\nfunc (association *Association) saveAssociation(clear bool, values ...any) {\n\tvar (\n\t\treflectValue = association.DB.Statement.ReflectValue\n\t\tassignBacks  []assignBack // assign association values back to arguments after save\n\t)\n\n\tappendToRelations := func(source, rv reflect.Value, clear bool) {\n\t\tswitch association.Relationship.Type {\n\t\tcase schema.HasOne, schema.BelongsTo:\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tif rv.Len() > 0 {\n\t\t\t\t\tassociation.Error = association.Relationship.Field.Set(association.DB.Statement.Context, source, rv.Index(0).Addr().Interface())\n\n\t\t\t\t\tif association.Relationship.Field.FieldType.Kind() == reflect.Struct {\n\t\t\t\t\t\tassignBacks = append(assignBacks, assignBack{Source: source, Dest: rv.Index(0)})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase reflect.Struct:\n\t\t\t\tassociation.Error = association.Relationship.Field.Set(association.DB.Statement.Context, source, rv.Addr().Interface())\n\n\t\t\t\tif association.Relationship.Field.FieldType.Kind() == reflect.Struct {\n\t\t\t\t\tassignBacks = append(assignBacks, assignBack{Source: source, Dest: rv})\n\t\t\t\t}\n\t\t\t}\n\t\tcase schema.HasMany, schema.Many2Many:\n\t\t\telemType := association.Relationship.Field.IndirectFieldType.Elem()\n\t\t\toldFieldValue := reflect.Indirect(association.Relationship.Field.ReflectValueOf(association.DB.Statement.Context, source))\n\t\t\tvar fieldValue reflect.Value\n\t\t\tif clear {\n\t\t\t\tfieldValue = reflect.MakeSlice(oldFieldValue.Type(), 0, oldFieldValue.Cap())\n\t\t\t} else {\n\t\t\t\tfieldValue = reflect.MakeSlice(oldFieldValue.Type(), oldFieldValue.Len(), oldFieldValue.Cap())\n\t\t\t\treflect.Copy(fieldValue, oldFieldValue)\n\t\t\t}\n\n\t\t\tappendToFieldValues := func(ev reflect.Value) {\n\t\t\t\tif ev.Type().AssignableTo(elemType) {\n\t\t\t\t\tfieldValue = reflect.Append(fieldValue, ev)\n\t\t\t\t} else if ev.Type().Elem().AssignableTo(elemType) {\n\t\t\t\t\tfieldValue = reflect.Append(fieldValue, ev.Elem())\n\t\t\t\t} else {\n\t\t\t\t\tassociation.Error = fmt.Errorf(\"unsupported data type: %v for relation %s\", ev.Type(), association.Relationship.Name)\n\t\t\t\t}\n\n\t\t\t\tif elemType.Kind() == reflect.Struct {\n\t\t\t\t\tassignBacks = append(assignBacks, assignBack{Source: source, Dest: ev, Index: fieldValue.Len()})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch rv.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\t\tappendToFieldValues(reflect.Indirect(rv.Index(i)).Addr())\n\t\t\t\t}\n\t\t\tcase reflect.Struct:\n\t\t\t\tappendToFieldValues(rv.Addr())\n\t\t\t}\n\n\t\t\tif association.Error == nil {\n\t\t\t\tassociation.Error = association.Relationship.Field.Set(association.DB.Statement.Context, source, fieldValue.Interface())\n\t\t\t}\n\t\t}\n\t}\n\n\tselectedSaveColumns := []string{association.Relationship.Name}\n\tomitColumns := []string{}\n\tselectColumns, _ := association.DB.Statement.SelectAndOmitColumns(true, false)\n\tfor name, ok := range selectColumns {\n\t\tcolumnName := \"\"\n\t\tif strings.HasPrefix(name, association.Relationship.Name) {\n\t\t\tif columnName = strings.TrimPrefix(name, association.Relationship.Name); columnName == \".*\" {\n\t\t\t\tcolumnName = name\n\t\t\t}\n\t\t} else if strings.HasPrefix(name, clause.Associations) {\n\t\t\tcolumnName = name\n\t\t}\n\n\t\tif columnName != \"\" {\n\t\t\tif ok {\n\t\t\t\tselectedSaveColumns = append(selectedSaveColumns, columnName)\n\t\t\t} else {\n\t\t\t\tomitColumns = append(omitColumns, columnName)\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, ref := range association.Relationship.References {\n\t\tif !ref.OwnPrimaryKey {\n\t\t\tselectedSaveColumns = append(selectedSaveColumns, ref.ForeignKey.Name)\n\t\t}\n\t}\n\n\tassociationDB := association.DB.Session(&Session{}).Model(nil)\n\tif !association.DB.FullSaveAssociations {\n\t\tassociationDB.Select(selectedSaveColumns)\n\t}\n\tif len(omitColumns) > 0 {\n\t\tassociationDB.Omit(omitColumns...)\n\t}\n\tassociationDB = associationDB.Session(&Session{})\n\n\tswitch reflectValue.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tif len(values) != reflectValue.Len() {\n\t\t\t// clear old data\n\t\t\tif clear && len(values) == 0 {\n\t\t\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\t\t\tif err := association.Relationship.Field.Set(association.DB.Statement.Context, reflectValue.Index(i), reflect.New(association.Relationship.Field.IndirectFieldType).Interface()); err != nil {\n\t\t\t\t\t\tassociation.Error = err\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\n\t\t\t\t\tif association.Relationship.JoinTable == nil {\n\t\t\t\t\t\tfor _, ref := range association.Relationship.References {\n\t\t\t\t\t\t\tif !ref.OwnPrimaryKey && ref.PrimaryValue == \"\" {\n\t\t\t\t\t\t\t\tif err := ref.ForeignKey.Set(association.DB.Statement.Context, reflectValue.Index(i), reflect.Zero(ref.ForeignKey.FieldType).Interface()); err != nil {\n\t\t\t\t\t\t\t\t\tassociation.Error = err\n\t\t\t\t\t\t\t\t\tbreak\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\tbreak\n\t\t\t}\n\n\t\t\tassociation.Error = ErrInvalidValueOfLength\n\t\t\treturn\n\t\t}\n\n\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\tappendToRelations(reflectValue.Index(i), reflect.Indirect(reflect.ValueOf(values[i])), clear)\n\n\t\t\t// TODO support save slice data, sql with case?\n\t\t\tassociation.Error = associationDB.Updates(reflectValue.Index(i).Addr().Interface()).Error\n\t\t}\n\tcase reflect.Struct:\n\t\t// clear old data\n\t\tif clear && len(values) == 0 {\n\t\t\tassociation.Error = association.Relationship.Field.Set(association.DB.Statement.Context, reflectValue, reflect.New(association.Relationship.Field.IndirectFieldType).Interface())\n\n\t\t\tif association.Relationship.JoinTable == nil && association.Error == nil {\n\t\t\t\tfor _, ref := range association.Relationship.References {\n\t\t\t\t\tif !ref.OwnPrimaryKey && ref.PrimaryValue == \"\" {\n\t\t\t\t\t\tassociation.Error = ref.ForeignKey.Set(association.DB.Statement.Context, reflectValue, reflect.Zero(ref.ForeignKey.FieldType).Interface())\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor idx, value := range values {\n\t\t\trv := reflect.Indirect(reflect.ValueOf(value))\n\t\t\tappendToRelations(reflectValue, rv, clear && idx == 0)\n\t\t}\n\n\t\tif len(values) > 0 {\n\t\t\tassociation.Error = associationDB.Updates(reflectValue.Addr().Interface()).Error\n\t\t}\n\t}\n\n\tfor _, assignBack := range assignBacks {\n\t\tfieldValue := reflect.Indirect(association.Relationship.Field.ReflectValueOf(association.DB.Statement.Context, assignBack.Source))\n\t\tif assignBack.Index > 0 {\n\t\t\treflect.Indirect(assignBack.Dest).Set(fieldValue.Index(assignBack.Index - 1))\n\t\t} else {\n\t\t\treflect.Indirect(assignBack.Dest).Set(fieldValue)\n\t\t}\n\t}\n}\n\nfunc (association *Association) buildCondition() *DB {\n\tvar (\n\t\tqueryConds = association.Relationship.ToQueryConditions(association.DB.Statement.Context, association.DB.Statement.ReflectValue)\n\t\tmodelValue = reflect.New(association.Relationship.FieldSchema.ModelType).Interface()\n\t\ttx         = association.DB.Model(modelValue)\n\t)\n\n\tif association.Relationship.JoinTable != nil {\n\t\tif !tx.Statement.Unscoped && len(association.Relationship.JoinTable.QueryClauses) > 0 {\n\t\t\tjoinStmt := Statement{DB: tx, Context: tx.Statement.Context, Schema: association.Relationship.JoinTable, Table: association.Relationship.JoinTable.Table, Clauses: map[string]clause.Clause{}}\n\t\t\tfor _, queryClause := range association.Relationship.JoinTable.QueryClauses {\n\t\t\t\tjoinStmt.AddClause(queryClause)\n\t\t\t}\n\t\t\tjoinStmt.Build(\"WHERE\")\n\t\t\tif len(joinStmt.SQL.String()) > 0 {\n\t\t\t\ttx.Clauses(clause.Expr{SQL: strings.Replace(joinStmt.SQL.String(), \"WHERE \", \"\", 1), Vars: joinStmt.Vars})\n\t\t\t}\n\t\t}\n\n\t\ttx = tx.Session(&Session{QueryFields: true}).Clauses(clause.From{Joins: []clause.Join{{\n\t\t\tTable: clause.Table{Name: association.Relationship.JoinTable.Table},\n\t\t\tON:    clause.Where{Exprs: queryConds},\n\t\t}}})\n\t} else {\n\t\ttx.Clauses(clause.Where{Exprs: queryConds})\n\t}\n\n\treturn tx\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/associations.go",
    "content": "package callbacks\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nfunc SaveBeforeAssociations(create bool) func(db *gorm.DB) {\n\treturn func(db *gorm.DB) {\n\t\tif db.Error == nil && db.Statement.Schema != nil {\n\t\t\tselectColumns, restricted := db.Statement.SelectAndOmitColumns(create, !create)\n\n\t\t\t// Save Belongs To associations\n\t\t\tfor _, rel := range db.Statement.Schema.Relationships.BelongsTo {\n\t\t\t\tif v, ok := selectColumns[rel.Name]; (ok && !v) || (!ok && restricted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tsetupReferences := func(obj reflect.Value, elem reflect.Value) {\n\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\tif !ref.OwnPrimaryKey {\n\t\t\t\t\t\t\tpv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, elem)\n\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, obj, pv))\n\n\t\t\t\t\t\t\tif dest, ok := db.Statement.Dest.(map[string]any); ok {\n\t\t\t\t\t\t\t\tdest[ref.ForeignKey.DBName] = pv\n\t\t\t\t\t\t\t\tif _, ok := dest[rel.Name]; ok {\n\t\t\t\t\t\t\t\t\tdest[rel.Name] = elem.Interface()\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\n\t\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tvar (\n\t\t\t\t\t\trValLen   = db.Statement.ReflectValue.Len()\n\t\t\t\t\t\tobjs      = make([]reflect.Value, 0, rValLen)\n\t\t\t\t\t\tfieldType = rel.Field.FieldType\n\t\t\t\t\t\tisPtr     = fieldType.Kind() == reflect.Ptr\n\t\t\t\t\t)\n\n\t\t\t\t\tif !isPtr {\n\t\t\t\t\t\tfieldType = reflect.PtrTo(fieldType)\n\t\t\t\t\t}\n\n\t\t\t\t\telems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\t\t\t\t\tdistinctElems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\t\t\t\t\tidentityMap := map[string]bool{}\n\t\t\t\t\tfor i := 0; i < rValLen; i++ {\n\t\t\t\t\t\tobj := db.Statement.ReflectValue.Index(i)\n\t\t\t\t\t\tif reflect.Indirect(obj).Kind() != reflect.Struct {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, obj); !zero { // check belongs to relation value\n\t\t\t\t\t\t\trv := rel.Field.ReflectValueOf(db.Statement.Context, obj) // relation reflect value\n\t\t\t\t\t\t\tif !isPtr {\n\t\t\t\t\t\t\t\trv = rv.Addr()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tobjs = append(objs, obj)\n\t\t\t\t\t\t\telems = reflect.Append(elems, rv)\n\n\t\t\t\t\t\t\trelPrimaryValues := make([]any, 0, len(rel.FieldSchema.PrimaryFields))\n\t\t\t\t\t\t\tfor _, pf := range rel.FieldSchema.PrimaryFields {\n\t\t\t\t\t\t\t\tif pfv, ok := pf.ValueOf(db.Statement.Context, rv); !ok {\n\t\t\t\t\t\t\t\t\trelPrimaryValues = append(relPrimaryValues, pfv)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcacheKey := utils.ToStringKey(relPrimaryValues...)\n\t\t\t\t\t\t\tif len(relPrimaryValues) != len(rel.FieldSchema.PrimaryFields) || !identityMap[cacheKey] {\n\t\t\t\t\t\t\t\tif cacheKey != \"\" { // has primary fields\n\t\t\t\t\t\t\t\t\tidentityMap[cacheKey] = true\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdistinctElems = reflect.Append(distinctElems, rv)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif elems.Len() > 0 {\n\t\t\t\t\t\tif saveAssociations(db, rel, distinctElems, selectColumns, restricted, nil) == nil {\n\t\t\t\t\t\t\tfor i := 0; i < elems.Len(); i++ {\n\t\t\t\t\t\t\t\tsetupReferences(objs[i], elems.Index(i))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, db.Statement.ReflectValue); !zero {\n\t\t\t\t\t\trv := rel.Field.ReflectValueOf(db.Statement.Context, db.Statement.ReflectValue) // relation reflect value\n\t\t\t\t\t\tif rv.Kind() != reflect.Ptr {\n\t\t\t\t\t\t\trv = rv.Addr()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif saveAssociations(db, rel, rv, selectColumns, restricted, nil) == nil {\n\t\t\t\t\t\t\tsetupReferences(db.Statement.ReflectValue, rv)\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\nfunc SaveAfterAssociations(create bool) func(db *gorm.DB) {\n\treturn func(db *gorm.DB) {\n\t\tif db.Error == nil && db.Statement.Schema != nil {\n\t\t\tselectColumns, restricted := db.Statement.SelectAndOmitColumns(create, !create)\n\n\t\t\t// Save Has One associations\n\t\t\tfor _, rel := range db.Statement.Schema.Relationships.HasOne {\n\t\t\t\tif v, ok := selectColumns[rel.Name]; (ok && !v) || (!ok && restricted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tvar (\n\t\t\t\t\t\tfieldType = rel.Field.FieldType\n\t\t\t\t\t\tisPtr     = fieldType.Kind() == reflect.Ptr\n\t\t\t\t\t)\n\n\t\t\t\t\tif !isPtr {\n\t\t\t\t\t\tfieldType = reflect.PtrTo(fieldType)\n\t\t\t\t\t}\n\n\t\t\t\t\telems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\n\t\t\t\t\tfor i := 0; i < db.Statement.ReflectValue.Len(); i++ {\n\t\t\t\t\t\tobj := db.Statement.ReflectValue.Index(i)\n\n\t\t\t\t\t\tif reflect.Indirect(obj).Kind() == reflect.Struct {\n\t\t\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, obj); !zero {\n\t\t\t\t\t\t\t\trv := rel.Field.ReflectValueOf(db.Statement.Context, obj)\n\t\t\t\t\t\t\t\tif rv.Kind() != reflect.Ptr {\n\t\t\t\t\t\t\t\t\trv = rv.Addr()\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\t\t\t\t\tfv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, obj)\n\t\t\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, rv, fv))\n\t\t\t\t\t\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, rv, ref.PrimaryValue))\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\telems = reflect.Append(elems, rv)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif elems.Len() > 0 {\n\t\t\t\t\t\tassignmentColumns := make([]string, 0, len(rel.References))\n\t\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\t\tassignmentColumns = append(assignmentColumns, ref.ForeignKey.DBName)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsaveAssociations(db, rel, elems, selectColumns, restricted, assignmentColumns)\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, db.Statement.ReflectValue); !zero {\n\t\t\t\t\t\tf := rel.Field.ReflectValueOf(db.Statement.Context, db.Statement.ReflectValue)\n\t\t\t\t\t\tif f.Kind() != reflect.Ptr {\n\t\t\t\t\t\t\tf = f.Addr()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tassignmentColumns := make([]string, 0, len(rel.References))\n\t\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\t\t\tfv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, db.Statement.ReflectValue)\n\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, f, fv))\n\t\t\t\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, f, ref.PrimaryValue))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tassignmentColumns = append(assignmentColumns, ref.ForeignKey.DBName)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tsaveAssociations(db, rel, f, selectColumns, restricted, assignmentColumns)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Save Has Many associations\n\t\t\tfor _, rel := range db.Statement.Schema.Relationships.HasMany {\n\t\t\t\tif v, ok := selectColumns[rel.Name]; (ok && !v) || (!ok && restricted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfieldType := rel.Field.IndirectFieldType.Elem()\n\t\t\t\tisPtr := fieldType.Kind() == reflect.Ptr\n\t\t\t\tif !isPtr {\n\t\t\t\t\tfieldType = reflect.PtrTo(fieldType)\n\t\t\t\t}\n\t\t\t\telems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\t\t\t\tidentityMap := map[string]bool{}\n\t\t\t\tappendToElems := func(v reflect.Value) {\n\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, v); !zero {\n\t\t\t\t\t\tf := reflect.Indirect(rel.Field.ReflectValueOf(db.Statement.Context, v))\n\n\t\t\t\t\t\tfor i := 0; i < f.Len(); i++ {\n\t\t\t\t\t\t\telem := f.Index(i)\n\t\t\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\t\t\t\tpv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, v)\n\t\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, elem, pv))\n\t\t\t\t\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, elem, ref.PrimaryValue))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\trelPrimaryValues := make([]any, 0, len(rel.FieldSchema.PrimaryFields))\n\t\t\t\t\t\t\tfor _, pf := range rel.FieldSchema.PrimaryFields {\n\t\t\t\t\t\t\t\tif pfv, ok := pf.ValueOf(db.Statement.Context, elem); !ok {\n\t\t\t\t\t\t\t\t\trelPrimaryValues = append(relPrimaryValues, pfv)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcacheKey := utils.ToStringKey(relPrimaryValues...)\n\t\t\t\t\t\t\tif len(relPrimaryValues) != len(rel.FieldSchema.PrimaryFields) || !identityMap[cacheKey] {\n\t\t\t\t\t\t\t\tif cacheKey != \"\" { // has primary fields\n\t\t\t\t\t\t\t\t\tidentityMap[cacheKey] = true\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif isPtr {\n\t\t\t\t\t\t\t\t\telems = reflect.Append(elems, elem)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\telems = reflect.Append(elems, elem.Addr())\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\n\t\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < db.Statement.ReflectValue.Len(); i++ {\n\t\t\t\t\t\tobj := db.Statement.ReflectValue.Index(i)\n\t\t\t\t\t\tif reflect.Indirect(obj).Kind() == reflect.Struct {\n\t\t\t\t\t\t\tappendToElems(obj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tappendToElems(db.Statement.ReflectValue)\n\t\t\t\t}\n\n\t\t\t\tif elems.Len() > 0 {\n\t\t\t\t\tassignmentColumns := make([]string, 0, len(rel.References))\n\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\tassignmentColumns = append(assignmentColumns, ref.ForeignKey.DBName)\n\t\t\t\t\t}\n\n\t\t\t\t\tsaveAssociations(db, rel, elems, selectColumns, restricted, assignmentColumns)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Save Many2Many associations\n\t\t\tfor _, rel := range db.Statement.Schema.Relationships.Many2Many {\n\t\t\t\tif v, ok := selectColumns[rel.Name]; (ok && !v) || (!ok && restricted) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\tfieldType := rel.Field.IndirectFieldType.Elem()\n\t\t\t\tisPtr := fieldType.Kind() == reflect.Ptr\n\t\t\t\tif !isPtr {\n\t\t\t\t\tfieldType = reflect.PtrTo(fieldType)\n\t\t\t\t}\n\t\t\t\telems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\t\t\t\tdistinctElems := reflect.MakeSlice(reflect.SliceOf(fieldType), 0, 10)\n\t\t\t\tjoins := reflect.MakeSlice(reflect.SliceOf(reflect.PtrTo(rel.JoinTable.ModelType)), 0, 10)\n\t\t\t\tobjs := []reflect.Value{}\n\n\t\t\t\tappendToJoins := func(obj reflect.Value, elem reflect.Value) {\n\t\t\t\t\tjoinValue := reflect.New(rel.JoinTable.ModelType)\n\t\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\t\tfv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, obj)\n\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, joinValue, fv))\n\t\t\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, joinValue, ref.PrimaryValue))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfv, _ := ref.PrimaryKey.ValueOf(db.Statement.Context, elem)\n\t\t\t\t\t\t\tdb.AddError(ref.ForeignKey.Set(db.Statement.Context, joinValue, fv))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tjoins = reflect.Append(joins, joinValue)\n\t\t\t\t}\n\n\t\t\t\tidentityMap := map[string]bool{}\n\t\t\t\tappendToElems := func(v reflect.Value) {\n\t\t\t\t\tif _, zero := rel.Field.ValueOf(db.Statement.Context, v); !zero {\n\t\t\t\t\t\tf := reflect.Indirect(rel.Field.ReflectValueOf(db.Statement.Context, v))\n\t\t\t\t\t\tfor i := 0; i < f.Len(); i++ {\n\t\t\t\t\t\t\telem := f.Index(i)\n\t\t\t\t\t\t\tif !isPtr {\n\t\t\t\t\t\t\t\telem = elem.Addr()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tobjs = append(objs, v)\n\t\t\t\t\t\t\telems = reflect.Append(elems, elem)\n\n\t\t\t\t\t\t\trelPrimaryValues := make([]any, 0, len(rel.FieldSchema.PrimaryFields))\n\t\t\t\t\t\t\tfor _, pf := range rel.FieldSchema.PrimaryFields {\n\t\t\t\t\t\t\t\tif pfv, ok := pf.ValueOf(db.Statement.Context, elem); !ok {\n\t\t\t\t\t\t\t\t\trelPrimaryValues = append(relPrimaryValues, pfv)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcacheKey := utils.ToStringKey(relPrimaryValues...)\n\t\t\t\t\t\t\tif len(relPrimaryValues) != len(rel.FieldSchema.PrimaryFields) || !identityMap[cacheKey] {\n\t\t\t\t\t\t\t\tif cacheKey != \"\" { // has primary fields\n\t\t\t\t\t\t\t\t\tidentityMap[cacheKey] = true\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdistinctElems = reflect.Append(distinctElems, elem)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < db.Statement.ReflectValue.Len(); i++ {\n\t\t\t\t\t\tobj := db.Statement.ReflectValue.Index(i)\n\t\t\t\t\t\tif reflect.Indirect(obj).Kind() == reflect.Struct {\n\t\t\t\t\t\t\tappendToElems(obj)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tappendToElems(db.Statement.ReflectValue)\n\t\t\t\t}\n\n\t\t\t\t// optimize elems of reflect value length\n\t\t\t\tif elemLen := elems.Len(); elemLen > 0 {\n\t\t\t\t\tif v, ok := selectColumns[rel.Name+\".*\"]; !ok || v {\n\t\t\t\t\t\tsaveAssociations(db, rel, distinctElems, selectColumns, restricted, nil)\n\t\t\t\t\t}\n\n\t\t\t\t\tfor i := 0; i < elemLen; i++ {\n\t\t\t\t\t\tappendToJoins(objs[i], elems.Index(i))\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif joins.Len() > 0 {\n\t\t\t\t\tdb.AddError(db.Session(&gorm.Session{NewDB: true}).Clauses(clause.OnConflict{DoNothing: true}).Session(&gorm.Session{\n\t\t\t\t\t\tSkipHooks:                db.Statement.SkipHooks,\n\t\t\t\t\t\tDisableNestedTransaction: true,\n\t\t\t\t\t}).Create(joins.Interface()).Error)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc onConflictOption(stmt *gorm.Statement, s *schema.Schema, defaultUpdatingColumns []string) (onConflict clause.OnConflict) {\n\tif len(defaultUpdatingColumns) > 0 || stmt.DB.FullSaveAssociations {\n\t\tonConflict.Columns = make([]clause.Column, 0, len(s.PrimaryFieldDBNames))\n\t\tfor _, dbName := range s.PrimaryFieldDBNames {\n\t\t\tonConflict.Columns = append(onConflict.Columns, clause.Column{Name: dbName})\n\t\t}\n\n\t\tonConflict.UpdateAll = stmt.DB.FullSaveAssociations\n\t\tif !onConflict.UpdateAll {\n\t\t\tonConflict.DoUpdates = clause.AssignmentColumns(defaultUpdatingColumns)\n\t\t}\n\t} else {\n\t\tonConflict.DoNothing = true\n\t}\n\n\treturn\n}\n\nfunc saveAssociations(db *gorm.DB, rel *schema.Relationship, rValues reflect.Value, selectColumns map[string]bool, restricted bool, defaultUpdatingColumns []string) error {\n\t// stop save association loop\n\tif checkAssociationsSaved(db, rValues) {\n\t\treturn nil\n\t}\n\n\tvar (\n\t\tselects, omits []string\n\t\tonConflict     = onConflictOption(db.Statement, rel.FieldSchema, defaultUpdatingColumns)\n\t\trefName        = rel.Name + \".\"\n\t\tvalues         = rValues.Interface()\n\t)\n\n\tfor name, ok := range selectColumns {\n\t\tcolumnName := \"\"\n\t\tif strings.HasPrefix(name, refName) {\n\t\t\tcolumnName = strings.TrimPrefix(name, refName)\n\t\t}\n\n\t\tif columnName != \"\" {\n\t\t\tif ok {\n\t\t\t\tselects = append(selects, columnName)\n\t\t\t} else {\n\t\t\t\tomits = append(omits, columnName)\n\t\t\t}\n\t\t}\n\t}\n\n\ttx := db.Session(&gorm.Session{NewDB: true}).Clauses(onConflict).Session(&gorm.Session{\n\t\tFullSaveAssociations:     db.FullSaveAssociations,\n\t\tSkipHooks:                db.Statement.SkipHooks,\n\t\tDisableNestedTransaction: true,\n\t})\n\n\tdb.Statement.Settings.Range(func(k, v any) bool {\n\t\ttx.Statement.Settings.Store(k, v)\n\t\treturn true\n\t})\n\n\tif tx.Statement.FullSaveAssociations {\n\t\ttx = tx.Set(\"gorm:update_track_time\", true)\n\t}\n\n\tif len(selects) > 0 {\n\t\ttx = tx.Select(selects)\n\t} else if restricted && len(omits) == 0 {\n\t\ttx = tx.Omit(clause.Associations)\n\t}\n\n\tif len(omits) > 0 {\n\t\ttx = tx.Omit(omits...)\n\t}\n\n\treturn db.AddError(tx.Create(values).Error)\n}\n\n// check association values has been saved\n// if values kind is Struct, check it has been saved\n// if values kind is Slice/Array, check all items have been saved\nvar visitMapStoreKey = \"gorm:saved_association_map\"\n\nfunc checkAssociationsSaved(db *gorm.DB, values reflect.Value) bool {\n\tif visit, ok := db.Get(visitMapStoreKey); ok {\n\t\tif v, ok := visit.(*visitMap); ok {\n\t\t\tif loadOrStoreVisitMap(v, values) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t} else {\n\t\tvistMap := make(visitMap)\n\t\tloadOrStoreVisitMap(&vistMap, values)\n\t\tdb.Set(visitMapStoreKey, &vistMap)\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/callbacks.go",
    "content": "package callbacks\n\nimport (\n\t\"gossh/gorm\"\n)\n\nvar (\n\tcreateClauses = []string{\"INSERT\", \"VALUES\", \"ON CONFLICT\"}\n\tqueryClauses  = []string{\"SELECT\", \"FROM\", \"WHERE\", \"GROUP BY\", \"ORDER BY\", \"LIMIT\", \"FOR\"}\n\tupdateClauses = []string{\"UPDATE\", \"SET\", \"WHERE\"}\n\tdeleteClauses = []string{\"DELETE\", \"FROM\", \"WHERE\"}\n)\n\ntype Config struct {\n\tLastInsertIDReversed bool\n\tCreateClauses        []string\n\tQueryClauses         []string\n\tUpdateClauses        []string\n\tDeleteClauses        []string\n}\n\nfunc RegisterDefaultCallbacks(db *gorm.DB, config *Config) {\n\tenableTransaction := func(db *gorm.DB) bool {\n\t\treturn !db.SkipDefaultTransaction\n\t}\n\n\tif len(config.CreateClauses) == 0 {\n\t\tconfig.CreateClauses = createClauses\n\t}\n\tif len(config.QueryClauses) == 0 {\n\t\tconfig.QueryClauses = queryClauses\n\t}\n\tif len(config.DeleteClauses) == 0 {\n\t\tconfig.DeleteClauses = deleteClauses\n\t}\n\tif len(config.UpdateClauses) == 0 {\n\t\tconfig.UpdateClauses = updateClauses\n\t}\n\n\tcreateCallback := db.Callback().Create()\n\tcreateCallback.Match(enableTransaction).Register(\"gorm:begin_transaction\", BeginTransaction)\n\tcreateCallback.Register(\"gorm:before_create\", BeforeCreate)\n\tcreateCallback.Register(\"gorm:save_before_associations\", SaveBeforeAssociations(true))\n\tcreateCallback.Register(\"gorm:create\", Create(config))\n\tcreateCallback.Register(\"gorm:save_after_associations\", SaveAfterAssociations(true))\n\tcreateCallback.Register(\"gorm:after_create\", AfterCreate)\n\tcreateCallback.Match(enableTransaction).Register(\"gorm:commit_or_rollback_transaction\", CommitOrRollbackTransaction)\n\tcreateCallback.Clauses = config.CreateClauses\n\n\tqueryCallback := db.Callback().Query()\n\tqueryCallback.Register(\"gorm:query\", Query)\n\tqueryCallback.Register(\"gorm:preload\", Preload)\n\tqueryCallback.Register(\"gorm:after_query\", AfterQuery)\n\tqueryCallback.Clauses = config.QueryClauses\n\n\tdeleteCallback := db.Callback().Delete()\n\tdeleteCallback.Match(enableTransaction).Register(\"gorm:begin_transaction\", BeginTransaction)\n\tdeleteCallback.Register(\"gorm:before_delete\", BeforeDelete)\n\tdeleteCallback.Register(\"gorm:delete_before_associations\", DeleteBeforeAssociations)\n\tdeleteCallback.Register(\"gorm:delete\", Delete(config))\n\tdeleteCallback.Register(\"gorm:after_delete\", AfterDelete)\n\tdeleteCallback.Match(enableTransaction).Register(\"gorm:commit_or_rollback_transaction\", CommitOrRollbackTransaction)\n\tdeleteCallback.Clauses = config.DeleteClauses\n\n\tupdateCallback := db.Callback().Update()\n\tupdateCallback.Match(enableTransaction).Register(\"gorm:begin_transaction\", BeginTransaction)\n\tupdateCallback.Register(\"gorm:setup_reflect_value\", SetupUpdateReflectValue)\n\tupdateCallback.Register(\"gorm:before_update\", BeforeUpdate)\n\tupdateCallback.Register(\"gorm:save_before_associations\", SaveBeforeAssociations(false))\n\tupdateCallback.Register(\"gorm:update\", Update(config))\n\tupdateCallback.Register(\"gorm:save_after_associations\", SaveAfterAssociations(false))\n\tupdateCallback.Register(\"gorm:after_update\", AfterUpdate)\n\tupdateCallback.Match(enableTransaction).Register(\"gorm:commit_or_rollback_transaction\", CommitOrRollbackTransaction)\n\tupdateCallback.Clauses = config.UpdateClauses\n\n\trowCallback := db.Callback().Row()\n\trowCallback.Register(\"gorm:row\", RowQuery)\n\trowCallback.Clauses = config.QueryClauses\n\n\trawCallback := db.Callback().Raw()\n\trawCallback.Register(\"gorm:raw\", RawExec)\n\trawCallback.Clauses = config.QueryClauses\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/callmethod.go",
    "content": "package callbacks\n\nimport (\n\t\"reflect\"\n\n\t\"gossh/gorm\"\n)\n\nfunc callMethod(db *gorm.DB, fc func(value any, tx *gorm.DB) bool) {\n\ttx := db.Session(&gorm.Session{NewDB: true})\n\tif called := fc(db.Statement.ReflectValue.Interface(), tx); !called {\n\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tdb.Statement.CurDestIndex = 0\n\t\t\tfor i := 0; i < db.Statement.ReflectValue.Len(); i++ {\n\t\t\t\tif value := reflect.Indirect(db.Statement.ReflectValue.Index(i)); value.CanAddr() {\n\t\t\t\t\tfc(value.Addr().Interface(), tx)\n\t\t\t\t} else {\n\t\t\t\t\tdb.AddError(gorm.ErrInvalidValue)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tdb.Statement.CurDestIndex++\n\t\t\t}\n\t\tcase reflect.Struct:\n\t\t\tif db.Statement.ReflectValue.CanAddr() {\n\t\t\t\tfc(db.Statement.ReflectValue.Addr().Interface(), tx)\n\t\t\t} else {\n\t\t\t\tdb.AddError(gorm.ErrInvalidValue)\n\t\t\t}\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/create.go",
    "content": "package callbacks\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// BeforeCreate before create hooks\nfunc BeforeCreate(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && (db.Statement.Schema.BeforeSave || db.Statement.Schema.BeforeCreate) {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) (called bool) {\n\t\t\tif db.Statement.Schema.BeforeSave {\n\t\t\t\tif i, ok := value.(BeforeSaveInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.BeforeSave(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif db.Statement.Schema.BeforeCreate {\n\t\t\t\tif i, ok := value.(BeforeCreateInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.BeforeCreate(tx))\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn called\n\t\t})\n\t}\n}\n\n// Create create hook\nfunc Create(config *Config) func(db *gorm.DB) {\n\tsupportReturning := utils.Contains(config.CreateClauses, \"RETURNING\")\n\n\treturn func(db *gorm.DB) {\n\t\tif db.Error != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif db.Statement.Schema != nil {\n\t\t\tif !db.Statement.Unscoped {\n\t\t\t\tfor _, c := range db.Statement.Schema.CreateClauses {\n\t\t\t\t\tdb.Statement.AddClause(c)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif supportReturning && len(db.Statement.Schema.FieldsWithDefaultDBValue) > 0 {\n\t\t\t\tif _, ok := db.Statement.Clauses[\"RETURNING\"]; !ok {\n\t\t\t\t\tfromColumns := make([]clause.Column, 0, len(db.Statement.Schema.FieldsWithDefaultDBValue))\n\t\t\t\t\tfor _, field := range db.Statement.Schema.FieldsWithDefaultDBValue {\n\t\t\t\t\t\tfromColumns = append(fromColumns, clause.Column{Name: field.DBName})\n\t\t\t\t\t}\n\t\t\t\t\tdb.Statement.AddClause(clause.Returning{Columns: fromColumns})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif db.Statement.SQL.Len() == 0 {\n\t\t\tdb.Statement.SQL.Grow(180)\n\t\t\tdb.Statement.AddClauseIfNotExists(clause.Insert{})\n\t\t\tdb.Statement.AddClause(ConvertToCreateValues(db.Statement))\n\n\t\t\tdb.Statement.Build(db.Statement.BuildClauses...)\n\t\t}\n\n\t\tisDryRun := !db.DryRun && db.Error == nil\n\t\tif !isDryRun {\n\t\t\treturn\n\t\t}\n\n\t\tok, mode := hasReturning(db, supportReturning)\n\t\tif ok {\n\t\t\tif c, ok := db.Statement.Clauses[\"ON CONFLICT\"]; ok {\n\t\t\t\tif onConflict, _ := c.Expression.(clause.OnConflict); onConflict.DoNothing {\n\t\t\t\t\tmode |= gorm.ScanOnConflictDoNothing\n\t\t\t\t}\n\t\t\t}\n\n\t\t\trows, err := db.Statement.ConnPool.QueryContext(\n\t\t\t\tdb.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...,\n\t\t\t)\n\t\t\tif db.AddError(err) == nil {\n\t\t\t\tdefer func() {\n\t\t\t\t\tdb.AddError(rows.Close())\n\t\t\t\t}()\n\t\t\t\tgorm.Scan(rows, db, mode)\n\t\t\t}\n\n\t\t\treturn\n\t\t}\n\n\t\tresult, err := db.Statement.ConnPool.ExecContext(\n\t\t\tdb.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...,\n\t\t)\n\t\tif err != nil {\n\t\t\tdb.AddError(err)\n\t\t\treturn\n\t\t}\n\n\t\tdb.RowsAffected, _ = result.RowsAffected()\n\t\tif db.RowsAffected == 0 {\n\t\t\treturn\n\t\t}\n\n\t\tvar (\n\t\t\tpkField     *schema.Field\n\t\t\tpkFieldName = \"@id\"\n\t\t)\n\n\t\tinsertID, err := result.LastInsertId()\n\t\tinsertOk := err == nil && insertID > 0\n\n\t\tif !insertOk {\n\t\t\tif !supportReturning {\n\t\t\t\tdb.AddError(err)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\tif db.Statement.Schema != nil {\n\t\t\tif db.Statement.Schema.PrioritizedPrimaryField == nil || !db.Statement.Schema.PrioritizedPrimaryField.HasDefaultValue {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tpkField = db.Statement.Schema.PrioritizedPrimaryField\n\t\t\tpkFieldName = db.Statement.Schema.PrioritizedPrimaryField.DBName\n\t\t}\n\n\t\t// append @id column with value for auto-increment primary key\n\t\t// the @id value is correct, when: 1. without setting auto-increment primary key, 2. database AutoIncrementIncrement = 1\n\t\tswitch values := db.Statement.Dest.(type) {\n\t\tcase map[string]any:\n\t\t\tvalues[pkFieldName] = insertID\n\t\tcase *map[string]any:\n\t\t\t(*values)[pkFieldName] = insertID\n\t\tcase []map[string]any, *[]map[string]any:\n\t\t\tmapValues, ok := values.([]map[string]any)\n\t\t\tif !ok {\n\t\t\t\tif v, ok := values.(*[]map[string]any); ok {\n\t\t\t\t\tif *v != nil {\n\t\t\t\t\t\tmapValues = *v\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif config.LastInsertIDReversed {\n\t\t\t\tinsertID -= int64(len(mapValues)-1) * schema.DefaultAutoIncrementIncrement\n\t\t\t}\n\n\t\t\tfor _, mapValue := range mapValues {\n\t\t\t\tif mapValue != nil {\n\t\t\t\t\tmapValue[pkFieldName] = insertID\n\t\t\t\t}\n\t\t\t\tinsertID += schema.DefaultAutoIncrementIncrement\n\t\t\t}\n\t\tdefault:\n\t\t\tif pkField == nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tif config.LastInsertIDReversed {\n\t\t\t\t\tfor i := db.Statement.ReflectValue.Len() - 1; i >= 0; i-- {\n\t\t\t\t\t\trv := db.Statement.ReflectValue.Index(i)\n\t\t\t\t\t\tif reflect.Indirect(rv).Kind() != reflect.Struct {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t_, isZero := pkField.ValueOf(db.Statement.Context, rv)\n\t\t\t\t\t\tif isZero {\n\t\t\t\t\t\t\tdb.AddError(pkField.Set(db.Statement.Context, rv, insertID))\n\t\t\t\t\t\t\tinsertID -= pkField.AutoIncrementIncrement\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor i := 0; i < db.Statement.ReflectValue.Len(); i++ {\n\t\t\t\t\t\trv := db.Statement.ReflectValue.Index(i)\n\t\t\t\t\t\tif reflect.Indirect(rv).Kind() != reflect.Struct {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif _, isZero := pkField.ValueOf(db.Statement.Context, rv); isZero {\n\t\t\t\t\t\t\tdb.AddError(pkField.Set(db.Statement.Context, rv, insertID))\n\t\t\t\t\t\t\tinsertID += pkField.AutoIncrementIncrement\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase reflect.Struct:\n\t\t\t\t_, isZero := pkField.ValueOf(db.Statement.Context, db.Statement.ReflectValue)\n\t\t\t\tif isZero {\n\t\t\t\t\tdb.AddError(pkField.Set(db.Statement.Context, db.Statement.ReflectValue, insertID))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// AfterCreate after create hooks\nfunc AfterCreate(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && (db.Statement.Schema.AfterSave || db.Statement.Schema.AfterCreate) {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) (called bool) {\n\t\t\tif db.Statement.Schema.AfterCreate {\n\t\t\t\tif i, ok := value.(AfterCreateInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.AfterCreate(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif db.Statement.Schema.AfterSave {\n\t\t\t\tif i, ok := value.(AfterSaveInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.AfterSave(tx))\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn called\n\t\t})\n\t}\n}\n\n// ConvertToCreateValues convert to create values\nfunc ConvertToCreateValues(stmt *gorm.Statement) (values clause.Values) {\n\tcurTime := stmt.DB.NowFunc()\n\n\tswitch value := stmt.Dest.(type) {\n\tcase map[string]any:\n\t\tvalues = ConvertMapToValuesForCreate(stmt, value)\n\tcase *map[string]any:\n\t\tvalues = ConvertMapToValuesForCreate(stmt, *value)\n\tcase []map[string]any:\n\t\tvalues = ConvertSliceOfMapToValuesForCreate(stmt, value)\n\tcase *[]map[string]any:\n\t\tvalues = ConvertSliceOfMapToValuesForCreate(stmt, *value)\n\tdefault:\n\t\tvar (\n\t\t\tselectColumns, restricted = stmt.SelectAndOmitColumns(true, false)\n\t\t\t_, updateTrackTime        = stmt.Get(\"gorm:update_track_time\")\n\t\t\tisZero                    bool\n\t\t)\n\t\tstmt.Settings.Delete(\"gorm:update_track_time\")\n\n\t\tvalues = clause.Values{Columns: make([]clause.Column, 0, len(stmt.Schema.DBNames))}\n\n\t\tfor _, db := range stmt.Schema.DBNames {\n\t\t\tif field := stmt.Schema.FieldsByDBName[db]; !field.HasDefaultValue || field.DefaultValueInterface != nil {\n\t\t\t\tif v, ok := selectColumns[db]; (ok && v) || (!ok && (!restricted || field.AutoCreateTime > 0 || field.AutoUpdateTime > 0)) {\n\t\t\t\t\tvalues.Columns = append(values.Columns, clause.Column{Name: db})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch stmt.ReflectValue.Kind() {\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\trValLen := stmt.ReflectValue.Len()\n\t\t\tif rValLen == 0 {\n\t\t\t\tstmt.AddError(gorm.ErrEmptySlice)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tstmt.SQL.Grow(rValLen * 18)\n\t\t\tstmt.Vars = make([]any, 0, rValLen*len(values.Columns))\n\t\t\tvalues.Values = make([][]any, rValLen)\n\n\t\t\tdefaultValueFieldsHavingValue := map[*schema.Field][]any{}\n\t\t\tfor i := 0; i < rValLen; i++ {\n\t\t\t\trv := reflect.Indirect(stmt.ReflectValue.Index(i))\n\t\t\t\tif !rv.IsValid() {\n\t\t\t\t\tstmt.AddError(fmt.Errorf(\"slice data #%v is invalid: %w\", i, gorm.ErrInvalidData))\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tvalues.Values[i] = make([]any, len(values.Columns))\n\t\t\t\tfor idx, column := range values.Columns {\n\t\t\t\t\tfield := stmt.Schema.FieldsByDBName[column.Name]\n\t\t\t\t\tif values.Values[i][idx], isZero = field.ValueOf(stmt.Context, rv); isZero {\n\t\t\t\t\t\tif field.DefaultValueInterface != nil {\n\t\t\t\t\t\t\tvalues.Values[i][idx] = field.DefaultValueInterface\n\t\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, rv, field.DefaultValueInterface))\n\t\t\t\t\t\t} else if field.AutoCreateTime > 0 || field.AutoUpdateTime > 0 {\n\t\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, rv, curTime))\n\t\t\t\t\t\t\tvalues.Values[i][idx], _ = field.ValueOf(stmt.Context, rv)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if field.AutoUpdateTime > 0 && updateTrackTime {\n\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, rv, curTime))\n\t\t\t\t\t\tvalues.Values[i][idx], _ = field.ValueOf(stmt.Context, rv)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor _, field := range stmt.Schema.FieldsWithDefaultDBValue {\n\t\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\t\tif rvOfvalue, isZero := field.ValueOf(stmt.Context, rv); !isZero {\n\t\t\t\t\t\t\tif len(defaultValueFieldsHavingValue[field]) == 0 {\n\t\t\t\t\t\t\t\tdefaultValueFieldsHavingValue[field] = make([]any, rValLen)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdefaultValueFieldsHavingValue[field][i] = rvOfvalue\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\tfor _, field := range stmt.Schema.FieldsWithDefaultDBValue {\n\t\t\t\tif vs, ok := defaultValueFieldsHavingValue[field]; ok {\n\t\t\t\t\tvalues.Columns = append(values.Columns, clause.Column{Name: field.DBName})\n\t\t\t\t\tfor idx := range values.Values {\n\t\t\t\t\t\tif vs[idx] == nil {\n\t\t\t\t\t\t\tvalues.Values[idx] = append(values.Values[idx], stmt.Dialector.DefaultValueOf(field))\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tvalues.Values[idx] = append(values.Values[idx], vs[idx])\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Struct:\n\t\t\tvalues.Values = [][]any{make([]any, len(values.Columns))}\n\t\t\tfor idx, column := range values.Columns {\n\t\t\t\tfield := stmt.Schema.FieldsByDBName[column.Name]\n\t\t\t\tif values.Values[0][idx], isZero = field.ValueOf(stmt.Context, stmt.ReflectValue); isZero {\n\t\t\t\t\tif field.DefaultValueInterface != nil {\n\t\t\t\t\t\tvalues.Values[0][idx] = field.DefaultValueInterface\n\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue, field.DefaultValueInterface))\n\t\t\t\t\t} else if field.AutoCreateTime > 0 || field.AutoUpdateTime > 0 {\n\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue, curTime))\n\t\t\t\t\t\tvalues.Values[0][idx], _ = field.ValueOf(stmt.Context, stmt.ReflectValue)\n\t\t\t\t\t}\n\t\t\t\t} else if field.AutoUpdateTime > 0 && updateTrackTime {\n\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue, curTime))\n\t\t\t\t\tvalues.Values[0][idx], _ = field.ValueOf(stmt.Context, stmt.ReflectValue)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor _, field := range stmt.Schema.FieldsWithDefaultDBValue {\n\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\tif rvOfvalue, isZero := field.ValueOf(stmt.Context, stmt.ReflectValue); !isZero {\n\t\t\t\t\t\tvalues.Columns = append(values.Columns, clause.Column{Name: field.DBName})\n\t\t\t\t\t\tvalues.Values[0] = append(values.Values[0], rvOfvalue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tstmt.AddError(gorm.ErrInvalidData)\n\t\t}\n\t}\n\n\tif c, ok := stmt.Clauses[\"ON CONFLICT\"]; ok {\n\t\tif onConflict, _ := c.Expression.(clause.OnConflict); onConflict.UpdateAll {\n\t\t\tif stmt.Schema != nil && len(values.Columns) >= 1 {\n\t\t\t\tselectColumns, restricted := stmt.SelectAndOmitColumns(true, true)\n\n\t\t\t\tcolumns := make([]string, 0, len(values.Columns)-1)\n\t\t\t\tfor _, column := range values.Columns {\n\t\t\t\t\tif field := stmt.Schema.LookUpField(column.Name); field != nil {\n\t\t\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\t\t\tif !field.PrimaryKey && (!field.HasDefaultValue || field.DefaultValueInterface != nil ||\n\t\t\t\t\t\t\t\tstrings.EqualFold(field.DefaultValue, \"NULL\")) && field.AutoCreateTime == 0 {\n\t\t\t\t\t\t\t\tif field.AutoUpdateTime > 0 {\n\t\t\t\t\t\t\t\t\tassignment := clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: curTime}\n\t\t\t\t\t\t\t\t\tswitch field.AutoUpdateTime {\n\t\t\t\t\t\t\t\t\tcase schema.UnixNanosecond:\n\t\t\t\t\t\t\t\t\t\tassignment.Value = curTime.UnixNano()\n\t\t\t\t\t\t\t\t\tcase schema.UnixMillisecond:\n\t\t\t\t\t\t\t\t\t\tassignment.Value = curTime.UnixMilli()\n\t\t\t\t\t\t\t\t\tcase schema.UnixSecond:\n\t\t\t\t\t\t\t\t\t\tassignment.Value = curTime.Unix()\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tonConflict.DoUpdates = append(onConflict.DoUpdates, assignment)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcolumns = append(columns, column.Name)\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\n\t\t\t\tonConflict.DoUpdates = append(onConflict.DoUpdates, clause.AssignmentColumns(columns)...)\n\t\t\t\tif len(onConflict.DoUpdates) == 0 {\n\t\t\t\t\tonConflict.DoNothing = true\n\t\t\t\t}\n\n\t\t\t\t// use primary fields as default OnConflict columns\n\t\t\t\tif len(onConflict.Columns) == 0 {\n\t\t\t\t\tfor _, field := range stmt.Schema.PrimaryFields {\n\t\t\t\t\t\tonConflict.Columns = append(onConflict.Columns, clause.Column{Name: field.DBName})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstmt.AddClause(onConflict)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn values\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/delete.go",
    "content": "package callbacks\n\nimport (\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nfunc BeforeDelete(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.BeforeDelete {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) bool {\n\t\t\tif i, ok := value.(BeforeDeleteInterface); ok {\n\t\t\t\tdb.AddError(i.BeforeDelete(tx))\n\t\t\t\treturn true\n\t\t\t}\n\n\t\t\treturn false\n\t\t})\n\t}\n}\n\nfunc DeleteBeforeAssociations(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil {\n\t\tselectColumns, restricted := db.Statement.SelectAndOmitColumns(true, false)\n\t\tif !restricted {\n\t\t\treturn\n\t\t}\n\n\t\tfor column, v := range selectColumns {\n\t\t\tif !v {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\trel, ok := db.Statement.Schema.Relationships.Relations[column]\n\t\t\tif !ok {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tswitch rel.Type {\n\t\t\tcase schema.HasOne, schema.HasMany:\n\t\t\t\tqueryConds := rel.ToQueryConditions(db.Statement.Context, db.Statement.ReflectValue)\n\t\t\t\tmodelValue := reflect.New(rel.FieldSchema.ModelType).Interface()\n\t\t\t\ttx := db.Session(&gorm.Session{NewDB: true}).Model(modelValue)\n\t\t\t\twithoutConditions := false\n\t\t\t\tif db.Statement.Unscoped {\n\t\t\t\t\ttx = tx.Unscoped()\n\t\t\t\t}\n\n\t\t\t\tif len(db.Statement.Selects) > 0 {\n\t\t\t\t\tselects := make([]string, 0, len(db.Statement.Selects))\n\t\t\t\t\tfor _, s := range db.Statement.Selects {\n\t\t\t\t\t\tif s == clause.Associations {\n\t\t\t\t\t\t\tselects = append(selects, s)\n\t\t\t\t\t\t} else if columnPrefix := column + \".\"; strings.HasPrefix(s, columnPrefix) {\n\t\t\t\t\t\t\tselects = append(selects, strings.TrimPrefix(s, columnPrefix))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif len(selects) > 0 {\n\t\t\t\t\t\ttx = tx.Select(selects)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor _, cond := range queryConds {\n\t\t\t\t\tif c, ok := cond.(clause.IN); ok && len(c.Values) == 0 {\n\t\t\t\t\t\twithoutConditions = true\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !withoutConditions && db.AddError(tx.Clauses(clause.Where{Exprs: queryConds}).Delete(modelValue).Error) != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\tcase schema.Many2Many:\n\t\t\t\tvar (\n\t\t\t\t\tqueryConds     = make([]clause.Expression, 0, len(rel.References))\n\t\t\t\t\tforeignFields  = make([]*schema.Field, 0, len(rel.References))\n\t\t\t\t\trelForeignKeys = make([]string, 0, len(rel.References))\n\t\t\t\t\tmodelValue     = reflect.New(rel.JoinTable.ModelType).Interface()\n\t\t\t\t\ttable          = rel.JoinTable.Table\n\t\t\t\t\ttx             = db.Session(&gorm.Session{NewDB: true}).Model(modelValue).Table(table)\n\t\t\t\t)\n\n\t\t\t\tfor _, ref := range rel.References {\n\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\tforeignFields = append(foreignFields, ref.PrimaryKey)\n\t\t\t\t\t\trelForeignKeys = append(relForeignKeys, ref.ForeignKey.DBName)\n\t\t\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\t\t\tqueryConds = append(queryConds, clause.Eq{\n\t\t\t\t\t\t\tColumn: clause.Column{Table: rel.JoinTable.Table, Name: ref.ForeignKey.DBName},\n\t\t\t\t\t\t\tValue:  ref.PrimaryValue,\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t_, foreignValues := schema.GetIdentityFieldValuesMap(db.Statement.Context, db.Statement.ReflectValue, foreignFields)\n\t\t\t\tcolumn, values := schema.ToQueryValues(table, relForeignKeys, foreignValues)\n\t\t\t\tqueryConds = append(queryConds, clause.IN{Column: column, Values: values})\n\n\t\t\t\tif db.AddError(tx.Clauses(clause.Where{Exprs: queryConds}).Delete(modelValue).Error) != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n}\n\nfunc Delete(config *Config) func(db *gorm.DB) {\n\tsupportReturning := utils.Contains(config.DeleteClauses, \"RETURNING\")\n\n\treturn func(db *gorm.DB) {\n\t\tif db.Error != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif db.Statement.Schema != nil {\n\t\t\tfor _, c := range db.Statement.Schema.DeleteClauses {\n\t\t\t\tdb.Statement.AddClause(c)\n\t\t\t}\n\t\t}\n\n\t\tif db.Statement.SQL.Len() == 0 {\n\t\t\tdb.Statement.SQL.Grow(100)\n\t\t\tdb.Statement.AddClauseIfNotExists(clause.Delete{})\n\n\t\t\tif db.Statement.Schema != nil {\n\t\t\t\t_, queryValues := schema.GetIdentityFieldValuesMap(db.Statement.Context, db.Statement.ReflectValue, db.Statement.Schema.PrimaryFields)\n\t\t\t\tcolumn, values := schema.ToQueryValues(db.Statement.Table, db.Statement.Schema.PrimaryFieldDBNames, queryValues)\n\n\t\t\t\tif len(values) > 0 {\n\t\t\t\t\tdb.Statement.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})\n\t\t\t\t}\n\n\t\t\t\tif db.Statement.ReflectValue.CanAddr() && db.Statement.Dest != db.Statement.Model && db.Statement.Model != nil {\n\t\t\t\t\t_, queryValues = schema.GetIdentityFieldValuesMap(db.Statement.Context, reflect.ValueOf(db.Statement.Model), db.Statement.Schema.PrimaryFields)\n\t\t\t\t\tcolumn, values = schema.ToQueryValues(db.Statement.Table, db.Statement.Schema.PrimaryFieldDBNames, queryValues)\n\n\t\t\t\t\tif len(values) > 0 {\n\t\t\t\t\t\tdb.Statement.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdb.Statement.AddClauseIfNotExists(clause.From{})\n\n\t\t\tdb.Statement.Build(db.Statement.BuildClauses...)\n\t\t}\n\n\t\tcheckMissingWhereConditions(db)\n\n\t\tif !db.DryRun && db.Error == nil {\n\t\t\tok, mode := hasReturning(db, supportReturning)\n\t\t\tif !ok {\n\t\t\t\tresult, err := db.Statement.ConnPool.ExecContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\t\t\t\tif db.AddError(err) == nil {\n\t\t\t\t\tdb.RowsAffected, _ = result.RowsAffected()\n\t\t\t\t}\n\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif rows, err := db.Statement.ConnPool.QueryContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...); db.AddError(err) == nil {\n\t\t\t\tgorm.Scan(rows, db, mode)\n\t\t\t\tdb.AddError(rows.Close())\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc AfterDelete(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.AfterDelete {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) bool {\n\t\t\tif i, ok := value.(AfterDeleteInterface); ok {\n\t\t\t\tdb.AddError(i.AfterDelete(tx))\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/helper.go",
    "content": "package callbacks\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n)\n\n// ConvertMapToValuesForCreate convert map to values\nfunc ConvertMapToValuesForCreate(stmt *gorm.Statement, mapValue map[string]any) (values clause.Values) {\n\tvalues.Columns = make([]clause.Column, 0, len(mapValue))\n\tselectColumns, restricted := stmt.SelectAndOmitColumns(true, false)\n\n\tkeys := make([]string, 0, len(mapValue))\n\tfor k := range mapValue {\n\t\tkeys = append(keys, k)\n\t}\n\tsort.Strings(keys)\n\n\tfor _, k := range keys {\n\t\tvalue := mapValue[k]\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(k); field != nil {\n\t\t\t\tk = field.DBName\n\t\t\t}\n\t\t}\n\n\t\tif v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) {\n\t\t\tvalues.Columns = append(values.Columns, clause.Column{Name: k})\n\t\t\tif len(values.Values) == 0 {\n\t\t\t\tvalues.Values = [][]any{{}}\n\t\t\t}\n\n\t\t\tvalues.Values[0] = append(values.Values[0], value)\n\t\t}\n\t}\n\treturn\n}\n\n// ConvertSliceOfMapToValuesForCreate convert slice of map to values\nfunc ConvertSliceOfMapToValuesForCreate(stmt *gorm.Statement, mapValues []map[string]any) (values clause.Values) {\n\tcolumns := make([]string, 0, len(mapValues))\n\n\t// when the length of mapValues is zero,return directly here\n\t// no need to call stmt.SelectAndOmitColumns method\n\tif len(mapValues) == 0 {\n\t\tstmt.AddError(gorm.ErrEmptySlice)\n\t\treturn\n\t}\n\n\tvar (\n\t\tresult                    = make(map[string][]any, len(mapValues))\n\t\tselectColumns, restricted = stmt.SelectAndOmitColumns(true, false)\n\t)\n\n\tfor idx, mapValue := range mapValues {\n\t\tfor k, v := range mapValue {\n\t\t\tif stmt.Schema != nil {\n\t\t\t\tif field := stmt.Schema.LookUpField(k); field != nil {\n\t\t\t\t\tk = field.DBName\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif _, ok := result[k]; !ok {\n\t\t\t\tif v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\tresult[k] = make([]any, len(mapValues))\n\t\t\t\t\tcolumns = append(columns, k)\n\t\t\t\t} else {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tresult[k][idx] = v\n\t\t}\n\t}\n\n\tsort.Strings(columns)\n\tvalues.Values = make([][]any, len(mapValues))\n\tvalues.Columns = make([]clause.Column, len(columns))\n\tfor idx, column := range columns {\n\t\tvalues.Columns[idx] = clause.Column{Name: column}\n\n\t\tfor i, v := range result[column] {\n\t\t\tif len(values.Values[i]) == 0 {\n\t\t\t\tvalues.Values[i] = make([]any, len(columns))\n\t\t\t}\n\n\t\t\tvalues.Values[i][idx] = v\n\t\t}\n\t}\n\treturn\n}\n\nfunc hasReturning(tx *gorm.DB, supportReturning bool) (bool, gorm.ScanMode) {\n\tif supportReturning {\n\t\tif c, ok := tx.Statement.Clauses[\"RETURNING\"]; ok {\n\t\t\treturning, _ := c.Expression.(clause.Returning)\n\t\t\tif len(returning.Columns) == 0 || (len(returning.Columns) == 1 && returning.Columns[0].Name == \"*\") {\n\t\t\t\treturn true, 0\n\t\t\t}\n\t\t\treturn true, gorm.ScanUpdate\n\t\t}\n\t}\n\treturn false, 0\n}\n\nfunc checkMissingWhereConditions(db *gorm.DB) {\n\tif !db.AllowGlobalUpdate && db.Error == nil {\n\t\twhere, withCondition := db.Statement.Clauses[\"WHERE\"]\n\t\tif withCondition {\n\t\t\tif _, withSoftDelete := db.Statement.Clauses[\"soft_delete_enabled\"]; withSoftDelete {\n\t\t\t\twhereClause, _ := where.Expression.(clause.Where)\n\t\t\t\twithCondition = len(whereClause.Exprs) > 1\n\t\t\t}\n\t\t}\n\t\tif !withCondition {\n\t\t\tdb.AddError(gorm.ErrMissingWhereClause)\n\t\t}\n\t\treturn\n\t}\n}\n\ntype visitMap = map[reflect.Value]bool\n\n// Check if circular values, return true if loaded\nfunc loadOrStoreVisitMap(visitMap *visitMap, v reflect.Value) (loaded bool) {\n\tif v.Kind() == reflect.Ptr {\n\t\tv = v.Elem()\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tloaded = true\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tif !loadOrStoreVisitMap(visitMap, v.Index(i)) {\n\t\t\t\tloaded = false\n\t\t\t}\n\t\t}\n\tcase reflect.Struct, reflect.Interface:\n\t\tif v.CanAddr() {\n\t\t\tp := v.Addr()\n\t\t\tif _, ok := (*visitMap)[p]; ok {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t(*visitMap)[p] = true\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/interfaces.go",
    "content": "package callbacks\n\nimport \"gossh/gorm\"\n\ntype BeforeCreateInterface interface {\n\tBeforeCreate(*gorm.DB) error\n}\n\ntype AfterCreateInterface interface {\n\tAfterCreate(*gorm.DB) error\n}\n\ntype BeforeUpdateInterface interface {\n\tBeforeUpdate(*gorm.DB) error\n}\n\ntype AfterUpdateInterface interface {\n\tAfterUpdate(*gorm.DB) error\n}\n\ntype BeforeSaveInterface interface {\n\tBeforeSave(*gorm.DB) error\n}\n\ntype AfterSaveInterface interface {\n\tAfterSave(*gorm.DB) error\n}\n\ntype BeforeDeleteInterface interface {\n\tBeforeDelete(*gorm.DB) error\n}\n\ntype AfterDeleteInterface interface {\n\tAfterDelete(*gorm.DB) error\n}\n\ntype AfterFindInterface interface {\n\tAfterFind(*gorm.DB) error\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/preload.go",
    "content": "package callbacks\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// parsePreloadMap extracts nested preloads. e.g.\n//\n//\t// schema has a \"k0\" relation and a \"k7.k8\" embedded relation\n//\tparsePreloadMap(schema, map[string][]interface{}{\n//\t\tclause.Associations: {\"arg1\"},\n//\t\t\"k1\":                {\"arg2\"},\n//\t\t\"k2.k3\":             {\"arg3\"},\n//\t\t\"k4.k5.k6\":          {\"arg4\"},\n//\t})\n//\t// preloadMap is\n//\tmap[string]map[string][]interface{}{\n//\t\t\"k0\": {},\n//\t\t\"k7\": {\n//\t\t\t\"k8\": {},\n//\t\t},\n//\t\t\"k1\": {},\n//\t\t\"k2\": {\n//\t\t\t\"k3\": {\"arg3\"},\n//\t\t},\n//\t\t\"k4\": {\n//\t\t\t\"k5.k6\": {\"arg4\"},\n//\t\t},\n//\t}\nfunc parsePreloadMap(s *schema.Schema, preloads map[string][]any) map[string]map[string][]any {\n\tpreloadMap := map[string]map[string][]any{}\n\tsetPreloadMap := func(name, value string, args []any) {\n\t\tif _, ok := preloadMap[name]; !ok {\n\t\t\tpreloadMap[name] = map[string][]any{}\n\t\t}\n\t\tif value != \"\" {\n\t\t\tpreloadMap[name][value] = args\n\t\t}\n\t}\n\n\tfor name, args := range preloads {\n\t\tpreloadFields := strings.Split(name, \".\")\n\t\tvalue := strings.TrimPrefix(strings.TrimPrefix(name, preloadFields[0]), \".\")\n\t\tif preloadFields[0] == clause.Associations {\n\t\t\tfor _, relation := range s.Relationships.Relations {\n\t\t\t\tif relation.Schema == s {\n\t\t\t\t\tsetPreloadMap(relation.Name, value, args)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor embedded, embeddedRelations := range s.Relationships.EmbeddedRelations {\n\t\t\t\tfor _, value := range embeddedValues(embeddedRelations) {\n\t\t\t\t\tsetPreloadMap(embedded, value, args)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tsetPreloadMap(preloadFields[0], value, args)\n\t\t}\n\t}\n\treturn preloadMap\n}\n\nfunc embeddedValues(embeddedRelations *schema.Relationships) []string {\n\tif embeddedRelations == nil {\n\t\treturn nil\n\t}\n\tnames := make([]string, 0, len(embeddedRelations.Relations)+len(embeddedRelations.EmbeddedRelations))\n\tfor _, relation := range embeddedRelations.Relations {\n\t\t// skip first struct name\n\t\tnames = append(names, strings.Join(relation.Field.BindNames[1:], \".\"))\n\t}\n\tfor _, relations := range embeddedRelations.EmbeddedRelations {\n\t\tnames = append(names, embeddedValues(relations)...)\n\t}\n\treturn names\n}\n\n// preloadEntryPoint enters layer by layer. It will call real preload if it finds the right entry point.\n// If the current relationship is embedded or joined, current query will be ignored.\n//\n//nolint:cyclop\nfunc preloadEntryPoint(db *gorm.DB, joins []string, relationships *schema.Relationships, preloads map[string][]any, associationsConds []any) error {\n\tpreloadMap := parsePreloadMap(db.Statement.Schema, preloads)\n\n\t// avoid random traversal of the map\n\tpreloadNames := make([]string, 0, len(preloadMap))\n\tfor key := range preloadMap {\n\t\tpreloadNames = append(preloadNames, key)\n\t}\n\tsort.Strings(preloadNames)\n\n\tisJoined := func(name string) (joined bool, nestedJoins []string) {\n\t\tfor _, join := range joins {\n\t\t\tif _, ok := relationships.Relations[join]; ok && name == join {\n\t\t\t\tjoined = true\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tjoinNames := strings.SplitN(join, \".\", 2)\n\t\t\tif len(joinNames) == 2 {\n\t\t\t\tif _, ok := relationships.Relations[joinNames[0]]; ok && name == joinNames[0] {\n\t\t\t\t\tjoined = true\n\t\t\t\t\tnestedJoins = append(nestedJoins, joinNames[1])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn joined, nestedJoins\n\t}\n\n\tfor _, name := range preloadNames {\n\t\tif relations := relationships.EmbeddedRelations[name]; relations != nil {\n\t\t\tif err := preloadEntryPoint(db, joins, relations, preloadMap[name], associationsConds); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else if rel := relationships.Relations[name]; rel != nil {\n\t\t\tif joined, nestedJoins := isJoined(name); joined {\n\t\t\t\tswitch rv := db.Statement.ReflectValue; rv.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\t\t\treflectValue := rel.Field.ReflectValueOf(db.Statement.Context, rv.Index(i))\n\t\t\t\t\t\ttx := preloadDB(db, reflectValue, reflectValue.Interface())\n\t\t\t\t\t\tif err := preloadEntryPoint(tx, nestedJoins, &tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\treflectValue := rel.Field.ReflectValueOf(db.Statement.Context, rv)\n\t\t\t\t\ttx := preloadDB(db, reflectValue, reflectValue.Interface())\n\t\t\t\t\tif err := preloadEntryPoint(tx, nestedJoins, &tx.Statement.Schema.Relationships, preloadMap[name], associationsConds); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn gorm.ErrInvalidData\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttx := db.Table(\"\").Session(&gorm.Session{Context: db.Statement.Context, SkipHooks: db.Statement.SkipHooks})\n\t\t\t\ttx.Statement.ReflectValue = db.Statement.ReflectValue\n\t\t\t\ttx.Statement.Unscoped = db.Statement.Unscoped\n\t\t\t\tif err := preload(tx, rel, append(preloads[name], associationsConds...), preloadMap[name]); 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 fmt.Errorf(\"%s: %w for schema %s\", name, gorm.ErrUnsupportedRelation, db.Statement.Schema.Name)\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc preloadDB(db *gorm.DB, reflectValue reflect.Value, dest any) *gorm.DB {\n\ttx := db.Session(&gorm.Session{Context: db.Statement.Context, NewDB: true, SkipHooks: db.Statement.SkipHooks, Initialized: true})\n\tdb.Statement.Settings.Range(func(k, v any) bool {\n\t\ttx.Statement.Settings.Store(k, v)\n\t\treturn true\n\t})\n\n\tif err := tx.Statement.Parse(dest); err != nil {\n\t\ttx.AddError(err)\n\t\treturn tx\n\t}\n\ttx.Statement.ReflectValue = reflectValue\n\ttx.Statement.Unscoped = db.Statement.Unscoped\n\treturn tx\n}\n\nfunc preload(tx *gorm.DB, rel *schema.Relationship, conds []any, preloads map[string][]any) error {\n\tvar (\n\t\treflectValue     = tx.Statement.ReflectValue\n\t\trelForeignKeys   []string\n\t\trelForeignFields []*schema.Field\n\t\tforeignFields    []*schema.Field\n\t\tforeignValues    [][]any\n\t\tidentityMap      = map[string][]reflect.Value{}\n\t\tinlineConds      []any\n\t)\n\n\tif rel.JoinTable != nil {\n\t\tvar (\n\t\t\tjoinForeignFields    = make([]*schema.Field, 0, len(rel.References))\n\t\t\tjoinRelForeignFields = make([]*schema.Field, 0, len(rel.References))\n\t\t\tjoinForeignKeys      = make([]string, 0, len(rel.References))\n\t\t)\n\n\t\tfor _, ref := range rel.References {\n\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\tjoinForeignKeys = append(joinForeignKeys, ref.ForeignKey.DBName)\n\t\t\t\tjoinForeignFields = append(joinForeignFields, ref.ForeignKey)\n\t\t\t\tforeignFields = append(foreignFields, ref.PrimaryKey)\n\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\ttx = tx.Where(clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t} else {\n\t\t\t\tjoinRelForeignFields = append(joinRelForeignFields, ref.ForeignKey)\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.PrimaryKey.DBName)\n\t\t\t\trelForeignFields = append(relForeignFields, ref.PrimaryKey)\n\t\t\t}\n\t\t}\n\n\t\tjoinIdentityMap, joinForeignValues := schema.GetIdentityFieldValuesMap(tx.Statement.Context, reflectValue, foreignFields)\n\t\tif len(joinForeignValues) == 0 {\n\t\t\treturn nil\n\t\t}\n\n\t\tjoinResults := rel.JoinTable.MakeSlice().Elem()\n\t\tcolumn, values := schema.ToQueryValues(clause.CurrentTable, joinForeignKeys, joinForeignValues)\n\t\tif err := tx.Where(clause.IN{Column: column, Values: values}).Find(joinResults.Addr().Interface()).Error; err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// convert join identity map to relation identity map\n\t\tfieldValues := make([]any, len(joinForeignFields))\n\t\tjoinFieldValues := make([]any, len(joinRelForeignFields))\n\t\tfor i := 0; i < joinResults.Len(); i++ {\n\t\t\tjoinIndexValue := joinResults.Index(i)\n\t\t\tfor idx, field := range joinForeignFields {\n\t\t\t\tfieldValues[idx], _ = field.ValueOf(tx.Statement.Context, joinIndexValue)\n\t\t\t}\n\n\t\t\tfor idx, field := range joinRelForeignFields {\n\t\t\t\tjoinFieldValues[idx], _ = field.ValueOf(tx.Statement.Context, joinIndexValue)\n\t\t\t}\n\n\t\t\tif results, ok := joinIdentityMap[utils.ToStringKey(fieldValues...)]; ok {\n\t\t\t\tjoinKey := utils.ToStringKey(joinFieldValues...)\n\t\t\t\tidentityMap[joinKey] = append(identityMap[joinKey], results...)\n\t\t\t}\n\t\t}\n\n\t\t_, foreignValues = schema.GetIdentityFieldValuesMap(tx.Statement.Context, joinResults, joinRelForeignFields)\n\t} else {\n\t\tfor _, ref := range rel.References {\n\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.ForeignKey.DBName)\n\t\t\t\trelForeignFields = append(relForeignFields, ref.ForeignKey)\n\t\t\t\tforeignFields = append(foreignFields, ref.PrimaryKey)\n\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\ttx = tx.Where(clause.Eq{Column: ref.ForeignKey.DBName, Value: ref.PrimaryValue})\n\t\t\t} else {\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.PrimaryKey.DBName)\n\t\t\t\trelForeignFields = append(relForeignFields, ref.PrimaryKey)\n\t\t\t\tforeignFields = append(foreignFields, ref.ForeignKey)\n\t\t\t}\n\t\t}\n\n\t\tidentityMap, foreignValues = schema.GetIdentityFieldValuesMap(tx.Statement.Context, reflectValue, foreignFields)\n\t\tif len(foreignValues) == 0 {\n\t\t\treturn nil\n\t\t}\n\t}\n\n\t// nested preload\n\tfor p, pvs := range preloads {\n\t\ttx = tx.Preload(p, pvs...)\n\t}\n\n\treflectResults := rel.FieldSchema.MakeSlice().Elem()\n\tcolumn, values := schema.ToQueryValues(clause.CurrentTable, relForeignKeys, foreignValues)\n\n\tif len(values) != 0 {\n\t\tfor _, cond := range conds {\n\t\t\tif fc, ok := cond.(func(*gorm.DB) *gorm.DB); ok {\n\t\t\t\ttx = fc(tx)\n\t\t\t} else {\n\t\t\t\tinlineConds = append(inlineConds, cond)\n\t\t\t}\n\t\t}\n\n\t\tif err := tx.Where(clause.IN{Column: column, Values: values}).Find(reflectResults.Addr().Interface(), inlineConds...).Error; err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tfieldValues := make([]any, len(relForeignFields))\n\n\t// clean up old values before preloading\n\tswitch reflectValue.Kind() {\n\tcase reflect.Struct:\n\t\tswitch rel.Type {\n\t\tcase schema.HasMany, schema.Many2Many:\n\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, reflectValue, reflect.MakeSlice(rel.Field.IndirectFieldType, 0, 10).Interface()))\n\t\tdefault:\n\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, reflectValue, reflect.New(rel.Field.FieldType).Interface()))\n\t\t}\n\tcase reflect.Slice, reflect.Array:\n\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\tswitch rel.Type {\n\t\t\tcase schema.HasMany, schema.Many2Many:\n\t\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, reflectValue.Index(i), reflect.MakeSlice(rel.Field.IndirectFieldType, 0, 10).Interface()))\n\t\t\tdefault:\n\t\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, reflectValue.Index(i), reflect.New(rel.Field.FieldType).Interface()))\n\t\t\t}\n\t\t}\n\t}\n\n\tfor i := 0; i < reflectResults.Len(); i++ {\n\t\telem := reflectResults.Index(i)\n\t\tfor idx, field := range relForeignFields {\n\t\t\tfieldValues[idx], _ = field.ValueOf(tx.Statement.Context, elem)\n\t\t}\n\n\t\tdatas, ok := identityMap[utils.ToStringKey(fieldValues...)]\n\t\tif !ok {\n\t\t\treturn fmt.Errorf(\"failed to assign association %#v, make sure foreign fields exists\", elem.Interface())\n\t\t}\n\n\t\tfor _, data := range datas {\n\t\t\treflectFieldValue := rel.Field.ReflectValueOf(tx.Statement.Context, data)\n\t\t\tif reflectFieldValue.Kind() == reflect.Ptr && reflectFieldValue.IsNil() {\n\t\t\t\treflectFieldValue.Set(reflect.New(rel.Field.FieldType.Elem()))\n\t\t\t}\n\n\t\t\treflectFieldValue = reflect.Indirect(reflectFieldValue)\n\t\t\tswitch reflectFieldValue.Kind() {\n\t\t\tcase reflect.Struct:\n\t\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, data, elem.Interface()))\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tif reflectFieldValue.Type().Elem().Kind() == reflect.Ptr {\n\t\t\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, data, reflect.Append(reflectFieldValue, elem).Interface()))\n\t\t\t\t} else {\n\t\t\t\t\ttx.AddError(rel.Field.Set(tx.Statement.Context, data, reflect.Append(reflectFieldValue, elem.Elem()).Interface()))\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn tx.Error\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/query.go",
    "content": "package callbacks\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nfunc Query(db *gorm.DB) {\n\tif db.Error == nil {\n\t\tBuildQuerySQL(db)\n\n\t\tif !db.DryRun && db.Error == nil {\n\t\t\trows, err := db.Statement.ConnPool.QueryContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\t\t\tif err != nil {\n\t\t\t\tdb.AddError(err)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\tdb.AddError(rows.Close())\n\t\t\t}()\n\t\t\tgorm.Scan(rows, db, 0)\n\t\t}\n\t}\n}\n\nfunc BuildQuerySQL(db *gorm.DB) {\n\tif db.Statement.Schema != nil {\n\t\tfor _, c := range db.Statement.Schema.QueryClauses {\n\t\t\tdb.Statement.AddClause(c)\n\t\t}\n\t}\n\n\tif db.Statement.SQL.Len() == 0 {\n\t\tdb.Statement.SQL.Grow(100)\n\t\tclauseSelect := clause.Select{Distinct: db.Statement.Distinct}\n\n\t\tif db.Statement.ReflectValue.Kind() == reflect.Struct && db.Statement.ReflectValue.Type() == db.Statement.Schema.ModelType {\n\t\t\tvar conds []clause.Expression\n\t\t\tfor _, primaryField := range db.Statement.Schema.PrimaryFields {\n\t\t\t\tif v, isZero := primaryField.ValueOf(db.Statement.Context, db.Statement.ReflectValue); !isZero {\n\t\t\t\t\tconds = append(conds, clause.Eq{Column: clause.Column{Table: db.Statement.Table, Name: primaryField.DBName}, Value: v})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif len(conds) > 0 {\n\t\t\t\tdb.Statement.AddClause(clause.Where{Exprs: conds})\n\t\t\t}\n\t\t}\n\n\t\tif len(db.Statement.Selects) > 0 {\n\t\t\tclauseSelect.Columns = make([]clause.Column, len(db.Statement.Selects))\n\t\t\tfor idx, name := range db.Statement.Selects {\n\t\t\t\tif db.Statement.Schema == nil {\n\t\t\t\t\tclauseSelect.Columns[idx] = clause.Column{Name: name, Raw: true}\n\t\t\t\t} else if f := db.Statement.Schema.LookUpField(name); f != nil {\n\t\t\t\t\tclauseSelect.Columns[idx] = clause.Column{Name: f.DBName}\n\t\t\t\t} else {\n\t\t\t\t\tclauseSelect.Columns[idx] = clause.Column{Name: name, Raw: true}\n\t\t\t\t}\n\t\t\t}\n\t\t} else if db.Statement.Schema != nil && len(db.Statement.Omits) > 0 {\n\t\t\tselectColumns, _ := db.Statement.SelectAndOmitColumns(false, false)\n\t\t\tclauseSelect.Columns = make([]clause.Column, 0, len(db.Statement.Schema.DBNames))\n\t\t\tfor _, dbName := range db.Statement.Schema.DBNames {\n\t\t\t\tif v, ok := selectColumns[dbName]; (ok && v) || !ok {\n\t\t\t\t\tclauseSelect.Columns = append(clauseSelect.Columns, clause.Column{Table: db.Statement.Table, Name: dbName})\n\t\t\t\t}\n\t\t\t}\n\t\t} else if db.Statement.Schema != nil && db.Statement.ReflectValue.IsValid() {\n\t\t\tqueryFields := db.QueryFields\n\t\t\tif !queryFields {\n\t\t\t\tswitch db.Statement.ReflectValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tqueryFields = db.Statement.ReflectValue.Type() != db.Statement.Schema.ModelType\n\t\t\t\tcase reflect.Slice:\n\t\t\t\t\tqueryFields = db.Statement.ReflectValue.Type().Elem() != db.Statement.Schema.ModelType\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif queryFields {\n\t\t\t\tstmt := gorm.Statement{DB: db}\n\t\t\t\t// smaller struct\n\t\t\t\tif err := stmt.Parse(db.Statement.Dest); err == nil && (db.QueryFields || stmt.Schema.ModelType != db.Statement.Schema.ModelType) {\n\t\t\t\t\tclauseSelect.Columns = make([]clause.Column, len(stmt.Schema.DBNames))\n\n\t\t\t\t\tfor idx, dbName := range stmt.Schema.DBNames {\n\t\t\t\t\t\tclauseSelect.Columns[idx] = clause.Column{Table: db.Statement.Table, Name: dbName}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// inline joins\n\t\tfromClause := clause.From{}\n\t\tif v, ok := db.Statement.Clauses[\"FROM\"].Expression.(clause.From); ok {\n\t\t\tfromClause = v\n\t\t}\n\n\t\tif len(db.Statement.Joins) != 0 || len(fromClause.Joins) != 0 {\n\t\t\tif len(db.Statement.Selects) == 0 && len(db.Statement.Omits) == 0 && db.Statement.Schema != nil {\n\t\t\t\tclauseSelect.Columns = make([]clause.Column, len(db.Statement.Schema.DBNames))\n\t\t\t\tfor idx, dbName := range db.Statement.Schema.DBNames {\n\t\t\t\t\tclauseSelect.Columns[idx] = clause.Column{Table: db.Statement.Table, Name: dbName}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tspecifiedRelationsName := make(map[string]any)\n\t\t\tfor _, join := range db.Statement.Joins {\n\t\t\t\tif db.Statement.Schema != nil {\n\t\t\t\t\tvar isRelations bool // is relations or raw sql\n\t\t\t\t\tvar relations []*schema.Relationship\n\t\t\t\t\trelation, ok := db.Statement.Schema.Relationships.Relations[join.Name]\n\t\t\t\t\tif ok {\n\t\t\t\t\t\tisRelations = true\n\t\t\t\t\t\trelations = append(relations, relation)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// handle nested join like \"Manager.Company\"\n\t\t\t\t\t\tnestedJoinNames := strings.Split(join.Name, \".\")\n\t\t\t\t\t\tif len(nestedJoinNames) > 1 {\n\t\t\t\t\t\t\tisNestedJoin := true\n\t\t\t\t\t\t\tgussNestedRelations := make([]*schema.Relationship, 0, len(nestedJoinNames))\n\t\t\t\t\t\t\tcurrentRelations := db.Statement.Schema.Relationships.Relations\n\t\t\t\t\t\t\tfor _, relname := range nestedJoinNames {\n\t\t\t\t\t\t\t\t// incomplete match, only treated as raw sql\n\t\t\t\t\t\t\t\tif relation, ok = currentRelations[relname]; ok {\n\t\t\t\t\t\t\t\t\tgussNestedRelations = append(gussNestedRelations, relation)\n\t\t\t\t\t\t\t\t\tcurrentRelations = relation.FieldSchema.Relationships.Relations\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tisNestedJoin = false\n\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif isNestedJoin {\n\t\t\t\t\t\t\t\tisRelations = true\n\t\t\t\t\t\t\t\trelations = gussNestedRelations\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif isRelations {\n\t\t\t\t\t\tgenJoinClause := func(joinType clause.JoinType, parentTableName string, relation *schema.Relationship) clause.Join {\n\t\t\t\t\t\t\ttableAliasName := relation.Name\n\t\t\t\t\t\t\tif parentTableName != clause.CurrentTable {\n\t\t\t\t\t\t\t\ttableAliasName = utils.NestedRelationName(parentTableName, tableAliasName)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tcolumnStmt := gorm.Statement{\n\t\t\t\t\t\t\t\tTable: tableAliasName, DB: db, Schema: relation.FieldSchema,\n\t\t\t\t\t\t\t\tSelects: join.Selects, Omits: join.Omits,\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tselectColumns, restricted := columnStmt.SelectAndOmitColumns(false, false)\n\t\t\t\t\t\t\tfor _, s := range relation.FieldSchema.DBNames {\n\t\t\t\t\t\t\t\tif v, ok := selectColumns[s]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\t\t\t\t\tclauseSelect.Columns = append(clauseSelect.Columns, clause.Column{\n\t\t\t\t\t\t\t\t\t\tTable: tableAliasName,\n\t\t\t\t\t\t\t\t\t\tName:  s,\n\t\t\t\t\t\t\t\t\t\tAlias: utils.NestedRelationName(tableAliasName, s),\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}\n\n\t\t\t\t\t\t\texprs := make([]clause.Expression, len(relation.References))\n\t\t\t\t\t\t\tfor idx, ref := range relation.References {\n\t\t\t\t\t\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\t\t\t\t\t\texprs[idx] = clause.Eq{\n\t\t\t\t\t\t\t\t\t\tColumn: clause.Column{Table: parentTableName, Name: ref.PrimaryKey.DBName},\n\t\t\t\t\t\t\t\t\t\tValue:  clause.Column{Table: tableAliasName, Name: ref.ForeignKey.DBName},\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tif ref.PrimaryValue == \"\" {\n\t\t\t\t\t\t\t\t\t\texprs[idx] = clause.Eq{\n\t\t\t\t\t\t\t\t\t\t\tColumn: clause.Column{Table: parentTableName, Name: ref.ForeignKey.DBName},\n\t\t\t\t\t\t\t\t\t\t\tValue:  clause.Column{Table: tableAliasName, Name: ref.PrimaryKey.DBName},\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\texprs[idx] = clause.Eq{\n\t\t\t\t\t\t\t\t\t\t\tColumn: clause.Column{Table: tableAliasName, Name: ref.ForeignKey.DBName},\n\t\t\t\t\t\t\t\t\t\t\tValue:  ref.PrimaryValue,\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\t\t\t\t}\n\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tonStmt := gorm.Statement{Table: tableAliasName, DB: db, Clauses: map[string]clause.Clause{}}\n\t\t\t\t\t\t\t\tfor _, c := range relation.FieldSchema.QueryClauses {\n\t\t\t\t\t\t\t\t\tonStmt.AddClause(c)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif join.On != nil {\n\t\t\t\t\t\t\t\t\tonStmt.AddClause(join.On)\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif cs, ok := onStmt.Clauses[\"WHERE\"]; ok {\n\t\t\t\t\t\t\t\t\tif where, ok := cs.Expression.(clause.Where); ok {\n\t\t\t\t\t\t\t\t\t\twhere.Build(&onStmt)\n\n\t\t\t\t\t\t\t\t\t\tif onSQL := onStmt.SQL.String(); onSQL != \"\" {\n\t\t\t\t\t\t\t\t\t\t\tvars := onStmt.Vars\n\t\t\t\t\t\t\t\t\t\t\tfor idx, v := range vars {\n\t\t\t\t\t\t\t\t\t\t\t\tbindvar := strings.Builder{}\n\t\t\t\t\t\t\t\t\t\t\t\tonStmt.Vars = vars[0 : idx+1]\n\t\t\t\t\t\t\t\t\t\t\t\tdb.Dialector.BindVarTo(&bindvar, &onStmt, v)\n\t\t\t\t\t\t\t\t\t\t\t\tonSQL = strings.Replace(onSQL, bindvar.String(), \"?\", 1)\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\texprs = append(exprs, clause.Expr{SQL: onSQL, Vars: vars})\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\t\t\t\t}\n\n\t\t\t\t\t\t\treturn clause.Join{\n\t\t\t\t\t\t\t\tType:  joinType,\n\t\t\t\t\t\t\t\tTable: clause.Table{Name: relation.FieldSchema.Table, Alias: tableAliasName},\n\t\t\t\t\t\t\t\tON:    clause.Where{Exprs: exprs},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tparentTableName := clause.CurrentTable\n\t\t\t\t\t\tfor _, rel := range relations {\n\t\t\t\t\t\t\t// joins table alias like \"Manager, Company, Manager__Company\"\n\t\t\t\t\t\t\tnestedAlias := utils.NestedRelationName(parentTableName, rel.Name)\n\t\t\t\t\t\t\tif _, ok := specifiedRelationsName[nestedAlias]; !ok {\n\t\t\t\t\t\t\t\tfromClause.Joins = append(fromClause.Joins, genJoinClause(join.JoinType, parentTableName, rel))\n\t\t\t\t\t\t\t\tspecifiedRelationsName[nestedAlias] = nil\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif parentTableName != clause.CurrentTable {\n\t\t\t\t\t\t\t\tparentTableName = utils.NestedRelationName(parentTableName, rel.Name)\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparentTableName = rel.Name\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\tfromClause.Joins = append(fromClause.Joins, clause.Join{\n\t\t\t\t\t\t\tExpression: clause.NamedExpr{SQL: join.Name, Vars: join.Conds},\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfromClause.Joins = append(fromClause.Joins, clause.Join{\n\t\t\t\t\t\tExpression: clause.NamedExpr{SQL: join.Name, Vars: join.Conds},\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdb.Statement.AddClause(fromClause)\n\t\t} else {\n\t\t\tdb.Statement.AddClauseIfNotExists(clause.From{})\n\t\t}\n\n\t\tdb.Statement.AddClauseIfNotExists(clauseSelect)\n\n\t\tdb.Statement.Build(db.Statement.BuildClauses...)\n\t}\n}\n\nfunc Preload(db *gorm.DB) {\n\tif db.Error == nil && len(db.Statement.Preloads) > 0 {\n\t\tif db.Statement.Schema == nil {\n\t\t\tdb.AddError(fmt.Errorf(\"%w when using preload\", gorm.ErrModelValueRequired))\n\t\t\treturn\n\t\t}\n\n\t\tjoins := make([]string, 0, len(db.Statement.Joins))\n\t\tfor _, join := range db.Statement.Joins {\n\t\t\tjoins = append(joins, join.Name)\n\t\t}\n\n\t\ttx := preloadDB(db, db.Statement.ReflectValue, db.Statement.Dest)\n\t\tif tx.Error != nil {\n\t\t\treturn\n\t\t}\n\n\t\tdb.AddError(preloadEntryPoint(tx, joins, &tx.Statement.Schema.Relationships, db.Statement.Preloads, db.Statement.Preloads[clause.Associations]))\n\t}\n}\n\nfunc AfterQuery(db *gorm.DB) {\n\t// clear the joins after query because preload need it\n\tdb.Statement.Joins = nil\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && db.Statement.Schema.AfterFind && db.RowsAffected > 0 {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) bool {\n\t\t\tif i, ok := value.(AfterFindInterface); ok {\n\t\t\t\tdb.AddError(i.AfterFind(tx))\n\t\t\t\treturn true\n\t\t\t}\n\t\t\treturn false\n\t\t})\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/raw.go",
    "content": "package callbacks\n\nimport (\n\t\"gossh/gorm\"\n)\n\nfunc RawExec(db *gorm.DB) {\n\tif db.Error == nil && !db.DryRun {\n\t\tresult, err := db.Statement.ConnPool.ExecContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\t\tif err != nil {\n\t\t\tdb.AddError(err)\n\t\t\treturn\n\t\t}\n\n\t\tdb.RowsAffected, _ = result.RowsAffected()\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/row.go",
    "content": "package callbacks\n\nimport (\n\t\"gossh/gorm\"\n)\n\nfunc RowQuery(db *gorm.DB) {\n\tif db.Error == nil {\n\t\tBuildQuerySQL(db)\n\t\tif db.DryRun || db.Error != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif isRows, ok := db.Get(\"rows\"); ok && isRows.(bool) {\n\t\t\tdb.Statement.Settings.Delete(\"rows\")\n\t\t\tdb.Statement.Dest, db.Error = db.Statement.ConnPool.QueryContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\t\t} else {\n\t\t\tdb.Statement.Dest = db.Statement.ConnPool.QueryRowContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\t\t}\n\n\t\tdb.RowsAffected = -1\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/transaction.go",
    "content": "package callbacks\n\nimport (\n\t\"gossh/gorm\"\n)\n\nfunc BeginTransaction(db *gorm.DB) {\n\tif !db.Config.SkipDefaultTransaction && db.Error == nil {\n\t\tif tx := db.Begin(); tx.Error == nil {\n\t\t\tdb.Statement.ConnPool = tx.Statement.ConnPool\n\t\t\tdb.InstanceSet(\"gorm:started_transaction\", true)\n\t\t} else if tx.Error == gorm.ErrInvalidTransaction {\n\t\t\ttx.Error = nil\n\t\t} else {\n\t\t\tdb.Error = tx.Error\n\t\t}\n\t}\n}\n\nfunc CommitOrRollbackTransaction(db *gorm.DB) {\n\tif !db.Config.SkipDefaultTransaction {\n\t\tif _, ok := db.InstanceGet(\"gorm:started_transaction\"); ok {\n\t\t\tif db.Error != nil {\n\t\t\t\tdb.Rollback()\n\t\t\t} else {\n\t\t\t\tdb.Commit()\n\t\t\t}\n\n\t\t\tdb.Statement.ConnPool = db.ConnPool\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks/update.go",
    "content": "package callbacks\n\nimport (\n\t\"reflect\"\n\t\"sort\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nfunc SetupUpdateReflectValue(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil {\n\t\tif !db.Statement.ReflectValue.CanAddr() || db.Statement.Model != db.Statement.Dest {\n\t\t\tdb.Statement.ReflectValue = reflect.ValueOf(db.Statement.Model)\n\t\t\tfor db.Statement.ReflectValue.Kind() == reflect.Ptr {\n\t\t\t\tdb.Statement.ReflectValue = db.Statement.ReflectValue.Elem()\n\t\t\t}\n\n\t\t\tif dest, ok := db.Statement.Dest.(map[string]any); ok {\n\t\t\t\tfor _, rel := range db.Statement.Schema.Relationships.BelongsTo {\n\t\t\t\t\tif _, ok := dest[rel.Name]; ok {\n\t\t\t\t\t\tdb.AddError(rel.Field.Set(db.Statement.Context, db.Statement.ReflectValue, dest[rel.Name]))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// BeforeUpdate before update hooks\nfunc BeforeUpdate(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && (db.Statement.Schema.BeforeSave || db.Statement.Schema.BeforeUpdate) {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) (called bool) {\n\t\t\tif db.Statement.Schema.BeforeSave {\n\t\t\t\tif i, ok := value.(BeforeSaveInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.BeforeSave(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif db.Statement.Schema.BeforeUpdate {\n\t\t\t\tif i, ok := value.(BeforeUpdateInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.BeforeUpdate(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn called\n\t\t})\n\t}\n}\n\n// Update update hook\nfunc Update(config *Config) func(db *gorm.DB) {\n\tsupportReturning := utils.Contains(config.UpdateClauses, \"RETURNING\")\n\n\treturn func(db *gorm.DB) {\n\t\tif db.Error != nil {\n\t\t\treturn\n\t\t}\n\n\t\tif db.Statement.Schema != nil {\n\t\t\tfor _, c := range db.Statement.Schema.UpdateClauses {\n\t\t\t\tdb.Statement.AddClause(c)\n\t\t\t}\n\t\t}\n\n\t\tif db.Statement.SQL.Len() == 0 {\n\t\t\tdb.Statement.SQL.Grow(180)\n\t\t\tdb.Statement.AddClauseIfNotExists(clause.Update{})\n\t\t\tif _, ok := db.Statement.Clauses[\"SET\"]; !ok {\n\t\t\t\tif set := ConvertToAssignments(db.Statement); len(set) != 0 {\n\t\t\t\t\tdefer delete(db.Statement.Clauses, \"SET\")\n\t\t\t\t\tdb.Statement.AddClause(set)\n\t\t\t\t} else {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdb.Statement.Build(db.Statement.BuildClauses...)\n\t\t}\n\n\t\tcheckMissingWhereConditions(db)\n\n\t\tif !db.DryRun && db.Error == nil {\n\t\t\tif ok, mode := hasReturning(db, supportReturning); ok {\n\t\t\t\tif rows, err := db.Statement.ConnPool.QueryContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...); db.AddError(err) == nil {\n\t\t\t\t\tdest := db.Statement.Dest\n\t\t\t\t\tdb.Statement.Dest = db.Statement.ReflectValue.Addr().Interface()\n\t\t\t\t\tgorm.Scan(rows, db, mode)\n\t\t\t\t\tdb.Statement.Dest = dest\n\t\t\t\t\tdb.AddError(rows.Close())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresult, err := db.Statement.ConnPool.ExecContext(db.Statement.Context, db.Statement.SQL.String(), db.Statement.Vars...)\n\n\t\t\t\tif db.AddError(err) == nil {\n\t\t\t\t\tdb.RowsAffected, _ = result.RowsAffected()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\n// AfterUpdate after update hooks\nfunc AfterUpdate(db *gorm.DB) {\n\tif db.Error == nil && db.Statement.Schema != nil && !db.Statement.SkipHooks && (db.Statement.Schema.AfterSave || db.Statement.Schema.AfterUpdate) {\n\t\tcallMethod(db, func(value any, tx *gorm.DB) (called bool) {\n\t\t\tif db.Statement.Schema.AfterUpdate {\n\t\t\t\tif i, ok := value.(AfterUpdateInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.AfterUpdate(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif db.Statement.Schema.AfterSave {\n\t\t\t\tif i, ok := value.(AfterSaveInterface); ok {\n\t\t\t\t\tcalled = true\n\t\t\t\t\tdb.AddError(i.AfterSave(tx))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn called\n\t\t})\n\t}\n}\n\n// ConvertToAssignments convert to update assignments\nfunc ConvertToAssignments(stmt *gorm.Statement) (set clause.Set) {\n\tvar (\n\t\tselectColumns, restricted = stmt.SelectAndOmitColumns(false, true)\n\t\tassignValue               func(field *schema.Field, value any)\n\t)\n\n\tswitch stmt.ReflectValue.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tassignValue = func(field *schema.Field, value any) {\n\t\t\tfor i := 0; i < stmt.ReflectValue.Len(); i++ {\n\t\t\t\tif stmt.ReflectValue.CanAddr() {\n\t\t\t\t\tfield.Set(stmt.Context, stmt.ReflectValue.Index(i), value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\tcase reflect.Struct:\n\t\tassignValue = func(field *schema.Field, value any) {\n\t\t\tif stmt.ReflectValue.CanAddr() {\n\t\t\t\tfield.Set(stmt.Context, stmt.ReflectValue, value)\n\t\t\t}\n\t\t}\n\tdefault:\n\t\tassignValue = func(field *schema.Field, value any) {\n\t\t}\n\t}\n\n\tupdatingValue := reflect.ValueOf(stmt.Dest)\n\tfor updatingValue.Kind() == reflect.Ptr {\n\t\tupdatingValue = updatingValue.Elem()\n\t}\n\n\tif !updatingValue.CanAddr() || stmt.Dest != stmt.Model {\n\t\tswitch stmt.ReflectValue.Kind() {\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tif size := stmt.ReflectValue.Len(); size > 0 {\n\t\t\t\tvar isZero bool\n\t\t\t\tfor i := 0; i < size; i++ {\n\t\t\t\t\tfor _, field := range stmt.Schema.PrimaryFields {\n\t\t\t\t\t\t_, isZero = field.ValueOf(stmt.Context, stmt.ReflectValue.Index(i))\n\t\t\t\t\t\tif !isZero {\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !isZero {\n\t\t\t\t\t_, primaryValues := schema.GetIdentityFieldValuesMap(stmt.Context, stmt.ReflectValue, stmt.Schema.PrimaryFields)\n\t\t\t\t\tcolumn, values := schema.ToQueryValues(\"\", stmt.Schema.PrimaryFieldDBNames, primaryValues)\n\t\t\t\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Struct:\n\t\t\tfor _, field := range stmt.Schema.PrimaryFields {\n\t\t\t\tif value, isZero := field.ValueOf(stmt.Context, stmt.ReflectValue); !isZero {\n\t\t\t\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.Eq{Column: field.DBName, Value: value}}})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch value := updatingValue.Interface().(type) {\n\tcase map[string]any:\n\t\tset = make([]clause.Assignment, 0, len(value))\n\n\t\tkeys := make([]string, 0, len(value))\n\t\tfor k := range value {\n\t\t\tkeys = append(keys, k)\n\t\t}\n\t\tsort.Strings(keys)\n\n\t\tfor _, k := range keys {\n\t\t\tkv := value[k]\n\t\t\tif _, ok := kv.(*gorm.DB); ok {\n\t\t\t\tkv = []any{kv}\n\t\t\t}\n\n\t\t\tif stmt.Schema != nil {\n\t\t\t\tif field := stmt.Schema.LookUpField(k); field != nil {\n\t\t\t\t\tif field.DBName != \"\" {\n\t\t\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: kv})\n\t\t\t\t\t\t\tassignValue(field, value[k])\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if v, ok := selectColumns[field.Name]; (ok && v) || (!ok && !restricted) {\n\t\t\t\t\t\tassignValue(field, value[k])\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif v, ok := selectColumns[k]; (ok && v) || (!ok && !restricted) {\n\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: k}, Value: kv})\n\t\t\t}\n\t\t}\n\n\t\tif !stmt.SkipHooks && stmt.Schema != nil {\n\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\tfield := stmt.Schema.LookUpField(dbName)\n\t\t\t\tif field.AutoUpdateTime > 0 && value[field.Name] == nil && value[field.DBName] == nil {\n\t\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || !ok {\n\t\t\t\t\t\tnow := stmt.DB.NowFunc()\n\t\t\t\t\t\tassignValue(field, now)\n\n\t\t\t\t\t\tif field.AutoUpdateTime == schema.UnixNanosecond {\n\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.UnixNano()})\n\t\t\t\t\t\t} else if field.AutoUpdateTime == schema.UnixMillisecond {\n\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.UnixMilli()})\n\t\t\t\t\t\t} else if field.AutoUpdateTime == schema.UnixSecond {\n\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now.Unix()})\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: now})\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\tdefault:\n\t\tupdatingSchema := stmt.Schema\n\t\tvar isDiffSchema bool\n\t\tif !updatingValue.CanAddr() || stmt.Dest != stmt.Model {\n\t\t\t// different schema\n\t\t\tupdatingStmt := &gorm.Statement{DB: stmt.DB}\n\t\t\tif err := updatingStmt.Parse(stmt.Dest); err == nil {\n\t\t\t\tupdatingSchema = updatingStmt.Schema\n\t\t\t\tisDiffSchema = true\n\t\t\t}\n\t\t}\n\n\t\tswitch updatingValue.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tset = make([]clause.Assignment, 0, len(stmt.Schema.FieldsByDBName))\n\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\tif field := updatingSchema.LookUpField(dbName); field != nil {\n\t\t\t\t\tif !field.PrimaryKey || !updatingValue.CanAddr() || stmt.Dest != stmt.Model {\n\t\t\t\t\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && (!restricted || (!stmt.SkipHooks && field.AutoUpdateTime > 0))) {\n\t\t\t\t\t\t\tvalue, isZero := field.ValueOf(stmt.Context, updatingValue)\n\t\t\t\t\t\t\tif !stmt.SkipHooks && field.AutoUpdateTime > 0 {\n\t\t\t\t\t\t\t\tif field.AutoUpdateTime == schema.UnixNanosecond {\n\t\t\t\t\t\t\t\t\tvalue = stmt.DB.NowFunc().UnixNano()\n\t\t\t\t\t\t\t\t} else if field.AutoUpdateTime == schema.UnixMillisecond {\n\t\t\t\t\t\t\t\t\tvalue = stmt.DB.NowFunc().UnixMilli()\n\t\t\t\t\t\t\t\t} else if field.AutoUpdateTime == schema.UnixSecond {\n\t\t\t\t\t\t\t\t\tvalue = stmt.DB.NowFunc().Unix()\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvalue = stmt.DB.NowFunc()\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tisZero = false\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tif (ok || !isZero) && field.Updatable {\n\t\t\t\t\t\t\t\tset = append(set, clause.Assignment{Column: clause.Column{Name: field.DBName}, Value: value})\n\t\t\t\t\t\t\t\tassignField := field\n\t\t\t\t\t\t\t\tif isDiffSchema {\n\t\t\t\t\t\t\t\t\tif originField := stmt.Schema.LookUpField(dbName); originField != nil {\n\t\t\t\t\t\t\t\t\t\tassignField = originField\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\tassignValue(assignField, value)\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\tif value, isZero := field.ValueOf(stmt.Context, updatingValue); !isZero {\n\t\t\t\t\t\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.Eq{Column: field.DBName, Value: value}}})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tstmt.AddError(gorm.ErrInvalidData)\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "gossh/gorm/callbacks.go",
    "content": "package gorm\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"time\"\n\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nfunc initializeCallbacks(db *DB) *callbacks {\n\treturn &callbacks{\n\t\tprocessors: map[string]*processor{\n\t\t\t\"create\": {db: db},\n\t\t\t\"query\":  {db: db},\n\t\t\t\"update\": {db: db},\n\t\t\t\"delete\": {db: db},\n\t\t\t\"row\":    {db: db},\n\t\t\t\"raw\":    {db: db},\n\t\t},\n\t}\n}\n\n// callbacks gorm callbacks manager\ntype callbacks struct {\n\tprocessors map[string]*processor\n}\n\ntype processor struct {\n\tdb        *DB\n\tClauses   []string\n\tfns       []func(*DB)\n\tcallbacks []*callback\n}\n\ntype callback struct {\n\tname      string\n\tbefore    string\n\tafter     string\n\tremove    bool\n\treplace   bool\n\tmatch     func(*DB) bool\n\thandler   func(*DB)\n\tprocessor *processor\n}\n\nfunc (cs *callbacks) Create() *processor {\n\treturn cs.processors[\"create\"]\n}\n\nfunc (cs *callbacks) Query() *processor {\n\treturn cs.processors[\"query\"]\n}\n\nfunc (cs *callbacks) Update() *processor {\n\treturn cs.processors[\"update\"]\n}\n\nfunc (cs *callbacks) Delete() *processor {\n\treturn cs.processors[\"delete\"]\n}\n\nfunc (cs *callbacks) Row() *processor {\n\treturn cs.processors[\"row\"]\n}\n\nfunc (cs *callbacks) Raw() *processor {\n\treturn cs.processors[\"raw\"]\n}\n\nfunc (p *processor) Execute(db *DB) *DB {\n\t// call scopes\n\tfor len(db.Statement.scopes) > 0 {\n\t\tdb = db.executeScopes()\n\t}\n\n\tvar (\n\t\tcurTime           = time.Now()\n\t\tstmt              = db.Statement\n\t\tresetBuildClauses bool\n\t)\n\n\tif len(stmt.BuildClauses) == 0 {\n\t\tstmt.BuildClauses = p.Clauses\n\t\tresetBuildClauses = true\n\t}\n\n\tif optimizer, ok := db.Statement.Dest.(StatementModifier); ok {\n\t\toptimizer.ModifyStatement(stmt)\n\t}\n\n\t// assign model values\n\tif stmt.Model == nil {\n\t\tstmt.Model = stmt.Dest\n\t} else if stmt.Dest == nil {\n\t\tstmt.Dest = stmt.Model\n\t}\n\n\t// parse model values\n\tif stmt.Model != nil {\n\t\tif err := stmt.Parse(stmt.Model); err != nil && (!errors.Is(err, schema.ErrUnsupportedDataType) || (stmt.Table == \"\" && stmt.TableExpr == nil && stmt.SQL.Len() == 0)) {\n\t\t\tif errors.Is(err, schema.ErrUnsupportedDataType) && stmt.Table == \"\" && stmt.TableExpr == nil {\n\t\t\t\tdb.AddError(fmt.Errorf(\"%w: Table not set, please set it like: db.Model(&user) or db.Table(\\\"users\\\")\", err))\n\t\t\t} else {\n\t\t\t\tdb.AddError(err)\n\t\t\t}\n\t\t}\n\t}\n\n\t// assign stmt.ReflectValue\n\tif stmt.Dest != nil {\n\t\tstmt.ReflectValue = reflect.ValueOf(stmt.Dest)\n\t\tfor stmt.ReflectValue.Kind() == reflect.Ptr {\n\t\t\tif stmt.ReflectValue.IsNil() && stmt.ReflectValue.CanAddr() {\n\t\t\t\tstmt.ReflectValue.Set(reflect.New(stmt.ReflectValue.Type().Elem()))\n\t\t\t}\n\n\t\t\tstmt.ReflectValue = stmt.ReflectValue.Elem()\n\t\t}\n\t\tif !stmt.ReflectValue.IsValid() {\n\t\t\tdb.AddError(ErrInvalidValue)\n\t\t}\n\t}\n\n\tfor _, f := range p.fns {\n\t\tf(db)\n\t}\n\n\tif stmt.SQL.Len() > 0 {\n\t\tdb.Logger.Trace(stmt.Context, curTime, func() (string, int64) {\n\t\t\tsql, vars := stmt.SQL.String(), stmt.Vars\n\t\t\tif filter, ok := db.Logger.(ParamsFilter); ok {\n\t\t\t\tsql, vars = filter.ParamsFilter(stmt.Context, stmt.SQL.String(), stmt.Vars...)\n\t\t\t}\n\t\t\treturn db.Dialector.Explain(sql, vars...), db.RowsAffected\n\t\t}, db.Error)\n\t}\n\n\tif !stmt.DB.DryRun {\n\t\tstmt.SQL.Reset()\n\t\tstmt.Vars = nil\n\t}\n\n\tif resetBuildClauses {\n\t\tstmt.BuildClauses = nil\n\t}\n\n\treturn db\n}\n\nfunc (p *processor) Get(name string) func(*DB) {\n\tfor i := len(p.callbacks) - 1; i >= 0; i-- {\n\t\tif v := p.callbacks[i]; v.name == name && !v.remove {\n\t\t\treturn v.handler\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *processor) Before(name string) *callback {\n\treturn &callback{before: name, processor: p}\n}\n\nfunc (p *processor) After(name string) *callback {\n\treturn &callback{after: name, processor: p}\n}\n\nfunc (p *processor) Match(fc func(*DB) bool) *callback {\n\treturn &callback{match: fc, processor: p}\n}\n\nfunc (p *processor) Register(name string, fn func(*DB)) error {\n\treturn (&callback{processor: p}).Register(name, fn)\n}\n\nfunc (p *processor) Remove(name string) error {\n\treturn (&callback{processor: p}).Remove(name)\n}\n\nfunc (p *processor) Replace(name string, fn func(*DB)) error {\n\treturn (&callback{processor: p}).Replace(name, fn)\n}\n\nfunc (p *processor) compile() (err error) {\n\tvar callbacks []*callback\n\tremovedMap := map[string]bool{}\n\tfor _, callback := range p.callbacks {\n\t\tif callback.match == nil || callback.match(p.db) {\n\t\t\tcallbacks = append(callbacks, callback)\n\t\t}\n\t\tif callback.remove {\n\t\t\tremovedMap[callback.name] = true\n\t\t}\n\t}\n\n\tif len(removedMap) > 0 {\n\t\tcallbacks = removeCallbacks(callbacks, removedMap)\n\t}\n\tp.callbacks = callbacks\n\n\tif p.fns, err = sortCallbacks(p.callbacks); err != nil {\n\t\tp.db.Logger.Error(context.Background(), \"Got error when compile callbacks, got %v\", err)\n\t}\n\treturn\n}\n\nfunc (c *callback) Before(name string) *callback {\n\tc.before = name\n\treturn c\n}\n\nfunc (c *callback) After(name string) *callback {\n\tc.after = name\n\treturn c\n}\n\nfunc (c *callback) Register(name string, fn func(*DB)) error {\n\tc.name = name\n\tc.handler = fn\n\tc.processor.callbacks = append(c.processor.callbacks, c)\n\treturn c.processor.compile()\n}\n\nfunc (c *callback) Remove(name string) error {\n\tc.processor.db.Logger.Warn(context.Background(), \"removing callback `%s` from %s\\n\", name, utils.FileWithLineNum())\n\tc.name = name\n\tc.remove = true\n\tc.processor.callbacks = append(c.processor.callbacks, c)\n\treturn c.processor.compile()\n}\n\nfunc (c *callback) Replace(name string, fn func(*DB)) error {\n\tc.processor.db.Logger.Info(context.Background(), \"replacing callback `%s` from %s\\n\", name, utils.FileWithLineNum())\n\tc.name = name\n\tc.handler = fn\n\tc.replace = true\n\tc.processor.callbacks = append(c.processor.callbacks, c)\n\treturn c.processor.compile()\n}\n\n// getRIndex get right index from string slice\nfunc getRIndex(strs []string, str string) int {\n\tfor i := len(strs) - 1; i >= 0; i-- {\n\t\tif strs[i] == str {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\nfunc sortCallbacks(cs []*callback) (fns []func(*DB), err error) {\n\tvar (\n\t\tnames, sorted []string\n\t\tsortCallback  func(*callback) error\n\t)\n\tsort.SliceStable(cs, func(i, j int) bool {\n\t\tif cs[j].before == \"*\" && cs[i].before != \"*\" {\n\t\t\treturn true\n\t\t}\n\t\tif cs[j].after == \"*\" && cs[i].after != \"*\" {\n\t\t\treturn true\n\t\t}\n\t\treturn false\n\t})\n\n\tfor _, c := range cs {\n\t\t// show warning message the callback name already exists\n\t\tif idx := getRIndex(names, c.name); idx > -1 && !c.replace && !c.remove && !cs[idx].remove {\n\t\t\tc.processor.db.Logger.Warn(context.Background(), \"duplicated callback `%s` from %s\\n\", c.name, utils.FileWithLineNum())\n\t\t}\n\t\tnames = append(names, c.name)\n\t}\n\n\tsortCallback = func(c *callback) error {\n\t\tif c.before != \"\" { // if defined before callback\n\t\t\tif c.before == \"*\" && len(sorted) > 0 {\n\t\t\t\tif curIdx := getRIndex(sorted, c.name); curIdx == -1 {\n\t\t\t\t\tsorted = append([]string{c.name}, sorted...)\n\t\t\t\t}\n\t\t\t} else if sortedIdx := getRIndex(sorted, c.before); sortedIdx != -1 {\n\t\t\t\tif curIdx := getRIndex(sorted, c.name); curIdx == -1 {\n\t\t\t\t\t// if before callback already sorted, append current callback just after it\n\t\t\t\t\tsorted = append(sorted[:sortedIdx], append([]string{c.name}, sorted[sortedIdx:]...)...)\n\t\t\t\t} else if curIdx > sortedIdx {\n\t\t\t\t\treturn fmt.Errorf(\"conflicting callback %s with before %s\", c.name, c.before)\n\t\t\t\t}\n\t\t\t} else if idx := getRIndex(names, c.before); idx != -1 {\n\t\t\t\t// if before callback exists\n\t\t\t\tcs[idx].after = c.name\n\t\t\t}\n\t\t}\n\n\t\tif c.after != \"\" { // if defined after callback\n\t\t\tif c.after == \"*\" && len(sorted) > 0 {\n\t\t\t\tif curIdx := getRIndex(sorted, c.name); curIdx == -1 {\n\t\t\t\t\tsorted = append(sorted, c.name)\n\t\t\t\t}\n\t\t\t} else if sortedIdx := getRIndex(sorted, c.after); sortedIdx != -1 {\n\t\t\t\tif curIdx := getRIndex(sorted, c.name); curIdx == -1 {\n\t\t\t\t\t// if after callback sorted, append current callback to last\n\t\t\t\t\tsorted = append(sorted, c.name)\n\t\t\t\t} else if curIdx < sortedIdx {\n\t\t\t\t\treturn fmt.Errorf(\"conflicting callback %s with before %s\", c.name, c.after)\n\t\t\t\t}\n\t\t\t} else if idx := getRIndex(names, c.after); idx != -1 {\n\t\t\t\t// if after callback exists but haven't sorted\n\t\t\t\t// set after callback's before callback to current callback\n\t\t\t\tafter := cs[idx]\n\n\t\t\t\tif after.before == \"\" {\n\t\t\t\t\tafter.before = c.name\n\t\t\t\t}\n\n\t\t\t\tif err := sortCallback(after); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\n\t\t\t\tif err := sortCallback(c); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// if current callback haven't been sorted, append it to last\n\t\tif getRIndex(sorted, c.name) == -1 {\n\t\t\tsorted = append(sorted, c.name)\n\t\t}\n\n\t\treturn nil\n\t}\n\n\tfor _, c := range cs {\n\t\tif err = sortCallback(c); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tfor _, name := range sorted {\n\t\tif idx := getRIndex(names, name); !cs[idx].remove {\n\t\t\tfns = append(fns, cs[idx].handler)\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc removeCallbacks(cs []*callback, nameMap map[string]bool) []*callback {\n\tcallbacks := make([]*callback, 0, len(cs))\n\tfor _, callback := range cs {\n\t\tif nameMap[callback.name] {\n\t\t\tcontinue\n\t\t}\n\t\tcallbacks = append(callbacks, callback)\n\t}\n\treturn callbacks\n}\n"
  },
  {
    "path": "gossh/gorm/chainable_api.go",
    "content": "package gorm\n\nimport (\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/utils\"\n)\n\n// Model specify the model you would like to run db operations\n//\n//\t// update all users's name to `hello`\n//\tdb.Model(&User{}).Update(\"name\", \"hello\")\n//\t// if user's primary key is non-blank, will use it as condition, then will only update that user's name to `hello`\n//\tdb.Model(&user).Update(\"name\", \"hello\")\nfunc (db *DB) Model(value any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Model = value\n\treturn\n}\n\n// Clauses Add clauses\n//\n// This supports both standard clauses (clause.OrderBy, clause.Limit, clause.Where) and more\n// advanced techniques like specifying lock strength and optimizer hints. See the\n// [docs] for more depth.\n//\n//\t// add a simple limit clause\n//\tdb.Clauses(clause.Limit{Limit: 1}).Find(&User{})\n//\t// tell the optimizer to use the `idx_user_name` index\n//\tdb.Clauses(hints.UseIndex(\"idx_user_name\")).Find(&User{})\n//\t// specify the lock strength to UPDATE\n//\tdb.Clauses(clause.Locking{Strength: \"UPDATE\"}).Find(&users)\n//\n// [docs]: https://gorm.io/docs/sql_builder.html#Clauses\nfunc (db *DB) Clauses(conds ...clause.Expression) (tx *DB) {\n\ttx = db.getInstance()\n\tvar whereConds []any\n\n\tfor _, cond := range conds {\n\t\tif c, ok := cond.(clause.Interface); ok {\n\t\t\ttx.Statement.AddClause(c)\n\t\t} else if optimizer, ok := cond.(StatementModifier); ok {\n\t\t\toptimizer.ModifyStatement(tx.Statement)\n\t\t} else {\n\t\t\twhereConds = append(whereConds, cond)\n\t\t}\n\t}\n\n\tif len(whereConds) > 0 {\n\t\ttx.Statement.AddClause(clause.Where{Exprs: tx.Statement.BuildCondition(whereConds[0], whereConds[1:]...)})\n\t}\n\treturn\n}\n\nvar tableRegexp = regexp.MustCompile(`(?i)(?:.+? AS (\\w+)\\s*(?:$|,)|^\\w+\\s+(\\w+)$)`)\n\n// Table specify the table you would like to run db operations\n//\n//\t// Get a user\n//\tdb.Table(\"users\").Take(&result)\nfunc (db *DB) Table(name string, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif strings.Contains(name, \" \") || strings.Contains(name, \"`\") || len(args) > 0 {\n\t\ttx.Statement.TableExpr = &clause.Expr{SQL: name, Vars: args}\n\t\tif results := tableRegexp.FindStringSubmatch(name); len(results) == 3 {\n\t\t\tif results[1] != \"\" {\n\t\t\t\ttx.Statement.Table = results[1]\n\t\t\t} else {\n\t\t\t\ttx.Statement.Table = results[2]\n\t\t\t}\n\t\t}\n\t} else if tables := strings.Split(name, \".\"); len(tables) == 2 {\n\t\ttx.Statement.TableExpr = &clause.Expr{SQL: tx.Statement.Quote(name)}\n\t\ttx.Statement.Table = tables[1]\n\t} else if name != \"\" {\n\t\ttx.Statement.TableExpr = &clause.Expr{SQL: tx.Statement.Quote(name)}\n\t\ttx.Statement.Table = name\n\t} else {\n\t\ttx.Statement.TableExpr = nil\n\t\ttx.Statement.Table = \"\"\n\t}\n\treturn\n}\n\n// Distinct specify distinct fields that you want querying\n//\n//\t// Select distinct names of users\n//\tdb.Distinct(\"name\").Find(&results)\n//\t// Select distinct name/age pairs from users\n//\tdb.Distinct(\"name\", \"age\").Find(&results)\nfunc (db *DB) Distinct(args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Distinct = true\n\tif len(args) > 0 {\n\t\ttx = tx.Select(args[0], args[1:]...)\n\t}\n\treturn\n}\n\n// Select specify fields that you want when querying, creating, updating\n//\n// Use Select when you only want a subset of the fields. By default, GORM will select all fields.\n// Select accepts both string arguments and arrays.\n//\n//\t// Select name and age of user using multiple arguments\n//\tdb.Select(\"name\", \"age\").Find(&users)\n//\t// Select name and age of user using an array\n//\tdb.Select([]string{\"name\", \"age\"}).Find(&users)\nfunc (db *DB) Select(query any, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\n\tswitch v := query.(type) {\n\tcase []string:\n\t\ttx.Statement.Selects = v\n\n\t\tfor _, arg := range args {\n\t\t\tswitch arg := arg.(type) {\n\t\t\tcase string:\n\t\t\t\ttx.Statement.Selects = append(tx.Statement.Selects, arg)\n\t\t\tcase []string:\n\t\t\t\ttx.Statement.Selects = append(tx.Statement.Selects, arg...)\n\t\t\tdefault:\n\t\t\t\ttx.AddError(fmt.Errorf(\"unsupported select args %v %v\", query, args))\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif clause, ok := tx.Statement.Clauses[\"SELECT\"]; ok {\n\t\t\tclause.Expression = nil\n\t\t\ttx.Statement.Clauses[\"SELECT\"] = clause\n\t\t}\n\tcase string:\n\t\tif strings.Count(v, \"?\") >= len(args) && len(args) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Select{\n\t\t\t\tDistinct:   db.Statement.Distinct,\n\t\t\t\tExpression: clause.Expr{SQL: v, Vars: args},\n\t\t\t})\n\t\t} else if strings.Count(v, \"@\") > 0 && len(args) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Select{\n\t\t\t\tDistinct:   db.Statement.Distinct,\n\t\t\t\tExpression: clause.NamedExpr{SQL: v, Vars: args},\n\t\t\t})\n\t\t} else {\n\t\t\ttx.Statement.Selects = []string{v}\n\n\t\t\tfor _, arg := range args {\n\t\t\t\tswitch arg := arg.(type) {\n\t\t\t\tcase string:\n\t\t\t\t\ttx.Statement.Selects = append(tx.Statement.Selects, arg)\n\t\t\t\tcase []string:\n\t\t\t\t\ttx.Statement.Selects = append(tx.Statement.Selects, arg...)\n\t\t\t\tdefault:\n\t\t\t\t\ttx.Statement.AddClause(clause.Select{\n\t\t\t\t\t\tDistinct:   db.Statement.Distinct,\n\t\t\t\t\t\tExpression: clause.Expr{SQL: v, Vars: args},\n\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif clause, ok := tx.Statement.Clauses[\"SELECT\"]; ok {\n\t\t\t\tclause.Expression = nil\n\t\t\t\ttx.Statement.Clauses[\"SELECT\"] = clause\n\t\t\t}\n\t\t}\n\tdefault:\n\t\ttx.AddError(fmt.Errorf(\"unsupported select args %v %v\", query, args))\n\t}\n\n\treturn\n}\n\n// Omit specify fields that you want to ignore when creating, updating and querying\nfunc (db *DB) Omit(columns ...string) (tx *DB) {\n\ttx = db.getInstance()\n\n\tif len(columns) == 1 && strings.ContainsRune(columns[0], ',') {\n\t\ttx.Statement.Omits = strings.FieldsFunc(columns[0], utils.IsValidDBNameChar)\n\t} else {\n\t\ttx.Statement.Omits = columns\n\t}\n\treturn\n}\n\n// Where add conditions\n//\n// See the [docs] for details on the various formats that where clauses can take. By default, where clauses chain with AND.\n//\n//\t// Find the first user with name jinzhu\n//\tdb.Where(\"name = ?\", \"jinzhu\").First(&user)\n//\t// Find the first user with name jinzhu and age 20\n//\tdb.Where(&User{Name: \"jinzhu\", Age: 20}).First(&user)\n//\t// Find the first user with name jinzhu and age not equal to 20\n//\tdb.Where(\"name = ?\", \"jinzhu\").Where(\"age <> ?\", \"20\").First(&user)\n//\n// [docs]: https://gorm.io/docs/query.html#Conditions\nfunc (db *DB) Where(query any, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif conds := tx.Statement.BuildCondition(query, args...); len(conds) > 0 {\n\t\ttx.Statement.AddClause(clause.Where{Exprs: conds})\n\t}\n\treturn\n}\n\n// Not add NOT conditions\n//\n// Not works similarly to where, and has the same syntax.\n//\n//\t// Find the first user with name not equal to jinzhu\n//\tdb.Not(\"name = ?\", \"jinzhu\").First(&user)\nfunc (db *DB) Not(query any, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif conds := tx.Statement.BuildCondition(query, args...); len(conds) > 0 {\n\t\ttx.Statement.AddClause(clause.Where{Exprs: []clause.Expression{clause.Not(conds...)}})\n\t}\n\treturn\n}\n\n// Or add OR conditions\n//\n// Or is used to chain together queries with an OR.\n//\n//\t// Find the first user with name equal to jinzhu or john\n//\tdb.Where(\"name = ?\", \"jinzhu\").Or(\"name = ?\", \"john\").First(&user)\nfunc (db *DB) Or(query any, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif conds := tx.Statement.BuildCondition(query, args...); len(conds) > 0 {\n\t\ttx.Statement.AddClause(clause.Where{Exprs: []clause.Expression{clause.Or(clause.And(conds...))}})\n\t}\n\treturn\n}\n\n// Joins specify Joins conditions\n//\n//\tdb.Joins(\"Account\").Find(&user)\n//\tdb.Joins(\"JOIN emails ON emails.user_id = users.id AND emails.email = ?\", \"jinzhu@example.org\").Find(&user)\n//\tdb.Joins(\"Account\", DB.Select(\"id\").Where(\"user_id = users.id AND name = ?\", \"someName\").Model(&Account{}))\nfunc (db *DB) Joins(query string, args ...any) (tx *DB) {\n\treturn joins(db, clause.LeftJoin, query, args...)\n}\n\n// InnerJoins specify inner joins conditions\n// db.InnerJoins(\"Account\").Find(&user)\nfunc (db *DB) InnerJoins(query string, args ...any) (tx *DB) {\n\treturn joins(db, clause.InnerJoin, query, args...)\n}\n\nfunc joins(db *DB, joinType clause.JoinType, query string, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\n\tif len(args) == 1 {\n\t\tif db, ok := args[0].(*DB); ok {\n\t\t\tj := join{\n\t\t\t\tName: query, Conds: args, Selects: db.Statement.Selects,\n\t\t\t\tOmits: db.Statement.Omits, JoinType: joinType,\n\t\t\t}\n\t\t\tif where, ok := db.Statement.Clauses[\"WHERE\"].Expression.(clause.Where); ok {\n\t\t\t\tj.On = &where\n\t\t\t}\n\t\t\ttx.Statement.Joins = append(tx.Statement.Joins, j)\n\t\t\treturn\n\t\t}\n\t}\n\n\ttx.Statement.Joins = append(tx.Statement.Joins, join{Name: query, Conds: args, JoinType: joinType})\n\treturn\n}\n\n// Group specify the group method on the find\n//\n//\t// Select the sum age of users with given names\n//\tdb.Model(&User{}).Select(\"name, sum(age) as total\").Group(\"name\").Find(&results)\nfunc (db *DB) Group(name string) (tx *DB) {\n\ttx = db.getInstance()\n\n\tfields := strings.FieldsFunc(name, utils.IsValidDBNameChar)\n\ttx.Statement.AddClause(clause.GroupBy{\n\t\tColumns: []clause.Column{{Name: name, Raw: len(fields) != 1}},\n\t})\n\treturn\n}\n\n// Having specify HAVING conditions for GROUP BY\n//\n//\t// Select the sum age of users with name jinzhu\n//\tdb.Model(&User{}).Select(\"name, sum(age) as total\").Group(\"name\").Having(\"name = ?\", \"jinzhu\").Find(&result)\nfunc (db *DB) Having(query any, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.AddClause(clause.GroupBy{\n\t\tHaving: tx.Statement.BuildCondition(query, args...),\n\t})\n\treturn\n}\n\n// Order specify order when retrieving records from database\n//\n//\tdb.Order(\"name DESC\")\n//\tdb.Order(clause.OrderByColumn{Column: clause.Column{Name: \"name\"}, Desc: true})\nfunc (db *DB) Order(value any) (tx *DB) {\n\ttx = db.getInstance()\n\n\tswitch v := value.(type) {\n\tcase clause.OrderByColumn:\n\t\ttx.Statement.AddClause(clause.OrderBy{\n\t\t\tColumns: []clause.OrderByColumn{v},\n\t\t})\n\tcase string:\n\t\tif v != \"\" {\n\t\t\ttx.Statement.AddClause(clause.OrderBy{\n\t\t\t\tColumns: []clause.OrderByColumn{{\n\t\t\t\t\tColumn: clause.Column{Name: v, Raw: true},\n\t\t\t\t}},\n\t\t\t})\n\t\t}\n\t}\n\treturn\n}\n\n// Limit specify the number of records to be retrieved\n//\n// Limit conditions can be cancelled by using `Limit(-1)`.\n//\n//\t// retrieve 3 users\n//\tdb.Limit(3).Find(&users)\n//\t// retrieve 3 users into users1, and all users into users2\n//\tdb.Limit(3).Find(&users1).Limit(-1).Find(&users2)\nfunc (db *DB) Limit(limit int) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.AddClause(clause.Limit{Limit: &limit})\n\treturn\n}\n\n// Offset specify the number of records to skip before starting to return the records\n//\n// Offset conditions can be cancelled by using `Offset(-1)`.\n//\n//\t// select the third user\n//\tdb.Offset(2).First(&user)\n//\t// select the first user by cancelling an earlier chained offset\n//\tdb.Offset(5).Offset(-1).First(&user)\nfunc (db *DB) Offset(offset int) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.AddClause(clause.Limit{Offset: offset})\n\treturn\n}\n\n// Scopes pass current database connection to arguments `func(DB) DB`, which could be used to add conditions dynamically\n//\n//\tfunc AmountGreaterThan1000(db *gorm.DB) *gorm.DB {\n//\t    return db.Where(\"amount > ?\", 1000)\n//\t}\n//\n//\tfunc OrderStatus(status []string) func (db *gorm.DB) *gorm.DB {\n//\t    return func (db *gorm.DB) *gorm.DB {\n//\t        return db.Scopes(AmountGreaterThan1000).Where(\"status in (?)\", status)\n//\t    }\n//\t}\n//\n//\tdb.Scopes(AmountGreaterThan1000, OrderStatus([]string{\"paid\", \"shipped\"})).Find(&orders)\nfunc (db *DB) Scopes(funcs ...func(*DB) *DB) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.scopes = append(tx.Statement.scopes, funcs...)\n\treturn tx\n}\n\nfunc (db *DB) executeScopes() (tx *DB) {\n\tscopes := db.Statement.scopes\n\tdb.Statement.scopes = nil\n\tfor _, scope := range scopes {\n\t\tdb = scope(db)\n\t}\n\treturn db\n}\n\n// Preload preload associations with given conditions\n//\n//\t// get all users, and preload all non-cancelled orders\n//\tdb.Preload(\"Orders\", \"state NOT IN (?)\", \"cancelled\").Find(&users)\nfunc (db *DB) Preload(query string, args ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif tx.Statement.Preloads == nil {\n\t\ttx.Statement.Preloads = map[string][]any{}\n\t}\n\ttx.Statement.Preloads[query] = args\n\treturn\n}\n\n// Attrs provide attributes used in [FirstOrCreate] or [FirstOrInit]\n//\n// Attrs only adds attributes if the record is not found.\n//\n//\t// assign an email if the record is not found\n//\tdb.Where(User{Name: \"non_existing\"}).Attrs(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"non_existing\", Email: \"fake@fake.org\"}\n//\n//\t// assign an email if the record is not found, otherwise ignore provided email\n//\tdb.Where(User{Name: \"jinzhu\"}).Attrs(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"jinzhu\", Age: 20}\n//\n// [FirstOrCreate]: https://gorm.io/docs/advanced_query.html#FirstOrCreate\n// [FirstOrInit]: https://gorm.io/docs/advanced_query.html#FirstOrInit\nfunc (db *DB) Attrs(attrs ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.attrs = attrs\n\treturn\n}\n\n// Assign provide attributes used in [FirstOrCreate] or [FirstOrInit]\n//\n// Assign adds attributes even if the record is found. If using FirstOrCreate, this means that\n// records will be updated even if they are found.\n//\n//\t// assign an email regardless of if the record is not found\n//\tdb.Where(User{Name: \"non_existing\"}).Assign(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"non_existing\", Email: \"fake@fake.org\"}\n//\n//\t// assign email regardless of if record is found\n//\tdb.Where(User{Name: \"jinzhu\"}).Assign(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"jinzhu\", Age: 20, Email: \"fake@fake.org\"}\n//\n// [FirstOrCreate]: https://gorm.io/docs/advanced_query.html#FirstOrCreate\n// [FirstOrInit]: https://gorm.io/docs/advanced_query.html#FirstOrInit\nfunc (db *DB) Assign(attrs ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.assigns = attrs\n\treturn\n}\n\nfunc (db *DB) Unscoped() (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Unscoped = true\n\treturn\n}\n\nfunc (db *DB) Raw(sql string, values ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.SQL = strings.Builder{}\n\n\tif strings.Contains(sql, \"@\") {\n\t\tclause.NamedExpr{SQL: sql, Vars: values}.Build(tx.Statement)\n\t} else {\n\t\tclause.Expr{SQL: sql, Vars: values}.Build(tx.Statement)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/gorm/clause/clause.go",
    "content": "package clause\n\n// Interface clause interface\ntype Interface interface {\n\tName() string\n\tBuild(Builder)\n\tMergeClause(*Clause)\n}\n\n// ClauseBuilder clause builder, allows to customize how to build clause\ntype ClauseBuilder func(Clause, Builder)\n\ntype Writer interface {\n\tWriteByte(byte) error\n\tWriteString(string) (int, error)\n}\n\n// Builder builder interface\ntype Builder interface {\n\tWriter\n\tWriteQuoted(field any)\n\tAddVar(Writer, ...any)\n\tAddError(error) error\n}\n\n// Clause\ntype Clause struct {\n\tName                string // WHERE\n\tBeforeExpression    Expression\n\tAfterNameExpression Expression\n\tAfterExpression     Expression\n\tExpression          Expression\n\tBuilder             ClauseBuilder\n}\n\n// Build build clause\nfunc (c Clause) Build(builder Builder) {\n\tif c.Builder != nil {\n\t\tc.Builder(c, builder)\n\t} else if c.Expression != nil {\n\t\tif c.BeforeExpression != nil {\n\t\t\tc.BeforeExpression.Build(builder)\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\n\t\tif c.Name != \"\" {\n\t\t\tbuilder.WriteString(c.Name)\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\n\t\tif c.AfterNameExpression != nil {\n\t\t\tc.AfterNameExpression.Build(builder)\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\n\t\tc.Expression.Build(builder)\n\n\t\tif c.AfterExpression != nil {\n\t\t\tbuilder.WriteByte(' ')\n\t\t\tc.AfterExpression.Build(builder)\n\t\t}\n\t}\n}\n\nconst (\n\tPrimaryKey   string = \"~~~py~~~\" // primary key\n\tCurrentTable string = \"~~~ct~~~\" // current table\n\tAssociations string = \"~~~as~~~\" // associations\n)\n\nvar (\n\tcurrentTable  = Table{Name: CurrentTable}\n\tPrimaryColumn = Column{Table: CurrentTable, Name: PrimaryKey}\n)\n\n// Column quote with name\ntype Column struct {\n\tTable string\n\tName  string\n\tAlias string\n\tRaw   bool\n}\n\n// Table quote with name\ntype Table struct {\n\tName  string\n\tAlias string\n\tRaw   bool\n}\n"
  },
  {
    "path": "gossh/gorm/clause/delete.go",
    "content": "package clause\n\ntype Delete struct {\n\tModifier string\n}\n\nfunc (d Delete) Name() string {\n\treturn \"DELETE\"\n}\n\nfunc (d Delete) Build(builder Builder) {\n\tbuilder.WriteString(\"DELETE\")\n\n\tif d.Modifier != \"\" {\n\t\tbuilder.WriteByte(' ')\n\t\tbuilder.WriteString(d.Modifier)\n\t}\n}\n\nfunc (d Delete) MergeClause(clause *Clause) {\n\tclause.Name = \"\"\n\tclause.Expression = d\n}\n"
  },
  {
    "path": "gossh/gorm/clause/expression.go",
    "content": "package clause\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"go/ast\"\n\t\"reflect\"\n)\n\n// Expression expression interface\ntype Expression interface {\n\tBuild(builder Builder)\n}\n\n// NegationExpressionBuilder negation expression builder\ntype NegationExpressionBuilder interface {\n\tNegationBuild(builder Builder)\n}\n\n// Expr raw expression\ntype Expr struct {\n\tSQL                string\n\tVars               []any\n\tWithoutParentheses bool\n}\n\n// Build build raw expression\nfunc (expr Expr) Build(builder Builder) {\n\tvar (\n\t\tafterParenthesis bool\n\t\tidx              int\n\t)\n\n\tfor _, v := range []byte(expr.SQL) {\n\t\tif v == '?' && len(expr.Vars) > idx {\n\t\t\tif afterParenthesis || expr.WithoutParentheses {\n\t\t\t\tif _, ok := expr.Vars[idx].(driver.Valuer); ok {\n\t\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t\t} else {\n\t\t\t\t\tswitch rv := reflect.ValueOf(expr.Vars[idx]); rv.Kind() {\n\t\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\t\tif rv.Len() == 0 {\n\t\t\t\t\t\t\tbuilder.AddVar(builder, nil)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\t\t\t\t\tif i > 0 {\n\t\t\t\t\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbuilder.AddVar(builder, rv.Index(i).Interface())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t}\n\n\t\t\tidx++\n\t\t} else {\n\t\t\tif v == '(' {\n\t\t\t\tafterParenthesis = true\n\t\t\t} else {\n\t\t\t\tafterParenthesis = false\n\t\t\t}\n\t\t\tbuilder.WriteByte(v)\n\t\t}\n\t}\n\n\tif idx < len(expr.Vars) {\n\t\tfor _, v := range expr.Vars[idx:] {\n\t\t\tbuilder.AddVar(builder, sql.NamedArg{Value: v})\n\t\t}\n\t}\n}\n\n// NamedExpr raw expression for named expr\ntype NamedExpr struct {\n\tSQL  string\n\tVars []any\n}\n\n// Build build raw expression\nfunc (expr NamedExpr) Build(builder Builder) {\n\tvar (\n\t\tidx              int\n\t\tinName           bool\n\t\tafterParenthesis bool\n\t\tnamedMap         = make(map[string]any, len(expr.Vars))\n\t)\n\n\tfor _, v := range expr.Vars {\n\t\tswitch value := v.(type) {\n\t\tcase sql.NamedArg:\n\t\t\tnamedMap[value.Name] = value.Value\n\t\tcase map[string]any:\n\t\t\tfor k, v := range value {\n\t\t\t\tnamedMap[k] = v\n\t\t\t}\n\t\tdefault:\n\t\t\tvar appendFieldsToMap func(reflect.Value)\n\t\t\tappendFieldsToMap = func(reflectValue reflect.Value) {\n\t\t\t\treflectValue = reflect.Indirect(reflectValue)\n\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tmodelType := reflectValue.Type()\n\t\t\t\t\tfor i := 0; i < modelType.NumField(); i++ {\n\t\t\t\t\t\tif fieldStruct := modelType.Field(i); ast.IsExported(fieldStruct.Name) {\n\t\t\t\t\t\t\tnamedMap[fieldStruct.Name] = reflectValue.Field(i).Interface()\n\n\t\t\t\t\t\t\tif fieldStruct.Anonymous {\n\t\t\t\t\t\t\t\tappendFieldsToMap(reflectValue.Field(i))\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\n\t\t\tappendFieldsToMap(reflect.ValueOf(value))\n\t\t}\n\t}\n\n\tname := make([]byte, 0, 10)\n\n\tfor _, v := range []byte(expr.SQL) {\n\t\tif v == '@' && !inName {\n\t\t\tinName = true\n\t\t\tname = name[:0]\n\t\t} else if v == ' ' || v == ',' || v == ')' || v == '\"' || v == '\\'' || v == '`' || v == '\\r' || v == '\\n' || v == ';' {\n\t\t\tif inName {\n\t\t\t\tif nv, ok := namedMap[string(name)]; ok {\n\t\t\t\t\tbuilder.AddVar(builder, nv)\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.WriteByte('@')\n\t\t\t\t\tbuilder.WriteString(string(name))\n\t\t\t\t}\n\t\t\t\tinName = false\n\t\t\t}\n\n\t\t\tafterParenthesis = false\n\t\t\tbuilder.WriteByte(v)\n\t\t} else if v == '?' && len(expr.Vars) > idx {\n\t\t\tif afterParenthesis {\n\t\t\t\tif _, ok := expr.Vars[idx].(driver.Valuer); ok {\n\t\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t\t} else {\n\t\t\t\t\tswitch rv := reflect.ValueOf(expr.Vars[idx]); rv.Kind() {\n\t\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\t\tif rv.Len() == 0 {\n\t\t\t\t\t\t\tbuilder.AddVar(builder, nil)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\t\t\t\t\tif i > 0 {\n\t\t\t\t\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbuilder.AddVar(builder, rv.Index(i).Interface())\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbuilder.AddVar(builder, expr.Vars[idx])\n\t\t\t}\n\n\t\t\tidx++\n\t\t} else if inName {\n\t\t\tname = append(name, v)\n\t\t} else {\n\t\t\tif v == '(' {\n\t\t\t\tafterParenthesis = true\n\t\t\t} else {\n\t\t\t\tafterParenthesis = false\n\t\t\t}\n\t\t\tbuilder.WriteByte(v)\n\t\t}\n\t}\n\n\tif inName {\n\t\tif nv, ok := namedMap[string(name)]; ok {\n\t\t\tbuilder.AddVar(builder, nv)\n\t\t} else {\n\t\t\tbuilder.WriteByte('@')\n\t\t\tbuilder.WriteString(string(name))\n\t\t}\n\t}\n}\n\n// IN Whether a value is within a set of values\ntype IN struct {\n\tColumn any\n\tValues []any\n}\n\nfunc (in IN) Build(builder Builder) {\n\tbuilder.WriteQuoted(in.Column)\n\n\tswitch len(in.Values) {\n\tcase 0:\n\t\tbuilder.WriteString(\" IN (NULL)\")\n\tcase 1:\n\t\tif _, ok := in.Values[0].([]any); !ok {\n\t\t\tbuilder.WriteString(\" = \")\n\t\t\tbuilder.AddVar(builder, in.Values[0])\n\t\t\tbreak\n\t\t}\n\n\t\tfallthrough\n\tdefault:\n\t\tbuilder.WriteString(\" IN (\")\n\t\tbuilder.AddVar(builder, in.Values...)\n\t\tbuilder.WriteByte(')')\n\t}\n}\n\nfunc (in IN) NegationBuild(builder Builder) {\n\tbuilder.WriteQuoted(in.Column)\n\tswitch len(in.Values) {\n\tcase 0:\n\t\tbuilder.WriteString(\" IS NOT NULL\")\n\tcase 1:\n\t\tif _, ok := in.Values[0].([]any); !ok {\n\t\t\tbuilder.WriteString(\" <> \")\n\t\t\tbuilder.AddVar(builder, in.Values[0])\n\t\t\tbreak\n\t\t}\n\n\t\tfallthrough\n\tdefault:\n\t\tbuilder.WriteString(\" NOT IN (\")\n\t\tbuilder.AddVar(builder, in.Values...)\n\t\tbuilder.WriteByte(')')\n\t}\n}\n\n// Eq equal to for where\ntype Eq struct {\n\tColumn any\n\tValue  any\n}\n\nfunc (eq Eq) Build(builder Builder) {\n\tbuilder.WriteQuoted(eq.Column)\n\n\tswitch eq.Value.(type) {\n\tcase []string, []int, []int32, []int64, []uint, []uint32, []uint64, []any:\n\t\trv := reflect.ValueOf(eq.Value)\n\t\tif rv.Len() == 0 {\n\t\t\tbuilder.WriteString(\" IN (NULL)\")\n\t\t} else {\n\t\t\tbuilder.WriteString(\" IN (\")\n\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\tif i > 0 {\n\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t}\n\t\t\t\tbuilder.AddVar(builder, rv.Index(i).Interface())\n\t\t\t}\n\t\t\tbuilder.WriteByte(')')\n\t\t}\n\tdefault:\n\t\tif eqNil(eq.Value) {\n\t\t\tbuilder.WriteString(\" IS NULL\")\n\t\t} else {\n\t\t\tbuilder.WriteString(\" = \")\n\t\t\tbuilder.AddVar(builder, eq.Value)\n\t\t}\n\t}\n}\n\nfunc (eq Eq) NegationBuild(builder Builder) {\n\tNeq(eq).Build(builder)\n}\n\n// Neq not equal to for where\ntype Neq Eq\n\nfunc (neq Neq) Build(builder Builder) {\n\tbuilder.WriteQuoted(neq.Column)\n\n\tswitch neq.Value.(type) {\n\tcase []string, []int, []int32, []int64, []uint, []uint32, []uint64, []any:\n\t\tbuilder.WriteString(\" NOT IN (\")\n\t\trv := reflect.ValueOf(neq.Value)\n\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\tif i > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\t\t\tbuilder.AddVar(builder, rv.Index(i).Interface())\n\t\t}\n\t\tbuilder.WriteByte(')')\n\tdefault:\n\t\tif eqNil(neq.Value) {\n\t\t\tbuilder.WriteString(\" IS NOT NULL\")\n\t\t} else {\n\t\t\tbuilder.WriteString(\" <> \")\n\t\t\tbuilder.AddVar(builder, neq.Value)\n\t\t}\n\t}\n}\n\nfunc (neq Neq) NegationBuild(builder Builder) {\n\tEq(neq).Build(builder)\n}\n\n// Gt greater than for where\ntype Gt Eq\n\nfunc (gt Gt) Build(builder Builder) {\n\tbuilder.WriteQuoted(gt.Column)\n\tbuilder.WriteString(\" > \")\n\tbuilder.AddVar(builder, gt.Value)\n}\n\nfunc (gt Gt) NegationBuild(builder Builder) {\n\tLte(gt).Build(builder)\n}\n\n// Gte greater than or equal to for where\ntype Gte Eq\n\nfunc (gte Gte) Build(builder Builder) {\n\tbuilder.WriteQuoted(gte.Column)\n\tbuilder.WriteString(\" >= \")\n\tbuilder.AddVar(builder, gte.Value)\n}\n\nfunc (gte Gte) NegationBuild(builder Builder) {\n\tLt(gte).Build(builder)\n}\n\n// Lt less than for where\ntype Lt Eq\n\nfunc (lt Lt) Build(builder Builder) {\n\tbuilder.WriteQuoted(lt.Column)\n\tbuilder.WriteString(\" < \")\n\tbuilder.AddVar(builder, lt.Value)\n}\n\nfunc (lt Lt) NegationBuild(builder Builder) {\n\tGte(lt).Build(builder)\n}\n\n// Lte less than or equal to for where\ntype Lte Eq\n\nfunc (lte Lte) Build(builder Builder) {\n\tbuilder.WriteQuoted(lte.Column)\n\tbuilder.WriteString(\" <= \")\n\tbuilder.AddVar(builder, lte.Value)\n}\n\nfunc (lte Lte) NegationBuild(builder Builder) {\n\tGt(lte).Build(builder)\n}\n\n// Like whether string matches regular expression\ntype Like Eq\n\nfunc (like Like) Build(builder Builder) {\n\tbuilder.WriteQuoted(like.Column)\n\tbuilder.WriteString(\" LIKE \")\n\tbuilder.AddVar(builder, like.Value)\n}\n\nfunc (like Like) NegationBuild(builder Builder) {\n\tbuilder.WriteQuoted(like.Column)\n\tbuilder.WriteString(\" NOT LIKE \")\n\tbuilder.AddVar(builder, like.Value)\n}\n\nfunc eqNil(value any) bool {\n\tif valuer, ok := value.(driver.Valuer); ok && !eqNilReflect(valuer) {\n\t\tvalue, _ = valuer.Value()\n\t}\n\n\treturn value == nil || eqNilReflect(value)\n}\n\nfunc eqNilReflect(value any) bool {\n\treflectValue := reflect.ValueOf(value)\n\treturn reflectValue.Kind() == reflect.Ptr && reflectValue.IsNil()\n}\n"
  },
  {
    "path": "gossh/gorm/clause/from.go",
    "content": "package clause\n\n// From from clause\ntype From struct {\n\tTables []Table\n\tJoins  []Join\n}\n\n// Name from clause name\nfunc (from From) Name() string {\n\treturn \"FROM\"\n}\n\n// Build build from clause\nfunc (from From) Build(builder Builder) {\n\tif len(from.Tables) > 0 {\n\t\tfor idx, table := range from.Tables {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\n\t\t\tbuilder.WriteQuoted(table)\n\t\t}\n\t} else {\n\t\tbuilder.WriteQuoted(currentTable)\n\t}\n\n\tfor _, join := range from.Joins {\n\t\tbuilder.WriteByte(' ')\n\t\tjoin.Build(builder)\n\t}\n}\n\n// MergeClause merge from clause\nfunc (from From) MergeClause(clause *Clause) {\n\tclause.Expression = from\n}\n"
  },
  {
    "path": "gossh/gorm/clause/group_by.go",
    "content": "package clause\n\n// GroupBy group by clause\ntype GroupBy struct {\n\tColumns []Column\n\tHaving  []Expression\n}\n\n// Name from clause name\nfunc (groupBy GroupBy) Name() string {\n\treturn \"GROUP BY\"\n}\n\n// Build build group by clause\nfunc (groupBy GroupBy) Build(builder Builder) {\n\tfor idx, column := range groupBy.Columns {\n\t\tif idx > 0 {\n\t\t\tbuilder.WriteByte(',')\n\t\t}\n\n\t\tbuilder.WriteQuoted(column)\n\t}\n\n\tif len(groupBy.Having) > 0 {\n\t\tbuilder.WriteString(\" HAVING \")\n\t\tWhere{Exprs: groupBy.Having}.Build(builder)\n\t}\n}\n\n// MergeClause merge group by clause\nfunc (groupBy GroupBy) MergeClause(clause *Clause) {\n\tif v, ok := clause.Expression.(GroupBy); ok {\n\t\tcopiedColumns := make([]Column, len(v.Columns))\n\t\tcopy(copiedColumns, v.Columns)\n\t\tgroupBy.Columns = append(copiedColumns, groupBy.Columns...)\n\n\t\tcopiedHaving := make([]Expression, len(v.Having))\n\t\tcopy(copiedHaving, v.Having)\n\t\tgroupBy.Having = append(copiedHaving, groupBy.Having...)\n\t}\n\tclause.Expression = groupBy\n\n\tif len(groupBy.Columns) == 0 {\n\t\tclause.Name = \"\"\n\t} else {\n\t\tclause.Name = groupBy.Name()\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/clause/insert.go",
    "content": "package clause\n\ntype Insert struct {\n\tTable    Table\n\tModifier string\n}\n\n// Name insert clause name\nfunc (insert Insert) Name() string {\n\treturn \"INSERT\"\n}\n\n// Build build insert clause\nfunc (insert Insert) Build(builder Builder) {\n\tif insert.Modifier != \"\" {\n\t\tbuilder.WriteString(insert.Modifier)\n\t\tbuilder.WriteByte(' ')\n\t}\n\n\tbuilder.WriteString(\"INTO \")\n\tif insert.Table.Name == \"\" {\n\t\tbuilder.WriteQuoted(currentTable)\n\t} else {\n\t\tbuilder.WriteQuoted(insert.Table)\n\t}\n}\n\n// MergeClause merge insert clause\nfunc (insert Insert) MergeClause(clause *Clause) {\n\tif v, ok := clause.Expression.(Insert); ok {\n\t\tif insert.Modifier == \"\" {\n\t\t\tinsert.Modifier = v.Modifier\n\t\t}\n\t\tif insert.Table.Name == \"\" {\n\t\t\tinsert.Table = v.Table\n\t\t}\n\t}\n\tclause.Expression = insert\n}\n"
  },
  {
    "path": "gossh/gorm/clause/joins.go",
    "content": "package clause\n\ntype JoinType string\n\nconst (\n\tCrossJoin JoinType = \"CROSS\"\n\tInnerJoin JoinType = \"INNER\"\n\tLeftJoin  JoinType = \"LEFT\"\n\tRightJoin JoinType = \"RIGHT\"\n)\n\n// Join clause for from\ntype Join struct {\n\tType       JoinType\n\tTable      Table\n\tON         Where\n\tUsing      []string\n\tExpression Expression\n}\n\nfunc (join Join) Build(builder Builder) {\n\tif join.Expression != nil {\n\t\tjoin.Expression.Build(builder)\n\t} else {\n\t\tif join.Type != \"\" {\n\t\t\tbuilder.WriteString(string(join.Type))\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\n\t\tbuilder.WriteString(\"JOIN \")\n\t\tbuilder.WriteQuoted(join.Table)\n\n\t\tif len(join.ON.Exprs) > 0 {\n\t\t\tbuilder.WriteString(\" ON \")\n\t\t\tjoin.ON.Build(builder)\n\t\t} else if len(join.Using) > 0 {\n\t\t\tbuilder.WriteString(\" USING (\")\n\t\t\tfor idx, c := range join.Using {\n\t\t\t\tif idx > 0 {\n\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t}\n\t\t\t\tbuilder.WriteQuoted(c)\n\t\t\t}\n\t\t\tbuilder.WriteByte(')')\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/clause/limit.go",
    "content": "package clause\n\n// Limit limit clause\ntype Limit struct {\n\tLimit  *int\n\tOffset int\n}\n\n// Name where clause name\nfunc (limit Limit) Name() string {\n\treturn \"LIMIT\"\n}\n\n// Build build where clause\nfunc (limit Limit) Build(builder Builder) {\n\tif limit.Limit != nil && *limit.Limit >= 0 {\n\t\tbuilder.WriteString(\"LIMIT \")\n\t\tbuilder.AddVar(builder, *limit.Limit)\n\t}\n\tif limit.Offset > 0 {\n\t\tif limit.Limit != nil && *limit.Limit >= 0 {\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\t\tbuilder.WriteString(\"OFFSET \")\n\t\tbuilder.AddVar(builder, limit.Offset)\n\t}\n}\n\n// MergeClause merge order by clauses\nfunc (limit Limit) MergeClause(clause *Clause) {\n\tclause.Name = \"\"\n\n\tif v, ok := clause.Expression.(Limit); ok {\n\t\tif (limit.Limit == nil || *limit.Limit == 0) && v.Limit != nil {\n\t\t\tlimit.Limit = v.Limit\n\t\t}\n\n\t\tif limit.Offset == 0 && v.Offset > 0 {\n\t\t\tlimit.Offset = v.Offset\n\t\t} else if limit.Offset < 0 {\n\t\t\tlimit.Offset = 0\n\t\t}\n\t}\n\n\tclause.Expression = limit\n}\n"
  },
  {
    "path": "gossh/gorm/clause/locking.go",
    "content": "package clause\n\nconst (\n\tLockingStrengthUpdate    = \"UPDATE\"\n\tLockingStrengthShare     = \"SHARE\"\n\tLockingOptionsSkipLocked = \"SKIP LOCKED\"\n\tLockingOptionsNoWait     = \"NOWAIT\"\n)\n\ntype Locking struct {\n\tStrength string\n\tTable    Table\n\tOptions  string\n}\n\n// Name where clause name\nfunc (locking Locking) Name() string {\n\treturn \"FOR\"\n}\n\n// Build build where clause\nfunc (locking Locking) Build(builder Builder) {\n\tbuilder.WriteString(locking.Strength)\n\tif locking.Table.Name != \"\" {\n\t\tbuilder.WriteString(\" OF \")\n\t\tbuilder.WriteQuoted(locking.Table)\n\t}\n\n\tif locking.Options != \"\" {\n\t\tbuilder.WriteByte(' ')\n\t\tbuilder.WriteString(locking.Options)\n\t}\n}\n\n// MergeClause merge order by clauses\nfunc (locking Locking) MergeClause(clause *Clause) {\n\tclause.Expression = locking\n}\n"
  },
  {
    "path": "gossh/gorm/clause/on_conflict.go",
    "content": "package clause\n\ntype OnConflict struct {\n\tColumns      []Column\n\tWhere        Where\n\tTargetWhere  Where\n\tOnConstraint string\n\tDoNothing    bool\n\tDoUpdates    Set\n\tUpdateAll    bool\n}\n\nfunc (OnConflict) Name() string {\n\treturn \"ON CONFLICT\"\n}\n\n// Build build onConflict clause\nfunc (onConflict OnConflict) Build(builder Builder) {\n\tif onConflict.OnConstraint != \"\" {\n\t\tbuilder.WriteString(\"ON CONSTRAINT \")\n\t\tbuilder.WriteString(onConflict.OnConstraint)\n\t\tbuilder.WriteByte(' ')\n\t} else {\n\t\tif len(onConflict.Columns) > 0 {\n\t\t\tbuilder.WriteByte('(')\n\t\t\tfor idx, column := range onConflict.Columns {\n\t\t\t\tif idx > 0 {\n\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t}\n\t\t\t\tbuilder.WriteQuoted(column)\n\t\t\t}\n\t\t\tbuilder.WriteString(`) `)\n\t\t}\n\n\t\tif len(onConflict.TargetWhere.Exprs) > 0 {\n\t\t\tbuilder.WriteString(\" WHERE \")\n\t\t\tonConflict.TargetWhere.Build(builder)\n\t\t\tbuilder.WriteByte(' ')\n\t\t}\n\t}\n\n\tif onConflict.DoNothing {\n\t\tbuilder.WriteString(\"DO NOTHING\")\n\t} else {\n\t\tbuilder.WriteString(\"DO UPDATE SET \")\n\t\tonConflict.DoUpdates.Build(builder)\n\t}\n\n\tif len(onConflict.Where.Exprs) > 0 {\n\t\tbuilder.WriteString(\" WHERE \")\n\t\tonConflict.Where.Build(builder)\n\t\tbuilder.WriteByte(' ')\n\t}\n}\n\n// MergeClause merge onConflict clauses\nfunc (onConflict OnConflict) MergeClause(clause *Clause) {\n\tclause.Expression = onConflict\n}\n"
  },
  {
    "path": "gossh/gorm/clause/order_by.go",
    "content": "package clause\n\ntype OrderByColumn struct {\n\tColumn  Column\n\tDesc    bool\n\tReorder bool\n}\n\ntype OrderBy struct {\n\tColumns    []OrderByColumn\n\tExpression Expression\n}\n\n// Name where clause name\nfunc (orderBy OrderBy) Name() string {\n\treturn \"ORDER BY\"\n}\n\n// Build build where clause\nfunc (orderBy OrderBy) Build(builder Builder) {\n\tif orderBy.Expression != nil {\n\t\torderBy.Expression.Build(builder)\n\t} else {\n\t\tfor idx, column := range orderBy.Columns {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\n\t\t\tbuilder.WriteQuoted(column.Column)\n\t\t\tif column.Desc {\n\t\t\t\tbuilder.WriteString(\" DESC\")\n\t\t\t}\n\t\t}\n\t}\n}\n\n// MergeClause merge order by clauses\nfunc (orderBy OrderBy) MergeClause(clause *Clause) {\n\tif v, ok := clause.Expression.(OrderBy); ok {\n\t\tfor i := len(orderBy.Columns) - 1; i >= 0; i-- {\n\t\t\tif orderBy.Columns[i].Reorder {\n\t\t\t\torderBy.Columns = orderBy.Columns[i:]\n\t\t\t\tclause.Expression = orderBy\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tcopiedColumns := make([]OrderByColumn, len(v.Columns))\n\t\tcopy(copiedColumns, v.Columns)\n\t\torderBy.Columns = append(copiedColumns, orderBy.Columns...)\n\t}\n\n\tclause.Expression = orderBy\n}\n"
  },
  {
    "path": "gossh/gorm/clause/returning.go",
    "content": "package clause\n\ntype Returning struct {\n\tColumns []Column\n}\n\n// Name where clause name\nfunc (returning Returning) Name() string {\n\treturn \"RETURNING\"\n}\n\n// Build build where clause\nfunc (returning Returning) Build(builder Builder) {\n\tif len(returning.Columns) > 0 {\n\t\tfor idx, column := range returning.Columns {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\n\t\t\tbuilder.WriteQuoted(column)\n\t\t}\n\t} else {\n\t\tbuilder.WriteByte('*')\n\t}\n}\n\n// MergeClause merge order by clauses\nfunc (returning Returning) MergeClause(clause *Clause) {\n\tif v, ok := clause.Expression.(Returning); ok {\n\t\treturning.Columns = append(v.Columns, returning.Columns...)\n\t}\n\n\tclause.Expression = returning\n}\n"
  },
  {
    "path": "gossh/gorm/clause/select.go",
    "content": "package clause\n\n// Select select attrs when querying, updating, creating\ntype Select struct {\n\tDistinct   bool\n\tColumns    []Column\n\tExpression Expression\n}\n\nfunc (s Select) Name() string {\n\treturn \"SELECT\"\n}\n\nfunc (s Select) Build(builder Builder) {\n\tif len(s.Columns) > 0 {\n\t\tif s.Distinct {\n\t\t\tbuilder.WriteString(\"DISTINCT \")\n\t\t}\n\n\t\tfor idx, column := range s.Columns {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\t\t\tbuilder.WriteQuoted(column)\n\t\t}\n\t} else {\n\t\tbuilder.WriteByte('*')\n\t}\n}\n\nfunc (s Select) MergeClause(clause *Clause) {\n\tif s.Expression != nil {\n\t\tif s.Distinct {\n\t\t\tif expr, ok := s.Expression.(Expr); ok {\n\t\t\t\texpr.SQL = \"DISTINCT \" + expr.SQL\n\t\t\t\tclause.Expression = expr\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tclause.Expression = s.Expression\n\t} else {\n\t\tclause.Expression = s\n\t}\n}\n\n// CommaExpression represents a group of expressions separated by commas.\ntype CommaExpression struct {\n\tExprs []Expression\n}\n\nfunc (comma CommaExpression) Build(builder Builder) {\n\tfor idx, expr := range comma.Exprs {\n\t\tif idx > 0 {\n\t\t\t_, _ = builder.WriteString(\", \")\n\t\t}\n\t\texpr.Build(builder)\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/clause/set.go",
    "content": "package clause\n\nimport \"sort\"\n\ntype Set []Assignment\n\ntype Assignment struct {\n\tColumn Column\n\tValue  any\n}\n\nfunc (set Set) Name() string {\n\treturn \"SET\"\n}\n\nfunc (set Set) Build(builder Builder) {\n\tif len(set) > 0 {\n\t\tfor idx, assignment := range set {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\t\t\tbuilder.WriteQuoted(assignment.Column)\n\t\t\tbuilder.WriteByte('=')\n\t\t\tbuilder.AddVar(builder, assignment.Value)\n\t\t}\n\t} else {\n\t\tbuilder.WriteQuoted(Column{Name: PrimaryKey})\n\t\tbuilder.WriteByte('=')\n\t\tbuilder.WriteQuoted(Column{Name: PrimaryKey})\n\t}\n}\n\n// MergeClause merge assignments clauses\nfunc (set Set) MergeClause(clause *Clause) {\n\tcopiedAssignments := make([]Assignment, len(set))\n\tcopy(copiedAssignments, set)\n\tclause.Expression = Set(copiedAssignments)\n}\n\nfunc Assignments(values map[string]any) Set {\n\tkeys := make([]string, 0, len(values))\n\tfor key := range values {\n\t\tkeys = append(keys, key)\n\t}\n\tsort.Strings(keys)\n\n\tassignments := make([]Assignment, len(keys))\n\tfor idx, key := range keys {\n\t\tassignments[idx] = Assignment{Column: Column{Name: key}, Value: values[key]}\n\t}\n\treturn assignments\n}\n\nfunc AssignmentColumns(values []string) Set {\n\tassignments := make([]Assignment, len(values))\n\tfor idx, value := range values {\n\t\tassignments[idx] = Assignment{Column: Column{Name: value}, Value: Column{Table: \"excluded\", Name: value}}\n\t}\n\treturn assignments\n}\n"
  },
  {
    "path": "gossh/gorm/clause/update.go",
    "content": "package clause\n\ntype Update struct {\n\tModifier string\n\tTable    Table\n}\n\n// Name update clause name\nfunc (update Update) Name() string {\n\treturn \"UPDATE\"\n}\n\n// Build build update clause\nfunc (update Update) Build(builder Builder) {\n\tif update.Modifier != \"\" {\n\t\tbuilder.WriteString(update.Modifier)\n\t\tbuilder.WriteByte(' ')\n\t}\n\n\tif update.Table.Name == \"\" {\n\t\tbuilder.WriteQuoted(currentTable)\n\t} else {\n\t\tbuilder.WriteQuoted(update.Table)\n\t}\n}\n\n// MergeClause merge update clause\nfunc (update Update) MergeClause(clause *Clause) {\n\tif v, ok := clause.Expression.(Update); ok {\n\t\tif update.Modifier == \"\" {\n\t\t\tupdate.Modifier = v.Modifier\n\t\t}\n\t\tif update.Table.Name == \"\" {\n\t\t\tupdate.Table = v.Table\n\t\t}\n\t}\n\tclause.Expression = update\n}\n"
  },
  {
    "path": "gossh/gorm/clause/values.go",
    "content": "package clause\n\ntype Values struct {\n\tColumns []Column\n\tValues  [][]any\n}\n\n// Name from clause name\nfunc (Values) Name() string {\n\treturn \"VALUES\"\n}\n\n// Build build from clause\nfunc (values Values) Build(builder Builder) {\n\tif len(values.Columns) > 0 {\n\t\tbuilder.WriteByte('(')\n\t\tfor idx, column := range values.Columns {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\t\t\tbuilder.WriteQuoted(column)\n\t\t}\n\t\tbuilder.WriteByte(')')\n\n\t\tbuilder.WriteString(\" VALUES \")\n\n\t\tfor idx, value := range values.Values {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteByte(',')\n\t\t\t}\n\n\t\t\tbuilder.WriteByte('(')\n\t\t\tbuilder.AddVar(builder, value...)\n\t\t\tbuilder.WriteByte(')')\n\t\t}\n\t} else {\n\t\tbuilder.WriteString(\"DEFAULT VALUES\")\n\t}\n}\n\n// MergeClause merge values clauses\nfunc (values Values) MergeClause(clause *Clause) {\n\tclause.Name = \"\"\n\tclause.Expression = values\n}\n"
  },
  {
    "path": "gossh/gorm/clause/where.go",
    "content": "package clause\n\nimport (\n\t\"strings\"\n)\n\nconst (\n\tAndWithSpace = \" AND \"\n\tOrWithSpace  = \" OR \"\n)\n\n// Where where clause\ntype Where struct {\n\tExprs []Expression\n}\n\n// Name where clause name\nfunc (where Where) Name() string {\n\treturn \"WHERE\"\n}\n\n// Build build where clause\nfunc (where Where) Build(builder Builder) {\n\tif len(where.Exprs) == 1 {\n\t\tif andCondition, ok := where.Exprs[0].(AndConditions); ok {\n\t\t\twhere.Exprs = andCondition.Exprs\n\t\t}\n\t}\n\n\t// Switch position if the first query expression is a single Or condition\n\tfor idx, expr := range where.Exprs {\n\t\tif v, ok := expr.(OrConditions); !ok || len(v.Exprs) > 1 {\n\t\t\tif idx != 0 {\n\t\t\t\twhere.Exprs[0], where.Exprs[idx] = where.Exprs[idx], where.Exprs[0]\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\tbuildExprs(where.Exprs, builder, AndWithSpace)\n}\n\nfunc buildExprs(exprs []Expression, builder Builder, joinCond string) {\n\twrapInParentheses := false\n\n\tfor idx, expr := range exprs {\n\t\tif idx > 0 {\n\t\t\tif v, ok := expr.(OrConditions); ok && len(v.Exprs) == 1 {\n\t\t\t\tbuilder.WriteString(OrWithSpace)\n\t\t\t} else {\n\t\t\t\tbuilder.WriteString(joinCond)\n\t\t\t}\n\t\t}\n\n\t\tif len(exprs) > 1 {\n\t\t\tswitch v := expr.(type) {\n\t\t\tcase OrConditions:\n\t\t\t\tif len(v.Exprs) == 1 {\n\t\t\t\t\tif e, ok := v.Exprs[0].(Expr); ok {\n\t\t\t\t\t\tsql := strings.ToUpper(e.SQL)\n\t\t\t\t\t\twrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase AndConditions:\n\t\t\t\tif len(v.Exprs) == 1 {\n\t\t\t\t\tif e, ok := v.Exprs[0].(Expr); ok {\n\t\t\t\t\t\tsql := strings.ToUpper(e.SQL)\n\t\t\t\t\t\twrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\tcase Expr:\n\t\t\t\tsql := strings.ToUpper(v.SQL)\n\t\t\t\twrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace)\n\t\t\tcase NamedExpr:\n\t\t\t\tsql := strings.ToUpper(v.SQL)\n\t\t\t\twrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace)\n\t\t\t}\n\t\t}\n\n\t\tif wrapInParentheses {\n\t\t\tbuilder.WriteByte('(')\n\t\t\texpr.Build(builder)\n\t\t\tbuilder.WriteByte(')')\n\t\t\twrapInParentheses = false\n\t\t} else {\n\t\t\texpr.Build(builder)\n\t\t}\n\t}\n}\n\n// MergeClause merge where clauses\nfunc (where Where) MergeClause(clause *Clause) {\n\tif w, ok := clause.Expression.(Where); ok {\n\t\texprs := make([]Expression, len(w.Exprs)+len(where.Exprs))\n\t\tcopy(exprs, w.Exprs)\n\t\tcopy(exprs[len(w.Exprs):], where.Exprs)\n\t\twhere.Exprs = exprs\n\t}\n\n\tclause.Expression = where\n}\n\nfunc And(exprs ...Expression) Expression {\n\tif len(exprs) == 0 {\n\t\treturn nil\n\t}\n\n\tif len(exprs) == 1 {\n\t\tif _, ok := exprs[0].(OrConditions); !ok {\n\t\t\treturn exprs[0]\n\t\t}\n\t}\n\n\treturn AndConditions{Exprs: exprs}\n}\n\ntype AndConditions struct {\n\tExprs []Expression\n}\n\nfunc (and AndConditions) Build(builder Builder) {\n\tif len(and.Exprs) > 1 {\n\t\tbuilder.WriteByte('(')\n\t\tbuildExprs(and.Exprs, builder, AndWithSpace)\n\t\tbuilder.WriteByte(')')\n\t} else {\n\t\tbuildExprs(and.Exprs, builder, AndWithSpace)\n\t}\n}\n\nfunc Or(exprs ...Expression) Expression {\n\tif len(exprs) == 0 {\n\t\treturn nil\n\t}\n\treturn OrConditions{Exprs: exprs}\n}\n\ntype OrConditions struct {\n\tExprs []Expression\n}\n\nfunc (or OrConditions) Build(builder Builder) {\n\tif len(or.Exprs) > 1 {\n\t\tbuilder.WriteByte('(')\n\t\tbuildExprs(or.Exprs, builder, OrWithSpace)\n\t\tbuilder.WriteByte(')')\n\t} else {\n\t\tbuildExprs(or.Exprs, builder, OrWithSpace)\n\t}\n}\n\nfunc Not(exprs ...Expression) Expression {\n\tif len(exprs) == 0 {\n\t\treturn nil\n\t}\n\tif len(exprs) == 1 {\n\t\tif andCondition, ok := exprs[0].(AndConditions); ok {\n\t\t\texprs = andCondition.Exprs\n\t\t}\n\t}\n\treturn NotConditions{Exprs: exprs}\n}\n\ntype NotConditions struct {\n\tExprs []Expression\n}\n\nfunc (not NotConditions) Build(builder Builder) {\n\tanyNegationBuilder := false\n\tfor _, c := range not.Exprs {\n\t\tif _, ok := c.(NegationExpressionBuilder); ok {\n\t\t\tanyNegationBuilder = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif anyNegationBuilder {\n\t\tif len(not.Exprs) > 1 {\n\t\t\tbuilder.WriteByte('(')\n\t\t}\n\n\t\tfor idx, c := range not.Exprs {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteString(AndWithSpace)\n\t\t\t}\n\n\t\t\tif negationBuilder, ok := c.(NegationExpressionBuilder); ok {\n\t\t\t\tnegationBuilder.NegationBuild(builder)\n\t\t\t} else {\n\t\t\t\tbuilder.WriteString(\"NOT \")\n\t\t\t\te, wrapInParentheses := c.(Expr)\n\t\t\t\tif wrapInParentheses {\n\t\t\t\t\tsql := strings.ToUpper(e.SQL)\n\t\t\t\t\tif wrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace); wrapInParentheses {\n\t\t\t\t\t\tbuilder.WriteByte('(')\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tc.Build(builder)\n\n\t\t\t\tif wrapInParentheses {\n\t\t\t\t\tbuilder.WriteByte(')')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif len(not.Exprs) > 1 {\n\t\t\tbuilder.WriteByte(')')\n\t\t}\n\t} else {\n\t\tbuilder.WriteString(\"NOT \")\n\t\tif len(not.Exprs) > 1 {\n\t\t\tbuilder.WriteByte('(')\n\t\t}\n\n\t\tfor idx, c := range not.Exprs {\n\t\t\tif idx > 0 {\n\t\t\t\tbuilder.WriteString(AndWithSpace)\n\t\t\t}\n\n\t\t\te, wrapInParentheses := c.(Expr)\n\t\t\tif wrapInParentheses {\n\t\t\t\tsql := strings.ToUpper(e.SQL)\n\t\t\t\tif wrapInParentheses = strings.Contains(sql, AndWithSpace) || strings.Contains(sql, OrWithSpace); wrapInParentheses {\n\t\t\t\t\tbuilder.WriteByte('(')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.Build(builder)\n\n\t\t\tif wrapInParentheses {\n\t\t\t\tbuilder.WriteByte(')')\n\t\t\t}\n\t\t}\n\n\t\tif len(not.Exprs) > 1 {\n\t\t\tbuilder.WriteByte(')')\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/clause/with.go",
    "content": "package clause\n\ntype With struct{}\n"
  },
  {
    "path": "gossh/gorm/driver/mysql/error_translator.go",
    "content": "package mysql\n\nimport (\n\t\"gossh/gorm\"\n\t\"gossh/mysql\"\n)\n\n// The error codes to map mysql errors to gorm errors, here is the mysql error codes reference https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html.\nvar errCodes = map[uint16]error{\n\t1062: gorm.ErrDuplicatedKey,\n\t1451: gorm.ErrForeignKeyViolated,\n\t1452: gorm.ErrForeignKeyViolated,\n}\n\nfunc (dialector Dialector) Translate(err error) error {\n\tif mysqlErr, ok := err.(*mysql.MySQLError); ok {\n\t\tif translatedErr, found := errCodes[mysqlErr.Number]; found {\n\t\t\treturn translatedErr\n\t\t}\n\t\treturn mysqlErr\n\t}\n\n\treturn err\n}\n"
  },
  {
    "path": "gossh/gorm/driver/mysql/migrator.go",
    "content": "package mysql\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n)\n\nconst indexSql = `\nSELECT\n\tTABLE_NAME,\n\tCOLUMN_NAME,\n\tINDEX_NAME,\n\tNON_UNIQUE \nFROM\n\tinformation_schema.STATISTICS \nWHERE\n\tTABLE_SCHEMA = ? \n\tAND TABLE_NAME = ? \nORDER BY\n\tINDEX_NAME,\n\tSEQ_IN_INDEX`\n\nvar typeAliasMap = map[string][]string{\n\t\"bool\":    {\"tinyint\"},\n\t\"tinyint\": {\"bool\"},\n}\n\ntype Migrator struct {\n\tmigrator.Migrator\n\tDialector\n}\n\nfunc (m Migrator) FullDataTypeOf(field *schema.Field) clause.Expr {\n\texpr := m.Migrator.FullDataTypeOf(field)\n\n\tif value, ok := field.TagSettings[\"COMMENT\"]; ok {\n\t\texpr.SQL += \" COMMENT \" + m.Dialector.Explain(\"?\", value)\n\t}\n\n\treturn expr\n}\n\n// MigrateColumnUnique migrate column's UNIQUE constraint.\n// In MySQL, ColumnType's Unique is affected by UniqueIndex, so we have to take care of the UniqueIndex.\nfunc (m Migrator) MigrateColumnUnique(value any, field *schema.Field, columnType gorm.ColumnType) error {\n\tunique, ok := columnType.Unique()\n\tif !ok || field.PrimaryKey {\n\t\treturn nil // skip primary key\n\t}\n\n\tqueryTx, execTx := m.GetQueryAndExecTx()\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t// We're currently only receiving boolean values on `Unique` tag,\n\t\t// so the UniqueConstraint name is fixed\n\t\tconstraint := m.DB.NamingStrategy.UniqueName(stmt.Table, field.DBName)\n\t\tif unique {\n\t\t\t// Clean up redundant unique indexes\n\t\t\tindexes, _ := queryTx.Migrator().GetIndexes(value)\n\t\t\tfor _, index := range indexes {\n\t\t\t\tif uni, ok := index.Unique(); !ok || !uni {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif columns := index.Columns(); len(columns) != 1 || columns[0] != field.DBName {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif name := index.Name(); name == constraint || name == field.UniqueIndex {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif err := execTx.Migrator().DropIndex(value, index.Name()); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thasConstraint := queryTx.Migrator().HasConstraint(value, constraint)\n\t\t\tswitch {\n\t\t\tcase field.Unique && !hasConstraint:\n\t\t\t\tif field.Unique {\n\t\t\t\t\tif err := execTx.Migrator().CreateConstraint(value, constraint); 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// field isn't Unique but ColumnType's Unique is reported by UniqueConstraint.\n\t\t\tcase !field.Unique && hasConstraint:\n\t\t\t\tif err := execTx.Migrator().DropConstraint(value, constraint); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tif field.UniqueIndex != \"\" {\n\t\t\t\t\tif err := execTx.Migrator().CreateIndex(value, field.UniqueIndex); 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\n\t\t\tif field.UniqueIndex != \"\" && !queryTx.Migrator().HasIndex(value, field.UniqueIndex) {\n\t\t\t\tif err := execTx.Migrator().CreateIndex(value, field.UniqueIndex); 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 field.Unique {\n\t\t\t\tif err := execTx.Migrator().CreateConstraint(value, constraint); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\tif field.UniqueIndex != \"\" {\n\t\t\t\tif err := execTx.Migrator().CreateIndex(value, field.UniqueIndex); err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t})\n}\n\nfunc (m Migrator) AddColumn(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t// avoid using the same name field\n\t\tf := stmt.Schema.LookUpField(name)\n\t\tif f == nil {\n\t\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", name)\n\t\t}\n\n\t\tif !f.IgnoreMigration {\n\t\t\tfieldType := m.FullDataTypeOf(f)\n\t\t\tcolumnName := clause.Column{Name: f.DBName}\n\t\t\tvalues := []any{m.CurrentTable(stmt), columnName, fieldType}\n\t\t\tvar alterSql strings.Builder\n\t\t\talterSql.WriteString(\"ALTER TABLE ? ADD ? ?\")\n\t\t\tif f.PrimaryKey || strings.Contains(strings.ToLower(fieldType.SQL), \"auto_increment\") {\n\t\t\t\talterSql.WriteString(\", ADD PRIMARY KEY (?)\")\n\t\t\t\tvalues = append(values, columnName)\n\t\t\t}\n\t\t\treturn m.DB.Exec(alterSql.String(), values...).Error\n\t\t}\n\n\t\treturn nil\n\t})\n}\n\nfunc (m Migrator) AlterColumn(value any, field string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\t\tfullDataType := m.FullDataTypeOf(field)\n\t\t\t\tif m.Dialector.DontSupportRenameColumnUnique {\n\t\t\t\t\tfullDataType.SQL = strings.Replace(fullDataType.SQL, \" UNIQUE \", \" \", 1)\n\t\t\t\t}\n\n\t\t\t\treturn m.DB.Exec(\n\t\t\t\t\t\"ALTER TABLE ? MODIFY COLUMN ? ?\",\n\t\t\t\t\tclause.Table{Name: stmt.Table}, clause.Column{Name: field.DBName}, fullDataType,\n\t\t\t\t).Error\n\t\t\t}\n\t\t}\n\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", field)\n\t})\n}\n\nfunc (m Migrator) TiDBVersion() (isTiDB bool, major, minor, patch int, err error) {\n\t// TiDB version string looks like:\n\t// \"5.7.25-TiDB-v6.5.0\" or \"5.7.25-TiDB-v6.4.0-serverless\"\n\ttidbVersionArray := strings.Split(m.Dialector.ServerVersion, \"-\")\n\tif len(tidbVersionArray) < 3 || tidbVersionArray[1] != \"TiDB\" {\n\t\t// It isn't TiDB\n\t\treturn\n\t}\n\n\trawVersion := strings.TrimPrefix(tidbVersionArray[2], \"v\")\n\trealVersionArray := strings.Split(rawVersion, \".\")\n\tif major, err = strconv.Atoi(realVersionArray[0]); err != nil {\n\t\terr = fmt.Errorf(\"failed to parse the version of TiDB, the major version is: %s\", realVersionArray[0])\n\t\treturn\n\t}\n\n\tif minor, err = strconv.Atoi(realVersionArray[1]); err != nil {\n\t\terr = fmt.Errorf(\"failed to parse the version of TiDB, the minor version is: %s\", realVersionArray[1])\n\t\treturn\n\t}\n\n\tif patch, err = strconv.Atoi(realVersionArray[2]); err != nil {\n\t\terr = fmt.Errorf(\"failed to parse the version of TiDB, the patch version is: %s\", realVersionArray[2])\n\t\treturn\n\t}\n\n\tisTiDB = true\n\treturn\n}\n\nfunc (m Migrator) RenameColumn(value any, oldName, newName string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif !m.Dialector.DontSupportRenameColumn {\n\t\t\treturn m.Migrator.RenameColumn(value, oldName, newName)\n\t\t}\n\n\t\tvar field *schema.Field\n\t\tif stmt.Schema != nil {\n\t\t\tif f := stmt.Schema.LookUpField(oldName); f != nil {\n\t\t\t\toldName = f.DBName\n\t\t\t\tfield = f\n\t\t\t}\n\n\t\t\tif f := stmt.Schema.LookUpField(newName); f != nil {\n\t\t\t\tnewName = f.DBName\n\t\t\t\tfield = f\n\t\t\t}\n\t\t}\n\n\t\tif field != nil {\n\t\t\treturn m.DB.Exec(\n\t\t\t\t\"ALTER TABLE ? CHANGE ? ? ?\",\n\t\t\t\tclause.Table{Name: stmt.Table}, clause.Column{Name: oldName},\n\t\t\t\tclause.Column{Name: newName}, m.FullDataTypeOf(field),\n\t\t\t).Error\n\t\t}\n\n\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", newName)\n\t})\n}\n\nfunc (m Migrator) DropConstraint(value any, name string) error {\n\tif !m.Dialector.Config.DontSupportDropConstraint {\n\t\treturn m.Migrator.DropConstraint(value, name)\n\t}\n\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t\tswitch constraint.(type) {\n\t\t\tcase *schema.Constraint:\n\t\t\t\treturn m.DB.Exec(\"ALTER TABLE ? DROP FOREIGN KEY ?\", clause.Table{Name: table}, clause.Column{Name: name}).Error\n\t\t\tcase *schema.CheckConstraint:\n\t\t\t\treturn m.DB.Exec(\"ALTER TABLE ? DROP CHECK ?\", clause.Table{Name: table}, clause.Column{Name: name}).Error\n\t\t\t}\n\t\t}\n\t\tif m.HasIndex(value, name) {\n\t\t\treturn m.DB.Exec(\"ALTER TABLE ? DROP INDEX ?\", clause.Table{Name: table}, clause.Column{Name: name}).Error\n\t\t}\n\t\treturn nil\n\t})\n}\n\nfunc (m Migrator) RenameIndex(value any, oldName, newName string) error {\n\tif !m.Dialector.DontSupportRenameIndex {\n\t\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t\treturn m.DB.Exec(\n\t\t\t\t\"ALTER TABLE ? RENAME INDEX ? TO ?\",\n\t\t\t\tclause.Table{Name: stmt.Table}, clause.Column{Name: oldName}, clause.Column{Name: newName},\n\t\t\t).Error\n\t\t})\n\t}\n\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\terr := m.DropIndex(value, oldName)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(newName); idx == nil {\n\t\t\t\tif idx = stmt.Schema.LookIndex(oldName); idx != nil {\n\t\t\t\t\topts := m.BuildIndexOptions(idx.Fields, stmt)\n\t\t\t\t\tvalues := []any{clause.Column{Name: newName}, clause.Table{Name: stmt.Table}, opts}\n\n\t\t\t\t\tcreateIndexSQL := \"CREATE \"\n\t\t\t\t\tif idx.Class != \"\" {\n\t\t\t\t\t\tcreateIndexSQL += idx.Class + \" \"\n\t\t\t\t\t}\n\t\t\t\t\tcreateIndexSQL += \"INDEX ? ON ??\"\n\n\t\t\t\t\tif idx.Type != \"\" {\n\t\t\t\t\t\tcreateIndexSQL += \" USING \" + idx.Type\n\t\t\t\t\t}\n\n\t\t\t\t\treturn m.DB.Exec(createIndexSQL, values...).Error\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn m.CreateIndex(value, newName)\n\t})\n\n}\n\nfunc (m Migrator) DropTable(values ...any) error {\n\tvalues = m.ReorderModels(values, false)\n\treturn m.DB.Connection(func(tx *gorm.DB) error {\n\t\ttx.Exec(\"SET FOREIGN_KEY_CHECKS = 0;\")\n\t\tfor i := len(values) - 1; i >= 0; i-- {\n\t\t\tif err := m.RunWithValue(values[i], func(stmt *gorm.Statement) error {\n\t\t\t\treturn tx.Exec(\"DROP TABLE IF EXISTS ? CASCADE\", clause.Table{Name: stmt.Table}).Error\n\t\t\t}); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn tx.Exec(\"SET FOREIGN_KEY_CHECKS = 1;\").Error\n\t})\n}\n\n// ColumnTypes column types return columnTypes,error\nfunc (m Migrator) ColumnTypes(value any) ([]gorm.ColumnType, error) {\n\tcolumnTypes := make([]gorm.ColumnType, 0)\n\terr := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tvar (\n\t\t\tcurrentDatabase, table = m.CurrentSchema(stmt, stmt.Table)\n\t\t\tcolumnTypeSQL          = \"SELECT column_name, column_default, is_nullable = 'YES', data_type, character_maximum_length, column_type, column_key, extra, column_comment, numeric_precision, numeric_scale \"\n\t\t\trows, err              = m.DB.Session(&gorm.Session{}).Table(table).Limit(1).Rows()\n\t\t)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trawColumnTypes, err := rows.ColumnTypes()\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif err := rows.Close(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif !m.DisableDatetimePrecision {\n\t\t\tcolumnTypeSQL += \", datetime_precision \"\n\t\t}\n\t\tcolumnTypeSQL += \"FROM information_schema.columns WHERE table_schema = ? AND table_name = ? ORDER BY ORDINAL_POSITION\"\n\n\t\tcolumns, rowErr := m.DB.Table(table).Raw(columnTypeSQL, currentDatabase, table).Rows()\n\t\tif rowErr != nil {\n\t\t\treturn rowErr\n\t\t}\n\n\t\tdefer columns.Close()\n\n\t\tfor columns.Next() {\n\t\t\tvar (\n\t\t\t\tcolumn            migrator.ColumnType\n\t\t\t\tdatetimePrecision sql.NullInt64\n\t\t\t\textraValue        sql.NullString\n\t\t\t\tcolumnKey         sql.NullString\n\t\t\t\tvalues            = []any{\n\t\t\t\t\t&column.NameValue, &column.DefaultValueValue, &column.NullableValue, &column.DataTypeValue, &column.LengthValue, &column.ColumnTypeValue, &columnKey, &extraValue, &column.CommentValue, &column.DecimalSizeValue, &column.ScaleValue,\n\t\t\t\t}\n\t\t\t)\n\n\t\t\tif !m.DisableDatetimePrecision {\n\t\t\t\tvalues = append(values, &datetimePrecision)\n\t\t\t}\n\n\t\t\tif scanErr := columns.Scan(values...); scanErr != nil {\n\t\t\t\treturn scanErr\n\t\t\t}\n\n\t\t\tcolumn.PrimaryKeyValue = sql.NullBool{Bool: false, Valid: true}\n\t\t\tcolumn.UniqueValue = sql.NullBool{Bool: false, Valid: true}\n\t\t\tswitch columnKey.String {\n\t\t\tcase \"PRI\":\n\t\t\t\tcolumn.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\tcase \"UNI\":\n\t\t\t\tcolumn.UniqueValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t}\n\n\t\t\tif strings.Contains(extraValue.String, \"auto_increment\") {\n\t\t\t\tcolumn.AutoIncrementValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t}\n\n\t\t\t// only trim paired single-quotes\n\t\t\ts := column.DefaultValueValue.String\n\t\t\tfor (len(s) >= 3 && s[0] == '\\'' && s[len(s)-1] == '\\'' && s[len(s)-2] != '\\\\') ||\n\t\t\t\t(len(s) == 2 && s == \"''\") {\n\t\t\t\ts = s[1 : len(s)-1]\n\t\t\t}\n\t\t\tcolumn.DefaultValueValue.String = s\n\t\t\tif m.Dialector.DontSupportNullAsDefaultValue {\n\t\t\t\t// rewrite mariadb default value like other version\n\t\t\t\tif column.DefaultValueValue.Valid && column.DefaultValueValue.String == \"NULL\" {\n\t\t\t\t\tcolumn.DefaultValueValue.Valid = false\n\t\t\t\t\tcolumn.DefaultValueValue.String = \"\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif datetimePrecision.Valid {\n\t\t\t\tcolumn.DecimalSizeValue = datetimePrecision\n\t\t\t}\n\n\t\t\tfor _, c := range rawColumnTypes {\n\t\t\t\tif c.Name() == column.NameValue.String {\n\t\t\t\t\tcolumn.SQLColumnType = c\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcolumnTypes = append(columnTypes, column)\n\t\t}\n\n\t\treturn nil\n\t})\n\n\treturn columnTypes, err\n}\n\nfunc (m Migrator) CurrentDatabase() (name string) {\n\tbaseName := m.Migrator.CurrentDatabase()\n\tm.DB.Raw(\n\t\t\"SELECT SCHEMA_NAME from Information_schema.SCHEMATA where SCHEMA_NAME LIKE ? ORDER BY SCHEMA_NAME=? DESC,SCHEMA_NAME limit 1\",\n\t\tbaseName+\"%\", baseName).Scan(&name)\n\treturn\n}\n\nfunc (m Migrator) GetTables() (tableList []string, err error) {\n\terr = m.DB.Raw(\"SELECT TABLE_NAME FROM information_schema.tables where TABLE_SCHEMA=?\", m.CurrentDatabase()).\n\t\tScan(&tableList).Error\n\treturn\n}\n\nfunc (m Migrator) GetIndexes(value any) ([]gorm.Index, error) {\n\tindexes := make([]gorm.Index, 0)\n\terr := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\n\t\tresult := make([]*Index, 0)\n\t\tschema, table := m.CurrentSchema(stmt, stmt.Table)\n\t\tscanErr := m.DB.Table(table).Raw(indexSql, schema, table).Scan(&result).Error\n\t\tif scanErr != nil {\n\t\t\treturn scanErr\n\t\t}\n\t\tindexMap, indexNames := groupByIndexName(result)\n\n\t\tfor _, name := range indexNames {\n\t\t\tidx := indexMap[name]\n\t\t\tif len(idx) == 0 {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\ttempIdx := &migrator.Index{\n\t\t\t\tTableName: idx[0].TableName,\n\t\t\t\tNameValue: idx[0].IndexName,\n\t\t\t\tPrimaryKeyValue: sql.NullBool{\n\t\t\t\t\tBool:  idx[0].IndexName == \"PRIMARY\",\n\t\t\t\t\tValid: true,\n\t\t\t\t},\n\t\t\t\tUniqueValue: sql.NullBool{\n\t\t\t\t\tBool:  idx[0].NonUnique == 0,\n\t\t\t\t\tValid: true,\n\t\t\t\t},\n\t\t\t}\n\t\t\tfor _, x := range idx {\n\t\t\t\ttempIdx.ColumnList = append(tempIdx.ColumnList, x.ColumnName)\n\t\t\t}\n\t\t\tindexes = append(indexes, tempIdx)\n\t\t}\n\t\treturn nil\n\t})\n\treturn indexes, err\n}\n\n// Index table index info\ntype Index struct {\n\tTableName  string `gorm:\"column:TABLE_NAME\"`\n\tColumnName string `gorm:\"column:COLUMN_NAME\"`\n\tIndexName  string `gorm:\"column:INDEX_NAME\"`\n\tNonUnique  int32  `gorm:\"column:NON_UNIQUE\"`\n}\n\nfunc groupByIndexName(indexList []*Index) (map[string][]*Index, []string) {\n\tcolumnIndexMap := make(map[string][]*Index, len(indexList))\n\tindexNames := make([]string, 0, len(indexList))\n\tfor _, idx := range indexList {\n\t\tif _, ok := columnIndexMap[idx.IndexName]; !ok {\n\t\t\tindexNames = append(indexNames, idx.IndexName)\n\t\t}\n\t\tcolumnIndexMap[idx.IndexName] = append(columnIndexMap[idx.IndexName], idx)\n\t}\n\treturn columnIndexMap, indexNames\n}\n\nfunc (m Migrator) CurrentSchema(stmt *gorm.Statement, table string) (string, string) {\n\tif tables := strings.Split(table, `.`); len(tables) == 2 {\n\t\treturn tables[0], tables[1]\n\t}\n\tm.DB = m.DB.Table(table)\n\treturn m.CurrentDatabase(), table\n}\n\nfunc (m Migrator) GetTypeAliases(databaseTypeName string) []string {\n\treturn typeAliasMap[databaseTypeName]\n}\n\n// TableType table type return tableType,error\nfunc (m Migrator) TableType(value any) (tableType gorm.TableType, err error) {\n\tvar table migrator.TableType\n\n\terr = m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tvar (\n\t\t\tvalues = []any{\n\t\t\t\t&table.SchemaValue, &table.NameValue, &table.TypeValue, &table.CommentValue,\n\t\t\t}\n\t\t\tcurrentDatabase, tableName = m.CurrentSchema(stmt, stmt.Table)\n\t\t\ttableTypeSQL               = \"SELECT table_schema, table_name, table_type, table_comment FROM information_schema.tables WHERE table_schema = ? AND table_name = ?\"\n\t\t)\n\n\t\trow := m.DB.Table(tableName).Raw(tableTypeSQL, currentDatabase, tableName).Row()\n\n\t\tif scanErr := row.Scan(values...); scanErr != nil {\n\t\t\treturn scanErr\n\t\t}\n\n\t\treturn nil\n\t})\n\n\treturn table, err\n}\n"
  },
  {
    "path": "gossh/gorm/driver/mysql/mysql.go",
    "content": "package mysql\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gossh/mysql\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/callbacks\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\nconst (\n\tAutoRandomTag = \"auto_random()\" // Treated as an auto_random field for tidb\n)\n\ntype Config struct {\n\tDriverName                    string\n\tServerVersion                 string\n\tDSN                           string\n\tDSNConfig                     *mysql.Config\n\tConn                          gorm.ConnPool\n\tSkipInitializeWithVersion     bool\n\tDefaultStringSize             uint\n\tDefaultDatetimePrecision      *int\n\tDisableWithReturning          bool\n\tDisableDatetimePrecision      bool\n\tDontSupportRenameIndex        bool\n\tDontSupportRenameColumn       bool\n\tDontSupportForShareClause     bool\n\tDontSupportNullAsDefaultValue bool\n\tDontSupportRenameColumnUnique bool\n\t// As of MySQL 8.0.19, ALTER TABLE permits more general (and SQL standard) syntax\n\t// for dropping and altering existing constraints of any type.\n\t// see https://dev.mysql.com/doc/refman/8.0/en/alter-table.html\n\tDontSupportDropConstraint bool\n}\n\ntype Dialector struct {\n\t*Config\n}\n\nvar (\n\t// CreateClauses create clauses\n\tCreateClauses = []string{\"INSERT\", \"VALUES\", \"ON CONFLICT\"}\n\t// QueryClauses query clauses\n\tQueryClauses = []string{}\n\t// UpdateClauses update clauses\n\tUpdateClauses = []string{\"UPDATE\", \"SET\", \"WHERE\", \"ORDER BY\", \"LIMIT\"}\n\t// DeleteClauses delete clauses\n\tDeleteClauses = []string{\"DELETE\", \"FROM\", \"WHERE\", \"ORDER BY\", \"LIMIT\"}\n\n\tdefaultDatetimePrecision = 3\n)\n\nfunc Open(dsn string) gorm.Dialector {\n\tdsnConf, _ := mysql.ParseDSN(dsn)\n\treturn &Dialector{Config: &Config{DSN: dsn, DSNConfig: dsnConf}}\n}\n\nfunc New(config Config) gorm.Dialector {\n\tswitch {\n\tcase config.DSN == \"\" && config.DSNConfig != nil:\n\t\tconfig.DSN = config.DSNConfig.FormatDSN()\n\tcase config.DSN != \"\" && config.DSNConfig == nil:\n\t\tconfig.DSNConfig, _ = mysql.ParseDSN(config.DSN)\n\t}\n\treturn &Dialector{Config: &config}\n}\n\nfunc (dialector Dialector) Name() string {\n\treturn \"mysql\"\n}\n\n// NowFunc return now func\nfunc (dialector Dialector) NowFunc(n int) func() time.Time {\n\treturn func() time.Time {\n\t\tround := time.Second / time.Duration(math.Pow10(n))\n\t\treturn time.Now().Round(round)\n\t}\n}\n\nfunc (dialector Dialector) Apply(config *gorm.Config) error {\n\tif config.NowFunc != nil {\n\t\treturn nil\n\t}\n\n\tif dialector.DefaultDatetimePrecision == nil {\n\t\tdialector.DefaultDatetimePrecision = &defaultDatetimePrecision\n\t}\n\t// while maintaining the readability of the code, separate the business logic from\n\t// the general part and leave it to the function to do it here.\n\tconfig.NowFunc = dialector.NowFunc(*dialector.DefaultDatetimePrecision)\n\treturn nil\n}\n\nfunc (dialector Dialector) Initialize(db *gorm.DB) (err error) {\n\tif dialector.DriverName == \"\" {\n\t\tdialector.DriverName = \"mysql\"\n\t}\n\n\tif dialector.DefaultDatetimePrecision == nil {\n\t\tdialector.DefaultDatetimePrecision = &defaultDatetimePrecision\n\t}\n\n\tif dialector.Conn != nil {\n\t\tdb.ConnPool = dialector.Conn\n\t} else {\n\t\tdb.ConnPool, err = sql.Open(dialector.DriverName, dialector.DSN)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\twithReturning := false\n\tif !dialector.Config.SkipInitializeWithVersion {\n\t\terr = db.ConnPool.QueryRowContext(context.Background(), \"SELECT VERSION()\").Scan(&dialector.ServerVersion)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif strings.Contains(dialector.ServerVersion, \"MariaDB\") {\n\t\t\tdialector.Config.DontSupportRenameIndex = true\n\t\t\tdialector.Config.DontSupportRenameColumn = true\n\t\t\tdialector.Config.DontSupportForShareClause = true\n\t\t\tdialector.Config.DontSupportNullAsDefaultValue = true\n\t\t\twithReturning = checkVersion(dialector.ServerVersion, \"10.5\")\n\t\t} else if strings.HasPrefix(dialector.ServerVersion, \"5.6.\") {\n\t\t\tdialector.Config.DontSupportRenameIndex = true\n\t\t\tdialector.Config.DontSupportRenameColumn = true\n\t\t\tdialector.Config.DontSupportForShareClause = true\n\t\t\tdialector.Config.DontSupportDropConstraint = true\n\t\t} else if strings.HasPrefix(dialector.ServerVersion, \"5.7.\") {\n\t\t\tdialector.Config.DontSupportRenameColumn = true\n\t\t\tdialector.Config.DontSupportForShareClause = true\n\t\t\tdialector.Config.DontSupportDropConstraint = true\n\t\t} else if strings.HasPrefix(dialector.ServerVersion, \"5.\") {\n\t\t\tdialector.Config.DisableDatetimePrecision = true\n\t\t\tdialector.Config.DontSupportRenameIndex = true\n\t\t\tdialector.Config.DontSupportRenameColumn = true\n\t\t\tdialector.Config.DontSupportForShareClause = true\n\t\t\tdialector.Config.DontSupportDropConstraint = true\n\t\t}\n\n\t\tif strings.Contains(dialector.ServerVersion, \"TiDB\") {\n\t\t\tdialector.Config.DontSupportRenameColumnUnique = true\n\t\t}\n\t}\n\n\t// register callbacks\n\tcallbackConfig := &callbacks.Config{\n\t\tCreateClauses: CreateClauses,\n\t\tQueryClauses:  QueryClauses,\n\t\tUpdateClauses: UpdateClauses,\n\t\tDeleteClauses: DeleteClauses,\n\t}\n\n\tif !dialector.Config.DisableWithReturning && withReturning {\n\t\tif !utils.Contains(callbackConfig.CreateClauses, \"RETURNING\") {\n\t\t\tcallbackConfig.CreateClauses = append(callbackConfig.CreateClauses, \"RETURNING\")\n\t\t}\n\n\t\tif !utils.Contains(callbackConfig.UpdateClauses, \"RETURNING\") {\n\t\t\tcallbackConfig.UpdateClauses = append(callbackConfig.UpdateClauses, \"RETURNING\")\n\t\t}\n\n\t\tif !utils.Contains(callbackConfig.DeleteClauses, \"RETURNING\") {\n\t\t\tcallbackConfig.DeleteClauses = append(callbackConfig.DeleteClauses, \"RETURNING\")\n\t\t}\n\t}\n\n\tcallbacks.RegisterDefaultCallbacks(db, callbackConfig)\n\n\tfor k, v := range dialector.ClauseBuilders() {\n\t\tdb.ClauseBuilders[k] = v\n\t}\n\treturn\n}\n\nconst (\n\t// ClauseOnConflict for clause.ClauseBuilder ON CONFLICT key\n\tClauseOnConflict = \"ON CONFLICT\"\n\t// ClauseValues for clause.ClauseBuilder VALUES key\n\tClauseValues = \"VALUES\"\n\t// ClauseFor for clause.ClauseBuilder FOR key\n\tClauseFor = \"FOR\"\n)\n\nfunc (dialector Dialector) ClauseBuilders() map[string]clause.ClauseBuilder {\n\tclauseBuilders := map[string]clause.ClauseBuilder{\n\t\tClauseOnConflict: func(c clause.Clause, builder clause.Builder) {\n\t\t\tonConflict, ok := c.Expression.(clause.OnConflict)\n\t\t\tif !ok {\n\t\t\t\tc.Build(builder)\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tbuilder.WriteString(\"ON DUPLICATE KEY UPDATE \")\n\t\t\tif len(onConflict.DoUpdates) == 0 {\n\t\t\t\tif s := builder.(*gorm.Statement).Schema; s != nil {\n\t\t\t\t\tvar column clause.Column\n\t\t\t\t\tonConflict.DoNothing = false\n\n\t\t\t\t\tif s.PrioritizedPrimaryField != nil {\n\t\t\t\t\t\tcolumn = clause.Column{Name: s.PrioritizedPrimaryField.DBName}\n\t\t\t\t\t} else if len(s.DBNames) > 0 {\n\t\t\t\t\t\tcolumn = clause.Column{Name: s.DBNames[0]}\n\t\t\t\t\t}\n\n\t\t\t\t\tif column.Name != \"\" {\n\t\t\t\t\t\tonConflict.DoUpdates = []clause.Assignment{{Column: column, Value: column}}\n\t\t\t\t\t}\n\n\t\t\t\t\tbuilder.(*gorm.Statement).AddClause(onConflict)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor idx, assignment := range onConflict.DoUpdates {\n\t\t\t\tif idx > 0 {\n\t\t\t\t\tbuilder.WriteByte(',')\n\t\t\t\t}\n\n\t\t\t\tbuilder.WriteQuoted(assignment.Column)\n\t\t\t\tbuilder.WriteByte('=')\n\t\t\t\tif column, ok := assignment.Value.(clause.Column); ok && column.Table == \"excluded\" {\n\t\t\t\t\tcolumn.Table = \"\"\n\t\t\t\t\tbuilder.WriteString(\"VALUES(\")\n\t\t\t\t\tbuilder.WriteQuoted(column)\n\t\t\t\t\tbuilder.WriteByte(')')\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.AddVar(builder, assignment.Value)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tClauseValues: func(c clause.Clause, builder clause.Builder) {\n\t\t\tif values, ok := c.Expression.(clause.Values); ok && len(values.Columns) == 0 {\n\t\t\t\tbuilder.WriteString(\"VALUES()\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tc.Build(builder)\n\t\t},\n\t}\n\n\tif dialector.Config.DontSupportForShareClause {\n\t\tclauseBuilders[ClauseFor] = func(c clause.Clause, builder clause.Builder) {\n\t\t\tif values, ok := c.Expression.(clause.Locking); ok && strings.EqualFold(values.Strength, \"SHARE\") {\n\t\t\t\tbuilder.WriteString(\"LOCK IN SHARE MODE\")\n\t\t\t\treturn\n\t\t\t}\n\t\t\tc.Build(builder)\n\t\t}\n\t}\n\n\treturn clauseBuilders\n}\n\nfunc (dialector Dialector) DefaultValueOf(field *schema.Field) clause.Expression {\n\treturn clause.Expr{SQL: \"DEFAULT\"}\n}\n\nfunc (dialector Dialector) Migrator(db *gorm.DB) gorm.Migrator {\n\treturn Migrator{\n\t\tMigrator: migrator.Migrator{\n\t\t\tConfig: migrator.Config{\n\t\t\t\tDB:        db,\n\t\t\t\tDialector: dialector,\n\t\t\t},\n\t\t},\n\t\tDialector: dialector,\n\t}\n}\n\nfunc (dialector Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v any) {\n\twriter.WriteByte('?')\n}\n\nfunc (dialector Dialector) QuoteTo(writer clause.Writer, str string) {\n\tvar (\n\t\tunderQuoted, selfQuoted bool\n\t\tcontinuousBacktick      int8\n\t\tshiftDelimiter          int8\n\t)\n\n\tfor _, v := range []byte(str) {\n\t\tswitch v {\n\t\tcase '`':\n\t\t\tcontinuousBacktick++\n\t\t\tif continuousBacktick == 2 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t}\n\t\tcase '.':\n\t\t\tif continuousBacktick > 0 || !selfQuoted {\n\t\t\t\tshiftDelimiter = 0\n\t\t\t\tunderQuoted = false\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t\twriter.WriteByte('`')\n\t\t\t}\n\t\t\twriter.WriteByte(v)\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif shiftDelimiter-continuousBacktick <= 0 && !underQuoted {\n\t\t\t\twriter.WriteByte('`')\n\t\t\t\tunderQuoted = true\n\t\t\t\tif selfQuoted = continuousBacktick > 0; selfQuoted {\n\t\t\t\t\tcontinuousBacktick -= 1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ; continuousBacktick > 0; continuousBacktick -= 1 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t}\n\n\t\t\twriter.WriteByte(v)\n\t\t}\n\t\tshiftDelimiter++\n\t}\n\n\tif continuousBacktick > 0 && !selfQuoted {\n\t\twriter.WriteString(\"``\")\n\t}\n\twriter.WriteByte('`')\n}\n\ntype localTimeInterface interface {\n\tIn(loc *time.Location) time.Time\n}\n\nfunc (dialector Dialector) Explain(sql string, vars ...any) string {\n\tif dialector.DSNConfig != nil && dialector.DSNConfig.Loc != nil {\n\t\tfor i, v := range vars {\n\t\t\tif p, ok := v.(localTimeInterface); ok {\n\t\t\t\tfunc(i int, t localTimeInterface) {\n\t\t\t\t\tdefer func() {\n\t\t\t\t\t\trecover()\n\t\t\t\t\t}()\n\t\t\t\t\tvars[i] = t.In(dialector.DSNConfig.Loc)\n\t\t\t\t}(i, p)\n\t\t\t}\n\t\t}\n\t}\n\treturn logger.ExplainSQL(sql, nil, `'`, vars...)\n}\n\nfunc (dialector Dialector) DataTypeOf(field *schema.Field) string {\n\tswitch field.DataType {\n\tcase schema.Bool:\n\t\treturn \"boolean\"\n\tcase schema.Int, schema.Uint:\n\t\treturn dialector.getSchemaIntAndUnitType(field)\n\tcase schema.Float:\n\t\treturn dialector.getSchemaFloatType(field)\n\tcase schema.String:\n\t\treturn dialector.getSchemaStringType(field)\n\tcase schema.Time:\n\t\treturn dialector.getSchemaTimeType(field)\n\tcase schema.Bytes:\n\t\treturn dialector.getSchemaBytesType(field)\n\tdefault:\n\t\treturn dialector.getSchemaCustomType(field)\n\t}\n}\n\nfunc (dialector Dialector) getSchemaFloatType(field *schema.Field) string {\n\tif field.Precision > 0 {\n\t\treturn fmt.Sprintf(\"decimal(%d, %d)\", field.Precision, field.Scale)\n\t}\n\n\tif field.Size <= 32 {\n\t\treturn \"float\"\n\t}\n\n\treturn \"double\"\n}\n\nfunc (dialector Dialector) getSchemaStringType(field *schema.Field) string {\n\tsize := field.Size\n\tif size == 0 {\n\t\tif dialector.DefaultStringSize > 0 {\n\t\t\tsize = int(dialector.DefaultStringSize)\n\t\t} else {\n\t\t\thasIndex := field.TagSettings[\"INDEX\"] != \"\" || field.TagSettings[\"UNIQUE\"] != \"\"\n\t\t\t// TEXT, GEOMETRY or JSON column can't have a default value\n\t\t\tif field.PrimaryKey || field.HasDefaultValue || hasIndex {\n\t\t\t\tsize = 191 // utf8mb4\n\t\t\t}\n\t\t}\n\t}\n\n\tif size >= 65536 && size <= int(math.Pow(2, 24)) {\n\t\treturn \"mediumtext\"\n\t}\n\n\tif size > int(math.Pow(2, 24)) || size <= 0 {\n\t\treturn \"longtext\"\n\t}\n\n\treturn fmt.Sprintf(\"varchar(%d)\", size)\n}\n\nfunc (dialector Dialector) getSchemaTimeType(field *schema.Field) string {\n\tif !dialector.DisableDatetimePrecision && field.Precision == 0 && field.TagSettings[\"PRECISION\"] == \"\" {\n\t\tfield.Precision = *dialector.DefaultDatetimePrecision\n\t}\n\n\tvar precision string\n\tif field.Precision > 0 {\n\t\tprecision = fmt.Sprintf(\"(%d)\", field.Precision)\n\t}\n\n\tif field.NotNull || field.PrimaryKey {\n\t\treturn \"datetime\" + precision\n\t}\n\treturn \"datetime\" + precision + \" NULL\"\n}\n\nfunc (dialector Dialector) getSchemaBytesType(field *schema.Field) string {\n\tif field.Size > 0 && field.Size < 65536 {\n\t\treturn fmt.Sprintf(\"varbinary(%d)\", field.Size)\n\t}\n\n\tif field.Size >= 65536 && field.Size <= int(math.Pow(2, 24)) {\n\t\treturn \"mediumblob\"\n\t}\n\n\treturn \"longblob\"\n}\n\n// autoRandomType\n// field.DataType MUST be `schema.Int` or `schema.Uint`\n// Judgement logic:\n// 1. Is PrimaryKey;\n// 2. Has default value;\n// 3. Default value is \"auto_random()\";\n// 4. IGNORE the field.Size, it MUST be bigint;\n// 5. CLEAR the default tag, and return true;\n// 6. Otherwise, return false.\nfunc autoRandomType(field *schema.Field) (bool, string) {\n\tif field.PrimaryKey && field.HasDefaultValue &&\n\t\tstrings.ToLower(strings.TrimSpace(field.DefaultValue)) == AutoRandomTag {\n\t\tfield.DefaultValue = \"\"\n\n\t\tsqlType := \"bigint\"\n\t\tif field.DataType == schema.Uint {\n\t\t\tsqlType += \" unsigned\"\n\t\t}\n\t\tsqlType += \" auto_random\"\n\t\treturn true, sqlType\n\t}\n\n\treturn false, \"\"\n}\n\nfunc (dialector Dialector) getSchemaIntAndUnitType(field *schema.Field) string {\n\tif autoRandom, typeString := autoRandomType(field); autoRandom {\n\t\treturn typeString\n\t}\n\n\tconstraint := func(sqlType string) string {\n\t\tif field.DataType == schema.Uint {\n\t\t\tsqlType += \" unsigned\"\n\t\t}\n\t\tif field.AutoIncrement {\n\t\t\tsqlType += \" AUTO_INCREMENT\"\n\t\t}\n\t\treturn sqlType\n\t}\n\n\tswitch {\n\tcase field.Size <= 8:\n\t\treturn constraint(\"tinyint\")\n\tcase field.Size <= 16:\n\t\treturn constraint(\"smallint\")\n\tcase field.Size <= 24:\n\t\treturn constraint(\"mediumint\")\n\tcase field.Size <= 32:\n\t\treturn constraint(\"int\")\n\tdefault:\n\t\treturn constraint(\"bigint\")\n\t}\n}\n\nfunc (dialector Dialector) getSchemaCustomType(field *schema.Field) string {\n\tsqlType := string(field.DataType)\n\n\tif field.AutoIncrement && !strings.Contains(strings.ToLower(sqlType), \" auto_increment\") {\n\t\tsqlType += \" AUTO_INCREMENT\"\n\t}\n\n\treturn sqlType\n}\n\nfunc (dialector Dialector) SavePoint(tx *gorm.DB, name string) error {\n\treturn tx.Exec(\"SAVEPOINT \" + name).Error\n}\n\nfunc (dialector Dialector) RollbackTo(tx *gorm.DB, name string) error {\n\treturn tx.Exec(\"ROLLBACK TO SAVEPOINT \" + name).Error\n}\n\n// checkVersion newer or equal returns true, old returns false\nfunc checkVersion(newVersion, oldVersion string) bool {\n\tif newVersion == oldVersion {\n\t\treturn true\n\t}\n\n\tvar (\n\t\tversionTrimmerRegexp = regexp.MustCompile(`^(\\d+).*$`)\n\n\t\tnewVersions = strings.Split(newVersion, \".\")\n\t\toldVersions = strings.Split(oldVersion, \".\")\n\t)\n\tfor idx, nv := range newVersions {\n\t\tif len(oldVersions) <= idx {\n\t\t\treturn true\n\t\t}\n\n\t\tnvi, _ := strconv.Atoi(versionTrimmerRegexp.ReplaceAllString(nv, \"$1\"))\n\t\tovi, _ := strconv.Atoi(versionTrimmerRegexp.ReplaceAllString(oldVersions[idx], \"$1\"))\n\t\tif nvi == ovi {\n\t\t\tcontinue\n\t\t}\n\t\treturn nvi > ovi\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "gossh/gorm/driver/pgsql/error_translator.go",
    "content": "package pgsql\n\nimport (\n\t\"encoding/json\"\n\n\t\"gossh/gorm\"\n)\n\nvar errCodes = map[string]error{\n\t\"23505\": gorm.ErrDuplicatedKey,\n\t\"23503\": gorm.ErrForeignKeyViolated,\n\t\"42703\": gorm.ErrInvalidField,\n}\n\ntype ErrMessage struct {\n\tCode     string\n\tSeverity string\n\tMessage  string\n}\n\n// Translate it will translate the error to native gorm errors.\n// Since currently gorm supporting both pgx and pg drivers, only checking for pgx PgError types is not enough for translating errors, so we have additional error json marshal fallback.\nfunc (dialector Dialector) Translate(err error) error {\n\n\tparsedErr, marshalErr := json.Marshal(err)\n\tif marshalErr != nil {\n\t\treturn err\n\t}\n\n\tvar errMsg ErrMessage\n\tunmarshalErr := json.Unmarshal(parsedErr, &errMsg)\n\tif unmarshalErr != nil {\n\t\treturn err\n\t}\n\n\tif translatedErr, found := errCodes[errMsg.Code]; found {\n\t\treturn translatedErr\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "gossh/gorm/driver/pgsql/migrator.go",
    "content": "package pgsql\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n)\n\n// See https://stackoverflow.com/questions/2204058/list-columns-with-indexes-in-postgresql\n// Here are some changes:\n// - use `LEFT JOIN` instead of `CROSS JOIN`\n// - exclude indexes used to support constraints (they are auto-generated)\nconst indexSql = `\nSELECT\n\tct.relname AS table_name,\n\tci.relname AS index_name,\n\ti.indisunique AS non_unique,\n\ti.indisprimary AS primary,\n\ta.attname AS column_name\nFROM\n\tpg_index i\n\tLEFT JOIN pg_class ct ON ct.oid = i.indrelid\n\tLEFT JOIN pg_class ci ON ci.oid = i.indexrelid\n\tLEFT JOIN pg_attribute a ON a.attrelid = ct.oid\n\tLEFT JOIN pg_constraint con ON con.conindid = i.indexrelid\nWHERE\n\ta.attnum = ANY(i.indkey)\n\tAND con.oid IS NULL\n\tAND ct.relkind = 'r'\n\tAND ct.relname = ?\n`\n\nvar typeAliasMap = map[string][]string{\n\t\"int2\":                     {\"smallint\"},\n\t\"int4\":                     {\"integer\"},\n\t\"int8\":                     {\"bigint\"},\n\t\"smallint\":                 {\"int2\"},\n\t\"integer\":                  {\"int4\"},\n\t\"bigint\":                   {\"int8\"},\n\t\"decimal\":                  {\"numeric\"},\n\t\"numeric\":                  {\"decimal\"},\n\t\"timestamptz\":              {\"timestamp with time zone\"},\n\t\"timestamp with time zone\": {\"timestamptz\"},\n\t\"bool\":                     {\"boolean\"},\n\t\"boolean\":                  {\"bool\"},\n}\n\ntype Migrator struct {\n\tmigrator.Migrator\n}\n\n// select querys ignore dryrun\nfunc (m Migrator) queryRaw(sql string, values ...any) (tx *gorm.DB) {\n\tqueryTx := m.DB\n\tif m.DB.DryRun {\n\t\tqueryTx = m.DB.Session(&gorm.Session{})\n\t\tqueryTx.DryRun = false\n\t}\n\treturn queryTx.Raw(sql, values...)\n}\n\nfunc (m Migrator) CurrentDatabase() (name string) {\n\tm.queryRaw(\"SELECT CURRENT_DATABASE()\").Scan(&name)\n\treturn\n}\n\nfunc (m Migrator) BuildIndexOptions(opts []schema.IndexOption, stmt *gorm.Statement) (results []any) {\n\tfor _, opt := range opts {\n\t\tstr := stmt.Quote(opt.DBName)\n\t\tif opt.Expression != \"\" {\n\t\t\tstr = opt.Expression\n\t\t}\n\n\t\tif opt.Collate != \"\" {\n\t\t\tstr += \" COLLATE \" + opt.Collate\n\t\t}\n\n\t\tif opt.Sort != \"\" {\n\t\t\tstr += \" \" + opt.Sort\n\t\t}\n\t\tresults = append(results, clause.Expr{SQL: str})\n\t}\n\treturn\n}\n\nfunc (m Migrator) HasIndex(value any, name string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\tname = idx.Name\n\t\t\t}\n\t\t}\n\t\tcurrentSchema, curTable := m.CurrentSchema(stmt, stmt.Table)\n\t\treturn m.queryRaw(\n\t\t\t\"SELECT count(*) FROM pg_indexes WHERE tablename = ? AND indexname = ? AND schemaname = ?\", curTable, name, currentSchema,\n\t\t).Scan(&count).Error\n\t})\n\n\treturn count > 0\n}\n\nfunc (m Migrator) CreateIndex(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\topts := m.BuildIndexOptions(idx.Fields, stmt)\n\t\t\t\tvalues := []any{clause.Column{Name: idx.Name}, m.CurrentTable(stmt), opts}\n\n\t\t\t\tcreateIndexSQL := \"CREATE \"\n\t\t\t\tif idx.Class != \"\" {\n\t\t\t\t\tcreateIndexSQL += idx.Class + \" \"\n\t\t\t\t}\n\t\t\t\tcreateIndexSQL += \"INDEX \"\n\n\t\t\t\tif strings.TrimSpace(strings.ToUpper(idx.Option)) == \"CONCURRENTLY\" {\n\t\t\t\t\tcreateIndexSQL += \"CONCURRENTLY \"\n\t\t\t\t}\n\n\t\t\t\tcreateIndexSQL += \"IF NOT EXISTS ? ON ?\"\n\n\t\t\t\tif idx.Type != \"\" {\n\t\t\t\t\tcreateIndexSQL += \" USING \" + idx.Type + \"(?)\"\n\t\t\t\t} else {\n\t\t\t\t\tcreateIndexSQL += \" ?\"\n\t\t\t\t}\n\n\t\t\t\tif idx.Where != \"\" {\n\t\t\t\t\tcreateIndexSQL += \" WHERE \" + idx.Where\n\t\t\t\t}\n\n\t\t\t\treturn m.DB.Exec(createIndexSQL, values...).Error\n\t\t\t}\n\t\t}\n\n\t\treturn fmt.Errorf(\"failed to create index with name %v\", name)\n\t})\n}\n\nfunc (m Migrator) RenameIndex(value any, oldName, newName string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\treturn m.DB.Exec(\n\t\t\t\"ALTER INDEX ? RENAME TO ?\",\n\t\t\tclause.Column{Name: oldName}, clause.Column{Name: newName},\n\t\t).Error\n\t})\n}\n\nfunc (m Migrator) DropIndex(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\tname = idx.Name\n\t\t\t}\n\t\t}\n\n\t\treturn m.DB.Exec(\"DROP INDEX ?\", clause.Column{Name: name}).Error\n\t})\n}\n\nfunc (m Migrator) GetTables() (tableList []string, err error) {\n\tcurrentSchema, _ := m.CurrentSchema(m.DB.Statement, \"\")\n\treturn tableList, m.queryRaw(\"SELECT table_name FROM information_schema.tables WHERE table_schema = ? AND table_type = ?\", currentSchema, \"BASE TABLE\").Scan(&tableList).Error\n}\n\nfunc (m Migrator) CreateTable(values ...any) (err error) {\n\tif err = m.Migrator.CreateTable(values...); err != nil {\n\t\treturn\n\t}\n\tfor _, value := range m.ReorderModels(values, false) {\n\t\tif err = m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t\tif stmt.Schema != nil {\n\t\t\t\tfor _, fieldName := range stmt.Schema.DBNames {\n\t\t\t\t\tfield := stmt.Schema.FieldsByDBName[fieldName]\n\t\t\t\t\tif field.Comment != \"\" {\n\t\t\t\t\t\tif err := m.DB.Exec(\n\t\t\t\t\t\t\t\"COMMENT ON COLUMN ?.? IS ?\",\n\t\t\t\t\t\t\tm.CurrentTable(stmt), clause.Column{Name: field.DBName}, gorm.Expr(m.Migrator.Dialector.Explain(\"$1\", field.Comment)),\n\t\t\t\t\t\t).Error; err != nil {\n\t\t\t\t\t\t\treturn err\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\treturn nil\n\t\t}); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\nfunc (m Migrator) HasTable(value any) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tcurrentSchema, curTable := m.CurrentSchema(stmt, stmt.Table)\n\t\treturn m.queryRaw(\"SELECT count(*) FROM information_schema.tables WHERE table_schema = ? AND table_name = ? AND table_type = ?\", currentSchema, curTable, \"BASE TABLE\").Scan(&count).Error\n\t})\n\treturn count > 0\n}\n\nfunc (m Migrator) DropTable(values ...any) error {\n\tvalues = m.ReorderModels(values, false)\n\ttx := m.DB.Session(&gorm.Session{})\n\tfor i := len(values) - 1; i >= 0; i-- {\n\t\tif err := m.RunWithValue(values[i], func(stmt *gorm.Statement) error {\n\t\t\treturn tx.Exec(\"DROP TABLE IF EXISTS ? CASCADE\", m.CurrentTable(stmt)).Error\n\t\t}); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (m Migrator) AddColumn(value any, field string) error {\n\tif err := m.Migrator.AddColumn(value, field); err != nil {\n\t\treturn err\n\t}\n\tm.resetPreparedStmts()\n\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\t\tif field.Comment != \"\" {\n\t\t\t\t\tif err := m.DB.Exec(\n\t\t\t\t\t\t\"COMMENT ON COLUMN ?.? IS ?\",\n\t\t\t\t\t\tm.CurrentTable(stmt), clause.Column{Name: field.DBName}, gorm.Expr(m.Migrator.Dialector.Explain(\"$1\", field.Comment)),\n\t\t\t\t\t).Error; 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\treturn nil\n\t})\n}\n\nfunc (m Migrator) HasColumn(value any, field string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tname := field\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\t\tname = field.DBName\n\t\t\t}\n\t\t}\n\n\t\tcurrentSchema, curTable := m.CurrentSchema(stmt, stmt.Table)\n\t\treturn m.queryRaw(\n\t\t\t\"SELECT count(*) FROM INFORMATION_SCHEMA.columns WHERE table_schema = ? AND table_name = ? AND column_name = ?\",\n\t\t\tcurrentSchema, curTable, name,\n\t\t).Scan(&count).Error\n\t})\n\n\treturn count > 0\n}\n\nfunc (m Migrator) MigrateColumn(value any, field *schema.Field, columnType gorm.ColumnType) error {\n\t// skip primary field\n\tif !field.PrimaryKey {\n\t\tif err := m.Migrator.MigrateColumn(value, field, columnType); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tvar description string\n\t\tcurrentSchema, curTable := m.CurrentSchema(stmt, stmt.Table)\n\t\tvalues := []any{currentSchema, curTable, field.DBName, stmt.Table, currentSchema}\n\t\tcheckSQL := \"SELECT description FROM pg_catalog.pg_description \"\n\t\tcheckSQL += \"WHERE objsubid = (SELECT ordinal_position FROM information_schema.columns WHERE table_schema = ? AND table_name = ? AND column_name = ?) \"\n\t\tcheckSQL += \"AND objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = ? AND relnamespace = \"\n\t\tcheckSQL += \"(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = ?))\"\n\t\tm.queryRaw(checkSQL, values...).Scan(&description)\n\n\t\tcomment := strings.Trim(field.Comment, \"'\")\n\t\tcomment = strings.Trim(comment, `\"`)\n\t\tif field.Comment != \"\" && comment != description {\n\t\t\tif err := m.DB.Exec(\n\t\t\t\t\"COMMENT ON COLUMN ?.? IS ?\",\n\t\t\t\tm.CurrentTable(stmt), clause.Column{Name: field.DBName}, gorm.Expr(m.Migrator.Dialector.Explain(\"$1\", field.Comment)),\n\t\t\t).Error; err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// AlterColumn alter value's `field` column' type based on schema definition\nfunc (m Migrator) AlterColumn(value any, field string) error {\n\terr := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\t\tvar (\n\t\t\t\t\tcolumnTypes, _  = m.DB.Migrator().ColumnTypes(value)\n\t\t\t\t\tfieldColumnType *migrator.ColumnType\n\t\t\t\t)\n\t\t\t\tfor _, columnType := range columnTypes {\n\t\t\t\t\tif columnType.Name() == field.DBName {\n\t\t\t\t\t\tfieldColumnType, _ = columnType.(*migrator.ColumnType)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfileType := clause.Expr{SQL: m.DataTypeOf(field)}\n\t\t\t\t// check for typeName and SQL name\n\t\t\t\tisSameType := true\n\t\t\t\tif fieldColumnType.DatabaseTypeName() != fileType.SQL {\n\t\t\t\t\tisSameType = false\n\t\t\t\t\t// if different, also check for aliases\n\t\t\t\t\taliases := m.GetTypeAliases(fieldColumnType.DatabaseTypeName())\n\t\t\t\t\tfor _, alias := range aliases {\n\t\t\t\t\t\tif strings.HasPrefix(fileType.SQL, alias) {\n\t\t\t\t\t\t\tisSameType = true\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// not same, migrate\n\t\t\t\tif !isSameType {\n\t\t\t\t\tfiledColumnAutoIncrement, _ := fieldColumnType.AutoIncrement()\n\t\t\t\t\tif field.AutoIncrement && filedColumnAutoIncrement { // update\n\t\t\t\t\t\tserialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)\n\t\t\t\t\t\tif t, _ := fieldColumnType.ColumnType(); t != serialDatabaseType {\n\t\t\t\t\t\t\tif err := m.UpdateSequence(m.DB, stmt, field, serialDatabaseType); err != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if field.AutoIncrement && !filedColumnAutoIncrement { // create\n\t\t\t\t\t\tserialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)\n\t\t\t\t\t\tif err := m.CreateSequence(m.DB, stmt, field, serialDatabaseType); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if !field.AutoIncrement && filedColumnAutoIncrement { // delete\n\t\t\t\t\t\tif err := m.DeleteSequence(m.DB, stmt, field, fileType); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif err := m.modifyColumn(stmt, field, fileType, fieldColumnType); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif null, _ := fieldColumnType.Nullable(); null == field.NotNull {\n\t\t\t\t\tif field.NotNull {\n\t\t\t\t\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? SET NOT NULL\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}).Error; err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? DROP NOT NULL\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}).Error; err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif v, ok := fieldColumnType.DefaultValue(); (field.DefaultValueInterface == nil && ok) || v != field.DefaultValue {\n\t\t\t\t\tif field.HasDefaultValue && (field.DefaultValueInterface != nil || field.DefaultValue != \"\") {\n\t\t\t\t\t\tif field.DefaultValueInterface != nil {\n\t\t\t\t\t\t\tdefaultStmt := &gorm.Statement{Vars: []any{field.DefaultValueInterface}}\n\t\t\t\t\t\t\tm.Dialector.BindVarTo(defaultStmt, defaultStmt, field.DefaultValueInterface)\n\t\t\t\t\t\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? SET DEFAULT ?\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}, clause.Expr{SQL: m.Dialector.Explain(defaultStmt.SQL.String(), field.DefaultValueInterface)}).Error; err != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if field.DefaultValue != \"(-)\" {\n\t\t\t\t\t\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? SET DEFAULT ?\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}, clause.Expr{SQL: field.DefaultValue}).Error; err != nil {\n\t\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? DROP DEFAULT\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}, clause.Expr{SQL: field.DefaultValue}).Error; err != nil {\n\t\t\t\t\t\t\t\treturn err\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\treturn nil\n\t\t\t}\n\t\t}\n\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", field)\n\t})\n\n\tif err != nil {\n\t\treturn err\n\t}\n\tm.resetPreparedStmts()\n\treturn nil\n}\n\nfunc (m Migrator) modifyColumn(stmt *gorm.Statement, field *schema.Field, targetType clause.Expr, existingColumn *migrator.ColumnType) error {\n\talterSQL := \"ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?\"\n\tisUncastableDefaultValue := false\n\n\tif targetType.SQL == \"boolean\" {\n\t\tswitch existingColumn.DatabaseTypeName() {\n\t\tcase \"int2\", \"int8\", \"numeric\":\n\t\t\talterSQL = \"ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::int::?\"\n\t\t}\n\t\tisUncastableDefaultValue = true\n\t}\n\n\tif dv, _ := existingColumn.DefaultValue(); dv != \"\" && isUncastableDefaultValue {\n\t\tif err := m.DB.Exec(\"ALTER TABLE ? ALTER COLUMN ? DROP DEFAULT\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}).Error; err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tif err := m.DB.Exec(alterSQL, m.CurrentTable(stmt), clause.Column{Name: field.DBName}, targetType, clause.Column{Name: field.DBName}, targetType).Error; err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (m Migrator) HasConstraint(value any, name string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t}\n\t\tcurrentSchema, curTable := m.CurrentSchema(stmt, table)\n\n\t\treturn m.queryRaw(\n\t\t\t\"SELECT count(*) FROM INFORMATION_SCHEMA.table_constraints WHERE table_schema = ? AND table_name = ? AND constraint_name = ?\",\n\t\t\tcurrentSchema, curTable, name,\n\t\t).Scan(&count).Error\n\t})\n\n\treturn count > 0\n}\n\nfunc (m Migrator) ColumnTypes(value any) (columnTypes []gorm.ColumnType, err error) {\n\tcolumnTypes = make([]gorm.ColumnType, 0)\n\terr = m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tvar (\n\t\t\tcurrentDatabase      = m.DB.Migrator().CurrentDatabase()\n\t\t\tcurrentSchema, table = m.CurrentSchema(stmt, stmt.Table)\n\t\t\tcolumns, err         = m.queryRaw(\n\t\t\t\t\"SELECT c.column_name, c.is_nullable = 'YES', c.udt_name, c.character_maximum_length, c.numeric_precision, c.numeric_precision_radix, c.numeric_scale, c.datetime_precision, 8 * typlen, c.column_default, pd.description, c.identity_increment FROM information_schema.columns AS c JOIN pg_type AS pgt ON c.udt_name = pgt.typname LEFT JOIN pg_catalog.pg_description as pd ON pd.objsubid = c.ordinal_position AND pd.objoid = (SELECT oid FROM pg_catalog.pg_class WHERE relname = c.table_name AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = c.table_schema)) where table_catalog = ? AND table_schema = ? AND table_name = ?\",\n\t\t\t\tcurrentDatabase, currentSchema, table).Rows()\n\t\t)\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor columns.Next() {\n\t\t\tvar (\n\t\t\t\tcolumn = &migrator.ColumnType{\n\t\t\t\t\tPrimaryKeyValue: sql.NullBool{Valid: true},\n\t\t\t\t\tUniqueValue:     sql.NullBool{Valid: true},\n\t\t\t\t}\n\t\t\t\tdatetimePrecision sql.NullInt64\n\t\t\t\tradixValue        sql.NullInt64\n\t\t\t\ttypeLenValue      sql.NullInt64\n\t\t\t\tidentityIncrement sql.NullString\n\t\t\t)\n\n\t\t\terr = columns.Scan(\n\t\t\t\t&column.NameValue, &column.NullableValue, &column.DataTypeValue, &column.LengthValue, &column.DecimalSizeValue,\n\t\t\t\t&radixValue, &column.ScaleValue, &datetimePrecision, &typeLenValue, &column.DefaultValueValue, &column.CommentValue, &identityIncrement,\n\t\t\t)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tif typeLenValue.Valid && typeLenValue.Int64 > 0 {\n\t\t\t\tcolumn.LengthValue = typeLenValue\n\t\t\t}\n\n\t\t\tif (strings.HasPrefix(column.DefaultValueValue.String, \"nextval('\") &&\n\t\t\t\tstrings.HasSuffix(column.DefaultValueValue.String, \"seq'::regclass)\")) || (identityIncrement.Valid && identityIncrement.String != \"\") {\n\t\t\t\tcolumn.AutoIncrementValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\tcolumn.DefaultValueValue = sql.NullString{}\n\t\t\t}\n\n\t\t\tif column.DefaultValueValue.Valid {\n\t\t\t\tcolumn.DefaultValueValue.String = parseDefaultValueValue(column.DefaultValueValue.String)\n\t\t\t}\n\n\t\t\tif datetimePrecision.Valid {\n\t\t\t\tcolumn.DecimalSizeValue = datetimePrecision\n\t\t\t}\n\n\t\t\tcolumnTypes = append(columnTypes, column)\n\t\t}\n\t\tcolumns.Close()\n\n\t\t// assign sql column type\n\t\t{\n\t\t\trows, rowsErr := m.GetRows(currentSchema, table)\n\t\t\tif rowsErr != nil {\n\t\t\t\treturn rowsErr\n\t\t\t}\n\t\t\trawColumnTypes, err := rows.ColumnTypes()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfor _, columnType := range columnTypes {\n\t\t\t\tfor _, c := range rawColumnTypes {\n\t\t\t\t\tif c.Name() == columnType.Name() {\n\t\t\t\t\t\tcolumnType.(*migrator.ColumnType).SQLColumnType = c\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\trows.Close()\n\t\t}\n\n\t\t// check primary, unique field\n\t\t{\n\t\t\tcolumnTypeRows, err := m.queryRaw(\"SELECT constraint_name FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = ? AND c.table_schema = ? AND c.table_name = ? AND constraint_type = ?\", currentDatabase, currentSchema, table, \"UNIQUE\").Rows()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tuniqueContraints := map[string]int{}\n\t\t\tfor columnTypeRows.Next() {\n\t\t\t\tvar constraintName string\n\t\t\t\tcolumnTypeRows.Scan(&constraintName)\n\t\t\t\tuniqueContraints[constraintName]++\n\t\t\t}\n\t\t\tcolumnTypeRows.Close()\n\n\t\t\tcolumnTypeRows, err = m.queryRaw(\"SELECT c.column_name, constraint_name, constraint_type FROM information_schema.table_constraints tc JOIN information_schema.constraint_column_usage AS ccu USING (constraint_schema, constraint_catalog, table_name, constraint_name) JOIN information_schema.columns AS c ON c.table_schema = tc.constraint_schema AND tc.table_name = c.table_name AND ccu.column_name = c.column_name WHERE constraint_type IN ('PRIMARY KEY', 'UNIQUE') AND c.table_catalog = ? AND c.table_schema = ? AND c.table_name = ?\", currentDatabase, currentSchema, table).Rows()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tfor columnTypeRows.Next() {\n\t\t\t\tvar name, constraintName, columnType string\n\t\t\t\tcolumnTypeRows.Scan(&name, &constraintName, &columnType)\n\t\t\t\tfor _, c := range columnTypes {\n\t\t\t\t\tmc := c.(*migrator.ColumnType)\n\t\t\t\t\tif mc.NameValue.String == name {\n\t\t\t\t\t\tswitch columnType {\n\t\t\t\t\t\tcase \"PRIMARY KEY\":\n\t\t\t\t\t\t\tmc.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t\tcase \"UNIQUE\":\n\t\t\t\t\t\t\tif uniqueContraints[constraintName] == 1 {\n\t\t\t\t\t\t\t\tmc.UniqueValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tcolumnTypeRows.Close()\n\t\t}\n\n\t\t// check column type\n\t\t{\n\t\t\tdataTypeRows, err := m.queryRaw(`SELECT a.attname as column_name, format_type(a.atttypid, a.atttypmod) AS data_type\n\t\tFROM pg_attribute a JOIN pg_class b ON a.attrelid = b.oid AND relnamespace = (SELECT oid FROM pg_catalog.pg_namespace WHERE nspname = ?)\n\t\tWHERE a.attnum > 0 -- hide internal columns\n\t\tAND NOT a.attisdropped -- hide deleted columns\n\t\tAND b.relname = ?`, currentSchema, table).Rows()\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tfor dataTypeRows.Next() {\n\t\t\t\tvar name, dataType string\n\t\t\t\tdataTypeRows.Scan(&name, &dataType)\n\t\t\t\tfor _, c := range columnTypes {\n\t\t\t\t\tmc := c.(*migrator.ColumnType)\n\t\t\t\t\tif mc.NameValue.String == name {\n\t\t\t\t\t\tmc.ColumnTypeValue = sql.NullString{String: dataType, Valid: true}\n\t\t\t\t\t\t// Handle array type: _text -> text[] , _int4 -> integer[]\n\t\t\t\t\t\t// Not support array size limits and array size limits because:\n\t\t\t\t\t\t// https://www.postgresql.org/docs/current/arrays.html#ARRAYS-DECLARATION\n\t\t\t\t\t\tif strings.HasPrefix(mc.DataTypeValue.String, \"_\") {\n\t\t\t\t\t\t\tmc.DataTypeValue = sql.NullString{String: dataType, Valid: true}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataTypeRows.Close()\n\t\t}\n\n\t\treturn err\n\t})\n\treturn\n}\n\nfunc (m Migrator) GetRows(currentSchema any, table any) (*sql.Rows, error) {\n\tname := table.(string)\n\tif _, ok := currentSchema.(string); ok {\n\t\tname = fmt.Sprintf(\"%v.%v\", currentSchema, table)\n\t}\n\n\treturn m.DB.Session(&gorm.Session{}).Table(name).Limit(1).Scopes(func(d *gorm.DB) *gorm.DB {\n\t\tdialector, _ := m.Dialector.(Dialector)\n\t\t// use simple protocol\n\t\tif !m.DB.PrepareStmt && (dialector.Config != nil && (dialector.Config.DriverName == \"\" || dialector.Config.DriverName == \"pgx\")) {\n\t\t\t//huang d.Statement.Vars = append([]interface{}{pgx.QueryExecModeSimpleProtocol}, d.Statement.Vars...)\n\t\t}\n\t\treturn d\n\t}).Rows()\n}\n\nfunc (m Migrator) CurrentSchema(stmt *gorm.Statement, table string) (any, any) {\n\tif strings.Contains(table, \".\") {\n\t\tif tables := strings.Split(table, `.`); len(tables) == 2 {\n\t\t\treturn tables[0], tables[1]\n\t\t}\n\t}\n\n\tif stmt.TableExpr != nil {\n\t\tif tables := strings.Split(stmt.TableExpr.SQL, `\".\"`); len(tables) == 2 {\n\t\t\treturn strings.TrimPrefix(tables[0], `\"`), table\n\t\t}\n\t}\n\treturn clause.Expr{SQL: \"CURRENT_SCHEMA()\"}, table\n}\n\nfunc (m Migrator) CreateSequence(tx *gorm.DB, stmt *gorm.Statement, field *schema.Field,\n\tserialDatabaseType string) (err error) {\n\n\t_, table := m.CurrentSchema(stmt, stmt.Table)\n\ttableName := table.(string)\n\n\tsequenceName := strings.Join([]string{tableName, field.DBName, \"seq\"}, \"_\")\n\tif err = tx.Exec(`CREATE SEQUENCE IF NOT EXISTS ? AS ?`, clause.Expr{SQL: sequenceName},\n\t\tclause.Expr{SQL: serialDatabaseType}).Error; err != nil {\n\t\treturn err\n\t}\n\n\tif err := tx.Exec(\"ALTER TABLE ? ALTER COLUMN ? SET DEFAULT nextval('?')\",\n\t\tclause.Expr{SQL: tableName}, clause.Expr{SQL: field.DBName}, clause.Expr{SQL: sequenceName}).Error; err != nil {\n\t\treturn err\n\t}\n\n\tif err := tx.Exec(\"ALTER SEQUENCE ? OWNED BY ?.?\",\n\t\tclause.Expr{SQL: sequenceName}, clause.Expr{SQL: tableName}, clause.Expr{SQL: field.DBName}).Error; err != nil {\n\t\treturn err\n\t}\n\treturn\n}\n\nfunc (m Migrator) UpdateSequence(tx *gorm.DB, stmt *gorm.Statement, field *schema.Field,\n\tserialDatabaseType string) (err error) {\n\n\tsequenceName, err := m.getColumnSequenceName(tx, stmt, field)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err = tx.Exec(`ALTER SEQUENCE IF EXISTS ? AS ?`, clause.Expr{SQL: sequenceName}, clause.Expr{SQL: serialDatabaseType}).Error; err != nil {\n\t\treturn err\n\t}\n\n\tif err := tx.Exec(\"ALTER TABLE ? ALTER COLUMN ? TYPE ?\",\n\t\tm.CurrentTable(stmt), clause.Expr{SQL: field.DBName}, clause.Expr{SQL: serialDatabaseType}).Error; err != nil {\n\t\treturn err\n\t}\n\treturn\n}\n\nfunc (m Migrator) DeleteSequence(tx *gorm.DB, stmt *gorm.Statement, field *schema.Field,\n\tfileType clause.Expr) (err error) {\n\n\tsequenceName, err := m.getColumnSequenceName(tx, stmt, field)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := tx.Exec(\"ALTER TABLE ? ALTER COLUMN ? TYPE ?\", m.CurrentTable(stmt), clause.Column{Name: field.DBName}, fileType).Error; err != nil {\n\t\treturn err\n\t}\n\n\tif err := tx.Exec(\"ALTER TABLE ? ALTER COLUMN ? DROP DEFAULT\",\n\t\tm.CurrentTable(stmt), clause.Expr{SQL: field.DBName}).Error; err != nil {\n\t\treturn err\n\t}\n\n\tif err = tx.Exec(`DROP SEQUENCE IF EXISTS ?`, clause.Expr{SQL: sequenceName}).Error; err != nil {\n\t\treturn err\n\t}\n\n\treturn\n}\n\nfunc (m Migrator) getColumnSequenceName(tx *gorm.DB, stmt *gorm.Statement, field *schema.Field) (\n\tsequenceName string, err error) {\n\t_, table := m.CurrentSchema(stmt, stmt.Table)\n\n\t// DefaultValueValue is reset by ColumnTypes, search again.\n\tvar columnDefault string\n\terr = tx.Raw(\n\t\t`SELECT column_default FROM information_schema.columns WHERE table_name = ? AND column_name = ?`,\n\t\ttable, field.DBName).Scan(&columnDefault).Error\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\tsequenceName = strings.TrimSuffix(\n\t\tstrings.TrimPrefix(columnDefault, `nextval('`),\n\t\t`'::regclass)`,\n\t)\n\treturn\n}\n\nfunc (m Migrator) GetIndexes(value any) ([]gorm.Index, error) {\n\tindexes := make([]gorm.Index, 0)\n\n\terr := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tresult := make([]*Index, 0)\n\t\tscanErr := m.queryRaw(indexSql, stmt.Table).Scan(&result).Error\n\t\tif scanErr != nil {\n\t\t\treturn scanErr\n\t\t}\n\t\tindexMap := groupByIndexName(result)\n\t\tfor _, idx := range indexMap {\n\t\t\ttempIdx := &migrator.Index{\n\t\t\t\tTableName: idx[0].TableName,\n\t\t\t\tNameValue: idx[0].IndexName,\n\t\t\t\tPrimaryKeyValue: sql.NullBool{\n\t\t\t\t\tBool:  idx[0].Primary,\n\t\t\t\t\tValid: true,\n\t\t\t\t},\n\t\t\t\tUniqueValue: sql.NullBool{\n\t\t\t\t\tBool:  idx[0].NonUnique,\n\t\t\t\t\tValid: true,\n\t\t\t\t},\n\t\t\t}\n\t\t\tfor _, x := range idx {\n\t\t\t\ttempIdx.ColumnList = append(tempIdx.ColumnList, x.ColumnName)\n\t\t\t}\n\t\t\tindexes = append(indexes, tempIdx)\n\t\t}\n\t\treturn nil\n\t})\n\treturn indexes, err\n}\n\n// Index table index info\ntype Index struct {\n\tTableName  string `gorm:\"column:table_name\"`\n\tColumnName string `gorm:\"column:column_name\"`\n\tIndexName  string `gorm:\"column:index_name\"`\n\tNonUnique  bool   `gorm:\"column:non_unique\"`\n\tPrimary    bool   `gorm:\"column:primary\"`\n}\n\nfunc groupByIndexName(indexList []*Index) map[string][]*Index {\n\tcolumnIndexMap := make(map[string][]*Index, len(indexList))\n\tfor _, idx := range indexList {\n\t\tcolumnIndexMap[idx.IndexName] = append(columnIndexMap[idx.IndexName], idx)\n\t}\n\treturn columnIndexMap\n}\n\nfunc (m Migrator) GetTypeAliases(databaseTypeName string) []string {\n\treturn typeAliasMap[databaseTypeName]\n}\n\n// should reset prepared stmts when table changed\nfunc (m Migrator) resetPreparedStmts() {\n\tif m.DB.PrepareStmt {\n\t\tif pdb, ok := m.DB.ConnPool.(*gorm.PreparedStmtDB); ok {\n\t\t\tpdb.Reset()\n\t\t}\n\t}\n}\n\nfunc (m Migrator) DropColumn(dst any, field string) error {\n\tif err := m.Migrator.DropColumn(dst, field); err != nil {\n\t\treturn err\n\t}\n\n\tm.resetPreparedStmts()\n\treturn nil\n}\n\nfunc (m Migrator) RenameColumn(dst any, oldName, field string) error {\n\tif err := m.Migrator.RenameColumn(dst, oldName, field); err != nil {\n\t\treturn err\n\t}\n\n\tm.resetPreparedStmts()\n\treturn nil\n}\n\nfunc parseDefaultValueValue(defaultValue string) string {\n\tvalue := regexp.MustCompile(`^(.*?)(?:::.*)?$`).ReplaceAllString(defaultValue, \"$1\")\n\treturn strings.Trim(value, \"'\")\n}\n"
  },
  {
    "path": "gossh/gorm/driver/pgsql/postgres.go",
    "content": "package pgsql\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/callbacks\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n)\n\ntype Dialector struct {\n\t*Config\n}\n\ntype Config struct {\n\tDriverName           string\n\tDSN                  string\n\tWithoutQuotingCheck  bool\n\tPreferSimpleProtocol bool\n\tWithoutReturning     bool\n\tConn                 gorm.ConnPool\n}\n\nvar (\n\ttimeZoneMatcher         = regexp.MustCompile(\"(time_zone|TimeZone)=(.*?)($|&| )\")\n\tdefaultIdentifierLength = 63 //maximum identifier length for postgres\n)\n\nfunc Open(dsn string) gorm.Dialector {\n\treturn &Dialector{&Config{DSN: dsn, DriverName: \"postgres\"}}\n}\n\nfunc New(config Config) gorm.Dialector {\n\treturn &Dialector{Config: &config}\n}\n\nfunc (dialector Dialector) Name() string {\n\treturn \"postgres\"\n}\n\nfunc (dialector Dialector) Apply(config *gorm.Config) error {\n\tif config.NamingStrategy == nil {\n\t\tconfig.NamingStrategy = schema.NamingStrategy{\n\t\t\tIdentifierMaxLength: defaultIdentifierLength,\n\t\t}\n\t\treturn nil\n\t}\n\n\tswitch v := config.NamingStrategy.(type) {\n\tcase *schema.NamingStrategy:\n\t\tif v.IdentifierMaxLength <= 0 {\n\t\t\tv.IdentifierMaxLength = defaultIdentifierLength\n\t\t}\n\tcase schema.NamingStrategy:\n\t\tif v.IdentifierMaxLength <= 0 {\n\t\t\tv.IdentifierMaxLength = defaultIdentifierLength\n\t\t\tconfig.NamingStrategy = v\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (dialector Dialector) Initialize(db *gorm.DB) (err error) {\n\tcallbackConfig := &callbacks.Config{\n\t\tCreateClauses: []string{\"INSERT\", \"VALUES\", \"ON CONFLICT\"},\n\t\tUpdateClauses: []string{\"UPDATE\", \"SET\", \"FROM\", \"WHERE\"},\n\t\tDeleteClauses: []string{\"DELETE\", \"FROM\", \"WHERE\"},\n\t}\n\t// register callbacks\n\tif !dialector.WithoutReturning {\n\t\tcallbackConfig.CreateClauses = append(callbackConfig.CreateClauses, \"RETURNING\")\n\t\tcallbackConfig.UpdateClauses = append(callbackConfig.UpdateClauses, \"RETURNING\")\n\t\tcallbackConfig.DeleteClauses = append(callbackConfig.DeleteClauses, \"RETURNING\")\n\t}\n\tcallbacks.RegisterDefaultCallbacks(db, callbackConfig)\n\n\tif dialector.Conn != nil {\n\t\tdb.ConnPool = dialector.Conn\n\t} else /*dialector.DriverName != \"\"*/ {\n\t\tdb.ConnPool, err = sql.Open(dialector.DriverName, dialector.Config.DSN)\n\t}\n\treturn\n}\n\nfunc (dialector Dialector) Migrator(db *gorm.DB) gorm.Migrator {\n\treturn Migrator{migrator.Migrator{Config: migrator.Config{\n\t\tDB:                          db,\n\t\tDialector:                   dialector,\n\t\tCreateIndexAfterCreateTable: true,\n\t}}}\n}\n\nfunc (dialector Dialector) DefaultValueOf(field *schema.Field) clause.Expression {\n\treturn clause.Expr{SQL: \"DEFAULT\"}\n}\n\nfunc (dialector Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v any) {\n\twriter.WriteByte('$')\n\tindex := 0\n\tvarLen := len(stmt.Vars)\n\n\t// huang\n\t//if varLen > 0 {\n\t//switch stmt.Vars[0].(type) {\n\t//\n\t//case pgx.QueryExecMode:\n\t//index++\n\t//}\n\t//}\n\twriter.WriteString(strconv.Itoa(varLen - index))\n}\n\nfunc (dialector Dialector) QuoteTo(writer clause.Writer, str string) {\n\tif dialector.WithoutQuotingCheck {\n\t\twriter.WriteString(str)\n\t\treturn\n\t}\n\n\tvar (\n\t\tunderQuoted, selfQuoted bool\n\t\tcontinuousBacktick      int8\n\t\tshiftDelimiter          int8\n\t)\n\n\tfor _, v := range []byte(str) {\n\t\tswitch v {\n\t\tcase '\"':\n\t\t\tcontinuousBacktick++\n\t\t\tif continuousBacktick == 2 {\n\t\t\t\twriter.WriteString(`\"\"`)\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t}\n\t\tcase '.':\n\t\t\tif continuousBacktick > 0 || !selfQuoted {\n\t\t\t\tshiftDelimiter = 0\n\t\t\t\tunderQuoted = false\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t\twriter.WriteByte('\"')\n\t\t\t}\n\t\t\twriter.WriteByte(v)\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif shiftDelimiter-continuousBacktick <= 0 && !underQuoted {\n\t\t\t\twriter.WriteByte('\"')\n\t\t\t\tunderQuoted = true\n\t\t\t\tif selfQuoted = continuousBacktick > 0; selfQuoted {\n\t\t\t\t\tcontinuousBacktick -= 1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ; continuousBacktick > 0; continuousBacktick -= 1 {\n\t\t\t\twriter.WriteString(`\"\"`)\n\t\t\t}\n\n\t\t\twriter.WriteByte(v)\n\t\t}\n\t\tshiftDelimiter++\n\t}\n\n\tif continuousBacktick > 0 && !selfQuoted {\n\t\twriter.WriteString(`\"\"`)\n\t}\n\twriter.WriteByte('\"')\n}\n\nvar numericPlaceholder = regexp.MustCompile(`\\$(\\d+)`)\n\nfunc (dialector Dialector) Explain(sql string, vars ...any) string {\n\treturn logger.ExplainSQL(sql, numericPlaceholder, `'`, vars...)\n}\n\nfunc (dialector Dialector) DataTypeOf(field *schema.Field) string {\n\tswitch field.DataType {\n\tcase schema.Bool:\n\t\treturn \"boolean\"\n\tcase schema.Int, schema.Uint:\n\t\tsize := field.Size\n\t\tif field.DataType == schema.Uint {\n\t\t\tsize++\n\t\t}\n\t\tif field.AutoIncrement {\n\t\t\tswitch {\n\t\t\tcase size <= 16:\n\t\t\t\treturn \"smallserial\"\n\t\t\tcase size <= 32:\n\t\t\t\treturn \"serial\"\n\t\t\tdefault:\n\t\t\t\treturn \"bigserial\"\n\t\t\t}\n\t\t} else {\n\t\t\tswitch {\n\t\t\tcase size <= 16:\n\t\t\t\treturn \"smallint\"\n\t\t\tcase size <= 32:\n\t\t\t\treturn \"integer\"\n\t\t\tdefault:\n\t\t\t\treturn \"bigint\"\n\t\t\t}\n\t\t}\n\tcase schema.Float:\n\t\tif field.Precision > 0 {\n\t\t\tif field.Scale > 0 {\n\t\t\t\treturn fmt.Sprintf(\"numeric(%d, %d)\", field.Precision, field.Scale)\n\t\t\t}\n\t\t\treturn fmt.Sprintf(\"numeric(%d)\", field.Precision)\n\t\t}\n\t\treturn \"decimal\"\n\tcase schema.String:\n\t\tif field.Size > 0 {\n\t\t\treturn fmt.Sprintf(\"varchar(%d)\", field.Size)\n\t\t}\n\t\treturn \"text\"\n\tcase schema.Time:\n\t\tif field.Precision > 0 {\n\t\t\treturn fmt.Sprintf(\"timestamptz(%d)\", field.Precision)\n\t\t}\n\t\treturn \"timestamptz\"\n\tcase schema.Bytes:\n\t\treturn \"bytea\"\n\tdefault:\n\t\treturn dialector.getSchemaCustomType(field)\n\t}\n}\n\nfunc (dialector Dialector) getSchemaCustomType(field *schema.Field) string {\n\tsqlType := string(field.DataType)\n\n\tif field.AutoIncrement && !strings.Contains(strings.ToLower(sqlType), \"serial\") {\n\t\tsize := field.Size\n\t\tif field.GORMDataType == schema.Uint {\n\t\t\tsize++\n\t\t}\n\t\tswitch {\n\t\tcase size <= 16:\n\t\t\tsqlType = \"smallserial\"\n\t\tcase size <= 32:\n\t\t\tsqlType = \"serial\"\n\t\tdefault:\n\t\t\tsqlType = \"bigserial\"\n\t\t}\n\t}\n\n\treturn sqlType\n}\n\nfunc (dialector Dialector) SavePoint(tx *gorm.DB, name string) error {\n\ttx.Exec(\"SAVEPOINT \" + name)\n\treturn nil\n}\n\nfunc (dialector Dialector) RollbackTo(tx *gorm.DB, name string) error {\n\ttx.Exec(\"ROLLBACK TO SAVEPOINT \" + name)\n\treturn nil\n}\n\nfunc getSerialDatabaseType(s string) (dbType string, ok bool) {\n\tswitch s {\n\tcase \"smallserial\":\n\t\treturn \"smallint\", true\n\tcase \"serial\":\n\t\treturn \"integer\", true\n\tcase \"bigserial\":\n\t\treturn \"bigint\", true\n\tdefault:\n\t\treturn \"\", false\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/errors.go",
    "content": "package gorm\n\nimport (\n\t\"errors\"\n\n\t\"gossh/gorm/logger\"\n)\n\nvar (\n\t// ErrRecordNotFound record not found error\n\tErrRecordNotFound = logger.ErrRecordNotFound\n\t// ErrInvalidTransaction invalid transaction when you are trying to `Commit` or `Rollback`\n\tErrInvalidTransaction = errors.New(\"invalid transaction\")\n\t// ErrNotImplemented not implemented\n\tErrNotImplemented = errors.New(\"not implemented\")\n\t// ErrMissingWhereClause missing where clause\n\tErrMissingWhereClause = errors.New(\"WHERE conditions required\")\n\t// ErrUnsupportedRelation unsupported relations\n\tErrUnsupportedRelation = errors.New(\"unsupported relations\")\n\t// ErrPrimaryKeyRequired primary keys required\n\tErrPrimaryKeyRequired = errors.New(\"primary key required\")\n\t// ErrModelValueRequired model value required\n\tErrModelValueRequired = errors.New(\"model value required\")\n\t// ErrModelAccessibleFieldsRequired model accessible fields required\n\tErrModelAccessibleFieldsRequired = errors.New(\"model accessible fields required\")\n\t// ErrSubQueryRequired sub query required\n\tErrSubQueryRequired = errors.New(\"sub query required\")\n\t// ErrInvalidData unsupported data\n\tErrInvalidData = errors.New(\"unsupported data\")\n\t// ErrUnsupportedDriver unsupported driver\n\tErrUnsupportedDriver = errors.New(\"unsupported driver\")\n\t// ErrRegistered registered\n\tErrRegistered = errors.New(\"registered\")\n\t// ErrInvalidField invalid field\n\tErrInvalidField = errors.New(\"invalid field\")\n\t// ErrEmptySlice empty slice found\n\tErrEmptySlice = errors.New(\"empty slice found\")\n\t// ErrDryRunModeUnsupported dry run mode unsupported\n\tErrDryRunModeUnsupported = errors.New(\"dry run mode unsupported\")\n\t// ErrInvalidDB invalid db\n\tErrInvalidDB = errors.New(\"invalid db\")\n\t// ErrInvalidValue invalid value\n\tErrInvalidValue = errors.New(\"invalid value, should be pointer to struct or slice\")\n\t// ErrInvalidValueOfLength invalid values do not match length\n\tErrInvalidValueOfLength = errors.New(\"invalid association values, length doesn't match\")\n\t// ErrPreloadNotAllowed preload is not allowed when count is used\n\tErrPreloadNotAllowed = errors.New(\"preload is not allowed when count is used\")\n\t// ErrDuplicatedKey occurs when there is a unique key constraint violation\n\tErrDuplicatedKey = errors.New(\"duplicated key not allowed\")\n\t// ErrForeignKeyViolated occurs when there is a foreign key constraint violation\n\tErrForeignKeyViolated = errors.New(\"violates foreign key constraint\")\n)\n"
  },
  {
    "path": "gossh/gorm/finisher_api.go",
    "content": "package gorm\n\nimport (\n\t\"database/sql\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// Create inserts value, returning the inserted data's primary key in value's id\nfunc (db *DB) Create(value any) (tx *DB) {\n\tif db.CreateBatchSize > 0 {\n\t\treturn db.CreateInBatches(value, db.CreateBatchSize)\n\t}\n\n\ttx = db.getInstance()\n\ttx.Statement.Dest = value\n\treturn tx.callbacks.Create().Execute(tx)\n}\n\n// CreateInBatches inserts value in batches of batchSize\nfunc (db *DB) CreateInBatches(value any, batchSize int) (tx *DB) {\n\treflectValue := reflect.Indirect(reflect.ValueOf(value))\n\n\tswitch reflectValue.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tvar rowsAffected int64\n\t\ttx = db.getInstance()\n\n\t\t// the reflection length judgment of the optimized value\n\t\treflectLen := reflectValue.Len()\n\n\t\tcallFc := func(tx *DB) error {\n\t\t\tfor i := 0; i < reflectLen; i += batchSize {\n\t\t\t\tends := i + batchSize\n\t\t\t\tif ends > reflectLen {\n\t\t\t\t\tends = reflectLen\n\t\t\t\t}\n\n\t\t\t\tsubtx := tx.getInstance()\n\t\t\t\tsubtx.Statement.Dest = reflectValue.Slice(i, ends).Interface()\n\t\t\t\tsubtx.callbacks.Create().Execute(subtx)\n\t\t\t\tif subtx.Error != nil {\n\t\t\t\t\treturn subtx.Error\n\t\t\t\t}\n\t\t\t\trowsAffected += subtx.RowsAffected\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\n\t\tif tx.SkipDefaultTransaction || reflectLen <= batchSize {\n\t\t\ttx.AddError(callFc(tx.Session(&Session{})))\n\t\t} else {\n\t\t\ttx.AddError(tx.Transaction(callFc))\n\t\t}\n\n\t\ttx.RowsAffected = rowsAffected\n\tdefault:\n\t\ttx = db.getInstance()\n\t\ttx.Statement.Dest = value\n\t\ttx = tx.callbacks.Create().Execute(tx)\n\t}\n\treturn\n}\n\n// Save updates value in database. If value doesn't contain a matching primary key, value is inserted.\nfunc (db *DB) Save(value any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Dest = value\n\n\treflectValue := reflect.Indirect(reflect.ValueOf(value))\n\tfor reflectValue.Kind() == reflect.Ptr || reflectValue.Kind() == reflect.Interface {\n\t\treflectValue = reflect.Indirect(reflectValue)\n\t}\n\n\tswitch reflectValue.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tif _, ok := tx.Statement.Clauses[\"ON CONFLICT\"]; !ok {\n\t\t\ttx = tx.Clauses(clause.OnConflict{UpdateAll: true})\n\t\t}\n\t\ttx = tx.callbacks.Create().Execute(tx.Set(\"gorm:update_track_time\", true))\n\tcase reflect.Struct:\n\t\tif err := tx.Statement.Parse(value); err == nil && tx.Statement.Schema != nil {\n\t\t\tfor _, pf := range tx.Statement.Schema.PrimaryFields {\n\t\t\t\tif _, isZero := pf.ValueOf(tx.Statement.Context, reflectValue); isZero {\n\t\t\t\t\treturn tx.callbacks.Create().Execute(tx)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfallthrough\n\tdefault:\n\t\tselectedUpdate := len(tx.Statement.Selects) != 0\n\t\t// when updating, use all fields including those zero-value fields\n\t\tif !selectedUpdate {\n\t\t\ttx.Statement.Selects = append(tx.Statement.Selects, \"*\")\n\t\t}\n\n\t\tupdateTx := tx.callbacks.Update().Execute(tx.Session(&Session{Initialized: true}))\n\n\t\tif updateTx.Error == nil && updateTx.RowsAffected == 0 && !updateTx.DryRun && !selectedUpdate {\n\t\t\treturn tx.Session(&Session{SkipHooks: true}).Clauses(clause.OnConflict{UpdateAll: true}).Create(value)\n\t\t}\n\n\t\treturn updateTx\n\t}\n\n\treturn\n}\n\n// First finds the first record ordered by primary key, matching given conditions conds\nfunc (db *DB) First(dest any, conds ...any) (tx *DB) {\n\ttx = db.Limit(1).Order(clause.OrderByColumn{\n\t\tColumn: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},\n\t})\n\tif len(conds) > 0 {\n\t\tif exprs := tx.Statement.BuildCondition(conds[0], conds[1:]...); len(exprs) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Where{Exprs: exprs})\n\t\t}\n\t}\n\ttx.Statement.RaiseErrorOnNotFound = true\n\ttx.Statement.Dest = dest\n\treturn tx.callbacks.Query().Execute(tx)\n}\n\n// Take finds the first record returned by the database in no specified order, matching given conditions conds\nfunc (db *DB) Take(dest any, conds ...any) (tx *DB) {\n\ttx = db.Limit(1)\n\tif len(conds) > 0 {\n\t\tif exprs := tx.Statement.BuildCondition(conds[0], conds[1:]...); len(exprs) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Where{Exprs: exprs})\n\t\t}\n\t}\n\ttx.Statement.RaiseErrorOnNotFound = true\n\ttx.Statement.Dest = dest\n\treturn tx.callbacks.Query().Execute(tx)\n}\n\n// Last finds the last record ordered by primary key, matching given conditions conds\nfunc (db *DB) Last(dest any, conds ...any) (tx *DB) {\n\ttx = db.Limit(1).Order(clause.OrderByColumn{\n\t\tColumn: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},\n\t\tDesc:   true,\n\t})\n\tif len(conds) > 0 {\n\t\tif exprs := tx.Statement.BuildCondition(conds[0], conds[1:]...); len(exprs) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Where{Exprs: exprs})\n\t\t}\n\t}\n\ttx.Statement.RaiseErrorOnNotFound = true\n\ttx.Statement.Dest = dest\n\treturn tx.callbacks.Query().Execute(tx)\n}\n\n// Find finds all records matching given conditions conds\nfunc (db *DB) Find(dest any, conds ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif len(conds) > 0 {\n\t\tif exprs := tx.Statement.BuildCondition(conds[0], conds[1:]...); len(exprs) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Where{Exprs: exprs})\n\t\t}\n\t}\n\ttx.Statement.Dest = dest\n\treturn tx.callbacks.Query().Execute(tx)\n}\n\n// FindInBatches finds all records in batches of batchSize\nfunc (db *DB) FindInBatches(dest any, batchSize int, fc func(tx *DB, batch int) error) *DB {\n\tvar (\n\t\ttx = db.Order(clause.OrderByColumn{\n\t\t\tColumn: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},\n\t\t}).Session(&Session{})\n\t\tqueryDB      = tx\n\t\trowsAffected int64\n\t\tbatch        int\n\t)\n\n\t// user specified offset or limit\n\tvar totalSize int\n\tif c, ok := tx.Statement.Clauses[\"LIMIT\"]; ok {\n\t\tif limit, ok := c.Expression.(clause.Limit); ok {\n\t\t\tif limit.Limit != nil {\n\t\t\t\ttotalSize = *limit.Limit\n\t\t\t}\n\n\t\t\tif totalSize > 0 && batchSize > totalSize {\n\t\t\t\tbatchSize = totalSize\n\t\t\t}\n\n\t\t\t// reset to offset to 0 in next batch\n\t\t\ttx = tx.Offset(-1).Session(&Session{})\n\t\t}\n\t}\n\n\tfor {\n\t\tresult := queryDB.Limit(batchSize).Find(dest)\n\t\trowsAffected += result.RowsAffected\n\t\tbatch++\n\n\t\tif result.Error == nil && result.RowsAffected != 0 {\n\t\t\tfcTx := result.Session(&Session{NewDB: true})\n\t\t\tfcTx.RowsAffected = result.RowsAffected\n\t\t\ttx.AddError(fc(fcTx, batch))\n\t\t} else if result.Error != nil {\n\t\t\ttx.AddError(result.Error)\n\t\t}\n\n\t\tif tx.Error != nil || int(result.RowsAffected) < batchSize {\n\t\t\tbreak\n\t\t}\n\n\t\tif totalSize > 0 {\n\t\t\tif totalSize <= int(rowsAffected) {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif totalSize/batchSize == batch {\n\t\t\t\tbatchSize = totalSize % batchSize\n\t\t\t}\n\t\t}\n\n\t\t// Optimize for-break\n\t\tresultsValue := reflect.Indirect(reflect.ValueOf(dest))\n\t\tif result.Statement.Schema.PrioritizedPrimaryField == nil {\n\t\t\ttx.AddError(ErrPrimaryKeyRequired)\n\t\t\tbreak\n\t\t}\n\n\t\tprimaryValue, zero := result.Statement.Schema.PrioritizedPrimaryField.ValueOf(tx.Statement.Context, resultsValue.Index(resultsValue.Len()-1))\n\t\tif zero {\n\t\t\ttx.AddError(ErrPrimaryKeyRequired)\n\t\t\tbreak\n\t\t}\n\t\tqueryDB = tx.Clauses(clause.Gt{Column: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey}, Value: primaryValue})\n\t}\n\n\ttx.RowsAffected = rowsAffected\n\treturn tx\n}\n\nfunc (db *DB) assignInterfacesToValue(values ...any) {\n\tfor _, value := range values {\n\t\tswitch v := value.(type) {\n\t\tcase []clause.Expression:\n\t\t\tfor _, expr := range v {\n\t\t\t\tif eq, ok := expr.(clause.Eq); ok {\n\t\t\t\t\tswitch column := eq.Column.(type) {\n\t\t\t\t\tcase string:\n\t\t\t\t\t\tif field := db.Statement.Schema.LookUpField(column); field != nil {\n\t\t\t\t\t\t\tdb.AddError(field.Set(db.Statement.Context, db.Statement.ReflectValue, eq.Value))\n\t\t\t\t\t\t}\n\t\t\t\t\tcase clause.Column:\n\t\t\t\t\t\tif field := db.Statement.Schema.LookUpField(column.Name); field != nil {\n\t\t\t\t\t\t\tdb.AddError(field.Set(db.Statement.Context, db.Statement.ReflectValue, eq.Value))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if andCond, ok := expr.(clause.AndConditions); ok {\n\t\t\t\t\tdb.assignInterfacesToValue(andCond.Exprs)\n\t\t\t\t}\n\t\t\t}\n\t\tcase clause.Expression, map[string]string, map[any]any, map[string]any:\n\t\t\tif exprs := db.Statement.BuildCondition(value); len(exprs) > 0 {\n\t\t\t\tdb.assignInterfacesToValue(exprs)\n\t\t\t}\n\t\tdefault:\n\t\t\tif s, err := schema.Parse(value, db.cacheStore, db.NamingStrategy); err == nil {\n\t\t\t\treflectValue := reflect.Indirect(reflect.ValueOf(value))\n\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tfor _, f := range s.Fields {\n\t\t\t\t\t\tif f.Readable {\n\t\t\t\t\t\t\tif v, isZero := f.ValueOf(db.Statement.Context, reflectValue); !isZero {\n\t\t\t\t\t\t\t\tif field := db.Statement.Schema.LookUpField(f.Name); field != nil {\n\t\t\t\t\t\t\t\t\tdb.AddError(field.Set(db.Statement.Context, db.Statement.ReflectValue, v))\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} else if len(values) > 0 {\n\t\t\t\tif exprs := db.Statement.BuildCondition(values[0], values[1:]...); len(exprs) > 0 {\n\t\t\t\t\tdb.assignInterfacesToValue(exprs)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n}\n\n// FirstOrInit finds the first matching record, otherwise if not found initializes a new instance with given conds.\n// Each conds must be a struct or map.\n//\n// FirstOrInit never modifies the database. It is often used with Assign and Attrs.\n//\n//\t// assign an email if the record is not found\n//\tdb.Where(User{Name: \"non_existing\"}).Attrs(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"non_existing\", Email: \"fake@fake.org\"}\n//\n//\t// assign email regardless of if record is found\n//\tdb.Where(User{Name: \"jinzhu\"}).Assign(User{Email: \"fake@fake.org\"}).FirstOrInit(&user)\n//\t// user -> User{Name: \"jinzhu\", Age: 20, Email: \"fake@fake.org\"}\nfunc (db *DB) FirstOrInit(dest any, conds ...any) (tx *DB) {\n\tqueryTx := db.Limit(1).Order(clause.OrderByColumn{\n\t\tColumn: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},\n\t})\n\n\tif tx = queryTx.Find(dest, conds...); tx.RowsAffected == 0 {\n\t\tif c, ok := tx.Statement.Clauses[\"WHERE\"]; ok {\n\t\t\tif where, ok := c.Expression.(clause.Where); ok {\n\t\t\t\ttx.assignInterfacesToValue(where.Exprs)\n\t\t\t}\n\t\t}\n\n\t\t// initialize with attrs, conds\n\t\tif len(tx.Statement.attrs) > 0 {\n\t\t\ttx.assignInterfacesToValue(tx.Statement.attrs...)\n\t\t}\n\t}\n\n\t// initialize with attrs, conds\n\tif len(tx.Statement.assigns) > 0 {\n\t\ttx.assignInterfacesToValue(tx.Statement.assigns...)\n\t}\n\treturn\n}\n\n// FirstOrCreate finds the first matching record, otherwise if not found creates a new instance with given conds.\n// Each conds must be a struct or map.\n//\n// Using FirstOrCreate in conjunction with Assign will result in an update to the database even if the record exists.\n//\n//\t// assign an email if the record is not found\n//\tresult := db.Where(User{Name: \"non_existing\"}).Attrs(User{Email: \"fake@fake.org\"}).FirstOrCreate(&user)\n//\t// user -> User{Name: \"non_existing\", Email: \"fake@fake.org\"}\n//\t// result.RowsAffected -> 1\n//\n//\t// assign email regardless of if record is found\n//\tresult := db.Where(User{Name: \"jinzhu\"}).Assign(User{Email: \"fake@fake.org\"}).FirstOrCreate(&user)\n//\t// user -> User{Name: \"jinzhu\", Age: 20, Email: \"fake@fake.org\"}\n//\t// result.RowsAffected -> 1\nfunc (db *DB) FirstOrCreate(dest any, conds ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tqueryTx := db.Session(&Session{}).Limit(1).Order(clause.OrderByColumn{\n\t\tColumn: clause.Column{Table: clause.CurrentTable, Name: clause.PrimaryKey},\n\t})\n\n\tresult := queryTx.Find(dest, conds...)\n\tif result.Error != nil {\n\t\ttx.Error = result.Error\n\t\treturn tx\n\t}\n\n\tif result.RowsAffected == 0 {\n\t\tif c, ok := result.Statement.Clauses[\"WHERE\"]; ok {\n\t\t\tif where, ok := c.Expression.(clause.Where); ok {\n\t\t\t\tresult.assignInterfacesToValue(where.Exprs)\n\t\t\t}\n\t\t}\n\n\t\t// initialize with attrs, conds\n\t\tif len(db.Statement.attrs) > 0 {\n\t\t\tresult.assignInterfacesToValue(db.Statement.attrs...)\n\t\t}\n\n\t\t// initialize with attrs, conds\n\t\tif len(db.Statement.assigns) > 0 {\n\t\t\tresult.assignInterfacesToValue(db.Statement.assigns...)\n\t\t}\n\n\t\treturn tx.Create(dest)\n\t} else if len(db.Statement.assigns) > 0 {\n\t\texprs := tx.Statement.BuildCondition(db.Statement.assigns[0], db.Statement.assigns[1:]...)\n\t\tassigns := map[string]any{}\n\t\tfor i := 0; i < len(exprs); i++ {\n\t\t\texpr := exprs[i]\n\n\t\t\tif eq, ok := expr.(clause.AndConditions); ok {\n\t\t\t\texprs = append(exprs, eq.Exprs...)\n\t\t\t} else if eq, ok := expr.(clause.Eq); ok {\n\t\t\t\tswitch column := eq.Column.(type) {\n\t\t\t\tcase string:\n\t\t\t\t\tassigns[column] = eq.Value\n\t\t\t\tcase clause.Column:\n\t\t\t\t\tassigns[column.Name] = eq.Value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn tx.Model(dest).Updates(assigns)\n\t}\n\n\treturn tx\n}\n\n// Update updates column with value using callbacks. Reference: https://gorm.io/docs/update.html#Update-Changed-Fields\nfunc (db *DB) Update(column string, value any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Dest = map[string]any{column: value}\n\treturn tx.callbacks.Update().Execute(tx)\n}\n\n// Updates updates attributes using callbacks. values must be a struct or map. Reference: https://gorm.io/docs/update.html#Update-Changed-Fields\nfunc (db *DB) Updates(values any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Dest = values\n\treturn tx.callbacks.Update().Execute(tx)\n}\n\nfunc (db *DB) UpdateColumn(column string, value any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Dest = map[string]any{column: value}\n\ttx.Statement.SkipHooks = true\n\treturn tx.callbacks.Update().Execute(tx)\n}\n\nfunc (db *DB) UpdateColumns(values any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.Dest = values\n\ttx.Statement.SkipHooks = true\n\treturn tx.callbacks.Update().Execute(tx)\n}\n\n// Delete deletes value matching given conditions. If value contains primary key it is included in the conditions. If\n// value includes a deleted_at field, then Delete performs a soft delete instead by setting deleted_at with the current\n// time if null.\nfunc (db *DB) Delete(value any, conds ...any) (tx *DB) {\n\ttx = db.getInstance()\n\tif len(conds) > 0 {\n\t\tif exprs := tx.Statement.BuildCondition(conds[0], conds[1:]...); len(exprs) > 0 {\n\t\t\ttx.Statement.AddClause(clause.Where{Exprs: exprs})\n\t\t}\n\t}\n\ttx.Statement.Dest = value\n\treturn tx.callbacks.Delete().Execute(tx)\n}\n\nfunc (db *DB) Count(count *int64) (tx *DB) {\n\ttx = db.getInstance()\n\tif tx.Statement.Model == nil {\n\t\ttx.Statement.Model = tx.Statement.Dest\n\t\tdefer func() {\n\t\t\ttx.Statement.Model = nil\n\t\t}()\n\t}\n\n\tif selectClause, ok := db.Statement.Clauses[\"SELECT\"]; ok {\n\t\tdefer func() {\n\t\t\ttx.Statement.Clauses[\"SELECT\"] = selectClause\n\t\t}()\n\t} else {\n\t\tdefer delete(tx.Statement.Clauses, \"SELECT\")\n\t}\n\n\tif len(tx.Statement.Selects) == 0 {\n\t\ttx.Statement.AddClause(clause.Select{Expression: clause.Expr{SQL: \"count(*)\"}})\n\t} else if !strings.HasPrefix(strings.TrimSpace(strings.ToLower(tx.Statement.Selects[0])), \"count(\") {\n\t\texpr := clause.Expr{SQL: \"count(*)\"}\n\n\t\tif len(tx.Statement.Selects) == 1 {\n\t\t\tdbName := tx.Statement.Selects[0]\n\t\t\tfields := strings.FieldsFunc(dbName, utils.IsValidDBNameChar)\n\t\t\tif len(fields) == 1 || (len(fields) == 3 && (strings.ToUpper(fields[1]) == \"AS\" || fields[1] == \".\")) {\n\t\t\t\tif tx.Statement.Parse(tx.Statement.Model) == nil {\n\t\t\t\t\tif f := tx.Statement.Schema.LookUpField(dbName); f != nil {\n\t\t\t\t\t\tdbName = f.DBName\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif tx.Statement.Distinct {\n\t\t\t\t\texpr = clause.Expr{SQL: \"COUNT(DISTINCT(?))\", Vars: []any{clause.Column{Name: dbName}}}\n\t\t\t\t} else if dbName != \"*\" {\n\t\t\t\t\texpr = clause.Expr{SQL: \"COUNT(?)\", Vars: []any{clause.Column{Name: dbName}}}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttx.Statement.AddClause(clause.Select{Expression: expr})\n\t}\n\n\tif orderByClause, ok := db.Statement.Clauses[\"ORDER BY\"]; ok {\n\t\tif _, ok := db.Statement.Clauses[\"GROUP BY\"]; !ok {\n\t\t\tdelete(tx.Statement.Clauses, \"ORDER BY\")\n\t\t\tdefer func() {\n\t\t\t\ttx.Statement.Clauses[\"ORDER BY\"] = orderByClause\n\t\t\t}()\n\t\t}\n\t}\n\n\ttx.Statement.Dest = count\n\ttx = tx.callbacks.Query().Execute(tx)\n\n\tif _, ok := db.Statement.Clauses[\"GROUP BY\"]; ok || tx.RowsAffected != 1 {\n\t\t*count = tx.RowsAffected\n\t}\n\n\treturn\n}\n\nfunc (db *DB) Row() *sql.Row {\n\ttx := db.getInstance().Set(\"rows\", false)\n\ttx = tx.callbacks.Row().Execute(tx)\n\trow, ok := tx.Statement.Dest.(*sql.Row)\n\tif !ok && tx.DryRun {\n\t\tdb.Logger.Error(tx.Statement.Context, ErrDryRunModeUnsupported.Error())\n\t}\n\treturn row\n}\n\nfunc (db *DB) Rows() (*sql.Rows, error) {\n\ttx := db.getInstance().Set(\"rows\", true)\n\ttx = tx.callbacks.Row().Execute(tx)\n\trows, ok := tx.Statement.Dest.(*sql.Rows)\n\tif !ok && tx.DryRun && tx.Error == nil {\n\t\ttx.Error = ErrDryRunModeUnsupported\n\t}\n\treturn rows, tx.Error\n}\n\n// Scan scans selected value to the struct dest\nfunc (db *DB) Scan(dest any) (tx *DB) {\n\tconfig := *db.Config\n\tcurrentLogger, newLogger := config.Logger, logger.Recorder.New()\n\tconfig.Logger = newLogger\n\n\ttx = db.getInstance()\n\ttx.Config = &config\n\n\tif rows, err := tx.Rows(); err == nil {\n\t\tif rows.Next() {\n\t\t\ttx.ScanRows(rows, dest)\n\t\t} else {\n\t\t\ttx.RowsAffected = 0\n\t\t\ttx.AddError(rows.Err())\n\t\t}\n\t\ttx.AddError(rows.Close())\n\t}\n\n\tcurrentLogger.Trace(tx.Statement.Context, newLogger.BeginAt, func() (string, int64) {\n\t\treturn newLogger.SQL, tx.RowsAffected\n\t}, tx.Error)\n\ttx.Logger = currentLogger\n\treturn\n}\n\n// Pluck queries a single column from a model, returning in the slice dest. E.g.:\n//\n//\tvar ages []int64\n//\tdb.Model(&users).Pluck(\"age\", &ages)\nfunc (db *DB) Pluck(column string, dest any) (tx *DB) {\n\ttx = db.getInstance()\n\tif tx.Statement.Model != nil {\n\t\tif tx.Statement.Parse(tx.Statement.Model) == nil {\n\t\t\tif f := tx.Statement.Schema.LookUpField(column); f != nil {\n\t\t\t\tcolumn = f.DBName\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(tx.Statement.Selects) != 1 {\n\t\tfields := strings.FieldsFunc(column, utils.IsValidDBNameChar)\n\t\ttx.Statement.AddClauseIfNotExists(clause.Select{\n\t\t\tDistinct: tx.Statement.Distinct,\n\t\t\tColumns:  []clause.Column{{Name: column, Raw: len(fields) != 1}},\n\t\t})\n\t}\n\ttx.Statement.Dest = dest\n\treturn tx.callbacks.Query().Execute(tx)\n}\n\nfunc (db *DB) ScanRows(rows *sql.Rows, dest any) error {\n\ttx := db.getInstance()\n\tif err := tx.Statement.Parse(dest); !errors.Is(err, schema.ErrUnsupportedDataType) {\n\t\ttx.AddError(err)\n\t}\n\ttx.Statement.Dest = dest\n\ttx.Statement.ReflectValue = reflect.ValueOf(dest)\n\tfor tx.Statement.ReflectValue.Kind() == reflect.Ptr {\n\t\telem := tx.Statement.ReflectValue.Elem()\n\t\tif !elem.IsValid() {\n\t\t\telem = reflect.New(tx.Statement.ReflectValue.Type().Elem())\n\t\t\ttx.Statement.ReflectValue.Set(elem)\n\t\t}\n\t\ttx.Statement.ReflectValue = elem\n\t}\n\tScan(rows, tx, ScanInitialized)\n\treturn tx.Error\n}\n\n// Connection uses a db connection to execute an arbitrary number of commands in fc. When finished, the connection is\n// returned to the connection pool.\nfunc (db *DB) Connection(fc func(tx *DB) error) (err error) {\n\tif db.Error != nil {\n\t\treturn db.Error\n\t}\n\n\ttx := db.getInstance()\n\tsqlDB, err := tx.DB()\n\tif err != nil {\n\t\treturn\n\t}\n\n\tconn, err := sqlDB.Conn(tx.Statement.Context)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tdefer conn.Close()\n\ttx.Statement.ConnPool = conn\n\treturn fc(tx)\n}\n\n// Transaction start a transaction as a block, return error will rollback, otherwise to commit. Transaction executes an\n// arbitrary number of commands in fc within a transaction. On success the changes are committed; if an error occurs\n// they are rolled back.\nfunc (db *DB) Transaction(fc func(tx *DB) error, opts ...*sql.TxOptions) (err error) {\n\tpanicked := true\n\n\tif committer, ok := db.Statement.ConnPool.(TxCommitter); ok && committer != nil {\n\t\t// nested transaction\n\t\tif !db.DisableNestedTransaction {\n\t\t\terr = db.SavePoint(fmt.Sprintf(\"sp%p\", fc)).Error\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdefer func() {\n\t\t\t\t// Make sure to rollback when panic, Block error or Commit error\n\t\t\t\tif panicked || err != nil {\n\t\t\t\t\tdb.RollbackTo(fmt.Sprintf(\"sp%p\", fc))\n\t\t\t\t}\n\t\t\t}()\n\t\t}\n\t\terr = fc(db.Session(&Session{NewDB: db.clone == 1}))\n\t} else {\n\t\ttx := db.Begin(opts...)\n\t\tif tx.Error != nil {\n\t\t\treturn tx.Error\n\t\t}\n\n\t\tdefer func() {\n\t\t\t// Make sure to rollback when panic, Block error or Commit error\n\t\t\tif panicked || err != nil {\n\t\t\t\ttx.Rollback()\n\t\t\t}\n\t\t}()\n\n\t\tif err = fc(tx); err == nil {\n\t\t\tpanicked = false\n\t\t\treturn tx.Commit().Error\n\t\t}\n\t}\n\n\tpanicked = false\n\treturn\n}\n\n// Begin begins a transaction with any transaction options opts\nfunc (db *DB) Begin(opts ...*sql.TxOptions) *DB {\n\tvar (\n\t\t// clone statement\n\t\ttx  = db.getInstance().Session(&Session{Context: db.Statement.Context, NewDB: db.clone == 1})\n\t\topt *sql.TxOptions\n\t\terr error\n\t)\n\n\tif len(opts) > 0 {\n\t\topt = opts[0]\n\t}\n\n\tswitch beginner := tx.Statement.ConnPool.(type) {\n\tcase TxBeginner:\n\t\ttx.Statement.ConnPool, err = beginner.BeginTx(tx.Statement.Context, opt)\n\tcase ConnPoolBeginner:\n\t\ttx.Statement.ConnPool, err = beginner.BeginTx(tx.Statement.Context, opt)\n\tdefault:\n\t\terr = ErrInvalidTransaction\n\t}\n\n\tif err != nil {\n\t\ttx.AddError(err)\n\t}\n\n\treturn tx\n}\n\n// Commit commits the changes in a transaction\nfunc (db *DB) Commit() *DB {\n\tif committer, ok := db.Statement.ConnPool.(TxCommitter); ok && committer != nil && !reflect.ValueOf(committer).IsNil() {\n\t\tdb.AddError(committer.Commit())\n\t} else {\n\t\tdb.AddError(ErrInvalidTransaction)\n\t}\n\treturn db\n}\n\n// Rollback rollbacks the changes in a transaction\nfunc (db *DB) Rollback() *DB {\n\tif committer, ok := db.Statement.ConnPool.(TxCommitter); ok && committer != nil {\n\t\tif !reflect.ValueOf(committer).IsNil() {\n\t\t\tdb.AddError(committer.Rollback())\n\t\t}\n\t} else {\n\t\tdb.AddError(ErrInvalidTransaction)\n\t}\n\treturn db\n}\n\nfunc (db *DB) SavePoint(name string) *DB {\n\tif savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok {\n\t\t// close prepared statement, because SavePoint not support prepared statement.\n\t\t// e.g. mysql8.0 doc: https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html\n\t\tvar (\n\t\t\tpreparedStmtTx   *PreparedStmtTX\n\t\t\tisPreparedStmtTx bool\n\t\t)\n\t\t// close prepared statement, because SavePoint not support prepared statement.\n\t\tif preparedStmtTx, isPreparedStmtTx = db.Statement.ConnPool.(*PreparedStmtTX); isPreparedStmtTx {\n\t\t\tdb.Statement.ConnPool = preparedStmtTx.Tx\n\t\t}\n\t\tdb.AddError(savePointer.SavePoint(db, name))\n\t\t// restore prepared statement\n\t\tif isPreparedStmtTx {\n\t\t\tdb.Statement.ConnPool = preparedStmtTx\n\t\t}\n\t} else {\n\t\tdb.AddError(ErrUnsupportedDriver)\n\t}\n\treturn db\n}\n\nfunc (db *DB) RollbackTo(name string) *DB {\n\tif savePointer, ok := db.Dialector.(SavePointerDialectorInterface); ok {\n\t\t// close prepared statement, because RollbackTo not support prepared statement.\n\t\t// e.g. mysql8.0 doc: https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html\n\t\tvar (\n\t\t\tpreparedStmtTx   *PreparedStmtTX\n\t\t\tisPreparedStmtTx bool\n\t\t)\n\t\t// close prepared statement, because SavePoint not support prepared statement.\n\t\tif preparedStmtTx, isPreparedStmtTx = db.Statement.ConnPool.(*PreparedStmtTX); isPreparedStmtTx {\n\t\t\tdb.Statement.ConnPool = preparedStmtTx.Tx\n\t\t}\n\t\tdb.AddError(savePointer.RollbackTo(db, name))\n\t\t// restore prepared statement\n\t\tif isPreparedStmtTx {\n\t\t\tdb.Statement.ConnPool = preparedStmtTx\n\t\t}\n\t} else {\n\t\tdb.AddError(ErrUnsupportedDriver)\n\t}\n\treturn db\n}\n\n// Exec executes raw sql\nfunc (db *DB) Exec(sql string, values ...any) (tx *DB) {\n\ttx = db.getInstance()\n\ttx.Statement.SQL = strings.Builder{}\n\n\tif strings.Contains(sql, \"@\") {\n\t\tclause.NamedExpr{SQL: sql, Vars: values}.Build(tx.Statement)\n\t} else {\n\t\tclause.Expr{SQL: sql, Vars: values}.Build(tx.Statement)\n\t}\n\n\treturn tx.callbacks.Raw().Execute(tx)\n}\n"
  },
  {
    "path": "gossh/gorm/gorm.go",
    "content": "package gorm\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"sort\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/schema\"\n)\n\n// for Config.cacheStore store PreparedStmtDB key\nconst preparedStmtDBKey = \"preparedStmt\"\n\n// Config GORM config\ntype Config struct {\n\t// GORM perform single create, update, delete operations in transactions by default to ensure database data integrity\n\t// You can disable it by setting `SkipDefaultTransaction` to true\n\tSkipDefaultTransaction bool\n\t// NamingStrategy tables, columns naming strategy\n\tNamingStrategy schema.Namer\n\t// FullSaveAssociations full save associations\n\tFullSaveAssociations bool\n\t// Logger\n\tLogger logger.Interface\n\t// NowFunc the function to be used when creating a new timestamp\n\tNowFunc func() time.Time\n\t// DryRun generate sql without execute\n\tDryRun bool\n\t// PrepareStmt executes the given query in cached statement\n\tPrepareStmt bool\n\t// DisableAutomaticPing\n\tDisableAutomaticPing bool\n\t// DisableForeignKeyConstraintWhenMigrating\n\tDisableForeignKeyConstraintWhenMigrating bool\n\t// IgnoreRelationshipsWhenMigrating\n\tIgnoreRelationshipsWhenMigrating bool\n\t// DisableNestedTransaction disable nested transaction\n\tDisableNestedTransaction bool\n\t// AllowGlobalUpdate allow global update\n\tAllowGlobalUpdate bool\n\t// QueryFields executes the SQL query with all fields of the table\n\tQueryFields bool\n\t// CreateBatchSize default create batch size\n\tCreateBatchSize int\n\t// TranslateError enabling error translation\n\tTranslateError bool\n\n\t// ClauseBuilders clause builder\n\tClauseBuilders map[string]clause.ClauseBuilder\n\t// ConnPool db conn pool\n\tConnPool ConnPool\n\t// Dialector database dialector\n\tDialector\n\t// Plugins registered plugins\n\tPlugins map[string]Plugin\n\n\tcallbacks  *callbacks\n\tcacheStore *sync.Map\n}\n\n// Apply update config to new config\nfunc (c *Config) Apply(config *Config) error {\n\tif config != c {\n\t\t*config = *c\n\t}\n\treturn nil\n}\n\n// AfterInitialize initialize plugins after db connected\nfunc (c *Config) AfterInitialize(db *DB) error {\n\tif db != nil {\n\t\tfor _, plugin := range c.Plugins {\n\t\t\tif err := plugin.Initialize(db); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Option gorm option interface\ntype Option interface {\n\tApply(*Config) error\n\tAfterInitialize(*DB) error\n}\n\n// DB GORM DB definition\ntype DB struct {\n\t*Config\n\tError        error\n\tRowsAffected int64\n\tStatement    *Statement\n\tclone        int\n}\n\n// Session session config when create session with Session() method\ntype Session struct {\n\tDryRun                   bool\n\tPrepareStmt              bool\n\tNewDB                    bool\n\tInitialized              bool\n\tSkipHooks                bool\n\tSkipDefaultTransaction   bool\n\tDisableNestedTransaction bool\n\tAllowGlobalUpdate        bool\n\tFullSaveAssociations     bool\n\tQueryFields              bool\n\tContext                  context.Context\n\tLogger                   logger.Interface\n\tNowFunc                  func() time.Time\n\tCreateBatchSize          int\n}\n\n// Open initialize db session based on dialector\nfunc Open(dialector Dialector, opts ...Option) (db *DB, err error) {\n\tconfig := &Config{}\n\n\tsort.Slice(opts, func(i, j int) bool {\n\t\t_, isConfig := opts[i].(*Config)\n\t\t_, isConfig2 := opts[j].(*Config)\n\t\treturn isConfig && !isConfig2\n\t})\n\n\tfor _, opt := range opts {\n\t\tif opt != nil {\n\t\t\tif applyErr := opt.Apply(config); applyErr != nil {\n\t\t\t\treturn nil, applyErr\n\t\t\t}\n\t\t\tdefer func(opt Option) {\n\t\t\t\tif errr := opt.AfterInitialize(db); errr != nil {\n\t\t\t\t\terr = errr\n\t\t\t\t}\n\t\t\t}(opt)\n\t\t}\n\t}\n\n\tif d, ok := dialector.(interface{ Apply(*Config) error }); ok {\n\t\tif err = d.Apply(config); err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tif config.NamingStrategy == nil {\n\t\tconfig.NamingStrategy = schema.NamingStrategy{IdentifierMaxLength: 64} // Default Identifier length is 64\n\t}\n\n\tif config.Logger == nil {\n\t\tconfig.Logger = logger.Default\n\t}\n\n\tif config.NowFunc == nil {\n\t\tconfig.NowFunc = func() time.Time { return time.Now().Local() }\n\t}\n\n\tif dialector != nil {\n\t\tconfig.Dialector = dialector\n\t}\n\n\tif config.Plugins == nil {\n\t\tconfig.Plugins = map[string]Plugin{}\n\t}\n\n\tif config.cacheStore == nil {\n\t\tconfig.cacheStore = &sync.Map{}\n\t}\n\n\tdb = &DB{Config: config, clone: 1}\n\n\tdb.callbacks = initializeCallbacks(db)\n\n\tif config.ClauseBuilders == nil {\n\t\tconfig.ClauseBuilders = map[string]clause.ClauseBuilder{}\n\t}\n\n\tif config.Dialector != nil {\n\t\terr = config.Dialector.Initialize(db)\n\n\t\tif err != nil {\n\t\t\tif db, _ := db.DB(); db != nil {\n\t\t\t\t_ = db.Close()\n\t\t\t}\n\t\t}\n\t}\n\n\tif config.PrepareStmt {\n\t\tpreparedStmt := NewPreparedStmtDB(db.ConnPool)\n\t\tdb.cacheStore.Store(preparedStmtDBKey, preparedStmt)\n\t\tdb.ConnPool = preparedStmt\n\t}\n\n\tdb.Statement = &Statement{\n\t\tDB:       db,\n\t\tConnPool: db.ConnPool,\n\t\tContext:  context.Background(),\n\t\tClauses:  map[string]clause.Clause{},\n\t}\n\n\tif err == nil && !config.DisableAutomaticPing {\n\t\tif pinger, ok := db.ConnPool.(interface{ Ping() error }); ok {\n\t\t\terr = pinger.Ping()\n\t\t}\n\t}\n\n\tif err != nil {\n\t\tconfig.Logger.Error(context.Background(), \"failed to initialize database, got error %v\", err)\n\t}\n\n\treturn\n}\n\n// Session create new db session\nfunc (db *DB) Session(config *Session) *DB {\n\tvar (\n\t\ttxConfig = *db.Config\n\t\ttx       = &DB{\n\t\t\tConfig:    &txConfig,\n\t\t\tStatement: db.Statement,\n\t\t\tError:     db.Error,\n\t\t\tclone:     1,\n\t\t}\n\t)\n\tif config.CreateBatchSize > 0 {\n\t\ttx.Config.CreateBatchSize = config.CreateBatchSize\n\t}\n\n\tif config.SkipDefaultTransaction {\n\t\ttx.Config.SkipDefaultTransaction = true\n\t}\n\n\tif config.AllowGlobalUpdate {\n\t\ttxConfig.AllowGlobalUpdate = true\n\t}\n\n\tif config.FullSaveAssociations {\n\t\ttxConfig.FullSaveAssociations = true\n\t}\n\n\tif config.Context != nil || config.PrepareStmt || config.SkipHooks {\n\t\ttx.Statement = tx.Statement.clone()\n\t\ttx.Statement.DB = tx\n\t}\n\n\tif config.Context != nil {\n\t\ttx.Statement.Context = config.Context\n\t}\n\n\tif config.PrepareStmt {\n\t\tvar preparedStmt *PreparedStmtDB\n\n\t\tif v, ok := db.cacheStore.Load(preparedStmtDBKey); ok {\n\t\t\tpreparedStmt = v.(*PreparedStmtDB)\n\t\t} else {\n\t\t\tpreparedStmt = NewPreparedStmtDB(db.ConnPool)\n\t\t\tdb.cacheStore.Store(preparedStmtDBKey, preparedStmt)\n\t\t}\n\n\t\tswitch t := tx.Statement.ConnPool.(type) {\n\t\tcase Tx:\n\t\t\ttx.Statement.ConnPool = &PreparedStmtTX{\n\t\t\t\tTx:             t,\n\t\t\t\tPreparedStmtDB: preparedStmt,\n\t\t\t}\n\t\tdefault:\n\t\t\ttx.Statement.ConnPool = &PreparedStmtDB{\n\t\t\t\tConnPool: db.Config.ConnPool,\n\t\t\t\tMux:      preparedStmt.Mux,\n\t\t\t\tStmts:    preparedStmt.Stmts,\n\t\t\t}\n\t\t}\n\t\ttxConfig.ConnPool = tx.Statement.ConnPool\n\t\ttxConfig.PrepareStmt = true\n\t}\n\n\tif config.SkipHooks {\n\t\ttx.Statement.SkipHooks = true\n\t}\n\n\tif config.DisableNestedTransaction {\n\t\ttxConfig.DisableNestedTransaction = true\n\t}\n\n\tif !config.NewDB {\n\t\ttx.clone = 2\n\t}\n\n\tif config.DryRun {\n\t\ttx.Config.DryRun = true\n\t}\n\n\tif config.QueryFields {\n\t\ttx.Config.QueryFields = true\n\t}\n\n\tif config.Logger != nil {\n\t\ttx.Config.Logger = config.Logger\n\t}\n\n\tif config.NowFunc != nil {\n\t\ttx.Config.NowFunc = config.NowFunc\n\t}\n\n\tif config.Initialized {\n\t\ttx = tx.getInstance()\n\t}\n\n\treturn tx\n}\n\n// WithContext change current instance db's context to ctx\nfunc (db *DB) WithContext(ctx context.Context) *DB {\n\treturn db.Session(&Session{Context: ctx})\n}\n\n// Debug start debug mode\nfunc (db *DB) Debug() (tx *DB) {\n\ttx = db.getInstance()\n\treturn tx.Session(&Session{\n\t\tLogger: db.Logger.LogMode(logger.Info),\n\t})\n}\n\n// Set store value with key into current db instance's context\nfunc (db *DB) Set(key string, value any) *DB {\n\ttx := db.getInstance()\n\ttx.Statement.Settings.Store(key, value)\n\treturn tx\n}\n\n// Get get value with key from current db instance's context\nfunc (db *DB) Get(key string) (any, bool) {\n\treturn db.Statement.Settings.Load(key)\n}\n\n// InstanceSet store value with key into current db instance's context\nfunc (db *DB) InstanceSet(key string, value any) *DB {\n\ttx := db.getInstance()\n\ttx.Statement.Settings.Store(fmt.Sprintf(\"%p\", tx.Statement)+key, value)\n\treturn tx\n}\n\n// InstanceGet get value with key from current db instance's context\nfunc (db *DB) InstanceGet(key string) (any, bool) {\n\treturn db.Statement.Settings.Load(fmt.Sprintf(\"%p\", db.Statement) + key)\n}\n\n// Callback returns callback manager\nfunc (db *DB) Callback() *callbacks {\n\treturn db.callbacks\n}\n\n// AddError add error to db\nfunc (db *DB) AddError(err error) error {\n\tif err != nil {\n\t\tif db.Config.TranslateError {\n\t\t\tif errTranslator, ok := db.Dialector.(ErrorTranslator); ok {\n\t\t\t\terr = errTranslator.Translate(err)\n\t\t\t}\n\t\t}\n\n\t\tif db.Error == nil {\n\t\t\tdb.Error = err\n\t\t} else {\n\t\t\tdb.Error = fmt.Errorf(\"%v; %w\", db.Error, err)\n\t\t}\n\t}\n\treturn db.Error\n}\n\n// DB returns `*sql.DB`\nfunc (db *DB) DB() (*sql.DB, error) {\n\tconnPool := db.ConnPool\n\tif db.Statement != nil && db.Statement.ConnPool != nil {\n\t\tconnPool = db.Statement.ConnPool\n\t}\n\tif tx, ok := connPool.(*sql.Tx); ok && tx != nil {\n\t\treturn (*sql.DB)(reflect.ValueOf(tx).Elem().FieldByName(\"db\").UnsafePointer()), nil\n\t}\n\n\tif dbConnector, ok := connPool.(GetDBConnector); ok && dbConnector != nil {\n\t\tif sqldb, err := dbConnector.GetDBConn(); sqldb != nil || err != nil {\n\t\t\treturn sqldb, err\n\t\t}\n\t}\n\n\tif sqldb, ok := connPool.(*sql.DB); ok && sqldb != nil {\n\t\treturn sqldb, nil\n\t}\n\n\treturn nil, ErrInvalidDB\n}\n\nfunc (db *DB) getInstance() *DB {\n\tif db.clone > 0 {\n\t\ttx := &DB{Config: db.Config, Error: db.Error}\n\n\t\tif db.clone == 1 {\n\t\t\t// clone with new statement\n\t\t\ttx.Statement = &Statement{\n\t\t\t\tDB:        tx,\n\t\t\t\tConnPool:  db.Statement.ConnPool,\n\t\t\t\tContext:   db.Statement.Context,\n\t\t\t\tClauses:   map[string]clause.Clause{},\n\t\t\t\tVars:      make([]any, 0, 8),\n\t\t\t\tSkipHooks: db.Statement.SkipHooks,\n\t\t\t}\n\t\t} else {\n\t\t\t// with clone statement\n\t\t\ttx.Statement = db.Statement.clone()\n\t\t\ttx.Statement.DB = tx\n\t\t}\n\n\t\treturn tx\n\t}\n\n\treturn db\n}\n\n// Expr returns clause.Expr, which can be used to pass SQL expression as params\nfunc Expr(expr string, args ...any) clause.Expr {\n\treturn clause.Expr{SQL: expr, Vars: args}\n}\n\n// SetupJoinTable setup join table schema\nfunc (db *DB) SetupJoinTable(model any, field string, joinTable any) error {\n\tvar (\n\t\ttx                      = db.getInstance()\n\t\tstmt                    = tx.Statement\n\t\tmodelSchema, joinSchema *schema.Schema\n\t)\n\n\terr := stmt.Parse(model)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmodelSchema = stmt.Schema\n\n\terr = stmt.Parse(joinTable)\n\tif err != nil {\n\t\treturn err\n\t}\n\tjoinSchema = stmt.Schema\n\n\trelation, ok := modelSchema.Relationships.Relations[field]\n\tisRelation := ok && relation.JoinTable != nil\n\tif !isRelation {\n\t\treturn fmt.Errorf(\"failed to find relation: %s\", field)\n\t}\n\n\tfor _, ref := range relation.References {\n\t\tf := joinSchema.LookUpField(ref.ForeignKey.DBName)\n\t\tif f == nil {\n\t\t\treturn fmt.Errorf(\"missing field %s for join table\", ref.ForeignKey.DBName)\n\t\t}\n\n\t\tf.DataType = ref.ForeignKey.DataType\n\t\tf.GORMDataType = ref.ForeignKey.GORMDataType\n\t\tif f.Size == 0 {\n\t\t\tf.Size = ref.ForeignKey.Size\n\t\t}\n\t\tref.ForeignKey = f\n\t}\n\n\tfor name, rel := range relation.JoinTable.Relationships.Relations {\n\t\tif _, ok := joinSchema.Relationships.Relations[name]; !ok {\n\t\t\trel.Schema = joinSchema\n\t\t\tjoinSchema.Relationships.Relations[name] = rel\n\t\t}\n\t}\n\trelation.JoinTable = joinSchema\n\n\treturn nil\n}\n\n// Use use plugin\nfunc (db *DB) Use(plugin Plugin) error {\n\tname := plugin.Name()\n\tif _, ok := db.Plugins[name]; ok {\n\t\treturn ErrRegistered\n\t}\n\tif err := plugin.Initialize(db); err != nil {\n\t\treturn err\n\t}\n\tdb.Plugins[name] = plugin\n\treturn nil\n}\n\n// ToSQL for generate SQL string.\n//\n//\tdb.ToSQL(func(tx *gorm.DB) *gorm.DB {\n//\t\t\treturn tx.Model(&User{}).Where(&User{Name: \"foo\", Age: 20})\n//\t\t\t\t.Limit(10).Offset(5)\n//\t\t\t\t.Order(\"name ASC\")\n//\t\t\t\t.First(&User{})\n//\t})\nfunc (db *DB) ToSQL(queryFn func(tx *DB) *DB) string {\n\ttx := queryFn(db.Session(&Session{DryRun: true, SkipDefaultTransaction: true}))\n\tstmt := tx.Statement\n\n\treturn db.Dialector.Explain(stmt.SQL.String(), stmt.Vars...)\n}\n"
  },
  {
    "path": "gossh/gorm/inflection/inflections.go",
    "content": "/*\nPackage inflection pluralizes and singularizes English nouns.\n\n\tinflection.Plural(\"person\") => \"people\"\n\tinflection.Plural(\"Person\") => \"People\"\n\tinflection.Plural(\"PERSON\") => \"PEOPLE\"\n\n\tinflection.Singular(\"people\") => \"person\"\n\tinflection.Singular(\"People\") => \"Person\"\n\tinflection.Singular(\"PEOPLE\") => \"PERSON\"\n\n\tinflection.Plural(\"FancyPerson\") => \"FancydPeople\"\n\tinflection.Singular(\"FancyPeople\") => \"FancydPerson\"\n\nStandard rules are from Rails's ActiveSupport (https://github.com/rails/rails/blob/master/activesupport/lib/active_support/inflections.rb)\n\nIf you want to register more rules, follow:\n\n\tinflection.AddUncountable(\"fish\")\n\tinflection.AddIrregular(\"person\", \"people\")\n\tinflection.AddPlural(\"(bu)s$\", \"${1}ses\") # \"bus\" => \"buses\" / \"BUS\" => \"BUSES\" / \"Bus\" => \"Buses\"\n\tinflection.AddSingular(\"(bus)(es)?$\", \"${1}\") # \"buses\" => \"bus\" / \"Buses\" => \"Bus\" / \"BUSES\" => \"BUS\"\n*/\npackage inflection\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n)\n\ntype inflection struct {\n\tregexp  *regexp.Regexp\n\treplace string\n}\n\n// Regular is a regexp find replace inflection\ntype Regular struct {\n\tfind    string\n\treplace string\n}\n\n// Irregular is a hard replace inflection,\n// containing both singular and plural forms\ntype Irregular struct {\n\tsingular string\n\tplural   string\n}\n\n// RegularSlice is a slice of Regular inflections\ntype RegularSlice []Regular\n\n// IrregularSlice is a slice of Irregular inflections\ntype IrregularSlice []Irregular\n\nvar pluralInflections = RegularSlice{\n\t{\"([a-z])$\", \"${1}s\"},\n\t{\"s$\", \"s\"},\n\t{\"^(ax|test)is$\", \"${1}es\"},\n\t{\"(octop|vir)us$\", \"${1}i\"},\n\t{\"(octop|vir)i$\", \"${1}i\"},\n\t{\"(alias|status)$\", \"${1}es\"},\n\t{\"(bu)s$\", \"${1}ses\"},\n\t{\"(buffal|tomat)o$\", \"${1}oes\"},\n\t{\"([ti])um$\", \"${1}a\"},\n\t{\"([ti])a$\", \"${1}a\"},\n\t{\"sis$\", \"ses\"},\n\t{\"(?:([^f])fe|([lr])f)$\", \"${1}${2}ves\"},\n\t{\"(hive)$\", \"${1}s\"},\n\t{\"([^aeiouy]|qu)y$\", \"${1}ies\"},\n\t{\"(x|ch|ss|sh)$\", \"${1}es\"},\n\t{\"(matr|vert|ind)(?:ix|ex)$\", \"${1}ices\"},\n\t{\"^(m|l)ouse$\", \"${1}ice\"},\n\t{\"^(m|l)ice$\", \"${1}ice\"},\n\t{\"^(ox)$\", \"${1}en\"},\n\t{\"^(oxen)$\", \"${1}\"},\n\t{\"(quiz)$\", \"${1}zes\"},\n}\n\nvar singularInflections = RegularSlice{\n\t{\"s$\", \"\"},\n\t{\"(ss)$\", \"${1}\"},\n\t{\"(n)ews$\", \"${1}ews\"},\n\t{\"([ti])a$\", \"${1}um\"},\n\t{\"((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)(sis|ses)$\", \"${1}sis\"},\n\t{\"(^analy)(sis|ses)$\", \"${1}sis\"},\n\t{\"([^f])ves$\", \"${1}fe\"},\n\t{\"(hive)s$\", \"${1}\"},\n\t{\"(tive)s$\", \"${1}\"},\n\t{\"([lr])ves$\", \"${1}f\"},\n\t{\"([^aeiouy]|qu)ies$\", \"${1}y\"},\n\t{\"(s)eries$\", \"${1}eries\"},\n\t{\"(m)ovies$\", \"${1}ovie\"},\n\t{\"(c)ookies$\", \"${1}ookie\"},\n\t{\"(x|ch|ss|sh)es$\", \"${1}\"},\n\t{\"^(m|l)ice$\", \"${1}ouse\"},\n\t{\"(bus)(es)?$\", \"${1}\"},\n\t{\"(o)es$\", \"${1}\"},\n\t{\"(shoe)s$\", \"${1}\"},\n\t{\"(cris|test)(is|es)$\", \"${1}is\"},\n\t{\"^(a)x[ie]s$\", \"${1}xis\"},\n\t{\"(octop|vir)(us|i)$\", \"${1}us\"},\n\t{\"(alias|status)(es)?$\", \"${1}\"},\n\t{\"^(ox)en\", \"${1}\"},\n\t{\"(vert|ind)ices$\", \"${1}ex\"},\n\t{\"(matr)ices$\", \"${1}ix\"},\n\t{\"(quiz)zes$\", \"${1}\"},\n\t{\"(database)s$\", \"${1}\"},\n}\n\nvar irregularInflections = IrregularSlice{\n\t{\"person\", \"people\"},\n\t{\"man\", \"men\"},\n\t{\"child\", \"children\"},\n\t{\"sex\", \"sexes\"},\n\t{\"move\", \"moves\"},\n\t{\"mombie\", \"mombies\"},\n}\n\nvar uncountableInflections = []string{\"equipment\", \"information\", \"rice\", \"money\", \"species\", \"series\", \"fish\", \"sheep\", \"jeans\", \"police\"}\n\nvar compiledPluralMaps []inflection\nvar compiledSingularMaps []inflection\n\nfunc compile() {\n\tcompiledPluralMaps = []inflection{}\n\tcompiledSingularMaps = []inflection{}\n\tfor _, uncountable := range uncountableInflections {\n\t\tinf := inflection{\n\t\t\tregexp:  regexp.MustCompile(\"^(?i)(\" + uncountable + \")$\"),\n\t\t\treplace: \"${1}\",\n\t\t}\n\t\tcompiledPluralMaps = append(compiledPluralMaps, inf)\n\t\tcompiledSingularMaps = append(compiledSingularMaps, inf)\n\t}\n\n\tfor _, value := range irregularInflections {\n\t\tinfs := []inflection{\n\t\t\tinflection{regexp: regexp.MustCompile(strings.ToUpper(value.singular) + \"$\"), replace: strings.ToUpper(value.plural)},\n\t\t\tinflection{regexp: regexp.MustCompile(strings.Title(value.singular) + \"$\"), replace: strings.Title(value.plural)},\n\t\t\tinflection{regexp: regexp.MustCompile(value.singular + \"$\"), replace: value.plural},\n\t\t}\n\t\tcompiledPluralMaps = append(compiledPluralMaps, infs...)\n\t}\n\n\tfor _, value := range irregularInflections {\n\t\tinfs := []inflection{\n\t\t\tinflection{regexp: regexp.MustCompile(strings.ToUpper(value.plural) + \"$\"), replace: strings.ToUpper(value.singular)},\n\t\t\tinflection{regexp: regexp.MustCompile(strings.Title(value.plural) + \"$\"), replace: strings.Title(value.singular)},\n\t\t\tinflection{regexp: regexp.MustCompile(value.plural + \"$\"), replace: value.singular},\n\t\t}\n\t\tcompiledSingularMaps = append(compiledSingularMaps, infs...)\n\t}\n\n\tfor i := len(pluralInflections) - 1; i >= 0; i-- {\n\t\tvalue := pluralInflections[i]\n\t\tinfs := []inflection{\n\t\t\tinflection{regexp: regexp.MustCompile(strings.ToUpper(value.find)), replace: strings.ToUpper(value.replace)},\n\t\t\tinflection{regexp: regexp.MustCompile(value.find), replace: value.replace},\n\t\t\tinflection{regexp: regexp.MustCompile(\"(?i)\" + value.find), replace: value.replace},\n\t\t}\n\t\tcompiledPluralMaps = append(compiledPluralMaps, infs...)\n\t}\n\n\tfor i := len(singularInflections) - 1; i >= 0; i-- {\n\t\tvalue := singularInflections[i]\n\t\tinfs := []inflection{\n\t\t\tinflection{regexp: regexp.MustCompile(strings.ToUpper(value.find)), replace: strings.ToUpper(value.replace)},\n\t\t\tinflection{regexp: regexp.MustCompile(value.find), replace: value.replace},\n\t\t\tinflection{regexp: regexp.MustCompile(\"(?i)\" + value.find), replace: value.replace},\n\t\t}\n\t\tcompiledSingularMaps = append(compiledSingularMaps, infs...)\n\t}\n}\n\nfunc init() {\n\tcompile()\n}\n\n// AddPlural adds a plural inflection\nfunc AddPlural(find, replace string) {\n\tpluralInflections = append(pluralInflections, Regular{find, replace})\n\tcompile()\n}\n\n// AddSingular adds a singular inflection\nfunc AddSingular(find, replace string) {\n\tsingularInflections = append(singularInflections, Regular{find, replace})\n\tcompile()\n}\n\n// AddIrregular adds an irregular inflection\nfunc AddIrregular(singular, plural string) {\n\tirregularInflections = append(irregularInflections, Irregular{singular, plural})\n\tcompile()\n}\n\n// AddUncountable adds an uncountable inflection\nfunc AddUncountable(values ...string) {\n\tuncountableInflections = append(uncountableInflections, values...)\n\tcompile()\n}\n\n// GetPlural retrieves the plural inflection values\nfunc GetPlural() RegularSlice {\n\tplurals := make(RegularSlice, len(pluralInflections))\n\tcopy(plurals, pluralInflections)\n\treturn plurals\n}\n\n// GetSingular retrieves the singular inflection values\nfunc GetSingular() RegularSlice {\n\tsingulars := make(RegularSlice, len(singularInflections))\n\tcopy(singulars, singularInflections)\n\treturn singulars\n}\n\n// GetIrregular retrieves the irregular inflection values\nfunc GetIrregular() IrregularSlice {\n\tirregular := make(IrregularSlice, len(irregularInflections))\n\tcopy(irregular, irregularInflections)\n\treturn irregular\n}\n\n// GetUncountable retrieves the uncountable inflection values\nfunc GetUncountable() []string {\n\tuncountables := make([]string, len(uncountableInflections))\n\tcopy(uncountables, uncountableInflections)\n\treturn uncountables\n}\n\n// SetPlural sets the plural inflections slice\nfunc SetPlural(inflections RegularSlice) {\n\tpluralInflections = inflections\n\tcompile()\n}\n\n// SetSingular sets the singular inflections slice\nfunc SetSingular(inflections RegularSlice) {\n\tsingularInflections = inflections\n\tcompile()\n}\n\n// SetIrregular sets the irregular inflections slice\nfunc SetIrregular(inflections IrregularSlice) {\n\tirregularInflections = inflections\n\tcompile()\n}\n\n// SetUncountable sets the uncountable inflections slice\nfunc SetUncountable(inflections []string) {\n\tuncountableInflections = inflections\n\tcompile()\n}\n\n// Plural converts a word to its plural form\nfunc Plural(str string) string {\n\tfor _, inflection := range compiledPluralMaps {\n\t\tif inflection.regexp.MatchString(str) {\n\t\t\treturn inflection.regexp.ReplaceAllString(str, inflection.replace)\n\t\t}\n\t}\n\treturn str\n}\n\n// Singular converts a word to its singular form\nfunc Singular(str string) string {\n\tfor _, inflection := range compiledSingularMaps {\n\t\tif inflection.regexp.MatchString(str) {\n\t\t\treturn inflection.regexp.ReplaceAllString(str, inflection.replace)\n\t\t}\n\t}\n\treturn str\n}\n"
  },
  {
    "path": "gossh/gorm/interfaces.go",
    "content": "package gorm\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n)\n\n// Dialector GORM database dialector\ntype Dialector interface {\n\tName() string\n\tInitialize(*DB) error\n\tMigrator(db *DB) Migrator\n\tDataTypeOf(*schema.Field) string\n\tDefaultValueOf(*schema.Field) clause.Expression\n\tBindVarTo(writer clause.Writer, stmt *Statement, v any)\n\tQuoteTo(clause.Writer, string)\n\tExplain(sql string, vars ...any) string\n}\n\n// Plugin GORM plugin interface\ntype Plugin interface {\n\tName() string\n\tInitialize(*DB) error\n}\n\ntype ParamsFilter interface {\n\tParamsFilter(ctx context.Context, sql string, params ...any) (string, []any)\n}\n\n// ConnPool db conns pool interface\ntype ConnPool interface {\n\tPrepareContext(ctx context.Context, query string) (*sql.Stmt, error)\n\tExecContext(ctx context.Context, query string, args ...any) (sql.Result, error)\n\tQueryContext(ctx context.Context, query string, args ...any) (*sql.Rows, error)\n\tQueryRowContext(ctx context.Context, query string, args ...any) *sql.Row\n}\n\n// SavePointerDialectorInterface save pointer interface\ntype SavePointerDialectorInterface interface {\n\tSavePoint(tx *DB, name string) error\n\tRollbackTo(tx *DB, name string) error\n}\n\n// TxBeginner tx beginner\ntype TxBeginner interface {\n\tBeginTx(ctx context.Context, opts *sql.TxOptions) (*sql.Tx, error)\n}\n\n// ConnPoolBeginner conn pool beginner\ntype ConnPoolBeginner interface {\n\tBeginTx(ctx context.Context, opts *sql.TxOptions) (ConnPool, error)\n}\n\n// TxCommitter tx committer\ntype TxCommitter interface {\n\tCommit() error\n\tRollback() error\n}\n\n// Tx sql.Tx interface\ntype Tx interface {\n\tConnPool\n\tTxCommitter\n\tStmtContext(ctx context.Context, stmt *sql.Stmt) *sql.Stmt\n}\n\n// Valuer gorm valuer interface\ntype Valuer interface {\n\tGormValue(context.Context, *DB) clause.Expr\n}\n\n// GetDBConnector SQL db connector\ntype GetDBConnector interface {\n\tGetDBConn() (*sql.DB, error)\n}\n\n// Rows rows interface\ntype Rows interface {\n\tColumns() ([]string, error)\n\tColumnTypes() ([]*sql.ColumnType, error)\n\tNext() bool\n\tScan(dest ...any) error\n\tErr() error\n\tClose() error\n}\n\ntype ErrorTranslator interface {\n\tTranslate(err error) error\n}\n"
  },
  {
    "path": "gossh/gorm/logger/logger.go",
    "content": "package logger\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"time\"\n\n\t\"gossh/gorm/utils\"\n)\n\n// ErrRecordNotFound record not found error\nvar ErrRecordNotFound = errors.New(\"record not found\")\n\n// Colors\nconst (\n\tReset       = \"\\033[0m\"\n\tRed         = \"\\033[31m\"\n\tGreen       = \"\\033[32m\"\n\tYellow      = \"\\033[33m\"\n\tBlue        = \"\\033[34m\"\n\tMagenta     = \"\\033[35m\"\n\tCyan        = \"\\033[36m\"\n\tWhite       = \"\\033[37m\"\n\tBlueBold    = \"\\033[34;1m\"\n\tMagentaBold = \"\\033[35;1m\"\n\tRedBold     = \"\\033[31;1m\"\n\tYellowBold  = \"\\033[33;1m\"\n)\n\n// LogLevel log level\ntype LogLevel int\n\nconst (\n\t// Silent silent log level\n\tSilent LogLevel = iota + 1\n\t// Error error log level\n\tError\n\t// Warn warn log level\n\tWarn\n\t// Info info log level\n\tInfo\n)\n\n// Writer log writer interface\ntype Writer interface {\n\tPrintf(string, ...any)\n}\n\n// Config logger config\ntype Config struct {\n\tSlowThreshold             time.Duration\n\tColorful                  bool\n\tIgnoreRecordNotFoundError bool\n\tParameterizedQueries      bool\n\tLogLevel                  LogLevel\n}\n\n// Interface logger interface\ntype Interface interface {\n\tLogMode(LogLevel) Interface\n\tInfo(context.Context, string, ...any)\n\tWarn(context.Context, string, ...any)\n\tError(context.Context, string, ...any)\n\tTrace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error)\n}\n\nvar (\n\t// Discard logger will print any log to io.Discard\n\tDiscard = New(log.New(io.Discard, \"\", log.LstdFlags), Config{})\n\t// Default Default logger\n\tDefault = New(log.New(os.Stdout, \"\\r\\n\", log.LstdFlags), Config{\n\t\tSlowThreshold:             200 * time.Millisecond,\n\t\tLogLevel:                  Warn,\n\t\tIgnoreRecordNotFoundError: false,\n\t\tColorful:                  true,\n\t})\n\t// Recorder logger records running SQL into a recorder instance\n\tRecorder = traceRecorder{Interface: Default, BeginAt: time.Now()}\n)\n\n// New initialize logger\nfunc New(writer Writer, config Config) Interface {\n\tvar (\n\t\tinfoStr      = \"%s\\n[info] \"\n\t\twarnStr      = \"%s\\n[warn] \"\n\t\terrStr       = \"%s\\n[error] \"\n\t\ttraceStr     = \"%s\\n[%.3fms] [rows:%v] %s\"\n\t\ttraceWarnStr = \"%s %s\\n[%.3fms] [rows:%v] %s\"\n\t\ttraceErrStr  = \"%s %s\\n[%.3fms] [rows:%v] %s\"\n\t)\n\n\tif config.Colorful {\n\t\tinfoStr = Green + \"%s\\n\" + Reset + Green + \"[info] \" + Reset\n\t\twarnStr = BlueBold + \"%s\\n\" + Reset + Magenta + \"[warn] \" + Reset\n\t\terrStr = Magenta + \"%s\\n\" + Reset + Red + \"[error] \" + Reset\n\t\ttraceStr = Green + \"%s\\n\" + Reset + Yellow + \"[%.3fms] \" + BlueBold + \"[rows:%v]\" + Reset + \" %s\"\n\t\ttraceWarnStr = Green + \"%s \" + Yellow + \"%s\\n\" + Reset + RedBold + \"[%.3fms] \" + Yellow + \"[rows:%v]\" + Magenta + \" %s\" + Reset\n\t\ttraceErrStr = RedBold + \"%s \" + MagentaBold + \"%s\\n\" + Reset + Yellow + \"[%.3fms] \" + BlueBold + \"[rows:%v]\" + Reset + \" %s\"\n\t}\n\n\treturn &logger{\n\t\tWriter:       writer,\n\t\tConfig:       config,\n\t\tinfoStr:      infoStr,\n\t\twarnStr:      warnStr,\n\t\terrStr:       errStr,\n\t\ttraceStr:     traceStr,\n\t\ttraceWarnStr: traceWarnStr,\n\t\ttraceErrStr:  traceErrStr,\n\t}\n}\n\ntype logger struct {\n\tWriter\n\tConfig\n\tinfoStr, warnStr, errStr            string\n\ttraceStr, traceErrStr, traceWarnStr string\n}\n\n// LogMode log mode\nfunc (l *logger) LogMode(level LogLevel) Interface {\n\tnewlogger := *l\n\tnewlogger.LogLevel = level\n\treturn &newlogger\n}\n\n// Info print info\nfunc (l *logger) Info(ctx context.Context, msg string, data ...any) {\n\tif l.LogLevel >= Info {\n\t\tl.Printf(l.infoStr+msg, append([]any{utils.FileWithLineNum()}, data...)...)\n\t}\n}\n\n// Warn print warn messages\nfunc (l *logger) Warn(ctx context.Context, msg string, data ...any) {\n\tif l.LogLevel >= Warn {\n\t\tl.Printf(l.warnStr+msg, append([]any{utils.FileWithLineNum()}, data...)...)\n\t}\n}\n\n// Error print error messages\nfunc (l *logger) Error(ctx context.Context, msg string, data ...any) {\n\tif l.LogLevel >= Error {\n\t\tl.Printf(l.errStr+msg, append([]any{utils.FileWithLineNum()}, data...)...)\n\t}\n}\n\n// Trace print sql message\n//\n//nolint:cyclop\nfunc (l *logger) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {\n\tif l.LogLevel <= Silent {\n\t\treturn\n\t}\n\n\telapsed := time.Since(begin)\n\tswitch {\n\tcase err != nil && l.LogLevel >= Error && (!errors.Is(err, ErrRecordNotFound) || !l.IgnoreRecordNotFoundError):\n\t\tsql, rows := fc()\n\t\tif rows == -1 {\n\t\t\tl.Printf(l.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, \"-\", sql)\n\t\t} else {\n\t\t\tl.Printf(l.traceErrStr, utils.FileWithLineNum(), err, float64(elapsed.Nanoseconds())/1e6, rows, sql)\n\t\t}\n\tcase elapsed > l.SlowThreshold && l.SlowThreshold != 0 && l.LogLevel >= Warn:\n\t\tsql, rows := fc()\n\t\tslowLog := fmt.Sprintf(\"SLOW SQL >= %v\", l.SlowThreshold)\n\t\tif rows == -1 {\n\t\t\tl.Printf(l.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, \"-\", sql)\n\t\t} else {\n\t\t\tl.Printf(l.traceWarnStr, utils.FileWithLineNum(), slowLog, float64(elapsed.Nanoseconds())/1e6, rows, sql)\n\t\t}\n\tcase l.LogLevel == Info:\n\t\tsql, rows := fc()\n\t\tif rows == -1 {\n\t\t\tl.Printf(l.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, \"-\", sql)\n\t\t} else {\n\t\t\tl.Printf(l.traceStr, utils.FileWithLineNum(), float64(elapsed.Nanoseconds())/1e6, rows, sql)\n\t\t}\n\t}\n}\n\n// ParamsFilter filter params\nfunc (l *logger) ParamsFilter(ctx context.Context, sql string, params ...any) (string, []any) {\n\tif l.Config.ParameterizedQueries {\n\t\treturn sql, nil\n\t}\n\treturn sql, params\n}\n\ntype traceRecorder struct {\n\tInterface\n\tBeginAt      time.Time\n\tSQL          string\n\tRowsAffected int64\n\tErr          error\n}\n\n// New trace recorder\nfunc (l *traceRecorder) New() *traceRecorder {\n\treturn &traceRecorder{Interface: l.Interface, BeginAt: time.Now()}\n}\n\n// Trace implement logger interface\nfunc (l *traceRecorder) Trace(ctx context.Context, begin time.Time, fc func() (string, int64), err error) {\n\tl.BeginAt = begin\n\tl.SQL, l.RowsAffected = fc()\n\tl.Err = err\n}\n"
  },
  {
    "path": "gossh/gorm/logger/sql.go",
    "content": "package logger\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode\"\n\n\t\"gossh/gorm/utils\"\n)\n\nconst (\n\ttmFmtWithMS = \"2006-01-02 15:04:05.999\"\n\ttmFmtZero   = \"0000-00-00 00:00:00\"\n\tnullStr     = \"NULL\"\n)\n\nfunc isPrintable(s string) bool {\n\tfor _, r := range s {\n\t\tif !unicode.IsPrint(r) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// A list of Go types that should be converted to SQL primitives\nvar convertibleTypes = []reflect.Type{reflect.TypeOf(time.Time{}), reflect.TypeOf(false), reflect.TypeOf([]byte{})}\n\n// RegEx matches only numeric values\nvar numericPlaceholderRe = regexp.MustCompile(`\\$\\d+\\$`)\n\nfunc isNumeric(k reflect.Kind) bool {\n\tswitch k {\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn true\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn true\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\n// ExplainSQL generate SQL string with given parameters, the generated SQL is expected to be used in logger, execute it might introduce a SQL injection vulnerability\nfunc ExplainSQL(sql string, numericPlaceholder *regexp.Regexp, escaper string, avars ...any) string {\n\tvar (\n\t\tconvertParams func(any, int)\n\t\tvars          = make([]string, len(avars))\n\t)\n\n\tconvertParams = func(v any, idx int) {\n\t\tswitch v := v.(type) {\n\t\tcase bool:\n\t\t\tvars[idx] = strconv.FormatBool(v)\n\t\tcase time.Time:\n\t\t\tif v.IsZero() {\n\t\t\t\tvars[idx] = escaper + tmFmtZero + escaper\n\t\t\t} else {\n\t\t\t\tvars[idx] = escaper + v.Format(tmFmtWithMS) + escaper\n\t\t\t}\n\t\tcase *time.Time:\n\t\t\tif v != nil {\n\t\t\t\tif v.IsZero() {\n\t\t\t\t\tvars[idx] = escaper + tmFmtZero + escaper\n\t\t\t\t} else {\n\t\t\t\t\tvars[idx] = escaper + v.Format(tmFmtWithMS) + escaper\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tvars[idx] = nullStr\n\t\t\t}\n\t\tcase driver.Valuer:\n\t\t\treflectValue := reflect.ValueOf(v)\n\t\t\tif v != nil && reflectValue.IsValid() && ((reflectValue.Kind() == reflect.Ptr && !reflectValue.IsNil()) || reflectValue.Kind() != reflect.Ptr) {\n\t\t\t\tr, _ := v.Value()\n\t\t\t\tconvertParams(r, idx)\n\t\t\t} else {\n\t\t\t\tvars[idx] = nullStr\n\t\t\t}\n\t\tcase fmt.Stringer:\n\t\t\treflectValue := reflect.ValueOf(v)\n\t\t\tswitch reflectValue.Kind() {\n\t\t\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\t\t\tvars[idx] = fmt.Sprintf(\"%d\", reflectValue.Interface())\n\t\t\tcase reflect.Float32, reflect.Float64:\n\t\t\t\tvars[idx] = fmt.Sprintf(\"%.6f\", reflectValue.Interface())\n\t\t\tcase reflect.Bool:\n\t\t\t\tvars[idx] = fmt.Sprintf(\"%t\", reflectValue.Interface())\n\t\t\tcase reflect.String:\n\t\t\t\tvars[idx] = escaper + strings.ReplaceAll(fmt.Sprintf(\"%v\", v), escaper, escaper+escaper) + escaper\n\t\t\tdefault:\n\t\t\t\tif v != nil && reflectValue.IsValid() && ((reflectValue.Kind() == reflect.Ptr && !reflectValue.IsNil()) || reflectValue.Kind() != reflect.Ptr) {\n\t\t\t\t\tvars[idx] = escaper + strings.ReplaceAll(fmt.Sprintf(\"%v\", v), escaper, escaper+escaper) + escaper\n\t\t\t\t} else {\n\t\t\t\t\tvars[idx] = nullStr\n\t\t\t\t}\n\t\t\t}\n\t\tcase []byte:\n\t\t\tif s := string(v); isPrintable(s) {\n\t\t\t\tvars[idx] = escaper + strings.ReplaceAll(s, escaper, escaper+escaper) + escaper\n\t\t\t} else {\n\t\t\t\tvars[idx] = escaper + \"<binary>\" + escaper\n\t\t\t}\n\t\tcase int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:\n\t\t\tvars[idx] = utils.ToString(v)\n\t\tcase float32:\n\t\t\tvars[idx] = strconv.FormatFloat(float64(v), 'f', -1, 32)\n\t\tcase float64:\n\t\t\tvars[idx] = strconv.FormatFloat(v, 'f', -1, 64)\n\t\tcase string:\n\t\t\tvars[idx] = escaper + strings.ReplaceAll(v, escaper, escaper+escaper) + escaper\n\t\tdefault:\n\t\t\trv := reflect.ValueOf(v)\n\t\t\tif v == nil || !rv.IsValid() || rv.Kind() == reflect.Ptr && rv.IsNil() {\n\t\t\t\tvars[idx] = nullStr\n\t\t\t} else if valuer, ok := v.(driver.Valuer); ok {\n\t\t\t\tv, _ = valuer.Value()\n\t\t\t\tconvertParams(v, idx)\n\t\t\t} else if rv.Kind() == reflect.Ptr && !rv.IsZero() {\n\t\t\t\tconvertParams(reflect.Indirect(rv).Interface(), idx)\n\t\t\t} else if isNumeric(rv.Kind()) {\n\t\t\t\tif rv.CanInt() || rv.CanUint() {\n\t\t\t\t\tvars[idx] = fmt.Sprintf(\"%d\", rv.Interface())\n\t\t\t\t} else {\n\t\t\t\t\tvars[idx] = fmt.Sprintf(\"%.6f\", rv.Interface())\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor _, t := range convertibleTypes {\n\t\t\t\t\tif rv.Type().ConvertibleTo(t) {\n\t\t\t\t\t\tconvertParams(rv.Convert(t).Interface(), idx)\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvars[idx] = escaper + strings.ReplaceAll(fmt.Sprint(v), escaper, escaper+escaper) + escaper\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, v := range avars {\n\t\tconvertParams(v, idx)\n\t}\n\n\tif numericPlaceholder == nil {\n\t\tvar idx int\n\t\tvar newSQL strings.Builder\n\n\t\tfor _, v := range []byte(sql) {\n\t\t\tif v == '?' {\n\t\t\t\tif len(vars) > idx {\n\t\t\t\t\tnewSQL.WriteString(vars[idx])\n\t\t\t\t\tidx++\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\tnewSQL.WriteByte(v)\n\t\t}\n\n\t\tsql = newSQL.String()\n\t} else {\n\t\tsql = numericPlaceholder.ReplaceAllString(sql, \"$$$1$$\")\n\n\t\tsql = numericPlaceholderRe.ReplaceAllStringFunc(sql, func(v string) string {\n\t\t\tnum := v[1 : len(v)-1]\n\t\t\tn, _ := strconv.Atoi(num)\n\n\t\t\t// position var start from 1 ($1, $2)\n\t\t\tn -= 1\n\t\t\tif n >= 0 && n <= len(vars)-1 {\n\t\t\t\treturn vars[n]\n\t\t\t}\n\t\t\treturn v\n\t\t})\n\t}\n\n\treturn sql\n}\n"
  },
  {
    "path": "gossh/gorm/migrator/column_type.go",
    "content": "package migrator\n\nimport (\n\t\"database/sql\"\n\t\"reflect\"\n)\n\n// ColumnType column type implements ColumnType interface\ntype ColumnType struct {\n\tSQLColumnType      *sql.ColumnType\n\tNameValue          sql.NullString\n\tDataTypeValue      sql.NullString\n\tColumnTypeValue    sql.NullString\n\tPrimaryKeyValue    sql.NullBool\n\tUniqueValue        sql.NullBool\n\tAutoIncrementValue sql.NullBool\n\tLengthValue        sql.NullInt64\n\tDecimalSizeValue   sql.NullInt64\n\tScaleValue         sql.NullInt64\n\tNullableValue      sql.NullBool\n\tScanTypeValue      reflect.Type\n\tCommentValue       sql.NullString\n\tDefaultValueValue  sql.NullString\n}\n\n// Name returns the name or alias of the column.\nfunc (ct ColumnType) Name() string {\n\tif ct.NameValue.Valid {\n\t\treturn ct.NameValue.String\n\t}\n\treturn ct.SQLColumnType.Name()\n}\n\n// DatabaseTypeName returns the database system name of the column type. If an empty\n// string is returned, then the driver type name is not supported.\n// Consult your driver documentation for a list of driver data types. Length specifiers\n// are not included.\n// Common type names include \"VARCHAR\", \"TEXT\", \"NVARCHAR\", \"DECIMAL\", \"BOOL\",\n// \"INT\", and \"BIGINT\".\nfunc (ct ColumnType) DatabaseTypeName() string {\n\tif ct.DataTypeValue.Valid {\n\t\treturn ct.DataTypeValue.String\n\t}\n\treturn ct.SQLColumnType.DatabaseTypeName()\n}\n\n// ColumnType returns the database type of the column. like `varchar(16)`\nfunc (ct ColumnType) ColumnType() (columnType string, ok bool) {\n\treturn ct.ColumnTypeValue.String, ct.ColumnTypeValue.Valid\n}\n\n// PrimaryKey returns the column is primary key or not.\nfunc (ct ColumnType) PrimaryKey() (isPrimaryKey bool, ok bool) {\n\treturn ct.PrimaryKeyValue.Bool, ct.PrimaryKeyValue.Valid\n}\n\n// AutoIncrement returns the column is auto increment or not.\nfunc (ct ColumnType) AutoIncrement() (isAutoIncrement bool, ok bool) {\n\treturn ct.AutoIncrementValue.Bool, ct.AutoIncrementValue.Valid\n}\n\n// Length returns the column type length for variable length column types\nfunc (ct ColumnType) Length() (length int64, ok bool) {\n\tif ct.LengthValue.Valid {\n\t\treturn ct.LengthValue.Int64, true\n\t}\n\treturn ct.SQLColumnType.Length()\n}\n\n// DecimalSize returns the scale and precision of a decimal type.\nfunc (ct ColumnType) DecimalSize() (precision int64, scale int64, ok bool) {\n\tif ct.DecimalSizeValue.Valid {\n\t\treturn ct.DecimalSizeValue.Int64, ct.ScaleValue.Int64, true\n\t}\n\treturn ct.SQLColumnType.DecimalSize()\n}\n\n// Nullable reports whether the column may be null.\nfunc (ct ColumnType) Nullable() (nullable bool, ok bool) {\n\tif ct.NullableValue.Valid {\n\t\treturn ct.NullableValue.Bool, true\n\t}\n\treturn ct.SQLColumnType.Nullable()\n}\n\n// Unique reports whether the column may be unique.\nfunc (ct ColumnType) Unique() (unique bool, ok bool) {\n\treturn ct.UniqueValue.Bool, ct.UniqueValue.Valid\n}\n\n// ScanType returns a Go type suitable for scanning into using Rows.Scan.\nfunc (ct ColumnType) ScanType() reflect.Type {\n\tif ct.ScanTypeValue != nil {\n\t\treturn ct.ScanTypeValue\n\t}\n\treturn ct.SQLColumnType.ScanType()\n}\n\n// Comment returns the comment of current column.\nfunc (ct ColumnType) Comment() (value string, ok bool) {\n\treturn ct.CommentValue.String, ct.CommentValue.Valid\n}\n\n// DefaultValue returns the default value of current column.\nfunc (ct ColumnType) DefaultValue() (value string, ok bool) {\n\treturn ct.DefaultValueValue.String, ct.DefaultValueValue.Valid\n}\n"
  },
  {
    "path": "gossh/gorm/migrator/index.go",
    "content": "package migrator\n\nimport \"database/sql\"\n\n// Index implements gorm.Index interface\ntype Index struct {\n\tTableName       string\n\tNameValue       string\n\tColumnList      []string\n\tPrimaryKeyValue sql.NullBool\n\tUniqueValue     sql.NullBool\n\tOptionValue     string\n}\n\n// Table return the table name of the index.\nfunc (idx Index) Table() string {\n\treturn idx.TableName\n}\n\n// Name return the name of the index.\nfunc (idx Index) Name() string {\n\treturn idx.NameValue\n}\n\n// Columns return the columns of the index\nfunc (idx Index) Columns() []string {\n\treturn idx.ColumnList\n}\n\n// PrimaryKey returns the index is primary key or not.\nfunc (idx Index) PrimaryKey() (isPrimaryKey bool, ok bool) {\n\treturn idx.PrimaryKeyValue.Bool, idx.PrimaryKeyValue.Valid\n}\n\n// Unique returns whether the index is unique or not.\nfunc (idx Index) Unique() (unique bool, ok bool) {\n\treturn idx.UniqueValue.Bool, idx.UniqueValue.Valid\n}\n\n// Option return the optional attribute of the index\nfunc (idx Index) Option() string {\n\treturn idx.OptionValue\n}\n"
  },
  {
    "path": "gossh/gorm/migrator/migrator.go",
    "content": "package migrator\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"errors\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/schema\"\n)\n\n// This regular expression seeks to find a sequence of digits (\\d+) among zero or more non-digit characters (\\D*),\n// with a possible trailing non-digit character (\\D?).\n\n// For example, values that can pass this regular expression are:\n// - \"123\"\n// - \"abc456\"\n// -\"%$#@789\"\nvar regFullDataType = regexp.MustCompile(`\\D*(\\d+)\\D?`)\n\n// TODO:? Create const vars for raw sql queries ?\n\nvar _ gorm.Migrator = (*Migrator)(nil)\n\n// Migrator m struct\ntype Migrator struct {\n\tConfig\n}\n\n// Config schema config\ntype Config struct {\n\tCreateIndexAfterCreateTable bool\n\tDB                          *gorm.DB\n\tgorm.Dialector\n}\n\ntype printSQLLogger struct {\n\tlogger.Interface\n}\n\nfunc (l *printSQLLogger) Trace(ctx context.Context, begin time.Time, fc func() (sql string, rowsAffected int64), err error) {\n\tsql, _ := fc()\n\tfmt.Println(sql + \";\")\n\tl.Interface.Trace(ctx, begin, fc, err)\n}\n\n// GormDataTypeInterface gorm data type interface\ntype GormDataTypeInterface interface {\n\tGormDBDataType(*gorm.DB, *schema.Field) string\n}\n\n// RunWithValue run migration with statement value\nfunc (m Migrator) RunWithValue(value any, fc func(*gorm.Statement) error) error {\n\tstmt := &gorm.Statement{DB: m.DB}\n\tif m.DB.Statement != nil {\n\t\tstmt.Table = m.DB.Statement.Table\n\t\tstmt.TableExpr = m.DB.Statement.TableExpr\n\t}\n\n\tif table, ok := value.(string); ok {\n\t\tstmt.Table = table\n\t} else if err := stmt.ParseWithSpecialTableName(value, stmt.Table); err != nil {\n\t\treturn err\n\t}\n\n\treturn fc(stmt)\n}\n\n// DataTypeOf return field's db data type\nfunc (m Migrator) DataTypeOf(field *schema.Field) string {\n\tfieldValue := reflect.New(field.IndirectFieldType)\n\tif dataTyper, ok := fieldValue.Interface().(GormDataTypeInterface); ok {\n\t\tif dataType := dataTyper.GormDBDataType(m.DB, field); dataType != \"\" {\n\t\t\treturn dataType\n\t\t}\n\t}\n\n\treturn m.Dialector.DataTypeOf(field)\n}\n\n// FullDataTypeOf returns field's db full data type\nfunc (m Migrator) FullDataTypeOf(field *schema.Field) (expr clause.Expr) {\n\texpr.SQL = m.DataTypeOf(field)\n\n\tif field.NotNull {\n\t\texpr.SQL += \" NOT NULL\"\n\t}\n\n\tif field.HasDefaultValue && (field.DefaultValueInterface != nil || field.DefaultValue != \"\") {\n\t\tif field.DefaultValueInterface != nil {\n\t\t\tdefaultStmt := &gorm.Statement{Vars: []any{field.DefaultValueInterface}}\n\t\t\tm.Dialector.BindVarTo(defaultStmt, defaultStmt, field.DefaultValueInterface)\n\t\t\texpr.SQL += \" DEFAULT \" + m.Dialector.Explain(defaultStmt.SQL.String(), field.DefaultValueInterface)\n\t\t} else if field.DefaultValue != \"(-)\" {\n\t\t\texpr.SQL += \" DEFAULT \" + field.DefaultValue\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (m Migrator) GetQueryAndExecTx() (queryTx, execTx *gorm.DB) {\n\tqueryTx = m.DB.Session(&gorm.Session{})\n\texecTx = queryTx\n\tif m.DB.DryRun {\n\t\tqueryTx.DryRun = false\n\t\texecTx = m.DB.Session(&gorm.Session{Logger: &printSQLLogger{Interface: m.DB.Logger}})\n\t}\n\treturn queryTx, execTx\n}\n\n// AutoMigrate auto migrate values\nfunc (m Migrator) AutoMigrate(values ...any) error {\n\tfor _, value := range m.ReorderModels(values, true) {\n\t\tqueryTx, execTx := m.GetQueryAndExecTx()\n\t\tif !queryTx.Migrator().HasTable(value) {\n\t\t\tif err := execTx.Migrator().CreateTable(value); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t} else {\n\t\t\tif err := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t\t\tcolumnTypes, err := queryTx.Migrator().ColumnTypes(value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t\tvar (\n\t\t\t\t\tparseIndexes          = stmt.Schema.ParseIndexes()\n\t\t\t\t\tparseCheckConstraints = stmt.Schema.ParseCheckConstraints()\n\t\t\t\t)\n\t\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\t\tvar foundColumn gorm.ColumnType\n\n\t\t\t\t\tfor _, columnType := range columnTypes {\n\t\t\t\t\t\tif columnType.Name() == dbName {\n\t\t\t\t\t\t\tfoundColumn = columnType\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif foundColumn == nil {\n\t\t\t\t\t\t// not found, add column\n\t\t\t\t\t\tif err = execTx.Migrator().AddColumn(value, dbName); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// found, smartly migrate\n\t\t\t\t\t\tfield := stmt.Schema.FieldsByDBName[dbName]\n\t\t\t\t\t\tif err = execTx.Migrator().MigrateColumn(value, field, foundColumn); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif !m.DB.DisableForeignKeyConstraintWhenMigrating && !m.DB.IgnoreRelationshipsWhenMigrating {\n\t\t\t\t\tfor _, rel := range stmt.Schema.Relationships.Relations {\n\t\t\t\t\t\tif rel.Field.IgnoreMigration {\n\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif constraint := rel.ParseConstraint(); constraint != nil &&\n\t\t\t\t\t\t\tconstraint.Schema == stmt.Schema && !queryTx.Migrator().HasConstraint(value, constraint.Name) {\n\t\t\t\t\t\t\tif err := execTx.Migrator().CreateConstraint(value, constraint.Name); err != nil {\n\t\t\t\t\t\t\t\treturn err\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\n\t\t\t\tfor _, chk := range parseCheckConstraints {\n\t\t\t\t\tif !queryTx.Migrator().HasConstraint(value, chk.Name) {\n\t\t\t\t\t\tif err := execTx.Migrator().CreateConstraint(value, chk.Name); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor _, idx := range parseIndexes {\n\t\t\t\t\tif !queryTx.Migrator().HasIndex(value, idx.Name) {\n\t\t\t\t\t\tif err := execTx.Migrator().CreateIndex(value, idx.Name); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nil\n\t\t\t}); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// GetTables returns tables\nfunc (m Migrator) GetTables() (tableList []string, err error) {\n\terr = m.DB.Raw(\"SELECT TABLE_NAME FROM information_schema.tables where TABLE_SCHEMA=?\", m.CurrentDatabase()).\n\t\tScan(&tableList).Error\n\treturn\n}\n\n// CreateTable create table in database for values\nfunc (m Migrator) CreateTable(values ...any) error {\n\tfor _, value := range m.ReorderModels(values, false) {\n\t\ttx := m.DB.Session(&gorm.Session{})\n\t\tif err := m.RunWithValue(value, func(stmt *gorm.Statement) (err error) {\n\t\t\tvar (\n\t\t\t\tcreateTableSQL          = \"CREATE TABLE ? (\"\n\t\t\t\tvalues                  = []any{m.CurrentTable(stmt)}\n\t\t\t\thasPrimaryKeyInDataType bool\n\t\t\t)\n\n\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\tfield := stmt.Schema.FieldsByDBName[dbName]\n\t\t\t\tif !field.IgnoreMigration {\n\t\t\t\t\tcreateTableSQL += \"? ?\"\n\t\t\t\t\thasPrimaryKeyInDataType = hasPrimaryKeyInDataType || strings.Contains(strings.ToUpper(m.DataTypeOf(field)), \"PRIMARY KEY\")\n\t\t\t\t\tvalues = append(values, clause.Column{Name: dbName}, m.DB.Migrator().FullDataTypeOf(field))\n\t\t\t\t\tcreateTableSQL += \",\"\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !hasPrimaryKeyInDataType && len(stmt.Schema.PrimaryFields) > 0 {\n\t\t\t\tcreateTableSQL += \"PRIMARY KEY ?,\"\n\t\t\t\tprimaryKeys := make([]any, 0, len(stmt.Schema.PrimaryFields))\n\t\t\t\tfor _, field := range stmt.Schema.PrimaryFields {\n\t\t\t\t\tprimaryKeys = append(primaryKeys, clause.Column{Name: field.DBName})\n\t\t\t\t}\n\n\t\t\t\tvalues = append(values, primaryKeys)\n\t\t\t}\n\n\t\t\tfor _, idx := range stmt.Schema.ParseIndexes() {\n\t\t\t\tif m.CreateIndexAfterCreateTable {\n\t\t\t\t\tdefer func(value any, name string) {\n\t\t\t\t\t\tif err == nil {\n\t\t\t\t\t\t\terr = tx.Migrator().CreateIndex(value, name)\n\t\t\t\t\t\t}\n\t\t\t\t\t}(value, idx.Name)\n\t\t\t\t} else {\n\t\t\t\t\tif idx.Class != \"\" {\n\t\t\t\t\t\tcreateTableSQL += idx.Class + \" \"\n\t\t\t\t\t}\n\t\t\t\t\tcreateTableSQL += \"INDEX ? ?\"\n\n\t\t\t\t\tif idx.Comment != \"\" {\n\t\t\t\t\t\tcreateTableSQL += fmt.Sprintf(\" COMMENT '%s'\", idx.Comment)\n\t\t\t\t\t}\n\n\t\t\t\t\tif idx.Option != \"\" {\n\t\t\t\t\t\tcreateTableSQL += \" \" + idx.Option\n\t\t\t\t\t}\n\n\t\t\t\t\tcreateTableSQL += \",\"\n\t\t\t\t\tvalues = append(values, clause.Column{Name: idx.Name}, tx.Migrator().(BuildIndexOptionsInterface).BuildIndexOptions(idx.Fields, stmt))\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !m.DB.DisableForeignKeyConstraintWhenMigrating && !m.DB.IgnoreRelationshipsWhenMigrating {\n\t\t\t\tfor _, rel := range stmt.Schema.Relationships.Relations {\n\t\t\t\t\tif rel.Field.IgnoreMigration {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tif constraint := rel.ParseConstraint(); constraint != nil {\n\t\t\t\t\t\tif constraint.Schema == stmt.Schema {\n\t\t\t\t\t\t\tsql, vars := constraint.Build()\n\t\t\t\t\t\t\tcreateTableSQL += sql + \",\"\n\t\t\t\t\t\t\tvalues = append(values, vars...)\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\tfor _, uni := range stmt.Schema.ParseUniqueConstraints() {\n\t\t\t\tcreateTableSQL += \"CONSTRAINT ? UNIQUE (?),\"\n\t\t\t\tvalues = append(values, clause.Column{Name: uni.Name}, clause.Expr{SQL: stmt.Quote(uni.Field.DBName)})\n\t\t\t}\n\n\t\t\tfor _, chk := range stmt.Schema.ParseCheckConstraints() {\n\t\t\t\tcreateTableSQL += \"CONSTRAINT ? CHECK (?),\"\n\t\t\t\tvalues = append(values, clause.Column{Name: chk.Name}, clause.Expr{SQL: chk.Constraint})\n\t\t\t}\n\n\t\t\tcreateTableSQL = strings.TrimSuffix(createTableSQL, \",\")\n\n\t\t\tcreateTableSQL += \")\"\n\n\t\t\tif tableOption, ok := m.DB.Get(\"gorm:table_options\"); ok {\n\t\t\t\tcreateTableSQL += fmt.Sprint(tableOption)\n\t\t\t}\n\n\t\t\terr = tx.Exec(createTableSQL, values...).Error\n\t\t\treturn err\n\t\t}); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// DropTable drop table for values\nfunc (m Migrator) DropTable(values ...any) error {\n\tvalues = m.ReorderModels(values, false)\n\tfor i := len(values) - 1; i >= 0; i-- {\n\t\ttx := m.DB.Session(&gorm.Session{})\n\t\tif err := m.RunWithValue(values[i], func(stmt *gorm.Statement) error {\n\t\t\treturn tx.Exec(\"DROP TABLE IF EXISTS ?\", m.CurrentTable(stmt)).Error\n\t\t}); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// HasTable returns table exists or not for value, value could be a struct or string\nfunc (m Migrator) HasTable(value any) bool {\n\tvar count int64\n\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tcurrentDatabase := m.DB.Migrator().CurrentDatabase()\n\t\treturn m.DB.Raw(\"SELECT count(*) FROM information_schema.tables WHERE table_schema = ? AND table_name = ? AND table_type = ?\", currentDatabase, stmt.Table, \"BASE TABLE\").Row().Scan(&count)\n\t})\n\n\treturn count > 0\n}\n\n// RenameTable rename table from oldName to newName\nfunc (m Migrator) RenameTable(oldName, newName any) error {\n\tvar oldTable, newTable any\n\tif v, ok := oldName.(string); ok {\n\t\toldTable = clause.Table{Name: v}\n\t} else {\n\t\tstmt := &gorm.Statement{DB: m.DB}\n\t\tif err := stmt.Parse(oldName); err == nil {\n\t\t\toldTable = m.CurrentTable(stmt)\n\t\t} else {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif v, ok := newName.(string); ok {\n\t\tnewTable = clause.Table{Name: v}\n\t} else {\n\t\tstmt := &gorm.Statement{DB: m.DB}\n\t\tif err := stmt.Parse(newName); err == nil {\n\t\t\tnewTable = m.CurrentTable(stmt)\n\t\t} else {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn m.DB.Exec(\"ALTER TABLE ? RENAME TO ?\", oldTable, newTable).Error\n}\n\n// AddColumn create `name` column for value\nfunc (m Migrator) AddColumn(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t// avoid using the same name field\n\t\tf := stmt.Schema.LookUpField(name)\n\t\tif f == nil {\n\t\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", name)\n\t\t}\n\n\t\tif !f.IgnoreMigration {\n\t\t\treturn m.DB.Exec(\n\t\t\t\t\"ALTER TABLE ? ADD ? ?\",\n\t\t\t\tm.CurrentTable(stmt), clause.Column{Name: f.DBName}, m.DB.Migrator().FullDataTypeOf(f),\n\t\t\t).Error\n\t\t}\n\n\t\treturn nil\n\t})\n}\n\n// DropColumn drop value's `name` column\nfunc (m Migrator) DropColumn(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\tname = field.DBName\n\t\t}\n\n\t\treturn m.DB.Exec(\n\t\t\t\"ALTER TABLE ? DROP COLUMN ?\", m.CurrentTable(stmt), clause.Column{Name: name},\n\t\t).Error\n\t})\n}\n\n// AlterColumn alter value's `field` column' type based on schema definition\nfunc (m Migrator) AlterColumn(value any, field string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\tfileType := m.FullDataTypeOf(field)\n\t\t\treturn m.DB.Exec(\n\t\t\t\t\"ALTER TABLE ? ALTER COLUMN ? TYPE ?\",\n\t\t\t\tm.CurrentTable(stmt), clause.Column{Name: field.DBName}, fileType,\n\t\t\t).Error\n\n\t\t}\n\t\treturn fmt.Errorf(\"failed to look up field with name: %s\", field)\n\t})\n}\n\n// HasColumn check has column `field` for value or not\nfunc (m Migrator) HasColumn(value any, field string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tcurrentDatabase := m.DB.Migrator().CurrentDatabase()\n\t\tname := field\n\t\tif field := stmt.Schema.LookUpField(field); field != nil {\n\t\t\tname = field.DBName\n\t\t}\n\n\t\treturn m.DB.Raw(\n\t\t\t\"SELECT count(*) FROM INFORMATION_SCHEMA.columns WHERE table_schema = ? AND table_name = ? AND column_name = ?\",\n\t\t\tcurrentDatabase, stmt.Table, name,\n\t\t).Row().Scan(&count)\n\t})\n\n\treturn count > 0\n}\n\n// RenameColumn rename value's field name from oldName to newName\nfunc (m Migrator) RenameColumn(value any, oldName, newName string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif field := stmt.Schema.LookUpField(oldName); field != nil {\n\t\t\toldName = field.DBName\n\t\t}\n\n\t\tif field := stmt.Schema.LookUpField(newName); field != nil {\n\t\t\tnewName = field.DBName\n\t\t}\n\n\t\treturn m.DB.Exec(\n\t\t\t\"ALTER TABLE ? RENAME COLUMN ? TO ?\",\n\t\t\tm.CurrentTable(stmt), clause.Column{Name: oldName}, clause.Column{Name: newName},\n\t\t).Error\n\t})\n}\n\n// MigrateColumn migrate column\nfunc (m Migrator) MigrateColumn(value any, field *schema.Field, columnType gorm.ColumnType) error {\n\tif field.IgnoreMigration {\n\t\treturn nil\n\t}\n\n\t// found, smart migrate\n\tfullDataType := strings.TrimSpace(strings.ToLower(m.DB.Migrator().FullDataTypeOf(field).SQL))\n\trealDataType := strings.ToLower(columnType.DatabaseTypeName())\n\n\tvar (\n\t\talterColumn bool\n\t\tisSameType  = fullDataType == realDataType\n\t)\n\n\tif !field.PrimaryKey {\n\t\t// check type\n\t\tif !strings.HasPrefix(fullDataType, realDataType) {\n\t\t\t// check type aliases\n\t\t\taliases := m.DB.Migrator().GetTypeAliases(realDataType)\n\t\t\tfor _, alias := range aliases {\n\t\t\t\tif strings.HasPrefix(fullDataType, alias) {\n\t\t\t\t\tisSameType = true\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !isSameType {\n\t\t\t\talterColumn = true\n\t\t\t}\n\t\t}\n\t}\n\n\tif !isSameType {\n\t\t// check size\n\t\tif length, ok := columnType.Length(); length != int64(field.Size) {\n\t\t\tif length > 0 && field.Size > 0 {\n\t\t\t\talterColumn = true\n\t\t\t} else {\n\t\t\t\t// has size in data type and not equal\n\t\t\t\t// Since the following code is frequently called in the for loop, reg optimization is needed here\n\t\t\t\tmatches2 := regFullDataType.FindAllStringSubmatch(fullDataType, -1)\n\t\t\t\tif !field.PrimaryKey &&\n\t\t\t\t\t(len(matches2) == 1 && matches2[0][1] != fmt.Sprint(length) && ok) {\n\t\t\t\t\talterColumn = true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// check precision\n\t\tif precision, _, ok := columnType.DecimalSize(); ok && int64(field.Precision) != precision {\n\t\t\tif regexp.MustCompile(fmt.Sprintf(\"[^0-9]%d[^0-9]\", field.Precision)).MatchString(m.DataTypeOf(field)) {\n\t\t\t\talterColumn = true\n\t\t\t}\n\t\t}\n\t}\n\n\t// check nullable\n\tif nullable, ok := columnType.Nullable(); ok && nullable == field.NotNull {\n\t\t// not primary key & database is nullable\n\t\tif !field.PrimaryKey && nullable {\n\t\t\talterColumn = true\n\t\t}\n\t}\n\n\t// check default value\n\tif !field.PrimaryKey {\n\t\tcurrentDefaultNotNull := field.HasDefaultValue && (field.DefaultValueInterface != nil || !strings.EqualFold(field.DefaultValue, \"NULL\"))\n\t\tdv, dvNotNull := columnType.DefaultValue()\n\t\tif dvNotNull && !currentDefaultNotNull {\n\t\t\t// default value -> null\n\t\t\talterColumn = true\n\t\t} else if !dvNotNull && currentDefaultNotNull {\n\t\t\t// null -> default value\n\t\t\talterColumn = true\n\t\t} else if currentDefaultNotNull || dvNotNull {\n\t\t\tswitch field.GORMDataType {\n\t\t\tcase schema.Time:\n\t\t\t\tif !strings.EqualFold(strings.TrimSuffix(dv, \"()\"), strings.TrimSuffix(field.DefaultValue, \"()\")) {\n\t\t\t\t\talterColumn = true\n\t\t\t\t}\n\t\t\tcase schema.Bool:\n\t\t\t\tv1, _ := strconv.ParseBool(dv)\n\t\t\t\tv2, _ := strconv.ParseBool(field.DefaultValue)\n\t\t\t\talterColumn = v1 != v2\n\t\t\tdefault:\n\t\t\t\talterColumn = dv != field.DefaultValue\n\t\t\t}\n\t\t}\n\t}\n\n\t// check comment\n\tif comment, ok := columnType.Comment(); ok && comment != field.Comment {\n\t\t// not primary key\n\t\tif !field.PrimaryKey {\n\t\t\talterColumn = true\n\t\t}\n\t}\n\n\tif alterColumn {\n\t\tif err := m.DB.Migrator().AlterColumn(value, field.DBName); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif err := m.DB.Migrator().MigrateColumnUnique(value, field, columnType); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc (m Migrator) MigrateColumnUnique(value any, field *schema.Field, columnType gorm.ColumnType) error {\n\tunique, ok := columnType.Unique()\n\tif !ok || field.PrimaryKey {\n\t\treturn nil // skip primary key\n\t}\n\t// By default, ColumnType's Unique is not affected by UniqueIndex, so we don't care about UniqueIndex.\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\t// We're currently only receiving boolean values on `Unique` tag,\n\t\t// so the UniqueConstraint name is fixed\n\t\tconstraint := m.DB.NamingStrategy.UniqueName(stmt.Table, field.DBName)\n\t\tif unique && !field.Unique {\n\t\t\treturn m.DB.Migrator().DropConstraint(value, constraint)\n\t\t}\n\t\tif !unique && field.Unique {\n\t\t\treturn m.DB.Migrator().CreateConstraint(value, constraint)\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// ColumnTypes return columnTypes []gorm.ColumnType and execErr error\nfunc (m Migrator) ColumnTypes(value any) ([]gorm.ColumnType, error) {\n\tcolumnTypes := make([]gorm.ColumnType, 0)\n\texecErr := m.RunWithValue(value, func(stmt *gorm.Statement) (err error) {\n\t\trows, err := m.DB.Session(&gorm.Session{}).Table(stmt.Table).Limit(1).Rows()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tdefer func() {\n\t\t\terr = rows.Close()\n\t\t}()\n\n\t\tvar rawColumnTypes []*sql.ColumnType\n\t\trawColumnTypes, err = rows.ColumnTypes()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor _, c := range rawColumnTypes {\n\t\t\tcolumnTypes = append(columnTypes, ColumnType{SQLColumnType: c})\n\t\t}\n\n\t\treturn\n\t})\n\n\treturn columnTypes, execErr\n}\n\n// CreateView create view from Query in gorm.ViewOption.\n// Query in gorm.ViewOption is a [subquery]\n//\n//\t// CREATE VIEW `user_view` AS SELECT * FROM `users` WHERE age > 20\n//\tq := DB.Model(&User{}).Where(\"age > ?\", 20)\n//\tDB.Debug().Migrator().CreateView(\"user_view\", gorm.ViewOption{Query: q})\n//\n//\t// CREATE OR REPLACE VIEW `users_view` AS SELECT * FROM `users` WITH CHECK OPTION\n//\tq := DB.Model(&User{})\n//\tDB.Debug().Migrator().CreateView(\"user_view\", gorm.ViewOption{Query: q, Replace: true, CheckOption: \"WITH CHECK OPTION\"})\n//\n// [subquery]: https://gorm.io/docs/advanced_query.html#SubQuery\nfunc (m Migrator) CreateView(name string, option gorm.ViewOption) error {\n\tif option.Query == nil {\n\t\treturn gorm.ErrSubQueryRequired\n\t}\n\n\tsql := new(strings.Builder)\n\tsql.WriteString(\"CREATE \")\n\tif option.Replace {\n\t\tsql.WriteString(\"OR REPLACE \")\n\t}\n\tsql.WriteString(\"VIEW \")\n\tm.QuoteTo(sql, name)\n\tsql.WriteString(\" AS \")\n\n\tm.DB.Statement.AddVar(sql, option.Query)\n\n\tif option.CheckOption != \"\" {\n\t\tsql.WriteString(\" \")\n\t\tsql.WriteString(option.CheckOption)\n\t}\n\treturn m.DB.Exec(m.Explain(sql.String(), m.DB.Statement.Vars...)).Error\n}\n\n// DropView drop view\nfunc (m Migrator) DropView(name string) error {\n\treturn m.DB.Exec(\"DROP VIEW IF EXISTS ?\", clause.Table{Name: name}).Error\n}\n\n// GuessConstraintAndTable guess statement's constraint and it's table based on name\n//\n// Deprecated: use GuessConstraintInterfaceAndTable instead.\nfunc (m Migrator) GuessConstraintAndTable(stmt *gorm.Statement, name string) (*schema.Constraint, *schema.CheckConstraint, string) {\n\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\tswitch c := constraint.(type) {\n\tcase *schema.Constraint:\n\t\treturn c, nil, table\n\tcase *schema.CheckConstraint:\n\t\treturn nil, c, table\n\tdefault:\n\t\treturn nil, nil, table\n\t}\n}\n\n// GuessConstraintInterfaceAndTable guess statement's constraint and it's table based on name\n// nolint:cyclop\nfunc (m Migrator) GuessConstraintInterfaceAndTable(stmt *gorm.Statement, name string) (_ schema.ConstraintInterface, table string) {\n\tif stmt.Schema == nil {\n\t\treturn nil, stmt.Table\n\t}\n\n\tcheckConstraints := stmt.Schema.ParseCheckConstraints()\n\tif chk, ok := checkConstraints[name]; ok {\n\t\treturn &chk, stmt.Table\n\t}\n\n\tuniqueConstraints := stmt.Schema.ParseUniqueConstraints()\n\tif uni, ok := uniqueConstraints[name]; ok {\n\t\treturn &uni, stmt.Table\n\t}\n\n\tgetTable := func(rel *schema.Relationship) string {\n\t\tswitch rel.Type {\n\t\tcase schema.HasOne, schema.HasMany:\n\t\t\treturn rel.FieldSchema.Table\n\t\tcase schema.Many2Many:\n\t\t\treturn rel.JoinTable.Table\n\t\t}\n\t\treturn stmt.Table\n\t}\n\n\tfor _, rel := range stmt.Schema.Relationships.Relations {\n\t\tif constraint := rel.ParseConstraint(); constraint != nil && constraint.Name == name {\n\t\t\treturn constraint, getTable(rel)\n\t\t}\n\t}\n\n\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\tfor k := range checkConstraints {\n\t\t\tif checkConstraints[k].Field == field {\n\t\t\t\tv := checkConstraints[k]\n\t\t\t\treturn &v, stmt.Table\n\t\t\t}\n\t\t}\n\n\t\tfor k := range uniqueConstraints {\n\t\t\tif uniqueConstraints[k].Field == field {\n\t\t\t\tv := uniqueConstraints[k]\n\t\t\t\treturn &v, stmt.Table\n\t\t\t}\n\t\t}\n\n\t\tfor _, rel := range stmt.Schema.Relationships.Relations {\n\t\t\tif constraint := rel.ParseConstraint(); constraint != nil && rel.Field == field {\n\t\t\t\treturn constraint, getTable(rel)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil, stmt.Schema.Table\n}\n\n// CreateConstraint create constraint\nfunc (m Migrator) CreateConstraint(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tvars := []any{clause.Table{Name: table}}\n\t\t\tif stmt.TableExpr != nil {\n\t\t\t\tvars[0] = stmt.TableExpr\n\t\t\t}\n\t\t\tsql, values := constraint.Build()\n\t\t\treturn m.DB.Exec(\"ALTER TABLE ? ADD \"+sql, append(vars, values...)...).Error\n\t\t}\n\t\treturn nil\n\t})\n}\n\n// DropConstraint drop constraint\nfunc (m Migrator) DropConstraint(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t}\n\t\treturn m.DB.Exec(\"ALTER TABLE ? DROP CONSTRAINT ?\", clause.Table{Name: table}, clause.Column{Name: name}).Error\n\t})\n}\n\n// HasConstraint check has constraint or not\nfunc (m Migrator) HasConstraint(value any, name string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tcurrentDatabase := m.DB.Migrator().CurrentDatabase()\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t}\n\n\t\treturn m.DB.Raw(\n\t\t\t\"SELECT count(*) FROM INFORMATION_SCHEMA.table_constraints WHERE constraint_schema = ? AND table_name = ? AND constraint_name = ?\",\n\t\t\tcurrentDatabase, table, name,\n\t\t).Row().Scan(&count)\n\t})\n\n\treturn count > 0\n}\n\n// BuildIndexOptions build index options\nfunc (m Migrator) BuildIndexOptions(opts []schema.IndexOption, stmt *gorm.Statement) (results []any) {\n\tfor _, opt := range opts {\n\t\tstr := stmt.Quote(opt.DBName)\n\t\tif opt.Expression != \"\" {\n\t\t\tstr = opt.Expression\n\t\t} else if opt.Length > 0 {\n\t\t\tstr += fmt.Sprintf(\"(%d)\", opt.Length)\n\t\t}\n\n\t\tif opt.Collate != \"\" {\n\t\t\tstr += \" COLLATE \" + opt.Collate\n\t\t}\n\n\t\tif opt.Sort != \"\" {\n\t\t\tstr += \" \" + opt.Sort\n\t\t}\n\t\tresults = append(results, clause.Expr{SQL: str})\n\t}\n\treturn\n}\n\n// BuildIndexOptionsInterface build index options interface\ntype BuildIndexOptionsInterface interface {\n\tBuildIndexOptions([]schema.IndexOption, *gorm.Statement) []any\n}\n\n// CreateIndex create index `name`\nfunc (m Migrator) CreateIndex(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\topts := m.DB.Migrator().(BuildIndexOptionsInterface).BuildIndexOptions(idx.Fields, stmt)\n\t\t\tvalues := []any{clause.Column{Name: idx.Name}, m.CurrentTable(stmt), opts}\n\n\t\t\tcreateIndexSQL := \"CREATE \"\n\t\t\tif idx.Class != \"\" {\n\t\t\t\tcreateIndexSQL += idx.Class + \" \"\n\t\t\t}\n\t\t\tcreateIndexSQL += \"INDEX ? ON ??\"\n\n\t\t\tif idx.Type != \"\" {\n\t\t\t\tcreateIndexSQL += \" USING \" + idx.Type\n\t\t\t}\n\n\t\t\tif idx.Comment != \"\" {\n\t\t\t\tcreateIndexSQL += fmt.Sprintf(\" COMMENT '%s'\", idx.Comment)\n\t\t\t}\n\n\t\t\tif idx.Option != \"\" {\n\t\t\t\tcreateIndexSQL += \" \" + idx.Option\n\t\t\t}\n\n\t\t\treturn m.DB.Exec(createIndexSQL, values...).Error\n\t\t}\n\n\t\treturn fmt.Errorf(\"failed to create index with name %s\", name)\n\t})\n}\n\n// DropIndex drop index `name`\nfunc (m Migrator) DropIndex(value any, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\tname = idx.Name\n\t\t}\n\n\t\treturn m.DB.Exec(\"DROP INDEX ? ON ?\", clause.Column{Name: name}, m.CurrentTable(stmt)).Error\n\t})\n}\n\n// HasIndex check has index `name` or not\nfunc (m Migrator) HasIndex(value any, name string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tcurrentDatabase := m.DB.Migrator().CurrentDatabase()\n\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\tname = idx.Name\n\t\t}\n\n\t\treturn m.DB.Raw(\n\t\t\t\"SELECT count(*) FROM information_schema.statistics WHERE table_schema = ? AND table_name = ? AND index_name = ?\",\n\t\t\tcurrentDatabase, stmt.Table, name,\n\t\t).Row().Scan(&count)\n\t})\n\n\treturn count > 0\n}\n\n// RenameIndex rename index from oldName to newName\nfunc (m Migrator) RenameIndex(value any, oldName, newName string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\treturn m.DB.Exec(\n\t\t\t\"ALTER TABLE ? RENAME INDEX ? TO ?\",\n\t\t\tm.CurrentTable(stmt), clause.Column{Name: oldName}, clause.Column{Name: newName},\n\t\t).Error\n\t})\n}\n\n// CurrentDatabase returns current database name\nfunc (m Migrator) CurrentDatabase() (name string) {\n\tm.DB.Raw(\"SELECT DATABASE()\").Row().Scan(&name)\n\treturn\n}\n\n// ReorderModels reorder models according to constraint dependencies\nfunc (m Migrator) ReorderModels(values []any, autoAdd bool) (results []any) {\n\ttype Dependency struct {\n\t\t*gorm.Statement\n\t\tDepends []*schema.Schema\n\t}\n\n\tvar (\n\t\tmodelNames, orderedModelNames []string\n\t\torderedModelNamesMap          = map[string]bool{}\n\t\tparsedSchemas                 = map[*schema.Schema]bool{}\n\t\tvaluesMap                     = map[string]Dependency{}\n\t\tinsertIntoOrderedList         func(name string)\n\t\tparseDependence               func(value any, addToList bool)\n\t)\n\n\tparseDependence = func(value any, addToList bool) {\n\t\tdep := Dependency{\n\t\t\tStatement: &gorm.Statement{DB: m.DB, Dest: value},\n\t\t}\n\t\tbeDependedOn := map[*schema.Schema]bool{}\n\t\t// support for special table name\n\t\tif err := dep.ParseWithSpecialTableName(value, m.DB.Statement.Table); err != nil {\n\t\t\tm.DB.Logger.Error(context.Background(), \"failed to parse value %#v, got error %v\", value, err)\n\t\t}\n\t\tif _, ok := parsedSchemas[dep.Statement.Schema]; ok {\n\t\t\treturn\n\t\t}\n\t\tparsedSchemas[dep.Statement.Schema] = true\n\n\t\tif !m.DB.IgnoreRelationshipsWhenMigrating {\n\t\t\tfor _, rel := range dep.Schema.Relationships.Relations {\n\t\t\t\tif rel.Field.IgnoreMigration {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif c := rel.ParseConstraint(); c != nil && c.Schema == dep.Statement.Schema && c.Schema != c.ReferenceSchema {\n\t\t\t\t\tdep.Depends = append(dep.Depends, c.ReferenceSchema)\n\t\t\t\t}\n\n\t\t\t\tif rel.Type == schema.HasOne || rel.Type == schema.HasMany {\n\t\t\t\t\tbeDependedOn[rel.FieldSchema] = true\n\t\t\t\t}\n\n\t\t\t\tif rel.JoinTable != nil {\n\t\t\t\t\t// append join value\n\t\t\t\t\tdefer func(rel *schema.Relationship, joinValue any) {\n\t\t\t\t\t\tif !beDependedOn[rel.FieldSchema] {\n\t\t\t\t\t\t\tdep.Depends = append(dep.Depends, rel.FieldSchema)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfieldValue := reflect.New(rel.FieldSchema.ModelType).Interface()\n\t\t\t\t\t\t\tparseDependence(fieldValue, autoAdd)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseDependence(joinValue, autoAdd)\n\t\t\t\t\t}(rel, reflect.New(rel.JoinTable.ModelType).Interface())\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvaluesMap[dep.Schema.Table] = dep\n\n\t\tif addToList {\n\t\t\tmodelNames = append(modelNames, dep.Schema.Table)\n\t\t}\n\t}\n\n\tinsertIntoOrderedList = func(name string) {\n\t\tif _, ok := orderedModelNamesMap[name]; ok {\n\t\t\treturn // avoid loop\n\t\t}\n\t\torderedModelNamesMap[name] = true\n\n\t\tif autoAdd {\n\t\t\tdep := valuesMap[name]\n\t\t\tfor _, d := range dep.Depends {\n\t\t\t\tif _, ok := valuesMap[d.Table]; ok {\n\t\t\t\t\tinsertIntoOrderedList(d.Table)\n\t\t\t\t} else {\n\t\t\t\t\tparseDependence(reflect.New(d.ModelType).Interface(), autoAdd)\n\t\t\t\t\tinsertIntoOrderedList(d.Table)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\torderedModelNames = append(orderedModelNames, name)\n\t}\n\n\tfor _, value := range values {\n\t\tif v, ok := value.(string); ok {\n\t\t\tresults = append(results, v)\n\t\t} else {\n\t\t\tparseDependence(value, true)\n\t\t}\n\t}\n\n\tfor _, name := range modelNames {\n\t\tinsertIntoOrderedList(name)\n\t}\n\n\tfor _, name := range orderedModelNames {\n\t\tresults = append(results, valuesMap[name].Statement.Dest)\n\t}\n\treturn\n}\n\n// CurrentTable returns current statement's table expression\nfunc (m Migrator) CurrentTable(stmt *gorm.Statement) any {\n\tif stmt.TableExpr != nil {\n\t\treturn *stmt.TableExpr\n\t}\n\treturn clause.Table{Name: stmt.Table}\n}\n\n// GetIndexes return Indexes []gorm.Index and execErr error\nfunc (m Migrator) GetIndexes(dst any) ([]gorm.Index, error) {\n\treturn nil, errors.New(\"not support\")\n}\n\n// GetTypeAliases return database type aliases\nfunc (m Migrator) GetTypeAliases(databaseTypeName string) []string {\n\treturn nil\n}\n\n// TableType return tableType gorm.TableType and execErr error\nfunc (m Migrator) TableType(dst any) (gorm.TableType, error) {\n\treturn nil, errors.New(\"not support\")\n}\n"
  },
  {
    "path": "gossh/gorm/migrator/table_type.go",
    "content": "package migrator\n\nimport (\n\t\"database/sql\"\n)\n\n// TableType table type implements TableType interface\ntype TableType struct {\n\tSchemaValue  string\n\tNameValue    string\n\tTypeValue    string\n\tCommentValue sql.NullString\n}\n\n// Schema returns the schema of the table.\nfunc (ct TableType) Schema() string {\n\treturn ct.SchemaValue\n}\n\n// Name returns the name of the table.\nfunc (ct TableType) Name() string {\n\treturn ct.NameValue\n}\n\n// Type returns the type of the table.\nfunc (ct TableType) Type() string {\n\treturn ct.TypeValue\n}\n\n// Comment returns the comment of current table.\nfunc (ct TableType) Comment() (comment string, ok bool) {\n\treturn ct.CommentValue.String, ct.CommentValue.Valid\n}\n"
  },
  {
    "path": "gossh/gorm/migrator.go",
    "content": "package gorm\n\nimport (\n\t\"reflect\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/schema\"\n)\n\n// Migrator returns migrator\nfunc (db *DB) Migrator() Migrator {\n\ttx := db.getInstance()\n\n\t// apply scopes to migrator\n\tfor len(tx.Statement.scopes) > 0 {\n\t\ttx = tx.executeScopes()\n\t}\n\n\treturn tx.Dialector.Migrator(tx.Session(&Session{}))\n}\n\n// AutoMigrate run auto migration for given models\nfunc (db *DB) AutoMigrate(dst ...any) error {\n\treturn db.Migrator().AutoMigrate(dst...)\n}\n\n// ViewOption view option\ntype ViewOption struct {\n\tReplace     bool   // If true, exec `CREATE`. If false, exec `CREATE OR REPLACE`\n\tCheckOption string // optional. e.g. `WITH [ CASCADED | LOCAL ] CHECK OPTION`\n\tQuery       *DB    // required subquery.\n}\n\n// ColumnType column type interface\ntype ColumnType interface {\n\tName() string\n\tDatabaseTypeName() string                 // varchar\n\tColumnType() (columnType string, ok bool) // varchar(64)\n\tPrimaryKey() (isPrimaryKey bool, ok bool)\n\tAutoIncrement() (isAutoIncrement bool, ok bool)\n\tLength() (length int64, ok bool)\n\tDecimalSize() (precision int64, scale int64, ok bool)\n\tNullable() (nullable bool, ok bool)\n\tUnique() (unique bool, ok bool)\n\tScanType() reflect.Type\n\tComment() (value string, ok bool)\n\tDefaultValue() (value string, ok bool)\n}\n\ntype Index interface {\n\tTable() string\n\tName() string\n\tColumns() []string\n\tPrimaryKey() (isPrimaryKey bool, ok bool)\n\tUnique() (unique bool, ok bool)\n\tOption() string\n}\n\n// TableType table type interface\ntype TableType interface {\n\tSchema() string\n\tName() string\n\tType() string\n\tComment() (comment string, ok bool)\n}\n\n// Migrator migrator interface\ntype Migrator interface {\n\t// AutoMigrate\n\tAutoMigrate(dst ...any) error\n\n\t// Database\n\tCurrentDatabase() string\n\tFullDataTypeOf(*schema.Field) clause.Expr\n\tGetTypeAliases(databaseTypeName string) []string\n\n\t// Tables\n\tCreateTable(dst ...any) error\n\tDropTable(dst ...any) error\n\tHasTable(dst any) bool\n\tRenameTable(oldName, newName any) error\n\tGetTables() (tableList []string, err error)\n\tTableType(dst any) (TableType, error)\n\n\t// Columns\n\tAddColumn(dst any, field string) error\n\tDropColumn(dst any, field string) error\n\tAlterColumn(dst any, field string) error\n\tMigrateColumn(dst any, field *schema.Field, columnType ColumnType) error\n\t// MigrateColumnUnique migrate column's UNIQUE constraint, it's part of MigrateColumn.\n\tMigrateColumnUnique(dst any, field *schema.Field, columnType ColumnType) error\n\tHasColumn(dst any, field string) bool\n\tRenameColumn(dst any, oldName, field string) error\n\tColumnTypes(dst any) ([]ColumnType, error)\n\n\t// Views\n\tCreateView(name string, option ViewOption) error\n\tDropView(name string) error\n\n\t// Constraints\n\tCreateConstraint(dst any, name string) error\n\tDropConstraint(dst any, name string) error\n\tHasConstraint(dst any, name string) bool\n\n\t// Indexes\n\tCreateIndex(dst any, name string) error\n\tDropIndex(dst any, name string) error\n\tHasIndex(dst any, name string) bool\n\tRenameIndex(dst any, oldName, newName string) error\n\tGetIndexes(dst any) ([]Index, error)\n}\n"
  },
  {
    "path": "gossh/gorm/model.go",
    "content": "package gorm\n\nimport \"time\"\n\n// Model a basic GoLang struct which includes the following fields: ID, CreatedAt, UpdatedAt, DeletedAt\n// It may be embedded into your model or you may build your own model without it\n//\n//\ttype User struct {\n//\t  gorm.Model\n//\t}\ntype Model struct {\n\tID        uint `gorm:\"primarykey\"`\n\tCreatedAt time.Time\n\tUpdatedAt time.Time\n\tDeletedAt DeletedAt `gorm:\"index\"`\n}\n"
  },
  {
    "path": "gossh/gorm/now/main.go",
    "content": "// Package now is a time toolkit for golang.\n//\n// More details README here: https://gossh/gorm/now\n//\n//\timport \"gossh/gorm/now\"\n//\n//\tnow.BeginningOfMinute() // 2013-11-18 17:51:00 Mon\n//\tnow.BeginningOfDay()    // 2013-11-18 00:00:00 Mon\n//\tnow.EndOfDay()          // 2013-11-18 23:59:59.999999999 Mon\npackage now\n\nimport \"time\"\n\n// WeekStartDay set week start day, default is sunday\nvar WeekStartDay = time.Sunday\n\n// TimeFormats default time formats will be parsed as\nvar TimeFormats = []string{\n\t\"2006\", \"2006-1\", \"2006-1-2\", \"2006-1-2 15\", \"2006-1-2 15:4\", \"2006-1-2 15:4:5\", \"1-2\",\n\t\"15:4:5\", \"15:4\", \"15\",\n\t\"15:4:5 Jan 2, 2006 MST\", \"2006-01-02 15:04:05.999999999 -0700 MST\", \"2006-01-02T15:04:05Z0700\", \"2006-01-02T15:04:05Z07\",\n\t\"2006.1.2\", \"2006.1.2 15:04:05\", \"2006.01.02\", \"2006.01.02 15:04:05\", \"2006.01.02 15:04:05.999999999\",\n\t\"1/2/2006\", \"1/2/2006 15:4:5\", \"2006/01/02\", \"20060102\", \"2006/01/02 15:04:05\",\n\ttime.ANSIC, time.UnixDate, time.RubyDate, time.RFC822, time.RFC822Z, time.RFC850,\n\ttime.RFC1123, time.RFC1123Z, time.RFC3339, time.RFC3339Nano,\n\ttime.Kitchen, time.Stamp, time.StampMilli, time.StampMicro, time.StampNano,\n}\n\n// Config configuration for now package\ntype Config struct {\n\tWeekStartDay time.Weekday\n\tTimeLocation *time.Location\n\tTimeFormats  []string\n}\n\n// DefaultConfig default config\nvar DefaultConfig *Config\n\n// New initialize Now based on configuration\nfunc (config *Config) With(t time.Time) *Now {\n\treturn &Now{Time: t, Config: config}\n}\n\n// Parse parse string to time based on configuration\nfunc (config *Config) Parse(strs ...string) (time.Time, error) {\n\tif config.TimeLocation == nil {\n\t\treturn config.With(time.Now()).Parse(strs...)\n\t} else {\n\t\treturn config.With(time.Now().In(config.TimeLocation)).Parse(strs...)\n\t}\n}\n\n// MustParse must parse string to time or will panic\nfunc (config *Config) MustParse(strs ...string) time.Time {\n\tif config.TimeLocation == nil {\n\t\treturn config.With(time.Now()).MustParse(strs...)\n\t} else {\n\t\treturn config.With(time.Now().In(config.TimeLocation)).MustParse(strs...)\n\t}\n}\n\n// Now now struct\ntype Now struct {\n\ttime.Time\n\t*Config\n}\n\n// With initialize Now with time\nfunc With(t time.Time) *Now {\n\tconfig := DefaultConfig\n\tif config == nil {\n\t\tconfig = &Config{\n\t\t\tWeekStartDay: WeekStartDay,\n\t\t\tTimeFormats:  TimeFormats,\n\t\t}\n\t}\n\n\treturn &Now{Time: t, Config: config}\n}\n\n// New initialize Now with time\nfunc New(t time.Time) *Now {\n\treturn With(t)\n}\n\n// BeginningOfMinute beginning of minute\nfunc BeginningOfMinute() time.Time {\n\treturn With(time.Now()).BeginningOfMinute()\n}\n\n// BeginningOfHour beginning of hour\nfunc BeginningOfHour() time.Time {\n\treturn With(time.Now()).BeginningOfHour()\n}\n\n// BeginningOfDay beginning of day\nfunc BeginningOfDay() time.Time {\n\treturn With(time.Now()).BeginningOfDay()\n}\n\n// BeginningOfWeek beginning of week\nfunc BeginningOfWeek() time.Time {\n\treturn With(time.Now()).BeginningOfWeek()\n}\n\n// BeginningOfMonth beginning of month\nfunc BeginningOfMonth() time.Time {\n\treturn With(time.Now()).BeginningOfMonth()\n}\n\n// BeginningOfQuarter beginning of quarter\nfunc BeginningOfQuarter() time.Time {\n\treturn With(time.Now()).BeginningOfQuarter()\n}\n\n// BeginningOfYear beginning of year\nfunc BeginningOfYear() time.Time {\n\treturn With(time.Now()).BeginningOfYear()\n}\n\n// EndOfMinute end of minute\nfunc EndOfMinute() time.Time {\n\treturn With(time.Now()).EndOfMinute()\n}\n\n// EndOfHour end of hour\nfunc EndOfHour() time.Time {\n\treturn With(time.Now()).EndOfHour()\n}\n\n// EndOfDay end of day\nfunc EndOfDay() time.Time {\n\treturn With(time.Now()).EndOfDay()\n}\n\n// EndOfWeek end of week\nfunc EndOfWeek() time.Time {\n\treturn With(time.Now()).EndOfWeek()\n}\n\n// EndOfMonth end of month\nfunc EndOfMonth() time.Time {\n\treturn With(time.Now()).EndOfMonth()\n}\n\n// EndOfQuarter end of quarter\nfunc EndOfQuarter() time.Time {\n\treturn With(time.Now()).EndOfQuarter()\n}\n\n// EndOfYear end of year\nfunc EndOfYear() time.Time {\n\treturn With(time.Now()).EndOfYear()\n}\n\n// Monday monday\n\nfunc Monday(strs ...string) time.Time {\n\treturn With(time.Now()).Monday(strs...)\n}\n\n// Sunday sunday\nfunc Sunday(strs ...string) time.Time {\n\treturn With(time.Now()).Sunday(strs...)\n}\n\n// EndOfSunday end of sunday\nfunc EndOfSunday() time.Time {\n\treturn With(time.Now()).EndOfSunday()\n}\n\n// Quarter returns the yearly quarter\nfunc Quarter() uint {\n\treturn With(time.Now()).Quarter()\n}\n\n// Parse parse string to time\nfunc Parse(strs ...string) (time.Time, error) {\n\treturn With(time.Now()).Parse(strs...)\n}\n\n// ParseInLocation parse string to time in location\nfunc ParseInLocation(loc *time.Location, strs ...string) (time.Time, error) {\n\treturn With(time.Now().In(loc)).Parse(strs...)\n}\n\n// MustParse must parse string to time or will panic\nfunc MustParse(strs ...string) time.Time {\n\treturn With(time.Now()).MustParse(strs...)\n}\n\n// MustParseInLocation must parse string to time in location or will panic\nfunc MustParseInLocation(loc *time.Location, strs ...string) time.Time {\n\treturn With(time.Now().In(loc)).MustParse(strs...)\n}\n\n// Between check now between the begin, end time or not\nfunc Between(time1, time2 string) bool {\n\treturn With(time.Now()).Between(time1, time2)\n}\n"
  },
  {
    "path": "gossh/gorm/now/now.go",
    "content": "package now\n\nimport (\n\t\"errors\"\n\t\"regexp\"\n\t\"time\"\n)\n\n// BeginningOfMinute beginning of minute\nfunc (now *Now) BeginningOfMinute() time.Time {\n\treturn now.Truncate(time.Minute)\n}\n\n// BeginningOfHour beginning of hour\nfunc (now *Now) BeginningOfHour() time.Time {\n\ty, m, d := now.Date()\n\treturn time.Date(y, m, d, now.Time.Hour(), 0, 0, 0, now.Time.Location())\n}\n\n// BeginningOfDay beginning of day\nfunc (now *Now) BeginningOfDay() time.Time {\n\ty, m, d := now.Date()\n\treturn time.Date(y, m, d, 0, 0, 0, 0, now.Time.Location())\n}\n\n// BeginningOfWeek beginning of week\nfunc (now *Now) BeginningOfWeek() time.Time {\n\tt := now.BeginningOfDay()\n\tweekday := int(t.Weekday())\n\n\tif now.WeekStartDay != time.Sunday {\n\t\tweekStartDayInt := int(now.WeekStartDay)\n\n\t\tif weekday < weekStartDayInt {\n\t\t\tweekday = weekday + 7 - weekStartDayInt\n\t\t} else {\n\t\t\tweekday = weekday - weekStartDayInt\n\t\t}\n\t}\n\treturn t.AddDate(0, 0, -weekday)\n}\n\n// BeginningOfMonth beginning of month\nfunc (now *Now) BeginningOfMonth() time.Time {\n\ty, m, _ := now.Date()\n\treturn time.Date(y, m, 1, 0, 0, 0, 0, now.Location())\n}\n\n// BeginningOfQuarter beginning of quarter\nfunc (now *Now) BeginningOfQuarter() time.Time {\n\tmonth := now.BeginningOfMonth()\n\toffset := (int(month.Month()) - 1) % 3\n\treturn month.AddDate(0, -offset, 0)\n}\n\n// BeginningOfHalf beginning of half year\nfunc (now *Now) BeginningOfHalf() time.Time {\n\tmonth := now.BeginningOfMonth()\n\toffset := (int(month.Month()) - 1) % 6\n\treturn month.AddDate(0, -offset, 0)\n}\n\n// BeginningOfYear BeginningOfYear beginning of year\nfunc (now *Now) BeginningOfYear() time.Time {\n\ty, _, _ := now.Date()\n\treturn time.Date(y, time.January, 1, 0, 0, 0, 0, now.Location())\n}\n\n// EndOfMinute end of minute\nfunc (now *Now) EndOfMinute() time.Time {\n\treturn now.BeginningOfMinute().Add(time.Minute - time.Nanosecond)\n}\n\n// EndOfHour end of hour\nfunc (now *Now) EndOfHour() time.Time {\n\treturn now.BeginningOfHour().Add(time.Hour - time.Nanosecond)\n}\n\n// EndOfDay end of day\nfunc (now *Now) EndOfDay() time.Time {\n\ty, m, d := now.Date()\n\treturn time.Date(y, m, d, 23, 59, 59, int(time.Second-time.Nanosecond), now.Location())\n}\n\n// EndOfWeek end of week\nfunc (now *Now) EndOfWeek() time.Time {\n\treturn now.BeginningOfWeek().AddDate(0, 0, 7).Add(-time.Nanosecond)\n}\n\n// EndOfMonth end of month\nfunc (now *Now) EndOfMonth() time.Time {\n\treturn now.BeginningOfMonth().AddDate(0, 1, 0).Add(-time.Nanosecond)\n}\n\n// EndOfQuarter end of quarter\nfunc (now *Now) EndOfQuarter() time.Time {\n\treturn now.BeginningOfQuarter().AddDate(0, 3, 0).Add(-time.Nanosecond)\n}\n\n// EndOfHalf end of half year\nfunc (now *Now) EndOfHalf() time.Time {\n\treturn now.BeginningOfHalf().AddDate(0, 6, 0).Add(-time.Nanosecond)\n}\n\n// EndOfYear end of year\nfunc (now *Now) EndOfYear() time.Time {\n\treturn now.BeginningOfYear().AddDate(1, 0, 0).Add(-time.Nanosecond)\n}\n\n// Monday monday\n/*\nfunc (now *Now) Monday() time.Time {\n\tt := now.BeginningOfDay()\n\tweekday := int(t.Weekday())\n\tif weekday == 0 {\n\t\tweekday = 7\n\t}\n\treturn t.AddDate(0, 0, -weekday+1)\n}\n*/\n\nfunc (now *Now) Monday(strs ...string) time.Time {\n\tvar parseTime time.Time\n\tvar err error\n\tif len(strs) > 0 {\n\t\tparseTime, err = now.Parse(strs...)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t} else {\n\t\tparseTime = now.BeginningOfDay()\n\t}\n\tweekday := int(parseTime.Weekday())\n\tif weekday == 0 {\n\t\tweekday = 7\n\t}\n\treturn parseTime.AddDate(0, 0, -weekday+1)\n}\n\nfunc (now *Now) Sunday(strs ...string) time.Time {\n\tvar parseTime time.Time\n\tvar err error\n\tif len(strs) > 0 {\n\t\tparseTime, err = now.Parse(strs...)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t} else {\n\t\tparseTime = now.BeginningOfDay()\n\t}\n\tweekday := int(parseTime.Weekday())\n\tif weekday == 0 {\n\t\tweekday = 7\n\t}\n\treturn parseTime.AddDate(0, 0, (7 - weekday))\n}\n\n// EndOfSunday end of sunday\nfunc (now *Now) EndOfSunday() time.Time {\n\treturn New(now.Sunday()).EndOfDay()\n}\n\n// Quarter returns the yearly quarter\nfunc (now *Now) Quarter() uint {\n\treturn (uint(now.Month())-1)/3 + 1\n}\n\nfunc (now *Now) parseWithFormat(str string, location *time.Location) (t time.Time, err error) {\n\tfor _, format := range now.TimeFormats {\n\t\tt, err = time.ParseInLocation(format, str, location)\n\n\t\tif err == nil {\n\t\t\treturn\n\t\t}\n\t}\n\terr = errors.New(\"Can't parse string as time: \" + str)\n\treturn\n}\n\nvar hasTimeRegexp = regexp.MustCompile(`(\\s+|^\\s*|T)\\d{1,2}((:\\d{1,2})*|((:\\d{1,2}){2}\\.(\\d{3}|\\d{6}|\\d{9})))(\\s*$|[Z+-])`) // match 15:04:05, 15:04:05.000, 15:04:05.000000 15, 2017-01-01 15:04, 2021-07-20T00:59:10Z, 2021-07-20T00:59:10+08:00, 2021-07-20T00:00:10-07:00 etc\nvar onlyTimeRegexp = regexp.MustCompile(`^\\s*\\d{1,2}((:\\d{1,2})*|((:\\d{1,2}){2}\\.(\\d{3}|\\d{6}|\\d{9})))\\s*$`)                // match 15:04:05, 15, 15:04:05.000, 15:04:05.000000, etc\n\n// Parse parse string to time\nfunc (now *Now) Parse(strs ...string) (t time.Time, err error) {\n\tvar (\n\t\tsetCurrentTime  bool\n\t\tparseTime       []int\n\t\tcurrentLocation = now.Location()\n\t\tonlyTimeInStr   = true\n\t\tcurrentTime     = formatTimeToList(now.Time)\n\t)\n\n\tfor _, str := range strs {\n\t\thasTimeInStr := hasTimeRegexp.MatchString(str) // match 15:04:05, 15\n\t\tonlyTimeInStr = hasTimeInStr && onlyTimeInStr && onlyTimeRegexp.MatchString(str)\n\t\tif t, err = now.parseWithFormat(str, currentLocation); err == nil {\n\t\t\tlocation := t.Location()\n\t\t\tparseTime = formatTimeToList(t)\n\n\t\t\tfor i, v := range parseTime {\n\t\t\t\t// Don't reset hour, minute, second if current time str including time\n\t\t\t\tif hasTimeInStr && i <= 3 {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// If value is zero, replace it with current time\n\t\t\t\tif v == 0 {\n\t\t\t\t\tif setCurrentTime {\n\t\t\t\t\t\tparseTime[i] = currentTime[i]\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsetCurrentTime = true\n\t\t\t\t}\n\n\t\t\t\t// if current time only includes time, should change day, month to current time\n\t\t\t\tif onlyTimeInStr {\n\t\t\t\t\tif i == 4 || i == 5 {\n\t\t\t\t\t\tparseTime[i] = currentTime[i]\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tt = time.Date(parseTime[6], time.Month(parseTime[5]), parseTime[4], parseTime[3], parseTime[2], parseTime[1], parseTime[0], location)\n\t\t\tcurrentTime = formatTimeToList(t)\n\t\t}\n\t}\n\treturn\n}\n\n// MustParse must parse string to time or it will panic\nfunc (now *Now) MustParse(strs ...string) (t time.Time) {\n\tt, err := now.Parse(strs...)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// Between check time between the begin, end time or not\nfunc (now *Now) Between(begin, end string) bool {\n\tbeginTime := now.MustParse(begin)\n\tendTime := now.MustParse(end)\n\treturn now.After(beginTime) && now.Before(endTime)\n}\n"
  },
  {
    "path": "gossh/gorm/now/time.go",
    "content": "package now\n\nimport \"time\"\n\nfunc formatTimeToList(t time.Time) []int {\n\thour, min, sec := t.Clock()\n\tyear, month, day := t.Date()\n\treturn []int{t.Nanosecond(), sec, min, hour, day, int(month), year}\n}\n"
  },
  {
    "path": "gossh/gorm/prepare_stmt.go",
    "content": "package gorm\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"reflect\"\n\t\"sync\"\n)\n\ntype Stmt struct {\n\t*sql.Stmt\n\tTransaction bool\n\tprepared    chan struct{}\n\tprepareErr  error\n}\n\ntype PreparedStmtDB struct {\n\tStmts       map[string]*Stmt\n\tPreparedSQL []string\n\tMux         *sync.RWMutex\n\tConnPool\n}\n\nfunc NewPreparedStmtDB(connPool ConnPool) *PreparedStmtDB {\n\treturn &PreparedStmtDB{\n\t\tConnPool:    connPool,\n\t\tStmts:       make(map[string]*Stmt),\n\t\tMux:         &sync.RWMutex{},\n\t\tPreparedSQL: make([]string, 0, 100),\n\t}\n}\n\nfunc (db *PreparedStmtDB) GetDBConn() (*sql.DB, error) {\n\tif sqldb, ok := db.ConnPool.(*sql.DB); ok {\n\t\treturn sqldb, nil\n\t}\n\n\tif dbConnector, ok := db.ConnPool.(GetDBConnector); ok && dbConnector != nil {\n\t\treturn dbConnector.GetDBConn()\n\t}\n\n\treturn nil, ErrInvalidDB\n}\n\nfunc (db *PreparedStmtDB) Close() {\n\tdb.Mux.Lock()\n\tdefer db.Mux.Unlock()\n\n\tfor _, query := range db.PreparedSQL {\n\t\tif stmt, ok := db.Stmts[query]; ok {\n\t\t\tdelete(db.Stmts, query)\n\t\t\tgo stmt.Close()\n\t\t}\n\t}\n}\n\nfunc (sdb *PreparedStmtDB) Reset() {\n\tsdb.Mux.Lock()\n\tdefer sdb.Mux.Unlock()\n\n\tfor _, stmt := range sdb.Stmts {\n\t\tgo stmt.Close()\n\t}\n\tsdb.PreparedSQL = make([]string, 0, 100)\n\tsdb.Stmts = make(map[string]*Stmt)\n}\n\nfunc (db *PreparedStmtDB) prepare(ctx context.Context, conn ConnPool, isTransaction bool, query string) (Stmt, error) {\n\tdb.Mux.RLock()\n\tif stmt, ok := db.Stmts[query]; ok && (!stmt.Transaction || isTransaction) {\n\t\tdb.Mux.RUnlock()\n\t\t// wait for other goroutines prepared\n\t\t<-stmt.prepared\n\t\tif stmt.prepareErr != nil {\n\t\t\treturn Stmt{}, stmt.prepareErr\n\t\t}\n\n\t\treturn *stmt, nil\n\t}\n\tdb.Mux.RUnlock()\n\n\tdb.Mux.Lock()\n\t// double check\n\tif stmt, ok := db.Stmts[query]; ok && (!stmt.Transaction || isTransaction) {\n\t\tdb.Mux.Unlock()\n\t\t// wait for other goroutines prepared\n\t\t<-stmt.prepared\n\t\tif stmt.prepareErr != nil {\n\t\t\treturn Stmt{}, stmt.prepareErr\n\t\t}\n\n\t\treturn *stmt, nil\n\t}\n\n\t// cache preparing stmt first\n\tcacheStmt := Stmt{Transaction: isTransaction, prepared: make(chan struct{})}\n\tdb.Stmts[query] = &cacheStmt\n\tdb.Mux.Unlock()\n\n\t// prepare completed\n\tdefer close(cacheStmt.prepared)\n\n\t// Reason why cannot lock conn.PrepareContext\n\t// suppose the maxopen is 1, g1 is creating record and g2 is querying record.\n\t// 1. g1 begin tx, g1 is requeue because of waiting for the system call, now `db.ConnPool` db.numOpen == 1.\n\t// 2. g2 select lock `conn.PrepareContext(ctx, query)`, now db.numOpen == db.maxOpen , wait for release.\n\t// 3. g1 tx exec insert, wait for unlock `conn.PrepareContext(ctx, query)` to finish tx and release.\n\tstmt, err := conn.PrepareContext(ctx, query)\n\tif err != nil {\n\t\tcacheStmt.prepareErr = err\n\t\tdb.Mux.Lock()\n\t\tdelete(db.Stmts, query)\n\t\tdb.Mux.Unlock()\n\t\treturn Stmt{}, err\n\t}\n\n\tdb.Mux.Lock()\n\tcacheStmt.Stmt = stmt\n\tdb.PreparedSQL = append(db.PreparedSQL, query)\n\tdb.Mux.Unlock()\n\n\treturn cacheStmt, nil\n}\n\nfunc (db *PreparedStmtDB) BeginTx(ctx context.Context, opt *sql.TxOptions) (ConnPool, error) {\n\tif beginner, ok := db.ConnPool.(TxBeginner); ok {\n\t\ttx, err := beginner.BeginTx(ctx, opt)\n\t\treturn &PreparedStmtTX{PreparedStmtDB: db, Tx: tx}, err\n\t}\n\n\tbeginner, ok := db.ConnPool.(ConnPoolBeginner)\n\tif !ok {\n\t\treturn nil, ErrInvalidTransaction\n\t}\n\n\tconnPool, err := beginner.BeginTx(ctx, opt)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif tx, ok := connPool.(Tx); ok {\n\t\treturn &PreparedStmtTX{PreparedStmtDB: db, Tx: tx}, nil\n\t}\n\treturn nil, ErrInvalidTransaction\n}\n\nfunc (db *PreparedStmtDB) ExecContext(ctx context.Context, query string, args ...any) (result sql.Result, err error) {\n\tstmt, err := db.prepare(ctx, db.ConnPool, false, query)\n\tif err == nil {\n\t\tresult, err = stmt.ExecContext(ctx, args...)\n\t\tif errors.Is(err, driver.ErrBadConn) {\n\t\t\tdb.Mux.Lock()\n\t\t\tdefer db.Mux.Unlock()\n\t\t\tgo stmt.Close()\n\t\t\tdelete(db.Stmts, query)\n\t\t}\n\t}\n\treturn result, err\n}\n\nfunc (db *PreparedStmtDB) QueryContext(ctx context.Context, query string, args ...any) (rows *sql.Rows, err error) {\n\tstmt, err := db.prepare(ctx, db.ConnPool, false, query)\n\tif err == nil {\n\t\trows, err = stmt.QueryContext(ctx, args...)\n\t\tif errors.Is(err, driver.ErrBadConn) {\n\t\t\tdb.Mux.Lock()\n\t\t\tdefer db.Mux.Unlock()\n\n\t\t\tgo stmt.Close()\n\t\t\tdelete(db.Stmts, query)\n\t\t}\n\t}\n\treturn rows, err\n}\n\nfunc (db *PreparedStmtDB) QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row {\n\tstmt, err := db.prepare(ctx, db.ConnPool, false, query)\n\tif err == nil {\n\t\treturn stmt.QueryRowContext(ctx, args...)\n\t}\n\treturn &sql.Row{}\n}\n\ntype PreparedStmtTX struct {\n\tTx\n\tPreparedStmtDB *PreparedStmtDB\n}\n\nfunc (db *PreparedStmtTX) GetDBConn() (*sql.DB, error) {\n\treturn db.PreparedStmtDB.GetDBConn()\n}\n\nfunc (tx *PreparedStmtTX) Commit() error {\n\tif tx.Tx != nil && !reflect.ValueOf(tx.Tx).IsNil() {\n\t\treturn tx.Tx.Commit()\n\t}\n\treturn ErrInvalidTransaction\n}\n\nfunc (tx *PreparedStmtTX) Rollback() error {\n\tif tx.Tx != nil && !reflect.ValueOf(tx.Tx).IsNil() {\n\t\treturn tx.Tx.Rollback()\n\t}\n\treturn ErrInvalidTransaction\n}\n\nfunc (tx *PreparedStmtTX) ExecContext(ctx context.Context, query string, args ...any) (result sql.Result, err error) {\n\tstmt, err := tx.PreparedStmtDB.prepare(ctx, tx.Tx, true, query)\n\tif err == nil {\n\t\tresult, err = tx.Tx.StmtContext(ctx, stmt.Stmt).ExecContext(ctx, args...)\n\t\tif errors.Is(err, driver.ErrBadConn) {\n\t\t\ttx.PreparedStmtDB.Mux.Lock()\n\t\t\tdefer tx.PreparedStmtDB.Mux.Unlock()\n\n\t\t\tgo stmt.Close()\n\t\t\tdelete(tx.PreparedStmtDB.Stmts, query)\n\t\t}\n\t}\n\treturn result, err\n}\n\nfunc (tx *PreparedStmtTX) QueryContext(ctx context.Context, query string, args ...any) (rows *sql.Rows, err error) {\n\tstmt, err := tx.PreparedStmtDB.prepare(ctx, tx.Tx, true, query)\n\tif err == nil {\n\t\trows, err = tx.Tx.StmtContext(ctx, stmt.Stmt).QueryContext(ctx, args...)\n\t\tif errors.Is(err, driver.ErrBadConn) {\n\t\t\ttx.PreparedStmtDB.Mux.Lock()\n\t\t\tdefer tx.PreparedStmtDB.Mux.Unlock()\n\n\t\t\tgo stmt.Close()\n\t\t\tdelete(tx.PreparedStmtDB.Stmts, query)\n\t\t}\n\t}\n\treturn rows, err\n}\n\nfunc (tx *PreparedStmtTX) QueryRowContext(ctx context.Context, query string, args ...any) *sql.Row {\n\tstmt, err := tx.PreparedStmtDB.prepare(ctx, tx.Tx, true, query)\n\tif err == nil {\n\t\treturn tx.Tx.StmtContext(ctx, stmt.Stmt).QueryRowContext(ctx, args...)\n\t}\n\treturn &sql.Row{}\n}\n"
  },
  {
    "path": "gossh/gorm/scan.go",
    "content": "package gorm\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// prepareValues prepare values slice\nfunc prepareValues(values []any, db *DB, columnTypes []*sql.ColumnType, columns []string) {\n\tif db.Statement.Schema != nil {\n\t\tfor idx, name := range columns {\n\t\t\tif field := db.Statement.Schema.LookUpField(name); field != nil {\n\t\t\t\tvalues[idx] = reflect.New(reflect.PtrTo(field.FieldType)).Interface()\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvalues[idx] = new(any)\n\t\t}\n\t} else if len(columnTypes) > 0 {\n\t\tfor idx, columnType := range columnTypes {\n\t\t\tif columnType.ScanType() != nil {\n\t\t\t\tvalues[idx] = reflect.New(reflect.PtrTo(columnType.ScanType())).Interface()\n\t\t\t} else {\n\t\t\t\tvalues[idx] = new(any)\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor idx := range columns {\n\t\t\tvalues[idx] = new(any)\n\t\t}\n\t}\n}\n\nfunc scanIntoMap(mapValue map[string]any, values []any, columns []string) {\n\tfor idx, column := range columns {\n\t\tif reflectValue := reflect.Indirect(reflect.Indirect(reflect.ValueOf(values[idx]))); reflectValue.IsValid() {\n\t\t\tmapValue[column] = reflectValue.Interface()\n\t\t\tif valuer, ok := mapValue[column].(driver.Valuer); ok {\n\t\t\t\tmapValue[column], _ = valuer.Value()\n\t\t\t} else if b, ok := mapValue[column].(sql.RawBytes); ok {\n\t\t\t\tmapValue[column] = string(b)\n\t\t\t}\n\t\t} else {\n\t\t\tmapValue[column] = nil\n\t\t}\n\t}\n}\n\nfunc (db *DB) scanIntoStruct(rows Rows, reflectValue reflect.Value, values []any, fields []*schema.Field, joinFields [][]*schema.Field) {\n\tfor idx, field := range fields {\n\t\tif field != nil {\n\t\t\tvalues[idx] = field.NewValuePool.Get()\n\t\t} else if len(fields) == 1 {\n\t\t\tif reflectValue.CanAddr() {\n\t\t\t\tvalues[idx] = reflectValue.Addr().Interface()\n\t\t\t} else {\n\t\t\t\tvalues[idx] = reflectValue.Interface()\n\t\t\t}\n\t\t}\n\t}\n\n\tdb.RowsAffected++\n\tdb.AddError(rows.Scan(values...))\n\tjoinedNestedSchemaMap := make(map[string]any)\n\tfor idx, field := range fields {\n\t\tif field == nil {\n\t\t\tcontinue\n\t\t}\n\n\t\tif len(joinFields) == 0 || len(joinFields[idx]) == 0 {\n\t\t\tdb.AddError(field.Set(db.Statement.Context, reflectValue, values[idx]))\n\t\t} else { // joinFields count is larger than 2 when using join\n\t\t\tvar isNilPtrValue bool\n\t\t\tvar relValue reflect.Value\n\t\t\t// does not contain raw dbname\n\t\t\tnestedJoinSchemas := joinFields[idx][:len(joinFields[idx])-1]\n\t\t\t// current reflect value\n\t\t\tcurrentReflectValue := reflectValue\n\t\t\tfullRels := make([]string, 0, len(nestedJoinSchemas))\n\t\t\tfor _, joinSchema := range nestedJoinSchemas {\n\t\t\t\tfullRels = append(fullRels, joinSchema.Name)\n\t\t\t\trelValue = joinSchema.ReflectValueOf(db.Statement.Context, currentReflectValue)\n\t\t\t\tif relValue.Kind() == reflect.Ptr {\n\t\t\t\t\tfullRelsName := utils.JoinNestedRelationNames(fullRels)\n\t\t\t\t\t// same nested structure\n\t\t\t\t\tif _, ok := joinedNestedSchemaMap[fullRelsName]; !ok {\n\t\t\t\t\t\tif value := reflect.ValueOf(values[idx]).Elem(); value.Kind() == reflect.Ptr && value.IsNil() {\n\t\t\t\t\t\t\tisNilPtrValue = true\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\trelValue.Set(reflect.New(relValue.Type().Elem()))\n\t\t\t\t\t\tjoinedNestedSchemaMap[fullRelsName] = nil\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcurrentReflectValue = relValue\n\t\t\t}\n\n\t\t\tif !isNilPtrValue { // ignore if value is nil\n\t\t\t\tf := joinFields[idx][len(joinFields[idx])-1]\n\t\t\t\tdb.AddError(f.Set(db.Statement.Context, relValue, values[idx]))\n\t\t\t}\n\t\t}\n\n\t\t// release data to pool\n\t\tfield.NewValuePool.Put(values[idx])\n\t}\n}\n\n// ScanMode scan data mode\ntype ScanMode uint8\n\n// scan modes\nconst (\n\tScanInitialized         ScanMode = 1 << 0 // 1\n\tScanUpdate              ScanMode = 1 << 1 // 2\n\tScanOnConflictDoNothing ScanMode = 1 << 2 // 4\n)\n\n// Scan scan rows into db statement\nfunc Scan(rows Rows, db *DB, mode ScanMode) {\n\tvar (\n\t\tcolumns, _          = rows.Columns()\n\t\tvalues              = make([]any, len(columns))\n\t\tinitialized         = mode&ScanInitialized != 0\n\t\tupdate              = mode&ScanUpdate != 0\n\t\tonConflictDonothing = mode&ScanOnConflictDoNothing != 0\n\t)\n\n\tdb.RowsAffected = 0\n\n\tswitch dest := db.Statement.Dest.(type) {\n\tcase map[string]any, *map[string]any:\n\t\tif initialized || rows.Next() {\n\t\t\tcolumnTypes, _ := rows.ColumnTypes()\n\t\t\tprepareValues(values, db, columnTypes, columns)\n\n\t\t\tdb.RowsAffected++\n\t\t\tdb.AddError(rows.Scan(values...))\n\n\t\t\tmapValue, ok := dest.(map[string]any)\n\t\t\tif !ok {\n\t\t\t\tif v, ok := dest.(*map[string]any); ok {\n\t\t\t\t\tif *v == nil {\n\t\t\t\t\t\t*v = map[string]any{}\n\t\t\t\t\t}\n\t\t\t\t\tmapValue = *v\n\t\t\t\t}\n\t\t\t}\n\t\t\tscanIntoMap(mapValue, values, columns)\n\t\t}\n\tcase *[]map[string]any:\n\t\tcolumnTypes, _ := rows.ColumnTypes()\n\t\tfor initialized || rows.Next() {\n\t\t\tprepareValues(values, db, columnTypes, columns)\n\n\t\t\tinitialized = false\n\t\t\tdb.RowsAffected++\n\t\t\tdb.AddError(rows.Scan(values...))\n\n\t\t\tmapValue := map[string]any{}\n\t\t\tscanIntoMap(mapValue, values, columns)\n\t\t\t*dest = append(*dest, mapValue)\n\t\t}\n\tcase *int, *int8, *int16, *int32, *int64,\n\t\t*uint, *uint8, *uint16, *uint32, *uint64, *uintptr,\n\t\t*float32, *float64,\n\t\t*bool, *string, *time.Time,\n\t\t*sql.NullInt32, *sql.NullInt64, *sql.NullFloat64,\n\t\t*sql.NullBool, *sql.NullString, *sql.NullTime:\n\t\tfor initialized || rows.Next() {\n\t\t\tinitialized = false\n\t\t\tdb.RowsAffected++\n\t\t\tdb.AddError(rows.Scan(dest))\n\t\t}\n\tdefault:\n\t\tvar (\n\t\t\tfields       = make([]*schema.Field, len(columns))\n\t\t\tjoinFields   [][]*schema.Field\n\t\t\tsch          = db.Statement.Schema\n\t\t\treflectValue = db.Statement.ReflectValue\n\t\t)\n\n\t\tif reflectValue.Kind() == reflect.Interface {\n\t\t\treflectValue = reflectValue.Elem()\n\t\t}\n\n\t\treflectValueType := reflectValue.Type()\n\t\tswitch reflectValueType.Kind() {\n\t\tcase reflect.Array, reflect.Slice:\n\t\t\treflectValueType = reflectValueType.Elem()\n\t\t}\n\t\tisPtr := reflectValueType.Kind() == reflect.Ptr\n\t\tif isPtr {\n\t\t\treflectValueType = reflectValueType.Elem()\n\t\t}\n\n\t\tif sch != nil {\n\t\t\tif reflectValueType != sch.ModelType && reflectValueType.Kind() == reflect.Struct {\n\t\t\t\tsch, _ = schema.Parse(db.Statement.Dest, db.cacheStore, db.NamingStrategy)\n\t\t\t}\n\n\t\t\tif len(columns) == 1 {\n\t\t\t\t// Is Pluck\n\t\t\t\tif _, ok := reflect.New(reflectValueType).Interface().(sql.Scanner); (reflectValueType != sch.ModelType && ok) || // is scanner\n\t\t\t\t\treflectValueType.Kind() != reflect.Struct || // is not struct\n\t\t\t\t\tsch.ModelType.ConvertibleTo(schema.TimeReflectType) { // is time\n\t\t\t\t\tsch = nil\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Not Pluck\n\t\t\tif sch != nil {\n\t\t\t\tmatchedFieldCount := make(map[string]int, len(columns))\n\t\t\t\tfor idx, column := range columns {\n\t\t\t\t\tif field := sch.LookUpField(column); field != nil && field.Readable {\n\t\t\t\t\t\tfields[idx] = field\n\t\t\t\t\t\tif count, ok := matchedFieldCount[column]; ok {\n\t\t\t\t\t\t\t// handle duplicate fields\n\t\t\t\t\t\t\tfor _, selectField := range sch.Fields {\n\t\t\t\t\t\t\t\tif selectField.DBName == column && selectField.Readable {\n\t\t\t\t\t\t\t\t\tif count == 0 {\n\t\t\t\t\t\t\t\t\t\tmatchedFieldCount[column]++\n\t\t\t\t\t\t\t\t\t\tfields[idx] = selectField\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcount--\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmatchedFieldCount[column] = 1\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if names := utils.SplitNestedRelationName(column); len(names) > 1 { // has nested relation\n\t\t\t\t\t\tif rel, ok := sch.Relationships.Relations[names[0]]; ok {\n\t\t\t\t\t\t\tsubNameCount := len(names)\n\t\t\t\t\t\t\t// nested relation fields\n\t\t\t\t\t\t\trelFields := make([]*schema.Field, 0, subNameCount-1)\n\t\t\t\t\t\t\trelFields = append(relFields, rel.Field)\n\t\t\t\t\t\t\tfor _, name := range names[1 : subNameCount-1] {\n\t\t\t\t\t\t\t\trel = rel.FieldSchema.Relationships.Relations[name]\n\t\t\t\t\t\t\t\trelFields = append(relFields, rel.Field)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// lastest name is raw dbname\n\t\t\t\t\t\t\tdbName := names[subNameCount-1]\n\t\t\t\t\t\t\tif field := rel.FieldSchema.LookUpField(dbName); field != nil && field.Readable {\n\t\t\t\t\t\t\t\tfields[idx] = field\n\n\t\t\t\t\t\t\t\tif len(joinFields) == 0 {\n\t\t\t\t\t\t\t\t\tjoinFields = make([][]*schema.Field, len(columns))\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trelFields = append(relFields, field)\n\t\t\t\t\t\t\t\tjoinFields[idx] = relFields\n\t\t\t\t\t\t\t\tcontinue\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalues[idx] = &sql.RawBytes{}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalues[idx] = &sql.RawBytes{}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch reflectValue.Kind() {\n\t\tcase reflect.Slice, reflect.Array:\n\t\t\tvar (\n\t\t\t\telem        reflect.Value\n\t\t\t\tisArrayKind = reflectValue.Kind() == reflect.Array\n\t\t\t)\n\n\t\t\tif !update || reflectValue.Len() == 0 {\n\t\t\t\tupdate = false\n\t\t\t\tif isArrayKind {\n\t\t\t\t\tdb.Statement.ReflectValue.Set(reflect.Zero(reflectValue.Type()))\n\t\t\t\t} else {\n\t\t\t\t\t// if the slice cap is externally initialized, the externally initialized slice is directly used here\n\t\t\t\t\tif reflectValue.Cap() == 0 {\n\t\t\t\t\t\tdb.Statement.ReflectValue.Set(reflect.MakeSlice(reflectValue.Type(), 0, 20))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treflectValue.SetLen(0)\n\t\t\t\t\t\tdb.Statement.ReflectValue.Set(reflectValue)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor initialized || rows.Next() {\n\t\t\tBEGIN:\n\t\t\t\tinitialized = false\n\n\t\t\t\tif update {\n\t\t\t\t\tif int(db.RowsAffected) >= reflectValue.Len() {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\telem = reflectValue.Index(int(db.RowsAffected))\n\t\t\t\t\tif onConflictDonothing {\n\t\t\t\t\t\tfor _, field := range fields {\n\t\t\t\t\t\t\tif _, ok := field.ValueOf(db.Statement.Context, elem); !ok {\n\t\t\t\t\t\t\t\tdb.RowsAffected++\n\t\t\t\t\t\t\t\tgoto BEGIN\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} else {\n\t\t\t\t\telem = reflect.New(reflectValueType)\n\t\t\t\t}\n\n\t\t\t\tdb.scanIntoStruct(rows, elem, values, fields, joinFields)\n\n\t\t\t\tif !update {\n\t\t\t\t\tif !isPtr {\n\t\t\t\t\t\telem = elem.Elem()\n\t\t\t\t\t}\n\t\t\t\t\tif isArrayKind {\n\t\t\t\t\t\tif reflectValue.Len() >= int(db.RowsAffected) {\n\t\t\t\t\t\t\treflectValue.Index(int(db.RowsAffected - 1)).Set(elem)\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\treflectValue = reflect.Append(reflectValue, elem)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif !update {\n\t\t\t\tdb.Statement.ReflectValue.Set(reflectValue)\n\t\t\t}\n\t\tcase reflect.Struct, reflect.Ptr:\n\t\t\tif initialized || rows.Next() {\n\t\t\t\tdb.scanIntoStruct(rows, reflectValue, values, fields, joinFields)\n\t\t\t}\n\t\tdefault:\n\t\t\tdb.AddError(rows.Scan(dest))\n\t\t}\n\t}\n\n\tif err := rows.Err(); err != nil && err != db.Error {\n\t\tdb.AddError(err)\n\t}\n\n\tif db.RowsAffected == 0 && db.Statement.RaiseErrorOnNotFound && db.Error == nil {\n\t\tdb.AddError(ErrRecordNotFound)\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/schema/constraint.go",
    "content": "package schema\n\nimport (\n\t\"regexp\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n)\n\n// reg match english letters and midline\nvar regEnLetterAndMidline = regexp.MustCompile(`^[\\w-]+$`)\n\ntype CheckConstraint struct {\n\tName       string\n\tConstraint string // length(phone) >= 10\n\t*Field\n}\n\nfunc (chk *CheckConstraint) GetName() string { return chk.Name }\n\nfunc (chk *CheckConstraint) Build() (sql string, vars []any) {\n\treturn \"CONSTRAINT ? CHECK (?)\", []any{clause.Column{Name: chk.Name}, clause.Expr{SQL: chk.Constraint}}\n}\n\n// ParseCheckConstraints parse schema check constraints\nfunc (schema *Schema) ParseCheckConstraints() map[string]CheckConstraint {\n\tchecks := map[string]CheckConstraint{}\n\tfor _, field := range schema.FieldsByDBName {\n\t\tif chk := field.TagSettings[\"CHECK\"]; chk != \"\" {\n\t\t\tnames := strings.Split(chk, \",\")\n\t\t\tif len(names) > 1 && regEnLetterAndMidline.MatchString(names[0]) {\n\t\t\t\tchecks[names[0]] = CheckConstraint{Name: names[0], Constraint: strings.Join(names[1:], \",\"), Field: field}\n\t\t\t} else {\n\t\t\t\tif names[0] == \"\" {\n\t\t\t\t\tchk = strings.Join(names[1:], \",\")\n\t\t\t\t}\n\t\t\t\tname := schema.namer.CheckerName(schema.Table, field.DBName)\n\t\t\t\tchecks[name] = CheckConstraint{Name: name, Constraint: chk, Field: field}\n\t\t\t}\n\t\t}\n\t}\n\treturn checks\n}\n\ntype UniqueConstraint struct {\n\tName  string\n\tField *Field\n}\n\nfunc (uni *UniqueConstraint) GetName() string { return uni.Name }\n\nfunc (uni *UniqueConstraint) Build() (sql string, vars []any) {\n\treturn \"CONSTRAINT ? UNIQUE (?)\", []any{clause.Column{Name: uni.Name}, clause.Column{Name: uni.Field.DBName}}\n}\n\n// ParseUniqueConstraints parse schema unique constraints\nfunc (schema *Schema) ParseUniqueConstraints() map[string]UniqueConstraint {\n\tuniques := make(map[string]UniqueConstraint)\n\tfor _, field := range schema.Fields {\n\t\tif field.Unique {\n\t\t\tname := schema.namer.UniqueName(schema.Table, field.DBName)\n\t\t\tuniques[name] = UniqueConstraint{Name: name, Field: field}\n\t\t}\n\t}\n\treturn uniques\n}\n"
  },
  {
    "path": "gossh/gorm/schema/field.go",
    "content": "package schema\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/now\"\n\t\"gossh/gorm/utils\"\n)\n\n// special types' reflect type\nvar (\n\tTimeReflectType    = reflect.TypeOf(time.Time{})\n\tTimePtrReflectType = reflect.TypeOf(&time.Time{})\n\tByteReflectType    = reflect.TypeOf(uint8(0))\n)\n\ntype (\n\t// DataType GORM data type\n\tDataType string\n\t// TimeType GORM time type\n\tTimeType int64\n)\n\n// GORM time types\nconst (\n\tUnixTime        TimeType = 1\n\tUnixSecond      TimeType = 2\n\tUnixMillisecond TimeType = 3\n\tUnixNanosecond  TimeType = 4\n)\n\n// GORM fields types\nconst (\n\tBool   DataType = \"bool\"\n\tInt    DataType = \"int\"\n\tUint   DataType = \"uint\"\n\tFloat  DataType = \"float\"\n\tString DataType = \"string\"\n\tTime   DataType = \"time\"\n\tBytes  DataType = \"bytes\"\n)\n\nconst DefaultAutoIncrementIncrement int64 = 1\n\n// Field is the representation of model schema's field\ntype Field struct {\n\tName                   string\n\tDBName                 string\n\tBindNames              []string\n\tDataType               DataType\n\tGORMDataType           DataType\n\tPrimaryKey             bool\n\tAutoIncrement          bool\n\tAutoIncrementIncrement int64\n\tCreatable              bool\n\tUpdatable              bool\n\tReadable               bool\n\tAutoCreateTime         TimeType\n\tAutoUpdateTime         TimeType\n\tHasDefaultValue        bool\n\tDefaultValue           string\n\tDefaultValueInterface  any\n\tNotNull                bool\n\tUnique                 bool\n\tComment                string\n\tSize                   int\n\tPrecision              int\n\tScale                  int\n\tIgnoreMigration        bool\n\tFieldType              reflect.Type\n\tIndirectFieldType      reflect.Type\n\tStructField            reflect.StructField\n\tTag                    reflect.StructTag\n\tTagSettings            map[string]string\n\tSchema                 *Schema\n\tEmbeddedSchema         *Schema\n\tOwnerSchema            *Schema\n\tReflectValueOf         func(context.Context, reflect.Value) reflect.Value\n\tValueOf                func(context.Context, reflect.Value) (value any, zero bool)\n\tSet                    func(context.Context, reflect.Value, any) error\n\tSerializer             SerializerInterface\n\tNewValuePool           FieldNewValuePool\n\n\t// In some db (e.g. MySQL), Unique and UniqueIndex are indistinguishable.\n\t// When a column has a (not Mul) UniqueIndex, Migrator always reports its gorm.ColumnType is Unique.\n\t// It causes field unnecessarily migration.\n\t// Therefore, we need to record the UniqueIndex on this column (exclude Mul UniqueIndex) for MigrateColumnUnique.\n\tUniqueIndex string\n}\n\nfunc (field *Field) BindName() string {\n\treturn strings.Join(field.BindNames, \".\")\n}\n\n// ParseField parses reflect.StructField to Field\nfunc (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {\n\tvar (\n\t\terr        error\n\t\ttagSetting = ParseTagSetting(fieldStruct.Tag.Get(\"gorm\"), \";\")\n\t)\n\n\tfield := &Field{\n\t\tName:                   fieldStruct.Name,\n\t\tDBName:                 tagSetting[\"COLUMN\"],\n\t\tBindNames:              []string{fieldStruct.Name},\n\t\tFieldType:              fieldStruct.Type,\n\t\tIndirectFieldType:      fieldStruct.Type,\n\t\tStructField:            fieldStruct,\n\t\tTag:                    fieldStruct.Tag,\n\t\tTagSettings:            tagSetting,\n\t\tSchema:                 schema,\n\t\tCreatable:              true,\n\t\tUpdatable:              true,\n\t\tReadable:               true,\n\t\tPrimaryKey:             utils.CheckTruth(tagSetting[\"PRIMARYKEY\"], tagSetting[\"PRIMARY_KEY\"]),\n\t\tAutoIncrement:          utils.CheckTruth(tagSetting[\"AUTOINCREMENT\"]),\n\t\tHasDefaultValue:        utils.CheckTruth(tagSetting[\"AUTOINCREMENT\"]),\n\t\tNotNull:                utils.CheckTruth(tagSetting[\"NOT NULL\"], tagSetting[\"NOTNULL\"]),\n\t\tUnique:                 utils.CheckTruth(tagSetting[\"UNIQUE\"]),\n\t\tComment:                tagSetting[\"COMMENT\"],\n\t\tAutoIncrementIncrement: DefaultAutoIncrementIncrement,\n\t}\n\n\tfor field.IndirectFieldType.Kind() == reflect.Ptr {\n\t\tfield.IndirectFieldType = field.IndirectFieldType.Elem()\n\t}\n\n\tfieldValue := reflect.New(field.IndirectFieldType)\n\t// if field is valuer, used its value or first field as data type\n\tvaluer, isValuer := fieldValue.Interface().(driver.Valuer)\n\tif isValuer {\n\t\tif _, ok := fieldValue.Interface().(GormDataTypeInterface); !ok {\n\t\t\tif v, err := valuer.Value(); reflect.ValueOf(v).IsValid() && err == nil {\n\t\t\t\tfieldValue = reflect.ValueOf(v)\n\t\t\t}\n\n\t\t\t// Use the field struct's first field type as data type, e.g: use `string` for sql.NullString\n\t\t\tvar getRealFieldValue func(reflect.Value)\n\t\t\tgetRealFieldValue = func(v reflect.Value) {\n\t\t\t\tvar (\n\t\t\t\t\trv     = reflect.Indirect(v)\n\t\t\t\t\trvType = rv.Type()\n\t\t\t\t)\n\n\t\t\t\tif rv.Kind() == reflect.Struct && !rvType.ConvertibleTo(TimeReflectType) {\n\t\t\t\t\tfor i := 0; i < rvType.NumField(); i++ {\n\t\t\t\t\t\tfor key, value := range ParseTagSetting(rvType.Field(i).Tag.Get(\"gorm\"), \";\") {\n\t\t\t\t\t\t\tif _, ok := field.TagSettings[key]; !ok {\n\t\t\t\t\t\t\t\tfield.TagSettings[key] = value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tfor i := 0; i < rvType.NumField(); i++ {\n\t\t\t\t\t\tnewFieldType := rvType.Field(i).Type\n\t\t\t\t\t\tfor newFieldType.Kind() == reflect.Ptr {\n\t\t\t\t\t\t\tnewFieldType = newFieldType.Elem()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfieldValue = reflect.New(newFieldType)\n\t\t\t\t\t\tif rvType != reflect.Indirect(fieldValue).Type() {\n\t\t\t\t\t\t\tgetRealFieldValue(fieldValue)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif fieldValue.IsValid() {\n\t\t\t\t\t\t\treturn\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\tgetRealFieldValue(fieldValue)\n\t\t}\n\t}\n\n\tif v, isSerializer := fieldValue.Interface().(SerializerInterface); isSerializer {\n\t\tfield.DataType = String\n\t\tfield.Serializer = v\n\t} else {\n\t\tserializerName := field.TagSettings[\"JSON\"]\n\t\tif serializerName == \"\" {\n\t\t\tserializerName = field.TagSettings[\"SERIALIZER\"]\n\t\t}\n\t\tif serializerName != \"\" {\n\t\t\tif serializer, ok := GetSerializer(serializerName); ok {\n\t\t\t\t// Set default data type to string for serializer\n\t\t\t\tfield.DataType = String\n\t\t\t\tfield.Serializer = serializer\n\t\t\t} else {\n\t\t\t\tschema.err = fmt.Errorf(\"invalid serializer type %v\", serializerName)\n\t\t\t}\n\t\t}\n\t}\n\n\tif num, ok := field.TagSettings[\"AUTOINCREMENTINCREMENT\"]; ok {\n\t\tfield.AutoIncrementIncrement, _ = strconv.ParseInt(num, 10, 64)\n\t}\n\n\tif v, ok := field.TagSettings[\"DEFAULT\"]; ok {\n\t\tfield.HasDefaultValue = true\n\t\tfield.DefaultValue = v\n\t}\n\n\tif num, ok := field.TagSettings[\"SIZE\"]; ok {\n\t\tif field.Size, err = strconv.Atoi(num); err != nil {\n\t\t\tfield.Size = -1\n\t\t}\n\t}\n\n\tif p, ok := field.TagSettings[\"PRECISION\"]; ok {\n\t\tfield.Precision, _ = strconv.Atoi(p)\n\t}\n\n\tif s, ok := field.TagSettings[\"SCALE\"]; ok {\n\t\tfield.Scale, _ = strconv.Atoi(s)\n\t}\n\n\t// default value is function or null or blank (primary keys)\n\tfield.DefaultValue = strings.TrimSpace(field.DefaultValue)\n\tskipParseDefaultValue := strings.Contains(field.DefaultValue, \"(\") &&\n\t\tstrings.Contains(field.DefaultValue, \")\") || strings.ToLower(field.DefaultValue) == \"null\" || field.DefaultValue == \"\"\n\tswitch reflect.Indirect(fieldValue).Kind() {\n\tcase reflect.Bool:\n\t\tfield.DataType = Bool\n\t\tif field.HasDefaultValue && !skipParseDefaultValue {\n\t\t\tif field.DefaultValueInterface, err = strconv.ParseBool(field.DefaultValue); err != nil {\n\t\t\t\tschema.err = fmt.Errorf(\"failed to parse %s as default value for bool, got error: %v\", field.DefaultValue, err)\n\t\t\t}\n\t\t}\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tfield.DataType = Int\n\t\tif field.HasDefaultValue && !skipParseDefaultValue {\n\t\t\tif field.DefaultValueInterface, err = strconv.ParseInt(field.DefaultValue, 0, 64); err != nil {\n\t\t\t\tschema.err = fmt.Errorf(\"failed to parse %s as default value for int, got error: %v\", field.DefaultValue, err)\n\t\t\t}\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tfield.DataType = Uint\n\t\tif field.HasDefaultValue && !skipParseDefaultValue {\n\t\t\tif field.DefaultValueInterface, err = strconv.ParseUint(field.DefaultValue, 0, 64); err != nil {\n\t\t\t\tschema.err = fmt.Errorf(\"failed to parse %s as default value for uint, got error: %v\", field.DefaultValue, err)\n\t\t\t}\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tfield.DataType = Float\n\t\tif field.HasDefaultValue && !skipParseDefaultValue {\n\t\t\tif field.DefaultValueInterface, err = strconv.ParseFloat(field.DefaultValue, 64); err != nil {\n\t\t\t\tschema.err = fmt.Errorf(\"failed to parse %s as default value for float, got error: %v\", field.DefaultValue, err)\n\t\t\t}\n\t\t}\n\tcase reflect.String:\n\t\tfield.DataType = String\n\t\tif field.HasDefaultValue && !skipParseDefaultValue {\n\t\t\tfield.DefaultValue = strings.Trim(field.DefaultValue, \"'\")\n\t\t\tfield.DefaultValue = strings.Trim(field.DefaultValue, `\"`)\n\t\t\tfield.DefaultValueInterface = field.DefaultValue\n\t\t}\n\tcase reflect.Struct:\n\t\tif _, ok := fieldValue.Interface().(*time.Time); ok {\n\t\t\tfield.DataType = Time\n\t\t} else if fieldValue.Type().ConvertibleTo(TimeReflectType) {\n\t\t\tfield.DataType = Time\n\t\t} else if fieldValue.Type().ConvertibleTo(TimePtrReflectType) {\n\t\t\tfield.DataType = Time\n\t\t}\n\t\tif field.HasDefaultValue && !skipParseDefaultValue && field.DataType == Time {\n\t\t\tif t, err := now.Parse(field.DefaultValue); err == nil {\n\t\t\t\tfield.DefaultValueInterface = t\n\t\t\t}\n\t\t}\n\tcase reflect.Array, reflect.Slice:\n\t\tif reflect.Indirect(fieldValue).Type().Elem() == ByteReflectType && field.DataType == \"\" {\n\t\t\tfield.DataType = Bytes\n\t\t}\n\t}\n\n\tif dataTyper, ok := fieldValue.Interface().(GormDataTypeInterface); ok {\n\t\tfield.DataType = DataType(dataTyper.GormDataType())\n\t}\n\n\tif v, ok := field.TagSettings[\"AUTOCREATETIME\"]; (ok && utils.CheckTruth(v)) || (!ok && field.Name == \"CreatedAt\" && (field.DataType == Time || field.DataType == Int || field.DataType == Uint)) {\n\t\tif field.DataType == Time {\n\t\t\tfield.AutoCreateTime = UnixTime\n\t\t} else if strings.ToUpper(v) == \"NANO\" {\n\t\t\tfield.AutoCreateTime = UnixNanosecond\n\t\t} else if strings.ToUpper(v) == \"MILLI\" {\n\t\t\tfield.AutoCreateTime = UnixMillisecond\n\t\t} else {\n\t\t\tfield.AutoCreateTime = UnixSecond\n\t\t}\n\t}\n\n\tif v, ok := field.TagSettings[\"AUTOUPDATETIME\"]; (ok && utils.CheckTruth(v)) || (!ok && field.Name == \"UpdatedAt\" && (field.DataType == Time || field.DataType == Int || field.DataType == Uint)) {\n\t\tif field.DataType == Time {\n\t\t\tfield.AutoUpdateTime = UnixTime\n\t\t} else if strings.ToUpper(v) == \"NANO\" {\n\t\t\tfield.AutoUpdateTime = UnixNanosecond\n\t\t} else if strings.ToUpper(v) == \"MILLI\" {\n\t\t\tfield.AutoUpdateTime = UnixMillisecond\n\t\t} else {\n\t\t\tfield.AutoUpdateTime = UnixSecond\n\t\t}\n\t}\n\n\tif field.GORMDataType == \"\" {\n\t\tfield.GORMDataType = field.DataType\n\t}\n\n\tif val, ok := field.TagSettings[\"TYPE\"]; ok {\n\t\tswitch DataType(strings.ToLower(val)) {\n\t\tcase Bool, Int, Uint, Float, String, Time, Bytes:\n\t\t\tfield.DataType = DataType(strings.ToLower(val))\n\t\tdefault:\n\t\t\tfield.DataType = DataType(val)\n\t\t}\n\t}\n\n\tif field.Size == 0 {\n\t\tswitch reflect.Indirect(fieldValue).Kind() {\n\t\tcase reflect.Int, reflect.Int64, reflect.Uint, reflect.Uint64, reflect.Float64:\n\t\t\tfield.Size = 64\n\t\tcase reflect.Int8, reflect.Uint8:\n\t\t\tfield.Size = 8\n\t\tcase reflect.Int16, reflect.Uint16:\n\t\t\tfield.Size = 16\n\t\tcase reflect.Int32, reflect.Uint32, reflect.Float32:\n\t\t\tfield.Size = 32\n\t\t}\n\t}\n\n\t// setup permission\n\tif val, ok := field.TagSettings[\"-\"]; ok {\n\t\tval = strings.ToLower(strings.TrimSpace(val))\n\t\tswitch val {\n\t\tcase \"-\":\n\t\t\tfield.Creatable = false\n\t\t\tfield.Updatable = false\n\t\t\tfield.Readable = false\n\t\t\tfield.DataType = \"\"\n\t\tcase \"all\":\n\t\t\tfield.Creatable = false\n\t\t\tfield.Updatable = false\n\t\t\tfield.Readable = false\n\t\t\tfield.DataType = \"\"\n\t\t\tfield.IgnoreMigration = true\n\t\tcase \"migration\":\n\t\t\tfield.IgnoreMigration = true\n\t\t}\n\t}\n\n\tif v, ok := field.TagSettings[\"->\"]; ok {\n\t\tfield.Creatable = false\n\t\tfield.Updatable = false\n\t\tif strings.ToLower(v) == \"false\" {\n\t\t\tfield.Readable = false\n\t\t} else {\n\t\t\tfield.Readable = true\n\t\t}\n\t}\n\n\tif v, ok := field.TagSettings[\"<-\"]; ok {\n\t\tfield.Creatable = true\n\t\tfield.Updatable = true\n\n\t\tif v != \"<-\" {\n\t\t\tif !strings.Contains(v, \"create\") {\n\t\t\t\tfield.Creatable = false\n\t\t\t}\n\n\t\t\tif !strings.Contains(v, \"update\") {\n\t\t\t\tfield.Updatable = false\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normal anonymous field or having `EMBEDDED` tag\n\tif _, ok := field.TagSettings[\"EMBEDDED\"]; ok || (field.GORMDataType != Time && field.GORMDataType != Bytes && !isValuer &&\n\t\tfieldStruct.Anonymous && (field.Creatable || field.Updatable || field.Readable)) {\n\t\tkind := reflect.Indirect(fieldValue).Kind()\n\t\tswitch kind {\n\t\tcase reflect.Struct:\n\t\t\tvar err error\n\t\t\tfield.Creatable = false\n\t\t\tfield.Updatable = false\n\t\t\tfield.Readable = false\n\n\t\t\tcacheStore := &sync.Map{}\n\t\t\tcacheStore.Store(embeddedCacheKey, true)\n\t\t\tif field.EmbeddedSchema, err = getOrParse(fieldValue.Interface(), cacheStore, embeddedNamer{Table: schema.Table, Namer: schema.namer}); err != nil {\n\t\t\t\tschema.err = err\n\t\t\t}\n\n\t\t\tfor _, ef := range field.EmbeddedSchema.Fields {\n\t\t\t\tef.Schema = schema\n\t\t\t\tef.OwnerSchema = field.EmbeddedSchema\n\t\t\t\tef.BindNames = append([]string{fieldStruct.Name}, ef.BindNames...)\n\t\t\t\t// index is negative means is pointer\n\t\t\t\tif field.FieldType.Kind() == reflect.Struct {\n\t\t\t\t\tef.StructField.Index = append([]int{fieldStruct.Index[0]}, ef.StructField.Index...)\n\t\t\t\t} else {\n\t\t\t\t\tef.StructField.Index = append([]int{-fieldStruct.Index[0] - 1}, ef.StructField.Index...)\n\t\t\t\t}\n\n\t\t\t\tif prefix, ok := field.TagSettings[\"EMBEDDEDPREFIX\"]; ok && ef.DBName != \"\" {\n\t\t\t\t\tef.DBName = prefix + ef.DBName\n\t\t\t\t}\n\n\t\t\t\tif ef.PrimaryKey {\n\t\t\t\t\tif !utils.CheckTruth(ef.TagSettings[\"PRIMARYKEY\"], ef.TagSettings[\"PRIMARY_KEY\"]) {\n\t\t\t\t\t\tef.PrimaryKey = false\n\n\t\t\t\t\t\tif val, ok := ef.TagSettings[\"AUTOINCREMENT\"]; !ok || !utils.CheckTruth(val) {\n\t\t\t\t\t\t\tef.AutoIncrement = false\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif !ef.AutoIncrement && ef.DefaultValue == \"\" {\n\t\t\t\t\t\t\tef.HasDefaultValue = false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor k, v := range field.TagSettings {\n\t\t\t\t\tef.TagSettings[k] = v\n\t\t\t\t}\n\t\t\t}\n\t\tcase reflect.Invalid, reflect.Uintptr, reflect.Array, reflect.Chan, reflect.Func, reflect.Interface,\n\t\t\treflect.Map, reflect.Ptr, reflect.Slice, reflect.UnsafePointer, reflect.Complex64, reflect.Complex128:\n\t\t\tschema.err = fmt.Errorf(\"invalid embedded struct for %s's field %s, should be struct, but got %v\", field.Schema.Name, field.Name, field.FieldType)\n\t\t}\n\t}\n\n\treturn field\n}\n\n// create valuer, setter when parse struct\nfunc (field *Field) setupValuerAndSetter() {\n\t// Setup NewValuePool\n\tfield.setupNewValuePool()\n\n\t// ValueOf returns field's value and if it is zero\n\tfieldIndex := field.StructField.Index[0]\n\tswitch {\n\tcase len(field.StructField.Index) == 1 && fieldIndex > 0:\n\t\tfield.ValueOf = func(ctx context.Context, value reflect.Value) (any, bool) {\n\t\t\tfieldValue := reflect.Indirect(value).Field(fieldIndex)\n\t\t\treturn fieldValue.Interface(), fieldValue.IsZero()\n\t\t}\n\tdefault:\n\t\tfield.ValueOf = func(ctx context.Context, v reflect.Value) (any, bool) {\n\t\t\tv = reflect.Indirect(v)\n\t\t\tfor _, fieldIdx := range field.StructField.Index {\n\t\t\t\tif fieldIdx >= 0 {\n\t\t\t\t\tv = v.Field(fieldIdx)\n\t\t\t\t} else {\n\t\t\t\t\tv = v.Field(-fieldIdx - 1)\n\n\t\t\t\t\tif !v.IsNil() {\n\t\t\t\t\t\tv = v.Elem()\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn nil, true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfv, zero := v.Interface(), v.IsZero()\n\t\t\treturn fv, zero\n\t\t}\n\t}\n\n\tif field.Serializer != nil {\n\t\toldValuerOf := field.ValueOf\n\t\tfield.ValueOf = func(ctx context.Context, v reflect.Value) (any, bool) {\n\t\t\tvalue, zero := oldValuerOf(ctx, v)\n\n\t\t\ts, ok := value.(SerializerValuerInterface)\n\t\t\tif !ok {\n\t\t\t\ts = field.Serializer\n\t\t\t}\n\n\t\t\treturn &serializer{\n\t\t\t\tField:           field,\n\t\t\t\tSerializeValuer: s,\n\t\t\t\tDestination:     v,\n\t\t\t\tContext:         ctx,\n\t\t\t\tfieldValue:      value,\n\t\t\t}, zero\n\t\t}\n\t}\n\n\t// ReflectValueOf returns field's reflect value\n\tswitch {\n\tcase len(field.StructField.Index) == 1 && fieldIndex > 0:\n\t\tfield.ReflectValueOf = func(ctx context.Context, value reflect.Value) reflect.Value {\n\t\t\treturn reflect.Indirect(value).Field(fieldIndex)\n\t\t}\n\tdefault:\n\t\tfield.ReflectValueOf = func(ctx context.Context, v reflect.Value) reflect.Value {\n\t\t\tv = reflect.Indirect(v)\n\t\t\tfor idx, fieldIdx := range field.StructField.Index {\n\t\t\t\tif fieldIdx >= 0 {\n\t\t\t\t\tv = v.Field(fieldIdx)\n\t\t\t\t} else {\n\t\t\t\t\tv = v.Field(-fieldIdx - 1)\n\n\t\t\t\t\tif v.IsNil() {\n\t\t\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t\t\t}\n\n\t\t\t\t\tif idx < len(field.StructField.Index)-1 {\n\t\t\t\t\t\tv = v.Elem()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn v\n\t\t}\n\t}\n\n\tfallbackSetter := func(ctx context.Context, value reflect.Value, v any, setter func(context.Context, reflect.Value, any) error) (err error) {\n\t\tif v == nil {\n\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.New(field.FieldType).Elem())\n\t\t} else {\n\t\t\treflectV := reflect.ValueOf(v)\n\t\t\t// Optimal value type acquisition for v\n\t\t\treflectValType := reflectV.Type()\n\n\t\t\tif reflectValType.AssignableTo(field.FieldType) {\n\t\t\t\tif reflectV.Kind() == reflect.Ptr && reflectV.Elem().Kind() == reflect.Ptr {\n\t\t\t\t\treflectV = reflect.Indirect(reflectV)\n\t\t\t\t}\n\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflectV)\n\t\t\t\treturn\n\t\t\t} else if reflectValType.ConvertibleTo(field.FieldType) {\n\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflectV.Convert(field.FieldType))\n\t\t\t\treturn\n\t\t\t} else if field.FieldType.Kind() == reflect.Ptr {\n\t\t\t\tfieldValue := field.ReflectValueOf(ctx, value)\n\t\t\t\tfieldType := field.FieldType.Elem()\n\n\t\t\t\tif reflectValType.AssignableTo(fieldType) {\n\t\t\t\t\tif !fieldValue.IsValid() {\n\t\t\t\t\t\tfieldValue = reflect.New(fieldType)\n\t\t\t\t\t} else if fieldValue.IsNil() {\n\t\t\t\t\t\tfieldValue.Set(reflect.New(fieldType))\n\t\t\t\t\t}\n\t\t\t\t\tfieldValue.Elem().Set(reflectV)\n\t\t\t\t\treturn\n\t\t\t\t} else if reflectValType.ConvertibleTo(fieldType) {\n\t\t\t\t\tif fieldValue.IsNil() {\n\t\t\t\t\t\tfieldValue.Set(reflect.New(fieldType))\n\t\t\t\t\t}\n\n\t\t\t\t\tfieldValue.Elem().Set(reflectV.Convert(fieldType))\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif reflectV.Kind() == reflect.Ptr {\n\t\t\t\tif reflectV.IsNil() {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.New(field.FieldType).Elem())\n\t\t\t\t} else if reflectV.Type().Elem().AssignableTo(field.FieldType) {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflectV.Elem())\n\t\t\t\t\treturn\n\t\t\t\t} else {\n\t\t\t\t\terr = setter(ctx, value, reflectV.Elem().Interface())\n\t\t\t\t}\n\t\t\t} else if valuer, ok := v.(driver.Valuer); ok {\n\t\t\t\tif v, err = valuer.Value(); err == nil {\n\t\t\t\t\terr = setter(ctx, value, v)\n\t\t\t\t}\n\t\t\t} else if _, ok := v.(clause.Expr); !ok {\n\t\t\t\treturn fmt.Errorf(\"failed to set value %#v to field %s\", v, field.Name)\n\t\t\t}\n\t\t}\n\n\t\treturn\n\t}\n\n\t// Set\n\tswitch field.FieldType.Kind() {\n\tcase reflect.Bool:\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) error {\n\t\t\tswitch data := v.(type) {\n\t\t\tcase **bool:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetBool(**data)\n\t\t\t\t}\n\t\t\tcase bool:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetBool(data)\n\t\t\tcase int64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetBool(data > 0)\n\t\t\tcase string:\n\t\t\t\tb, _ := strconv.ParseBool(data)\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetBool(b)\n\t\t\tdefault:\n\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\tswitch data := v.(type) {\n\t\t\tcase **int64:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(**data)\n\t\t\t\t}\n\t\t\tcase **int:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(**data))\n\t\t\t\t}\n\t\t\tcase **int8:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(**data))\n\t\t\t\t}\n\t\t\tcase **int16:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(**data))\n\t\t\t\t}\n\t\t\tcase **int32:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(**data))\n\t\t\t\t}\n\t\t\tcase int64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data)\n\t\t\tcase int:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase int8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase int16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase int32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase uint:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase uint8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase uint16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase uint32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase uint64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase float32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase float64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(int64(data))\n\t\t\tcase []byte:\n\t\t\t\treturn field.Set(ctx, value, string(data))\n\t\t\tcase string:\n\t\t\t\tif i, err := strconv.ParseInt(data, 0, 64); err == nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(i)\n\t\t\t\t} else {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tcase time.Time:\n\t\t\t\tif field.AutoCreateTime == UnixNanosecond || field.AutoUpdateTime == UnixNanosecond {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.UnixNano())\n\t\t\t\t} else if field.AutoCreateTime == UnixMillisecond || field.AutoUpdateTime == UnixMillisecond {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.UnixMilli())\n\t\t\t\t} else {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.Unix())\n\t\t\t\t}\n\t\t\tcase *time.Time:\n\t\t\t\tif data != nil {\n\t\t\t\t\tif field.AutoCreateTime == UnixNanosecond || field.AutoUpdateTime == UnixNanosecond {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.UnixNano())\n\t\t\t\t\t} else if field.AutoCreateTime == UnixMillisecond || field.AutoUpdateTime == UnixMillisecond {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.UnixMilli())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(data.Unix())\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetInt(0)\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\tswitch data := v.(type) {\n\t\t\tcase **uint64:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(**data)\n\t\t\t\t}\n\t\t\tcase **uint:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(**data))\n\t\t\t\t}\n\t\t\tcase **uint8:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(**data))\n\t\t\t\t}\n\t\t\tcase **uint16:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(**data))\n\t\t\t\t}\n\t\t\tcase **uint32:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(**data))\n\t\t\t\t}\n\t\t\tcase uint64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(data)\n\t\t\tcase uint:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase uint8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase uint16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase uint32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase int64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase int:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase int8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase int16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase int32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase float32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase float64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data))\n\t\t\tcase []byte:\n\t\t\t\treturn field.Set(ctx, value, string(data))\n\t\t\tcase time.Time:\n\t\t\t\tif field.AutoCreateTime == UnixNanosecond || field.AutoUpdateTime == UnixNanosecond {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data.UnixNano()))\n\t\t\t\t} else if field.AutoCreateTime == UnixMillisecond || field.AutoUpdateTime == UnixMillisecond {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data.UnixMilli()))\n\t\t\t\t} else {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(uint64(data.Unix()))\n\t\t\t\t}\n\t\t\tcase string:\n\t\t\t\tif i, err := strconv.ParseUint(data, 0, 64); err == nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetUint(i)\n\t\t\t\t} else {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\tcase reflect.Float32, reflect.Float64:\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\tswitch data := v.(type) {\n\t\t\tcase **float64:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(**data)\n\t\t\t\t}\n\t\t\tcase **float32:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(**data))\n\t\t\t\t}\n\t\t\tcase float64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(data)\n\t\t\tcase float32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase int64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase int:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase int8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase int16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase int32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase uint:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase uint8:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase uint16:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase uint32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase uint64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(float64(data))\n\t\t\tcase []byte:\n\t\t\t\treturn field.Set(ctx, value, string(data))\n\t\t\tcase string:\n\t\t\t\tif i, err := strconv.ParseFloat(data, 64); err == nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetFloat(i)\n\t\t\t\t} else {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\tcase reflect.String:\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\tswitch data := v.(type) {\n\t\t\tcase **string:\n\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).SetString(**data)\n\t\t\t\t}\n\t\t\tcase string:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetString(data)\n\t\t\tcase []byte:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetString(string(data))\n\t\t\tcase int, int8, int16, int32, int64, uint, uint8, uint16, uint32, uint64:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetString(utils.ToString(data))\n\t\t\tcase float64, float32:\n\t\t\t\tfield.ReflectValueOf(ctx, value).SetString(fmt.Sprintf(\"%.\"+strconv.Itoa(field.Precision)+\"f\", data))\n\t\t\tdefault:\n\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t}\n\t\t\treturn err\n\t\t}\n\tdefault:\n\t\tfieldValue := reflect.New(field.FieldType)\n\t\tswitch fieldValue.Elem().Interface().(type) {\n\t\tcase time.Time:\n\t\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) error {\n\t\t\t\tswitch data := v.(type) {\n\t\t\t\tcase **time.Time:\n\t\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\t\tfield.Set(ctx, value, *data)\n\t\t\t\t\t}\n\t\t\t\tcase time.Time:\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(v))\n\t\t\t\tcase *time.Time:\n\t\t\t\t\tif data != nil {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(data).Elem())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(time.Time{}))\n\t\t\t\t\t}\n\t\t\t\tcase string:\n\t\t\t\t\tif t, err := now.Parse(data); err == nil {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(t))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to set string %v to time.Time field %s, failed to parse it as time, got error %v\", v, field.Name, err)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\tcase *time.Time:\n\t\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) error {\n\t\t\t\tswitch data := v.(type) {\n\t\t\t\tcase **time.Time:\n\t\t\t\t\tif data != nil && *data != nil {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(*data))\n\t\t\t\t\t}\n\t\t\t\tcase time.Time:\n\t\t\t\t\tfieldValue := field.ReflectValueOf(ctx, value)\n\t\t\t\t\tif fieldValue.IsNil() {\n\t\t\t\t\t\tfieldValue.Set(reflect.New(field.FieldType.Elem()))\n\t\t\t\t\t}\n\t\t\t\t\tfieldValue.Elem().Set(reflect.ValueOf(v))\n\t\t\t\tcase *time.Time:\n\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(v))\n\t\t\t\tcase string:\n\t\t\t\t\tif t, err := now.Parse(data); err == nil {\n\t\t\t\t\t\tfieldValue := field.ReflectValueOf(ctx, value)\n\t\t\t\t\t\tif fieldValue.IsNil() {\n\t\t\t\t\t\t\tif v == \"\" {\n\t\t\t\t\t\t\t\treturn nil\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tfieldValue.Set(reflect.New(field.FieldType.Elem()))\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfieldValue.Elem().Set(reflect.ValueOf(t))\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn fmt.Errorf(\"failed to set string %v to time.Time field %s, failed to parse it as time, got error %v\", v, field.Name, err)\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t\t}\n\t\t\t\treturn nil\n\t\t\t}\n\t\tdefault:\n\t\t\tif _, ok := fieldValue.Elem().Interface().(sql.Scanner); ok {\n\t\t\t\t// pointer scanner\n\t\t\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\t\t\treflectV := reflect.ValueOf(v)\n\t\t\t\t\tif !reflectV.IsValid() {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.New(field.FieldType).Elem())\n\t\t\t\t\t} else if reflectV.Kind() == reflect.Ptr && reflectV.IsNil() {\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if reflectV.Type().AssignableTo(field.FieldType) {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflectV)\n\t\t\t\t\t} else if reflectV.Kind() == reflect.Ptr {\n\t\t\t\t\t\treturn field.Set(ctx, value, reflectV.Elem().Interface())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfieldValue := field.ReflectValueOf(ctx, value)\n\t\t\t\t\t\tif fieldValue.IsNil() {\n\t\t\t\t\t\t\tfieldValue.Set(reflect.New(field.FieldType.Elem()))\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif valuer, ok := v.(driver.Valuer); ok {\n\t\t\t\t\t\t\tv, _ = valuer.Value()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terr = fieldValue.Interface().(sql.Scanner).Scan(v)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t} else if _, ok := fieldValue.Interface().(sql.Scanner); ok {\n\t\t\t\t// struct scanner\n\t\t\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\t\t\treflectV := reflect.ValueOf(v)\n\t\t\t\t\tif !reflectV.IsValid() {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.New(field.FieldType).Elem())\n\t\t\t\t\t} else if reflectV.Kind() == reflect.Ptr && reflectV.IsNil() {\n\t\t\t\t\t\treturn\n\t\t\t\t\t} else if reflectV.Type().AssignableTo(field.FieldType) {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflectV)\n\t\t\t\t\t} else if reflectV.Kind() == reflect.Ptr {\n\t\t\t\t\t\treturn field.Set(ctx, value, reflectV.Elem().Interface())\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif valuer, ok := v.(driver.Valuer); ok {\n\t\t\t\t\t\t\tv, _ = valuer.Value()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\terr = field.ReflectValueOf(ctx, value).Addr().Interface().(sql.Scanner).Scan(v)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\t\t\treturn fallbackSetter(ctx, value, v, field.Set)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif field.Serializer != nil {\n\t\tvar (\n\t\t\toldFieldSetter = field.Set\n\t\t\tsameElemType   bool\n\t\t\tsameType       = field.FieldType == reflect.ValueOf(field.Serializer).Type()\n\t\t)\n\n\t\tif reflect.ValueOf(field.Serializer).Kind() == reflect.Ptr {\n\t\t\tsameElemType = field.FieldType == reflect.ValueOf(field.Serializer).Type().Elem()\n\t\t}\n\n\t\tserializerValue := reflect.Indirect(reflect.ValueOf(field.Serializer))\n\t\tserializerType := serializerValue.Type()\n\t\tfield.Set = func(ctx context.Context, value reflect.Value, v any) (err error) {\n\t\t\tif s, ok := v.(*serializer); ok {\n\t\t\t\tif s.fieldValue != nil {\n\t\t\t\t\terr = oldFieldSetter(ctx, value, s.fieldValue)\n\t\t\t\t} else if err = s.Serializer.Scan(ctx, field, value, s.value); err == nil {\n\t\t\t\t\tif sameElemType {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(s.Serializer).Elem())\n\t\t\t\t\t} else if sameType {\n\t\t\t\t\t\tfield.ReflectValueOf(ctx, value).Set(reflect.ValueOf(s.Serializer))\n\t\t\t\t\t}\n\t\t\t\t\tsi := reflect.New(serializerType)\n\t\t\t\t\tsi.Elem().Set(serializerValue)\n\t\t\t\t\ts.Serializer = si.Interface().(SerializerInterface)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr = oldFieldSetter(ctx, value, v)\n\t\t\t}\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (field *Field) setupNewValuePool() {\n\tif field.Serializer != nil {\n\t\tserializerValue := reflect.Indirect(reflect.ValueOf(field.Serializer))\n\t\tserializerType := serializerValue.Type()\n\t\tfield.NewValuePool = &sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\tsi := reflect.New(serializerType)\n\t\t\t\tsi.Elem().Set(serializerValue)\n\t\t\t\treturn &serializer{\n\t\t\t\t\tField:      field,\n\t\t\t\t\tSerializer: si.Interface().(SerializerInterface),\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t}\n\n\tif field.NewValuePool == nil {\n\t\tfield.NewValuePool = poolInitializer(reflect.PtrTo(field.IndirectFieldType))\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/schema/index.go",
    "content": "package schema\n\nimport (\n\t\"fmt\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype Index struct {\n\tName    string\n\tClass   string // UNIQUE | FULLTEXT | SPATIAL\n\tType    string // btree, hash, gist, spgist, gin, and brin\n\tWhere   string\n\tComment string\n\tOption  string        // WITH PARSER parser_name\n\tFields  []IndexOption // Note: IndexOption's Field maybe the same\n}\n\ntype IndexOption struct {\n\t*Field\n\tExpression string\n\tSort       string // DESC, ASC\n\tCollate    string\n\tLength     int\n\tpriority   int\n}\n\n// ParseIndexes parse schema indexes\nfunc (schema *Schema) ParseIndexes() map[string]Index {\n\tindexes := map[string]Index{}\n\n\tfor _, field := range schema.Fields {\n\t\tif field.TagSettings[\"INDEX\"] != \"\" || field.TagSettings[\"UNIQUEINDEX\"] != \"\" {\n\t\t\tfieldIndexes, err := parseFieldIndexes(field)\n\t\t\tif err != nil {\n\t\t\t\tschema.err = err\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tfor _, index := range fieldIndexes {\n\t\t\t\tidx := indexes[index.Name]\n\t\t\t\tidx.Name = index.Name\n\t\t\t\tif idx.Class == \"\" {\n\t\t\t\t\tidx.Class = index.Class\n\t\t\t\t}\n\t\t\t\tif idx.Type == \"\" {\n\t\t\t\t\tidx.Type = index.Type\n\t\t\t\t}\n\t\t\t\tif idx.Where == \"\" {\n\t\t\t\t\tidx.Where = index.Where\n\t\t\t\t}\n\t\t\t\tif idx.Comment == \"\" {\n\t\t\t\t\tidx.Comment = index.Comment\n\t\t\t\t}\n\t\t\t\tif idx.Option == \"\" {\n\t\t\t\t\tidx.Option = index.Option\n\t\t\t\t}\n\n\t\t\t\tidx.Fields = append(idx.Fields, index.Fields...)\n\t\t\t\tsort.Slice(idx.Fields, func(i, j int) bool {\n\t\t\t\t\treturn idx.Fields[i].priority < idx.Fields[j].priority\n\t\t\t\t})\n\n\t\t\t\tindexes[index.Name] = idx\n\t\t\t}\n\t\t}\n\t}\n\tfor _, index := range indexes {\n\t\tif index.Class == \"UNIQUE\" && len(index.Fields) == 1 {\n\t\t\tindex.Fields[0].Field.UniqueIndex = index.Name\n\t\t}\n\t}\n\treturn indexes\n}\n\nfunc (schema *Schema) LookIndex(name string) *Index {\n\tif schema != nil {\n\t\tindexes := schema.ParseIndexes()\n\t\tfor _, index := range indexes {\n\t\t\tif index.Name == name {\n\t\t\t\treturn &index\n\t\t\t}\n\n\t\t\tfor _, field := range index.Fields {\n\t\t\t\tif field.Name == name {\n\t\t\t\t\treturn &index\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc parseFieldIndexes(field *Field) (indexes []Index, err error) {\n\tfor _, value := range strings.Split(field.Tag.Get(\"gorm\"), \";\") {\n\t\tif value != \"\" {\n\t\t\tv := strings.Split(value, \":\")\n\t\t\tk := strings.TrimSpace(strings.ToUpper(v[0]))\n\t\t\tif k == \"INDEX\" || k == \"UNIQUEINDEX\" {\n\t\t\t\tvar (\n\t\t\t\t\tname       string\n\t\t\t\t\ttag        = strings.Join(v[1:], \":\")\n\t\t\t\t\tidx        = strings.Index(tag, \",\")\n\t\t\t\t\ttagSetting = strings.Join(strings.Split(tag, \",\")[1:], \",\")\n\t\t\t\t\tsettings   = ParseTagSetting(tagSetting, \",\")\n\t\t\t\t\tlength, _  = strconv.Atoi(settings[\"LENGTH\"])\n\t\t\t\t)\n\n\t\t\t\tif idx == -1 {\n\t\t\t\t\tidx = len(tag)\n\t\t\t\t}\n\n\t\t\t\tif idx != -1 {\n\t\t\t\t\tname = tag[0:idx]\n\t\t\t\t}\n\n\t\t\t\tif name == \"\" {\n\t\t\t\t\tsubName := field.Name\n\t\t\t\t\tconst key = \"COMPOSITE\"\n\t\t\t\t\tif composite, found := settings[key]; found {\n\t\t\t\t\t\tif len(composite) == 0 || composite == key {\n\t\t\t\t\t\t\terr = fmt.Errorf(\n\t\t\t\t\t\t\t\t\"The composite tag of %s.%s cannot be empty\",\n\t\t\t\t\t\t\t\tfield.Schema.Name,\n\t\t\t\t\t\t\t\tfield.Name)\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsubName = composite\n\t\t\t\t\t}\n\t\t\t\t\tname = field.Schema.namer.IndexName(\n\t\t\t\t\t\tfield.Schema.Table, subName)\n\t\t\t\t}\n\n\t\t\t\tif (k == \"UNIQUEINDEX\") || settings[\"UNIQUE\"] != \"\" {\n\t\t\t\t\tsettings[\"CLASS\"] = \"UNIQUE\"\n\t\t\t\t}\n\n\t\t\t\tpriority, err := strconv.Atoi(settings[\"PRIORITY\"])\n\t\t\t\tif err != nil {\n\t\t\t\t\tpriority = 10\n\t\t\t\t}\n\n\t\t\t\tindexes = append(indexes, Index{\n\t\t\t\t\tName:    name,\n\t\t\t\t\tClass:   settings[\"CLASS\"],\n\t\t\t\t\tType:    settings[\"TYPE\"],\n\t\t\t\t\tWhere:   settings[\"WHERE\"],\n\t\t\t\t\tComment: settings[\"COMMENT\"],\n\t\t\t\t\tOption:  settings[\"OPTION\"],\n\t\t\t\t\tFields: []IndexOption{{\n\t\t\t\t\t\tField:      field,\n\t\t\t\t\t\tExpression: settings[\"EXPRESSION\"],\n\t\t\t\t\t\tSort:       settings[\"SORT\"],\n\t\t\t\t\t\tCollate:    settings[\"COLLATE\"],\n\t\t\t\t\t\tLength:     length,\n\t\t\t\t\t\tpriority:   priority,\n\t\t\t\t\t}},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\terr = nil\n\treturn\n}\n"
  },
  {
    "path": "gossh/gorm/schema/interfaces.go",
    "content": "package schema\n\nimport (\n\t\"gossh/gorm/clause\"\n)\n\n// ConstraintInterface database constraint interface\ntype ConstraintInterface interface {\n\tGetName() string\n\tBuild() (sql string, vars []any)\n}\n\n// GormDataTypeInterface gorm data type interface\ntype GormDataTypeInterface interface {\n\tGormDataType() string\n}\n\n// FieldNewValuePool field new scan value pool\ntype FieldNewValuePool interface {\n\tGet() any\n\tPut(any)\n}\n\n// CreateClausesInterface create clauses interface\ntype CreateClausesInterface interface {\n\tCreateClauses(*Field) []clause.Interface\n}\n\n// QueryClausesInterface query clauses interface\ntype QueryClausesInterface interface {\n\tQueryClauses(*Field) []clause.Interface\n}\n\n// UpdateClausesInterface update clauses interface\ntype UpdateClausesInterface interface {\n\tUpdateClauses(*Field) []clause.Interface\n}\n\n// DeleteClausesInterface delete clauses interface\ntype DeleteClausesInterface interface {\n\tDeleteClauses(*Field) []clause.Interface\n}\n"
  },
  {
    "path": "gossh/gorm/schema/naming.go",
    "content": "package schema\n\nimport (\n\t\"crypto/sha1\"\n\t\"encoding/hex\"\n\t\"regexp\"\n\t\"strings\"\n\t\"unicode/utf8\"\n\n\t\"gossh/gorm/inflection\"\n)\n\n// Namer namer interface\ntype Namer interface {\n\tTableName(table string) string\n\tSchemaName(table string) string\n\tColumnName(table, column string) string\n\tJoinTableName(joinTable string) string\n\tRelationshipFKName(Relationship) string\n\tCheckerName(table, column string) string\n\tIndexName(table, column string) string\n\tUniqueName(table, column string) string\n}\n\n// Replacer replacer interface like strings.Replacer\ntype Replacer interface {\n\tReplace(name string) string\n}\n\nvar _ Namer = (*NamingStrategy)(nil)\n\n// NamingStrategy tables, columns naming strategy\ntype NamingStrategy struct {\n\tTablePrefix         string\n\tSingularTable       bool\n\tNameReplacer        Replacer\n\tNoLowerCase         bool\n\tIdentifierMaxLength int\n}\n\n// TableName convert string to table name\nfunc (ns NamingStrategy) TableName(str string) string {\n\tif ns.SingularTable {\n\t\treturn ns.TablePrefix + ns.toDBName(str)\n\t}\n\treturn ns.TablePrefix + inflection.Plural(ns.toDBName(str))\n}\n\n// SchemaName generate schema name from table name, don't guarantee it is the reverse value of TableName\nfunc (ns NamingStrategy) SchemaName(table string) string {\n\ttable = strings.TrimPrefix(table, ns.TablePrefix)\n\n\tif ns.SingularTable {\n\t\treturn ns.toSchemaName(table)\n\t}\n\treturn ns.toSchemaName(inflection.Singular(table))\n}\n\n// ColumnName convert string to column name\nfunc (ns NamingStrategy) ColumnName(table, column string) string {\n\treturn ns.toDBName(column)\n}\n\n// JoinTableName convert string to join table name\nfunc (ns NamingStrategy) JoinTableName(str string) string {\n\tif !ns.NoLowerCase && strings.ToLower(str) == str {\n\t\treturn ns.TablePrefix + str\n\t}\n\n\tif ns.SingularTable {\n\t\treturn ns.TablePrefix + ns.toDBName(str)\n\t}\n\treturn ns.TablePrefix + inflection.Plural(ns.toDBName(str))\n}\n\n// RelationshipFKName generate fk name for relation\nfunc (ns NamingStrategy) RelationshipFKName(rel Relationship) string {\n\treturn ns.formatName(\"fk\", rel.Schema.Table, ns.toDBName(rel.Name))\n}\n\n// CheckerName generate checker name\nfunc (ns NamingStrategy) CheckerName(table, column string) string {\n\treturn ns.formatName(\"chk\", table, column)\n}\n\n// IndexName generate index name\nfunc (ns NamingStrategy) IndexName(table, column string) string {\n\treturn ns.formatName(\"idx\", table, ns.toDBName(column))\n}\n\n// UniqueName generate unique constraint name\nfunc (ns NamingStrategy) UniqueName(table, column string) string {\n\treturn ns.formatName(\"uni\", table, ns.toDBName(column))\n}\n\nfunc (ns NamingStrategy) formatName(prefix, table, name string) string {\n\tformattedName := strings.ReplaceAll(strings.Join([]string{\n\t\tprefix, table, name,\n\t}, \"_\"), \".\", \"_\")\n\n\tif ns.IdentifierMaxLength == 0 {\n\t\tns.IdentifierMaxLength = 64\n\t}\n\n\tif utf8.RuneCountInString(formattedName) > ns.IdentifierMaxLength {\n\t\th := sha1.New()\n\t\th.Write([]byte(formattedName))\n\t\tbs := h.Sum(nil)\n\n\t\tformattedName = formattedName[0:ns.IdentifierMaxLength-8] + hex.EncodeToString(bs)[:8]\n\t}\n\treturn formattedName\n}\n\nvar (\n\t// https://github.com/golang/lint/blob/master/lint.go#L770\n\tcommonInitialisms         = []string{\"API\", \"ASCII\", \"CPU\", \"CSS\", \"DNS\", \"EOF\", \"GUID\", \"HTML\", \"HTTP\", \"HTTPS\", \"ID\", \"IP\", \"JSON\", \"LHS\", \"QPS\", \"RAM\", \"RHS\", \"RPC\", \"SLA\", \"SMTP\", \"SSH\", \"TLS\", \"TTL\", \"UID\", \"UI\", \"UUID\", \"URI\", \"URL\", \"UTF8\", \"VM\", \"XML\", \"XSRF\", \"XSS\"}\n\tcommonInitialismsReplacer *strings.Replacer\n)\n\nfunc init() {\n\tcommonInitialismsForReplacer := make([]string, 0, len(commonInitialisms))\n\tfor _, initialism := range commonInitialisms {\n\t\tcommonInitialismsForReplacer = append(commonInitialismsForReplacer, initialism, strings.Title(strings.ToLower(initialism)))\n\t}\n\tcommonInitialismsReplacer = strings.NewReplacer(commonInitialismsForReplacer...)\n}\n\nfunc (ns NamingStrategy) toDBName(name string) string {\n\tif name == \"\" {\n\t\treturn \"\"\n\t}\n\n\tif ns.NameReplacer != nil {\n\t\ttmpName := ns.NameReplacer.Replace(name)\n\n\t\tif tmpName == \"\" {\n\t\t\treturn name\n\t\t}\n\n\t\tname = tmpName\n\t}\n\n\tif ns.NoLowerCase {\n\t\treturn name\n\t}\n\n\tvar (\n\t\tvalue                          = commonInitialismsReplacer.Replace(name)\n\t\tbuf                            strings.Builder\n\t\tlastCase, nextCase, nextNumber bool // upper case == true\n\t\tcurCase                        = value[0] <= 'Z' && value[0] >= 'A'\n\t)\n\n\tfor i, v := range value[:len(value)-1] {\n\t\tnextCase = value[i+1] <= 'Z' && value[i+1] >= 'A'\n\t\tnextNumber = value[i+1] >= '0' && value[i+1] <= '9'\n\n\t\tif curCase {\n\t\t\tif lastCase && (nextCase || nextNumber) {\n\t\t\t\tbuf.WriteRune(v + 32)\n\t\t\t} else {\n\t\t\t\tif i > 0 && value[i-1] != '_' && value[i+1] != '_' {\n\t\t\t\t\tbuf.WriteByte('_')\n\t\t\t\t}\n\t\t\t\tbuf.WriteRune(v + 32)\n\t\t\t}\n\t\t} else {\n\t\t\tbuf.WriteRune(v)\n\t\t}\n\n\t\tlastCase = curCase\n\t\tcurCase = nextCase\n\t}\n\n\tif curCase {\n\t\tif !lastCase && len(value) > 1 {\n\t\t\tbuf.WriteByte('_')\n\t\t}\n\t\tbuf.WriteByte(value[len(value)-1] + 32)\n\t} else {\n\t\tbuf.WriteByte(value[len(value)-1])\n\t}\n\tret := buf.String()\n\treturn ret\n}\n\nfunc (ns NamingStrategy) toSchemaName(name string) string {\n\tresult := strings.ReplaceAll(strings.Title(strings.ReplaceAll(name, \"_\", \" \")), \" \", \"\")\n\tfor _, initialism := range commonInitialisms {\n\t\tresult = regexp.MustCompile(strings.Title(strings.ToLower(initialism))+\"([A-Z]|$|_)\").ReplaceAllString(result, initialism+\"$1\")\n\t}\n\treturn result\n}\n"
  },
  {
    "path": "gossh/gorm/schema/pool.go",
    "content": "package schema\n\nimport (\n\t\"reflect\"\n\t\"sync\"\n)\n\n// sync pools\nvar (\n\tnormalPool      sync.Map\n\tpoolInitializer = func(reflectType reflect.Type) FieldNewValuePool {\n\t\tv, _ := normalPool.LoadOrStore(reflectType, &sync.Pool{\n\t\t\tNew: func() any {\n\t\t\t\treturn reflect.New(reflectType).Interface()\n\t\t\t},\n\t\t})\n\t\treturn v.(FieldNewValuePool)\n\t}\n)\n"
  },
  {
    "path": "gossh/gorm/schema/relationship.go",
    "content": "package schema\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/inflection\"\n)\n\n// RelationshipType relationship type\ntype RelationshipType string\n\nconst (\n\tHasOne    RelationshipType = \"has_one\"      // HasOneRel has one relationship\n\tHasMany   RelationshipType = \"has_many\"     // HasManyRel has many relationship\n\tBelongsTo RelationshipType = \"belongs_to\"   // BelongsToRel belongs to relationship\n\tMany2Many RelationshipType = \"many_to_many\" // Many2ManyRel many to many relationship\n\thas       RelationshipType = \"has\"\n)\n\ntype Relationships struct {\n\tHasOne    []*Relationship\n\tBelongsTo []*Relationship\n\tHasMany   []*Relationship\n\tMany2Many []*Relationship\n\tRelations map[string]*Relationship\n\n\tEmbeddedRelations map[string]*Relationships\n}\n\ntype Relationship struct {\n\tName                     string\n\tType                     RelationshipType\n\tField                    *Field\n\tPolymorphic              *Polymorphic\n\tReferences               []*Reference\n\tSchema                   *Schema\n\tFieldSchema              *Schema\n\tJoinTable                *Schema\n\tforeignKeys, primaryKeys []string\n}\n\ntype Polymorphic struct {\n\tPolymorphicID   *Field\n\tPolymorphicType *Field\n\tValue           string\n}\n\ntype Reference struct {\n\tPrimaryKey    *Field\n\tPrimaryValue  string\n\tForeignKey    *Field\n\tOwnPrimaryKey bool\n}\n\nfunc (schema *Schema) parseRelation(field *Field) *Relationship {\n\tvar (\n\t\terr        error\n\t\tfieldValue = reflect.New(field.IndirectFieldType).Interface()\n\t\trelation   = &Relationship{\n\t\t\tName:        field.Name,\n\t\t\tField:       field,\n\t\t\tSchema:      schema,\n\t\t\tforeignKeys: toColumns(field.TagSettings[\"FOREIGNKEY\"]),\n\t\t\tprimaryKeys: toColumns(field.TagSettings[\"REFERENCES\"]),\n\t\t}\n\t)\n\n\tcacheStore := schema.cacheStore\n\n\tif relation.FieldSchema, err = getOrParse(fieldValue, cacheStore, schema.namer); err != nil {\n\t\tschema.err = err\n\t\treturn nil\n\t}\n\n\tif hasPolymorphicRelation(field.TagSettings) {\n\t\tschema.buildPolymorphicRelation(relation, field)\n\t} else if many2many := field.TagSettings[\"MANY2MANY\"]; many2many != \"\" {\n\t\tschema.buildMany2ManyRelation(relation, field, many2many)\n\t} else if belongsTo := field.TagSettings[\"BELONGSTO\"]; belongsTo != \"\" {\n\t\tschema.guessRelation(relation, field, guessBelongs)\n\t} else {\n\t\tswitch field.IndirectFieldType.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tschema.guessRelation(relation, field, guessGuess)\n\t\tcase reflect.Slice:\n\t\t\tschema.guessRelation(relation, field, guessHas)\n\t\tdefault:\n\t\t\tschema.err = fmt.Errorf(\"unsupported data type %v for %v on field %s\", relation.FieldSchema, schema,\n\t\t\t\tfield.Name)\n\t\t}\n\t}\n\n\tif relation.Type == has {\n\t\t// don't add relations to embedded schema, which might be shared\n\t\tif relation.FieldSchema != relation.Schema && relation.Polymorphic == nil && field.OwnerSchema == nil {\n\t\t\trelation.FieldSchema.Relationships.Relations[\"_\"+relation.Schema.Name+\"_\"+relation.Name] = relation\n\t\t}\n\n\t\tswitch field.IndirectFieldType.Kind() {\n\t\tcase reflect.Struct:\n\t\t\trelation.Type = HasOne\n\t\tcase reflect.Slice:\n\t\t\trelation.Type = HasMany\n\t\t}\n\t}\n\n\tif schema.err == nil {\n\t\tschema.setRelation(relation)\n\t\tswitch relation.Type {\n\t\tcase HasOne:\n\t\t\tschema.Relationships.HasOne = append(schema.Relationships.HasOne, relation)\n\t\tcase HasMany:\n\t\t\tschema.Relationships.HasMany = append(schema.Relationships.HasMany, relation)\n\t\tcase BelongsTo:\n\t\t\tschema.Relationships.BelongsTo = append(schema.Relationships.BelongsTo, relation)\n\t\tcase Many2Many:\n\t\t\tschema.Relationships.Many2Many = append(schema.Relationships.Many2Many, relation)\n\t\t}\n\t}\n\n\treturn relation\n}\n\n// hasPolymorphicRelation check if has polymorphic relation\n// 1. `POLYMORPHIC` tag\n// 2. `POLYMORPHICTYPE` and `POLYMORPHICID` tag\nfunc hasPolymorphicRelation(tagSettings map[string]string) bool {\n\tif _, ok := tagSettings[\"POLYMORPHIC\"]; ok {\n\t\treturn true\n\t}\n\n\t_, hasType := tagSettings[\"POLYMORPHICTYPE\"]\n\t_, hasId := tagSettings[\"POLYMORPHICID\"]\n\n\treturn hasType && hasId\n}\n\nfunc (schema *Schema) setRelation(relation *Relationship) {\n\t// set non-embedded relation\n\tif rel := schema.Relationships.Relations[relation.Name]; rel != nil {\n\t\tif len(rel.Field.BindNames) > 1 {\n\t\t\tschema.Relationships.Relations[relation.Name] = relation\n\t\t}\n\t} else {\n\t\tschema.Relationships.Relations[relation.Name] = relation\n\t}\n\n\t// set embedded relation\n\tif len(relation.Field.BindNames) <= 1 {\n\t\treturn\n\t}\n\trelationships := &schema.Relationships\n\tfor i, name := range relation.Field.BindNames {\n\t\tif i < len(relation.Field.BindNames)-1 {\n\t\t\tif relationships.EmbeddedRelations == nil {\n\t\t\t\trelationships.EmbeddedRelations = map[string]*Relationships{}\n\t\t\t}\n\t\t\tif r := relationships.EmbeddedRelations[name]; r == nil {\n\t\t\t\trelationships.EmbeddedRelations[name] = &Relationships{}\n\t\t\t}\n\t\t\trelationships = relationships.EmbeddedRelations[name]\n\t\t} else {\n\t\t\tif relationships.Relations == nil {\n\t\t\t\trelationships.Relations = map[string]*Relationship{}\n\t\t\t}\n\t\t\trelationships.Relations[relation.Name] = relation\n\t\t}\n\t}\n}\n\n// User has many Toys, its `Polymorphic` is `Owner`, Pet has one Toy, its `Polymorphic` is `Owner`\n//\n//\ttype User struct {\n//\t  Toys []Toy `gorm:\"polymorphic:Owner;\"`\n//\t}\n//\ttype Pet struct {\n//\t  Toy Toy `gorm:\"polymorphic:Owner;\"`\n//\t}\n//\ttype Toy struct {\n//\t  OwnerID   int\n//\t  OwnerType string\n//\t}\nfunc (schema *Schema) buildPolymorphicRelation(relation *Relationship, field *Field) {\n\tpolymorphic := field.TagSettings[\"POLYMORPHIC\"]\n\n\trelation.Polymorphic = &Polymorphic{\n\t\tValue: schema.Table,\n\t}\n\n\tvar (\n\t\ttypeName = polymorphic + \"Type\"\n\t\ttypeId   = polymorphic + \"ID\"\n\t)\n\n\tif value, ok := field.TagSettings[\"POLYMORPHICTYPE\"]; ok {\n\t\ttypeName = strings.TrimSpace(value)\n\t}\n\n\tif value, ok := field.TagSettings[\"POLYMORPHICID\"]; ok {\n\t\ttypeId = strings.TrimSpace(value)\n\t}\n\n\trelation.Polymorphic.PolymorphicType = relation.FieldSchema.FieldsByName[typeName]\n\trelation.Polymorphic.PolymorphicID = relation.FieldSchema.FieldsByName[typeId]\n\n\tif value, ok := field.TagSettings[\"POLYMORPHICVALUE\"]; ok {\n\t\trelation.Polymorphic.Value = strings.TrimSpace(value)\n\t}\n\n\tif relation.Polymorphic.PolymorphicType == nil {\n\t\tschema.err = fmt.Errorf(\"invalid polymorphic type %v for %v on field %s, missing field %s\",\n\t\t\trelation.FieldSchema, schema, field.Name, polymorphic+\"Type\")\n\t}\n\n\tif relation.Polymorphic.PolymorphicID == nil {\n\t\tschema.err = fmt.Errorf(\"invalid polymorphic type %v for %v on field %s, missing field %s\",\n\t\t\trelation.FieldSchema, schema, field.Name, polymorphic+\"ID\")\n\t}\n\n\tif schema.err == nil {\n\t\trelation.References = append(relation.References, &Reference{\n\t\t\tPrimaryValue: relation.Polymorphic.Value,\n\t\t\tForeignKey:   relation.Polymorphic.PolymorphicType,\n\t\t})\n\n\t\tprimaryKeyField := schema.PrioritizedPrimaryField\n\t\tif len(relation.foreignKeys) > 0 {\n\t\t\tif primaryKeyField = schema.LookUpField(relation.foreignKeys[0]); primaryKeyField == nil || len(relation.foreignKeys) > 1 {\n\t\t\t\tschema.err = fmt.Errorf(\"invalid polymorphic foreign keys %+v for %v on field %s\", relation.foreignKeys,\n\t\t\t\t\tschema, field.Name)\n\t\t\t}\n\t\t}\n\n\t\tif primaryKeyField == nil {\n\t\t\tschema.err = fmt.Errorf(\"invalid polymorphic type %v for %v on field %s, missing primaryKey field\",\n\t\t\t\trelation.FieldSchema, schema, field.Name)\n\t\t\treturn\n\t\t}\n\n\t\t// use same data type for foreign keys\n\t\tif copyableDataType(primaryKeyField.DataType) {\n\t\t\trelation.Polymorphic.PolymorphicID.DataType = primaryKeyField.DataType\n\t\t}\n\t\trelation.Polymorphic.PolymorphicID.GORMDataType = primaryKeyField.GORMDataType\n\t\tif relation.Polymorphic.PolymorphicID.Size == 0 {\n\t\t\trelation.Polymorphic.PolymorphicID.Size = primaryKeyField.Size\n\t\t}\n\n\t\trelation.References = append(relation.References, &Reference{\n\t\t\tPrimaryKey:    primaryKeyField,\n\t\t\tForeignKey:    relation.Polymorphic.PolymorphicID,\n\t\t\tOwnPrimaryKey: true,\n\t\t})\n\t}\n\n\trelation.Type = has\n}\n\nfunc (schema *Schema) buildMany2ManyRelation(relation *Relationship, field *Field, many2many string) {\n\trelation.Type = Many2Many\n\n\tvar (\n\t\terr             error\n\t\tjoinTableFields []reflect.StructField\n\t\tfieldsMap       = map[string]*Field{}\n\t\townFieldsMap    = map[string]*Field{} // fix self join many2many\n\t\treferFieldsMap  = map[string]*Field{}\n\t\tjoinForeignKeys = toColumns(field.TagSettings[\"JOINFOREIGNKEY\"])\n\t\tjoinReferences  = toColumns(field.TagSettings[\"JOINREFERENCES\"])\n\t)\n\n\townForeignFields := schema.PrimaryFields\n\trefForeignFields := relation.FieldSchema.PrimaryFields\n\n\tif len(relation.foreignKeys) > 0 {\n\t\townForeignFields = []*Field{}\n\t\tfor _, foreignKey := range relation.foreignKeys {\n\t\t\tif field := schema.LookUpField(foreignKey); field != nil {\n\t\t\t\townForeignFields = append(ownForeignFields, field)\n\t\t\t} else {\n\t\t\t\tschema.err = fmt.Errorf(\"invalid foreign key: %s\", foreignKey)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(relation.primaryKeys) > 0 {\n\t\trefForeignFields = []*Field{}\n\t\tfor _, foreignKey := range relation.primaryKeys {\n\t\t\tif field := relation.FieldSchema.LookUpField(foreignKey); field != nil {\n\t\t\t\trefForeignFields = append(refForeignFields, field)\n\t\t\t} else {\n\t\t\t\tschema.err = fmt.Errorf(\"invalid foreign key: %s\", foreignKey)\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\tfor idx, ownField := range ownForeignFields {\n\t\tjoinFieldName := strings.Title(schema.Name) + ownField.Name\n\t\tif len(joinForeignKeys) > idx {\n\t\t\tjoinFieldName = strings.Title(joinForeignKeys[idx])\n\t\t}\n\n\t\townFieldsMap[joinFieldName] = ownField\n\t\tfieldsMap[joinFieldName] = ownField\n\t\tjoinTableFields = append(joinTableFields, reflect.StructField{\n\t\t\tName:    joinFieldName,\n\t\t\tPkgPath: ownField.StructField.PkgPath,\n\t\t\tType:    ownField.StructField.Type,\n\t\t\tTag: removeSettingFromTag(appendSettingFromTag(ownField.StructField.Tag, \"primaryKey\"),\n\t\t\t\t\"column\", \"autoincrement\", \"index\", \"unique\", \"uniqueindex\"),\n\t\t})\n\t}\n\n\tfor idx, relField := range refForeignFields {\n\t\tjoinFieldName := strings.Title(relation.FieldSchema.Name) + relField.Name\n\n\t\tif _, ok := ownFieldsMap[joinFieldName]; ok {\n\t\t\tif field.Name != relation.FieldSchema.Name {\n\t\t\t\tjoinFieldName = inflection.Singular(field.Name) + relField.Name\n\t\t\t} else {\n\t\t\t\tjoinFieldName += \"Reference\"\n\t\t\t}\n\t\t}\n\n\t\tif len(joinReferences) > idx {\n\t\t\tjoinFieldName = strings.Title(joinReferences[idx])\n\t\t}\n\n\t\treferFieldsMap[joinFieldName] = relField\n\n\t\tif _, ok := fieldsMap[joinFieldName]; !ok {\n\t\t\tfieldsMap[joinFieldName] = relField\n\t\t\tjoinTableFields = append(joinTableFields, reflect.StructField{\n\t\t\t\tName:    joinFieldName,\n\t\t\t\tPkgPath: relField.StructField.PkgPath,\n\t\t\t\tType:    relField.StructField.Type,\n\t\t\t\tTag: removeSettingFromTag(appendSettingFromTag(relField.StructField.Tag, \"primaryKey\"),\n\t\t\t\t\t\"column\", \"autoincrement\", \"index\", \"unique\", \"uniqueindex\"),\n\t\t\t})\n\t\t}\n\t}\n\n\tjoinTableFields = append(joinTableFields, reflect.StructField{\n\t\tName: strings.Title(schema.Name) + field.Name,\n\t\tType: schema.ModelType,\n\t\tTag:  `gorm:\"-\"`,\n\t})\n\n\tif relation.JoinTable, err = Parse(reflect.New(reflect.StructOf(joinTableFields)).Interface(), schema.cacheStore,\n\t\tschema.namer); err != nil {\n\t\tschema.err = err\n\t}\n\trelation.JoinTable.Name = many2many\n\trelation.JoinTable.Table = schema.namer.JoinTableName(many2many)\n\trelation.JoinTable.PrimaryFields = make([]*Field, 0, len(relation.JoinTable.Fields))\n\n\trelName := relation.Schema.Name\n\trelRefName := relation.FieldSchema.Name\n\tif relName == relRefName {\n\t\trelRefName = relation.Field.Name\n\t}\n\n\tif _, ok := relation.JoinTable.Relationships.Relations[relName]; !ok {\n\t\trelation.JoinTable.Relationships.Relations[relName] = &Relationship{\n\t\t\tName:        relName,\n\t\t\tType:        BelongsTo,\n\t\t\tSchema:      relation.JoinTable,\n\t\t\tFieldSchema: relation.Schema,\n\t\t}\n\t} else {\n\t\trelation.JoinTable.Relationships.Relations[relName].References = []*Reference{}\n\t}\n\n\tif _, ok := relation.JoinTable.Relationships.Relations[relRefName]; !ok {\n\t\trelation.JoinTable.Relationships.Relations[relRefName] = &Relationship{\n\t\t\tName:        relRefName,\n\t\t\tType:        BelongsTo,\n\t\t\tSchema:      relation.JoinTable,\n\t\t\tFieldSchema: relation.FieldSchema,\n\t\t}\n\t} else {\n\t\trelation.JoinTable.Relationships.Relations[relRefName].References = []*Reference{}\n\t}\n\n\t// build references\n\tfor _, f := range relation.JoinTable.Fields {\n\t\tif f.Creatable || f.Readable || f.Updatable {\n\t\t\t// use same data type for foreign keys\n\t\t\tif copyableDataType(fieldsMap[f.Name].DataType) {\n\t\t\t\tf.DataType = fieldsMap[f.Name].DataType\n\t\t\t}\n\t\t\tf.GORMDataType = fieldsMap[f.Name].GORMDataType\n\t\t\tif f.Size == 0 {\n\t\t\t\tf.Size = fieldsMap[f.Name].Size\n\t\t\t}\n\t\t\trelation.JoinTable.PrimaryFields = append(relation.JoinTable.PrimaryFields, f)\n\n\t\t\tif of, ok := ownFieldsMap[f.Name]; ok {\n\t\t\t\tjoinRel := relation.JoinTable.Relationships.Relations[relName]\n\t\t\t\tjoinRel.Field = relation.Field\n\t\t\t\tjoinRel.References = append(joinRel.References, &Reference{\n\t\t\t\t\tPrimaryKey: of,\n\t\t\t\t\tForeignKey: f,\n\t\t\t\t})\n\n\t\t\t\trelation.References = append(relation.References, &Reference{\n\t\t\t\t\tPrimaryKey:    of,\n\t\t\t\t\tForeignKey:    f,\n\t\t\t\t\tOwnPrimaryKey: true,\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif rf, ok := referFieldsMap[f.Name]; ok {\n\t\t\t\tjoinRefRel := relation.JoinTable.Relationships.Relations[relRefName]\n\t\t\t\tif joinRefRel.Field == nil {\n\t\t\t\t\tjoinRefRel.Field = relation.Field\n\t\t\t\t}\n\t\t\t\tjoinRefRel.References = append(joinRefRel.References, &Reference{\n\t\t\t\t\tPrimaryKey: rf,\n\t\t\t\t\tForeignKey: f,\n\t\t\t\t})\n\n\t\t\t\trelation.References = append(relation.References, &Reference{\n\t\t\t\t\tPrimaryKey: rf,\n\t\t\t\t\tForeignKey: f,\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n}\n\ntype guessLevel int\n\nconst (\n\tguessGuess guessLevel = iota\n\tguessBelongs\n\tguessEmbeddedBelongs\n\tguessHas\n\tguessEmbeddedHas\n)\n\nfunc (schema *Schema) guessRelation(relation *Relationship, field *Field, cgl guessLevel) {\n\tvar (\n\t\tprimaryFields, foreignFields []*Field\n\t\tprimarySchema, foreignSchema = schema, relation.FieldSchema\n\t\tgl                           = cgl\n\t)\n\n\tif gl == guessGuess {\n\t\tif field.Schema == relation.FieldSchema {\n\t\t\tgl = guessBelongs\n\t\t} else {\n\t\t\tgl = guessHas\n\t\t}\n\t}\n\n\treguessOrErr := func() {\n\t\tswitch cgl {\n\t\tcase guessGuess:\n\t\t\tschema.guessRelation(relation, field, guessBelongs)\n\t\tcase guessBelongs:\n\t\t\tschema.guessRelation(relation, field, guessEmbeddedBelongs)\n\t\tcase guessEmbeddedBelongs:\n\t\t\tschema.guessRelation(relation, field, guessHas)\n\t\tcase guessHas:\n\t\t\tschema.guessRelation(relation, field, guessEmbeddedHas)\n\t\t// case guessEmbeddedHas:\n\t\tdefault:\n\t\t\tschema.err = fmt.Errorf(\"invalid field found for struct %v's field %s: define a valid foreign key for relations or implement the Valuer/Scanner interface\",\n\t\t\t\tschema, field.Name)\n\t\t}\n\t}\n\n\tswitch gl {\n\tcase guessBelongs:\n\t\tprimarySchema, foreignSchema = relation.FieldSchema, schema\n\tcase guessEmbeddedBelongs:\n\t\tif field.OwnerSchema == nil {\n\t\t\treguessOrErr()\n\t\t\treturn\n\t\t}\n\t\tprimarySchema, foreignSchema = relation.FieldSchema, field.OwnerSchema\n\tcase guessHas:\n\tcase guessEmbeddedHas:\n\t\tif field.OwnerSchema == nil {\n\t\t\treguessOrErr()\n\t\t\treturn\n\t\t}\n\t\tprimarySchema, foreignSchema = field.OwnerSchema, relation.FieldSchema\n\t}\n\n\tif len(relation.foreignKeys) > 0 {\n\t\tfor _, foreignKey := range relation.foreignKeys {\n\t\t\tf := foreignSchema.LookUpField(foreignKey)\n\t\t\tif f == nil {\n\t\t\t\treguessOrErr()\n\t\t\t\treturn\n\t\t\t}\n\t\t\tforeignFields = append(foreignFields, f)\n\t\t}\n\t} else {\n\t\tprimarySchemaName := primarySchema.Name\n\t\tif primarySchemaName == \"\" {\n\t\t\tprimarySchemaName = relation.FieldSchema.Name\n\t\t}\n\n\t\tif len(relation.primaryKeys) > 0 {\n\t\t\tfor _, primaryKey := range relation.primaryKeys {\n\t\t\t\tif f := primarySchema.LookUpField(primaryKey); f != nil {\n\t\t\t\t\tprimaryFields = append(primaryFields, f)\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tprimaryFields = primarySchema.PrimaryFields\n\t\t}\n\n\tprimaryFieldLoop:\n\t\tfor _, primaryField := range primaryFields {\n\t\t\tlookUpName := primarySchemaName + primaryField.Name\n\t\t\tif gl == guessBelongs {\n\t\t\t\tlookUpName = field.Name + primaryField.Name\n\t\t\t}\n\n\t\t\tlookUpNames := []string{lookUpName}\n\t\t\tif len(primaryFields) == 1 {\n\t\t\t\tlookUpNames = append(lookUpNames, strings.TrimSuffix(lookUpName, primaryField.Name)+\"ID\",\n\t\t\t\t\tstrings.TrimSuffix(lookUpName, primaryField.Name)+\"Id\", schema.namer.ColumnName(foreignSchema.Table,\n\t\t\t\t\t\tstrings.TrimSuffix(lookUpName, primaryField.Name)+\"ID\"))\n\t\t\t}\n\n\t\t\tfor _, name := range lookUpNames {\n\t\t\t\tif f := foreignSchema.LookUpFieldByBindName(field.BindNames, name); f != nil {\n\t\t\t\t\tforeignFields = append(foreignFields, f)\n\t\t\t\t\tprimaryFields = append(primaryFields, primaryField)\n\t\t\t\t\tcontinue primaryFieldLoop\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor _, name := range lookUpNames {\n\t\t\t\tif f := foreignSchema.LookUpField(name); f != nil {\n\t\t\t\t\tforeignFields = append(foreignFields, f)\n\t\t\t\t\tprimaryFields = append(primaryFields, primaryField)\n\t\t\t\t\tcontinue primaryFieldLoop\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tswitch {\n\tcase len(foreignFields) == 0:\n\t\treguessOrErr()\n\t\treturn\n\tcase len(relation.primaryKeys) > 0:\n\t\tfor idx, primaryKey := range relation.primaryKeys {\n\t\t\tif f := primarySchema.LookUpField(primaryKey); f != nil {\n\t\t\t\tif len(primaryFields) < idx+1 {\n\t\t\t\t\tprimaryFields = append(primaryFields, f)\n\t\t\t\t} else if f != primaryFields[idx] {\n\t\t\t\t\treguessOrErr()\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treguessOrErr()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\tcase len(primaryFields) == 0:\n\t\tif len(foreignFields) == 1 && primarySchema.PrioritizedPrimaryField != nil {\n\t\t\tprimaryFields = append(primaryFields, primarySchema.PrioritizedPrimaryField)\n\t\t} else if len(primarySchema.PrimaryFields) == len(foreignFields) {\n\t\t\tprimaryFields = append(primaryFields, primarySchema.PrimaryFields...)\n\t\t} else {\n\t\t\treguessOrErr()\n\t\t\treturn\n\t\t}\n\t}\n\n\t// build references\n\tfor idx, foreignField := range foreignFields {\n\t\t// use same data type for foreign keys\n\t\tif copyableDataType(primaryFields[idx].DataType) {\n\t\t\tforeignField.DataType = primaryFields[idx].DataType\n\t\t}\n\t\tforeignField.GORMDataType = primaryFields[idx].GORMDataType\n\t\tif foreignField.Size == 0 {\n\t\t\tforeignField.Size = primaryFields[idx].Size\n\t\t}\n\n\t\trelation.References = append(relation.References, &Reference{\n\t\t\tPrimaryKey:    primaryFields[idx],\n\t\t\tForeignKey:    foreignField,\n\t\t\tOwnPrimaryKey: (schema == primarySchema && gl == guessHas) || (field.OwnerSchema == primarySchema && gl == guessEmbeddedHas),\n\t\t})\n\t}\n\n\tif gl == guessHas || gl == guessEmbeddedHas {\n\t\trelation.Type = has\n\t} else {\n\t\trelation.Type = BelongsTo\n\t}\n}\n\n// Constraint is ForeignKey Constraint\ntype Constraint struct {\n\tName            string\n\tField           *Field\n\tSchema          *Schema\n\tForeignKeys     []*Field\n\tReferenceSchema *Schema\n\tReferences      []*Field\n\tOnDelete        string\n\tOnUpdate        string\n}\n\nfunc (constraint *Constraint) GetName() string { return constraint.Name }\n\nfunc (constraint *Constraint) Build() (sql string, vars []any) {\n\tsql = \"CONSTRAINT ? FOREIGN KEY ? REFERENCES ??\"\n\tif constraint.OnDelete != \"\" {\n\t\tsql += \" ON DELETE \" + constraint.OnDelete\n\t}\n\n\tif constraint.OnUpdate != \"\" {\n\t\tsql += \" ON UPDATE \" + constraint.OnUpdate\n\t}\n\n\tforeignKeys := make([]any, 0, len(constraint.ForeignKeys))\n\tfor _, field := range constraint.ForeignKeys {\n\t\tforeignKeys = append(foreignKeys, clause.Column{Name: field.DBName})\n\t}\n\n\treferences := make([]any, 0, len(constraint.References))\n\tfor _, field := range constraint.References {\n\t\treferences = append(references, clause.Column{Name: field.DBName})\n\t}\n\tvars = append(vars, clause.Table{Name: constraint.Name}, foreignKeys, clause.Table{Name: constraint.ReferenceSchema.Table}, references)\n\treturn\n}\n\nfunc (rel *Relationship) ParseConstraint() *Constraint {\n\tstr := rel.Field.TagSettings[\"CONSTRAINT\"]\n\tif str == \"-\" {\n\t\treturn nil\n\t}\n\n\tif rel.Type == BelongsTo {\n\t\tfor _, r := range rel.FieldSchema.Relationships.Relations {\n\t\t\tif r != rel && r.FieldSchema == rel.Schema && len(rel.References) == len(r.References) {\n\t\t\t\tmatched := true\n\t\t\t\tfor idx, ref := range r.References {\n\t\t\t\t\tif !(rel.References[idx].PrimaryKey == ref.PrimaryKey && rel.References[idx].ForeignKey == ref.ForeignKey &&\n\t\t\t\t\t\trel.References[idx].PrimaryValue == ref.PrimaryValue) {\n\t\t\t\t\t\tmatched = false\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif matched {\n\t\t\t\t\treturn nil\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tvar (\n\t\tname     string\n\t\tidx      = strings.Index(str, \",\")\n\t\tsettings = ParseTagSetting(str, \",\")\n\t)\n\n\t// optimize match english letters and midline\n\t// The following code is basically called in for.\n\t// In order to avoid the performance problems caused by repeated compilation of regular expressions,\n\t// it only needs to be done once outside, so optimization is done here.\n\tif idx != -1 && regEnLetterAndMidline.MatchString(str[0:idx]) {\n\t\tname = str[0:idx]\n\t} else {\n\t\tname = rel.Schema.namer.RelationshipFKName(*rel)\n\t}\n\n\tconstraint := Constraint{\n\t\tName:     name,\n\t\tField:    rel.Field,\n\t\tOnUpdate: settings[\"ONUPDATE\"],\n\t\tOnDelete: settings[\"ONDELETE\"],\n\t}\n\n\tfor _, ref := range rel.References {\n\t\tif ref.PrimaryKey != nil && (rel.JoinTable == nil || ref.OwnPrimaryKey) {\n\t\t\tconstraint.ForeignKeys = append(constraint.ForeignKeys, ref.ForeignKey)\n\t\t\tconstraint.References = append(constraint.References, ref.PrimaryKey)\n\n\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\tconstraint.Schema = ref.ForeignKey.Schema\n\t\t\t\tconstraint.ReferenceSchema = rel.Schema\n\t\t\t} else {\n\t\t\t\tconstraint.Schema = rel.Schema\n\t\t\t\tconstraint.ReferenceSchema = ref.PrimaryKey.Schema\n\t\t\t}\n\t\t}\n\t}\n\n\treturn &constraint\n}\n\nfunc (rel *Relationship) ToQueryConditions(ctx context.Context, reflectValue reflect.Value) (conds []clause.Expression) {\n\ttable := rel.FieldSchema.Table\n\tforeignFields := []*Field{}\n\trelForeignKeys := []string{}\n\n\tif rel.JoinTable != nil {\n\t\ttable = rel.JoinTable.Table\n\t\tfor _, ref := range rel.References {\n\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\tforeignFields = append(foreignFields, ref.PrimaryKey)\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.ForeignKey.DBName)\n\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\tconds = append(conds, clause.Eq{\n\t\t\t\t\tColumn: clause.Column{Table: rel.JoinTable.Table, Name: ref.ForeignKey.DBName},\n\t\t\t\t\tValue:  ref.PrimaryValue,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tconds = append(conds, clause.Eq{\n\t\t\t\t\tColumn: clause.Column{Table: rel.JoinTable.Table, Name: ref.ForeignKey.DBName},\n\t\t\t\t\tValue:  clause.Column{Table: rel.FieldSchema.Table, Name: ref.PrimaryKey.DBName},\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor _, ref := range rel.References {\n\t\t\tif ref.OwnPrimaryKey {\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.ForeignKey.DBName)\n\t\t\t\tforeignFields = append(foreignFields, ref.PrimaryKey)\n\t\t\t} else if ref.PrimaryValue != \"\" {\n\t\t\t\tconds = append(conds, clause.Eq{\n\t\t\t\t\tColumn: clause.Column{Table: rel.FieldSchema.Table, Name: ref.ForeignKey.DBName},\n\t\t\t\t\tValue:  ref.PrimaryValue,\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\trelForeignKeys = append(relForeignKeys, ref.PrimaryKey.DBName)\n\t\t\t\tforeignFields = append(foreignFields, ref.ForeignKey)\n\t\t\t}\n\t\t}\n\t}\n\n\t_, foreignValues := GetIdentityFieldValuesMap(ctx, reflectValue, foreignFields)\n\tcolumn, values := ToQueryValues(table, relForeignKeys, foreignValues)\n\n\tconds = append(conds, clause.IN{Column: column, Values: values})\n\treturn\n}\n\nfunc copyableDataType(str DataType) bool {\n\tfor _, s := range []string{\"auto_increment\", \"primary key\"} {\n\t\tif strings.Contains(strings.ToLower(string(str)), s) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n"
  },
  {
    "path": "gossh/gorm/schema/schema.go",
    "content": "package schema\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n)\n\ntype callbackType string\n\nconst (\n\tcallbackTypeBeforeCreate callbackType = \"BeforeCreate\"\n\tcallbackTypeBeforeUpdate callbackType = \"BeforeUpdate\"\n\tcallbackTypeAfterCreate  callbackType = \"AfterCreate\"\n\tcallbackTypeAfterUpdate  callbackType = \"AfterUpdate\"\n\tcallbackTypeBeforeSave   callbackType = \"BeforeSave\"\n\tcallbackTypeAfterSave    callbackType = \"AfterSave\"\n\tcallbackTypeBeforeDelete callbackType = \"BeforeDelete\"\n\tcallbackTypeAfterDelete  callbackType = \"AfterDelete\"\n\tcallbackTypeAfterFind    callbackType = \"AfterFind\"\n)\n\n// ErrUnsupportedDataType unsupported data type\nvar ErrUnsupportedDataType = errors.New(\"unsupported data type\")\n\ntype Schema struct {\n\tName                      string\n\tModelType                 reflect.Type\n\tTable                     string\n\tPrioritizedPrimaryField   *Field\n\tDBNames                   []string\n\tPrimaryFields             []*Field\n\tPrimaryFieldDBNames       []string\n\tFields                    []*Field\n\tFieldsByName              map[string]*Field\n\tFieldsByBindName          map[string]*Field // embedded fields is 'Embed.Field'\n\tFieldsByDBName            map[string]*Field\n\tFieldsWithDefaultDBValue  []*Field // fields with default value assigned by database\n\tRelationships             Relationships\n\tCreateClauses             []clause.Interface\n\tQueryClauses              []clause.Interface\n\tUpdateClauses             []clause.Interface\n\tDeleteClauses             []clause.Interface\n\tBeforeCreate, AfterCreate bool\n\tBeforeUpdate, AfterUpdate bool\n\tBeforeDelete, AfterDelete bool\n\tBeforeSave, AfterSave     bool\n\tAfterFind                 bool\n\terr                       error\n\tinitialized               chan struct{}\n\tnamer                     Namer\n\tcacheStore                *sync.Map\n}\n\nfunc (schema Schema) String() string {\n\tif schema.ModelType.Name() == \"\" {\n\t\treturn fmt.Sprintf(\"%s(%s)\", schema.Name, schema.Table)\n\t}\n\treturn fmt.Sprintf(\"%s.%s\", schema.ModelType.PkgPath(), schema.ModelType.Name())\n}\n\nfunc (schema Schema) MakeSlice() reflect.Value {\n\tslice := reflect.MakeSlice(reflect.SliceOf(reflect.PtrTo(schema.ModelType)), 0, 20)\n\tresults := reflect.New(slice.Type())\n\tresults.Elem().Set(slice)\n\treturn results\n}\n\nfunc (schema Schema) LookUpField(name string) *Field {\n\tif field, ok := schema.FieldsByDBName[name]; ok {\n\t\treturn field\n\t}\n\tif field, ok := schema.FieldsByName[name]; ok {\n\t\treturn field\n\t}\n\treturn nil\n}\n\n// LookUpFieldByBindName looks for the closest field in the embedded struct.\n//\n//\ttype Struct struct {\n//\t\tEmbedded struct {\n//\t\t\tID string // is selected by LookUpFieldByBindName([]string{\"Embedded\", \"ID\"}, \"ID\")\n//\t\t}\n//\t\tID string // is selected by LookUpFieldByBindName([]string{\"ID\"}, \"ID\")\n//\t}\nfunc (schema Schema) LookUpFieldByBindName(bindNames []string, name string) *Field {\n\tif len(bindNames) == 0 {\n\t\treturn nil\n\t}\n\tfor i := len(bindNames) - 1; i >= 0; i-- {\n\t\tfind := strings.Join(bindNames[:i], \".\") + \".\" + name\n\t\tif field, ok := schema.FieldsByBindName[find]; ok {\n\t\t\treturn field\n\t\t}\n\t}\n\treturn nil\n}\n\ntype Tabler interface {\n\tTableName() string\n}\n\ntype TablerWithNamer interface {\n\tTableName(Namer) string\n}\n\n// Parse get data type from dialector\nfunc Parse(dest any, cacheStore *sync.Map, namer Namer) (*Schema, error) {\n\treturn ParseWithSpecialTableName(dest, cacheStore, namer, \"\")\n}\n\n// ParseWithSpecialTableName get data type from dialector with extra schema table\nfunc ParseWithSpecialTableName(dest any, cacheStore *sync.Map, namer Namer, specialTableName string) (*Schema, error) {\n\tif dest == nil {\n\t\treturn nil, fmt.Errorf(\"%w: %+v\", ErrUnsupportedDataType, dest)\n\t}\n\n\tvalue := reflect.ValueOf(dest)\n\tif value.Kind() == reflect.Ptr && value.IsNil() {\n\t\tvalue = reflect.New(value.Type().Elem())\n\t}\n\tmodelType := reflect.Indirect(value).Type()\n\n\tif modelType.Kind() == reflect.Interface {\n\t\tmodelType = reflect.Indirect(reflect.ValueOf(dest)).Elem().Type()\n\t}\n\n\tfor modelType.Kind() == reflect.Slice || modelType.Kind() == reflect.Array || modelType.Kind() == reflect.Ptr {\n\t\tmodelType = modelType.Elem()\n\t}\n\n\tif modelType.Kind() != reflect.Struct {\n\t\tif modelType.PkgPath() == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"%w: %+v\", ErrUnsupportedDataType, dest)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"%w: %s.%s\", ErrUnsupportedDataType, modelType.PkgPath(), modelType.Name())\n\t}\n\n\t// Cache the Schema for performance,\n\t// Use the modelType or modelType + schemaTable (if it present) as cache key.\n\tvar schemaCacheKey any\n\tif specialTableName != \"\" {\n\t\tschemaCacheKey = fmt.Sprintf(\"%p-%s\", modelType, specialTableName)\n\t} else {\n\t\tschemaCacheKey = modelType\n\t}\n\n\t// Load exist schema cache, return if exists\n\tif v, ok := cacheStore.Load(schemaCacheKey); ok {\n\t\ts := v.(*Schema)\n\t\t// Wait for the initialization of other goroutines to complete\n\t\t<-s.initialized\n\t\treturn s, s.err\n\t}\n\n\tmodelValue := reflect.New(modelType)\n\ttableName := namer.TableName(modelType.Name())\n\tif tabler, ok := modelValue.Interface().(Tabler); ok {\n\t\ttableName = tabler.TableName()\n\t}\n\tif tabler, ok := modelValue.Interface().(TablerWithNamer); ok {\n\t\ttableName = tabler.TableName(namer)\n\t}\n\tif en, ok := namer.(embeddedNamer); ok {\n\t\ttableName = en.Table\n\t}\n\tif specialTableName != \"\" && specialTableName != tableName {\n\t\ttableName = specialTableName\n\t}\n\n\tschema := &Schema{\n\t\tName:             modelType.Name(),\n\t\tModelType:        modelType,\n\t\tTable:            tableName,\n\t\tFieldsByName:     map[string]*Field{},\n\t\tFieldsByBindName: map[string]*Field{},\n\t\tFieldsByDBName:   map[string]*Field{},\n\t\tRelationships:    Relationships{Relations: map[string]*Relationship{}},\n\t\tcacheStore:       cacheStore,\n\t\tnamer:            namer,\n\t\tinitialized:      make(chan struct{}),\n\t}\n\t// When the schema initialization is completed, the channel will be closed\n\tdefer close(schema.initialized)\n\n\t// Load exist schema cache, return if exists\n\tif v, ok := cacheStore.Load(schemaCacheKey); ok {\n\t\ts := v.(*Schema)\n\t\t// Wait for the initialization of other goroutines to complete\n\t\t<-s.initialized\n\t\treturn s, s.err\n\t}\n\n\tfor i := 0; i < modelType.NumField(); i++ {\n\t\tif fieldStruct := modelType.Field(i); ast.IsExported(fieldStruct.Name) {\n\t\t\tif field := schema.ParseField(fieldStruct); field.EmbeddedSchema != nil {\n\t\t\t\tschema.Fields = append(schema.Fields, field.EmbeddedSchema.Fields...)\n\t\t\t} else {\n\t\t\t\tschema.Fields = append(schema.Fields, field)\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, field := range schema.Fields {\n\t\tif field.DBName == \"\" && field.DataType != \"\" {\n\t\t\tfield.DBName = namer.ColumnName(schema.Table, field.Name)\n\t\t}\n\n\t\tbindName := field.BindName()\n\t\tif field.DBName != \"\" {\n\t\t\t// nonexistence or shortest path or first appear prioritized if has permission\n\t\t\tif v, ok := schema.FieldsByDBName[field.DBName]; !ok || ((field.Creatable || field.Updatable || field.Readable) && len(field.BindNames) < len(v.BindNames)) {\n\t\t\t\tif _, ok := schema.FieldsByDBName[field.DBName]; !ok {\n\t\t\t\t\tschema.DBNames = append(schema.DBNames, field.DBName)\n\t\t\t\t}\n\t\t\t\tschema.FieldsByDBName[field.DBName] = field\n\t\t\t\tschema.FieldsByName[field.Name] = field\n\t\t\t\tschema.FieldsByBindName[bindName] = field\n\n\t\t\t\tif v != nil && v.PrimaryKey {\n\t\t\t\t\tfor idx, f := range schema.PrimaryFields {\n\t\t\t\t\t\tif f == v {\n\t\t\t\t\t\t\tschema.PrimaryFields = append(schema.PrimaryFields[0:idx], schema.PrimaryFields[idx+1:]...)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif field.PrimaryKey {\n\t\t\t\t\tschema.PrimaryFields = append(schema.PrimaryFields, field)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif of, ok := schema.FieldsByName[field.Name]; !ok || of.TagSettings[\"-\"] == \"-\" {\n\t\t\tschema.FieldsByName[field.Name] = field\n\t\t}\n\t\tif of, ok := schema.FieldsByBindName[bindName]; !ok || of.TagSettings[\"-\"] == \"-\" {\n\t\t\tschema.FieldsByBindName[bindName] = field\n\t\t}\n\n\t\tfield.setupValuerAndSetter()\n\t}\n\n\tprioritizedPrimaryField := schema.LookUpField(\"id\")\n\tif prioritizedPrimaryField == nil {\n\t\tprioritizedPrimaryField = schema.LookUpField(\"ID\")\n\t}\n\n\tif prioritizedPrimaryField != nil {\n\t\tif prioritizedPrimaryField.PrimaryKey {\n\t\t\tschema.PrioritizedPrimaryField = prioritizedPrimaryField\n\t\t} else if len(schema.PrimaryFields) == 0 {\n\t\t\tprioritizedPrimaryField.PrimaryKey = true\n\t\t\tschema.PrioritizedPrimaryField = prioritizedPrimaryField\n\t\t\tschema.PrimaryFields = append(schema.PrimaryFields, prioritizedPrimaryField)\n\t\t}\n\t}\n\n\tif schema.PrioritizedPrimaryField == nil {\n\t\tif len(schema.PrimaryFields) == 1 {\n\t\t\tschema.PrioritizedPrimaryField = schema.PrimaryFields[0]\n\t\t} else if len(schema.PrimaryFields) > 1 {\n\t\t\t// If there are multiple primary keys, the AUTOINCREMENT field is prioritized\n\t\t\tfor _, field := range schema.PrimaryFields {\n\t\t\t\tif field.AutoIncrement {\n\t\t\t\t\tschema.PrioritizedPrimaryField = field\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor _, field := range schema.PrimaryFields {\n\t\tschema.PrimaryFieldDBNames = append(schema.PrimaryFieldDBNames, field.DBName)\n\t}\n\n\tfor _, field := range schema.Fields {\n\t\tif field.DataType != \"\" && field.HasDefaultValue && field.DefaultValueInterface == nil {\n\t\t\tschema.FieldsWithDefaultDBValue = append(schema.FieldsWithDefaultDBValue, field)\n\t\t}\n\t}\n\n\tif field := schema.PrioritizedPrimaryField; field != nil {\n\t\tswitch field.GORMDataType {\n\t\tcase Int, Uint:\n\t\t\tif _, ok := field.TagSettings[\"AUTOINCREMENT\"]; !ok {\n\t\t\t\tif !field.HasDefaultValue || field.DefaultValueInterface != nil {\n\t\t\t\t\tschema.FieldsWithDefaultDBValue = append(schema.FieldsWithDefaultDBValue, field)\n\t\t\t\t}\n\n\t\t\t\tfield.HasDefaultValue = true\n\t\t\t\tfield.AutoIncrement = true\n\t\t\t}\n\t\t}\n\t}\n\n\tcallbackTypes := []callbackType{\n\t\tcallbackTypeBeforeCreate, callbackTypeAfterCreate,\n\t\tcallbackTypeBeforeUpdate, callbackTypeAfterUpdate,\n\t\tcallbackTypeBeforeSave, callbackTypeAfterSave,\n\t\tcallbackTypeBeforeDelete, callbackTypeAfterDelete,\n\t\tcallbackTypeAfterFind,\n\t}\n\tfor _, cbName := range callbackTypes {\n\t\tif methodValue := callBackToMethodValue(modelValue, cbName); methodValue.IsValid() {\n\t\t\tswitch methodValue.Type().String() {\n\t\t\tcase \"func(*gorm.DB) error\": // TODO hack\n\t\t\t\treflect.Indirect(reflect.ValueOf(schema)).FieldByName(string(cbName)).SetBool(true)\n\t\t\tdefault:\n\t\t\t\tlogger.Default.Warn(context.Background(), \"Model %v don't match %vInterface, should be `%v(*gorm.DB) error`. Please see https://gorm.io/docs/hooks.html\", schema, cbName, cbName)\n\t\t\t}\n\t\t}\n\t}\n\n\t// Cache the schema\n\tif v, loaded := cacheStore.LoadOrStore(schemaCacheKey, schema); loaded {\n\t\ts := v.(*Schema)\n\t\t// Wait for the initialization of other goroutines to complete\n\t\t<-s.initialized\n\t\treturn s, s.err\n\t}\n\n\tdefer func() {\n\t\tif schema.err != nil {\n\t\t\tlogger.Default.Error(context.Background(), schema.err.Error())\n\t\t\tcacheStore.Delete(modelType)\n\t\t}\n\t}()\n\n\tif _, embedded := schema.cacheStore.Load(embeddedCacheKey); !embedded {\n\t\tfor _, field := range schema.Fields {\n\t\t\tif field.DataType == \"\" && (field.Creatable || field.Updatable || field.Readable) {\n\t\t\t\tif schema.parseRelation(field); schema.err != nil {\n\t\t\t\t\treturn schema, schema.err\n\t\t\t\t} else {\n\t\t\t\t\tschema.FieldsByName[field.Name] = field\n\t\t\t\t\tschema.FieldsByBindName[field.BindName()] = field\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfieldValue := reflect.New(field.IndirectFieldType)\n\t\t\tfieldInterface := fieldValue.Interface()\n\t\t\tif fc, ok := fieldInterface.(CreateClausesInterface); ok {\n\t\t\t\tfield.Schema.CreateClauses = append(field.Schema.CreateClauses, fc.CreateClauses(field)...)\n\t\t\t}\n\n\t\t\tif fc, ok := fieldInterface.(QueryClausesInterface); ok {\n\t\t\t\tfield.Schema.QueryClauses = append(field.Schema.QueryClauses, fc.QueryClauses(field)...)\n\t\t\t}\n\n\t\t\tif fc, ok := fieldInterface.(UpdateClausesInterface); ok {\n\t\t\t\tfield.Schema.UpdateClauses = append(field.Schema.UpdateClauses, fc.UpdateClauses(field)...)\n\t\t\t}\n\n\t\t\tif fc, ok := fieldInterface.(DeleteClausesInterface); ok {\n\t\t\t\tfield.Schema.DeleteClauses = append(field.Schema.DeleteClauses, fc.DeleteClauses(field)...)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn schema, schema.err\n}\n\n// This unrolling is needed to show to the compiler the exact set of methods\n// that can be used on the modelType.\n// Prior to go1.22 any use of MethodByName would cause the linker to\n// abandon dead code elimination for the entire binary.\n// As of go1.22 the compiler supports one special case of a string constant\n// being passed to MethodByName. For enterprise customers or those building\n// large binaries, this gives a significant reduction in binary size.\n// https://github.com/golang/go/issues/62257\nfunc callBackToMethodValue(modelType reflect.Value, cbType callbackType) reflect.Value {\n\tswitch cbType {\n\tcase callbackTypeBeforeCreate:\n\t\treturn modelType.MethodByName(string(callbackTypeBeforeCreate))\n\tcase callbackTypeAfterCreate:\n\t\treturn modelType.MethodByName(string(callbackTypeAfterCreate))\n\tcase callbackTypeBeforeUpdate:\n\t\treturn modelType.MethodByName(string(callbackTypeBeforeUpdate))\n\tcase callbackTypeAfterUpdate:\n\t\treturn modelType.MethodByName(string(callbackTypeAfterUpdate))\n\tcase callbackTypeBeforeSave:\n\t\treturn modelType.MethodByName(string(callbackTypeBeforeSave))\n\tcase callbackTypeAfterSave:\n\t\treturn modelType.MethodByName(string(callbackTypeAfterSave))\n\tcase callbackTypeBeforeDelete:\n\t\treturn modelType.MethodByName(string(callbackTypeBeforeDelete))\n\tcase callbackTypeAfterDelete:\n\t\treturn modelType.MethodByName(string(callbackTypeAfterDelete))\n\tcase callbackTypeAfterFind:\n\t\treturn modelType.MethodByName(string(callbackTypeAfterFind))\n\tdefault:\n\t\treturn reflect.ValueOf(nil)\n\t}\n}\n\nfunc getOrParse(dest any, cacheStore *sync.Map, namer Namer) (*Schema, error) {\n\tmodelType := reflect.ValueOf(dest).Type()\n\tfor modelType.Kind() == reflect.Slice || modelType.Kind() == reflect.Array || modelType.Kind() == reflect.Ptr {\n\t\tmodelType = modelType.Elem()\n\t}\n\n\tif modelType.Kind() != reflect.Struct {\n\t\tif modelType.PkgPath() == \"\" {\n\t\t\treturn nil, fmt.Errorf(\"%w: %+v\", ErrUnsupportedDataType, dest)\n\t\t}\n\t\treturn nil, fmt.Errorf(\"%w: %s.%s\", ErrUnsupportedDataType, modelType.PkgPath(), modelType.Name())\n\t}\n\n\tif v, ok := cacheStore.Load(modelType); ok {\n\t\treturn v.(*Schema), nil\n\t}\n\n\treturn Parse(dest, cacheStore, namer)\n}\n"
  },
  {
    "path": "gossh/gorm/schema/serializer.go",
    "content": "package schema\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/gob\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n)\n\nvar serializerMap = sync.Map{}\n\n// RegisterSerializer register serializer\nfunc RegisterSerializer(name string, serializer SerializerInterface) {\n\tserializerMap.Store(strings.ToLower(name), serializer)\n}\n\n// GetSerializer get serializer\nfunc GetSerializer(name string) (serializer SerializerInterface, ok bool) {\n\tv, ok := serializerMap.Load(strings.ToLower(name))\n\tif ok {\n\t\tserializer, ok = v.(SerializerInterface)\n\t}\n\treturn serializer, ok\n}\n\nfunc init() {\n\tRegisterSerializer(\"json\", JSONSerializer{})\n\tRegisterSerializer(\"unixtime\", UnixSecondSerializer{})\n\tRegisterSerializer(\"gob\", GobSerializer{})\n}\n\n// Serializer field value serializer\ntype serializer struct {\n\tField           *Field\n\tSerializer      SerializerInterface\n\tSerializeValuer SerializerValuerInterface\n\tDestination     reflect.Value\n\tContext         context.Context\n\tvalue           any\n\tfieldValue      any\n}\n\n// Scan implements sql.Scanner interface\nfunc (s *serializer) Scan(value any) error {\n\ts.value = value\n\treturn nil\n}\n\n// Value implements driver.Valuer interface\nfunc (s serializer) Value() (driver.Value, error) {\n\treturn s.SerializeValuer.Value(s.Context, s.Field, s.Destination, s.fieldValue)\n}\n\n// SerializerInterface serializer interface\ntype SerializerInterface interface {\n\tScan(ctx context.Context, field *Field, dst reflect.Value, dbValue any) error\n\tSerializerValuerInterface\n}\n\n// SerializerValuerInterface serializer valuer interface\ntype SerializerValuerInterface interface {\n\tValue(ctx context.Context, field *Field, dst reflect.Value, fieldValue any) (any, error)\n}\n\n// JSONSerializer json serializer\ntype JSONSerializer struct{}\n\n// Scan implements serializer interface\nfunc (JSONSerializer) Scan(ctx context.Context, field *Field, dst reflect.Value, dbValue any) (err error) {\n\tfieldValue := reflect.New(field.FieldType)\n\n\tif dbValue != nil {\n\t\tvar bytes []byte\n\t\tswitch v := dbValue.(type) {\n\t\tcase []byte:\n\t\t\tbytes = v\n\t\tcase string:\n\t\t\tbytes = []byte(v)\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"failed to unmarshal JSONB value: %#v\", dbValue)\n\t\t}\n\n\t\tif len(bytes) > 0 {\n\t\t\terr = json.Unmarshal(bytes, fieldValue.Interface())\n\t\t}\n\t}\n\n\tfield.ReflectValueOf(ctx, dst).Set(fieldValue.Elem())\n\treturn\n}\n\n// Value implements serializer interface\nfunc (JSONSerializer) Value(ctx context.Context, field *Field, dst reflect.Value, fieldValue any) (any, error) {\n\tresult, err := json.Marshal(fieldValue)\n\tif string(result) == \"null\" {\n\t\tif field.TagSettings[\"NOT NULL\"] != \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\treturn nil, err\n\t}\n\treturn string(result), err\n}\n\n// UnixSecondSerializer json serializer\ntype UnixSecondSerializer struct{}\n\n// Scan implements serializer interface\nfunc (UnixSecondSerializer) Scan(ctx context.Context, field *Field, dst reflect.Value, dbValue any) (err error) {\n\tt := sql.NullTime{}\n\tif err = t.Scan(dbValue); err == nil && t.Valid {\n\t\terr = field.Set(ctx, dst, t.Time.Unix())\n\t}\n\n\treturn\n}\n\n// Value implements serializer interface\nfunc (UnixSecondSerializer) Value(ctx context.Context, field *Field, dst reflect.Value, fieldValue any) (result any, err error) {\n\trv := reflect.ValueOf(fieldValue)\n\tswitch v := fieldValue.(type) {\n\tcase int64, int, uint, uint64, int32, uint32, int16, uint16:\n\t\tresult = time.Unix(reflect.Indirect(rv).Int(), 0).UTC()\n\tcase *int64, *int, *uint, *uint64, *int32, *uint32, *int16, *uint16:\n\t\tif rv.IsZero() {\n\t\t\treturn nil, nil\n\t\t}\n\t\tresult = time.Unix(reflect.Indirect(rv).Int(), 0).UTC()\n\tdefault:\n\t\terr = fmt.Errorf(\"invalid field type %#v for UnixSecondSerializer, only int, uint supported\", v)\n\t}\n\treturn\n}\n\n// GobSerializer gob serializer\ntype GobSerializer struct{}\n\n// Scan implements serializer interface\nfunc (GobSerializer) Scan(ctx context.Context, field *Field, dst reflect.Value, dbValue any) (err error) {\n\tfieldValue := reflect.New(field.FieldType)\n\n\tif dbValue != nil {\n\t\tvar bytesValue []byte\n\t\tswitch v := dbValue.(type) {\n\t\tcase []byte:\n\t\t\tbytesValue = v\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"failed to unmarshal gob value: %#v\", dbValue)\n\t\t}\n\t\tif len(bytesValue) > 0 {\n\t\t\tdecoder := gob.NewDecoder(bytes.NewBuffer(bytesValue))\n\t\t\terr = decoder.Decode(fieldValue.Interface())\n\t\t}\n\t}\n\tfield.ReflectValueOf(ctx, dst).Set(fieldValue.Elem())\n\treturn\n}\n\n// Value implements serializer interface\nfunc (GobSerializer) Value(ctx context.Context, field *Field, dst reflect.Value, fieldValue any) (any, error) {\n\tbuf := new(bytes.Buffer)\n\terr := gob.NewEncoder(buf).Encode(fieldValue)\n\treturn buf.Bytes(), err\n}\n"
  },
  {
    "path": "gossh/gorm/schema/utils.go",
    "content": "package schema\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"strings\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/utils\"\n)\n\nvar embeddedCacheKey = \"embedded_cache_store\"\n\nfunc ParseTagSetting(str string, sep string) map[string]string {\n\tsettings := map[string]string{}\n\tnames := strings.Split(str, sep)\n\n\tfor i := 0; i < len(names); i++ {\n\t\tj := i\n\t\tif len(names[j]) > 0 {\n\t\t\tfor {\n\t\t\t\tif names[j][len(names[j])-1] == '\\\\' {\n\t\t\t\t\ti++\n\t\t\t\t\tnames[j] = names[j][0:len(names[j])-1] + sep + names[i]\n\t\t\t\t\tnames[i] = \"\"\n\t\t\t\t} else {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tvalues := strings.Split(names[j], \":\")\n\t\tk := strings.TrimSpace(strings.ToUpper(values[0]))\n\n\t\tif len(values) >= 2 {\n\t\t\tsettings[k] = strings.Join(values[1:], \":\")\n\t\t} else if k != \"\" {\n\t\t\tsettings[k] = k\n\t\t}\n\t}\n\n\treturn settings\n}\n\nfunc toColumns(val string) (results []string) {\n\tif val != \"\" {\n\t\tfor _, v := range strings.Split(val, \",\") {\n\t\t\tresults = append(results, strings.TrimSpace(v))\n\t\t}\n\t}\n\treturn\n}\n\nfunc removeSettingFromTag(tag reflect.StructTag, names ...string) reflect.StructTag {\n\tfor _, name := range names {\n\t\ttag = reflect.StructTag(regexp.MustCompile(`(?i)(gorm:.*?)(`+name+`(:.*?)?)(;|(\"))`).ReplaceAllString(string(tag), \"${1}${5}\"))\n\t}\n\treturn tag\n}\n\nfunc appendSettingFromTag(tag reflect.StructTag, value string) reflect.StructTag {\n\tt := tag.Get(\"gorm\")\n\tif strings.Contains(t, value) {\n\t\treturn tag\n\t}\n\treturn reflect.StructTag(fmt.Sprintf(`gorm:\"%s;%s\"`, value, t))\n}\n\n// GetRelationsValues get relations's values from a reflect value\nfunc GetRelationsValues(ctx context.Context, reflectValue reflect.Value, rels []*Relationship) (reflectResults reflect.Value) {\n\tfor _, rel := range rels {\n\t\treflectResults = reflect.MakeSlice(reflect.SliceOf(reflect.PtrTo(rel.FieldSchema.ModelType)), 0, 1)\n\n\t\tappendToResults := func(value reflect.Value) {\n\t\t\tif _, isZero := rel.Field.ValueOf(ctx, value); !isZero {\n\t\t\t\tresult := reflect.Indirect(rel.Field.ReflectValueOf(ctx, value))\n\t\t\t\tswitch result.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\treflectResults = reflect.Append(reflectResults, result.Addr())\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < result.Len(); i++ {\n\t\t\t\t\t\tif elem := result.Index(i); elem.Kind() == reflect.Ptr {\n\t\t\t\t\t\t\treflectResults = reflect.Append(reflectResults, elem)\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treflectResults = reflect.Append(reflectResults, elem.Addr())\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tswitch reflectValue.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tappendToResults(reflectValue)\n\t\tcase reflect.Slice:\n\t\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\t\tappendToResults(reflectValue.Index(i))\n\t\t\t}\n\t\t}\n\n\t\treflectValue = reflectResults\n\t}\n\n\treturn\n}\n\n// GetIdentityFieldValuesMap get identity map from fields\nfunc GetIdentityFieldValuesMap(ctx context.Context, reflectValue reflect.Value, fields []*Field) (map[string][]reflect.Value, [][]any) {\n\tvar (\n\t\tresults       = [][]any{}\n\t\tdataResults   = map[string][]reflect.Value{}\n\t\tloaded        = map[any]bool{}\n\t\tnotZero, zero bool\n\t)\n\n\tif reflectValue.Kind() == reflect.Ptr ||\n\t\treflectValue.Kind() == reflect.Interface {\n\t\treflectValue = reflectValue.Elem()\n\t}\n\n\tswitch reflectValue.Kind() {\n\tcase reflect.Struct:\n\t\tresults = [][]any{make([]any, len(fields))}\n\n\t\tfor idx, field := range fields {\n\t\t\tresults[0][idx], zero = field.ValueOf(ctx, reflectValue)\n\t\t\tnotZero = notZero || !zero\n\t\t}\n\n\t\tif !notZero {\n\t\t\treturn nil, nil\n\t\t}\n\n\t\tdataResults[utils.ToStringKey(results[0]...)] = []reflect.Value{reflectValue}\n\tcase reflect.Slice, reflect.Array:\n\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\telem := reflectValue.Index(i)\n\t\t\telemKey := elem.Interface()\n\t\t\tif elem.Kind() != reflect.Ptr && elem.CanAddr() {\n\t\t\t\telemKey = elem.Addr().Interface()\n\t\t\t}\n\n\t\t\tif _, ok := loaded[elemKey]; ok {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tloaded[elemKey] = true\n\n\t\t\tfieldValues := make([]any, len(fields))\n\t\t\tnotZero = false\n\t\t\tfor idx, field := range fields {\n\t\t\t\tfieldValues[idx], zero = field.ValueOf(ctx, elem)\n\t\t\t\tnotZero = notZero || !zero\n\t\t\t}\n\n\t\t\tif notZero {\n\t\t\t\tdataKey := utils.ToStringKey(fieldValues...)\n\t\t\t\tif _, ok := dataResults[dataKey]; !ok {\n\t\t\t\t\tresults = append(results, fieldValues)\n\t\t\t\t\tdataResults[dataKey] = []reflect.Value{elem}\n\t\t\t\t} else {\n\t\t\t\t\tdataResults[dataKey] = append(dataResults[dataKey], elem)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dataResults, results\n}\n\n// GetIdentityFieldValuesMapFromValues get identity map from fields\nfunc GetIdentityFieldValuesMapFromValues(ctx context.Context, values []any, fields []*Field) (map[string][]reflect.Value, [][]any) {\n\tresultsMap := map[string][]reflect.Value{}\n\tresults := [][]any{}\n\n\tfor _, v := range values {\n\t\trm, rs := GetIdentityFieldValuesMap(ctx, reflect.Indirect(reflect.ValueOf(v)), fields)\n\t\tfor k, v := range rm {\n\t\t\tresultsMap[k] = append(resultsMap[k], v...)\n\t\t}\n\t\tresults = append(results, rs...)\n\t}\n\treturn resultsMap, results\n}\n\n// ToQueryValues to query values\nfunc ToQueryValues(table string, foreignKeys []string, foreignValues [][]any) (any, []any) {\n\tqueryValues := make([]any, len(foreignValues))\n\tif len(foreignKeys) == 1 {\n\t\tfor idx, r := range foreignValues {\n\t\t\tqueryValues[idx] = r[0]\n\t\t}\n\n\t\treturn clause.Column{Table: table, Name: foreignKeys[0]}, queryValues\n\t}\n\n\tcolumns := make([]clause.Column, len(foreignKeys))\n\tfor idx, key := range foreignKeys {\n\t\tcolumns[idx] = clause.Column{Table: table, Name: key}\n\t}\n\n\tfor idx, r := range foreignValues {\n\t\tqueryValues[idx] = r\n\t}\n\n\treturn columns, queryValues\n}\n\ntype embeddedNamer struct {\n\tTable string\n\tNamer\n}\n"
  },
  {
    "path": "gossh/gorm/soft_delete.go",
    "content": "package gorm\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"reflect\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/now\"\n\t\"gossh/gorm/schema\"\n)\n\ntype DeletedAt sql.NullTime\n\n// Scan implements the Scanner interface.\nfunc (n *DeletedAt) Scan(value any) error {\n\treturn (*sql.NullTime)(n).Scan(value)\n}\n\n// Value implements the driver Valuer interface.\nfunc (n DeletedAt) Value() (driver.Value, error) {\n\tif !n.Valid {\n\t\treturn nil, nil\n\t}\n\treturn n.Time, nil\n}\n\nfunc (n DeletedAt) MarshalJSON() ([]byte, error) {\n\tif n.Valid {\n\t\treturn json.Marshal(n.Time)\n\t}\n\treturn json.Marshal(nil)\n}\n\nfunc (n *DeletedAt) UnmarshalJSON(b []byte) error {\n\tif string(b) == \"null\" {\n\t\tn.Valid = false\n\t\treturn nil\n\t}\n\terr := json.Unmarshal(b, &n.Time)\n\tif err == nil {\n\t\tn.Valid = true\n\t}\n\treturn err\n}\n\nfunc (DeletedAt) QueryClauses(f *schema.Field) []clause.Interface {\n\treturn []clause.Interface{SoftDeleteQueryClause{Field: f, ZeroValue: parseZeroValueTag(f)}}\n}\n\nfunc parseZeroValueTag(f *schema.Field) sql.NullString {\n\tif v, ok := f.TagSettings[\"ZEROVALUE\"]; ok {\n\t\tif _, err := now.Parse(v); err == nil {\n\t\t\treturn sql.NullString{String: v, Valid: true}\n\t\t}\n\t}\n\treturn sql.NullString{Valid: false}\n}\n\ntype SoftDeleteQueryClause struct {\n\tZeroValue sql.NullString\n\tField     *schema.Field\n}\n\nfunc (sd SoftDeleteQueryClause) Name() string {\n\treturn \"\"\n}\n\nfunc (sd SoftDeleteQueryClause) Build(clause.Builder) {\n}\n\nfunc (sd SoftDeleteQueryClause) MergeClause(*clause.Clause) {\n}\n\nfunc (sd SoftDeleteQueryClause) ModifyStatement(stmt *Statement) {\n\tif _, ok := stmt.Clauses[\"soft_delete_enabled\"]; !ok && !stmt.Statement.Unscoped {\n\t\tif c, ok := stmt.Clauses[\"WHERE\"]; ok {\n\t\t\tif where, ok := c.Expression.(clause.Where); ok && len(where.Exprs) >= 1 {\n\t\t\t\tfor _, expr := range where.Exprs {\n\t\t\t\t\tif orCond, ok := expr.(clause.OrConditions); ok && len(orCond.Exprs) == 1 {\n\t\t\t\t\t\twhere.Exprs = []clause.Expression{clause.And(where.Exprs...)}\n\t\t\t\t\t\tc.Expression = where\n\t\t\t\t\t\tstmt.Clauses[\"WHERE\"] = c\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{\n\t\t\tclause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: sd.Field.DBName}, Value: sd.ZeroValue},\n\t\t}})\n\t\tstmt.Clauses[\"soft_delete_enabled\"] = clause.Clause{}\n\t}\n}\n\nfunc (DeletedAt) UpdateClauses(f *schema.Field) []clause.Interface {\n\treturn []clause.Interface{SoftDeleteUpdateClause{Field: f, ZeroValue: parseZeroValueTag(f)}}\n}\n\ntype SoftDeleteUpdateClause struct {\n\tZeroValue sql.NullString\n\tField     *schema.Field\n}\n\nfunc (sd SoftDeleteUpdateClause) Name() string {\n\treturn \"\"\n}\n\nfunc (sd SoftDeleteUpdateClause) Build(clause.Builder) {\n}\n\nfunc (sd SoftDeleteUpdateClause) MergeClause(*clause.Clause) {\n}\n\nfunc (sd SoftDeleteUpdateClause) ModifyStatement(stmt *Statement) {\n\tif stmt.SQL.Len() == 0 && !stmt.Statement.Unscoped {\n\t\tSoftDeleteQueryClause(sd).ModifyStatement(stmt)\n\t}\n}\n\nfunc (DeletedAt) DeleteClauses(f *schema.Field) []clause.Interface {\n\treturn []clause.Interface{SoftDeleteDeleteClause{Field: f, ZeroValue: parseZeroValueTag(f)}}\n}\n\ntype SoftDeleteDeleteClause struct {\n\tZeroValue sql.NullString\n\tField     *schema.Field\n}\n\nfunc (sd SoftDeleteDeleteClause) Name() string {\n\treturn \"\"\n}\n\nfunc (sd SoftDeleteDeleteClause) Build(clause.Builder) {\n}\n\nfunc (sd SoftDeleteDeleteClause) MergeClause(*clause.Clause) {\n}\n\nfunc (sd SoftDeleteDeleteClause) ModifyStatement(stmt *Statement) {\n\tif stmt.SQL.Len() == 0 && !stmt.Statement.Unscoped {\n\t\tcurTime := stmt.DB.NowFunc()\n\t\tstmt.AddClause(clause.Set{{Column: clause.Column{Name: sd.Field.DBName}, Value: curTime}})\n\t\tstmt.SetColumn(sd.Field.DBName, curTime, true)\n\n\t\tif stmt.Schema != nil {\n\t\t\t_, queryValues := schema.GetIdentityFieldValuesMap(stmt.Context, stmt.ReflectValue, stmt.Schema.PrimaryFields)\n\t\t\tcolumn, values := schema.ToQueryValues(stmt.Table, stmt.Schema.PrimaryFieldDBNames, queryValues)\n\n\t\t\tif len(values) > 0 {\n\t\t\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})\n\t\t\t}\n\n\t\t\tif stmt.ReflectValue.CanAddr() && stmt.Dest != stmt.Model && stmt.Model != nil {\n\t\t\t\t_, queryValues = schema.GetIdentityFieldValuesMap(stmt.Context, reflect.ValueOf(stmt.Model), stmt.Schema.PrimaryFields)\n\t\t\t\tcolumn, values = schema.ToQueryValues(stmt.Table, stmt.Schema.PrimaryFieldDBNames, queryValues)\n\n\t\t\t\tif len(values) > 0 {\n\t\t\t\t\tstmt.AddClause(clause.Where{Exprs: []clause.Expression{clause.IN{Column: column, Values: values}}})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tSoftDeleteQueryClause(sd).ModifyStatement(stmt)\n\t\tstmt.AddClauseIfNotExists(clause.Update{})\n\t\tstmt.Build(stmt.DB.Callback().Update().Clauses...)\n\t}\n}\n"
  },
  {
    "path": "gossh/gorm/statement.go",
    "content": "package gorm\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/schema\"\n\t\"gossh/gorm/utils\"\n)\n\n// Statement statement\ntype Statement struct {\n\t*DB\n\tTableExpr            *clause.Expr\n\tTable                string\n\tModel                any\n\tUnscoped             bool\n\tDest                 any\n\tReflectValue         reflect.Value\n\tClauses              map[string]clause.Clause\n\tBuildClauses         []string\n\tDistinct             bool\n\tSelects              []string // selected columns\n\tOmits                []string // omit columns\n\tJoins                []join\n\tPreloads             map[string][]any\n\tSettings             sync.Map\n\tConnPool             ConnPool\n\tSchema               *schema.Schema\n\tContext              context.Context\n\tRaiseErrorOnNotFound bool\n\tSkipHooks            bool\n\tSQL                  strings.Builder\n\tVars                 []any\n\tCurDestIndex         int\n\tattrs                []any\n\tassigns              []any\n\tscopes               []func(*DB) *DB\n}\n\ntype join struct {\n\tName     string\n\tConds    []any\n\tOn       *clause.Where\n\tSelects  []string\n\tOmits    []string\n\tJoinType clause.JoinType\n}\n\n// StatementModifier statement modifier interface\ntype StatementModifier interface {\n\tModifyStatement(*Statement)\n}\n\n// WriteString write string\nfunc (stmt *Statement) WriteString(str string) (int, error) {\n\treturn stmt.SQL.WriteString(str)\n}\n\n// WriteByte write byte\nfunc (stmt *Statement) WriteByte(c byte) error {\n\treturn stmt.SQL.WriteByte(c)\n}\n\n// WriteQuoted write quoted value\nfunc (stmt *Statement) WriteQuoted(value any) {\n\tstmt.QuoteTo(&stmt.SQL, value)\n}\n\n// QuoteTo write quoted value to writer\nfunc (stmt *Statement) QuoteTo(writer clause.Writer, field any) {\n\twrite := func(raw bool, str string) {\n\t\tif raw {\n\t\t\twriter.WriteString(str)\n\t\t} else {\n\t\t\tstmt.DB.Dialector.QuoteTo(writer, str)\n\t\t}\n\t}\n\n\tswitch v := field.(type) {\n\tcase clause.Table:\n\t\tif v.Name == clause.CurrentTable {\n\t\t\tif stmt.TableExpr != nil {\n\t\t\t\tstmt.TableExpr.Build(stmt)\n\t\t\t} else {\n\t\t\t\twrite(v.Raw, stmt.Table)\n\t\t\t}\n\t\t} else {\n\t\t\twrite(v.Raw, v.Name)\n\t\t}\n\n\t\tif v.Alias != \"\" {\n\t\t\twriter.WriteByte(' ')\n\t\t\twrite(v.Raw, v.Alias)\n\t\t}\n\tcase clause.Column:\n\t\tif v.Table != \"\" {\n\t\t\tif v.Table == clause.CurrentTable {\n\t\t\t\twrite(v.Raw, stmt.Table)\n\t\t\t} else {\n\t\t\t\twrite(v.Raw, v.Table)\n\t\t\t}\n\t\t\twriter.WriteByte('.')\n\t\t}\n\n\t\tif v.Name == clause.PrimaryKey {\n\t\t\tif stmt.Schema == nil {\n\t\t\t\tstmt.DB.AddError(ErrModelValueRequired)\n\t\t\t} else if stmt.Schema.PrioritizedPrimaryField != nil {\n\t\t\t\twrite(v.Raw, stmt.Schema.PrioritizedPrimaryField.DBName)\n\t\t\t} else if len(stmt.Schema.DBNames) > 0 {\n\t\t\t\twrite(v.Raw, stmt.Schema.DBNames[0])\n\t\t\t} else {\n\t\t\t\tstmt.DB.AddError(ErrModelAccessibleFieldsRequired) //nolint:typecheck,errcheck\n\t\t\t}\n\t\t} else {\n\t\t\twrite(v.Raw, v.Name)\n\t\t}\n\n\t\tif v.Alias != \"\" {\n\t\t\twriter.WriteString(\" AS \")\n\t\t\twrite(v.Raw, v.Alias)\n\t\t}\n\tcase []clause.Column:\n\t\twriter.WriteByte('(')\n\t\tfor idx, d := range v {\n\t\t\tif idx > 0 {\n\t\t\t\twriter.WriteByte(',')\n\t\t\t}\n\t\t\tstmt.QuoteTo(writer, d)\n\t\t}\n\t\twriter.WriteByte(')')\n\tcase clause.Expr:\n\t\tv.Build(stmt)\n\tcase string:\n\t\tstmt.DB.Dialector.QuoteTo(writer, v)\n\tcase []string:\n\t\twriter.WriteByte('(')\n\t\tfor idx, d := range v {\n\t\t\tif idx > 0 {\n\t\t\t\twriter.WriteByte(',')\n\t\t\t}\n\t\t\tstmt.DB.Dialector.QuoteTo(writer, d)\n\t\t}\n\t\twriter.WriteByte(')')\n\tdefault:\n\t\tstmt.DB.Dialector.QuoteTo(writer, fmt.Sprint(field))\n\t}\n}\n\n// Quote returns quoted value\nfunc (stmt *Statement) Quote(field any) string {\n\tvar builder strings.Builder\n\tstmt.QuoteTo(&builder, field)\n\treturn builder.String()\n}\n\n// AddVar add var\nfunc (stmt *Statement) AddVar(writer clause.Writer, vars ...any) {\n\tfor idx, v := range vars {\n\t\tif idx > 0 {\n\t\t\twriter.WriteByte(',')\n\t\t}\n\n\t\tswitch v := v.(type) {\n\t\tcase sql.NamedArg:\n\t\t\tstmt.Vars = append(stmt.Vars, v.Value)\n\t\tcase clause.Column, clause.Table:\n\t\t\tstmt.QuoteTo(writer, v)\n\t\tcase Valuer:\n\t\t\treflectValue := reflect.ValueOf(v)\n\t\t\tif reflectValue.Kind() == reflect.Ptr && reflectValue.IsNil() {\n\t\t\t\tstmt.AddVar(writer, nil)\n\t\t\t} else {\n\t\t\t\tstmt.AddVar(writer, v.GormValue(stmt.Context, stmt.DB))\n\t\t\t}\n\t\tcase clause.Interface:\n\t\t\tc := clause.Clause{Name: v.Name()}\n\t\t\tv.MergeClause(&c)\n\t\t\tc.Build(stmt)\n\t\tcase clause.Expression:\n\t\t\tv.Build(stmt)\n\t\tcase driver.Valuer:\n\t\t\tstmt.Vars = append(stmt.Vars, v)\n\t\t\tstmt.DB.Dialector.BindVarTo(writer, stmt, v)\n\t\tcase []byte:\n\t\t\tstmt.Vars = append(stmt.Vars, v)\n\t\t\tstmt.DB.Dialector.BindVarTo(writer, stmt, v)\n\t\tcase []any:\n\t\t\tif len(v) > 0 {\n\t\t\t\twriter.WriteByte('(')\n\t\t\t\tstmt.AddVar(writer, v...)\n\t\t\t\twriter.WriteByte(')')\n\t\t\t} else {\n\t\t\t\twriter.WriteString(\"(NULL)\")\n\t\t\t}\n\t\tcase *DB:\n\t\t\tsubdb := v.Session(&Session{Logger: logger.Discard, DryRun: true}).getInstance()\n\t\t\tif v.Statement.SQL.Len() > 0 {\n\t\t\t\tvar (\n\t\t\t\t\tvars = subdb.Statement.Vars\n\t\t\t\t\tsql  = v.Statement.SQL.String()\n\t\t\t\t)\n\n\t\t\t\tsubdb.Statement.Vars = make([]any, 0, len(vars))\n\t\t\t\tfor _, vv := range vars {\n\t\t\t\t\tsubdb.Statement.Vars = append(subdb.Statement.Vars, vv)\n\t\t\t\t\tbindvar := strings.Builder{}\n\t\t\t\t\tv.Dialector.BindVarTo(&bindvar, subdb.Statement, vv)\n\t\t\t\t\tsql = strings.Replace(sql, bindvar.String(), \"?\", 1)\n\t\t\t\t}\n\n\t\t\t\tsubdb.Statement.SQL.Reset()\n\t\t\t\tsubdb.Statement.Vars = stmt.Vars\n\t\t\t\tif strings.Contains(sql, \"@\") {\n\t\t\t\t\tclause.NamedExpr{SQL: sql, Vars: vars}.Build(subdb.Statement)\n\t\t\t\t} else {\n\t\t\t\t\tclause.Expr{SQL: sql, Vars: vars}.Build(subdb.Statement)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tsubdb.Statement.Vars = append(stmt.Vars, subdb.Statement.Vars...)\n\t\t\t\tsubdb.callbacks.Query().Execute(subdb)\n\t\t\t}\n\n\t\t\twriter.WriteString(subdb.Statement.SQL.String())\n\t\t\tstmt.Vars = subdb.Statement.Vars\n\t\tdefault:\n\t\t\tswitch rv := reflect.ValueOf(v); rv.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tif rv.Len() == 0 {\n\t\t\t\t\twriter.WriteString(\"(NULL)\")\n\t\t\t\t} else if rv.Type().Elem() == reflect.TypeOf(uint8(0)) {\n\t\t\t\t\tstmt.Vars = append(stmt.Vars, v)\n\t\t\t\t\tstmt.DB.Dialector.BindVarTo(writer, stmt, v)\n\t\t\t\t} else {\n\t\t\t\t\twriter.WriteByte('(')\n\t\t\t\t\tfor i := 0; i < rv.Len(); i++ {\n\t\t\t\t\t\tif i > 0 {\n\t\t\t\t\t\t\twriter.WriteByte(',')\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstmt.AddVar(writer, rv.Index(i).Interface())\n\t\t\t\t\t}\n\t\t\t\t\twriter.WriteByte(')')\n\t\t\t\t}\n\t\t\tdefault:\n\t\t\t\tstmt.Vars = append(stmt.Vars, v)\n\t\t\t\tstmt.DB.Dialector.BindVarTo(writer, stmt, v)\n\t\t\t}\n\t\t}\n\t}\n}\n\n// AddClause add clause\nfunc (stmt *Statement) AddClause(v clause.Interface) {\n\tif optimizer, ok := v.(StatementModifier); ok {\n\t\toptimizer.ModifyStatement(stmt)\n\t} else {\n\t\tname := v.Name()\n\t\tc := stmt.Clauses[name]\n\t\tc.Name = name\n\t\tv.MergeClause(&c)\n\t\tstmt.Clauses[name] = c\n\t}\n}\n\n// AddClauseIfNotExists add clause if not exists\nfunc (stmt *Statement) AddClauseIfNotExists(v clause.Interface) {\n\tif c, ok := stmt.Clauses[v.Name()]; !ok || c.Expression == nil {\n\t\tstmt.AddClause(v)\n\t}\n}\n\n// BuildCondition build condition\nfunc (stmt *Statement) BuildCondition(query any, args ...any) []clause.Expression {\n\tif s, ok := query.(string); ok {\n\t\t// if it is a number, then treats it as primary key\n\t\tif _, err := strconv.Atoi(s); err != nil {\n\t\t\tif s == \"\" && len(args) == 0 {\n\t\t\t\treturn nil\n\t\t\t}\n\n\t\t\tif len(args) == 0 || (len(args) > 0 && strings.Contains(s, \"?\")) {\n\t\t\t\t// looks like a where condition\n\t\t\t\treturn []clause.Expression{clause.Expr{SQL: s, Vars: args}}\n\t\t\t}\n\n\t\t\tif len(args) > 0 && strings.Contains(s, \"@\") {\n\t\t\t\t// looks like a named query\n\t\t\t\treturn []clause.Expression{clause.NamedExpr{SQL: s, Vars: args}}\n\t\t\t}\n\n\t\t\tif strings.Contains(strings.TrimSpace(s), \" \") {\n\t\t\t\t// looks like a where condition\n\t\t\t\treturn []clause.Expression{clause.Expr{SQL: s, Vars: args}}\n\t\t\t}\n\n\t\t\tif len(args) == 1 {\n\t\t\t\treturn []clause.Expression{clause.Eq{Column: s, Value: args[0]}}\n\t\t\t}\n\t\t}\n\t}\n\n\tconds := make([]clause.Expression, 0, 4)\n\targs = append([]any{query}, args...)\n\tfor idx, arg := range args {\n\t\tif arg == nil {\n\t\t\tcontinue\n\t\t}\n\t\tif valuer, ok := arg.(driver.Valuer); ok {\n\t\t\targ, _ = valuer.Value()\n\t\t}\n\n\t\tswitch v := arg.(type) {\n\t\tcase clause.Expression:\n\t\t\tconds = append(conds, v)\n\t\tcase *DB:\n\t\t\tv.executeScopes()\n\n\t\t\tif cs, ok := v.Statement.Clauses[\"WHERE\"]; ok {\n\t\t\t\tif where, ok := cs.Expression.(clause.Where); ok {\n\t\t\t\t\tif len(where.Exprs) == 1 {\n\t\t\t\t\t\tif orConds, ok := where.Exprs[0].(clause.OrConditions); ok {\n\t\t\t\t\t\t\twhere.Exprs[0] = clause.AndConditions(orConds)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tconds = append(conds, clause.And(where.Exprs...))\n\t\t\t\t} else if cs.Expression != nil {\n\t\t\t\t\tconds = append(conds, cs.Expression)\n\t\t\t\t}\n\t\t\t}\n\t\tcase map[any]any:\n\t\t\tfor i, j := range v {\n\t\t\t\tconds = append(conds, clause.Eq{Column: i, Value: j})\n\t\t\t}\n\t\tcase map[string]string:\n\t\t\tkeys := make([]string, 0, len(v))\n\t\t\tfor i := range v {\n\t\t\t\tkeys = append(keys, i)\n\t\t\t}\n\t\t\tsort.Strings(keys)\n\n\t\t\tfor _, key := range keys {\n\t\t\t\tconds = append(conds, clause.Eq{Column: key, Value: v[key]})\n\t\t\t}\n\t\tcase map[string]any:\n\t\t\tkeys := make([]string, 0, len(v))\n\t\t\tfor i := range v {\n\t\t\t\tkeys = append(keys, i)\n\t\t\t}\n\t\t\tsort.Strings(keys)\n\n\t\t\tfor _, key := range keys {\n\t\t\t\treflectValue := reflect.Indirect(reflect.ValueOf(v[key]))\n\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tif _, ok := v[key].(driver.Valuer); ok {\n\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: key, Value: v[key]})\n\t\t\t\t\t} else if _, ok := v[key].(Valuer); ok {\n\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: key, Value: v[key]})\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// optimize reflect value length\n\t\t\t\t\t\tvalueLen := reflectValue.Len()\n\t\t\t\t\t\tvalues := make([]any, valueLen)\n\t\t\t\t\t\tfor i := 0; i < valueLen; i++ {\n\t\t\t\t\t\t\tvalues[i] = reflectValue.Index(i).Interface()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconds = append(conds, clause.IN{Column: key, Values: values})\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tconds = append(conds, clause.Eq{Column: key, Value: v[key]})\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\treflectValue := reflect.Indirect(reflect.ValueOf(arg))\n\t\t\tfor reflectValue.Kind() == reflect.Ptr {\n\t\t\t\treflectValue = reflectValue.Elem()\n\t\t\t}\n\n\t\t\tif s, err := schema.Parse(arg, stmt.DB.cacheStore, stmt.DB.NamingStrategy); err == nil {\n\t\t\t\tselectedColumns := map[string]bool{}\n\t\t\t\tif idx == 0 {\n\t\t\t\t\tfor _, v := range args[1:] {\n\t\t\t\t\t\tif vs, ok := v.(string); ok {\n\t\t\t\t\t\t\tselectedColumns[vs] = true\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trestricted := len(selectedColumns) != 0\n\n\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tfor _, field := range s.Fields {\n\t\t\t\t\t\tselected := selectedColumns[field.DBName] || selectedColumns[field.Name]\n\t\t\t\t\t\tif selected || (!restricted && field.Readable) {\n\t\t\t\t\t\t\tif v, isZero := field.ValueOf(stmt.Context, reflectValue); !isZero || selected {\n\t\t\t\t\t\t\t\tif field.DBName != \"\" {\n\t\t\t\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.DBName}, Value: v})\n\t\t\t\t\t\t\t\t} else if field.DataType != \"\" {\n\t\t\t\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.Name}, Value: v})\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\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\tfor i := 0; i < reflectValue.Len(); i++ {\n\t\t\t\t\t\tfor _, field := range s.Fields {\n\t\t\t\t\t\t\tselected := selectedColumns[field.DBName] || selectedColumns[field.Name]\n\t\t\t\t\t\t\tif selected || (!restricted && field.Readable) {\n\t\t\t\t\t\t\t\tif v, isZero := field.ValueOf(stmt.Context, reflectValue.Index(i)); !isZero || selected {\n\t\t\t\t\t\t\t\t\tif field.DBName != \"\" {\n\t\t\t\t\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.DBName}, Value: v})\n\t\t\t\t\t\t\t\t\t} else if field.DataType != \"\" {\n\t\t\t\t\t\t\t\t\t\tconds = append(conds, clause.Eq{Column: clause.Column{Table: clause.CurrentTable, Name: field.Name}, Value: v})\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}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif restricted {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t} else if !reflectValue.IsValid() {\n\t\t\t\tstmt.AddError(ErrInvalidData)\n\t\t\t} else if len(conds) == 0 {\n\t\t\t\tif len(args) == 1 {\n\t\t\t\t\tswitch reflectValue.Kind() {\n\t\t\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\t\t\t// optimize reflect value length\n\t\t\t\t\t\tvalueLen := reflectValue.Len()\n\t\t\t\t\t\tvalues := make([]any, valueLen)\n\t\t\t\t\t\tfor i := 0; i < valueLen; i++ {\n\t\t\t\t\t\t\tvalues[i] = reflectValue.Index(i).Interface()\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif len(values) > 0 {\n\t\t\t\t\t\t\tconds = append(conds, clause.IN{Column: clause.PrimaryColumn, Values: values})\n\t\t\t\t\t\t\treturn []clause.Expression{clause.And(conds...)}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn nil\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconds = append(conds, clause.IN{Column: clause.PrimaryColumn, Values: args})\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(conds) > 0 {\n\t\treturn []clause.Expression{clause.And(conds...)}\n\t}\n\treturn nil\n}\n\n// Build build sql with clauses names\nfunc (stmt *Statement) Build(clauses ...string) {\n\tvar firstClauseWritten bool\n\n\tfor _, name := range clauses {\n\t\tif c, ok := stmt.Clauses[name]; ok {\n\t\t\tif firstClauseWritten {\n\t\t\t\tstmt.WriteByte(' ')\n\t\t\t}\n\n\t\t\tfirstClauseWritten = true\n\t\t\tif b, ok := stmt.DB.ClauseBuilders[name]; ok {\n\t\t\t\tb(c, stmt)\n\t\t\t} else {\n\t\t\t\tc.Build(stmt)\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunc (stmt *Statement) Parse(value any) (err error) {\n\treturn stmt.ParseWithSpecialTableName(value, \"\")\n}\n\nfunc (stmt *Statement) ParseWithSpecialTableName(value any, specialTableName string) (err error) {\n\tif stmt.Schema, err = schema.ParseWithSpecialTableName(value, stmt.DB.cacheStore, stmt.DB.NamingStrategy, specialTableName); err == nil && stmt.Table == \"\" {\n\t\tif tables := strings.Split(stmt.Schema.Table, \".\"); len(tables) == 2 {\n\t\t\tstmt.TableExpr = &clause.Expr{SQL: stmt.Quote(stmt.Schema.Table)}\n\t\t\tstmt.Table = tables[1]\n\t\t\treturn\n\t\t}\n\n\t\tstmt.Table = stmt.Schema.Table\n\t}\n\treturn err\n}\n\nfunc (stmt *Statement) clone() *Statement {\n\tnewStmt := &Statement{\n\t\tTableExpr:            stmt.TableExpr,\n\t\tTable:                stmt.Table,\n\t\tModel:                stmt.Model,\n\t\tUnscoped:             stmt.Unscoped,\n\t\tDest:                 stmt.Dest,\n\t\tReflectValue:         stmt.ReflectValue,\n\t\tClauses:              map[string]clause.Clause{},\n\t\tDistinct:             stmt.Distinct,\n\t\tSelects:              stmt.Selects,\n\t\tOmits:                stmt.Omits,\n\t\tPreloads:             map[string][]any{},\n\t\tConnPool:             stmt.ConnPool,\n\t\tSchema:               stmt.Schema,\n\t\tContext:              stmt.Context,\n\t\tRaiseErrorOnNotFound: stmt.RaiseErrorOnNotFound,\n\t\tSkipHooks:            stmt.SkipHooks,\n\t}\n\n\tif stmt.SQL.Len() > 0 {\n\t\tnewStmt.SQL.WriteString(stmt.SQL.String())\n\t\tnewStmt.Vars = make([]any, 0, len(stmt.Vars))\n\t\tnewStmt.Vars = append(newStmt.Vars, stmt.Vars...)\n\t}\n\n\tfor k, c := range stmt.Clauses {\n\t\tnewStmt.Clauses[k] = c\n\t}\n\n\tfor k, p := range stmt.Preloads {\n\t\tnewStmt.Preloads[k] = p\n\t}\n\n\tif len(stmt.Joins) > 0 {\n\t\tnewStmt.Joins = make([]join, len(stmt.Joins))\n\t\tcopy(newStmt.Joins, stmt.Joins)\n\t}\n\n\tif len(stmt.scopes) > 0 {\n\t\tnewStmt.scopes = make([]func(*DB) *DB, len(stmt.scopes))\n\t\tcopy(newStmt.scopes, stmt.scopes)\n\t}\n\n\tstmt.Settings.Range(func(k, v any) bool {\n\t\tnewStmt.Settings.Store(k, v)\n\t\treturn true\n\t})\n\n\treturn newStmt\n}\n\n// SetColumn set column's value\n//\n//\tstmt.SetColumn(\"Name\", \"jinzhu\") // Hooks Method\n//\tstmt.SetColumn(\"Name\", \"jinzhu\", true) // Callbacks Method\nfunc (stmt *Statement) SetColumn(name string, value any, fromCallbacks ...bool) {\n\tif v, ok := stmt.Dest.(map[string]any); ok {\n\t\tv[name] = value\n\t} else if v, ok := stmt.Dest.([]map[string]any); ok {\n\t\tfor _, m := range v {\n\t\t\tm[name] = value\n\t\t}\n\t} else if stmt.Schema != nil {\n\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\tdestValue := reflect.ValueOf(stmt.Dest)\n\t\t\tfor destValue.Kind() == reflect.Ptr {\n\t\t\t\tdestValue = destValue.Elem()\n\t\t\t}\n\n\t\t\tif stmt.ReflectValue != destValue {\n\t\t\t\tif !destValue.CanAddr() {\n\t\t\t\t\tdestValueCanAddr := reflect.New(destValue.Type())\n\t\t\t\t\tdestValueCanAddr.Elem().Set(destValue)\n\t\t\t\t\tstmt.Dest = destValueCanAddr.Interface()\n\t\t\t\t\tdestValue = destValueCanAddr.Elem()\n\t\t\t\t}\n\n\t\t\t\tswitch destValue.Kind() {\n\t\t\t\tcase reflect.Struct:\n\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, destValue, value))\n\t\t\t\tdefault:\n\t\t\t\t\tstmt.AddError(ErrInvalidData)\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tswitch stmt.ReflectValue.Kind() {\n\t\t\tcase reflect.Slice, reflect.Array:\n\t\t\t\tif len(fromCallbacks) > 0 {\n\t\t\t\t\tfor i := 0; i < stmt.ReflectValue.Len(); i++ {\n\t\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue.Index(i), value))\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue.Index(stmt.CurDestIndex), value))\n\t\t\t\t}\n\t\t\tcase reflect.Struct:\n\t\t\t\tif !stmt.ReflectValue.CanAddr() {\n\t\t\t\t\tstmt.AddError(ErrInvalidValue)\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tstmt.AddError(field.Set(stmt.Context, stmt.ReflectValue, value))\n\t\t\t}\n\t\t} else {\n\t\t\tstmt.AddError(ErrInvalidField)\n\t\t}\n\t} else {\n\t\tstmt.AddError(ErrInvalidField)\n\t}\n}\n\n// Changed check model changed or not when updating\nfunc (stmt *Statement) Changed(fields ...string) bool {\n\tmodelValue := stmt.ReflectValue\n\tswitch modelValue.Kind() {\n\tcase reflect.Slice, reflect.Array:\n\t\tmodelValue = stmt.ReflectValue.Index(stmt.CurDestIndex)\n\t}\n\n\tselectColumns, restricted := stmt.SelectAndOmitColumns(false, true)\n\tchanged := func(field *schema.Field) bool {\n\t\tfieldValue, _ := field.ValueOf(stmt.Context, modelValue)\n\t\tif v, ok := selectColumns[field.DBName]; (ok && v) || (!ok && !restricted) {\n\t\t\tif mv, mok := stmt.Dest.(map[string]any); mok {\n\t\t\t\tif fv, ok := mv[field.Name]; ok {\n\t\t\t\t\treturn !utils.AssertEqual(fv, fieldValue)\n\t\t\t\t} else if fv, ok := mv[field.DBName]; ok {\n\t\t\t\t\treturn !utils.AssertEqual(fv, fieldValue)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdestValue := reflect.ValueOf(stmt.Dest)\n\t\t\t\tfor destValue.Kind() == reflect.Ptr {\n\t\t\t\t\tdestValue = destValue.Elem()\n\t\t\t\t}\n\n\t\t\t\tchangedValue, zero := field.ValueOf(stmt.Context, destValue)\n\t\t\t\tif v {\n\t\t\t\t\treturn !utils.AssertEqual(changedValue, fieldValue)\n\t\t\t\t}\n\t\t\t\treturn !zero && !utils.AssertEqual(changedValue, fieldValue)\n\t\t\t}\n\t\t}\n\t\treturn false\n\t}\n\n\tif len(fields) == 0 {\n\t\tfor _, field := range stmt.Schema.FieldsByDBName {\n\t\t\tif changed(field) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor _, name := range fields {\n\t\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\t\tif changed(field) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn false\n}\n\nvar matchName = func() func(tableColumn string) (table, column string) {\n\tnameMatcher := regexp.MustCompile(`^(?:\\W?(\\w+?)\\W?\\.)?(?:(\\*)|\\W?(\\w+?)\\W?)$`)\n\treturn func(tableColumn string) (table, column string) {\n\t\tif matches := nameMatcher.FindStringSubmatch(tableColumn); len(matches) == 4 {\n\t\t\ttable = matches[1]\n\t\t\tstar := matches[2]\n\t\t\tcolumnName := matches[3]\n\t\t\tif star != \"\" {\n\t\t\t\treturn table, star\n\t\t\t}\n\t\t\treturn table, columnName\n\t\t}\n\t\treturn \"\", \"\"\n\t}\n}()\n\n// SelectAndOmitColumns get select and omit columns, select -> true, omit -> false\nfunc (stmt *Statement) SelectAndOmitColumns(requireCreate, requireUpdate bool) (map[string]bool, bool) {\n\tresults := map[string]bool{}\n\tnotRestricted := false\n\n\tprocessColumn := func(column string, result bool) {\n\t\tif stmt.Schema == nil {\n\t\t\tresults[column] = result\n\t\t} else if column == \"*\" {\n\t\t\tnotRestricted = result\n\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\tresults[dbName] = result\n\t\t\t}\n\t\t} else if column == clause.Associations {\n\t\t\tfor _, rel := range stmt.Schema.Relationships.Relations {\n\t\t\t\tresults[rel.Name] = result\n\t\t\t}\n\t\t} else if field := stmt.Schema.LookUpField(column); field != nil && field.DBName != \"\" {\n\t\t\tresults[field.DBName] = result\n\t\t} else if table, col := matchName(column); col != \"\" && (table == stmt.Table || table == \"\") {\n\t\t\tif col == \"*\" {\n\t\t\t\tfor _, dbName := range stmt.Schema.DBNames {\n\t\t\t\t\tresults[dbName] = result\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults[col] = result\n\t\t\t}\n\t\t} else {\n\t\t\tresults[column] = result\n\t\t}\n\t}\n\n\t// select columns\n\tfor _, column := range stmt.Selects {\n\t\tprocessColumn(column, true)\n\t}\n\n\t// omit columns\n\tfor _, column := range stmt.Omits {\n\t\tprocessColumn(column, false)\n\t}\n\n\tif stmt.Schema != nil {\n\t\tfor _, field := range stmt.Schema.FieldsByName {\n\t\t\tname := field.DBName\n\t\t\tif name == \"\" {\n\t\t\t\tname = field.Name\n\t\t\t}\n\n\t\t\tif requireCreate && !field.Creatable {\n\t\t\t\tresults[name] = false\n\t\t\t} else if requireUpdate && !field.Updatable {\n\t\t\t\tresults[name] = false\n\t\t\t}\n\t\t}\n\t}\n\n\treturn results, !notRestricted && len(stmt.Selects) > 0\n}\n"
  },
  {
    "path": "gossh/gorm/utils/tests/dummy_dialecter.go",
    "content": "package tests\n\nimport (\n\t\"gossh/gorm\"\n\t\"gossh/gorm/callbacks\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/schema\"\n)\n\ntype DummyDialector struct {\n\tTranslatedErr error\n}\n\nfunc (DummyDialector) Name() string {\n\treturn \"dummy\"\n}\n\nfunc (DummyDialector) Initialize(db *gorm.DB) error {\n\tcallbacks.RegisterDefaultCallbacks(db, &callbacks.Config{\n\t\tCreateClauses:        []string{\"INSERT\", \"VALUES\", \"ON CONFLICT\", \"RETURNING\"},\n\t\tUpdateClauses:        []string{\"UPDATE\", \"SET\", \"WHERE\", \"RETURNING\"},\n\t\tDeleteClauses:        []string{\"DELETE\", \"FROM\", \"WHERE\", \"RETURNING\"},\n\t\tLastInsertIDReversed: true,\n\t})\n\n\treturn nil\n}\n\nfunc (DummyDialector) DefaultValueOf(field *schema.Field) clause.Expression {\n\treturn clause.Expr{SQL: \"DEFAULT\"}\n}\n\nfunc (DummyDialector) Migrator(*gorm.DB) gorm.Migrator {\n\treturn nil\n}\n\nfunc (DummyDialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v any) {\n\twriter.WriteByte('?')\n}\n\nfunc (DummyDialector) QuoteTo(writer clause.Writer, str string) {\n\tvar (\n\t\tunderQuoted, selfQuoted bool\n\t\tcontinuousBacktick      int8\n\t\tshiftDelimiter          int8\n\t)\n\n\tfor _, v := range []byte(str) {\n\t\tswitch v {\n\t\tcase '`':\n\t\t\tcontinuousBacktick++\n\t\t\tif continuousBacktick == 2 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t}\n\t\tcase '.':\n\t\t\tif continuousBacktick > 0 || !selfQuoted {\n\t\t\t\tshiftDelimiter = 0\n\t\t\t\tunderQuoted = false\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t\twriter.WriteByte('`')\n\t\t\t}\n\t\t\twriter.WriteByte(v)\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif shiftDelimiter-continuousBacktick <= 0 && !underQuoted {\n\t\t\t\twriter.WriteByte('`')\n\t\t\t\tunderQuoted = true\n\t\t\t\tif selfQuoted = continuousBacktick > 0; selfQuoted {\n\t\t\t\t\tcontinuousBacktick -= 1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ; continuousBacktick > 0; continuousBacktick -= 1 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t}\n\n\t\t\twriter.WriteByte(v)\n\t\t}\n\t\tshiftDelimiter++\n\t}\n\n\tif continuousBacktick > 0 && !selfQuoted {\n\t\twriter.WriteString(\"``\")\n\t}\n\twriter.WriteByte('`')\n}\n\nfunc (DummyDialector) Explain(sql string, vars ...any) string {\n\treturn logger.ExplainSQL(sql, nil, `\"`, vars...)\n}\n\nfunc (DummyDialector) DataTypeOf(*schema.Field) string {\n\treturn \"\"\n}\n\nfunc (d DummyDialector) Translate(err error) error {\n\treturn d.TranslatedErr\n}\n"
  },
  {
    "path": "gossh/gorm/utils/tests/models.go",
    "content": "package tests\n\nimport (\n\t\"database/sql\"\n\t\"time\"\n\n\t\"gossh/gorm\"\n)\n\n// User has one `Account` (has one), many `Pets` (has many) and `Toys` (has many - polymorphic)\n// He works in a Company (belongs to), he has a Manager (belongs to - single-table), and also managed a Team (has many - single-table)\n// He speaks many languages (many to many) and has many friends (many to many - single-table)\n// His pet also has one Toy (has one - polymorphic)\n// NamedPet is a reference to a named `Pet` (has one)\ntype User struct {\n\tgorm.Model\n\tName      string\n\tAge       uint\n\tBirthday  *time.Time\n\tAccount   Account\n\tPets      []*Pet\n\tNamedPet  *Pet\n\tToys      []Toy   `gorm:\"polymorphic:Owner\"`\n\tTools     []Tools `gorm:\"polymorphicType:Type;polymorphicId:CustomID\"`\n\tCompanyID *int\n\tCompany   Company\n\tManagerID *uint\n\tManager   *User\n\tTeam      []User     `gorm:\"foreignkey:ManagerID\"`\n\tLanguages []Language `gorm:\"many2many:UserSpeak;\"`\n\tFriends   []*User    `gorm:\"many2many:user_friends;\"`\n\tActive    bool\n}\n\ntype Account struct {\n\tgorm.Model\n\tUserID sql.NullInt64\n\tNumber string\n}\n\ntype Pet struct {\n\tgorm.Model\n\tUserID *uint\n\tName   string\n\tToy    Toy `gorm:\"polymorphic:Owner;\"`\n}\n\ntype Toy struct {\n\tgorm.Model\n\tName      string\n\tOwnerID   string\n\tOwnerType string\n}\n\ntype Tools struct {\n\tgorm.Model\n\tName     string\n\tCustomID string\n\tType     string\n}\n\ntype Company struct {\n\tID   int\n\tName string\n}\n\ntype Language struct {\n\tCode string `gorm:\"primarykey\"`\n\tName string\n}\n\ntype Coupon struct {\n\tID               int              `gorm:\"primarykey; size:255\"`\n\tAppliesToProduct []*CouponProduct `gorm:\"foreignKey:CouponId;constraint:OnDelete:CASCADE\"`\n\tAmountOff        uint32           `gorm:\"column:amount_off\"`\n\tPercentOff       float32          `gorm:\"column:percent_off\"`\n}\n\ntype CouponProduct struct {\n\tCouponId  int    `gorm:\"primarykey;size:255\"`\n\tProductId string `gorm:\"primarykey;size:255\"`\n\tDesc      string\n}\n\ntype Order struct {\n\tgorm.Model\n\tNum      string\n\tCoupon   *Coupon\n\tCouponID string\n}\n\ntype Parent struct {\n\tgorm.Model\n\tFavChildID uint\n\tFavChild   *Child\n\tChildren   []*Child\n}\n\ntype Child struct {\n\tgorm.Model\n\tName     string\n\tParentID *uint\n\tParent   *Parent\n}\n"
  },
  {
    "path": "gossh/gorm/utils/tests/utils.go",
    "content": "package tests\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"go/ast\"\n\t\"reflect\"\n\t\"testing\"\n\t\"time\"\n\n\t\"gossh/gorm/utils\"\n)\n\nfunc AssertObjEqual(t *testing.T, r, e any, names ...string) {\n\tfor _, name := range names {\n\t\trv := reflect.Indirect(reflect.ValueOf(r))\n\t\tev := reflect.Indirect(reflect.ValueOf(e))\n\t\tif rv.IsValid() != ev.IsValid() {\n\t\t\tt.Errorf(\"%v: expect: %+v, got %+v\", utils.FileWithLineNum(), r, e)\n\t\t\treturn\n\t\t}\n\t\tgot := rv.FieldByName(name).Interface()\n\t\texpect := ev.FieldByName(name).Interface()\n\t\tt.Run(name, func(t *testing.T) {\n\t\t\tAssertEqual(t, got, expect)\n\t\t})\n\t}\n}\n\nfunc AssertEqual(t *testing.T, got, expect any) {\n\tif !reflect.DeepEqual(got, expect) {\n\t\tisEqual := func() {\n\t\t\tif curTime, ok := got.(time.Time); ok {\n\t\t\t\tformat := \"2006-01-02T15:04:05Z07:00\"\n\n\t\t\t\tif curTime.Round(time.Second).UTC().Format(format) != expect.(time.Time).Round(time.Second).UTC().Format(format) && curTime.Truncate(time.Second).UTC().Format(format) != expect.(time.Time).Truncate(time.Second).UTC().Format(format) {\n\t\t\t\t\tt.Errorf(\"%v: expect: %v, got %v after time round\", utils.FileWithLineNum(), expect.(time.Time), curTime)\n\t\t\t\t}\n\t\t\t} else if fmt.Sprint(got) != fmt.Sprint(expect) {\n\t\t\t\tt.Errorf(\"%v: expect: %#v, got %#v\", utils.FileWithLineNum(), expect, got)\n\t\t\t}\n\t\t}\n\n\t\tif fmt.Sprint(got) == fmt.Sprint(expect) {\n\t\t\treturn\n\t\t}\n\n\t\tif reflect.Indirect(reflect.ValueOf(got)).IsValid() != reflect.Indirect(reflect.ValueOf(expect)).IsValid() {\n\t\t\tt.Errorf(\"%v: expect: %+v, got %+v\", utils.FileWithLineNum(), expect, got)\n\t\t\treturn\n\t\t}\n\n\t\tif valuer, ok := got.(driver.Valuer); ok {\n\t\t\tgot, _ = valuer.Value()\n\t\t}\n\n\t\tif valuer, ok := expect.(driver.Valuer); ok {\n\t\t\texpect, _ = valuer.Value()\n\t\t}\n\n\t\tif got != nil {\n\t\t\tgot = reflect.Indirect(reflect.ValueOf(got)).Interface()\n\t\t}\n\n\t\tif expect != nil {\n\t\t\texpect = reflect.Indirect(reflect.ValueOf(expect)).Interface()\n\t\t}\n\n\t\tif reflect.ValueOf(got).IsValid() != reflect.ValueOf(expect).IsValid() {\n\t\t\tt.Errorf(\"%v: expect: %+v, got %+v\", utils.FileWithLineNum(), expect, got)\n\t\t\treturn\n\t\t}\n\n\t\tif reflect.ValueOf(got).Kind() == reflect.Slice {\n\t\t\tif reflect.ValueOf(expect).Kind() == reflect.Slice {\n\t\t\t\tif reflect.ValueOf(got).Len() == reflect.ValueOf(expect).Len() {\n\t\t\t\t\tfor i := 0; i < reflect.ValueOf(got).Len(); i++ {\n\t\t\t\t\t\tname := fmt.Sprintf(reflect.ValueOf(got).Type().Name()+\" #%v\", i)\n\t\t\t\t\t\tt.Run(name, func(t *testing.T) {\n\t\t\t\t\t\t\tAssertEqual(t, reflect.ValueOf(got).Index(i).Interface(), reflect.ValueOf(expect).Index(i).Interface())\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tname := reflect.ValueOf(got).Type().Elem().Name()\n\t\t\t\t\tt.Errorf(\"%v expects length: %v, got %v (expects: %+v, got %+v)\", name, reflect.ValueOf(expect).Len(), reflect.ValueOf(got).Len(), expect, got)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tif reflect.ValueOf(got).Kind() == reflect.Struct {\n\t\t\tif reflect.ValueOf(expect).Kind() == reflect.Struct {\n\t\t\t\tif reflect.ValueOf(got).NumField() == reflect.ValueOf(expect).NumField() {\n\t\t\t\t\texported := false\n\t\t\t\t\tfor i := 0; i < reflect.ValueOf(got).NumField(); i++ {\n\t\t\t\t\t\tif fieldStruct := reflect.ValueOf(got).Type().Field(i); ast.IsExported(fieldStruct.Name) {\n\t\t\t\t\t\t\texported = true\n\t\t\t\t\t\t\tfield := reflect.ValueOf(got).Field(i)\n\t\t\t\t\t\t\tt.Run(fieldStruct.Name, func(t *testing.T) {\n\t\t\t\t\t\t\t\tAssertEqual(t, field.Interface(), reflect.ValueOf(expect).Field(i).Interface())\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif exported {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif reflect.ValueOf(got).Type().ConvertibleTo(reflect.ValueOf(expect).Type()) {\n\t\t\tgot = reflect.ValueOf(got).Convert(reflect.ValueOf(expect).Type()).Interface()\n\t\t\tisEqual()\n\t\t} else if reflect.ValueOf(expect).Type().ConvertibleTo(reflect.ValueOf(got).Type()) {\n\t\t\texpect = reflect.ValueOf(got).Convert(reflect.ValueOf(got).Type()).Interface()\n\t\t\tisEqual()\n\t\t} else {\n\t\t\tt.Errorf(\"%v: expect: %+v, got %+v\", utils.FileWithLineNum(), expect, got)\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc Now() *time.Time {\n\tnow := time.Now()\n\treturn &now\n}\n"
  },
  {
    "path": "gossh/gorm/utils/utils.go",
    "content": "package utils\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"runtime\"\n\t\"strconv\"\n\t\"strings\"\n\t\"unicode\"\n)\n\nvar gormSourceDir string\n\nfunc init() {\n\t_, file, _, _ := runtime.Caller(0)\n\t// compatible solution to get gorm source directory with various operating systems\n\tgormSourceDir = sourceDir(file)\n}\n\nfunc sourceDir(file string) string {\n\tdir := filepath.Dir(file)\n\tdir = filepath.Dir(dir)\n\n\ts := filepath.Dir(dir)\n\tif filepath.Base(s) != \"gorm.io\" {\n\t\ts = dir\n\t}\n\treturn filepath.ToSlash(s) + \"/\"\n}\n\n// FileWithLineNum return the file name and line number of the current file\nfunc FileWithLineNum() string {\n\t// the second caller usually from gorm internal, so set i start from 2\n\tfor i := 2; i < 15; i++ {\n\t\t_, file, line, ok := runtime.Caller(i)\n\t\tif ok && (!strings.HasPrefix(file, gormSourceDir) || strings.HasSuffix(file, \"_test.go\")) &&\n\t\t\t!strings.HasSuffix(file, \".gen.go\") {\n\t\t\treturn file + \":\" + strconv.FormatInt(int64(line), 10)\n\t\t}\n\t}\n\n\treturn \"\"\n}\n\nfunc IsValidDBNameChar(c rune) bool {\n\treturn !unicode.IsLetter(c) && !unicode.IsNumber(c) && c != '.' && c != '*' && c != '_' && c != '$' && c != '@'\n}\n\n// CheckTruth check string true or not\nfunc CheckTruth(vals ...string) bool {\n\tfor _, val := range vals {\n\t\tif val != \"\" && !strings.EqualFold(val, \"false\") {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc ToStringKey(values ...any) string {\n\tresults := make([]string, len(values))\n\n\tfor idx, value := range values {\n\t\tif valuer, ok := value.(driver.Valuer); ok {\n\t\t\tvalue, _ = valuer.Value()\n\t\t}\n\n\t\tswitch v := value.(type) {\n\t\tcase string:\n\t\t\tresults[idx] = v\n\t\tcase []byte:\n\t\t\tresults[idx] = string(v)\n\t\tcase uint:\n\t\t\tresults[idx] = strconv.FormatUint(uint64(v), 10)\n\t\tdefault:\n\t\t\tresults[idx] = \"nil\"\n\t\t\tvv := reflect.ValueOf(v)\n\t\t\tif vv.IsValid() && !vv.IsZero() {\n\t\t\t\tresults[idx] = fmt.Sprint(reflect.Indirect(vv).Interface())\n\t\t\t}\n\t\t}\n\t}\n\n\treturn strings.Join(results, \"_\")\n}\n\nfunc Contains(elems []string, elem string) bool {\n\tfor _, e := range elems {\n\t\tif elem == e {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc AssertEqual(x, y any) bool {\n\tif reflect.DeepEqual(x, y) {\n\t\treturn true\n\t}\n\tif x == nil || y == nil {\n\t\treturn false\n\t}\n\n\txval := reflect.ValueOf(x)\n\tyval := reflect.ValueOf(y)\n\tif xval.Kind() == reflect.Ptr && xval.IsNil() ||\n\t\tyval.Kind() == reflect.Ptr && yval.IsNil() {\n\t\treturn false\n\t}\n\n\tif valuer, ok := x.(driver.Valuer); ok {\n\t\tx, _ = valuer.Value()\n\t}\n\tif valuer, ok := y.(driver.Valuer); ok {\n\t\ty, _ = valuer.Value()\n\t}\n\treturn reflect.DeepEqual(x, y)\n}\n\nfunc ToString(value any) string {\n\tswitch v := value.(type) {\n\tcase string:\n\t\treturn v\n\tcase int:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int8:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int16:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int32:\n\t\treturn strconv.FormatInt(int64(v), 10)\n\tcase int64:\n\t\treturn strconv.FormatInt(v, 10)\n\tcase uint:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint8:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint16:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint32:\n\t\treturn strconv.FormatUint(uint64(v), 10)\n\tcase uint64:\n\t\treturn strconv.FormatUint(v, 10)\n\t}\n\treturn \"\"\n}\n\nconst nestedRelationSplit = \"__\"\n\n// NestedRelationName nested relationships like `Manager__Company`\nfunc NestedRelationName(prefix, name string) string {\n\treturn prefix + nestedRelationSplit + name\n}\n\n// SplitNestedRelationName Split nested relationships to `[]string{\"Manager\",\"Company\"}`\nfunc SplitNestedRelationName(name string) []string {\n\treturn strings.Split(name, nestedRelationSplit)\n}\n\n// JoinNestedRelationNames nested relationships like `Manager__Company`\nfunc JoinNestedRelationNames(relationNames []string) string {\n\treturn strings.Join(relationNames, nestedRelationSplit)\n}\n"
  },
  {
    "path": "gossh/main.go",
    "content": "package main\r\n\r\nimport (\r\n\t\"embed\"\r\n\t\"errors\"\r\n\t\"fmt\"\r\n\t\"gossh/app/config\"\r\n\t\"gossh/app/middleware\"\r\n\t\"gossh/app/model\"\r\n\t\"gossh/app/service\"\r\n\t\"gossh/gin\"\r\n\t\"io/fs\"\r\n\t\"log/slog\"\r\n\t\"net/http\"\r\n\t\"os\"\r\n\t\"path\"\r\n\t\"path/filepath\"\r\n\t\"strings\"\r\n)\r\n\r\n// 使用go 1.16+ 新特性\r\n//\r\n//go:embed webroot\r\nvar dir embed.FS\r\n\r\n// StaticFile 嵌入普通的静态资源\r\ntype StaticFile struct {\r\n\t// 静态资源\r\n\tembedFS embed.FS\r\n\r\n\t// 设置embed文件到静态资源的相对路径，也就是embed注释里的路径\r\n\tpath string\r\n}\r\n\r\n// Open 静态资源被访问的核心逻辑\r\nfunc (w StaticFile) Open(name string) (fs.File, error) {\r\n\tif filepath.Separator != '/' && strings.ContainsRune(name, filepath.Separator) {\r\n\t\treturn nil, errors.New(\"http: invalid character in file path\")\r\n\t}\r\n\r\n\tfullName := filepath.Join(w.path, filepath.FromSlash(path.Clean(\"/\"+name)))\r\n\tfullName = strings.ReplaceAll(fullName, `\\`, `/`)\r\n\tfile, err := w.embedFS.Open(fullName)\r\n\treturn file, err\r\n}\r\n\r\nfunc init() {\r\n\tconfig.InitConfig()\r\n\tmodel.InitDatabase()\r\n\tservice.InitSessionClean()\r\n\tservice.InitSshServer()\r\n\tfmt.Printf(\"WebBaseDir:[%s]\\n\", config.DefaultConfig.WebBaseDir)\r\n}\r\n\r\nfunc main() {\r\n\r\n\tgin.SetMode(gin.ReleaseMode)\r\n\tvar engine = gin.Default()\r\n\tengine.Use(middleware.DbCheck(), middleware.NetFilter())\r\n\tengine.GET(\"/web_base_dir\", func(c *gin.Context) { c.JSON(200, gin.H{\"code\": 0, \"web_base_dir\": config.DefaultConfig.WebBaseDir}) })\r\n\r\n\tengine.NoRoute(func(c *gin.Context) {\r\n\t\tc.Redirect(http.StatusMovedPermanently, config.DefaultConfig.WebBaseDir+\"/app\")\r\n\t})\r\n\r\n\t// 不需要认证的路由\r\n\tvar open = engine.Group(config.DefaultConfig.WebBaseDir)\r\n\topen.StaticFS(\"/app\", http.FS(StaticFile{embedFS: dir, path: \"webroot\"}))\r\n\topen.POST(\"/api/login\", service.UserLogin)\r\n\topen.POST(\"/api/sys/db_conn_check\", service.DbConnCheck)\r\n\topen.GET(\"/api/sys/is_init\", service.GetIsInit)\r\n\topen.POST(\"/api/sys/init\", service.SysInit)\r\n\r\n\t// 需要认证的路由\r\n\tvar auth = engine.Group(config.DefaultConfig.WebBaseDir,\r\n\t\tmiddleware.SysInit(),\r\n\t\tmiddleware.JWTAuth(),\r\n\t\tmiddleware.PremCheck(engine),\r\n\t)\r\n\r\n\t{ // SSH 连接配置\r\n\t\tauth.GET(\"/api/conn_conf\", service.ConfFindAll)\r\n\t\tauth.GET(\"/api/conn_conf/:id\", service.ConfFindByID)\r\n\t\tauth.POST(\"/api/conn_conf\", service.ConfCreate)\r\n\t\tauth.PUT(\"/api/conn_conf\", service.ConfUpdateById)\r\n\t\tauth.DELETE(\"/api/conn_conf/:id\", service.ConfDeleteById)\r\n\t}\r\n\r\n\t{ // 命令收藏\r\n\t\tauth.GET(\"/api/cmd_note\", service.CmdNoteFindAll)\r\n\t\tauth.GET(\"/api/cmd_note/:id\", service.CmdNoteFindByID)\r\n\t\tauth.POST(\"/api/cmd_note\", service.CmdNoteCreate)\r\n\t\tauth.PUT(\"/api/cmd_note\", service.CmdNoteUpdateById)\r\n\t\tauth.DELETE(\"/api/cmd_note/:id\", service.CmdNoteDeleteById)\r\n\t}\r\n\r\n\t{ // 策略配置\r\n\t\tauth.GET(\"/api/policy_conf\", service.PolicyConfFindAll)\r\n\t\tauth.GET(\"/api/policy_conf/:id\", service.PolicyConfFindByID)\r\n\t\tauth.POST(\"/api/policy_conf\", service.PolicyConfCreate)\r\n\t\tauth.PUT(\"/api/policy_conf\", service.PolicyConfUpdateById)\r\n\t\tauth.DELETE(\"/api/policy_conf/:id\", service.PolicyConfDeleteById)\r\n\t}\r\n\r\n\t{ // 访问控制\r\n\t\tauth.GET(\"/api/net_filter\", service.NetFilterFindAll)\r\n\t\tauth.GET(\"/api/net_filter/:id\", service.NetFilterFindByID)\r\n\t\tauth.POST(\"/api/net_filter\", service.NetFilterCreate)\r\n\t\tauth.PUT(\"/api/net_filter\", service.NetFilterUpdateById)\r\n\t\tauth.DELETE(\"/api/net_filter/:id\", service.NetFilterDeleteById)\r\n\t}\r\n\r\n\t{ // Web用户管理\r\n\t\tauth.GET(\"/api/user\", service.UserFindAll)\r\n\t\tauth.GET(\"/api/user/:id\", service.UserFindByID)\r\n\t\tauth.POST(\"/api/user\", service.UserCreate)\r\n\t\tauth.PUT(\"/api/user\", service.UserUpdateById)\r\n\t\tauth.DELETE(\"/api/user/:id\", service.UserDeleteById)\r\n\t\tauth.PATCH(\"/api/user/check_name_exists\", service.CheckUserNameExists)\r\n\t\tauth.PATCH(\"/api/user/pwd\", service.ModifyPasswd)\r\n\t}\r\n\r\n\t{ // SSHD用户管理\r\n\t\tauth.GET(\"/api/sshd_user\", service.SshdUserFindAll)\r\n\t\tauth.GET(\"/api/sshd_user/:id\", service.SshdUserFindByID)\r\n\t\tauth.POST(\"/api/sshd_user\", service.SshdUserCreate)\r\n\t\tauth.PUT(\"/api/sshd_user\", service.SshdUserUpdateById)\r\n\t\tauth.DELETE(\"/api/sshd_user/:id\", service.SshdUserDeleteById)\r\n\t\tauth.PATCH(\"/api/sshd_user/check_name_exists\", service.CheckSshdUserNameExists)\r\n\t}\r\n\r\n\t{ // SSHD证书管理\r\n\t\tauth.GET(\"/api/sshd_cert\", service.SshdCertFindAll)\r\n\t\tauth.GET(\"/api/sshd_cert_text\", service.GetSshdCertAuthorizedKeys)\r\n\t\tauth.GET(\"/api/sshd_cert/:id\", service.SshdCertFindByID)\r\n\t\tauth.POST(\"/api/sshd_cert\", service.SshdCertCreate)\r\n\t\tauth.PUT(\"/api/sshd_cert\", service.SshdCertUpdateById)\r\n\t\tauth.DELETE(\"/api/sshd_cert/:id\", service.SshdCertDeleteById)\r\n\t\tauth.PATCH(\"/api/sshd_cert/check_name_exists\", service.CheckSshdCertNameExists)\r\n\t}\r\n\r\n\t{ // 审计日志\r\n\t\tauth.POST(\"/api/login_audit\", service.LoginAuditSearch)\r\n\t}\r\n\r\n\t{ // SSH链接\r\n\t\tauth.GET(\"/api/conn_manage/online_client\", service.GetOnlineClient)\r\n\t\tauth.PUT(\"/api/conn_manage/refresh_conn_time\", service.RefreshConnTime)\r\n\t\tauth.POST(\"/api/sftp/create_dir\", service.SftpCreateDir)\r\n\t\tauth.POST(\"/api/sftp/list\", service.SftpList)\r\n\t\tauth.GET(\"/api/sftp/download\", service.SftpDownLoad)\r\n\t\tauth.PUT(\"/api/sftp/upload\", service.SftpUpload)\r\n\t\tauth.DELETE(\"/api/sftp/delete\", service.SftpDelete)\r\n\t\tauth.GET(\"/api/ssh/conn\", service.NewSshConn)\r\n\t\tauth.PATCH(\"/api/ssh/conn\", service.ResizeWindow)\r\n\t\tauth.POST(\"/api/ssh/exec\", service.ExecCommand)\r\n\t\tauth.POST(\"/api/ssh/disconnect\", service.Disconnect)\r\n\t\tauth.POST(\"/api/ssh/create_session\", service.CreateSessionId)\r\n\t}\r\n\r\n\t{ // 系统配置\r\n\t\tauth.GET(\"/api/sys/config\", service.GetRunConf)\r\n\t\tauth.POST(\"/api/sys/config\", service.SetRunConf)\r\n\t}\r\n\r\n\taddress := fmt.Sprintf(\"%s:%s\", config.DefaultConfig.Address, config.DefaultConfig.Port)\r\n\t_, certErr := os.Open(config.DefaultConfig.CertFile)\r\n\t_, keyErr := os.Open(config.DefaultConfig.KeyFile)\r\n\r\n\t// 如果证书和私钥文件存在,就使用https协议,否则使用http协议\r\n\tif certErr == nil && keyErr == nil {\r\n\t\tslog.Info(\"https_server_start\", \"address\", address)\r\n\t\terr := engine.RunTLS(address, config.DefaultConfig.CertFile, config.DefaultConfig.KeyFile)\r\n\t\tif err != nil {\r\n\t\t\tslog.Error(\"RunServeTLSError:\", \"msg\", err.Error())\r\n\t\t\tos.Exit(1)\r\n\t\t\treturn\r\n\t\t}\r\n\t} else {\r\n\t\tslog.Info(\"http_server_start\", \"address\", address)\r\n\t\terr := engine.Run(address)\r\n\t\tif err != nil {\r\n\t\t\tslog.Error(\"RunServeError:\", \"msg\", err.Error())\r\n\t\t\tos.Exit(1)\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n}\r\n"
  },
  {
    "path": "gossh/mysql/atomic_bool.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package.\n//\n// Copyright 2022 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n//go:build go1.19\n// +build go1.19\n\npackage mysql\n\nimport \"sync/atomic\"\n\n/******************************************************************************\n*                               Sync utils                                    *\n******************************************************************************/\n\ntype atomicBool = atomic.Bool\n"
  },
  {
    "path": "gossh/mysql/atomic_bool_go118.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package.\n//\n// Copyright 2022 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n//go:build !go1.19\n// +build !go1.19\n\npackage mysql\n\nimport \"sync/atomic\"\n\n/******************************************************************************\n*                               Sync utils                                    *\n******************************************************************************/\n\n// atomicBool is an implementation of atomic.Bool for older version of Go.\n// it is a wrapper around uint32 for usage as a boolean value with\n// atomic access.\ntype atomicBool struct {\n\t_     noCopy\n\tvalue uint32\n}\n\n// Load returns whether the current boolean value is true\nfunc (ab *atomicBool) Load() bool {\n\treturn atomic.LoadUint32(&ab.value) > 0\n}\n\n// Store sets the value of the bool regardless of the previous value\nfunc (ab *atomicBool) Store(value bool) {\n\tif value {\n\t\tatomic.StoreUint32(&ab.value, 1)\n\t} else {\n\t\tatomic.StoreUint32(&ab.value, 0)\n\t}\n}\n\n// Swap sets the value of the bool and returns the old value.\nfunc (ab *atomicBool) Swap(value bool) bool {\n\tif value {\n\t\treturn atomic.SwapUint32(&ab.value, 1) > 0\n\t}\n\treturn atomic.SwapUint32(&ab.value, 0) > 0\n}\n"
  },
  {
    "path": "gossh/mysql/auth.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2018 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"crypto/rand\"\n\t\"crypto/rsa\"\n\t\"crypto/sha1\"\n\t\"crypto/sha256\"\n\t\"crypto/x509\"\n\t\"encoding/pem\"\n\t\"fmt\"\n\t\"sync\"\n)\n\n// server pub keys registry\nvar (\n\tserverPubKeyLock     sync.RWMutex\n\tserverPubKeyRegistry map[string]*rsa.PublicKey\n)\n\n// RegisterServerPubKey registers a server RSA public key which can be used to\n// send data in a secure manner to the server without receiving the public key\n// in a potentially insecure way from the server first.\n// Registered keys can afterwards be used adding serverPubKey=<name> to the DSN.\n//\n// Note: The provided rsa.PublicKey instance is exclusively owned by the driver\n// after registering it and may not be modified.\n//\n//\tdata, err := os.ReadFile(\"mykey.pem\")\n//\tif err != nil {\n//\t\tlog.Fatal(err)\n//\t}\n//\n//\tblock, _ := pem.Decode(data)\n//\tif block == nil || block.Type != \"PUBLIC KEY\" {\n//\t\tlog.Fatal(\"failed to decode PEM block containing public key\")\n//\t}\n//\n//\tpub, err := x509.ParsePKIXPublicKey(block.Bytes)\n//\tif err != nil {\n//\t\tlog.Fatal(err)\n//\t}\n//\n//\tif rsaPubKey, ok := pub.(*rsa.PublicKey); ok {\n//\t\tmysql.RegisterServerPubKey(\"mykey\", rsaPubKey)\n//\t} else {\n//\t\tlog.Fatal(\"not a RSA public key\")\n//\t}\nfunc RegisterServerPubKey(name string, pubKey *rsa.PublicKey) {\n\tserverPubKeyLock.Lock()\n\tif serverPubKeyRegistry == nil {\n\t\tserverPubKeyRegistry = make(map[string]*rsa.PublicKey)\n\t}\n\n\tserverPubKeyRegistry[name] = pubKey\n\tserverPubKeyLock.Unlock()\n}\n\n// DeregisterServerPubKey removes the public key registered with the given name.\nfunc DeregisterServerPubKey(name string) {\n\tserverPubKeyLock.Lock()\n\tif serverPubKeyRegistry != nil {\n\t\tdelete(serverPubKeyRegistry, name)\n\t}\n\tserverPubKeyLock.Unlock()\n}\n\nfunc getServerPubKey(name string) (pubKey *rsa.PublicKey) {\n\tserverPubKeyLock.RLock()\n\tif v, ok := serverPubKeyRegistry[name]; ok {\n\t\tpubKey = v\n\t}\n\tserverPubKeyLock.RUnlock()\n\treturn\n}\n\n// Hash password using pre 4.1 (old password) method\n// https://github.com/atcurtis/mariadb/blob/master/mysys/my_rnd.c\ntype myRnd struct {\n\tseed1, seed2 uint32\n}\n\nconst myRndMaxVal = 0x3FFFFFFF\n\n// Pseudo random number generator\nfunc newMyRnd(seed1, seed2 uint32) *myRnd {\n\treturn &myRnd{\n\t\tseed1: seed1 % myRndMaxVal,\n\t\tseed2: seed2 % myRndMaxVal,\n\t}\n}\n\n// Tested to be equivalent to MariaDB's floating point variant\n// http://play.golang.org/p/QHvhd4qved\n// http://play.golang.org/p/RG0q4ElWDx\nfunc (r *myRnd) NextByte() byte {\n\tr.seed1 = (r.seed1*3 + r.seed2) % myRndMaxVal\n\tr.seed2 = (r.seed1 + r.seed2 + 33) % myRndMaxVal\n\n\treturn byte(uint64(r.seed1) * 31 / myRndMaxVal)\n}\n\n// Generate binary hash from byte string using insecure pre 4.1 method\nfunc pwHash(password []byte) (result [2]uint32) {\n\tvar add uint32 = 7\n\tvar tmp uint32\n\n\tresult[0] = 1345345333\n\tresult[1] = 0x12345671\n\n\tfor _, c := range password {\n\t\t// skip spaces and tabs in password\n\t\tif c == ' ' || c == '\\t' {\n\t\t\tcontinue\n\t\t}\n\n\t\ttmp = uint32(c)\n\t\tresult[0] ^= (((result[0] & 63) + add) * tmp) + (result[0] << 8)\n\t\tresult[1] += (result[1] << 8) ^ result[0]\n\t\tadd += tmp\n\t}\n\n\t// Remove sign bit (1<<31)-1)\n\tresult[0] &= 0x7FFFFFFF\n\tresult[1] &= 0x7FFFFFFF\n\n\treturn\n}\n\n// Hash password using insecure pre 4.1 method\nfunc scrambleOldPassword(scramble []byte, password string) []byte {\n\tscramble = scramble[:8]\n\n\thashPw := pwHash([]byte(password))\n\thashSc := pwHash(scramble)\n\n\tr := newMyRnd(hashPw[0]^hashSc[0], hashPw[1]^hashSc[1])\n\n\tvar out [8]byte\n\tfor i := range out {\n\t\tout[i] = r.NextByte() + 64\n\t}\n\n\tmask := r.NextByte()\n\tfor i := range out {\n\t\tout[i] ^= mask\n\t}\n\n\treturn out[:]\n}\n\n// Hash password using 4.1+ method (SHA1)\nfunc scramblePassword(scramble []byte, password string) []byte {\n\tif len(password) == 0 {\n\t\treturn nil\n\t}\n\n\t// stage1Hash = SHA1(password)\n\tcrypt := sha1.New()\n\tcrypt.Write([]byte(password))\n\tstage1 := crypt.Sum(nil)\n\n\t// scrambleHash = SHA1(scramble + SHA1(stage1Hash))\n\t// inner Hash\n\tcrypt.Reset()\n\tcrypt.Write(stage1)\n\thash := crypt.Sum(nil)\n\n\t// outer Hash\n\tcrypt.Reset()\n\tcrypt.Write(scramble)\n\tcrypt.Write(hash)\n\tscramble = crypt.Sum(nil)\n\n\t// token = scrambleHash XOR stage1Hash\n\tfor i := range scramble {\n\t\tscramble[i] ^= stage1[i]\n\t}\n\treturn scramble\n}\n\n// Hash password using MySQL 8+ method (SHA256)\nfunc scrambleSHA256Password(scramble []byte, password string) []byte {\n\tif len(password) == 0 {\n\t\treturn nil\n\t}\n\n\t// XOR(SHA256(password), SHA256(SHA256(SHA256(password)), scramble))\n\n\tcrypt := sha256.New()\n\tcrypt.Write([]byte(password))\n\tmessage1 := crypt.Sum(nil)\n\n\tcrypt.Reset()\n\tcrypt.Write(message1)\n\tmessage1Hash := crypt.Sum(nil)\n\n\tcrypt.Reset()\n\tcrypt.Write(message1Hash)\n\tcrypt.Write(scramble)\n\tmessage2 := crypt.Sum(nil)\n\n\tfor i := range message1 {\n\t\tmessage1[i] ^= message2[i]\n\t}\n\n\treturn message1\n}\n\nfunc encryptPassword(password string, seed []byte, pub *rsa.PublicKey) ([]byte, error) {\n\tplain := make([]byte, len(password)+1)\n\tcopy(plain, password)\n\tfor i := range plain {\n\t\tj := i % len(seed)\n\t\tplain[i] ^= seed[j]\n\t}\n\tsha1 := sha1.New()\n\treturn rsa.EncryptOAEP(sha1, rand.Reader, pub, plain, nil)\n}\n\nfunc (mc *mysqlConn) sendEncryptedPassword(seed []byte, pub *rsa.PublicKey) error {\n\tenc, err := encryptPassword(mc.cfg.Passwd, seed, pub)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mc.writeAuthSwitchPacket(enc)\n}\n\nfunc (mc *mysqlConn) auth(authData []byte, plugin string) ([]byte, error) {\n\tswitch plugin {\n\tcase \"caching_sha2_password\":\n\t\tauthResp := scrambleSHA256Password(authData, mc.cfg.Passwd)\n\t\treturn authResp, nil\n\n\tcase \"mysql_old_password\":\n\t\tif !mc.cfg.AllowOldPasswords {\n\t\t\treturn nil, ErrOldPassword\n\t\t}\n\t\tif len(mc.cfg.Passwd) == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\t// Note: there are edge cases where this should work but doesn't;\n\t\t// this is currently \"wontfix\":\n\t\t// https://github.com/go-sql-driver/mysql/issues/184\n\t\tauthResp := append(scrambleOldPassword(authData[:8], mc.cfg.Passwd), 0)\n\t\treturn authResp, nil\n\n\tcase \"mysql_clear_password\":\n\t\tif !mc.cfg.AllowCleartextPasswords {\n\t\t\treturn nil, ErrCleartextPassword\n\t\t}\n\t\t// http://dev.mysql.com/doc/refman/5.7/en/cleartext-authentication-plugin.html\n\t\t// http://dev.mysql.com/doc/refman/5.7/en/pam-authentication-plugin.html\n\t\treturn append([]byte(mc.cfg.Passwd), 0), nil\n\n\tcase \"mysql_native_password\":\n\t\tif !mc.cfg.AllowNativePasswords {\n\t\t\treturn nil, ErrNativePassword\n\t\t}\n\t\t// https://dev.mysql.com/doc/internals/en/secure-password-authentication.html\n\t\t// Native password authentication only need and will need 20-byte challenge.\n\t\tauthResp := scramblePassword(authData[:20], mc.cfg.Passwd)\n\t\treturn authResp, nil\n\n\tcase \"sha256_password\":\n\t\tif len(mc.cfg.Passwd) == 0 {\n\t\t\treturn []byte{0}, nil\n\t\t}\n\t\t// unlike caching_sha2_password, sha256_password does not accept\n\t\t// cleartext password on unix transport.\n\t\tif mc.cfg.TLS != nil {\n\t\t\t// write cleartext auth packet\n\t\t\treturn append([]byte(mc.cfg.Passwd), 0), nil\n\t\t}\n\n\t\tpubKey := mc.cfg.pubKey\n\t\tif pubKey == nil {\n\t\t\t// request public key from server\n\t\t\treturn []byte{1}, nil\n\t\t}\n\n\t\t// encrypted password\n\t\tenc, err := encryptPassword(mc.cfg.Passwd, authData, pubKey)\n\t\treturn enc, err\n\n\tdefault:\n\t\tmc.log(\"unknown auth plugin:\", plugin)\n\t\treturn nil, ErrUnknownPlugin\n\t}\n}\n\nfunc (mc *mysqlConn) handleAuthResult(oldAuthData []byte, plugin string) error {\n\t// Read Result Packet\n\tauthData, newPlugin, err := mc.readAuthResult()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// handle auth plugin switch, if requested\n\tif newPlugin != \"\" {\n\t\t// If CLIENT_PLUGIN_AUTH capability is not supported, no new cipher is\n\t\t// sent and we have to keep using the cipher sent in the init packet.\n\t\tif authData == nil {\n\t\t\tauthData = oldAuthData\n\t\t} else {\n\t\t\t// copy data from read buffer to owned slice\n\t\t\tcopy(oldAuthData, authData)\n\t\t}\n\n\t\tplugin = newPlugin\n\n\t\tauthResp, err := mc.auth(authData, plugin)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif err = mc.writeAuthSwitchPacket(authResp); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Read Result Packet\n\t\tauthData, newPlugin, err = mc.readAuthResult()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Do not allow to change the auth plugin more than once\n\t\tif newPlugin != \"\" {\n\t\t\treturn ErrMalformPkt\n\t\t}\n\t}\n\n\tswitch plugin {\n\n\t// https://dev.mysql.com/blog-archive/preparing-your-community-connector-for-mysql-8-part-2-sha256/\n\tcase \"caching_sha2_password\":\n\t\tswitch len(authData) {\n\t\tcase 0:\n\t\t\treturn nil // auth successful\n\t\tcase 1:\n\t\t\tswitch authData[0] {\n\t\t\tcase cachingSha2PasswordFastAuthSuccess:\n\t\t\t\tif err = mc.resultUnchanged().readResultOK(); err == nil {\n\t\t\t\t\treturn nil // auth successful\n\t\t\t\t}\n\n\t\t\tcase cachingSha2PasswordPerformFullAuthentication:\n\t\t\t\tif mc.cfg.TLS != nil || mc.cfg.Net == \"unix\" {\n\t\t\t\t\t// write cleartext auth packet\n\t\t\t\t\terr = mc.writeAuthSwitchPacket(append([]byte(mc.cfg.Passwd), 0))\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\tpubKey := mc.cfg.pubKey\n\t\t\t\t\tif pubKey == nil {\n\t\t\t\t\t\t// request public key from server\n\t\t\t\t\t\tdata, err := mc.buf.takeSmallBuffer(4 + 1)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata[4] = cachingSha2PasswordRequestPublicKey\n\t\t\t\t\t\terr = mc.writePacket(data)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif data, err = mc.readPacket(); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif data[0] != iAuthMoreData {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"unexpected resp from server for caching_sha2_password, perform full authentication\")\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// parse public key\n\t\t\t\t\t\tblock, rest := pem.Decode(data[1:])\n\t\t\t\t\t\tif block == nil {\n\t\t\t\t\t\t\treturn fmt.Errorf(\"no pem data found, data: %s\", rest)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpkix, err := x509.ParsePKIXPublicKey(block.Bytes)\n\t\t\t\t\t\tif err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpubKey = pkix.(*rsa.PublicKey)\n\t\t\t\t\t}\n\n\t\t\t\t\t// send encrypted password\n\t\t\t\t\terr = mc.sendEncryptedPassword(oldAuthData, pubKey)\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\treturn mc.resultUnchanged().readResultOK()\n\n\t\t\tdefault:\n\t\t\t\treturn ErrMalformPkt\n\t\t\t}\n\t\tdefault:\n\t\t\treturn ErrMalformPkt\n\t\t}\n\n\tcase \"sha256_password\":\n\t\tswitch len(authData) {\n\t\tcase 0:\n\t\t\treturn nil // auth successful\n\t\tdefault:\n\t\t\tblock, _ := pem.Decode(authData)\n\t\t\tif block == nil {\n\t\t\t\treturn fmt.Errorf(\"no Pem data found, data: %s\", authData)\n\t\t\t}\n\n\t\t\tpub, err := x509.ParsePKIXPublicKey(block.Bytes)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\t// send encrypted password\n\t\t\terr = mc.sendEncryptedPassword(oldAuthData, pub.(*rsa.PublicKey))\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn mc.resultUnchanged().readResultOK()\n\t\t}\n\n\tdefault:\n\t\treturn nil // auth successful\n\t}\n\n\treturn err\n}\n"
  },
  {
    "path": "gossh/mysql/buffer.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"io\"\n\t\"net\"\n\t\"time\"\n)\n\nconst defaultBufSize = 4096\nconst maxCachedBufSize = 256 * 1024\n\n// A buffer which is used for both reading and writing.\n// This is possible since communication on each connection is synchronous.\n// In other words, we can't write and read simultaneously on the same connection.\n// The buffer is similar to bufio.Reader / Writer but zero-copy-ish\n// Also highly optimized for this particular use case.\n// This buffer is backed by two byte slices in a double-buffering scheme\ntype buffer struct {\n\tbuf     []byte // buf is a byte buffer who's length and capacity are equal.\n\tnc      net.Conn\n\tidx     int\n\tlength  int\n\ttimeout time.Duration\n\tdbuf    [2][]byte // dbuf is an array with the two byte slices that back this buffer\n\tflipcnt uint      // flipccnt is the current buffer counter for double-buffering\n}\n\n// newBuffer allocates and returns a new buffer.\nfunc newBuffer(nc net.Conn) buffer {\n\tfg := make([]byte, defaultBufSize)\n\treturn buffer{\n\t\tbuf:  fg,\n\t\tnc:   nc,\n\t\tdbuf: [2][]byte{fg, nil},\n\t}\n}\n\n// flip replaces the active buffer with the background buffer\n// this is a delayed flip that simply increases the buffer counter;\n// the actual flip will be performed the next time we call `buffer.fill`\nfunc (b *buffer) flip() {\n\tb.flipcnt += 1\n}\n\n// fill reads into the buffer until at least _need_ bytes are in it\nfunc (b *buffer) fill(need int) error {\n\tn := b.length\n\t// fill data into its double-buffering target: if we've called\n\t// flip on this buffer, we'll be copying to the background buffer,\n\t// and then filling it with network data; otherwise we'll just move\n\t// the contents of the current buffer to the front before filling it\n\tdest := b.dbuf[b.flipcnt&1]\n\n\t// grow buffer if necessary to fit the whole packet.\n\tif need > len(dest) {\n\t\t// Round up to the next multiple of the default size\n\t\tdest = make([]byte, ((need/defaultBufSize)+1)*defaultBufSize)\n\n\t\t// if the allocated buffer is not too large, move it to backing storage\n\t\t// to prevent extra allocations on applications that perform large reads\n\t\tif len(dest) <= maxCachedBufSize {\n\t\t\tb.dbuf[b.flipcnt&1] = dest\n\t\t}\n\t}\n\n\t// if we're filling the fg buffer, move the existing data to the start of it.\n\t// if we're filling the bg buffer, copy over the data\n\tif n > 0 {\n\t\tcopy(dest[:n], b.buf[b.idx:])\n\t}\n\n\tb.buf = dest\n\tb.idx = 0\n\n\tfor {\n\t\tif b.timeout > 0 {\n\t\t\tif err := b.nc.SetReadDeadline(time.Now().Add(b.timeout)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tnn, err := b.nc.Read(b.buf[n:])\n\t\tn += nn\n\n\t\tswitch err {\n\t\tcase nil:\n\t\t\tif n < need {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tb.length = n\n\t\t\treturn nil\n\n\t\tcase io.EOF:\n\t\t\tif n >= need {\n\t\t\t\tb.length = n\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\treturn io.ErrUnexpectedEOF\n\n\t\tdefault:\n\t\t\treturn err\n\t\t}\n\t}\n}\n\n// returns next N bytes from buffer.\n// The returned slice is only guaranteed to be valid until the next read\nfunc (b *buffer) readNext(need int) ([]byte, error) {\n\tif b.length < need {\n\t\t// refill\n\t\tif err := b.fill(need); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\toffset := b.idx\n\tb.idx += need\n\tb.length -= need\n\treturn b.buf[offset:b.idx], nil\n}\n\n// takeBuffer returns a buffer with the requested size.\n// If possible, a slice from the existing buffer is returned.\n// Otherwise a bigger buffer is made.\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeBuffer(length int) ([]byte, error) {\n\tif b.length > 0 {\n\t\treturn nil, ErrBusyBuffer\n\t}\n\n\t// test (cheap) general case first\n\tif length <= cap(b.buf) {\n\t\treturn b.buf[:length], nil\n\t}\n\n\tif length < maxPacketSize {\n\t\tb.buf = make([]byte, length)\n\t\treturn b.buf, nil\n\t}\n\n\t// buffer is larger than we want to store.\n\treturn make([]byte, length), nil\n}\n\n// takeSmallBuffer is shortcut which can be used if length is\n// known to be smaller than defaultBufSize.\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeSmallBuffer(length int) ([]byte, error) {\n\tif b.length > 0 {\n\t\treturn nil, ErrBusyBuffer\n\t}\n\treturn b.buf[:length], nil\n}\n\n// takeCompleteBuffer returns the complete existing buffer.\n// This can be used if the necessary buffer size is unknown.\n// cap and len of the returned buffer will be equal.\n// Only one buffer (total) can be used at a time.\nfunc (b *buffer) takeCompleteBuffer() ([]byte, error) {\n\tif b.length > 0 {\n\t\treturn nil, ErrBusyBuffer\n\t}\n\treturn b.buf, nil\n}\n\n// store stores buf, an updated buffer, if its suitable to do so.\nfunc (b *buffer) store(buf []byte) error {\n\tif b.length > 0 {\n\t\treturn ErrBusyBuffer\n\t} else if cap(buf) <= maxPacketSize && cap(buf) > cap(b.buf) {\n\t\tb.buf = buf[:cap(buf)]\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/mysql/collations.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2014 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nconst defaultCollation = \"utf8mb4_general_ci\"\nconst binaryCollationID = 63\n\n// A list of available collations mapped to the internal ID.\n// To update this map use the following MySQL query:\n//\n//\tSELECT COLLATION_NAME, ID FROM information_schema.COLLATIONS WHERE ID<256 ORDER BY ID\n//\n// Handshake packet have only 1 byte for collation_id.  So we can't use collations with ID > 255.\n//\n// ucs2, utf16, and utf32 can't be used for connection charset.\n// https://dev.mysql.com/doc/refman/5.7/en/charset-connection.html#charset-connection-impermissible-client-charset\n// They are commented out to reduce this map.\nvar collations = map[string]byte{\n\t\"big5_chinese_ci\":      1,\n\t\"latin2_czech_cs\":      2,\n\t\"dec8_swedish_ci\":      3,\n\t\"cp850_general_ci\":     4,\n\t\"latin1_german1_ci\":    5,\n\t\"hp8_english_ci\":       6,\n\t\"koi8r_general_ci\":     7,\n\t\"latin1_swedish_ci\":    8,\n\t\"latin2_general_ci\":    9,\n\t\"swe7_swedish_ci\":      10,\n\t\"ascii_general_ci\":     11,\n\t\"ujis_japanese_ci\":     12,\n\t\"sjis_japanese_ci\":     13,\n\t\"cp1251_bulgarian_ci\":  14,\n\t\"latin1_danish_ci\":     15,\n\t\"hebrew_general_ci\":    16,\n\t\"tis620_thai_ci\":       18,\n\t\"euckr_korean_ci\":      19,\n\t\"latin7_estonian_cs\":   20,\n\t\"latin2_hungarian_ci\":  21,\n\t\"koi8u_general_ci\":     22,\n\t\"cp1251_ukrainian_ci\":  23,\n\t\"gb2312_chinese_ci\":    24,\n\t\"greek_general_ci\":     25,\n\t\"cp1250_general_ci\":    26,\n\t\"latin2_croatian_ci\":   27,\n\t\"gbk_chinese_ci\":       28,\n\t\"cp1257_lithuanian_ci\": 29,\n\t\"latin5_turkish_ci\":    30,\n\t\"latin1_german2_ci\":    31,\n\t\"armscii8_general_ci\":  32,\n\t\"utf8_general_ci\":      33,\n\t\"cp1250_czech_cs\":      34,\n\t//\"ucs2_general_ci\":          35,\n\t\"cp866_general_ci\":    36,\n\t\"keybcs2_general_ci\":  37,\n\t\"macce_general_ci\":    38,\n\t\"macroman_general_ci\": 39,\n\t\"cp852_general_ci\":    40,\n\t\"latin7_general_ci\":   41,\n\t\"latin7_general_cs\":   42,\n\t\"macce_bin\":           43,\n\t\"cp1250_croatian_ci\":  44,\n\t\"utf8mb4_general_ci\":  45,\n\t\"utf8mb4_bin\":         46,\n\t\"latin1_bin\":          47,\n\t\"latin1_general_ci\":   48,\n\t\"latin1_general_cs\":   49,\n\t\"cp1251_bin\":          50,\n\t\"cp1251_general_ci\":   51,\n\t\"cp1251_general_cs\":   52,\n\t\"macroman_bin\":        53,\n\t//\"utf16_general_ci\":         54,\n\t//\"utf16_bin\":                55,\n\t//\"utf16le_general_ci\":       56,\n\t\"cp1256_general_ci\": 57,\n\t\"cp1257_bin\":        58,\n\t\"cp1257_general_ci\": 59,\n\t//\"utf32_general_ci\":         60,\n\t//\"utf32_bin\":                61,\n\t//\"utf16le_bin\":              62,\n\t\"binary\":          63,\n\t\"armscii8_bin\":    64,\n\t\"ascii_bin\":       65,\n\t\"cp1250_bin\":      66,\n\t\"cp1256_bin\":      67,\n\t\"cp866_bin\":       68,\n\t\"dec8_bin\":        69,\n\t\"greek_bin\":       70,\n\t\"hebrew_bin\":      71,\n\t\"hp8_bin\":         72,\n\t\"keybcs2_bin\":     73,\n\t\"koi8r_bin\":       74,\n\t\"koi8u_bin\":       75,\n\t\"utf8_tolower_ci\": 76,\n\t\"latin2_bin\":      77,\n\t\"latin5_bin\":      78,\n\t\"latin7_bin\":      79,\n\t\"cp850_bin\":       80,\n\t\"cp852_bin\":       81,\n\t\"swe7_bin\":        82,\n\t\"utf8_bin\":        83,\n\t\"big5_bin\":        84,\n\t\"euckr_bin\":       85,\n\t\"gb2312_bin\":      86,\n\t\"gbk_bin\":         87,\n\t\"sjis_bin\":        88,\n\t\"tis620_bin\":      89,\n\t//\"ucs2_bin\":                 90,\n\t\"ujis_bin\":            91,\n\t\"geostd8_general_ci\":  92,\n\t\"geostd8_bin\":         93,\n\t\"latin1_spanish_ci\":   94,\n\t\"cp932_japanese_ci\":   95,\n\t\"cp932_bin\":           96,\n\t\"eucjpms_japanese_ci\": 97,\n\t\"eucjpms_bin\":         98,\n\t\"cp1250_polish_ci\":    99,\n\t//\"utf16_unicode_ci\":         101,\n\t//\"utf16_icelandic_ci\":       102,\n\t//\"utf16_latvian_ci\":         103,\n\t//\"utf16_romanian_ci\":        104,\n\t//\"utf16_slovenian_ci\":       105,\n\t//\"utf16_polish_ci\":          106,\n\t//\"utf16_estonian_ci\":        107,\n\t//\"utf16_spanish_ci\":         108,\n\t//\"utf16_swedish_ci\":         109,\n\t//\"utf16_turkish_ci\":         110,\n\t//\"utf16_czech_ci\":           111,\n\t//\"utf16_danish_ci\":          112,\n\t//\"utf16_lithuanian_ci\":      113,\n\t//\"utf16_slovak_ci\":          114,\n\t//\"utf16_spanish2_ci\":        115,\n\t//\"utf16_roman_ci\":           116,\n\t//\"utf16_persian_ci\":         117,\n\t//\"utf16_esperanto_ci\":       118,\n\t//\"utf16_hungarian_ci\":       119,\n\t//\"utf16_sinhala_ci\":         120,\n\t//\"utf16_german2_ci\":         121,\n\t//\"utf16_croatian_ci\":        122,\n\t//\"utf16_unicode_520_ci\":     123,\n\t//\"utf16_vietnamese_ci\":      124,\n\t//\"ucs2_unicode_ci\":          128,\n\t//\"ucs2_icelandic_ci\":        129,\n\t//\"ucs2_latvian_ci\":          130,\n\t//\"ucs2_romanian_ci\":         131,\n\t//\"ucs2_slovenian_ci\":        132,\n\t//\"ucs2_polish_ci\":           133,\n\t//\"ucs2_estonian_ci\":         134,\n\t//\"ucs2_spanish_ci\":          135,\n\t//\"ucs2_swedish_ci\":          136,\n\t//\"ucs2_turkish_ci\":          137,\n\t//\"ucs2_czech_ci\":            138,\n\t//\"ucs2_danish_ci\":           139,\n\t//\"ucs2_lithuanian_ci\":       140,\n\t//\"ucs2_slovak_ci\":           141,\n\t//\"ucs2_spanish2_ci\":         142,\n\t//\"ucs2_roman_ci\":            143,\n\t//\"ucs2_persian_ci\":          144,\n\t//\"ucs2_esperanto_ci\":        145,\n\t//\"ucs2_hungarian_ci\":        146,\n\t//\"ucs2_sinhala_ci\":          147,\n\t//\"ucs2_german2_ci\":          148,\n\t//\"ucs2_croatian_ci\":         149,\n\t//\"ucs2_unicode_520_ci\":      150,\n\t//\"ucs2_vietnamese_ci\":       151,\n\t//\"ucs2_general_mysql500_ci\": 159,\n\t//\"utf32_unicode_ci\":         160,\n\t//\"utf32_icelandic_ci\":       161,\n\t//\"utf32_latvian_ci\":         162,\n\t//\"utf32_romanian_ci\":        163,\n\t//\"utf32_slovenian_ci\":       164,\n\t//\"utf32_polish_ci\":          165,\n\t//\"utf32_estonian_ci\":        166,\n\t//\"utf32_spanish_ci\":         167,\n\t//\"utf32_swedish_ci\":         168,\n\t//\"utf32_turkish_ci\":         169,\n\t//\"utf32_czech_ci\":           170,\n\t//\"utf32_danish_ci\":          171,\n\t//\"utf32_lithuanian_ci\":      172,\n\t//\"utf32_slovak_ci\":          173,\n\t//\"utf32_spanish2_ci\":        174,\n\t//\"utf32_roman_ci\":           175,\n\t//\"utf32_persian_ci\":         176,\n\t//\"utf32_esperanto_ci\":       177,\n\t//\"utf32_hungarian_ci\":       178,\n\t//\"utf32_sinhala_ci\":         179,\n\t//\"utf32_german2_ci\":         180,\n\t//\"utf32_croatian_ci\":        181,\n\t//\"utf32_unicode_520_ci\":     182,\n\t//\"utf32_vietnamese_ci\":      183,\n\t\"utf8_unicode_ci\":          192,\n\t\"utf8_icelandic_ci\":        193,\n\t\"utf8_latvian_ci\":          194,\n\t\"utf8_romanian_ci\":         195,\n\t\"utf8_slovenian_ci\":        196,\n\t\"utf8_polish_ci\":           197,\n\t\"utf8_estonian_ci\":         198,\n\t\"utf8_spanish_ci\":          199,\n\t\"utf8_swedish_ci\":          200,\n\t\"utf8_turkish_ci\":          201,\n\t\"utf8_czech_ci\":            202,\n\t\"utf8_danish_ci\":           203,\n\t\"utf8_lithuanian_ci\":       204,\n\t\"utf8_slovak_ci\":           205,\n\t\"utf8_spanish2_ci\":         206,\n\t\"utf8_roman_ci\":            207,\n\t\"utf8_persian_ci\":          208,\n\t\"utf8_esperanto_ci\":        209,\n\t\"utf8_hungarian_ci\":        210,\n\t\"utf8_sinhala_ci\":          211,\n\t\"utf8_german2_ci\":          212,\n\t\"utf8_croatian_ci\":         213,\n\t\"utf8_unicode_520_ci\":      214,\n\t\"utf8_vietnamese_ci\":       215,\n\t\"utf8_general_mysql500_ci\": 223,\n\t\"utf8mb4_unicode_ci\":       224,\n\t\"utf8mb4_icelandic_ci\":     225,\n\t\"utf8mb4_latvian_ci\":       226,\n\t\"utf8mb4_romanian_ci\":      227,\n\t\"utf8mb4_slovenian_ci\":     228,\n\t\"utf8mb4_polish_ci\":        229,\n\t\"utf8mb4_estonian_ci\":      230,\n\t\"utf8mb4_spanish_ci\":       231,\n\t\"utf8mb4_swedish_ci\":       232,\n\t\"utf8mb4_turkish_ci\":       233,\n\t\"utf8mb4_czech_ci\":         234,\n\t\"utf8mb4_danish_ci\":        235,\n\t\"utf8mb4_lithuanian_ci\":    236,\n\t\"utf8mb4_slovak_ci\":        237,\n\t\"utf8mb4_spanish2_ci\":      238,\n\t\"utf8mb4_roman_ci\":         239,\n\t\"utf8mb4_persian_ci\":       240,\n\t\"utf8mb4_esperanto_ci\":     241,\n\t\"utf8mb4_hungarian_ci\":     242,\n\t\"utf8mb4_sinhala_ci\":       243,\n\t\"utf8mb4_german2_ci\":       244,\n\t\"utf8mb4_croatian_ci\":      245,\n\t\"utf8mb4_unicode_520_ci\":   246,\n\t\"utf8mb4_vietnamese_ci\":    247,\n\t\"gb18030_chinese_ci\":       248,\n\t\"gb18030_bin\":              249,\n\t\"gb18030_unicode_520_ci\":   250,\n\t\"utf8mb4_0900_ai_ci\":       255,\n}\n\n// A denylist of collations which is unsafe to interpolate parameters.\n// These multibyte encodings may contains 0x5c (`\\`) in their trailing bytes.\nvar unsafeCollations = map[string]bool{\n\t\"big5_chinese_ci\":        true,\n\t\"sjis_japanese_ci\":       true,\n\t\"gbk_chinese_ci\":         true,\n\t\"big5_bin\":               true,\n\t\"gb2312_bin\":             true,\n\t\"gbk_bin\":                true,\n\t\"sjis_bin\":               true,\n\t\"cp932_japanese_ci\":      true,\n\t\"cp932_bin\":              true,\n\t\"gb18030_chinese_ci\":     true,\n\t\"gb18030_bin\":            true,\n\t\"gb18030_unicode_520_ci\": true,\n}\n"
  },
  {
    "path": "gossh/mysql/conncheck.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\n//go:build linux || darwin || dragonfly || freebsd || netbsd || openbsd || solaris || illumos\n// +build linux darwin dragonfly freebsd netbsd openbsd solaris illumos\n\npackage mysql\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"syscall\"\n)\n\nvar errUnexpectedRead = errors.New(\"unexpected read from socket\")\n\nfunc connCheck(conn net.Conn) error {\n\tvar sysErr error\n\n\tsysConn, ok := conn.(syscall.Conn)\n\tif !ok {\n\t\treturn nil\n\t}\n\trawConn, err := sysConn.SyscallConn()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = rawConn.Read(func(fd uintptr) bool {\n\t\tvar buf [1]byte\n\t\tn, err := syscall.Read(int(fd), buf[:])\n\t\tswitch {\n\t\tcase n == 0 && err == nil:\n\t\t\tsysErr = io.EOF\n\t\tcase n > 0:\n\t\t\tsysErr = errUnexpectedRead\n\t\tcase err == syscall.EAGAIN || err == syscall.EWOULDBLOCK:\n\t\t\tsysErr = nil\n\t\tdefault:\n\t\t\tsysErr = err\n\t\t}\n\t\treturn true\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn sysErr\n}\n"
  },
  {
    "path": "gossh/mysql/conncheck_dummy.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2019 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\n//go:build !linux && !darwin && !dragonfly && !freebsd && !netbsd && !openbsd && !solaris && !illumos\n// +build !linux,!darwin,!dragonfly,!freebsd,!netbsd,!openbsd,!solaris,!illumos\n\npackage mysql\n\nimport \"net\"\n\nfunc connCheck(conn net.Conn) error {\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/mysql/connection.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\ntype mysqlConn struct {\n\tbuf              buffer\n\tnetConn          net.Conn\n\trawConn          net.Conn    // underlying connection when netConn is TLS connection.\n\tresult           mysqlResult // managed by clearResult() and handleOkPacket().\n\tcfg              *Config\n\tconnector        *connector\n\tmaxAllowedPacket int\n\tmaxWriteSize     int\n\twriteTimeout     time.Duration\n\tflags            clientFlag\n\tstatus           statusFlag\n\tsequence         uint8\n\tparseTime        bool\n\n\t// for context support (Go 1.8+)\n\twatching bool\n\twatcher  chan<- context.Context\n\tclosech  chan struct{}\n\tfinished chan<- struct{}\n\tcanceled atomicError // set non-nil if conn is canceled\n\tclosed   atomicBool  // set when conn is closed, before closech is closed\n}\n\n// Helper function to call per-connection logger.\nfunc (mc *mysqlConn) log(v ...any) {\n\tmc.cfg.Logger.Print(v...)\n}\n\n// Handles parameters set in DSN after the connection is established\nfunc (mc *mysqlConn) handleParams() (err error) {\n\tvar cmdSet strings.Builder\n\n\tfor param, val := range mc.cfg.Params {\n\t\tswitch param {\n\t\t// Charset: character_set_connection, character_set_client, character_set_results\n\t\tcase \"charset\":\n\t\t\tcharsets := strings.Split(val, \",\")\n\t\t\tfor _, cs := range charsets {\n\t\t\t\t// ignore errors here - a charset may not exist\n\t\t\t\tif mc.cfg.Collation != \"\" {\n\t\t\t\t\terr = mc.exec(\"SET NAMES \" + cs + \" COLLATE \" + mc.cfg.Collation)\n\t\t\t\t} else {\n\t\t\t\t\terr = mc.exec(\"SET NAMES \" + cs)\n\t\t\t\t}\n\t\t\t\tif err == nil {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// Other system vars accumulated in a single SET command\n\t\tdefault:\n\t\t\tif cmdSet.Len() == 0 {\n\t\t\t\t// Heuristic: 29 chars for each other key=value to reduce reallocations\n\t\t\t\tcmdSet.Grow(4 + len(param) + 3 + len(val) + 30*(len(mc.cfg.Params)-1))\n\t\t\t\tcmdSet.WriteString(\"SET \")\n\t\t\t} else {\n\t\t\t\tcmdSet.WriteString(\", \")\n\t\t\t}\n\t\t\tcmdSet.WriteString(param)\n\t\t\tcmdSet.WriteString(\" = \")\n\t\t\tcmdSet.WriteString(val)\n\t\t}\n\t}\n\n\tif cmdSet.Len() > 0 {\n\t\terr = mc.exec(cmdSet.String())\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (mc *mysqlConn) markBadConn(err error) error {\n\tif mc == nil {\n\t\treturn err\n\t}\n\tif err != errBadConnNoWrite {\n\t\treturn err\n\t}\n\treturn driver.ErrBadConn\n}\n\nfunc (mc *mysqlConn) Begin() (driver.Tx, error) {\n\treturn mc.begin(false)\n}\n\nfunc (mc *mysqlConn) begin(readOnly bool) (driver.Tx, error) {\n\tif mc.closed.Load() {\n\t\tmc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\tvar q string\n\tif readOnly {\n\t\tq = \"START TRANSACTION READ ONLY\"\n\t} else {\n\t\tq = \"START TRANSACTION\"\n\t}\n\terr := mc.exec(q)\n\tif err == nil {\n\t\treturn &mysqlTx{mc}, err\n\t}\n\treturn nil, mc.markBadConn(err)\n}\n\nfunc (mc *mysqlConn) Close() (err error) {\n\t// Makes Close idempotent\n\tif !mc.closed.Load() {\n\t\terr = mc.writeCommandPacket(comQuit)\n\t}\n\n\tmc.cleanup()\n\tmc.clearResult()\n\treturn\n}\n\n// Closes the network connection and unsets internal variables. Do not call this\n// function after successfully authentication, call Close instead. This function\n// is called before auth or on auth failure because MySQL will have already\n// closed the network connection.\nfunc (mc *mysqlConn) cleanup() {\n\tif mc.closed.Swap(true) {\n\t\treturn\n\t}\n\n\t// Makes cleanup idempotent\n\tclose(mc.closech)\n\tconn := mc.rawConn\n\tif conn == nil {\n\t\treturn\n\t}\n\tif err := conn.Close(); err != nil {\n\t\tmc.log(err)\n\t}\n\t// This function can be called from multiple goroutines.\n\t// So we can not mc.clearResult() here.\n\t// Caller should do it if they are in safe goroutine.\n}\n\nfunc (mc *mysqlConn) error() error {\n\tif mc.closed.Load() {\n\t\tif err := mc.canceled.Value(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn ErrInvalidConn\n\t}\n\treturn nil\n}\n\nfunc (mc *mysqlConn) Prepare(query string) (driver.Stmt, error) {\n\tif mc.closed.Load() {\n\t\tmc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := mc.writeCommandPacketStr(comStmtPrepare, query)\n\tif err != nil {\n\t\t// STMT_PREPARE is safe to retry.  So we can return ErrBadConn here.\n\t\tmc.log(err)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\n\tstmt := &mysqlStmt{\n\t\tmc: mc,\n\t}\n\n\t// Read Result\n\tcolumnCount, err := stmt.readPrepareResultPacket()\n\tif err == nil {\n\t\tif stmt.paramCount > 0 {\n\t\t\tif err = mc.readUntilEOF(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tif columnCount > 0 {\n\t\t\terr = mc.readUntilEOF()\n\t\t}\n\t}\n\n\treturn stmt, err\n}\n\nfunc (mc *mysqlConn) interpolateParams(query string, args []driver.Value) (string, error) {\n\t// Number of ? should be same to len(args)\n\tif strings.Count(query, \"?\") != len(args) {\n\t\treturn \"\", driver.ErrSkip\n\t}\n\n\tbuf, err := mc.buf.takeCompleteBuffer()\n\tif err != nil {\n\t\t// can not take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn \"\", ErrInvalidConn\n\t}\n\tbuf = buf[:0]\n\targPos := 0\n\n\tfor i := 0; i < len(query); i++ {\n\t\tq := strings.IndexByte(query[i:], '?')\n\t\tif q == -1 {\n\t\t\tbuf = append(buf, query[i:]...)\n\t\t\tbreak\n\t\t}\n\t\tbuf = append(buf, query[i:i+q]...)\n\t\ti += q\n\n\t\targ := args[argPos]\n\t\targPos++\n\n\t\tif arg == nil {\n\t\t\tbuf = append(buf, \"NULL\"...)\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch v := arg.(type) {\n\t\tcase int64:\n\t\t\tbuf = strconv.AppendInt(buf, v, 10)\n\t\tcase uint64:\n\t\t\t// Handle uint64 explicitly because our custom ConvertValue emits unsigned values\n\t\t\tbuf = strconv.AppendUint(buf, v, 10)\n\t\tcase float64:\n\t\t\tbuf = strconv.AppendFloat(buf, v, 'g', -1, 64)\n\t\tcase bool:\n\t\t\tif v {\n\t\t\t\tbuf = append(buf, '1')\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, '0')\n\t\t\t}\n\t\tcase time.Time:\n\t\t\tif v.IsZero() {\n\t\t\t\tbuf = append(buf, \"'0000-00-00'\"...)\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, '\\'')\n\t\t\t\tbuf, err = appendDateTime(buf, v.In(mc.cfg.Loc), mc.cfg.timeTruncate)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn \"\", err\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, '\\'')\n\t\t\t}\n\t\tcase json.RawMessage:\n\t\t\tbuf = append(buf, '\\'')\n\t\t\tif mc.status&statusNoBackslashEscapes == 0 {\n\t\t\t\tbuf = escapeBytesBackslash(buf, v)\n\t\t\t} else {\n\t\t\t\tbuf = escapeBytesQuotes(buf, v)\n\t\t\t}\n\t\t\tbuf = append(buf, '\\'')\n\t\tcase []byte:\n\t\t\tif v == nil {\n\t\t\t\tbuf = append(buf, \"NULL\"...)\n\t\t\t} else {\n\t\t\t\tbuf = append(buf, \"_binary'\"...)\n\t\t\t\tif mc.status&statusNoBackslashEscapes == 0 {\n\t\t\t\t\tbuf = escapeBytesBackslash(buf, v)\n\t\t\t\t} else {\n\t\t\t\t\tbuf = escapeBytesQuotes(buf, v)\n\t\t\t\t}\n\t\t\t\tbuf = append(buf, '\\'')\n\t\t\t}\n\t\tcase string:\n\t\t\tbuf = append(buf, '\\'')\n\t\t\tif mc.status&statusNoBackslashEscapes == 0 {\n\t\t\t\tbuf = escapeStringBackslash(buf, v)\n\t\t\t} else {\n\t\t\t\tbuf = escapeStringQuotes(buf, v)\n\t\t\t}\n\t\t\tbuf = append(buf, '\\'')\n\t\tdefault:\n\t\t\treturn \"\", driver.ErrSkip\n\t\t}\n\n\t\tif len(buf)+4 > mc.maxAllowedPacket {\n\t\t\treturn \"\", driver.ErrSkip\n\t\t}\n\t}\n\tif argPos != len(args) {\n\t\treturn \"\", driver.ErrSkip\n\t}\n\treturn string(buf), nil\n}\n\nfunc (mc *mysqlConn) Exec(query string, args []driver.Value) (driver.Result, error) {\n\tif mc.closed.Load() {\n\t\tmc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\tif len(args) != 0 {\n\t\tif !mc.cfg.InterpolateParams {\n\t\t\treturn nil, driver.ErrSkip\n\t\t}\n\t\t// try to interpolate the parameters to save extra roundtrips for preparing and closing a statement\n\t\tprepared, err := mc.interpolateParams(query, args)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery = prepared\n\t}\n\n\terr := mc.exec(query)\n\tif err == nil {\n\t\tcopied := mc.result\n\t\treturn &copied, err\n\t}\n\treturn nil, mc.markBadConn(err)\n}\n\n// Internal function to execute commands\nfunc (mc *mysqlConn) exec(query string) error {\n\thandleOk := mc.clearResult()\n\t// Send command\n\tif err := mc.writeCommandPacketStr(comQuery, query); err != nil {\n\t\treturn mc.markBadConn(err)\n\t}\n\n\t// Read Result\n\tresLen, err := handleOk.readResultSetHeaderPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif resLen > 0 {\n\t\t// columns\n\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// rows\n\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn handleOk.discardResults()\n}\n\nfunc (mc *mysqlConn) Query(query string, args []driver.Value) (driver.Rows, error) {\n\treturn mc.query(query, args)\n}\n\nfunc (mc *mysqlConn) query(query string, args []driver.Value) (*textRows, error) {\n\thandleOk := mc.clearResult()\n\n\tif mc.closed.Load() {\n\t\tmc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\tif len(args) != 0 {\n\t\tif !mc.cfg.InterpolateParams {\n\t\t\treturn nil, driver.ErrSkip\n\t\t}\n\t\t// try client-side prepare to reduce roundtrip\n\t\tprepared, err := mc.interpolateParams(query, args)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tquery = prepared\n\t}\n\t// Send command\n\terr := mc.writeCommandPacketStr(comQuery, query)\n\tif err == nil {\n\t\t// Read Result\n\t\tvar resLen int\n\t\tresLen, err = handleOk.readResultSetHeaderPacket()\n\t\tif err == nil {\n\t\t\trows := new(textRows)\n\t\t\trows.mc = mc\n\n\t\t\tif resLen == 0 {\n\t\t\t\trows.rs.done = true\n\n\t\t\t\tswitch err := rows.NextResultSet(); err {\n\t\t\t\tcase nil, io.EOF:\n\t\t\t\t\treturn rows, nil\n\t\t\t\tdefault:\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Columns\n\t\t\trows.rs.columns, err = mc.readColumns(resLen)\n\t\t\treturn rows, err\n\t\t}\n\t}\n\treturn nil, mc.markBadConn(err)\n}\n\n// Gets the value of the given MySQL System Variable\n// The returned byte slice is only valid until the next read\nfunc (mc *mysqlConn) getSystemVar(name string) ([]byte, error) {\n\t// Send command\n\thandleOk := mc.clearResult()\n\tif err := mc.writeCommandPacketStr(comQuery, \"SELECT @@\"+name); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Read Result\n\tresLen, err := handleOk.readResultSetHeaderPacket()\n\tif err == nil {\n\t\trows := new(textRows)\n\t\trows.mc = mc\n\t\trows.rs.columns = []mysqlField{{fieldType: fieldTypeVarChar}}\n\n\t\tif resLen > 0 {\n\t\t\t// Columns\n\t\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\n\t\tdest := make([]driver.Value, resLen)\n\t\tif err = rows.readRow(dest); err == nil {\n\t\t\treturn dest[0].([]byte), mc.readUntilEOF()\n\t\t}\n\t}\n\treturn nil, err\n}\n\n// finish is called when the query has canceled.\nfunc (mc *mysqlConn) cancel(err error) {\n\tmc.canceled.Set(err)\n\tmc.cleanup()\n}\n\n// finish is called when the query has succeeded.\nfunc (mc *mysqlConn) finish() {\n\tif !mc.watching || mc.finished == nil {\n\t\treturn\n\t}\n\tselect {\n\tcase mc.finished <- struct{}{}:\n\t\tmc.watching = false\n\tcase <-mc.closech:\n\t}\n}\n\n// Ping implements driver.Pinger interface\nfunc (mc *mysqlConn) Ping(ctx context.Context) (err error) {\n\tif mc.closed.Load() {\n\t\tmc.log(ErrInvalidConn)\n\t\treturn driver.ErrBadConn\n\t}\n\n\tif err = mc.watchCancel(ctx); err != nil {\n\t\treturn\n\t}\n\tdefer mc.finish()\n\n\thandleOk := mc.clearResult()\n\tif err = mc.writeCommandPacket(comPing); err != nil {\n\t\treturn mc.markBadConn(err)\n\t}\n\n\treturn handleOk.readResultOK()\n}\n\n// BeginTx implements driver.ConnBeginTx interface\nfunc (mc *mysqlConn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) {\n\tif mc.closed.Load() {\n\t\treturn nil, driver.ErrBadConn\n\t}\n\n\tif err := mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer mc.finish()\n\n\tif sql.IsolationLevel(opts.Isolation) != sql.LevelDefault {\n\t\tlevel, err := mapIsolationLevel(opts.Isolation)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terr = mc.exec(\"SET TRANSACTION ISOLATION LEVEL \" + level)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn mc.begin(opts.ReadOnly)\n}\n\nfunc (mc *mysqlConn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) {\n\tdargs, err := namedValueToValue(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\n\trows, err := mc.query(query, dargs)\n\tif err != nil {\n\t\tmc.finish()\n\t\treturn nil, err\n\t}\n\trows.finish = mc.finish\n\treturn rows, err\n}\n\nfunc (mc *mysqlConn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) {\n\tdargs, err := namedValueToValue(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer mc.finish()\n\n\treturn mc.Exec(query, dargs)\n}\n\nfunc (mc *mysqlConn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) {\n\tif err := mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\n\tstmt, err := mc.Prepare(query)\n\tmc.finish()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tselect {\n\tdefault:\n\tcase <-ctx.Done():\n\t\tstmt.Close()\n\t\treturn nil, ctx.Err()\n\t}\n\treturn stmt, nil\n}\n\nfunc (stmt *mysqlStmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) {\n\tdargs, err := namedValueToValue(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := stmt.mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\n\trows, err := stmt.query(dargs)\n\tif err != nil {\n\t\tstmt.mc.finish()\n\t\treturn nil, err\n\t}\n\trows.finish = stmt.mc.finish\n\treturn rows, err\n}\n\nfunc (stmt *mysqlStmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) {\n\tdargs, err := namedValueToValue(args)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif err := stmt.mc.watchCancel(ctx); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer stmt.mc.finish()\n\n\treturn stmt.Exec(dargs)\n}\n\nfunc (mc *mysqlConn) watchCancel(ctx context.Context) error {\n\tif mc.watching {\n\t\t// Reach here if canceled,\n\t\t// so the connection is already invalid\n\t\tmc.cleanup()\n\t\treturn nil\n\t}\n\t// When ctx is already cancelled, don't watch it.\n\tif err := ctx.Err(); err != nil {\n\t\treturn err\n\t}\n\t// When ctx is not cancellable, don't watch it.\n\tif ctx.Done() == nil {\n\t\treturn nil\n\t}\n\t// When watcher is not alive, can't watch it.\n\tif mc.watcher == nil {\n\t\treturn nil\n\t}\n\n\tmc.watching = true\n\tmc.watcher <- ctx\n\treturn nil\n}\n\nfunc (mc *mysqlConn) startWatcher() {\n\twatcher := make(chan context.Context, 1)\n\tmc.watcher = watcher\n\tfinished := make(chan struct{})\n\tmc.finished = finished\n\tgo func() {\n\t\tfor {\n\t\t\tvar ctx context.Context\n\t\t\tselect {\n\t\t\tcase ctx = <-watcher:\n\t\t\tcase <-mc.closech:\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tselect {\n\t\t\tcase <-ctx.Done():\n\t\t\t\tmc.cancel(ctx.Err())\n\t\t\tcase <-finished:\n\t\t\tcase <-mc.closech:\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n}\n\nfunc (mc *mysqlConn) CheckNamedValue(nv *driver.NamedValue) (err error) {\n\tnv.Value, err = converter{}.ConvertValue(nv.Value)\n\treturn\n}\n\n// ResetSession implements driver.SessionResetter.\n// (From Go 1.10)\nfunc (mc *mysqlConn) ResetSession(ctx context.Context) error {\n\tif mc.closed.Load() {\n\t\treturn driver.ErrBadConn\n\t}\n\n\t// Perform a stale connection check. We only perform this check for\n\t// the first query on a connection that has been checked out of the\n\t// connection pool: a fresh connection from the pool is more likely\n\t// to be stale, and it has not performed any previous writes that\n\t// could cause data corruption, so it's safe to return ErrBadConn\n\t// if the check fails.\n\tif mc.cfg.CheckConnLiveness {\n\t\tconn := mc.netConn\n\t\tif mc.rawConn != nil {\n\t\t\tconn = mc.rawConn\n\t\t}\n\t\tvar err error\n\t\tif mc.cfg.ReadTimeout != 0 {\n\t\t\terr = conn.SetReadDeadline(time.Now().Add(mc.cfg.ReadTimeout))\n\t\t}\n\t\tif err == nil {\n\t\t\terr = connCheck(conn)\n\t\t}\n\t\tif err != nil {\n\t\t\tmc.log(\"closing bad idle connection: \", err)\n\t\t\treturn driver.ErrBadConn\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// IsValid implements driver.Validator interface\n// (From Go 1.15)\nfunc (mc *mysqlConn) IsValid() bool {\n\treturn !mc.closed.Load()\n}\n"
  },
  {
    "path": "gossh/mysql/connector.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2018 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"context\"\n\t\"database/sql/driver\"\n\t\"net\"\n\t\"os\"\n\t\"strconv\"\n\t\"strings\"\n)\n\ntype connector struct {\n\tcfg               *Config // immutable private copy.\n\tencodedAttributes string  // Encoded connection attributes.\n}\n\nfunc encodeConnectionAttributes(cfg *Config) string {\n\tconnAttrsBuf := make([]byte, 0)\n\n\t// default connection attributes\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrClientName)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrClientNameValue)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrOS)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrOSValue)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrPlatform)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrPlatformValue)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrPid)\n\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, strconv.Itoa(os.Getpid()))\n\tserverHost, _, _ := net.SplitHostPort(cfg.Addr)\n\tif serverHost != \"\" {\n\t\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, connAttrServerHost)\n\t\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, serverHost)\n\t}\n\n\t// user-defined connection attributes\n\tfor _, connAttr := range strings.Split(cfg.ConnectionAttributes, \",\") {\n\t\tk, v, found := strings.Cut(connAttr, \":\")\n\t\tif !found {\n\t\t\tcontinue\n\t\t}\n\t\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, k)\n\t\tconnAttrsBuf = appendLengthEncodedString(connAttrsBuf, v)\n\t}\n\n\treturn string(connAttrsBuf)\n}\n\nfunc newConnector(cfg *Config) *connector {\n\tencodedAttributes := encodeConnectionAttributes(cfg)\n\treturn &connector{\n\t\tcfg:               cfg,\n\t\tencodedAttributes: encodedAttributes,\n\t}\n}\n\n// Connect implements driver.Connector interface.\n// Connect returns a connection to the database.\nfunc (c *connector) Connect(ctx context.Context) (driver.Conn, error) {\n\tvar err error\n\n\t// Invoke beforeConnect if present, with a copy of the configuration\n\tcfg := c.cfg\n\tif c.cfg.beforeConnect != nil {\n\t\tcfg = c.cfg.Clone()\n\t\terr = c.cfg.beforeConnect(ctx, cfg)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// New mysqlConn\n\tmc := &mysqlConn{\n\t\tmaxAllowedPacket: maxPacketSize,\n\t\tmaxWriteSize:     maxPacketSize - 1,\n\t\tclosech:          make(chan struct{}),\n\t\tcfg:              cfg,\n\t\tconnector:        c,\n\t}\n\tmc.parseTime = mc.cfg.ParseTime\n\n\t// Connect to Server\n\tdialsLock.RLock()\n\tdial, ok := dials[mc.cfg.Net]\n\tdialsLock.RUnlock()\n\tif ok {\n\t\tdctx := ctx\n\t\tif mc.cfg.Timeout > 0 {\n\t\t\tvar cancel context.CancelFunc\n\t\t\tdctx, cancel = context.WithTimeout(ctx, c.cfg.Timeout)\n\t\t\tdefer cancel()\n\t\t}\n\t\tmc.netConn, err = dial(dctx, mc.cfg.Addr)\n\t} else {\n\t\tnd := net.Dialer{Timeout: mc.cfg.Timeout}\n\t\tmc.netConn, err = nd.DialContext(ctx, mc.cfg.Net, mc.cfg.Addr)\n\t}\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tmc.rawConn = mc.netConn\n\n\t// Enable TCP Keepalives on TCP connections\n\tif tc, ok := mc.netConn.(*net.TCPConn); ok {\n\t\tif err := tc.SetKeepAlive(true); err != nil {\n\t\t\tc.cfg.Logger.Print(err)\n\t\t}\n\t}\n\n\t// Call startWatcher for context support (From Go 1.8)\n\tmc.startWatcher()\n\tif err := mc.watchCancel(ctx); err != nil {\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\tdefer mc.finish()\n\n\tmc.buf = newBuffer(mc.netConn)\n\n\t// Set I/O timeouts\n\tmc.buf.timeout = mc.cfg.ReadTimeout\n\tmc.writeTimeout = mc.cfg.WriteTimeout\n\n\t// Reading Handshake Initialization Packet\n\tauthData, plugin, err := mc.readHandshakePacket()\n\tif err != nil {\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\tif plugin == \"\" {\n\t\tplugin = defaultAuthPlugin\n\t}\n\n\t// Send Client Authentication Packet\n\tauthResp, err := mc.auth(authData, plugin)\n\tif err != nil {\n\t\t// try the default auth plugin, if using the requested plugin failed\n\t\tc.cfg.Logger.Print(\"could not use requested auth plugin '\"+plugin+\"': \", err.Error())\n\t\tplugin = defaultAuthPlugin\n\t\tauthResp, err = mc.auth(authData, plugin)\n\t\tif err != nil {\n\t\t\tmc.cleanup()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif err = mc.writeHandshakeResponsePacket(authResp, plugin); err != nil {\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\t// Handle response to auth packet, switch methods if possible\n\tif err = mc.handleAuthResult(authData, plugin); err != nil {\n\t\t// Authentication failed and MySQL has already closed the connection\n\t\t// (https://dev.mysql.com/doc/internals/en/authentication-fails.html).\n\t\t// Do not send COM_QUIT, just cleanup and return the error.\n\t\tmc.cleanup()\n\t\treturn nil, err\n\t}\n\n\tif mc.cfg.MaxAllowedPacket > 0 {\n\t\tmc.maxAllowedPacket = mc.cfg.MaxAllowedPacket\n\t} else {\n\t\t// Get max allowed packet size\n\t\tmaxap, err := mc.getSystemVar(\"max_allowed_packet\")\n\t\tif err != nil {\n\t\t\tmc.Close()\n\t\t\treturn nil, err\n\t\t}\n\t\tmc.maxAllowedPacket = stringToInt(maxap) - 1\n\t}\n\tif mc.maxAllowedPacket < maxPacketSize {\n\t\tmc.maxWriteSize = mc.maxAllowedPacket\n\t}\n\n\t// Handle DSN Params\n\terr = mc.handleParams()\n\tif err != nil {\n\t\tmc.Close()\n\t\treturn nil, err\n\t}\n\n\treturn mc, nil\n}\n\n// Driver implements driver.Connector interface.\n// Driver returns &MySQLDriver{}.\nfunc (c *connector) Driver() driver.Driver {\n\treturn &MySQLDriver{}\n}\n"
  },
  {
    "path": "gossh/mysql/const.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport \"runtime\"\n\nconst (\n\tdefaultAuthPlugin       = \"mysql_native_password\"\n\tdefaultMaxAllowedPacket = 64 << 20 // 64 MiB. See https://github.com/go-sql-driver/mysql/issues/1355\n\tminProtocolVersion      = 10\n\tmaxPacketSize           = 1<<24 - 1\n\ttimeFormat              = \"2006-01-02 15:04:05.999999\"\n\n\t// Connection attributes\n\t// See https://dev.mysql.com/doc/refman/8.0/en/performance-schema-connection-attribute-tables.html#performance-schema-connection-attributes-available\n\tconnAttrClientName      = \"_client_name\"\n\tconnAttrClientNameValue = \"Go-MySQL-Driver\"\n\tconnAttrOS              = \"_os\"\n\tconnAttrOSValue         = runtime.GOOS\n\tconnAttrPlatform        = \"_platform\"\n\tconnAttrPlatformValue   = runtime.GOARCH\n\tconnAttrPid             = \"_pid\"\n\tconnAttrServerHost      = \"_server_host\"\n)\n\n// MySQL constants documentation:\n// http://dev.mysql.com/doc/internals/en/client-server-protocol.html\n\nconst (\n\tiOK           byte = 0x00\n\tiAuthMoreData byte = 0x01\n\tiLocalInFile  byte = 0xfb\n\tiEOF          byte = 0xfe\n\tiERR          byte = 0xff\n)\n\n// https://dev.mysql.com/doc/internals/en/capability-flags.html#packet-Protocol::CapabilityFlags\ntype clientFlag uint32\n\nconst (\n\tclientLongPassword clientFlag = 1 << iota\n\tclientFoundRows\n\tclientLongFlag\n\tclientConnectWithDB\n\tclientNoSchema\n\tclientCompress\n\tclientODBC\n\tclientLocalFiles\n\tclientIgnoreSpace\n\tclientProtocol41\n\tclientInteractive\n\tclientSSL\n\tclientIgnoreSIGPIPE\n\tclientTransactions\n\tclientReserved\n\tclientSecureConn\n\tclientMultiStatements\n\tclientMultiResults\n\tclientPSMultiResults\n\tclientPluginAuth\n\tclientConnectAttrs\n\tclientPluginAuthLenEncClientData\n\tclientCanHandleExpiredPasswords\n\tclientSessionTrack\n\tclientDeprecateEOF\n)\n\nconst (\n\tcomQuit byte = iota + 1\n\tcomInitDB\n\tcomQuery\n\tcomFieldList\n\tcomCreateDB\n\tcomDropDB\n\tcomRefresh\n\tcomShutdown\n\tcomStatistics\n\tcomProcessInfo\n\tcomConnect\n\tcomProcessKill\n\tcomDebug\n\tcomPing\n\tcomTime\n\tcomDelayedInsert\n\tcomChangeUser\n\tcomBinlogDump\n\tcomTableDump\n\tcomConnectOut\n\tcomRegisterSlave\n\tcomStmtPrepare\n\tcomStmtExecute\n\tcomStmtSendLongData\n\tcomStmtClose\n\tcomStmtReset\n\tcomSetOption\n\tcomStmtFetch\n)\n\n// https://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnType\ntype fieldType byte\n\nconst (\n\tfieldTypeDecimal fieldType = iota\n\tfieldTypeTiny\n\tfieldTypeShort\n\tfieldTypeLong\n\tfieldTypeFloat\n\tfieldTypeDouble\n\tfieldTypeNULL\n\tfieldTypeTimestamp\n\tfieldTypeLongLong\n\tfieldTypeInt24\n\tfieldTypeDate\n\tfieldTypeTime\n\tfieldTypeDateTime\n\tfieldTypeYear\n\tfieldTypeNewDate\n\tfieldTypeVarChar\n\tfieldTypeBit\n)\nconst (\n\tfieldTypeJSON fieldType = iota + 0xf5\n\tfieldTypeNewDecimal\n\tfieldTypeEnum\n\tfieldTypeSet\n\tfieldTypeTinyBLOB\n\tfieldTypeMediumBLOB\n\tfieldTypeLongBLOB\n\tfieldTypeBLOB\n\tfieldTypeVarString\n\tfieldTypeString\n\tfieldTypeGeometry\n)\n\ntype fieldFlag uint16\n\nconst (\n\tflagNotNULL fieldFlag = 1 << iota\n\tflagPriKey\n\tflagUniqueKey\n\tflagMultipleKey\n\tflagBLOB\n\tflagUnsigned\n\tflagZeroFill\n\tflagBinary\n\tflagEnum\n\tflagAutoIncrement\n\tflagTimestamp\n\tflagSet\n\tflagUnknown1\n\tflagUnknown2\n\tflagUnknown3\n\tflagUnknown4\n)\n\n// http://dev.mysql.com/doc/internals/en/status-flags.html\ntype statusFlag uint16\n\nconst (\n\tstatusInTrans statusFlag = 1 << iota\n\tstatusInAutocommit\n\tstatusReserved // Not in documentation\n\tstatusMoreResultsExists\n\tstatusNoGoodIndexUsed\n\tstatusNoIndexUsed\n\tstatusCursorExists\n\tstatusLastRowSent\n\tstatusDbDropped\n\tstatusNoBackslashEscapes\n\tstatusMetadataChanged\n\tstatusQueryWasSlow\n\tstatusPsOutParams\n\tstatusInTransReadonly\n\tstatusSessionStateChanged\n)\n\nconst (\n\tcachingSha2PasswordRequestPublicKey          = 2\n\tcachingSha2PasswordFastAuthSuccess           = 3\n\tcachingSha2PasswordPerformFullAuthentication = 4\n)\n"
  },
  {
    "path": "gossh/mysql/driver.go",
    "content": "// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\n// Package mysql provides a MySQL driver for Go's database/sql package.\n//\n// The driver should be used via the database/sql package:\n//\n//\timport \"database/sql\"\n//\timport _ \"github.com/go-sql-driver/mysql\"\n//\n//\tdb, err := sql.Open(\"mysql\", \"user:password@/dbname\")\n//\n// See https://github.com/go-sql-driver/mysql#usage for details\npackage mysql\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"net\"\n\t\"sync\"\n)\n\n// MySQLDriver is exported to make the driver directly accessible.\n// In general the driver is used via the database/sql package.\ntype MySQLDriver struct{}\n\n// DialFunc is a function which can be used to establish the network connection.\n// Custom dial functions must be registered with RegisterDial\n//\n// Deprecated: users should register a DialContextFunc instead\ntype DialFunc func(addr string) (net.Conn, error)\n\n// DialContextFunc is a function which can be used to establish the network connection.\n// Custom dial functions must be registered with RegisterDialContext\ntype DialContextFunc func(ctx context.Context, addr string) (net.Conn, error)\n\nvar (\n\tdialsLock sync.RWMutex\n\tdials     map[string]DialContextFunc\n)\n\n// RegisterDialContext registers a custom dial function. It can then be used by the\n// network address mynet(addr), where mynet is the registered new network.\n// The current context for the connection and its address is passed to the dial function.\nfunc RegisterDialContext(net string, dial DialContextFunc) {\n\tdialsLock.Lock()\n\tdefer dialsLock.Unlock()\n\tif dials == nil {\n\t\tdials = make(map[string]DialContextFunc)\n\t}\n\tdials[net] = dial\n}\n\n// DeregisterDialContext removes the custom dial function registered with the given net.\nfunc DeregisterDialContext(net string) {\n\tdialsLock.Lock()\n\tdefer dialsLock.Unlock()\n\tif dials != nil {\n\t\tdelete(dials, net)\n\t}\n}\n\n// RegisterDial registers a custom dial function. It can then be used by the\n// network address mynet(addr), where mynet is the registered new network.\n// addr is passed as a parameter to the dial function.\n//\n// Deprecated: users should call RegisterDialContext instead\nfunc RegisterDial(network string, dial DialFunc) {\n\tRegisterDialContext(network, func(_ context.Context, addr string) (net.Conn, error) {\n\t\treturn dial(addr)\n\t})\n}\n\n// Open new Connection.\n// See https://github.com/go-sql-driver/mysql#dsn-data-source-name for how\n// the DSN string is formatted\nfunc (d MySQLDriver) Open(dsn string) (driver.Conn, error) {\n\tcfg, err := ParseDSN(dsn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc := newConnector(cfg)\n\treturn c.Connect(context.Background())\n}\n\n// This variable can be replaced with -ldflags like below:\n// go build \"-ldflags=-X github.com/go-sql-driver/mysql.driverName=custom\"\nvar driverName = \"mysql\"\n\nfunc init() {\n\tif driverName != \"\" {\n\t\tsql.Register(driverName, &MySQLDriver{})\n\t}\n}\n\n// NewConnector returns new driver.Connector.\nfunc NewConnector(cfg *Config) (driver.Connector, error) {\n\tcfg = cfg.Clone()\n\t// normalize the contents of cfg so calls to NewConnector have the same\n\t// behavior as MySQLDriver.OpenConnector\n\tif err := cfg.normalize(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn newConnector(cfg), nil\n}\n\n// OpenConnector implements driver.DriverContext.\nfunc (d MySQLDriver) OpenConnector(dsn string) (driver.Connector, error) {\n\tcfg, err := ParseDSN(dsn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn newConnector(cfg), nil\n}\n"
  },
  {
    "path": "gossh/mysql/dsn.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2016 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/rsa\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math/big\"\n\t\"net\"\n\t\"net/url\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n)\n\nvar (\n\terrInvalidDSNUnescaped       = errors.New(\"invalid DSN: did you forget to escape a param value?\")\n\terrInvalidDSNAddr            = errors.New(\"invalid DSN: network address not terminated (missing closing brace)\")\n\terrInvalidDSNNoSlash         = errors.New(\"invalid DSN: missing the slash separating the database name\")\n\terrInvalidDSNUnsafeCollation = errors.New(\"invalid DSN: interpolateParams can not be used with unsafe collations\")\n)\n\n// Config is a configuration parsed from a DSN string.\n// If a new Config is created instead of being parsed from a DSN string,\n// the NewConfig function should be used, which sets default values.\ntype Config struct {\n\t// non boolean fields\n\n\tUser                 string            // Username\n\tPasswd               string            // Password (requires User)\n\tNet                  string            // Network (e.g. \"tcp\", \"tcp6\", \"unix\". default: \"tcp\")\n\tAddr                 string            // Address (default: \"127.0.0.1:3306\" for \"tcp\" and \"/tmp/mysql.sock\" for \"unix\")\n\tDBName               string            // Database name\n\tParams               map[string]string // Connection parameters\n\tConnectionAttributes string            // Connection Attributes, comma-delimited string of user-defined \"key:value\" pairs\n\tCollation            string            // Connection collation\n\tLoc                  *time.Location    // Location for time.Time values\n\tMaxAllowedPacket     int               // Max packet size allowed\n\tServerPubKey         string            // Server public key name\n\tTLSConfig            string            // TLS configuration name\n\tTLS                  *tls.Config       // TLS configuration, its priority is higher than TLSConfig\n\tTimeout              time.Duration     // Dial timeout\n\tReadTimeout          time.Duration     // I/O read timeout\n\tWriteTimeout         time.Duration     // I/O write timeout\n\tLogger               Logger            // Logger\n\n\t// boolean fields\n\n\tAllowAllFiles            bool // Allow all files to be used with LOAD DATA LOCAL INFILE\n\tAllowCleartextPasswords  bool // Allows the cleartext client side plugin\n\tAllowFallbackToPlaintext bool // Allows fallback to unencrypted connection if server does not support TLS\n\tAllowNativePasswords     bool // Allows the native password authentication method\n\tAllowOldPasswords        bool // Allows the old insecure password method\n\tCheckConnLiveness        bool // Check connections for liveness before using them\n\tClientFoundRows          bool // Return number of matching rows instead of rows changed\n\tColumnsWithAlias         bool // Prepend table alias to column names\n\tInterpolateParams        bool // Interpolate placeholders into query string\n\tMultiStatements          bool // Allow multiple statements in one query\n\tParseTime                bool // Parse time values to time.Time\n\tRejectReadOnly           bool // Reject read-only connections\n\n\t// unexported fields. new options should be come here\n\n\tbeforeConnect func(context.Context, *Config) error // Invoked before a connection is established\n\tpubKey        *rsa.PublicKey                       // Server public key\n\ttimeTruncate  time.Duration                        // Truncate time.Time values to the specified duration\n}\n\n// Functional Options Pattern\n// https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis\ntype Option func(*Config) error\n\n// NewConfig creates a new Config and sets default values.\nfunc NewConfig() *Config {\n\tcfg := &Config{\n\t\tLoc:                  time.UTC,\n\t\tMaxAllowedPacket:     defaultMaxAllowedPacket,\n\t\tLogger:               defaultLogger,\n\t\tAllowNativePasswords: true,\n\t\tCheckConnLiveness:    true,\n\t}\n\n\treturn cfg\n}\n\n// Apply applies the given options to the Config object.\nfunc (c *Config) Apply(opts ...Option) error {\n\tfor _, opt := range opts {\n\t\terr := opt(c)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\n// TimeTruncate sets the time duration to truncate time.Time values in\n// query parameters.\nfunc TimeTruncate(d time.Duration) Option {\n\treturn func(cfg *Config) error {\n\t\tcfg.timeTruncate = d\n\t\treturn nil\n\t}\n}\n\n// BeforeConnect sets the function to be invoked before a connection is established.\nfunc BeforeConnect(fn func(context.Context, *Config) error) Option {\n\treturn func(cfg *Config) error {\n\t\tcfg.beforeConnect = fn\n\t\treturn nil\n\t}\n}\n\nfunc (cfg *Config) Clone() *Config {\n\tcp := *cfg\n\tif cp.TLS != nil {\n\t\tcp.TLS = cfg.TLS.Clone()\n\t}\n\tif len(cp.Params) > 0 {\n\t\tcp.Params = make(map[string]string, len(cfg.Params))\n\t\tfor k, v := range cfg.Params {\n\t\t\tcp.Params[k] = v\n\t\t}\n\t}\n\tif cfg.pubKey != nil {\n\t\tcp.pubKey = &rsa.PublicKey{\n\t\t\tN: new(big.Int).Set(cfg.pubKey.N),\n\t\t\tE: cfg.pubKey.E,\n\t\t}\n\t}\n\treturn &cp\n}\n\nfunc (cfg *Config) normalize() error {\n\tif cfg.InterpolateParams && cfg.Collation != \"\" && unsafeCollations[cfg.Collation] {\n\t\treturn errInvalidDSNUnsafeCollation\n\t}\n\n\t// Set default network if empty\n\tif cfg.Net == \"\" {\n\t\tcfg.Net = \"tcp\"\n\t}\n\n\t// Set default address if empty\n\tif cfg.Addr == \"\" {\n\t\tswitch cfg.Net {\n\t\tcase \"tcp\":\n\t\t\tcfg.Addr = \"127.0.0.1:3306\"\n\t\tcase \"unix\":\n\t\t\tcfg.Addr = \"/tmp/mysql.sock\"\n\t\tdefault:\n\t\t\treturn errors.New(\"default addr for network '\" + cfg.Net + \"' unknown\")\n\t\t}\n\t} else if cfg.Net == \"tcp\" {\n\t\tcfg.Addr = ensureHavePort(cfg.Addr)\n\t}\n\n\tif cfg.TLS == nil {\n\t\tswitch cfg.TLSConfig {\n\t\tcase \"false\", \"\":\n\t\t\t// don't set anything\n\t\tcase \"true\":\n\t\t\tcfg.TLS = &tls.Config{}\n\t\tcase \"skip-verify\":\n\t\t\tcfg.TLS = &tls.Config{InsecureSkipVerify: true}\n\t\tcase \"preferred\":\n\t\t\tcfg.TLS = &tls.Config{InsecureSkipVerify: true}\n\t\t\tcfg.AllowFallbackToPlaintext = true\n\t\tdefault:\n\t\t\tcfg.TLS = getTLSConfigClone(cfg.TLSConfig)\n\t\t\tif cfg.TLS == nil {\n\t\t\t\treturn errors.New(\"invalid value / unknown config name: \" + cfg.TLSConfig)\n\t\t\t}\n\t\t}\n\t}\n\n\tif cfg.TLS != nil && cfg.TLS.ServerName == \"\" && !cfg.TLS.InsecureSkipVerify {\n\t\thost, _, err := net.SplitHostPort(cfg.Addr)\n\t\tif err == nil {\n\t\t\tcfg.TLS.ServerName = host\n\t\t}\n\t}\n\n\tif cfg.ServerPubKey != \"\" {\n\t\tcfg.pubKey = getServerPubKey(cfg.ServerPubKey)\n\t\tif cfg.pubKey == nil {\n\t\t\treturn errors.New(\"invalid value / unknown server pub key name: \" + cfg.ServerPubKey)\n\t\t}\n\t}\n\n\tif cfg.Logger == nil {\n\t\tcfg.Logger = defaultLogger\n\t}\n\n\treturn nil\n}\n\nfunc writeDSNParam(buf *bytes.Buffer, hasParam *bool, name, value string) {\n\tbuf.Grow(1 + len(name) + 1 + len(value))\n\tif !*hasParam {\n\t\t*hasParam = true\n\t\tbuf.WriteByte('?')\n\t} else {\n\t\tbuf.WriteByte('&')\n\t}\n\tbuf.WriteString(name)\n\tbuf.WriteByte('=')\n\tbuf.WriteString(value)\n}\n\n// FormatDSN formats the given Config into a DSN string which can be passed to\n// the driver.\n//\n// Note: use [NewConnector] and [database/sql.OpenDB] to open a connection from a [*Config].\nfunc (cfg *Config) FormatDSN() string {\n\tvar buf bytes.Buffer\n\n\t// [username[:password]@]\n\tif len(cfg.User) > 0 {\n\t\tbuf.WriteString(cfg.User)\n\t\tif len(cfg.Passwd) > 0 {\n\t\t\tbuf.WriteByte(':')\n\t\t\tbuf.WriteString(cfg.Passwd)\n\t\t}\n\t\tbuf.WriteByte('@')\n\t}\n\n\t// [protocol[(address)]]\n\tif len(cfg.Net) > 0 {\n\t\tbuf.WriteString(cfg.Net)\n\t\tif len(cfg.Addr) > 0 {\n\t\t\tbuf.WriteByte('(')\n\t\t\tbuf.WriteString(cfg.Addr)\n\t\t\tbuf.WriteByte(')')\n\t\t}\n\t}\n\n\t// /dbname\n\tbuf.WriteByte('/')\n\tbuf.WriteString(url.PathEscape(cfg.DBName))\n\n\t// [?param1=value1&...&paramN=valueN]\n\thasParam := false\n\n\tif cfg.AllowAllFiles {\n\t\thasParam = true\n\t\tbuf.WriteString(\"?allowAllFiles=true\")\n\t}\n\n\tif cfg.AllowCleartextPasswords {\n\t\twriteDSNParam(&buf, &hasParam, \"allowCleartextPasswords\", \"true\")\n\t}\n\n\tif cfg.AllowFallbackToPlaintext {\n\t\twriteDSNParam(&buf, &hasParam, \"allowFallbackToPlaintext\", \"true\")\n\t}\n\n\tif !cfg.AllowNativePasswords {\n\t\twriteDSNParam(&buf, &hasParam, \"allowNativePasswords\", \"false\")\n\t}\n\n\tif cfg.AllowOldPasswords {\n\t\twriteDSNParam(&buf, &hasParam, \"allowOldPasswords\", \"true\")\n\t}\n\n\tif !cfg.CheckConnLiveness {\n\t\twriteDSNParam(&buf, &hasParam, \"checkConnLiveness\", \"false\")\n\t}\n\n\tif cfg.ClientFoundRows {\n\t\twriteDSNParam(&buf, &hasParam, \"clientFoundRows\", \"true\")\n\t}\n\n\tif col := cfg.Collation; col != \"\" {\n\t\twriteDSNParam(&buf, &hasParam, \"collation\", col)\n\t}\n\n\tif cfg.ColumnsWithAlias {\n\t\twriteDSNParam(&buf, &hasParam, \"columnsWithAlias\", \"true\")\n\t}\n\n\tif cfg.InterpolateParams {\n\t\twriteDSNParam(&buf, &hasParam, \"interpolateParams\", \"true\")\n\t}\n\n\tif cfg.Loc != time.UTC && cfg.Loc != nil {\n\t\twriteDSNParam(&buf, &hasParam, \"loc\", url.QueryEscape(cfg.Loc.String()))\n\t}\n\n\tif cfg.MultiStatements {\n\t\twriteDSNParam(&buf, &hasParam, \"multiStatements\", \"true\")\n\t}\n\n\tif cfg.ParseTime {\n\t\twriteDSNParam(&buf, &hasParam, \"parseTime\", \"true\")\n\t}\n\n\tif cfg.timeTruncate > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"timeTruncate\", cfg.timeTruncate.String())\n\t}\n\n\tif cfg.ReadTimeout > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"readTimeout\", cfg.ReadTimeout.String())\n\t}\n\n\tif cfg.RejectReadOnly {\n\t\twriteDSNParam(&buf, &hasParam, \"rejectReadOnly\", \"true\")\n\t}\n\n\tif len(cfg.ServerPubKey) > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"serverPubKey\", url.QueryEscape(cfg.ServerPubKey))\n\t}\n\n\tif cfg.Timeout > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"timeout\", cfg.Timeout.String())\n\t}\n\n\tif len(cfg.TLSConfig) > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"tls\", url.QueryEscape(cfg.TLSConfig))\n\t}\n\n\tif cfg.WriteTimeout > 0 {\n\t\twriteDSNParam(&buf, &hasParam, \"writeTimeout\", cfg.WriteTimeout.String())\n\t}\n\n\tif cfg.MaxAllowedPacket != defaultMaxAllowedPacket {\n\t\twriteDSNParam(&buf, &hasParam, \"maxAllowedPacket\", strconv.Itoa(cfg.MaxAllowedPacket))\n\t}\n\n\t// other params\n\tif cfg.Params != nil {\n\t\tvar params []string\n\t\tfor param := range cfg.Params {\n\t\t\tparams = append(params, param)\n\t\t}\n\t\tsort.Strings(params)\n\t\tfor _, param := range params {\n\t\t\twriteDSNParam(&buf, &hasParam, param, url.QueryEscape(cfg.Params[param]))\n\t\t}\n\t}\n\n\treturn buf.String()\n}\n\n// ParseDSN parses the DSN string to a Config\nfunc ParseDSN(dsn string) (cfg *Config, err error) {\n\t// New config with some default values\n\tcfg = NewConfig()\n\n\t// [user[:password]@][net[(addr)]]/dbname[?param1=value1&paramN=valueN]\n\t// Find the last '/' (since the password or the net addr might contain a '/')\n\tfoundSlash := false\n\tfor i := len(dsn) - 1; i >= 0; i-- {\n\t\tif dsn[i] == '/' {\n\t\t\tfoundSlash = true\n\t\t\tvar j, k int\n\n\t\t\t// left part is empty if i <= 0\n\t\t\tif i > 0 {\n\t\t\t\t// [username[:password]@][protocol[(address)]]\n\t\t\t\t// Find the last '@' in dsn[:i]\n\t\t\t\tfor j = i; j >= 0; j-- {\n\t\t\t\t\tif dsn[j] == '@' {\n\t\t\t\t\t\t// username[:password]\n\t\t\t\t\t\t// Find the first ':' in dsn[:j]\n\t\t\t\t\t\tfor k = 0; k < j; k++ {\n\t\t\t\t\t\t\tif dsn[k] == ':' {\n\t\t\t\t\t\t\t\tcfg.Passwd = dsn[k+1 : j]\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcfg.User = dsn[:k]\n\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// [protocol[(address)]]\n\t\t\t\t// Find the first '(' in dsn[j+1:i]\n\t\t\t\tfor k = j + 1; k < i; k++ {\n\t\t\t\t\tif dsn[k] == '(' {\n\t\t\t\t\t\t// dsn[i-1] must be == ')' if an address is specified\n\t\t\t\t\t\tif dsn[i-1] != ')' {\n\t\t\t\t\t\t\tif strings.ContainsRune(dsn[k+1:i], ')') {\n\t\t\t\t\t\t\t\treturn nil, errInvalidDSNUnescaped\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn nil, errInvalidDSNAddr\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcfg.Addr = dsn[k+1 : i-1]\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcfg.Net = dsn[j+1 : k]\n\t\t\t}\n\n\t\t\t// dbname[?param1=value1&...&paramN=valueN]\n\t\t\t// Find the first '?' in dsn[i+1:]\n\t\t\tfor j = i + 1; j < len(dsn); j++ {\n\t\t\t\tif dsn[j] == '?' {\n\t\t\t\t\tif err = parseDSNParams(cfg, dsn[j+1:]); err != nil {\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdbname := dsn[i+1 : j]\n\t\t\tif cfg.DBName, err = url.PathUnescape(dbname); err != nil {\n\t\t\t\treturn nil, fmt.Errorf(\"invalid dbname %q: %w\", dbname, err)\n\t\t\t}\n\n\t\t\tbreak\n\t\t}\n\t}\n\n\tif !foundSlash && len(dsn) > 0 {\n\t\treturn nil, errInvalidDSNNoSlash\n\t}\n\n\tif err = cfg.normalize(); err != nil {\n\t\treturn nil, err\n\t}\n\treturn\n}\n\n// parseDSNParams parses the DSN \"query string\"\n// Values must be url.QueryEscape'ed\nfunc parseDSNParams(cfg *Config, params string) (err error) {\n\tfor _, v := range strings.Split(params, \"&\") {\n\t\tkey, value, found := strings.Cut(v, \"=\")\n\t\tif !found {\n\t\t\tcontinue\n\t\t}\n\n\t\t// cfg params\n\t\tswitch key {\n\t\t// Disable INFILE allowlist / enable all files\n\t\tcase \"allowAllFiles\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowAllFiles, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use cleartext authentication mode (MySQL 5.5.10+)\n\t\tcase \"allowCleartextPasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowCleartextPasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Allow fallback to unencrypted connection if server does not support TLS\n\t\tcase \"allowFallbackToPlaintext\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowFallbackToPlaintext, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use native password authentication\n\t\tcase \"allowNativePasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowNativePasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Use old authentication mode (pre MySQL 4.1)\n\t\tcase \"allowOldPasswords\":\n\t\t\tvar isBool bool\n\t\t\tcfg.AllowOldPasswords, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Check connections for Liveness before using them\n\t\tcase \"checkConnLiveness\":\n\t\t\tvar isBool bool\n\t\t\tcfg.CheckConnLiveness, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Switch \"rowsAffected\" mode\n\t\tcase \"clientFoundRows\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ClientFoundRows, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Collation\n\t\tcase \"collation\":\n\t\t\tcfg.Collation = value\n\n\t\tcase \"columnsWithAlias\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ColumnsWithAlias, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Compression\n\t\tcase \"compress\":\n\t\t\treturn errors.New(\"compression not implemented yet\")\n\n\t\t// Enable client side placeholder substitution\n\t\tcase \"interpolateParams\":\n\t\t\tvar isBool bool\n\t\t\tcfg.InterpolateParams, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Time Location\n\t\tcase \"loc\":\n\t\t\tif value, err = url.QueryUnescape(value); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tcfg.Loc, err = time.LoadLocation(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// multiple statements in one query\n\t\tcase \"multiStatements\":\n\t\t\tvar isBool bool\n\t\t\tcfg.MultiStatements, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// time.Time parsing\n\t\tcase \"parseTime\":\n\t\t\tvar isBool bool\n\t\t\tcfg.ParseTime, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// time.Time truncation\n\t\tcase \"timeTruncate\":\n\t\t\tcfg.timeTruncate, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid timeTruncate value: %v, error: %w\", value, err)\n\t\t\t}\n\n\t\t// I/O read Timeout\n\t\tcase \"readTimeout\":\n\t\t\tcfg.ReadTimeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// Reject read-only connections\n\t\tcase \"rejectReadOnly\":\n\t\t\tvar isBool bool\n\t\t\tcfg.RejectReadOnly, isBool = readBool(value)\n\t\t\tif !isBool {\n\t\t\t\treturn errors.New(\"invalid bool value: \" + value)\n\t\t\t}\n\n\t\t// Server public key\n\t\tcase \"serverPubKey\":\n\t\t\tname, err := url.QueryUnescape(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid value for server pub key name: %v\", err)\n\t\t\t}\n\t\t\tcfg.ServerPubKey = name\n\n\t\t// Strict mode\n\t\tcase \"strict\":\n\t\t\tpanic(\"strict mode has been removed. See https://github.com/go-sql-driver/mysql/wiki/strict-mode\")\n\n\t\t// Dial Timeout\n\t\tcase \"timeout\":\n\t\t\tcfg.Timeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// TLS-Encryption\n\t\tcase \"tls\":\n\t\t\tboolValue, isBool := readBool(value)\n\t\t\tif isBool {\n\t\t\t\tif boolValue {\n\t\t\t\t\tcfg.TLSConfig = \"true\"\n\t\t\t\t} else {\n\t\t\t\t\tcfg.TLSConfig = \"false\"\n\t\t\t\t}\n\t\t\t} else if vl := strings.ToLower(value); vl == \"skip-verify\" || vl == \"preferred\" {\n\t\t\t\tcfg.TLSConfig = vl\n\t\t\t} else {\n\t\t\t\tname, err := url.QueryUnescape(value)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn fmt.Errorf(\"invalid value for TLS config name: %v\", err)\n\t\t\t\t}\n\t\t\t\tcfg.TLSConfig = name\n\t\t\t}\n\n\t\t// I/O write Timeout\n\t\tcase \"writeTimeout\":\n\t\t\tcfg.WriteTimeout, err = time.ParseDuration(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\tcase \"maxAllowedPacket\":\n\t\t\tcfg.MaxAllowedPacket, err = strconv.Atoi(value)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t// Connection attributes\n\t\tcase \"connectionAttributes\":\n\t\t\tconnectionAttributes, err := url.QueryUnescape(value)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"invalid connectionAttributes value: %v\", err)\n\t\t\t}\n\t\t\tcfg.ConnectionAttributes = connectionAttributes\n\n\t\tdefault:\n\t\t\t// lazy init\n\t\t\tif cfg.Params == nil {\n\t\t\t\tcfg.Params = make(map[string]string)\n\t\t\t}\n\n\t\t\tif cfg.Params[key], err = url.QueryUnescape(value); err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc ensureHavePort(addr string) string {\n\tif _, _, err := net.SplitHostPort(addr); err != nil {\n\t\treturn net.JoinHostPort(addr, \"3306\")\n\t}\n\treturn addr\n}\n"
  },
  {
    "path": "gossh/mysql/errors.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n)\n\n// Various errors the driver might return. Can change between driver versions.\nvar (\n\tErrInvalidConn       = errors.New(\"invalid connection\")\n\tErrMalformPkt        = errors.New(\"malformed packet\")\n\tErrNoTLS             = errors.New(\"TLS requested but server does not support TLS\")\n\tErrCleartextPassword = errors.New(\"this user requires clear text authentication. If you still want to use it, please add 'allowCleartextPasswords=1' to your DSN\")\n\tErrNativePassword    = errors.New(\"this user requires mysql native password authentication\")\n\tErrOldPassword       = errors.New(\"this user requires old password authentication. If you still want to use it, please add 'allowOldPasswords=1' to your DSN. See also https://github.com/go-sql-driver/mysql/wiki/old_passwords\")\n\tErrUnknownPlugin     = errors.New(\"this authentication plugin is not supported\")\n\tErrOldProtocol       = errors.New(\"MySQL server does not support required protocol 41+\")\n\tErrPktSync           = errors.New(\"commands out of sync. You can't run this command now\")\n\tErrPktSyncMul        = errors.New(\"commands out of sync. Did you run multiple statements at once?\")\n\tErrPktTooLarge       = errors.New(\"packet for query is too large. Try adjusting the `Config.MaxAllowedPacket`\")\n\tErrBusyBuffer        = errors.New(\"busy buffer\")\n\n\t// errBadConnNoWrite is used for connection errors where nothing was sent to the database yet.\n\t// If this happens first in a function starting a database interaction, it should be replaced by driver.ErrBadConn\n\t// to trigger a resend.\n\t// See https://github.com/go-sql-driver/mysql/pull/302\n\terrBadConnNoWrite = errors.New(\"bad connection\")\n)\n\nvar defaultLogger = Logger(log.New(os.Stderr, \"[mysql] \", log.Ldate|log.Ltime|log.Lshortfile))\n\n// Logger is used to log critical error messages.\ntype Logger interface {\n\tPrint(v ...any)\n}\n\n// NopLogger is a nop implementation of the Logger interface.\ntype NopLogger struct{}\n\n// Print implements Logger interface.\nfunc (nl *NopLogger) Print(_ ...any) {}\n\n// SetLogger is used to set the default logger for critical errors.\n// The initial logger is os.Stderr.\nfunc SetLogger(logger Logger) error {\n\tif logger == nil {\n\t\treturn errors.New(\"logger is nil\")\n\t}\n\tdefaultLogger = logger\n\treturn nil\n}\n\n// MySQLError is an error type which represents a single MySQL error\ntype MySQLError struct {\n\tNumber   uint16\n\tSQLState [5]byte\n\tMessage  string\n}\n\nfunc (me *MySQLError) Error() string {\n\tif me.SQLState != [5]byte{} {\n\t\treturn fmt.Sprintf(\"Error %d (%s): %s\", me.Number, me.SQLState, me.Message)\n\t}\n\n\treturn fmt.Sprintf(\"Error %d: %s\", me.Number, me.Message)\n}\n\nfunc (me *MySQLError) Is(err error) bool {\n\tif merr, ok := err.(*MySQLError); ok {\n\t\treturn merr.Number == me.Number\n\t}\n\treturn false\n}\n"
  },
  {
    "path": "gossh/mysql/fields.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2017 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql\"\n\t\"reflect\"\n)\n\nfunc (mf *mysqlField) typeDatabaseName() string {\n\tswitch mf.fieldType {\n\tcase fieldTypeBit:\n\t\treturn \"BIT\"\n\tcase fieldTypeBLOB:\n\t\tif mf.charSet != binaryCollationID {\n\t\t\treturn \"TEXT\"\n\t\t}\n\t\treturn \"BLOB\"\n\tcase fieldTypeDate:\n\t\treturn \"DATE\"\n\tcase fieldTypeDateTime:\n\t\treturn \"DATETIME\"\n\tcase fieldTypeDecimal:\n\t\treturn \"DECIMAL\"\n\tcase fieldTypeDouble:\n\t\treturn \"DOUBLE\"\n\tcase fieldTypeEnum:\n\t\treturn \"ENUM\"\n\tcase fieldTypeFloat:\n\t\treturn \"FLOAT\"\n\tcase fieldTypeGeometry:\n\t\treturn \"GEOMETRY\"\n\tcase fieldTypeInt24:\n\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\treturn \"UNSIGNED MEDIUMINT\"\n\t\t}\n\t\treturn \"MEDIUMINT\"\n\tcase fieldTypeJSON:\n\t\treturn \"JSON\"\n\tcase fieldTypeLong:\n\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\treturn \"UNSIGNED INT\"\n\t\t}\n\t\treturn \"INT\"\n\tcase fieldTypeLongBLOB:\n\t\tif mf.charSet != binaryCollationID {\n\t\t\treturn \"LONGTEXT\"\n\t\t}\n\t\treturn \"LONGBLOB\"\n\tcase fieldTypeLongLong:\n\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\treturn \"UNSIGNED BIGINT\"\n\t\t}\n\t\treturn \"BIGINT\"\n\tcase fieldTypeMediumBLOB:\n\t\tif mf.charSet != binaryCollationID {\n\t\t\treturn \"MEDIUMTEXT\"\n\t\t}\n\t\treturn \"MEDIUMBLOB\"\n\tcase fieldTypeNewDate:\n\t\treturn \"DATE\"\n\tcase fieldTypeNewDecimal:\n\t\treturn \"DECIMAL\"\n\tcase fieldTypeNULL:\n\t\treturn \"NULL\"\n\tcase fieldTypeSet:\n\t\treturn \"SET\"\n\tcase fieldTypeShort:\n\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\treturn \"UNSIGNED SMALLINT\"\n\t\t}\n\t\treturn \"SMALLINT\"\n\tcase fieldTypeString:\n\t\tif mf.flags&flagEnum != 0 {\n\t\t\treturn \"ENUM\"\n\t\t} else if mf.flags&flagSet != 0 {\n\t\t\treturn \"SET\"\n\t\t}\n\t\tif mf.charSet == binaryCollationID {\n\t\t\treturn \"BINARY\"\n\t\t}\n\t\treturn \"CHAR\"\n\tcase fieldTypeTime:\n\t\treturn \"TIME\"\n\tcase fieldTypeTimestamp:\n\t\treturn \"TIMESTAMP\"\n\tcase fieldTypeTiny:\n\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\treturn \"UNSIGNED TINYINT\"\n\t\t}\n\t\treturn \"TINYINT\"\n\tcase fieldTypeTinyBLOB:\n\t\tif mf.charSet != binaryCollationID {\n\t\t\treturn \"TINYTEXT\"\n\t\t}\n\t\treturn \"TINYBLOB\"\n\tcase fieldTypeVarChar:\n\t\tif mf.charSet == binaryCollationID {\n\t\t\treturn \"VARBINARY\"\n\t\t}\n\t\treturn \"VARCHAR\"\n\tcase fieldTypeVarString:\n\t\tif mf.charSet == binaryCollationID {\n\t\t\treturn \"VARBINARY\"\n\t\t}\n\t\treturn \"VARCHAR\"\n\tcase fieldTypeYear:\n\t\treturn \"YEAR\"\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\nvar (\n\tscanTypeFloat32    = reflect.TypeOf(float32(0))\n\tscanTypeFloat64    = reflect.TypeOf(float64(0))\n\tscanTypeInt8       = reflect.TypeOf(int8(0))\n\tscanTypeInt16      = reflect.TypeOf(int16(0))\n\tscanTypeInt32      = reflect.TypeOf(int32(0))\n\tscanTypeInt64      = reflect.TypeOf(int64(0))\n\tscanTypeNullFloat  = reflect.TypeOf(sql.NullFloat64{})\n\tscanTypeNullInt    = reflect.TypeOf(sql.NullInt64{})\n\tscanTypeNullTime   = reflect.TypeOf(sql.NullTime{})\n\tscanTypeUint8      = reflect.TypeOf(uint8(0))\n\tscanTypeUint16     = reflect.TypeOf(uint16(0))\n\tscanTypeUint32     = reflect.TypeOf(uint32(0))\n\tscanTypeUint64     = reflect.TypeOf(uint64(0))\n\tscanTypeString     = reflect.TypeOf(\"\")\n\tscanTypeNullString = reflect.TypeOf(sql.NullString{})\n\tscanTypeBytes      = reflect.TypeOf([]byte{})\n\tscanTypeUnknown    = reflect.TypeOf(new(any))\n)\n\ntype mysqlField struct {\n\ttableName string\n\tname      string\n\tlength    uint32\n\tflags     fieldFlag\n\tfieldType fieldType\n\tdecimals  byte\n\tcharSet   uint8\n}\n\nfunc (mf *mysqlField) scanType() reflect.Type {\n\tswitch mf.fieldType {\n\tcase fieldTypeTiny:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\t\treturn scanTypeUint8\n\t\t\t}\n\t\t\treturn scanTypeInt8\n\t\t}\n\t\treturn scanTypeNullInt\n\n\tcase fieldTypeShort, fieldTypeYear:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\t\treturn scanTypeUint16\n\t\t\t}\n\t\t\treturn scanTypeInt16\n\t\t}\n\t\treturn scanTypeNullInt\n\n\tcase fieldTypeInt24, fieldTypeLong:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\t\treturn scanTypeUint32\n\t\t\t}\n\t\t\treturn scanTypeInt32\n\t\t}\n\t\treturn scanTypeNullInt\n\n\tcase fieldTypeLongLong:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\tif mf.flags&flagUnsigned != 0 {\n\t\t\t\treturn scanTypeUint64\n\t\t\t}\n\t\t\treturn scanTypeInt64\n\t\t}\n\t\treturn scanTypeNullInt\n\n\tcase fieldTypeFloat:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\treturn scanTypeFloat32\n\t\t}\n\t\treturn scanTypeNullFloat\n\n\tcase fieldTypeDouble:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\treturn scanTypeFloat64\n\t\t}\n\t\treturn scanTypeNullFloat\n\n\tcase fieldTypeBit, fieldTypeTinyBLOB, fieldTypeMediumBLOB, fieldTypeLongBLOB,\n\t\tfieldTypeBLOB, fieldTypeVarString, fieldTypeString, fieldTypeGeometry:\n\t\tif mf.charSet == binaryCollationID {\n\t\t\treturn scanTypeBytes\n\t\t}\n\t\tfallthrough\n\tcase fieldTypeDecimal, fieldTypeNewDecimal, fieldTypeVarChar,\n\t\tfieldTypeEnum, fieldTypeSet, fieldTypeJSON, fieldTypeTime:\n\t\tif mf.flags&flagNotNULL != 0 {\n\t\t\treturn scanTypeString\n\t\t}\n\t\treturn scanTypeNullString\n\n\tcase fieldTypeDate, fieldTypeNewDate,\n\t\tfieldTypeTimestamp, fieldTypeDateTime:\n\t\t// NullTime is always returned for more consistent behavior as it can\n\t\t// handle both cases of parseTime regardless if the field is nullable.\n\t\treturn scanTypeNullTime\n\n\tdefault:\n\t\treturn scanTypeUnknown\n\t}\n}\n"
  },
  {
    "path": "gossh/mysql/infile.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n)\n\nvar (\n\tfileRegister       map[string]bool\n\tfileRegisterLock   sync.RWMutex\n\treaderRegister     map[string]func() io.Reader\n\treaderRegisterLock sync.RWMutex\n)\n\n// RegisterLocalFile adds the given file to the file allowlist,\n// so that it can be used by \"LOAD DATA LOCAL INFILE <filepath>\".\n// Alternatively you can allow the use of all local files with\n// the DSN parameter 'allowAllFiles=true'\n//\n//\tfilePath := \"/home/gopher/data.csv\"\n//\tmysql.RegisterLocalFile(filePath)\n//\terr := db.Exec(\"LOAD DATA LOCAL INFILE '\" + filePath + \"' INTO TABLE foo\")\n//\tif err != nil {\n//\t...\nfunc RegisterLocalFile(filePath string) {\n\tfileRegisterLock.Lock()\n\t// lazy map init\n\tif fileRegister == nil {\n\t\tfileRegister = make(map[string]bool)\n\t}\n\n\tfileRegister[strings.Trim(filePath, `\"`)] = true\n\tfileRegisterLock.Unlock()\n}\n\n// DeregisterLocalFile removes the given filepath from the allowlist.\nfunc DeregisterLocalFile(filePath string) {\n\tfileRegisterLock.Lock()\n\tdelete(fileRegister, strings.Trim(filePath, `\"`))\n\tfileRegisterLock.Unlock()\n}\n\n// RegisterReaderHandler registers a handler function which is used\n// to receive a io.Reader.\n// The Reader can be used by \"LOAD DATA LOCAL INFILE Reader::<name>\".\n// If the handler returns a io.ReadCloser Close() is called when the\n// request is finished.\n//\n//\tmysql.RegisterReaderHandler(\"data\", func() io.Reader {\n//\t\tvar csvReader io.Reader // Some Reader that returns CSV data\n//\t\t... // Open Reader here\n//\t\treturn csvReader\n//\t})\n//\terr := db.Exec(\"LOAD DATA LOCAL INFILE 'Reader::data' INTO TABLE foo\")\n//\tif err != nil {\n//\t...\nfunc RegisterReaderHandler(name string, handler func() io.Reader) {\n\treaderRegisterLock.Lock()\n\t// lazy map init\n\tif readerRegister == nil {\n\t\treaderRegister = make(map[string]func() io.Reader)\n\t}\n\n\treaderRegister[name] = handler\n\treaderRegisterLock.Unlock()\n}\n\n// DeregisterReaderHandler removes the ReaderHandler function with\n// the given name from the registry.\nfunc DeregisterReaderHandler(name string) {\n\treaderRegisterLock.Lock()\n\tdelete(readerRegister, name)\n\treaderRegisterLock.Unlock()\n}\n\nfunc deferredClose(err *error, closer io.Closer) {\n\tcloseErr := closer.Close()\n\tif *err == nil {\n\t\t*err = closeErr\n\t}\n}\n\nconst defaultPacketSize = 16 * 1024 // 16KB is small enough for disk readahead and large enough for TCP\n\nfunc (mc *okHandler) handleInFileRequest(name string) (err error) {\n\tvar rdr io.Reader\n\tvar data []byte\n\tpacketSize := defaultPacketSize\n\tif mc.maxWriteSize < packetSize {\n\t\tpacketSize = mc.maxWriteSize\n\t}\n\n\tif idx := strings.Index(name, \"Reader::\"); idx == 0 || (idx > 0 && name[idx-1] == '/') { // io.Reader\n\t\t// The server might return an an absolute path. See issue #355.\n\t\tname = name[idx+8:]\n\n\t\treaderRegisterLock.RLock()\n\t\thandler, inMap := readerRegister[name]\n\t\treaderRegisterLock.RUnlock()\n\n\t\tif inMap {\n\t\t\trdr = handler()\n\t\t\tif rdr != nil {\n\t\t\t\tif cl, ok := rdr.(io.Closer); ok {\n\t\t\t\t\tdefer deferredClose(&err, cl)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\terr = fmt.Errorf(\"reader '%s' is <nil>\", name)\n\t\t\t}\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"reader '%s' is not registered\", name)\n\t\t}\n\t} else { // File\n\t\tname = strings.Trim(name, `\"`)\n\t\tfileRegisterLock.RLock()\n\t\tfr := fileRegister[name]\n\t\tfileRegisterLock.RUnlock()\n\t\tif mc.cfg.AllowAllFiles || fr {\n\t\t\tvar file *os.File\n\t\t\tvar fi os.FileInfo\n\n\t\t\tif file, err = os.Open(name); err == nil {\n\t\t\t\tdefer deferredClose(&err, file)\n\n\t\t\t\t// get file size\n\t\t\t\tif fi, err = file.Stat(); err == nil {\n\t\t\t\t\trdr = file\n\t\t\t\t\tif fileSize := int(fi.Size()); fileSize < packetSize {\n\t\t\t\t\t\tpacketSize = fileSize\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\terr = fmt.Errorf(\"local file '%s' is not registered\", name)\n\t\t}\n\t}\n\n\t// send content packets\n\t// if packetSize == 0, the Reader contains no data\n\tif err == nil && packetSize > 0 {\n\t\tdata := make([]byte, 4+packetSize)\n\t\tvar n int\n\t\tfor err == nil {\n\t\t\tn, err = rdr.Read(data[4:])\n\t\t\tif n > 0 {\n\t\t\t\tif ioErr := mc.conn().writePacket(data[:4+n]); ioErr != nil {\n\t\t\t\t\treturn ioErr\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif err == io.EOF {\n\t\t\terr = nil\n\t\t}\n\t}\n\n\t// send empty packet (termination)\n\tif data == nil {\n\t\tdata = make([]byte, 4)\n\t}\n\tif ioErr := mc.conn().writePacket(data[:4]); ioErr != nil {\n\t\treturn ioErr\n\t}\n\n\t// read OK packet\n\tif err == nil {\n\t\treturn mc.readResultOK()\n\t}\n\n\tmc.conn().readPacket()\n\treturn err\n}\n"
  },
  {
    "path": "gossh/mysql/nulltime.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"time\"\n)\n\n// NullTime represents a time.Time that may be NULL.\n// NullTime implements the Scanner interface so\n// it can be used as a scan destination:\n//\n//\tvar nt NullTime\n//\terr := db.QueryRow(\"SELECT time FROM foo WHERE id=?\", id).Scan(&nt)\n//\t...\n//\tif nt.Valid {\n//\t   // use nt.Time\n//\t} else {\n//\t   // NULL value\n//\t}\n//\n// # This NullTime implementation is not driver-specific\n//\n// Deprecated: NullTime doesn't honor the loc DSN parameter.\n// NullTime.Scan interprets a time as UTC, not the loc DSN parameter.\n// Use sql.NullTime instead.\ntype NullTime sql.NullTime\n\n// Scan implements the Scanner interface.\n// The value type must be time.Time or string / []byte (formatted time-string),\n// otherwise Scan fails.\nfunc (nt *NullTime) Scan(value any) (err error) {\n\tif value == nil {\n\t\tnt.Time, nt.Valid = time.Time{}, false\n\t\treturn\n\t}\n\n\tswitch v := value.(type) {\n\tcase time.Time:\n\t\tnt.Time, nt.Valid = v, true\n\t\treturn\n\tcase []byte:\n\t\tnt.Time, err = parseDateTime(v, time.UTC)\n\t\tnt.Valid = (err == nil)\n\t\treturn\n\tcase string:\n\t\tnt.Time, err = parseDateTime([]byte(v), time.UTC)\n\t\tnt.Valid = (err == nil)\n\t\treturn\n\t}\n\n\tnt.Valid = false\n\treturn fmt.Errorf(\"can't convert %T to time.Time\", value)\n}\n\n// Value implements the driver Valuer interface.\nfunc (nt NullTime) Value() (driver.Value, error) {\n\tif !nt.Valid {\n\t\treturn nil, nil\n\t}\n\treturn nt.Time, nil\n}\n"
  },
  {
    "path": "gossh/mysql/packets.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"bytes\"\n\t\"crypto/tls\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n)\n\n// Packets documentation:\n// http://dev.mysql.com/doc/internals/en/client-server-protocol.html\n\n// Read packet to buffer 'data'\nfunc (mc *mysqlConn) readPacket() ([]byte, error) {\n\tvar prevData []byte\n\tfor {\n\t\t// read packet header\n\t\tdata, err := mc.buf.readNext(4)\n\t\tif err != nil {\n\t\t\tif cerr := mc.canceled.Value(); cerr != nil {\n\t\t\t\treturn nil, cerr\n\t\t\t}\n\t\t\tmc.log(err)\n\t\t\tmc.Close()\n\t\t\treturn nil, ErrInvalidConn\n\t\t}\n\n\t\t// packet length [24 bit]\n\t\tpktLen := int(uint32(data[0]) | uint32(data[1])<<8 | uint32(data[2])<<16)\n\n\t\t// check packet sync [8 bit]\n\t\tif data[3] != mc.sequence {\n\t\t\tmc.Close()\n\t\t\tif data[3] > mc.sequence {\n\t\t\t\treturn nil, ErrPktSyncMul\n\t\t\t}\n\t\t\treturn nil, ErrPktSync\n\t\t}\n\t\tmc.sequence++\n\n\t\t// packets with length 0 terminate a previous packet which is a\n\t\t// multiple of (2^24)-1 bytes long\n\t\tif pktLen == 0 {\n\t\t\t// there was no previous packet\n\t\t\tif prevData == nil {\n\t\t\t\tmc.log(ErrMalformPkt)\n\t\t\t\tmc.Close()\n\t\t\t\treturn nil, ErrInvalidConn\n\t\t\t}\n\n\t\t\treturn prevData, nil\n\t\t}\n\n\t\t// read packet body [pktLen bytes]\n\t\tdata, err = mc.buf.readNext(pktLen)\n\t\tif err != nil {\n\t\t\tif cerr := mc.canceled.Value(); cerr != nil {\n\t\t\t\treturn nil, cerr\n\t\t\t}\n\t\t\tmc.log(err)\n\t\t\tmc.Close()\n\t\t\treturn nil, ErrInvalidConn\n\t\t}\n\n\t\t// return data if this was the last packet\n\t\tif pktLen < maxPacketSize {\n\t\t\t// zero allocations for non-split packets\n\t\t\tif prevData == nil {\n\t\t\t\treturn data, nil\n\t\t\t}\n\n\t\t\treturn append(prevData, data...), nil\n\t\t}\n\n\t\tprevData = append(prevData, data...)\n\t}\n}\n\n// Write packet buffer 'data'\nfunc (mc *mysqlConn) writePacket(data []byte) error {\n\tpktLen := len(data) - 4\n\n\tif pktLen > mc.maxAllowedPacket {\n\t\treturn ErrPktTooLarge\n\t}\n\n\tfor {\n\t\tvar size int\n\t\tif pktLen >= maxPacketSize {\n\t\t\tdata[0] = 0xff\n\t\t\tdata[1] = 0xff\n\t\t\tdata[2] = 0xff\n\t\t\tsize = maxPacketSize\n\t\t} else {\n\t\t\tdata[0] = byte(pktLen)\n\t\t\tdata[1] = byte(pktLen >> 8)\n\t\t\tdata[2] = byte(pktLen >> 16)\n\t\t\tsize = pktLen\n\t\t}\n\t\tdata[3] = mc.sequence\n\n\t\t// Write packet\n\t\tif mc.writeTimeout > 0 {\n\t\t\tif err := mc.netConn.SetWriteDeadline(time.Now().Add(mc.writeTimeout)); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tn, err := mc.netConn.Write(data[:4+size])\n\t\tif err == nil && n == 4+size {\n\t\t\tmc.sequence++\n\t\t\tif size != maxPacketSize {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\tpktLen -= size\n\t\t\tdata = data[size:]\n\t\t\tcontinue\n\t\t}\n\n\t\t// Handle error\n\t\tif err == nil { // n != len(data)\n\t\t\tmc.cleanup()\n\t\t\tmc.log(ErrMalformPkt)\n\t\t} else {\n\t\t\tif cerr := mc.canceled.Value(); cerr != nil {\n\t\t\t\treturn cerr\n\t\t\t}\n\t\t\tif n == 0 && pktLen == len(data)-4 {\n\t\t\t\t// only for the first loop iteration when nothing was written yet\n\t\t\t\treturn errBadConnNoWrite\n\t\t\t}\n\t\t\tmc.cleanup()\n\t\t\tmc.log(err)\n\t\t}\n\t\treturn ErrInvalidConn\n\t}\n}\n\n/******************************************************************************\n*                           Initialization Process                            *\n******************************************************************************/\n\n// Handshake Initialization Packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::Handshake\nfunc (mc *mysqlConn) readHandshakePacket() (data []byte, plugin string, err error) {\n\tdata, err = mc.readPacket()\n\tif err != nil {\n\t\t// for init we can rewrite this to ErrBadConn for sql.Driver to retry, since\n\t\t// in connection initialization we don't risk retrying non-idempotent actions.\n\t\tif err == ErrInvalidConn {\n\t\t\treturn nil, \"\", driver.ErrBadConn\n\t\t}\n\t\treturn\n\t}\n\n\tif data[0] == iERR {\n\t\treturn nil, \"\", mc.handleErrorPacket(data)\n\t}\n\n\t// protocol version [1 byte]\n\tif data[0] < minProtocolVersion {\n\t\treturn nil, \"\", fmt.Errorf(\n\t\t\t\"unsupported protocol version %d. Version %d or higher is required\",\n\t\t\tdata[0],\n\t\t\tminProtocolVersion,\n\t\t)\n\t}\n\n\t// server version [null terminated string]\n\t// connection id [4 bytes]\n\tpos := 1 + bytes.IndexByte(data[1:], 0x00) + 1 + 4\n\n\t// first part of the password cipher [8 bytes]\n\tauthData := data[pos : pos+8]\n\n\t// (filler) always 0x00 [1 byte]\n\tpos += 8 + 1\n\n\t// capability flags (lower 2 bytes) [2 bytes]\n\tmc.flags = clientFlag(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\tif mc.flags&clientProtocol41 == 0 {\n\t\treturn nil, \"\", ErrOldProtocol\n\t}\n\tif mc.flags&clientSSL == 0 && mc.cfg.TLS != nil {\n\t\tif mc.cfg.AllowFallbackToPlaintext {\n\t\t\tmc.cfg.TLS = nil\n\t\t} else {\n\t\t\treturn nil, \"\", ErrNoTLS\n\t\t}\n\t}\n\tpos += 2\n\n\tif len(data) > pos {\n\t\t// character set [1 byte]\n\t\t// status flags [2 bytes]\n\t\t// capability flags (upper 2 bytes) [2 bytes]\n\t\t// length of auth-plugin-data [1 byte]\n\t\t// reserved (all [00]) [10 bytes]\n\t\tpos += 1 + 2 + 2 + 1 + 10\n\n\t\t// second part of the password cipher [minimum 13 bytes],\n\t\t// where len=MAX(13, length of auth-plugin-data - 8)\n\t\t//\n\t\t// The web documentation is ambiguous about the length. However,\n\t\t// according to mysql-5.7/sql/auth/sql_authentication.cc line 538,\n\t\t// the 13th byte is \"\\0 byte, terminating the second part of\n\t\t// a scramble\". So the second part of the password cipher is\n\t\t// a NULL terminated string that's at least 13 bytes with the\n\t\t// last byte being NULL.\n\t\t//\n\t\t// The official Python library uses the fixed length 12\n\t\t// which seems to work but technically could have a hidden bug.\n\t\tauthData = append(authData, data[pos:pos+12]...)\n\t\tpos += 13\n\n\t\t// EOF if version (>= 5.5.7 and < 5.5.10) or (>= 5.6.0 and < 5.6.2)\n\t\t// \\NUL otherwise\n\t\tif end := bytes.IndexByte(data[pos:], 0x00); end != -1 {\n\t\t\tplugin = string(data[pos : pos+end])\n\t\t} else {\n\t\t\tplugin = string(data[pos:])\n\t\t}\n\n\t\t// make a memory safe copy of the cipher slice\n\t\tvar b [20]byte\n\t\tcopy(b[:], authData)\n\t\treturn b[:], plugin, nil\n\t}\n\n\t// make a memory safe copy of the cipher slice\n\tvar b [8]byte\n\tcopy(b[:], authData)\n\treturn b[:], plugin, nil\n}\n\n// Client Authentication Packet\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::HandshakeResponse\nfunc (mc *mysqlConn) writeHandshakeResponsePacket(authResp []byte, plugin string) error {\n\t// Adjust client flags based on server support\n\tclientFlags := clientProtocol41 |\n\t\tclientSecureConn |\n\t\tclientLongPassword |\n\t\tclientTransactions |\n\t\tclientLocalFiles |\n\t\tclientPluginAuth |\n\t\tclientMultiResults |\n\t\tclientConnectAttrs |\n\t\tmc.flags&clientLongFlag\n\n\tif mc.cfg.ClientFoundRows {\n\t\tclientFlags |= clientFoundRows\n\t}\n\n\t// To enable TLS / SSL\n\tif mc.cfg.TLS != nil {\n\t\tclientFlags |= clientSSL\n\t}\n\n\tif mc.cfg.MultiStatements {\n\t\tclientFlags |= clientMultiStatements\n\t}\n\n\t// encode length of the auth plugin data\n\tvar authRespLEIBuf [9]byte\n\tauthRespLen := len(authResp)\n\tauthRespLEI := appendLengthEncodedInteger(authRespLEIBuf[:0], uint64(authRespLen))\n\tif len(authRespLEI) > 1 {\n\t\t// if the length can not be written in 1 byte, it must be written as a\n\t\t// length encoded integer\n\t\tclientFlags |= clientPluginAuthLenEncClientData\n\t}\n\n\tpktLen := 4 + 4 + 1 + 23 + len(mc.cfg.User) + 1 + len(authRespLEI) + len(authResp) + 21 + 1\n\n\t// To specify a db name\n\tif n := len(mc.cfg.DBName); n > 0 {\n\t\tclientFlags |= clientConnectWithDB\n\t\tpktLen += n + 1\n\t}\n\n\t// encode length of the connection attributes\n\tvar connAttrsLEIBuf [9]byte\n\tconnAttrsLen := len(mc.connector.encodedAttributes)\n\tconnAttrsLEI := appendLengthEncodedInteger(connAttrsLEIBuf[:0], uint64(connAttrsLen))\n\tpktLen += len(connAttrsLEI) + len(mc.connector.encodedAttributes)\n\n\t// Calculate packet length and get buffer with that size\n\tdata, err := mc.buf.takeBuffer(pktLen + 4)\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// ClientFlags [32 bit]\n\tdata[4] = byte(clientFlags)\n\tdata[5] = byte(clientFlags >> 8)\n\tdata[6] = byte(clientFlags >> 16)\n\tdata[7] = byte(clientFlags >> 24)\n\n\t// MaxPacketSize [32 bit] (none)\n\tdata[8] = 0x00\n\tdata[9] = 0x00\n\tdata[10] = 0x00\n\tdata[11] = 0x00\n\n\t// Collation ID [1 byte]\n\tcname := mc.cfg.Collation\n\tif cname == \"\" {\n\t\tcname = defaultCollation\n\t}\n\tvar found bool\n\tdata[12], found = collations[cname]\n\tif !found {\n\t\t// Note possibility for false negatives:\n\t\t// could be triggered  although the collation is valid if the\n\t\t// collations map does not contain entries the server supports.\n\t\treturn fmt.Errorf(\"unknown collation: %q\", cname)\n\t}\n\n\t// Filler [23 bytes] (all 0x00)\n\tpos := 13\n\tfor ; pos < 13+23; pos++ {\n\t\tdata[pos] = 0\n\t}\n\n\t// SSL Connection Request Packet\n\t// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::SSLRequest\n\tif mc.cfg.TLS != nil {\n\t\t// Send TLS / SSL request packet\n\t\tif err := mc.writePacket(data[:(4+4+1+23)+4]); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Switch to TLS\n\t\ttlsConn := tls.Client(mc.netConn, mc.cfg.TLS)\n\t\tif err := tlsConn.Handshake(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tmc.netConn = tlsConn\n\t\tmc.buf.nc = tlsConn\n\t}\n\n\t// User [null terminated string]\n\tif len(mc.cfg.User) > 0 {\n\t\tpos += copy(data[pos:], mc.cfg.User)\n\t}\n\tdata[pos] = 0x00\n\tpos++\n\n\t// Auth Data [length encoded integer]\n\tpos += copy(data[pos:], authRespLEI)\n\tpos += copy(data[pos:], authResp)\n\n\t// Databasename [null terminated string]\n\tif len(mc.cfg.DBName) > 0 {\n\t\tpos += copy(data[pos:], mc.cfg.DBName)\n\t\tdata[pos] = 0x00\n\t\tpos++\n\t}\n\n\tpos += copy(data[pos:], plugin)\n\tdata[pos] = 0x00\n\tpos++\n\n\t// Connection Attributes\n\tpos += copy(data[pos:], connAttrsLEI)\n\tpos += copy(data[pos:], []byte(mc.connector.encodedAttributes))\n\n\t// Send Auth packet\n\treturn mc.writePacket(data[:pos])\n}\n\n// http://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::AuthSwitchResponse\nfunc (mc *mysqlConn) writeAuthSwitchPacket(authData []byte) error {\n\tpktLen := 4 + len(authData)\n\tdata, err := mc.buf.takeSmallBuffer(pktLen)\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// Add the auth data [EOF]\n\tcopy(data[4:], authData)\n\treturn mc.writePacket(data)\n}\n\n/******************************************************************************\n*                             Command Packets                                 *\n******************************************************************************/\n\nfunc (mc *mysqlConn) writeCommandPacket(command byte) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tdata, err := mc.buf.takeSmallBuffer(4 + 1)\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\nfunc (mc *mysqlConn) writeCommandPacketStr(command byte, arg string) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tpktLen := 1 + len(arg)\n\tdata, err := mc.buf.takeBuffer(pktLen + 4)\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Add arg\n\tcopy(data[5:], arg)\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\nfunc (mc *mysqlConn) writeCommandPacketUint32(command byte, arg uint32) error {\n\t// Reset Packet Sequence\n\tmc.sequence = 0\n\n\tdata, err := mc.buf.takeSmallBuffer(4 + 1 + 4)\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// Add command byte\n\tdata[4] = command\n\n\t// Add arg [32 bit]\n\tdata[5] = byte(arg)\n\tdata[6] = byte(arg >> 8)\n\tdata[7] = byte(arg >> 16)\n\tdata[8] = byte(arg >> 24)\n\n\t// Send CMD packet\n\treturn mc.writePacket(data)\n}\n\n/******************************************************************************\n*                              Result Packets                                 *\n******************************************************************************/\n\nfunc (mc *mysqlConn) readAuthResult() ([]byte, string, error) {\n\tdata, err := mc.readPacket()\n\tif err != nil {\n\t\treturn nil, \"\", err\n\t}\n\n\t// packet indicator\n\tswitch data[0] {\n\n\tcase iOK:\n\t\t// resultUnchanged, since auth happens before any queries or\n\t\t// commands have been executed.\n\t\treturn nil, \"\", mc.resultUnchanged().handleOkPacket(data)\n\n\tcase iAuthMoreData:\n\t\treturn data[1:], \"\", err\n\n\tcase iEOF:\n\t\tif len(data) == 1 {\n\t\t\t// https://dev.mysql.com/doc/internals/en/connection-phase-packets.html#packet-Protocol::OldAuthSwitchRequest\n\t\t\treturn nil, \"mysql_old_password\", nil\n\t\t}\n\t\tpluginEndIndex := bytes.IndexByte(data, 0x00)\n\t\tif pluginEndIndex < 0 {\n\t\t\treturn nil, \"\", ErrMalformPkt\n\t\t}\n\t\tplugin := string(data[1:pluginEndIndex])\n\t\tauthData := data[pluginEndIndex+1:]\n\t\treturn authData, plugin, nil\n\n\tdefault: // Error otherwise\n\t\treturn nil, \"\", mc.handleErrorPacket(data)\n\t}\n}\n\n// Returns error if Packet is not a 'Result OK'-Packet\nfunc (mc *okHandler) readResultOK() error {\n\tdata, err := mc.conn().readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif data[0] == iOK {\n\t\treturn mc.handleOkPacket(data)\n\t}\n\treturn mc.conn().handleErrorPacket(data)\n}\n\n// Result Set Header Packet\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::Resultset\nfunc (mc *okHandler) readResultSetHeaderPacket() (int, error) {\n\t// handleOkPacket replaces both values; other cases leave the values unchanged.\n\tmc.result.affectedRows = append(mc.result.affectedRows, 0)\n\tmc.result.insertIds = append(mc.result.insertIds, 0)\n\n\tdata, err := mc.conn().readPacket()\n\tif err == nil {\n\t\tswitch data[0] {\n\n\t\tcase iOK:\n\t\t\treturn 0, mc.handleOkPacket(data)\n\n\t\tcase iERR:\n\t\t\treturn 0, mc.conn().handleErrorPacket(data)\n\n\t\tcase iLocalInFile:\n\t\t\treturn 0, mc.handleInFileRequest(string(data[1:]))\n\t\t}\n\n\t\t// column count\n\t\tnum, _, _ := readLengthEncodedInteger(data)\n\t\t// ignore remaining data in the packet. see #1478.\n\t\treturn int(num), nil\n\t}\n\treturn 0, err\n}\n\n// Error Packet\n// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-ERR_Packet\nfunc (mc *mysqlConn) handleErrorPacket(data []byte) error {\n\tif data[0] != iERR {\n\t\treturn ErrMalformPkt\n\t}\n\n\t// 0xff [1 byte]\n\n\t// Error Number [16 bit uint]\n\terrno := binary.LittleEndian.Uint16(data[1:3])\n\n\t// 1792: ER_CANT_EXECUTE_IN_READ_ONLY_TRANSACTION\n\t// 1290: ER_OPTION_PREVENTS_STATEMENT (returned by Aurora during failover)\n\tif (errno == 1792 || errno == 1290) && mc.cfg.RejectReadOnly {\n\t\t// Oops; we are connected to a read-only connection, and won't be able\n\t\t// to issue any write statements. Since RejectReadOnly is configured,\n\t\t// we throw away this connection hoping this one would have write\n\t\t// permission. This is specifically for a possible race condition\n\t\t// during failover (e.g. on AWS Aurora). See README.md for more.\n\t\t//\n\t\t// We explicitly close the connection before returning\n\t\t// driver.ErrBadConn to ensure that `database/sql` purges this\n\t\t// connection and initiates a new one for next statement next time.\n\t\tmc.Close()\n\t\treturn driver.ErrBadConn\n\t}\n\n\tme := &MySQLError{Number: errno}\n\n\tpos := 3\n\n\t// SQL State [optional: # + 5bytes string]\n\tif data[3] == 0x23 {\n\t\tcopy(me.SQLState[:], data[4:4+5])\n\t\tpos = 9\n\t}\n\n\t// Error Message [string]\n\tme.Message = string(data[pos:])\n\n\treturn me\n}\n\nfunc readStatus(b []byte) statusFlag {\n\treturn statusFlag(b[0]) | statusFlag(b[1])<<8\n}\n\n// Returns an instance of okHandler for codepaths where mysqlConn.result doesn't\n// need to be cleared first (e.g. during authentication, or while additional\n// resultsets are being fetched.)\nfunc (mc *mysqlConn) resultUnchanged() *okHandler {\n\treturn (*okHandler)(mc)\n}\n\n// okHandler represents the state of the connection when mysqlConn.result has\n// been prepared for processing of OK packets.\n//\n// To correctly populate mysqlConn.result (updated by handleOkPacket()), all\n// callpaths must either:\n//\n// 1. first clear it using clearResult(), or\n// 2. confirm that they don't need to (by calling resultUnchanged()).\n//\n// Both return an instance of type *okHandler.\ntype okHandler mysqlConn\n\n// Exposes the underlying type's methods.\nfunc (mc *okHandler) conn() *mysqlConn {\n\treturn (*mysqlConn)(mc)\n}\n\n// clearResult clears the connection's stored affectedRows and insertIds\n// fields.\n//\n// It returns a handler that can process OK responses.\nfunc (mc *mysqlConn) clearResult() *okHandler {\n\tmc.result = mysqlResult{}\n\treturn (*okHandler)(mc)\n}\n\n// Ok Packet\n// http://dev.mysql.com/doc/internals/en/generic-response-packets.html#packet-OK_Packet\nfunc (mc *okHandler) handleOkPacket(data []byte) error {\n\tvar n, m int\n\tvar affectedRows, insertId uint64\n\n\t// 0x00 [1 byte]\n\n\t// Affected rows [Length Coded Binary]\n\taffectedRows, _, n = readLengthEncodedInteger(data[1:])\n\n\t// Insert id [Length Coded Binary]\n\tinsertId, _, m = readLengthEncodedInteger(data[1+n:])\n\n\t// Update for the current statement result (only used by\n\t// readResultSetHeaderPacket).\n\tif len(mc.result.affectedRows) > 0 {\n\t\tmc.result.affectedRows[len(mc.result.affectedRows)-1] = int64(affectedRows)\n\t}\n\tif len(mc.result.insertIds) > 0 {\n\t\tmc.result.insertIds[len(mc.result.insertIds)-1] = int64(insertId)\n\t}\n\n\t// server_status [2 bytes]\n\tmc.status = readStatus(data[1+n+m : 1+n+m+2])\n\tif mc.status&statusMoreResultsExists != 0 {\n\t\treturn nil\n\t}\n\n\t// warning count [2 bytes]\n\n\treturn nil\n}\n\n// Read Packets as Field Packets until EOF-Packet or an Error appears\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-Protocol::ColumnDefinition41\nfunc (mc *mysqlConn) readColumns(count int) ([]mysqlField, error) {\n\tcolumns := make([]mysqlField, count)\n\n\tfor i := 0; ; i++ {\n\t\tdata, err := mc.readPacket()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// EOF Packet\n\t\tif data[0] == iEOF && (len(data) == 5 || len(data) == 1) {\n\t\t\tif i == count {\n\t\t\t\treturn columns, nil\n\t\t\t}\n\t\t\treturn nil, fmt.Errorf(\"column count mismatch n:%d len:%d\", count, len(columns))\n\t\t}\n\n\t\t// Catalog\n\t\tpos, err := skipLengthEncodedString(data)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Database [len coded string]\n\t\tn, err := skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpos += n\n\n\t\t// Table [len coded string]\n\t\tif mc.cfg.ColumnsWithAlias {\n\t\t\ttableName, _, n, err := readLengthEncodedString(data[pos:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tpos += n\n\t\t\tcolumns[i].tableName = string(tableName)\n\t\t} else {\n\t\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\tpos += n\n\t\t}\n\n\t\t// Original table [len coded string]\n\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpos += n\n\n\t\t// Name [len coded string]\n\t\tname, _, n, err := readLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tcolumns[i].name = string(name)\n\t\tpos += n\n\n\t\t// Original name [len coded string]\n\t\tn, err = skipLengthEncodedString(data[pos:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tpos += n\n\n\t\t// Filler [uint8]\n\t\tpos++\n\n\t\t// Charset [charset, collation uint8]\n\t\tcolumns[i].charSet = data[pos]\n\t\tpos += 2\n\n\t\t// Length [uint32]\n\t\tcolumns[i].length = binary.LittleEndian.Uint32(data[pos : pos+4])\n\t\tpos += 4\n\n\t\t// Field type [uint8]\n\t\tcolumns[i].fieldType = fieldType(data[pos])\n\t\tpos++\n\n\t\t// Flags [uint16]\n\t\tcolumns[i].flags = fieldFlag(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\t\tpos += 2\n\n\t\t// Decimals [uint8]\n\t\tcolumns[i].decimals = data[pos]\n\t\t//pos++\n\n\t\t// Default value [len coded binary]\n\t\t//if pos < len(data) {\n\t\t//\tdefaultVal, _, err = bytesToLengthCodedBinary(data[pos:])\n\t\t//}\n\t}\n}\n\n// Read Packets as Field Packets until EOF-Packet or an Error appears\n// http://dev.mysql.com/doc/internals/en/com-query-response.html#packet-ProtocolText::ResultsetRow\nfunc (rows *textRows) readRow(dest []driver.Value) error {\n\tmc := rows.mc\n\n\tif rows.rs.done {\n\t\treturn io.EOF\n\t}\n\n\tdata, err := mc.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// EOF Packet\n\tif data[0] == iEOF && len(data) == 5 {\n\t\t// server_status [2 bytes]\n\t\trows.mc.status = readStatus(data[3:])\n\t\trows.rs.done = true\n\t\tif !rows.HasNextResultSet() {\n\t\t\trows.mc = nil\n\t\t}\n\t\treturn io.EOF\n\t}\n\tif data[0] == iERR {\n\t\trows.mc = nil\n\t\treturn mc.handleErrorPacket(data)\n\t}\n\n\t// RowSet Packet\n\tvar (\n\t\tn      int\n\t\tisNull bool\n\t\tpos    int = 0\n\t)\n\n\tfor i := range dest {\n\t\t// Read bytes and convert to string\n\t\tvar buf []byte\n\t\tbuf, isNull, n, err = readLengthEncodedString(data[pos:])\n\t\tpos += n\n\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif isNull {\n\t\t\tdest[i] = nil\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch rows.rs.columns[i].fieldType {\n\t\tcase fieldTypeTimestamp,\n\t\t\tfieldTypeDateTime,\n\t\t\tfieldTypeDate,\n\t\t\tfieldTypeNewDate:\n\t\t\tif mc.parseTime {\n\t\t\t\tdest[i], err = parseDateTime(buf, mc.cfg.Loc)\n\t\t\t} else {\n\t\t\t\tdest[i] = buf\n\t\t\t}\n\n\t\tcase fieldTypeTiny, fieldTypeShort, fieldTypeInt24, fieldTypeYear, fieldTypeLong:\n\t\t\tdest[i], err = strconv.ParseInt(string(buf), 10, 64)\n\n\t\tcase fieldTypeLongLong:\n\t\t\tif rows.rs.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i], err = strconv.ParseUint(string(buf), 10, 64)\n\t\t\t} else {\n\t\t\t\tdest[i], err = strconv.ParseInt(string(buf), 10, 64)\n\t\t\t}\n\n\t\tcase fieldTypeFloat:\n\t\t\tvar d float64\n\t\t\td, err = strconv.ParseFloat(string(buf), 32)\n\t\t\tdest[i] = float32(d)\n\n\t\tcase fieldTypeDouble:\n\t\t\tdest[i], err = strconv.ParseFloat(string(buf), 64)\n\n\t\tdefault:\n\t\t\tdest[i] = buf\n\t\t}\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Reads Packets until EOF-Packet or an Error appears. Returns count of Packets read\nfunc (mc *mysqlConn) readUntilEOF() error {\n\tfor {\n\t\tdata, err := mc.readPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tswitch data[0] {\n\t\tcase iERR:\n\t\t\treturn mc.handleErrorPacket(data)\n\t\tcase iEOF:\n\t\t\tif len(data) == 5 {\n\t\t\t\tmc.status = readStatus(data[3:])\n\t\t\t}\n\t\t\treturn nil\n\t\t}\n\t}\n}\n\n/******************************************************************************\n*                           Prepared Statements                               *\n******************************************************************************/\n\n// Prepare Result Packets\n// http://dev.mysql.com/doc/internals/en/com-stmt-prepare-response.html\nfunc (stmt *mysqlStmt) readPrepareResultPacket() (uint16, error) {\n\tdata, err := stmt.mc.readPacket()\n\tif err == nil {\n\t\t// packet indicator [1 byte]\n\t\tif data[0] != iOK {\n\t\t\treturn 0, stmt.mc.handleErrorPacket(data)\n\t\t}\n\n\t\t// statement id [4 bytes]\n\t\tstmt.id = binary.LittleEndian.Uint32(data[1:5])\n\n\t\t// Column count [16 bit uint]\n\t\tcolumnCount := binary.LittleEndian.Uint16(data[5:7])\n\n\t\t// Param count [16 bit uint]\n\t\tstmt.paramCount = int(binary.LittleEndian.Uint16(data[7:9]))\n\n\t\t// Reserved [8 bit]\n\n\t\t// Warning count [16 bit uint]\n\n\t\treturn columnCount, nil\n\t}\n\treturn 0, err\n}\n\n// http://dev.mysql.com/doc/internals/en/com-stmt-send-long-data.html\nfunc (stmt *mysqlStmt) writeCommandLongData(paramID int, arg []byte) error {\n\tmaxLen := stmt.mc.maxAllowedPacket - 1\n\tpktLen := maxLen\n\n\t// After the header (bytes 0-3) follows before the data:\n\t// 1 byte command\n\t// 4 bytes stmtID\n\t// 2 bytes paramID\n\tconst dataOffset = 1 + 4 + 2\n\n\t// Cannot use the write buffer since\n\t// a) the buffer is too small\n\t// b) it is in use\n\tdata := make([]byte, 4+1+4+2+len(arg))\n\n\tcopy(data[4+dataOffset:], arg)\n\n\tfor argLen := len(arg); argLen > 0; argLen -= pktLen - dataOffset {\n\t\tif dataOffset+argLen < maxLen {\n\t\t\tpktLen = dataOffset + argLen\n\t\t}\n\n\t\tstmt.mc.sequence = 0\n\t\t// Add command byte [1 byte]\n\t\tdata[4] = comStmtSendLongData\n\n\t\t// Add stmtID [32 bit]\n\t\tdata[5] = byte(stmt.id)\n\t\tdata[6] = byte(stmt.id >> 8)\n\t\tdata[7] = byte(stmt.id >> 16)\n\t\tdata[8] = byte(stmt.id >> 24)\n\n\t\t// Add paramID [16 bit]\n\t\tdata[9] = byte(paramID)\n\t\tdata[10] = byte(paramID >> 8)\n\n\t\t// Send CMD packet\n\t\terr := stmt.mc.writePacket(data[:4+pktLen])\n\t\tif err == nil {\n\t\t\tdata = data[pktLen-dataOffset:]\n\t\t\tcontinue\n\t\t}\n\t\treturn err\n\n\t}\n\n\t// Reset Packet Sequence\n\tstmt.mc.sequence = 0\n\treturn nil\n}\n\n// Execute Prepared Statement\n// http://dev.mysql.com/doc/internals/en/com-stmt-execute.html\nfunc (stmt *mysqlStmt) writeExecutePacket(args []driver.Value) error {\n\tif len(args) != stmt.paramCount {\n\t\treturn fmt.Errorf(\n\t\t\t\"argument count mismatch (got: %d; has: %d)\",\n\t\t\tlen(args),\n\t\t\tstmt.paramCount,\n\t\t)\n\t}\n\n\tconst minPktLen = 4 + 1 + 4 + 1 + 4\n\tmc := stmt.mc\n\n\t// Determine threshold dynamically to avoid packet size shortage.\n\tlongDataSize := mc.maxAllowedPacket / (stmt.paramCount + 1)\n\tif longDataSize < 64 {\n\t\tlongDataSize = 64\n\t}\n\n\t// Reset packet-sequence\n\tmc.sequence = 0\n\n\tvar data []byte\n\tvar err error\n\n\tif len(args) == 0 {\n\t\tdata, err = mc.buf.takeBuffer(minPktLen)\n\t} else {\n\t\tdata, err = mc.buf.takeCompleteBuffer()\n\t\t// In this case the len(data) == cap(data) which is used to optimise the flow below.\n\t}\n\tif err != nil {\n\t\t// cannot take the buffer. Something must be wrong with the connection\n\t\tmc.log(err)\n\t\treturn errBadConnNoWrite\n\t}\n\n\t// command [1 byte]\n\tdata[4] = comStmtExecute\n\n\t// statement_id [4 bytes]\n\tdata[5] = byte(stmt.id)\n\tdata[6] = byte(stmt.id >> 8)\n\tdata[7] = byte(stmt.id >> 16)\n\tdata[8] = byte(stmt.id >> 24)\n\n\t// flags (0: CURSOR_TYPE_NO_CURSOR) [1 byte]\n\tdata[9] = 0x00\n\n\t// iteration_count (uint32(1)) [4 bytes]\n\tdata[10] = 0x01\n\tdata[11] = 0x00\n\tdata[12] = 0x00\n\tdata[13] = 0x00\n\n\tif len(args) > 0 {\n\t\tpos := minPktLen\n\n\t\tvar nullMask []byte\n\t\tif maskLen, typesLen := (len(args)+7)/8, 1+2*len(args); pos+maskLen+typesLen >= cap(data) {\n\t\t\t// buffer has to be extended but we don't know by how much so\n\t\t\t// we depend on append after all data with known sizes fit.\n\t\t\t// We stop at that because we deal with a lot of columns here\n\t\t\t// which makes the required allocation size hard to guess.\n\t\t\ttmp := make([]byte, pos+maskLen+typesLen)\n\t\t\tcopy(tmp[:pos], data[:pos])\n\t\t\tdata = tmp\n\t\t\tnullMask = data[pos : pos+maskLen]\n\t\t\t// No need to clean nullMask as make ensures that.\n\t\t\tpos += maskLen\n\t\t} else {\n\t\t\tnullMask = data[pos : pos+maskLen]\n\t\t\tfor i := range nullMask {\n\t\t\t\tnullMask[i] = 0\n\t\t\t}\n\t\t\tpos += maskLen\n\t\t}\n\n\t\t// newParameterBoundFlag 1 [1 byte]\n\t\tdata[pos] = 0x01\n\t\tpos++\n\n\t\t// type of each parameter [len(args)*2 bytes]\n\t\tparamTypes := data[pos:]\n\t\tpos += len(args) * 2\n\n\t\t// value of each parameter [n bytes]\n\t\tparamValues := data[pos:pos]\n\t\tvaluesCap := cap(paramValues)\n\n\t\tfor i, arg := range args {\n\t\t\t// build NULL-bitmap\n\t\t\tif arg == nil {\n\t\t\t\tnullMask[i/8] |= 1 << (uint(i) & 7)\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeNULL)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tif v, ok := arg.(json.RawMessage); ok {\n\t\t\t\targ = []byte(v)\n\t\t\t}\n\t\t\t// cache types and values\n\t\t\tswitch v := arg.(type) {\n\t\t\tcase int64:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeLongLong)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif cap(paramValues)-len(paramValues)-8 >= 0 {\n\t\t\t\t\tparamValues = paramValues[:len(paramValues)+8]\n\t\t\t\t\tbinary.LittleEndian.PutUint64(\n\t\t\t\t\t\tparamValues[len(paramValues)-8:],\n\t\t\t\t\t\tuint64(v),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues,\n\t\t\t\t\t\tuint64ToBytes(uint64(v))...,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\tcase uint64:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeLongLong)\n\t\t\t\tparamTypes[i+i+1] = 0x80 // type is unsigned\n\n\t\t\t\tif cap(paramValues)-len(paramValues)-8 >= 0 {\n\t\t\t\t\tparamValues = paramValues[:len(paramValues)+8]\n\t\t\t\t\tbinary.LittleEndian.PutUint64(\n\t\t\t\t\t\tparamValues[len(paramValues)-8:],\n\t\t\t\t\t\tuint64(v),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues,\n\t\t\t\t\t\tuint64ToBytes(uint64(v))...,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\tcase float64:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeDouble)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif cap(paramValues)-len(paramValues)-8 >= 0 {\n\t\t\t\t\tparamValues = paramValues[:len(paramValues)+8]\n\t\t\t\t\tbinary.LittleEndian.PutUint64(\n\t\t\t\t\t\tparamValues[len(paramValues)-8:],\n\t\t\t\t\t\tmath.Float64bits(v),\n\t\t\t\t\t)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues,\n\t\t\t\t\t\tuint64ToBytes(math.Float64bits(v))...,\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\tcase bool:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeTiny)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif v {\n\t\t\t\t\tparamValues = append(paramValues, 0x01)\n\t\t\t\t} else {\n\t\t\t\t\tparamValues = append(paramValues, 0x00)\n\t\t\t\t}\n\n\t\t\tcase []byte:\n\t\t\t\t// Common case (non-nil value) first\n\t\t\t\tif v != nil {\n\t\t\t\t\tparamTypes[i+i] = byte(fieldTypeString)\n\t\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\t\tif len(v) < longDataSize {\n\t\t\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\t\t\tuint64(len(v)),\n\t\t\t\t\t\t)\n\t\t\t\t\t\tparamValues = append(paramValues, v...)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif err := stmt.writeCommandLongData(i, v); err != nil {\n\t\t\t\t\t\t\treturn err\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Handle []byte(nil) as a NULL value\n\t\t\t\tnullMask[i/8] |= 1 << (uint(i) & 7)\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeNULL)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\tcase string:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeString)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tif len(v) < longDataSize {\n\t\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\t\tuint64(len(v)),\n\t\t\t\t\t)\n\t\t\t\t\tparamValues = append(paramValues, v...)\n\t\t\t\t} else {\n\t\t\t\t\tif err := stmt.writeCommandLongData(i, []byte(v)); err != nil {\n\t\t\t\t\t\treturn err\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tcase time.Time:\n\t\t\t\tparamTypes[i+i] = byte(fieldTypeString)\n\t\t\t\tparamTypes[i+i+1] = 0x00\n\n\t\t\t\tvar a [64]byte\n\t\t\t\tvar b = a[:0]\n\n\t\t\t\tif v.IsZero() {\n\t\t\t\t\tb = append(b, \"0000-00-00\"...)\n\t\t\t\t} else {\n\t\t\t\t\tb, err = appendDateTime(b, v.In(mc.cfg.Loc), mc.cfg.timeTruncate)\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\n\t\t\t\tparamValues = appendLengthEncodedInteger(paramValues,\n\t\t\t\t\tuint64(len(b)),\n\t\t\t\t)\n\t\t\t\tparamValues = append(paramValues, b...)\n\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"cannot convert type: %T\", arg)\n\t\t\t}\n\t\t}\n\n\t\t// Check if param values exceeded the available buffer\n\t\t// In that case we must build the data packet with the new values buffer\n\t\tif valuesCap != cap(paramValues) {\n\t\t\tdata = append(data[:pos], paramValues...)\n\t\t\tif err = mc.buf.store(data); err != nil {\n\t\t\t\tmc.log(err)\n\t\t\t\treturn errBadConnNoWrite\n\t\t\t}\n\t\t}\n\n\t\tpos += len(paramValues)\n\t\tdata = data[:pos]\n\t}\n\n\treturn mc.writePacket(data)\n}\n\n// For each remaining resultset in the stream, discards its rows and updates\n// mc.affectedRows and mc.insertIds.\nfunc (mc *okHandler) discardResults() error {\n\tfor mc.status&statusMoreResultsExists != 0 {\n\t\tresLen, err := mc.readResultSetHeaderPacket()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif resLen > 0 {\n\t\t\t// columns\n\t\t\tif err := mc.conn().readUntilEOF(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\t// rows\n\t\t\tif err := mc.conn().readUntilEOF(); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// http://dev.mysql.com/doc/internals/en/binary-protocol-resultset-row.html\nfunc (rows *binaryRows) readRow(dest []driver.Value) error {\n\tdata, err := rows.mc.readPacket()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// packet indicator [1 byte]\n\tif data[0] != iOK {\n\t\t// EOF Packet\n\t\tif data[0] == iEOF && len(data) == 5 {\n\t\t\trows.mc.status = readStatus(data[3:])\n\t\t\trows.rs.done = true\n\t\t\tif !rows.HasNextResultSet() {\n\t\t\t\trows.mc = nil\n\t\t\t}\n\t\t\treturn io.EOF\n\t\t}\n\t\tmc := rows.mc\n\t\trows.mc = nil\n\n\t\t// Error otherwise\n\t\treturn mc.handleErrorPacket(data)\n\t}\n\n\t// NULL-bitmap,  [(column-count + 7 + 2) / 8 bytes]\n\tpos := 1 + (len(dest)+7+2)>>3\n\tnullMask := data[1:pos]\n\n\tfor i := range dest {\n\t\t// Field is NULL\n\t\t// (byte >> bit-pos) % 2 == 1\n\t\tif ((nullMask[(i+2)>>3] >> uint((i+2)&7)) & 1) == 1 {\n\t\t\tdest[i] = nil\n\t\t\tcontinue\n\t\t}\n\n\t\t// Convert to byte-coded string\n\t\tswitch rows.rs.columns[i].fieldType {\n\t\tcase fieldTypeNULL:\n\t\t\tdest[i] = nil\n\t\t\tcontinue\n\n\t\t// Numeric Types\n\t\tcase fieldTypeTiny:\n\t\t\tif rows.rs.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(data[pos])\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int8(data[pos]))\n\t\t\t}\n\t\t\tpos++\n\t\t\tcontinue\n\n\t\tcase fieldTypeShort, fieldTypeYear:\n\t\t\tif rows.rs.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint16(data[pos : pos+2]))\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int16(binary.LittleEndian.Uint16(data[pos : pos+2])))\n\t\t\t}\n\t\t\tpos += 2\n\t\t\tcontinue\n\n\t\tcase fieldTypeInt24, fieldTypeLong:\n\t\t\tif rows.rs.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint32(data[pos : pos+4]))\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(int32(binary.LittleEndian.Uint32(data[pos : pos+4])))\n\t\t\t}\n\t\t\tpos += 4\n\t\t\tcontinue\n\n\t\tcase fieldTypeLongLong:\n\t\t\tif rows.rs.columns[i].flags&flagUnsigned != 0 {\n\t\t\t\tval := binary.LittleEndian.Uint64(data[pos : pos+8])\n\t\t\t\tif val > math.MaxInt64 {\n\t\t\t\t\tdest[i] = uint64ToString(val)\n\t\t\t\t} else {\n\t\t\t\t\tdest[i] = int64(val)\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdest[i] = int64(binary.LittleEndian.Uint64(data[pos : pos+8]))\n\t\t\t}\n\t\t\tpos += 8\n\t\t\tcontinue\n\n\t\tcase fieldTypeFloat:\n\t\t\tdest[i] = math.Float32frombits(binary.LittleEndian.Uint32(data[pos : pos+4]))\n\t\t\tpos += 4\n\t\t\tcontinue\n\n\t\tcase fieldTypeDouble:\n\t\t\tdest[i] = math.Float64frombits(binary.LittleEndian.Uint64(data[pos : pos+8]))\n\t\t\tpos += 8\n\t\t\tcontinue\n\n\t\t// Length coded Binary Strings\n\t\tcase fieldTypeDecimal, fieldTypeNewDecimal, fieldTypeVarChar,\n\t\t\tfieldTypeBit, fieldTypeEnum, fieldTypeSet, fieldTypeTinyBLOB,\n\t\t\tfieldTypeMediumBLOB, fieldTypeLongBLOB, fieldTypeBLOB,\n\t\t\tfieldTypeVarString, fieldTypeString, fieldTypeGeometry, fieldTypeJSON:\n\t\t\tvar isNull bool\n\t\t\tvar n int\n\t\t\tdest[i], isNull, n, err = readLengthEncodedString(data[pos:])\n\t\t\tpos += n\n\t\t\tif err == nil {\n\t\t\t\tif !isNull {\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\tdest[i] = nil\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn err\n\n\t\tcase\n\t\t\tfieldTypeDate, fieldTypeNewDate, // Date YYYY-MM-DD\n\t\t\tfieldTypeTime,                         // Time [-][H]HH:MM:SS[.fractal]\n\t\t\tfieldTypeTimestamp, fieldTypeDateTime: // Timestamp YYYY-MM-DD HH:MM:SS[.fractal]\n\n\t\t\tnum, isNull, n := readLengthEncodedInteger(data[pos:])\n\t\t\tpos += n\n\n\t\t\tswitch {\n\t\t\tcase isNull:\n\t\t\t\tdest[i] = nil\n\t\t\t\tcontinue\n\t\t\tcase rows.rs.columns[i].fieldType == fieldTypeTime:\n\t\t\t\t// database/sql does not support an equivalent to TIME, return a string\n\t\t\t\tvar dstlen uint8\n\t\t\t\tswitch decimals := rows.rs.columns[i].decimals; decimals {\n\t\t\t\tcase 0x00, 0x1f:\n\t\t\t\t\tdstlen = 8\n\t\t\t\tcase 1, 2, 3, 4, 5, 6:\n\t\t\t\t\tdstlen = 8 + 1 + decimals\n\t\t\t\tdefault:\n\t\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\t\"protocol error, illegal decimals value %d\",\n\t\t\t\t\t\trows.rs.columns[i].decimals,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tdest[i], err = formatBinaryTime(data[pos:pos+int(num)], dstlen)\n\t\t\tcase rows.mc.parseTime:\n\t\t\t\tdest[i], err = parseBinaryDateTime(num, data[pos:], rows.mc.cfg.Loc)\n\t\t\tdefault:\n\t\t\t\tvar dstlen uint8\n\t\t\t\tif rows.rs.columns[i].fieldType == fieldTypeDate {\n\t\t\t\t\tdstlen = 10\n\t\t\t\t} else {\n\t\t\t\t\tswitch decimals := rows.rs.columns[i].decimals; decimals {\n\t\t\t\t\tcase 0x00, 0x1f:\n\t\t\t\t\t\tdstlen = 19\n\t\t\t\t\tcase 1, 2, 3, 4, 5, 6:\n\t\t\t\t\t\tdstlen = 19 + 1 + decimals\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn fmt.Errorf(\n\t\t\t\t\t\t\t\"protocol error, illegal decimals value %d\",\n\t\t\t\t\t\t\trows.rs.columns[i].decimals,\n\t\t\t\t\t\t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdest[i], err = formatBinaryDateTime(data[pos:pos+int(num)], dstlen)\n\t\t\t}\n\n\t\t\tif err == nil {\n\t\t\t\tpos += int(num)\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t// Please report if this happens!\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unknown field type %d\", rows.rs.columns[i].fieldType)\n\t\t}\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/mysql/result.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport \"database/sql/driver\"\n\n// Result exposes data not available through *connection.Result.\n//\n// This is accessible by executing statements using sql.Conn.Raw() and\n// downcasting the returned result:\n//\n//\tres, err := rawConn.Exec(...)\n//\tres.(mysql.Result).AllRowsAffected()\ntype Result interface {\n\tdriver.Result\n\t// AllRowsAffected returns a slice containing the affected rows for each\n\t// executed statement.\n\tAllRowsAffected() []int64\n\t// AllLastInsertIds returns a slice containing the last inserted ID for each\n\t// executed statement.\n\tAllLastInsertIds() []int64\n}\n\ntype mysqlResult struct {\n\t// One entry in both slices is created for every executed statement result.\n\taffectedRows []int64\n\tinsertIds    []int64\n}\n\nfunc (res *mysqlResult) LastInsertId() (int64, error) {\n\treturn res.insertIds[len(res.insertIds)-1], nil\n}\n\nfunc (res *mysqlResult) RowsAffected() (int64, error) {\n\treturn res.affectedRows[len(res.affectedRows)-1], nil\n}\n\nfunc (res *mysqlResult) AllLastInsertIds() []int64 {\n\treturn append([]int64{}, res.insertIds...) // defensive copy\n}\n\nfunc (res *mysqlResult) AllRowsAffected() []int64 {\n\treturn append([]int64{}, res.affectedRows...) // defensive copy\n}\n"
  },
  {
    "path": "gossh/mysql/rows.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n)\n\ntype resultSet struct {\n\tcolumns     []mysqlField\n\tcolumnNames []string\n\tdone        bool\n}\n\ntype mysqlRows struct {\n\tmc     *mysqlConn\n\trs     resultSet\n\tfinish func()\n}\n\ntype binaryRows struct {\n\tmysqlRows\n}\n\ntype textRows struct {\n\tmysqlRows\n}\n\nfunc (rows *mysqlRows) Columns() []string {\n\tif rows.rs.columnNames != nil {\n\t\treturn rows.rs.columnNames\n\t}\n\n\tcolumns := make([]string, len(rows.rs.columns))\n\tif rows.mc != nil && rows.mc.cfg.ColumnsWithAlias {\n\t\tfor i := range columns {\n\t\t\tif tableName := rows.rs.columns[i].tableName; len(tableName) > 0 {\n\t\t\t\tcolumns[i] = tableName + \".\" + rows.rs.columns[i].name\n\t\t\t} else {\n\t\t\t\tcolumns[i] = rows.rs.columns[i].name\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor i := range columns {\n\t\t\tcolumns[i] = rows.rs.columns[i].name\n\t\t}\n\t}\n\n\trows.rs.columnNames = columns\n\treturn columns\n}\n\nfunc (rows *mysqlRows) ColumnTypeDatabaseTypeName(i int) string {\n\treturn rows.rs.columns[i].typeDatabaseName()\n}\n\n// func (rows *mysqlRows) ColumnTypeLength(i int) (length int64, ok bool) {\n// \treturn int64(rows.rs.columns[i].length), true\n// }\n\nfunc (rows *mysqlRows) ColumnTypeNullable(i int) (nullable, ok bool) {\n\treturn rows.rs.columns[i].flags&flagNotNULL == 0, true\n}\n\nfunc (rows *mysqlRows) ColumnTypePrecisionScale(i int) (int64, int64, bool) {\n\tcolumn := rows.rs.columns[i]\n\tdecimals := int64(column.decimals)\n\n\tswitch column.fieldType {\n\tcase fieldTypeDecimal, fieldTypeNewDecimal:\n\t\tif decimals > 0 {\n\t\t\treturn int64(column.length) - 2, decimals, true\n\t\t}\n\t\treturn int64(column.length) - 1, decimals, true\n\tcase fieldTypeTimestamp, fieldTypeDateTime, fieldTypeTime:\n\t\treturn decimals, decimals, true\n\tcase fieldTypeFloat, fieldTypeDouble:\n\t\tif decimals == 0x1f {\n\t\t\treturn math.MaxInt64, math.MaxInt64, true\n\t\t}\n\t\treturn math.MaxInt64, decimals, true\n\t}\n\n\treturn 0, 0, false\n}\n\nfunc (rows *mysqlRows) ColumnTypeScanType(i int) reflect.Type {\n\treturn rows.rs.columns[i].scanType()\n}\n\nfunc (rows *mysqlRows) Close() (err error) {\n\tif f := rows.finish; f != nil {\n\t\tf()\n\t\trows.finish = nil\n\t}\n\n\tmc := rows.mc\n\tif mc == nil {\n\t\treturn nil\n\t}\n\tif err := mc.error(); err != nil {\n\t\treturn err\n\t}\n\n\t// flip the buffer for this connection if we need to drain it.\n\t// note that for a successful query (i.e. one where rows.next()\n\t// has been called until it returns false), `rows.mc` will be nil\n\t// by the time the user calls `(*Rows).Close`, so we won't reach this\n\t// see: https://github.com/golang/go/commit/651ddbdb5056ded455f47f9c494c67b389622a47\n\tmc.buf.flip()\n\n\t// Remove unread packets from stream\n\tif !rows.rs.done {\n\t\terr = mc.readUntilEOF()\n\t}\n\tif err == nil {\n\t\thandleOk := mc.clearResult()\n\t\tif err = handleOk.discardResults(); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\trows.mc = nil\n\treturn err\n}\n\nfunc (rows *mysqlRows) HasNextResultSet() (b bool) {\n\tif rows.mc == nil {\n\t\treturn false\n\t}\n\treturn rows.mc.status&statusMoreResultsExists != 0\n}\n\nfunc (rows *mysqlRows) nextResultSet() (int, error) {\n\tif rows.mc == nil {\n\t\treturn 0, io.EOF\n\t}\n\tif err := rows.mc.error(); err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Remove unread packets from stream\n\tif !rows.rs.done {\n\t\tif err := rows.mc.readUntilEOF(); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\trows.rs.done = true\n\t}\n\n\tif !rows.HasNextResultSet() {\n\t\trows.mc = nil\n\t\treturn 0, io.EOF\n\t}\n\trows.rs = resultSet{}\n\t// rows.mc.affectedRows and rows.mc.insertIds accumulate on each call to\n\t// nextResultSet.\n\tresLen, err := rows.mc.resultUnchanged().readResultSetHeaderPacket()\n\tif err != nil {\n\t\t// Clean up about multi-results flag\n\t\trows.rs.done = true\n\t\trows.mc.status = rows.mc.status & (^statusMoreResultsExists)\n\t}\n\treturn resLen, err\n}\n\nfunc (rows *mysqlRows) nextNotEmptyResultSet() (int, error) {\n\tfor {\n\t\tresLen, err := rows.nextResultSet()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\t\tif resLen > 0 {\n\t\t\treturn resLen, nil\n\t\t}\n\n\t\trows.rs.done = true\n\t}\n}\n\nfunc (rows *binaryRows) NextResultSet() error {\n\tresLen, err := rows.nextNotEmptyResultSet()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trows.rs.columns, err = rows.mc.readColumns(resLen)\n\treturn err\n}\n\nfunc (rows *binaryRows) Next(dest []driver.Value) error {\n\tif mc := rows.mc; mc != nil {\n\t\tif err := mc.error(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Fetch next row from stream\n\t\treturn rows.readRow(dest)\n\t}\n\treturn io.EOF\n}\n\nfunc (rows *textRows) NextResultSet() (err error) {\n\tresLen, err := rows.nextNotEmptyResultSet()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trows.rs.columns, err = rows.mc.readColumns(resLen)\n\treturn err\n}\n\nfunc (rows *textRows) Next(dest []driver.Value) error {\n\tif mc := rows.mc; mc != nil {\n\t\tif err := mc.error(); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\t// Fetch next row from stream\n\t\treturn rows.readRow(dest)\n\t}\n\treturn io.EOF\n}\n"
  },
  {
    "path": "gossh/mysql/statement.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"database/sql/driver\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"reflect\"\n)\n\ntype mysqlStmt struct {\n\tmc         *mysqlConn\n\tid         uint32\n\tparamCount int\n}\n\nfunc (stmt *mysqlStmt) Close() error {\n\tif stmt.mc == nil || stmt.mc.closed.Load() {\n\t\t// driver.Stmt.Close can be called more than once, thus this function\n\t\t// has to be idempotent.\n\t\t// See also Issue #450 and golang/go#16019.\n\t\t//errLog.Print(ErrInvalidConn)\n\t\treturn driver.ErrBadConn\n\t}\n\n\terr := stmt.mc.writeCommandPacketUint32(comStmtClose, stmt.id)\n\tstmt.mc = nil\n\treturn err\n}\n\nfunc (stmt *mysqlStmt) NumInput() int {\n\treturn stmt.paramCount\n}\n\nfunc (stmt *mysqlStmt) ColumnConverter(idx int) driver.ValueConverter {\n\treturn converter{}\n}\n\nfunc (stmt *mysqlStmt) CheckNamedValue(nv *driver.NamedValue) (err error) {\n\tnv.Value, err = converter{}.ConvertValue(nv.Value)\n\treturn\n}\n\nfunc (stmt *mysqlStmt) Exec(args []driver.Value) (driver.Result, error) {\n\tif stmt.mc.closed.Load() {\n\t\tstmt.mc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := stmt.writeExecutePacket(args)\n\tif err != nil {\n\t\treturn nil, stmt.mc.markBadConn(err)\n\t}\n\n\tmc := stmt.mc\n\thandleOk := stmt.mc.clearResult()\n\n\t// Read Result\n\tresLen, err := handleOk.readResultSetHeaderPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif resLen > 0 {\n\t\t// Columns\n\t\tif err = mc.readUntilEOF(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\t// Rows\n\t\tif err := mc.readUntilEOF(); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := handleOk.discardResults(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tcopied := mc.result\n\treturn &copied, nil\n}\n\nfunc (stmt *mysqlStmt) Query(args []driver.Value) (driver.Rows, error) {\n\treturn stmt.query(args)\n}\n\nfunc (stmt *mysqlStmt) query(args []driver.Value) (*binaryRows, error) {\n\tif stmt.mc.closed.Load() {\n\t\tstmt.mc.log(ErrInvalidConn)\n\t\treturn nil, driver.ErrBadConn\n\t}\n\t// Send command\n\terr := stmt.writeExecutePacket(args)\n\tif err != nil {\n\t\treturn nil, stmt.mc.markBadConn(err)\n\t}\n\n\tmc := stmt.mc\n\n\t// Read Result\n\thandleOk := stmt.mc.clearResult()\n\tresLen, err := handleOk.readResultSetHeaderPacket()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\trows := new(binaryRows)\n\n\tif resLen > 0 {\n\t\trows.mc = mc\n\t\trows.rs.columns, err = mc.readColumns(resLen)\n\t} else {\n\t\trows.rs.done = true\n\n\t\tswitch err := rows.NextResultSet(); err {\n\t\tcase nil, io.EOF:\n\t\t\treturn rows, nil\n\t\tdefault:\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn rows, err\n}\n\nvar jsonType = reflect.TypeOf(json.RawMessage{})\n\ntype converter struct{}\n\n// ConvertValue mirrors the reference/default converter in database/sql/driver\n// with _one_ exception.  We support uint64 with their high bit and the default\n// implementation does not.  This function should be kept in sync with\n// database/sql/driver defaultConverter.ConvertValue() except for that\n// deliberate difference.\nfunc (c converter) ConvertValue(v any) (driver.Value, error) {\n\tif driver.IsValue(v) {\n\t\treturn v, nil\n\t}\n\n\tif vr, ok := v.(driver.Valuer); ok {\n\t\tsv, err := callValuerValue(vr)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif driver.IsValue(sv) {\n\t\t\treturn sv, nil\n\t\t}\n\t\t// A value returned from the Valuer interface can be \"a type handled by\n\t\t// a database driver's NamedValueChecker interface\" so we should accept\n\t\t// uint64 here as well.\n\t\tif u, ok := sv.(uint64); ok {\n\t\t\treturn u, nil\n\t\t}\n\t\treturn nil, fmt.Errorf(\"non-Value type %T returned from Value\", sv)\n\t}\n\trv := reflect.ValueOf(v)\n\tswitch rv.Kind() {\n\tcase reflect.Ptr:\n\t\t// indirect pointers\n\t\tif rv.IsNil() {\n\t\t\treturn nil, nil\n\t\t} else {\n\t\t\treturn c.ConvertValue(rv.Elem().Interface())\n\t\t}\n\tcase reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:\n\t\treturn rv.Int(), nil\n\tcase reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:\n\t\treturn rv.Uint(), nil\n\tcase reflect.Float32, reflect.Float64:\n\t\treturn rv.Float(), nil\n\tcase reflect.Bool:\n\t\treturn rv.Bool(), nil\n\tcase reflect.Slice:\n\t\tswitch t := rv.Type(); {\n\t\tcase t == jsonType:\n\t\t\treturn v, nil\n\t\tcase t.Elem().Kind() == reflect.Uint8:\n\t\t\treturn rv.Bytes(), nil\n\t\tdefault:\n\t\t\treturn nil, fmt.Errorf(\"unsupported type %T, a slice of %s\", v, t.Elem().Kind())\n\t\t}\n\tcase reflect.String:\n\t\treturn rv.String(), nil\n\t}\n\treturn nil, fmt.Errorf(\"unsupported type %T, a %s\", v, rv.Kind())\n}\n\nvar valuerReflectType = reflect.TypeOf((*driver.Valuer)(nil)).Elem()\n\n// callValuerValue returns vr.Value(), with one exception:\n// If vr.Value is an auto-generated method on a pointer type and the\n// pointer is nil, it would panic at runtime in the panicwrap\n// method. Treat it like nil instead.\n//\n// This is so people can implement driver.Value on value types and\n// still use nil pointers to those types to mean nil/NULL, just like\n// string/*string.\n//\n// This is an exact copy of the same-named unexported function from the\n// database/sql package.\nfunc callValuerValue(vr driver.Valuer) (v driver.Value, err error) {\n\tif rv := reflect.ValueOf(vr); rv.Kind() == reflect.Ptr &&\n\t\trv.IsNil() &&\n\t\trv.Type().Elem().Implements(valuerReflectType) {\n\t\treturn nil, nil\n\t}\n\treturn vr.Value()\n}\n"
  },
  {
    "path": "gossh/mysql/transaction.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\ntype mysqlTx struct {\n\tmc *mysqlConn\n}\n\nfunc (tx *mysqlTx) Commit() (err error) {\n\tif tx.mc == nil || tx.mc.closed.Load() {\n\t\treturn ErrInvalidConn\n\t}\n\terr = tx.mc.exec(\"COMMIT\")\n\ttx.mc = nil\n\treturn\n}\n\nfunc (tx *mysqlTx) Rollback() (err error) {\n\tif tx.mc == nil || tx.mc.closed.Load() {\n\t\treturn ErrInvalidConn\n\t}\n\terr = tx.mc.exec(\"ROLLBACK\")\n\ttx.mc = nil\n\treturn\n}\n"
  },
  {
    "path": "gossh/mysql/utils.go",
    "content": "// Go MySQL Driver - A MySQL-Driver for Go's database/sql package\n//\n// Copyright 2012 The Go-MySQL-Driver Authors. All rights reserved.\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 file,\n// You can obtain one at http://mozilla.org/MPL/2.0/.\n\npackage mysql\n\nimport (\n\t\"crypto/tls\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\n// Registry for custom tls.Configs\nvar (\n\ttlsConfigLock     sync.RWMutex\n\ttlsConfigRegistry map[string]*tls.Config\n)\n\n// RegisterTLSConfig registers a custom tls.Config to be used with sql.Open.\n// Use the key as a value in the DSN where tls=value.\n//\n// Note: The provided tls.Config is exclusively owned by the driver after\n// registering it.\n//\n//\trootCertPool := x509.NewCertPool()\n//\tpem, err := os.ReadFile(\"/path/ca-cert.pem\")\n//\tif err != nil {\n//\t    log.Fatal(err)\n//\t}\n//\tif ok := rootCertPool.AppendCertsFromPEM(pem); !ok {\n//\t    log.Fatal(\"Failed to append PEM.\")\n//\t}\n//\tclientCert := make([]tls.Certificate, 0, 1)\n//\tcerts, err := tls.LoadX509KeyPair(\"/path/client-cert.pem\", \"/path/client-key.pem\")\n//\tif err != nil {\n//\t    log.Fatal(err)\n//\t}\n//\tclientCert = append(clientCert, certs)\n//\tmysql.RegisterTLSConfig(\"custom\", &tls.Config{\n//\t    RootCAs: rootCertPool,\n//\t    Certificates: clientCert,\n//\t})\n//\tdb, err := sql.Open(\"mysql\", \"user@tcp(localhost:3306)/test?tls=custom\")\nfunc RegisterTLSConfig(key string, config *tls.Config) error {\n\tif _, isBool := readBool(key); isBool || strings.ToLower(key) == \"skip-verify\" || strings.ToLower(key) == \"preferred\" {\n\t\treturn fmt.Errorf(\"key '%s' is reserved\", key)\n\t}\n\n\ttlsConfigLock.Lock()\n\tif tlsConfigRegistry == nil {\n\t\ttlsConfigRegistry = make(map[string]*tls.Config)\n\t}\n\n\ttlsConfigRegistry[key] = config\n\ttlsConfigLock.Unlock()\n\treturn nil\n}\n\n// DeregisterTLSConfig removes the tls.Config associated with key.\nfunc DeregisterTLSConfig(key string) {\n\ttlsConfigLock.Lock()\n\tif tlsConfigRegistry != nil {\n\t\tdelete(tlsConfigRegistry, key)\n\t}\n\ttlsConfigLock.Unlock()\n}\n\nfunc getTLSConfigClone(key string) (config *tls.Config) {\n\ttlsConfigLock.RLock()\n\tif v, ok := tlsConfigRegistry[key]; ok {\n\t\tconfig = v.Clone()\n\t}\n\ttlsConfigLock.RUnlock()\n\treturn\n}\n\n// Returns the bool value of the input.\n// The 2nd return value indicates if the input was a valid bool value\nfunc readBool(input string) (value bool, valid bool) {\n\tswitch input {\n\tcase \"1\", \"true\", \"TRUE\", \"True\":\n\t\treturn true, true\n\tcase \"0\", \"false\", \"FALSE\", \"False\":\n\t\treturn false, true\n\t}\n\n\t// Not a valid bool value\n\treturn\n}\n\n/******************************************************************************\n*                           Time related utils                                *\n******************************************************************************/\n\nfunc parseDateTime(b []byte, loc *time.Location) (time.Time, error) {\n\tconst base = \"0000-00-00 00:00:00.000000\"\n\tswitch len(b) {\n\tcase 10, 19, 21, 22, 23, 24, 25, 26: // up to \"YYYY-MM-DD HH:MM:SS.MMMMMM\"\n\t\tif string(b) == base[:len(b)] {\n\t\t\treturn time.Time{}, nil\n\t\t}\n\n\t\tyear, err := parseByteYear(b)\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif b[4] != '-' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[4])\n\t\t}\n\n\t\tm, err := parseByte2Digits(b[5], b[6])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tmonth := time.Month(m)\n\n\t\tif b[7] != '-' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[7])\n\t\t}\n\n\t\tday, err := parseByte2Digits(b[8], b[9])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif len(b) == 10 {\n\t\t\treturn time.Date(year, month, day, 0, 0, 0, 0, loc), nil\n\t\t}\n\n\t\tif b[10] != ' ' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[10])\n\t\t}\n\n\t\thour, err := parseByte2Digits(b[11], b[12])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif b[13] != ':' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[13])\n\t\t}\n\n\t\tmin, err := parseByte2Digits(b[14], b[15])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif b[16] != ':' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[16])\n\t\t}\n\n\t\tsec, err := parseByte2Digits(b[17], b[18])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif len(b) == 19 {\n\t\t\treturn time.Date(year, month, day, hour, min, sec, 0, loc), nil\n\t\t}\n\n\t\tif b[19] != '.' {\n\t\t\treturn time.Time{}, fmt.Errorf(\"bad value for field: `%c`\", b[19])\n\t\t}\n\t\tnsec, err := parseByteNanoSec(b[20:])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\treturn time.Date(year, month, day, hour, min, sec, nsec, loc), nil\n\tdefault:\n\t\treturn time.Time{}, fmt.Errorf(\"invalid time bytes: %s\", b)\n\t}\n}\n\nfunc parseByteYear(b []byte) (int, error) {\n\tyear, n := 0, 1000\n\tfor i := 0; i < 4; i++ {\n\t\tv, err := bToi(b[i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tyear += v * n\n\t\tn /= 10\n\t}\n\treturn year, nil\n}\n\nfunc parseByte2Digits(b1, b2 byte) (int, error) {\n\td1, err := bToi(b1)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td2, err := bToi(b2)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn d1*10 + d2, nil\n}\n\nfunc parseByteNanoSec(b []byte) (int, error) {\n\tns, digit := 0, 100000 // max is 6-digits\n\tfor i := 0; i < len(b); i++ {\n\t\tv, err := bToi(b[i])\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tns += v * digit\n\t\tdigit /= 10\n\t}\n\t// nanoseconds has 10-digits. (needs to scale digits)\n\t// 10 - 6 = 4, so we have to multiple 1000.\n\treturn ns * 1000, nil\n}\n\nfunc bToi(b byte) (int, error) {\n\tif b < '0' || b > '9' {\n\t\treturn 0, errors.New(\"not [0-9]\")\n\t}\n\treturn int(b - '0'), nil\n}\n\nfunc parseBinaryDateTime(num uint64, data []byte, loc *time.Location) (driver.Value, error) {\n\tswitch num {\n\tcase 0:\n\t\treturn time.Time{}, nil\n\tcase 4:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\t0, 0, 0, 0,\n\t\t\tloc,\n\t\t), nil\n\tcase 7:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\tint(data[4]),                              // hour\n\t\t\tint(data[5]),                              // minutes\n\t\t\tint(data[6]),                              // seconds\n\t\t\t0,\n\t\t\tloc,\n\t\t), nil\n\tcase 11:\n\t\treturn time.Date(\n\t\t\tint(binary.LittleEndian.Uint16(data[:2])), // year\n\t\t\ttime.Month(data[2]),                       // month\n\t\t\tint(data[3]),                              // day\n\t\t\tint(data[4]),                              // hour\n\t\t\tint(data[5]),                              // minutes\n\t\t\tint(data[6]),                              // seconds\n\t\t\tint(binary.LittleEndian.Uint32(data[7:11]))*1000, // nanoseconds\n\t\t\tloc,\n\t\t), nil\n\t}\n\treturn nil, fmt.Errorf(\"invalid DATETIME packet length %d\", num)\n}\n\nfunc appendDateTime(buf []byte, t time.Time, timeTruncate time.Duration) ([]byte, error) {\n\tif timeTruncate > 0 {\n\t\tt = t.Truncate(timeTruncate)\n\t}\n\n\tyear, month, day := t.Date()\n\thour, min, sec := t.Clock()\n\tnsec := t.Nanosecond()\n\n\tif year < 1 || year > 9999 {\n\t\treturn buf, errors.New(\"year is not in the range [1, 9999]: \" + strconv.Itoa(year)) // use errors.New instead of fmt.Errorf to avoid year escape to heap\n\t}\n\tyear100 := year / 100\n\tyear1 := year % 100\n\n\tvar localBuf [len(\"2006-01-02T15:04:05.999999999\")]byte // does not escape\n\tlocalBuf[0], localBuf[1], localBuf[2], localBuf[3] = digits10[year100], digits01[year100], digits10[year1], digits01[year1]\n\tlocalBuf[4] = '-'\n\tlocalBuf[5], localBuf[6] = digits10[month], digits01[month]\n\tlocalBuf[7] = '-'\n\tlocalBuf[8], localBuf[9] = digits10[day], digits01[day]\n\n\tif hour == 0 && min == 0 && sec == 0 && nsec == 0 {\n\t\treturn append(buf, localBuf[:10]...), nil\n\t}\n\n\tlocalBuf[10] = ' '\n\tlocalBuf[11], localBuf[12] = digits10[hour], digits01[hour]\n\tlocalBuf[13] = ':'\n\tlocalBuf[14], localBuf[15] = digits10[min], digits01[min]\n\tlocalBuf[16] = ':'\n\tlocalBuf[17], localBuf[18] = digits10[sec], digits01[sec]\n\n\tif nsec == 0 {\n\t\treturn append(buf, localBuf[:19]...), nil\n\t}\n\tnsec100000000 := nsec / 100000000\n\tnsec1000000 := (nsec / 1000000) % 100\n\tnsec10000 := (nsec / 10000) % 100\n\tnsec100 := (nsec / 100) % 100\n\tnsec1 := nsec % 100\n\tlocalBuf[19] = '.'\n\n\t// milli second\n\tlocalBuf[20], localBuf[21], localBuf[22] =\n\t\tdigits01[nsec100000000], digits10[nsec1000000], digits01[nsec1000000]\n\t// micro second\n\tlocalBuf[23], localBuf[24], localBuf[25] =\n\t\tdigits10[nsec10000], digits01[nsec10000], digits10[nsec100]\n\t// nano second\n\tlocalBuf[26], localBuf[27], localBuf[28] =\n\t\tdigits01[nsec100], digits10[nsec1], digits01[nsec1]\n\n\t// trim trailing zeros\n\tn := len(localBuf)\n\tfor n > 0 && localBuf[n-1] == '0' {\n\t\tn--\n\t}\n\n\treturn append(buf, localBuf[:n]...), nil\n}\n\n// zeroDateTime is used in formatBinaryDateTime to avoid an allocation\n// if the DATE or DATETIME has the zero value.\n// It must never be changed.\n// The current behavior depends on database/sql copying the result.\nvar zeroDateTime = []byte(\"0000-00-00 00:00:00.000000\")\n\nconst digits01 = \"0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\"\nconst digits10 = \"0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999\"\n\nfunc appendMicrosecs(dst, src []byte, decimals int) []byte {\n\tif decimals <= 0 {\n\t\treturn dst\n\t}\n\tif len(src) == 0 {\n\t\treturn append(dst, \".000000\"[:decimals+1]...)\n\t}\n\n\tmicrosecs := binary.LittleEndian.Uint32(src[:4])\n\tp1 := byte(microsecs / 10000)\n\tmicrosecs -= 10000 * uint32(p1)\n\tp2 := byte(microsecs / 100)\n\tmicrosecs -= 100 * uint32(p2)\n\tp3 := byte(microsecs)\n\n\tswitch decimals {\n\tdefault:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t\tdigits10[p3], digits01[p3],\n\t\t)\n\tcase 1:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1],\n\t\t)\n\tcase 2:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t)\n\tcase 3:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2],\n\t\t)\n\tcase 4:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t)\n\tcase 5:\n\t\treturn append(dst, '.',\n\t\t\tdigits10[p1], digits01[p1],\n\t\t\tdigits10[p2], digits01[p2],\n\t\t\tdigits10[p3],\n\t\t)\n\t}\n}\n\nfunc formatBinaryDateTime(src []byte, length uint8) (driver.Value, error) {\n\t// length expects the deterministic length of the zero value,\n\t// negative time and 100+ hours are automatically added if needed\n\tif len(src) == 0 {\n\t\treturn zeroDateTime[:length], nil\n\t}\n\tvar dst []byte      // return value\n\tvar p1, p2, p3 byte // current digit pair\n\n\tswitch length {\n\tcase 10, 19, 21, 22, 23, 24, 25, 26:\n\tdefault:\n\t\tt := \"DATE\"\n\t\tif length > 10 {\n\t\t\tt += \"TIME\"\n\t\t}\n\t\treturn nil, fmt.Errorf(\"illegal %s length %d\", t, length)\n\t}\n\tswitch len(src) {\n\tcase 4, 7, 11:\n\tdefault:\n\t\tt := \"DATE\"\n\t\tif length > 10 {\n\t\t\tt += \"TIME\"\n\t\t}\n\t\treturn nil, fmt.Errorf(\"illegal %s packet length %d\", t, len(src))\n\t}\n\tdst = make([]byte, 0, length)\n\t// start with the date\n\tyear := binary.LittleEndian.Uint16(src[:2])\n\tpt := year / 100\n\tp1 = byte(year - 100*uint16(pt))\n\tp2, p3 = src[2], src[3]\n\tdst = append(dst,\n\t\tdigits10[pt], digits01[pt],\n\t\tdigits10[p1], digits01[p1], '-',\n\t\tdigits10[p2], digits01[p2], '-',\n\t\tdigits10[p3], digits01[p3],\n\t)\n\tif length == 10 {\n\t\treturn dst, nil\n\t}\n\tif len(src) == 4 {\n\t\treturn append(dst, zeroDateTime[10:length]...), nil\n\t}\n\tdst = append(dst, ' ')\n\tp1 = src[4] // hour\n\tsrc = src[5:]\n\n\t// p1 is 2-digit hour, src is after hour\n\tp2, p3 = src[0], src[1]\n\tdst = append(dst,\n\t\tdigits10[p1], digits01[p1], ':',\n\t\tdigits10[p2], digits01[p2], ':',\n\t\tdigits10[p3], digits01[p3],\n\t)\n\treturn appendMicrosecs(dst, src[2:], int(length)-20), nil\n}\n\nfunc formatBinaryTime(src []byte, length uint8) (driver.Value, error) {\n\t// length expects the deterministic length of the zero value,\n\t// negative time and 100+ hours are automatically added if needed\n\tif len(src) == 0 {\n\t\treturn zeroDateTime[11 : 11+length], nil\n\t}\n\tvar dst []byte // return value\n\n\tswitch length {\n\tcase\n\t\t8,                      // time (can be up to 10 when negative and 100+ hours)\n\t\t10, 11, 12, 13, 14, 15: // time with fractional seconds\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"illegal TIME length %d\", length)\n\t}\n\tswitch len(src) {\n\tcase 8, 12:\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid TIME packet length %d\", len(src))\n\t}\n\t// +2 to enable negative time and 100+ hours\n\tdst = make([]byte, 0, length+2)\n\tif src[0] == 1 {\n\t\tdst = append(dst, '-')\n\t}\n\tdays := binary.LittleEndian.Uint32(src[1:5])\n\thours := int64(days)*24 + int64(src[5])\n\n\tif hours >= 100 {\n\t\tdst = strconv.AppendInt(dst, hours, 10)\n\t} else {\n\t\tdst = append(dst, digits10[hours], digits01[hours])\n\t}\n\n\tmin, sec := src[6], src[7]\n\tdst = append(dst, ':',\n\t\tdigits10[min], digits01[min], ':',\n\t\tdigits10[sec], digits01[sec],\n\t)\n\treturn appendMicrosecs(dst, src[8:], int(length)-9), nil\n}\n\n/******************************************************************************\n*                       Convert from and to bytes                             *\n******************************************************************************/\n\nfunc uint64ToBytes(n uint64) []byte {\n\treturn []byte{\n\t\tbyte(n),\n\t\tbyte(n >> 8),\n\t\tbyte(n >> 16),\n\t\tbyte(n >> 24),\n\t\tbyte(n >> 32),\n\t\tbyte(n >> 40),\n\t\tbyte(n >> 48),\n\t\tbyte(n >> 56),\n\t}\n}\n\nfunc uint64ToString(n uint64) []byte {\n\tvar a [20]byte\n\ti := 20\n\n\t// U+0030 = 0\n\t// ...\n\t// U+0039 = 9\n\n\tvar q uint64\n\tfor n >= 10 {\n\t\ti--\n\t\tq = n / 10\n\t\ta[i] = uint8(n-q*10) + 0x30\n\t\tn = q\n\t}\n\n\ti--\n\ta[i] = uint8(n) + 0x30\n\n\treturn a[i:]\n}\n\n// treats string value as unsigned integer representation\nfunc stringToInt(b []byte) int {\n\tval := 0\n\tfor i := range b {\n\t\tval *= 10\n\t\tval += int(b[i] - 0x30)\n\t}\n\treturn val\n}\n\n// returns the string read as a bytes slice, whether the value is NULL,\n// the number of bytes read and an error, in case the string is longer than\n// the input slice\nfunc readLengthEncodedString(b []byte) ([]byte, bool, int, error) {\n\t// Get length\n\tnum, isNull, n := readLengthEncodedInteger(b)\n\tif num < 1 {\n\t\treturn b[n:n], isNull, n, nil\n\t}\n\n\tn += int(num)\n\n\t// Check data length\n\tif len(b) >= n {\n\t\treturn b[n-int(num) : n : n], false, n, nil\n\t}\n\treturn nil, false, n, io.EOF\n}\n\n// returns the number of bytes skipped and an error, in case the string is\n// longer than the input slice\nfunc skipLengthEncodedString(b []byte) (int, error) {\n\t// Get length\n\tnum, _, n := readLengthEncodedInteger(b)\n\tif num < 1 {\n\t\treturn n, nil\n\t}\n\n\tn += int(num)\n\n\t// Check data length\n\tif len(b) >= n {\n\t\treturn n, nil\n\t}\n\treturn n, io.EOF\n}\n\n// returns the number read, whether the value is NULL and the number of bytes read\nfunc readLengthEncodedInteger(b []byte) (uint64, bool, int) {\n\t// See issue #349\n\tif len(b) == 0 {\n\t\treturn 0, true, 1\n\t}\n\n\tswitch b[0] {\n\t// 251: NULL\n\tcase 0xfb:\n\t\treturn 0, true, 1\n\n\t// 252: value of following 2\n\tcase 0xfc:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8, false, 3\n\n\t// 253: value of following 3\n\tcase 0xfd:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16, false, 4\n\n\t// 254: value of following 8\n\tcase 0xfe:\n\t\treturn uint64(b[1]) | uint64(b[2])<<8 | uint64(b[3])<<16 |\n\t\t\t\tuint64(b[4])<<24 | uint64(b[5])<<32 | uint64(b[6])<<40 |\n\t\t\t\tuint64(b[7])<<48 | uint64(b[8])<<56,\n\t\t\tfalse, 9\n\t}\n\n\t// 0-250: value of first byte\n\treturn uint64(b[0]), false, 1\n}\n\n// encodes a uint64 value and appends it to the given bytes slice\nfunc appendLengthEncodedInteger(b []byte, n uint64) []byte {\n\tswitch {\n\tcase n <= 250:\n\t\treturn append(b, byte(n))\n\n\tcase n <= 0xffff:\n\t\treturn append(b, 0xfc, byte(n), byte(n>>8))\n\n\tcase n <= 0xffffff:\n\t\treturn append(b, 0xfd, byte(n), byte(n>>8), byte(n>>16))\n\t}\n\treturn append(b, 0xfe, byte(n), byte(n>>8), byte(n>>16), byte(n>>24),\n\t\tbyte(n>>32), byte(n>>40), byte(n>>48), byte(n>>56))\n}\n\nfunc appendLengthEncodedString(b []byte, s string) []byte {\n\tb = appendLengthEncodedInteger(b, uint64(len(s)))\n\treturn append(b, s...)\n}\n\n// reserveBuffer checks cap(buf) and expand buffer to len(buf) + appendSize.\n// If cap(buf) is not enough, reallocate new buffer.\nfunc reserveBuffer(buf []byte, appendSize int) []byte {\n\tnewSize := len(buf) + appendSize\n\tif cap(buf) < newSize {\n\t\t// Grow buffer exponentially\n\t\tnewBuf := make([]byte, len(buf)*2+appendSize)\n\t\tcopy(newBuf, buf)\n\t\tbuf = newBuf\n\t}\n\treturn buf[:newSize]\n}\n\n// escapeBytesBackslash escapes []byte with backslashes (\\)\n// This escapes the contents of a string (provided as []byte) by adding backslashes before special\n// characters, and turning others into specific escape sequences, such as\n// turning newlines into \\n and null bytes into \\0.\n// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L823-L932\nfunc escapeBytesBackslash(buf, v []byte) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor _, c := range v {\n\t\tswitch c {\n\t\tcase '\\x00':\n\t\t\tbuf[pos+1] = '0'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\n':\n\t\t\tbuf[pos+1] = 'n'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\r':\n\t\t\tbuf[pos+1] = 'r'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\x1a':\n\t\t\tbuf[pos+1] = 'Z'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\'':\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\"':\n\t\t\tbuf[pos+1] = '\"'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\\\':\n\t\t\tbuf[pos+1] = '\\\\'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tdefault:\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeStringBackslash is similar to escapeBytesBackslash but for string.\nfunc escapeStringBackslash(buf []byte, v string) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor i := 0; i < len(v); i++ {\n\t\tc := v[i]\n\t\tswitch c {\n\t\tcase '\\x00':\n\t\t\tbuf[pos+1] = '0'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\n':\n\t\t\tbuf[pos+1] = 'n'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\r':\n\t\t\tbuf[pos+1] = 'r'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\x1a':\n\t\t\tbuf[pos+1] = 'Z'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\'':\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\"':\n\t\t\tbuf[pos+1] = '\"'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tcase '\\\\':\n\t\t\tbuf[pos+1] = '\\\\'\n\t\t\tbuf[pos] = '\\\\'\n\t\t\tpos += 2\n\t\tdefault:\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeBytesQuotes escapes apostrophes in []byte by doubling them up.\n// This escapes the contents of a string by doubling up any apostrophes that\n// it contains. This is used when the NO_BACKSLASH_ESCAPES SQL_MODE is in\n// effect on the server.\n// https://github.com/mysql/mysql-server/blob/mysql-5.7.5/mysys/charset.c#L963-L1038\nfunc escapeBytesQuotes(buf, v []byte) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor _, c := range v {\n\t\tif c == '\\'' {\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tbuf[pos] = '\\''\n\t\t\tpos += 2\n\t\t} else {\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n// escapeStringQuotes is similar to escapeBytesQuotes but for string.\nfunc escapeStringQuotes(buf []byte, v string) []byte {\n\tpos := len(buf)\n\tbuf = reserveBuffer(buf, len(v)*2)\n\n\tfor i := 0; i < len(v); i++ {\n\t\tc := v[i]\n\t\tif c == '\\'' {\n\t\t\tbuf[pos+1] = '\\''\n\t\t\tbuf[pos] = '\\''\n\t\t\tpos += 2\n\t\t} else {\n\t\t\tbuf[pos] = c\n\t\t\tpos++\n\t\t}\n\t}\n\n\treturn buf[:pos]\n}\n\n/******************************************************************************\n*                               Sync utils                                    *\n******************************************************************************/\n\n// noCopy may be embedded into structs which must not be copied\n// after the first use.\n//\n// See https://github.com/golang/go/issues/8005#issuecomment-190753527\n// for details.\ntype noCopy struct{}\n\n// Lock is a no-op used by -copylocks checker from `go vet`.\nfunc (*noCopy) Lock() {}\n\n// Unlock is a no-op used by -copylocks checker from `go vet`.\n// noCopy should implement sync.Locker from Go 1.11\n// https://github.com/golang/go/commit/c2eba53e7f80df21d51285879d51ab81bcfbf6bc\n// https://github.com/golang/go/issues/26165\nfunc (*noCopy) Unlock() {}\n\n// atomicError is a wrapper for atomically accessed error values\ntype atomicError struct {\n\t_     noCopy\n\tvalue atomic.Value\n}\n\n// Set sets the error value regardless of the previous value.\n// The value must not be nil\nfunc (ae *atomicError) Set(value error) {\n\tae.value.Store(value)\n}\n\n// Value returns the current error value\nfunc (ae *atomicError) Value() error {\n\tif v := ae.value.Load(); v != nil {\n\t\t// this will panic if the value doesn't implement the error interface\n\t\treturn v.(error)\n\t}\n\treturn nil\n}\n\nfunc namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) {\n\tdargs := make([]driver.Value, len(named))\n\tfor n, param := range named {\n\t\tif len(param.Name) > 0 {\n\t\t\t// TODO: support the use of Named Parameters #561\n\t\t\treturn nil, errors.New(\"mysql: driver does not support the use of Named Parameters\")\n\t\t}\n\t\tdargs[n] = param.Value\n\t}\n\treturn dargs, nil\n}\n\nfunc mapIsolationLevel(level driver.IsolationLevel) (string, error) {\n\tswitch sql.IsolationLevel(level) {\n\tcase sql.LevelRepeatableRead:\n\t\treturn \"REPEATABLE READ\", nil\n\tcase sql.LevelReadCommitted:\n\t\treturn \"READ COMMITTED\", nil\n\tcase sql.LevelReadUncommitted:\n\t\treturn \"READ UNCOMMITTED\", nil\n\tcase sql.LevelSerializable:\n\t\treturn \"SERIALIZABLE\", nil\n\tdefault:\n\t\treturn \"\", fmt.Errorf(\"mysql: unsupported isolation level: %v\", level)\n\t}\n}\n"
  },
  {
    "path": "gossh/pgsql/array.go",
    "content": "package pgsql\n\nimport (\n\t\"bytes\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/hex\"\n\t\"fmt\"\n\t\"reflect\"\n\t\"strconv\"\n\t\"strings\"\n)\n\nvar typeByteSlice = reflect.TypeOf([]byte{})\nvar typeDriverValuer = reflect.TypeOf((*driver.Valuer)(nil)).Elem()\nvar typeSQLScanner = reflect.TypeOf((*sql.Scanner)(nil)).Elem()\n\n// Array returns the optimal driver.Valuer and sql.Scanner for an array or\n// slice of any dimension.\n//\n// For example:\n//\n//\tdb.Query(`SELECT * FROM t WHERE id = ANY($1)`, pq.Array([]int{235, 401}))\n//\n//\tvar x []sql.NullInt64\n//\tdb.QueryRow(`SELECT ARRAY[235, 401]`).Scan(pq.Array(&x))\n//\n// Scanning multi-dimensional arrays is not supported.  Arrays where the lower\n// bound is not one (such as `[0:0]={1}') are not supported.\nfunc Array(a any) interface {\n\tdriver.Valuer\n\tsql.Scanner\n} {\n\tswitch a := a.(type) {\n\tcase []bool:\n\t\treturn (*BoolArray)(&a)\n\tcase []float64:\n\t\treturn (*Float64Array)(&a)\n\tcase []float32:\n\t\treturn (*Float32Array)(&a)\n\tcase []int64:\n\t\treturn (*Int64Array)(&a)\n\tcase []int32:\n\t\treturn (*Int32Array)(&a)\n\tcase []string:\n\t\treturn (*StringArray)(&a)\n\tcase [][]byte:\n\t\treturn (*ByteaArray)(&a)\n\n\tcase *[]bool:\n\t\treturn (*BoolArray)(a)\n\tcase *[]float64:\n\t\treturn (*Float64Array)(a)\n\tcase *[]float32:\n\t\treturn (*Float32Array)(a)\n\tcase *[]int64:\n\t\treturn (*Int64Array)(a)\n\tcase *[]int32:\n\t\treturn (*Int32Array)(a)\n\tcase *[]string:\n\t\treturn (*StringArray)(a)\n\tcase *[][]byte:\n\t\treturn (*ByteaArray)(a)\n\t}\n\n\treturn GenericArray{a}\n}\n\n// ArrayDelimiter may be optionally implemented by driver.Valuer or sql.Scanner\n// to override the array delimiter used by GenericArray.\ntype ArrayDelimiter interface {\n\t// ArrayDelimiter returns the delimiter character(s) for this element's type.\n\tArrayDelimiter() string\n}\n\n// BoolArray represents a one-dimensional array of the PostgreSQL boolean type.\ntype BoolArray []bool\n\n// Scan implements the sql.Scanner interface.\nfunc (a *BoolArray) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to BoolArray\", src)\n}\n\nfunc (a *BoolArray) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"BoolArray\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(BoolArray, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tif len(v) != 1 {\n\t\t\t\treturn fmt.Errorf(\"pq: could not parse boolean array index %d: invalid boolean %q\", i, v)\n\t\t\t}\n\t\t\tswitch v[0] {\n\t\t\tcase 't':\n\t\t\t\tb[i] = true\n\t\t\tcase 'f':\n\t\t\t\tb[i] = false\n\t\t\tdefault:\n\t\t\t\treturn fmt.Errorf(\"pq: could not parse boolean array index %d: invalid boolean %q\", i, v)\n\t\t\t}\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a BoolArray) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be exactly two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1+2*n)\n\n\t\tfor i := 0; i < n; i++ {\n\t\t\tb[2*i] = ','\n\t\t\tif a[i] {\n\t\t\t\tb[1+2*i] = 't'\n\t\t\t} else {\n\t\t\t\tb[1+2*i] = 'f'\n\t\t\t}\n\t\t}\n\n\t\tb[0] = '{'\n\t\tb[2*n] = '}'\n\n\t\treturn string(b), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// ByteaArray represents a one-dimensional array of the PostgreSQL bytea type.\ntype ByteaArray [][]byte\n\n// Scan implements the sql.Scanner interface.\nfunc (a *ByteaArray) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to ByteaArray\", src)\n}\n\nfunc (a *ByteaArray) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"ByteaArray\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(ByteaArray, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tb[i], err = parseBytea(v)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"could not parse bytea array index %d: %s\", i, err.Error())\n\t\t\t}\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface. It uses the \"hex\" format which\n// is only supported on PostgreSQL 9.0 or newer.\nfunc (a ByteaArray) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, 2*N bytes of quotes,\n\t\t// 3*N bytes of hex formatting, and N-1 bytes of delimiters.\n\t\tsize := 1 + 6*n\n\t\tfor _, x := range a {\n\t\t\tsize += hex.EncodedLen(len(x))\n\t\t}\n\n\t\tb := make([]byte, size)\n\n\t\tfor i, s := 0, b; i < n; i++ {\n\t\t\to := copy(s, `,\"\\\\x`)\n\t\t\to += hex.Encode(s[o:], a[i])\n\t\t\ts[o] = '\"'\n\t\t\ts = s[o+1:]\n\t\t}\n\n\t\tb[0] = '{'\n\t\tb[size-1] = '}'\n\n\t\treturn string(b), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// Float64Array represents a one-dimensional array of the PostgreSQL double\n// precision type.\ntype Float64Array []float64\n\n// Scan implements the sql.Scanner interface.\nfunc (a *Float64Array) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to Float64Array\", src)\n}\n\nfunc (a *Float64Array) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"Float64Array\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(Float64Array, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tif b[i], err = strconv.ParseFloat(string(v), 64); err != nil {\n\t\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: %v\", i, err)\n\t\t\t}\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a Float64Array) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1, 1+2*n)\n\t\tb[0] = '{'\n\n\t\tb = strconv.AppendFloat(b, a[0], 'f', -1, 64)\n\t\tfor i := 1; i < n; i++ {\n\t\t\tb = append(b, ',')\n\t\t\tb = strconv.AppendFloat(b, a[i], 'f', -1, 64)\n\t\t}\n\n\t\treturn string(append(b, '}')), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// Float32Array represents a one-dimensional array of the PostgreSQL double\n// precision type.\ntype Float32Array []float32\n\n// Scan implements the sql.Scanner interface.\nfunc (a *Float32Array) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to Float32Array\", src)\n}\n\nfunc (a *Float32Array) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"Float32Array\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(Float32Array, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tvar x float64\n\t\t\tif x, err = strconv.ParseFloat(string(v), 32); err != nil {\n\t\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: %v\", i, err)\n\t\t\t}\n\t\t\tb[i] = float32(x)\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a Float32Array) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1, 1+2*n)\n\t\tb[0] = '{'\n\n\t\tb = strconv.AppendFloat(b, float64(a[0]), 'f', -1, 32)\n\t\tfor i := 1; i < n; i++ {\n\t\t\tb = append(b, ',')\n\t\t\tb = strconv.AppendFloat(b, float64(a[i]), 'f', -1, 32)\n\t\t}\n\n\t\treturn string(append(b, '}')), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// GenericArray implements the driver.Valuer and sql.Scanner interfaces for\n// an array or slice of any dimension.\ntype GenericArray struct{ A any }\n\nfunc (GenericArray) evaluateDestination(rt reflect.Type) (reflect.Type, func([]byte, reflect.Value) error, string) {\n\tvar assign func([]byte, reflect.Value) error\n\tvar del = \",\"\n\n\t// TODO calculate the assign function for other types\n\t// TODO repeat this section on the element type of arrays or slices (multidimensional)\n\t{\n\t\tif reflect.PtrTo(rt).Implements(typeSQLScanner) {\n\t\t\t// dest is always addressable because it is an element of a slice.\n\t\t\tassign = func(src []byte, dest reflect.Value) (err error) {\n\t\t\t\tss := dest.Addr().Interface().(sql.Scanner)\n\t\t\t\tif src == nil {\n\t\t\t\t\terr = ss.Scan(nil)\n\t\t\t\t} else {\n\t\t\t\t\terr = ss.Scan(src)\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\tgoto FoundType\n\t\t}\n\n\t\tassign = func([]byte, reflect.Value) error {\n\t\t\treturn fmt.Errorf(\"pq: scanning to %s is not implemented; only sql.Scanner\", rt)\n\t\t}\n\t}\n\nFoundType:\n\n\tif ad, ok := reflect.Zero(rt).Interface().(ArrayDelimiter); ok {\n\t\tdel = ad.ArrayDelimiter()\n\t}\n\n\treturn rt, assign, del\n}\n\n// Scan implements the sql.Scanner interface.\nfunc (a GenericArray) Scan(src any) error {\n\tdpv := reflect.ValueOf(a.A)\n\tswitch {\n\tcase dpv.Kind() != reflect.Ptr:\n\t\treturn fmt.Errorf(\"pq: destination %T is not a pointer to array or slice\", a.A)\n\tcase dpv.IsNil():\n\t\treturn fmt.Errorf(\"pq: destination %T is nil\", a.A)\n\t}\n\n\tdv := dpv.Elem()\n\tswitch dv.Kind() {\n\tcase reflect.Slice:\n\tcase reflect.Array:\n\tdefault:\n\t\treturn fmt.Errorf(\"pq: destination %T is not a pointer to array or slice\", a.A)\n\t}\n\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src, dv)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src), dv)\n\tcase nil:\n\t\tif dv.Kind() == reflect.Slice {\n\t\t\tdv.Set(reflect.Zero(dv.Type()))\n\t\t\treturn nil\n\t\t}\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to %s\", src, dv.Type())\n}\n\nfunc (a GenericArray) scanBytes(src []byte, dv reflect.Value) error {\n\tdtype, assign, del := a.evaluateDestination(dv.Type().Elem())\n\tdims, elems, err := parseArray(src, []byte(del))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// TODO allow multidimensional\n\n\tif len(dims) > 1 {\n\t\treturn fmt.Errorf(\"pq: scanning from multidimensional ARRAY%s is not implemented\",\n\t\t\tstrings.Replace(fmt.Sprint(dims), \" \", \"][\", -1))\n\t}\n\n\t// Treat a zero-dimensional array like an array with a single dimension of zero.\n\tif len(dims) == 0 {\n\t\tdims = append(dims, 0)\n\t}\n\n\tfor i, rt := 0, dv.Type(); i < len(dims); i, rt = i+1, rt.Elem() {\n\t\tswitch rt.Kind() {\n\t\tcase reflect.Slice:\n\t\tcase reflect.Array:\n\t\t\tif rt.Len() != dims[i] {\n\t\t\t\treturn fmt.Errorf(\"pq: cannot convert ARRAY%s to %s\",\n\t\t\t\t\tstrings.Replace(fmt.Sprint(dims), \" \", \"][\", -1), dv.Type())\n\t\t\t}\n\t\tdefault:\n\t\t\t// TODO handle multidimensional\n\t\t}\n\t}\n\n\tvalues := reflect.MakeSlice(reflect.SliceOf(dtype), len(elems), len(elems))\n\tfor i, e := range elems {\n\t\tif err := assign(e, values.Index(i)); err != nil {\n\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: %v\", i, err)\n\t\t}\n\t}\n\n\t// TODO handle multidimensional\n\n\tswitch dv.Kind() {\n\tcase reflect.Slice:\n\t\tdv.Set(values.Slice(0, dims[0]))\n\tcase reflect.Array:\n\t\tfor i := 0; i < dims[0]; i++ {\n\t\t\tdv.Index(i).Set(values.Index(i))\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a GenericArray) Value() (driver.Value, error) {\n\tif a.A == nil {\n\t\treturn nil, nil\n\t}\n\n\trv := reflect.ValueOf(a.A)\n\n\tswitch rv.Kind() {\n\tcase reflect.Slice:\n\t\tif rv.IsNil() {\n\t\t\treturn nil, nil\n\t\t}\n\tcase reflect.Array:\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"pq: Unable to convert %T to array\", a.A)\n\t}\n\n\tif n := rv.Len(); n > 0 {\n\t\t// There will be at least two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 0, 1+2*n)\n\n\t\tb, _, err := appendArray(b, rv, n)\n\t\treturn string(b), err\n\t}\n\n\treturn \"{}\", nil\n}\n\n// Int64Array represents a one-dimensional array of the PostgreSQL integer types.\ntype Int64Array []int64\n\n// Scan implements the sql.Scanner interface.\nfunc (a *Int64Array) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to Int64Array\", src)\n}\n\nfunc (a *Int64Array) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"Int64Array\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(Int64Array, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tif b[i], err = strconv.ParseInt(string(v), 10, 64); err != nil {\n\t\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: %v\", i, err)\n\t\t\t}\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a Int64Array) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1, 1+2*n)\n\t\tb[0] = '{'\n\n\t\tb = strconv.AppendInt(b, a[0], 10)\n\t\tfor i := 1; i < n; i++ {\n\t\t\tb = append(b, ',')\n\t\t\tb = strconv.AppendInt(b, a[i], 10)\n\t\t}\n\n\t\treturn string(append(b, '}')), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// Int32Array represents a one-dimensional array of the PostgreSQL integer types.\ntype Int32Array []int32\n\n// Scan implements the sql.Scanner interface.\nfunc (a *Int32Array) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to Int32Array\", src)\n}\n\nfunc (a *Int32Array) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"Int32Array\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(Int32Array, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tx, err := strconv.ParseInt(string(v), 10, 32)\n\t\t\tif err != nil {\n\t\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: %v\", i, err)\n\t\t\t}\n\t\t\tb[i] = int32(x)\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a Int32Array) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, N bytes of values,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1, 1+2*n)\n\t\tb[0] = '{'\n\n\t\tb = strconv.AppendInt(b, int64(a[0]), 10)\n\t\tfor i := 1; i < n; i++ {\n\t\t\tb = append(b, ',')\n\t\t\tb = strconv.AppendInt(b, int64(a[i]), 10)\n\t\t}\n\n\t\treturn string(append(b, '}')), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// StringArray represents a one-dimensional array of the PostgreSQL character types.\ntype StringArray []string\n\n// Scan implements the sql.Scanner interface.\nfunc (a *StringArray) Scan(src any) error {\n\tswitch src := src.(type) {\n\tcase []byte:\n\t\treturn a.scanBytes(src)\n\tcase string:\n\t\treturn a.scanBytes([]byte(src))\n\tcase nil:\n\t\t*a = nil\n\t\treturn nil\n\t}\n\n\treturn fmt.Errorf(\"pq: cannot convert %T to StringArray\", src)\n}\n\nfunc (a *StringArray) scanBytes(src []byte) error {\n\telems, err := scanLinearArray(src, []byte{','}, \"StringArray\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tif *a != nil && len(elems) == 0 {\n\t\t*a = (*a)[:0]\n\t} else {\n\t\tb := make(StringArray, len(elems))\n\t\tfor i, v := range elems {\n\t\t\tif b[i] = string(v); v == nil {\n\t\t\t\treturn fmt.Errorf(\"pq: parsing array element index %d: cannot convert nil to string\", i)\n\t\t\t}\n\t\t}\n\t\t*a = b\n\t}\n\treturn nil\n}\n\n// Value implements the driver.Valuer interface.\nfunc (a StringArray) Value() (driver.Value, error) {\n\tif a == nil {\n\t\treturn nil, nil\n\t}\n\n\tif n := len(a); n > 0 {\n\t\t// There will be at least two curly brackets, 2*N bytes of quotes,\n\t\t// and N-1 bytes of delimiters.\n\t\tb := make([]byte, 1, 1+3*n)\n\t\tb[0] = '{'\n\n\t\tb = appendArrayQuotedBytes(b, []byte(a[0]))\n\t\tfor i := 1; i < n; i++ {\n\t\t\tb = append(b, ',')\n\t\t\tb = appendArrayQuotedBytes(b, []byte(a[i]))\n\t\t}\n\n\t\treturn string(append(b, '}')), nil\n\t}\n\n\treturn \"{}\", nil\n}\n\n// appendArray appends rv to the buffer, returning the extended buffer and\n// the delimiter used between elements.\n//\n// It panics when n <= 0 or rv's Kind is not reflect.Array nor reflect.Slice.\nfunc appendArray(b []byte, rv reflect.Value, n int) ([]byte, string, error) {\n\tvar del string\n\tvar err error\n\n\tb = append(b, '{')\n\n\tif b, del, err = appendArrayElement(b, rv.Index(0)); err != nil {\n\t\treturn b, del, err\n\t}\n\n\tfor i := 1; i < n; i++ {\n\t\tb = append(b, del...)\n\t\tif b, del, err = appendArrayElement(b, rv.Index(i)); err != nil {\n\t\t\treturn b, del, err\n\t\t}\n\t}\n\n\treturn append(b, '}'), del, nil\n}\n\n// appendArrayElement appends rv to the buffer, returning the extended buffer\n// and the delimiter to use before the next element.\n//\n// When rv's Kind is neither reflect.Array nor reflect.Slice, it is converted\n// using driver.DefaultParameterConverter and the resulting []byte or string\n// is double-quoted.\n//\n// See http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO\nfunc appendArrayElement(b []byte, rv reflect.Value) ([]byte, string, error) {\n\tif k := rv.Kind(); k == reflect.Array || k == reflect.Slice {\n\t\tif t := rv.Type(); t != typeByteSlice && !t.Implements(typeDriverValuer) {\n\t\t\tif n := rv.Len(); n > 0 {\n\t\t\t\treturn appendArray(b, rv, n)\n\t\t\t}\n\n\t\t\treturn b, \"\", nil\n\t\t}\n\t}\n\n\tvar del = \",\"\n\tvar err error\n\tvar iv any = rv.Interface()\n\n\tif ad, ok := iv.(ArrayDelimiter); ok {\n\t\tdel = ad.ArrayDelimiter()\n\t}\n\n\tif iv, err = driver.DefaultParameterConverter.ConvertValue(iv); err != nil {\n\t\treturn b, del, err\n\t}\n\n\tswitch v := iv.(type) {\n\tcase nil:\n\t\treturn append(b, \"NULL\"...), del, nil\n\tcase []byte:\n\t\treturn appendArrayQuotedBytes(b, v), del, nil\n\tcase string:\n\t\treturn appendArrayQuotedBytes(b, []byte(v)), del, nil\n\t}\n\n\tb, err = appendValue(b, iv)\n\treturn b, del, err\n}\n\nfunc appendArrayQuotedBytes(b, v []byte) []byte {\n\tb = append(b, '\"')\n\tfor {\n\t\ti := bytes.IndexAny(v, `\"\\`)\n\t\tif i < 0 {\n\t\t\tb = append(b, v...)\n\t\t\tbreak\n\t\t}\n\t\tif i > 0 {\n\t\t\tb = append(b, v[:i]...)\n\t\t}\n\t\tb = append(b, '\\\\', v[i])\n\t\tv = v[i+1:]\n\t}\n\treturn append(b, '\"')\n}\n\nfunc appendValue(b []byte, v driver.Value) ([]byte, error) {\n\treturn append(b, encode(nil, v, 0)...), nil\n}\n\n// parseArray extracts the dimensions and elements of an array represented in\n// text format. Only representations emitted by the backend are supported.\n// Notably, whitespace around brackets and delimiters is significant, and NULL\n// is case-sensitive.\n//\n// See http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-IO\nfunc parseArray(src, del []byte) (dims []int, elems [][]byte, err error) {\n\tvar depth, i int\n\n\tif len(src) < 1 || src[0] != '{' {\n\t\treturn nil, nil, fmt.Errorf(\"pq: unable to parse array; expected %q at offset %d\", '{', 0)\n\t}\n\nOpen:\n\tfor i < len(src) {\n\t\tswitch src[i] {\n\t\tcase '{':\n\t\t\tdepth++\n\t\t\ti++\n\t\tcase '}':\n\t\t\telems = make([][]byte, 0)\n\t\t\tgoto Close\n\t\tdefault:\n\t\t\tbreak Open\n\t\t}\n\t}\n\tdims = make([]int, i)\n\nElement:\n\tfor i < len(src) {\n\t\tswitch src[i] {\n\t\tcase '{':\n\t\t\tif depth == len(dims) {\n\t\t\t\tbreak Element\n\t\t\t}\n\t\t\tdepth++\n\t\t\tdims[depth-1] = 0\n\t\t\ti++\n\t\tcase '\"':\n\t\t\tvar elem = []byte{}\n\t\t\tvar escape bool\n\t\t\tfor i++; i < len(src); i++ {\n\t\t\t\tif escape {\n\t\t\t\t\telem = append(elem, src[i])\n\t\t\t\t\tescape = false\n\t\t\t\t} else {\n\t\t\t\t\tswitch src[i] {\n\t\t\t\t\tdefault:\n\t\t\t\t\t\telem = append(elem, src[i])\n\t\t\t\t\tcase '\\\\':\n\t\t\t\t\t\tescape = true\n\t\t\t\t\tcase '\"':\n\t\t\t\t\t\telems = append(elems, elem)\n\t\t\t\t\t\ti++\n\t\t\t\t\t\tbreak Element\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\tdefault:\n\t\t\tfor start := i; i < len(src); i++ {\n\t\t\t\tif bytes.HasPrefix(src[i:], del) || src[i] == '}' {\n\t\t\t\t\telem := src[start:i]\n\t\t\t\t\tif len(elem) == 0 {\n\t\t\t\t\t\treturn nil, nil, fmt.Errorf(\"pq: unable to parse array; unexpected %q at offset %d\", src[i], i)\n\t\t\t\t\t}\n\t\t\t\t\tif bytes.Equal(elem, []byte(\"NULL\")) {\n\t\t\t\t\t\telem = nil\n\t\t\t\t\t}\n\t\t\t\t\telems = append(elems, elem)\n\t\t\t\t\tbreak Element\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfor i < len(src) {\n\t\tif bytes.HasPrefix(src[i:], del) && depth > 0 {\n\t\t\tdims[depth-1]++\n\t\t\ti += len(del)\n\t\t\tgoto Element\n\t\t} else if src[i] == '}' && depth > 0 {\n\t\t\tdims[depth-1]++\n\t\t\tdepth--\n\t\t\ti++\n\t\t} else {\n\t\t\treturn nil, nil, fmt.Errorf(\"pq: unable to parse array; unexpected %q at offset %d\", src[i], i)\n\t\t}\n\t}\n\nClose:\n\tfor i < len(src) {\n\t\tif src[i] == '}' && depth > 0 {\n\t\t\tdepth--\n\t\t\ti++\n\t\t} else {\n\t\t\treturn nil, nil, fmt.Errorf(\"pq: unable to parse array; unexpected %q at offset %d\", src[i], i)\n\t\t}\n\t}\n\tif depth > 0 {\n\t\terr = fmt.Errorf(\"pq: unable to parse array; expected %q at offset %d\", '}', i)\n\t}\n\tif err == nil {\n\t\tfor _, d := range dims {\n\t\t\tif (len(elems) % d) != 0 {\n\t\t\t\terr = fmt.Errorf(\"pq: multidimensional arrays must have elements with matching dimensions\")\n\t\t\t}\n\t\t}\n\t}\n\treturn\n}\n\nfunc scanLinearArray(src, del []byte, typ string) (elems [][]byte, err error) {\n\tdims, elems, err := parseArray(src, del)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif len(dims) > 1 {\n\t\treturn nil, fmt.Errorf(\"pq: cannot convert ARRAY%s to %s\", strings.Replace(fmt.Sprint(dims), \" \", \"][\", -1), typ)\n\t}\n\treturn elems, err\n}\n"
  },
  {
    "path": "gossh/pgsql/buf.go",
    "content": "package pgsql\n\nimport (\n\t\"bytes\"\n\t\"encoding/binary\"\n\n\t\"gossh/pgsql/oid\"\n)\n\ntype readBuf []byte\n\nfunc (b *readBuf) int32() (n int) {\n\tn = int(int32(binary.BigEndian.Uint32(*b)))\n\t*b = (*b)[4:]\n\treturn\n}\n\nfunc (b *readBuf) oid() (n oid.Oid) {\n\tn = oid.Oid(binary.BigEndian.Uint32(*b))\n\t*b = (*b)[4:]\n\treturn\n}\n\n// N.B: this is actually an unsigned 16-bit integer, unlike int32\nfunc (b *readBuf) int16() (n int) {\n\tn = int(binary.BigEndian.Uint16(*b))\n\t*b = (*b)[2:]\n\treturn\n}\n\nfunc (b *readBuf) string() string {\n\ti := bytes.IndexByte(*b, 0)\n\tif i < 0 {\n\t\terrorf(\"invalid message format; expected string terminator\")\n\t}\n\ts := (*b)[:i]\n\t*b = (*b)[i+1:]\n\treturn string(s)\n}\n\nfunc (b *readBuf) next(n int) (v []byte) {\n\tv = (*b)[:n]\n\t*b = (*b)[n:]\n\treturn\n}\n\nfunc (b *readBuf) byte() byte {\n\treturn b.next(1)[0]\n}\n\ntype writeBuf struct {\n\tbuf []byte\n\tpos int\n}\n\nfunc (b *writeBuf) int32(n int) {\n\tx := make([]byte, 4)\n\tbinary.BigEndian.PutUint32(x, uint32(n))\n\tb.buf = append(b.buf, x...)\n}\n\nfunc (b *writeBuf) int16(n int) {\n\tx := make([]byte, 2)\n\tbinary.BigEndian.PutUint16(x, uint16(n))\n\tb.buf = append(b.buf, x...)\n}\n\nfunc (b *writeBuf) string(s string) {\n\tb.buf = append(append(b.buf, s...), '\\000')\n}\n\nfunc (b *writeBuf) byte(c byte) {\n\tb.buf = append(b.buf, c)\n}\n\nfunc (b *writeBuf) bytes(v []byte) {\n\tb.buf = append(b.buf, v...)\n}\n\nfunc (b *writeBuf) wrap() []byte {\n\tp := b.buf[b.pos:]\n\tbinary.BigEndian.PutUint32(p, uint32(len(p)))\n\treturn b.buf\n}\n\nfunc (b *writeBuf) next(c byte) {\n\tp := b.buf[b.pos:]\n\tbinary.BigEndian.PutUint32(p, uint32(len(p)))\n\tb.pos = len(b.buf) + 1\n\tb.buf = append(b.buf, c, 0, 0, 0, 0)\n}\n"
  },
  {
    "path": "gossh/pgsql/conn.go",
    "content": "package pgsql\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/md5\"\n\t\"crypto/sha256\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"os\"\n\t\"os/user\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode\"\n\n\t\"gossh/pgsql/oid\"\n\t\"gossh/pgsql/scram\"\n)\n\n// Common error types\nvar (\n\tErrNotSupported              = errors.New(\"pq: Unsupported command\")\n\tErrInFailedTransaction       = errors.New(\"pq: Could not complete operation in a failed transaction\")\n\tErrSSLNotSupported           = errors.New(\"pq: SSL is not enabled on the server\")\n\tErrSSLKeyUnknownOwnership    = errors.New(\"pq: Could not get owner information for private key, may not be properly protected\")\n\tErrSSLKeyHasWorldPermissions = errors.New(\"pq: Private key has world access. Permissions should be u=rw,g=r (0640) if owned by root, or u=rw (0600), or less\")\n\n\tErrCouldNotDetectUsername = errors.New(\"pq: Could not detect default username. Please provide one explicitly\")\n\n\terrUnexpectedReady = errors.New(\"unexpected ReadyForQuery\")\n\terrNoRowsAffected  = errors.New(\"no RowsAffected available after the empty statement\")\n\terrNoLastInsertID  = errors.New(\"no LastInsertId available after the empty statement\")\n)\n\n// Compile time validation that our types implement the expected interfaces\nvar (\n\t_ driver.Driver = Driver{}\n)\n\n// Driver is the Postgres database driver.\ntype Driver struct{}\n\n// Open opens a new connection to the database. name is a connection string.\n// Most users should only use it through database/sql package from the standard\n// library.\nfunc (d Driver) Open(name string) (driver.Conn, error) {\n\treturn Open(name)\n}\n\nfunc init() {\n\tsql.Register(\"postgres\", &Driver{})\n}\n\ntype parameterStatus struct {\n\t// server version in the same format as server_version_num, or 0 if\n\t// unavailable\n\tserverVersion int\n\n\t// the current location based on the TimeZone value of the session, if\n\t// available\n\tcurrentLocation *time.Location\n}\n\ntype transactionStatus byte\n\nconst (\n\ttxnStatusIdle                transactionStatus = 'I'\n\ttxnStatusIdleInTransaction   transactionStatus = 'T'\n\ttxnStatusInFailedTransaction transactionStatus = 'E'\n)\n\nfunc (s transactionStatus) String() string {\n\tswitch s {\n\tcase txnStatusIdle:\n\t\treturn \"idle\"\n\tcase txnStatusIdleInTransaction:\n\t\treturn \"idle in transaction\"\n\tcase txnStatusInFailedTransaction:\n\t\treturn \"in a failed transaction\"\n\tdefault:\n\t\terrorf(\"unknown transactionStatus %d\", s)\n\t}\n\n\tpanic(\"not reached\")\n}\n\n// Dialer is the dialer interface. It can be used to obtain more control over\n// how pq creates network connections.\ntype Dialer interface {\n\tDial(network, address string) (net.Conn, error)\n\tDialTimeout(network, address string, timeout time.Duration) (net.Conn, error)\n}\n\n// DialerContext is the context-aware dialer interface.\ntype DialerContext interface {\n\tDialContext(ctx context.Context, network, address string) (net.Conn, error)\n}\n\ntype defaultDialer struct {\n\td net.Dialer\n}\n\nfunc (d defaultDialer) Dial(network, address string) (net.Conn, error) {\n\treturn d.d.Dial(network, address)\n}\nfunc (d defaultDialer) DialTimeout(\n\tnetwork, address string, timeout time.Duration,\n) (net.Conn, error) {\n\tctx, cancel := context.WithTimeout(context.Background(), timeout)\n\tdefer cancel()\n\treturn d.DialContext(ctx, network, address)\n}\nfunc (d defaultDialer) DialContext(ctx context.Context, network, address string) (net.Conn, error) {\n\treturn d.d.DialContext(ctx, network, address)\n}\n\ntype conn struct {\n\tc         net.Conn\n\tbuf       *bufio.Reader\n\tnamei     int\n\tscratch   [512]byte\n\ttxnStatus transactionStatus\n\ttxnFinish func()\n\n\t// Save connection arguments to use during CancelRequest.\n\tdialer Dialer\n\topts   values\n\n\t// Cancellation key data for use with CancelRequest messages.\n\tprocessID int\n\tsecretKey int\n\n\tparameterStatus parameterStatus\n\n\tsaveMessageType   byte\n\tsaveMessageBuffer []byte\n\n\t// If an error is set, this connection is bad and all public-facing\n\t// functions should return the appropriate error by calling get()\n\t// (ErrBadConn) or getForNext().\n\terr syncErr\n\n\t// If set, this connection should never use the binary format when\n\t// receiving query results from prepared statements.  Only provided for\n\t// debugging.\n\tdisablePreparedBinaryResult bool\n\n\t// Whether to always send []byte parameters over as binary.  Enables single\n\t// round-trip mode for non-prepared Query calls.\n\tbinaryParameters bool\n\n\t// If true this connection is in the middle of a COPY\n\tinCopy bool\n\n\t// If not nil, notices will be synchronously sent here\n\tnoticeHandler func(*Error)\n\n\t// If not nil, notifications will be synchronously sent here\n\tnotificationHandler func(*Notification)\n\n\t// GSSAPI context\n\tgss GSS\n}\n\ntype syncErr struct {\n\terr error\n\tsync.Mutex\n}\n\n// Return ErrBadConn if connection is bad.\nfunc (e *syncErr) get() error {\n\te.Lock()\n\tdefer e.Unlock()\n\tif e.err != nil {\n\t\treturn driver.ErrBadConn\n\t}\n\treturn nil\n}\n\n// Return the error set on the connection. Currently only used by rows.Next.\nfunc (e *syncErr) getForNext() error {\n\te.Lock()\n\tdefer e.Unlock()\n\treturn e.err\n}\n\n// Set error, only if it isn't set yet.\nfunc (e *syncErr) set(err error) {\n\tif err == nil {\n\t\tpanic(\"attempt to set nil err\")\n\t}\n\te.Lock()\n\tdefer e.Unlock()\n\tif e.err == nil {\n\t\te.err = err\n\t}\n}\n\n// Handle driver-side settings in parsed connection string.\nfunc (cn *conn) handleDriverSettings(o values) (err error) {\n\tboolSetting := func(key string, val *bool) error {\n\t\tif value, ok := o[key]; ok {\n\t\t\tif value == \"yes\" {\n\t\t\t\t*val = true\n\t\t\t} else if value == \"no\" {\n\t\t\t\t*val = false\n\t\t\t} else {\n\t\t\t\treturn fmt.Errorf(\"unrecognized value %q for %s\", value, key)\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\terr = boolSetting(\"disable_prepared_binary_result\", &cn.disablePreparedBinaryResult)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn boolSetting(\"binary_parameters\", &cn.binaryParameters)\n}\n\nfunc (cn *conn) handlePgpass(o values) {\n\t// if a password was supplied, do not process .pgpass\n\tif _, ok := o[\"password\"]; ok {\n\t\treturn\n\t}\n\tfilename := os.Getenv(\"PGPASSFILE\")\n\tif filename == \"\" {\n\t\t// XXX this code doesn't work on Windows where the default filename is\n\t\t// XXX %APPDATA%\\postgresql\\pgpass.conf\n\t\t// Prefer $HOME over user.Current due to glibc bug: golang.org/issue/13470\n\t\tuserHome := os.Getenv(\"HOME\")\n\t\tif userHome == \"\" {\n\t\t\tuser, err := user.Current()\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tuserHome = user.HomeDir\n\t\t}\n\t\tfilename = filepath.Join(userHome, \".pgpass\")\n\t}\n\tfileinfo, err := os.Stat(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\tmode := fileinfo.Mode()\n\tif mode&(0x77) != 0 {\n\t\t// XXX should warn about incorrect .pgpass permissions as psql does\n\t\treturn\n\t}\n\tfile, err := os.Open(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer file.Close()\n\tscanner := bufio.NewScanner(io.Reader(file))\n\t// From: https://github.com/tg/pgpass/blob/master/reader.go\n\tfor scanner.Scan() {\n\t\tif scanText(scanner.Text(), o) {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// GetFields is a helper function for scanText.\nfunc getFields(s string) []string {\n\tfs := make([]string, 0, 5)\n\tf := make([]rune, 0, len(s))\n\n\tvar esc bool\n\tfor _, c := range s {\n\t\tswitch {\n\t\tcase esc:\n\t\t\tf = append(f, c)\n\t\t\tesc = false\n\t\tcase c == '\\\\':\n\t\t\tesc = true\n\t\tcase c == ':':\n\t\t\tfs = append(fs, string(f))\n\t\t\tf = f[:0]\n\t\tdefault:\n\t\t\tf = append(f, c)\n\t\t}\n\t}\n\treturn append(fs, string(f))\n}\n\n// ScanText assists HandlePgpass in it's objective.\nfunc scanText(line string, o values) bool {\n\thostname := o[\"host\"]\n\tntw, _ := network(o)\n\tport := o[\"port\"]\n\tdb := o[\"dbname\"]\n\tusername := o[\"user\"]\n\tif len(line) == 0 || line[0] == '#' {\n\t\treturn false\n\t}\n\tsplit := getFields(line)\n\tif len(split) != 5 {\n\t\treturn false\n\t}\n\tif (split[0] == \"*\" || split[0] == hostname || (split[0] == \"localhost\" && (hostname == \"\" || ntw == \"unix\"))) && (split[1] == \"*\" || split[1] == port) && (split[2] == \"*\" || split[2] == db) && (split[3] == \"*\" || split[3] == username) {\n\t\to[\"password\"] = split[4]\n\t\treturn true\n\t}\n\treturn false\n}\n\nfunc (cn *conn) writeBuf(b byte) *writeBuf {\n\tcn.scratch[0] = b\n\treturn &writeBuf{\n\t\tbuf: cn.scratch[:5],\n\t\tpos: 1,\n\t}\n}\n\n// Open opens a new connection to the database. dsn is a connection string.\n// Most users should only use it through database/sql package from the standard\n// library.\nfunc Open(dsn string) (_ driver.Conn, err error) {\n\treturn DialOpen(defaultDialer{}, dsn)\n}\n\n// DialOpen opens a new connection to the database using a dialer.\nfunc DialOpen(d Dialer, dsn string) (_ driver.Conn, err error) {\n\tc, err := NewConnector(dsn)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tc.Dialer(d)\n\treturn c.open(context.Background())\n}\n\nfunc (c *Connector) open(ctx context.Context) (cn *conn, err error) {\n\t// Handle any panics during connection initialization.  Note that we\n\t// specifically do *not* want to use errRecover(), as that would turn any\n\t// connection errors into ErrBadConns, hiding the real error message from\n\t// the user.\n\tdefer errRecoverNoErrBadConn(&err)\n\n\t// Create a new values map (copy). This makes it so maps in different\n\t// connections do not reference the same underlying data structure, so it\n\t// is safe for multiple connections to concurrently write to their opts.\n\to := make(values)\n\tfor k, v := range c.opts {\n\t\to[k] = v\n\t}\n\n\tcn = &conn{\n\t\topts:   o,\n\t\tdialer: c.dialer,\n\t}\n\terr = cn.handleDriverSettings(o)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcn.handlePgpass(o)\n\n\tcn.c, err = dial(ctx, c.dialer, o)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\terr = cn.ssl(o)\n\tif err != nil {\n\t\tif cn.c != nil {\n\t\t\tcn.c.Close()\n\t\t}\n\t\treturn nil, err\n\t}\n\n\t// cn.startup panics on error. Make sure we don't leak cn.c.\n\tpanicking := true\n\tdefer func() {\n\t\tif panicking {\n\t\t\tcn.c.Close()\n\t\t}\n\t}()\n\n\tcn.buf = bufio.NewReader(cn.c)\n\tcn.startup(o)\n\n\t// reset the deadline, in case one was set (see dial)\n\tif timeout, ok := o[\"connect_timeout\"]; ok && timeout != \"0\" {\n\t\terr = cn.c.SetDeadline(time.Time{})\n\t}\n\tpanicking = false\n\treturn cn, err\n}\n\nfunc dial(ctx context.Context, d Dialer, o values) (net.Conn, error) {\n\tnetwork, address := network(o)\n\n\t// Zero or not specified means wait indefinitely.\n\tif timeout, ok := o[\"connect_timeout\"]; ok && timeout != \"0\" {\n\t\tseconds, err := strconv.ParseInt(timeout, 10, 0)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"invalid value for parameter connect_timeout: %s\", err)\n\t\t}\n\t\tduration := time.Duration(seconds) * time.Second\n\n\t\t// connect_timeout should apply to the entire connection establishment\n\t\t// procedure, so we both use a timeout for the TCP connection\n\t\t// establishment and set a deadline for doing the initial handshake.\n\t\t// The deadline is then reset after startup() is done.\n\t\tdeadline := time.Now().Add(duration)\n\t\tvar conn net.Conn\n\t\tif dctx, ok := d.(DialerContext); ok {\n\t\t\tctx, cancel := context.WithTimeout(ctx, duration)\n\t\t\tdefer cancel()\n\t\t\tconn, err = dctx.DialContext(ctx, network, address)\n\t\t} else {\n\t\t\tconn, err = d.DialTimeout(network, address, duration)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\terr = conn.SetDeadline(deadline)\n\t\treturn conn, err\n\t}\n\tif dctx, ok := d.(DialerContext); ok {\n\t\treturn dctx.DialContext(ctx, network, address)\n\t}\n\treturn d.Dial(network, address)\n}\n\nfunc network(o values) (string, string) {\n\thost := o[\"host\"]\n\n\tif strings.HasPrefix(host, \"/\") {\n\t\tsockPath := path.Join(host, \".s.PGSQL.\"+o[\"port\"])\n\t\treturn \"unix\", sockPath\n\t}\n\n\treturn \"tcp\", net.JoinHostPort(host, o[\"port\"])\n}\n\ntype values map[string]string\n\n// scanner implements a tokenizer for libpq-style option strings.\ntype scanner struct {\n\ts []rune\n\ti int\n}\n\n// newScanner returns a new scanner initialized with the option string s.\nfunc newScanner(s string) *scanner {\n\treturn &scanner{[]rune(s), 0}\n}\n\n// Next returns the next rune.\n// It returns 0, false if the end of the text has been reached.\nfunc (s *scanner) Next() (rune, bool) {\n\tif s.i >= len(s.s) {\n\t\treturn 0, false\n\t}\n\tr := s.s[s.i]\n\ts.i++\n\treturn r, true\n}\n\n// SkipSpaces returns the next non-whitespace rune.\n// It returns 0, false if the end of the text has been reached.\nfunc (s *scanner) SkipSpaces() (rune, bool) {\n\tr, ok := s.Next()\n\tfor unicode.IsSpace(r) && ok {\n\t\tr, ok = s.Next()\n\t}\n\treturn r, ok\n}\n\n// parseOpts parses the options from name and adds them to the values.\n//\n// The parsing code is based on conninfo_parse from libpq's fe-connect.c\nfunc parseOpts(name string, o values) error {\n\ts := newScanner(name)\n\n\tfor {\n\t\tvar (\n\t\t\tkeyRunes, valRunes []rune\n\t\t\tr                  rune\n\t\t\tok                 bool\n\t\t)\n\n\t\tif r, ok = s.SkipSpaces(); !ok {\n\t\t\tbreak\n\t\t}\n\n\t\t// Scan the key\n\t\tfor !unicode.IsSpace(r) && r != '=' {\n\t\t\tkeyRunes = append(keyRunes, r)\n\t\t\tif r, ok = s.Next(); !ok {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// Skip any whitespace if we're not at the = yet\n\t\tif r != '=' {\n\t\t\tr, ok = s.SkipSpaces()\n\t\t}\n\n\t\t// The current character should be =\n\t\tif r != '=' || !ok {\n\t\t\treturn fmt.Errorf(`missing \"=\" after %q in connection info string\"`, string(keyRunes))\n\t\t}\n\n\t\t// Skip any whitespace after the =\n\t\tif r, ok = s.SkipSpaces(); !ok {\n\t\t\t// If we reach the end here, the last value is just an empty string as per libpq.\n\t\t\to[string(keyRunes)] = \"\"\n\t\t\tbreak\n\t\t}\n\n\t\tif r != '\\'' {\n\t\t\tfor !unicode.IsSpace(r) {\n\t\t\t\tif r == '\\\\' {\n\t\t\t\t\tif r, ok = s.Next(); !ok {\n\t\t\t\t\t\treturn fmt.Errorf(`missing character after backslash`)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvalRunes = append(valRunes, r)\n\n\t\t\t\tif r, ok = s.Next(); !ok {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\tquote:\n\t\t\tfor {\n\t\t\t\tif r, ok = s.Next(); !ok {\n\t\t\t\t\treturn fmt.Errorf(`unterminated quoted string literal in connection string`)\n\t\t\t\t}\n\t\t\t\tswitch r {\n\t\t\t\tcase '\\'':\n\t\t\t\t\tbreak quote\n\t\t\t\tcase '\\\\':\n\t\t\t\t\tr, _ = s.Next()\n\t\t\t\t\tfallthrough\n\t\t\t\tdefault:\n\t\t\t\t\tvalRunes = append(valRunes, r)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\to[string(keyRunes)] = string(valRunes)\n\t}\n\n\treturn nil\n}\n\nfunc (cn *conn) isInTransaction() bool {\n\treturn cn.txnStatus == txnStatusIdleInTransaction ||\n\t\tcn.txnStatus == txnStatusInFailedTransaction\n}\n\nfunc (cn *conn) checkIsInTransaction(intxn bool) {\n\tif cn.isInTransaction() != intxn {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected transaction status %v\", cn.txnStatus)\n\t}\n}\n\nfunc (cn *conn) Begin() (_ driver.Tx, err error) {\n\treturn cn.begin(\"\")\n}\n\nfunc (cn *conn) begin(mode string) (_ driver.Tx, err error) {\n\tif err := cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer cn.errRecover(&err)\n\n\tcn.checkIsInTransaction(false)\n\t_, commandTag, err := cn.simpleExec(\"BEGIN\" + mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif commandTag != \"BEGIN\" {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\treturn nil, fmt.Errorf(\"unexpected command tag %s\", commandTag)\n\t}\n\tif cn.txnStatus != txnStatusIdleInTransaction {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\treturn nil, fmt.Errorf(\"unexpected transaction status %v\", cn.txnStatus)\n\t}\n\treturn cn, nil\n}\n\nfunc (cn *conn) closeTxn() {\n\tif finish := cn.txnFinish; finish != nil {\n\t\tfinish()\n\t}\n}\n\nfunc (cn *conn) Commit() (err error) {\n\tdefer cn.closeTxn()\n\tif err := cn.err.get(); err != nil {\n\t\treturn err\n\t}\n\tdefer cn.errRecover(&err)\n\n\tcn.checkIsInTransaction(true)\n\t// We don't want the client to think that everything is okay if it tries\n\t// to commit a failed transaction.  However, no matter what we return,\n\t// database/sql will release this connection back into the free connection\n\t// pool so we have to abort the current transaction here.  Note that you\n\t// would get the same behaviour if you issued a COMMIT in a failed\n\t// transaction, so it's also the least surprising thing to do here.\n\tif cn.txnStatus == txnStatusInFailedTransaction {\n\t\tif err := cn.rollback(); err != nil {\n\t\t\treturn err\n\t\t}\n\t\treturn ErrInFailedTransaction\n\t}\n\n\t_, commandTag, err := cn.simpleExec(\"COMMIT\")\n\tif err != nil {\n\t\tif cn.isInTransaction() {\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t}\n\t\treturn err\n\t}\n\tif commandTag != \"COMMIT\" {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\treturn fmt.Errorf(\"unexpected command tag %s\", commandTag)\n\t}\n\tcn.checkIsInTransaction(false)\n\treturn nil\n}\n\nfunc (cn *conn) Rollback() (err error) {\n\tdefer cn.closeTxn()\n\tif err := cn.err.get(); err != nil {\n\t\treturn err\n\t}\n\tdefer cn.errRecover(&err)\n\treturn cn.rollback()\n}\n\nfunc (cn *conn) rollback() (err error) {\n\tcn.checkIsInTransaction(true)\n\t_, commandTag, err := cn.simpleExec(\"ROLLBACK\")\n\tif err != nil {\n\t\tif cn.isInTransaction() {\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t}\n\t\treturn err\n\t}\n\tif commandTag != \"ROLLBACK\" {\n\t\treturn fmt.Errorf(\"unexpected command tag %s\", commandTag)\n\t}\n\tcn.checkIsInTransaction(false)\n\treturn nil\n}\n\nfunc (cn *conn) gname() string {\n\tcn.namei++\n\treturn strconv.FormatInt(int64(cn.namei), 10)\n}\n\nfunc (cn *conn) simpleExec(q string) (res driver.Result, commandTag string, err error) {\n\tb := cn.writeBuf('Q')\n\tb.string(q)\n\tcn.send(b)\n\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'C':\n\t\t\tres, commandTag = cn.parseComplete(r.string())\n\t\tcase 'Z':\n\t\t\tcn.processReadyForQuery(r)\n\t\t\tif res == nil && err == nil {\n\t\t\t\terr = errUnexpectedReady\n\t\t\t}\n\t\t\t// done\n\t\t\treturn\n\t\tcase 'E':\n\t\t\terr = parseError(r)\n\t\tcase 'I':\n\t\t\tres = emptyRows\n\t\tcase 'T', 'D':\n\t\t\t// ignore any results\n\t\tdefault:\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unknown response for simple query: %q\", t)\n\t\t}\n\t}\n}\n\nfunc (cn *conn) simpleQuery(q string) (res *rows, err error) {\n\tdefer cn.errRecover(&err)\n\n\tb := cn.writeBuf('Q')\n\tb.string(q)\n\tcn.send(b)\n\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'C', 'I':\n\t\t\t// We allow queries which don't return any results through Query as\n\t\t\t// well as Exec.  We still have to give database/sql a rows object\n\t\t\t// the user can close, though, to avoid connections from being\n\t\t\t// leaked.  A \"rows\" with done=true works fine for that purpose.\n\t\t\tif err != nil {\n\t\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected message %q in simple query execution\", t)\n\t\t\t}\n\t\t\tif res == nil {\n\t\t\t\tres = &rows{\n\t\t\t\t\tcn: cn,\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Set the result and tag to the last command complete if there wasn't a\n\t\t\t// query already run. Although queries usually return from here and cede\n\t\t\t// control to Next, a query with zero results does not.\n\t\t\tif t == 'C' {\n\t\t\t\tres.result, res.tag = cn.parseComplete(r.string())\n\t\t\t\tif res.colNames != nil {\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\t\t\tres.done = true\n\t\tcase 'Z':\n\t\t\tcn.processReadyForQuery(r)\n\t\t\t// done\n\t\t\treturn\n\t\tcase 'E':\n\t\t\tres = nil\n\t\t\terr = parseError(r)\n\t\tcase 'D':\n\t\t\tif res == nil {\n\t\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected DataRow in simple query execution\")\n\t\t\t}\n\t\t\t// the query didn't fail; kick off to Next\n\t\t\tcn.saveMessage(t, r)\n\t\t\treturn\n\t\tcase 'T':\n\t\t\t// res might be non-nil here if we received a previous\n\t\t\t// CommandComplete, but that's fine; just overwrite it\n\t\t\tres = &rows{cn: cn}\n\t\t\tres.rowsHeader = parsePortalRowDescribe(r)\n\n\t\t\t// To work around a bug in QueryRow in Go 1.2 and earlier, wait\n\t\t\t// until the first DataRow has been received.\n\t\tdefault:\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unknown response for simple query: %q\", t)\n\t\t}\n\t}\n}\n\ntype noRows struct{}\n\nvar emptyRows noRows\n\nvar _ driver.Result = noRows{}\n\nfunc (noRows) LastInsertId() (int64, error) {\n\treturn 0, errNoLastInsertID\n}\n\nfunc (noRows) RowsAffected() (int64, error) {\n\treturn 0, errNoRowsAffected\n}\n\n// Decides which column formats to use for a prepared statement.  The input is\n// an array of type oids, one element per result column.\nfunc decideColumnFormats(\n\tcolTyps []fieldDesc, forceText bool,\n) (colFmts []format, colFmtData []byte) {\n\tif len(colTyps) == 0 {\n\t\treturn nil, colFmtDataAllText\n\t}\n\n\tcolFmts = make([]format, len(colTyps))\n\tif forceText {\n\t\treturn colFmts, colFmtDataAllText\n\t}\n\n\tallBinary := true\n\tallText := true\n\tfor i, t := range colTyps {\n\t\tswitch t.OID {\n\t\t// This is the list of types to use binary mode for when receiving them\n\t\t// through a prepared statement.  If a type appears in this list, it\n\t\t// must also be implemented in binaryDecode in encode.go.\n\t\tcase oid.T_bytea:\n\t\t\tfallthrough\n\t\tcase oid.T_int8:\n\t\t\tfallthrough\n\t\tcase oid.T_int4:\n\t\t\tfallthrough\n\t\tcase oid.T_int2:\n\t\t\tfallthrough\n\t\tcase oid.T_uuid:\n\t\t\tcolFmts[i] = formatBinary\n\t\t\tallText = false\n\n\t\tdefault:\n\t\t\tallBinary = false\n\t\t}\n\t}\n\n\tif allBinary {\n\t\treturn colFmts, colFmtDataAllBinary\n\t} else if allText {\n\t\treturn colFmts, colFmtDataAllText\n\t} else {\n\t\tcolFmtData = make([]byte, 2+len(colFmts)*2)\n\t\tbinary.BigEndian.PutUint16(colFmtData, uint16(len(colFmts)))\n\t\tfor i, v := range colFmts {\n\t\t\tbinary.BigEndian.PutUint16(colFmtData[2+i*2:], uint16(v))\n\t\t}\n\t\treturn colFmts, colFmtData\n\t}\n}\n\nfunc (cn *conn) prepareTo(q, stmtName string) *stmt {\n\tst := &stmt{cn: cn, name: stmtName}\n\n\tb := cn.writeBuf('P')\n\tb.string(st.name)\n\tb.string(q)\n\tb.int16(0)\n\n\tb.next('D')\n\tb.byte('S')\n\tb.string(st.name)\n\n\tb.next('S')\n\tcn.send(b)\n\n\tcn.readParseResponse()\n\tst.paramTyps, st.colNames, st.colTyps = cn.readStatementDescribeResponse()\n\tst.colFmts, st.colFmtData = decideColumnFormats(st.colTyps, cn.disablePreparedBinaryResult)\n\tcn.readReadyForQuery()\n\treturn st\n}\n\nfunc (cn *conn) Prepare(q string) (_ driver.Stmt, err error) {\n\tif err := cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer cn.errRecover(&err)\n\n\tif len(q) >= 4 && strings.EqualFold(q[:4], \"COPY\") {\n\t\ts, err := cn.prepareCopyIn(q)\n\t\tif err == nil {\n\t\t\tcn.inCopy = true\n\t\t}\n\t\treturn s, err\n\t}\n\treturn cn.prepareTo(q, cn.gname()), nil\n}\n\nfunc (cn *conn) Close() (err error) {\n\t// Skip cn.bad return here because we always want to close a connection.\n\tdefer cn.errRecover(&err)\n\n\t// Ensure that cn.c.Close is always run. Since error handling is done with\n\t// panics and cn.errRecover, the Close must be in a defer.\n\tdefer func() {\n\t\tcerr := cn.c.Close()\n\t\tif err == nil {\n\t\t\terr = cerr\n\t\t}\n\t}()\n\n\t// Don't go through send(); ListenerConn relies on us not scribbling on the\n\t// scratch buffer of this connection.\n\treturn cn.sendSimpleMessage('X')\n}\n\n// Implement the \"Queryer\" interface\nfunc (cn *conn) Query(query string, args []driver.Value) (driver.Rows, error) {\n\treturn cn.query(query, args)\n}\n\nfunc (cn *conn) query(query string, args []driver.Value) (_ *rows, err error) {\n\tif err := cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tif cn.inCopy {\n\t\treturn nil, errCopyInProgress\n\t}\n\tdefer cn.errRecover(&err)\n\n\t// Check to see if we can use the \"simpleQuery\" interface, which is\n\t// *much* faster than going through prepare/exec\n\tif len(args) == 0 {\n\t\treturn cn.simpleQuery(query)\n\t}\n\n\tif cn.binaryParameters {\n\t\tcn.sendBinaryModeQuery(query, args)\n\n\t\tcn.readParseResponse()\n\t\tcn.readBindResponse()\n\t\trows := &rows{cn: cn}\n\t\trows.rowsHeader = cn.readPortalDescribeResponse()\n\t\tcn.postExecuteWorkaround()\n\t\treturn rows, nil\n\t}\n\tst := cn.prepareTo(query, \"\")\n\tst.exec(args)\n\treturn &rows{\n\t\tcn:         cn,\n\t\trowsHeader: st.rowsHeader,\n\t}, nil\n}\n\n// Implement the optional \"Execer\" interface for one-shot queries\nfunc (cn *conn) Exec(query string, args []driver.Value) (res driver.Result, err error) {\n\tif err := cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer cn.errRecover(&err)\n\n\t// Check to see if we can use the \"simpleExec\" interface, which is\n\t// *much* faster than going through prepare/exec\n\tif len(args) == 0 {\n\t\t// ignore commandTag, our caller doesn't care\n\t\tr, _, err := cn.simpleExec(query)\n\t\treturn r, err\n\t}\n\n\tif cn.binaryParameters {\n\t\tcn.sendBinaryModeQuery(query, args)\n\n\t\tcn.readParseResponse()\n\t\tcn.readBindResponse()\n\t\tcn.readPortalDescribeResponse()\n\t\tcn.postExecuteWorkaround()\n\t\tres, _, err = cn.readExecuteResponse(\"Execute\")\n\t\treturn res, err\n\t}\n\t// Use the unnamed statement to defer planning until bind\n\t// time, or else value-based selectivity estimates cannot be\n\t// used.\n\tst := cn.prepareTo(query, \"\")\n\tr, err := st.Exec(args)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn r, err\n}\n\ntype safeRetryError struct {\n\tErr error\n}\n\nfunc (se *safeRetryError) Error() string {\n\treturn se.Err.Error()\n}\n\nfunc (cn *conn) send(m *writeBuf) {\n\tn, err := cn.c.Write(m.wrap())\n\tif err != nil {\n\t\tif n == 0 {\n\t\t\terr = &safeRetryError{Err: err}\n\t\t}\n\t\tpanic(err)\n\t}\n}\n\nfunc (cn *conn) sendStartupPacket(m *writeBuf) error {\n\t_, err := cn.c.Write((m.wrap())[1:])\n\treturn err\n}\n\n// Send a message of type typ to the server on the other end of cn.  The\n// message should have no payload.  This method does not use the scratch\n// buffer.\nfunc (cn *conn) sendSimpleMessage(typ byte) (err error) {\n\t_, err = cn.c.Write([]byte{typ, '\\x00', '\\x00', '\\x00', '\\x04'})\n\treturn err\n}\n\n// saveMessage memorizes a message and its buffer in the conn struct.\n// recvMessage will then return these values on the next call to it.  This\n// method is useful in cases where you have to see what the next message is\n// going to be (e.g. to see whether it's an error or not) but you can't handle\n// the message yourself.\nfunc (cn *conn) saveMessage(typ byte, buf *readBuf) {\n\tif cn.saveMessageType != 0 {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected saveMessageType %d\", cn.saveMessageType)\n\t}\n\tcn.saveMessageType = typ\n\tcn.saveMessageBuffer = *buf\n}\n\n// recvMessage receives any message from the backend, or returns an error if\n// a problem occurred while reading the message.\nfunc (cn *conn) recvMessage(r *readBuf) (byte, error) {\n\t// workaround for a QueryRow bug, see exec\n\tif cn.saveMessageType != 0 {\n\t\tt := cn.saveMessageType\n\t\t*r = cn.saveMessageBuffer\n\t\tcn.saveMessageType = 0\n\t\tcn.saveMessageBuffer = nil\n\t\treturn t, nil\n\t}\n\n\tx := cn.scratch[:5]\n\t_, err := io.ReadFull(cn.buf, x)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// read the type and length of the message that follows\n\tt := x[0]\n\tn := int(binary.BigEndian.Uint32(x[1:])) - 4\n\tvar y []byte\n\tif n <= len(cn.scratch) {\n\t\ty = cn.scratch[:n]\n\t} else {\n\t\ty = make([]byte, n)\n\t}\n\t_, err = io.ReadFull(cn.buf, y)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\t*r = y\n\treturn t, nil\n}\n\n// recv receives a message from the backend, but if an error happened while\n// reading the message or the received message was an ErrorResponse, it panics.\n// NoticeResponses are ignored.  This function should generally be used only\n// during the startup sequence.\nfunc (cn *conn) recv() (t byte, r *readBuf) {\n\tfor {\n\t\tvar err error\n\t\tr = &readBuf{}\n\t\tt, err = cn.recvMessage(r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\tswitch t {\n\t\tcase 'E':\n\t\t\tpanic(parseError(r))\n\t\tcase 'N':\n\t\t\tif n := cn.noticeHandler; n != nil {\n\t\t\t\tn(parseError(r))\n\t\t\t}\n\t\tcase 'A':\n\t\t\tif n := cn.notificationHandler; n != nil {\n\t\t\t\tn(recvNotification(r))\n\t\t\t}\n\t\tdefault:\n\t\t\treturn\n\t\t}\n\t}\n}\n\n// recv1Buf is exactly equivalent to recv1, except it uses a buffer supplied by\n// the caller to avoid an allocation.\nfunc (cn *conn) recv1Buf(r *readBuf) byte {\n\tfor {\n\t\tt, err := cn.recvMessage(r)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\n\t\tswitch t {\n\t\tcase 'A':\n\t\t\tif n := cn.notificationHandler; n != nil {\n\t\t\t\tn(recvNotification(r))\n\t\t\t}\n\t\tcase 'N':\n\t\t\tif n := cn.noticeHandler; n != nil {\n\t\t\t\tn(parseError(r))\n\t\t\t}\n\t\tcase 'S':\n\t\t\tcn.processParameterStatus(r)\n\t\tdefault:\n\t\t\treturn t\n\t\t}\n\t}\n}\n\n// recv1 receives a message from the backend, panicking if an error occurs\n// while attempting to read it.  All asynchronous messages are ignored, with\n// the exception of ErrorResponse.\nfunc (cn *conn) recv1() (t byte, r *readBuf) {\n\tr = &readBuf{}\n\tt = cn.recv1Buf(r)\n\treturn t, r\n}\n\nfunc (cn *conn) ssl(o values) error {\n\tupgrade, err := ssl(o)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif upgrade == nil {\n\t\t// Nothing to do\n\t\treturn nil\n\t}\n\n\tw := cn.writeBuf(0)\n\tw.int32(80877103)\n\tif err = cn.sendStartupPacket(w); err != nil {\n\t\treturn err\n\t}\n\n\tb := cn.scratch[:1]\n\t_, err = io.ReadFull(cn.c, b)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif b[0] != 'S' {\n\t\treturn ErrSSLNotSupported\n\t}\n\n\tcn.c, err = upgrade(cn.c)\n\treturn err\n}\n\n// isDriverSetting returns true iff a setting is purely for configuring the\n// driver's options and should not be sent to the server in the connection\n// startup packet.\nfunc isDriverSetting(key string) bool {\n\tswitch key {\n\tcase \"host\", \"port\":\n\t\treturn true\n\tcase \"password\":\n\t\treturn true\n\tcase \"sslmode\", \"sslcert\", \"sslkey\", \"sslrootcert\", \"sslinline\", \"sslsni\":\n\t\treturn true\n\tcase \"fallback_application_name\":\n\t\treturn true\n\tcase \"connect_timeout\":\n\t\treturn true\n\tcase \"disable_prepared_binary_result\":\n\t\treturn true\n\tcase \"binary_parameters\":\n\t\treturn true\n\tcase \"krbsrvname\":\n\t\treturn true\n\tcase \"krbspn\":\n\t\treturn true\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc (cn *conn) startup(o values) {\n\tw := cn.writeBuf(0)\n\tw.int32(196608)\n\t// Send the backend the name of the database we want to connect to, and the\n\t// user we want to connect as.  Additionally, we send over any run-time\n\t// parameters potentially included in the connection string.  If the server\n\t// doesn't recognize any of them, it will reply with an error.\n\tfor k, v := range o {\n\t\tif isDriverSetting(k) {\n\t\t\t// skip options which can't be run-time parameters\n\t\t\tcontinue\n\t\t}\n\t\t// The protocol requires us to supply the database name as \"database\"\n\t\t// instead of \"dbname\".\n\t\tif k == \"dbname\" {\n\t\t\tk = \"database\"\n\t\t}\n\t\tw.string(k)\n\t\tw.string(v)\n\t}\n\tw.string(\"\")\n\tif err := cn.sendStartupPacket(w); err != nil {\n\t\tpanic(err)\n\t}\n\n\tfor {\n\t\tt, r := cn.recv()\n\t\tswitch t {\n\t\tcase 'K':\n\t\t\tcn.processBackendKeyData(r)\n\t\tcase 'S':\n\t\t\tcn.processParameterStatus(r)\n\t\tcase 'R':\n\t\t\tcn.auth(r, o)\n\t\tcase 'Z':\n\t\t\tcn.processReadyForQuery(r)\n\t\t\treturn\n\t\tdefault:\n\t\t\terrorf(\"unknown response for startup: %q\", t)\n\t\t}\n\t}\n}\n\nfunc (cn *conn) auth(r *readBuf, o values) {\n\tswitch code := r.int32(); code {\n\tcase 0:\n\t\t// OK\n\tcase 3:\n\t\tw := cn.writeBuf('p')\n\t\tw.string(o[\"password\"])\n\t\tcn.send(w)\n\n\t\tt, r := cn.recv()\n\t\tif t != 'R' {\n\t\t\terrorf(\"unexpected password response: %q\", t)\n\t\t}\n\n\t\tif r.int32() != 0 {\n\t\t\terrorf(\"unexpected authentication response: %q\", t)\n\t\t}\n\tcase 5:\n\t\ts := string(r.next(4))\n\t\tw := cn.writeBuf('p')\n\t\tw.string(\"md5\" + md5s(md5s(o[\"password\"]+o[\"user\"])+s))\n\t\tcn.send(w)\n\n\t\tt, r := cn.recv()\n\t\tif t != 'R' {\n\t\t\terrorf(\"unexpected password response: %q\", t)\n\t\t}\n\n\t\tif r.int32() != 0 {\n\t\t\terrorf(\"unexpected authentication response: %q\", t)\n\t\t}\n\tcase 7: // GSSAPI, startup\n\t\tif newGss == nil {\n\t\t\terrorf(\"kerberos error: no GSSAPI provider registered (import github.com/lib/pq/auth/kerberos if you need Kerberos support)\")\n\t\t}\n\t\tcli, err := newGss()\n\t\tif err != nil {\n\t\t\terrorf(\"kerberos error: %s\", err.Error())\n\t\t}\n\n\t\tvar token []byte\n\n\t\tif spn, ok := o[\"krbspn\"]; ok {\n\t\t\t// Use the supplied SPN if provided..\n\t\t\ttoken, err = cli.GetInitTokenFromSpn(spn)\n\t\t} else {\n\t\t\t// Allow the kerberos service name to be overridden\n\t\t\tservice := \"postgres\"\n\t\t\tif val, ok := o[\"krbsrvname\"]; ok {\n\t\t\t\tservice = val\n\t\t\t}\n\n\t\t\ttoken, err = cli.GetInitToken(o[\"host\"], service)\n\t\t}\n\n\t\tif err != nil {\n\t\t\terrorf(\"failed to get Kerberos ticket: %q\", err)\n\t\t}\n\n\t\tw := cn.writeBuf('p')\n\t\tw.bytes(token)\n\t\tcn.send(w)\n\n\t\t// Store for GSSAPI continue message\n\t\tcn.gss = cli\n\n\tcase 8: // GSSAPI continue\n\n\t\tif cn.gss == nil {\n\t\t\terrorf(\"GSSAPI protocol error\")\n\t\t}\n\n\t\tb := []byte(*r)\n\n\t\tdone, tokOut, err := cn.gss.Continue(b)\n\t\tif err == nil && !done {\n\t\t\tw := cn.writeBuf('p')\n\t\t\tw.bytes(tokOut)\n\t\t\tcn.send(w)\n\t\t}\n\n\t\t// Errors fall through and read the more detailed message\n\t\t// from the server..\n\n\tcase 10:\n\t\tsc := scram.NewClient(sha256.New, o[\"user\"], o[\"password\"])\n\t\tsc.Step(nil)\n\t\tif sc.Err() != nil {\n\t\t\terrorf(\"SCRAM-SHA-256 error: %s\", sc.Err().Error())\n\t\t}\n\t\tscOut := sc.Out()\n\n\t\tw := cn.writeBuf('p')\n\t\tw.string(\"SCRAM-SHA-256\")\n\t\tw.int32(len(scOut))\n\t\tw.bytes(scOut)\n\t\tcn.send(w)\n\n\t\tt, r := cn.recv()\n\t\tif t != 'R' {\n\t\t\terrorf(\"unexpected password response: %q\", t)\n\t\t}\n\n\t\tif r.int32() != 11 {\n\t\t\terrorf(\"unexpected authentication response: %q\", t)\n\t\t}\n\n\t\tnextStep := r.next(len(*r))\n\t\tsc.Step(nextStep)\n\t\tif sc.Err() != nil {\n\t\t\terrorf(\"SCRAM-SHA-256 error: %s\", sc.Err().Error())\n\t\t}\n\n\t\tscOut = sc.Out()\n\t\tw = cn.writeBuf('p')\n\t\tw.bytes(scOut)\n\t\tcn.send(w)\n\n\t\tt, r = cn.recv()\n\t\tif t != 'R' {\n\t\t\terrorf(\"unexpected password response: %q\", t)\n\t\t}\n\n\t\tif r.int32() != 12 {\n\t\t\terrorf(\"unexpected authentication response: %q\", t)\n\t\t}\n\n\t\tnextStep = r.next(len(*r))\n\t\tsc.Step(nextStep)\n\t\tif sc.Err() != nil {\n\t\t\terrorf(\"SCRAM-SHA-256 error: %s\", sc.Err().Error())\n\t\t}\n\n\tdefault:\n\t\terrorf(\"unknown authentication response: %d\", code)\n\t}\n}\n\ntype format int\n\nconst formatText format = 0\nconst formatBinary format = 1\n\n// One result-column format code with the value 1 (i.e. all binary).\nvar colFmtDataAllBinary = []byte{0, 1, 0, 1}\n\n// No result-column format codes (i.e. all text).\nvar colFmtDataAllText = []byte{0, 0}\n\ntype stmt struct {\n\tcn   *conn\n\tname string\n\trowsHeader\n\tcolFmtData []byte\n\tparamTyps  []oid.Oid\n\tclosed     bool\n}\n\nfunc (st *stmt) Close() (err error) {\n\tif st.closed {\n\t\treturn nil\n\t}\n\tif err := st.cn.err.get(); err != nil {\n\t\treturn err\n\t}\n\tdefer st.cn.errRecover(&err)\n\n\tw := st.cn.writeBuf('C')\n\tw.byte('S')\n\tw.string(st.name)\n\tst.cn.send(w)\n\n\tst.cn.send(st.cn.writeBuf('S'))\n\n\tt, _ := st.cn.recv1()\n\tif t != '3' {\n\t\tst.cn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected close response: %q\", t)\n\t}\n\tst.closed = true\n\n\tt, r := st.cn.recv1()\n\tif t != 'Z' {\n\t\tst.cn.err.set(driver.ErrBadConn)\n\t\terrorf(\"expected ready for query, but got: %q\", t)\n\t}\n\tst.cn.processReadyForQuery(r)\n\n\treturn nil\n}\n\nfunc (st *stmt) Query(v []driver.Value) (r driver.Rows, err error) {\n\treturn st.query(v)\n}\n\nfunc (st *stmt) query(v []driver.Value) (r *rows, err error) {\n\tif err := st.cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer st.cn.errRecover(&err)\n\n\tst.exec(v)\n\treturn &rows{\n\t\tcn:         st.cn,\n\t\trowsHeader: st.rowsHeader,\n\t}, nil\n}\n\nfunc (st *stmt) Exec(v []driver.Value) (res driver.Result, err error) {\n\tif err := st.cn.err.get(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer st.cn.errRecover(&err)\n\n\tst.exec(v)\n\tres, _, err = st.cn.readExecuteResponse(\"simple query\")\n\treturn res, err\n}\n\nfunc (st *stmt) exec(v []driver.Value) {\n\tif len(v) >= 65536 {\n\t\terrorf(\"got %d parameters but PostgreSQL only supports 65535 parameters\", len(v))\n\t}\n\tif len(v) != len(st.paramTyps) {\n\t\terrorf(\"got %d parameters but the statement requires %d\", len(v), len(st.paramTyps))\n\t}\n\n\tcn := st.cn\n\tw := cn.writeBuf('B')\n\tw.byte(0) // unnamed portal\n\tw.string(st.name)\n\n\tif cn.binaryParameters {\n\t\tcn.sendBinaryParameters(w, v)\n\t} else {\n\t\tw.int16(0)\n\t\tw.int16(len(v))\n\t\tfor i, x := range v {\n\t\t\tif x == nil {\n\t\t\t\tw.int32(-1)\n\t\t\t} else {\n\t\t\t\tb := encode(&cn.parameterStatus, x, st.paramTyps[i])\n\t\t\t\tw.int32(len(b))\n\t\t\t\tw.bytes(b)\n\t\t\t}\n\t\t}\n\t}\n\tw.bytes(st.colFmtData)\n\n\tw.next('E')\n\tw.byte(0)\n\tw.int32(0)\n\n\tw.next('S')\n\tcn.send(w)\n\n\tcn.readBindResponse()\n\tcn.postExecuteWorkaround()\n\n}\n\nfunc (st *stmt) NumInput() int {\n\treturn len(st.paramTyps)\n}\n\n// parseComplete parses the \"command tag\" from a CommandComplete message, and\n// returns the number of rows affected (if applicable) and a string\n// identifying only the command that was executed, e.g. \"ALTER TABLE\".  If the\n// command tag could not be parsed, parseComplete panics.\nfunc (cn *conn) parseComplete(commandTag string) (driver.Result, string) {\n\tcommandsWithAffectedRows := []string{\n\t\t\"SELECT \",\n\t\t// INSERT is handled below\n\t\t\"UPDATE \",\n\t\t\"DELETE \",\n\t\t\"FETCH \",\n\t\t\"MOVE \",\n\t\t\"COPY \",\n\t}\n\n\tvar affectedRows *string\n\tfor _, tag := range commandsWithAffectedRows {\n\t\tif strings.HasPrefix(commandTag, tag) {\n\t\t\tt := commandTag[len(tag):]\n\t\t\taffectedRows = &t\n\t\t\tcommandTag = tag[:len(tag)-1]\n\t\t\tbreak\n\t\t}\n\t}\n\t// INSERT also includes the oid of the inserted row in its command tag.\n\t// Oids in user tables are deprecated, and the oid is only returned when\n\t// exactly one row is inserted, so it's unlikely to be of value to any\n\t// real-world application and we can ignore it.\n\tif affectedRows == nil && strings.HasPrefix(commandTag, \"INSERT \") {\n\t\tparts := strings.Split(commandTag, \" \")\n\t\tif len(parts) != 3 {\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unexpected INSERT command tag %s\", commandTag)\n\t\t}\n\t\taffectedRows = &parts[len(parts)-1]\n\t\tcommandTag = \"INSERT\"\n\t}\n\t// There should be no affected rows attached to the tag, just return it\n\tif affectedRows == nil {\n\t\treturn driver.RowsAffected(0), commandTag\n\t}\n\tn, err := strconv.ParseInt(*affectedRows, 10, 64)\n\tif err != nil {\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"could not parse commandTag: %s\", err)\n\t}\n\treturn driver.RowsAffected(n), commandTag\n}\n\ntype rowsHeader struct {\n\tcolNames []string\n\tcolTyps  []fieldDesc\n\tcolFmts  []format\n}\n\ntype rows struct {\n\tcn     *conn\n\tfinish func()\n\trowsHeader\n\tdone   bool\n\trb     readBuf\n\tresult driver.Result\n\ttag    string\n\n\tnext *rowsHeader\n}\n\nfunc (rs *rows) Close() error {\n\tif finish := rs.finish; finish != nil {\n\t\tdefer finish()\n\t}\n\t// no need to look at cn.bad as Next() will\n\tfor {\n\t\terr := rs.Next(nil)\n\t\tswitch err {\n\t\tcase nil:\n\t\tcase io.EOF:\n\t\t\t// rs.Next can return io.EOF on both 'Z' (ready for query) and 'T' (row\n\t\t\t// description, used with HasNextResultSet). We need to fetch messages until\n\t\t\t// we hit a 'Z', which is done by waiting for done to be set.\n\t\t\tif rs.done {\n\t\t\t\treturn nil\n\t\t\t}\n\t\tdefault:\n\t\t\treturn err\n\t\t}\n\t}\n}\n\nfunc (rs *rows) Columns() []string {\n\treturn rs.colNames\n}\n\nfunc (rs *rows) Result() driver.Result {\n\tif rs.result == nil {\n\t\treturn emptyRows\n\t}\n\treturn rs.result\n}\n\nfunc (rs *rows) Tag() string {\n\treturn rs.tag\n}\n\nfunc (rs *rows) Next(dest []driver.Value) (err error) {\n\tif rs.done {\n\t\treturn io.EOF\n\t}\n\n\tconn := rs.cn\n\tif err := conn.err.getForNext(); err != nil {\n\t\treturn err\n\t}\n\tdefer conn.errRecover(&err)\n\n\tfor {\n\t\tt := conn.recv1Buf(&rs.rb)\n\t\tswitch t {\n\t\tcase 'E':\n\t\t\terr = parseError(&rs.rb)\n\t\tcase 'C', 'I':\n\t\t\tif t == 'C' {\n\t\t\t\trs.result, rs.tag = conn.parseComplete(rs.rb.string())\n\t\t\t}\n\t\t\tcontinue\n\t\tcase 'Z':\n\t\t\tconn.processReadyForQuery(&rs.rb)\n\t\t\trs.done = true\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn io.EOF\n\t\tcase 'D':\n\t\t\tn := rs.rb.int16()\n\t\t\tif err != nil {\n\t\t\t\tconn.err.set(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected DataRow after error %s\", err)\n\t\t\t}\n\t\t\tif n < len(dest) {\n\t\t\t\tdest = dest[:n]\n\t\t\t}\n\t\t\tfor i := range dest {\n\t\t\t\tl := rs.rb.int32()\n\t\t\t\tif l == -1 {\n\t\t\t\t\tdest[i] = nil\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tdest[i] = decode(&conn.parameterStatus, rs.rb.next(l), rs.colTyps[i].OID, rs.colFmts[i])\n\t\t\t}\n\t\t\treturn\n\t\tcase 'T':\n\t\t\tnext := parsePortalRowDescribe(&rs.rb)\n\t\t\trs.next = &next\n\t\t\treturn io.EOF\n\t\tdefault:\n\t\t\terrorf(\"unexpected message after execute: %q\", t)\n\t\t}\n\t}\n}\n\nfunc (rs *rows) HasNextResultSet() bool {\n\thasNext := rs.next != nil && !rs.done\n\treturn hasNext\n}\n\nfunc (rs *rows) NextResultSet() error {\n\tif rs.next == nil {\n\t\treturn io.EOF\n\t}\n\trs.rowsHeader = *rs.next\n\trs.next = nil\n\treturn nil\n}\n\n// QuoteIdentifier quotes an \"identifier\" (e.g. a table or a column name) to be\n// used as part of an SQL statement.  For example:\n//\n//\ttblname := \"my_table\"\n//\tdata := \"my_data\"\n//\tquoted := pq.QuoteIdentifier(tblname)\n//\terr := db.Exec(fmt.Sprintf(\"INSERT INTO %s VALUES ($1)\", quoted), data)\n//\n// Any double quotes in name will be escaped.  The quoted identifier will be\n// case sensitive when used in a query.  If the input string contains a zero\n// byte, the result will be truncated immediately before it.\nfunc QuoteIdentifier(name string) string {\n\tend := strings.IndexRune(name, 0)\n\tif end > -1 {\n\t\tname = name[:end]\n\t}\n\treturn `\"` + strings.Replace(name, `\"`, `\"\"`, -1) + `\"`\n}\n\n// BufferQuoteIdentifier satisfies the same purpose as QuoteIdentifier, but backed by a\n// byte buffer.\nfunc BufferQuoteIdentifier(name string, buffer *bytes.Buffer) {\n\tend := strings.IndexRune(name, 0)\n\tif end > -1 {\n\t\tname = name[:end]\n\t}\n\tbuffer.WriteRune('\"')\n\tbuffer.WriteString(strings.Replace(name, `\"`, `\"\"`, -1))\n\tbuffer.WriteRune('\"')\n}\n\n// QuoteLiteral quotes a 'literal' (e.g. a parameter, often used to pass literal\n// to DDL and other statements that do not accept parameters) to be used as part\n// of an SQL statement.  For example:\n//\n//\texp_date := pq.QuoteLiteral(\"2023-01-05 15:00:00Z\")\n//\terr := db.Exec(fmt.Sprintf(\"CREATE ROLE my_user VALID UNTIL %s\", exp_date))\n//\n// Any single quotes in name will be escaped. Any backslashes (i.e. \"\\\") will be\n// replaced by two backslashes (i.e. \"\\\\\") and the C-style escape identifier\n// that PostgreSQL provides ('E') will be prepended to the string.\nfunc QuoteLiteral(literal string) string {\n\t// This follows the PostgreSQL internal algorithm for handling quoted literals\n\t// from libpq, which can be found in the \"PQEscapeStringInternal\" function,\n\t// which is found in the libpq/fe-exec.c source file:\n\t// https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/interfaces/libpq/fe-exec.c\n\t//\n\t// substitute any single-quotes (') with two single-quotes ('')\n\tliteral = strings.Replace(literal, `'`, `''`, -1)\n\t// determine if the string has any backslashes (\\) in it.\n\t// if it does, replace any backslashes (\\) with two backslashes (\\\\)\n\t// then, we need to wrap the entire string with a PostgreSQL\n\t// C-style escape. Per how \"PQEscapeStringInternal\" handles this case, we\n\t// also add a space before the \"E\"\n\tif strings.Contains(literal, `\\`) {\n\t\tliteral = strings.Replace(literal, `\\`, `\\\\`, -1)\n\t\tliteral = ` E'` + literal + `'`\n\t} else {\n\t\t// otherwise, we can just wrap the literal with a pair of single quotes\n\t\tliteral = `'` + literal + `'`\n\t}\n\treturn literal\n}\n\nfunc md5s(s string) string {\n\th := md5.New()\n\th.Write([]byte(s))\n\treturn fmt.Sprintf(\"%x\", h.Sum(nil))\n}\n\nfunc (cn *conn) sendBinaryParameters(b *writeBuf, args []driver.Value) {\n\t// Do one pass over the parameters to see if we're going to send any of\n\t// them over in binary.  If we are, create a paramFormats array at the\n\t// same time.\n\tvar paramFormats []int\n\tfor i, x := range args {\n\t\t_, ok := x.([]byte)\n\t\tif ok {\n\t\t\tif paramFormats == nil {\n\t\t\t\tparamFormats = make([]int, len(args))\n\t\t\t}\n\t\t\tparamFormats[i] = 1\n\t\t}\n\t}\n\tif paramFormats == nil {\n\t\tb.int16(0)\n\t} else {\n\t\tb.int16(len(paramFormats))\n\t\tfor _, x := range paramFormats {\n\t\t\tb.int16(x)\n\t\t}\n\t}\n\n\tb.int16(len(args))\n\tfor _, x := range args {\n\t\tif x == nil {\n\t\t\tb.int32(-1)\n\t\t} else {\n\t\t\tdatum := binaryEncode(&cn.parameterStatus, x)\n\t\t\tb.int32(len(datum))\n\t\t\tb.bytes(datum)\n\t\t}\n\t}\n}\n\nfunc (cn *conn) sendBinaryModeQuery(query string, args []driver.Value) {\n\tif len(args) >= 65536 {\n\t\terrorf(\"got %d parameters but PostgreSQL only supports 65535 parameters\", len(args))\n\t}\n\n\tb := cn.writeBuf('P')\n\tb.byte(0) // unnamed statement\n\tb.string(query)\n\tb.int16(0)\n\n\tb.next('B')\n\tb.int16(0) // unnamed portal and statement\n\tcn.sendBinaryParameters(b, args)\n\tb.bytes(colFmtDataAllText)\n\n\tb.next('D')\n\tb.byte('P')\n\tb.byte(0) // unnamed portal\n\n\tb.next('E')\n\tb.byte(0)\n\tb.int32(0)\n\n\tb.next('S')\n\tcn.send(b)\n}\n\nfunc (cn *conn) processParameterStatus(r *readBuf) {\n\tvar err error\n\n\tparam := r.string()\n\tswitch param {\n\tcase \"server_version\":\n\t\tvar major1 int\n\t\tvar major2 int\n\t\t_, err = fmt.Sscanf(r.string(), \"%d.%d\", &major1, &major2)\n\t\tif err == nil {\n\t\t\tcn.parameterStatus.serverVersion = major1*10000 + major2*100\n\t\t}\n\n\tcase \"TimeZone\":\n\t\tcn.parameterStatus.currentLocation, err = time.LoadLocation(r.string())\n\t\tif err != nil {\n\t\t\tcn.parameterStatus.currentLocation = nil\n\t\t}\n\n\tdefault:\n\t\t// ignore\n\t}\n}\n\nfunc (cn *conn) processReadyForQuery(r *readBuf) {\n\tcn.txnStatus = transactionStatus(r.byte())\n}\n\nfunc (cn *conn) readReadyForQuery() {\n\tt, r := cn.recv1()\n\tswitch t {\n\tcase 'Z':\n\t\tcn.processReadyForQuery(r)\n\t\treturn\n\tdefault:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected message %q; expected ReadyForQuery\", t)\n\t}\n}\n\nfunc (cn *conn) processBackendKeyData(r *readBuf) {\n\tcn.processID = r.int32()\n\tcn.secretKey = r.int32()\n}\n\nfunc (cn *conn) readParseResponse() {\n\tt, r := cn.recv1()\n\tswitch t {\n\tcase '1':\n\t\treturn\n\tcase 'E':\n\t\terr := parseError(r)\n\t\tcn.readReadyForQuery()\n\t\tpanic(err)\n\tdefault:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected Parse response %q\", t)\n\t}\n}\n\nfunc (cn *conn) readStatementDescribeResponse() (\n\tparamTyps []oid.Oid,\n\tcolNames []string,\n\tcolTyps []fieldDesc,\n) {\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 't':\n\t\t\tnparams := r.int16()\n\t\t\tparamTyps = make([]oid.Oid, nparams)\n\t\t\tfor i := range paramTyps {\n\t\t\t\tparamTyps[i] = r.oid()\n\t\t\t}\n\t\tcase 'n':\n\t\t\treturn paramTyps, nil, nil\n\t\tcase 'T':\n\t\t\tcolNames, colTyps = parseStatementRowDescribe(r)\n\t\t\treturn paramTyps, colNames, colTyps\n\t\tcase 'E':\n\t\t\terr := parseError(r)\n\t\t\tcn.readReadyForQuery()\n\t\t\tpanic(err)\n\t\tdefault:\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unexpected Describe statement response %q\", t)\n\t\t}\n\t}\n}\n\nfunc (cn *conn) readPortalDescribeResponse() rowsHeader {\n\tt, r := cn.recv1()\n\tswitch t {\n\tcase 'T':\n\t\treturn parsePortalRowDescribe(r)\n\tcase 'n':\n\t\treturn rowsHeader{}\n\tcase 'E':\n\t\terr := parseError(r)\n\t\tcn.readReadyForQuery()\n\t\tpanic(err)\n\tdefault:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected Describe response %q\", t)\n\t}\n\tpanic(\"not reached\")\n}\n\nfunc (cn *conn) readBindResponse() {\n\tt, r := cn.recv1()\n\tswitch t {\n\tcase '2':\n\t\treturn\n\tcase 'E':\n\t\terr := parseError(r)\n\t\tcn.readReadyForQuery()\n\t\tpanic(err)\n\tdefault:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\terrorf(\"unexpected Bind response %q\", t)\n\t}\n}\n\nfunc (cn *conn) postExecuteWorkaround() {\n\t// Work around a bug in sql.DB.QueryRow: in Go 1.2 and earlier it ignores\n\t// any errors from rows.Next, which masks errors that happened during the\n\t// execution of the query.  To avoid the problem in common cases, we wait\n\t// here for one more message from the database.  If it's not an error the\n\t// query will likely succeed (or perhaps has already, if it's a\n\t// CommandComplete), so we push the message into the conn struct; recv1\n\t// will return it as the next message for rows.Next or rows.Close.\n\t// However, if it's an error, we wait until ReadyForQuery and then return\n\t// the error to our caller.\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'E':\n\t\t\terr := parseError(r)\n\t\t\tcn.readReadyForQuery()\n\t\t\tpanic(err)\n\t\tcase 'C', 'D', 'I':\n\t\t\t// the query didn't fail, but we can't process this message\n\t\t\tcn.saveMessage(t, r)\n\t\t\treturn\n\t\tdefault:\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unexpected message during extended query execution: %q\", t)\n\t\t}\n\t}\n}\n\n// Only for Exec(), since we ignore the returned data\nfunc (cn *conn) readExecuteResponse(\n\tprotocolState string,\n) (res driver.Result, commandTag string, err error) {\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'C':\n\t\t\tif err != nil {\n\t\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected CommandComplete after error %s\", err)\n\t\t\t}\n\t\t\tres, commandTag = cn.parseComplete(r.string())\n\t\tcase 'Z':\n\t\t\tcn.processReadyForQuery(r)\n\t\t\tif res == nil && err == nil {\n\t\t\t\terr = errUnexpectedReady\n\t\t\t}\n\t\t\treturn res, commandTag, err\n\t\tcase 'E':\n\t\t\terr = parseError(r)\n\t\tcase 'T', 'D', 'I':\n\t\t\tif err != nil {\n\t\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected %q after error %s\", t, err)\n\t\t\t}\n\t\t\tif t == 'I' {\n\t\t\t\tres = emptyRows\n\t\t\t}\n\t\t\t// ignore any results\n\t\tdefault:\n\t\t\tcn.err.set(driver.ErrBadConn)\n\t\t\terrorf(\"unknown %s response: %q\", protocolState, t)\n\t\t}\n\t}\n}\n\nfunc parseStatementRowDescribe(r *readBuf) (colNames []string, colTyps []fieldDesc) {\n\tn := r.int16()\n\tcolNames = make([]string, n)\n\tcolTyps = make([]fieldDesc, n)\n\tfor i := range colNames {\n\t\tcolNames[i] = r.string()\n\t\tr.next(6)\n\t\tcolTyps[i].OID = r.oid()\n\t\tcolTyps[i].Len = r.int16()\n\t\tcolTyps[i].Mod = r.int32()\n\t\t// format code not known when describing a statement; always 0\n\t\tr.next(2)\n\t}\n\treturn\n}\n\nfunc parsePortalRowDescribe(r *readBuf) rowsHeader {\n\tn := r.int16()\n\tcolNames := make([]string, n)\n\tcolFmts := make([]format, n)\n\tcolTyps := make([]fieldDesc, n)\n\tfor i := range colNames {\n\t\tcolNames[i] = r.string()\n\t\tr.next(6)\n\t\tcolTyps[i].OID = r.oid()\n\t\tcolTyps[i].Len = r.int16()\n\t\tcolTyps[i].Mod = r.int32()\n\t\tcolFmts[i] = format(r.int16())\n\t}\n\treturn rowsHeader{\n\t\tcolNames: colNames,\n\t\tcolFmts:  colFmts,\n\t\tcolTyps:  colTyps,\n\t}\n}\n\n// parseEnviron tries to mimic some of libpq's environment handling\n//\n// To ease testing, it does not directly reference os.Environ, but is\n// designed to accept its output.\n//\n// Environment-set connection information is intended to have a higher\n// precedence than a library default but lower than any explicitly\n// passed information (such as in the URL or connection string).\nfunc parseEnviron(env []string) (out map[string]string) {\n\tout = make(map[string]string)\n\n\tfor _, v := range env {\n\t\tparts := strings.SplitN(v, \"=\", 2)\n\n\t\taccrue := func(keyname string) {\n\t\t\tout[keyname] = parts[1]\n\t\t}\n\t\tunsupported := func() {\n\t\t\tpanic(fmt.Sprintf(\"setting %v not supported\", parts[0]))\n\t\t}\n\n\t\t// The order of these is the same as is seen in the\n\t\t// PostgreSQL 9.1 manual. Unsupported but well-defined\n\t\t// keys cause a panic; these should be unset prior to\n\t\t// execution. Options which pq expects to be set to a\n\t\t// certain value are allowed, but must be set to that\n\t\t// value if present (they can, of course, be absent).\n\t\tswitch parts[0] {\n\t\tcase \"PGHOST\":\n\t\t\taccrue(\"host\")\n\t\tcase \"PGHOSTADDR\":\n\t\t\tunsupported()\n\t\tcase \"PGPORT\":\n\t\t\taccrue(\"port\")\n\t\tcase \"PGDATABASE\":\n\t\t\taccrue(\"dbname\")\n\t\tcase \"PGUSER\":\n\t\t\taccrue(\"user\")\n\t\tcase \"PGPASSWORD\":\n\t\t\taccrue(\"password\")\n\t\tcase \"PGSERVICE\", \"PGSERVICEFILE\", \"PGREALM\":\n\t\t\tunsupported()\n\t\tcase \"PGOPTIONS\":\n\t\t\taccrue(\"options\")\n\t\tcase \"PGAPPNAME\":\n\t\t\taccrue(\"application_name\")\n\t\tcase \"PGSSLMODE\":\n\t\t\taccrue(\"sslmode\")\n\t\tcase \"PGSSLCERT\":\n\t\t\taccrue(\"sslcert\")\n\t\tcase \"PGSSLKEY\":\n\t\t\taccrue(\"sslkey\")\n\t\tcase \"PGSSLROOTCERT\":\n\t\t\taccrue(\"sslrootcert\")\n\t\tcase \"PGSSLSNI\":\n\t\t\taccrue(\"sslsni\")\n\t\tcase \"PGREQUIRESSL\", \"PGSSLCRL\":\n\t\t\tunsupported()\n\t\tcase \"PGREQUIREPEER\":\n\t\t\tunsupported()\n\t\tcase \"PGKRBSRVNAME\", \"PGGSSLIB\":\n\t\t\tunsupported()\n\t\tcase \"PGCONNECT_TIMEOUT\":\n\t\t\taccrue(\"connect_timeout\")\n\t\tcase \"PGCLIENTENCODING\":\n\t\t\taccrue(\"client_encoding\")\n\t\tcase \"PGDATESTYLE\":\n\t\t\taccrue(\"datestyle\")\n\t\tcase \"PGTZ\":\n\t\t\taccrue(\"timezone\")\n\t\tcase \"PGGEQO\":\n\t\t\taccrue(\"geqo\")\n\t\tcase \"PGSYSCONFDIR\", \"PGLOCALEDIR\":\n\t\t\tunsupported()\n\t\t}\n\t}\n\n\treturn out\n}\n\n// isUTF8 returns whether name is a fuzzy variation of the string \"UTF-8\".\nfunc isUTF8(name string) bool {\n\t// Recognize all sorts of silly things as \"UTF-8\", like Postgres does\n\ts := strings.Map(alnumLowerASCII, name)\n\treturn s == \"utf8\" || s == \"unicode\"\n}\n\nfunc alnumLowerASCII(ch rune) rune {\n\tif 'A' <= ch && ch <= 'Z' {\n\t\treturn ch + ('a' - 'A')\n\t}\n\tif 'a' <= ch && ch <= 'z' || '0' <= ch && ch <= '9' {\n\t\treturn ch\n\t}\n\treturn -1 // discard\n}\n\n// The database/sql/driver package says:\n// All Conn implementations should implement the following interfaces: Pinger, SessionResetter, and Validator.\nvar _ driver.Pinger = &conn{}\nvar _ driver.SessionResetter = &conn{}\n\nfunc (cn *conn) ResetSession(ctx context.Context) error {\n\t// Ensure bad connections are reported: From database/sql/driver:\n\t// If a connection is never returned to the connection pool but immediately reused, then\n\t// ResetSession is called prior to reuse but IsValid is not called.\n\treturn cn.err.get()\n}\n\nfunc (cn *conn) IsValid() bool {\n\treturn cn.err.get() == nil\n}\n"
  },
  {
    "path": "gossh/pgsql/conn_go115.go",
    "content": "//go:build go1.15\n// +build go1.15\n\npackage pgsql\n\nimport \"database/sql/driver\"\n\nvar _ driver.Validator = &conn{}\n"
  },
  {
    "path": "gossh/pgsql/conn_go18.go",
    "content": "package pgsql\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"time\"\n)\n\nconst (\n\twatchCancelDialContextTimeout = time.Second * 10\n)\n\n// Implement the \"QueryerContext\" interface\nfunc (cn *conn) QueryContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Rows, error) {\n\tlist := make([]driver.Value, len(args))\n\tfor i, nv := range args {\n\t\tlist[i] = nv.Value\n\t}\n\tfinish := cn.watchCancel(ctx)\n\tr, err := cn.query(query, list)\n\tif err != nil {\n\t\tif finish != nil {\n\t\t\tfinish()\n\t\t}\n\t\treturn nil, err\n\t}\n\tr.finish = finish\n\treturn r, nil\n}\n\n// Implement the \"ExecerContext\" interface\nfunc (cn *conn) ExecContext(ctx context.Context, query string, args []driver.NamedValue) (driver.Result, error) {\n\tlist := make([]driver.Value, len(args))\n\tfor i, nv := range args {\n\t\tlist[i] = nv.Value\n\t}\n\n\tif finish := cn.watchCancel(ctx); finish != nil {\n\t\tdefer finish()\n\t}\n\n\treturn cn.Exec(query, list)\n}\n\n// Implement the \"ConnPrepareContext\" interface\nfunc (cn *conn) PrepareContext(ctx context.Context, query string) (driver.Stmt, error) {\n\tif finish := cn.watchCancel(ctx); finish != nil {\n\t\tdefer finish()\n\t}\n\treturn cn.Prepare(query)\n}\n\n// Implement the \"ConnBeginTx\" interface\nfunc (cn *conn) BeginTx(ctx context.Context, opts driver.TxOptions) (driver.Tx, error) {\n\tvar mode string\n\n\tswitch sql.IsolationLevel(opts.Isolation) {\n\tcase sql.LevelDefault:\n\t\t// Don't touch mode: use the server's default\n\tcase sql.LevelReadUncommitted:\n\t\tmode = \" ISOLATION LEVEL READ UNCOMMITTED\"\n\tcase sql.LevelReadCommitted:\n\t\tmode = \" ISOLATION LEVEL READ COMMITTED\"\n\tcase sql.LevelRepeatableRead:\n\t\tmode = \" ISOLATION LEVEL REPEATABLE READ\"\n\tcase sql.LevelSerializable:\n\t\tmode = \" ISOLATION LEVEL SERIALIZABLE\"\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"pq: isolation level not supported: %d\", opts.Isolation)\n\t}\n\n\tif opts.ReadOnly {\n\t\tmode += \" READ ONLY\"\n\t} else {\n\t\tmode += \" READ WRITE\"\n\t}\n\n\ttx, err := cn.begin(mode)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tcn.txnFinish = cn.watchCancel(ctx)\n\treturn tx, nil\n}\n\nfunc (cn *conn) Ping(ctx context.Context) error {\n\tif finish := cn.watchCancel(ctx); finish != nil {\n\t\tdefer finish()\n\t}\n\trows, err := cn.simpleQuery(\";\")\n\tif err != nil {\n\t\treturn driver.ErrBadConn // https://golang.org/pkg/database/sql/driver/#Pinger\n\t}\n\trows.Close()\n\treturn nil\n}\n\nfunc (cn *conn) watchCancel(ctx context.Context) func() {\n\tif done := ctx.Done(); done != nil {\n\t\tfinished := make(chan struct{}, 1)\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-done:\n\t\t\t\tselect {\n\t\t\t\tcase finished <- struct{}{}:\n\t\t\t\tdefault:\n\t\t\t\t\t// We raced with the finish func, let the next query handle this with the\n\t\t\t\t\t// context.\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// Set the connection state to bad so it does not get reused.\n\t\t\t\tcn.err.set(ctx.Err())\n\n\t\t\t\t// At this point the function level context is canceled,\n\t\t\t\t// so it must not be used for the additional network\n\t\t\t\t// request to cancel the query.\n\t\t\t\t// Create a new context to pass into the dial.\n\t\t\t\tctxCancel, cancel := context.WithTimeout(context.Background(), watchCancelDialContextTimeout)\n\t\t\t\tdefer cancel()\n\n\t\t\t\t_ = cn.cancel(ctxCancel)\n\t\t\tcase <-finished:\n\t\t\t}\n\t\t}()\n\t\treturn func() {\n\t\t\tselect {\n\t\t\tcase <-finished:\n\t\t\t\tcn.err.set(ctx.Err())\n\t\t\t\tcn.Close()\n\t\t\tcase finished <- struct{}{}:\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (cn *conn) cancel(ctx context.Context) error {\n\t// Create a new values map (copy). This makes sure the connection created\n\t// in this method cannot write to the same underlying data, which could\n\t// cause a concurrent map write panic. This is necessary because cancel\n\t// is called from a goroutine in watchCancel.\n\to := make(values)\n\tfor k, v := range cn.opts {\n\t\to[k] = v\n\t}\n\n\tc, err := dial(ctx, cn.dialer, o)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer c.Close()\n\n\t{\n\t\tcan := conn{\n\t\t\tc: c,\n\t\t}\n\t\terr = can.ssl(o)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tw := can.writeBuf(0)\n\t\tw.int32(80877102) // cancel request code\n\t\tw.int32(cn.processID)\n\t\tw.int32(cn.secretKey)\n\n\t\tif err := can.sendStartupPacket(w); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Read until EOF to ensure that the server received the cancel.\n\t{\n\t\t_, err := io.Copy(ioutil.Discard, c)\n\t\treturn err\n\t}\n}\n\n// Implement the \"StmtQueryContext\" interface\nfunc (st *stmt) QueryContext(ctx context.Context, args []driver.NamedValue) (driver.Rows, error) {\n\tlist := make([]driver.Value, len(args))\n\tfor i, nv := range args {\n\t\tlist[i] = nv.Value\n\t}\n\tfinish := st.watchCancel(ctx)\n\tr, err := st.query(list)\n\tif err != nil {\n\t\tif finish != nil {\n\t\t\tfinish()\n\t\t}\n\t\treturn nil, err\n\t}\n\tr.finish = finish\n\treturn r, nil\n}\n\n// Implement the \"StmtExecContext\" interface\nfunc (st *stmt) ExecContext(ctx context.Context, args []driver.NamedValue) (driver.Result, error) {\n\tlist := make([]driver.Value, len(args))\n\tfor i, nv := range args {\n\t\tlist[i] = nv.Value\n\t}\n\n\tif finish := st.watchCancel(ctx); finish != nil {\n\t\tdefer finish()\n\t}\n\n\treturn st.Exec(list)\n}\n\n// watchCancel is implemented on stmt in order to not mark the parent conn as bad\nfunc (st *stmt) watchCancel(ctx context.Context) func() {\n\tif done := ctx.Done(); done != nil {\n\t\tfinished := make(chan struct{})\n\t\tgo func() {\n\t\t\tselect {\n\t\t\tcase <-done:\n\t\t\t\t// At this point the function level context is canceled,\n\t\t\t\t// so it must not be used for the additional network\n\t\t\t\t// request to cancel the query.\n\t\t\t\t// Create a new context to pass into the dial.\n\t\t\t\tctxCancel, cancel := context.WithTimeout(context.Background(), watchCancelDialContextTimeout)\n\t\t\t\tdefer cancel()\n\n\t\t\t\t_ = st.cancel(ctxCancel)\n\t\t\t\tfinished <- struct{}{}\n\t\t\tcase <-finished:\n\t\t\t}\n\t\t}()\n\t\treturn func() {\n\t\t\tselect {\n\t\t\tcase <-finished:\n\t\t\tcase finished <- struct{}{}:\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (st *stmt) cancel(ctx context.Context) error {\n\treturn st.cn.cancel(ctx)\n}\n"
  },
  {
    "path": "gossh/pgsql/connector.go",
    "content": "package pgsql\n\nimport (\n\t\"context\"\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"strings\"\n)\n\n// Connector represents a fixed configuration for the pq driver with a given\n// name. Connector satisfies the database/sql/driver Connector interface and\n// can be used to create any number of DB Conn's via the database/sql OpenDB\n// function.\n//\n// See https://golang.org/pkg/database/sql/driver/#Connector.\n// See https://golang.org/pkg/database/sql/#OpenDB.\ntype Connector struct {\n\topts   values\n\tdialer Dialer\n}\n\n// Connect returns a connection to the database using the fixed configuration\n// of this Connector. Context is not used.\nfunc (c *Connector) Connect(ctx context.Context) (driver.Conn, error) {\n\treturn c.open(ctx)\n}\n\n// Dialer allows change the dialer used to open connections.\nfunc (c *Connector) Dialer(dialer Dialer) {\n\tc.dialer = dialer\n}\n\n// Driver returns the underlying driver of this Connector.\nfunc (c *Connector) Driver() driver.Driver {\n\treturn &Driver{}\n}\n\n// NewConnector returns a connector for the pq driver in a fixed configuration\n// with the given dsn. The returned connector can be used to create any number\n// of equivalent Conn's. The returned connector is intended to be used with\n// database/sql.OpenDB.\n//\n// See https://golang.org/pkg/database/sql/driver/#Connector.\n// See https://golang.org/pkg/database/sql/#OpenDB.\nfunc NewConnector(dsn string) (*Connector, error) {\n\tvar err error\n\to := make(values)\n\n\t// A number of defaults are applied here, in this order:\n\t//\n\t// * Very low precedence defaults applied in every situation\n\t// * Environment variables\n\t// * Explicitly passed connection information\n\to[\"host\"] = \"localhost\"\n\to[\"port\"] = \"5432\"\n\t// N.B.: Extra float digits should be set to 3, but that breaks\n\t// Postgres 8.4 and older, where the max is 2.\n\to[\"extra_float_digits\"] = \"2\"\n\tfor k, v := range parseEnviron(os.Environ()) {\n\t\to[k] = v\n\t}\n\n\tif strings.HasPrefix(dsn, \"postgres://\") || strings.HasPrefix(dsn, \"postgresql://\") {\n\t\tdsn, err = ParseURL(dsn)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := parseOpts(dsn, o); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Use the \"fallback\" application name if necessary\n\tif fallback, ok := o[\"fallback_application_name\"]; ok {\n\t\tif _, ok := o[\"application_name\"]; !ok {\n\t\t\to[\"application_name\"] = fallback\n\t\t}\n\t}\n\n\t// We can't work with any client_encoding other than UTF-8 currently.\n\t// However, we have historically allowed the user to set it to UTF-8\n\t// explicitly, and there's no reason to break such programs, so allow that.\n\t// Note that the \"options\" setting could also set client_encoding, but\n\t// parsing its value is not worth it.  Instead, we always explicitly send\n\t// client_encoding as a separate run-time parameter, which should override\n\t// anything set in options.\n\tif enc, ok := o[\"client_encoding\"]; ok && !isUTF8(enc) {\n\t\treturn nil, errors.New(\"client_encoding must be absent or 'UTF8'\")\n\t}\n\to[\"client_encoding\"] = \"UTF8\"\n\t// DateStyle needs a similar treatment.\n\tif datestyle, ok := o[\"datestyle\"]; ok {\n\t\tif datestyle != \"ISO, MDY\" {\n\t\t\treturn nil, fmt.Errorf(\"setting datestyle must be absent or %v; got %v\", \"ISO, MDY\", datestyle)\n\t\t}\n\t} else {\n\t\to[\"datestyle\"] = \"ISO, MDY\"\n\t}\n\n\t// If a user is not provided by any other means, the last\n\t// resort is to use the current operating system provided user\n\t// name.\n\tif _, ok := o[\"user\"]; !ok {\n\t\tu, err := userCurrent()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\to[\"user\"] = u\n\t}\n\n\t// SSL is not necessary or supported over UNIX domain sockets\n\tif network, _ := network(o); network == \"unix\" {\n\t\to[\"sslmode\"] = \"disable\"\n\t}\n\n\treturn &Connector{opts: o, dialer: defaultDialer{}}, nil\n}\n"
  },
  {
    "path": "gossh/pgsql/copy.go",
    "content": "package pgsql\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n)\n\nvar (\n\terrCopyInClosed               = errors.New(\"pq: copyin statement has already been closed\")\n\terrBinaryCopyNotSupported     = errors.New(\"pq: only text format supported for COPY\")\n\terrCopyToNotSupported         = errors.New(\"pq: COPY TO is not supported\")\n\terrCopyNotSupportedOutsideTxn = errors.New(\"pq: COPY is only allowed inside a transaction\")\n\terrCopyInProgress             = errors.New(\"pq: COPY in progress\")\n)\n\n// CopyIn creates a COPY FROM statement which can be prepared with\n// Tx.Prepare().  The target table should be visible in search_path.\nfunc CopyIn(table string, columns ...string) string {\n\tbuffer := bytes.NewBufferString(\"COPY \")\n\tBufferQuoteIdentifier(table, buffer)\n\tbuffer.WriteString(\" (\")\n\tmakeStmt(buffer, columns...)\n\treturn buffer.String()\n}\n\n// MakeStmt makes the stmt string for CopyIn and CopyInSchema.\nfunc makeStmt(buffer *bytes.Buffer, columns ...string) {\n\t//s := bytes.NewBufferString()\n\tfor i, col := range columns {\n\t\tif i != 0 {\n\t\t\tbuffer.WriteString(\", \")\n\t\t}\n\t\tBufferQuoteIdentifier(col, buffer)\n\t}\n\tbuffer.WriteString(\") FROM STDIN\")\n}\n\n// CopyInSchema creates a COPY FROM statement which can be prepared with\n// Tx.Prepare().\nfunc CopyInSchema(schema, table string, columns ...string) string {\n\tbuffer := bytes.NewBufferString(\"COPY \")\n\tBufferQuoteIdentifier(schema, buffer)\n\tbuffer.WriteRune('.')\n\tBufferQuoteIdentifier(table, buffer)\n\tbuffer.WriteString(\" (\")\n\tmakeStmt(buffer, columns...)\n\treturn buffer.String()\n}\n\ntype copyin struct {\n\tcn      *conn\n\tbuffer  []byte\n\trowData chan []byte\n\tdone    chan bool\n\n\tclosed bool\n\n\tmu struct {\n\t\tsync.Mutex\n\t\terr error\n\t\tdriver.Result\n\t}\n}\n\nconst ciBufferSize = 64 * 1024\n\n// flush buffer before the buffer is filled up and needs reallocation\nconst ciBufferFlushSize = 63 * 1024\n\nfunc (cn *conn) prepareCopyIn(q string) (_ driver.Stmt, err error) {\n\tif !cn.isInTransaction() {\n\t\treturn nil, errCopyNotSupportedOutsideTxn\n\t}\n\n\tci := &copyin{\n\t\tcn:      cn,\n\t\tbuffer:  make([]byte, 0, ciBufferSize),\n\t\trowData: make(chan []byte),\n\t\tdone:    make(chan bool, 1),\n\t}\n\t// add CopyData identifier + 4 bytes for message length\n\tci.buffer = append(ci.buffer, 'd', 0, 0, 0, 0)\n\n\tb := cn.writeBuf('Q')\n\tb.string(q)\n\tcn.send(b)\n\nawaitCopyInResponse:\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'G':\n\t\t\tif r.byte() != 0 {\n\t\t\t\terr = errBinaryCopyNotSupported\n\t\t\t\tbreak awaitCopyInResponse\n\t\t\t}\n\t\t\tgo ci.resploop()\n\t\t\treturn ci, nil\n\t\tcase 'H':\n\t\t\terr = errCopyToNotSupported\n\t\t\tbreak awaitCopyInResponse\n\t\tcase 'E':\n\t\t\terr = parseError(r)\n\t\tcase 'Z':\n\t\t\tif err == nil {\n\t\t\t\tci.setBad(driver.ErrBadConn)\n\t\t\t\terrorf(\"unexpected ReadyForQuery in response to COPY\")\n\t\t\t}\n\t\t\tcn.processReadyForQuery(r)\n\t\t\treturn nil, err\n\t\tdefault:\n\t\t\tci.setBad(driver.ErrBadConn)\n\t\t\terrorf(\"unknown response for copy query: %q\", t)\n\t\t}\n\t}\n\n\t// something went wrong, abort COPY before we return\n\tb = cn.writeBuf('f')\n\tb.string(err.Error())\n\tcn.send(b)\n\n\tfor {\n\t\tt, r := cn.recv1()\n\t\tswitch t {\n\t\tcase 'c', 'C', 'E':\n\t\tcase 'Z':\n\t\t\t// correctly aborted, we're done\n\t\t\tcn.processReadyForQuery(r)\n\t\t\treturn nil, err\n\t\tdefault:\n\t\t\tci.setBad(driver.ErrBadConn)\n\t\t\terrorf(\"unknown response for CopyFail: %q\", t)\n\t\t}\n\t}\n}\n\nfunc (ci *copyin) flush(buf []byte) {\n\t// set message length (without message identifier)\n\tbinary.BigEndian.PutUint32(buf[1:], uint32(len(buf)-1))\n\n\t_, err := ci.cn.c.Write(buf)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n\nfunc (ci *copyin) resploop() {\n\tfor {\n\t\tvar r readBuf\n\t\tt, err := ci.cn.recvMessage(&r)\n\t\tif err != nil {\n\t\t\tci.setBad(driver.ErrBadConn)\n\t\t\tci.setError(err)\n\t\t\tci.done <- true\n\t\t\treturn\n\t\t}\n\t\tswitch t {\n\t\tcase 'C':\n\t\t\t// complete\n\t\t\tres, _ := ci.cn.parseComplete(r.string())\n\t\t\tci.setResult(res)\n\t\tcase 'N':\n\t\t\tif n := ci.cn.noticeHandler; n != nil {\n\t\t\t\tn(parseError(&r))\n\t\t\t}\n\t\tcase 'Z':\n\t\t\tci.cn.processReadyForQuery(&r)\n\t\t\tci.done <- true\n\t\t\treturn\n\t\tcase 'E':\n\t\t\terr := parseError(&r)\n\t\t\tci.setError(err)\n\t\tdefault:\n\t\t\tci.setBad(driver.ErrBadConn)\n\t\t\tci.setError(fmt.Errorf(\"unknown response during CopyIn: %q\", t))\n\t\t\tci.done <- true\n\t\t\treturn\n\t\t}\n\t}\n}\n\nfunc (ci *copyin) setBad(err error) {\n\tci.cn.err.set(err)\n}\n\nfunc (ci *copyin) getBad() error {\n\treturn ci.cn.err.get()\n}\n\nfunc (ci *copyin) err() error {\n\tci.mu.Lock()\n\terr := ci.mu.err\n\tci.mu.Unlock()\n\treturn err\n}\n\n// setError() sets ci.err if one has not been set already.  Caller must not be\n// holding ci.Mutex.\nfunc (ci *copyin) setError(err error) {\n\tci.mu.Lock()\n\tif ci.mu.err == nil {\n\t\tci.mu.err = err\n\t}\n\tci.mu.Unlock()\n}\n\nfunc (ci *copyin) setResult(result driver.Result) {\n\tci.mu.Lock()\n\tci.mu.Result = result\n\tci.mu.Unlock()\n}\n\nfunc (ci *copyin) getResult() driver.Result {\n\tci.mu.Lock()\n\tresult := ci.mu.Result\n\tci.mu.Unlock()\n\tif result == nil {\n\t\treturn driver.RowsAffected(0)\n\t}\n\treturn result\n}\n\nfunc (ci *copyin) NumInput() int {\n\treturn -1\n}\n\nfunc (ci *copyin) Query(v []driver.Value) (r driver.Rows, err error) {\n\treturn nil, ErrNotSupported\n}\n\n// Exec inserts values into the COPY stream. The insert is asynchronous\n// and Exec can return errors from previous Exec calls to the same\n// COPY stmt.\n//\n// You need to call Exec(nil) to sync the COPY stream and to get any\n// errors from pending data, since Stmt.Close() doesn't return errors\n// to the user.\nfunc (ci *copyin) Exec(v []driver.Value) (r driver.Result, err error) {\n\tif ci.closed {\n\t\treturn nil, errCopyInClosed\n\t}\n\n\tif err := ci.getBad(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer ci.cn.errRecover(&err)\n\n\tif err := ci.err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tif len(v) == 0 {\n\t\tif err := ci.Close(); err != nil {\n\t\t\treturn driver.RowsAffected(0), err\n\t\t}\n\n\t\treturn ci.getResult(), nil\n\t}\n\n\tnumValues := len(v)\n\tfor i, value := range v {\n\t\tci.buffer = appendEncodedText(&ci.cn.parameterStatus, ci.buffer, value)\n\t\tif i < numValues-1 {\n\t\t\tci.buffer = append(ci.buffer, '\\t')\n\t\t}\n\t}\n\n\tci.buffer = append(ci.buffer, '\\n')\n\n\tif len(ci.buffer) > ciBufferFlushSize {\n\t\tci.flush(ci.buffer)\n\t\t// reset buffer, keep bytes for message identifier and length\n\t\tci.buffer = ci.buffer[:5]\n\t}\n\n\treturn driver.RowsAffected(0), nil\n}\n\n// CopyData inserts a raw string into the COPY stream. The insert is\n// asynchronous and CopyData can return errors from previous CopyData calls to\n// the same COPY stmt.\n//\n// You need to call Exec(nil) to sync the COPY stream and to get any\n// errors from pending data, since Stmt.Close() doesn't return errors\n// to the user.\nfunc (ci *copyin) CopyData(ctx context.Context, line string) (r driver.Result, err error) {\n\tif ci.closed {\n\t\treturn nil, errCopyInClosed\n\t}\n\n\tif finish := ci.cn.watchCancel(ctx); finish != nil {\n\t\tdefer finish()\n\t}\n\n\tif err := ci.getBad(); err != nil {\n\t\treturn nil, err\n\t}\n\tdefer ci.cn.errRecover(&err)\n\n\tif err := ci.err(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tci.buffer = append(ci.buffer, []byte(line)...)\n\tci.buffer = append(ci.buffer, '\\n')\n\n\tif len(ci.buffer) > ciBufferFlushSize {\n\t\tci.flush(ci.buffer)\n\t\t// reset buffer, keep bytes for message identifier and length\n\t\tci.buffer = ci.buffer[:5]\n\t}\n\n\treturn driver.RowsAffected(0), nil\n}\n\nfunc (ci *copyin) Close() (err error) {\n\tif ci.closed { // Don't do anything, we're already closed\n\t\treturn nil\n\t}\n\tci.closed = true\n\n\tif err := ci.getBad(); err != nil {\n\t\treturn err\n\t}\n\tdefer ci.cn.errRecover(&err)\n\n\tif len(ci.buffer) > 0 {\n\t\tci.flush(ci.buffer)\n\t}\n\t// Avoid touching the scratch buffer as resploop could be using it.\n\terr = ci.cn.sendSimpleMessage('c')\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t<-ci.done\n\tci.cn.inCopy = false\n\n\tif err := ci.err(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/pgsql/encode.go",
    "content": "package pgsql\n\nimport (\n\t\"bytes\"\n\t\"database/sql/driver\"\n\t\"encoding/binary\"\n\t\"encoding/hex\"\n\t\"errors\"\n\t\"fmt\"\n\t\"math\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\n\t\"gossh/pgsql/oid\"\n)\n\nvar time2400Regex = regexp.MustCompile(`^(24:00(?::00(?:\\.0+)?)?)(?:[Z+-].*)?$`)\n\nfunc binaryEncode(parameterStatus *parameterStatus, x any) []byte {\n\tswitch v := x.(type) {\n\tcase []byte:\n\t\treturn v\n\tdefault:\n\t\treturn encode(parameterStatus, x, oid.T_unknown)\n\t}\n}\n\nfunc encode(parameterStatus *parameterStatus, x any, pgtypOid oid.Oid) []byte {\n\tswitch v := x.(type) {\n\tcase int64:\n\t\treturn strconv.AppendInt(nil, v, 10)\n\tcase float64:\n\t\treturn strconv.AppendFloat(nil, v, 'f', -1, 64)\n\tcase []byte:\n\t\tif pgtypOid == oid.T_bytea {\n\t\t\treturn encodeBytea(parameterStatus.serverVersion, v)\n\t\t}\n\n\t\treturn v\n\tcase string:\n\t\tif pgtypOid == oid.T_bytea {\n\t\t\treturn encodeBytea(parameterStatus.serverVersion, []byte(v))\n\t\t}\n\n\t\treturn []byte(v)\n\tcase bool:\n\t\treturn strconv.AppendBool(nil, v)\n\tcase time.Time:\n\t\treturn formatTs(v)\n\n\tdefault:\n\t\terrorf(\"encode: unknown type for %T\", v)\n\t}\n\n\tpanic(\"not reached\")\n}\n\nfunc decode(parameterStatus *parameterStatus, s []byte, typ oid.Oid, f format) any {\n\tswitch f {\n\tcase formatBinary:\n\t\treturn binaryDecode(parameterStatus, s, typ)\n\tcase formatText:\n\t\treturn textDecode(parameterStatus, s, typ)\n\tdefault:\n\t\tpanic(\"not reached\")\n\t}\n}\n\nfunc binaryDecode(parameterStatus *parameterStatus, s []byte, typ oid.Oid) any {\n\tswitch typ {\n\tcase oid.T_bytea:\n\t\treturn s\n\tcase oid.T_int8:\n\t\treturn int64(binary.BigEndian.Uint64(s))\n\tcase oid.T_int4:\n\t\treturn int64(int32(binary.BigEndian.Uint32(s)))\n\tcase oid.T_int2:\n\t\treturn int64(int16(binary.BigEndian.Uint16(s)))\n\tcase oid.T_uuid:\n\t\tb, err := decodeUUIDBinary(s)\n\t\tif err != nil {\n\t\t\tpanic(err)\n\t\t}\n\t\treturn b\n\n\tdefault:\n\t\terrorf(\"don't know how to decode binary parameter of type %d\", uint32(typ))\n\t}\n\n\tpanic(\"not reached\")\n}\n\nfunc textDecode(parameterStatus *parameterStatus, s []byte, typ oid.Oid) any {\n\tswitch typ {\n\tcase oid.T_char, oid.T_varchar, oid.T_text:\n\t\treturn string(s)\n\tcase oid.T_bytea:\n\t\tb, err := parseBytea(s)\n\t\tif err != nil {\n\t\t\terrorf(\"%s\", err)\n\t\t}\n\t\treturn b\n\tcase oid.T_timestamptz:\n\t\treturn parseTs(parameterStatus.currentLocation, string(s))\n\tcase oid.T_timestamp, oid.T_date:\n\t\treturn parseTs(nil, string(s))\n\tcase oid.T_time:\n\t\treturn mustParse(\"15:04:05\", typ, s)\n\tcase oid.T_timetz:\n\t\treturn mustParse(\"15:04:05-07\", typ, s)\n\tcase oid.T_bool:\n\t\treturn s[0] == 't'\n\tcase oid.T_int8, oid.T_int4, oid.T_int2:\n\t\ti, err := strconv.ParseInt(string(s), 10, 64)\n\t\tif err != nil {\n\t\t\terrorf(\"%s\", err)\n\t\t}\n\t\treturn i\n\tcase oid.T_float4, oid.T_float8:\n\t\t// We always use 64 bit parsing, regardless of whether the input text is for\n\t\t// a float4 or float8, because clients expect float64s for all float datatypes\n\t\t// and returning a 32-bit parsed float64 produces lossy results.\n\t\tf, err := strconv.ParseFloat(string(s), 64)\n\t\tif err != nil {\n\t\t\terrorf(\"%s\", err)\n\t\t}\n\t\treturn f\n\t}\n\n\treturn s\n}\n\n// appendEncodedText encodes item in text format as required by COPY\n// and appends to buf\nfunc appendEncodedText(parameterStatus *parameterStatus, buf []byte, x any) []byte {\n\tswitch v := x.(type) {\n\tcase int64:\n\t\treturn strconv.AppendInt(buf, v, 10)\n\tcase float64:\n\t\treturn strconv.AppendFloat(buf, v, 'f', -1, 64)\n\tcase []byte:\n\t\tencodedBytea := encodeBytea(parameterStatus.serverVersion, v)\n\t\treturn appendEscapedText(buf, string(encodedBytea))\n\tcase string:\n\t\treturn appendEscapedText(buf, v)\n\tcase bool:\n\t\treturn strconv.AppendBool(buf, v)\n\tcase time.Time:\n\t\treturn append(buf, formatTs(v)...)\n\tcase nil:\n\t\treturn append(buf, \"\\\\N\"...)\n\tdefault:\n\t\terrorf(\"encode: unknown type for %T\", v)\n\t}\n\n\tpanic(\"not reached\")\n}\n\nfunc appendEscapedText(buf []byte, text string) []byte {\n\tescapeNeeded := false\n\tstartPos := 0\n\tvar c byte\n\n\t// check if we need to escape\n\tfor i := 0; i < len(text); i++ {\n\t\tc = text[i]\n\t\tif c == '\\\\' || c == '\\n' || c == '\\r' || c == '\\t' {\n\t\t\tescapeNeeded = true\n\t\t\tstartPos = i\n\t\t\tbreak\n\t\t}\n\t}\n\tif !escapeNeeded {\n\t\treturn append(buf, text...)\n\t}\n\n\t// copy till first char to escape, iterate the rest\n\tresult := append(buf, text[:startPos]...)\n\tfor i := startPos; i < len(text); i++ {\n\t\tc = text[i]\n\t\tswitch c {\n\t\tcase '\\\\':\n\t\t\tresult = append(result, '\\\\', '\\\\')\n\t\tcase '\\n':\n\t\t\tresult = append(result, '\\\\', 'n')\n\t\tcase '\\r':\n\t\t\tresult = append(result, '\\\\', 'r')\n\t\tcase '\\t':\n\t\t\tresult = append(result, '\\\\', 't')\n\t\tdefault:\n\t\t\tresult = append(result, c)\n\t\t}\n\t}\n\treturn result\n}\n\nfunc mustParse(f string, typ oid.Oid, s []byte) time.Time {\n\tstr := string(s)\n\n\t// Check for a minute and second offset in the timezone.\n\tif typ == oid.T_timestamptz || typ == oid.T_timetz {\n\t\tfor i := 3; i <= 6; i += 3 {\n\t\t\tif str[len(str)-i] == ':' {\n\t\t\t\tf += \":00\"\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\n\t// Special case for 24:00 time.\n\t// Unfortunately, golang does not parse 24:00 as a proper time.\n\t// In this case, we want to try \"round to the next day\", to differentiate.\n\t// As such, we find if the 24:00 time matches at the beginning; if so,\n\t// we default it back to 00:00 but add a day later.\n\tvar is2400Time bool\n\tswitch typ {\n\tcase oid.T_timetz, oid.T_time:\n\t\tif matches := time2400Regex.FindStringSubmatch(str); matches != nil {\n\t\t\t// Concatenate timezone information at the back.\n\t\t\tstr = \"00:00:00\" + str[len(matches[1]):]\n\t\t\tis2400Time = true\n\t\t}\n\t}\n\tt, err := time.Parse(f, str)\n\tif err != nil {\n\t\terrorf(\"decode: %s\", err)\n\t}\n\tif is2400Time {\n\t\tt = t.Add(24 * time.Hour)\n\t}\n\treturn t\n}\n\nvar errInvalidTimestamp = errors.New(\"invalid timestamp\")\n\ntype timestampParser struct {\n\terr error\n}\n\nfunc (p *timestampParser) expect(str string, char byte, pos int) {\n\tif p.err != nil {\n\t\treturn\n\t}\n\tif pos+1 > len(str) {\n\t\tp.err = errInvalidTimestamp\n\t\treturn\n\t}\n\tif c := str[pos]; c != char && p.err == nil {\n\t\tp.err = fmt.Errorf(\"expected '%v' at position %v; got '%v'\", char, pos, c)\n\t}\n}\n\nfunc (p *timestampParser) mustAtoi(str string, begin int, end int) int {\n\tif p.err != nil {\n\t\treturn 0\n\t}\n\tif begin < 0 || end < 0 || begin > end || end > len(str) {\n\t\tp.err = errInvalidTimestamp\n\t\treturn 0\n\t}\n\tresult, err := strconv.Atoi(str[begin:end])\n\tif err != nil {\n\t\tif p.err == nil {\n\t\t\tp.err = fmt.Errorf(\"expected number; got '%v'\", str)\n\t\t}\n\t\treturn 0\n\t}\n\treturn result\n}\n\n// The location cache caches the time zones typically used by the client.\ntype locationCache struct {\n\tcache map[int]*time.Location\n\tlock  sync.Mutex\n}\n\n// All connections share the same list of timezones. Benchmarking shows that\n// about 5% speed could be gained by putting the cache in the connection and\n// losing the mutex, at the cost of a small amount of memory and a somewhat\n// significant increase in code complexity.\nvar globalLocationCache = newLocationCache()\n\nfunc newLocationCache() *locationCache {\n\treturn &locationCache{cache: make(map[int]*time.Location)}\n}\n\n// Returns the cached timezone for the specified offset, creating and caching\n// it if necessary.\nfunc (c *locationCache) getLocation(offset int) *time.Location {\n\tc.lock.Lock()\n\tdefer c.lock.Unlock()\n\n\tlocation, ok := c.cache[offset]\n\tif !ok {\n\t\tlocation = time.FixedZone(\"\", offset)\n\t\tc.cache[offset] = location\n\t}\n\n\treturn location\n}\n\nvar infinityTsEnabled = false\nvar infinityTsNegative time.Time\nvar infinityTsPositive time.Time\n\nconst (\n\tinfinityTsEnabledAlready        = \"pq: infinity timestamp enabled already\"\n\tinfinityTsNegativeMustBeSmaller = \"pq: infinity timestamp: negative value must be smaller (before) than positive\"\n)\n\n// EnableInfinityTs controls the handling of Postgres' \"-infinity\" and\n// \"infinity\" \"timestamp\"s.\n//\n// If EnableInfinityTs is not called, \"-infinity\" and \"infinity\" will return\n// []byte(\"-infinity\") and []byte(\"infinity\") respectively, and potentially\n// cause error \"sql: Scan error on column index 0: unsupported driver -> Scan\n// pair: []uint8 -> *time.Time\", when scanning into a time.Time value.\n//\n// Once EnableInfinityTs has been called, all connections created using this\n// driver will decode Postgres' \"-infinity\" and \"infinity\" for \"timestamp\",\n// \"timestamp with time zone\" and \"date\" types to the predefined minimum and\n// maximum times, respectively.  When encoding time.Time values, any time which\n// equals or precedes the predefined minimum time will be encoded to\n// \"-infinity\".  Any values at or past the maximum time will similarly be\n// encoded to \"infinity\".\n//\n// If EnableInfinityTs is called with negative >= positive, it will panic.\n// Calling EnableInfinityTs after a connection has been established results in\n// undefined behavior.  If EnableInfinityTs is called more than once, it will\n// panic.\nfunc EnableInfinityTs(negative time.Time, positive time.Time) {\n\tif infinityTsEnabled {\n\t\tpanic(infinityTsEnabledAlready)\n\t}\n\tif !negative.Before(positive) {\n\t\tpanic(infinityTsNegativeMustBeSmaller)\n\t}\n\tinfinityTsEnabled = true\n\tinfinityTsNegative = negative\n\tinfinityTsPositive = positive\n}\n\n/*\n * Testing might want to toggle infinityTsEnabled\n */\nfunc disableInfinityTs() {\n\tinfinityTsEnabled = false\n}\n\n// This is a time function specific to the Postgres default DateStyle\n// setting (\"ISO, MDY\"), the only one we currently support. This\n// accounts for the discrepancies between the parsing available with\n// time.Parse and the Postgres date formatting quirks.\nfunc parseTs(currentLocation *time.Location, str string) any {\n\tswitch str {\n\tcase \"-infinity\":\n\t\tif infinityTsEnabled {\n\t\t\treturn infinityTsNegative\n\t\t}\n\t\treturn []byte(str)\n\tcase \"infinity\":\n\t\tif infinityTsEnabled {\n\t\t\treturn infinityTsPositive\n\t\t}\n\t\treturn []byte(str)\n\t}\n\tt, err := ParseTimestamp(currentLocation, str)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treturn t\n}\n\n// ParseTimestamp parses Postgres' text format. It returns a time.Time in\n// currentLocation iff that time's offset agrees with the offset sent from the\n// Postgres server. Otherwise, ParseTimestamp returns a time.Time with the\n// fixed offset offset provided by the Postgres server.\nfunc ParseTimestamp(currentLocation *time.Location, str string) (time.Time, error) {\n\tp := timestampParser{}\n\n\tmonSep := strings.IndexRune(str, '-')\n\t// this is Gregorian year, not ISO Year\n\t// In Gregorian system, the year 1 BC is followed by AD 1\n\tyear := p.mustAtoi(str, 0, monSep)\n\tdaySep := monSep + 3\n\tmonth := p.mustAtoi(str, monSep+1, daySep)\n\tp.expect(str, '-', daySep)\n\ttimeSep := daySep + 3\n\tday := p.mustAtoi(str, daySep+1, timeSep)\n\n\tminLen := monSep + len(\"01-01\") + 1\n\n\tisBC := strings.HasSuffix(str, \" BC\")\n\tif isBC {\n\t\tminLen += 3\n\t}\n\n\tvar hour, minute, second int\n\tif len(str) > minLen {\n\t\tp.expect(str, ' ', timeSep)\n\t\tminSep := timeSep + 3\n\t\tp.expect(str, ':', minSep)\n\t\thour = p.mustAtoi(str, timeSep+1, minSep)\n\t\tsecSep := minSep + 3\n\t\tp.expect(str, ':', secSep)\n\t\tminute = p.mustAtoi(str, minSep+1, secSep)\n\t\tsecEnd := secSep + 3\n\t\tsecond = p.mustAtoi(str, secSep+1, secEnd)\n\t}\n\tremainderIdx := monSep + len(\"01-01 00:00:00\") + 1\n\t// Three optional (but ordered) sections follow: the\n\t// fractional seconds, the time zone offset, and the BC\n\t// designation. We set them up here and adjust the other\n\t// offsets if the preceding sections exist.\n\n\tnanoSec := 0\n\ttzOff := 0\n\n\tif remainderIdx < len(str) && str[remainderIdx] == '.' {\n\t\tfracStart := remainderIdx + 1\n\t\tfracOff := strings.IndexAny(str[fracStart:], \"-+Z \")\n\t\tif fracOff < 0 {\n\t\t\tfracOff = len(str) - fracStart\n\t\t}\n\t\tfracSec := p.mustAtoi(str, fracStart, fracStart+fracOff)\n\t\tnanoSec = fracSec * (1000000000 / int(math.Pow(10, float64(fracOff))))\n\n\t\tremainderIdx += fracOff + 1\n\t}\n\tif tzStart := remainderIdx; tzStart < len(str) && (str[tzStart] == '-' || str[tzStart] == '+') {\n\t\t// time zone separator is always '-' or '+' or 'Z' (UTC is +00)\n\t\tvar tzSign int\n\t\tswitch c := str[tzStart]; c {\n\t\tcase '-':\n\t\t\ttzSign = -1\n\t\tcase '+':\n\t\t\ttzSign = +1\n\t\tdefault:\n\t\t\treturn time.Time{}, fmt.Errorf(\"expected '-' or '+' at position %v; got %v\", tzStart, c)\n\t\t}\n\t\ttzHours := p.mustAtoi(str, tzStart+1, tzStart+3)\n\t\tremainderIdx += 3\n\t\tvar tzMin, tzSec int\n\t\tif remainderIdx < len(str) && str[remainderIdx] == ':' {\n\t\t\ttzMin = p.mustAtoi(str, remainderIdx+1, remainderIdx+3)\n\t\t\tremainderIdx += 3\n\t\t}\n\t\tif remainderIdx < len(str) && str[remainderIdx] == ':' {\n\t\t\ttzSec = p.mustAtoi(str, remainderIdx+1, remainderIdx+3)\n\t\t\tremainderIdx += 3\n\t\t}\n\t\ttzOff = tzSign * ((tzHours * 60 * 60) + (tzMin * 60) + tzSec)\n\t} else if tzStart < len(str) && str[tzStart] == 'Z' {\n\t\t// time zone Z separator indicates UTC is +00\n\t\tremainderIdx += 1\n\t}\n\n\tvar isoYear int\n\n\tif isBC {\n\t\tisoYear = 1 - year\n\t\tremainderIdx += 3\n\t} else {\n\t\tisoYear = year\n\t}\n\tif remainderIdx < len(str) {\n\t\treturn time.Time{}, fmt.Errorf(\"expected end of input, got %v\", str[remainderIdx:])\n\t}\n\tt := time.Date(isoYear, time.Month(month), day,\n\t\thour, minute, second, nanoSec,\n\t\tglobalLocationCache.getLocation(tzOff))\n\n\tif currentLocation != nil {\n\t\t// Set the location of the returned Time based on the session's\n\t\t// TimeZone value, but only if the local time zone database agrees with\n\t\t// the remote database on the offset.\n\t\tlt := t.In(currentLocation)\n\t\t_, newOff := lt.Zone()\n\t\tif newOff == tzOff {\n\t\t\tt = lt\n\t\t}\n\t}\n\n\treturn t, p.err\n}\n\n// formatTs formats t into a format postgres understands.\nfunc formatTs(t time.Time) []byte {\n\tif infinityTsEnabled {\n\t\t// t <= -infinity : ! (t > -infinity)\n\t\tif !t.After(infinityTsNegative) {\n\t\t\treturn []byte(\"-infinity\")\n\t\t}\n\t\t// t >= infinity : ! (!t < infinity)\n\t\tif !t.Before(infinityTsPositive) {\n\t\t\treturn []byte(\"infinity\")\n\t\t}\n\t}\n\treturn FormatTimestamp(t)\n}\n\n// FormatTimestamp formats t into Postgres' text format for timestamps.\nfunc FormatTimestamp(t time.Time) []byte {\n\t// Need to send dates before 0001 A.D. with \" BC\" suffix, instead of the\n\t// minus sign preferred by Go.\n\t// Beware, \"0000\" in ISO is \"1 BC\", \"-0001\" is \"2 BC\" and so on\n\tbc := false\n\tif t.Year() <= 0 {\n\t\t// flip year sign, and add 1, e.g: \"0\" will be \"1\", and \"-10\" will be \"11\"\n\t\tt = t.AddDate((-t.Year())*2+1, 0, 0)\n\t\tbc = true\n\t}\n\tb := []byte(t.Format(\"2006-01-02 15:04:05.999999999Z07:00\"))\n\n\t_, offset := t.Zone()\n\toffset %= 60\n\tif offset != 0 {\n\t\t// RFC3339Nano already printed the minus sign\n\t\tif offset < 0 {\n\t\t\toffset = -offset\n\t\t}\n\n\t\tb = append(b, ':')\n\t\tif offset < 10 {\n\t\t\tb = append(b, '0')\n\t\t}\n\t\tb = strconv.AppendInt(b, int64(offset), 10)\n\t}\n\n\tif bc {\n\t\tb = append(b, \" BC\"...)\n\t}\n\treturn b\n}\n\n// Parse a bytea value received from the server.  Both \"hex\" and the legacy\n// \"escape\" format are supported.\nfunc parseBytea(s []byte) (result []byte, err error) {\n\tif len(s) >= 2 && bytes.Equal(s[:2], []byte(\"\\\\x\")) {\n\t\t// bytea_output = hex\n\t\ts = s[2:] // trim off leading \"\\\\x\"\n\t\tresult = make([]byte, hex.DecodedLen(len(s)))\n\t\t_, err := hex.Decode(result, s)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\t// bytea_output = escape\n\t\tfor len(s) > 0 {\n\t\t\tif s[0] == '\\\\' {\n\t\t\t\t// escaped '\\\\'\n\t\t\t\tif len(s) >= 2 && s[1] == '\\\\' {\n\t\t\t\t\tresult = append(result, '\\\\')\n\t\t\t\t\ts = s[2:]\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// '\\\\' followed by an octal number\n\t\t\t\tif len(s) < 4 {\n\t\t\t\t\treturn nil, fmt.Errorf(\"invalid bytea sequence %v\", s)\n\t\t\t\t}\n\t\t\t\tr, err := strconv.ParseUint(string(s[1:4]), 8, 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, fmt.Errorf(\"could not parse bytea value: %s\", err.Error())\n\t\t\t\t}\n\t\t\t\tresult = append(result, byte(r))\n\t\t\t\ts = s[4:]\n\t\t\t} else {\n\t\t\t\t// We hit an unescaped, raw byte.  Try to read in as many as\n\t\t\t\t// possible in one go.\n\t\t\t\ti := bytes.IndexByte(s, '\\\\')\n\t\t\t\tif i == -1 {\n\t\t\t\t\tresult = append(result, s...)\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tresult = append(result, s[:i]...)\n\t\t\t\ts = s[i:]\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result, nil\n}\n\nfunc encodeBytea(serverVersion int, v []byte) (result []byte) {\n\tif serverVersion >= 90000 {\n\t\t// Use the hex format if we know that the server supports it\n\t\tresult = make([]byte, 2+hex.EncodedLen(len(v)))\n\t\tresult[0] = '\\\\'\n\t\tresult[1] = 'x'\n\t\thex.Encode(result[2:], v)\n\t} else {\n\t\t// .. or resort to \"escape\"\n\t\tfor _, b := range v {\n\t\t\tif b == '\\\\' {\n\t\t\t\tresult = append(result, '\\\\', '\\\\')\n\t\t\t} else if b < 0x20 || b > 0x7e {\n\t\t\t\tresult = append(result, []byte(fmt.Sprintf(\"\\\\%03o\", b))...)\n\t\t\t} else {\n\t\t\t\tresult = append(result, b)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result\n}\n\n// NullTime represents a time.Time that may be null. NullTime implements the\n// sql.Scanner interface so it can be used as a scan destination, similar to\n// sql.NullString.\ntype NullTime struct {\n\tTime  time.Time\n\tValid bool // Valid is true if Time is not NULL\n}\n\n// Scan implements the Scanner interface.\nfunc (nt *NullTime) Scan(value any) error {\n\tnt.Time, nt.Valid = value.(time.Time)\n\treturn nil\n}\n\n// Value implements the driver Valuer interface.\nfunc (nt NullTime) Value() (driver.Value, error) {\n\tif !nt.Valid {\n\t\treturn nil, nil\n\t}\n\treturn nt.Time, nil\n}\n"
  },
  {
    "path": "gossh/pgsql/error.go",
    "content": "package pgsql\n\nimport (\n\t\"database/sql/driver\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"runtime\"\n)\n\n// Error severities\nconst (\n\tEfatal   = \"FATAL\"\n\tEpanic   = \"PANIC\"\n\tEwarning = \"WARNING\"\n\tEnotice  = \"NOTICE\"\n\tEdebug   = \"DEBUG\"\n\tEinfo    = \"INFO\"\n\tElog     = \"LOG\"\n)\n\n// Error represents an error communicating with the server.\n//\n// See http://www.postgresql.org/docs/current/static/protocol-error-fields.html for details of the fields\ntype Error struct {\n\tSeverity         string\n\tCode             ErrorCode\n\tMessage          string\n\tDetail           string\n\tHint             string\n\tPosition         string\n\tInternalPosition string\n\tInternalQuery    string\n\tWhere            string\n\tSchema           string\n\tTable            string\n\tColumn           string\n\tDataTypeName     string\n\tConstraint       string\n\tFile             string\n\tLine             string\n\tRoutine          string\n}\n\n// ErrorCode is a five-character error code.\ntype ErrorCode string\n\n// Name returns a more human friendly rendering of the error code, namely the\n// \"condition name\".\n//\n// See http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html for\n// details.\nfunc (ec ErrorCode) Name() string {\n\treturn errorCodeNames[ec]\n}\n\n// ErrorClass is only the class part of an error code.\ntype ErrorClass string\n\n// Name returns the condition name of an error class.  It is equivalent to the\n// condition name of the \"standard\" error code (i.e. the one having the last\n// three characters \"000\").\nfunc (ec ErrorClass) Name() string {\n\treturn errorCodeNames[ErrorCode(ec+\"000\")]\n}\n\n// Class returns the error class, e.g. \"28\".\n//\n// See http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html for\n// details.\nfunc (ec ErrorCode) Class() ErrorClass {\n\treturn ErrorClass(ec[0:2])\n}\n\n// errorCodeNames is a mapping between the five-character error codes and the\n// human readable \"condition names\". It is derived from the list at\n// http://www.postgresql.org/docs/9.3/static/errcodes-appendix.html\nvar errorCodeNames = map[ErrorCode]string{\n\t// Class 00 - Successful Completion\n\t\"00000\": \"successful_completion\",\n\t// Class 01 - Warning\n\t\"01000\": \"warning\",\n\t\"0100C\": \"dynamic_result_sets_returned\",\n\t\"01008\": \"implicit_zero_bit_padding\",\n\t\"01003\": \"null_value_eliminated_in_set_function\",\n\t\"01007\": \"privilege_not_granted\",\n\t\"01006\": \"privilege_not_revoked\",\n\t\"01004\": \"string_data_right_truncation\",\n\t\"01P01\": \"deprecated_feature\",\n\t// Class 02 - No Data (this is also a warning class per the SQL standard)\n\t\"02000\": \"no_data\",\n\t\"02001\": \"no_additional_dynamic_result_sets_returned\",\n\t// Class 03 - SQL Statement Not Yet Complete\n\t\"03000\": \"sql_statement_not_yet_complete\",\n\t// Class 08 - Connection Exception\n\t\"08000\": \"connection_exception\",\n\t\"08003\": \"connection_does_not_exist\",\n\t\"08006\": \"connection_failure\",\n\t\"08001\": \"sqlclient_unable_to_establish_sqlconnection\",\n\t\"08004\": \"sqlserver_rejected_establishment_of_sqlconnection\",\n\t\"08007\": \"transaction_resolution_unknown\",\n\t\"08P01\": \"protocol_violation\",\n\t// Class 09 - Triggered Action Exception\n\t\"09000\": \"triggered_action_exception\",\n\t// Class 0A - Feature Not Supported\n\t\"0A000\": \"feature_not_supported\",\n\t// Class 0B - Invalid Transaction Initiation\n\t\"0B000\": \"invalid_transaction_initiation\",\n\t// Class 0F - Locator Exception\n\t\"0F000\": \"locator_exception\",\n\t\"0F001\": \"invalid_locator_specification\",\n\t// Class 0L - Invalid Grantor\n\t\"0L000\": \"invalid_grantor\",\n\t\"0LP01\": \"invalid_grant_operation\",\n\t// Class 0P - Invalid Role Specification\n\t\"0P000\": \"invalid_role_specification\",\n\t// Class 0Z - Diagnostics Exception\n\t\"0Z000\": \"diagnostics_exception\",\n\t\"0Z002\": \"stacked_diagnostics_accessed_without_active_handler\",\n\t// Class 20 - Case Not Found\n\t\"20000\": \"case_not_found\",\n\t// Class 21 - Cardinality Violation\n\t\"21000\": \"cardinality_violation\",\n\t// Class 22 - Data Exception\n\t\"22000\": \"data_exception\",\n\t\"2202E\": \"array_subscript_error\",\n\t\"22021\": \"character_not_in_repertoire\",\n\t\"22008\": \"datetime_field_overflow\",\n\t\"22012\": \"division_by_zero\",\n\t\"22005\": \"error_in_assignment\",\n\t\"2200B\": \"escape_character_conflict\",\n\t\"22022\": \"indicator_overflow\",\n\t\"22015\": \"interval_field_overflow\",\n\t\"2201E\": \"invalid_argument_for_logarithm\",\n\t\"22014\": \"invalid_argument_for_ntile_function\",\n\t\"22016\": \"invalid_argument_for_nth_value_function\",\n\t\"2201F\": \"invalid_argument_for_power_function\",\n\t\"2201G\": \"invalid_argument_for_width_bucket_function\",\n\t\"22018\": \"invalid_character_value_for_cast\",\n\t\"22007\": \"invalid_datetime_format\",\n\t\"22019\": \"invalid_escape_character\",\n\t\"2200D\": \"invalid_escape_octet\",\n\t\"22025\": \"invalid_escape_sequence\",\n\t\"22P06\": \"nonstandard_use_of_escape_character\",\n\t\"22010\": \"invalid_indicator_parameter_value\",\n\t\"22023\": \"invalid_parameter_value\",\n\t\"2201B\": \"invalid_regular_expression\",\n\t\"2201W\": \"invalid_row_count_in_limit_clause\",\n\t\"2201X\": \"invalid_row_count_in_result_offset_clause\",\n\t\"22009\": \"invalid_time_zone_displacement_value\",\n\t\"2200C\": \"invalid_use_of_escape_character\",\n\t\"2200G\": \"most_specific_type_mismatch\",\n\t\"22004\": \"null_value_not_allowed\",\n\t\"22002\": \"null_value_no_indicator_parameter\",\n\t\"22003\": \"numeric_value_out_of_range\",\n\t\"2200H\": \"sequence_generator_limit_exceeded\",\n\t\"22026\": \"string_data_length_mismatch\",\n\t\"22001\": \"string_data_right_truncation\",\n\t\"22011\": \"substring_error\",\n\t\"22027\": \"trim_error\",\n\t\"22024\": \"unterminated_c_string\",\n\t\"2200F\": \"zero_length_character_string\",\n\t\"22P01\": \"floating_point_exception\",\n\t\"22P02\": \"invalid_text_representation\",\n\t\"22P03\": \"invalid_binary_representation\",\n\t\"22P04\": \"bad_copy_file_format\",\n\t\"22P05\": \"untranslatable_character\",\n\t\"2200L\": \"not_an_xml_document\",\n\t\"2200M\": \"invalid_xml_document\",\n\t\"2200N\": \"invalid_xml_content\",\n\t\"2200S\": \"invalid_xml_comment\",\n\t\"2200T\": \"invalid_xml_processing_instruction\",\n\t// Class 23 - Integrity Constraint Violation\n\t\"23000\": \"integrity_constraint_violation\",\n\t\"23001\": \"restrict_violation\",\n\t\"23502\": \"not_null_violation\",\n\t\"23503\": \"foreign_key_violation\",\n\t\"23505\": \"unique_violation\",\n\t\"23514\": \"check_violation\",\n\t\"23P01\": \"exclusion_violation\",\n\t// Class 24 - Invalid Cursor State\n\t\"24000\": \"invalid_cursor_state\",\n\t// Class 25 - Invalid Transaction State\n\t\"25000\": \"invalid_transaction_state\",\n\t\"25001\": \"active_sql_transaction\",\n\t\"25002\": \"branch_transaction_already_active\",\n\t\"25008\": \"held_cursor_requires_same_isolation_level\",\n\t\"25003\": \"inappropriate_access_mode_for_branch_transaction\",\n\t\"25004\": \"inappropriate_isolation_level_for_branch_transaction\",\n\t\"25005\": \"no_active_sql_transaction_for_branch_transaction\",\n\t\"25006\": \"read_only_sql_transaction\",\n\t\"25007\": \"schema_and_data_statement_mixing_not_supported\",\n\t\"25P01\": \"no_active_sql_transaction\",\n\t\"25P02\": \"in_failed_sql_transaction\",\n\t// Class 26 - Invalid SQL Statement Name\n\t\"26000\": \"invalid_sql_statement_name\",\n\t// Class 27 - Triggered Data Change Violation\n\t\"27000\": \"triggered_data_change_violation\",\n\t// Class 28 - Invalid Authorization Specification\n\t\"28000\": \"invalid_authorization_specification\",\n\t\"28P01\": \"invalid_password\",\n\t// Class 2B - Dependent Privilege Descriptors Still Exist\n\t\"2B000\": \"dependent_privilege_descriptors_still_exist\",\n\t\"2BP01\": \"dependent_objects_still_exist\",\n\t// Class 2D - Invalid Transaction Termination\n\t\"2D000\": \"invalid_transaction_termination\",\n\t// Class 2F - SQL Routine Exception\n\t\"2F000\": \"sql_routine_exception\",\n\t\"2F005\": \"function_executed_no_return_statement\",\n\t\"2F002\": \"modifying_sql_data_not_permitted\",\n\t\"2F003\": \"prohibited_sql_statement_attempted\",\n\t\"2F004\": \"reading_sql_data_not_permitted\",\n\t// Class 34 - Invalid Cursor Name\n\t\"34000\": \"invalid_cursor_name\",\n\t// Class 38 - External Routine Exception\n\t\"38000\": \"external_routine_exception\",\n\t\"38001\": \"containing_sql_not_permitted\",\n\t\"38002\": \"modifying_sql_data_not_permitted\",\n\t\"38003\": \"prohibited_sql_statement_attempted\",\n\t\"38004\": \"reading_sql_data_not_permitted\",\n\t// Class 39 - External Routine Invocation Exception\n\t\"39000\": \"external_routine_invocation_exception\",\n\t\"39001\": \"invalid_sqlstate_returned\",\n\t\"39004\": \"null_value_not_allowed\",\n\t\"39P01\": \"trigger_protocol_violated\",\n\t\"39P02\": \"srf_protocol_violated\",\n\t// Class 3B - Savepoint Exception\n\t\"3B000\": \"savepoint_exception\",\n\t\"3B001\": \"invalid_savepoint_specification\",\n\t// Class 3D - Invalid Catalog Name\n\t\"3D000\": \"invalid_catalog_name\",\n\t// Class 3F - Invalid Schema Name\n\t\"3F000\": \"invalid_schema_name\",\n\t// Class 40 - Transaction Rollback\n\t\"40000\": \"transaction_rollback\",\n\t\"40002\": \"transaction_integrity_constraint_violation\",\n\t\"40001\": \"serialization_failure\",\n\t\"40003\": \"statement_completion_unknown\",\n\t\"40P01\": \"deadlock_detected\",\n\t// Class 42 - Syntax Error or Access Rule Violation\n\t\"42000\": \"syntax_error_or_access_rule_violation\",\n\t\"42601\": \"syntax_error\",\n\t\"42501\": \"insufficient_privilege\",\n\t\"42846\": \"cannot_coerce\",\n\t\"42803\": \"grouping_error\",\n\t\"42P20\": \"windowing_error\",\n\t\"42P19\": \"invalid_recursion\",\n\t\"42830\": \"invalid_foreign_key\",\n\t\"42602\": \"invalid_name\",\n\t\"42622\": \"name_too_long\",\n\t\"42939\": \"reserved_name\",\n\t\"42804\": \"datatype_mismatch\",\n\t\"42P18\": \"indeterminate_datatype\",\n\t\"42P21\": \"collation_mismatch\",\n\t\"42P22\": \"indeterminate_collation\",\n\t\"42809\": \"wrong_object_type\",\n\t\"42703\": \"undefined_column\",\n\t\"42883\": \"undefined_function\",\n\t\"42P01\": \"undefined_table\",\n\t\"42P02\": \"undefined_parameter\",\n\t\"42704\": \"undefined_object\",\n\t\"42701\": \"duplicate_column\",\n\t\"42P03\": \"duplicate_cursor\",\n\t\"42P04\": \"duplicate_database\",\n\t\"42723\": \"duplicate_function\",\n\t\"42P05\": \"duplicate_prepared_statement\",\n\t\"42P06\": \"duplicate_schema\",\n\t\"42P07\": \"duplicate_table\",\n\t\"42712\": \"duplicate_alias\",\n\t\"42710\": \"duplicate_object\",\n\t\"42702\": \"ambiguous_column\",\n\t\"42725\": \"ambiguous_function\",\n\t\"42P08\": \"ambiguous_parameter\",\n\t\"42P09\": \"ambiguous_alias\",\n\t\"42P10\": \"invalid_column_reference\",\n\t\"42611\": \"invalid_column_definition\",\n\t\"42P11\": \"invalid_cursor_definition\",\n\t\"42P12\": \"invalid_database_definition\",\n\t\"42P13\": \"invalid_function_definition\",\n\t\"42P14\": \"invalid_prepared_statement_definition\",\n\t\"42P15\": \"invalid_schema_definition\",\n\t\"42P16\": \"invalid_table_definition\",\n\t\"42P17\": \"invalid_object_definition\",\n\t// Class 44 - WITH CHECK OPTION Violation\n\t\"44000\": \"with_check_option_violation\",\n\t// Class 53 - Insufficient Resources\n\t\"53000\": \"insufficient_resources\",\n\t\"53100\": \"disk_full\",\n\t\"53200\": \"out_of_memory\",\n\t\"53300\": \"too_many_connections\",\n\t\"53400\": \"configuration_limit_exceeded\",\n\t// Class 54 - Program Limit Exceeded\n\t\"54000\": \"program_limit_exceeded\",\n\t\"54001\": \"statement_too_complex\",\n\t\"54011\": \"too_many_columns\",\n\t\"54023\": \"too_many_arguments\",\n\t// Class 55 - Object Not In Prerequisite State\n\t\"55000\": \"object_not_in_prerequisite_state\",\n\t\"55006\": \"object_in_use\",\n\t\"55P02\": \"cant_change_runtime_param\",\n\t\"55P03\": \"lock_not_available\",\n\t// Class 57 - Operator Intervention\n\t\"57000\": \"operator_intervention\",\n\t\"57014\": \"query_canceled\",\n\t\"57P01\": \"admin_shutdown\",\n\t\"57P02\": \"crash_shutdown\",\n\t\"57P03\": \"cannot_connect_now\",\n\t\"57P04\": \"database_dropped\",\n\t// Class 58 - System Error (errors external to PostgreSQL itself)\n\t\"58000\": \"system_error\",\n\t\"58030\": \"io_error\",\n\t\"58P01\": \"undefined_file\",\n\t\"58P02\": \"duplicate_file\",\n\t// Class F0 - Configuration File Error\n\t\"F0000\": \"config_file_error\",\n\t\"F0001\": \"lock_file_exists\",\n\t// Class HV - Foreign Data Wrapper Error (SQL/MED)\n\t\"HV000\": \"fdw_error\",\n\t\"HV005\": \"fdw_column_name_not_found\",\n\t\"HV002\": \"fdw_dynamic_parameter_value_needed\",\n\t\"HV010\": \"fdw_function_sequence_error\",\n\t\"HV021\": \"fdw_inconsistent_descriptor_information\",\n\t\"HV024\": \"fdw_invalid_attribute_value\",\n\t\"HV007\": \"fdw_invalid_column_name\",\n\t\"HV008\": \"fdw_invalid_column_number\",\n\t\"HV004\": \"fdw_invalid_data_type\",\n\t\"HV006\": \"fdw_invalid_data_type_descriptors\",\n\t\"HV091\": \"fdw_invalid_descriptor_field_identifier\",\n\t\"HV00B\": \"fdw_invalid_handle\",\n\t\"HV00C\": \"fdw_invalid_option_index\",\n\t\"HV00D\": \"fdw_invalid_option_name\",\n\t\"HV090\": \"fdw_invalid_string_length_or_buffer_length\",\n\t\"HV00A\": \"fdw_invalid_string_format\",\n\t\"HV009\": \"fdw_invalid_use_of_null_pointer\",\n\t\"HV014\": \"fdw_too_many_handles\",\n\t\"HV001\": \"fdw_out_of_memory\",\n\t\"HV00P\": \"fdw_no_schemas\",\n\t\"HV00J\": \"fdw_option_name_not_found\",\n\t\"HV00K\": \"fdw_reply_handle\",\n\t\"HV00Q\": \"fdw_schema_not_found\",\n\t\"HV00R\": \"fdw_table_not_found\",\n\t\"HV00L\": \"fdw_unable_to_create_execution\",\n\t\"HV00M\": \"fdw_unable_to_create_reply\",\n\t\"HV00N\": \"fdw_unable_to_establish_connection\",\n\t// Class P0 - PL/pgSQL Error\n\t\"P0000\": \"plpgsql_error\",\n\t\"P0001\": \"raise_exception\",\n\t\"P0002\": \"no_data_found\",\n\t\"P0003\": \"too_many_rows\",\n\t// Class XX - Internal Error\n\t\"XX000\": \"internal_error\",\n\t\"XX001\": \"data_corrupted\",\n\t\"XX002\": \"index_corrupted\",\n}\n\nfunc parseError(r *readBuf) *Error {\n\terr := new(Error)\n\tfor t := r.byte(); t != 0; t = r.byte() {\n\t\tmsg := r.string()\n\t\tswitch t {\n\t\tcase 'S':\n\t\t\terr.Severity = msg\n\t\tcase 'C':\n\t\t\terr.Code = ErrorCode(msg)\n\t\tcase 'M':\n\t\t\terr.Message = msg\n\t\tcase 'D':\n\t\t\terr.Detail = msg\n\t\tcase 'H':\n\t\t\terr.Hint = msg\n\t\tcase 'P':\n\t\t\terr.Position = msg\n\t\tcase 'p':\n\t\t\terr.InternalPosition = msg\n\t\tcase 'q':\n\t\t\terr.InternalQuery = msg\n\t\tcase 'W':\n\t\t\terr.Where = msg\n\t\tcase 's':\n\t\t\terr.Schema = msg\n\t\tcase 't':\n\t\t\terr.Table = msg\n\t\tcase 'c':\n\t\t\terr.Column = msg\n\t\tcase 'd':\n\t\t\terr.DataTypeName = msg\n\t\tcase 'n':\n\t\t\terr.Constraint = msg\n\t\tcase 'F':\n\t\t\terr.File = msg\n\t\tcase 'L':\n\t\t\terr.Line = msg\n\t\tcase 'R':\n\t\t\terr.Routine = msg\n\t\t}\n\t}\n\treturn err\n}\n\n// Fatal returns true if the Error Severity is fatal.\nfunc (err *Error) Fatal() bool {\n\treturn err.Severity == Efatal\n}\n\n// SQLState returns the SQLState of the error.\nfunc (err *Error) SQLState() string {\n\treturn string(err.Code)\n}\n\n// Get implements the legacy PGError interface. New code should use the fields\n// of the Error struct directly.\nfunc (err *Error) Get(k byte) (v string) {\n\tswitch k {\n\tcase 'S':\n\t\treturn err.Severity\n\tcase 'C':\n\t\treturn string(err.Code)\n\tcase 'M':\n\t\treturn err.Message\n\tcase 'D':\n\t\treturn err.Detail\n\tcase 'H':\n\t\treturn err.Hint\n\tcase 'P':\n\t\treturn err.Position\n\tcase 'p':\n\t\treturn err.InternalPosition\n\tcase 'q':\n\t\treturn err.InternalQuery\n\tcase 'W':\n\t\treturn err.Where\n\tcase 's':\n\t\treturn err.Schema\n\tcase 't':\n\t\treturn err.Table\n\tcase 'c':\n\t\treturn err.Column\n\tcase 'd':\n\t\treturn err.DataTypeName\n\tcase 'n':\n\t\treturn err.Constraint\n\tcase 'F':\n\t\treturn err.File\n\tcase 'L':\n\t\treturn err.Line\n\tcase 'R':\n\t\treturn err.Routine\n\t}\n\treturn \"\"\n}\n\nfunc (err *Error) Error() string {\n\treturn \"pq: \" + err.Message\n}\n\n// PGError is an interface used by previous versions of pq. It is provided\n// only to support legacy code. New code should use the Error type.\ntype PGError interface {\n\tError() string\n\tFatal() bool\n\tGet(k byte) (v string)\n}\n\nfunc errorf(s string, args ...any) {\n\tpanic(fmt.Errorf(\"pq: %s\", fmt.Sprintf(s, args...)))\n}\n\n// TODO(ainar-g) Rename to errorf after removing panics.\nfunc fmterrorf(s string, args ...any) error {\n\treturn fmt.Errorf(\"pq: %s\", fmt.Sprintf(s, args...))\n}\n\nfunc errRecoverNoErrBadConn(err *error) {\n\te := recover()\n\tif e == nil {\n\t\t// Do nothing\n\t\treturn\n\t}\n\tvar ok bool\n\t*err, ok = e.(error)\n\tif !ok {\n\t\t*err = fmt.Errorf(\"pq: unexpected error: %#v\", e)\n\t}\n}\n\nfunc (cn *conn) errRecover(err *error) {\n\te := recover()\n\tswitch v := e.(type) {\n\tcase nil:\n\t\t// Do nothing\n\tcase runtime.Error:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\tpanic(v)\n\tcase *Error:\n\t\tif v.Fatal() {\n\t\t\t*err = driver.ErrBadConn\n\t\t} else {\n\t\t\t*err = v\n\t\t}\n\tcase *net.OpError:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\t*err = v\n\tcase *safeRetryError:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\t*err = driver.ErrBadConn\n\tcase error:\n\t\tif v == io.EOF || v.Error() == \"remote error: handshake failure\" {\n\t\t\t*err = driver.ErrBadConn\n\t\t} else {\n\t\t\t*err = v\n\t\t}\n\n\tdefault:\n\t\tcn.err.set(driver.ErrBadConn)\n\t\tpanic(fmt.Sprintf(\"unknown error: %#v\", e))\n\t}\n\n\t// Any time we return ErrBadConn, we need to remember it since *Tx doesn't\n\t// mark the connection bad in database/sql.\n\tif *err == driver.ErrBadConn {\n\t\tcn.err.set(driver.ErrBadConn)\n\t}\n}\n"
  },
  {
    "path": "gossh/pgsql/hstore/hstore.go",
    "content": "package hstore\n\nimport (\n\t\"database/sql\"\n\t\"database/sql/driver\"\n\t\"strings\"\n)\n\n// Hstore is a wrapper for transferring Hstore values back and forth easily.\ntype Hstore struct {\n\tMap map[string]sql.NullString\n}\n\n// escapes and quotes hstore keys/values\n// s should be a sql.NullString or string\nfunc hQuote(s any) string {\n\tvar str string\n\tswitch v := s.(type) {\n\tcase sql.NullString:\n\t\tif !v.Valid {\n\t\t\treturn \"NULL\"\n\t\t}\n\t\tstr = v.String\n\tcase string:\n\t\tstr = v\n\tdefault:\n\t\tpanic(\"not a string or sql.NullString\")\n\t}\n\n\tstr = strings.Replace(str, \"\\\\\", \"\\\\\\\\\", -1)\n\treturn `\"` + strings.Replace(str, \"\\\"\", \"\\\\\\\"\", -1) + `\"`\n}\n\n// Scan implements the Scanner interface.\n//\n// Note h.Map is reallocated before the scan to clear existing values. If the\n// hstore column's database value is NULL, then h.Map is set to nil instead.\nfunc (h *Hstore) Scan(value any) error {\n\tif value == nil {\n\t\th.Map = nil\n\t\treturn nil\n\t}\n\th.Map = make(map[string]sql.NullString)\n\tvar b byte\n\tpair := [][]byte{{}, {}}\n\tpi := 0\n\tinQuote := false\n\tdidQuote := false\n\tsawSlash := false\n\tbindex := 0\n\tfor bindex, b = range value.([]byte) {\n\t\tif sawSlash {\n\t\t\tpair[pi] = append(pair[pi], b)\n\t\t\tsawSlash = false\n\t\t\tcontinue\n\t\t}\n\n\t\tswitch b {\n\t\tcase '\\\\':\n\t\t\tsawSlash = true\n\t\t\tcontinue\n\t\tcase '\"':\n\t\t\tinQuote = !inQuote\n\t\t\tif !didQuote {\n\t\t\t\tdidQuote = true\n\t\t\t}\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif !inQuote {\n\t\t\t\tswitch b {\n\t\t\t\tcase ' ', '\\t', '\\n', '\\r':\n\t\t\t\t\tcontinue\n\t\t\t\tcase '=':\n\t\t\t\t\tcontinue\n\t\t\t\tcase '>':\n\t\t\t\t\tpi = 1\n\t\t\t\t\tdidQuote = false\n\t\t\t\t\tcontinue\n\t\t\t\tcase ',':\n\t\t\t\t\ts := string(pair[1])\n\t\t\t\t\tif !didQuote && len(s) == 4 && strings.ToLower(s) == \"null\" {\n\t\t\t\t\t\th.Map[string(pair[0])] = sql.NullString{String: \"\", Valid: false}\n\t\t\t\t\t} else {\n\t\t\t\t\t\th.Map[string(pair[0])] = sql.NullString{String: string(pair[1]), Valid: true}\n\t\t\t\t\t}\n\t\t\t\t\tpair[0] = []byte{}\n\t\t\t\t\tpair[1] = []byte{}\n\t\t\t\t\tpi = 0\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tpair[pi] = append(pair[pi], b)\n\t}\n\tif bindex > 0 {\n\t\ts := string(pair[1])\n\t\tif !didQuote && len(s) == 4 && strings.ToLower(s) == \"null\" {\n\t\t\th.Map[string(pair[0])] = sql.NullString{String: \"\", Valid: false}\n\t\t} else {\n\t\t\th.Map[string(pair[0])] = sql.NullString{String: string(pair[1]), Valid: true}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Value implements the driver Valuer interface. Note if h.Map is nil, the\n// database column value will be set to NULL.\nfunc (h Hstore) Value() (driver.Value, error) {\n\tif h.Map == nil {\n\t\treturn nil, nil\n\t}\n\tparts := []string{}\n\tfor key, val := range h.Map {\n\t\tthispart := hQuote(key) + \"=>\" + hQuote(val)\n\t\tparts = append(parts, thispart)\n\t}\n\treturn []byte(strings.Join(parts, \",\")), nil\n}\n"
  },
  {
    "path": "gossh/pgsql/krb.go",
    "content": "package pgsql\n\n// NewGSSFunc creates a GSS authentication provider, for use with\n// RegisterGSSProvider.\ntype NewGSSFunc func() (GSS, error)\n\nvar newGss NewGSSFunc\n\n// RegisterGSSProvider registers a GSS authentication provider. For example, if\n// you need to use Kerberos to authenticate with your server, add this to your\n// main package:\n//\n//\timport \"github.com/lib/pq/auth/kerberos\"\n//\n//\tfunc init() {\n//\t\tpq.RegisterGSSProvider(func() (pq.GSS, error) { return kerberos.NewGSS() })\n//\t}\nfunc RegisterGSSProvider(newGssArg NewGSSFunc) {\n\tnewGss = newGssArg\n}\n\n// GSS provides GSSAPI authentication (e.g., Kerberos).\ntype GSS interface {\n\tGetInitToken(host string, service string) ([]byte, error)\n\tGetInitTokenFromSpn(spn string) ([]byte, error)\n\tContinue(inToken []byte) (done bool, outToken []byte, err error)\n}\n"
  },
  {
    "path": "gossh/pgsql/notice.go",
    "content": "//go:build go1.10\n// +build go1.10\n\npackage pgsql\n\nimport (\n\t\"context\"\n\t\"database/sql/driver\"\n)\n\n// NoticeHandler returns the notice handler on the given connection, if any. A\n// runtime panic occurs if c is not a pq connection. This is rarely used\n// directly, use ConnectorNoticeHandler and ConnectorWithNoticeHandler instead.\nfunc NoticeHandler(c driver.Conn) func(*Error) {\n\treturn c.(*conn).noticeHandler\n}\n\n// SetNoticeHandler sets the given notice handler on the given connection. A\n// runtime panic occurs if c is not a pq connection. A nil handler may be used\n// to unset it. This is rarely used directly, use ConnectorNoticeHandler and\n// ConnectorWithNoticeHandler instead.\n//\n// Note: Notice handlers are executed synchronously by pq meaning commands\n// won't continue to be processed until the handler returns.\nfunc SetNoticeHandler(c driver.Conn, handler func(*Error)) {\n\tc.(*conn).noticeHandler = handler\n}\n\n// NoticeHandlerConnector wraps a regular connector and sets a notice handler\n// on it.\ntype NoticeHandlerConnector struct {\n\tdriver.Connector\n\tnoticeHandler func(*Error)\n}\n\n// Connect calls the underlying connector's connect method and then sets the\n// notice handler.\nfunc (n *NoticeHandlerConnector) Connect(ctx context.Context) (driver.Conn, error) {\n\tc, err := n.Connector.Connect(ctx)\n\tif err == nil {\n\t\tSetNoticeHandler(c, n.noticeHandler)\n\t}\n\treturn c, err\n}\n\n// ConnectorNoticeHandler returns the currently set notice handler, if any. If\n// the given connector is not a result of ConnectorWithNoticeHandler, nil is\n// returned.\nfunc ConnectorNoticeHandler(c driver.Connector) func(*Error) {\n\tif c, ok := c.(*NoticeHandlerConnector); ok {\n\t\treturn c.noticeHandler\n\t}\n\treturn nil\n}\n\n// ConnectorWithNoticeHandler creates or sets the given handler for the given\n// connector. If the given connector is a result of calling this function\n// previously, it is simply set on the given connector and returned. Otherwise,\n// this returns a new connector wrapping the given one and setting the notice\n// handler. A nil notice handler may be used to unset it.\n//\n// The returned connector is intended to be used with database/sql.OpenDB.\n//\n// Note: Notice handlers are executed synchronously by pq meaning commands\n// won't continue to be processed until the handler returns.\nfunc ConnectorWithNoticeHandler(c driver.Connector, handler func(*Error)) *NoticeHandlerConnector {\n\tif c, ok := c.(*NoticeHandlerConnector); ok {\n\t\tc.noticeHandler = handler\n\t\treturn c\n\t}\n\treturn &NoticeHandlerConnector{Connector: c, noticeHandler: handler}\n}\n"
  },
  {
    "path": "gossh/pgsql/notify.go",
    "content": "package pgsql\n\n// Package pq is a pure Go Postgres driver for the database/sql package.\n// This module contains support for Postgres LISTEN/NOTIFY.\n\nimport (\n\t\"context\"\n\t\"database/sql/driver\"\n\t\"errors\"\n\t\"fmt\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"time\"\n)\n\n// Notification represents a single notification from the database.\ntype Notification struct {\n\t// Process ID (PID) of the notifying postgres backend.\n\tBePid int\n\t// Name of the channel the notification was sent on.\n\tChannel string\n\t// Payload, or the empty string if unspecified.\n\tExtra string\n}\n\nfunc recvNotification(r *readBuf) *Notification {\n\tbePid := r.int32()\n\tchannel := r.string()\n\textra := r.string()\n\n\treturn &Notification{bePid, channel, extra}\n}\n\n// SetNotificationHandler sets the given notification handler on the given\n// connection. A runtime panic occurs if c is not a pq connection. A nil handler\n// may be used to unset it.\n//\n// Note: Notification handlers are executed synchronously by pq meaning commands\n// won't continue to be processed until the handler returns.\nfunc SetNotificationHandler(c driver.Conn, handler func(*Notification)) {\n\tc.(*conn).notificationHandler = handler\n}\n\n// NotificationHandlerConnector wraps a regular connector and sets a notification handler\n// on it.\ntype NotificationHandlerConnector struct {\n\tdriver.Connector\n\tnotificationHandler func(*Notification)\n}\n\n// Connect calls the underlying connector's connect method and then sets the\n// notification handler.\nfunc (n *NotificationHandlerConnector) Connect(ctx context.Context) (driver.Conn, error) {\n\tc, err := n.Connector.Connect(ctx)\n\tif err == nil {\n\t\tSetNotificationHandler(c, n.notificationHandler)\n\t}\n\treturn c, err\n}\n\n// ConnectorNotificationHandler returns the currently set notification handler, if any. If\n// the given connector is not a result of ConnectorWithNotificationHandler, nil is\n// returned.\nfunc ConnectorNotificationHandler(c driver.Connector) func(*Notification) {\n\tif c, ok := c.(*NotificationHandlerConnector); ok {\n\t\treturn c.notificationHandler\n\t}\n\treturn nil\n}\n\n// ConnectorWithNotificationHandler creates or sets the given handler for the given\n// connector. If the given connector is a result of calling this function\n// previously, it is simply set on the given connector and returned. Otherwise,\n// this returns a new connector wrapping the given one and setting the notification\n// handler. A nil notification handler may be used to unset it.\n//\n// The returned connector is intended to be used with database/sql.OpenDB.\n//\n// Note: Notification handlers are executed synchronously by pq meaning commands\n// won't continue to be processed until the handler returns.\nfunc ConnectorWithNotificationHandler(c driver.Connector, handler func(*Notification)) *NotificationHandlerConnector {\n\tif c, ok := c.(*NotificationHandlerConnector); ok {\n\t\tc.notificationHandler = handler\n\t\treturn c\n\t}\n\treturn &NotificationHandlerConnector{Connector: c, notificationHandler: handler}\n}\n\nconst (\n\tconnStateIdle int32 = iota\n\tconnStateExpectResponse\n\tconnStateExpectReadyForQuery\n)\n\ntype message struct {\n\ttyp byte\n\terr error\n}\n\nvar errListenerConnClosed = errors.New(\"pq: ListenerConn has been closed\")\n\n// ListenerConn is a low-level interface for waiting for notifications.  You\n// should use Listener instead.\ntype ListenerConn struct {\n\t// guards cn and err\n\tconnectionLock sync.Mutex\n\tcn             *conn\n\terr            error\n\n\tconnState int32\n\n\t// the sending goroutine will be holding this lock\n\tsenderLock sync.Mutex\n\n\tnotificationChan chan<- *Notification\n\n\treplyChan chan message\n}\n\n// NewListenerConn creates a new ListenerConn. Use NewListener instead.\nfunc NewListenerConn(name string, notificationChan chan<- *Notification) (*ListenerConn, error) {\n\treturn newDialListenerConn(defaultDialer{}, name, notificationChan)\n}\n\nfunc newDialListenerConn(d Dialer, name string, c chan<- *Notification) (*ListenerConn, error) {\n\tcn, err := DialOpen(d, name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tl := &ListenerConn{\n\t\tcn:               cn.(*conn),\n\t\tnotificationChan: c,\n\t\tconnState:        connStateIdle,\n\t\treplyChan:        make(chan message, 2),\n\t}\n\n\tgo l.listenerConnMain()\n\n\treturn l, nil\n}\n\n// We can only allow one goroutine at a time to be running a query on the\n// connection for various reasons, so the goroutine sending on the connection\n// must be holding senderLock.\n//\n// Returns an error if an unrecoverable error has occurred and the ListenerConn\n// should be abandoned.\nfunc (l *ListenerConn) acquireSenderLock() error {\n\t// we must acquire senderLock first to avoid deadlocks; see ExecSimpleQuery\n\tl.senderLock.Lock()\n\n\tl.connectionLock.Lock()\n\terr := l.err\n\tl.connectionLock.Unlock()\n\tif err != nil {\n\t\tl.senderLock.Unlock()\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (l *ListenerConn) releaseSenderLock() {\n\tl.senderLock.Unlock()\n}\n\n// setState advances the protocol state to newState.  Returns false if moving\n// to that state from the current state is not allowed.\nfunc (l *ListenerConn) setState(newState int32) bool {\n\tvar expectedState int32\n\n\tswitch newState {\n\tcase connStateIdle:\n\t\texpectedState = connStateExpectReadyForQuery\n\tcase connStateExpectResponse:\n\t\texpectedState = connStateIdle\n\tcase connStateExpectReadyForQuery:\n\t\texpectedState = connStateExpectResponse\n\tdefault:\n\t\tpanic(fmt.Sprintf(\"unexpected listenerConnState %d\", newState))\n\t}\n\n\treturn atomic.CompareAndSwapInt32(&l.connState, expectedState, newState)\n}\n\n// Main logic is here: receive messages from the postgres backend, forward\n// notifications and query replies and keep the internal state in sync with the\n// protocol state.  Returns when the connection has been lost, is about to go\n// away or should be discarded because we couldn't agree on the state with the\n// server backend.\nfunc (l *ListenerConn) listenerConnLoop() (err error) {\n\tdefer errRecoverNoErrBadConn(&err)\n\n\tr := &readBuf{}\n\tfor {\n\t\tt, err := l.cn.recvMessage(r)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tswitch t {\n\t\tcase 'A':\n\t\t\t// recvNotification copies all the data so we don't need to worry\n\t\t\t// about the scratch buffer being overwritten.\n\t\t\tl.notificationChan <- recvNotification(r)\n\n\t\tcase 'T', 'D':\n\t\t\t// only used by tests; ignore\n\n\t\tcase 'E':\n\t\t\t// We might receive an ErrorResponse even when not in a query; it\n\t\t\t// is expected that the server will close the connection after\n\t\t\t// that, but we should make sure that the error we display is the\n\t\t\t// one from the stray ErrorResponse, not io.ErrUnexpectedEOF.\n\t\t\tif !l.setState(connStateExpectReadyForQuery) {\n\t\t\t\treturn parseError(r)\n\t\t\t}\n\t\t\tl.replyChan <- message{t, parseError(r)}\n\n\t\tcase 'C', 'I':\n\t\t\tif !l.setState(connStateExpectReadyForQuery) {\n\t\t\t\t// protocol out of sync\n\t\t\t\treturn fmt.Errorf(\"unexpected CommandComplete\")\n\t\t\t}\n\t\t\t// ExecSimpleQuery doesn't need to know about this message\n\n\t\tcase 'Z':\n\t\t\tif !l.setState(connStateIdle) {\n\t\t\t\t// protocol out of sync\n\t\t\t\treturn fmt.Errorf(\"unexpected ReadyForQuery\")\n\t\t\t}\n\t\t\tl.replyChan <- message{t, nil}\n\n\t\tcase 'S':\n\t\t\t// ignore\n\t\tcase 'N':\n\t\t\tif n := l.cn.noticeHandler; n != nil {\n\t\t\t\tn(parseError(r))\n\t\t\t}\n\t\tdefault:\n\t\t\treturn fmt.Errorf(\"unexpected message %q from server in listenerConnLoop\", t)\n\t\t}\n\t}\n}\n\n// This is the main routine for the goroutine receiving on the database\n// connection.  Most of the main logic is in listenerConnLoop.\nfunc (l *ListenerConn) listenerConnMain() {\n\terr := l.listenerConnLoop()\n\n\t// listenerConnLoop terminated; we're done, but we still have to clean up.\n\t// Make sure nobody tries to start any new queries by making sure the err\n\t// pointer is set.  It is important that we do not overwrite its value; a\n\t// connection could be closed by either this goroutine or one sending on\n\t// the connection -- whoever closes the connection is assumed to have the\n\t// more meaningful error message (as the other one will probably get\n\t// net.errClosed), so that goroutine sets the error we expose while the\n\t// other error is discarded.  If the connection is lost while two\n\t// goroutines are operating on the socket, it probably doesn't matter which\n\t// error we expose so we don't try to do anything more complex.\n\tl.connectionLock.Lock()\n\tif l.err == nil {\n\t\tl.err = err\n\t}\n\tl.cn.Close()\n\tl.connectionLock.Unlock()\n\n\t// There might be a query in-flight; make sure nobody's waiting for a\n\t// response to it, since there's not going to be one.\n\tclose(l.replyChan)\n\n\t// let the listener know we're done\n\tclose(l.notificationChan)\n\n\t// this ListenerConn is done\n}\n\n// Listen sends a LISTEN query to the server. See ExecSimpleQuery.\nfunc (l *ListenerConn) Listen(channel string) (bool, error) {\n\treturn l.ExecSimpleQuery(\"LISTEN \" + QuoteIdentifier(channel))\n}\n\n// Unlisten sends an UNLISTEN query to the server. See ExecSimpleQuery.\nfunc (l *ListenerConn) Unlisten(channel string) (bool, error) {\n\treturn l.ExecSimpleQuery(\"UNLISTEN \" + QuoteIdentifier(channel))\n}\n\n// UnlistenAll sends an `UNLISTEN *` query to the server. See ExecSimpleQuery.\nfunc (l *ListenerConn) UnlistenAll() (bool, error) {\n\treturn l.ExecSimpleQuery(\"UNLISTEN *\")\n}\n\n// Ping the remote server to make sure it's alive.  Non-nil error means the\n// connection has failed and should be abandoned.\nfunc (l *ListenerConn) Ping() error {\n\tsent, err := l.ExecSimpleQuery(\"\")\n\tif !sent {\n\t\treturn err\n\t}\n\tif err != nil {\n\t\t// shouldn't happen\n\t\tpanic(err)\n\t}\n\treturn nil\n}\n\n// Attempt to send a query on the connection.  Returns an error if sending the\n// query failed, and the caller should initiate closure of this connection.\n// The caller must be holding senderLock (see acquireSenderLock and\n// releaseSenderLock).\nfunc (l *ListenerConn) sendSimpleQuery(q string) (err error) {\n\tdefer errRecoverNoErrBadConn(&err)\n\n\t// must set connection state before sending the query\n\tif !l.setState(connStateExpectResponse) {\n\t\tpanic(\"two queries running at the same time\")\n\t}\n\n\t// Can't use l.cn.writeBuf here because it uses the scratch buffer which\n\t// might get overwritten by listenerConnLoop.\n\tb := &writeBuf{\n\t\tbuf: []byte(\"Q\\x00\\x00\\x00\\x00\"),\n\t\tpos: 1,\n\t}\n\tb.string(q)\n\tl.cn.send(b)\n\n\treturn nil\n}\n\n// ExecSimpleQuery executes a \"simple query\" (i.e. one with no bindable\n// parameters) on the connection. The possible return values are:\n//  1. \"executed\" is true; the query was executed to completion on the\n//     database server.  If the query failed, err will be set to the error\n//     returned by the database, otherwise err will be nil.\n//  2. If \"executed\" is false, the query could not be executed on the remote\n//     server.  err will be non-nil.\n//\n// After a call to ExecSimpleQuery has returned an executed=false value, the\n// connection has either been closed or will be closed shortly thereafter, and\n// all subsequently executed queries will return an error.\nfunc (l *ListenerConn) ExecSimpleQuery(q string) (executed bool, err error) {\n\tif err = l.acquireSenderLock(); err != nil {\n\t\treturn false, err\n\t}\n\tdefer l.releaseSenderLock()\n\n\terr = l.sendSimpleQuery(q)\n\tif err != nil {\n\t\t// We can't know what state the protocol is in, so we need to abandon\n\t\t// this connection.\n\t\tl.connectionLock.Lock()\n\t\t// Set the error pointer if it hasn't been set already; see\n\t\t// listenerConnMain.\n\t\tif l.err == nil {\n\t\t\tl.err = err\n\t\t}\n\t\tl.connectionLock.Unlock()\n\t\tl.cn.c.Close()\n\t\treturn false, err\n\t}\n\n\t// now we just wait for a reply..\n\tfor {\n\t\tm, ok := <-l.replyChan\n\t\tif !ok {\n\t\t\t// We lost the connection to server, don't bother waiting for a\n\t\t\t// a response.  err should have been set already.\n\t\t\tl.connectionLock.Lock()\n\t\t\terr := l.err\n\t\t\tl.connectionLock.Unlock()\n\t\t\treturn false, err\n\t\t}\n\t\tswitch m.typ {\n\t\tcase 'Z':\n\t\t\t// sanity check\n\t\t\tif m.err != nil {\n\t\t\t\tpanic(\"m.err != nil\")\n\t\t\t}\n\t\t\t// done; err might or might not be set\n\t\t\treturn true, err\n\n\t\tcase 'E':\n\t\t\t// sanity check\n\t\t\tif m.err == nil {\n\t\t\t\tpanic(\"m.err == nil\")\n\t\t\t}\n\t\t\t// server responded with an error; ReadyForQuery to follow\n\t\t\terr = m.err\n\n\t\tdefault:\n\t\t\treturn false, fmt.Errorf(\"unknown response for simple query: %q\", m.typ)\n\t\t}\n\t}\n}\n\n// Close closes the connection.\nfunc (l *ListenerConn) Close() error {\n\tl.connectionLock.Lock()\n\tif l.err != nil {\n\t\tl.connectionLock.Unlock()\n\t\treturn errListenerConnClosed\n\t}\n\tl.err = errListenerConnClosed\n\tl.connectionLock.Unlock()\n\t// We can't send anything on the connection without holding senderLock.\n\t// Simply close the net.Conn to wake up everyone operating on it.\n\treturn l.cn.c.Close()\n}\n\n// Err returns the reason the connection was closed. It is not safe to call\n// this function until l.Notify has been closed.\nfunc (l *ListenerConn) Err() error {\n\treturn l.err\n}\n\nvar errListenerClosed = errors.New(\"pq: Listener has been closed\")\n\n// ErrChannelAlreadyOpen is returned from Listen when a channel is already\n// open.\nvar ErrChannelAlreadyOpen = errors.New(\"pq: channel is already open\")\n\n// ErrChannelNotOpen is returned from Unlisten when a channel is not open.\nvar ErrChannelNotOpen = errors.New(\"pq: channel is not open\")\n\n// ListenerEventType is an enumeration of listener event types.\ntype ListenerEventType int\n\nconst (\n\t// ListenerEventConnected is emitted only when the database connection\n\t// has been initially initialized. The err argument of the callback\n\t// will always be nil.\n\tListenerEventConnected ListenerEventType = iota\n\n\t// ListenerEventDisconnected is emitted after a database connection has\n\t// been lost, either because of an error or because Close has been\n\t// called. The err argument will be set to the reason the database\n\t// connection was lost.\n\tListenerEventDisconnected\n\n\t// ListenerEventReconnected is emitted after a database connection has\n\t// been re-established after connection loss. The err argument of the\n\t// callback will always be nil. After this event has been emitted, a\n\t// nil pq.Notification is sent on the Listener.Notify channel.\n\tListenerEventReconnected\n\n\t// ListenerEventConnectionAttemptFailed is emitted after a connection\n\t// to the database was attempted, but failed. The err argument will be\n\t// set to an error describing why the connection attempt did not\n\t// succeed.\n\tListenerEventConnectionAttemptFailed\n)\n\n// EventCallbackType is the event callback type. See also ListenerEventType\n// constants' documentation.\ntype EventCallbackType func(event ListenerEventType, err error)\n\n// Listener provides an interface for listening to notifications from a\n// PostgreSQL database.  For general usage information, see section\n// \"Notifications\".\n//\n// Listener can safely be used from concurrently running goroutines.\ntype Listener struct {\n\t// Channel for receiving notifications from the database.  In some cases a\n\t// nil value will be sent.  See section \"Notifications\" above.\n\tNotify chan *Notification\n\n\tname                 string\n\tminReconnectInterval time.Duration\n\tmaxReconnectInterval time.Duration\n\tdialer               Dialer\n\teventCallback        EventCallbackType\n\n\tlock                 sync.Mutex\n\tisClosed             bool\n\treconnectCond        *sync.Cond\n\tcn                   *ListenerConn\n\tconnNotificationChan <-chan *Notification\n\tchannels             map[string]struct{}\n}\n\n// NewListener creates a new database connection dedicated to LISTEN / NOTIFY.\n//\n// name should be set to a connection string to be used to establish the\n// database connection (see section \"Connection String Parameters\" above).\n//\n// minReconnectInterval controls the duration to wait before trying to\n// re-establish the database connection after connection loss.  After each\n// consecutive failure this interval is doubled, until maxReconnectInterval is\n// reached.  Successfully completing the connection establishment procedure\n// resets the interval back to minReconnectInterval.\n//\n// The last parameter eventCallback can be set to a function which will be\n// called by the Listener when the state of the underlying database connection\n// changes.  This callback will be called by the goroutine which dispatches the\n// notifications over the Notify channel, so you should try to avoid doing\n// potentially time-consuming operations from the callback.\nfunc NewListener(name string,\n\tminReconnectInterval time.Duration,\n\tmaxReconnectInterval time.Duration,\n\teventCallback EventCallbackType) *Listener {\n\treturn NewDialListener(defaultDialer{}, name, minReconnectInterval, maxReconnectInterval, eventCallback)\n}\n\n// NewDialListener is like NewListener but it takes a Dialer.\nfunc NewDialListener(d Dialer,\n\tname string,\n\tminReconnectInterval time.Duration,\n\tmaxReconnectInterval time.Duration,\n\teventCallback EventCallbackType) *Listener {\n\n\tl := &Listener{\n\t\tname:                 name,\n\t\tminReconnectInterval: minReconnectInterval,\n\t\tmaxReconnectInterval: maxReconnectInterval,\n\t\tdialer:               d,\n\t\teventCallback:        eventCallback,\n\n\t\tchannels: make(map[string]struct{}),\n\n\t\tNotify: make(chan *Notification, 32),\n\t}\n\tl.reconnectCond = sync.NewCond(&l.lock)\n\n\tgo l.listenerMain()\n\n\treturn l\n}\n\n// NotificationChannel returns the notification channel for this listener.\n// This is the same channel as Notify, and will not be recreated during the\n// life time of the Listener.\nfunc (l *Listener) NotificationChannel() <-chan *Notification {\n\treturn l.Notify\n}\n\n// Listen starts listening for notifications on a channel.  Calls to this\n// function will block until an acknowledgement has been received from the\n// server.  Note that Listener automatically re-establishes the connection\n// after connection loss, so this function may block indefinitely if the\n// connection can not be re-established.\n//\n// Listen will only fail in three conditions:\n//  1. The channel is already open.  The returned error will be\n//     ErrChannelAlreadyOpen.\n//  2. The query was executed on the remote server, but PostgreSQL returned an\n//     error message in response to the query.  The returned error will be a\n//     pq.Error containing the information the server supplied.\n//  3. Close is called on the Listener before the request could be completed.\n//\n// The channel name is case-sensitive.\nfunc (l *Listener) Listen(channel string) error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\tif l.isClosed {\n\t\treturn errListenerClosed\n\t}\n\n\t// The server allows you to issue a LISTEN on a channel which is already\n\t// open, but it seems useful to be able to detect this case to spot for\n\t// mistakes in application logic.  If the application genuinely does't\n\t// care, it can check the exported error and ignore it.\n\t_, exists := l.channels[channel]\n\tif exists {\n\t\treturn ErrChannelAlreadyOpen\n\t}\n\n\tif l.cn != nil {\n\t\t// If gotResponse is true but error is set, the query was executed on\n\t\t// the remote server, but resulted in an error.  This should be\n\t\t// relatively rare, so it's fine if we just pass the error to our\n\t\t// caller.  However, if gotResponse is false, we could not complete the\n\t\t// query on the remote server and our underlying connection is about\n\t\t// to go away, so we only add relname to l.channels, and wait for\n\t\t// resync() to take care of the rest.\n\t\tgotResponse, err := l.cn.Listen(channel)\n\t\tif gotResponse && err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tl.channels[channel] = struct{}{}\n\tfor l.cn == nil {\n\t\tl.reconnectCond.Wait()\n\t\t// we let go of the mutex for a while\n\t\tif l.isClosed {\n\t\t\treturn errListenerClosed\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// Unlisten removes a channel from the Listener's channel list.  Returns\n// ErrChannelNotOpen if the Listener is not listening on the specified channel.\n// Returns immediately with no error if there is no connection.  Note that you\n// might still get notifications for this channel even after Unlisten has\n// returned.\n//\n// The channel name is case-sensitive.\nfunc (l *Listener) Unlisten(channel string) error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\tif l.isClosed {\n\t\treturn errListenerClosed\n\t}\n\n\t// Similarly to LISTEN, this is not an error in Postgres, but it seems\n\t// useful to distinguish from the normal conditions.\n\t_, exists := l.channels[channel]\n\tif !exists {\n\t\treturn ErrChannelNotOpen\n\t}\n\n\tif l.cn != nil {\n\t\t// Similarly to Listen (see comment in that function), the caller\n\t\t// should only be bothered with an error if it came from the backend as\n\t\t// a response to our query.\n\t\tgotResponse, err := l.cn.Unlisten(channel)\n\t\tif gotResponse && err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Don't bother waiting for resync if there's no connection.\n\tdelete(l.channels, channel)\n\treturn nil\n}\n\n// UnlistenAll removes all channels from the Listener's channel list.  Returns\n// immediately with no error if there is no connection.  Note that you might\n// still get notifications for any of the deleted channels even after\n// UnlistenAll has returned.\nfunc (l *Listener) UnlistenAll() error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\tif l.isClosed {\n\t\treturn errListenerClosed\n\t}\n\n\tif l.cn != nil {\n\t\t// Similarly to Listen (see comment in that function), the caller\n\t\t// should only be bothered with an error if it came from the backend as\n\t\t// a response to our query.\n\t\tgotResponse, err := l.cn.UnlistenAll()\n\t\tif gotResponse && err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Don't bother waiting for resync if there's no connection.\n\tl.channels = make(map[string]struct{})\n\treturn nil\n}\n\n// Ping the remote server to make sure it's alive.  Non-nil return value means\n// that there is no active connection.\nfunc (l *Listener) Ping() error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\tif l.isClosed {\n\t\treturn errListenerClosed\n\t}\n\tif l.cn == nil {\n\t\treturn errors.New(\"no connection\")\n\t}\n\n\treturn l.cn.Ping()\n}\n\n// Clean up after losing the server connection.  Returns l.cn.Err(), which\n// should have the reason the connection was lost.\nfunc (l *Listener) disconnectCleanup() error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\t// sanity check; can't look at Err() until the channel has been closed\n\tselect {\n\tcase _, ok := <-l.connNotificationChan:\n\t\tif ok {\n\t\t\tpanic(\"connNotificationChan not closed\")\n\t\t}\n\tdefault:\n\t\tpanic(\"connNotificationChan not closed\")\n\t}\n\n\terr := l.cn.Err()\n\tl.cn.Close()\n\tl.cn = nil\n\treturn err\n}\n\n// Synchronize the list of channels we want to be listening on with the server\n// after the connection has been established.\nfunc (l *Listener) resync(cn *ListenerConn, notificationChan <-chan *Notification) error {\n\tdoneChan := make(chan error)\n\tgo func(notificationChan <-chan *Notification) {\n\t\tfor channel := range l.channels {\n\t\t\t// If we got a response, return that error to our caller as it's\n\t\t\t// going to be more descriptive than cn.Err().\n\t\t\tgotResponse, err := cn.Listen(channel)\n\t\t\tif gotResponse && err != nil {\n\t\t\t\tdoneChan <- err\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// If we couldn't reach the server, wait for notificationChan to\n\t\t\t// close and then return the error message from the connection, as\n\t\t\t// per ListenerConn's interface.\n\t\t\tif err != nil {\n\t\t\t\tfor range notificationChan {\n\t\t\t\t}\n\t\t\t\tdoneChan <- cn.Err()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t\tdoneChan <- nil\n\t}(notificationChan)\n\n\t// Ignore notifications while synchronization is going on to avoid\n\t// deadlocks.  We have to send a nil notification over Notify anyway as\n\t// we can't possibly know which notifications (if any) were lost while\n\t// the connection was down, so there's no reason to try and process\n\t// these messages at all.\n\tfor {\n\t\tselect {\n\t\tcase _, ok := <-notificationChan:\n\t\t\tif !ok {\n\t\t\t\tnotificationChan = nil\n\t\t\t}\n\n\t\tcase err := <-doneChan:\n\t\t\treturn err\n\t\t}\n\t}\n}\n\n// caller should NOT be holding l.lock\nfunc (l *Listener) closed() bool {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\treturn l.isClosed\n}\n\nfunc (l *Listener) connect() error {\n\tnotificationChan := make(chan *Notification, 32)\n\tcn, err := newDialListenerConn(l.dialer, l.name, notificationChan)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\terr = l.resync(cn, notificationChan)\n\tif err != nil {\n\t\tcn.Close()\n\t\treturn err\n\t}\n\n\tl.cn = cn\n\tl.connNotificationChan = notificationChan\n\tl.reconnectCond.Broadcast()\n\n\treturn nil\n}\n\n// Close disconnects the Listener from the database and shuts it down.\n// Subsequent calls to its methods will return an error.  Close returns an\n// error if the connection has already been closed.\nfunc (l *Listener) Close() error {\n\tl.lock.Lock()\n\tdefer l.lock.Unlock()\n\n\tif l.isClosed {\n\t\treturn errListenerClosed\n\t}\n\n\tif l.cn != nil {\n\t\tl.cn.Close()\n\t}\n\tl.isClosed = true\n\n\t// Unblock calls to Listen()\n\tl.reconnectCond.Broadcast()\n\n\treturn nil\n}\n\nfunc (l *Listener) emitEvent(event ListenerEventType, err error) {\n\tif l.eventCallback != nil {\n\t\tl.eventCallback(event, err)\n\t}\n}\n\n// Main logic here: maintain a connection to the server when possible, wait\n// for notifications and emit events.\nfunc (l *Listener) listenerConnLoop() {\n\tvar nextReconnect time.Time\n\n\treconnectInterval := l.minReconnectInterval\n\tfor {\n\t\tfor {\n\t\t\terr := l.connect()\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\n\t\t\tif l.closed() {\n\t\t\t\treturn\n\t\t\t}\n\t\t\tl.emitEvent(ListenerEventConnectionAttemptFailed, err)\n\n\t\t\ttime.Sleep(reconnectInterval)\n\t\t\treconnectInterval *= 2\n\t\t\tif reconnectInterval > l.maxReconnectInterval {\n\t\t\t\treconnectInterval = l.maxReconnectInterval\n\t\t\t}\n\t\t}\n\n\t\tif nextReconnect.IsZero() {\n\t\t\tl.emitEvent(ListenerEventConnected, nil)\n\t\t} else {\n\t\t\tl.emitEvent(ListenerEventReconnected, nil)\n\t\t\tl.Notify <- nil\n\t\t}\n\n\t\treconnectInterval = l.minReconnectInterval\n\t\tnextReconnect = time.Now().Add(reconnectInterval)\n\n\t\tfor {\n\t\t\tnotification, ok := <-l.connNotificationChan\n\t\t\tif !ok {\n\t\t\t\t// lost connection, loop again\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tl.Notify <- notification\n\t\t}\n\n\t\terr := l.disconnectCleanup()\n\t\tif l.closed() {\n\t\t\treturn\n\t\t}\n\t\tl.emitEvent(ListenerEventDisconnected, err)\n\n\t\ttime.Sleep(time.Until(nextReconnect))\n\t}\n}\n\nfunc (l *Listener) listenerMain() {\n\tl.listenerConnLoop()\n\tclose(l.Notify)\n}\n"
  },
  {
    "path": "gossh/pgsql/oid/doc.go",
    "content": "// Package oid contains OID constants\n// as defined by the Postgres server.\npackage oid\n\n// Oid is a Postgres Object ID.\ntype Oid uint32\n"
  },
  {
    "path": "gossh/pgsql/oid/gen.go",
    "content": "//go:build ignore\n// +build ignore\n\n// Generate the table of OID values\n// Run with 'go run gen.go'.\npackage main\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"os/exec\"\n\t\"strings\"\n\n\t_ \"gossh/pgsql\"\n)\n\n// OID represent a postgres Object Identifier Type.\ntype OID struct {\n\tID   int\n\tType string\n}\n\n// Name returns an upper case version of the oid type.\nfunc (o OID) Name() string {\n\treturn strings.ToUpper(o.Type)\n}\n\nfunc main() {\n\tdatname := os.Getenv(\"PGDATABASE\")\n\tsslmode := os.Getenv(\"PGSSLMODE\")\n\n\tif datname == \"\" {\n\t\tos.Setenv(\"PGDATABASE\", \"pqgotest\")\n\t}\n\n\tif sslmode == \"\" {\n\t\tos.Setenv(\"PGSSLMODE\", \"disable\")\n\t}\n\n\tdb, err := sql.Open(\"postgres\", \"\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\trows, err := db.Query(`\n\t\tSELECT typname, oid\n\t\tFROM pg_type WHERE oid < 10000\n\t\tORDER BY oid;\n\t`)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\toids := make([]*OID, 0)\n\tfor rows.Next() {\n\t\tvar oid OID\n\t\tif err = rows.Scan(&oid.Type, &oid.ID); err != nil {\n\t\t\tlog.Fatal(err)\n\t\t}\n\t\toids = append(oids, &oid)\n\t}\n\tif err = rows.Err(); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tcmd := exec.Command(\"gofmt\")\n\tcmd.Stderr = os.Stderr\n\tw, err := cmd.StdinPipe()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tf, err := os.Create(\"types.go\")\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tcmd.Stdout = f\n\terr = cmd.Start()\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Fprintln(w, \"// Code generated by gen.go. DO NOT EDIT.\")\n\tfmt.Fprintln(w, \"\\npackage oid\")\n\tfmt.Fprintln(w, \"const (\")\n\tfor _, oid := range oids {\n\t\tfmt.Fprintf(w, \"T_%s Oid = %d\\n\", oid.Type, oid.ID)\n\t}\n\tfmt.Fprintln(w, \")\")\n\tfmt.Fprintln(w, \"var TypeName = map[Oid]string{\")\n\tfor _, oid := range oids {\n\t\tfmt.Fprintf(w, \"T_%s: \\\"%s\\\",\\n\", oid.Type, oid.Name())\n\t}\n\tfmt.Fprintln(w, \"}\")\n\tw.Close()\n\tcmd.Wait()\n}\n"
  },
  {
    "path": "gossh/pgsql/oid/types.go",
    "content": "// Code generated by gen.go. DO NOT EDIT.\n\npackage oid\n\nconst (\n\tT_bool             Oid = 16\n\tT_bytea            Oid = 17\n\tT_char             Oid = 18\n\tT_name             Oid = 19\n\tT_int8             Oid = 20\n\tT_int2             Oid = 21\n\tT_int2vector       Oid = 22\n\tT_int4             Oid = 23\n\tT_regproc          Oid = 24\n\tT_text             Oid = 25\n\tT_oid              Oid = 26\n\tT_tid              Oid = 27\n\tT_xid              Oid = 28\n\tT_cid              Oid = 29\n\tT_oidvector        Oid = 30\n\tT_pg_ddl_command   Oid = 32\n\tT_pg_type          Oid = 71\n\tT_pg_attribute     Oid = 75\n\tT_pg_proc          Oid = 81\n\tT_pg_class         Oid = 83\n\tT_json             Oid = 114\n\tT_xml              Oid = 142\n\tT__xml             Oid = 143\n\tT_pg_node_tree     Oid = 194\n\tT__json            Oid = 199\n\tT_smgr             Oid = 210\n\tT_index_am_handler Oid = 325\n\tT_point            Oid = 600\n\tT_lseg             Oid = 601\n\tT_path             Oid = 602\n\tT_box              Oid = 603\n\tT_polygon          Oid = 604\n\tT_line             Oid = 628\n\tT__line            Oid = 629\n\tT_cidr             Oid = 650\n\tT__cidr            Oid = 651\n\tT_float4           Oid = 700\n\tT_float8           Oid = 701\n\tT_abstime          Oid = 702\n\tT_reltime          Oid = 703\n\tT_tinterval        Oid = 704\n\tT_unknown          Oid = 705\n\tT_circle           Oid = 718\n\tT__circle          Oid = 719\n\tT_money            Oid = 790\n\tT__money           Oid = 791\n\tT_macaddr          Oid = 829\n\tT_inet             Oid = 869\n\tT__bool            Oid = 1000\n\tT__bytea           Oid = 1001\n\tT__char            Oid = 1002\n\tT__name            Oid = 1003\n\tT__int2            Oid = 1005\n\tT__int2vector      Oid = 1006\n\tT__int4            Oid = 1007\n\tT__regproc         Oid = 1008\n\tT__text            Oid = 1009\n\tT__tid             Oid = 1010\n\tT__xid             Oid = 1011\n\tT__cid             Oid = 1012\n\tT__oidvector       Oid = 1013\n\tT__bpchar          Oid = 1014\n\tT__varchar         Oid = 1015\n\tT__int8            Oid = 1016\n\tT__point           Oid = 1017\n\tT__lseg            Oid = 1018\n\tT__path            Oid = 1019\n\tT__box             Oid = 1020\n\tT__float4          Oid = 1021\n\tT__float8          Oid = 1022\n\tT__abstime         Oid = 1023\n\tT__reltime         Oid = 1024\n\tT__tinterval       Oid = 1025\n\tT__polygon         Oid = 1027\n\tT__oid             Oid = 1028\n\tT_aclitem          Oid = 1033\n\tT__aclitem         Oid = 1034\n\tT__macaddr         Oid = 1040\n\tT__inet            Oid = 1041\n\tT_bpchar           Oid = 1042\n\tT_varchar          Oid = 1043\n\tT_date             Oid = 1082\n\tT_time             Oid = 1083\n\tT_timestamp        Oid = 1114\n\tT__timestamp       Oid = 1115\n\tT__date            Oid = 1182\n\tT__time            Oid = 1183\n\tT_timestamptz      Oid = 1184\n\tT__timestamptz     Oid = 1185\n\tT_interval         Oid = 1186\n\tT__interval        Oid = 1187\n\tT__numeric         Oid = 1231\n\tT_pg_database      Oid = 1248\n\tT__cstring         Oid = 1263\n\tT_timetz           Oid = 1266\n\tT__timetz          Oid = 1270\n\tT_bit              Oid = 1560\n\tT__bit             Oid = 1561\n\tT_varbit           Oid = 1562\n\tT__varbit          Oid = 1563\n\tT_numeric          Oid = 1700\n\tT_refcursor        Oid = 1790\n\tT__refcursor       Oid = 2201\n\tT_regprocedure     Oid = 2202\n\tT_regoper          Oid = 2203\n\tT_regoperator      Oid = 2204\n\tT_regclass         Oid = 2205\n\tT_regtype          Oid = 2206\n\tT__regprocedure    Oid = 2207\n\tT__regoper         Oid = 2208\n\tT__regoperator     Oid = 2209\n\tT__regclass        Oid = 2210\n\tT__regtype         Oid = 2211\n\tT_record           Oid = 2249\n\tT_cstring          Oid = 2275\n\tT_any              Oid = 2276\n\tT_anyarray         Oid = 2277\n\tT_void             Oid = 2278\n\tT_trigger          Oid = 2279\n\tT_language_handler Oid = 2280\n\tT_internal         Oid = 2281\n\tT_opaque           Oid = 2282\n\tT_anyelement       Oid = 2283\n\tT__record          Oid = 2287\n\tT_anynonarray      Oid = 2776\n\tT_pg_authid        Oid = 2842\n\tT_pg_auth_members  Oid = 2843\n\tT__txid_snapshot   Oid = 2949\n\tT_uuid             Oid = 2950\n\tT__uuid            Oid = 2951\n\tT_txid_snapshot    Oid = 2970\n\tT_fdw_handler      Oid = 3115\n\tT_pg_lsn           Oid = 3220\n\tT__pg_lsn          Oid = 3221\n\tT_tsm_handler      Oid = 3310\n\tT_anyenum          Oid = 3500\n\tT_tsvector         Oid = 3614\n\tT_tsquery          Oid = 3615\n\tT_gtsvector        Oid = 3642\n\tT__tsvector        Oid = 3643\n\tT__gtsvector       Oid = 3644\n\tT__tsquery         Oid = 3645\n\tT_regconfig        Oid = 3734\n\tT__regconfig       Oid = 3735\n\tT_regdictionary    Oid = 3769\n\tT__regdictionary   Oid = 3770\n\tT_jsonb            Oid = 3802\n\tT__jsonb           Oid = 3807\n\tT_anyrange         Oid = 3831\n\tT_event_trigger    Oid = 3838\n\tT_int4range        Oid = 3904\n\tT__int4range       Oid = 3905\n\tT_numrange         Oid = 3906\n\tT__numrange        Oid = 3907\n\tT_tsrange          Oid = 3908\n\tT__tsrange         Oid = 3909\n\tT_tstzrange        Oid = 3910\n\tT__tstzrange       Oid = 3911\n\tT_daterange        Oid = 3912\n\tT__daterange       Oid = 3913\n\tT_int8range        Oid = 3926\n\tT__int8range       Oid = 3927\n\tT_pg_shseclabel    Oid = 4066\n\tT_regnamespace     Oid = 4089\n\tT__regnamespace    Oid = 4090\n\tT_regrole          Oid = 4096\n\tT__regrole         Oid = 4097\n)\n\nvar TypeName = map[Oid]string{\n\tT_bool:             \"BOOL\",\n\tT_bytea:            \"BYTEA\",\n\tT_char:             \"CHAR\",\n\tT_name:             \"NAME\",\n\tT_int8:             \"INT8\",\n\tT_int2:             \"INT2\",\n\tT_int2vector:       \"INT2VECTOR\",\n\tT_int4:             \"INT4\",\n\tT_regproc:          \"REGPROC\",\n\tT_text:             \"TEXT\",\n\tT_oid:              \"OID\",\n\tT_tid:              \"TID\",\n\tT_xid:              \"XID\",\n\tT_cid:              \"CID\",\n\tT_oidvector:        \"OIDVECTOR\",\n\tT_pg_ddl_command:   \"PG_DDL_COMMAND\",\n\tT_pg_type:          \"PG_TYPE\",\n\tT_pg_attribute:     \"PG_ATTRIBUTE\",\n\tT_pg_proc:          \"PG_PROC\",\n\tT_pg_class:         \"PG_CLASS\",\n\tT_json:             \"JSON\",\n\tT_xml:              \"XML\",\n\tT__xml:             \"_XML\",\n\tT_pg_node_tree:     \"PG_NODE_TREE\",\n\tT__json:            \"_JSON\",\n\tT_smgr:             \"SMGR\",\n\tT_index_am_handler: \"INDEX_AM_HANDLER\",\n\tT_point:            \"POINT\",\n\tT_lseg:             \"LSEG\",\n\tT_path:             \"PATH\",\n\tT_box:              \"BOX\",\n\tT_polygon:          \"POLYGON\",\n\tT_line:             \"LINE\",\n\tT__line:            \"_LINE\",\n\tT_cidr:             \"CIDR\",\n\tT__cidr:            \"_CIDR\",\n\tT_float4:           \"FLOAT4\",\n\tT_float8:           \"FLOAT8\",\n\tT_abstime:          \"ABSTIME\",\n\tT_reltime:          \"RELTIME\",\n\tT_tinterval:        \"TINTERVAL\",\n\tT_unknown:          \"UNKNOWN\",\n\tT_circle:           \"CIRCLE\",\n\tT__circle:          \"_CIRCLE\",\n\tT_money:            \"MONEY\",\n\tT__money:           \"_MONEY\",\n\tT_macaddr:          \"MACADDR\",\n\tT_inet:             \"INET\",\n\tT__bool:            \"_BOOL\",\n\tT__bytea:           \"_BYTEA\",\n\tT__char:            \"_CHAR\",\n\tT__name:            \"_NAME\",\n\tT__int2:            \"_INT2\",\n\tT__int2vector:      \"_INT2VECTOR\",\n\tT__int4:            \"_INT4\",\n\tT__regproc:         \"_REGPROC\",\n\tT__text:            \"_TEXT\",\n\tT__tid:             \"_TID\",\n\tT__xid:             \"_XID\",\n\tT__cid:             \"_CID\",\n\tT__oidvector:       \"_OIDVECTOR\",\n\tT__bpchar:          \"_BPCHAR\",\n\tT__varchar:         \"_VARCHAR\",\n\tT__int8:            \"_INT8\",\n\tT__point:           \"_POINT\",\n\tT__lseg:            \"_LSEG\",\n\tT__path:            \"_PATH\",\n\tT__box:             \"_BOX\",\n\tT__float4:          \"_FLOAT4\",\n\tT__float8:          \"_FLOAT8\",\n\tT__abstime:         \"_ABSTIME\",\n\tT__reltime:         \"_RELTIME\",\n\tT__tinterval:       \"_TINTERVAL\",\n\tT__polygon:         \"_POLYGON\",\n\tT__oid:             \"_OID\",\n\tT_aclitem:          \"ACLITEM\",\n\tT__aclitem:         \"_ACLITEM\",\n\tT__macaddr:         \"_MACADDR\",\n\tT__inet:            \"_INET\",\n\tT_bpchar:           \"BPCHAR\",\n\tT_varchar:          \"VARCHAR\",\n\tT_date:             \"DATE\",\n\tT_time:             \"TIME\",\n\tT_timestamp:        \"TIMESTAMP\",\n\tT__timestamp:       \"_TIMESTAMP\",\n\tT__date:            \"_DATE\",\n\tT__time:            \"_TIME\",\n\tT_timestamptz:      \"TIMESTAMPTZ\",\n\tT__timestamptz:     \"_TIMESTAMPTZ\",\n\tT_interval:         \"INTERVAL\",\n\tT__interval:        \"_INTERVAL\",\n\tT__numeric:         \"_NUMERIC\",\n\tT_pg_database:      \"PG_DATABASE\",\n\tT__cstring:         \"_CSTRING\",\n\tT_timetz:           \"TIMETZ\",\n\tT__timetz:          \"_TIMETZ\",\n\tT_bit:              \"BIT\",\n\tT__bit:             \"_BIT\",\n\tT_varbit:           \"VARBIT\",\n\tT__varbit:          \"_VARBIT\",\n\tT_numeric:          \"NUMERIC\",\n\tT_refcursor:        \"REFCURSOR\",\n\tT__refcursor:       \"_REFCURSOR\",\n\tT_regprocedure:     \"REGPROCEDURE\",\n\tT_regoper:          \"REGOPER\",\n\tT_regoperator:      \"REGOPERATOR\",\n\tT_regclass:         \"REGCLASS\",\n\tT_regtype:          \"REGTYPE\",\n\tT__regprocedure:    \"_REGPROCEDURE\",\n\tT__regoper:         \"_REGOPER\",\n\tT__regoperator:     \"_REGOPERATOR\",\n\tT__regclass:        \"_REGCLASS\",\n\tT__regtype:         \"_REGTYPE\",\n\tT_record:           \"RECORD\",\n\tT_cstring:          \"CSTRING\",\n\tT_any:              \"ANY\",\n\tT_anyarray:         \"ANYARRAY\",\n\tT_void:             \"VOID\",\n\tT_trigger:          \"TRIGGER\",\n\tT_language_handler: \"LANGUAGE_HANDLER\",\n\tT_internal:         \"INTERNAL\",\n\tT_opaque:           \"OPAQUE\",\n\tT_anyelement:       \"ANYELEMENT\",\n\tT__record:          \"_RECORD\",\n\tT_anynonarray:      \"ANYNONARRAY\",\n\tT_pg_authid:        \"PG_AUTHID\",\n\tT_pg_auth_members:  \"PG_AUTH_MEMBERS\",\n\tT__txid_snapshot:   \"_TXID_SNAPSHOT\",\n\tT_uuid:             \"UUID\",\n\tT__uuid:            \"_UUID\",\n\tT_txid_snapshot:    \"TXID_SNAPSHOT\",\n\tT_fdw_handler:      \"FDW_HANDLER\",\n\tT_pg_lsn:           \"PG_LSN\",\n\tT__pg_lsn:          \"_PG_LSN\",\n\tT_tsm_handler:      \"TSM_HANDLER\",\n\tT_anyenum:          \"ANYENUM\",\n\tT_tsvector:         \"TSVECTOR\",\n\tT_tsquery:          \"TSQUERY\",\n\tT_gtsvector:        \"GTSVECTOR\",\n\tT__tsvector:        \"_TSVECTOR\",\n\tT__gtsvector:       \"_GTSVECTOR\",\n\tT__tsquery:         \"_TSQUERY\",\n\tT_regconfig:        \"REGCONFIG\",\n\tT__regconfig:       \"_REGCONFIG\",\n\tT_regdictionary:    \"REGDICTIONARY\",\n\tT__regdictionary:   \"_REGDICTIONARY\",\n\tT_jsonb:            \"JSONB\",\n\tT__jsonb:           \"_JSONB\",\n\tT_anyrange:         \"ANYRANGE\",\n\tT_event_trigger:    \"EVENT_TRIGGER\",\n\tT_int4range:        \"INT4RANGE\",\n\tT__int4range:       \"_INT4RANGE\",\n\tT_numrange:         \"NUMRANGE\",\n\tT__numrange:        \"_NUMRANGE\",\n\tT_tsrange:          \"TSRANGE\",\n\tT__tsrange:         \"_TSRANGE\",\n\tT_tstzrange:        \"TSTZRANGE\",\n\tT__tstzrange:       \"_TSTZRANGE\",\n\tT_daterange:        \"DATERANGE\",\n\tT__daterange:       \"_DATERANGE\",\n\tT_int8range:        \"INT8RANGE\",\n\tT__int8range:       \"_INT8RANGE\",\n\tT_pg_shseclabel:    \"PG_SHSECLABEL\",\n\tT_regnamespace:     \"REGNAMESPACE\",\n\tT__regnamespace:    \"_REGNAMESPACE\",\n\tT_regrole:          \"REGROLE\",\n\tT__regrole:         \"_REGROLE\",\n}\n"
  },
  {
    "path": "gossh/pgsql/rows.go",
    "content": "package pgsql\n\nimport (\n\t\"math\"\n\t\"reflect\"\n\t\"time\"\n\n\t\"gossh/pgsql/oid\"\n)\n\nconst headerSize = 4\n\ntype fieldDesc struct {\n\t// The object ID of the data type.\n\tOID oid.Oid\n\t// The data type size (see pg_type.typlen).\n\t// Note that negative values denote variable-width types.\n\tLen int\n\t// The type modifier (see pg_attribute.atttypmod).\n\t// The meaning of the modifier is type-specific.\n\tMod int\n}\n\nfunc (fd fieldDesc) Type() reflect.Type {\n\tswitch fd.OID {\n\tcase oid.T_int8:\n\t\treturn reflect.TypeOf(int64(0))\n\tcase oid.T_int4:\n\t\treturn reflect.TypeOf(int32(0))\n\tcase oid.T_int2:\n\t\treturn reflect.TypeOf(int16(0))\n\tcase oid.T_varchar, oid.T_text:\n\t\treturn reflect.TypeOf(\"\")\n\tcase oid.T_bool:\n\t\treturn reflect.TypeOf(false)\n\tcase oid.T_date, oid.T_time, oid.T_timetz, oid.T_timestamp, oid.T_timestamptz:\n\t\treturn reflect.TypeOf(time.Time{})\n\tcase oid.T_bytea:\n\t\treturn reflect.TypeOf([]byte(nil))\n\tdefault:\n\t\treturn reflect.TypeOf(new(any)).Elem()\n\t}\n}\n\nfunc (fd fieldDesc) Name() string {\n\treturn oid.TypeName[fd.OID]\n}\n\nfunc (fd fieldDesc) Length() (length int64, ok bool) {\n\tswitch fd.OID {\n\tcase oid.T_text, oid.T_bytea:\n\t\treturn math.MaxInt64, true\n\tcase oid.T_varchar, oid.T_bpchar:\n\t\treturn int64(fd.Mod - headerSize), true\n\tdefault:\n\t\treturn 0, false\n\t}\n}\n\nfunc (fd fieldDesc) PrecisionScale() (precision, scale int64, ok bool) {\n\tswitch fd.OID {\n\tcase oid.T_numeric, oid.T__numeric:\n\t\tmod := fd.Mod - headerSize\n\t\tprecision = int64((mod >> 16) & 0xffff)\n\t\tscale = int64(mod & 0xffff)\n\t\treturn precision, scale, true\n\tdefault:\n\t\treturn 0, 0, false\n\t}\n}\n\n// ColumnTypeScanType returns the value type that can be used to scan types into.\nfunc (rs *rows) ColumnTypeScanType(index int) reflect.Type {\n\treturn rs.colTyps[index].Type()\n}\n\n// ColumnTypeDatabaseTypeName return the database system type name.\nfunc (rs *rows) ColumnTypeDatabaseTypeName(index int) string {\n\treturn rs.colTyps[index].Name()\n}\n\n// ColumnTypeLength returns the length of the column type if the column is a\n// variable length type. If the column is not a variable length type ok\n// should return false.\nfunc (rs *rows) ColumnTypeLength(index int) (length int64, ok bool) {\n\treturn rs.colTyps[index].Length()\n}\n\n// ColumnTypePrecisionScale should return the precision and scale for decimal\n// types. If not applicable, ok should be false.\nfunc (rs *rows) ColumnTypePrecisionScale(index int) (precision, scale int64, ok bool) {\n\treturn rs.colTyps[index].PrecisionScale()\n}\n"
  },
  {
    "path": "gossh/pgsql/scram/scram.go",
    "content": "// Copyright (c) 2014 - Gustavo Niemeyer <gustavo@niemeyer.net>\n//\n// All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this\n//    list of conditions and the following disclaimer.\n// 2. 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//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\n// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\n// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n// ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n// Package scram implements a SCRAM-{SHA-1,etc} client per RFC5802.\n//\n// http://tools.ietf.org/html/rfc5802\npackage scram\n\nimport (\n\t\"bytes\"\n\t\"crypto/hmac\"\n\t\"crypto/rand\"\n\t\"encoding/base64\"\n\t\"fmt\"\n\t\"hash\"\n\t\"strconv\"\n\t\"strings\"\n)\n\n// Client implements a SCRAM-* client (SCRAM-SHA-1, SCRAM-SHA-256, etc).\n//\n// A Client may be used within a SASL conversation with logic resembling:\n//\n//\tvar in []byte\n//\tvar client = scram.NewClient(sha1.New, user, pass)\n//\tfor client.Step(in) {\n//\t        out := client.Out()\n//\t        // send out to server\n//\t        in := serverOut\n//\t}\n//\tif client.Err() != nil {\n//\t        // auth failed\n//\t}\ntype Client struct {\n\tnewHash func() hash.Hash\n\n\tuser string\n\tpass string\n\tstep int\n\tout  bytes.Buffer\n\terr  error\n\n\tclientNonce []byte\n\tserverNonce []byte\n\tsaltedPass  []byte\n\tauthMsg     bytes.Buffer\n}\n\n// NewClient returns a new SCRAM-* client with the provided hash algorithm.\n//\n// For SCRAM-SHA-256, for example, use:\n//\n//\tclient := scram.NewClient(sha256.New, user, pass)\nfunc NewClient(newHash func() hash.Hash, user, pass string) *Client {\n\tc := &Client{\n\t\tnewHash: newHash,\n\t\tuser:    user,\n\t\tpass:    pass,\n\t}\n\tc.out.Grow(256)\n\tc.authMsg.Grow(256)\n\treturn c\n}\n\n// Out returns the data to be sent to the server in the current step.\nfunc (c *Client) Out() []byte {\n\tif c.out.Len() == 0 {\n\t\treturn nil\n\t}\n\treturn c.out.Bytes()\n}\n\n// Err returns the error that occurred, or nil if there were no errors.\nfunc (c *Client) Err() error {\n\treturn c.err\n}\n\n// SetNonce sets the client nonce to the provided value.\n// If not set, the nonce is generated automatically out of crypto/rand on the first step.\nfunc (c *Client) SetNonce(nonce []byte) {\n\tc.clientNonce = nonce\n}\n\nvar escaper = strings.NewReplacer(\"=\", \"=3D\", \",\", \"=2C\")\n\n// Step processes the incoming data from the server and makes the\n// next round of data for the server available via Client.Out.\n// Step returns false if there are no errors and more data is\n// still expected.\nfunc (c *Client) Step(in []byte) bool {\n\tc.out.Reset()\n\tif c.step > 2 || c.err != nil {\n\t\treturn false\n\t}\n\tc.step++\n\tswitch c.step {\n\tcase 1:\n\t\tc.err = c.step1(in)\n\tcase 2:\n\t\tc.err = c.step2(in)\n\tcase 3:\n\t\tc.err = c.step3(in)\n\t}\n\treturn c.step > 2 || c.err != nil\n}\n\nfunc (c *Client) step1(in []byte) error {\n\tif len(c.clientNonce) == 0 {\n\t\tconst nonceLen = 16\n\t\tbuf := make([]byte, nonceLen+b64.EncodedLen(nonceLen))\n\t\tif _, err := rand.Read(buf[:nonceLen]); err != nil {\n\t\t\treturn fmt.Errorf(\"cannot read random SCRAM-SHA-256 nonce from operating system: %v\", err)\n\t\t}\n\t\tc.clientNonce = buf[nonceLen:]\n\t\tb64.Encode(c.clientNonce, buf[:nonceLen])\n\t}\n\tc.authMsg.WriteString(\"n=\")\n\tescaper.WriteString(&c.authMsg, c.user)\n\tc.authMsg.WriteString(\",r=\")\n\tc.authMsg.Write(c.clientNonce)\n\n\tc.out.WriteString(\"n,,\")\n\tc.out.Write(c.authMsg.Bytes())\n\treturn nil\n}\n\nvar b64 = base64.StdEncoding\n\nfunc (c *Client) step2(in []byte) error {\n\tc.authMsg.WriteByte(',')\n\tc.authMsg.Write(in)\n\n\tfields := bytes.Split(in, []byte(\",\"))\n\tif len(fields) != 3 {\n\t\treturn fmt.Errorf(\"expected 3 fields in first SCRAM-SHA-256 server message, got %d: %q\", len(fields), in)\n\t}\n\tif !bytes.HasPrefix(fields[0], []byte(\"r=\")) || len(fields[0]) < 2 {\n\t\treturn fmt.Errorf(\"server sent an invalid SCRAM-SHA-256 nonce: %q\", fields[0])\n\t}\n\tif !bytes.HasPrefix(fields[1], []byte(\"s=\")) || len(fields[1]) < 6 {\n\t\treturn fmt.Errorf(\"server sent an invalid SCRAM-SHA-256 salt: %q\", fields[1])\n\t}\n\tif !bytes.HasPrefix(fields[2], []byte(\"i=\")) || len(fields[2]) < 6 {\n\t\treturn fmt.Errorf(\"server sent an invalid SCRAM-SHA-256 iteration count: %q\", fields[2])\n\t}\n\n\tc.serverNonce = fields[0][2:]\n\tif !bytes.HasPrefix(c.serverNonce, c.clientNonce) {\n\t\treturn fmt.Errorf(\"server SCRAM-SHA-256 nonce is not prefixed by client nonce: got %q, want %q+\\\"...\\\"\", c.serverNonce, c.clientNonce)\n\t}\n\n\tsalt := make([]byte, b64.DecodedLen(len(fields[1][2:])))\n\tn, err := b64.Decode(salt, fields[1][2:])\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot decode SCRAM-SHA-256 salt sent by server: %q\", fields[1])\n\t}\n\tsalt = salt[:n]\n\titerCount, err := strconv.Atoi(string(fields[2][2:]))\n\tif err != nil {\n\t\treturn fmt.Errorf(\"server sent an invalid SCRAM-SHA-256 iteration count: %q\", fields[2])\n\t}\n\tc.saltPassword(salt, iterCount)\n\n\tc.authMsg.WriteString(\",c=biws,r=\")\n\tc.authMsg.Write(c.serverNonce)\n\n\tc.out.WriteString(\"c=biws,r=\")\n\tc.out.Write(c.serverNonce)\n\tc.out.WriteString(\",p=\")\n\tc.out.Write(c.clientProof())\n\treturn nil\n}\n\nfunc (c *Client) step3(in []byte) error {\n\tvar isv, ise bool\n\tvar fields = bytes.Split(in, []byte(\",\"))\n\tif len(fields) == 1 {\n\t\tisv = bytes.HasPrefix(fields[0], []byte(\"v=\"))\n\t\tise = bytes.HasPrefix(fields[0], []byte(\"e=\"))\n\t}\n\tif ise {\n\t\treturn fmt.Errorf(\"SCRAM-SHA-256 authentication error: %s\", fields[0][2:])\n\t} else if !isv {\n\t\treturn fmt.Errorf(\"unsupported SCRAM-SHA-256 final message from server: %q\", in)\n\t}\n\tif !bytes.Equal(c.serverSignature(), fields[0][2:]) {\n\t\treturn fmt.Errorf(\"cannot authenticate SCRAM-SHA-256 server signature: %q\", fields[0][2:])\n\t}\n\treturn nil\n}\n\nfunc (c *Client) saltPassword(salt []byte, iterCount int) {\n\tmac := hmac.New(c.newHash, []byte(c.pass))\n\tmac.Write(salt)\n\tmac.Write([]byte{0, 0, 0, 1})\n\tui := mac.Sum(nil)\n\thi := make([]byte, len(ui))\n\tcopy(hi, ui)\n\tfor i := 1; i < iterCount; i++ {\n\t\tmac.Reset()\n\t\tmac.Write(ui)\n\t\tmac.Sum(ui[:0])\n\t\tfor j, b := range ui {\n\t\t\thi[j] ^= b\n\t\t}\n\t}\n\tc.saltedPass = hi\n}\n\nfunc (c *Client) clientProof() []byte {\n\tmac := hmac.New(c.newHash, c.saltedPass)\n\tmac.Write([]byte(\"Client Key\"))\n\tclientKey := mac.Sum(nil)\n\thash := c.newHash()\n\thash.Write(clientKey)\n\tstoredKey := hash.Sum(nil)\n\tmac = hmac.New(c.newHash, storedKey)\n\tmac.Write(c.authMsg.Bytes())\n\tclientProof := mac.Sum(nil)\n\tfor i, b := range clientKey {\n\t\tclientProof[i] ^= b\n\t}\n\tclientProof64 := make([]byte, b64.EncodedLen(len(clientProof)))\n\tb64.Encode(clientProof64, clientProof)\n\treturn clientProof64\n}\n\nfunc (c *Client) serverSignature() []byte {\n\tmac := hmac.New(c.newHash, c.saltedPass)\n\tmac.Write([]byte(\"Server Key\"))\n\tserverKey := mac.Sum(nil)\n\n\tmac = hmac.New(c.newHash, serverKey)\n\tmac.Write(c.authMsg.Bytes())\n\tserverSignature := mac.Sum(nil)\n\n\tencoded := make([]byte, b64.EncodedLen(len(serverSignature)))\n\tb64.Encode(encoded, serverSignature)\n\treturn encoded\n}\n"
  },
  {
    "path": "gossh/pgsql/ssl.go",
    "content": "package pgsql\n\nimport (\n\t\"crypto/tls\"\n\t\"crypto/x509\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"os\"\n\t\"os/user\"\n\t\"path/filepath\"\n\t\"strings\"\n)\n\n// ssl generates a function to upgrade a net.Conn based on the \"sslmode\" and\n// related settings. The function is nil when no upgrade should take place.\nfunc ssl(o values) (func(net.Conn) (net.Conn, error), error) {\n\tverifyCaOnly := false\n\ttlsConf := tls.Config{}\n\tswitch mode := o[\"sslmode\"]; mode {\n\t// \"require\" is the default.\n\tcase \"\", \"require\":\n\t\t// We must skip TLS's own verification since it requires full\n\t\t// verification since Go 1.3.\n\t\ttlsConf.InsecureSkipVerify = true\n\n\t\t// From http://www.postgresql.org/docs/current/static/libpq-ssl.html:\n\t\t//\n\t\t// Note: For backwards compatibility with earlier versions of\n\t\t// PostgreSQL, if a root CA file exists, the behavior of\n\t\t// sslmode=require will be the same as that of verify-ca, meaning the\n\t\t// server certificate is validated against the CA. Relying on this\n\t\t// behavior is discouraged, and applications that need certificate\n\t\t// validation should always use verify-ca or verify-full.\n\t\tif sslrootcert, ok := o[\"sslrootcert\"]; ok {\n\t\t\tif _, err := os.Stat(sslrootcert); err == nil {\n\t\t\t\tverifyCaOnly = true\n\t\t\t} else {\n\t\t\t\tdelete(o, \"sslrootcert\")\n\t\t\t}\n\t\t}\n\tcase \"verify-ca\":\n\t\t// We must skip TLS's own verification since it requires full\n\t\t// verification since Go 1.3.\n\t\ttlsConf.InsecureSkipVerify = true\n\t\tverifyCaOnly = true\n\tcase \"verify-full\":\n\t\ttlsConf.ServerName = o[\"host\"]\n\tcase \"disable\":\n\t\treturn nil, nil\n\tdefault:\n\t\treturn nil, fmterrorf(`unsupported sslmode %q; only \"require\" (default), \"verify-full\", \"verify-ca\", and \"disable\" supported`, mode)\n\t}\n\n\t// Set Server Name Indication (SNI), if enabled by connection parameters.\n\t// By default SNI is on, any value which is not starting with \"1\" disables\n\t// SNI -- that is the same check vanilla libpq uses.\n\tif sslsni := o[\"sslsni\"]; sslsni == \"\" || strings.HasPrefix(sslsni, \"1\") {\n\t\t// RFC 6066 asks to not set SNI if the host is a literal IP address (IPv4\n\t\t// or IPv6). This check is coded already crypto.tls.hostnameInSNI, so\n\t\t// just always set ServerName here and let crypto/tls do the filtering.\n\t\ttlsConf.ServerName = o[\"host\"]\n\t}\n\n\terr := sslClientCertificates(&tlsConf, o)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = sslCertificateAuthority(&tlsConf, o)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Accept renegotiation requests initiated by the backend.\n\t//\n\t// Renegotiation was deprecated then removed from PostgreSQL 9.5, but\n\t// the default configuration of older versions has it enabled. Redshift\n\t// also initiates renegotiations and cannot be reconfigured.\n\ttlsConf.Renegotiation = tls.RenegotiateFreelyAsClient\n\n\treturn func(conn net.Conn) (net.Conn, error) {\n\t\tclient := tls.Client(conn, &tlsConf)\n\t\tif verifyCaOnly {\n\t\t\terr := sslVerifyCertificateAuthority(client, &tlsConf)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn client, nil\n\t}, nil\n}\n\n// sslClientCertificates adds the certificate specified in the \"sslcert\" and\n// \"sslkey\" settings, or if they aren't set, from the .postgresql directory\n// in the user's home directory. The configured files must exist and have\n// the correct permissions.\nfunc sslClientCertificates(tlsConf *tls.Config, o values) error {\n\tsslinline := o[\"sslinline\"]\n\tif sslinline == \"true\" {\n\t\tcert, err := tls.X509KeyPair([]byte(o[\"sslcert\"]), []byte(o[\"sslkey\"]))\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttlsConf.Certificates = []tls.Certificate{cert}\n\t\treturn nil\n\t}\n\n\t// user.Current() might fail when cross-compiling. We have to ignore the\n\t// error and continue without home directory defaults, since we wouldn't\n\t// know from where to load them.\n\tuser, _ := user.Current()\n\n\t// In libpq, the client certificate is only loaded if the setting is not blank.\n\t//\n\t// https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1036-L1037\n\tsslcert := o[\"sslcert\"]\n\tif len(sslcert) == 0 && user != nil {\n\t\tsslcert = filepath.Join(user.HomeDir, \".postgresql\", \"postgresql.crt\")\n\t}\n\t// https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1045\n\tif len(sslcert) == 0 {\n\t\treturn nil\n\t}\n\t// https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1050:L1054\n\tif _, err := os.Stat(sslcert); os.IsNotExist(err) {\n\t\treturn nil\n\t} else if err != nil {\n\t\treturn err\n\t}\n\n\t// In libpq, the ssl key is only loaded if the setting is not blank.\n\t//\n\t// https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L1123-L1222\n\tsslkey := o[\"sslkey\"]\n\tif len(sslkey) == 0 && user != nil {\n\t\tsslkey = filepath.Join(user.HomeDir, \".postgresql\", \"postgresql.key\")\n\t}\n\n\tif len(sslkey) > 0 {\n\t\tif err := sslKeyPermissions(sslkey); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tcert, err := tls.LoadX509KeyPair(sslcert, sslkey)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\ttlsConf.Certificates = []tls.Certificate{cert}\n\treturn nil\n}\n\n// sslCertificateAuthority adds the RootCA specified in the \"sslrootcert\" setting.\nfunc sslCertificateAuthority(tlsConf *tls.Config, o values) error {\n\t// In libpq, the root certificate is only loaded if the setting is not blank.\n\t//\n\t// https://github.com/postgres/postgres/blob/REL9_6_2/src/interfaces/libpq/fe-secure-openssl.c#L950-L951\n\tif sslrootcert := o[\"sslrootcert\"]; len(sslrootcert) > 0 {\n\t\ttlsConf.RootCAs = x509.NewCertPool()\n\n\t\tsslinline := o[\"sslinline\"]\n\n\t\tvar cert []byte\n\t\tif sslinline == \"true\" {\n\t\t\tcert = []byte(sslrootcert)\n\t\t} else {\n\t\t\tvar err error\n\t\t\tcert, err = ioutil.ReadFile(sslrootcert)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tif !tlsConf.RootCAs.AppendCertsFromPEM(cert) {\n\t\t\treturn fmterrorf(\"couldn't parse pem in sslrootcert\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// sslVerifyCertificateAuthority carries out a TLS handshake to the server and\n// verifies the presented certificate against the CA, i.e. the one specified in\n// sslrootcert or the system CA if sslrootcert was not specified.\nfunc sslVerifyCertificateAuthority(client *tls.Conn, tlsConf *tls.Config) error {\n\terr := client.Handshake()\n\tif err != nil {\n\t\treturn err\n\t}\n\tcerts := client.ConnectionState().PeerCertificates\n\topts := x509.VerifyOptions{\n\t\tDNSName:       client.ConnectionState().ServerName,\n\t\tIntermediates: x509.NewCertPool(),\n\t\tRoots:         tlsConf.RootCAs,\n\t}\n\tfor i, cert := range certs {\n\t\tif i == 0 {\n\t\t\tcontinue\n\t\t}\n\t\topts.Intermediates.AddCert(cert)\n\t}\n\t_, err = certs[0].Verify(opts)\n\treturn err\n}\n"
  },
  {
    "path": "gossh/pgsql/ssl_permissions.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage pgsql\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"syscall\"\n)\n\nconst (\n\trootUserID = uint32(0)\n\n\t// The maximum permissions that a private key file owned by a regular user\n\t// is allowed to have. This translates to u=rw.\n\tmaxUserOwnedKeyPermissions os.FileMode = 0600\n\n\t// The maximum permissions that a private key file owned by root is allowed\n\t// to have. This translates to u=rw,g=r.\n\tmaxRootOwnedKeyPermissions os.FileMode = 0640\n)\n\nvar (\n\terrSSLKeyHasUnacceptableUserPermissions = errors.New(\"permissions for files not owned by root should be u=rw (0600) or less\")\n\terrSSLKeyHasUnacceptableRootPermissions = errors.New(\"permissions for root owned files should be u=rw,g=r (0640) or less\")\n)\n\n// sslKeyPermissions checks the permissions on user-supplied ssl key files.\n// The key file should have very little access.\n//\n// libpq does not check key file permissions on Windows.\nfunc sslKeyPermissions(sslkey string) error {\n\tinfo, err := os.Stat(sslkey)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = hasCorrectPermissions(info)\n\n\t// return ErrSSLKeyHasWorldPermissions for backwards compatability with\n\t// existing code.\n\tif err == errSSLKeyHasUnacceptableUserPermissions || err == errSSLKeyHasUnacceptableRootPermissions {\n\t\terr = ErrSSLKeyHasWorldPermissions\n\t}\n\treturn err\n}\n\n// hasCorrectPermissions checks the file info (and the unix-specific stat_t\n// output) to verify that the permissions on the file are correct.\n//\n// If the file is owned by the same user the process is running as,\n// the file should only have 0600 (u=rw). If the file is owned by root,\n// and the group matches the group that the process is running in, the\n// permissions cannot be more than 0640 (u=rw,g=r). The file should\n// never have world permissions.\n//\n// Returns an error when the permission check fails.\nfunc hasCorrectPermissions(info os.FileInfo) error {\n\t// if file's permission matches 0600, allow access.\n\tuserPermissionMask := (os.FileMode(0777) ^ maxUserOwnedKeyPermissions)\n\n\t// regardless of if we're running as root or not, 0600 is acceptable,\n\t// so we return if we match the regular user permission mask.\n\tif info.Mode().Perm()&userPermissionMask == 0 {\n\t\treturn nil\n\t}\n\n\t// We need to pull the Unix file information to get the file's owner.\n\t// If we can't access it, there's some sort of operating system level error\n\t// and we should fail rather than attempting to use faulty information.\n\tsysInfo := info.Sys()\n\tif sysInfo == nil {\n\t\treturn ErrSSLKeyUnknownOwnership\n\t}\n\n\tunixStat, ok := sysInfo.(*syscall.Stat_t)\n\tif !ok {\n\t\treturn ErrSSLKeyUnknownOwnership\n\t}\n\n\t// if the file is owned by root, we allow 0640 (u=rw,g=r) to match what\n\t// Postgres does.\n\tif unixStat.Uid == rootUserID {\n\t\trootPermissionMask := (os.FileMode(0777) ^ maxRootOwnedKeyPermissions)\n\t\tif info.Mode().Perm()&rootPermissionMask != 0 {\n\t\t\treturn errSSLKeyHasUnacceptableRootPermissions\n\t\t}\n\t\treturn nil\n\t}\n\n\treturn errSSLKeyHasUnacceptableUserPermissions\n}\n"
  },
  {
    "path": "gossh/pgsql/ssl_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage pgsql\n\n// sslKeyPermissions checks the permissions on user-supplied ssl key files.\n// The key file should have very little access.\n//\n// libpq does not check key file permissions on Windows.\nfunc sslKeyPermissions(string) error { return nil }\n"
  },
  {
    "path": "gossh/pgsql/url.go",
    "content": "package pgsql\n\nimport (\n\t\"fmt\"\n\t\"net\"\n\tnurl \"net/url\"\n\t\"sort\"\n\t\"strings\"\n)\n\n// ParseURL no longer needs to be used by clients of this library since supplying a URL as a\n// connection string to sql.Open() is now supported:\n//\n//\tsql.Open(\"postgres\", \"postgres://bob:secret@1.2.3.4:5432/mydb?sslmode=verify-full\")\n//\n// It remains exported here for backwards-compatibility.\n//\n// ParseURL converts a url to a connection string for driver.Open.\n// Example:\n//\n//\t\"postgres://bob:secret@1.2.3.4:5432/mydb?sslmode=verify-full\"\n//\n// converts to:\n//\n//\t\"user=bob password=secret host=1.2.3.4 port=5432 dbname=mydb sslmode=verify-full\"\n//\n// A minimal example:\n//\n//\t\"postgres://\"\n//\n// This will be blank, causing driver.Open to use all of the defaults\nfunc ParseURL(url string) (string, error) {\n\tu, err := nurl.Parse(url)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif u.Scheme != \"postgres\" && u.Scheme != \"postgresql\" {\n\t\treturn \"\", fmt.Errorf(\"invalid connection protocol: %s\", u.Scheme)\n\t}\n\n\tvar kvs []string\n\tescaper := strings.NewReplacer(`'`, `\\'`, `\\`, `\\\\`)\n\taccrue := func(k, v string) {\n\t\tif v != \"\" {\n\t\t\tkvs = append(kvs, k+\"='\"+escaper.Replace(v)+\"'\")\n\t\t}\n\t}\n\n\tif u.User != nil {\n\t\tv := u.User.Username()\n\t\taccrue(\"user\", v)\n\n\t\tv, _ = u.User.Password()\n\t\taccrue(\"password\", v)\n\t}\n\n\tif host, port, err := net.SplitHostPort(u.Host); err != nil {\n\t\taccrue(\"host\", u.Host)\n\t} else {\n\t\taccrue(\"host\", host)\n\t\taccrue(\"port\", port)\n\t}\n\n\tif u.Path != \"\" {\n\t\taccrue(\"dbname\", u.Path[1:])\n\t}\n\n\tq := u.Query()\n\tfor k := range q {\n\t\taccrue(k, q.Get(k))\n\t}\n\n\tsort.Strings(kvs) // Makes testing easier (not a performance concern)\n\treturn strings.Join(kvs, \" \"), nil\n}\n"
  },
  {
    "path": "gossh/pgsql/user_other.go",
    "content": "// Package pq is a pure Go Postgres driver for the database/sql package.\n\n//go:build js || android || hurd || zos\n// +build js android hurd zos\n\npackage pgsql\n\nfunc userCurrent() (string, error) {\n\treturn \"\", ErrCouldNotDetectUsername\n}\n"
  },
  {
    "path": "gossh/pgsql/user_posix.go",
    "content": "// Package pq is a pure Go Postgres driver for the database/sql package.\n\n//go:build aix || darwin || dragonfly || freebsd || (linux && !android) || nacl || netbsd || openbsd || plan9 || solaris || rumprun || illumos\n// +build aix darwin dragonfly freebsd linux,!android nacl netbsd openbsd plan9 solaris rumprun illumos\n\npackage pgsql\n\nimport (\n\t\"os\"\n\t\"os/user\"\n)\n\nfunc userCurrent() (string, error) {\n\tu, err := user.Current()\n\tif err == nil {\n\t\treturn u.Username, nil\n\t}\n\n\tname := os.Getenv(\"USER\")\n\tif name != \"\" {\n\t\treturn name, nil\n\t}\n\n\treturn \"\", ErrCouldNotDetectUsername\n}\n"
  },
  {
    "path": "gossh/pgsql/user_windows.go",
    "content": "// Package pq is a pure Go Postgres driver for the database/sql package.\npackage pgsql\n\nimport (\n\t\"path/filepath\"\n\t\"syscall\"\n)\n\n// Perform Windows user name lookup identically to libpq.\n//\n// The PostgreSQL code makes use of the legacy Win32 function\n// GetUserName, and that function has not been imported into stock Go.\n// GetUserNameEx is available though, the difference being that a\n// wider range of names are available.  To get the output to be the\n// same as GetUserName, only the base (or last) component of the\n// result is returned.\nfunc userCurrent() (string, error) {\n\tpw_name := make([]uint16, 128)\n\tpwname_size := uint32(len(pw_name)) - 1\n\terr := syscall.GetUserNameEx(syscall.NameSamCompatible, &pw_name[0], &pwname_size)\n\tif err != nil {\n\t\treturn \"\", ErrCouldNotDetectUsername\n\t}\n\ts := syscall.UTF16ToString(pw_name)\n\tu := filepath.Base(s)\n\treturn u, nil\n}\n"
  },
  {
    "path": "gossh/pgsql/uuid.go",
    "content": "package pgsql\n\nimport (\n\t\"encoding/hex\"\n\t\"fmt\"\n)\n\n// decodeUUIDBinary interprets the binary format of a uuid, returning it in text format.\nfunc decodeUUIDBinary(src []byte) ([]byte, error) {\n\tif len(src) != 16 {\n\t\treturn nil, fmt.Errorf(\"pq: unable to decode uuid; bad length: %d\", len(src))\n\t}\n\n\tdst := make([]byte, 36)\n\tdst[8], dst[13], dst[18], dst[23] = '-', '-', '-', '-'\n\thex.Encode(dst[0:], src[0:4])\n\thex.Encode(dst[9:], src[4:6])\n\thex.Encode(dst[14:], src[6:8])\n\thex.Encode(dst[19:], src[8:10])\n\thex.Encode(dst[24:], src[10:16])\n\n\treturn dst, nil\n}\n"
  },
  {
    "path": "gossh/pty/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n//+build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "gossh/pty/cmd_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage pty\n\nimport (\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\n// copied from os/exec.Cmd for platform compatibility\n// we need to use startupInfoEx for pty support, but os/exec.Cmd only have\n// support for startupInfo on windows, so we have to rewrite some internal\n// logic for windows while keep its behavior compatible with other platforms.\n\n// windowExecCmd represents an external command being prepared or run.\n//\n// A cmd cannot be reused after calling its Run, Output or CombinedOutput\n// methods.\ntype windowExecCmd struct {\n\tcmd        *exec.Cmd\n\twaitCalled bool\n\tconPty     *WindowsPty\n\tconTty     *WindowsTty\n\tattrList   *windows.ProcThreadAttributeListContainer\n}\n\nfunc (c *windowExecCmd) close() error {\n\tc.attrList.Delete()\n\t_ = c.conPty.Close()\n\t_ = c.conTty.Close()\n\n\treturn nil\n}\n\nfunc (c *windowExecCmd) argv() []string {\n\tif len(c.cmd.Args) > 0 {\n\t\treturn c.cmd.Args\n\t}\n\n\treturn []string{c.cmd.Path}\n}\n\n//\n// Helpers for working with Windows. These are exact copies of the same utilities found in the go stdlib.\n//\n\nfunc lookExtensions(path, dir string) (string, error) {\n\tif filepath.Base(path) == path {\n\t\tpath = filepath.Join(\".\", path)\n\t}\n\n\tif dir == \"\" {\n\t\treturn exec.LookPath(path)\n\t}\n\n\tif filepath.VolumeName(path) != \"\" {\n\t\treturn exec.LookPath(path)\n\t}\n\n\tif len(path) > 1 && os.IsPathSeparator(path[0]) {\n\t\treturn exec.LookPath(path)\n\t}\n\n\tdirandpath := filepath.Join(dir, path)\n\n\t// We assume that LookPath will only add file extension.\n\tlp, err := exec.LookPath(dirandpath)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\text := strings.TrimPrefix(lp, dirandpath)\n\n\treturn path + ext, nil\n}\n\nfunc dedupEnvCase(caseInsensitive bool, env []string) []string {\n\t// Construct the output in reverse order, to preserve the\n\t// last occurrence of each key.\n\tout := make([]string, 0, len(env))\n\tsaw := make(map[string]bool, len(env))\n\tfor n := len(env); n > 0; n-- {\n\t\tkv := env[n-1]\n\n\t\ti := strings.Index(kv, \"=\")\n\t\tif i == 0 {\n\t\t\t// We observe in practice keys with a single leading \"=\" on Windows.\n\t\t\t// TODO(#49886): Should we consume only the first leading \"=\" as part\n\t\t\t// of the key, or parse through arbitrarily many of them until a non-\"=\"?\n\t\t\ti = strings.Index(kv[1:], \"=\") + 1\n\t\t}\n\t\tif i < 0 {\n\t\t\tif kv != \"\" {\n\t\t\t\t// The entry is not of the form \"key=value\" (as it is required to be).\n\t\t\t\t// Leave it as-is for now.\n\t\t\t\t// TODO(#52436): should we strip or reject these bogus entries?\n\t\t\t\tout = append(out, kv)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tk := kv[:i]\n\t\tif caseInsensitive {\n\t\t\tk = strings.ToLower(k)\n\t\t}\n\t\tif saw[k] {\n\t\t\tcontinue\n\t\t}\n\n\t\tsaw[k] = true\n\t\tout = append(out, kv)\n\t}\n\n\t// Now reverse the slice to restore the original order.\n\tfor i := 0; i < len(out)/2; i++ {\n\t\tj := len(out) - i - 1\n\t\tout[i], out[j] = out[j], out[i]\n\t}\n\n\treturn out\n}\n\nfunc addCriticalEnv(env []string) []string {\n\tfor _, kv := range env {\n\t\teq := strings.Index(kv, \"=\")\n\t\tif eq < 0 {\n\t\t\tcontinue\n\t\t}\n\t\tk := kv[:eq]\n\t\tif strings.EqualFold(k, \"SYSTEMROOT\") {\n\t\t\t// We already have it.\n\t\t\treturn env\n\t\t}\n\t}\n\n\treturn append(env, \"SYSTEMROOT=\"+os.Getenv(\"SYSTEMROOT\"))\n}\n\nfunc execEnvDefault(sys *syscall.SysProcAttr) (env []string, err error) {\n\tif sys == nil || sys.Token == 0 {\n\t\treturn syscall.Environ(), nil\n\t}\n\n\tvar block *uint16\n\terr = windows.CreateEnvironmentBlock(&block, windows.Token(sys.Token), false)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer windows.DestroyEnvironmentBlock(block)\n\tblockp := uintptr(unsafe.Pointer(block))\n\n\tfor {\n\n\t\t// find NUL terminator\n\t\tend := unsafe.Pointer(blockp)\n\t\tfor *(*uint16)(end) != 0 {\n\t\t\tend = unsafe.Pointer(uintptr(end) + 2)\n\t\t}\n\n\t\tn := (uintptr(end) - uintptr(unsafe.Pointer(blockp))) / 2\n\t\tif n == 0 {\n\t\t\t// environment block ends with empty string\n\t\t\tbreak\n\t\t}\n\n\t\tentry := (*[(1 << 30) - 1]uint16)(unsafe.Pointer(blockp))[:n:n]\n\t\tenv = append(env, string(utf16.Decode(entry)))\n\t\tblockp += 2 * (uintptr(len(entry)) + 1)\n\t}\n\treturn\n}\n\nfunc createEnvBlock(envv []string) *uint16 {\n\tif len(envv) == 0 {\n\t\treturn &utf16.Encode([]rune(\"\\x00\\x00\"))[0]\n\t}\n\tlength := 0\n\tfor _, s := range envv {\n\t\tlength += len(s) + 1\n\t}\n\tlength += 1\n\n\tb := make([]byte, length)\n\ti := 0\n\tfor _, s := range envv {\n\t\tl := len(s)\n\t\tcopy(b[i:i+l], []byte(s))\n\t\tcopy(b[i+l:i+l+1], []byte{0})\n\t\ti = i + l + 1\n\t}\n\tcopy(b[i:i+1], []byte{0})\n\n\treturn &utf16.Encode([]rune(string(b)))[0]\n}\n\nfunc makeCmdLine(args []string) string {\n\tvar s string\n\tfor _, v := range args {\n\t\tif s != \"\" {\n\t\t\ts += \" \"\n\t\t}\n\t\ts += windows.EscapeArg(v)\n\t}\n\treturn s\n}\n\nfunc isSlash(c uint8) bool {\n\treturn c == '\\\\' || c == '/'\n}\n\nfunc normalizeDir(dir string) (name string, err error) {\n\tndir, err := syscall.FullPath(dir)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif len(ndir) > 2 && isSlash(ndir[0]) && isSlash(ndir[1]) {\n\t\t// dir cannot have \\\\server\\share\\path form\n\t\treturn \"\", syscall.EINVAL\n\t}\n\treturn ndir, nil\n}\n\nfunc volToUpper(ch int) int {\n\tif 'a' <= ch && ch <= 'z' {\n\t\tch += 'A' - 'a'\n\t}\n\treturn ch\n}\n\nfunc joinExeDirAndFName(dir, p string) (name string, err error) {\n\tif len(p) == 0 {\n\t\treturn \"\", syscall.EINVAL\n\t}\n\tif len(p) > 2 && isSlash(p[0]) && isSlash(p[1]) {\n\t\t// \\\\server\\share\\path form\n\t\treturn p, nil\n\t}\n\tif len(p) > 1 && p[1] == ':' {\n\t\t// has drive letter\n\t\tif len(p) == 2 {\n\t\t\treturn \"\", syscall.EINVAL\n\t\t}\n\t\tif isSlash(p[2]) {\n\t\t\treturn p, nil\n\t\t} else {\n\t\t\td, err := normalizeDir(dir)\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif volToUpper(int(p[0])) == volToUpper(int(d[0])) {\n\t\t\t\treturn syscall.FullPath(d + \"\\\\\" + p[2:])\n\t\t\t} else {\n\t\t\t\treturn syscall.FullPath(p)\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// no drive letter\n\t\td, err := normalizeDir(dir)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\tif isSlash(p[0]) {\n\t\t\treturn windows.FullPath(d[:2] + p)\n\t\t} else {\n\t\t\treturn windows.FullPath(d + \"\\\\\" + p)\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/pty/doc.go",
    "content": "// Package pty provides functions for working with Unix terminals.\npackage pty\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"time\"\n)\n\n// ErrUnsupported is returned if a function is not\n// available on the current platform.\nvar ErrUnsupported = errors.New(\"unsupported\")\n\n// Open a pty and its corresponding tty.\nfunc Open() (Pty, Tty, error) {\n\treturn open()\n}\n\n// FdHolder surfaces the Fd() method of the underlying handle.\ntype FdHolder interface {\n\tFd() uintptr\n}\n\n// DeadlineHolder surfaces the SetDeadline() method to sets the read and write deadlines.\ntype DeadlineHolder interface {\n\tSetDeadline(t time.Time) error\n}\n\n// Pty for terminal control in current process.\n//\n//   - For Unix systems, the real type is *os.File.\n//   - For Windows, the real type is a *WindowsPty for ConPTY handle.\ntype Pty interface {\n\t// FdHolder is intended to resize / control ioctls of the TTY of the child process in current process.\n\tFdHolder\n\n\tName() string\n\n\t// WriteString is only used to identify Pty and Tty.\n\tWriteString(s string) (n int, err error)\n\n\tio.ReadWriteCloser\n}\n\n// Tty for data I/O in child process.\n//\n//   - For Unix systems, the real type is *os.File.\n//   - For Windows, the real type is a *WindowsTty, which is a combination of two pipe file.\ntype Tty interface {\n\t// FdHolder Fd only intended for manual InheritSize from Pty.\n\tFdHolder\n\n\tName() string\n\n\tio.ReadWriteCloser\n}\n"
  },
  {
    "path": "gossh/pty/ioctl.go",
    "content": "//go:build !windows && go1.12\n// +build !windows,go1.12\n\npackage pty\n\nimport \"os\"\n\nfunc ioctl(f *os.File, cmd, ptr uintptr) error {\n\tsc, e := f.SyscallConn()\n\tif e != nil {\n\t\treturn ioctlInner(f.Fd(), cmd, ptr) // Fall back to blocking io (old behavior).\n\t}\n\n\tch := make(chan error, 1)\n\tdefer close(ch)\n\n\te = sc.Control(func(fd uintptr) { ch <- ioctlInner(fd, cmd, ptr) })\n\tif e != nil {\n\t\treturn e\n\t}\n\te = <-ch\n\treturn e\n}\n"
  },
  {
    "path": "gossh/pty/ioctl_bsd.go",
    "content": "//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n// +build darwin dragonfly freebsd netbsd openbsd\n\npackage pty\n\n// from <sys/ioccom.h>\nconst (\n\t_IOC_VOID    uintptr = 0x20000000\n\t_IOC_OUT     uintptr = 0x40000000\n\t_IOC_IN      uintptr = 0x80000000\n\t_IOC_IN_OUT  uintptr = _IOC_OUT | _IOC_IN\n\t_IOC_DIRMASK         = _IOC_VOID | _IOC_OUT | _IOC_IN\n\n\t_IOC_PARAM_SHIFT = 13\n\t_IOC_PARAM_MASK  = (1 << _IOC_PARAM_SHIFT) - 1\n)\n\nfunc _IOC_PARM_LEN(ioctl uintptr) uintptr {\n\treturn (ioctl >> 16) & _IOC_PARAM_MASK\n}\n\nfunc _IOC(inout uintptr, group byte, ioctl_num uintptr, param_len uintptr) uintptr {\n\treturn inout | (param_len&_IOC_PARAM_MASK)<<16 | uintptr(group)<<8 | ioctl_num\n}\n\nfunc _IO(group byte, ioctl_num uintptr) uintptr {\n\treturn _IOC(_IOC_VOID, group, ioctl_num, 0)\n}\n\nfunc _IOR(group byte, ioctl_num uintptr, param_len uintptr) uintptr {\n\treturn _IOC(_IOC_OUT, group, ioctl_num, param_len)\n}\n\nfunc _IOW(group byte, ioctl_num uintptr, param_len uintptr) uintptr {\n\treturn _IOC(_IOC_IN, group, ioctl_num, param_len)\n}\n\nfunc _IOWR(group byte, ioctl_num uintptr, param_len uintptr) uintptr {\n\treturn _IOC(_IOC_IN_OUT, group, ioctl_num, param_len)\n}\n"
  },
  {
    "path": "gossh/pty/ioctl_inner.go",
    "content": "//go:build !windows && !solaris && !aix\n// +build !windows,!solaris,!aix\n\npackage pty\n\nimport \"syscall\"\n\n// Local syscall const values.\nconst (\n\tTIOCGWINSZ = syscall.TIOCGWINSZ\n\tTIOCSWINSZ = syscall.TIOCSWINSZ\n)\n\nfunc ioctlInner(fd, cmd, ptr uintptr) error {\n\t_, _, e := syscall.Syscall(syscall.SYS_IOCTL, fd, cmd, ptr)\n\tif e != 0 {\n\t\treturn e\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/pty/ioctl_legacy.go",
    "content": "//go:build !windows && !go1.12\n// +build !windows,!go1.12\n\npackage pty\n\nimport \"os\"\n\nfunc ioctl(f *os.File, cmd, ptr uintptr) error {\n\treturn ioctlInner(f.Fd(), cmd, ptr) // fall back to blocking io (old behavior)\n}\n"
  },
  {
    "path": "gossh/pty/ioctl_solaris.go",
    "content": "//go:build solaris\n// +build solaris\n\npackage pty\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:linkname procioctl libc_ioctl\nvar procioctl uintptr\n\nconst (\n\t// see /usr/include/sys/stropts.h\n\tI_PUSH = uintptr((int32('S')<<8 | 002))\n\tI_STR  = uintptr((int32('S')<<8 | 010))\n\tI_FIND = uintptr((int32('S')<<8 | 013))\n\n\t// see /usr/include/sys/ptms.h\n\tISPTM   = (int32('P') << 8) | 1\n\tUNLKPT  = (int32('P') << 8) | 2\n\tPTSSTTY = (int32('P') << 8) | 3\n\tZONEPT  = (int32('P') << 8) | 4\n\tOWNERPT = (int32('P') << 8) | 5\n\n\t// see /usr/include/sys/termios.h\n\tTIOCSWINSZ = (uint32('T') << 8) | 103\n\tTIOCGWINSZ = (uint32('T') << 8) | 104\n)\n\ntype strioctl struct {\n\ticCmd     int32\n\ticTimeout int32\n\ticLen     int32\n\ticDP      unsafe.Pointer\n}\n\n// Defined in asm_solaris_amd64.s.\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc ioctlInner(fd, cmd, ptr uintptr) error {\n\tif _, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, fd, cmd, ptr, 0, 0, 0); errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/pty/ioctl_unsupported.go",
    "content": "//go:build aix\n// +build aix\n\npackage pty\n\nconst (\n\tTIOCGWINSZ = 0\n\tTIOCSWINSZ = 0\n)\n\nfunc ioctlInner(fd, cmd, ptr uintptr) error {\n\treturn ErrUnsupported\n}\n"
  },
  {
    "path": "gossh/pty/pty_darwin.go",
    "content": "//go:build darwin\n// +build darwin\n\npackage pty\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc open() (pty, tty *os.File, err error) {\n\tpFD, err := syscall.Open(\"/dev/ptmx\", syscall.O_RDWR|syscall.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tp := os.NewFile(uintptr(pFD), \"/dev/ptmx\")\n\t// In case of error after this point, make sure we close the ptmx fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := grantpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := unlockpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tt, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn p, t, nil\n}\n\nfunc ptsname(f *os.File) (string, error) {\n\tn := make([]byte, _IOC_PARM_LEN(syscall.TIOCPTYGNAME))\n\n\terr := ioctl(f, syscall.TIOCPTYGNAME, uintptr(unsafe.Pointer(&n[0])))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor i, c := range n {\n\t\tif c == 0 {\n\t\t\treturn string(n[:i]), nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"TIOCPTYGNAME string not NUL-terminated\")\n}\n\nfunc grantpt(f *os.File) error {\n\treturn ioctl(f, syscall.TIOCPTYGRANT, 0)\n}\n\nfunc unlockpt(f *os.File) error {\n\treturn ioctl(f, syscall.TIOCPTYUNLK, 0)\n}\n"
  },
  {
    "path": "gossh/pty/pty_dragonfly.go",
    "content": "//go:build dragonfly\n// +build dragonfly\n\npackage pty\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// same code as pty_darwin.go\nfunc open() (pty, tty *os.File, err error) {\n\tp, err := os.OpenFile(\"/dev/ptmx\", os.O_RDWR, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\t// In case of error after this point, make sure we close the ptmx fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := grantpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := unlockpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tt, err := os.OpenFile(sname, os.O_RDWR, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn p, t, nil\n}\n\nfunc grantpt(f *os.File) error {\n\t_, err := isptmaster(f)\n\treturn err\n}\n\nfunc unlockpt(f *os.File) error {\n\t_, err := isptmaster(f)\n\treturn err\n}\n\nfunc isptmaster(f *os.File) (bool, error) {\n\terr := ioctl(f, syscall.TIOCISPTMASTER, 0)\n\treturn err == nil, err\n}\n\nvar (\n\temptyFiodgnameArg fiodgnameArg\n\tioctl_FIODNAME    = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg))\n)\n\nfunc ptsname(f *os.File) (string, error) {\n\tname := make([]byte, _C_SPECNAMELEN)\n\tfa := fiodgnameArg{Name: (*byte)(unsafe.Pointer(&name[0])), Len: _C_SPECNAMELEN, Pad_cgo_0: [4]byte{0, 0, 0, 0}}\n\n\terr := ioctl(f, ioctl_FIODNAME, uintptr(unsafe.Pointer(&fa)))\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor i, c := range name {\n\t\tif c == 0 {\n\t\t\ts := \"/dev/\" + string(name[:i])\n\t\t\treturn strings.Replace(s, \"ptm\", \"pts\", -1), nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"TIOCPTYGNAME string not NUL-terminated\")\n}\n"
  },
  {
    "path": "gossh/pty/pty_freebsd.go",
    "content": "//go:build freebsd\n// +build freebsd\n\npackage pty\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc posixOpenpt(oflag int) (fd int, err error) {\n\tr0, _, e1 := syscall.Syscall(syscall.SYS_POSIX_OPENPT, uintptr(oflag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn fd, err\n}\n\nfunc open() (pty, tty *os.File, err error) {\n\tfd, err := posixOpenpt(syscall.O_RDWR | syscall.O_CLOEXEC)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tp := os.NewFile(uintptr(fd), \"/dev/pts\")\n\t// In case of error after this point, make sure we close the pts fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tt, err := os.OpenFile(\"/dev/\"+sname, os.O_RDWR, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn p, t, nil\n}\n\nfunc isptmaster(f *os.File) (bool, error) {\n\terr := ioctl(f, syscall.TIOCPTMASTER, 0)\n\treturn err == nil, err\n}\n\nvar (\n\temptyFiodgnameArg fiodgnameArg\n\tioctlFIODGNAME    = _IOW('f', 120, unsafe.Sizeof(emptyFiodgnameArg))\n)\n\nfunc ptsname(f *os.File) (string, error) {\n\tmaster, err := isptmaster(f)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tif !master {\n\t\treturn \"\", syscall.EINVAL\n\t}\n\n\tconst n = _C_SPECNAMELEN + 1\n\tvar (\n\t\tbuf = make([]byte, n)\n\t\targ = fiodgnameArg{Len: n, Buf: (*byte)(unsafe.Pointer(&buf[0]))}\n\t)\n\tif err := ioctl(f, ioctlFIODGNAME, uintptr(unsafe.Pointer(&arg))); err != nil {\n\t\treturn \"\", err\n\t}\n\n\tfor i, c := range buf {\n\t\tif c == 0 {\n\t\t\treturn string(buf[:i]), nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"FIODGNAME string not NUL-terminated\")\n}\n"
  },
  {
    "path": "gossh/pty/pty_linux.go",
    "content": "//go:build linux\n// +build linux\n\npackage pty\n\nimport (\n\t\"os\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc open() (pty, tty *os.File, err error) {\n\tp, err := os.OpenFile(\"/dev/ptmx\", os.O_RDWR, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\t// In case of error after this point, make sure we close the ptmx fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := unlockpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tt, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0) //nolint:gosec // Expected Open from a variable.\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn p, t, nil\n}\n\nfunc ptsname(f *os.File) (string, error) {\n\tvar n _C_uint\n\terr := ioctl(f, syscall.TIOCGPTN, uintptr(unsafe.Pointer(&n))) //nolint:gosec // Expected unsafe pointer for Syscall call.\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn \"/dev/pts/\" + strconv.Itoa(int(n)), nil\n}\n\nfunc unlockpt(f *os.File) error {\n\tvar u _C_int\n\t// use TIOCSPTLCK with a pointer to zero to clear the lock.\n\treturn ioctl(f, syscall.TIOCSPTLCK, uintptr(unsafe.Pointer(&u))) //nolint:gosec // Expected unsafe pointer for Syscall call.\n}\n"
  },
  {
    "path": "gossh/pty/pty_netbsd.go",
    "content": "//go:build netbsd\n// +build netbsd\n\npackage pty\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc open() (pty, tty *os.File, err error) {\n\tp, err := os.OpenFile(\"/dev/ptmx\", os.O_RDWR, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\t// In case of error after this point, make sure we close the ptmx fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := grantpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\t// In NetBSD unlockpt() does nothing, so it isn't called here.\n\n\tt, err := os.OpenFile(sname, os.O_RDWR|syscall.O_NOCTTY, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\treturn p, t, nil\n}\n\nfunc ptsname(f *os.File) (string, error) {\n\t/*\n\t * from ptsname(3): The ptsname() function is equivalent to:\n\t * struct ptmget pm;\n\t * ioctl(fd, TIOCPTSNAME, &pm) == -1 ? NULL : pm.sn;\n\t */\n\tvar ptm ptmget\n\tif err := ioctl(f, uintptr(ioctl_TIOCPTSNAME), uintptr(unsafe.Pointer(&ptm))); err != nil {\n\t\treturn \"\", err\n\t}\n\tname := make([]byte, len(ptm.Sn))\n\tfor i, c := range ptm.Sn {\n\t\tname[i] = byte(c)\n\t\tif c == 0 {\n\t\t\treturn string(name[:i]), nil\n\t\t}\n\t}\n\treturn \"\", errors.New(\"TIOCPTSNAME string not NUL-terminated\")\n}\n\nfunc grantpt(f *os.File) error {\n\t/*\n\t * from grantpt(3): Calling grantpt() is equivalent to:\n\t * ioctl(fd, TIOCGRANTPT, 0);\n\t */\n\treturn ioctl(f, uintptr(ioctl_TIOCGRANTPT), 0)\n}\n"
  },
  {
    "path": "gossh/pty/pty_openbsd.go",
    "content": "//go:build openbsd\n// +build openbsd\n\npackage pty\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc cInt8ToString(in []int8) string {\n\tvar s []byte\n\tfor _, v := range in {\n\t\tif v == 0 {\n\t\t\tbreak\n\t\t}\n\t\ts = append(s, byte(v))\n\t}\n\treturn string(s)\n}\n\nfunc open() (pty, tty *os.File, err error) {\n\t/*\n\t * from ptm(4):\n\t * The PTMGET command allocates a free pseudo terminal, changes its\n\t * ownership to the caller, revokes the access privileges for all previous\n\t * users, opens the file descriptors for the pty and tty devices and\n\t * returns them to the caller in struct ptmget.\n\t */\n\n\tp, err := os.OpenFile(\"/dev/ptm\", os.O_RDWR|syscall.O_CLOEXEC, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tdefer p.Close()\n\n\tvar ptm ptmget\n\tif err := ioctl(p, uintptr(ioctl_PTMGET), uintptr(unsafe.Pointer(&ptm))); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tpty = os.NewFile(uintptr(ptm.Cfd), cInt8ToString(ptm.Cn[:]))\n\ttty = os.NewFile(uintptr(ptm.Sfd), cInt8ToString(ptm.Sn[:]))\n\n\treturn pty, tty, nil\n}\n"
  },
  {
    "path": "gossh/pty/pty_solaris.go",
    "content": "//go:build solaris\n// +build solaris\n\npackage pty\n\n/* based on:\nhttp://src.illumos.org/source/xref/illumos-gate/usr/src/lib/libc/port/gen/pt.c\n*/\n\nimport (\n\t\"errors\"\n\t\"os\"\n\t\"strconv\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc open() (pty, tty *os.File, err error) {\n\tptmxfd, err := syscall.Open(\"/dev/ptmx\", syscall.O_RDWR|syscall.O_NOCTTY, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tp := os.NewFile(uintptr(ptmxfd), \"/dev/ptmx\")\n\t// In case of error after this point, make sure we close the ptmx fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = p.Close() // Best effort.\n\t\t}\n\t}()\n\n\tsname, err := ptsname(p)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := grantpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif err := unlockpt(p); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tptsfd, err := syscall.Open(sname, os.O_RDWR|syscall.O_NOCTTY, 0)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tt := os.NewFile(uintptr(ptsfd), sname)\n\n\t// In case of error after this point, make sure we close the pts fd.\n\tdefer func() {\n\t\tif err != nil {\n\t\t\t_ = t.Close() // Best effort.\n\t\t}\n\t}()\n\n\t// pushing terminal driver STREAMS modules as per pts(7)\n\tfor _, mod := range []string{\"ptem\", \"ldterm\", \"ttcompat\"} {\n\t\tif err := streamsPush(t, mod); err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\treturn p, t, nil\n}\n\nfunc ptsname(f *os.File) (string, error) {\n\tdev, err := ptsdev(f)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tfn := \"/dev/pts/\" + strconv.FormatInt(int64(dev), 10)\n\n\tif err := syscall.Access(fn, 0); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn fn, nil\n}\n\nfunc unlockpt(f *os.File) error {\n\tistr := strioctl{\n\t\ticCmd:     UNLKPT,\n\t\ticTimeout: 0,\n\t\ticLen:     0,\n\t\ticDP:      nil,\n\t}\n\treturn ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr)))\n}\n\nfunc minor(x uint64) uint64 { return x & 0377 }\n\nfunc ptsdev(f *os.File) (uint64, error) {\n\tistr := strioctl{\n\t\ticCmd:     ISPTM,\n\t\ticTimeout: 0,\n\t\ticLen:     0,\n\t\ticDP:      nil,\n\t}\n\n\tif err := ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr))); err != nil {\n\t\treturn 0, err\n\t}\n\tvar errors = make(chan error, 1)\n\tvar results = make(chan uint64, 1)\n\tdefer close(errors)\n\tdefer close(results)\n\n\tvar err error\n\tvar sc syscall.RawConn\n\tsc, err = f.SyscallConn()\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\terr = sc.Control(func(fd uintptr) {\n\t\tvar status syscall.Stat_t\n\t\tif err := syscall.Fstat(int(fd), &status); err != nil {\n\t\t\tresults <- 0\n\t\t\terrors <- err\n\t\t}\n\t\tresults <- uint64(minor(status.Rdev))\n\t\terrors <- nil\n\t})\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn <-results, <-errors\n}\n\ntype ptOwn struct {\n\trUID int32\n\trGID int32\n}\n\nfunc grantpt(f *os.File) error {\n\tif _, err := ptsdev(f); err != nil {\n\t\treturn err\n\t}\n\tpto := ptOwn{\n\t\trUID: int32(os.Getuid()),\n\t\t// XXX should first attempt to get gid of DEFAULT_TTY_GROUP=\"tty\"\n\t\trGID: int32(os.Getgid()),\n\t}\n\tistr := strioctl{\n\t\ticCmd:     OWNERPT,\n\t\ticTimeout: 0,\n\t\ticLen:     int32(unsafe.Sizeof(strioctl{})),\n\t\ticDP:      unsafe.Pointer(&pto),\n\t}\n\tif err := ioctl(f, I_STR, uintptr(unsafe.Pointer(&istr))); err != nil {\n\t\treturn errors.New(\"access denied\")\n\t}\n\treturn nil\n}\n\n// streamsPush pushes STREAMS modules if not already done so.\nfunc streamsPush(f *os.File, mod string) error {\n\tbuf := []byte(mod)\n\n\t// XXX I_FIND is not returning an error when the module\n\t// is already pushed even though truss reports a return\n\t// value of 1. A bug in the Go Solaris syscall interface?\n\t// XXX without this we are at risk of the issue\n\t// https://www.illumos.org/issues/9042\n\t// but since we are not using libc or XPG4.2, we should not be\n\t// double-pushing modules\n\n\tif err := ioctl(f, I_FIND, uintptr(unsafe.Pointer(&buf[0]))); err != nil {\n\t\treturn nil\n\t}\n\treturn ioctl(f, I_PUSH, uintptr(unsafe.Pointer(&buf[0])))\n}\n"
  },
  {
    "path": "gossh/pty/pty_unsupported.go",
    "content": "//go:build !linux && !darwin && !freebsd && !dragonfly && !netbsd && !openbsd && !solaris && !windows\n// +build !linux,!darwin,!freebsd,!dragonfly,!netbsd,!openbsd,!solaris,!windows\n\npackage pty\n\nimport (\n\t\"os\"\n)\n\nfunc open() (pty, tty *os.File, err error) {\n\treturn nil, nil, ErrUnsupported\n}\n"
  },
  {
    "path": "gossh/pty/pty_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage pty\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\nconst (\n\t// Ref: https://pkg.go.dev/golang.org/x/sys/windows#pkg-constants\n\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE = 0x20016\n)\n\ntype WindowsPty struct {\n\thandle windows.Handle\n\tr, w   *os.File\n}\n\ntype WindowsTty struct {\n\thandle windows.Handle\n\tr, w   *os.File\n}\n\nvar (\n\t// NOTE(security): As noted by the comment of syscall.NewLazyDLL and syscall.LoadDLL\n\t//                 user need to call internal/syscall/windows/sysdll.Add(\"kernel32.dll\") to make sure\n\t//                 the kernel32.dll is loaded from windows system path.\n\t//\n\t// Ref: https://pkg.go.dev/syscall@go1.13?GOOS=windows#LoadDLL\n\tkernel32DLL = windows.NewLazySystemDLL(\"kernel32.dll\")\n\n\t// https://docs.microsoft.com/en-us/windows/console/createpseudoconsole\n\tcreatePseudoConsole = kernel32DLL.NewProc(\"CreatePseudoConsole\")\n\tclosePseudoConsole  = kernel32DLL.NewProc(\"ClosePseudoConsole\")\n\n\tresizePseudoConsole        = kernel32DLL.NewProc(\"ResizePseudoConsole\")\n\tgetConsoleScreenBufferInfo = kernel32DLL.NewProc(\"GetConsoleScreenBufferInfo\")\n)\n\nfunc open() (_ Pty, _ Tty, err error) {\n\tpr, consoleW, err := os.Pipe()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tconsoleR, pw, err := os.Pipe()\n\tif err != nil {\n\t\t// Closing everything. Best effort.\n\t\t_ = consoleW.Close()\n\t\t_ = pr.Close()\n\t\treturn nil, nil, err\n\t}\n\n\tvar consoleHandle windows.Handle\n\n\t// TODO: As we removed the use of `.Fd()` on Unix (https://github.com/creack/pty/pull/168), we need to check if we should do the same here.\n\tif err := procCreatePseudoConsole(\n\t\twindows.Handle(consoleR.Fd()),\n\t\twindows.Handle(consoleW.Fd()),\n\t\t0,\n\t\t&consoleHandle); err != nil {\n\t\t// Closing everything. Best effort.\n\t\t_ = consoleW.Close()\n\t\t_ = pr.Close()\n\t\t_ = pw.Close()\n\t\t_ = consoleR.Close()\n\t\treturn nil, nil, err\n\t}\n\n\treturn &WindowsPty{\n\t\t\thandle: consoleHandle,\n\t\t\tr:      pr,\n\t\t\tw:      pw,\n\t\t}, &WindowsTty{\n\t\t\thandle: consoleHandle,\n\t\t\tr:      consoleR,\n\t\t\tw:      consoleW,\n\t\t}, nil\n}\n\nfunc (p *WindowsPty) Name() string {\n\treturn p.r.Name()\n}\n\nfunc (p *WindowsPty) Fd() uintptr {\n\treturn uintptr(p.handle)\n}\n\nfunc (p *WindowsPty) Read(data []byte) (int, error) {\n\treturn p.r.Read(data)\n}\n\nfunc (p *WindowsPty) Write(data []byte) (int, error) {\n\treturn p.w.Write(data)\n}\n\nfunc (p *WindowsPty) WriteString(s string) (int, error) {\n\treturn p.w.WriteString(s)\n}\n\nfunc (p *WindowsPty) UpdateProcThreadAttribute(attrList *windows.ProcThreadAttributeListContainer) error {\n\tif err := attrList.Update(\n\t\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE,\n\t\tunsafe.Pointer(p.handle),\n\t\tunsafe.Sizeof(p.handle),\n\t); err != nil {\n\t\treturn fmt.Errorf(\"failed to update proc thread attributes for pseudo console: %w\", err)\n\t}\n\n\treturn nil\n}\n\nfunc (p *WindowsPty) Close() error {\n\t// Best effort.\n\t_ = p.r.Close()\n\t_ = p.w.Close()\n\n\tif err := closePseudoConsole.Find(); err != nil {\n\t\treturn err\n\t}\n\n\t_, _, err := closePseudoConsole.Call(uintptr(p.handle))\n\treturn err\n}\n\nfunc (p *WindowsPty) SetDeadline(value time.Time) error {\n\treturn os.ErrNoDeadline\n}\n\nfunc (t *WindowsTty) Name() string {\n\treturn t.r.Name()\n}\n\nfunc (t *WindowsTty) Fd() uintptr {\n\treturn uintptr(t.handle)\n}\n\nfunc (t *WindowsTty) Read(p []byte) (int, error) {\n\treturn t.r.Read(p)\n}\n\nfunc (t *WindowsTty) Write(p []byte) (int, error) {\n\treturn t.w.Write(p)\n}\n\nfunc (t *WindowsTty) Close() error {\n\t_ = t.r.Close() // Best effort.\n\treturn t.w.Close()\n}\n\nfunc (t *WindowsTty) SetDeadline(value time.Time) error {\n\treturn os.ErrNoDeadline\n}\n\nfunc procCreatePseudoConsole(hInput windows.Handle, hOutput windows.Handle, dwFlags uint32, consoleHandle *windows.Handle) error {\n\tif err := createPseudoConsole.Find(); err != nil {\n\t\treturn err\n\t}\n\n\t// TODO: Check if it is expected to ignore `err` here.\n\tr0, _, _ := createPseudoConsole.Call(\n\t\t(windowsCoord{X: 80, Y: 30}).Pack(),    // Size: default 80x30 window.\n\t\tuintptr(hInput),                        // Console input.\n\t\tuintptr(hOutput),                       // Console output.\n\t\tuintptr(dwFlags),                       // Console flags, currently only PSEUDOCONSOLE_INHERIT_CURSOR supported.\n\t\tuintptr(unsafe.Pointer(consoleHandle)), // Console handler value return.\n\t)\n\n\tif int32(r0) < 0 {\n\t\tif r0&0x1fff0000 == 0x00070000 {\n\t\t\tr0 &= 0xffff\n\t\t}\n\n\t\t// S_OK: 0\n\t\treturn syscall.Errno(r0)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/pty/run.go",
    "content": "package pty\n\nimport (\n\t\"os/exec\"\n)\n\n// Start assigns a pseudo-terminal tty os.File to c.Stdin, c.Stdout,\n// and c.Stderr, calls c.Start, and returns the File of the tty's\n// corresponding pty.\n//\n// Starts the process in a new session and sets the controlling terminal.\nfunc Start(cmd *exec.Cmd) (Pty, error) {\n\treturn StartWithSize(cmd, nil)\n}\n"
  },
  {
    "path": "gossh/pty/run_unix.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage pty\n\nimport (\n\t\"os/exec\"\n\t\"syscall\"\n)\n\n// StartWithSize assigns a pseudo-terminal Tty to c.Stdin, c.Stdout,\n// and c.Stderr, calls c.Start, and returns the File of the tty's\n// corresponding Pty.\n//\n// This will resize the Pty to the specified size before starting the command.\n// Starts the process in a new session and sets the controlling terminal.\nfunc StartWithSize(c *exec.Cmd, sz *Winsize) (Pty, error) {\n\tif c.SysProcAttr == nil {\n\t\tc.SysProcAttr = &syscall.SysProcAttr{}\n\t}\n\tc.SysProcAttr.Setsid = true\n\tc.SysProcAttr.Setctty = true\n\treturn StartWithAttrs(c, sz, c.SysProcAttr)\n}\n\n// StartWithAttrs assigns a pseudo-terminal Tty to c.Stdin, c.Stdout,\n// and c.Stderr, calls c.Start, and returns the File of the tty's\n// corresponding Pty.\n//\n// This will resize the Pty to the specified size before starting the command if a size is provided.\n// The `attrs` parameter overrides the one set in c.SysProcAttr.\n//\n// This should generally not be needed. Used in some edge cases where it is needed to create a pty\n// without a controlling terminal.\nfunc StartWithAttrs(c *exec.Cmd, sz *Winsize, attrs *syscall.SysProcAttr) (Pty, error) {\n\tpty, tty, err := open()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer func() {\n\t\t// always close tty fds since it's being used in another process\n\t\t// but pty is kept to resize tty\n\t\t_ = tty.Close()\n\t}()\n\n\tif sz != nil {\n\t\tif err := Setsize(pty, sz); err != nil {\n\t\t\t_ = pty.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif c.Stdout == nil {\n\t\tc.Stdout = tty\n\t}\n\tif c.Stderr == nil {\n\t\tc.Stderr = tty\n\t}\n\tif c.Stdin == nil {\n\t\tc.Stdin = tty\n\t}\n\n\tc.SysProcAttr = attrs\n\n\tif err := c.Start(); err != nil {\n\t\t_ = pty.Close()\n\t\treturn nil, err\n\t}\n\treturn pty, err\n}\n"
  },
  {
    "path": "gossh/pty/run_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage pty\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\n// StartWithSize assigns a pseudo-terminal Tty to c.Stdin, c.Stdout,\n// and c.Stderr, calls c.Start, and returns the File of the tty's\n// corresponding Pty.\n//\n// This will resize the Pty to the specified size before starting the command.\n// Starts the process in a new session and sets the controlling terminal.\nfunc StartWithSize(c *exec.Cmd, sz *Winsize) (Pty, error) {\n\treturn StartWithAttrs(c, sz, c.SysProcAttr)\n}\n\n// StartWithAttrs assigns a pseudo-terminal Tty to c.Stdin, c.Stdout,\n// and c.Stderr, calls c.Start, and returns the File of the tty's\n// corresponding Pty.\n//\n// This will resize the Pty to the specified size before starting the command if a size is provided.\n// The `attrs` parameter overrides the one set in c.SysProcAttr.\n//\n// This should generally not be needed. Used in some edge cases where it is needed to create a pty\n// without a controlling terminal.\nfunc StartWithAttrs(c *exec.Cmd, sz *Winsize, attrs *syscall.SysProcAttr) (Pty, error) {\n\tpty, tty, err := open()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer func() {\n\t\t// Unlike unix command exec, do not close tty unless error happened.\n\t\tif err != nil {\n\t\t\t_ = pty.Close() // Best effort.\n\t\t}\n\t}()\n\n\tif sz != nil {\n\t\tif err := Setsize(pty, sz); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Unlike unix command exec, do not set stdin/stdout/stderr.\n\n\tc.SysProcAttr = attrs\n\n\t// Do not use os/exec.Start since we need to append console handler to startup info.\n\n\tw := windowExecCmd{\n\t\tcmd:        c,\n\t\twaitCalled: false,\n\t\tconPty:     pty.(*WindowsPty),\n\t\tconTty:     tty.(*WindowsTty),\n\t}\n\n\tif err := w.Start(); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn pty, err\n}\n\n// Start the specified command but does not wait for it to complete.\n//\n// If Start returns successfully, the c.Process field will be set.\n//\n// The Wait method will return the exit code and release associated resources\n// once the command exits.\nfunc (c *windowExecCmd) Start() error {\n\tif c.cmd.Process != nil {\n\t\treturn errors.New(\"exec: already started\")\n\t}\n\n\targv0 := c.cmd.Path\n\tvar argv0p *uint16\n\tvar argvp *uint16\n\tvar dirp *uint16\n\tvar err error\n\n\tsys := c.cmd.SysProcAttr\n\tif sys == nil {\n\t\tsys = &syscall.SysProcAttr{}\n\t}\n\n\tif c.cmd.Env == nil {\n\t\tc.cmd.Env, err = execEnvDefault(sys)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tvar lp string\n\n\tlp, err = lookExtensions(c.cmd.Path, c.cmd.Dir)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tc.cmd.Path = lp\n\n\tif len(c.cmd.Dir) != 0 {\n\t\t// Windows CreateProcess looks for argv0 relative to the current\n\t\t// directory, and, only once the new process is started, it does\n\t\t// Chdir(attr.Dir). We are adjusting for that difference here by\n\t\t// making argv0 absolute.\n\n\t\targv0, err = joinExeDirAndFName(c.cmd.Dir, c.cmd.Path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\targv0p, err = syscall.UTF16PtrFromString(argv0)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar cmdline string\n\n\t// Windows CreateProcess takes the command line as a single string:\n\t// use attr.CmdLine if set, else build the command line by escaping\n\t// and joining each argument with spaces.\n\tif sys.CmdLine != \"\" {\n\t\tcmdline = sys.CmdLine\n\t} else {\n\t\tcmdline = makeCmdLine(c.argv())\n\t}\n\n\tif len(cmdline) != 0 {\n\t\targvp, err = windows.UTF16PtrFromString(cmdline)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tif len(c.cmd.Dir) != 0 {\n\t\tdirp, err = windows.UTF16PtrFromString(c.cmd.Dir)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Acquire the fork lock so that no other threads\n\t// create new fds that are not yet close-on-exec\n\t// before we fork.\n\tsyscall.ForkLock.Lock()\n\tdefer syscall.ForkLock.Unlock()\n\n\tsiEx := new(windows.StartupInfoEx)\n\tsiEx.Flags = windows.STARTF_USESTDHANDLES\n\n\tif sys.HideWindow {\n\t\tsiEx.Flags |= syscall.STARTF_USESHOWWINDOW\n\t\tsiEx.ShowWindow = syscall.SW_HIDE\n\t}\n\n\tpi := new(windows.ProcessInformation)\n\n\t// Need EXTENDED_STARTUPINFO_PRESENT as we're making use of the attribute list field.\n\tflags := sys.CreationFlags | uint32(windows.CREATE_UNICODE_ENVIRONMENT) | windows.EXTENDED_STARTUPINFO_PRESENT\n\n\tc.attrList, err = windows.NewProcThreadAttributeList(1)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to initialize process thread attribute list: %w\", err)\n\t}\n\n\tif c.conPty != nil {\n\t\tif err = c.conPty.UpdateProcThreadAttribute(c.attrList); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tsiEx.ProcThreadAttributeList = c.attrList.List()\n\tsiEx.Cb = uint32(unsafe.Sizeof(*siEx))\n\n\tif sys.Token != 0 {\n\t\terr = windows.CreateProcessAsUser(\n\t\t\twindows.Token(sys.Token),\n\t\t\targv0p,\n\t\t\targvp,\n\t\t\tnil,\n\t\t\tnil,\n\t\t\tfalse,\n\t\t\tflags,\n\t\t\tcreateEnvBlock(addCriticalEnv(dedupEnvCase(true, c.cmd.Env))),\n\t\t\tdirp,\n\t\t\t&siEx.StartupInfo,\n\t\t\tpi,\n\t\t)\n\t} else {\n\t\terr = windows.CreateProcess(\n\t\t\targv0p,\n\t\t\targvp,\n\t\t\tnil,\n\t\t\tnil,\n\t\t\tfalse,\n\t\t\tflags,\n\t\t\tcreateEnvBlock(addCriticalEnv(dedupEnvCase(true, c.cmd.Env))),\n\t\t\tdirp,\n\t\t\t&siEx.StartupInfo,\n\t\t\tpi,\n\t\t)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tdefer func() {\n\t\t_ = windows.CloseHandle(pi.Thread)\n\t}()\n\n\tc.cmd.Process, err = os.FindProcess(int(pi.ProcessId))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tgo c.waitProcess(c.cmd.Process)\n\n\treturn nil\n}\n\nfunc (c *windowExecCmd) waitProcess(process *os.Process) {\n\t_, _ = process.Wait()\n\t_ = c.close()\n}\n"
  },
  {
    "path": "gossh/pty/types.go",
    "content": "//go:build ignore\n// +build ignore\n\npackage pty\n\nimport \"C\"\n\ntype (\n\t_C_int  C.int\n\t_C_uint C.uint\n)\n"
  },
  {
    "path": "gossh/pty/types_dragonfly.go",
    "content": "//go:build ignore\n// +build ignore\n\npackage pty\n\n/*\n#define _KERNEL\n#include <sys/conf.h>\n#include <sys/param.h>\n#include <sys/filio.h>\n*/\nimport \"C\"\n\nconst (\n\t_C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */\n)\n\ntype fiodgnameArg C.struct_fiodname_args\n"
  },
  {
    "path": "gossh/pty/types_freebsd.go",
    "content": "//go:build ignore\n// +build ignore\n\npackage pty\n\n/*\n#include <sys/param.h>\n#include <sys/filio.h>\n*/\nimport \"C\"\n\nconst (\n\t_C_SPECNAMELEN = C.SPECNAMELEN /* max length of devicename */\n)\n\ntype fiodgnameArg C.struct_fiodgname_arg\n"
  },
  {
    "path": "gossh/pty/types_netbsd.go",
    "content": "//go:build ignore\n// +build ignore\n\npackage pty\n\n/*\n#include <sys/time.h>\n#include <stdlib.h>\n#include <sys/tty.h>\n*/\nimport \"C\"\n\ntype ptmget C.struct_ptmget\n\nvar (\n\tioctl_TIOCPTSNAME = C.TIOCPTSNAME\n\tioctl_TIOCGRANTPT = C.TIOCGRANTPT\n)\n"
  },
  {
    "path": "gossh/pty/types_openbsd.go",
    "content": "//go:build ignore\n// +build ignore\n\npackage pty\n\n/*\n#include <sys/time.h>\n#include <stdlib.h>\n#include <sys/tty.h>\n*/\nimport \"C\"\n\ntype ptmget C.struct_ptmget\n\nvar ioctl_PTMGET = C.PTMGET\n"
  },
  {
    "path": "gossh/pty/winsize.go",
    "content": "package pty\n\n// Winsize describes the terminal size.\ntype Winsize struct {\n\tRows uint16 // ws_row: Number of rows (in cells).\n\tCols uint16 // ws_col: Number of columns (in cells).\n\tX    uint16 // ws_xpixel: Width in pixels.\n\tY    uint16 // ws_ypixel: Height in pixels.\n}\n\n// InheritSize applies the terminal size of pty to tty. This should be run\n// in a signal handler for syscall.SIGWINCH to automatically resize the tty when\n// the pty receives a window size change notification.\nfunc InheritSize(pty Pty, tty Tty) error {\n\tsize, err := GetsizeFull(pty)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn Setsize(tty, size)\n}\n\n// Getsize returns the number of rows (lines) and cols (positions\n// in each line) in terminal t.\nfunc Getsize(t FdHolder) (rows, cols int, err error) {\n\tws, err := GetsizeFull(t)\n\treturn int(ws.Rows), int(ws.Cols), err\n}\n"
  },
  {
    "path": "gossh/pty/winsize_unix.go",
    "content": "//go:build !windows\n// +build !windows\n\npackage pty\n\nimport (\n\t\"os\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Setsize resizes t to s.\nfunc Setsize(t FdHolder, ws *Winsize) error {\n\t//nolint:gosec // Expected unsafe pointer for Syscall call.\n\treturn ioctl(t.(*os.File), syscall.TIOCSWINSZ, uintptr(unsafe.Pointer(ws)))\n}\n\n// GetsizeFull returns the full terminal size description.\nfunc GetsizeFull(t FdHolder) (size *Winsize, err error) {\n\tvar ws Winsize\n\n\t//nolint:gosec // Expected unsafe pointer for Syscall call.\n\tif err := ioctl(t.(*os.File), syscall.TIOCGWINSZ, uintptr(unsafe.Pointer(&ws))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ws, nil\n}\n"
  },
  {
    "path": "gossh/pty/winsize_windows.go",
    "content": "//go:build windows\n// +build windows\n\npackage pty\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Types from golang.org/x/sys/windows.\n\n// Ref: https://pkg.go.dev/golang.org/x/sys/windows#Coord\ntype windowsCoord struct {\n\tX int16\n\tY int16\n}\n\n// Ref: https://pkg.go.dev/golang.org/x/sys/windows#SmallRect\ntype windowsSmallRect struct {\n\tLeft   int16\n\tTop    int16\n\tRight  int16\n\tBottom int16\n}\n\n// Ref: https://pkg.go.dev/golang.org/x/sys/windows#ConsoleScreenBufferInfo\ntype windowsConsoleScreenBufferInfo struct {\n\tSize              windowsCoord\n\tCursorPosition    windowsCoord\n\tAttributes        uint16\n\tWindow            windowsSmallRect\n\tMaximumWindowSize windowsCoord\n}\n\nfunc (c windowsCoord) Pack() uintptr {\n\treturn uintptr((int32(c.Y) << 16) | int32(c.X))\n}\n\n// Setsize resizes t to ws.\nfunc Setsize(t FdHolder, ws *Winsize) error {\n\tif err := resizePseudoConsole.Find(); err != nil {\n\t\treturn err\n\t}\n\n\t// TODO: As we removed the use of `.Fd()` on Unix (https://github.com/creack/pty/pull/168), we need to check if we should do the same here.\n\t// TODO: Check if it is expected to ignore `err` here.\n\tr0, _, _ := resizePseudoConsole.Call(\n\t\tt.Fd(),\n\t\t(windowsCoord{X: int16(ws.Cols), Y: int16(ws.Rows)}).Pack(),\n\t)\n\tif int32(r0) < 0 {\n\t\tif r0&0x1fff0000 == 0x00070000 {\n\t\t\tr0 &= 0xffff\n\t\t}\n\n\t\t// S_OK: 0\n\t\treturn syscall.Errno(r0)\n\t}\n\n\treturn nil\n}\n\n// GetsizeFull returns the full terminal size description.\nfunc GetsizeFull(t FdHolder) (size *Winsize, err error) {\n\tif err := getConsoleScreenBufferInfo.Find(); err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar info windowsConsoleScreenBufferInfo\n\t// TODO: Check if it is expected to ignore `err` here.\n\tr0, _, _ := getConsoleScreenBufferInfo.Call(t.Fd(), uintptr(unsafe.Pointer(&info)))\n\tif int32(r0) < 0 {\n\t\tif r0&0x1fff0000 == 0x00070000 {\n\t\t\tr0 &= 0xffff\n\t\t}\n\n\t\t// S_OK: 0\n\t\treturn nil, syscall.Errno(r0)\n\t}\n\n\treturn &Winsize{\n\t\tRows: uint16(info.Window.Bottom - info.Window.Top + 1),\n\t\tCols: uint16(info.Window.Right - info.Window.Left + 1),\n\t}, nil\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_386.go",
    "content": "//go:build 386\n// +build 386\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_amd64.go",
    "content": "//go:build amd64\n// +build amd64\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_arm.go",
    "content": "//go:build arm\n// +build arm\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_arm64.go",
    "content": "//go:build arm64\n// +build arm64\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_dragonfly_amd64.go",
    "content": "//go:build amd64 && dragonfly\n// +build amd64,dragonfly\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_dragonfly.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tName      *byte\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_386.go",
    "content": "//go:build 386 && freebsd\n// +build 386,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tLen int32\n\tBuf *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_amd64.go",
    "content": "//go:build amd64 && freebsd\n// +build amd64,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tLen       int32\n\tPad_cgo_0 [4]byte\n\tBuf       *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_arm.go",
    "content": "//go:build arm && freebsd\n// +build arm,freebsd\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tLen int32\n\tBuf *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_arm64.go",
    "content": "//go:build arm64 && freebsd\n// +build arm64,freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0xff\n)\n\ntype fiodgnameArg struct {\n\tLen int32\n\tBuf *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_ppc64.go",
    "content": "// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tLen       int32\n\tPad_cgo_0 [4]byte\n\tBuf       *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_freebsd_riscv64.go",
    "content": "// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types_freebsd.go\n\npackage pty\n\nconst (\n\t_C_SPECNAMELEN = 0x3f\n)\n\ntype fiodgnameArg struct {\n\tLen int32\n\tBuf *byte\n}\n"
  },
  {
    "path": "gossh/pty/ztypes_loong64.go",
    "content": "//go:build loong64\n// +build loong64\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_mipsx.go",
    "content": "//go:build (mips || mipsle || mips64 || mips64le) && linux\n// +build mips mipsle mips64 mips64le\n// +build linux\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_netbsd_32bit_int.go",
    "content": "//go:build (386 || amd64 || arm || arm64) && netbsd\n// +build 386 amd64 arm arm64\n// +build netbsd\n\npackage pty\n\ntype ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]int8\n\tSn  [1024]int8\n}\n\nvar (\n\tioctl_TIOCPTSNAME = 0x48087448\n\tioctl_TIOCGRANTPT = 0x20007447\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_openbsd_32bit_int.go",
    "content": "//go:build (386 || amd64 || arm || arm64 || mips64) && openbsd\n// +build 386 amd64 arm arm64 mips64\n// +build openbsd\n\npackage pty\n\ntype ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [16]int8\n\tSn  [16]int8\n}\n\nvar ioctl_PTMGET = 0x40287401\n"
  },
  {
    "path": "gossh/pty/ztypes_ppc.go",
    "content": "// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_ppc64.go",
    "content": "//go:build ppc64\n// +build ppc64\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_ppc64le.go",
    "content": "//go:build ppc64le\n// +build ppc64le\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_riscvx.go",
    "content": "//go:build riscv || riscv64\n// +build riscv riscv64\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_s390x.go",
    "content": "//go:build s390x\n// +build s390x\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/pty/ztypes_sparcx.go",
    "content": "//go:build sparc || sparc64\n// +build sparc sparc64\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs types.go\n\npackage pty\n\ntype (\n\t_C_int  int32\n\t_C_uint uint32\n)\n"
  },
  {
    "path": "gossh/readme.md",
    "content": "\r\n###\r\n```bash\r\ngofmt -w -r 'interface{} -> any' .\r\n```\r\n\r\n### MySQL init\r\n```bash\r\nyum -y install mysql-server\r\n\r\nsystemctl restart mysqld.service\r\n\r\ncat >> /etc/my.cnf << \"EOF\"\r\n##=========================================================================\r\n[mysqld]\r\nbind-address=0.0.0.0\r\nskip-name-resolve\r\n##=========================================================================\r\nEOF\r\n\r\nmysql -u root --skip-password\r\n```\r\n\r\n\r\n```mysql\r\n\r\nALTER USER 'root'@'localhost' IDENTIFIED BY 'mypwd';\r\n\r\nCREATE USER 'root'@'%' identified by 'mypwd';\r\n\r\nGRANT ALL ON *.* TO 'root'@'%';\r\n\r\nALTER USER `root`@`%` PASSWORD EXPIRE NEVER;\r\n\r\nGRANT Grant Option ON *.* TO `root`@`%`;\r\n\r\nflush privileges;\r\n```\r\n\r\n### PgSQL init\r\n```bash\r\nyum -y install postgresql-server\r\npostgresql-setup --initdb\r\n\r\ncat >> /var/lib/pgsql/data/pg_hba.conf << \"EOF\"\r\n##=========================================================================\r\nhost    all             all             0.0.0.0/0            scram-sha-256\r\n##=========================================================================\r\nEOF\r\n\r\nsed -i \"s/^#*listen_addresses = .*$/listen_addresses = '*'/\" /var/lib/pgsql/data/postgresql.conf\r\n\r\nsystemctl restart postgresql.service\r\n\r\nsu - postgres \r\n\r\npsql\r\n\r\npostgres=# \\password \r\n\r\n```\r\n\r\nSqlite init\r\n```shell\r\ngo get github.com/glebarez/sqlite\r\n\r\ngo get github.com/glebarez/go-sqlite\r\ngo get modernc.org/sqlite/lib\r\n\r\n```nginx\r\n        location ^~ /myapp/webssh/ {\r\n            proxy_pass http://127.0.0.1:8899;\r\n            proxy_pass_header Server;\r\n            proxy_http_version 1.1; \r\n            proxy_redirect off;\r\n\r\n            #proxy_set_header Host $http_host;\r\n            proxy_set_header Host $host;\r\n            proxy_set_header X-Real-IP $remote_addr;\r\n            proxy_set_header X-Scheme $scheme;\r\n            proxy_set_header Upgrade $http_upgrade;\r\n            proxy_set_header Connection \"upgrade\";\r\n            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\r\n\r\n            proxy_connect_timeout 60s;\r\n            proxy_read_timeout 120s;\r\n            proxy_send_timeout 120s;\r\n            client_body_timeout 60s;\r\n        }\r\n\r\n```\r\n"
  },
  {
    "path": "gossh/sftp/allocator.go",
    "content": "package sftp\n\nimport (\n\t\"sync\"\n)\n\ntype allocator struct {\n\tsync.Mutex\n\tavailable [][]byte\n\t// map key is the request order\n\tused map[uint32][][]byte\n}\n\nfunc newAllocator() *allocator {\n\treturn &allocator{\n\t\t// micro optimization: initialize available pages with an initial capacity\n\t\tavailable: make([][]byte, 0, SftpServerWorkerCount*2),\n\t\tused:      make(map[uint32][][]byte),\n\t}\n}\n\n// GetPage returns a previously allocated and unused []byte or create a new one.\n// The slice have a fixed size = maxMsgLength, this value is suitable for both\n// receiving new packets and reading the files to serve\nfunc (a *allocator) GetPage(requestOrderID uint32) []byte {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\tvar result []byte\n\n\t// get an available page and remove it from the available ones.\n\tif len(a.available) > 0 {\n\t\ttruncLength := len(a.available) - 1\n\t\tresult = a.available[truncLength]\n\n\t\ta.available[truncLength] = nil          // clear out the internal pointer\n\t\ta.available = a.available[:truncLength] // truncate the slice\n\t}\n\n\t// no preallocated slice found, just allocate a new one\n\tif result == nil {\n\t\tresult = make([]byte, maxMsgLength)\n\t}\n\n\t// put result in used pages\n\ta.used[requestOrderID] = append(a.used[requestOrderID], result)\n\n\treturn result\n}\n\n// ReleasePages marks unused all pages in use for the given requestID\nfunc (a *allocator) ReleasePages(requestOrderID uint32) {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\tif used := a.used[requestOrderID]; len(used) > 0 {\n\t\ta.available = append(a.available, used...)\n\t}\n\tdelete(a.used, requestOrderID)\n}\n\n// Free removes all the used and available pages.\n// Call this method when the allocator is not needed anymore\nfunc (a *allocator) Free() {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\ta.available = nil\n\ta.used = make(map[uint32][][]byte)\n}\n\nfunc (a *allocator) countUsedPages() int {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\tnum := 0\n\tfor _, p := range a.used {\n\t\tnum += len(p)\n\t}\n\treturn num\n}\n\nfunc (a *allocator) countAvailablePages() int {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\treturn len(a.available)\n}\n\nfunc (a *allocator) isRequestOrderIDUsed(requestOrderID uint32) bool {\n\ta.Lock()\n\tdefer a.Unlock()\n\n\t_, ok := a.used[requestOrderID]\n\treturn ok\n}\n"
  },
  {
    "path": "gossh/sftp/attrs.go",
    "content": "package sftp\n\n// ssh_FXP_ATTRS support\n// see https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5\n\nimport (\n\t\"os\"\n\t\"time\"\n)\n\nconst (\n\tsshFileXferAttrSize        = 0x00000001\n\tsshFileXferAttrUIDGID      = 0x00000002\n\tsshFileXferAttrPermissions = 0x00000004\n\tsshFileXferAttrACmodTime   = 0x00000008\n\tsshFileXferAttrExtended    = 0x80000000\n\n\tsshFileXferAttrAll = sshFileXferAttrSize | sshFileXferAttrUIDGID | sshFileXferAttrPermissions |\n\t\tsshFileXferAttrACmodTime | sshFileXferAttrExtended\n)\n\n// fileInfo is an artificial type designed to satisfy os.FileInfo.\ntype fileInfo struct {\n\tname string\n\tstat *FileStat\n}\n\n// Name returns the base name of the file.\nfunc (fi *fileInfo) Name() string { return fi.name }\n\n// Size returns the length in bytes for regular files; system-dependent for others.\nfunc (fi *fileInfo) Size() int64 { return int64(fi.stat.Size) }\n\n// Mode returns file mode bits.\nfunc (fi *fileInfo) Mode() os.FileMode { return fi.stat.FileMode() }\n\n// ModTime returns the last modification time of the file.\nfunc (fi *fileInfo) ModTime() time.Time { return fi.stat.ModTime() }\n\n// IsDir returns true if the file is a directory.\nfunc (fi *fileInfo) IsDir() bool { return fi.Mode().IsDir() }\n\nfunc (fi *fileInfo) Sys() any { return fi.stat }\n\n// FileStat holds the original unmarshalled values from a call to READDIR or\n// *STAT. It is exported for the purposes of accessing the raw values via\n// os.FileInfo.Sys(). It is also used server side to store the unmarshalled\n// values for SetStat.\ntype FileStat struct {\n\tSize     uint64\n\tMode     uint32\n\tMtime    uint32\n\tAtime    uint32\n\tUID      uint32\n\tGID      uint32\n\tExtended []StatExtended\n}\n\n// ModTime returns the Mtime SFTP file attribute converted to a time.Time\nfunc (fs *FileStat) ModTime() time.Time {\n\treturn time.Unix(int64(fs.Mtime), 0)\n}\n\n// AccessTime returns the Atime SFTP file attribute converted to a time.Time\nfunc (fs *FileStat) AccessTime() time.Time {\n\treturn time.Unix(int64(fs.Atime), 0)\n}\n\n// FileMode returns the Mode SFTP file attribute converted to an os.FileMode\nfunc (fs *FileStat) FileMode() os.FileMode {\n\treturn toFileMode(fs.Mode)\n}\n\n// StatExtended contains additional, extended information for a FileStat.\ntype StatExtended struct {\n\tExtType string\n\tExtData string\n}\n\nfunc fileInfoFromStat(stat *FileStat, name string) os.FileInfo {\n\treturn &fileInfo{\n\t\tname: name,\n\t\tstat: stat,\n\t}\n}\n\n// FileInfoUidGid extends os.FileInfo and adds callbacks for Uid and Gid retrieval,\n// as an alternative to *syscall.Stat_t objects on unix systems.\ntype FileInfoUidGid interface {\n\tos.FileInfo\n\tUid() uint32\n\tGid() uint32\n}\n\n// FileInfoUidGid extends os.FileInfo and adds a callbacks for extended data retrieval.\ntype FileInfoExtendedData interface {\n\tos.FileInfo\n\tExtended() []StatExtended\n}\n\nfunc fileStatFromInfo(fi os.FileInfo) (uint32, *FileStat) {\n\tmtime := fi.ModTime().Unix()\n\tatime := mtime\n\tvar flags uint32 = sshFileXferAttrSize |\n\t\tsshFileXferAttrPermissions |\n\t\tsshFileXferAttrACmodTime\n\n\tfileStat := &FileStat{\n\t\tSize:  uint64(fi.Size()),\n\t\tMode:  fromFileMode(fi.Mode()),\n\t\tMtime: uint32(mtime),\n\t\tAtime: uint32(atime),\n\t}\n\n\t// os specific file stat decoding\n\tfileStatFromInfoOs(fi, &flags, fileStat)\n\n\t// The call above will include the sshFileXferAttrUIDGID in case\n\t// the os.FileInfo can be casted to *syscall.Stat_t on unix.\n\t// If fi implements FileInfoUidGid, retrieve Uid, Gid from it instead.\n\tif fiExt, ok := fi.(FileInfoUidGid); ok {\n\t\tflags |= sshFileXferAttrUIDGID\n\t\tfileStat.UID = fiExt.Uid()\n\t\tfileStat.GID = fiExt.Gid()\n\t}\n\n\t// if fi implements FileInfoExtendedData, retrieve extended data from it\n\tif fiExt, ok := fi.(FileInfoExtendedData); ok {\n\t\tfileStat.Extended = fiExt.Extended()\n\t\tif len(fileStat.Extended) > 0 {\n\t\t\tflags |= sshFileXferAttrExtended\n\t\t}\n\t}\n\n\treturn flags, fileStat\n}\n"
  },
  {
    "path": "gossh/sftp/attrs_stubs.go",
    "content": "//go:build plan9 || windows || android\n// +build plan9 windows android\n\npackage sftp\n\nimport (\n\t\"os\"\n)\n\nfunc fileStatFromInfoOs(fi os.FileInfo, flags *uint32, fileStat *FileStat) {\n\t// todo\n}\n"
  },
  {
    "path": "gossh/sftp/attrs_unix.go",
    "content": "//go:build darwin || dragonfly || freebsd || (!android && linux) || netbsd || openbsd || solaris || aix || js || zos\n// +build darwin dragonfly freebsd !android,linux netbsd openbsd solaris aix js zos\n\npackage sftp\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nfunc fileStatFromInfoOs(fi os.FileInfo, flags *uint32, fileStat *FileStat) {\n\tif statt, ok := fi.Sys().(*syscall.Stat_t); ok {\n\t\t*flags |= sshFileXferAttrUIDGID\n\t\tfileStat.UID = statt.Uid\n\t\tfileStat.GID = statt.Gid\n\t}\n}\n"
  },
  {
    "path": "gossh/sftp/client.go",
    "content": "package sftp\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"os\"\n\t\"path\"\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"time\"\n\n\t\"gossh/crypto/ssh\"\n\t\"gossh/sftp/internal/sftpfs\"\n)\n\nvar (\n\t// ErrInternalInconsistency indicates the packets sent and the data queued to be\n\t// written to the file don't match up. It is an unusual error and usually is\n\t// caused by bad behavior server side or connection issues. The error is\n\t// limited in scope to the call where it happened, the client object is still\n\t// OK to use as long as the connection is still open.\n\tErrInternalInconsistency = errors.New(\"internal inconsistency\")\n\t// InternalInconsistency alias for ErrInternalInconsistency.\n\t//\n\t// Deprecated: please use ErrInternalInconsistency\n\tInternalInconsistency = ErrInternalInconsistency\n)\n\n// A ClientOption is a function which applies configuration to a Client.\ntype ClientOption func(*Client) error\n\n// MaxPacketChecked sets the maximum size of the payload, measured in bytes.\n// This option only accepts sizes servers should support, ie. <= 32768 bytes.\n//\n// If you get the error \"failed to send packet header: EOF\" when copying a\n// large file, try lowering this number.\n//\n// The default packet size is 32768 bytes.\nfunc MaxPacketChecked(size int) ClientOption {\n\treturn func(c *Client) error {\n\t\tif size < 1 {\n\t\t\treturn errors.New(\"size must be greater or equal to 1\")\n\t\t}\n\t\tif size > 32768 {\n\t\t\treturn errors.New(\"sizes larger than 32KB might not work with all servers\")\n\t\t}\n\t\tc.maxPacket = size\n\t\treturn nil\n\t}\n}\n\n// MaxPacketUnchecked sets the maximum size of the payload, measured in bytes.\n// It accepts sizes larger than the 32768 bytes all servers should support.\n// Only use a setting higher than 32768 if your application always connects to\n// the same server or after sufficiently broad testing.\n//\n// If you get the error \"failed to send packet header: EOF\" when copying a\n// large file, try lowering this number.\n//\n// The default packet size is 32768 bytes.\nfunc MaxPacketUnchecked(size int) ClientOption {\n\treturn func(c *Client) error {\n\t\tif size < 1 {\n\t\t\treturn errors.New(\"size must be greater or equal to 1\")\n\t\t}\n\t\tc.maxPacket = size\n\t\treturn nil\n\t}\n}\n\n// MaxPacket sets the maximum size of the payload, measured in bytes.\n// This option only accepts sizes servers should support, ie. <= 32768 bytes.\n// This is a synonym for MaxPacketChecked that provides backward compatibility.\n//\n// If you get the error \"failed to send packet header: EOF\" when copying a\n// large file, try lowering this number.\n//\n// The default packet size is 32768 bytes.\nfunc MaxPacket(size int) ClientOption {\n\treturn MaxPacketChecked(size)\n}\n\n// MaxConcurrentRequestsPerFile sets the maximum concurrent requests allowed for a single file.\n//\n// The default maximum concurrent requests is 64.\nfunc MaxConcurrentRequestsPerFile(n int) ClientOption {\n\treturn func(c *Client) error {\n\t\tif n < 1 {\n\t\t\treturn errors.New(\"n must be greater or equal to 1\")\n\t\t}\n\t\tc.maxConcurrentRequests = n\n\t\treturn nil\n\t}\n}\n\n// UseConcurrentWrites allows the Client to perform concurrent Writes.\n//\n// Using concurrency while doing writes, requires special consideration.\n// A write to a later offset in a file after an error,\n// could end up with a file length longer than what was successfully written.\n//\n// When using this option, if you receive an error during `io.Copy` or `io.WriteTo`,\n// you may need to `Truncate` the target Writer to avoid “holes” in the data written.\nfunc UseConcurrentWrites(value bool) ClientOption {\n\treturn func(c *Client) error {\n\t\tc.useConcurrentWrites = value\n\t\treturn nil\n\t}\n}\n\n// UseConcurrentReads allows the Client to perform concurrent Reads.\n//\n// Concurrent reads are generally safe to use and not using them will degrade\n// performance, so this option is enabled by default.\n//\n// When enabled, WriteTo will use Stat/Fstat to get the file size and determines\n// how many concurrent workers to use.\n// Some \"read once\" servers will delete the file if they receive a stat call on an\n// open file and then the download will fail.\n// Disabling concurrent reads you will be able to download files from these servers.\n// If concurrent reads are disabled, the UseFstat option is ignored.\nfunc UseConcurrentReads(value bool) ClientOption {\n\treturn func(c *Client) error {\n\t\tc.disableConcurrentReads = !value\n\t\treturn nil\n\t}\n}\n\n// UseFstat sets whether to use Fstat or Stat when File.WriteTo is called\n// (usually when copying files).\n// Some servers limit the amount of open files and calling Stat after opening\n// the file will throw an error From the server. Setting this flag will call\n// Fstat instead of Stat which is suppose to be called on an open file handle.\n//\n// It has been found that that with IBM Sterling SFTP servers which have\n// \"extractability\" level set to 1 which means only 1 file can be opened at\n// any given time.\n//\n// If the server you are working with still has an issue with both Stat and\n// Fstat calls you can always open a file and read it until the end.\n//\n// Another reason to read the file until its end and Fstat doesn't work is\n// that in some servers, reading a full file will automatically delete the\n// file as some of these mainframes map the file to a message in a queue.\n// Once the file has been read it will get deleted.\nfunc UseFstat(value bool) ClientOption {\n\treturn func(c *Client) error {\n\t\tc.useFstat = value\n\t\treturn nil\n\t}\n}\n\n// Client represents an SFTP session on a *ssh.ClientConn SSH connection.\n// Multiple Clients can be active on a single SSH connection, and a Client\n// may be called concurrently from multiple Goroutines.\n//\n// Client implements the github.com/kr/sftpfs.FileSystem interface.\ntype Client struct {\n\tclientConn\n\n\text map[string]string // Extensions (name -> data).\n\n\tmaxPacket             int // max packet size read or written.\n\tmaxConcurrentRequests int\n\tnextid                uint32\n\n\t// write concurrency is… error prone.\n\t// Default behavior should be to not use it.\n\tuseConcurrentWrites    bool\n\tuseFstat               bool\n\tdisableConcurrentReads bool\n}\n\n// NewClient creates a new SFTP client on conn, using zero or more option\n// functions.\nfunc NewClient(conn *ssh.Client, opts ...ClientOption) (*Client, error) {\n\ts, err := conn.NewSession()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif err := s.RequestSubsystem(\"sftp\"); err != nil {\n\t\treturn nil, err\n\t}\n\tpw, err := s.StdinPipe()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tpr, err := s.StdoutPipe()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn NewClientPipe(pr, pw, opts...)\n}\n\n// NewClientPipe creates a new SFTP client given a Reader and a WriteCloser.\n// This can be used for connecting to an SFTP server over TCP/TLS or by using\n// the system's ssh client program (e.g. via exec.Command).\nfunc NewClientPipe(rd io.Reader, wr io.WriteCloser, opts ...ClientOption) (*Client, error) {\n\tsftp := &Client{\n\t\tclientConn: clientConn{\n\t\t\tconn: conn{\n\t\t\t\tReader:      rd,\n\t\t\t\tWriteCloser: wr,\n\t\t\t},\n\t\t\tinflight: make(map[uint32]chan<- result),\n\t\t\tclosed:   make(chan struct{}),\n\t\t},\n\n\t\text: make(map[string]string),\n\n\t\tmaxPacket:             1 << 15,\n\t\tmaxConcurrentRequests: 64,\n\t}\n\n\tfor _, opt := range opts {\n\t\tif err := opt(sftp); err != nil {\n\t\t\twr.Close()\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif err := sftp.sendInit(); err != nil {\n\t\twr.Close()\n\t\treturn nil, fmt.Errorf(\"error sending init packet to server: %w\", err)\n\t}\n\n\tif err := sftp.recvVersion(); err != nil {\n\t\twr.Close()\n\t\treturn nil, fmt.Errorf(\"error receiving version packet from server: %w\", err)\n\t}\n\n\tsftp.clientConn.wg.Add(1)\n\tgo func() {\n\t\tdefer sftp.clientConn.wg.Done()\n\n\t\tif err := sftp.clientConn.recv(); err != nil {\n\t\t\tsftp.clientConn.broadcastErr(err)\n\t\t}\n\t}()\n\n\treturn sftp, nil\n}\n\n// Create creates the named file mode 0666 (before umask), truncating it if it\n// already exists. If successful, methods on the returned File can be used for\n// I/O; the associated file descriptor has mode O_RDWR. If you need more\n// control over the flags/mode used to open the file see client.OpenFile.\n//\n// Note that some SFTP servers (eg. AWS Transfer) do not support opening files\n// read/write at the same time. For those services you will need to use\n// `client.OpenFile(os.O_WRONLY|os.O_CREATE|os.O_TRUNC)`.\nfunc (c *Client) Create(path string) (*File, error) {\n\treturn c.open(path, toPflags(os.O_RDWR|os.O_CREATE|os.O_TRUNC))\n}\n\nconst sftpProtocolVersion = 3 // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt\n\nfunc (c *Client) sendInit() error {\n\treturn c.clientConn.conn.sendPacket(&sshFxInitPacket{\n\t\tVersion: sftpProtocolVersion, // https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt\n\t})\n}\n\n// returns the next value of c.nextid\nfunc (c *Client) nextID() uint32 {\n\treturn atomic.AddUint32(&c.nextid, 1)\n}\n\nfunc (c *Client) recvVersion() error {\n\ttyp, data, err := c.recvPacket(0)\n\tif err != nil {\n\t\tif err == io.EOF {\n\t\t\treturn fmt.Errorf(\"server unexpectedly closed connection: %w\", io.ErrUnexpectedEOF)\n\t\t}\n\n\t\treturn err\n\t}\n\n\tif typ != sshFxpVersion {\n\t\treturn &unexpectedPacketErr{sshFxpVersion, typ}\n\t}\n\n\tversion, data, err := unmarshalUint32Safe(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif version != sftpProtocolVersion {\n\t\treturn &unexpectedVersionErr{sftpProtocolVersion, version}\n\t}\n\n\tfor len(data) > 0 {\n\t\tvar ext extensionPair\n\t\text, data, err = unmarshalExtensionPair(data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tc.ext[ext.Name] = ext.Data\n\t}\n\n\treturn nil\n}\n\n// HasExtension checks whether the server supports a named extension.\n//\n// The first return value is the extension data reported by the server\n// (typically a version number).\nfunc (c *Client) HasExtension(name string) (string, bool) {\n\tdata, ok := c.ext[name]\n\treturn data, ok\n}\n\n// Walk returns a new Walker rooted at root.\nfunc (c *Client) Walk(root string) *sftpfs.Walker {\n\treturn sftpfs.WalkFS(root, c)\n}\n\n// ReadDir reads the directory named by p\n// and returns a list of directory entries.\nfunc (c *Client) ReadDir(p string) ([]os.FileInfo, error) {\n\treturn c.ReadDirContext(context.Background(), p)\n}\n\n// ReadDirContext reads the directory named by p\n// and returns a list of directory entries.\n// The passed context can be used to cancel the operation\n// returning all entries listed up to the cancellation.\nfunc (c *Client) ReadDirContext(ctx context.Context, p string) ([]os.FileInfo, error) {\n\thandle, err := c.opendir(ctx, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer c.close(handle) // this has to defer earlier than the lock below\n\tvar entries []os.FileInfo\n\tvar done = false\n\tfor !done {\n\t\tid := c.nextID()\n\t\ttyp, data, err1 := c.sendPacket(ctx, nil, &sshFxpReaddirPacket{\n\t\t\tID:     id,\n\t\t\tHandle: handle,\n\t\t})\n\t\tif err1 != nil {\n\t\t\terr = err1\n\t\t\tdone = true\n\t\t\tbreak\n\t\t}\n\t\tswitch typ {\n\t\tcase sshFxpName:\n\t\t\tsid, data := unmarshalUint32(data)\n\t\t\tif sid != id {\n\t\t\t\treturn nil, &unexpectedIDErr{id, sid}\n\t\t\t}\n\t\t\tcount, data := unmarshalUint32(data)\n\t\t\tfor i := uint32(0); i < count; i++ {\n\t\t\t\tvar filename string\n\t\t\t\tfilename, data = unmarshalString(data)\n\t\t\t\t_, data = unmarshalString(data) // discard longname\n\t\t\t\tvar attr *FileStat\n\t\t\t\tattr, data, err = unmarshalAttrs(data)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, err\n\t\t\t\t}\n\t\t\t\tif filename == \".\" || filename == \"..\" {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tentries = append(entries, fileInfoFromStat(attr, path.Base(filename)))\n\t\t\t}\n\t\tcase sshFxpStatus:\n\t\t\t// TODO(dfc) scope warning!\n\t\t\terr = normaliseError(unmarshalStatus(id, data))\n\t\t\tdone = true\n\t\tdefault:\n\t\t\treturn nil, unimplementedPacketErr(typ)\n\t\t}\n\t}\n\tif err == io.EOF {\n\t\terr = nil\n\t}\n\treturn entries, err\n}\n\nfunc (c *Client) opendir(ctx context.Context, path string) (string, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(ctx, nil, &sshFxpOpendirPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tswitch typ {\n\tcase sshFxpHandle:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn \"\", &unexpectedIDErr{id, sid}\n\t\t}\n\t\thandle, _ := unmarshalString(data)\n\t\treturn handle, nil\n\tcase sshFxpStatus:\n\t\treturn \"\", normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn \"\", unimplementedPacketErr(typ)\n\t}\n}\n\n// Stat returns a FileInfo structure describing the file specified by path 'p'.\n// If 'p' is a symbolic link, the returned FileInfo structure describes the referent file.\nfunc (c *Client) Stat(p string) (os.FileInfo, error) {\n\tfs, err := c.stat(p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn fileInfoFromStat(fs, path.Base(p)), nil\n}\n\n// Lstat returns a FileInfo structure describing the file specified by path 'p'.\n// If 'p' is a symbolic link, the returned FileInfo structure describes the symbolic link.\nfunc (c *Client) Lstat(p string) (os.FileInfo, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpLstatPacket{\n\t\tID:   id,\n\t\tPath: p,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch typ {\n\tcase sshFxpAttrs:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn nil, &unexpectedIDErr{id, sid}\n\t\t}\n\t\tattr, _, err := unmarshalAttrs(data)\n\t\tif err != nil {\n\t\t\t// avoid returning a valid value from fileInfoFromStats if err != nil.\n\t\t\treturn nil, err\n\t\t}\n\t\treturn fileInfoFromStat(attr, path.Base(p)), nil\n\tcase sshFxpStatus:\n\t\treturn nil, normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn nil, unimplementedPacketErr(typ)\n\t}\n}\n\n// ReadLink reads the target of a symbolic link.\nfunc (c *Client) ReadLink(p string) (string, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpReadlinkPacket{\n\t\tID:   id,\n\t\tPath: p,\n\t})\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tswitch typ {\n\tcase sshFxpName:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn \"\", &unexpectedIDErr{id, sid}\n\t\t}\n\t\tcount, data := unmarshalUint32(data)\n\t\tif count != 1 {\n\t\t\treturn \"\", unexpectedCount(1, count)\n\t\t}\n\t\tfilename, _ := unmarshalString(data) // ignore dummy attributes\n\t\treturn filename, nil\n\tcase sshFxpStatus:\n\t\treturn \"\", normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn \"\", unimplementedPacketErr(typ)\n\t}\n}\n\n// Link creates a hard link at 'newname', pointing at the same inode as 'oldname'\nfunc (c *Client) Link(oldname, newname string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpHardlinkPacket{\n\t\tID:      id,\n\t\tOldpath: oldname,\n\t\tNewpath: newname,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// Symlink creates a symbolic link at 'newname', pointing at target 'oldname'\nfunc (c *Client) Symlink(oldname, newname string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpSymlinkPacket{\n\t\tID:         id,\n\t\tLinkpath:   newname,\n\t\tTargetpath: oldname,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\nfunc (c *Client) fsetstat(handle string, flags uint32, attrs any) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpFsetstatPacket{\n\t\tID:     id,\n\t\tHandle: handle,\n\t\tFlags:  flags,\n\t\tAttrs:  attrs,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// setstat is a convience wrapper to allow for changing of various parts of the file descriptor.\nfunc (c *Client) setstat(path string, flags uint32, attrs any) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpSetstatPacket{\n\t\tID:    id,\n\t\tPath:  path,\n\t\tFlags: flags,\n\t\tAttrs: attrs,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// Chtimes changes the access and modification times of the named file.\nfunc (c *Client) Chtimes(path string, atime time.Time, mtime time.Time) error {\n\ttype times struct {\n\t\tAtime uint32\n\t\tMtime uint32\n\t}\n\tattrs := times{uint32(atime.Unix()), uint32(mtime.Unix())}\n\treturn c.setstat(path, sshFileXferAttrACmodTime, attrs)\n}\n\n// Chown changes the user and group owners of the named file.\nfunc (c *Client) Chown(path string, uid, gid int) error {\n\ttype owner struct {\n\t\tUID uint32\n\t\tGID uint32\n\t}\n\tattrs := owner{uint32(uid), uint32(gid)}\n\treturn c.setstat(path, sshFileXferAttrUIDGID, attrs)\n}\n\n// Chmod changes the permissions of the named file.\n//\n// Chmod does not apply a umask, because even retrieving the umask is not\n// possible in a portable way without causing a race condition. Callers\n// should mask off umask bits, if desired.\nfunc (c *Client) Chmod(path string, mode os.FileMode) error {\n\treturn c.setstat(path, sshFileXferAttrPermissions, toChmodPerm(mode))\n}\n\n// Truncate sets the size of the named file. Although it may be safely assumed\n// that if the size is less than its current size it will be truncated to fit,\n// the SFTP protocol does not specify what behavior the server should do when setting\n// size greater than the current size.\nfunc (c *Client) Truncate(path string, size int64) error {\n\treturn c.setstat(path, sshFileXferAttrSize, uint64(size))\n}\n\n// Open opens the named file for reading. If successful, methods on the\n// returned file can be used for reading; the associated file descriptor\n// has mode O_RDONLY.\nfunc (c *Client) Open(path string) (*File, error) {\n\treturn c.open(path, toPflags(os.O_RDONLY))\n}\n\n// OpenFile is the generalized open call; most users will use Open or\n// Create instead. It opens the named file with specified flag (O_RDONLY\n// etc.). If successful, methods on the returned File can be used for I/O.\nfunc (c *Client) OpenFile(path string, f int) (*File, error) {\n\treturn c.open(path, toPflags(f))\n}\n\nfunc (c *Client) open(path string, pflags uint32) (*File, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpOpenPacket{\n\t\tID:     id,\n\t\tPath:   path,\n\t\tPflags: pflags,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch typ {\n\tcase sshFxpHandle:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn nil, &unexpectedIDErr{id, sid}\n\t\t}\n\t\thandle, _ := unmarshalString(data)\n\t\treturn &File{c: c, path: path, handle: handle}, nil\n\tcase sshFxpStatus:\n\t\treturn nil, normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn nil, unimplementedPacketErr(typ)\n\t}\n}\n\n// close closes a handle handle previously returned in the response\n// to SSH_FXP_OPEN or SSH_FXP_OPENDIR. The handle becomes invalid\n// immediately after this request has been sent.\nfunc (c *Client) close(handle string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpClosePacket{\n\t\tID:     id,\n\t\tHandle: handle,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\nfunc (c *Client) stat(path string) (*FileStat, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpStatPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch typ {\n\tcase sshFxpAttrs:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn nil, &unexpectedIDErr{id, sid}\n\t\t}\n\t\tattr, _, err := unmarshalAttrs(data)\n\t\treturn attr, err\n\tcase sshFxpStatus:\n\t\treturn nil, normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn nil, unimplementedPacketErr(typ)\n\t}\n}\n\nfunc (c *Client) fstat(handle string) (*FileStat, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpFstatPacket{\n\t\tID:     id,\n\t\tHandle: handle,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tswitch typ {\n\tcase sshFxpAttrs:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn nil, &unexpectedIDErr{id, sid}\n\t\t}\n\t\tattr, _, err := unmarshalAttrs(data)\n\t\treturn attr, err\n\tcase sshFxpStatus:\n\t\treturn nil, normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn nil, unimplementedPacketErr(typ)\n\t}\n}\n\n// StatVFS retrieves VFS statistics from a remote host.\n//\n// It implements the statvfs@openssh.com SSH_FXP_EXTENDED feature\n// from http://www.opensource.apple.com/source/OpenSSH/OpenSSH-175/openssh/PROTOCOL?txt.\nfunc (c *Client) StatVFS(path string) (*StatVFS, error) {\n\t// send the StatVFS packet to the server\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpStatvfsPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tswitch typ {\n\t// server responded with valid data\n\tcase sshFxpExtendedReply:\n\t\tvar response StatVFS\n\t\terr = binary.Read(bytes.NewReader(data), binary.BigEndian, &response)\n\t\tif err != nil {\n\t\t\treturn nil, errors.New(\"can not parse reply\")\n\t\t}\n\n\t\treturn &response, nil\n\n\t// the resquest failed\n\tcase sshFxpStatus:\n\t\treturn nil, normaliseError(unmarshalStatus(id, data))\n\n\tdefault:\n\t\treturn nil, unimplementedPacketErr(typ)\n\t}\n}\n\n// Join joins any number of path elements into a single path, adding a\n// separating slash if necessary. The result is Cleaned; in particular, all\n// empty strings are ignored.\nfunc (c *Client) Join(elem ...string) string { return path.Join(elem...) }\n\n// Remove removes the specified file or directory. An error will be returned if no\n// file or directory with the specified path exists, or if the specified directory\n// is not empty.\nfunc (c *Client) Remove(path string) error {\n\terr := c.removeFile(path)\n\t// some servers, *cough* osx *cough*, return EPERM, not ENODIR.\n\t// serv-u returns ssh_FX_FILE_IS_A_DIRECTORY\n\t// EPERM is converted to os.ErrPermission so it is not a StatusError\n\tif err, ok := err.(*StatusError); ok {\n\t\tswitch err.Code {\n\t\tcase sshFxFailure, sshFxFileIsADirectory:\n\t\t\treturn c.RemoveDirectory(path)\n\t\t}\n\t}\n\tif os.IsPermission(err) {\n\t\treturn c.RemoveDirectory(path)\n\t}\n\treturn err\n}\n\nfunc (c *Client) removeFile(path string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpRemovePacket{\n\t\tID:       id,\n\t\tFilename: path,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// RemoveDirectory removes a directory path.\nfunc (c *Client) RemoveDirectory(path string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpRmdirPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// Rename renames a file.\nfunc (c *Client) Rename(oldname, newname string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpRenamePacket{\n\t\tID:      id,\n\t\tOldpath: oldname,\n\t\tNewpath: newname,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// PosixRename renames a file using the posix-rename@openssh.com extension\n// which will replace newname if it already exists.\nfunc (c *Client) PosixRename(oldname, newname string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpPosixRenamePacket{\n\t\tID:      id,\n\t\tOldpath: oldname,\n\t\tNewpath: newname,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// RealPath can be used to have the server canonicalize any given path name to an absolute path.\n//\n// This is useful for converting path names containing \"..\" components,\n// or relative pathnames without a leading slash into absolute paths.\nfunc (c *Client) RealPath(path string) (string, error) {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpRealpathPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tswitch typ {\n\tcase sshFxpName:\n\t\tsid, data := unmarshalUint32(data)\n\t\tif sid != id {\n\t\t\treturn \"\", &unexpectedIDErr{id, sid}\n\t\t}\n\t\tcount, data := unmarshalUint32(data)\n\t\tif count != 1 {\n\t\t\treturn \"\", unexpectedCount(1, count)\n\t\t}\n\t\tfilename, _ := unmarshalString(data) // ignore attributes\n\t\treturn filename, nil\n\tcase sshFxpStatus:\n\t\treturn \"\", normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn \"\", unimplementedPacketErr(typ)\n\t}\n}\n\n// Getwd returns the current working directory of the server. Operations\n// involving relative paths will be based at this location.\nfunc (c *Client) Getwd() (string, error) {\n\treturn c.RealPath(\".\")\n}\n\n// Mkdir creates the specified directory. An error will be returned if a file or\n// directory with the specified path already exists, or if the directory's\n// parent folder does not exist (the method cannot create complete paths).\nfunc (c *Client) Mkdir(path string) error {\n\tid := c.nextID()\n\ttyp, data, err := c.sendPacket(context.Background(), nil, &sshFxpMkdirPacket{\n\t\tID:   id,\n\t\tPath: path,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn unimplementedPacketErr(typ)\n\t}\n}\n\n// MkdirAll creates a directory named path, along with any necessary parents,\n// and returns nil, or else returns an error.\n// If path is already a directory, MkdirAll does nothing and returns nil.\n// If path contains a regular file, an error is returned\nfunc (c *Client) MkdirAll(path string) error {\n\t// Most of this code mimics https://golang.org/src/os/path.go?s=514:561#L13\n\t// Fast path: if we can tell whether path is a directory or file, stop with success or error.\n\tdir, err := c.Stat(path)\n\tif err == nil {\n\t\tif dir.IsDir() {\n\t\t\treturn nil\n\t\t}\n\t\treturn &os.PathError{Op: \"mkdir\", Path: path, Err: syscall.ENOTDIR}\n\t}\n\n\t// Slow path: make sure parent exists and then call Mkdir for path.\n\ti := len(path)\n\tfor i > 0 && path[i-1] == '/' { // Skip trailing path separator.\n\t\ti--\n\t}\n\n\tj := i\n\tfor j > 0 && path[j-1] != '/' { // Scan backward over element.\n\t\tj--\n\t}\n\n\tif j > 1 {\n\t\t// Create parent\n\t\terr = c.MkdirAll(path[0 : j-1])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\t// Parent now exists; invoke Mkdir and use its result.\n\terr = c.Mkdir(path)\n\tif err != nil {\n\t\t// Handle arguments like \"foo/.\" by\n\t\t// double-checking that directory doesn't exist.\n\t\tdir, err1 := c.Lstat(path)\n\t\tif err1 == nil && dir.IsDir() {\n\t\t\treturn nil\n\t\t}\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// RemoveAll delete files recursively in the directory and Recursively delete subdirectories.\n// An error will be returned if no file or directory with the specified path exists\nfunc (c *Client) RemoveAll(path string) error {\n\n\t// Get the file/directory information\n\tfi, err := c.Stat(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif fi.IsDir() {\n\t\t// Delete files recursively in the directory\n\t\tfiles, err := c.ReadDir(path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor _, file := range files {\n\t\t\tif file.IsDir() {\n\t\t\t\t// Recursively delete subdirectories\n\t\t\t\terr = c.RemoveAll(path + \"/\" + file.Name())\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Delete individual files\n\t\t\t\terr = c.Remove(path + \"/\" + file.Name())\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}\n\n\treturn c.Remove(path)\n\n}\n\n// File represents a remote file.\ntype File struct {\n\tc    *Client\n\tpath string\n\n\tmu     sync.RWMutex\n\thandle string\n\toffset int64 // current offset within remote file\n}\n\n// Close closes the File, rendering it unusable for I/O. It returns an\n// error, if any.\nfunc (f *File) Close() error {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn os.ErrClosed\n\t}\n\n\t// The design principle here is that when `openssh-portable/sftp-server.c` is doing `handle_close`,\n\t// it will unconditionally mark the handle as unused,\n\t// so we need to also unconditionally mark this handle as invalid.\n\t// By invalidating our local copy of the handle,\n\t// we ensure that there cannot be any erroneous use-after-close requests sent after Close.\n\n\thandle := f.handle\n\tf.handle = \"\"\n\n\treturn f.c.close(handle)\n}\n\n// Name returns the name of the file as presented to Open or Create.\nfunc (f *File) Name() string {\n\treturn f.path\n}\n\n// Read reads up to len(b) bytes from the File. It returns the number of bytes\n// read and an error, if any. Read follows io.Reader semantics, so when Read\n// encounters an error or EOF condition after successfully reading n > 0 bytes,\n// it returns the number of bytes read.\n//\n// To maximise throughput for transferring the entire file (especially\n// over high latency links) it is recommended to use WriteTo rather\n// than calling Read multiple times. io.Copy will do this\n// automatically.\nfunc (f *File) Read(b []byte) (int, error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tn, err := f.readAt(b, f.offset)\n\tf.offset += int64(n)\n\treturn n, err\n}\n\n// readChunkAt attempts to read the whole entire length of the buffer from the file starting at the offset.\n// It will continue progressively reading into the buffer until it fills the whole buffer, or an error occurs.\nfunc (f *File) readChunkAt(ch chan result, b []byte, off int64) (n int, err error) {\n\tfor err == nil && n < len(b) {\n\t\tid := f.c.nextID()\n\t\ttyp, data, err := f.c.sendPacket(context.Background(), ch, &sshFxpReadPacket{\n\t\t\tID:     id,\n\t\t\tHandle: f.handle,\n\t\t\tOffset: uint64(off) + uint64(n),\n\t\t\tLen:    uint32(len(b) - n),\n\t\t})\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\n\t\tswitch typ {\n\t\tcase sshFxpStatus:\n\t\t\treturn n, normaliseError(unmarshalStatus(id, data))\n\n\t\tcase sshFxpData:\n\t\t\tsid, data := unmarshalUint32(data)\n\t\t\tif id != sid {\n\t\t\t\treturn n, &unexpectedIDErr{id, sid}\n\t\t\t}\n\n\t\t\tl, data := unmarshalUint32(data)\n\t\t\tn += copy(b[n:], data[:l])\n\n\t\tdefault:\n\t\t\treturn n, unimplementedPacketErr(typ)\n\t\t}\n\t}\n\n\treturn\n}\n\nfunc (f *File) readAtSequential(b []byte, off int64) (read int, err error) {\n\tfor read < len(b) {\n\t\trb := b[read:]\n\t\tif len(rb) > f.c.maxPacket {\n\t\t\trb = rb[:f.c.maxPacket]\n\t\t}\n\t\tn, err := f.readChunkAt(nil, rb, off+int64(read))\n\t\tif n < 0 {\n\t\t\tpanic(\"sftp.File: returned negative count from readChunkAt\")\n\t\t}\n\t\tif n > 0 {\n\t\t\tread += n\n\t\t}\n\t\tif err != nil {\n\t\t\treturn read, err\n\t\t}\n\t}\n\treturn read, nil\n}\n\n// ReadAt reads up to len(b) byte from the File at a given offset `off`. It returns\n// the number of bytes read and an error, if any. ReadAt follows io.ReaderAt semantics,\n// so the file offset is not altered during the read.\nfunc (f *File) ReadAt(b []byte, off int64) (int, error) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\treturn f.readAt(b, off)\n}\n\n// readAt must be called while holding either the Read or Write mutex in File.\n// This code is concurrent safe with itself, but not with Close.\nfunc (f *File) readAt(b []byte, off int64) (int, error) {\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\tif len(b) <= f.c.maxPacket {\n\t\t// This should be able to be serviced with 1/2 requests.\n\t\t// So, just do it directly.\n\t\treturn f.readChunkAt(nil, b, off)\n\t}\n\n\tif f.c.disableConcurrentReads {\n\t\treturn f.readAtSequential(b, off)\n\t}\n\n\t// Split the read into multiple maxPacket-sized concurrent reads bounded by maxConcurrentRequests.\n\t// This allows writes with a suitably large buffer to transfer data at a much faster rate\n\t// by overlapping round trip times.\n\n\tcancel := make(chan struct{})\n\n\tconcurrency := len(b)/f.c.maxPacket + 1\n\tif concurrency > f.c.maxConcurrentRequests || concurrency < 1 {\n\t\tconcurrency = f.c.maxConcurrentRequests\n\t}\n\n\tresPool := newResChanPool(concurrency)\n\n\ttype work struct {\n\t\tid  uint32\n\t\tres chan result\n\n\t\tb   []byte\n\t\toff int64\n\t}\n\tworkCh := make(chan work)\n\n\t// Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets.\n\tgo func() {\n\t\tdefer close(workCh)\n\n\t\tb := b\n\t\toffset := off\n\t\tchunkSize := f.c.maxPacket\n\n\t\tfor len(b) > 0 {\n\t\t\trb := b\n\t\t\tif len(rb) > chunkSize {\n\t\t\t\trb = rb[:chunkSize]\n\t\t\t}\n\n\t\t\tid := f.c.nextID()\n\t\t\tres := resPool.Get()\n\n\t\t\tf.c.dispatchRequest(res, &sshFxpReadPacket{\n\t\t\t\tID:     id,\n\t\t\t\tHandle: f.handle,\n\t\t\t\tOffset: uint64(offset),\n\t\t\t\tLen:    uint32(chunkSize),\n\t\t\t})\n\n\t\t\tselect {\n\t\t\tcase workCh <- work{id, res, rb, offset}:\n\t\t\tcase <-cancel:\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\toffset += int64(len(rb))\n\t\t\tb = b[len(rb):]\n\t\t}\n\t}()\n\n\ttype rErr struct {\n\t\toff int64\n\t\terr error\n\t}\n\terrCh := make(chan rErr)\n\n\tvar wg sync.WaitGroup\n\twg.Add(concurrency)\n\tfor i := 0; i < concurrency; i++ {\n\t\t// Map_i: each worker gets work, and then performs the Read into its buffer from its respective offset.\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\n\t\t\tfor packet := range workCh {\n\t\t\t\tvar n int\n\n\t\t\t\ts := <-packet.res\n\t\t\t\tresPool.Put(packet.res)\n\n\t\t\t\terr := s.err\n\t\t\t\tif err == nil {\n\t\t\t\t\tswitch s.typ {\n\t\t\t\t\tcase sshFxpStatus:\n\t\t\t\t\t\terr = normaliseError(unmarshalStatus(packet.id, s.data))\n\n\t\t\t\t\tcase sshFxpData:\n\t\t\t\t\t\tsid, data := unmarshalUint32(s.data)\n\t\t\t\t\t\tif packet.id != sid {\n\t\t\t\t\t\t\terr = &unexpectedIDErr{packet.id, sid}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tl, data := unmarshalUint32(data)\n\t\t\t\t\t\t\tn = copy(packet.b, data[:l])\n\n\t\t\t\t\t\t\t// For normal disk files, it is guaranteed that this will read\n\t\t\t\t\t\t\t// the specified number of bytes, or up to end of file.\n\t\t\t\t\t\t\t// This implies, if we have a short read, that means EOF.\n\t\t\t\t\t\t\tif n < len(packet.b) {\n\t\t\t\t\t\t\t\terr = io.EOF\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\terr = unimplementedPacketErr(s.typ)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif err != nil {\n\t\t\t\t\t// return the offset as the start + how much we read before the error.\n\t\t\t\t\terrCh <- rErr{packet.off + int64(n), err}\n\n\t\t\t\t\t// DO NOT return.\n\t\t\t\t\t// We want to ensure that workCh is drained before wg.Wait returns.\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Wait for long tail, before closing results.\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(errCh)\n\t}()\n\n\t// Reduce: collect all the results into a relevant return: the earliest offset to return an error.\n\tfirstErr := rErr{math.MaxInt64, nil}\n\tfor rErr := range errCh {\n\t\tif rErr.off <= firstErr.off {\n\t\t\tfirstErr = rErr\n\t\t}\n\n\t\tselect {\n\t\tcase <-cancel:\n\t\tdefault:\n\t\t\t// stop any more work from being distributed. (Just in case.)\n\t\t\tclose(cancel)\n\t\t}\n\t}\n\n\tif firstErr.err != nil {\n\t\t// firstErr.err != nil if and only if firstErr.off > our starting offset.\n\t\treturn int(firstErr.off - off), firstErr.err\n\t}\n\n\t// As per spec for io.ReaderAt, we return nil error if and only if we read everything.\n\treturn len(b), nil\n}\n\n// writeToSequential implements WriteTo, but works sequentially with no parallelism.\nfunc (f *File) writeToSequential(w io.Writer) (written int64, err error) {\n\tb := make([]byte, f.c.maxPacket)\n\tch := make(chan result, 1) // reusable channel\n\n\tfor {\n\t\tn, err := f.readChunkAt(ch, b, f.offset)\n\t\tif n < 0 {\n\t\t\tpanic(\"sftp.File: returned negative count from readChunkAt\")\n\t\t}\n\n\t\tif n > 0 {\n\t\t\tf.offset += int64(n)\n\n\t\t\tm, err := w.Write(b[:n])\n\t\t\twritten += int64(m)\n\n\t\t\tif err != nil {\n\t\t\t\treturn written, err\n\t\t\t}\n\t\t}\n\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn written, nil // return nil explicitly.\n\t\t\t}\n\n\t\t\treturn written, err\n\t\t}\n\t}\n}\n\n// WriteTo writes the file to the given Writer.\n// The return value is the number of bytes written.\n// Any error encountered during the write is also returned.\n//\n// This method is preferred over calling Read multiple times\n// to maximise throughput for transferring the entire file,\n// especially over high latency links.\nfunc (f *File) WriteTo(w io.Writer) (written int64, err error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\tif f.c.disableConcurrentReads {\n\t\treturn f.writeToSequential(w)\n\t}\n\n\t// For concurrency, we want to guess how many concurrent workers we should use.\n\tvar fileStat *FileStat\n\tif f.c.useFstat {\n\t\tfileStat, err = f.c.fstat(f.handle)\n\t} else {\n\t\tfileStat, err = f.c.stat(f.path)\n\t}\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tfileSize := fileStat.Size\n\tif fileSize <= uint64(f.c.maxPacket) || !isRegular(fileStat.Mode) {\n\t\t// only regular files are guaranteed to return (full read) xor (partial read, next error)\n\t\treturn f.writeToSequential(w)\n\t}\n\n\tconcurrency64 := fileSize/uint64(f.c.maxPacket) + 1 // a bad guess, but better than no guess\n\tif concurrency64 > uint64(f.c.maxConcurrentRequests) || concurrency64 < 1 {\n\t\tconcurrency64 = uint64(f.c.maxConcurrentRequests)\n\t}\n\t// Now that concurrency64 is saturated to an int value, we know this assignment cannot possibly overflow.\n\tconcurrency := int(concurrency64)\n\n\tchunkSize := f.c.maxPacket\n\tpool := newBufPool(concurrency, chunkSize)\n\tresPool := newResChanPool(concurrency)\n\n\tcancel := make(chan struct{})\n\tvar wg sync.WaitGroup\n\tdefer func() {\n\t\t// Once the writing Reduce phase has ended, all the feed work needs to unconditionally stop.\n\t\tclose(cancel)\n\n\t\t// We want to wait until all outstanding goroutines with an `f` or `f.c` reference have completed.\n\t\t// Just to be sure we don’t orphan any goroutines any hanging references.\n\t\twg.Wait()\n\t}()\n\n\ttype writeWork struct {\n\t\tb   []byte\n\t\toff int64\n\t\terr error\n\n\t\tnext chan writeWork\n\t}\n\twriteCh := make(chan writeWork)\n\n\ttype readWork struct {\n\t\tid  uint32\n\t\tres chan result\n\t\toff int64\n\n\t\tcur, next chan writeWork\n\t}\n\treadCh := make(chan readWork)\n\n\t// Slice: hand out chunks of work on demand, with a `cur` and `next` channel built-in for sequencing.\n\tgo func() {\n\t\tdefer close(readCh)\n\n\t\toff := f.offset\n\n\t\tcur := writeCh\n\t\tfor {\n\t\t\tid := f.c.nextID()\n\t\t\tres := resPool.Get()\n\n\t\t\tnext := make(chan writeWork)\n\t\t\treadWork := readWork{\n\t\t\t\tid:  id,\n\t\t\t\tres: res,\n\t\t\t\toff: off,\n\n\t\t\t\tcur:  cur,\n\t\t\t\tnext: next,\n\t\t\t}\n\n\t\t\tf.c.dispatchRequest(res, &sshFxpReadPacket{\n\t\t\t\tID:     id,\n\t\t\t\tHandle: f.handle,\n\t\t\t\tOffset: uint64(off),\n\t\t\t\tLen:    uint32(chunkSize),\n\t\t\t})\n\n\t\t\tselect {\n\t\t\tcase readCh <- readWork:\n\t\t\tcase <-cancel:\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\toff += int64(chunkSize)\n\t\t\tcur = next\n\t\t}\n\t}()\n\n\twg.Add(concurrency)\n\tfor i := 0; i < concurrency; i++ {\n\t\t// Map_i: each worker gets readWork, and does the Read into a buffer at the given offset.\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\n\t\t\tfor readWork := range readCh {\n\t\t\t\tvar b []byte\n\t\t\t\tvar n int\n\n\t\t\t\ts := <-readWork.res\n\t\t\t\tresPool.Put(readWork.res)\n\n\t\t\t\terr := s.err\n\t\t\t\tif err == nil {\n\t\t\t\t\tswitch s.typ {\n\t\t\t\t\tcase sshFxpStatus:\n\t\t\t\t\t\terr = normaliseError(unmarshalStatus(readWork.id, s.data))\n\n\t\t\t\t\tcase sshFxpData:\n\t\t\t\t\t\tsid, data := unmarshalUint32(s.data)\n\t\t\t\t\t\tif readWork.id != sid {\n\t\t\t\t\t\t\terr = &unexpectedIDErr{readWork.id, sid}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tl, data := unmarshalUint32(data)\n\t\t\t\t\t\t\tb = pool.Get()[:l]\n\t\t\t\t\t\t\tn = copy(b, data[:l])\n\t\t\t\t\t\t\tb = b[:n]\n\t\t\t\t\t\t}\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\terr = unimplementedPacketErr(s.typ)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\twriteWork := writeWork{\n\t\t\t\t\tb:   b,\n\t\t\t\t\toff: readWork.off,\n\t\t\t\t\terr: err,\n\n\t\t\t\t\tnext: readWork.next,\n\t\t\t\t}\n\n\t\t\t\tselect {\n\t\t\t\tcase readWork.cur <- writeWork:\n\t\t\t\tcase <-cancel:\n\t\t\t\t}\n\n\t\t\t\t// DO NOT return.\n\t\t\t\t// We want to ensure that readCh is drained before wg.Wait returns.\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Reduce: serialize the results from the reads into sequential writes.\n\tcur := writeCh\n\tfor {\n\t\tpacket, ok := <-cur\n\t\tif !ok {\n\t\t\treturn written, errors.New(\"sftp.File.WriteTo: unexpectedly closed channel\")\n\t\t}\n\n\t\t// Because writes are serialized, this will always be the last successfully read byte.\n\t\tf.offset = packet.off + int64(len(packet.b))\n\n\t\tif len(packet.b) > 0 {\n\t\t\tn, err := w.Write(packet.b)\n\t\t\twritten += int64(n)\n\t\t\tif err != nil {\n\t\t\t\treturn written, err\n\t\t\t}\n\t\t}\n\n\t\tif packet.err != nil {\n\t\t\tif packet.err == io.EOF {\n\t\t\t\treturn written, nil\n\t\t\t}\n\n\t\t\treturn written, packet.err\n\t\t}\n\n\t\tpool.Put(packet.b)\n\t\tcur = packet.next\n\t}\n}\n\n// Stat returns the FileInfo structure describing file. If there is an\n// error.\nfunc (f *File) Stat() (os.FileInfo, error) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\tif f.handle == \"\" {\n\t\treturn nil, os.ErrClosed\n\t}\n\n\treturn f.stat()\n}\n\nfunc (f *File) stat() (os.FileInfo, error) {\n\tfs, err := f.c.fstat(f.handle)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn fileInfoFromStat(fs, path.Base(f.path)), nil\n}\n\n// Write writes len(b) bytes to the File. It returns the number of bytes\n// written and an error, if any. Write returns a non-nil error when n !=\n// len(b).\n//\n// To maximise throughput for transferring the entire file (especially\n// over high latency links) it is recommended to use ReadFrom rather\n// than calling Write multiple times. io.Copy will do this\n// automatically.\nfunc (f *File) Write(b []byte) (int, error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\tn, err := f.writeAt(b, f.offset)\n\tf.offset += int64(n)\n\treturn n, err\n}\n\nfunc (f *File) writeChunkAt(ch chan result, b []byte, off int64) (int, error) {\n\ttyp, data, err := f.c.sendPacket(context.Background(), ch, &sshFxpWritePacket{\n\t\tID:     f.c.nextID(),\n\t\tHandle: f.handle,\n\t\tOffset: uint64(off),\n\t\tLength: uint32(len(b)),\n\t\tData:   b,\n\t})\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tswitch typ {\n\tcase sshFxpStatus:\n\t\tid, _ := unmarshalUint32(data)\n\t\terr := normaliseError(unmarshalStatus(id, data))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\n\tdefault:\n\t\treturn 0, unimplementedPacketErr(typ)\n\t}\n\n\treturn len(b), nil\n}\n\n// writeAtConcurrent implements WriterAt, but works concurrently rather than sequentially.\nfunc (f *File) writeAtConcurrent(b []byte, off int64) (int, error) {\n\t// Split the write into multiple maxPacket sized concurrent writes\n\t// bounded by maxConcurrentRequests. This allows writes with a suitably\n\t// large buffer to transfer data at a much faster rate due to\n\t// overlapping round trip times.\n\n\tcancel := make(chan struct{})\n\n\ttype work struct {\n\t\tid  uint32\n\t\tres chan result\n\n\t\toff int64\n\t}\n\tworkCh := make(chan work)\n\n\tconcurrency := len(b)/f.c.maxPacket + 1\n\tif concurrency > f.c.maxConcurrentRequests || concurrency < 1 {\n\t\tconcurrency = f.c.maxConcurrentRequests\n\t}\n\n\tpool := newResChanPool(concurrency)\n\n\t// Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets.\n\tgo func() {\n\t\tdefer close(workCh)\n\n\t\tvar read int\n\t\tchunkSize := f.c.maxPacket\n\n\t\tfor read < len(b) {\n\t\t\twb := b[read:]\n\t\t\tif len(wb) > chunkSize {\n\t\t\t\twb = wb[:chunkSize]\n\t\t\t}\n\n\t\t\tid := f.c.nextID()\n\t\t\tres := pool.Get()\n\t\t\toff := off + int64(read)\n\n\t\t\tf.c.dispatchRequest(res, &sshFxpWritePacket{\n\t\t\t\tID:     id,\n\t\t\t\tHandle: f.handle,\n\t\t\t\tOffset: uint64(off),\n\t\t\t\tLength: uint32(len(wb)),\n\t\t\t\tData:   wb,\n\t\t\t})\n\n\t\t\tselect {\n\t\t\tcase workCh <- work{id, res, off}:\n\t\t\tcase <-cancel:\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tread += len(wb)\n\t\t}\n\t}()\n\n\ttype wErr struct {\n\t\toff int64\n\t\terr error\n\t}\n\terrCh := make(chan wErr)\n\n\tvar wg sync.WaitGroup\n\twg.Add(concurrency)\n\tfor i := 0; i < concurrency; i++ {\n\t\t// Map_i: each worker gets work, and does the Write from each buffer to its respective offset.\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\n\t\t\tfor work := range workCh {\n\t\t\t\ts := <-work.res\n\t\t\t\tpool.Put(work.res)\n\n\t\t\t\terr := s.err\n\t\t\t\tif err == nil {\n\t\t\t\t\tswitch s.typ {\n\t\t\t\t\tcase sshFxpStatus:\n\t\t\t\t\t\terr = normaliseError(unmarshalStatus(work.id, s.data))\n\t\t\t\t\tdefault:\n\t\t\t\t\t\terr = unimplementedPacketErr(s.typ)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif err != nil {\n\t\t\t\t\terrCh <- wErr{work.off, err}\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Wait for long tail, before closing results.\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(errCh)\n\t}()\n\n\t// Reduce: collect all the results into a relevant return: the earliest offset to return an error.\n\tfirstErr := wErr{math.MaxInt64, nil}\n\tfor wErr := range errCh {\n\t\tif wErr.off <= firstErr.off {\n\t\t\tfirstErr = wErr\n\t\t}\n\n\t\tselect {\n\t\tcase <-cancel:\n\t\tdefault:\n\t\t\t// stop any more work from being distributed. (Just in case.)\n\t\t\tclose(cancel)\n\t\t}\n\t}\n\n\tif firstErr.err != nil {\n\t\t// firstErr.err != nil if and only if firstErr.off >= our starting offset.\n\t\treturn int(firstErr.off - off), firstErr.err\n\t}\n\n\treturn len(b), nil\n}\n\n// WriteAt writes up to len(b) byte to the File at a given offset `off`. It returns\n// the number of bytes written and an error, if any. WriteAt follows io.WriterAt semantics,\n// so the file offset is not altered during the write.\nfunc (f *File) WriteAt(b []byte, off int64) (written int, err error) {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\treturn f.writeAt(b, off)\n}\n\n// writeAt must be called while holding either the Read or Write mutex in File.\n// This code is concurrent safe with itself, but not with Close.\nfunc (f *File) writeAt(b []byte, off int64) (written int, err error) {\n\tif len(b) <= f.c.maxPacket {\n\t\t// We can do this in one write.\n\t\treturn f.writeChunkAt(nil, b, off)\n\t}\n\n\tif f.c.useConcurrentWrites {\n\t\treturn f.writeAtConcurrent(b, off)\n\t}\n\n\tch := make(chan result, 1) // reusable channel\n\n\tchunkSize := f.c.maxPacket\n\n\tfor written < len(b) {\n\t\twb := b[written:]\n\t\tif len(wb) > chunkSize {\n\t\t\twb = wb[:chunkSize]\n\t\t}\n\n\t\tn, err := f.writeChunkAt(ch, wb, off+int64(written))\n\t\tif n > 0 {\n\t\t\twritten += n\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn written, err\n\t\t}\n\t}\n\n\treturn len(b), nil\n}\n\n// ReadFromWithConcurrency implements ReaderFrom,\n// but uses the given concurrency to issue multiple requests at the same time.\n//\n// Giving a concurrency of less than one will default to the Client’s max concurrency.\n//\n// Otherwise, the given concurrency will be capped by the Client's max concurrency.\nfunc (f *File) ReadFromWithConcurrency(r io.Reader, concurrency int) (read int64, err error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\treturn f.readFromWithConcurrency(r, concurrency)\n}\n\nfunc (f *File) readFromWithConcurrency(r io.Reader, concurrency int) (read int64, err error) {\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\t// Split the write into multiple maxPacket sized concurrent writes.\n\t// This allows writes with a suitably large reader\n\t// to transfer data at a much faster rate due to overlapping round trip times.\n\n\tcancel := make(chan struct{})\n\n\ttype work struct {\n\t\tid  uint32\n\t\tres chan result\n\n\t\toff int64\n\t}\n\tworkCh := make(chan work)\n\n\ttype rwErr struct {\n\t\toff int64\n\t\terr error\n\t}\n\terrCh := make(chan rwErr)\n\n\tif concurrency > f.c.maxConcurrentRequests || concurrency < 1 {\n\t\tconcurrency = f.c.maxConcurrentRequests\n\t}\n\n\tpool := newResChanPool(concurrency)\n\n\t// Slice: cut up the Read into any number of buffers of length <= f.c.maxPacket, and at appropriate offsets.\n\tgo func() {\n\t\tdefer close(workCh)\n\n\t\tb := make([]byte, f.c.maxPacket)\n\t\toff := f.offset\n\n\t\tfor {\n\t\t\tn, err := r.Read(b)\n\n\t\t\tif n > 0 {\n\t\t\t\tread += int64(n)\n\n\t\t\t\tid := f.c.nextID()\n\t\t\t\tres := pool.Get()\n\n\t\t\t\tf.c.dispatchRequest(res, &sshFxpWritePacket{\n\t\t\t\t\tID:     id,\n\t\t\t\t\tHandle: f.handle,\n\t\t\t\t\tOffset: uint64(off),\n\t\t\t\t\tLength: uint32(n),\n\t\t\t\t\tData:   b[:n],\n\t\t\t\t})\n\n\t\t\t\tselect {\n\t\t\t\tcase workCh <- work{id, res, off}:\n\t\t\t\tcase <-cancel:\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\toff += int64(n)\n\t\t\t}\n\n\t\t\tif err != nil {\n\t\t\t\tif err != io.EOF {\n\t\t\t\t\terrCh <- rwErr{off, err}\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\t}()\n\n\tvar wg sync.WaitGroup\n\twg.Add(concurrency)\n\tfor i := 0; i < concurrency; i++ {\n\t\t// Map_i: each worker gets work, and does the Write from each buffer to its respective offset.\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\n\t\t\tfor work := range workCh {\n\t\t\t\ts := <-work.res\n\t\t\t\tpool.Put(work.res)\n\n\t\t\t\terr := s.err\n\t\t\t\tif err == nil {\n\t\t\t\t\tswitch s.typ {\n\t\t\t\t\tcase sshFxpStatus:\n\t\t\t\t\t\terr = normaliseError(unmarshalStatus(work.id, s.data))\n\t\t\t\t\tdefault:\n\t\t\t\t\t\terr = unimplementedPacketErr(s.typ)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif err != nil {\n\t\t\t\t\terrCh <- rwErr{work.off, err}\n\n\t\t\t\t\t// DO NOT return.\n\t\t\t\t\t// We want to ensure that workCh is drained before wg.Wait returns.\n\t\t\t\t}\n\t\t\t}\n\t\t}()\n\t}\n\n\t// Wait for long tail, before closing results.\n\tgo func() {\n\t\twg.Wait()\n\t\tclose(errCh)\n\t}()\n\n\t// Reduce: Collect all the results into a relevant return: the earliest offset to return an error.\n\tfirstErr := rwErr{math.MaxInt64, nil}\n\tfor rwErr := range errCh {\n\t\tif rwErr.off <= firstErr.off {\n\t\t\tfirstErr = rwErr\n\t\t}\n\n\t\tselect {\n\t\tcase <-cancel:\n\t\tdefault:\n\t\t\t// stop any more work from being distributed.\n\t\t\tclose(cancel)\n\t\t}\n\t}\n\n\tif firstErr.err != nil {\n\t\t// firstErr.err != nil if and only if firstErr.off is a valid offset.\n\t\t//\n\t\t// firstErr.off will then be the lesser of:\n\t\t// * the offset of the first error from writing,\n\t\t// * the last successfully read offset.\n\t\t//\n\t\t// This could be less than the last successfully written offset,\n\t\t// which is the whole reason for the UseConcurrentWrites() ClientOption.\n\t\t//\n\t\t// Callers are responsible for truncating any SFTP files to a safe length.\n\t\tf.offset = firstErr.off\n\n\t\t// ReadFrom is defined to return the read bytes, regardless of any writer errors.\n\t\treturn read, firstErr.err\n\t}\n\n\tf.offset += read\n\treturn read, nil\n}\n\n// ReadFrom reads data from r until EOF and writes it to the file. The return\n// value is the number of bytes read. Any error except io.EOF encountered\n// during the read is also returned.\n//\n// This method is preferred over calling Write multiple times\n// to maximise throughput for transferring the entire file,\n// especially over high-latency links.\nfunc (f *File) ReadFrom(r io.Reader) (int64, error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\tif f.c.useConcurrentWrites {\n\t\tvar remain int64\n\t\tswitch r := r.(type) {\n\t\tcase interface{ Len() int }:\n\t\t\tremain = int64(r.Len())\n\n\t\tcase interface{ Size() int64 }:\n\t\t\tremain = r.Size()\n\n\t\tcase *io.LimitedReader:\n\t\t\tremain = r.N\n\n\t\tcase interface{ Stat() (os.FileInfo, error) }:\n\t\t\tinfo, err := r.Stat()\n\t\t\tif err == nil {\n\t\t\t\tremain = info.Size()\n\t\t\t}\n\t\t}\n\n\t\tif remain < 0 {\n\t\t\t// We can strongly assert that we want default max concurrency here.\n\t\t\treturn f.readFromWithConcurrency(r, f.c.maxConcurrentRequests)\n\t\t}\n\n\t\tif remain > int64(f.c.maxPacket) {\n\t\t\t// Otherwise, only use concurrency, if it would be at least two packets.\n\n\t\t\t// This is the best reasonable guess we can make.\n\t\t\tconcurrency64 := remain/int64(f.c.maxPacket) + 1\n\n\t\t\t// We need to cap this value to an `int` size value to avoid overflow on 32-bit machines.\n\t\t\t// So, we may as well pre-cap it to `f.c.maxConcurrentRequests`.\n\t\t\tif concurrency64 > int64(f.c.maxConcurrentRequests) {\n\t\t\t\tconcurrency64 = int64(f.c.maxConcurrentRequests)\n\t\t\t}\n\n\t\t\treturn f.readFromWithConcurrency(r, int(concurrency64))\n\t\t}\n\t}\n\n\tch := make(chan result, 1) // reusable channel\n\n\tb := make([]byte, f.c.maxPacket)\n\n\tvar read int64\n\tfor {\n\t\tn, err := r.Read(b)\n\t\tif n < 0 {\n\t\t\tpanic(\"sftp.File: reader returned negative count from Read\")\n\t\t}\n\n\t\tif n > 0 {\n\t\t\tread += int64(n)\n\n\t\t\tm, err2 := f.writeChunkAt(ch, b[:n], f.offset)\n\t\t\tf.offset += int64(m)\n\n\t\t\tif err == nil {\n\t\t\t\terr = err2\n\t\t\t}\n\t\t}\n\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\treturn read, nil // return nil explicitly.\n\t\t\t}\n\n\t\t\treturn read, err\n\t\t}\n\t}\n}\n\n// Seek implements io.Seeker by setting the client offset for the next Read or\n// Write. It returns the next offset read. Seeking before or after the end of\n// the file is undefined. Seeking relative to the end calls Stat.\nfunc (f *File) Seek(offset int64, whence int) (int64, error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn 0, os.ErrClosed\n\t}\n\n\tswitch whence {\n\tcase io.SeekStart:\n\tcase io.SeekCurrent:\n\t\toffset += f.offset\n\tcase io.SeekEnd:\n\t\tfi, err := f.stat()\n\t\tif err != nil {\n\t\t\treturn f.offset, err\n\t\t}\n\t\toffset += fi.Size()\n\tdefault:\n\t\treturn f.offset, unimplementedSeekWhence(whence)\n\t}\n\n\tif offset < 0 {\n\t\treturn f.offset, os.ErrInvalid\n\t}\n\n\tf.offset = offset\n\treturn f.offset, nil\n}\n\n// Chown changes the uid/gid of the current file.\nfunc (f *File) Chown(uid, gid int) error {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\tif f.handle == \"\" {\n\t\treturn os.ErrClosed\n\t}\n\n\treturn f.c.fsetstat(f.handle, sshFileXferAttrUIDGID, &FileStat{\n\t\tUID: uint32(uid),\n\t\tGID: uint32(gid),\n\t})\n}\n\n// Chmod changes the permissions of the current file.\n//\n// See Client.Chmod for details.\nfunc (f *File) Chmod(mode os.FileMode) error {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\tif f.handle == \"\" {\n\t\treturn os.ErrClosed\n\t}\n\n\treturn f.c.fsetstat(f.handle, sshFileXferAttrPermissions, toChmodPerm(mode))\n}\n\n// Truncate sets the size of the current file. Although it may be safely assumed\n// that if the size is less than its current size it will be truncated to fit,\n// the SFTP protocol does not specify what behavior the server should do when setting\n// size greater than the current size.\n// We send a SSH_FXP_FSETSTAT here since we have a file handle\nfunc (f *File) Truncate(size int64) error {\n\tf.mu.RLock()\n\tdefer f.mu.RUnlock()\n\n\tif f.handle == \"\" {\n\t\treturn os.ErrClosed\n\t}\n\n\treturn f.c.fsetstat(f.handle, sshFileXferAttrSize, uint64(size))\n}\n\n// Sync requests a flush of the contents of a File to stable storage.\n//\n// Sync requires the server to support the fsync@openssh.com extension.\nfunc (f *File) Sync() error {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.handle == \"\" {\n\t\treturn os.ErrClosed\n\t}\n\n\tid := f.c.nextID()\n\ttyp, data, err := f.c.sendPacket(context.Background(), nil, &sshFxpFsyncPacket{\n\t\tID:     id,\n\t\tHandle: f.handle,\n\t})\n\n\tswitch {\n\tcase err != nil:\n\t\treturn err\n\tcase typ == sshFxpStatus:\n\t\treturn normaliseError(unmarshalStatus(id, data))\n\tdefault:\n\t\treturn &unexpectedPacketErr{want: sshFxpStatus, got: typ}\n\t}\n}\n\n// normaliseError normalises an error into a more standard form that can be\n// checked against stdlib errors like io.EOF or os.ErrNotExist.\nfunc normaliseError(err error) error {\n\tswitch err := err.(type) {\n\tcase *StatusError:\n\t\tswitch err.Code {\n\t\tcase sshFxEOF:\n\t\t\treturn io.EOF\n\t\tcase sshFxNoSuchFile:\n\t\t\treturn os.ErrNotExist\n\t\tcase sshFxPermissionDenied:\n\t\t\treturn os.ErrPermission\n\t\tcase sshFxOk:\n\t\t\treturn nil\n\t\tdefault:\n\t\t\treturn err\n\t\t}\n\tdefault:\n\t\treturn err\n\t}\n}\n\n// flags converts the flags passed to OpenFile into ssh flags.\n// Unsupported flags are ignored.\nfunc toPflags(f int) uint32 {\n\tvar out uint32\n\tswitch f & os.O_WRONLY {\n\tcase os.O_WRONLY:\n\t\tout |= sshFxfWrite\n\tcase os.O_RDONLY:\n\t\tout |= sshFxfRead\n\t}\n\tif f&os.O_RDWR == os.O_RDWR {\n\t\tout |= sshFxfRead | sshFxfWrite\n\t}\n\tif f&os.O_APPEND == os.O_APPEND {\n\t\tout |= sshFxfAppend\n\t}\n\tif f&os.O_CREATE == os.O_CREATE {\n\t\tout |= sshFxfCreat\n\t}\n\tif f&os.O_TRUNC == os.O_TRUNC {\n\t\tout |= sshFxfTrunc\n\t}\n\tif f&os.O_EXCL == os.O_EXCL {\n\t\tout |= sshFxfExcl\n\t}\n\treturn out\n}\n\n// toChmodPerm converts Go permission bits to POSIX permission bits.\n//\n// This differs from fromFileMode in that we preserve the POSIX versions of\n// setuid, setgid and sticky in m, because we've historically supported those\n// bits, and we mask off any non-permission bits.\nfunc toChmodPerm(m os.FileMode) (perm uint32) {\n\tconst mask = os.ModePerm | s_ISUID | s_ISGID | s_ISVTX\n\tperm = uint32(m & mask)\n\n\tif m&os.ModeSetuid != 0 {\n\t\tperm |= s_ISUID\n\t}\n\tif m&os.ModeSetgid != 0 {\n\t\tperm |= s_ISGID\n\t}\n\tif m&os.ModeSticky != 0 {\n\t\tperm |= s_ISVTX\n\t}\n\n\treturn perm\n}\n"
  },
  {
    "path": "gossh/sftp/conn.go",
    "content": "package sftp\n\nimport (\n\t\"context\"\n\t\"encoding\"\n\t\"fmt\"\n\t\"io\"\n\t\"sync\"\n)\n\n// conn implements a bidirectional channel on which client and server\n// connections are multiplexed.\ntype conn struct {\n\tio.Reader\n\tio.WriteCloser\n\t// this is the same allocator used in packet manager\n\talloc      *allocator\n\tsync.Mutex // used to serialise writes to sendPacket\n}\n\n// the orderID is used in server mode if the allocator is enabled.\n// For the client mode just pass 0.\n// It returns io.EOF if the connection is closed and\n// there are no more packets to read.\nfunc (c *conn) recvPacket(orderID uint32) (uint8, []byte, error) {\n\treturn recvPacket(c, c.alloc, orderID)\n}\n\nfunc (c *conn) sendPacket(m encoding.BinaryMarshaler) error {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\treturn sendPacket(c, m)\n}\n\nfunc (c *conn) Close() error {\n\tc.Lock()\n\tdefer c.Unlock()\n\treturn c.WriteCloser.Close()\n}\n\ntype clientConn struct {\n\tconn\n\twg sync.WaitGroup\n\n\tsync.Mutex                          // protects inflight\n\tinflight   map[uint32]chan<- result // outstanding requests\n\n\tclosed chan struct{}\n\terr    error\n}\n\n// Wait blocks until the conn has shut down, and return the error\n// causing the shutdown. It can be called concurrently from multiple\n// goroutines.\nfunc (c *clientConn) Wait() error {\n\t<-c.closed\n\treturn c.err\n}\n\n// Close closes the SFTP session.\nfunc (c *clientConn) Close() error {\n\tdefer c.wg.Wait()\n\treturn c.conn.Close()\n}\n\n// recv continuously reads from the server and forwards responses to the\n// appropriate channel.\nfunc (c *clientConn) recv() error {\n\tdefer c.conn.Close()\n\n\tfor {\n\t\ttyp, data, err := c.recvPacket(0)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsid, _, err := unmarshalUint32Safe(data)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tch, ok := c.getChannel(sid)\n\t\tif !ok {\n\t\t\t// This is an unexpected occurrence. Send the error\n\t\t\t// back to all listeners so that they terminate\n\t\t\t// gracefully.\n\t\t\treturn fmt.Errorf(\"sid not found: %d\", sid)\n\t\t}\n\n\t\tch <- result{typ: typ, data: data}\n\t}\n}\n\nfunc (c *clientConn) putChannel(ch chan<- result, sid uint32) bool {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tselect {\n\tcase <-c.closed:\n\t\t// already closed with broadcastErr, return error on chan.\n\t\tch <- result{err: ErrSSHFxConnectionLost}\n\t\treturn false\n\tdefault:\n\t}\n\n\tc.inflight[sid] = ch\n\treturn true\n}\n\nfunc (c *clientConn) getChannel(sid uint32) (chan<- result, bool) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tch, ok := c.inflight[sid]\n\tdelete(c.inflight, sid)\n\n\treturn ch, ok\n}\n\n// result captures the result of receiving the a packet from the server\ntype result struct {\n\ttyp  byte\n\tdata []byte\n\terr  error\n}\n\ntype idmarshaler interface {\n\tid() uint32\n\tencoding.BinaryMarshaler\n}\n\nfunc (c *clientConn) sendPacket(ctx context.Context, ch chan result, p idmarshaler) (byte, []byte, error) {\n\tif cap(ch) < 1 {\n\t\tch = make(chan result, 1)\n\t}\n\n\tc.dispatchRequest(ch, p)\n\n\tselect {\n\tcase <-ctx.Done():\n\t\treturn 0, nil, ctx.Err()\n\tcase s := <-ch:\n\t\treturn s.typ, s.data, s.err\n\t}\n}\n\n// dispatchRequest should ideally only be called by race-detection tests outside of this file,\n// where you have to ensure two packets are in flight sequentially after each other.\nfunc (c *clientConn) dispatchRequest(ch chan<- result, p idmarshaler) {\n\tsid := p.id()\n\n\tif !c.putChannel(ch, sid) {\n\t\t// already closed.\n\t\treturn\n\t}\n\n\tif err := c.conn.sendPacket(p); err != nil {\n\t\tif ch, ok := c.getChannel(sid); ok {\n\t\t\tch <- result{err: err}\n\t\t}\n\t}\n}\n\n// broadcastErr sends an error to all goroutines waiting for a response.\nfunc (c *clientConn) broadcastErr(err error) {\n\tc.Lock()\n\tdefer c.Unlock()\n\n\tbcastRes := result{err: ErrSSHFxConnectionLost}\n\tfor sid, ch := range c.inflight {\n\t\tch <- bcastRes\n\n\t\t// Replace the chan in inflight,\n\t\t// we have hijacked this chan,\n\t\t// and this guarantees always-only-once sending.\n\t\tc.inflight[sid] = make(chan<- result, 1)\n\t}\n\n\tc.err = err\n\tclose(c.closed)\n}\n\ntype serverConn struct {\n\tconn\n}\n\nfunc (s *serverConn) sendError(id uint32, err error) error {\n\treturn s.sendPacket(statusFromError(id, err))\n}\n"
  },
  {
    "path": "gossh/sftp/debug.go",
    "content": "//go:build debug\n// +build debug\n\npackage sftp\n\nimport \"log\"\n\nfunc debug(fmt string, args ...any) {\n\tlog.Printf(fmt, args...)\n}\n"
  },
  {
    "path": "gossh/sftp/fuzz.go",
    "content": "//go:build gofuzz\n// +build gofuzz\n\npackage sftp\n\nimport \"bytes\"\n\ntype sinkfuzz struct{}\n\nfunc (*sinkfuzz) Close() error                { return nil }\nfunc (*sinkfuzz) Write(p []byte) (int, error) { return len(p), nil }\n\nvar devnull = &sinkfuzz{}\n\n// To run: go-fuzz-build && go-fuzz\nfunc Fuzz(data []byte) int {\n\tc, err := NewClientPipe(bytes.NewReader(data), devnull)\n\tif err != nil {\n\t\treturn 0\n\t}\n\tc.Close()\n\treturn 1\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/attrs.go",
    "content": "package sshfx\n\n// Attributes related flags.\nconst (\n\tAttrSize        = 1 << iota // SSH_FILEXFER_ATTR_SIZE\n\tAttrUIDGID                  // SSH_FILEXFER_ATTR_UIDGID\n\tAttrPermissions             // SSH_FILEXFER_ATTR_PERMISSIONS\n\tAttrACModTime               // SSH_FILEXFER_ACMODTIME\n\n\tAttrExtended = 1 << 31 // SSH_FILEXFER_ATTR_EXTENDED\n)\n\n// Attributes defines the file attributes type defined in draft-ietf-secsh-filexfer-02\n//\n// Defined in: https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5\ntype Attributes struct {\n\tFlags uint32\n\n\t// AttrSize\n\tSize uint64\n\n\t// AttrUIDGID\n\tUID uint32\n\tGID uint32\n\n\t// AttrPermissions\n\tPermissions FileMode\n\n\t// AttrACmodTime\n\tATime uint32\n\tMTime uint32\n\n\t// AttrExtended\n\tExtendedAttributes []ExtendedAttribute\n}\n\n// GetSize returns the Size field and a bool that is true if and only if the value is valid/defined.\nfunc (a *Attributes) GetSize() (size uint64, ok bool) {\n\treturn a.Size, a.Flags&AttrSize != 0\n}\n\n// SetSize is a convenience function that sets the Size field,\n// and marks the field as valid/defined in Flags.\nfunc (a *Attributes) SetSize(size uint64) {\n\ta.Flags |= AttrSize\n\ta.Size = size\n}\n\n// GetUIDGID returns the UID and GID fields and a bool that is true if and only if the values are valid/defined.\nfunc (a *Attributes) GetUIDGID() (uid, gid uint32, ok bool) {\n\treturn a.UID, a.GID, a.Flags&AttrUIDGID != 0\n}\n\n// SetUIDGID is a convenience function that sets the UID and GID fields,\n// and marks the fields as valid/defined in Flags.\nfunc (a *Attributes) SetUIDGID(uid, gid uint32) {\n\ta.Flags |= AttrUIDGID\n\ta.UID = uid\n\ta.GID = gid\n}\n\n// GetPermissions returns the Permissions field and a bool that is true if and only if the value is valid/defined.\nfunc (a *Attributes) GetPermissions() (perms FileMode, ok bool) {\n\treturn a.Permissions, a.Flags&AttrPermissions != 0\n}\n\n// SetPermissions is a convenience function that sets the Permissions field,\n// and marks the field as valid/defined in Flags.\nfunc (a *Attributes) SetPermissions(perms FileMode) {\n\ta.Flags |= AttrPermissions\n\ta.Permissions = perms\n}\n\n// GetACModTime returns the ATime and MTime fields and a bool that is true if and only if the values are valid/defined.\nfunc (a *Attributes) GetACModTime() (atime, mtime uint32, ok bool) {\n\treturn a.ATime, a.MTime, a.Flags&AttrACModTime != 0\n}\n\n// SetACModTime is a convenience function that sets the ATime and MTime fields,\n// and marks the fields as valid/defined in Flags.\nfunc (a *Attributes) SetACModTime(atime, mtime uint32) {\n\ta.Flags |= AttrACModTime\n\ta.ATime = atime\n\ta.MTime = mtime\n}\n\n// Len returns the number of bytes a would marshal into.\nfunc (a *Attributes) Len() int {\n\tlength := 4\n\n\tif a.Flags&AttrSize != 0 {\n\t\tlength += 8\n\t}\n\n\tif a.Flags&AttrUIDGID != 0 {\n\t\tlength += 4 + 4\n\t}\n\n\tif a.Flags&AttrPermissions != 0 {\n\t\tlength += 4\n\t}\n\n\tif a.Flags&AttrACModTime != 0 {\n\t\tlength += 4 + 4\n\t}\n\n\tif a.Flags&AttrExtended != 0 {\n\t\tlength += 4\n\n\t\tfor _, ext := range a.ExtendedAttributes {\n\t\t\tlength += ext.Len()\n\t\t}\n\t}\n\n\treturn length\n}\n\n// MarshalInto marshals e onto the end of the given Buffer.\nfunc (a *Attributes) MarshalInto(buf *Buffer) {\n\tbuf.AppendUint32(a.Flags)\n\n\tif a.Flags&AttrSize != 0 {\n\t\tbuf.AppendUint64(a.Size)\n\t}\n\n\tif a.Flags&AttrUIDGID != 0 {\n\t\tbuf.AppendUint32(a.UID)\n\t\tbuf.AppendUint32(a.GID)\n\t}\n\n\tif a.Flags&AttrPermissions != 0 {\n\t\tbuf.AppendUint32(uint32(a.Permissions))\n\t}\n\n\tif a.Flags&AttrACModTime != 0 {\n\t\tbuf.AppendUint32(a.ATime)\n\t\tbuf.AppendUint32(a.MTime)\n\t}\n\n\tif a.Flags&AttrExtended != 0 {\n\t\tbuf.AppendUint32(uint32(len(a.ExtendedAttributes)))\n\n\t\tfor _, ext := range a.ExtendedAttributes {\n\t\t\text.MarshalInto(buf)\n\t\t}\n\t}\n}\n\n// MarshalBinary returns a as the binary encoding of a.\nfunc (a *Attributes) MarshalBinary() ([]byte, error) {\n\tbuf := NewBuffer(make([]byte, 0, a.Len()))\n\ta.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom unmarshals an Attributes from the given Buffer into e.\n//\n// NOTE: The values of fields not covered in the a.Flags are explicitly undefined.\nfunc (a *Attributes) UnmarshalFrom(buf *Buffer) (err error) {\n\tflags := buf.ConsumeUint32()\n\n\treturn a.XXX_UnmarshalByFlags(flags, buf)\n}\n\n// XXX_UnmarshalByFlags uses the pre-existing a.Flags field to determine which fields to decode.\n// DO NOT USE THIS: it is an anti-corruption function to implement existing internal usage in pkg/sftp.\n// This function is not a part of any compatibility promise.\nfunc (a *Attributes) XXX_UnmarshalByFlags(flags uint32, buf *Buffer) (err error) {\n\ta.Flags = flags\n\n\t// Short-circuit dummy attributes.\n\tif a.Flags == 0 {\n\t\treturn buf.Err\n\t}\n\n\tif a.Flags&AttrSize != 0 {\n\t\ta.Size = buf.ConsumeUint64()\n\t}\n\n\tif a.Flags&AttrUIDGID != 0 {\n\t\ta.UID = buf.ConsumeUint32()\n\t\ta.GID = buf.ConsumeUint32()\n\t}\n\n\tif a.Flags&AttrPermissions != 0 {\n\t\ta.Permissions = FileMode(buf.ConsumeUint32())\n\t}\n\n\tif a.Flags&AttrACModTime != 0 {\n\t\ta.ATime = buf.ConsumeUint32()\n\t\ta.MTime = buf.ConsumeUint32()\n\t}\n\n\tif a.Flags&AttrExtended != 0 {\n\t\tcount := buf.ConsumeCount()\n\n\t\ta.ExtendedAttributes = make([]ExtendedAttribute, count)\n\t\tfor i := range a.ExtendedAttributes {\n\t\t\ta.ExtendedAttributes[i].UnmarshalFrom(buf)\n\t\t}\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the binary encoding of Attributes into e.\nfunc (a *Attributes) UnmarshalBinary(data []byte) error {\n\treturn a.UnmarshalFrom(NewBuffer(data))\n}\n\n// ExtendedAttribute defines the extended file attribute type defined in draft-ietf-secsh-filexfer-02\n//\n// Defined in: https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-5\ntype ExtendedAttribute struct {\n\tType string\n\tData string\n}\n\n// Len returns the number of bytes e would marshal into.\nfunc (e *ExtendedAttribute) Len() int {\n\treturn 4 + len(e.Type) + 4 + len(e.Data)\n}\n\n// MarshalInto marshals e onto the end of the given Buffer.\nfunc (e *ExtendedAttribute) MarshalInto(buf *Buffer) {\n\tbuf.AppendString(e.Type)\n\tbuf.AppendString(e.Data)\n}\n\n// MarshalBinary returns e as the binary encoding of e.\nfunc (e *ExtendedAttribute) MarshalBinary() ([]byte, error) {\n\tbuf := NewBuffer(make([]byte, 0, e.Len()))\n\te.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom unmarshals an ExtendedAattribute from the given Buffer into e.\nfunc (e *ExtendedAttribute) UnmarshalFrom(buf *Buffer) (err error) {\n\t*e = ExtendedAttribute{\n\t\tType: buf.ConsumeString(),\n\t\tData: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the binary encoding of ExtendedAttribute into e.\nfunc (e *ExtendedAttribute) UnmarshalBinary(data []byte) error {\n\treturn e.UnmarshalFrom(NewBuffer(data))\n}\n\n// NameEntry implements the SSH_FXP_NAME repeated data type from draft-ietf-secsh-filexfer-02\n//\n// This type is incompatible with versions 4 or higher.\ntype NameEntry struct {\n\tFilename string\n\tLongname string\n\tAttrs    Attributes\n}\n\n// Len returns the number of bytes e would marshal into.\nfunc (e *NameEntry) Len() int {\n\treturn 4 + len(e.Filename) + 4 + len(e.Longname) + e.Attrs.Len()\n}\n\n// MarshalInto marshals e onto the end of the given Buffer.\nfunc (e *NameEntry) MarshalInto(buf *Buffer) {\n\tbuf.AppendString(e.Filename)\n\tbuf.AppendString(e.Longname)\n\n\te.Attrs.MarshalInto(buf)\n}\n\n// MarshalBinary returns e as the binary encoding of e.\nfunc (e *NameEntry) MarshalBinary() ([]byte, error) {\n\tbuf := NewBuffer(make([]byte, 0, e.Len()))\n\te.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom unmarshals an NameEntry from the given Buffer into e.\n//\n// NOTE: The values of fields not covered in the a.Flags are explicitly undefined.\nfunc (e *NameEntry) UnmarshalFrom(buf *Buffer) (err error) {\n\t*e = NameEntry{\n\t\tFilename: buf.ConsumeString(),\n\t\tLongname: buf.ConsumeString(),\n\t}\n\n\treturn e.Attrs.UnmarshalFrom(buf)\n}\n\n// UnmarshalBinary decodes the binary encoding of NameEntry into e.\nfunc (e *NameEntry) UnmarshalBinary(data []byte) error {\n\treturn e.UnmarshalFrom(NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/buffer.go",
    "content": "package sshfx\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n)\n\n// Various encoding errors.\nvar (\n\tErrShortPacket = errors.New(\"packet too short\")\n\tErrLongPacket  = errors.New(\"packet too long\")\n)\n\n// Buffer wraps up the various encoding details of the SSH format.\n//\n// Data types are encoded as per section 4 from https://tools.ietf.org/html/draft-ietf-secsh-architecture-09#page-8\ntype Buffer struct {\n\tb   []byte\n\toff int\n\tErr error\n}\n\n// NewBuffer creates and initializes a new buffer using buf as its initial contents.\n// The new buffer takes ownership of buf, and the caller should not use buf after this call.\n//\n// In most cases, new(Buffer) (or just declaring a Buffer variable) is sufficient to initialize a Buffer.\nfunc NewBuffer(buf []byte) *Buffer {\n\treturn &Buffer{\n\t\tb: buf,\n\t}\n}\n\n// NewMarshalBuffer creates a new Buffer ready to start marshaling a Packet into.\n// It preallocates enough space for uint32(length), uint8(type), uint32(request-id) and size more bytes.\nfunc NewMarshalBuffer(size int) *Buffer {\n\treturn NewBuffer(make([]byte, 4+1+4+size))\n}\n\n// Bytes returns a slice of length b.Len() holding the unconsumed bytes in the Buffer.\n// The slice is valid for use only until the next buffer modification\n// (that is, only until the next call to an Append or Consume method).\nfunc (b *Buffer) Bytes() []byte {\n\treturn b.b[b.off:]\n}\n\n// Len returns the number of unconsumed bytes in the buffer.\nfunc (b *Buffer) Len() int { return len(b.b) - b.off }\n\n// Cap returns the capacity of the buffer’s underlying byte slice,\n// that is, the total space allocated for the buffer’s data.\nfunc (b *Buffer) Cap() int { return cap(b.b) }\n\n// Reset resets the buffer to be empty, but it retains the underlying storage for use by future Appends.\nfunc (b *Buffer) Reset() {\n\t*b = Buffer{\n\t\tb: b.b[:0],\n\t}\n}\n\n// StartPacket resets and initializes the buffer to be ready to start marshaling a packet into.\n// It truncates the buffer, reserves space for uint32(length), then appends the given packetType and requestID.\nfunc (b *Buffer) StartPacket(packetType PacketType, requestID uint32) {\n\t*b = Buffer{\n\t\tb: append(b.b[:0], make([]byte, 4)...),\n\t}\n\n\tb.AppendUint8(uint8(packetType))\n\tb.AppendUint32(requestID)\n}\n\n// Packet finalizes the packet started from StartPacket.\n// It is expected that this will end the ownership of the underlying byte-slice,\n// and so the returned byte-slices may be reused the same as any other byte-slice,\n// the caller should not use this buffer after this call.\n//\n// It writes the packet body length into the first four bytes of the buffer in network byte order (big endian).\n// The packet body length is the length of this buffer less the 4-byte length itself, plus the length of payload.\n//\n// It is assumed that no Consume methods have been called on this buffer,\n// and so it returns the whole underlying slice.\nfunc (b *Buffer) Packet(payload []byte) (header, payloadPassThru []byte, err error) {\n\tb.PutLength(len(b.b) - 4 + len(payload))\n\n\treturn b.b, payload, nil\n}\n\n// ConsumeUint8 consumes a single byte from the buffer.\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeUint8() uint8 {\n\tif b.Err != nil {\n\t\treturn 0\n\t}\n\n\tif b.Len() < 1 {\n\t\tb.off = len(b.b)\n\t\tb.Err = ErrShortPacket\n\t\treturn 0\n\t}\n\n\tvar v uint8\n\tv, b.off = b.b[b.off], b.off+1\n\treturn v\n}\n\n// AppendUint8 appends a single byte into the buffer.\nfunc (b *Buffer) AppendUint8(v uint8) {\n\tb.b = append(b.b, v)\n}\n\n// ConsumeBool consumes a single byte from the buffer, and returns true if that byte is non-zero.\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeBool() bool {\n\treturn b.ConsumeUint8() != 0\n}\n\n// AppendBool appends a single bool into the buffer.\n// It encodes it as a single byte, with false as 0, and true as 1.\nfunc (b *Buffer) AppendBool(v bool) {\n\tif v {\n\t\tb.AppendUint8(1)\n\t} else {\n\t\tb.AppendUint8(0)\n\t}\n}\n\n// ConsumeUint16 consumes a single uint16 from the buffer, in network byte order (big-endian).\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeUint16() uint16 {\n\tif b.Err != nil {\n\t\treturn 0\n\t}\n\n\tif b.Len() < 2 {\n\t\tb.off = len(b.b)\n\t\tb.Err = ErrShortPacket\n\t\treturn 0\n\t}\n\n\tv := binary.BigEndian.Uint16(b.b[b.off:])\n\tb.off += 2\n\treturn v\n}\n\n// AppendUint16 appends single uint16 into the buffer, in network byte order (big-endian).\nfunc (b *Buffer) AppendUint16(v uint16) {\n\tb.b = append(b.b,\n\t\tbyte(v>>8),\n\t\tbyte(v>>0),\n\t)\n}\n\n// unmarshalUint32 is used internally to read the packet length.\n// It is unsafe, and so not exported.\n// Even within this package, its use should be avoided.\nfunc unmarshalUint32(b []byte) uint32 {\n\treturn binary.BigEndian.Uint32(b[:4])\n}\n\n// ConsumeUint32 consumes a single uint32 from the buffer, in network byte order (big-endian).\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeUint32() uint32 {\n\tif b.Err != nil {\n\t\treturn 0\n\t}\n\n\tif b.Len() < 4 {\n\t\tb.off = len(b.b)\n\t\tb.Err = ErrShortPacket\n\t\treturn 0\n\t}\n\n\tv := binary.BigEndian.Uint32(b.b[b.off:])\n\tb.off += 4\n\treturn v\n}\n\n// AppendUint32 appends a single uint32 into the buffer, in network byte order (big-endian).\nfunc (b *Buffer) AppendUint32(v uint32) {\n\tb.b = append(b.b,\n\t\tbyte(v>>24),\n\t\tbyte(v>>16),\n\t\tbyte(v>>8),\n\t\tbyte(v>>0),\n\t)\n}\n\n// ConsumeCount consumes a single uint32 count from the buffer, in network byte order (big-endian) as an int.\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeCount() int {\n\treturn int(b.ConsumeUint32())\n}\n\n// AppendCount appends a single int length as a uint32 into the buffer, in network byte order (big-endian).\nfunc (b *Buffer) AppendCount(v int) {\n\tb.AppendUint32(uint32(v))\n}\n\n// ConsumeUint64 consumes a single uint64 from the buffer, in network byte order (big-endian).\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeUint64() uint64 {\n\tif b.Err != nil {\n\t\treturn 0\n\t}\n\n\tif b.Len() < 8 {\n\t\tb.off = len(b.b)\n\t\tb.Err = ErrShortPacket\n\t\treturn 0\n\t}\n\n\tv := binary.BigEndian.Uint64(b.b[b.off:])\n\tb.off += 8\n\treturn v\n}\n\n// AppendUint64 appends a single uint64 into the buffer, in network byte order (big-endian).\nfunc (b *Buffer) AppendUint64(v uint64) {\n\tb.b = append(b.b,\n\t\tbyte(v>>56),\n\t\tbyte(v>>48),\n\t\tbyte(v>>40),\n\t\tbyte(v>>32),\n\t\tbyte(v>>24),\n\t\tbyte(v>>16),\n\t\tbyte(v>>8),\n\t\tbyte(v>>0),\n\t)\n}\n\n// ConsumeInt64 consumes a single int64 from the buffer, in network byte order (big-endian) with two’s complement.\n// If the buffer does not have enough data, it will set Err to ErrShortPacket.\nfunc (b *Buffer) ConsumeInt64() int64 {\n\treturn int64(b.ConsumeUint64())\n}\n\n// AppendInt64 appends a single int64 into the buffer, in network byte order (big-endian) with two’s complement.\nfunc (b *Buffer) AppendInt64(v int64) {\n\tb.AppendUint64(uint64(v))\n}\n\n// ConsumeByteSlice consumes a single string of raw binary data from the buffer.\n// A string is a uint32 length, followed by that number of raw bytes.\n// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket.\n//\n// The returned slice aliases the buffer contents, and is valid only as long as the buffer is not reused\n// (that is, only until the next call to Reset, PutLength, StartPacket, or UnmarshalBinary).\n//\n// In no case will any Consume calls return overlapping slice aliases,\n// and Append calls are guaranteed to not disturb this slice alias.\nfunc (b *Buffer) ConsumeByteSlice() []byte {\n\tlength := int(b.ConsumeUint32())\n\tif b.Err != nil {\n\t\treturn nil\n\t}\n\n\tif b.Len() < length || length < 0 {\n\t\tb.off = len(b.b)\n\t\tb.Err = ErrShortPacket\n\t\treturn nil\n\t}\n\n\tv := b.b[b.off:]\n\tif len(v) > length || cap(v) > length {\n\t\tv = v[:length:length]\n\t}\n\tb.off += int(length)\n\treturn v\n}\n\n// ConsumeByteSliceCopy consumes a single string of raw binary data as a copy from the buffer.\n// A string is a uint32 length, followed by that number of raw bytes.\n// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket.\n//\n// The returned slice does not alias any buffer contents,\n// and will therefore be valid even if the buffer is later reused.\n//\n// If hint has sufficient capacity to hold the data, it will be reused and overwritten,\n// otherwise a new backing slice will be allocated and returned.\nfunc (b *Buffer) ConsumeByteSliceCopy(hint []byte) []byte {\n\tdata := b.ConsumeByteSlice()\n\n\tif grow := len(data) - len(hint); grow > 0 {\n\t\thint = append(hint, make([]byte, grow)...)\n\t}\n\n\tn := copy(hint, data)\n\thint = hint[:n]\n\treturn hint\n}\n\n// AppendByteSlice appends a single string of raw binary data into the buffer.\n// A string is a uint32 length, followed by that number of raw bytes.\nfunc (b *Buffer) AppendByteSlice(v []byte) {\n\tb.AppendUint32(uint32(len(v)))\n\tb.b = append(b.b, v...)\n}\n\n// ConsumeString consumes a single string of binary data from the buffer.\n// A string is a uint32 length, followed by that number of raw bytes.\n// If the buffer does not have enough data, or defines a length larger than available, it will set Err to ErrShortPacket.\n//\n// NOTE: Go implicitly assumes that strings contain UTF-8 encoded data.\n// All caveats on using arbitrary binary data in Go strings applies.\nfunc (b *Buffer) ConsumeString() string {\n\treturn string(b.ConsumeByteSlice())\n}\n\n// AppendString appends a single string of binary data into the buffer.\n// A string is a uint32 length, followed by that number of raw bytes.\nfunc (b *Buffer) AppendString(v string) {\n\tb.AppendByteSlice([]byte(v))\n}\n\n// PutLength writes the given size into the first four bytes of the buffer in network byte order (big endian).\nfunc (b *Buffer) PutLength(size int) {\n\tif len(b.b) < 4 {\n\t\tb.b = append(b.b, make([]byte, 4-len(b.b))...)\n\t}\n\n\tbinary.BigEndian.PutUint32(b.b, uint32(size))\n}\n\n// MarshalBinary returns a clone of the full internal buffer.\nfunc (b *Buffer) MarshalBinary() ([]byte, error) {\n\tclone := make([]byte, len(b.b))\n\tn := copy(clone, b.b)\n\treturn clone[:n], nil\n}\n\n// UnmarshalBinary sets the internal buffer of b to be a clone of data, and zeros the internal offset.\nfunc (b *Buffer) UnmarshalBinary(data []byte) error {\n\tif grow := len(data) - len(b.b); grow > 0 {\n\t\tb.b = append(b.b, make([]byte, grow)...)\n\t}\n\n\tn := copy(b.b, data)\n\tb.b = b.b[:n]\n\tb.off = 0\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/extended_packets.go",
    "content": "package sshfx\n\nimport (\n\t\"encoding\"\n\t\"sync\"\n)\n\n// ExtendedData aliases the untyped interface composition of encoding.BinaryMarshaler and encoding.BinaryUnmarshaler.\ntype ExtendedData = interface {\n\tencoding.BinaryMarshaler\n\tencoding.BinaryUnmarshaler\n}\n\n// ExtendedDataConstructor defines a function that returns a new(ArbitraryExtendedPacket).\ntype ExtendedDataConstructor func() ExtendedData\n\nvar extendedPacketTypes = struct {\n\tmu           sync.RWMutex\n\tconstructors map[string]ExtendedDataConstructor\n}{\n\tconstructors: make(map[string]ExtendedDataConstructor),\n}\n\n// RegisterExtendedPacketType defines a specific ExtendedDataConstructor for the given extension string.\nfunc RegisterExtendedPacketType(extension string, constructor ExtendedDataConstructor) {\n\textendedPacketTypes.mu.Lock()\n\tdefer extendedPacketTypes.mu.Unlock()\n\n\tif _, exist := extendedPacketTypes.constructors[extension]; exist {\n\t\tpanic(\"encoding/ssh/filexfer: multiple registration of extended packet type \" + extension)\n\t}\n\n\textendedPacketTypes.constructors[extension] = constructor\n}\n\nfunc newExtendedPacket(extension string) ExtendedData {\n\textendedPacketTypes.mu.RLock()\n\tdefer extendedPacketTypes.mu.RUnlock()\n\n\tif f := extendedPacketTypes.constructors[extension]; f != nil {\n\t\treturn f()\n\t}\n\n\treturn new(Buffer)\n}\n\n// ExtendedPacket defines the SSH_FXP_CLOSE packet.\ntype ExtendedPacket struct {\n\tExtendedRequest string\n\n\tData ExtendedData\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ExtendedPacket) Type() PacketType {\n\treturn PacketTypeExtended\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\n//\n// The Data is marshaled into binary, and returned as the payload.\nfunc (p *ExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.ExtendedRequest) // string(extended-request)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeExtended, reqid)\n\tbuf.AppendString(p.ExtendedRequest)\n\n\tif p.Data != nil {\n\t\tpayload, err = p.Data.MarshalBinary()\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\n//\n// If p.Data is nil, and the extension has been registered, a new type will be made from the registration.\n// If the extension has not been registered, then a new Buffer will be allocated.\n// Then the request-specific-data will be unmarshaled from the rest of the buffer.\nfunc (p *ExtendedPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\tp.ExtendedRequest = buf.ConsumeString()\n\tif buf.Err != nil {\n\t\treturn buf.Err\n\t}\n\n\tif p.Data == nil {\n\t\tp.Data = newExtendedPacket(p.ExtendedRequest)\n\t}\n\n\treturn p.Data.UnmarshalBinary(buf.Bytes())\n}\n\n// ExtendedReplyPacket defines the SSH_FXP_CLOSE packet.\ntype ExtendedReplyPacket struct {\n\tData ExtendedData\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ExtendedReplyPacket) Type() PacketType {\n\treturn PacketTypeExtendedReply\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\n//\n// The Data is marshaled into binary, and returned as the payload.\nfunc (p *ExtendedReplyPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tbuf = NewMarshalBuffer(0)\n\t}\n\n\tbuf.StartPacket(PacketTypeExtendedReply, reqid)\n\n\tif p.Data != nil {\n\t\tpayload, err = p.Data.MarshalBinary()\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\n//\n// If p.Data is nil, and there is request-specific-data,\n// then the request-specific-data will be wrapped in a Buffer and assigned to p.Data.\nfunc (p *ExtendedReplyPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\tif p.Data == nil {\n\t\tp.Data = new(Buffer)\n\t}\n\n\treturn p.Data.UnmarshalBinary(buf.Bytes())\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/extensions.go",
    "content": "package sshfx\n\n// ExtensionPair defines the extension-pair type defined in draft-ietf-secsh-filexfer-13.\n// This type is backwards-compatible with how draft-ietf-secsh-filexfer-02 defines extensions.\n//\n// Defined in: https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-4.2\ntype ExtensionPair struct {\n\tName string\n\tData string\n}\n\n// Len returns the number of bytes e would marshal into.\nfunc (e *ExtensionPair) Len() int {\n\treturn 4 + len(e.Name) + 4 + len(e.Data)\n}\n\n// MarshalInto marshals e onto the end of the given Buffer.\nfunc (e *ExtensionPair) MarshalInto(buf *Buffer) {\n\tbuf.AppendString(e.Name)\n\tbuf.AppendString(e.Data)\n}\n\n// MarshalBinary returns e as the binary encoding of e.\nfunc (e *ExtensionPair) MarshalBinary() ([]byte, error) {\n\tbuf := NewBuffer(make([]byte, 0, e.Len()))\n\te.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom unmarshals an ExtensionPair from the given Buffer into e.\nfunc (e *ExtensionPair) UnmarshalFrom(buf *Buffer) (err error) {\n\t*e = ExtensionPair{\n\t\tName: buf.ConsumeString(),\n\t\tData: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the binary encoding of ExtensionPair into e.\nfunc (e *ExtensionPair) UnmarshalBinary(data []byte) error {\n\treturn e.UnmarshalFrom(NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/filexfer.go",
    "content": "// Package sshfx implements the wire encoding for secsh-filexfer as described in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt\npackage sshfx\n\n// PacketMarshaller narrowly defines packets that will only be transmitted.\n//\n// ExtendedPacket types will often only implement this interface,\n// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field.\ntype PacketMarshaller interface {\n\t// MarshalPacket is the primary intended way to encode a packet.\n\t// The request-id for the packet is set from reqid.\n\t//\n\t// An optional buffer may be given in b.\n\t// If the buffer has a minimum capacity, it shall be truncated and used to marshal the header into.\n\t// The minimum capacity for the packet must be a constant expression, and should be at least 9.\n\t//\n\t// It shall return the main body of the encoded packet in header,\n\t// and may optionally return an additional payload to be written immediately after the header.\n\t//\n\t// It shall encode in the first 4-bytes of the header the proper length of the rest of the header+payload.\n\tMarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error)\n}\n\n// Packet defines the behavior of a full generic SFTP packet.\n//\n// InitPacket, and VersionPacket are not generic SFTP packets, and instead implement (Un)MarshalBinary.\n//\n// ExtendedPacket types should not iplement this interface,\n// since decoding the whole packet body of an ExtendedPacket can only be done dependent on the ExtendedRequest field.\ntype Packet interface {\n\tPacketMarshaller\n\n\t// Type returns the SSH_FXP_xy value associated with the specific packet.\n\tType() PacketType\n\n\t// UnmarshalPacketBody decodes a packet body from the given Buffer.\n\t// It is assumed that the common header values of the length, type and request-id have already been consumed.\n\t//\n\t// Implementations should not alias the given Buffer,\n\t// instead they can consider prepopulating an internal buffer as a hint,\n\t// and copying into that buffer if it has sufficient length.\n\tUnmarshalPacketBody(buf *Buffer) error\n}\n\n// ComposePacket converts returns from MarshalPacket into an equivalent call to MarshalBinary.\nfunc ComposePacket(header, payload []byte, err error) ([]byte, error) {\n\treturn append(header, payload...), err\n}\n\n// Default length values,\n// Defined in draft-ietf-secsh-filexfer-02 section 3.\nconst (\n\tDefaultMaxPacketLength = 34000\n\tDefaultMaxDataLength   = 32768\n)\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/fx.go",
    "content": "package sshfx\n\nimport (\n\t\"fmt\"\n)\n\n// Status defines the SFTP error codes used in SSH_FXP_STATUS response packets.\ntype Status uint32\n\n// Defines the various SSH_FX_* values.\nconst (\n\t// see draft-ietf-secsh-filexfer-02\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-7\n\tStatusOK = Status(iota)\n\tStatusEOF\n\tStatusNoSuchFile\n\tStatusPermissionDenied\n\tStatusFailure\n\tStatusBadMessage\n\tStatusNoConnection\n\tStatusConnectionLost\n\tStatusOPUnsupported\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-03.txt#section-7\n\tStatusV4InvalidHandle\n\tStatusV4NoSuchPath\n\tStatusV4FileAlreadyExists\n\tStatusV4WriteProtect\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-04.txt#section-7\n\tStatusV4NoMedia\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-05.txt#section-7\n\tStatusV5NoSpaceOnFilesystem\n\tStatusV5QuotaExceeded\n\tStatusV5UnknownPrincipal\n\tStatusV5LockConflict\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-06.txt#section-8\n\tStatusV6DirNotEmpty\n\tStatusV6NotADirectory\n\tStatusV6InvalidFilename\n\tStatusV6LinkLoop\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-07.txt#section-8\n\tStatusV6CannotDelete\n\tStatusV6InvalidParameter\n\tStatusV6FileIsADirectory\n\tStatusV6ByteRangeLockConflict\n\tStatusV6ByteRangeLockRefused\n\tStatusV6DeletePending\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-08.txt#section-8.1\n\tStatusV6FileCorrupt\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-10.txt#section-9.1\n\tStatusV6OwnerInvalid\n\tStatusV6GroupInvalid\n\n\t// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.1\n\tStatusV6NoMatchingByteRangeLock\n)\n\nfunc (s Status) Error() string {\n\treturn s.String()\n}\n\n// Is returns true if the target is the same Status code,\n// or target is a StatusPacket with the same Status code.\nfunc (s Status) Is(target error) bool {\n\tif target, ok := target.(*StatusPacket); ok {\n\t\treturn target.StatusCode == s\n\t}\n\n\treturn s == target\n}\n\nfunc (s Status) String() string {\n\tswitch s {\n\tcase StatusOK:\n\t\treturn \"SSH_FX_OK\"\n\tcase StatusEOF:\n\t\treturn \"SSH_FX_EOF\"\n\tcase StatusNoSuchFile:\n\t\treturn \"SSH_FX_NO_SUCH_FILE\"\n\tcase StatusPermissionDenied:\n\t\treturn \"SSH_FX_PERMISSION_DENIED\"\n\tcase StatusFailure:\n\t\treturn \"SSH_FX_FAILURE\"\n\tcase StatusBadMessage:\n\t\treturn \"SSH_FX_BAD_MESSAGE\"\n\tcase StatusNoConnection:\n\t\treturn \"SSH_FX_NO_CONNECTION\"\n\tcase StatusConnectionLost:\n\t\treturn \"SSH_FX_CONNECTION_LOST\"\n\tcase StatusOPUnsupported:\n\t\treturn \"SSH_FX_OP_UNSUPPORTED\"\n\tcase StatusV4InvalidHandle:\n\t\treturn \"SSH_FX_INVALID_HANDLE\"\n\tcase StatusV4NoSuchPath:\n\t\treturn \"SSH_FX_NO_SUCH_PATH\"\n\tcase StatusV4FileAlreadyExists:\n\t\treturn \"SSH_FX_FILE_ALREADY_EXISTS\"\n\tcase StatusV4WriteProtect:\n\t\treturn \"SSH_FX_WRITE_PROTECT\"\n\tcase StatusV4NoMedia:\n\t\treturn \"SSH_FX_NO_MEDIA\"\n\tcase StatusV5NoSpaceOnFilesystem:\n\t\treturn \"SSH_FX_NO_SPACE_ON_FILESYSTEM\"\n\tcase StatusV5QuotaExceeded:\n\t\treturn \"SSH_FX_QUOTA_EXCEEDED\"\n\tcase StatusV5UnknownPrincipal:\n\t\treturn \"SSH_FX_UNKNOWN_PRINCIPAL\"\n\tcase StatusV5LockConflict:\n\t\treturn \"SSH_FX_LOCK_CONFLICT\"\n\tcase StatusV6DirNotEmpty:\n\t\treturn \"SSH_FX_DIR_NOT_EMPTY\"\n\tcase StatusV6NotADirectory:\n\t\treturn \"SSH_FX_NOT_A_DIRECTORY\"\n\tcase StatusV6InvalidFilename:\n\t\treturn \"SSH_FX_INVALID_FILENAME\"\n\tcase StatusV6LinkLoop:\n\t\treturn \"SSH_FX_LINK_LOOP\"\n\tcase StatusV6CannotDelete:\n\t\treturn \"SSH_FX_CANNOT_DELETE\"\n\tcase StatusV6InvalidParameter:\n\t\treturn \"SSH_FX_INVALID_PARAMETER\"\n\tcase StatusV6FileIsADirectory:\n\t\treturn \"SSH_FX_FILE_IS_A_DIRECTORY\"\n\tcase StatusV6ByteRangeLockConflict:\n\t\treturn \"SSH_FX_BYTE_RANGE_LOCK_CONFLICT\"\n\tcase StatusV6ByteRangeLockRefused:\n\t\treturn \"SSH_FX_BYTE_RANGE_LOCK_REFUSED\"\n\tcase StatusV6DeletePending:\n\t\treturn \"SSH_FX_DELETE_PENDING\"\n\tcase StatusV6FileCorrupt:\n\t\treturn \"SSH_FX_FILE_CORRUPT\"\n\tcase StatusV6OwnerInvalid:\n\t\treturn \"SSH_FX_OWNER_INVALID\"\n\tcase StatusV6GroupInvalid:\n\t\treturn \"SSH_FX_GROUP_INVALID\"\n\tcase StatusV6NoMatchingByteRangeLock:\n\t\treturn \"SSH_FX_NO_MATCHING_BYTE_RANGE_LOCK\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"SSH_FX_UNKNOWN(%d)\", s)\n\t}\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/fxp.go",
    "content": "package sshfx\n\nimport (\n\t\"fmt\"\n)\n\n// PacketType defines the various SFTP packet types.\ntype PacketType uint8\n\n// Request packet types.\nconst (\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3\n\tPacketTypeInit = PacketType(iota + 1)\n\tPacketTypeVersion\n\tPacketTypeOpen\n\tPacketTypeClose\n\tPacketTypeRead\n\tPacketTypeWrite\n\tPacketTypeLStat\n\tPacketTypeFStat\n\tPacketTypeSetstat\n\tPacketTypeFSetstat\n\tPacketTypeOpenDir\n\tPacketTypeReadDir\n\tPacketTypeRemove\n\tPacketTypeMkdir\n\tPacketTypeRmdir\n\tPacketTypeRealPath\n\tPacketTypeStat\n\tPacketTypeRename\n\tPacketTypeReadLink\n\tPacketTypeSymlink\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-07.txt#section-3.3\n\tPacketTypeV6Link\n\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-08.txt#section-3.3\n\tPacketTypeV6Block\n\tPacketTypeV6Unblock\n)\n\n// Response packet types.\nconst (\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3\n\tPacketTypeStatus = PacketType(iota + 101)\n\tPacketTypeHandle\n\tPacketTypeData\n\tPacketTypeName\n\tPacketTypeAttrs\n)\n\n// Extended packet types.\nconst (\n\t// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3\n\tPacketTypeExtended = PacketType(iota + 200)\n\tPacketTypeExtendedReply\n)\n\nfunc (f PacketType) String() string {\n\tswitch f {\n\tcase PacketTypeInit:\n\t\treturn \"SSH_FXP_INIT\"\n\tcase PacketTypeVersion:\n\t\treturn \"SSH_FXP_VERSION\"\n\tcase PacketTypeOpen:\n\t\treturn \"SSH_FXP_OPEN\"\n\tcase PacketTypeClose:\n\t\treturn \"SSH_FXP_CLOSE\"\n\tcase PacketTypeRead:\n\t\treturn \"SSH_FXP_READ\"\n\tcase PacketTypeWrite:\n\t\treturn \"SSH_FXP_WRITE\"\n\tcase PacketTypeLStat:\n\t\treturn \"SSH_FXP_LSTAT\"\n\tcase PacketTypeFStat:\n\t\treturn \"SSH_FXP_FSTAT\"\n\tcase PacketTypeSetstat:\n\t\treturn \"SSH_FXP_SETSTAT\"\n\tcase PacketTypeFSetstat:\n\t\treturn \"SSH_FXP_FSETSTAT\"\n\tcase PacketTypeOpenDir:\n\t\treturn \"SSH_FXP_OPENDIR\"\n\tcase PacketTypeReadDir:\n\t\treturn \"SSH_FXP_READDIR\"\n\tcase PacketTypeRemove:\n\t\treturn \"SSH_FXP_REMOVE\"\n\tcase PacketTypeMkdir:\n\t\treturn \"SSH_FXP_MKDIR\"\n\tcase PacketTypeRmdir:\n\t\treturn \"SSH_FXP_RMDIR\"\n\tcase PacketTypeRealPath:\n\t\treturn \"SSH_FXP_REALPATH\"\n\tcase PacketTypeStat:\n\t\treturn \"SSH_FXP_STAT\"\n\tcase PacketTypeRename:\n\t\treturn \"SSH_FXP_RENAME\"\n\tcase PacketTypeReadLink:\n\t\treturn \"SSH_FXP_READLINK\"\n\tcase PacketTypeSymlink:\n\t\treturn \"SSH_FXP_SYMLINK\"\n\tcase PacketTypeV6Link:\n\t\treturn \"SSH_FXP_LINK\"\n\tcase PacketTypeV6Block:\n\t\treturn \"SSH_FXP_BLOCK\"\n\tcase PacketTypeV6Unblock:\n\t\treturn \"SSH_FXP_UNBLOCK\"\n\tcase PacketTypeStatus:\n\t\treturn \"SSH_FXP_STATUS\"\n\tcase PacketTypeHandle:\n\t\treturn \"SSH_FXP_HANDLE\"\n\tcase PacketTypeData:\n\t\treturn \"SSH_FXP_DATA\"\n\tcase PacketTypeName:\n\t\treturn \"SSH_FXP_NAME\"\n\tcase PacketTypeAttrs:\n\t\treturn \"SSH_FXP_ATTRS\"\n\tcase PacketTypeExtended:\n\t\treturn \"SSH_FXP_EXTENDED\"\n\tcase PacketTypeExtendedReply:\n\t\treturn \"SSH_FXP_EXTENDED_REPLY\"\n\tdefault:\n\t\treturn fmt.Sprintf(\"SSH_FXP_UNKNOWN(%d)\", f)\n\t}\n}\n\nfunc newPacketFromType(typ PacketType) (Packet, error) {\n\tswitch typ {\n\tcase PacketTypeOpen:\n\t\treturn new(OpenPacket), nil\n\tcase PacketTypeClose:\n\t\treturn new(ClosePacket), nil\n\tcase PacketTypeRead:\n\t\treturn new(ReadPacket), nil\n\tcase PacketTypeWrite:\n\t\treturn new(WritePacket), nil\n\tcase PacketTypeLStat:\n\t\treturn new(LStatPacket), nil\n\tcase PacketTypeFStat:\n\t\treturn new(FStatPacket), nil\n\tcase PacketTypeSetstat:\n\t\treturn new(SetstatPacket), nil\n\tcase PacketTypeFSetstat:\n\t\treturn new(FSetstatPacket), nil\n\tcase PacketTypeOpenDir:\n\t\treturn new(OpenDirPacket), nil\n\tcase PacketTypeReadDir:\n\t\treturn new(ReadDirPacket), nil\n\tcase PacketTypeRemove:\n\t\treturn new(RemovePacket), nil\n\tcase PacketTypeMkdir:\n\t\treturn new(MkdirPacket), nil\n\tcase PacketTypeRmdir:\n\t\treturn new(RmdirPacket), nil\n\tcase PacketTypeRealPath:\n\t\treturn new(RealPathPacket), nil\n\tcase PacketTypeStat:\n\t\treturn new(StatPacket), nil\n\tcase PacketTypeRename:\n\t\treturn new(RenamePacket), nil\n\tcase PacketTypeReadLink:\n\t\treturn new(ReadLinkPacket), nil\n\tcase PacketTypeSymlink:\n\t\treturn new(SymlinkPacket), nil\n\tcase PacketTypeExtended:\n\t\treturn new(ExtendedPacket), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unexpected request packet type: %v\", typ)\n\t}\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/handle_packets.go",
    "content": "package sshfx\n\n// ClosePacket defines the SSH_FXP_CLOSE packet.\ntype ClosePacket struct {\n\tHandle string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ClosePacket) Type() PacketType {\n\treturn PacketTypeClose\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *ClosePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Handle) // string(handle)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeClose, reqid)\n\tbuf.AppendString(p.Handle)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *ClosePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = ClosePacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// ReadPacket defines the SSH_FXP_READ packet.\ntype ReadPacket struct {\n\tHandle string\n\tOffset uint64\n\tLength uint32\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ReadPacket) Type() PacketType {\n\treturn PacketTypeRead\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *ReadPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// string(handle) + uint64(offset) + uint32(len)\n\t\tsize := 4 + len(p.Handle) + 8 + 4\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeRead, reqid)\n\tbuf.AppendString(p.Handle)\n\tbuf.AppendUint64(p.Offset)\n\tbuf.AppendUint32(p.Length)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *ReadPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = ReadPacket{\n\t\tHandle: buf.ConsumeString(),\n\t\tOffset: buf.ConsumeUint64(),\n\t\tLength: buf.ConsumeUint32(),\n\t}\n\n\treturn buf.Err\n}\n\n// WritePacket defines the SSH_FXP_WRITE packet.\ntype WritePacket struct {\n\tHandle string\n\tOffset uint64\n\tData   []byte\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *WritePacket) Type() PacketType {\n\treturn PacketTypeWrite\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *WritePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// string(handle) + uint64(offset) + uint32(len(data)); data content in payload\n\t\tsize := 4 + len(p.Handle) + 8 + 4\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeWrite, reqid)\n\tbuf.AppendString(p.Handle)\n\tbuf.AppendUint64(p.Offset)\n\tbuf.AppendUint32(uint32(len(p.Data)))\n\n\treturn buf.Packet(p.Data)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\n//\n// If p.Data is already populated, and of sufficient length to hold the data,\n// then this will copy the data into that byte slice.\n//\n// If p.Data has a length insufficient to hold the data,\n// then this will make a new slice of sufficient length, and copy the data into that.\n//\n// This means this _does not_ alias any of the data buffer that is passed in.\nfunc (p *WritePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = WritePacket{\n\t\tHandle: buf.ConsumeString(),\n\t\tOffset: buf.ConsumeUint64(),\n\t\tData:   buf.ConsumeByteSliceCopy(p.Data),\n\t}\n\n\treturn buf.Err\n}\n\n// FStatPacket defines the SSH_FXP_FSTAT packet.\ntype FStatPacket struct {\n\tHandle string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *FStatPacket) Type() PacketType {\n\treturn PacketTypeFStat\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *FStatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Handle) // string(handle)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeFStat, reqid)\n\tbuf.AppendString(p.Handle)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *FStatPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = FStatPacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// FSetstatPacket defines the SSH_FXP_FSETSTAT packet.\ntype FSetstatPacket struct {\n\tHandle string\n\tAttrs  Attributes\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *FSetstatPacket) Type() PacketType {\n\treturn PacketTypeFSetstat\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *FSetstatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Handle) + p.Attrs.Len() // string(handle) + ATTRS(attrs)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeFSetstat, reqid)\n\tbuf.AppendString(p.Handle)\n\n\tp.Attrs.MarshalInto(buf)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *FSetstatPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = FSetstatPacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn p.Attrs.UnmarshalFrom(buf)\n}\n\n// ReadDirPacket defines the SSH_FXP_READDIR packet.\ntype ReadDirPacket struct {\n\tHandle string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ReadDirPacket) Type() PacketType {\n\treturn PacketTypeReadDir\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *ReadDirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Handle) // string(handle)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeReadDir, reqid)\n\tbuf.AppendString(p.Handle)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *ReadDirPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = ReadDirPacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/init_packets.go",
    "content": "package sshfx\n\n// InitPacket defines the SSH_FXP_INIT packet.\ntype InitPacket struct {\n\tVersion    uint32\n\tExtensions []*ExtensionPair\n}\n\n// MarshalBinary returns p as the binary encoding of p.\nfunc (p *InitPacket) MarshalBinary() ([]byte, error) {\n\tsize := 1 + 4 // byte(type) + uint32(version)\n\n\tfor _, ext := range p.Extensions {\n\t\tsize += ext.Len()\n\t}\n\n\tb := NewBuffer(make([]byte, 4, 4+size))\n\tb.AppendUint8(uint8(PacketTypeInit))\n\tb.AppendUint32(p.Version)\n\n\tfor _, ext := range p.Extensions {\n\t\text.MarshalInto(b)\n\t}\n\n\tb.PutLength(size)\n\n\treturn b.Bytes(), nil\n}\n\n// UnmarshalBinary unmarshals a full raw packet out of the given data.\n// It is assumed that the uint32(length) has already been consumed to receive the data.\n// It is also assumed that the uint8(type) has already been consumed to which packet to unmarshal into.\nfunc (p *InitPacket) UnmarshalBinary(data []byte) (err error) {\n\tbuf := NewBuffer(data)\n\n\t*p = InitPacket{\n\t\tVersion: buf.ConsumeUint32(),\n\t}\n\n\tfor buf.Len() > 0 {\n\t\tvar ext ExtensionPair\n\t\tif err := ext.UnmarshalFrom(buf); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tp.Extensions = append(p.Extensions, &ext)\n\t}\n\n\treturn buf.Err\n}\n\n// VersionPacket defines the SSH_FXP_VERSION packet.\ntype VersionPacket struct {\n\tVersion    uint32\n\tExtensions []*ExtensionPair\n}\n\n// MarshalBinary returns p as the binary encoding of p.\nfunc (p *VersionPacket) MarshalBinary() ([]byte, error) {\n\tsize := 1 + 4 // byte(type) + uint32(version)\n\n\tfor _, ext := range p.Extensions {\n\t\tsize += ext.Len()\n\t}\n\n\tb := NewBuffer(make([]byte, 4, 4+size))\n\tb.AppendUint8(uint8(PacketTypeVersion))\n\tb.AppendUint32(p.Version)\n\n\tfor _, ext := range p.Extensions {\n\t\text.MarshalInto(b)\n\t}\n\n\tb.PutLength(size)\n\n\treturn b.Bytes(), nil\n}\n\n// UnmarshalBinary unmarshals a full raw packet out of the given data.\n// It is assumed that the uint32(length) has already been consumed to receive the data.\n// It is also assumed that the uint8(type) has already been consumed to which packet to unmarshal into.\nfunc (p *VersionPacket) UnmarshalBinary(data []byte) (err error) {\n\tbuf := NewBuffer(data)\n\n\t*p = VersionPacket{\n\t\tVersion: buf.ConsumeUint32(),\n\t}\n\n\tfor buf.Len() > 0 {\n\t\tvar ext ExtensionPair\n\t\tif err := ext.UnmarshalFrom(buf); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tp.Extensions = append(p.Extensions, &ext)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/open_packets.go",
    "content": "package sshfx\n\n// SSH_FXF_* flags.\nconst (\n\tFlagRead      = 1 << iota // SSH_FXF_READ\n\tFlagWrite                 // SSH_FXF_WRITE\n\tFlagAppend                // SSH_FXF_APPEND\n\tFlagCreate                // SSH_FXF_CREAT\n\tFlagTruncate              // SSH_FXF_TRUNC\n\tFlagExclusive             // SSH_FXF_EXCL\n)\n\n// OpenPacket defines the SSH_FXP_OPEN packet.\ntype OpenPacket struct {\n\tFilename string\n\tPFlags   uint32\n\tAttrs    Attributes\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *OpenPacket) Type() PacketType {\n\treturn PacketTypeOpen\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *OpenPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// string(filename) + uint32(pflags) + ATTRS(attrs)\n\t\tsize := 4 + len(p.Filename) + 4 + p.Attrs.Len()\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeOpen, reqid)\n\tbuf.AppendString(p.Filename)\n\tbuf.AppendUint32(p.PFlags)\n\n\tp.Attrs.MarshalInto(buf)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *OpenPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = OpenPacket{\n\t\tFilename: buf.ConsumeString(),\n\t\tPFlags:   buf.ConsumeUint32(),\n\t}\n\n\treturn p.Attrs.UnmarshalFrom(buf)\n}\n\n// OpenDirPacket defines the SSH_FXP_OPENDIR packet.\ntype OpenDirPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *OpenDirPacket) Type() PacketType {\n\treturn PacketTypeOpenDir\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *OpenDirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeOpenDir, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *OpenDirPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = OpenDirPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/openssh/fsync.go",
    "content": "package openssh\n\nimport (\n\tsshfx \"gossh/sftp/internal/encoding/ssh/filexfer\"\n)\n\nconst extensionFSync = \"fsync@openssh.com\"\n\n// RegisterExtensionFSync registers the \"fsync@openssh.com\" extended packet with the encoding/ssh/filexfer package.\nfunc RegisterExtensionFSync() {\n\tsshfx.RegisterExtendedPacketType(extensionFSync, func() sshfx.ExtendedData {\n\t\treturn new(FSyncExtendedPacket)\n\t})\n}\n\n// ExtensionFSync returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket.\nfunc ExtensionFSync() *sshfx.ExtensionPair {\n\treturn &sshfx.ExtensionPair{\n\t\tName: extensionFSync,\n\t\tData: \"1\",\n\t}\n}\n\n// FSyncExtendedPacket defines the fsync@openssh.com extend packet.\ntype FSyncExtendedPacket struct {\n\tHandle string\n}\n\n// Type returns the SSH_FXP_EXTENDED packet type.\nfunc (ep *FSyncExtendedPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtended\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended packet.\nfunc (ep *FSyncExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedPacket{\n\t\tExtendedRequest: extensionFSync,\n\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// MarshalInto encodes ep into the binary encoding of the fsync@openssh.com extended packet-specific data.\nfunc (ep *FSyncExtendedPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendString(ep.Handle)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the fsync@openssh.com extended packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet.\nfunc (ep *FSyncExtendedPacket) MarshalBinary() ([]byte, error) {\n\t// string(handle)\n\tsize := 4 + len(ep.Handle)\n\n\tbuf := sshfx.NewBuffer(make([]byte, 0, size))\n\tep.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the fsync@openssh.com extended packet-specific data from buf.\nfunc (ep *FSyncExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = FSyncExtendedPacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the fsync@openssh.com extended packet-specific data into ep.\nfunc (ep *FSyncExtendedPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/openssh/hardlink.go",
    "content": "package openssh\n\nimport (\n\tsshfx \"gossh/sftp/internal/encoding/ssh/filexfer\"\n)\n\nconst extensionHardlink = \"hardlink@openssh.com\"\n\n// RegisterExtensionHardlink registers the \"hardlink@openssh.com\" extended packet with the encoding/ssh/filexfer package.\nfunc RegisterExtensionHardlink() {\n\tsshfx.RegisterExtendedPacketType(extensionHardlink, func() sshfx.ExtendedData {\n\t\treturn new(HardlinkExtendedPacket)\n\t})\n}\n\n// ExtensionHardlink returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket.\nfunc ExtensionHardlink() *sshfx.ExtensionPair {\n\treturn &sshfx.ExtensionPair{\n\t\tName: extensionHardlink,\n\t\tData: \"1\",\n\t}\n}\n\n// HardlinkExtendedPacket defines the hardlink@openssh.com extend packet.\ntype HardlinkExtendedPacket struct {\n\tOldPath string\n\tNewPath string\n}\n\n// Type returns the SSH_FXP_EXTENDED packet type.\nfunc (ep *HardlinkExtendedPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtended\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended packet.\nfunc (ep *HardlinkExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedPacket{\n\t\tExtendedRequest: extensionHardlink,\n\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// MarshalInto encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data.\nfunc (ep *HardlinkExtendedPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendString(ep.OldPath)\n\tbuf.AppendString(ep.NewPath)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet.\nfunc (ep *HardlinkExtendedPacket) MarshalBinary() ([]byte, error) {\n\t// string(oldpath) + string(newpath)\n\tsize := 4 + len(ep.OldPath) + 4 + len(ep.NewPath)\n\n\tbuf := sshfx.NewBuffer(make([]byte, 0, size))\n\tep.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the hardlink@openssh.com extended packet-specific data from buf.\nfunc (ep *HardlinkExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = HardlinkExtendedPacket{\n\t\tOldPath: buf.ConsumeString(),\n\t\tNewPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the hardlink@openssh.com extended packet-specific data into ep.\nfunc (ep *HardlinkExtendedPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/openssh/openssh.go",
    "content": "// Package openssh implements the openssh secsh-filexfer extensions as described in https://github.com/openssh/openssh-portable/blob/master/PROTOCOL\npackage openssh\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/openssh/posix-rename.go",
    "content": "package openssh\n\nimport (\n\tsshfx \"gossh/sftp/internal/encoding/ssh/filexfer\"\n)\n\nconst extensionPOSIXRename = \"posix-rename@openssh.com\"\n\n// RegisterExtensionPOSIXRename registers the \"posix-rename@openssh.com\" extended packet with the encoding/ssh/filexfer package.\nfunc RegisterExtensionPOSIXRename() {\n\tsshfx.RegisterExtendedPacketType(extensionPOSIXRename, func() sshfx.ExtendedData {\n\t\treturn new(POSIXRenameExtendedPacket)\n\t})\n}\n\n// ExtensionPOSIXRename returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket.\nfunc ExtensionPOSIXRename() *sshfx.ExtensionPair {\n\treturn &sshfx.ExtensionPair{\n\t\tName: extensionPOSIXRename,\n\t\tData: \"1\",\n\t}\n}\n\n// POSIXRenameExtendedPacket defines the posix-rename@openssh.com extend packet.\ntype POSIXRenameExtendedPacket struct {\n\tOldPath string\n\tNewPath string\n}\n\n// Type returns the SSH_FXP_EXTENDED packet type.\nfunc (ep *POSIXRenameExtendedPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtended\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended packet.\nfunc (ep *POSIXRenameExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedPacket{\n\t\tExtendedRequest: extensionPOSIXRename,\n\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// MarshalInto encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data.\nfunc (ep *POSIXRenameExtendedPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendString(ep.OldPath)\n\tbuf.AppendString(ep.NewPath)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the hardlink@openssh.com extended packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet.\nfunc (ep *POSIXRenameExtendedPacket) MarshalBinary() ([]byte, error) {\n\t// string(oldpath) + string(newpath)\n\tsize := 4 + len(ep.OldPath) + 4 + len(ep.NewPath)\n\n\tbuf := sshfx.NewBuffer(make([]byte, 0, size))\n\tep.MarshalInto(buf)\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the hardlink@openssh.com extended packet-specific data from buf.\nfunc (ep *POSIXRenameExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = POSIXRenameExtendedPacket{\n\t\tOldPath: buf.ConsumeString(),\n\t\tNewPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the hardlink@openssh.com extended packet-specific data into ep.\nfunc (ep *POSIXRenameExtendedPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/openssh/statvfs.go",
    "content": "package openssh\n\nimport (\n\tsshfx \"gossh/sftp/internal/encoding/ssh/filexfer\"\n)\n\nconst extensionStatVFS = \"statvfs@openssh.com\"\n\n// RegisterExtensionStatVFS registers the \"statvfs@openssh.com\" extended packet with the encoding/ssh/filexfer package.\nfunc RegisterExtensionStatVFS() {\n\tsshfx.RegisterExtendedPacketType(extensionStatVFS, func() sshfx.ExtendedData {\n\t\treturn new(StatVFSExtendedPacket)\n\t})\n}\n\n// ExtensionStatVFS returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket.\nfunc ExtensionStatVFS() *sshfx.ExtensionPair {\n\treturn &sshfx.ExtensionPair{\n\t\tName: extensionStatVFS,\n\t\tData: \"2\",\n\t}\n}\n\n// StatVFSExtendedPacket defines the statvfs@openssh.com extend packet.\ntype StatVFSExtendedPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_EXTENDED packet type.\nfunc (ep *StatVFSExtendedPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtended\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended packet.\nfunc (ep *StatVFSExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedPacket{\n\t\tExtendedRequest: extensionStatVFS,\n\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// MarshalInto encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data.\nfunc (ep *StatVFSExtendedPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendString(ep.Path)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet.\nfunc (ep *StatVFSExtendedPacket) MarshalBinary() ([]byte, error) {\n\tsize := 4 + len(ep.Path) // string(path)\n\n\tbuf := sshfx.NewBuffer(make([]byte, 0, size))\n\n\tep.MarshalInto(buf)\n\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the statvfs@openssh.com extended packet-specific data into ep.\nfunc (ep *StatVFSExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = StatVFSExtendedPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the statvfs@openssh.com extended packet-specific data into ep.\nfunc (ep *StatVFSExtendedPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n\nconst extensionFStatVFS = \"fstatvfs@openssh.com\"\n\n// RegisterExtensionFStatVFS registers the \"fstatvfs@openssh.com\" extended packet with the encoding/ssh/filexfer package.\nfunc RegisterExtensionFStatVFS() {\n\tsshfx.RegisterExtendedPacketType(extensionFStatVFS, func() sshfx.ExtendedData {\n\t\treturn new(FStatVFSExtendedPacket)\n\t})\n}\n\n// ExtensionFStatVFS returns an ExtensionPair suitable to append into an sshfx.InitPacket or sshfx.VersionPacket.\nfunc ExtensionFStatVFS() *sshfx.ExtensionPair {\n\treturn &sshfx.ExtensionPair{\n\t\tName: extensionFStatVFS,\n\t\tData: \"2\",\n\t}\n}\n\n// FStatVFSExtendedPacket defines the fstatvfs@openssh.com extend packet.\ntype FStatVFSExtendedPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_EXTENDED packet type.\nfunc (ep *FStatVFSExtendedPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtended\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended packet.\nfunc (ep *FStatVFSExtendedPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedPacket{\n\t\tExtendedRequest: extensionFStatVFS,\n\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// MarshalInto encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data.\nfunc (ep *FStatVFSExtendedPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendString(ep.Path)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the statvfs@openssh.com extended packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended packet.\nfunc (ep *FStatVFSExtendedPacket) MarshalBinary() ([]byte, error) {\n\tsize := 4 + len(ep.Path) // string(path)\n\n\tbuf := sshfx.NewBuffer(make([]byte, 0, size))\n\n\tep.MarshalInto(buf)\n\n\treturn buf.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the statvfs@openssh.com extended packet-specific data into ep.\nfunc (ep *FStatVFSExtendedPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = FStatVFSExtendedPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the statvfs@openssh.com extended packet-specific data into ep.\nfunc (ep *FStatVFSExtendedPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n\n// The values for the MountFlags field.\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL\nconst (\n\tMountFlagsReadOnly = 0x1 // SSH_FXE_STATVFS_ST_RDONLY\n\tMountFlagsNoSUID   = 0x2 // SSH_FXE_STATVFS_ST_NOSUID\n)\n\n// StatVFSExtendedReplyPacket defines the extended reply packet for statvfs@openssh.com and fstatvfs@openssh.com requests.\ntype StatVFSExtendedReplyPacket struct {\n\tBlockSize     uint64 /* f_bsize:   file system block size */\n\tFragmentSize  uint64 /* f_frsize:  fundamental sftpfs block size / fagment size */\n\tBlocks        uint64 /* f_blocks:  number of blocks (unit f_frsize) */\n\tBlocksFree    uint64 /* f_bfree:   free blocks in filesystem */\n\tBlocksAvail   uint64 /* f_bavail:  free blocks for non-root */\n\tFiles         uint64 /* f_files:   total file inodes */\n\tFilesFree     uint64 /* f_ffree:   free file inodes */\n\tFilesAvail    uint64 /* f_favail:  free file inodes for to non-root */\n\tFilesystemID  uint64 /* f_fsid:    file system id */\n\tMountFlags    uint64 /* f_flag:    bit mask of mount flag values */\n\tMaxNameLength uint64 /* f_namemax: maximum filename length */\n}\n\n// Type returns the SSH_FXP_EXTENDED_REPLY packet type.\nfunc (ep *StatVFSExtendedReplyPacket) Type() sshfx.PacketType {\n\treturn sshfx.PacketTypeExtendedReply\n}\n\n// MarshalPacket returns ep as a two-part binary encoding of the full extended reply packet.\nfunc (ep *StatVFSExtendedReplyPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tp := &sshfx.ExtendedReplyPacket{\n\t\tData: ep,\n\t}\n\treturn p.MarshalPacket(reqid, b)\n}\n\n// UnmarshalPacketBody returns ep as a two-part binary encoding of the full extended reply packet.\nfunc (ep *StatVFSExtendedReplyPacket) UnmarshalPacketBody(buf *sshfx.Buffer) (err error) {\n\tp := &sshfx.ExtendedReplyPacket{\n\t\tData: ep,\n\t}\n\treturn p.UnmarshalPacketBody(buf)\n}\n\n// MarshalInto encodes ep into the binary encoding of the (f)statvfs@openssh.com extended reply packet-specific data.\nfunc (ep *StatVFSExtendedReplyPacket) MarshalInto(buf *sshfx.Buffer) {\n\tbuf.AppendUint64(ep.BlockSize)\n\tbuf.AppendUint64(ep.FragmentSize)\n\tbuf.AppendUint64(ep.Blocks)\n\tbuf.AppendUint64(ep.BlocksFree)\n\tbuf.AppendUint64(ep.BlocksAvail)\n\tbuf.AppendUint64(ep.Files)\n\tbuf.AppendUint64(ep.FilesFree)\n\tbuf.AppendUint64(ep.FilesAvail)\n\tbuf.AppendUint64(ep.FilesystemID)\n\tbuf.AppendUint64(ep.MountFlags)\n\tbuf.AppendUint64(ep.MaxNameLength)\n}\n\n// MarshalBinary encodes ep into the binary encoding of the (f)statvfs@openssh.com extended reply packet-specific data.\n//\n// NOTE: This _only_ encodes the packet-specific data, it does not encode the full extended reply packet.\nfunc (ep *StatVFSExtendedReplyPacket) MarshalBinary() ([]byte, error) {\n\tsize := 11 * 8 // 11 × uint64(various)\n\n\tb := sshfx.NewBuffer(make([]byte, 0, size))\n\tep.MarshalInto(b)\n\treturn b.Bytes(), nil\n}\n\n// UnmarshalFrom decodes the fstatvfs@openssh.com extended reply packet-specific data into ep.\nfunc (ep *StatVFSExtendedReplyPacket) UnmarshalFrom(buf *sshfx.Buffer) (err error) {\n\t*ep = StatVFSExtendedReplyPacket{\n\t\tBlockSize:     buf.ConsumeUint64(),\n\t\tFragmentSize:  buf.ConsumeUint64(),\n\t\tBlocks:        buf.ConsumeUint64(),\n\t\tBlocksFree:    buf.ConsumeUint64(),\n\t\tBlocksAvail:   buf.ConsumeUint64(),\n\t\tFiles:         buf.ConsumeUint64(),\n\t\tFilesFree:     buf.ConsumeUint64(),\n\t\tFilesAvail:    buf.ConsumeUint64(),\n\t\tFilesystemID:  buf.ConsumeUint64(),\n\t\tMountFlags:    buf.ConsumeUint64(),\n\t\tMaxNameLength: buf.ConsumeUint64(),\n\t}\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes the fstatvfs@openssh.com extended reply packet-specific data into ep.\nfunc (ep *StatVFSExtendedReplyPacket) UnmarshalBinary(data []byte) (err error) {\n\treturn ep.UnmarshalFrom(sshfx.NewBuffer(data))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/packets.go",
    "content": "package sshfx\n\nimport (\n\t\"errors\"\n\t\"io\"\n)\n\n// smallBufferSize is an initial allocation minimal capacity.\nconst smallBufferSize = 64\n\n// RawPacket implements the general packet format from draft-ietf-secsh-filexfer-02\n//\n// RawPacket is intended for use in clients receiving responses,\n// where a response will be expected to be of a limited number of types,\n// and unmarshaling unknown/unexpected response packets is unnecessary.\n//\n// For servers expecting to receive arbitrary request packet types,\n// use RequestPacket.\n//\n// Defined in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3\ntype RawPacket struct {\n\tPacketType PacketType\n\tRequestID  uint32\n\n\tData Buffer\n}\n\n// Type returns the Type field defining the SSH_FXP_xy type for this packet.\nfunc (p *RawPacket) Type() PacketType {\n\treturn p.PacketType\n}\n\n// Reset clears the pointers and reference-semantic variables of RawPacket,\n// releasing underlying resources, and making them and the RawPacket suitable to be reused,\n// so long as no other references have been kept.\nfunc (p *RawPacket) Reset() {\n\tp.Data = Buffer{}\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\n//\n// The internal p.RequestID is overridden by the reqid argument.\nfunc (p *RawPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tbuf = NewMarshalBuffer(0)\n\t}\n\n\tbuf.StartPacket(p.PacketType, reqid)\n\n\treturn buf.Packet(p.Data.Bytes())\n}\n\n// MarshalBinary returns p as the binary encoding of p.\n//\n// This is a convenience implementation primarily intended for tests,\n// because it is inefficient with allocations.\nfunc (p *RawPacket) MarshalBinary() ([]byte, error) {\n\treturn ComposePacket(p.MarshalPacket(p.RequestID, nil))\n}\n\n// UnmarshalFrom decodes a RawPacket from the given Buffer into p.\n//\n// The Data field will alias the passed in Buffer,\n// so the buffer passed in should not be reused before RawPacket.Reset().\nfunc (p *RawPacket) UnmarshalFrom(buf *Buffer) error {\n\t*p = RawPacket{\n\t\tPacketType: PacketType(buf.ConsumeUint8()),\n\t\tRequestID:  buf.ConsumeUint32(),\n\t}\n\n\tp.Data = *buf\n\n\treturn buf.Err\n}\n\n// UnmarshalBinary decodes a full raw packet out of the given data.\n// It is assumed that the uint32(length) has already been consumed to receive the data.\n//\n// This is a convenience implementation primarily intended for tests,\n// because this must clone the given data byte slice,\n// as Data is not allowed to alias any part of the data byte slice.\nfunc (p *RawPacket) UnmarshalBinary(data []byte) error {\n\tclone := make([]byte, len(data))\n\tn := copy(clone, data)\n\treturn p.UnmarshalFrom(NewBuffer(clone[:n]))\n}\n\n// readPacket reads a uint32 length-prefixed binary data packet from r.\n// using the given byte slice as a backing array.\n//\n// If the packet length read from r is bigger than maxPacketLength,\n// or greater than math.MaxInt32 on a 32-bit implementation,\n// then a `ErrLongPacket` error will be returned.\n//\n// If the given byte slice is insufficient to hold the packet,\n// then it will be extended to fill the packet size.\nfunc readPacket(r io.Reader, b []byte, maxPacketLength uint32) ([]byte, error) {\n\tif cap(b) < 4 {\n\t\t// We will need allocate our own buffer just for reading the packet length.\n\n\t\t// However, we don’t really want to allocate an extremely narrow buffer (4-bytes),\n\t\t// and cause unnecessary allocation churn from both length reads and small packet reads,\n\t\t// so we use smallBufferSize from the bytes package as a reasonable guess.\n\n\t\t// But if callers really do want to force narrow throw-away allocation of every packet body,\n\t\t// they can do so with a buffer of capacity 4.\n\t\tb = make([]byte, smallBufferSize)\n\t}\n\n\tif _, err := io.ReadFull(r, b[:4]); err != nil {\n\t\treturn nil, err\n\t}\n\n\tlength := unmarshalUint32(b)\n\tif int(length) < 5 {\n\t\t// Must have at least uint8(type) and uint32(request-id)\n\n\t\tif int(length) < 0 {\n\t\t\t// Only possible when strconv.IntSize == 32,\n\t\t\t// the packet length is longer than math.MaxInt32,\n\t\t\t// and thus longer than any possible slice.\n\t\t\treturn nil, ErrLongPacket\n\t\t}\n\n\t\treturn nil, ErrShortPacket\n\t}\n\tif length > maxPacketLength {\n\t\treturn nil, ErrLongPacket\n\t}\n\n\tif int(length) > cap(b) {\n\t\t// We know int(length) must be positive, because of tests above.\n\t\tb = make([]byte, length)\n\t}\n\n\tn, err := io.ReadFull(r, b[:length])\n\treturn b[:n], err\n}\n\n// ReadFrom provides a simple functional packet reader,\n// using the given byte slice as a backing array.\n//\n// To protect against potential denial of service attacks,\n// if the read packet length is longer than maxPacketLength,\n// then no packet data will be read, and ErrLongPacket will be returned.\n// (On 32-bit int architectures, all packets >= 2^31 in length\n// will return ErrLongPacket regardless of maxPacketLength.)\n//\n// If the read packet length is longer than cap(b),\n// then a throw-away slice will allocated to meet the exact packet length.\n// This can be used to limit the length of reused buffers,\n// while still allowing reception of occasional large packets.\n//\n// The Data field may alias the passed in byte slice,\n// so the byte slice passed in should not be reused before RawPacket.Reset().\nfunc (p *RawPacket) ReadFrom(r io.Reader, b []byte, maxPacketLength uint32) error {\n\tb, err := readPacket(r, b, maxPacketLength)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn p.UnmarshalFrom(NewBuffer(b))\n}\n\n// RequestPacket implements the general packet format from draft-ietf-secsh-filexfer-02\n// but also automatically decode/encodes valid request packets (2 < type < 100 || type == 200).\n//\n// RequestPacket is intended for use in servers receiving requests,\n// where any arbitrary request may be received, and so decoding them automatically\n// is useful.\n//\n// For clients expecting to receive specific response packet types,\n// where automatic unmarshaling of the packet body does not make sense,\n// use RawPacket.\n//\n// Defined in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-3\ntype RequestPacket struct {\n\tRequestID uint32\n\n\tRequest Packet\n}\n\n// Type returns the SSH_FXP_xy value associated with the underlying packet.\nfunc (p *RequestPacket) Type() PacketType {\n\treturn p.Request.Type()\n}\n\n// Reset clears the pointers and reference-semantic variables in RequestPacket,\n// releasing underlying resources, and making them and the RequestPacket suitable to be reused,\n// so long as no other references have been kept.\nfunc (p *RequestPacket) Reset() {\n\tp.Request = nil\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\n//\n// The internal p.RequestID is overridden by the reqid argument.\nfunc (p *RequestPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tif p.Request == nil {\n\t\treturn nil, nil, errors.New(\"empty request packet\")\n\t}\n\n\treturn p.Request.MarshalPacket(reqid, b)\n}\n\n// MarshalBinary returns p as the binary encoding of p.\n//\n// This is a convenience implementation primarily intended for tests,\n// because it is inefficient with allocations.\nfunc (p *RequestPacket) MarshalBinary() ([]byte, error) {\n\treturn ComposePacket(p.MarshalPacket(p.RequestID, nil))\n}\n\n// UnmarshalFrom decodes a RequestPacket from the given Buffer into p.\n//\n// The Request field may alias the passed in Buffer, (e.g. SSH_FXP_WRITE),\n// so the buffer passed in should not be reused before RequestPacket.Reset().\nfunc (p *RequestPacket) UnmarshalFrom(buf *Buffer) error {\n\ttyp := PacketType(buf.ConsumeUint8())\n\tif buf.Err != nil {\n\t\treturn buf.Err\n\t}\n\n\treq, err := newPacketFromType(typ)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*p = RequestPacket{\n\t\tRequestID: buf.ConsumeUint32(),\n\t\tRequest:   req,\n\t}\n\n\treturn p.Request.UnmarshalPacketBody(buf)\n}\n\n// UnmarshalBinary decodes a full request packet out of the given data.\n// It is assumed that the uint32(length) has already been consumed to receive the data.\n//\n// This is a convenience implementation primarily intended for tests,\n// because this must clone the given data byte slice,\n// as Request is not allowed to alias any part of the data byte slice.\nfunc (p *RequestPacket) UnmarshalBinary(data []byte) error {\n\tclone := make([]byte, len(data))\n\tn := copy(clone, data)\n\treturn p.UnmarshalFrom(NewBuffer(clone[:n]))\n}\n\n// ReadFrom provides a simple functional packet reader,\n// using the given byte slice as a backing array.\n//\n// To protect against potential denial of service attacks,\n// if the read packet length is longer than maxPacketLength,\n// then no packet data will be read, and ErrLongPacket will be returned.\n// (On 32-bit int architectures, all packets >= 2^31 in length\n// will return ErrLongPacket regardless of maxPacketLength.)\n//\n// If the read packet length is longer than cap(b),\n// then a throw-away slice will allocated to meet the exact packet length.\n// This can be used to limit the length of reused buffers,\n// while still allowing reception of occasional large packets.\n//\n// The Request field may alias the passed in byte slice,\n// so the byte slice passed in should not be reused before RawPacket.Reset().\nfunc (p *RequestPacket) ReadFrom(r io.Reader, b []byte, maxPacketLength uint32) error {\n\tb, err := readPacket(r, b, maxPacketLength)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn p.UnmarshalFrom(NewBuffer(b))\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/path_packets.go",
    "content": "package sshfx\n\n// LStatPacket defines the SSH_FXP_LSTAT packet.\ntype LStatPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *LStatPacket) Type() PacketType {\n\treturn PacketTypeLStat\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *LStatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeLStat, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *LStatPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = LStatPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// SetstatPacket defines the SSH_FXP_SETSTAT packet.\ntype SetstatPacket struct {\n\tPath  string\n\tAttrs Attributes\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *SetstatPacket) Type() PacketType {\n\treturn PacketTypeSetstat\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *SetstatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) + p.Attrs.Len() // string(path) + ATTRS(attrs)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeSetstat, reqid)\n\tbuf.AppendString(p.Path)\n\n\tp.Attrs.MarshalInto(buf)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *SetstatPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = SetstatPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn p.Attrs.UnmarshalFrom(buf)\n}\n\n// RemovePacket defines the SSH_FXP_REMOVE packet.\ntype RemovePacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *RemovePacket) Type() PacketType {\n\treturn PacketTypeRemove\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *RemovePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeRemove, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *RemovePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = RemovePacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// MkdirPacket defines the SSH_FXP_MKDIR packet.\ntype MkdirPacket struct {\n\tPath  string\n\tAttrs Attributes\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *MkdirPacket) Type() PacketType {\n\treturn PacketTypeMkdir\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *MkdirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) + p.Attrs.Len() // string(path) + ATTRS(attrs)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeMkdir, reqid)\n\tbuf.AppendString(p.Path)\n\n\tp.Attrs.MarshalInto(buf)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *MkdirPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = MkdirPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn p.Attrs.UnmarshalFrom(buf)\n}\n\n// RmdirPacket defines the SSH_FXP_RMDIR packet.\ntype RmdirPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *RmdirPacket) Type() PacketType {\n\treturn PacketTypeRmdir\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *RmdirPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeRmdir, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *RmdirPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = RmdirPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// RealPathPacket defines the SSH_FXP_REALPATH packet.\ntype RealPathPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *RealPathPacket) Type() PacketType {\n\treturn PacketTypeRealPath\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *RealPathPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeRealPath, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *RealPathPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = RealPathPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// StatPacket defines the SSH_FXP_STAT packet.\ntype StatPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *StatPacket) Type() PacketType {\n\treturn PacketTypeStat\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *StatPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeStat, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *StatPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = StatPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// RenamePacket defines the SSH_FXP_RENAME packet.\ntype RenamePacket struct {\n\tOldPath string\n\tNewPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *RenamePacket) Type() PacketType {\n\treturn PacketTypeRename\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *RenamePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// string(oldpath) + string(newpath)\n\t\tsize := 4 + len(p.OldPath) + 4 + len(p.NewPath)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeRename, reqid)\n\tbuf.AppendString(p.OldPath)\n\tbuf.AppendString(p.NewPath)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *RenamePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = RenamePacket{\n\t\tOldPath: buf.ConsumeString(),\n\t\tNewPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// ReadLinkPacket defines the SSH_FXP_READLINK packet.\ntype ReadLinkPacket struct {\n\tPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *ReadLinkPacket) Type() PacketType {\n\treturn PacketTypeReadLink\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *ReadLinkPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Path) // string(path)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeReadLink, reqid)\n\tbuf.AppendString(p.Path)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *ReadLinkPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = ReadLinkPacket{\n\t\tPath: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// SymlinkPacket defines the SSH_FXP_SYMLINK packet.\n//\n// The order of the arguments to the SSH_FXP_SYMLINK method was inadvertently reversed.\n// Unfortunately, the reversal was not noticed until the server was widely deployed.\n// Covered in Section 4.1 of https://github.com/openssh/openssh-portable/blob/master/PROTOCOL\ntype SymlinkPacket struct {\n\tLinkPath   string\n\tTargetPath string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *SymlinkPacket) Type() PacketType {\n\treturn PacketTypeSymlink\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *SymlinkPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// string(targetpath) + string(linkpath)\n\t\tsize := 4 + len(p.TargetPath) + 4 + len(p.LinkPath)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeSymlink, reqid)\n\n\t// Arguments were inadvertently reversed.\n\tbuf.AppendString(p.TargetPath)\n\tbuf.AppendString(p.LinkPath)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *SymlinkPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = SymlinkPacket{\n\t\t// Arguments were inadvertently reversed.\n\t\tTargetPath: buf.ConsumeString(),\n\t\tLinkPath:   buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/permissions.go",
    "content": "package sshfx\n\n// FileMode represents a file’s mode and permission bits.\n// The bits are defined according to POSIX standards,\n// and may not apply to the OS being built for.\ntype FileMode uint32\n\n// Permission flags, defined here to avoid potential inconsistencies in individual OS implementations.\nconst (\n\tModePerm       FileMode = 0o0777 // S_IRWXU | S_IRWXG | S_IRWXO\n\tModeUserRead   FileMode = 0o0400 // S_IRUSR\n\tModeUserWrite  FileMode = 0o0200 // S_IWUSR\n\tModeUserExec   FileMode = 0o0100 // S_IXUSR\n\tModeGroupRead  FileMode = 0o0040 // S_IRGRP\n\tModeGroupWrite FileMode = 0o0020 // S_IWGRP\n\tModeGroupExec  FileMode = 0o0010 // S_IXGRP\n\tModeOtherRead  FileMode = 0o0004 // S_IROTH\n\tModeOtherWrite FileMode = 0o0002 // S_IWOTH\n\tModeOtherExec  FileMode = 0o0001 // S_IXOTH\n\n\tModeSetUID FileMode = 0o4000 // S_ISUID\n\tModeSetGID FileMode = 0o2000 // S_ISGID\n\tModeSticky FileMode = 0o1000 // S_ISVTX\n\n\tModeType       FileMode = 0xF000 // S_IFMT\n\tModeNamedPipe  FileMode = 0x1000 // S_IFIFO\n\tModeCharDevice FileMode = 0x2000 // S_IFCHR\n\tModeDir        FileMode = 0x4000 // S_IFDIR\n\tModeDevice     FileMode = 0x6000 // S_IFBLK\n\tModeRegular    FileMode = 0x8000 // S_IFREG\n\tModeSymlink    FileMode = 0xA000 // S_IFLNK\n\tModeSocket     FileMode = 0xC000 // S_IFSOCK\n)\n\n// IsDir reports whether m describes a directory.\n// That is, it tests for m.Type() == ModeDir.\nfunc (m FileMode) IsDir() bool {\n\treturn (m & ModeType) == ModeDir\n}\n\n// IsRegular reports whether m describes a regular file.\n// That is, it tests for m.Type() == ModeRegular\nfunc (m FileMode) IsRegular() bool {\n\treturn (m & ModeType) == ModeRegular\n}\n\n// Perm returns the POSIX permission bits in m (m & ModePerm).\nfunc (m FileMode) Perm() FileMode {\n\treturn (m & ModePerm)\n}\n\n// Type returns the type bits in m (m & ModeType).\nfunc (m FileMode) Type() FileMode {\n\treturn (m & ModeType)\n}\n\n// String returns a `-rwxrwxrwx` style string representing the `ls -l` POSIX permissions string.\nfunc (m FileMode) String() string {\n\tvar buf [10]byte\n\n\tswitch m.Type() {\n\tcase ModeRegular:\n\t\tbuf[0] = '-'\n\tcase ModeDir:\n\t\tbuf[0] = 'd'\n\tcase ModeSymlink:\n\t\tbuf[0] = 'l'\n\tcase ModeDevice:\n\t\tbuf[0] = 'b'\n\tcase ModeCharDevice:\n\t\tbuf[0] = 'c'\n\tcase ModeNamedPipe:\n\t\tbuf[0] = 'p'\n\tcase ModeSocket:\n\t\tbuf[0] = 's'\n\tdefault:\n\t\tbuf[0] = '?'\n\t}\n\n\tconst rwx = \"rwxrwxrwx\"\n\tfor i, c := range rwx {\n\t\tif m&(1<<uint(9-1-i)) != 0 {\n\t\t\tbuf[i+1] = byte(c)\n\t\t} else {\n\t\t\tbuf[i+1] = '-'\n\t\t}\n\t}\n\n\tif m&ModeSetUID != 0 {\n\t\tif buf[3] == 'x' {\n\t\t\tbuf[3] = 's'\n\t\t} else {\n\t\t\tbuf[3] = 'S'\n\t\t}\n\t}\n\n\tif m&ModeSetGID != 0 {\n\t\tif buf[6] == 'x' {\n\t\t\tbuf[6] = 's'\n\t\t} else {\n\t\t\tbuf[6] = 'S'\n\t\t}\n\t}\n\n\tif m&ModeSticky != 0 {\n\t\tif buf[9] == 'x' {\n\t\t\tbuf[9] = 't'\n\t\t} else {\n\t\t\tbuf[9] = 'T'\n\t\t}\n\t}\n\n\treturn string(buf[:])\n}\n"
  },
  {
    "path": "gossh/sftp/internal/encoding/ssh/filexfer/response_packets.go",
    "content": "package sshfx\n\nimport (\n\t\"fmt\"\n)\n\n// StatusPacket defines the SSH_FXP_STATUS packet.\n//\n// Specified in https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt#section-7\ntype StatusPacket struct {\n\tStatusCode   Status\n\tErrorMessage string\n\tLanguageTag  string\n}\n\n// Error makes StatusPacket an error type.\nfunc (p *StatusPacket) Error() string {\n\tif p.ErrorMessage == \"\" {\n\t\treturn \"sftp: \" + p.StatusCode.String()\n\t}\n\n\treturn fmt.Sprintf(\"sftp: %s: %q\", p.StatusCode, p.ErrorMessage)\n}\n\n// Is returns true if target is a StatusPacket with the same StatusCode,\n// or target is a Status code which is the same as SatusCode.\nfunc (p *StatusPacket) Is(target error) bool {\n\tif target, ok := target.(*StatusPacket); ok {\n\t\treturn p.StatusCode == target.StatusCode\n\t}\n\n\treturn p.StatusCode == target\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *StatusPacket) Type() PacketType {\n\treturn PacketTypeStatus\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *StatusPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\t// uint32(error/status code) + string(error message) + string(language tag)\n\t\tsize := 4 + 4 + len(p.ErrorMessage) + 4 + len(p.LanguageTag)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeStatus, reqid)\n\tbuf.AppendUint32(uint32(p.StatusCode))\n\tbuf.AppendString(p.ErrorMessage)\n\tbuf.AppendString(p.LanguageTag)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *StatusPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = StatusPacket{\n\t\tStatusCode:   Status(buf.ConsumeUint32()),\n\t\tErrorMessage: buf.ConsumeString(),\n\t\tLanguageTag:  buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// HandlePacket defines the SSH_FXP_HANDLE packet.\ntype HandlePacket struct {\n\tHandle string\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *HandlePacket) Type() PacketType {\n\treturn PacketTypeHandle\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *HandlePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 + len(p.Handle) // string(handle)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeHandle, reqid)\n\tbuf.AppendString(p.Handle)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *HandlePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = HandlePacket{\n\t\tHandle: buf.ConsumeString(),\n\t}\n\n\treturn buf.Err\n}\n\n// DataPacket defines the SSH_FXP_DATA packet.\ntype DataPacket struct {\n\tData []byte\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *DataPacket) Type() PacketType {\n\treturn PacketTypeData\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *DataPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 // uint32(len(data)); data content in payload\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeData, reqid)\n\tbuf.AppendUint32(uint32(len(p.Data)))\n\n\treturn buf.Packet(p.Data)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\n//\n// If p.Data is already populated, and of sufficient length to hold the data,\n// then this will copy the data into that byte slice.\n//\n// If p.Data has a length insufficient to hold the data,\n// then this will make a new slice of sufficient length, and copy the data into that.\n//\n// This means this _does not_ alias any of the data buffer that is passed in.\nfunc (p *DataPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\t*p = DataPacket{\n\t\tData: buf.ConsumeByteSliceCopy(p.Data),\n\t}\n\n\treturn buf.Err\n}\n\n// NamePacket defines the SSH_FXP_NAME packet.\ntype NamePacket struct {\n\tEntries []*NameEntry\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *NamePacket) Type() PacketType {\n\treturn PacketTypeName\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *NamePacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := 4 // uint32(len(entries))\n\n\t\tfor _, e := range p.Entries {\n\t\t\tsize += e.Len()\n\t\t}\n\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeName, reqid)\n\tbuf.AppendUint32(uint32(len(p.Entries)))\n\n\tfor _, e := range p.Entries {\n\t\te.MarshalInto(buf)\n\t}\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *NamePacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\tcount := buf.ConsumeCount()\n\tif buf.Err != nil {\n\t\treturn buf.Err\n\t}\n\n\t*p = NamePacket{\n\t\tEntries: make([]*NameEntry, 0, count),\n\t}\n\n\tfor i := 0; i < count; i++ {\n\t\tvar e NameEntry\n\t\tif err := e.UnmarshalFrom(buf); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tp.Entries = append(p.Entries, &e)\n\t}\n\n\treturn buf.Err\n}\n\n// AttrsPacket defines the SSH_FXP_ATTRS packet.\ntype AttrsPacket struct {\n\tAttrs Attributes\n}\n\n// Type returns the SSH_FXP_xy value associated with this packet type.\nfunc (p *AttrsPacket) Type() PacketType {\n\treturn PacketTypeAttrs\n}\n\n// MarshalPacket returns p as a two-part binary encoding of p.\nfunc (p *AttrsPacket) MarshalPacket(reqid uint32, b []byte) (header, payload []byte, err error) {\n\tbuf := NewBuffer(b)\n\tif buf.Cap() < 9 {\n\t\tsize := p.Attrs.Len() // ATTRS(attrs)\n\t\tbuf = NewMarshalBuffer(size)\n\t}\n\n\tbuf.StartPacket(PacketTypeAttrs, reqid)\n\tp.Attrs.MarshalInto(buf)\n\n\treturn buf.Packet(payload)\n}\n\n// UnmarshalPacketBody unmarshals the packet body from the given Buffer.\n// It is assumed that the uint32(request-id) has already been consumed.\nfunc (p *AttrsPacket) UnmarshalPacketBody(buf *Buffer) (err error) {\n\treturn p.Attrs.UnmarshalFrom(buf)\n}\n"
  },
  {
    "path": "gossh/sftp/internal/sftpfs/filesystem.go",
    "content": "package sftpfs\n\nimport (\n\t\"os\"\n\t\"path/filepath\"\n\t\"sort\"\n)\n\n// FileSystem defines the methods of an abstract filesystem.\ntype FileSystem interface {\n\n\t// ReadDir reads the directory named by dirname and returns a\n\t// list of directory entries.\n\tReadDir(dirname string) ([]os.FileInfo, error)\n\n\t// Lstat returns a FileInfo describing the named file. If the file is a\n\t// symbolic link, the returned FileInfo describes the symbolic link. Lstat\n\t// makes no attempt to follow the link.\n\tLstat(name string) (os.FileInfo, error)\n\n\t// Join joins any number of path elements into a single path, adding a\n\t// separator if necessary. The result is Cleaned; in particular, all\n\t// empty strings are ignored.\n\t//\n\t// The separator is FileSystem specific.\n\tJoin(elem ...string) string\n}\n\nfunc ReadDir(dirname string) ([]os.FileInfo, error) {\n\tf, err := os.Open(dirname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tlist, err := f.Readdir(-1)\n\tf.Close()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tsort.Slice(list, func(i, j int) bool { return list[i].Name() < list[j].Name() })\n\treturn list, nil\n}\n\n// fs represents a FileSystem provided by the os package.\ntype fs struct{}\n\nfunc (f *fs) ReadDir(dirname string) ([]os.FileInfo, error) { return ReadDir(dirname) }\n\nfunc (f *fs) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) }\n\nfunc (f *fs) Join(elem ...string) string { return filepath.Join(elem...) }\n"
  },
  {
    "path": "gossh/sftp/internal/sftpfs/walk.go",
    "content": "// Package sftpfs provides filesystem-related functions.\npackage sftpfs\n\nimport (\n\t\"os\"\n)\n\n// Walker provides a convenient interface for iterating over the\n// descendants of a filesystem path.\n// Successive calls to the Step method will step through each\n// file or directory in the tree, including the root. The files\n// are walked in lexical order, which makes the output deterministic\n// but means that for very large directories Walker can be inefficient.\n// Walker does not follow symbolic links.\ntype Walker struct {\n\tfs      FileSystem\n\tcur     item\n\tstack   []item\n\tdescend bool\n}\n\ntype item struct {\n\tpath string\n\tinfo os.FileInfo\n\terr  error\n}\n\n// Walk returns a new Walker rooted at root.\nfunc Walk(root string) *Walker {\n\treturn WalkFS(root, new(fs))\n}\n\n// WalkFS returns a new Walker rooted at root on the FileSystem sftpfs.\nfunc WalkFS(root string, fs FileSystem) *Walker {\n\tinfo, err := fs.Lstat(root)\n\treturn &Walker{\n\t\tfs:    fs,\n\t\tstack: []item{{root, info, err}},\n\t}\n}\n\n// Step advances the Walker to the next file or directory,\n// which will then be available through the Path, Stat,\n// and Err methods.\n// It returns false when the walk stops at the end of the tree.\nfunc (w *Walker) Step() bool {\n\tif w.descend && w.cur.err == nil && w.cur.info.IsDir() {\n\t\tlist, err := w.fs.ReadDir(w.cur.path)\n\t\tif err != nil {\n\t\t\tw.cur.err = err\n\t\t\tw.stack = append(w.stack, w.cur)\n\t\t} else {\n\t\t\tfor i := len(list) - 1; i >= 0; i-- {\n\t\t\t\tpath := w.fs.Join(w.cur.path, list[i].Name())\n\t\t\t\tw.stack = append(w.stack, item{path, list[i], nil})\n\t\t\t}\n\t\t}\n\t}\n\n\tif len(w.stack) == 0 {\n\t\treturn false\n\t}\n\ti := len(w.stack) - 1\n\tw.cur = w.stack[i]\n\tw.stack = w.stack[:i]\n\tw.descend = true\n\treturn true\n}\n\n// Path returns the path to the most recent file or directory\n// visited by a call to Step. It contains the argument to Walk\n// as a prefix; that is, if Walk is called with \"dir\", which is\n// a directory containing the file \"a\", Path will return \"dir/a\".\nfunc (w *Walker) Path() string {\n\treturn w.cur.path\n}\n\n// Stat returns info for the most recent file or directory\n// visited by a call to Step.\nfunc (w *Walker) Stat() os.FileInfo {\n\treturn w.cur.info\n}\n\n// Err returns the error, if any, for the most recent attempt\n// by Step to visit a file or directory. If a directory has\n// an error, w will not descend into that directory.\nfunc (w *Walker) Err() error {\n\treturn w.cur.err\n}\n\n// SkipDir causes the currently visited directory to be skipped.\n// If w is not on a directory, SkipDir has no effect.\nfunc (w *Walker) SkipDir() {\n\tw.descend = false\n}\n"
  },
  {
    "path": "gossh/sftp/ls_formatting.go",
    "content": "package sftp\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/user\"\n\t\"strconv\"\n\t\"time\"\n\n\tsshfx \"gossh/sftp/internal/encoding/ssh/filexfer\"\n)\n\nfunc lsFormatID(id uint32) string {\n\treturn strconv.FormatUint(uint64(id), 10)\n}\n\ntype osIDLookup struct{}\n\nfunc (osIDLookup) Filelist(*Request) (ListerAt, error) {\n\treturn nil, errors.New(\"unimplemented stub\")\n}\n\nfunc (osIDLookup) LookupUserName(uid string) string {\n\tu, err := user.LookupId(uid)\n\tif err != nil {\n\t\treturn uid\n\t}\n\n\treturn u.Username\n}\n\nfunc (osIDLookup) LookupGroupName(gid string) string {\n\tg, err := user.LookupGroupId(gid)\n\tif err != nil {\n\t\treturn gid\n\t}\n\n\treturn g.Name\n}\n\n// runLs formats the FileInfo as per `ls -l` style, which is in the 'longname' field of a SSH_FXP_NAME entry.\n// This is a fairly simple implementation, just enough to look close to openssh in simple cases.\nfunc runLs(idLookup NameLookupFileLister, dirent os.FileInfo) string {\n\t// example from openssh sftp server:\n\t// crw-rw-rw-    1 root     wheel           0 Jul 31 20:52 ttyvd\n\t// format:\n\t// {directory / char device / etc}{rwxrwxrwx}  {number of links} owner group size month day [time (this year) | year (otherwise)] name\n\n\tsymPerms := sshfx.FileMode(fromFileMode(dirent.Mode())).String()\n\n\tvar numLinks uint64 = 1\n\tuid, gid := \"0\", \"0\"\n\n\tswitch sys := dirent.Sys().(type) {\n\tcase *sshfx.Attributes:\n\t\tuid = lsFormatID(sys.UID)\n\t\tgid = lsFormatID(sys.GID)\n\tcase *FileStat:\n\t\tuid = lsFormatID(sys.UID)\n\t\tgid = lsFormatID(sys.GID)\n\tdefault:\n\t\tif fiExt, ok := dirent.(FileInfoUidGid); ok {\n\t\t\tuid = lsFormatID(fiExt.Uid())\n\t\t\tgid = lsFormatID(fiExt.Gid())\n\n\t\t\tbreak\n\t\t}\n\n\t\tnumLinks, uid, gid = lsLinksUIDGID(dirent)\n\t}\n\n\tif idLookup != nil {\n\t\tuid, gid = idLookup.LookupUserName(uid), idLookup.LookupGroupName(gid)\n\t}\n\n\tmtime := dirent.ModTime()\n\tdate := mtime.Format(\"Jan 2\")\n\n\tvar yearOrTime string\n\tif mtime.Before(time.Now().AddDate(0, -6, 0)) {\n\t\tyearOrTime = mtime.Format(\"2006\")\n\t} else {\n\t\tyearOrTime = mtime.Format(\"15:04\")\n\t}\n\n\treturn fmt.Sprintf(\"%s %4d %-8s %-8s %8d %s %5s %s\", symPerms, numLinks, uid, gid, dirent.Size(), date, yearOrTime, dirent.Name())\n}\n"
  },
  {
    "path": "gossh/sftp/ls_plan9.go",
    "content": "//go:build plan9\n// +build plan9\n\npackage sftp\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nfunc lsLinksUIDGID(fi os.FileInfo) (numLinks uint64, uid, gid string) {\n\tnumLinks = 1\n\tuid, gid = \"0\", \"0\"\n\n\tswitch sys := fi.Sys().(type) {\n\tcase *syscall.Dir:\n\t\tuid = sys.Uid\n\t\tgid = sys.Gid\n\t}\n\n\treturn numLinks, uid, gid\n}\n"
  },
  {
    "path": "gossh/sftp/ls_stub.go",
    "content": "//go:build windows || android\n// +build windows android\n\npackage sftp\n\nimport (\n\t\"os\"\n)\n\nfunc lsLinksUIDGID(fi os.FileInfo) (numLinks uint64, uid, gid string) {\n\treturn 1, \"0\", \"0\"\n}\n"
  },
  {
    "path": "gossh/sftp/ls_unix.go",
    "content": "//go:build aix || darwin || dragonfly || freebsd || (!android && linux) || netbsd || openbsd || solaris || js || zos\n// +build aix darwin dragonfly freebsd !android,linux netbsd openbsd solaris js zos\n\npackage sftp\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nfunc lsLinksUIDGID(fi os.FileInfo) (numLinks uint64, uid, gid string) {\n\tnumLinks = 1\n\tuid, gid = \"0\", \"0\"\n\n\tswitch sys := fi.Sys().(type) {\n\tcase *syscall.Stat_t:\n\t\tnumLinks = uint64(sys.Nlink)\n\t\tuid = lsFormatID(sys.Uid)\n\t\tgid = lsFormatID(sys.Gid)\n\tdefault:\n\t}\n\n\treturn numLinks, uid, gid\n}\n"
  },
  {
    "path": "gossh/sftp/match.go",
    "content": "package sftp\n\nimport (\n\t\"path\"\n\t\"strings\"\n)\n\n// ErrBadPattern indicates a globbing pattern was malformed.\nvar ErrBadPattern = path.ErrBadPattern\n\n// Match reports whether name matches the shell pattern.\n//\n// This is an alias for path.Match from the standard library,\n// offered so that callers need not import the path package.\n// For details, see https://golang.org/pkg/path/#Match.\nfunc Match(pattern, name string) (matched bool, err error) {\n\treturn path.Match(pattern, name)\n}\n\n// detect if byte(char) is path separator\nfunc isPathSeparator(c byte) bool {\n\treturn c == '/'\n}\n\n// Split splits the path p immediately following the final slash,\n// separating it into a directory and file name component.\n//\n// This is an alias for path.Split from the standard library,\n// offered so that callers need not import the path package.\n// For details, see https://golang.org/pkg/path/#Split.\nfunc Split(p string) (dir, file string) {\n\treturn path.Split(p)\n}\n\n// Glob returns the names of all files matching pattern or nil\n// if there is no matching file. The syntax of patterns is the same\n// as in Match. The pattern may describe hierarchical names such as\n// /usr/*/bin/ed.\n//\n// Glob ignores file system errors such as I/O errors reading directories.\n// The only possible returned error is ErrBadPattern, when pattern\n// is malformed.\nfunc (c *Client) Glob(pattern string) (matches []string, err error) {\n\tif !hasMeta(pattern) {\n\t\tfile, err := c.Lstat(pattern)\n\t\tif err != nil {\n\t\t\treturn nil, nil\n\t\t}\n\t\tdir, _ := Split(pattern)\n\t\tdir = cleanGlobPath(dir)\n\t\treturn []string{Join(dir, file.Name())}, nil\n\t}\n\n\tdir, file := Split(pattern)\n\tdir = cleanGlobPath(dir)\n\n\tif !hasMeta(dir) {\n\t\treturn c.glob(dir, file, nil)\n\t}\n\n\t// Prevent infinite recursion. See issue 15879.\n\tif dir == pattern {\n\t\treturn nil, ErrBadPattern\n\t}\n\n\tvar m []string\n\tm, err = c.Glob(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tfor _, d := range m {\n\t\tmatches, err = c.glob(d, file, matches)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn\n}\n\n// cleanGlobPath prepares path for glob matching.\nfunc cleanGlobPath(path string) string {\n\tswitch path {\n\tcase \"\":\n\t\treturn \".\"\n\tcase \"/\":\n\t\treturn path\n\tdefault:\n\t\treturn path[0 : len(path)-1] // chop off trailing separator\n\t}\n}\n\n// glob searches for files matching pattern in the directory dir\n// and appends them to matches. If the directory cannot be\n// opened, it returns the existing matches. New matches are\n// added in lexicographical order.\nfunc (c *Client) glob(dir, pattern string, matches []string) (m []string, e error) {\n\tm = matches\n\tfi, err := c.Stat(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\tif !fi.IsDir() {\n\t\treturn\n\t}\n\tnames, err := c.ReadDir(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t//sort.Strings(names)\n\n\tfor _, n := range names {\n\t\tmatched, err := Match(pattern, n.Name())\n\t\tif err != nil {\n\t\t\treturn m, err\n\t\t}\n\t\tif matched {\n\t\t\tm = append(m, Join(dir, n.Name()))\n\t\t}\n\t}\n\treturn\n}\n\n// Join joins any number of path elements into a single path, separating\n// them with slashes.\n//\n// This is an alias for path.Join from the standard library,\n// offered so that callers need not import the path package.\n// For details, see https://golang.org/pkg/path/#Join.\nfunc Join(elem ...string) string {\n\treturn path.Join(elem...)\n}\n\n// hasMeta reports whether path contains any of the magic characters\n// recognized by Match.\nfunc hasMeta(path string) bool {\n\treturn strings.ContainsAny(path, \"\\\\*?[\")\n}\n"
  },
  {
    "path": "gossh/sftp/packet-manager.go",
    "content": "package sftp\n\nimport (\n\t\"encoding\"\n\t\"sort\"\n\t\"sync\"\n)\n\n// The goal of the packetManager is to keep the outgoing packets in the same\n// order as the incoming as is requires by section 7 of the RFC.\n\ntype packetManager struct {\n\trequests    chan orderedPacket\n\tresponses   chan orderedPacket\n\tfini        chan struct{}\n\tincoming    orderedPackets\n\toutgoing    orderedPackets\n\tsender      packetSender // connection object\n\tworking     *sync.WaitGroup\n\tpacketCount uint32\n\t// it is not nil if the allocator is enabled\n\talloc *allocator\n}\n\ntype packetSender interface {\n\tsendPacket(encoding.BinaryMarshaler) error\n}\n\nfunc newPktMgr(sender packetSender) *packetManager {\n\ts := &packetManager{\n\t\trequests:  make(chan orderedPacket, SftpServerWorkerCount),\n\t\tresponses: make(chan orderedPacket, SftpServerWorkerCount),\n\t\tfini:      make(chan struct{}),\n\t\tincoming:  make([]orderedPacket, 0, SftpServerWorkerCount),\n\t\toutgoing:  make([]orderedPacket, 0, SftpServerWorkerCount),\n\t\tsender:    sender,\n\t\tworking:   &sync.WaitGroup{},\n\t}\n\tgo s.controller()\n\treturn s\n}\n\n// // packet ordering\nfunc (s *packetManager) newOrderID() uint32 {\n\ts.packetCount++\n\treturn s.packetCount\n}\n\n// returns the next orderID without incrementing it.\n// This is used before receiving a new packet, with the allocator enabled, to associate\n// the slice allocated for the received packet with the orderID that will be used to mark\n// the allocated slices for reuse once the request is served\nfunc (s *packetManager) getNextOrderID() uint32 {\n\treturn s.packetCount + 1\n}\n\ntype orderedRequest struct {\n\trequestPacket\n\torderid uint32\n}\n\nfunc (s *packetManager) newOrderedRequest(p requestPacket) orderedRequest {\n\treturn orderedRequest{requestPacket: p, orderid: s.newOrderID()}\n}\nfunc (p orderedRequest) orderID() uint32       { return p.orderid }\nfunc (p orderedRequest) setOrderID(oid uint32) { p.orderid = oid }\n\ntype orderedResponse struct {\n\tresponsePacket\n\torderid uint32\n}\n\nfunc (s *packetManager) newOrderedResponse(p responsePacket, id uint32,\n) orderedResponse {\n\treturn orderedResponse{responsePacket: p, orderid: id}\n}\nfunc (p orderedResponse) orderID() uint32       { return p.orderid }\nfunc (p orderedResponse) setOrderID(oid uint32) { p.orderid = oid }\n\ntype orderedPacket interface {\n\tid() uint32\n\torderID() uint32\n}\ntype orderedPackets []orderedPacket\n\nfunc (o orderedPackets) Sort() {\n\tsort.Slice(o, func(i, j int) bool {\n\t\treturn o[i].orderID() < o[j].orderID()\n\t})\n}\n\n// // packet registry\n// register incoming packets to be handled\nfunc (s *packetManager) incomingPacket(pkt orderedRequest) {\n\ts.working.Add(1)\n\ts.requests <- pkt\n}\n\n// register outgoing packets as being ready\nfunc (s *packetManager) readyPacket(pkt orderedResponse) {\n\ts.responses <- pkt\n\ts.working.Done()\n}\n\n// shut down packetManager controller\nfunc (s *packetManager) close() {\n\t// pause until current packets are processed\n\ts.working.Wait()\n\tclose(s.fini)\n}\n\n// Passed a worker function, returns a channel for incoming packets.\n// Keep process packet responses in the order they are received while\n// maximizing throughput of file transfers.\nfunc (s *packetManager) workerChan(runWorker func(chan orderedRequest),\n) chan orderedRequest {\n\t// multiple workers for faster read/writes\n\trwChan := make(chan orderedRequest, SftpServerWorkerCount)\n\tfor i := 0; i < SftpServerWorkerCount; i++ {\n\t\trunWorker(rwChan)\n\t}\n\n\t// single worker to enforce sequential processing of everything else\n\tcmdChan := make(chan orderedRequest)\n\trunWorker(cmdChan)\n\n\tpktChan := make(chan orderedRequest, SftpServerWorkerCount)\n\tgo func() {\n\t\tfor pkt := range pktChan {\n\t\t\tswitch pkt.requestPacket.(type) {\n\t\t\tcase *sshFxpReadPacket, *sshFxpWritePacket:\n\t\t\t\ts.incomingPacket(pkt)\n\t\t\t\trwChan <- pkt\n\t\t\t\tcontinue\n\t\t\tcase *sshFxpClosePacket:\n\t\t\t\t// wait for reads/writes to finish when file is closed\n\t\t\t\t// incomingPacket() call must occur after this\n\t\t\t\ts.working.Wait()\n\t\t\t}\n\t\t\ts.incomingPacket(pkt)\n\t\t\t// all non-RW use sequential cmdChan\n\t\t\tcmdChan <- pkt\n\t\t}\n\t\tclose(rwChan)\n\t\tclose(cmdChan)\n\t\ts.close()\n\t}()\n\n\treturn pktChan\n}\n\n// process packets\nfunc (s *packetManager) controller() {\n\tfor {\n\t\tselect {\n\t\tcase pkt := <-s.requests:\n\t\t\tdebug(\"incoming id (oid): %v (%v)\", pkt.id(), pkt.orderID())\n\t\t\ts.incoming = append(s.incoming, pkt)\n\t\t\ts.incoming.Sort()\n\t\tcase pkt := <-s.responses:\n\t\t\tdebug(\"outgoing id (oid): %v (%v)\", pkt.id(), pkt.orderID())\n\t\t\ts.outgoing = append(s.outgoing, pkt)\n\t\t\ts.outgoing.Sort()\n\t\tcase <-s.fini:\n\t\t\treturn\n\t\t}\n\t\ts.maybeSendPackets()\n\t}\n}\n\n// send as many packets as are ready\nfunc (s *packetManager) maybeSendPackets() {\n\tfor {\n\t\tif len(s.outgoing) == 0 || len(s.incoming) == 0 {\n\t\t\tdebug(\"break! -- outgoing: %v; incoming: %v\",\n\t\t\t\tlen(s.outgoing), len(s.incoming))\n\t\t\tbreak\n\t\t}\n\t\tout := s.outgoing[0]\n\t\tin := s.incoming[0]\n\t\t// debug(\"incoming: %v\", ids(s.incoming))\n\t\t// debug(\"outgoing: %v\", ids(s.outgoing))\n\t\tif in.orderID() == out.orderID() {\n\t\t\tdebug(\"Sending packet: %v\", out.id())\n\t\t\ts.sender.sendPacket(out.(encoding.BinaryMarshaler))\n\t\t\tif s.alloc != nil {\n\t\t\t\t// mark for reuse the slices allocated for this request\n\t\t\t\ts.alloc.ReleasePages(in.orderID())\n\t\t\t}\n\t\t\t// pop off heads\n\t\t\tcopy(s.incoming, s.incoming[1:])            // shift left\n\t\t\ts.incoming[len(s.incoming)-1] = nil         // clear last\n\t\t\ts.incoming = s.incoming[:len(s.incoming)-1] // remove last\n\t\t\tcopy(s.outgoing, s.outgoing[1:])            // shift left\n\t\t\ts.outgoing[len(s.outgoing)-1] = nil         // clear last\n\t\t\ts.outgoing = s.outgoing[:len(s.outgoing)-1] // remove last\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n}\n\n// func oids(o []orderedPacket) []uint32 {\n// \tres := make([]uint32, 0, len(o))\n// \tfor _, v := range o {\n// \t\tres = append(res, v.orderId())\n// \t}\n// \treturn res\n// }\n// func ids(o []orderedPacket) []uint32 {\n// \tres := make([]uint32, 0, len(o))\n// \tfor _, v := range o {\n// \t\tres = append(res, v.id())\n// \t}\n// \treturn res\n// }\n"
  },
  {
    "path": "gossh/sftp/packet-typing.go",
    "content": "package sftp\n\nimport (\n\t\"encoding\"\n\t\"fmt\"\n)\n\n// all incoming packets\ntype requestPacket interface {\n\tencoding.BinaryUnmarshaler\n\tid() uint32\n}\n\ntype responsePacket interface {\n\tencoding.BinaryMarshaler\n\tid() uint32\n}\n\n// interfaces to group types\ntype hasPath interface {\n\trequestPacket\n\tgetPath() string\n}\n\ntype hasHandle interface {\n\trequestPacket\n\tgetHandle() string\n}\n\ntype notReadOnly interface {\n\tnotReadOnly()\n}\n\n// // define types by adding methods\n// hasPath\nfunc (p *sshFxpLstatPacket) getPath() string    { return p.Path }\nfunc (p *sshFxpStatPacket) getPath() string     { return p.Path }\nfunc (p *sshFxpRmdirPacket) getPath() string    { return p.Path }\nfunc (p *sshFxpReadlinkPacket) getPath() string { return p.Path }\nfunc (p *sshFxpRealpathPacket) getPath() string { return p.Path }\nfunc (p *sshFxpMkdirPacket) getPath() string    { return p.Path }\nfunc (p *sshFxpSetstatPacket) getPath() string  { return p.Path }\nfunc (p *sshFxpStatvfsPacket) getPath() string  { return p.Path }\nfunc (p *sshFxpRemovePacket) getPath() string   { return p.Filename }\nfunc (p *sshFxpRenamePacket) getPath() string   { return p.Oldpath }\nfunc (p *sshFxpSymlinkPacket) getPath() string  { return p.Targetpath }\nfunc (p *sshFxpOpendirPacket) getPath() string  { return p.Path }\nfunc (p *sshFxpOpenPacket) getPath() string     { return p.Path }\n\nfunc (p *sshFxpExtendedPacketPosixRename) getPath() string { return p.Oldpath }\nfunc (p *sshFxpExtendedPacketHardlink) getPath() string    { return p.Oldpath }\n\n// getHandle\nfunc (p *sshFxpFstatPacket) getHandle() string    { return p.Handle }\nfunc (p *sshFxpFsetstatPacket) getHandle() string { return p.Handle }\nfunc (p *sshFxpReadPacket) getHandle() string     { return p.Handle }\nfunc (p *sshFxpWritePacket) getHandle() string    { return p.Handle }\nfunc (p *sshFxpReaddirPacket) getHandle() string  { return p.Handle }\nfunc (p *sshFxpClosePacket) getHandle() string    { return p.Handle }\n\n// notReadOnly\nfunc (p *sshFxpWritePacket) notReadOnly()               {}\nfunc (p *sshFxpSetstatPacket) notReadOnly()             {}\nfunc (p *sshFxpFsetstatPacket) notReadOnly()            {}\nfunc (p *sshFxpRemovePacket) notReadOnly()              {}\nfunc (p *sshFxpMkdirPacket) notReadOnly()               {}\nfunc (p *sshFxpRmdirPacket) notReadOnly()               {}\nfunc (p *sshFxpRenamePacket) notReadOnly()              {}\nfunc (p *sshFxpSymlinkPacket) notReadOnly()             {}\nfunc (p *sshFxpExtendedPacketPosixRename) notReadOnly() {}\nfunc (p *sshFxpExtendedPacketHardlink) notReadOnly()    {}\n\n// some packets with ID are missing id()\nfunc (p *sshFxpDataPacket) id() uint32   { return p.ID }\nfunc (p *sshFxpStatusPacket) id() uint32 { return p.ID }\nfunc (p *sshFxpStatResponse) id() uint32 { return p.ID }\nfunc (p *sshFxpNamePacket) id() uint32   { return p.ID }\nfunc (p *sshFxpHandlePacket) id() uint32 { return p.ID }\nfunc (p *StatVFS) id() uint32            { return p.ID }\nfunc (p *sshFxVersionPacket) id() uint32 { return 0 }\n\n// take raw incoming packet data and build packet objects\nfunc makePacket(p rxPacket) (requestPacket, error) {\n\tvar pkt requestPacket\n\tswitch p.pktType {\n\tcase sshFxpInit:\n\t\tpkt = &sshFxInitPacket{}\n\tcase sshFxpLstat:\n\t\tpkt = &sshFxpLstatPacket{}\n\tcase sshFxpOpen:\n\t\tpkt = &sshFxpOpenPacket{}\n\tcase sshFxpClose:\n\t\tpkt = &sshFxpClosePacket{}\n\tcase sshFxpRead:\n\t\tpkt = &sshFxpReadPacket{}\n\tcase sshFxpWrite:\n\t\tpkt = &sshFxpWritePacket{}\n\tcase sshFxpFstat:\n\t\tpkt = &sshFxpFstatPacket{}\n\tcase sshFxpSetstat:\n\t\tpkt = &sshFxpSetstatPacket{}\n\tcase sshFxpFsetstat:\n\t\tpkt = &sshFxpFsetstatPacket{}\n\tcase sshFxpOpendir:\n\t\tpkt = &sshFxpOpendirPacket{}\n\tcase sshFxpReaddir:\n\t\tpkt = &sshFxpReaddirPacket{}\n\tcase sshFxpRemove:\n\t\tpkt = &sshFxpRemovePacket{}\n\tcase sshFxpMkdir:\n\t\tpkt = &sshFxpMkdirPacket{}\n\tcase sshFxpRmdir:\n\t\tpkt = &sshFxpRmdirPacket{}\n\tcase sshFxpRealpath:\n\t\tpkt = &sshFxpRealpathPacket{}\n\tcase sshFxpStat:\n\t\tpkt = &sshFxpStatPacket{}\n\tcase sshFxpRename:\n\t\tpkt = &sshFxpRenamePacket{}\n\tcase sshFxpReadlink:\n\t\tpkt = &sshFxpReadlinkPacket{}\n\tcase sshFxpSymlink:\n\t\tpkt = &sshFxpSymlinkPacket{}\n\tcase sshFxpExtended:\n\t\tpkt = &sshFxpExtendedPacket{}\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"unhandled packet type: %s\", p.pktType)\n\t}\n\tif err := pkt.UnmarshalBinary(p.pktBytes); err != nil {\n\t\t// Return partially unpacked packet to allow callers to return\n\t\t// error messages appropriately with necessary id() method.\n\t\treturn pkt, err\n\t}\n\treturn pkt, nil\n}\n"
  },
  {
    "path": "gossh/sftp/packet.go",
    "content": "package sftp\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"reflect\"\n)\n\nvar (\n\terrLongPacket            = errors.New(\"packet too long\")\n\terrShortPacket           = errors.New(\"packet too short\")\n\terrUnknownExtendedPacket = errors.New(\"unknown extended packet\")\n)\n\nconst (\n\tmaxMsgLength           = 256 * 1024\n\tdebugDumpTxPacket      = false\n\tdebugDumpRxPacket      = false\n\tdebugDumpTxPacketBytes = false\n\tdebugDumpRxPacketBytes = false\n)\n\nfunc marshalUint32(b []byte, v uint32) []byte {\n\treturn append(b, byte(v>>24), byte(v>>16), byte(v>>8), byte(v))\n}\n\nfunc marshalUint64(b []byte, v uint64) []byte {\n\treturn marshalUint32(marshalUint32(b, uint32(v>>32)), uint32(v))\n}\n\nfunc marshalString(b []byte, v string) []byte {\n\treturn append(marshalUint32(b, uint32(len(v))), v...)\n}\n\nfunc marshalFileInfo(b []byte, fi os.FileInfo) []byte {\n\t// attributes variable struct, and also variable per protocol version\n\t// spec version 3 attributes:\n\t// uint32   flags\n\t// uint64   size           present only if flag SSH_FILEXFER_ATTR_SIZE\n\t// uint32   uid            present only if flag SSH_FILEXFER_ATTR_UIDGID\n\t// uint32   gid            present only if flag SSH_FILEXFER_ATTR_UIDGID\n\t// uint32   permissions    present only if flag SSH_FILEXFER_ATTR_PERMISSIONS\n\t// uint32   atime          present only if flag SSH_FILEXFER_ACMODTIME\n\t// uint32   mtime          present only if flag SSH_FILEXFER_ACMODTIME\n\t// uint32   extended_count present only if flag SSH_FILEXFER_ATTR_EXTENDED\n\t// string   extended_type\n\t// string   extended_data\n\t// ...      more extended data (extended_type - extended_data pairs),\n\t// \t   so that number of pairs equals extended_count\n\n\tflags, fileStat := fileStatFromInfo(fi)\n\n\tb = marshalUint32(b, flags)\n\n\treturn marshalFileStat(b, flags, fileStat)\n}\n\nfunc marshalFileStat(b []byte, flags uint32, fileStat *FileStat) []byte {\n\tif flags&sshFileXferAttrSize != 0 {\n\t\tb = marshalUint64(b, fileStat.Size)\n\t}\n\tif flags&sshFileXferAttrUIDGID != 0 {\n\t\tb = marshalUint32(b, fileStat.UID)\n\t\tb = marshalUint32(b, fileStat.GID)\n\t}\n\tif flags&sshFileXferAttrPermissions != 0 {\n\t\tb = marshalUint32(b, fileStat.Mode)\n\t}\n\tif flags&sshFileXferAttrACmodTime != 0 {\n\t\tb = marshalUint32(b, fileStat.Atime)\n\t\tb = marshalUint32(b, fileStat.Mtime)\n\t}\n\n\tif flags&sshFileXferAttrExtended != 0 {\n\t\tb = marshalUint32(b, uint32(len(fileStat.Extended)))\n\n\t\tfor _, attr := range fileStat.Extended {\n\t\t\tb = marshalString(b, attr.ExtType)\n\t\t\tb = marshalString(b, attr.ExtData)\n\t\t}\n\t}\n\n\treturn b\n}\n\nfunc marshalStatus(b []byte, err StatusError) []byte {\n\tb = marshalUint32(b, err.Code)\n\tb = marshalString(b, err.msg)\n\tb = marshalString(b, err.lang)\n\treturn b\n}\n\nfunc marshal(b []byte, v any) []byte {\n\tswitch v := v.(type) {\n\tcase nil:\n\t\treturn b\n\tcase uint8:\n\t\treturn append(b, v)\n\tcase uint32:\n\t\treturn marshalUint32(b, v)\n\tcase uint64:\n\t\treturn marshalUint64(b, v)\n\tcase string:\n\t\treturn marshalString(b, v)\n\tcase []byte:\n\t\treturn append(b, v...)\n\tcase os.FileInfo:\n\t\treturn marshalFileInfo(b, v)\n\tdefault:\n\t\tswitch d := reflect.ValueOf(v); d.Kind() {\n\t\tcase reflect.Struct:\n\t\t\tfor i, n := 0, d.NumField(); i < n; i++ {\n\t\t\t\tb = marshal(b, d.Field(i).Interface())\n\t\t\t}\n\t\t\treturn b\n\t\tcase reflect.Slice:\n\t\t\tfor i, n := 0, d.Len(); i < n; i++ {\n\t\t\t\tb = marshal(b, d.Index(i).Interface())\n\t\t\t}\n\t\t\treturn b\n\t\tdefault:\n\t\t\tpanic(fmt.Sprintf(\"marshal(%#v): cannot handle type %T\", v, v))\n\t\t}\n\t}\n}\n\nfunc unmarshalUint32(b []byte) (uint32, []byte) {\n\tv := uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24\n\treturn v, b[4:]\n}\n\nfunc unmarshalUint32Safe(b []byte) (uint32, []byte, error) {\n\tvar v uint32\n\tif len(b) < 4 {\n\t\treturn 0, nil, errShortPacket\n\t}\n\tv, b = unmarshalUint32(b)\n\treturn v, b, nil\n}\n\nfunc unmarshalUint64(b []byte) (uint64, []byte) {\n\th, b := unmarshalUint32(b)\n\tl, b := unmarshalUint32(b)\n\treturn uint64(h)<<32 | uint64(l), b\n}\n\nfunc unmarshalUint64Safe(b []byte) (uint64, []byte, error) {\n\tvar v uint64\n\tif len(b) < 8 {\n\t\treturn 0, nil, errShortPacket\n\t}\n\tv, b = unmarshalUint64(b)\n\treturn v, b, nil\n}\n\nfunc unmarshalString(b []byte) (string, []byte) {\n\tn, b := unmarshalUint32(b)\n\treturn string(b[:n]), b[n:]\n}\n\nfunc unmarshalStringSafe(b []byte) (string, []byte, error) {\n\tn, b, err := unmarshalUint32Safe(b)\n\tif err != nil {\n\t\treturn \"\", nil, err\n\t}\n\tif int64(n) > int64(len(b)) {\n\t\treturn \"\", nil, errShortPacket\n\t}\n\treturn string(b[:n]), b[n:], nil\n}\n\nfunc unmarshalAttrs(b []byte) (*FileStat, []byte, error) {\n\tflags, b, err := unmarshalUint32Safe(b)\n\tif err != nil {\n\t\treturn nil, b, err\n\t}\n\treturn unmarshalFileStat(flags, b)\n}\n\nfunc unmarshalFileStat(flags uint32, b []byte) (*FileStat, []byte, error) {\n\tvar fs FileStat\n\tvar err error\n\n\tif flags&sshFileXferAttrSize == sshFileXferAttrSize {\n\t\tfs.Size, b, err = unmarshalUint64Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\tif flags&sshFileXferAttrUIDGID == sshFileXferAttrUIDGID {\n\t\tfs.UID, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t\tfs.GID, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\tif flags&sshFileXferAttrPermissions == sshFileXferAttrPermissions {\n\t\tfs.Mode, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\tif flags&sshFileXferAttrACmodTime == sshFileXferAttrACmodTime {\n\t\tfs.Atime, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t\tfs.Mtime, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\t}\n\tif flags&sshFileXferAttrExtended == sshFileXferAttrExtended {\n\t\tvar count uint32\n\t\tcount, b, err = unmarshalUint32Safe(b)\n\t\tif err != nil {\n\t\t\treturn nil, b, err\n\t\t}\n\n\t\text := make([]StatExtended, count)\n\t\tfor i := uint32(0); i < count; i++ {\n\t\t\tvar typ string\n\t\t\tvar data string\n\t\t\ttyp, b, err = unmarshalStringSafe(b)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, b, err\n\t\t\t}\n\t\t\tdata, b, err = unmarshalStringSafe(b)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, b, err\n\t\t\t}\n\t\t\text[i] = StatExtended{\n\t\t\t\tExtType: typ,\n\t\t\t\tExtData: data,\n\t\t\t}\n\t\t}\n\t\tfs.Extended = ext\n\t}\n\treturn &fs, b, nil\n}\n\nfunc unmarshalStatus(id uint32, data []byte) error {\n\tsid, data := unmarshalUint32(data)\n\tif sid != id {\n\t\treturn &unexpectedIDErr{id, sid}\n\t}\n\tcode, data := unmarshalUint32(data)\n\tmsg, data, _ := unmarshalStringSafe(data)\n\tlang, _, _ := unmarshalStringSafe(data)\n\treturn &StatusError{\n\t\tCode: code,\n\t\tmsg:  msg,\n\t\tlang: lang,\n\t}\n}\n\ntype packetMarshaler interface {\n\tmarshalPacket() (header, payload []byte, err error)\n}\n\nfunc marshalPacket(m encoding.BinaryMarshaler) (header, payload []byte, err error) {\n\tif m, ok := m.(packetMarshaler); ok {\n\t\treturn m.marshalPacket()\n\t}\n\n\theader, err = m.MarshalBinary()\n\treturn\n}\n\n// sendPacket marshals p according to RFC 4234.\nfunc sendPacket(w io.Writer, m encoding.BinaryMarshaler) error {\n\theader, payload, err := marshalPacket(m)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"binary marshaller failed: %w\", err)\n\t}\n\n\tlength := len(header) + len(payload) - 4 // subtract the uint32(length) from the start\n\tif debugDumpTxPacketBytes {\n\t\tdebug(\"send packet: %s %d bytes %x%x\", fxp(header[4]), length, header[5:], payload)\n\t} else if debugDumpTxPacket {\n\t\tdebug(\"send packet: %s %d bytes\", fxp(header[4]), length)\n\t}\n\n\tbinary.BigEndian.PutUint32(header[:4], uint32(length))\n\n\tif _, err := w.Write(header); err != nil {\n\t\treturn fmt.Errorf(\"failed to send packet: %w\", err)\n\t}\n\n\tif len(payload) > 0 {\n\t\tif _, err := w.Write(payload); err != nil {\n\t\t\treturn fmt.Errorf(\"failed to send packet payload: %w\", err)\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc recvPacket(r io.Reader, alloc *allocator, orderID uint32) (uint8, []byte, error) {\n\tvar b []byte\n\tif alloc != nil {\n\t\tb = alloc.GetPage(orderID)\n\t} else {\n\t\tb = make([]byte, 4)\n\t}\n\tif _, err := io.ReadFull(r, b[:4]); err != nil {\n\t\treturn 0, nil, err\n\t}\n\tlength, _ := unmarshalUint32(b)\n\tif length > maxMsgLength {\n\t\tdebug(\"recv packet %d bytes too long\", length)\n\t\treturn 0, nil, errLongPacket\n\t}\n\tif length == 0 {\n\t\tdebug(\"recv packet of 0 bytes too short\")\n\t\treturn 0, nil, errShortPacket\n\t}\n\tif alloc == nil {\n\t\tb = make([]byte, length)\n\t}\n\tif _, err := io.ReadFull(r, b[:length]); err != nil {\n\t\t// ReadFull only returns EOF if it has read no bytes.\n\t\t// In this case, that means a partial packet, and thus unexpected.\n\t\tif err == io.EOF {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t}\n\t\tdebug(\"recv packet %d bytes: err %v\", length, err)\n\t\treturn 0, nil, err\n\t}\n\tif debugDumpRxPacketBytes {\n\t\tdebug(\"recv packet: %s %d bytes %x\", fxp(b[0]), length, b[1:length])\n\t} else if debugDumpRxPacket {\n\t\tdebug(\"recv packet: %s %d bytes\", fxp(b[0]), length)\n\t}\n\treturn b[0], b[1:length], nil\n}\n\ntype extensionPair struct {\n\tName string\n\tData string\n}\n\nfunc unmarshalExtensionPair(b []byte) (extensionPair, []byte, error) {\n\tvar ep extensionPair\n\tvar err error\n\tep.Name, b, err = unmarshalStringSafe(b)\n\tif err != nil {\n\t\treturn ep, b, err\n\t}\n\tep.Data, b, err = unmarshalStringSafe(b)\n\treturn ep, b, err\n}\n\n// Here starts the definition of packets along with their MarshalBinary\n// implementations.\n// Manually writing the marshalling logic wins us a lot of time and\n// allocation.\n\ntype sshFxInitPacket struct {\n\tVersion    uint32\n\tExtensions []extensionPair\n}\n\nfunc (p *sshFxInitPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version)\n\tfor _, e := range p.Extensions {\n\t\tl += 4 + len(e.Name) + 4 + len(e.Data)\n\t}\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpInit)\n\tb = marshalUint32(b, p.Version)\n\n\tfor _, e := range p.Extensions {\n\t\tb = marshalString(b, e.Name)\n\t\tb = marshalString(b, e.Data)\n\t}\n\n\treturn b, nil\n}\n\nfunc (p *sshFxInitPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.Version, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\tfor len(b) > 0 {\n\t\tvar ep extensionPair\n\t\tep, b, err = unmarshalExtensionPair(b)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tp.Extensions = append(p.Extensions, ep)\n\t}\n\treturn nil\n}\n\ntype sshFxVersionPacket struct {\n\tVersion    uint32\n\tExtensions []sshExtensionPair\n}\n\ntype sshExtensionPair struct {\n\tName, Data string\n}\n\nfunc (p *sshFxVersionPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(version)\n\tfor _, e := range p.Extensions {\n\t\tl += 4 + len(e.Name) + 4 + len(e.Data)\n\t}\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpVersion)\n\tb = marshalUint32(b, p.Version)\n\n\tfor _, e := range p.Extensions {\n\t\tb = marshalString(b, e.Name)\n\t\tb = marshalString(b, e.Data)\n\t}\n\n\treturn b, nil\n}\n\nfunc marshalIDStringPacket(packetType byte, id uint32, str string) ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(str)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, packetType)\n\tb = marshalUint32(b, id)\n\tb = marshalString(b, str)\n\n\treturn b, nil\n}\n\nfunc unmarshalIDString(b []byte, id *uint32, str *string) error {\n\tvar err error\n\t*id, b, err = unmarshalUint32Safe(b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*str, _, err = unmarshalStringSafe(b)\n\treturn err\n}\n\ntype sshFxpReaddirPacket struct {\n\tID     uint32\n\tHandle string\n}\n\nfunc (p *sshFxpReaddirPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpReaddirPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpReaddir, p.ID, p.Handle)\n}\n\nfunc (p *sshFxpReaddirPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Handle)\n}\n\ntype sshFxpOpendirPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpOpendirPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpOpendirPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpOpendir, p.ID, p.Path)\n}\n\nfunc (p *sshFxpOpendirPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpLstatPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpLstatPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpLstatPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpLstat, p.ID, p.Path)\n}\n\nfunc (p *sshFxpLstatPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpStatPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpStatPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpStatPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpStat, p.ID, p.Path)\n}\n\nfunc (p *sshFxpStatPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpFstatPacket struct {\n\tID     uint32\n\tHandle string\n}\n\nfunc (p *sshFxpFstatPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpFstatPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpFstat, p.ID, p.Handle)\n}\n\nfunc (p *sshFxpFstatPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Handle)\n}\n\ntype sshFxpClosePacket struct {\n\tID     uint32\n\tHandle string\n}\n\nfunc (p *sshFxpClosePacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpClosePacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpClose, p.ID, p.Handle)\n}\n\nfunc (p *sshFxpClosePacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Handle)\n}\n\ntype sshFxpRemovePacket struct {\n\tID       uint32\n\tFilename string\n}\n\nfunc (p *sshFxpRemovePacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpRemovePacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpRemove, p.ID, p.Filename)\n}\n\nfunc (p *sshFxpRemovePacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Filename)\n}\n\ntype sshFxpRmdirPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpRmdirPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpRmdirPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpRmdir, p.ID, p.Path)\n}\n\nfunc (p *sshFxpRmdirPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpSymlinkPacket struct {\n\tID uint32\n\n\t// The order of the arguments to the SSH_FXP_SYMLINK method was inadvertently reversed.\n\t// Unfortunately, the reversal was not noticed until the server was widely deployed.\n\t// Covered in Section 4.1 of https://github.com/openssh/openssh-portable/blob/master/PROTOCOL\n\n\tTargetpath string\n\tLinkpath   string\n}\n\nfunc (p *sshFxpSymlinkPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpSymlinkPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Targetpath) +\n\t\t4 + len(p.Linkpath)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpSymlink)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Targetpath)\n\tb = marshalString(b, p.Linkpath)\n\n\treturn b, nil\n}\n\nfunc (p *sshFxpSymlinkPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Targetpath, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Linkpath, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype sshFxpHardlinkPacket struct {\n\tID      uint32\n\tOldpath string\n\tNewpath string\n}\n\nfunc (p *sshFxpHardlinkPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpHardlinkPacket) MarshalBinary() ([]byte, error) {\n\tconst ext = \"hardlink@openssh.com\"\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(ext) +\n\t\t4 + len(p.Oldpath) +\n\t\t4 + len(p.Newpath)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpExtended)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, ext)\n\tb = marshalString(b, p.Oldpath)\n\tb = marshalString(b, p.Newpath)\n\n\treturn b, nil\n}\n\ntype sshFxpReadlinkPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpReadlinkPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpReadlinkPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpReadlink, p.ID, p.Path)\n}\n\nfunc (p *sshFxpReadlinkPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpRealpathPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpRealpathPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpRealpathPacket) MarshalBinary() ([]byte, error) {\n\treturn marshalIDStringPacket(sshFxpRealpath, p.ID, p.Path)\n}\n\nfunc (p *sshFxpRealpathPacket) UnmarshalBinary(b []byte) error {\n\treturn unmarshalIDString(b, &p.ID, &p.Path)\n}\n\ntype sshFxpNameAttr struct {\n\tName     string\n\tLongName string\n\tAttrs    []any\n}\n\nfunc (p *sshFxpNameAttr) MarshalBinary() ([]byte, error) {\n\tvar b []byte\n\tb = marshalString(b, p.Name)\n\tb = marshalString(b, p.LongName)\n\tfor _, attr := range p.Attrs {\n\t\tb = marshal(b, attr)\n\t}\n\treturn b, nil\n}\n\ntype sshFxpNamePacket struct {\n\tID        uint32\n\tNameAttrs []*sshFxpNameAttr\n}\n\nfunc (p *sshFxpNamePacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpName)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalUint32(b, uint32(len(p.NameAttrs)))\n\n\tvar payload []byte\n\tfor _, na := range p.NameAttrs {\n\t\tab, err := na.MarshalBinary()\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\n\t\tpayload = append(payload, ab...)\n\t}\n\n\treturn b, payload, nil\n}\n\nfunc (p *sshFxpNamePacket) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\ntype sshFxpOpenPacket struct {\n\tID     uint32\n\tPath   string\n\tPflags uint32\n\tFlags  uint32\n\tAttrs  any\n}\n\nfunc (p *sshFxpOpenPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpOpenPacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Path) +\n\t\t4 + 4\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpOpen)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Path)\n\tb = marshalUint32(b, p.Pflags)\n\tb = marshalUint32(b, p.Flags)\n\n\tswitch attrs := p.Attrs.(type) {\n\tcase []byte:\n\t\treturn b, attrs, nil // may as well short-ciruit this case.\n\tcase os.FileInfo:\n\t\t_, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet.\n\t\treturn b, marshalFileStat(nil, p.Flags, fs), nil\n\tcase *FileStat:\n\t\treturn b, marshalFileStat(nil, p.Flags, attrs), nil\n\t}\n\n\treturn b, marshal(nil, p.Attrs), nil\n}\n\nfunc (p *sshFxpOpenPacket) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\nfunc (p *sshFxpOpenPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Path, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Pflags, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\tp.Attrs = b\n\treturn nil\n}\n\nfunc (p *sshFxpOpenPacket) unmarshalFileStat(flags uint32) (*FileStat, error) {\n\tswitch attrs := p.Attrs.(type) {\n\tcase *FileStat:\n\t\treturn attrs, nil\n\tcase []byte:\n\t\tfs, _, err := unmarshalFileStat(flags, attrs)\n\t\treturn fs, err\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid type in unmarshalFileStat: %T\", attrs)\n\t}\n}\n\ntype sshFxpReadPacket struct {\n\tID     uint32\n\tLen    uint32\n\tOffset uint64\n\tHandle string\n}\n\nfunc (p *sshFxpReadPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpReadPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Handle) +\n\t\t8 + 4 // uint64 + uint32\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpRead)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Handle)\n\tb = marshalUint64(b, p.Offset)\n\tb = marshalUint32(b, p.Len)\n\n\treturn b, nil\n}\n\nfunc (p *sshFxpReadPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Handle, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Offset, b, err = unmarshalUint64Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Len, _, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// We need allocate bigger slices with extra capacity to avoid a re-allocation in sshFxpDataPacket.MarshalBinary\n// So, we need: uint32(length) + byte(type) + uint32(id) + uint32(data_length)\nconst dataHeaderLen = 4 + 1 + 4 + 4\n\nfunc (p *sshFxpReadPacket) getDataSlice(alloc *allocator, orderID uint32) []byte {\n\tdataLen := p.Len\n\tif dataLen > maxTxPacket {\n\t\tdataLen = maxTxPacket\n\t}\n\n\tif alloc != nil {\n\t\t// GetPage returns a slice with capacity = maxMsgLength this is enough to avoid new allocations in\n\t\t// sshFxpDataPacket.MarshalBinary\n\t\treturn alloc.GetPage(orderID)[:dataLen]\n\t}\n\n\t// allocate with extra space for the header\n\treturn make([]byte, dataLen, dataLen+dataHeaderLen)\n}\n\ntype sshFxpRenamePacket struct {\n\tID      uint32\n\tOldpath string\n\tNewpath string\n}\n\nfunc (p *sshFxpRenamePacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpRenamePacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Oldpath) +\n\t\t4 + len(p.Newpath)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpRename)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Oldpath)\n\tb = marshalString(b, p.Newpath)\n\n\treturn b, nil\n}\n\nfunc (p *sshFxpRenamePacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype sshFxpPosixRenamePacket struct {\n\tID      uint32\n\tOldpath string\n\tNewpath string\n}\n\nfunc (p *sshFxpPosixRenamePacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpPosixRenamePacket) MarshalBinary() ([]byte, error) {\n\tconst ext = \"posix-rename@openssh.com\"\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(ext) +\n\t\t4 + len(p.Oldpath) +\n\t\t4 + len(p.Newpath)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpExtended)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, ext)\n\tb = marshalString(b, p.Oldpath)\n\tb = marshalString(b, p.Newpath)\n\n\treturn b, nil\n}\n\ntype sshFxpWritePacket struct {\n\tID     uint32\n\tLength uint32\n\tOffset uint64\n\tHandle string\n\tData   []byte\n}\n\nfunc (p *sshFxpWritePacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpWritePacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Handle) +\n\t\t8 + // uint64\n\t\t4\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpWrite)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Handle)\n\tb = marshalUint64(b, p.Offset)\n\tb = marshalUint32(b, p.Length)\n\n\treturn b, p.Data, nil\n}\n\nfunc (p *sshFxpWritePacket) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\nfunc (p *sshFxpWritePacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Handle, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Offset, b, err = unmarshalUint64Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Length, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if uint32(len(b)) < p.Length {\n\t\treturn errShortPacket\n\t}\n\n\tp.Data = b[:p.Length]\n\treturn nil\n}\n\ntype sshFxpMkdirPacket struct {\n\tID    uint32\n\tFlags uint32 // ignored\n\tPath  string\n}\n\nfunc (p *sshFxpMkdirPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpMkdirPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Path) +\n\t\t4 // uint32\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpMkdir)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Path)\n\tb = marshalUint32(b, p.Flags)\n\n\treturn b, nil\n}\n\nfunc (p *sshFxpMkdirPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Path, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Flags, _, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype sshFxpSetstatPacket struct {\n\tID    uint32\n\tFlags uint32\n\tPath  string\n\tAttrs any\n}\n\ntype sshFxpFsetstatPacket struct {\n\tID     uint32\n\tFlags  uint32\n\tHandle string\n\tAttrs  any\n}\n\nfunc (p *sshFxpSetstatPacket) id() uint32  { return p.ID }\nfunc (p *sshFxpFsetstatPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpSetstatPacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Path) +\n\t\t4 // uint32\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpSetstat)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Path)\n\tb = marshalUint32(b, p.Flags)\n\n\tswitch attrs := p.Attrs.(type) {\n\tcase []byte:\n\t\treturn b, attrs, nil // may as well short-ciruit this case.\n\tcase os.FileInfo:\n\t\t_, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet.\n\t\treturn b, marshalFileStat(nil, p.Flags, fs), nil\n\tcase *FileStat:\n\t\treturn b, marshalFileStat(nil, p.Flags, attrs), nil\n\t}\n\n\treturn b, marshal(nil, p.Attrs), nil\n}\n\nfunc (p *sshFxpSetstatPacket) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\nfunc (p *sshFxpFsetstatPacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Handle) +\n\t\t4 // uint32\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpFsetstat)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Handle)\n\tb = marshalUint32(b, p.Flags)\n\n\tswitch attrs := p.Attrs.(type) {\n\tcase []byte:\n\t\treturn b, attrs, nil // may as well short-ciruit this case.\n\tcase os.FileInfo:\n\t\t_, fs := fileStatFromInfo(attrs) // we throw away the flags, and override with those in packet.\n\t\treturn b, marshalFileStat(nil, p.Flags, fs), nil\n\tcase *FileStat:\n\t\treturn b, marshalFileStat(nil, p.Flags, attrs), nil\n\t}\n\n\treturn b, marshal(nil, p.Attrs), nil\n}\n\nfunc (p *sshFxpFsetstatPacket) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\nfunc (p *sshFxpSetstatPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Path, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\tp.Attrs = b\n\treturn nil\n}\n\nfunc (p *sshFxpSetstatPacket) unmarshalFileStat(flags uint32) (*FileStat, error) {\n\tswitch attrs := p.Attrs.(type) {\n\tcase *FileStat:\n\t\treturn attrs, nil\n\tcase []byte:\n\t\tfs, _, err := unmarshalFileStat(flags, attrs)\n\t\treturn fs, err\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid type in unmarshalFileStat: %T\", attrs)\n\t}\n}\n\nfunc (p *sshFxpFsetstatPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Handle, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Flags, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t}\n\tp.Attrs = b\n\treturn nil\n}\n\nfunc (p *sshFxpFsetstatPacket) unmarshalFileStat(flags uint32) (*FileStat, error) {\n\tswitch attrs := p.Attrs.(type) {\n\tcase *FileStat:\n\t\treturn attrs, nil\n\tcase []byte:\n\t\tfs, _, err := unmarshalFileStat(flags, attrs)\n\t\treturn fs, err\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"invalid type in unmarshalFileStat: %T\", attrs)\n\t}\n}\n\ntype sshFxpHandlePacket struct {\n\tID     uint32\n\tHandle string\n}\n\nfunc (p *sshFxpHandlePacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(p.Handle)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpHandle)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, p.Handle)\n\n\treturn b, nil\n}\n\ntype sshFxpStatusPacket struct {\n\tID uint32\n\tStatusError\n}\n\nfunc (p *sshFxpStatusPacket) MarshalBinary() ([]byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 +\n\t\t4 + len(p.StatusError.msg) +\n\t\t4 + len(p.StatusError.lang)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpStatus)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalStatus(b, p.StatusError)\n\n\treturn b, nil\n}\n\ntype sshFxpDataPacket struct {\n\tID     uint32\n\tLength uint32\n\tData   []byte\n}\n\nfunc (p *sshFxpDataPacket) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpData)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalUint32(b, p.Length)\n\n\treturn b, p.Data, nil\n}\n\n// MarshalBinary encodes the receiver into a binary form and returns the result.\n// To avoid a new allocation the Data slice must have a capacity >= Length + 9\n//\n// This is hand-coded rather than just append(header, payload...),\n// in order to try and reuse the r.Data backing store in the packet.\nfunc (p *sshFxpDataPacket) MarshalBinary() ([]byte, error) {\n\tb := append(p.Data, make([]byte, dataHeaderLen)...)\n\tcopy(b[dataHeaderLen:], p.Data[:p.Length])\n\t// b[0:4] will be overwritten with the length in sendPacket\n\tb[4] = sshFxpData\n\tbinary.BigEndian.PutUint32(b[5:9], p.ID)\n\tbinary.BigEndian.PutUint32(b[9:13], p.Length)\n\treturn b, nil\n}\n\nfunc (p *sshFxpDataPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.Length, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if uint32(len(b)) < p.Length {\n\t\treturn errShortPacket\n\t}\n\n\tp.Data = b[:p.Length]\n\treturn nil\n}\n\ntype sshFxpStatvfsPacket struct {\n\tID   uint32\n\tPath string\n}\n\nfunc (p *sshFxpStatvfsPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpStatvfsPacket) MarshalBinary() ([]byte, error) {\n\tconst ext = \"statvfs@openssh.com\"\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(ext) +\n\t\t4 + len(p.Path)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpExtended)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, ext)\n\tb = marshalString(b, p.Path)\n\n\treturn b, nil\n}\n\n// A StatVFS contains statistics about a filesystem.\ntype StatVFS struct {\n\tID      uint32\n\tBsize   uint64 /* file system block size */\n\tFrsize  uint64 /* fundamental sftpfs block size */\n\tBlocks  uint64 /* number of blocks (unit f_frsize) */\n\tBfree   uint64 /* free blocks in file system */\n\tBavail  uint64 /* free blocks for non-root */\n\tFiles   uint64 /* total file inodes */\n\tFfree   uint64 /* free file inodes */\n\tFavail  uint64 /* free file inodes for to non-root */\n\tFsid    uint64 /* file system id */\n\tFlag    uint64 /* bit mask of f_flag values */\n\tNamemax uint64 /* maximum filename length */\n}\n\n// TotalSpace calculates the amount of total space in a filesystem.\nfunc (p *StatVFS) TotalSpace() uint64 {\n\treturn p.Frsize * p.Blocks\n}\n\n// FreeSpace calculates the amount of free space in a filesystem.\nfunc (p *StatVFS) FreeSpace() uint64 {\n\treturn p.Frsize * p.Bfree\n}\n\n// marshalPacket converts to ssh_FXP_EXTENDED_REPLY packet binary format\nfunc (p *StatVFS) marshalPacket() ([]byte, []byte, error) {\n\theader := []byte{0, 0, 0, 0, sshFxpExtendedReply}\n\n\tvar buf bytes.Buffer\n\terr := binary.Write(&buf, binary.BigEndian, p)\n\n\treturn header, buf.Bytes(), err\n}\n\n// MarshalBinary encodes the StatVFS as an SSH_FXP_EXTENDED_REPLY packet.\nfunc (p *StatVFS) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\ntype sshFxpFsyncPacket struct {\n\tID     uint32\n\tHandle string\n}\n\nfunc (p *sshFxpFsyncPacket) id() uint32 { return p.ID }\n\nfunc (p *sshFxpFsyncPacket) MarshalBinary() ([]byte, error) {\n\tconst ext = \"fsync@openssh.com\"\n\tl := 4 + 1 + 4 + // uint32(length) + byte(type) + uint32(id)\n\t\t4 + len(ext) +\n\t\t4 + len(p.Handle)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpExtended)\n\tb = marshalUint32(b, p.ID)\n\tb = marshalString(b, ext)\n\tb = marshalString(b, p.Handle)\n\n\treturn b, nil\n}\n\ntype sshFxpExtendedPacket struct {\n\tID              uint32\n\tExtendedRequest string\n\tSpecificPacket  interface {\n\t\tserverRespondablePacket\n\t\treadonly() bool\n\t}\n}\n\nfunc (p *sshFxpExtendedPacket) id() uint32 { return p.ID }\nfunc (p *sshFxpExtendedPacket) readonly() bool {\n\tif p.SpecificPacket == nil {\n\t\treturn true\n\t}\n\treturn p.SpecificPacket.readonly()\n}\n\nfunc (p *sshFxpExtendedPacket) respond(svr *Server) responsePacket {\n\tif p.SpecificPacket == nil {\n\t\treturn statusFromError(p.ID, nil)\n\t}\n\treturn p.SpecificPacket.respond(svr)\n}\n\nfunc (p *sshFxpExtendedPacket) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tbOrig := b\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.ExtendedRequest, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\n\t// specific unmarshalling\n\tswitch p.ExtendedRequest {\n\tcase \"statvfs@openssh.com\":\n\t\tp.SpecificPacket = &sshFxpExtendedPacketStatVFS{}\n\tcase \"posix-rename@openssh.com\":\n\t\tp.SpecificPacket = &sshFxpExtendedPacketPosixRename{}\n\tcase \"hardlink@openssh.com\":\n\t\tp.SpecificPacket = &sshFxpExtendedPacketHardlink{}\n\tdefault:\n\t\treturn fmt.Errorf(\"packet type %v: %w\", p.SpecificPacket, errUnknownExtendedPacket)\n\t}\n\n\treturn p.SpecificPacket.UnmarshalBinary(bOrig)\n}\n\ntype sshFxpExtendedPacketStatVFS struct {\n\tID              uint32\n\tExtendedRequest string\n\tPath            string\n}\n\nfunc (p *sshFxpExtendedPacketStatVFS) id() uint32     { return p.ID }\nfunc (p *sshFxpExtendedPacketStatVFS) readonly() bool { return true }\nfunc (p *sshFxpExtendedPacketStatVFS) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Path, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\ntype sshFxpExtendedPacketPosixRename struct {\n\tID              uint32\n\tExtendedRequest string\n\tOldpath         string\n\tNewpath         string\n}\n\nfunc (p *sshFxpExtendedPacketPosixRename) id() uint32     { return p.ID }\nfunc (p *sshFxpExtendedPacketPosixRename) readonly() bool { return false }\nfunc (p *sshFxpExtendedPacketPosixRename) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (p *sshFxpExtendedPacketPosixRename) respond(s *Server) responsePacket {\n\terr := os.Rename(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath))\n\treturn statusFromError(p.ID, err)\n}\n\ntype sshFxpExtendedPacketHardlink struct {\n\tID              uint32\n\tExtendedRequest string\n\tOldpath         string\n\tNewpath         string\n}\n\n// https://github.com/openssh/openssh-portable/blob/master/PROTOCOL\nfunc (p *sshFxpExtendedPacketHardlink) id() uint32     { return p.ID }\nfunc (p *sshFxpExtendedPacketHardlink) readonly() bool { return true }\nfunc (p *sshFxpExtendedPacketHardlink) UnmarshalBinary(b []byte) error {\n\tvar err error\n\tif p.ID, b, err = unmarshalUint32Safe(b); err != nil {\n\t\treturn err\n\t} else if p.ExtendedRequest, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Oldpath, b, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t} else if p.Newpath, _, err = unmarshalStringSafe(b); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc (p *sshFxpExtendedPacketHardlink) respond(s *Server) responsePacket {\n\terr := os.Link(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath))\n\treturn statusFromError(p.ID, err)\n}\n"
  },
  {
    "path": "gossh/sftp/pool.go",
    "content": "package sftp\n\n// bufPool provides a pool of byte-slices to be reused in various parts of the package.\n// It is safe to use concurrently through a pointer.\ntype bufPool struct {\n\tch   chan []byte\n\tblen int\n}\n\nfunc newBufPool(depth, bufLen int) *bufPool {\n\treturn &bufPool{\n\t\tch:   make(chan []byte, depth),\n\t\tblen: bufLen,\n\t}\n}\n\nfunc (p *bufPool) Get() []byte {\n\tif p.blen <= 0 {\n\t\tpanic(\"bufPool: new buffer creation length must be greater than zero\")\n\t}\n\n\tfor {\n\t\tselect {\n\t\tcase b := <-p.ch:\n\t\t\tif cap(b) < p.blen {\n\t\t\t\t// just in case: throw away any buffer with insufficient capacity.\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\treturn b[:p.blen]\n\n\t\tdefault:\n\t\t\treturn make([]byte, p.blen)\n\t\t}\n\t}\n}\n\nfunc (p *bufPool) Put(b []byte) {\n\tif p == nil {\n\t\t// functional default: no reuse.\n\t\treturn\n\t}\n\n\tif cap(b) < p.blen || cap(b) > p.blen*2 {\n\t\t// DO NOT reuse buffers with insufficient capacity.\n\t\t// This could cause panics when resizing to p.blen.\n\n\t\t// DO NOT reuse buffers with excessive capacity.\n\t\t// This could cause memory leaks.\n\t\treturn\n\t}\n\n\tselect {\n\tcase p.ch <- b:\n\tdefault:\n\t}\n}\n\ntype resChanPool chan chan result\n\nfunc newResChanPool(depth int) resChanPool {\n\treturn make(chan chan result, depth)\n}\n\nfunc (p resChanPool) Get() chan result {\n\tselect {\n\tcase ch := <-p:\n\t\treturn ch\n\tdefault:\n\t\treturn make(chan result, 1)\n\t}\n}\n\nfunc (p resChanPool) Put(ch chan result) {\n\tselect {\n\tcase p <- ch:\n\tdefault:\n\t}\n}\n"
  },
  {
    "path": "gossh/sftp/release.go",
    "content": "//go:build !debug\n// +build !debug\n\npackage sftp\n\nfunc debug(fmt string, args ...any) {}\n"
  },
  {
    "path": "gossh/sftp/request-attrs.go",
    "content": "package sftp\n\n// Methods on the Request object to make working with the Flags bitmasks and\n// Attr(ibutes) byte blob easier. Use Pflags() when working with an Open/Write\n// request and AttrFlags() and Attributes() when working with SetStat requests.\n\n// FileOpenFlags defines Open and Write Flags. Correlate directly with with os.OpenFile flags\n// (https://golang.org/pkg/os/#pkg-constants).\ntype FileOpenFlags struct {\n\tRead, Write, Append, Creat, Trunc, Excl bool\n}\n\nfunc newFileOpenFlags(flags uint32) FileOpenFlags {\n\treturn FileOpenFlags{\n\t\tRead:   flags&sshFxfRead != 0,\n\t\tWrite:  flags&sshFxfWrite != 0,\n\t\tAppend: flags&sshFxfAppend != 0,\n\t\tCreat:  flags&sshFxfCreat != 0,\n\t\tTrunc:  flags&sshFxfTrunc != 0,\n\t\tExcl:   flags&sshFxfExcl != 0,\n\t}\n}\n\n// Pflags converts the bitmap/uint32 from SFTP Open packet pflag values,\n// into a FileOpenFlags struct with booleans set for flags set in bitmap.\nfunc (r *Request) Pflags() FileOpenFlags {\n\treturn newFileOpenFlags(r.Flags)\n}\n\n// FileAttrFlags that indicate whether SFTP file attributes were passed. When a flag is\n// true the corresponding attribute should be available from the FileStat\n// object returned by Attributes method. Used with SetStat.\ntype FileAttrFlags struct {\n\tSize, UidGid, Permissions, Acmodtime bool\n}\n\nfunc newFileAttrFlags(flags uint32) FileAttrFlags {\n\treturn FileAttrFlags{\n\t\tSize:        (flags & sshFileXferAttrSize) != 0,\n\t\tUidGid:      (flags & sshFileXferAttrUIDGID) != 0,\n\t\tPermissions: (flags & sshFileXferAttrPermissions) != 0,\n\t\tAcmodtime:   (flags & sshFileXferAttrACmodTime) != 0,\n\t}\n}\n\n// AttrFlags returns a FileAttrFlags boolean struct based on the\n// bitmap/uint32 file attribute flags from the SFTP packaet.\nfunc (r *Request) AttrFlags() FileAttrFlags {\n\treturn newFileAttrFlags(r.Flags)\n}\n\n// Attributes parses file attributes byte blob and return them in a\n// FileStat object.\nfunc (r *Request) Attributes() *FileStat {\n\tfs, _, _ := unmarshalFileStat(r.Flags, r.Attrs)\n\treturn fs\n}\n"
  },
  {
    "path": "gossh/sftp/request-errors.go",
    "content": "package sftp\n\ntype fxerr uint32\n\n// Error types that match the SFTP's SSH_FXP_STATUS codes. Gives you more\n// direct control of the errors being sent vs. letting the library work them\n// out from the standard os/io errors.\nconst (\n\tErrSSHFxOk               = fxerr(sshFxOk)\n\tErrSSHFxEOF              = fxerr(sshFxEOF)\n\tErrSSHFxNoSuchFile       = fxerr(sshFxNoSuchFile)\n\tErrSSHFxPermissionDenied = fxerr(sshFxPermissionDenied)\n\tErrSSHFxFailure          = fxerr(sshFxFailure)\n\tErrSSHFxBadMessage       = fxerr(sshFxBadMessage)\n\tErrSSHFxNoConnection     = fxerr(sshFxNoConnection)\n\tErrSSHFxConnectionLost   = fxerr(sshFxConnectionLost)\n\tErrSSHFxOpUnsupported    = fxerr(sshFxOPUnsupported)\n)\n\n// Deprecated error types, these are aliases for the new ones, please use the new ones directly\nconst (\n\tErrSshFxOk               = ErrSSHFxOk\n\tErrSshFxEof              = ErrSSHFxEOF\n\tErrSshFxNoSuchFile       = ErrSSHFxNoSuchFile\n\tErrSshFxPermissionDenied = ErrSSHFxPermissionDenied\n\tErrSshFxFailure          = ErrSSHFxFailure\n\tErrSshFxBadMessage       = ErrSSHFxBadMessage\n\tErrSshFxNoConnection     = ErrSSHFxNoConnection\n\tErrSshFxConnectionLost   = ErrSSHFxConnectionLost\n\tErrSshFxOpUnsupported    = ErrSSHFxOpUnsupported\n)\n\nfunc (e fxerr) Error() string {\n\tswitch e {\n\tcase ErrSSHFxOk:\n\t\treturn \"OK\"\n\tcase ErrSSHFxEOF:\n\t\treturn \"EOF\"\n\tcase ErrSSHFxNoSuchFile:\n\t\treturn \"no such file\"\n\tcase ErrSSHFxPermissionDenied:\n\t\treturn \"permission denied\"\n\tcase ErrSSHFxBadMessage:\n\t\treturn \"bad message\"\n\tcase ErrSSHFxNoConnection:\n\t\treturn \"no connection\"\n\tcase ErrSSHFxConnectionLost:\n\t\treturn \"connection lost\"\n\tcase ErrSSHFxOpUnsupported:\n\t\treturn \"operation unsupported\"\n\tdefault:\n\t\treturn \"failure\"\n\t}\n}\n"
  },
  {
    "path": "gossh/sftp/request-example.go",
    "content": "package sftp\n\n// This serves as an example of how to implement the request server handler as\n// well as a dummy backend for testing. It implements an in-memory backend that\n// works as a very simple filesystem with simple flat key-value lookup system.\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"path\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst maxSymlinkFollows = 5\n\nvar errTooManySymlinks = errors.New(\"too many symbolic links\")\n\n// InMemHandler returns a Hanlders object with the test handlers.\nfunc InMemHandler() Handlers {\n\troot := &root{\n\t\trootFile: &memFile{name: \"/\", modtime: time.Now(), isdir: true},\n\t\tfiles:    make(map[string]*memFile),\n\t}\n\treturn Handlers{root, root, root, root}\n}\n\n// Example Handlers\nfunc (fs *root) Fileread(r *Request) (io.ReaderAt, error) {\n\tflags := r.Pflags()\n\tif !flags.Read {\n\t\t// sanity check\n\t\treturn nil, os.ErrInvalid\n\t}\n\n\treturn fs.OpenFile(r)\n}\n\nfunc (fs *root) Filewrite(r *Request) (io.WriterAt, error) {\n\tflags := r.Pflags()\n\tif !flags.Write {\n\t\t// sanity check\n\t\treturn nil, os.ErrInvalid\n\t}\n\n\treturn fs.OpenFile(r)\n}\n\nfunc (fs *root) OpenFile(r *Request) (WriterAtReaderAt, error) {\n\tif fs.mockErr != nil {\n\t\treturn nil, fs.mockErr\n\t}\n\t_ = r.WithContext(r.Context()) // initialize context for deadlock testing\n\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\n\treturn fs.openfile(r.Filepath, r.Flags)\n}\n\nfunc (fs *root) putfile(pathname string, file *memFile) error {\n\tpathname, err := fs.canonName(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !strings.HasPrefix(pathname, \"/\") {\n\t\treturn os.ErrInvalid\n\t}\n\n\tif _, err := fs.lfetch(pathname); err != os.ErrNotExist {\n\t\treturn os.ErrExist\n\t}\n\n\tfile.name = pathname\n\tfs.files[pathname] = file\n\n\treturn nil\n}\n\nfunc (fs *root) openfile(pathname string, flags uint32) (*memFile, error) {\n\tpflags := newFileOpenFlags(flags)\n\n\tfile, err := fs.fetch(pathname)\n\tif err == os.ErrNotExist {\n\t\tif !pflags.Creat {\n\t\t\treturn nil, os.ErrNotExist\n\t\t}\n\n\t\tvar count int\n\t\t// You can create files through dangling symlinks.\n\t\tlink, err := fs.lfetch(pathname)\n\t\tfor err == nil && link.symlink != \"\" {\n\t\t\tif pflags.Excl {\n\t\t\t\t// unless you also passed in O_EXCL\n\t\t\t\treturn nil, os.ErrInvalid\n\t\t\t}\n\n\t\t\tif count++; count > maxSymlinkFollows {\n\t\t\t\treturn nil, errTooManySymlinks\n\t\t\t}\n\n\t\t\tpathname = link.symlink\n\t\t\tlink, err = fs.lfetch(pathname)\n\t\t}\n\n\t\tfile := &memFile{\n\t\t\tmodtime: time.Now(),\n\t\t}\n\n\t\tif err := fs.putfile(pathname, file); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\treturn file, nil\n\t}\n\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif pflags.Creat && pflags.Excl {\n\t\treturn nil, os.ErrExist\n\t}\n\n\tif file.IsDir() {\n\t\treturn nil, os.ErrInvalid\n\t}\n\n\tif pflags.Trunc {\n\t\tif err := file.Truncate(0); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn file, nil\n}\n\nfunc (fs *root) Filecmd(r *Request) error {\n\tif fs.mockErr != nil {\n\t\treturn fs.mockErr\n\t}\n\t_ = r.WithContext(r.Context()) // initialize context for deadlock testing\n\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\n\tswitch r.Method {\n\tcase \"Setstat\":\n\t\tfile, err := fs.openfile(r.Filepath, sshFxfWrite)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif r.AttrFlags().Size {\n\t\t\treturn file.Truncate(int64(r.Attributes().Size))\n\t\t}\n\n\t\treturn nil\n\n\tcase \"Rename\":\n\t\t// SFTP-v2: \"It is an error if there already exists a file with the name specified by newpath.\"\n\t\t// This varies from the POSIX specification, which allows limited replacement of target files.\n\t\tif fs.exists(r.Target) {\n\t\t\treturn os.ErrExist\n\t\t}\n\n\t\treturn fs.rename(r.Filepath, r.Target)\n\n\tcase \"Rmdir\":\n\t\treturn fs.rmdir(r.Filepath)\n\n\tcase \"Remove\":\n\t\t// IEEE 1003.1 remove explicitly can unlink files and remove empty directories.\n\t\t// We use instead here the semantics of unlink, which is allowed to be restricted against directories.\n\t\treturn fs.unlink(r.Filepath)\n\n\tcase \"Mkdir\":\n\t\treturn fs.mkdir(r.Filepath)\n\n\tcase \"Link\":\n\t\treturn fs.link(r.Filepath, r.Target)\n\n\tcase \"Symlink\":\n\t\t// NOTE: r.Filepath is the target, and r.Target is the linkpath.\n\t\treturn fs.symlink(r.Filepath, r.Target)\n\t}\n\n\treturn errors.New(\"unsupported\")\n}\n\nfunc (fs *root) rename(oldpath, newpath string) error {\n\tfile, err := fs.lfetch(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tnewpath, err = fs.canonName(newpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !strings.HasPrefix(newpath, \"/\") {\n\t\treturn os.ErrInvalid\n\t}\n\n\ttarget, err := fs.lfetch(newpath)\n\tif err != os.ErrNotExist {\n\t\tif target == file {\n\t\t\t// IEEE 1003.1: if oldpath and newpath are the same directory entry,\n\t\t\t// then return no error, and perform no further action.\n\t\t\treturn nil\n\t\t}\n\n\t\tswitch {\n\t\tcase file.IsDir():\n\t\t\t// IEEE 1003.1: if oldpath is a directory, and newpath exists,\n\t\t\t// then newpath must be a directory, and empty.\n\t\t\t// It is to be removed prior to rename.\n\t\t\tif err := fs.rmdir(newpath); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\tcase target.IsDir():\n\t\t\t// IEEE 1003.1: if oldpath is not a directory, and newpath exists,\n\t\t\t// then newpath may not be a directory.\n\t\t\treturn syscall.EISDIR\n\t\t}\n\t}\n\n\tfs.files[newpath] = file\n\n\tif file.IsDir() {\n\t\tdirprefix := file.name + \"/\"\n\n\t\tfor name, file := range fs.files {\n\t\t\tif strings.HasPrefix(name, dirprefix) {\n\t\t\t\tnewname := path.Join(newpath, strings.TrimPrefix(name, dirprefix))\n\n\t\t\t\tfs.files[newname] = file\n\t\t\t\tfile.name = newname\n\t\t\t\tdelete(fs.files, name)\n\t\t\t}\n\t\t}\n\t}\n\n\tfile.name = newpath\n\tdelete(fs.files, oldpath)\n\n\treturn nil\n}\n\nfunc (fs *root) PosixRename(r *Request) error {\n\tif fs.mockErr != nil {\n\t\treturn fs.mockErr\n\t}\n\t_ = r.WithContext(r.Context()) // initialize context for deadlock testing\n\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\n\treturn fs.rename(r.Filepath, r.Target)\n}\n\nfunc (fs *root) StatVFS(r *Request) (*StatVFS, error) {\n\tif fs.mockErr != nil {\n\t\treturn nil, fs.mockErr\n\t}\n\n\treturn getStatVFSForPath(r.Filepath)\n}\n\nfunc (fs *root) mkdir(pathname string) error {\n\tdir := &memFile{\n\t\tmodtime: time.Now(),\n\t\tisdir:   true,\n\t}\n\n\treturn fs.putfile(pathname, dir)\n}\n\nfunc (fs *root) rmdir(pathname string) error {\n\t// IEEE 1003.1: If pathname is a symlink, then rmdir should fail with ENOTDIR.\n\tdir, err := fs.lfetch(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif !dir.IsDir() {\n\t\treturn syscall.ENOTDIR\n\t}\n\n\t// use the dir‘s internal name not the pathname we passed in.\n\t// the dir.name is always the canonical name of a directory.\n\tpathname = dir.name\n\n\tfor name := range fs.files {\n\t\tif path.Dir(name) == pathname {\n\t\t\treturn errors.New(\"directory not empty\")\n\t\t}\n\t}\n\n\tdelete(fs.files, pathname)\n\n\treturn nil\n}\n\nfunc (fs *root) link(oldpath, newpath string) error {\n\tfile, err := fs.lfetch(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif file.IsDir() {\n\t\treturn errors.New(\"hard link not allowed for directory\")\n\t}\n\n\treturn fs.putfile(newpath, file)\n}\n\n// symlink() creates a symbolic link named `linkpath` which contains the string `target`.\n// NOTE! This would be called with `symlink(req.Filepath, req.Target)` due to different semantics.\nfunc (fs *root) symlink(target, linkpath string) error {\n\tlink := &memFile{\n\t\tmodtime: time.Now(),\n\t\tsymlink: target,\n\t}\n\n\treturn fs.putfile(linkpath, link)\n}\n\nfunc (fs *root) unlink(pathname string) error {\n\t// does not follow symlinks!\n\tfile, err := fs.lfetch(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif file.IsDir() {\n\t\t// IEEE 1003.1: implementations may opt out of allowing the unlinking of directories.\n\t\t// SFTP-v2: SSH_FXP_REMOVE may not remove directories.\n\t\treturn os.ErrInvalid\n\t}\n\n\t// DO NOT use the file’s internal name.\n\t// because of hard-links files cannot have a single canonical name.\n\tdelete(fs.files, pathname)\n\n\treturn nil\n}\n\ntype listerat []os.FileInfo\n\n// Modeled after strings.Reader's ReadAt() implementation\nfunc (f listerat) ListAt(ls []os.FileInfo, offset int64) (int, error) {\n\tvar n int\n\tif offset >= int64(len(f)) {\n\t\treturn 0, io.EOF\n\t}\n\tn = copy(ls, f[offset:])\n\tif n < len(ls) {\n\t\treturn n, io.EOF\n\t}\n\treturn n, nil\n}\n\nfunc (fs *root) Filelist(r *Request) (ListerAt, error) {\n\tif fs.mockErr != nil {\n\t\treturn nil, fs.mockErr\n\t}\n\t_ = r.WithContext(r.Context()) // initialize context for deadlock testing\n\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\n\tswitch r.Method {\n\tcase \"List\":\n\t\tfiles, err := fs.readdir(r.Filepath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn listerat(files), nil\n\n\tcase \"Stat\":\n\t\tfile, err := fs.fetch(r.Filepath)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn listerat{file}, nil\n\t}\n\n\treturn nil, errors.New(\"unsupported\")\n}\n\nfunc (fs *root) readdir(pathname string) ([]os.FileInfo, error) {\n\tdir, err := fs.fetch(pathname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tif !dir.IsDir() {\n\t\treturn nil, syscall.ENOTDIR\n\t}\n\n\tvar files []os.FileInfo\n\n\tfor name, file := range fs.files {\n\t\tif path.Dir(name) == dir.name {\n\t\t\tfiles = append(files, file)\n\t\t}\n\t}\n\n\tsort.Slice(files, func(i, j int) bool { return files[i].Name() < files[j].Name() })\n\n\treturn files, nil\n}\n\nfunc (fs *root) Readlink(pathname string) (string, error) {\n\tfile, err := fs.lfetch(pathname)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif file.symlink == \"\" {\n\t\treturn \"\", os.ErrInvalid\n\t}\n\n\treturn file.symlink, nil\n}\n\n// implements LstatFileLister interface\nfunc (fs *root) Lstat(r *Request) (ListerAt, error) {\n\tif fs.mockErr != nil {\n\t\treturn nil, fs.mockErr\n\t}\n\t_ = r.WithContext(r.Context()) // initialize context for deadlock testing\n\n\tfs.mu.Lock()\n\tdefer fs.mu.Unlock()\n\n\tfile, err := fs.lfetch(r.Filepath)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn listerat{file}, nil\n}\n\n// In memory file-system-y thing that the Hanlders live on\ntype root struct {\n\trootFile *memFile\n\tmockErr  error\n\n\tmu    sync.Mutex\n\tfiles map[string]*memFile\n}\n\n// Set a mocked error that the next handler call will return.\n// Set to nil to reset for no error.\nfunc (fs *root) returnErr(err error) {\n\tfs.mockErr = err\n}\n\nfunc (fs *root) lfetch(path string) (*memFile, error) {\n\tif path == \"/\" {\n\t\treturn fs.rootFile, nil\n\t}\n\n\tfile, ok := fs.files[path]\n\tif file == nil {\n\t\tif ok {\n\t\t\tdelete(fs.files, path)\n\t\t}\n\n\t\treturn nil, os.ErrNotExist\n\t}\n\n\treturn file, nil\n}\n\n// canonName returns the “canonical” name of a file, that is:\n// if the directory of the pathname is a symlink, it follows that symlink to the valid directory name.\n// this is relatively easy, since `dir.name` will be the only valid canonical path for a directory.\nfunc (fs *root) canonName(pathname string) (string, error) {\n\tdirname, filename := path.Dir(pathname), path.Base(pathname)\n\n\tdir, err := fs.fetch(dirname)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tif !dir.IsDir() {\n\t\treturn \"\", syscall.ENOTDIR\n\t}\n\n\treturn path.Join(dir.name, filename), nil\n}\n\nfunc (fs *root) exists(path string) bool {\n\tpath, err := fs.canonName(path)\n\tif err != nil {\n\t\treturn false\n\t}\n\n\t_, err = fs.lfetch(path)\n\n\treturn err != os.ErrNotExist\n}\n\nfunc (fs *root) fetch(pathname string) (*memFile, error) {\n\tfile, err := fs.lfetch(pathname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar count int\n\tfor file.symlink != \"\" {\n\t\tif count++; count > maxSymlinkFollows {\n\t\t\treturn nil, errTooManySymlinks\n\t\t}\n\n\t\tlinkTarget := file.symlink\n\t\tif !path.IsAbs(linkTarget) {\n\t\t\tlinkTarget = path.Join(path.Dir(file.name), linkTarget)\n\t\t}\n\n\t\tfile, err = fs.lfetch(linkTarget)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn file, nil\n}\n\n// Implements os.FileInfo, io.ReaderAt and io.WriterAt interfaces.\n// These are the 3 interfaces necessary for the Handlers.\n// Implements the optional interface TransferError.\ntype memFile struct {\n\tname    string\n\tmodtime time.Time\n\tsymlink string\n\tisdir   bool\n\n\tmu      sync.RWMutex\n\tcontent []byte\n\terr     error\n}\n\n// These are helper functions, they must be called while holding the memFile.mu mutex\nfunc (f *memFile) size() int64  { return int64(len(f.content)) }\nfunc (f *memFile) grow(n int64) { f.content = append(f.content, make([]byte, n)...) }\n\n// Have memFile fulfill os.FileInfo interface\nfunc (f *memFile) Name() string { return path.Base(f.name) }\nfunc (f *memFile) Size() int64 {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\treturn f.size()\n}\nfunc (f *memFile) Mode() os.FileMode {\n\tif f.isdir {\n\t\treturn os.FileMode(0755) | os.ModeDir\n\t}\n\tif f.symlink != \"\" {\n\t\treturn os.FileMode(0777) | os.ModeSymlink\n\t}\n\treturn os.FileMode(0644)\n}\nfunc (f *memFile) ModTime() time.Time { return f.modtime }\nfunc (f *memFile) IsDir() bool        { return f.isdir }\nfunc (f *memFile) Sys() any {\n\treturn fakeFileInfoSys()\n}\n\nfunc (f *memFile) ReadAt(b []byte, off int64) (int, error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.err != nil {\n\t\treturn 0, f.err\n\t}\n\n\tif off < 0 {\n\t\treturn 0, errors.New(\"memFile.ReadAt: negative offset\")\n\t}\n\n\tif off >= f.size() {\n\t\treturn 0, io.EOF\n\t}\n\n\tn := copy(b, f.content[off:])\n\tif n < len(b) {\n\t\treturn n, io.EOF\n\t}\n\n\treturn n, nil\n}\n\nfunc (f *memFile) WriteAt(b []byte, off int64) (int, error) {\n\t// fmt.Println(string(p), off)\n\t// mimic write delays, should be optional\n\ttime.Sleep(time.Microsecond * time.Duration(len(b)))\n\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.err != nil {\n\t\treturn 0, f.err\n\t}\n\n\tgrow := int64(len(b)) + off - f.size()\n\tif grow > 0 {\n\t\tf.grow(grow)\n\t}\n\n\treturn copy(f.content[off:], b), nil\n}\n\nfunc (f *memFile) Truncate(size int64) error {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tif f.err != nil {\n\t\treturn f.err\n\t}\n\n\tgrow := size - f.size()\n\tif grow <= 0 {\n\t\tf.content = f.content[:size]\n\t} else {\n\t\tf.grow(grow)\n\t}\n\n\treturn nil\n}\n\nfunc (f *memFile) TransferError(err error) {\n\tf.mu.Lock()\n\tdefer f.mu.Unlock()\n\n\tf.err = err\n}\n"
  },
  {
    "path": "gossh/sftp/request-interfaces.go",
    "content": "package sftp\n\nimport (\n\t\"io\"\n\t\"os\"\n)\n\n// WriterAtReaderAt defines the interface to return when a file is to\n// be opened for reading and writing\ntype WriterAtReaderAt interface {\n\tio.WriterAt\n\tio.ReaderAt\n}\n\n// Interfaces are differentiated based on required returned values.\n// All input arguments are to be pulled from Request (the only arg).\n\n// The Handler interfaces all take the Request object as its only argument.\n// All the data you should need to handle the call are in the Request object.\n// The request.Method attribute is initially the most important one as it\n// determines which Handler gets called.\n\n// FileReader should return an io.ReaderAt for the filepath\n// Note in cases of an error, the error text will be sent to the client.\n// Called for Methods: Get\ntype FileReader interface {\n\tFileread(*Request) (io.ReaderAt, error)\n}\n\n// FileWriter should return an io.WriterAt for the filepath.\n//\n// The request server code will call Close() on the returned io.WriterAt\n// object if an io.Closer type assertion succeeds.\n// Note in cases of an error, the error text will be sent to the client.\n// Note when receiving an Append flag it is important to not open files using\n// O_APPEND if you plan to use WriteAt, as they conflict.\n// Called for Methods: Put, Open\ntype FileWriter interface {\n\tFilewrite(*Request) (io.WriterAt, error)\n}\n\n// OpenFileWriter is a FileWriter that implements the generic OpenFile method.\n// You need to implement this optional interface if you want to be able\n// to read and write from/to the same handle.\n// Called for Methods: Open\ntype OpenFileWriter interface {\n\tFileWriter\n\tOpenFile(*Request) (WriterAtReaderAt, error)\n}\n\n// FileCmder should return an error\n// Note in cases of an error, the error text will be sent to the client.\n// Called for Methods: Setstat, Rename, Rmdir, Mkdir, Link, Symlink, Remove\ntype FileCmder interface {\n\tFilecmd(*Request) error\n}\n\n// PosixRenameFileCmder is a FileCmder that implements the PosixRename method.\n// If this interface is implemented PosixRename requests will call it\n// otherwise they will be handled in the same way as Rename\ntype PosixRenameFileCmder interface {\n\tFileCmder\n\tPosixRename(*Request) error\n}\n\n// StatVFSFileCmder is a FileCmder that implements the StatVFS method.\n// You need to implement this interface if you want to handle statvfs requests.\n// Please also be sure that the statvfs@openssh.com extension is enabled\ntype StatVFSFileCmder interface {\n\tFileCmder\n\tStatVFS(*Request) (*StatVFS, error)\n}\n\n// FileLister should return an object that fulfils the ListerAt interface\n// Note in cases of an error, the error text will be sent to the client.\n// Called for Methods: List, Stat, Readlink\n//\n// Since Filelist returns an os.FileInfo, this can make it non-ideal for implementing Readlink.\n// This is because the Name receiver method defined by that interface defines that it should only return the base name.\n// However, Readlink is required to be capable of returning essentially any arbitrary valid path relative or absolute.\n// In order to implement this more expressive requirement, implement [ReadlinkFileLister] which will then be used instead.\ntype FileLister interface {\n\tFilelist(*Request) (ListerAt, error)\n}\n\n// LstatFileLister is a FileLister that implements the Lstat method.\n// If this interface is implemented Lstat requests will call it\n// otherwise they will be handled in the same way as Stat\ntype LstatFileLister interface {\n\tFileLister\n\tLstat(*Request) (ListerAt, error)\n}\n\n// RealPathFileLister is a FileLister that implements the Realpath method.\n// The built-in RealPath implementation does not resolve symbolic links.\n// By implementing this interface you can customize the returned path\n// and, for example, resolve symbolinc links if needed for your use case.\n// You have to return an absolute POSIX path.\n//\n// Up to v1.13.5 the signature for the RealPath method was:\n//\n// # RealPath(string) string\n//\n// we have added a legacyRealPathFileLister that implements the old method\n// to ensure that your code does not break.\n// You should use the new method signature to avoid future issues\ntype RealPathFileLister interface {\n\tFileLister\n\tRealPath(string) (string, error)\n}\n\n// ReadlinkFileLister is a FileLister that implements the Readlink method.\n// By implementing the Readlink method, it is possible to return any arbitrary valid path relative or absolute.\n// This allows giving a better response than via the default FileLister (which is limited to os.FileInfo, whose Name method should only return the base name of a file)\ntype ReadlinkFileLister interface {\n\tFileLister\n\tReadlink(string) (string, error)\n}\n\n// This interface is here for backward compatibility only\ntype legacyRealPathFileLister interface {\n\tFileLister\n\tRealPath(string) string\n}\n\n// NameLookupFileLister is a FileLister that implmeents the LookupUsername and LookupGroupName methods.\n// If this interface is implemented, then longname ls formatting will use these to convert usernames and groupnames.\ntype NameLookupFileLister interface {\n\tFileLister\n\tLookupUserName(string) string\n\tLookupGroupName(string) string\n}\n\n// ListerAt does for file lists what io.ReaderAt does for files, i.e. a []os.FileInfo buffer is passed to the ListAt function\n// and the entries that are populated in the buffer will be passed to the client.\n//\n// ListAt should return the number of entries copied and an io.EOF error if at end of list.\n// This is testable by comparing how many you copied to how many could be copied (eg. n < len(ls) below).\n// The copy() builtin is best for the copying.\n//\n// Uid and gid information will on unix systems be retrieved from [os.FileInfo.Sys]\n// if this function returns a [syscall.Stat_t] when called on a populated entry.\n// Alternatively, if the entry implements [FileInfoUidGid], it will be used for uid and gid information.\n//\n// If a populated entry implements [FileInfoExtendedData], extended attributes will also be returned to the client.\n//\n// Note in cases of an error, the error text will be sent to the client.\ntype ListerAt interface {\n\tListAt([]os.FileInfo, int64) (int, error)\n}\n\n// TransferError is an optional interface that readerAt and writerAt\n// can implement to be notified about the error causing Serve() to exit\n// with the request still open\ntype TransferError interface {\n\tTransferError(err error)\n}\n"
  },
  {
    "path": "gossh/sftp/request-plan9.go",
    "content": "//go:build plan9\n// +build plan9\n\npackage sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc fakeFileInfoSys() any {\n\treturn &syscall.Dir{}\n}\n\nfunc testOsSys(sys any) error {\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/request-server.go",
    "content": "package sftp\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"io\"\n\t\"path\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"sync\"\n)\n\nvar maxTxPacket uint32 = 1 << 15\n\n// Handlers contains the 4 SFTP server request handlers.\ntype Handlers struct {\n\tFileGet  FileReader\n\tFilePut  FileWriter\n\tFileCmd  FileCmder\n\tFileList FileLister\n}\n\n// RequestServer abstracts the sftp protocol with an http request-like protocol\ntype RequestServer struct {\n\tHandlers Handlers\n\n\t*serverConn\n\tpktMgr *packetManager\n\n\tstartDirectory string\n\n\tmu           sync.RWMutex\n\thandleCount  int\n\topenRequests map[string]*Request\n}\n\n// A RequestServerOption is a function which applies configuration to a RequestServer.\ntype RequestServerOption func(*RequestServer)\n\n// WithRSAllocator enable the allocator.\n// After processing a packet we keep in memory the allocated slices\n// and we reuse them for new packets.\n// The allocator is experimental\nfunc WithRSAllocator() RequestServerOption {\n\treturn func(rs *RequestServer) {\n\t\talloc := newAllocator()\n\t\trs.pktMgr.alloc = alloc\n\t\trs.conn.alloc = alloc\n\t}\n}\n\n// WithStartDirectory sets a start directory to use as base for relative paths.\n// If unset the default is \"/\"\nfunc WithStartDirectory(startDirectory string) RequestServerOption {\n\treturn func(rs *RequestServer) {\n\t\trs.startDirectory = cleanPath(startDirectory)\n\t}\n}\n\n// NewRequestServer creates/allocates/returns new RequestServer.\n// Normally there will be one server per user-session.\nfunc NewRequestServer(rwc io.ReadWriteCloser, h Handlers, options ...RequestServerOption) *RequestServer {\n\tsvrConn := &serverConn{\n\t\tconn: conn{\n\t\t\tReader:      rwc,\n\t\t\tWriteCloser: rwc,\n\t\t},\n\t}\n\trs := &RequestServer{\n\t\tHandlers: h,\n\n\t\tserverConn: svrConn,\n\t\tpktMgr:     newPktMgr(svrConn),\n\n\t\tstartDirectory: \"/\",\n\n\t\topenRequests: make(map[string]*Request),\n\t}\n\n\tfor _, o := range options {\n\t\to(rs)\n\t}\n\treturn rs\n}\n\n// New Open packet/Request\nfunc (rs *RequestServer) nextRequest(r *Request) string {\n\trs.mu.Lock()\n\tdefer rs.mu.Unlock()\n\n\trs.handleCount++\n\n\tr.handle = strconv.Itoa(rs.handleCount)\n\trs.openRequests[r.handle] = r\n\n\treturn r.handle\n}\n\n// Returns Request from openRequests, bool is false if it is missing.\n//\n// The Requests in openRequests work essentially as open file descriptors that\n// you can do different things with. What you are doing with it are denoted by\n// the first packet of that type (read/write/etc).\nfunc (rs *RequestServer) getRequest(handle string) (*Request, bool) {\n\trs.mu.RLock()\n\tdefer rs.mu.RUnlock()\n\n\tr, ok := rs.openRequests[handle]\n\treturn r, ok\n}\n\n// Close the Request and clear from openRequests map\nfunc (rs *RequestServer) closeRequest(handle string) error {\n\trs.mu.Lock()\n\tdefer rs.mu.Unlock()\n\n\tif r, ok := rs.openRequests[handle]; ok {\n\t\tdelete(rs.openRequests, handle)\n\t\treturn r.close()\n\t}\n\n\treturn EBADF\n}\n\n// Close the read/write/closer to trigger exiting the main server loop\nfunc (rs *RequestServer) Close() error { return rs.conn.Close() }\n\nfunc (rs *RequestServer) serveLoop(pktChan chan<- orderedRequest) error {\n\tdefer close(pktChan) // shuts down sftpServerWorkers\n\n\tvar err error\n\tvar pkt requestPacket\n\tvar pktType uint8\n\tvar pktBytes []byte\n\n\tfor {\n\t\tpktType, pktBytes, err = rs.serverConn.recvPacket(rs.pktMgr.getNextOrderID())\n\t\tif err != nil {\n\t\t\t// we don't care about releasing allocated pages here, the server will quit and the allocator freed\n\t\t\treturn err\n\t\t}\n\n\t\tpkt, err = makePacket(rxPacket{fxp(pktType), pktBytes})\n\t\tif err != nil {\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, errUnknownExtendedPacket):\n\t\t\t\t// do nothing\n\t\t\tdefault:\n\t\t\t\tdebug(\"makePacket err: %v\", err)\n\t\t\t\trs.conn.Close() // shuts down recvPacket\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\tpktChan <- rs.pktMgr.newOrderedRequest(pkt)\n\t}\n}\n\n// Serve requests for user session\nfunc (rs *RequestServer) Serve() error {\n\tdefer func() {\n\t\tif rs.pktMgr.alloc != nil {\n\t\t\trs.pktMgr.alloc.Free()\n\t\t}\n\t}()\n\n\tctx, cancel := context.WithCancel(context.Background())\n\tdefer cancel()\n\n\tvar wg sync.WaitGroup\n\trunWorker := func(ch chan orderedRequest) {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tif err := rs.packetWorker(ctx, ch); err != nil {\n\t\t\t\trs.conn.Close() // shuts down recvPacket\n\t\t\t}\n\t\t}()\n\t}\n\tpktChan := rs.pktMgr.workerChan(runWorker)\n\n\terr := rs.serveLoop(pktChan)\n\n\twg.Wait() // wait for all workers to exit\n\n\trs.mu.Lock()\n\tdefer rs.mu.Unlock()\n\n\t// make sure all open requests are properly closed\n\t// (eg. possible on dropped connections, client crashes, etc.)\n\tfor handle, req := range rs.openRequests {\n\t\tif err == io.EOF {\n\t\t\terr = io.ErrUnexpectedEOF\n\t\t}\n\t\treq.transferError(err)\n\n\t\tdelete(rs.openRequests, handle)\n\t\treq.close()\n\t}\n\n\treturn err\n}\n\nfunc (rs *RequestServer) packetWorker(ctx context.Context, pktChan chan orderedRequest) error {\n\tfor pkt := range pktChan {\n\t\torderID := pkt.orderID()\n\t\tif epkt, ok := pkt.requestPacket.(*sshFxpExtendedPacket); ok {\n\t\t\tif epkt.SpecificPacket != nil {\n\t\t\t\tpkt.requestPacket = epkt.SpecificPacket\n\t\t\t}\n\t\t}\n\n\t\tvar rpkt responsePacket\n\t\tswitch pkt := pkt.requestPacket.(type) {\n\t\tcase *sshFxInitPacket:\n\t\t\trpkt = &sshFxVersionPacket{Version: sftpProtocolVersion, Extensions: sftpExtensions}\n\t\tcase *sshFxpClosePacket:\n\t\t\thandle := pkt.getHandle()\n\t\t\trpkt = statusFromError(pkt.ID, rs.closeRequest(handle))\n\t\tcase *sshFxpRealpathPacket:\n\t\t\tvar realPath string\n\t\t\tvar err error\n\n\t\t\tswitch pather := rs.Handlers.FileList.(type) {\n\t\t\tcase RealPathFileLister:\n\t\t\t\trealPath, err = pather.RealPath(pkt.getPath())\n\t\t\tcase legacyRealPathFileLister:\n\t\t\t\trealPath = pather.RealPath(pkt.getPath())\n\t\t\tdefault:\n\t\t\t\trealPath = cleanPathWithBase(rs.startDirectory, pkt.getPath())\n\t\t\t}\n\t\t\tif err != nil {\n\t\t\t\trpkt = statusFromError(pkt.ID, err)\n\t\t\t} else {\n\t\t\t\trpkt = cleanPacketPath(pkt, realPath)\n\t\t\t}\n\t\tcase *sshFxpOpendirPacket:\n\t\t\trequest := requestFromPacket(ctx, pkt, rs.startDirectory)\n\t\t\thandle := rs.nextRequest(request)\n\t\t\trpkt = request.opendir(rs.Handlers, pkt)\n\t\t\tif _, ok := rpkt.(*sshFxpHandlePacket); !ok {\n\t\t\t\t// if we return an error we have to remove the handle from the active ones\n\t\t\t\trs.closeRequest(handle)\n\t\t\t}\n\t\tcase *sshFxpOpenPacket:\n\t\t\trequest := requestFromPacket(ctx, pkt, rs.startDirectory)\n\t\t\thandle := rs.nextRequest(request)\n\t\t\trpkt = request.open(rs.Handlers, pkt)\n\t\t\tif _, ok := rpkt.(*sshFxpHandlePacket); !ok {\n\t\t\t\t// if we return an error we have to remove the handle from the active ones\n\t\t\t\trs.closeRequest(handle)\n\t\t\t}\n\t\tcase *sshFxpFstatPacket:\n\t\t\thandle := pkt.getHandle()\n\t\t\trequest, ok := rs.getRequest(handle)\n\t\t\tif !ok {\n\t\t\t\trpkt = statusFromError(pkt.ID, EBADF)\n\t\t\t} else {\n\t\t\t\trequest = &Request{\n\t\t\t\t\tMethod:   \"Stat\",\n\t\t\t\t\tFilepath: cleanPathWithBase(rs.startDirectory, request.Filepath),\n\t\t\t\t}\n\t\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\t\t}\n\t\tcase *sshFxpFsetstatPacket:\n\t\t\thandle := pkt.getHandle()\n\t\t\trequest, ok := rs.getRequest(handle)\n\t\t\tif !ok {\n\t\t\t\trpkt = statusFromError(pkt.ID, EBADF)\n\t\t\t} else {\n\t\t\t\trequest = &Request{\n\t\t\t\t\tMethod:   \"Setstat\",\n\t\t\t\t\tFilepath: cleanPathWithBase(rs.startDirectory, request.Filepath),\n\t\t\t\t}\n\t\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\t\t}\n\t\tcase *sshFxpExtendedPacketPosixRename:\n\t\t\trequest := &Request{\n\t\t\t\tMethod:   \"PosixRename\",\n\t\t\t\tFilepath: cleanPathWithBase(rs.startDirectory, pkt.Oldpath),\n\t\t\t\tTarget:   cleanPathWithBase(rs.startDirectory, pkt.Newpath),\n\t\t\t}\n\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\tcase *sshFxpExtendedPacketStatVFS:\n\t\t\trequest := &Request{\n\t\t\t\tMethod:   \"StatVFS\",\n\t\t\t\tFilepath: cleanPathWithBase(rs.startDirectory, pkt.Path),\n\t\t\t}\n\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\tcase hasHandle:\n\t\t\thandle := pkt.getHandle()\n\t\t\trequest, ok := rs.getRequest(handle)\n\t\t\tif !ok {\n\t\t\t\trpkt = statusFromError(pkt.id(), EBADF)\n\t\t\t} else {\n\t\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\t\t}\n\t\tcase hasPath:\n\t\t\trequest := requestFromPacket(ctx, pkt, rs.startDirectory)\n\t\t\trpkt = request.call(rs.Handlers, pkt, rs.pktMgr.alloc, orderID)\n\t\t\trequest.close()\n\t\tdefault:\n\t\t\trpkt = statusFromError(pkt.id(), ErrSSHFxOpUnsupported)\n\t\t}\n\n\t\trs.pktMgr.readyPacket(\n\t\t\trs.pktMgr.newOrderedResponse(rpkt, orderID))\n\t}\n\treturn nil\n}\n\n// clean and return name packet for file\nfunc cleanPacketPath(pkt *sshFxpRealpathPacket, realPath string) responsePacket {\n\treturn &sshFxpNamePacket{\n\t\tID: pkt.id(),\n\t\tNameAttrs: []*sshFxpNameAttr{\n\t\t\t{\n\t\t\t\tName:     realPath,\n\t\t\t\tLongName: realPath,\n\t\t\t\tAttrs:    emptyFileStat,\n\t\t\t},\n\t\t},\n\t}\n}\n\n// Makes sure we have a clean POSIX (/) absolute path to work with\nfunc cleanPath(p string) string {\n\treturn cleanPathWithBase(\"/\", p)\n}\n\nfunc cleanPathWithBase(base, p string) string {\n\tp = filepath.ToSlash(filepath.Clean(p))\n\tif !path.IsAbs(p) {\n\t\treturn path.Join(base, p)\n\t}\n\treturn p\n}\n"
  },
  {
    "path": "gossh/sftp/request-unix.go",
    "content": "//go:build !windows && !plan9\n// +build !windows,!plan9\n\npackage sftp\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n)\n\nfunc fakeFileInfoSys() any {\n\treturn &syscall.Stat_t{Uid: 65534, Gid: 65534}\n}\n\nfunc testOsSys(sys any) error {\n\tfstat := sys.(*FileStat)\n\tif fstat.UID != uint32(65534) {\n\t\treturn errors.New(\"Uid failed to match\")\n\t}\n\tif fstat.GID != uint32(65534) {\n\t\treturn errors.New(\"Gid failed to match\")\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/request.go",
    "content": "package sftp\n\nimport (\n\t\"context\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n)\n\n// MaxFilelist is the max number of files to return in a readdir batch.\nvar MaxFilelist int64 = 100\n\n// state encapsulates the reader/writer/readdir from handlers.\ntype state struct {\n\tmu sync.RWMutex\n\n\twriterAt         io.WriterAt\n\treaderAt         io.ReaderAt\n\twriterAtReaderAt WriterAtReaderAt\n\tlisterAt         ListerAt\n\tlsoffset         int64\n}\n\n// copy returns a shallow copy the state.\n// This is broken out to specific fields,\n// because we have to copy around the mutex in state.\nfunc (s *state) copy() state {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn state{\n\t\twriterAt:         s.writerAt,\n\t\treaderAt:         s.readerAt,\n\t\twriterAtReaderAt: s.writerAtReaderAt,\n\t\tlisterAt:         s.listerAt,\n\t\tlsoffset:         s.lsoffset,\n\t}\n}\n\nfunc (s *state) setReaderAt(rd io.ReaderAt) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\ts.readerAt = rd\n}\n\nfunc (s *state) getReaderAt() io.ReaderAt {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.readerAt\n}\n\nfunc (s *state) setWriterAt(rd io.WriterAt) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\ts.writerAt = rd\n}\n\nfunc (s *state) getWriterAt() io.WriterAt {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.writerAt\n}\n\nfunc (s *state) setWriterAtReaderAt(rw WriterAtReaderAt) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\ts.writerAtReaderAt = rw\n}\n\nfunc (s *state) getWriterAtReaderAt() WriterAtReaderAt {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.writerAtReaderAt\n}\n\nfunc (s *state) getAllReaderWriters() (io.ReaderAt, io.WriterAt, WriterAtReaderAt) {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.readerAt, s.writerAt, s.writerAtReaderAt\n}\n\n// Returns current offset for file list\nfunc (s *state) lsNext() int64 {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.lsoffset\n}\n\n// Increases next offset\nfunc (s *state) lsInc(offset int64) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\ts.lsoffset += offset\n}\n\n// manage file read/write state\nfunc (s *state) setListerAt(la ListerAt) {\n\ts.mu.Lock()\n\tdefer s.mu.Unlock()\n\n\ts.listerAt = la\n}\n\nfunc (s *state) getListerAt() ListerAt {\n\ts.mu.RLock()\n\tdefer s.mu.RUnlock()\n\n\treturn s.listerAt\n}\n\n// Request contains the data and state for the incoming service request.\ntype Request struct {\n\t// Get, Put, Setstat, Stat, Rename, Remove\n\t// Rmdir, Mkdir, List, Readlink, Link, Symlink\n\tMethod   string\n\tFilepath string\n\tFlags    uint32\n\tAttrs    []byte // convert to sub-struct\n\tTarget   string // for renames and sym-links\n\thandle   string\n\n\t// reader/writer/readdir from handlers\n\tstate\n\n\t// context lasts duration of request\n\tctx       context.Context\n\tcancelCtx context.CancelFunc\n}\n\n// NewRequest creates a new Request object.\nfunc NewRequest(method, path string) *Request {\n\treturn &Request{\n\t\tMethod:   method,\n\t\tFilepath: cleanPath(path),\n\t}\n}\n\n// copy returns a shallow copy of existing request.\n// This is broken out to specific fields,\n// because we have to copy around the mutex in state.\nfunc (r *Request) copy() *Request {\n\treturn &Request{\n\t\tMethod:   r.Method,\n\t\tFilepath: r.Filepath,\n\t\tFlags:    r.Flags,\n\t\tAttrs:    r.Attrs,\n\t\tTarget:   r.Target,\n\t\thandle:   r.handle,\n\n\t\tstate: r.state.copy(),\n\n\t\tctx:       r.ctx,\n\t\tcancelCtx: r.cancelCtx,\n\t}\n}\n\n// New Request initialized based on packet data\nfunc requestFromPacket(ctx context.Context, pkt hasPath, baseDir string) *Request {\n\trequest := &Request{\n\t\tMethod:   requestMethod(pkt),\n\t\tFilepath: cleanPathWithBase(baseDir, pkt.getPath()),\n\t}\n\trequest.ctx, request.cancelCtx = context.WithCancel(ctx)\n\n\tswitch p := pkt.(type) {\n\tcase *sshFxpOpenPacket:\n\t\trequest.Flags = p.Pflags\n\t\trequest.Attrs = p.Attrs.([]byte)\n\tcase *sshFxpSetstatPacket:\n\t\trequest.Flags = p.Flags\n\t\trequest.Attrs = p.Attrs.([]byte)\n\tcase *sshFxpRenamePacket:\n\t\trequest.Target = cleanPathWithBase(baseDir, p.Newpath)\n\tcase *sshFxpSymlinkPacket:\n\t\t// NOTE: given a POSIX compliant signature: symlink(target, linkpath string)\n\t\t// this makes Request.Target the linkpath, and Request.Filepath the target.\n\t\trequest.Target = cleanPathWithBase(baseDir, p.Linkpath)\n\t\trequest.Filepath = p.Targetpath\n\tcase *sshFxpExtendedPacketHardlink:\n\t\trequest.Target = cleanPathWithBase(baseDir, p.Newpath)\n\t}\n\treturn request\n}\n\n// Context returns the request's context. To change the context,\n// use WithContext.\n//\n// The returned context is always non-nil; it defaults to the\n// background context.\n//\n// For incoming server requests, the context is canceled when the\n// request is complete or the client's connection closes.\nfunc (r *Request) Context() context.Context {\n\tif r.ctx != nil {\n\t\treturn r.ctx\n\t}\n\treturn context.Background()\n}\n\n// WithContext returns a copy of r with its context changed to ctx.\n// The provided ctx must be non-nil.\nfunc (r *Request) WithContext(ctx context.Context) *Request {\n\tif ctx == nil {\n\t\tpanic(\"nil context\")\n\t}\n\tr2 := r.copy()\n\tr2.ctx = ctx\n\tr2.cancelCtx = nil\n\treturn r2\n}\n\n// Close reader/writer if possible\nfunc (r *Request) close() error {\n\tdefer func() {\n\t\tif r.cancelCtx != nil {\n\t\t\tr.cancelCtx()\n\t\t}\n\t}()\n\n\trd, wr, rw := r.getAllReaderWriters()\n\n\tvar err error\n\n\t// Close errors on a Writer are far more likely to be the important one.\n\t// As they can be information that there was a loss of data.\n\tif c, ok := wr.(io.Closer); ok {\n\t\tif err2 := c.Close(); err == nil {\n\t\t\t// update error if it is still nil\n\t\t\terr = err2\n\t\t}\n\t}\n\n\tif c, ok := rw.(io.Closer); ok {\n\t\tif err2 := c.Close(); err == nil {\n\t\t\t// update error if it is still nil\n\t\t\terr = err2\n\n\t\t\tr.setWriterAtReaderAt(nil)\n\t\t}\n\t}\n\n\tif c, ok := rd.(io.Closer); ok {\n\t\tif err2 := c.Close(); err == nil {\n\t\t\t// update error if it is still nil\n\t\t\terr = err2\n\t\t}\n\t}\n\n\treturn err\n}\n\n// Notify transfer error if any\nfunc (r *Request) transferError(err error) {\n\tif err == nil {\n\t\treturn\n\t}\n\n\trd, wr, rw := r.getAllReaderWriters()\n\n\tif t, ok := wr.(TransferError); ok {\n\t\tt.TransferError(err)\n\t}\n\n\tif t, ok := rw.(TransferError); ok {\n\t\tt.TransferError(err)\n\t}\n\n\tif t, ok := rd.(TransferError); ok {\n\t\tt.TransferError(err)\n\t}\n}\n\n// called from worker to handle packet/request\nfunc (r *Request) call(handlers Handlers, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket {\n\tswitch r.Method {\n\tcase \"Get\":\n\t\treturn fileget(handlers.FileGet, r, pkt, alloc, orderID)\n\tcase \"Put\":\n\t\treturn fileput(handlers.FilePut, r, pkt, alloc, orderID)\n\tcase \"Open\":\n\t\treturn fileputget(handlers.FilePut, r, pkt, alloc, orderID)\n\tcase \"Setstat\", \"Rename\", \"Rmdir\", \"Mkdir\", \"Link\", \"Symlink\", \"Remove\", \"PosixRename\", \"StatVFS\":\n\t\treturn filecmd(handlers.FileCmd, r, pkt)\n\tcase \"List\":\n\t\treturn filelist(handlers.FileList, r, pkt)\n\tcase \"Stat\", \"Lstat\":\n\t\treturn filestat(handlers.FileList, r, pkt)\n\tcase \"Readlink\":\n\t\tif readlinkFileLister, ok := handlers.FileList.(ReadlinkFileLister); ok {\n\t\t\treturn readlink(readlinkFileLister, r, pkt)\n\t\t}\n\t\treturn filestat(handlers.FileList, r, pkt)\n\tdefault:\n\t\treturn statusFromError(pkt.id(), fmt.Errorf(\"unexpected method: %s\", r.Method))\n\t}\n}\n\n// Additional initialization for Open packets\nfunc (r *Request) open(h Handlers, pkt requestPacket) responsePacket {\n\tflags := r.Pflags()\n\n\tid := pkt.id()\n\n\tswitch {\n\tcase flags.Write, flags.Append, flags.Creat, flags.Trunc:\n\t\tif flags.Read {\n\t\t\tif openFileWriter, ok := h.FilePut.(OpenFileWriter); ok {\n\t\t\t\tr.Method = \"Open\"\n\t\t\t\trw, err := openFileWriter.OpenFile(r)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn statusFromError(id, err)\n\t\t\t\t}\n\n\t\t\t\tr.setWriterAtReaderAt(rw)\n\n\t\t\t\treturn &sshFxpHandlePacket{\n\t\t\t\t\tID:     id,\n\t\t\t\t\tHandle: r.handle,\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tr.Method = \"Put\"\n\t\twr, err := h.FilePut.Filewrite(r)\n\t\tif err != nil {\n\t\t\treturn statusFromError(id, err)\n\t\t}\n\n\t\tr.setWriterAt(wr)\n\n\tcase flags.Read:\n\t\tr.Method = \"Get\"\n\t\trd, err := h.FileGet.Fileread(r)\n\t\tif err != nil {\n\t\t\treturn statusFromError(id, err)\n\t\t}\n\n\t\tr.setReaderAt(rd)\n\n\tdefault:\n\t\treturn statusFromError(id, errors.New(\"bad file flags\"))\n\t}\n\n\treturn &sshFxpHandlePacket{\n\t\tID:     id,\n\t\tHandle: r.handle,\n\t}\n}\n\nfunc (r *Request) opendir(h Handlers, pkt requestPacket) responsePacket {\n\tr.Method = \"List\"\n\tla, err := h.FileList.Filelist(r)\n\tif err != nil {\n\t\treturn statusFromError(pkt.id(), wrapPathError(r.Filepath, err))\n\t}\n\n\tr.setListerAt(la)\n\n\treturn &sshFxpHandlePacket{\n\t\tID:     pkt.id(),\n\t\tHandle: r.handle,\n\t}\n}\n\n// wrap FileReader handler\nfunc fileget(h FileReader, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket {\n\trd := r.getReaderAt()\n\tif rd == nil {\n\t\treturn statusFromError(pkt.id(), errors.New(\"unexpected read packet\"))\n\t}\n\n\tdata, offset, _ := packetData(pkt, alloc, orderID)\n\n\tn, err := rd.ReadAt(data, offset)\n\t// only return EOF error if no data left to read\n\tif err != nil && (err != io.EOF || n == 0) {\n\t\treturn statusFromError(pkt.id(), err)\n\t}\n\n\treturn &sshFxpDataPacket{\n\t\tID:     pkt.id(),\n\t\tLength: uint32(n),\n\t\tData:   data[:n],\n\t}\n}\n\n// wrap FileWriter handler\nfunc fileput(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket {\n\twr := r.getWriterAt()\n\tif wr == nil {\n\t\treturn statusFromError(pkt.id(), errors.New(\"unexpected write packet\"))\n\t}\n\n\tdata, offset, _ := packetData(pkt, alloc, orderID)\n\n\t_, err := wr.WriteAt(data, offset)\n\treturn statusFromError(pkt.id(), err)\n}\n\n// wrap OpenFileWriter handler\nfunc fileputget(h FileWriter, r *Request, pkt requestPacket, alloc *allocator, orderID uint32) responsePacket {\n\trw := r.getWriterAtReaderAt()\n\tif rw == nil {\n\t\treturn statusFromError(pkt.id(), errors.New(\"unexpected write and read packet\"))\n\t}\n\n\tswitch p := pkt.(type) {\n\tcase *sshFxpReadPacket:\n\t\tdata, offset := p.getDataSlice(alloc, orderID), int64(p.Offset)\n\n\t\tn, err := rw.ReadAt(data, offset)\n\t\t// only return EOF error if no data left to read\n\t\tif err != nil && (err != io.EOF || n == 0) {\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\n\t\treturn &sshFxpDataPacket{\n\t\t\tID:     pkt.id(),\n\t\t\tLength: uint32(n),\n\t\t\tData:   data[:n],\n\t\t}\n\n\tcase *sshFxpWritePacket:\n\t\tdata, offset := p.Data, int64(p.Offset)\n\n\t\t_, err := rw.WriteAt(data, offset)\n\t\treturn statusFromError(pkt.id(), err)\n\n\tdefault:\n\t\treturn statusFromError(pkt.id(), errors.New(\"unexpected packet type for read or write\"))\n\t}\n}\n\n// file data for additional read/write packets\nfunc packetData(p requestPacket, alloc *allocator, orderID uint32) (data []byte, offset int64, length uint32) {\n\tswitch p := p.(type) {\n\tcase *sshFxpReadPacket:\n\t\treturn p.getDataSlice(alloc, orderID), int64(p.Offset), p.Len\n\tcase *sshFxpWritePacket:\n\t\treturn p.Data, int64(p.Offset), p.Length\n\t}\n\treturn\n}\n\n// wrap FileCmder handler\nfunc filecmd(h FileCmder, r *Request, pkt requestPacket) responsePacket {\n\tswitch p := pkt.(type) {\n\tcase *sshFxpFsetstatPacket:\n\t\tr.Flags = p.Flags\n\t\tr.Attrs = p.Attrs.([]byte)\n\t}\n\n\tswitch r.Method {\n\tcase \"PosixRename\":\n\t\tif posixRenamer, ok := h.(PosixRenameFileCmder); ok {\n\t\t\terr := posixRenamer.PosixRename(r)\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\n\t\t// PosixRenameFileCmder not implemented handle this request as a Rename\n\t\tr.Method = \"Rename\"\n\t\terr := h.Filecmd(r)\n\t\treturn statusFromError(pkt.id(), err)\n\n\tcase \"StatVFS\":\n\t\tif statVFSCmdr, ok := h.(StatVFSFileCmder); ok {\n\t\t\tstat, err := statVFSCmdr.StatVFS(r)\n\t\t\tif err != nil {\n\t\t\t\treturn statusFromError(pkt.id(), err)\n\t\t\t}\n\t\t\tstat.ID = pkt.id()\n\t\t\treturn stat\n\t\t}\n\n\t\treturn statusFromError(pkt.id(), ErrSSHFxOpUnsupported)\n\t}\n\n\terr := h.Filecmd(r)\n\treturn statusFromError(pkt.id(), err)\n}\n\n// wrap FileLister handler\nfunc filelist(h FileLister, r *Request, pkt requestPacket) responsePacket {\n\tlister := r.getListerAt()\n\tif lister == nil {\n\t\treturn statusFromError(pkt.id(), errors.New(\"unexpected dir packet\"))\n\t}\n\n\toffset := r.lsNext()\n\tfinfo := make([]os.FileInfo, MaxFilelist)\n\tn, err := lister.ListAt(finfo, offset)\n\tr.lsInc(int64(n))\n\t// ignore EOF as we only return it when there are no results\n\tfinfo = finfo[:n] // avoid need for nil tests below\n\n\tswitch r.Method {\n\tcase \"List\":\n\t\tif err != nil && (err != io.EOF || n == 0) {\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\n\t\tnameAttrs := make([]*sshFxpNameAttr, 0, len(finfo))\n\n\t\t// If the type conversion fails, we get untyped `nil`,\n\t\t// which is handled by not looking up any names.\n\t\tidLookup, _ := h.(NameLookupFileLister)\n\n\t\tfor _, fi := range finfo {\n\t\t\tnameAttrs = append(nameAttrs, &sshFxpNameAttr{\n\t\t\t\tName:     fi.Name(),\n\t\t\t\tLongName: runLs(idLookup, fi),\n\t\t\t\tAttrs:    []any{fi},\n\t\t\t})\n\t\t}\n\n\t\treturn &sshFxpNamePacket{\n\t\t\tID:        pkt.id(),\n\t\t\tNameAttrs: nameAttrs,\n\t\t}\n\n\tdefault:\n\t\terr = fmt.Errorf(\"unexpected method: %s\", r.Method)\n\t\treturn statusFromError(pkt.id(), err)\n\t}\n}\n\nfunc filestat(h FileLister, r *Request, pkt requestPacket) responsePacket {\n\tvar lister ListerAt\n\tvar err error\n\n\tif r.Method == \"Lstat\" {\n\t\tif lstatFileLister, ok := h.(LstatFileLister); ok {\n\t\t\tlister, err = lstatFileLister.Lstat(r)\n\t\t} else {\n\t\t\t// LstatFileLister not implemented handle this request as a Stat\n\t\t\tr.Method = \"Stat\"\n\t\t\tlister, err = h.Filelist(r)\n\t\t}\n\t} else {\n\t\tlister, err = h.Filelist(r)\n\t}\n\tif err != nil {\n\t\treturn statusFromError(pkt.id(), err)\n\t}\n\tfinfo := make([]os.FileInfo, 1)\n\tn, err := lister.ListAt(finfo, 0)\n\tfinfo = finfo[:n] // avoid need for nil tests below\n\n\tswitch r.Method {\n\tcase \"Stat\", \"Lstat\":\n\t\tif err != nil && err != io.EOF {\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\t\tif n == 0 {\n\t\t\terr = &os.PathError{\n\t\t\t\tOp:   strings.ToLower(r.Method),\n\t\t\t\tPath: r.Filepath,\n\t\t\t\tErr:  syscall.ENOENT,\n\t\t\t}\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\t\treturn &sshFxpStatResponse{\n\t\t\tID:   pkt.id(),\n\t\t\tinfo: finfo[0],\n\t\t}\n\tcase \"Readlink\":\n\t\tif err != nil && err != io.EOF {\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\t\tif n == 0 {\n\t\t\terr = &os.PathError{\n\t\t\t\tOp:   \"readlink\",\n\t\t\t\tPath: r.Filepath,\n\t\t\t\tErr:  syscall.ENOENT,\n\t\t\t}\n\t\t\treturn statusFromError(pkt.id(), err)\n\t\t}\n\t\tfilename := finfo[0].Name()\n\t\treturn &sshFxpNamePacket{\n\t\t\tID: pkt.id(),\n\t\t\tNameAttrs: []*sshFxpNameAttr{\n\t\t\t\t{\n\t\t\t\t\tName:     filename,\n\t\t\t\t\tLongName: filename,\n\t\t\t\t\tAttrs:    emptyFileStat,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\tdefault:\n\t\terr = fmt.Errorf(\"unexpected method: %s\", r.Method)\n\t\treturn statusFromError(pkt.id(), err)\n\t}\n}\n\nfunc readlink(readlinkFileLister ReadlinkFileLister, r *Request, pkt requestPacket) responsePacket {\n\tresolved, err := readlinkFileLister.Readlink(r.Filepath)\n\tif err != nil {\n\t\treturn statusFromError(pkt.id(), err)\n\t}\n\treturn &sshFxpNamePacket{\n\t\tID: pkt.id(),\n\t\tNameAttrs: []*sshFxpNameAttr{\n\t\t\t{\n\t\t\t\tName:     resolved,\n\t\t\t\tLongName: resolved,\n\t\t\t\tAttrs:    emptyFileStat,\n\t\t\t},\n\t\t},\n\t}\n}\n\n// init attributes of request object from packet data\nfunc requestMethod(p requestPacket) (method string) {\n\tswitch p.(type) {\n\tcase *sshFxpReadPacket, *sshFxpWritePacket, *sshFxpOpenPacket:\n\t\t// set in open() above\n\tcase *sshFxpOpendirPacket, *sshFxpReaddirPacket:\n\t\t// set in opendir() above\n\tcase *sshFxpSetstatPacket, *sshFxpFsetstatPacket:\n\t\tmethod = \"Setstat\"\n\tcase *sshFxpRenamePacket:\n\t\tmethod = \"Rename\"\n\tcase *sshFxpSymlinkPacket:\n\t\tmethod = \"Symlink\"\n\tcase *sshFxpRemovePacket:\n\t\tmethod = \"Remove\"\n\tcase *sshFxpStatPacket, *sshFxpFstatPacket:\n\t\tmethod = \"Stat\"\n\tcase *sshFxpLstatPacket:\n\t\tmethod = \"Lstat\"\n\tcase *sshFxpRmdirPacket:\n\t\tmethod = \"Rmdir\"\n\tcase *sshFxpReadlinkPacket:\n\t\tmethod = \"Readlink\"\n\tcase *sshFxpMkdirPacket:\n\t\tmethod = \"Mkdir\"\n\tcase *sshFxpExtendedPacketHardlink:\n\t\tmethod = \"Link\"\n\t}\n\treturn method\n}\n"
  },
  {
    "path": "gossh/sftp/request_windows.go",
    "content": "package sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc fakeFileInfoSys() any {\n\treturn syscall.Win32FileAttributeData{}\n}\n\nfunc testOsSys(sys any) error {\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/server.go",
    "content": "package sftp\n\n// sftp server counterpart\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"strconv\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst (\n\t// SftpServerWorkerCount defines the number of workers for the SFTP server\n\tSftpServerWorkerCount = 8\n)\n\n// Server is an SSH File Transfer Protocol (sftp) server.\n// This is intended to provide the sftp subsystem to an ssh server daemon.\n// This implementation currently supports most of sftp server protocol version 3,\n// as specified at https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt\ntype Server struct {\n\t*serverConn\n\tdebugStream   io.Writer\n\treadOnly      bool\n\tpktMgr        *packetManager\n\topenFiles     map[string]*os.File\n\topenFilesLock sync.RWMutex\n\thandleCount   int\n\tworkDir       string\n}\n\nfunc (svr *Server) nextHandle(f *os.File) string {\n\tsvr.openFilesLock.Lock()\n\tdefer svr.openFilesLock.Unlock()\n\tsvr.handleCount++\n\thandle := strconv.Itoa(svr.handleCount)\n\tsvr.openFiles[handle] = f\n\treturn handle\n}\n\nfunc (svr *Server) closeHandle(handle string) error {\n\tsvr.openFilesLock.Lock()\n\tdefer svr.openFilesLock.Unlock()\n\tif f, ok := svr.openFiles[handle]; ok {\n\t\tdelete(svr.openFiles, handle)\n\t\treturn f.Close()\n\t}\n\n\treturn EBADF\n}\n\nfunc (svr *Server) getHandle(handle string) (*os.File, bool) {\n\tsvr.openFilesLock.RLock()\n\tdefer svr.openFilesLock.RUnlock()\n\tf, ok := svr.openFiles[handle]\n\treturn f, ok\n}\n\ntype serverRespondablePacket interface {\n\tencoding.BinaryUnmarshaler\n\tid() uint32\n\trespond(svr *Server) responsePacket\n}\n\n// NewServer creates a new Server instance around the provided streams, serving\n// content from the root of the filesystem.  Optionally, ServerOption\n// functions may be specified to further configure the Server.\n//\n// A subsequent call to Serve() is required to begin serving files over SFTP.\nfunc NewServer(rwc io.ReadWriteCloser, options ...ServerOption) (*Server, error) {\n\tsvrConn := &serverConn{\n\t\tconn: conn{\n\t\t\tReader:      rwc,\n\t\t\tWriteCloser: rwc,\n\t\t},\n\t}\n\ts := &Server{\n\t\tserverConn:  svrConn,\n\t\tdebugStream: ioutil.Discard,\n\t\tpktMgr:      newPktMgr(svrConn),\n\t\topenFiles:   make(map[string]*os.File),\n\t}\n\n\tfor _, o := range options {\n\t\tif err := o(s); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\n// A ServerOption is a function which applies configuration to a Server.\ntype ServerOption func(*Server) error\n\n// WithDebug enables Server debugging output to the supplied io.Writer.\nfunc WithDebug(w io.Writer) ServerOption {\n\treturn func(s *Server) error {\n\t\ts.debugStream = w\n\t\treturn nil\n\t}\n}\n\n// ReadOnly configures a Server to serve files in read-only mode.\nfunc ReadOnly() ServerOption {\n\treturn func(s *Server) error {\n\t\ts.readOnly = true\n\t\treturn nil\n\t}\n}\n\n// WithAllocator enable the allocator.\n// After processing a packet we keep in memory the allocated slices\n// and we reuse them for new packets.\n// The allocator is experimental\nfunc WithAllocator() ServerOption {\n\treturn func(s *Server) error {\n\t\talloc := newAllocator()\n\t\ts.pktMgr.alloc = alloc\n\t\ts.conn.alloc = alloc\n\t\treturn nil\n\t}\n}\n\n// WithServerWorkingDirectory sets a working directory to use as base\n// for relative paths.\n// If unset the default is current working directory (os.Getwd).\nfunc WithServerWorkingDirectory(workDir string) ServerOption {\n\treturn func(s *Server) error {\n\t\ts.workDir = cleanPath(workDir)\n\t\treturn nil\n\t}\n}\n\ntype rxPacket struct {\n\tpktType  fxp\n\tpktBytes []byte\n}\n\n// Up to N parallel servers\nfunc (svr *Server) sftpServerWorker(pktChan chan orderedRequest) error {\n\tfor pkt := range pktChan {\n\t\t// readonly checks\n\t\treadonly := true\n\t\tswitch pkt := pkt.requestPacket.(type) {\n\t\tcase notReadOnly:\n\t\t\treadonly = false\n\t\tcase *sshFxpOpenPacket:\n\t\t\treadonly = pkt.readonly()\n\t\tcase *sshFxpExtendedPacket:\n\t\t\treadonly = pkt.readonly()\n\t\t}\n\n\t\t// If server is operating read-only and a write operation is requested,\n\t\t// return permission denied\n\t\tif !readonly && svr.readOnly {\n\t\t\tsvr.pktMgr.readyPacket(\n\t\t\t\tsvr.pktMgr.newOrderedResponse(statusFromError(pkt.id(), syscall.EPERM), pkt.orderID()),\n\t\t\t)\n\t\t\tcontinue\n\t\t}\n\n\t\tif err := handlePacket(svr, pkt); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc handlePacket(s *Server, p orderedRequest) error {\n\tvar rpkt responsePacket\n\torderID := p.orderID()\n\tswitch p := p.requestPacket.(type) {\n\tcase *sshFxInitPacket:\n\t\trpkt = &sshFxVersionPacket{\n\t\t\tVersion:    sftpProtocolVersion,\n\t\t\tExtensions: sftpExtensions,\n\t\t}\n\tcase *sshFxpStatPacket:\n\t\t// stat the requested file\n\t\tinfo, err := os.Stat(s.toLocalPath(p.Path))\n\t\trpkt = &sshFxpStatResponse{\n\t\t\tID:   p.ID,\n\t\t\tinfo: info,\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\tcase *sshFxpLstatPacket:\n\t\t// stat the requested file\n\t\tinfo, err := os.Lstat(s.toLocalPath(p.Path))\n\t\trpkt = &sshFxpStatResponse{\n\t\t\tID:   p.ID,\n\t\t\tinfo: info,\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\tcase *sshFxpFstatPacket:\n\t\tf, ok := s.getHandle(p.Handle)\n\t\tvar err error = EBADF\n\t\tvar info os.FileInfo\n\t\tif ok {\n\t\t\tinfo, err = f.Stat()\n\t\t\trpkt = &sshFxpStatResponse{\n\t\t\t\tID:   p.ID,\n\t\t\t\tinfo: info,\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\tcase *sshFxpMkdirPacket:\n\t\t// TODO FIXME: ignore flags field\n\t\terr := os.Mkdir(s.toLocalPath(p.Path), 0o755)\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpRmdirPacket:\n\t\terr := os.Remove(s.toLocalPath(p.Path))\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpRemovePacket:\n\t\terr := os.Remove(s.toLocalPath(p.Filename))\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpRenamePacket:\n\t\terr := os.Rename(s.toLocalPath(p.Oldpath), s.toLocalPath(p.Newpath))\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpSymlinkPacket:\n\t\terr := os.Symlink(s.toLocalPath(p.Targetpath), s.toLocalPath(p.Linkpath))\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpClosePacket:\n\t\trpkt = statusFromError(p.ID, s.closeHandle(p.Handle))\n\tcase *sshFxpReadlinkPacket:\n\t\tf, err := os.Readlink(s.toLocalPath(p.Path))\n\t\trpkt = &sshFxpNamePacket{\n\t\t\tID: p.ID,\n\t\t\tNameAttrs: []*sshFxpNameAttr{\n\t\t\t\t{\n\t\t\t\t\tName:     f,\n\t\t\t\t\tLongName: f,\n\t\t\t\t\tAttrs:    emptyFileStat,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\tcase *sshFxpRealpathPacket:\n\t\tf, err := filepath.Abs(s.toLocalPath(p.Path))\n\t\tf = cleanPath(f)\n\t\trpkt = &sshFxpNamePacket{\n\t\t\tID: p.ID,\n\t\t\tNameAttrs: []*sshFxpNameAttr{\n\t\t\t\t{\n\t\t\t\t\tName:     f,\n\t\t\t\t\tLongName: f,\n\t\t\t\t\tAttrs:    emptyFileStat,\n\t\t\t\t},\n\t\t\t},\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\tcase *sshFxpOpendirPacket:\n\t\tlp := s.toLocalPath(p.Path)\n\n\t\tif stat, err := os.Stat(lp); err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t} else if !stat.IsDir() {\n\t\t\trpkt = statusFromError(p.ID, &os.PathError{\n\t\t\t\tPath: lp, Err: syscall.ENOTDIR,\n\t\t\t})\n\t\t} else {\n\t\t\trpkt = (&sshFxpOpenPacket{\n\t\t\t\tID:     p.ID,\n\t\t\t\tPath:   p.Path,\n\t\t\t\tPflags: sshFxfRead,\n\t\t\t}).respond(s)\n\t\t}\n\tcase *sshFxpReadPacket:\n\t\tvar err error = EBADF\n\t\tf, ok := s.getHandle(p.Handle)\n\t\tif ok {\n\t\t\terr = nil\n\t\t\tdata := p.getDataSlice(s.pktMgr.alloc, orderID)\n\t\t\tn, _err := f.ReadAt(data, int64(p.Offset))\n\t\t\tif _err != nil && (_err != io.EOF || n == 0) {\n\t\t\t\terr = _err\n\t\t\t}\n\t\t\trpkt = &sshFxpDataPacket{\n\t\t\t\tID:     p.ID,\n\t\t\t\tLength: uint32(n),\n\t\t\t\tData:   data[:n],\n\t\t\t\t// do not use data[:n:n] here to clamp the capacity, we allocated extra capacity above to avoid reallocations\n\t\t\t}\n\t\t}\n\t\tif err != nil {\n\t\t\trpkt = statusFromError(p.ID, err)\n\t\t}\n\n\tcase *sshFxpWritePacket:\n\t\tf, ok := s.getHandle(p.Handle)\n\t\tvar err error = EBADF\n\t\tif ok {\n\t\t\t_, err = f.WriteAt(p.Data, int64(p.Offset))\n\t\t}\n\t\trpkt = statusFromError(p.ID, err)\n\tcase *sshFxpExtendedPacket:\n\t\tif p.SpecificPacket == nil {\n\t\t\trpkt = statusFromError(p.ID, ErrSSHFxOpUnsupported)\n\t\t} else {\n\t\t\trpkt = p.respond(s)\n\t\t}\n\tcase serverRespondablePacket:\n\t\trpkt = p.respond(s)\n\tdefault:\n\t\treturn fmt.Errorf(\"unexpected packet type %T\", p)\n\t}\n\n\ts.pktMgr.readyPacket(s.pktMgr.newOrderedResponse(rpkt, orderID))\n\treturn nil\n}\n\n// Serve serves SFTP connections until the streams stop or the SFTP subsystem\n// is stopped. It returns nil if the server exits cleanly.\nfunc (svr *Server) Serve() error {\n\tdefer func() {\n\t\tif svr.pktMgr.alloc != nil {\n\t\t\tsvr.pktMgr.alloc.Free()\n\t\t}\n\t}()\n\tvar wg sync.WaitGroup\n\trunWorker := func(ch chan orderedRequest) {\n\t\twg.Add(1)\n\t\tgo func() {\n\t\t\tdefer wg.Done()\n\t\t\tif err := svr.sftpServerWorker(ch); err != nil {\n\t\t\t\tsvr.conn.Close() // shuts down recvPacket\n\t\t\t}\n\t\t}()\n\t}\n\tpktChan := svr.pktMgr.workerChan(runWorker)\n\n\tvar err error\n\tvar pkt requestPacket\n\tvar pktType uint8\n\tvar pktBytes []byte\n\tfor {\n\t\tpktType, pktBytes, err = svr.serverConn.recvPacket(svr.pktMgr.getNextOrderID())\n\t\tif err != nil {\n\t\t\t// Check whether the connection terminated cleanly in-between packets.\n\t\t\tif err == io.EOF {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t\t// we don't care about releasing allocated pages here, the server will quit and the allocator freed\n\t\t\tbreak\n\t\t}\n\n\t\tpkt, err = makePacket(rxPacket{fxp(pktType), pktBytes})\n\t\tif err != nil {\n\t\t\tswitch {\n\t\t\tcase errors.Is(err, errUnknownExtendedPacket):\n\t\t\t\t//if err := svr.serverConn.sendError(pkt, ErrSshFxOpUnsupported); err != nil {\n\t\t\t\t//\tdebug(\"failed to send err packet: %v\", err)\n\t\t\t\t//\tsvr.conn.Close() // shuts down recvPacket\n\t\t\t\t//\tbreak\n\t\t\t\t//}\n\t\t\tdefault:\n\t\t\t\tdebug(\"makePacket err: %v\", err)\n\t\t\t\tsvr.conn.Close() // shuts down recvPacket\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\tpktChan <- svr.pktMgr.newOrderedRequest(pkt)\n\t}\n\n\tclose(pktChan) // shuts down sftpServerWorkers\n\twg.Wait()      // wait for all workers to exit\n\n\t// close any still-open files\n\tfor handle, file := range svr.openFiles {\n\t\tfmt.Fprintf(svr.debugStream, \"sftp server file with handle %q left open: %v\\n\", handle, file.Name())\n\t\tfile.Close()\n\t}\n\treturn err // error from recvPacket\n}\n\ntype ider interface {\n\tid() uint32\n}\n\n// The init packet has no ID, so we just return a zero-value ID\nfunc (p *sshFxInitPacket) id() uint32 { return 0 }\n\ntype sshFxpStatResponse struct {\n\tID   uint32\n\tinfo os.FileInfo\n}\n\nfunc (p *sshFxpStatResponse) marshalPacket() ([]byte, []byte, error) {\n\tl := 4 + 1 + 4 // uint32(length) + byte(type) + uint32(id)\n\n\tb := make([]byte, 4, l)\n\tb = append(b, sshFxpAttrs)\n\tb = marshalUint32(b, p.ID)\n\n\tvar payload []byte\n\tpayload = marshalFileInfo(payload, p.info)\n\n\treturn b, payload, nil\n}\n\nfunc (p *sshFxpStatResponse) MarshalBinary() ([]byte, error) {\n\theader, payload, err := p.marshalPacket()\n\treturn append(header, payload...), err\n}\n\nvar emptyFileStat = []any{uint32(0)}\n\nfunc (p *sshFxpOpenPacket) readonly() bool {\n\treturn !p.hasPflags(sshFxfWrite)\n}\n\nfunc (p *sshFxpOpenPacket) hasPflags(flags ...uint32) bool {\n\tfor _, f := range flags {\n\t\tif p.Pflags&f == 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc (p *sshFxpOpenPacket) respond(svr *Server) responsePacket {\n\tvar osFlags int\n\tif p.hasPflags(sshFxfRead, sshFxfWrite) {\n\t\tosFlags |= os.O_RDWR\n\t} else if p.hasPflags(sshFxfWrite) {\n\t\tosFlags |= os.O_WRONLY\n\t} else if p.hasPflags(sshFxfRead) {\n\t\tosFlags |= os.O_RDONLY\n\t} else {\n\t\t// how are they opening?\n\t\treturn statusFromError(p.ID, syscall.EINVAL)\n\t}\n\n\t// Don't use O_APPEND flag as it conflicts with WriteAt.\n\t// The sshFxfAppend flag is a no-op here as the client sends the offsets.\n\n\tif p.hasPflags(sshFxfCreat) {\n\t\tosFlags |= os.O_CREATE\n\t}\n\tif p.hasPflags(sshFxfTrunc) {\n\t\tosFlags |= os.O_TRUNC\n\t}\n\tif p.hasPflags(sshFxfExcl) {\n\t\tosFlags |= os.O_EXCL\n\t}\n\n\tmode := os.FileMode(0o644)\n\t// Like OpenSSH, we only handle permissions here, and only when the file is being created.\n\t// Otherwise, the permissions are ignored.\n\tif p.Flags&sshFileXferAttrPermissions != 0 {\n\t\tfs, err := p.unmarshalFileStat(p.Flags)\n\t\tif err != nil {\n\t\t\treturn statusFromError(p.ID, err)\n\t\t}\n\t\tmode = fs.FileMode() & os.ModePerm\n\t}\n\n\tf, err := os.OpenFile(svr.toLocalPath(p.Path), osFlags, mode)\n\tif err != nil {\n\t\treturn statusFromError(p.ID, err)\n\t}\n\n\thandle := svr.nextHandle(f)\n\treturn &sshFxpHandlePacket{ID: p.ID, Handle: handle}\n}\n\nfunc (p *sshFxpReaddirPacket) respond(svr *Server) responsePacket {\n\tf, ok := svr.getHandle(p.Handle)\n\tif !ok {\n\t\treturn statusFromError(p.ID, EBADF)\n\t}\n\n\tdirents, err := f.Readdir(128)\n\tif err != nil {\n\t\treturn statusFromError(p.ID, err)\n\t}\n\n\tidLookup := osIDLookup{}\n\n\tret := &sshFxpNamePacket{ID: p.ID}\n\tfor _, dirent := range dirents {\n\t\tret.NameAttrs = append(ret.NameAttrs, &sshFxpNameAttr{\n\t\t\tName:     dirent.Name(),\n\t\t\tLongName: runLs(idLookup, dirent),\n\t\t\tAttrs:    []any{dirent},\n\t\t})\n\t}\n\treturn ret\n}\n\nfunc (p *sshFxpSetstatPacket) respond(svr *Server) responsePacket {\n\tpath := svr.toLocalPath(p.Path)\n\n\tdebug(\"setstat name %q\", path)\n\n\tfs, err := p.unmarshalFileStat(p.Flags)\n\n\tif err == nil && (p.Flags&sshFileXferAttrSize) != 0 {\n\t\terr = os.Truncate(path, int64(fs.Size))\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrPermissions) != 0 {\n\t\terr = os.Chmod(path, fs.FileMode())\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrUIDGID) != 0 {\n\t\terr = os.Chown(path, int(fs.UID), int(fs.GID))\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrACmodTime) != 0 {\n\t\terr = os.Chtimes(path, fs.AccessTime(), fs.ModTime())\n\t}\n\n\treturn statusFromError(p.ID, err)\n}\n\nfunc (p *sshFxpFsetstatPacket) respond(svr *Server) responsePacket {\n\tf, ok := svr.getHandle(p.Handle)\n\tif !ok {\n\t\treturn statusFromError(p.ID, EBADF)\n\t}\n\n\tpath := f.Name()\n\n\tdebug(\"fsetstat name %q\", path)\n\n\tfs, err := p.unmarshalFileStat(p.Flags)\n\n\tif err == nil && (p.Flags&sshFileXferAttrSize) != 0 {\n\t\terr = f.Truncate(int64(fs.Size))\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrPermissions) != 0 {\n\t\terr = f.Chmod(fs.FileMode())\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrUIDGID) != 0 {\n\t\terr = f.Chown(int(fs.UID), int(fs.GID))\n\t}\n\tif err == nil && (p.Flags&sshFileXferAttrACmodTime) != 0 {\n\t\ttype chtimer interface {\n\t\t\tChtimes(atime, mtime time.Time) error\n\t\t}\n\n\t\tswitch f := any(f).(type) {\n\t\tcase chtimer:\n\t\t\t// future-compatible, for when/if *os.File supports Chtimes.\n\t\t\terr = f.Chtimes(fs.AccessTime(), fs.ModTime())\n\t\tdefault:\n\t\t\terr = os.Chtimes(path, fs.AccessTime(), fs.ModTime())\n\t\t}\n\t}\n\n\treturn statusFromError(p.ID, err)\n}\n\nfunc statusFromError(id uint32, err error) *sshFxpStatusPacket {\n\tret := &sshFxpStatusPacket{\n\t\tID: id,\n\t\tStatusError: StatusError{\n\t\t\t// sshFXOk               = 0\n\t\t\t// sshFXEOF              = 1\n\t\t\t// sshFXNoSuchFile       = 2 ENOENT\n\t\t\t// sshFXPermissionDenied = 3\n\t\t\t// sshFXFailure          = 4\n\t\t\t// sshFXBadMessage       = 5\n\t\t\t// sshFXNoConnection     = 6\n\t\t\t// sshFXConnectionLost   = 7\n\t\t\t// sshFXOPUnsupported    = 8\n\t\t\tCode: sshFxOk,\n\t\t},\n\t}\n\tif err == nil {\n\t\treturn ret\n\t}\n\n\tdebug(\"statusFromError: error is %T %#v\", err, err)\n\tret.StatusError.Code = sshFxFailure\n\tret.StatusError.msg = err.Error()\n\n\tif os.IsNotExist(err) {\n\t\tret.StatusError.Code = sshFxNoSuchFile\n\t\treturn ret\n\t}\n\tif code, ok := translateSyscallError(err); ok {\n\t\tret.StatusError.Code = code\n\t\treturn ret\n\t}\n\n\tif errors.Is(err, io.EOF) {\n\t\tret.StatusError.Code = sshFxEOF\n\t\treturn ret\n\t}\n\n\tvar e fxerr\n\tif errors.As(err, &e) {\n\t\tret.StatusError.Code = uint32(e)\n\t\treturn ret\n\t}\n\n\treturn ret\n}\n"
  },
  {
    "path": "gossh/sftp/server_plan9.go",
    "content": "package sftp\n\nimport (\n\t\"path\"\n\t\"path/filepath\"\n)\n\nfunc (s *Server) toLocalPath(p string) string {\n\tif s.workDir != \"\" && !path.IsAbs(p) {\n\t\tp = path.Join(s.workDir, p)\n\t}\n\n\tlp := filepath.FromSlash(p)\n\n\tif path.IsAbs(p) {\n\t\ttmp := lp[1:]\n\n\t\tif filepath.IsAbs(tmp) {\n\t\t\t// If the FromSlash without any starting slashes is absolute,\n\t\t\t// then we have a filepath encoded with a prefix '/'.\n\t\t\t// e.g. \"/#s/boot\" to \"#s/boot\"\n\t\t\treturn tmp\n\t\t}\n\t}\n\n\treturn lp\n}\n"
  },
  {
    "path": "gossh/sftp/server_statvfs_darwin.go",
    "content": "package sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) {\n\treturn &StatVFS{\n\t\tBsize:   uint64(stat.Bsize),\n\t\tFrsize:  uint64(stat.Bsize), // fragment size is a linux thing; use block size here\n\t\tBlocks:  stat.Blocks,\n\t\tBfree:   stat.Bfree,\n\t\tBavail:  stat.Bavail,\n\t\tFiles:   stat.Files,\n\t\tFfree:   stat.Ffree,\n\t\tFavail:  stat.Ffree,                                                      // not sure how to calculate Favail\n\t\tFsid:    uint64(uint64(stat.Fsid.Val[1])<<32 | uint64(stat.Fsid.Val[0])), // endianness?\n\t\tFlag:    uint64(stat.Flags),                                              // assuming POSIX?\n\t\tNamemax: 1024,                                                            // man 2 statfs shows: #define MAXPATHLEN      1024\n\t}, nil\n}\n"
  },
  {
    "path": "gossh/sftp/server_statvfs_impl.go",
    "content": "//go:build darwin || linux\n// +build darwin linux\n\n// fill in statvfs structure with OS specific values\n// Statfs_t is different per-kernel, and only exists on some unixes (not Solaris for instance)\n\npackage sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket {\n\tretPkt, err := getStatVFSForPath(p.Path)\n\tif err != nil {\n\t\treturn statusFromError(p.ID, err)\n\t}\n\tretPkt.ID = p.ID\n\n\treturn retPkt\n}\n\nfunc getStatVFSForPath(name string) (*StatVFS, error) {\n\tvar stat syscall.Statfs_t\n\tif err := syscall.Statfs(name, &stat); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn statvfsFromStatfst(&stat)\n}\n"
  },
  {
    "path": "gossh/sftp/server_statvfs_linux.go",
    "content": "//go:build linux\n// +build linux\n\npackage sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc statvfsFromStatfst(stat *syscall.Statfs_t) (*StatVFS, error) {\n\treturn &StatVFS{\n\t\tBsize:   uint64(stat.Bsize),\n\t\tFrsize:  uint64(stat.Frsize),\n\t\tBlocks:  stat.Blocks,\n\t\tBfree:   stat.Bfree,\n\t\tBavail:  stat.Bavail,\n\t\tFiles:   stat.Files,\n\t\tFfree:   stat.Ffree,\n\t\tFavail:  stat.Ffree,         // not sure how to calculate Favail\n\t\tFlag:    uint64(stat.Flags), // assuming POSIX?\n\t\tNamemax: uint64(stat.Namelen),\n\t}, nil\n}\n"
  },
  {
    "path": "gossh/sftp/server_statvfs_plan9.go",
    "content": "package sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket {\n\treturn statusFromError(p.ID, syscall.EPLAN9)\n}\n\nfunc getStatVFSForPath(name string) (*StatVFS, error) {\n\treturn nil, syscall.EPLAN9\n}\n"
  },
  {
    "path": "gossh/sftp/server_statvfs_stubs.go",
    "content": "//go:build !darwin && !linux && !plan9\n// +build !darwin,!linux,!plan9\n\npackage sftp\n\nimport (\n\t\"syscall\"\n)\n\nfunc (p *sshFxpExtendedPacketStatVFS) respond(svr *Server) responsePacket {\n\treturn statusFromError(p.ID, syscall.ENOTSUP)\n}\n\nfunc getStatVFSForPath(name string) (*StatVFS, error) {\n\treturn nil, syscall.ENOTSUP\n}\n"
  },
  {
    "path": "gossh/sftp/server_unix.go",
    "content": "//go:build !windows && !plan9\n// +build !windows,!plan9\n\npackage sftp\n\nimport (\n\t\"path\"\n)\n\nfunc (s *Server) toLocalPath(p string) string {\n\tif s.workDir != \"\" && !path.IsAbs(p) {\n\t\tp = path.Join(s.workDir, p)\n\t}\n\n\treturn p\n}\n"
  },
  {
    "path": "gossh/sftp/server_windows.go",
    "content": "package sftp\n\nimport (\n\t\"path\"\n\t\"path/filepath\"\n)\n\nfunc (s *Server) toLocalPath(p string) string {\n\tif s.workDir != \"\" && !path.IsAbs(p) {\n\t\tp = path.Join(s.workDir, p)\n\t}\n\n\tlp := filepath.FromSlash(p)\n\n\tif path.IsAbs(p) {\n\t\ttmp := lp\n\t\tfor len(tmp) > 0 && tmp[0] == '\\\\' {\n\t\t\ttmp = tmp[1:]\n\t\t}\n\n\t\tif filepath.IsAbs(tmp) {\n\t\t\t// If the FromSlash without any starting slashes is absolute,\n\t\t\t// then we have a filepath encoded with a prefix '/'.\n\t\t\t// e.g. \"/C:/Windows\" to \"C:\\\\Windows\"\n\t\t\treturn tmp\n\t\t}\n\n\t\ttmp += \"\\\\\"\n\n\t\tif filepath.IsAbs(tmp) {\n\t\t\t// If the FromSlash without any starting slashes but with extra end slash is absolute,\n\t\t\t// then we have a filepath encoded with a prefix '/' and a dropped '/' at the end.\n\t\t\t// e.g. \"/C:\" to \"C:\\\\\"\n\t\t\treturn tmp\n\t\t}\n\t}\n\n\treturn lp\n}\n"
  },
  {
    "path": "gossh/sftp/sftp.go",
    "content": "// Package sftp implements the SSH File Transfer Protocol as described in\n// https://filezilla-project.org/specs/draft-ietf-secsh-filexfer-02.txt\npackage sftp\n\nimport (\n\t\"fmt\"\n)\n\nconst (\n\tsshFxpInit          = 1\n\tsshFxpVersion       = 2\n\tsshFxpOpen          = 3\n\tsshFxpClose         = 4\n\tsshFxpRead          = 5\n\tsshFxpWrite         = 6\n\tsshFxpLstat         = 7\n\tsshFxpFstat         = 8\n\tsshFxpSetstat       = 9\n\tsshFxpFsetstat      = 10\n\tsshFxpOpendir       = 11\n\tsshFxpReaddir       = 12\n\tsshFxpRemove        = 13\n\tsshFxpMkdir         = 14\n\tsshFxpRmdir         = 15\n\tsshFxpRealpath      = 16\n\tsshFxpStat          = 17\n\tsshFxpRename        = 18\n\tsshFxpReadlink      = 19\n\tsshFxpSymlink       = 20\n\tsshFxpStatus        = 101\n\tsshFxpHandle        = 102\n\tsshFxpData          = 103\n\tsshFxpName          = 104\n\tsshFxpAttrs         = 105\n\tsshFxpExtended      = 200\n\tsshFxpExtendedReply = 201\n)\n\nconst (\n\tsshFxOk               = 0\n\tsshFxEOF              = 1\n\tsshFxNoSuchFile       = 2\n\tsshFxPermissionDenied = 3\n\tsshFxFailure          = 4\n\tsshFxBadMessage       = 5\n\tsshFxNoConnection     = 6\n\tsshFxConnectionLost   = 7\n\tsshFxOPUnsupported    = 8\n\n\t// see draft-ietf-secsh-filexfer-13\n\t// https://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-9.1\n\tsshFxInvalidHandle           = 9\n\tsshFxNoSuchPath              = 10\n\tsshFxFileAlreadyExists       = 11\n\tsshFxWriteProtect            = 12\n\tsshFxNoMedia                 = 13\n\tsshFxNoSpaceOnFilesystem     = 14\n\tsshFxQuotaExceeded           = 15\n\tsshFxUnknownPrincipal        = 16\n\tsshFxLockConflict            = 17\n\tsshFxDirNotEmpty             = 18\n\tsshFxNotADirectory           = 19\n\tsshFxInvalidFilename         = 20\n\tsshFxLinkLoop                = 21\n\tsshFxCannotDelete            = 22\n\tsshFxInvalidParameter        = 23\n\tsshFxFileIsADirectory        = 24\n\tsshFxByteRangeLockConflict   = 25\n\tsshFxByteRangeLockRefused    = 26\n\tsshFxDeletePending           = 27\n\tsshFxFileCorrupt             = 28\n\tsshFxOwnerInvalid            = 29\n\tsshFxGroupInvalid            = 30\n\tsshFxNoMatchingByteRangeLock = 31\n)\n\nconst (\n\tsshFxfRead   = 0x00000001\n\tsshFxfWrite  = 0x00000002\n\tsshFxfAppend = 0x00000004\n\tsshFxfCreat  = 0x00000008\n\tsshFxfTrunc  = 0x00000010\n\tsshFxfExcl   = 0x00000020\n)\n\nvar (\n\t// supportedSFTPExtensions defines the supported extensions\n\tsupportedSFTPExtensions = []sshExtensionPair{\n\t\t{\"hardlink@openssh.com\", \"1\"},\n\t\t{\"posix-rename@openssh.com\", \"1\"},\n\t\t{\"statvfs@openssh.com\", \"2\"},\n\t}\n\tsftpExtensions = supportedSFTPExtensions\n)\n\ntype fxp uint8\n\nfunc (f fxp) String() string {\n\tswitch f {\n\tcase sshFxpInit:\n\t\treturn \"SSH_FXP_INIT\"\n\tcase sshFxpVersion:\n\t\treturn \"SSH_FXP_VERSION\"\n\tcase sshFxpOpen:\n\t\treturn \"SSH_FXP_OPEN\"\n\tcase sshFxpClose:\n\t\treturn \"SSH_FXP_CLOSE\"\n\tcase sshFxpRead:\n\t\treturn \"SSH_FXP_READ\"\n\tcase sshFxpWrite:\n\t\treturn \"SSH_FXP_WRITE\"\n\tcase sshFxpLstat:\n\t\treturn \"SSH_FXP_LSTAT\"\n\tcase sshFxpFstat:\n\t\treturn \"SSH_FXP_FSTAT\"\n\tcase sshFxpSetstat:\n\t\treturn \"SSH_FXP_SETSTAT\"\n\tcase sshFxpFsetstat:\n\t\treturn \"SSH_FXP_FSETSTAT\"\n\tcase sshFxpOpendir:\n\t\treturn \"SSH_FXP_OPENDIR\"\n\tcase sshFxpReaddir:\n\t\treturn \"SSH_FXP_READDIR\"\n\tcase sshFxpRemove:\n\t\treturn \"SSH_FXP_REMOVE\"\n\tcase sshFxpMkdir:\n\t\treturn \"SSH_FXP_MKDIR\"\n\tcase sshFxpRmdir:\n\t\treturn \"SSH_FXP_RMDIR\"\n\tcase sshFxpRealpath:\n\t\treturn \"SSH_FXP_REALPATH\"\n\tcase sshFxpStat:\n\t\treturn \"SSH_FXP_STAT\"\n\tcase sshFxpRename:\n\t\treturn \"SSH_FXP_RENAME\"\n\tcase sshFxpReadlink:\n\t\treturn \"SSH_FXP_READLINK\"\n\tcase sshFxpSymlink:\n\t\treturn \"SSH_FXP_SYMLINK\"\n\tcase sshFxpStatus:\n\t\treturn \"SSH_FXP_STATUS\"\n\tcase sshFxpHandle:\n\t\treturn \"SSH_FXP_HANDLE\"\n\tcase sshFxpData:\n\t\treturn \"SSH_FXP_DATA\"\n\tcase sshFxpName:\n\t\treturn \"SSH_FXP_NAME\"\n\tcase sshFxpAttrs:\n\t\treturn \"SSH_FXP_ATTRS\"\n\tcase sshFxpExtended:\n\t\treturn \"SSH_FXP_EXTENDED\"\n\tcase sshFxpExtendedReply:\n\t\treturn \"SSH_FXP_EXTENDED_REPLY\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\ntype fx uint8\n\nfunc (f fx) String() string {\n\tswitch f {\n\tcase sshFxOk:\n\t\treturn \"SSH_FX_OK\"\n\tcase sshFxEOF:\n\t\treturn \"SSH_FX_EOF\"\n\tcase sshFxNoSuchFile:\n\t\treturn \"SSH_FX_NO_SUCH_FILE\"\n\tcase sshFxPermissionDenied:\n\t\treturn \"SSH_FX_PERMISSION_DENIED\"\n\tcase sshFxFailure:\n\t\treturn \"SSH_FX_FAILURE\"\n\tcase sshFxBadMessage:\n\t\treturn \"SSH_FX_BAD_MESSAGE\"\n\tcase sshFxNoConnection:\n\t\treturn \"SSH_FX_NO_CONNECTION\"\n\tcase sshFxConnectionLost:\n\t\treturn \"SSH_FX_CONNECTION_LOST\"\n\tcase sshFxOPUnsupported:\n\t\treturn \"SSH_FX_OP_UNSUPPORTED\"\n\tdefault:\n\t\treturn \"unknown\"\n\t}\n}\n\ntype unexpectedPacketErr struct {\n\twant, got uint8\n}\n\nfunc (u *unexpectedPacketErr) Error() string {\n\treturn fmt.Sprintf(\"sftp: unexpected packet: want %v, got %v\", fxp(u.want), fxp(u.got))\n}\n\nfunc unimplementedPacketErr(u uint8) error {\n\treturn fmt.Errorf(\"sftp: unimplemented packet type: got %v\", fxp(u))\n}\n\ntype unexpectedIDErr struct{ want, got uint32 }\n\nfunc (u *unexpectedIDErr) Error() string {\n\treturn fmt.Sprintf(\"sftp: unexpected id: want %d, got %d\", u.want, u.got)\n}\n\nfunc unimplementedSeekWhence(whence int) error {\n\treturn fmt.Errorf(\"sftp: unimplemented seek whence %d\", whence)\n}\n\nfunc unexpectedCount(want, got uint32) error {\n\treturn fmt.Errorf(\"sftp: unexpected count: want %d, got %d\", want, got)\n}\n\ntype unexpectedVersionErr struct{ want, got uint32 }\n\nfunc (u *unexpectedVersionErr) Error() string {\n\treturn fmt.Sprintf(\"sftp: unexpected server version: want %v, got %v\", u.want, u.got)\n}\n\n// A StatusError is returned when an SFTP operation fails, and provides\n// additional information about the failure.\ntype StatusError struct {\n\tCode      uint32\n\tmsg, lang string\n}\n\nfunc (s *StatusError) Error() string {\n\treturn fmt.Sprintf(\"sftp: %q (%v)\", s.msg, fx(s.Code))\n}\n\n// FxCode returns the error code typed to match against the exported codes\nfunc (s *StatusError) FxCode() fxerr {\n\treturn fxerr(s.Code)\n}\n\nfunc getSupportedExtensionByName(extensionName string) (sshExtensionPair, error) {\n\tfor _, supportedExtension := range supportedSFTPExtensions {\n\t\tif supportedExtension.Name == extensionName {\n\t\t\treturn supportedExtension, nil\n\t\t}\n\t}\n\treturn sshExtensionPair{}, fmt.Errorf(\"unsupported extension: %s\", extensionName)\n}\n\n// SetSFTPExtensions allows to customize the supported server extensions.\n// See the variable supportedSFTPExtensions for supported extensions.\n// This method accepts a slice of sshExtensionPair names for example 'hardlink@openssh.com'.\n// If an invalid extension is given an error will be returned and nothing will be changed\nfunc SetSFTPExtensions(extensions ...string) error {\n\ttempExtensions := []sshExtensionPair{}\n\tfor _, extension := range extensions {\n\t\tsftpExtension, err := getSupportedExtensionByName(extension)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\ttempExtensions = append(tempExtensions, sftpExtension)\n\t}\n\tsftpExtensions = tempExtensions\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sftp/stat_plan9.go",
    "content": "package sftp\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nvar EBADF = syscall.NewError(\"fd out of range or not open\")\n\nfunc wrapPathError(filepath string, err error) error {\n\tif errno, ok := err.(syscall.ErrorString); ok {\n\t\treturn &os.PathError{Path: filepath, Err: errno}\n\t}\n\treturn err\n}\n\n// translateErrno translates a syscall error number to a SFTP error code.\nfunc translateErrno(errno syscall.ErrorString) uint32 {\n\tswitch errno {\n\tcase \"\":\n\t\treturn sshFxOk\n\tcase syscall.ENOENT:\n\t\treturn sshFxNoSuchFile\n\tcase syscall.EPERM:\n\t\treturn sshFxPermissionDenied\n\t}\n\n\treturn sshFxFailure\n}\n\nfunc translateSyscallError(err error) (uint32, bool) {\n\tswitch e := err.(type) {\n\tcase syscall.ErrorString:\n\t\treturn translateErrno(e), true\n\tcase *os.PathError:\n\t\tdebug(\"statusFromError,pathError: error is %T %#v\", e.Err, e.Err)\n\t\tif errno, ok := e.Err.(syscall.ErrorString); ok {\n\t\t\treturn translateErrno(errno), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// isRegular returns true if the mode describes a regular file.\nfunc isRegular(mode uint32) bool {\n\treturn mode&S_IFMT == syscall.S_IFREG\n}\n\n// toFileMode converts sftp filemode bits to the os.FileMode specification\nfunc toFileMode(mode uint32) os.FileMode {\n\tvar fm = os.FileMode(mode & 0777)\n\n\tswitch mode & S_IFMT {\n\tcase syscall.S_IFBLK:\n\t\tfm |= os.ModeDevice\n\tcase syscall.S_IFCHR:\n\t\tfm |= os.ModeDevice | os.ModeCharDevice\n\tcase syscall.S_IFDIR:\n\t\tfm |= os.ModeDir\n\tcase syscall.S_IFIFO:\n\t\tfm |= os.ModeNamedPipe\n\tcase syscall.S_IFLNK:\n\t\tfm |= os.ModeSymlink\n\tcase syscall.S_IFREG:\n\t\t// nothing to do\n\tcase syscall.S_IFSOCK:\n\t\tfm |= os.ModeSocket\n\t}\n\n\treturn fm\n}\n\n// fromFileMode converts from the os.FileMode specification to sftp filemode bits\nfunc fromFileMode(mode os.FileMode) uint32 {\n\tret := uint32(mode & os.ModePerm)\n\n\tswitch mode & os.ModeType {\n\tcase os.ModeDevice | os.ModeCharDevice:\n\t\tret |= syscall.S_IFCHR\n\tcase os.ModeDevice:\n\t\tret |= syscall.S_IFBLK\n\tcase os.ModeDir:\n\t\tret |= syscall.S_IFDIR\n\tcase os.ModeNamedPipe:\n\t\tret |= syscall.S_IFIFO\n\tcase os.ModeSymlink:\n\t\tret |= syscall.S_IFLNK\n\tcase 0:\n\t\tret |= syscall.S_IFREG\n\tcase os.ModeSocket:\n\t\tret |= syscall.S_IFSOCK\n\t}\n\n\treturn ret\n}\n\n// Plan 9 doesn't have setuid, setgid or sticky, but a Plan 9 client should\n// be able to send these bits to a POSIX server.\nconst (\n\ts_ISUID = 04000\n\ts_ISGID = 02000\n\ts_ISVTX = 01000\n)\n"
  },
  {
    "path": "gossh/sftp/stat_posix.go",
    "content": "//go:build !plan9\n// +build !plan9\n\npackage sftp\n\nimport (\n\t\"os\"\n\t\"syscall\"\n)\n\nconst EBADF = syscall.EBADF\n\nfunc wrapPathError(filepath string, err error) error {\n\tif errno, ok := err.(syscall.Errno); ok {\n\t\treturn &os.PathError{Path: filepath, Err: errno}\n\t}\n\treturn err\n}\n\n// translateErrno translates a syscall error number to a SFTP error code.\nfunc translateErrno(errno syscall.Errno) uint32 {\n\tswitch errno {\n\tcase 0:\n\t\treturn sshFxOk\n\tcase syscall.ENOENT:\n\t\treturn sshFxNoSuchFile\n\tcase syscall.EACCES, syscall.EPERM:\n\t\treturn sshFxPermissionDenied\n\t}\n\n\treturn sshFxFailure\n}\n\nfunc translateSyscallError(err error) (uint32, bool) {\n\tswitch e := err.(type) {\n\tcase syscall.Errno:\n\t\treturn translateErrno(e), true\n\tcase *os.PathError:\n\t\tdebug(\"statusFromError,pathError: error is %T %#v\", e.Err, e.Err)\n\t\tif errno, ok := e.Err.(syscall.Errno); ok {\n\t\t\treturn translateErrno(errno), true\n\t\t}\n\t}\n\treturn 0, false\n}\n\n// isRegular returns true if the mode describes a regular file.\nfunc isRegular(mode uint32) bool {\n\treturn mode&S_IFMT == syscall.S_IFREG\n}\n\n// toFileMode converts sftp filemode bits to the os.FileMode specification\nfunc toFileMode(mode uint32) os.FileMode {\n\tvar fm = os.FileMode(mode & 0777)\n\n\tswitch mode & S_IFMT {\n\tcase syscall.S_IFBLK:\n\t\tfm |= os.ModeDevice\n\tcase syscall.S_IFCHR:\n\t\tfm |= os.ModeDevice | os.ModeCharDevice\n\tcase syscall.S_IFDIR:\n\t\tfm |= os.ModeDir\n\tcase syscall.S_IFIFO:\n\t\tfm |= os.ModeNamedPipe\n\tcase syscall.S_IFLNK:\n\t\tfm |= os.ModeSymlink\n\tcase syscall.S_IFREG:\n\t\t// nothing to do\n\tcase syscall.S_IFSOCK:\n\t\tfm |= os.ModeSocket\n\t}\n\n\tif mode&syscall.S_ISUID != 0 {\n\t\tfm |= os.ModeSetuid\n\t}\n\tif mode&syscall.S_ISGID != 0 {\n\t\tfm |= os.ModeSetgid\n\t}\n\tif mode&syscall.S_ISVTX != 0 {\n\t\tfm |= os.ModeSticky\n\t}\n\n\treturn fm\n}\n\n// fromFileMode converts from the os.FileMode specification to sftp filemode bits\nfunc fromFileMode(mode os.FileMode) uint32 {\n\tret := uint32(mode & os.ModePerm)\n\n\tswitch mode & os.ModeType {\n\tcase os.ModeDevice | os.ModeCharDevice:\n\t\tret |= syscall.S_IFCHR\n\tcase os.ModeDevice:\n\t\tret |= syscall.S_IFBLK\n\tcase os.ModeDir:\n\t\tret |= syscall.S_IFDIR\n\tcase os.ModeNamedPipe:\n\t\tret |= syscall.S_IFIFO\n\tcase os.ModeSymlink:\n\t\tret |= syscall.S_IFLNK\n\tcase 0:\n\t\tret |= syscall.S_IFREG\n\tcase os.ModeSocket:\n\t\tret |= syscall.S_IFSOCK\n\t}\n\n\tif mode&os.ModeSetuid != 0 {\n\t\tret |= syscall.S_ISUID\n\t}\n\tif mode&os.ModeSetgid != 0 {\n\t\tret |= syscall.S_ISGID\n\t}\n\tif mode&os.ModeSticky != 0 {\n\t\tret |= syscall.S_ISVTX\n\t}\n\n\treturn ret\n}\n\nconst (\n\ts_ISUID = syscall.S_ISUID\n\ts_ISGID = syscall.S_ISGID\n\ts_ISVTX = syscall.S_ISVTX\n)\n"
  },
  {
    "path": "gossh/sftp/syscall_fixed.go",
    "content": "//go:build plan9 || windows || (js && wasm)\n// +build plan9 windows js,wasm\n\n// Go defines S_IFMT on windows, plan9 and js/wasm as 0x1f000 instead of\n// 0xf000. None of the the other S_IFxyz values include the \"1\" (in 0x1f000)\n// which prevents them from matching the bitmask.\n\npackage sftp\n\nconst S_IFMT = 0xf000\n"
  },
  {
    "path": "gossh/sftp/syscall_good.go",
    "content": "//go:build !plan9 && !windows && (!js || !wasm)\n// +build !plan9\n// +build !windows\n// +build !js !wasm\n\npackage sftp\n\nimport \"syscall\"\n\nconst S_IFMT = syscall.S_IFMT\n"
  },
  {
    "path": "gossh/sqlite/ddlmod.go",
    "content": "package sqlite\n\nimport (\n\t\"database/sql\"\n\t\"errors\"\n\t\"fmt\"\n\t\"regexp\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"gossh/gorm/migrator\"\n)\n\nvar (\n\tsqliteSeparator    = \"`|\\\"|'|\\t\"\n\tuniqueRegexp       = regexp.MustCompile(fmt.Sprintf(`^CONSTRAINT [%v]?[\\w-]+[%v]? UNIQUE (.*)$`, sqliteSeparator, sqliteSeparator))\n\tindexRegexp        = regexp.MustCompile(fmt.Sprintf(`(?is)CREATE(?: UNIQUE)? INDEX [%v]?[\\w\\d-]+[%v]?(?s:.*?)ON (.*)$`, sqliteSeparator, sqliteSeparator))\n\ttableRegexp        = regexp.MustCompile(fmt.Sprintf(`(?is)(CREATE TABLE [%v]?[\\w\\d-]+[%v]?)(?:\\s*\\((.*)\\))?`, sqliteSeparator, sqliteSeparator))\n\tseparatorRegexp    = regexp.MustCompile(fmt.Sprintf(\"[%v]\", sqliteSeparator))\n\tcolumnsRegexp      = regexp.MustCompile(fmt.Sprintf(`[(,][%v]?(\\w+)[%v]?`, sqliteSeparator, sqliteSeparator))\n\tcolumnRegexp       = regexp.MustCompile(fmt.Sprintf(`^[%v]?([\\w\\d]+)[%v]?\\s+([\\w\\(\\)\\d]+)(.*)$`, sqliteSeparator, sqliteSeparator))\n\tdefaultValueRegexp = regexp.MustCompile(`(?i) DEFAULT \\(?(.+)?\\)?( |COLLATE|GENERATED|$)`)\n\tregRealDataType    = regexp.MustCompile(`[^\\d](\\d+)[^\\d]?`)\n)\n\nfunc getAllColumns(s string) []string {\n\tallMatches := columnsRegexp.FindAllStringSubmatch(s, -1)\n\tcolumns := make([]string, 0, len(allMatches))\n\tfor _, matches := range allMatches {\n\t\tif len(matches) > 1 {\n\t\t\tcolumns = append(columns, matches[1])\n\t\t}\n\t}\n\treturn columns\n}\n\ntype ddl struct {\n\thead    string\n\tfields  []string\n\tcolumns []migrator.ColumnType\n}\n\nfunc parseDDL(strs ...string) (*ddl, error) {\n\tvar result ddl\n\tfor _, str := range strs {\n\t\tif sections := tableRegexp.FindStringSubmatch(str); len(sections) > 0 {\n\t\t\tvar (\n\t\t\t\tddlBody      = sections[2]\n\t\t\t\tddlBodyRunes = []rune(ddlBody)\n\t\t\t\tbracketLevel int\n\t\t\t\tquote        rune\n\t\t\t\tbuf          string\n\t\t\t)\n\t\t\tddlBodyRunesLen := len(ddlBodyRunes)\n\n\t\t\tresult.head = sections[1]\n\n\t\t\tfor idx := 0; idx < ddlBodyRunesLen; idx++ {\n\t\t\t\tvar (\n\t\t\t\t\tnext rune = 0\n\t\t\t\t\tc         = ddlBodyRunes[idx]\n\t\t\t\t)\n\t\t\t\tif idx+1 < ddlBodyRunesLen {\n\t\t\t\t\tnext = ddlBodyRunes[idx+1]\n\t\t\t\t}\n\n\t\t\t\tif sc := string(c); separatorRegexp.MatchString(sc) {\n\t\t\t\t\tif c == next {\n\t\t\t\t\t\tbuf += sc // Skip escaped quote\n\t\t\t\t\t\tidx++\n\t\t\t\t\t} else if quote > 0 {\n\t\t\t\t\t\tquote = 0\n\t\t\t\t\t} else {\n\t\t\t\t\t\tquote = c\n\t\t\t\t\t}\n\t\t\t\t} else if quote == 0 {\n\t\t\t\t\tif c == '(' {\n\t\t\t\t\t\tbracketLevel++\n\t\t\t\t\t} else if c == ')' {\n\t\t\t\t\t\tbracketLevel--\n\t\t\t\t\t} else if bracketLevel == 0 {\n\t\t\t\t\t\tif c == ',' {\n\t\t\t\t\t\t\tresult.fields = append(result.fields, strings.TrimSpace(buf))\n\t\t\t\t\t\t\tbuf = \"\"\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\n\t\t\t\tif bracketLevel < 0 {\n\t\t\t\t\treturn nil, errors.New(\"invalid DDL, unbalanced brackets\")\n\t\t\t\t}\n\n\t\t\t\tbuf += string(c)\n\t\t\t}\n\n\t\t\tif bracketLevel != 0 {\n\t\t\t\treturn nil, errors.New(\"invalid DDL, unbalanced brackets\")\n\t\t\t}\n\n\t\t\tif buf != \"\" {\n\t\t\t\tresult.fields = append(result.fields, strings.TrimSpace(buf))\n\t\t\t}\n\n\t\t\tfor _, f := range result.fields {\n\t\t\t\tfUpper := strings.ToUpper(f)\n\t\t\t\tif strings.HasPrefix(fUpper, \"CHECK\") {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\t\t\t\tif strings.HasPrefix(fUpper, \"CONSTRAINT\") {\n\t\t\t\t\tmatches := uniqueRegexp.FindStringSubmatch(f)\n\t\t\t\t\tif len(matches) > 0 {\n\t\t\t\t\t\tif columns := getAllColumns(matches[1]); len(columns) == 1 {\n\t\t\t\t\t\t\tfor idx, column := range result.columns {\n\t\t\t\t\t\t\t\tif column.NameValue.String == columns[0] {\n\t\t\t\t\t\t\t\t\tcolumn.UniqueValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t\t\t\t\tresult.columns[idx] = column\n\t\t\t\t\t\t\t\t\tbreak\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\tcontinue\n\t\t\t\t}\n\t\t\t\tif strings.HasPrefix(fUpper, \"PRIMARY KEY\") {\n\t\t\t\t\tfor _, name := range getAllColumns(f) {\n\t\t\t\t\t\tfor idx, column := range result.columns {\n\t\t\t\t\t\t\tif column.NameValue.String == name {\n\t\t\t\t\t\t\t\tcolumn.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t\t\t\tresult.columns[idx] = column\n\t\t\t\t\t\t\t\tbreak\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} else if matches := columnRegexp.FindStringSubmatch(f); len(matches) > 0 {\n\t\t\t\t\tcolumnType := migrator.ColumnType{\n\t\t\t\t\t\tNameValue:         sql.NullString{String: matches[1], Valid: true},\n\t\t\t\t\t\tDataTypeValue:     sql.NullString{String: matches[2], Valid: true},\n\t\t\t\t\t\tColumnTypeValue:   sql.NullString{String: matches[2], Valid: true},\n\t\t\t\t\t\tPrimaryKeyValue:   sql.NullBool{Valid: true},\n\t\t\t\t\t\tUniqueValue:       sql.NullBool{Valid: true},\n\t\t\t\t\t\tNullableValue:     sql.NullBool{Bool: true, Valid: true},\n\t\t\t\t\t\tDefaultValueValue: sql.NullString{Valid: false},\n\t\t\t\t\t}\n\n\t\t\t\t\tmatchUpper := strings.ToUpper(matches[3])\n\t\t\t\t\tif strings.Contains(matchUpper, \" NOT NULL\") {\n\t\t\t\t\t\tcolumnType.NullableValue = sql.NullBool{Bool: false, Valid: true}\n\t\t\t\t\t} else if strings.Contains(matchUpper, \" NULL\") {\n\t\t\t\t\t\tcolumnType.NullableValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t}\n\t\t\t\t\tif strings.Contains(matchUpper, \" UNIQUE\") {\n\t\t\t\t\t\tcolumnType.UniqueValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t}\n\t\t\t\t\tif strings.Contains(matchUpper, \" PRIMARY\") {\n\t\t\t\t\t\tcolumnType.PrimaryKeyValue = sql.NullBool{Bool: true, Valid: true}\n\t\t\t\t\t}\n\t\t\t\t\tif defaultMatches := defaultValueRegexp.FindStringSubmatch(matches[3]); len(defaultMatches) > 1 {\n\t\t\t\t\t\tif strings.ToLower(defaultMatches[1]) != \"null\" {\n\t\t\t\t\t\t\tcolumnType.DefaultValueValue = sql.NullString{String: strings.Trim(defaultMatches[1], `\"`), Valid: true}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// data type length\n\t\t\t\t\tmatches := regRealDataType.FindAllStringSubmatch(columnType.DataTypeValue.String, -1)\n\t\t\t\t\tif len(matches) == 1 && len(matches[0]) == 2 {\n\t\t\t\t\t\tsize, _ := strconv.Atoi(matches[0][1])\n\t\t\t\t\t\tcolumnType.LengthValue = sql.NullInt64{Valid: true, Int64: int64(size)}\n\t\t\t\t\t\tcolumnType.DataTypeValue.String = strings.TrimSuffix(columnType.DataTypeValue.String, matches[0][0])\n\t\t\t\t\t}\n\n\t\t\t\t\tresult.columns = append(result.columns, columnType)\n\t\t\t\t}\n\t\t\t}\n\t\t} else if matches := indexRegexp.FindStringSubmatch(str); len(matches) > 0 {\n\t\t\t// don't report Unique by UniqueIndex\n\t\t} else {\n\t\t\treturn nil, errors.New(\"invalid DDL\")\n\t\t}\n\t}\n\n\treturn &result, nil\n}\n\nfunc (d *ddl) clone() *ddl {\n\tcopied := new(ddl)\n\t*copied = *d\n\n\tcopied.fields = make([]string, len(d.fields))\n\tcopy(copied.fields, d.fields)\n\tcopied.columns = make([]migrator.ColumnType, len(d.columns))\n\tcopy(copied.columns, d.columns)\n\n\treturn copied\n}\n\nfunc (d *ddl) compile() string {\n\tif len(d.fields) == 0 {\n\t\treturn d.head\n\t}\n\n\treturn fmt.Sprintf(\"%s (%s)\", d.head, strings.Join(d.fields, \",\"))\n}\n\nfunc (d *ddl) renameTable(dst, src string) error {\n\ttableReg, err := regexp.Compile(\"\\\\s*('|`|\\\")?\\\\b\" + regexp.QuoteMeta(src) + \"\\\\b('|`|\\\")?\\\\s*\")\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treplaced := tableReg.ReplaceAllString(d.head, fmt.Sprintf(\" `%s` \", dst))\n\tif replaced == d.head {\n\t\treturn fmt.Errorf(\"failed to look up tablename `%s` from DDL head '%s'\", src, d.head)\n\t}\n\n\td.head = replaced\n\treturn nil\n}\n\nfunc (d *ddl) addConstraint(name string, sql string) {\n\treg := regexp.MustCompile(\"^CONSTRAINT [\\\"`]?\" + regexp.QuoteMeta(name) + \"[\\\"` ]\")\n\n\tfor i := 0; i < len(d.fields); i++ {\n\t\tif reg.MatchString(d.fields[i]) {\n\t\t\td.fields[i] = sql\n\t\t\treturn\n\t\t}\n\t}\n\n\td.fields = append(d.fields, sql)\n}\n\nfunc (d *ddl) removeConstraint(name string) bool {\n\treg := regexp.MustCompile(\"^CONSTRAINT [\\\"`]?\" + regexp.QuoteMeta(name) + \"[\\\"` ]\")\n\n\tfor i := 0; i < len(d.fields); i++ {\n\t\tif reg.MatchString(d.fields[i]) {\n\t\t\td.fields = append(d.fields[:i], d.fields[i+1:]...)\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d *ddl) hasConstraint(name string) bool {\n\treg := regexp.MustCompile(\"^CONSTRAINT [\\\"`]?\" + regexp.QuoteMeta(name) + \"[\\\"` ]\")\n\n\tfor _, f := range d.fields {\n\t\tif reg.MatchString(f) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc (d *ddl) getColumns() []string {\n\tres := []string{}\n\n\tfor _, f := range d.fields {\n\t\tfUpper := strings.ToUpper(f)\n\t\tif strings.HasPrefix(fUpper, \"PRIMARY KEY\") ||\n\t\t\tstrings.HasPrefix(fUpper, \"CHECK\") ||\n\t\t\tstrings.HasPrefix(fUpper, \"CONSTRAINT\") ||\n\t\t\tstrings.Contains(fUpper, \"GENERATED ALWAYS AS\") {\n\t\t\tcontinue\n\t\t}\n\n\t\treg := regexp.MustCompile(\"^[\\\"`']?([\\\\w\\\\d]+)[\\\"`']?\")\n\t\tmatch := reg.FindStringSubmatch(f)\n\n\t\tif match != nil {\n\t\t\tres = append(res, \"`\"+match[1]+\"`\")\n\t\t}\n\t}\n\treturn res\n}\n\nfunc (d *ddl) removeColumn(name string) bool {\n\treg := regexp.MustCompile(\"^(`|'|\\\"| )\" + regexp.QuoteMeta(name) + \"(`|'|\\\"| ) .*?$\")\n\n\tfor i := 0; i < len(d.fields); i++ {\n\t\tif reg.MatchString(d.fields[i]) {\n\t\t\td.fields = append(d.fields[:i], d.fields[i+1:]...)\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n"
  },
  {
    "path": "gossh/sqlite/errors.go",
    "content": "package sqlite\n\nimport \"errors\"\n\nvar (\n\tErrConstraintsNotImplemented = errors.New(\"constraints not implemented on sqlite, consider using DisableForeignKeyConstraintWhenMigrating, more details https://github.com/go-gorm/gorm/wiki/GORM-V2-Release-Note-Draft#all-new-migrator\")\n)\n"
  },
  {
    "path": "gossh/sqlite/migrator.go",
    "content": "package sqlite\n\nimport (\n\t\"database/sql\"\n\t\"fmt\"\n\t\"strings\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n)\n\ntype Migrator struct {\n\tmigrator.Migrator\n}\n\nfunc (m *Migrator) RunWithoutForeignKey(fc func() error) error {\n\tvar enabled int\n\tm.DB.Raw(\"PRAGMA foreign_keys\").Scan(&enabled)\n\tif enabled == 1 {\n\t\tm.DB.Exec(\"PRAGMA foreign_keys = OFF\")\n\t\tdefer m.DB.Exec(\"PRAGMA foreign_keys = ON\")\n\t}\n\n\treturn fc()\n}\n\nfunc (m Migrator) HasTable(value interface{}) bool {\n\tvar count int\n\tm.Migrator.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\treturn m.DB.Raw(\"SELECT count(*) FROM sqlite_master WHERE type='table' AND name=?\", stmt.Table).Row().Scan(&count)\n\t})\n\treturn count > 0\n}\n\nfunc (m Migrator) DropTable(values ...interface{}) error {\n\treturn m.RunWithoutForeignKey(func() error {\n\t\tvalues = m.ReorderModels(values, false)\n\t\ttx := m.DB.Session(&gorm.Session{})\n\n\t\tfor i := len(values) - 1; i >= 0; i-- {\n\t\t\tif err := m.RunWithValue(values[i], func(stmt *gorm.Statement) error {\n\t\t\t\treturn tx.Exec(\"DROP TABLE IF EXISTS ?\", clause.Table{Name: stmt.Table}).Error\n\t\t\t}); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t}\n\n\t\treturn nil\n\t})\n}\n\nfunc (m Migrator) GetTables() (tableList []string, err error) {\n\treturn tableList, m.DB.Raw(\"SELECT name FROM sqlite_master where type=?\", \"table\").Scan(&tableList).Error\n}\n\nfunc (m Migrator) HasColumn(value interface{}, name string) bool {\n\tvar count int\n\tm.Migrator.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\t\tname = field.DBName\n\t\t\t}\n\t\t}\n\n\t\tif name != \"\" {\n\t\t\tm.DB.Raw(\n\t\t\t\t\"SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND (sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ?)\",\n\t\t\t\t\"table\", stmt.Table, `%\"`+name+`\" %`, `%`+name+` %`, \"%`\"+name+\"`%\", \"%[\"+name+\"]%\", \"%\\t\"+name+\"\\t%\",\n\t\t\t).Row().Scan(&count)\n\t\t}\n\t\treturn nil\n\t})\n\treturn count > 0\n}\n\nfunc (m Migrator) AlterColumn(value interface{}, name string) error {\n\treturn m.RunWithoutForeignKey(func() error {\n\t\treturn m.recreateTable(value, nil, func(ddl *ddl, stmt *gorm.Statement) (*ddl, []interface{}, error) {\n\t\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\t\tvar sqlArgs []interface{}\n\t\t\t\tfor i, f := range ddl.fields {\n\t\t\t\t\tif matches := columnRegexp.FindStringSubmatch(f); len(matches) > 1 && matches[1] == field.DBName {\n\t\t\t\t\t\tddl.fields[i] = fmt.Sprintf(\"`%v` ?\", field.DBName)\n\t\t\t\t\t\tsqlArgs = []interface{}{m.FullDataTypeOf(field)}\n\t\t\t\t\t\t// table created by old version might look like `CREATE TABLE ? (? varchar(10) UNIQUE)`.\n\t\t\t\t\t\t// FullDataTypeOf doesn't contain UNIQUE, so we need to add unique constraint.\n\t\t\t\t\t\tif strings.Contains(strings.ToUpper(matches[3]), \" UNIQUE\") {\n\t\t\t\t\t\t\tuniName := m.DB.NamingStrategy.UniqueName(stmt.Table, field.DBName)\n\t\t\t\t\t\t\tuni, _ := m.GuessConstraintInterfaceAndTable(stmt, uniName)\n\t\t\t\t\t\t\tif uni != nil {\n\t\t\t\t\t\t\t\tuniSQL, uniArgs := uni.Build()\n\t\t\t\t\t\t\t\tddl.addConstraint(uniName, uniSQL)\n\t\t\t\t\t\t\t\tsqlArgs = append(sqlArgs, uniArgs...)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ddl, sqlArgs, nil\n\t\t\t}\n\t\t\treturn nil, nil, fmt.Errorf(\"failed to alter field with name %v\", name)\n\t\t})\n\t})\n}\n\n// ColumnTypes return columnTypes []gorm.ColumnType and execErr error\nfunc (m Migrator) ColumnTypes(value interface{}) ([]gorm.ColumnType, error) {\n\tcolumnTypes := make([]gorm.ColumnType, 0)\n\texecErr := m.RunWithValue(value, func(stmt *gorm.Statement) (err error) {\n\t\tvar (\n\t\t\tsqls   []string\n\t\t\tsqlDDL *ddl\n\t\t)\n\n\t\tif err := m.DB.Raw(\"SELECT sql FROM sqlite_master WHERE type IN ? AND tbl_name = ? AND sql IS NOT NULL order by type = ? desc\", []string{\"table\", \"index\"}, stmt.Table, \"table\").Scan(&sqls).Error; err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tif sqlDDL, err = parseDDL(sqls...); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\trows, err := m.DB.Session(&gorm.Session{}).Table(stmt.Table).Limit(1).Rows()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer func() {\n\t\t\terr = rows.Close()\n\t\t}()\n\n\t\tvar rawColumnTypes []*sql.ColumnType\n\t\trawColumnTypes, err = rows.ColumnTypes()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tfor _, c := range rawColumnTypes {\n\t\t\tcolumnType := migrator.ColumnType{SQLColumnType: c}\n\t\t\tfor _, column := range sqlDDL.columns {\n\t\t\t\tif column.NameValue.String == c.Name() {\n\t\t\t\t\tcolumn.SQLColumnType = c\n\t\t\t\t\tcolumnType = column\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tcolumnTypes = append(columnTypes, columnType)\n\t\t}\n\n\t\treturn err\n\t})\n\n\treturn columnTypes, execErr\n}\n\nfunc (m Migrator) DropColumn(value interface{}, name string) error {\n\treturn m.recreateTable(value, nil, func(ddl *ddl, stmt *gorm.Statement) (*ddl, []interface{}, error) {\n\t\tif field := stmt.Schema.LookUpField(name); field != nil {\n\t\t\tname = field.DBName\n\t\t}\n\n\t\tddl.removeColumn(name)\n\t\treturn ddl, nil, nil\n\t})\n}\n\nfunc (m Migrator) CreateConstraint(value interface{}, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\n\t\treturn m.recreateTable(value, &table,\n\t\t\tfunc(ddl *ddl, stmt *gorm.Statement) (*ddl, []interface{}, error) {\n\t\t\t\tvar (\n\t\t\t\t\tconstraintName   string\n\t\t\t\t\tconstraintSql    string\n\t\t\t\t\tconstraintValues []interface{}\n\t\t\t\t)\n\n\t\t\t\tif constraint != nil {\n\t\t\t\t\tconstraintName = constraint.GetName()\n\t\t\t\t\tconstraintSql, constraintValues = constraint.Build()\n\t\t\t\t} else {\n\t\t\t\t\treturn nil, nil, nil\n\t\t\t\t}\n\n\t\t\t\tddl.addConstraint(constraintName, constraintSql)\n\t\t\t\treturn ddl, constraintValues, nil\n\t\t\t})\n\t})\n}\n\nfunc (m Migrator) DropConstraint(value interface{}, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t}\n\n\t\treturn m.recreateTable(value, &table,\n\t\t\tfunc(ddl *ddl, stmt *gorm.Statement) (*ddl, []interface{}, error) {\n\t\t\t\tddl.removeConstraint(name)\n\t\t\t\treturn ddl, nil, nil\n\t\t\t})\n\t})\n}\n\nfunc (m Migrator) HasConstraint(value interface{}, name string) bool {\n\tvar count int64\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tconstraint, table := m.GuessConstraintInterfaceAndTable(stmt, name)\n\t\tif constraint != nil {\n\t\t\tname = constraint.GetName()\n\t\t}\n\n\t\tm.DB.Raw(\n\t\t\t\"SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND (sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ? OR sql LIKE ?)\",\n\t\t\t\"table\", table, `%CONSTRAINT \"`+name+`\" %`, `%CONSTRAINT `+name+` %`, \"%CONSTRAINT `\"+name+\"`%\", \"%CONSTRAINT [\"+name+\"]%\", \"%CONSTRAINT \\t\"+name+\"\\t%\",\n\t\t).Row().Scan(&count)\n\n\t\treturn nil\n\t})\n\n\treturn count > 0\n}\n\nfunc (m Migrator) CurrentDatabase() (name string) {\n\tvar null interface{}\n\tm.DB.Raw(\"PRAGMA database_list\").Row().Scan(&null, &name, &null)\n\treturn\n}\n\nfunc (m Migrator) BuildIndexOptions(opts []schema.IndexOption, stmt *gorm.Statement) (results []interface{}) {\n\tfor _, opt := range opts {\n\t\tstr := stmt.Quote(opt.DBName)\n\t\tif opt.Expression != \"\" {\n\t\t\tstr = opt.Expression\n\t\t}\n\n\t\tif opt.Collate != \"\" {\n\t\t\tstr += \" COLLATE \" + opt.Collate\n\t\t}\n\n\t\tif opt.Sort != \"\" {\n\t\t\tstr += \" \" + opt.Sort\n\t\t}\n\t\tresults = append(results, clause.Expr{SQL: str})\n\t}\n\treturn\n}\n\nfunc (m Migrator) CreateIndex(value interface{}, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\topts := m.BuildIndexOptions(idx.Fields, stmt)\n\t\t\t\tvalues := []interface{}{clause.Column{Name: idx.Name}, clause.Table{Name: stmt.Table}, opts}\n\n\t\t\t\tcreateIndexSQL := \"CREATE \"\n\t\t\t\tif idx.Class != \"\" {\n\t\t\t\t\tcreateIndexSQL += idx.Class + \" \"\n\t\t\t\t}\n\t\t\t\tcreateIndexSQL += \"INDEX ?\"\n\n\t\t\t\tif idx.Type != \"\" {\n\t\t\t\t\tcreateIndexSQL += \" USING \" + idx.Type\n\t\t\t\t}\n\t\t\t\tcreateIndexSQL += \" ON ??\"\n\n\t\t\t\tif idx.Where != \"\" {\n\t\t\t\t\tcreateIndexSQL += \" WHERE \" + idx.Where\n\t\t\t\t}\n\n\t\t\t\treturn m.DB.Exec(createIndexSQL, values...).Error\n\t\t\t}\n\t\t}\n\t\treturn fmt.Errorf(\"failed to create index with name %v\", name)\n\t})\n}\n\nfunc (m Migrator) HasIndex(value interface{}, name string) bool {\n\tvar count int\n\tm.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\tname = idx.Name\n\t\t\t}\n\t\t}\n\n\t\tif name != \"\" {\n\t\t\tm.DB.Raw(\n\t\t\t\t\"SELECT count(*) FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?\", \"index\", stmt.Table, name,\n\t\t\t).Row().Scan(&count)\n\t\t}\n\t\treturn nil\n\t})\n\treturn count > 0\n}\n\nfunc (m Migrator) RenameIndex(value interface{}, oldName, newName string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tvar sql string\n\t\tm.DB.Raw(\"SELECT sql FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?\", \"index\", stmt.Table, oldName).Row().Scan(&sql)\n\t\tif sql != \"\" {\n\t\t\tif err := m.DropIndex(value, oldName); err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\treturn m.DB.Exec(strings.Replace(sql, oldName, newName, 1)).Error\n\t\t}\n\t\treturn fmt.Errorf(\"failed to find index with name %v\", oldName)\n\t})\n}\n\nfunc (m Migrator) DropIndex(value interface{}, name string) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\tif stmt.Schema != nil {\n\t\t\tif idx := stmt.Schema.LookIndex(name); idx != nil {\n\t\t\t\tname = idx.Name\n\t\t\t}\n\t\t}\n\n\t\treturn m.DB.Exec(\"DROP INDEX ?\", clause.Column{Name: name}).Error\n\t})\n}\n\ntype Index struct {\n\tSeq     int\n\tName    string\n\tUnique  bool\n\tOrigin  string\n\tPartial bool\n}\n\n// GetIndexes return Indexes []gorm.Index and execErr error,\n// See the [doc]\n//\n// [doc]: https://www.sqlite.org/pragma.html#pragma_index_list\nfunc (m Migrator) GetIndexes(value interface{}) ([]gorm.Index, error) {\n\tindexes := make([]gorm.Index, 0)\n\terr := m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\trst := make([]*Index, 0)\n\t\tif err := m.DB.Debug().Raw(\"SELECT * FROM PRAGMA_index_list(?)\", stmt.Table).Scan(&rst).Error; err != nil { // alias `PRAGMA index_list(?)`\n\t\t\treturn err\n\t\t}\n\t\tfor _, index := range rst {\n\t\t\tif index.Origin == \"u\" { // skip the index was created by a UNIQUE constraint\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tvar columns []string\n\t\t\tif err := m.DB.Raw(\"SELECT name FROM PRAGMA_index_info(?)\", index.Name).Scan(&columns).Error; err != nil { // alias `PRAGMA index_info(?)`\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tindexes = append(indexes, &migrator.Index{\n\t\t\t\tTableName:       stmt.Table,\n\t\t\t\tNameValue:       index.Name,\n\t\t\t\tColumnList:      columns,\n\t\t\t\tPrimaryKeyValue: sql.NullBool{Bool: index.Origin == \"pk\", Valid: true}, // The exceptions are INTEGER PRIMARY KEY\n\t\t\t\tUniqueValue:     sql.NullBool{Bool: index.Unique, Valid: true},\n\t\t\t})\n\t\t}\n\t\treturn nil\n\t})\n\treturn indexes, err\n}\n\nfunc (m Migrator) getRawDDL(table string) (string, error) {\n\tvar createSQL string\n\tm.DB.Raw(\"SELECT sql FROM sqlite_master WHERE type = ? AND tbl_name = ? AND name = ?\", \"table\", table, table).Row().Scan(&createSQL)\n\n\tif m.DB.Error != nil {\n\t\treturn \"\", m.DB.Error\n\t}\n\treturn createSQL, nil\n}\n\nfunc (m Migrator) recreateTable(\n\tvalue interface{}, tablePtr *string,\n\tgetCreateSQL func(ddl *ddl, stmt *gorm.Statement) (sql *ddl, sqlArgs []interface{}, err error),\n) error {\n\treturn m.RunWithValue(value, func(stmt *gorm.Statement) error {\n\t\ttable := stmt.Table\n\t\tif tablePtr != nil {\n\t\t\ttable = *tablePtr\n\t\t}\n\n\t\trawDDL, err := m.getRawDDL(table)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\toriginDDL, err := parseDDL(rawDDL)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcreateDDL, sqlArgs, err := getCreateSQL(originDDL.clone(), stmt)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif createDDL == nil {\n\t\t\treturn nil\n\t\t}\n\n\t\tnewTableName := table + \"__temp\"\n\t\tif err := createDDL.renameTable(newTableName, table); err != nil {\n\t\t\treturn err\n\t\t}\n\n\t\tcolumns := createDDL.getColumns()\n\t\tcreateSQL := createDDL.compile()\n\n\t\treturn m.DB.Transaction(func(tx *gorm.DB) error {\n\t\t\tif err := tx.Exec(createSQL, sqlArgs...).Error; err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tqueries := []string{\n\t\t\t\tfmt.Sprintf(\"INSERT INTO `%v`(%v) SELECT %v FROM `%v`\", newTableName, strings.Join(columns, \",\"), strings.Join(columns, \",\"), table),\n\t\t\t\tfmt.Sprintf(\"DROP TABLE `%v`\", table),\n\t\t\t\tfmt.Sprintf(\"ALTER TABLE `%v` RENAME TO `%v`\", newTableName, table),\n\t\t\t}\n\t\t\tfor _, query := range queries {\n\t\t\t\tif err := tx.Exec(query).Error; err != nil {\n\t\t\t\t\treturn err\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn nil\n\t\t})\n\t})\n}\n\nfunc init() {\n\n}\n"
  },
  {
    "path": "gossh/sqlite/sqlite.go",
    "content": "package sqlite\n\nimport (\n\t\"context\"\n\t\"database/sql\"\n\t\"strconv\"\n\n\t\"gossh/gorm/callbacks\"\n\n\tgosqlite \"github.com/glebarez/go-sqlite\"\n\tsqlite3 \"modernc.org/sqlite/lib\"\n\n\t\"gossh/gorm\"\n\t\"gossh/gorm/clause\"\n\t\"gossh/gorm/logger\"\n\t\"gossh/gorm/migrator\"\n\t\"gossh/gorm/schema\"\n)\n\n// DriverName is the default driver name for SQLite.\nconst DriverName = \"sqlite\"\n\ntype Dialector struct {\n\tDriverName string\n\tDSN        string\n\tConn       gorm.ConnPool\n}\n\nfunc Open(dsn string) gorm.Dialector {\n\treturn &Dialector{DSN: dsn}\n}\n\nfunc (dialector Dialector) Name() string {\n\treturn \"sqlite\"\n}\n\nfunc (dialector Dialector) Initialize(db *gorm.DB) (err error) {\n\tif dialector.DriverName == \"\" {\n\t\tdialector.DriverName = DriverName\n\t}\n\n\tif dialector.Conn != nil {\n\t\tdb.ConnPool = dialector.Conn\n\t} else {\n\t\tconn, err := sql.Open(dialector.DriverName, dialector.DSN)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdb.ConnPool = conn\n\t}\n\n\tvar version string\n\tif err := db.ConnPool.QueryRowContext(context.Background(), \"select sqlite_version()\").Scan(&version); err != nil {\n\t\treturn err\n\t}\n\t// https://www.sqlite.org/releaselog/3_35_0.html\n\tif compareVersion(version, \"3.35.0\") >= 0 {\n\t\tcallbacks.RegisterDefaultCallbacks(db, &callbacks.Config{\n\t\t\tCreateClauses:        []string{\"INSERT\", \"VALUES\", \"ON CONFLICT\", \"RETURNING\"},\n\t\t\tUpdateClauses:        []string{\"UPDATE\", \"SET\", \"FROM\", \"WHERE\", \"RETURNING\"},\n\t\t\tDeleteClauses:        []string{\"DELETE\", \"FROM\", \"WHERE\", \"RETURNING\"},\n\t\t\tLastInsertIDReversed: true,\n\t\t})\n\t} else {\n\t\tcallbacks.RegisterDefaultCallbacks(db, &callbacks.Config{\n\t\t\tLastInsertIDReversed: true,\n\t\t})\n\t}\n\n\tfor k, v := range dialector.ClauseBuilders() {\n\t\tdb.ClauseBuilders[k] = v\n\t}\n\treturn\n}\n\nfunc (dialector Dialector) ClauseBuilders() map[string]clause.ClauseBuilder {\n\treturn map[string]clause.ClauseBuilder{\n\t\t\"INSERT\": func(c clause.Clause, builder clause.Builder) {\n\t\t\tif insert, ok := c.Expression.(clause.Insert); ok {\n\t\t\t\tif stmt, ok := builder.(*gorm.Statement); ok {\n\t\t\t\t\tstmt.WriteString(\"INSERT \")\n\t\t\t\t\tif insert.Modifier != \"\" {\n\t\t\t\t\t\tstmt.WriteString(insert.Modifier)\n\t\t\t\t\t\tstmt.WriteByte(' ')\n\t\t\t\t\t}\n\n\t\t\t\t\tstmt.WriteString(\"INTO \")\n\t\t\t\t\tif insert.Table.Name == \"\" {\n\t\t\t\t\t\tstmt.WriteQuoted(stmt.Table)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstmt.WriteQuoted(insert.Table)\n\t\t\t\t\t}\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.Build(builder)\n\t\t},\n\t\t\"LIMIT\": func(c clause.Clause, builder clause.Builder) {\n\t\t\tif limit, ok := c.Expression.(clause.Limit); ok {\n\t\t\t\tvar lmt = -1\n\t\t\t\tif limit.Limit != nil && *limit.Limit >= 0 {\n\t\t\t\t\tlmt = *limit.Limit\n\t\t\t\t}\n\t\t\t\tif lmt >= 0 || limit.Offset > 0 {\n\t\t\t\t\tbuilder.WriteString(\"LIMIT \")\n\t\t\t\t\tbuilder.WriteString(strconv.Itoa(lmt))\n\t\t\t\t}\n\t\t\t\tif limit.Offset > 0 {\n\t\t\t\t\tbuilder.WriteString(\" OFFSET \")\n\t\t\t\t\tbuilder.WriteString(strconv.Itoa(limit.Offset))\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"FOR\": func(c clause.Clause, builder clause.Builder) {\n\t\t\tif _, ok := c.Expression.(clause.Locking); ok {\n\t\t\t\t// SQLite3 does not support row-level locking.\n\t\t\t\treturn\n\t\t\t}\n\t\t\tc.Build(builder)\n\t\t},\n\t}\n}\n\nfunc (dialector Dialector) DefaultValueOf(field *schema.Field) clause.Expression {\n\tif field.AutoIncrement {\n\t\treturn clause.Expr{SQL: \"NULL\"}\n\t}\n\n\t// doesn't work, will raise error\n\treturn clause.Expr{SQL: \"DEFAULT\"}\n}\n\nfunc (dialector Dialector) Migrator(db *gorm.DB) gorm.Migrator {\n\treturn Migrator{migrator.Migrator{Config: migrator.Config{\n\t\tDB:                          db,\n\t\tDialector:                   dialector,\n\t\tCreateIndexAfterCreateTable: true,\n\t}}}\n}\n\nfunc (dialector Dialector) BindVarTo(writer clause.Writer, stmt *gorm.Statement, v interface{}) {\n\twriter.WriteByte('?')\n}\n\nfunc (dialector Dialector) QuoteTo(writer clause.Writer, str string) {\n\tvar (\n\t\tunderQuoted, selfQuoted bool\n\t\tcontinuousBacktick      int8\n\t\tshiftDelimiter          int8\n\t)\n\n\tfor _, v := range []byte(str) {\n\t\tswitch v {\n\t\tcase '`':\n\t\t\tcontinuousBacktick++\n\t\t\tif continuousBacktick == 2 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t}\n\t\tcase '.':\n\t\t\tif continuousBacktick > 0 || !selfQuoted {\n\t\t\t\tshiftDelimiter = 0\n\t\t\t\tunderQuoted = false\n\t\t\t\tcontinuousBacktick = 0\n\t\t\t\twriter.WriteString(\"`\")\n\t\t\t}\n\t\t\twriter.WriteByte(v)\n\t\t\tcontinue\n\t\tdefault:\n\t\t\tif shiftDelimiter-continuousBacktick <= 0 && !underQuoted {\n\t\t\t\twriter.WriteString(\"`\")\n\t\t\t\tunderQuoted = true\n\t\t\t\tif selfQuoted = continuousBacktick > 0; selfQuoted {\n\t\t\t\t\tcontinuousBacktick -= 1\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ; continuousBacktick > 0; continuousBacktick -= 1 {\n\t\t\t\twriter.WriteString(\"``\")\n\t\t\t}\n\n\t\t\twriter.WriteByte(v)\n\t\t}\n\t\tshiftDelimiter++\n\t}\n\n\tif continuousBacktick > 0 && !selfQuoted {\n\t\twriter.WriteString(\"``\")\n\t}\n\twriter.WriteString(\"`\")\n}\n\nfunc (dialector Dialector) Explain(sql string, vars ...interface{}) string {\n\treturn logger.ExplainSQL(sql, nil, `\"`, vars...)\n}\n\nfunc (dialector Dialector) DataTypeOf(field *schema.Field) string {\n\tswitch field.DataType {\n\tcase schema.Bool:\n\t\treturn \"numeric\"\n\tcase schema.Int, schema.Uint:\n\t\tif field.AutoIncrement {\n\t\t\t// doesn't check `PrimaryKey`, to keep backward compatibility\n\t\t\t// https://www.sqlite.org/autoinc.html\n\t\t\treturn \"integer PRIMARY KEY AUTOINCREMENT\"\n\t\t} else {\n\t\t\treturn \"integer\"\n\t\t}\n\tcase schema.Float:\n\t\treturn \"real\"\n\tcase schema.String:\n\t\treturn \"text\"\n\tcase schema.Time:\n\t\t// Distinguish between schema.Time and tag time\n\t\tif val, ok := field.TagSettings[\"TYPE\"]; ok {\n\t\t\treturn val\n\t\t} else {\n\t\t\treturn \"datetime\"\n\t\t}\n\tcase schema.Bytes:\n\t\treturn \"blob\"\n\t}\n\n\treturn string(field.DataType)\n}\n\nfunc (dialectopr Dialector) SavePoint(tx *gorm.DB, name string) error {\n\ttx.Exec(\"SAVEPOINT \" + name)\n\treturn nil\n}\n\nfunc (dialectopr Dialector) RollbackTo(tx *gorm.DB, name string) error {\n\ttx.Exec(\"ROLLBACK TO SAVEPOINT \" + name)\n\treturn nil\n}\n\nfunc (dialector Dialector) Translate(err error) error {\n\tswitch terr := err.(type) {\n\tcase *gosqlite.Error:\n\t\tswitch terr.Code() {\n\t\tcase sqlite3.SQLITE_CONSTRAINT_UNIQUE:\n\t\t\treturn gorm.ErrDuplicatedKey\n\t\tcase sqlite3.SQLITE_CONSTRAINT_PRIMARYKEY:\n\t\t\treturn gorm.ErrDuplicatedKey\n\t\tcase sqlite3.SQLITE_CONSTRAINT_FOREIGNKEY:\n\t\t\treturn gorm.ErrForeignKeyViolated\n\t\t}\n\t}\n\treturn err\n}\n\nfunc compareVersion(version1, version2 string) int {\n\tn, m := len(version1), len(version2)\n\ti, j := 0, 0\n\tfor i < n || j < m {\n\t\tx := 0\n\t\tfor ; i < n && version1[i] != '.'; i++ {\n\t\t\tx = x*10 + int(version1[i]-'0')\n\t\t}\n\t\ti++\n\t\ty := 0\n\t\tfor ; j < m && version2[j] != '.'; j++ {\n\t\t\ty = y*10 + int(version2[j]-'0')\n\t\t}\n\t\tj++\n\t\tif x > y {\n\t\t\treturn 1\n\t\t}\n\t\tif x < y {\n\t\t\treturn -1\n\t\t}\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/cpu/byteorder.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 cpu\n\nimport (\n\t\"runtime\"\n)\n\n// byteOrder is a subset of encoding/binary.ByteOrder.\ntype byteOrder interface {\n\tUint32([]byte) uint32\n\tUint64([]byte) uint64\n}\n\ntype littleEndian struct{}\ntype bigEndian struct{}\n\nfunc (littleEndian) Uint32(b []byte) uint32 {\n\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n}\n\nfunc (littleEndian) Uint64(b []byte) uint64 {\n\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n}\n\nfunc (bigEndian) Uint32(b []byte) uint32 {\n\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24\n}\n\nfunc (bigEndian) Uint64(b []byte) uint64 {\n\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n}\n\n// hostByteOrder returns littleEndian on little-endian machines and\n// bigEndian on big-endian machines.\nfunc hostByteOrder() byteOrder {\n\tswitch runtime.GOARCH {\n\tcase \"386\", \"amd64\", \"amd64p32\",\n\t\t\"alpha\",\n\t\t\"arm\", \"arm64\",\n\t\t\"loong64\",\n\t\t\"mipsle\", \"mips64le\", \"mips64p32le\",\n\t\t\"nios2\",\n\t\t\"ppc64le\",\n\t\t\"riscv\", \"riscv64\",\n\t\t\"sh\":\n\t\treturn littleEndian{}\n\tcase \"armbe\", \"arm64be\",\n\t\t\"m68k\",\n\t\t\"mips\", \"mips64\", \"mips64p32\",\n\t\t\"ppc\", \"ppc64\",\n\t\t\"s390\", \"s390x\",\n\t\t\"shbe\",\n\t\t\"sparc\", \"sparc64\":\n\t\treturn bigEndian{}\n\t}\n\tpanic(\"unknown architecture\")\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu.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 cpu implements processor feature detection for\n// various CPU architectures.\npackage cpu\n\nimport (\n\t\"os\"\n\t\"strings\"\n)\n\n// Initialized reports whether the CPU features were initialized.\n//\n// For some GOOS/GOARCH combinations initialization of the CPU features depends\n// on reading an operating specific file, e.g. /proc/self/auxv on linux/arm\n// Initialized will report false if reading the file fails.\nvar Initialized bool\n\n// CacheLinePad is used to pad structs to avoid false sharing.\ntype CacheLinePad struct{ _ [cacheLineSize]byte }\n\n// X86 contains the supported CPU features of the\n// current X86/AMD64 platform. If the current platform\n// is not X86/AMD64 then all feature flags are false.\n//\n// X86 is padded to avoid false sharing. Further the HasAVX\n// and HasAVX2 are only set if the OS supports XMM and YMM\n// registers in addition to the CPUID feature bit being set.\nvar X86 struct {\n\t_                   CacheLinePad\n\tHasAES              bool // AES hardware implementation (AES NI)\n\tHasADX              bool // Multi-precision add-carry instruction extensions\n\tHasAVX              bool // Advanced vector extension\n\tHasAVX2             bool // Advanced vector extension 2\n\tHasAVX512           bool // Advanced vector extension 512\n\tHasAVX512F          bool // Advanced vector extension 512 Foundation Instructions\n\tHasAVX512CD         bool // Advanced vector extension 512 Conflict Detection Instructions\n\tHasAVX512ER         bool // Advanced vector extension 512 Exponential and Reciprocal Instructions\n\tHasAVX512PF         bool // Advanced vector extension 512 Prefetch Instructions\n\tHasAVX512VL         bool // Advanced vector extension 512 Vector Length Extensions\n\tHasAVX512BW         bool // Advanced vector extension 512 Byte and Word Instructions\n\tHasAVX512DQ         bool // Advanced vector extension 512 Doubleword and Quadword Instructions\n\tHasAVX512IFMA       bool // Advanced vector extension 512 Integer Fused Multiply Add\n\tHasAVX512VBMI       bool // Advanced vector extension 512 Vector Byte Manipulation Instructions\n\tHasAVX5124VNNIW     bool // Advanced vector extension 512 Vector Neural Network Instructions Word variable precision\n\tHasAVX5124FMAPS     bool // Advanced vector extension 512 Fused Multiply Accumulation Packed Single precision\n\tHasAVX512VPOPCNTDQ  bool // Advanced vector extension 512 Double and quad word population count instructions\n\tHasAVX512VPCLMULQDQ bool // Advanced vector extension 512 Vector carry-less multiply operations\n\tHasAVX512VNNI       bool // Advanced vector extension 512 Vector Neural Network Instructions\n\tHasAVX512GFNI       bool // Advanced vector extension 512 Galois field New Instructions\n\tHasAVX512VAES       bool // Advanced vector extension 512 Vector AES instructions\n\tHasAVX512VBMI2      bool // Advanced vector extension 512 Vector Byte Manipulation Instructions 2\n\tHasAVX512BITALG     bool // Advanced vector extension 512 Bit Algorithms\n\tHasAVX512BF16       bool // Advanced vector extension 512 BFloat16 Instructions\n\tHasAMXTile          bool // Advanced Matrix Extension Tile instructions\n\tHasAMXInt8          bool // Advanced Matrix Extension Int8 instructions\n\tHasAMXBF16          bool // Advanced Matrix Extension BFloat16 instructions\n\tHasBMI1             bool // Bit manipulation instruction set 1\n\tHasBMI2             bool // Bit manipulation instruction set 2\n\tHasCX16             bool // Compare and exchange 16 Bytes\n\tHasERMS             bool // Enhanced REP for MOVSB and STOSB\n\tHasFMA              bool // Fused-multiply-add instructions\n\tHasOSXSAVE          bool // OS supports XSAVE/XRESTOR for saving/restoring XMM registers.\n\tHasPCLMULQDQ        bool // PCLMULQDQ instruction - most often used for AES-GCM\n\tHasPOPCNT           bool // Hamming weight instruction POPCNT.\n\tHasRDRAND           bool // RDRAND instruction (on-chip random number generator)\n\tHasRDSEED           bool // RDSEED instruction (on-chip random number generator)\n\tHasSSE2             bool // Streaming SIMD extension 2 (always available on amd64)\n\tHasSSE3             bool // Streaming SIMD extension 3\n\tHasSSSE3            bool // Supplemental streaming SIMD extension 3\n\tHasSSE41            bool // Streaming SIMD extension 4 and 4.1\n\tHasSSE42            bool // Streaming SIMD extension 4 and 4.2\n\t_                   CacheLinePad\n}\n\n// ARM64 contains the supported CPU features of the\n// current ARMv8(aarch64) platform. If the current platform\n// is not arm64 then all feature flags are false.\nvar ARM64 struct {\n\t_           CacheLinePad\n\tHasFP       bool // Floating-point instruction set (always available)\n\tHasASIMD    bool // Advanced SIMD (always available)\n\tHasEVTSTRM  bool // Event stream support\n\tHasAES      bool // AES hardware implementation\n\tHasPMULL    bool // Polynomial multiplication instruction set\n\tHasSHA1     bool // SHA1 hardware implementation\n\tHasSHA2     bool // SHA2 hardware implementation\n\tHasCRC32    bool // CRC32 hardware implementation\n\tHasATOMICS  bool // Atomic memory operation instruction set\n\tHasFPHP     bool // Half precision floating-point instruction set\n\tHasASIMDHP  bool // Advanced SIMD half precision instruction set\n\tHasCPUID    bool // CPUID identification scheme registers\n\tHasASIMDRDM bool // Rounding double multiply add/subtract instruction set\n\tHasJSCVT    bool // Javascript conversion from floating-point to integer\n\tHasFCMA     bool // Floating-point multiplication and addition of complex numbers\n\tHasLRCPC    bool // Release Consistent processor consistent support\n\tHasDCPOP    bool // Persistent memory support\n\tHasSHA3     bool // SHA3 hardware implementation\n\tHasSM3      bool // SM3 hardware implementation\n\tHasSM4      bool // SM4 hardware implementation\n\tHasASIMDDP  bool // Advanced SIMD double precision instruction set\n\tHasSHA512   bool // SHA512 hardware implementation\n\tHasSVE      bool // Scalable Vector Extensions\n\tHasASIMDFHM bool // Advanced SIMD multiplication FP16 to FP32\n\t_           CacheLinePad\n}\n\n// ARM contains the supported CPU features of the current ARM (32-bit) platform.\n// All feature flags are false if:\n//  1. the current platform is not arm, or\n//  2. the current operating system is not Linux.\nvar ARM struct {\n\t_           CacheLinePad\n\tHasSWP      bool // SWP instruction support\n\tHasHALF     bool // Half-word load and store support\n\tHasTHUMB    bool // ARM Thumb instruction set\n\tHas26BIT    bool // Address space limited to 26-bits\n\tHasFASTMUL  bool // 32-bit operand, 64-bit result multiplication support\n\tHasFPA      bool // Floating point arithmetic support\n\tHasVFP      bool // Vector floating point support\n\tHasEDSP     bool // DSP Extensions support\n\tHasJAVA     bool // Java instruction set\n\tHasIWMMXT   bool // Intel Wireless MMX technology support\n\tHasCRUNCH   bool // MaverickCrunch context switching and handling\n\tHasTHUMBEE  bool // Thumb EE instruction set\n\tHasNEON     bool // NEON instruction set\n\tHasVFPv3    bool // Vector floating point version 3 support\n\tHasVFPv3D16 bool // Vector floating point version 3 D8-D15\n\tHasTLS      bool // Thread local storage support\n\tHasVFPv4    bool // Vector floating point version 4 support\n\tHasIDIVA    bool // Integer divide instruction support in ARM mode\n\tHasIDIVT    bool // Integer divide instruction support in Thumb mode\n\tHasVFPD32   bool // Vector floating point version 3 D15-D31\n\tHasLPAE     bool // Large Physical Address Extensions\n\tHasEVTSTRM  bool // Event stream support\n\tHasAES      bool // AES hardware implementation\n\tHasPMULL    bool // Polynomial multiplication instruction set\n\tHasSHA1     bool // SHA1 hardware implementation\n\tHasSHA2     bool // SHA2 hardware implementation\n\tHasCRC32    bool // CRC32 hardware implementation\n\t_           CacheLinePad\n}\n\n// MIPS64X contains the supported CPU features of the current mips64/mips64le\n// platforms. If the current platform is not mips64/mips64le or the current\n// operating system is not Linux then all feature flags are false.\nvar MIPS64X struct {\n\t_      CacheLinePad\n\tHasMSA bool // MIPS SIMD architecture\n\t_      CacheLinePad\n}\n\n// PPC64 contains the supported CPU features of the current ppc64/ppc64le platforms.\n// If the current platform is not ppc64/ppc64le then all feature flags are false.\n//\n// For ppc64/ppc64le, it is safe to check only for ISA level starting on ISA v3.00,\n// since there are no optional categories. There are some exceptions that also\n// require kernel support to work (DARN, SCV), so there are feature bits for\n// those as well. The struct is padded to avoid false sharing.\nvar PPC64 struct {\n\t_        CacheLinePad\n\tHasDARN  bool // Hardware random number generator (requires kernel enablement)\n\tHasSCV   bool // Syscall vectored (requires kernel enablement)\n\tIsPOWER8 bool // ISA v2.07 (POWER8)\n\tIsPOWER9 bool // ISA v3.00 (POWER9), implies IsPOWER8\n\t_        CacheLinePad\n}\n\n// S390X contains the supported CPU features of the current IBM Z\n// (s390x) platform. If the current platform is not IBM Z then all\n// feature flags are false.\n//\n// S390X is padded to avoid false sharing. Further HasVX is only set\n// if the OS supports vector registers in addition to the STFLE\n// feature bit being set.\nvar S390X struct {\n\t_         CacheLinePad\n\tHasZARCH  bool // z/Architecture mode is active [mandatory]\n\tHasSTFLE  bool // store facility list extended\n\tHasLDISP  bool // long (20-bit) displacements\n\tHasEIMM   bool // 32-bit immediates\n\tHasDFP    bool // decimal floating point\n\tHasETF3EH bool // ETF-3 enhanced\n\tHasMSA    bool // message security assist (CPACF)\n\tHasAES    bool // KM-AES{128,192,256} functions\n\tHasAESCBC bool // KMC-AES{128,192,256} functions\n\tHasAESCTR bool // KMCTR-AES{128,192,256} functions\n\tHasAESGCM bool // KMA-GCM-AES{128,192,256} functions\n\tHasGHASH  bool // KIMD-GHASH function\n\tHasSHA1   bool // K{I,L}MD-SHA-1 functions\n\tHasSHA256 bool // K{I,L}MD-SHA-256 functions\n\tHasSHA512 bool // K{I,L}MD-SHA-512 functions\n\tHasSHA3   bool // K{I,L}MD-SHA3-{224,256,384,512} and K{I,L}MD-SHAKE-{128,256} functions\n\tHasVX     bool // vector facility\n\tHasVXE    bool // vector-enhancements facility 1\n\t_         CacheLinePad\n}\n\nfunc init() {\n\tarchInit()\n\tinitOptions()\n\tprocessOptions()\n}\n\n// options contains the cpu debug options that can be used in GODEBUG.\n// Options are arch dependent and are added by the arch specific initOptions functions.\n// Features that are mandatory for the specific GOARCH should have the Required field set\n// (e.g. SSE2 on amd64).\nvar options []option\n\n// Option names should be lower case. e.g. avx instead of AVX.\ntype option struct {\n\tName      string\n\tFeature   *bool\n\tSpecified bool // whether feature value was specified in GODEBUG\n\tEnable    bool // whether feature should be enabled\n\tRequired  bool // whether feature is mandatory and can not be disabled\n}\n\nfunc processOptions() {\n\tenv := os.Getenv(\"GODEBUG\")\nfield:\n\tfor env != \"\" {\n\t\tfield := \"\"\n\t\ti := strings.IndexByte(env, ',')\n\t\tif i < 0 {\n\t\t\tfield, env = env, \"\"\n\t\t} else {\n\t\t\tfield, env = env[:i], env[i+1:]\n\t\t}\n\t\tif len(field) < 4 || field[:4] != \"cpu.\" {\n\t\t\tcontinue\n\t\t}\n\t\ti = strings.IndexByte(field, '=')\n\t\tif i < 0 {\n\t\t\tprint(\"GODEBUG sys/cpu: no value specified for \\\"\", field, \"\\\"\\n\")\n\t\t\tcontinue\n\t\t}\n\t\tkey, value := field[4:i], field[i+1:] // e.g. \"SSE2\", \"on\"\n\n\t\tvar enable bool\n\t\tswitch value {\n\t\tcase \"on\":\n\t\t\tenable = true\n\t\tcase \"off\":\n\t\t\tenable = false\n\t\tdefault:\n\t\t\tprint(\"GODEBUG sys/cpu: value \\\"\", value, \"\\\" not supported for cpu option \\\"\", key, \"\\\"\\n\")\n\t\t\tcontinue field\n\t\t}\n\n\t\tif key == \"all\" {\n\t\t\tfor i := range options {\n\t\t\t\toptions[i].Specified = true\n\t\t\t\toptions[i].Enable = enable || options[i].Required\n\t\t\t}\n\t\t\tcontinue field\n\t\t}\n\n\t\tfor i := range options {\n\t\t\tif options[i].Name == key {\n\t\t\t\toptions[i].Specified = true\n\t\t\t\toptions[i].Enable = enable\n\t\t\t\tcontinue field\n\t\t\t}\n\t\t}\n\n\t\tprint(\"GODEBUG sys/cpu: unknown cpu feature \\\"\", key, \"\\\"\\n\")\n\t}\n\n\tfor _, o := range options {\n\t\tif !o.Specified {\n\t\t\tcontinue\n\t\t}\n\n\t\tif o.Enable && !*o.Feature {\n\t\t\tprint(\"GODEBUG sys/cpu: can not enable \\\"\", o.Name, \"\\\", missing CPU support\\n\")\n\t\t\tcontinue\n\t\t}\n\n\t\tif !o.Enable && o.Required {\n\t\t\tprint(\"GODEBUG sys/cpu: can not disable \\\"\", o.Name, \"\\\", required CPU feature\\n\")\n\t\t\tcontinue\n\t\t}\n\n\t\t*o.Feature = o.Enable\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_aix.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\npackage cpu\n\nconst (\n\t// getsystemcfg constants\n\t_SC_IMPL     = 2\n\t_IMPL_POWER8 = 0x10000\n\t_IMPL_POWER9 = 0x20000\n)\n\nfunc archInit() {\n\timpl := getsystemcfg(_SC_IMPL)\n\tif impl&_IMPL_POWER8 != 0 {\n\t\tPPC64.IsPOWER8 = true\n\t}\n\tif impl&_IMPL_POWER9 != 0 {\n\t\tPPC64.IsPOWER8 = true\n\t\tPPC64.IsPOWER9 = true\n\t}\n\n\tInitialized = true\n}\n\nfunc getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_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 cpu\n\nconst cacheLineSize = 32\n\n// HWCAP/HWCAP2 bits.\n// These are specific to Linux.\nconst (\n\thwcap_SWP       = 1 << 0\n\thwcap_HALF      = 1 << 1\n\thwcap_THUMB     = 1 << 2\n\thwcap_26BIT     = 1 << 3\n\thwcap_FAST_MULT = 1 << 4\n\thwcap_FPA       = 1 << 5\n\thwcap_VFP       = 1 << 6\n\thwcap_EDSP      = 1 << 7\n\thwcap_JAVA      = 1 << 8\n\thwcap_IWMMXT    = 1 << 9\n\thwcap_CRUNCH    = 1 << 10\n\thwcap_THUMBEE   = 1 << 11\n\thwcap_NEON      = 1 << 12\n\thwcap_VFPv3     = 1 << 13\n\thwcap_VFPv3D16  = 1 << 14\n\thwcap_TLS       = 1 << 15\n\thwcap_VFPv4     = 1 << 16\n\thwcap_IDIVA     = 1 << 17\n\thwcap_IDIVT     = 1 << 18\n\thwcap_VFPD32    = 1 << 19\n\thwcap_LPAE      = 1 << 20\n\thwcap_EVTSTRM   = 1 << 21\n\n\thwcap2_AES   = 1 << 0\n\thwcap2_PMULL = 1 << 1\n\thwcap2_SHA1  = 1 << 2\n\thwcap2_SHA2  = 1 << 3\n\thwcap2_CRC32 = 1 << 4\n)\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"pmull\", Feature: &ARM.HasPMULL},\n\t\t{Name: \"sha1\", Feature: &ARM.HasSHA1},\n\t\t{Name: \"sha2\", Feature: &ARM.HasSHA2},\n\t\t{Name: \"swp\", Feature: &ARM.HasSWP},\n\t\t{Name: \"thumb\", Feature: &ARM.HasTHUMB},\n\t\t{Name: \"thumbee\", Feature: &ARM.HasTHUMBEE},\n\t\t{Name: \"tls\", Feature: &ARM.HasTLS},\n\t\t{Name: \"vfp\", Feature: &ARM.HasVFP},\n\t\t{Name: \"vfpd32\", Feature: &ARM.HasVFPD32},\n\t\t{Name: \"vfpv3\", Feature: &ARM.HasVFPv3},\n\t\t{Name: \"vfpv3d16\", Feature: &ARM.HasVFPv3D16},\n\t\t{Name: \"vfpv4\", Feature: &ARM.HasVFPv4},\n\t\t{Name: \"half\", Feature: &ARM.HasHALF},\n\t\t{Name: \"26bit\", Feature: &ARM.Has26BIT},\n\t\t{Name: \"fastmul\", Feature: &ARM.HasFASTMUL},\n\t\t{Name: \"fpa\", Feature: &ARM.HasFPA},\n\t\t{Name: \"edsp\", Feature: &ARM.HasEDSP},\n\t\t{Name: \"java\", Feature: &ARM.HasJAVA},\n\t\t{Name: \"iwmmxt\", Feature: &ARM.HasIWMMXT},\n\t\t{Name: \"crunch\", Feature: &ARM.HasCRUNCH},\n\t\t{Name: \"neon\", Feature: &ARM.HasNEON},\n\t\t{Name: \"idivt\", Feature: &ARM.HasIDIVT},\n\t\t{Name: \"idiva\", Feature: &ARM.HasIDIVA},\n\t\t{Name: \"lpae\", Feature: &ARM.HasLPAE},\n\t\t{Name: \"evtstrm\", Feature: &ARM.HasEVTSTRM},\n\t\t{Name: \"aes\", Feature: &ARM.HasAES},\n\t\t{Name: \"crc32\", Feature: &ARM.HasCRC32},\n\t}\n\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_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\npackage cpu\n\nimport \"runtime\"\n\n// cacheLineSize is used to prevent false sharing of cache lines.\n// We choose 128 because Apple Silicon, a.k.a. M1, has 128-byte cache line size.\n// It doesn't cost much and is much more future-proof.\nconst cacheLineSize = 128\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"fp\", Feature: &ARM64.HasFP},\n\t\t{Name: \"asimd\", Feature: &ARM64.HasASIMD},\n\t\t{Name: \"evstrm\", Feature: &ARM64.HasEVTSTRM},\n\t\t{Name: \"aes\", Feature: &ARM64.HasAES},\n\t\t{Name: \"fphp\", Feature: &ARM64.HasFPHP},\n\t\t{Name: \"jscvt\", Feature: &ARM64.HasJSCVT},\n\t\t{Name: \"lrcpc\", Feature: &ARM64.HasLRCPC},\n\t\t{Name: \"pmull\", Feature: &ARM64.HasPMULL},\n\t\t{Name: \"sha1\", Feature: &ARM64.HasSHA1},\n\t\t{Name: \"sha2\", Feature: &ARM64.HasSHA2},\n\t\t{Name: \"sha3\", Feature: &ARM64.HasSHA3},\n\t\t{Name: \"sha512\", Feature: &ARM64.HasSHA512},\n\t\t{Name: \"sm3\", Feature: &ARM64.HasSM3},\n\t\t{Name: \"sm4\", Feature: &ARM64.HasSM4},\n\t\t{Name: \"sve\", Feature: &ARM64.HasSVE},\n\t\t{Name: \"crc32\", Feature: &ARM64.HasCRC32},\n\t\t{Name: \"atomics\", Feature: &ARM64.HasATOMICS},\n\t\t{Name: \"asimdhp\", Feature: &ARM64.HasASIMDHP},\n\t\t{Name: \"cpuid\", Feature: &ARM64.HasCPUID},\n\t\t{Name: \"asimrdm\", Feature: &ARM64.HasASIMDRDM},\n\t\t{Name: \"fcma\", Feature: &ARM64.HasFCMA},\n\t\t{Name: \"dcpop\", Feature: &ARM64.HasDCPOP},\n\t\t{Name: \"asimddp\", Feature: &ARM64.HasASIMDDP},\n\t\t{Name: \"asimdfhm\", Feature: &ARM64.HasASIMDFHM},\n\t}\n}\n\nfunc archInit() {\n\tswitch runtime.GOOS {\n\tcase \"freebsd\":\n\t\treadARM64Registers()\n\tcase \"linux\", \"netbsd\", \"openbsd\":\n\t\tdoinit()\n\tdefault:\n\t\t// Many platforms don't seem to allow reading these registers.\n\t\tsetMinimalFeatures()\n\t}\n}\n\n// setMinimalFeatures fakes the minimal ARM64 features expected by\n// TestARM64minimalFeatures.\nfunc setMinimalFeatures() {\n\tARM64.HasASIMD = true\n\tARM64.HasFP = true\n}\n\nfunc readARM64Registers() {\n\tInitialized = true\n\n\tparseARM64SystemRegisters(getisar0(), getisar1(), getpfr0())\n}\n\nfunc parseARM64SystemRegisters(isar0, isar1, pfr0 uint64) {\n\t// ID_AA64ISAR0_EL1\n\tswitch extractBits(isar0, 4, 7) {\n\tcase 1:\n\t\tARM64.HasAES = true\n\tcase 2:\n\t\tARM64.HasAES = true\n\t\tARM64.HasPMULL = true\n\t}\n\n\tswitch extractBits(isar0, 8, 11) {\n\tcase 1:\n\t\tARM64.HasSHA1 = true\n\t}\n\n\tswitch extractBits(isar0, 12, 15) {\n\tcase 1:\n\t\tARM64.HasSHA2 = true\n\tcase 2:\n\t\tARM64.HasSHA2 = true\n\t\tARM64.HasSHA512 = true\n\t}\n\n\tswitch extractBits(isar0, 16, 19) {\n\tcase 1:\n\t\tARM64.HasCRC32 = true\n\t}\n\n\tswitch extractBits(isar0, 20, 23) {\n\tcase 2:\n\t\tARM64.HasATOMICS = true\n\t}\n\n\tswitch extractBits(isar0, 28, 31) {\n\tcase 1:\n\t\tARM64.HasASIMDRDM = true\n\t}\n\n\tswitch extractBits(isar0, 32, 35) {\n\tcase 1:\n\t\tARM64.HasSHA3 = true\n\t}\n\n\tswitch extractBits(isar0, 36, 39) {\n\tcase 1:\n\t\tARM64.HasSM3 = true\n\t}\n\n\tswitch extractBits(isar0, 40, 43) {\n\tcase 1:\n\t\tARM64.HasSM4 = true\n\t}\n\n\tswitch extractBits(isar0, 44, 47) {\n\tcase 1:\n\t\tARM64.HasASIMDDP = true\n\t}\n\n\t// ID_AA64ISAR1_EL1\n\tswitch extractBits(isar1, 0, 3) {\n\tcase 1:\n\t\tARM64.HasDCPOP = true\n\t}\n\n\tswitch extractBits(isar1, 12, 15) {\n\tcase 1:\n\t\tARM64.HasJSCVT = true\n\t}\n\n\tswitch extractBits(isar1, 16, 19) {\n\tcase 1:\n\t\tARM64.HasFCMA = true\n\t}\n\n\tswitch extractBits(isar1, 20, 23) {\n\tcase 1:\n\t\tARM64.HasLRCPC = true\n\t}\n\n\t// ID_AA64PFR0_EL1\n\tswitch extractBits(pfr0, 16, 19) {\n\tcase 0:\n\t\tARM64.HasFP = true\n\tcase 1:\n\t\tARM64.HasFP = true\n\t\tARM64.HasFPHP = true\n\t}\n\n\tswitch extractBits(pfr0, 20, 23) {\n\tcase 0:\n\t\tARM64.HasASIMD = true\n\tcase 1:\n\t\tARM64.HasASIMD = true\n\t\tARM64.HasASIMDHP = true\n\t}\n\n\tswitch extractBits(pfr0, 32, 35) {\n\tcase 1:\n\t\tARM64.HasSVE = true\n\t}\n}\n\nfunc extractBits(data uint64, start, end uint) uint {\n\treturn (uint)(data>>start) & ((1 << (end - start + 1)) - 1)\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_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//go:build gc\n\n#include \"textflag.h\"\n\n// func getisar0() uint64\nTEXT ·getisar0(SB),NOSPLIT,$0-8\n\t// get Instruction Set Attributes 0 into x0\n\t// mrs x0, ID_AA64ISAR0_EL1 = d5380600\n\tWORD\t$0xd5380600\n\tMOVD\tR0, ret+0(FP)\n\tRET\n\n// func getisar1() uint64\nTEXT ·getisar1(SB),NOSPLIT,$0-8\n\t// get Instruction Set Attributes 1 into x0\n\t// mrs x0, ID_AA64ISAR1_EL1 = d5380620\n\tWORD\t$0xd5380620\n\tMOVD\tR0, ret+0(FP)\n\tRET\n\n// func getpfr0() uint64\nTEXT ·getpfr0(SB),NOSPLIT,$0-8\n\t// get Processor Feature Register 0 into x0\n\t// mrs x0, ID_AA64PFR0_EL1 = d5380400\n\tWORD\t$0xd5380400\n\tMOVD\tR0, ret+0(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gc_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\npackage cpu\n\nfunc getisar0() uint64\nfunc getisar1() uint64\nfunc getpfr0() uint64\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gc_s390x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\npackage cpu\n\n// haveAsmFunctions reports whether the other functions in this file can\n// be safely called.\nfunc haveAsmFunctions() bool { return true }\n\n// The following feature detection functions are defined in cpu_s390x.s.\n// They are likely to be expensive to call so the results should be cached.\nfunc stfle() facilityList\nfunc kmQuery() queryResult\nfunc kmcQuery() queryResult\nfunc kmctrQuery() queryResult\nfunc kmaQuery() queryResult\nfunc kimdQuery() queryResult\nfunc klmdQuery() queryResult\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gc_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gc\n\npackage cpu\n\n// cpuid is implemented in cpu_x86.s for gc compiler\n// and in cpu_gccgo.c for gccgo.\nfunc cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)\n\n// xgetbv with ecx = 0 is implemented in cpu_x86.s for gc compiler\n// and in cpu_gccgo.c for gccgo.\nfunc xgetbv() (eax, edx uint32)\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gccgo_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo\n\npackage cpu\n\nfunc getisar0() uint64 { return 0 }\nfunc getisar1() uint64 { return 0 }\nfunc getpfr0() uint64  { return 0 }\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gccgo_s390x.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo\n\npackage cpu\n\n// haveAsmFunctions reports whether the other functions in this file can\n// be safely called.\nfunc haveAsmFunctions() bool { return false }\n\n// TODO(mundaym): the following feature detection functions are currently\n// stubs. See https://golang.org/cl/162887 for how to fix this.\n// They are likely to be expensive to call so the results should be cached.\nfunc stfle() facilityList     { panic(\"not implemented for gccgo\") }\nfunc kmQuery() queryResult    { panic(\"not implemented for gccgo\") }\nfunc kmcQuery() queryResult   { panic(\"not implemented for gccgo\") }\nfunc kmctrQuery() queryResult { panic(\"not implemented for gccgo\") }\nfunc kmaQuery() queryResult   { panic(\"not implemented for gccgo\") }\nfunc kimdQuery() queryResult  { panic(\"not implemented for gccgo\") }\nfunc klmdQuery() queryResult  { panic(\"not implemented for gccgo\") }\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gccgo_x86.c",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gccgo\n\n#include <cpuid.h>\n#include <stdint.h>\n#include <x86intrin.h>\n\n// Need to wrap __get_cpuid_count because it's declared as static.\nint\ngccgoGetCpuidCount(uint32_t leaf, uint32_t subleaf,\n                   uint32_t *eax, uint32_t *ebx,\n                   uint32_t *ecx, uint32_t *edx)\n{\n\treturn __get_cpuid_count(leaf, subleaf, eax, ebx, ecx, edx);\n}\n\n#pragma GCC diagnostic ignored \"-Wunknown-pragmas\"\n#pragma GCC push_options\n#pragma GCC target(\"xsave\")\n#pragma clang attribute push (__attribute__((target(\"xsave\"))), apply_to=function)\n\n// xgetbv reads the contents of an XCR (Extended Control Register)\n// specified in the ECX register into registers EDX:EAX.\n// Currently, the only supported value for XCR is 0.\nvoid\ngccgoXgetbv(uint32_t *eax, uint32_t *edx)\n{\n\tuint64_t v = _xgetbv(0);\n\t*eax = v & 0xffffffff;\n\t*edx = v >> 32;\n}\n\n#pragma clang attribute pop\n#pragma GCC pop_options\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_gccgo_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gccgo\n\npackage cpu\n\n//extern gccgoGetCpuidCount\nfunc gccgoGetCpuidCount(eaxArg, ecxArg uint32, eax, ebx, ecx, edx *uint32)\n\nfunc cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32) {\n\tvar a, b, c, d uint32\n\tgccgoGetCpuidCount(eaxArg, ecxArg, &a, &b, &c, &d)\n\treturn a, b, c, d\n}\n\n//extern gccgoXgetbv\nfunc gccgoXgetbv(eax, edx *uint32)\n\nfunc xgetbv() (eax, edx uint32) {\n\tvar a, d uint32\n\tgccgoXgetbv(&a, &d)\n\treturn a, d\n}\n\n// gccgo doesn't build on Darwin, per:\n// https://github.com/Homebrew/homebrew-core/blob/HEAD/Formula/gcc.rb#L76\nfunc darwinSupportsAVX512() bool {\n\treturn false\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_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//go:build !386 && !amd64 && !amd64p32 && !arm64\n\npackage cpu\n\nfunc archInit() {\n\tif err := readHWCAP(); err != nil {\n\t\treturn\n\t}\n\tdoinit()\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_arm.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 cpu\n\nfunc doinit() {\n\tARM.HasSWP = isSet(hwCap, hwcap_SWP)\n\tARM.HasHALF = isSet(hwCap, hwcap_HALF)\n\tARM.HasTHUMB = isSet(hwCap, hwcap_THUMB)\n\tARM.Has26BIT = isSet(hwCap, hwcap_26BIT)\n\tARM.HasFASTMUL = isSet(hwCap, hwcap_FAST_MULT)\n\tARM.HasFPA = isSet(hwCap, hwcap_FPA)\n\tARM.HasVFP = isSet(hwCap, hwcap_VFP)\n\tARM.HasEDSP = isSet(hwCap, hwcap_EDSP)\n\tARM.HasJAVA = isSet(hwCap, hwcap_JAVA)\n\tARM.HasIWMMXT = isSet(hwCap, hwcap_IWMMXT)\n\tARM.HasCRUNCH = isSet(hwCap, hwcap_CRUNCH)\n\tARM.HasTHUMBEE = isSet(hwCap, hwcap_THUMBEE)\n\tARM.HasNEON = isSet(hwCap, hwcap_NEON)\n\tARM.HasVFPv3 = isSet(hwCap, hwcap_VFPv3)\n\tARM.HasVFPv3D16 = isSet(hwCap, hwcap_VFPv3D16)\n\tARM.HasTLS = isSet(hwCap, hwcap_TLS)\n\tARM.HasVFPv4 = isSet(hwCap, hwcap_VFPv4)\n\tARM.HasIDIVA = isSet(hwCap, hwcap_IDIVA)\n\tARM.HasIDIVT = isSet(hwCap, hwcap_IDIVT)\n\tARM.HasVFPD32 = isSet(hwCap, hwcap_VFPD32)\n\tARM.HasLPAE = isSet(hwCap, hwcap_LPAE)\n\tARM.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM)\n\tARM.HasAES = isSet(hwCap2, hwcap2_AES)\n\tARM.HasPMULL = isSet(hwCap2, hwcap2_PMULL)\n\tARM.HasSHA1 = isSet(hwCap2, hwcap2_SHA1)\n\tARM.HasSHA2 = isSet(hwCap2, hwcap2_SHA2)\n\tARM.HasCRC32 = isSet(hwCap2, hwcap2_CRC32)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_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\npackage cpu\n\nimport (\n\t\"strings\"\n\t\"syscall\"\n)\n\n// HWCAP/HWCAP2 bits. These are exposed by Linux.\nconst (\n\thwcap_FP       = 1 << 0\n\thwcap_ASIMD    = 1 << 1\n\thwcap_EVTSTRM  = 1 << 2\n\thwcap_AES      = 1 << 3\n\thwcap_PMULL    = 1 << 4\n\thwcap_SHA1     = 1 << 5\n\thwcap_SHA2     = 1 << 6\n\thwcap_CRC32    = 1 << 7\n\thwcap_ATOMICS  = 1 << 8\n\thwcap_FPHP     = 1 << 9\n\thwcap_ASIMDHP  = 1 << 10\n\thwcap_CPUID    = 1 << 11\n\thwcap_ASIMDRDM = 1 << 12\n\thwcap_JSCVT    = 1 << 13\n\thwcap_FCMA     = 1 << 14\n\thwcap_LRCPC    = 1 << 15\n\thwcap_DCPOP    = 1 << 16\n\thwcap_SHA3     = 1 << 17\n\thwcap_SM3      = 1 << 18\n\thwcap_SM4      = 1 << 19\n\thwcap_ASIMDDP  = 1 << 20\n\thwcap_SHA512   = 1 << 21\n\thwcap_SVE      = 1 << 22\n\thwcap_ASIMDFHM = 1 << 23\n)\n\n// linuxKernelCanEmulateCPUID reports whether we're running\n// on Linux 4.11+. Ideally we'd like to ask the question about\n// whether the current kernel contains\n// https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=77c97b4ee21290f5f083173d957843b615abbff2\n// but the version number will have to do.\nfunc linuxKernelCanEmulateCPUID() bool {\n\tvar un syscall.Utsname\n\tsyscall.Uname(&un)\n\tvar sb strings.Builder\n\tfor _, b := range un.Release[:] {\n\t\tif b == 0 {\n\t\t\tbreak\n\t\t}\n\t\tsb.WriteByte(byte(b))\n\t}\n\tmajor, minor, _, ok := parseRelease(sb.String())\n\treturn ok && (major > 4 || major == 4 && minor >= 11)\n}\n\nfunc doinit() {\n\tif err := readHWCAP(); err != nil {\n\t\t// We failed to read /proc/self/auxv. This can happen if the binary has\n\t\t// been given extra capabilities(7) with /bin/setcap.\n\t\t//\n\t\t// When this happens, we have two options. If the Linux kernel is new\n\t\t// enough (4.11+), we can read the arm64 registers directly which'll\n\t\t// trap into the kernel and then return back to userspace.\n\t\t//\n\t\t// But on older kernels, such as Linux 4.4.180 as used on many Synology\n\t\t// devices, calling readARM64Registers (specifically getisar0) will\n\t\t// cause a SIGILL and we'll die. So for older kernels, parse /proc/cpuinfo\n\t\t// instead.\n\t\t//\n\t\t// See golang/go#57336.\n\t\tif linuxKernelCanEmulateCPUID() {\n\t\t\treadARM64Registers()\n\t\t} else {\n\t\t\treadLinuxProcCPUInfo()\n\t\t}\n\t\treturn\n\t}\n\n\t// HWCAP feature bits\n\tARM64.HasFP = isSet(hwCap, hwcap_FP)\n\tARM64.HasASIMD = isSet(hwCap, hwcap_ASIMD)\n\tARM64.HasEVTSTRM = isSet(hwCap, hwcap_EVTSTRM)\n\tARM64.HasAES = isSet(hwCap, hwcap_AES)\n\tARM64.HasPMULL = isSet(hwCap, hwcap_PMULL)\n\tARM64.HasSHA1 = isSet(hwCap, hwcap_SHA1)\n\tARM64.HasSHA2 = isSet(hwCap, hwcap_SHA2)\n\tARM64.HasCRC32 = isSet(hwCap, hwcap_CRC32)\n\tARM64.HasATOMICS = isSet(hwCap, hwcap_ATOMICS)\n\tARM64.HasFPHP = isSet(hwCap, hwcap_FPHP)\n\tARM64.HasASIMDHP = isSet(hwCap, hwcap_ASIMDHP)\n\tARM64.HasCPUID = isSet(hwCap, hwcap_CPUID)\n\tARM64.HasASIMDRDM = isSet(hwCap, hwcap_ASIMDRDM)\n\tARM64.HasJSCVT = isSet(hwCap, hwcap_JSCVT)\n\tARM64.HasFCMA = isSet(hwCap, hwcap_FCMA)\n\tARM64.HasLRCPC = isSet(hwCap, hwcap_LRCPC)\n\tARM64.HasDCPOP = isSet(hwCap, hwcap_DCPOP)\n\tARM64.HasSHA3 = isSet(hwCap, hwcap_SHA3)\n\tARM64.HasSM3 = isSet(hwCap, hwcap_SM3)\n\tARM64.HasSM4 = isSet(hwCap, hwcap_SM4)\n\tARM64.HasASIMDDP = isSet(hwCap, hwcap_ASIMDDP)\n\tARM64.HasSHA512 = isSet(hwCap, hwcap_SHA512)\n\tARM64.HasSVE = isSet(hwCap, hwcap_SVE)\n\tARM64.HasASIMDFHM = isSet(hwCap, hwcap_ASIMDFHM)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_mips64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage cpu\n\n// HWCAP bits. These are exposed by the Linux kernel 5.4.\nconst (\n\t// CPU features\n\thwcap_MIPS_MSA = 1 << 1\n)\n\nfunc doinit() {\n\t// HWCAP feature bits\n\tMIPS64X.HasMSA = isSet(hwCap, hwcap_MIPS_MSA)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_noinit.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && !arm && !arm64 && !mips64 && !mips64le && !ppc64 && !ppc64le && !s390x\n\npackage cpu\n\nfunc doinit() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage cpu\n\n// HWCAP/HWCAP2 bits. These are exposed by the kernel.\nconst (\n\t// ISA Level\n\t_PPC_FEATURE2_ARCH_2_07 = 0x80000000\n\t_PPC_FEATURE2_ARCH_3_00 = 0x00800000\n\n\t// CPU features\n\t_PPC_FEATURE2_DARN = 0x00200000\n\t_PPC_FEATURE2_SCV  = 0x00100000\n)\n\nfunc doinit() {\n\t// HWCAP2 feature bits\n\tPPC64.IsPOWER8 = isSet(hwCap2, _PPC_FEATURE2_ARCH_2_07)\n\tPPC64.IsPOWER9 = isSet(hwCap2, _PPC_FEATURE2_ARCH_3_00)\n\tPPC64.HasDARN = isSet(hwCap2, _PPC_FEATURE2_DARN)\n\tPPC64.HasSCV = isSet(hwCap2, _PPC_FEATURE2_SCV)\n}\n\nfunc isSet(hwc uint, value uint) bool {\n\treturn hwc&value != 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_linux_s390x.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 cpu\n\nconst (\n\t// bit mask values from /usr/include/bits/hwcap.h\n\thwcap_ZARCH  = 2\n\thwcap_STFLE  = 4\n\thwcap_MSA    = 8\n\thwcap_LDISP  = 16\n\thwcap_EIMM   = 32\n\thwcap_DFP    = 64\n\thwcap_ETF3EH = 256\n\thwcap_VX     = 2048\n\thwcap_VXE    = 8192\n)\n\nfunc initS390Xbase() {\n\t// test HWCAP bit vector\n\thas := func(featureMask uint) bool {\n\t\treturn hwCap&featureMask == featureMask\n\t}\n\n\t// mandatory\n\tS390X.HasZARCH = has(hwcap_ZARCH)\n\n\t// optional\n\tS390X.HasSTFLE = has(hwcap_STFLE)\n\tS390X.HasLDISP = has(hwcap_LDISP)\n\tS390X.HasEIMM = has(hwcap_EIMM)\n\tS390X.HasETF3EH = has(hwcap_ETF3EH)\n\tS390X.HasDFP = has(hwcap_DFP)\n\tS390X.HasMSA = has(hwcap_MSA)\n\tS390X.HasVX = has(hwcap_VX)\n\tif S390X.HasVX {\n\t\tS390X.HasVXE = has(hwcap_VXE)\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64\n\npackage cpu\n\nconst cacheLineSize = 64\n\nfunc initOptions() {\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_mips64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build mips64 || mips64le\n\npackage cpu\n\nconst cacheLineSize = 32\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"msa\", Feature: &MIPS64X.HasMSA},\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_mipsx.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build mips || mipsle\n\npackage cpu\n\nconst cacheLineSize = 32\n\nfunc initOptions() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_netbsd_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\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Minimal copy of functionality from x/sys/unix so the cpu package can call\n// sysctl without depending on x/sys/unix.\n\nconst (\n\t_CTL_QUERY = -2\n\n\t_SYSCTL_VERS_1 = 0x1000000\n)\n\nvar _zero uintptr\n\nfunc sysctl(mib []int32, 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_, _, errno := syscall.Syscall6(\n\t\tsyscall.SYS___SYSCTL,\n\t\tuintptr(_p0),\n\t\tuintptr(len(mib)),\n\t\tuintptr(unsafe.Pointer(old)),\n\t\tuintptr(unsafe.Pointer(oldlen)),\n\t\tuintptr(unsafe.Pointer(new)),\n\t\tuintptr(newlen))\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\ntype sysctlNode struct {\n\tFlags          uint32\n\tNum            int32\n\tName           [32]int8\n\tVer            uint32\n\t__rsvd         uint32\n\tUn             [16]byte\n\t_sysctl_size   [8]byte\n\t_sysctl_func   [8]byte\n\t_sysctl_parent [8]byte\n\t_sysctl_desc   [8]byte\n}\n\nfunc sysctlNodes(mib []int32) ([]sysctlNode, 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) ([]int32, 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\tmib := []int32{}\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, int32(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, err\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\n// aarch64SysctlCPUID is struct aarch64_sysctl_cpu_id from NetBSD's <aarch64/armreg.h>\ntype aarch64SysctlCPUID struct {\n\tmidr      uint64 /* Main ID Register */\n\trevidr    uint64 /* Revision ID Register */\n\tmpidr     uint64 /* Multiprocessor Affinity Register */\n\taa64dfr0  uint64 /* A64 Debug Feature Register 0 */\n\taa64dfr1  uint64 /* A64 Debug Feature Register 1 */\n\taa64isar0 uint64 /* A64 Instruction Set Attribute Register 0 */\n\taa64isar1 uint64 /* A64 Instruction Set Attribute Register 1 */\n\taa64mmfr0 uint64 /* A64 Memory Model Feature Register 0 */\n\taa64mmfr1 uint64 /* A64 Memory Model Feature Register 1 */\n\taa64mmfr2 uint64 /* A64 Memory Model Feature Register 2 */\n\taa64pfr0  uint64 /* A64 Processor Feature Register 0 */\n\taa64pfr1  uint64 /* A64 Processor Feature Register 1 */\n\taa64zfr0  uint64 /* A64 SVE Feature ID Register 0 */\n\tmvfr0     uint32 /* Media and VFP Feature Register 0 */\n\tmvfr1     uint32 /* Media and VFP Feature Register 1 */\n\tmvfr2     uint32 /* Media and VFP Feature Register 2 */\n\tpad       uint32\n\tclidr     uint64 /* Cache Level ID Register */\n\tctr       uint64 /* Cache Type Register */\n}\n\nfunc sysctlCPUID(name string) (*aarch64SysctlCPUID, error) {\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tout := aarch64SysctlCPUID{}\n\tn := unsafe.Sizeof(out)\n\t_, _, errno := syscall.Syscall6(\n\t\tsyscall.SYS___SYSCTL,\n\t\tuintptr(unsafe.Pointer(&mib[0])),\n\t\tuintptr(len(mib)),\n\t\tuintptr(unsafe.Pointer(&out)),\n\t\tuintptr(unsafe.Pointer(&n)),\n\t\tuintptr(0),\n\t\tuintptr(0))\n\tif errno != 0 {\n\t\treturn nil, errno\n\t}\n\treturn &out, nil\n}\n\nfunc doinit() {\n\tcpuid, err := sysctlCPUID(\"machdep.cpu0.cpu_id\")\n\tif err != nil {\n\t\tsetMinimalFeatures()\n\t\treturn\n\t}\n\tparseARM64SystemRegisters(cpuid.aa64isar0, cpuid.aa64isar1, cpuid.aa64pfr0)\n\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_openbsd_arm64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Minimal copy of functionality from x/sys/unix so the cpu package can call\n// sysctl without depending on x/sys/unix.\n\nconst (\n\t// From OpenBSD's sys/sysctl.h.\n\t_CTL_MACHDEP = 7\n\n\t// From OpenBSD's machine/cpu.h.\n\t_CPU_ID_AA64ISAR0 = 2\n\t_CPU_ID_AA64ISAR1 = 3\n)\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//go:linkname syscall_syscall6 syscall.syscall6\n\nfunc sysctl(mib []uint32, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\t_, _, errno := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(unsafe.Pointer(&mib[0])), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\nfunc sysctlUint64(mib []uint32) (uint64, bool) {\n\tvar out uint64\n\tnout := unsafe.Sizeof(out)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&out)), &nout, nil, 0); err != nil {\n\t\treturn 0, false\n\t}\n\treturn out, true\n}\n\nfunc doinit() {\n\tsetMinimalFeatures()\n\n\t// Get ID_AA64ISAR0 and ID_AA64ISAR1 from sysctl.\n\tisar0, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR0})\n\tif !ok {\n\t\treturn\n\t}\n\tisar1, ok := sysctlUint64([]uint32{_CTL_MACHDEP, _CPU_ID_AA64ISAR1})\n\tif !ok {\n\t\treturn\n\t}\n\tparseARM64SystemRegisters(isar0, isar1, 0)\n\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_openbsd_arm64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n#include \"textflag.h\"\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\n\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_other_arm.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && arm\n\npackage cpu\n\nfunc archInit() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_other_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && !netbsd && !openbsd && arm64\n\npackage cpu\n\nfunc doinit() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_other_mips64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && (mips64 || mips64le)\n\npackage cpu\n\nfunc archInit() {\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_other_ppc64x.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !aix && !linux && (ppc64 || ppc64le)\n\npackage cpu\n\nfunc archInit() {\n\tPPC64.IsPOWER8 = true\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_other_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !linux && riscv64\n\npackage cpu\n\nfunc archInit() {\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_ppc64x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 || ppc64le\n\npackage cpu\n\nconst cacheLineSize = 128\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"darn\", Feature: &PPC64.HasDARN},\n\t\t{Name: \"scv\", Feature: &PPC64.HasSCV},\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64\n\npackage cpu\n\nconst cacheLineSize = 64\n\nfunc initOptions() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nconst cacheLineSize = 256\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"zarch\", Feature: &S390X.HasZARCH, Required: true},\n\t\t{Name: \"stfle\", Feature: &S390X.HasSTFLE, Required: true},\n\t\t{Name: \"ldisp\", Feature: &S390X.HasLDISP, Required: true},\n\t\t{Name: \"eimm\", Feature: &S390X.HasEIMM, Required: true},\n\t\t{Name: \"dfp\", Feature: &S390X.HasDFP},\n\t\t{Name: \"etf3eh\", Feature: &S390X.HasETF3EH},\n\t\t{Name: \"msa\", Feature: &S390X.HasMSA},\n\t\t{Name: \"aes\", Feature: &S390X.HasAES},\n\t\t{Name: \"aescbc\", Feature: &S390X.HasAESCBC},\n\t\t{Name: \"aesctr\", Feature: &S390X.HasAESCTR},\n\t\t{Name: \"aesgcm\", Feature: &S390X.HasAESGCM},\n\t\t{Name: \"ghash\", Feature: &S390X.HasGHASH},\n\t\t{Name: \"sha1\", Feature: &S390X.HasSHA1},\n\t\t{Name: \"sha256\", Feature: &S390X.HasSHA256},\n\t\t{Name: \"sha3\", Feature: &S390X.HasSHA3},\n\t\t{Name: \"sha512\", Feature: &S390X.HasSHA512},\n\t\t{Name: \"vx\", Feature: &S390X.HasVX},\n\t\t{Name: \"vxe\", Feature: &S390X.HasVXE},\n\t}\n}\n\n// bitIsSet reports whether the bit at index is set. The bit index\n// is in big endian order, so bit index 0 is the leftmost bit.\nfunc bitIsSet(bits []uint64, index uint) bool {\n\treturn bits[index/64]&((1<<63)>>(index%64)) != 0\n}\n\n// facility is a bit index for the named facility.\ntype facility uint8\n\nconst (\n\t// mandatory facilities\n\tzarch  facility = 1  // z architecture mode is active\n\tstflef facility = 7  // store-facility-list-extended\n\tldisp  facility = 18 // long-displacement\n\teimm   facility = 21 // extended-immediate\n\n\t// miscellaneous facilities\n\tdfp    facility = 42 // decimal-floating-point\n\tetf3eh facility = 30 // extended-translation 3 enhancement\n\n\t// cryptography facilities\n\tmsa  facility = 17  // message-security-assist\n\tmsa3 facility = 76  // message-security-assist extension 3\n\tmsa4 facility = 77  // message-security-assist extension 4\n\tmsa5 facility = 57  // message-security-assist extension 5\n\tmsa8 facility = 146 // message-security-assist extension 8\n\tmsa9 facility = 155 // message-security-assist extension 9\n\n\t// vector facilities\n\tvx   facility = 129 // vector facility\n\tvxe  facility = 135 // vector-enhancements 1\n\tvxe2 facility = 148 // vector-enhancements 2\n)\n\n// facilityList contains the result of an STFLE call.\n// Bits are numbered in big endian order so the\n// leftmost bit (the MSB) is at index 0.\ntype facilityList struct {\n\tbits [4]uint64\n}\n\n// Has reports whether the given facilities are present.\nfunc (s *facilityList) Has(fs ...facility) bool {\n\tif len(fs) == 0 {\n\t\tpanic(\"no facility bits provided\")\n\t}\n\tfor _, f := range fs {\n\t\tif !bitIsSet(s.bits[:], uint(f)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// function is the code for the named cryptographic function.\ntype function uint8\n\nconst (\n\t// KM{,A,C,CTR} function codes\n\taes128 function = 18 // AES-128\n\taes192 function = 19 // AES-192\n\taes256 function = 20 // AES-256\n\n\t// K{I,L}MD function codes\n\tsha1     function = 1  // SHA-1\n\tsha256   function = 2  // SHA-256\n\tsha512   function = 3  // SHA-512\n\tsha3_224 function = 32 // SHA3-224\n\tsha3_256 function = 33 // SHA3-256\n\tsha3_384 function = 34 // SHA3-384\n\tsha3_512 function = 35 // SHA3-512\n\tshake128 function = 36 // SHAKE-128\n\tshake256 function = 37 // SHAKE-256\n\n\t// KLMD function codes\n\tghash function = 65 // GHASH\n)\n\n// queryResult contains the result of a Query function\n// call. Bits are numbered in big endian order so the\n// leftmost bit (the MSB) is at index 0.\ntype queryResult struct {\n\tbits [2]uint64\n}\n\n// Has reports whether the given functions are present.\nfunc (q *queryResult) Has(fns ...function) bool {\n\tif len(fns) == 0 {\n\t\tpanic(\"no function codes provided\")\n\t}\n\tfor _, f := range fns {\n\t\tif !bitIsSet(q.bits[:], uint(f)) {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\nfunc doinit() {\n\tinitS390Xbase()\n\n\t// We need implementations of stfle, km and so on\n\t// to detect cryptographic features.\n\tif !haveAsmFunctions() {\n\t\treturn\n\t}\n\n\t// optional cryptographic functions\n\tif S390X.HasMSA {\n\t\taes := []function{aes128, aes192, aes256}\n\n\t\t// cipher message\n\t\tkm, kmc := kmQuery(), kmcQuery()\n\t\tS390X.HasAES = km.Has(aes...)\n\t\tS390X.HasAESCBC = kmc.Has(aes...)\n\t\tif S390X.HasSTFLE {\n\t\t\tfacilities := stfle()\n\t\t\tif facilities.Has(msa4) {\n\t\t\t\tkmctr := kmctrQuery()\n\t\t\t\tS390X.HasAESCTR = kmctr.Has(aes...)\n\t\t\t}\n\t\t\tif facilities.Has(msa8) {\n\t\t\t\tkma := kmaQuery()\n\t\t\t\tS390X.HasAESGCM = kma.Has(aes...)\n\t\t\t}\n\t\t}\n\n\t\t// compute message digest\n\t\tkimd := kimdQuery() // intermediate (no padding)\n\t\tklmd := klmdQuery() // last (padding)\n\t\tS390X.HasSHA1 = kimd.Has(sha1) && klmd.Has(sha1)\n\t\tS390X.HasSHA256 = kimd.Has(sha256) && klmd.Has(sha256)\n\t\tS390X.HasSHA512 = kimd.Has(sha512) && klmd.Has(sha512)\n\t\tS390X.HasGHASH = kimd.Has(ghash) // KLMD-GHASH does not exist\n\t\tsha3 := []function{\n\t\t\tsha3_224, sha3_256, sha3_384, sha3_512,\n\t\t\tshake128, shake256,\n\t\t}\n\t\tS390X.HasSHA3 = kimd.Has(sha3...) && klmd.Has(sha3...)\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_s390x.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n// func stfle() facilityList\nTEXT ·stfle(SB), NOSPLIT|NOFRAME, $0-32\n\tMOVD $ret+0(FP), R1\n\tMOVD $3, R0          // last doubleword index to store\n\tXC   $32, (R1), (R1) // clear 4 doublewords (32 bytes)\n\tWORD $0xb2b01000     // store facility list extended (STFLE)\n\tRET\n\n// func kmQuery() queryResult\nTEXT ·kmQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KM-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92E0024    // cipher message (KM)\n\tRET\n\n// func kmcQuery() queryResult\nTEXT ·kmcQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMC-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92F0024    // cipher message with chaining (KMC)\n\tRET\n\n// func kmctrQuery() queryResult\nTEXT ·kmctrQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMCTR-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB92D4024    // cipher message with counter (KMCTR)\n\tRET\n\n// func kmaQuery() queryResult\nTEXT ·kmaQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KMA-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xb9296024    // cipher message with authentication (KMA)\n\tRET\n\n// func kimdQuery() queryResult\nTEXT ·kimdQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KIMD-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB93E0024    // compute intermediate message digest (KIMD)\n\tRET\n\n// func klmdQuery() queryResult\nTEXT ·klmdQuery(SB), NOSPLIT|NOFRAME, $0-16\n\tMOVD $0, R0         // set function code to 0 (KLMD-Query)\n\tMOVD $ret+0(FP), R1 // address of 16-byte return value\n\tWORD $0xB93F0024    // compute last message digest (KLMD)\n\tRET\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_wasm.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build wasm\n\npackage cpu\n\n// We're compiling the cpu package for an unknown (software-abstracted) CPU.\n// Make CacheLinePad an empty struct and hope that the usual struct alignment\n// rules are good enough.\n\nconst cacheLineSize = 0\n\nfunc initOptions() {}\n\nfunc archInit() {}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_x86.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 || amd64 || amd64p32\n\npackage cpu\n\nimport \"runtime\"\n\nconst cacheLineSize = 64\n\nfunc initOptions() {\n\toptions = []option{\n\t\t{Name: \"adx\", Feature: &X86.HasADX},\n\t\t{Name: \"aes\", Feature: &X86.HasAES},\n\t\t{Name: \"avx\", Feature: &X86.HasAVX},\n\t\t{Name: \"avx2\", Feature: &X86.HasAVX2},\n\t\t{Name: \"avx512\", Feature: &X86.HasAVX512},\n\t\t{Name: \"avx512f\", Feature: &X86.HasAVX512F},\n\t\t{Name: \"avx512cd\", Feature: &X86.HasAVX512CD},\n\t\t{Name: \"avx512er\", Feature: &X86.HasAVX512ER},\n\t\t{Name: \"avx512pf\", Feature: &X86.HasAVX512PF},\n\t\t{Name: \"avx512vl\", Feature: &X86.HasAVX512VL},\n\t\t{Name: \"avx512bw\", Feature: &X86.HasAVX512BW},\n\t\t{Name: \"avx512dq\", Feature: &X86.HasAVX512DQ},\n\t\t{Name: \"avx512ifma\", Feature: &X86.HasAVX512IFMA},\n\t\t{Name: \"avx512vbmi\", Feature: &X86.HasAVX512VBMI},\n\t\t{Name: \"avx512vnniw\", Feature: &X86.HasAVX5124VNNIW},\n\t\t{Name: \"avx5124fmaps\", Feature: &X86.HasAVX5124FMAPS},\n\t\t{Name: \"avx512vpopcntdq\", Feature: &X86.HasAVX512VPOPCNTDQ},\n\t\t{Name: \"avx512vpclmulqdq\", Feature: &X86.HasAVX512VPCLMULQDQ},\n\t\t{Name: \"avx512vnni\", Feature: &X86.HasAVX512VNNI},\n\t\t{Name: \"avx512gfni\", Feature: &X86.HasAVX512GFNI},\n\t\t{Name: \"avx512vaes\", Feature: &X86.HasAVX512VAES},\n\t\t{Name: \"avx512vbmi2\", Feature: &X86.HasAVX512VBMI2},\n\t\t{Name: \"avx512bitalg\", Feature: &X86.HasAVX512BITALG},\n\t\t{Name: \"avx512bf16\", Feature: &X86.HasAVX512BF16},\n\t\t{Name: \"amxtile\", Feature: &X86.HasAMXTile},\n\t\t{Name: \"amxint8\", Feature: &X86.HasAMXInt8},\n\t\t{Name: \"amxbf16\", Feature: &X86.HasAMXBF16},\n\t\t{Name: \"bmi1\", Feature: &X86.HasBMI1},\n\t\t{Name: \"bmi2\", Feature: &X86.HasBMI2},\n\t\t{Name: \"cx16\", Feature: &X86.HasCX16},\n\t\t{Name: \"erms\", Feature: &X86.HasERMS},\n\t\t{Name: \"fma\", Feature: &X86.HasFMA},\n\t\t{Name: \"osxsave\", Feature: &X86.HasOSXSAVE},\n\t\t{Name: \"pclmulqdq\", Feature: &X86.HasPCLMULQDQ},\n\t\t{Name: \"popcnt\", Feature: &X86.HasPOPCNT},\n\t\t{Name: \"rdrand\", Feature: &X86.HasRDRAND},\n\t\t{Name: \"rdseed\", Feature: &X86.HasRDSEED},\n\t\t{Name: \"sse3\", Feature: &X86.HasSSE3},\n\t\t{Name: \"sse41\", Feature: &X86.HasSSE41},\n\t\t{Name: \"sse42\", Feature: &X86.HasSSE42},\n\t\t{Name: \"ssse3\", Feature: &X86.HasSSSE3},\n\n\t\t// These capabilities should always be enabled on amd64:\n\t\t{Name: \"sse2\", Feature: &X86.HasSSE2, Required: runtime.GOARCH == \"amd64\"},\n\t}\n}\n\nfunc archInit() {\n\n\tInitialized = true\n\n\tmaxID, _, _, _ := cpuid(0, 0)\n\n\tif maxID < 1 {\n\t\treturn\n\t}\n\n\t_, _, ecx1, edx1 := cpuid(1, 0)\n\tX86.HasSSE2 = isSet(26, edx1)\n\n\tX86.HasSSE3 = isSet(0, ecx1)\n\tX86.HasPCLMULQDQ = isSet(1, ecx1)\n\tX86.HasSSSE3 = isSet(9, ecx1)\n\tX86.HasFMA = isSet(12, ecx1)\n\tX86.HasCX16 = isSet(13, ecx1)\n\tX86.HasSSE41 = isSet(19, ecx1)\n\tX86.HasSSE42 = isSet(20, ecx1)\n\tX86.HasPOPCNT = isSet(23, ecx1)\n\tX86.HasAES = isSet(25, ecx1)\n\tX86.HasOSXSAVE = isSet(27, ecx1)\n\tX86.HasRDRAND = isSet(30, ecx1)\n\n\tvar osSupportsAVX, osSupportsAVX512 bool\n\t// For XGETBV, OSXSAVE bit is required and sufficient.\n\tif X86.HasOSXSAVE {\n\t\teax, _ := xgetbv()\n\t\t// Check if XMM and YMM registers have OS support.\n\t\tosSupportsAVX = isSet(1, eax) && isSet(2, eax)\n\n\t\tif runtime.GOOS == \"darwin\" {\n\t\t\t// Darwin doesn't save/restore AVX-512 mask registers correctly across signal handlers.\n\t\t\t// Since users can't rely on mask register contents, let's not advertise AVX-512 support.\n\t\t\t// See issue 49233.\n\t\t\tosSupportsAVX512 = false\n\t\t} else {\n\t\t\t// Check if OPMASK and ZMM registers have OS support.\n\t\t\tosSupportsAVX512 = osSupportsAVX && isSet(5, eax) && isSet(6, eax) && isSet(7, eax)\n\t\t}\n\t}\n\n\tX86.HasAVX = isSet(28, ecx1) && osSupportsAVX\n\n\tif maxID < 7 {\n\t\treturn\n\t}\n\n\t_, ebx7, ecx7, edx7 := cpuid(7, 0)\n\tX86.HasBMI1 = isSet(3, ebx7)\n\tX86.HasAVX2 = isSet(5, ebx7) && osSupportsAVX\n\tX86.HasBMI2 = isSet(8, ebx7)\n\tX86.HasERMS = isSet(9, ebx7)\n\tX86.HasRDSEED = isSet(18, ebx7)\n\tX86.HasADX = isSet(19, ebx7)\n\n\tX86.HasAVX512 = isSet(16, ebx7) && osSupportsAVX512 // Because avx-512 foundation is the core required extension\n\tif X86.HasAVX512 {\n\t\tX86.HasAVX512F = true\n\t\tX86.HasAVX512CD = isSet(28, ebx7)\n\t\tX86.HasAVX512ER = isSet(27, ebx7)\n\t\tX86.HasAVX512PF = isSet(26, ebx7)\n\t\tX86.HasAVX512VL = isSet(31, ebx7)\n\t\tX86.HasAVX512BW = isSet(30, ebx7)\n\t\tX86.HasAVX512DQ = isSet(17, ebx7)\n\t\tX86.HasAVX512IFMA = isSet(21, ebx7)\n\t\tX86.HasAVX512VBMI = isSet(1, ecx7)\n\t\tX86.HasAVX5124VNNIW = isSet(2, edx7)\n\t\tX86.HasAVX5124FMAPS = isSet(3, edx7)\n\t\tX86.HasAVX512VPOPCNTDQ = isSet(14, ecx7)\n\t\tX86.HasAVX512VPCLMULQDQ = isSet(10, ecx7)\n\t\tX86.HasAVX512VNNI = isSet(11, ecx7)\n\t\tX86.HasAVX512GFNI = isSet(8, ecx7)\n\t\tX86.HasAVX512VAES = isSet(9, ecx7)\n\t\tX86.HasAVX512VBMI2 = isSet(6, ecx7)\n\t\tX86.HasAVX512BITALG = isSet(12, ecx7)\n\n\t\teax71, _, _, _ := cpuid(7, 1)\n\t\tX86.HasAVX512BF16 = isSet(5, eax71)\n\t}\n\n\tX86.HasAMXTile = isSet(24, edx7)\n\tX86.HasAMXInt8 = isSet(25, edx7)\n\tX86.HasAMXBF16 = isSet(22, edx7)\n}\n\nfunc isSet(bitpos uint, value uint32) bool {\n\treturn value&(1<<bitpos) != 0\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_x86.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (386 || amd64 || amd64p32) && gc\n\n#include \"textflag.h\"\n\n// func cpuid(eaxArg, ecxArg uint32) (eax, ebx, ecx, edx uint32)\nTEXT ·cpuid(SB), NOSPLIT, $0-24\n\tMOVL eaxArg+0(FP), AX\n\tMOVL ecxArg+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() (eax, edx uint32)\nTEXT ·xgetbv(SB),NOSPLIT,$0-8\n\tMOVL $0, CX\n\tXGETBV\n\tMOVL AX, eax+0(FP)\n\tMOVL DX, edx+4(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nfunc archInit() {\n\tdoinit()\n\tInitialized = true\n}\n"
  },
  {
    "path": "gossh/sys/cpu/cpu_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nfunc initS390Xbase() {\n\t// get the facilities list\n\tfacilities := stfle()\n\n\t// mandatory\n\tS390X.HasZARCH = facilities.Has(zarch)\n\tS390X.HasSTFLE = facilities.Has(stflef)\n\tS390X.HasLDISP = facilities.Has(ldisp)\n\tS390X.HasEIMM = facilities.Has(eimm)\n\n\t// optional\n\tS390X.HasETF3EH = facilities.Has(etf3eh)\n\tS390X.HasDFP = facilities.Has(dfp)\n\tS390X.HasMSA = facilities.Has(msa)\n\tS390X.HasVX = facilities.Has(vx)\n\tif S390X.HasVX {\n\t\tS390X.HasVXE = facilities.Has(vxe)\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/cpu/endian_big.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage cpu\n\n// IsBigEndian records whether the GOARCH's byte order is big endian.\nconst IsBigEndian = true\n"
  },
  {
    "path": "gossh/sys/cpu/endian_little.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh || wasm\n\npackage cpu\n\n// IsBigEndian records whether the GOARCH's byte order is big endian.\nconst IsBigEndian = false\n"
  },
  {
    "path": "gossh/sys/cpu/hwcap_linux.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 cpu\n\nimport (\n\t\"os\"\n)\n\nconst (\n\t_AT_HWCAP  = 16\n\t_AT_HWCAP2 = 26\n\n\tprocAuxv = \"/proc/self/auxv\"\n\n\tuintSize = int(32 << (^uint(0) >> 63))\n)\n\n// For those platforms don't have a 'cpuid' equivalent we use HWCAP/HWCAP2\n// These are initialized in cpu_$GOARCH.go\n// and should not be changed after they are initialized.\nvar hwCap uint\nvar hwCap2 uint\n\nfunc readHWCAP() error {\n\t// For Go 1.21+, get auxv from the Go runtime.\n\tif a := getAuxv(); len(a) > 0 {\n\t\tfor len(a) >= 2 {\n\t\t\ttag, val := a[0], uint(a[1])\n\t\t\ta = a[2:]\n\t\t\tswitch tag {\n\t\t\tcase _AT_HWCAP:\n\t\t\t\thwCap = val\n\t\t\tcase _AT_HWCAP2:\n\t\t\t\thwCap2 = val\n\t\t\t}\n\t\t}\n\t\treturn nil\n\t}\n\n\tbuf, err := os.ReadFile(procAuxv)\n\tif err != nil {\n\t\t// e.g. on android /proc/self/auxv is not accessible, so silently\n\t\t// ignore the error and leave Initialized = false. On some\n\t\t// architectures (e.g. arm64) doinit() implements a fallback\n\t\t// readout and will set Initialized = true again.\n\t\treturn err\n\t}\n\tbo := hostByteOrder()\n\tfor len(buf) >= 2*(uintSize/8) {\n\t\tvar tag, val uint\n\t\tswitch uintSize {\n\t\tcase 32:\n\t\t\ttag = uint(bo.Uint32(buf[0:]))\n\t\t\tval = uint(bo.Uint32(buf[4:]))\n\t\t\tbuf = buf[8:]\n\t\tcase 64:\n\t\t\ttag = uint(bo.Uint64(buf[0:]))\n\t\t\tval = uint(bo.Uint64(buf[8:]))\n\t\t\tbuf = buf[16:]\n\t\t}\n\t\tswitch tag {\n\t\tcase _AT_HWCAP:\n\t\t\thwCap = val\n\t\tcase _AT_HWCAP2:\n\t\t\thwCap2 = val\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/cpu/parse.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\nimport \"strconv\"\n\n// parseRelease parses a dot-separated version number. It follows the semver\n// syntax, but allows the minor and patch versions to be elided.\n//\n// This is a copy of the Go runtime's parseRelease from\n// https://golang.org/cl/209597.\nfunc parseRelease(rel string) (major, minor, patch int, ok bool) {\n\t// Strip anything after a dash or plus.\n\tfor i := 0; i < len(rel); i++ {\n\t\tif rel[i] == '-' || rel[i] == '+' {\n\t\t\trel = rel[:i]\n\t\t\tbreak\n\t\t}\n\t}\n\n\tnext := func() (int, bool) {\n\t\tfor i := 0; i < len(rel); i++ {\n\t\t\tif rel[i] == '.' {\n\t\t\t\tver, err := strconv.Atoi(rel[:i])\n\t\t\t\trel = rel[i+1:]\n\t\t\t\treturn ver, err == nil\n\t\t\t}\n\t\t}\n\t\tver, err := strconv.Atoi(rel)\n\t\trel = \"\"\n\t\treturn ver, err == nil\n\t}\n\tif major, ok = next(); !ok || rel == \"\" {\n\t\treturn\n\t}\n\tif minor, ok = next(); !ok || rel == \"\" {\n\t\treturn\n\t}\n\tpatch, ok = next()\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/cpu/proc_cpuinfo_linux.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64\n\npackage cpu\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"os\"\n\t\"strings\"\n)\n\nfunc readLinuxProcCPUInfo() error {\n\tf, err := os.Open(\"/proc/cpuinfo\")\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer f.Close()\n\n\tvar buf [1 << 10]byte // enough for first CPU\n\tn, err := io.ReadFull(f, buf[:])\n\tif err != nil && err != io.ErrUnexpectedEOF {\n\t\treturn err\n\t}\n\tin := string(buf[:n])\n\tconst features = \"\\nFeatures\t: \"\n\ti := strings.Index(in, features)\n\tif i == -1 {\n\t\treturn errors.New(\"no CPU features found\")\n\t}\n\tin = in[i+len(features):]\n\tif i := strings.Index(in, \"\\n\"); i != -1 {\n\t\tin = in[:i]\n\t}\n\tm := map[string]*bool{}\n\n\tinitOptions() // need it early here; it's harmless to call twice\n\tfor _, o := range options {\n\t\tm[o.Name] = o.Feature\n\t}\n\t// The EVTSTRM field has alias \"evstrm\" in Go, but Linux calls it \"evtstrm\".\n\tm[\"evtstrm\"] = &ARM64.HasEVTSTRM\n\n\tfor _, f := range strings.Fields(in) {\n\t\tif p, ok := m[f]; ok {\n\t\t\t*p = true\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/cpu/runtime_auxv.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage cpu\n\n// getAuxvFn is non-nil on Go 1.21+ (via runtime_auxv_go121.go init)\n// on platforms that use auxv.\nvar getAuxvFn func() []uintptr\n\nfunc getAuxv() []uintptr {\n\tif getAuxvFn == nil {\n\t\treturn nil\n\t}\n\treturn getAuxvFn()\n}\n"
  },
  {
    "path": "gossh/sys/cpu/runtime_auxv_go121.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.21\n\npackage cpu\n\nimport (\n\t_ \"unsafe\" // for linkname\n)\n\n//go:linkname runtime_getAuxv runtime.getAuxv\nfunc runtime_getAuxv() []uintptr\n\nfunc init() {\n\tgetAuxvFn = runtime_getAuxv\n}\n"
  },
  {
    "path": "gossh/sys/cpu/syscall_aix_gccgo.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// Recreate a getsystemcfg syscall handler instead of\n// using the one provided by x/sys/unix to avoid having\n// the dependency between them. (See golang.org/issue/32102)\n// Moreover, this file will be used during the building of\n// gccgo's libgo and thus must not used a CGo method.\n\n//go:build aix && gccgo\n\npackage cpu\n\nimport (\n\t\"syscall\"\n)\n\n//extern getsystemcfg\nfunc gccgoGetsystemcfg(label uint32) (r uint64)\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 syscall.Errno) {\n\tr1 = uintptr(gccgoGetsystemcfg(uint32(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/cpu/syscall_aix_ppc64_gc.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// Minimal copy of x/sys/unix so the cpu package can make a\n// system call on AIX without depending on x/sys/unix.\n// (See golang.org/issue/32102)\n\n//go:build aix && ppc64 && gc\n\npackage cpu\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n\ntype syscallFunc uintptr\n\nvar libc_getsystemcfg syscallFunc\n\ntype errno = syscall.Errno\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\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"
  },
  {
    "path": "gossh/sys/execabs/execabs.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 execabs is a drop-in replacement for os/exec\n// that requires PATH lookups to find absolute paths.\n// That is, execabs.Command(\"cmd\") runs the same PATH lookup\n// as exec.Command(\"cmd\"), but if the result is a path\n// which is relative, the Run and Start methods will report\n// an error instead of running the executable.\n//\n// See https://blog.golang.org/path-security for more information\n// about when it may be necessary or appropriate to use this package.\npackage execabs\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// ErrNotFound is the error resulting if a path search failed to find an executable file.\n// It is an alias for exec.ErrNotFound.\nvar ErrNotFound = exec.ErrNotFound\n\n// Cmd represents an external command being prepared or run.\n// It is an alias for exec.Cmd.\ntype Cmd = exec.Cmd\n\n// Error is returned by LookPath when it fails to classify a file as an executable.\n// It is an alias for exec.Error.\ntype Error = exec.Error\n\n// An ExitError reports an unsuccessful exit by a command.\n// It is an alias for exec.ExitError.\ntype ExitError = exec.ExitError\n\nfunc relError(file, path string) error {\n\treturn fmt.Errorf(\"%s resolves to executable in current directory (.%c%s)\", file, filepath.Separator, path)\n}\n\n// LookPath searches for an executable named file in the directories\n// named by the PATH environment variable. If file contains a slash,\n// it is tried directly and the PATH is not consulted. The result will be\n// an absolute path.\n//\n// LookPath differs from exec.LookPath in its handling of PATH lookups,\n// which are used for file names without slashes. If exec.LookPath's\n// PATH lookup would have returned an executable from the current directory,\n// LookPath instead returns an error.\nfunc LookPath(file string) (string, error) {\n\tpath, err := exec.LookPath(file)\n\tif err != nil && !isGo119ErrDot(err) {\n\t\treturn \"\", err\n\t}\n\tif filepath.Base(file) == file && !filepath.IsAbs(path) {\n\t\treturn \"\", relError(file, path)\n\t}\n\treturn path, nil\n}\n\nfunc fixCmd(name string, cmd *exec.Cmd) {\n\tif filepath.Base(name) == name && !filepath.IsAbs(cmd.Path) && !isGo119ErrFieldSet(cmd) {\n\t\t// exec.Command was called with a bare binary name and\n\t\t// exec.LookPath returned a path which is not absolute.\n\t\t// Set cmd.lookPathErr and clear cmd.Path so that it\n\t\t// cannot be run.\n\t\tlookPathErr := (*error)(unsafe.Pointer(reflect.ValueOf(cmd).Elem().FieldByName(\"lookPathErr\").Addr().Pointer()))\n\t\tif *lookPathErr == nil {\n\t\t\t*lookPathErr = relError(name, cmd.Path)\n\t\t}\n\t\tcmd.Path = \"\"\n\t}\n}\n\n// CommandContext is like Command but includes a context.\n//\n// The provided context is used to kill the process (by calling os.Process.Kill)\n// if the context becomes done before the command completes on its own.\nfunc CommandContext(ctx context.Context, name string, arg ...string) *exec.Cmd {\n\tcmd := exec.CommandContext(ctx, name, arg...)\n\tfixCmd(name, cmd)\n\treturn cmd\n\n}\n\n// Command returns the Cmd struct to execute the named program with the given arguments.\n// See exec.Command for most details.\n//\n// Command differs from exec.Command in its handling of PATH lookups,\n// which are used when the program name contains no slashes.\n// If exec.Command would have returned an exec.Cmd configured to run an\n// executable from the current directory, Command instead\n// returns an exec.Cmd that will return an error from Start or Run.\nfunc Command(name string, arg ...string) *exec.Cmd {\n\tcmd := exec.Command(name, arg...)\n\tfixCmd(name, cmd)\n\treturn cmd\n}\n"
  },
  {
    "path": "gossh/sys/execabs/execabs_go118.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.19\n\npackage execabs\n\nimport \"os/exec\"\n\nfunc isGo119ErrDot(err error) bool {\n\treturn false\n}\n\nfunc isGo119ErrFieldSet(cmd *exec.Cmd) bool {\n\treturn false\n}\n"
  },
  {
    "path": "gossh/sys/execabs/execabs_go119.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.19\n\npackage execabs\n\nimport (\n\t\"errors\"\n\t\"os/exec\"\n)\n\nfunc isGo119ErrDot(err error) bool {\n\treturn errors.Is(err, exec.ErrDot)\n}\n\nfunc isGo119ErrFieldSet(cmd *exec.Cmd) bool {\n\treturn cmd.Err != nil\n}\n"
  },
  {
    "path": "gossh/sys/plan9/asm.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#include \"textflag.h\"\n\nTEXT ·use(SB),NOSPLIT,$0\n\tRET\n"
  },
  {
    "path": "gossh/sys/plan9/asm_plan9_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#include \"textflag.h\"\n\n//\n// System call support for 386, Plan 9\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-32\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-44\n\tJMP\tsyscall·Syscall6(SB)\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 ·seek(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·seek(SB)\n\nTEXT ·exit(SB),NOSPLIT,$4-4\n\tJMP\tsyscall·exit(SB)\n"
  },
  {
    "path": "gossh/sys/plan9/asm_plan9_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#include \"textflag.h\"\n\n//\n// System call support for amd64, Plan 9\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-64\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·Syscall6(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\nTEXT ·seek(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·seek(SB)\n\nTEXT ·exit(SB),NOSPLIT,$8-8\n\tJMP\tsyscall·exit(SB)\n"
  },
  {
    "path": "gossh/sys/plan9/asm_plan9_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#include \"textflag.h\"\n\n// System call support for plan9 on arm\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-32\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-44\n\tJMP\tsyscall·Syscall6(SB)\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 ·seek(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·exit(SB)\n"
  },
  {
    "path": "gossh/sys/plan9/const_plan9.go",
    "content": "package plan9\n\n// Plan 9 Constants\n\n// Open modes\nconst (\n\tO_RDONLY  = 0\n\tO_WRONLY  = 1\n\tO_RDWR    = 2\n\tO_TRUNC   = 16\n\tO_CLOEXEC = 32\n\tO_EXCL    = 0x1000\n)\n\n// Rfork flags\nconst (\n\tRFNAMEG  = 1 << 0\n\tRFENVG   = 1 << 1\n\tRFFDG    = 1 << 2\n\tRFNOTEG  = 1 << 3\n\tRFPROC   = 1 << 4\n\tRFMEM    = 1 << 5\n\tRFNOWAIT = 1 << 6\n\tRFCNAMEG = 1 << 10\n\tRFCENVG  = 1 << 11\n\tRFCFDG   = 1 << 12\n\tRFREND   = 1 << 13\n\tRFNOMNT  = 1 << 14\n)\n\n// Qid.Type bits\nconst (\n\tQTDIR    = 0x80\n\tQTAPPEND = 0x40\n\tQTEXCL   = 0x20\n\tQTMOUNT  = 0x10\n\tQTAUTH   = 0x08\n\tQTTMP    = 0x04\n\tQTFILE   = 0x00\n)\n\n// Dir.Mode bits\nconst (\n\tDMDIR    = 0x80000000\n\tDMAPPEND = 0x40000000\n\tDMEXCL   = 0x20000000\n\tDMMOUNT  = 0x10000000\n\tDMAUTH   = 0x08000000\n\tDMTMP    = 0x04000000\n\tDMREAD   = 0x4\n\tDMWRITE  = 0x2\n\tDMEXEC   = 0x1\n)\n\nconst (\n\tSTATMAX    = 65535\n\tERRMAX     = 128\n\tSTATFIXLEN = 49\n)\n\n// Mount and bind flags\nconst (\n\tMREPL   = 0x0000\n\tMBEFORE = 0x0001\n\tMAFTER  = 0x0002\n\tMORDER  = 0x0003\n\tMCREATE = 0x0004\n\tMCACHE  = 0x0010\n\tMMASK   = 0x0017\n)\n"
  },
  {
    "path": "gossh/sys/plan9/dir_plan9.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// Plan 9 directory marshalling. See intro(5).\n\npackage plan9\n\nimport \"errors\"\n\nvar (\n\tErrShortStat = errors.New(\"stat buffer too short\")\n\tErrBadStat   = errors.New(\"malformed stat buffer\")\n\tErrBadName   = errors.New(\"bad character in file name\")\n)\n\n// A Qid represents a 9P server's unique identification for a file.\ntype Qid struct {\n\tPath uint64 // the file server's unique identification for the file\n\tVers uint32 // version number for given Path\n\tType uint8  // the type of the file (plan9.QTDIR for example)\n}\n\n// A Dir contains the metadata for a file.\ntype Dir struct {\n\t// system-modified data\n\tType uint16 // server type\n\tDev  uint32 // server subtype\n\n\t// file data\n\tQid    Qid    // unique id from server\n\tMode   uint32 // permissions\n\tAtime  uint32 // last read time\n\tMtime  uint32 // last write time\n\tLength int64  // file length\n\tName   string // last element of path\n\tUid    string // owner name\n\tGid    string // group name\n\tMuid   string // last modifier name\n}\n\nvar nullDir = Dir{\n\tType: ^uint16(0),\n\tDev:  ^uint32(0),\n\tQid: Qid{\n\t\tPath: ^uint64(0),\n\t\tVers: ^uint32(0),\n\t\tType: ^uint8(0),\n\t},\n\tMode:   ^uint32(0),\n\tAtime:  ^uint32(0),\n\tMtime:  ^uint32(0),\n\tLength: ^int64(0),\n}\n\n// Null assigns special \"don't touch\" values to members of d to\n// avoid modifying them during plan9.Wstat.\nfunc (d *Dir) Null() { *d = nullDir }\n\n// Marshal encodes a 9P stat message corresponding to d into b\n//\n// If there isn't enough space in b for a stat message, ErrShortStat is returned.\nfunc (d *Dir) Marshal(b []byte) (n int, err error) {\n\tn = STATFIXLEN + len(d.Name) + len(d.Uid) + len(d.Gid) + len(d.Muid)\n\tif n > len(b) {\n\t\treturn n, ErrShortStat\n\t}\n\n\tfor _, c := range d.Name {\n\t\tif c == '/' {\n\t\t\treturn n, ErrBadName\n\t\t}\n\t}\n\n\tb = pbit16(b, uint16(n)-2)\n\tb = pbit16(b, d.Type)\n\tb = pbit32(b, d.Dev)\n\tb = pbit8(b, d.Qid.Type)\n\tb = pbit32(b, d.Qid.Vers)\n\tb = pbit64(b, d.Qid.Path)\n\tb = pbit32(b, d.Mode)\n\tb = pbit32(b, d.Atime)\n\tb = pbit32(b, d.Mtime)\n\tb = pbit64(b, uint64(d.Length))\n\tb = pstring(b, d.Name)\n\tb = pstring(b, d.Uid)\n\tb = pstring(b, d.Gid)\n\tb = pstring(b, d.Muid)\n\n\treturn n, nil\n}\n\n// UnmarshalDir decodes a single 9P stat message from b and returns the resulting Dir.\n//\n// If b is too small to hold a valid stat message, ErrShortStat is returned.\n//\n// If the stat message itself is invalid, ErrBadStat is returned.\nfunc UnmarshalDir(b []byte) (*Dir, error) {\n\tif len(b) < STATFIXLEN {\n\t\treturn nil, ErrShortStat\n\t}\n\tsize, buf := gbit16(b)\n\tif len(b) != int(size)+2 {\n\t\treturn nil, ErrBadStat\n\t}\n\tb = buf\n\n\tvar d Dir\n\td.Type, b = gbit16(b)\n\td.Dev, b = gbit32(b)\n\td.Qid.Type, b = gbit8(b)\n\td.Qid.Vers, b = gbit32(b)\n\td.Qid.Path, b = gbit64(b)\n\td.Mode, b = gbit32(b)\n\td.Atime, b = gbit32(b)\n\td.Mtime, b = gbit32(b)\n\n\tn, b := gbit64(b)\n\td.Length = int64(n)\n\n\tvar ok bool\n\tif d.Name, b, ok = gstring(b); !ok {\n\t\treturn nil, ErrBadStat\n\t}\n\tif d.Uid, b, ok = gstring(b); !ok {\n\t\treturn nil, ErrBadStat\n\t}\n\tif d.Gid, b, ok = gstring(b); !ok {\n\t\treturn nil, ErrBadStat\n\t}\n\tif d.Muid, b, ok = gstring(b); !ok {\n\t\treturn nil, ErrBadStat\n\t}\n\n\treturn &d, nil\n}\n\n// pbit8 copies the 8-bit number v to b and returns the remaining slice of b.\nfunc pbit8(b []byte, v uint8) []byte {\n\tb[0] = byte(v)\n\treturn b[1:]\n}\n\n// pbit16 copies the 16-bit number v to b in little-endian order and returns the remaining slice of b.\nfunc pbit16(b []byte, v uint16) []byte {\n\tb[0] = byte(v)\n\tb[1] = byte(v >> 8)\n\treturn b[2:]\n}\n\n// pbit32 copies the 32-bit number v to b in little-endian order and returns the remaining slice of b.\nfunc pbit32(b []byte, v uint32) []byte {\n\tb[0] = byte(v)\n\tb[1] = byte(v >> 8)\n\tb[2] = byte(v >> 16)\n\tb[3] = byte(v >> 24)\n\treturn b[4:]\n}\n\n// pbit64 copies the 64-bit number v to b in little-endian order and returns the remaining slice of b.\nfunc pbit64(b []byte, v uint64) []byte {\n\tb[0] = byte(v)\n\tb[1] = byte(v >> 8)\n\tb[2] = byte(v >> 16)\n\tb[3] = byte(v >> 24)\n\tb[4] = byte(v >> 32)\n\tb[5] = byte(v >> 40)\n\tb[6] = byte(v >> 48)\n\tb[7] = byte(v >> 56)\n\treturn b[8:]\n}\n\n// pstring copies the string s to b, prepending it with a 16-bit length in little-endian order, and\n// returning the remaining slice of b..\nfunc pstring(b []byte, s string) []byte {\n\tb = pbit16(b, uint16(len(s)))\n\tn := copy(b, s)\n\treturn b[n:]\n}\n\n// gbit8 reads an 8-bit number from b and returns it with the remaining slice of b.\nfunc gbit8(b []byte) (uint8, []byte) {\n\treturn uint8(b[0]), b[1:]\n}\n\n// gbit16 reads a 16-bit number in little-endian order from b and returns it with the remaining slice of b.\nfunc gbit16(b []byte) (uint16, []byte) {\n\treturn uint16(b[0]) | uint16(b[1])<<8, b[2:]\n}\n\n// gbit32 reads a 32-bit number in little-endian order from b and returns it with the remaining slice of b.\nfunc gbit32(b []byte) (uint32, []byte) {\n\treturn uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24, b[4:]\n}\n\n// gbit64 reads a 64-bit number in little-endian order from b and returns it with the remaining slice of b.\nfunc gbit64(b []byte) (uint64, []byte) {\n\tlo := uint32(b[0]) | uint32(b[1])<<8 | uint32(b[2])<<16 | uint32(b[3])<<24\n\thi := uint32(b[4]) | uint32(b[5])<<8 | uint32(b[6])<<16 | uint32(b[7])<<24\n\treturn uint64(lo) | uint64(hi)<<32, b[8:]\n}\n\n// gstring reads a string from b, prefixed with a 16-bit length in little-endian order.\n// It returns the string with the remaining slice of b and a boolean. If the length is\n// greater than the number of bytes in b, the boolean will be false.\nfunc gstring(b []byte) (string, []byte, bool) {\n\tn, b := gbit16(b)\n\tif int(n) > len(b) {\n\t\treturn \"\", b, false\n\t}\n\treturn string(b[:n]), b[n:], true\n}\n"
  },
  {
    "path": "gossh/sys/plan9/env_plan9.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// Plan 9 environment variables.\n\npackage plan9\n\nimport (\n\t\"syscall\"\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\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "gossh/sys/plan9/errors_plan9.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 plan9\n\nimport \"syscall\"\n\n// Constants\nconst (\n\t// Invented values to support what package os expects.\n\tO_CREAT    = 0x02000\n\tO_APPEND   = 0x00400\n\tO_NOCTTY   = 0x00000\n\tO_NONBLOCK = 0x00000\n\tO_SYNC     = 0x00000\n\tO_ASYNC    = 0x00000\n\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)\n\n// Errors\nvar (\n\tEINVAL       = syscall.NewError(\"bad arg in system call\")\n\tENOTDIR      = syscall.NewError(\"not a directory\")\n\tEISDIR       = syscall.NewError(\"file is a directory\")\n\tENOENT       = syscall.NewError(\"file does not exist\")\n\tEEXIST       = syscall.NewError(\"file already exists\")\n\tEMFILE       = syscall.NewError(\"no free file descriptors\")\n\tEIO          = syscall.NewError(\"i/o error\")\n\tENAMETOOLONG = syscall.NewError(\"file name too long\")\n\tEINTR        = syscall.NewError(\"interrupted\")\n\tEPERM        = syscall.NewError(\"permission denied\")\n\tEBUSY        = syscall.NewError(\"no free devices\")\n\tETIMEDOUT    = syscall.NewError(\"connection timed out\")\n\tEPLAN9       = syscall.NewError(\"not supported by plan 9\")\n\n\t// The following errors do not correspond to any\n\t// Plan 9 system messages. Invented to support\n\t// what package os and others expect.\n\tEACCES       = syscall.NewError(\"access permission denied\")\n\tEAFNOSUPPORT = syscall.NewError(\"address family not supported by protocol\")\n)\n"
  },
  {
    "path": "gossh/sys/plan9/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# The plan9 package provides access to the raw system call\n# interface of the underlying operating system.  Porting Go to\n# a new architecture/operating system combination requires\n# some manual effort, though there are tools that automate\n# much of the process.  The auto-generated files have names\n# beginning with z.\n#\n# This script runs or (given -n) prints suggested commands to generate z files\n# for the current system.  Running those commands is not automatic.\n# This script is documentation more than anything else.\n#\n# * asm_${GOOS}_${GOARCH}.s\n#\n# This hand-written assembly file implements system call dispatch.\n# There are three entry points:\n#\n# \tfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);\n# \tfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr);\n# \tfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr);\n#\n# The first and second are the standard ones; they differ only in\n# how many arguments can be passed to the kernel.\n# The third is for low-level use by the ForkExec wrapper;\n# unlike the first two, it does not call into the scheduler to\n# let it know that a system call is running.\n#\n# * syscall_${GOOS}.go\n#\n# This hand-written Go file implements system calls that need\n# special handling and lists \"//sys\" comments giving prototypes\n# for ones that can be auto-generated.  Mksyscall reads those\n# comments to generate the stubs.\n#\n# * syscall_${GOOS}_${GOARCH}.go\n#\n# Same as syscall_${GOOS}.go except that it contains code specific\n# to ${GOOS} on one particular architecture.\n#\n# * types_${GOOS}.c\n#\n# This hand-written C file includes standard C headers and then\n# creates typedef or enum names beginning with a dollar sign\n# (use of $ in variable names is a gcc extension).  The hardest\n# part about preparing this file is figuring out which headers to\n# include and which symbols need to be #defined to get the\n# actual data structures that pass through to the kernel system calls.\n# Some C libraries present alternate versions for binary compatibility\n# and translate them on the way in and out of system calls, but\n# there is almost always a #define that can get the real ones.\n# See types_darwin.c and types_linux.c for examples.\n#\n# * zerror_${GOOS}_${GOARCH}.go\n#\n# This machine-generated file defines the system's error numbers,\n# error strings, and signal numbers.  The generator is \"mkerrors.sh\".\n# Usually no arguments are needed, but mkerrors.sh will pass its\n# arguments on to godefs.\n#\n# * zsyscall_${GOOS}_${GOARCH}.go\n#\n# Generated by mksyscall.pl; see syscall_${GOOS}.go above.\n#\n# * zsysnum_${GOOS}_${GOARCH}.go\n#\n# Generated by mksysnum_${GOOS}.\n#\n# * ztypes_${GOOS}_${GOARCH}.go\n#\n# Generated by godefs; see types_${GOOS}.c above.\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=\nrun=\"sh\"\n\ncase \"$1\" in\n-syscalls)\n\tfor i in zsyscall*go\n\tdo\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\tshift\nesac\n\ncase \"$#\" in\n0)\n\t;;\n*)\n\techo 'usage: mkall.sh [-n]' 1>&2\n\texit 2\nesac\n\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nplan9_386)\n\tmkerrors=\n\tmksyscall=\"go run mksyscall.go -l32 -plan9 -tags plan9,386\"\n\tmksysnum=\"./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h\"\n\tmktypes=\"XXX\"\n\t;;\nplan9_amd64)\n\tmkerrors=\n\tmksyscall=\"go run mksyscall.go -l32 -plan9 -tags plan9,amd64\"\n\tmksysnum=\"./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h\"\n\tmktypes=\"XXX\"\n\t;;\nplan9_arm)\n\tmkerrors=\n\tmksyscall=\"go run mksyscall.go -l32 -plan9 -tags plan9,arm\"\n\tmksysnum=\"./mksysnum_plan9.sh /n/sources/plan9/sys/src/libc/9syscall/sys.h\"\n\tmktypes=\"XXX\"\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\tplan9)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tif [ -n \"$mksyscall\" ]; then echo \"$mksyscall $syscall_goos |gofmt >zsyscall_$GOOSARCH.go\"; fi\n\t\t;;\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 |gofmt >ztypes_$GOOSARCH.go\"; fi\n) | $run\n"
  },
  {
    "path": "gossh/sys/plan9/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\nCC=${CC:-gcc}\n\nuname=$(uname)\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'\n\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package plan9\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\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\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 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|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 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFP][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|ICMP6|TCP|EVFILT|NOTE|EV|SHUT|PROT|MAP|PACKET|MSG|SCM|MCL|DT|MADV|PR)_/ ||\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_(MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 ~ /^(MS|MNT)_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|FD|NAME|S|PTRACE|PT)_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P)_/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|NOFILE|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tgrep -v 'SIGSTKSIZE\\|SIGSTKSZ\\|SIGRT' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tgrep -v 'SIGSTKSIZE\\|SIGSTKSZ\\|SIGRT' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; DO NOT EDIT.'\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/=\\(.*\\)/= Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= 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\nint errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t'$i,\n\tdone\n\n\techo -E \"\n};\n\nint signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t'$i,\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\nintcmp(const void *a, const void *b)\n{\n\treturn *(int*)a - *(int*)b;\n}\n\nint\nmain(void)\n{\n\tint i, j, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errors = [...]string {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], intcmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i];\n\t\tif(i > 0 && errors[i-1] == 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\\\",\\n\", e, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\t\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signals = [...]string {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], intcmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i];\n\t\tif(i > 0 && signals[i-1] == 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\\\",\\n\", e, 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": "gossh/sys/plan9/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//go:build ignore\n\n/*\nThis program reads a file containing function prototypes\n(like syscall_plan9.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  - The parameter lists must give a name for each argument.\n    This includes return parameters.\n  - The parameter lists must give a type for each argument:\n    the (x, y, z int) shorthand is not allowed.\n  - 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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn strings.ReplaceAll(*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\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(goBuildTags(), \" && go1.12\") {\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// 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\" && 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\tif sysname == \"getdirentries64\" {\n\t\t\t\t\t// Special case - libSystem name and\n\t\t\t\t\t// raw syscall name don't match.\n\t\t\t\t\tsysname = \"__getdirentries64\"\n\t\t\t\t}\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(), goBuildTags(), text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build %s\n\npackage plan9\n\nimport \"unsafe\"\n\n%s\n`\n"
  },
  {
    "path": "gossh/sys/plan9/mksysnum_plan9.sh",
    "content": "#!/bin/sh\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\nCOMMAND=\"mksysnum_plan9.sh $@\"\n\ncat <<EOF\n// $COMMAND\n// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT\n\npackage plan9\n\nconst(\nEOF\n\nSP='[ \t]' # space or tab\nsed \"s/^#define${SP}\\\\([A-Z0-9_][A-Z0-9_]*\\\\)${SP}${SP}*\\\\([0-9][0-9]*\\\\)/SYS_\\\\1=\\\\2/g\" \\\n\t< $1 | grep -v SYS__\n\ncat <<EOF\n)\nEOF\n"
  },
  {
    "path": "gossh/sys/plan9/pwd_go15_plan9.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build go1.5\n\npackage plan9\n\nimport \"syscall\"\n\nfunc fixwd() {\n\tsyscall.Fixwd()\n}\n\nfunc Getwd() (wd string, err error) {\n\treturn syscall.Getwd()\n}\n\nfunc Chdir(path string) error {\n\treturn syscall.Chdir(path)\n}\n"
  },
  {
    "path": "gossh/sys/plan9/pwd_plan9.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !go1.5\n\npackage plan9\n\nfunc fixwd() {\n}\n\nfunc Getwd() (wd string, err error) {\n\tfd, err := open(\".\", O_RDONLY)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tdefer Close(fd)\n\treturn Fd2path(fd)\n}\n\nfunc Chdir(path string) error {\n\treturn chdir(path)\n}\n"
  },
  {
    "path": "gossh/sys/plan9/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build plan9 && race\n\npackage plan9\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": "gossh/sys/plan9/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build plan9 && !race\n\npackage plan9\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": "gossh/sys/plan9/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build plan9\n\npackage plan9\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": "gossh/sys/plan9/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build plan9\n\n// Package plan9 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 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.ErrorString.\npackage plan9 // import \"gossh/sys/plan9\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\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\n// use is a no-op, but the compiler cannot see that it is.\n// Calling use(p) ensures that p is kept live until that point.\n//\n//go:noescape\nfunc use(p unsafe.Pointer)\n"
  },
  {
    "path": "gossh/sys/plan9/syscall_plan9.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// Plan 9 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 plan9\n\nimport (\n\t\"bytes\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// A Note is a string describing a process note.\n// It implements the os.Signal interface.\ntype Note string\n\nfunc (n Note) Signal() {}\n\nfunc (n Note) String() string {\n\treturn string(n)\n}\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.ErrorString)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.ErrorString)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n\nfunc atoi(b []byte) (n uint) {\n\tn = 0\n\tfor i := 0; i < len(b); i++ {\n\t\tn = n*10 + uint(b[i]-'0')\n\t}\n\treturn\n}\n\nfunc cstring(s []byte) string {\n\ti := bytes.IndexByte(s, 0)\n\tif i == -1 {\n\t\ti = len(s)\n\t}\n\treturn string(s[:i])\n}\n\nfunc errstr() string {\n\tvar buf [ERRMAX]byte\n\n\tRawSyscall(SYS_ERRSTR, uintptr(unsafe.Pointer(&buf[0])), uintptr(len(buf)), 0)\n\n\tbuf[len(buf)-1] = 0\n\treturn cstring(buf[:])\n}\n\n// Implemented in assembly to import from runtime.\nfunc exit(code int)\n\nfunc Exit(code int) { exit(code) }\n\nfunc readnum(path string) (uint, error) {\n\tvar b [12]byte\n\n\tfd, e := Open(path, O_RDONLY)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\tdefer Close(fd)\n\n\tn, e := Pread(fd, b[:], 0)\n\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\n\tm := 0\n\tfor ; m < n && b[m] == ' '; m++ {\n\t}\n\n\treturn atoi(b[m : n-1]), nil\n}\n\nfunc Getpid() (pid int) {\n\tn, _ := readnum(\"#c/pid\")\n\treturn int(n)\n}\n\nfunc Getppid() (ppid int) {\n\tn, _ := readnum(\"#c/ppid\")\n\treturn int(n)\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\treturn Pread(fd, p, -1)\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\treturn Pwrite(fd, p, -1)\n}\n\nvar ioSync int64\n\n//sys\tfd2path(fd int, buf []byte) (err error)\n\nfunc Fd2path(fd int) (path string, err error) {\n\tvar buf [512]byte\n\n\te := fd2path(fd, buf[:])\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn cstring(buf[:]), nil\n}\n\n//sys\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn syscall.ErrorString(\"bad arg in system call\")\n\t}\n\tvar pp [2]int32\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(placeholder uintptr, fd int, offset int64, whence int) (newoffset int64, err string)\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, e := seek(0, fd, offset, whence)\n\n\tif newoffset == -1 {\n\t\terr = syscall.ErrorString(e)\n\t}\n\treturn\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tfd, err := Create(path, O_RDONLY, DMDIR|mode)\n\n\tif fd != -1 {\n\t\tClose(fd)\n\t}\n\n\treturn\n}\n\ntype Waitmsg struct {\n\tPid  int\n\tTime [3]uint32\n\tMsg  string\n}\n\nfunc (w Waitmsg) Exited() bool   { return true }\nfunc (w Waitmsg) Signaled() bool { return false }\n\nfunc (w Waitmsg) ExitStatus() int {\n\tif len(w.Msg) == 0 {\n\t\t// a normal exit returns no message\n\t\treturn 0\n\t}\n\treturn 1\n}\n\n//sys\tawait(s []byte) (n int, err error)\n\nfunc Await(w *Waitmsg) (err error) {\n\tvar buf [512]byte\n\tvar f [5][]byte\n\n\tn, err := await(buf[:])\n\n\tif err != nil || w == nil {\n\t\treturn\n\t}\n\n\tnf := 0\n\tp := 0\n\tfor i := 0; i < n && nf < len(f)-1; i++ {\n\t\tif buf[i] == ' ' {\n\t\t\tf[nf] = buf[p:i]\n\t\t\tp = i + 1\n\t\t\tnf++\n\t\t}\n\t}\n\tf[nf] = buf[p:]\n\tnf++\n\n\tif nf != len(f) {\n\t\treturn syscall.ErrorString(\"invalid wait message\")\n\t}\n\tw.Pid = int(atoi(f[0]))\n\tw.Time[0] = uint32(atoi(f[1]))\n\tw.Time[1] = uint32(atoi(f[2]))\n\tw.Time[2] = uint32(atoi(f[3]))\n\tw.Msg = cstring(f[4])\n\tif w.Msg == \"''\" {\n\t\t// await() returns '' for no error\n\t\tw.Msg = \"\"\n\t}\n\treturn\n}\n\nfunc Unmount(name, old string) (err error) {\n\tfixwd()\n\toldp, err := BytePtrFromString(old)\n\tif err != nil {\n\t\treturn err\n\t}\n\toldptr := uintptr(unsafe.Pointer(oldp))\n\n\tvar r0 uintptr\n\tvar e syscall.ErrorString\n\n\t// bind(2) man page: If name is zero, everything bound or mounted upon old is unbound or unmounted.\n\tif name == \"\" {\n\t\tr0, _, e = Syscall(SYS_UNMOUNT, _zero, oldptr, 0)\n\t} else {\n\t\tnamep, err := BytePtrFromString(name)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tr0, _, e = Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(namep)), oldptr, 0)\n\t}\n\n\tif int32(r0) == -1 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fchdir(fd int) (err error) {\n\tpath, err := Fd2path(fd)\n\n\tif err != nil {\n\t\treturn\n\t}\n\n\treturn Chdir(path)\n}\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\nfunc NsecToTimeval(nsec int64) (tv Timeval) {\n\tnsec += 999 // round up to microsecond\n\ttv.Usec = int32(nsec % 1e9 / 1e3)\n\ttv.Sec = int32(nsec / 1e9)\n\treturn\n}\n\nfunc nsec() int64 {\n\tvar scratch int64\n\n\tr0, _, _ := Syscall(SYS_NSEC, uintptr(unsafe.Pointer(&scratch)), 0, 0)\n\t// TODO(aram): remove hack after I fix _nsec in the pc64 kernel.\n\tif r0 == 0 {\n\t\treturn scratch\n\t}\n\treturn int64(r0)\n}\n\nfunc Gettimeofday(tv *Timeval) error {\n\tnsec := nsec()\n\t*tv = NsecToTimeval(nsec)\n\treturn nil\n}\n\nfunc Getpagesize() int { return 0x1000 }\n\nfunc Getegid() (egid int) { return -1 }\nfunc Geteuid() (euid int) { return -1 }\nfunc Getgid() (gid int)   { return -1 }\nfunc Getuid() (uid int)   { return -1 }\n\nfunc Getgroups() (gids []int, err error) {\n\treturn make([]int, 0), nil\n}\n\n//sys\topen(path string, mode int) (fd int, err error)\n\nfunc Open(path string, mode int) (fd int, err error) {\n\tfixwd()\n\treturn open(path, mode)\n}\n\n//sys\tcreate(path string, mode int, perm uint32) (fd int, err error)\n\nfunc Create(path string, mode int, perm uint32) (fd int, err error) {\n\tfixwd()\n\treturn create(path, mode, perm)\n}\n\n//sys\tremove(path string) (err error)\n\nfunc Remove(path string) error {\n\tfixwd()\n\treturn remove(path)\n}\n\n//sys\tstat(path string, edir []byte) (n int, err error)\n\nfunc Stat(path string, edir []byte) (n int, err error) {\n\tfixwd()\n\treturn stat(path, edir)\n}\n\n//sys\tbind(name string, old string, flag int) (err error)\n\nfunc Bind(name string, old string, flag int) (err error) {\n\tfixwd()\n\treturn bind(name, old, flag)\n}\n\n//sys\tmount(fd int, afd int, old string, flag int, aname string) (err error)\n\nfunc Mount(fd int, afd int, old string, flag int, aname string) (err error) {\n\tfixwd()\n\treturn mount(fd, afd, old, flag, aname)\n}\n\n//sys\twstat(path string, edir []byte) (err error)\n\nfunc Wstat(path string, edir []byte) (err error) {\n\tfixwd()\n\treturn wstat(path, edir)\n}\n\n//sys\tchdir(path string) (err error)\n//sys\tDup(oldfd int, newfd int) (fd 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\tClose(fd int) (err error)\n//sys\tFstat(fd int, edir []byte) (n int, err error)\n//sys\tFwstat(fd int, edir []byte) (err error)\n"
  },
  {
    "path": "gossh/sys/plan9/zsyscall_plan9_386.go",
    "content": "// go run mksyscall.go -l32 -plan9 -tags plan9,386 syscall_plan9.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build plan9 && 386\n\npackage plan9\n\nimport \"unsafe\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fd2path(fd int, buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tif int32(r0) == -1 {\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 pipe(p *[2]int32) (err error) {\n\tr0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif int32(r0) == -1 {\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 await(s []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(s) > 0 {\n\t\t_p0 = unsafe.Pointer(&s[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)\n\tn = int(r0)\n\tif int32(r0) == -1 {\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) (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), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 create(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_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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, edir []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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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(name string, old string, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif int32(r0) == -1 {\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 mount(fd int, afd int, old string, flag int, aname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(aname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)\n\tif int32(r0) == -1 {\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 wstat(path string, edir []byte) (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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tif int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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(oldfd int, newfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif int32(r0) == -1 {\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, edir []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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 Fwstat(fd int, edir []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tif int32(r0) == -1 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/plan9/zsyscall_plan9_amd64.go",
    "content": "// go run mksyscall.go -l32 -plan9 -tags plan9,amd64 syscall_plan9.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build plan9 && amd64\n\npackage plan9\n\nimport \"unsafe\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fd2path(fd int, buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tif int32(r0) == -1 {\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 pipe(p *[2]int32) (err error) {\n\tr0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif int32(r0) == -1 {\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 await(s []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(s) > 0 {\n\t\t_p0 = unsafe.Pointer(&s[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)\n\tn = int(r0)\n\tif int32(r0) == -1 {\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) (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), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 create(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_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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, edir []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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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(name string, old string, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif int32(r0) == -1 {\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 mount(fd int, afd int, old string, flag int, aname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(aname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)\n\tif int32(r0) == -1 {\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 wstat(path string, edir []byte) (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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tif int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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(oldfd int, newfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif int32(r0) == -1 {\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, edir []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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 Fwstat(fd int, edir []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tif int32(r0) == -1 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/plan9/zsyscall_plan9_arm.go",
    "content": "// go run mksyscall.go -l32 -plan9 -tags plan9,arm syscall_plan9.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build plan9 && arm\n\npackage plan9\n\nimport \"unsafe\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fd2path(fd int, buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FD2PATH, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tif int32(r0) == -1 {\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 pipe(p *[2]int32) (err error) {\n\tr0, _, e1 := Syscall(SYS_PIPE, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif int32(r0) == -1 {\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 await(s []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(s) > 0 {\n\t\t_p0 = unsafe.Pointer(&s[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_AWAIT, uintptr(_p0), uintptr(len(s)), 0)\n\tn = int(r0)\n\tif int32(r0) == -1 {\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) (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), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 create(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_CREATE, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_REMOVE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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, edir []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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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(name string, old string, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_BIND, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flag))\n\tif int32(r0) == -1 {\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 mount(fd int, afd int, old string, flag int, aname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(old)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(aname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_MOUNT, uintptr(fd), uintptr(afd), uintptr(unsafe.Pointer(_p0)), uintptr(flag), uintptr(unsafe.Pointer(_p1)), 0)\n\tif int32(r0) == -1 {\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 wstat(path string, edir []byte) (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(edir) > 0 {\n\t\t_p1 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(edir)))\n\tif int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif int32(r0) == -1 {\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(oldfd int, newfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), uintptr(newfd), 0)\n\tfd = int(r0)\n\tif int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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 unsafe.Pointer\n\tif len(p) > 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 int32(r0) == -1 {\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\tr0, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif int32(r0) == -1 {\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, edir []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tn = int(r0)\n\tif int32(r0) == -1 {\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 Fwstat(fd int, edir []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(edir) > 0 {\n\t\t_p0 = unsafe.Pointer(&edir[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FWSTAT, uintptr(fd), uintptr(_p0), uintptr(len(edir)))\n\tif int32(r0) == -1 {\n\t\terr = e1\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/plan9/zsysnum_plan9.go",
    "content": "// mksysnum_plan9.sh /opt/plan9/sys/src/libc/9syscall/sys.h\n// MACHINE GENERATED BY THE ABOVE COMMAND; DO NOT EDIT\n\npackage plan9\n\nconst (\n\tSYS_SYSR1       = 0\n\tSYS_BIND        = 2\n\tSYS_CHDIR       = 3\n\tSYS_CLOSE       = 4\n\tSYS_DUP         = 5\n\tSYS_ALARM       = 6\n\tSYS_EXEC        = 7\n\tSYS_EXITS       = 8\n\tSYS_FAUTH       = 10\n\tSYS_SEGBRK      = 12\n\tSYS_OPEN        = 14\n\tSYS_OSEEK       = 16\n\tSYS_SLEEP       = 17\n\tSYS_RFORK       = 19\n\tSYS_PIPE        = 21\n\tSYS_CREATE      = 22\n\tSYS_FD2PATH     = 23\n\tSYS_BRK_        = 24\n\tSYS_REMOVE      = 25\n\tSYS_NOTIFY      = 28\n\tSYS_NOTED       = 29\n\tSYS_SEGATTACH   = 30\n\tSYS_SEGDETACH   = 31\n\tSYS_SEGFREE     = 32\n\tSYS_SEGFLUSH    = 33\n\tSYS_RENDEZVOUS  = 34\n\tSYS_UNMOUNT     = 35\n\tSYS_SEMACQUIRE  = 37\n\tSYS_SEMRELEASE  = 38\n\tSYS_SEEK        = 39\n\tSYS_FVERSION    = 40\n\tSYS_ERRSTR      = 41\n\tSYS_STAT        = 42\n\tSYS_FSTAT       = 43\n\tSYS_WSTAT       = 44\n\tSYS_FWSTAT      = 45\n\tSYS_MOUNT       = 46\n\tSYS_AWAIT       = 47\n\tSYS_PREAD       = 50\n\tSYS_PWRITE      = 51\n\tSYS_TSEMACQUIRE = 52\n\tSYS_NSEC        = 53\n)\n"
  },
  {
    "path": "gossh/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/gossh/sys/unix\n\nPorting Go to a new architecture/OS combination or adding syscalls, types, or\nconstants to an existing architecture/OS pair requires some manual effort;\nhowever, there are tools that automate much of the process.\n\n## Build Systems\n\nThere are currently two ways we generate the necessary files. We are currently\nmigrating the build system to use containers so the builds are reproducible.\nThis is being done on an OS-by-OS basis. Please update this documentation as\ncomponents of the build system change.\n\n### Old Build System (currently for `GOOS != \"linux\"`)\n\nThe old build system generates the Go files based on the C header files\npresent on your system. This means that files\nfor a given GOOS/GOARCH pair must be generated on a system with that OS and\narchitecture. This also means that the generated code can differ from system\nto system, based on differences in the header files.\n\nTo avoid this, if you are using the old build system, only generate the Go\nfiles on an installation with unmodified header files. It is also important to\nkeep track of which version of the OS the files were generated from (ex.\nDarwin 14 vs Darwin 15). This makes it easier to track the progress of changes\nand have each OS upgrade correspond to a single change.\n\nTo build the files for your current OS and architecture, make sure GOOS and\nGOARCH are set correctly and run `mkall.sh`. This will generate the files for\nyour specific system. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go\n\n### New Build System (currently for `GOOS == \"linux\"`)\n\nThe new build system uses a Docker container to generate the go files directly\nfrom source checkouts of the kernel and various system libraries. This means\nthat on any platform that supports Docker, all the files using the new build\nsystem can be generated at once, and generated files will not change based on\nwhat the person running the scripts has installed on their computer.\n\nThe OS specific files for the new build system are located in the `${GOOS}`\ndirectory, and the build is coordinated by the `${GOOS}/mkall.go` program. When\nthe kernel or system library updates, modify the Dockerfile at\n`${GOOS}/Dockerfile` to checkout the new release of the source.\n\nTo build all the files under the new build system, you must be on an amd64/Linux\nsystem and have your GOOS and GOARCH set accordingly. Running `mkall.sh` will\nthen generate all of the files for all of the GOOS/GOARCH pairs in the new build\nsystem. Running `mkall.sh -n` shows the commands that will be run.\n\nRequirements: bash, go, docker\n\n## Component files\n\nThis section describes the various files used in the code generation process.\nIt also contains instructions on how to modify these files to add a new\narchitecture/OS or to add additional syscalls, types, or constants. Note that\nif you are using the new build system, the scripts/programs cannot be called normally.\nThey must be called from within the docker container.\n\n### asm files\n\nThe hand-written assembly file at `asm_${GOOS}_${GOARCH}.s` implements system\ncall dispatch. There are three entry points:\n```\n  func Syscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n  func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2, err uintptr)\n  func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2, err uintptr)\n```\nThe first and second are the standard ones; they differ only in how many\narguments can be passed to the kernel. The third is for low-level use by the\nForkExec wrapper. Unlike the first two, it does not call into the scheduler to\nlet it know that a system call is running.\n\nWhen porting Go to a new architecture/OS, this file must be implemented for\neach GOOS/GOARCH pair.\n\n### mksysnum\n\nMksysnum is a Go program located at `${GOOS}/mksysnum.go` (or `mksysnum_${GOOS}.go`\nfor the old system). This program takes in a list of header files containing the\nsyscall number declarations and parses them to produce the corresponding list of\nGo numeric constants. See `zsysnum_${GOOS}_${GOARCH}.go` for the generated\nconstants.\n\nAdding new syscall numbers is mostly done by running the build on a sufficiently\nnew installation of the target OS (or updating the source checkouts for the\nnew build system). However, depending on the OS, you may need to update the\nparsing in mksysnum.\n\n### mksyscall.go\n\nThe `syscall.go`, `syscall_${GOOS}.go`, `syscall_${GOOS}_${GOARCH}.go` are\nhand-written Go files which implement system calls (for unix, the specific OS,\nor the specific OS/Architecture pair respectively) that need special handling\nand list `//sys` comments giving prototypes for ones that can be generated.\n\nThe mksyscall.go program takes the `//sys` and `//sysnb` comments and converts\nthem into syscalls. This requires the name of the prototype in the comment to\nmatch a syscall number in the `zsysnum_${GOOS}_${GOARCH}.go` file. The function\nprototype can be exported (capitalized) or not.\n\nAdding a new syscall often just requires adding a new `//sys` function prototype\nwith the desired arguments and a capitalized name so it is exported. However, if\nyou want the interface to the syscall to be different, often one will make an\nunexported `//sys` prototype, and then write a custom wrapper in\n`syscall_${GOOS}.go`.\n\n### types files\n\nFor each OS, there is a hand-written Go file at `${GOOS}/types.go` (or\n`types_${GOOS}.go` on the old system). This file includes standard C headers and\ncreates Go type aliases to the corresponding C types. The file is then fed\nthrough godef to get the Go compatible definitions. Finally, the generated code\nis fed though mkpost.go to format the code correctly and remove any hidden or\nprivate identifiers. This cleaned-up code is written to\n`ztypes_${GOOS}_${GOARCH}.go`.\n\nThe hardest part about preparing this file is figuring out which headers to\ninclude and which symbols need to be `#define`d to get the actual data\nstructures that pass through to the kernel system calls. Some C libraries\npreset alternate versions for binary compatibility and translate them on the\nway in and out of system calls, but there is almost always a `#define` that can\nget the real ones.\nSee `types_darwin.go` and `linux/types.go` for examples.\n\nTo add a new type, add in the necessary include statement at the top of the\nfile (if it is not already there) and add in a type alias line. Note that if\nyour type is significantly different on different architectures, you may need\nsome `#if/#elif` macros in your include statements.\n\n### mkerrors.sh\n\nThis script is used to generate the system's various constants. This doesn't\njust include the error numbers and error strings, but also the signal numbers\nand a wide variety of miscellaneous constants. The constants come from the list\nof include files in the `includes_${uname}` variable. A regex then picks out\nthe desired `#define` statements, and generates the corresponding Go constants.\nThe error numbers and strings are generated from `#include <errno.h>`, and the\nsignal numbers and strings are generated from `#include <signal.h>`. All of\nthese constants are written to `zerrors_${GOOS}_${GOARCH}.go` via a C program,\n`_errors.c`, which prints out all the constants.\n\nTo add a constant, add the header that includes it to the appropriate variable.\nThen, edit the regex (if necessary) to match the desired constant. Avoid making\nthe regex too broad to avoid matching unintended constants.\n\n### internal/mkmerge\n\nThis program is used to extract duplicate const, func, and type declarations\nfrom the generated architecture-specific files listed below, and merge these\ninto a common file for each OS.\n\nThe merge is performed in the following steps:\n1. Construct the set of common code that is 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": "gossh/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": "gossh/sys/unix/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"syscall\"\n\ntype Signal = syscall.Signal\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "gossh/sys/unix/asm_aix_ppc64.s",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, AIX are implemented in runtime/syscall_aix.go\n//\n\nTEXT ·syscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·syscall6(SB)\n\nTEXT ·rawSyscall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_386.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for 386 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_amd64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for AMD64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_arm.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-52\n\tB\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_arm64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for ARM64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_ppc64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n//\n// System call support for ppc64, BSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_bsd_riscv64.s",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || freebsd || netbsd || openbsd) && gc\n\n#include \"textflag.h\"\n\n// System call support for RISCV64 BSD\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_386.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for 386, Linux\n//\n\n// See ../runtime/sys_linux_386.s for the reason why we always use int 0x80\n// instead of the glibc-specific \"CALL 0x10(GS)\".\n#define INVOKE_SYSCALL\tINT\t$0x80\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tCALL\truntime·entersyscall(SB)\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVL\ttrap+0(FP), AX  // syscall entry\n\tMOVL\ta1+4(FP), BX\n\tMOVL\ta2+8(FP), CX\n\tMOVL\ta3+12(FP), DX\n\tMOVL\t$0, SI\n\tMOVL\t$0, DI\n\tINVOKE_SYSCALL\n\tMOVL\tAX, r1+16(FP)\n\tMOVL\tDX, r2+20(FP)\n\tRET\n\nTEXT ·socketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·socketcall(SB)\n\nTEXT ·rawsocketcall(SB),NOSPLIT,$0-36\n\tJMP\tsyscall·rawsocketcall(SB)\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tJMP\tsyscall·seek(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_amd64.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for AMD64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVQ\ta1+8(FP), DI\n\tMOVQ\ta2+16(FP), SI\n\tMOVQ\ta3+24(FP), DX\n\tMOVQ\t$0, R10\n\tMOVQ\t$0, R8\n\tMOVQ\t$0, R9\n\tMOVQ\ttrap+0(FP), AX\t// syscall entry\n\tSYSCALL\n\tMOVQ\tAX, r1+32(FP)\n\tMOVQ\tDX, r2+40(FP)\n\tRET\n\nTEXT ·gettimeofday(SB),NOSPLIT,$0-16\n\tJMP\tsyscall·gettimeofday(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_arm.s",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for arm, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tBL\truntime·entersyscall(SB)\n\tMOVW\ttrap+0(FP), R7\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tMOVW\t$0, R3\n\tMOVW\t$0, R4\n\tMOVW\t$0, R5\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ttrap+0(FP), R7\t// syscall entry\n\tMOVW\ta1+4(FP), R0\n\tMOVW\ta2+8(FP), R1\n\tMOVW\ta3+12(FP), R2\n\tSWI\t$0\n\tMOVW\tR0, r1+16(FP)\n\tMOVW\t$0, R0\n\tMOVW\tR0, r2+20(FP)\n\tRET\n\nTEXT ·seek(SB),NOSPLIT,$0-28\n\tB\tsyscall·seek(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_arm64.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && arm64 && gc\n\n#include \"textflag.h\"\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\t// r1\n\tMOVD\tR1, r2+40(FP)\t// r2\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tB\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tB\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R0\n\tMOVD\ta2+16(FP), R1\n\tMOVD\ta3+24(FP), R2\n\tMOVD\t$0, R3\n\tMOVD\t$0, R4\n\tMOVD\t$0, R5\n\tMOVD\ttrap+0(FP), R8\t// syscall entry\n\tSVC\n\tMOVD\tR0, r1+32(FP)\n\tMOVD\tR1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_loong64.s",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && loong64 && gc\n\n#include \"textflag.h\"\n\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R11\t// syscall entry\n\tSYSCALL\n\tMOVV\tR4, r1+32(FP)\n\tMOVV\tR0, r2+40(FP)\t// r2 is not used. Always set to 0\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_mips64x.s",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tJAL\truntime·entersyscall(SB)\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVV\ta1+8(FP), R4\n\tMOVV\ta2+16(FP), R5\n\tMOVV\ta3+24(FP), R6\n\tMOVV\tR0, R7\n\tMOVV\tR0, R8\n\tMOVV\tR0, R9\n\tMOVV\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVV\tR2, r1+32(FP)\n\tMOVV\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_mipsx.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for mips, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-28\n\tJMP syscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·Syscall6(SB)\n\nTEXT ·Syscall9(SB),NOSPLIT,$0-52\n\tJMP syscall·Syscall9(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-24\n\tJAL\truntime·entersyscall(SB)\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\tR0, R7\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\t// r1\n\tMOVW\tR3, r2+20(FP)\t// r2\n\tJAL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-28\n\tJMP syscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-40\n\tJMP syscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-24\n\tMOVW\ta1+4(FP), R4\n\tMOVW\ta2+8(FP), R5\n\tMOVW\ta3+12(FP), R6\n\tMOVW\ttrap+0(FP), R2\t// syscall entry\n\tSYSCALL\n\tMOVW\tR2, r1+16(FP)\n\tMOVW\tR3, r2+20(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_ppc64x.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le) && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for ppc64, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R3\n\tMOVD\ta2+16(FP), R4\n\tMOVD\ta3+24(FP), R5\n\tMOVD\tR0, R6\n\tMOVD\tR0, R7\n\tMOVD\tR0, R8\n\tMOVD\ttrap+0(FP), R9\t// syscall entry\n\tSYSCALL R9\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR4, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_riscv64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for linux/riscv64.\n//\n// Where available, just jump to package syscall's implementation of\n// these functions.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tCALL\truntime·entersyscall(SB)\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\t// r1\n\tMOV\tA1, r2+40(FP)\t// r2\n\tCALL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOV\ta1+8(FP), A0\n\tMOV\ta2+16(FP), A1\n\tMOV\ta3+24(FP), A2\n\tMOV\ttrap+0(FP), A7\t// syscall entry\n\tECALL\n\tMOV\tA0, r1+32(FP)\n\tMOV\tA1, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_linux_s390x.s",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && s390x && gc\n\n#include \"textflag.h\"\n\n//\n// System calls for s390x, Linux\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT ·Syscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·Syscall(SB)\n\nTEXT ·Syscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·Syscall6(SB)\n\nTEXT ·SyscallNoError(SB),NOSPLIT,$0-48\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·RawSyscall(SB),NOSPLIT,$0-56\n\tBR\tsyscall·RawSyscall(SB)\n\nTEXT ·RawSyscall6(SB),NOSPLIT,$0-80\n\tBR\tsyscall·RawSyscall6(SB)\n\nTEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48\n\tMOVD\ta1+8(FP), R2\n\tMOVD\ta2+16(FP), R3\n\tMOVD\ta3+24(FP), R4\n\tMOVD\t$0, R5\n\tMOVD\t$0, R6\n\tMOVD\t$0, R7\n\tMOVD\ttrap+0(FP), R1\t// syscall entry\n\tSYSCALL\n\tMOVD\tR2, r1+32(FP)\n\tMOVD\tR3, r2+40(FP)\n\tRET\n"
  },
  {
    "path": "gossh/sys/unix/asm_openbsd_mips64.s",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System call support for mips64, OpenBSD\n//\n\n// Just jump to package syscall's implementation for all these functions.\n// The runtime may know about them.\n\nTEXT\t·Syscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·Syscall(SB)\n\nTEXT\t·Syscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·Syscall6(SB)\n\nTEXT\t·Syscall9(SB),NOSPLIT,$0-104\n\tJMP\tsyscall·Syscall9(SB)\n\nTEXT\t·RawSyscall(SB),NOSPLIT,$0-56\n\tJMP\tsyscall·RawSyscall(SB)\n\nTEXT\t·RawSyscall6(SB),NOSPLIT,$0-80\n\tJMP\tsyscall·RawSyscall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_solaris_amd64.s",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gc\n\n#include \"textflag.h\"\n\n//\n// System calls for amd64, Solaris are implemented in runtime/syscall_solaris.go\n//\n\nTEXT ·sysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·sysvicall6(SB)\n\nTEXT ·rawSysvicall6(SB),NOSPLIT,$0-88\n\tJMP\tsyscall·rawSysvicall6(SB)\n"
  },
  {
    "path": "gossh/sys/unix/asm_zos_s390x.s",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x && gc\n\n#include \"textflag.h\"\n\n#define PSALAA            1208(R0)\n#define GTAB64(x)           80(x)\n#define LCA64(x)            88(x)\n#define CAA(x)               8(x)\n#define EDCHPXV(x)        1016(x)       // in the CAA\n#define SAVSTACK_ASYNC(x)  336(x)       // in the LCA\n\n// SS_*, where x=SAVSTACK_ASYNC\n#define SS_LE(x)             0(x)\n#define SS_GO(x)             8(x)\n#define SS_ERRNO(x)         16(x)\n#define SS_ERRNOJR(x)       20(x)\n\n#define LE_CALL BYTE $0x0D; BYTE $0x76; // BL R7, R6\n\nTEXT ·clearErrno(SB),NOSPLIT,$0-0\n\tBL\taddrerrno<>(SB)\n\tMOVD\t$0, 0(R3)\n\tRET\n\n// Returns the address of errno in R3.\nTEXT addrerrno<>(SB),NOSPLIT|NOFRAME,$0-0\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get __errno FuncDesc.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tADD\t$(0x156*16), R9\n\tLMG\t0(R9), R5, R6\n\n\t// Switch to saved LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Call __errno function.\n\tLE_CALL\n\tNOPH\n\n\t// Switch back to Go stack.\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\tRET\n\nTEXT ·syscall_syscall(SB),NOSPLIT,$0-56\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR0, r2+40(FP)\n\tMOVD\tR0, err+48(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\taddrerrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+48(FP)\ndone:\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·syscall_rawsyscall(SB),NOSPLIT,$0-56\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+32(FP)\n\tMOVD\tR0, r2+40(FP)\n\tMOVD\tR0, err+48(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\taddrerrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+48(FP)\ndone:\n\tRET\n\nTEXT ·syscall_syscall6(SB),NOSPLIT,$0-80\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Fill in parameter list.\n\tMOVD\ta4+32(FP), R12\n\tMOVD\tR12, (2176+24)(R4)\n\tMOVD\ta5+40(FP), R12\n\tMOVD\tR12, (2176+32)(R4)\n\tMOVD\ta6+48(FP), R12\n\tMOVD\tR12, (2176+40)(R4)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+56(FP)\n\tMOVD\tR0, r2+64(FP)\n\tMOVD\tR0, err+72(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\taddrerrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+72(FP)\ndone:\n\tBL\truntime·exitsyscall(SB)\n\tRET\n\nTEXT ·syscall_rawsyscall6(SB),NOSPLIT,$0-80\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Fill in parameter list.\n\tMOVD\ta4+32(FP), R12\n\tMOVD\tR12, (2176+24)(R4)\n\tMOVD\ta5+40(FP), R12\n\tMOVD\tR12, (2176+32)(R4)\n\tMOVD\ta6+48(FP), R12\n\tMOVD\tR12, (2176+40)(R4)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+56(FP)\n\tMOVD\tR0, r2+64(FP)\n\tMOVD\tR0, err+72(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\t·rrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+72(FP)\ndone:\n\tRET\n\nTEXT ·syscall_syscall9(SB),NOSPLIT,$0\n\tBL\truntime·entersyscall(SB)\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Fill in parameter list.\n\tMOVD\ta4+32(FP), R12\n\tMOVD\tR12, (2176+24)(R4)\n\tMOVD\ta5+40(FP), R12\n\tMOVD\tR12, (2176+32)(R4)\n\tMOVD\ta6+48(FP), R12\n\tMOVD\tR12, (2176+40)(R4)\n\tMOVD\ta7+56(FP), R12\n\tMOVD\tR12, (2176+48)(R4)\n\tMOVD\ta8+64(FP), R12\n\tMOVD\tR12, (2176+56)(R4)\n\tMOVD\ta9+72(FP), R12\n\tMOVD\tR12, (2176+64)(R4)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+80(FP)\n\tMOVD\tR0, r2+88(FP)\n\tMOVD\tR0, err+96(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\taddrerrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+96(FP)\ndone:\n        BL\truntime·exitsyscall(SB)\n        RET\n\nTEXT ·syscall_rawsyscall9(SB),NOSPLIT,$0\n\tMOVD\ta1+8(FP), R1\n\tMOVD\ta2+16(FP), R2\n\tMOVD\ta3+24(FP), R3\n\n\t// Get library control area (LCA).\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\n\t// Get function.\n\tMOVD\tCAA(R8), R9\n\tMOVD\tEDCHPXV(R9), R9\n\tMOVD\ttrap+0(FP), R5\n\tSLD\t$4, R5\n\tADD\tR5, R9\n\tLMG\t0(R9), R5, R6\n\n\t// Restore LE stack.\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R4\n\tMOVD\t$0, 0(R9)\n\n\t// Fill in parameter list.\n\tMOVD\ta4+32(FP), R12\n\tMOVD\tR12, (2176+24)(R4)\n\tMOVD\ta5+40(FP), R12\n\tMOVD\tR12, (2176+32)(R4)\n\tMOVD\ta6+48(FP), R12\n\tMOVD\tR12, (2176+40)(R4)\n\tMOVD\ta7+56(FP), R12\n\tMOVD\tR12, (2176+48)(R4)\n\tMOVD\ta8+64(FP), R12\n\tMOVD\tR12, (2176+56)(R4)\n\tMOVD\ta9+72(FP), R12\n\tMOVD\tR12, (2176+64)(R4)\n\n\t// Call function.\n\tLE_CALL\n\tNOPH\n\tXOR\tR0, R0      // Restore R0 to $0.\n\tMOVD\tR4, 0(R9)   // Save stack pointer.\n\n\tMOVD\tR3, r1+80(FP)\n\tMOVD\tR0, r2+88(FP)\n\tMOVD\tR0, err+96(FP)\n\tMOVW\tR3, R4\n\tCMP\tR4, $-1\n\tBNE\tdone\n\tBL\taddrerrno<>(SB)\n\tMOVWZ\t0(R3), R3\n\tMOVD\tR3, err+96(FP)\ndone:\n\tRET\n\n// func svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nTEXT ·svcCall(SB),NOSPLIT,$0\n\tBL\truntime·save_g(SB)   // Save g and stack pointer\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\tR15, 0(R9)\n\n\tMOVD\targv+8(FP), R1       // Move function arguments into registers\n\tMOVD\tdsa+16(FP), g\n\tMOVD\tfnptr+0(FP), R15\n\n\tBYTE\t$0x0D                // Branch to function\n\tBYTE\t$0xEF\n\n\tBL\truntime·load_g(SB)   // Restore g and stack pointer\n\tMOVW\tPSALAA, R8\n\tMOVD\tLCA64(R8), R8\n\tMOVD\tSAVSTACK_ASYNC(R8), R9\n\tMOVD\t0(R9), R15\n\n\tRET\n\n// func svcLoad(name *byte) unsafe.Pointer\nTEXT ·svcLoad(SB),NOSPLIT,$0\n\tMOVD\tR15, R2          // Save go stack pointer\n\tMOVD\tname+0(FP), R0   // Move SVC args into registers\n\tMOVD\t$0x80000000, R1\n\tMOVD\t$0, R15\n\tBYTE\t$0x0A            // SVC 08 LOAD\n\tBYTE\t$0x08\n\tMOVW\tR15, R3          // Save return code from SVC\n\tMOVD\tR2, R15          // Restore go stack pointer\n\tCMP\tR3, $0           // Check SVC return code\n\tBNE\terror\n\n\tMOVD\t$-2, R3          // Reset last bit of entry point to zero\n\tAND\tR0, R3\n\tMOVD\tR3, addr+8(FP)   // Return entry point returned by SVC\n\tCMP\tR0, R3           // Check if last bit of entry point was set\n\tBNE\tdone\n\n\tMOVD\tR15, R2          // Save go stack pointer\n\tMOVD\t$0, R15          // Move SVC args into registers (entry point still in r0 from SVC 08)\n\tBYTE\t$0x0A            // SVC 09 DELETE\n\tBYTE\t$0x09\n\tMOVD\tR2, R15          // Restore go stack pointer\n\nerror:\n\tMOVD\t$0, addr+8(FP)   // Return 0 on failure\ndone:\n\tXOR\tR0, R0           // Reset r0 to 0\n\tRET\n\n// func svcUnload(name *byte, fnptr unsafe.Pointer) int64\nTEXT ·svcUnload(SB),NOSPLIT,$0\n\tMOVD\tR15, R2          // Save go stack pointer\n\tMOVD\tname+0(FP), R0   // Move SVC args into registers\n\tMOVD\taddr+8(FP), R15\n\tBYTE\t$0x0A            // SVC 09\n\tBYTE\t$0x09\n\tXOR\tR0, R0           // Reset r0 to 0\n\tMOVD\tR15, R1          // Save SVC return code\n\tMOVD\tR2, R15          // Restore go stack pointer\n\tMOVD\tR1, rc+0(FP)     // Return SVC return code\n\tRET\n\n// func gettid() uint64\nTEXT ·gettid(SB), NOSPLIT, $0\n\t// Get library control area (LCA).\n\tMOVW PSALAA, R8\n\tMOVD LCA64(R8), R8\n\n\t// Get CEECAATHDID\n\tMOVD CAA(R8), R9\n\tMOVD 0x3D0(R9), R9\n\tMOVD R9, ret+0(FP)\n\n\tRET\n"
  },
  {
    "path": "gossh/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": "gossh/sys/unix/cap_freebsd.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n)\n\n// Go implementation of C mostly found in /usr/src/sys/kern/subr_capability.c\n\nconst (\n\t// This is the version of CapRights this package understands. See C implementation for parallels.\n\tcapRightsGoVersion = CAP_RIGHTS_VERSION_00\n\tcapArSizeMin       = CAP_RIGHTS_VERSION_00 + 2\n\tcapArSizeMax       = capRightsGoVersion + 2\n)\n\nvar (\n\tbit2idx = []int{\n\t\t-1, 0, 1, -1, 2, -1, -1, -1, 3, -1, -1, -1, -1, -1, -1, -1,\n\t\t4, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n\t}\n)\n\nfunc capidxbit(right uint64) int {\n\treturn int((right >> 57) & 0x1f)\n}\n\nfunc rightToIndex(right uint64) (int, error) {\n\tidx := capidxbit(right)\n\tif idx < 0 || idx >= len(bit2idx) {\n\t\treturn -2, fmt.Errorf(\"index for right 0x%x out of range\", right)\n\t}\n\treturn bit2idx[idx], nil\n}\n\nfunc caprver(right uint64) int {\n\treturn int(right >> 62)\n}\n\nfunc capver(rights *CapRights) int {\n\treturn caprver(rights.Rights[0])\n}\n\nfunc caparsize(rights *CapRights) int {\n\treturn capver(rights) + 2\n}\n\n// CapRightsSet sets the permissions in setrights in rights.\nfunc CapRightsSet(rights *CapRights, setrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] |= right\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsClear clears the permissions in clearrights from rights.\nfunc CapRightsClear(rights *CapRights, clearrights []uint64) error {\n\t// This is essentially a copy of cap_rights_vclear()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range clearrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch\")\n\t\t}\n\t\trights.Rights[i] &= ^(right & 0x01FFFFFFFFFFFFFF)\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn errors.New(\"index mismatch (after assign)\")\n\t\t}\n\t}\n\n\treturn nil\n}\n\n// CapRightsIsSet checks whether all the permissions in setrights are present in rights.\nfunc CapRightsIsSet(rights *CapRights, setrights []uint64) (bool, error) {\n\t// This is essentially a copy of cap_rights_is_vset()\n\tif capver(rights) != CAP_RIGHTS_VERSION_00 {\n\t\treturn false, fmt.Errorf(\"bad rights version %d\", capver(rights))\n\t}\n\n\tn := caparsize(rights)\n\tif n < capArSizeMin || n > capArSizeMax {\n\t\treturn false, errors.New(\"bad rights size\")\n\t}\n\n\tfor _, right := range setrights {\n\t\tif caprver(right) != CAP_RIGHTS_VERSION_00 {\n\t\t\treturn false, errors.New(\"bad right version\")\n\t\t}\n\t\ti, err := rightToIndex(right)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t\tif i >= n {\n\t\t\treturn false, errors.New(\"index overflow\")\n\t\t}\n\t\tif capidxbit(rights.Rights[i]) != capidxbit(right) {\n\t\t\treturn false, errors.New(\"index mismatch\")\n\t\t}\n\t\tif (rights.Rights[i] & right) != right {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\n\treturn true, nil\n}\n\nfunc capright(idx uint64, bit uint64) uint64 {\n\treturn ((1 << (57 + idx)) | bit)\n}\n\n// CapRightsInit returns a pointer to an initialised CapRights structure filled with rights.\n// See man cap_rights_init(3) and rights(4).\nfunc CapRightsInit(rights []uint64) (*CapRights, error) {\n\tvar r CapRights\n\tr.Rights[0] = (capRightsGoVersion << 62) | capright(0, 0)\n\tr.Rights[1] = capright(1, 0)\n\n\terr := CapRightsSet(&r, rights)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &r, nil\n}\n\n// CapRightsLimit reduces the operations permitted on fd to at most those contained in rights.\n// The capability rights on fd can never be increased by CapRightsLimit.\n// See man cap_rights_limit(2) and rights(4).\nfunc CapRightsLimit(fd uintptr, rights *CapRights) error {\n\treturn capRightsLimit(int(fd), rights)\n}\n\n// CapRightsGet returns a CapRights structure containing the operations permitted on fd.\n// See man cap_rights_get(3) and rights(4).\nfunc CapRightsGet(fd uintptr) (*CapRights, error) {\n\tr, err := CapRightsInit(nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\terr = capRightsGet(capRightsGoVersion, int(fd), r)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn r, nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/constants.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nconst (\n\tR_OK = 0x4\n\tW_OK = 0x2\n\tX_OK = 0x1\n)\n"
  },
  {
    "path": "gossh/sys/unix/dev_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0xffff)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0xffff)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn uint64(((major) << 16) | (minor))\n}\n"
  },
  {
    "path": "gossh/sys/unix/dev_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used AIX.\n\npackage unix\n\n// Major returns the major component of a Linux device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev & 0x3fffffff00000000) >> 32)\n}\n\n// Minor returns the minor component of a Linux device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32((dev & 0x00000000ffffffff) >> 0)\n}\n\n// Mkdev returns a Linux device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\tvar DEVNO64 uint64\n\tDEVNO64 = 0x8000000000000000\n\treturn ((uint64(major) << 32) | (uint64(minor) & 0x00000000FFFFFFFF) | DEVNO64)\n}\n"
  },
  {
    "path": "gossh/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": "gossh/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": "gossh/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": "gossh/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": "gossh/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": "gossh/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": "gossh/sys/unix/dev_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Functions to access/create device major and minor numbers matching the\n// encoding used by z/OS.\n//\n// The information below is extracted and adapted from <sys/stat.h> macros.\n\npackage unix\n\n// Major returns the major component of a z/OS device number.\nfunc Major(dev uint64) uint32 {\n\treturn uint32((dev >> 16) & 0x0000FFFF)\n}\n\n// Minor returns the minor component of a z/OS device number.\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(dev & 0x0000FFFF)\n}\n\n// Mkdev returns a z/OS device number generated from the given major and minor\n// components.\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn (uint64(major) << 16) | uint64(minor)\n}\n"
  },
  {
    "path": "gossh/sys/unix/dirent.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"unsafe\"\n\n// readInt returns the size-bytes unsigned integer in native byte order at offset off.\nfunc readInt(b []byte, off, size uintptr) (u uint64, ok bool) {\n\tif len(b) < int(off+size) {\n\t\treturn 0, false\n\t}\n\tif isBigEndian {\n\t\treturn readIntBE(b[off:], size), true\n\t}\n\treturn readIntLE(b[off:], size), true\n}\n\nfunc readIntBE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[1]) | uint64(b[0])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[3]) | uint64(b[2])<<8 | uint64(b[1])<<16 | uint64(b[0])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |\n\t\t\tuint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\nfunc readIntLE(b []byte, size uintptr) uint64 {\n\tswitch size {\n\tcase 1:\n\t\treturn uint64(b[0])\n\tcase 2:\n\t\t_ = b[1] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8\n\tcase 4:\n\t\t_ = b[3] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24\n\tcase 8:\n\t\t_ = b[7] // bounds check hint to compiler; see golang.org/issue/14808\n\t\treturn uint64(b[0]) | uint64(b[1])<<8 | uint64(b[2])<<16 | uint64(b[3])<<24 |\n\t\t\tuint64(b[4])<<32 | uint64(b[5])<<40 | uint64(b[6])<<48 | uint64(b[7])<<56\n\tdefault:\n\t\tpanic(\"syscall: readInt with unsupported size\")\n\t}\n}\n\n// ParseDirent parses up to max directory entries in buf,\n// appending the names to names. It returns the number of\n// bytes consumed from buf, the number of entries added\n// to names, and the new names slice.\nfunc ParseDirent(buf []byte, max int, names []string) (consumed int, count int, newnames []string) {\n\toriglen := len(buf)\n\tcount = 0\n\tfor max != 0 && len(buf) > 0 {\n\t\treclen, ok := direntReclen(buf)\n\t\tif !ok || reclen > uint64(len(buf)) {\n\t\t\treturn origlen, count, names\n\t\t}\n\t\trec := buf[:reclen]\n\t\tbuf = buf[reclen:]\n\t\tino, ok := direntIno(rec)\n\t\tif !ok {\n\t\t\tbreak\n\t\t}\n\t\tif ino == 0 { // File absent in directory.\n\t\t\tcontinue\n\t\t}\n\t\tconst namoff = uint64(unsafe.Offsetof(Dirent{}.Name))\n\t\tnamlen, ok := direntNamlen(rec)\n\t\tif !ok || namoff+namlen > uint64(len(rec)) {\n\t\t\tbreak\n\t\t}\n\t\tname := rec[namoff : namoff+namlen]\n\t\tfor i, c := range name {\n\t\t\tif c == 0 {\n\t\t\t\tname = name[:i]\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// Check for useless names before allocating a string.\n\t\tif string(name) == \".\" || string(name) == \"..\" {\n\t\t\tcontinue\n\t\t}\n\t\tmax--\n\t\tcount++\n\t\tnames = append(names, string(name))\n\t}\n\treturn origlen - len(buf), count, names\n}\n"
  },
  {
    "path": "gossh/sys/unix/endian_big.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build armbe || arm64be || m68k || mips || mips64 || mips64p32 || ppc || ppc64 || s390 || s390x || shbe || sparc || sparc64\n\npackage unix\n\nconst isBigEndian = true\n"
  },
  {
    "path": "gossh/sys/unix/endian_little.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n//\n//go:build 386 || amd64 || amd64p32 || alpha || arm || arm64 || loong64 || mipsle || mips64le || mips64p32le || nios2 || ppc64le || riscv || riscv64 || sh\n\npackage unix\n\nconst isBigEndian = false\n"
  },
  {
    "path": "gossh/sys/unix/env_unix.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Unix environment variables.\n\npackage unix\n\nimport \"syscall\"\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "gossh/sys/unix/epoll_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"sync\"\n)\n\n// This file simulates epoll on z/OS using poll.\n\n// Analogous to epoll_event on Linux.\n// TODO(neeilan): Pad is because the Linux kernel expects a 96-bit struct. We never pass this to the kernel; remove?\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tEPOLLERR      = 0x8\n\tEPOLLHUP      = 0x10\n\tEPOLLIN       = 0x1\n\tEPOLLMSG      = 0x400\n\tEPOLLOUT      = 0x4\n\tEPOLLPRI      = 0x2\n\tEPOLLRDBAND   = 0x80\n\tEPOLLRDNORM   = 0x40\n\tEPOLLWRBAND   = 0x200\n\tEPOLLWRNORM   = 0x100\n\tEPOLL_CTL_ADD = 0x1\n\tEPOLL_CTL_DEL = 0x2\n\tEPOLL_CTL_MOD = 0x3\n\t// The following constants are part of the epoll API, but represent\n\t// currently unsupported functionality on z/OS.\n\t// EPOLL_CLOEXEC  = 0x80000\n\t// EPOLLET        = 0x80000000\n\t// EPOLLONESHOT   = 0x40000000\n\t// EPOLLRDHUP     = 0x2000     // Typically used with edge-triggered notis\n\t// EPOLLEXCLUSIVE = 0x10000000 // Exclusive wake-up mode\n\t// EPOLLWAKEUP    = 0x20000000 // Relies on Linux's BLOCK_SUSPEND capability\n)\n\n// TODO(neeilan): We can eliminate these epToPoll / pToEpoll calls by using identical mask values for POLL/EPOLL\n// constants where possible The lower 16 bits of epoll events (uint32) can fit any system poll event (int16).\n\n// epToPollEvt converts epoll event field to poll equivalent.\n// In epoll, Events is a 32-bit field, while poll uses 16 bits.\nfunc epToPollEvt(events uint32) int16 {\n\tvar ep2p = map[uint32]int16{\n\t\tEPOLLIN:  POLLIN,\n\t\tEPOLLOUT: POLLOUT,\n\t\tEPOLLHUP: POLLHUP,\n\t\tEPOLLPRI: POLLPRI,\n\t\tEPOLLERR: POLLERR,\n\t}\n\n\tvar pollEvts int16 = 0\n\tfor epEvt, pEvt := range ep2p {\n\t\tif (events & epEvt) != 0 {\n\t\t\tpollEvts |= pEvt\n\t\t}\n\t}\n\n\treturn pollEvts\n}\n\n// pToEpollEvt converts 16 bit poll event bitfields to 32-bit epoll event fields.\nfunc pToEpollEvt(revents int16) uint32 {\n\tvar p2ep = map[int16]uint32{\n\t\tPOLLIN:  EPOLLIN,\n\t\tPOLLOUT: EPOLLOUT,\n\t\tPOLLHUP: EPOLLHUP,\n\t\tPOLLPRI: EPOLLPRI,\n\t\tPOLLERR: EPOLLERR,\n\t}\n\n\tvar epollEvts uint32 = 0\n\tfor pEvt, epEvt := range p2ep {\n\t\tif (revents & pEvt) != 0 {\n\t\t\tepollEvts |= epEvt\n\t\t}\n\t}\n\n\treturn epollEvts\n}\n\n// Per-process epoll implementation.\ntype epollImpl struct {\n\tmu       sync.Mutex\n\tepfd2ep  map[int]*eventPoll\n\tnextEpfd int\n}\n\n// eventPoll holds a set of file descriptors being watched by the process. A process can have multiple epoll instances.\n// On Linux, this is an in-kernel data structure accessed through a fd.\ntype eventPoll struct {\n\tmu  sync.Mutex\n\tfds map[int]*EpollEvent\n}\n\n// epoll impl for this process.\nvar impl epollImpl = epollImpl{\n\tepfd2ep:  make(map[int]*eventPoll),\n\tnextEpfd: 0,\n}\n\nfunc (e *epollImpl) epollcreate(size int) (epfd int, err error) {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tepfd = e.nextEpfd\n\te.nextEpfd++\n\n\te.epfd2ep[epfd] = &eventPoll{\n\t\tfds: make(map[int]*EpollEvent),\n\t}\n\treturn epfd, nil\n}\n\nfunc (e *epollImpl) epollcreate1(flag int) (fd int, err error) {\n\treturn e.epollcreate(4)\n}\n\nfunc (e *epollImpl) epollctl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\n\tep, ok := e.epfd2ep[epfd]\n\tif !ok {\n\n\t\treturn EBADF\n\t}\n\n\tswitch op {\n\tcase EPOLL_CTL_ADD:\n\t\t// TODO(neeilan): When we make epfds and fds disjoint, detect epoll\n\t\t// loops here (instances watching each other) and return ELOOP.\n\t\tif _, ok := ep.fds[fd]; ok {\n\t\t\treturn EEXIST\n\t\t}\n\t\tep.fds[fd] = event\n\tcase EPOLL_CTL_MOD:\n\t\tif _, ok := ep.fds[fd]; !ok {\n\t\t\treturn ENOENT\n\t\t}\n\t\tep.fds[fd] = event\n\tcase EPOLL_CTL_DEL:\n\t\tif _, ok := ep.fds[fd]; !ok {\n\t\t\treturn ENOENT\n\t\t}\n\t\tdelete(ep.fds, fd)\n\n\t}\n\treturn nil\n}\n\n// Must be called while holding ep.mu\nfunc (ep *eventPoll) getFds() []int {\n\tfds := make([]int, len(ep.fds))\n\tfor fd := range ep.fds {\n\t\tfds = append(fds, fd)\n\t}\n\treturn fds\n}\n\nfunc (e *epollImpl) epollwait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\te.mu.Lock() // in [rare] case of concurrent epollcreate + epollwait\n\tep, ok := e.epfd2ep[epfd]\n\n\tif !ok {\n\t\te.mu.Unlock()\n\t\treturn 0, EBADF\n\t}\n\n\tpollfds := make([]PollFd, 4)\n\tfor fd, epollevt := range ep.fds {\n\t\tpollfds = append(pollfds, PollFd{Fd: int32(fd), Events: epToPollEvt(epollevt.Events)})\n\t}\n\te.mu.Unlock()\n\n\tn, err = Poll(pollfds, msec)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\ti := 0\n\tfor _, pFd := range pollfds {\n\t\tif pFd.Revents != 0 {\n\t\t\tevents[i] = EpollEvent{Fd: pFd.Fd, Events: pToEpollEvt(pFd.Revents)}\n\t\t\ti++\n\t\t}\n\n\t\tif i == n {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn n, nil\n}\n\nfunc EpollCreate(size int) (fd int, err error) {\n\treturn impl.epollcreate(size)\n}\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\treturn impl.epollcreate1(flag)\n}\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\treturn impl.epollctl(epfd, op, fd, event)\n}\n\n// Because EpollWait mutates events, the caller is expected to coordinate\n// concurrent access if calling with the same epfd from multiple goroutines.\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\treturn impl.epollwait(epfd, events, msec)\n}\n"
  },
  {
    "path": "gossh/sys/unix/fcntl.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build dragonfly || freebsd || linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\n// fcntl64Syscall is usually SYS_FCNTL, but is overridden on 32-bit Linux\n// systems by fcntl_linux_32bit.go to be SYS_FCNTL64.\nvar fcntl64Syscall uintptr = SYS_FCNTL\n\nfunc fcntl(fd int, cmd, arg int) (int, error) {\n\tvalptr, _, errno := Syscall(fcntl64Syscall, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, errno := Syscall(fcntl64Syscall, fd, uintptr(cmd), uintptr(unsafe.Pointer(lk)))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n"
  },
  {
    "path": "gossh/sys/unix/fcntl_darwin.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(lk))))\n\treturn err\n}\n\n// FcntlFstore performs a fcntl syscall for the F_PREALLOCATE command.\nfunc FcntlFstore(fd uintptr, cmd int, fstore *Fstore_t) error {\n\t_, err := fcntl(int(fd), cmd, int(uintptr(unsafe.Pointer(fstore))))\n\treturn err\n}\n"
  },
  {
    "path": "gossh/sys/unix/fcntl_linux_32bit.go",
    "content": "// Copyright 2014 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (linux && 386) || (linux && arm) || (linux && mips) || (linux && mipsle) || (linux && ppc)\n\npackage unix\n\nfunc init() {\n\t// On 32-bit Linux systems, the fcntl syscall that matches Go's\n\t// Flock_t type is SYS_FCNTL64, not SYS_FCNTL.\n\tfcntl64Syscall = SYS_FCNTL64\n}\n"
  },
  {
    "path": "gossh/sys/unix/fdset.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\n// Set adds fd to the set fds.\nfunc (fds *FdSet) Set(fd int) {\n\tfds.Bits[fd/NFDBITS] |= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// Clear removes fd from the set fds.\nfunc (fds *FdSet) Clear(fd int) {\n\tfds.Bits[fd/NFDBITS] &^= (1 << (uintptr(fd) % NFDBITS))\n}\n\n// IsSet returns whether fd is in the set fds.\nfunc (fds *FdSet) IsSet(fd int) bool {\n\treturn fds.Bits[fd/NFDBITS]&(1<<(uintptr(fd)%NFDBITS)) != 0\n}\n\n// Zero clears the set fds.\nfunc (fds *FdSet) Zero() {\n\tfor i := range fds.Bits {\n\t\tfds.Bits[i] = 0\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/unix/fstatfs_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// This file simulates fstatfs on z/OS using fstatvfs and w_getmntent.\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\tvar stat_v Statvfs_t\n\terr = Fstatvfs(fd, &stat_v)\n\tif err == nil {\n\t\t// populate stat\n\t\tstat.Type = 0\n\t\tstat.Bsize = stat_v.Bsize\n\t\tstat.Blocks = stat_v.Blocks\n\t\tstat.Bfree = stat_v.Bfree\n\t\tstat.Bavail = stat_v.Bavail\n\t\tstat.Files = stat_v.Files\n\t\tstat.Ffree = stat_v.Ffree\n\t\tstat.Fsid = stat_v.Fsid\n\t\tstat.Namelen = stat_v.Namemax\n\t\tstat.Frsize = stat_v.Frsize\n\t\tstat.Flags = stat_v.Flag\n\t\tfor passn := 0; passn < 5; passn++ {\n\t\t\tswitch passn {\n\t\t\tcase 0:\n\t\t\t\terr = tryGetmntent64(stat)\n\t\t\t\tbreak\n\t\t\tcase 1:\n\t\t\t\terr = tryGetmntent128(stat)\n\t\t\t\tbreak\n\t\t\tcase 2:\n\t\t\t\terr = tryGetmntent256(stat)\n\t\t\t\tbreak\n\t\t\tcase 3:\n\t\t\t\terr = tryGetmntent512(stat)\n\t\t\t\tbreak\n\t\t\tcase 4:\n\t\t\t\terr = tryGetmntent1024(stat)\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tbreak\n\t\t\t}\n\t\t\t//proceed to return if: err is nil (found), err is nonnil but not ERANGE (another error occurred)\n\t\t\tif err == nil || err != nil && err != ERANGE {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n\treturn err\n}\n\nfunc tryGetmntent64(stat *Statfs_t) (err error) {\n\tvar mnt_ent_buffer struct {\n\t\theader       W_Mnth\n\t\tfilesys_info [64]W_Mntent\n\t}\n\tvar buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer))\n\tfs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = ERANGE //return ERANGE if no match is found in this batch\n\tfor i := 0; i < fs_count; i++ {\n\t\tif stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) {\n\t\t\tstat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0])\n\t\t\terr = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n\nfunc tryGetmntent128(stat *Statfs_t) (err error) {\n\tvar mnt_ent_buffer struct {\n\t\theader       W_Mnth\n\t\tfilesys_info [128]W_Mntent\n\t}\n\tvar buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer))\n\tfs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = ERANGE //return ERANGE if no match is found in this batch\n\tfor i := 0; i < fs_count; i++ {\n\t\tif stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) {\n\t\t\tstat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0])\n\t\t\terr = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n\nfunc tryGetmntent256(stat *Statfs_t) (err error) {\n\tvar mnt_ent_buffer struct {\n\t\theader       W_Mnth\n\t\tfilesys_info [256]W_Mntent\n\t}\n\tvar buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer))\n\tfs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = ERANGE //return ERANGE if no match is found in this batch\n\tfor i := 0; i < fs_count; i++ {\n\t\tif stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) {\n\t\t\tstat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0])\n\t\t\terr = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n\nfunc tryGetmntent512(stat *Statfs_t) (err error) {\n\tvar mnt_ent_buffer struct {\n\t\theader       W_Mnth\n\t\tfilesys_info [512]W_Mntent\n\t}\n\tvar buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer))\n\tfs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = ERANGE //return ERANGE if no match is found in this batch\n\tfor i := 0; i < fs_count; i++ {\n\t\tif stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) {\n\t\t\tstat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0])\n\t\t\terr = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n\nfunc tryGetmntent1024(stat *Statfs_t) (err error) {\n\tvar mnt_ent_buffer struct {\n\t\theader       W_Mnth\n\t\tfilesys_info [1024]W_Mntent\n\t}\n\tvar buffer_size int = int(unsafe.Sizeof(mnt_ent_buffer))\n\tfs_count, err := W_Getmntent((*byte)(unsafe.Pointer(&mnt_ent_buffer)), buffer_size)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = ERANGE //return ERANGE if no match is found in this batch\n\tfor i := 0; i < fs_count; i++ {\n\t\tif stat.Fsid == uint64(mnt_ent_buffer.filesys_info[i].Dev) {\n\t\t\tstat.Type = uint32(mnt_ent_buffer.filesys_info[i].Fstname[0])\n\t\t\terr = nil\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "gossh/sys/unix/gccgo.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\npackage unix\n\nimport \"syscall\"\n\n// We can't use the gc-syntax .s files for gccgo. On the plus side\n// much of the functionality can be written directly in Go.\n\nfunc realSyscallNoError(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r uintptr)\n\nfunc realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r, errno uintptr)\n\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tsyscall.Entersyscall()\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0\n}\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tsyscall.Entersyscall()\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9)\n\tsyscall.Exitsyscall()\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr) {\n\tr := realSyscallNoError(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0\n}\n\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, 0, 0, 0, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\tr, errno := realSyscall(trap, a1, a2, a3, a4, a5, a6, 0, 0, 0)\n\treturn r, 0, syscall.Errno(errno)\n}\n"
  },
  {
    "path": "gossh/sys/unix/gccgo_c.c",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && !aix && !hurd\n\n#include <errno.h>\n#include <stdint.h>\n#include <unistd.h>\n\n#define _STRINGIFY2_(x) #x\n#define _STRINGIFY_(x) _STRINGIFY2_(x)\n#define GOSYM_PREFIX _STRINGIFY_(__USER_LABEL_PREFIX__)\n\n// Call syscall from C code because the gccgo support for calling from\n// Go to C does not support varargs functions.\n\nstruct ret {\n\tuintptr_t r;\n\tuintptr_t err;\n};\n\nstruct ret gccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscall\");\n\nstruct ret\ngccgoRealSyscall(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\tstruct ret r;\n\n\terrno = 0;\n\tr.r = syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n\tr.err = errno;\n\treturn r;\n}\n\nuintptr_t gccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n  __asm__(GOSYM_PREFIX GOPKGPATH \".realSyscallNoError\");\n\nuintptr_t\ngccgoRealSyscallNoError(uintptr_t trap, uintptr_t a1, uintptr_t a2, uintptr_t a3, uintptr_t a4, uintptr_t a5, uintptr_t a6, uintptr_t a7, uintptr_t a8, uintptr_t a9)\n{\n\treturn syscall(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n}\n"
  },
  {
    "path": "gossh/sys/unix/gccgo_linux_amd64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build gccgo && linux && amd64\n\npackage unix\n\nimport \"syscall\"\n\n//extern gettimeofday\nfunc realGettimeofday(*Timeval, *byte) int32\n\nfunc gettimeofday(tv *Timeval) (err syscall.Errno) {\n\tr := realGettimeofday(tv, nil)\n\tif r < 0 {\n\t\treturn syscall.GetErrno()\n\t}\n\treturn 0\n}\n"
  },
  {
    "path": "gossh/sys/unix/ifreq_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// Helpers for dealing with ifreq since it contains a union and thus requires a\n// lot of unsafe.Pointer casts to use properly.\n\n// An Ifreq is a type-safe wrapper around the raw ifreq struct. An Ifreq\n// contains an interface name and a union of arbitrary data which can be\n// accessed using the Ifreq's methods. To create an Ifreq, use the NewIfreq\n// function.\n//\n// Use the Name method to access the stored interface name. The union data\n// fields can be get and set using the following methods:\n//   - Uint16/SetUint16: flags\n//   - Uint32/SetUint32: ifindex, metric, mtu\ntype Ifreq struct{ raw ifreq }\n\n// NewIfreq creates an Ifreq with the input network interface name after\n// validating the name does not exceed IFNAMSIZ-1 (trailing NULL required)\n// bytes.\nfunc NewIfreq(name string) (*Ifreq, error) {\n\t// Leave room for terminating NULL byte.\n\tif len(name) >= IFNAMSIZ {\n\t\treturn nil, EINVAL\n\t}\n\n\tvar ifr ifreq\n\tcopy(ifr.Ifrn[:], name)\n\n\treturn &Ifreq{raw: ifr}, nil\n}\n\n// TODO(mdlayher): get/set methods for hardware address sockaddr, char array, etc.\n\n// Name returns the interface name associated with the Ifreq.\nfunc (ifr *Ifreq) Name() string {\n\treturn ByteSliceToString(ifr.raw.Ifrn[:])\n}\n\n// According to netdevice(7), only AF_INET addresses are returned for numerous\n// sockaddr ioctls. For convenience, we expose these as Inet4Addr since the Port\n// field and other data is always empty.\n\n// Inet4Addr returns the Ifreq union data from an embedded sockaddr as a C\n// in_addr/Go []byte (4-byte IPv4 address) value. If the sockaddr family is not\n// AF_INET, an error is returned.\nfunc (ifr *Ifreq) Inet4Addr() ([]byte, error) {\n\traw := *(*RawSockaddrInet4)(unsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]))\n\tif raw.Family != AF_INET {\n\t\t// Cannot safely interpret raw.Addr bytes as an IPv4 address.\n\t\treturn nil, EINVAL\n\t}\n\n\treturn raw.Addr[:], nil\n}\n\n// SetInet4Addr sets a C in_addr/Go []byte (4-byte IPv4 address) value in an\n// embedded sockaddr within the Ifreq's union data. v must be 4 bytes in length\n// or an error will be returned.\nfunc (ifr *Ifreq) SetInet4Addr(v []byte) error {\n\tif len(v) != 4 {\n\t\treturn EINVAL\n\t}\n\n\tvar addr [4]byte\n\tcopy(addr[:], v)\n\n\tifr.clear()\n\t*(*RawSockaddrInet4)(\n\t\tunsafe.Pointer(&ifr.raw.Ifru[:SizeofSockaddrInet4][0]),\n\t) = RawSockaddrInet4{\n\t\t// Always set IP family as ioctls would require it anyway.\n\t\tFamily: AF_INET,\n\t\tAddr:   addr,\n\t}\n\n\treturn nil\n}\n\n// Uint16 returns the Ifreq union data as a C short/Go uint16 value.\nfunc (ifr *Ifreq) Uint16() uint16 {\n\treturn *(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0]))\n}\n\n// SetUint16 sets a C short/Go uint16 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint16(v uint16) {\n\tifr.clear()\n\t*(*uint16)(unsafe.Pointer(&ifr.raw.Ifru[:2][0])) = v\n}\n\n// Uint32 returns the Ifreq union data as a C int/Go uint32 value.\nfunc (ifr *Ifreq) Uint32() uint32 {\n\treturn *(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0]))\n}\n\n// SetUint32 sets a C int/Go uint32 value as the Ifreq's union data.\nfunc (ifr *Ifreq) SetUint32(v uint32) {\n\tifr.clear()\n\t*(*uint32)(unsafe.Pointer(&ifr.raw.Ifru[:4][0])) = v\n}\n\n// clear zeroes the ifreq's union field to prevent trailing garbage data from\n// being sent to the kernel if an ifreq is reused.\nfunc (ifr *Ifreq) clear() {\n\tfor i := range ifr.raw.Ifru {\n\t\tifr.raw.Ifru[i] = 0\n\t}\n}\n\n// TODO(mdlayher): export as IfreqData? For now we can provide helpers such as\n// IoctlGetEthtoolDrvinfo which use these APIs under the hood.\n\n// An ifreqData is an Ifreq which carries pointer data. To produce an ifreqData,\n// use the Ifreq.withData method.\ntype ifreqData struct {\n\tname [IFNAMSIZ]byte\n\t// A type separate from ifreq is required in order to comply with the\n\t// unsafe.Pointer rules since the \"pointer-ness\" of data would not be\n\t// preserved if it were cast into the byte array of a raw ifreq.\n\tdata unsafe.Pointer\n\t// Pad to the same size as ifreq.\n\t_ [len(ifreq{}.Ifru) - SizeofPtr]byte\n}\n\n// withData produces an ifreqData with the pointer p set for ioctls which require\n// arbitrary pointer data.\nfunc (ifr Ifreq) withData(p unsafe.Pointer) ifreqData {\n\treturn ifreqData{\n\t\tname: ifr.raw.Ifrn,\n\t\tdata: p,\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/unix/internal/mkmerge/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// The mkmerge command parses generated source files and merges common\n// consts, funcs, and types into a common source file, per GOOS.\n//\n// Usage:\n//\n//\t$ mkmerge -out MERGED FILE [FILE ...]\n//\n// Example:\n//\n//\t# Remove all common consts, funcs, and types from zerrors_linux_*.go\n//\t# and write the common code into zerrors_linux.go\n//\t$ mkmerge -out zerrors_linux.go zerrors_linux_*.go\n//\n// mkmerge performs the merge in the following steps:\n//  1. Construct the set of common code that is identical 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\"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 any, 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 any) (*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\ttext := cGrp.Text()\n\t\tif text == \"\" && len(cGrp.List) == 1 && strings.HasPrefix(cGrp.List[0].Text, \"//go:build \") {\n\t\t\t// ast.CommentGroup.Text doesn't include comment directives like \"//go:build\"\n\t\t\t// in the text. So if a comment group has empty text and a single //go:build\n\t\t\t// constraint line, make a custom codeElem. This is enough for mkmerge needs.\n\t\t\tset.add(codeElem{token.COMMENT, cGrp.List[0].Text[len(\"//\"):] + \"\\n\"})\n\t\t\tcontinue\n\t\t}\n\t\tset.add(codeElem{token.COMMENT, 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 := os.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; DO NOT EDIT.\")\n\tfmt.Fprintln(buf)\n\tfmt.Fprintf(buf, \"//go: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 = os.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": "gossh/sys/unix/ioctl_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"unsafe\"\n\n// IoctlRetInt performs an ioctl operation specified by req on a device\n// associated with opened file descriptor fd, and returns a non-negative\n// integer that is returned by the ioctl syscall.\nfunc IoctlRetInt(fd int, req uint) (int, error) {\n\tret, _, err := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc IoctlGetUint32(fd int, req uint) (uint32, error) {\n\tvar value uint32\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetRTCTime(fd int) (*RTCTime, error) {\n\tvar value RTCTime\n\terr := ioctlPtr(fd, RTC_RD_TIME, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCTime(fd int, value *RTCTime) error {\n\treturn ioctlPtr(fd, RTC_SET_TIME, unsafe.Pointer(value))\n}\n\nfunc IoctlGetRTCWkAlrm(fd int) (*RTCWkAlrm, error) {\n\tvar value RTCWkAlrm\n\terr := ioctlPtr(fd, RTC_WKALM_RD, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlSetRTCWkAlrm(fd int, value *RTCWkAlrm) error {\n\treturn ioctlPtr(fd, RTC_WKALM_SET, unsafe.Pointer(value))\n}\n\n// IoctlGetEthtoolDrvinfo fetches ethtool driver information for the network\n// device specified by ifname.\nfunc IoctlGetEthtoolDrvinfo(fd int, ifname string) (*EthtoolDrvinfo, error) {\n\tifr, err := NewIfreq(ifname)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvalue := EthtoolDrvinfo{Cmd: ETHTOOL_GDRVINFO}\n\tifrd := ifr.withData(unsafe.Pointer(&value))\n\n\terr = ioctlIfreqData(fd, SIOCETHTOOL, &ifrd)\n\treturn &value, err\n}\n\n// IoctlGetWatchdogInfo fetches information about a watchdog device from the\n// Linux watchdog API. For more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlGetWatchdogInfo(fd int) (*WatchdogInfo, error) {\n\tvar value WatchdogInfo\n\terr := ioctlPtr(fd, WDIOC_GETSUPPORT, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlWatchdogKeepalive issues a keepalive ioctl to a watchdog device. For\n// more information, see:\n// https://www.kernel.org/doc/html/latest/watchdog/watchdog-api.html.\nfunc IoctlWatchdogKeepalive(fd int) error {\n\t// arg is ignored and not a pointer, so ioctl is fine instead of ioctlPtr.\n\treturn ioctl(fd, WDIOC_KEEPALIVE, 0)\n}\n\n// IoctlFileCloneRange performs an FICLONERANGE ioctl operation to clone the\n// range of data conveyed in value to the file associated with the file\n// descriptor destFd. See the ioctl_ficlonerange(2) man page for details.\nfunc IoctlFileCloneRange(destFd int, value *FileCloneRange) error {\n\treturn ioctlPtr(destFd, FICLONERANGE, unsafe.Pointer(value))\n}\n\n// IoctlFileClone performs an FICLONE ioctl operation to clone the entire file\n// associated with the file description srcFd to the file associated with the\n// file descriptor destFd. See the ioctl_ficlone(2) man page for details.\nfunc IoctlFileClone(destFd, srcFd int) error {\n\treturn ioctl(destFd, FICLONE, uintptr(srcFd))\n}\n\ntype FileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tReserved1  uint16\n\tReserved2  uint32\n\tInfo       []FileDedupeRangeInfo\n}\n\ntype FileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\n// IoctlFileDedupeRange performs an FIDEDUPERANGE ioctl operation to share the\n// range of data conveyed in value from the file associated with the file\n// descriptor srcFd to the value.Info destinations. See the\n// ioctl_fideduperange(2) man page for details.\nfunc IoctlFileDedupeRange(srcFd int, value *FileDedupeRange) error {\n\tbuf := make([]byte, SizeofRawFileDedupeRange+\n\t\tlen(value.Info)*SizeofRawFileDedupeRangeInfo)\n\trawrange := (*RawFileDedupeRange)(unsafe.Pointer(&buf[0]))\n\trawrange.Src_offset = value.Src_offset\n\trawrange.Src_length = value.Src_length\n\trawrange.Dest_count = uint16(len(value.Info))\n\trawrange.Reserved1 = value.Reserved1\n\trawrange.Reserved2 = value.Reserved2\n\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\trawinfo.Dest_fd = value.Info[i].Dest_fd\n\t\trawinfo.Dest_offset = value.Info[i].Dest_offset\n\t\trawinfo.Bytes_deduped = value.Info[i].Bytes_deduped\n\t\trawinfo.Status = value.Info[i].Status\n\t\trawinfo.Reserved = value.Info[i].Reserved\n\t}\n\n\terr := ioctlPtr(srcFd, FIDEDUPERANGE, unsafe.Pointer(&buf[0]))\n\n\t// Output\n\tfor i := range value.Info {\n\t\trawinfo := (*RawFileDedupeRangeInfo)(unsafe.Pointer(\n\t\t\tuintptr(unsafe.Pointer(&buf[0])) + uintptr(SizeofRawFileDedupeRange) +\n\t\t\t\tuintptr(i*SizeofRawFileDedupeRangeInfo)))\n\t\tvalue.Info[i].Dest_fd = rawinfo.Dest_fd\n\t\tvalue.Info[i].Dest_offset = rawinfo.Dest_offset\n\t\tvalue.Info[i].Bytes_deduped = rawinfo.Bytes_deduped\n\t\tvalue.Info[i].Status = rawinfo.Status\n\t\tvalue.Info[i].Reserved = rawinfo.Reserved\n\t}\n\n\treturn err\n}\n\nfunc IoctlHIDGetDesc(fd int, value *HIDRawReportDescriptor) error {\n\treturn ioctlPtr(fd, HIDIOCGRDESC, unsafe.Pointer(value))\n}\n\nfunc IoctlHIDGetRawInfo(fd int) (*HIDRawDevInfo, error) {\n\tvar value HIDRawDevInfo\n\terr := ioctlPtr(fd, HIDIOCGRAWINFO, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlHIDGetRawName(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWNAME_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWNAME, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawPhys(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWPHYS_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWPHYS, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\nfunc IoctlHIDGetRawUniq(fd int) (string, error) {\n\tvar value [_HIDIOCGRAWUNIQ_LEN]byte\n\terr := ioctlPtr(fd, _HIDIOCGRAWUNIQ, unsafe.Pointer(&value[0]))\n\treturn ByteSliceToString(value[:]), err\n}\n\n// IoctlIfreq performs an ioctl using an Ifreq structure for input and/or\n// output. See the netdevice(7) man page for details.\nfunc IoctlIfreq(fd int, req uint, value *Ifreq) error {\n\t// It is possible we will add more fields to *Ifreq itself later to prevent\n\t// misuse, so pass the raw *ifreq directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&value.raw))\n}\n\n// TODO(mdlayher): export if and when IfreqData is exported.\n\n// ioctlIfreqData performs an ioctl using an ifreqData structure for input\n// and/or output. See the netdevice(7) man page for details.\nfunc ioctlIfreqData(fd int, req uint, value *ifreqData) error {\n\t// The memory layout of IfreqData (type-safe) and ifreq (not type-safe) are\n\t// identical so pass *IfreqData directly.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlKCMClone attaches a new file descriptor to a multiplexor by cloning an\n// existing KCM socket, returning a structure containing the file descriptor of\n// the new socket.\nfunc IoctlKCMClone(fd int) (*KCMClone, error) {\n\tvar info KCMClone\n\tif err := ioctlPtr(fd, SIOCKCMCLONE, unsafe.Pointer(&info)); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &info, nil\n}\n\n// IoctlKCMAttach attaches a TCP socket and associated BPF program file\n// descriptor to a multiplexor.\nfunc IoctlKCMAttach(fd int, info KCMAttach) error {\n\treturn ioctlPtr(fd, SIOCKCMATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlKCMUnattach unattaches a TCP socket file descriptor from a multiplexor.\nfunc IoctlKCMUnattach(fd int, info KCMUnattach) error {\n\treturn ioctlPtr(fd, SIOCKCMUNATTACH, unsafe.Pointer(&info))\n}\n\n// IoctlLoopGetStatus64 gets the status of the loop device associated with the\n// file descriptor fd using the LOOP_GET_STATUS64 operation.\nfunc IoctlLoopGetStatus64(fd int) (*LoopInfo64, error) {\n\tvar value LoopInfo64\n\tif err := ioctlPtr(fd, LOOP_GET_STATUS64, unsafe.Pointer(&value)); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &value, nil\n}\n\n// IoctlLoopSetStatus64 sets the status of the loop device associated with the\n// file descriptor fd using the LOOP_SET_STATUS64 operation.\nfunc IoctlLoopSetStatus64(fd int, value *LoopInfo64) error {\n\treturn ioctlPtr(fd, LOOP_SET_STATUS64, unsafe.Pointer(value))\n}\n\n// IoctlLoopConfigure configures all loop device parameters in a single step\nfunc IoctlLoopConfigure(fd int, value *LoopConfig) error {\n\treturn ioctlPtr(fd, LOOP_CONFIGURE, unsafe.Pointer(value))\n}\n"
  },
  {
    "path": "gossh/sys/unix/ioctl_signed.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || solaris\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req int, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "gossh/sys/unix/ioctl_unsigned.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || hurd || linux || netbsd || openbsd\n\npackage unix\n\nimport (\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// IoctlSetPointerInt performs an ioctl operation which sets an\n// integer value on fd, using the specified request number. The ioctl\n// argument is called with a pointer to the integer value, rather than\n// passing the integer value directly.\nfunc IoctlSetPointerInt(fd int, req uint, value int) error {\n\tv := int32(value)\n\treturn ioctlPtr(fd, req, unsafe.Pointer(&v))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req uint, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value will usually be TCSETA or TIOCSETA.\nfunc IoctlSetTermios(fd int, req uint, value *Termios) error {\n\t// TODO: if we get the chance, remove the req parameter.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req uint) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req uint) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc IoctlGetTermios(fd int, req uint) (*Termios, error) {\n\tvar value Termios\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n"
  },
  {
    "path": "gossh/sys/unix/ioctl_zos.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\n// ioctl itself should not be exposed directly, but additional get/set\n// functions for specific types are permissible.\n\n// IoctlSetInt performs an ioctl operation which sets an integer value\n// on fd, using the specified request number.\nfunc IoctlSetInt(fd int, req int, value int) error {\n\treturn ioctl(fd, req, uintptr(value))\n}\n\n// IoctlSetWinsize performs an ioctl on fd with a *Winsize argument.\n//\n// To change fd's window size, the req argument should be TIOCSWINSZ.\nfunc IoctlSetWinsize(fd int, req int, value *Winsize) error {\n\t// TODO: if we get the chance, remove the req parameter and\n\t// hardcode TIOCSWINSZ.\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\n// IoctlSetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCSETS, TCSETSW, or TCSETSF\nfunc IoctlSetTermios(fd int, req int, value *Termios) error {\n\tif (req != TCSETS) && (req != TCSETSW) && (req != TCSETSF) {\n\t\treturn ENOSYS\n\t}\n\terr := Tcsetattr(fd, int(req), value)\n\truntime.KeepAlive(value)\n\treturn err\n}\n\n// IoctlGetInt performs an ioctl operation which gets an integer value\n// from fd, using the specified request number.\n//\n// A few ioctl requests use the return value as an output parameter;\n// for those, IoctlRetInt should be used instead of this function.\nfunc IoctlGetInt(fd int, req int) (int, error) {\n\tvar value int\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn value, err\n}\n\nfunc IoctlGetWinsize(fd int, req int) (*Winsize, error) {\n\tvar value Winsize\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n// IoctlGetTermios performs an ioctl on fd with a *Termios.\n//\n// The req value is expected to be TCGETS\nfunc IoctlGetTermios(fd int, req int) (*Termios, error) {\n\tvar value Termios\n\tif req != TCGETS {\n\t\treturn &value, ENOSYS\n\t}\n\terr := Tcgetattr(fd, &value)\n\treturn &value, err\n}\n"
  },
  {
    "path": "gossh/sys/unix/linux/Dockerfile",
    "content": "FROM ubuntu:20.04\n\n# Disable interactive prompts on package installation\nENV DEBIAN_FRONTEND noninteractive\n\n# Dependencies to get the git sources and go binaries\nRUN apt-get update && apt-get install -y  --no-install-recommends \\\n        ca-certificates \\\n        curl \\\n        git \\\n        rsync \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/*\n\n# Get the git sources. If not cached, this takes O(5 minutes).\nWORKDIR /git\nRUN git config --global advice.detachedHead false\n# Linux Kernel: Released 07 January 2024\nRUN git clone --branch v6.7 --depth 1 https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux\n# GNU C library: Released 1 Feb 2023\nRUN git clone --branch release/2.37/master --depth 1 https://sourceware.org/git/glibc.git\n\n# Get Go\nENV GOLANG_VERSION 1.21.0\nENV GOLANG_DOWNLOAD_URL https://golang.org/dl/go$GOLANG_VERSION.linux-amd64.tar.gz\nENV GOLANG_DOWNLOAD_SHA256 d0398903a16ba2232b389fb31032ddf57cac34efda306a0eebac34f0965a0742\n\nRUN curl -fsSL \"$GOLANG_DOWNLOAD_URL\" -o golang.tar.gz \\\n    && echo \"$GOLANG_DOWNLOAD_SHA256  golang.tar.gz\" | sha256sum -c - \\\n    && tar -C /usr/local -xzf golang.tar.gz \\\n    && rm golang.tar.gz\n\nENV PATH /usr/local/go/bin:$PATH\n\n# Linux and Glibc build dependencies and emulator\nRUN apt-get update && apt-get install -y  --no-install-recommends \\\n        bison gawk make python3 \\\n        gcc gcc-multilib \\\n        gettext texinfo \\\n        qemu-user \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/*\n# Cross compilers (install recommended packages to get cross libc-dev)\nRUN apt-get update && apt-get install -y \\\n        gcc-aarch64-linux-gnu       gcc-arm-linux-gnueabi     \\\n        gcc-mips-linux-gnu          gcc-mips64-linux-gnuabi64 \\\n        gcc-mips64el-linux-gnuabi64 gcc-mipsel-linux-gnu      \\\n        gcc-powerpc-linux-gnu       gcc-powerpc64-linux-gnu   \\\n        gcc-powerpc64le-linux-gnu   gcc-riscv64-linux-gnu     \\\n        gcc-s390x-linux-gnu         gcc-sparc64-linux-gnu     \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/*\n\n# Only for loong64, getting tools of qemu-user and gcc-cross-compiler\nENV LOONG64_BASE_URL https://github.com/loongson/build-tools/releases/download/2023.08.08\nENV LOONG64_GCC  CLFS-loongarch64-8.1-x86_64-cross-tools-gcc-glibc.tar.xz\nENV LOONG64_QEMU qemu-loongarch64\nENV LOONG64_GCC_DOWNLOAD_URL  $LOONG64_BASE_URL/$LOONG64_GCC\nENV LOONG64_QEMU_DOWNLOAD_URL $LOONG64_BASE_URL/$LOONG64_QEMU\n\nRUN apt-get update && apt-get install xz-utils -y && mkdir /loong64 && cd /loong64 \\\n    && curl -fsSL \"$LOONG64_QEMU_DOWNLOAD_URL\" -o /usr/bin/\"$LOONG64_QEMU\" \\\n    && chmod +x /usr/bin/\"$LOONG64_QEMU\" \\\n    && curl -fsSL \"$LOONG64_GCC_DOWNLOAD_URL\" -o \"$LOONG64_GCC\" \\\n    && tar xf \"$LOONG64_GCC\" -C /usr/local/ \\\n    && ln -s /usr/local/cross-tools/bin/loongarch64-unknown-linux-gnu-gcc /usr/bin/loongarch64-linux-gnu-gcc \\\n    && rm -rf /loong64\n\n# Let the scripts know they are in the docker environment\nENV GOLANG_SYS_BUILD docker\nWORKDIR /build/unix\nENTRYPOINT [\"go\", \"run\", \"linux/mkall.go\", \"/git/linux\", \"/git/glibc\"]\n"
  },
  {
    "path": "gossh/sys/unix/linux/mkall.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// linux/mkall.go - Generates all Linux zsysnum, zsyscall, zerror, and ztype\n// files for all Linux architectures supported by the go compiler. See\n// README.md for more information about the build system.\n\n// To run it you must have a git checkout of the Linux kernel and glibc. Once\n// the appropriate sources are ready, the program is run as:\n//     go run linux/mkall.go <linux_dir> <glibc_dir>\n\n//go:build ignore\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"debug/elf\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"go/build/constraint\"\n\t\"io\"\n\t\"os\"\n\t\"os/exec\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"strings\"\n\t\"sync\"\n\t\"unicode\"\n)\n\n// These will be paths to the appropriate source directories.\nvar LinuxDir string\nvar GlibcDir string\n\nconst TempDir = \"/tmp\"\n\nconst GOOS = \"linux\"       // Only for Linux targets\nconst BuildArch = \"amd64\"  // Must be built on this architecture\nconst MinKernel = \"2.6.23\" // https://golang.org/doc/install#requirements\n\ntype target struct {\n\tGoArch     string // Architecture name according to Go\n\tLinuxArch  string // Architecture name according to the Linux Kernel\n\tGNUArch    string // Architecture name according to GNU tools (https://wiki.debian.org/Multiarch/Tuples)\n\tBigEndian  bool   // Default Little Endian\n\tSignedChar bool   // Is -fsigned-char needed (default no)\n\tBits       int\n\tenv        []string\n\tstderrBuf  bytes.Buffer\n\tcompiler   string\n}\n\n// List of all Linux targets supported by the go compiler. Currently, sparc64 is\n// not fully supported, but there is enough support already to generate Go type\n// and error definitions.\nvar targets = []target{\n\t{\n\t\tGoArch:    \"386\",\n\t\tLinuxArch: \"x86\",\n\t\tGNUArch:   \"i686-linux-gnu\", // Note \"i686\" not \"i386\"\n\t\tBits:      32,\n\t},\n\t{\n\t\tGoArch:    \"amd64\",\n\t\tLinuxArch: \"x86\",\n\t\tGNUArch:   \"x86_64-linux-gnu\",\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:     \"arm64\",\n\t\tLinuxArch:  \"arm64\",\n\t\tGNUArch:    \"aarch64-linux-gnu\",\n\t\tSignedChar: true,\n\t\tBits:       64,\n\t},\n\t{\n\t\tGoArch:    \"arm\",\n\t\tLinuxArch: \"arm\",\n\t\tGNUArch:   \"arm-linux-gnueabi\",\n\t\tBits:      32,\n\t},\n\t{\n\t\tGoArch:    \"loong64\",\n\t\tLinuxArch: \"loongarch\",\n\t\tGNUArch:   \"loongarch64-linux-gnu\",\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:    \"mips\",\n\t\tLinuxArch: \"mips\",\n\t\tGNUArch:   \"mips-linux-gnu\",\n\t\tBigEndian: true,\n\t\tBits:      32,\n\t},\n\t{\n\t\tGoArch:    \"mipsle\",\n\t\tLinuxArch: \"mips\",\n\t\tGNUArch:   \"mipsel-linux-gnu\",\n\t\tBits:      32,\n\t},\n\t{\n\t\tGoArch:    \"mips64\",\n\t\tLinuxArch: \"mips\",\n\t\tGNUArch:   \"mips64-linux-gnuabi64\",\n\t\tBigEndian: true,\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:    \"mips64le\",\n\t\tLinuxArch: \"mips\",\n\t\tGNUArch:   \"mips64el-linux-gnuabi64\",\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:    \"ppc\",\n\t\tLinuxArch: \"powerpc\",\n\t\tGNUArch:   \"powerpc-linux-gnu\",\n\t\tBigEndian: true,\n\t\tBits:      32,\n\t},\n\t{\n\t\tGoArch:    \"ppc64\",\n\t\tLinuxArch: \"powerpc\",\n\t\tGNUArch:   \"powerpc64-linux-gnu\",\n\t\tBigEndian: true,\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:    \"ppc64le\",\n\t\tLinuxArch: \"powerpc\",\n\t\tGNUArch:   \"powerpc64le-linux-gnu\",\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:    \"riscv64\",\n\t\tLinuxArch: \"riscv\",\n\t\tGNUArch:   \"riscv64-linux-gnu\",\n\t\tBits:      64,\n\t},\n\t{\n\t\tGoArch:     \"s390x\",\n\t\tLinuxArch:  \"s390\",\n\t\tGNUArch:    \"s390x-linux-gnu\",\n\t\tBigEndian:  true,\n\t\tSignedChar: true,\n\t\tBits:       64,\n\t},\n\t{\n\t\tGoArch:    \"sparc64\",\n\t\tLinuxArch: \"sparc\",\n\t\tGNUArch:   \"sparc64-linux-gnu\",\n\t\tBigEndian: true,\n\t\tBits:      64,\n\t},\n}\n\n// ptracePairs is a list of pairs of targets that can, in some cases,\n// run each other's binaries. 'archName' is the combined name of 'a1'\n// and 'a2', which is used in the file name. Generally we use an 'x'\n// suffix in the file name to indicate that the file works for both\n// big-endian and little-endian, here we use 'nn' to indicate that this\n// file is suitable for 32-bit and 64-bit.\nvar ptracePairs = []struct{ a1, a2, archName string }{\n\t{\"386\", \"amd64\", \"x86\"},\n\t{\"arm\", \"arm64\", \"armnn\"},\n\t{\"mips\", \"mips64\", \"mipsnn\"},\n\t{\"mipsle\", \"mips64le\", \"mipsnnle\"},\n}\n\nfunc main() {\n\tif runtime.GOOS != GOOS || runtime.GOARCH != BuildArch {\n\t\tfmt.Printf(\"Build system has GOOS_GOARCH = %s_%s, need %s_%s\\n\",\n\t\t\truntime.GOOS, runtime.GOARCH, GOOS, BuildArch)\n\t\treturn\n\t}\n\n\t// Check that we are using the new build system if we should\n\tif os.Getenv(\"GOLANG_SYS_BUILD\") != \"docker\" {\n\t\tfmt.Println(\"In the new build system, mkall.go should not be called directly.\")\n\t\tfmt.Println(\"See README.md\")\n\t\treturn\n\t}\n\n\t// Parse the command line options\n\tif len(os.Args) != 3 {\n\t\tfmt.Println(\"USAGE: go run linux/mkall.go <linux_dir> <glibc_dir>\")\n\t\treturn\n\t}\n\tLinuxDir = os.Args[1]\n\tGlibcDir = os.Args[2]\n\n\twg := sync.WaitGroup{}\n\tfor _, t := range targets {\n\t\tfmt.Printf(\"arch %s: GENERATING\\n\", t.GoArch)\n\t\tif err := t.setupEnvironment(); err != nil {\n\t\t\tfmt.Printf(\"arch %s: could not setup environment: %v\\n\", t.GoArch, err)\n\t\t\tbreak\n\t\t}\n\t\tincludeDir := filepath.Join(TempDir, t.GoArch, \"include\")\n\t\t// Make the include directory and fill it with headers\n\t\tif err := os.MkdirAll(includeDir, os.ModePerm); err != nil {\n\t\t\tfmt.Printf(\"arch %s: could not make directory: %v\\n\", t.GoArch, err)\n\t\t\tbreak\n\t\t}\n\t\t// During header generation \"/git/linux/scripts/basic/fixdep\" is created by \"basic/Makefile\" for each\n\t\t// instance of \"make headers_install\". This leads to a \"text file is busy\" error from any running\n\t\t// \"make headers_install\" after the first one's target. Workaround is to serialize header generation\n\t\tif err := t.makeHeaders(); err != nil {\n\t\t\tfmt.Printf(\"arch %s: could not make header files: %v\\n\", t.GoArch, err)\n\t\t\tbreak\n\t\t}\n\t\twg.Add(1)\n\t\tgo func(t target) {\n\t\t\tdefer wg.Done()\n\t\t\tfmt.Printf(\"arch %s: header files generated\\n\", t.GoArch)\n\t\t\tif err := t.generateFiles(); err != nil {\n\t\t\t\tfmt.Printf(\"%v\\n***** FAILURE:    %s *****\\n\\n\", err, t.GoArch)\n\t\t\t} else {\n\t\t\t\tfmt.Printf(\"arch %s: SUCCESS\\n\", t.GoArch)\n\t\t\t}\n\t\t}(t)\n\t}\n\twg.Wait()\n\n\tfmt.Printf(\"----- GENERATING: merging generated files -----\\n\")\n\tif err := mergeFiles(); err != nil {\n\t\tfmt.Printf(\"%v\\n***** FAILURE:    merging generated files *****\\n\\n\", err)\n\t} else {\n\t\tfmt.Printf(\"----- SUCCESS:    merging generated files -----\\n\\n\")\n\t}\n\n\tfmt.Printf(\"----- GENERATING ptrace pairs -----\\n\")\n\tok := true\n\tfor _, p := range ptracePairs {\n\t\tif err := generatePtracePair(p.a1, p.a2, p.archName); err != nil {\n\t\t\tfmt.Printf(\"%v\\n***** FAILURE: %s/%s *****\\n\\n\", err, p.a1, p.a2)\n\t\t\tok = false\n\t\t}\n\t}\n\t// generate functions PtraceGetRegSetArm64 and PtraceSetRegSetArm64.\n\tif err := generatePtraceRegSet(\"arm64\"); err != nil {\n\t\tfmt.Printf(\"%v\\n***** FAILURE: generatePtraceRegSet(%q) *****\\n\\n\", err, \"arm64\")\n\t\tok = false\n\t}\n\tif ok {\n\t\tfmt.Printf(\"----- SUCCESS ptrace pairs    -----\\n\\n\")\n\t}\n}\n\nfunc (t *target) printAndResetBuilder() {\n\tif t.stderrBuf.Len() > 0 {\n\t\tfor _, l := range bytes.Split(t.stderrBuf.Bytes(), []byte{'\\n'}) {\n\t\t\tfmt.Printf(\"arch %s: stderr: %s\\n\", t.GoArch, l)\n\t\t}\n\t\tt.stderrBuf.Reset()\n\t}\n}\n\n// Makes an exec.Cmd with Stderr attached to the target string Builder, and target environment\nfunc (t *target) makeCommand(name string, args ...string) *exec.Cmd {\n\tcmd := exec.Command(name, args...)\n\tcmd.Env = t.env\n\tcmd.Stderr = &t.stderrBuf\n\treturn cmd\n}\n\n// Set GOARCH for target and build environments.\nfunc (t *target) setTargetBuildArch(cmd *exec.Cmd) {\n\t// Set GOARCH_TARGET so command knows what GOARCH is..\n\tvar env []string\n\tenv = append(env, t.env...)\n\tcmd.Env = append(env, \"GOARCH_TARGET=\"+t.GoArch)\n\t// Set GOARCH to host arch for command, so it can run natively.\n\tfor i, s := range cmd.Env {\n\t\tif strings.HasPrefix(s, \"GOARCH=\") {\n\t\t\tcmd.Env[i] = \"GOARCH=\" + BuildArch\n\t\t}\n\t}\n}\n\n// Runs the command, pipes output to a formatter, pipes that to an output file.\nfunc (t *target) commandFormatOutput(formatter string, outputFile string,\n\tname string, args ...string) (err error) {\n\tmainCmd := t.makeCommand(name, args...)\n\tif name == \"mksyscall\" {\n\t\targs = append([]string{\"run\", \"mksyscall.go\"}, args...)\n\t\tmainCmd = t.makeCommand(\"go\", args...)\n\t\tt.setTargetBuildArch(mainCmd)\n\t} else if name == \"mksysnum\" {\n\t\targs = append([]string{\"run\", \"linux/mksysnum.go\"}, args...)\n\t\tmainCmd = t.makeCommand(\"go\", args...)\n\t\tt.setTargetBuildArch(mainCmd)\n\t}\n\n\tfmtCmd := t.makeCommand(formatter)\n\tif formatter == \"mkpost\" {\n\t\tfmtCmd = t.makeCommand(\"go\", \"run\", \"mkpost.go\")\n\t\tt.setTargetBuildArch(fmtCmd)\n\t} else if formatter == \"gofmt2\" {\n\t\tfmtCmd = t.makeCommand(\"gofmt\")\n\t\tmainCmd.Dir = filepath.Join(TempDir, t.GoArch, \"mkerrors\")\n\t\tif err = os.MkdirAll(mainCmd.Dir, os.ModePerm); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tdefer t.printAndResetBuilder()\n\n\t// mainCmd | fmtCmd > outputFile\n\tif fmtCmd.Stdin, err = mainCmd.StdoutPipe(); err != nil {\n\t\treturn\n\t}\n\tif fmtCmd.Stdout, err = os.Create(outputFile); err != nil {\n\t\treturn\n\t}\n\n\t// Make sure the formatter eventually closes\n\tif err = fmtCmd.Start(); err != nil {\n\t\treturn\n\t}\n\tdefer func() {\n\t\tfmtErr := fmtCmd.Wait()\n\t\tif err == nil {\n\t\t\terr = fmtErr\n\t\t}\n\t}()\n\n\treturn mainCmd.Run()\n}\n\nfunc (t *target) setupEnvironment() error {\n\t// Setup environment variables\n\tt.env = append(os.Environ(), fmt.Sprintf(\"%s=%s\", \"GOOS\", GOOS))\n\tt.env = append(t.env, fmt.Sprintf(\"%s=%s\", \"GOARCH\", t.GoArch))\n\n\t// Get appropriate compiler and emulator (unless on x86)\n\tif t.LinuxArch != \"x86\" {\n\t\t// Check/Setup cross compiler\n\t\tt.compiler = t.GNUArch + \"-gcc\"\n\t\tif _, err := exec.LookPath(t.compiler); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tt.env = append(t.env, fmt.Sprintf(\"%s=%s\", \"CC\", t.compiler))\n\n\t\t// Check/Setup emulator (usually first component of GNUArch)\n\t\tqemuArchName := t.GNUArch[:strings.Index(t.GNUArch, \"-\")]\n\t\tif t.LinuxArch == \"powerpc\" {\n\t\t\tqemuArchName = t.GoArch\n\t\t}\n\t\t// Fake uname for QEMU to allow running on Host kernel version < 4.15\n\t\tif t.LinuxArch == \"riscv\" {\n\t\t\tt.env = append(t.env, fmt.Sprintf(\"%s=%s\", \"QEMU_UNAME\", \"4.15\"))\n\t\t}\n\t\tt.env = append(t.env, fmt.Sprintf(\"%s=%s\", \"GORUN\", \"qemu-\"+qemuArchName))\n\t} else {\n\t\tt.compiler = \"gcc\"\n\t\tt.env = append(t.env, fmt.Sprintf(\"%s=%s\", \"CC\", \"gcc\"))\n\t}\n\treturn nil\n}\n\n// Generates all the files for a Linux target\nfunc (t *target) generateFiles() error {\n\t// Make each of the four files\n\tif err := t.makeZSysnumFile(); err != nil {\n\t\treturn fmt.Errorf(\"could not make zsysnum file: %v\", err)\n\t}\n\tfmt.Printf(\"arch %s: zsysnum file generated\\n\", t.GoArch)\n\n\tif err := t.makeZSyscallFile(); err != nil {\n\t\treturn fmt.Errorf(\"could not make zsyscall file: %v\", err)\n\t}\n\tfmt.Printf(\"arch %s: zsyscall file generated\\n\", t.GoArch)\n\n\tif err := t.makeZTypesFile(); err != nil {\n\t\treturn fmt.Errorf(\"could not make ztypes file: %v\", err)\n\t}\n\tfmt.Printf(\"arch %s: ztypes file generated\\n\", t.GoArch)\n\n\tif err := t.makeZErrorsFile(); err != nil {\n\t\treturn fmt.Errorf(\"could not make zerrors file: %v\", err)\n\t}\n\tfmt.Printf(\"arch %s: zerrors file generated\\n\", t.GoArch)\n\n\treturn nil\n}\n\n// Create the Linux, glibc and ABI (C compiler convention) headers in the include directory.\nfunc (t *target) makeHeaders() error {\n\tdefer t.printAndResetBuilder()\n\n\t// Make the Linux headers we need for this architecture\n\tlinuxMake := t.makeCommand(\"make\", \"headers_install\", \"ARCH=\"+t.LinuxArch, \"INSTALL_HDR_PATH=\"+filepath.Join(TempDir, t.GoArch))\n\tlinuxMake.Dir = LinuxDir\n\tif err := linuxMake.Run(); err != nil {\n\t\treturn err\n\t}\n\n\tbuildDir := filepath.Join(TempDir, t.GoArch, \"build\")\n\t// A Temporary build directory for glibc\n\tif err := os.MkdirAll(buildDir, os.ModePerm); err != nil {\n\t\treturn err\n\t}\n\tdefer os.RemoveAll(buildDir)\n\n\t// Make the glibc headers we need for this architecture\n\tconfScript := filepath.Join(GlibcDir, \"configure\")\n\tglibcArgs := []string{\"--prefix=\" + filepath.Join(TempDir, t.GoArch), \"--host=\" + t.GNUArch}\n\tif t.LinuxArch == \"loongarch\" {\n\t\t// The minimum version requirement of the Loongarch for the kernel in glibc\n\t\t// is 5.19, if --enable-kernel is less than 5.19, glibc handles errors\n\t\tglibcArgs = append(glibcArgs, \"--enable-kernel=5.19.0\")\n\t} else {\n\t\tglibcArgs = append(glibcArgs, \"--enable-kernel=\"+MinKernel)\n\t}\n\tglibcConf := t.makeCommand(confScript, glibcArgs...)\n\n\tglibcConf.Dir = buildDir\n\tif err := glibcConf.Run(); err != nil {\n\t\treturn err\n\t}\n\tglibcMake := t.makeCommand(\"make\", \"install-headers\")\n\tglibcMake.Dir = buildDir\n\tif err := glibcMake.Run(); err != nil {\n\t\treturn err\n\t}\n\t// We only need an empty stubs file\n\tstubsFile := filepath.Join(TempDir, t.GoArch, \"include\", \"gnu\", \"stubs.h\")\n\tif file, err := os.Create(stubsFile); err != nil {\n\t\treturn err\n\t} else {\n\t\tfile.Close()\n\t}\n\n\t// ABI headers will specify C compiler behavior for the target platform.\n\treturn t.makeABIHeaders()\n}\n\n// makeABIHeaders generates C header files based on the platform's calling convention.\n// While many platforms have formal Application Binary Interfaces, in practice, whatever the\n// dominant C compilers generate is the de-facto calling convention.\n//\n// We generate C headers instead of a Go file, so as to enable references to the ABI from Cgo.\nfunc (t *target) makeABIHeaders() (err error) {\n\tabiDir := filepath.Join(TempDir, t.GoArch, \"include\", \"abi\")\n\tif err = os.Mkdir(abiDir, os.ModePerm); err != nil {\n\t\treturn err\n\t}\n\n\tif t.compiler == \"\" {\n\t\treturn errors.New(\"CC (compiler) env var not set\")\n\t}\n\n\t// Build a sacrificial ELF file, to mine for C compiler behavior.\n\tbinPath := filepath.Join(TempDir, t.GoArch, \"tmp_abi.o\")\n\tbin, err := t.buildELF(t.compiler, cCode, binPath)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"cannot build ELF to analyze: %v\", err)\n\t}\n\tdefer bin.Close()\n\tdefer os.Remove(binPath)\n\n\t// Right now, we put everything in abi.h, but we may change this later.\n\tabiFile, err := os.Create(filepath.Join(abiDir, \"abi.h\"))\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer func() {\n\t\tif cerr := abiFile.Close(); cerr != nil && err == nil {\n\t\t\terr = cerr\n\t\t}\n\t}()\n\n\tif err = t.writeBitFieldMasks(bin, abiFile); err != nil {\n\t\treturn fmt.Errorf(\"cannot write bitfield masks: %v\", err)\n\t}\n\n\treturn nil\n}\n\nfunc (t *target) buildELF(cc, src, path string) (*elf.File, error) {\n\t// Compile the cCode source using the set compiler - we will need its .data section.\n\t// Do not link the binary, so that we can find .data section offsets from the symbol values.\n\tccCmd := t.makeCommand(cc, \"-o\", path, \"-gdwarf\", \"-x\", \"c\", \"-c\", \"-\")\n\tccCmd.Stdin = strings.NewReader(src)\n\tccCmd.Stdout = os.Stdout\n\tdefer t.printAndResetBuilder()\n\tif err := ccCmd.Run(); err != nil {\n\t\treturn nil, fmt.Errorf(\"compiler error: %v\", err)\n\t}\n\n\tbin, err := elf.Open(path)\n\tif err != nil {\n\t\treturn nil, fmt.Errorf(\"cannot read ELF file %s: %v\", path, err)\n\t}\n\n\treturn bin, nil\n}\n\nfunc (t *target) writeBitFieldMasks(bin *elf.File, out io.Writer) error {\n\tsymbols, err := bin.Symbols()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"getting ELF symbols: %v\", err)\n\t}\n\tvar masksSym *elf.Symbol\n\n\tfor _, sym := range symbols {\n\t\tif sym.Name == \"masks\" {\n\t\t\tmasksSym = &sym\n\t\t}\n\t}\n\n\tif masksSym == nil {\n\t\treturn errors.New(\"could not find the 'masks' symbol in ELF symtab\")\n\t}\n\n\tdataSection := bin.Section(\".data\")\n\tif dataSection == nil {\n\t\treturn errors.New(\"ELF file has no .data section\")\n\t}\n\n\tdata, err := dataSection.Data()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"could not read .data section: %v\\n\", err)\n\t}\n\n\tvar bo binary.ByteOrder\n\tif t.BigEndian {\n\t\tbo = binary.BigEndian\n\t} else {\n\t\tbo = binary.LittleEndian\n\t}\n\n\t// 64 bit masks of type uint64 are stored in the data section starting at masks.Value.\n\t// Here we are running on AMD64, but these values may be big endian or little endian,\n\t// depending on target architecture.\n\tfor i := uint64(0); i < 64; i++ {\n\t\toff := masksSym.Value + i*8\n\t\t// Define each mask in native by order, so as to match target endian.\n\t\tfmt.Fprintf(out, \"#define BITFIELD_MASK_%d %dULL\\n\", i, bo.Uint64(data[off:off+8]))\n\t}\n\n\treturn nil\n}\n\n// makes the zsysnum_linux_$GOARCH.go file\nfunc (t *target) makeZSysnumFile() error {\n\tzsysnumFile := fmt.Sprintf(\"zsysnum_linux_%s.go\", t.GoArch)\n\tunistdFile := filepath.Join(TempDir, t.GoArch, \"include\", \"asm\", \"unistd.h\")\n\n\targs := append(t.cFlags(), unistdFile)\n\treturn t.commandFormatOutput(\"gofmt\", zsysnumFile, \"mksysnum\", args...)\n}\n\n// makes the zsyscall_linux_$GOARCH.go file\nfunc (t *target) makeZSyscallFile() error {\n\tzsyscallFile := fmt.Sprintf(\"zsyscall_linux_%s.go\", t.GoArch)\n\t// Find the correct architecture syscall file (might end with x.go)\n\tarchSyscallFile := fmt.Sprintf(\"syscall_linux_%s.go\", t.GoArch)\n\tif _, err := os.Stat(archSyscallFile); os.IsNotExist(err) {\n\t\tshortArch := strings.TrimSuffix(t.GoArch, \"le\")\n\t\tarchSyscallFile = fmt.Sprintf(\"syscall_linux_%sx.go\", shortArch)\n\t}\n\n\targs := append(t.mksyscallFlags(), \"-tags\", \"linux,\"+t.GoArch,\n\t\t\"syscall_linux.go\",\n\t\tarchSyscallFile,\n\t)\n\n\tfiles, err := t.archMksyscallFiles()\n\tif err != nil {\n\t\treturn fmt.Errorf(\"failed to check GOARCH-specific mksyscall files: %v\", err)\n\t}\n\targs = append(args, files...)\n\n\treturn t.commandFormatOutput(\"gofmt\", zsyscallFile, \"mksyscall\", args...)\n}\n\n// archMksyscallFiles produces additional file arguments to mksyscall if the\n// build constraints in those files match those defined for target.\nfunc (t *target) archMksyscallFiles() ([]string, error) {\n\t// These input files don't fit the typical GOOS/GOARCH file name conventions\n\t// but are included conditionally in the arguments to mksyscall based on\n\t// whether or not the target matches the build constraints defined in each\n\t// file.\n\t//\n\t// TODO(mdlayher): it should be possible to generalize this approach to work\n\t// over all of syscall_linux_* rather than hard-coding a few special files.\n\t// Investigate this.\n\tinputs := []string{\n\t\t// GOARCH: all except arm* and riscv.\n\t\t\"syscall_linux_alarm.go\",\n\t}\n\n\tvar outputs []string\n\tfor _, in := range inputs {\n\t\tok, err := t.matchesMksyscallFile(in)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to parse file %q: %v\", in, err)\n\t\t}\n\t\tif ok {\n\t\t\t// Constraints match, use for this target's code generation.\n\t\t\toutputs = append(outputs, in)\n\t\t}\n\t}\n\n\treturn outputs, nil\n}\n\n// matchesMksyscallFile reports whether the input file contains constraints\n// which match those defined for target.\nfunc (t *target) matchesMksyscallFile(file string) (bool, error) {\n\tf, err := os.Open(file)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer f.Close()\n\n\tvar (\n\t\texpr  constraint.Expr\n\t\tfound bool\n\t)\n\n\ts := bufio.NewScanner(f)\n\tfor s.Scan() {\n\t\t// Keep scanning until a valid constraint is found or we hit EOF.\n\t\t// This is sufficient for the single-line //go:build constraints.\n\t\tif expr, err = constraint.Parse(s.Text()); err == nil {\n\t\t\tfound = true\n\t\t\tbreak\n\t\t}\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn false, err\n\t}\n\tif !found {\n\t\treturn false, errors.New(\"no build constraints found\")\n\t}\n\n\t// Do the defined constraints match target's GOOS/GOARCH?\n\tok := expr.Eval(func(tag string) bool {\n\t\treturn tag == GOOS || tag == t.GoArch\n\t})\n\n\treturn ok, nil\n}\n\n// makes the zerrors_linux_$GOARCH.go file\nfunc (t *target) makeZErrorsFile() error {\n\tzerrorsFile := fmt.Sprintf(\"zerrors_linux_%s.go\", t.GoArch)\n\treturn t.commandFormatOutput(\"gofmt2\", zerrorsFile, \"/\"+filepath.Join(\"build\", \"unix\", \"mkerrors.sh\"), t.cFlags()...)\n}\n\n// makes the ztypes_linux_$GOARCH.go file\nfunc (t *target) makeZTypesFile() error {\n\tztypesFile := fmt.Sprintf(\"ztypes_linux_%s.go\", t.GoArch)\n\n\tcgoDir := filepath.Join(TempDir, t.GoArch, \"cgo\")\n\tif err := os.MkdirAll(cgoDir, os.ModePerm); err != nil {\n\t\treturn err\n\t}\n\n\targs := []string{\"tool\", \"cgo\", \"-godefs\", \"-objdir=\" + cgoDir, \"--\"}\n\targs = append(args, t.cFlags()...)\n\targs = append(args, \"linux/types.go\")\n\treturn t.commandFormatOutput(\"mkpost\", ztypesFile, \"go\", args...)\n}\n\n// Flags that should be given to gcc and cgo for this target\nfunc (t *target) cFlags() []string {\n\t// Compile statically to avoid cross-architecture dynamic linking.\n\tflags := []string{\"-Wall\", \"-Werror\", \"-static\", \"-I\" + filepath.Join(TempDir, t.GoArch, \"include\")}\n\n\t// Architecture-specific flags\n\tif t.SignedChar {\n\t\tflags = append(flags, \"-fsigned-char\")\n\t}\n\tif t.LinuxArch == \"x86\" {\n\t\tflags = append(flags, fmt.Sprintf(\"-m%d\", t.Bits))\n\t}\n\n\treturn flags\n}\n\n// Flags that should be given to mksyscall for this target\nfunc (t *target) mksyscallFlags() (flags []string) {\n\tif t.Bits == 32 {\n\t\tif t.BigEndian {\n\t\t\tflags = append(flags, \"-b32\")\n\t\t} else {\n\t\t\tflags = append(flags, \"-l32\")\n\t\t}\n\t}\n\n\t// This flag means a 64-bit value should use (even, odd)-pair.\n\tif t.GoArch == \"arm\" || (t.LinuxArch == \"mips\" && t.Bits == 32) {\n\t\tflags = append(flags, \"-arm\")\n\t}\n\treturn\n}\n\n// Merge all the generated files for Linux targets\nfunc mergeFiles() error {\n\t// Setup environment variables\n\tos.Setenv(\"GOOS\", runtime.GOOS)\n\tos.Setenv(\"GOARCH\", runtime.GOARCH)\n\n\t// Merge each of the four type of files\n\tfor _, ztyp := range []string{\"zerrors\", \"zsyscall\", \"zsysnum\", \"ztypes\"} {\n\t\tcmd := exec.Command(\"go\", \"run\", \"./internal/mkmerge\", \"-out\", fmt.Sprintf(\"%s_%s.go\", ztyp, GOOS), fmt.Sprintf(\"%s_%s_*.go\", ztyp, GOOS))\n\t\tcmd.Stderr = os.Stderr\n\t\terr := cmd.Run()\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"could not merge %s files: %w\", ztyp, err)\n\t\t}\n\t\tfmt.Printf(\"%s files merged\\n\", ztyp)\n\t}\n\n\treturn nil\n}\n\n// generatePtracePair takes a pair of GOARCH values that can run each\n// other's binaries, such as 386 and amd64. It extracts the PtraceRegs\n// type for each one. It writes a new file defining the types\n// PtraceRegsArch1 and PtraceRegsArch2 and the corresponding functions\n// Ptrace{Get,Set}Regs{arch1,arch2}. This permits debugging the other\n// binary on a native system. 'archName' is the combined name of 'arch1'\n// and 'arch2', which is used in the file name.\nfunc generatePtracePair(arch1, arch2, archName string) error {\n\tdef1, err := ptraceDef(arch1)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdef2, err := ptraceDef(arch2)\n\tif err != nil {\n\t\treturn err\n\t}\n\tf, err := os.Create(fmt.Sprintf(\"zptrace_%s_linux.go\", archName))\n\tif err != nil {\n\t\treturn err\n\t}\n\tbuf := bufio.NewWriter(f)\n\tfmt.Fprintf(buf, \"// Code generated by linux/mkall.go generatePtracePair(%q, %q). DO NOT EDIT.\\n\", arch1, arch2)\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"//go:build linux && (%s || %s)\\n\", arch1, arch2)\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"package unix\\n\")\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"%s\\n\", `import \"unsafe\"`)\n\tfmt.Fprintf(buf, \"\\n\")\n\twriteOnePtrace(buf, arch1, def1)\n\tfmt.Fprintf(buf, \"\\n\")\n\twriteOnePtrace(buf, arch2, def2)\n\tif err := buf.Flush(); err != nil {\n\t\treturn err\n\t}\n\tif err := f.Close(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// generatePtraceRegSet takes a GOARCH value to generate a file zptrace_linux_{arch}.go\n// containing functions PtraceGetRegSet{arch} and PtraceSetRegSet{arch}.\nfunc generatePtraceRegSet(arch string) error {\n\tf, err := os.Create(fmt.Sprintf(\"zptrace_linux_%s.go\", arch))\n\tif err != nil {\n\t\treturn err\n\t}\n\tbuf := bufio.NewWriter(f)\n\tfmt.Fprintf(buf, \"// Code generated by linux/mkall.go generatePtraceRegSet(%q). DO NOT EDIT.\\n\", arch)\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"package unix\\n\")\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"%s\\n\", `import \"unsafe\"`)\n\tfmt.Fprintf(buf, \"\\n\")\n\tuarch := string(unicode.ToUpper(rune(arch[0]))) + arch[1:]\n\tfmt.Fprintf(buf, \"// PtraceGetRegSet%s fetches the registers used by %s binaries.\\n\", uarch, arch)\n\tfmt.Fprintf(buf, \"func PtraceGetRegSet%s(pid, addr int, regsout *PtraceRegs%s) error {\\n\", uarch, uarch)\n\tfmt.Fprintf(buf, \"\\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\\n\")\n\tfmt.Fprintf(buf, \"\\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\\n\")\n\tfmt.Fprintf(buf, \"}\\n\")\n\tfmt.Fprintf(buf, \"\\n\")\n\tfmt.Fprintf(buf, \"// PtraceSetRegSet%s sets the registers used by %s binaries.\\n\", uarch, arch)\n\tfmt.Fprintf(buf, \"func PtraceSetRegSet%s(pid, addr int, regs *PtraceRegs%s) error {\\n\", uarch, uarch)\n\tfmt.Fprintf(buf, \"\\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\\n\")\n\tfmt.Fprintf(buf, \"\\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\\n\")\n\tfmt.Fprintf(buf, \"}\\n\")\n\tif err := buf.Flush(); err != nil {\n\t\treturn err\n\t}\n\tif err := f.Close(); err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// ptraceDef returns the definition of PtraceRegs for arch.\nfunc ptraceDef(arch string) (string, error) {\n\tfilename := fmt.Sprintf(\"ztypes_linux_%s.go\", arch)\n\tdata, err := os.ReadFile(filename)\n\tif err != nil {\n\t\treturn \"\", fmt.Errorf(\"reading %s: %v\", filename, err)\n\t}\n\tstart := bytes.Index(data, []byte(\"type PtraceRegs struct\"))\n\tif start < 0 {\n\t\treturn \"\", fmt.Errorf(\"%s: no definition of PtraceRegs\", filename)\n\t}\n\tdata = data[start:]\n\tend := bytes.Index(data, []byte(\"\\n}\\n\"))\n\tif end < 0 {\n\t\treturn \"\", fmt.Errorf(\"%s: can't find end of PtraceRegs definition\", filename)\n\t}\n\treturn string(data[:end+2]), nil\n}\n\n// writeOnePtrace writes out the ptrace definitions for arch.\nfunc writeOnePtrace(w io.Writer, arch, def string) {\n\tuarch := string(unicode.ToUpper(rune(arch[0]))) + arch[1:]\n\tfmt.Fprintf(w, \"// PtraceRegs%s is the registers used by %s binaries.\\n\", uarch, arch)\n\tfmt.Fprintf(w, \"%s\\n\", strings.Replace(def, \"PtraceRegs\", \"PtraceRegs\"+uarch, 1))\n\tfmt.Fprintf(w, \"\\n\")\n\tfmt.Fprintf(w, \"// PtraceGetRegs%s fetches the registers used by %s binaries.\\n\", uarch, arch)\n\tfmt.Fprintf(w, \"func PtraceGetRegs%s(pid int, regsout *PtraceRegs%s) error {\\n\", uarch, uarch)\n\tfmt.Fprintf(w, \"\\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\\n\")\n\tfmt.Fprintf(w, \"}\\n\")\n\tfmt.Fprintf(w, \"\\n\")\n\tfmt.Fprintf(w, \"// PtraceSetRegs%s sets the registers used by %s binaries.\\n\", uarch, arch)\n\tfmt.Fprintf(w, \"func PtraceSetRegs%s(pid int, regs *PtraceRegs%s) error {\\n\", uarch, uarch)\n\tfmt.Fprintf(w, \"\\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\\n\")\n\tfmt.Fprintf(w, \"}\\n\")\n}\n\n// cCode is compiled for the target architecture, and the resulting data section is carved for\n// the statically initialized bit masks.\nconst cCode = `\n// Bit fields are used in some system calls and other ABIs, but their memory layout is\n// implementation-defined [1]. Even with formal ABIs, bit fields are a source of subtle bugs [2].\n// Here we generate the offsets for all 64 bits in an uint64.\n// 1: http://en.cppreference.com/w/c/language/bit_field\n// 2: https://lwn.net/Articles/478657/\n\n#include <stdint.h>\n\nstruct bitfield {\n\tunion {\n\t\tuint64_t val;\n\t\tstruct {\n\t\t\tuint64_t u64_bit_0 : 1;\n\t\t\tuint64_t u64_bit_1 : 1;\n\t\t\tuint64_t u64_bit_2 : 1;\n\t\t\tuint64_t u64_bit_3 : 1;\n\t\t\tuint64_t u64_bit_4 : 1;\n\t\t\tuint64_t u64_bit_5 : 1;\n\t\t\tuint64_t u64_bit_6 : 1;\n\t\t\tuint64_t u64_bit_7 : 1;\n\t\t\tuint64_t u64_bit_8 : 1;\n\t\t\tuint64_t u64_bit_9 : 1;\n\t\t\tuint64_t u64_bit_10 : 1;\n\t\t\tuint64_t u64_bit_11 : 1;\n\t\t\tuint64_t u64_bit_12 : 1;\n\t\t\tuint64_t u64_bit_13 : 1;\n\t\t\tuint64_t u64_bit_14 : 1;\n\t\t\tuint64_t u64_bit_15 : 1;\n\t\t\tuint64_t u64_bit_16 : 1;\n\t\t\tuint64_t u64_bit_17 : 1;\n\t\t\tuint64_t u64_bit_18 : 1;\n\t\t\tuint64_t u64_bit_19 : 1;\n\t\t\tuint64_t u64_bit_20 : 1;\n\t\t\tuint64_t u64_bit_21 : 1;\n\t\t\tuint64_t u64_bit_22 : 1;\n\t\t\tuint64_t u64_bit_23 : 1;\n\t\t\tuint64_t u64_bit_24 : 1;\n\t\t\tuint64_t u64_bit_25 : 1;\n\t\t\tuint64_t u64_bit_26 : 1;\n\t\t\tuint64_t u64_bit_27 : 1;\n\t\t\tuint64_t u64_bit_28 : 1;\n\t\t\tuint64_t u64_bit_29 : 1;\n\t\t\tuint64_t u64_bit_30 : 1;\n\t\t\tuint64_t u64_bit_31 : 1;\n\t\t\tuint64_t u64_bit_32 : 1;\n\t\t\tuint64_t u64_bit_33 : 1;\n\t\t\tuint64_t u64_bit_34 : 1;\n\t\t\tuint64_t u64_bit_35 : 1;\n\t\t\tuint64_t u64_bit_36 : 1;\n\t\t\tuint64_t u64_bit_37 : 1;\n\t\t\tuint64_t u64_bit_38 : 1;\n\t\t\tuint64_t u64_bit_39 : 1;\n\t\t\tuint64_t u64_bit_40 : 1;\n\t\t\tuint64_t u64_bit_41 : 1;\n\t\t\tuint64_t u64_bit_42 : 1;\n\t\t\tuint64_t u64_bit_43 : 1;\n\t\t\tuint64_t u64_bit_44 : 1;\n\t\t\tuint64_t u64_bit_45 : 1;\n\t\t\tuint64_t u64_bit_46 : 1;\n\t\t\tuint64_t u64_bit_47 : 1;\n\t\t\tuint64_t u64_bit_48 : 1;\n\t\t\tuint64_t u64_bit_49 : 1;\n\t\t\tuint64_t u64_bit_50 : 1;\n\t\t\tuint64_t u64_bit_51 : 1;\n\t\t\tuint64_t u64_bit_52 : 1;\n\t\t\tuint64_t u64_bit_53 : 1;\n\t\t\tuint64_t u64_bit_54 : 1;\n\t\t\tuint64_t u64_bit_55 : 1;\n\t\t\tuint64_t u64_bit_56 : 1;\n\t\t\tuint64_t u64_bit_57 : 1;\n\t\t\tuint64_t u64_bit_58 : 1;\n\t\t\tuint64_t u64_bit_59 : 1;\n\t\t\tuint64_t u64_bit_60 : 1;\n\t\t\tuint64_t u64_bit_61 : 1;\n\t\t\tuint64_t u64_bit_62 : 1;\n\t\t\tuint64_t u64_bit_63 : 1;\n\t\t};\n\t};\n};\n\nstruct bitfield masks[] = {\n\t{.u64_bit_0 = 1},\n\t{.u64_bit_1 = 1},\n\t{.u64_bit_2 = 1},\n\t{.u64_bit_3 = 1},\n\t{.u64_bit_4 = 1},\n\t{.u64_bit_5 = 1},\n\t{.u64_bit_6 = 1},\n\t{.u64_bit_7 = 1},\n\t{.u64_bit_8 = 1},\n\t{.u64_bit_9 = 1},\n\t{.u64_bit_10 = 1},\n\t{.u64_bit_11 = 1},\n\t{.u64_bit_12 = 1},\n\t{.u64_bit_13 = 1},\n\t{.u64_bit_14 = 1},\n\t{.u64_bit_15 = 1},\n\t{.u64_bit_16 = 1},\n\t{.u64_bit_17 = 1},\n\t{.u64_bit_18 = 1},\n\t{.u64_bit_19 = 1},\n\t{.u64_bit_20 = 1},\n\t{.u64_bit_21 = 1},\n\t{.u64_bit_22 = 1},\n\t{.u64_bit_23 = 1},\n\t{.u64_bit_24 = 1},\n\t{.u64_bit_25 = 1},\n\t{.u64_bit_26 = 1},\n\t{.u64_bit_27 = 1},\n\t{.u64_bit_28 = 1},\n\t{.u64_bit_29 = 1},\n\t{.u64_bit_30 = 1},\n\t{.u64_bit_31 = 1},\n\t{.u64_bit_32 = 1},\n\t{.u64_bit_33 = 1},\n\t{.u64_bit_34 = 1},\n\t{.u64_bit_35 = 1},\n\t{.u64_bit_36 = 1},\n\t{.u64_bit_37 = 1},\n\t{.u64_bit_38 = 1},\n\t{.u64_bit_39 = 1},\n\t{.u64_bit_40 = 1},\n\t{.u64_bit_41 = 1},\n\t{.u64_bit_42 = 1},\n\t{.u64_bit_43 = 1},\n\t{.u64_bit_44 = 1},\n\t{.u64_bit_45 = 1},\n\t{.u64_bit_46 = 1},\n\t{.u64_bit_47 = 1},\n\t{.u64_bit_48 = 1},\n\t{.u64_bit_49 = 1},\n\t{.u64_bit_50 = 1},\n\t{.u64_bit_51 = 1},\n\t{.u64_bit_52 = 1},\n\t{.u64_bit_53 = 1},\n\t{.u64_bit_54 = 1},\n\t{.u64_bit_55 = 1},\n\t{.u64_bit_56 = 1},\n\t{.u64_bit_57 = 1},\n\t{.u64_bit_58 = 1},\n\t{.u64_bit_59 = 1},\n\t{.u64_bit_60 = 1},\n\t{.u64_bit_61 = 1},\n\t{.u64_bit_62 = 1},\n\t{.u64_bit_63 = 1}\n};\n\nint main(int argc, char **argv) {\n\tstruct bitfield *mask_ptr = &masks[0];\n\treturn mask_ptr->val;\n}\n\n`\n"
  },
  {
    "path": "gossh/sys/unix/linux/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//go:build ignore\n\npackage main\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"os\"\n\t\"os/exec\"\n\t\"regexp\"\n\t\"sort\"\n\t\"strconv\"\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 linux/mksysnum.go \" + strings.Join(os.Args[1:], \" \")\n}\n\n// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn fmt.Sprintf(\"%s && %s\", goarch, goos)\n}\n\nfunc format(name string, num int, offset int) (int, string) {\n\tif num > 999 {\n\t\t// ignore deprecated syscalls that are no longer implemented\n\t\t// https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/uapi/asm-generic/unistd.h?id=refs/heads/master#n716\n\t\treturn 0, \"\"\n\t}\n\tname = strings.ToUpper(name)\n\tnum = num + offset\n\treturn num, fmt.Sprintf(\"\tSYS_%s = %d;\\n\", name, num)\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// syscallNum holds the syscall number and the string\n// we will write to the generated file.\ntype syscallNum struct {\n\tnum         int\n\tdeclaration string\n}\n\n// syscallNums is a slice of syscallNum sorted by the syscall number in ascending order.\ntype syscallNums []syscallNum\n\n// addSyscallNum adds the syscall declaration to syscallNums.\nfunc (nums *syscallNums) addSyscallNum(num int, declaration string) {\n\tif declaration == \"\" {\n\t\treturn\n\t}\n\tif len(*nums) == 0 || (*nums)[len(*nums)-1].num <= num {\n\t\t// This is the most common case as the syscall declarations output by the preprocessor\n\t\t// are almost always sorted.\n\t\t*nums = append(*nums, syscallNum{num, declaration})\n\t\treturn\n\t}\n\ti := sort.Search(len(*nums), func(i int) bool { return (*nums)[i].num >= num })\n\n\t// Maintain the ordering in the preprocessor output when we have multiple definitions with\n\t// the same value. i cannot be > len(nums) - 1 as nums[len(nums)-1].num > num.\n\tfor ; (*nums)[i].num == num; i++ {\n\t}\n\t*nums = append((*nums)[:i], append([]syscallNum{{num, declaration}}, (*nums)[i:]...)...)\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 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\t// Check that we are using the new build system if we should\n\tif os.Getenv(\"GOLANG_SYS_BUILD\") != \"docker\" {\n\t\tfmt.Fprintf(os.Stderr, \"In the new build system, mksysnum should not be called directly.\\n\")\n\t\tfmt.Fprintf(os.Stderr, \"See README.md\\n\")\n\t\tos.Exit(1)\n\t}\n\n\tcc := os.Getenv(\"CC\")\n\tif cc == \"\" {\n\t\tfmt.Fprintf(os.Stderr, \"CC is not defined in environment\\n\")\n\t\tos.Exit(1)\n\t}\n\targs := os.Args[1:]\n\targs = append([]string{\"-E\", \"-dD\"}, args...)\n\tcmd, err := exec.Command(cc, args...).Output() // execute command and capture output\n\tif err != nil {\n\t\tfmt.Fprintf(os.Stderr, \"can't run %s\", cc)\n\t\tos.Exit(1)\n\t}\n\ts := bufio.NewScanner(strings.NewReader(string(cmd)))\n\tvar offset, prev, asOffset int\n\tvar nums syscallNums\n\tfor s.Scan() {\n\t\tt := re{str: s.Text()}\n\n\t\t// The generated zsysnum_linux_*.go files for some platforms (arm64, loong64, riscv64)\n\t\t// treat SYS_ARCH_SPECIFIC_SYSCALL as if it's a syscall which it isn't.  It's an offset.\n\t\t// However, as this constant is already part of the public API we leave it in place.\n\t\t// Lines of type SYS_ARCH_SPECIFIC_SYSCALL = 244 are thus processed twice, once to extract\n\t\t// the offset and once to add the constant.\n\n\t\tif t.Match(`^#define __NR_arch_specific_syscall\\s+([0-9]+)`) {\n\t\t\t// riscv: extract arch specific offset\n\t\t\tasOffset, _ = strconv.Atoi(t.sub[1]) // Make asOffset=0 if empty or non-numeric\n\t\t}\n\n\t\tif t.Match(`^#define __NR_Linux\\s+([0-9]+)`) {\n\t\t\t// mips/mips64: extract offset\n\t\t\toffset, _ = strconv.Atoi(t.sub[1]) // Make offset=0 if empty or non-numeric\n\t\t} else if t.Match(`^#define __NR(\\w*)_SYSCALL_BASE\\s+([0-9]+)`) {\n\t\t\t// arm: extract offset\n\t\t\toffset, _ = strconv.Atoi(t.sub[1]) // Make offset=0 if empty or non-numeric\n\t\t} else if t.Match(`^#define __NR_syscalls\\s+`) {\n\t\t\t// ignore redefinitions of __NR_syscalls\n\t\t} else if t.Match(`^#define __NR_(\\w*)Linux_syscalls\\s+`) {\n\t\t\t// mips/mips64: ignore definitions about the number of syscalls\n\t\t} else if t.Match(`^#define __NR_(\\w+)\\s+([0-9]+)`) {\n\t\t\tprev, err = strconv.Atoi(t.sub[2])\n\t\t\tcheckErr(err)\n\t\t\tnums.addSyscallNum(format(t.sub[1], prev, offset))\n\t\t} else if t.Match(`^#define __NR3264_(\\w+)\\s+([0-9]+)`) {\n\t\t\tprev, err = strconv.Atoi(t.sub[2])\n\t\t\tcheckErr(err)\n\t\t\tnums.addSyscallNum(format(t.sub[1], prev, offset))\n\t\t} else if t.Match(`^#define __NR_(\\w+)\\s+\\(\\w+\\+\\s*([0-9]+)\\)`) {\n\t\t\tr2, err := strconv.Atoi(t.sub[2])\n\t\t\tcheckErr(err)\n\t\t\tnums.addSyscallNum(format(t.sub[1], prev+r2, offset))\n\t\t} else if t.Match(`^#define __NR_(\\w+)\\s+\\(__NR_(?:SYSCALL_BASE|Linux) \\+ ([0-9]+)`) {\n\t\t\tr2, err := strconv.Atoi(t.sub[2])\n\t\t\tcheckErr(err)\n\t\t\tnums.addSyscallNum(format(t.sub[1], r2, offset))\n\t\t} else if asOffset != 0 && t.Match(`^#define __NR_(\\w+)\\s+\\(__NR_arch_specific_syscall \\+ ([0-9]+)`) {\n\t\t\tr2, err := strconv.Atoi(t.sub[2])\n\t\t\tcheckErr(err)\n\t\t\tnums.addSyscallNum(format(t.sub[1], r2, asOffset))\n\t\t}\n\t}\n\terr = s.Err()\n\tcheckErr(err)\n\tvar text strings.Builder\n\tfor _, num := range nums {\n\t\ttext.WriteString(num.declaration)\n\t}\n\tfmt.Printf(template, cmdLine(), goBuildTags(), text.String())\n}\n\nconst template = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build %s\n\npackage unix\n\nconst(\n%s)`\n"
  },
  {
    "path": "gossh/sys/unix/linux/types.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 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// +godefs map struct___kernel_sockaddr_storage SockaddrStorage\n\npackage unix\n\n/*\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#define _FILE_OFFSET_BITS 64\n#define _GNU_SOURCE\n\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <sched.h>\n#include <signal.h>\n#include <stdio.h>\n#include <time.h>\n#include <unistd.h>\n#include <utime.h>\n\n#include <netinet/in.h>\n#include <linux/tcp.h>\n\n#include <sys/epoll.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.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/signalfd.h>\n#include <sys/statfs.h>\n#include <sys/statvfs.h>\n#include <sys/sysinfo.h>\n#include <sys/time.h>\n#include <sys/timerfd.h>\n#include <sys/times.h>\n#include <sys/timex.h>\n#include <sys/types.h>\n#include <sys/un.h>\n#include <sys/user.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n\n#if defined(__sparc__)\n// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the\n// definition in glibc. Duplicate the kernel version here.\n#if defined(__arch64__)\ntypedef unsigned int tcflag_t;\n#else\ntypedef unsigned long tcflag_t;\n#endif\n\nstruct termios2 {\n\ttcflag_t c_iflag;\n\ttcflag_t c_oflag;\n\ttcflag_t c_cflag;\n\ttcflag_t c_lflag;\n\tunsigned char c_line;\n\tunsigned char c_cc[19];\n\tunsigned int c_ispeed;\n\tunsigned int c_ospeed;\n};\n#else\n#include <asm/termbits.h>\n#endif\n#include <asm/ptrace.h>\n\n#include <linux/audit.h>\n#include <linux/blkpg.h>\n#include <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/can/netlink.h>\n#include <linux/can/raw.h>\n#include <linux/capability.h>\n#include <linux/cgroupstats.h>\n#include <linux/close_range.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/dm-ioctl.h>\n#include <linux/errqueue.h>\n#include <linux/ethtool.h>\n#include <linux/ethtool_netlink.h>\n#include <linux/fanotify.h>\n#include <linux/fib_rules.h>\n#include <linux/filter.h>\n#include <linux/fs.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/icmp.h>\n#include <linux/icmpv6.h>\n#include <linux/if_alg.h>\n#include <linux/if_bridge.h>\n#include <linux/if_packet.h>\n#include <linux/if_pppox.h>\n#include <linux/if_tun.h>\n#include <linux/if_xdp.h>\n#include <linux/ipc.h>\n#include <linux/kcm.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/mpls_iptunnel.h>\n#include <linux/ncsi.h>\n#include <linux/net_namespace.h>\n#include <linux/net_tstamp.h>\n#include <linux/netfilter/nf_tables.h>\n#include <linux/netfilter/nf_tables_compat.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netfilter.h>\n#include <linux/netfilter_ipv4.h>\n#include <linux/netlink.h>\n#include <linux/nexthop.h>\n#include <linux/nfc.h>\n#include <linux/nl80211.h>\n#include <linux/openat2.h>\n#include <linux/perf_event.h>\n#include <linux/pps.h>\n#include <linux/random.h>\n#include <linux/rtc.h>\n#include <linux/rtnetlink.h>\n// This is to avoid a conflict of struct sched_param being defined by\n// both the kernel and the glibc (sched.h) headers.\n#define sched_param kernel_sched_param\n#include <linux/sched/types.h>\n#undef kernel_sched_param\n#include <linux/shm.h>\n#include <linux/socket.h>\n#include <linux/stat.h>\n#include <linux/taskstats.h>\n#include <linux/tipc.h>\n#include <linux/virtio_net.h>\n#include <linux/vm_sockets.h>\n#include <linux/watchdog.h>\n#include <linux/wireguard.h>\n\n#include <mtd/mtd-user.h>\n\n// abi/abi.h generated by mkall.go.\n#include \"abi/abi.h\"\n\n// On mips64, the glibc stat and kernel stat do not agree\n#if (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64)\n\n// Use the stat defined by the kernel with a few modifications. These are:\n//\t* The time fields (like st_atime and st_atimensec) use the timespec\n//\t  struct (like st_atim) for consistency with the glibc fields.\n//\t* The padding fields get different names to not break compatibility.\n//\t* st_blocks is signed, again for compatibility.\ntypedef struct {\n\tunsigned int\t\tst_dev;\n\tunsigned int\t\tst_pad1[3]; // Reserved for st_dev expansion\n\n\tunsigned long\t\tst_ino;\n\n\tmode_t\t\t\tst_mode;\n\t__u32\t\t\tst_nlink;\n\n\tuid_t\t\t\tst_uid;\n\tgid_t\t\t\tst_gid;\n\n\tunsigned int\t\tst_rdev;\n\tunsigned int\t\tst_pad2[3]; // Reserved for st_rdev expansion\n\n\toff_t\t\t\tst_size;\n\n\t// These are declared as separate fields in the kernel. Here we use\n\t// the timespec struct for consistency with the other stat structs.\n\tstruct timespec\t\tst_atim;\n\tstruct timespec\t\tst_mtim;\n\tstruct timespec\t\tst_ctim;\n\n\tunsigned int\t\tst_blksize;\n\tunsigned int\t\tst_pad4;\n\n\tlong\t\t\tst_blocks;\n} my_stat;\n#else\ntypedef struct stat my_stat;\n#endif\n\n#ifdef TCSETS2\n// On systems that have \"struct termios2\" use this as type Termios.\ntypedef struct termios2 termios_t;\n#else\ntypedef struct termios termios_t;\n#endif\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_ll s5;\n\tstruct sockaddr_nl s6;\n\tstruct sockaddr_pppox s7;\n\tstruct sockaddr_l2tpip s8;\n\tstruct sockaddr_l2tpip6 s9;\n\tstruct sockaddr_nfc s10;\n\tstruct sockaddr_nfc_llcp s11;\n};\n\nstruct sockaddr_any {\n\tstruct sockaddr addr;\n\tchar pad[sizeof(union sockaddr_all) - sizeof(struct sockaddr)];\n};\n\n// copied from /usr/include/bluetooth/hci.h\nstruct sockaddr_hci {\n        sa_family_t     hci_family;\n        unsigned short  hci_dev;\n        unsigned short  hci_channel;\n};\n\n// copied from /usr/include/bluetooth/bluetooth.h\n#define BDADDR_BREDR           0x00\n#define BDADDR_LE_PUBLIC       0x01\n#define BDADDR_LE_RANDOM       0x02\n\n// copied from /usr/include/bluetooth/l2cap.h\nstruct sockaddr_l2 {\n\tsa_family_t\tl2_family;\n\tunsigned short\tl2_psm;\n\tuint8_t\t\tl2_bdaddr[6];\n\tunsigned short\tl2_cid;\n\tuint8_t\t\tl2_bdaddr_type;\n};\n\n// copied from /usr/include/net/bluetooth/rfcomm.h\nstruct sockaddr_rc {\n\tsa_family_t rc_family;\n\tuint8_t     rc_bdaddr[6];\n\tuint8_t     rc_channel;\n};\n\n// copied from /usr/include/linux/un.h\nstruct my_sockaddr_un {\n\tsa_family_t sun_family;\n#if defined(__ARM_EABI__) || defined(__powerpc__) || defined(__powerpc64__) || defined(__riscv)\n\t// on some platforms char is unsigned by default\n\tsigned char sun_path[108];\n#else\n\tchar sun_path[108];\n#endif\n};\n\n// copied from /usr/include/netiucv/iucv.h modified with explicit signed chars.\nstruct sockaddr_iucv {\n\tsa_family_t siucv_family;\n\tunsigned short siucv_port;\n\tunsigned int siucv_addr;\n\tsigned char siucv_nodeid[8];\n\tsigned char siucv_user_id[8];\n\tsigned char siucv_name[8];\n};\n\n// copied from /usr/include/linux/nfc.h modified with explicit unsigned chars.\nstruct my_sockaddr_nfc_llcp {\n\tsa_family_t sa_family;\n\tuint32_t dev_idx;\n\tuint32_t target_idx;\n\tuint32_t nfc_protocol;\n\tuint8_t dsap;\n\tuint8_t ssap;\n\tuint8_t service_name[NFC_LLCP_MAX_SERVICE_NAME];\n\tsize_t service_name_len;\n};\n\n#ifdef __ARM_EABI__\ntypedef struct user_regs PtraceRegs;\n#elif defined(__aarch64__) || defined(__loongarch64)\ntypedef struct user_pt_regs PtraceRegs;\n#elif defined(__mips__) || defined(__powerpc__) || defined(__powerpc64__)\ntypedef struct pt_regs PtraceRegs;\n#elif defined(__s390x__)\ntypedef struct _user_regs_struct PtraceRegs;\n#elif defined(__sparc__)\n#include <asm/ptrace.h>\ntypedef struct pt_regs PtraceRegs;\n#else\ntypedef struct user_regs_struct PtraceRegs;\n#endif\n\n#if defined(__s390x__)\ntypedef struct _user_psw_struct ptracePsw;\ntypedef struct _user_fpregs_struct ptraceFpregs;\ntypedef struct _user_per_struct ptracePer;\n#else\ntypedef struct {} ptracePsw;\ntypedef struct {} ptraceFpregs;\ntypedef struct {} ptracePer;\n#endif\n\n// The real epoll_event is a union, and godefs doesn't handle it well.\nstruct my_epoll_event {\n\tuint32_t events;\n#if defined(__ARM_EABI__) || defined(__aarch64__) || (defined(__mips__) && _MIPS_SIM == _ABIO32)\n\t// padding is not specified in linux/eventpoll.h but added to conform to the\n\t// alignment requirements of EABI\n\tint32_t padFd;\n#elif defined(__powerpc__) || defined(__powerpc64__) || defined(__s390x__) || defined(__sparc__) \\\n\t\t|| defined(__riscv) || (defined(__mips__) && _MIPS_SIM == _MIPS_SIM_ABI64) \\\n\t\t|| defined(__loongarch64)\n\tint32_t _padFd;\n#endif\n\tint32_t fd;\n\tint32_t pad;\n};\n\n// Copied from <linux/perf_event.h> with the following modifications:\n// 1) bit field after read_format redeclared as '__u64 bits' to make it\n//    accessible from Go\n// 2) collapsed the unions, to avoid confusing godoc for the generated output\n//    (e.g. having to use BpAddr as an extension of Config)\nstruct perf_event_attr_go {\n\t__u32 type;\n\n\t__u32 size;\n\t__u64 config;\n\n\t// union {\n\t//   __u64 sample_period;\n\t//   __u64 sample_freq;\n\t// };\n\t__u64 sample;\n\n\t__u64 sample_type;\n\t__u64 read_format;\n\n\t// Replaces the bit field. Flags are defined as constants.\n\t__u64 bits;\n\n\t// union {\n\t//   __u32 wakeup_events;\n\t//   __u32 wakeup_watermark;\n\t// };\n\t__u32 wakeup;\n\n\t__u32 bp_type;\n\n\t// union {\n\t//   __u64 bp_addr;\n\t//   __u64 config1;\n\t// };\n\t__u64 ext1;\n\n\t// union {\n\t//   __u64 bp_len;\n\t//   __u64 config2;\n\t// };\n\t__u64 ext2;\n\n\t__u64 branch_sample_type;\n\n\t__u64 sample_regs_user;\n\n\t__u32 sample_stack_user;\n\n\t__s32 clockid;\n\t__u64 sample_regs_intr;\n\t__u32 aux_watermark;\n\t__u16 sample_max_stack;\n\t__u16 __reserved_2;\n\t__u32 aux_sample_size;\n\t__u32 __reserved_3;\n\n\t__u64 sig_data;\n};\n\n// ustat is deprecated and glibc 2.28 removed ustat.h. Provide the type here for\n// backwards compatibility. Copied from /usr/include/bits/ustat.h\nstruct ustat {\n\t__daddr_t f_tfree;\n\t__ino_t f_tinode;\n\tchar f_fname[6];\n\tchar f_fpack[6];\n};\n\n// my_blkpg_partition is blkpg_partition with unsigned devname & volname.\nstruct my_blkpg_partition {\n\tlong long start;\n\tlong long length;\n\tint pno;\n\tunsigned char devname[BLKPG_DEVNAMELTH];\n\tunsigned char volname[BLKPG_VOLNAMELTH];\n};\n\n// tipc_service_name is a copied and slightly modified form of the \"name\"\n// variant in sockaddr_tipc's union in tipc.h, so it can be exported as part of\n// SockaddrTIPC's API.\nstruct tipc_service_name {\n\t// From tipc_service_addr.\n\t__u32 type;\n\t__u32 instance;\n\t// From the union.\n\t__u32 domain;\n};\n\n// copied from /usr/include/linux/can/netlink.h modified with explicit unsigned chars.\nstruct my_can_bittiming_const {\n\tuint8_t name[16];\n\t__u32 tseg1_min;\n\t__u32 tseg1_max;\n\t__u32 tseg2_min;\n\t__u32 tseg2_max;\n\t__u32 sjw_max;\n\t__u32 brp_min;\n\t__u32 brp_max;\n\t__u32 brp_inc;\n};\n\n#if defined(__riscv)\n#include <asm/hwprobe.h>\n#else\n\n// copied from /usr/include/asm/hwprobe.h\n// values are not used but they need to be defined.\n\n#define RISCV_HWPROBE_KEY_MVENDORID\t0\n#define RISCV_HWPROBE_KEY_MARCHID\t1\n#define RISCV_HWPROBE_KEY_MIMPID\t2\n#define RISCV_HWPROBE_KEY_BASE_BEHAVIOR\t3\n#define\t\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA\t(1 << 0)\n#define RISCV_HWPROBE_KEY_IMA_EXT_0\t4\n#define\t\tRISCV_HWPROBE_IMA_FD\t\t(1 << 0)\n#define\t\tRISCV_HWPROBE_IMA_C\t\t(1 << 1)\n#define\t\tRISCV_HWPROBE_IMA_V\t\t(1 << 2)\n#define\t\tRISCV_HWPROBE_EXT_ZBA\t\t(1 << 3)\n#define\t\tRISCV_HWPROBE_EXT_ZBB\t\t(1 << 4)\n#define\t\tRISCV_HWPROBE_EXT_ZBS\t\t(1 << 5)\n#define RISCV_HWPROBE_KEY_CPUPERF_0\t5\n#define\t\tRISCV_HWPROBE_MISALIGNED_UNKNOWN\t(0 << 0)\n#define\t\tRISCV_HWPROBE_MISALIGNED_EMULATED\t(1 << 0)\n#define\t\tRISCV_HWPROBE_MISALIGNED_SLOW\t\t(2 << 0)\n#define\t\tRISCV_HWPROBE_MISALIGNED_FAST\t\t(3 << 0)\n#define\t\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED\t(4 << 0)\n#define\t\tRISCV_HWPROBE_MISALIGNED_MASK\t\t(7 << 0)\n\nstruct riscv_hwprobe {};\n#endif\n\n// copied from /usr/include/uapi/linux/mman.h\nstruct cachestat_range {\n\t__u64 off;\n\t__u64 len;\n};\n\nstruct cachestat {\n\t__u64 nr_cache;\n\t__u64 nr_dirty;\n\t__u64 nr_writeback;\n\t__u64 nr_evicted;\n\t__u64 nr_recently_evicted;\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\n// Time\n\ntype Timespec C.struct_timespec\n\ntype Timeval C.struct_timeval\n\ntype Timex C.struct_timex\n\ntype ItimerSpec C.struct_itimerspec\n\ntype Itimerval C.struct_itimerval\n\nconst (\n\tADJ_OFFSET            = C.ADJ_OFFSET\n\tADJ_FREQUENCY         = C.ADJ_FREQUENCY\n\tADJ_MAXERROR          = C.ADJ_MAXERROR\n\tADJ_ESTERROR          = C.ADJ_ESTERROR\n\tADJ_STATUS            = C.ADJ_STATUS\n\tADJ_TIMECONST         = C.ADJ_TIMECONST\n\tADJ_TAI               = C.ADJ_TAI\n\tADJ_SETOFFSET         = C.ADJ_SETOFFSET\n\tADJ_MICRO             = C.ADJ_MICRO\n\tADJ_NANO              = C.ADJ_NANO\n\tADJ_TICK              = C.ADJ_TICK\n\tADJ_OFFSET_SINGLESHOT = C.ADJ_OFFSET_SINGLESHOT\n\tADJ_OFFSET_SS_READ    = C.ADJ_OFFSET_SS_READ\n)\n\nconst (\n\tSTA_PLL       = C.STA_PLL\n\tSTA_PPSFREQ   = C.STA_PPSFREQ\n\tSTA_PPSTIME   = C.STA_PPSTIME\n\tSTA_FLL       = C.STA_FLL\n\tSTA_INS       = C.STA_INS\n\tSTA_DEL       = C.STA_DEL\n\tSTA_UNSYNC    = C.STA_UNSYNC\n\tSTA_FREQHOLD  = C.STA_FREQHOLD\n\tSTA_PPSSIGNAL = C.STA_PPSSIGNAL\n\tSTA_PPSJITTER = C.STA_PPSJITTER\n\tSTA_PPSWANDER = C.STA_PPSWANDER\n\tSTA_PPSERROR  = C.STA_PPSERROR\n\tSTA_CLOCKERR  = C.STA_CLOCKERR\n\tSTA_NANO      = C.STA_NANO\n\tSTA_MODE      = C.STA_MODE\n\tSTA_CLK       = C.STA_CLK\n)\n\nconst (\n\tTIME_OK    = C.TIME_OK\n\tTIME_INS   = C.TIME_INS\n\tTIME_DEL   = C.TIME_DEL\n\tTIME_OOP   = C.TIME_OOP\n\tTIME_WAIT  = C.TIME_WAIT\n\tTIME_ERROR = C.TIME_ERROR\n\tTIME_BAD   = C.TIME_BAD\n)\n\ntype Time_t C.time_t\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.my_stat\n\ntype StatxTimestamp C.struct_statx_timestamp\n\ntype Statx_t C.struct_statx\n\ntype Dirent C.struct_dirent\n\ntype Fsid C.fsid_t\n\ntype Flock_t C.struct_flock\n\ntype FileCloneRange C.struct_file_clone_range\n\ntype RawFileDedupeRange C.struct_file_dedupe_range\n\ntype RawFileDedupeRangeInfo C.struct_file_dedupe_range_info\n\nconst (\n\tSizeofRawFileDedupeRange     = C.sizeof_struct_file_dedupe_range\n\tSizeofRawFileDedupeRangeInfo = C.sizeof_struct_file_dedupe_range_info\n\tFILE_DEDUPE_RANGE_SAME       = C.FILE_DEDUPE_RANGE_SAME\n\tFILE_DEDUPE_RANGE_DIFFERS    = C.FILE_DEDUPE_RANGE_DIFFERS\n)\n\n// Filesystem Encryption\n\ntype FscryptPolicy C.struct_fscrypt_policy\n\ntype FscryptKey C.struct_fscrypt_key\n\ntype FscryptPolicyV1 C.struct_fscrypt_policy_v1\n\ntype FscryptPolicyV2 C.struct_fscrypt_policy_v2\n\ntype FscryptGetPolicyExArg C.struct_fscrypt_get_policy_ex_arg\n\ntype FscryptKeySpecifier C.struct_fscrypt_key_specifier\n\ntype FscryptAddKeyArg C.struct_fscrypt_add_key_arg\n\ntype FscryptRemoveKeyArg C.struct_fscrypt_remove_key_arg\n\ntype FscryptGetKeyStatusArg C.struct_fscrypt_get_key_status_arg\n\n// Device Mapper\n\ntype DmIoctl C.struct_dm_ioctl\n\ntype DmTargetSpec C.struct_dm_target_spec\n\ntype DmTargetDeps C.struct_dm_target_deps\n\ntype DmNameList C.struct_dm_name_list\n\ntype DmTargetVersions C.struct_dm_target_versions\n\ntype DmTargetMsg C.struct_dm_target_msg\n\nconst (\n\tSizeofDmIoctl      = C.sizeof_struct_dm_ioctl\n\tSizeofDmTargetSpec = C.sizeof_struct_dm_target_spec\n)\n\n// Structure for Keyctl\n\ntype KeyctlDHParams C.struct_keyctl_dh_params\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_my_sockaddr_un\n\ntype RawSockaddrLinklayer C.struct_sockaddr_ll\n\ntype RawSockaddrNetlink C.struct_sockaddr_nl\n\ntype RawSockaddrHCI C.struct_sockaddr_hci\n\ntype RawSockaddrL2 C.struct_sockaddr_l2\n\ntype RawSockaddrRFCOMM C.struct_sockaddr_rc\n\ntype RawSockaddrCAN C.struct_sockaddr_can\n\ntype RawSockaddrALG C.struct_sockaddr_alg\n\ntype RawSockaddrVM C.struct_sockaddr_vm\n\ntype RawSockaddrXDP C.struct_sockaddr_xdp\n\ntype RawSockaddrPPPoX [C.sizeof_struct_sockaddr_pppox]byte\n\ntype RawSockaddrTIPC C.struct_sockaddr_tipc\n\ntype RawSockaddrL2TPIP C.struct_sockaddr_l2tpip\n\ntype RawSockaddrL2TPIP6 C.struct_sockaddr_l2tpip6\n\ntype RawSockaddrIUCV C.struct_sockaddr_iucv\n\ntype RawSockaddrNFC C.struct_sockaddr_nfc\n\ntype RawSockaddrNFCLLCP C.struct_my_sockaddr_nfc_llcp\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 PacketMreq C.struct_packet_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\ntype Ucred C.struct_ucred\n\ntype TCPInfo C.struct_tcp_info\n\ntype CanFilter C.struct_can_filter\n\ntype ifreq C.struct_ifreq\n\ntype TCPRepairOpt C.struct_tcp_repair_opt\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\tSizeofSockaddrLinklayer = C.sizeof_struct_sockaddr_ll\n\tSizeofSockaddrNetlink   = C.sizeof_struct_sockaddr_nl\n\tSizeofSockaddrHCI       = C.sizeof_struct_sockaddr_hci\n\tSizeofSockaddrL2        = C.sizeof_struct_sockaddr_l2\n\tSizeofSockaddrRFCOMM    = C.sizeof_struct_sockaddr_rc\n\tSizeofSockaddrCAN       = C.sizeof_struct_sockaddr_can\n\tSizeofSockaddrALG       = C.sizeof_struct_sockaddr_alg\n\tSizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm\n\tSizeofSockaddrXDP       = C.sizeof_struct_sockaddr_xdp\n\tSizeofSockaddrPPPoX     = C.sizeof_struct_sockaddr_pppox\n\tSizeofSockaddrTIPC      = C.sizeof_struct_sockaddr_tipc\n\tSizeofSockaddrL2TPIP    = C.sizeof_struct_sockaddr_l2tpip\n\tSizeofSockaddrL2TPIP6   = C.sizeof_struct_sockaddr_l2tpip6\n\tSizeofSockaddrIUCV      = C.sizeof_struct_sockaddr_iucv\n\tSizeofSockaddrNFC       = C.sizeof_struct_sockaddr_nfc\n\tSizeofSockaddrNFCLLCP   = C.sizeof_struct_sockaddr_nfc_llcp\n\tSizeofLinger            = C.sizeof_struct_linger\n\tSizeofIovec             = C.sizeof_struct_iovec\n\tSizeofIPMreq            = C.sizeof_struct_ip_mreq\n\tSizeofIPMreqn           = C.sizeof_struct_ip_mreqn\n\tSizeofIPv6Mreq          = C.sizeof_struct_ipv6_mreq\n\tSizeofPacketMreq        = C.sizeof_struct_packet_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\tSizeofUcred             = C.sizeof_struct_ucred\n\tSizeofTCPInfo           = C.sizeof_struct_tcp_info\n\tSizeofCanFilter         = C.sizeof_struct_can_filter\n\tSizeofTCPRepairOpt      = C.sizeof_struct_tcp_repair_opt\n)\n\n// Netlink routing and interface messages\n\nconst (\n\tNDA_UNSPEC         = C.NDA_UNSPEC\n\tNDA_DST            = C.NDA_DST\n\tNDA_LLADDR         = C.NDA_LLADDR\n\tNDA_CACHEINFO      = C.NDA_CACHEINFO\n\tNDA_PROBES         = C.NDA_PROBES\n\tNDA_VLAN           = C.NDA_VLAN\n\tNDA_PORT           = C.NDA_PORT\n\tNDA_VNI            = C.NDA_VNI\n\tNDA_IFINDEX        = C.NDA_IFINDEX\n\tNDA_MASTER         = C.NDA_MASTER\n\tNDA_LINK_NETNSID   = C.NDA_LINK_NETNSID\n\tNDA_SRC_VNI        = C.NDA_SRC_VNI\n\tNTF_USE            = C.NTF_USE\n\tNTF_SELF           = C.NTF_SELF\n\tNTF_MASTER         = C.NTF_MASTER\n\tNTF_PROXY          = C.NTF_PROXY\n\tNTF_EXT_LEARNED    = C.NTF_EXT_LEARNED\n\tNTF_OFFLOADED      = C.NTF_OFFLOADED\n\tNTF_ROUTER         = C.NTF_ROUTER\n\tNUD_INCOMPLETE     = C.NUD_INCOMPLETE\n\tNUD_REACHABLE      = C.NUD_REACHABLE\n\tNUD_STALE          = C.NUD_STALE\n\tNUD_DELAY          = C.NUD_DELAY\n\tNUD_PROBE          = C.NUD_PROBE\n\tNUD_FAILED         = C.NUD_FAILED\n\tNUD_NOARP          = C.NUD_NOARP\n\tNUD_PERMANENT      = C.NUD_PERMANENT\n\tNUD_NONE           = C.NUD_NONE\n\tIFA_UNSPEC         = C.IFA_UNSPEC\n\tIFA_ADDRESS        = C.IFA_ADDRESS\n\tIFA_LOCAL          = C.IFA_LOCAL\n\tIFA_LABEL          = C.IFA_LABEL\n\tIFA_BROADCAST      = C.IFA_BROADCAST\n\tIFA_ANYCAST        = C.IFA_ANYCAST\n\tIFA_CACHEINFO      = C.IFA_CACHEINFO\n\tIFA_MULTICAST      = C.IFA_MULTICAST\n\tIFA_FLAGS          = C.IFA_FLAGS\n\tIFA_RT_PRIORITY    = C.IFA_RT_PRIORITY\n\tIFA_TARGET_NETNSID = C.IFA_TARGET_NETNSID\n\tRT_SCOPE_UNIVERSE  = C.RT_SCOPE_UNIVERSE\n\tRT_SCOPE_SITE      = C.RT_SCOPE_SITE\n\tRT_SCOPE_LINK      = C.RT_SCOPE_LINK\n\tRT_SCOPE_HOST      = C.RT_SCOPE_HOST\n\tRT_SCOPE_NOWHERE   = C.RT_SCOPE_NOWHERE\n\tRT_TABLE_UNSPEC    = C.RT_TABLE_UNSPEC\n\tRT_TABLE_COMPAT    = C.RT_TABLE_COMPAT\n\tRT_TABLE_DEFAULT   = C.RT_TABLE_DEFAULT\n\tRT_TABLE_MAIN      = C.RT_TABLE_MAIN\n\tRT_TABLE_LOCAL     = C.RT_TABLE_LOCAL\n\tRT_TABLE_MAX       = C.RT_TABLE_MAX\n\tRTA_UNSPEC         = C.RTA_UNSPEC\n\tRTA_DST            = C.RTA_DST\n\tRTA_SRC            = C.RTA_SRC\n\tRTA_IIF            = C.RTA_IIF\n\tRTA_OIF            = C.RTA_OIF\n\tRTA_GATEWAY        = C.RTA_GATEWAY\n\tRTA_PRIORITY       = C.RTA_PRIORITY\n\tRTA_PREFSRC        = C.RTA_PREFSRC\n\tRTA_METRICS        = C.RTA_METRICS\n\tRTA_MULTIPATH      = C.RTA_MULTIPATH\n\tRTA_FLOW           = C.RTA_FLOW\n\tRTA_CACHEINFO      = C.RTA_CACHEINFO\n\tRTA_TABLE          = C.RTA_TABLE\n\tRTA_MARK           = C.RTA_MARK\n\tRTA_MFC_STATS      = C.RTA_MFC_STATS\n\tRTA_VIA            = C.RTA_VIA\n\tRTA_NEWDST         = C.RTA_NEWDST\n\tRTA_PREF           = C.RTA_PREF\n\tRTA_ENCAP_TYPE     = C.RTA_ENCAP_TYPE\n\tRTA_ENCAP          = C.RTA_ENCAP\n\tRTA_EXPIRES        = C.RTA_EXPIRES\n\tRTA_PAD            = C.RTA_PAD\n\tRTA_UID            = C.RTA_UID\n\tRTA_TTL_PROPAGATE  = C.RTA_TTL_PROPAGATE\n\tRTA_IP_PROTO       = C.RTA_IP_PROTO\n\tRTA_SPORT          = C.RTA_SPORT\n\tRTA_DPORT          = C.RTA_DPORT\n\tRTN_UNSPEC         = C.RTN_UNSPEC\n\tRTN_UNICAST        = C.RTN_UNICAST\n\tRTN_LOCAL          = C.RTN_LOCAL\n\tRTN_BROADCAST      = C.RTN_BROADCAST\n\tRTN_ANYCAST        = C.RTN_ANYCAST\n\tRTN_MULTICAST      = C.RTN_MULTICAST\n\tRTN_BLACKHOLE      = C.RTN_BLACKHOLE\n\tRTN_UNREACHABLE    = C.RTN_UNREACHABLE\n\tRTN_PROHIBIT       = C.RTN_PROHIBIT\n\tRTN_THROW          = C.RTN_THROW\n\tRTN_NAT            = C.RTN_NAT\n\tRTN_XRESOLVE       = C.RTN_XRESOLVE\n\tSizeofNlMsghdr     = C.sizeof_struct_nlmsghdr\n\tSizeofNlMsgerr     = C.sizeof_struct_nlmsgerr\n\tSizeofRtGenmsg     = C.sizeof_struct_rtgenmsg\n\tSizeofNlAttr       = C.sizeof_struct_nlattr\n\tSizeofRtAttr       = C.sizeof_struct_rtattr\n\tSizeofIfInfomsg    = C.sizeof_struct_ifinfomsg\n\tSizeofIfAddrmsg    = C.sizeof_struct_ifaddrmsg\n\tSizeofIfaCacheinfo = C.sizeof_struct_ifa_cacheinfo\n\tSizeofRtMsg        = C.sizeof_struct_rtmsg\n\tSizeofRtNexthop    = C.sizeof_struct_rtnexthop\n\tSizeofNdUseroptmsg = C.sizeof_struct_nduseroptmsg\n\tSizeofNdMsg        = C.sizeof_struct_ndmsg\n)\n\ntype NlMsghdr C.struct_nlmsghdr\n\ntype NlMsgerr C.struct_nlmsgerr\n\ntype RtGenmsg C.struct_rtgenmsg\n\ntype NlAttr C.struct_nlattr\n\ntype RtAttr C.struct_rtattr\n\ntype IfInfomsg C.struct_ifinfomsg\n\ntype IfAddrmsg C.struct_ifaddrmsg\n\ntype IfaCacheinfo C.struct_ifa_cacheinfo\n\ntype RtMsg C.struct_rtmsg\n\ntype RtNexthop C.struct_rtnexthop\n\ntype NdUseroptmsg C.struct_nduseroptmsg\n\ntype NdMsg C.struct_ndmsg\n\n// ICMP socket options\n\nconst (\n\tICMP_FILTER = C.ICMP_FILTER\n\n\tICMPV6_FILTER             = C.ICMPV6_FILTER\n\tICMPV6_FILTER_BLOCK       = C.ICMPV6_FILTER_BLOCK\n\tICMPV6_FILTER_BLOCKOTHERS = C.ICMPV6_FILTER_BLOCKOTHERS\n\tICMPV6_FILTER_PASS        = C.ICMPV6_FILTER_PASS\n\tICMPV6_FILTER_PASSONLY    = C.ICMPV6_FILTER_PASSONLY\n)\n\n// Linux socket filter\n\nconst (\n\tSizeofSockFilter = C.sizeof_struct_sock_filter\n\tSizeofSockFprog  = C.sizeof_struct_sock_fprog\n)\n\ntype SockFilter C.struct_sock_filter\n\ntype SockFprog C.struct_sock_fprog\n\n// Inotify\n\ntype InotifyEvent C.struct_inotify_event\n\nconst SizeofInotifyEvent = C.sizeof_struct_inotify_event\n\n// Ptrace\n\n// Register structures\ntype PtraceRegs C.PtraceRegs\n\n// Structures contained in PtraceRegs on s390x (exported by mkpost.go)\ntype PtracePsw C.ptracePsw\n\ntype PtraceFpregs C.ptraceFpregs\n\ntype PtracePer C.ptracePer\n\n// Misc\n\ntype FdSet C.fd_set\n\ntype Sysinfo_t C.struct_sysinfo\n\nconst SI_LOAD_SHIFT = C.SI_LOAD_SHIFT\n\ntype Utsname C.struct_utsname\n\ntype Ustat_t C.struct_ustat\n\ntype EpollEvent C.struct_my_epoll_event\n\nconst (\n\tAT_EMPTY_PATH   = C.AT_EMPTY_PATH\n\tAT_FDCWD        = C.AT_FDCWD\n\tAT_NO_AUTOMOUNT = C.AT_NO_AUTOMOUNT\n\tAT_REMOVEDIR    = C.AT_REMOVEDIR\n\n\tAT_STATX_SYNC_AS_STAT = C.AT_STATX_SYNC_AS_STAT\n\tAT_STATX_FORCE_SYNC   = C.AT_STATX_FORCE_SYNC\n\tAT_STATX_DONT_SYNC    = C.AT_STATX_DONT_SYNC\n\n\tAT_RECURSIVE = C.AT_RECURSIVE\n\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\n\tAT_EACCESS = C.AT_EACCESS\n\n\tOPEN_TREE_CLONE   = C.OPEN_TREE_CLONE\n\tOPEN_TREE_CLOEXEC = C.OPEN_TREE_CLOEXEC\n\n\tMOVE_MOUNT_F_SYMLINKS   = C.MOVE_MOUNT_F_SYMLINKS\n\tMOVE_MOUNT_F_AUTOMOUNTS = C.MOVE_MOUNT_F_AUTOMOUNTS\n\tMOVE_MOUNT_F_EMPTY_PATH = C.MOVE_MOUNT_F_EMPTY_PATH\n\tMOVE_MOUNT_T_SYMLINKS   = C.MOVE_MOUNT_T_SYMLINKS\n\tMOVE_MOUNT_T_AUTOMOUNTS = C.MOVE_MOUNT_T_AUTOMOUNTS\n\tMOVE_MOUNT_T_EMPTY_PATH = C.MOVE_MOUNT_T_EMPTY_PATH\n\tMOVE_MOUNT_SET_GROUP    = C.MOVE_MOUNT_SET_GROUP\n\n\tFSOPEN_CLOEXEC = C.FSOPEN_CLOEXEC\n\n\tFSPICK_CLOEXEC          = C.FSPICK_CLOEXEC\n\tFSPICK_SYMLINK_NOFOLLOW = C.FSPICK_SYMLINK_NOFOLLOW\n\tFSPICK_NO_AUTOMOUNT     = C.FSPICK_NO_AUTOMOUNT\n\tFSPICK_EMPTY_PATH       = C.FSPICK_EMPTY_PATH\n\n\tFSMOUNT_CLOEXEC = C.FSMOUNT_CLOEXEC\n\n\tFSCONFIG_SET_FLAG        = C.FSCONFIG_SET_FLAG\n\tFSCONFIG_SET_STRING      = C.FSCONFIG_SET_STRING\n\tFSCONFIG_SET_BINARY      = C.FSCONFIG_SET_BINARY\n\tFSCONFIG_SET_PATH        = C.FSCONFIG_SET_PATH\n\tFSCONFIG_SET_PATH_EMPTY  = C.FSCONFIG_SET_PATH_EMPTY\n\tFSCONFIG_SET_FD          = C.FSCONFIG_SET_FD\n\tFSCONFIG_CMD_CREATE      = C.FSCONFIG_CMD_CREATE\n\tFSCONFIG_CMD_RECONFIGURE = C.FSCONFIG_CMD_RECONFIGURE\n)\n\ntype OpenHow C.struct_open_how\n\nconst SizeofOpenHow = C.sizeof_struct_open_how\n\nconst (\n\tRESOLVE_BENEATH       = C.RESOLVE_BENEATH\n\tRESOLVE_IN_ROOT       = C.RESOLVE_IN_ROOT\n\tRESOLVE_NO_MAGICLINKS = C.RESOLVE_NO_MAGICLINKS\n\tRESOLVE_NO_SYMLINKS   = C.RESOLVE_NO_SYMLINKS\n\tRESOLVE_NO_XDEV       = C.RESOLVE_NO_XDEV\n)\n\ntype PollFd C.struct_pollfd\n\nconst (\n\tPOLLIN    = C.POLLIN\n\tPOLLPRI   = C.POLLPRI\n\tPOLLOUT   = C.POLLOUT\n\tPOLLRDHUP = C.POLLRDHUP\n\tPOLLERR   = C.POLLERR\n\tPOLLHUP   = C.POLLHUP\n\tPOLLNVAL  = C.POLLNVAL\n)\n\ntype Sigset_t C.sigset_t\ntype sigset_argpack struct {\n\tss    *Sigset_t\n\tssLen uintptr // Size (in bytes) of object pointed to by ss.\n}\n\nconst _C__NSIG = C._NSIG\n\nconst (\n\tSIG_BLOCK   = C.SIG_BLOCK\n\tSIG_UNBLOCK = C.SIG_UNBLOCK\n\tSIG_SETMASK = C.SIG_SETMASK\n)\n\ntype SignalfdSiginfo C.struct_signalfd_siginfo\n\ntype Siginfo C.siginfo_t\n\n// Terminal handling\n\ntype Termios C.termios_t\n\ntype Winsize C.struct_winsize\n\n// Taskstats and cgroup stats.\n\ntype Taskstats C.struct_taskstats\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = C.TASKSTATS_CMD_UNSPEC\n\tTASKSTATS_CMD_GET                     = C.TASKSTATS_CMD_GET\n\tTASKSTATS_CMD_NEW                     = C.TASKSTATS_CMD_NEW\n\tTASKSTATS_TYPE_UNSPEC                 = C.TASKSTATS_TYPE_UNSPEC\n\tTASKSTATS_TYPE_PID                    = C.TASKSTATS_TYPE_PID\n\tTASKSTATS_TYPE_TGID                   = C.TASKSTATS_TYPE_TGID\n\tTASKSTATS_TYPE_STATS                  = C.TASKSTATS_TYPE_STATS\n\tTASKSTATS_TYPE_AGGR_PID               = C.TASKSTATS_TYPE_AGGR_PID\n\tTASKSTATS_TYPE_AGGR_TGID              = C.TASKSTATS_TYPE_AGGR_TGID\n\tTASKSTATS_TYPE_NULL                   = C.TASKSTATS_TYPE_NULL\n\tTASKSTATS_CMD_ATTR_UNSPEC             = C.TASKSTATS_CMD_ATTR_UNSPEC\n\tTASKSTATS_CMD_ATTR_PID                = C.TASKSTATS_CMD_ATTR_PID\n\tTASKSTATS_CMD_ATTR_TGID               = C.TASKSTATS_CMD_ATTR_TGID\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = C.TASKSTATS_CMD_ATTR_REGISTER_CPUMASK\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = C.TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK\n)\n\ntype CGroupStats C.struct_cgroupstats\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = C.__TASKSTATS_CMD_MAX\n\tCGROUPSTATS_CMD_GET           = C.CGROUPSTATS_CMD_GET\n\tCGROUPSTATS_CMD_NEW           = C.CGROUPSTATS_CMD_NEW\n\tCGROUPSTATS_TYPE_UNSPEC       = C.CGROUPSTATS_TYPE_UNSPEC\n\tCGROUPSTATS_TYPE_CGROUP_STATS = C.CGROUPSTATS_TYPE_CGROUP_STATS\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = C.CGROUPSTATS_CMD_ATTR_UNSPEC\n\tCGROUPSTATS_CMD_ATTR_FD       = C.CGROUPSTATS_CMD_ATTR_FD\n)\n\n// Generic netlink\n\ntype Genlmsghdr C.struct_genlmsghdr\n\n// Generated by:\n// $ perl -nlE '/^\\s*(CTRL_\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/genetlink.h\nconst (\n\tCTRL_CMD_UNSPEC            = C.CTRL_CMD_UNSPEC\n\tCTRL_CMD_NEWFAMILY         = C.CTRL_CMD_NEWFAMILY\n\tCTRL_CMD_DELFAMILY         = C.CTRL_CMD_DELFAMILY\n\tCTRL_CMD_GETFAMILY         = C.CTRL_CMD_GETFAMILY\n\tCTRL_CMD_NEWOPS            = C.CTRL_CMD_NEWOPS\n\tCTRL_CMD_DELOPS            = C.CTRL_CMD_DELOPS\n\tCTRL_CMD_GETOPS            = C.CTRL_CMD_GETOPS\n\tCTRL_CMD_NEWMCAST_GRP      = C.CTRL_CMD_NEWMCAST_GRP\n\tCTRL_CMD_DELMCAST_GRP      = C.CTRL_CMD_DELMCAST_GRP\n\tCTRL_CMD_GETMCAST_GRP      = C.CTRL_CMD_GETMCAST_GRP\n\tCTRL_CMD_GETPOLICY         = C.CTRL_CMD_GETPOLICY\n\tCTRL_ATTR_UNSPEC           = C.CTRL_ATTR_UNSPEC\n\tCTRL_ATTR_FAMILY_ID        = C.CTRL_ATTR_FAMILY_ID\n\tCTRL_ATTR_FAMILY_NAME      = C.CTRL_ATTR_FAMILY_NAME\n\tCTRL_ATTR_VERSION          = C.CTRL_ATTR_VERSION\n\tCTRL_ATTR_HDRSIZE          = C.CTRL_ATTR_HDRSIZE\n\tCTRL_ATTR_MAXATTR          = C.CTRL_ATTR_MAXATTR\n\tCTRL_ATTR_OPS              = C.CTRL_ATTR_OPS\n\tCTRL_ATTR_MCAST_GROUPS     = C.CTRL_ATTR_MCAST_GROUPS\n\tCTRL_ATTR_POLICY           = C.CTRL_ATTR_POLICY\n\tCTRL_ATTR_OP_POLICY        = C.CTRL_ATTR_OP_POLICY\n\tCTRL_ATTR_OP               = C.CTRL_ATTR_OP\n\tCTRL_ATTR_OP_UNSPEC        = C.CTRL_ATTR_OP_UNSPEC\n\tCTRL_ATTR_OP_ID            = C.CTRL_ATTR_OP_ID\n\tCTRL_ATTR_OP_FLAGS         = C.CTRL_ATTR_OP_FLAGS\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = C.CTRL_ATTR_MCAST_GRP_UNSPEC\n\tCTRL_ATTR_MCAST_GRP_NAME   = C.CTRL_ATTR_MCAST_GRP_NAME\n\tCTRL_ATTR_MCAST_GRP_ID     = C.CTRL_ATTR_MCAST_GRP_ID\n\tCTRL_ATTR_POLICY_UNSPEC    = C.CTRL_ATTR_POLICY_UNSPEC\n\tCTRL_ATTR_POLICY_DO        = C.CTRL_ATTR_POLICY_DO\n\tCTRL_ATTR_POLICY_DUMP      = C.CTRL_ATTR_POLICY_DUMP\n\tCTRL_ATTR_POLICY_DUMP_MAX  = C.CTRL_ATTR_POLICY_DUMP_MAX\n)\n\n// CPU affinity\n\ntype cpuMask C.__cpu_mask\n\nconst (\n\t_CPU_SETSIZE = C.__CPU_SETSIZE\n\t_NCPUBITS    = C.__NCPUBITS\n)\n\n// Bluetooth\n\nconst (\n\tBDADDR_BREDR     = C.BDADDR_BREDR\n\tBDADDR_LE_PUBLIC = C.BDADDR_LE_PUBLIC\n\tBDADDR_LE_RANDOM = C.BDADDR_LE_RANDOM\n)\n\n// Perf subsystem\n\ntype PerfEventAttr C.struct_perf_event_attr_go\n\ntype PerfEventMmapPage C.struct_perf_event_mmap_page\n\n// Bit field in struct perf_event_attr expanded as flags.\n// Set these on PerfEventAttr.Bits by ORing them together.\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n\tPerfBitWriteBackward                 = CBitFieldMaskBit27\n)\n\n// generated by:\n// perl -nlE '/^\\s*(PERF_\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/perf_event.h\nconst (\n\tPERF_TYPE_HARDWARE                    = C.PERF_TYPE_HARDWARE\n\tPERF_TYPE_SOFTWARE                    = C.PERF_TYPE_SOFTWARE\n\tPERF_TYPE_TRACEPOINT                  = C.PERF_TYPE_TRACEPOINT\n\tPERF_TYPE_HW_CACHE                    = C.PERF_TYPE_HW_CACHE\n\tPERF_TYPE_RAW                         = C.PERF_TYPE_RAW\n\tPERF_TYPE_BREAKPOINT                  = C.PERF_TYPE_BREAKPOINT\n\tPERF_TYPE_MAX                         = C.PERF_TYPE_MAX\n\tPERF_COUNT_HW_CPU_CYCLES              = C.PERF_COUNT_HW_CPU_CYCLES\n\tPERF_COUNT_HW_INSTRUCTIONS            = C.PERF_COUNT_HW_INSTRUCTIONS\n\tPERF_COUNT_HW_CACHE_REFERENCES        = C.PERF_COUNT_HW_CACHE_REFERENCES\n\tPERF_COUNT_HW_CACHE_MISSES            = C.PERF_COUNT_HW_CACHE_MISSES\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = C.PERF_COUNT_HW_BRANCH_INSTRUCTIONS\n\tPERF_COUNT_HW_BRANCH_MISSES           = C.PERF_COUNT_HW_BRANCH_MISSES\n\tPERF_COUNT_HW_BUS_CYCLES              = C.PERF_COUNT_HW_BUS_CYCLES\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = C.PERF_COUNT_HW_STALLED_CYCLES_FRONTEND\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = C.PERF_COUNT_HW_STALLED_CYCLES_BACKEND\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = C.PERF_COUNT_HW_REF_CPU_CYCLES\n\tPERF_COUNT_HW_MAX                     = C.PERF_COUNT_HW_MAX\n\tPERF_COUNT_HW_CACHE_L1D               = C.PERF_COUNT_HW_CACHE_L1D\n\tPERF_COUNT_HW_CACHE_L1I               = C.PERF_COUNT_HW_CACHE_L1I\n\tPERF_COUNT_HW_CACHE_LL                = C.PERF_COUNT_HW_CACHE_LL\n\tPERF_COUNT_HW_CACHE_DTLB              = C.PERF_COUNT_HW_CACHE_DTLB\n\tPERF_COUNT_HW_CACHE_ITLB              = C.PERF_COUNT_HW_CACHE_ITLB\n\tPERF_COUNT_HW_CACHE_BPU               = C.PERF_COUNT_HW_CACHE_BPU\n\tPERF_COUNT_HW_CACHE_NODE              = C.PERF_COUNT_HW_CACHE_NODE\n\tPERF_COUNT_HW_CACHE_MAX               = C.PERF_COUNT_HW_CACHE_MAX\n\tPERF_COUNT_HW_CACHE_OP_READ           = C.PERF_COUNT_HW_CACHE_OP_READ\n\tPERF_COUNT_HW_CACHE_OP_WRITE          = C.PERF_COUNT_HW_CACHE_OP_WRITE\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH       = C.PERF_COUNT_HW_CACHE_OP_PREFETCH\n\tPERF_COUNT_HW_CACHE_OP_MAX            = C.PERF_COUNT_HW_CACHE_OP_MAX\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS     = C.PERF_COUNT_HW_CACHE_RESULT_ACCESS\n\tPERF_COUNT_HW_CACHE_RESULT_MISS       = C.PERF_COUNT_HW_CACHE_RESULT_MISS\n\tPERF_COUNT_HW_CACHE_RESULT_MAX        = C.PERF_COUNT_HW_CACHE_RESULT_MAX\n\tPERF_COUNT_SW_CPU_CLOCK               = C.PERF_COUNT_SW_CPU_CLOCK\n\tPERF_COUNT_SW_TASK_CLOCK              = C.PERF_COUNT_SW_TASK_CLOCK\n\tPERF_COUNT_SW_PAGE_FAULTS             = C.PERF_COUNT_SW_PAGE_FAULTS\n\tPERF_COUNT_SW_CONTEXT_SWITCHES        = C.PERF_COUNT_SW_CONTEXT_SWITCHES\n\tPERF_COUNT_SW_CPU_MIGRATIONS          = C.PERF_COUNT_SW_CPU_MIGRATIONS\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN         = C.PERF_COUNT_SW_PAGE_FAULTS_MIN\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ         = C.PERF_COUNT_SW_PAGE_FAULTS_MAJ\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS        = C.PERF_COUNT_SW_ALIGNMENT_FAULTS\n\tPERF_COUNT_SW_EMULATION_FAULTS        = C.PERF_COUNT_SW_EMULATION_FAULTS\n\tPERF_COUNT_SW_DUMMY                   = C.PERF_COUNT_SW_DUMMY\n\tPERF_COUNT_SW_BPF_OUTPUT              = C.PERF_COUNT_SW_BPF_OUTPUT\n\tPERF_COUNT_SW_MAX                     = C.PERF_COUNT_SW_MAX\n\tPERF_SAMPLE_IP                        = C.PERF_SAMPLE_IP\n\tPERF_SAMPLE_TID                       = C.PERF_SAMPLE_TID\n\tPERF_SAMPLE_TIME                      = C.PERF_SAMPLE_TIME\n\tPERF_SAMPLE_ADDR                      = C.PERF_SAMPLE_ADDR\n\tPERF_SAMPLE_READ                      = C.PERF_SAMPLE_READ\n\tPERF_SAMPLE_CALLCHAIN                 = C.PERF_SAMPLE_CALLCHAIN\n\tPERF_SAMPLE_ID                        = C.PERF_SAMPLE_ID\n\tPERF_SAMPLE_CPU                       = C.PERF_SAMPLE_CPU\n\tPERF_SAMPLE_PERIOD                    = C.PERF_SAMPLE_PERIOD\n\tPERF_SAMPLE_STREAM_ID                 = C.PERF_SAMPLE_STREAM_ID\n\tPERF_SAMPLE_RAW                       = C.PERF_SAMPLE_RAW\n\tPERF_SAMPLE_BRANCH_STACK              = C.PERF_SAMPLE_BRANCH_STACK\n\tPERF_SAMPLE_REGS_USER                 = C.PERF_SAMPLE_REGS_USER\n\tPERF_SAMPLE_STACK_USER                = C.PERF_SAMPLE_STACK_USER\n\tPERF_SAMPLE_WEIGHT                    = C.PERF_SAMPLE_WEIGHT\n\tPERF_SAMPLE_DATA_SRC                  = C.PERF_SAMPLE_DATA_SRC\n\tPERF_SAMPLE_IDENTIFIER                = C.PERF_SAMPLE_IDENTIFIER\n\tPERF_SAMPLE_TRANSACTION               = C.PERF_SAMPLE_TRANSACTION\n\tPERF_SAMPLE_REGS_INTR                 = C.PERF_SAMPLE_REGS_INTR\n\tPERF_SAMPLE_PHYS_ADDR                 = C.PERF_SAMPLE_PHYS_ADDR\n\tPERF_SAMPLE_AUX                       = C.PERF_SAMPLE_AUX\n\tPERF_SAMPLE_CGROUP                    = C.PERF_SAMPLE_CGROUP\n\tPERF_SAMPLE_DATA_PAGE_SIZE            = C.PERF_SAMPLE_DATA_PAGE_SIZE\n\tPERF_SAMPLE_CODE_PAGE_SIZE            = C.PERF_SAMPLE_CODE_PAGE_SIZE\n\tPERF_SAMPLE_WEIGHT_STRUCT             = C.PERF_SAMPLE_WEIGHT_STRUCT\n\tPERF_SAMPLE_MAX                       = C.PERF_SAMPLE_MAX\n\tPERF_SAMPLE_BRANCH_USER_SHIFT         = C.PERF_SAMPLE_BRANCH_USER_SHIFT\n\tPERF_SAMPLE_BRANCH_KERNEL_SHIFT       = C.PERF_SAMPLE_BRANCH_KERNEL_SHIFT\n\tPERF_SAMPLE_BRANCH_HV_SHIFT           = C.PERF_SAMPLE_BRANCH_HV_SHIFT\n\tPERF_SAMPLE_BRANCH_ANY_SHIFT          = C.PERF_SAMPLE_BRANCH_ANY_SHIFT\n\tPERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = C.PERF_SAMPLE_BRANCH_ANY_CALL_SHIFT\n\tPERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = C.PERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT\n\tPERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = C.PERF_SAMPLE_BRANCH_IND_CALL_SHIFT\n\tPERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = C.PERF_SAMPLE_BRANCH_ABORT_TX_SHIFT\n\tPERF_SAMPLE_BRANCH_IN_TX_SHIFT        = C.PERF_SAMPLE_BRANCH_IN_TX_SHIFT\n\tPERF_SAMPLE_BRANCH_NO_TX_SHIFT        = C.PERF_SAMPLE_BRANCH_NO_TX_SHIFT\n\tPERF_SAMPLE_BRANCH_COND_SHIFT         = C.PERF_SAMPLE_BRANCH_COND_SHIFT\n\tPERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = C.PERF_SAMPLE_BRANCH_CALL_STACK_SHIFT\n\tPERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = C.PERF_SAMPLE_BRANCH_IND_JUMP_SHIFT\n\tPERF_SAMPLE_BRANCH_CALL_SHIFT         = C.PERF_SAMPLE_BRANCH_CALL_SHIFT\n\tPERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = C.PERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT\n\tPERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = C.PERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = C.PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT\n\tPERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = C.PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = C.PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT\n\tPERF_SAMPLE_BRANCH_MAX_SHIFT          = C.PERF_SAMPLE_BRANCH_MAX_SHIFT\n\tPERF_SAMPLE_BRANCH_USER               = C.PERF_SAMPLE_BRANCH_USER\n\tPERF_SAMPLE_BRANCH_KERNEL             = C.PERF_SAMPLE_BRANCH_KERNEL\n\tPERF_SAMPLE_BRANCH_HV                 = C.PERF_SAMPLE_BRANCH_HV\n\tPERF_SAMPLE_BRANCH_ANY                = C.PERF_SAMPLE_BRANCH_ANY\n\tPERF_SAMPLE_BRANCH_ANY_CALL           = C.PERF_SAMPLE_BRANCH_ANY_CALL\n\tPERF_SAMPLE_BRANCH_ANY_RETURN         = C.PERF_SAMPLE_BRANCH_ANY_RETURN\n\tPERF_SAMPLE_BRANCH_IND_CALL           = C.PERF_SAMPLE_BRANCH_IND_CALL\n\tPERF_SAMPLE_BRANCH_ABORT_TX           = C.PERF_SAMPLE_BRANCH_ABORT_TX\n\tPERF_SAMPLE_BRANCH_IN_TX              = C.PERF_SAMPLE_BRANCH_IN_TX\n\tPERF_SAMPLE_BRANCH_NO_TX              = C.PERF_SAMPLE_BRANCH_NO_TX\n\tPERF_SAMPLE_BRANCH_COND               = C.PERF_SAMPLE_BRANCH_COND\n\tPERF_SAMPLE_BRANCH_CALL_STACK         = C.PERF_SAMPLE_BRANCH_CALL_STACK\n\tPERF_SAMPLE_BRANCH_IND_JUMP           = C.PERF_SAMPLE_BRANCH_IND_JUMP\n\tPERF_SAMPLE_BRANCH_CALL               = C.PERF_SAMPLE_BRANCH_CALL\n\tPERF_SAMPLE_BRANCH_NO_FLAGS           = C.PERF_SAMPLE_BRANCH_NO_FLAGS\n\tPERF_SAMPLE_BRANCH_NO_CYCLES          = C.PERF_SAMPLE_BRANCH_NO_CYCLES\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE          = C.PERF_SAMPLE_BRANCH_TYPE_SAVE\n\tPERF_SAMPLE_BRANCH_HW_INDEX           = C.PERF_SAMPLE_BRANCH_HW_INDEX\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE          = C.PERF_SAMPLE_BRANCH_PRIV_SAVE\n\tPERF_SAMPLE_BRANCH_MAX                = C.PERF_SAMPLE_BRANCH_MAX\n\tPERF_BR_UNKNOWN                       = C.PERF_BR_UNKNOWN\n\tPERF_BR_COND                          = C.PERF_BR_COND\n\tPERF_BR_UNCOND                        = C.PERF_BR_UNCOND\n\tPERF_BR_IND                           = C.PERF_BR_IND\n\tPERF_BR_CALL                          = C.PERF_BR_CALL\n\tPERF_BR_IND_CALL                      = C.PERF_BR_IND_CALL\n\tPERF_BR_RET                           = C.PERF_BR_RET\n\tPERF_BR_SYSCALL                       = C.PERF_BR_SYSCALL\n\tPERF_BR_SYSRET                        = C.PERF_BR_SYSRET\n\tPERF_BR_COND_CALL                     = C.PERF_BR_COND_CALL\n\tPERF_BR_COND_RET                      = C.PERF_BR_COND_RET\n\tPERF_BR_ERET                          = C.PERF_BR_ERET\n\tPERF_BR_IRQ                           = C.PERF_BR_IRQ\n\tPERF_BR_SERROR                        = C.PERF_BR_SERROR\n\tPERF_BR_NO_TX                         = C.PERF_BR_NO_TX\n\tPERF_BR_EXTEND_ABI                    = C.PERF_BR_EXTEND_ABI\n\tPERF_BR_MAX                           = C.PERF_BR_MAX\n\tPERF_SAMPLE_REGS_ABI_NONE             = C.PERF_SAMPLE_REGS_ABI_NONE\n\tPERF_SAMPLE_REGS_ABI_32               = C.PERF_SAMPLE_REGS_ABI_32\n\tPERF_SAMPLE_REGS_ABI_64               = C.PERF_SAMPLE_REGS_ABI_64\n\tPERF_TXN_ELISION                      = C.PERF_TXN_ELISION\n\tPERF_TXN_TRANSACTION                  = C.PERF_TXN_TRANSACTION\n\tPERF_TXN_SYNC                         = C.PERF_TXN_SYNC\n\tPERF_TXN_ASYNC                        = C.PERF_TXN_ASYNC\n\tPERF_TXN_RETRY                        = C.PERF_TXN_RETRY\n\tPERF_TXN_CONFLICT                     = C.PERF_TXN_CONFLICT\n\tPERF_TXN_CAPACITY_WRITE               = C.PERF_TXN_CAPACITY_WRITE\n\tPERF_TXN_CAPACITY_READ                = C.PERF_TXN_CAPACITY_READ\n\tPERF_TXN_MAX                          = C.PERF_TXN_MAX\n\tPERF_TXN_ABORT_MASK                   = C.PERF_TXN_ABORT_MASK\n\tPERF_TXN_ABORT_SHIFT                  = C.PERF_TXN_ABORT_SHIFT\n\tPERF_FORMAT_TOTAL_TIME_ENABLED        = C.PERF_FORMAT_TOTAL_TIME_ENABLED\n\tPERF_FORMAT_TOTAL_TIME_RUNNING        = C.PERF_FORMAT_TOTAL_TIME_RUNNING\n\tPERF_FORMAT_ID                        = C.PERF_FORMAT_ID\n\tPERF_FORMAT_GROUP                     = C.PERF_FORMAT_GROUP\n\tPERF_FORMAT_LOST                      = C.PERF_FORMAT_LOST\n\tPERF_FORMAT_MAX                       = C.PERF_FORMAT_MAX\n\tPERF_IOC_FLAG_GROUP                   = C.PERF_IOC_FLAG_GROUP\n\tPERF_RECORD_MMAP                      = C.PERF_RECORD_MMAP\n\tPERF_RECORD_LOST                      = C.PERF_RECORD_LOST\n\tPERF_RECORD_COMM                      = C.PERF_RECORD_COMM\n\tPERF_RECORD_EXIT                      = C.PERF_RECORD_EXIT\n\tPERF_RECORD_THROTTLE                  = C.PERF_RECORD_THROTTLE\n\tPERF_RECORD_UNTHROTTLE                = C.PERF_RECORD_UNTHROTTLE\n\tPERF_RECORD_FORK                      = C.PERF_RECORD_FORK\n\tPERF_RECORD_READ                      = C.PERF_RECORD_READ\n\tPERF_RECORD_SAMPLE                    = C.PERF_RECORD_SAMPLE\n\tPERF_RECORD_MMAP2                     = C.PERF_RECORD_MMAP2\n\tPERF_RECORD_AUX                       = C.PERF_RECORD_AUX\n\tPERF_RECORD_ITRACE_START              = C.PERF_RECORD_ITRACE_START\n\tPERF_RECORD_LOST_SAMPLES              = C.PERF_RECORD_LOST_SAMPLES\n\tPERF_RECORD_SWITCH                    = C.PERF_RECORD_SWITCH\n\tPERF_RECORD_SWITCH_CPU_WIDE           = C.PERF_RECORD_SWITCH_CPU_WIDE\n\tPERF_RECORD_NAMESPACES                = C.PERF_RECORD_NAMESPACES\n\tPERF_RECORD_KSYMBOL                   = C.PERF_RECORD_KSYMBOL\n\tPERF_RECORD_BPF_EVENT                 = C.PERF_RECORD_BPF_EVENT\n\tPERF_RECORD_CGROUP                    = C.PERF_RECORD_CGROUP\n\tPERF_RECORD_TEXT_POKE                 = C.PERF_RECORD_TEXT_POKE\n\tPERF_RECORD_AUX_OUTPUT_HW_ID          = C.PERF_RECORD_AUX_OUTPUT_HW_ID\n\tPERF_RECORD_MAX                       = C.PERF_RECORD_MAX\n\tPERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = C.PERF_RECORD_KSYMBOL_TYPE_UNKNOWN\n\tPERF_RECORD_KSYMBOL_TYPE_BPF          = C.PERF_RECORD_KSYMBOL_TYPE_BPF\n\tPERF_RECORD_KSYMBOL_TYPE_OOL          = C.PERF_RECORD_KSYMBOL_TYPE_OOL\n\tPERF_RECORD_KSYMBOL_TYPE_MAX          = C.PERF_RECORD_KSYMBOL_TYPE_MAX\n\tPERF_BPF_EVENT_UNKNOWN                = C.PERF_BPF_EVENT_UNKNOWN\n\tPERF_BPF_EVENT_PROG_LOAD              = C.PERF_BPF_EVENT_PROG_LOAD\n\tPERF_BPF_EVENT_PROG_UNLOAD            = C.PERF_BPF_EVENT_PROG_UNLOAD\n\tPERF_BPF_EVENT_MAX                    = C.PERF_BPF_EVENT_MAX\n\tPERF_CONTEXT_HV                       = C.PERF_CONTEXT_HV\n\tPERF_CONTEXT_KERNEL                   = C.PERF_CONTEXT_KERNEL\n\tPERF_CONTEXT_USER                     = C.PERF_CONTEXT_USER\n\tPERF_CONTEXT_GUEST                    = C.PERF_CONTEXT_GUEST\n\tPERF_CONTEXT_GUEST_KERNEL             = C.PERF_CONTEXT_GUEST_KERNEL\n\tPERF_CONTEXT_GUEST_USER               = C.PERF_CONTEXT_GUEST_USER\n\tPERF_CONTEXT_MAX                      = C.PERF_CONTEXT_MAX\n)\n\n// Platform ABI and calling convention\n\n// Bit field masks for interoperability with C code that uses bit fields.\n// Each mask corresponds to a single bit set - bit field behavior can be replicated by combining\n// the masks with bitwise OR.\nconst (\n\tCBitFieldMaskBit0  = C.BITFIELD_MASK_0\n\tCBitFieldMaskBit1  = C.BITFIELD_MASK_1\n\tCBitFieldMaskBit2  = C.BITFIELD_MASK_2\n\tCBitFieldMaskBit3  = C.BITFIELD_MASK_3\n\tCBitFieldMaskBit4  = C.BITFIELD_MASK_4\n\tCBitFieldMaskBit5  = C.BITFIELD_MASK_5\n\tCBitFieldMaskBit6  = C.BITFIELD_MASK_6\n\tCBitFieldMaskBit7  = C.BITFIELD_MASK_7\n\tCBitFieldMaskBit8  = C.BITFIELD_MASK_8\n\tCBitFieldMaskBit9  = C.BITFIELD_MASK_9\n\tCBitFieldMaskBit10 = C.BITFIELD_MASK_10\n\tCBitFieldMaskBit11 = C.BITFIELD_MASK_11\n\tCBitFieldMaskBit12 = C.BITFIELD_MASK_12\n\tCBitFieldMaskBit13 = C.BITFIELD_MASK_13\n\tCBitFieldMaskBit14 = C.BITFIELD_MASK_14\n\tCBitFieldMaskBit15 = C.BITFIELD_MASK_15\n\tCBitFieldMaskBit16 = C.BITFIELD_MASK_16\n\tCBitFieldMaskBit17 = C.BITFIELD_MASK_17\n\tCBitFieldMaskBit18 = C.BITFIELD_MASK_18\n\tCBitFieldMaskBit19 = C.BITFIELD_MASK_19\n\tCBitFieldMaskBit20 = C.BITFIELD_MASK_20\n\tCBitFieldMaskBit21 = C.BITFIELD_MASK_21\n\tCBitFieldMaskBit22 = C.BITFIELD_MASK_22\n\tCBitFieldMaskBit23 = C.BITFIELD_MASK_23\n\tCBitFieldMaskBit24 = C.BITFIELD_MASK_24\n\tCBitFieldMaskBit25 = C.BITFIELD_MASK_25\n\tCBitFieldMaskBit26 = C.BITFIELD_MASK_26\n\tCBitFieldMaskBit27 = C.BITFIELD_MASK_27\n\tCBitFieldMaskBit28 = C.BITFIELD_MASK_28\n\tCBitFieldMaskBit29 = C.BITFIELD_MASK_29\n\tCBitFieldMaskBit30 = C.BITFIELD_MASK_30\n\tCBitFieldMaskBit31 = C.BITFIELD_MASK_31\n\tCBitFieldMaskBit32 = C.BITFIELD_MASK_32\n\tCBitFieldMaskBit33 = C.BITFIELD_MASK_33\n\tCBitFieldMaskBit34 = C.BITFIELD_MASK_34\n\tCBitFieldMaskBit35 = C.BITFIELD_MASK_35\n\tCBitFieldMaskBit36 = C.BITFIELD_MASK_36\n\tCBitFieldMaskBit37 = C.BITFIELD_MASK_37\n\tCBitFieldMaskBit38 = C.BITFIELD_MASK_38\n\tCBitFieldMaskBit39 = C.BITFIELD_MASK_39\n\tCBitFieldMaskBit40 = C.BITFIELD_MASK_40\n\tCBitFieldMaskBit41 = C.BITFIELD_MASK_41\n\tCBitFieldMaskBit42 = C.BITFIELD_MASK_42\n\tCBitFieldMaskBit43 = C.BITFIELD_MASK_43\n\tCBitFieldMaskBit44 = C.BITFIELD_MASK_44\n\tCBitFieldMaskBit45 = C.BITFIELD_MASK_45\n\tCBitFieldMaskBit46 = C.BITFIELD_MASK_46\n\tCBitFieldMaskBit47 = C.BITFIELD_MASK_47\n\tCBitFieldMaskBit48 = C.BITFIELD_MASK_48\n\tCBitFieldMaskBit49 = C.BITFIELD_MASK_49\n\tCBitFieldMaskBit50 = C.BITFIELD_MASK_50\n\tCBitFieldMaskBit51 = C.BITFIELD_MASK_51\n\tCBitFieldMaskBit52 = C.BITFIELD_MASK_52\n\tCBitFieldMaskBit53 = C.BITFIELD_MASK_53\n\tCBitFieldMaskBit54 = C.BITFIELD_MASK_54\n\tCBitFieldMaskBit55 = C.BITFIELD_MASK_55\n\tCBitFieldMaskBit56 = C.BITFIELD_MASK_56\n\tCBitFieldMaskBit57 = C.BITFIELD_MASK_57\n\tCBitFieldMaskBit58 = C.BITFIELD_MASK_58\n\tCBitFieldMaskBit59 = C.BITFIELD_MASK_59\n\tCBitFieldMaskBit60 = C.BITFIELD_MASK_60\n\tCBitFieldMaskBit61 = C.BITFIELD_MASK_61\n\tCBitFieldMaskBit62 = C.BITFIELD_MASK_62\n\tCBitFieldMaskBit63 = C.BITFIELD_MASK_63\n)\n\n// TCP-MD5 signature.\n\ntype SockaddrStorage C.struct_sockaddr_storage\n\ntype TCPMD5Sig C.struct_tcp_md5sig\n\n// Disk drive operations.\n\ntype HDDriveCmdHdr C.struct_hd_drive_cmd_hdr\n\ntype HDGeometry C.struct_hd_geometry\n\ntype HDDriveID C.struct_hd_driveid\n\n// Statfs\n\ntype Statfs_t C.struct_statfs\n\nconst (\n\tST_MANDLOCK    = C.ST_MANDLOCK\n\tST_NOATIME     = C.ST_NOATIME\n\tST_NODEV       = C.ST_NODEV\n\tST_NODIRATIME  = C.ST_NODIRATIME\n\tST_NOEXEC      = C.ST_NOEXEC\n\tST_NOSUID      = C.ST_NOSUID\n\tST_RDONLY      = C.ST_RDONLY\n\tST_RELATIME    = C.ST_RELATIME\n\tST_SYNCHRONOUS = C.ST_SYNCHRONOUS\n)\n\n// TPacket\n\ntype TpacketHdr C.struct_tpacket_hdr\n\ntype Tpacket2Hdr C.struct_tpacket2_hdr\n\ntype Tpacket3Hdr C.struct_tpacket3_hdr\n\ntype TpacketHdrVariant1 C.struct_tpacket_hdr_variant1\n\ntype TpacketBlockDesc C.struct_tpacket_block_desc\n\ntype TpacketBDTS C.struct_tpacket_bd_ts\n\ntype TpacketHdrV1 C.struct_tpacket_hdr_v1\n\ntype TpacketReq C.struct_tpacket_req\n\ntype TpacketReq3 C.struct_tpacket_req3\n\ntype TpacketStats C.struct_tpacket_stats\n\ntype TpacketStatsV3 C.struct_tpacket_stats_v3\n\ntype TpacketAuxdata C.struct_tpacket_auxdata\n\nconst (\n\tTPACKET_V1 = C.TPACKET_V1\n\tTPACKET_V2 = C.TPACKET_V2\n\tTPACKET_V3 = C.TPACKET_V3\n)\n\nconst (\n\tSizeofTpacketHdr  = C.sizeof_struct_tpacket_hdr\n\tSizeofTpacket2Hdr = C.sizeof_struct_tpacket2_hdr\n\tSizeofTpacket3Hdr = C.sizeof_struct_tpacket3_hdr\n\n\tSizeofTpacketStats   = C.sizeof_struct_tpacket_stats\n\tSizeofTpacketStatsV3 = C.sizeof_struct_tpacket_stats_v3\n)\n\n// generated by:\n// perl -nlE '/^\\s*((IFLA|NETKIT)\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/if_link.h\nconst (\n\tIFLA_UNSPEC                                = C.IFLA_UNSPEC\n\tIFLA_ADDRESS                               = C.IFLA_ADDRESS\n\tIFLA_BROADCAST                             = C.IFLA_BROADCAST\n\tIFLA_IFNAME                                = C.IFLA_IFNAME\n\tIFLA_MTU                                   = C.IFLA_MTU\n\tIFLA_LINK                                  = C.IFLA_LINK\n\tIFLA_QDISC                                 = C.IFLA_QDISC\n\tIFLA_STATS                                 = C.IFLA_STATS\n\tIFLA_COST                                  = C.IFLA_COST\n\tIFLA_PRIORITY                              = C.IFLA_PRIORITY\n\tIFLA_MASTER                                = C.IFLA_MASTER\n\tIFLA_WIRELESS                              = C.IFLA_WIRELESS\n\tIFLA_PROTINFO                              = C.IFLA_PROTINFO\n\tIFLA_TXQLEN                                = C.IFLA_TXQLEN\n\tIFLA_MAP                                   = C.IFLA_MAP\n\tIFLA_WEIGHT                                = C.IFLA_WEIGHT\n\tIFLA_OPERSTATE                             = C.IFLA_OPERSTATE\n\tIFLA_LINKMODE                              = C.IFLA_LINKMODE\n\tIFLA_LINKINFO                              = C.IFLA_LINKINFO\n\tIFLA_NET_NS_PID                            = C.IFLA_NET_NS_PID\n\tIFLA_IFALIAS                               = C.IFLA_IFALIAS\n\tIFLA_NUM_VF                                = C.IFLA_NUM_VF\n\tIFLA_VFINFO_LIST                           = C.IFLA_VFINFO_LIST\n\tIFLA_STATS64                               = C.IFLA_STATS64\n\tIFLA_VF_PORTS                              = C.IFLA_VF_PORTS\n\tIFLA_PORT_SELF                             = C.IFLA_PORT_SELF\n\tIFLA_AF_SPEC                               = C.IFLA_AF_SPEC\n\tIFLA_GROUP                                 = C.IFLA_GROUP\n\tIFLA_NET_NS_FD                             = C.IFLA_NET_NS_FD\n\tIFLA_EXT_MASK                              = C.IFLA_EXT_MASK\n\tIFLA_PROMISCUITY                           = C.IFLA_PROMISCUITY\n\tIFLA_NUM_TX_QUEUES                         = C.IFLA_NUM_TX_QUEUES\n\tIFLA_NUM_RX_QUEUES                         = C.IFLA_NUM_RX_QUEUES\n\tIFLA_CARRIER                               = C.IFLA_CARRIER\n\tIFLA_PHYS_PORT_ID                          = C.IFLA_PHYS_PORT_ID\n\tIFLA_CARRIER_CHANGES                       = C.IFLA_CARRIER_CHANGES\n\tIFLA_PHYS_SWITCH_ID                        = C.IFLA_PHYS_SWITCH_ID\n\tIFLA_LINK_NETNSID                          = C.IFLA_LINK_NETNSID\n\tIFLA_PHYS_PORT_NAME                        = C.IFLA_PHYS_PORT_NAME\n\tIFLA_PROTO_DOWN                            = C.IFLA_PROTO_DOWN\n\tIFLA_GSO_MAX_SEGS                          = C.IFLA_GSO_MAX_SEGS\n\tIFLA_GSO_MAX_SIZE                          = C.IFLA_GSO_MAX_SIZE\n\tIFLA_PAD                                   = C.IFLA_PAD\n\tIFLA_XDP                                   = C.IFLA_XDP\n\tIFLA_EVENT                                 = C.IFLA_EVENT\n\tIFLA_NEW_NETNSID                           = C.IFLA_NEW_NETNSID\n\tIFLA_IF_NETNSID                            = C.IFLA_IF_NETNSID\n\tIFLA_TARGET_NETNSID                        = C.IFLA_TARGET_NETNSID\n\tIFLA_CARRIER_UP_COUNT                      = C.IFLA_CARRIER_UP_COUNT\n\tIFLA_CARRIER_DOWN_COUNT                    = C.IFLA_CARRIER_DOWN_COUNT\n\tIFLA_NEW_IFINDEX                           = C.IFLA_NEW_IFINDEX\n\tIFLA_MIN_MTU                               = C.IFLA_MIN_MTU\n\tIFLA_MAX_MTU                               = C.IFLA_MAX_MTU\n\tIFLA_PROP_LIST                             = C.IFLA_PROP_LIST\n\tIFLA_ALT_IFNAME                            = C.IFLA_ALT_IFNAME\n\tIFLA_PERM_ADDRESS                          = C.IFLA_PERM_ADDRESS\n\tIFLA_PROTO_DOWN_REASON                     = C.IFLA_PROTO_DOWN_REASON\n\tIFLA_PARENT_DEV_NAME                       = C.IFLA_PARENT_DEV_NAME\n\tIFLA_PARENT_DEV_BUS_NAME                   = C.IFLA_PARENT_DEV_BUS_NAME\n\tIFLA_GRO_MAX_SIZE                          = C.IFLA_GRO_MAX_SIZE\n\tIFLA_TSO_MAX_SIZE                          = C.IFLA_TSO_MAX_SIZE\n\tIFLA_TSO_MAX_SEGS                          = C.IFLA_TSO_MAX_SEGS\n\tIFLA_ALLMULTI                              = C.IFLA_ALLMULTI\n\tIFLA_DEVLINK_PORT                          = C.IFLA_DEVLINK_PORT\n\tIFLA_GSO_IPV4_MAX_SIZE                     = C.IFLA_GSO_IPV4_MAX_SIZE\n\tIFLA_GRO_IPV4_MAX_SIZE                     = C.IFLA_GRO_IPV4_MAX_SIZE\n\tIFLA_DPLL_PIN                              = C.IFLA_DPLL_PIN\n\tIFLA_PROTO_DOWN_REASON_UNSPEC              = C.IFLA_PROTO_DOWN_REASON_UNSPEC\n\tIFLA_PROTO_DOWN_REASON_MASK                = C.IFLA_PROTO_DOWN_REASON_MASK\n\tIFLA_PROTO_DOWN_REASON_VALUE               = C.IFLA_PROTO_DOWN_REASON_VALUE\n\tIFLA_PROTO_DOWN_REASON_MAX                 = C.IFLA_PROTO_DOWN_REASON_MAX\n\tIFLA_INET_UNSPEC                           = C.IFLA_INET_UNSPEC\n\tIFLA_INET_CONF                             = C.IFLA_INET_CONF\n\tIFLA_INET6_UNSPEC                          = C.IFLA_INET6_UNSPEC\n\tIFLA_INET6_FLAGS                           = C.IFLA_INET6_FLAGS\n\tIFLA_INET6_CONF                            = C.IFLA_INET6_CONF\n\tIFLA_INET6_STATS                           = C.IFLA_INET6_STATS\n\tIFLA_INET6_MCAST                           = C.IFLA_INET6_MCAST\n\tIFLA_INET6_CACHEINFO                       = C.IFLA_INET6_CACHEINFO\n\tIFLA_INET6_ICMP6STATS                      = C.IFLA_INET6_ICMP6STATS\n\tIFLA_INET6_TOKEN                           = C.IFLA_INET6_TOKEN\n\tIFLA_INET6_ADDR_GEN_MODE                   = C.IFLA_INET6_ADDR_GEN_MODE\n\tIFLA_INET6_RA_MTU                          = C.IFLA_INET6_RA_MTU\n\tIFLA_BR_UNSPEC                             = C.IFLA_BR_UNSPEC\n\tIFLA_BR_FORWARD_DELAY                      = C.IFLA_BR_FORWARD_DELAY\n\tIFLA_BR_HELLO_TIME                         = C.IFLA_BR_HELLO_TIME\n\tIFLA_BR_MAX_AGE                            = C.IFLA_BR_MAX_AGE\n\tIFLA_BR_AGEING_TIME                        = C.IFLA_BR_AGEING_TIME\n\tIFLA_BR_STP_STATE                          = C.IFLA_BR_STP_STATE\n\tIFLA_BR_PRIORITY                           = C.IFLA_BR_PRIORITY\n\tIFLA_BR_VLAN_FILTERING                     = C.IFLA_BR_VLAN_FILTERING\n\tIFLA_BR_VLAN_PROTOCOL                      = C.IFLA_BR_VLAN_PROTOCOL\n\tIFLA_BR_GROUP_FWD_MASK                     = C.IFLA_BR_GROUP_FWD_MASK\n\tIFLA_BR_ROOT_ID                            = C.IFLA_BR_ROOT_ID\n\tIFLA_BR_BRIDGE_ID                          = C.IFLA_BR_BRIDGE_ID\n\tIFLA_BR_ROOT_PORT                          = C.IFLA_BR_ROOT_PORT\n\tIFLA_BR_ROOT_PATH_COST                     = C.IFLA_BR_ROOT_PATH_COST\n\tIFLA_BR_TOPOLOGY_CHANGE                    = C.IFLA_BR_TOPOLOGY_CHANGE\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED           = C.IFLA_BR_TOPOLOGY_CHANGE_DETECTED\n\tIFLA_BR_HELLO_TIMER                        = C.IFLA_BR_HELLO_TIMER\n\tIFLA_BR_TCN_TIMER                          = C.IFLA_BR_TCN_TIMER\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER              = C.IFLA_BR_TOPOLOGY_CHANGE_TIMER\n\tIFLA_BR_GC_TIMER                           = C.IFLA_BR_GC_TIMER\n\tIFLA_BR_GROUP_ADDR                         = C.IFLA_BR_GROUP_ADDR\n\tIFLA_BR_FDB_FLUSH                          = C.IFLA_BR_FDB_FLUSH\n\tIFLA_BR_MCAST_ROUTER                       = C.IFLA_BR_MCAST_ROUTER\n\tIFLA_BR_MCAST_SNOOPING                     = C.IFLA_BR_MCAST_SNOOPING\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR             = C.IFLA_BR_MCAST_QUERY_USE_IFADDR\n\tIFLA_BR_MCAST_QUERIER                      = C.IFLA_BR_MCAST_QUERIER\n\tIFLA_BR_MCAST_HASH_ELASTICITY              = C.IFLA_BR_MCAST_HASH_ELASTICITY\n\tIFLA_BR_MCAST_HASH_MAX                     = C.IFLA_BR_MCAST_HASH_MAX\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT              = C.IFLA_BR_MCAST_LAST_MEMBER_CNT\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT            = C.IFLA_BR_MCAST_STARTUP_QUERY_CNT\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL            = C.IFLA_BR_MCAST_LAST_MEMBER_INTVL\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL             = C.IFLA_BR_MCAST_MEMBERSHIP_INTVL\n\tIFLA_BR_MCAST_QUERIER_INTVL                = C.IFLA_BR_MCAST_QUERIER_INTVL\n\tIFLA_BR_MCAST_QUERY_INTVL                  = C.IFLA_BR_MCAST_QUERY_INTVL\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = C.IFLA_BR_MCAST_QUERY_RESPONSE_INTVL\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL          = C.IFLA_BR_MCAST_STARTUP_QUERY_INTVL\n\tIFLA_BR_NF_CALL_IPTABLES                   = C.IFLA_BR_NF_CALL_IPTABLES\n\tIFLA_BR_NF_CALL_IP6TABLES                  = C.IFLA_BR_NF_CALL_IP6TABLES\n\tIFLA_BR_NF_CALL_ARPTABLES                  = C.IFLA_BR_NF_CALL_ARPTABLES\n\tIFLA_BR_VLAN_DEFAULT_PVID                  = C.IFLA_BR_VLAN_DEFAULT_PVID\n\tIFLA_BR_PAD                                = C.IFLA_BR_PAD\n\tIFLA_BR_VLAN_STATS_ENABLED                 = C.IFLA_BR_VLAN_STATS_ENABLED\n\tIFLA_BR_MCAST_STATS_ENABLED                = C.IFLA_BR_MCAST_STATS_ENABLED\n\tIFLA_BR_MCAST_IGMP_VERSION                 = C.IFLA_BR_MCAST_IGMP_VERSION\n\tIFLA_BR_MCAST_MLD_VERSION                  = C.IFLA_BR_MCAST_MLD_VERSION\n\tIFLA_BR_VLAN_STATS_PER_PORT                = C.IFLA_BR_VLAN_STATS_PER_PORT\n\tIFLA_BR_MULTI_BOOLOPT                      = C.IFLA_BR_MULTI_BOOLOPT\n\tIFLA_BR_MCAST_QUERIER_STATE                = C.IFLA_BR_MCAST_QUERIER_STATE\n\tIFLA_BR_FDB_N_LEARNED                      = C.IFLA_BR_FDB_N_LEARNED\n\tIFLA_BR_FDB_MAX_LEARNED                    = C.IFLA_BR_FDB_MAX_LEARNED\n\tIFLA_BRPORT_UNSPEC                         = C.IFLA_BRPORT_UNSPEC\n\tIFLA_BRPORT_STATE                          = C.IFLA_BRPORT_STATE\n\tIFLA_BRPORT_PRIORITY                       = C.IFLA_BRPORT_PRIORITY\n\tIFLA_BRPORT_COST                           = C.IFLA_BRPORT_COST\n\tIFLA_BRPORT_MODE                           = C.IFLA_BRPORT_MODE\n\tIFLA_BRPORT_GUARD                          = C.IFLA_BRPORT_GUARD\n\tIFLA_BRPORT_PROTECT                        = C.IFLA_BRPORT_PROTECT\n\tIFLA_BRPORT_FAST_LEAVE                     = C.IFLA_BRPORT_FAST_LEAVE\n\tIFLA_BRPORT_LEARNING                       = C.IFLA_BRPORT_LEARNING\n\tIFLA_BRPORT_UNICAST_FLOOD                  = C.IFLA_BRPORT_UNICAST_FLOOD\n\tIFLA_BRPORT_PROXYARP                       = C.IFLA_BRPORT_PROXYARP\n\tIFLA_BRPORT_LEARNING_SYNC                  = C.IFLA_BRPORT_LEARNING_SYNC\n\tIFLA_BRPORT_PROXYARP_WIFI                  = C.IFLA_BRPORT_PROXYARP_WIFI\n\tIFLA_BRPORT_ROOT_ID                        = C.IFLA_BRPORT_ROOT_ID\n\tIFLA_BRPORT_BRIDGE_ID                      = C.IFLA_BRPORT_BRIDGE_ID\n\tIFLA_BRPORT_DESIGNATED_PORT                = C.IFLA_BRPORT_DESIGNATED_PORT\n\tIFLA_BRPORT_DESIGNATED_COST                = C.IFLA_BRPORT_DESIGNATED_COST\n\tIFLA_BRPORT_ID                             = C.IFLA_BRPORT_ID\n\tIFLA_BRPORT_NO                             = C.IFLA_BRPORT_NO\n\tIFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = C.IFLA_BRPORT_TOPOLOGY_CHANGE_ACK\n\tIFLA_BRPORT_CONFIG_PENDING                 = C.IFLA_BRPORT_CONFIG_PENDING\n\tIFLA_BRPORT_MESSAGE_AGE_TIMER              = C.IFLA_BRPORT_MESSAGE_AGE_TIMER\n\tIFLA_BRPORT_FORWARD_DELAY_TIMER            = C.IFLA_BRPORT_FORWARD_DELAY_TIMER\n\tIFLA_BRPORT_HOLD_TIMER                     = C.IFLA_BRPORT_HOLD_TIMER\n\tIFLA_BRPORT_FLUSH                          = C.IFLA_BRPORT_FLUSH\n\tIFLA_BRPORT_MULTICAST_ROUTER               = C.IFLA_BRPORT_MULTICAST_ROUTER\n\tIFLA_BRPORT_PAD                            = C.IFLA_BRPORT_PAD\n\tIFLA_BRPORT_MCAST_FLOOD                    = C.IFLA_BRPORT_MCAST_FLOOD\n\tIFLA_BRPORT_MCAST_TO_UCAST                 = C.IFLA_BRPORT_MCAST_TO_UCAST\n\tIFLA_BRPORT_VLAN_TUNNEL                    = C.IFLA_BRPORT_VLAN_TUNNEL\n\tIFLA_BRPORT_BCAST_FLOOD                    = C.IFLA_BRPORT_BCAST_FLOOD\n\tIFLA_BRPORT_GROUP_FWD_MASK                 = C.IFLA_BRPORT_GROUP_FWD_MASK\n\tIFLA_BRPORT_NEIGH_SUPPRESS                 = C.IFLA_BRPORT_NEIGH_SUPPRESS\n\tIFLA_BRPORT_ISOLATED                       = C.IFLA_BRPORT_ISOLATED\n\tIFLA_BRPORT_BACKUP_PORT                    = C.IFLA_BRPORT_BACKUP_PORT\n\tIFLA_BRPORT_MRP_RING_OPEN                  = C.IFLA_BRPORT_MRP_RING_OPEN\n\tIFLA_BRPORT_MRP_IN_OPEN                    = C.IFLA_BRPORT_MRP_IN_OPEN\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = C.IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = C.IFLA_BRPORT_MCAST_EHT_HOSTS_CNT\n\tIFLA_BRPORT_LOCKED                         = C.IFLA_BRPORT_LOCKED\n\tIFLA_BRPORT_MAB                            = C.IFLA_BRPORT_MAB\n\tIFLA_BRPORT_MCAST_N_GROUPS                 = C.IFLA_BRPORT_MCAST_N_GROUPS\n\tIFLA_BRPORT_MCAST_MAX_GROUPS               = C.IFLA_BRPORT_MCAST_MAX_GROUPS\n\tIFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = C.IFLA_BRPORT_NEIGH_VLAN_SUPPRESS\n\tIFLA_BRPORT_BACKUP_NHID                    = C.IFLA_BRPORT_BACKUP_NHID\n\tIFLA_INFO_UNSPEC                           = C.IFLA_INFO_UNSPEC\n\tIFLA_INFO_KIND                             = C.IFLA_INFO_KIND\n\tIFLA_INFO_DATA                             = C.IFLA_INFO_DATA\n\tIFLA_INFO_XSTATS                           = C.IFLA_INFO_XSTATS\n\tIFLA_INFO_SLAVE_KIND                       = C.IFLA_INFO_SLAVE_KIND\n\tIFLA_INFO_SLAVE_DATA                       = C.IFLA_INFO_SLAVE_DATA\n\tIFLA_VLAN_UNSPEC                           = C.IFLA_VLAN_UNSPEC\n\tIFLA_VLAN_ID                               = C.IFLA_VLAN_ID\n\tIFLA_VLAN_FLAGS                            = C.IFLA_VLAN_FLAGS\n\tIFLA_VLAN_EGRESS_QOS                       = C.IFLA_VLAN_EGRESS_QOS\n\tIFLA_VLAN_INGRESS_QOS                      = C.IFLA_VLAN_INGRESS_QOS\n\tIFLA_VLAN_PROTOCOL                         = C.IFLA_VLAN_PROTOCOL\n\tIFLA_VLAN_QOS_UNSPEC                       = C.IFLA_VLAN_QOS_UNSPEC\n\tIFLA_VLAN_QOS_MAPPING                      = C.IFLA_VLAN_QOS_MAPPING\n\tIFLA_MACVLAN_UNSPEC                        = C.IFLA_MACVLAN_UNSPEC\n\tIFLA_MACVLAN_MODE                          = C.IFLA_MACVLAN_MODE\n\tIFLA_MACVLAN_FLAGS                         = C.IFLA_MACVLAN_FLAGS\n\tIFLA_MACVLAN_MACADDR_MODE                  = C.IFLA_MACVLAN_MACADDR_MODE\n\tIFLA_MACVLAN_MACADDR                       = C.IFLA_MACVLAN_MACADDR\n\tIFLA_MACVLAN_MACADDR_DATA                  = C.IFLA_MACVLAN_MACADDR_DATA\n\tIFLA_MACVLAN_MACADDR_COUNT                 = C.IFLA_MACVLAN_MACADDR_COUNT\n\tIFLA_MACVLAN_BC_QUEUE_LEN                  = C.IFLA_MACVLAN_BC_QUEUE_LEN\n\tIFLA_MACVLAN_BC_QUEUE_LEN_USED             = C.IFLA_MACVLAN_BC_QUEUE_LEN_USED\n\tIFLA_MACVLAN_BC_CUTOFF                     = C.IFLA_MACVLAN_BC_CUTOFF\n\tIFLA_VRF_UNSPEC                            = C.IFLA_VRF_UNSPEC\n\tIFLA_VRF_TABLE                             = C.IFLA_VRF_TABLE\n\tIFLA_VRF_PORT_UNSPEC                       = C.IFLA_VRF_PORT_UNSPEC\n\tIFLA_VRF_PORT_TABLE                        = C.IFLA_VRF_PORT_TABLE\n\tIFLA_MACSEC_UNSPEC                         = C.IFLA_MACSEC_UNSPEC\n\tIFLA_MACSEC_SCI                            = C.IFLA_MACSEC_SCI\n\tIFLA_MACSEC_PORT                           = C.IFLA_MACSEC_PORT\n\tIFLA_MACSEC_ICV_LEN                        = C.IFLA_MACSEC_ICV_LEN\n\tIFLA_MACSEC_CIPHER_SUITE                   = C.IFLA_MACSEC_CIPHER_SUITE\n\tIFLA_MACSEC_WINDOW                         = C.IFLA_MACSEC_WINDOW\n\tIFLA_MACSEC_ENCODING_SA                    = C.IFLA_MACSEC_ENCODING_SA\n\tIFLA_MACSEC_ENCRYPT                        = C.IFLA_MACSEC_ENCRYPT\n\tIFLA_MACSEC_PROTECT                        = C.IFLA_MACSEC_PROTECT\n\tIFLA_MACSEC_INC_SCI                        = C.IFLA_MACSEC_INC_SCI\n\tIFLA_MACSEC_ES                             = C.IFLA_MACSEC_ES\n\tIFLA_MACSEC_SCB                            = C.IFLA_MACSEC_SCB\n\tIFLA_MACSEC_REPLAY_PROTECT                 = C.IFLA_MACSEC_REPLAY_PROTECT\n\tIFLA_MACSEC_VALIDATION                     = C.IFLA_MACSEC_VALIDATION\n\tIFLA_MACSEC_PAD                            = C.IFLA_MACSEC_PAD\n\tIFLA_MACSEC_OFFLOAD                        = C.IFLA_MACSEC_OFFLOAD\n\tIFLA_XFRM_UNSPEC                           = C.IFLA_XFRM_UNSPEC\n\tIFLA_XFRM_LINK                             = C.IFLA_XFRM_LINK\n\tIFLA_XFRM_IF_ID                            = C.IFLA_XFRM_IF_ID\n\tIFLA_XFRM_COLLECT_METADATA                 = C.IFLA_XFRM_COLLECT_METADATA\n\tIFLA_IPVLAN_UNSPEC                         = C.IFLA_IPVLAN_UNSPEC\n\tIFLA_IPVLAN_MODE                           = C.IFLA_IPVLAN_MODE\n\tIFLA_IPVLAN_FLAGS                          = C.IFLA_IPVLAN_FLAGS\n\tNETKIT_NEXT                                = C.NETKIT_NEXT\n\tNETKIT_PASS                                = C.NETKIT_PASS\n\tNETKIT_DROP                                = C.NETKIT_DROP\n\tNETKIT_REDIRECT                            = C.NETKIT_REDIRECT\n\tNETKIT_L2                                  = C.NETKIT_L2\n\tNETKIT_L3                                  = C.NETKIT_L3\n\tIFLA_NETKIT_UNSPEC                         = C.IFLA_NETKIT_UNSPEC\n\tIFLA_NETKIT_PEER_INFO                      = C.IFLA_NETKIT_PEER_INFO\n\tIFLA_NETKIT_PRIMARY                        = C.IFLA_NETKIT_PRIMARY\n\tIFLA_NETKIT_POLICY                         = C.IFLA_NETKIT_POLICY\n\tIFLA_NETKIT_PEER_POLICY                    = C.IFLA_NETKIT_PEER_POLICY\n\tIFLA_NETKIT_MODE                           = C.IFLA_NETKIT_MODE\n\tIFLA_VXLAN_UNSPEC                          = C.IFLA_VXLAN_UNSPEC\n\tIFLA_VXLAN_ID                              = C.IFLA_VXLAN_ID\n\tIFLA_VXLAN_GROUP                           = C.IFLA_VXLAN_GROUP\n\tIFLA_VXLAN_LINK                            = C.IFLA_VXLAN_LINK\n\tIFLA_VXLAN_LOCAL                           = C.IFLA_VXLAN_LOCAL\n\tIFLA_VXLAN_TTL                             = C.IFLA_VXLAN_TTL\n\tIFLA_VXLAN_TOS                             = C.IFLA_VXLAN_TOS\n\tIFLA_VXLAN_LEARNING                        = C.IFLA_VXLAN_LEARNING\n\tIFLA_VXLAN_AGEING                          = C.IFLA_VXLAN_AGEING\n\tIFLA_VXLAN_LIMIT                           = C.IFLA_VXLAN_LIMIT\n\tIFLA_VXLAN_PORT_RANGE                      = C.IFLA_VXLAN_PORT_RANGE\n\tIFLA_VXLAN_PROXY                           = C.IFLA_VXLAN_PROXY\n\tIFLA_VXLAN_RSC                             = C.IFLA_VXLAN_RSC\n\tIFLA_VXLAN_L2MISS                          = C.IFLA_VXLAN_L2MISS\n\tIFLA_VXLAN_L3MISS                          = C.IFLA_VXLAN_L3MISS\n\tIFLA_VXLAN_PORT                            = C.IFLA_VXLAN_PORT\n\tIFLA_VXLAN_GROUP6                          = C.IFLA_VXLAN_GROUP6\n\tIFLA_VXLAN_LOCAL6                          = C.IFLA_VXLAN_LOCAL6\n\tIFLA_VXLAN_UDP_CSUM                        = C.IFLA_VXLAN_UDP_CSUM\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX               = C.IFLA_VXLAN_UDP_ZERO_CSUM6_TX\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX               = C.IFLA_VXLAN_UDP_ZERO_CSUM6_RX\n\tIFLA_VXLAN_REMCSUM_TX                      = C.IFLA_VXLAN_REMCSUM_TX\n\tIFLA_VXLAN_REMCSUM_RX                      = C.IFLA_VXLAN_REMCSUM_RX\n\tIFLA_VXLAN_GBP                             = C.IFLA_VXLAN_GBP\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL               = C.IFLA_VXLAN_REMCSUM_NOPARTIAL\n\tIFLA_VXLAN_COLLECT_METADATA                = C.IFLA_VXLAN_COLLECT_METADATA\n\tIFLA_VXLAN_LABEL                           = C.IFLA_VXLAN_LABEL\n\tIFLA_VXLAN_GPE                             = C.IFLA_VXLAN_GPE\n\tIFLA_VXLAN_TTL_INHERIT                     = C.IFLA_VXLAN_TTL_INHERIT\n\tIFLA_VXLAN_DF                              = C.IFLA_VXLAN_DF\n\tIFLA_VXLAN_VNIFILTER                       = C.IFLA_VXLAN_VNIFILTER\n\tIFLA_VXLAN_LOCALBYPASS                     = C.IFLA_VXLAN_LOCALBYPASS\n\tIFLA_GENEVE_UNSPEC                         = C.IFLA_GENEVE_UNSPEC\n\tIFLA_GENEVE_ID                             = C.IFLA_GENEVE_ID\n\tIFLA_GENEVE_REMOTE                         = C.IFLA_GENEVE_REMOTE\n\tIFLA_GENEVE_TTL                            = C.IFLA_GENEVE_TTL\n\tIFLA_GENEVE_TOS                            = C.IFLA_GENEVE_TOS\n\tIFLA_GENEVE_PORT                           = C.IFLA_GENEVE_PORT\n\tIFLA_GENEVE_COLLECT_METADATA               = C.IFLA_GENEVE_COLLECT_METADATA\n\tIFLA_GENEVE_REMOTE6                        = C.IFLA_GENEVE_REMOTE6\n\tIFLA_GENEVE_UDP_CSUM                       = C.IFLA_GENEVE_UDP_CSUM\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_TX              = C.IFLA_GENEVE_UDP_ZERO_CSUM6_TX\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_RX              = C.IFLA_GENEVE_UDP_ZERO_CSUM6_RX\n\tIFLA_GENEVE_LABEL                          = C.IFLA_GENEVE_LABEL\n\tIFLA_GENEVE_TTL_INHERIT                    = C.IFLA_GENEVE_TTL_INHERIT\n\tIFLA_GENEVE_DF                             = C.IFLA_GENEVE_DF\n\tIFLA_GENEVE_INNER_PROTO_INHERIT            = C.IFLA_GENEVE_INNER_PROTO_INHERIT\n\tIFLA_BAREUDP_UNSPEC                        = C.IFLA_BAREUDP_UNSPEC\n\tIFLA_BAREUDP_PORT                          = C.IFLA_BAREUDP_PORT\n\tIFLA_BAREUDP_ETHERTYPE                     = C.IFLA_BAREUDP_ETHERTYPE\n\tIFLA_BAREUDP_SRCPORT_MIN                   = C.IFLA_BAREUDP_SRCPORT_MIN\n\tIFLA_BAREUDP_MULTIPROTO_MODE               = C.IFLA_BAREUDP_MULTIPROTO_MODE\n\tIFLA_PPP_UNSPEC                            = C.IFLA_PPP_UNSPEC\n\tIFLA_PPP_DEV_FD                            = C.IFLA_PPP_DEV_FD\n\tIFLA_GTP_UNSPEC                            = C.IFLA_GTP_UNSPEC\n\tIFLA_GTP_FD0                               = C.IFLA_GTP_FD0\n\tIFLA_GTP_FD1                               = C.IFLA_GTP_FD1\n\tIFLA_GTP_PDP_HASHSIZE                      = C.IFLA_GTP_PDP_HASHSIZE\n\tIFLA_GTP_ROLE                              = C.IFLA_GTP_ROLE\n\tIFLA_GTP_CREATE_SOCKETS                    = C.IFLA_GTP_CREATE_SOCKETS\n\tIFLA_GTP_RESTART_COUNT                     = C.IFLA_GTP_RESTART_COUNT\n\tIFLA_BOND_UNSPEC                           = C.IFLA_BOND_UNSPEC\n\tIFLA_BOND_MODE                             = C.IFLA_BOND_MODE\n\tIFLA_BOND_ACTIVE_SLAVE                     = C.IFLA_BOND_ACTIVE_SLAVE\n\tIFLA_BOND_MIIMON                           = C.IFLA_BOND_MIIMON\n\tIFLA_BOND_UPDELAY                          = C.IFLA_BOND_UPDELAY\n\tIFLA_BOND_DOWNDELAY                        = C.IFLA_BOND_DOWNDELAY\n\tIFLA_BOND_USE_CARRIER                      = C.IFLA_BOND_USE_CARRIER\n\tIFLA_BOND_ARP_INTERVAL                     = C.IFLA_BOND_ARP_INTERVAL\n\tIFLA_BOND_ARP_IP_TARGET                    = C.IFLA_BOND_ARP_IP_TARGET\n\tIFLA_BOND_ARP_VALIDATE                     = C.IFLA_BOND_ARP_VALIDATE\n\tIFLA_BOND_ARP_ALL_TARGETS                  = C.IFLA_BOND_ARP_ALL_TARGETS\n\tIFLA_BOND_PRIMARY                          = C.IFLA_BOND_PRIMARY\n\tIFLA_BOND_PRIMARY_RESELECT                 = C.IFLA_BOND_PRIMARY_RESELECT\n\tIFLA_BOND_FAIL_OVER_MAC                    = C.IFLA_BOND_FAIL_OVER_MAC\n\tIFLA_BOND_XMIT_HASH_POLICY                 = C.IFLA_BOND_XMIT_HASH_POLICY\n\tIFLA_BOND_RESEND_IGMP                      = C.IFLA_BOND_RESEND_IGMP\n\tIFLA_BOND_NUM_PEER_NOTIF                   = C.IFLA_BOND_NUM_PEER_NOTIF\n\tIFLA_BOND_ALL_SLAVES_ACTIVE                = C.IFLA_BOND_ALL_SLAVES_ACTIVE\n\tIFLA_BOND_MIN_LINKS                        = C.IFLA_BOND_MIN_LINKS\n\tIFLA_BOND_LP_INTERVAL                      = C.IFLA_BOND_LP_INTERVAL\n\tIFLA_BOND_PACKETS_PER_SLAVE                = C.IFLA_BOND_PACKETS_PER_SLAVE\n\tIFLA_BOND_AD_LACP_RATE                     = C.IFLA_BOND_AD_LACP_RATE\n\tIFLA_BOND_AD_SELECT                        = C.IFLA_BOND_AD_SELECT\n\tIFLA_BOND_AD_INFO                          = C.IFLA_BOND_AD_INFO\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO                = C.IFLA_BOND_AD_ACTOR_SYS_PRIO\n\tIFLA_BOND_AD_USER_PORT_KEY                 = C.IFLA_BOND_AD_USER_PORT_KEY\n\tIFLA_BOND_AD_ACTOR_SYSTEM                  = C.IFLA_BOND_AD_ACTOR_SYSTEM\n\tIFLA_BOND_TLB_DYNAMIC_LB                   = C.IFLA_BOND_TLB_DYNAMIC_LB\n\tIFLA_BOND_PEER_NOTIF_DELAY                 = C.IFLA_BOND_PEER_NOTIF_DELAY\n\tIFLA_BOND_AD_LACP_ACTIVE                   = C.IFLA_BOND_AD_LACP_ACTIVE\n\tIFLA_BOND_MISSED_MAX                       = C.IFLA_BOND_MISSED_MAX\n\tIFLA_BOND_NS_IP6_TARGET                    = C.IFLA_BOND_NS_IP6_TARGET\n\tIFLA_BOND_AD_INFO_UNSPEC                   = C.IFLA_BOND_AD_INFO_UNSPEC\n\tIFLA_BOND_AD_INFO_AGGREGATOR               = C.IFLA_BOND_AD_INFO_AGGREGATOR\n\tIFLA_BOND_AD_INFO_NUM_PORTS                = C.IFLA_BOND_AD_INFO_NUM_PORTS\n\tIFLA_BOND_AD_INFO_ACTOR_KEY                = C.IFLA_BOND_AD_INFO_ACTOR_KEY\n\tIFLA_BOND_AD_INFO_PARTNER_KEY              = C.IFLA_BOND_AD_INFO_PARTNER_KEY\n\tIFLA_BOND_AD_INFO_PARTNER_MAC              = C.IFLA_BOND_AD_INFO_PARTNER_MAC\n\tIFLA_BOND_SLAVE_UNSPEC                     = C.IFLA_BOND_SLAVE_UNSPEC\n\tIFLA_BOND_SLAVE_STATE                      = C.IFLA_BOND_SLAVE_STATE\n\tIFLA_BOND_SLAVE_MII_STATUS                 = C.IFLA_BOND_SLAVE_MII_STATUS\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = C.IFLA_BOND_SLAVE_LINK_FAILURE_COUNT\n\tIFLA_BOND_SLAVE_PERM_HWADDR                = C.IFLA_BOND_SLAVE_PERM_HWADDR\n\tIFLA_BOND_SLAVE_QUEUE_ID                   = C.IFLA_BOND_SLAVE_QUEUE_ID\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = C.IFLA_BOND_SLAVE_AD_AGGREGATOR_ID\n\tIFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = C.IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE\n\tIFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = C.IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE\n\tIFLA_BOND_SLAVE_PRIO                       = C.IFLA_BOND_SLAVE_PRIO\n\tIFLA_VF_INFO_UNSPEC                        = C.IFLA_VF_INFO_UNSPEC\n\tIFLA_VF_INFO                               = C.IFLA_VF_INFO\n\tIFLA_VF_UNSPEC                             = C.IFLA_VF_UNSPEC\n\tIFLA_VF_MAC                                = C.IFLA_VF_MAC\n\tIFLA_VF_VLAN                               = C.IFLA_VF_VLAN\n\tIFLA_VF_TX_RATE                            = C.IFLA_VF_TX_RATE\n\tIFLA_VF_SPOOFCHK                           = C.IFLA_VF_SPOOFCHK\n\tIFLA_VF_LINK_STATE                         = C.IFLA_VF_LINK_STATE\n\tIFLA_VF_RATE                               = C.IFLA_VF_RATE\n\tIFLA_VF_RSS_QUERY_EN                       = C.IFLA_VF_RSS_QUERY_EN\n\tIFLA_VF_STATS                              = C.IFLA_VF_STATS\n\tIFLA_VF_TRUST                              = C.IFLA_VF_TRUST\n\tIFLA_VF_IB_NODE_GUID                       = C.IFLA_VF_IB_NODE_GUID\n\tIFLA_VF_IB_PORT_GUID                       = C.IFLA_VF_IB_PORT_GUID\n\tIFLA_VF_VLAN_LIST                          = C.IFLA_VF_VLAN_LIST\n\tIFLA_VF_BROADCAST                          = C.IFLA_VF_BROADCAST\n\tIFLA_VF_VLAN_INFO_UNSPEC                   = C.IFLA_VF_VLAN_INFO_UNSPEC\n\tIFLA_VF_VLAN_INFO                          = C.IFLA_VF_VLAN_INFO\n\tIFLA_VF_LINK_STATE_AUTO                    = C.IFLA_VF_LINK_STATE_AUTO\n\tIFLA_VF_LINK_STATE_ENABLE                  = C.IFLA_VF_LINK_STATE_ENABLE\n\tIFLA_VF_LINK_STATE_DISABLE                 = C.IFLA_VF_LINK_STATE_DISABLE\n\tIFLA_VF_STATS_RX_PACKETS                   = C.IFLA_VF_STATS_RX_PACKETS\n\tIFLA_VF_STATS_TX_PACKETS                   = C.IFLA_VF_STATS_TX_PACKETS\n\tIFLA_VF_STATS_RX_BYTES                     = C.IFLA_VF_STATS_RX_BYTES\n\tIFLA_VF_STATS_TX_BYTES                     = C.IFLA_VF_STATS_TX_BYTES\n\tIFLA_VF_STATS_BROADCAST                    = C.IFLA_VF_STATS_BROADCAST\n\tIFLA_VF_STATS_MULTICAST                    = C.IFLA_VF_STATS_MULTICAST\n\tIFLA_VF_STATS_PAD                          = C.IFLA_VF_STATS_PAD\n\tIFLA_VF_STATS_RX_DROPPED                   = C.IFLA_VF_STATS_RX_DROPPED\n\tIFLA_VF_STATS_TX_DROPPED                   = C.IFLA_VF_STATS_TX_DROPPED\n\tIFLA_VF_PORT_UNSPEC                        = C.IFLA_VF_PORT_UNSPEC\n\tIFLA_VF_PORT                               = C.IFLA_VF_PORT\n\tIFLA_PORT_UNSPEC                           = C.IFLA_PORT_UNSPEC\n\tIFLA_PORT_VF                               = C.IFLA_PORT_VF\n\tIFLA_PORT_PROFILE                          = C.IFLA_PORT_PROFILE\n\tIFLA_PORT_VSI_TYPE                         = C.IFLA_PORT_VSI_TYPE\n\tIFLA_PORT_INSTANCE_UUID                    = C.IFLA_PORT_INSTANCE_UUID\n\tIFLA_PORT_HOST_UUID                        = C.IFLA_PORT_HOST_UUID\n\tIFLA_PORT_REQUEST                          = C.IFLA_PORT_REQUEST\n\tIFLA_PORT_RESPONSE                         = C.IFLA_PORT_RESPONSE\n\tIFLA_IPOIB_UNSPEC                          = C.IFLA_IPOIB_UNSPEC\n\tIFLA_IPOIB_PKEY                            = C.IFLA_IPOIB_PKEY\n\tIFLA_IPOIB_MODE                            = C.IFLA_IPOIB_MODE\n\tIFLA_IPOIB_UMCAST                          = C.IFLA_IPOIB_UMCAST\n\tIFLA_HSR_UNSPEC                            = C.IFLA_HSR_UNSPEC\n\tIFLA_HSR_SLAVE1                            = C.IFLA_HSR_SLAVE1\n\tIFLA_HSR_SLAVE2                            = C.IFLA_HSR_SLAVE2\n\tIFLA_HSR_MULTICAST_SPEC                    = C.IFLA_HSR_MULTICAST_SPEC\n\tIFLA_HSR_SUPERVISION_ADDR                  = C.IFLA_HSR_SUPERVISION_ADDR\n\tIFLA_HSR_SEQ_NR                            = C.IFLA_HSR_SEQ_NR\n\tIFLA_HSR_VERSION                           = C.IFLA_HSR_VERSION\n\tIFLA_HSR_PROTOCOL                          = C.IFLA_HSR_PROTOCOL\n\tIFLA_STATS_UNSPEC                          = C.IFLA_STATS_UNSPEC\n\tIFLA_STATS_LINK_64                         = C.IFLA_STATS_LINK_64\n\tIFLA_STATS_LINK_XSTATS                     = C.IFLA_STATS_LINK_XSTATS\n\tIFLA_STATS_LINK_XSTATS_SLAVE               = C.IFLA_STATS_LINK_XSTATS_SLAVE\n\tIFLA_STATS_LINK_OFFLOAD_XSTATS             = C.IFLA_STATS_LINK_OFFLOAD_XSTATS\n\tIFLA_STATS_AF_SPEC                         = C.IFLA_STATS_AF_SPEC\n\tIFLA_STATS_GETSET_UNSPEC                   = C.IFLA_STATS_GETSET_UNSPEC\n\tIFLA_STATS_GET_FILTERS                     = C.IFLA_STATS_GET_FILTERS\n\tIFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = C.IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS\n\tIFLA_OFFLOAD_XSTATS_UNSPEC                 = C.IFLA_OFFLOAD_XSTATS_UNSPEC\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = C.IFLA_OFFLOAD_XSTATS_CPU_HIT\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO              = C.IFLA_OFFLOAD_XSTATS_HW_S_INFO\n\tIFLA_OFFLOAD_XSTATS_L3_STATS               = C.IFLA_OFFLOAD_XSTATS_L3_STATS\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = C.IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = C.IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = C.IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED\n\tIFLA_XDP_UNSPEC                            = C.IFLA_XDP_UNSPEC\n\tIFLA_XDP_FD                                = C.IFLA_XDP_FD\n\tIFLA_XDP_ATTACHED                          = C.IFLA_XDP_ATTACHED\n\tIFLA_XDP_FLAGS                             = C.IFLA_XDP_FLAGS\n\tIFLA_XDP_PROG_ID                           = C.IFLA_XDP_PROG_ID\n\tIFLA_XDP_DRV_PROG_ID                       = C.IFLA_XDP_DRV_PROG_ID\n\tIFLA_XDP_SKB_PROG_ID                       = C.IFLA_XDP_SKB_PROG_ID\n\tIFLA_XDP_HW_PROG_ID                        = C.IFLA_XDP_HW_PROG_ID\n\tIFLA_XDP_EXPECTED_FD                       = C.IFLA_XDP_EXPECTED_FD\n\tIFLA_EVENT_NONE                            = C.IFLA_EVENT_NONE\n\tIFLA_EVENT_REBOOT                          = C.IFLA_EVENT_REBOOT\n\tIFLA_EVENT_FEATURES                        = C.IFLA_EVENT_FEATURES\n\tIFLA_EVENT_BONDING_FAILOVER                = C.IFLA_EVENT_BONDING_FAILOVER\n\tIFLA_EVENT_NOTIFY_PEERS                    = C.IFLA_EVENT_NOTIFY_PEERS\n\tIFLA_EVENT_IGMP_RESEND                     = C.IFLA_EVENT_IGMP_RESEND\n\tIFLA_EVENT_BONDING_OPTIONS                 = C.IFLA_EVENT_BONDING_OPTIONS\n\tIFLA_TUN_UNSPEC                            = C.IFLA_TUN_UNSPEC\n\tIFLA_TUN_OWNER                             = C.IFLA_TUN_OWNER\n\tIFLA_TUN_GROUP                             = C.IFLA_TUN_GROUP\n\tIFLA_TUN_TYPE                              = C.IFLA_TUN_TYPE\n\tIFLA_TUN_PI                                = C.IFLA_TUN_PI\n\tIFLA_TUN_VNET_HDR                          = C.IFLA_TUN_VNET_HDR\n\tIFLA_TUN_PERSIST                           = C.IFLA_TUN_PERSIST\n\tIFLA_TUN_MULTI_QUEUE                       = C.IFLA_TUN_MULTI_QUEUE\n\tIFLA_TUN_NUM_QUEUES                        = C.IFLA_TUN_NUM_QUEUES\n\tIFLA_TUN_NUM_DISABLED_QUEUES               = C.IFLA_TUN_NUM_DISABLED_QUEUES\n\tIFLA_RMNET_UNSPEC                          = C.IFLA_RMNET_UNSPEC\n\tIFLA_RMNET_MUX_ID                          = C.IFLA_RMNET_MUX_ID\n\tIFLA_RMNET_FLAGS                           = C.IFLA_RMNET_FLAGS\n\tIFLA_MCTP_UNSPEC                           = C.IFLA_MCTP_UNSPEC\n\tIFLA_MCTP_NET                              = C.IFLA_MCTP_NET\n\tIFLA_DSA_UNSPEC                            = C.IFLA_DSA_UNSPEC\n\tIFLA_DSA_CONDUIT                           = C.IFLA_DSA_CONDUIT\n\tIFLA_DSA_MASTER                            = C.IFLA_DSA_MASTER\n)\n\n// netfilter\n// generated using:\n// perl -nlE '/^\\s*(NF\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/netfilter.h\nconst (\n\tNF_INET_PRE_ROUTING  = C.NF_INET_PRE_ROUTING\n\tNF_INET_LOCAL_IN     = C.NF_INET_LOCAL_IN\n\tNF_INET_FORWARD      = C.NF_INET_FORWARD\n\tNF_INET_LOCAL_OUT    = C.NF_INET_LOCAL_OUT\n\tNF_INET_POST_ROUTING = C.NF_INET_POST_ROUTING\n\tNF_INET_NUMHOOKS     = C.NF_INET_NUMHOOKS\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = C.NF_NETDEV_INGRESS\n\tNF_NETDEV_EGRESS   = C.NF_NETDEV_EGRESS\n\tNF_NETDEV_NUMHOOKS = C.NF_NETDEV_NUMHOOKS\n)\n\nconst (\n\tNFPROTO_UNSPEC   = C.NFPROTO_UNSPEC\n\tNFPROTO_INET     = C.NFPROTO_INET\n\tNFPROTO_IPV4     = C.NFPROTO_IPV4\n\tNFPROTO_ARP      = C.NFPROTO_ARP\n\tNFPROTO_NETDEV   = C.NFPROTO_NETDEV\n\tNFPROTO_BRIDGE   = C.NFPROTO_BRIDGE\n\tNFPROTO_IPV6     = C.NFPROTO_IPV6\n\tNFPROTO_DECNET   = C.NFPROTO_DECNET\n\tNFPROTO_NUMPROTO = C.NFPROTO_NUMPROTO\n)\n\nconst SO_ORIGINAL_DST = C.SO_ORIGINAL_DST\n\n// netfilter nfnetlink\ntype Nfgenmsg C.struct_nfgenmsg\n\nconst (\n\tNFNL_BATCH_UNSPEC = C.NFNL_BATCH_UNSPEC\n\tNFNL_BATCH_GENID  = C.NFNL_BATCH_GENID\n)\n\n// netfilter nf_tables\n// generated using:\n// perl -nlE '/^\\s*(NFT\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/netfilter/nf_tables.h\nconst (\n\tNFT_REG_VERDICT                   = C.NFT_REG_VERDICT\n\tNFT_REG_1                         = C.NFT_REG_1\n\tNFT_REG_2                         = C.NFT_REG_2\n\tNFT_REG_3                         = C.NFT_REG_3\n\tNFT_REG_4                         = C.NFT_REG_4\n\tNFT_REG32_00                      = C.NFT_REG32_00\n\tNFT_REG32_01                      = C.NFT_REG32_01\n\tNFT_REG32_02                      = C.NFT_REG32_02\n\tNFT_REG32_03                      = C.NFT_REG32_03\n\tNFT_REG32_04                      = C.NFT_REG32_04\n\tNFT_REG32_05                      = C.NFT_REG32_05\n\tNFT_REG32_06                      = C.NFT_REG32_06\n\tNFT_REG32_07                      = C.NFT_REG32_07\n\tNFT_REG32_08                      = C.NFT_REG32_08\n\tNFT_REG32_09                      = C.NFT_REG32_09\n\tNFT_REG32_10                      = C.NFT_REG32_10\n\tNFT_REG32_11                      = C.NFT_REG32_11\n\tNFT_REG32_12                      = C.NFT_REG32_12\n\tNFT_REG32_13                      = C.NFT_REG32_13\n\tNFT_REG32_14                      = C.NFT_REG32_14\n\tNFT_REG32_15                      = C.NFT_REG32_15\n\tNFT_CONTINUE                      = C.NFT_CONTINUE\n\tNFT_BREAK                         = C.NFT_BREAK\n\tNFT_JUMP                          = C.NFT_JUMP\n\tNFT_GOTO                          = C.NFT_GOTO\n\tNFT_RETURN                        = C.NFT_RETURN\n\tNFT_MSG_NEWTABLE                  = C.NFT_MSG_NEWTABLE\n\tNFT_MSG_GETTABLE                  = C.NFT_MSG_GETTABLE\n\tNFT_MSG_DELTABLE                  = C.NFT_MSG_DELTABLE\n\tNFT_MSG_NEWCHAIN                  = C.NFT_MSG_NEWCHAIN\n\tNFT_MSG_GETCHAIN                  = C.NFT_MSG_GETCHAIN\n\tNFT_MSG_DELCHAIN                  = C.NFT_MSG_DELCHAIN\n\tNFT_MSG_NEWRULE                   = C.NFT_MSG_NEWRULE\n\tNFT_MSG_GETRULE                   = C.NFT_MSG_GETRULE\n\tNFT_MSG_DELRULE                   = C.NFT_MSG_DELRULE\n\tNFT_MSG_NEWSET                    = C.NFT_MSG_NEWSET\n\tNFT_MSG_GETSET                    = C.NFT_MSG_GETSET\n\tNFT_MSG_DELSET                    = C.NFT_MSG_DELSET\n\tNFT_MSG_NEWSETELEM                = C.NFT_MSG_NEWSETELEM\n\tNFT_MSG_GETSETELEM                = C.NFT_MSG_GETSETELEM\n\tNFT_MSG_DELSETELEM                = C.NFT_MSG_DELSETELEM\n\tNFT_MSG_NEWGEN                    = C.NFT_MSG_NEWGEN\n\tNFT_MSG_GETGEN                    = C.NFT_MSG_GETGEN\n\tNFT_MSG_TRACE                     = C.NFT_MSG_TRACE\n\tNFT_MSG_NEWOBJ                    = C.NFT_MSG_NEWOBJ\n\tNFT_MSG_GETOBJ                    = C.NFT_MSG_GETOBJ\n\tNFT_MSG_DELOBJ                    = C.NFT_MSG_DELOBJ\n\tNFT_MSG_GETOBJ_RESET              = C.NFT_MSG_GETOBJ_RESET\n\tNFT_MSG_NEWFLOWTABLE              = C.NFT_MSG_NEWFLOWTABLE\n\tNFT_MSG_GETFLOWTABLE              = C.NFT_MSG_GETFLOWTABLE\n\tNFT_MSG_DELFLOWTABLE              = C.NFT_MSG_DELFLOWTABLE\n\tNFT_MSG_GETRULE_RESET             = C.NFT_MSG_GETRULE_RESET\n\tNFT_MSG_MAX                       = C.NFT_MSG_MAX\n\tNFTA_LIST_UNSPEC                  = C.NFTA_LIST_UNSPEC\n\tNFTA_LIST_ELEM                    = C.NFTA_LIST_ELEM\n\tNFTA_HOOK_UNSPEC                  = C.NFTA_HOOK_UNSPEC\n\tNFTA_HOOK_HOOKNUM                 = C.NFTA_HOOK_HOOKNUM\n\tNFTA_HOOK_PRIORITY                = C.NFTA_HOOK_PRIORITY\n\tNFTA_HOOK_DEV                     = C.NFTA_HOOK_DEV\n\tNFT_TABLE_F_DORMANT               = C.NFT_TABLE_F_DORMANT\n\tNFTA_TABLE_UNSPEC                 = C.NFTA_TABLE_UNSPEC\n\tNFTA_TABLE_NAME                   = C.NFTA_TABLE_NAME\n\tNFTA_TABLE_FLAGS                  = C.NFTA_TABLE_FLAGS\n\tNFTA_TABLE_USE                    = C.NFTA_TABLE_USE\n\tNFTA_CHAIN_UNSPEC                 = C.NFTA_CHAIN_UNSPEC\n\tNFTA_CHAIN_TABLE                  = C.NFTA_CHAIN_TABLE\n\tNFTA_CHAIN_HANDLE                 = C.NFTA_CHAIN_HANDLE\n\tNFTA_CHAIN_NAME                   = C.NFTA_CHAIN_NAME\n\tNFTA_CHAIN_HOOK                   = C.NFTA_CHAIN_HOOK\n\tNFTA_CHAIN_POLICY                 = C.NFTA_CHAIN_POLICY\n\tNFTA_CHAIN_USE                    = C.NFTA_CHAIN_USE\n\tNFTA_CHAIN_TYPE                   = C.NFTA_CHAIN_TYPE\n\tNFTA_CHAIN_COUNTERS               = C.NFTA_CHAIN_COUNTERS\n\tNFTA_CHAIN_PAD                    = C.NFTA_CHAIN_PAD\n\tNFTA_RULE_UNSPEC                  = C.NFTA_RULE_UNSPEC\n\tNFTA_RULE_TABLE                   = C.NFTA_RULE_TABLE\n\tNFTA_RULE_CHAIN                   = C.NFTA_RULE_CHAIN\n\tNFTA_RULE_HANDLE                  = C.NFTA_RULE_HANDLE\n\tNFTA_RULE_EXPRESSIONS             = C.NFTA_RULE_EXPRESSIONS\n\tNFTA_RULE_COMPAT                  = C.NFTA_RULE_COMPAT\n\tNFTA_RULE_POSITION                = C.NFTA_RULE_POSITION\n\tNFTA_RULE_USERDATA                = C.NFTA_RULE_USERDATA\n\tNFTA_RULE_PAD                     = C.NFTA_RULE_PAD\n\tNFTA_RULE_ID                      = C.NFTA_RULE_ID\n\tNFT_RULE_COMPAT_F_INV             = C.NFT_RULE_COMPAT_F_INV\n\tNFT_RULE_COMPAT_F_MASK            = C.NFT_RULE_COMPAT_F_MASK\n\tNFTA_RULE_COMPAT_UNSPEC           = C.NFTA_RULE_COMPAT_UNSPEC\n\tNFTA_RULE_COMPAT_PROTO            = C.NFTA_RULE_COMPAT_PROTO\n\tNFTA_RULE_COMPAT_FLAGS            = C.NFTA_RULE_COMPAT_FLAGS\n\tNFT_SET_ANONYMOUS                 = C.NFT_SET_ANONYMOUS\n\tNFT_SET_CONSTANT                  = C.NFT_SET_CONSTANT\n\tNFT_SET_INTERVAL                  = C.NFT_SET_INTERVAL\n\tNFT_SET_MAP                       = C.NFT_SET_MAP\n\tNFT_SET_TIMEOUT                   = C.NFT_SET_TIMEOUT\n\tNFT_SET_EVAL                      = C.NFT_SET_EVAL\n\tNFT_SET_OBJECT                    = C.NFT_SET_OBJECT\n\tNFT_SET_POL_PERFORMANCE           = C.NFT_SET_POL_PERFORMANCE\n\tNFT_SET_POL_MEMORY                = C.NFT_SET_POL_MEMORY\n\tNFTA_SET_DESC_UNSPEC              = C.NFTA_SET_DESC_UNSPEC\n\tNFTA_SET_DESC_SIZE                = C.NFTA_SET_DESC_SIZE\n\tNFTA_SET_UNSPEC                   = C.NFTA_SET_UNSPEC\n\tNFTA_SET_TABLE                    = C.NFTA_SET_TABLE\n\tNFTA_SET_NAME                     = C.NFTA_SET_NAME\n\tNFTA_SET_FLAGS                    = C.NFTA_SET_FLAGS\n\tNFTA_SET_KEY_TYPE                 = C.NFTA_SET_KEY_TYPE\n\tNFTA_SET_KEY_LEN                  = C.NFTA_SET_KEY_LEN\n\tNFTA_SET_DATA_TYPE                = C.NFTA_SET_DATA_TYPE\n\tNFTA_SET_DATA_LEN                 = C.NFTA_SET_DATA_LEN\n\tNFTA_SET_POLICY                   = C.NFTA_SET_POLICY\n\tNFTA_SET_DESC                     = C.NFTA_SET_DESC\n\tNFTA_SET_ID                       = C.NFTA_SET_ID\n\tNFTA_SET_TIMEOUT                  = C.NFTA_SET_TIMEOUT\n\tNFTA_SET_GC_INTERVAL              = C.NFTA_SET_GC_INTERVAL\n\tNFTA_SET_USERDATA                 = C.NFTA_SET_USERDATA\n\tNFTA_SET_PAD                      = C.NFTA_SET_PAD\n\tNFTA_SET_OBJ_TYPE                 = C.NFTA_SET_OBJ_TYPE\n\tNFT_SET_ELEM_INTERVAL_END         = C.NFT_SET_ELEM_INTERVAL_END\n\tNFTA_SET_ELEM_UNSPEC              = C.NFTA_SET_ELEM_UNSPEC\n\tNFTA_SET_ELEM_KEY                 = C.NFTA_SET_ELEM_KEY\n\tNFTA_SET_ELEM_DATA                = C.NFTA_SET_ELEM_DATA\n\tNFTA_SET_ELEM_FLAGS               = C.NFTA_SET_ELEM_FLAGS\n\tNFTA_SET_ELEM_TIMEOUT             = C.NFTA_SET_ELEM_TIMEOUT\n\tNFTA_SET_ELEM_EXPIRATION          = C.NFTA_SET_ELEM_EXPIRATION\n\tNFTA_SET_ELEM_USERDATA            = C.NFTA_SET_ELEM_USERDATA\n\tNFTA_SET_ELEM_EXPR                = C.NFTA_SET_ELEM_EXPR\n\tNFTA_SET_ELEM_PAD                 = C.NFTA_SET_ELEM_PAD\n\tNFTA_SET_ELEM_OBJREF              = C.NFTA_SET_ELEM_OBJREF\n\tNFTA_SET_ELEM_LIST_UNSPEC         = C.NFTA_SET_ELEM_LIST_UNSPEC\n\tNFTA_SET_ELEM_LIST_TABLE          = C.NFTA_SET_ELEM_LIST_TABLE\n\tNFTA_SET_ELEM_LIST_SET            = C.NFTA_SET_ELEM_LIST_SET\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = C.NFTA_SET_ELEM_LIST_ELEMENTS\n\tNFTA_SET_ELEM_LIST_SET_ID         = C.NFTA_SET_ELEM_LIST_SET_ID\n\tNFT_DATA_VALUE                    = C.NFT_DATA_VALUE\n\tNFT_DATA_VERDICT                  = C.NFT_DATA_VERDICT\n\tNFTA_DATA_UNSPEC                  = C.NFTA_DATA_UNSPEC\n\tNFTA_DATA_VALUE                   = C.NFTA_DATA_VALUE\n\tNFTA_DATA_VERDICT                 = C.NFTA_DATA_VERDICT\n\tNFTA_VERDICT_UNSPEC               = C.NFTA_VERDICT_UNSPEC\n\tNFTA_VERDICT_CODE                 = C.NFTA_VERDICT_CODE\n\tNFTA_VERDICT_CHAIN                = C.NFTA_VERDICT_CHAIN\n\tNFTA_EXPR_UNSPEC                  = C.NFTA_EXPR_UNSPEC\n\tNFTA_EXPR_NAME                    = C.NFTA_EXPR_NAME\n\tNFTA_EXPR_DATA                    = C.NFTA_EXPR_DATA\n\tNFTA_IMMEDIATE_UNSPEC             = C.NFTA_IMMEDIATE_UNSPEC\n\tNFTA_IMMEDIATE_DREG               = C.NFTA_IMMEDIATE_DREG\n\tNFTA_IMMEDIATE_DATA               = C.NFTA_IMMEDIATE_DATA\n\tNFTA_BITWISE_UNSPEC               = C.NFTA_BITWISE_UNSPEC\n\tNFTA_BITWISE_SREG                 = C.NFTA_BITWISE_SREG\n\tNFTA_BITWISE_DREG                 = C.NFTA_BITWISE_DREG\n\tNFTA_BITWISE_LEN                  = C.NFTA_BITWISE_LEN\n\tNFTA_BITWISE_MASK                 = C.NFTA_BITWISE_MASK\n\tNFTA_BITWISE_XOR                  = C.NFTA_BITWISE_XOR\n\tNFT_BYTEORDER_NTOH                = C.NFT_BYTEORDER_NTOH\n\tNFT_BYTEORDER_HTON                = C.NFT_BYTEORDER_HTON\n\tNFTA_BYTEORDER_UNSPEC             = C.NFTA_BYTEORDER_UNSPEC\n\tNFTA_BYTEORDER_SREG               = C.NFTA_BYTEORDER_SREG\n\tNFTA_BYTEORDER_DREG               = C.NFTA_BYTEORDER_DREG\n\tNFTA_BYTEORDER_OP                 = C.NFTA_BYTEORDER_OP\n\tNFTA_BYTEORDER_LEN                = C.NFTA_BYTEORDER_LEN\n\tNFTA_BYTEORDER_SIZE               = C.NFTA_BYTEORDER_SIZE\n\tNFT_CMP_EQ                        = C.NFT_CMP_EQ\n\tNFT_CMP_NEQ                       = C.NFT_CMP_NEQ\n\tNFT_CMP_LT                        = C.NFT_CMP_LT\n\tNFT_CMP_LTE                       = C.NFT_CMP_LTE\n\tNFT_CMP_GT                        = C.NFT_CMP_GT\n\tNFT_CMP_GTE                       = C.NFT_CMP_GTE\n\tNFTA_CMP_UNSPEC                   = C.NFTA_CMP_UNSPEC\n\tNFTA_CMP_SREG                     = C.NFTA_CMP_SREG\n\tNFTA_CMP_OP                       = C.NFTA_CMP_OP\n\tNFTA_CMP_DATA                     = C.NFTA_CMP_DATA\n\tNFT_RANGE_EQ                      = C.NFT_RANGE_EQ\n\tNFT_RANGE_NEQ                     = C.NFT_RANGE_NEQ\n\tNFTA_RANGE_UNSPEC                 = C.NFTA_RANGE_UNSPEC\n\tNFTA_RANGE_SREG                   = C.NFTA_RANGE_SREG\n\tNFTA_RANGE_OP                     = C.NFTA_RANGE_OP\n\tNFTA_RANGE_FROM_DATA              = C.NFTA_RANGE_FROM_DATA\n\tNFTA_RANGE_TO_DATA                = C.NFTA_RANGE_TO_DATA\n\tNFT_LOOKUP_F_INV                  = C.NFT_LOOKUP_F_INV\n\tNFTA_LOOKUP_UNSPEC                = C.NFTA_LOOKUP_UNSPEC\n\tNFTA_LOOKUP_SET                   = C.NFTA_LOOKUP_SET\n\tNFTA_LOOKUP_SREG                  = C.NFTA_LOOKUP_SREG\n\tNFTA_LOOKUP_DREG                  = C.NFTA_LOOKUP_DREG\n\tNFTA_LOOKUP_SET_ID                = C.NFTA_LOOKUP_SET_ID\n\tNFTA_LOOKUP_FLAGS                 = C.NFTA_LOOKUP_FLAGS\n\tNFT_DYNSET_OP_ADD                 = C.NFT_DYNSET_OP_ADD\n\tNFT_DYNSET_OP_UPDATE              = C.NFT_DYNSET_OP_UPDATE\n\tNFT_DYNSET_F_INV                  = C.NFT_DYNSET_F_INV\n\tNFTA_DYNSET_UNSPEC                = C.NFTA_DYNSET_UNSPEC\n\tNFTA_DYNSET_SET_NAME              = C.NFTA_DYNSET_SET_NAME\n\tNFTA_DYNSET_SET_ID                = C.NFTA_DYNSET_SET_ID\n\tNFTA_DYNSET_OP                    = C.NFTA_DYNSET_OP\n\tNFTA_DYNSET_SREG_KEY              = C.NFTA_DYNSET_SREG_KEY\n\tNFTA_DYNSET_SREG_DATA             = C.NFTA_DYNSET_SREG_DATA\n\tNFTA_DYNSET_TIMEOUT               = C.NFTA_DYNSET_TIMEOUT\n\tNFTA_DYNSET_EXPR                  = C.NFTA_DYNSET_EXPR\n\tNFTA_DYNSET_PAD                   = C.NFTA_DYNSET_PAD\n\tNFTA_DYNSET_FLAGS                 = C.NFTA_DYNSET_FLAGS\n\tNFT_PAYLOAD_LL_HEADER             = C.NFT_PAYLOAD_LL_HEADER\n\tNFT_PAYLOAD_NETWORK_HEADER        = C.NFT_PAYLOAD_NETWORK_HEADER\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = C.NFT_PAYLOAD_TRANSPORT_HEADER\n\tNFT_PAYLOAD_CSUM_NONE             = C.NFT_PAYLOAD_CSUM_NONE\n\tNFT_PAYLOAD_CSUM_INET             = C.NFT_PAYLOAD_CSUM_INET\n\tNFT_PAYLOAD_L4CSUM_PSEUDOHDR      = C.NFT_PAYLOAD_L4CSUM_PSEUDOHDR\n\tNFTA_PAYLOAD_UNSPEC               = C.NFTA_PAYLOAD_UNSPEC\n\tNFTA_PAYLOAD_DREG                 = C.NFTA_PAYLOAD_DREG\n\tNFTA_PAYLOAD_BASE                 = C.NFTA_PAYLOAD_BASE\n\tNFTA_PAYLOAD_OFFSET               = C.NFTA_PAYLOAD_OFFSET\n\tNFTA_PAYLOAD_LEN                  = C.NFTA_PAYLOAD_LEN\n\tNFTA_PAYLOAD_SREG                 = C.NFTA_PAYLOAD_SREG\n\tNFTA_PAYLOAD_CSUM_TYPE            = C.NFTA_PAYLOAD_CSUM_TYPE\n\tNFTA_PAYLOAD_CSUM_OFFSET          = C.NFTA_PAYLOAD_CSUM_OFFSET\n\tNFTA_PAYLOAD_CSUM_FLAGS           = C.NFTA_PAYLOAD_CSUM_FLAGS\n\tNFT_EXTHDR_F_PRESENT              = C.NFT_EXTHDR_F_PRESENT\n\tNFT_EXTHDR_OP_IPV6                = C.NFT_EXTHDR_OP_IPV6\n\tNFT_EXTHDR_OP_TCPOPT              = C.NFT_EXTHDR_OP_TCPOPT\n\tNFTA_EXTHDR_UNSPEC                = C.NFTA_EXTHDR_UNSPEC\n\tNFTA_EXTHDR_DREG                  = C.NFTA_EXTHDR_DREG\n\tNFTA_EXTHDR_TYPE                  = C.NFTA_EXTHDR_TYPE\n\tNFTA_EXTHDR_OFFSET                = C.NFTA_EXTHDR_OFFSET\n\tNFTA_EXTHDR_LEN                   = C.NFTA_EXTHDR_LEN\n\tNFTA_EXTHDR_FLAGS                 = C.NFTA_EXTHDR_FLAGS\n\tNFTA_EXTHDR_OP                    = C.NFTA_EXTHDR_OP\n\tNFTA_EXTHDR_SREG                  = C.NFTA_EXTHDR_SREG\n\tNFT_META_LEN                      = C.NFT_META_LEN\n\tNFT_META_PROTOCOL                 = C.NFT_META_PROTOCOL\n\tNFT_META_PRIORITY                 = C.NFT_META_PRIORITY\n\tNFT_META_MARK                     = C.NFT_META_MARK\n\tNFT_META_IIF                      = C.NFT_META_IIF\n\tNFT_META_OIF                      = C.NFT_META_OIF\n\tNFT_META_IIFNAME                  = C.NFT_META_IIFNAME\n\tNFT_META_OIFNAME                  = C.NFT_META_OIFNAME\n\tNFT_META_IIFTYPE                  = C.NFT_META_IIFTYPE\n\tNFT_META_OIFTYPE                  = C.NFT_META_OIFTYPE\n\tNFT_META_SKUID                    = C.NFT_META_SKUID\n\tNFT_META_SKGID                    = C.NFT_META_SKGID\n\tNFT_META_NFTRACE                  = C.NFT_META_NFTRACE\n\tNFT_META_RTCLASSID                = C.NFT_META_RTCLASSID\n\tNFT_META_SECMARK                  = C.NFT_META_SECMARK\n\tNFT_META_NFPROTO                  = C.NFT_META_NFPROTO\n\tNFT_META_L4PROTO                  = C.NFT_META_L4PROTO\n\tNFT_META_BRI_IIFNAME              = C.NFT_META_BRI_IIFNAME\n\tNFT_META_BRI_OIFNAME              = C.NFT_META_BRI_OIFNAME\n\tNFT_META_PKTTYPE                  = C.NFT_META_PKTTYPE\n\tNFT_META_CPU                      = C.NFT_META_CPU\n\tNFT_META_IIFGROUP                 = C.NFT_META_IIFGROUP\n\tNFT_META_OIFGROUP                 = C.NFT_META_OIFGROUP\n\tNFT_META_CGROUP                   = C.NFT_META_CGROUP\n\tNFT_META_PRANDOM                  = C.NFT_META_PRANDOM\n\tNFT_RT_CLASSID                    = C.NFT_RT_CLASSID\n\tNFT_RT_NEXTHOP4                   = C.NFT_RT_NEXTHOP4\n\tNFT_RT_NEXTHOP6                   = C.NFT_RT_NEXTHOP6\n\tNFT_RT_TCPMSS                     = C.NFT_RT_TCPMSS\n\tNFT_HASH_JENKINS                  = C.NFT_HASH_JENKINS\n\tNFT_HASH_SYM                      = C.NFT_HASH_SYM\n\tNFTA_HASH_UNSPEC                  = C.NFTA_HASH_UNSPEC\n\tNFTA_HASH_SREG                    = C.NFTA_HASH_SREG\n\tNFTA_HASH_DREG                    = C.NFTA_HASH_DREG\n\tNFTA_HASH_LEN                     = C.NFTA_HASH_LEN\n\tNFTA_HASH_MODULUS                 = C.NFTA_HASH_MODULUS\n\tNFTA_HASH_SEED                    = C.NFTA_HASH_SEED\n\tNFTA_HASH_OFFSET                  = C.NFTA_HASH_OFFSET\n\tNFTA_HASH_TYPE                    = C.NFTA_HASH_TYPE\n\tNFTA_META_UNSPEC                  = C.NFTA_META_UNSPEC\n\tNFTA_META_DREG                    = C.NFTA_META_DREG\n\tNFTA_META_KEY                     = C.NFTA_META_KEY\n\tNFTA_META_SREG                    = C.NFTA_META_SREG\n\tNFTA_RT_UNSPEC                    = C.NFTA_RT_UNSPEC\n\tNFTA_RT_DREG                      = C.NFTA_RT_DREG\n\tNFTA_RT_KEY                       = C.NFTA_RT_KEY\n\tNFT_CT_STATE                      = C.NFT_CT_STATE\n\tNFT_CT_DIRECTION                  = C.NFT_CT_DIRECTION\n\tNFT_CT_STATUS                     = C.NFT_CT_STATUS\n\tNFT_CT_MARK                       = C.NFT_CT_MARK\n\tNFT_CT_SECMARK                    = C.NFT_CT_SECMARK\n\tNFT_CT_EXPIRATION                 = C.NFT_CT_EXPIRATION\n\tNFT_CT_HELPER                     = C.NFT_CT_HELPER\n\tNFT_CT_L3PROTOCOL                 = C.NFT_CT_L3PROTOCOL\n\tNFT_CT_SRC                        = C.NFT_CT_SRC\n\tNFT_CT_DST                        = C.NFT_CT_DST\n\tNFT_CT_PROTOCOL                   = C.NFT_CT_PROTOCOL\n\tNFT_CT_PROTO_SRC                  = C.NFT_CT_PROTO_SRC\n\tNFT_CT_PROTO_DST                  = C.NFT_CT_PROTO_DST\n\tNFT_CT_LABELS                     = C.NFT_CT_LABELS\n\tNFT_CT_PKTS                       = C.NFT_CT_PKTS\n\tNFT_CT_BYTES                      = C.NFT_CT_BYTES\n\tNFT_CT_AVGPKT                     = C.NFT_CT_AVGPKT\n\tNFT_CT_ZONE                       = C.NFT_CT_ZONE\n\tNFT_CT_EVENTMASK                  = C.NFT_CT_EVENTMASK\n\tNFTA_CT_UNSPEC                    = C.NFTA_CT_UNSPEC\n\tNFTA_CT_DREG                      = C.NFTA_CT_DREG\n\tNFTA_CT_KEY                       = C.NFTA_CT_KEY\n\tNFTA_CT_DIRECTION                 = C.NFTA_CT_DIRECTION\n\tNFTA_CT_SREG                      = C.NFTA_CT_SREG\n\tNFT_LIMIT_PKTS                    = C.NFT_LIMIT_PKTS\n\tNFT_LIMIT_PKT_BYTES               = C.NFT_LIMIT_PKT_BYTES\n\tNFT_LIMIT_F_INV                   = C.NFT_LIMIT_F_INV\n\tNFTA_LIMIT_UNSPEC                 = C.NFTA_LIMIT_UNSPEC\n\tNFTA_LIMIT_RATE                   = C.NFTA_LIMIT_RATE\n\tNFTA_LIMIT_UNIT                   = C.NFTA_LIMIT_UNIT\n\tNFTA_LIMIT_BURST                  = C.NFTA_LIMIT_BURST\n\tNFTA_LIMIT_TYPE                   = C.NFTA_LIMIT_TYPE\n\tNFTA_LIMIT_FLAGS                  = C.NFTA_LIMIT_FLAGS\n\tNFTA_LIMIT_PAD                    = C.NFTA_LIMIT_PAD\n\tNFTA_COUNTER_UNSPEC               = C.NFTA_COUNTER_UNSPEC\n\tNFTA_COUNTER_BYTES                = C.NFTA_COUNTER_BYTES\n\tNFTA_COUNTER_PACKETS              = C.NFTA_COUNTER_PACKETS\n\tNFTA_COUNTER_PAD                  = C.NFTA_COUNTER_PAD\n\tNFTA_LOG_UNSPEC                   = C.NFTA_LOG_UNSPEC\n\tNFTA_LOG_GROUP                    = C.NFTA_LOG_GROUP\n\tNFTA_LOG_PREFIX                   = C.NFTA_LOG_PREFIX\n\tNFTA_LOG_SNAPLEN                  = C.NFTA_LOG_SNAPLEN\n\tNFTA_LOG_QTHRESHOLD               = C.NFTA_LOG_QTHRESHOLD\n\tNFTA_LOG_LEVEL                    = C.NFTA_LOG_LEVEL\n\tNFTA_LOG_FLAGS                    = C.NFTA_LOG_FLAGS\n\tNFTA_QUEUE_UNSPEC                 = C.NFTA_QUEUE_UNSPEC\n\tNFTA_QUEUE_NUM                    = C.NFTA_QUEUE_NUM\n\tNFTA_QUEUE_TOTAL                  = C.NFTA_QUEUE_TOTAL\n\tNFTA_QUEUE_FLAGS                  = C.NFTA_QUEUE_FLAGS\n\tNFTA_QUEUE_SREG_QNUM              = C.NFTA_QUEUE_SREG_QNUM\n\tNFT_QUOTA_F_INV                   = C.NFT_QUOTA_F_INV\n\tNFT_QUOTA_F_DEPLETED              = C.NFT_QUOTA_F_DEPLETED\n\tNFTA_QUOTA_UNSPEC                 = C.NFTA_QUOTA_UNSPEC\n\tNFTA_QUOTA_BYTES                  = C.NFTA_QUOTA_BYTES\n\tNFTA_QUOTA_FLAGS                  = C.NFTA_QUOTA_FLAGS\n\tNFTA_QUOTA_PAD                    = C.NFTA_QUOTA_PAD\n\tNFTA_QUOTA_CONSUMED               = C.NFTA_QUOTA_CONSUMED\n\tNFT_REJECT_ICMP_UNREACH           = C.NFT_REJECT_ICMP_UNREACH\n\tNFT_REJECT_TCP_RST                = C.NFT_REJECT_TCP_RST\n\tNFT_REJECT_ICMPX_UNREACH          = C.NFT_REJECT_ICMPX_UNREACH\n\tNFT_REJECT_ICMPX_NO_ROUTE         = C.NFT_REJECT_ICMPX_NO_ROUTE\n\tNFT_REJECT_ICMPX_PORT_UNREACH     = C.NFT_REJECT_ICMPX_PORT_UNREACH\n\tNFT_REJECT_ICMPX_HOST_UNREACH     = C.NFT_REJECT_ICMPX_HOST_UNREACH\n\tNFT_REJECT_ICMPX_ADMIN_PROHIBITED = C.NFT_REJECT_ICMPX_ADMIN_PROHIBITED\n\tNFTA_REJECT_UNSPEC                = C.NFTA_REJECT_UNSPEC\n\tNFTA_REJECT_TYPE                  = C.NFTA_REJECT_TYPE\n\tNFTA_REJECT_ICMP_CODE             = C.NFTA_REJECT_ICMP_CODE\n\tNFT_NAT_SNAT                      = C.NFT_NAT_SNAT\n\tNFT_NAT_DNAT                      = C.NFT_NAT_DNAT\n\tNFTA_NAT_UNSPEC                   = C.NFTA_NAT_UNSPEC\n\tNFTA_NAT_TYPE                     = C.NFTA_NAT_TYPE\n\tNFTA_NAT_FAMILY                   = C.NFTA_NAT_FAMILY\n\tNFTA_NAT_REG_ADDR_MIN             = C.NFTA_NAT_REG_ADDR_MIN\n\tNFTA_NAT_REG_ADDR_MAX             = C.NFTA_NAT_REG_ADDR_MAX\n\tNFTA_NAT_REG_PROTO_MIN            = C.NFTA_NAT_REG_PROTO_MIN\n\tNFTA_NAT_REG_PROTO_MAX            = C.NFTA_NAT_REG_PROTO_MAX\n\tNFTA_NAT_FLAGS                    = C.NFTA_NAT_FLAGS\n\tNFTA_MASQ_UNSPEC                  = C.NFTA_MASQ_UNSPEC\n\tNFTA_MASQ_FLAGS                   = C.NFTA_MASQ_FLAGS\n\tNFTA_MASQ_REG_PROTO_MIN           = C.NFTA_MASQ_REG_PROTO_MIN\n\tNFTA_MASQ_REG_PROTO_MAX           = C.NFTA_MASQ_REG_PROTO_MAX\n\tNFTA_REDIR_UNSPEC                 = C.NFTA_REDIR_UNSPEC\n\tNFTA_REDIR_REG_PROTO_MIN          = C.NFTA_REDIR_REG_PROTO_MIN\n\tNFTA_REDIR_REG_PROTO_MAX          = C.NFTA_REDIR_REG_PROTO_MAX\n\tNFTA_REDIR_FLAGS                  = C.NFTA_REDIR_FLAGS\n\tNFTA_DUP_UNSPEC                   = C.NFTA_DUP_UNSPEC\n\tNFTA_DUP_SREG_ADDR                = C.NFTA_DUP_SREG_ADDR\n\tNFTA_DUP_SREG_DEV                 = C.NFTA_DUP_SREG_DEV\n\tNFTA_FWD_UNSPEC                   = C.NFTA_FWD_UNSPEC\n\tNFTA_FWD_SREG_DEV                 = C.NFTA_FWD_SREG_DEV\n\tNFTA_OBJREF_UNSPEC                = C.NFTA_OBJREF_UNSPEC\n\tNFTA_OBJREF_IMM_TYPE              = C.NFTA_OBJREF_IMM_TYPE\n\tNFTA_OBJREF_IMM_NAME              = C.NFTA_OBJREF_IMM_NAME\n\tNFTA_OBJREF_SET_SREG              = C.NFTA_OBJREF_SET_SREG\n\tNFTA_OBJREF_SET_NAME              = C.NFTA_OBJREF_SET_NAME\n\tNFTA_OBJREF_SET_ID                = C.NFTA_OBJREF_SET_ID\n\tNFTA_GEN_UNSPEC                   = C.NFTA_GEN_UNSPEC\n\tNFTA_GEN_ID                       = C.NFTA_GEN_ID\n\tNFTA_GEN_PROC_PID                 = C.NFTA_GEN_PROC_PID\n\tNFTA_GEN_PROC_NAME                = C.NFTA_GEN_PROC_NAME\n\tNFTA_FIB_UNSPEC                   = C.NFTA_FIB_UNSPEC\n\tNFTA_FIB_DREG                     = C.NFTA_FIB_DREG\n\tNFTA_FIB_RESULT                   = C.NFTA_FIB_RESULT\n\tNFTA_FIB_FLAGS                    = C.NFTA_FIB_FLAGS\n\tNFT_FIB_RESULT_UNSPEC             = C.NFT_FIB_RESULT_UNSPEC\n\tNFT_FIB_RESULT_OIF                = C.NFT_FIB_RESULT_OIF\n\tNFT_FIB_RESULT_OIFNAME            = C.NFT_FIB_RESULT_OIFNAME\n\tNFT_FIB_RESULT_ADDRTYPE           = C.NFT_FIB_RESULT_ADDRTYPE\n\tNFTA_FIB_F_SADDR                  = C.NFTA_FIB_F_SADDR\n\tNFTA_FIB_F_DADDR                  = C.NFTA_FIB_F_DADDR\n\tNFTA_FIB_F_MARK                   = C.NFTA_FIB_F_MARK\n\tNFTA_FIB_F_IIF                    = C.NFTA_FIB_F_IIF\n\tNFTA_FIB_F_OIF                    = C.NFTA_FIB_F_OIF\n\tNFTA_FIB_F_PRESENT                = C.NFTA_FIB_F_PRESENT\n\tNFTA_CT_HELPER_UNSPEC             = C.NFTA_CT_HELPER_UNSPEC\n\tNFTA_CT_HELPER_NAME               = C.NFTA_CT_HELPER_NAME\n\tNFTA_CT_HELPER_L3PROTO            = C.NFTA_CT_HELPER_L3PROTO\n\tNFTA_CT_HELPER_L4PROTO            = C.NFTA_CT_HELPER_L4PROTO\n\tNFTA_OBJ_UNSPEC                   = C.NFTA_OBJ_UNSPEC\n\tNFTA_OBJ_TABLE                    = C.NFTA_OBJ_TABLE\n\tNFTA_OBJ_NAME                     = C.NFTA_OBJ_NAME\n\tNFTA_OBJ_TYPE                     = C.NFTA_OBJ_TYPE\n\tNFTA_OBJ_DATA                     = C.NFTA_OBJ_DATA\n\tNFTA_OBJ_USE                      = C.NFTA_OBJ_USE\n\tNFTA_TRACE_UNSPEC                 = C.NFTA_TRACE_UNSPEC\n\tNFTA_TRACE_TABLE                  = C.NFTA_TRACE_TABLE\n\tNFTA_TRACE_CHAIN                  = C.NFTA_TRACE_CHAIN\n\tNFTA_TRACE_RULE_HANDLE            = C.NFTA_TRACE_RULE_HANDLE\n\tNFTA_TRACE_TYPE                   = C.NFTA_TRACE_TYPE\n\tNFTA_TRACE_VERDICT                = C.NFTA_TRACE_VERDICT\n\tNFTA_TRACE_ID                     = C.NFTA_TRACE_ID\n\tNFTA_TRACE_LL_HEADER              = C.NFTA_TRACE_LL_HEADER\n\tNFTA_TRACE_NETWORK_HEADER         = C.NFTA_TRACE_NETWORK_HEADER\n\tNFTA_TRACE_TRANSPORT_HEADER       = C.NFTA_TRACE_TRANSPORT_HEADER\n\tNFTA_TRACE_IIF                    = C.NFTA_TRACE_IIF\n\tNFTA_TRACE_IIFTYPE                = C.NFTA_TRACE_IIFTYPE\n\tNFTA_TRACE_OIF                    = C.NFTA_TRACE_OIF\n\tNFTA_TRACE_OIFTYPE                = C.NFTA_TRACE_OIFTYPE\n\tNFTA_TRACE_MARK                   = C.NFTA_TRACE_MARK\n\tNFTA_TRACE_NFPROTO                = C.NFTA_TRACE_NFPROTO\n\tNFTA_TRACE_POLICY                 = C.NFTA_TRACE_POLICY\n\tNFTA_TRACE_PAD                    = C.NFTA_TRACE_PAD\n\tNFT_TRACETYPE_UNSPEC              = C.NFT_TRACETYPE_UNSPEC\n\tNFT_TRACETYPE_POLICY              = C.NFT_TRACETYPE_POLICY\n\tNFT_TRACETYPE_RETURN              = C.NFT_TRACETYPE_RETURN\n\tNFT_TRACETYPE_RULE                = C.NFT_TRACETYPE_RULE\n\tNFTA_NG_UNSPEC                    = C.NFTA_NG_UNSPEC\n\tNFTA_NG_DREG                      = C.NFTA_NG_DREG\n\tNFTA_NG_MODULUS                   = C.NFTA_NG_MODULUS\n\tNFTA_NG_TYPE                      = C.NFTA_NG_TYPE\n\tNFTA_NG_OFFSET                    = C.NFTA_NG_OFFSET\n\tNFT_NG_INCREMENTAL                = C.NFT_NG_INCREMENTAL\n\tNFT_NG_RANDOM                     = C.NFT_NG_RANDOM\n)\n\n// netfilter nf_tables_compat\n// generated using:\n// perl -nlE '/^\\s*(NFT\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/netfilter/nf_tables_compat.h\nconst (\n\tNFTA_TARGET_UNSPEC = C.NFTA_TARGET_UNSPEC\n\tNFTA_TARGET_NAME   = C.NFTA_TARGET_NAME\n\tNFTA_TARGET_REV    = C.NFTA_TARGET_REV\n\tNFTA_TARGET_INFO   = C.NFTA_TARGET_INFO\n\tNFTA_MATCH_UNSPEC  = C.NFTA_MATCH_UNSPEC\n\tNFTA_MATCH_NAME    = C.NFTA_MATCH_NAME\n\tNFTA_MATCH_REV     = C.NFTA_MATCH_REV\n\tNFTA_MATCH_INFO    = C.NFTA_MATCH_INFO\n\tNFTA_COMPAT_UNSPEC = C.NFTA_COMPAT_UNSPEC\n\tNFTA_COMPAT_NAME   = C.NFTA_COMPAT_NAME\n\tNFTA_COMPAT_REV    = C.NFTA_COMPAT_REV\n\tNFTA_COMPAT_TYPE   = C.NFTA_COMPAT_TYPE\n)\n\ntype RTCTime C.struct_rtc_time\n\ntype RTCWkAlrm C.struct_rtc_wkalrm\n\ntype RTCPLLInfo C.struct_rtc_pll_info\n\n// BLKPG ioctl:\n\ntype BlkpgIoctlArg C.struct_blkpg_ioctl_arg\n\ntype BlkpgPartition C.struct_my_blkpg_partition\n\nconst (\n\tBLKPG                  = C.BLKPG\n\tBLKPG_ADD_PARTITION    = C.BLKPG_ADD_PARTITION\n\tBLKPG_DEL_PARTITION    = C.BLKPG_DEL_PARTITION\n\tBLKPG_RESIZE_PARTITION = C.BLKPG_RESIZE_PARTITION\n)\n\n// netlink namespace\n// generated from\n// perl -nlE '/^\\s*(NETNSA\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/net_namespace.h\nconst (\n\tNETNSA_NONE         = C.NETNSA_NONE\n\tNETNSA_NSID         = C.NETNSA_NSID\n\tNETNSA_PID          = C.NETNSA_PID\n\tNETNSA_FD           = C.NETNSA_FD\n\tNETNSA_TARGET_NSID  = C.NETNSA_TARGET_NSID\n\tNETNSA_CURRENT_NSID = C.NETNSA_CURRENT_NSID\n)\n\n// AF_XDP:\n\ntype XDPRingOffset C.struct_xdp_ring_offset\n\ntype XDPMmapOffsets C.struct_xdp_mmap_offsets\n\ntype XDPUmemReg C.struct_xdp_umem_reg\n\ntype XDPStatistics C.struct_xdp_statistics\n\ntype XDPDesc C.struct_xdp_desc\n\n// NCSI generic netlink:\n\nconst (\n\tNCSI_CMD_UNSPEC                 = C.NCSI_CMD_UNSPEC\n\tNCSI_CMD_PKG_INFO               = C.NCSI_CMD_PKG_INFO\n\tNCSI_CMD_SET_INTERFACE          = C.NCSI_CMD_SET_INTERFACE\n\tNCSI_CMD_CLEAR_INTERFACE        = C.NCSI_CMD_CLEAR_INTERFACE\n\tNCSI_ATTR_UNSPEC                = C.NCSI_ATTR_UNSPEC\n\tNCSI_ATTR_IFINDEX               = C.NCSI_ATTR_IFINDEX\n\tNCSI_ATTR_PACKAGE_LIST          = C.NCSI_ATTR_PACKAGE_LIST\n\tNCSI_ATTR_PACKAGE_ID            = C.NCSI_ATTR_PACKAGE_ID\n\tNCSI_ATTR_CHANNEL_ID            = C.NCSI_ATTR_CHANNEL_ID\n\tNCSI_PKG_ATTR_UNSPEC            = C.NCSI_PKG_ATTR_UNSPEC\n\tNCSI_PKG_ATTR                   = C.NCSI_PKG_ATTR\n\tNCSI_PKG_ATTR_ID                = C.NCSI_PKG_ATTR_ID\n\tNCSI_PKG_ATTR_FORCED            = C.NCSI_PKG_ATTR_FORCED\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = C.NCSI_PKG_ATTR_CHANNEL_LIST\n\tNCSI_CHANNEL_ATTR_UNSPEC        = C.NCSI_CHANNEL_ATTR_UNSPEC\n\tNCSI_CHANNEL_ATTR               = C.NCSI_CHANNEL_ATTR\n\tNCSI_CHANNEL_ATTR_ID            = C.NCSI_CHANNEL_ATTR_ID\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = C.NCSI_CHANNEL_ATTR_VERSION_MAJOR\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = C.NCSI_CHANNEL_ATTR_VERSION_MINOR\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = C.NCSI_CHANNEL_ATTR_VERSION_STR\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = C.NCSI_CHANNEL_ATTR_LINK_STATE\n\tNCSI_CHANNEL_ATTR_ACTIVE        = C.NCSI_CHANNEL_ATTR_ACTIVE\n\tNCSI_CHANNEL_ATTR_FORCED        = C.NCSI_CHANNEL_ATTR_FORCED\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = C.NCSI_CHANNEL_ATTR_VLAN_LIST\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = C.NCSI_CHANNEL_ATTR_VLAN_ID\n)\n\n// Timestamping\n\ntype ScmTimestamping C.struct_scm_timestamping\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = C.SOF_TIMESTAMPING_TX_HARDWARE\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = C.SOF_TIMESTAMPING_TX_SOFTWARE\n\tSOF_TIMESTAMPING_RX_HARDWARE  = C.SOF_TIMESTAMPING_RX_HARDWARE\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = C.SOF_TIMESTAMPING_RX_SOFTWARE\n\tSOF_TIMESTAMPING_SOFTWARE     = C.SOF_TIMESTAMPING_SOFTWARE\n\tSOF_TIMESTAMPING_SYS_HARDWARE = C.SOF_TIMESTAMPING_SYS_HARDWARE\n\tSOF_TIMESTAMPING_RAW_HARDWARE = C.SOF_TIMESTAMPING_RAW_HARDWARE\n\tSOF_TIMESTAMPING_OPT_ID       = C.SOF_TIMESTAMPING_OPT_ID\n\tSOF_TIMESTAMPING_TX_SCHED     = C.SOF_TIMESTAMPING_TX_SCHED\n\tSOF_TIMESTAMPING_TX_ACK       = C.SOF_TIMESTAMPING_TX_ACK\n\tSOF_TIMESTAMPING_OPT_CMSG     = C.SOF_TIMESTAMPING_OPT_CMSG\n\tSOF_TIMESTAMPING_OPT_TSONLY   = C.SOF_TIMESTAMPING_OPT_TSONLY\n\tSOF_TIMESTAMPING_OPT_STATS    = C.SOF_TIMESTAMPING_OPT_STATS\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = C.SOF_TIMESTAMPING_OPT_PKTINFO\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = C.SOF_TIMESTAMPING_OPT_TX_SWHW\n\tSOF_TIMESTAMPING_BIND_PHC     = C.SOF_TIMESTAMPING_BIND_PHC\n\tSOF_TIMESTAMPING_OPT_ID_TCP   = C.SOF_TIMESTAMPING_OPT_ID_TCP\n\n\tSOF_TIMESTAMPING_LAST = C.SOF_TIMESTAMPING_LAST\n\tSOF_TIMESTAMPING_MASK = C.SOF_TIMESTAMPING_MASK\n\n\tSCM_TSTAMP_SND   = C.SCM_TSTAMP_SND\n\tSCM_TSTAMP_SCHED = C.SCM_TSTAMP_SCHED\n\tSCM_TSTAMP_ACK   = C.SCM_TSTAMP_ACK\n)\n\n// Socket error queue\n\ntype SockExtendedErr C.struct_sock_extended_err\n\n// Fanotify\n\ntype FanotifyEventMetadata C.struct_fanotify_event_metadata\n\ntype FanotifyResponse C.struct_fanotify_response\n\n// Crypto user configuration API.\n\nconst (\n\tCRYPTO_MSG_BASE      = C.CRYPTO_MSG_BASE\n\tCRYPTO_MSG_NEWALG    = C.CRYPTO_MSG_NEWALG\n\tCRYPTO_MSG_DELALG    = C.CRYPTO_MSG_DELALG\n\tCRYPTO_MSG_UPDATEALG = C.CRYPTO_MSG_UPDATEALG\n\tCRYPTO_MSG_GETALG    = C.CRYPTO_MSG_GETALG\n\tCRYPTO_MSG_DELRNG    = C.CRYPTO_MSG_DELRNG\n\tCRYPTO_MSG_GETSTAT   = C.CRYPTO_MSG_GETSTAT\n)\n\nconst (\n\tCRYPTOCFGA_UNSPEC           = C.CRYPTOCFGA_UNSPEC\n\tCRYPTOCFGA_PRIORITY_VAL     = C.CRYPTOCFGA_PRIORITY_VAL\n\tCRYPTOCFGA_REPORT_LARVAL    = C.CRYPTOCFGA_REPORT_LARVAL\n\tCRYPTOCFGA_REPORT_HASH      = C.CRYPTOCFGA_REPORT_HASH\n\tCRYPTOCFGA_REPORT_BLKCIPHER = C.CRYPTOCFGA_REPORT_BLKCIPHER\n\tCRYPTOCFGA_REPORT_AEAD      = C.CRYPTOCFGA_REPORT_AEAD\n\tCRYPTOCFGA_REPORT_COMPRESS  = C.CRYPTOCFGA_REPORT_COMPRESS\n\tCRYPTOCFGA_REPORT_RNG       = C.CRYPTOCFGA_REPORT_RNG\n\tCRYPTOCFGA_REPORT_CIPHER    = C.CRYPTOCFGA_REPORT_CIPHER\n\tCRYPTOCFGA_REPORT_AKCIPHER  = C.CRYPTOCFGA_REPORT_AKCIPHER\n\tCRYPTOCFGA_REPORT_KPP       = C.CRYPTOCFGA_REPORT_KPP\n\tCRYPTOCFGA_REPORT_ACOMP     = C.CRYPTOCFGA_REPORT_ACOMP\n\tCRYPTOCFGA_STAT_LARVAL      = C.CRYPTOCFGA_STAT_LARVAL\n\tCRYPTOCFGA_STAT_HASH        = C.CRYPTOCFGA_STAT_HASH\n\tCRYPTOCFGA_STAT_BLKCIPHER   = C.CRYPTOCFGA_STAT_BLKCIPHER\n\tCRYPTOCFGA_STAT_AEAD        = C.CRYPTOCFGA_STAT_AEAD\n\tCRYPTOCFGA_STAT_COMPRESS    = C.CRYPTOCFGA_STAT_COMPRESS\n\tCRYPTOCFGA_STAT_RNG         = C.CRYPTOCFGA_STAT_RNG\n\tCRYPTOCFGA_STAT_CIPHER      = C.CRYPTOCFGA_STAT_CIPHER\n\tCRYPTOCFGA_STAT_AKCIPHER    = C.CRYPTOCFGA_STAT_AKCIPHER\n\tCRYPTOCFGA_STAT_KPP         = C.CRYPTOCFGA_STAT_KPP\n\tCRYPTOCFGA_STAT_ACOMP       = C.CRYPTOCFGA_STAT_ACOMP\n)\n\ntype CryptoUserAlg C.struct_crypto_user_alg\n\ntype CryptoStatAEAD C.struct_crypto_stat_aead\n\ntype CryptoStatAKCipher C.struct_crypto_stat_akcipher\n\ntype CryptoStatCipher C.struct_crypto_stat_cipher\n\ntype CryptoStatCompress C.struct_crypto_stat_compress\n\ntype CryptoStatHash C.struct_crypto_stat_hash\n\ntype CryptoStatKPP C.struct_crypto_stat_kpp\n\ntype CryptoStatRNG C.struct_crypto_stat_rng\n\ntype CryptoStatLarval C.struct_crypto_stat_larval\n\ntype CryptoReportLarval C.struct_crypto_report_larval\n\ntype CryptoReportHash C.struct_crypto_report_hash\n\ntype CryptoReportCipher C.struct_crypto_report_cipher\n\ntype CryptoReportBlkCipher C.struct_crypto_report_blkcipher\n\ntype CryptoReportAEAD C.struct_crypto_report_aead\n\ntype CryptoReportComp C.struct_crypto_report_comp\n\ntype CryptoReportRNG C.struct_crypto_report_rng\n\ntype CryptoReportAKCipher C.struct_crypto_report_akcipher\n\ntype CryptoReportKPP C.struct_crypto_report_kpp\n\ntype CryptoReportAcomp C.struct_crypto_report_acomp\n\n// generated by:\n// perl -nlE '/^\\s*((TCP_)?BPF_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/bpf.h\nconst (\n\tBPF_REG_0                                  = C.BPF_REG_0\n\tBPF_REG_1                                  = C.BPF_REG_1\n\tBPF_REG_2                                  = C.BPF_REG_2\n\tBPF_REG_3                                  = C.BPF_REG_3\n\tBPF_REG_4                                  = C.BPF_REG_4\n\tBPF_REG_5                                  = C.BPF_REG_5\n\tBPF_REG_6                                  = C.BPF_REG_6\n\tBPF_REG_7                                  = C.BPF_REG_7\n\tBPF_REG_8                                  = C.BPF_REG_8\n\tBPF_REG_9                                  = C.BPF_REG_9\n\tBPF_REG_10                                 = C.BPF_REG_10\n\tBPF_CGROUP_ITER_ORDER_UNSPEC               = C.BPF_CGROUP_ITER_ORDER_UNSPEC\n\tBPF_CGROUP_ITER_SELF_ONLY                  = C.BPF_CGROUP_ITER_SELF_ONLY\n\tBPF_CGROUP_ITER_DESCENDANTS_PRE            = C.BPF_CGROUP_ITER_DESCENDANTS_PRE\n\tBPF_CGROUP_ITER_DESCENDANTS_POST           = C.BPF_CGROUP_ITER_DESCENDANTS_POST\n\tBPF_CGROUP_ITER_ANCESTORS_UP               = C.BPF_CGROUP_ITER_ANCESTORS_UP\n\tBPF_MAP_CREATE                             = C.BPF_MAP_CREATE\n\tBPF_MAP_LOOKUP_ELEM                        = C.BPF_MAP_LOOKUP_ELEM\n\tBPF_MAP_UPDATE_ELEM                        = C.BPF_MAP_UPDATE_ELEM\n\tBPF_MAP_DELETE_ELEM                        = C.BPF_MAP_DELETE_ELEM\n\tBPF_MAP_GET_NEXT_KEY                       = C.BPF_MAP_GET_NEXT_KEY\n\tBPF_PROG_LOAD                              = C.BPF_PROG_LOAD\n\tBPF_OBJ_PIN                                = C.BPF_OBJ_PIN\n\tBPF_OBJ_GET                                = C.BPF_OBJ_GET\n\tBPF_PROG_ATTACH                            = C.BPF_PROG_ATTACH\n\tBPF_PROG_DETACH                            = C.BPF_PROG_DETACH\n\tBPF_PROG_TEST_RUN                          = C.BPF_PROG_TEST_RUN\n\tBPF_PROG_RUN                               = C.BPF_PROG_RUN\n\tBPF_PROG_GET_NEXT_ID                       = C.BPF_PROG_GET_NEXT_ID\n\tBPF_MAP_GET_NEXT_ID                        = C.BPF_MAP_GET_NEXT_ID\n\tBPF_PROG_GET_FD_BY_ID                      = C.BPF_PROG_GET_FD_BY_ID\n\tBPF_MAP_GET_FD_BY_ID                       = C.BPF_MAP_GET_FD_BY_ID\n\tBPF_OBJ_GET_INFO_BY_FD                     = C.BPF_OBJ_GET_INFO_BY_FD\n\tBPF_PROG_QUERY                             = C.BPF_PROG_QUERY\n\tBPF_RAW_TRACEPOINT_OPEN                    = C.BPF_RAW_TRACEPOINT_OPEN\n\tBPF_BTF_LOAD                               = C.BPF_BTF_LOAD\n\tBPF_BTF_GET_FD_BY_ID                       = C.BPF_BTF_GET_FD_BY_ID\n\tBPF_TASK_FD_QUERY                          = C.BPF_TASK_FD_QUERY\n\tBPF_MAP_LOOKUP_AND_DELETE_ELEM             = C.BPF_MAP_LOOKUP_AND_DELETE_ELEM\n\tBPF_MAP_FREEZE                             = C.BPF_MAP_FREEZE\n\tBPF_BTF_GET_NEXT_ID                        = C.BPF_BTF_GET_NEXT_ID\n\tBPF_MAP_LOOKUP_BATCH                       = C.BPF_MAP_LOOKUP_BATCH\n\tBPF_MAP_LOOKUP_AND_DELETE_BATCH            = C.BPF_MAP_LOOKUP_AND_DELETE_BATCH\n\tBPF_MAP_UPDATE_BATCH                       = C.BPF_MAP_UPDATE_BATCH\n\tBPF_MAP_DELETE_BATCH                       = C.BPF_MAP_DELETE_BATCH\n\tBPF_LINK_CREATE                            = C.BPF_LINK_CREATE\n\tBPF_LINK_UPDATE                            = C.BPF_LINK_UPDATE\n\tBPF_LINK_GET_FD_BY_ID                      = C.BPF_LINK_GET_FD_BY_ID\n\tBPF_LINK_GET_NEXT_ID                       = C.BPF_LINK_GET_NEXT_ID\n\tBPF_ENABLE_STATS                           = C.BPF_ENABLE_STATS\n\tBPF_ITER_CREATE                            = C.BPF_ITER_CREATE\n\tBPF_LINK_DETACH                            = C.BPF_LINK_DETACH\n\tBPF_PROG_BIND_MAP                          = C.BPF_PROG_BIND_MAP\n\tBPF_MAP_TYPE_UNSPEC                        = C.BPF_MAP_TYPE_UNSPEC\n\tBPF_MAP_TYPE_HASH                          = C.BPF_MAP_TYPE_HASH\n\tBPF_MAP_TYPE_ARRAY                         = C.BPF_MAP_TYPE_ARRAY\n\tBPF_MAP_TYPE_PROG_ARRAY                    = C.BPF_MAP_TYPE_PROG_ARRAY\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY              = C.BPF_MAP_TYPE_PERF_EVENT_ARRAY\n\tBPF_MAP_TYPE_PERCPU_HASH                   = C.BPF_MAP_TYPE_PERCPU_HASH\n\tBPF_MAP_TYPE_PERCPU_ARRAY                  = C.BPF_MAP_TYPE_PERCPU_ARRAY\n\tBPF_MAP_TYPE_STACK_TRACE                   = C.BPF_MAP_TYPE_STACK_TRACE\n\tBPF_MAP_TYPE_CGROUP_ARRAY                  = C.BPF_MAP_TYPE_CGROUP_ARRAY\n\tBPF_MAP_TYPE_LRU_HASH                      = C.BPF_MAP_TYPE_LRU_HASH\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH               = C.BPF_MAP_TYPE_LRU_PERCPU_HASH\n\tBPF_MAP_TYPE_LPM_TRIE                      = C.BPF_MAP_TYPE_LPM_TRIE\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS                 = C.BPF_MAP_TYPE_ARRAY_OF_MAPS\n\tBPF_MAP_TYPE_HASH_OF_MAPS                  = C.BPF_MAP_TYPE_HASH_OF_MAPS\n\tBPF_MAP_TYPE_DEVMAP                        = C.BPF_MAP_TYPE_DEVMAP\n\tBPF_MAP_TYPE_SOCKMAP                       = C.BPF_MAP_TYPE_SOCKMAP\n\tBPF_MAP_TYPE_CPUMAP                        = C.BPF_MAP_TYPE_CPUMAP\n\tBPF_MAP_TYPE_XSKMAP                        = C.BPF_MAP_TYPE_XSKMAP\n\tBPF_MAP_TYPE_SOCKHASH                      = C.BPF_MAP_TYPE_SOCKHASH\n\tBPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED     = C.BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED\n\tBPF_MAP_TYPE_CGROUP_STORAGE                = C.BPF_MAP_TYPE_CGROUP_STORAGE\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY           = C.BPF_MAP_TYPE_REUSEPORT_SOCKARRAY\n\tBPF_MAP_TYPE_PERCPU_CGROUP_STORAGE         = C.BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE\n\tBPF_MAP_TYPE_QUEUE                         = C.BPF_MAP_TYPE_QUEUE\n\tBPF_MAP_TYPE_STACK                         = C.BPF_MAP_TYPE_STACK\n\tBPF_MAP_TYPE_SK_STORAGE                    = C.BPF_MAP_TYPE_SK_STORAGE\n\tBPF_MAP_TYPE_DEVMAP_HASH                   = C.BPF_MAP_TYPE_DEVMAP_HASH\n\tBPF_MAP_TYPE_STRUCT_OPS                    = C.BPF_MAP_TYPE_STRUCT_OPS\n\tBPF_MAP_TYPE_RINGBUF                       = C.BPF_MAP_TYPE_RINGBUF\n\tBPF_MAP_TYPE_INODE_STORAGE                 = C.BPF_MAP_TYPE_INODE_STORAGE\n\tBPF_MAP_TYPE_TASK_STORAGE                  = C.BPF_MAP_TYPE_TASK_STORAGE\n\tBPF_MAP_TYPE_BLOOM_FILTER                  = C.BPF_MAP_TYPE_BLOOM_FILTER\n\tBPF_MAP_TYPE_USER_RINGBUF                  = C.BPF_MAP_TYPE_USER_RINGBUF\n\tBPF_MAP_TYPE_CGRP_STORAGE                  = C.BPF_MAP_TYPE_CGRP_STORAGE\n\tBPF_PROG_TYPE_UNSPEC                       = C.BPF_PROG_TYPE_UNSPEC\n\tBPF_PROG_TYPE_SOCKET_FILTER                = C.BPF_PROG_TYPE_SOCKET_FILTER\n\tBPF_PROG_TYPE_KPROBE                       = C.BPF_PROG_TYPE_KPROBE\n\tBPF_PROG_TYPE_SCHED_CLS                    = C.BPF_PROG_TYPE_SCHED_CLS\n\tBPF_PROG_TYPE_SCHED_ACT                    = C.BPF_PROG_TYPE_SCHED_ACT\n\tBPF_PROG_TYPE_TRACEPOINT                   = C.BPF_PROG_TYPE_TRACEPOINT\n\tBPF_PROG_TYPE_XDP                          = C.BPF_PROG_TYPE_XDP\n\tBPF_PROG_TYPE_PERF_EVENT                   = C.BPF_PROG_TYPE_PERF_EVENT\n\tBPF_PROG_TYPE_CGROUP_SKB                   = C.BPF_PROG_TYPE_CGROUP_SKB\n\tBPF_PROG_TYPE_CGROUP_SOCK                  = C.BPF_PROG_TYPE_CGROUP_SOCK\n\tBPF_PROG_TYPE_LWT_IN                       = C.BPF_PROG_TYPE_LWT_IN\n\tBPF_PROG_TYPE_LWT_OUT                      = C.BPF_PROG_TYPE_LWT_OUT\n\tBPF_PROG_TYPE_LWT_XMIT                     = C.BPF_PROG_TYPE_LWT_XMIT\n\tBPF_PROG_TYPE_SOCK_OPS                     = C.BPF_PROG_TYPE_SOCK_OPS\n\tBPF_PROG_TYPE_SK_SKB                       = C.BPF_PROG_TYPE_SK_SKB\n\tBPF_PROG_TYPE_CGROUP_DEVICE                = C.BPF_PROG_TYPE_CGROUP_DEVICE\n\tBPF_PROG_TYPE_SK_MSG                       = C.BPF_PROG_TYPE_SK_MSG\n\tBPF_PROG_TYPE_RAW_TRACEPOINT               = C.BPF_PROG_TYPE_RAW_TRACEPOINT\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR             = C.BPF_PROG_TYPE_CGROUP_SOCK_ADDR\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL                = C.BPF_PROG_TYPE_LWT_SEG6LOCAL\n\tBPF_PROG_TYPE_LIRC_MODE2                   = C.BPF_PROG_TYPE_LIRC_MODE2\n\tBPF_PROG_TYPE_SK_REUSEPORT                 = C.BPF_PROG_TYPE_SK_REUSEPORT\n\tBPF_PROG_TYPE_FLOW_DISSECTOR               = C.BPF_PROG_TYPE_FLOW_DISSECTOR\n\tBPF_PROG_TYPE_CGROUP_SYSCTL                = C.BPF_PROG_TYPE_CGROUP_SYSCTL\n\tBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE      = C.BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE\n\tBPF_PROG_TYPE_CGROUP_SOCKOPT               = C.BPF_PROG_TYPE_CGROUP_SOCKOPT\n\tBPF_PROG_TYPE_TRACING                      = C.BPF_PROG_TYPE_TRACING\n\tBPF_PROG_TYPE_STRUCT_OPS                   = C.BPF_PROG_TYPE_STRUCT_OPS\n\tBPF_PROG_TYPE_EXT                          = C.BPF_PROG_TYPE_EXT\n\tBPF_PROG_TYPE_LSM                          = C.BPF_PROG_TYPE_LSM\n\tBPF_PROG_TYPE_SK_LOOKUP                    = C.BPF_PROG_TYPE_SK_LOOKUP\n\tBPF_PROG_TYPE_SYSCALL                      = C.BPF_PROG_TYPE_SYSCALL\n\tBPF_PROG_TYPE_NETFILTER                    = C.BPF_PROG_TYPE_NETFILTER\n\tBPF_CGROUP_INET_INGRESS                    = C.BPF_CGROUP_INET_INGRESS\n\tBPF_CGROUP_INET_EGRESS                     = C.BPF_CGROUP_INET_EGRESS\n\tBPF_CGROUP_INET_SOCK_CREATE                = C.BPF_CGROUP_INET_SOCK_CREATE\n\tBPF_CGROUP_SOCK_OPS                        = C.BPF_CGROUP_SOCK_OPS\n\tBPF_SK_SKB_STREAM_PARSER                   = C.BPF_SK_SKB_STREAM_PARSER\n\tBPF_SK_SKB_STREAM_VERDICT                  = C.BPF_SK_SKB_STREAM_VERDICT\n\tBPF_CGROUP_DEVICE                          = C.BPF_CGROUP_DEVICE\n\tBPF_SK_MSG_VERDICT                         = C.BPF_SK_MSG_VERDICT\n\tBPF_CGROUP_INET4_BIND                      = C.BPF_CGROUP_INET4_BIND\n\tBPF_CGROUP_INET6_BIND                      = C.BPF_CGROUP_INET6_BIND\n\tBPF_CGROUP_INET4_CONNECT                   = C.BPF_CGROUP_INET4_CONNECT\n\tBPF_CGROUP_INET6_CONNECT                   = C.BPF_CGROUP_INET6_CONNECT\n\tBPF_CGROUP_INET4_POST_BIND                 = C.BPF_CGROUP_INET4_POST_BIND\n\tBPF_CGROUP_INET6_POST_BIND                 = C.BPF_CGROUP_INET6_POST_BIND\n\tBPF_CGROUP_UDP4_SENDMSG                    = C.BPF_CGROUP_UDP4_SENDMSG\n\tBPF_CGROUP_UDP6_SENDMSG                    = C.BPF_CGROUP_UDP6_SENDMSG\n\tBPF_LIRC_MODE2                             = C.BPF_LIRC_MODE2\n\tBPF_FLOW_DISSECTOR                         = C.BPF_FLOW_DISSECTOR\n\tBPF_CGROUP_SYSCTL                          = C.BPF_CGROUP_SYSCTL\n\tBPF_CGROUP_UDP4_RECVMSG                    = C.BPF_CGROUP_UDP4_RECVMSG\n\tBPF_CGROUP_UDP6_RECVMSG                    = C.BPF_CGROUP_UDP6_RECVMSG\n\tBPF_CGROUP_GETSOCKOPT                      = C.BPF_CGROUP_GETSOCKOPT\n\tBPF_CGROUP_SETSOCKOPT                      = C.BPF_CGROUP_SETSOCKOPT\n\tBPF_TRACE_RAW_TP                           = C.BPF_TRACE_RAW_TP\n\tBPF_TRACE_FENTRY                           = C.BPF_TRACE_FENTRY\n\tBPF_TRACE_FEXIT                            = C.BPF_TRACE_FEXIT\n\tBPF_MODIFY_RETURN                          = C.BPF_MODIFY_RETURN\n\tBPF_LSM_MAC                                = C.BPF_LSM_MAC\n\tBPF_TRACE_ITER                             = C.BPF_TRACE_ITER\n\tBPF_CGROUP_INET4_GETPEERNAME               = C.BPF_CGROUP_INET4_GETPEERNAME\n\tBPF_CGROUP_INET6_GETPEERNAME               = C.BPF_CGROUP_INET6_GETPEERNAME\n\tBPF_CGROUP_INET4_GETSOCKNAME               = C.BPF_CGROUP_INET4_GETSOCKNAME\n\tBPF_CGROUP_INET6_GETSOCKNAME               = C.BPF_CGROUP_INET6_GETSOCKNAME\n\tBPF_XDP_DEVMAP                             = C.BPF_XDP_DEVMAP\n\tBPF_CGROUP_INET_SOCK_RELEASE               = C.BPF_CGROUP_INET_SOCK_RELEASE\n\tBPF_XDP_CPUMAP                             = C.BPF_XDP_CPUMAP\n\tBPF_SK_LOOKUP                              = C.BPF_SK_LOOKUP\n\tBPF_XDP                                    = C.BPF_XDP\n\tBPF_SK_SKB_VERDICT                         = C.BPF_SK_SKB_VERDICT\n\tBPF_SK_REUSEPORT_SELECT                    = C.BPF_SK_REUSEPORT_SELECT\n\tBPF_SK_REUSEPORT_SELECT_OR_MIGRATE         = C.BPF_SK_REUSEPORT_SELECT_OR_MIGRATE\n\tBPF_PERF_EVENT                             = C.BPF_PERF_EVENT\n\tBPF_TRACE_KPROBE_MULTI                     = C.BPF_TRACE_KPROBE_MULTI\n\tBPF_LSM_CGROUP                             = C.BPF_LSM_CGROUP\n\tBPF_STRUCT_OPS                             = C.BPF_STRUCT_OPS\n\tBPF_NETFILTER                              = C.BPF_NETFILTER\n\tBPF_TCX_INGRESS                            = C.BPF_TCX_INGRESS\n\tBPF_TCX_EGRESS                             = C.BPF_TCX_EGRESS\n\tBPF_TRACE_UPROBE_MULTI                     = C.BPF_TRACE_UPROBE_MULTI\n\tBPF_LINK_TYPE_UNSPEC                       = C.BPF_LINK_TYPE_UNSPEC\n\tBPF_LINK_TYPE_RAW_TRACEPOINT               = C.BPF_LINK_TYPE_RAW_TRACEPOINT\n\tBPF_LINK_TYPE_TRACING                      = C.BPF_LINK_TYPE_TRACING\n\tBPF_LINK_TYPE_CGROUP                       = C.BPF_LINK_TYPE_CGROUP\n\tBPF_LINK_TYPE_ITER                         = C.BPF_LINK_TYPE_ITER\n\tBPF_LINK_TYPE_NETNS                        = C.BPF_LINK_TYPE_NETNS\n\tBPF_LINK_TYPE_XDP                          = C.BPF_LINK_TYPE_XDP\n\tBPF_LINK_TYPE_PERF_EVENT                   = C.BPF_LINK_TYPE_PERF_EVENT\n\tBPF_LINK_TYPE_KPROBE_MULTI                 = C.BPF_LINK_TYPE_KPROBE_MULTI\n\tBPF_LINK_TYPE_STRUCT_OPS                   = C.BPF_LINK_TYPE_STRUCT_OPS\n\tBPF_LINK_TYPE_NETFILTER                    = C.BPF_LINK_TYPE_NETFILTER\n\tBPF_LINK_TYPE_TCX                          = C.BPF_LINK_TYPE_TCX\n\tBPF_LINK_TYPE_UPROBE_MULTI                 = C.BPF_LINK_TYPE_UPROBE_MULTI\n\tBPF_PERF_EVENT_UNSPEC                      = C.BPF_PERF_EVENT_UNSPEC\n\tBPF_PERF_EVENT_UPROBE                      = C.BPF_PERF_EVENT_UPROBE\n\tBPF_PERF_EVENT_URETPROBE                   = C.BPF_PERF_EVENT_URETPROBE\n\tBPF_PERF_EVENT_KPROBE                      = C.BPF_PERF_EVENT_KPROBE\n\tBPF_PERF_EVENT_KRETPROBE                   = C.BPF_PERF_EVENT_KRETPROBE\n\tBPF_PERF_EVENT_TRACEPOINT                  = C.BPF_PERF_EVENT_TRACEPOINT\n\tBPF_PERF_EVENT_EVENT                       = C.BPF_PERF_EVENT_EVENT\n\tBPF_F_KPROBE_MULTI_RETURN                  = C.BPF_F_KPROBE_MULTI_RETURN\n\tBPF_F_UPROBE_MULTI_RETURN                  = C.BPF_F_UPROBE_MULTI_RETURN\n\tBPF_ANY                                    = C.BPF_ANY\n\tBPF_NOEXIST                                = C.BPF_NOEXIST\n\tBPF_EXIST                                  = C.BPF_EXIST\n\tBPF_F_LOCK                                 = C.BPF_F_LOCK\n\tBPF_F_NO_PREALLOC                          = C.BPF_F_NO_PREALLOC\n\tBPF_F_NO_COMMON_LRU                        = C.BPF_F_NO_COMMON_LRU\n\tBPF_F_NUMA_NODE                            = C.BPF_F_NUMA_NODE\n\tBPF_F_RDONLY                               = C.BPF_F_RDONLY\n\tBPF_F_WRONLY                               = C.BPF_F_WRONLY\n\tBPF_F_STACK_BUILD_ID                       = C.BPF_F_STACK_BUILD_ID\n\tBPF_F_ZERO_SEED                            = C.BPF_F_ZERO_SEED\n\tBPF_F_RDONLY_PROG                          = C.BPF_F_RDONLY_PROG\n\tBPF_F_WRONLY_PROG                          = C.BPF_F_WRONLY_PROG\n\tBPF_F_CLONE                                = C.BPF_F_CLONE\n\tBPF_F_MMAPABLE                             = C.BPF_F_MMAPABLE\n\tBPF_F_PRESERVE_ELEMS                       = C.BPF_F_PRESERVE_ELEMS\n\tBPF_F_INNER_MAP                            = C.BPF_F_INNER_MAP\n\tBPF_F_LINK                                 = C.BPF_F_LINK\n\tBPF_F_PATH_FD                              = C.BPF_F_PATH_FD\n\tBPF_STATS_RUN_TIME                         = C.BPF_STATS_RUN_TIME\n\tBPF_STACK_BUILD_ID_EMPTY                   = C.BPF_STACK_BUILD_ID_EMPTY\n\tBPF_STACK_BUILD_ID_VALID                   = C.BPF_STACK_BUILD_ID_VALID\n\tBPF_STACK_BUILD_ID_IP                      = C.BPF_STACK_BUILD_ID_IP\n\tBPF_F_RECOMPUTE_CSUM                       = C.BPF_F_RECOMPUTE_CSUM\n\tBPF_F_INVALIDATE_HASH                      = C.BPF_F_INVALIDATE_HASH\n\tBPF_F_HDR_FIELD_MASK                       = C.BPF_F_HDR_FIELD_MASK\n\tBPF_F_PSEUDO_HDR                           = C.BPF_F_PSEUDO_HDR\n\tBPF_F_MARK_MANGLED_0                       = C.BPF_F_MARK_MANGLED_0\n\tBPF_F_MARK_ENFORCE                         = C.BPF_F_MARK_ENFORCE\n\tBPF_F_INGRESS                              = C.BPF_F_INGRESS\n\tBPF_F_TUNINFO_IPV6                         = C.BPF_F_TUNINFO_IPV6\n\tBPF_F_SKIP_FIELD_MASK                      = C.BPF_F_SKIP_FIELD_MASK\n\tBPF_F_USER_STACK                           = C.BPF_F_USER_STACK\n\tBPF_F_FAST_STACK_CMP                       = C.BPF_F_FAST_STACK_CMP\n\tBPF_F_REUSE_STACKID                        = C.BPF_F_REUSE_STACKID\n\tBPF_F_USER_BUILD_ID                        = C.BPF_F_USER_BUILD_ID\n\tBPF_F_ZERO_CSUM_TX                         = C.BPF_F_ZERO_CSUM_TX\n\tBPF_F_DONT_FRAGMENT                        = C.BPF_F_DONT_FRAGMENT\n\tBPF_F_SEQ_NUMBER                           = C.BPF_F_SEQ_NUMBER\n\tBPF_F_NO_TUNNEL_KEY                        = C.BPF_F_NO_TUNNEL_KEY\n\tBPF_F_TUNINFO_FLAGS                        = C.BPF_F_TUNINFO_FLAGS\n\tBPF_F_INDEX_MASK                           = C.BPF_F_INDEX_MASK\n\tBPF_F_CURRENT_CPU                          = C.BPF_F_CURRENT_CPU\n\tBPF_F_CTXLEN_MASK                          = C.BPF_F_CTXLEN_MASK\n\tBPF_F_CURRENT_NETNS                        = C.BPF_F_CURRENT_NETNS\n\tBPF_CSUM_LEVEL_QUERY                       = C.BPF_CSUM_LEVEL_QUERY\n\tBPF_CSUM_LEVEL_INC                         = C.BPF_CSUM_LEVEL_INC\n\tBPF_CSUM_LEVEL_DEC                         = C.BPF_CSUM_LEVEL_DEC\n\tBPF_CSUM_LEVEL_RESET                       = C.BPF_CSUM_LEVEL_RESET\n\tBPF_F_ADJ_ROOM_FIXED_GSO                   = C.BPF_F_ADJ_ROOM_FIXED_GSO\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV4               = C.BPF_F_ADJ_ROOM_ENCAP_L3_IPV4\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV6               = C.BPF_F_ADJ_ROOM_ENCAP_L3_IPV6\n\tBPF_F_ADJ_ROOM_ENCAP_L4_GRE                = C.BPF_F_ADJ_ROOM_ENCAP_L4_GRE\n\tBPF_F_ADJ_ROOM_ENCAP_L4_UDP                = C.BPF_F_ADJ_ROOM_ENCAP_L4_UDP\n\tBPF_F_ADJ_ROOM_NO_CSUM_RESET               = C.BPF_F_ADJ_ROOM_NO_CSUM_RESET\n\tBPF_F_ADJ_ROOM_ENCAP_L2_ETH                = C.BPF_F_ADJ_ROOM_ENCAP_L2_ETH\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV4               = C.BPF_F_ADJ_ROOM_DECAP_L3_IPV4\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV6               = C.BPF_F_ADJ_ROOM_DECAP_L3_IPV6\n\tBPF_ADJ_ROOM_ENCAP_L2_MASK                 = C.BPF_ADJ_ROOM_ENCAP_L2_MASK\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                = C.BPF_ADJ_ROOM_ENCAP_L2_SHIFT\n\tBPF_F_SYSCTL_BASE_NAME                     = C.BPF_F_SYSCTL_BASE_NAME\n\tBPF_LOCAL_STORAGE_GET_F_CREATE             = C.BPF_LOCAL_STORAGE_GET_F_CREATE\n\tBPF_SK_STORAGE_GET_F_CREATE                = C.BPF_SK_STORAGE_GET_F_CREATE\n\tBPF_F_GET_BRANCH_RECORDS_SIZE              = C.BPF_F_GET_BRANCH_RECORDS_SIZE\n\tBPF_RB_NO_WAKEUP                           = C.BPF_RB_NO_WAKEUP\n\tBPF_RB_FORCE_WAKEUP                        = C.BPF_RB_FORCE_WAKEUP\n\tBPF_RB_AVAIL_DATA                          = C.BPF_RB_AVAIL_DATA\n\tBPF_RB_RING_SIZE                           = C.BPF_RB_RING_SIZE\n\tBPF_RB_CONS_POS                            = C.BPF_RB_CONS_POS\n\tBPF_RB_PROD_POS                            = C.BPF_RB_PROD_POS\n\tBPF_RINGBUF_BUSY_BIT                       = C.BPF_RINGBUF_BUSY_BIT\n\tBPF_RINGBUF_DISCARD_BIT                    = C.BPF_RINGBUF_DISCARD_BIT\n\tBPF_RINGBUF_HDR_SZ                         = C.BPF_RINGBUF_HDR_SZ\n\tBPF_SK_LOOKUP_F_REPLACE                    = C.BPF_SK_LOOKUP_F_REPLACE\n\tBPF_SK_LOOKUP_F_NO_REUSEPORT               = C.BPF_SK_LOOKUP_F_NO_REUSEPORT\n\tBPF_ADJ_ROOM_NET                           = C.BPF_ADJ_ROOM_NET\n\tBPF_ADJ_ROOM_MAC                           = C.BPF_ADJ_ROOM_MAC\n\tBPF_HDR_START_MAC                          = C.BPF_HDR_START_MAC\n\tBPF_HDR_START_NET                          = C.BPF_HDR_START_NET\n\tBPF_LWT_ENCAP_SEG6                         = C.BPF_LWT_ENCAP_SEG6\n\tBPF_LWT_ENCAP_SEG6_INLINE                  = C.BPF_LWT_ENCAP_SEG6_INLINE\n\tBPF_LWT_ENCAP_IP                           = C.BPF_LWT_ENCAP_IP\n\tBPF_F_BPRM_SECUREEXEC                      = C.BPF_F_BPRM_SECUREEXEC\n\tBPF_F_BROADCAST                            = C.BPF_F_BROADCAST\n\tBPF_F_EXCLUDE_INGRESS                      = C.BPF_F_EXCLUDE_INGRESS\n\tBPF_SKB_TSTAMP_UNSPEC                      = C.BPF_SKB_TSTAMP_UNSPEC\n\tBPF_SKB_TSTAMP_DELIVERY_MONO               = C.BPF_SKB_TSTAMP_DELIVERY_MONO\n\tBPF_OK                                     = C.BPF_OK\n\tBPF_DROP                                   = C.BPF_DROP\n\tBPF_REDIRECT                               = C.BPF_REDIRECT\n\tBPF_LWT_REROUTE                            = C.BPF_LWT_REROUTE\n\tBPF_FLOW_DISSECTOR_CONTINUE                = C.BPF_FLOW_DISSECTOR_CONTINUE\n\tBPF_SOCK_OPS_RTO_CB_FLAG                   = C.BPF_SOCK_OPS_RTO_CB_FLAG\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG               = C.BPF_SOCK_OPS_RETRANS_CB_FLAG\n\tBPF_SOCK_OPS_STATE_CB_FLAG                 = C.BPF_SOCK_OPS_STATE_CB_FLAG\n\tBPF_SOCK_OPS_RTT_CB_FLAG                   = C.BPF_SOCK_OPS_RTT_CB_FLAG\n\tBPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG     = C.BPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG\n\tBPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = C.BPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG         = C.BPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                  = C.BPF_SOCK_OPS_ALL_CB_FLAGS\n\tBPF_SOCK_OPS_VOID                          = C.BPF_SOCK_OPS_VOID\n\tBPF_SOCK_OPS_TIMEOUT_INIT                  = C.BPF_SOCK_OPS_TIMEOUT_INIT\n\tBPF_SOCK_OPS_RWND_INIT                     = C.BPF_SOCK_OPS_RWND_INIT\n\tBPF_SOCK_OPS_TCP_CONNECT_CB                = C.BPF_SOCK_OPS_TCP_CONNECT_CB\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB         = C.BPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB        = C.BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB\n\tBPF_SOCK_OPS_NEEDS_ECN                     = C.BPF_SOCK_OPS_NEEDS_ECN\n\tBPF_SOCK_OPS_BASE_RTT                      = C.BPF_SOCK_OPS_BASE_RTT\n\tBPF_SOCK_OPS_RTO_CB                        = C.BPF_SOCK_OPS_RTO_CB\n\tBPF_SOCK_OPS_RETRANS_CB                    = C.BPF_SOCK_OPS_RETRANS_CB\n\tBPF_SOCK_OPS_STATE_CB                      = C.BPF_SOCK_OPS_STATE_CB\n\tBPF_SOCK_OPS_TCP_LISTEN_CB                 = C.BPF_SOCK_OPS_TCP_LISTEN_CB\n\tBPF_SOCK_OPS_RTT_CB                        = C.BPF_SOCK_OPS_RTT_CB\n\tBPF_SOCK_OPS_PARSE_HDR_OPT_CB              = C.BPF_SOCK_OPS_PARSE_HDR_OPT_CB\n\tBPF_SOCK_OPS_HDR_OPT_LEN_CB                = C.BPF_SOCK_OPS_HDR_OPT_LEN_CB\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB              = C.BPF_SOCK_OPS_WRITE_HDR_OPT_CB\n\tBPF_TCP_ESTABLISHED                        = C.BPF_TCP_ESTABLISHED\n\tBPF_TCP_SYN_SENT                           = C.BPF_TCP_SYN_SENT\n\tBPF_TCP_SYN_RECV                           = C.BPF_TCP_SYN_RECV\n\tBPF_TCP_FIN_WAIT1                          = C.BPF_TCP_FIN_WAIT1\n\tBPF_TCP_FIN_WAIT2                          = C.BPF_TCP_FIN_WAIT2\n\tBPF_TCP_TIME_WAIT                          = C.BPF_TCP_TIME_WAIT\n\tBPF_TCP_CLOSE                              = C.BPF_TCP_CLOSE\n\tBPF_TCP_CLOSE_WAIT                         = C.BPF_TCP_CLOSE_WAIT\n\tBPF_TCP_LAST_ACK                           = C.BPF_TCP_LAST_ACK\n\tBPF_TCP_LISTEN                             = C.BPF_TCP_LISTEN\n\tBPF_TCP_CLOSING                            = C.BPF_TCP_CLOSING\n\tBPF_TCP_NEW_SYN_RECV                       = C.BPF_TCP_NEW_SYN_RECV\n\tBPF_TCP_MAX_STATES                         = C.BPF_TCP_MAX_STATES\n\tTCP_BPF_IW                                 = C.TCP_BPF_IW\n\tTCP_BPF_SNDCWND_CLAMP                      = C.TCP_BPF_SNDCWND_CLAMP\n\tTCP_BPF_DELACK_MAX                         = C.TCP_BPF_DELACK_MAX\n\tTCP_BPF_RTO_MIN                            = C.TCP_BPF_RTO_MIN\n\tTCP_BPF_SYN                                = C.TCP_BPF_SYN\n\tTCP_BPF_SYN_IP                             = C.TCP_BPF_SYN_IP\n\tTCP_BPF_SYN_MAC                            = C.TCP_BPF_SYN_MAC\n\tBPF_LOAD_HDR_OPT_TCP_SYN                   = C.BPF_LOAD_HDR_OPT_TCP_SYN\n\tBPF_WRITE_HDR_TCP_CURRENT_MSS              = C.BPF_WRITE_HDR_TCP_CURRENT_MSS\n\tBPF_WRITE_HDR_TCP_SYNACK_COOKIE            = C.BPF_WRITE_HDR_TCP_SYNACK_COOKIE\n\tBPF_DEVCG_ACC_MKNOD                        = C.BPF_DEVCG_ACC_MKNOD\n\tBPF_DEVCG_ACC_READ                         = C.BPF_DEVCG_ACC_READ\n\tBPF_DEVCG_ACC_WRITE                        = C.BPF_DEVCG_ACC_WRITE\n\tBPF_DEVCG_DEV_BLOCK                        = C.BPF_DEVCG_DEV_BLOCK\n\tBPF_DEVCG_DEV_CHAR                         = C.BPF_DEVCG_DEV_CHAR\n\tBPF_FIB_LOOKUP_DIRECT                      = C.BPF_FIB_LOOKUP_DIRECT\n\tBPF_FIB_LOOKUP_OUTPUT                      = C.BPF_FIB_LOOKUP_OUTPUT\n\tBPF_FIB_LOOKUP_SKIP_NEIGH                  = C.BPF_FIB_LOOKUP_SKIP_NEIGH\n\tBPF_FIB_LOOKUP_TBID                        = C.BPF_FIB_LOOKUP_TBID\n\tBPF_FIB_LKUP_RET_SUCCESS                   = C.BPF_FIB_LKUP_RET_SUCCESS\n\tBPF_FIB_LKUP_RET_BLACKHOLE                 = C.BPF_FIB_LKUP_RET_BLACKHOLE\n\tBPF_FIB_LKUP_RET_UNREACHABLE               = C.BPF_FIB_LKUP_RET_UNREACHABLE\n\tBPF_FIB_LKUP_RET_PROHIBIT                  = C.BPF_FIB_LKUP_RET_PROHIBIT\n\tBPF_FIB_LKUP_RET_NOT_FWDED                 = C.BPF_FIB_LKUP_RET_NOT_FWDED\n\tBPF_FIB_LKUP_RET_FWD_DISABLED              = C.BPF_FIB_LKUP_RET_FWD_DISABLED\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT                = C.BPF_FIB_LKUP_RET_UNSUPP_LWT\n\tBPF_FIB_LKUP_RET_NO_NEIGH                  = C.BPF_FIB_LKUP_RET_NO_NEIGH\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED               = C.BPF_FIB_LKUP_RET_FRAG_NEEDED\n\tBPF_MTU_CHK_SEGS                           = C.BPF_MTU_CHK_SEGS\n\tBPF_MTU_CHK_RET_SUCCESS                    = C.BPF_MTU_CHK_RET_SUCCESS\n\tBPF_MTU_CHK_RET_FRAG_NEEDED                = C.BPF_MTU_CHK_RET_FRAG_NEEDED\n\tBPF_MTU_CHK_RET_SEGS_TOOBIG                = C.BPF_MTU_CHK_RET_SEGS_TOOBIG\n\tBPF_FD_TYPE_RAW_TRACEPOINT                 = C.BPF_FD_TYPE_RAW_TRACEPOINT\n\tBPF_FD_TYPE_TRACEPOINT                     = C.BPF_FD_TYPE_TRACEPOINT\n\tBPF_FD_TYPE_KPROBE                         = C.BPF_FD_TYPE_KPROBE\n\tBPF_FD_TYPE_KRETPROBE                      = C.BPF_FD_TYPE_KRETPROBE\n\tBPF_FD_TYPE_UPROBE                         = C.BPF_FD_TYPE_UPROBE\n\tBPF_FD_TYPE_URETPROBE                      = C.BPF_FD_TYPE_URETPROBE\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG        = C.BPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL    = C.BPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP         = C.BPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP\n\tBPF_CORE_FIELD_BYTE_OFFSET                 = C.BPF_CORE_FIELD_BYTE_OFFSET\n\tBPF_CORE_FIELD_BYTE_SIZE                   = C.BPF_CORE_FIELD_BYTE_SIZE\n\tBPF_CORE_FIELD_EXISTS                      = C.BPF_CORE_FIELD_EXISTS\n\tBPF_CORE_FIELD_SIGNED                      = C.BPF_CORE_FIELD_SIGNED\n\tBPF_CORE_FIELD_LSHIFT_U64                  = C.BPF_CORE_FIELD_LSHIFT_U64\n\tBPF_CORE_FIELD_RSHIFT_U64                  = C.BPF_CORE_FIELD_RSHIFT_U64\n\tBPF_CORE_TYPE_ID_LOCAL                     = C.BPF_CORE_TYPE_ID_LOCAL\n\tBPF_CORE_TYPE_ID_TARGET                    = C.BPF_CORE_TYPE_ID_TARGET\n\tBPF_CORE_TYPE_EXISTS                       = C.BPF_CORE_TYPE_EXISTS\n\tBPF_CORE_TYPE_SIZE                         = C.BPF_CORE_TYPE_SIZE\n\tBPF_CORE_ENUMVAL_EXISTS                    = C.BPF_CORE_ENUMVAL_EXISTS\n\tBPF_CORE_ENUMVAL_VALUE                     = C.BPF_CORE_ENUMVAL_VALUE\n\tBPF_CORE_TYPE_MATCHES                      = C.BPF_CORE_TYPE_MATCHES\n\tBPF_F_TIMER_ABS                            = C.BPF_F_TIMER_ABS\n)\n\n// generated by:\n// perl -nlE '/^\\s*(RTNLGRP_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/rtnetlink.h\nconst (\n\tRTNLGRP_NONE          = C.RTNLGRP_NONE\n\tRTNLGRP_LINK          = C.RTNLGRP_LINK\n\tRTNLGRP_NOTIFY        = C.RTNLGRP_NOTIFY\n\tRTNLGRP_NEIGH         = C.RTNLGRP_NEIGH\n\tRTNLGRP_TC            = C.RTNLGRP_TC\n\tRTNLGRP_IPV4_IFADDR   = C.RTNLGRP_IPV4_IFADDR\n\tRTNLGRP_IPV4_MROUTE   = C.RTNLGRP_IPV4_MROUTE\n\tRTNLGRP_IPV4_ROUTE    = C.RTNLGRP_IPV4_ROUTE\n\tRTNLGRP_IPV4_RULE     = C.RTNLGRP_IPV4_RULE\n\tRTNLGRP_IPV6_IFADDR   = C.RTNLGRP_IPV6_IFADDR\n\tRTNLGRP_IPV6_MROUTE   = C.RTNLGRP_IPV6_MROUTE\n\tRTNLGRP_IPV6_ROUTE    = C.RTNLGRP_IPV6_ROUTE\n\tRTNLGRP_IPV6_IFINFO   = C.RTNLGRP_IPV6_IFINFO\n\tRTNLGRP_DECnet_IFADDR = C.RTNLGRP_DECnet_IFADDR\n\tRTNLGRP_NOP2          = C.RTNLGRP_NOP2\n\tRTNLGRP_DECnet_ROUTE  = C.RTNLGRP_DECnet_ROUTE\n\tRTNLGRP_DECnet_RULE   = C.RTNLGRP_DECnet_RULE\n\tRTNLGRP_NOP4          = C.RTNLGRP_NOP4\n\tRTNLGRP_IPV6_PREFIX   = C.RTNLGRP_IPV6_PREFIX\n\tRTNLGRP_IPV6_RULE     = C.RTNLGRP_IPV6_RULE\n\tRTNLGRP_ND_USEROPT    = C.RTNLGRP_ND_USEROPT\n\tRTNLGRP_PHONET_IFADDR = C.RTNLGRP_PHONET_IFADDR\n\tRTNLGRP_PHONET_ROUTE  = C.RTNLGRP_PHONET_ROUTE\n\tRTNLGRP_DCB           = C.RTNLGRP_DCB\n\tRTNLGRP_IPV4_NETCONF  = C.RTNLGRP_IPV4_NETCONF\n\tRTNLGRP_IPV6_NETCONF  = C.RTNLGRP_IPV6_NETCONF\n\tRTNLGRP_MDB           = C.RTNLGRP_MDB\n\tRTNLGRP_MPLS_ROUTE    = C.RTNLGRP_MPLS_ROUTE\n\tRTNLGRP_NSID          = C.RTNLGRP_NSID\n\tRTNLGRP_MPLS_NETCONF  = C.RTNLGRP_MPLS_NETCONF\n\tRTNLGRP_IPV4_MROUTE_R = C.RTNLGRP_IPV4_MROUTE_R\n\tRTNLGRP_IPV6_MROUTE_R = C.RTNLGRP_IPV6_MROUTE_R\n\tRTNLGRP_NEXTHOP       = C.RTNLGRP_NEXTHOP\n\tRTNLGRP_BRVLAN        = C.RTNLGRP_BRVLAN\n)\n\n// Capabilities\n\ntype CapUserHeader C.struct___user_cap_header_struct\n\ntype CapUserData C.struct___user_cap_data_struct\n\nconst (\n\tLINUX_CAPABILITY_VERSION_1 = C._LINUX_CAPABILITY_VERSION_1\n\tLINUX_CAPABILITY_VERSION_2 = C._LINUX_CAPABILITY_VERSION_2\n\tLINUX_CAPABILITY_VERSION_3 = C._LINUX_CAPABILITY_VERSION_3\n)\n\n// Loop devices\n\nconst (\n\tLO_FLAGS_READ_ONLY = C.LO_FLAGS_READ_ONLY\n\tLO_FLAGS_AUTOCLEAR = C.LO_FLAGS_AUTOCLEAR\n\tLO_FLAGS_PARTSCAN  = C.LO_FLAGS_PARTSCAN\n\tLO_FLAGS_DIRECT_IO = C.LO_FLAGS_DIRECT_IO\n)\n\ntype LoopInfo C.struct_loop_info\ntype LoopInfo64 C.struct_loop_info64\ntype LoopConfig C.struct_loop_config\n\n// AF_TIPC\n\ntype TIPCSocketAddr C.struct_tipc_socket_addr\n\ntype TIPCServiceRange C.struct_tipc_service_range\n\ntype TIPCServiceName C.struct_tipc_service_name\n\ntype TIPCSubscr C.struct_tipc_subscr\n\ntype TIPCEvent C.struct_tipc_event\n\ntype TIPCGroupReq C.struct_tipc_group_req\n\ntype TIPCSIOCLNReq C.struct_tipc_sioc_ln_req\n\ntype TIPCSIOCNodeIDReq C.struct_tipc_sioc_nodeid_req\n\nconst (\n\tTIPC_CLUSTER_SCOPE = C.TIPC_CLUSTER_SCOPE\n\tTIPC_NODE_SCOPE    = C.TIPC_NODE_SCOPE\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\n// Devlink generic netlink API, generated using:\n// perl -nlE '/^\\s*(DEVLINK_\\w+)/ && say \"$1 = C.$1\"' devlink.h\nconst (\n\tDEVLINK_CMD_UNSPEC                                 = C.DEVLINK_CMD_UNSPEC\n\tDEVLINK_CMD_GET                                    = C.DEVLINK_CMD_GET\n\tDEVLINK_CMD_SET                                    = C.DEVLINK_CMD_SET\n\tDEVLINK_CMD_NEW                                    = C.DEVLINK_CMD_NEW\n\tDEVLINK_CMD_DEL                                    = C.DEVLINK_CMD_DEL\n\tDEVLINK_CMD_PORT_GET                               = C.DEVLINK_CMD_PORT_GET\n\tDEVLINK_CMD_PORT_SET                               = C.DEVLINK_CMD_PORT_SET\n\tDEVLINK_CMD_PORT_NEW                               = C.DEVLINK_CMD_PORT_NEW\n\tDEVLINK_CMD_PORT_DEL                               = C.DEVLINK_CMD_PORT_DEL\n\tDEVLINK_CMD_PORT_SPLIT                             = C.DEVLINK_CMD_PORT_SPLIT\n\tDEVLINK_CMD_PORT_UNSPLIT                           = C.DEVLINK_CMD_PORT_UNSPLIT\n\tDEVLINK_CMD_SB_GET                                 = C.DEVLINK_CMD_SB_GET\n\tDEVLINK_CMD_SB_SET                                 = C.DEVLINK_CMD_SB_SET\n\tDEVLINK_CMD_SB_NEW                                 = C.DEVLINK_CMD_SB_NEW\n\tDEVLINK_CMD_SB_DEL                                 = C.DEVLINK_CMD_SB_DEL\n\tDEVLINK_CMD_SB_POOL_GET                            = C.DEVLINK_CMD_SB_POOL_GET\n\tDEVLINK_CMD_SB_POOL_SET                            = C.DEVLINK_CMD_SB_POOL_SET\n\tDEVLINK_CMD_SB_POOL_NEW                            = C.DEVLINK_CMD_SB_POOL_NEW\n\tDEVLINK_CMD_SB_POOL_DEL                            = C.DEVLINK_CMD_SB_POOL_DEL\n\tDEVLINK_CMD_SB_PORT_POOL_GET                       = C.DEVLINK_CMD_SB_PORT_POOL_GET\n\tDEVLINK_CMD_SB_PORT_POOL_SET                       = C.DEVLINK_CMD_SB_PORT_POOL_SET\n\tDEVLINK_CMD_SB_PORT_POOL_NEW                       = C.DEVLINK_CMD_SB_PORT_POOL_NEW\n\tDEVLINK_CMD_SB_PORT_POOL_DEL                       = C.DEVLINK_CMD_SB_PORT_POOL_DEL\n\tDEVLINK_CMD_SB_TC_POOL_BIND_GET                    = C.DEVLINK_CMD_SB_TC_POOL_BIND_GET\n\tDEVLINK_CMD_SB_TC_POOL_BIND_SET                    = C.DEVLINK_CMD_SB_TC_POOL_BIND_SET\n\tDEVLINK_CMD_SB_TC_POOL_BIND_NEW                    = C.DEVLINK_CMD_SB_TC_POOL_BIND_NEW\n\tDEVLINK_CMD_SB_TC_POOL_BIND_DEL                    = C.DEVLINK_CMD_SB_TC_POOL_BIND_DEL\n\tDEVLINK_CMD_SB_OCC_SNAPSHOT                        = C.DEVLINK_CMD_SB_OCC_SNAPSHOT\n\tDEVLINK_CMD_SB_OCC_MAX_CLEAR                       = C.DEVLINK_CMD_SB_OCC_MAX_CLEAR\n\tDEVLINK_CMD_ESWITCH_GET                            = C.DEVLINK_CMD_ESWITCH_GET\n\tDEVLINK_CMD_ESWITCH_SET                            = C.DEVLINK_CMD_ESWITCH_SET\n\tDEVLINK_CMD_DPIPE_TABLE_GET                        = C.DEVLINK_CMD_DPIPE_TABLE_GET\n\tDEVLINK_CMD_DPIPE_ENTRIES_GET                      = C.DEVLINK_CMD_DPIPE_ENTRIES_GET\n\tDEVLINK_CMD_DPIPE_HEADERS_GET                      = C.DEVLINK_CMD_DPIPE_HEADERS_GET\n\tDEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET               = C.DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET\n\tDEVLINK_CMD_RESOURCE_SET                           = C.DEVLINK_CMD_RESOURCE_SET\n\tDEVLINK_CMD_RESOURCE_DUMP                          = C.DEVLINK_CMD_RESOURCE_DUMP\n\tDEVLINK_CMD_RELOAD                                 = C.DEVLINK_CMD_RELOAD\n\tDEVLINK_CMD_PARAM_GET                              = C.DEVLINK_CMD_PARAM_GET\n\tDEVLINK_CMD_PARAM_SET                              = C.DEVLINK_CMD_PARAM_SET\n\tDEVLINK_CMD_PARAM_NEW                              = C.DEVLINK_CMD_PARAM_NEW\n\tDEVLINK_CMD_PARAM_DEL                              = C.DEVLINK_CMD_PARAM_DEL\n\tDEVLINK_CMD_REGION_GET                             = C.DEVLINK_CMD_REGION_GET\n\tDEVLINK_CMD_REGION_SET                             = C.DEVLINK_CMD_REGION_SET\n\tDEVLINK_CMD_REGION_NEW                             = C.DEVLINK_CMD_REGION_NEW\n\tDEVLINK_CMD_REGION_DEL                             = C.DEVLINK_CMD_REGION_DEL\n\tDEVLINK_CMD_REGION_READ                            = C.DEVLINK_CMD_REGION_READ\n\tDEVLINK_CMD_PORT_PARAM_GET                         = C.DEVLINK_CMD_PORT_PARAM_GET\n\tDEVLINK_CMD_PORT_PARAM_SET                         = C.DEVLINK_CMD_PORT_PARAM_SET\n\tDEVLINK_CMD_PORT_PARAM_NEW                         = C.DEVLINK_CMD_PORT_PARAM_NEW\n\tDEVLINK_CMD_PORT_PARAM_DEL                         = C.DEVLINK_CMD_PORT_PARAM_DEL\n\tDEVLINK_CMD_INFO_GET                               = C.DEVLINK_CMD_INFO_GET\n\tDEVLINK_CMD_HEALTH_REPORTER_GET                    = C.DEVLINK_CMD_HEALTH_REPORTER_GET\n\tDEVLINK_CMD_HEALTH_REPORTER_SET                    = C.DEVLINK_CMD_HEALTH_REPORTER_SET\n\tDEVLINK_CMD_HEALTH_REPORTER_RECOVER                = C.DEVLINK_CMD_HEALTH_REPORTER_RECOVER\n\tDEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE               = C.DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_GET               = C.DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR             = C.DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR\n\tDEVLINK_CMD_FLASH_UPDATE                           = C.DEVLINK_CMD_FLASH_UPDATE\n\tDEVLINK_CMD_FLASH_UPDATE_END                       = C.DEVLINK_CMD_FLASH_UPDATE_END\n\tDEVLINK_CMD_FLASH_UPDATE_STATUS                    = C.DEVLINK_CMD_FLASH_UPDATE_STATUS\n\tDEVLINK_CMD_TRAP_GET                               = C.DEVLINK_CMD_TRAP_GET\n\tDEVLINK_CMD_TRAP_SET                               = C.DEVLINK_CMD_TRAP_SET\n\tDEVLINK_CMD_TRAP_NEW                               = C.DEVLINK_CMD_TRAP_NEW\n\tDEVLINK_CMD_TRAP_DEL                               = C.DEVLINK_CMD_TRAP_DEL\n\tDEVLINK_CMD_TRAP_GROUP_GET                         = C.DEVLINK_CMD_TRAP_GROUP_GET\n\tDEVLINK_CMD_TRAP_GROUP_SET                         = C.DEVLINK_CMD_TRAP_GROUP_SET\n\tDEVLINK_CMD_TRAP_GROUP_NEW                         = C.DEVLINK_CMD_TRAP_GROUP_NEW\n\tDEVLINK_CMD_TRAP_GROUP_DEL                         = C.DEVLINK_CMD_TRAP_GROUP_DEL\n\tDEVLINK_CMD_TRAP_POLICER_GET                       = C.DEVLINK_CMD_TRAP_POLICER_GET\n\tDEVLINK_CMD_TRAP_POLICER_SET                       = C.DEVLINK_CMD_TRAP_POLICER_SET\n\tDEVLINK_CMD_TRAP_POLICER_NEW                       = C.DEVLINK_CMD_TRAP_POLICER_NEW\n\tDEVLINK_CMD_TRAP_POLICER_DEL                       = C.DEVLINK_CMD_TRAP_POLICER_DEL\n\tDEVLINK_CMD_HEALTH_REPORTER_TEST                   = C.DEVLINK_CMD_HEALTH_REPORTER_TEST\n\tDEVLINK_CMD_RATE_GET                               = C.DEVLINK_CMD_RATE_GET\n\tDEVLINK_CMD_RATE_SET                               = C.DEVLINK_CMD_RATE_SET\n\tDEVLINK_CMD_RATE_NEW                               = C.DEVLINK_CMD_RATE_NEW\n\tDEVLINK_CMD_RATE_DEL                               = C.DEVLINK_CMD_RATE_DEL\n\tDEVLINK_CMD_LINECARD_GET                           = C.DEVLINK_CMD_LINECARD_GET\n\tDEVLINK_CMD_LINECARD_SET                           = C.DEVLINK_CMD_LINECARD_SET\n\tDEVLINK_CMD_LINECARD_NEW                           = C.DEVLINK_CMD_LINECARD_NEW\n\tDEVLINK_CMD_LINECARD_DEL                           = C.DEVLINK_CMD_LINECARD_DEL\n\tDEVLINK_CMD_SELFTESTS_GET                          = C.DEVLINK_CMD_SELFTESTS_GET\n\tDEVLINK_CMD_MAX                                    = C.DEVLINK_CMD_MAX\n\tDEVLINK_PORT_TYPE_NOTSET                           = C.DEVLINK_PORT_TYPE_NOTSET\n\tDEVLINK_PORT_TYPE_AUTO                             = C.DEVLINK_PORT_TYPE_AUTO\n\tDEVLINK_PORT_TYPE_ETH                              = C.DEVLINK_PORT_TYPE_ETH\n\tDEVLINK_PORT_TYPE_IB                               = C.DEVLINK_PORT_TYPE_IB\n\tDEVLINK_SB_POOL_TYPE_INGRESS                       = C.DEVLINK_SB_POOL_TYPE_INGRESS\n\tDEVLINK_SB_POOL_TYPE_EGRESS                        = C.DEVLINK_SB_POOL_TYPE_EGRESS\n\tDEVLINK_SB_THRESHOLD_TYPE_STATIC                   = C.DEVLINK_SB_THRESHOLD_TYPE_STATIC\n\tDEVLINK_SB_THRESHOLD_TYPE_DYNAMIC                  = C.DEVLINK_SB_THRESHOLD_TYPE_DYNAMIC\n\tDEVLINK_ESWITCH_MODE_LEGACY                        = C.DEVLINK_ESWITCH_MODE_LEGACY\n\tDEVLINK_ESWITCH_MODE_SWITCHDEV                     = C.DEVLINK_ESWITCH_MODE_SWITCHDEV\n\tDEVLINK_ESWITCH_INLINE_MODE_NONE                   = C.DEVLINK_ESWITCH_INLINE_MODE_NONE\n\tDEVLINK_ESWITCH_INLINE_MODE_LINK                   = C.DEVLINK_ESWITCH_INLINE_MODE_LINK\n\tDEVLINK_ESWITCH_INLINE_MODE_NETWORK                = C.DEVLINK_ESWITCH_INLINE_MODE_NETWORK\n\tDEVLINK_ESWITCH_INLINE_MODE_TRANSPORT              = C.DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT\n\tDEVLINK_ESWITCH_ENCAP_MODE_NONE                    = C.DEVLINK_ESWITCH_ENCAP_MODE_NONE\n\tDEVLINK_ESWITCH_ENCAP_MODE_BASIC                   = C.DEVLINK_ESWITCH_ENCAP_MODE_BASIC\n\tDEVLINK_PORT_FLAVOUR_PHYSICAL                      = C.DEVLINK_PORT_FLAVOUR_PHYSICAL\n\tDEVLINK_PORT_FLAVOUR_CPU                           = C.DEVLINK_PORT_FLAVOUR_CPU\n\tDEVLINK_PORT_FLAVOUR_DSA                           = C.DEVLINK_PORT_FLAVOUR_DSA\n\tDEVLINK_PORT_FLAVOUR_PCI_PF                        = C.DEVLINK_PORT_FLAVOUR_PCI_PF\n\tDEVLINK_PORT_FLAVOUR_PCI_VF                        = C.DEVLINK_PORT_FLAVOUR_PCI_VF\n\tDEVLINK_PORT_FLAVOUR_VIRTUAL                       = C.DEVLINK_PORT_FLAVOUR_VIRTUAL\n\tDEVLINK_PORT_FLAVOUR_UNUSED                        = C.DEVLINK_PORT_FLAVOUR_UNUSED\n\tDEVLINK_PARAM_CMODE_RUNTIME                        = C.DEVLINK_PARAM_CMODE_RUNTIME\n\tDEVLINK_PARAM_CMODE_DRIVERINIT                     = C.DEVLINK_PARAM_CMODE_DRIVERINIT\n\tDEVLINK_PARAM_CMODE_PERMANENT                      = C.DEVLINK_PARAM_CMODE_PERMANENT\n\tDEVLINK_PARAM_CMODE_MAX                            = C.DEVLINK_PARAM_CMODE_MAX\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER          = C.DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH           = C.DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK            = C.DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN         = C.DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = C.DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS  = C.DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER   = C.DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK    = C.DEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK\n\tDEVLINK_ATTR_STATS_RX_PACKETS                      = C.DEVLINK_ATTR_STATS_RX_PACKETS\n\tDEVLINK_ATTR_STATS_RX_BYTES                        = C.DEVLINK_ATTR_STATS_RX_BYTES\n\tDEVLINK_ATTR_STATS_RX_DROPPED                      = C.DEVLINK_ATTR_STATS_RX_DROPPED\n\tDEVLINK_ATTR_STATS_MAX                             = C.DEVLINK_ATTR_STATS_MAX\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS_BIT               = C.DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT            = C.DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT\n\tDEVLINK_FLASH_OVERWRITE_MAX_BIT                    = C.DEVLINK_FLASH_OVERWRITE_MAX_BIT\n\tDEVLINK_TRAP_ACTION_DROP                           = C.DEVLINK_TRAP_ACTION_DROP\n\tDEVLINK_TRAP_ACTION_TRAP                           = C.DEVLINK_TRAP_ACTION_TRAP\n\tDEVLINK_TRAP_ACTION_MIRROR                         = C.DEVLINK_TRAP_ACTION_MIRROR\n\tDEVLINK_TRAP_TYPE_DROP                             = C.DEVLINK_TRAP_TYPE_DROP\n\tDEVLINK_TRAP_TYPE_EXCEPTION                        = C.DEVLINK_TRAP_TYPE_EXCEPTION\n\tDEVLINK_TRAP_TYPE_CONTROL                          = C.DEVLINK_TRAP_TYPE_CONTROL\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT            = C.DEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE          = C.DEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE\n\tDEVLINK_RELOAD_ACTION_UNSPEC                       = C.DEVLINK_RELOAD_ACTION_UNSPEC\n\tDEVLINK_RELOAD_ACTION_DRIVER_REINIT                = C.DEVLINK_RELOAD_ACTION_DRIVER_REINIT\n\tDEVLINK_RELOAD_ACTION_FW_ACTIVATE                  = C.DEVLINK_RELOAD_ACTION_FW_ACTIVATE\n\tDEVLINK_RELOAD_ACTION_MAX                          = C.DEVLINK_RELOAD_ACTION_MAX\n\tDEVLINK_RELOAD_LIMIT_UNSPEC                        = C.DEVLINK_RELOAD_LIMIT_UNSPEC\n\tDEVLINK_RELOAD_LIMIT_NO_RESET                      = C.DEVLINK_RELOAD_LIMIT_NO_RESET\n\tDEVLINK_RELOAD_LIMIT_MAX                           = C.DEVLINK_RELOAD_LIMIT_MAX\n\tDEVLINK_ATTR_UNSPEC                                = C.DEVLINK_ATTR_UNSPEC\n\tDEVLINK_ATTR_BUS_NAME                              = C.DEVLINK_ATTR_BUS_NAME\n\tDEVLINK_ATTR_DEV_NAME                              = C.DEVLINK_ATTR_DEV_NAME\n\tDEVLINK_ATTR_PORT_INDEX                            = C.DEVLINK_ATTR_PORT_INDEX\n\tDEVLINK_ATTR_PORT_TYPE                             = C.DEVLINK_ATTR_PORT_TYPE\n\tDEVLINK_ATTR_PORT_DESIRED_TYPE                     = C.DEVLINK_ATTR_PORT_DESIRED_TYPE\n\tDEVLINK_ATTR_PORT_NETDEV_IFINDEX                   = C.DEVLINK_ATTR_PORT_NETDEV_IFINDEX\n\tDEVLINK_ATTR_PORT_NETDEV_NAME                      = C.DEVLINK_ATTR_PORT_NETDEV_NAME\n\tDEVLINK_ATTR_PORT_IBDEV_NAME                       = C.DEVLINK_ATTR_PORT_IBDEV_NAME\n\tDEVLINK_ATTR_PORT_SPLIT_COUNT                      = C.DEVLINK_ATTR_PORT_SPLIT_COUNT\n\tDEVLINK_ATTR_PORT_SPLIT_GROUP                      = C.DEVLINK_ATTR_PORT_SPLIT_GROUP\n\tDEVLINK_ATTR_SB_INDEX                              = C.DEVLINK_ATTR_SB_INDEX\n\tDEVLINK_ATTR_SB_SIZE                               = C.DEVLINK_ATTR_SB_SIZE\n\tDEVLINK_ATTR_SB_INGRESS_POOL_COUNT                 = C.DEVLINK_ATTR_SB_INGRESS_POOL_COUNT\n\tDEVLINK_ATTR_SB_EGRESS_POOL_COUNT                  = C.DEVLINK_ATTR_SB_EGRESS_POOL_COUNT\n\tDEVLINK_ATTR_SB_INGRESS_TC_COUNT                   = C.DEVLINK_ATTR_SB_INGRESS_TC_COUNT\n\tDEVLINK_ATTR_SB_EGRESS_TC_COUNT                    = C.DEVLINK_ATTR_SB_EGRESS_TC_COUNT\n\tDEVLINK_ATTR_SB_POOL_INDEX                         = C.DEVLINK_ATTR_SB_POOL_INDEX\n\tDEVLINK_ATTR_SB_POOL_TYPE                          = C.DEVLINK_ATTR_SB_POOL_TYPE\n\tDEVLINK_ATTR_SB_POOL_SIZE                          = C.DEVLINK_ATTR_SB_POOL_SIZE\n\tDEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE                = C.DEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE\n\tDEVLINK_ATTR_SB_THRESHOLD                          = C.DEVLINK_ATTR_SB_THRESHOLD\n\tDEVLINK_ATTR_SB_TC_INDEX                           = C.DEVLINK_ATTR_SB_TC_INDEX\n\tDEVLINK_ATTR_SB_OCC_CUR                            = C.DEVLINK_ATTR_SB_OCC_CUR\n\tDEVLINK_ATTR_SB_OCC_MAX                            = C.DEVLINK_ATTR_SB_OCC_MAX\n\tDEVLINK_ATTR_ESWITCH_MODE                          = C.DEVLINK_ATTR_ESWITCH_MODE\n\tDEVLINK_ATTR_ESWITCH_INLINE_MODE                   = C.DEVLINK_ATTR_ESWITCH_INLINE_MODE\n\tDEVLINK_ATTR_DPIPE_TABLES                          = C.DEVLINK_ATTR_DPIPE_TABLES\n\tDEVLINK_ATTR_DPIPE_TABLE                           = C.DEVLINK_ATTR_DPIPE_TABLE\n\tDEVLINK_ATTR_DPIPE_TABLE_NAME                      = C.DEVLINK_ATTR_DPIPE_TABLE_NAME\n\tDEVLINK_ATTR_DPIPE_TABLE_SIZE                      = C.DEVLINK_ATTR_DPIPE_TABLE_SIZE\n\tDEVLINK_ATTR_DPIPE_TABLE_MATCHES                   = C.DEVLINK_ATTR_DPIPE_TABLE_MATCHES\n\tDEVLINK_ATTR_DPIPE_TABLE_ACTIONS                   = C.DEVLINK_ATTR_DPIPE_TABLE_ACTIONS\n\tDEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED          = C.DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED\n\tDEVLINK_ATTR_DPIPE_ENTRIES                         = C.DEVLINK_ATTR_DPIPE_ENTRIES\n\tDEVLINK_ATTR_DPIPE_ENTRY                           = C.DEVLINK_ATTR_DPIPE_ENTRY\n\tDEVLINK_ATTR_DPIPE_ENTRY_INDEX                     = C.DEVLINK_ATTR_DPIPE_ENTRY_INDEX\n\tDEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES              = C.DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES\n\tDEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES             = C.DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES\n\tDEVLINK_ATTR_DPIPE_ENTRY_COUNTER                   = C.DEVLINK_ATTR_DPIPE_ENTRY_COUNTER\n\tDEVLINK_ATTR_DPIPE_MATCH                           = C.DEVLINK_ATTR_DPIPE_MATCH\n\tDEVLINK_ATTR_DPIPE_MATCH_VALUE                     = C.DEVLINK_ATTR_DPIPE_MATCH_VALUE\n\tDEVLINK_ATTR_DPIPE_MATCH_TYPE                      = C.DEVLINK_ATTR_DPIPE_MATCH_TYPE\n\tDEVLINK_ATTR_DPIPE_ACTION                          = C.DEVLINK_ATTR_DPIPE_ACTION\n\tDEVLINK_ATTR_DPIPE_ACTION_VALUE                    = C.DEVLINK_ATTR_DPIPE_ACTION_VALUE\n\tDEVLINK_ATTR_DPIPE_ACTION_TYPE                     = C.DEVLINK_ATTR_DPIPE_ACTION_TYPE\n\tDEVLINK_ATTR_DPIPE_VALUE                           = C.DEVLINK_ATTR_DPIPE_VALUE\n\tDEVLINK_ATTR_DPIPE_VALUE_MASK                      = C.DEVLINK_ATTR_DPIPE_VALUE_MASK\n\tDEVLINK_ATTR_DPIPE_VALUE_MAPPING                   = C.DEVLINK_ATTR_DPIPE_VALUE_MAPPING\n\tDEVLINK_ATTR_DPIPE_HEADERS                         = C.DEVLINK_ATTR_DPIPE_HEADERS\n\tDEVLINK_ATTR_DPIPE_HEADER                          = C.DEVLINK_ATTR_DPIPE_HEADER\n\tDEVLINK_ATTR_DPIPE_HEADER_NAME                     = C.DEVLINK_ATTR_DPIPE_HEADER_NAME\n\tDEVLINK_ATTR_DPIPE_HEADER_ID                       = C.DEVLINK_ATTR_DPIPE_HEADER_ID\n\tDEVLINK_ATTR_DPIPE_HEADER_FIELDS                   = C.DEVLINK_ATTR_DPIPE_HEADER_FIELDS\n\tDEVLINK_ATTR_DPIPE_HEADER_GLOBAL                   = C.DEVLINK_ATTR_DPIPE_HEADER_GLOBAL\n\tDEVLINK_ATTR_DPIPE_HEADER_INDEX                    = C.DEVLINK_ATTR_DPIPE_HEADER_INDEX\n\tDEVLINK_ATTR_DPIPE_FIELD                           = C.DEVLINK_ATTR_DPIPE_FIELD\n\tDEVLINK_ATTR_DPIPE_FIELD_NAME                      = C.DEVLINK_ATTR_DPIPE_FIELD_NAME\n\tDEVLINK_ATTR_DPIPE_FIELD_ID                        = C.DEVLINK_ATTR_DPIPE_FIELD_ID\n\tDEVLINK_ATTR_DPIPE_FIELD_BITWIDTH                  = C.DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH\n\tDEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE              = C.DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE\n\tDEVLINK_ATTR_PAD                                   = C.DEVLINK_ATTR_PAD\n\tDEVLINK_ATTR_ESWITCH_ENCAP_MODE                    = C.DEVLINK_ATTR_ESWITCH_ENCAP_MODE\n\tDEVLINK_ATTR_RESOURCE_LIST                         = C.DEVLINK_ATTR_RESOURCE_LIST\n\tDEVLINK_ATTR_RESOURCE                              = C.DEVLINK_ATTR_RESOURCE\n\tDEVLINK_ATTR_RESOURCE_NAME                         = C.DEVLINK_ATTR_RESOURCE_NAME\n\tDEVLINK_ATTR_RESOURCE_ID                           = C.DEVLINK_ATTR_RESOURCE_ID\n\tDEVLINK_ATTR_RESOURCE_SIZE                         = C.DEVLINK_ATTR_RESOURCE_SIZE\n\tDEVLINK_ATTR_RESOURCE_SIZE_NEW                     = C.DEVLINK_ATTR_RESOURCE_SIZE_NEW\n\tDEVLINK_ATTR_RESOURCE_SIZE_VALID                   = C.DEVLINK_ATTR_RESOURCE_SIZE_VALID\n\tDEVLINK_ATTR_RESOURCE_SIZE_MIN                     = C.DEVLINK_ATTR_RESOURCE_SIZE_MIN\n\tDEVLINK_ATTR_RESOURCE_SIZE_MAX                     = C.DEVLINK_ATTR_RESOURCE_SIZE_MAX\n\tDEVLINK_ATTR_RESOURCE_SIZE_GRAN                    = C.DEVLINK_ATTR_RESOURCE_SIZE_GRAN\n\tDEVLINK_ATTR_RESOURCE_UNIT                         = C.DEVLINK_ATTR_RESOURCE_UNIT\n\tDEVLINK_ATTR_RESOURCE_OCC                          = C.DEVLINK_ATTR_RESOURCE_OCC\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID               = C.DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS            = C.DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS\n\tDEVLINK_ATTR_PORT_FLAVOUR                          = C.DEVLINK_ATTR_PORT_FLAVOUR\n\tDEVLINK_ATTR_PORT_NUMBER                           = C.DEVLINK_ATTR_PORT_NUMBER\n\tDEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER             = C.DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER\n\tDEVLINK_ATTR_PARAM                                 = C.DEVLINK_ATTR_PARAM\n\tDEVLINK_ATTR_PARAM_NAME                            = C.DEVLINK_ATTR_PARAM_NAME\n\tDEVLINK_ATTR_PARAM_GENERIC                         = C.DEVLINK_ATTR_PARAM_GENERIC\n\tDEVLINK_ATTR_PARAM_TYPE                            = C.DEVLINK_ATTR_PARAM_TYPE\n\tDEVLINK_ATTR_PARAM_VALUES_LIST                     = C.DEVLINK_ATTR_PARAM_VALUES_LIST\n\tDEVLINK_ATTR_PARAM_VALUE                           = C.DEVLINK_ATTR_PARAM_VALUE\n\tDEVLINK_ATTR_PARAM_VALUE_DATA                      = C.DEVLINK_ATTR_PARAM_VALUE_DATA\n\tDEVLINK_ATTR_PARAM_VALUE_CMODE                     = C.DEVLINK_ATTR_PARAM_VALUE_CMODE\n\tDEVLINK_ATTR_REGION_NAME                           = C.DEVLINK_ATTR_REGION_NAME\n\tDEVLINK_ATTR_REGION_SIZE                           = C.DEVLINK_ATTR_REGION_SIZE\n\tDEVLINK_ATTR_REGION_SNAPSHOTS                      = C.DEVLINK_ATTR_REGION_SNAPSHOTS\n\tDEVLINK_ATTR_REGION_SNAPSHOT                       = C.DEVLINK_ATTR_REGION_SNAPSHOT\n\tDEVLINK_ATTR_REGION_SNAPSHOT_ID                    = C.DEVLINK_ATTR_REGION_SNAPSHOT_ID\n\tDEVLINK_ATTR_REGION_CHUNKS                         = C.DEVLINK_ATTR_REGION_CHUNKS\n\tDEVLINK_ATTR_REGION_CHUNK                          = C.DEVLINK_ATTR_REGION_CHUNK\n\tDEVLINK_ATTR_REGION_CHUNK_DATA                     = C.DEVLINK_ATTR_REGION_CHUNK_DATA\n\tDEVLINK_ATTR_REGION_CHUNK_ADDR                     = C.DEVLINK_ATTR_REGION_CHUNK_ADDR\n\tDEVLINK_ATTR_REGION_CHUNK_LEN                      = C.DEVLINK_ATTR_REGION_CHUNK_LEN\n\tDEVLINK_ATTR_INFO_DRIVER_NAME                      = C.DEVLINK_ATTR_INFO_DRIVER_NAME\n\tDEVLINK_ATTR_INFO_SERIAL_NUMBER                    = C.DEVLINK_ATTR_INFO_SERIAL_NUMBER\n\tDEVLINK_ATTR_INFO_VERSION_FIXED                    = C.DEVLINK_ATTR_INFO_VERSION_FIXED\n\tDEVLINK_ATTR_INFO_VERSION_RUNNING                  = C.DEVLINK_ATTR_INFO_VERSION_RUNNING\n\tDEVLINK_ATTR_INFO_VERSION_STORED                   = C.DEVLINK_ATTR_INFO_VERSION_STORED\n\tDEVLINK_ATTR_INFO_VERSION_NAME                     = C.DEVLINK_ATTR_INFO_VERSION_NAME\n\tDEVLINK_ATTR_INFO_VERSION_VALUE                    = C.DEVLINK_ATTR_INFO_VERSION_VALUE\n\tDEVLINK_ATTR_SB_POOL_CELL_SIZE                     = C.DEVLINK_ATTR_SB_POOL_CELL_SIZE\n\tDEVLINK_ATTR_FMSG                                  = C.DEVLINK_ATTR_FMSG\n\tDEVLINK_ATTR_FMSG_OBJ_NEST_START                   = C.DEVLINK_ATTR_FMSG_OBJ_NEST_START\n\tDEVLINK_ATTR_FMSG_PAIR_NEST_START                  = C.DEVLINK_ATTR_FMSG_PAIR_NEST_START\n\tDEVLINK_ATTR_FMSG_ARR_NEST_START                   = C.DEVLINK_ATTR_FMSG_ARR_NEST_START\n\tDEVLINK_ATTR_FMSG_NEST_END                         = C.DEVLINK_ATTR_FMSG_NEST_END\n\tDEVLINK_ATTR_FMSG_OBJ_NAME                         = C.DEVLINK_ATTR_FMSG_OBJ_NAME\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE                   = C.DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_DATA                   = C.DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA\n\tDEVLINK_ATTR_HEALTH_REPORTER                       = C.DEVLINK_ATTR_HEALTH_REPORTER\n\tDEVLINK_ATTR_HEALTH_REPORTER_NAME                  = C.DEVLINK_ATTR_HEALTH_REPORTER_NAME\n\tDEVLINK_ATTR_HEALTH_REPORTER_STATE                 = C.DEVLINK_ATTR_HEALTH_REPORTER_STATE\n\tDEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT             = C.DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT\n\tDEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT         = C.DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS               = C.DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS\n\tDEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD       = C.DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER          = C.DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER\n\tDEVLINK_ATTR_FLASH_UPDATE_FILE_NAME                = C.DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME\n\tDEVLINK_ATTR_FLASH_UPDATE_COMPONENT                = C.DEVLINK_ATTR_FLASH_UPDATE_COMPONENT\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG               = C.DEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE              = C.DEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL             = C.DEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL\n\tDEVLINK_ATTR_PORT_PCI_PF_NUMBER                    = C.DEVLINK_ATTR_PORT_PCI_PF_NUMBER\n\tDEVLINK_ATTR_PORT_PCI_VF_NUMBER                    = C.DEVLINK_ATTR_PORT_PCI_VF_NUMBER\n\tDEVLINK_ATTR_STATS                                 = C.DEVLINK_ATTR_STATS\n\tDEVLINK_ATTR_TRAP_NAME                             = C.DEVLINK_ATTR_TRAP_NAME\n\tDEVLINK_ATTR_TRAP_ACTION                           = C.DEVLINK_ATTR_TRAP_ACTION\n\tDEVLINK_ATTR_TRAP_TYPE                             = C.DEVLINK_ATTR_TRAP_TYPE\n\tDEVLINK_ATTR_TRAP_GENERIC                          = C.DEVLINK_ATTR_TRAP_GENERIC\n\tDEVLINK_ATTR_TRAP_METADATA                         = C.DEVLINK_ATTR_TRAP_METADATA\n\tDEVLINK_ATTR_TRAP_GROUP_NAME                       = C.DEVLINK_ATTR_TRAP_GROUP_NAME\n\tDEVLINK_ATTR_RELOAD_FAILED                         = C.DEVLINK_ATTR_RELOAD_FAILED\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS            = C.DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS\n\tDEVLINK_ATTR_NETNS_FD                              = C.DEVLINK_ATTR_NETNS_FD\n\tDEVLINK_ATTR_NETNS_PID                             = C.DEVLINK_ATTR_NETNS_PID\n\tDEVLINK_ATTR_NETNS_ID                              = C.DEVLINK_ATTR_NETNS_ID\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP             = C.DEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP\n\tDEVLINK_ATTR_TRAP_POLICER_ID                       = C.DEVLINK_ATTR_TRAP_POLICER_ID\n\tDEVLINK_ATTR_TRAP_POLICER_RATE                     = C.DEVLINK_ATTR_TRAP_POLICER_RATE\n\tDEVLINK_ATTR_TRAP_POLICER_BURST                    = C.DEVLINK_ATTR_TRAP_POLICER_BURST\n\tDEVLINK_ATTR_PORT_FUNCTION                         = C.DEVLINK_ATTR_PORT_FUNCTION\n\tDEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER              = C.DEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER\n\tDEVLINK_ATTR_PORT_LANES                            = C.DEVLINK_ATTR_PORT_LANES\n\tDEVLINK_ATTR_PORT_SPLITTABLE                       = C.DEVLINK_ATTR_PORT_SPLITTABLE\n\tDEVLINK_ATTR_PORT_EXTERNAL                         = C.DEVLINK_ATTR_PORT_EXTERNAL\n\tDEVLINK_ATTR_PORT_CONTROLLER_NUMBER                = C.DEVLINK_ATTR_PORT_CONTROLLER_NUMBER\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT           = C.DEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT\n\tDEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK           = C.DEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK\n\tDEVLINK_ATTR_RELOAD_ACTION                         = C.DEVLINK_ATTR_RELOAD_ACTION\n\tDEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED              = C.DEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED\n\tDEVLINK_ATTR_RELOAD_LIMITS                         = C.DEVLINK_ATTR_RELOAD_LIMITS\n\tDEVLINK_ATTR_DEV_STATS                             = C.DEVLINK_ATTR_DEV_STATS\n\tDEVLINK_ATTR_RELOAD_STATS                          = C.DEVLINK_ATTR_RELOAD_STATS\n\tDEVLINK_ATTR_RELOAD_STATS_ENTRY                    = C.DEVLINK_ATTR_RELOAD_STATS_ENTRY\n\tDEVLINK_ATTR_RELOAD_STATS_LIMIT                    = C.DEVLINK_ATTR_RELOAD_STATS_LIMIT\n\tDEVLINK_ATTR_RELOAD_STATS_VALUE                    = C.DEVLINK_ATTR_RELOAD_STATS_VALUE\n\tDEVLINK_ATTR_REMOTE_RELOAD_STATS                   = C.DEVLINK_ATTR_REMOTE_RELOAD_STATS\n\tDEVLINK_ATTR_RELOAD_ACTION_INFO                    = C.DEVLINK_ATTR_RELOAD_ACTION_INFO\n\tDEVLINK_ATTR_RELOAD_ACTION_STATS                   = C.DEVLINK_ATTR_RELOAD_ACTION_STATS\n\tDEVLINK_ATTR_PORT_PCI_SF_NUMBER                    = C.DEVLINK_ATTR_PORT_PCI_SF_NUMBER\n\tDEVLINK_ATTR_RATE_TYPE                             = C.DEVLINK_ATTR_RATE_TYPE\n\tDEVLINK_ATTR_RATE_TX_SHARE                         = C.DEVLINK_ATTR_RATE_TX_SHARE\n\tDEVLINK_ATTR_RATE_TX_MAX                           = C.DEVLINK_ATTR_RATE_TX_MAX\n\tDEVLINK_ATTR_RATE_NODE_NAME                        = C.DEVLINK_ATTR_RATE_NODE_NAME\n\tDEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = C.DEVLINK_ATTR_RATE_PARENT_NODE_NAME\n\tDEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = C.DEVLINK_ATTR_REGION_MAX_SNAPSHOTS\n\tDEVLINK_ATTR_LINECARD_INDEX                        = C.DEVLINK_ATTR_LINECARD_INDEX\n\tDEVLINK_ATTR_LINECARD_STATE                        = C.DEVLINK_ATTR_LINECARD_STATE\n\tDEVLINK_ATTR_LINECARD_TYPE                         = C.DEVLINK_ATTR_LINECARD_TYPE\n\tDEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = C.DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES\n\tDEVLINK_ATTR_NESTED_DEVLINK                        = C.DEVLINK_ATTR_NESTED_DEVLINK\n\tDEVLINK_ATTR_SELFTESTS                             = C.DEVLINK_ATTR_SELFTESTS\n\tDEVLINK_ATTR_MAX                                   = C.DEVLINK_ATTR_MAX\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = C.DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = C.DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX\n\tDEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = C.DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT\n\tDEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY             = C.DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY\n\tDEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC               = C.DEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC\n\tDEVLINK_DPIPE_FIELD_IPV4_DST_IP                    = C.DEVLINK_DPIPE_FIELD_IPV4_DST_IP\n\tDEVLINK_DPIPE_FIELD_IPV6_DST_IP                    = C.DEVLINK_DPIPE_FIELD_IPV6_DST_IP\n\tDEVLINK_DPIPE_HEADER_ETHERNET                      = C.DEVLINK_DPIPE_HEADER_ETHERNET\n\tDEVLINK_DPIPE_HEADER_IPV4                          = C.DEVLINK_DPIPE_HEADER_IPV4\n\tDEVLINK_DPIPE_HEADER_IPV6                          = C.DEVLINK_DPIPE_HEADER_IPV6\n\tDEVLINK_RESOURCE_UNIT_ENTRY                        = C.DEVLINK_RESOURCE_UNIT_ENTRY\n\tDEVLINK_PORT_FUNCTION_ATTR_UNSPEC                  = C.DEVLINK_PORT_FUNCTION_ATTR_UNSPEC\n\tDEVLINK_PORT_FUNCTION_ATTR_HW_ADDR                 = C.DEVLINK_PORT_FUNCTION_ATTR_HW_ADDR\n\tDEVLINK_PORT_FN_ATTR_STATE                         = C.DEVLINK_PORT_FN_ATTR_STATE\n\tDEVLINK_PORT_FN_ATTR_OPSTATE                       = C.DEVLINK_PORT_FN_ATTR_OPSTATE\n\tDEVLINK_PORT_FN_ATTR_CAPS                          = C.DEVLINK_PORT_FN_ATTR_CAPS\n\tDEVLINK_PORT_FUNCTION_ATTR_MAX                     = C.DEVLINK_PORT_FUNCTION_ATTR_MAX\n)\n\n// sftpfs-verity\n\ntype FsverityDigest C.struct_fsverity_digest\n\ntype FsverityEnableArg C.struct_fsverity_enable_arg\n\n// nexthop\n\ntype Nhmsg C.struct_nhmsg\n\ntype NexthopGrp C.struct_nexthop_grp\n\nconst (\n\tNHA_UNSPEC     = C.NHA_UNSPEC\n\tNHA_ID         = C.NHA_ID\n\tNHA_GROUP      = C.NHA_GROUP\n\tNHA_GROUP_TYPE = C.NHA_GROUP_TYPE\n\tNHA_BLACKHOLE  = C.NHA_BLACKHOLE\n\tNHA_OIF        = C.NHA_OIF\n\tNHA_GATEWAY    = C.NHA_GATEWAY\n\tNHA_ENCAP_TYPE = C.NHA_ENCAP_TYPE\n\tNHA_ENCAP      = C.NHA_ENCAP\n\tNHA_GROUPS     = C.NHA_GROUPS\n\tNHA_MASTER     = C.NHA_MASTER\n)\n\n// raw CAN sockets\n\nconst (\n\tCAN_RAW_FILTER        = C.CAN_RAW_FILTER\n\tCAN_RAW_ERR_FILTER    = C.CAN_RAW_ERR_FILTER\n\tCAN_RAW_LOOPBACK      = C.CAN_RAW_LOOPBACK\n\tCAN_RAW_RECV_OWN_MSGS = C.CAN_RAW_RECV_OWN_MSGS\n\tCAN_RAW_FD_FRAMES     = C.CAN_RAW_FD_FRAMES\n\tCAN_RAW_JOIN_FILTERS  = C.CAN_RAW_JOIN_FILTERS\n)\n\n// Watchdog API\n\ntype WatchdogInfo C.struct_watchdog_info\n\n// PPS API\n\ntype PPSFData C.struct_pps_fdata\n\ntype PPSKParams C.struct_pps_kparams\n\ntype PPSKInfo C.struct_pps_kinfo\n\ntype PPSKTime C.struct_pps_ktime\n\nconst (\n\tPPS_GETPARAMS = C.PPS_GETPARAMS\n\tPPS_SETPARAMS = C.PPS_SETPARAMS\n\tPPS_GETCAP    = C.PPS_GETCAP\n\tPPS_FETCH     = C.PPS_FETCH\n)\n\n// lwtunnel and related APIs\n\nconst (\n\tLWTUNNEL_ENCAP_NONE       = C.LWTUNNEL_ENCAP_NONE\n\tLWTUNNEL_ENCAP_MPLS       = C.LWTUNNEL_ENCAP_MPLS\n\tLWTUNNEL_ENCAP_IP         = C.LWTUNNEL_ENCAP_IP\n\tLWTUNNEL_ENCAP_ILA        = C.LWTUNNEL_ENCAP_ILA\n\tLWTUNNEL_ENCAP_IP6        = C.LWTUNNEL_ENCAP_IP6\n\tLWTUNNEL_ENCAP_SEG6       = C.LWTUNNEL_ENCAP_SEG6\n\tLWTUNNEL_ENCAP_BPF        = C.LWTUNNEL_ENCAP_BPF\n\tLWTUNNEL_ENCAP_SEG6_LOCAL = C.LWTUNNEL_ENCAP_SEG6_LOCAL\n\tLWTUNNEL_ENCAP_RPL        = C.LWTUNNEL_ENCAP_RPL\n\tLWTUNNEL_ENCAP_IOAM6      = C.LWTUNNEL_ENCAP_IOAM6\n\tLWTUNNEL_ENCAP_XFRM       = C.LWTUNNEL_ENCAP_XFRM\n\tLWTUNNEL_ENCAP_MAX        = C.LWTUNNEL_ENCAP_MAX\n\n\tMPLS_IPTUNNEL_UNSPEC = C.MPLS_IPTUNNEL_UNSPEC\n\tMPLS_IPTUNNEL_DST    = C.MPLS_IPTUNNEL_DST\n\tMPLS_IPTUNNEL_TTL    = C.MPLS_IPTUNNEL_TTL\n\tMPLS_IPTUNNEL_MAX    = C.MPLS_IPTUNNEL_MAX\n)\n\n// ethtool and its netlink interface, generated using:\n//\n// perl -nlE '/^\\s*(ETHTOOL_\\w+)/ && say \"$1 = C.$1\"' ethtool.h\n// perl -nlE '/^\\s*(ETHTOOL_\\w+)/ && say \"$1 = C.$1\"' ethtool_netlink.h\n//\n// Note that a couple of constants produced by this command will be duplicated\n// by mkerrors.sh, so some manual pruning was necessary.\nconst (\n\tETHTOOL_ID_UNSPEC                                                       = C.ETHTOOL_ID_UNSPEC\n\tETHTOOL_RX_COPYBREAK                                                    = C.ETHTOOL_RX_COPYBREAK\n\tETHTOOL_TX_COPYBREAK                                                    = C.ETHTOOL_TX_COPYBREAK\n\tETHTOOL_PFC_PREVENTION_TOUT                                             = C.ETHTOOL_PFC_PREVENTION_TOUT\n\tETHTOOL_TUNABLE_UNSPEC                                                  = C.ETHTOOL_TUNABLE_UNSPEC\n\tETHTOOL_TUNABLE_U8                                                      = C.ETHTOOL_TUNABLE_U8\n\tETHTOOL_TUNABLE_U16                                                     = C.ETHTOOL_TUNABLE_U16\n\tETHTOOL_TUNABLE_U32                                                     = C.ETHTOOL_TUNABLE_U32\n\tETHTOOL_TUNABLE_U64                                                     = C.ETHTOOL_TUNABLE_U64\n\tETHTOOL_TUNABLE_STRING                                                  = C.ETHTOOL_TUNABLE_STRING\n\tETHTOOL_TUNABLE_S8                                                      = C.ETHTOOL_TUNABLE_S8\n\tETHTOOL_TUNABLE_S16                                                     = C.ETHTOOL_TUNABLE_S16\n\tETHTOOL_TUNABLE_S32                                                     = C.ETHTOOL_TUNABLE_S32\n\tETHTOOL_TUNABLE_S64                                                     = C.ETHTOOL_TUNABLE_S64\n\tETHTOOL_PHY_ID_UNSPEC                                                   = C.ETHTOOL_PHY_ID_UNSPEC\n\tETHTOOL_PHY_DOWNSHIFT                                                   = C.ETHTOOL_PHY_DOWNSHIFT\n\tETHTOOL_PHY_FAST_LINK_DOWN                                              = C.ETHTOOL_PHY_FAST_LINK_DOWN\n\tETHTOOL_PHY_EDPD                                                        = C.ETHTOOL_PHY_EDPD\n\tETHTOOL_LINK_EXT_STATE_AUTONEG                                          = C.ETHTOOL_LINK_EXT_STATE_AUTONEG\n\tETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE                            = C.ETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE\n\tETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH                            = C.ETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH\n\tETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY                             = C.ETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY\n\tETHTOOL_LINK_EXT_STATE_NO_CABLE                                         = C.ETHTOOL_LINK_EXT_STATE_NO_CABLE\n\tETHTOOL_LINK_EXT_STATE_CABLE_ISSUE                                      = C.ETHTOOL_LINK_EXT_STATE_CABLE_ISSUE\n\tETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE                                     = C.ETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE\n\tETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE                              = C.ETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE\n\tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED                            = C.ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED\n\tETHTOOL_LINK_EXT_STATE_OVERHEAT                                         = C.ETHTOOL_LINK_EXT_STATE_OVERHEAT\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED                        = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED                           = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED                  = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE             = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE               = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD                                     = C.ETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED                 = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT                    = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT                               = C.ETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK            = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK               = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS              = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED                      = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED                      = C.ETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS           = C.ETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE                          = C.ETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE                          = C.ETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE                         = C.ETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE\n\tETHTOOL_FLASH_ALL_REGIONS                                               = C.ETHTOOL_FLASH_ALL_REGIONS\n\tETHTOOL_F_UNSUPPORTED__BIT                                              = C.ETHTOOL_F_UNSUPPORTED__BIT\n\tETHTOOL_F_WISH__BIT                                                     = C.ETHTOOL_F_WISH__BIT\n\tETHTOOL_F_COMPAT__BIT                                                   = C.ETHTOOL_F_COMPAT__BIT\n\tETHTOOL_FEC_NONE_BIT                                                    = C.ETHTOOL_FEC_NONE_BIT\n\tETHTOOL_FEC_AUTO_BIT                                                    = C.ETHTOOL_FEC_AUTO_BIT\n\tETHTOOL_FEC_OFF_BIT                                                     = C.ETHTOOL_FEC_OFF_BIT\n\tETHTOOL_FEC_RS_BIT                                                      = C.ETHTOOL_FEC_RS_BIT\n\tETHTOOL_FEC_BASER_BIT                                                   = C.ETHTOOL_FEC_BASER_BIT\n\tETHTOOL_FEC_LLRS_BIT                                                    = C.ETHTOOL_FEC_LLRS_BIT\n\tETHTOOL_LINK_MODE_10baseT_Half_BIT                                      = C.ETHTOOL_LINK_MODE_10baseT_Half_BIT\n\tETHTOOL_LINK_MODE_10baseT_Full_BIT                                      = C.ETHTOOL_LINK_MODE_10baseT_Full_BIT\n\tETHTOOL_LINK_MODE_100baseT_Half_BIT                                     = C.ETHTOOL_LINK_MODE_100baseT_Half_BIT\n\tETHTOOL_LINK_MODE_100baseT_Full_BIT                                     = C.ETHTOOL_LINK_MODE_100baseT_Full_BIT\n\tETHTOOL_LINK_MODE_1000baseT_Half_BIT                                    = C.ETHTOOL_LINK_MODE_1000baseT_Half_BIT\n\tETHTOOL_LINK_MODE_1000baseT_Full_BIT                                    = C.ETHTOOL_LINK_MODE_1000baseT_Full_BIT\n\tETHTOOL_LINK_MODE_Autoneg_BIT                                           = C.ETHTOOL_LINK_MODE_Autoneg_BIT\n\tETHTOOL_LINK_MODE_TP_BIT                                                = C.ETHTOOL_LINK_MODE_TP_BIT\n\tETHTOOL_LINK_MODE_AUI_BIT                                               = C.ETHTOOL_LINK_MODE_AUI_BIT\n\tETHTOOL_LINK_MODE_MII_BIT                                               = C.ETHTOOL_LINK_MODE_MII_BIT\n\tETHTOOL_LINK_MODE_FIBRE_BIT                                             = C.ETHTOOL_LINK_MODE_FIBRE_BIT\n\tETHTOOL_LINK_MODE_BNC_BIT                                               = C.ETHTOOL_LINK_MODE_BNC_BIT\n\tETHTOOL_LINK_MODE_10000baseT_Full_BIT                                   = C.ETHTOOL_LINK_MODE_10000baseT_Full_BIT\n\tETHTOOL_LINK_MODE_Pause_BIT                                             = C.ETHTOOL_LINK_MODE_Pause_BIT\n\tETHTOOL_LINK_MODE_Asym_Pause_BIT                                        = C.ETHTOOL_LINK_MODE_Asym_Pause_BIT\n\tETHTOOL_LINK_MODE_2500baseX_Full_BIT                                    = C.ETHTOOL_LINK_MODE_2500baseX_Full_BIT\n\tETHTOOL_LINK_MODE_Backplane_BIT                                         = C.ETHTOOL_LINK_MODE_Backplane_BIT\n\tETHTOOL_LINK_MODE_1000baseKX_Full_BIT                                   = C.ETHTOOL_LINK_MODE_1000baseKX_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseKX4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_10000baseKX4_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseKR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_10000baseKR_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseR_FEC_BIT                                    = C.ETHTOOL_LINK_MODE_10000baseR_FEC_BIT\n\tETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT                                = C.ETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT\n\tETHTOOL_LINK_MODE_20000baseKR2_Full_BIT                                 = C.ETHTOOL_LINK_MODE_20000baseKR2_Full_BIT\n\tETHTOOL_LINK_MODE_40000baseKR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_40000baseKR4_Full_BIT\n\tETHTOOL_LINK_MODE_40000baseCR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_40000baseCR4_Full_BIT\n\tETHTOOL_LINK_MODE_40000baseSR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_40000baseSR4_Full_BIT\n\tETHTOOL_LINK_MODE_40000baseLR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_40000baseLR4_Full_BIT\n\tETHTOOL_LINK_MODE_56000baseKR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_56000baseKR4_Full_BIT\n\tETHTOOL_LINK_MODE_56000baseCR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_56000baseCR4_Full_BIT\n\tETHTOOL_LINK_MODE_56000baseSR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_56000baseSR4_Full_BIT\n\tETHTOOL_LINK_MODE_56000baseLR4_Full_BIT                                 = C.ETHTOOL_LINK_MODE_56000baseLR4_Full_BIT\n\tETHTOOL_LINK_MODE_25000baseCR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_25000baseCR_Full_BIT\n\tETHTOOL_LINK_MODE_25000baseKR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_25000baseKR_Full_BIT\n\tETHTOOL_LINK_MODE_25000baseSR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_25000baseSR_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseCR2_Full_BIT                                 = C.ETHTOOL_LINK_MODE_50000baseCR2_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseKR2_Full_BIT                                 = C.ETHTOOL_LINK_MODE_50000baseKR2_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseKR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseKR4_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseSR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseSR4_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseCR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseCR4_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT                            = C.ETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseSR2_Full_BIT                                 = C.ETHTOOL_LINK_MODE_50000baseSR2_Full_BIT\n\tETHTOOL_LINK_MODE_1000baseX_Full_BIT                                    = C.ETHTOOL_LINK_MODE_1000baseX_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseCR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_10000baseCR_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseSR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_10000baseSR_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseLR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_10000baseLR_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseLRM_Full_BIT                                 = C.ETHTOOL_LINK_MODE_10000baseLRM_Full_BIT\n\tETHTOOL_LINK_MODE_10000baseER_Full_BIT                                  = C.ETHTOOL_LINK_MODE_10000baseER_Full_BIT\n\tETHTOOL_LINK_MODE_2500baseT_Full_BIT                                    = C.ETHTOOL_LINK_MODE_2500baseT_Full_BIT\n\tETHTOOL_LINK_MODE_5000baseT_Full_BIT                                    = C.ETHTOOL_LINK_MODE_5000baseT_Full_BIT\n\tETHTOOL_LINK_MODE_FEC_NONE_BIT                                          = C.ETHTOOL_LINK_MODE_FEC_NONE_BIT\n\tETHTOOL_LINK_MODE_FEC_RS_BIT                                            = C.ETHTOOL_LINK_MODE_FEC_RS_BIT\n\tETHTOOL_LINK_MODE_FEC_BASER_BIT                                         = C.ETHTOOL_LINK_MODE_FEC_BASER_BIT\n\tETHTOOL_LINK_MODE_50000baseKR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_50000baseKR_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseSR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_50000baseSR_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseCR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_50000baseCR_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT                            = C.ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT\n\tETHTOOL_LINK_MODE_50000baseDR_Full_BIT                                  = C.ETHTOOL_LINK_MODE_50000baseDR_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseKR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseSR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseCR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT                        = C.ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseDR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseKR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseSR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT                        = C.ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseDR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseCR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT\n\tETHTOOL_LINK_MODE_100baseT1_Full_BIT                                    = C.ETHTOOL_LINK_MODE_100baseT1_Full_BIT\n\tETHTOOL_LINK_MODE_1000baseT1_Full_BIT                                   = C.ETHTOOL_LINK_MODE_1000baseT1_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseKR8_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseSR8_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT                        = C.ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseDR8_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseCR8_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT\n\tETHTOOL_LINK_MODE_FEC_LLRS_BIT                                          = C.ETHTOOL_LINK_MODE_FEC_LLRS_BIT\n\tETHTOOL_LINK_MODE_100000baseKR_Full_BIT                                 = C.ETHTOOL_LINK_MODE_100000baseKR_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseSR_Full_BIT                                 = C.ETHTOOL_LINK_MODE_100000baseSR_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT                           = C.ETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseCR_Full_BIT                                 = C.ETHTOOL_LINK_MODE_100000baseCR_Full_BIT\n\tETHTOOL_LINK_MODE_100000baseDR_Full_BIT                                 = C.ETHTOOL_LINK_MODE_100000baseDR_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseKR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseKR2_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseSR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseSR2_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT                        = C.ETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseDR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseDR2_Full_BIT\n\tETHTOOL_LINK_MODE_200000baseCR2_Full_BIT                                = C.ETHTOOL_LINK_MODE_200000baseCR2_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseKR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseKR4_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseSR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseSR4_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT                        = C.ETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseDR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseDR4_Full_BIT\n\tETHTOOL_LINK_MODE_400000baseCR4_Full_BIT                                = C.ETHTOOL_LINK_MODE_400000baseCR4_Full_BIT\n\tETHTOOL_LINK_MODE_100baseFX_Half_BIT                                    = C.ETHTOOL_LINK_MODE_100baseFX_Half_BIT\n\tETHTOOL_LINK_MODE_100baseFX_Full_BIT                                    = C.ETHTOOL_LINK_MODE_100baseFX_Full_BIT\n\n\tETHTOOL_MSG_USER_NONE                     = C.ETHTOOL_MSG_USER_NONE\n\tETHTOOL_MSG_STRSET_GET                    = C.ETHTOOL_MSG_STRSET_GET\n\tETHTOOL_MSG_LINKINFO_GET                  = C.ETHTOOL_MSG_LINKINFO_GET\n\tETHTOOL_MSG_LINKINFO_SET                  = C.ETHTOOL_MSG_LINKINFO_SET\n\tETHTOOL_MSG_LINKMODES_GET                 = C.ETHTOOL_MSG_LINKMODES_GET\n\tETHTOOL_MSG_LINKMODES_SET                 = C.ETHTOOL_MSG_LINKMODES_SET\n\tETHTOOL_MSG_LINKSTATE_GET                 = C.ETHTOOL_MSG_LINKSTATE_GET\n\tETHTOOL_MSG_DEBUG_GET                     = C.ETHTOOL_MSG_DEBUG_GET\n\tETHTOOL_MSG_DEBUG_SET                     = C.ETHTOOL_MSG_DEBUG_SET\n\tETHTOOL_MSG_WOL_GET                       = C.ETHTOOL_MSG_WOL_GET\n\tETHTOOL_MSG_WOL_SET                       = C.ETHTOOL_MSG_WOL_SET\n\tETHTOOL_MSG_FEATURES_GET                  = C.ETHTOOL_MSG_FEATURES_GET\n\tETHTOOL_MSG_FEATURES_SET                  = C.ETHTOOL_MSG_FEATURES_SET\n\tETHTOOL_MSG_PRIVFLAGS_GET                 = C.ETHTOOL_MSG_PRIVFLAGS_GET\n\tETHTOOL_MSG_PRIVFLAGS_SET                 = C.ETHTOOL_MSG_PRIVFLAGS_SET\n\tETHTOOL_MSG_RINGS_GET                     = C.ETHTOOL_MSG_RINGS_GET\n\tETHTOOL_MSG_RINGS_SET                     = C.ETHTOOL_MSG_RINGS_SET\n\tETHTOOL_MSG_CHANNELS_GET                  = C.ETHTOOL_MSG_CHANNELS_GET\n\tETHTOOL_MSG_CHANNELS_SET                  = C.ETHTOOL_MSG_CHANNELS_SET\n\tETHTOOL_MSG_COALESCE_GET                  = C.ETHTOOL_MSG_COALESCE_GET\n\tETHTOOL_MSG_COALESCE_SET                  = C.ETHTOOL_MSG_COALESCE_SET\n\tETHTOOL_MSG_PAUSE_GET                     = C.ETHTOOL_MSG_PAUSE_GET\n\tETHTOOL_MSG_PAUSE_SET                     = C.ETHTOOL_MSG_PAUSE_SET\n\tETHTOOL_MSG_EEE_GET                       = C.ETHTOOL_MSG_EEE_GET\n\tETHTOOL_MSG_EEE_SET                       = C.ETHTOOL_MSG_EEE_SET\n\tETHTOOL_MSG_TSINFO_GET                    = C.ETHTOOL_MSG_TSINFO_GET\n\tETHTOOL_MSG_CABLE_TEST_ACT                = C.ETHTOOL_MSG_CABLE_TEST_ACT\n\tETHTOOL_MSG_CABLE_TEST_TDR_ACT            = C.ETHTOOL_MSG_CABLE_TEST_TDR_ACT\n\tETHTOOL_MSG_TUNNEL_INFO_GET               = C.ETHTOOL_MSG_TUNNEL_INFO_GET\n\tETHTOOL_MSG_FEC_GET                       = C.ETHTOOL_MSG_FEC_GET\n\tETHTOOL_MSG_FEC_SET                       = C.ETHTOOL_MSG_FEC_SET\n\tETHTOOL_MSG_MODULE_EEPROM_GET             = C.ETHTOOL_MSG_MODULE_EEPROM_GET\n\tETHTOOL_MSG_STATS_GET                     = C.ETHTOOL_MSG_STATS_GET\n\tETHTOOL_MSG_PHC_VCLOCKS_GET               = C.ETHTOOL_MSG_PHC_VCLOCKS_GET\n\tETHTOOL_MSG_MODULE_GET                    = C.ETHTOOL_MSG_MODULE_GET\n\tETHTOOL_MSG_MODULE_SET                    = C.ETHTOOL_MSG_MODULE_SET\n\tETHTOOL_MSG_PSE_GET                       = C.ETHTOOL_MSG_PSE_GET\n\tETHTOOL_MSG_PSE_SET                       = C.ETHTOOL_MSG_PSE_SET\n\tETHTOOL_MSG_RSS_GET                       = C.ETHTOOL_MSG_RSS_GET\n\tETHTOOL_MSG_USER_MAX                      = C.ETHTOOL_MSG_USER_MAX\n\tETHTOOL_MSG_KERNEL_NONE                   = C.ETHTOOL_MSG_KERNEL_NONE\n\tETHTOOL_MSG_STRSET_GET_REPLY              = C.ETHTOOL_MSG_STRSET_GET_REPLY\n\tETHTOOL_MSG_LINKINFO_GET_REPLY            = C.ETHTOOL_MSG_LINKINFO_GET_REPLY\n\tETHTOOL_MSG_LINKINFO_NTF                  = C.ETHTOOL_MSG_LINKINFO_NTF\n\tETHTOOL_MSG_LINKMODES_GET_REPLY           = C.ETHTOOL_MSG_LINKMODES_GET_REPLY\n\tETHTOOL_MSG_LINKMODES_NTF                 = C.ETHTOOL_MSG_LINKMODES_NTF\n\tETHTOOL_MSG_LINKSTATE_GET_REPLY           = C.ETHTOOL_MSG_LINKSTATE_GET_REPLY\n\tETHTOOL_MSG_DEBUG_GET_REPLY               = C.ETHTOOL_MSG_DEBUG_GET_REPLY\n\tETHTOOL_MSG_DEBUG_NTF                     = C.ETHTOOL_MSG_DEBUG_NTF\n\tETHTOOL_MSG_WOL_GET_REPLY                 = C.ETHTOOL_MSG_WOL_GET_REPLY\n\tETHTOOL_MSG_WOL_NTF                       = C.ETHTOOL_MSG_WOL_NTF\n\tETHTOOL_MSG_FEATURES_GET_REPLY            = C.ETHTOOL_MSG_FEATURES_GET_REPLY\n\tETHTOOL_MSG_FEATURES_SET_REPLY            = C.ETHTOOL_MSG_FEATURES_SET_REPLY\n\tETHTOOL_MSG_FEATURES_NTF                  = C.ETHTOOL_MSG_FEATURES_NTF\n\tETHTOOL_MSG_PRIVFLAGS_GET_REPLY           = C.ETHTOOL_MSG_PRIVFLAGS_GET_REPLY\n\tETHTOOL_MSG_PRIVFLAGS_NTF                 = C.ETHTOOL_MSG_PRIVFLAGS_NTF\n\tETHTOOL_MSG_RINGS_GET_REPLY               = C.ETHTOOL_MSG_RINGS_GET_REPLY\n\tETHTOOL_MSG_RINGS_NTF                     = C.ETHTOOL_MSG_RINGS_NTF\n\tETHTOOL_MSG_CHANNELS_GET_REPLY            = C.ETHTOOL_MSG_CHANNELS_GET_REPLY\n\tETHTOOL_MSG_CHANNELS_NTF                  = C.ETHTOOL_MSG_CHANNELS_NTF\n\tETHTOOL_MSG_COALESCE_GET_REPLY            = C.ETHTOOL_MSG_COALESCE_GET_REPLY\n\tETHTOOL_MSG_COALESCE_NTF                  = C.ETHTOOL_MSG_COALESCE_NTF\n\tETHTOOL_MSG_PAUSE_GET_REPLY               = C.ETHTOOL_MSG_PAUSE_GET_REPLY\n\tETHTOOL_MSG_PAUSE_NTF                     = C.ETHTOOL_MSG_PAUSE_NTF\n\tETHTOOL_MSG_EEE_GET_REPLY                 = C.ETHTOOL_MSG_EEE_GET_REPLY\n\tETHTOOL_MSG_EEE_NTF                       = C.ETHTOOL_MSG_EEE_NTF\n\tETHTOOL_MSG_TSINFO_GET_REPLY              = C.ETHTOOL_MSG_TSINFO_GET_REPLY\n\tETHTOOL_MSG_CABLE_TEST_NTF                = C.ETHTOOL_MSG_CABLE_TEST_NTF\n\tETHTOOL_MSG_CABLE_TEST_TDR_NTF            = C.ETHTOOL_MSG_CABLE_TEST_TDR_NTF\n\tETHTOOL_MSG_TUNNEL_INFO_GET_REPLY         = C.ETHTOOL_MSG_TUNNEL_INFO_GET_REPLY\n\tETHTOOL_MSG_FEC_GET_REPLY                 = C.ETHTOOL_MSG_FEC_GET_REPLY\n\tETHTOOL_MSG_FEC_NTF                       = C.ETHTOOL_MSG_FEC_NTF\n\tETHTOOL_MSG_MODULE_EEPROM_GET_REPLY       = C.ETHTOOL_MSG_MODULE_EEPROM_GET_REPLY\n\tETHTOOL_MSG_STATS_GET_REPLY               = C.ETHTOOL_MSG_STATS_GET_REPLY\n\tETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = C.ETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY\n\tETHTOOL_MSG_MODULE_GET_REPLY              = C.ETHTOOL_MSG_MODULE_GET_REPLY\n\tETHTOOL_MSG_MODULE_NTF                    = C.ETHTOOL_MSG_MODULE_NTF\n\tETHTOOL_MSG_PSE_GET_REPLY                 = C.ETHTOOL_MSG_PSE_GET_REPLY\n\tETHTOOL_MSG_RSS_GET_REPLY                 = C.ETHTOOL_MSG_RSS_GET_REPLY\n\tETHTOOL_MSG_KERNEL_MAX                    = C.ETHTOOL_MSG_KERNEL_MAX\n\tETHTOOL_A_HEADER_UNSPEC                   = C.ETHTOOL_A_HEADER_UNSPEC\n\tETHTOOL_A_HEADER_DEV_INDEX                = C.ETHTOOL_A_HEADER_DEV_INDEX\n\tETHTOOL_A_HEADER_DEV_NAME                 = C.ETHTOOL_A_HEADER_DEV_NAME\n\tETHTOOL_A_HEADER_FLAGS                    = C.ETHTOOL_A_HEADER_FLAGS\n\tETHTOOL_A_HEADER_MAX                      = C.ETHTOOL_A_HEADER_MAX\n\tETHTOOL_A_BITSET_BIT_UNSPEC               = C.ETHTOOL_A_BITSET_BIT_UNSPEC\n\tETHTOOL_A_BITSET_BIT_INDEX                = C.ETHTOOL_A_BITSET_BIT_INDEX\n\tETHTOOL_A_BITSET_BIT_NAME                 = C.ETHTOOL_A_BITSET_BIT_NAME\n\tETHTOOL_A_BITSET_BIT_VALUE                = C.ETHTOOL_A_BITSET_BIT_VALUE\n\tETHTOOL_A_BITSET_BIT_MAX                  = C.ETHTOOL_A_BITSET_BIT_MAX\n\tETHTOOL_A_BITSET_BITS_UNSPEC              = C.ETHTOOL_A_BITSET_BITS_UNSPEC\n\tETHTOOL_A_BITSET_BITS_BIT                 = C.ETHTOOL_A_BITSET_BITS_BIT\n\tETHTOOL_A_BITSET_BITS_MAX                 = C.ETHTOOL_A_BITSET_BITS_MAX\n\tETHTOOL_A_BITSET_UNSPEC                   = C.ETHTOOL_A_BITSET_UNSPEC\n\tETHTOOL_A_BITSET_NOMASK                   = C.ETHTOOL_A_BITSET_NOMASK\n\tETHTOOL_A_BITSET_SIZE                     = C.ETHTOOL_A_BITSET_SIZE\n\tETHTOOL_A_BITSET_BITS                     = C.ETHTOOL_A_BITSET_BITS\n\tETHTOOL_A_BITSET_VALUE                    = C.ETHTOOL_A_BITSET_VALUE\n\tETHTOOL_A_BITSET_MASK                     = C.ETHTOOL_A_BITSET_MASK\n\tETHTOOL_A_BITSET_MAX                      = C.ETHTOOL_A_BITSET_MAX\n\tETHTOOL_A_STRING_UNSPEC                   = C.ETHTOOL_A_STRING_UNSPEC\n\tETHTOOL_A_STRING_INDEX                    = C.ETHTOOL_A_STRING_INDEX\n\tETHTOOL_A_STRING_VALUE                    = C.ETHTOOL_A_STRING_VALUE\n\tETHTOOL_A_STRING_MAX                      = C.ETHTOOL_A_STRING_MAX\n\tETHTOOL_A_STRINGS_UNSPEC                  = C.ETHTOOL_A_STRINGS_UNSPEC\n\tETHTOOL_A_STRINGS_STRING                  = C.ETHTOOL_A_STRINGS_STRING\n\tETHTOOL_A_STRINGS_MAX                     = C.ETHTOOL_A_STRINGS_MAX\n\tETHTOOL_A_STRINGSET_UNSPEC                = C.ETHTOOL_A_STRINGSET_UNSPEC\n\tETHTOOL_A_STRINGSET_ID                    = C.ETHTOOL_A_STRINGSET_ID\n\tETHTOOL_A_STRINGSET_COUNT                 = C.ETHTOOL_A_STRINGSET_COUNT\n\tETHTOOL_A_STRINGSET_STRINGS               = C.ETHTOOL_A_STRINGSET_STRINGS\n\tETHTOOL_A_STRINGSET_MAX                   = C.ETHTOOL_A_STRINGSET_MAX\n\tETHTOOL_A_STRINGSETS_UNSPEC               = C.ETHTOOL_A_STRINGSETS_UNSPEC\n\tETHTOOL_A_STRINGSETS_STRINGSET            = C.ETHTOOL_A_STRINGSETS_STRINGSET\n\tETHTOOL_A_STRINGSETS_MAX                  = C.ETHTOOL_A_STRINGSETS_MAX\n\tETHTOOL_A_STRSET_UNSPEC                   = C.ETHTOOL_A_STRSET_UNSPEC\n\tETHTOOL_A_STRSET_HEADER                   = C.ETHTOOL_A_STRSET_HEADER\n\tETHTOOL_A_STRSET_STRINGSETS               = C.ETHTOOL_A_STRSET_STRINGSETS\n\tETHTOOL_A_STRSET_COUNTS_ONLY              = C.ETHTOOL_A_STRSET_COUNTS_ONLY\n\tETHTOOL_A_STRSET_MAX                      = C.ETHTOOL_A_STRSET_MAX\n\tETHTOOL_A_LINKINFO_UNSPEC                 = C.ETHTOOL_A_LINKINFO_UNSPEC\n\tETHTOOL_A_LINKINFO_HEADER                 = C.ETHTOOL_A_LINKINFO_HEADER\n\tETHTOOL_A_LINKINFO_PORT                   = C.ETHTOOL_A_LINKINFO_PORT\n\tETHTOOL_A_LINKINFO_PHYADDR                = C.ETHTOOL_A_LINKINFO_PHYADDR\n\tETHTOOL_A_LINKINFO_TP_MDIX                = C.ETHTOOL_A_LINKINFO_TP_MDIX\n\tETHTOOL_A_LINKINFO_TP_MDIX_CTRL           = C.ETHTOOL_A_LINKINFO_TP_MDIX_CTRL\n\tETHTOOL_A_LINKINFO_TRANSCEIVER            = C.ETHTOOL_A_LINKINFO_TRANSCEIVER\n\tETHTOOL_A_LINKINFO_MAX                    = C.ETHTOOL_A_LINKINFO_MAX\n\tETHTOOL_A_LINKMODES_UNSPEC                = C.ETHTOOL_A_LINKMODES_UNSPEC\n\tETHTOOL_A_LINKMODES_HEADER                = C.ETHTOOL_A_LINKMODES_HEADER\n\tETHTOOL_A_LINKMODES_AUTONEG               = C.ETHTOOL_A_LINKMODES_AUTONEG\n\tETHTOOL_A_LINKMODES_OURS                  = C.ETHTOOL_A_LINKMODES_OURS\n\tETHTOOL_A_LINKMODES_PEER                  = C.ETHTOOL_A_LINKMODES_PEER\n\tETHTOOL_A_LINKMODES_SPEED                 = C.ETHTOOL_A_LINKMODES_SPEED\n\tETHTOOL_A_LINKMODES_DUPLEX                = C.ETHTOOL_A_LINKMODES_DUPLEX\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = C.ETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = C.ETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE\n\tETHTOOL_A_LINKMODES_LANES                 = C.ETHTOOL_A_LINKMODES_LANES\n\tETHTOOL_A_LINKMODES_RATE_MATCHING         = C.ETHTOOL_A_LINKMODES_RATE_MATCHING\n\tETHTOOL_A_LINKMODES_MAX                   = C.ETHTOOL_A_LINKMODES_MAX\n\tETHTOOL_A_LINKSTATE_UNSPEC                = C.ETHTOOL_A_LINKSTATE_UNSPEC\n\tETHTOOL_A_LINKSTATE_HEADER                = C.ETHTOOL_A_LINKSTATE_HEADER\n\tETHTOOL_A_LINKSTATE_LINK                  = C.ETHTOOL_A_LINKSTATE_LINK\n\tETHTOOL_A_LINKSTATE_SQI                   = C.ETHTOOL_A_LINKSTATE_SQI\n\tETHTOOL_A_LINKSTATE_SQI_MAX               = C.ETHTOOL_A_LINKSTATE_SQI_MAX\n\tETHTOOL_A_LINKSTATE_EXT_STATE             = C.ETHTOOL_A_LINKSTATE_EXT_STATE\n\tETHTOOL_A_LINKSTATE_EXT_SUBSTATE          = C.ETHTOOL_A_LINKSTATE_EXT_SUBSTATE\n\tETHTOOL_A_LINKSTATE_EXT_DOWN_CNT          = C.ETHTOOL_A_LINKSTATE_EXT_DOWN_CNT\n\tETHTOOL_A_LINKSTATE_MAX                   = C.ETHTOOL_A_LINKSTATE_MAX\n\tETHTOOL_A_DEBUG_UNSPEC                    = C.ETHTOOL_A_DEBUG_UNSPEC\n\tETHTOOL_A_DEBUG_HEADER                    = C.ETHTOOL_A_DEBUG_HEADER\n\tETHTOOL_A_DEBUG_MSGMASK                   = C.ETHTOOL_A_DEBUG_MSGMASK\n\tETHTOOL_A_DEBUG_MAX                       = C.ETHTOOL_A_DEBUG_MAX\n\tETHTOOL_A_WOL_UNSPEC                      = C.ETHTOOL_A_WOL_UNSPEC\n\tETHTOOL_A_WOL_HEADER                      = C.ETHTOOL_A_WOL_HEADER\n\tETHTOOL_A_WOL_MODES                       = C.ETHTOOL_A_WOL_MODES\n\tETHTOOL_A_WOL_SOPASS                      = C.ETHTOOL_A_WOL_SOPASS\n\tETHTOOL_A_WOL_MAX                         = C.ETHTOOL_A_WOL_MAX\n\tETHTOOL_A_FEATURES_UNSPEC                 = C.ETHTOOL_A_FEATURES_UNSPEC\n\tETHTOOL_A_FEATURES_HEADER                 = C.ETHTOOL_A_FEATURES_HEADER\n\tETHTOOL_A_FEATURES_HW                     = C.ETHTOOL_A_FEATURES_HW\n\tETHTOOL_A_FEATURES_WANTED                 = C.ETHTOOL_A_FEATURES_WANTED\n\tETHTOOL_A_FEATURES_ACTIVE                 = C.ETHTOOL_A_FEATURES_ACTIVE\n\tETHTOOL_A_FEATURES_NOCHANGE               = C.ETHTOOL_A_FEATURES_NOCHANGE\n\tETHTOOL_A_FEATURES_MAX                    = C.ETHTOOL_A_FEATURES_MAX\n\tETHTOOL_A_PRIVFLAGS_UNSPEC                = C.ETHTOOL_A_PRIVFLAGS_UNSPEC\n\tETHTOOL_A_PRIVFLAGS_HEADER                = C.ETHTOOL_A_PRIVFLAGS_HEADER\n\tETHTOOL_A_PRIVFLAGS_FLAGS                 = C.ETHTOOL_A_PRIVFLAGS_FLAGS\n\tETHTOOL_A_PRIVFLAGS_MAX                   = C.ETHTOOL_A_PRIVFLAGS_MAX\n\tETHTOOL_A_RINGS_UNSPEC                    = C.ETHTOOL_A_RINGS_UNSPEC\n\tETHTOOL_A_RINGS_HEADER                    = C.ETHTOOL_A_RINGS_HEADER\n\tETHTOOL_A_RINGS_RX_MAX                    = C.ETHTOOL_A_RINGS_RX_MAX\n\tETHTOOL_A_RINGS_RX_MINI_MAX               = C.ETHTOOL_A_RINGS_RX_MINI_MAX\n\tETHTOOL_A_RINGS_RX_JUMBO_MAX              = C.ETHTOOL_A_RINGS_RX_JUMBO_MAX\n\tETHTOOL_A_RINGS_TX_MAX                    = C.ETHTOOL_A_RINGS_TX_MAX\n\tETHTOOL_A_RINGS_RX                        = C.ETHTOOL_A_RINGS_RX\n\tETHTOOL_A_RINGS_RX_MINI                   = C.ETHTOOL_A_RINGS_RX_MINI\n\tETHTOOL_A_RINGS_RX_JUMBO                  = C.ETHTOOL_A_RINGS_RX_JUMBO\n\tETHTOOL_A_RINGS_TX                        = C.ETHTOOL_A_RINGS_TX\n\tETHTOOL_A_RINGS_RX_BUF_LEN                = C.ETHTOOL_A_RINGS_RX_BUF_LEN\n\tETHTOOL_A_RINGS_TCP_DATA_SPLIT            = C.ETHTOOL_A_RINGS_TCP_DATA_SPLIT\n\tETHTOOL_A_RINGS_CQE_SIZE                  = C.ETHTOOL_A_RINGS_CQE_SIZE\n\tETHTOOL_A_RINGS_TX_PUSH                   = C.ETHTOOL_A_RINGS_TX_PUSH\n\tETHTOOL_A_RINGS_MAX                       = C.ETHTOOL_A_RINGS_MAX\n\tETHTOOL_A_CHANNELS_UNSPEC                 = C.ETHTOOL_A_CHANNELS_UNSPEC\n\tETHTOOL_A_CHANNELS_HEADER                 = C.ETHTOOL_A_CHANNELS_HEADER\n\tETHTOOL_A_CHANNELS_RX_MAX                 = C.ETHTOOL_A_CHANNELS_RX_MAX\n\tETHTOOL_A_CHANNELS_TX_MAX                 = C.ETHTOOL_A_CHANNELS_TX_MAX\n\tETHTOOL_A_CHANNELS_OTHER_MAX              = C.ETHTOOL_A_CHANNELS_OTHER_MAX\n\tETHTOOL_A_CHANNELS_COMBINED_MAX           = C.ETHTOOL_A_CHANNELS_COMBINED_MAX\n\tETHTOOL_A_CHANNELS_RX_COUNT               = C.ETHTOOL_A_CHANNELS_RX_COUNT\n\tETHTOOL_A_CHANNELS_TX_COUNT               = C.ETHTOOL_A_CHANNELS_TX_COUNT\n\tETHTOOL_A_CHANNELS_OTHER_COUNT            = C.ETHTOOL_A_CHANNELS_OTHER_COUNT\n\tETHTOOL_A_CHANNELS_COMBINED_COUNT         = C.ETHTOOL_A_CHANNELS_COMBINED_COUNT\n\tETHTOOL_A_CHANNELS_MAX                    = C.ETHTOOL_A_CHANNELS_MAX\n\tETHTOOL_A_COALESCE_UNSPEC                 = C.ETHTOOL_A_COALESCE_UNSPEC\n\tETHTOOL_A_COALESCE_HEADER                 = C.ETHTOOL_A_COALESCE_HEADER\n\tETHTOOL_A_COALESCE_RX_USECS               = C.ETHTOOL_A_COALESCE_RX_USECS\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES          = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES\n\tETHTOOL_A_COALESCE_RX_USECS_IRQ           = C.ETHTOOL_A_COALESCE_RX_USECS_IRQ\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ      = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ\n\tETHTOOL_A_COALESCE_TX_USECS               = C.ETHTOOL_A_COALESCE_TX_USECS\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES          = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES\n\tETHTOOL_A_COALESCE_TX_USECS_IRQ           = C.ETHTOOL_A_COALESCE_TX_USECS_IRQ\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ      = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ\n\tETHTOOL_A_COALESCE_STATS_BLOCK_USECS      = C.ETHTOOL_A_COALESCE_STATS_BLOCK_USECS\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_RX        = C.ETHTOOL_A_COALESCE_USE_ADAPTIVE_RX\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_TX        = C.ETHTOOL_A_COALESCE_USE_ADAPTIVE_TX\n\tETHTOOL_A_COALESCE_PKT_RATE_LOW           = C.ETHTOOL_A_COALESCE_PKT_RATE_LOW\n\tETHTOOL_A_COALESCE_RX_USECS_LOW           = C.ETHTOOL_A_COALESCE_RX_USECS_LOW\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW      = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW\n\tETHTOOL_A_COALESCE_TX_USECS_LOW           = C.ETHTOOL_A_COALESCE_TX_USECS_LOW\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW      = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW\n\tETHTOOL_A_COALESCE_PKT_RATE_HIGH          = C.ETHTOOL_A_COALESCE_PKT_RATE_HIGH\n\tETHTOOL_A_COALESCE_RX_USECS_HIGH          = C.ETHTOOL_A_COALESCE_RX_USECS_HIGH\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH     = C.ETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH\n\tETHTOOL_A_COALESCE_TX_USECS_HIGH          = C.ETHTOOL_A_COALESCE_TX_USECS_HIGH\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH     = C.ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH\n\tETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = C.ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = C.ETHTOOL_A_COALESCE_USE_CQE_MODE_TX\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = C.ETHTOOL_A_COALESCE_USE_CQE_MODE_RX\n\tETHTOOL_A_COALESCE_MAX                    = C.ETHTOOL_A_COALESCE_MAX\n\tETHTOOL_A_PAUSE_UNSPEC                    = C.ETHTOOL_A_PAUSE_UNSPEC\n\tETHTOOL_A_PAUSE_HEADER                    = C.ETHTOOL_A_PAUSE_HEADER\n\tETHTOOL_A_PAUSE_AUTONEG                   = C.ETHTOOL_A_PAUSE_AUTONEG\n\tETHTOOL_A_PAUSE_RX                        = C.ETHTOOL_A_PAUSE_RX\n\tETHTOOL_A_PAUSE_TX                        = C.ETHTOOL_A_PAUSE_TX\n\tETHTOOL_A_PAUSE_STATS                     = C.ETHTOOL_A_PAUSE_STATS\n\tETHTOOL_A_PAUSE_MAX                       = C.ETHTOOL_A_PAUSE_MAX\n\tETHTOOL_A_PAUSE_STAT_UNSPEC               = C.ETHTOOL_A_PAUSE_STAT_UNSPEC\n\tETHTOOL_A_PAUSE_STAT_PAD                  = C.ETHTOOL_A_PAUSE_STAT_PAD\n\tETHTOOL_A_PAUSE_STAT_TX_FRAMES            = C.ETHTOOL_A_PAUSE_STAT_TX_FRAMES\n\tETHTOOL_A_PAUSE_STAT_RX_FRAMES            = C.ETHTOOL_A_PAUSE_STAT_RX_FRAMES\n\tETHTOOL_A_PAUSE_STAT_MAX                  = C.ETHTOOL_A_PAUSE_STAT_MAX\n\tETHTOOL_A_EEE_UNSPEC                      = C.ETHTOOL_A_EEE_UNSPEC\n\tETHTOOL_A_EEE_HEADER                      = C.ETHTOOL_A_EEE_HEADER\n\tETHTOOL_A_EEE_MODES_OURS                  = C.ETHTOOL_A_EEE_MODES_OURS\n\tETHTOOL_A_EEE_MODES_PEER                  = C.ETHTOOL_A_EEE_MODES_PEER\n\tETHTOOL_A_EEE_ACTIVE                      = C.ETHTOOL_A_EEE_ACTIVE\n\tETHTOOL_A_EEE_ENABLED                     = C.ETHTOOL_A_EEE_ENABLED\n\tETHTOOL_A_EEE_TX_LPI_ENABLED              = C.ETHTOOL_A_EEE_TX_LPI_ENABLED\n\tETHTOOL_A_EEE_TX_LPI_TIMER                = C.ETHTOOL_A_EEE_TX_LPI_TIMER\n\tETHTOOL_A_EEE_MAX                         = C.ETHTOOL_A_EEE_MAX\n\tETHTOOL_A_TSINFO_UNSPEC                   = C.ETHTOOL_A_TSINFO_UNSPEC\n\tETHTOOL_A_TSINFO_HEADER                   = C.ETHTOOL_A_TSINFO_HEADER\n\tETHTOOL_A_TSINFO_TIMESTAMPING             = C.ETHTOOL_A_TSINFO_TIMESTAMPING\n\tETHTOOL_A_TSINFO_TX_TYPES                 = C.ETHTOOL_A_TSINFO_TX_TYPES\n\tETHTOOL_A_TSINFO_RX_FILTERS               = C.ETHTOOL_A_TSINFO_RX_FILTERS\n\tETHTOOL_A_TSINFO_PHC_INDEX                = C.ETHTOOL_A_TSINFO_PHC_INDEX\n\tETHTOOL_A_TSINFO_MAX                      = C.ETHTOOL_A_TSINFO_MAX\n\tETHTOOL_A_CABLE_TEST_UNSPEC               = C.ETHTOOL_A_CABLE_TEST_UNSPEC\n\tETHTOOL_A_CABLE_TEST_HEADER               = C.ETHTOOL_A_CABLE_TEST_HEADER\n\tETHTOOL_A_CABLE_TEST_MAX                  = C.ETHTOOL_A_CABLE_TEST_MAX\n\tETHTOOL_A_CABLE_RESULT_CODE_UNSPEC        = C.ETHTOOL_A_CABLE_RESULT_CODE_UNSPEC\n\tETHTOOL_A_CABLE_RESULT_CODE_OK            = C.ETHTOOL_A_CABLE_RESULT_CODE_OK\n\tETHTOOL_A_CABLE_RESULT_CODE_OPEN          = C.ETHTOOL_A_CABLE_RESULT_CODE_OPEN\n\tETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT    = C.ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT\n\tETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT   = C.ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT\n\tETHTOOL_A_CABLE_PAIR_A                    = C.ETHTOOL_A_CABLE_PAIR_A\n\tETHTOOL_A_CABLE_PAIR_B                    = C.ETHTOOL_A_CABLE_PAIR_B\n\tETHTOOL_A_CABLE_PAIR_C                    = C.ETHTOOL_A_CABLE_PAIR_C\n\tETHTOOL_A_CABLE_PAIR_D                    = C.ETHTOOL_A_CABLE_PAIR_D\n\tETHTOOL_A_CABLE_RESULT_UNSPEC             = C.ETHTOOL_A_CABLE_RESULT_UNSPEC\n\tETHTOOL_A_CABLE_RESULT_PAIR               = C.ETHTOOL_A_CABLE_RESULT_PAIR\n\tETHTOOL_A_CABLE_RESULT_CODE               = C.ETHTOOL_A_CABLE_RESULT_CODE\n\tETHTOOL_A_CABLE_RESULT_MAX                = C.ETHTOOL_A_CABLE_RESULT_MAX\n\tETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = C.ETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC\n\tETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = C.ETHTOOL_A_CABLE_FAULT_LENGTH_PAIR\n\tETHTOOL_A_CABLE_FAULT_LENGTH_CM           = C.ETHTOOL_A_CABLE_FAULT_LENGTH_CM\n\tETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = C.ETHTOOL_A_CABLE_FAULT_LENGTH_MAX\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED\n\tETHTOOL_A_CABLE_NEST_UNSPEC               = C.ETHTOOL_A_CABLE_NEST_UNSPEC\n\tETHTOOL_A_CABLE_NEST_RESULT               = C.ETHTOOL_A_CABLE_NEST_RESULT\n\tETHTOOL_A_CABLE_NEST_FAULT_LENGTH         = C.ETHTOOL_A_CABLE_NEST_FAULT_LENGTH\n\tETHTOOL_A_CABLE_NEST_MAX                  = C.ETHTOOL_A_CABLE_NEST_MAX\n\tETHTOOL_A_CABLE_TEST_NTF_UNSPEC           = C.ETHTOOL_A_CABLE_TEST_NTF_UNSPEC\n\tETHTOOL_A_CABLE_TEST_NTF_HEADER           = C.ETHTOOL_A_CABLE_TEST_NTF_HEADER\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS           = C.ETHTOOL_A_CABLE_TEST_NTF_STATUS\n\tETHTOOL_A_CABLE_TEST_NTF_NEST             = C.ETHTOOL_A_CABLE_TEST_NTF_NEST\n\tETHTOOL_A_CABLE_TEST_NTF_MAX              = C.ETHTOOL_A_CABLE_TEST_NTF_MAX\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC       = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST        = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_LAST         = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_LAST\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_STEP         = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_STEP\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR         = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_MAX          = C.ETHTOOL_A_CABLE_TEST_TDR_CFG_MAX\n\tETHTOOL_A_CABLE_TEST_TDR_UNSPEC           = C.ETHTOOL_A_CABLE_TEST_TDR_UNSPEC\n\tETHTOOL_A_CABLE_TEST_TDR_HEADER           = C.ETHTOOL_A_CABLE_TEST_TDR_HEADER\n\tETHTOOL_A_CABLE_TEST_TDR_CFG              = C.ETHTOOL_A_CABLE_TEST_TDR_CFG\n\tETHTOOL_A_CABLE_TEST_TDR_MAX              = C.ETHTOOL_A_CABLE_TEST_TDR_MAX\n\tETHTOOL_A_CABLE_AMPLITUDE_UNSPEC          = C.ETHTOOL_A_CABLE_AMPLITUDE_UNSPEC\n\tETHTOOL_A_CABLE_AMPLITUDE_PAIR            = C.ETHTOOL_A_CABLE_AMPLITUDE_PAIR\n\tETHTOOL_A_CABLE_AMPLITUDE_mV              = C.ETHTOOL_A_CABLE_AMPLITUDE_mV\n\tETHTOOL_A_CABLE_AMPLITUDE_MAX             = C.ETHTOOL_A_CABLE_AMPLITUDE_MAX\n\tETHTOOL_A_CABLE_PULSE_UNSPEC              = C.ETHTOOL_A_CABLE_PULSE_UNSPEC\n\tETHTOOL_A_CABLE_PULSE_mV                  = C.ETHTOOL_A_CABLE_PULSE_mV\n\tETHTOOL_A_CABLE_PULSE_MAX                 = C.ETHTOOL_A_CABLE_PULSE_MAX\n\tETHTOOL_A_CABLE_STEP_UNSPEC               = C.ETHTOOL_A_CABLE_STEP_UNSPEC\n\tETHTOOL_A_CABLE_STEP_FIRST_DISTANCE       = C.ETHTOOL_A_CABLE_STEP_FIRST_DISTANCE\n\tETHTOOL_A_CABLE_STEP_LAST_DISTANCE        = C.ETHTOOL_A_CABLE_STEP_LAST_DISTANCE\n\tETHTOOL_A_CABLE_STEP_STEP_DISTANCE        = C.ETHTOOL_A_CABLE_STEP_STEP_DISTANCE\n\tETHTOOL_A_CABLE_STEP_MAX                  = C.ETHTOOL_A_CABLE_STEP_MAX\n\tETHTOOL_A_CABLE_TDR_NEST_UNSPEC           = C.ETHTOOL_A_CABLE_TDR_NEST_UNSPEC\n\tETHTOOL_A_CABLE_TDR_NEST_STEP             = C.ETHTOOL_A_CABLE_TDR_NEST_STEP\n\tETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE        = C.ETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE\n\tETHTOOL_A_CABLE_TDR_NEST_PULSE            = C.ETHTOOL_A_CABLE_TDR_NEST_PULSE\n\tETHTOOL_A_CABLE_TDR_NEST_MAX              = C.ETHTOOL_A_CABLE_TDR_NEST_MAX\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC       = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER       = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS       = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_NEST         = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_NEST\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_MAX          = C.ETHTOOL_A_CABLE_TEST_TDR_NTF_MAX\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN             = C.ETHTOOL_UDP_TUNNEL_TYPE_VXLAN\n\tETHTOOL_UDP_TUNNEL_TYPE_GENEVE            = C.ETHTOOL_UDP_TUNNEL_TYPE_GENEVE\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE         = C.ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC         = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_PORT           = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE           = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_MAX            = C.ETHTOOL_A_TUNNEL_UDP_ENTRY_MAX\n\tETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC         = C.ETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC\n\tETHTOOL_A_TUNNEL_UDP_TABLE_SIZE           = C.ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE\n\tETHTOOL_A_TUNNEL_UDP_TABLE_TYPES          = C.ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES\n\tETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY          = C.ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY\n\tETHTOOL_A_TUNNEL_UDP_TABLE_MAX            = C.ETHTOOL_A_TUNNEL_UDP_TABLE_MAX\n\tETHTOOL_A_TUNNEL_UDP_UNSPEC               = C.ETHTOOL_A_TUNNEL_UDP_UNSPEC\n\tETHTOOL_A_TUNNEL_UDP_TABLE                = C.ETHTOOL_A_TUNNEL_UDP_TABLE\n\tETHTOOL_A_TUNNEL_UDP_MAX                  = C.ETHTOOL_A_TUNNEL_UDP_MAX\n\tETHTOOL_A_TUNNEL_INFO_UNSPEC              = C.ETHTOOL_A_TUNNEL_INFO_UNSPEC\n\tETHTOOL_A_TUNNEL_INFO_HEADER              = C.ETHTOOL_A_TUNNEL_INFO_HEADER\n\tETHTOOL_A_TUNNEL_INFO_UDP_PORTS           = C.ETHTOOL_A_TUNNEL_INFO_UDP_PORTS\n\tETHTOOL_A_TUNNEL_INFO_MAX                 = C.ETHTOOL_A_TUNNEL_INFO_MAX\n)\n\nconst SPEED_UNKNOWN = C.SPEED_UNKNOWN\n\ntype EthtoolDrvinfo C.struct_ethtool_drvinfo\n\ntype (\n\tHIDRawReportDescriptor C.struct_hidraw_report_descriptor\n\tHIDRawDevInfo          C.struct_hidraw_devinfo\n)\n\n// close_range\nconst (\n\tCLOSE_RANGE_UNSHARE = C.CLOSE_RANGE_UNSHARE\n\tCLOSE_RANGE_CLOEXEC = C.CLOSE_RANGE_CLOEXEC\n)\n\n// Netlink extended acknowledgement TLVs.\n\nconst (\n\tNLMSGERR_ATTR_MSG    = C.NLMSGERR_ATTR_MSG\n\tNLMSGERR_ATTR_OFFS   = C.NLMSGERR_ATTR_OFFS\n\tNLMSGERR_ATTR_COOKIE = C.NLMSGERR_ATTR_COOKIE\n)\n\n// MTD\n\ntype (\n\tEraseInfo     C.struct_erase_info_user\n\tEraseInfo64   C.struct_erase_info_user64\n\tMtdOobBuf     C.struct_mtd_oob_buf\n\tMtdOobBuf64   C.struct_mtd_oob_buf64\n\tMtdWriteReq   C.struct_mtd_write_req\n\tMtdInfo       C.struct_mtd_info_user\n\tRegionInfo    C.struct_region_info_user\n\tOtpInfo       C.struct_otp_info\n\tNandOobinfo   C.struct_nand_oobinfo\n\tNandOobfree   C.struct_nand_oobfree\n\tNandEcclayout C.struct_nand_ecclayout_user\n\tMtdEccStats   C.struct_mtd_ecc_stats\n)\n\nconst (\n\tMTD_OPS_PLACE_OOB = C.MTD_OPS_PLACE_OOB\n\tMTD_OPS_AUTO_OOB  = C.MTD_OPS_AUTO_OOB\n\tMTD_OPS_RAW       = C.MTD_OPS_RAW\n)\n\nconst (\n\tMTD_FILE_MODE_NORMAL      = C.MTD_FILE_MODE_NORMAL\n\tMTD_FILE_MODE_OTP_FACTORY = C.MTD_FILE_MODE_OTP_FACTORY\n\tMTD_FILE_MODE_OTP_USER    = C.MTD_FILE_MODE_OTP_USER\n\tMTD_FILE_MODE_RAW         = C.MTD_FILE_MODE_RAW\n)\n\n// NFC Subsystem enums.\n\nconst (\n\tNFC_CMD_UNSPEC                    = C.NFC_CMD_UNSPEC\n\tNFC_CMD_GET_DEVICE                = C.NFC_CMD_GET_DEVICE\n\tNFC_CMD_DEV_UP                    = C.NFC_CMD_DEV_UP\n\tNFC_CMD_DEV_DOWN                  = C.NFC_CMD_DEV_DOWN\n\tNFC_CMD_DEP_LINK_UP               = C.NFC_CMD_DEP_LINK_UP\n\tNFC_CMD_DEP_LINK_DOWN             = C.NFC_CMD_DEP_LINK_DOWN\n\tNFC_CMD_START_POLL                = C.NFC_CMD_START_POLL\n\tNFC_CMD_STOP_POLL                 = C.NFC_CMD_STOP_POLL\n\tNFC_CMD_GET_TARGET                = C.NFC_CMD_GET_TARGET\n\tNFC_EVENT_TARGETS_FOUND           = C.NFC_EVENT_TARGETS_FOUND\n\tNFC_EVENT_DEVICE_ADDED            = C.NFC_EVENT_DEVICE_ADDED\n\tNFC_EVENT_DEVICE_REMOVED          = C.NFC_EVENT_DEVICE_REMOVED\n\tNFC_EVENT_TARGET_LOST             = C.NFC_EVENT_TARGET_LOST\n\tNFC_EVENT_TM_ACTIVATED            = C.NFC_EVENT_TM_ACTIVATED\n\tNFC_EVENT_TM_DEACTIVATED          = C.NFC_EVENT_TM_DEACTIVATED\n\tNFC_CMD_LLC_GET_PARAMS            = C.NFC_CMD_LLC_GET_PARAMS\n\tNFC_CMD_LLC_SET_PARAMS            = C.NFC_CMD_LLC_SET_PARAMS\n\tNFC_CMD_ENABLE_SE                 = C.NFC_CMD_ENABLE_SE\n\tNFC_CMD_DISABLE_SE                = C.NFC_CMD_DISABLE_SE\n\tNFC_CMD_LLC_SDREQ                 = C.NFC_CMD_LLC_SDREQ\n\tNFC_EVENT_LLC_SDRES               = C.NFC_EVENT_LLC_SDRES\n\tNFC_CMD_FW_DOWNLOAD               = C.NFC_CMD_FW_DOWNLOAD\n\tNFC_EVENT_SE_ADDED                = C.NFC_EVENT_SE_ADDED\n\tNFC_EVENT_SE_REMOVED              = C.NFC_EVENT_SE_REMOVED\n\tNFC_EVENT_SE_CONNECTIVITY         = C.NFC_EVENT_SE_CONNECTIVITY\n\tNFC_EVENT_SE_TRANSACTION          = C.NFC_EVENT_SE_TRANSACTION\n\tNFC_CMD_GET_SE                    = C.NFC_CMD_GET_SE\n\tNFC_CMD_SE_IO                     = C.NFC_CMD_SE_IO\n\tNFC_CMD_ACTIVATE_TARGET           = C.NFC_CMD_ACTIVATE_TARGET\n\tNFC_CMD_VENDOR                    = C.NFC_CMD_VENDOR\n\tNFC_CMD_DEACTIVATE_TARGET         = C.NFC_CMD_DEACTIVATE_TARGET\n\tNFC_ATTR_UNSPEC                   = C.NFC_ATTR_UNSPEC\n\tNFC_ATTR_DEVICE_INDEX             = C.NFC_ATTR_DEVICE_INDEX\n\tNFC_ATTR_DEVICE_NAME              = C.NFC_ATTR_DEVICE_NAME\n\tNFC_ATTR_PROTOCOLS                = C.NFC_ATTR_PROTOCOLS\n\tNFC_ATTR_TARGET_INDEX             = C.NFC_ATTR_TARGET_INDEX\n\tNFC_ATTR_TARGET_SENS_RES          = C.NFC_ATTR_TARGET_SENS_RES\n\tNFC_ATTR_TARGET_SEL_RES           = C.NFC_ATTR_TARGET_SEL_RES\n\tNFC_ATTR_TARGET_NFCID1            = C.NFC_ATTR_TARGET_NFCID1\n\tNFC_ATTR_TARGET_SENSB_RES         = C.NFC_ATTR_TARGET_SENSB_RES\n\tNFC_ATTR_TARGET_SENSF_RES         = C.NFC_ATTR_TARGET_SENSF_RES\n\tNFC_ATTR_COMM_MODE                = C.NFC_ATTR_COMM_MODE\n\tNFC_ATTR_RF_MODE                  = C.NFC_ATTR_RF_MODE\n\tNFC_ATTR_DEVICE_POWERED           = C.NFC_ATTR_DEVICE_POWERED\n\tNFC_ATTR_IM_PROTOCOLS             = C.NFC_ATTR_IM_PROTOCOLS\n\tNFC_ATTR_TM_PROTOCOLS             = C.NFC_ATTR_TM_PROTOCOLS\n\tNFC_ATTR_LLC_PARAM_LTO            = C.NFC_ATTR_LLC_PARAM_LTO\n\tNFC_ATTR_LLC_PARAM_RW             = C.NFC_ATTR_LLC_PARAM_RW\n\tNFC_ATTR_LLC_PARAM_MIUX           = C.NFC_ATTR_LLC_PARAM_MIUX\n\tNFC_ATTR_SE                       = C.NFC_ATTR_SE\n\tNFC_ATTR_LLC_SDP                  = C.NFC_ATTR_LLC_SDP\n\tNFC_ATTR_FIRMWARE_NAME            = C.NFC_ATTR_FIRMWARE_NAME\n\tNFC_ATTR_SE_INDEX                 = C.NFC_ATTR_SE_INDEX\n\tNFC_ATTR_SE_TYPE                  = C.NFC_ATTR_SE_TYPE\n\tNFC_ATTR_SE_AID                   = C.NFC_ATTR_SE_AID\n\tNFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = C.NFC_ATTR_FIRMWARE_DOWNLOAD_STATUS\n\tNFC_ATTR_SE_APDU                  = C.NFC_ATTR_SE_APDU\n\tNFC_ATTR_TARGET_ISO15693_DSFID    = C.NFC_ATTR_TARGET_ISO15693_DSFID\n\tNFC_ATTR_TARGET_ISO15693_UID      = C.NFC_ATTR_TARGET_ISO15693_UID\n\tNFC_ATTR_SE_PARAMS                = C.NFC_ATTR_SE_PARAMS\n\tNFC_ATTR_VENDOR_ID                = C.NFC_ATTR_VENDOR_ID\n\tNFC_ATTR_VENDOR_SUBCMD            = C.NFC_ATTR_VENDOR_SUBCMD\n\tNFC_ATTR_VENDOR_DATA              = C.NFC_ATTR_VENDOR_DATA\n\tNFC_SDP_ATTR_UNSPEC               = C.NFC_SDP_ATTR_UNSPEC\n\tNFC_SDP_ATTR_URI                  = C.NFC_SDP_ATTR_URI\n\tNFC_SDP_ATTR_SAP                  = C.NFC_SDP_ATTR_SAP\n)\n\n// Landlock\n\ntype LandlockRulesetAttr C.struct_landlock_ruleset_attr\n\ntype LandlockPathBeneathAttr C.struct_landlock_path_beneath_attr\n\nconst (\n\tLANDLOCK_RULE_PATH_BENEATH = C.LANDLOCK_RULE_PATH_BENEATH\n)\n\n// pidfd flags.\n\nconst (\n\tPIDFD_NONBLOCK = C.O_NONBLOCK\n)\n\n// shm\n\ntype SysvIpcPerm C.struct_ipc64_perm\ntype SysvShmDesc C.struct_shmid64_ds\n\nconst (\n\tIPC_CREAT   = C.IPC_CREAT\n\tIPC_EXCL    = C.IPC_EXCL\n\tIPC_NOWAIT  = C.IPC_NOWAIT\n\tIPC_PRIVATE = C.IPC_PRIVATE\n\n\tipc_64 = C.IPC_64\n)\n\nconst (\n\tIPC_RMID = C.IPC_RMID\n\tIPC_SET  = C.IPC_SET\n\tIPC_STAT = C.IPC_STAT\n)\n\nconst (\n\tSHM_RDONLY = C.SHM_RDONLY\n\tSHM_RND    = C.SHM_RND\n)\n\n// mount_setattr\n\ntype MountAttr C.struct_mount_attr\n\n// WireGuard generic netlink interface\n\n// Generated by:\n// perl -nlE '/^\\s*(WG\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/wireguard.h\nconst (\n\tWG_CMD_GET_DEVICE                      = C.WG_CMD_GET_DEVICE\n\tWG_CMD_SET_DEVICE                      = C.WG_CMD_SET_DEVICE\n\tWGDEVICE_F_REPLACE_PEERS               = C.WGDEVICE_F_REPLACE_PEERS\n\tWGDEVICE_A_UNSPEC                      = C.WGDEVICE_A_UNSPEC\n\tWGDEVICE_A_IFINDEX                     = C.WGDEVICE_A_IFINDEX\n\tWGDEVICE_A_IFNAME                      = C.WGDEVICE_A_IFNAME\n\tWGDEVICE_A_PRIVATE_KEY                 = C.WGDEVICE_A_PRIVATE_KEY\n\tWGDEVICE_A_PUBLIC_KEY                  = C.WGDEVICE_A_PUBLIC_KEY\n\tWGDEVICE_A_FLAGS                       = C.WGDEVICE_A_FLAGS\n\tWGDEVICE_A_LISTEN_PORT                 = C.WGDEVICE_A_LISTEN_PORT\n\tWGDEVICE_A_FWMARK                      = C.WGDEVICE_A_FWMARK\n\tWGDEVICE_A_PEERS                       = C.WGDEVICE_A_PEERS\n\tWGPEER_F_REMOVE_ME                     = C.WGPEER_F_REMOVE_ME\n\tWGPEER_F_REPLACE_ALLOWEDIPS            = C.WGPEER_F_REPLACE_ALLOWEDIPS\n\tWGPEER_F_UPDATE_ONLY                   = C.WGPEER_F_UPDATE_ONLY\n\tWGPEER_A_UNSPEC                        = C.WGPEER_A_UNSPEC\n\tWGPEER_A_PUBLIC_KEY                    = C.WGPEER_A_PUBLIC_KEY\n\tWGPEER_A_PRESHARED_KEY                 = C.WGPEER_A_PRESHARED_KEY\n\tWGPEER_A_FLAGS                         = C.WGPEER_A_FLAGS\n\tWGPEER_A_ENDPOINT                      = C.WGPEER_A_ENDPOINT\n\tWGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = C.WGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL\n\tWGPEER_A_LAST_HANDSHAKE_TIME           = C.WGPEER_A_LAST_HANDSHAKE_TIME\n\tWGPEER_A_RX_BYTES                      = C.WGPEER_A_RX_BYTES\n\tWGPEER_A_TX_BYTES                      = C.WGPEER_A_TX_BYTES\n\tWGPEER_A_ALLOWEDIPS                    = C.WGPEER_A_ALLOWEDIPS\n\tWGPEER_A_PROTOCOL_VERSION              = C.WGPEER_A_PROTOCOL_VERSION\n\tWGALLOWEDIP_A_UNSPEC                   = C.WGALLOWEDIP_A_UNSPEC\n\tWGALLOWEDIP_A_FAMILY                   = C.WGALLOWEDIP_A_FAMILY\n\tWGALLOWEDIP_A_IPADDR                   = C.WGALLOWEDIP_A_IPADDR\n\tWGALLOWEDIP_A_CIDR_MASK                = C.WGALLOWEDIP_A_CIDR_MASK\n)\n\n// netlink attribute types and policies\n\n// Generated by:\n// perl -nlE '/^\\s*(NL_ATTR\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/netlink.h\n// perl -nlE '/^\\s*(NL_POLICY\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/netlink.h\nconst (\n\tNL_ATTR_TYPE_INVALID      = C.NL_ATTR_TYPE_INVALID\n\tNL_ATTR_TYPE_FLAG         = C.NL_ATTR_TYPE_FLAG\n\tNL_ATTR_TYPE_U8           = C.NL_ATTR_TYPE_U8\n\tNL_ATTR_TYPE_U16          = C.NL_ATTR_TYPE_U16\n\tNL_ATTR_TYPE_U32          = C.NL_ATTR_TYPE_U32\n\tNL_ATTR_TYPE_U64          = C.NL_ATTR_TYPE_U64\n\tNL_ATTR_TYPE_S8           = C.NL_ATTR_TYPE_S8\n\tNL_ATTR_TYPE_S16          = C.NL_ATTR_TYPE_S16\n\tNL_ATTR_TYPE_S32          = C.NL_ATTR_TYPE_S32\n\tNL_ATTR_TYPE_S64          = C.NL_ATTR_TYPE_S64\n\tNL_ATTR_TYPE_BINARY       = C.NL_ATTR_TYPE_BINARY\n\tNL_ATTR_TYPE_STRING       = C.NL_ATTR_TYPE_STRING\n\tNL_ATTR_TYPE_NUL_STRING   = C.NL_ATTR_TYPE_NUL_STRING\n\tNL_ATTR_TYPE_NESTED       = C.NL_ATTR_TYPE_NESTED\n\tNL_ATTR_TYPE_NESTED_ARRAY = C.NL_ATTR_TYPE_NESTED_ARRAY\n\tNL_ATTR_TYPE_BITFIELD32   = C.NL_ATTR_TYPE_BITFIELD32\n\n\tNL_POLICY_TYPE_ATTR_UNSPEC          = C.NL_POLICY_TYPE_ATTR_UNSPEC\n\tNL_POLICY_TYPE_ATTR_TYPE            = C.NL_POLICY_TYPE_ATTR_TYPE\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_S     = C.NL_POLICY_TYPE_ATTR_MIN_VALUE_S\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_S     = C.NL_POLICY_TYPE_ATTR_MAX_VALUE_S\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_U     = C.NL_POLICY_TYPE_ATTR_MIN_VALUE_U\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_U     = C.NL_POLICY_TYPE_ATTR_MAX_VALUE_U\n\tNL_POLICY_TYPE_ATTR_MIN_LENGTH      = C.NL_POLICY_TYPE_ATTR_MIN_LENGTH\n\tNL_POLICY_TYPE_ATTR_MAX_LENGTH      = C.NL_POLICY_TYPE_ATTR_MAX_LENGTH\n\tNL_POLICY_TYPE_ATTR_POLICY_IDX      = C.NL_POLICY_TYPE_ATTR_POLICY_IDX\n\tNL_POLICY_TYPE_ATTR_POLICY_MAXTYPE  = C.NL_POLICY_TYPE_ATTR_POLICY_MAXTYPE\n\tNL_POLICY_TYPE_ATTR_BITFIELD32_MASK = C.NL_POLICY_TYPE_ATTR_BITFIELD32_MASK\n\tNL_POLICY_TYPE_ATTR_PAD             = C.NL_POLICY_TYPE_ATTR_PAD\n\tNL_POLICY_TYPE_ATTR_MASK            = C.NL_POLICY_TYPE_ATTR_MASK\n\tNL_POLICY_TYPE_ATTR_MAX             = C.NL_POLICY_TYPE_ATTR_MAX\n)\n\n// CAN netlink types\n\ntype CANBitTiming C.struct_can_bittiming\n\ntype CANBitTimingConst C.struct_my_can_bittiming_const\n\ntype CANClock C.struct_can_clock\n\ntype CANBusErrorCounters C.struct_can_berr_counter\n\ntype CANCtrlMode C.struct_can_ctrlmode\n\ntype CANDeviceStats C.struct_can_device_stats\n\n// Generated by:\n// perl -nlE '/^\\s*(CAN_STATE\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/can/netlink.h\nconst (\n\tCAN_STATE_ERROR_ACTIVE  = C.CAN_STATE_ERROR_ACTIVE\n\tCAN_STATE_ERROR_WARNING = C.CAN_STATE_ERROR_WARNING\n\tCAN_STATE_ERROR_PASSIVE = C.CAN_STATE_ERROR_PASSIVE\n\tCAN_STATE_BUS_OFF       = C.CAN_STATE_BUS_OFF\n\tCAN_STATE_STOPPED       = C.CAN_STATE_STOPPED\n\tCAN_STATE_SLEEPING      = C.CAN_STATE_SLEEPING\n\tCAN_STATE_MAX           = C.CAN_STATE_MAX\n)\n\n// Generated by:\n// perl -nlE '/^\\s*(IFLA_CAN\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/can/netlink.h\nconst (\n\tIFLA_CAN_UNSPEC               = C.IFLA_CAN_UNSPEC\n\tIFLA_CAN_BITTIMING            = C.IFLA_CAN_BITTIMING\n\tIFLA_CAN_BITTIMING_CONST      = C.IFLA_CAN_BITTIMING_CONST\n\tIFLA_CAN_CLOCK                = C.IFLA_CAN_CLOCK\n\tIFLA_CAN_STATE                = C.IFLA_CAN_STATE\n\tIFLA_CAN_CTRLMODE             = C.IFLA_CAN_CTRLMODE\n\tIFLA_CAN_RESTART_MS           = C.IFLA_CAN_RESTART_MS\n\tIFLA_CAN_RESTART              = C.IFLA_CAN_RESTART\n\tIFLA_CAN_BERR_COUNTER         = C.IFLA_CAN_BERR_COUNTER\n\tIFLA_CAN_DATA_BITTIMING       = C.IFLA_CAN_DATA_BITTIMING\n\tIFLA_CAN_DATA_BITTIMING_CONST = C.IFLA_CAN_DATA_BITTIMING_CONST\n\tIFLA_CAN_TERMINATION          = C.IFLA_CAN_TERMINATION\n\tIFLA_CAN_TERMINATION_CONST    = C.IFLA_CAN_TERMINATION_CONST\n\tIFLA_CAN_BITRATE_CONST        = C.IFLA_CAN_BITRATE_CONST\n\tIFLA_CAN_DATA_BITRATE_CONST   = C.IFLA_CAN_DATA_BITRATE_CONST\n\tIFLA_CAN_BITRATE_MAX          = C.IFLA_CAN_BITRATE_MAX\n)\n\n// Kernel connection multiplexor\n\ntype KCMAttach C.struct_kcm_attach\n\ntype KCMUnattach C.struct_kcm_unattach\n\ntype KCMClone C.struct_kcm_clone\n\n// nl80211 generic netlink\n\n// Generated by the following steps:\n//\n// perl -nlE '/^#define (NL80211_\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/nl80211.h > define.txt\n// perl -nlE '/^\\s*(NL80211_\\w+)/ && say \"$1 = C.$1\"' /usr/include/linux/nl80211.h > enum.txt\n// cat define.txt enum.txt | sort --unique\n//\n// nl80211 has some duplicated values between enums and C preprocessor macros,\n// so this list must be sorted and made unique.\nconst (\n\tNL80211_AC_BE                                           = C.NL80211_AC_BE\n\tNL80211_AC_BK                                           = C.NL80211_AC_BK\n\tNL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED                 = C.NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED\n\tNL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = C.NL80211_ACL_POLICY_DENY_UNLESS_LISTED\n\tNL80211_AC_VI                                           = C.NL80211_AC_VI\n\tNL80211_AC_VO                                           = C.NL80211_AC_VO\n\tNL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = C.NL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT\n\tNL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = C.NL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT\n\tNL80211_AP_SME_SA_QUERY_OFFLOAD                         = C.NL80211_AP_SME_SA_QUERY_OFFLOAD\n\tNL80211_ATTR_4ADDR                                      = C.NL80211_ATTR_4ADDR\n\tNL80211_ATTR_ACK                                        = C.NL80211_ATTR_ACK\n\tNL80211_ATTR_ACK_SIGNAL                                 = C.NL80211_ATTR_ACK_SIGNAL\n\tNL80211_ATTR_ACL_POLICY                                 = C.NL80211_ATTR_ACL_POLICY\n\tNL80211_ATTR_ADMITTED_TIME                              = C.NL80211_ATTR_ADMITTED_TIME\n\tNL80211_ATTR_AIRTIME_WEIGHT                             = C.NL80211_ATTR_AIRTIME_WEIGHT\n\tNL80211_ATTR_AKM_SUITES                                 = C.NL80211_ATTR_AKM_SUITES\n\tNL80211_ATTR_AP_ISOLATE                                 = C.NL80211_ATTR_AP_ISOLATE\n\tNL80211_ATTR_AP_SETTINGS_FLAGS                          = C.NL80211_ATTR_AP_SETTINGS_FLAGS\n\tNL80211_ATTR_AUTH_DATA                                  = C.NL80211_ATTR_AUTH_DATA\n\tNL80211_ATTR_AUTH_TYPE                                  = C.NL80211_ATTR_AUTH_TYPE\n\tNL80211_ATTR_BANDS                                      = C.NL80211_ATTR_BANDS\n\tNL80211_ATTR_BEACON_HEAD                                = C.NL80211_ATTR_BEACON_HEAD\n\tNL80211_ATTR_BEACON_INTERVAL                            = C.NL80211_ATTR_BEACON_INTERVAL\n\tNL80211_ATTR_BEACON_TAIL                                = C.NL80211_ATTR_BEACON_TAIL\n\tNL80211_ATTR_BG_SCAN_PERIOD                             = C.NL80211_ATTR_BG_SCAN_PERIOD\n\tNL80211_ATTR_BSS_BASIC_RATES                            = C.NL80211_ATTR_BSS_BASIC_RATES\n\tNL80211_ATTR_BSS                                        = C.NL80211_ATTR_BSS\n\tNL80211_ATTR_BSS_CTS_PROT                               = C.NL80211_ATTR_BSS_CTS_PROT\n\tNL80211_ATTR_BSS_HT_OPMODE                              = C.NL80211_ATTR_BSS_HT_OPMODE\n\tNL80211_ATTR_BSSID                                      = C.NL80211_ATTR_BSSID\n\tNL80211_ATTR_BSS_SELECT                                 = C.NL80211_ATTR_BSS_SELECT\n\tNL80211_ATTR_BSS_SHORT_PREAMBLE                         = C.NL80211_ATTR_BSS_SHORT_PREAMBLE\n\tNL80211_ATTR_BSS_SHORT_SLOT_TIME                        = C.NL80211_ATTR_BSS_SHORT_SLOT_TIME\n\tNL80211_ATTR_CENTER_FREQ1                               = C.NL80211_ATTR_CENTER_FREQ1\n\tNL80211_ATTR_CENTER_FREQ1_OFFSET                        = C.NL80211_ATTR_CENTER_FREQ1_OFFSET\n\tNL80211_ATTR_CENTER_FREQ2                               = C.NL80211_ATTR_CENTER_FREQ2\n\tNL80211_ATTR_CHANNEL_WIDTH                              = C.NL80211_ATTR_CHANNEL_WIDTH\n\tNL80211_ATTR_CH_SWITCH_BLOCK_TX                         = C.NL80211_ATTR_CH_SWITCH_BLOCK_TX\n\tNL80211_ATTR_CH_SWITCH_COUNT                            = C.NL80211_ATTR_CH_SWITCH_COUNT\n\tNL80211_ATTR_CIPHER_SUITE_GROUP                         = C.NL80211_ATTR_CIPHER_SUITE_GROUP\n\tNL80211_ATTR_CIPHER_SUITES                              = C.NL80211_ATTR_CIPHER_SUITES\n\tNL80211_ATTR_CIPHER_SUITES_PAIRWISE                     = C.NL80211_ATTR_CIPHER_SUITES_PAIRWISE\n\tNL80211_ATTR_CNTDWN_OFFS_BEACON                         = C.NL80211_ATTR_CNTDWN_OFFS_BEACON\n\tNL80211_ATTR_CNTDWN_OFFS_PRESP                          = C.NL80211_ATTR_CNTDWN_OFFS_PRESP\n\tNL80211_ATTR_COALESCE_RULE                              = C.NL80211_ATTR_COALESCE_RULE\n\tNL80211_ATTR_COALESCE_RULE_CONDITION                    = C.NL80211_ATTR_COALESCE_RULE_CONDITION\n\tNL80211_ATTR_COALESCE_RULE_DELAY                        = C.NL80211_ATTR_COALESCE_RULE_DELAY\n\tNL80211_ATTR_COALESCE_RULE_MAX                          = C.NL80211_ATTR_COALESCE_RULE_MAX\n\tNL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = C.NL80211_ATTR_COALESCE_RULE_PKT_PATTERN\n\tNL80211_ATTR_COLOR_CHANGE_COLOR                         = C.NL80211_ATTR_COLOR_CHANGE_COLOR\n\tNL80211_ATTR_COLOR_CHANGE_COUNT                         = C.NL80211_ATTR_COLOR_CHANGE_COUNT\n\tNL80211_ATTR_COLOR_CHANGE_ELEMS                         = C.NL80211_ATTR_COLOR_CHANGE_ELEMS\n\tNL80211_ATTR_CONN_FAILED_REASON                         = C.NL80211_ATTR_CONN_FAILED_REASON\n\tNL80211_ATTR_CONTROL_PORT                               = C.NL80211_ATTR_CONTROL_PORT\n\tNL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = C.NL80211_ATTR_CONTROL_PORT_ETHERTYPE\n\tNL80211_ATTR_CONTROL_PORT_NO_ENCRYPT                    = C.NL80211_ATTR_CONTROL_PORT_NO_ENCRYPT\n\tNL80211_ATTR_CONTROL_PORT_NO_PREAUTH                    = C.NL80211_ATTR_CONTROL_PORT_NO_PREAUTH\n\tNL80211_ATTR_CONTROL_PORT_OVER_NL80211                  = C.NL80211_ATTR_CONTROL_PORT_OVER_NL80211\n\tNL80211_ATTR_COOKIE                                     = C.NL80211_ATTR_COOKIE\n\tNL80211_ATTR_CQM_BEACON_LOSS_EVENT                      = C.NL80211_ATTR_CQM_BEACON_LOSS_EVENT\n\tNL80211_ATTR_CQM                                        = C.NL80211_ATTR_CQM\n\tNL80211_ATTR_CQM_MAX                                    = C.NL80211_ATTR_CQM_MAX\n\tNL80211_ATTR_CQM_PKT_LOSS_EVENT                         = C.NL80211_ATTR_CQM_PKT_LOSS_EVENT\n\tNL80211_ATTR_CQM_RSSI_HYST                              = C.NL80211_ATTR_CQM_RSSI_HYST\n\tNL80211_ATTR_CQM_RSSI_LEVEL                             = C.NL80211_ATTR_CQM_RSSI_LEVEL\n\tNL80211_ATTR_CQM_RSSI_THOLD                             = C.NL80211_ATTR_CQM_RSSI_THOLD\n\tNL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT                   = C.NL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT\n\tNL80211_ATTR_CQM_TXE_INTVL                              = C.NL80211_ATTR_CQM_TXE_INTVL\n\tNL80211_ATTR_CQM_TXE_PKTS                               = C.NL80211_ATTR_CQM_TXE_PKTS\n\tNL80211_ATTR_CQM_TXE_RATE                               = C.NL80211_ATTR_CQM_TXE_RATE\n\tNL80211_ATTR_CRIT_PROT_ID                               = C.NL80211_ATTR_CRIT_PROT_ID\n\tNL80211_ATTR_CSA_C_OFF_BEACON                           = C.NL80211_ATTR_CSA_C_OFF_BEACON\n\tNL80211_ATTR_CSA_C_OFF_PRESP                            = C.NL80211_ATTR_CSA_C_OFF_PRESP\n\tNL80211_ATTR_CSA_C_OFFSETS_TX                           = C.NL80211_ATTR_CSA_C_OFFSETS_TX\n\tNL80211_ATTR_CSA_IES                                    = C.NL80211_ATTR_CSA_IES\n\tNL80211_ATTR_DEVICE_AP_SME                              = C.NL80211_ATTR_DEVICE_AP_SME\n\tNL80211_ATTR_DFS_CAC_TIME                               = C.NL80211_ATTR_DFS_CAC_TIME\n\tNL80211_ATTR_DFS_REGION                                 = C.NL80211_ATTR_DFS_REGION\n\tNL80211_ATTR_DISABLE_EHT                                = C.NL80211_ATTR_DISABLE_EHT\n\tNL80211_ATTR_DISABLE_HE                                 = C.NL80211_ATTR_DISABLE_HE\n\tNL80211_ATTR_DISABLE_HT                                 = C.NL80211_ATTR_DISABLE_HT\n\tNL80211_ATTR_DISABLE_VHT                                = C.NL80211_ATTR_DISABLE_VHT\n\tNL80211_ATTR_DISCONNECTED_BY_AP                         = C.NL80211_ATTR_DISCONNECTED_BY_AP\n\tNL80211_ATTR_DONT_WAIT_FOR_ACK                          = C.NL80211_ATTR_DONT_WAIT_FOR_ACK\n\tNL80211_ATTR_DTIM_PERIOD                                = C.NL80211_ATTR_DTIM_PERIOD\n\tNL80211_ATTR_DURATION                                   = C.NL80211_ATTR_DURATION\n\tNL80211_ATTR_EHT_CAPABILITY                             = C.NL80211_ATTR_EHT_CAPABILITY\n\tNL80211_ATTR_EML_CAPABILITY                             = C.NL80211_ATTR_EML_CAPABILITY\n\tNL80211_ATTR_EXT_CAPA                                   = C.NL80211_ATTR_EXT_CAPA\n\tNL80211_ATTR_EXT_CAPA_MASK                              = C.NL80211_ATTR_EXT_CAPA_MASK\n\tNL80211_ATTR_EXTERNAL_AUTH_ACTION                       = C.NL80211_ATTR_EXTERNAL_AUTH_ACTION\n\tNL80211_ATTR_EXTERNAL_AUTH_SUPPORT                      = C.NL80211_ATTR_EXTERNAL_AUTH_SUPPORT\n\tNL80211_ATTR_EXT_FEATURES                               = C.NL80211_ATTR_EXT_FEATURES\n\tNL80211_ATTR_FEATURE_FLAGS                              = C.NL80211_ATTR_FEATURE_FLAGS\n\tNL80211_ATTR_FILS_CACHE_ID                              = C.NL80211_ATTR_FILS_CACHE_ID\n\tNL80211_ATTR_FILS_DISCOVERY                             = C.NL80211_ATTR_FILS_DISCOVERY\n\tNL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM                      = C.NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM\n\tNL80211_ATTR_FILS_ERP_REALM                             = C.NL80211_ATTR_FILS_ERP_REALM\n\tNL80211_ATTR_FILS_ERP_RRK                               = C.NL80211_ATTR_FILS_ERP_RRK\n\tNL80211_ATTR_FILS_ERP_USERNAME                          = C.NL80211_ATTR_FILS_ERP_USERNAME\n\tNL80211_ATTR_FILS_KEK                                   = C.NL80211_ATTR_FILS_KEK\n\tNL80211_ATTR_FILS_NONCES                                = C.NL80211_ATTR_FILS_NONCES\n\tNL80211_ATTR_FRAME                                      = C.NL80211_ATTR_FRAME\n\tNL80211_ATTR_FRAME_MATCH                                = C.NL80211_ATTR_FRAME_MATCH\n\tNL80211_ATTR_FRAME_TYPE                                 = C.NL80211_ATTR_FRAME_TYPE\n\tNL80211_ATTR_FREQ_AFTER                                 = C.NL80211_ATTR_FREQ_AFTER\n\tNL80211_ATTR_FREQ_BEFORE                                = C.NL80211_ATTR_FREQ_BEFORE\n\tNL80211_ATTR_FREQ_FIXED                                 = C.NL80211_ATTR_FREQ_FIXED\n\tNL80211_ATTR_FREQ_RANGE_END                             = C.NL80211_ATTR_FREQ_RANGE_END\n\tNL80211_ATTR_FREQ_RANGE_MAX_BW                          = C.NL80211_ATTR_FREQ_RANGE_MAX_BW\n\tNL80211_ATTR_FREQ_RANGE_START                           = C.NL80211_ATTR_FREQ_RANGE_START\n\tNL80211_ATTR_FTM_RESPONDER                              = C.NL80211_ATTR_FTM_RESPONDER\n\tNL80211_ATTR_FTM_RESPONDER_STATS                        = C.NL80211_ATTR_FTM_RESPONDER_STATS\n\tNL80211_ATTR_GENERATION                                 = C.NL80211_ATTR_GENERATION\n\tNL80211_ATTR_HANDLE_DFS                                 = C.NL80211_ATTR_HANDLE_DFS\n\tNL80211_ATTR_HE_6GHZ_CAPABILITY                         = C.NL80211_ATTR_HE_6GHZ_CAPABILITY\n\tNL80211_ATTR_HE_BSS_COLOR                               = C.NL80211_ATTR_HE_BSS_COLOR\n\tNL80211_ATTR_HE_CAPABILITY                              = C.NL80211_ATTR_HE_CAPABILITY\n\tNL80211_ATTR_HE_OBSS_PD                                 = C.NL80211_ATTR_HE_OBSS_PD\n\tNL80211_ATTR_HIDDEN_SSID                                = C.NL80211_ATTR_HIDDEN_SSID\n\tNL80211_ATTR_HT_CAPABILITY                              = C.NL80211_ATTR_HT_CAPABILITY\n\tNL80211_ATTR_HT_CAPABILITY_MASK                         = C.NL80211_ATTR_HT_CAPABILITY_MASK\n\tNL80211_ATTR_IE_ASSOC_RESP                              = C.NL80211_ATTR_IE_ASSOC_RESP\n\tNL80211_ATTR_IE                                         = C.NL80211_ATTR_IE\n\tNL80211_ATTR_IE_PROBE_RESP                              = C.NL80211_ATTR_IE_PROBE_RESP\n\tNL80211_ATTR_IE_RIC                                     = C.NL80211_ATTR_IE_RIC\n\tNL80211_ATTR_IFACE_SOCKET_OWNER                         = C.NL80211_ATTR_IFACE_SOCKET_OWNER\n\tNL80211_ATTR_IFINDEX                                    = C.NL80211_ATTR_IFINDEX\n\tNL80211_ATTR_IFNAME                                     = C.NL80211_ATTR_IFNAME\n\tNL80211_ATTR_IFTYPE_AKM_SUITES                          = C.NL80211_ATTR_IFTYPE_AKM_SUITES\n\tNL80211_ATTR_IFTYPE                                     = C.NL80211_ATTR_IFTYPE\n\tNL80211_ATTR_IFTYPE_EXT_CAPA                            = C.NL80211_ATTR_IFTYPE_EXT_CAPA\n\tNL80211_ATTR_INACTIVITY_TIMEOUT                         = C.NL80211_ATTR_INACTIVITY_TIMEOUT\n\tNL80211_ATTR_INTERFACE_COMBINATIONS                     = C.NL80211_ATTR_INTERFACE_COMBINATIONS\n\tNL80211_ATTR_KEY_CIPHER                                 = C.NL80211_ATTR_KEY_CIPHER\n\tNL80211_ATTR_KEY                                        = C.NL80211_ATTR_KEY\n\tNL80211_ATTR_KEY_DATA                                   = C.NL80211_ATTR_KEY_DATA\n\tNL80211_ATTR_KEY_DEFAULT                                = C.NL80211_ATTR_KEY_DEFAULT\n\tNL80211_ATTR_KEY_DEFAULT_MGMT                           = C.NL80211_ATTR_KEY_DEFAULT_MGMT\n\tNL80211_ATTR_KEY_DEFAULT_TYPES                          = C.NL80211_ATTR_KEY_DEFAULT_TYPES\n\tNL80211_ATTR_KEY_IDX                                    = C.NL80211_ATTR_KEY_IDX\n\tNL80211_ATTR_KEYS                                       = C.NL80211_ATTR_KEYS\n\tNL80211_ATTR_KEY_SEQ                                    = C.NL80211_ATTR_KEY_SEQ\n\tNL80211_ATTR_KEY_TYPE                                   = C.NL80211_ATTR_KEY_TYPE\n\tNL80211_ATTR_LOCAL_MESH_POWER_MODE                      = C.NL80211_ATTR_LOCAL_MESH_POWER_MODE\n\tNL80211_ATTR_LOCAL_STATE_CHANGE                         = C.NL80211_ATTR_LOCAL_STATE_CHANGE\n\tNL80211_ATTR_MAC_ACL_MAX                                = C.NL80211_ATTR_MAC_ACL_MAX\n\tNL80211_ATTR_MAC_ADDRS                                  = C.NL80211_ATTR_MAC_ADDRS\n\tNL80211_ATTR_MAC                                        = C.NL80211_ATTR_MAC\n\tNL80211_ATTR_MAC_HINT                                   = C.NL80211_ATTR_MAC_HINT\n\tNL80211_ATTR_MAC_MASK                                   = C.NL80211_ATTR_MAC_MASK\n\tNL80211_ATTR_MAX_AP_ASSOC_STA                           = C.NL80211_ATTR_MAX_AP_ASSOC_STA\n\tNL80211_ATTR_MAX                                        = C.NL80211_ATTR_MAX\n\tNL80211_ATTR_MAX_CRIT_PROT_DURATION                     = C.NL80211_ATTR_MAX_CRIT_PROT_DURATION\n\tNL80211_ATTR_MAX_CSA_COUNTERS                           = C.NL80211_ATTR_MAX_CSA_COUNTERS\n\tNL80211_ATTR_MAX_MATCH_SETS                             = C.NL80211_ATTR_MAX_MATCH_SETS\n\tNL80211_ATTR_MAX_NUM_AKM_SUITES                         = C.NL80211_ATTR_MAX_NUM_AKM_SUITES\n\tNL80211_ATTR_MAX_NUM_PMKIDS                             = C.NL80211_ATTR_MAX_NUM_PMKIDS\n\tNL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = C.NL80211_ATTR_MAX_NUM_SCAN_SSIDS\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = C.NL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS                   = C.NL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS\n\tNL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION             = C.NL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION\n\tNL80211_ATTR_MAX_SCAN_IE_LEN                            = C.NL80211_ATTR_MAX_SCAN_IE_LEN\n\tNL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = C.NL80211_ATTR_MAX_SCAN_PLAN_INTERVAL\n\tNL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = C.NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS\n\tNL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = C.NL80211_ATTR_MAX_SCHED_SCAN_IE_LEN\n\tNL80211_ATTR_MBSSID_CONFIG                              = C.NL80211_ATTR_MBSSID_CONFIG\n\tNL80211_ATTR_MBSSID_ELEMS                               = C.NL80211_ATTR_MBSSID_ELEMS\n\tNL80211_ATTR_MCAST_RATE                                 = C.NL80211_ATTR_MCAST_RATE\n\tNL80211_ATTR_MDID                                       = C.NL80211_ATTR_MDID\n\tNL80211_ATTR_MEASUREMENT_DURATION                       = C.NL80211_ATTR_MEASUREMENT_DURATION\n\tNL80211_ATTR_MEASUREMENT_DURATION_MANDATORY             = C.NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY\n\tNL80211_ATTR_MESH_CONFIG                                = C.NL80211_ATTR_MESH_CONFIG\n\tNL80211_ATTR_MESH_ID                                    = C.NL80211_ATTR_MESH_ID\n\tNL80211_ATTR_MESH_PEER_AID                              = C.NL80211_ATTR_MESH_PEER_AID\n\tNL80211_ATTR_MESH_SETUP                                 = C.NL80211_ATTR_MESH_SETUP\n\tNL80211_ATTR_MGMT_SUBTYPE                               = C.NL80211_ATTR_MGMT_SUBTYPE\n\tNL80211_ATTR_MLD_ADDR                                   = C.NL80211_ATTR_MLD_ADDR\n\tNL80211_ATTR_MLD_CAPA_AND_OPS                           = C.NL80211_ATTR_MLD_CAPA_AND_OPS\n\tNL80211_ATTR_MLO_LINK_ID                                = C.NL80211_ATTR_MLO_LINK_ID\n\tNL80211_ATTR_MLO_LINKS                                  = C.NL80211_ATTR_MLO_LINKS\n\tNL80211_ATTR_MLO_SUPPORT                                = C.NL80211_ATTR_MLO_SUPPORT\n\tNL80211_ATTR_MNTR_FLAGS                                 = C.NL80211_ATTR_MNTR_FLAGS\n\tNL80211_ATTR_MPATH_INFO                                 = C.NL80211_ATTR_MPATH_INFO\n\tNL80211_ATTR_MPATH_NEXT_HOP                             = C.NL80211_ATTR_MPATH_NEXT_HOP\n\tNL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED               = C.NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED\n\tNL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR                    = C.NL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR\n\tNL80211_ATTR_MU_MIMO_GROUP_DATA                         = C.NL80211_ATTR_MU_MIMO_GROUP_DATA\n\tNL80211_ATTR_NAN_FUNC                                   = C.NL80211_ATTR_NAN_FUNC\n\tNL80211_ATTR_NAN_MASTER_PREF                            = C.NL80211_ATTR_NAN_MASTER_PREF\n\tNL80211_ATTR_NAN_MATCH                                  = C.NL80211_ATTR_NAN_MATCH\n\tNL80211_ATTR_NETNS_FD                                   = C.NL80211_ATTR_NETNS_FD\n\tNL80211_ATTR_NOACK_MAP                                  = C.NL80211_ATTR_NOACK_MAP\n\tNL80211_ATTR_NSS                                        = C.NL80211_ATTR_NSS\n\tNL80211_ATTR_OBSS_COLOR_BITMAP                          = C.NL80211_ATTR_OBSS_COLOR_BITMAP\n\tNL80211_ATTR_OFFCHANNEL_TX_OK                           = C.NL80211_ATTR_OFFCHANNEL_TX_OK\n\tNL80211_ATTR_OPER_CLASS                                 = C.NL80211_ATTR_OPER_CLASS\n\tNL80211_ATTR_OPMODE_NOTIF                               = C.NL80211_ATTR_OPMODE_NOTIF\n\tNL80211_ATTR_P2P_CTWINDOW                               = C.NL80211_ATTR_P2P_CTWINDOW\n\tNL80211_ATTR_P2P_OPPPS                                  = C.NL80211_ATTR_P2P_OPPPS\n\tNL80211_ATTR_PAD                                        = C.NL80211_ATTR_PAD\n\tNL80211_ATTR_PBSS                                       = C.NL80211_ATTR_PBSS\n\tNL80211_ATTR_PEER_AID                                   = C.NL80211_ATTR_PEER_AID\n\tNL80211_ATTR_PEER_MEASUREMENTS                          = C.NL80211_ATTR_PEER_MEASUREMENTS\n\tNL80211_ATTR_PID                                        = C.NL80211_ATTR_PID\n\tNL80211_ATTR_PMK                                        = C.NL80211_ATTR_PMK\n\tNL80211_ATTR_PMKID                                      = C.NL80211_ATTR_PMKID\n\tNL80211_ATTR_PMK_LIFETIME                               = C.NL80211_ATTR_PMK_LIFETIME\n\tNL80211_ATTR_PMKR0_NAME                                 = C.NL80211_ATTR_PMKR0_NAME\n\tNL80211_ATTR_PMK_REAUTH_THRESHOLD                       = C.NL80211_ATTR_PMK_REAUTH_THRESHOLD\n\tNL80211_ATTR_PMKSA_CANDIDATE                            = C.NL80211_ATTR_PMKSA_CANDIDATE\n\tNL80211_ATTR_PORT_AUTHORIZED                            = C.NL80211_ATTR_PORT_AUTHORIZED\n\tNL80211_ATTR_POWER_RULE_MAX_ANT_GAIN                    = C.NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN\n\tNL80211_ATTR_POWER_RULE_MAX_EIRP                        = C.NL80211_ATTR_POWER_RULE_MAX_EIRP\n\tNL80211_ATTR_PREV_BSSID                                 = C.NL80211_ATTR_PREV_BSSID\n\tNL80211_ATTR_PRIVACY                                    = C.NL80211_ATTR_PRIVACY\n\tNL80211_ATTR_PROBE_RESP                                 = C.NL80211_ATTR_PROBE_RESP\n\tNL80211_ATTR_PROBE_RESP_OFFLOAD                         = C.NL80211_ATTR_PROBE_RESP_OFFLOAD\n\tNL80211_ATTR_PROTOCOL_FEATURES                          = C.NL80211_ATTR_PROTOCOL_FEATURES\n\tNL80211_ATTR_PS_STATE                                   = C.NL80211_ATTR_PS_STATE\n\tNL80211_ATTR_QOS_MAP                                    = C.NL80211_ATTR_QOS_MAP\n\tNL80211_ATTR_RADAR_BACKGROUND                           = C.NL80211_ATTR_RADAR_BACKGROUND\n\tNL80211_ATTR_RADAR_EVENT                                = C.NL80211_ATTR_RADAR_EVENT\n\tNL80211_ATTR_REASON_CODE                                = C.NL80211_ATTR_REASON_CODE\n\tNL80211_ATTR_RECEIVE_MULTICAST                          = C.NL80211_ATTR_RECEIVE_MULTICAST\n\tNL80211_ATTR_RECONNECT_REQUESTED                        = C.NL80211_ATTR_RECONNECT_REQUESTED\n\tNL80211_ATTR_REG_ALPHA2                                 = C.NL80211_ATTR_REG_ALPHA2\n\tNL80211_ATTR_REG_INDOOR                                 = C.NL80211_ATTR_REG_INDOOR\n\tNL80211_ATTR_REG_INITIATOR                              = C.NL80211_ATTR_REG_INITIATOR\n\tNL80211_ATTR_REG_RULE_FLAGS                             = C.NL80211_ATTR_REG_RULE_FLAGS\n\tNL80211_ATTR_REG_RULES                                  = C.NL80211_ATTR_REG_RULES\n\tNL80211_ATTR_REG_TYPE                                   = C.NL80211_ATTR_REG_TYPE\n\tNL80211_ATTR_REKEY_DATA                                 = C.NL80211_ATTR_REKEY_DATA\n\tNL80211_ATTR_REQ_IE                                     = C.NL80211_ATTR_REQ_IE\n\tNL80211_ATTR_RESP_IE                                    = C.NL80211_ATTR_RESP_IE\n\tNL80211_ATTR_ROAM_SUPPORT                               = C.NL80211_ATTR_ROAM_SUPPORT\n\tNL80211_ATTR_RX_FRAME_TYPES                             = C.NL80211_ATTR_RX_FRAME_TYPES\n\tNL80211_ATTR_RX_HW_TIMESTAMP                            = C.NL80211_ATTR_RX_HW_TIMESTAMP\n\tNL80211_ATTR_RXMGMT_FLAGS                               = C.NL80211_ATTR_RXMGMT_FLAGS\n\tNL80211_ATTR_RX_SIGNAL_DBM                              = C.NL80211_ATTR_RX_SIGNAL_DBM\n\tNL80211_ATTR_S1G_CAPABILITY                             = C.NL80211_ATTR_S1G_CAPABILITY\n\tNL80211_ATTR_S1G_CAPABILITY_MASK                        = C.NL80211_ATTR_S1G_CAPABILITY_MASK\n\tNL80211_ATTR_SAE_DATA                                   = C.NL80211_ATTR_SAE_DATA\n\tNL80211_ATTR_SAE_PASSWORD                               = C.NL80211_ATTR_SAE_PASSWORD\n\tNL80211_ATTR_SAE_PWE                                    = C.NL80211_ATTR_SAE_PWE\n\tNL80211_ATTR_SAR_SPEC                                   = C.NL80211_ATTR_SAR_SPEC\n\tNL80211_ATTR_SCAN_FLAGS                                 = C.NL80211_ATTR_SCAN_FLAGS\n\tNL80211_ATTR_SCAN_FREQ_KHZ                              = C.NL80211_ATTR_SCAN_FREQ_KHZ\n\tNL80211_ATTR_SCAN_FREQUENCIES                           = C.NL80211_ATTR_SCAN_FREQUENCIES\n\tNL80211_ATTR_SCAN_GENERATION                            = C.NL80211_ATTR_SCAN_GENERATION\n\tNL80211_ATTR_SCAN_SSIDS                                 = C.NL80211_ATTR_SCAN_SSIDS\n\tNL80211_ATTR_SCAN_START_TIME_TSF_BSSID                  = C.NL80211_ATTR_SCAN_START_TIME_TSF_BSSID\n\tNL80211_ATTR_SCAN_START_TIME_TSF                        = C.NL80211_ATTR_SCAN_START_TIME_TSF\n\tNL80211_ATTR_SCAN_SUPP_RATES                            = C.NL80211_ATTR_SCAN_SUPP_RATES\n\tNL80211_ATTR_SCHED_SCAN_DELAY                           = C.NL80211_ATTR_SCHED_SCAN_DELAY\n\tNL80211_ATTR_SCHED_SCAN_INTERVAL                        = C.NL80211_ATTR_SCHED_SCAN_INTERVAL\n\tNL80211_ATTR_SCHED_SCAN_MATCH                           = C.NL80211_ATTR_SCHED_SCAN_MATCH\n\tNL80211_ATTR_SCHED_SCAN_MATCH_SSID                      = C.NL80211_ATTR_SCHED_SCAN_MATCH_SSID\n\tNL80211_ATTR_SCHED_SCAN_MAX_REQS                        = C.NL80211_ATTR_SCHED_SCAN_MAX_REQS\n\tNL80211_ATTR_SCHED_SCAN_MULTI                           = C.NL80211_ATTR_SCHED_SCAN_MULTI\n\tNL80211_ATTR_SCHED_SCAN_PLANS                           = C.NL80211_ATTR_SCHED_SCAN_PLANS\n\tNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI                   = C.NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI\n\tNL80211_ATTR_SCHED_SCAN_RSSI_ADJUST                     = C.NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST\n\tNL80211_ATTR_SMPS_MODE                                  = C.NL80211_ATTR_SMPS_MODE\n\tNL80211_ATTR_SOCKET_OWNER                               = C.NL80211_ATTR_SOCKET_OWNER\n\tNL80211_ATTR_SOFTWARE_IFTYPES                           = C.NL80211_ATTR_SOFTWARE_IFTYPES\n\tNL80211_ATTR_SPLIT_WIPHY_DUMP                           = C.NL80211_ATTR_SPLIT_WIPHY_DUMP\n\tNL80211_ATTR_SSID                                       = C.NL80211_ATTR_SSID\n\tNL80211_ATTR_STA_AID                                    = C.NL80211_ATTR_STA_AID\n\tNL80211_ATTR_STA_CAPABILITY                             = C.NL80211_ATTR_STA_CAPABILITY\n\tNL80211_ATTR_STA_EXT_CAPABILITY                         = C.NL80211_ATTR_STA_EXT_CAPABILITY\n\tNL80211_ATTR_STA_FLAGS2                                 = C.NL80211_ATTR_STA_FLAGS2\n\tNL80211_ATTR_STA_FLAGS                                  = C.NL80211_ATTR_STA_FLAGS\n\tNL80211_ATTR_STA_INFO                                   = C.NL80211_ATTR_STA_INFO\n\tNL80211_ATTR_STA_LISTEN_INTERVAL                        = C.NL80211_ATTR_STA_LISTEN_INTERVAL\n\tNL80211_ATTR_STA_PLINK_ACTION                           = C.NL80211_ATTR_STA_PLINK_ACTION\n\tNL80211_ATTR_STA_PLINK_STATE                            = C.NL80211_ATTR_STA_PLINK_STATE\n\tNL80211_ATTR_STA_SUPPORTED_CHANNELS                     = C.NL80211_ATTR_STA_SUPPORTED_CHANNELS\n\tNL80211_ATTR_STA_SUPPORTED_OPER_CLASSES                 = C.NL80211_ATTR_STA_SUPPORTED_OPER_CLASSES\n\tNL80211_ATTR_STA_SUPPORTED_RATES                        = C.NL80211_ATTR_STA_SUPPORTED_RATES\n\tNL80211_ATTR_STA_SUPPORT_P2P_PS                         = C.NL80211_ATTR_STA_SUPPORT_P2P_PS\n\tNL80211_ATTR_STATUS_CODE                                = C.NL80211_ATTR_STATUS_CODE\n\tNL80211_ATTR_STA_TX_POWER                               = C.NL80211_ATTR_STA_TX_POWER\n\tNL80211_ATTR_STA_TX_POWER_SETTING                       = C.NL80211_ATTR_STA_TX_POWER_SETTING\n\tNL80211_ATTR_STA_VLAN                                   = C.NL80211_ATTR_STA_VLAN\n\tNL80211_ATTR_STA_WME                                    = C.NL80211_ATTR_STA_WME\n\tNL80211_ATTR_SUPPORT_10_MHZ                             = C.NL80211_ATTR_SUPPORT_10_MHZ\n\tNL80211_ATTR_SUPPORT_5_MHZ                              = C.NL80211_ATTR_SUPPORT_5_MHZ\n\tNL80211_ATTR_SUPPORT_AP_UAPSD                           = C.NL80211_ATTR_SUPPORT_AP_UAPSD\n\tNL80211_ATTR_SUPPORTED_COMMANDS                         = C.NL80211_ATTR_SUPPORTED_COMMANDS\n\tNL80211_ATTR_SUPPORTED_IFTYPES                          = C.NL80211_ATTR_SUPPORTED_IFTYPES\n\tNL80211_ATTR_SUPPORT_IBSS_RSN                           = C.NL80211_ATTR_SUPPORT_IBSS_RSN\n\tNL80211_ATTR_SUPPORT_MESH_AUTH                          = C.NL80211_ATTR_SUPPORT_MESH_AUTH\n\tNL80211_ATTR_SURVEY_INFO                                = C.NL80211_ATTR_SURVEY_INFO\n\tNL80211_ATTR_SURVEY_RADIO_STATS                         = C.NL80211_ATTR_SURVEY_RADIO_STATS\n\tNL80211_ATTR_TD_BITMAP                                  = C.NL80211_ATTR_TD_BITMAP\n\tNL80211_ATTR_TDLS_ACTION                                = C.NL80211_ATTR_TDLS_ACTION\n\tNL80211_ATTR_TDLS_DIALOG_TOKEN                          = C.NL80211_ATTR_TDLS_DIALOG_TOKEN\n\tNL80211_ATTR_TDLS_EXTERNAL_SETUP                        = C.NL80211_ATTR_TDLS_EXTERNAL_SETUP\n\tNL80211_ATTR_TDLS_INITIATOR                             = C.NL80211_ATTR_TDLS_INITIATOR\n\tNL80211_ATTR_TDLS_OPERATION                             = C.NL80211_ATTR_TDLS_OPERATION\n\tNL80211_ATTR_TDLS_PEER_CAPABILITY                       = C.NL80211_ATTR_TDLS_PEER_CAPABILITY\n\tNL80211_ATTR_TDLS_SUPPORT                               = C.NL80211_ATTR_TDLS_SUPPORT\n\tNL80211_ATTR_TESTDATA                                   = C.NL80211_ATTR_TESTDATA\n\tNL80211_ATTR_TID_CONFIG                                 = C.NL80211_ATTR_TID_CONFIG\n\tNL80211_ATTR_TIMED_OUT                                  = C.NL80211_ATTR_TIMED_OUT\n\tNL80211_ATTR_TIMEOUT                                    = C.NL80211_ATTR_TIMEOUT\n\tNL80211_ATTR_TIMEOUT_REASON                             = C.NL80211_ATTR_TIMEOUT_REASON\n\tNL80211_ATTR_TSID                                       = C.NL80211_ATTR_TSID\n\tNL80211_ATTR_TWT_RESPONDER                              = C.NL80211_ATTR_TWT_RESPONDER\n\tNL80211_ATTR_TX_FRAME_TYPES                             = C.NL80211_ATTR_TX_FRAME_TYPES\n\tNL80211_ATTR_TX_HW_TIMESTAMP                            = C.NL80211_ATTR_TX_HW_TIMESTAMP\n\tNL80211_ATTR_TX_NO_CCK_RATE                             = C.NL80211_ATTR_TX_NO_CCK_RATE\n\tNL80211_ATTR_TXQ_LIMIT                                  = C.NL80211_ATTR_TXQ_LIMIT\n\tNL80211_ATTR_TXQ_MEMORY_LIMIT                           = C.NL80211_ATTR_TXQ_MEMORY_LIMIT\n\tNL80211_ATTR_TXQ_QUANTUM                                = C.NL80211_ATTR_TXQ_QUANTUM\n\tNL80211_ATTR_TXQ_STATS                                  = C.NL80211_ATTR_TXQ_STATS\n\tNL80211_ATTR_TX_RATES                                   = C.NL80211_ATTR_TX_RATES\n\tNL80211_ATTR_UNSOL_BCAST_PROBE_RESP                     = C.NL80211_ATTR_UNSOL_BCAST_PROBE_RESP\n\tNL80211_ATTR_UNSPEC                                     = C.NL80211_ATTR_UNSPEC\n\tNL80211_ATTR_USE_MFP                                    = C.NL80211_ATTR_USE_MFP\n\tNL80211_ATTR_USER_PRIO                                  = C.NL80211_ATTR_USER_PRIO\n\tNL80211_ATTR_USER_REG_HINT_TYPE                         = C.NL80211_ATTR_USER_REG_HINT_TYPE\n\tNL80211_ATTR_USE_RRM                                    = C.NL80211_ATTR_USE_RRM\n\tNL80211_ATTR_VENDOR_DATA                                = C.NL80211_ATTR_VENDOR_DATA\n\tNL80211_ATTR_VENDOR_EVENTS                              = C.NL80211_ATTR_VENDOR_EVENTS\n\tNL80211_ATTR_VENDOR_ID                                  = C.NL80211_ATTR_VENDOR_ID\n\tNL80211_ATTR_VENDOR_SUBCMD                              = C.NL80211_ATTR_VENDOR_SUBCMD\n\tNL80211_ATTR_VHT_CAPABILITY                             = C.NL80211_ATTR_VHT_CAPABILITY\n\tNL80211_ATTR_VHT_CAPABILITY_MASK                        = C.NL80211_ATTR_VHT_CAPABILITY_MASK\n\tNL80211_ATTR_VLAN_ID                                    = C.NL80211_ATTR_VLAN_ID\n\tNL80211_ATTR_WANT_1X_4WAY_HS                            = C.NL80211_ATTR_WANT_1X_4WAY_HS\n\tNL80211_ATTR_WDEV                                       = C.NL80211_ATTR_WDEV\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX                     = C.NL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX                     = C.NL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX\n\tNL80211_ATTR_WIPHY_ANTENNA_RX                           = C.NL80211_ATTR_WIPHY_ANTENNA_RX\n\tNL80211_ATTR_WIPHY_ANTENNA_TX                           = C.NL80211_ATTR_WIPHY_ANTENNA_TX\n\tNL80211_ATTR_WIPHY_BANDS                                = C.NL80211_ATTR_WIPHY_BANDS\n\tNL80211_ATTR_WIPHY_CHANNEL_TYPE                         = C.NL80211_ATTR_WIPHY_CHANNEL_TYPE\n\tNL80211_ATTR_WIPHY                                      = C.NL80211_ATTR_WIPHY\n\tNL80211_ATTR_WIPHY_COVERAGE_CLASS                       = C.NL80211_ATTR_WIPHY_COVERAGE_CLASS\n\tNL80211_ATTR_WIPHY_DYN_ACK                              = C.NL80211_ATTR_WIPHY_DYN_ACK\n\tNL80211_ATTR_WIPHY_EDMG_BW_CONFIG                       = C.NL80211_ATTR_WIPHY_EDMG_BW_CONFIG\n\tNL80211_ATTR_WIPHY_EDMG_CHANNELS                        = C.NL80211_ATTR_WIPHY_EDMG_CHANNELS\n\tNL80211_ATTR_WIPHY_FRAG_THRESHOLD                       = C.NL80211_ATTR_WIPHY_FRAG_THRESHOLD\n\tNL80211_ATTR_WIPHY_FREQ                                 = C.NL80211_ATTR_WIPHY_FREQ\n\tNL80211_ATTR_WIPHY_FREQ_HINT                            = C.NL80211_ATTR_WIPHY_FREQ_HINT\n\tNL80211_ATTR_WIPHY_FREQ_OFFSET                          = C.NL80211_ATTR_WIPHY_FREQ_OFFSET\n\tNL80211_ATTR_WIPHY_NAME                                 = C.NL80211_ATTR_WIPHY_NAME\n\tNL80211_ATTR_WIPHY_RETRY_LONG                           = C.NL80211_ATTR_WIPHY_RETRY_LONG\n\tNL80211_ATTR_WIPHY_RETRY_SHORT                          = C.NL80211_ATTR_WIPHY_RETRY_SHORT\n\tNL80211_ATTR_WIPHY_RTS_THRESHOLD                        = C.NL80211_ATTR_WIPHY_RTS_THRESHOLD\n\tNL80211_ATTR_WIPHY_SELF_MANAGED_REG                     = C.NL80211_ATTR_WIPHY_SELF_MANAGED_REG\n\tNL80211_ATTR_WIPHY_TX_POWER_LEVEL                       = C.NL80211_ATTR_WIPHY_TX_POWER_LEVEL\n\tNL80211_ATTR_WIPHY_TX_POWER_SETTING                     = C.NL80211_ATTR_WIPHY_TX_POWER_SETTING\n\tNL80211_ATTR_WIPHY_TXQ_PARAMS                           = C.NL80211_ATTR_WIPHY_TXQ_PARAMS\n\tNL80211_ATTR_WOWLAN_TRIGGERS                            = C.NL80211_ATTR_WOWLAN_TRIGGERS\n\tNL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED                  = C.NL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED\n\tNL80211_ATTR_WPA_VERSIONS                               = C.NL80211_ATTR_WPA_VERSIONS\n\tNL80211_AUTHTYPE_AUTOMATIC                              = C.NL80211_AUTHTYPE_AUTOMATIC\n\tNL80211_AUTHTYPE_FILS_PK                                = C.NL80211_AUTHTYPE_FILS_PK\n\tNL80211_AUTHTYPE_FILS_SK                                = C.NL80211_AUTHTYPE_FILS_SK\n\tNL80211_AUTHTYPE_FILS_SK_PFS                            = C.NL80211_AUTHTYPE_FILS_SK_PFS\n\tNL80211_AUTHTYPE_FT                                     = C.NL80211_AUTHTYPE_FT\n\tNL80211_AUTHTYPE_MAX                                    = C.NL80211_AUTHTYPE_MAX\n\tNL80211_AUTHTYPE_NETWORK_EAP                            = C.NL80211_AUTHTYPE_NETWORK_EAP\n\tNL80211_AUTHTYPE_OPEN_SYSTEM                            = C.NL80211_AUTHTYPE_OPEN_SYSTEM\n\tNL80211_AUTHTYPE_SAE                                    = C.NL80211_AUTHTYPE_SAE\n\tNL80211_AUTHTYPE_SHARED_KEY                             = C.NL80211_AUTHTYPE_SHARED_KEY\n\tNL80211_BAND_2GHZ                                       = C.NL80211_BAND_2GHZ\n\tNL80211_BAND_5GHZ                                       = C.NL80211_BAND_5GHZ\n\tNL80211_BAND_60GHZ                                      = C.NL80211_BAND_60GHZ\n\tNL80211_BAND_6GHZ                                       = C.NL80211_BAND_6GHZ\n\tNL80211_BAND_ATTR_EDMG_BW_CONFIG                        = C.NL80211_BAND_ATTR_EDMG_BW_CONFIG\n\tNL80211_BAND_ATTR_EDMG_CHANNELS                         = C.NL80211_BAND_ATTR_EDMG_CHANNELS\n\tNL80211_BAND_ATTR_FREQS                                 = C.NL80211_BAND_ATTR_FREQS\n\tNL80211_BAND_ATTR_HT_AMPDU_DENSITY                      = C.NL80211_BAND_ATTR_HT_AMPDU_DENSITY\n\tNL80211_BAND_ATTR_HT_AMPDU_FACTOR                       = C.NL80211_BAND_ATTR_HT_AMPDU_FACTOR\n\tNL80211_BAND_ATTR_HT_CAPA                               = C.NL80211_BAND_ATTR_HT_CAPA\n\tNL80211_BAND_ATTR_HT_MCS_SET                            = C.NL80211_BAND_ATTR_HT_MCS_SET\n\tNL80211_BAND_ATTR_IFTYPE_DATA                           = C.NL80211_BAND_ATTR_IFTYPE_DATA\n\tNL80211_BAND_ATTR_MAX                                   = C.NL80211_BAND_ATTR_MAX\n\tNL80211_BAND_ATTR_RATES                                 = C.NL80211_BAND_ATTR_RATES\n\tNL80211_BAND_ATTR_VHT_CAPA                              = C.NL80211_BAND_ATTR_VHT_CAPA\n\tNL80211_BAND_ATTR_VHT_MCS_SET                           = C.NL80211_BAND_ATTR_VHT_MCS_SET\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = C.NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = C.NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = C.NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = C.NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE\n\tNL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = C.NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = C.NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = C.NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY                     = C.NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = C.NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE\n\tNL80211_BAND_IFTYPE_ATTR_IFTYPES                        = C.NL80211_BAND_IFTYPE_ATTR_IFTYPES\n\tNL80211_BAND_IFTYPE_ATTR_MAX                            = C.NL80211_BAND_IFTYPE_ATTR_MAX\n\tNL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = C.NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS\n\tNL80211_BAND_LC                                         = C.NL80211_BAND_LC\n\tNL80211_BAND_S1GHZ                                      = C.NL80211_BAND_S1GHZ\n\tNL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = C.NL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE\n\tNL80211_BITRATE_ATTR_MAX                                = C.NL80211_BITRATE_ATTR_MAX\n\tNL80211_BITRATE_ATTR_RATE                               = C.NL80211_BITRATE_ATTR_RATE\n\tNL80211_BSS_BEACON_IES                                  = C.NL80211_BSS_BEACON_IES\n\tNL80211_BSS_BEACON_INTERVAL                             = C.NL80211_BSS_BEACON_INTERVAL\n\tNL80211_BSS_BEACON_TSF                                  = C.NL80211_BSS_BEACON_TSF\n\tNL80211_BSS_BSSID                                       = C.NL80211_BSS_BSSID\n\tNL80211_BSS_CAPABILITY                                  = C.NL80211_BSS_CAPABILITY\n\tNL80211_BSS_CHAIN_SIGNAL                                = C.NL80211_BSS_CHAIN_SIGNAL\n\tNL80211_BSS_CHAN_WIDTH_10                               = C.NL80211_BSS_CHAN_WIDTH_10\n\tNL80211_BSS_CHAN_WIDTH_1                                = C.NL80211_BSS_CHAN_WIDTH_1\n\tNL80211_BSS_CHAN_WIDTH_20                               = C.NL80211_BSS_CHAN_WIDTH_20\n\tNL80211_BSS_CHAN_WIDTH_2                                = C.NL80211_BSS_CHAN_WIDTH_2\n\tNL80211_BSS_CHAN_WIDTH_5                                = C.NL80211_BSS_CHAN_WIDTH_5\n\tNL80211_BSS_CHAN_WIDTH                                  = C.NL80211_BSS_CHAN_WIDTH\n\tNL80211_BSS_FREQUENCY                                   = C.NL80211_BSS_FREQUENCY\n\tNL80211_BSS_FREQUENCY_OFFSET                            = C.NL80211_BSS_FREQUENCY_OFFSET\n\tNL80211_BSS_INFORMATION_ELEMENTS                        = C.NL80211_BSS_INFORMATION_ELEMENTS\n\tNL80211_BSS_LAST_SEEN_BOOTTIME                          = C.NL80211_BSS_LAST_SEEN_BOOTTIME\n\tNL80211_BSS_MAX                                         = C.NL80211_BSS_MAX\n\tNL80211_BSS_MLD_ADDR                                    = C.NL80211_BSS_MLD_ADDR\n\tNL80211_BSS_MLO_LINK_ID                                 = C.NL80211_BSS_MLO_LINK_ID\n\tNL80211_BSS_PAD                                         = C.NL80211_BSS_PAD\n\tNL80211_BSS_PARENT_BSSID                                = C.NL80211_BSS_PARENT_BSSID\n\tNL80211_BSS_PARENT_TSF                                  = C.NL80211_BSS_PARENT_TSF\n\tNL80211_BSS_PRESP_DATA                                  = C.NL80211_BSS_PRESP_DATA\n\tNL80211_BSS_SEEN_MS_AGO                                 = C.NL80211_BSS_SEEN_MS_AGO\n\tNL80211_BSS_SELECT_ATTR_BAND_PREF                       = C.NL80211_BSS_SELECT_ATTR_BAND_PREF\n\tNL80211_BSS_SELECT_ATTR_MAX                             = C.NL80211_BSS_SELECT_ATTR_MAX\n\tNL80211_BSS_SELECT_ATTR_RSSI_ADJUST                     = C.NL80211_BSS_SELECT_ATTR_RSSI_ADJUST\n\tNL80211_BSS_SELECT_ATTR_RSSI                            = C.NL80211_BSS_SELECT_ATTR_RSSI\n\tNL80211_BSS_SIGNAL_MBM                                  = C.NL80211_BSS_SIGNAL_MBM\n\tNL80211_BSS_SIGNAL_UNSPEC                               = C.NL80211_BSS_SIGNAL_UNSPEC\n\tNL80211_BSS_STATUS_ASSOCIATED                           = C.NL80211_BSS_STATUS_ASSOCIATED\n\tNL80211_BSS_STATUS_AUTHENTICATED                        = C.NL80211_BSS_STATUS_AUTHENTICATED\n\tNL80211_BSS_STATUS                                      = C.NL80211_BSS_STATUS\n\tNL80211_BSS_STATUS_IBSS_JOINED                          = C.NL80211_BSS_STATUS_IBSS_JOINED\n\tNL80211_BSS_TSF                                         = C.NL80211_BSS_TSF\n\tNL80211_CHAN_HT20                                       = C.NL80211_CHAN_HT20\n\tNL80211_CHAN_HT40MINUS                                  = C.NL80211_CHAN_HT40MINUS\n\tNL80211_CHAN_HT40PLUS                                   = C.NL80211_CHAN_HT40PLUS\n\tNL80211_CHAN_NO_HT                                      = C.NL80211_CHAN_NO_HT\n\tNL80211_CHAN_WIDTH_10                                   = C.NL80211_CHAN_WIDTH_10\n\tNL80211_CHAN_WIDTH_160                                  = C.NL80211_CHAN_WIDTH_160\n\tNL80211_CHAN_WIDTH_16                                   = C.NL80211_CHAN_WIDTH_16\n\tNL80211_CHAN_WIDTH_1                                    = C.NL80211_CHAN_WIDTH_1\n\tNL80211_CHAN_WIDTH_20                                   = C.NL80211_CHAN_WIDTH_20\n\tNL80211_CHAN_WIDTH_20_NOHT                              = C.NL80211_CHAN_WIDTH_20_NOHT\n\tNL80211_CHAN_WIDTH_2                                    = C.NL80211_CHAN_WIDTH_2\n\tNL80211_CHAN_WIDTH_320                                  = C.NL80211_CHAN_WIDTH_320\n\tNL80211_CHAN_WIDTH_40                                   = C.NL80211_CHAN_WIDTH_40\n\tNL80211_CHAN_WIDTH_4                                    = C.NL80211_CHAN_WIDTH_4\n\tNL80211_CHAN_WIDTH_5                                    = C.NL80211_CHAN_WIDTH_5\n\tNL80211_CHAN_WIDTH_80                                   = C.NL80211_CHAN_WIDTH_80\n\tNL80211_CHAN_WIDTH_80P80                                = C.NL80211_CHAN_WIDTH_80P80\n\tNL80211_CHAN_WIDTH_8                                    = C.NL80211_CHAN_WIDTH_8\n\tNL80211_CMD_ABORT_SCAN                                  = C.NL80211_CMD_ABORT_SCAN\n\tNL80211_CMD_ACTION                                      = C.NL80211_CMD_ACTION\n\tNL80211_CMD_ACTION_TX_STATUS                            = C.NL80211_CMD_ACTION_TX_STATUS\n\tNL80211_CMD_ADD_LINK                                    = C.NL80211_CMD_ADD_LINK\n\tNL80211_CMD_ADD_LINK_STA                                = C.NL80211_CMD_ADD_LINK_STA\n\tNL80211_CMD_ADD_NAN_FUNCTION                            = C.NL80211_CMD_ADD_NAN_FUNCTION\n\tNL80211_CMD_ADD_TX_TS                                   = C.NL80211_CMD_ADD_TX_TS\n\tNL80211_CMD_ASSOC_COMEBACK                              = C.NL80211_CMD_ASSOC_COMEBACK\n\tNL80211_CMD_ASSOCIATE                                   = C.NL80211_CMD_ASSOCIATE\n\tNL80211_CMD_AUTHENTICATE                                = C.NL80211_CMD_AUTHENTICATE\n\tNL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = C.NL80211_CMD_CANCEL_REMAIN_ON_CHANNEL\n\tNL80211_CMD_CHANGE_NAN_CONFIG                           = C.NL80211_CMD_CHANGE_NAN_CONFIG\n\tNL80211_CMD_CHANNEL_SWITCH                              = C.NL80211_CMD_CHANNEL_SWITCH\n\tNL80211_CMD_CH_SWITCH_NOTIFY                            = C.NL80211_CMD_CH_SWITCH_NOTIFY\n\tNL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = C.NL80211_CMD_CH_SWITCH_STARTED_NOTIFY\n\tNL80211_CMD_COLOR_CHANGE_ABORTED                        = C.NL80211_CMD_COLOR_CHANGE_ABORTED\n\tNL80211_CMD_COLOR_CHANGE_COMPLETED                      = C.NL80211_CMD_COLOR_CHANGE_COMPLETED\n\tNL80211_CMD_COLOR_CHANGE_REQUEST                        = C.NL80211_CMD_COLOR_CHANGE_REQUEST\n\tNL80211_CMD_COLOR_CHANGE_STARTED                        = C.NL80211_CMD_COLOR_CHANGE_STARTED\n\tNL80211_CMD_CONNECT                                     = C.NL80211_CMD_CONNECT\n\tNL80211_CMD_CONN_FAILED                                 = C.NL80211_CMD_CONN_FAILED\n\tNL80211_CMD_CONTROL_PORT_FRAME                          = C.NL80211_CMD_CONTROL_PORT_FRAME\n\tNL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS                = C.NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS\n\tNL80211_CMD_CRIT_PROTOCOL_START                         = C.NL80211_CMD_CRIT_PROTOCOL_START\n\tNL80211_CMD_CRIT_PROTOCOL_STOP                          = C.NL80211_CMD_CRIT_PROTOCOL_STOP\n\tNL80211_CMD_DEAUTHENTICATE                              = C.NL80211_CMD_DEAUTHENTICATE\n\tNL80211_CMD_DEL_BEACON                                  = C.NL80211_CMD_DEL_BEACON\n\tNL80211_CMD_DEL_INTERFACE                               = C.NL80211_CMD_DEL_INTERFACE\n\tNL80211_CMD_DEL_KEY                                     = C.NL80211_CMD_DEL_KEY\n\tNL80211_CMD_DEL_MPATH                                   = C.NL80211_CMD_DEL_MPATH\n\tNL80211_CMD_DEL_NAN_FUNCTION                            = C.NL80211_CMD_DEL_NAN_FUNCTION\n\tNL80211_CMD_DEL_PMK                                     = C.NL80211_CMD_DEL_PMK\n\tNL80211_CMD_DEL_PMKSA                                   = C.NL80211_CMD_DEL_PMKSA\n\tNL80211_CMD_DEL_STATION                                 = C.NL80211_CMD_DEL_STATION\n\tNL80211_CMD_DEL_TX_TS                                   = C.NL80211_CMD_DEL_TX_TS\n\tNL80211_CMD_DEL_WIPHY                                   = C.NL80211_CMD_DEL_WIPHY\n\tNL80211_CMD_DISASSOCIATE                                = C.NL80211_CMD_DISASSOCIATE\n\tNL80211_CMD_DISCONNECT                                  = C.NL80211_CMD_DISCONNECT\n\tNL80211_CMD_EXTERNAL_AUTH                               = C.NL80211_CMD_EXTERNAL_AUTH\n\tNL80211_CMD_FLUSH_PMKSA                                 = C.NL80211_CMD_FLUSH_PMKSA\n\tNL80211_CMD_FRAME                                       = C.NL80211_CMD_FRAME\n\tNL80211_CMD_FRAME_TX_STATUS                             = C.NL80211_CMD_FRAME_TX_STATUS\n\tNL80211_CMD_FRAME_WAIT_CANCEL                           = C.NL80211_CMD_FRAME_WAIT_CANCEL\n\tNL80211_CMD_FT_EVENT                                    = C.NL80211_CMD_FT_EVENT\n\tNL80211_CMD_GET_BEACON                                  = C.NL80211_CMD_GET_BEACON\n\tNL80211_CMD_GET_COALESCE                                = C.NL80211_CMD_GET_COALESCE\n\tNL80211_CMD_GET_FTM_RESPONDER_STATS                     = C.NL80211_CMD_GET_FTM_RESPONDER_STATS\n\tNL80211_CMD_GET_INTERFACE                               = C.NL80211_CMD_GET_INTERFACE\n\tNL80211_CMD_GET_KEY                                     = C.NL80211_CMD_GET_KEY\n\tNL80211_CMD_GET_MESH_CONFIG                             = C.NL80211_CMD_GET_MESH_CONFIG\n\tNL80211_CMD_GET_MESH_PARAMS                             = C.NL80211_CMD_GET_MESH_PARAMS\n\tNL80211_CMD_GET_MPATH                                   = C.NL80211_CMD_GET_MPATH\n\tNL80211_CMD_GET_MPP                                     = C.NL80211_CMD_GET_MPP\n\tNL80211_CMD_GET_POWER_SAVE                              = C.NL80211_CMD_GET_POWER_SAVE\n\tNL80211_CMD_GET_PROTOCOL_FEATURES                       = C.NL80211_CMD_GET_PROTOCOL_FEATURES\n\tNL80211_CMD_GET_REG                                     = C.NL80211_CMD_GET_REG\n\tNL80211_CMD_GET_SCAN                                    = C.NL80211_CMD_GET_SCAN\n\tNL80211_CMD_GET_STATION                                 = C.NL80211_CMD_GET_STATION\n\tNL80211_CMD_GET_SURVEY                                  = C.NL80211_CMD_GET_SURVEY\n\tNL80211_CMD_GET_WIPHY                                   = C.NL80211_CMD_GET_WIPHY\n\tNL80211_CMD_GET_WOWLAN                                  = C.NL80211_CMD_GET_WOWLAN\n\tNL80211_CMD_JOIN_IBSS                                   = C.NL80211_CMD_JOIN_IBSS\n\tNL80211_CMD_JOIN_MESH                                   = C.NL80211_CMD_JOIN_MESH\n\tNL80211_CMD_JOIN_OCB                                    = C.NL80211_CMD_JOIN_OCB\n\tNL80211_CMD_LEAVE_IBSS                                  = C.NL80211_CMD_LEAVE_IBSS\n\tNL80211_CMD_LEAVE_MESH                                  = C.NL80211_CMD_LEAVE_MESH\n\tNL80211_CMD_LEAVE_OCB                                   = C.NL80211_CMD_LEAVE_OCB\n\tNL80211_CMD_MAX                                         = C.NL80211_CMD_MAX\n\tNL80211_CMD_MICHAEL_MIC_FAILURE                         = C.NL80211_CMD_MICHAEL_MIC_FAILURE\n\tNL80211_CMD_MODIFY_LINK_STA                             = C.NL80211_CMD_MODIFY_LINK_STA\n\tNL80211_CMD_NAN_MATCH                                   = C.NL80211_CMD_NAN_MATCH\n\tNL80211_CMD_NEW_BEACON                                  = C.NL80211_CMD_NEW_BEACON\n\tNL80211_CMD_NEW_INTERFACE                               = C.NL80211_CMD_NEW_INTERFACE\n\tNL80211_CMD_NEW_KEY                                     = C.NL80211_CMD_NEW_KEY\n\tNL80211_CMD_NEW_MPATH                                   = C.NL80211_CMD_NEW_MPATH\n\tNL80211_CMD_NEW_PEER_CANDIDATE                          = C.NL80211_CMD_NEW_PEER_CANDIDATE\n\tNL80211_CMD_NEW_SCAN_RESULTS                            = C.NL80211_CMD_NEW_SCAN_RESULTS\n\tNL80211_CMD_NEW_STATION                                 = C.NL80211_CMD_NEW_STATION\n\tNL80211_CMD_NEW_SURVEY_RESULTS                          = C.NL80211_CMD_NEW_SURVEY_RESULTS\n\tNL80211_CMD_NEW_WIPHY                                   = C.NL80211_CMD_NEW_WIPHY\n\tNL80211_CMD_NOTIFY_CQM                                  = C.NL80211_CMD_NOTIFY_CQM\n\tNL80211_CMD_NOTIFY_RADAR                                = C.NL80211_CMD_NOTIFY_RADAR\n\tNL80211_CMD_OBSS_COLOR_COLLISION                        = C.NL80211_CMD_OBSS_COLOR_COLLISION\n\tNL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = C.NL80211_CMD_PEER_MEASUREMENT_COMPLETE\n\tNL80211_CMD_PEER_MEASUREMENT_RESULT                     = C.NL80211_CMD_PEER_MEASUREMENT_RESULT\n\tNL80211_CMD_PEER_MEASUREMENT_START                      = C.NL80211_CMD_PEER_MEASUREMENT_START\n\tNL80211_CMD_PMKSA_CANDIDATE                             = C.NL80211_CMD_PMKSA_CANDIDATE\n\tNL80211_CMD_PORT_AUTHORIZED                             = C.NL80211_CMD_PORT_AUTHORIZED\n\tNL80211_CMD_PROBE_CLIENT                                = C.NL80211_CMD_PROBE_CLIENT\n\tNL80211_CMD_PROBE_MESH_LINK                             = C.NL80211_CMD_PROBE_MESH_LINK\n\tNL80211_CMD_RADAR_DETECT                                = C.NL80211_CMD_RADAR_DETECT\n\tNL80211_CMD_REG_BEACON_HINT                             = C.NL80211_CMD_REG_BEACON_HINT\n\tNL80211_CMD_REG_CHANGE                                  = C.NL80211_CMD_REG_CHANGE\n\tNL80211_CMD_REGISTER_ACTION                             = C.NL80211_CMD_REGISTER_ACTION\n\tNL80211_CMD_REGISTER_BEACONS                            = C.NL80211_CMD_REGISTER_BEACONS\n\tNL80211_CMD_REGISTER_FRAME                              = C.NL80211_CMD_REGISTER_FRAME\n\tNL80211_CMD_RELOAD_REGDB                                = C.NL80211_CMD_RELOAD_REGDB\n\tNL80211_CMD_REMAIN_ON_CHANNEL                           = C.NL80211_CMD_REMAIN_ON_CHANNEL\n\tNL80211_CMD_REMOVE_LINK                                 = C.NL80211_CMD_REMOVE_LINK\n\tNL80211_CMD_REMOVE_LINK_STA                             = C.NL80211_CMD_REMOVE_LINK_STA\n\tNL80211_CMD_REQ_SET_REG                                 = C.NL80211_CMD_REQ_SET_REG\n\tNL80211_CMD_ROAM                                        = C.NL80211_CMD_ROAM\n\tNL80211_CMD_SCAN_ABORTED                                = C.NL80211_CMD_SCAN_ABORTED\n\tNL80211_CMD_SCHED_SCAN_RESULTS                          = C.NL80211_CMD_SCHED_SCAN_RESULTS\n\tNL80211_CMD_SCHED_SCAN_STOPPED                          = C.NL80211_CMD_SCHED_SCAN_STOPPED\n\tNL80211_CMD_SET_BEACON                                  = C.NL80211_CMD_SET_BEACON\n\tNL80211_CMD_SET_BSS                                     = C.NL80211_CMD_SET_BSS\n\tNL80211_CMD_SET_CHANNEL                                 = C.NL80211_CMD_SET_CHANNEL\n\tNL80211_CMD_SET_COALESCE                                = C.NL80211_CMD_SET_COALESCE\n\tNL80211_CMD_SET_CQM                                     = C.NL80211_CMD_SET_CQM\n\tNL80211_CMD_SET_FILS_AAD                                = C.NL80211_CMD_SET_FILS_AAD\n\tNL80211_CMD_SET_INTERFACE                               = C.NL80211_CMD_SET_INTERFACE\n\tNL80211_CMD_SET_KEY                                     = C.NL80211_CMD_SET_KEY\n\tNL80211_CMD_SET_MAC_ACL                                 = C.NL80211_CMD_SET_MAC_ACL\n\tNL80211_CMD_SET_MCAST_RATE                              = C.NL80211_CMD_SET_MCAST_RATE\n\tNL80211_CMD_SET_MESH_CONFIG                             = C.NL80211_CMD_SET_MESH_CONFIG\n\tNL80211_CMD_SET_MESH_PARAMS                             = C.NL80211_CMD_SET_MESH_PARAMS\n\tNL80211_CMD_SET_MGMT_EXTRA_IE                           = C.NL80211_CMD_SET_MGMT_EXTRA_IE\n\tNL80211_CMD_SET_MPATH                                   = C.NL80211_CMD_SET_MPATH\n\tNL80211_CMD_SET_MULTICAST_TO_UNICAST                    = C.NL80211_CMD_SET_MULTICAST_TO_UNICAST\n\tNL80211_CMD_SET_NOACK_MAP                               = C.NL80211_CMD_SET_NOACK_MAP\n\tNL80211_CMD_SET_PMK                                     = C.NL80211_CMD_SET_PMK\n\tNL80211_CMD_SET_PMKSA                                   = C.NL80211_CMD_SET_PMKSA\n\tNL80211_CMD_SET_POWER_SAVE                              = C.NL80211_CMD_SET_POWER_SAVE\n\tNL80211_CMD_SET_QOS_MAP                                 = C.NL80211_CMD_SET_QOS_MAP\n\tNL80211_CMD_SET_REG                                     = C.NL80211_CMD_SET_REG\n\tNL80211_CMD_SET_REKEY_OFFLOAD                           = C.NL80211_CMD_SET_REKEY_OFFLOAD\n\tNL80211_CMD_SET_SAR_SPECS                               = C.NL80211_CMD_SET_SAR_SPECS\n\tNL80211_CMD_SET_STATION                                 = C.NL80211_CMD_SET_STATION\n\tNL80211_CMD_SET_TID_CONFIG                              = C.NL80211_CMD_SET_TID_CONFIG\n\tNL80211_CMD_SET_TX_BITRATE_MASK                         = C.NL80211_CMD_SET_TX_BITRATE_MASK\n\tNL80211_CMD_SET_WDS_PEER                                = C.NL80211_CMD_SET_WDS_PEER\n\tNL80211_CMD_SET_WIPHY                                   = C.NL80211_CMD_SET_WIPHY\n\tNL80211_CMD_SET_WIPHY_NETNS                             = C.NL80211_CMD_SET_WIPHY_NETNS\n\tNL80211_CMD_SET_WOWLAN                                  = C.NL80211_CMD_SET_WOWLAN\n\tNL80211_CMD_STA_OPMODE_CHANGED                          = C.NL80211_CMD_STA_OPMODE_CHANGED\n\tNL80211_CMD_START_AP                                    = C.NL80211_CMD_START_AP\n\tNL80211_CMD_START_NAN                                   = C.NL80211_CMD_START_NAN\n\tNL80211_CMD_START_P2P_DEVICE                            = C.NL80211_CMD_START_P2P_DEVICE\n\tNL80211_CMD_START_SCHED_SCAN                            = C.NL80211_CMD_START_SCHED_SCAN\n\tNL80211_CMD_STOP_AP                                     = C.NL80211_CMD_STOP_AP\n\tNL80211_CMD_STOP_NAN                                    = C.NL80211_CMD_STOP_NAN\n\tNL80211_CMD_STOP_P2P_DEVICE                             = C.NL80211_CMD_STOP_P2P_DEVICE\n\tNL80211_CMD_STOP_SCHED_SCAN                             = C.NL80211_CMD_STOP_SCHED_SCAN\n\tNL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH                  = C.NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH\n\tNL80211_CMD_TDLS_CHANNEL_SWITCH                         = C.NL80211_CMD_TDLS_CHANNEL_SWITCH\n\tNL80211_CMD_TDLS_MGMT                                   = C.NL80211_CMD_TDLS_MGMT\n\tNL80211_CMD_TDLS_OPER                                   = C.NL80211_CMD_TDLS_OPER\n\tNL80211_CMD_TESTMODE                                    = C.NL80211_CMD_TESTMODE\n\tNL80211_CMD_TRIGGER_SCAN                                = C.NL80211_CMD_TRIGGER_SCAN\n\tNL80211_CMD_UNEXPECTED_4ADDR_FRAME                      = C.NL80211_CMD_UNEXPECTED_4ADDR_FRAME\n\tNL80211_CMD_UNEXPECTED_FRAME                            = C.NL80211_CMD_UNEXPECTED_FRAME\n\tNL80211_CMD_UNPROT_BEACON                               = C.NL80211_CMD_UNPROT_BEACON\n\tNL80211_CMD_UNPROT_DEAUTHENTICATE                       = C.NL80211_CMD_UNPROT_DEAUTHENTICATE\n\tNL80211_CMD_UNPROT_DISASSOCIATE                         = C.NL80211_CMD_UNPROT_DISASSOCIATE\n\tNL80211_CMD_UNSPEC                                      = C.NL80211_CMD_UNSPEC\n\tNL80211_CMD_UPDATE_CONNECT_PARAMS                       = C.NL80211_CMD_UPDATE_CONNECT_PARAMS\n\tNL80211_CMD_UPDATE_FT_IES                               = C.NL80211_CMD_UPDATE_FT_IES\n\tNL80211_CMD_UPDATE_OWE_INFO                             = C.NL80211_CMD_UPDATE_OWE_INFO\n\tNL80211_CMD_VENDOR                                      = C.NL80211_CMD_VENDOR\n\tNL80211_CMD_WIPHY_REG_CHANGE                            = C.NL80211_CMD_WIPHY_REG_CHANGE\n\tNL80211_COALESCE_CONDITION_MATCH                        = C.NL80211_COALESCE_CONDITION_MATCH\n\tNL80211_COALESCE_CONDITION_NO_MATCH                     = C.NL80211_COALESCE_CONDITION_NO_MATCH\n\tNL80211_CONN_FAIL_BLOCKED_CLIENT                        = C.NL80211_CONN_FAIL_BLOCKED_CLIENT\n\tNL80211_CONN_FAIL_MAX_CLIENTS                           = C.NL80211_CONN_FAIL_MAX_CLIENTS\n\tNL80211_CQM_RSSI_BEACON_LOSS_EVENT                      = C.NL80211_CQM_RSSI_BEACON_LOSS_EVENT\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH                   = C.NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_LOW                    = C.NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW\n\tNL80211_CQM_TXE_MAX_INTVL                               = C.NL80211_CQM_TXE_MAX_INTVL\n\tNL80211_CRIT_PROTO_APIPA                                = C.NL80211_CRIT_PROTO_APIPA\n\tNL80211_CRIT_PROTO_DHCP                                 = C.NL80211_CRIT_PROTO_DHCP\n\tNL80211_CRIT_PROTO_EAPOL                                = C.NL80211_CRIT_PROTO_EAPOL\n\tNL80211_CRIT_PROTO_MAX_DURATION                         = C.NL80211_CRIT_PROTO_MAX_DURATION\n\tNL80211_CRIT_PROTO_UNSPEC                               = C.NL80211_CRIT_PROTO_UNSPEC\n\tNL80211_DFS_AVAILABLE                                   = C.NL80211_DFS_AVAILABLE\n\tNL80211_DFS_ETSI                                        = C.NL80211_DFS_ETSI\n\tNL80211_DFS_FCC                                         = C.NL80211_DFS_FCC\n\tNL80211_DFS_JP                                          = C.NL80211_DFS_JP\n\tNL80211_DFS_UNAVAILABLE                                 = C.NL80211_DFS_UNAVAILABLE\n\tNL80211_DFS_UNSET                                       = C.NL80211_DFS_UNSET\n\tNL80211_DFS_USABLE                                      = C.NL80211_DFS_USABLE\n\tNL80211_EDMG_BW_CONFIG_MAX                              = C.NL80211_EDMG_BW_CONFIG_MAX\n\tNL80211_EDMG_BW_CONFIG_MIN                              = C.NL80211_EDMG_BW_CONFIG_MIN\n\tNL80211_EDMG_CHANNELS_MAX                               = C.NL80211_EDMG_CHANNELS_MAX\n\tNL80211_EDMG_CHANNELS_MIN                               = C.NL80211_EDMG_CHANNELS_MIN\n\tNL80211_EHT_MAX_CAPABILITY_LEN                          = C.NL80211_EHT_MAX_CAPABILITY_LEN\n\tNL80211_EHT_MIN_CAPABILITY_LEN                          = C.NL80211_EHT_MIN_CAPABILITY_LEN\n\tNL80211_EXTERNAL_AUTH_ABORT                             = C.NL80211_EXTERNAL_AUTH_ABORT\n\tNL80211_EXTERNAL_AUTH_START                             = C.NL80211_EXTERNAL_AUTH_START\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = C.NL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X               = C.NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK              = C.NL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK\n\tNL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP             = C.NL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP\n\tNL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT                  = C.NL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT\n\tNL80211_EXT_FEATURE_AIRTIME_FAIRNESS                    = C.NL80211_EXT_FEATURE_AIRTIME_FAIRNESS\n\tNL80211_EXT_FEATURE_AP_PMKSA_CACHING                    = C.NL80211_EXT_FEATURE_AP_PMKSA_CACHING\n\tNL80211_EXT_FEATURE_AQL                                 = C.NL80211_EXT_FEATURE_AQL\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT            = C.NL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION                   = C.NL80211_EXT_FEATURE_BEACON_PROTECTION\n\tNL80211_EXT_FEATURE_BEACON_RATE_HE                      = C.NL80211_EXT_FEATURE_BEACON_RATE_HE\n\tNL80211_EXT_FEATURE_BEACON_RATE_HT                      = C.NL80211_EXT_FEATURE_BEACON_RATE_HT\n\tNL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = C.NL80211_EXT_FEATURE_BEACON_RATE_LEGACY\n\tNL80211_EXT_FEATURE_BEACON_RATE_VHT                     = C.NL80211_EXT_FEATURE_BEACON_RATE_VHT\n\tNL80211_EXT_FEATURE_BSS_COLOR                           = C.NL80211_EXT_FEATURE_BSS_COLOR\n\tNL80211_EXT_FEATURE_BSS_PARENT_TSF                      = C.NL80211_EXT_FEATURE_BSS_PARENT_TSF\n\tNL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = C.NL80211_EXT_FEATURE_CAN_REPLACE_PTK0\n\tNL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = C.NL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211           = C.NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = C.NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS\n\tNL80211_EXT_FEATURE_CQM_RSSI_LIST                       = C.NL80211_EXT_FEATURE_CQM_RSSI_LIST\n\tNL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT             = C.NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT\n\tNL80211_EXT_FEATURE_DEL_IBSS_STA                        = C.NL80211_EXT_FEATURE_DEL_IBSS_STA\n\tNL80211_EXT_FEATURE_DFS_OFFLOAD                         = C.NL80211_EXT_FEATURE_DFS_OFFLOAD\n\tNL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = C.NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER\n\tNL80211_EXT_FEATURE_EXT_KEY_ID                          = C.NL80211_EXT_FEATURE_EXT_KEY_ID\n\tNL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = C.NL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD\n\tNL80211_EXT_FEATURE_FILS_DISCOVERY                      = C.NL80211_EXT_FEATURE_FILS_DISCOVERY\n\tNL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = C.NL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME\n\tNL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = C.NL80211_EXT_FEATURE_FILS_SK_OFFLOAD\n\tNL80211_EXT_FEATURE_FILS_STA                            = C.NL80211_EXT_FEATURE_FILS_STA\n\tNL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN                  = C.NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN\n\tNL80211_EXT_FEATURE_LOW_POWER_SCAN                      = C.NL80211_EXT_FEATURE_LOW_POWER_SCAN\n\tNL80211_EXT_FEATURE_LOW_SPAN_SCAN                       = C.NL80211_EXT_FEATURE_LOW_SPAN_SCAN\n\tNL80211_EXT_FEATURE_MFP_OPTIONAL                        = C.NL80211_EXT_FEATURE_MFP_OPTIONAL\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA                   = C.NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED         = C.NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED\n\tNL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS             = C.NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS\n\tNL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER                 = C.NL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = C.NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = C.NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE\n\tNL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = C.NL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION\n\tNL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = C.NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE\n\tNL80211_EXT_FEATURE_PROTECTED_TWT                       = C.NL80211_EXT_FEATURE_PROTECTED_TWT\n\tNL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = C.NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE\n\tNL80211_EXT_FEATURE_RADAR_BACKGROUND                    = C.NL80211_EXT_FEATURE_RADAR_BACKGROUND\n\tNL80211_EXT_FEATURE_RRM                                 = C.NL80211_EXT_FEATURE_RRM\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = C.NL80211_EXT_FEATURE_SAE_OFFLOAD_AP\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD                         = C.NL80211_EXT_FEATURE_SAE_OFFLOAD\n\tNL80211_EXT_FEATURE_SCAN_FREQ_KHZ                       = C.NL80211_EXT_FEATURE_SCAN_FREQ_KHZ\n\tNL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT               = C.NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT\n\tNL80211_EXT_FEATURE_SCAN_RANDOM_SN                      = C.NL80211_EXT_FEATURE_SCAN_RANDOM_SN\n\tNL80211_EXT_FEATURE_SCAN_START_TIME                     = C.NL80211_EXT_FEATURE_SCAN_START_TIME\n\tNL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = C.NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD\n\tNL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI            = C.NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI\n\tNL80211_EXT_FEATURE_SECURE_LTF                          = C.NL80211_EXT_FEATURE_SECURE_LTF\n\tNL80211_EXT_FEATURE_SECURE_RTT                          = C.NL80211_EXT_FEATURE_SECURE_RTT\n\tNL80211_EXT_FEATURE_SET_SCAN_DWELL                      = C.NL80211_EXT_FEATURE_SET_SCAN_DWELL\n\tNL80211_EXT_FEATURE_STA_TX_PWR                          = C.NL80211_EXT_FEATURE_STA_TX_PWR\n\tNL80211_EXT_FEATURE_TXQS                                = C.NL80211_EXT_FEATURE_TXQS\n\tNL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP              = C.NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP\n\tNL80211_EXT_FEATURE_VHT_IBSS                            = C.NL80211_EXT_FEATURE_VHT_IBSS\n\tNL80211_EXT_FEATURE_VLAN_OFFLOAD                        = C.NL80211_EXT_FEATURE_VLAN_OFFLOAD\n\tNL80211_FEATURE_ACKTO_ESTIMATION                        = C.NL80211_FEATURE_ACKTO_ESTIMATION\n\tNL80211_FEATURE_ACTIVE_MONITOR                          = C.NL80211_FEATURE_ACTIVE_MONITOR\n\tNL80211_FEATURE_ADVERTISE_CHAN_LIMITS                   = C.NL80211_FEATURE_ADVERTISE_CHAN_LIMITS\n\tNL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE               = C.NL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE\n\tNL80211_FEATURE_AP_SCAN                                 = C.NL80211_FEATURE_AP_SCAN\n\tNL80211_FEATURE_CELL_BASE_REG_HINTS                     = C.NL80211_FEATURE_CELL_BASE_REG_HINTS\n\tNL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES               = C.NL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES\n\tNL80211_FEATURE_DYNAMIC_SMPS                            = C.NL80211_FEATURE_DYNAMIC_SMPS\n\tNL80211_FEATURE_FULL_AP_CLIENT_STATE                    = C.NL80211_FEATURE_FULL_AP_CLIENT_STATE\n\tNL80211_FEATURE_HT_IBSS                                 = C.NL80211_FEATURE_HT_IBSS\n\tNL80211_FEATURE_INACTIVITY_TIMER                        = C.NL80211_FEATURE_INACTIVITY_TIMER\n\tNL80211_FEATURE_LOW_PRIORITY_SCAN                       = C.NL80211_FEATURE_LOW_PRIORITY_SCAN\n\tNL80211_FEATURE_MAC_ON_CREATE                           = C.NL80211_FEATURE_MAC_ON_CREATE\n\tNL80211_FEATURE_ND_RANDOM_MAC_ADDR                      = C.NL80211_FEATURE_ND_RANDOM_MAC_ADDR\n\tNL80211_FEATURE_NEED_OBSS_SCAN                          = C.NL80211_FEATURE_NEED_OBSS_SCAN\n\tNL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL                = C.NL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL\n\tNL80211_FEATURE_P2P_GO_CTWIN                            = C.NL80211_FEATURE_P2P_GO_CTWIN\n\tNL80211_FEATURE_P2P_GO_OPPPS                            = C.NL80211_FEATURE_P2P_GO_OPPPS\n\tNL80211_FEATURE_QUIET                                   = C.NL80211_FEATURE_QUIET\n\tNL80211_FEATURE_SAE                                     = C.NL80211_FEATURE_SAE\n\tNL80211_FEATURE_SCAN_FLUSH                              = C.NL80211_FEATURE_SCAN_FLUSH\n\tNL80211_FEATURE_SCAN_RANDOM_MAC_ADDR                    = C.NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR\n\tNL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR              = C.NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR\n\tNL80211_FEATURE_SK_TX_STATUS                            = C.NL80211_FEATURE_SK_TX_STATUS\n\tNL80211_FEATURE_STATIC_SMPS                             = C.NL80211_FEATURE_STATIC_SMPS\n\tNL80211_FEATURE_SUPPORTS_WMM_ADMISSION                  = C.NL80211_FEATURE_SUPPORTS_WMM_ADMISSION\n\tNL80211_FEATURE_TDLS_CHANNEL_SWITCH                     = C.NL80211_FEATURE_TDLS_CHANNEL_SWITCH\n\tNL80211_FEATURE_TX_POWER_INSERTION                      = C.NL80211_FEATURE_TX_POWER_INSERTION\n\tNL80211_FEATURE_USERSPACE_MPM                           = C.NL80211_FEATURE_USERSPACE_MPM\n\tNL80211_FEATURE_VIF_TXPOWER                             = C.NL80211_FEATURE_VIF_TXPOWER\n\tNL80211_FEATURE_WFA_TPC_IE_IN_PROBES                    = C.NL80211_FEATURE_WFA_TPC_IE_IN_PROBES\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MAX                     = C.NL80211_FILS_DISCOVERY_ATTR_INT_MAX\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MIN                     = C.NL80211_FILS_DISCOVERY_ATTR_INT_MIN\n\tNL80211_FILS_DISCOVERY_ATTR_MAX                         = C.NL80211_FILS_DISCOVERY_ATTR_MAX\n\tNL80211_FILS_DISCOVERY_ATTR_TMPL                        = C.NL80211_FILS_DISCOVERY_ATTR_TMPL\n\tNL80211_FILS_DISCOVERY_TMPL_MIN_LEN                     = C.NL80211_FILS_DISCOVERY_TMPL_MIN_LEN\n\tNL80211_FREQUENCY_ATTR_16MHZ                            = C.NL80211_FREQUENCY_ATTR_16MHZ\n\tNL80211_FREQUENCY_ATTR_1MHZ                             = C.NL80211_FREQUENCY_ATTR_1MHZ\n\tNL80211_FREQUENCY_ATTR_2MHZ                             = C.NL80211_FREQUENCY_ATTR_2MHZ\n\tNL80211_FREQUENCY_ATTR_4MHZ                             = C.NL80211_FREQUENCY_ATTR_4MHZ\n\tNL80211_FREQUENCY_ATTR_8MHZ                             = C.NL80211_FREQUENCY_ATTR_8MHZ\n\tNL80211_FREQUENCY_ATTR_DFS_CAC_TIME                     = C.NL80211_FREQUENCY_ATTR_DFS_CAC_TIME\n\tNL80211_FREQUENCY_ATTR_DFS_STATE                        = C.NL80211_FREQUENCY_ATTR_DFS_STATE\n\tNL80211_FREQUENCY_ATTR_DFS_TIME                         = C.NL80211_FREQUENCY_ATTR_DFS_TIME\n\tNL80211_FREQUENCY_ATTR_DISABLED                         = C.NL80211_FREQUENCY_ATTR_DISABLED\n\tNL80211_FREQUENCY_ATTR_FREQ                             = C.NL80211_FREQUENCY_ATTR_FREQ\n\tNL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = C.NL80211_FREQUENCY_ATTR_GO_CONCURRENT\n\tNL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = C.NL80211_FREQUENCY_ATTR_INDOOR_ONLY\n\tNL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = C.NL80211_FREQUENCY_ATTR_IR_CONCURRENT\n\tNL80211_FREQUENCY_ATTR_MAX                              = C.NL80211_FREQUENCY_ATTR_MAX\n\tNL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = C.NL80211_FREQUENCY_ATTR_MAX_TX_POWER\n\tNL80211_FREQUENCY_ATTR_NO_10MHZ                         = C.NL80211_FREQUENCY_ATTR_NO_10MHZ\n\tNL80211_FREQUENCY_ATTR_NO_160MHZ                        = C.NL80211_FREQUENCY_ATTR_NO_160MHZ\n\tNL80211_FREQUENCY_ATTR_NO_20MHZ                         = C.NL80211_FREQUENCY_ATTR_NO_20MHZ\n\tNL80211_FREQUENCY_ATTR_NO_320MHZ                        = C.NL80211_FREQUENCY_ATTR_NO_320MHZ\n\tNL80211_FREQUENCY_ATTR_NO_80MHZ                         = C.NL80211_FREQUENCY_ATTR_NO_80MHZ\n\tNL80211_FREQUENCY_ATTR_NO_EHT                           = C.NL80211_FREQUENCY_ATTR_NO_EHT\n\tNL80211_FREQUENCY_ATTR_NO_HE                            = C.NL80211_FREQUENCY_ATTR_NO_HE\n\tNL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = C.NL80211_FREQUENCY_ATTR_NO_HT40_MINUS\n\tNL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = C.NL80211_FREQUENCY_ATTR_NO_HT40_PLUS\n\tNL80211_FREQUENCY_ATTR_NO_IBSS                          = C.NL80211_FREQUENCY_ATTR_NO_IBSS\n\tNL80211_FREQUENCY_ATTR_NO_IR                            = C.NL80211_FREQUENCY_ATTR_NO_IR\n\tNL80211_FREQUENCY_ATTR_OFFSET                           = C.NL80211_FREQUENCY_ATTR_OFFSET\n\tNL80211_FREQUENCY_ATTR_PASSIVE_SCAN                     = C.NL80211_FREQUENCY_ATTR_PASSIVE_SCAN\n\tNL80211_FREQUENCY_ATTR_RADAR                            = C.NL80211_FREQUENCY_ATTR_RADAR\n\tNL80211_FREQUENCY_ATTR_WMM                              = C.NL80211_FREQUENCY_ATTR_WMM\n\tNL80211_FTM_RESP_ATTR_CIVICLOC                          = C.NL80211_FTM_RESP_ATTR_CIVICLOC\n\tNL80211_FTM_RESP_ATTR_ENABLED                           = C.NL80211_FTM_RESP_ATTR_ENABLED\n\tNL80211_FTM_RESP_ATTR_LCI                               = C.NL80211_FTM_RESP_ATTR_LCI\n\tNL80211_FTM_RESP_ATTR_MAX                               = C.NL80211_FTM_RESP_ATTR_MAX\n\tNL80211_FTM_STATS_ASAP_NUM                              = C.NL80211_FTM_STATS_ASAP_NUM\n\tNL80211_FTM_STATS_FAILED_NUM                            = C.NL80211_FTM_STATS_FAILED_NUM\n\tNL80211_FTM_STATS_MAX                                   = C.NL80211_FTM_STATS_MAX\n\tNL80211_FTM_STATS_NON_ASAP_NUM                          = C.NL80211_FTM_STATS_NON_ASAP_NUM\n\tNL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM            = C.NL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM\n\tNL80211_FTM_STATS_PAD                                   = C.NL80211_FTM_STATS_PAD\n\tNL80211_FTM_STATS_PARTIAL_NUM                           = C.NL80211_FTM_STATS_PARTIAL_NUM\n\tNL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM               = C.NL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM\n\tNL80211_FTM_STATS_SUCCESS_NUM                           = C.NL80211_FTM_STATS_SUCCESS_NUM\n\tNL80211_FTM_STATS_TOTAL_DURATION_MSEC                   = C.NL80211_FTM_STATS_TOTAL_DURATION_MSEC\n\tNL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM                  = C.NL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM\n\tNL80211_GENL_NAME                                       = C.NL80211_GENL_NAME\n\tNL80211_HE_BSS_COLOR_ATTR_COLOR                         = C.NL80211_HE_BSS_COLOR_ATTR_COLOR\n\tNL80211_HE_BSS_COLOR_ATTR_DISABLED                      = C.NL80211_HE_BSS_COLOR_ATTR_DISABLED\n\tNL80211_HE_BSS_COLOR_ATTR_MAX                           = C.NL80211_HE_BSS_COLOR_ATTR_MAX\n\tNL80211_HE_BSS_COLOR_ATTR_PARTIAL                       = C.NL80211_HE_BSS_COLOR_ATTR_PARTIAL\n\tNL80211_HE_MAX_CAPABILITY_LEN                           = C.NL80211_HE_MAX_CAPABILITY_LEN\n\tNL80211_HE_MIN_CAPABILITY_LEN                           = C.NL80211_HE_MIN_CAPABILITY_LEN\n\tNL80211_HE_NSS_MAX                                      = C.NL80211_HE_NSS_MAX\n\tNL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP                = C.NL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP\n\tNL80211_HE_OBSS_PD_ATTR_MAX                             = C.NL80211_HE_OBSS_PD_ATTR_MAX\n\tNL80211_HE_OBSS_PD_ATTR_MAX_OFFSET                      = C.NL80211_HE_OBSS_PD_ATTR_MAX_OFFSET\n\tNL80211_HE_OBSS_PD_ATTR_MIN_OFFSET                      = C.NL80211_HE_OBSS_PD_ATTR_MIN_OFFSET\n\tNL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET              = C.NL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET\n\tNL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP            = C.NL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP\n\tNL80211_HE_OBSS_PD_ATTR_SR_CTRL                         = C.NL80211_HE_OBSS_PD_ATTR_SR_CTRL\n\tNL80211_HIDDEN_SSID_NOT_IN_USE                          = C.NL80211_HIDDEN_SSID_NOT_IN_USE\n\tNL80211_HIDDEN_SSID_ZERO_CONTENTS                       = C.NL80211_HIDDEN_SSID_ZERO_CONTENTS\n\tNL80211_HIDDEN_SSID_ZERO_LEN                            = C.NL80211_HIDDEN_SSID_ZERO_LEN\n\tNL80211_HT_CAPABILITY_LEN                               = C.NL80211_HT_CAPABILITY_LEN\n\tNL80211_IFACE_COMB_BI_MIN_GCD                           = C.NL80211_IFACE_COMB_BI_MIN_GCD\n\tNL80211_IFACE_COMB_LIMITS                               = C.NL80211_IFACE_COMB_LIMITS\n\tNL80211_IFACE_COMB_MAXNUM                               = C.NL80211_IFACE_COMB_MAXNUM\n\tNL80211_IFACE_COMB_NUM_CHANNELS                         = C.NL80211_IFACE_COMB_NUM_CHANNELS\n\tNL80211_IFACE_COMB_RADAR_DETECT_REGIONS                 = C.NL80211_IFACE_COMB_RADAR_DETECT_REGIONS\n\tNL80211_IFACE_COMB_RADAR_DETECT_WIDTHS                  = C.NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS\n\tNL80211_IFACE_COMB_STA_AP_BI_MATCH                      = C.NL80211_IFACE_COMB_STA_AP_BI_MATCH\n\tNL80211_IFACE_COMB_UNSPEC                               = C.NL80211_IFACE_COMB_UNSPEC\n\tNL80211_IFACE_LIMIT_MAX                                 = C.NL80211_IFACE_LIMIT_MAX\n\tNL80211_IFACE_LIMIT_TYPES                               = C.NL80211_IFACE_LIMIT_TYPES\n\tNL80211_IFACE_LIMIT_UNSPEC                              = C.NL80211_IFACE_LIMIT_UNSPEC\n\tNL80211_IFTYPE_ADHOC                                    = C.NL80211_IFTYPE_ADHOC\n\tNL80211_IFTYPE_AKM_ATTR_IFTYPES                         = C.NL80211_IFTYPE_AKM_ATTR_IFTYPES\n\tNL80211_IFTYPE_AKM_ATTR_MAX                             = C.NL80211_IFTYPE_AKM_ATTR_MAX\n\tNL80211_IFTYPE_AKM_ATTR_SUITES                          = C.NL80211_IFTYPE_AKM_ATTR_SUITES\n\tNL80211_IFTYPE_AP                                       = C.NL80211_IFTYPE_AP\n\tNL80211_IFTYPE_AP_VLAN                                  = C.NL80211_IFTYPE_AP_VLAN\n\tNL80211_IFTYPE_MAX                                      = C.NL80211_IFTYPE_MAX\n\tNL80211_IFTYPE_MESH_POINT                               = C.NL80211_IFTYPE_MESH_POINT\n\tNL80211_IFTYPE_MONITOR                                  = C.NL80211_IFTYPE_MONITOR\n\tNL80211_IFTYPE_NAN                                      = C.NL80211_IFTYPE_NAN\n\tNL80211_IFTYPE_OCB                                      = C.NL80211_IFTYPE_OCB\n\tNL80211_IFTYPE_P2P_CLIENT                               = C.NL80211_IFTYPE_P2P_CLIENT\n\tNL80211_IFTYPE_P2P_DEVICE                               = C.NL80211_IFTYPE_P2P_DEVICE\n\tNL80211_IFTYPE_P2P_GO                                   = C.NL80211_IFTYPE_P2P_GO\n\tNL80211_IFTYPE_STATION                                  = C.NL80211_IFTYPE_STATION\n\tNL80211_IFTYPE_UNSPECIFIED                              = C.NL80211_IFTYPE_UNSPECIFIED\n\tNL80211_IFTYPE_WDS                                      = C.NL80211_IFTYPE_WDS\n\tNL80211_KCK_EXT_LEN                                     = C.NL80211_KCK_EXT_LEN\n\tNL80211_KCK_LEN                                         = C.NL80211_KCK_LEN\n\tNL80211_KEK_EXT_LEN                                     = C.NL80211_KEK_EXT_LEN\n\tNL80211_KEK_LEN                                         = C.NL80211_KEK_LEN\n\tNL80211_KEY_CIPHER                                      = C.NL80211_KEY_CIPHER\n\tNL80211_KEY_DATA                                        = C.NL80211_KEY_DATA\n\tNL80211_KEY_DEFAULT_BEACON                              = C.NL80211_KEY_DEFAULT_BEACON\n\tNL80211_KEY_DEFAULT                                     = C.NL80211_KEY_DEFAULT\n\tNL80211_KEY_DEFAULT_MGMT                                = C.NL80211_KEY_DEFAULT_MGMT\n\tNL80211_KEY_DEFAULT_TYPE_MULTICAST                      = C.NL80211_KEY_DEFAULT_TYPE_MULTICAST\n\tNL80211_KEY_DEFAULT_TYPES                               = C.NL80211_KEY_DEFAULT_TYPES\n\tNL80211_KEY_DEFAULT_TYPE_UNICAST                        = C.NL80211_KEY_DEFAULT_TYPE_UNICAST\n\tNL80211_KEY_IDX                                         = C.NL80211_KEY_IDX\n\tNL80211_KEY_MAX                                         = C.NL80211_KEY_MAX\n\tNL80211_KEY_MODE                                        = C.NL80211_KEY_MODE\n\tNL80211_KEY_NO_TX                                       = C.NL80211_KEY_NO_TX\n\tNL80211_KEY_RX_TX                                       = C.NL80211_KEY_RX_TX\n\tNL80211_KEY_SEQ                                         = C.NL80211_KEY_SEQ\n\tNL80211_KEY_SET_TX                                      = C.NL80211_KEY_SET_TX\n\tNL80211_KEY_TYPE                                        = C.NL80211_KEY_TYPE\n\tNL80211_KEYTYPE_GROUP                                   = C.NL80211_KEYTYPE_GROUP\n\tNL80211_KEYTYPE_PAIRWISE                                = C.NL80211_KEYTYPE_PAIRWISE\n\tNL80211_KEYTYPE_PEERKEY                                 = C.NL80211_KEYTYPE_PEERKEY\n\tNL80211_MAX_NR_AKM_SUITES                               = C.NL80211_MAX_NR_AKM_SUITES\n\tNL80211_MAX_NR_CIPHER_SUITES                            = C.NL80211_MAX_NR_CIPHER_SUITES\n\tNL80211_MAX_SUPP_HT_RATES                               = C.NL80211_MAX_SUPP_HT_RATES\n\tNL80211_MAX_SUPP_RATES                                  = C.NL80211_MAX_SUPP_RATES\n\tNL80211_MAX_SUPP_REG_RULES                              = C.NL80211_MAX_SUPP_REG_RULES\n\tNL80211_MBSSID_CONFIG_ATTR_EMA                          = C.NL80211_MBSSID_CONFIG_ATTR_EMA\n\tNL80211_MBSSID_CONFIG_ATTR_INDEX                        = C.NL80211_MBSSID_CONFIG_ATTR_INDEX\n\tNL80211_MBSSID_CONFIG_ATTR_MAX                          = C.NL80211_MBSSID_CONFIG_ATTR_MAX\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = C.NL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = C.NL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES\n\tNL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = C.NL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX\n\tNL80211_MESHCONF_ATTR_MAX                               = C.NL80211_MESHCONF_ATTR_MAX\n\tNL80211_MESHCONF_AUTO_OPEN_PLINKS                       = C.NL80211_MESHCONF_AUTO_OPEN_PLINKS\n\tNL80211_MESHCONF_AWAKE_WINDOW                           = C.NL80211_MESHCONF_AWAKE_WINDOW\n\tNL80211_MESHCONF_CONFIRM_TIMEOUT                        = C.NL80211_MESHCONF_CONFIRM_TIMEOUT\n\tNL80211_MESHCONF_CONNECTED_TO_AS                        = C.NL80211_MESHCONF_CONNECTED_TO_AS\n\tNL80211_MESHCONF_CONNECTED_TO_GATE                      = C.NL80211_MESHCONF_CONNECTED_TO_GATE\n\tNL80211_MESHCONF_ELEMENT_TTL                            = C.NL80211_MESHCONF_ELEMENT_TTL\n\tNL80211_MESHCONF_FORWARDING                             = C.NL80211_MESHCONF_FORWARDING\n\tNL80211_MESHCONF_GATE_ANNOUNCEMENTS                     = C.NL80211_MESHCONF_GATE_ANNOUNCEMENTS\n\tNL80211_MESHCONF_HOLDING_TIMEOUT                        = C.NL80211_MESHCONF_HOLDING_TIMEOUT\n\tNL80211_MESHCONF_HT_OPMODE                              = C.NL80211_MESHCONF_HT_OPMODE\n\tNL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT               = C.NL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT\n\tNL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL             = C.NL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL\n\tNL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES                  = C.NL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES\n\tNL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME                = C.NL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME\n\tNL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT              = C.NL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT\n\tNL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL                 = C.NL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL\n\tNL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL                 = C.NL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL\n\tNL80211_MESHCONF_HWMP_RANN_INTERVAL                     = C.NL80211_MESHCONF_HWMP_RANN_INTERVAL\n\tNL80211_MESHCONF_HWMP_ROOT_INTERVAL                     = C.NL80211_MESHCONF_HWMP_ROOT_INTERVAL\n\tNL80211_MESHCONF_HWMP_ROOTMODE                          = C.NL80211_MESHCONF_HWMP_ROOTMODE\n\tNL80211_MESHCONF_MAX_PEER_LINKS                         = C.NL80211_MESHCONF_MAX_PEER_LINKS\n\tNL80211_MESHCONF_MAX_RETRIES                            = C.NL80211_MESHCONF_MAX_RETRIES\n\tNL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT                  = C.NL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT\n\tNL80211_MESHCONF_NOLEARN                                = C.NL80211_MESHCONF_NOLEARN\n\tNL80211_MESHCONF_PATH_REFRESH_TIME                      = C.NL80211_MESHCONF_PATH_REFRESH_TIME\n\tNL80211_MESHCONF_PLINK_TIMEOUT                          = C.NL80211_MESHCONF_PLINK_TIMEOUT\n\tNL80211_MESHCONF_POWER_MODE                             = C.NL80211_MESHCONF_POWER_MODE\n\tNL80211_MESHCONF_RETRY_TIMEOUT                          = C.NL80211_MESHCONF_RETRY_TIMEOUT\n\tNL80211_MESHCONF_RSSI_THRESHOLD                         = C.NL80211_MESHCONF_RSSI_THRESHOLD\n\tNL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR               = C.NL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR\n\tNL80211_MESHCONF_TTL                                    = C.NL80211_MESHCONF_TTL\n\tNL80211_MESH_POWER_ACTIVE                               = C.NL80211_MESH_POWER_ACTIVE\n\tNL80211_MESH_POWER_DEEP_SLEEP                           = C.NL80211_MESH_POWER_DEEP_SLEEP\n\tNL80211_MESH_POWER_LIGHT_SLEEP                          = C.NL80211_MESH_POWER_LIGHT_SLEEP\n\tNL80211_MESH_POWER_MAX                                  = C.NL80211_MESH_POWER_MAX\n\tNL80211_MESH_POWER_UNKNOWN                              = C.NL80211_MESH_POWER_UNKNOWN\n\tNL80211_MESH_SETUP_ATTR_MAX                             = C.NL80211_MESH_SETUP_ATTR_MAX\n\tNL80211_MESH_SETUP_AUTH_PROTOCOL                        = C.NL80211_MESH_SETUP_AUTH_PROTOCOL\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_METRIC                 = C.NL80211_MESH_SETUP_ENABLE_VENDOR_METRIC\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL               = C.NL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_SYNC                   = C.NL80211_MESH_SETUP_ENABLE_VENDOR_SYNC\n\tNL80211_MESH_SETUP_IE                                   = C.NL80211_MESH_SETUP_IE\n\tNL80211_MESH_SETUP_USERSPACE_AMPE                       = C.NL80211_MESH_SETUP_USERSPACE_AMPE\n\tNL80211_MESH_SETUP_USERSPACE_AUTH                       = C.NL80211_MESH_SETUP_USERSPACE_AUTH\n\tNL80211_MESH_SETUP_USERSPACE_MPM                        = C.NL80211_MESH_SETUP_USERSPACE_MPM\n\tNL80211_MESH_SETUP_VENDOR_PATH_SEL_IE                   = C.NL80211_MESH_SETUP_VENDOR_PATH_SEL_IE\n\tNL80211_MFP_NO                                          = C.NL80211_MFP_NO\n\tNL80211_MFP_OPTIONAL                                    = C.NL80211_MFP_OPTIONAL\n\tNL80211_MFP_REQUIRED                                    = C.NL80211_MFP_REQUIRED\n\tNL80211_MIN_REMAIN_ON_CHANNEL_TIME                      = C.NL80211_MIN_REMAIN_ON_CHANNEL_TIME\n\tNL80211_MNTR_FLAG_ACTIVE                                = C.NL80211_MNTR_FLAG_ACTIVE\n\tNL80211_MNTR_FLAG_CONTROL                               = C.NL80211_MNTR_FLAG_CONTROL\n\tNL80211_MNTR_FLAG_COOK_FRAMES                           = C.NL80211_MNTR_FLAG_COOK_FRAMES\n\tNL80211_MNTR_FLAG_FCSFAIL                               = C.NL80211_MNTR_FLAG_FCSFAIL\n\tNL80211_MNTR_FLAG_MAX                                   = C.NL80211_MNTR_FLAG_MAX\n\tNL80211_MNTR_FLAG_OTHER_BSS                             = C.NL80211_MNTR_FLAG_OTHER_BSS\n\tNL80211_MNTR_FLAG_PLCPFAIL                              = C.NL80211_MNTR_FLAG_PLCPFAIL\n\tNL80211_MPATH_FLAG_ACTIVE                               = C.NL80211_MPATH_FLAG_ACTIVE\n\tNL80211_MPATH_FLAG_FIXED                                = C.NL80211_MPATH_FLAG_FIXED\n\tNL80211_MPATH_FLAG_RESOLVED                             = C.NL80211_MPATH_FLAG_RESOLVED\n\tNL80211_MPATH_FLAG_RESOLVING                            = C.NL80211_MPATH_FLAG_RESOLVING\n\tNL80211_MPATH_FLAG_SN_VALID                             = C.NL80211_MPATH_FLAG_SN_VALID\n\tNL80211_MPATH_INFO_DISCOVERY_RETRIES                    = C.NL80211_MPATH_INFO_DISCOVERY_RETRIES\n\tNL80211_MPATH_INFO_DISCOVERY_TIMEOUT                    = C.NL80211_MPATH_INFO_DISCOVERY_TIMEOUT\n\tNL80211_MPATH_INFO_EXPTIME                              = C.NL80211_MPATH_INFO_EXPTIME\n\tNL80211_MPATH_INFO_FLAGS                                = C.NL80211_MPATH_INFO_FLAGS\n\tNL80211_MPATH_INFO_FRAME_QLEN                           = C.NL80211_MPATH_INFO_FRAME_QLEN\n\tNL80211_MPATH_INFO_HOP_COUNT                            = C.NL80211_MPATH_INFO_HOP_COUNT\n\tNL80211_MPATH_INFO_MAX                                  = C.NL80211_MPATH_INFO_MAX\n\tNL80211_MPATH_INFO_METRIC                               = C.NL80211_MPATH_INFO_METRIC\n\tNL80211_MPATH_INFO_PATH_CHANGE                          = C.NL80211_MPATH_INFO_PATH_CHANGE\n\tNL80211_MPATH_INFO_SN                                   = C.NL80211_MPATH_INFO_SN\n\tNL80211_MULTICAST_GROUP_CONFIG                          = C.NL80211_MULTICAST_GROUP_CONFIG\n\tNL80211_MULTICAST_GROUP_MLME                            = C.NL80211_MULTICAST_GROUP_MLME\n\tNL80211_MULTICAST_GROUP_NAN                             = C.NL80211_MULTICAST_GROUP_NAN\n\tNL80211_MULTICAST_GROUP_REG                             = C.NL80211_MULTICAST_GROUP_REG\n\tNL80211_MULTICAST_GROUP_SCAN                            = C.NL80211_MULTICAST_GROUP_SCAN\n\tNL80211_MULTICAST_GROUP_TESTMODE                        = C.NL80211_MULTICAST_GROUP_TESTMODE\n\tNL80211_MULTICAST_GROUP_VENDOR                          = C.NL80211_MULTICAST_GROUP_VENDOR\n\tNL80211_NAN_FUNC_ATTR_MAX                               = C.NL80211_NAN_FUNC_ATTR_MAX\n\tNL80211_NAN_FUNC_CLOSE_RANGE                            = C.NL80211_NAN_FUNC_CLOSE_RANGE\n\tNL80211_NAN_FUNC_FOLLOW_UP                              = C.NL80211_NAN_FUNC_FOLLOW_UP\n\tNL80211_NAN_FUNC_FOLLOW_UP_DEST                         = C.NL80211_NAN_FUNC_FOLLOW_UP_DEST\n\tNL80211_NAN_FUNC_FOLLOW_UP_ID                           = C.NL80211_NAN_FUNC_FOLLOW_UP_ID\n\tNL80211_NAN_FUNC_FOLLOW_UP_REQ_ID                       = C.NL80211_NAN_FUNC_FOLLOW_UP_REQ_ID\n\tNL80211_NAN_FUNC_INSTANCE_ID                            = C.NL80211_NAN_FUNC_INSTANCE_ID\n\tNL80211_NAN_FUNC_MAX_TYPE                               = C.NL80211_NAN_FUNC_MAX_TYPE\n\tNL80211_NAN_FUNC_PUBLISH_BCAST                          = C.NL80211_NAN_FUNC_PUBLISH_BCAST\n\tNL80211_NAN_FUNC_PUBLISH                                = C.NL80211_NAN_FUNC_PUBLISH\n\tNL80211_NAN_FUNC_PUBLISH_TYPE                           = C.NL80211_NAN_FUNC_PUBLISH_TYPE\n\tNL80211_NAN_FUNC_RX_MATCH_FILTER                        = C.NL80211_NAN_FUNC_RX_MATCH_FILTER\n\tNL80211_NAN_FUNC_SERVICE_ID                             = C.NL80211_NAN_FUNC_SERVICE_ID\n\tNL80211_NAN_FUNC_SERVICE_ID_LEN                         = C.NL80211_NAN_FUNC_SERVICE_ID_LEN\n\tNL80211_NAN_FUNC_SERVICE_INFO                           = C.NL80211_NAN_FUNC_SERVICE_INFO\n\tNL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN              = C.NL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN\n\tNL80211_NAN_FUNC_SRF                                    = C.NL80211_NAN_FUNC_SRF\n\tNL80211_NAN_FUNC_SRF_MAX_LEN                            = C.NL80211_NAN_FUNC_SRF_MAX_LEN\n\tNL80211_NAN_FUNC_SUBSCRIBE_ACTIVE                       = C.NL80211_NAN_FUNC_SUBSCRIBE_ACTIVE\n\tNL80211_NAN_FUNC_SUBSCRIBE                              = C.NL80211_NAN_FUNC_SUBSCRIBE\n\tNL80211_NAN_FUNC_TERM_REASON                            = C.NL80211_NAN_FUNC_TERM_REASON\n\tNL80211_NAN_FUNC_TERM_REASON_ERROR                      = C.NL80211_NAN_FUNC_TERM_REASON_ERROR\n\tNL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED                = C.NL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED\n\tNL80211_NAN_FUNC_TERM_REASON_USER_REQUEST               = C.NL80211_NAN_FUNC_TERM_REASON_USER_REQUEST\n\tNL80211_NAN_FUNC_TTL                                    = C.NL80211_NAN_FUNC_TTL\n\tNL80211_NAN_FUNC_TX_MATCH_FILTER                        = C.NL80211_NAN_FUNC_TX_MATCH_FILTER\n\tNL80211_NAN_FUNC_TYPE                                   = C.NL80211_NAN_FUNC_TYPE\n\tNL80211_NAN_MATCH_ATTR_MAX                              = C.NL80211_NAN_MATCH_ATTR_MAX\n\tNL80211_NAN_MATCH_FUNC_LOCAL                            = C.NL80211_NAN_MATCH_FUNC_LOCAL\n\tNL80211_NAN_MATCH_FUNC_PEER                             = C.NL80211_NAN_MATCH_FUNC_PEER\n\tNL80211_NAN_SOLICITED_PUBLISH                           = C.NL80211_NAN_SOLICITED_PUBLISH\n\tNL80211_NAN_SRF_ATTR_MAX                                = C.NL80211_NAN_SRF_ATTR_MAX\n\tNL80211_NAN_SRF_BF                                      = C.NL80211_NAN_SRF_BF\n\tNL80211_NAN_SRF_BF_IDX                                  = C.NL80211_NAN_SRF_BF_IDX\n\tNL80211_NAN_SRF_INCLUDE                                 = C.NL80211_NAN_SRF_INCLUDE\n\tNL80211_NAN_SRF_MAC_ADDRS                               = C.NL80211_NAN_SRF_MAC_ADDRS\n\tNL80211_NAN_UNSOLICITED_PUBLISH                         = C.NL80211_NAN_UNSOLICITED_PUBLISH\n\tNL80211_NUM_ACS                                         = C.NL80211_NUM_ACS\n\tNL80211_P2P_PS_SUPPORTED                                = C.NL80211_P2P_PS_SUPPORTED\n\tNL80211_P2P_PS_UNSUPPORTED                              = C.NL80211_P2P_PS_UNSUPPORTED\n\tNL80211_PKTPAT_MASK                                     = C.NL80211_PKTPAT_MASK\n\tNL80211_PKTPAT_OFFSET                                   = C.NL80211_PKTPAT_OFFSET\n\tNL80211_PKTPAT_PATTERN                                  = C.NL80211_PKTPAT_PATTERN\n\tNL80211_PLINK_ACTION_BLOCK                              = C.NL80211_PLINK_ACTION_BLOCK\n\tNL80211_PLINK_ACTION_NO_ACTION                          = C.NL80211_PLINK_ACTION_NO_ACTION\n\tNL80211_PLINK_ACTION_OPEN                               = C.NL80211_PLINK_ACTION_OPEN\n\tNL80211_PLINK_BLOCKED                                   = C.NL80211_PLINK_BLOCKED\n\tNL80211_PLINK_CNF_RCVD                                  = C.NL80211_PLINK_CNF_RCVD\n\tNL80211_PLINK_ESTAB                                     = C.NL80211_PLINK_ESTAB\n\tNL80211_PLINK_HOLDING                                   = C.NL80211_PLINK_HOLDING\n\tNL80211_PLINK_LISTEN                                    = C.NL80211_PLINK_LISTEN\n\tNL80211_PLINK_OPN_RCVD                                  = C.NL80211_PLINK_OPN_RCVD\n\tNL80211_PLINK_OPN_SNT                                   = C.NL80211_PLINK_OPN_SNT\n\tNL80211_PMKSA_CANDIDATE_BSSID                           = C.NL80211_PMKSA_CANDIDATE_BSSID\n\tNL80211_PMKSA_CANDIDATE_INDEX                           = C.NL80211_PMKSA_CANDIDATE_INDEX\n\tNL80211_PMKSA_CANDIDATE_PREAUTH                         = C.NL80211_PMKSA_CANDIDATE_PREAUTH\n\tNL80211_PMSR_ATTR_MAX                                   = C.NL80211_PMSR_ATTR_MAX\n\tNL80211_PMSR_ATTR_MAX_PEERS                             = C.NL80211_PMSR_ATTR_MAX_PEERS\n\tNL80211_PMSR_ATTR_PEERS                                 = C.NL80211_PMSR_ATTR_PEERS\n\tNL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR                    = C.NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR\n\tNL80211_PMSR_ATTR_REPORT_AP_TSF                         = C.NL80211_PMSR_ATTR_REPORT_AP_TSF\n\tNL80211_PMSR_ATTR_TYPE_CAPA                             = C.NL80211_PMSR_ATTR_TYPE_CAPA\n\tNL80211_PMSR_FTM_CAPA_ATTR_ASAP                         = C.NL80211_PMSR_FTM_CAPA_ATTR_ASAP\n\tNL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS                   = C.NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT          = C.NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX                          = C.NL80211_PMSR_FTM_CAPA_ATTR_MAX\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST           = C.NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP                     = C.NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED            = C.NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED\n\tNL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES                    = C.NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC                 = C.NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI                      = C.NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI\n\tNL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED                = C.NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED\n\tNL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS             = C.NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS\n\tNL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP              = C.NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP\n\tNL80211_PMSR_FTM_FAILURE_NO_RESPONSE                    = C.NL80211_PMSR_FTM_FAILURE_NO_RESPONSE\n\tNL80211_PMSR_FTM_FAILURE_PEER_BUSY                      = C.NL80211_PMSR_FTM_FAILURE_PEER_BUSY\n\tNL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE               = C.NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE\n\tNL80211_PMSR_FTM_FAILURE_REJECTED                       = C.NL80211_PMSR_FTM_FAILURE_REJECTED\n\tNL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = C.NL80211_PMSR_FTM_FAILURE_UNSPECIFIED\n\tNL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = C.NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL\n\tNL80211_PMSR_FTM_REQ_ATTR_ASAP                          = C.NL80211_PMSR_FTM_REQ_ATTR_ASAP\n\tNL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = C.NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = C.NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = C.NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD\n\tNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = C.NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST\n\tNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK                  = C.NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK\n\tNL80211_PMSR_FTM_REQ_ATTR_MAX                           = C.NL80211_PMSR_FTM_REQ_ATTR_MAX\n\tNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED             = C.NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP                = C.NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES              = C.NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES\n\tNL80211_PMSR_FTM_REQ_ATTR_PREAMBLE                      = C.NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC              = C.NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI                   = C.NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI\n\tNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED                 = C.NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION               = C.NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX                  = C.NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX\n\tNL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME              = C.NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME\n\tNL80211_PMSR_FTM_RESP_ATTR_CIVICLOC                     = C.NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_AVG                     = C.NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD                  = C.NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE                = C.NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE\n\tNL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON                  = C.NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON\n\tNL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST               = C.NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST\n\tNL80211_PMSR_FTM_RESP_ATTR_LCI                          = C.NL80211_PMSR_FTM_RESP_ATTR_LCI\n\tNL80211_PMSR_FTM_RESP_ATTR_MAX                          = C.NL80211_PMSR_FTM_RESP_ATTR_MAX\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP               = C.NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS            = C.NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES           = C.NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES\n\tNL80211_PMSR_FTM_RESP_ATTR_PAD                          = C.NL80211_PMSR_FTM_RESP_ATTR_PAD\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG                     = C.NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD                  = C.NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_AVG                      = C.NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD                   = C.NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE                 = C.NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE\n\tNL80211_PMSR_FTM_RESP_ATTR_RX_RATE                      = C.NL80211_PMSR_FTM_RESP_ATTR_RX_RATE\n\tNL80211_PMSR_FTM_RESP_ATTR_TX_RATE                      = C.NL80211_PMSR_FTM_RESP_ATTR_TX_RATE\n\tNL80211_PMSR_PEER_ATTR_ADDR                             = C.NL80211_PMSR_PEER_ATTR_ADDR\n\tNL80211_PMSR_PEER_ATTR_CHAN                             = C.NL80211_PMSR_PEER_ATTR_CHAN\n\tNL80211_PMSR_PEER_ATTR_MAX                              = C.NL80211_PMSR_PEER_ATTR_MAX\n\tNL80211_PMSR_PEER_ATTR_REQ                              = C.NL80211_PMSR_PEER_ATTR_REQ\n\tNL80211_PMSR_PEER_ATTR_RESP                             = C.NL80211_PMSR_PEER_ATTR_RESP\n\tNL80211_PMSR_REQ_ATTR_DATA                              = C.NL80211_PMSR_REQ_ATTR_DATA\n\tNL80211_PMSR_REQ_ATTR_GET_AP_TSF                        = C.NL80211_PMSR_REQ_ATTR_GET_AP_TSF\n\tNL80211_PMSR_REQ_ATTR_MAX                               = C.NL80211_PMSR_REQ_ATTR_MAX\n\tNL80211_PMSR_RESP_ATTR_AP_TSF                           = C.NL80211_PMSR_RESP_ATTR_AP_TSF\n\tNL80211_PMSR_RESP_ATTR_DATA                             = C.NL80211_PMSR_RESP_ATTR_DATA\n\tNL80211_PMSR_RESP_ATTR_FINAL                            = C.NL80211_PMSR_RESP_ATTR_FINAL\n\tNL80211_PMSR_RESP_ATTR_HOST_TIME                        = C.NL80211_PMSR_RESP_ATTR_HOST_TIME\n\tNL80211_PMSR_RESP_ATTR_MAX                              = C.NL80211_PMSR_RESP_ATTR_MAX\n\tNL80211_PMSR_RESP_ATTR_PAD                              = C.NL80211_PMSR_RESP_ATTR_PAD\n\tNL80211_PMSR_RESP_ATTR_STATUS                           = C.NL80211_PMSR_RESP_ATTR_STATUS\n\tNL80211_PMSR_STATUS_FAILURE                             = C.NL80211_PMSR_STATUS_FAILURE\n\tNL80211_PMSR_STATUS_REFUSED                             = C.NL80211_PMSR_STATUS_REFUSED\n\tNL80211_PMSR_STATUS_SUCCESS                             = C.NL80211_PMSR_STATUS_SUCCESS\n\tNL80211_PMSR_STATUS_TIMEOUT                             = C.NL80211_PMSR_STATUS_TIMEOUT\n\tNL80211_PMSR_TYPE_FTM                                   = C.NL80211_PMSR_TYPE_FTM\n\tNL80211_PMSR_TYPE_INVALID                               = C.NL80211_PMSR_TYPE_INVALID\n\tNL80211_PMSR_TYPE_MAX                                   = C.NL80211_PMSR_TYPE_MAX\n\tNL80211_PREAMBLE_DMG                                    = C.NL80211_PREAMBLE_DMG\n\tNL80211_PREAMBLE_HE                                     = C.NL80211_PREAMBLE_HE\n\tNL80211_PREAMBLE_HT                                     = C.NL80211_PREAMBLE_HT\n\tNL80211_PREAMBLE_LEGACY                                 = C.NL80211_PREAMBLE_LEGACY\n\tNL80211_PREAMBLE_VHT                                    = C.NL80211_PREAMBLE_VHT\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U               = C.NL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P                  = C.NL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2                 = C.NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS                  = C.NL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS\n\tNL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP               = C.NL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP\n\tNL80211_PS_DISABLED                                     = C.NL80211_PS_DISABLED\n\tNL80211_PS_ENABLED                                      = C.NL80211_PS_ENABLED\n\tNL80211_RADAR_CAC_ABORTED                               = C.NL80211_RADAR_CAC_ABORTED\n\tNL80211_RADAR_CAC_FINISHED                              = C.NL80211_RADAR_CAC_FINISHED\n\tNL80211_RADAR_CAC_STARTED                               = C.NL80211_RADAR_CAC_STARTED\n\tNL80211_RADAR_DETECTED                                  = C.NL80211_RADAR_DETECTED\n\tNL80211_RADAR_NOP_FINISHED                              = C.NL80211_RADAR_NOP_FINISHED\n\tNL80211_RADAR_PRE_CAC_EXPIRED                           = C.NL80211_RADAR_PRE_CAC_EXPIRED\n\tNL80211_RATE_INFO_10_MHZ_WIDTH                          = C.NL80211_RATE_INFO_10_MHZ_WIDTH\n\tNL80211_RATE_INFO_160_MHZ_WIDTH                         = C.NL80211_RATE_INFO_160_MHZ_WIDTH\n\tNL80211_RATE_INFO_320_MHZ_WIDTH                         = C.NL80211_RATE_INFO_320_MHZ_WIDTH\n\tNL80211_RATE_INFO_40_MHZ_WIDTH                          = C.NL80211_RATE_INFO_40_MHZ_WIDTH\n\tNL80211_RATE_INFO_5_MHZ_WIDTH                           = C.NL80211_RATE_INFO_5_MHZ_WIDTH\n\tNL80211_RATE_INFO_80_MHZ_WIDTH                          = C.NL80211_RATE_INFO_80_MHZ_WIDTH\n\tNL80211_RATE_INFO_80P80_MHZ_WIDTH                       = C.NL80211_RATE_INFO_80P80_MHZ_WIDTH\n\tNL80211_RATE_INFO_BITRATE32                             = C.NL80211_RATE_INFO_BITRATE32\n\tNL80211_RATE_INFO_BITRATE                               = C.NL80211_RATE_INFO_BITRATE\n\tNL80211_RATE_INFO_EHT_GI_0_8                            = C.NL80211_RATE_INFO_EHT_GI_0_8\n\tNL80211_RATE_INFO_EHT_GI_1_6                            = C.NL80211_RATE_INFO_EHT_GI_1_6\n\tNL80211_RATE_INFO_EHT_GI_3_2                            = C.NL80211_RATE_INFO_EHT_GI_3_2\n\tNL80211_RATE_INFO_EHT_GI                                = C.NL80211_RATE_INFO_EHT_GI\n\tNL80211_RATE_INFO_EHT_MCS                               = C.NL80211_RATE_INFO_EHT_MCS\n\tNL80211_RATE_INFO_EHT_NSS                               = C.NL80211_RATE_INFO_EHT_NSS\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106                      = C.NL80211_RATE_INFO_EHT_RU_ALLOC_106\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = C.NL80211_RATE_INFO_EHT_RU_ALLOC_106P26\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_242                      = C.NL80211_RATE_INFO_EHT_RU_ALLOC_242\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_26                       = C.NL80211_RATE_INFO_EHT_RU_ALLOC_26\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = C.NL80211_RATE_INFO_EHT_RU_ALLOC_2x996\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = C.NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = C.NL80211_RATE_INFO_EHT_RU_ALLOC_3x996\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = C.NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484                      = C.NL80211_RATE_INFO_EHT_RU_ALLOC_484\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = C.NL80211_RATE_INFO_EHT_RU_ALLOC_484P242\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = C.NL80211_RATE_INFO_EHT_RU_ALLOC_4x996\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52                       = C.NL80211_RATE_INFO_EHT_RU_ALLOC_52\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = C.NL80211_RATE_INFO_EHT_RU_ALLOC_52P26\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996                      = C.NL80211_RATE_INFO_EHT_RU_ALLOC_996\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = C.NL80211_RATE_INFO_EHT_RU_ALLOC_996P484\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = C.NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242\n\tNL80211_RATE_INFO_EHT_RU_ALLOC                          = C.NL80211_RATE_INFO_EHT_RU_ALLOC\n\tNL80211_RATE_INFO_HE_1XLTF                              = C.NL80211_RATE_INFO_HE_1XLTF\n\tNL80211_RATE_INFO_HE_2XLTF                              = C.NL80211_RATE_INFO_HE_2XLTF\n\tNL80211_RATE_INFO_HE_4XLTF                              = C.NL80211_RATE_INFO_HE_4XLTF\n\tNL80211_RATE_INFO_HE_DCM                                = C.NL80211_RATE_INFO_HE_DCM\n\tNL80211_RATE_INFO_HE_GI_0_8                             = C.NL80211_RATE_INFO_HE_GI_0_8\n\tNL80211_RATE_INFO_HE_GI_1_6                             = C.NL80211_RATE_INFO_HE_GI_1_6\n\tNL80211_RATE_INFO_HE_GI_3_2                             = C.NL80211_RATE_INFO_HE_GI_3_2\n\tNL80211_RATE_INFO_HE_GI                                 = C.NL80211_RATE_INFO_HE_GI\n\tNL80211_RATE_INFO_HE_MCS                                = C.NL80211_RATE_INFO_HE_MCS\n\tNL80211_RATE_INFO_HE_NSS                                = C.NL80211_RATE_INFO_HE_NSS\n\tNL80211_RATE_INFO_HE_RU_ALLOC_106                       = C.NL80211_RATE_INFO_HE_RU_ALLOC_106\n\tNL80211_RATE_INFO_HE_RU_ALLOC_242                       = C.NL80211_RATE_INFO_HE_RU_ALLOC_242\n\tNL80211_RATE_INFO_HE_RU_ALLOC_26                        = C.NL80211_RATE_INFO_HE_RU_ALLOC_26\n\tNL80211_RATE_INFO_HE_RU_ALLOC_2x996                     = C.NL80211_RATE_INFO_HE_RU_ALLOC_2x996\n\tNL80211_RATE_INFO_HE_RU_ALLOC_484                       = C.NL80211_RATE_INFO_HE_RU_ALLOC_484\n\tNL80211_RATE_INFO_HE_RU_ALLOC_52                        = C.NL80211_RATE_INFO_HE_RU_ALLOC_52\n\tNL80211_RATE_INFO_HE_RU_ALLOC_996                       = C.NL80211_RATE_INFO_HE_RU_ALLOC_996\n\tNL80211_RATE_INFO_HE_RU_ALLOC                           = C.NL80211_RATE_INFO_HE_RU_ALLOC\n\tNL80211_RATE_INFO_MAX                                   = C.NL80211_RATE_INFO_MAX\n\tNL80211_RATE_INFO_MCS                                   = C.NL80211_RATE_INFO_MCS\n\tNL80211_RATE_INFO_SHORT_GI                              = C.NL80211_RATE_INFO_SHORT_GI\n\tNL80211_RATE_INFO_VHT_MCS                               = C.NL80211_RATE_INFO_VHT_MCS\n\tNL80211_RATE_INFO_VHT_NSS                               = C.NL80211_RATE_INFO_VHT_NSS\n\tNL80211_REGDOM_SET_BY_CORE                              = C.NL80211_REGDOM_SET_BY_CORE\n\tNL80211_REGDOM_SET_BY_COUNTRY_IE                        = C.NL80211_REGDOM_SET_BY_COUNTRY_IE\n\tNL80211_REGDOM_SET_BY_DRIVER                            = C.NL80211_REGDOM_SET_BY_DRIVER\n\tNL80211_REGDOM_SET_BY_USER                              = C.NL80211_REGDOM_SET_BY_USER\n\tNL80211_REGDOM_TYPE_COUNTRY                             = C.NL80211_REGDOM_TYPE_COUNTRY\n\tNL80211_REGDOM_TYPE_CUSTOM_WORLD                        = C.NL80211_REGDOM_TYPE_CUSTOM_WORLD\n\tNL80211_REGDOM_TYPE_INTERSECTION                        = C.NL80211_REGDOM_TYPE_INTERSECTION\n\tNL80211_REGDOM_TYPE_WORLD                               = C.NL80211_REGDOM_TYPE_WORLD\n\tNL80211_REG_RULE_ATTR_MAX                               = C.NL80211_REG_RULE_ATTR_MAX\n\tNL80211_REKEY_DATA_AKM                                  = C.NL80211_REKEY_DATA_AKM\n\tNL80211_REKEY_DATA_KCK                                  = C.NL80211_REKEY_DATA_KCK\n\tNL80211_REKEY_DATA_KEK                                  = C.NL80211_REKEY_DATA_KEK\n\tNL80211_REKEY_DATA_REPLAY_CTR                           = C.NL80211_REKEY_DATA_REPLAY_CTR\n\tNL80211_REPLAY_CTR_LEN                                  = C.NL80211_REPLAY_CTR_LEN\n\tNL80211_RRF_AUTO_BW                                     = C.NL80211_RRF_AUTO_BW\n\tNL80211_RRF_DFS                                         = C.NL80211_RRF_DFS\n\tNL80211_RRF_GO_CONCURRENT                               = C.NL80211_RRF_GO_CONCURRENT\n\tNL80211_RRF_IR_CONCURRENT                               = C.NL80211_RRF_IR_CONCURRENT\n\tNL80211_RRF_NO_160MHZ                                   = C.NL80211_RRF_NO_160MHZ\n\tNL80211_RRF_NO_320MHZ                                   = C.NL80211_RRF_NO_320MHZ\n\tNL80211_RRF_NO_80MHZ                                    = C.NL80211_RRF_NO_80MHZ\n\tNL80211_RRF_NO_CCK                                      = C.NL80211_RRF_NO_CCK\n\tNL80211_RRF_NO_HE                                       = C.NL80211_RRF_NO_HE\n\tNL80211_RRF_NO_HT40                                     = C.NL80211_RRF_NO_HT40\n\tNL80211_RRF_NO_HT40MINUS                                = C.NL80211_RRF_NO_HT40MINUS\n\tNL80211_RRF_NO_HT40PLUS                                 = C.NL80211_RRF_NO_HT40PLUS\n\tNL80211_RRF_NO_IBSS                                     = C.NL80211_RRF_NO_IBSS\n\tNL80211_RRF_NO_INDOOR                                   = C.NL80211_RRF_NO_INDOOR\n\tNL80211_RRF_NO_IR_ALL                                   = C.NL80211_RRF_NO_IR_ALL\n\tNL80211_RRF_NO_IR                                       = C.NL80211_RRF_NO_IR\n\tNL80211_RRF_NO_OFDM                                     = C.NL80211_RRF_NO_OFDM\n\tNL80211_RRF_NO_OUTDOOR                                  = C.NL80211_RRF_NO_OUTDOOR\n\tNL80211_RRF_PASSIVE_SCAN                                = C.NL80211_RRF_PASSIVE_SCAN\n\tNL80211_RRF_PTMP_ONLY                                   = C.NL80211_RRF_PTMP_ONLY\n\tNL80211_RRF_PTP_ONLY                                    = C.NL80211_RRF_PTP_ONLY\n\tNL80211_RXMGMT_FLAG_ANSWERED                            = C.NL80211_RXMGMT_FLAG_ANSWERED\n\tNL80211_RXMGMT_FLAG_EXTERNAL_AUTH                       = C.NL80211_RXMGMT_FLAG_EXTERNAL_AUTH\n\tNL80211_SAE_PWE_BOTH                                    = C.NL80211_SAE_PWE_BOTH\n\tNL80211_SAE_PWE_HASH_TO_ELEMENT                         = C.NL80211_SAE_PWE_HASH_TO_ELEMENT\n\tNL80211_SAE_PWE_HUNT_AND_PECK                           = C.NL80211_SAE_PWE_HUNT_AND_PECK\n\tNL80211_SAE_PWE_UNSPECIFIED                             = C.NL80211_SAE_PWE_UNSPECIFIED\n\tNL80211_SAR_ATTR_MAX                                    = C.NL80211_SAR_ATTR_MAX\n\tNL80211_SAR_ATTR_SPECS                                  = C.NL80211_SAR_ATTR_SPECS\n\tNL80211_SAR_ATTR_SPECS_END_FREQ                         = C.NL80211_SAR_ATTR_SPECS_END_FREQ\n\tNL80211_SAR_ATTR_SPECS_MAX                              = C.NL80211_SAR_ATTR_SPECS_MAX\n\tNL80211_SAR_ATTR_SPECS_POWER                            = C.NL80211_SAR_ATTR_SPECS_POWER\n\tNL80211_SAR_ATTR_SPECS_RANGE_INDEX                      = C.NL80211_SAR_ATTR_SPECS_RANGE_INDEX\n\tNL80211_SAR_ATTR_SPECS_START_FREQ                       = C.NL80211_SAR_ATTR_SPECS_START_FREQ\n\tNL80211_SAR_ATTR_TYPE                                   = C.NL80211_SAR_ATTR_TYPE\n\tNL80211_SAR_TYPE_POWER                                  = C.NL80211_SAR_TYPE_POWER\n\tNL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP               = C.NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP\n\tNL80211_SCAN_FLAG_AP                                    = C.NL80211_SCAN_FLAG_AP\n\tNL80211_SCAN_FLAG_COLOCATED_6GHZ                        = C.NL80211_SCAN_FLAG_COLOCATED_6GHZ\n\tNL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME                 = C.NL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME\n\tNL80211_SCAN_FLAG_FLUSH                                 = C.NL80211_SCAN_FLAG_FLUSH\n\tNL80211_SCAN_FLAG_FREQ_KHZ                              = C.NL80211_SCAN_FLAG_FREQ_KHZ\n\tNL80211_SCAN_FLAG_HIGH_ACCURACY                         = C.NL80211_SCAN_FLAG_HIGH_ACCURACY\n\tNL80211_SCAN_FLAG_LOW_POWER                             = C.NL80211_SCAN_FLAG_LOW_POWER\n\tNL80211_SCAN_FLAG_LOW_PRIORITY                          = C.NL80211_SCAN_FLAG_LOW_PRIORITY\n\tNL80211_SCAN_FLAG_LOW_SPAN                              = C.NL80211_SCAN_FLAG_LOW_SPAN\n\tNL80211_SCAN_FLAG_MIN_PREQ_CONTENT                      = C.NL80211_SCAN_FLAG_MIN_PREQ_CONTENT\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = C.NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE            = C.NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE\n\tNL80211_SCAN_FLAG_RANDOM_ADDR                           = C.NL80211_SCAN_FLAG_RANDOM_ADDR\n\tNL80211_SCAN_FLAG_RANDOM_SN                             = C.NL80211_SCAN_FLAG_RANDOM_SN\n\tNL80211_SCAN_RSSI_THOLD_OFF                             = C.NL80211_SCAN_RSSI_THOLD_OFF\n\tNL80211_SCHED_SCAN_MATCH_ATTR_BSSID                     = C.NL80211_SCHED_SCAN_MATCH_ATTR_BSSID\n\tNL80211_SCHED_SCAN_MATCH_ATTR_MAX                       = C.NL80211_SCHED_SCAN_MATCH_ATTR_MAX\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI             = C.NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST               = C.NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI                      = C.NL80211_SCHED_SCAN_MATCH_ATTR_RSSI\n\tNL80211_SCHED_SCAN_MATCH_ATTR_SSID                      = C.NL80211_SCHED_SCAN_MATCH_ATTR_SSID\n\tNL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI                  = C.NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI\n\tNL80211_SCHED_SCAN_PLAN_INTERVAL                        = C.NL80211_SCHED_SCAN_PLAN_INTERVAL\n\tNL80211_SCHED_SCAN_PLAN_ITERATIONS                      = C.NL80211_SCHED_SCAN_PLAN_ITERATIONS\n\tNL80211_SCHED_SCAN_PLAN_MAX                             = C.NL80211_SCHED_SCAN_PLAN_MAX\n\tNL80211_SMPS_DYNAMIC                                    = C.NL80211_SMPS_DYNAMIC\n\tNL80211_SMPS_MAX                                        = C.NL80211_SMPS_MAX\n\tNL80211_SMPS_OFF                                        = C.NL80211_SMPS_OFF\n\tNL80211_SMPS_STATIC                                     = C.NL80211_SMPS_STATIC\n\tNL80211_STA_BSS_PARAM_BEACON_INTERVAL                   = C.NL80211_STA_BSS_PARAM_BEACON_INTERVAL\n\tNL80211_STA_BSS_PARAM_CTS_PROT                          = C.NL80211_STA_BSS_PARAM_CTS_PROT\n\tNL80211_STA_BSS_PARAM_DTIM_PERIOD                       = C.NL80211_STA_BSS_PARAM_DTIM_PERIOD\n\tNL80211_STA_BSS_PARAM_MAX                               = C.NL80211_STA_BSS_PARAM_MAX\n\tNL80211_STA_BSS_PARAM_SHORT_PREAMBLE                    = C.NL80211_STA_BSS_PARAM_SHORT_PREAMBLE\n\tNL80211_STA_BSS_PARAM_SHORT_SLOT_TIME                   = C.NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME\n\tNL80211_STA_FLAG_ASSOCIATED                             = C.NL80211_STA_FLAG_ASSOCIATED\n\tNL80211_STA_FLAG_AUTHENTICATED                          = C.NL80211_STA_FLAG_AUTHENTICATED\n\tNL80211_STA_FLAG_AUTHORIZED                             = C.NL80211_STA_FLAG_AUTHORIZED\n\tNL80211_STA_FLAG_MAX                                    = C.NL80211_STA_FLAG_MAX\n\tNL80211_STA_FLAG_MAX_OLD_API                            = C.NL80211_STA_FLAG_MAX_OLD_API\n\tNL80211_STA_FLAG_MFP                                    = C.NL80211_STA_FLAG_MFP\n\tNL80211_STA_FLAG_SHORT_PREAMBLE                         = C.NL80211_STA_FLAG_SHORT_PREAMBLE\n\tNL80211_STA_FLAG_TDLS_PEER                              = C.NL80211_STA_FLAG_TDLS_PEER\n\tNL80211_STA_FLAG_WME                                    = C.NL80211_STA_FLAG_WME\n\tNL80211_STA_INFO_ACK_SIGNAL_AVG                         = C.NL80211_STA_INFO_ACK_SIGNAL_AVG\n\tNL80211_STA_INFO_ACK_SIGNAL                             = C.NL80211_STA_INFO_ACK_SIGNAL\n\tNL80211_STA_INFO_AIRTIME_LINK_METRIC                    = C.NL80211_STA_INFO_AIRTIME_LINK_METRIC\n\tNL80211_STA_INFO_AIRTIME_WEIGHT                         = C.NL80211_STA_INFO_AIRTIME_WEIGHT\n\tNL80211_STA_INFO_ASSOC_AT_BOOTTIME                      = C.NL80211_STA_INFO_ASSOC_AT_BOOTTIME\n\tNL80211_STA_INFO_BEACON_LOSS                            = C.NL80211_STA_INFO_BEACON_LOSS\n\tNL80211_STA_INFO_BEACON_RX                              = C.NL80211_STA_INFO_BEACON_RX\n\tNL80211_STA_INFO_BEACON_SIGNAL_AVG                      = C.NL80211_STA_INFO_BEACON_SIGNAL_AVG\n\tNL80211_STA_INFO_BSS_PARAM                              = C.NL80211_STA_INFO_BSS_PARAM\n\tNL80211_STA_INFO_CHAIN_SIGNAL_AVG                       = C.NL80211_STA_INFO_CHAIN_SIGNAL_AVG\n\tNL80211_STA_INFO_CHAIN_SIGNAL                           = C.NL80211_STA_INFO_CHAIN_SIGNAL\n\tNL80211_STA_INFO_CONNECTED_TIME                         = C.NL80211_STA_INFO_CONNECTED_TIME\n\tNL80211_STA_INFO_CONNECTED_TO_AS                        = C.NL80211_STA_INFO_CONNECTED_TO_AS\n\tNL80211_STA_INFO_CONNECTED_TO_GATE                      = C.NL80211_STA_INFO_CONNECTED_TO_GATE\n\tNL80211_STA_INFO_DATA_ACK_SIGNAL_AVG                    = C.NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG\n\tNL80211_STA_INFO_EXPECTED_THROUGHPUT                    = C.NL80211_STA_INFO_EXPECTED_THROUGHPUT\n\tNL80211_STA_INFO_FCS_ERROR_COUNT                        = C.NL80211_STA_INFO_FCS_ERROR_COUNT\n\tNL80211_STA_INFO_INACTIVE_TIME                          = C.NL80211_STA_INFO_INACTIVE_TIME\n\tNL80211_STA_INFO_LLID                                   = C.NL80211_STA_INFO_LLID\n\tNL80211_STA_INFO_LOCAL_PM                               = C.NL80211_STA_INFO_LOCAL_PM\n\tNL80211_STA_INFO_MAX                                    = C.NL80211_STA_INFO_MAX\n\tNL80211_STA_INFO_NONPEER_PM                             = C.NL80211_STA_INFO_NONPEER_PM\n\tNL80211_STA_INFO_PAD                                    = C.NL80211_STA_INFO_PAD\n\tNL80211_STA_INFO_PEER_PM                                = C.NL80211_STA_INFO_PEER_PM\n\tNL80211_STA_INFO_PLID                                   = C.NL80211_STA_INFO_PLID\n\tNL80211_STA_INFO_PLINK_STATE                            = C.NL80211_STA_INFO_PLINK_STATE\n\tNL80211_STA_INFO_RX_BITRATE                             = C.NL80211_STA_INFO_RX_BITRATE\n\tNL80211_STA_INFO_RX_BYTES64                             = C.NL80211_STA_INFO_RX_BYTES64\n\tNL80211_STA_INFO_RX_BYTES                               = C.NL80211_STA_INFO_RX_BYTES\n\tNL80211_STA_INFO_RX_DROP_MISC                           = C.NL80211_STA_INFO_RX_DROP_MISC\n\tNL80211_STA_INFO_RX_DURATION                            = C.NL80211_STA_INFO_RX_DURATION\n\tNL80211_STA_INFO_RX_MPDUS                               = C.NL80211_STA_INFO_RX_MPDUS\n\tNL80211_STA_INFO_RX_PACKETS                             = C.NL80211_STA_INFO_RX_PACKETS\n\tNL80211_STA_INFO_SIGNAL_AVG                             = C.NL80211_STA_INFO_SIGNAL_AVG\n\tNL80211_STA_INFO_SIGNAL                                 = C.NL80211_STA_INFO_SIGNAL\n\tNL80211_STA_INFO_STA_FLAGS                              = C.NL80211_STA_INFO_STA_FLAGS\n\tNL80211_STA_INFO_TID_STATS                              = C.NL80211_STA_INFO_TID_STATS\n\tNL80211_STA_INFO_T_OFFSET                               = C.NL80211_STA_INFO_T_OFFSET\n\tNL80211_STA_INFO_TX_BITRATE                             = C.NL80211_STA_INFO_TX_BITRATE\n\tNL80211_STA_INFO_TX_BYTES64                             = C.NL80211_STA_INFO_TX_BYTES64\n\tNL80211_STA_INFO_TX_BYTES                               = C.NL80211_STA_INFO_TX_BYTES\n\tNL80211_STA_INFO_TX_DURATION                            = C.NL80211_STA_INFO_TX_DURATION\n\tNL80211_STA_INFO_TX_FAILED                              = C.NL80211_STA_INFO_TX_FAILED\n\tNL80211_STA_INFO_TX_PACKETS                             = C.NL80211_STA_INFO_TX_PACKETS\n\tNL80211_STA_INFO_TX_RETRIES                             = C.NL80211_STA_INFO_TX_RETRIES\n\tNL80211_STA_WME_MAX                                     = C.NL80211_STA_WME_MAX\n\tNL80211_STA_WME_MAX_SP                                  = C.NL80211_STA_WME_MAX_SP\n\tNL80211_STA_WME_UAPSD_QUEUES                            = C.NL80211_STA_WME_UAPSD_QUEUES\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_BUSY                   = C.NL80211_SURVEY_INFO_CHANNEL_TIME_BUSY\n\tNL80211_SURVEY_INFO_CHANNEL_TIME                        = C.NL80211_SURVEY_INFO_CHANNEL_TIME\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY               = C.NL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_RX                     = C.NL80211_SURVEY_INFO_CHANNEL_TIME_RX\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_TX                     = C.NL80211_SURVEY_INFO_CHANNEL_TIME_TX\n\tNL80211_SURVEY_INFO_FREQUENCY                           = C.NL80211_SURVEY_INFO_FREQUENCY\n\tNL80211_SURVEY_INFO_FREQUENCY_OFFSET                    = C.NL80211_SURVEY_INFO_FREQUENCY_OFFSET\n\tNL80211_SURVEY_INFO_IN_USE                              = C.NL80211_SURVEY_INFO_IN_USE\n\tNL80211_SURVEY_INFO_MAX                                 = C.NL80211_SURVEY_INFO_MAX\n\tNL80211_SURVEY_INFO_NOISE                               = C.NL80211_SURVEY_INFO_NOISE\n\tNL80211_SURVEY_INFO_PAD                                 = C.NL80211_SURVEY_INFO_PAD\n\tNL80211_SURVEY_INFO_TIME_BSS_RX                         = C.NL80211_SURVEY_INFO_TIME_BSS_RX\n\tNL80211_SURVEY_INFO_TIME_BUSY                           = C.NL80211_SURVEY_INFO_TIME_BUSY\n\tNL80211_SURVEY_INFO_TIME                                = C.NL80211_SURVEY_INFO_TIME\n\tNL80211_SURVEY_INFO_TIME_EXT_BUSY                       = C.NL80211_SURVEY_INFO_TIME_EXT_BUSY\n\tNL80211_SURVEY_INFO_TIME_RX                             = C.NL80211_SURVEY_INFO_TIME_RX\n\tNL80211_SURVEY_INFO_TIME_SCAN                           = C.NL80211_SURVEY_INFO_TIME_SCAN\n\tNL80211_SURVEY_INFO_TIME_TX                             = C.NL80211_SURVEY_INFO_TIME_TX\n\tNL80211_TDLS_DISABLE_LINK                               = C.NL80211_TDLS_DISABLE_LINK\n\tNL80211_TDLS_DISCOVERY_REQ                              = C.NL80211_TDLS_DISCOVERY_REQ\n\tNL80211_TDLS_ENABLE_LINK                                = C.NL80211_TDLS_ENABLE_LINK\n\tNL80211_TDLS_PEER_HE                                    = C.NL80211_TDLS_PEER_HE\n\tNL80211_TDLS_PEER_HT                                    = C.NL80211_TDLS_PEER_HT\n\tNL80211_TDLS_PEER_VHT                                   = C.NL80211_TDLS_PEER_VHT\n\tNL80211_TDLS_PEER_WMM                                   = C.NL80211_TDLS_PEER_WMM\n\tNL80211_TDLS_SETUP                                      = C.NL80211_TDLS_SETUP\n\tNL80211_TDLS_TEARDOWN                                   = C.NL80211_TDLS_TEARDOWN\n\tNL80211_TID_CONFIG_ATTR_AMPDU_CTRL                      = C.NL80211_TID_CONFIG_ATTR_AMPDU_CTRL\n\tNL80211_TID_CONFIG_ATTR_AMSDU_CTRL                      = C.NL80211_TID_CONFIG_ATTR_AMSDU_CTRL\n\tNL80211_TID_CONFIG_ATTR_MAX                             = C.NL80211_TID_CONFIG_ATTR_MAX\n\tNL80211_TID_CONFIG_ATTR_NOACK                           = C.NL80211_TID_CONFIG_ATTR_NOACK\n\tNL80211_TID_CONFIG_ATTR_OVERRIDE                        = C.NL80211_TID_CONFIG_ATTR_OVERRIDE\n\tNL80211_TID_CONFIG_ATTR_PAD                             = C.NL80211_TID_CONFIG_ATTR_PAD\n\tNL80211_TID_CONFIG_ATTR_PEER_SUPP                       = C.NL80211_TID_CONFIG_ATTR_PEER_SUPP\n\tNL80211_TID_CONFIG_ATTR_RETRY_LONG                      = C.NL80211_TID_CONFIG_ATTR_RETRY_LONG\n\tNL80211_TID_CONFIG_ATTR_RETRY_SHORT                     = C.NL80211_TID_CONFIG_ATTR_RETRY_SHORT\n\tNL80211_TID_CONFIG_ATTR_RTSCTS_CTRL                     = C.NL80211_TID_CONFIG_ATTR_RTSCTS_CTRL\n\tNL80211_TID_CONFIG_ATTR_TIDS                            = C.NL80211_TID_CONFIG_ATTR_TIDS\n\tNL80211_TID_CONFIG_ATTR_TX_RATE                         = C.NL80211_TID_CONFIG_ATTR_TX_RATE\n\tNL80211_TID_CONFIG_ATTR_TX_RATE_TYPE                    = C.NL80211_TID_CONFIG_ATTR_TX_RATE_TYPE\n\tNL80211_TID_CONFIG_ATTR_VIF_SUPP                        = C.NL80211_TID_CONFIG_ATTR_VIF_SUPP\n\tNL80211_TID_CONFIG_DISABLE                              = C.NL80211_TID_CONFIG_DISABLE\n\tNL80211_TID_CONFIG_ENABLE                               = C.NL80211_TID_CONFIG_ENABLE\n\tNL80211_TID_STATS_MAX                                   = C.NL80211_TID_STATS_MAX\n\tNL80211_TID_STATS_PAD                                   = C.NL80211_TID_STATS_PAD\n\tNL80211_TID_STATS_RX_MSDU                               = C.NL80211_TID_STATS_RX_MSDU\n\tNL80211_TID_STATS_TX_MSDU                               = C.NL80211_TID_STATS_TX_MSDU\n\tNL80211_TID_STATS_TX_MSDU_FAILED                        = C.NL80211_TID_STATS_TX_MSDU_FAILED\n\tNL80211_TID_STATS_TX_MSDU_RETRIES                       = C.NL80211_TID_STATS_TX_MSDU_RETRIES\n\tNL80211_TID_STATS_TXQ_STATS                             = C.NL80211_TID_STATS_TXQ_STATS\n\tNL80211_TIMEOUT_ASSOC                                   = C.NL80211_TIMEOUT_ASSOC\n\tNL80211_TIMEOUT_AUTH                                    = C.NL80211_TIMEOUT_AUTH\n\tNL80211_TIMEOUT_SCAN                                    = C.NL80211_TIMEOUT_SCAN\n\tNL80211_TIMEOUT_UNSPECIFIED                             = C.NL80211_TIMEOUT_UNSPECIFIED\n\tNL80211_TKIP_DATA_OFFSET_ENCR_KEY                       = C.NL80211_TKIP_DATA_OFFSET_ENCR_KEY\n\tNL80211_TKIP_DATA_OFFSET_RX_MIC_KEY                     = C.NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY\n\tNL80211_TKIP_DATA_OFFSET_TX_MIC_KEY                     = C.NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY\n\tNL80211_TX_POWER_AUTOMATIC                              = C.NL80211_TX_POWER_AUTOMATIC\n\tNL80211_TX_POWER_FIXED                                  = C.NL80211_TX_POWER_FIXED\n\tNL80211_TX_POWER_LIMITED                                = C.NL80211_TX_POWER_LIMITED\n\tNL80211_TXQ_ATTR_AC                                     = C.NL80211_TXQ_ATTR_AC\n\tNL80211_TXQ_ATTR_AIFS                                   = C.NL80211_TXQ_ATTR_AIFS\n\tNL80211_TXQ_ATTR_CWMAX                                  = C.NL80211_TXQ_ATTR_CWMAX\n\tNL80211_TXQ_ATTR_CWMIN                                  = C.NL80211_TXQ_ATTR_CWMIN\n\tNL80211_TXQ_ATTR_MAX                                    = C.NL80211_TXQ_ATTR_MAX\n\tNL80211_TXQ_ATTR_QUEUE                                  = C.NL80211_TXQ_ATTR_QUEUE\n\tNL80211_TXQ_ATTR_TXOP                                   = C.NL80211_TXQ_ATTR_TXOP\n\tNL80211_TXQ_Q_BE                                        = C.NL80211_TXQ_Q_BE\n\tNL80211_TXQ_Q_BK                                        = C.NL80211_TXQ_Q_BK\n\tNL80211_TXQ_Q_VI                                        = C.NL80211_TXQ_Q_VI\n\tNL80211_TXQ_Q_VO                                        = C.NL80211_TXQ_Q_VO\n\tNL80211_TXQ_STATS_BACKLOG_BYTES                         = C.NL80211_TXQ_STATS_BACKLOG_BYTES\n\tNL80211_TXQ_STATS_BACKLOG_PACKETS                       = C.NL80211_TXQ_STATS_BACKLOG_PACKETS\n\tNL80211_TXQ_STATS_COLLISIONS                            = C.NL80211_TXQ_STATS_COLLISIONS\n\tNL80211_TXQ_STATS_DROPS                                 = C.NL80211_TXQ_STATS_DROPS\n\tNL80211_TXQ_STATS_ECN_MARKS                             = C.NL80211_TXQ_STATS_ECN_MARKS\n\tNL80211_TXQ_STATS_FLOWS                                 = C.NL80211_TXQ_STATS_FLOWS\n\tNL80211_TXQ_STATS_MAX                                   = C.NL80211_TXQ_STATS_MAX\n\tNL80211_TXQ_STATS_MAX_FLOWS                             = C.NL80211_TXQ_STATS_MAX_FLOWS\n\tNL80211_TXQ_STATS_OVERLIMIT                             = C.NL80211_TXQ_STATS_OVERLIMIT\n\tNL80211_TXQ_STATS_OVERMEMORY                            = C.NL80211_TXQ_STATS_OVERMEMORY\n\tNL80211_TXQ_STATS_TX_BYTES                              = C.NL80211_TXQ_STATS_TX_BYTES\n\tNL80211_TXQ_STATS_TX_PACKETS                            = C.NL80211_TXQ_STATS_TX_PACKETS\n\tNL80211_TX_RATE_AUTOMATIC                               = C.NL80211_TX_RATE_AUTOMATIC\n\tNL80211_TXRATE_DEFAULT_GI                               = C.NL80211_TXRATE_DEFAULT_GI\n\tNL80211_TX_RATE_FIXED                                   = C.NL80211_TX_RATE_FIXED\n\tNL80211_TXRATE_FORCE_LGI                                = C.NL80211_TXRATE_FORCE_LGI\n\tNL80211_TXRATE_FORCE_SGI                                = C.NL80211_TXRATE_FORCE_SGI\n\tNL80211_TXRATE_GI                                       = C.NL80211_TXRATE_GI\n\tNL80211_TXRATE_HE                                       = C.NL80211_TXRATE_HE\n\tNL80211_TXRATE_HE_GI                                    = C.NL80211_TXRATE_HE_GI\n\tNL80211_TXRATE_HE_LTF                                   = C.NL80211_TXRATE_HE_LTF\n\tNL80211_TXRATE_HT                                       = C.NL80211_TXRATE_HT\n\tNL80211_TXRATE_LEGACY                                   = C.NL80211_TXRATE_LEGACY\n\tNL80211_TX_RATE_LIMITED                                 = C.NL80211_TX_RATE_LIMITED\n\tNL80211_TXRATE_MAX                                      = C.NL80211_TXRATE_MAX\n\tNL80211_TXRATE_MCS                                      = C.NL80211_TXRATE_MCS\n\tNL80211_TXRATE_VHT                                      = C.NL80211_TXRATE_VHT\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT                 = C.NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX                 = C.NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL                = C.NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL\n\tNL80211_USER_REG_HINT_CELL_BASE                         = C.NL80211_USER_REG_HINT_CELL_BASE\n\tNL80211_USER_REG_HINT_INDOOR                            = C.NL80211_USER_REG_HINT_INDOOR\n\tNL80211_USER_REG_HINT_USER                              = C.NL80211_USER_REG_HINT_USER\n\tNL80211_VENDOR_ID_IS_LINUX                              = C.NL80211_VENDOR_ID_IS_LINUX\n\tNL80211_VHT_CAPABILITY_LEN                              = C.NL80211_VHT_CAPABILITY_LEN\n\tNL80211_VHT_NSS_MAX                                     = C.NL80211_VHT_NSS_MAX\n\tNL80211_WIPHY_NAME_MAXLEN                               = C.NL80211_WIPHY_NAME_MAXLEN\n\tNL80211_WMMR_AIFSN                                      = C.NL80211_WMMR_AIFSN\n\tNL80211_WMMR_CW_MAX                                     = C.NL80211_WMMR_CW_MAX\n\tNL80211_WMMR_CW_MIN                                     = C.NL80211_WMMR_CW_MIN\n\tNL80211_WMMR_MAX                                        = C.NL80211_WMMR_MAX\n\tNL80211_WMMR_TXOP                                       = C.NL80211_WMMR_TXOP\n\tNL80211_WOWLAN_PKTPAT_MASK                              = C.NL80211_WOWLAN_PKTPAT_MASK\n\tNL80211_WOWLAN_PKTPAT_OFFSET                            = C.NL80211_WOWLAN_PKTPAT_OFFSET\n\tNL80211_WOWLAN_PKTPAT_PATTERN                           = C.NL80211_WOWLAN_PKTPAT_PATTERN\n\tNL80211_WOWLAN_TCP_DATA_INTERVAL                        = C.NL80211_WOWLAN_TCP_DATA_INTERVAL\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD                         = C.NL80211_WOWLAN_TCP_DATA_PAYLOAD\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ                     = C.NL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN                   = C.NL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN\n\tNL80211_WOWLAN_TCP_DST_IPV4                             = C.NL80211_WOWLAN_TCP_DST_IPV4\n\tNL80211_WOWLAN_TCP_DST_MAC                              = C.NL80211_WOWLAN_TCP_DST_MAC\n\tNL80211_WOWLAN_TCP_DST_PORT                             = C.NL80211_WOWLAN_TCP_DST_PORT\n\tNL80211_WOWLAN_TCP_SRC_IPV4                             = C.NL80211_WOWLAN_TCP_SRC_IPV4\n\tNL80211_WOWLAN_TCP_SRC_PORT                             = C.NL80211_WOWLAN_TCP_SRC_PORT\n\tNL80211_WOWLAN_TCP_WAKE_MASK                            = C.NL80211_WOWLAN_TCP_WAKE_MASK\n\tNL80211_WOWLAN_TCP_WAKE_PAYLOAD                         = C.NL80211_WOWLAN_TCP_WAKE_PAYLOAD\n\tNL80211_WOWLAN_TRIG_4WAY_HANDSHAKE                      = C.NL80211_WOWLAN_TRIG_4WAY_HANDSHAKE\n\tNL80211_WOWLAN_TRIG_ANY                                 = C.NL80211_WOWLAN_TRIG_ANY\n\tNL80211_WOWLAN_TRIG_DISCONNECT                          = C.NL80211_WOWLAN_TRIG_DISCONNECT\n\tNL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST                   = C.NL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE                   = C.NL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED                 = C.NL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED\n\tNL80211_WOWLAN_TRIG_MAGIC_PKT                           = C.NL80211_WOWLAN_TRIG_MAGIC_PKT\n\tNL80211_WOWLAN_TRIG_NET_DETECT                          = C.NL80211_WOWLAN_TRIG_NET_DETECT\n\tNL80211_WOWLAN_TRIG_NET_DETECT_RESULTS                  = C.NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS\n\tNL80211_WOWLAN_TRIG_PKT_PATTERN                         = C.NL80211_WOWLAN_TRIG_PKT_PATTERN\n\tNL80211_WOWLAN_TRIG_RFKILL_RELEASE                      = C.NL80211_WOWLAN_TRIG_RFKILL_RELEASE\n\tNL80211_WOWLAN_TRIG_TCP_CONNECTION                      = C.NL80211_WOWLAN_TRIG_TCP_CONNECTION\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211                    = C.NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN                = C.NL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023                     = C.NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN                 = C.NL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST                 = C.NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH                    = C.NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS             = C.NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS\n\tNL80211_WPA_VERSION_1                                   = C.NL80211_WPA_VERSION_1\n\tNL80211_WPA_VERSION_2                                   = C.NL80211_WPA_VERSION_2\n\tNL80211_WPA_VERSION_3                                   = C.NL80211_WPA_VERSION_3\n)\n\n// generated by:\n// perl -nlE '/^\\s*((FR_ACT|FRA)_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/fib_rules.h\nconst (\n\tFRA_UNSPEC             = C.FRA_UNSPEC\n\tFRA_DST                = C.FRA_DST\n\tFRA_SRC                = C.FRA_SRC\n\tFRA_IIFNAME            = C.FRA_IIFNAME\n\tFRA_GOTO               = C.FRA_GOTO\n\tFRA_UNUSED2            = C.FRA_UNUSED2\n\tFRA_PRIORITY           = C.FRA_PRIORITY\n\tFRA_UNUSED3            = C.FRA_UNUSED3\n\tFRA_UNUSED4            = C.FRA_UNUSED4\n\tFRA_UNUSED5            = C.FRA_UNUSED5\n\tFRA_FWMARK             = C.FRA_FWMARK\n\tFRA_FLOW               = C.FRA_FLOW\n\tFRA_TUN_ID             = C.FRA_TUN_ID\n\tFRA_SUPPRESS_IFGROUP   = C.FRA_SUPPRESS_IFGROUP\n\tFRA_SUPPRESS_PREFIXLEN = C.FRA_SUPPRESS_PREFIXLEN\n\tFRA_TABLE              = C.FRA_TABLE\n\tFRA_FWMASK             = C.FRA_FWMASK\n\tFRA_OIFNAME            = C.FRA_OIFNAME\n\tFRA_PAD                = C.FRA_PAD\n\tFRA_L3MDEV             = C.FRA_L3MDEV\n\tFRA_UID_RANGE          = C.FRA_UID_RANGE\n\tFRA_PROTOCOL           = C.FRA_PROTOCOL\n\tFRA_IP_PROTO           = C.FRA_IP_PROTO\n\tFRA_SPORT_RANGE        = C.FRA_SPORT_RANGE\n\tFRA_DPORT_RANGE        = C.FRA_DPORT_RANGE\n\tFR_ACT_UNSPEC          = C.FR_ACT_UNSPEC\n\tFR_ACT_TO_TBL          = C.FR_ACT_TO_TBL\n\tFR_ACT_GOTO            = C.FR_ACT_GOTO\n\tFR_ACT_NOP             = C.FR_ACT_NOP\n\tFR_ACT_RES3            = C.FR_ACT_RES3\n\tFR_ACT_RES4            = C.FR_ACT_RES4\n\tFR_ACT_BLACKHOLE       = C.FR_ACT_BLACKHOLE\n\tFR_ACT_UNREACHABLE     = C.FR_ACT_UNREACHABLE\n\tFR_ACT_PROHIBIT        = C.FR_ACT_PROHIBIT\n)\n\n// generated by:\n// perl -nlE '/^\\s*(AUDIT_NLGRP_\\w+)/ && say \"$1 = C.$1\"' audit.h\nconst (\n\tAUDIT_NLGRP_NONE    = C.AUDIT_NLGRP_NONE\n\tAUDIT_NLGRP_READLOG = C.AUDIT_NLGRP_READLOG\n)\n\n// generated by:\n// perl -nlE '/^#define (TUN_F_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/if_tun.h\nconst (\n\tTUN_F_CSUM    = C.TUN_F_CSUM\n\tTUN_F_TSO4    = C.TUN_F_TSO4\n\tTUN_F_TSO6    = C.TUN_F_TSO6\n\tTUN_F_TSO_ECN = C.TUN_F_TSO_ECN\n\tTUN_F_UFO     = C.TUN_F_UFO\n\tTUN_F_USO4    = C.TUN_F_USO4\n\tTUN_F_USO6    = C.TUN_F_USO6\n)\n\n// generated by:\n// perl -nlE '/^#define (VIRTIO_NET_HDR_F_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/virtio_net.h\nconst (\n\tVIRTIO_NET_HDR_F_NEEDS_CSUM = C.VIRTIO_NET_HDR_F_NEEDS_CSUM\n\tVIRTIO_NET_HDR_F_DATA_VALID = C.VIRTIO_NET_HDR_F_DATA_VALID\n\tVIRTIO_NET_HDR_F_RSC_INFO   = C.VIRTIO_NET_HDR_F_RSC_INFO\n)\n\n// generated by:\n// perl -nlE '/^#define (VIRTIO_NET_HDR_GSO_\\w+)/ && say \"$1 = C.$1\"' include/uapi/linux/virtio_net.h\nconst (\n\tVIRTIO_NET_HDR_GSO_NONE   = C.VIRTIO_NET_HDR_GSO_NONE\n\tVIRTIO_NET_HDR_GSO_TCPV4  = C.VIRTIO_NET_HDR_GSO_TCPV4\n\tVIRTIO_NET_HDR_GSO_UDP    = C.VIRTIO_NET_HDR_GSO_UDP\n\tVIRTIO_NET_HDR_GSO_TCPV6  = C.VIRTIO_NET_HDR_GSO_TCPV6\n\tVIRTIO_NET_HDR_GSO_UDP_L4 = C.VIRTIO_NET_HDR_GSO_UDP_L4\n\tVIRTIO_NET_HDR_GSO_ECN    = C.VIRTIO_NET_HDR_GSO_ECN\n)\n\ntype RISCVHWProbePairs C.struct_riscv_hwprobe\n\n// Filtered out for non RISC-V architectures in mkpost.go\n// generated by:\n// perl -nlE '/^#define\\s+(RISCV_HWPROBE_\\w+)/ && say \"$1 = C.$1\"' /tmp/riscv64/include/asm/hwprobe.h\nconst (\n\tRISCV_HWPROBE_KEY_MVENDORID          = C.RISCV_HWPROBE_KEY_MVENDORID\n\tRISCV_HWPROBE_KEY_MARCHID            = C.RISCV_HWPROBE_KEY_MARCHID\n\tRISCV_HWPROBE_KEY_MIMPID             = C.RISCV_HWPROBE_KEY_MIMPID\n\tRISCV_HWPROBE_KEY_BASE_BEHAVIOR      = C.RISCV_HWPROBE_KEY_BASE_BEHAVIOR\n\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA      = C.RISCV_HWPROBE_BASE_BEHAVIOR_IMA\n\tRISCV_HWPROBE_KEY_IMA_EXT_0          = C.RISCV_HWPROBE_KEY_IMA_EXT_0\n\tRISCV_HWPROBE_IMA_FD                 = C.RISCV_HWPROBE_IMA_FD\n\tRISCV_HWPROBE_IMA_C                  = C.RISCV_HWPROBE_IMA_C\n\tRISCV_HWPROBE_IMA_V                  = C.RISCV_HWPROBE_IMA_V\n\tRISCV_HWPROBE_EXT_ZBA                = C.RISCV_HWPROBE_EXT_ZBA\n\tRISCV_HWPROBE_EXT_ZBB                = C.RISCV_HWPROBE_EXT_ZBB\n\tRISCV_HWPROBE_EXT_ZBS                = C.RISCV_HWPROBE_EXT_ZBS\n\tRISCV_HWPROBE_KEY_CPUPERF_0          = C.RISCV_HWPROBE_KEY_CPUPERF_0\n\tRISCV_HWPROBE_MISALIGNED_UNKNOWN     = C.RISCV_HWPROBE_MISALIGNED_UNKNOWN\n\tRISCV_HWPROBE_MISALIGNED_EMULATED    = C.RISCV_HWPROBE_MISALIGNED_EMULATED\n\tRISCV_HWPROBE_MISALIGNED_SLOW        = C.RISCV_HWPROBE_MISALIGNED_SLOW\n\tRISCV_HWPROBE_MISALIGNED_FAST        = C.RISCV_HWPROBE_MISALIGNED_FAST\n\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED = C.RISCV_HWPROBE_MISALIGNED_UNSUPPORTED\n\tRISCV_HWPROBE_MISALIGNED_MASK        = C.RISCV_HWPROBE_MISALIGNED_MASK\n)\n\ntype SchedAttr C.struct_sched_attr\n\nconst SizeofSchedAttr = C.sizeof_struct_sched_attr\n\ntype Cachestat_t C.struct_cachestat\ntype CachestatRange C.struct_cachestat_range\n"
  },
  {
    "path": "gossh/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\")/..\" && pwd):/build generate:$GOOS\n\texit\nfi\n\nGOOSARCH_in=syscall_$GOOSARCH.go\ncase \"$GOOSARCH\" in\n_* | *_ | _)\n\techo 'undefined $GOOS_$GOARCH:' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\naix_ppc)\n\tmkerrors=\"$mkerrors -maix32\"\n\tmksyscall=\"go run mksyscall_aix_ppc.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\naix_ppc64)\n\tmkerrors=\"$mkerrors -maix64\"\n\tmksyscall=\"go run mksyscall_aix_ppc64.go -aix\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\ndarwin_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndarwin_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\tmkasm=\"go run mkasm.go\"\n\t;;\ndragonfly_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -dragonfly\"\n\tmksysnum=\"go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nfreebsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -arm\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nfreebsd_riscv64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\"go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_386)\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_amd64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nnetbsd_arm)\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -netbsd -arm\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nnetbsd_arm64)\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -netbsd\"\n\tmksysnum=\"go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_386)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m32\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_amd64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nopenbsd_arm)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors\"\n\tmksyscall=\"go run mksyscall.go -l32 -openbsd -arm -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_arm64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_mips64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_ppc64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nopenbsd_riscv64)\n\tmkasm=\"go run mkasm.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksyscall=\"go run mksyscall.go -openbsd -libc\"\n\tmksysctl=\"go run mksysctl_openbsd.go\"\n\t# Let the type of C char be signed for making the bare syscall\n\t# API consistent across platforms.\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char\"\n\t;;\nsolaris_amd64)\n\tmksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\"$mkerrors -m64\"\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\nillumos_amd64)\n        mksyscall=\"go run mksyscall_solaris.go\"\n\tmkerrors=\n\tmksysnum=\n\tmktypes=\"GOARCH=$GOARCH go tool cgo -godefs\"\n\t;;\n*)\n\techo 'unrecognized $GOOS_$GOARCH: ' \"$GOOSARCH\" 1>&2\n\texit 1\n\t;;\nesac\n\n(\n\tif [ -n \"$mkerrors\" ]; then echo \"$mkerrors |gofmt >$zerrors\"; fi\n\tcase \"$GOOS\" in\n\t*)\n\t\tsyscall_goos=\"syscall_$GOOS.go\"\n\t\tcase \"$GOOS\" in\n\t\tdarwin | dragonfly | freebsd | netbsd | openbsd)\n\t\t\tsyscall_goos=\"syscall_bsd.go $syscall_goos\"\n\t\t\t;;\n\t\tesac\n\t\tif [ -n \"$mksyscall\" ]; then\n\t\t\tif [ \"$GOOSARCH\" == \"aix_ppc64\" ]; then\n\t\t\t\t# aix/ppc64 script generates files instead of writing to stdin.\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_\"$GOOSARCH\"_gccgo.go && gofmt -w zsyscall_\"$GOOSARCH\"_gc.go \" ;\n\t\t\telif [ \"$GOOS\" == \"illumos\" ]; then\n\t\t\t        # illumos code generation requires a --illumos switch\n\t\t\t        echo \"$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go\";\n\t\t\t        # illumos implies solaris, so solaris code generation is also required\n\t\t\t\techo \"$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go\";\n\t\t\telse\n\t\t\t\techo \"$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go\";\n\t\t\tfi\n\t\tfi\n\tesac\n\tif [ -n \"$mksysctl\" ]; then echo \"$mksysctl |gofmt >$zsysctl\"; fi\n\tif [ -n \"$mksysnum\" ]; then echo \"$mksysnum |gofmt >zsysnum_$GOOSARCH.go\"; fi\n\tif [ -n \"$mktypes\" ]; then echo \"$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go\"; fi\n\tif [ -n \"$mkasm\" ]; then echo \"$mkasm $GOOS $GOARCH\"; fi\n) | $run\n"
  },
  {
    "path": "gossh/sys/unix/mkasm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ignore\n\n// mkasm.go generates assembly trampolines to call library routines from Go.\n// This program must be run after mksyscall.go.\npackage main\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"log\"\n\t\"os\"\n\t\"sort\"\n\t\"strings\"\n)\n\nfunc archPtrSize(arch string) int {\n\tswitch arch {\n\tcase \"386\", \"arm\":\n\t\treturn 4\n\tcase \"amd64\", \"arm64\", \"mips64\", \"ppc64\", \"riscv64\":\n\t\treturn 8\n\tdefault:\n\t\tlog.Fatalf(\"Unknown arch %q\", arch)\n\t\treturn 0\n\t}\n}\n\nfunc generateASMFile(goos, arch string, inFileNames []string, outFileName string) map[string]bool {\n\ttrampolines := map[string]bool{}\n\tvar orderedTrampolines []string\n\tfor _, inFileName := range inFileNames {\n\t\tin, err := os.ReadFile(inFileName)\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"Failed to read file: %v\", err)\n\t\t}\n\t\tfor _, line := range strings.Split(string(in), \"\\n\") {\n\t\t\tconst prefix = \"var \"\n\t\t\tconst suffix = \"_trampoline_addr uintptr\"\n\t\t\tif !strings.HasPrefix(line, prefix) || !strings.HasSuffix(line, suffix) {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tfn := strings.TrimSuffix(strings.TrimPrefix(line, prefix), suffix)\n\t\t\tif !trampolines[fn] {\n\t\t\t\torderedTrampolines = append(orderedTrampolines, fn)\n\t\t\t\ttrampolines[fn] = true\n\t\t\t}\n\t\t}\n\t}\n\n\tptrSize := archPtrSize(arch)\n\n\tvar out bytes.Buffer\n\tfmt.Fprintf(&out, \"// go run mkasm.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, \"#include \\\"textflag.h\\\"\\n\")\n\tfor _, fn := range orderedTrampolines {\n\t\tfmt.Fprintf(&out, \"\\nTEXT %s_trampoline<>(SB),NOSPLIT,$0-0\\n\", fn)\n\t\tif goos == \"openbsd\" && arch == \"ppc64\" {\n\t\t\tfmt.Fprintf(&out, \"\\tCALL\\t%s(SB)\\n\", fn)\n\t\t\tfmt.Fprintf(&out, \"\\tRET\\n\")\n\t\t} else {\n\t\t\tfmt.Fprintf(&out, \"\\tJMP\\t%s(SB)\\n\", fn)\n\t\t}\n\t\tfmt.Fprintf(&out, \"GLOBL\\t·%s_trampoline_addr(SB), RODATA, $%d\\n\", fn, ptrSize)\n\t\tfmt.Fprintf(&out, \"DATA\\t·%s_trampoline_addr(SB)/%d, $%s_trampoline<>(SB)\\n\", fn, ptrSize, fn)\n\t}\n\n\tif err := os.WriteFile(outFileName, out.Bytes(), 0644); err != nil {\n\t\tlog.Fatalf(\"Failed to write assembly file %q: %v\", outFileName, err)\n\t}\n\n\treturn trampolines\n}\n\nconst darwinTestTemplate = `// go run mkasm.go %s\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build darwin\n\npackage unix\n\n// All the _trampoline functions in zsyscall_darwin_%s.s.\nvar darwinTests = [...]darwinTest{\n%s}\n`\n\nfunc writeDarwinTest(trampolines map[string]bool, fileName, arch string) {\n\tvar sortedTrampolines []string\n\tfor fn := range trampolines {\n\t\tsortedTrampolines = append(sortedTrampolines, fn)\n\t}\n\tsort.Strings(sortedTrampolines)\n\n\tvar out bytes.Buffer\n\n\tconst prefix = \"libc_\"\n\tfor _, fn := range sortedTrampolines {\n\t\tfmt.Fprintf(&out, fmt.Sprintf(\"\\t{%q, %s_trampoline_addr},\\n\", strings.TrimPrefix(fn, prefix), fn))\n\t}\n\tlines := out.String()\n\n\tout.Reset()\n\tfmt.Fprintf(&out, darwinTestTemplate, strings.Join(os.Args[1:], \" \"), arch, lines)\n\n\tif err := os.WriteFile(fileName, out.Bytes(), 0644); err != nil {\n\t\tlog.Fatalf(\"Failed to write test file %q: %v\", fileName, err)\n\t}\n}\n\nfunc main() {\n\tif len(os.Args) != 3 {\n\t\tlog.Fatalf(\"Usage: %s <goos> <arch>\", os.Args[0])\n\t}\n\tgoos, arch := os.Args[1], os.Args[2]\n\n\tsyscallFilename := fmt.Sprintf(\"syscall_%s.go\", goos)\n\tsyscallArchFilename := fmt.Sprintf(\"syscall_%s_%s.go\", goos, arch)\n\tzsyscallArchFilename := fmt.Sprintf(\"zsyscall_%s_%s.go\", goos, arch)\n\tzsyscallASMFileName := fmt.Sprintf(\"zsyscall_%s_%s.s\", goos, arch)\n\n\tinFileNames := []string{\n\t\tsyscallFilename,\n\t\tsyscallArchFilename,\n\t\tzsyscallArchFilename,\n\t}\n\n\ttrampolines := generateASMFile(goos, arch, inFileNames, zsyscallASMFileName)\n\n\tif goos == \"darwin\" {\n\t\twriteDarwinTest(trampolines, fmt.Sprintf(\"darwin_%s_test.go\", arch), arch)\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/unix/mkerrors.sh",
    "content": "#!/usr/bin/env bash\n# Copyright 2009 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\n# Generate Go code listing errors and other #defined constant\n# values (ENAMETOOLONG etc.), by asking the preprocessor\n# about the definitions.\n\nunset LANG\nexport LC_ALL=C\nexport LC_CTYPE=C\n\nif test -z \"$GOARCH\" -o -z \"$GOOS\"; then\n\techo 1>&2 \"GOARCH or GOOS not defined in environment\"\n\texit 1\nfi\n\n# Check that we are using the new build system if we should\nif [[ \"$GOOS\" = \"linux\" ]] && [[ \"$GOLANG_SYS_BUILD\" != \"docker\" ]]; then\n\techo 1>&2 \"In the Docker based build system, mkerrors should not be called directly.\"\n\techo 1>&2 \"See README.md\"\n\texit 1\nfi\n\nif [[ \"$GOOS\" = \"aix\" ]]; then\n\tCC=${CC:-gcc}\nelse\n\tCC=${CC:-cc}\nfi\n\nif [[ \"$GOOS\" = \"solaris\" ]]; then\n\t# Assumes GNU versions of utilities in PATH.\n\texport PATH=/usr/gnu/bin:$PATH\nfi\n\nuname=$(uname)\n\nincludes_AIX='\n#include <net/if.h>\n#include <net/netopt.h>\n#include <netinet/ip_mroute.h>\n#include <sys/protosw.h>\n#include <sys/stropts.h>\n#include <sys/mman.h>\n#include <sys/poll.h>\n#include <sys/select.h>\n#include <sys/termio.h>\n#include <termios.h>\n#include <fcntl.h>\n\n#define AF_LOCAL AF_UNIX\n'\n\nincludes_Darwin='\n#define _DARWIN_C_SOURCE\n#define KERNEL 1\n#define _DARWIN_USE_64_BIT_INODE\n#define __APPLE_USE_RFC_3542\n#include <stdint.h>\n#include <sys/attr.h>\n#include <sys/clonefile.h>\n#include <sys/kern_control.h>\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/ptrace.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/sys_domain.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/xattr.h>\n#include <sys/vsock.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <termios.h>\n\n// for backwards compatibility because moved TIOCREMOTE to Kernel.framework after MacOSX12.0.sdk.\n#define TIOCREMOTE 0x80047469\n'\n\nincludes_DragonFly='\n#include <sys/types.h>\n#include <sys/event.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_clone.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <net/ip_mroute/ip_mroute.h>\n'\n\nincludes_FreeBSD='\n#include <sys/capsicum.h>\n#include <sys/param.h>\n#include <sys/types.h>\n#include <sys/disk.h>\n#include <sys/event.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/un.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/ptrace.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <termios.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <sys/extattr.h>\n\n#if __FreeBSD__ >= 10\n#define IFT_CARP\t0xf8\t// IFT_CARP is deprecated in FreeBSD 10\n#undef SIOCAIFADDR\n#define SIOCAIFADDR\t_IOW(105, 26, struct oifaliasreq)\t// ifaliasreq contains if_data\n#undef SIOCSIFPHYADDR\n#define SIOCSIFPHYADDR\t_IOW(105, 70, struct oifaliasreq)\t// ifaliasreq contains if_data\n#endif\n'\n\nincludes_Linux='\n#define _LARGEFILE_SOURCE\n#define _LARGEFILE64_SOURCE\n#ifndef __LP64__\n#define _FILE_OFFSET_BITS 64\n#endif\n#define _GNU_SOURCE\n\n// <sys/ioctl.h> is broken on powerpc64, as it fails to include definitions of\n// these structures. We just include them copied from <bits/termios.h>.\n#if defined(__powerpc__)\nstruct sgttyb {\n        char    sg_ispeed;\n        char    sg_ospeed;\n        char    sg_erase;\n        char    sg_kill;\n        short   sg_flags;\n};\n\nstruct tchars {\n        char    t_intrc;\n        char    t_quitc;\n        char    t_startc;\n        char    t_stopc;\n        char    t_eofc;\n        char    t_brkc;\n};\n\nstruct ltchars {\n        char    t_suspc;\n        char    t_dsuspc;\n        char    t_rprntc;\n        char    t_flushc;\n        char    t_werasc;\n        char    t_lnextc;\n};\n#endif\n\n#include <bits/sockaddr.h>\n#include <sys/epoll.h>\n#include <sys/eventfd.h>\n#include <sys/inotify.h>\n#include <sys/ioctl.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/prctl.h>\n#include <sys/stat.h>\n#include <sys/types.h>\n#include <sys/time.h>\n#include <sys/select.h>\n#include <sys/signalfd.h>\n#include <sys/socket.h>\n#include <sys/timerfd.h>\n#include <sys/uio.h>\n#include <sys/xattr.h>\n#include <netinet/udp.h>\n#include <linux/audit.h>\n#include <linux/bpf.h>\n#include <linux/can.h>\n#include <linux/can/error.h>\n#include <linux/can/netlink.h>\n#include <linux/can/raw.h>\n#include <linux/capability.h>\n#include <linux/cryptouser.h>\n#include <linux/devlink.h>\n#include <linux/dm-ioctl.h>\n#include <linux/errqueue.h>\n#include <linux/ethtool_netlink.h>\n#include <linux/falloc.h>\n#include <linux/fanotify.h>\n#include <linux/fib_rules.h>\n#include <linux/filter.h>\n#include <linux/sftpfs.h>\n#include <linux/fscrypt.h>\n#include <linux/fsverity.h>\n#include <linux/genetlink.h>\n#include <linux/hdreg.h>\n#include <linux/hidraw.h>\n#include <linux/if.h>\n#include <linux/if_addr.h>\n#include <linux/if_alg.h>\n#include <linux/if_arp.h>\n#include <linux/if_ether.h>\n#include <linux/if_ppp.h>\n#include <linux/if_tun.h>\n#include <linux/if_packet.h>\n#include <linux/if_xdp.h>\n#include <linux/input.h>\n#include <linux/kcm.h>\n#include <linux/kexec.h>\n#include <linux/keyctl.h>\n#include <linux/landlock.h>\n#include <linux/loop.h>\n#include <linux/lwtunnel.h>\n#include <linux/magic.h>\n#include <linux/memfd.h>\n#include <linux/module.h>\n#include <linux/mount.h>\n#include <linux/netfilter/nfnetlink.h>\n#include <linux/netfilter/nf_tables.h>\n#include <linux/netlink.h>\n#include <linux/net_namespace.h>\n#include <linux/nfc.h>\n#include <linux/nsfs.h>\n#include <linux/perf_event.h>\n#include <linux/pps.h>\n#include <linux/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#include <linux/wireguard.h>\n\n#include <mtd/ubi-user.h>\n#include <mtd/mtd-user.h>\n#include <net/route.h>\n\n#if defined(__sparc__)\n// On sparc{,64}, the kernel defines struct termios2 itself which clashes with the\n// definition in glibc. As only the error constants are needed here, include the\n// generic termibits.h (which is included by termbits.h on sparc).\n#include <asm-generic/termbits.h>\n#else\n#include <asm/termbits.h>\n#endif\n\n#ifndef PTRACE_GETREGS\n#define PTRACE_GETREGS\t0xc\n#endif\n\n#ifndef PTRACE_SETREGS\n#define PTRACE_SETREGS\t0xd\n#endif\n\n#ifdef SOL_BLUETOOTH\n// SPARC includes this in /usr/include/sparc64-linux-gnu/bits/socket.h\n// but it is already in bluetooth_linux.go\n#undef SOL_BLUETOOTH\n#endif\n\n// Certain constants are missing from the sftpfs/crypto UAPI\n#define FS_KEY_DESC_PREFIX              \"fscrypt:\"\n#define FS_KEY_DESC_PREFIX_SIZE         8\n#define FS_MAX_KEY_SIZE                 64\n\n// The code generator produces -0x1 for (~0), but an unsigned value is necessary\n// for the tipc_subscr timeout __u32 field.\n#undef TIPC_WAIT_FOREVER\n#define TIPC_WAIT_FOREVER 0xffffffff\n\n// Copied from linux/netfilter/nf_nat.h\n// Including linux/netfilter/nf_nat.h here causes conflicts between linux/in.h\n// and netinet/in.h.\n#define NF_NAT_RANGE_MAP_IPS\t\t\t(1 << 0)\n#define NF_NAT_RANGE_PROTO_SPECIFIED\t\t(1 << 1)\n#define NF_NAT_RANGE_PROTO_RANDOM\t\t(1 << 2)\n#define NF_NAT_RANGE_PERSISTENT\t\t\t(1 << 3)\n#define NF_NAT_RANGE_PROTO_RANDOM_FULLY\t\t(1 << 4)\n#define NF_NAT_RANGE_PROTO_OFFSET\t\t(1 << 5)\n#define NF_NAT_RANGE_NETMAP\t\t\t(1 << 6)\n#define NF_NAT_RANGE_PROTO_RANDOM_ALL\t\t\\\n\t(NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)\n#define NF_NAT_RANGE_MASK\t\t\t\t\t\\\n\t(NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT |\t\\\n\t NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET | \\\n\t NF_NAT_RANGE_NETMAP)\n\n// Copied from linux/hid.h.\n// Keep in sync with the size of the referenced fields.\n#define _HIDIOCGRAWNAME_LEN\t128 // sizeof_field(struct hid_device, name)\n#define _HIDIOCGRAWPHYS_LEN\t64  // sizeof_field(struct hid_device, phys)\n#define _HIDIOCGRAWUNIQ_LEN\t64  // sizeof_field(struct hid_device, uniq)\n\n#define _HIDIOCGRAWNAME\t\tHIDIOCGRAWNAME(_HIDIOCGRAWNAME_LEN)\n#define _HIDIOCGRAWPHYS\t\tHIDIOCGRAWPHYS(_HIDIOCGRAWPHYS_LEN)\n#define _HIDIOCGRAWUNIQ\t\tHIDIOCGRAWUNIQ(_HIDIOCGRAWUNIQ_LEN)\n\n'\n\nincludes_NetBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/extattr.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/sched.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n\n// Needed since <sys/param.h> refers to it...\n#define schedppq 1\n'\n\nincludes_OpenBSD='\n#include <sys/types.h>\n#include <sys/param.h>\n#include <sys/event.h>\n#include <sys/mman.h>\n#include <sys/mount.h>\n#include <sys/select.h>\n#include <sys/sched.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/termios.h>\n#include <sys/ttycom.h>\n#include <sys/unistd.h>\n#include <sys/wait.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_types.h>\n#include <net/if_var.h>\n#include <net/route.h>\n#include <netinet/in.h>\n#include <netinet/in_systm.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <netinet/if_ether.h>\n#include <net/if_bridge.h>\n\n// We keep some constants not supported in OpenBSD 5.5 and beyond for\n// the promise of compatibility.\n#define EMUL_ENABLED\t\t0x1\n#define EMUL_NATIVE\t\t0x2\n#define IPV6_FAITH\t\t0x1d\n#define IPV6_OPTIONS\t\t0x1\n#define IPV6_RTHDR_STRICT\t0x1\n#define IPV6_SOCKOPT_RESERVED1\t0x3\n#define SIOCGIFGENERIC\t\t0xc020693a\n#define SIOCSIFGENERIC\t\t0x80206939\n#define WALTSIG\t\t\t0x4\n'\n\nincludes_SunOS='\n#include <limits.h>\n#include <sys/types.h>\n#include <sys/select.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/stream.h>\n#include <sys/mman.h>\n#include <sys/wait.h>\n#include <sys/ioctl.h>\n#include <sys/mkdev.h>\n#include <net/bpf.h>\n#include <net/if.h>\n#include <net/if_arp.h>\n#include <net/if_types.h>\n#include <net/route.h>\n#include <netinet/icmp6.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip_mroute.h>\n#include <termios.h>\n'\n\n\nincludes='\n#include <sys/types.h>\n#include <sys/file.h>\n#include <fcntl.h>\n#include <dirent.h>\n#include <sys/socket.h>\n#include <netinet/in.h>\n#include <netinet/ip.h>\n#include <netinet/ip6.h>\n#include <netinet/tcp.h>\n#include <errno.h>\n#include <sys/signal.h>\n#include <signal.h>\n#include <sys/resource.h>\n#include <time.h>\n'\nccflags=\"$@\"\n\n# Write go tool cgo -godefs input.\n(\n\techo package unix\n\techo\n\techo '/*'\n\tindirect=\"includes_$(uname)\"\n\techo \"${!indirect} $includes\"\n\techo '*/'\n\techo 'import \"C\"'\n\techo 'import \"syscall\"'\n\techo\n\techo 'const ('\n\n\t# The gcc command line prints all the #defines\n\t# it encounters while processing the input\n\techo \"${!indirect} $includes\" | $CC -x c - -E -dM $ccflags |\n\tawk '\n\t\t$1 != \"#define\" || $2 ~ /\\(/ || $3 == \"\" {next}\n\n\t\t$2 ~ /^E([ABCD]X|[BIS]P|[SD]I|S|FL)$/ {next}  # 386 registers\n\t\t$2 ~ /^(SIGEV_|SIGSTKSZ|SIGRT(MIN|MAX))/ {next}\n\t\t$2 ~ /^(SCM_SRCRT)$/ {next}\n\t\t$2 ~ /^(MAP_FAILED)$/ {next}\n\t\t$2 ~ /^ELF_.*$/ {next}# <asm/elf.h> contains ELF_ARCH, etc.\n\n\t\t$2 ~ /^EXTATTR_NAMESPACE_NAMES/ ||\n\t\t$2 ~ /^EXTATTR_NAMESPACE_[A-Z]+_STRING/ {next}\n\n\t\t$2 !~ /^ECCAPBITS/ &&\n\t\t$2 !~ /^ETH_/ &&\n\t\t$2 !~ /^EPROC_/ &&\n\t\t$2 !~ /^EQUIV_/ &&\n\t\t$2 !~ /^EXPR_/ &&\n\t\t$2 !~ /^EVIOC/ &&\n\t\t$2 ~ /^E[A-Z0-9_]+$/ ||\n\t\t$2 ~ /^B[0-9_]+$/ ||\n\t\t$2 ~ /^(OLD|NEW)DEV$/ ||\n\t\t$2 == \"BOTHER\" ||\n\t\t$2 ~ /^CI?BAUD(EX)?$/ ||\n\t\t$2 == \"IBSHIFT\" ||\n\t\t$2 ~ /^V[A-Z0-9]+$/ ||\n\t\t$2 ~ /^CS[A-Z0-9]/ ||\n\t\t$2 ~ /^I(SIG|CANON|CRNL|UCLC|EXTEN|MAXBEL|STRIP|UTF8)$/ ||\n\t\t$2 ~ /^IGN/ ||\n\t\t$2 ~ /^IX(ON|ANY|OFF)$/ ||\n\t\t$2 ~ /^IN(LCR|PCK)$/ ||\n\t\t$2 !~ \"X86_CR3_PCID_NOFLUSH\" &&\n\t\t$2 ~ /(^FLU?SH)|(FLU?SH$)/ ||\n\t\t$2 ~ /^C(LOCAL|READ|MSPAR|RTSCTS)$/ ||\n\t\t$2 == \"BRKINT\" ||\n\t\t$2 == \"HUPCL\" ||\n\t\t$2 == \"PENDIN\" ||\n\t\t$2 == \"TOSTOP\" ||\n\t\t$2 == \"XCASE\" ||\n\t\t$2 == \"ALTWERASE\" ||\n\t\t$2 == \"NOKERNINFO\" ||\n\t\t$2 == \"NFDBITS\" ||\n\t\t$2 ~ /^PAR/ ||\n\t\t$2 ~ /^SIG[^_]/ ||\n\t\t$2 ~ /^O[CNPFPL][A-Z]+[^_][A-Z]+$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)DLY$/ ||\n\t\t$2 ~ /^(NL|CR|TAB|BS|VT|FF)[0-9]$/ ||\n\t\t$2 ~ /^O?XTABS$/ ||\n\t\t$2 ~ /^TC[IO](ON|OFF)$/ ||\n\t\t$2 ~ /^IN_/ ||\n\t\t$2 ~ /^KCM/ ||\n\t\t$2 ~ /^LANDLOCK_/ ||\n\t\t$2 ~ /^LOCK_(SH|EX|NB|UN)$/ ||\n\t\t$2 ~ /^LO_(KEY|NAME)_SIZE$/ ||\n\t\t$2 ~ /^LOOP_(CLR|CTL|GET|SET)_/ ||\n\t\t$2 == \"LOOP_CONFIGURE\" ||\n\t\t$2 ~ /^(AF|SOCK|SO|SOL|IPPROTO|IP|IPV6|TCP|MCAST|EVFILT|NOTE|SHUT|PROT|MAP|MREMAP|MFD|T?PACKET|MSG|SCM|MCL|DT|MADV|PR|LOCAL|TCPOPT|UDP)_/ ||\n\t\t$2 ~ /^NFC_(GENL|PROTO|COMM|RF|SE|DIRECTION|LLCP|SOCKPROTO)_/ ||\n\t\t$2 ~ /^NFC_.*_(MAX)?SIZE$/ ||\n\t\t$2 ~ /^RAW_PAYLOAD_/ ||\n\t\t$2 ~ /^[US]F_/ ||\n\t\t$2 ~ /^TP_STATUS_/ ||\n\t\t$2 ~ /^FALLOC_/ ||\n\t\t$2 ~ /^ICMPV?6?_(FILTER|SEC)/ ||\n\t\t$2 == \"SOMAXCONN\" ||\n\t\t$2 == \"NAME_MAX\" ||\n\t\t$2 == \"IFNAMSIZ\" ||\n\t\t$2 ~ /^CTL_(HW|KERN|MAXNAME|NET|QUERY)$/ ||\n\t\t$2 ~ /^KERN_(HOSTNAME|OS(RELEASE|TYPE)|VERSION)$/ ||\n\t\t$2 ~ /^HW_MACHINE$/ ||\n\t\t$2 ~ /^SYSCTL_VERS/ ||\n\t\t$2 !~ \"MNT_BITS\" &&\n\t\t$2 ~ /^(MS|MNT|MOUNT|UMOUNT)_/ ||\n\t\t$2 ~ /^NS_GET_/ ||\n\t\t$2 ~ /^TUN(SET|GET|ATTACH|DETACH)/ ||\n\t\t$2 ~ /^(O|F|[ES]?FD|NAME|S|PTRACE|PT|PIOD|TFD)_/ ||\n\t\t$2 ~ /^KEXEC_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_CMD_/ ||\n\t\t$2 ~ /^LINUX_REBOOT_MAGIC[12]$/ ||\n\t\t$2 ~ /^MODULE_INIT_/ ||\n\t\t$2 !~ \"NLA_TYPE_MASK\" &&\n\t\t$2 !~ /^RTC_VL_(ACCURACY|BACKUP|DATA)/ &&\n\t\t$2 ~ /^(NETLINK|NLM|NLMSG|NLA|IFA|IFAN|RT|RTC|RTCF|RTN|RTPROT|RTNH|ARPHRD|ETH_P|NETNSA)_/ ||\n\t\t$2 ~ /^FIORDCHK$/ ||\n\t\t$2 ~ /^SIOC/ ||\n\t\t$2 ~ /^TIOC/ ||\n\t\t$2 ~ /^TCGET/ ||\n\t\t$2 ~ /^TCSET/ ||\n\t\t$2 ~ /^TC(FLSH|SBRKP?|XONC)$/ ||\n\t\t$2 !~ \"RTF_BITS\" &&\n\t\t$2 ~ /^(IFF|IFT|NET_RT|RTM(GRP)?|RTF|RTV|RTA|RTAX)_/ ||\n\t\t$2 ~ /^BIOC/ ||\n\t\t$2 ~ /^DIOC/ ||\n\t\t$2 ~ /^RUSAGE_(SELF|CHILDREN|THREAD)/ ||\n\t\t$2 ~ /^RLIMIT_(AS|CORE|CPU|DATA|FSIZE|LOCKS|MEMLOCK|MSGQUEUE|NICE|NOFILE|NPROC|RSS|RTPRIO|RTTIME|SIGPENDING|STACK)|RLIM_INFINITY/ ||\n\t\t$2 ~ /^PRIO_(PROCESS|PGRP|USER)/ ||\n\t\t$2 ~ /^CLONE_[A-Z_]+/ ||\n\t\t$2 !~ /^(BPF_TIMEVAL|BPF_FIB_LOOKUP_[A-Z]+|BPF_F_LINK)$/ &&\n\t\t$2 ~ /^(BPF|DLT)_/ ||\n\t\t$2 ~ /^AUDIT_/ ||\n\t\t$2 ~ /^(CLOCK|TIMER)_/ ||\n\t\t$2 ~ /^CAN_/ ||\n\t\t$2 ~ /^CAP_/ ||\n\t\t$2 ~ /^CP_/ ||\n\t\t$2 ~ /^CPUSTATES$/ ||\n\t\t$2 ~ /^CTLIOCGINFO$/ ||\n\t\t$2 ~ /^ALG_/ ||\n\t\t$2 ~ /^FI(CLONE|DEDUPERANGE)/ ||\n\t\t$2 ~ /^FS_(POLICY_FLAGS|KEY_DESC|ENCRYPTION_MODE|[A-Z0-9_]+_KEY_SIZE)/ ||\n\t\t$2 ~ /^FS_IOC_.*(ENCRYPTION|VERITY|[GS]ETFLAGS)/ ||\n\t\t$2 ~ /^FS_VERITY_/ ||\n\t\t$2 ~ /^FSCRYPT_/ ||\n\t\t$2 ~ /^DM_/ ||\n\t\t$2 ~ /^GRND_/ ||\n\t\t$2 ~ /^RND/ ||\n\t\t$2 ~ /^KEY_(SPEC|REQKEY_DEFL)_/ ||\n\t\t$2 ~ /^KEYCTL_/ ||\n\t\t$2 ~ /^PERF_/ ||\n\t\t$2 ~ /^SECCOMP_/ ||\n\t\t$2 ~ /^SEEK_/ ||\n\t\t$2 ~ /^SCHED_/ ||\n\t\t$2 ~ /^SPLICE_/ ||\n\t\t$2 ~ /^SYNC_FILE_RANGE_/ ||\n\t\t$2 !~ /IOC_MAGIC/ &&\n\t\t$2 ~ /^[A-Z][A-Z0-9_]+_MAGIC2?$/ ||\n\t\t$2 ~ /^(VM|VMADDR)_/ ||\n\t\t$2 ~ /^IOCTL_VM_SOCKETS_/ ||\n\t\t$2 ~ /^(TASKSTATS|TS)_/ ||\n\t\t$2 ~ /^CGROUPSTATS_/ ||\n\t\t$2 ~ /^GENL_/ ||\n\t\t$2 ~ /^STATX_/ ||\n\t\t$2 ~ /^RENAME/ ||\n\t\t$2 ~ /^UBI_IOC[A-Z]/ ||\n\t\t$2 ~ /^UTIME_/ ||\n\t\t$2 ~ /^XATTR_(CREATE|REPLACE|NO(DEFAULT|FOLLOW|SECURITY)|SHOWCOMPRESSION)/ ||\n\t\t$2 ~ /^ATTR_(BIT_MAP_COUNT|(CMN|VOL|FILE)_)/ ||\n\t\t$2 ~ /^FSOPT_/ ||\n\t\t$2 ~ /^WDIO[CFS]_/ ||\n\t\t$2 ~ /^NFN/ ||\n\t\t$2 !~ /^NFT_META_IIFTYPE/ &&\n\t\t$2 ~ /^NFT_/ ||\n\t\t$2 ~ /^NF_NAT_/ ||\n\t\t$2 ~ /^XDP_/ ||\n\t\t$2 ~ /^RWF_/ ||\n\t\t$2 ~ /^(HDIO|WIN|SMART)_/ ||\n\t\t$2 ~ /^CRYPTO_/ ||\n\t\t$2 ~ /^TIPC_/ ||\n\t\t$2 !~  \"DEVLINK_RELOAD_LIMITS_VALID_MASK\" &&\n\t\t$2 ~ /^DEVLINK_/ ||\n\t\t$2 ~ /^ETHTOOL_/ ||\n\t\t$2 ~ /^LWTUNNEL_IP/ ||\n\t\t$2 ~ /^ITIMER_/ ||\n\t\t$2 !~ \"WMESGLEN\" &&\n\t\t$2 ~ /^W[A-Z0-9]+$/ ||\n\t\t$2 ~ /^P_/ ||\n\t\t$2 ~/^PPPIOC/ ||\n\t\t$2 ~ /^FAN_|FANOTIFY_/ ||\n\t\t$2 == \"HID_MAX_DESCRIPTOR_SIZE\" ||\n\t\t$2 ~ /^_?HIDIOC/ ||\n\t\t$2 ~ /^BUS_(USB|HIL|BLUETOOTH|VIRTUAL)$/ ||\n\t\t$2 ~ /^MTD/ ||\n\t\t$2 ~ /^OTP/ ||\n\t\t$2 ~ /^MEM/ ||\n\t\t$2 ~ /^WG/ ||\n\t\t$2 ~ /^FIB_RULE_/ ||\n\t\t$2 ~ /^BLK[A-Z]*(GET$|SET$|BUF$|PART$|SIZE|IOMIN$|IOOPT$|ALIGNOFF$|DISCARD|ROTATIONAL$|ZEROOUT$|GETDISKSEQ$)/ {printf(\"\\t%s = C.%s\\n\", $2, $2)}\n\t\t$2 ~ /^__WCOREFLAG$/ {next}\n\t\t$2 ~ /^__W[A-Z0-9]+$/ {printf(\"\\t%s = C.%s\\n\", substr($2,3), $2)}\n\n\t\t{next}\n\t' | sort\n\n\techo ')'\n) >_const.go\n\n# Pull out the error names for later.\nerrors=$(\n\techo '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print $2 }' |\n\tsort\n)\n\n# Pull out the signal names for later.\nsignals=$(\n\techo '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print $2 }' |\n\tgrep -v 'SIGSTKSIZE\\|SIGSTKSZ\\|SIGRT\\|SIGMAX64' |\n\tsort\n)\n\n# Again, writing regexps to a file.\necho '#include <errno.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^E[A-Z0-9_]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tsort >_error.grep\necho '#include <signal.h>' | $CC -x c - -E -dM $ccflags |\n\tawk '$1==\"#define\" && $2 ~ /^SIG[A-Z0-9]+$/ { print \"^\\t\" $2 \"[ \\t]*=\" }' |\n\tgrep -v 'SIGSTKSIZE\\|SIGSTKSZ\\|SIGRT\\|SIGMAX64' |\n\tsort >_signal.grep\n\necho '// mkerrors.sh' \"$@\"\necho '// Code generated by the command above; see README.md. DO NOT EDIT.'\necho\necho \"//go:build ${GOARCH} && ${GOOS}\"\necho\ngo tool cgo -godefs -- \"$@\" _const.go >_error.out\ncat _error.out | grep -vf _error.grep | grep -vf _signal.grep\necho\necho '// Errors'\necho 'const ('\ncat _error.out | grep -f _error.grep | sed 's/=\\(.*\\)/= syscall.Errno(\\1)/'\necho ')'\n\necho\necho '// Signals'\necho 'const ('\ncat _error.out | grep -f _signal.grep | sed 's/=\\(.*\\)/= syscall.Signal(\\1)/'\necho ')'\n\n# Run C program to print error and syscall strings.\n(\n\techo -E \"\n#include <stdio.h>\n#include <stdlib.h>\n#include <errno.h>\n#include <ctype.h>\n#include <string.h>\n#include <signal.h>\n\n#define nelem(x) (sizeof(x)/sizeof((x)[0]))\n\nenum { A = 'A', Z = 'Z', a = 'a', z = 'z' }; // avoid need for single quotes below\n\nstruct tuple {\n\tint num;\n\tconst char *name;\n};\n\nstruct tuple errors[] = {\n\"\n\tfor i in $errors\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\techo -E \"\n};\n\nstruct tuple signals[] = {\n\"\n\tfor i in $signals\n\tdo\n\t\techo -E '\t{'$i', \"'$i'\" },'\n\tdone\n\n\t# Use -E because on some systems bash builtin interprets \\n itself.\n\techo -E '\n};\n\nstatic int\ntuplecmp(const void *a, const void *b)\n{\n\treturn ((struct tuple *)a)->num - ((struct tuple *)b)->num;\n}\n\nint\nmain(void)\n{\n\tint i, e;\n\tchar buf[1024], *p;\n\n\tprintf(\"\\n\\n// Error table\\n\");\n\tprintf(\"var errorList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Errno\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(errors, nelem(errors), sizeof errors[0], tuplecmp);\n\tfor(i=0; i<nelem(errors); i++) {\n\t\te = errors[i].num;\n\t\tif(i > 0 && errors[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strerror(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, errors[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\tprintf(\"\\n\\n// Signal table\\n\");\n\tprintf(\"var signalList = [...]struct {\\n\");\n\tprintf(\"\\tnum  syscall.Signal\\n\");\n\tprintf(\"\\tname string\\n\");\n\tprintf(\"\\tdesc string\\n\");\n\tprintf(\"} {\\n\");\n\tqsort(signals, nelem(signals), sizeof signals[0], tuplecmp);\n\tfor(i=0; i<nelem(signals); i++) {\n\t\te = signals[i].num;\n\t\tif(i > 0 && signals[i-1].num == e)\n\t\t\tcontinue;\n\t\tstrncpy(buf, strsignal(e), sizeof(buf) - 1);\n\t\tbuf[sizeof(buf) - 1] = '\\0';\n\t\t// lowercase first letter: Bad -> bad, but STREAM -> STREAM.\n\t\tif(A <= buf[0] && buf[0] <= Z && a <= buf[1] && buf[1] <= z)\n\t\t\tbuf[0] += a - A;\n\t\t// cut trailing : number.\n\t\tp = strrchr(buf, \":\"[0]);\n\t\tif(p)\n\t\t\t*p = '\\0';\n\t\tprintf(\"\\t{ %d, \\\"%s\\\", \\\"%s\\\" },\\n\", e, signals[i].name, buf);\n\t}\n\tprintf(\"}\\n\\n\");\n\n\treturn 0;\n}\n\n'\n) >_errors.c\n\n$CC $ccflags -o _errors _errors.c && $GORUN ./_errors && rm -f _errors.c _errors _const.go _error.grep _signal.grep _error.out\n"
  },
  {
    "path": "gossh/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//go: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\"\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_TARGET\")\n\tif goos == \"\" {\n\t\tgoos = os.Getenv(\"GOOS\")\n\t}\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 := io.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\tif goos == \"darwin\" {\n\t\t// KinfoProc contains various pointers to objects stored\n\t\t// in kernel space. Replace these by uintptr to prevent\n\t\t// accidental dereferencing.\n\t\tkinfoProcPointerRegex := regexp.MustCompile(`\\*_Ctype_struct_(pgrp|proc|session|sigacts|ucred|user|vnode)`)\n\t\tb = kinfoProcPointerRegex.ReplaceAll(b, []byte(\"uintptr\"))\n\n\t\t// ExternProc contains a p_un member that in kernel\n\t\t// space stores a pair of pointers and in user space\n\t\t// stores the process creation time. We only care about\n\t\t// the process creation time.\n\t\texternProcStarttimeRegex := regexp.MustCompile(`P_un\\s*\\[\\d+\\]byte`)\n\t\tb = externProcStarttimeRegex.ReplaceAll(b, []byte(\"P_starttime Timeval\"))\n\n\t\t// Convert [n]int8 to [n]byte in Eproc and ExternProc members to\n\t\t// simplify conversion to string.\n\t\tconvertEprocRegex := regexp.MustCompile(`(P_comm|Wmesg|Login)(\\s+)\\[(\\d+)\\]int8`)\n\t\tb = convertEprocRegex.ReplaceAll(b, []byte(\"$1$2[$3]byte\"))\n\t}\n\n\tif goos == \"freebsd\" {\n\t\t// Inside PtraceLwpInfoStruct replace __Siginfo with __PtraceSiginfo,\n\t\t// Create __PtraceSiginfo as a copy of __Siginfo where every *byte instance is replaced by uintptr\n\t\tptraceLwpInfoStruct := regexp.MustCompile(`(?s:type PtraceLwpInfoStruct struct \\{.*?\\})`)\n\t\tb = ptraceLwpInfoStruct.ReplaceAllFunc(b, func(in []byte) []byte {\n\t\t\treturn bytes.ReplaceAll(in, []byte(\"__Siginfo\"), []byte(\"__PtraceSiginfo\"))\n\t\t})\n\n\t\tsiginfoStruct := regexp.MustCompile(`(?s:type __Siginfo struct \\{.*?\\})`)\n\t\tb = siginfoStruct.ReplaceAllFunc(b, func(in []byte) []byte {\n\t\t\tout := append([]byte{}, in...)\n\t\t\tout = append(out, '\\n', '\\n')\n\t\t\tout = append(out,\n\t\t\t\tbytes.ReplaceAll(\n\t\t\t\t\tbytes.ReplaceAll(in, []byte(\"__Siginfo\"), []byte(\"__PtraceSiginfo\")),\n\t\t\t\t\t[]byte(\"*byte\"), []byte(\"uintptr\"))...)\n\t\t\treturn out\n\t\t})\n\n\t\t// Inside PtraceIoDesc replace the Offs field, which refers to an address\n\t\t// in the child process (not the Go parent), with a uintptr.\n\t\tptraceIoDescStruct := regexp.MustCompile(`(?s:type PtraceIoDesc struct \\{.*?\\})`)\n\t\taddrField := regexp.MustCompile(`(\\bOffs\\s+)\\*byte`)\n\t\tb = ptraceIoDescStruct.ReplaceAllFunc(b, func(in []byte) []byte {\n\t\t\treturn addrField.ReplaceAll(in, []byte(`${1}uintptr`))\n\t\t})\n\t}\n\n\tif goos == \"solaris\" {\n\t\t// Convert *int8 to *byte in Iovec.Base like on every other platform.\n\t\tconvertIovecBase := regexp.MustCompile(`Base\\s+\\*int8`)\n\t\tiovecType := regexp.MustCompile(`type Iovec struct {[^}]*}`)\n\t\tiovecStructs := iovecType.FindAll(b, -1)\n\t\tfor _, s := range iovecStructs {\n\t\t\tnewNames := convertIovecBase.ReplaceAll(s, []byte(\"Base *byte\"))\n\t\t\tb = bytes.Replace(b, s, newNames, 1)\n\t\t}\n\t}\n\n\tif goos == \"linux\" && goarch != \"riscv64\" {\n\t\t// The RISCV_HWPROBE_ constants are only defined on Linux for riscv64\n\t\thwprobeConstRexexp := regexp.MustCompile(`const\\s+\\(\\s+RISCV_HWPROBE_[^\\)]+\\)`)\n\t\tb = hwprobeConstRexexp.ReplaceAll(b, nil)\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// Intentionally export __icmp6_filt field in icmpv6_filter\n\ticmpV6Regex := regexp.MustCompile(`type (ICMPv6Filter) struct {(\\s+)X__icmp6_filt(\\s+\\S+\\s+)}`)\n\tb = icmpV6Regex.ReplaceAll(b, []byte(\"type $1 struct {${2}Filt$3}\"))\n\n\t// Intentionally export address storage field in SockaddrStorage convert it to [N]byte.\n\tconvertSockaddrStorageData := regexp.MustCompile(`(X__ss_padding)\\s+\\[(\\d+)\\]u?int8`)\n\tsockaddrStorageType := regexp.MustCompile(`type SockaddrStorage struct {[^}]*}`)\n\tsockaddrStorageStructs := sockaddrStorageType.FindAll(b, -1)\n\tfor _, s := range sockaddrStorageStructs {\n\t\tnewNames := convertSockaddrStorageData.ReplaceAll(s, []byte(\"Data [$2]byte\"))\n\t\tb = bytes.Replace(b, s, newNames, 1)\n\t}\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// If we have an empty RISCVHWProbePairs struct, we should delete it. Only riscv64 emits\n\t// nonempty RISCVHWProbePairs structs.\n\thwprobeRexexp := regexp.MustCompile(`type RISCVHWProbePairs struct {\\s*}`)\n\tb = hwprobeRexexp.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 and Statfs_t members to simplify\n\t// conversion to string.\n\tconvertStatvfsRegex := regexp.MustCompile(`(([Ff]stype|[Mm]nton|[Mm]ntfrom)name|mntfromspec)(\\s+)\\[(\\d+)\\]int8`)\n\tb = convertStatvfsRegex.ReplaceAll(b, []byte(\"$1$3[$4]byte\"))\n\n\t// Convert []int8 to []byte in device mapper ioctl interface\n\tconvertDmIoctlNames := regexp.MustCompile(`(Name|Uuid|Target_type|Data)(\\s+)\\[(\\d+)\\]u?int8`)\n\tdmIoctlTypes := regexp.MustCompile(`type Dm(\\S+) struct {[^}]*}`)\n\tdmStructs := dmIoctlTypes.FindAll(b, -1)\n\tfor _, s := range dmStructs {\n\t\tnewNames := convertDmIoctlNames.ReplaceAll(s, []byte(\"$1$2[$3]byte\"))\n\t\tb = bytes.Replace(b, s, newNames, 1)\n\t}\n\n\t// Convert []int8 to []byte in EthtoolDrvinfo\n\tconvertEthtoolDrvinfoNames := regexp.MustCompile(`(Driver|Version|Fw_version|Bus_info|Erom_version|Reserved2)(\\s+)\\[(\\d+)\\]u?int8`)\n\tethtoolDrvinfoTypes := regexp.MustCompile(`type EthtoolDrvinfo struct {[^}]*}`)\n\tethtoolDrvinfoStructs := ethtoolDrvinfoTypes.FindAll(b, -1)\n\tfor _, s := range ethtoolDrvinfoStructs {\n\t\tnewNames := convertEthtoolDrvinfoNames.ReplaceAll(s, []byte(\"$1$2[$3]byte\"))\n\t\tb = bytes.Replace(b, s, newNames, 1)\n\t}\n\n\t// Convert []int8 to []byte in ctl_info ioctl interface\n\tconvertCtlInfoName := regexp.MustCompile(`(Name)(\\s+)\\[(\\d+)\\]int8`)\n\tctlInfoType := regexp.MustCompile(`type CtlInfo struct {[^}]*}`)\n\tctlInfoStructs := ctlInfoType.FindAll(b, -1)\n\tfor _, s := range ctlInfoStructs {\n\t\tnewNames := convertCtlInfoName.ReplaceAll(s, []byte(\"$1$2[$3]byte\"))\n\t\tb = bytes.Replace(b, s, newNames, 1)\n\t}\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//go: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": "gossh/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//go: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  - The parameter lists must give a name for each argument.\n    This includes return parameters.\n  - The parameter lists must give a type for each argument:\n    the (x, y, z int) shorthand is not allowed.\n  - 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\tlibc      = flag.Bool(\"libc\", false, \"libc system calls\")\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\tlibcPath = \"libc.so\"\n)\n\nvar (\n\tregexpComma          = regexp.MustCompile(`\\s*,\\s*`)\n\tregexpParamKV        = regexp.MustCompile(`^(\\S*) (\\S*)$`)\n\tregexpSys            = regexp.MustCompile(`^\\/\\/sys\\t`)\n\tregexpSysNonblock    = regexp.MustCompile(`^\\/\\/sysnb\\t`)\n\tregexpSysDeclaration = regexp.MustCompile(`^\\/\\/sys(nb)?\\t(\\w+)\\(([^()]*)\\)\\s*(?:\\(([^()]+)\\))?\\s*(?:=\\s*((?i)SYS_[A-Z0-9_]+))?$`)\n\tregexpPointer        = regexp.MustCompile(`^\\*`)\n\tregexpSlice          = regexp.MustCompile(`^\\[](.*)`)\n\tregexpDragonflyExtp  = regexp.MustCompile(`^(?i)extp(read|write)`)\n\tregexpSyscallName    = regexp.MustCompile(`([a-z])([A-Z])`)\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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn strings.ReplaceAll(*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 regexpComma.Split(list, -1)\n}\n\n// parseParam splits a parameter into name and type\nfunc parseParam(p string) Param {\n\tps := regexpParamKV.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\tgoos := os.Getenv(\"GOOS_TARGET\")\n\tif goos == \"\" {\n\t\tgoos = os.Getenv(\"GOOS\")\n\t}\n\tif goos == \"\" {\n\t\tfmt.Fprintln(os.Stderr, \"GOOS not defined in environment\")\n\t\tos.Exit(1)\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\tif goos == \"darwin\" {\n\t\tlibcPath = \"/usr/lib/libSystem.B.dylib\"\n\t\t*libc = true\n\t}\n\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\tnonblock := regexpSysNonblock.FindStringSubmatch(t)\n\t\t\tif regexpSys.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 := regexpSysDeclaration.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// 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 regexpPointer.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 regexpSlice.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 && !*libc) || *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 regexpDragonflyExtp.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 = regexpSyscallName.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\tif *openbsd && *libc {\n\t\t\t\t\tswitch sysname {\n\t\t\t\t\tcase \"__getcwd\":\n\t\t\t\t\t\tsysname = \"getcwd\"\n\t\t\t\t\tcase \"__sysctl\":\n\t\t\t\t\t\tsysname = \"sysctl\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlibcFn = sysname\n\t\t\t\tsysname = \"libc_\" + sysname + \"_trampoline_addr\"\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.\n\t\t\t\ttrampolines[libcFn] = true\n\t\t\t\t// Declare assembly trampoline address.\n\t\t\t\ttext += fmt.Sprintf(\"var libc_%s_trampoline_addr uintptr\\n\\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:cgo_import_dynamic libc_%s %s %q\\n\", libcFn, libcFn, libcPath)\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(), goBuildTags(), text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build %s\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n%s\n`\n"
  },
  {
    "path": "gossh/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//go: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  - The parameter lists must give a name for each argument.\n    This includes return parameters.\n  - The parameter lists must give a type for each argument:\n    the (x, y, z int) shorthand is not allowed.\n  - If the return parameter is an error number, it must be named err.\n  - If go func name needs to be different than its libc name,\n  - or the function is not in libc, name could be specified\n  - at the end, after \"=\" sign, like\n    //sys\tgetsockopt(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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn strings.ReplaceAll(*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\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\\t`).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys\\t`).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)?\\t(\\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 != \"ioctlPtr\" {\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 == 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 \\\"gossh/sys/unix\\\"\\n\"\n\n\t}\n\tfmt.Printf(srcTemplate, cmdLine(), goBuildTags(), pack, cExtern, imp, text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go: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": "gossh/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//go: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\tgetsockopt(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\"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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn strings.ReplaceAll(*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\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\\t`).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys\\t`).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)?\\t(\\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 == \"FcntlInt\" || funct == \"FcntlFlock\" || funct == \"ioctlPtr\" {\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 \\\"gossh/sys/unix\\\"\\n\"\n\n\t}\n\n\t// Print zsyscall_aix_ppc64.go\n\terr := os.WriteFile(\"zsyscall_aix_ppc64.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate1, cmdLine(), goBuildTags(), 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 = os.WriteFile(\"zsyscall_aix_ppc64_gc.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate2, cmdLine(), goBuildTags(), 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 = os.WriteFile(\"zsyscall_aix_ppc64_gccgo.go\",\n\t\t[]byte(fmt.Sprintf(srcTemplate3, cmdLine(), goBuildTags(), 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//go: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//go:build %s && gc\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//go:build %s && 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": "gossh/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//go: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\tgetsockopt(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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() string {\n\treturn strings.ReplaceAll(*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\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\\t`).FindStringSubmatch(t)\n\t\t\tif regexp.MustCompile(`^\\/\\/sys\\t`).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)?\\t(\\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\tif funct != \"ioctlPtrRet\" {\n\t\t\t\t// Runtime import of function to allow cross-platform builds.\n\t\t\t\tdynimports += fmt.Sprintf(\"//go:cgo_import_dynamic libc_%s %s \\\"%s.so\\\"\\n\", sysname, sysname, modname)\n\t\t\t\t// Link symbol to proc address variable.\n\t\t\t\tlinknames += fmt.Sprintf(\"//go:linkname %s libc_%s\\n\", sysvarname, sysname)\n\t\t\t\t// Library proc address variable.\n\t\t\t\tvars = append(vars, sysvarname)\n\t\t\t}\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 = 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\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 \\\"gossh/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(), goBuildTags(), 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//go: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": "gossh/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//go: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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() 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(`^(sftpfs|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/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`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`sftpfs`,\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`sftpfs.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.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.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(), goBuildTags(), text)\n}\n\nconst srcTemplate = `// %s\n// Code generated by the command above; DO NOT EDIT.\n\n//go: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": "gossh/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//go:build ignore\n\n// Generate system call table for DragonFly, NetBSD,\n// FreeBSD or OpenBSD from master list (for example,\n// /usr/src/sys/kern/syscalls.master or sys/syscall.h).\npackage main\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\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// goBuildTags returns build tags in the go:build format.\nfunc goBuildTags() 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 := io.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)\\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\t// remove whitespace around parens\n\t\t\t\tproto = regexp.MustCompile(`\\( `).ReplaceAllString(proto, \"(\")\n\t\t\t\tproto = regexp.MustCompile(` \\)`).ReplaceAllString(proto, \")\")\n\t\t\t\t// remove SAL 2.0 annotations\n\t\t\t\tproto = regexp.MustCompile(`_In[^ ]*[_)] `).ReplaceAllString(proto, \"\")\n\t\t\t\tproto = regexp.MustCompile(`_Out[^ ]*[_)] `).ReplaceAllString(proto, \"\")\n\t\t\t\t// remove double spaces at the source\n\t\t\t\tproto = regexp.MustCompile(`\\s{2}`).ReplaceAllString(proto, \" \")\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\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(), goBuildTags(), text)\n}\n\nconst template = `// %s\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build %s\n\npackage unix\n\nconst(\n%s)`\n"
  },
  {
    "path": "gossh/sys/unix/mmap_nomremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || openbsd || solaris\n\npackage unix\n\nvar mapper = &mmapper{\n\tactive: make(map[*byte][]byte),\n\tmmap:   mmap,\n\tmunmap: munmap,\n}\n"
  },
  {
    "path": "gossh/sys/unix/mremap.go",
    "content": "// Copyright 2023 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux || netbsd\n\npackage unix\n\nimport \"unsafe\"\n\ntype mremapMmapper struct {\n\tmmapper\n\tmremap func(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n}\n\nvar mapper = &mremapMmapper{\n\tmmapper: mmapper{\n\t\tactive: make(map[*byte][]byte),\n\t\tmmap:   mmap,\n\t\tmunmap: munmap,\n\t},\n\tmremap: mremap,\n}\n\nfunc (m *mremapMmapper) Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\tif newLength <= 0 || len(oldData) == 0 || len(oldData) != cap(oldData) || flags&mremapFixed != 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\tpOld := &oldData[cap(oldData)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tbOld := m.active[pOld]\n\tif bOld == nil || &bOld[0] != &oldData[0] {\n\t\treturn nil, EINVAL\n\t}\n\tnewAddr, errno := m.mremap(uintptr(unsafe.Pointer(&bOld[0])), uintptr(len(bOld)), uintptr(newLength), flags, 0)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\tbNew := unsafe.Slice((*byte)(unsafe.Pointer(newAddr)), newLength)\n\tpNew := &bNew[cap(bNew)-1]\n\tif flags&mremapDontunmap == 0 {\n\t\tdelete(m.active, pOld)\n\t}\n\tm.active[pNew] = bNew\n\treturn bNew, nil\n}\n\nfunc Mremap(oldData []byte, newLength int, flags int) (data []byte, err error) {\n\treturn mapper.Mremap(oldData, newLength, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/pagesize_unix.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\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": "gossh/sys/unix/pledge_openbsd.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"fmt\"\n\t\"strconv\"\n)\n\n// Pledge implements the pledge syscall.\n//\n// This changes both the promises and execpromises; use PledgePromises or\n// PledgeExecpromises to only change the promises or execpromises\n// respectively.\n//\n// For more information see pledge(2).\nfunc Pledge(promises, execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, exptr)\n}\n\n// PledgePromises implements the pledge syscall.\n//\n// This changes the promises and leaves the execpromises untouched.\n//\n// For more information see pledge(2).\nfunc PledgePromises(promises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\tpptr, err := BytePtrFromString(promises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(pptr, nil)\n}\n\n// PledgeExecpromises implements the pledge syscall.\n//\n// This changes the execpromises and leaves the promises untouched.\n//\n// For more information see pledge(2).\nfunc PledgeExecpromises(execpromises string) error {\n\tif err := pledgeAvailable(); err != nil {\n\t\treturn err\n\t}\n\n\texptr, err := BytePtrFromString(execpromises)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn pledge(nil, exptr)\n}\n\n// majmin returns major and minor version number for an OpenBSD system.\nfunc majmin() (major int, minor int, err error) {\n\tvar v Utsname\n\terr = Uname(&v)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tmajor, err = strconv.Atoi(string(v.Release[0]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse major version number returned by uname\")\n\t\treturn\n\t}\n\n\tminor, err = strconv.Atoi(string(v.Release[2]))\n\tif err != nil {\n\t\terr = errors.New(\"cannot parse minor version number returned by uname\")\n\t\treturn\n\t}\n\n\treturn\n}\n\n// pledgeAvailable checks for availability of the pledge(2) syscall\n// based on the running OpenBSD version.\nfunc pledgeAvailable() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// Require OpenBSD 6.4 as a minimum.\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Pledge on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/ptrace_darwin.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) error {\n\treturn ptrace1(request, pid, addr, data)\n}\n"
  },
  {
    "path": "gossh/sys/unix/ptrace_ios.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ios\n\npackage unix\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\treturn ENOTSUP\n}\n"
  },
  {
    "path": "gossh/sys/unix/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && race) || (linux && race) || (freebsd && race)\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "gossh/sys/unix/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || (darwin && !race) || (linux && !race) || (freebsd && !race) || netbsd || openbsd || solaris || dragonfly || zos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "gossh/sys/unix/readdirent_getdents.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || dragonfly || freebsd || linux || netbsd || openbsd\n\npackage unix\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\treturn Getdents(fd, buf)\n}\n"
  },
  {
    "path": "gossh/sys/unix/readdirent_getdirentries.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\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": "gossh/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": "gossh/sys/unix/sockcmsg_linux.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Socket control messages\n\npackage unix\n\nimport \"unsafe\"\n\n// UnixCredentials encodes credentials into a socket control message\n// for sending to another process. This can be used for\n// authentication.\nfunc UnixCredentials(ucred *Ucred) []byte {\n\tb := make([]byte, CmsgSpace(SizeofUcred))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_CREDENTIALS\n\th.SetLen(CmsgLen(SizeofUcred))\n\t*(*Ucred)(h.data(0)) = *ucred\n\treturn b\n}\n\n// ParseUnixCredentials decodes a socket control message that contains\n// credentials in a Ucred structure. To receive such a message, the\n// SO_PASSCRED option must be enabled on the socket.\nfunc ParseUnixCredentials(m *SocketControlMessage) (*Ucred, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_CREDENTIALS {\n\t\treturn nil, EINVAL\n\t}\n\tucred := *(*Ucred)(unsafe.Pointer(&m.Data[0]))\n\treturn &ucred, nil\n}\n\n// PktInfo4 encodes Inet4Pktinfo into a socket control message of type IP_PKTINFO.\nfunc PktInfo4(info *Inet4Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet4Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IP\n\th.Type = IP_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet4Pktinfo))\n\t*(*Inet4Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// PktInfo6 encodes Inet6Pktinfo into a socket control message of type IPV6_PKTINFO.\nfunc PktInfo6(info *Inet6Pktinfo) []byte {\n\tb := make([]byte, CmsgSpace(SizeofInet6Pktinfo))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_IPV6\n\th.Type = IPV6_PKTINFO\n\th.SetLen(CmsgLen(SizeofInet6Pktinfo))\n\t*(*Inet6Pktinfo)(h.data(0)) = *info\n\treturn b\n}\n\n// ParseOrigDstAddr decodes a socket control message containing the original\n// destination address. To receive such a message the IP_RECVORIGDSTADDR or\n// IPV6_RECVORIGDSTADDR option must be enabled on the socket.\nfunc ParseOrigDstAddr(m *SocketControlMessage) (Sockaddr, error) {\n\tswitch {\n\tcase m.Header.Level == SOL_IP && m.Header.Type == IP_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase m.Header.Level == SOL_IPV6 && m.Header.Type == IPV6_ORIGDSTADDR:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(&m.Data[0]))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tdefault:\n\t\treturn nil, EINVAL\n\t}\n}\n"
  },
  {
    "path": "gossh/sys/unix/sockcmsg_unix.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Socket control messages\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// CmsgLen returns the value to store in the Len field of the Cmsghdr\n// structure, taking into account any necessary alignment.\nfunc CmsgLen(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + datalen\n}\n\n// CmsgSpace returns the number of bytes an ancillary element with\n// payload of the passed data length occupies.\nfunc CmsgSpace(datalen int) int {\n\treturn cmsgAlignOf(SizeofCmsghdr) + cmsgAlignOf(datalen)\n}\n\nfunc (h *Cmsghdr) data(offset uintptr) unsafe.Pointer {\n\treturn unsafe.Pointer(uintptr(unsafe.Pointer(h)) + uintptr(cmsgAlignOf(SizeofCmsghdr)) + offset)\n}\n\n// SocketControlMessage represents a socket control message.\ntype SocketControlMessage struct {\n\tHeader Cmsghdr\n\tData   []byte\n}\n\n// ParseSocketControlMessage parses b as an array of socket control\n// messages.\nfunc ParseSocketControlMessage(b []byte) ([]SocketControlMessage, error) {\n\tvar msgs []SocketControlMessage\n\ti := 0\n\tfor i+CmsgLen(0) <= len(b) {\n\t\th, dbuf, err := socketControlMessageHeaderAndData(b[i:])\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tm := SocketControlMessage{Header: *h, Data: dbuf}\n\t\tmsgs = append(msgs, m)\n\t\ti += cmsgAlignOf(int(h.Len))\n\t}\n\treturn msgs, nil\n}\n\n// ParseOneSocketControlMessage parses a single socket control message from b, returning the message header,\n// message data (a slice of b), and the remainder of b after that single message.\n// When there are no remaining messages, len(remainder) == 0.\nfunc ParseOneSocketControlMessage(b []byte) (hdr Cmsghdr, data []byte, remainder []byte, err error) {\n\th, dbuf, err := socketControlMessageHeaderAndData(b)\n\tif err != nil {\n\t\treturn Cmsghdr{}, nil, nil, err\n\t}\n\tif i := cmsgAlignOf(int(h.Len)); i < len(b) {\n\t\tremainder = b[i:]\n\t}\n\treturn *h, dbuf, remainder, nil\n}\n\nfunc socketControlMessageHeaderAndData(b []byte) (*Cmsghdr, []byte, error) {\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\tif h.Len < SizeofCmsghdr || uint64(h.Len) > uint64(len(b)) {\n\t\treturn nil, nil, EINVAL\n\t}\n\treturn h, b[cmsgAlignOf(SizeofCmsghdr):h.Len], nil\n}\n\n// UnixRights encodes a set of open file descriptors into a socket\n// control message for sending to another process.\nfunc UnixRights(fds ...int) []byte {\n\tdatalen := len(fds) * 4\n\tb := make([]byte, CmsgSpace(datalen))\n\th := (*Cmsghdr)(unsafe.Pointer(&b[0]))\n\th.Level = SOL_SOCKET\n\th.Type = SCM_RIGHTS\n\th.SetLen(CmsgLen(datalen))\n\tfor i, fd := range fds {\n\t\t*(*int32)(h.data(4 * uintptr(i))) = int32(fd)\n\t}\n\treturn b\n}\n\n// ParseUnixRights decodes a socket control message that contains an\n// integer array of open file descriptors from another process.\nfunc ParseUnixRights(m *SocketControlMessage) ([]int, error) {\n\tif m.Header.Level != SOL_SOCKET {\n\t\treturn nil, EINVAL\n\t}\n\tif m.Header.Type != SCM_RIGHTS {\n\t\treturn nil, EINVAL\n\t}\n\tfds := make([]int, len(m.Data)>>2)\n\tfor i, j := 0, 0; i < len(m.Data); i += 4 {\n\t\tfds[j] = int(*(*int32)(unsafe.Pointer(&m.Data[i])))\n\t\tj++\n\t}\n\treturn fds, nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/sockcmsg_unix_other.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport (\n\t\"runtime\"\n)\n\n// Round the length of a raw sockaddr up to align it properly.\nfunc cmsgAlignOf(salen int) int {\n\tsalign := SizeofPtr\n\n\t// dragonfly needs to check ABI version at runtime, see cmsgAlignOf in\n\t// sockcmsg_dragonfly.go\n\tswitch runtime.GOOS {\n\tcase \"aix\":\n\t\t// There is no alignment on AIX.\n\t\tsalign = 1\n\tcase \"darwin\", \"ios\", \"illumos\", \"solaris\":\n\t\t// NOTE: It seems like 64-bit Darwin, Illumos and Solaris\n\t\t// kernels still require 32-bit aligned access to network\n\t\t// subsystem.\n\t\tif SizeofPtr == 8 {\n\t\t\tsalign = 4\n\t\t}\n\tcase \"netbsd\", \"openbsd\":\n\t\t// NetBSD and OpenBSD armv7 require 64-bit alignment.\n\t\tif runtime.GOARCH == \"arm\" {\n\t\t\tsalign = 8\n\t\t}\n\t\t// NetBSD aarch64 requires 128-bit alignment.\n\t\tif runtime.GOOS == \"netbsd\" && runtime.GOARCH == \"arm64\" {\n\t\t\tsalign = 16\n\t\t}\n\tcase \"zos\":\n\t\t// z/OS socket macros use [32-bit] sizeof(int) alignment,\n\t\t// not pointer width.\n\t\tsalign = SizeofInt\n\t}\n\n\treturn (salen + salign - 1) & ^(salign - 1)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\n// Package unix contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display OS-specific documentation for the current\n// system. If you want godoc to display OS documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage unix // import \"gossh/sys/unix\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\nvar _zero uintptr\n"
  },
  {
    "path": "gossh/sys/unix/syscall_aix.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix\n\n// Aix system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and\n// wrap it in our own nicer implementation.\n\npackage unix\n\nimport \"unsafe\"\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = uint8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sys\tgetcwd(buf []byte) (err error)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (ret string, err error) {\n\tfor len := uint64(4096); ; len *= 2 {\n\t\tb := make([]byte, len)\n\t\terr := getcwd(b)\n\t\tif err == nil {\n\t\t\ti := 0\n\t\t\tfor b[i] != 0 {\n\t\t\t\ti++\n\t\t\t}\n\t\t\treturn string(b[0:i]), nil\n\t\t}\n\t\tif err != ERANGE {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n}\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\terr = getcwd(buf)\n\tif err == nil {\n\t\ti := 0\n\t\tfor buf[i] != 0 {\n\t\t\ti++\n\t\t}\n\t\tn = i + 1\n\t}\n\treturn\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n/*\n * Socket\n */\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some versions of AIX have a bug in getsockname (see IV78655).\n\t\t// We can't rely on sa.Len being set correctly.\n\t\tn := SizeofSockaddrUnix - 3 // subtract leading Family, Len, terminating NUL.\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terr = gettimeofday(tv, nil)\n\treturn\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tgetdirent(fd int, buf []byte) (n int, err error)\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn getdirent(fd, buf)\n}\n\n//sys\twait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\tvar r Pid_t\n\terr = ERESTART\n\t// AIX wait4 may return with ERESTART errno, while the 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 int, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = ioctl\n\n// fcntl must never be called with cmd=F_DUP2FD because it doesn't work on AIX\n// There is no way to create a custom fcntl and to keep //sys fcntl easily,\n// Therefore, the programmer must call dup2 instead of fcntl in this case.\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (r int,err error) = fcntl\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\n//sys\tFcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) = fcntl\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tfsyncRange(fd int, how int, start int64, length int64) (err error) = fsync_range\n\nfunc Fsync(fd int) error {\n\treturn fsyncRange(fd, O_SYNC, 0, 0)\n}\n\n/*\n * Direct access\n */\n\n//sys\tAcct(path string) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n// readdir_r\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\n//sys\tGetpgrp() (pid int)\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tKlogctl(typ int, buf []byte) (n int, err error) = syslog\n//sys\tMkdir(dirfd int, path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error) = open64\n//sys\tOpenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n\n//sys\tSetuid(uid int) (err error)\n//sys\tSetgid(uid int) (err error)\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = posix_fadvise64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tfstat(fd int, stat *Stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = fstatat\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = pread64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = pwrite64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tPselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tstat(path string, statptr *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n\n// In order to use msghdr structure with Control, Controllen, nrecvmsg and nsendmsg must be used.\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = nrecvmsg\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = nsendmsg\n\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\n//sysnb\tpipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n//sys\tgettimeofday(tv *Timeval, tzp *Timezone) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n\n//sys\tGetsystemcfg(label int) (n uint64)\n\n//sys\tumount(target string) (err error)\n\nfunc Unmount(target string, flags int) (err error) {\n\tif flags != 0 {\n\t\t// AIX doesn't have any flags for umount.\n\t\treturn ENOSYS\n\t}\n\treturn umount(target)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_aix_ppc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = getrlimit64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek64\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\treturn fstat(fd, stat)\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\treturn fstatat(dirfd, path, stat, flags)\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\treturn lstat(path, stat)\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\treturn stat(path, statptr)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_aix_ppc64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix && ppc64\n\npackage unix\n\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = lseek\n\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) = mmap64\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int64(sec), Usec: int32(usec)}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// In order to only have Timespec structure, type of Stat_t's fields\n// Atim, Mtim and Ctim is changed from StTimespec to Timespec during\n// ztypes generation.\n// On ppc64, Timespec.Nsec is an int64 while StTimespec.Nsec is an\n// int32, so the fields' value must be modified.\nfunc fixStatTimFields(stat *Stat_t) {\n\tstat.Atim.Nsec >>= 32\n\tstat.Mtim.Nsec >>= 32\n\tstat.Ctim.Nsec >>= 32\n}\n\nfunc Fstat(fd int, stat *Stat_t) error {\n\terr := fstat(fd, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) error {\n\terr := fstatat(dirfd, path, stat, flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Lstat(path string, stat *Stat_t) error {\n\terr := lstat(path, stat)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(stat)\n\treturn nil\n}\n\nfunc Stat(path string, statptr *Stat_t) error {\n\terr := stat(path, statptr)\n\tif err != nil {\n\t\treturn err\n\t}\n\tfixStatTimFields(statptr)\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_bsd.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\n// BSD system call wrappers shared by *BSD based systems\n// including OS X (Darwin) and FreeBSD.  Like the other\n// syscall_*.go files it is compiled as Go code but also\n// used as input to mksyscall which parses the //sys\n// lines and generates system call stubs.\n\npackage unix\n\nimport (\n\t\"runtime\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (string, error) {\n\tvar buf [PathMax]byte\n\t_, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 16 on BSD.\n\tif n < 0 || n > 1000 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tkilled  = 9\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Killed() bool { return w&mask == killed && syscall.Signal(w>>shift) != SIGKILL }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\tShutdown(s int, how int) (err error)\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrDatalink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Index == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = sa.Len\n\tsa.raw.Family = AF_LINK\n\tsa.raw.Index = sa.Index\n\tsa.raw.Type = sa.Type\n\tsa.raw.Nlen = sa.Nlen\n\tsa.raw.Alen = sa.Alen\n\tsa.raw.Slen = sa.Slen\n\tsa.raw.Data = sa.Data\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrDatalink, nil\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_LINK:\n\t\tpp := (*RawSockaddrDatalink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrDatalink)\n\t\tsa.Len = pp.Len\n\t\tsa.Family = pp.Family\n\t\tsa.Index = pp.Index\n\t\tsa.Type = pp.Type\n\t\tsa.Nlen = pp.Nlen\n\t\tsa.Alen = pp.Alen\n\t\tsa.Slen = pp.Slen\n\t\tsa.Data = pp.Data\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tif pp.Len < 2 || pp.Len > SizeofSockaddrUnix {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := new(SockaddrUnix)\n\n\t\t// Some BSDs include the trailing NUL in the length, whereas\n\t\t// others do not. Work around this by subtracting the leading\n\t\t// family and len. The path is then scanned to see if a NUL\n\t\t// terminator still exists within the length.\n\t\tn := int(pp.Len) - 2 // subtract leading Family, Len\n\t\tfor i := 0; i < n; i++ {\n\t\t\tif pp.Path[i] == 0 {\n\t\t\t\t// found early NUL; assume Len included the NUL\n\t\t\t\t// or was overestimating.\n\t\t\t\tn = i\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn anyToSockaddrGOOS(fd, rsa)\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\tif (runtime.GOOS == \"darwin\" || runtime.GOOS == \"ios\") && len == 0 {\n\t\t// Accepted socket has no address.\n\t\t// This is likely due to a bug in xnu kernels,\n\t\t// where instead of ECONNABORTED error socket\n\t\t// is accepted, but has no address.\n\t\tClose(nfd)\n\t\treturn 0, nil, ECONNABORTED\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(jsing): DragonFly has a \"bug\" (see issue 3349), which should be\n\t// reported upstream.\n\tif runtime.GOOS == \"dragonfly\" && rsa.Addr.Family == AF_UNSPEC && rsa.Addr.Len == 0 {\n\t\trsa.Addr.Family = AF_UNIX\n\t\trsa.Addr.Len = SizeofSockaddrUnix\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tkevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error)\n\nfunc Kevent(kq int, changes, events []Kevent_t, timeout *Timespec) (n int, err error) {\n\tvar change, event unsafe.Pointer\n\tif len(changes) > 0 {\n\t\tchange = unsafe.Pointer(&changes[0])\n\t}\n\tif len(events) > 0 {\n\t\tevent = unsafe.Pointer(&events[0])\n\t}\n\treturn kevent(kq, change, len(changes), event, len(events), timeout)\n}\n\n// sysctlmib translates name to mib number and appends any additional args.\nfunc sysctlmib(name string, args ...int) ([]_C_int, error) {\n\t// Translate name to mib number.\n\tmib, err := nametomib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor _, a := range args {\n\t\tmib = append(mib, _C_int(a))\n\t}\n\n\treturn mib, nil\n}\n\nfunc Sysctl(name string) (string, error) {\n\treturn SysctlArgs(name)\n}\n\nfunc SysctlArgs(name string, args ...int) (string, error) {\n\tbuf, err := SysctlRaw(name, args...)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := len(buf)\n\n\t// Throw away terminating NUL.\n\tif n > 0 && buf[n-1] == '\\x00' {\n\t\tn--\n\t}\n\treturn string(buf[0:n]), nil\n}\n\nfunc SysctlUint32(name string) (uint32, error) {\n\treturn SysctlUint32Args(name)\n}\n\nfunc SysctlUint32Args(name string, args ...int) (uint32, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(4)\n\tbuf := make([]byte, 4)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 4 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint32)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlUint64(name string, args ...int) (uint64, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tn := uintptr(8)\n\tbuf := make([]byte, 8)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn 0, err\n\t}\n\tif n != 8 {\n\t\treturn 0, EIO\n\t}\n\treturn *(*uint64)(unsafe.Pointer(&buf[0])), nil\n}\n\nfunc SysctlRaw(name string, args ...int) ([]byte, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Find size.\n\tn := uintptr(0)\n\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Read into buffer of that size.\n\tbuf := make([]byte, n)\n\tif err := sysctl(mib, &buf[0], &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// The actual call may return less than the original reported required\n\t// size so ensure we deal with that.\n\treturn buf[:n], nil\n}\n\nfunc SysctlClockinfo(name string) (*Clockinfo, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofClockinfo)\n\tvar ci Clockinfo\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&ci)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofClockinfo {\n\t\treturn nil, EIO\n\t}\n\treturn &ci, nil\n}\n\nfunc SysctlTimeval(name string) (*Timeval, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar tv Timeval\n\tn := uintptr(unsafe.Sizeof(tv))\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&tv)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != unsafe.Sizeof(tv) {\n\t\treturn nil, EIO\n\t}\n\treturn &tv, nil\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfutimes(fd int, timeval *[2]Timeval) (err error)\n\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimes(fd, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimes(fd, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\n// TODO: wrap\n//\tAcct(name nil-string) (err error)\n//\tGethostuuid(uuid *byte, timeout *Timespec) (err error)\n//\tPtrace(req int, pid int, addr uintptr, data int) (ret uintptr, err error)\n\n//sys\tMadvise(b []byte, behav int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_darwin.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Darwin system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tclosedir(dir uintptr) (err error)\n//sys\treaddir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno)\n\nfunc fdopendir(fd int) (dir uintptr, err error) {\n\tr0, _, e1 := syscall_syscallPtr(libc_fdopendir_trampoline_addr, uintptr(fd), 0, 0)\n\tdir = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fdopendir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fdopendir fdopendir \"/usr/lib/libSystem.B.dylib\"\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulate Getdirentries using fdopendir/readdir_r/closedir.\n\t// We store the number of entries to skip in the seek\n\t// offset of fd. See issue #31368.\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// We need to duplicate the incoming file descriptor\n\t// because the caller expects to retain control of it, but\n\t// fdopendir expects to take control of its argument.\n\t// Just Dup'ing the file descriptor is not enough, as the\n\t// result shares underlying state. Use Openat to make a really\n\t// new file descriptor referring to the same directory.\n\tfd2, err := Openat(fd, \".\", O_RDONLY, 0)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := fdopendir(fd2)\n\tif err != nil {\n\t\tClose(fd2)\n\t\treturn 0, err\n\t}\n\tdefer closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entry Dirent\n\t\tvar entryp *Dirent\n\t\te := readdir_r(d, &entry, &entryp)\n\t\tif e != 0 {\n\t\t\treturn n, errnoErr(e)\n\t\t}\n\t\tif entryp == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\n// SockaddrCtl implements the Sockaddr interface for AF_SYSTEM type sockets.\ntype SockaddrCtl struct {\n\tID   uint32\n\tUnit uint32\n\traw  RawSockaddrCtl\n}\n\nfunc (sa *SockaddrCtl) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sc_len = SizeofSockaddrCtl\n\tsa.raw.Sc_family = AF_SYSTEM\n\tsa.raw.Ss_sysaddr = AF_SYS_CONTROL\n\tsa.raw.Sc_id = sa.ID\n\tsa.raw.Sc_unit = sa.Unit\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCtl, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Darwin VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID  uint32\n\tPort uint32\n\traw  RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Len = SizeofSockaddrVM\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_SYSTEM:\n\t\tpp := (*RawSockaddrCtl)(unsafe.Pointer(rsa))\n\t\tif pp.Ss_sysaddr == AF_SYS_CONTROL {\n\t\t\tsa := new(SockaddrCtl)\n\t\t\tsa.ID = pp.Sc_id\n\t\t\tsa.Unit = pp.Sc_unit\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:  pp.Cid,\n\t\t\tPort: pp.Port,\n\t\t}\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n// Some external packages rely on SYS___SYSCTL being defined to implement their\n// own sysctl wrappers. Provide it here, even though direct syscalls are no\n// longer supported on darwin.\nconst SYS___SYSCTL = SYS_SYSCTL\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PT_ATTACH, pid, 0, 0) }\nfunc PtraceDetach(pid int) (err error) { return ptrace(PT_DETACH, pid, 0, 0) }\nfunc PtraceDenyAttach() (err error)    { return ptrace(PT_DENY_ATTACH, 0, 0, 0) }\n\n//sysnb\tpipe(p *[2]int32) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar x [2]int32\n\terr = pipe(&x)\n\tif err == nil {\n\t\tp[0] = int(x[0])\n\t\tp[1] = int(x[1])\n\t}\n\treturn\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(_p0, bufsize, flags)\n}\n\nfunc xattrPointer(dest []byte) *byte {\n\t// It's only when dest is set to NULL that the OS X implementations of\n\t// getxattr() and listxattr() return the current sizes of the named attributes.\n\t// An empty byte array is not sufficient. To maintain the same behaviour as the\n\t// linux implementation, we wrap around the system calls and pass in NULL when\n\t// dest is empty.\n\tvar destp *byte\n\tif len(dest) > 0 {\n\t\tdestp = &dest[0]\n\t}\n\treturn destp\n}\n\n//sys\tgetxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Getxattr(path string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(path, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\treturn getxattr(link, attr, xattrPointer(dest), len(dest), 0, XATTR_NOFOLLOW)\n}\n\n//sys\tfgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error)\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\treturn fgetxattr(fd, attr, xattrPointer(dest), len(dest), 0, 0)\n}\n\n//sys\tsetxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\t// The parameters for the OS X implementation vary slightly compared to the\n\t// linux system call, specifically the position parameter:\n\t//\n\t//  linux:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          const void *value,\n\t//          size_t size,\n\t//          int flags\n\t//      );\n\t//\n\t//  darwin:\n\t//      int setxattr(\n\t//          const char *path,\n\t//          const char *name,\n\t//          void *value,\n\t//          size_t size,\n\t//          u_int32_t position,\n\t//          int options\n\t//      );\n\t//\n\t// position specifies the offset within the extended attribute. In the\n\t// current implementation, only the resource fork extended attribute makes\n\t// use of this argument. For all others, position is reserved. We simply\n\t// default to setting it to zero.\n\treturn setxattr(path, attr, xattrPointer(data), len(data), 0, flags)\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\treturn setxattr(link, attr, xattrPointer(data), len(data), 0, flags|XATTR_NOFOLLOW)\n}\n\n//sys\tfsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error)\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\treturn fsetxattr(fd, attr, xattrPointer(data), len(data), 0, 0)\n}\n\n//sys\tremovexattr(path string, attr string, options int) (err error)\n\nfunc Removexattr(path string, attr string) (err error) {\n\t// We wrap around and explicitly zero out the options provided to the OS X\n\t// implementation of removexattr, we do so for interoperability with the\n\t// linux variant.\n\treturn removexattr(path, attr, 0)\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\treturn removexattr(link, attr, XATTR_NOFOLLOW)\n}\n\n//sys\tfremovexattr(fd int, attr string, options int) (err error)\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\treturn fremovexattr(fd, attr, 0)\n}\n\n//sys\tlistxattr(path string, dest *byte, size int, options int) (sz int, err error)\n\nfunc Listxattr(path string, dest []byte) (sz int, err error) {\n\treturn listxattr(path, xattrPointer(dest), len(dest), 0)\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\treturn listxattr(link, xattrPointer(dest), len(dest), XATTR_NOFOLLOW)\n}\n\n//sys\tflistxattr(fd int, dest *byte, size int, options int) (sz int, err error)\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\treturn flistxattr(fd, xattrPointer(dest), len(dest), 0)\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\n/*\n * Wrapped\n */\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n//sys\tkill(pid int, signum int, posix int) (err error)\n\nfunc Kill(pid int, signum syscall.Signal) (err error) { return kill(pid, int(signum), 1) }\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\nfunc IoctlCtlInfo(fd int, ctlInfo *CtlInfo) error {\n\treturn ioctlPtr(fd, CTLIOCGINFO, unsafe.Pointer(ctlInfo))\n}\n\n// IfreqMTU is struct ifreq used to get or set a network device's MTU.\ntype IfreqMTU struct {\n\tName [IFNAMSIZ]byte\n\tMTU  int32\n}\n\n// IoctlGetIfreqMTU performs the SIOCGIFMTU ioctl operation on fd to get the MTU\n// of the network device specified by ifname.\nfunc IoctlGetIfreqMTU(fd int, ifname string) (*IfreqMTU, error) {\n\tvar ifreq IfreqMTU\n\tcopy(ifreq.Name[:], ifname)\n\terr := ioctlPtr(fd, SIOCGIFMTU, unsafe.Pointer(&ifreq))\n\treturn &ifreq, err\n}\n\n// IoctlSetIfreqMTU performs the SIOCSIFMTU ioctl operation on fd to set the MTU\n// of the network device specified by ifreq.Name.\nfunc IoctlSetIfreqMTU(fd int, ifreq *IfreqMTU) error {\n\treturn ioctlPtr(fd, SIOCSIFMTU, unsafe.Pointer(ifreq))\n}\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS_SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar length = int64(count)\n\terr = sendfile(infd, outfd, *offset, &length, nil, 0)\n\twritten = int(length)\n\treturn\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc GetsockoptTCPConnectionInfo(fd, level, opt int) (*TCPConnectionInfo, error) {\n\tvar value TCPConnectionInfo\n\tvallen := _Socklen(SizeofTCPConnectionInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SysctlKinfoProc(name string, args ...int) (*KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar kinfo KinfoProc\n\tn := uintptr(SizeofKinfoProc)\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&kinfo)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofKinfoProc {\n\t\treturn nil, EIO\n\t}\n\treturn &kinfo, nil\n}\n\nfunc SysctlKinfoProcSlice(name string, args ...int) ([]KinfoProc, error) {\n\tmib, err := sysctlmib(name, args...)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tfor {\n\t\t// Find size.\n\t\tn := uintptr(0)\n\t\tif err := sysctl(mib, nil, &n, nil, 0); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif n == 0 {\n\t\t\treturn nil, nil\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// Read into buffer of that size.\n\t\tbuf := make([]KinfoProc, n/SizeofKinfoProc)\n\t\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&buf[0])), &n, nil, 0); err != nil {\n\t\t\tif err == ENOMEM {\n\t\t\t\t// Process table grew. Try again.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn nil, err\n\t\t}\n\t\tif n%SizeofKinfoProc != 0 {\n\t\t\treturn nil, fmt.Errorf(\"sysctl() returned a size of %d, which is not a multiple of %d\", n, SizeofKinfoProc)\n\t\t}\n\n\t\t// The actual call may return less than the original reported required\n\t\t// size so ensure we deal with that.\n\t\treturn buf[:n/SizeofKinfoProc], nil\n\t}\n}\n\n//sys\tsendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error)\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tClonefile(src string, dst string, flags int) (err error)\n//sys\tClonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExchangedata(path1 string, path2 string, options int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetcwd(buf []byte) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tp *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sysnb\tIssetugid() (tainted bool)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMount(fsType string, dir string, flags int, data unsafe.Pointer) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tSetattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error)\n//sys\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetprivexec(flag int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_darwin_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error) = SYS_FSTATFS64\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT64\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tStatfs(path string, stat *Statfs_t) (err error) = SYS_STATFS64\n"
  },
  {
    "path": "gossh/sys/unix/syscall_darwin_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && darwin\n\npackage unix\n\nimport \"syscall\"\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno) // sic\n\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tgetfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) = SYS_GETFSSTAT\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tptrace1(request int, pid int, addr uintptr, data uintptr) (err error) = SYS_ptrace\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_darwin_libSystem.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_darwin.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6X(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // 32-bit only\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscallPtr(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall6X syscall.syscall6X\n//go:linkname syscall_syscall9 syscall.syscall9\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n//go:linkname syscall_syscallPtr syscall.syscallPtr\n"
  },
  {
    "path": "gossh/sys/unix/syscall_dragonfly.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// DragonFly BSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See version list in https://github.com/DragonFlyBSD/DragonFlyBSD/blob/master/sys/sys/param.h\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\n// First __DragonFly_version after September 2019 ABI changes\n// http://lists.dragonflybsd.org/pipermail/users/2019-September/358280.html\nconst _dragonflyABIChangeVersion = 500705\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\tnamlen, ok := direntNamlen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn (16 + namlen + 1 + 7) &^ 7, true\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\n//sysnb\tpipe() (r int, w int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tr, w, err := pipe()\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (r int, w int, err error)\n\nfunc Pipe2(p []int, flags int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\t// pipe2 on dragonfly takes an fds array as an argument, but still\n\t// returns the file descriptors.\n\tr, w, err := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0], p[1] = r, w\n\t}\n\treturn err\n}\n\n//sys\textpread(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpread(fd, p, 0, offset)\n}\n\n//sys\textpwrite(fd int, p []byte, flags int, offset int64) (n int, err error)\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\treturn extpwrite(fd, p, 0, offset)\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc sysctlUname(mib []_C_int, old *byte, oldlen *uintptr) error {\n\terr := sysctl(mib, old, oldlen, nil, 0)\n\tif err != nil {\n\t\t// Utsname members on Dragonfly are only 32 bytes and\n\t\t// the syscall returns ENOMEM in case the actual value\n\t\t// is longer.\n\t\tif err == ENOMEM {\n\t\t\terr = nil\n\t\t}\n\t}\n\treturn err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctlUname(mib, &uname.Sysname[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Sysname[unsafe.Sizeof(uname.Sysname)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctlUname(mib, &uname.Nodename[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Nodename[unsafe.Sizeof(uname.Nodename)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctlUname(mib, &uname.Release[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Release[unsafe.Sizeof(uname.Release)-1] = 0\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctlUname(mib, &uname.Version[0], &n); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctlUname(mib, &uname.Machine[0], &n); err != nil {\n\t\treturn err\n\t}\n\tuname.Machine[unsafe.Sizeof(uname.Machine)-1] = 0\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n//sys\tGetdirentries(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_dragonfly_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// FreeBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n)\n\n// See https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/versions.html.\nvar (\n\tosreldateOnce sync.Once\n\tosreldate     uint32\n)\n\nfunc supportsABI(ver uint32) bool {\n\tosreldateOnce.Do(func() { osreldate, _ = SysctlUint32(\"kern.osreldate\") })\n\treturn osreldate >= ver\n}\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\n// Translate \"kern.hostname\" to []_C_int{0,1,2,3}.\nfunc nametomib(name string) (mib []_C_int, err error) {\n\tconst siz = unsafe.Sizeof(mib[0])\n\n\t// NOTE(rsc): It seems strange to set the buffer to have\n\t// size CTL_MAXNAME+2 but use only CTL_MAXNAME\n\t// as the size. I don't know why the +2 is here, but the\n\t// kernel uses +2 for its own implementation of this function.\n\t// I am scared that if we don't include the +2 here, the kernel\n\t// will silently write 2 words farther than we specify\n\t// and we'll get memory corruption.\n\tvar buf [CTL_MAXNAME + 2]_C_int\n\tn := uintptr(CTL_MAXNAME) * siz\n\n\tp := (*byte)(unsafe.Pointer(&buf[0]))\n\tbytes, err := ByteSliceFromString(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Magic sysctl: \"setting\" 0.3 to a string name\n\t// lets you read back the array of integers form.\n\tif err = sysctl([]_C_int{0, 3}, p, &n, &bytes[0], uintptr(len(name))); err != nil {\n\t\treturn nil, err\n\t}\n\treturn buf[0 : n/siz], nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terrno := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, errno\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// GetsockoptXucred is a getsockopt wrapper that returns an Xucred struct.\n// The usual level and opt are SOL_LOCAL and LOCAL_PEERCRED, respectively.\nfunc GetsockoptXucred(fd, level, opt int) (*Xucred, error) {\n\tx := new(Xucred)\n\tvallen := _Socklen(SizeofXucred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(x), &vallen)\n\treturn x, err\n}\n\nfunc Accept4(fd, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar (\n\t\t_p0     unsafe.Pointer\n\t\tbufsize uintptr\n\t)\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\tr0, _, e1 := Syscall(SYS_GETFSSTAT, uintptr(_p0), bufsize, uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\t// Suppress ENOMEM errors to be compatible with the C library __xuname() implementation.\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil && !errors.Is(err, ENOMEM) {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Stat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, 0)\n}\n\nfunc Lstat(path string, st *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, st, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\treturn Getdirentries(fd, buf, nil)\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tif basep == nil || unsafe.Sizeof(*basep) == 8 {\n\t\treturn getdirentries(fd, buf, (*uint64)(unsafe.Pointer(basep)))\n\t}\n\t// The syscall needs a 64-bit base. On 32-bit machines\n\t// we can't just use the basep passed in. See #32498.\n\tvar base uint64 = uint64(*basep)\n\tn, err = getdirentries(fd, buf, &base)\n\t*basep = uintptr(base)\n\tif base>>32 != 0 {\n\t\t// We can't stuff the base back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\nfunc Mknod(path string, mode uint32, dev uint64) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data int) (err error)\n//sys\tptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) = SYS_PTRACE\n\nfunc PtraceAttach(pid int) (err error) {\n\treturn ptrace(PT_ATTACH, pid, 0, 0)\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PT_CONTINUE, pid, 1, signal)\n}\n\nfunc PtraceDetach(pid int) (err error) {\n\treturn ptrace(PT_DETACH, pid, 1, 0)\n}\n\nfunc PtraceGetFpRegs(pid int, fpregsout *FpReg) (err error) {\n\treturn ptracePtr(PT_GETFPREGS, pid, unsafe.Pointer(fpregsout), 0)\n}\n\nfunc PtraceGetRegs(pid int, regsout *Reg) (err error) {\n\treturn ptracePtr(PT_GETREGS, pid, unsafe.Pointer(regsout), 0)\n}\n\nfunc PtraceIO(req int, pid int, offs uintptr, out []byte, countin int) (count int, err error) {\n\tioDesc := PtraceIoDesc{\n\t\tOp:   int32(req),\n\t\tOffs: offs,\n\t}\n\tif countin > 0 {\n\t\t_ = out[:countin] // check bounds\n\t\tioDesc.Addr = &out[0]\n\t} else if out != nil {\n\t\tioDesc.Addr = (*byte)(unsafe.Pointer(&_zero))\n\t}\n\tioDesc.SetLen(countin)\n\n\terr = ptracePtr(PT_IO, pid, unsafe.Pointer(&ioDesc), 0)\n\treturn int(ioDesc.Len), err\n}\n\nfunc PtraceLwpEvents(pid int, enable int) (err error) {\n\treturn ptrace(PT_LWP_EVENTS, pid, 0, enable)\n}\n\nfunc PtraceLwpInfo(pid int, info *PtraceLwpInfoStruct) (err error) {\n\treturn ptracePtr(PT_LWPINFO, pid, unsafe.Pointer(info), int(unsafe.Sizeof(*info)))\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_D, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_READ_I, pid, addr, out, SizeofLong)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_D, pid, addr, data, SizeofLong)\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn PtraceIO(PIOD_WRITE_I, pid, addr, data, SizeofLong)\n}\n\nfunc PtraceSetRegs(pid int, regs *Reg) (err error) {\n\treturn ptracePtr(PT_SETREGS, pid, unsafe.Pointer(regs), 0)\n}\n\nfunc PtraceSingleStep(pid int) (err error) {\n\treturn ptrace(PT_STEP, pid, 1, 0)\n}\n\nfunc Dup3(oldfd, newfd, flags int) error {\n\tif oldfd == newfd || flags&^O_CLOEXEC != 0 {\n\t\treturn EINVAL\n\t}\n\thow := F_DUP2FD\n\tif flags&O_CLOEXEC != 0 {\n\t\thow = F_DUP2FD_CLOEXEC\n\t}\n\t_, err := fcntl(oldfd, how, newfd)\n\treturn err\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tCapEnter() (err error)\n//sys\tcapRightsGet(version int, fd int, rightsp *CapRights) (err error) = SYS___CAP_RIGHTS_GET\n//sys\tcapRightsLimit(fd int, rightsp *CapRights) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tgetdirentries(fd int, buf []byte, basep *uint64) (n int, err error)\n//sys\tGetdtablesize() (size int)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMknodat(fd int, path string, mode uint32, dev uint64) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(fdat int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUndelete(path string) (err error)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\taccept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc PtraceGetFsBase(pid int, fsbase *int64) (err error) {\n\treturn ptracePtr(PT_GETFSBASE, pid, unsafe.Pointer(fsbase), 0)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd_arm.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint32(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr((*offset)>>32), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd_arm64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_freebsd_riscv64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (d *PtraceIoDesc) SetLen(length int) {\n\td.Len = uint64(length)\n}\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tvar writtenOut uint64 = 0\n\t_, _, e1 := Syscall9(SYS_SENDFILE, uintptr(infd), uintptr(outfd), uintptr(*offset), uintptr(count), 0, uintptr(unsafe.Pointer(&writtenOut)), 0, 0, 0)\n\n\twritten = int(writtenOut)\n\n\tif e1 != 0 {\n\t\terr = e1\n\t}\n\treturn\n}\n\nfunc Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_hurd.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build hurd\n\npackage unix\n\n/*\n#include <stdint.h>\nint ioctl(int, unsigned long int, uintptr_t);\n*/\nimport \"C\"\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.ulong(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_hurd_386.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && hurd\n\npackage unix\n\nconst (\n\tTIOCGETA = 0x62251713\n)\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_illumos.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// illumos system calls not present on Solaris.\n\n//go:build amd64 && illumos\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc bytes2iovec(bs [][]byte) []Iovec {\n\tiovecs := make([]Iovec, len(bs))\n\tfor i, b := range bs {\n\t\tiovecs[i].SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tiovecs[i].Base = &b[0]\n\t\t} else {\n\t\t\tiovecs[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\treturn iovecs\n}\n\n//sys\treadv(fd int, iovs []Iovec) (n int, err error)\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = readv(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpreadv(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Preadv(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = preadv(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\twritev(fd int, iovs []Iovec) (n int, err error)\n\nfunc Writev(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = writev(fd, iovecs)\n\treturn n, err\n}\n\n//sys\tpwritev(fd int, iovs []Iovec, off int64) (n int, err error)\n\nfunc Pwritev(fd int, iovs [][]byte, off int64) (n int, err error) {\n\tiovecs := bytes2iovec(iovs)\n\tn, err = pwritev(fd, iovecs, off)\n\treturn n, err\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) = libsocket.accept4\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/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\"strconv\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n)\n\n/*\n * Wrapped\n */\n\nfunc Access(path string, mode uint32) (err error) {\n\treturn Faccessat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\treturn Fchmodat(AT_FDCWD, path, mode, 0)\n}\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, 0)\n}\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\treturn Open(path, O_CREAT|O_WRONLY|O_TRUNC, mode)\n}\n\nfunc EpollCreate(size int) (fd int, err error) {\n\tif size <= 0 {\n\t\treturn -1, EINVAL\n\t}\n\treturn EpollCreate1(0)\n}\n\n//sys\tFanotifyInit(flags uint, event_f_flags uint) (fd int, err error)\n//sys\tfanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error)\n\nfunc FanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname string) (err error) {\n\tif pathname == \"\" {\n\t\treturn fanotifyMark(fd, flags, mask, dirFd, nil)\n\t}\n\tp, err := BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn fanotifyMark(fd, flags, mask, dirFd, p)\n}\n\n//sys\tfchmodat(dirfd int, path string, mode uint32) (err error)\n//sys\tfchmodat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) error {\n\t// Linux fchmodat doesn't support the flags parameter, but fchmodat2 does.\n\t// Try fchmodat2 if flags are specified.\n\tif flags != 0 {\n\t\terr := fchmodat2(dirfd, path, mode, flags)\n\t\tif err == ENOSYS {\n\t\t\t// fchmodat2 isn't available. If the flags are known to be valid,\n\t\t\t// return EOPNOTSUPP to indicate that fchmodat doesn't support them.\n\t\t\tif flags&^(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EINVAL\n\t\t\t} else if flags&(AT_SYMLINK_NOFOLLOW|AT_EMPTY_PATH) != 0 {\n\t\t\t\treturn EOPNOTSUPP\n\t\t\t}\n\t\t}\n\t\treturn err\n\t}\n\treturn fchmodat(dirfd, path, mode)\n}\n\nfunc InotifyInit() (fd int, err error) {\n\treturn InotifyInit1(0)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error) = SYS_IOCTL\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n// ioctl itself should not be exposed directly, but additional get/set functions\n// for specific types are permissible. These are defined in ioctl.go and\n// ioctl_linux.go.\n//\n// The third argument to ioctl is often a pointer but sometimes an integer.\n// Callers should use ioctlPtr when the third argument is a pointer and ioctl\n// when the third argument is an integer.\n//\n// TODO: some existing code incorrectly uses ioctl when it should use ioctlPtr.\n\n//sys\tLinkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error)\n\nfunc Link(oldpath string, newpath string) (err error) {\n\treturn Linkat(AT_FDCWD, oldpath, AT_FDCWD, newpath, 0)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\treturn Mkdirat(AT_FDCWD, path, mode)\n}\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\treturn Mknodat(AT_FDCWD, path, mode, dev)\n}\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn openat(AT_FDCWD, path, mode|O_LARGEFILE, perm)\n}\n\n//sys\topenat(dirfd int, path string, flags int, mode uint32) (fd int, err error)\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\treturn openat(dirfd, path, flags|O_LARGEFILE, mode)\n}\n\n//sys\topenat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error)\n\nfunc Openat2(dirfd int, path string, how *OpenHow) (fd int, err error) {\n\treturn openat2(dirfd, path, how, SizeofOpenHow)\n}\n\nfunc Pipe(p []int) error {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout >= 0 {\n\t\tts = new(Timespec)\n\t\t*ts = NsecToTimespec(int64(timeout) * 1e6)\n\t}\n\treturn Ppoll(fds, ts, nil)\n}\n\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\treturn Readlinkat(AT_FDCWD, path, buf)\n}\n\nfunc Rename(oldpath string, newpath string) (err error) {\n\treturn Renameat(AT_FDCWD, oldpath, AT_FDCWD, newpath)\n}\n\nfunc Rmdir(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, AT_REMOVEDIR)\n}\n\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n\nfunc Symlink(oldpath string, newpath string) (err error) {\n\treturn Symlinkat(oldpath, AT_FDCWD, newpath)\n}\n\nfunc Unlink(path string) error {\n\treturn Unlinkat(AT_FDCWD, path, 0)\n}\n\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n\nfunc Utimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\terr := utimensat(AT_FDCWD, path, nil, 0)\n\t\tif err != ENOSYS {\n\t\t\treturn err\n\t\t}\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar ts [2]Timespec\n\tts[0] = NsecToTimespec(TimevalToNsec(tv[0]))\n\tts[1] = NsecToTimespec(TimevalToNsec(tv[1]))\n\terr := utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(dirfd, path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Futimes(fd int, tv []Timeval) (err error) {\n\t// Believe it or not, this is the best we can do on Linux\n\t// (and is what glibc does).\n\treturn Utimes(\"/proc/self/fd/\"+strconv.Itoa(fd), tv)\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\t// In some cases, Linux can return a path that starts with the\n\t// \"(unreachable)\" prefix, which can potentially be a valid relative\n\t// path. To work around that, return ENOENT if path is not absolute.\n\tif buf[0] != '/' {\n\t\treturn \"\", ENOENT\n\t}\n\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count. Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits. At least that's the idea.\n// There are various irregularities. For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int {\n\tif w.StopSignal() != SIGTRAP {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) >> 8\n}\n\n//sys\twait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\tvar status _C_int\n\twpid, err = wait4(pid, &status, options, rusage)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sys\tWaitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error)\n\nfunc Mkfifo(path string, mode uint32) error {\n\treturn Mknod(path, mode|S_IFIFO, 0)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) error {\n\treturn Mknodat(dirfd, path, mode|S_IFIFO, 0)\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n// SockaddrLinklayer implements the Sockaddr interface for AF_PACKET type sockets.\ntype SockaddrLinklayer struct {\n\tProtocol uint16\n\tIfindex  int\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]byte\n\traw      RawSockaddrLinklayer\n}\n\nfunc (sa *SockaddrLinklayer) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_PACKET\n\tsa.raw.Protocol = sa.Protocol\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tsa.raw.Hatype = sa.Hatype\n\tsa.raw.Pkttype = sa.Pkttype\n\tsa.raw.Halen = sa.Halen\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrLinklayer, nil\n}\n\n// SockaddrNetlink implements the Sockaddr interface for AF_NETLINK type sockets.\ntype SockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n\traw    RawSockaddrNetlink\n}\n\nfunc (sa *SockaddrNetlink) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_NETLINK\n\tsa.raw.Pad = sa.Pad\n\tsa.raw.Pid = sa.Pid\n\tsa.raw.Groups = sa.Groups\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNetlink, nil\n}\n\n// SockaddrHCI implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the HCI protocol.\ntype SockaddrHCI struct {\n\tDev     uint16\n\tChannel uint16\n\traw     RawSockaddrHCI\n}\n\nfunc (sa *SockaddrHCI) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Dev = sa.Dev\n\tsa.raw.Channel = sa.Channel\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrHCI, nil\n}\n\n// SockaddrL2 implements the Sockaddr interface for AF_BLUETOOTH type sockets\n// using the L2CAP protocol.\ntype SockaddrL2 struct {\n\tPSM      uint16\n\tCID      uint16\n\tAddr     [6]uint8\n\tAddrType uint8\n\traw      RawSockaddrL2\n}\n\nfunc (sa *SockaddrL2) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tpsm := (*[2]byte)(unsafe.Pointer(&sa.raw.Psm))\n\tpsm[0] = byte(sa.PSM)\n\tpsm[1] = byte(sa.PSM >> 8)\n\tfor i := 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//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = unix.Bind(fd, &unix.SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]uint8{0, 0, 0, 0, 0, 0}, // BDADDR_ANY or 00:00:00:00:00:00\n//\t})\n//\t_ = Listen(fd, 1)\n//\tnfd, sa, _ := Accept(fd)\n//\tfmt.Printf(\"conn addr=%v fd=%d\", sa.(*unix.SockaddrRFCOMM).Addr, nfd)\n//\tRead(nfd, buf)\n//\n// Client example:\n//\n//\tfd, _ := Socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM)\n//\t_ = Connect(fd, &SockaddrRFCOMM{\n//\t\tChannel: 1,\n//\t\tAddr:    [6]byte{0x11, 0x22, 0x33, 0xaa, 0xbb, 0xcc}, // CC:BB:AA:33:22:11\n//\t})\n//\tWrite(fd, []byte(`hello`))\ntype SockaddrRFCOMM struct {\n\t// Addr represents a bluetooth address, byte ordering is little-endian.\n\tAddr [6]uint8\n\n\t// Channel is a designated bluetooth channel, only 1-30 are available for use.\n\t// Since Linux 2.6.7 and further zero value is the first available channel.\n\tChannel uint8\n\n\traw RawSockaddrRFCOMM\n}\n\nfunc (sa *SockaddrRFCOMM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_BLUETOOTH\n\tsa.raw.Channel = sa.Channel\n\tsa.raw.Bdaddr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrRFCOMM, nil\n}\n\n// SockaddrCAN implements the Sockaddr interface for AF_CAN type sockets.\n// The RxID and TxID fields are used for transport protocol addressing in\n// (CAN_TP16, CAN_TP20, CAN_MCNET, and CAN_ISOTP), they can be left with\n// zero values for CAN_RAW and CAN_BCM sockets as they have no meaning.\n//\n// The SockaddrCAN struct must be bound to the socket file descriptor\n// using Bind before the CAN socket can be used.\n//\n//\t// Read one raw CAN frame\n//\tfd, _ := Socket(AF_CAN, SOCK_RAW, CAN_RAW)\n//\taddr := &SockaddrCAN{Ifindex: index}\n//\tBind(fd, addr)\n//\tframe := make([]byte, 16)\n//\tRead(fd, frame)\n//\n// The full SocketCAN documentation can be found in the linux kernel\n// archives at: https://www.kernel.org/doc/Documentation/networking/can.txt\ntype SockaddrCAN struct {\n\tIfindex int\n\tRxID    uint32\n\tTxID    uint32\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCAN) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\tfor i := 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// SockaddrCANJ1939 implements the Sockaddr interface for AF_CAN using J1939\n// protocol (https://en.wikipedia.org/wiki/SAE_J1939). For more information\n// on the purposes of the fields, check the official linux kernel documentation\n// available here: https://www.kernel.org/doc/Documentation/networking/j1939.rst\ntype SockaddrCANJ1939 struct {\n\tIfindex int\n\tName    uint64\n\tPGN     uint32\n\tAddr    uint8\n\traw     RawSockaddrCAN\n}\n\nfunc (sa *SockaddrCANJ1939) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Ifindex < 0 || sa.Ifindex > 0x7fffffff {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_CAN\n\tsa.raw.Ifindex = int32(sa.Ifindex)\n\tn := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\tfor i := 0; i < 8; i++ {\n\t\tsa.raw.Addr[i] = n[i]\n\t}\n\tp := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\tfor i := 0; i < 4; i++ {\n\t\tsa.raw.Addr[i+8] = p[i]\n\t}\n\tsa.raw.Addr[12] = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrCAN, nil\n}\n\n// SockaddrALG implements the Sockaddr interface for AF_ALG type sockets.\n// SockaddrALG enables userspace access to the Linux kernel's cryptography\n// subsystem. The Type and Name fields specify which type of hash or cipher\n// should be used with a given socket.\n//\n// To create a file descriptor that provides access to a hash or cipher, both\n// Bind and Accept must be used. Once the setup process is complete, input\n// data can be written to the socket, processed by the kernel, and then read\n// back as hash output or ciphertext.\n//\n// Here is an example of using an AF_ALG socket with SHA1 hashing.\n// The initial socket setup process is as follows:\n//\n//\t// Open a socket to perform SHA1 hashing.\n//\tfd, _ := unix.Socket(unix.AF_ALG, unix.SOCK_SEQPACKET, 0)\n//\taddr := &unix.SockaddrALG{Type: \"hash\", Name: \"sha1\"}\n//\tunix.Bind(fd, addr)\n//\t// Note: unix.Accept does not work at this time; must invoke accept()\n//\t// manually using unix.Syscall.\n//\thashfd, _, _ := unix.Syscall(unix.SYS_ACCEPT, uintptr(fd), 0, 0)\n//\n// Once a file descriptor has been returned from Accept, it may be used to\n// perform SHA1 hashing. The descriptor is not safe for concurrent use, but\n// may be re-used repeatedly with subsequent Write and Read operations.\n//\n// When hashing a small byte slice or string, a single Write and Read may\n// be used:\n//\n//\t// Assume hashfd is already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash an input string and read the results. Each Write discards\n//\t// previous hash state. Read always reads the current state.\n//\tb := make([]byte, 20)\n//\tfor i := 0; i < 2; i++ {\n//\t    io.WriteString(hash, \"Hello, world.\")\n//\t    hash.Read(b)\n//\t    fmt.Println(hex.EncodeToString(b))\n//\t}\n//\t// Output:\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\t// 2ae01472317d1935a84797ec1983ae243fc6aa28\n//\n// For hashing larger byte slices, or byte streams such as those read from\n// a file or socket, use Sendto with MSG_MORE to instruct the kernel to update\n// the hash digest instead of creating a new one for a given chunk and finalizing it.\n//\n//\t// Assume hashfd and addr are already configured using the setup process.\n//\thash := os.NewFile(hashfd, \"sha1\")\n//\t// Hash the contents of a file.\n//\tf, _ := os.Open(\"/tmp/linux-4.10-rc7.tar.xz\")\n//\tb := make([]byte, 4096)\n//\tfor {\n//\t    n, err := f.Read(b)\n//\t    if err == io.EOF {\n//\t        break\n//\t    }\n//\t    unix.Sendto(hashfd, b[:n], unix.MSG_MORE, addr)\n//\t}\n//\thash.Read(b)\n//\tfmt.Println(hex.EncodeToString(b))\n//\t// Output: 85cdcad0c06eef66f805ecce353bec9accbeecc5\n//\n// For more information, see: http://www.chronox.de/crypto-API/crypto/userspace-if.html.\ntype SockaddrALG struct {\n\tType    string\n\tName    string\n\tFeature uint32\n\tMask    uint32\n\traw     RawSockaddrALG\n}\n\nfunc (sa *SockaddrALG) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\t// Leave room for NUL byte terminator.\n\tif len(sa.Type) > len(sa.raw.Type)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Name) > len(sa.raw.Name)-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\tsa.raw.Family = AF_ALG\n\tsa.raw.Feat = sa.Feature\n\tsa.raw.Mask = sa.Mask\n\n\tcopy(sa.raw.Type[:], sa.Type)\n\tcopy(sa.raw.Name[:], sa.Name)\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrALG, nil\n}\n\n// SockaddrVM implements the Sockaddr interface for AF_VSOCK type sockets.\n// SockaddrVM provides access to Linux VM sockets: a mechanism that enables\n// bidirectional communication between a hypervisor and its guest virtual\n// machines.\ntype SockaddrVM struct {\n\t// CID and Port specify a context ID and port address for a VM socket.\n\t// Guests have a unique CID, and hosts may have a well-known CID of:\n\t//  - VMADDR_CID_HYPERVISOR: refers to the hypervisor process.\n\t//  - VMADDR_CID_LOCAL: refers to local communication (loopback).\n\t//  - VMADDR_CID_HOST: refers to other processes on the host.\n\tCID   uint32\n\tPort  uint32\n\tFlags uint8\n\traw   RawSockaddrVM\n}\n\nfunc (sa *SockaddrVM) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_VSOCK\n\tsa.raw.Port = sa.Port\n\tsa.raw.Cid = sa.CID\n\tsa.raw.Flags = sa.Flags\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrVM, nil\n}\n\ntype SockaddrXDP struct {\n\tFlags        uint16\n\tIfindex      uint32\n\tQueueID      uint32\n\tSharedUmemFD uint32\n\traw          RawSockaddrXDP\n}\n\nfunc (sa *SockaddrXDP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_XDP\n\tsa.raw.Flags = sa.Flags\n\tsa.raw.Ifindex = sa.Ifindex\n\tsa.raw.Queue_id = sa.QueueID\n\tsa.raw.Shared_umem_fd = sa.SharedUmemFD\n\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrXDP, nil\n}\n\n// This constant mirrors the #define of PX_PROTO_OE in\n// linux/if_pppox.h. We're defining this by hand here instead of\n// autogenerating through mkerrors.sh because including\n// linux/if_pppox.h causes some declaration conflicts with other\n// includes (linux/if_pppox.h includes linux/in.h, which conflicts\n// with netinet/in.h). Given that we only need a single zero constant\n// out of that file, it's cleaner to just define it by hand here.\nconst px_proto_oe = 0\n\ntype SockaddrPPPoE struct {\n\tSID    uint16\n\tRemote []byte\n\tDev    string\n\traw    RawSockaddrPPPoX\n}\n\nfunc (sa *SockaddrPPPoE) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif len(sa.Remote) != 6 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tif len(sa.Dev) > IFNAMSIZ-1 {\n\t\treturn nil, 0, EINVAL\n\t}\n\n\t*(*uint16)(unsafe.Pointer(&sa.raw[0])) = AF_PPPOX\n\t// This next field is in host-endian byte order. We can't use the\n\t// same unsafe pointer cast as above, because this value is not\n\t// 32-bit aligned and some architectures don't allow unaligned\n\t// access.\n\t//\n\t// However, the value of px_proto_oe is 0, so we can use\n\t// encoding/binary helpers to write the bytes without worrying\n\t// about the ordering.\n\tbinary.BigEndian.PutUint32(sa.raw[2:6], px_proto_oe)\n\t// This field is deliberately big-endian, unlike the previous\n\t// one. The kernel expects SID to be in network byte order.\n\tbinary.BigEndian.PutUint16(sa.raw[6:8], sa.SID)\n\tcopy(sa.raw[8:14], sa.Remote)\n\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\tsa.raw.Family = AF_TIPC\n\tsa.raw.Scope = int8(sa.Scope)\n\tsa.raw.Addrtype = sa.Addr.tipcAddrtype()\n\tsa.raw.Addr = sa.Addr.tipcAddr()\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrTIPC, nil\n}\n\n// SockaddrL2TPIP implements the Sockaddr interface for IPPROTO_L2TP/AF_INET sockets.\ntype SockaddrL2TPIP struct {\n\tAddr   [4]byte\n\tConnId uint32\n\traw    RawSockaddrL2TPIP\n}\n\nfunc (sa *SockaddrL2TPIP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP, nil\n}\n\n// SockaddrL2TPIP6 implements the Sockaddr interface for IPPROTO_L2TP/AF_INET6 sockets.\ntype SockaddrL2TPIP6 struct {\n\tAddr   [16]byte\n\tZoneId uint32\n\tConnId uint32\n\traw    RawSockaddrL2TPIP6\n}\n\nfunc (sa *SockaddrL2TPIP6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_INET6\n\tsa.raw.Conn_id = sa.ConnId\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrL2TPIP6, nil\n}\n\n// SockaddrIUCV implements the Sockaddr interface for AF_IUCV sockets.\ntype SockaddrIUCV struct {\n\tUserID string\n\tName   string\n\traw    RawSockaddrIUCV\n}\n\nfunc (sa *SockaddrIUCV) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Family = AF_IUCV\n\t// These are EBCDIC encoded by the kernel, but we still need to pad them\n\t// with blanks. Initializing with blanks allows the caller to feed in either\n\t// a padded or an unpadded string.\n\tfor i := 0; i < 8; i++ {\n\t\tsa.raw.Nodeid[i] = ' '\n\t\tsa.raw.User_id[i] = ' '\n\t\tsa.raw.Name[i] = ' '\n\t}\n\tif len(sa.UserID) > 8 || len(sa.Name) > 8 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tfor i, b := range []byte(sa.UserID[:]) {\n\t\tsa.raw.User_id[i] = int8(b)\n\t}\n\tfor i, b := range []byte(sa.Name[:]) {\n\t\tsa.raw.Name[i] = int8(b)\n\t}\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrIUCV, nil\n}\n\ntype SockaddrNFC struct {\n\tDeviceIdx   uint32\n\tTargetIdx   uint32\n\tNFCProtocol uint32\n\traw         RawSockaddrNFC\n}\n\nfunc (sa *SockaddrNFC) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFC, nil\n}\n\ntype SockaddrNFCLLCP struct {\n\tDeviceIdx      uint32\n\tTargetIdx      uint32\n\tNFCProtocol    uint32\n\tDestinationSAP uint8\n\tSourceSAP      uint8\n\tServiceName    string\n\traw            RawSockaddrNFCLLCP\n}\n\nfunc (sa *SockaddrNFCLLCP) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tsa.raw.Sa_family = AF_NFC\n\tsa.raw.Dev_idx = sa.DeviceIdx\n\tsa.raw.Target_idx = sa.TargetIdx\n\tsa.raw.Nfc_protocol = sa.NFCProtocol\n\tsa.raw.Dsap = sa.DestinationSAP\n\tsa.raw.Ssap = sa.SourceSAP\n\tif len(sa.ServiceName) > len(sa.raw.Service_name) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tcopy(sa.raw.Service_name[:], sa.ServiceName)\n\tsa.raw.SetServiceNameLen(len(sa.ServiceName))\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrNFCLLCP, nil\n}\n\nvar socketProtocol = func(fd int) (int, error) {\n\treturn GetsockoptInt(fd, SOL_SOCKET, SO_PROTOCOL)\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_NETLINK:\n\t\tpp := (*RawSockaddrNetlink)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrNetlink)\n\t\tsa.Family = pp.Family\n\t\tsa.Pad = pp.Pad\n\t\tsa.Pid = pp.Pid\n\t\tsa.Groups = pp.Groups\n\t\treturn sa, nil\n\n\tcase AF_PACKET:\n\t\tpp := (*RawSockaddrLinklayer)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrLinklayer)\n\t\tsa.Protocol = pp.Protocol\n\t\tsa.Ifindex = int(pp.Ifindex)\n\t\tsa.Hatype = pp.Hatype\n\t\tsa.Pkttype = pp.Pkttype\n\t\tsa.Halen = pp.Halen\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet4)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_INET6:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tswitch proto {\n\t\tcase IPPROTO_L2TP:\n\t\t\tpp := (*RawSockaddrL2TPIP6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrL2TPIP6)\n\t\t\tsa.ConnId = pp.Conn_id\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\t\tsa := new(SockaddrInet6)\n\t\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\t\tsa.ZoneId = pp.Scope_id\n\t\t\tsa.Addr = pp.Addr\n\t\t\treturn sa, nil\n\t\t}\n\n\tcase AF_VSOCK:\n\t\tpp := (*RawSockaddrVM)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrVM{\n\t\t\tCID:   pp.Cid,\n\t\t\tPort:  pp.Port,\n\t\t\tFlags: pp.Flags,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_BLUETOOTH:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\t// only BTPROTO_L2CAP and BTPROTO_RFCOMM can accept connections\n\t\tswitch proto {\n\t\tcase BTPROTO_L2CAP:\n\t\t\tpp := (*RawSockaddrL2)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrL2{\n\t\t\t\tPSM:      pp.Psm,\n\t\t\t\tCID:      pp.Cid,\n\t\t\t\tAddr:     pp.Bdaddr,\n\t\t\t\tAddrType: pp.Bdaddr_type,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase BTPROTO_RFCOMM:\n\t\t\tpp := (*RawSockaddrRFCOMM)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrRFCOMM{\n\t\t\t\tChannel: pp.Channel,\n\t\t\t\tAddr:    pp.Bdaddr,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_XDP:\n\t\tpp := (*RawSockaddrXDP)(unsafe.Pointer(rsa))\n\t\tsa := &SockaddrXDP{\n\t\t\tFlags:        pp.Flags,\n\t\t\tIfindex:      pp.Ifindex,\n\t\t\tQueueID:      pp.Queue_id,\n\t\t\tSharedUmemFD: pp.Shared_umem_fd,\n\t\t}\n\t\treturn sa, nil\n\tcase AF_PPPOX:\n\t\tpp := (*RawSockaddrPPPoX)(unsafe.Pointer(rsa))\n\t\tif binary.BigEndian.Uint32(pp[2:6]) != px_proto_oe {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t\tsa := &SockaddrPPPoE{\n\t\t\tSID:    binary.BigEndian.Uint16(pp[6:8]),\n\t\t\tRemote: pp[8:14],\n\t\t}\n\t\tfor i := 14; i < 14+IFNAMSIZ; i++ {\n\t\t\tif pp[i] == 0 {\n\t\t\t\tsa.Dev = string(pp[14:i])\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\treturn sa, nil\n\tcase AF_TIPC:\n\t\tpp := (*RawSockaddrTIPC)(unsafe.Pointer(rsa))\n\n\t\tsa := &SockaddrTIPC{\n\t\t\tScope: int(pp.Scope),\n\t\t}\n\n\t\t// Determine which union variant is present in pp.Addr by checking\n\t\t// pp.Addrtype.\n\t\tswitch pp.Addrtype {\n\t\tcase TIPC_SERVICE_RANGE:\n\t\t\tsa.Addr = (*TIPCServiceRange)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SERVICE_ADDR:\n\t\t\tsa.Addr = (*TIPCServiceName)(unsafe.Pointer(&pp.Addr))\n\t\tcase TIPC_SOCKET_ADDR:\n\t\t\tsa.Addr = (*TIPCSocketAddr)(unsafe.Pointer(&pp.Addr))\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\n\t\treturn sa, nil\n\tcase AF_IUCV:\n\t\tpp := (*RawSockaddrIUCV)(unsafe.Pointer(rsa))\n\n\t\tvar user [8]byte\n\t\tvar name [8]byte\n\n\t\tfor i := 0; i < 8; i++ {\n\t\t\tuser[i] = byte(pp.User_id[i])\n\t\t\tname[i] = byte(pp.Name[i])\n\t\t}\n\n\t\tsa := &SockaddrIUCV{\n\t\t\tUserID: string(user[:]),\n\t\t\tName:   string(name[:]),\n\t\t}\n\t\treturn sa, nil\n\n\tcase AF_CAN:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tpp := (*RawSockaddrCAN)(unsafe.Pointer(rsa))\n\n\t\tswitch proto {\n\t\tcase CAN_J1939:\n\t\t\tsa := &SockaddrCANJ1939{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\tname := (*[8]byte)(unsafe.Pointer(&sa.Name))\n\t\t\tfor i := 0; i < 8; i++ {\n\t\t\t\tname[i] = pp.Addr[i]\n\t\t\t}\n\t\t\tpgn := (*[4]byte)(unsafe.Pointer(&sa.PGN))\n\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\tpgn[i] = pp.Addr[i+8]\n\t\t\t}\n\t\t\taddr := (*[1]byte)(unsafe.Pointer(&sa.Addr))\n\t\t\taddr[0] = pp.Addr[12]\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\tsa := &SockaddrCAN{\n\t\t\t\tIfindex: int(pp.Ifindex),\n\t\t\t}\n\t\t\trx := (*[4]byte)(unsafe.Pointer(&sa.RxID))\n\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\trx[i] = pp.Addr[i]\n\t\t\t}\n\t\t\ttx := (*[4]byte)(unsafe.Pointer(&sa.TxID))\n\t\t\tfor i := 0; i < 4; i++ {\n\t\t\t\ttx[i] = pp.Addr[i+4]\n\t\t\t}\n\t\t\treturn sa, nil\n\t\t}\n\tcase AF_NFC:\n\t\tproto, err := socketProtocol(fd)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch proto {\n\t\tcase NFC_SOCKPROTO_RAW:\n\t\t\tpp := (*RawSockaddrNFC)(unsafe.Pointer(rsa))\n\t\t\tsa := &SockaddrNFC{\n\t\t\t\tDeviceIdx:   pp.Dev_idx,\n\t\t\t\tTargetIdx:   pp.Target_idx,\n\t\t\t\tNFCProtocol: pp.Nfc_protocol,\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tcase NFC_SOCKPROTO_LLCP:\n\t\t\tpp := (*RawSockaddrNFCLLCP)(unsafe.Pointer(rsa))\n\t\t\tif uint64(pp.Service_name_len) > uint64(len(pp.Service_name)) {\n\t\t\t\treturn nil, EINVAL\n\t\t\t}\n\t\t\tsa := &SockaddrNFCLLCP{\n\t\t\t\tDeviceIdx:      pp.Dev_idx,\n\t\t\t\tTargetIdx:      pp.Target_idx,\n\t\t\t\tNFCProtocol:    pp.Nfc_protocol,\n\t\t\t\tDestinationSAP: pp.Dsap,\n\t\t\t\tSourceSAP:      pp.Ssap,\n\t\t\t\tServiceName:    string(pp.Service_name[:pp.Service_name_len]),\n\t\t\t}\n\t\t\treturn sa, nil\n\t\tdefault:\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Accept4(fd int, flags int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept4(fd, &rsa, &len, flags)\n\tif err != nil {\n\t\treturn\n\t}\n\tif len > SizeofSockaddrAny {\n\t\tpanic(\"RawSockaddrAny too small\")\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptIPMreqn(fd, level, opt int) (*IPMreqn, error) {\n\tvar value IPMreqn\n\tvallen := _Socklen(SizeofIPMreqn)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptUcred(fd, level, opt int) (*Ucred, error) {\n\tvar value Ucred\n\tvallen := _Socklen(SizeofUcred)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tvar value TCPInfo\n\tvallen := _Socklen(SizeofTCPInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\tif err == ERANGE {\n\t\t\tbuf = make([]byte, vallen)\n\t\t\terr = getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc GetsockoptTpacketStats(fd, level, opt int) (*TpacketStats, error) {\n\tvar value TpacketStats\n\tvallen := _Socklen(SizeofTpacketStats)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptTpacketStatsV3(fd, level, opt int) (*TpacketStatsV3, error) {\n\tvar value TpacketStatsV3\n\tvallen := _Socklen(SizeofTpacketStatsV3)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc SetsockoptIPMreqn(fd, level, opt int, mreq *IPMreqn) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\nfunc SetsockoptPacketMreq(fd, level, opt int, mreq *PacketMreq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), unsafe.Sizeof(*mreq))\n}\n\n// SetsockoptSockFprog attaches a classic BPF or an extended BPF program to a\n// socket to filter incoming packets.  See 'man 7 socket' for usage information.\nfunc SetsockoptSockFprog(fd, level, opt int, fprog *SockFprog) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(fprog), unsafe.Sizeof(*fprog))\n}\n\nfunc SetsockoptCanRawFilter(fd, level, opt int, filter []CanFilter) error {\n\tvar p unsafe.Pointer\n\tif len(filter) > 0 {\n\t\tp = unsafe.Pointer(&filter[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(filter)*SizeofCanFilter))\n}\n\nfunc SetsockoptTpacketReq(fd, level, opt int, tp *TpacketReq) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTpacketReq3(fd, level, opt int, tp *TpacketReq3) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tp), unsafe.Sizeof(*tp))\n}\n\nfunc SetsockoptTCPRepairOpt(fd, level, opt int, o []TCPRepairOpt) (err error) {\n\tif len(o) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&o[0]), uintptr(SizeofTCPRepairOpt*len(o)))\n}\n\nfunc SetsockoptTCPMD5Sig(fd, level, opt int, s *TCPMD5Sig) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(s), unsafe.Sizeof(*s))\n}\n\n// Keyctl Commands (http://man7.org/linux/man-pages/man2/keyctl.2.html)\n\n// KeyctlInt calls keyctl commands in which each argument is an int.\n// These commands are KEYCTL_REVOKE, KEYCTL_CHOWN, KEYCTL_CLEAR, KEYCTL_LINK,\n// KEYCTL_UNLINK, KEYCTL_NEGATE, KEYCTL_SET_REQKEY_KEYRING, KEYCTL_SET_TIMEOUT,\n// KEYCTL_ASSUME_AUTHORITY, KEYCTL_SESSION_TO_PARENT, KEYCTL_REJECT,\n// KEYCTL_INVALIDATE, and KEYCTL_GET_PERSISTENT.\n//sys\tKeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlBuffer calls keyctl commands in which the third and fourth\n// arguments are a buffer and its length, respectively.\n// These commands are KEYCTL_UPDATE, KEYCTL_READ, and KEYCTL_INSTANTIATE.\n//sys\tKeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlString calls keyctl commands which return a string.\n// These commands are KEYCTL_DESCRIBE and KEYCTL_GET_SECURITY.\nfunc KeyctlString(cmd int, id int) (string, error) {\n\t// We must loop as the string data may change in between the syscalls.\n\t// We could allocate a large buffer here to reduce the chance that the\n\t// syscall needs to be called twice; however, this is unnecessary as\n\t// the performance loss is negligible.\n\tvar buffer []byte\n\tfor {\n\t\t// Try to fill the buffer with data\n\t\tlength, err := KeyctlBuffer(cmd, id, buffer, 0)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\t// Check if the data was written\n\t\tif length <= len(buffer) {\n\t\t\t// Exclude the null terminator\n\t\t\treturn string(buffer[:length-1]), nil\n\t\t}\n\n\t\t// Make a bigger buffer if needed\n\t\tbuffer = make([]byte, length)\n\t}\n}\n\n// Keyctl commands with special signatures.\n\n// KeyctlGetKeyringID implements the KEYCTL_GET_KEYRING_ID command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_get_keyring_ID.3.html\nfunc KeyctlGetKeyringID(id int, create bool) (ringid int, err error) {\n\tcreateInt := 0\n\tif create {\n\t\tcreateInt = 1\n\t}\n\treturn KeyctlInt(KEYCTL_GET_KEYRING_ID, id, createInt, 0, 0)\n}\n\n// KeyctlSetperm implements the KEYCTL_SETPERM command. The perm value is the\n// key handle permission mask as described in the \"keyctl setperm\" section of\n// http://man7.org/linux/man-pages/man1/keyctl.1.html.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_setperm.3.html\nfunc KeyctlSetperm(id int, perm uint32) error {\n\t_, err := KeyctlInt(KEYCTL_SETPERM, id, int(perm), 0, 0)\n\treturn err\n}\n\n//sys\tkeyctlJoin(cmd int, arg2 string) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlJoinSessionKeyring implements the KEYCTL_JOIN_SESSION_KEYRING command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_join_session_keyring.3.html\nfunc KeyctlJoinSessionKeyring(name string) (ringid int, err error) {\n\treturn keyctlJoin(KEYCTL_JOIN_SESSION_KEYRING, name)\n}\n\n//sys\tkeyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlSearch implements the KEYCTL_SEARCH command.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_search.3.html\nfunc KeyctlSearch(ringid int, keyType, description string, destRingid int) (id int, err error) {\n\treturn keyctlSearch(KEYCTL_SEARCH, ringid, keyType, description, destRingid)\n}\n\n//sys\tkeyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) = SYS_KEYCTL\n\n// KeyctlInstantiateIOV implements the KEYCTL_INSTANTIATE_IOV command. This\n// command is similar to KEYCTL_INSTANTIATE, except that the payload is a slice\n// of Iovec (each of which represents a buffer) instead of a single buffer.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_instantiate_iov.3.html\nfunc KeyctlInstantiateIOV(id int, payload []Iovec, ringid int) error {\n\treturn keyctlIOV(KEYCTL_INSTANTIATE_IOV, id, payload, ringid)\n}\n\n//sys\tkeyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) = SYS_KEYCTL\n\n// KeyctlDHCompute implements the KEYCTL_DH_COMPUTE command. This command\n// computes a Diffie-Hellman shared secret based on the provide params. The\n// secret is written to the provided buffer and the returned size is the number\n// of bytes written (returning an error if there is insufficient space in the\n// buffer). If a nil buffer is passed in, this function returns the minimum\n// buffer length needed to store the appropriate data. Note that this differs\n// from KEYCTL_READ's behavior which always returns the requested payload size.\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_dh_compute.3.html\nfunc KeyctlDHCompute(params *KeyctlDHParams, buffer []byte) (size int, err error) {\n\treturn keyctlDH(KEYCTL_DH_COMPUTE, params, buffer)\n}\n\n// KeyctlRestrictKeyring implements the KEYCTL_RESTRICT_KEYRING command. This\n// command limits the set of keys that can be linked to the keyring, regardless\n// of keyring permissions. The command requires the \"setattr\" permission.\n//\n// When called with an empty keyType the command locks the keyring, preventing\n// any further keys from being linked to the keyring.\n//\n// The \"asymmetric\" keyType defines restrictions requiring key payloads to be\n// DER encoded X.509 certificates signed by keys in another keyring. Restrictions\n// for \"asymmetric\" include \"builtin_trusted\", \"builtin_and_secondary_trusted\",\n// \"key_or_keyring:<key>\", and \"key_or_keyring:<key>:chain\".\n//\n// As of Linux 4.12, only the \"asymmetric\" keyType defines type-specific\n// restrictions.\n//\n// See the full documentation at:\n// http://man7.org/linux/man-pages/man3/keyctl_restrict_keyring.3.html\n// http://man7.org/linux/man-pages/man2/keyctl.2.html\nfunc KeyctlRestrictKeyring(ringid int, keyType string, restriction string) error {\n\tif keyType == \"\" {\n\t\treturn keyctlRestrictKeyring(KEYCTL_RESTRICT_KEYRING, ringid)\n\t}\n\treturn keyctlRestrictKeyringByType(KEYCTL_RESTRICT_KEYRING, ringid, keyType, restriction)\n}\n\n//sys\tkeyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) = SYS_KEYCTL\n//sys\tkeyctlRestrictKeyring(cmd int, arg2 int) (err error) = SYS_KEYCTL\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\tif emptyIovecs(iov) {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\t// receive at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\treturn\n}\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(ptr)\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar sockType int\n\t\t\tsockType, err = GetsockoptInt(fd, SOL_SOCKET, SO_TYPE)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\t// send at least one normal byte\n\t\t\tif sockType != SOCK_DGRAM {\n\t\t\t\tvar iova [1]Iovec\n\t\t\t\tiova[0].Base = &dummy\n\t\t\t\tiova[0].SetLen(1)\n\t\t\t\tiov = iova[:]\n\t\t\t}\n\t\t}\n\t\tmsg.Control = &oob[0]\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n// BindToDevice binds the socket associated with fd to device.\nfunc BindToDevice(fd int, device string) (err error) {\n\treturn SetsockoptString(fd, SOL_SOCKET, SO_BINDTODEVICE, device)\n}\n\n//sys\tptrace(request int, pid int, addr uintptr, data uintptr) (err error)\n//sys\tptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) = SYS_PTRACE\n\nfunc ptracePeek(req int, pid int, addr uintptr, out []byte) (count int, err error) {\n\t// The peek requests are machine-size oriented, so we wrap it\n\t// to retrieve arbitrary-length data.\n\n\t// The ptrace syscall differs from glibc's ptrace.\n\t// Peeks returns the word in *data, not as the return value.\n\n\tvar buf [SizeofPtr]byte\n\n\t// Leading edge. PEEKTEXT/PEEKDATA don't require aligned\n\t// access (PEEKUSER warns that it might), but if we don't\n\t// align our reads, we might straddle an unmapped page\n\t// boundary and not get the bytes leading up to the page\n\t// boundary.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\terr = ptracePtr(req, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(out, buf[addr%SizeofPtr:])\n\t\tout = out[n:]\n\t}\n\n\t// Remainder.\n\tfor len(out) > 0 {\n\t\t// We use an internal buffer to guarantee alignment.\n\t\t// It's not documented if this is necessary, but we're paranoid.\n\t\terr = ptracePtr(req, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopied := copy(out, buf[0:])\n\t\tn += copied\n\t\tout = out[copied:]\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePeekText(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKTEXT, pid, addr, out)\n}\n\nfunc PtracePeekData(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKDATA, pid, addr, out)\n}\n\nfunc PtracePeekUser(pid int, addr uintptr, out []byte) (count int, err error) {\n\treturn ptracePeek(PTRACE_PEEKUSR, pid, addr, out)\n}\n\nfunc ptracePoke(pokeReq int, peekReq int, pid int, addr uintptr, data []byte) (count int, err error) {\n\t// As for ptracePeek, we need to align our accesses to deal\n\t// with the possibility of straddling an invalid page.\n\n\t// Leading edge.\n\tn := 0\n\tif addr%SizeofPtr != 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr-addr%SizeofPtr, unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn += copy(buf[addr%SizeofPtr:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr-addr%SizeofPtr, word)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tdata = data[n:]\n\t}\n\n\t// Interior.\n\tfor len(data) > SizeofPtr {\n\t\tword := *((*uintptr)(unsafe.Pointer(&data[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += SizeofPtr\n\t\tdata = data[SizeofPtr:]\n\t}\n\n\t// Trailing edge.\n\tif len(data) > 0 {\n\t\tvar buf [SizeofPtr]byte\n\t\terr = ptracePtr(peekReq, pid, addr+uintptr(n), unsafe.Pointer(&buf[0]))\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tcopy(buf[0:], data)\n\t\tword := *((*uintptr)(unsafe.Pointer(&buf[0])))\n\t\terr = ptrace(pokeReq, pid, addr+uintptr(n), word)\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tn += len(data)\n\t}\n\n\treturn n, nil\n}\n\nfunc PtracePokeText(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKETEXT, PTRACE_PEEKTEXT, pid, addr, data)\n}\n\nfunc PtracePokeData(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEDATA, PTRACE_PEEKDATA, pid, addr, data)\n}\n\nfunc PtracePokeUser(pid int, addr uintptr, data []byte) (count int, err error) {\n\treturn ptracePoke(PTRACE_POKEUSR, PTRACE_PEEKUSR, pid, addr, data)\n}\n\n// elfNT_PRSTATUS is a copy of the debug/elf.NT_PRSTATUS constant so\n// x/sys/unix doesn't need to depend on debug/elf and thus\n// compress/zlib, debug/dwarf, and other packages.\nconst elfNT_PRSTATUS = 1\n\nfunc PtraceGetRegs(pid int, regsout *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regsout))\n\tiov.SetLen(int(unsafe.Sizeof(*regsout)))\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetRegs(pid int, regs *PtraceRegs) (err error) {\n\tvar iov Iovec\n\tiov.Base = (*byte)(unsafe.Pointer(regs))\n\tiov.SetLen(int(unsafe.Sizeof(*regs)))\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(elfNT_PRSTATUS), unsafe.Pointer(&iov))\n}\n\nfunc PtraceSetOptions(pid int, options int) (err error) {\n\treturn ptrace(PTRACE_SETOPTIONS, pid, 0, uintptr(options))\n}\n\nfunc PtraceGetEventMsg(pid int) (msg uint, err error) {\n\tvar data _C_long\n\terr = ptracePtr(PTRACE_GETEVENTMSG, pid, 0, unsafe.Pointer(&data))\n\tmsg = uint(data)\n\treturn\n}\n\nfunc PtraceCont(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_CONT, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSyscall(pid int, signal int) (err error) {\n\treturn ptrace(PTRACE_SYSCALL, pid, 0, uintptr(signal))\n}\n\nfunc PtraceSingleStep(pid int) (err error) { return ptrace(PTRACE_SINGLESTEP, pid, 0, 0) }\n\nfunc PtraceInterrupt(pid int) (err error) { return ptrace(PTRACE_INTERRUPT, pid, 0, 0) }\n\nfunc PtraceAttach(pid int) (err error) { return ptrace(PTRACE_ATTACH, pid, 0, 0) }\n\nfunc PtraceSeize(pid int) (err error) { return ptrace(PTRACE_SEIZE, pid, 0, 0) }\n\nfunc PtraceDetach(pid int) (err error) { return ptrace(PTRACE_DETACH, pid, 0, 0) }\n\n//sys\treboot(magic1 uint, magic2 uint, cmd int, arg string) (err error)\n\nfunc Reboot(cmd int) (err error) {\n\treturn reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd, \"\")\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sys\tmount(source string, target string, fstype string, flags uintptr, data *byte) (err error)\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\t// Certain file systems get rather angry and EINVAL if you give\n\t// them an empty string of data, rather than NULL.\n\tif data == \"\" {\n\t\treturn mount(source, target, fstype, flags, nil)\n\t}\n\tdatap, err := BytePtrFromString(data)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn mount(source, target, fstype, flags, datap)\n}\n\n//sys\tmountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) = SYS_MOUNT_SETATTR\n\n// MountSetattr is a wrapper for mount_setattr(2).\n// https://man7.org/linux/man-pages/man2/mount_setattr.2.html\n//\n// Requires kernel >= 5.12.\nfunc MountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr) error {\n\treturn mountSetattr(dirfd, pathname, flags, attr, unsafe.Sizeof(*attr))\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// Sendto\n// Recvfrom\n// Socketpair\n\n/*\n * Direct access\n */\n//sys\tAcct(path string) (err error)\n//sys\tAddKey(keyType string, description string, payload []byte, ringid int) (id int, err error)\n//sys\tAdjtimex(buf *Timex) (state int, err error)\n//sysnb\tCapget(hdr *CapUserHeader, data *CapUserData) (err error)\n//sysnb\tCapset(hdr *CapUserHeader, data *CapUserData) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockAdjtime(clockid int32, buf *Timex) (state int, err error)\n//sys\tClockGetres(clockid int32, res *Timespec) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCloseRange(first uint, last uint, flags uint) (err error)\n//sys\tCopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tDeleteModule(name string, flags int) (err error)\n//sys\tDup(oldfd int) (fd int, err error)\n\nfunc Dup2(oldfd, newfd int) error {\n\treturn Dup3(oldfd, newfd, 0)\n}\n\n//sys\tDup3(oldfd int, newfd int, flags int) (err error)\n//sysnb\tEpollCreate1(flag int) (fd int, err error)\n//sysnb\tEpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error)\n//sys\tEventfd(initval uint, flags int) (fd int, err error) = SYS_EVENTFD2\n//sys\tExit(code int) = SYS_EXIT_GROUP\n//sys\tFallocate(fd int, mode uint32, off int64, len int64) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFgetxattr(fd int, attr string, dest []byte) (sz int, err error)\n//sys\tFinitModule(fd int, params string, flags int) (err error)\n//sys\tFlistxattr(fd int, dest []byte) (sz int, err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFremovexattr(fd int, attr string) (err error)\n//sys\tFsetxattr(fd int, attr string, dest []byte, flags int) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFsmount(fd int, flags int, mountAttrs int) (fsfd int, err error)\n//sys\tFsopen(fsName string, flags int) (fd int, err error)\n//sys\tFspick(dirfd int, pathName string, flags int) (fd int, err error)\n\n//sys\tfsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error)\n\nfunc fsconfigCommon(fd int, cmd uint, key string, value *byte, aux int) (err error) {\n\tvar keyp *byte\n\tif keyp, err = BytePtrFromString(key); err != nil {\n\t\treturn\n\t}\n\treturn fsconfig(fd, cmd, keyp, value, aux)\n}\n\n// FsconfigSetFlag is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FLAG.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\nfunc FsconfigSetFlag(fd int, key string) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FLAG, key, nil, 0)\n}\n\n// FsconfigSetString is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_STRING.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetString(fd int, key string, value string) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(value); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_STRING, key, valuep, 0)\n}\n\n// FsconfigSetBinary is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_BINARY.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is the parameter value to set.\nfunc FsconfigSetBinary(fd int, key string, value []byte) (err error) {\n\tif len(value) == 0 {\n\t\treturn EINVAL\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_BINARY, key, &value[0], len(value))\n}\n\n// FsconfigSetPath is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// path is a non-empty path for specified key.\n// atfd is a file descriptor at which to start lookup from or AT_FDCWD.\nfunc FsconfigSetPath(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH, key, valuep, atfd)\n}\n\n// FsconfigSetPathEmpty is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_PATH_EMPTY. The same as\n// FconfigSetPath but with AT_PATH_EMPTY implied.\nfunc FsconfigSetPathEmpty(fd int, key string, path string, atfd int) (err error) {\n\tvar valuep *byte\n\tif valuep, err = BytePtrFromString(path); err != nil {\n\t\treturn\n\t}\n\treturn fsconfigCommon(fd, FSCONFIG_SET_PATH_EMPTY, key, valuep, atfd)\n}\n\n// FsconfigSetFd is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_SET_FD.\n//\n// fd is the filesystem context to act upon.\n// key the parameter key to set.\n// value is a file descriptor to be assigned to specified key.\nfunc FsconfigSetFd(fd int, key string, value int) (err error) {\n\treturn fsconfigCommon(fd, FSCONFIG_SET_FD, key, nil, value)\n}\n\n// FsconfigCreate is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_CREATE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigCreate(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_CREATE, nil, nil, 0)\n}\n\n// FsconfigReconfigure is equivalent to fsconfig(2) called\n// with cmd == FSCONFIG_CMD_RECONFIGURE.\n//\n// fd is the filesystem context to act upon.\nfunc FsconfigReconfigure(fd int) (err error) {\n\treturn fsconfig(fd, FSCONFIG_CMD_RECONFIGURE, nil, nil, 0)\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error) = SYS_GETDENTS64\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//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\tMoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpenTree(dfd int, fileName string, flags uint) (r int, err error)\n//sys\tPerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error)\n//sys\tPivotRoot(newroot string, putold string) (err error) = SYS_PIVOT_ROOT\n//sys\tPrctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error)\n//sys\tpselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tRemovexattr(path string, attr string) (err error)\n//sys\tRenameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error)\n//sys\tRequestKey(keyType string, description string, callback string, destRingid int) (id int, err error)\n//sys\tSetdomainname(p []byte) (err error)\n//sys\tSethostname(p []byte) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tv *Timeval) (err error)\n//sys\tSetns(fd int, nstype int) (err error)\n\n//go:linkname syscall_prlimit syscall.prlimit\nfunc syscall_prlimit(pid, resource int, newlimit, old *syscall.Rlimit) error\n\nfunc Prlimit(pid, resource int, newlimit, old *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall_prlimit(pid, resource, (*syscall.Rlimit)(newlimit), (*syscall.Rlimit)(old))\n}\n\n// PrctlRetInt performs a prctl operation specified by option and further\n// optional arguments arg2 through arg5 depending on option. It returns a\n// non-negative integer that is returned by the prctl syscall.\nfunc PrctlRetInt(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (int, error) {\n\tret, _, err := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(ret), nil\n}\n\nfunc Setuid(uid int) (err error) {\n\treturn syscall.Setuid(uid)\n}\n\nfunc Setgid(gid int) (err error) {\n\treturn syscall.Setgid(gid)\n}\n\nfunc Setreuid(ruid, euid int) (err error) {\n\treturn syscall.Setreuid(ruid, euid)\n}\n\nfunc Setregid(rgid, egid int) (err error) {\n\treturn syscall.Setregid(rgid, egid)\n}\n\nfunc Setresuid(ruid, euid, suid int) (err error) {\n\treturn syscall.Setresuid(ruid, euid, suid)\n}\n\nfunc Setresgid(rgid, egid, sgid int) (err error) {\n\treturn syscall.Setresgid(rgid, egid, sgid)\n}\n\n// SetfsgidRetGid sets fsgid for current thread and returns previous fsgid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability.\n// If the call fails due to other reasons, current fsgid will be returned.\nfunc SetfsgidRetGid(gid int) (int, error) {\n\treturn setfsgid(gid)\n}\n\n// SetfsuidRetUid sets fsuid for current thread and returns previous fsuid set.\n// setfsgid(2) will return a non-nil error only if its caller lacks CAP_SETUID capability\n// If the call fails due to other reasons, current fsuid will be returned.\nfunc SetfsuidRetUid(uid int) (int, error) {\n\treturn setfsuid(uid)\n}\n\nfunc Setfsgid(gid int) error {\n\t_, err := setfsgid(gid)\n\treturn err\n}\n\nfunc Setfsuid(uid int) error {\n\t_, err := setfsuid(uid)\n\treturn err\n}\n\nfunc Signalfd(fd int, sigmask *Sigset_t, flags int) (newfd int, err error) {\n\treturn signalfd(fd, sigmask, _C__NSIG/8, flags)\n}\n\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sys\tSetxattr(path string, attr string, data []byte, flags int) (err error)\n//sys\tsignalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) = SYS_SIGNALFD4\n//sys\tStatx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error)\n//sys\tSync()\n//sys\tSyncfs(fd int) (err error)\n//sysnb\tSysinfo(info *Sysinfo_t) (err error)\n//sys\tTee(rfd int, wfd int, len int, flags int) (n int64, err error)\n//sysnb\tTimerfdCreate(clockid int, flags int) (fd int, err error)\n//sysnb\tTimerfdGettime(fd int, currValue *ItimerSpec) (err error)\n//sysnb\tTimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error)\n//sysnb\tTgkill(tgid int, tid int, sig syscall.Signal) (err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sysnb\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = SYS_UMOUNT2\n//sys\tUnshare(flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\texitThread(code int) (err error) = SYS_EXIT\n//sys\treadv(fd int, iovs []Iovec) (n int, err error) = SYS_READV\n//sys\twritev(fd int, iovs []Iovec) (n int, err error) = SYS_WRITEV\n//sys\tpreadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PREADV\n//sys\tpwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) = SYS_PWRITEV\n//sys\tpreadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PREADV2\n//sys\tpwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) = SYS_PWRITEV2\n\n// minIovec is the size of the small initial allocation used by\n// Readv, Writev, etc.\n//\n// This small allocation gets stack allocated, which lets the\n// common use case of len(iovs) <= minIovs avoid more expensive\n// heap allocations.\nconst minIovec = 8\n\n// appendBytes converts bs to Iovecs and appends them to vecs.\nfunc appendBytes(vecs []Iovec, bs [][]byte) []Iovec {\n\tfor _, b := range bs {\n\t\tvar v Iovec\n\t\tv.SetLen(len(b))\n\t\tif len(b) > 0 {\n\t\t\tv.Base = &b[0]\n\t\t} else {\n\t\t\tv.Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t\tvecs = append(vecs, v)\n\t}\n\treturn vecs\n}\n\n// offs2lohi splits offs into its low and high order bits.\nfunc offs2lohi(offs int64) (lo, hi uintptr) {\n\tconst longBits = SizeofLong * 8\n\treturn uintptr(offs), uintptr(uint64(offs) >> (longBits - 1) >> 1) // two shifts to avoid false positive in vet\n}\n\nfunc Readv(fd int, iovs [][]byte) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tn, err = readv(fd, iovecs)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv(fd, iovecs, lo, hi)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc Preadv2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tlo, hi := offs2lohi(offset)\n\tn, err = preadv2(fd, iovecs, lo, hi, flags)\n\treadvRacedetect(iovecs, n, err)\n\treturn n, err\n}\n\nfunc readvRacedetect(iovecs []Iovec, n int, err error) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := 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 := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = writev(fd, iovecs)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev(fd int, iovs [][]byte, offset int64) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev(fd, iovecs, lo, hi)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc Pwritev2(fd int, iovs [][]byte, offset int64, flags int) (n int, err error) {\n\tiovecs := make([]Iovec, 0, minIovec)\n\tiovecs = appendBytes(iovecs, iovs)\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tlo, hi := offs2lohi(offset)\n\tn, err = pwritev2(fd, iovecs, lo, hi, flags)\n\twritevRacedetect(iovecs, n)\n\treturn n, err\n}\n\nfunc writevRacedetect(iovecs []Iovec, n int) {\n\tif !raceenabled {\n\t\treturn\n\t}\n\tfor i := 0; n > 0 && i < len(iovecs); i++ {\n\t\tm := 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//sys\tmremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error)\n//sys\tMadvise(b []byte, advice int) (err error)\n//sys\tMprotect(b []byte, prot int) (err error)\n//sys\tMlock(b []byte) (err error)\n//sys\tMlockall(flags int) (err error)\n//sys\tMsync(b []byte, flags int) (err error)\n//sys\tMunlock(b []byte) (err error)\n//sys\tMunlockall() (err error)\n\nconst (\n\tmremapFixed     = MREMAP_FIXED\n\tmremapDontunmap = MREMAP_DONTUNMAP\n\tmremapMaymove   = MREMAP_MAYMOVE\n)\n\n// Vmsplice splices user pages from a slice of Iovecs into a pipe specified by fd,\n// using the specified flags.\nfunc Vmsplice(fd int, iovs []Iovec, flags int) (int, error) {\n\tvar p unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\tp = unsafe.Pointer(&iovs[0])\n\t}\n\n\tn, _, errno := Syscall6(SYS_VMSPLICE, uintptr(fd), uintptr(p), uintptr(len(iovs)), uintptr(flags), 0, 0)\n\tif errno != 0 {\n\t\treturn 0, syscall.Errno(errno)\n\t}\n\n\treturn int(n), nil\n}\n\nfunc isGroupMember(gid int) bool {\n\tgroups, err := Getgroups()\n\tif err != nil {\n\t\treturn false\n\t}\n\n\tfor _, g := range groups {\n\t\tif g == gid {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\nfunc isCapDacOverrideSet() bool {\n\thdr := CapUserHeader{Version: LINUX_CAPABILITY_VERSION_3}\n\tdata := [2]CapUserData{}\n\terr := Capget(&hdr, &data[0])\n\n\treturn err == nil && data[0].Effective&(1<<CAP_DAC_OVERRIDE) != 0\n}\n\n//sys\tfaccessat(dirfd int, path string, mode uint32) (err error)\n//sys\tFaccessat2(dirfd int, path string, mode uint32, flags int) (err error)\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tif flags == 0 {\n\t\treturn faccessat(dirfd, path, mode)\n\t}\n\n\tif err := Faccessat2(dirfd, path, mode, flags); err != ENOSYS && err != EPERM {\n\t\treturn err\n\t}\n\n\t// The Linux kernel faccessat system call does not take any flags.\n\t// The glibc faccessat implements the flags itself; see\n\t// https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/faccessat.c;hb=HEAD\n\t// Because people naturally expect syscall.Faccessat to act\n\t// like C faccessat, we do the same.\n\n\tif flags & ^(AT_SYMLINK_NOFOLLOW|AT_EACCESS) != 0 {\n\t\treturn EINVAL\n\t}\n\n\tvar st Stat_t\n\tif err := Fstatat(dirfd, path, &st, flags&AT_SYMLINK_NOFOLLOW); err != nil {\n\t\treturn err\n\t}\n\n\tmode &= 7\n\tif mode == 0 {\n\t\treturn nil\n\t}\n\n\tvar uid int\n\tif flags&AT_EACCESS != 0 {\n\t\tuid = Geteuid()\n\t\tif uid != 0 && isCapDacOverrideSet() {\n\t\t\t// If CAP_DAC_OVERRIDE is set, file access check is\n\t\t\t// done by the kernel in the same way as for root\n\t\t\t// (see generic_permission() in the Linux sources).\n\t\t\tuid = 0\n\t\t}\n\t} else {\n\t\tuid = Getuid()\n\t}\n\n\tif uid == 0 {\n\t\tif mode&1 == 0 {\n\t\t\t// Root can read and write any file.\n\t\t\treturn nil\n\t\t}\n\t\tif st.Mode&0111 != 0 {\n\t\t\t// Root can execute any file that anybody can execute.\n\t\t\treturn nil\n\t\t}\n\t\treturn EACCES\n\t}\n\n\tvar fmode uint32\n\tif uint32(uid) == st.Uid {\n\t\tfmode = (st.Mode >> 6) & 7\n\t} else {\n\t\tvar gid int\n\t\tif flags&AT_EACCESS != 0 {\n\t\t\tgid = Getegid()\n\t\t} else {\n\t\t\tgid = Getgid()\n\t\t}\n\n\t\tif uint32(gid) == st.Gid || isGroupMember(int(st.Gid)) {\n\t\t\tfmode = (st.Mode >> 3) & 7\n\t\t} else {\n\t\t\tfmode = st.Mode & 7\n\t\t}\n\t}\n\n\tif fmode&mode == mode {\n\t\treturn nil\n\t}\n\n\treturn EACCES\n}\n\n//sys\tnameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) = SYS_NAME_TO_HANDLE_AT\n//sys\topenByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) = SYS_OPEN_BY_HANDLE_AT\n\n// fileHandle is the argument to nameToHandleAt and openByHandleAt. We\n// originally tried to generate it via unix/linux/types.go with \"type\n// fileHandle C.struct_file_handle\" but that generated empty structs\n// for mips64 and mips64le. Instead, hard code it for now (it's the\n// same everywhere else) until the mips64 generator issue is fixed.\ntype fileHandle struct {\n\tBytes uint32\n\tType  int32\n}\n\n// FileHandle represents the C struct file_handle used by\n// name_to_handle_at (see NameToHandleAt) and open_by_handle_at (see\n// OpenByHandleAt).\ntype FileHandle struct {\n\t*fileHandle\n}\n\n// NewFileHandle constructs a FileHandle.\nfunc NewFileHandle(handleType int32, handle []byte) FileHandle {\n\tconst hdrSize = unsafe.Sizeof(fileHandle{})\n\tbuf := make([]byte, hdrSize+uintptr(len(handle)))\n\tcopy(buf[hdrSize:], handle)\n\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\tfh.Type = handleType\n\tfh.Bytes = uint32(len(handle))\n\treturn FileHandle{fh}\n}\n\nfunc (fh *FileHandle) Size() int   { return int(fh.fileHandle.Bytes) }\nfunc (fh *FileHandle) Type() int32 { return fh.fileHandle.Type }\nfunc (fh *FileHandle) Bytes() []byte {\n\tn := fh.Size()\n\tif n == 0 {\n\t\treturn nil\n\t}\n\treturn unsafe.Slice((*byte)(unsafe.Pointer(uintptr(unsafe.Pointer(&fh.fileHandle.Type))+4)), n)\n}\n\n// NameToHandleAt wraps the name_to_handle_at system call; it obtains\n// a handle for a path name.\nfunc NameToHandleAt(dirfd int, path string, flags int) (handle FileHandle, mountID int, err error) {\n\tvar mid _C_int\n\t// Try first with a small buffer, assuming the handle will\n\t// only be 32 bytes.\n\tsize := uint32(32 + unsafe.Sizeof(fileHandle{}))\n\tdidResize := false\n\tfor {\n\t\tbuf := make([]byte, size)\n\t\tfh := (*fileHandle)(unsafe.Pointer(&buf[0]))\n\t\tfh.Bytes = size - uint32(unsafe.Sizeof(fileHandle{}))\n\t\terr = nameToHandleAt(dirfd, path, fh, &mid, flags)\n\t\tif err == EOVERFLOW {\n\t\t\tif didResize {\n\t\t\t\t// We shouldn't need to resize more than once\n\t\t\t\treturn\n\t\t\t}\n\t\t\tdidResize = true\n\t\t\tsize = fh.Bytes + uint32(unsafe.Sizeof(fileHandle{}))\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn FileHandle{fh}, int(mid), nil\n\t}\n}\n\n// OpenByHandleAt wraps the open_by_handle_at system call; it opens a\n// file via a handle as previously returned by NameToHandleAt.\nfunc OpenByHandleAt(mountFD int, handle FileHandle, flags int) (fd int, err error) {\n\treturn openByHandleAt(mountFD, handle.fileHandle, flags)\n}\n\n// Klogset wraps the sys_syslog system call; it sets console_loglevel to\n// the value specified by arg and passes a dummy pointer to bufp.\nfunc Klogset(typ int, arg int) (err error) {\n\tvar p unsafe.Pointer\n\t_, _, errno := Syscall(SYS_SYSLOG, uintptr(typ), uintptr(p), uintptr(arg))\n\tif errno != 0 {\n\t\treturn errnoErr(errno)\n\t}\n\treturn nil\n}\n\n// RemoteIovec is Iovec with the pointer replaced with an integer.\n// It is used for ProcessVMReadv and ProcessVMWritev, where the pointer\n// refers to a location in a different process' address space, which\n// would confuse the Go garbage collector.\ntype RemoteIovec struct {\n\tBase uintptr\n\tLen  int\n}\n\n//sys\tProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_READV\n//sys\tProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) = SYS_PROCESS_VM_WRITEV\n\n//sys\tPidfdOpen(pid int, flags int) (fd int, err error) = SYS_PIDFD_OPEN\n//sys\tPidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) = SYS_PIDFD_GETFD\n//sys\tPidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) = SYS_PIDFD_SEND_SIGNAL\n\n//sys\tshmat(id int, addr uintptr, flag int) (ret uintptr, err error)\n//sys\tshmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error)\n//sys\tshmdt(addr uintptr) (err error)\n//sys\tshmget(key int, size int, flag int) (id int, err error)\n\n//sys\tgetitimer(which int, currValue *Itimerval) (err error)\n//sys\tsetitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error)\n\n// MakeItimerval creates an Itimerval from interval and value durations.\nfunc MakeItimerval(interval, value time.Duration) Itimerval {\n\treturn Itimerval{\n\t\tInterval: NsecToTimeval(interval.Nanoseconds()),\n\t\tValue:    NsecToTimeval(value.Nanoseconds()),\n\t}\n}\n\n// A value which may be passed to the which parameter for Getitimer and\n// Setitimer.\ntype ItimerWhich int\n\n// Possible which values for Getitimer and Setitimer.\nconst (\n\tItimerReal    ItimerWhich = ITIMER_REAL\n\tItimerVirtual ItimerWhich = ITIMER_VIRTUAL\n\tItimerProf    ItimerWhich = ITIMER_PROF\n)\n\n// Getitimer wraps getitimer(2) to return the current value of the timer\n// specified by which.\nfunc Getitimer(which ItimerWhich) (Itimerval, error) {\n\tvar it Itimerval\n\tif err := getitimer(int(which), &it); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn it, nil\n}\n\n// Setitimer wraps setitimer(2) to arm or disarm the timer specified by which.\n// It returns the previous value of the timer.\n//\n// If the Itimerval argument is the zero value, the timer will be disarmed.\nfunc Setitimer(which ItimerWhich, it Itimerval) (Itimerval, error) {\n\tvar prev Itimerval\n\tif err := setitimer(int(which), &it, &prev); err != nil {\n\t\treturn Itimerval{}, err\n\t}\n\n\treturn prev, nil\n}\n\n//sysnb\trtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) = SYS_RT_SIGPROCMASK\n\nfunc PthreadSigmask(how int, set, oldset *Sigset_t) error {\n\tif oldset != nil {\n\t\t// Explicitly clear in case Sigset_t is larger than _C__NSIG.\n\t\t*oldset = Sigset_t{}\n\t}\n\treturn rtSigprocmask(how, set, oldset, _C__NSIG/8)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n// Pselect is a wrapper around the Linux pselect6 system call.\n// This version does not modify the timeout argument.\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\t// Per https://man7.org/linux/man-pages/man2/select.2.html#NOTES,\n\t// The Linux pselect6() system call modifies its timeout argument.\n\t// [Not modifying the argument] is the behavior required by POSIX.1-2001.\n\tvar mutableTimeout *Timespec\n\tif timeout != nil {\n\t\tmutableTimeout = new(Timespec)\n\t\t*mutableTimeout = *timeout\n\t}\n\n\t// The final argument of the pselect6() system call is not a\n\t// sigset_t * pointer, but is instead a structure\n\tvar kernelMask *sigset_argpack\n\tif sigmask != nil {\n\t\twordBits := 32 << (^uintptr(0) >> 63) // see math.intSize\n\n\t\t// A sigset stores one bit per signal,\n\t\t// offset by 1 (because signal 0 does not exist).\n\t\t// So the number of words needed is ⌈__C_NSIG - 1 / wordBits⌉.\n\t\tsigsetWords := (_C__NSIG - 1 + wordBits - 1) / (wordBits)\n\n\t\tsigsetBytes := uintptr(sigsetWords * (wordBits / 8))\n\t\tkernelMask = &sigset_argpack{\n\t\t\tss:    sigmask,\n\t\t\tssLen: sigsetBytes,\n\t\t}\n\t}\n\n\treturn pselect6(nfd, r, w, e, mutableTimeout, kernelMask)\n}\n\n//sys\tschedSetattr(pid int, attr *SchedAttr, flags uint) (err error)\n//sys\tschedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error)\n\n// SchedSetAttr is a wrapper for sched_setattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_setattr.2.html\nfunc SchedSetAttr(pid int, attr *SchedAttr, flags uint) error {\n\tif attr == nil {\n\t\treturn EINVAL\n\t}\n\tattr.Size = SizeofSchedAttr\n\treturn schedSetattr(pid, attr, flags)\n}\n\n// SchedGetAttr is a wrapper for sched_getattr(2) syscall.\n// https://man7.org/linux/man-pages/man2/sched_getattr.2.html\nfunc SchedGetAttr(pid int, flags uint) (*SchedAttr, error) {\n\tattr := &SchedAttr{}\n\tif err := schedGetattr(pid, attr, SizeofSchedAttr, flags); err != nil {\n\t\treturn nil, err\n\t}\n\treturn attr, nil\n}\n\n//sys\tCachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n// 64-bit file system and 32-bit uid calls\n// (386 default is 32-bit file system and 16-bit uid).\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64_64\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n//sys\tPause() (err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n// On x86 Linux, all the socket calls go through an extra indirection,\n// I think because the 5-register system call interface can't handle\n// the 6-argument calls like sendto and recvfrom. Instead the\n// arguments to the underlying system call are the number below\n// and a pointer to an array of uintptr. We hide the pointer in the\n// socketcall assembly to avoid allocation on every system call.\n\nconst (\n\t// see linux/net.h\n\t_SOCKET      = 1\n\t_BIND        = 2\n\t_CONNECT     = 3\n\t_LISTEN      = 4\n\t_ACCEPT      = 5\n\t_GETSOCKNAME = 6\n\t_GETPEERNAME = 7\n\t_SOCKETPAIR  = 8\n\t_SEND        = 9\n\t_RECV        = 10\n\t_SENDTO      = 11\n\t_RECVFROM    = 12\n\t_SHUTDOWN    = 13\n\t_SETSOCKOPT  = 14\n\t_GETSOCKOPT  = 15\n\t_SENDMSG     = 16\n\t_RECVMSG     = 17\n\t_ACCEPT4     = 18\n\t_RECVMMSG    = 19\n\t_SENDMMSG    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tfd, e := socketcall(_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETSOCKNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e := rawsocketcall(_GETPEERNAME, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, e := rawsocketcall(_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_BIND, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e := socketcall(_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tfd, e := rawsocketcall(_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e := socketcall(_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e := socketcall(_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\tn, e := socketcall(_RECVFROM, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\t_, e := socketcall(_SENDTO, uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tn, e := socketcall(_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Listen(s int, n int) (err error) {\n\t_, e := socketcall(_LISTEN, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Shutdown(s, how int) (err error) {\n\t_, e := socketcall(_SHUTDOWN, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(uint32(r.Eip)) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Eip = int32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_alarm.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (386 || amd64 || mips || mipsle || mips64 || mipsle || ppc64 || ppc64le || ppc || s390x || sparc64)\n\npackage unix\n\n// SYS_ALARM is not defined on arm or riscv, but is available for other GOARCH\n// values.\n\n//sys\tAlarm(seconds uint) (remaining uint, err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\t// Use fstatat, because Android's seccomp policy blocks stat.\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\terrno := gettimeofday(tv)\n\tif errno != 0 {\n\t\treturn errno\n\t}\n\treturn nil\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terrno := gettimeofday(&tv)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Rip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Rip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_amd64_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && linux && gc\n\npackage unix\n\nimport \"syscall\"\n\n//go:noescape\nfunc gettimeofday(tv *Timeval) (err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error) = SYS_GETGROUPS32\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error) = SYS_SETGROUPS32\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tsocketpair(domain int, typ int, flags int, fd *[2]int32) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n// 64-bit file system and 32-bit uid calls\n// (16-bit uid calls are not always supported in newer kernels)\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error) = SYS_FCHOWN32\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sysnb\tGetegid() (egid int) = SYS_GETEGID32\n//sysnb\tGeteuid() (euid int) = SYS_GETEUID32\n//sysnb\tGetgid() (gid int) = SYS_GETGID32\n//sysnb\tGetuid() (uid int) = SYS_GETUID32\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS_LCHOWN32\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsetfsgid(gid int) (prev int, err error) = SYS_SETFSGID32\n//sys\tsetfsuid(uid int) (prev int, err error) = SYS_SETFSUID32\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return uint64(r.Uregs[15]) }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Uregs[15] = uint32(pc) }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tarmSyncFileRange(fd int, flags int, off int64, n int64) (err error) = SYS_ARM_SYNC_FILE_RANGE\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and arm_sync_file_range syscalls differ only in the\n\t// order of their arguments.\n\treturn armSyncFileRange(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_arm64.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tgetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\n// Getrlimit prefers the prlimit64 system call. See issue 38604.\nfunc Getrlimit(resource int, rlim *Rlimit) error {\n\terr := Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\treturn getrlimit(resource, rlim)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_gc.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc\n\npackage unix\n\n// SyscallNoError may be used instead of Syscall for syscalls that don't fail.\nfunc SyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n\n// RawSyscallNoError may be used instead of RawSyscall for syscalls that don't\n// fail.\nfunc RawSyscallNoError(trap, a1, a2, a3 uintptr) (r1, r2 uintptr)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_gc_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gc && 386\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (n int, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_gc_arm.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && gc && linux\n\npackage unix\n\nimport \"syscall\"\n\n// Underlying system call writes to newoffset via pointer.\n// Implemented in assembly to avoid allocation.\nfunc seek(fd int, offset int64, whence int) (newoffset int64, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_gccgo_386.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc socketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := Syscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n\nfunc rawsocketcall(call int, a0, a1, a2, a3, a4, a5 uintptr) (int, syscall.Errno) {\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, uintptr(call), uintptr(unsafe.Pointer(&a0)), 0)\n\treturn int(fd), err\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_gccgo_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && gccgo && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_loong64.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build loong64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc timespecFromStatxTimestamp(x StatxTimestamp) Timespec {\n\treturn Timespec{\n\t\tSec:  x.Sec,\n\t\tNsec: int64(x.Nsec),\n\t}\n}\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) error {\n\tvar r Statx_t\n\t// Do it the glibc way, add AT_NO_AUTOMOUNT.\n\tif err := Statx(fd, path, AT_NO_AUTOMOUNT|flags, STATX_BASIC_STATS, &r); err != nil {\n\t\treturn err\n\t}\n\n\tstat.Dev = Mkdev(r.Dev_major, r.Dev_minor)\n\tstat.Ino = r.Ino\n\tstat.Mode = uint32(r.Mode)\n\tstat.Nlink = r.Nlink\n\tstat.Uid = r.Uid\n\tstat.Gid = r.Gid\n\tstat.Rdev = Mkdev(r.Rdev_major, r.Rdev_minor)\n\t// hope we don't get to process files so large to overflow these size\n\t// fields...\n\tstat.Size = int64(r.Size)\n\tstat.Blksize = int32(r.Blksize)\n\tstat.Blocks = int64(r.Blocks)\n\tstat.Atim = timespecFromStatxTimestamp(r.Atime)\n\tstat.Mtim = timespecFromStatxTimestamp(r.Mtime)\n\tstat.Ctim = timespecFromStatxTimestamp(r.Ctime)\n\n\treturn nil\n}\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\treturn Fstatat(fd, \"\", stat, AT_EMPTY_PATH)\n}\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\treturn\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Era }\n\nfunc (r *PtraceRegs) SetPC(era uint64) { r.Era = era }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_mips64x.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips64 || mips64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\ntype stat_t struct {\n\tDev        uint32\n\tPad0       [3]int32\n\tIno        uint64\n\tMode       uint32\n\tNlink      uint32\n\tUid        uint32\n\tGid        uint32\n\tRdev       uint32\n\tPad1       [3]uint32\n\tSize       int64\n\tAtime      uint32\n\tAtime_nsec uint32\n\tMtime      uint32\n\tMtime_nsec uint32\n\tCtime      uint32\n\tCtime_nsec uint32\n\tBlksize    uint32\n\tPad2       uint32\n\tBlocks     int64\n}\n\n//sys\tfstat(fd int, st *stat_t) (err error)\n//sys\tfstatat(dirfd int, path string, st *stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tlstat(path string, st *stat_t) (err error)\n//sys\tstat(path string, st *stat_t) (err error)\n\nfunc Fstat(fd int, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = fstat(fd, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Fstatat(dirfd int, path string, s *Stat_t, flags int) (err error) {\n\tst := &stat_t{}\n\terr = fstatat(dirfd, path, st, flags)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Lstat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = lstat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc Stat(path string, s *Stat_t) (err error) {\n\tst := &stat_t{}\n\terr = stat(path, st)\n\tfillStat_t(s, st)\n\treturn\n}\n\nfunc fillStat_t(s *Stat_t, st *stat_t) {\n\ts.Dev = st.Dev\n\ts.Ino = st.Ino\n\ts.Mode = st.Mode\n\ts.Nlink = st.Nlink\n\ts.Uid = st.Uid\n\ts.Gid = st.Gid\n\ts.Rdev = st.Rdev\n\ts.Size = st.Size\n\ts.Atim = Timespec{int64(st.Atime), int64(st.Atime_nsec)}\n\ts.Mtim = Timespec{int64(st.Mtime), int64(st.Mtime_nsec)}\n\ts.Ctim = Timespec{int64(st.Ctime), int64(st.Ctime_nsec)}\n\ts.Blksize = st.Blksize\n\ts.Blocks = st.Blocks\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_mipsx.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (mips || mipsle)\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n\n//sys\tPause() (err error)\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(p)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\t_, _, e := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offset>>32), uintptr(offset), uintptr(unsafe.Pointer(&off)), uintptr(whence), 0)\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_GETRLIMIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Epc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Epc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_ppc.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error) = SYS_FSTAT64\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFtruncate(fd int, length int64) (err error) = SYS_FTRUNCATE64\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error) = SYS_LSTAT64\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = SYS_SENDFILE64\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error)\n//sys\tStat(path string, stat *Stat_t) (err error) = SYS_STAT64\n//sys\tTruncate(path string, length int64) (err error) = SYS_TRUNCATE64\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(advice), uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc seek(fd int, offset int64, whence int) (int64, syscall.Errno) {\n\tvar newoffset int64\n\toffsetLow := uint32(offset & 0xffffffff)\n\toffsetHigh := uint32((offset >> 32) & 0xffffffff)\n\t_, _, err := Syscall6(SYS__LLSEEK, uintptr(fd), uintptr(offsetHigh), uintptr(offsetLow), uintptr(unsafe.Pointer(&newoffset)), uintptr(whence), 0)\n\treturn newoffset, err\n}\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tnewoffset, errno := seek(fd, offset, whence)\n\tif errno != 0 {\n\t\treturn 0, errno\n\t}\n\treturn newoffset, nil\n}\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e := Syscall(SYS_FSTATFS64, uintptr(fd), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, _, e := Syscall(SYS_STATFS64, uintptr(unsafe.Pointer(pathp)), unsafe.Sizeof(*buf), uintptr(unsafe.Pointer(buf)))\n\tif e != 0 {\n\t\terr = e\n\t}\n\treturn\n}\n\n//sys\tmmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error)\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tpage := uintptr(offset / 4096)\n\tif offset != int64(page)*4096 {\n\t\treturn 0, EINVAL\n\t}\n\treturn mmap2(addr, length, prot, flags, fd, page)\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: int32(sec), Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: int32(sec), Usec: int32(usec)}\n}\n\ntype rlimit32 struct {\n\tCur uint32\n\tMax uint32\n}\n\n//sysnb\tgetrlimit(resource int, rlim *rlimit32) (err error) = SYS_UGETRLIMIT\n\nconst rlimInf32 = ^uint32(0)\nconst rlimInf64 = ^uint64(0)\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\terr = Prlimit(0, resource, nil, rlim)\n\tif err != ENOSYS {\n\t\treturn err\n\t}\n\n\trl := rlimit32{}\n\terr = getrlimit(resource, &rl)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tif rl.Cur == rlimInf32 {\n\t\trlim.Cur = rlimInf64\n\t} else {\n\t\trlim.Cur = uint64(rl.Cur)\n\t}\n\n\tif rl.Max == rlimInf32 {\n\t\trlim.Max = rlimInf64\n\t} else {\n\t\trlim.Max = uint64(rl.Max)\n\t}\n\treturn\n}\n\nfunc (r *PtraceRegs) PC() uint32 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint32) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint32(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_ppc64x.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64 || ppc64le)\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_UGETRLIMIT\n//sysnb\tGetuid() (uid int)\n//sys\tIoperm(from int, num int, on int) (err error)\n//sys\tIopl(level int) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) = SYS__NEWSELECT\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tTime(t *Time_t) (tt Time_t, err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Nip }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Nip = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n//sys\tsyncFileRange2(fd int, flags int, off int64, n int64) (err error) = SYS_SYNC_FILE_RANGE2\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) error {\n\t// The sync_file_range and sync_file_range2 syscalls differ only in the\n\t// order of their arguments.\n\treturn syncFileRange2(fd, flags, off, n)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_riscv64.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && linux\n\npackage unix\n\nimport \"unsafe\"\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) = SYS_EPOLL_PWAIT\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tListen(s int, n int) (err error)\n//sys\tMemfdSecret(flags int) (fd int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tvar ts *Timespec\n\tif timeout != nil {\n\t\tts = &Timespec{Sec: timeout.Sec, Nsec: timeout.Usec * 1000}\n\t}\n\treturn pselect6(nfd, r, w, e, ts, nil)\n}\n\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, 0)\n}\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\treturn Fchownat(AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW)\n}\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\treturn Fstatat(AT_FDCWD, path, stat, AT_SYMLINK_NOFOLLOW)\n}\n\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\treturn ENOSYS\n}\n\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc futimesat(dirfd int, path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(dirfd, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc Time(t *Time_t) (Time_t, error) {\n\tvar tv Timeval\n\terr := Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc Utime(path string, buf *Utimbuf) error {\n\ttv := []Timeval{\n\t\t{Sec: buf.Actime},\n\t\t{Sec: buf.Modtime},\n\t}\n\treturn Utimes(path, tv)\n}\n\nfunc utimes(path string, tv *[2]Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Pc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Pc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\nfunc Pause() error {\n\t_, err := ppoll(nil, 0, nil, nil)\n\treturn err\n}\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\treturn Renameat2(olddirfd, oldpath, newdirfd, newpath, 0)\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n\n//sys\triscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error)\n\nfunc RISCVHWProbe(pairs []RISCVHWProbePairs, set *CPUSet, flags uint) (err error) {\n\tvar setSize uintptr\n\n\tif set != nil {\n\t\tsetSize = uintptr(unsafe.Sizeof(*set))\n\t}\n\treturn riscvHWProbe(pairs, setSize, set, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_s390x.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build s390x && linux\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_NEWFSTATAT\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Psw.Addr }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Psw.Addr = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n\n// Linux on s390x uses the old mmap interface, which requires arguments to be passed in a struct.\n// mmap2 also requires arguments to be passed in a struct; it is currently not exposed in <asm/unistd.h>.\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tmmap_args := [6]uintptr{addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset)}\n\tr0, _, e1 := Syscall(SYS_MMAP, uintptr(unsafe.Pointer(&mmap_args[0])), 0, 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// On s390x Linux, all the socket calls go through an extra indirection.\n// The arguments to the underlying system call (SYS_SOCKETCALL) are the\n// number below and a pointer to an array of uintptr.\nconst (\n\t// see linux/net.h\n\tnetSocket      = 1\n\tnetBind        = 2\n\tnetConnect     = 3\n\tnetListen      = 4\n\tnetAccept      = 5\n\tnetGetSockName = 6\n\tnetGetPeerName = 7\n\tnetSocketPair  = 8\n\tnetSend        = 9\n\tnetRecv        = 10\n\tnetSendTo      = 11\n\tnetRecvFrom    = 12\n\tnetShutdown    = 13\n\tnetSetSockOpt  = 14\n\tnetGetSockOpt  = 15\n\tnetSendMsg     = 16\n\tnetRecvMsg     = 17\n\tnetAccept4     = 18\n\tnetRecvMMsg    = 19\n\tnetSendMMsg    = 20\n)\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (int, error) {\n\targs := [4]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags)}\n\tfd, _, err := Syscall(SYS_SOCKETCALL, netAccept4, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockname(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetSockName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc getpeername(s int, rsa *RawSockaddrAny, addrlen *_Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netGetPeerName, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) error {\n\targs := [4]uintptr{uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd))}\n\t_, _, err := RawSyscall(SYS_SOCKETCALL, netSocketPair, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netBind, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) error {\n\targs := [3]uintptr{uintptr(s), uintptr(addr), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netConnect, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc socket(domain int, typ int, proto int) (int, error) {\n\targs := [3]uintptr{uintptr(domain), uintptr(typ), uintptr(proto)}\n\tfd, _, err := RawSyscall(SYS_SOCKETCALL, netSocket, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(fd), nil\n}\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen))}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netGetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) error {\n\targs := [5]uintptr{uintptr(s), uintptr(level), uintptr(name), uintptr(val), vallen}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSetSockOpt, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvfrom(s int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (int, error) {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen))}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvFrom, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendto(s int, p []byte, flags int, to unsafe.Pointer, addrlen _Socklen) error {\n\tvar base uintptr\n\tif len(p) > 0 {\n\t\tbase = uintptr(unsafe.Pointer(&p[0]))\n\t}\n\targs := [6]uintptr{uintptr(s), base, uintptr(len(p)), uintptr(flags), uintptr(to), uintptr(addrlen)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netSendTo, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netRecvMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (int, error) {\n\targs := [3]uintptr{uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags)}\n\tn, _, err := Syscall(SYS_SOCKETCALL, netSendMsg, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn 0, err\n\t}\n\treturn int(n), nil\n}\n\nfunc Listen(s int, n int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(n)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netListen, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\nfunc Shutdown(s, how int) error {\n\targs := [2]uintptr{uintptr(s), uintptr(how)}\n\t_, _, err := Syscall(SYS_SOCKETCALL, netShutdown, uintptr(unsafe.Pointer(&args)), 0)\n\tif err != 0 {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n//sys\tkexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error)\n\nfunc KexecFileLoad(kernelFd int, initrdFd int, cmdline string, flags int) error {\n\tcmdlineLen := len(cmdline)\n\tif cmdlineLen > 0 {\n\t\t// Account for the additional NULL byte added by\n\t\t// BytePtrFromString in kexecFileLoad. The kexec_file_load\n\t\t// syscall expects a NULL-terminated string.\n\t\tcmdlineLen++\n\t}\n\treturn kexecFileLoad(kernelFd, initrdFd, cmdlineLen, cmdline, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_linux_sparc64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build sparc64 && linux\n\npackage unix\n\n//sys\tEpollWait(epfd int, events []EpollEvent, msec int) (n int, err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_FADVISE64\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) = SYS_FSTATAT64\n//sys\tFstatfs(fd int, buf *Statfs_t) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (euid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tListen(s int, n int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tPause() (err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error) = SYS_PREAD64\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error) = SYS_PWRITE64\n//sys\tRenameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error)\n//sys\tsetfsgid(gid int) (prev int, err error)\n//sys\tsetfsuid(uid int) (prev int, err error)\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tSplice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, buf *Statfs_t) (err error)\n//sys\tSyncFileRange(fd int, off int64, n int64, flags int) (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\taccept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error)\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error)\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error)\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error)\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error)\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\treturn ENOSYS\n}\n\nfunc Iopl(level int) (err error) {\n\treturn ENOSYS\n}\n\n//sys\tfutimesat(dirfd int, path string, times *[2]Timeval) (err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc (r *PtraceRegs) PC() uint64 { return r.Tpc }\n\nfunc (r *PtraceRegs) SetPC(pc uint64) { r.Tpc = pc }\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint64(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint64(length)\n}\n\nfunc (rsa *RawSockaddrNFCLLCP) SetServiceNameLen(length int) {\n\trsa.Service_name_len = uint64(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_netbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// NetBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc sysctlNodes(mib []_C_int) (nodes []Sysctlnode, err error) {\n\tvar olen uintptr\n\n\t// Get a list of all sysctl nodes below the given MIB by performing\n\t// a sysctl for the given MIB with CTL_QUERY appended.\n\tmib = append(mib, CTL_QUERY)\n\tqnode := Sysctlnode{Flags: SYSCTL_VERS_1}\n\tqp := (*byte)(unsafe.Pointer(&qnode))\n\tsz := unsafe.Sizeof(qnode)\n\tif err = sysctl(mib, nil, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\t// Now that we know the size, get the actual nodes.\n\tnodes = make([]Sysctlnode, olen/sz)\n\tnp := (*byte)(unsafe.Pointer(&nodes[0]))\n\tif err = sysctl(mib, np, &olen, qp, sz); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn nodes, nil\n}\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\t// Split name into components.\n\tvar parts []string\n\tlast := 0\n\tfor i := 0; i < len(name); i++ {\n\t\tif name[i] == '.' {\n\t\t\tparts = append(parts, name[last:i])\n\t\t\tlast = i + 1\n\t\t}\n\t}\n\tparts = append(parts, name[last:])\n\n\t// Discover the nodes and construct the MIB OID.\n\tfor partno, part := range parts {\n\t\tnodes, err := sysctlNodes(mib)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfor _, node := range nodes {\n\t\t\tn := make([]byte, 0)\n\t\t\tfor i := range node.Name {\n\t\t\t\tif node.Name[i] != 0 {\n\t\t\t\t\tn = append(n, byte(node.Name[i]))\n\t\t\t\t}\n\t\t\t}\n\t\t\tif string(n) == part {\n\t\t\t\tmib = append(mib, _C_int(node.Num))\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif len(mib) != partno+1 {\n\t\t\treturn nil, EINVAL\n\t\t}\n\t}\n\n\treturn mib, nil\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO is allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\nfunc IoctlGetPtmget(fd int, req uint) (*Ptmget, error) {\n\tvar value Ptmget\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\nfunc Fstatvfs(fd int, buf *Statvfs_t) (err error) {\n\treturn Fstatvfs1(fd, buf, ST_WAIT)\n}\n\nfunc Statvfs(path string, buf *Statvfs_t) (err error) {\n\treturn Statvfs1(path, buf, ST_WAIT)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error)\n//sys\tExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error)\n//sys\tExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFadvise(fd int, offset int64, length int64, advice int) (err error) = SYS_POSIX_FADVISE\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) = SYS_FSTATVFS1\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs1(path string, buf *Statvfs_t, flags int) (err error) = SYS_STATVFS1\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n\nconst (\n\tmremapFixed     = MAP_FIXED\n\tmremapDontunmap = 0\n\tmremapMaymove   = 0\n)\n\n//sys\tmremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) = SYS_MREMAP\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (uintptr, error) {\n\treturn mremapNetBSD(oldaddr, oldlength, newaddr, newlength, flags)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_netbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_netbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_netbsd_arm.go",
    "content": "// Copyright 2013 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_netbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = uint32(mode)\n\tk.Flags = uint32(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd.go",
    "content": "// Copyright 2009,2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// OpenBSD system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_bsd.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"sort\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc anyToSockaddrGOOS(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\nfunc nametomib(name string) (mib []_C_int, err error) {\n\ti := sort.Search(len(sysctlMib), func(i int) bool {\n\t\treturn sysctlMib[i].ctlname >= name\n\t})\n\tif i < len(sysctlMib) && sysctlMib[i].ctlname == name {\n\t\treturn sysctlMib[i].ctloid, nil\n\t}\n\treturn nil, EINVAL\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Fileno), unsafe.Sizeof(Dirent{}.Fileno))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Namlen), unsafe.Sizeof(Dirent{}.Namlen))\n}\n\nfunc SysctlUvmexp(name string) (*Uvmexp, error) {\n\tmib, err := sysctlmib(name)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tn := uintptr(SizeofUvmexp)\n\tvar u Uvmexp\n\tif err := sysctl(mib, (*byte)(unsafe.Pointer(&u)), &n, nil, 0); err != nil {\n\t\treturn nil, err\n\t}\n\tif n != SizeofUvmexp {\n\t\treturn nil, EIO\n\t}\n\treturn &u, nil\n}\n\nfunc Pipe(p []int) (err error) {\n\treturn Pipe2(p, 0)\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\n//sys\tGetdents(fd int, buf []byte) (n int, err error)\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tn, err = Getdents(fd, buf)\n\tif err != nil || basep == nil {\n\t\treturn\n\t}\n\n\tvar off int64\n\toff, err = Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\t*basep = ^uintptr(0)\n\t\treturn\n\t}\n\t*basep = uintptr(off)\n\tif unsafe.Sizeof(*basep) == 8 {\n\t\treturn\n\t}\n\tif off>>32 != 0 {\n\t\t// We can't stuff the offset back into a uintptr, so any\n\t\t// future calls would be suspect. Generate an error.\n\t\t// EIO was allowed by getdirentries.\n\t\terr = EIO\n\t}\n\treturn\n}\n\n//sys\tGetcwd(buf []byte) (n int, err error) = SYS___GETCWD\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n// TODO\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\treturn -1, ENOSYS\n}\n\nfunc Getfsstat(buf []Statfs_t, flags int) (n int, err error) {\n\tvar bufptr *Statfs_t\n\tvar bufsize uintptr\n\tif len(buf) > 0 {\n\t\tbufptr = &buf[0]\n\t\tbufsize = unsafe.Sizeof(Statfs_t{}) * uintptr(len(buf))\n\t}\n\treturn getfsstat(bufptr, bufsize, flags)\n}\n\n//sysnb\tgetresuid(ruid *_C_int, euid *_C_int, suid *_C_int)\n//sysnb\tgetresgid(rgid *_C_int, egid *_C_int, sgid *_C_int)\n\nfunc Getresuid() (ruid, euid, suid int) {\n\tvar r, e, s _C_int\n\tgetresuid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\nfunc Getresgid() (rgid, egid, sgid int) {\n\tvar r, e, s _C_int\n\tgetresgid(&r, &e, &s)\n\treturn int(r), int(e), int(s)\n}\n\n//sys\tioctl(fd int, req uint, arg uintptr) (err error)\n//sys\tioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys\tsysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) = SYS___SYSCTL\n\n//sys\tfcntl(fd int, cmd int, arg int) (n int, err error)\n//sys\tfcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) = SYS_FCNTL\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\treturn fcntl(int(fd), cmd, arg)\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, err := fcntlPtr(int(fd), cmd, unsafe.Pointer(lk))\n\treturn err\n}\n\n//sys\tppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error)\n\nfunc Ppoll(fds []PollFd, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn ppoll(nil, 0, timeout, sigmask)\n\t}\n\treturn ppoll(&fds[0], len(fds), timeout, sigmask)\n}\n\nfunc Uname(uname *Utsname) error {\n\tmib := []_C_int{CTL_KERN, KERN_OSTYPE}\n\tn := unsafe.Sizeof(uname.Sysname)\n\tif err := sysctl(mib, &uname.Sysname[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_HOSTNAME}\n\tn = unsafe.Sizeof(uname.Nodename)\n\tif err := sysctl(mib, &uname.Nodename[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_OSRELEASE}\n\tn = unsafe.Sizeof(uname.Release)\n\tif err := sysctl(mib, &uname.Release[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\tmib = []_C_int{CTL_KERN, KERN_VERSION}\n\tn = unsafe.Sizeof(uname.Version)\n\tif err := sysctl(mib, &uname.Version[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\t// The version might have newlines or tabs in it, convert them to\n\t// spaces.\n\tfor i, b := range uname.Version {\n\t\tif b == '\\n' || b == '\\t' {\n\t\t\tif i == len(uname.Version)-1 {\n\t\t\t\tuname.Version[i] = 0\n\t\t\t} else {\n\t\t\t\tuname.Version[i] = ' '\n\t\t\t}\n\t\t}\n\t}\n\n\tmib = []_C_int{CTL_HW, HW_MACHINE}\n\tn = unsafe.Sizeof(uname.Machine)\n\tif err := sysctl(mib, &uname.Machine[0], &n, nil, 0); err != nil {\n\t\treturn err\n\t}\n\n\treturn nil\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChflags(path string, flags int) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(from int, to int) (err error)\n//sys\tDup3(from int, to int, flags int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchflags(fd int, flags int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatfs(fd int, stat *Statfs_t) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgrp int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrtable() (rtable int, err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tIssetugid() (tainted bool)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tKqueue() (fd int, err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tLinkat(pathfd int, path string, linkfd int, link string, flags int) (err error)\n//sys\tListen(s int, backlog int) (err error)\n//sys\tLstat(path string, stat *Stat_t) (err error)\n//sys\tMkdir(path string, mode uint32) (err error)\n//sys\tMkdirat(dirfd int, path string, mode uint32) (err error)\n//sys\tMkfifo(path string, mode uint32) (err error)\n//sys\tMkfifoat(dirfd int, path string, mode uint32) (err error)\n//sys\tMknod(path string, mode uint32, dev int) (err error)\n//sys\tMknodat(dirfd int, path string, mode uint32, dev int) (err error)\n//sys\tNanosleep(time *Timespec, leftover *Timespec) (err error)\n//sys\tOpen(path string, mode int, perm uint32) (fd int, err error)\n//sys\tOpenat(dirfd int, path string, mode int, perm uint32) (fd int, err error)\n//sys\tPathconf(path string, name int) (val int, err error)\n//sys\tpread(fd int, p []byte, offset int64) (n int, err error)\n//sys\tpwrite(fd int, p []byte, offset int64) (n int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\tReadlink(path string, buf []byte) (n int, err error)\n//sys\tReadlinkat(dirfd int, path string, buf []byte) (n int, err error)\n//sys\tRename(from string, to string) (err error)\n//sys\tRenameat(fromfd int, from string, tofd int, to string) (err error)\n//sys\tRevoke(path string) (err error)\n//sys\tRmdir(path string) (err error)\n//sys\tSeek(fd int, offset int64, whence int) (newoffset int64, err error) = SYS_LSEEK\n//sys\tSelect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error)\n//sysnb\tSetegid(egid int) (err error)\n//sysnb\tSeteuid(euid int) (err error)\n//sysnb\tSetgid(gid int) (err error)\n//sys\tSetlogin(name string) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error)\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error)\n//sysnb\tSetreuid(ruid int, euid int) (err error)\n//sysnb\tSetresgid(rgid int, egid int, sgid int) (err error)\n//sysnb\tSetresuid(ruid int, euid int, suid int) (err error)\n//sysnb\tSetrtable(rtable int) (err error)\n//sysnb\tSetsid() (pid int, err error)\n//sysnb\tSettimeofday(tp *Timeval) (err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatfs(path string, stat *Statfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSymlinkat(oldpath string, newdirfd int, newpath string) (err error)\n//sys\tSync() (err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tUmask(newmask int) (oldmask int)\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUnmount(path string, flags int) (err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tgetfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error)\n//sys\tutimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error)\n//sys\tpledge(promises *byte, execpromises *byte) (err error)\n//sys\tunveil(path *byte, flags *byte) (err error)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_386.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build 386 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/386 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_arm.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: int32(nsec)}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: int32(usec)}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint32(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/arm the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_arm64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/amd64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_libc.go",
    "content": "// Copyright 2022 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build openbsd\n\npackage unix\n\nimport _ \"unsafe\"\n\n// Implemented in the runtime package (runtime/sys_openbsd3.go)\nfunc syscall_syscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall(fn, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawSyscall6(fn, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n//go:linkname syscall_syscall syscall.syscall\n//go:linkname syscall_syscall6 syscall.syscall6\n//go:linkname syscall_syscall10 syscall.syscall10\n//go:linkname syscall_rawSyscall syscall.rawSyscall\n//go:linkname syscall_rawSyscall6 syscall.rawSyscall6\n\nfunc syscall_syscall9(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) {\n\treturn syscall_syscall10(fn, a1, a2, a3, a4, a5, a6, a7, a8, a9, 0)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_mips64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of OpenBSD the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_ppc64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/ppc64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_openbsd_riscv64.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc SetKevent(k *Kevent_t, fd, mode, flags int) {\n\tk.Ident = uint64(fd)\n\tk.Filter = int16(mode)\n\tk.Flags = uint16(flags)\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = uint32(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = uint32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n\n// SYS___SYSCTL is used by syscall_bsd.go for all BSDs, but in modern versions\n// of openbsd/riscv64 the syscall is called sysctl instead of __sysctl.\nconst SYS___SYSCTL = SYS_SYSCTL\n"
  },
  {
    "path": "gossh/sys/unix/syscall_solaris.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Solaris system calls.\n// This file is compiled as ordinary Go code,\n// but it is also input to mksyscall,\n// which parses the //sys lines and generates system call stubs.\n// Note that sometimes we use a lowercase //sys name and wrap\n// it in our own nicer implementation, either here or in\n// syscall_solaris.go or syscall_unix.go.\n\npackage unix\n\nimport (\n\t\"fmt\"\n\t\"os\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// Implemented in runtime/syscall_solaris.go.\ntype syscallFunc uintptr\n\nfunc rawSysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc sysvicall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n\n// SockaddrDatalink implements the Sockaddr interface for AF_LINK type sockets.\ntype SockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n\traw    RawSockaddrDatalink\n}\n\nfunc direntIno(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Ino), unsafe.Sizeof(Dirent{}.Ino))\n}\n\nfunc direntReclen(buf []byte) (uint64, bool) {\n\treturn readInt(buf, unsafe.Offsetof(Dirent{}.Reclen), unsafe.Sizeof(Dirent{}.Reclen))\n}\n\nfunc direntNamlen(buf []byte) (uint64, bool) {\n\treclen, ok := direntReclen(buf)\n\tif !ok {\n\t\treturn 0, false\n\t}\n\treturn reclen - uint64(unsafe.Offsetof(Dirent{}.Name)), true\n}\n\n//sysnb\tpipe(p *[2]_C_int) (n int, err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\tn, err := pipe(&pp)\n\tif n != 0 {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn nil\n}\n\n//sysnb\tpipe2(p *[2]_C_int, flags int) (err error)\n\nfunc Pipe2(p []int, flags int) error {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr := pipe2(&pp, flags)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn err\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet4, nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), SizeofSockaddrInet6, nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := _Socklen(2)\n\tif n > 0 {\n\t\tsl += _Socklen(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\n//sys\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getsockname\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nconst ImplementsGetwd = true\n\n//sys\tGetcwd(buf []byte) (n int, err error)\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\t// Getcwd will return an error if it failed for any reason.\n\t_, err = Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[:n]), nil\n}\n\n/*\n * Wrapped\n */\n\n//sysnb\tgetgroups(ngid int, gid *_Gid_t) (n int, err error)\n//sysnb\tsetgroups(ngid int, gid *_Gid_t) (err error)\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\t// Check for error and sanity check group count. Newer versions of\n\t// Solaris allow up to 1024 (NGROUPS_MAX).\n\tif n < 0 || n > 1024 {\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn nil, EINVAL\n\t} else if n == 0 {\n\t\treturn nil, nil\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif n == -1 {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\n// ReadDirent reads directory entries from fd and writes them into buf.\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\t// Final argument is (basep *uintptr) and the syscall doesn't take nil.\n\t// TODO(rsc): Can we use a single global basep for all calls?\n\treturn Getdents(fd, buf, new(uintptr))\n}\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.\n\ntype WaitStatus uint32\n\nconst (\n\tmask  = 0x7F\n\tcore  = 0x80\n\tshift = 8\n\n\texited  = 0\n\tstopped = 0x7F\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif w&mask != exited {\n\t\treturn -1\n\t}\n\treturn int(w >> shift)\n}\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != 0 }\n\nfunc (w WaitStatus) Signal() syscall.Signal {\n\tsig := syscall.Signal(w & mask)\n\tif sig == stopped || sig == 0 {\n\t\treturn -1\n\t}\n\treturn sig\n}\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) Stopped() bool { return w&mask == stopped && syscall.Signal(w>>shift) != SIGSTOP }\n\nfunc (w WaitStatus) Continued() bool { return w&mask == stopped && syscall.Signal(w>>shift) == SIGSTOP }\n\nfunc (w WaitStatus) StopSignal() syscall.Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn syscall.Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (int, error) {\n\tvar status _C_int\n\trpid, err := wait4(int32(pid), &status, options, rusage)\n\twpid := int(rpid)\n\tif wpid == -1 {\n\t\treturn wpid, err\n\t}\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn wpid, nil\n}\n\n//sys\tgethostname(buf []byte) (n int, err error)\n\nfunc Gethostname() (name string, err error) {\n\tvar buf [MaxHostNameLen]byte\n\tn, err := gethostname(buf[:])\n\tif n != 0 {\n\t\treturn \"\", err\n\t}\n\tn = clen(buf[:])\n\tif n < 1 {\n\t\treturn \"\", EFAULT\n\t}\n\treturn string(buf[:n]), nil\n}\n\n//sys\tutimes(path string, times *[2]Timeval) (err error)\n\nfunc Utimes(path string, tv []Timeval) (err error) {\n\tif tv == nil {\n\t\treturn utimes(path, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n//sys\tutimensat(fd int, path string, times *[2]Timespec, flag int) (err error)\n\nfunc UtimesNano(path string, ts []Timespec) error {\n\tif ts == nil {\n\t\treturn utimensat(AT_FDCWD, path, nil, 0)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(AT_FDCWD, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), 0)\n}\n\nfunc UtimesNanoAt(dirfd int, path string, ts []Timespec, flags int) error {\n\tif ts == nil {\n\t\treturn utimensat(dirfd, path, nil, flags)\n\t}\n\tif len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn utimensat(dirfd, path, (*[2]Timespec)(unsafe.Pointer(&ts[0])), flags)\n}\n\n//sys\tfcntl(fd int, cmd int, arg int) (val int, err error)\n\n// FcntlInt performs a fcntl syscall on fd with the provided command and argument.\nfunc FcntlInt(fd uintptr, cmd, arg int) (int, error) {\n\tvalptr, _, errno := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tvar err error\n\tif errno != 0 {\n\t\terr = errno\n\t}\n\treturn int(valptr), err\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(lk)), 0, 0, 0)\n\tif e1 != 0 {\n\t\treturn e1\n\t}\n\treturn nil\n}\n\n//sys\tfutimesat(fildes int, path *byte, times *[2]Timeval) (err error)\n\nfunc Futimesat(dirfd int, path string, tv []Timeval) error {\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif tv == nil {\n\t\treturn futimesat(dirfd, pathp, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(dirfd, pathp, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\n// Solaris doesn't have an futimes function because it allows NULL to be\n// specified as the path for futimesat. However, Go doesn't like\n// NULL-style string interfaces, so this simple wrapper is provided.\nfunc Futimes(fd int, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn futimesat(fd, nil, nil)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\treturn futimesat(fd, nil, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc anyToSockaddr(fd int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Solaris semantics for\n\t\t// abstract Unix domain sockets -- they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs -- but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = libsocket.accept\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif nfd == -1 {\n\t\treturn\n\t}\n\tsa, err = anyToSockaddr(fd, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_recvmsg\n\nfunc recvmsgRaw(fd int, iov []Iovec, oob []byte, flags int, rsa *RawSockaddrAny) (n, oobn int, recvflags int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(rsa))\n\tmsg.Namelen = uint32(SizeofSockaddrAny)\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif emptyIovecs(iov) {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = recvmsg(fd, &msg, flags); n == -1 {\n\t\treturn\n\t}\n\toobn = int(msg.Accrightslen)\n\treturn\n}\n\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = libsocket.__xnet_sendmsg\n\nfunc sendmsgN(fd int, iov []Iovec, oob []byte, ptr unsafe.Pointer, salen _Socklen, flags int) (n int, err error) {\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = uint32(salen)\n\tvar dummy byte\n\tvar empty bool\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tempty = emptyIovecs(iov)\n\t\tif empty {\n\t\t\tvar iova [1]Iovec\n\t\t\tiova[0].Base = &dummy\n\t\t\tiova[0].SetLen(1)\n\t\t\tiov = iova[:]\n\t\t}\n\t\tmsg.Accrightslen = int32(len(oob))\n\t}\n\tif len(iov) > 0 {\n\t\tmsg.Iov = &iov[0]\n\t\tmsg.SetIovlen(len(iov))\n\t}\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && empty {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\n//sys\tacct(path *byte) (err error)\n\nfunc Acct(path string) (err error) {\n\tif len(path) == 0 {\n\t\t// Assume caller wants to disable accounting.\n\t\treturn acct(nil)\n\t}\n\n\tpathp, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn acct(pathp)\n}\n\n//sys\t__makedev(version int, major uint, minor uint) (val uint64)\n\nfunc Mkdev(major, minor uint32) uint64 {\n\treturn __makedev(NEWDEV, uint(major), uint(minor))\n}\n\n//sys\t__major(version int, dev uint64) (val uint)\n\nfunc Major(dev uint64) uint32 {\n\treturn uint32(__major(NEWDEV, dev))\n}\n\n//sys\t__minor(version int, dev uint64) (val uint)\n\nfunc Minor(dev uint64) uint32 {\n\treturn uint32(__minor(NEWDEV, dev))\n}\n\n/*\n * Expose the ioctl function\n */\n\n//sys\tioctlRet(fd int, req int, arg uintptr) (ret int, err error) = libc.ioctl\n//sys\tioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) = libc.ioctl\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, err = ioctlRet(fd, req, arg)\n\treturn err\n}\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, err = ioctlPtrRet(fd, req, arg)\n\treturn err\n}\n\nfunc IoctlSetTermio(fd int, req int, value *Termio) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(value))\n}\n\nfunc IoctlGetTermio(fd int, req int) (*Termio, error) {\n\tvar value Termio\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&value))\n\treturn &value, err\n}\n\n//sys\tpoll(fds *PollFd, nfds int, timeout int) (n int, err error)\n\nfunc Poll(fds []PollFd, timeout int) (n int, err error) {\n\tif len(fds) == 0 {\n\t\treturn poll(nil, 0, timeout)\n\t}\n\treturn poll(&fds[0], len(fds), timeout)\n}\n\nfunc Sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\treturn sendfile(outfd, infd, offset, count)\n}\n\n/*\n * Exposed directly\n */\n//sys\tAccess(path string, mode uint32) (err error)\n//sys\tAdjtime(delta *Timeval, olddelta *Timeval) (err error)\n//sys\tChdir(path string) (err error)\n//sys\tChmod(path string, mode uint32) (err error)\n//sys\tChown(path string, uid int, gid int) (err error)\n//sys\tChroot(path string) (err error)\n//sys\tClockGettime(clockid int32, time *Timespec) (err error)\n//sys\tClose(fd int) (err error)\n//sys\tCreat(path string, mode uint32) (fd int, err error)\n//sys\tDup(fd int) (nfd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tExit(code int)\n//sys\tFaccessat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchmodat(dirfd int, path string, mode uint32, flags int) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFchownat(dirfd int, path string, uid int, gid int, flags int) (err error)\n//sys\tFdatasync(fd int) (err error)\n//sys\tFlock(fd int, how int) (err error)\n//sys\tFpathconf(fd int, name int) (val int, err error)\n//sys\tFstat(fd int, stat *Stat_t) (err error)\n//sys\tFstatat(fd int, path string, stat *Stat_t, flags int) (err error)\n//sys\tFstatvfs(fd int, vfsstat *Statvfs_t) (err error)\n//sys\tGetdents(fd int, buf []byte, basep *uintptr) (n int, err error)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error)\n//sysnb\tGetpgrp() (pgid int, err error)\n//sys\tGeteuid() (euid int)\n//sys\tGetegid() (egid int)\n//sys\tGetppid() (ppid int)\n//sys\tGetpriority(which int, who int) (n int, err error)\n//sysnb\tGetrlimit(which int, lim *Rlimit) (err error)\n//sysnb\tGetrusage(who int, rusage *Rusage) (err error)\n//sysnb\tGetsid(pid int) (sid int, err error)\n//sysnb\tGettimeofday(tv *Timeval) (err error)\n//sysnb\tGetuid() (uid int)\n//sys\tKill(pid int, signum syscall.Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error)\n//sys\tLink(path string, link string) (err error)\n//sys\tListen(s int, backlog int) (err error) = libsocket.__xnet_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\tSetsid() (pid int, err error)\n//sysnb\tSetuid(uid int) (err error)\n//sys\tShutdown(s int, how int) (err error) = libsocket.shutdown\n//sys\tStat(path string, stat *Stat_t) (err error)\n//sys\tStatvfs(path string, vfsstat *Statvfs_t) (err error)\n//sys\tSymlink(path string, link string) (err error)\n//sys\tSync() (err error)\n//sys\tSysconf(which int) (n int64, err error)\n//sysnb\tTimes(tms *Tms) (ticks uintptr, err error)\n//sys\tTruncate(path string, length int64) (err error)\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys\tUmask(mask int) (oldmask int)\n//sysnb\tUname(buf *Utsname) (err error)\n//sys\tUnmount(target string, flags int) (err error) = libc.umount\n//sys\tUnlink(path string) (err error)\n//sys\tUnlinkat(dirfd int, path string, flags int) (err error)\n//sys\tUstat(dev int, ubuf *Ustat_t) (err error)\n//sys\tUtime(path string, buf *Utimbuf) (err error)\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_bind\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_connect\n//sys\tmmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error)\n//sys\tmunmap(addr uintptr, length uintptr) (err error)\n//sys\tsendfile(outfd int, infd int, offset *int64, count int) (written int, err error) = libsendfile.sendfile\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = libsocket.__xnet_sendto\n//sys\tsocket(domain int, typ int, proto int) (fd int, err error) = libsocket.__xnet_socket\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error) = libsocket.__xnet_socketpair\n//sys\twrite(fd int, p []byte) (n int, err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) = libsocket.__xnet_getsockopt\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = libsocket.getpeername\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) = libsocket.setsockopt\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = libsocket.recvfrom\n\n// Event Ports\n\ntype fileObjCookie struct {\n\tfobj   *fileObj\n\tcookie any\n}\n\n// EventPort provides a safe abstraction on top of Solaris/illumos Event Ports.\ntype EventPort struct {\n\tport  int\n\tmu    sync.Mutex\n\tfds   map[uintptr]*fileObjCookie\n\tpaths map[string]*fileObjCookie\n\t// The user cookie presents an interesting challenge from a memory management perspective.\n\t// There are two paths by which we can discover that it is no longer in use:\n\t// 1. The user calls port_dissociate before any events fire\n\t// 2. An event fires and we return it to the user\n\t// The tricky situation is if the event has fired in the kernel but\n\t// the user hasn't requested/received it yet.\n\t// If the user wants to port_dissociate before the event has been processed,\n\t// we should handle things gracefully. To do so, we need to keep an extra\n\t// reference to the cookie around until the event is processed\n\t// thus the otherwise seemingly extraneous \"cookies\" map\n\t// The key of this map is a pointer to the corresponding fCookie\n\tcookies map[*fileObjCookie]struct{}\n}\n\n// PortEvent is an abstraction of the port_event C struct.\n// Compare Source against PORT_SOURCE_FILE or PORT_SOURCE_FD\n// to see if Path or Fd was the event source. The other will be\n// uninitialized.\ntype PortEvent struct {\n\tCookie any\n\tEvents int32\n\tFd     uintptr\n\tPath   string\n\tSource uint16\n\tfobj   *fileObj\n}\n\n// NewEventPort creates a new EventPort including the\n// underlying call to port_create(3c).\nfunc NewEventPort() (*EventPort, error) {\n\tport, err := port_create()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\te := &EventPort{\n\t\tport:    port,\n\t\tfds:     make(map[uintptr]*fileObjCookie),\n\t\tpaths:   make(map[string]*fileObjCookie),\n\t\tcookies: make(map[*fileObjCookie]struct{}),\n\t}\n\treturn e, nil\n}\n\n//sys\tport_create() (n int, err error)\n//sys\tport_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error)\n//sys\tport_dissociate(port int, source int, object uintptr) (n int, err error)\n//sys\tport_get(port int, pe *portEvent, timeout *Timespec) (n int, err error)\n//sys\tport_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error)\n\n// Close closes the event port.\nfunc (e *EventPort) Close() error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr := Close(e.port)\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds = nil\n\te.paths = nil\n\te.cookies = nil\n\treturn nil\n}\n\n// PathIsWatched checks to see if path is associated with this EventPort.\nfunc (e *EventPort) PathIsWatched(path string) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.paths[path]\n\treturn found\n}\n\n// FdIsWatched checks to see if fd is associated with this EventPort.\nfunc (e *EventPort) FdIsWatched(fd uintptr) bool {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, found := e.fds[fd]\n\treturn found\n}\n\n// AssociatePath wraps port_associate(3c) for a filesystem path including\n// creating the necessary file_obj from the provided stat information.\nfunc (e *EventPort) AssociatePath(path string, stat os.FileInfo, events int, cookie any) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.paths[path]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", path)\n\t}\n\tfCookie, err := createFileObjCookie(path, stat, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(fCookie.fobj)), events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.paths[path] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociatePath wraps port_dissociate(3c) for a filesystem path.\nfunc (e *EventPort) DissociatePath(path string) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tf, ok := e.paths[path]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", path)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FILE, uintptr(unsafe.Pointer(f.fobj)))\n\t// If the path is no longer associated with this event port (ENOENT)\n\t// we should delete it from our map. We can still return ENOENT to the caller.\n\t// But we need to save the cookie\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.paths[path]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.paths, path)\n\treturn err\n}\n\n// AssociateFd wraps calls to port_associate(3c) on file descriptors.\nfunc (e *EventPort) AssociateFd(fd uintptr, events int, cookie any) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tif _, found := e.fds[fd]; found {\n\t\treturn fmt.Errorf(\"%v is already associated with this Event Port\", fd)\n\t}\n\tfCookie, err := createFileObjCookie(\"\", nil, cookie)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = port_associate(e.port, PORT_SOURCE_FD, fd, events, (*byte)(unsafe.Pointer(fCookie)))\n\tif err != nil {\n\t\treturn err\n\t}\n\te.fds[fd] = fCookie\n\te.cookies[fCookie] = struct{}{}\n\treturn nil\n}\n\n// DissociateFd wraps calls to port_dissociate(3c) on file descriptors.\nfunc (e *EventPort) DissociateFd(fd uintptr) error {\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\t_, ok := e.fds[fd]\n\tif !ok {\n\t\treturn fmt.Errorf(\"%v is not associated with this Event Port\", fd)\n\t}\n\t_, err := port_dissociate(e.port, PORT_SOURCE_FD, fd)\n\tif err != nil && err != ENOENT {\n\t\treturn err\n\t}\n\tif err == nil {\n\t\t// dissociate was successful, safe to delete the cookie\n\t\tfCookie := e.fds[fd]\n\t\tdelete(e.cookies, fCookie)\n\t}\n\tdelete(e.fds, fd)\n\treturn err\n}\n\nfunc createFileObjCookie(name string, stat os.FileInfo, cookie any) (*fileObjCookie, error) {\n\tfCookie := new(fileObjCookie)\n\tfCookie.cookie = cookie\n\tif name != \"\" && stat != nil {\n\t\tfCookie.fobj = new(fileObj)\n\t\tbs, err := ByteSliceFromString(name)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tfCookie.fobj.Name = (*int8)(unsafe.Pointer(&bs[0]))\n\t\ts := stat.Sys().(*syscall.Stat_t)\n\t\tfCookie.fobj.Atim.Sec = s.Atim.Sec\n\t\tfCookie.fobj.Atim.Nsec = s.Atim.Nsec\n\t\tfCookie.fobj.Mtim.Sec = s.Mtim.Sec\n\t\tfCookie.fobj.Mtim.Nsec = s.Mtim.Nsec\n\t\tfCookie.fobj.Ctim.Sec = s.Ctim.Sec\n\t\tfCookie.fobj.Ctim.Nsec = s.Ctim.Nsec\n\t}\n\treturn fCookie, nil\n}\n\n// GetOne wraps port_get(3c) and returns a single PortEvent.\nfunc (e *EventPort) GetOne(t *Timespec) (*PortEvent, error) {\n\tpe := new(portEvent)\n\t_, err := port_get(e.port, pe, t)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := new(PortEvent)\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\terr = e.peIntToExt(pe, p)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn p, nil\n}\n\n// peIntToExt converts a cgo portEvent struct into the friendlier PortEvent\n// NOTE: Always call this function while holding the e.mu mutex\nfunc (e *EventPort) peIntToExt(peInt *portEvent, peExt *PortEvent) error {\n\tif e.cookies == nil {\n\t\treturn fmt.Errorf(\"this EventPort is already closed\")\n\t}\n\tpeExt.Events = peInt.Events\n\tpeExt.Source = peInt.Source\n\tfCookie := (*fileObjCookie)(unsafe.Pointer(peInt.User))\n\t_, found := e.cookies[fCookie]\n\n\tif !found {\n\t\tpanic(\"unexpected event port address; may be due to kernel bug; see https://go.dev/issue/54254\")\n\t}\n\tpeExt.Cookie = fCookie.cookie\n\tdelete(e.cookies, fCookie)\n\n\tswitch peInt.Source {\n\tcase PORT_SOURCE_FD:\n\t\tpeExt.Fd = uintptr(peInt.Object)\n\t\t// Only remove the fds entry if it exists and this cookie matches\n\t\tif fobj, ok := e.fds[peExt.Fd]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.fds, peExt.Fd)\n\t\t\t}\n\t\t}\n\tcase PORT_SOURCE_FILE:\n\t\tpeExt.fobj = fCookie.fobj\n\t\tpeExt.Path = BytePtrToString((*byte)(unsafe.Pointer(peExt.fobj.Name)))\n\t\t// Only remove the paths entry if it exists and this cookie matches\n\t\tif fobj, ok := e.paths[peExt.Path]; ok {\n\t\t\tif fobj == fCookie {\n\t\t\t\tdelete(e.paths, peExt.Path)\n\t\t\t}\n\t\t}\n\t}\n\treturn nil\n}\n\n// Pending wraps port_getn(3c) and returns how many events are pending.\nfunc (e *EventPort) Pending() (int, error) {\n\tvar n uint32 = 0\n\t_, err := port_getn(e.port, nil, 0, &n, nil)\n\treturn int(n), err\n}\n\n// Get wraps port_getn(3c) and fills a slice of PortEvent.\n// It will block until either min events have been received\n// or the timeout has been exceeded. It will return how many\n// events were actually received along with any error information.\nfunc (e *EventPort) Get(s []PortEvent, min int, timeout *Timespec) (int, error) {\n\tif min == 0 {\n\t\treturn 0, fmt.Errorf(\"need to request at least one event or use Pending() instead\")\n\t}\n\tif len(s) < min {\n\t\treturn 0, fmt.Errorf(\"len(s) (%d) is less than min events requested (%d)\", len(s), min)\n\t}\n\tgot := uint32(min)\n\tmax := uint32(len(s))\n\tvar err error\n\tps := make([]portEvent, max)\n\t_, err = port_getn(e.port, &ps[0], max, &got, timeout)\n\t// got will be trustworthy with ETIME, but not any other error.\n\tif err != nil && err != ETIME {\n\t\treturn 0, err\n\t}\n\te.mu.Lock()\n\tdefer e.mu.Unlock()\n\tvalid := 0\n\tfor i := 0; i < int(got); i++ {\n\t\terr2 := e.peIntToExt(&ps[i], &s[i])\n\t\tif err2 != nil {\n\t\t\tif valid == 0 && err == nil {\n\t\t\t\t// If err2 is the only error and there are no valid events\n\t\t\t\t// to return, return it to the caller.\n\t\t\t\terr = err2\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t\tvalid = i + 1\n\t}\n\treturn valid, err\n}\n\n//sys\tputmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error)\n\nfunc Putmsg(fd int, cl []byte, data []byte, flags int) (err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tLen: int32(len(cl)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tLen: int32(len(data)),\n\t\t\tBuf: (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\treturn putmsg(fd, clp, datap, flags)\n}\n\n//sys\tgetmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error)\n\nfunc Getmsg(fd int, cl []byte, data []byte) (retCl []byte, retData []byte, flags int, err error) {\n\tvar clp, datap *strbuf\n\tif len(cl) > 0 {\n\t\tclp = &strbuf{\n\t\t\tMaxlen: int32(len(cl)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&cl[0])),\n\t\t}\n\t}\n\tif len(data) > 0 {\n\t\tdatap = &strbuf{\n\t\t\tMaxlen: int32(len(data)),\n\t\t\tBuf:    (*int8)(unsafe.Pointer(&data[0])),\n\t\t}\n\t}\n\n\tif err = getmsg(fd, clp, datap, &flags); err != nil {\n\t\treturn nil, nil, 0, err\n\t}\n\n\tif len(cl) > 0 {\n\t\tretCl = cl[:clp.Len]\n\t}\n\tif len(data) > 0 {\n\t\tretData = data[:datap.Len]\n\t}\n\treturn retCl, retData, flags, nil\n}\n\nfunc IoctlSetIntRetInt(fd int, req int, arg int) (int, error) {\n\treturn ioctlRet(fd, req, uintptr(arg))\n}\n\nfunc IoctlSetString(fd int, req int, val string) error {\n\tbs := make([]byte, len(val)+1)\n\tcopy(bs[:len(bs)-1], val)\n\terr := ioctlPtr(fd, req, unsafe.Pointer(&bs[0]))\n\truntime.KeepAlive(&bs[0])\n\treturn err\n}\n\n// Lifreq Helpers\n\nfunc (l *Lifreq) SetName(name string) error {\n\tif len(name) >= len(l.Name) {\n\t\treturn fmt.Errorf(\"name cannot be more than %d characters\", len(l.Name)-1)\n\t}\n\tfor i := range name {\n\t\tl.Name[i] = int8(name[i])\n\t}\n\treturn nil\n}\n\nfunc (l *Lifreq) SetLifruInt(d int) {\n\t*(*int)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruInt() int {\n\treturn *(*int)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc (l *Lifreq) SetLifruUint(d uint) {\n\t*(*uint)(unsafe.Pointer(&l.Lifru[0])) = d\n}\n\nfunc (l *Lifreq) GetLifruUint() uint {\n\treturn *(*uint)(unsafe.Pointer(&l.Lifru[0]))\n}\n\nfunc IoctlLifreq(fd int, req int, l *Lifreq) error {\n\treturn ioctlPtr(fd, req, unsafe.Pointer(l))\n}\n\n// Strioctl Helpers\n\nfunc (s *Strioctl) SetInt(i int) {\n\ts.Len = int32(unsafe.Sizeof(i))\n\ts.Dp = (*int8)(unsafe.Pointer(&i))\n}\n\nfunc IoctlSetStrioctlRetInt(fd int, req int, s *Strioctl) (int, error) {\n\treturn ioctlPtrRet(fd, req, unsafe.Pointer(s))\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_solaris_amd64.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build amd64 && solaris\n\npackage unix\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval {\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetIovlen(length int) {\n\tmsghdr.Iovlen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = uint32(length)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_unix.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"sort\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar (\n\tStdin  = 0\n\tStdout = 1\n\tStderr = 2\n)\n\n// Do the interface allocations only once for common\n// Errno values.\nvar (\n\terrEAGAIN error = syscall.EAGAIN\n\terrEINVAL error = syscall.EINVAL\n\terrENOENT error = syscall.ENOENT\n)\n\nvar (\n\tsignalNameMapOnce sync.Once\n\tsignalNameMap     map[string]syscall.Signal\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn nil\n\tcase EAGAIN:\n\t\treturn errEAGAIN\n\tcase EINVAL:\n\t\treturn errEINVAL\n\tcase ENOENT:\n\t\treturn errENOENT\n\t}\n\treturn e\n}\n\n// ErrnoName returns the error name for error number e.\nfunc ErrnoName(e syscall.Errno) string {\n\ti := sort.Search(len(errorList), func(i int) bool {\n\t\treturn errorList[i].num >= e\n\t})\n\tif i < len(errorList) && errorList[i].num == e {\n\t\treturn errorList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalName returns the signal name for signal number s.\nfunc SignalName(s syscall.Signal) string {\n\ti := sort.Search(len(signalList), func(i int) bool {\n\t\treturn signalList[i].num >= s\n\t})\n\tif i < len(signalList) && signalList[i].num == s {\n\t\treturn signalList[i].name\n\t}\n\treturn \"\"\n}\n\n// SignalNum returns the syscall.Signal for signal named s,\n// or 0 if a signal with such name is not found.\n// The signal name should start with \"SIG\".\nfunc SignalNum(s string) syscall.Signal {\n\tsignalNameMapOnce.Do(func() {\n\t\tsignalNameMap = make(map[string]syscall.Signal, len(signalList))\n\t\tfor _, signal := range signalList {\n\t\t\tsignalNameMap[signal.name] = signal.num\n\t\t}\n\t})\n\treturn signalNameMap[s]\n}\n\n// clen returns the index of the first NULL byte in n or len(n) if n contains no NULL byte.\nfunc clen(n []byte) int {\n\ti := bytes.IndexByte(n, 0)\n\tif i == -1 {\n\t\ti = len(n)\n\t}\n\treturn i\n}\n\n// Mmap manager, for use by operating system-specific implementations.\n\ntype mmapper struct {\n\tsync.Mutex\n\tactive map[*byte][]byte // active mappings; key is last byte in mapping\n\tmmap   func(addr, length uintptr, prot, flags, fd int, offset int64) (uintptr, error)\n\tmunmap func(addr uintptr, length uintptr) error\n}\n\nfunc (m *mmapper) Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\tif length <= 0 {\n\t\treturn nil, EINVAL\n\t}\n\n\t// Map the requested memory.\n\taddr, errno := m.mmap(0, uintptr(length), prot, flags, fd, offset)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), length)\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {\n\treturn mapper.Mmap(fd, offset, length, prot, flags)\n}\n\nfunc Munmap(b []byte) (err error) {\n\treturn mapper.Munmap(b)\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\nfunc Pread(fd int, p []byte, offset int64) (n int, err error) {\n\tn, err = pread(fd, p, offset)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = pwrite(fd, p, offset)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Recvmsg receives a message from a socket using the recvmsg system call. The\n// received non-control data will be written to p, and any \"out of band\"\n// control data will be written to oob. The flags are passed to recvmsg.\n//\n// The results are:\n//   - n is the number of non-control data bytes read into p\n//   - oobn is the number of control data bytes read into oob; this may be interpreted using [ParseSocketControlMessage]\n//   - recvflags is flags returned by recvmsg\n//   - from is the address of the sender\n//\n// If the underlying socket type is not SOCK_DGRAM, a received message\n// containing oob data and a single '\\0' of non-control data is treated as if\n// the message contained only control data, i.e. n will be zero on return.\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar rsa RawSockaddrAny\n\tn, oobn, recvflags, err = recvmsgRaw(fd, iov[:], oob, flags, &rsa)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// RecvmsgBuffers receives a message from a socket using the recvmsg system\n// call. This function is equivalent to Recvmsg, but non-control data read is\n// scattered into the buffers slices.\nfunc RecvmsgBuffers(fd int, buffers [][]byte, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar rsa RawSockaddrAny\n\tn, oobn, recvflags, err = recvmsgRaw(fd, iov, oob, flags, &rsa)\n\tif err == nil && rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\n// Sendmsg sends a message on a socket to an address using the sendmsg system\n// call. This function is equivalent to SendmsgN, but does not return the\n// number of bytes actually sent.\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\n// SendmsgN sends a message on a socket to an address using the sendmsg system\n// call. p contains the non-control data to send, and oob contains the \"out of\n// band\" control data. The flags are passed to sendmsg. The number of\n// non-control bytes actually written to the socket is returned.\n//\n// Some socket types do not support sending control data without accompanying\n// non-control data. If p is empty, and oob contains control data, and the\n// underlying socket type is not SOCK_DGRAM, p will be treated as containing a\n// single '\\0' and the return value will indicate zero bytes sent.\n//\n// The Go function Recvmsg, if called with an empty p and a non-empty oob,\n// will read and ignore this additional '\\0'.  If the message is received by\n// code that does not use Recvmsg, or that does not use Go at all, that code\n// will need to be written to expect and ignore the additional '\\0'.\n//\n// If you need to send non-empty oob with p actually empty, and if the\n// underlying socket type supports it, you can do so via a raw system call as\n// follows:\n//\n//\tmsg := &unix.Msghdr{\n//\t    Control: &oob[0],\n//\t}\n//\tmsg.SetControllen(len(oob))\n//\tn, _, errno := unix.Syscall(unix.SYS_SENDMSG, uintptr(fd), uintptr(unsafe.Pointer(msg)), flags)\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar iov [1]Iovec\n\tif len(p) > 0 {\n\t\tiov[0].Base = &p[0]\n\t\tiov[0].SetLen(len(p))\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov[:], oob, ptr, salen, flags)\n}\n\n// SendmsgBuffers sends a message on a socket to an address using the sendmsg\n// system call. This function is equivalent to SendmsgN, but the non-control\n// data is gathered from buffers.\nfunc SendmsgBuffers(fd int, buffers [][]byte, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tiov := make([]Iovec, len(buffers))\n\tfor i := range buffers {\n\t\tif len(buffers[i]) > 0 {\n\t\t\tiov[i].Base = &buffers[i][0]\n\t\t\tiov[i].SetLen(len(buffers[i]))\n\t\t} else {\n\t\t\tiov[i].Base = (*byte)(unsafe.Pointer(&_zero))\n\t\t}\n\t}\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\treturn sendmsgN(fd, iov, oob, ptr, salen, flags)\n}\n\nfunc Send(s int, buf []byte, flags int) (err error) {\n\treturn sendto(s, buf, flags, nil, 0)\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn sendto(fd, p, flags, ptr, salen)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif (flag&O_NONBLOCK != 0) == nonblocking {\n\t\treturn nil\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\n// Lutimes sets the access and modification times tv on path. If path refers to\n// a symlink, it is not dereferenced and the timestamps are set on the symlink.\n// If tv is nil, the access and modification times are set to the current time.\n// Otherwise tv must contain exactly 2 elements, with access time as the first\n// element and modification time as the second element.\nfunc Lutimes(path string, tv []Timeval) error {\n\tif tv == nil {\n\t\treturn UtimesNanoAt(AT_FDCWD, path, nil, AT_SYMLINK_NOFOLLOW)\n\t}\n\tif len(tv) != 2 {\n\t\treturn EINVAL\n\t}\n\tts := []Timespec{\n\t\tNsecToTimespec(TimevalToNsec(tv[0])),\n\t\tNsecToTimespec(TimevalToNsec(tv[1])),\n\t}\n\treturn UtimesNanoAt(AT_FDCWD, path, ts, AT_SYMLINK_NOFOLLOW)\n}\n\n// emptyIovecs reports whether there are no bytes in the slice of Iovec.\nfunc emptyIovecs(iov []Iovec) bool {\n\tfor i := range iov {\n\t\tif iov[i].Len > 0 {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\n// Setrlimit sets a resource limit.\nfunc Setrlimit(resource int, rlim *Rlimit) error {\n\t// Just call the syscall version, because as of Go 1.21\n\t// it will affect starting a new process.\n\treturn syscall.Setrlimit(resource, (*syscall.Rlimit)(rlim))\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_unix_gc.go",
    "content": "// Copyright 2016 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin || dragonfly || freebsd || (linux && !ppc64 && !ppc64le) || netbsd || openbsd || solaris) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno)\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno)\n"
  },
  {
    "path": "gossh/sys/unix/syscall_unix_gc_ppc64x.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux && (ppc64le || ppc64) && gc\n\npackage unix\n\nimport \"syscall\"\n\nfunc Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall(trap, a1, a2, a3)\n}\nfunc Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.Syscall6(trap, a1, a2, a3, a4, a5, a6)\n}\nfunc RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall(trap, a1, a2, a3)\n}\nfunc RawSyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err syscall.Errno) {\n\treturn syscall.RawSyscall6(trap, a1, a2, a3, a4, a5, a6)\n}\n"
  },
  {
    "path": "gossh/sys/unix/syscall_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strings\"\n\t\"sync\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nconst (\n\tO_CLOEXEC = 0       // Dummy value (not supported).\n\tAF_LOCAL  = AF_UNIX // AF_LOCAL is an alias for AF_UNIX\n)\n\nfunc syscall_syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawsyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawsyscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall_rawsyscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)\n\nfunc copyStat(stat *Stat_t, statLE *Stat_LE_t) {\n\tstat.Dev = uint64(statLE.Dev)\n\tstat.Ino = uint64(statLE.Ino)\n\tstat.Nlink = uint64(statLE.Nlink)\n\tstat.Mode = uint32(statLE.Mode)\n\tstat.Uid = uint32(statLE.Uid)\n\tstat.Gid = uint32(statLE.Gid)\n\tstat.Rdev = uint64(statLE.Rdev)\n\tstat.Size = statLE.Size\n\tstat.Atim.Sec = int64(statLE.Atim)\n\tstat.Atim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Mtim.Sec = int64(statLE.Mtim)\n\tstat.Mtim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Ctim.Sec = int64(statLE.Ctim)\n\tstat.Ctim.Nsec = 0 //zos doesn't return nanoseconds\n\tstat.Blksize = int64(statLE.Blksize)\n\tstat.Blocks = statLE.Blocks\n}\n\nfunc svcCall(fnptr unsafe.Pointer, argv *unsafe.Pointer, dsa *uint64)\nfunc svcLoad(name *byte) unsafe.Pointer\nfunc svcUnload(name *byte, fnptr unsafe.Pointer) int64\n\nfunc (d *Dirent) NameString() string {\n\tif d == nil {\n\t\treturn \"\"\n\t}\n\ts := string(d.Name[:])\n\tidx := strings.IndexByte(s, 0)\n\tif idx == -1 {\n\t\treturn s\n\t} else {\n\t\treturn s[:idx]\n\t}\n}\n\nfunc (sa *SockaddrInet4) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet4\n\tsa.raw.Family = AF_INET\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = SizeofSockaddrInet6\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, _Socklen, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n >= len(sa.raw.Path) || n == 0 {\n\t\treturn nil, 0, EINVAL\n\t}\n\tsa.raw.Len = byte(3 + n) // 2 for Family, Len; 1 for NUL\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\treturn unsafe.Pointer(&sa.raw), _Socklen(sa.raw.Len), nil\n}\n\nfunc anyToSockaddr(_ int, rsa *RawSockaddrAny) (Sockaddr, error) {\n\t// TODO(neeilan): Implement use of first param (fd)\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\t// For z/OS, only replace NUL with @ when the\n\t\t// length is not zero.\n\t\tif pp.Len != 0 && pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t//\n\t\t// For z/OS, the length of the name is a field\n\t\t// in the structure. To be on the safe side, we\n\t\t// will still scan the name for a NUL but only\n\t\t// to the length provided in the structure.\n\t\t//\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < int(pp.Len) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, EAFNOSUPPORT\n}\n\nfunc Accept(fd int) (nfd int, sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tnfd, err = accept(fd, &rsa, &len)\n\tif err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan): Remove 0 in call\n\tsa, err = anyToSockaddr(0, &rsa)\n\tif err != nil {\n\t\tClose(nfd)\n\t\tnfd = 0\n\t}\n\treturn\n}\n\nfunc (iov *Iovec) SetLen(length int) {\n\tiov.Len = uint64(length)\n}\n\nfunc (msghdr *Msghdr) SetControllen(length int) {\n\tmsghdr.Controllen = int32(length)\n}\n\nfunc (cmsg *Cmsghdr) SetLen(length int) {\n\tcmsg.Len = int32(length)\n}\n\n//sys   fcntl(fd int, cmd int, arg int) (val int, err error)\n//sys\tread(fd int, p []byte) (n int, err error)\n//sys\twrite(fd int, p []byte) (n int, err error)\n\n//sys\taccept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) = SYS___ACCEPT_A\n//sys\tbind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___BIND_A\n//sys\tconnect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) = SYS___CONNECT_A\n//sysnb\tgetgroups(n int, list *_Gid_t) (nn int, err error)\n//sysnb\tsetgroups(n int, list *_Gid_t) (err error)\n//sys\tgetsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error)\n//sys\tsetsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error)\n//sysnb\tsocket(domain int, typ int, proto int) (fd int, err error)\n//sysnb\tsocketpair(domain int, typ int, proto int, fd *[2]int32) (err error)\n//sysnb\tgetpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETPEERNAME_A\n//sysnb\tgetsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) = SYS___GETSOCKNAME_A\n//sys\trecvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) = SYS___RECVFROM_A\n//sys\tsendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) = SYS___SENDTO_A\n//sys\trecvmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___RECVMSG_A\n//sys\tsendmsg(s int, msg *Msghdr, flags int) (n int, err error) = SYS___SENDMSG_A\n//sys   mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) = SYS_MMAP\n//sys   munmap(addr uintptr, length uintptr) (err error) = SYS_MUNMAP\n//sys   ioctl(fd int, req int, arg uintptr) (err error) = SYS_IOCTL\n//sys   ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) = SYS_IOCTL\n\n//sys   Access(path string, mode uint32) (err error) = SYS___ACCESS_A\n//sys   Chdir(path string) (err error) = SYS___CHDIR_A\n//sys\tChown(path string, uid int, gid int) (err error) = SYS___CHOWN_A\n//sys\tChmod(path string, mode uint32) (err error) = SYS___CHMOD_A\n//sys   Creat(path string, mode uint32) (fd int, err error) = SYS___CREAT_A\n//sys\tDup(oldfd int) (fd int, err error)\n//sys\tDup2(oldfd int, newfd int) (err error)\n//sys\tErrno2() (er2 int) = SYS___ERRNO2\n//sys\tErr2ad() (eadd *int) = SYS___ERR2AD\n//sys\tExit(code int)\n//sys\tFchdir(fd int) (err error)\n//sys\tFchmod(fd int, mode uint32) (err error)\n//sys\tFchown(fd int, uid int, gid int) (err error)\n//sys\tFcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) = SYS_FCNTL\n//sys\tfstat(fd int, stat *Stat_LE_t) (err error)\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = fstat(fd, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\n//sys\tFstatvfs(fd int, stat *Statvfs_t) (err error) = SYS_FSTATVFS\n//sys\tFsync(fd int) (err error)\n//sys\tFtruncate(fd int, length int64) (err error)\n//sys   Getpagesize() (pgsize int) = SYS_GETPAGESIZE\n//sys   Mprotect(b []byte, prot int) (err error) = SYS_MPROTECT\n//sys   Msync(b []byte, flags int) (err error) = SYS_MSYNC\n//sys   Poll(fds []PollFd, timeout int) (n int, err error) = SYS_POLL\n//sys   Times(tms *Tms) (ticks uintptr, err error) = SYS_TIMES\n//sys   W_Getmntent(buff *byte, size int) (lastsys int, err error) = SYS_W_GETMNTENT\n//sys   W_Getmntent_A(buff *byte, size int) (lastsys int, err error) = SYS___W_GETMNTENT_A\n\n//sys   mount_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) = SYS___MOUNT_A\n//sys   unmount(filesystem string, mtm int) (err error) = SYS___UMOUNT_A\n//sys   Chroot(path string) (err error) = SYS___CHROOT_A\n//sys   Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) = SYS_SELECT\n//sysnb Uname(buf *Utsname) (err error) = SYS___UNAME_A\n\nfunc Ptsname(fd int) (name string, err error) {\n\tr0, _, e1 := syscall_syscall(SYS___PTSNAME_A, uintptr(fd), 0, 0)\n\tname = u2s(unsafe.Pointer(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc u2s(cstr unsafe.Pointer) string {\n\tstr := (*[1024]uint8)(cstr)\n\ti := 0\n\tfor str[i] != 0 {\n\t\ti++\n\t}\n\treturn string(str[:i])\n}\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tfor i := 0; e1 == EAGAIN && i < 10; i++ {\n\t\t_, _, _ = syscall_syscall(SYS_USLEEP, uintptr(10), 0, 0)\n\t\t_, _, e1 = syscall_syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\t}\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// Dummy function: there are no semantics for Madvise on z/OS\nfunc Madvise(b []byte, advice int) (err error) {\n\treturn\n}\n\n//sys   Gethostname(buf []byte) (err error) = SYS___GETHOSTNAME_A\n//sysnb\tGetegid() (egid int)\n//sysnb\tGeteuid() (uid int)\n//sysnb\tGetgid() (gid int)\n//sysnb\tGetpid() (pid int)\n//sysnb\tGetpgid(pid int) (pgid int, err error) = SYS_GETPGID\n\nfunc Getpgrp() (pid int) {\n\tpid, _ = Getpgid(0)\n\treturn\n}\n\n//sysnb\tGetppid() (pid int)\n//sys\tGetpriority(which int, who int) (prio int, err error)\n//sysnb\tGetrlimit(resource int, rlim *Rlimit) (err error) = SYS_GETRLIMIT\n\n//sysnb getrusage(who int, rusage *rusage_zos) (err error) = SYS_GETRUSAGE\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tvar ruz rusage_zos\n\terr = getrusage(who, &ruz)\n\t//Only the first two fields of Rusage are set\n\trusage.Utime.Sec = ruz.Utime.Sec\n\trusage.Utime.Usec = int64(ruz.Utime.Usec)\n\trusage.Stime.Sec = ruz.Stime.Sec\n\trusage.Stime.Usec = int64(ruz.Stime.Usec)\n\treturn\n}\n\n//sysnb Getsid(pid int) (sid int, err error) = SYS_GETSID\n//sysnb\tGetuid() (uid int)\n//sysnb\tKill(pid int, sig Signal) (err error)\n//sys\tLchown(path string, uid int, gid int) (err error) = SYS___LCHOWN_A\n//sys\tLink(path string, link string) (err error) = SYS___LINK_A\n//sys\tListen(s int, n int) (err error)\n//sys\tlstat(path string, stat *Stat_LE_t) (err error) = SYS___LSTAT_A\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = lstat(path, &statLE)\n\tcopyStat(stat, &statLE)\n\treturn\n}\n\n//sys\tMkdir(path string, mode uint32) (err error) = SYS___MKDIR_A\n//sys   Mkfifo(path string, mode uint32) (err error) = SYS___MKFIFO_A\n//sys\tMknod(path string, mode uint32, dev int) (err error) = SYS___MKNOD_A\n//sys\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\tReadlink(path string, buf []byte) (n int, err error) = SYS___READLINK_A\n//sys\tRename(from string, to string) (err error) = SYS___RENAME_A\n//sys\tRmdir(path string) (err error) = SYS___RMDIR_A\n//sys   Seek(fd int, offset int64, whence int) (off int64, err error) = SYS_LSEEK\n//sys\tSetpriority(which int, who int, prio int) (err error)\n//sysnb\tSetpgid(pid int, pgid int) (err error) = SYS_SETPGID\n//sysnb\tSetrlimit(resource int, lim *Rlimit) (err error)\n//sysnb\tSetregid(rgid int, egid int) (err error) = SYS_SETREGID\n//sysnb\tSetreuid(ruid int, euid int) (err error) = SYS_SETREUID\n//sysnb\tSetsid() (pid int, err error) = SYS_SETSID\n//sys\tSetuid(uid int) (err error) = SYS_SETUID\n//sys\tSetgid(uid int) (err error) = SYS_SETGID\n//sys\tShutdown(fd int, how int) (err error)\n//sys\tstat(path string, statLE *Stat_LE_t) (err error) = SYS___STAT_A\n\nfunc Stat(path string, sta *Stat_t) (err error) {\n\tvar statLE Stat_LE_t\n\terr = stat(path, &statLE)\n\tcopyStat(sta, &statLE)\n\treturn\n}\n\n//sys\tSymlink(path string, link string) (err error) = SYS___SYMLINK_A\n//sys\tSync() = SYS_SYNC\n//sys\tTruncate(path string, length int64) (err error) = SYS___TRUNCATE_A\n//sys\tTcgetattr(fildes int, termptr *Termios) (err error) = SYS_TCGETATTR\n//sys\tTcsetattr(fildes int, when int, termptr *Termios) (err error) = SYS_TCSETATTR\n//sys\tUmask(mask int) (oldmask int)\n//sys\tUnlink(path string) (err error) = SYS___UNLINK_A\n//sys\tUtime(path string, utim *Utimbuf) (err error) = SYS___UTIME_A\n\n//sys\topen(path string, mode int, perm uint32) (fd int, err error) = SYS___OPEN_A\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\treturn open(path, mode, perm)\n}\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\twd, err := Getwd()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := Fchdir(dirfd); err != nil {\n\t\treturn err\n\t}\n\tdefer Chdir(wd)\n\n\treturn Mkfifo(path, mode)\n}\n\n//sys\tremove(path string) (err error)\n\nfunc Remove(path string) error {\n\treturn remove(path)\n}\n\nconst ImplementsGetwd = true\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar p unsafe.Pointer\n\tif len(buf) > 0 {\n\t\tp = unsafe.Pointer(&buf[0])\n\t} else {\n\t\tp = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e := syscall_syscall(SYS___GETCWD_A, uintptr(p), uintptr(len(buf)), 0)\n\tn = clen(buf) + 1\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn\n}\n\nfunc Getwd() (wd string, err error) {\n\tvar buf [PathMax]byte\n\tn, err := Getcwd(buf[0:])\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t// Getcwd returns the number of bytes written to buf, including the NUL.\n\tif n < 1 || n > len(buf) || buf[n-1] != 0 {\n\t\treturn \"\", EINVAL\n\t}\n\treturn string(buf[0 : n-1]), nil\n}\n\nfunc Getgroups() (gids []int, err error) {\n\tn, err := getgroups(0, nil)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif n == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// Sanity check group count.  Max is 1<<16 on Linux.\n\tif n < 0 || n > 1<<20 {\n\t\treturn nil, EINVAL\n\t}\n\n\ta := make([]_Gid_t, n)\n\tn, err = getgroups(n, &a[0])\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tgids = make([]int, n)\n\tfor i, v := range a[0:n] {\n\t\tgids[i] = int(v)\n\t}\n\treturn\n}\n\nfunc Setgroups(gids []int) (err error) {\n\tif len(gids) == 0 {\n\t\treturn setgroups(0, nil)\n\t}\n\n\ta := make([]_Gid_t, len(gids))\n\tfor i, v := range gids {\n\t\ta[i] = _Gid_t(v)\n\t}\n\treturn setgroups(len(a), &a[0])\n}\n\nfunc gettid() uint64\n\nfunc Gettid() (tid int) {\n\treturn int(gettid())\n}\n\ntype WaitStatus uint32\n\n// Wait status is 7 bits at bottom, either 0 (exited),\n// 0x7F (stopped), or a signal number that caused an exit.\n// The 0x80 bit is whether there was a core dump.\n// An extra number (exit code, signal causing a stop)\n// is in the high bits.  At least that's the idea.\n// There are various irregularities.  For example, the\n// \"continued\" status is 0xFFFF, distinguishing itself\n// from stopped via the core dump bit.\n\nconst (\n\tmask    = 0x7F\n\tcore    = 0x80\n\texited  = 0x00\n\tstopped = 0x7F\n\tshift   = 8\n)\n\nfunc (w WaitStatus) Exited() bool { return w&mask == exited }\n\nfunc (w WaitStatus) Signaled() bool { return w&mask != stopped && w&mask != exited }\n\nfunc (w WaitStatus) Stopped() bool { return w&0xFF == stopped }\n\nfunc (w WaitStatus) Continued() bool { return w == 0xFFFF }\n\nfunc (w WaitStatus) CoreDump() bool { return w.Signaled() && w&core != 0 }\n\nfunc (w WaitStatus) ExitStatus() int {\n\tif !w.Exited() {\n\t\treturn -1\n\t}\n\treturn int(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) Signal() Signal {\n\tif !w.Signaled() {\n\t\treturn -1\n\t}\n\treturn Signal(w & mask)\n}\n\nfunc (w WaitStatus) StopSignal() Signal {\n\tif !w.Stopped() {\n\t\treturn -1\n\t}\n\treturn Signal(w>>shift) & 0xFF\n}\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n//sys\twaitpid(pid int, wstatus *_C_int, options int) (wpid int, err error)\n\nfunc Wait4(pid int, wstatus *WaitStatus, options int, rusage *Rusage) (wpid int, err error) {\n\t// TODO(mundaym): z/OS doesn't have wait4. I don't think getrusage does what we want.\n\t// At the moment rusage will not be touched.\n\tvar status _C_int\n\twpid, err = waitpid(pid, &status, options)\n\tif wstatus != nil {\n\t\t*wstatus = WaitStatus(status)\n\t}\n\treturn\n}\n\n//sysnb\tgettimeofday(tv *timeval_zos) (err error)\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\tvar tvz timeval_zos\n\terr = gettimeofday(&tvz)\n\ttv.Sec = tvz.Sec\n\ttv.Usec = int64(tvz.Usec)\n\treturn\n}\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tvar tv Timeval\n\terr = Gettimeofday(&tv)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tif t != nil {\n\t\t*t = Time_t(tv.Sec)\n\t}\n\treturn Time_t(tv.Sec), nil\n}\n\nfunc setTimespec(sec, nsec int64) Timespec {\n\treturn Timespec{Sec: sec, Nsec: nsec}\n}\n\nfunc setTimeval(sec, usec int64) Timeval { //fix\n\treturn Timeval{Sec: sec, Usec: usec}\n}\n\n//sysnb pipe(p *[2]_C_int) (err error)\n\nfunc Pipe(p []int) (err error) {\n\tif len(p) != 2 {\n\t\treturn EINVAL\n\t}\n\tvar pp [2]_C_int\n\terr = pipe(&pp)\n\tif err == nil {\n\t\tp[0] = int(pp[0])\n\t\tp[1] = int(pp[1])\n\t}\n\treturn\n}\n\n//sys\tutimes(path string, timeval *[2]Timeval) (err error) = SYS___UTIMES_A\n\nfunc Utimes(path string, tv []Timeval) (err error) {\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 len(ts) != 2 {\n\t\treturn EINVAL\n\t}\n\t// Not as efficient as it could be because Timespec and\n\t// Timeval have different types in the different OSes\n\ttv := [2]Timeval{\n\t\tNsecToTimeval(TimespecToNsec(ts[0])),\n\t\tNsecToTimeval(TimespecToNsec(ts[1])),\n\t}\n\treturn utimes(path, (*[2]Timeval)(unsafe.Pointer(&tv[0])))\n}\n\nfunc Getsockname(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getsockname(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\t// TODO(neeilan) : Remove this 0 ( added to get sys/unix compiling on z/OS )\n\treturn anyToSockaddr(0, &rsa)\n}\n\nconst (\n\t// identifier constants\n\tnwmHeaderIdentifier    = 0xd5e6d4c8\n\tnwmFilterIdentifier    = 0xd5e6d4c6\n\tnwmTCPConnIdentifier   = 0xd5e6d4c3\n\tnwmRecHeaderIdentifier = 0xd5e6d4d9\n\tnwmIPStatsIdentifier   = 0xd5e6d4c9d7e2e340\n\tnwmIPGStatsIdentifier  = 0xd5e6d4c9d7c7e2e3\n\tnwmTCPStatsIdentifier  = 0xd5e6d4e3c3d7e2e3\n\tnwmUDPStatsIdentifier  = 0xd5e6d4e4c4d7e2e3\n\tnwmICMPGStatsEntry     = 0xd5e6d4c9c3d4d7c7\n\tnwmICMPTStatsEntry     = 0xd5e6d4c9c3d4d7e3\n\n\t// nwmHeader constants\n\tnwmVersion1   = 1\n\tnwmVersion2   = 2\n\tnwmCurrentVer = 2\n\n\tnwmTCPConnType     = 1\n\tnwmGlobalStatsType = 14\n\n\t// nwmFilter constants\n\tnwmFilterLclAddrMask = 0x20000000 // Local address\n\tnwmFilterSrcAddrMask = 0x20000000 // Source address\n\tnwmFilterLclPortMask = 0x10000000 // Local port\n\tnwmFilterSrcPortMask = 0x10000000 // Source port\n\n\t// nwmConnEntry constants\n\tnwmTCPStateClosed   = 1\n\tnwmTCPStateListen   = 2\n\tnwmTCPStateSynSent  = 3\n\tnwmTCPStateSynRcvd  = 4\n\tnwmTCPStateEstab    = 5\n\tnwmTCPStateFinWait1 = 6\n\tnwmTCPStateFinWait2 = 7\n\tnwmTCPStateClosWait = 8\n\tnwmTCPStateLastAck  = 9\n\tnwmTCPStateClosing  = 10\n\tnwmTCPStateTimeWait = 11\n\tnwmTCPStateDeletTCB = 12\n\n\t// Existing constants on linux\n\tBPF_TCP_CLOSE        = 1\n\tBPF_TCP_LISTEN       = 2\n\tBPF_TCP_SYN_SENT     = 3\n\tBPF_TCP_SYN_RECV     = 4\n\tBPF_TCP_ESTABLISHED  = 5\n\tBPF_TCP_FIN_WAIT1    = 6\n\tBPF_TCP_FIN_WAIT2    = 7\n\tBPF_TCP_CLOSE_WAIT   = 8\n\tBPF_TCP_LAST_ACK     = 9\n\tBPF_TCP_CLOSING      = 10\n\tBPF_TCP_TIME_WAIT    = 11\n\tBPF_TCP_NEW_SYN_RECV = -1\n\tBPF_TCP_MAX_STATES   = -2\n)\n\ntype nwmTriplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n}\n\ntype nwmQuadruplet struct {\n\toffset uint32\n\tlength uint32\n\tnumber uint32\n\tmatch  uint32\n}\n\ntype nwmHeader struct {\n\tident       uint32\n\tlength      uint32\n\tversion     uint16\n\tnwmType     uint16\n\tbytesNeeded uint32\n\toptions     uint32\n\t_           [16]byte\n\tinputDesc   nwmTriplet\n\toutputDesc  nwmQuadruplet\n}\n\ntype nwmFilter struct {\n\tident         uint32\n\tflags         uint32\n\tresourceName  [8]byte\n\tresourceId    uint32\n\tlistenerId    uint32\n\tlocal         [28]byte // union of sockaddr4 and sockaddr6\n\tremote        [28]byte // union of sockaddr4 and sockaddr6\n\t_             uint16\n\t_             uint16\n\tasid          uint16\n\t_             [2]byte\n\ttnLuName      [8]byte\n\ttnMonGrp      uint32\n\ttnAppl        [8]byte\n\tapplData      [40]byte\n\tnInterface    [16]byte\n\tdVipa         [16]byte\n\tdVipaPfx      uint16\n\tdVipaPort     uint16\n\tdVipaFamily   byte\n\t_             [3]byte\n\tdestXCF       [16]byte\n\tdestXCFPfx    uint16\n\tdestXCFFamily byte\n\t_             [1]byte\n\ttargIP        [16]byte\n\ttargIPPfx     uint16\n\ttargIPFamily  byte\n\t_             [1]byte\n\t_             [20]byte\n}\n\ntype nwmRecHeader struct {\n\tident  uint32\n\tlength uint32\n\tnumber byte\n\t_      [3]byte\n}\n\ntype nwmTCPStatsEntry struct {\n\tident             uint64\n\tcurrEstab         uint32\n\tactiveOpened      uint32\n\tpassiveOpened     uint32\n\tconnClosed        uint32\n\testabResets       uint32\n\tattemptFails      uint32\n\tpassiveDrops      uint32\n\ttimeWaitReused    uint32\n\tinSegs            uint64\n\tpredictAck        uint32\n\tpredictData       uint32\n\tinDupAck          uint32\n\tinBadSum          uint32\n\tinBadLen          uint32\n\tinShort           uint32\n\tinDiscOldTime     uint32\n\tinAllBeforeWin    uint32\n\tinSomeBeforeWin   uint32\n\tinAllAfterWin     uint32\n\tinSomeAfterWin    uint32\n\tinOutOfOrder      uint32\n\tinAfterClose      uint32\n\tinWinProbes       uint32\n\tinWinUpdates      uint32\n\toutWinUpdates     uint32\n\toutSegs           uint64\n\toutDelayAcks      uint32\n\toutRsts           uint32\n\tretransSegs       uint32\n\tretransTimeouts   uint32\n\tretransDrops      uint32\n\tpmtuRetrans       uint32\n\tpmtuErrors        uint32\n\toutWinProbes      uint32\n\tprobeDrops        uint32\n\tkeepAliveProbes   uint32\n\tkeepAliveDrops    uint32\n\tfinwait2Drops     uint32\n\tacceptCount       uint64\n\tinBulkQSegs       uint64\n\tinDiscards        uint64\n\tconnFloods        uint32\n\tconnStalls        uint32\n\tcfgEphemDef       uint16\n\tephemInUse        uint16\n\tephemHiWater      uint16\n\tflags             byte\n\t_                 [1]byte\n\tephemExhaust      uint32\n\tsmcRCurrEstabLnks uint32\n\tsmcRLnkActTimeOut uint32\n\tsmcRActLnkOpened  uint32\n\tsmcRPasLnkOpened  uint32\n\tsmcRLnksClosed    uint32\n\tsmcRCurrEstab     uint32\n\tsmcRActiveOpened  uint32\n\tsmcRPassiveOpened uint32\n\tsmcRConnClosed    uint32\n\tsmcRInSegs        uint64\n\tsmcROutSegs       uint64\n\tsmcRInRsts        uint32\n\tsmcROutRsts       uint32\n\tsmcDCurrEstabLnks uint32\n\tsmcDActLnkOpened  uint32\n\tsmcDPasLnkOpened  uint32\n\tsmcDLnksClosed    uint32\n\tsmcDCurrEstab     uint32\n\tsmcDActiveOpened  uint32\n\tsmcDPassiveOpened uint32\n\tsmcDConnClosed    uint32\n\tsmcDInSegs        uint64\n\tsmcDOutSegs       uint64\n\tsmcDInRsts        uint32\n\tsmcDOutRsts       uint32\n}\n\ntype nwmConnEntry struct {\n\tident             uint32\n\tlocal             [28]byte // union of sockaddr4 and sockaddr6\n\tremote            [28]byte // union of sockaddr4 and sockaddr6\n\tstartTime         [8]byte  // uint64, changed to prevent padding from being inserted\n\tlastActivity      [8]byte  // uint64\n\tbytesIn           [8]byte  // uint64\n\tbytesOut          [8]byte  // uint64\n\tinSegs            [8]byte  // uint64\n\toutSegs           [8]byte  // uint64\n\tstate             uint16\n\tactiveOpen        byte\n\tflag01            byte\n\toutBuffered       uint32\n\tinBuffered        uint32\n\tmaxSndWnd         uint32\n\treXmtCount        uint32\n\tcongestionWnd     uint32\n\tssThresh          uint32\n\troundTripTime     uint32\n\troundTripVar      uint32\n\tsendMSS           uint32\n\tsndWnd            uint32\n\trcvBufSize        uint32\n\tsndBufSize        uint32\n\toutOfOrderCount   uint32\n\tlcl0WindowCount   uint32\n\trmt0WindowCount   uint32\n\tdupacks           uint32\n\tflag02            byte\n\tsockOpt6Cont      byte\n\tasid              uint16\n\tresourceName      [8]byte\n\tresourceId        uint32\n\tsubtask           uint32\n\tsockOpt           byte\n\tsockOpt6          byte\n\tclusterConnFlag   byte\n\tproto             byte\n\ttargetAppl        [8]byte\n\tluName            [8]byte\n\tclientUserId      [8]byte\n\tlogMode           [8]byte\n\ttimeStamp         uint32\n\ttimeStampAge      uint32\n\tserverResourceId  uint32\n\tintfName          [16]byte\n\tttlsStatPol       byte\n\tttlsStatConn      byte\n\tttlsSSLProt       uint16\n\tttlsNegCiph       [2]byte\n\tttlsSecType       byte\n\tttlsFIPS140Mode   byte\n\tttlsUserID        [8]byte\n\tapplData          [40]byte\n\tinOldestTime      [8]byte // uint64\n\toutOldestTime     [8]byte // uint64\n\ttcpTrustedPartner byte\n\t_                 [3]byte\n\tbulkDataIntfName  [16]byte\n\tttlsNegCiph4      [4]byte\n\tsmcReason         uint32\n\tlclSMCLinkId      uint32\n\trmtSMCLinkId      uint32\n\tsmcStatus         byte\n\tsmcFlags          byte\n\t_                 [2]byte\n\trcvWnd            uint32\n\tlclSMCBufSz       uint32\n\trmtSMCBufSz       uint32\n\tttlsSessID        [32]byte\n\tttlsSessIDLen     int16\n\t_                 [1]byte\n\tsmcDStatus        byte\n\tsmcDReason        uint32\n}\n\nvar svcNameTable [][]byte = [][]byte{\n\t[]byte(\"\\xc5\\xe9\\xc2\\xd5\\xd4\\xc9\\xc6\\xf4\"), // svc_EZBNMIF4\n}\n\nconst (\n\tsvc_EZBNMIF4 = 0\n)\n\nfunc GetsockoptTCPInfo(fd, level, opt int) (*TCPInfo, error) {\n\tjobname := []byte(\"\\x5c\\x40\\x40\\x40\\x40\\x40\\x40\\x40\") // \"*\"\n\tresponseBuffer := [4096]byte{0}\n\tvar bufferAlet, reasonCode uint32 = 0, 0\n\tvar bufferLen, returnValue, returnCode int32 = 4096, 0, 0\n\n\tdsa := [18]uint64{0}\n\tvar argv [7]unsafe.Pointer\n\targv[0] = unsafe.Pointer(&jobname[0])\n\targv[1] = unsafe.Pointer(&responseBuffer[0])\n\targv[2] = unsafe.Pointer(&bufferAlet)\n\targv[3] = unsafe.Pointer(&bufferLen)\n\targv[4] = unsafe.Pointer(&returnValue)\n\targv[5] = unsafe.Pointer(&returnCode)\n\targv[6] = unsafe.Pointer(&reasonCode)\n\n\trequest := (*struct {\n\t\theader nwmHeader\n\t\tfilter nwmFilter\n\t})(unsafe.Pointer(&responseBuffer[0]))\n\n\tEZBNMIF4 := svcLoad(&svcNameTable[svc_EZBNMIF4][0])\n\tif EZBNMIF4 == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetGlobalStats EZBNMIF4 call\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmGlobalStatsType\n\trequest.header.options = 0x80000000\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmRecHeader\n\trecHeader := (*nwmRecHeader)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif recHeader.ident != nwmRecHeaderIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Parse nwmTriplets to get offsets of returned entries\n\tvar sections []*uint64\n\tvar sectionDesc *nwmTriplet = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[0]))\n\tfor i := uint32(0); i < uint32(recHeader.number); i++ {\n\t\toffset := request.header.outputDesc.offset + uint32(unsafe.Sizeof(*recHeader)) + i*uint32(unsafe.Sizeof(*sectionDesc))\n\t\tsectionDesc = (*nwmTriplet)(unsafe.Pointer(&responseBuffer[offset]))\n\t\tfor j := uint32(0); j < sectionDesc.number; j++ {\n\t\t\toffset = request.header.outputDesc.offset + sectionDesc.offset + j*sectionDesc.length\n\t\t\tsections = append(sections, (*uint64)(unsafe.Pointer(&responseBuffer[offset])))\n\t\t}\n\t}\n\n\t// Find nwmTCPStatsEntry in returned entries\n\tvar tcpStats *nwmTCPStatsEntry = nil\n\tfor _, ptr := range sections {\n\t\tswitch *ptr {\n\t\tcase nwmTCPStatsIdentifier:\n\t\t\tif tcpStats != nil {\n\t\t\t\treturn nil, errnoErr(EINVAL)\n\t\t\t}\n\t\t\ttcpStats = (*nwmTCPStatsEntry)(unsafe.Pointer(ptr))\n\t\tcase nwmIPStatsIdentifier:\n\t\tcase nwmIPGStatsIdentifier:\n\t\tcase nwmUDPStatsIdentifier:\n\t\tcase nwmICMPGStatsEntry:\n\t\tcase nwmICMPTStatsEntry:\n\t\tdefault:\n\t\t\treturn nil, errnoErr(EINVAL)\n\t\t}\n\t}\n\tif tcpStats == nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// GetConnectionDetail EZBNMIF4 call\n\tresponseBuffer = [4096]byte{0}\n\tdsa = [18]uint64{0}\n\tbufferAlet, reasonCode = 0, 0\n\tbufferLen, returnValue, returnCode = 4096, 0, 0\n\tnameptr := (*uint32)(unsafe.Pointer(uintptr(0x21c))) // Get jobname of current process\n\tnameptr = (*uint32)(unsafe.Pointer(uintptr(*nameptr + 12)))\n\targv[0] = unsafe.Pointer(uintptr(*nameptr))\n\n\trequest.header.ident = nwmHeaderIdentifier\n\trequest.header.length = uint32(unsafe.Sizeof(request.header))\n\trequest.header.version = nwmCurrentVer\n\trequest.header.nwmType = nwmTCPConnType\n\trequest.header.options = 0x80000000\n\n\trequest.filter.ident = nwmFilterIdentifier\n\n\tvar localSockaddr RawSockaddrAny\n\tsocklen := _Socklen(SizeofSockaddrAny)\n\terr := getsockname(fd, &localSockaddr, &socklen)\n\tif err != nil {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\tif localSockaddr.Addr.Family == AF_INET {\n\t\tlocalSockaddr := (*RawSockaddrInet4)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet4)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET\n\t\tvar i int\n\t\tfor i = 0; i < 4; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 4 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 4; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t} else if localSockaddr.Addr.Family == AF_INET6 {\n\t\tlocalSockaddr := (*RawSockaddrInet6)(unsafe.Pointer(&localSockaddr.Addr))\n\t\tlocalSockFilter := (*RawSockaddrInet6)(unsafe.Pointer(&request.filter.local[0]))\n\t\tlocalSockFilter.Family = AF_INET6\n\t\tvar i int\n\t\tfor i = 0; i < 16; i++ {\n\t\t\tif localSockaddr.Addr[i] != 0 {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif i != 16 {\n\t\t\trequest.filter.flags |= nwmFilterLclAddrMask\n\t\t\tfor i = 0; i < 16; i++ {\n\t\t\t\tlocalSockFilter.Addr[i] = localSockaddr.Addr[i]\n\t\t\t}\n\t\t}\n\t\tif localSockaddr.Port != 0 {\n\t\t\trequest.filter.flags |= nwmFilterLclPortMask\n\t\t\tlocalSockFilter.Port = localSockaddr.Port\n\t\t}\n\t}\n\n\tsvcCall(EZBNMIF4, &argv[0], &dsa[0])\n\n\t// outputDesc field is filled by EZBNMIF4 on success\n\tif returnCode != 0 || request.header.outputDesc.offset == 0 {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Check that EZBNMIF4 returned a nwmConnEntry\n\tconn := (*nwmConnEntry)(unsafe.Pointer(&responseBuffer[request.header.outputDesc.offset]))\n\tif conn.ident != nwmTCPConnIdentifier {\n\t\treturn nil, errnoErr(EINVAL)\n\t}\n\n\t// Copy data from the returned data structures into tcpInfo\n\t// Stats from nwmConnEntry are specific to that connection.\n\t// Stats from nwmTCPStatsEntry are global (to the interface?)\n\t// Fields may not be an exact match. Some fields have no equivalent.\n\tvar tcpinfo TCPInfo\n\ttcpinfo.State = uint8(conn.state)\n\ttcpinfo.Ca_state = 0 // dummy\n\ttcpinfo.Retransmits = uint8(tcpStats.retransSegs)\n\ttcpinfo.Probes = uint8(tcpStats.outWinProbes)\n\ttcpinfo.Backoff = 0 // dummy\n\ttcpinfo.Options = 0 // dummy\n\ttcpinfo.Rto = tcpStats.retransTimeouts\n\ttcpinfo.Ato = tcpStats.outDelayAcks\n\ttcpinfo.Snd_mss = conn.sendMSS\n\ttcpinfo.Rcv_mss = conn.sendMSS // dummy\n\ttcpinfo.Unacked = 0            // dummy\n\ttcpinfo.Sacked = 0             // dummy\n\ttcpinfo.Lost = 0               // dummy\n\ttcpinfo.Retrans = conn.reXmtCount\n\ttcpinfo.Fackets = 0 // dummy\n\ttcpinfo.Last_data_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.lastActivity[0])))\n\ttcpinfo.Last_ack_sent = uint32(*(*uint64)(unsafe.Pointer(&conn.outOldestTime[0])))\n\ttcpinfo.Last_data_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Last_ack_recv = uint32(*(*uint64)(unsafe.Pointer(&conn.inOldestTime[0])))\n\ttcpinfo.Pmtu = conn.sendMSS // dummy, NWMIfRouteMtu is a candidate\n\ttcpinfo.Rcv_ssthresh = conn.ssThresh\n\ttcpinfo.Rtt = conn.roundTripTime\n\ttcpinfo.Rttvar = conn.roundTripVar\n\ttcpinfo.Snd_ssthresh = conn.ssThresh // dummy\n\ttcpinfo.Snd_cwnd = conn.congestionWnd\n\ttcpinfo.Advmss = conn.sendMSS        // dummy\n\ttcpinfo.Reordering = 0               // dummy\n\ttcpinfo.Rcv_rtt = conn.roundTripTime // dummy\n\ttcpinfo.Rcv_space = conn.sendMSS     // dummy\n\ttcpinfo.Total_retrans = conn.reXmtCount\n\n\tsvcUnload(&svcNameTable[svc_EZBNMIF4][0], EZBNMIF4)\n\n\treturn &tcpinfo, nil\n}\n\n// GetsockoptString returns the string value of the socket option opt for the\n// socket associated with fd at the given socket level.\nfunc GetsockoptString(fd, level, opt int) (string, error) {\n\tbuf := make([]byte, 256)\n\tvallen := _Socklen(len(buf))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&buf[0]), &vallen)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn ByteSliceToString(buf[:vallen]), nil\n}\n\nfunc Recvmsg(fd int, p, oob []byte, flags int) (n, oobn int, recvflags int, from Sockaddr, err error) {\n\tvar msg Msghdr\n\tvar rsa RawSockaddrAny\n\tmsg.Name = (*byte)(unsafe.Pointer(&rsa))\n\tmsg.Namelen = SizeofSockaddrAny\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// receive at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = recvmsg(fd, &msg, flags); err != nil {\n\t\treturn\n\t}\n\toobn = int(msg.Controllen)\n\trecvflags = int(msg.Flags)\n\t// source address is only specified if the socket is unconnected\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\t// TODO(neeilan): Remove 0 arg added to get this compiling on z/OS\n\t\tfrom, err = anyToSockaddr(0, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendmsg(fd int, p, oob []byte, to Sockaddr, flags int) (err error) {\n\t_, err = SendmsgN(fd, p, oob, to, flags)\n\treturn\n}\n\nfunc SendmsgN(fd int, p, oob []byte, to Sockaddr, flags int) (n int, err error) {\n\tvar ptr unsafe.Pointer\n\tvar salen _Socklen\n\tif to != nil {\n\t\tvar err error\n\t\tptr, salen, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar msg Msghdr\n\tmsg.Name = (*byte)(unsafe.Pointer(ptr))\n\tmsg.Namelen = int32(salen)\n\tvar iov Iovec\n\tif len(p) > 0 {\n\t\tiov.Base = (*byte)(unsafe.Pointer(&p[0]))\n\t\tiov.SetLen(len(p))\n\t}\n\tvar dummy byte\n\tif len(oob) > 0 {\n\t\t// send at least one normal byte\n\t\tif len(p) == 0 {\n\t\t\tiov.Base = &dummy\n\t\t\tiov.SetLen(1)\n\t\t}\n\t\tmsg.Control = (*byte)(unsafe.Pointer(&oob[0]))\n\t\tmsg.SetControllen(len(oob))\n\t}\n\tmsg.Iov = &iov\n\tmsg.Iovlen = 1\n\tif n, err = sendmsg(fd, &msg, flags); err != nil {\n\t\treturn 0, err\n\t}\n\tif len(oob) > 0 && len(p) == 0 {\n\t\tn = 0\n\t}\n\treturn n, nil\n}\n\nfunc Opendir(name string) (uintptr, error) {\n\tp, err := BytePtrFromString(name)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdir, _, e := syscall_syscall(SYS___OPENDIR_A, uintptr(unsafe.Pointer(p)), 0, 0)\n\truntime.KeepAlive(unsafe.Pointer(p))\n\tif e != 0 {\n\t\terr = errnoErr(e)\n\t}\n\treturn dir, err\n}\n\n// clearsyscall.Errno resets the errno value to 0.\nfunc clearErrno()\n\nfunc Readdir(dir uintptr) (*Dirent, error) {\n\tvar ent Dirent\n\tvar res uintptr\n\t// __readdir_r_a returns errno at the end of the directory stream, rather than 0.\n\t// Therefore to avoid false positives we clear errno before calling it.\n\n\t// TODO(neeilan): Commented this out to get sys/unix compiling on z/OS. Uncomment and fix. Error: \"undefined: clearsyscall\"\n\t//clearsyscall.Errno() // TODO(mundaym): check pre-emption rules.\n\n\te, _, _ := syscall_syscall(SYS___READDIR_R_A, dir, uintptr(unsafe.Pointer(&ent)), uintptr(unsafe.Pointer(&res)))\n\tvar err error\n\tif e != 0 {\n\t\terr = errnoErr(Errno(e))\n\t}\n\tif res == 0 {\n\t\treturn nil, err\n\t}\n\treturn &ent, err\n}\n\nfunc readdir_r(dirp uintptr, entry *direntLE, result **direntLE) (err error) {\n\tr0, _, e1 := syscall_syscall(SYS___READDIR_R_A, dirp, uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tif int64(r0) == -1 {\n\t\terr = errnoErr(Errno(e1))\n\t}\n\treturn\n}\n\nfunc Closedir(dir uintptr) error {\n\t_, _, e := syscall_syscall(SYS_CLOSEDIR, dir, 0, 0)\n\tif e != 0 {\n\t\treturn errnoErr(e)\n\t}\n\treturn nil\n}\n\nfunc Seekdir(dir uintptr, pos int) {\n\t_, _, _ = syscall_syscall(SYS_SEEKDIR, dir, uintptr(pos), 0)\n}\n\nfunc Telldir(dir uintptr) (int, error) {\n\tp, _, e := syscall_syscall(SYS_TELLDIR, dir, 0, 0)\n\tpos := int(p)\n\tif pos == -1 {\n\t\treturn pos, errnoErr(e)\n\t}\n\treturn pos, nil\n}\n\n// FcntlFlock performs a fcntl syscall for the F_GETLK, F_SETLK or F_SETLKW command.\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) error {\n\t// struct flock is packed on z/OS. We can't emulate that in Go so\n\t// instead we pack it here.\n\tvar flock [24]byte\n\t*(*int16)(unsafe.Pointer(&flock[0])) = lk.Type\n\t*(*int16)(unsafe.Pointer(&flock[2])) = lk.Whence\n\t*(*int64)(unsafe.Pointer(&flock[4])) = lk.Start\n\t*(*int64)(unsafe.Pointer(&flock[12])) = lk.Len\n\t*(*int32)(unsafe.Pointer(&flock[20])) = lk.Pid\n\t_, _, errno := syscall_syscall(SYS_FCNTL, fd, uintptr(cmd), uintptr(unsafe.Pointer(&flock)))\n\tlk.Type = *(*int16)(unsafe.Pointer(&flock[0]))\n\tlk.Whence = *(*int16)(unsafe.Pointer(&flock[2]))\n\tlk.Start = *(*int64)(unsafe.Pointer(&flock[4]))\n\tlk.Len = *(*int64)(unsafe.Pointer(&flock[12]))\n\tlk.Pid = *(*int32)(unsafe.Pointer(&flock[20]))\n\tif errno == 0 {\n\t\treturn nil\n\t}\n\treturn errno\n}\n\nfunc Flock(fd int, how int) error {\n\n\tvar flock_type int16\n\tvar fcntl_cmd int\n\n\tswitch how {\n\tcase LOCK_SH | LOCK_NB:\n\t\tflock_type = F_RDLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX | LOCK_NB:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLK\n\tcase LOCK_EX:\n\t\tflock_type = F_WRLCK\n\t\tfcntl_cmd = F_SETLKW\n\tcase LOCK_UN:\n\t\tflock_type = F_UNLCK\n\t\tfcntl_cmd = F_SETLKW\n\tdefault:\n\t}\n\n\tflock := Flock_t{\n\t\tType:   int16(flock_type),\n\t\tWhence: int16(0),\n\t\tStart:  int64(0),\n\t\tLen:    int64(0),\n\t\tPid:    int32(Getppid()),\n\t}\n\n\terr := FcntlFlock(uintptr(fd), fcntl_cmd, &flock)\n\treturn err\n}\n\nfunc Mlock(b []byte) (err error) {\n\t_, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Mlock2(b []byte, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_NONSWAP, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Munlock(b []byte) (err error) {\n\t_, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(SYS___MLOCKALL, _BPX_SWAP, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClockGettime(clockid int32, ts *Timespec) error {\n\n\tvar ticks_per_sec uint32 = 100 //TODO(kenan): value is currently hardcoded; need sysconf() call otherwise\n\tvar nsec_per_sec int64 = 1000000000\n\n\tif ts == nil {\n\t\treturn EFAULT\n\t}\n\tif clockid == CLOCK_REALTIME || clockid == CLOCK_MONOTONIC {\n\t\tvar nanotime int64 = runtime.Nanotime1()\n\t\tts.Sec = nanotime / nsec_per_sec\n\t\tts.Nsec = nanotime % nsec_per_sec\n\t} else if clockid == CLOCK_PROCESS_CPUTIME_ID || clockid == CLOCK_THREAD_CPUTIME_ID {\n\t\tvar tm Tms\n\t\t_, err := Times(&tm)\n\t\tif err != nil {\n\t\t\treturn EFAULT\n\t\t}\n\t\tts.Sec = int64(tm.Utime / ticks_per_sec)\n\t\tts.Nsec = int64(tm.Utime) * nsec_per_sec / int64(ticks_per_sec)\n\t} else {\n\t\treturn EINVAL\n\t}\n\treturn nil\n}\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tfd, err := open(path, O_RDONLY, 0)\n\tdefer Close(fd)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn Fstatfs(fd, stat)\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 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 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// Slice memory layout\n\tvar sl = struct {\n\t\taddr uintptr\n\t\tlen  int\n\t\tcap  int\n\t}{addr, length, length}\n\n\t// Use unsafe to turn sl into a []byte.\n\tb := *(*[]byte)(unsafe.Pointer(&sl))\n\n\t// Register mapping in m and return it.\n\tp := &b[cap(b)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tm.active[p] = b\n\treturn b, nil\n}\n\nfunc (m *mmapper) Munmap(data []byte) (err error) {\n\tif len(data) == 0 || len(data) != cap(data) {\n\t\treturn EINVAL\n\t}\n\n\t// Find the base of the mapping.\n\tp := &data[cap(data)-1]\n\tm.Lock()\n\tdefer m.Unlock()\n\tb := m.active[p]\n\tif b == nil || &b[0] != &data[0] {\n\t\treturn EINVAL\n\t}\n\n\t// Unmap the memory and update m.\n\tif errno := m.munmap(uintptr(unsafe.Pointer(&b[0])), uintptr(len(b))); errno != nil {\n\t\treturn errno\n\t}\n\tdelete(m.active, p)\n\treturn nil\n}\n\nfunc Read(fd int, p []byte) (n int, err error) {\n\tn, err = read(fd, p)\n\tif raceenabled {\n\t\tif n > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), n)\n\t\t}\n\t\tif err == nil {\n\t\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t\t}\n\t}\n\treturn\n}\n\nfunc Write(fd int, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tn, err = write(fd, p)\n\tif raceenabled && n > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), n)\n\t}\n\treturn\n}\n\n// For testing: clients can set this flag to force\n// creation of IPv6 sockets to return EAFNOSUPPORT.\nvar SocketDisableIPv6 bool\n\n// Sockaddr represents a socket address.\ntype Sockaddr interface {\n\tsockaddr() (ptr unsafe.Pointer, len _Socklen, err error) // lowercase; only we can define Sockaddrs\n}\n\n// SockaddrInet4 implements the Sockaddr interface for AF_INET type sockets.\ntype SockaddrInet4 struct {\n\tPort int\n\tAddr [4]byte\n\traw  RawSockaddrInet4\n}\n\n// SockaddrInet6 implements the Sockaddr interface for AF_INET6 type sockets.\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\n// SockaddrUnix implements the Sockaddr interface for AF_UNIX type sockets.\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc Bind(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd int, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc Getpeername(fd int) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif err = getpeername(fd, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\treturn anyToSockaddr(fd, &rsa)\n}\n\nfunc GetsockoptByte(fd, level, opt int) (value byte, err error) {\n\tvar n byte\n\tvallen := _Socklen(1)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc GetsockoptInt(fd, level, opt int) (value int, err error) {\n\tvar n int32\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn int(n), err\n}\n\nfunc GetsockoptInet4Addr(fd, level, opt int) (value [4]byte, err error) {\n\tvallen := _Socklen(4)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&value[0]), &vallen)\n\treturn value, err\n}\n\nfunc GetsockoptIPMreq(fd, level, opt int) (*IPMreq, error) {\n\tvar value IPMreq\n\tvallen := _Socklen(SizeofIPMreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6Mreq(fd, level, opt int) (*IPv6Mreq, error) {\n\tvar value IPv6Mreq\n\tvallen := _Socklen(SizeofIPv6Mreq)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptIPv6MTUInfo(fd, level, opt int) (*IPv6MTUInfo, error) {\n\tvar value IPv6MTUInfo\n\tvallen := _Socklen(SizeofIPv6MTUInfo)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptICMPv6Filter(fd, level, opt int) (*ICMPv6Filter, error) {\n\tvar value ICMPv6Filter\n\tvallen := _Socklen(SizeofICMPv6Filter)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&value), &vallen)\n\treturn &value, err\n}\n\nfunc GetsockoptLinger(fd, level, opt int) (*Linger, error) {\n\tvar linger Linger\n\tvallen := _Socklen(SizeofLinger)\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&linger), &vallen)\n\treturn &linger, err\n}\n\nfunc GetsockoptTimeval(fd, level, opt int) (*Timeval, error) {\n\tvar tv Timeval\n\tvallen := _Socklen(unsafe.Sizeof(tv))\n\terr := getsockopt(fd, level, opt, unsafe.Pointer(&tv), &vallen)\n\treturn &tv, err\n}\n\nfunc GetsockoptUint64(fd, level, opt int) (value uint64, err error) {\n\tvar n uint64\n\tvallen := _Socklen(8)\n\terr = getsockopt(fd, level, opt, unsafe.Pointer(&n), &vallen)\n\treturn n, err\n}\n\nfunc Recvfrom(fd int, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tvar len _Socklen = SizeofSockaddrAny\n\tif n, err = recvfrom(fd, p, flags, &rsa, &len); err != nil {\n\t\treturn\n\t}\n\tif rsa.Addr.Family != AF_UNSPEC {\n\t\tfrom, err = anyToSockaddr(fd, &rsa)\n\t}\n\treturn\n}\n\nfunc Sendto(fd int, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, n, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, flags, ptr, n)\n}\n\nfunc SetsockoptByte(fd, level, opt int, value byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 1)\n}\n\nfunc SetsockoptInt(fd, level, opt int, value int) (err error) {\n\tvar n = int32(value)\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&n), 4)\n}\n\nfunc SetsockoptInet4Addr(fd, level, opt int, value [4]byte) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value[0]), 4)\n}\n\nfunc SetsockoptIPMreq(fd, level, opt int, mreq *IPMreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPMreq)\n}\n\nfunc SetsockoptIPv6Mreq(fd, level, opt int, mreq *IPv6Mreq) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(mreq), SizeofIPv6Mreq)\n}\n\nfunc SetsockoptICMPv6Filter(fd, level, opt int, filter *ICMPv6Filter) error {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(filter), SizeofICMPv6Filter)\n}\n\nfunc SetsockoptLinger(fd, level, opt int, l *Linger) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(l), SizeofLinger)\n}\n\nfunc SetsockoptString(fd, level, opt int, s string) (err error) {\n\tvar p unsafe.Pointer\n\tif len(s) > 0 {\n\t\tp = unsafe.Pointer(&[]byte(s)[0])\n\t}\n\treturn setsockopt(fd, level, opt, p, uintptr(len(s)))\n}\n\nfunc SetsockoptTimeval(fd, level, opt int, tv *Timeval) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(tv), unsafe.Sizeof(*tv))\n}\n\nfunc SetsockoptUint64(fd, level, opt int, value uint64) (err error) {\n\treturn setsockopt(fd, level, opt, unsafe.Pointer(&value), 8)\n}\n\nfunc Socket(domain, typ, proto int) (fd int, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn -1, EAFNOSUPPORT\n\t}\n\tfd, err = socket(domain, typ, proto)\n\treturn\n}\n\nfunc Socketpair(domain, typ, proto int) (fd [2]int, err error) {\n\tvar fdx [2]int32\n\terr = socketpair(domain, typ, proto, &fdx)\n\tif err == nil {\n\t\tfd[0] = int(fdx[0])\n\t\tfd[1] = int(fdx[1])\n\t}\n\treturn\n}\n\nvar ioSync int64\n\nfunc CloseOnExec(fd int) { fcntl(fd, F_SETFD, FD_CLOEXEC) }\n\nfunc SetNonblock(fd int, nonblocking bool) (err error) {\n\tflag, err := fcntl(fd, F_GETFL, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif nonblocking {\n\t\tflag |= O_NONBLOCK\n\t} else {\n\t\tflag &= ^O_NONBLOCK\n\t}\n\t_, err = fcntl(fd, F_SETFL, flag)\n\treturn err\n}\n\n// Exec calls execve(2), which replaces the calling executable in the process\n// tree. argv0 should be the full path to an executable (\"/bin/ls\") and the\n// executable name should also be the first argument in argv ([\"ls\", \"-l\"]).\n// envv are the environment variables that should be passed to the new\n// process ([\"USER=go\", \"PWD=/tmp\"]).\nfunc Exec(argv0 string, argv []string, envv []string) error {\n\treturn syscall.Exec(argv0, argv, envv)\n}\n\nfunc Mount(source string, target string, fstype string, flags uintptr, data string) (err error) {\n\tif needspace := 8 - len(fstype); needspace <= 0 {\n\t\tfstype = fstype[:8]\n\t} else {\n\t\tfstype += \"        \"[:needspace]\n\t}\n\treturn mount_LE(target, source, fstype, uint32(flags), int32(len(data)), data)\n}\n\nfunc Unmount(name string, mtm int) (err error) {\n\t// mountpoint is always a full path and starts with a '/'\n\t// check if input string is not a mountpoint but a filesystem name\n\tif name[0] != '/' {\n\t\treturn unmount(name, mtm)\n\t}\n\t// treat name as mountpoint\n\tb2s := func(arr []byte) string {\n\t\tnulli := bytes.IndexByte(arr, 0)\n\t\tif nulli == -1 {\n\t\t\treturn string(arr)\n\t\t} else {\n\t\t\treturn string(arr[:nulli])\n\t\t}\n\t}\n\tvar buffer struct {\n\t\theader W_Mnth\n\t\tfsinfo [64]W_Mntent\n\t}\n\tfsCount, err := W_Getmntent_A((*byte)(unsafe.Pointer(&buffer)), int(unsafe.Sizeof(buffer)))\n\tif err != nil {\n\t\treturn err\n\t}\n\tif fsCount == 0 {\n\t\treturn EINVAL\n\t}\n\tfor i := 0; i < fsCount; i++ {\n\t\tif b2s(buffer.fsinfo[i].Mountpoint[:]) == name {\n\t\t\terr = unmount(b2s(buffer.fsinfo[i].Fsname[:]), mtm)\n\t\t\tbreak\n\t\t}\n\t}\n\treturn err\n}\n\nfunc fdToPath(dirfd int) (path string, err error) {\n\tvar buffer [1024]byte\n\t// w_ctrl()\n\tret := runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_W_IOCTL<<4,\n\t\t[]uintptr{uintptr(dirfd), 17, 1024, uintptr(unsafe.Pointer(&buffer[0]))})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\t// __e2a_l()\n\t\truntime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___E2A_L<<4,\n\t\t\t[]uintptr{uintptr(unsafe.Pointer(&buffer[0])), uintptr(zb)})\n\t\treturn string(buffer[:zb]), nil\n\t}\n\t// __errno()\n\terrno := int(*(*int32)(unsafe.Pointer(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO<<4,\n\t\t[]uintptr{}))))\n\t// __errno2()\n\terrno2 := int(runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS___ERRNO2<<4,\n\t\t[]uintptr{}))\n\t// strerror_r()\n\tret = runtime.CallLeFuncByPtr(runtime.XplinkLibvec+SYS_STRERROR_R<<4,\n\t\t[]uintptr{uintptr(errno), uintptr(unsafe.Pointer(&buffer[0])), 1024})\n\tif ret == 0 {\n\t\tzb := bytes.IndexByte(buffer[:], 0)\n\t\tif zb == -1 {\n\t\t\tzb = len(buffer)\n\t\t}\n\t\treturn \"\", fmt.Errorf(\"%s (errno2=0x%x)\", buffer[:zb], errno2)\n\t} else {\n\t\treturn \"\", fmt.Errorf(\"fdToPath errno %d (errno2=0x%x)\", errno, errno2)\n\t}\n}\n\nfunc direntLeToDirentUnix(dirent *direntLE, dir uintptr, path string) (Dirent, error) {\n\tvar d Dirent\n\n\td.Ino = uint64(dirent.Ino)\n\toffset, err := Telldir(dir)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Off = int64(offset)\n\ts := string(bytes.Split(dirent.Name[:], []byte{0})[0])\n\tcopy(d.Name[:], s)\n\n\td.Reclen = uint16(24 + len(d.NameString()))\n\tvar st Stat_t\n\tpath = path + \"/\" + s\n\terr = Lstat(path, &st)\n\tif err != nil {\n\t\treturn d, err\n\t}\n\n\td.Type = uint8(st.Mode >> 24)\n\treturn d, err\n}\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\t// Simulation of Getdirentries port from the Darwin implementation.\n\t// COMMENTS FROM DARWIN:\n\t// It's not the full required semantics, but should handle the case\n\t// of calling Getdirentries or ReadDirent repeatedly.\n\t// It won't handle assigning the results of lseek to *basep, or handle\n\t// the directory being edited underfoot.\n\n\tskip, err := Seek(fd, 0, 1 /* SEEK_CUR */)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\t// Get path from fd to avoid unavailable call (fdopendir)\n\tpath, err := fdToPath(fd)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\td, err := Opendir(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tdefer Closedir(d)\n\n\tvar cnt int64\n\tfor {\n\t\tvar entryLE direntLE\n\t\tvar entrypLE *direntLE\n\t\te := readdir_r(d, &entryLE, &entrypLE)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\t\tif entrypLE == nil {\n\t\t\tbreak\n\t\t}\n\t\tif skip > 0 {\n\t\t\tskip--\n\t\t\tcnt++\n\t\t\tcontinue\n\t\t}\n\n\t\t// Dirent on zos has a different structure\n\t\tentry, e := direntLeToDirentUnix(&entryLE, d, path)\n\t\tif e != nil {\n\t\t\treturn n, e\n\t\t}\n\n\t\treclen := int(entry.Reclen)\n\t\tif reclen > len(buf) {\n\t\t\t// Not enough room. Return for now.\n\t\t\t// The counter will let us know where we should start up again.\n\t\t\t// Note: this strategy for suspending in the middle and\n\t\t\t// restarting is O(n^2) in the length of the directory. Oh well.\n\t\t\tbreak\n\t\t}\n\n\t\t// Copy entry into return buffer.\n\t\ts := unsafe.Slice((*byte)(unsafe.Pointer(&entry)), reclen)\n\t\tcopy(buf, s)\n\n\t\tbuf = buf[reclen:]\n\t\tn += reclen\n\t\tcnt++\n\t}\n\t// Set the seek offset of the input fd to record\n\t// how many files we've already returned.\n\t_, err = Seek(fd, cnt, 0 /* SEEK_SET */)\n\tif err != nil {\n\t\treturn n, err\n\t}\n\n\treturn n, nil\n}\n\nfunc ReadDirent(fd int, buf []byte) (n int, err error) {\n\tvar base = (*uintptr)(unsafe.Pointer(new(uint64)))\n\treturn Getdirentries(fd, buf, base)\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"
  },
  {
    "path": "gossh/sys/unix/sysvshm_linux.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build linux\n\npackage unix\n\nimport \"runtime\"\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\tif runtime.GOARCH == \"arm\" ||\n\t\truntime.GOARCH == \"mips64\" || runtime.GOARCH == \"mips64le\" {\n\t\tcmd |= ipc_64\n\t}\n\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "gossh/sys/unix/sysvshm_unix.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build (darwin && !ios) || linux\n\npackage unix\n\nimport \"unsafe\"\n\n// SysvShmAttach attaches the Sysv shared memory segment associated with the\n// shared memory identifier id.\nfunc SysvShmAttach(id int, addr uintptr, flag int) ([]byte, error) {\n\taddr, errno := shmat(id, addr, flag)\n\tif errno != nil {\n\t\treturn nil, errno\n\t}\n\n\t// Retrieve the size of the shared memory to enable slice creation\n\tvar info SysvShmDesc\n\n\t_, err := SysvShmCtl(id, IPC_STAT, &info)\n\tif err != nil {\n\t\t// release the shared memory if we can't find the size\n\n\t\t// ignoring error from shmdt as there's nothing sensible to return here\n\t\tshmdt(addr)\n\t\treturn nil, err\n\t}\n\n\t// Use unsafe to convert addr into a []byte.\n\tb := unsafe.Slice((*byte)(unsafe.Pointer(addr)), int(info.Segsz))\n\treturn b, nil\n}\n\n// SysvShmDetach unmaps the shared memory slice returned from SysvShmAttach.\n//\n// It is not safe to use the slice after calling this function.\nfunc SysvShmDetach(data []byte) error {\n\tif len(data) == 0 {\n\t\treturn EINVAL\n\t}\n\n\treturn shmdt(uintptr(unsafe.Pointer(&data[0])))\n}\n\n// SysvShmGet returns the Sysv shared memory identifier associated with key.\n// If the IPC_CREAT flag is specified a new segment is created.\nfunc SysvShmGet(key, size, flag int) (id int, err error) {\n\treturn shmget(key, size, flag)\n}\n"
  },
  {
    "path": "gossh/sys/unix/sysvshm_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build darwin && !ios\n\npackage unix\n\n// SysvShmCtl performs control operations on the shared memory segment\n// specified by id.\nfunc SysvShmCtl(id, cmd int, desc *SysvShmDesc) (result int, err error) {\n\treturn shmctl(id, cmd, desc)\n}\n"
  },
  {
    "path": "gossh/sys/unix/timestruct.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage unix\n\nimport \"time\"\n\n// TimespecToNsec returns the time stored in ts as nanoseconds.\nfunc TimespecToNsec(ts Timespec) int64 { return ts.Nano() }\n\n// NsecToTimespec converts a number of nanoseconds into a Timespec.\nfunc NsecToTimespec(nsec int64) Timespec {\n\tsec := nsec / 1e9\n\tnsec = nsec % 1e9\n\tif nsec < 0 {\n\t\tnsec += 1e9\n\t\tsec--\n\t}\n\treturn setTimespec(sec, nsec)\n}\n\n// TimeToTimespec converts t into a Timespec.\n// On some 32-bit systems the range of valid Timespec values are smaller\n// than that of time.Time values.  So if t is out of the valid range of\n// Timespec, it returns a zero Timespec and ERANGE.\nfunc TimeToTimespec(t time.Time) (Timespec, error) {\n\tsec := t.Unix()\n\tnsec := int64(t.Nanosecond())\n\tts := setTimespec(sec, nsec)\n\n\t// Currently all targets have either int32 or int64 for Timespec.Sec.\n\t// If there were a new target with floating point type for it, we have\n\t// to consider the rounding error.\n\tif int64(ts.Sec) != sec {\n\t\treturn Timespec{}, ERANGE\n\t}\n\treturn ts, nil\n}\n\n// TimevalToNsec returns the time stored in tv as nanoseconds.\nfunc TimevalToNsec(tv Timeval) int64 { return tv.Nano() }\n\n// NsecToTimeval converts a number of nanoseconds into a Timeval.\nfunc NsecToTimeval(nsec int64) Timeval {\n\tnsec += 999 // round up to microsecond\n\tusec := nsec % 1e9 / 1e3\n\tsec := nsec / 1e9\n\tif usec < 0 {\n\t\tusec += 1e6\n\t\tsec--\n\t}\n\treturn setTimeval(sec, usec)\n}\n\n// Unix returns the time stored in ts as seconds plus nanoseconds.\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\n// Unix returns the time stored in tv as seconds plus nanoseconds.\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\n// Nano returns the time stored in ts as nanoseconds.\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\n// Nano returns the time stored in tv as nanoseconds.\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "gossh/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//go:build ignore && 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\tSizeofIovec            = C.sizeof_struct_iovec\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": "gossh/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//go: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 1\n#define _DARWIN_USE_64_BIT_INODE\n#include <dirent.h>\n#include <fcntl.h>\n#include <poll.h>\n#include <stdint.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/ipc.h>\n#include <sys/kern_control.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/shm.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/stat.h>\n#include <sys/sysctl.h>\n#include <sys/time.h>\n#include <sys/types.h>\n#include <sys/ucred.h>\n#include <sys/uio.h>\n#include <sys/un.h>\n#include <sys/utsname.h>\n#include <sys/wait.h>\n#include <sys/vsock.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#if defined(__x86_64__)\ntypedef struct stat64 stat_t;\ntypedef struct statfs64 statfs_t;\n#else // __arm__\ntypedef struct stat stat_t;\ntypedef struct statfs statfs_t;\n#endif\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.stat_t\n\ntype Statfs_t C.statfs_t\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\ntype Attrlist C.struct_attrlist\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 RawSockaddrCtl C.struct_sockaddr_ctl\n\ntype RawSockaddrVM C.struct_sockaddr_vm\n\ntype XVSockPCB C.struct_xvsockpcb\n\ntype XSocket C.struct_xsocket\n\ntype XSocket64 C.struct_xsocket64\n\ntype XSockbuf C.struct_xsockbuf\n\ntype XVSockPgen C.struct_xvsockpgen\n\ntype _Socklen C.socklen_t\n\ntype Xucred C.struct_xucred\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 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\ntype TCPConnectionInfo C.struct_tcp_connection_info\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\tSizeofSockaddrCtl       = C.sizeof_struct_sockaddr_ctl\n\tSizeofSockaddrVM        = C.sizeof_struct_sockaddr_vm\n\tSizeofXvsockpcb         = C.sizeof_struct_xvsockpcb\n\tSizeofXSocket           = C.sizeof_struct_xsocket\n\tSizeofXSockbuf          = C.sizeof_struct_xsockbuf\n\tSizeofXVSockPgen        = C.sizeof_struct_xvsockpgen\n\tSizeofXucred            = C.sizeof_struct_xucred\n\tSizeofLinger            = C.sizeof_struct_linger\n\tSizeofIovec             = C.sizeof_struct_iovec\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\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\tSizeofTCPConnectionInfo = C.sizeof_struct_tcp_connection_info\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\tAT_EACCESS          = C.AT_EACCESS\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\n// ctl_info\n\ntype CtlInfo C.struct_ctl_info\n\n// KinfoProc\n\nconst SizeofKinfoProc = C.sizeof_struct_kinfo_proc\n\ntype Eproc C.struct_eproc\n\ntype ExternProc C.struct_extern_proc\n\ntype Itimerval C.struct_itimerval\n\ntype KinfoProc C.struct_kinfo_proc\n\ntype Vmspace C.struct_vmspace\n\ntype Pcred C.struct__pcred\n\ntype Ucred C.struct__ucred\n\n// shm\n\ntype SysvIpcPerm C.struct_ipc_perm\ntype SysvShmDesc C.struct_shmid_ds\n\nconst (\n\tIPC_CREAT   = C.IPC_CREAT\n\tIPC_EXCL    = C.IPC_EXCL\n\tIPC_NOWAIT  = C.IPC_NOWAIT\n\tIPC_PRIVATE = C.IPC_PRIVATE\n)\n\nconst (\n\tIPC_RMID = C.IPC_RMID\n\tIPC_SET  = C.IPC_SET\n\tIPC_STAT = C.IPC_STAT\n)\n\nconst (\n\tSHM_RDONLY = C.SHM_RDONLY\n\tSHM_RND    = C.SHM_RND\n)\n"
  },
  {
    "path": "gossh/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//go: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\tSizeofIovec            = C.sizeof_struct_iovec\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\tAT_REMOVEDIR        = C.AT_REMOVEDIR\n\tAT_EACCESS          = C.AT_EACCESS\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\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": "gossh/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//go: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#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/ucred.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\ntype Time_t C.time_t\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 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// 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 Xucred C.struct_xucred\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\tSizeofXucred           = C.sizeof_struct_xucred\n\tSizeofLinger           = C.sizeof_struct_linger\n\tSizeofIovec            = C.sizeof_struct_iovec\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\nconst (\n\tPTRACE_TRACEME = C.PT_TRACE_ME\n\tPTRACE_CONT    = C.PT_CONTINUE\n\tPTRACE_KILL    = C.PT_KILL\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\n// FpExtendedPrecision is only defined for use in a member of FpReg on freebsd/arm.\ntype FpExtendedPrecision C.struct_fp_extended_precision\n\ntype PtraceIoDesc C.struct_ptrace_io_desc\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\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_EACCESS          = C.AT_EACCESS\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\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": "gossh/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//go: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 <uvm/uvm_extern.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\tSizeofIovec            = C.sizeof_struct_iovec\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_EACCESS          = C.AT_EACCESS\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\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// Uvmexp\n\nconst SizeofUvmexp = C.sizeof_struct_uvmexp_sysctl\n\ntype Uvmexp C.struct_uvmexp_sysctl\n\n// Clockinfo\n\nconst SizeofClockinfo = C.sizeof_struct_clockinfo\n\ntype Clockinfo C.struct_clockinfo\n"
  },
  {
    "path": "gossh/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//go: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\tSizeofIovec            = C.sizeof_struct_iovec\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\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_EACCESS          = C.AT_EACCESS\n\tAT_SYMLINK_NOFOLLOW = C.AT_SYMLINK_NOFOLLOW\n\tAT_SYMLINK_FOLLOW   = C.AT_SYMLINK_FOLLOW\n\tAT_REMOVEDIR        = C.AT_REMOVEDIR\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": "gossh/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//go: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/port.h>\n#include <sys/resource.h>\n#include <sys/select.h>\n#include <sys/signal.h>\n#include <sys/socket.h>\n#include <sys/sockio.h>\n#include <sys/stat.h>\n#include <sys/statvfs.h>\n#include <sys/stropts.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// Solaris and the major illumos distributions ship a 3rd party tun/tap driver\n// from https://github.com/kaizawa/tuntap\n// It supports a pair of IOCTLs defined at\n// https://github.com/kaizawa/tuntap/blob/master/if_tun.h#L91-L93\n#define TUNNEWPPA\t(('T'<<16) | 0x0001)\n#define TUNSETPPA\t(('T'<<16) | 0x0002)\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\tSizeofIovec            = C.sizeof_struct_iovec\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\n// Event Ports\n\ntype fileObj C.struct_file_obj\n\ntype portEvent C.struct_port_event\n\nconst (\n\tPORT_SOURCE_AIO    = C.PORT_SOURCE_AIO\n\tPORT_SOURCE_TIMER  = C.PORT_SOURCE_TIMER\n\tPORT_SOURCE_USER   = C.PORT_SOURCE_USER\n\tPORT_SOURCE_FD     = C.PORT_SOURCE_FD\n\tPORT_SOURCE_ALERT  = C.PORT_SOURCE_ALERT\n\tPORT_SOURCE_MQ     = C.PORT_SOURCE_MQ\n\tPORT_SOURCE_FILE   = C.PORT_SOURCE_FILE\n\tPORT_ALERT_SET     = C.PORT_ALERT_SET\n\tPORT_ALERT_UPDATE  = C.PORT_ALERT_UPDATE\n\tPORT_ALERT_INVALID = C.PORT_ALERT_INVALID\n\tFILE_ACCESS        = C.FILE_ACCESS\n\tFILE_MODIFIED      = C.FILE_MODIFIED\n\tFILE_ATTRIB        = C.FILE_ATTRIB\n\tFILE_TRUNC         = C.FILE_TRUNC\n\tFILE_NOFOLLOW      = C.FILE_NOFOLLOW\n\tFILE_DELETE        = C.FILE_DELETE\n\tFILE_RENAME_TO     = C.FILE_RENAME_TO\n\tFILE_RENAME_FROM   = C.FILE_RENAME_FROM\n\tUNMOUNTED          = C.UNMOUNTED\n\tMOUNTEDOVER        = C.MOUNTEDOVER\n\tFILE_EXCEPTION     = C.FILE_EXCEPTION\n)\n\n// STREAMS and Tun\n\nconst (\n\tTUNNEWPPA = C.TUNNEWPPA\n\tTUNSETPPA = C.TUNSETPPA\n\n\t// sys/stropts.h:\n\tI_STR     = C.I_STR\n\tI_POP     = C.I_POP\n\tI_PUSH    = C.I_PUSH\n\tI_LINK    = C.I_LINK\n\tI_UNLINK  = C.I_UNLINK\n\tI_PLINK   = C.I_PLINK\n\tI_PUNLINK = C.I_PUNLINK\n\n\t// sys/sockio.h:\n\tIF_UNITSEL = C.IF_UNITSEL\n)\n\ntype strbuf C.struct_strbuf\n\ntype Strioctl C.struct_strioctl\n\ntype Lifreq C.struct_lifreq\n"
  },
  {
    "path": "gossh/sys/unix/unveil_openbsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage unix\n\nimport \"fmt\"\n\n// Unveil implements the unveil syscall.\n// For more information see unveil(2).\n// Note that the special case of blocking further\n// unveil calls is handled by UnveilBlock.\nfunc Unveil(path string, flags string) error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\tpathPtr, err := BytePtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tflagsPtr, err := BytePtrFromString(flags)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn unveil(pathPtr, flagsPtr)\n}\n\n// UnveilBlock blocks future unveil calls.\n// For more information see unveil(2).\nfunc UnveilBlock() error {\n\tif err := supportsUnveil(); err != nil {\n\t\treturn err\n\t}\n\treturn unveil(nil, nil)\n}\n\n// supportsUnveil checks for availability of the unveil(2) system call based\n// on the running OpenBSD version.\nfunc supportsUnveil() error {\n\tmaj, min, err := majmin()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t// unveil is not available before 6.4\n\tif maj < 6 || (maj == 6 && min <= 3) {\n\t\treturn fmt.Errorf(\"cannot call Unveil on OpenBSD %d.%d\", maj, min)\n\t}\n\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/xattr_bsd.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build freebsd || netbsd\n\npackage unix\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n)\n\n// Derive extattr namespace and attribute name\n\nfunc xattrnamespace(fullattr string) (ns int, attr string, err error) {\n\ts := strings.IndexByte(fullattr, '.')\n\tif s == -1 {\n\t\treturn -1, \"\", ENOATTR\n\t}\n\n\tnamespace := fullattr[0:s]\n\tattr = fullattr[s+1:]\n\n\tswitch namespace {\n\tcase \"user\":\n\t\treturn EXTATTR_NAMESPACE_USER, attr, nil\n\tcase \"system\":\n\t\treturn EXTATTR_NAMESPACE_SYSTEM, attr, nil\n\tdefault:\n\t\treturn -1, \"\", ENOATTR\n\t}\n}\n\nfunc initxattrdest(dest []byte, idx int) (d unsafe.Pointer) {\n\tif len(dest) > idx {\n\t\treturn unsafe.Pointer(&dest[idx])\n\t}\n\tif dest != nil {\n\t\t// extattr_get_file and extattr_list_file treat NULL differently from\n\t\t// a non-NULL pointer of length zero. Preserve the property of nilness,\n\t\t// even if we can't use dest directly.\n\t\treturn unsafe.Pointer(&_zero)\n\t}\n\treturn nil\n}\n\n// FreeBSD and NetBSD implement their own syscalls to handle extended attributes\n\nfunc Getxattr(file string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFile(file, nsid, a, uintptr(d), destsize)\n}\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetFd(fd, nsid, a, uintptr(d), destsize)\n}\n\nfunc Lgetxattr(link string, attr string, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsize := len(dest)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn -1, err\n\t}\n\n\treturn ExtattrGetLink(link, nsid, a, uintptr(d), destsize)\n}\n\n// flags are unused on FreeBSD\n\nfunc Fsetxattr(fd int, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFd(fd, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Setxattr(file string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetFile(file, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Lsetxattr(link string, attr string, data []byte, flags int) (err error) {\n\tvar d unsafe.Pointer\n\tif len(data) > 0 {\n\t\td = unsafe.Pointer(&data[0])\n\t}\n\tdatasiz := len(data)\n\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\t_, err = ExtattrSetLink(link, nsid, a, uintptr(d), datasiz)\n\treturn\n}\n\nfunc Removexattr(file string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFile(file, nsid, a)\n\treturn\n}\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteFd(fd, nsid, a)\n\treturn\n}\n\nfunc Lremovexattr(link string, attr string) (err error) {\n\tnsid, a, err := xattrnamespace(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\n\terr = ExtattrDeleteLink(link, nsid, a)\n\treturn\n}\n\nfunc Listxattr(file string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\t// FreeBSD won't allow you to list xattrs from multiple namespaces\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := ListxattrNS(file, nsid, dest[pos:])\n\n\t\t/* Errors accessing system attrs are ignored so that\n\t\t * we can implement the Linux-like behavior of omitting errors that\n\t\t * we don't have read permissions on\n\t\t *\n\t\t * Linux will still error if we ask for user attributes on a file that\n\t\t * we don't have read permissions on, so don't ignore those errors\n\t\t */\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc ListxattrNS(file string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFile(file, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := FlistxattrNS(fd, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc FlistxattrNS(fd int, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListFd(fd, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n\nfunc Llistxattr(link string, dest []byte) (sz int, err error) {\n\tdestsiz := len(dest)\n\n\ts, pos := 0, 0\n\tfor _, nsid := range [...]int{EXTATTR_NAMESPACE_USER, EXTATTR_NAMESPACE_SYSTEM} {\n\t\tstmp, e := LlistxattrNS(link, nsid, dest[pos:])\n\n\t\tif e != nil {\n\t\t\tif e == EPERM && nsid != EXTATTR_NAMESPACE_USER {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\treturn s, e\n\t\t}\n\n\t\ts += stmp\n\t\tpos = s\n\t\tif pos > destsiz {\n\t\t\tpos = destsiz\n\t\t}\n\t}\n\n\treturn s, nil\n}\n\nfunc LlistxattrNS(link string, nsid int, dest []byte) (sz int, err error) {\n\td := initxattrdest(dest, 0)\n\tdestsiz := len(dest)\n\n\ts, e := ExtattrListLink(link, nsid, uintptr(d), destsiz)\n\tif e != nil {\n\t\treturn 0, err\n\t}\n\n\treturn s, nil\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_aix_ppc.go",
    "content": "// mkerrors.sh -maix32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\n// Created by cgo -godefs - DO NOT EDIT\n// cgo -godefs -- -maix32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3ff796dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0x5\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x20\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3ff796bb\n\tSIOCGIFCONFGLOB               = -0x3ff79670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0x80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0x80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0x80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0x80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0x80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0x8004747e\n\tTIOCLBIS                      = 0x8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0x8004747d\n\tTIOCMBIC                      = 0x8004746b\n\tTIOCMBIS                      = 0x8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0x80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0x80047404\n\tTIOCMSET                      = 0x8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0x80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0x80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0x80067411\n\tTIOCSETD                      = 0x80047401\n\tTIOCSETN                      = 0x8006740a\n\tTIOCSETP                      = 0x80067409\n\tTIOCSLTC                      = 0x80067475\n\tTIOCSPGRP                     = 0x80047476\n\tTIOCSSIZE                     = 0x80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0x80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0x80087467\n\tTIOCUCNTL                     = 0x80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0x3f)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGKAP\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGSAK\", \"secure attention\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_aix_ppc64.go",
    "content": "// mkerrors.sh -maix64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -maix64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                  = 0x10\n\tAF_BYPASS                     = 0x19\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x18\n\tAF_INTF                       = 0x14\n\tAF_ISO                        = 0x7\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x12\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x1e\n\tAF_NDD                        = 0x17\n\tAF_NETWARE                    = 0x16\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x7\n\tAF_PUP                        = 0x4\n\tAF_RIF                        = 0x15\n\tAF_ROUTE                      = 0x11\n\tAF_SNA                        = 0xb\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tALTWERASE                     = 0x400000\n\tARPHRD_802_3                  = 0x6\n\tARPHRD_802_5                  = 0x6\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FDDI                   = 0x1\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB38400                        = 0xf\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB9600                         = 0xd\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x1000\n\tBSDLY                         = 0x1000\n\tCAP_AACCT                     = 0x6\n\tCAP_ARM_APPLICATION           = 0x5\n\tCAP_BYPASS_RAC_VMM            = 0x3\n\tCAP_CLEAR                     = 0x0\n\tCAP_CREDENTIALS               = 0x7\n\tCAP_EFFECTIVE                 = 0x1\n\tCAP_EWLM_AGENT                = 0x4\n\tCAP_INHERITABLE               = 0x2\n\tCAP_MAXIMUM                   = 0x7\n\tCAP_NUMA_ATTACH               = 0x2\n\tCAP_PERMITTED                 = 0x3\n\tCAP_PROPAGATE                 = 0x1\n\tCAP_PROPOGATE                 = 0x1\n\tCAP_SET                       = 0x1\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_MONOTONIC               = 0xa\n\tCLOCK_PROCESS_CPUTIME_ID      = 0xb\n\tCLOCK_REALTIME                = 0x9\n\tCLOCK_THREAD_CPUTIME_ID       = 0xc\n\tCR0                           = 0x0\n\tCR1                           = 0x100\n\tCR2                           = 0x200\n\tCR3                           = 0x300\n\tCRDLY                         = 0x300\n\tCREAD                         = 0x80\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIOCGIFCONF                  = -0x3fef96dc\n\tCSIZE                         = 0x30\n\tCSMAP_DIR                     = \"/usr/lib/nls/csmap/\"\n\tCSTART                        = '\\021'\n\tCSTOP                         = '\\023'\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x20000\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x80000\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x40000\n\tECH_ICMPID                    = 0x2\n\tETHERNET_CSMACD               = 0x6\n\tEVENP                         = 0x80\n\tEXCONTINUE                    = 0x0\n\tEXDLOK                        = 0x3\n\tEXIO                          = 0x2\n\tEXPGIO                        = 0x0\n\tEXRESUME                      = 0x2\n\tEXRETURN                      = 0x1\n\tEXSIG                         = 0x4\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tEXTRAP                        = 0x1\n\tEYEC_RTENTRYA                 = 0x257274656e747241\n\tEYEC_RTENTRYF                 = 0x257274656e747246\n\tE_ACC                         = 0x0\n\tFD_CLOEXEC                    = 0x1\n\tFD_SETSIZE                    = 0xfffe\n\tFF0                           = 0x0\n\tFF1                           = 0x2000\n\tFFDLY                         = 0x2000\n\tFLUSHBAND                     = 0x40\n\tFLUSHLOW                      = 0x8\n\tFLUSHO                        = 0x100000\n\tFLUSHR                        = 0x1\n\tFLUSHRW                       = 0x3\n\tFLUSHW                        = 0x2\n\tF_CLOSEM                      = 0xa\n\tF_DUP2FD                      = 0xe\n\tF_DUPFD                       = 0x0\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xb\n\tF_GETLK64                     = 0xb\n\tF_GETOWN                      = 0x8\n\tF_LOCK                        = 0x1\n\tF_OK                          = 0x0\n\tF_RDLCK                       = 0x1\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0xc\n\tF_SETLK64                     = 0xc\n\tF_SETLKW                      = 0xd\n\tF_SETLKW64                    = 0xd\n\tF_SETOWN                      = 0x9\n\tF_TEST                        = 0x3\n\tF_TLOCK                       = 0x2\n\tF_TSTLK                       = 0xf\n\tF_ULOCK                       = 0x0\n\tF_UNLCK                       = 0x3\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x26\n\tICMP6_SEC_SEND_DEL            = 0x46\n\tICMP6_SEC_SEND_GET            = 0x47\n\tICMP6_SEC_SEND_SET            = 0x44\n\tICMP6_SEC_SEND_SET_CGA_ADDR   = 0x45\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x200000\n\tIFA_FIRSTALIAS                = 0x2000\n\tIFA_ROUTE                     = 0x1\n\tIFF_64BIT                     = 0x4000000\n\tIFF_ALLCAST                   = 0x20000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_BPF                       = 0x8000000\n\tIFF_BRIDGE                    = 0x40000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x80c52\n\tIFF_CHECKSUM_OFFLOAD          = 0x10000000\n\tIFF_D1                        = 0x8000\n\tIFF_D2                        = 0x4000\n\tIFF_D3                        = 0x2000\n\tIFF_D4                        = 0x1000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEVHEALTH                 = 0x4000\n\tIFF_DO_HW_LOOPBACK            = 0x10000\n\tIFF_GROUP_ROUTING             = 0x2000000\n\tIFF_IFBUFMGT                  = 0x800000\n\tIFF_LINK0                     = 0x100000\n\tIFF_LINK1                     = 0x200000\n\tIFF_LINK2                     = 0x400000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x80000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOECHO                    = 0x800\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_OACTIVE                   = 0x400\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PROMISC                   = 0x100\n\tIFF_PSEG                      = 0x40000000\n\tIFF_RUNNING                   = 0x40\n\tIFF_SIMPLEX                   = 0x800\n\tIFF_SNAP                      = 0x8000\n\tIFF_TCP_DISABLE_CKSUM         = 0x20000000\n\tIFF_TCP_NOCKSUM               = 0x1000000\n\tIFF_UP                        = 0x1\n\tIFF_VIPA                      = 0x80000000\n\tIFNAMSIZ                      = 0x10\n\tIFO_FLUSH                     = 0x1\n\tIFT_1822                      = 0x2\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_CLUSTER                   = 0x3e\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FCS                       = 0x3a\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_GIFTUNNEL                 = 0x3c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HF                        = 0x3d\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SN                        = 0x38\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_SP                        = 0x39\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_TUNNEL                    = 0x3b\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_VIPA                      = 0x37\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x10000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_USE                        = 0x1\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_BIP                   = 0x53\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_GIF                   = 0x8c\n\tIPPROTO_GRE                   = 0x2f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPIP                  = 0x4\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_LOCAL                 = 0x3f\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_MH                    = 0x87\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_QOS                   = 0x2d\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_TP                    = 0x1d\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADDRFORM                 = 0x16\n\tIPV6_ADDR_PREFERENCES         = 0x4a\n\tIPV6_ADD_MEMBERSHIP           = 0xc\n\tIPV6_AIXRAWSOCKET             = 0x39\n\tIPV6_CHECKSUM                 = 0x27\n\tIPV6_DONTFRAG                 = 0x2d\n\tIPV6_DROP_MEMBERSHIP          = 0xd\n\tIPV6_DSTOPTS                  = 0x36\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffffff\n\tIPV6_FLOWINFO_PRIFLOW         = 0xfffffff\n\tIPV6_FLOWINFO_PRIORITY        = 0xf000000\n\tIPV6_FLOWINFO_SRFLAG          = 0x10000000\n\tIPV6_FLOWINFO_VERSION         = 0xf0000000\n\tIPV6_HOPLIMIT                 = 0x28\n\tIPV6_HOPOPTS                  = 0x34\n\tIPV6_JOIN_GROUP               = 0xc\n\tIPV6_LEAVE_GROUP              = 0xd\n\tIPV6_MIPDSTOPTS               = 0x36\n\tIPV6_MULTICAST_HOPS           = 0xa\n\tIPV6_MULTICAST_IF             = 0x9\n\tIPV6_MULTICAST_LOOP           = 0xb\n\tIPV6_NEXTHOP                  = 0x30\n\tIPV6_NOPROBE                  = 0x1c\n\tIPV6_PATHMTU                  = 0x2e\n\tIPV6_PKTINFO                  = 0x21\n\tIPV6_PKTOPTIONS               = 0x24\n\tIPV6_PRIORITY_10              = 0xa000000\n\tIPV6_PRIORITY_11              = 0xb000000\n\tIPV6_PRIORITY_12              = 0xc000000\n\tIPV6_PRIORITY_13              = 0xd000000\n\tIPV6_PRIORITY_14              = 0xe000000\n\tIPV6_PRIORITY_15              = 0xf000000\n\tIPV6_PRIORITY_8               = 0x8000000\n\tIPV6_PRIORITY_9               = 0x9000000\n\tIPV6_PRIORITY_BULK            = 0x4000000\n\tIPV6_PRIORITY_CONTROL         = 0x7000000\n\tIPV6_PRIORITY_FILLER          = 0x1000000\n\tIPV6_PRIORITY_INTERACTIVE     = 0x6000000\n\tIPV6_PRIORITY_RESERVED1       = 0x3000000\n\tIPV6_PRIORITY_RESERVED2       = 0x5000000\n\tIPV6_PRIORITY_UNATTENDED      = 0x2000000\n\tIPV6_PRIORITY_UNCHARACTERIZED = 0x0\n\tIPV6_RECVDSTOPTS              = 0x38\n\tIPV6_RECVHOPLIMIT             = 0x29\n\tIPV6_RECVHOPOPTS              = 0x35\n\tIPV6_RECVHOPS                 = 0x22\n\tIPV6_RECVIF                   = 0x1e\n\tIPV6_RECVPATHMTU              = 0x2f\n\tIPV6_RECVPKTINFO              = 0x23\n\tIPV6_RECVRTHDR                = 0x33\n\tIPV6_RECVSRCRT                = 0x1d\n\tIPV6_RECVTCLASS               = 0x2a\n\tIPV6_RTHDR                    = 0x32\n\tIPV6_RTHDRDSTOPTS             = 0x37\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_RTHDR_TYPE_2             = 0x2\n\tIPV6_SENDIF                   = 0x1f\n\tIPV6_SRFLAG_LOOSE             = 0x0\n\tIPV6_SRFLAG_STRICT            = 0x10000000\n\tIPV6_TCLASS                   = 0x2b\n\tIPV6_TOKEN_LENGTH             = 0x40\n\tIPV6_UNICAST_HOPS             = 0x4\n\tIPV6_USE_MIN_MTU              = 0x2c\n\tIPV6_V6ONLY                   = 0x25\n\tIPV6_VERSION                  = 0x60000000\n\tIP_ADDRFORM                   = 0x16\n\tIP_ADD_MEMBERSHIP             = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x3c\n\tIP_BLOCK_SOURCE               = 0x3a\n\tIP_BROADCAST_IF               = 0x10\n\tIP_CACHE_LINE_SIZE            = 0x80\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPMODE                   = 0x11\n\tIP_DONTFRAG                   = 0x19\n\tIP_DROP_MEMBERSHIP            = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x3d\n\tIP_FINDPMTU                   = 0x1a\n\tIP_HDRINCL                    = 0x2\n\tIP_INC_MEMBERSHIPS            = 0x14\n\tIP_INIT_MEMBERSHIP            = 0x14\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_HOPS             = 0xa\n\tIP_MULTICAST_IF               = 0x9\n\tIP_MULTICAST_LOOP             = 0xb\n\tIP_MULTICAST_TTL              = 0xa\n\tIP_OPT                        = 0x1b\n\tIP_OPTIONS                    = 0x1\n\tIP_PMTUAGE                    = 0x1b\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x14\n\tIP_RECVIFINFO                 = 0xf\n\tIP_RECVINTERFACE              = 0x20\n\tIP_RECVMACHDR                 = 0xe\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVTTL                    = 0x22\n\tIP_RETOPTS                    = 0x8\n\tIP_SOURCE_FILTER              = 0x48\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x3b\n\tIP_UNICAST_HOPS               = 0x4\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x800\n\tIXANY                         = 0x1000\n\tIXOFF                         = 0x400\n\tIXON                          = 0x200\n\tI_FLUSH                       = 0x20005305\n\tLNOFLSH                       = 0x8000\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_NORMAL                   = 0x0\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_SPACEAVAIL               = 0x5\n\tMADV_WILLNEED                 = 0x3\n\tMAP_ANON                      = 0x10\n\tMAP_ANONYMOUS                 = 0x10\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x100\n\tMAP_PRIVATE                   = 0x2\n\tMAP_SHARED                    = 0x1\n\tMAP_TYPE                      = 0xf0\n\tMAP_VARIABLE                  = 0x0\n\tMCAST_BLOCK_SOURCE            = 0x40\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x3e\n\tMCAST_JOIN_SOURCE_GROUP       = 0x42\n\tMCAST_LEAVE_GROUP             = 0x3f\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x43\n\tMCAST_SOURCE_FILTER           = 0x49\n\tMCAST_UNBLOCK_SOURCE          = 0x41\n\tMCL_CURRENT                   = 0x100\n\tMCL_FUTURE                    = 0x200\n\tMSG_ANY                       = 0x4\n\tMSG_ARGEXT                    = 0x400\n\tMSG_BAND                      = 0x2\n\tMSG_COMPAT                    = 0x8000\n\tMSG_CTRUNC                    = 0x20\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_EOR                       = 0x8\n\tMSG_HIPRI                     = 0x1\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_MPEG2                     = 0x80\n\tMSG_NONBLOCK                  = 0x4000\n\tMSG_NOSIGNAL                  = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x10\n\tMSG_WAITALL                   = 0x40\n\tMSG_WAITFORONE                = 0x200\n\tMS_ASYNC                      = 0x10\n\tMS_EINTR                      = 0x80\n\tMS_INVALIDATE                 = 0x40\n\tMS_PER_SEC                    = 0x3e8\n\tMS_SYNC                       = 0x20\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x4000\n\tNL2                           = 0x8000\n\tNL3                           = 0xc000\n\tNLDLY                         = 0x4000\n\tNOFLSH                        = 0x80\n\tNOFLUSH                       = 0x80000000\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tONOEOT                        = 0x80000\n\tOPOST                         = 0x1\n\tOXTABS                        = 0x40000\n\tO_ACCMODE                     = 0x23\n\tO_APPEND                      = 0x8\n\tO_CIO                         = 0x80\n\tO_CIOR                        = 0x800000000\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DEFER                       = 0x2000\n\tO_DELAY                       = 0x4000\n\tO_DIRECT                      = 0x8000000\n\tO_DIRECTORY                   = 0x80000\n\tO_DSYNC                       = 0x400000\n\tO_EFSOFF                      = 0x400000000\n\tO_EFSON                       = 0x200000000\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x20\n\tO_LARGEFILE                   = 0x4000000\n\tO_NDELAY                      = 0x8000\n\tO_NOCACHE                     = 0x100000\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x1000000\n\tO_NONBLOCK                    = 0x4\n\tO_NONE                        = 0x3\n\tO_NSHARE                      = 0x10000\n\tO_RAW                         = 0x100000000\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSHARE                      = 0x1000\n\tO_RSYNC                       = 0x200000\n\tO_SEARCH                      = 0x20\n\tO_SNAPSHOT                    = 0x40\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_TTY_INIT                    = 0x0\n\tO_WRONLY                      = 0x1\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x20000000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tPR_64BIT                      = 0x20\n\tPR_ADDR                       = 0x2\n\tPR_ARGEXT                     = 0x400\n\tPR_ATOMIC                     = 0x1\n\tPR_CONNREQUIRED               = 0x4\n\tPR_FASTHZ                     = 0x5\n\tPR_INP                        = 0x40\n\tPR_INTRLEVEL                  = 0x8000\n\tPR_MLS                        = 0x100\n\tPR_MLS_1_LABEL                = 0x200\n\tPR_NOEOR                      = 0x4000\n\tPR_RIGHTS                     = 0x10\n\tPR_SLOWHZ                     = 0x2\n\tPR_WANTRCVD                   = 0x8\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x7\n\tRLIMIT_NPROC                  = 0x9\n\tRLIMIT_RSS                    = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0x7fffffffffffffff\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x8\n\tRTAX_NETMASK                  = 0x2\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DOWNSTREAM                = 0x100\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTC_IA64                      = 0x3\n\tRTC_POWER                     = 0x1\n\tRTC_POWER_PC                  = 0x2\n\tRTF_ACTIVE_DGD                = 0x1000000\n\tRTF_BCE                       = 0x80000\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_BROADCAST                 = 0x400000\n\tRTF_BUL                       = 0x2000\n\tRTF_CLONE                     = 0x10000\n\tRTF_CLONED                    = 0x20000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_FREE_IN_PROG              = 0x4000000\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_LLINFO                    = 0x400\n\tRTF_LOCAL                     = 0x200000\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTICAST                 = 0x800000\n\tRTF_PERMANENT6                = 0x8000000\n\tRTF_PINNED                    = 0x100000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_PROTO3                    = 0x40000\n\tRTF_REJECT                    = 0x8\n\tRTF_SMALLMTU                  = 0x40000\n\tRTF_STATIC                    = 0x800\n\tRTF_STOPSRCH                  = 0x2000000\n\tRTF_UNREACHABLE               = 0x10000000\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_EXPIRE                    = 0xf\n\tRTM_GET                       = 0x4\n\tRTM_GETNEXT                   = 0x11\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_RTLOST                    = 0x10\n\tRTM_RTTUNIT                   = 0xf4240\n\tRTM_SAMEADDR                  = 0x12\n\tRTM_SET                       = 0x13\n\tRTM_VERSION                   = 0x2\n\tRTM_VERSION_GR                = 0x4\n\tRTM_VERSION_GR_COMPAT         = 0x3\n\tRTM_VERSION_POLICY            = 0x5\n\tRTM_VERSION_POLICY_EXT        = 0x6\n\tRTM_VERSION_POLICY_PRFN       = 0x7\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tRUSAGE_THREAD                 = 0x1\n\tSCM_RIGHTS                    = 0x1\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIGMAX64                      = 0xff\n\tSIGQUEUE_MAX                  = 0x20\n\tSIOCADDIFVIPA                 = 0x20006942\n\tSIOCADDMTU                    = -0x7ffb9690\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDNETID                  = -0x7fd796a9\n\tSIOCADDRT                     = -0x7fc78df6\n\tSIOCAIFADDR                   = -0x7fbf96e6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fb396e0\n\tSIOCDELIFVIPA                 = 0x20006943\n\tSIOCDELMTU                    = -0x7ffb968f\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELPMTU                   = -0x7fd78ff6\n\tSIOCDELRT                     = -0x7fc78df5\n\tSIOCDIFADDR                   = -0x7fd796e7\n\tSIOCDNETOPT                   = -0x3ffe9680\n\tSIOCDX25XLATE                 = -0x7fd7969b\n\tSIOCFIFADDR                   = -0x7fdf966d\n\tSIOCGARP                      = -0x3fb396da\n\tSIOCGETMTUS                   = 0x2000696f\n\tSIOCGETSGCNT                  = -0x3feb8acc\n\tSIOCGETVIFCNT                 = -0x3feb8acd\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fd796df\n\tSIOCGIFADDRS                  = 0x2000698c\n\tSIOCGIFBAUDRATE               = -0x3fdf9669\n\tSIOCGIFBRDADDR                = -0x3fd796dd\n\tSIOCGIFCONF                   = -0x3fef96bb\n\tSIOCGIFCONFGLOB               = -0x3fef9670\n\tSIOCGIFDSTADDR                = -0x3fd796de\n\tSIOCGIFFLAGS                  = -0x3fd796ef\n\tSIOCGIFGIDLIST                = 0x20006968\n\tSIOCGIFHWADDR                 = -0x3fab966b\n\tSIOCGIFMETRIC                 = -0x3fd796e9\n\tSIOCGIFMTU                    = -0x3fd796aa\n\tSIOCGIFNETMASK                = -0x3fd796db\n\tSIOCGIFOPTIONS                = -0x3fd796d6\n\tSIOCGISNO                     = -0x3fd79695\n\tSIOCGLOADF                    = -0x3ffb967e\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGNETOPT                   = -0x3ffe96a5\n\tSIOCGNETOPT1                  = -0x3fdf967f\n\tSIOCGNMTUS                    = 0x2000696e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSIZIFCONF                = 0x4004696a\n\tSIOCGSRCFILTER                = -0x3fe796cb\n\tSIOCGTUNEPHASE                = -0x3ffb9676\n\tSIOCGX25XLATE                 = -0x3fd7969c\n\tSIOCIFATTACH                  = -0x7fdf9699\n\tSIOCIFDETACH                  = -0x7fdf969a\n\tSIOCIFGETPKEY                 = -0x7fdf969b\n\tSIOCIF_ATM_DARP               = -0x7fdf9683\n\tSIOCIF_ATM_DUMPARP            = -0x7fdf9685\n\tSIOCIF_ATM_GARP               = -0x7fdf9682\n\tSIOCIF_ATM_IDLE               = -0x7fdf9686\n\tSIOCIF_ATM_SARP               = -0x7fdf9681\n\tSIOCIF_ATM_SNMPARP            = -0x7fdf9687\n\tSIOCIF_ATM_SVC                = -0x7fdf9684\n\tSIOCIF_ATM_UBR                = -0x7fdf9688\n\tSIOCIF_DEVHEALTH              = -0x7ffb966c\n\tSIOCIF_IB_ARP_INCOMP          = -0x7fdf9677\n\tSIOCIF_IB_ARP_TIMER           = -0x7fdf9678\n\tSIOCIF_IB_CLEAR_PINFO         = -0x3fdf966f\n\tSIOCIF_IB_DEL_ARP             = -0x7fdf967f\n\tSIOCIF_IB_DEL_PINFO           = -0x3fdf9670\n\tSIOCIF_IB_DUMP_ARP            = -0x7fdf9680\n\tSIOCIF_IB_GET_ARP             = -0x7fdf967e\n\tSIOCIF_IB_GET_INFO            = -0x3f879675\n\tSIOCIF_IB_GET_STATS           = -0x3f879672\n\tSIOCIF_IB_NOTIFY_ADDR_REM     = -0x3f87966a\n\tSIOCIF_IB_RESET_STATS         = -0x3f879671\n\tSIOCIF_IB_RESIZE_CQ           = -0x7fdf9679\n\tSIOCIF_IB_SET_ARP             = -0x7fdf967d\n\tSIOCIF_IB_SET_PKEY            = -0x7fdf967c\n\tSIOCIF_IB_SET_PORT            = -0x7fdf967b\n\tSIOCIF_IB_SET_QKEY            = -0x7fdf9676\n\tSIOCIF_IB_SET_QSIZE           = -0x7fdf967a\n\tSIOCLISTIFVIPA                = 0x20006944\n\tSIOCSARP                      = -0x7fb396e2\n\tSIOCSHIWAT                    = 0xffffffff80047300\n\tSIOCSIFADDR                   = -0x7fd796f4\n\tSIOCSIFADDRORI                = -0x7fdb9673\n\tSIOCSIFBRDADDR                = -0x7fd796ed\n\tSIOCSIFDSTADDR                = -0x7fd796f2\n\tSIOCSIFFLAGS                  = -0x7fd796f0\n\tSIOCSIFGIDLIST                = 0x20006969\n\tSIOCSIFMETRIC                 = -0x7fd796e8\n\tSIOCSIFMTU                    = -0x7fd796a8\n\tSIOCSIFNETDUMP                = -0x7fd796e4\n\tSIOCSIFNETMASK                = -0x7fd796ea\n\tSIOCSIFOPTIONS                = -0x7fd796d7\n\tSIOCSIFSUBCHAN                = -0x7fd796e5\n\tSIOCSISNO                     = -0x7fd79694\n\tSIOCSLOADF                    = -0x3ffb967d\n\tSIOCSLOWAT                    = 0xffffffff80047302\n\tSIOCSNETOPT                   = -0x7ffe96a6\n\tSIOCSPGRP                     = 0xffffffff80047308\n\tSIOCSX25XLATE                 = -0x7fd7969d\n\tSOCK_CONN_DGRAM               = 0x6\n\tSOCK_DGRAM                    = 0x2\n\tSOCK_RAW                      = 0x3\n\tSOCK_RDM                      = 0x4\n\tSOCK_SEQPACKET                = 0x5\n\tSOCK_STREAM                   = 0x1\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x400\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_AUDIT                      = 0x8000\n\tSO_BROADCAST                  = 0x20\n\tSO_CKSUMRECV                  = 0x800\n\tSO_DEBUG                      = 0x1\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROR                      = 0x1007\n\tSO_KEEPALIVE                  = 0x8\n\tSO_KERNACCEPT                 = 0x2000\n\tSO_LINGER                     = 0x80\n\tSO_NOMULTIPATH                = 0x4000\n\tSO_NOREUSEADDR                = 0x1000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PEERID                     = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_REUSEADDR                  = 0x4\n\tSO_REUSEPORT                  = 0x200\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_TIMESTAMPNS                = 0x100a\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_USE_IFBUFS                 = 0x400\n\tS_BANDURG                     = 0x400\n\tS_EMODFMT                     = 0x3c000000\n\tS_ENFMT                       = 0x400\n\tS_ERROR                       = 0x100\n\tS_HANGUP                      = 0x200\n\tS_HIPRI                       = 0x2\n\tS_ICRYPTO                     = 0x80000\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFIFO                       = 0x1000\n\tS_IFJOURNAL                   = 0x10000\n\tS_IFLNK                       = 0xa000\n\tS_IFMPX                       = 0x2200\n\tS_IFMT                        = 0xf000\n\tS_IFPDIR                      = 0x4000000\n\tS_IFPSDIR                     = 0x8000000\n\tS_IFPSSDIR                    = 0xc000000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_IFSYSEA                     = 0x30000000\n\tS_INPUT                       = 0x1\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_ITCB                        = 0x1000000\n\tS_ITP                         = 0x800000\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXACL                       = 0x2000000\n\tS_IXATTR                      = 0x40000\n\tS_IXGRP                       = 0x8\n\tS_IXINTERFACE                 = 0x100000\n\tS_IXMOD                       = 0x40000000\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tS_MSG                         = 0x8\n\tS_OUTPUT                      = 0x4\n\tS_RDBAND                      = 0x20\n\tS_RDNORM                      = 0x10\n\tS_RESERVED1                   = 0x20000\n\tS_RESERVED2                   = 0x200000\n\tS_RESERVED3                   = 0x400000\n\tS_RESERVED4                   = 0x80000000\n\tS_RESFMT1                     = 0x10000000\n\tS_RESFMT10                    = 0x34000000\n\tS_RESFMT11                    = 0x38000000\n\tS_RESFMT12                    = 0x3c000000\n\tS_RESFMT2                     = 0x14000000\n\tS_RESFMT3                     = 0x18000000\n\tS_RESFMT4                     = 0x1c000000\n\tS_RESFMT5                     = 0x20000000\n\tS_RESFMT6                     = 0x24000000\n\tS_RESFMT7                     = 0x28000000\n\tS_RESFMT8                     = 0x2c000000\n\tS_WRBAND                      = 0x80\n\tS_WRNORM                      = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x400\n\tTAB2                          = 0x800\n\tTAB3                          = 0xc00\n\tTABDLY                        = 0xc00\n\tTCFLSH                        = 0x540c\n\tTCGETA                        = 0x5405\n\tTCGETS                        = 0x5401\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_24DAYS_WORTH_OF_SLOWTICKS = 0x3f4800\n\tTCP_ACLADD                    = 0x23\n\tTCP_ACLBIND                   = 0x26\n\tTCP_ACLCLEAR                  = 0x22\n\tTCP_ACLDEL                    = 0x24\n\tTCP_ACLDENY                   = 0x8\n\tTCP_ACLFLUSH                  = 0x21\n\tTCP_ACLGID                    = 0x1\n\tTCP_ACLLS                     = 0x25\n\tTCP_ACLSUBNET                 = 0x4\n\tTCP_ACLUID                    = 0x2\n\tTCP_CWND_DF                   = 0x16\n\tTCP_CWND_IF                   = 0x15\n\tTCP_DELAY_ACK_FIN             = 0x2\n\tTCP_DELAY_ACK_SYN             = 0x1\n\tTCP_FASTNAME                  = 0x101080a\n\tTCP_KEEPCNT                   = 0x13\n\tTCP_KEEPIDLE                  = 0x11\n\tTCP_KEEPINTVL                 = 0x12\n\tTCP_LSPRIV                    = 0x29\n\tTCP_LUID                      = 0x20\n\tTCP_MAXBURST                  = 0x8\n\tTCP_MAXDF                     = 0x64\n\tTCP_MAXIF                     = 0x64\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MAXWIN                    = 0xffff\n\tTCP_MAXWINDOWSCALE            = 0xe\n\tTCP_MAX_SACK                  = 0x4\n\tTCP_MSS                       = 0x5b4\n\tTCP_NODELAY                   = 0x1\n\tTCP_NODELAYACK                = 0x14\n\tTCP_NOREDUCE_CWND_EXIT_FRXMT  = 0x19\n\tTCP_NOREDUCE_CWND_IN_FRXMT    = 0x18\n\tTCP_NOTENTER_SSTART           = 0x17\n\tTCP_OPT                       = 0x19\n\tTCP_RFC1323                   = 0x4\n\tTCP_SETPRIV                   = 0x27\n\tTCP_STDURG                    = 0x10\n\tTCP_TIMESTAMP_OPTLEN          = 0xc\n\tTCP_UNSETPRIV                 = 0x28\n\tTCSAFLUSH                     = 0x2\n\tTCSBRK                        = 0x5409\n\tTCSETA                        = 0x5406\n\tTCSETAF                       = 0x5408\n\tTCSETAW                       = 0x5407\n\tTCSETS                        = 0x5402\n\tTCSETSF                       = 0x5404\n\tTCSETSW                       = 0x5403\n\tTCXONC                        = 0x540b\n\tTIMER_ABSTIME                 = 0x3e7\n\tTIMER_MAX                     = 0x20\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x2000747a\n\tTIOCCDTR                      = 0x20007478\n\tTIOCCONS                      = 0xffffffff80047462\n\tTIOCEXCL                      = 0x2000740d\n\tTIOCFLUSH                     = 0xffffffff80047410\n\tTIOCGETC                      = 0x40067412\n\tTIOCGETD                      = 0x40047400\n\tTIOCGETP                      = 0x40067408\n\tTIOCGLTC                      = 0x40067474\n\tTIOCGPGRP                     = 0x40047477\n\tTIOCGSID                      = 0x40047448\n\tTIOCGSIZE                     = 0x40087468\n\tTIOCGWINSZ                    = 0x40087468\n\tTIOCHPCL                      = 0x20007402\n\tTIOCLBIC                      = 0xffffffff8004747e\n\tTIOCLBIS                      = 0xffffffff8004747f\n\tTIOCLGET                      = 0x4004747c\n\tTIOCLSET                      = 0xffffffff8004747d\n\tTIOCMBIC                      = 0xffffffff8004746b\n\tTIOCMBIS                      = 0xffffffff8004746c\n\tTIOCMGET                      = 0x4004746a\n\tTIOCMIWAIT                    = 0xffffffff80047464\n\tTIOCMODG                      = 0x40047403\n\tTIOCMODS                      = 0xffffffff80047404\n\tTIOCMSET                      = 0xffffffff8004746d\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x20007471\n\tTIOCNXCL                      = 0x2000740e\n\tTIOCOUTQ                      = 0x40047473\n\tTIOCPKT                       = 0xffffffff80047470\n\tTIOCPKT_DATA                  = 0x0\n\tTIOCPKT_DOSTOP                = 0x20\n\tTIOCPKT_FLUSHREAD             = 0x1\n\tTIOCPKT_FLUSHWRITE            = 0x2\n\tTIOCPKT_NOSTOP                = 0x10\n\tTIOCPKT_START                 = 0x8\n\tTIOCPKT_STOP                  = 0x4\n\tTIOCREMOTE                    = 0xffffffff80047469\n\tTIOCSBRK                      = 0x2000747b\n\tTIOCSDTR                      = 0x20007479\n\tTIOCSETC                      = 0xffffffff80067411\n\tTIOCSETD                      = 0xffffffff80047401\n\tTIOCSETN                      = 0xffffffff8006740a\n\tTIOCSETP                      = 0xffffffff80067409\n\tTIOCSLTC                      = 0xffffffff80067475\n\tTIOCSPGRP                     = 0xffffffff80047476\n\tTIOCSSIZE                     = 0xffffffff80087467\n\tTIOCSTART                     = 0x2000746e\n\tTIOCSTI                       = 0xffffffff80017472\n\tTIOCSTOP                      = 0x2000746f\n\tTIOCSWINSZ                    = 0xffffffff80087467\n\tTIOCUCNTL                     = 0xffffffff80047466\n\tTOSTOP                        = 0x10000\n\tUTIME_NOW                     = -0x2\n\tUTIME_OMIT                    = -0x3\n\tVDISCRD                       = 0xc\n\tVDSUSP                        = 0xa\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xe\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xb\n\tVSTART                        = 0x7\n\tVSTOP                         = 0x8\n\tVSTRT                         = 0x7\n\tVSUSP                         = 0x9\n\tVT0                           = 0x0\n\tVT1                           = 0x8000\n\tVTDELAY                       = 0x2000\n\tVTDLY                         = 0x8000\n\tVTIME                         = 0x5\n\tVWERSE                        = 0xd\n\tWPARSTART                     = 0x1\n\tWPARSTOP                      = 0x2\n\tWPARTTYNAME                   = \"Global\"\n\tXCASE                         = 0x4\n\tXTABS                         = 0xc00\n\t_FDATAFLUSH                   = 0x2000000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x43)\n\tEADDRNOTAVAIL   = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x42)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x38)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x78)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x75)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECLONEME        = syscall.Errno(0x52)\n\tECONNABORTED    = syscall.Errno(0x48)\n\tECONNREFUSED    = syscall.Errno(0x4f)\n\tECONNRESET      = syscall.Errno(0x49)\n\tECORRUPT        = syscall.Errno(0x59)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDESTADDREQ     = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x3a)\n\tEDIST           = syscall.Errno(0x35)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x58)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFORMAT         = syscall.Errno(0x30)\n\tEHOSTDOWN       = syscall.Errno(0x50)\n\tEHOSTUNREACH    = syscall.Errno(0x51)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x74)\n\tEINPROGRESS     = syscall.Errno(0x37)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x4b)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x55)\n\tEMEDIA          = syscall.Errno(0x6e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x3b)\n\tEMULTIHOP       = syscall.Errno(0x7d)\n\tENAMETOOLONG    = syscall.Errno(0x56)\n\tENETDOWN        = syscall.Errno(0x45)\n\tENETRESET       = syscall.Errno(0x47)\n\tENETUNREACH     = syscall.Errno(0x46)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x70)\n\tENOBUFS         = syscall.Errno(0x4a)\n\tENOCONNECT      = syscall.Errno(0x32)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x7a)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x31)\n\tENOLINK         = syscall.Errno(0x7e)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENOPROTOOPT     = syscall.Errno(0x3d)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x76)\n\tENOSTR          = syscall.Errno(0x7b)\n\tENOSYS          = syscall.Errno(0x6d)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x4c)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x11)\n\tENOTREADY       = syscall.Errno(0x2e)\n\tENOTRECOVERABLE = syscall.Errno(0x5e)\n\tENOTRUST        = syscall.Errno(0x72)\n\tENOTSOCK        = syscall.Errno(0x39)\n\tENOTSUP         = syscall.Errno(0x7c)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x40)\n\tEOVERFLOW       = syscall.Errno(0x7f)\n\tEOWNERDEAD      = syscall.Errno(0x5f)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x41)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x53)\n\tEPROTO          = syscall.Errno(0x79)\n\tEPROTONOSUPPORT = syscall.Errno(0x3e)\n\tEPROTOTYPE      = syscall.Errno(0x3c)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x5d)\n\tERESTART        = syscall.Errno(0x52)\n\tEROFS           = syscall.Errno(0x1e)\n\tESAD            = syscall.Errno(0x71)\n\tESHUTDOWN       = syscall.Errno(0x4d)\n\tESOCKTNOSUPPORT = syscall.Errno(0x3f)\n\tESOFT           = syscall.Errno(0x6f)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x34)\n\tESYSERROR       = syscall.Errno(0x5a)\n\tETIME           = syscall.Errno(0x77)\n\tETIMEDOUT       = syscall.Errno(0x4e)\n\tETOOMANYREFS    = syscall.Errno(0x73)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x54)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEWRPROTECT      = syscall.Errno(0x2f)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGAIO      = syscall.Signal(0x17)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGALRM1    = syscall.Signal(0x26)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCAPI     = syscall.Signal(0x31)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCLD      = syscall.Signal(0x14)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGCPUFAIL  = syscall.Signal(0x3b)\n\tSIGDANGER   = syscall.Signal(0x21)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGGRANT    = syscall.Signal(0x3c)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOINT    = syscall.Signal(0x10)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKAP      = syscall.Signal(0x3c)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGLOST     = syscall.Signal(0x6)\n\tSIGMAX      = syscall.Signal(0xff)\n\tSIGMAX32    = syscall.Signal(0x3f)\n\tSIGMIGRATE  = syscall.Signal(0x23)\n\tSIGMSG      = syscall.Signal(0x1b)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPOLL     = syscall.Signal(0x17)\n\tSIGPRE      = syscall.Signal(0x24)\n\tSIGPROF     = syscall.Signal(0x20)\n\tSIGPTY      = syscall.Signal(0x17)\n\tSIGPWR      = syscall.Signal(0x1d)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGRECONFIG = syscall.Signal(0x3a)\n\tSIGRETRACT  = syscall.Signal(0x3d)\n\tSIGSAK      = syscall.Signal(0x3f)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSOUND    = syscall.Signal(0x3e)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGSYSERROR = syscall.Signal(0x30)\n\tSIGTALRM    = syscall.Signal(0x26)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVIRT     = syscall.Signal(0x25)\n\tSIGVTALRM   = syscall.Signal(0x22)\n\tSIGWAITING  = syscall.Signal(0x27)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"ENOTEMPTY\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"not a typewriter\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock condition if locked\"},\n\t{46, \"ENOTREADY\", \"device not ready\"},\n\t{47, \"EWRPROTECT\", \"write-protected media\"},\n\t{48, \"EFORMAT\", \"unformatted or incompatible media\"},\n\t{49, \"ENOLCK\", \"no locks available\"},\n\t{50, \"ENOCONNECT\", \"cannot Establish Connection\"},\n\t{52, \"ESTALE\", \"missing file or filesystem\"},\n\t{53, \"EDIST\", \"requests blocked by Administrator\"},\n\t{55, \"EINPROGRESS\", \"operation now in progress\"},\n\t{56, \"EALREADY\", \"operation already in progress\"},\n\t{57, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{58, \"EDESTADDREQ\", \"destination address required\"},\n\t{59, \"EMSGSIZE\", \"message too long\"},\n\t{60, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{61, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{62, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{63, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{64, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{65, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{66, \"EAFNOSUPPORT\", \"addr family not supported by protocol\"},\n\t{67, \"EADDRINUSE\", \"address already in use\"},\n\t{68, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{69, \"ENETDOWN\", \"network is down\"},\n\t{70, \"ENETUNREACH\", \"network is unreachable\"},\n\t{71, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{72, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{73, \"ECONNRESET\", \"connection reset by peer\"},\n\t{74, \"ENOBUFS\", \"no buffer space available\"},\n\t{75, \"EISCONN\", \"socket is already connected\"},\n\t{76, \"ENOTCONN\", \"socket is not connected\"},\n\t{77, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{78, \"ETIMEDOUT\", \"connection timed out\"},\n\t{79, \"ECONNREFUSED\", \"connection refused\"},\n\t{80, \"EHOSTDOWN\", \"host is down\"},\n\t{81, \"EHOSTUNREACH\", \"no route to host\"},\n\t{82, \"ERESTART\", \"restart the system call\"},\n\t{83, \"EPROCLIM\", \"too many processes\"},\n\t{84, \"EUSERS\", \"too many users\"},\n\t{85, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{86, \"ENAMETOOLONG\", \"file name too long\"},\n\t{88, \"EDQUOT\", \"disk quota exceeded\"},\n\t{89, \"ECORRUPT\", \"invalid file system control data detected\"},\n\t{90, \"ESYSERROR\", \"for future use \"},\n\t{93, \"EREMOTE\", \"item is not local to host\"},\n\t{94, \"ENOTRECOVERABLE\", \"state not recoverable \"},\n\t{95, \"EOWNERDEAD\", \"previous owner died \"},\n\t{109, \"ENOSYS\", \"function not implemented\"},\n\t{110, \"EMEDIA\", \"media surface error\"},\n\t{111, \"ESOFT\", \"I/O completed, but needs relocation\"},\n\t{112, \"ENOATTR\", \"no attribute found\"},\n\t{113, \"ESAD\", \"security Authentication Denied\"},\n\t{114, \"ENOTRUST\", \"not a Trusted Program\"},\n\t{115, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{116, \"EILSEQ\", \"invalid wide character\"},\n\t{117, \"ECANCELED\", \"asynchronous I/O cancelled\"},\n\t{118, \"ENOSR\", \"out of STREAMS resources\"},\n\t{119, \"ETIME\", \"system call timed out\"},\n\t{120, \"EBADMSG\", \"next message has wrong type\"},\n\t{121, \"EPROTO\", \"error in protocol\"},\n\t{122, \"ENODATA\", \"no message on stream head read q\"},\n\t{123, \"ENOSTR\", \"fd not associated with a stream\"},\n\t{124, \"ENOTSUP\", \"unsupported attribute value\"},\n\t{125, \"EMULTIHOP\", \"multihop is not allowed\"},\n\t{126, \"ENOLINK\", \"the server link has been severed\"},\n\t{127, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"IOT/Abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible/complete\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{27, \"SIGMSG\", \"input device data\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGPWR\", \"power-failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"paging space low\"},\n\t{34, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{35, \"SIGMIGRATE\", \"signal 35\"},\n\t{36, \"SIGPRE\", \"signal 36\"},\n\t{37, \"SIGVIRT\", \"signal 37\"},\n\t{38, \"SIGTALRM\", \"signal 38\"},\n\t{39, \"SIGWAITING\", \"signal 39\"},\n\t{48, \"SIGSYSERROR\", \"signal 48\"},\n\t{49, \"SIGCAPI\", \"signal 49\"},\n\t{58, \"SIGRECONFIG\", \"signal 58\"},\n\t{59, \"SIGCPUFAIL\", \"CPU Failure Predicted\"},\n\t{60, \"SIGGRANT\", \"monitor mode granted\"},\n\t{61, \"SIGRETRACT\", \"monitor mode retracted\"},\n\t{62, \"SIGSOUND\", \"sound completed\"},\n\t{63, \"SIGMAX32\", \"secure attention\"},\n\t{255, \"SIGMAX\", \"signal 255\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_darwin_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_darwin_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                            = 0x10\n\tAF_CCITT                                = 0xa\n\tAF_CHAOS                                = 0x5\n\tAF_CNT                                  = 0x15\n\tAF_COIP                                 = 0x14\n\tAF_DATAKIT                              = 0x9\n\tAF_DECnet                               = 0xc\n\tAF_DLI                                  = 0xd\n\tAF_E164                                 = 0x1c\n\tAF_ECMA                                 = 0x8\n\tAF_HYLINK                               = 0xf\n\tAF_IEEE80211                            = 0x25\n\tAF_IMPLINK                              = 0x3\n\tAF_INET                                 = 0x2\n\tAF_INET6                                = 0x1e\n\tAF_IPX                                  = 0x17\n\tAF_ISDN                                 = 0x1c\n\tAF_ISO                                  = 0x7\n\tAF_LAT                                  = 0xe\n\tAF_LINK                                 = 0x12\n\tAF_LOCAL                                = 0x1\n\tAF_MAX                                  = 0x29\n\tAF_NATM                                 = 0x1f\n\tAF_NDRV                                 = 0x1b\n\tAF_NETBIOS                              = 0x21\n\tAF_NS                                   = 0x6\n\tAF_OSI                                  = 0x7\n\tAF_PPP                                  = 0x22\n\tAF_PUP                                  = 0x4\n\tAF_RESERVED_36                          = 0x24\n\tAF_ROUTE                                = 0x11\n\tAF_SIP                                  = 0x18\n\tAF_SNA                                  = 0xb\n\tAF_SYSTEM                               = 0x20\n\tAF_SYS_CONTROL                          = 0x2\n\tAF_UNIX                                 = 0x1\n\tAF_UNSPEC                               = 0x0\n\tAF_UTUN                                 = 0x26\n\tAF_VSOCK                                = 0x28\n\tALTWERASE                               = 0x200\n\tATTR_BIT_MAP_COUNT                      = 0x5\n\tATTR_CMN_ACCESSMASK                     = 0x20000\n\tATTR_CMN_ACCTIME                        = 0x1000\n\tATTR_CMN_ADDEDTIME                      = 0x10000000\n\tATTR_CMN_BKUPTIME                       = 0x2000\n\tATTR_CMN_CHGTIME                        = 0x800\n\tATTR_CMN_CRTIME                         = 0x200\n\tATTR_CMN_DATA_PROTECT_FLAGS             = 0x40000000\n\tATTR_CMN_DEVID                          = 0x2\n\tATTR_CMN_DOCUMENT_ID                    = 0x100000\n\tATTR_CMN_ERROR                          = 0x20000000\n\tATTR_CMN_EXTENDED_SECURITY              = 0x400000\n\tATTR_CMN_FILEID                         = 0x2000000\n\tATTR_CMN_FLAGS                          = 0x40000\n\tATTR_CMN_FNDRINFO                       = 0x4000\n\tATTR_CMN_FSID                           = 0x4\n\tATTR_CMN_FULLPATH                       = 0x8000000\n\tATTR_CMN_GEN_COUNT                      = 0x80000\n\tATTR_CMN_GRPID                          = 0x10000\n\tATTR_CMN_GRPUUID                        = 0x1000000\n\tATTR_CMN_MODTIME                        = 0x400\n\tATTR_CMN_NAME                           = 0x1\n\tATTR_CMN_NAMEDATTRCOUNT                 = 0x80000\n\tATTR_CMN_NAMEDATTRLIST                  = 0x100000\n\tATTR_CMN_OBJID                          = 0x20\n\tATTR_CMN_OBJPERMANENTID                 = 0x40\n\tATTR_CMN_OBJTAG                         = 0x10\n\tATTR_CMN_OBJTYPE                        = 0x8\n\tATTR_CMN_OWNERID                        = 0x8000\n\tATTR_CMN_PARENTID                       = 0x4000000\n\tATTR_CMN_PAROBJID                       = 0x80\n\tATTR_CMN_RETURNED_ATTRS                 = 0x80000000\n\tATTR_CMN_SCRIPT                         = 0x100\n\tATTR_CMN_SETMASK                        = 0x51c7ff00\n\tATTR_CMN_USERACCESS                     = 0x200000\n\tATTR_CMN_UUID                           = 0x800000\n\tATTR_CMN_VALIDMASK                      = 0xffffffff\n\tATTR_CMN_VOLSETMASK                     = 0x6700\n\tATTR_FILE_ALLOCSIZE                     = 0x4\n\tATTR_FILE_CLUMPSIZE                     = 0x10\n\tATTR_FILE_DATAALLOCSIZE                 = 0x400\n\tATTR_FILE_DATAEXTENTS                   = 0x800\n\tATTR_FILE_DATALENGTH                    = 0x200\n\tATTR_FILE_DEVTYPE                       = 0x20\n\tATTR_FILE_FILETYPE                      = 0x40\n\tATTR_FILE_FORKCOUNT                     = 0x80\n\tATTR_FILE_FORKLIST                      = 0x100\n\tATTR_FILE_IOBLOCKSIZE                   = 0x8\n\tATTR_FILE_LINKCOUNT                     = 0x1\n\tATTR_FILE_RSRCALLOCSIZE                 = 0x2000\n\tATTR_FILE_RSRCEXTENTS                   = 0x4000\n\tATTR_FILE_RSRCLENGTH                    = 0x1000\n\tATTR_FILE_SETMASK                       = 0x20\n\tATTR_FILE_TOTALSIZE                     = 0x2\n\tATTR_FILE_VALIDMASK                     = 0x37ff\n\tATTR_VOL_ALLOCATIONCLUMP                = 0x40\n\tATTR_VOL_ATTRIBUTES                     = 0x40000000\n\tATTR_VOL_CAPABILITIES                   = 0x20000\n\tATTR_VOL_DIRCOUNT                       = 0x400\n\tATTR_VOL_ENCODINGSUSED                  = 0x10000\n\tATTR_VOL_FILECOUNT                      = 0x200\n\tATTR_VOL_FSTYPE                         = 0x1\n\tATTR_VOL_INFO                           = 0x80000000\n\tATTR_VOL_IOBLOCKSIZE                    = 0x80\n\tATTR_VOL_MAXOBJCOUNT                    = 0x800\n\tATTR_VOL_MINALLOCATION                  = 0x20\n\tATTR_VOL_MOUNTEDDEVICE                  = 0x8000\n\tATTR_VOL_MOUNTFLAGS                     = 0x4000\n\tATTR_VOL_MOUNTPOINT                     = 0x1000\n\tATTR_VOL_NAME                           = 0x2000\n\tATTR_VOL_OBJCOUNT                       = 0x100\n\tATTR_VOL_QUOTA_SIZE                     = 0x10000000\n\tATTR_VOL_RESERVED_SIZE                  = 0x20000000\n\tATTR_VOL_SETMASK                        = 0x80002000\n\tATTR_VOL_SIGNATURE                      = 0x2\n\tATTR_VOL_SIZE                           = 0x4\n\tATTR_VOL_SPACEAVAIL                     = 0x10\n\tATTR_VOL_SPACEFREE                      = 0x8\n\tATTR_VOL_SPACEUSED                      = 0x800000\n\tATTR_VOL_UUID                           = 0x40000\n\tATTR_VOL_VALIDMASK                      = 0xf087ffff\n\tB0                                      = 0x0\n\tB110                                    = 0x6e\n\tB115200                                 = 0x1c200\n\tB1200                                   = 0x4b0\n\tB134                                    = 0x86\n\tB14400                                  = 0x3840\n\tB150                                    = 0x96\n\tB1800                                   = 0x708\n\tB19200                                  = 0x4b00\n\tB200                                    = 0xc8\n\tB230400                                 = 0x38400\n\tB2400                                   = 0x960\n\tB28800                                  = 0x7080\n\tB300                                    = 0x12c\n\tB38400                                  = 0x9600\n\tB4800                                   = 0x12c0\n\tB50                                     = 0x32\n\tB57600                                  = 0xe100\n\tB600                                    = 0x258\n\tB7200                                   = 0x1c20\n\tB75                                     = 0x4b\n\tB76800                                  = 0x12c00\n\tB9600                                   = 0x2580\n\tBIOCFLUSH                               = 0x20004268\n\tBIOCGBLEN                               = 0x40044266\n\tBIOCGDLT                                = 0x4004426a\n\tBIOCGDLTLIST                            = 0xc00c4279\n\tBIOCGETIF                               = 0x4020426b\n\tBIOCGHDRCMPLT                           = 0x40044274\n\tBIOCGRSIG                               = 0x40044272\n\tBIOCGRTIMEOUT                           = 0x4010426e\n\tBIOCGSEESENT                            = 0x40044276\n\tBIOCGSTATS                              = 0x4008426f\n\tBIOCIMMEDIATE                           = 0x80044270\n\tBIOCPROMISC                             = 0x20004269\n\tBIOCSBLEN                               = 0xc0044266\n\tBIOCSDLT                                = 0x80044278\n\tBIOCSETF                                = 0x80104267\n\tBIOCSETFNR                              = 0x8010427e\n\tBIOCSETIF                               = 0x8020426c\n\tBIOCSHDRCMPLT                           = 0x80044275\n\tBIOCSRSIG                               = 0x80044273\n\tBIOCSRTIMEOUT                           = 0x8010426d\n\tBIOCSSEESENT                            = 0x80044277\n\tBIOCVERSION                             = 0x40044271\n\tBPF_A                                   = 0x10\n\tBPF_ABS                                 = 0x20\n\tBPF_ADD                                 = 0x0\n\tBPF_ALIGNMENT                           = 0x4\n\tBPF_ALU                                 = 0x4\n\tBPF_AND                                 = 0x50\n\tBPF_B                                   = 0x10\n\tBPF_DIV                                 = 0x30\n\tBPF_H                                   = 0x8\n\tBPF_IMM                                 = 0x0\n\tBPF_IND                                 = 0x40\n\tBPF_JA                                  = 0x0\n\tBPF_JEQ                                 = 0x10\n\tBPF_JGE                                 = 0x30\n\tBPF_JGT                                 = 0x20\n\tBPF_JMP                                 = 0x5\n\tBPF_JSET                                = 0x40\n\tBPF_K                                   = 0x0\n\tBPF_LD                                  = 0x0\n\tBPF_LDX                                 = 0x1\n\tBPF_LEN                                 = 0x80\n\tBPF_LSH                                 = 0x60\n\tBPF_MAJOR_VERSION                       = 0x1\n\tBPF_MAXBUFSIZE                          = 0x80000\n\tBPF_MAXINSNS                            = 0x200\n\tBPF_MEM                                 = 0x60\n\tBPF_MEMWORDS                            = 0x10\n\tBPF_MINBUFSIZE                          = 0x20\n\tBPF_MINOR_VERSION                       = 0x1\n\tBPF_MISC                                = 0x7\n\tBPF_MSH                                 = 0xa0\n\tBPF_MUL                                 = 0x20\n\tBPF_NEG                                 = 0x80\n\tBPF_OR                                  = 0x40\n\tBPF_RELEASE                             = 0x30bb6\n\tBPF_RET                                 = 0x6\n\tBPF_RSH                                 = 0x70\n\tBPF_ST                                  = 0x2\n\tBPF_STX                                 = 0x3\n\tBPF_SUB                                 = 0x10\n\tBPF_TAX                                 = 0x0\n\tBPF_TXA                                 = 0x80\n\tBPF_W                                   = 0x0\n\tBPF_X                                   = 0x8\n\tBRKINT                                  = 0x2\n\tBS0                                     = 0x0\n\tBS1                                     = 0x8000\n\tBSDLY                                   = 0x8000\n\tCFLUSH                                  = 0xf\n\tCLOCAL                                  = 0x8000\n\tCLOCK_MONOTONIC                         = 0x6\n\tCLOCK_MONOTONIC_RAW                     = 0x4\n\tCLOCK_MONOTONIC_RAW_APPROX              = 0x5\n\tCLOCK_PROCESS_CPUTIME_ID                = 0xc\n\tCLOCK_REALTIME                          = 0x0\n\tCLOCK_THREAD_CPUTIME_ID                 = 0x10\n\tCLOCK_UPTIME_RAW                        = 0x8\n\tCLOCK_UPTIME_RAW_APPROX                 = 0x9\n\tCLONE_NOFOLLOW                          = 0x1\n\tCLONE_NOOWNERCOPY                       = 0x2\n\tCR0                                     = 0x0\n\tCR1                                     = 0x1000\n\tCR2                                     = 0x2000\n\tCR3                                     = 0x3000\n\tCRDLY                                   = 0x3000\n\tCREAD                                   = 0x800\n\tCRTSCTS                                 = 0x30000\n\tCS5                                     = 0x0\n\tCS6                                     = 0x100\n\tCS7                                     = 0x200\n\tCS8                                     = 0x300\n\tCSIZE                                   = 0x300\n\tCSTART                                  = 0x11\n\tCSTATUS                                 = 0x14\n\tCSTOP                                   = 0x13\n\tCSTOPB                                  = 0x400\n\tCSUSP                                   = 0x1a\n\tCTLIOCGINFO                             = 0xc0644e03\n\tCTL_HW                                  = 0x6\n\tCTL_KERN                                = 0x1\n\tCTL_MAXNAME                             = 0xc\n\tCTL_NET                                 = 0x4\n\tDLT_A429                                = 0xb8\n\tDLT_A653_ICM                            = 0xb9\n\tDLT_AIRONET_HEADER                      = 0x78\n\tDLT_AOS                                 = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394              = 0x8a\n\tDLT_ARCNET                              = 0x7\n\tDLT_ARCNET_LINUX                        = 0x81\n\tDLT_ATM_CLIP                            = 0x13\n\tDLT_ATM_RFC1483                         = 0xb\n\tDLT_AURORA                              = 0x7e\n\tDLT_AX25                                = 0x3\n\tDLT_AX25_KISS                           = 0xca\n\tDLT_BACNET_MS_TP                        = 0xa5\n\tDLT_BLUETOOTH_HCI_H4                    = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR          = 0xc9\n\tDLT_CAN20B                              = 0xbe\n\tDLT_CAN_SOCKETCAN                       = 0xe3\n\tDLT_CHAOS                               = 0x5\n\tDLT_CHDLC                               = 0x68\n\tDLT_CISCO_IOS                           = 0x76\n\tDLT_C_HDLC                              = 0x68\n\tDLT_C_HDLC_WITH_DIR                     = 0xcd\n\tDLT_DBUS                                = 0xe7\n\tDLT_DECT                                = 0xdd\n\tDLT_DOCSIS                              = 0x8f\n\tDLT_DVB_CI                              = 0xeb\n\tDLT_ECONET                              = 0x73\n\tDLT_EN10MB                              = 0x1\n\tDLT_EN3MB                               = 0x2\n\tDLT_ENC                                 = 0x6d\n\tDLT_ERF                                 = 0xc5\n\tDLT_ERF_ETH                             = 0xaf\n\tDLT_ERF_POS                             = 0xb0\n\tDLT_FC_2                                = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS              = 0xe1\n\tDLT_FDDI                                = 0xa\n\tDLT_FLEXRAY                             = 0xd2\n\tDLT_FRELAY                              = 0x6b\n\tDLT_FRELAY_WITH_DIR                     = 0xce\n\tDLT_GCOM_SERIAL                         = 0xad\n\tDLT_GCOM_T1E1                           = 0xac\n\tDLT_GPF_F                               = 0xab\n\tDLT_GPF_T                               = 0xaa\n\tDLT_GPRS_LLC                            = 0xa9\n\tDLT_GSMTAP_ABIS                         = 0xda\n\tDLT_GSMTAP_UM                           = 0xd9\n\tDLT_HHDLC                               = 0x79\n\tDLT_IBM_SN                              = 0x92\n\tDLT_IBM_SP                              = 0x91\n\tDLT_IEEE802                             = 0x6\n\tDLT_IEEE802_11                          = 0x69\n\tDLT_IEEE802_11_RADIO                    = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS                = 0xa3\n\tDLT_IEEE802_15_4                        = 0xc3\n\tDLT_IEEE802_15_4_LINUX                  = 0xbf\n\tDLT_IEEE802_15_4_NOFCS                  = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY             = 0xd7\n\tDLT_IEEE802_16_MAC_CPS                  = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO            = 0xc1\n\tDLT_IPFILTER                            = 0x74\n\tDLT_IPMB                                = 0xc7\n\tDLT_IPMB_LINUX                          = 0xd1\n\tDLT_IPNET                               = 0xe2\n\tDLT_IPOIB                               = 0xf2\n\tDLT_IPV4                                = 0xe4\n\tDLT_IPV6                                = 0xe5\n\tDLT_IP_OVER_FC                          = 0x7a\n\tDLT_JUNIPER_ATM1                        = 0x89\n\tDLT_JUNIPER_ATM2                        = 0x87\n\tDLT_JUNIPER_ATM_CEMIC                   = 0xee\n\tDLT_JUNIPER_CHDLC                       = 0xb5\n\tDLT_JUNIPER_ES                          = 0x84\n\tDLT_JUNIPER_ETHER                       = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL                = 0xea\n\tDLT_JUNIPER_FRELAY                      = 0xb4\n\tDLT_JUNIPER_GGSN                        = 0x85\n\tDLT_JUNIPER_ISM                         = 0xc2\n\tDLT_JUNIPER_MFR                         = 0x86\n\tDLT_JUNIPER_MLFR                        = 0x83\n\tDLT_JUNIPER_MLPPP                       = 0x82\n\tDLT_JUNIPER_MONITOR                     = 0xa4\n\tDLT_JUNIPER_PIC_PEER                    = 0xae\n\tDLT_JUNIPER_PPP                         = 0xb3\n\tDLT_JUNIPER_PPPOE                       = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM                   = 0xa8\n\tDLT_JUNIPER_SERVICES                    = 0x88\n\tDLT_JUNIPER_SRX_E2E                     = 0xe9\n\tDLT_JUNIPER_ST                          = 0xc8\n\tDLT_JUNIPER_VP                          = 0xb7\n\tDLT_JUNIPER_VS                          = 0xe8\n\tDLT_LAPB_WITH_DIR                       = 0xcf\n\tDLT_LAPD                                = 0xcb\n\tDLT_LIN                                 = 0xd4\n\tDLT_LINUX_EVDEV                         = 0xd8\n\tDLT_LINUX_IRDA                          = 0x90\n\tDLT_LINUX_LAPD                          = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION             = 0xa6\n\tDLT_LINUX_SLL                           = 0x71\n\tDLT_LOOP                                = 0x6c\n\tDLT_LTALK                               = 0x72\n\tDLT_MATCHING_MAX                        = 0x10a\n\tDLT_MATCHING_MIN                        = 0x68\n\tDLT_MFR                                 = 0xb6\n\tDLT_MOST                                = 0xd3\n\tDLT_MPEG_2_TS                           = 0xf3\n\tDLT_MPLS                                = 0xdb\n\tDLT_MTP2                                = 0x8c\n\tDLT_MTP2_WITH_PHDR                      = 0x8b\n\tDLT_MTP3                                = 0x8d\n\tDLT_MUX27010                            = 0xec\n\tDLT_NETANALYZER                         = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT             = 0xf1\n\tDLT_NFC_LLCP                            = 0xf5\n\tDLT_NFLOG                               = 0xef\n\tDLT_NG40                                = 0xf4\n\tDLT_NULL                                = 0x0\n\tDLT_PCI_EXP                             = 0x7d\n\tDLT_PFLOG                               = 0x75\n\tDLT_PFSYNC                              = 0x12\n\tDLT_PPI                                 = 0xc0\n\tDLT_PPP                                 = 0x9\n\tDLT_PPP_BSDOS                           = 0x10\n\tDLT_PPP_ETHER                           = 0x33\n\tDLT_PPP_PPPD                            = 0xa6\n\tDLT_PPP_SERIAL                          = 0x32\n\tDLT_PPP_WITH_DIR                        = 0xcc\n\tDLT_PPP_WITH_DIRECTION                  = 0xa6\n\tDLT_PRISM_HEADER                        = 0x77\n\tDLT_PRONET                              = 0x4\n\tDLT_RAIF1                               = 0xc6\n\tDLT_RAW                                 = 0xc\n\tDLT_RIO                                 = 0x7c\n\tDLT_SCCP                                = 0x8e\n\tDLT_SITA                                = 0xc4\n\tDLT_SLIP                                = 0x8\n\tDLT_SLIP_BSDOS                          = 0xf\n\tDLT_STANAG_5066_D_PDU                   = 0xed\n\tDLT_SUNATM                              = 0x7b\n\tDLT_SYMANTEC_FIREWALL                   = 0x63\n\tDLT_TZSP                                = 0x80\n\tDLT_USB                                 = 0xba\n\tDLT_USB_DARWIN                          = 0x10a\n\tDLT_USB_LINUX                           = 0xbd\n\tDLT_USB_LINUX_MMAPPED                   = 0xdc\n\tDLT_USER0                               = 0x93\n\tDLT_USER1                               = 0x94\n\tDLT_USER10                              = 0x9d\n\tDLT_USER11                              = 0x9e\n\tDLT_USER12                              = 0x9f\n\tDLT_USER13                              = 0xa0\n\tDLT_USER14                              = 0xa1\n\tDLT_USER15                              = 0xa2\n\tDLT_USER2                               = 0x95\n\tDLT_USER3                               = 0x96\n\tDLT_USER4                               = 0x97\n\tDLT_USER5                               = 0x98\n\tDLT_USER6                               = 0x99\n\tDLT_USER7                               = 0x9a\n\tDLT_USER8                               = 0x9b\n\tDLT_USER9                               = 0x9c\n\tDLT_WIHART                              = 0xdf\n\tDLT_X2E_SERIAL                          = 0xd5\n\tDLT_X2E_XORAYA                          = 0xd6\n\tDT_BLK                                  = 0x6\n\tDT_CHR                                  = 0x2\n\tDT_DIR                                  = 0x4\n\tDT_FIFO                                 = 0x1\n\tDT_LNK                                  = 0xa\n\tDT_REG                                  = 0x8\n\tDT_SOCK                                 = 0xc\n\tDT_UNKNOWN                              = 0x0\n\tDT_WHT                                  = 0xe\n\tECHO                                    = 0x8\n\tECHOCTL                                 = 0x40\n\tECHOE                                   = 0x2\n\tECHOK                                   = 0x4\n\tECHOKE                                  = 0x1\n\tECHONL                                  = 0x10\n\tECHOPRT                                 = 0x20\n\tEVFILT_AIO                              = -0x3\n\tEVFILT_EXCEPT                           = -0xf\n\tEVFILT_FS                               = -0x9\n\tEVFILT_MACHPORT                         = -0x8\n\tEVFILT_PROC                             = -0x5\n\tEVFILT_READ                             = -0x1\n\tEVFILT_SIGNAL                           = -0x6\n\tEVFILT_SYSCOUNT                         = 0x11\n\tEVFILT_THREADMARKER                     = 0x11\n\tEVFILT_TIMER                            = -0x7\n\tEVFILT_USER                             = -0xa\n\tEVFILT_VM                               = -0xc\n\tEVFILT_VNODE                            = -0x4\n\tEVFILT_WRITE                            = -0x2\n\tEV_ADD                                  = 0x1\n\tEV_CLEAR                                = 0x20\n\tEV_DELETE                               = 0x2\n\tEV_DISABLE                              = 0x8\n\tEV_DISPATCH                             = 0x80\n\tEV_DISPATCH2                            = 0x180\n\tEV_ENABLE                               = 0x4\n\tEV_EOF                                  = 0x8000\n\tEV_ERROR                                = 0x4000\n\tEV_FLAG0                                = 0x1000\n\tEV_FLAG1                                = 0x2000\n\tEV_ONESHOT                              = 0x10\n\tEV_OOBAND                               = 0x2000\n\tEV_POLL                                 = 0x1000\n\tEV_RECEIPT                              = 0x40\n\tEV_SYSFLAGS                             = 0xf000\n\tEV_UDATA_SPECIFIC                       = 0x100\n\tEV_VANISHED                             = 0x200\n\tEXTA                                    = 0x4b00\n\tEXTB                                    = 0x9600\n\tEXTPROC                                 = 0x800\n\tFD_CLOEXEC                              = 0x1\n\tFD_SETSIZE                              = 0x400\n\tFF0                                     = 0x0\n\tFF1                                     = 0x4000\n\tFFDLY                                   = 0x4000\n\tFLUSHO                                  = 0x800000\n\tFSOPT_ATTR_CMN_EXTENDED                 = 0x20\n\tFSOPT_NOFOLLOW                          = 0x1\n\tFSOPT_NOINMEMUPDATE                     = 0x2\n\tFSOPT_PACK_INVAL_ATTRS                  = 0x8\n\tFSOPT_REPORT_FULLSIZE                   = 0x4\n\tFSOPT_RETURN_REALDEV                    = 0x200\n\tF_ADDFILESIGS                           = 0x3d\n\tF_ADDFILESIGS_FOR_DYLD_SIM              = 0x53\n\tF_ADDFILESIGS_INFO                      = 0x67\n\tF_ADDFILESIGS_RETURN                    = 0x61\n\tF_ADDFILESUPPL                          = 0x68\n\tF_ADDSIGS                               = 0x3b\n\tF_ALLOCATEALL                           = 0x4\n\tF_ALLOCATECONTIG                        = 0x2\n\tF_BARRIERFSYNC                          = 0x55\n\tF_CHECK_LV                              = 0x62\n\tF_CHKCLEAN                              = 0x29\n\tF_DUPFD                                 = 0x0\n\tF_DUPFD_CLOEXEC                         = 0x43\n\tF_FINDSIGS                              = 0x4e\n\tF_FLUSH_DATA                            = 0x28\n\tF_FREEZE_FS                             = 0x35\n\tF_FULLFSYNC                             = 0x33\n\tF_GETCODEDIR                            = 0x48\n\tF_GETFD                                 = 0x1\n\tF_GETFL                                 = 0x3\n\tF_GETLK                                 = 0x7\n\tF_GETLKPID                              = 0x42\n\tF_GETNOSIGPIPE                          = 0x4a\n\tF_GETOWN                                = 0x5\n\tF_GETPATH                               = 0x32\n\tF_GETPATH_MTMINFO                       = 0x47\n\tF_GETPATH_NOFIRMLINK                    = 0x66\n\tF_GETPROTECTIONCLASS                    = 0x3f\n\tF_GETPROTECTIONLEVEL                    = 0x4d\n\tF_GETSIGSINFO                           = 0x69\n\tF_GLOBAL_NOCACHE                        = 0x37\n\tF_LOG2PHYS                              = 0x31\n\tF_LOG2PHYS_EXT                          = 0x41\n\tF_NOCACHE                               = 0x30\n\tF_NODIRECT                              = 0x3e\n\tF_OK                                    = 0x0\n\tF_PATHPKG_CHECK                         = 0x34\n\tF_PEOFPOSMODE                           = 0x3\n\tF_PREALLOCATE                           = 0x2a\n\tF_PUNCHHOLE                             = 0x63\n\tF_RDADVISE                              = 0x2c\n\tF_RDAHEAD                               = 0x2d\n\tF_RDLCK                                 = 0x1\n\tF_SETBACKINGSTORE                       = 0x46\n\tF_SETFD                                 = 0x2\n\tF_SETFL                                 = 0x4\n\tF_SETLK                                 = 0x8\n\tF_SETLKW                                = 0x9\n\tF_SETLKWTIMEOUT                         = 0xa\n\tF_SETNOSIGPIPE                          = 0x49\n\tF_SETOWN                                = 0x6\n\tF_SETPROTECTIONCLASS                    = 0x40\n\tF_SETSIZE                               = 0x2b\n\tF_SINGLE_WRITER                         = 0x4c\n\tF_SPECULATIVE_READ                      = 0x65\n\tF_THAW_FS                               = 0x36\n\tF_TRANSCODEKEY                          = 0x4b\n\tF_TRIM_ACTIVE_FILE                      = 0x64\n\tF_UNLCK                                 = 0x2\n\tF_VOLPOSMODE                            = 0x4\n\tF_WRLCK                                 = 0x3\n\tHUPCL                                   = 0x4000\n\tHW_MACHINE                              = 0x1\n\tICANON                                  = 0x100\n\tICMP6_FILTER                            = 0x12\n\tICRNL                                   = 0x100\n\tIEXTEN                                  = 0x400\n\tIFF_ALLMULTI                            = 0x200\n\tIFF_ALTPHYS                             = 0x4000\n\tIFF_BROADCAST                           = 0x2\n\tIFF_DEBUG                               = 0x4\n\tIFF_LINK0                               = 0x1000\n\tIFF_LINK1                               = 0x2000\n\tIFF_LINK2                               = 0x4000\n\tIFF_LOOPBACK                            = 0x8\n\tIFF_MULTICAST                           = 0x8000\n\tIFF_NOARP                               = 0x80\n\tIFF_NOTRAILERS                          = 0x20\n\tIFF_OACTIVE                             = 0x400\n\tIFF_POINTOPOINT                         = 0x10\n\tIFF_PROMISC                             = 0x100\n\tIFF_RUNNING                             = 0x40\n\tIFF_SIMPLEX                             = 0x800\n\tIFF_UP                                  = 0x1\n\tIFNAMSIZ                                = 0x10\n\tIFT_1822                                = 0x2\n\tIFT_6LOWPAN                             = 0x40\n\tIFT_AAL5                                = 0x31\n\tIFT_ARCNET                              = 0x23\n\tIFT_ARCNETPLUS                          = 0x24\n\tIFT_ATM                                 = 0x25\n\tIFT_BRIDGE                              = 0xd1\n\tIFT_CARP                                = 0xf8\n\tIFT_CELLULAR                            = 0xff\n\tIFT_CEPT                                = 0x13\n\tIFT_DS3                                 = 0x1e\n\tIFT_ENC                                 = 0xf4\n\tIFT_EON                                 = 0x19\n\tIFT_ETHER                               = 0x6\n\tIFT_FAITH                               = 0x38\n\tIFT_FDDI                                = 0xf\n\tIFT_FRELAY                              = 0x20\n\tIFT_FRELAYDCE                           = 0x2c\n\tIFT_GIF                                 = 0x37\n\tIFT_HDH1822                             = 0x3\n\tIFT_HIPPI                               = 0x2f\n\tIFT_HSSI                                = 0x2e\n\tIFT_HY                                  = 0xe\n\tIFT_IEEE1394                            = 0x90\n\tIFT_IEEE8023ADLAG                       = 0x88\n\tIFT_ISDNBASIC                           = 0x14\n\tIFT_ISDNPRIMARY                         = 0x15\n\tIFT_ISO88022LLC                         = 0x29\n\tIFT_ISO88023                            = 0x7\n\tIFT_ISO88024                            = 0x8\n\tIFT_ISO88025                            = 0x9\n\tIFT_ISO88026                            = 0xa\n\tIFT_L2VLAN                              = 0x87\n\tIFT_LAPB                                = 0x10\n\tIFT_LOCALTALK                           = 0x2a\n\tIFT_LOOP                                = 0x18\n\tIFT_MIOX25                              = 0x26\n\tIFT_MODEM                               = 0x30\n\tIFT_NSIP                                = 0x1b\n\tIFT_OTHER                               = 0x1\n\tIFT_P10                                 = 0xc\n\tIFT_P80                                 = 0xd\n\tIFT_PARA                                = 0x22\n\tIFT_PDP                                 = 0xff\n\tIFT_PFLOG                               = 0xf5\n\tIFT_PFSYNC                              = 0xf6\n\tIFT_PKTAP                               = 0xfe\n\tIFT_PPP                                 = 0x17\n\tIFT_PROPMUX                             = 0x36\n\tIFT_PROPVIRTUAL                         = 0x35\n\tIFT_PTPSERIAL                           = 0x16\n\tIFT_RS232                               = 0x21\n\tIFT_SDLC                                = 0x11\n\tIFT_SIP                                 = 0x1f\n\tIFT_SLIP                                = 0x1c\n\tIFT_SMDSDXI                             = 0x2b\n\tIFT_SMDSICIP                            = 0x34\n\tIFT_SONET                               = 0x27\n\tIFT_SONETPATH                           = 0x32\n\tIFT_SONETVT                             = 0x33\n\tIFT_STARLAN                             = 0xb\n\tIFT_STF                                 = 0x39\n\tIFT_T1                                  = 0x12\n\tIFT_ULTRA                               = 0x1d\n\tIFT_V35                                 = 0x2d\n\tIFT_X25                                 = 0x5\n\tIFT_X25DDN                              = 0x4\n\tIFT_X25PLE                              = 0x28\n\tIFT_XETHER                              = 0x1a\n\tIGNBRK                                  = 0x1\n\tIGNCR                                   = 0x80\n\tIGNPAR                                  = 0x4\n\tIMAXBEL                                 = 0x2000\n\tINLCR                                   = 0x40\n\tINPCK                                   = 0x10\n\tIN_CLASSA_HOST                          = 0xffffff\n\tIN_CLASSA_MAX                           = 0x80\n\tIN_CLASSA_NET                           = 0xff000000\n\tIN_CLASSA_NSHIFT                        = 0x18\n\tIN_CLASSB_HOST                          = 0xffff\n\tIN_CLASSB_MAX                           = 0x10000\n\tIN_CLASSB_NET                           = 0xffff0000\n\tIN_CLASSB_NSHIFT                        = 0x10\n\tIN_CLASSC_HOST                          = 0xff\n\tIN_CLASSC_NET                           = 0xffffff00\n\tIN_CLASSC_NSHIFT                        = 0x8\n\tIN_CLASSD_HOST                          = 0xfffffff\n\tIN_CLASSD_NET                           = 0xf0000000\n\tIN_CLASSD_NSHIFT                        = 0x1c\n\tIN_LINKLOCALNETNUM                      = 0xa9fe0000\n\tIN_LOOPBACKNET                          = 0x7f\n\tIOCTL_VM_SOCKETS_GET_LOCAL_CID          = 0x400473d1\n\tIPPROTO_3PC                             = 0x22\n\tIPPROTO_ADFS                            = 0x44\n\tIPPROTO_AH                              = 0x33\n\tIPPROTO_AHIP                            = 0x3d\n\tIPPROTO_APES                            = 0x63\n\tIPPROTO_ARGUS                           = 0xd\n\tIPPROTO_AX25                            = 0x5d\n\tIPPROTO_BHA                             = 0x31\n\tIPPROTO_BLT                             = 0x1e\n\tIPPROTO_BRSATMON                        = 0x4c\n\tIPPROTO_CFTP                            = 0x3e\n\tIPPROTO_CHAOS                           = 0x10\n\tIPPROTO_CMTP                            = 0x26\n\tIPPROTO_CPHB                            = 0x49\n\tIPPROTO_CPNX                            = 0x48\n\tIPPROTO_DDP                             = 0x25\n\tIPPROTO_DGP                             = 0x56\n\tIPPROTO_DIVERT                          = 0xfe\n\tIPPROTO_DONE                            = 0x101\n\tIPPROTO_DSTOPTS                         = 0x3c\n\tIPPROTO_EGP                             = 0x8\n\tIPPROTO_EMCON                           = 0xe\n\tIPPROTO_ENCAP                           = 0x62\n\tIPPROTO_EON                             = 0x50\n\tIPPROTO_ESP                             = 0x32\n\tIPPROTO_ETHERIP                         = 0x61\n\tIPPROTO_FRAGMENT                        = 0x2c\n\tIPPROTO_GGP                             = 0x3\n\tIPPROTO_GMTP                            = 0x64\n\tIPPROTO_GRE                             = 0x2f\n\tIPPROTO_HELLO                           = 0x3f\n\tIPPROTO_HMP                             = 0x14\n\tIPPROTO_HOPOPTS                         = 0x0\n\tIPPROTO_ICMP                            = 0x1\n\tIPPROTO_ICMPV6                          = 0x3a\n\tIPPROTO_IDP                             = 0x16\n\tIPPROTO_IDPR                            = 0x23\n\tIPPROTO_IDRP                            = 0x2d\n\tIPPROTO_IGMP                            = 0x2\n\tIPPROTO_IGP                             = 0x55\n\tIPPROTO_IGRP                            = 0x58\n\tIPPROTO_IL                              = 0x28\n\tIPPROTO_INLSP                           = 0x34\n\tIPPROTO_INP                             = 0x20\n\tIPPROTO_IP                              = 0x0\n\tIPPROTO_IPCOMP                          = 0x6c\n\tIPPROTO_IPCV                            = 0x47\n\tIPPROTO_IPEIP                           = 0x5e\n\tIPPROTO_IPIP                            = 0x4\n\tIPPROTO_IPPC                            = 0x43\n\tIPPROTO_IPV4                            = 0x4\n\tIPPROTO_IPV6                            = 0x29\n\tIPPROTO_IRTP                            = 0x1c\n\tIPPROTO_KRYPTOLAN                       = 0x41\n\tIPPROTO_LARP                            = 0x5b\n\tIPPROTO_LEAF1                           = 0x19\n\tIPPROTO_LEAF2                           = 0x1a\n\tIPPROTO_MAX                             = 0x100\n\tIPPROTO_MAXID                           = 0x34\n\tIPPROTO_MEAS                            = 0x13\n\tIPPROTO_MHRP                            = 0x30\n\tIPPROTO_MICP                            = 0x5f\n\tIPPROTO_MTP                             = 0x5c\n\tIPPROTO_MUX                             = 0x12\n\tIPPROTO_ND                              = 0x4d\n\tIPPROTO_NHRP                            = 0x36\n\tIPPROTO_NONE                            = 0x3b\n\tIPPROTO_NSP                             = 0x1f\n\tIPPROTO_NVPII                           = 0xb\n\tIPPROTO_OSPFIGP                         = 0x59\n\tIPPROTO_PGM                             = 0x71\n\tIPPROTO_PIGP                            = 0x9\n\tIPPROTO_PIM                             = 0x67\n\tIPPROTO_PRM                             = 0x15\n\tIPPROTO_PUP                             = 0xc\n\tIPPROTO_PVP                             = 0x4b\n\tIPPROTO_RAW                             = 0xff\n\tIPPROTO_RCCMON                          = 0xa\n\tIPPROTO_RDP                             = 0x1b\n\tIPPROTO_ROUTING                         = 0x2b\n\tIPPROTO_RSVP                            = 0x2e\n\tIPPROTO_RVD                             = 0x42\n\tIPPROTO_SATEXPAK                        = 0x40\n\tIPPROTO_SATMON                          = 0x45\n\tIPPROTO_SCCSP                           = 0x60\n\tIPPROTO_SCTP                            = 0x84\n\tIPPROTO_SDRP                            = 0x2a\n\tIPPROTO_SEP                             = 0x21\n\tIPPROTO_SRPC                            = 0x5a\n\tIPPROTO_ST                              = 0x7\n\tIPPROTO_SVMTP                           = 0x52\n\tIPPROTO_SWIPE                           = 0x35\n\tIPPROTO_TCF                             = 0x57\n\tIPPROTO_TCP                             = 0x6\n\tIPPROTO_TP                              = 0x1d\n\tIPPROTO_TPXX                            = 0x27\n\tIPPROTO_TRUNK1                          = 0x17\n\tIPPROTO_TRUNK2                          = 0x18\n\tIPPROTO_TTP                             = 0x54\n\tIPPROTO_UDP                             = 0x11\n\tIPPROTO_VINES                           = 0x53\n\tIPPROTO_VISA                            = 0x46\n\tIPPROTO_VMTP                            = 0x51\n\tIPPROTO_WBEXPAK                         = 0x4f\n\tIPPROTO_WBMON                           = 0x4e\n\tIPPROTO_WSN                             = 0x4a\n\tIPPROTO_XNET                            = 0xf\n\tIPPROTO_XTP                             = 0x24\n\tIPV6_2292DSTOPTS                        = 0x17\n\tIPV6_2292HOPLIMIT                       = 0x14\n\tIPV6_2292HOPOPTS                        = 0x16\n\tIPV6_2292NEXTHOP                        = 0x15\n\tIPV6_2292PKTINFO                        = 0x13\n\tIPV6_2292PKTOPTIONS                     = 0x19\n\tIPV6_2292RTHDR                          = 0x18\n\tIPV6_3542DSTOPTS                        = 0x32\n\tIPV6_3542HOPLIMIT                       = 0x2f\n\tIPV6_3542HOPOPTS                        = 0x31\n\tIPV6_3542NEXTHOP                        = 0x30\n\tIPV6_3542PKTINFO                        = 0x2e\n\tIPV6_3542RTHDR                          = 0x33\n\tIPV6_ADDR_MC_FLAGS_PREFIX               = 0x20\n\tIPV6_ADDR_MC_FLAGS_TRANSIENT            = 0x10\n\tIPV6_ADDR_MC_FLAGS_UNICAST_BASED        = 0x30\n\tIPV6_AUTOFLOWLABEL                      = 0x3b\n\tIPV6_BINDV6ONLY                         = 0x1b\n\tIPV6_BOUND_IF                           = 0x7d\n\tIPV6_CHECKSUM                           = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS             = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP             = 0x1\n\tIPV6_DEFHLIM                            = 0x40\n\tIPV6_DONTFRAG                           = 0x3e\n\tIPV6_DSTOPTS                            = 0x32\n\tIPV6_FAITH                              = 0x1d\n\tIPV6_FLOWINFO_MASK                      = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK                     = 0xffff0f00\n\tIPV6_FLOW_ECN_MASK                      = 0x3000\n\tIPV6_FRAGTTL                            = 0x3c\n\tIPV6_FW_ADD                             = 0x1e\n\tIPV6_FW_DEL                             = 0x1f\n\tIPV6_FW_FLUSH                           = 0x20\n\tIPV6_FW_GET                             = 0x22\n\tIPV6_FW_ZERO                            = 0x21\n\tIPV6_HLIMDEC                            = 0x1\n\tIPV6_HOPLIMIT                           = 0x2f\n\tIPV6_HOPOPTS                            = 0x31\n\tIPV6_IPSEC_POLICY                       = 0x1c\n\tIPV6_JOIN_GROUP                         = 0xc\n\tIPV6_LEAVE_GROUP                        = 0xd\n\tIPV6_MAXHLIM                            = 0xff\n\tIPV6_MAXOPTHDR                          = 0x800\n\tIPV6_MAXPACKET                          = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER               = 0x200\n\tIPV6_MAX_MEMBERSHIPS                    = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER                = 0x80\n\tIPV6_MIN_MEMBERSHIPS                    = 0x1f\n\tIPV6_MMTU                               = 0x500\n\tIPV6_MSFILTER                           = 0x4a\n\tIPV6_MULTICAST_HOPS                     = 0xa\n\tIPV6_MULTICAST_IF                       = 0x9\n\tIPV6_MULTICAST_LOOP                     = 0xb\n\tIPV6_NEXTHOP                            = 0x30\n\tIPV6_PATHMTU                            = 0x2c\n\tIPV6_PKTINFO                            = 0x2e\n\tIPV6_PORTRANGE                          = 0xe\n\tIPV6_PORTRANGE_DEFAULT                  = 0x0\n\tIPV6_PORTRANGE_HIGH                     = 0x1\n\tIPV6_PORTRANGE_LOW                      = 0x2\n\tIPV6_PREFER_TEMPADDR                    = 0x3f\n\tIPV6_RECVDSTOPTS                        = 0x28\n\tIPV6_RECVHOPLIMIT                       = 0x25\n\tIPV6_RECVHOPOPTS                        = 0x27\n\tIPV6_RECVPATHMTU                        = 0x2b\n\tIPV6_RECVPKTINFO                        = 0x3d\n\tIPV6_RECVRTHDR                          = 0x26\n\tIPV6_RECVTCLASS                         = 0x23\n\tIPV6_RTHDR                              = 0x33\n\tIPV6_RTHDRDSTOPTS                       = 0x39\n\tIPV6_RTHDR_LOOSE                        = 0x0\n\tIPV6_RTHDR_STRICT                       = 0x1\n\tIPV6_RTHDR_TYPE_0                       = 0x0\n\tIPV6_SOCKOPT_RESERVED1                  = 0x3\n\tIPV6_TCLASS                             = 0x24\n\tIPV6_UNICAST_HOPS                       = 0x4\n\tIPV6_USE_MIN_MTU                        = 0x2a\n\tIPV6_V6ONLY                             = 0x1b\n\tIPV6_VERSION                            = 0x60\n\tIPV6_VERSION_MASK                       = 0xf0\n\tIP_ADD_MEMBERSHIP                       = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP                = 0x46\n\tIP_BLOCK_SOURCE                         = 0x48\n\tIP_BOUND_IF                             = 0x19\n\tIP_DEFAULT_MULTICAST_LOOP               = 0x1\n\tIP_DEFAULT_MULTICAST_TTL                = 0x1\n\tIP_DF                                   = 0x4000\n\tIP_DONTFRAG                             = 0x1c\n\tIP_DROP_MEMBERSHIP                      = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP               = 0x47\n\tIP_DUMMYNET_CONFIGURE                   = 0x3c\n\tIP_DUMMYNET_DEL                         = 0x3d\n\tIP_DUMMYNET_FLUSH                       = 0x3e\n\tIP_DUMMYNET_GET                         = 0x40\n\tIP_FAITH                                = 0x16\n\tIP_FW_ADD                               = 0x28\n\tIP_FW_DEL                               = 0x29\n\tIP_FW_FLUSH                             = 0x2a\n\tIP_FW_GET                               = 0x2c\n\tIP_FW_RESETLOG                          = 0x2d\n\tIP_FW_ZERO                              = 0x2b\n\tIP_HDRINCL                              = 0x2\n\tIP_IPSEC_POLICY                         = 0x15\n\tIP_MAXPACKET                            = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER                 = 0x200\n\tIP_MAX_MEMBERSHIPS                      = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER                 = 0x80\n\tIP_MAX_SOCK_SRC_FILTER                  = 0x80\n\tIP_MF                                   = 0x2000\n\tIP_MIN_MEMBERSHIPS                      = 0x1f\n\tIP_MSFILTER                             = 0x4a\n\tIP_MSS                                  = 0x240\n\tIP_MULTICAST_IF                         = 0x9\n\tIP_MULTICAST_IFINDEX                    = 0x42\n\tIP_MULTICAST_LOOP                       = 0xb\n\tIP_MULTICAST_TTL                        = 0xa\n\tIP_MULTICAST_VIF                        = 0xe\n\tIP_NAT__XXX                             = 0x37\n\tIP_OFFMASK                              = 0x1fff\n\tIP_OLD_FW_ADD                           = 0x32\n\tIP_OLD_FW_DEL                           = 0x33\n\tIP_OLD_FW_FLUSH                         = 0x34\n\tIP_OLD_FW_GET                           = 0x36\n\tIP_OLD_FW_RESETLOG                      = 0x38\n\tIP_OLD_FW_ZERO                          = 0x35\n\tIP_OPTIONS                              = 0x1\n\tIP_PKTINFO                              = 0x1a\n\tIP_PORTRANGE                            = 0x13\n\tIP_PORTRANGE_DEFAULT                    = 0x0\n\tIP_PORTRANGE_HIGH                       = 0x1\n\tIP_PORTRANGE_LOW                        = 0x2\n\tIP_RECVDSTADDR                          = 0x7\n\tIP_RECVIF                               = 0x14\n\tIP_RECVOPTS                             = 0x5\n\tIP_RECVPKTINFO                          = 0x1a\n\tIP_RECVRETOPTS                          = 0x6\n\tIP_RECVTOS                              = 0x1b\n\tIP_RECVTTL                              = 0x18\n\tIP_RETOPTS                              = 0x8\n\tIP_RF                                   = 0x8000\n\tIP_RSVP_OFF                             = 0x10\n\tIP_RSVP_ON                              = 0xf\n\tIP_RSVP_VIF_OFF                         = 0x12\n\tIP_RSVP_VIF_ON                          = 0x11\n\tIP_STRIPHDR                             = 0x17\n\tIP_TOS                                  = 0x3\n\tIP_TRAFFIC_MGT_BACKGROUND               = 0x41\n\tIP_TTL                                  = 0x4\n\tIP_UNBLOCK_SOURCE                       = 0x49\n\tISIG                                    = 0x80\n\tISTRIP                                  = 0x20\n\tIUTF8                                   = 0x4000\n\tIXANY                                   = 0x800\n\tIXOFF                                   = 0x400\n\tIXON                                    = 0x200\n\tKERN_HOSTNAME                           = 0xa\n\tKERN_OSRELEASE                          = 0x2\n\tKERN_OSTYPE                             = 0x1\n\tKERN_VERSION                            = 0x4\n\tLOCAL_PEERCRED                          = 0x1\n\tLOCAL_PEEREPID                          = 0x3\n\tLOCAL_PEEREUUID                         = 0x5\n\tLOCAL_PEERPID                           = 0x2\n\tLOCAL_PEERTOKEN                         = 0x6\n\tLOCAL_PEERUUID                          = 0x4\n\tLOCK_EX                                 = 0x2\n\tLOCK_NB                                 = 0x4\n\tLOCK_SH                                 = 0x1\n\tLOCK_UN                                 = 0x8\n\tMADV_CAN_REUSE                          = 0x9\n\tMADV_DONTNEED                           = 0x4\n\tMADV_FREE                               = 0x5\n\tMADV_FREE_REUSABLE                      = 0x7\n\tMADV_FREE_REUSE                         = 0x8\n\tMADV_NORMAL                             = 0x0\n\tMADV_PAGEOUT                            = 0xa\n\tMADV_RANDOM                             = 0x1\n\tMADV_SEQUENTIAL                         = 0x2\n\tMADV_WILLNEED                           = 0x3\n\tMADV_ZERO_WIRED_PAGES                   = 0x6\n\tMAP_32BIT                               = 0x8000\n\tMAP_ANON                                = 0x1000\n\tMAP_ANONYMOUS                           = 0x1000\n\tMAP_COPY                                = 0x2\n\tMAP_FILE                                = 0x0\n\tMAP_FIXED                               = 0x10\n\tMAP_HASSEMAPHORE                        = 0x200\n\tMAP_JIT                                 = 0x800\n\tMAP_NOCACHE                             = 0x400\n\tMAP_NOEXTEND                            = 0x100\n\tMAP_NORESERVE                           = 0x40\n\tMAP_PRIVATE                             = 0x2\n\tMAP_RENAME                              = 0x20\n\tMAP_RESERVED0080                        = 0x80\n\tMAP_RESILIENT_CODESIGN                  = 0x2000\n\tMAP_RESILIENT_MEDIA                     = 0x4000\n\tMAP_SHARED                              = 0x1\n\tMAP_TRANSLATED_ALLOW_EXECUTE            = 0x20000\n\tMAP_UNIX03                              = 0x40000\n\tMCAST_BLOCK_SOURCE                      = 0x54\n\tMCAST_EXCLUDE                           = 0x2\n\tMCAST_INCLUDE                           = 0x1\n\tMCAST_JOIN_GROUP                        = 0x50\n\tMCAST_JOIN_SOURCE_GROUP                 = 0x52\n\tMCAST_LEAVE_GROUP                       = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP                = 0x53\n\tMCAST_UNBLOCK_SOURCE                    = 0x55\n\tMCAST_UNDEFINED                         = 0x0\n\tMCL_CURRENT                             = 0x1\n\tMCL_FUTURE                              = 0x2\n\tMNT_ASYNC                               = 0x40\n\tMNT_AUTOMOUNTED                         = 0x400000\n\tMNT_CMDFLAGS                            = 0xf0000\n\tMNT_CPROTECT                            = 0x80\n\tMNT_DEFWRITE                            = 0x2000000\n\tMNT_DONTBROWSE                          = 0x100000\n\tMNT_DOVOLFS                             = 0x8000\n\tMNT_DWAIT                               = 0x4\n\tMNT_EXPORTED                            = 0x100\n\tMNT_EXT_ROOT_DATA_VOL                   = 0x1\n\tMNT_FORCE                               = 0x80000\n\tMNT_IGNORE_OWNERSHIP                    = 0x200000\n\tMNT_JOURNALED                           = 0x800000\n\tMNT_LOCAL                               = 0x1000\n\tMNT_MULTILABEL                          = 0x4000000\n\tMNT_NOATIME                             = 0x10000000\n\tMNT_NOBLOCK                             = 0x20000\n\tMNT_NODEV                               = 0x10\n\tMNT_NOEXEC                              = 0x4\n\tMNT_NOSUID                              = 0x8\n\tMNT_NOUSERXATTR                         = 0x1000000\n\tMNT_NOWAIT                              = 0x2\n\tMNT_QUARANTINE                          = 0x400\n\tMNT_QUOTA                               = 0x2000\n\tMNT_RDONLY                              = 0x1\n\tMNT_RELOAD                              = 0x40000\n\tMNT_REMOVABLE                           = 0x200\n\tMNT_ROOTFS                              = 0x4000\n\tMNT_SNAPSHOT                            = 0x40000000\n\tMNT_STRICTATIME                         = 0x80000000\n\tMNT_SYNCHRONOUS                         = 0x2\n\tMNT_UNION                               = 0x20\n\tMNT_UNKNOWNPERMISSIONS                  = 0x200000\n\tMNT_UPDATE                              = 0x10000\n\tMNT_VISFLAGMASK                         = 0xd7f0f7ff\n\tMNT_WAIT                                = 0x1\n\tMSG_CTRUNC                              = 0x20\n\tMSG_DONTROUTE                           = 0x4\n\tMSG_DONTWAIT                            = 0x80\n\tMSG_EOF                                 = 0x100\n\tMSG_EOR                                 = 0x8\n\tMSG_FLUSH                               = 0x400\n\tMSG_HAVEMORE                            = 0x2000\n\tMSG_HOLD                                = 0x800\n\tMSG_NEEDSA                              = 0x10000\n\tMSG_NOSIGNAL                            = 0x80000\n\tMSG_OOB                                 = 0x1\n\tMSG_PEEK                                = 0x2\n\tMSG_RCVMORE                             = 0x4000\n\tMSG_SEND                                = 0x1000\n\tMSG_TRUNC                               = 0x10\n\tMSG_WAITALL                             = 0x40\n\tMSG_WAITSTREAM                          = 0x200\n\tMS_ASYNC                                = 0x1\n\tMS_DEACTIVATE                           = 0x8\n\tMS_INVALIDATE                           = 0x2\n\tMS_KILLPAGES                            = 0x4\n\tMS_SYNC                                 = 0x10\n\tNAME_MAX                                = 0xff\n\tNET_RT_DUMP                             = 0x1\n\tNET_RT_DUMP2                            = 0x7\n\tNET_RT_FLAGS                            = 0x2\n\tNET_RT_FLAGS_PRIV                       = 0xa\n\tNET_RT_IFLIST                           = 0x3\n\tNET_RT_IFLIST2                          = 0x6\n\tNET_RT_MAXID                            = 0xb\n\tNET_RT_STAT                             = 0x4\n\tNET_RT_TRASH                            = 0x5\n\tNFDBITS                                 = 0x20\n\tNL0                                     = 0x0\n\tNL1                                     = 0x100\n\tNL2                                     = 0x200\n\tNL3                                     = 0x300\n\tNLDLY                                   = 0x300\n\tNOFLSH                                  = 0x80000000\n\tNOKERNINFO                              = 0x2000000\n\tNOTE_ABSOLUTE                           = 0x8\n\tNOTE_ATTRIB                             = 0x8\n\tNOTE_BACKGROUND                         = 0x40\n\tNOTE_CHILD                              = 0x4\n\tNOTE_CRITICAL                           = 0x20\n\tNOTE_DELETE                             = 0x1\n\tNOTE_EXEC                               = 0x20000000\n\tNOTE_EXIT                               = 0x80000000\n\tNOTE_EXITSTATUS                         = 0x4000000\n\tNOTE_EXIT_CSERROR                       = 0x40000\n\tNOTE_EXIT_DECRYPTFAIL                   = 0x10000\n\tNOTE_EXIT_DETAIL                        = 0x2000000\n\tNOTE_EXIT_DETAIL_MASK                   = 0x70000\n\tNOTE_EXIT_MEMORY                        = 0x20000\n\tNOTE_EXIT_REPARENTED                    = 0x80000\n\tNOTE_EXTEND                             = 0x4\n\tNOTE_FFAND                              = 0x40000000\n\tNOTE_FFCOPY                             = 0xc0000000\n\tNOTE_FFCTRLMASK                         = 0xc0000000\n\tNOTE_FFLAGSMASK                         = 0xffffff\n\tNOTE_FFNOP                              = 0x0\n\tNOTE_FFOR                               = 0x80000000\n\tNOTE_FORK                               = 0x40000000\n\tNOTE_FUNLOCK                            = 0x100\n\tNOTE_LEEWAY                             = 0x10\n\tNOTE_LINK                               = 0x10\n\tNOTE_LOWAT                              = 0x1\n\tNOTE_MACHTIME                           = 0x100\n\tNOTE_MACH_CONTINUOUS_TIME               = 0x80\n\tNOTE_NONE                               = 0x80\n\tNOTE_NSECONDS                           = 0x4\n\tNOTE_OOB                                = 0x2\n\tNOTE_PCTRLMASK                          = -0x100000\n\tNOTE_PDATAMASK                          = 0xfffff\n\tNOTE_REAP                               = 0x10000000\n\tNOTE_RENAME                             = 0x20\n\tNOTE_REVOKE                             = 0x40\n\tNOTE_SECONDS                            = 0x1\n\tNOTE_SIGNAL                             = 0x8000000\n\tNOTE_TRACK                              = 0x1\n\tNOTE_TRACKERR                           = 0x2\n\tNOTE_TRIGGER                            = 0x1000000\n\tNOTE_USECONDS                           = 0x2\n\tNOTE_VM_ERROR                           = 0x10000000\n\tNOTE_VM_PRESSURE                        = 0x80000000\n\tNOTE_VM_PRESSURE_SUDDEN_TERMINATE       = 0x20000000\n\tNOTE_VM_PRESSURE_TERMINATE              = 0x40000000\n\tNOTE_WRITE                              = 0x2\n\tOCRNL                                   = 0x10\n\tOFDEL                                   = 0x20000\n\tOFILL                                   = 0x80\n\tONLCR                                   = 0x2\n\tONLRET                                  = 0x40\n\tONOCR                                   = 0x20\n\tONOEOT                                  = 0x8\n\tOPOST                                   = 0x1\n\tOXTABS                                  = 0x4\n\tO_ACCMODE                               = 0x3\n\tO_ALERT                                 = 0x20000000\n\tO_APPEND                                = 0x8\n\tO_ASYNC                                 = 0x40\n\tO_CLOEXEC                               = 0x1000000\n\tO_CREAT                                 = 0x200\n\tO_DIRECTORY                             = 0x100000\n\tO_DP_GETRAWENCRYPTED                    = 0x1\n\tO_DP_GETRAWUNENCRYPTED                  = 0x2\n\tO_DSYNC                                 = 0x400000\n\tO_EVTONLY                               = 0x8000\n\tO_EXCL                                  = 0x800\n\tO_EXLOCK                                = 0x20\n\tO_FSYNC                                 = 0x80\n\tO_NDELAY                                = 0x4\n\tO_NOCTTY                                = 0x20000\n\tO_NOFOLLOW                              = 0x100\n\tO_NOFOLLOW_ANY                          = 0x20000000\n\tO_NONBLOCK                              = 0x4\n\tO_POPUP                                 = 0x80000000\n\tO_RDONLY                                = 0x0\n\tO_RDWR                                  = 0x2\n\tO_SHLOCK                                = 0x10\n\tO_SYMLINK                               = 0x200000\n\tO_SYNC                                  = 0x80\n\tO_TRUNC                                 = 0x400\n\tO_WRONLY                                = 0x1\n\tPARENB                                  = 0x1000\n\tPARMRK                                  = 0x8\n\tPARODD                                  = 0x2000\n\tPENDIN                                  = 0x20000000\n\tPRIO_PGRP                               = 0x1\n\tPRIO_PROCESS                            = 0x0\n\tPRIO_USER                               = 0x2\n\tPROT_EXEC                               = 0x4\n\tPROT_NONE                               = 0x0\n\tPROT_READ                               = 0x1\n\tPROT_WRITE                              = 0x2\n\tPT_ATTACH                               = 0xa\n\tPT_ATTACHEXC                            = 0xe\n\tPT_CONTINUE                             = 0x7\n\tPT_DENY_ATTACH                          = 0x1f\n\tPT_DETACH                               = 0xb\n\tPT_FIRSTMACH                            = 0x20\n\tPT_FORCEQUOTA                           = 0x1e\n\tPT_KILL                                 = 0x8\n\tPT_READ_D                               = 0x2\n\tPT_READ_I                               = 0x1\n\tPT_READ_U                               = 0x3\n\tPT_SIGEXC                               = 0xc\n\tPT_STEP                                 = 0x9\n\tPT_THUPDATE                             = 0xd\n\tPT_TRACE_ME                             = 0x0\n\tPT_WRITE_D                              = 0x5\n\tPT_WRITE_I                              = 0x4\n\tPT_WRITE_U                              = 0x6\n\tRLIMIT_AS                               = 0x5\n\tRLIMIT_CORE                             = 0x4\n\tRLIMIT_CPU                              = 0x0\n\tRLIMIT_CPU_USAGE_MONITOR                = 0x2\n\tRLIMIT_DATA                             = 0x2\n\tRLIMIT_FSIZE                            = 0x1\n\tRLIMIT_MEMLOCK                          = 0x6\n\tRLIMIT_NOFILE                           = 0x8\n\tRLIMIT_NPROC                            = 0x7\n\tRLIMIT_RSS                              = 0x5\n\tRLIMIT_STACK                            = 0x3\n\tRLIM_INFINITY                           = 0x7fffffffffffffff\n\tRTAX_AUTHOR                             = 0x6\n\tRTAX_BRD                                = 0x7\n\tRTAX_DST                                = 0x0\n\tRTAX_GATEWAY                            = 0x1\n\tRTAX_GENMASK                            = 0x3\n\tRTAX_IFA                                = 0x5\n\tRTAX_IFP                                = 0x4\n\tRTAX_MAX                                = 0x8\n\tRTAX_NETMASK                            = 0x2\n\tRTA_AUTHOR                              = 0x40\n\tRTA_BRD                                 = 0x80\n\tRTA_DST                                 = 0x1\n\tRTA_GATEWAY                             = 0x2\n\tRTA_GENMASK                             = 0x8\n\tRTA_IFA                                 = 0x20\n\tRTA_IFP                                 = 0x10\n\tRTA_NETMASK                             = 0x4\n\tRTF_BLACKHOLE                           = 0x1000\n\tRTF_BROADCAST                           = 0x400000\n\tRTF_CLONING                             = 0x100\n\tRTF_CONDEMNED                           = 0x2000000\n\tRTF_DEAD                                = 0x20000000\n\tRTF_DELCLONE                            = 0x80\n\tRTF_DONE                                = 0x40\n\tRTF_DYNAMIC                             = 0x10\n\tRTF_GATEWAY                             = 0x2\n\tRTF_GLOBAL                              = 0x40000000\n\tRTF_HOST                                = 0x4\n\tRTF_IFREF                               = 0x4000000\n\tRTF_IFSCOPE                             = 0x1000000\n\tRTF_LLDATA                              = 0x400\n\tRTF_LLINFO                              = 0x400\n\tRTF_LOCAL                               = 0x200000\n\tRTF_MODIFIED                            = 0x20\n\tRTF_MULTICAST                           = 0x800000\n\tRTF_NOIFREF                             = 0x2000\n\tRTF_PINNED                              = 0x100000\n\tRTF_PRCLONING                           = 0x10000\n\tRTF_PROTO1                              = 0x8000\n\tRTF_PROTO2                              = 0x4000\n\tRTF_PROTO3                              = 0x40000\n\tRTF_PROXY                               = 0x8000000\n\tRTF_REJECT                              = 0x8\n\tRTF_ROUTER                              = 0x10000000\n\tRTF_STATIC                              = 0x800\n\tRTF_UP                                  = 0x1\n\tRTF_WASCLONED                           = 0x20000\n\tRTF_XRESOLVE                            = 0x200\n\tRTM_ADD                                 = 0x1\n\tRTM_CHANGE                              = 0x3\n\tRTM_DELADDR                             = 0xd\n\tRTM_DELETE                              = 0x2\n\tRTM_DELMADDR                            = 0x10\n\tRTM_GET                                 = 0x4\n\tRTM_GET2                                = 0x14\n\tRTM_IFINFO                              = 0xe\n\tRTM_IFINFO2                             = 0x12\n\tRTM_LOCK                                = 0x8\n\tRTM_LOSING                              = 0x5\n\tRTM_MISS                                = 0x7\n\tRTM_NEWADDR                             = 0xc\n\tRTM_NEWMADDR                            = 0xf\n\tRTM_NEWMADDR2                           = 0x13\n\tRTM_OLDADD                              = 0x9\n\tRTM_OLDDEL                              = 0xa\n\tRTM_REDIRECT                            = 0x6\n\tRTM_RESOLVE                             = 0xb\n\tRTM_RTTUNIT                             = 0xf4240\n\tRTM_VERSION                             = 0x5\n\tRTV_EXPIRE                              = 0x4\n\tRTV_HOPCOUNT                            = 0x2\n\tRTV_MTU                                 = 0x1\n\tRTV_RPIPE                               = 0x8\n\tRTV_RTT                                 = 0x40\n\tRTV_RTTVAR                              = 0x80\n\tRTV_SPIPE                               = 0x10\n\tRTV_SSTHRESH                            = 0x20\n\tRUSAGE_CHILDREN                         = -0x1\n\tRUSAGE_SELF                             = 0x0\n\tSCM_CREDS                               = 0x3\n\tSCM_RIGHTS                              = 0x1\n\tSCM_TIMESTAMP                           = 0x2\n\tSCM_TIMESTAMP_MONOTONIC                 = 0x4\n\tSEEK_CUR                                = 0x1\n\tSEEK_DATA                               = 0x4\n\tSEEK_END                                = 0x2\n\tSEEK_HOLE                               = 0x3\n\tSEEK_SET                                = 0x0\n\tSF_APPEND                               = 0x40000\n\tSF_ARCHIVED                             = 0x10000\n\tSF_DATALESS                             = 0x40000000\n\tSF_FIRMLINK                             = 0x800000\n\tSF_IMMUTABLE                            = 0x20000\n\tSF_NOUNLINK                             = 0x100000\n\tSF_RESTRICTED                           = 0x80000\n\tSF_SETTABLE                             = 0x3fff0000\n\tSF_SUPPORTED                            = 0x9f0000\n\tSF_SYNTHETIC                            = 0xc0000000\n\tSHUT_RD                                 = 0x0\n\tSHUT_RDWR                               = 0x2\n\tSHUT_WR                                 = 0x1\n\tSIOCADDMULTI                            = 0x80206931\n\tSIOCAIFADDR                             = 0x8040691a\n\tSIOCARPIPLL                             = 0xc0206928\n\tSIOCATMARK                              = 0x40047307\n\tSIOCAUTOADDR                            = 0xc0206926\n\tSIOCAUTONETMASK                         = 0x80206927\n\tSIOCDELMULTI                            = 0x80206932\n\tSIOCDIFADDR                             = 0x80206919\n\tSIOCDIFPHYADDR                          = 0x80206941\n\tSIOCGDRVSPEC                            = 0xc028697b\n\tSIOCGETVLAN                             = 0xc020697f\n\tSIOCGHIWAT                              = 0x40047301\n\tSIOCGIF6LOWPAN                          = 0xc02069c5\n\tSIOCGIFADDR                             = 0xc0206921\n\tSIOCGIFALTMTU                           = 0xc0206948\n\tSIOCGIFASYNCMAP                         = 0xc020697c\n\tSIOCGIFBOND                             = 0xc0206947\n\tSIOCGIFBRDADDR                          = 0xc0206923\n\tSIOCGIFCAP                              = 0xc020695b\n\tSIOCGIFCONF                             = 0xc00c6924\n\tSIOCGIFDEVMTU                           = 0xc0206944\n\tSIOCGIFDSTADDR                          = 0xc0206922\n\tSIOCGIFFLAGS                            = 0xc0206911\n\tSIOCGIFFUNCTIONALTYPE                   = 0xc02069ad\n\tSIOCGIFGENERIC                          = 0xc020693a\n\tSIOCGIFKPI                              = 0xc0206987\n\tSIOCGIFMAC                              = 0xc0206982\n\tSIOCGIFMEDIA                            = 0xc02c6938\n\tSIOCGIFMETRIC                           = 0xc0206917\n\tSIOCGIFMTU                              = 0xc0206933\n\tSIOCGIFNETMASK                          = 0xc0206925\n\tSIOCGIFPDSTADDR                         = 0xc0206940\n\tSIOCGIFPHYS                             = 0xc0206935\n\tSIOCGIFPSRCADDR                         = 0xc020693f\n\tSIOCGIFSTATUS                           = 0xc331693d\n\tSIOCGIFVLAN                             = 0xc020697f\n\tSIOCGIFWAKEFLAGS                        = 0xc0206988\n\tSIOCGIFXMEDIA                           = 0xc02c6948\n\tSIOCGLOWAT                              = 0x40047303\n\tSIOCGPGRP                               = 0x40047309\n\tSIOCIFCREATE                            = 0xc0206978\n\tSIOCIFCREATE2                           = 0xc020697a\n\tSIOCIFDESTROY                           = 0x80206979\n\tSIOCIFGCLONERS                          = 0xc0106981\n\tSIOCRSLVMULTI                           = 0xc010693b\n\tSIOCSDRVSPEC                            = 0x8028697b\n\tSIOCSETVLAN                             = 0x8020697e\n\tSIOCSHIWAT                              = 0x80047300\n\tSIOCSIF6LOWPAN                          = 0x802069c4\n\tSIOCSIFADDR                             = 0x8020690c\n\tSIOCSIFALTMTU                           = 0x80206945\n\tSIOCSIFASYNCMAP                         = 0x8020697d\n\tSIOCSIFBOND                             = 0x80206946\n\tSIOCSIFBRDADDR                          = 0x80206913\n\tSIOCSIFCAP                              = 0x8020695a\n\tSIOCSIFDSTADDR                          = 0x8020690e\n\tSIOCSIFFLAGS                            = 0x80206910\n\tSIOCSIFGENERIC                          = 0x80206939\n\tSIOCSIFKPI                              = 0x80206986\n\tSIOCSIFLLADDR                           = 0x8020693c\n\tSIOCSIFMAC                              = 0x80206983\n\tSIOCSIFMEDIA                            = 0xc0206937\n\tSIOCSIFMETRIC                           = 0x80206918\n\tSIOCSIFMTU                              = 0x80206934\n\tSIOCSIFNETMASK                          = 0x80206916\n\tSIOCSIFPHYADDR                          = 0x8040693e\n\tSIOCSIFPHYS                             = 0x80206936\n\tSIOCSIFVLAN                             = 0x8020697e\n\tSIOCSLOWAT                              = 0x80047302\n\tSIOCSPGRP                               = 0x80047308\n\tSOCK_DGRAM                              = 0x2\n\tSOCK_MAXADDRLEN                         = 0xff\n\tSOCK_RAW                                = 0x3\n\tSOCK_RDM                                = 0x4\n\tSOCK_SEQPACKET                          = 0x5\n\tSOCK_STREAM                             = 0x1\n\tSOL_LOCAL                               = 0x0\n\tSOL_SOCKET                              = 0xffff\n\tSOMAXCONN                               = 0x80\n\tSO_ACCEPTCONN                           = 0x2\n\tSO_BROADCAST                            = 0x20\n\tSO_DEBUG                                = 0x1\n\tSO_DONTROUTE                            = 0x10\n\tSO_DONTTRUNC                            = 0x2000\n\tSO_ERROR                                = 0x1007\n\tSO_KEEPALIVE                            = 0x8\n\tSO_LABEL                                = 0x1010\n\tSO_LINGER                               = 0x80\n\tSO_LINGER_SEC                           = 0x1080\n\tSO_NETSVC_MARKING_LEVEL                 = 0x1119\n\tSO_NET_SERVICE_TYPE                     = 0x1116\n\tSO_NKE                                  = 0x1021\n\tSO_NOADDRERR                            = 0x1023\n\tSO_NOSIGPIPE                            = 0x1022\n\tSO_NOTIFYCONFLICT                       = 0x1026\n\tSO_NP_EXTENSIONS                        = 0x1083\n\tSO_NREAD                                = 0x1020\n\tSO_NUMRCVPKT                            = 0x1112\n\tSO_NWRITE                               = 0x1024\n\tSO_OOBINLINE                            = 0x100\n\tSO_PEERLABEL                            = 0x1011\n\tSO_RANDOMPORT                           = 0x1082\n\tSO_RCVBUF                               = 0x1002\n\tSO_RCVLOWAT                             = 0x1004\n\tSO_RCVTIMEO                             = 0x1006\n\tSO_REUSEADDR                            = 0x4\n\tSO_REUSEPORT                            = 0x200\n\tSO_REUSESHAREUID                        = 0x1025\n\tSO_SNDBUF                               = 0x1001\n\tSO_SNDLOWAT                             = 0x1003\n\tSO_SNDTIMEO                             = 0x1005\n\tSO_TIMESTAMP                            = 0x400\n\tSO_TIMESTAMP_MONOTONIC                  = 0x800\n\tSO_TRACKER_ATTRIBUTE_FLAGS_APP_APPROVED = 0x1\n\tSO_TRACKER_ATTRIBUTE_FLAGS_DOMAIN_SHORT = 0x4\n\tSO_TRACKER_ATTRIBUTE_FLAGS_TRACKER      = 0x2\n\tSO_TRACKER_TRANSPARENCY_VERSION         = 0x3\n\tSO_TYPE                                 = 0x1008\n\tSO_UPCALLCLOSEWAIT                      = 0x1027\n\tSO_USELOOPBACK                          = 0x40\n\tSO_WANTMORE                             = 0x4000\n\tSO_WANTOOBFLAG                          = 0x8000\n\tS_IEXEC                                 = 0x40\n\tS_IFBLK                                 = 0x6000\n\tS_IFCHR                                 = 0x2000\n\tS_IFDIR                                 = 0x4000\n\tS_IFIFO                                 = 0x1000\n\tS_IFLNK                                 = 0xa000\n\tS_IFMT                                  = 0xf000\n\tS_IFREG                                 = 0x8000\n\tS_IFSOCK                                = 0xc000\n\tS_IFWHT                                 = 0xe000\n\tS_IREAD                                 = 0x100\n\tS_IRGRP                                 = 0x20\n\tS_IROTH                                 = 0x4\n\tS_IRUSR                                 = 0x100\n\tS_IRWXG                                 = 0x38\n\tS_IRWXO                                 = 0x7\n\tS_IRWXU                                 = 0x1c0\n\tS_ISGID                                 = 0x400\n\tS_ISTXT                                 = 0x200\n\tS_ISUID                                 = 0x800\n\tS_ISVTX                                 = 0x200\n\tS_IWGRP                                 = 0x10\n\tS_IWOTH                                 = 0x2\n\tS_IWRITE                                = 0x80\n\tS_IWUSR                                 = 0x80\n\tS_IXGRP                                 = 0x8\n\tS_IXOTH                                 = 0x1\n\tS_IXUSR                                 = 0x40\n\tTAB0                                    = 0x0\n\tTAB1                                    = 0x400\n\tTAB2                                    = 0x800\n\tTAB3                                    = 0x4\n\tTABDLY                                  = 0xc04\n\tTCIFLUSH                                = 0x1\n\tTCIOFF                                  = 0x3\n\tTCIOFLUSH                               = 0x3\n\tTCION                                   = 0x4\n\tTCOFLUSH                                = 0x2\n\tTCOOFF                                  = 0x1\n\tTCOON                                   = 0x2\n\tTCPOPT_CC                               = 0xb\n\tTCPOPT_CCECHO                           = 0xd\n\tTCPOPT_CCNEW                            = 0xc\n\tTCPOPT_EOL                              = 0x0\n\tTCPOPT_FASTOPEN                         = 0x22\n\tTCPOPT_MAXSEG                           = 0x2\n\tTCPOPT_NOP                              = 0x1\n\tTCPOPT_SACK                             = 0x5\n\tTCPOPT_SACK_HDR                         = 0x1010500\n\tTCPOPT_SACK_PERMITTED                   = 0x4\n\tTCPOPT_SACK_PERMIT_HDR                  = 0x1010402\n\tTCPOPT_SIGNATURE                        = 0x13\n\tTCPOPT_TIMESTAMP                        = 0x8\n\tTCPOPT_TSTAMP_HDR                       = 0x101080a\n\tTCPOPT_WINDOW                           = 0x3\n\tTCP_CONNECTIONTIMEOUT                   = 0x20\n\tTCP_CONNECTION_INFO                     = 0x106\n\tTCP_ENABLE_ECN                          = 0x104\n\tTCP_FASTOPEN                            = 0x105\n\tTCP_KEEPALIVE                           = 0x10\n\tTCP_KEEPCNT                             = 0x102\n\tTCP_KEEPINTVL                           = 0x101\n\tTCP_MAXHLEN                             = 0x3c\n\tTCP_MAXOLEN                             = 0x28\n\tTCP_MAXSEG                              = 0x2\n\tTCP_MAXWIN                              = 0xffff\n\tTCP_MAX_SACK                            = 0x4\n\tTCP_MAX_WINSHIFT                        = 0xe\n\tTCP_MINMSS                              = 0xd8\n\tTCP_MSS                                 = 0x200\n\tTCP_NODELAY                             = 0x1\n\tTCP_NOOPT                               = 0x8\n\tTCP_NOPUSH                              = 0x4\n\tTCP_NOTSENT_LOWAT                       = 0x201\n\tTCP_RXT_CONNDROPTIME                    = 0x80\n\tTCP_RXT_FINDROP                         = 0x100\n\tTCP_SENDMOREACKS                        = 0x103\n\tTCSAFLUSH                               = 0x2\n\tTIOCCBRK                                = 0x2000747a\n\tTIOCCDTR                                = 0x20007478\n\tTIOCCONS                                = 0x80047462\n\tTIOCDCDTIMESTAMP                        = 0x40107458\n\tTIOCDRAIN                               = 0x2000745e\n\tTIOCDSIMICROCODE                        = 0x20007455\n\tTIOCEXCL                                = 0x2000740d\n\tTIOCEXT                                 = 0x80047460\n\tTIOCFLUSH                               = 0x80047410\n\tTIOCGDRAINWAIT                          = 0x40047456\n\tTIOCGETA                                = 0x40487413\n\tTIOCGETD                                = 0x4004741a\n\tTIOCGPGRP                               = 0x40047477\n\tTIOCGWINSZ                              = 0x40087468\n\tTIOCIXOFF                               = 0x20007480\n\tTIOCIXON                                = 0x20007481\n\tTIOCMBIC                                = 0x8004746b\n\tTIOCMBIS                                = 0x8004746c\n\tTIOCMGDTRWAIT                           = 0x4004745a\n\tTIOCMGET                                = 0x4004746a\n\tTIOCMODG                                = 0x40047403\n\tTIOCMODS                                = 0x80047404\n\tTIOCMSDTRWAIT                           = 0x8004745b\n\tTIOCMSET                                = 0x8004746d\n\tTIOCM_CAR                               = 0x40\n\tTIOCM_CD                                = 0x40\n\tTIOCM_CTS                               = 0x20\n\tTIOCM_DSR                               = 0x100\n\tTIOCM_DTR                               = 0x2\n\tTIOCM_LE                                = 0x1\n\tTIOCM_RI                                = 0x80\n\tTIOCM_RNG                               = 0x80\n\tTIOCM_RTS                               = 0x4\n\tTIOCM_SR                                = 0x10\n\tTIOCM_ST                                = 0x8\n\tTIOCNOTTY                               = 0x20007471\n\tTIOCNXCL                                = 0x2000740e\n\tTIOCOUTQ                                = 0x40047473\n\tTIOCPKT                                 = 0x80047470\n\tTIOCPKT_DATA                            = 0x0\n\tTIOCPKT_DOSTOP                          = 0x20\n\tTIOCPKT_FLUSHREAD                       = 0x1\n\tTIOCPKT_FLUSHWRITE                      = 0x2\n\tTIOCPKT_IOCTL                           = 0x40\n\tTIOCPKT_NOSTOP                          = 0x10\n\tTIOCPKT_START                           = 0x8\n\tTIOCPKT_STOP                            = 0x4\n\tTIOCPTYGNAME                            = 0x40807453\n\tTIOCPTYGRANT                            = 0x20007454\n\tTIOCPTYUNLK                             = 0x20007452\n\tTIOCREMOTE                              = 0x80047469\n\tTIOCSBRK                                = 0x2000747b\n\tTIOCSCONS                               = 0x20007463\n\tTIOCSCTTY                               = 0x20007461\n\tTIOCSDRAINWAIT                          = 0x80047457\n\tTIOCSDTR                                = 0x20007479\n\tTIOCSETA                                = 0x80487414\n\tTIOCSETAF                               = 0x80487416\n\tTIOCSETAW                               = 0x80487415\n\tTIOCSETD                                = 0x8004741b\n\tTIOCSIG                                 = 0x2000745f\n\tTIOCSPGRP                               = 0x80047476\n\tTIOCSTART                               = 0x2000746e\n\tTIOCSTAT                                = 0x20007465\n\tTIOCSTI                                 = 0x80017472\n\tTIOCSTOP                                = 0x2000746f\n\tTIOCSWINSZ                              = 0x80087467\n\tTIOCTIMESTAMP                           = 0x40107459\n\tTIOCUCNTL                               = 0x80047466\n\tTOSTOP                                  = 0x400000\n\tUF_APPEND                               = 0x4\n\tUF_COMPRESSED                           = 0x20\n\tUF_DATAVAULT                            = 0x80\n\tUF_HIDDEN                               = 0x8000\n\tUF_IMMUTABLE                            = 0x2\n\tUF_NODUMP                               = 0x1\n\tUF_OPAQUE                               = 0x8\n\tUF_SETTABLE                             = 0xffff\n\tUF_TRACKED                              = 0x40\n\tVDISCARD                                = 0xf\n\tVDSUSP                                  = 0xb\n\tVEOF                                    = 0x0\n\tVEOL                                    = 0x1\n\tVEOL2                                   = 0x2\n\tVERASE                                  = 0x3\n\tVINTR                                   = 0x8\n\tVKILL                                   = 0x5\n\tVLNEXT                                  = 0xe\n\tVMADDR_CID_ANY                          = 0xffffffff\n\tVMADDR_CID_HOST                         = 0x2\n\tVMADDR_CID_HYPERVISOR                   = 0x0\n\tVMADDR_CID_RESERVED                     = 0x1\n\tVMADDR_PORT_ANY                         = 0xffffffff\n\tVMIN                                    = 0x10\n\tVM_LOADAVG                              = 0x2\n\tVM_MACHFACTOR                           = 0x4\n\tVM_MAXID                                = 0x6\n\tVM_METER                                = 0x1\n\tVM_SWAPUSAGE                            = 0x5\n\tVQUIT                                   = 0x9\n\tVREPRINT                                = 0x6\n\tVSTART                                  = 0xc\n\tVSTATUS                                 = 0x12\n\tVSTOP                                   = 0xd\n\tVSUSP                                   = 0xa\n\tVT0                                     = 0x0\n\tVT1                                     = 0x10000\n\tVTDLY                                   = 0x10000\n\tVTIME                                   = 0x11\n\tVWERASE                                 = 0x4\n\tWCONTINUED                              = 0x10\n\tWCOREFLAG                               = 0x80\n\tWEXITED                                 = 0x4\n\tWNOHANG                                 = 0x1\n\tWNOWAIT                                 = 0x20\n\tWORDSIZE                                = 0x40\n\tWSTOPPED                                = 0x8\n\tWUNTRACED                               = 0x2\n\tXATTR_CREATE                            = 0x2\n\tXATTR_NODEFAULT                         = 0x10\n\tXATTR_NOFOLLOW                          = 0x1\n\tXATTR_NOSECURITY                        = 0x8\n\tXATTR_REPLACE                           = 0x4\n\tXATTR_SHOWCOMPRESSION                   = 0x20\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADARCH        = syscall.Errno(0x56)\n\tEBADEXEC        = syscall.Errno(0x55)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMACHO       = syscall.Errno(0x58)\n\tEBADMSG         = syscall.Errno(0x5e)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x59)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDEVERR         = syscall.Errno(0x53)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x5a)\n\tEILSEQ          = syscall.Errno(0x5c)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x6a)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5f)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x60)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x61)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5b)\n\tENOPOLICY       = syscall.Errno(0x67)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x62)\n\tENOSTR          = syscall.Errno(0x63)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x68)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x66)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x69)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x64)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEPWROFF         = syscall.Errno(0x52)\n\tEQFULL          = syscall.Errno(0x6a)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHLIBVERS      = syscall.Errno(0x57)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x65)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EPWROFF\", \"device power is off\"},\n\t{83, \"EDEVERR\", \"device error\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EBADEXEC\", \"bad executable (or shared library)\"},\n\t{86, \"EBADARCH\", \"bad CPU type in executable\"},\n\t{87, \"ESHLIBVERS\", \"shared library version mismatch\"},\n\t{88, \"EBADMACHO\", \"malformed Mach-o file\"},\n\t{89, \"ECANCELED\", \"operation canceled\"},\n\t{90, \"EIDRM\", \"identifier removed\"},\n\t{91, \"ENOMSG\", \"no message of desired type\"},\n\t{92, \"EILSEQ\", \"illegal byte sequence\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EBADMSG\", \"bad message\"},\n\t{95, \"EMULTIHOP\", \"EMULTIHOP (Reserved)\"},\n\t{96, \"ENODATA\", \"no message available on STREAM\"},\n\t{97, \"ENOLINK\", \"ENOLINK (Reserved)\"},\n\t{98, \"ENOSR\", \"no STREAM resources\"},\n\t{99, \"ENOSTR\", \"not a STREAM\"},\n\t{100, \"EPROTO\", \"protocol error\"},\n\t{101, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{102, \"EOPNOTSUPP\", \"operation not supported on socket\"},\n\t{103, \"ENOPOLICY\", \"policy not found\"},\n\t{104, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{105, \"EOWNERDEAD\", \"previous owner died\"},\n\t{106, \"EQFULL\", \"interface output queue is full\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_dragonfly_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ATM                            = 0x1e\n\tAF_BLUETOOTH                      = 0x21\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x23\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x1c\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x22\n\tAF_NATM                           = 0x1d\n\tAF_NETBIOS                        = 0x6\n\tAF_NETGRAPH                       = 0x20\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x18\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104279\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044272\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSEESENT                      = 0x40044276\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x2000427a\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044278\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x8010427b\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044273\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCSSEESENT                      = 0x80044277\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DEFAULTBUFSIZE                = 0x1000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x80000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MAX_CLONES                    = 0x80\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MOD                           = 0x90\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBPF_XOR                           = 0xa0\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_MONOTONIC                   = 0x4\n\tCLOCK_MONOTONIC_FAST              = 0xc\n\tCLOCK_MONOTONIC_PRECISE           = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID          = 0xf\n\tCLOCK_PROF                        = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_REALTIME_FAST               = 0xa\n\tCLOCK_REALTIME_PRECISE            = 0x9\n\tCLOCK_SECOND                      = 0xd\n\tCLOCK_THREAD_CPUTIME_ID           = 0xe\n\tCLOCK_UPTIME                      = 0x5\n\tCLOCK_UPTIME_FAST                 = 0x8\n\tCLOCK_UPTIME_PRECISE              = 0x7\n\tCLOCK_VIRTUAL                     = 0x1\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x30000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB            = 0xff\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_BLUETOOTH_LE_LL               = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR     = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR       = 0xfe\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CHDLC                         = 0x68\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DBUS                          = 0xe7\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_DVB_CI                        = 0xeb\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_EPON                          = 0x103\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HHDLC                         = 0x79\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NOFCS            = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_INFINIBAND                    = 0xf7\n\tDLT_IPFILTER                      = 0x74\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPMI_HPM_2                    = 0x104\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPOIB                         = 0xf2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_ISO_14443                     = 0x108\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_ATM_CEMIC             = 0xee\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL          = 0xea\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_SRX_E2E               = 0xe9\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_JUNIPER_VS                    = 0xe8\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MATCHING_MAX                  = 0x109\n\tDLT_MATCHING_MIN                  = 0x68\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPEG_2_TS                     = 0xf3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_MUX27010                      = 0xec\n\tDLT_NETANALYZER                   = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT       = 0xf1\n\tDLT_NETLINK                       = 0xfd\n\tDLT_NFC_LLCP                      = 0xf5\n\tDLT_NFLOG                         = 0xef\n\tDLT_NG40                          = 0xf4\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PKTAP                         = 0x102\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PROFIBUS_DL                   = 0x101\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RDS                           = 0x109\n\tDLT_REDBACK_SMARTEDGE             = 0x20\n\tDLT_RIO                           = 0x7c\n\tDLT_RTAC_SERIAL                   = 0xfa\n\tDLT_SCCP                          = 0x8e\n\tDLT_SCTP                          = 0xf8\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_STANAG_5066_D_PDU             = 0xed\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USB_FREEBSD                   = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDLT_WATTSTOPPER_DLM               = 0x107\n\tDLT_WIHART                        = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU           = 0xfc\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDLT_ZWAVE_R1_R2                   = 0x105\n\tDLT_ZWAVE_R3                      = 0x106\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DBF                            = 0xf\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_EXCEPT                     = -0x8\n\tEVFILT_FS                         = -0xa\n\tEVFILT_MARKER                     = 0xf\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0xa\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_USER                       = -0x9\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_HUP                            = 0x800\n\tEV_NODATA                         = 0x1000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTEXIT_LWP                       = 0x10000\n\tEXTEXIT_PROC                      = 0x0\n\tEXTEXIT_SETINT                    = 0x1\n\tEXTEXIT_SIMPLE                    = 0x0\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUP2FD                          = 0xa\n\tF_DUP2FD_CLOEXEC                  = 0x12\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0x11\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_ALTPHYS                       = 0x4000\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x318e72\n\tIFF_DEBUG                         = 0x4\n\tIFF_IDIRECT                       = 0x200000\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MONITOR                       = 0x40000\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NPOLLING                      = 0x100000\n\tIFF_OACTIVE                       = 0x400\n\tIFF_OACTIVE_COMPAT                = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_POLLING                       = 0x10000\n\tIFF_POLLING_COMPAT                = 0x10000\n\tIFF_PPROMISC                      = 0x20000\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_SMART                         = 0x20\n\tIFF_STATICARP                     = 0x80000\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xf3\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_MASK                   = 0xfffffffe\n\tIPPROTO_3PC                       = 0x22\n\tIPPROTO_ADFS                      = 0x44\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_AHIP                      = 0x3d\n\tIPPROTO_APES                      = 0x63\n\tIPPROTO_ARGUS                     = 0xd\n\tIPPROTO_AX25                      = 0x5d\n\tIPPROTO_BHA                       = 0x31\n\tIPPROTO_BLT                       = 0x1e\n\tIPPROTO_BRSATMON                  = 0x4c\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_CFTP                      = 0x3e\n\tIPPROTO_CHAOS                     = 0x10\n\tIPPROTO_CMTP                      = 0x26\n\tIPPROTO_CPHB                      = 0x49\n\tIPPROTO_CPNX                      = 0x48\n\tIPPROTO_DDP                       = 0x25\n\tIPPROTO_DGP                       = 0x56\n\tIPPROTO_DIVERT                    = 0xfe\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_EMCON                     = 0xe\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GMTP                      = 0x64\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HELLO                     = 0x3f\n\tIPPROTO_HMP                       = 0x14\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IDPR                      = 0x23\n\tIPPROTO_IDRP                      = 0x2d\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IGP                       = 0x55\n\tIPPROTO_IGRP                      = 0x58\n\tIPPROTO_IL                        = 0x28\n\tIPPROTO_INLSP                     = 0x34\n\tIPPROTO_INP                       = 0x20\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPCV                      = 0x47\n\tIPPROTO_IPEIP                     = 0x5e\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPPC                      = 0x43\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IRTP                      = 0x1c\n\tIPPROTO_KRYPTOLAN                 = 0x41\n\tIPPROTO_LARP                      = 0x5b\n\tIPPROTO_LEAF1                     = 0x19\n\tIPPROTO_LEAF2                     = 0x1a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MEAS                      = 0x13\n\tIPPROTO_MHRP                      = 0x30\n\tIPPROTO_MICP                      = 0x5f\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MTP                       = 0x5c\n\tIPPROTO_MUX                       = 0x12\n\tIPPROTO_ND                        = 0x4d\n\tIPPROTO_NHRP                      = 0x36\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_NSP                       = 0x1f\n\tIPPROTO_NVPII                     = 0xb\n\tIPPROTO_OSPFIGP                   = 0x59\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PGM                       = 0x71\n\tIPPROTO_PIGP                      = 0x9\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PRM                       = 0x15\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_PVP                       = 0x4b\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_RCCMON                    = 0xa\n\tIPPROTO_RDP                       = 0x1b\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_RVD                       = 0x42\n\tIPPROTO_SATEXPAK                  = 0x40\n\tIPPROTO_SATMON                    = 0x45\n\tIPPROTO_SCCSP                     = 0x60\n\tIPPROTO_SDRP                      = 0x2a\n\tIPPROTO_SEP                       = 0x21\n\tIPPROTO_SKIP                      = 0x39\n\tIPPROTO_SRPC                      = 0x5a\n\tIPPROTO_ST                        = 0x7\n\tIPPROTO_SVMTP                     = 0x52\n\tIPPROTO_SWIPE                     = 0x35\n\tIPPROTO_TCF                       = 0x57\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TLSP                      = 0x38\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_TPXX                      = 0x27\n\tIPPROTO_TRUNK1                    = 0x17\n\tIPPROTO_TRUNK2                    = 0x18\n\tIPPROTO_TTP                       = 0x54\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UNKNOWN                   = 0x102\n\tIPPROTO_VINES                     = 0x53\n\tIPPROTO_VISA                      = 0x46\n\tIPPROTO_VMTP                      = 0x51\n\tIPPROTO_WBEXPAK                   = 0x4f\n\tIPPROTO_WBMON                     = 0x4e\n\tIPPROTO_WSN                       = 0x4a\n\tIPPROTO_XNET                      = 0xf\n\tIPPROTO_XTP                       = 0x24\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_BINDV6ONLY                   = 0x1b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_FW_ADD                       = 0x1e\n\tIPV6_FW_DEL                       = 0x1f\n\tIPV6_FW_FLUSH                     = 0x20\n\tIPV6_FW_GET                       = 0x22\n\tIPV6_FW_ZERO                      = 0x21\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHLIM                      = 0x28\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MSFILTER                     = 0x4a\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PKTOPTIONS                   = 0x34\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_PREFER_TEMPADDR              = 0x3f\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_DUMMYNET_CONFIGURE             = 0x3c\n\tIP_DUMMYNET_DEL                   = 0x3d\n\tIP_DUMMYNET_FLUSH                 = 0x3e\n\tIP_DUMMYNET_GET                   = 0x40\n\tIP_FW_ADD                         = 0x32\n\tIP_FW_DEL                         = 0x33\n\tIP_FW_FLUSH                       = 0x34\n\tIP_FW_GET                         = 0x36\n\tIP_FW_RESETLOG                    = 0x37\n\tIP_FW_TBL_ADD                     = 0x2a\n\tIP_FW_TBL_CREATE                  = 0x28\n\tIP_FW_TBL_DEL                     = 0x2b\n\tIP_FW_TBL_DESTROY                 = 0x29\n\tIP_FW_TBL_EXPIRE                  = 0x2f\n\tIP_FW_TBL_FLUSH                   = 0x2c\n\tIP_FW_TBL_GET                     = 0x2d\n\tIP_FW_TBL_ZERO                    = 0x2e\n\tIP_FW_X                           = 0x31\n\tIP_FW_ZERO                        = 0x35\n\tIP_HDRINCL                        = 0x2\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x42\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_MULTICAST_VIF                  = 0xe\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x41\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RSVP_OFF                       = 0x10\n\tIP_RSVP_ON                        = 0xf\n\tIP_RSVP_VIF_OFF                   = 0x12\n\tIP_RSVP_VIF_ON                    = 0x11\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_AUTOSYNC                     = 0x7\n\tMADV_CONTROL_END                  = 0xb\n\tMADV_CONTROL_START                = 0xa\n\tMADV_CORE                         = 0x9\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x5\n\tMADV_INVAL                        = 0xa\n\tMADV_NOCORE                       = 0x8\n\tMADV_NORMAL                       = 0x0\n\tMADV_NOSYNC                       = 0x6\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SETMAP                       = 0xb\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_NOCORE                        = 0x20000\n\tMAP_NOEXTEND                      = 0x100\n\tMAP_NORESERVE                     = 0x40\n\tMAP_NOSYNC                        = 0x800\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_SIZEALIGN                     = 0x40000\n\tMAP_STACK                         = 0x400\n\tMAP_TRYFIXED                      = 0x10000\n\tMAP_VPAGETABLE                    = 0x2000\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_AUTOMOUNTED                   = 0x20\n\tMNT_CMDFLAGS                      = 0xf0000\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x20000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_IGNORE                        = 0x800000\n\tMNT_LAZY                          = 0x4\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x10000000\n\tMNT_NOCLUSTERR                    = 0x40000000\n\tMNT_NOCLUSTERW                    = 0x80000000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOSYMFOLLOW                   = 0x400000\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x200000\n\tMNT_SUIDDIR                       = 0x100000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_TRIM                          = 0x1000000\n\tMNT_UPDATE                        = 0x10000\n\tMNT_USER                          = 0x8000\n\tMNT_VISFLAGMASK                   = 0xf1f0ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_CMSG_CLOEXEC                  = 0x1000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOF                           = 0x100\n\tMSG_EOR                           = 0x8\n\tMSG_FBLOCKING                     = 0x10000\n\tMSG_FMASK                         = 0xffff0000\n\tMSG_FNONBLOCKING                  = 0x20000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_SYNC                          = 0x800\n\tMSG_TRUNC                         = 0x10\n\tMSG_UNUSED09                      = 0x200\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x0\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_MAXID                      = 0x4\n\tNFDBITS                           = 0x40\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FFAND                        = 0x40000000\n\tNOTE_FFCOPY                       = 0xc0000000\n\tNOTE_FFCTRLMASK                   = 0xc0000000\n\tNOTE_FFLAGSMASK                   = 0xffffff\n\tNOTE_FFNOP                        = 0x0\n\tNOTE_FFOR                         = 0x80000000\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x2\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRIGGER                      = 0x1000000\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x20000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x10000\n\tO_DIRECTORY                       = 0x8000000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FAPPEND                         = 0x100000\n\tO_FASYNCWRITE                     = 0x800000\n\tO_FBLOCKING                       = 0x40000\n\tO_FMASK                           = 0xfc0000\n\tO_FNONBLOCKING                    = 0x80000\n\tO_FOFFSET                         = 0x200000\n\tO_FSYNC                           = 0x80\n\tO_FSYNCWRITE                      = 0x400000\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0xb\n\tRTAX_MPLS1                        = 0x8\n\tRTAX_MPLS2                        = 0x9\n\tRTAX_MPLS3                        = 0xa\n\tRTAX_NETMASK                      = 0x2\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_MPLS1                         = 0x100\n\tRTA_MPLS2                         = 0x200\n\tRTA_MPLS3                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPLSOPS                       = 0x1000000\n\tRTF_MULTICAST                     = 0x800000\n\tRTF_PINNED                        = 0x100000\n\tRTF_PRCLONING                     = 0x10000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x40000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_WASCLONED                     = 0x20000\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DELMADDR                      = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x12\n\tRTM_IFANNOUNCE                    = 0x11\n\tRTM_IFINFO                        = 0xe\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_NEWMADDR                      = 0xf\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_VERSION                       = 0x7\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_IWCAPSEGS                     = 0x400\n\tRTV_IWMAXSEGS                     = 0x200\n\tRTV_MSL                           = 0x100\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x3\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x2\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCALIFADDR                      = 0x8118691b\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDLIFADDR                      = 0x8118691d\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETSGCNT                      = 0xc0207210\n\tSIOCGETVIFCNT                     = 0xc028720f\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFALIAS                      = 0xc0406929\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCAP                        = 0xc020691f\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc0206926\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFINDEX                      = 0xc0206920\n\tSIOCGIFMEDIA                      = 0xc0306938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc0206933\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPDSTADDR                   = 0xc0206948\n\tSIOCGIFPHYS                       = 0xc0206935\n\tSIOCGIFPOLLCPU                    = 0xc020697e\n\tSIOCGIFPSRCADDR                   = 0xc0206947\n\tSIOCGIFSTATUS                     = 0xc331693b\n\tSIOCGIFTSOLEN                     = 0xc0206980\n\tSIOCGLIFADDR                      = 0xc118691c\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPRIVATE_0                    = 0xc0206950\n\tSIOCGPRIVATE_1                    = 0xc0206951\n\tSIOCIFCREATE                      = 0xc020697a\n\tSIOCIFCREATE2                     = 0xc020697c\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFCAP                        = 0x8020691e\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020693c\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x80206934\n\tSIOCSIFNAME                       = 0x80206928\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSIFPHYS                       = 0x80206936\n\tSIOCSIFPOLLCPU                    = 0x8020697d\n\tSIOCSIFTSOLEN                     = 0x8020697f\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_MAXADDRLEN                   = 0xff\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_CPUHINT                        = 0x1030\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_RERROR                         = 0x2000\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDSPACE                       = 0x100a\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_TIMESTAMP                      = 0x400\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDB                            = 0x9000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTAB0                              = 0x0\n\tTAB3                              = 0x4\n\tTABDLY                            = 0x4\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCP_FASTKEEP                      = 0x80\n\tTCP_KEEPCNT                       = 0x400\n\tTCP_KEEPIDLE                      = 0x100\n\tTCP_KEEPINIT                      = 0x20\n\tTCP_KEEPINTVL                     = 0x200\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXHLEN                       = 0x3c\n\tTCP_MAXOLEN                       = 0x28\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MINMSS                        = 0x100\n\tTCP_MIN_WINSHIFT                  = 0x5\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOOPT                         = 0x8\n\tTCP_NOPUSH                        = 0x4\n\tTCP_SIGNATURE_ENABLE              = 0x10\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGDRAINWAIT                    = 0x40047456\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCISPTMASTER                    = 0x20007455\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGDTRWAIT                     = 0x4004745a\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x40047403\n\tTIOCMODS                          = 0x80047404\n\tTIOCMSDTRWAIT                     = 0x8004745b\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDRAINWAIT                    = 0x80047457\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCTIMESTAMP                     = 0x40107459\n\tTIOCUCNTL                         = 0x80047466\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x1\n\tUTIME_OMIT                        = -0x2\n\tVCHECKPT                          = 0x13\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVERASE2                           = 0x7\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_BCACHE_SIZE_MAX                = 0x0\n\tVM_SWZONE_SIZE_MAX                = 0x4000000000\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWCONTINUED                        = 0x4\n\tWCOREFLAG                         = 0x80\n\tWEXITED                           = 0x10\n\tWLINUXCLONE                       = 0x80000000\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x8\n\tWSTOPPED                          = 0x2\n\tWTRAPPED                          = 0x20\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEASYNC          = syscall.Errno(0x63)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x63)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEDIUM       = syscall.Errno(0x5d)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT     = syscall.Signal(0x6)\n\tSIGALRM     = syscall.Signal(0xe)\n\tSIGBUS      = syscall.Signal(0xa)\n\tSIGCHLD     = syscall.Signal(0x14)\n\tSIGCKPT     = syscall.Signal(0x21)\n\tSIGCKPTEXIT = syscall.Signal(0x22)\n\tSIGCONT     = syscall.Signal(0x13)\n\tSIGEMT      = syscall.Signal(0x7)\n\tSIGFPE      = syscall.Signal(0x8)\n\tSIGHUP      = syscall.Signal(0x1)\n\tSIGILL      = syscall.Signal(0x4)\n\tSIGINFO     = syscall.Signal(0x1d)\n\tSIGINT      = syscall.Signal(0x2)\n\tSIGIO       = syscall.Signal(0x17)\n\tSIGIOT      = syscall.Signal(0x6)\n\tSIGKILL     = syscall.Signal(0x9)\n\tSIGPIPE     = syscall.Signal(0xd)\n\tSIGPROF     = syscall.Signal(0x1b)\n\tSIGQUIT     = syscall.Signal(0x3)\n\tSIGSEGV     = syscall.Signal(0xb)\n\tSIGSTOP     = syscall.Signal(0x11)\n\tSIGSYS      = syscall.Signal(0xc)\n\tSIGTERM     = syscall.Signal(0xf)\n\tSIGTHR      = syscall.Signal(0x20)\n\tSIGTRAP     = syscall.Signal(0x5)\n\tSIGTSTP     = syscall.Signal(0x12)\n\tSIGTTIN     = syscall.Signal(0x15)\n\tSIGTTOU     = syscall.Signal(0x16)\n\tSIGURG      = syscall.Signal(0x10)\n\tSIGUSR1     = syscall.Signal(0x1e)\n\tSIGUSR2     = syscall.Signal(0x1f)\n\tSIGVTALRM   = syscall.Signal(0x1a)\n\tSIGWINCH    = syscall.Signal(0x1c)\n\tSIGXCPU     = syscall.Signal(0x18)\n\tSIGXFSZ     = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOMEDIUM\", \"no medium found\"},\n\t{99, \"EASYNC\", \"unknown error: 99\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread Scheduler\"},\n\t{33, \"SIGCKPT\", \"checkPoint\"},\n\t{34, \"SIGCKPTEXIT\", \"checkPointExit\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_freebsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4008426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8008426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc144648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc06c648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXMMREGS                  = 0x40\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXMMREGS                  = 0x41\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40087459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x70e0000\n\tVM_SWZONE_SIZE_MAX             = 0x2280000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_freebsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETFSBASE                   = 0x47\n\tPT_GETGSBASE                   = 0x49\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETXSTATE                   = 0x45\n\tPT_GETXSTATE_INFO              = 0x44\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETFSBASE                   = 0x48\n\tPT_SETGSBASE                   = 0x4a\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETXSTATE                   = 0x46\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_freebsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0084279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4004427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x400c4280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80084267\n\tBIOCSETFNR                     = 0x80084282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8008427b\n\tBIOCSETZBUF                    = 0x800c4281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x4\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x804c6490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc078648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x20\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GETVFPREGS                  = 0x40\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SETVFPREGS                  = 0x41\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80246987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80246989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc01c697b\n\tSIOCGETSGCNT                   = 0xc0147210\n\tSIOCGETVIFCNT                  = 0xc014720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0086924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc024698a\n\tSIOCGIFGROUP                   = 0xc0246988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0286938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc028698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc00c6978\n\tSIOCSDRVSPEC                   = 0x801c697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_freebsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2a\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR02                    = 0x2b\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB38400                         = 0x9600\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFRONTSTUFF                = 0x40086486\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80506490\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f52\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0xd0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_RNH_LOCKED                 = 0x40000000\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_INFO                       = 0x20\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVM_BCACHE_SIZE_MAX             = 0x19000000\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_freebsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                   = 0x10\n\tAF_ARP                         = 0x23\n\tAF_ATM                         = 0x1e\n\tAF_BLUETOOTH                   = 0x24\n\tAF_CCITT                       = 0xa\n\tAF_CHAOS                       = 0x5\n\tAF_CNT                         = 0x15\n\tAF_COIP                        = 0x14\n\tAF_DATAKIT                     = 0x9\n\tAF_DECnet                      = 0xc\n\tAF_DLI                         = 0xd\n\tAF_E164                        = 0x1a\n\tAF_ECMA                        = 0x8\n\tAF_HYLINK                      = 0xf\n\tAF_HYPERV                      = 0x2b\n\tAF_IEEE80211                   = 0x25\n\tAF_IMPLINK                     = 0x3\n\tAF_INET                        = 0x2\n\tAF_INET6                       = 0x1c\n\tAF_INET6_SDP                   = 0x2a\n\tAF_INET_SDP                    = 0x28\n\tAF_IPX                         = 0x17\n\tAF_ISDN                        = 0x1a\n\tAF_ISO                         = 0x7\n\tAF_LAT                         = 0xe\n\tAF_LINK                        = 0x12\n\tAF_LOCAL                       = 0x1\n\tAF_MAX                         = 0x2b\n\tAF_NATM                        = 0x1d\n\tAF_NETBIOS                     = 0x6\n\tAF_NETGRAPH                    = 0x20\n\tAF_OSI                         = 0x7\n\tAF_PUP                         = 0x4\n\tAF_ROUTE                       = 0x11\n\tAF_SCLUSTER                    = 0x22\n\tAF_SIP                         = 0x18\n\tAF_SLOW                        = 0x21\n\tAF_SNA                         = 0xb\n\tAF_UNIX                        = 0x1\n\tAF_UNSPEC                      = 0x0\n\tAF_VENDOR00                    = 0x27\n\tAF_VENDOR01                    = 0x29\n\tAF_VENDOR03                    = 0x2d\n\tAF_VENDOR04                    = 0x2f\n\tAF_VENDOR05                    = 0x31\n\tAF_VENDOR06                    = 0x33\n\tAF_VENDOR07                    = 0x35\n\tAF_VENDOR08                    = 0x37\n\tAF_VENDOR09                    = 0x39\n\tAF_VENDOR10                    = 0x3b\n\tAF_VENDOR11                    = 0x3d\n\tAF_VENDOR12                    = 0x3f\n\tAF_VENDOR13                    = 0x41\n\tAF_VENDOR14                    = 0x43\n\tAF_VENDOR15                    = 0x45\n\tAF_VENDOR16                    = 0x47\n\tAF_VENDOR17                    = 0x49\n\tAF_VENDOR18                    = 0x4b\n\tAF_VENDOR19                    = 0x4d\n\tAF_VENDOR20                    = 0x4f\n\tAF_VENDOR21                    = 0x51\n\tAF_VENDOR22                    = 0x53\n\tAF_VENDOR23                    = 0x55\n\tAF_VENDOR24                    = 0x57\n\tAF_VENDOR25                    = 0x59\n\tAF_VENDOR26                    = 0x5b\n\tAF_VENDOR27                    = 0x5d\n\tAF_VENDOR28                    = 0x5f\n\tAF_VENDOR29                    = 0x61\n\tAF_VENDOR30                    = 0x63\n\tAF_VENDOR31                    = 0x65\n\tAF_VENDOR32                    = 0x67\n\tAF_VENDOR33                    = 0x69\n\tAF_VENDOR34                    = 0x6b\n\tAF_VENDOR35                    = 0x6d\n\tAF_VENDOR36                    = 0x6f\n\tAF_VENDOR37                    = 0x71\n\tAF_VENDOR38                    = 0x73\n\tAF_VENDOR39                    = 0x75\n\tAF_VENDOR40                    = 0x77\n\tAF_VENDOR41                    = 0x79\n\tAF_VENDOR42                    = 0x7b\n\tAF_VENDOR43                    = 0x7d\n\tAF_VENDOR44                    = 0x7f\n\tAF_VENDOR45                    = 0x81\n\tAF_VENDOR46                    = 0x83\n\tAF_VENDOR47                    = 0x85\n\tALTWERASE                      = 0x200\n\tB0                             = 0x0\n\tB1000000                       = 0xf4240\n\tB110                           = 0x6e\n\tB115200                        = 0x1c200\n\tB1200                          = 0x4b0\n\tB134                           = 0x86\n\tB14400                         = 0x3840\n\tB150                           = 0x96\n\tB1500000                       = 0x16e360\n\tB1800                          = 0x708\n\tB19200                         = 0x4b00\n\tB200                           = 0xc8\n\tB2000000                       = 0x1e8480\n\tB230400                        = 0x38400\n\tB2400                          = 0x960\n\tB2500000                       = 0x2625a0\n\tB28800                         = 0x7080\n\tB300                           = 0x12c\n\tB3000000                       = 0x2dc6c0\n\tB3500000                       = 0x3567e0\n\tB38400                         = 0x9600\n\tB4000000                       = 0x3d0900\n\tB460800                        = 0x70800\n\tB4800                          = 0x12c0\n\tB50                            = 0x32\n\tB500000                        = 0x7a120\n\tB57600                         = 0xe100\n\tB600                           = 0x258\n\tB7200                          = 0x1c20\n\tB75                            = 0x4b\n\tB76800                         = 0x12c00\n\tB921600                        = 0xe1000\n\tB9600                          = 0x2580\n\tBIOCFEEDBACK                   = 0x8004427c\n\tBIOCFLUSH                      = 0x20004268\n\tBIOCGBLEN                      = 0x40044266\n\tBIOCGDIRECTION                 = 0x40044276\n\tBIOCGDLT                       = 0x4004426a\n\tBIOCGDLTLIST                   = 0xc0104279\n\tBIOCGETBUFMODE                 = 0x4004427d\n\tBIOCGETIF                      = 0x4020426b\n\tBIOCGETZMAX                    = 0x4008427f\n\tBIOCGHDRCMPLT                  = 0x40044274\n\tBIOCGRSIG                      = 0x40044272\n\tBIOCGRTIMEOUT                  = 0x4010426e\n\tBIOCGSEESENT                   = 0x40044276\n\tBIOCGSTATS                     = 0x4008426f\n\tBIOCGTSTAMP                    = 0x40044283\n\tBIOCIMMEDIATE                  = 0x80044270\n\tBIOCLOCK                       = 0x2000427a\n\tBIOCPROMISC                    = 0x20004269\n\tBIOCROTZBUF                    = 0x40184280\n\tBIOCSBLEN                      = 0xc0044266\n\tBIOCSDIRECTION                 = 0x80044277\n\tBIOCSDLT                       = 0x80044278\n\tBIOCSETBUFMODE                 = 0x8004427e\n\tBIOCSETF                       = 0x80104267\n\tBIOCSETFNR                     = 0x80104282\n\tBIOCSETIF                      = 0x8020426c\n\tBIOCSETVLANPCP                 = 0x80044285\n\tBIOCSETWF                      = 0x8010427b\n\tBIOCSETZBUF                    = 0x80184281\n\tBIOCSHDRCMPLT                  = 0x80044275\n\tBIOCSRSIG                      = 0x80044273\n\tBIOCSRTIMEOUT                  = 0x8010426d\n\tBIOCSSEESENT                   = 0x80044277\n\tBIOCSTSTAMP                    = 0x80044284\n\tBIOCVERSION                    = 0x40044271\n\tBPF_A                          = 0x10\n\tBPF_ABS                        = 0x20\n\tBPF_ADD                        = 0x0\n\tBPF_ALIGNMENT                  = 0x8\n\tBPF_ALU                        = 0x4\n\tBPF_AND                        = 0x50\n\tBPF_B                          = 0x10\n\tBPF_BUFMODE_BUFFER             = 0x1\n\tBPF_BUFMODE_ZBUF               = 0x2\n\tBPF_DIV                        = 0x30\n\tBPF_H                          = 0x8\n\tBPF_IMM                        = 0x0\n\tBPF_IND                        = 0x40\n\tBPF_JA                         = 0x0\n\tBPF_JEQ                        = 0x10\n\tBPF_JGE                        = 0x30\n\tBPF_JGT                        = 0x20\n\tBPF_JMP                        = 0x5\n\tBPF_JSET                       = 0x40\n\tBPF_K                          = 0x0\n\tBPF_LD                         = 0x0\n\tBPF_LDX                        = 0x1\n\tBPF_LEN                        = 0x80\n\tBPF_LSH                        = 0x60\n\tBPF_MAJOR_VERSION              = 0x1\n\tBPF_MAXBUFSIZE                 = 0x80000\n\tBPF_MAXINSNS                   = 0x200\n\tBPF_MEM                        = 0x60\n\tBPF_MEMWORDS                   = 0x10\n\tBPF_MINBUFSIZE                 = 0x20\n\tBPF_MINOR_VERSION              = 0x1\n\tBPF_MISC                       = 0x7\n\tBPF_MOD                        = 0x90\n\tBPF_MSH                        = 0xa0\n\tBPF_MUL                        = 0x20\n\tBPF_NEG                        = 0x80\n\tBPF_OR                         = 0x40\n\tBPF_RELEASE                    = 0x30bb6\n\tBPF_RET                        = 0x6\n\tBPF_RSH                        = 0x70\n\tBPF_ST                         = 0x2\n\tBPF_STX                        = 0x3\n\tBPF_SUB                        = 0x10\n\tBPF_TAX                        = 0x0\n\tBPF_TXA                        = 0x80\n\tBPF_T_BINTIME                  = 0x2\n\tBPF_T_BINTIME_FAST             = 0x102\n\tBPF_T_BINTIME_MONOTONIC        = 0x202\n\tBPF_T_BINTIME_MONOTONIC_FAST   = 0x302\n\tBPF_T_FAST                     = 0x100\n\tBPF_T_FLAG_MASK                = 0x300\n\tBPF_T_FORMAT_MASK              = 0x3\n\tBPF_T_MICROTIME                = 0x0\n\tBPF_T_MICROTIME_FAST           = 0x100\n\tBPF_T_MICROTIME_MONOTONIC      = 0x200\n\tBPF_T_MICROTIME_MONOTONIC_FAST = 0x300\n\tBPF_T_MONOTONIC                = 0x200\n\tBPF_T_MONOTONIC_FAST           = 0x300\n\tBPF_T_NANOTIME                 = 0x1\n\tBPF_T_NANOTIME_FAST            = 0x101\n\tBPF_T_NANOTIME_MONOTONIC       = 0x201\n\tBPF_T_NANOTIME_MONOTONIC_FAST  = 0x301\n\tBPF_T_NONE                     = 0x3\n\tBPF_T_NORMAL                   = 0x0\n\tBPF_W                          = 0x0\n\tBPF_X                          = 0x8\n\tBPF_XOR                        = 0xa0\n\tBRKINT                         = 0x2\n\tCAP_ACCEPT                     = 0x200000020000000\n\tCAP_ACL_CHECK                  = 0x400000000010000\n\tCAP_ACL_DELETE                 = 0x400000000020000\n\tCAP_ACL_GET                    = 0x400000000040000\n\tCAP_ACL_SET                    = 0x400000000080000\n\tCAP_ALL0                       = 0x20007ffffffffff\n\tCAP_ALL1                       = 0x4000000001fffff\n\tCAP_BIND                       = 0x200000040000000\n\tCAP_BINDAT                     = 0x200008000000400\n\tCAP_CHFLAGSAT                  = 0x200000000001400\n\tCAP_CONNECT                    = 0x200000080000000\n\tCAP_CONNECTAT                  = 0x200010000000400\n\tCAP_CREATE                     = 0x200000000000040\n\tCAP_EVENT                      = 0x400000000000020\n\tCAP_EXTATTR_DELETE             = 0x400000000001000\n\tCAP_EXTATTR_GET                = 0x400000000002000\n\tCAP_EXTATTR_LIST               = 0x400000000004000\n\tCAP_EXTATTR_SET                = 0x400000000008000\n\tCAP_FCHDIR                     = 0x200000000000800\n\tCAP_FCHFLAGS                   = 0x200000000001000\n\tCAP_FCHMOD                     = 0x200000000002000\n\tCAP_FCHMODAT                   = 0x200000000002400\n\tCAP_FCHOWN                     = 0x200000000004000\n\tCAP_FCHOWNAT                   = 0x200000000004400\n\tCAP_FCNTL                      = 0x200000000008000\n\tCAP_FCNTL_ALL                  = 0x78\n\tCAP_FCNTL_GETFL                = 0x8\n\tCAP_FCNTL_GETOWN               = 0x20\n\tCAP_FCNTL_SETFL                = 0x10\n\tCAP_FCNTL_SETOWN               = 0x40\n\tCAP_FEXECVE                    = 0x200000000000080\n\tCAP_FLOCK                      = 0x200000000010000\n\tCAP_FPATHCONF                  = 0x200000000020000\n\tCAP_FSCK                       = 0x200000000040000\n\tCAP_FSTAT                      = 0x200000000080000\n\tCAP_FSTATAT                    = 0x200000000080400\n\tCAP_FSTATFS                    = 0x200000000100000\n\tCAP_FSYNC                      = 0x200000000000100\n\tCAP_FTRUNCATE                  = 0x200000000000200\n\tCAP_FUTIMES                    = 0x200000000200000\n\tCAP_FUTIMESAT                  = 0x200000000200400\n\tCAP_GETPEERNAME                = 0x200000100000000\n\tCAP_GETSOCKNAME                = 0x200000200000000\n\tCAP_GETSOCKOPT                 = 0x200000400000000\n\tCAP_IOCTL                      = 0x400000000000080\n\tCAP_IOCTLS_ALL                 = 0x7fffffffffffffff\n\tCAP_KQUEUE                     = 0x400000000100040\n\tCAP_KQUEUE_CHANGE              = 0x400000000100000\n\tCAP_KQUEUE_EVENT               = 0x400000000000040\n\tCAP_LINKAT_SOURCE              = 0x200020000000400\n\tCAP_LINKAT_TARGET              = 0x200000000400400\n\tCAP_LISTEN                     = 0x200000800000000\n\tCAP_LOOKUP                     = 0x200000000000400\n\tCAP_MAC_GET                    = 0x400000000000001\n\tCAP_MAC_SET                    = 0x400000000000002\n\tCAP_MKDIRAT                    = 0x200000000800400\n\tCAP_MKFIFOAT                   = 0x200000001000400\n\tCAP_MKNODAT                    = 0x200000002000400\n\tCAP_MMAP                       = 0x200000000000010\n\tCAP_MMAP_R                     = 0x20000000000001d\n\tCAP_MMAP_RW                    = 0x20000000000001f\n\tCAP_MMAP_RWX                   = 0x20000000000003f\n\tCAP_MMAP_RX                    = 0x20000000000003d\n\tCAP_MMAP_W                     = 0x20000000000001e\n\tCAP_MMAP_WX                    = 0x20000000000003e\n\tCAP_MMAP_X                     = 0x20000000000003c\n\tCAP_PDGETPID                   = 0x400000000000200\n\tCAP_PDKILL                     = 0x400000000000800\n\tCAP_PDWAIT                     = 0x400000000000400\n\tCAP_PEELOFF                    = 0x200001000000000\n\tCAP_POLL_EVENT                 = 0x400000000000020\n\tCAP_PREAD                      = 0x20000000000000d\n\tCAP_PWRITE                     = 0x20000000000000e\n\tCAP_READ                       = 0x200000000000001\n\tCAP_RECV                       = 0x200000000000001\n\tCAP_RENAMEAT_SOURCE            = 0x200000004000400\n\tCAP_RENAMEAT_TARGET            = 0x200040000000400\n\tCAP_RIGHTS_VERSION             = 0x0\n\tCAP_RIGHTS_VERSION_00          = 0x0\n\tCAP_SEEK                       = 0x20000000000000c\n\tCAP_SEEK_TELL                  = 0x200000000000004\n\tCAP_SEM_GETVALUE               = 0x400000000000004\n\tCAP_SEM_POST                   = 0x400000000000008\n\tCAP_SEM_WAIT                   = 0x400000000000010\n\tCAP_SEND                       = 0x200000000000002\n\tCAP_SETSOCKOPT                 = 0x200002000000000\n\tCAP_SHUTDOWN                   = 0x200004000000000\n\tCAP_SOCK_CLIENT                = 0x200007780000003\n\tCAP_SOCK_SERVER                = 0x200007f60000003\n\tCAP_SYMLINKAT                  = 0x200000008000400\n\tCAP_TTYHOOK                    = 0x400000000000100\n\tCAP_UNLINKAT                   = 0x200000010000400\n\tCAP_UNUSED0_44                 = 0x200080000000000\n\tCAP_UNUSED0_57                 = 0x300000000000000\n\tCAP_UNUSED1_22                 = 0x400000000200000\n\tCAP_UNUSED1_57                 = 0x500000000000000\n\tCAP_WRITE                      = 0x200000000000002\n\tCFLUSH                         = 0xf\n\tCLOCAL                         = 0x8000\n\tCLOCK_BOOTTIME                 = 0x5\n\tCLOCK_MONOTONIC                = 0x4\n\tCLOCK_MONOTONIC_COARSE         = 0xc\n\tCLOCK_MONOTONIC_FAST           = 0xc\n\tCLOCK_MONOTONIC_PRECISE        = 0xb\n\tCLOCK_PROCESS_CPUTIME_ID       = 0xf\n\tCLOCK_PROF                     = 0x2\n\tCLOCK_REALTIME                 = 0x0\n\tCLOCK_REALTIME_COARSE          = 0xa\n\tCLOCK_REALTIME_FAST            = 0xa\n\tCLOCK_REALTIME_PRECISE         = 0x9\n\tCLOCK_SECOND                   = 0xd\n\tCLOCK_THREAD_CPUTIME_ID        = 0xe\n\tCLOCK_UPTIME                   = 0x5\n\tCLOCK_UPTIME_FAST              = 0x8\n\tCLOCK_UPTIME_PRECISE           = 0x7\n\tCLOCK_VIRTUAL                  = 0x1\n\tCPUSTATES                      = 0x5\n\tCP_IDLE                        = 0x4\n\tCP_INTR                        = 0x3\n\tCP_NICE                        = 0x1\n\tCP_SYS                         = 0x2\n\tCP_USER                        = 0x0\n\tCREAD                          = 0x800\n\tCRTSCTS                        = 0x30000\n\tCS5                            = 0x0\n\tCS6                            = 0x100\n\tCS7                            = 0x200\n\tCS8                            = 0x300\n\tCSIZE                          = 0x300\n\tCSTART                         = 0x11\n\tCSTATUS                        = 0x14\n\tCSTOP                          = 0x13\n\tCSTOPB                         = 0x400\n\tCSUSP                          = 0x1a\n\tCTL_HW                         = 0x6\n\tCTL_KERN                       = 0x1\n\tCTL_MAXNAME                    = 0x18\n\tCTL_NET                        = 0x4\n\tDIOCGATTR                      = 0xc148648e\n\tDIOCGDELETE                    = 0x80106488\n\tDIOCGFLUSH                     = 0x20006487\n\tDIOCGFWHEADS                   = 0x40046483\n\tDIOCGFWSECTORS                 = 0x40046482\n\tDIOCGIDENT                     = 0x41006489\n\tDIOCGKERNELDUMP                = 0xc0986492\n\tDIOCGMEDIASIZE                 = 0x40086481\n\tDIOCGPHYSPATH                  = 0x4400648d\n\tDIOCGPROVIDERNAME              = 0x4400648a\n\tDIOCGSECTORSIZE                = 0x40046480\n\tDIOCGSTRIPEOFFSET              = 0x4008648c\n\tDIOCGSTRIPESIZE                = 0x4008648b\n\tDIOCSKERNELDUMP                = 0x80986491\n\tDIOCSKERNELDUMP_FREEBSD11      = 0x80046485\n\tDIOCSKERNELDUMP_FREEBSD12      = 0x80506490\n\tDIOCZONECMD                    = 0xc080648f\n\tDLT_A429                       = 0xb8\n\tDLT_A653_ICM                   = 0xb9\n\tDLT_AIRONET_HEADER             = 0x78\n\tDLT_AOS                        = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394     = 0x8a\n\tDLT_ARCNET                     = 0x7\n\tDLT_ARCNET_LINUX               = 0x81\n\tDLT_ATM_CLIP                   = 0x13\n\tDLT_ATM_RFC1483                = 0xb\n\tDLT_AURORA                     = 0x7e\n\tDLT_AX25                       = 0x3\n\tDLT_AX25_KISS                  = 0xca\n\tDLT_BACNET_MS_TP               = 0xa5\n\tDLT_BLUETOOTH_BREDR_BB         = 0xff\n\tDLT_BLUETOOTH_HCI_H4           = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR = 0xc9\n\tDLT_BLUETOOTH_LE_LL            = 0xfb\n\tDLT_BLUETOOTH_LE_LL_WITH_PHDR  = 0x100\n\tDLT_BLUETOOTH_LINUX_MONITOR    = 0xfe\n\tDLT_CAN20B                     = 0xbe\n\tDLT_CAN_SOCKETCAN              = 0xe3\n\tDLT_CHAOS                      = 0x5\n\tDLT_CHDLC                      = 0x68\n\tDLT_CISCO_IOS                  = 0x76\n\tDLT_CLASS_NETBSD_RAWAF         = 0x2240000\n\tDLT_C_HDLC                     = 0x68\n\tDLT_C_HDLC_WITH_DIR            = 0xcd\n\tDLT_DBUS                       = 0xe7\n\tDLT_DECT                       = 0xdd\n\tDLT_DISPLAYPORT_AUX            = 0x113\n\tDLT_DOCSIS                     = 0x8f\n\tDLT_DOCSIS31_XRA31             = 0x111\n\tDLT_DVB_CI                     = 0xeb\n\tDLT_ECONET                     = 0x73\n\tDLT_EN10MB                     = 0x1\n\tDLT_EN3MB                      = 0x2\n\tDLT_ENC                        = 0x6d\n\tDLT_EPON                       = 0x103\n\tDLT_ERF                        = 0xc5\n\tDLT_ERF_ETH                    = 0xaf\n\tDLT_ERF_POS                    = 0xb0\n\tDLT_ETHERNET_MPACKET           = 0x112\n\tDLT_FC_2                       = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS     = 0xe1\n\tDLT_FDDI                       = 0xa\n\tDLT_FLEXRAY                    = 0xd2\n\tDLT_FRELAY                     = 0x6b\n\tDLT_FRELAY_WITH_DIR            = 0xce\n\tDLT_GCOM_SERIAL                = 0xad\n\tDLT_GCOM_T1E1                  = 0xac\n\tDLT_GPF_F                      = 0xab\n\tDLT_GPF_T                      = 0xaa\n\tDLT_GPRS_LLC                   = 0xa9\n\tDLT_GSMTAP_ABIS                = 0xda\n\tDLT_GSMTAP_UM                  = 0xd9\n\tDLT_IBM_SN                     = 0x92\n\tDLT_IBM_SP                     = 0x91\n\tDLT_IEEE802                    = 0x6\n\tDLT_IEEE802_11                 = 0x69\n\tDLT_IEEE802_11_RADIO           = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS       = 0xa3\n\tDLT_IEEE802_15_4               = 0xc3\n\tDLT_IEEE802_15_4_LINUX         = 0xbf\n\tDLT_IEEE802_15_4_NOFCS         = 0xe6\n\tDLT_IEEE802_15_4_NONASK_PHY    = 0xd7\n\tDLT_IEEE802_16_MAC_CPS         = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO   = 0xc1\n\tDLT_INFINIBAND                 = 0xf7\n\tDLT_IPFILTER                   = 0x74\n\tDLT_IPMB_KONTRON               = 0xc7\n\tDLT_IPMB_LINUX                 = 0xd1\n\tDLT_IPMI_HPM_2                 = 0x104\n\tDLT_IPNET                      = 0xe2\n\tDLT_IPOIB                      = 0xf2\n\tDLT_IPV4                       = 0xe4\n\tDLT_IPV6                       = 0xe5\n\tDLT_IP_OVER_FC                 = 0x7a\n\tDLT_ISO_14443                  = 0x108\n\tDLT_JUNIPER_ATM1               = 0x89\n\tDLT_JUNIPER_ATM2               = 0x87\n\tDLT_JUNIPER_ATM_CEMIC          = 0xee\n\tDLT_JUNIPER_CHDLC              = 0xb5\n\tDLT_JUNIPER_ES                 = 0x84\n\tDLT_JUNIPER_ETHER              = 0xb2\n\tDLT_JUNIPER_FIBRECHANNEL       = 0xea\n\tDLT_JUNIPER_FRELAY             = 0xb4\n\tDLT_JUNIPER_GGSN               = 0x85\n\tDLT_JUNIPER_ISM                = 0xc2\n\tDLT_JUNIPER_MFR                = 0x86\n\tDLT_JUNIPER_MLFR               = 0x83\n\tDLT_JUNIPER_MLPPP              = 0x82\n\tDLT_JUNIPER_MONITOR            = 0xa4\n\tDLT_JUNIPER_PIC_PEER           = 0xae\n\tDLT_JUNIPER_PPP                = 0xb3\n\tDLT_JUNIPER_PPPOE              = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM          = 0xa8\n\tDLT_JUNIPER_SERVICES           = 0x88\n\tDLT_JUNIPER_SRX_E2E            = 0xe9\n\tDLT_JUNIPER_ST                 = 0xc8\n\tDLT_JUNIPER_VP                 = 0xb7\n\tDLT_JUNIPER_VS                 = 0xe8\n\tDLT_LAPB_WITH_DIR              = 0xcf\n\tDLT_LAPD                       = 0xcb\n\tDLT_LIN                        = 0xd4\n\tDLT_LINUX_EVDEV                = 0xd8\n\tDLT_LINUX_IRDA                 = 0x90\n\tDLT_LINUX_LAPD                 = 0xb1\n\tDLT_LINUX_PPP_WITHDIRECTION    = 0xa6\n\tDLT_LINUX_SLL                  = 0x71\n\tDLT_LINUX_SLL2                 = 0x114\n\tDLT_LOOP                       = 0x6c\n\tDLT_LORATAP                    = 0x10e\n\tDLT_LTALK                      = 0x72\n\tDLT_MATCHING_MAX               = 0x114\n\tDLT_MATCHING_MIN               = 0x68\n\tDLT_MFR                        = 0xb6\n\tDLT_MOST                       = 0xd3\n\tDLT_MPEG_2_TS                  = 0xf3\n\tDLT_MPLS                       = 0xdb\n\tDLT_MTP2                       = 0x8c\n\tDLT_MTP2_WITH_PHDR             = 0x8b\n\tDLT_MTP3                       = 0x8d\n\tDLT_MUX27010                   = 0xec\n\tDLT_NETANALYZER                = 0xf0\n\tDLT_NETANALYZER_TRANSPARENT    = 0xf1\n\tDLT_NETLINK                    = 0xfd\n\tDLT_NFC_LLCP                   = 0xf5\n\tDLT_NFLOG                      = 0xef\n\tDLT_NG40                       = 0xf4\n\tDLT_NORDIC_BLE                 = 0x110\n\tDLT_NULL                       = 0x0\n\tDLT_OPENFLOW                   = 0x10b\n\tDLT_PCI_EXP                    = 0x7d\n\tDLT_PFLOG                      = 0x75\n\tDLT_PFSYNC                     = 0x79\n\tDLT_PKTAP                      = 0x102\n\tDLT_PPI                        = 0xc0\n\tDLT_PPP                        = 0x9\n\tDLT_PPP_BSDOS                  = 0xe\n\tDLT_PPP_ETHER                  = 0x33\n\tDLT_PPP_PPPD                   = 0xa6\n\tDLT_PPP_SERIAL                 = 0x32\n\tDLT_PPP_WITH_DIR               = 0xcc\n\tDLT_PPP_WITH_DIRECTION         = 0xa6\n\tDLT_PRISM_HEADER               = 0x77\n\tDLT_PROFIBUS_DL                = 0x101\n\tDLT_PRONET                     = 0x4\n\tDLT_RAIF1                      = 0xc6\n\tDLT_RAW                        = 0xc\n\tDLT_RDS                        = 0x109\n\tDLT_REDBACK_SMARTEDGE          = 0x20\n\tDLT_RIO                        = 0x7c\n\tDLT_RTAC_SERIAL                = 0xfa\n\tDLT_SCCP                       = 0x8e\n\tDLT_SCTP                       = 0xf8\n\tDLT_SDLC                       = 0x10c\n\tDLT_SITA                       = 0xc4\n\tDLT_SLIP                       = 0x8\n\tDLT_SLIP_BSDOS                 = 0xd\n\tDLT_STANAG_5066_D_PDU          = 0xed\n\tDLT_SUNATM                     = 0x7b\n\tDLT_SYMANTEC_FIREWALL          = 0x63\n\tDLT_TI_LLN_SNIFFER             = 0x10d\n\tDLT_TZSP                       = 0x80\n\tDLT_USB                        = 0xba\n\tDLT_USBPCAP                    = 0xf9\n\tDLT_USB_DARWIN                 = 0x10a\n\tDLT_USB_FREEBSD                = 0xba\n\tDLT_USB_LINUX                  = 0xbd\n\tDLT_USB_LINUX_MMAPPED          = 0xdc\n\tDLT_USER0                      = 0x93\n\tDLT_USER1                      = 0x94\n\tDLT_USER10                     = 0x9d\n\tDLT_USER11                     = 0x9e\n\tDLT_USER12                     = 0x9f\n\tDLT_USER13                     = 0xa0\n\tDLT_USER14                     = 0xa1\n\tDLT_USER15                     = 0xa2\n\tDLT_USER2                      = 0x95\n\tDLT_USER3                      = 0x96\n\tDLT_USER4                      = 0x97\n\tDLT_USER5                      = 0x98\n\tDLT_USER6                      = 0x99\n\tDLT_USER7                      = 0x9a\n\tDLT_USER8                      = 0x9b\n\tDLT_USER9                      = 0x9c\n\tDLT_VSOCK                      = 0x10f\n\tDLT_WATTSTOPPER_DLM            = 0x107\n\tDLT_WIHART                     = 0xdf\n\tDLT_WIRESHARK_UPPER_PDU        = 0xfc\n\tDLT_X2E_SERIAL                 = 0xd5\n\tDLT_X2E_XORAYA                 = 0xd6\n\tDLT_ZWAVE_R1_R2                = 0x105\n\tDLT_ZWAVE_R3                   = 0x106\n\tDT_BLK                         = 0x6\n\tDT_CHR                         = 0x2\n\tDT_DIR                         = 0x4\n\tDT_FIFO                        = 0x1\n\tDT_LNK                         = 0xa\n\tDT_REG                         = 0x8\n\tDT_SOCK                        = 0xc\n\tDT_UNKNOWN                     = 0x0\n\tDT_WHT                         = 0xe\n\tECHO                           = 0x8\n\tECHOCTL                        = 0x40\n\tECHOE                          = 0x2\n\tECHOK                          = 0x4\n\tECHOKE                         = 0x1\n\tECHONL                         = 0x10\n\tECHOPRT                        = 0x20\n\tEHE_DEAD_PRIORITY              = -0x1\n\tEVFILT_AIO                     = -0x3\n\tEVFILT_EMPTY                   = -0xd\n\tEVFILT_FS                      = -0x9\n\tEVFILT_LIO                     = -0xa\n\tEVFILT_PROC                    = -0x5\n\tEVFILT_PROCDESC                = -0x8\n\tEVFILT_READ                    = -0x1\n\tEVFILT_SENDFILE                = -0xc\n\tEVFILT_SIGNAL                  = -0x6\n\tEVFILT_SYSCOUNT                = 0xd\n\tEVFILT_TIMER                   = -0x7\n\tEVFILT_USER                    = -0xb\n\tEVFILT_VNODE                   = -0x4\n\tEVFILT_WRITE                   = -0x2\n\tEVNAMEMAP_NAME_SIZE            = 0x40\n\tEV_ADD                         = 0x1\n\tEV_CLEAR                       = 0x20\n\tEV_DELETE                      = 0x2\n\tEV_DISABLE                     = 0x8\n\tEV_DISPATCH                    = 0x80\n\tEV_DROP                        = 0x1000\n\tEV_ENABLE                      = 0x4\n\tEV_EOF                         = 0x8000\n\tEV_ERROR                       = 0x4000\n\tEV_FLAG1                       = 0x2000\n\tEV_FLAG2                       = 0x4000\n\tEV_FORCEONESHOT                = 0x100\n\tEV_ONESHOT                     = 0x10\n\tEV_RECEIPT                     = 0x40\n\tEV_SYSFLAGS                    = 0xf000\n\tEXTA                           = 0x4b00\n\tEXTATTR_MAXNAMELEN             = 0xff\n\tEXTATTR_NAMESPACE_EMPTY        = 0x0\n\tEXTATTR_NAMESPACE_SYSTEM       = 0x2\n\tEXTATTR_NAMESPACE_USER         = 0x1\n\tEXTB                           = 0x9600\n\tEXTPROC                        = 0x800\n\tFD_CLOEXEC                     = 0x1\n\tFD_NONE                        = -0xc8\n\tFD_SETSIZE                     = 0x400\n\tFLUSHO                         = 0x800000\n\tF_ADD_SEALS                    = 0x13\n\tF_CANCEL                       = 0x5\n\tF_DUP2FD                       = 0xa\n\tF_DUP2FD_CLOEXEC               = 0x12\n\tF_DUPFD                        = 0x0\n\tF_DUPFD_CLOEXEC                = 0x11\n\tF_GETFD                        = 0x1\n\tF_GETFL                        = 0x3\n\tF_GETLK                        = 0xb\n\tF_GETOWN                       = 0x5\n\tF_GET_SEALS                    = 0x14\n\tF_ISUNIONSTACK                 = 0x15\n\tF_KINFO                        = 0x16\n\tF_OGETLK                       = 0x7\n\tF_OK                           = 0x0\n\tF_OSETLK                       = 0x8\n\tF_OSETLKW                      = 0x9\n\tF_RDAHEAD                      = 0x10\n\tF_RDLCK                        = 0x1\n\tF_READAHEAD                    = 0xf\n\tF_SEAL_GROW                    = 0x4\n\tF_SEAL_SEAL                    = 0x1\n\tF_SEAL_SHRINK                  = 0x2\n\tF_SEAL_WRITE                   = 0x8\n\tF_SETFD                        = 0x2\n\tF_SETFL                        = 0x4\n\tF_SETLK                        = 0xc\n\tF_SETLKW                       = 0xd\n\tF_SETLK_REMOTE                 = 0xe\n\tF_SETOWN                       = 0x6\n\tF_UNLCK                        = 0x2\n\tF_UNLCKSYS                     = 0x4\n\tF_WRLCK                        = 0x3\n\tHUPCL                          = 0x4000\n\tHW_MACHINE                     = 0x1\n\tICANON                         = 0x100\n\tICMP6_FILTER                   = 0x12\n\tICRNL                          = 0x100\n\tIEXTEN                         = 0x400\n\tIFAN_ARRIVAL                   = 0x0\n\tIFAN_DEPARTURE                 = 0x1\n\tIFCAP_WOL_MAGIC                = 0x2000\n\tIFF_ALLMULTI                   = 0x200\n\tIFF_ALTPHYS                    = 0x4000\n\tIFF_BROADCAST                  = 0x2\n\tIFF_CANTCHANGE                 = 0x218f72\n\tIFF_CANTCONFIG                 = 0x10000\n\tIFF_DEBUG                      = 0x4\n\tIFF_DRV_OACTIVE                = 0x400\n\tIFF_DRV_RUNNING                = 0x40\n\tIFF_DYING                      = 0x200000\n\tIFF_KNOWSEPOCH                 = 0x20\n\tIFF_LINK0                      = 0x1000\n\tIFF_LINK1                      = 0x2000\n\tIFF_LINK2                      = 0x4000\n\tIFF_LOOPBACK                   = 0x8\n\tIFF_MONITOR                    = 0x40000\n\tIFF_MULTICAST                  = 0x8000\n\tIFF_NOARP                      = 0x80\n\tIFF_NOGROUP                    = 0x800000\n\tIFF_OACTIVE                    = 0x400\n\tIFF_POINTOPOINT                = 0x10\n\tIFF_PPROMISC                   = 0x20000\n\tIFF_PROMISC                    = 0x100\n\tIFF_RENAMING                   = 0x400000\n\tIFF_RUNNING                    = 0x40\n\tIFF_SIMPLEX                    = 0x800\n\tIFF_STATICARP                  = 0x80000\n\tIFF_UP                         = 0x1\n\tIFNAMSIZ                       = 0x10\n\tIFT_BRIDGE                     = 0xd1\n\tIFT_CARP                       = 0xf8\n\tIFT_IEEE1394                   = 0x90\n\tIFT_INFINIBAND                 = 0xc7\n\tIFT_L2VLAN                     = 0x87\n\tIFT_L3IPVLAN                   = 0x88\n\tIFT_PPP                        = 0x17\n\tIFT_PROPVIRTUAL                = 0x35\n\tIGNBRK                         = 0x1\n\tIGNCR                          = 0x80\n\tIGNPAR                         = 0x4\n\tIMAXBEL                        = 0x2000\n\tINLCR                          = 0x40\n\tINPCK                          = 0x10\n\tIN_CLASSA_HOST                 = 0xffffff\n\tIN_CLASSA_MAX                  = 0x80\n\tIN_CLASSA_NET                  = 0xff000000\n\tIN_CLASSA_NSHIFT               = 0x18\n\tIN_CLASSB_HOST                 = 0xffff\n\tIN_CLASSB_MAX                  = 0x10000\n\tIN_CLASSB_NET                  = 0xffff0000\n\tIN_CLASSB_NSHIFT               = 0x10\n\tIN_CLASSC_HOST                 = 0xff\n\tIN_CLASSC_NET                  = 0xffffff00\n\tIN_CLASSC_NSHIFT               = 0x8\n\tIN_CLASSD_HOST                 = 0xfffffff\n\tIN_CLASSD_NET                  = 0xf0000000\n\tIN_CLASSD_NSHIFT               = 0x1c\n\tIN_LOOPBACKNET                 = 0x7f\n\tIN_NETMASK_DEFAULT             = 0xffffff00\n\tIN_RFC3021_MASK                = 0xfffffffe\n\tIPPROTO_3PC                    = 0x22\n\tIPPROTO_ADFS                   = 0x44\n\tIPPROTO_AH                     = 0x33\n\tIPPROTO_AHIP                   = 0x3d\n\tIPPROTO_APES                   = 0x63\n\tIPPROTO_ARGUS                  = 0xd\n\tIPPROTO_AX25                   = 0x5d\n\tIPPROTO_BHA                    = 0x31\n\tIPPROTO_BLT                    = 0x1e\n\tIPPROTO_BRSATMON               = 0x4c\n\tIPPROTO_CARP                   = 0x70\n\tIPPROTO_CFTP                   = 0x3e\n\tIPPROTO_CHAOS                  = 0x10\n\tIPPROTO_CMTP                   = 0x26\n\tIPPROTO_CPHB                   = 0x49\n\tIPPROTO_CPNX                   = 0x48\n\tIPPROTO_DCCP                   = 0x21\n\tIPPROTO_DDP                    = 0x25\n\tIPPROTO_DGP                    = 0x56\n\tIPPROTO_DIVERT                 = 0x102\n\tIPPROTO_DONE                   = 0x101\n\tIPPROTO_DSTOPTS                = 0x3c\n\tIPPROTO_EGP                    = 0x8\n\tIPPROTO_EMCON                  = 0xe\n\tIPPROTO_ENCAP                  = 0x62\n\tIPPROTO_EON                    = 0x50\n\tIPPROTO_ESP                    = 0x32\n\tIPPROTO_ETHERIP                = 0x61\n\tIPPROTO_FRAGMENT               = 0x2c\n\tIPPROTO_GGP                    = 0x3\n\tIPPROTO_GMTP                   = 0x64\n\tIPPROTO_GRE                    = 0x2f\n\tIPPROTO_HELLO                  = 0x3f\n\tIPPROTO_HIP                    = 0x8b\n\tIPPROTO_HMP                    = 0x14\n\tIPPROTO_HOPOPTS                = 0x0\n\tIPPROTO_ICMP                   = 0x1\n\tIPPROTO_ICMPV6                 = 0x3a\n\tIPPROTO_IDP                    = 0x16\n\tIPPROTO_IDPR                   = 0x23\n\tIPPROTO_IDRP                   = 0x2d\n\tIPPROTO_IGMP                   = 0x2\n\tIPPROTO_IGP                    = 0x55\n\tIPPROTO_IGRP                   = 0x58\n\tIPPROTO_IL                     = 0x28\n\tIPPROTO_INLSP                  = 0x34\n\tIPPROTO_INP                    = 0x20\n\tIPPROTO_IP                     = 0x0\n\tIPPROTO_IPCOMP                 = 0x6c\n\tIPPROTO_IPCV                   = 0x47\n\tIPPROTO_IPEIP                  = 0x5e\n\tIPPROTO_IPIP                   = 0x4\n\tIPPROTO_IPPC                   = 0x43\n\tIPPROTO_IPV4                   = 0x4\n\tIPPROTO_IPV6                   = 0x29\n\tIPPROTO_IRTP                   = 0x1c\n\tIPPROTO_KRYPTOLAN              = 0x41\n\tIPPROTO_LARP                   = 0x5b\n\tIPPROTO_LEAF1                  = 0x19\n\tIPPROTO_LEAF2                  = 0x1a\n\tIPPROTO_MAX                    = 0x100\n\tIPPROTO_MEAS                   = 0x13\n\tIPPROTO_MH                     = 0x87\n\tIPPROTO_MHRP                   = 0x30\n\tIPPROTO_MICP                   = 0x5f\n\tIPPROTO_MOBILE                 = 0x37\n\tIPPROTO_MPLS                   = 0x89\n\tIPPROTO_MTP                    = 0x5c\n\tIPPROTO_MUX                    = 0x12\n\tIPPROTO_ND                     = 0x4d\n\tIPPROTO_NHRP                   = 0x36\n\tIPPROTO_NONE                   = 0x3b\n\tIPPROTO_NSP                    = 0x1f\n\tIPPROTO_NVPII                  = 0xb\n\tIPPROTO_OLD_DIVERT             = 0xfe\n\tIPPROTO_OSPFIGP                = 0x59\n\tIPPROTO_PFSYNC                 = 0xf0\n\tIPPROTO_PGM                    = 0x71\n\tIPPROTO_PIGP                   = 0x9\n\tIPPROTO_PIM                    = 0x67\n\tIPPROTO_PRM                    = 0x15\n\tIPPROTO_PUP                    = 0xc\n\tIPPROTO_PVP                    = 0x4b\n\tIPPROTO_RAW                    = 0xff\n\tIPPROTO_RCCMON                 = 0xa\n\tIPPROTO_RDP                    = 0x1b\n\tIPPROTO_RESERVED_253           = 0xfd\n\tIPPROTO_RESERVED_254           = 0xfe\n\tIPPROTO_ROUTING                = 0x2b\n\tIPPROTO_RSVP                   = 0x2e\n\tIPPROTO_RVD                    = 0x42\n\tIPPROTO_SATEXPAK               = 0x40\n\tIPPROTO_SATMON                 = 0x45\n\tIPPROTO_SCCSP                  = 0x60\n\tIPPROTO_SCTP                   = 0x84\n\tIPPROTO_SDRP                   = 0x2a\n\tIPPROTO_SEND                   = 0x103\n\tIPPROTO_SHIM6                  = 0x8c\n\tIPPROTO_SKIP                   = 0x39\n\tIPPROTO_SPACER                 = 0x7fff\n\tIPPROTO_SRPC                   = 0x5a\n\tIPPROTO_ST                     = 0x7\n\tIPPROTO_SVMTP                  = 0x52\n\tIPPROTO_SWIPE                  = 0x35\n\tIPPROTO_TCF                    = 0x57\n\tIPPROTO_TCP                    = 0x6\n\tIPPROTO_TLSP                   = 0x38\n\tIPPROTO_TP                     = 0x1d\n\tIPPROTO_TPXX                   = 0x27\n\tIPPROTO_TRUNK1                 = 0x17\n\tIPPROTO_TRUNK2                 = 0x18\n\tIPPROTO_TTP                    = 0x54\n\tIPPROTO_UDP                    = 0x11\n\tIPPROTO_UDPLITE                = 0x88\n\tIPPROTO_VINES                  = 0x53\n\tIPPROTO_VISA                   = 0x46\n\tIPPROTO_VMTP                   = 0x51\n\tIPPROTO_WBEXPAK                = 0x4f\n\tIPPROTO_WBMON                  = 0x4e\n\tIPPROTO_WSN                    = 0x4a\n\tIPPROTO_XNET                   = 0xf\n\tIPPROTO_XTP                    = 0x24\n\tIPV6_AUTOFLOWLABEL             = 0x3b\n\tIPV6_BINDANY                   = 0x40\n\tIPV6_BINDMULTI                 = 0x41\n\tIPV6_BINDV6ONLY                = 0x1b\n\tIPV6_CHECKSUM                  = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS    = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP    = 0x1\n\tIPV6_DEFHLIM                   = 0x40\n\tIPV6_DONTFRAG                  = 0x3e\n\tIPV6_DSTOPTS                   = 0x32\n\tIPV6_FLOWID                    = 0x43\n\tIPV6_FLOWINFO_MASK             = 0xffffff0f\n\tIPV6_FLOWLABEL_LEN             = 0x14\n\tIPV6_FLOWLABEL_MASK            = 0xffff0f00\n\tIPV6_FLOWTYPE                  = 0x44\n\tIPV6_FRAGTTL                   = 0x78\n\tIPV6_FW_ADD                    = 0x1e\n\tIPV6_FW_DEL                    = 0x1f\n\tIPV6_FW_FLUSH                  = 0x20\n\tIPV6_FW_GET                    = 0x22\n\tIPV6_FW_ZERO                   = 0x21\n\tIPV6_HLIMDEC                   = 0x1\n\tIPV6_HOPLIMIT                  = 0x2f\n\tIPV6_HOPOPTS                   = 0x31\n\tIPV6_IPSEC_POLICY              = 0x1c\n\tIPV6_JOIN_GROUP                = 0xc\n\tIPV6_LEAVE_GROUP               = 0xd\n\tIPV6_MAXHLIM                   = 0xff\n\tIPV6_MAXOPTHDR                 = 0x800\n\tIPV6_MAXPACKET                 = 0xffff\n\tIPV6_MAX_GROUP_SRC_FILTER      = 0x200\n\tIPV6_MAX_MEMBERSHIPS           = 0xfff\n\tIPV6_MAX_SOCK_SRC_FILTER       = 0x80\n\tIPV6_MMTU                      = 0x500\n\tIPV6_MSFILTER                  = 0x4a\n\tIPV6_MULTICAST_HOPS            = 0xa\n\tIPV6_MULTICAST_IF              = 0x9\n\tIPV6_MULTICAST_LOOP            = 0xb\n\tIPV6_NEXTHOP                   = 0x30\n\tIPV6_ORIGDSTADDR               = 0x48\n\tIPV6_PATHMTU                   = 0x2c\n\tIPV6_PKTINFO                   = 0x2e\n\tIPV6_PORTRANGE                 = 0xe\n\tIPV6_PORTRANGE_DEFAULT         = 0x0\n\tIPV6_PORTRANGE_HIGH            = 0x1\n\tIPV6_PORTRANGE_LOW             = 0x2\n\tIPV6_PREFER_TEMPADDR           = 0x3f\n\tIPV6_RECVDSTOPTS               = 0x28\n\tIPV6_RECVFLOWID                = 0x46\n\tIPV6_RECVHOPLIMIT              = 0x25\n\tIPV6_RECVHOPOPTS               = 0x27\n\tIPV6_RECVORIGDSTADDR           = 0x48\n\tIPV6_RECVPATHMTU               = 0x2b\n\tIPV6_RECVPKTINFO               = 0x24\n\tIPV6_RECVRSSBUCKETID           = 0x47\n\tIPV6_RECVRTHDR                 = 0x26\n\tIPV6_RECVTCLASS                = 0x39\n\tIPV6_RSSBUCKETID               = 0x45\n\tIPV6_RSS_LISTEN_BUCKET         = 0x42\n\tIPV6_RTHDR                     = 0x33\n\tIPV6_RTHDRDSTOPTS              = 0x23\n\tIPV6_RTHDR_LOOSE               = 0x0\n\tIPV6_RTHDR_STRICT              = 0x1\n\tIPV6_RTHDR_TYPE_0              = 0x0\n\tIPV6_SOCKOPT_RESERVED1         = 0x3\n\tIPV6_TCLASS                    = 0x3d\n\tIPV6_UNICAST_HOPS              = 0x4\n\tIPV6_USE_MIN_MTU               = 0x2a\n\tIPV6_V6ONLY                    = 0x1b\n\tIPV6_VERSION                   = 0x60\n\tIPV6_VERSION_MASK              = 0xf0\n\tIPV6_VLAN_PCP                  = 0x4b\n\tIP_ADD_MEMBERSHIP              = 0xc\n\tIP_ADD_SOURCE_MEMBERSHIP       = 0x46\n\tIP_BINDANY                     = 0x18\n\tIP_BINDMULTI                   = 0x19\n\tIP_BLOCK_SOURCE                = 0x48\n\tIP_DEFAULT_MULTICAST_LOOP      = 0x1\n\tIP_DEFAULT_MULTICAST_TTL       = 0x1\n\tIP_DF                          = 0x4000\n\tIP_DONTFRAG                    = 0x43\n\tIP_DROP_MEMBERSHIP             = 0xd\n\tIP_DROP_SOURCE_MEMBERSHIP      = 0x47\n\tIP_DUMMYNET3                   = 0x31\n\tIP_DUMMYNET_CONFIGURE          = 0x3c\n\tIP_DUMMYNET_DEL                = 0x3d\n\tIP_DUMMYNET_FLUSH              = 0x3e\n\tIP_DUMMYNET_GET                = 0x40\n\tIP_FLOWID                      = 0x5a\n\tIP_FLOWTYPE                    = 0x5b\n\tIP_FW3                         = 0x30\n\tIP_FW_ADD                      = 0x32\n\tIP_FW_DEL                      = 0x33\n\tIP_FW_FLUSH                    = 0x34\n\tIP_FW_GET                      = 0x36\n\tIP_FW_NAT_CFG                  = 0x38\n\tIP_FW_NAT_DEL                  = 0x39\n\tIP_FW_NAT_GET_CONFIG           = 0x3a\n\tIP_FW_NAT_GET_LOG              = 0x3b\n\tIP_FW_RESETLOG                 = 0x37\n\tIP_FW_TABLE_ADD                = 0x28\n\tIP_FW_TABLE_DEL                = 0x29\n\tIP_FW_TABLE_FLUSH              = 0x2a\n\tIP_FW_TABLE_GETSIZE            = 0x2b\n\tIP_FW_TABLE_LIST               = 0x2c\n\tIP_FW_ZERO                     = 0x35\n\tIP_HDRINCL                     = 0x2\n\tIP_IPSEC_POLICY                = 0x15\n\tIP_MAXPACKET                   = 0xffff\n\tIP_MAX_GROUP_SRC_FILTER        = 0x200\n\tIP_MAX_MEMBERSHIPS             = 0xfff\n\tIP_MAX_SOCK_MUTE_FILTER        = 0x80\n\tIP_MAX_SOCK_SRC_FILTER         = 0x80\n\tIP_MF                          = 0x2000\n\tIP_MINTTL                      = 0x42\n\tIP_MSFILTER                    = 0x4a\n\tIP_MSS                         = 0x240\n\tIP_MULTICAST_IF                = 0x9\n\tIP_MULTICAST_LOOP              = 0xb\n\tIP_MULTICAST_TTL               = 0xa\n\tIP_MULTICAST_VIF               = 0xe\n\tIP_OFFMASK                     = 0x1fff\n\tIP_ONESBCAST                   = 0x17\n\tIP_OPTIONS                     = 0x1\n\tIP_ORIGDSTADDR                 = 0x1b\n\tIP_PORTRANGE                   = 0x13\n\tIP_PORTRANGE_DEFAULT           = 0x0\n\tIP_PORTRANGE_HIGH              = 0x1\n\tIP_PORTRANGE_LOW               = 0x2\n\tIP_RECVDSTADDR                 = 0x7\n\tIP_RECVFLOWID                  = 0x5d\n\tIP_RECVIF                      = 0x14\n\tIP_RECVOPTS                    = 0x5\n\tIP_RECVORIGDSTADDR             = 0x1b\n\tIP_RECVRETOPTS                 = 0x6\n\tIP_RECVRSSBUCKETID             = 0x5e\n\tIP_RECVTOS                     = 0x44\n\tIP_RECVTTL                     = 0x41\n\tIP_RETOPTS                     = 0x8\n\tIP_RF                          = 0x8000\n\tIP_RSSBUCKETID                 = 0x5c\n\tIP_RSS_LISTEN_BUCKET           = 0x1a\n\tIP_RSVP_OFF                    = 0x10\n\tIP_RSVP_ON                     = 0xf\n\tIP_RSVP_VIF_OFF                = 0x12\n\tIP_RSVP_VIF_ON                 = 0x11\n\tIP_SENDSRCADDR                 = 0x7\n\tIP_TOS                         = 0x3\n\tIP_TTL                         = 0x4\n\tIP_UNBLOCK_SOURCE              = 0x49\n\tIP_VLAN_PCP                    = 0x4b\n\tISIG                           = 0x80\n\tISTRIP                         = 0x20\n\tITIMER_PROF                    = 0x2\n\tITIMER_REAL                    = 0x0\n\tITIMER_VIRTUAL                 = 0x1\n\tIXANY                          = 0x800\n\tIXOFF                          = 0x400\n\tIXON                           = 0x200\n\tKERN_HOSTNAME                  = 0xa\n\tKERN_OSRELEASE                 = 0x2\n\tKERN_OSTYPE                    = 0x1\n\tKERN_VERSION                   = 0x4\n\tLOCAL_CONNWAIT                 = 0x4\n\tLOCAL_CREDS                    = 0x2\n\tLOCAL_CREDS_PERSISTENT         = 0x3\n\tLOCAL_PEERCRED                 = 0x1\n\tLOCAL_VENDOR                   = 0x80000000\n\tLOCK_EX                        = 0x2\n\tLOCK_NB                        = 0x4\n\tLOCK_SH                        = 0x1\n\tLOCK_UN                        = 0x8\n\tMADV_AUTOSYNC                  = 0x7\n\tMADV_CORE                      = 0x9\n\tMADV_DONTNEED                  = 0x4\n\tMADV_FREE                      = 0x5\n\tMADV_NOCORE                    = 0x8\n\tMADV_NORMAL                    = 0x0\n\tMADV_NOSYNC                    = 0x6\n\tMADV_PROTECT                   = 0xa\n\tMADV_RANDOM                    = 0x1\n\tMADV_SEQUENTIAL                = 0x2\n\tMADV_WILLNEED                  = 0x3\n\tMAP_32BIT                      = 0x80000\n\tMAP_ALIGNED_SUPER              = 0x1000000\n\tMAP_ALIGNMENT_MASK             = -0x1000000\n\tMAP_ALIGNMENT_SHIFT            = 0x18\n\tMAP_ANON                       = 0x1000\n\tMAP_ANONYMOUS                  = 0x1000\n\tMAP_COPY                       = 0x2\n\tMAP_EXCL                       = 0x4000\n\tMAP_FILE                       = 0x0\n\tMAP_FIXED                      = 0x10\n\tMAP_GUARD                      = 0x2000\n\tMAP_HASSEMAPHORE               = 0x200\n\tMAP_NOCORE                     = 0x20000\n\tMAP_NOSYNC                     = 0x800\n\tMAP_PREFAULT_READ              = 0x40000\n\tMAP_PRIVATE                    = 0x2\n\tMAP_RESERVED0020               = 0x20\n\tMAP_RESERVED0040               = 0x40\n\tMAP_RESERVED0080               = 0x80\n\tMAP_RESERVED0100               = 0x100\n\tMAP_SHARED                     = 0x1\n\tMAP_STACK                      = 0x400\n\tMCAST_BLOCK_SOURCE             = 0x54\n\tMCAST_EXCLUDE                  = 0x2\n\tMCAST_INCLUDE                  = 0x1\n\tMCAST_JOIN_GROUP               = 0x50\n\tMCAST_JOIN_SOURCE_GROUP        = 0x52\n\tMCAST_LEAVE_GROUP              = 0x51\n\tMCAST_LEAVE_SOURCE_GROUP       = 0x53\n\tMCAST_UNBLOCK_SOURCE           = 0x55\n\tMCAST_UNDEFINED                = 0x0\n\tMCL_CURRENT                    = 0x1\n\tMCL_FUTURE                     = 0x2\n\tMFD_ALLOW_SEALING              = 0x2\n\tMFD_CLOEXEC                    = 0x1\n\tMFD_HUGETLB                    = 0x4\n\tMFD_HUGE_16GB                  = -0x78000000\n\tMFD_HUGE_16MB                  = 0x60000000\n\tMFD_HUGE_1GB                   = 0x78000000\n\tMFD_HUGE_1MB                   = 0x50000000\n\tMFD_HUGE_256MB                 = 0x70000000\n\tMFD_HUGE_2GB                   = 0x7c000000\n\tMFD_HUGE_2MB                   = 0x54000000\n\tMFD_HUGE_32MB                  = 0x64000000\n\tMFD_HUGE_512KB                 = 0x4c000000\n\tMFD_HUGE_512MB                 = 0x74000000\n\tMFD_HUGE_64KB                  = 0x40000000\n\tMFD_HUGE_8MB                   = 0x5c000000\n\tMFD_HUGE_MASK                  = 0xfc000000\n\tMFD_HUGE_SHIFT                 = 0x1a\n\tMNT_ACLS                       = 0x8000000\n\tMNT_ASYNC                      = 0x40\n\tMNT_AUTOMOUNTED                = 0x200000000\n\tMNT_BYFSID                     = 0x8000000\n\tMNT_CMDFLAGS                   = 0x300d0f0000\n\tMNT_DEFEXPORTED                = 0x200\n\tMNT_DELEXPORT                  = 0x20000\n\tMNT_EMPTYDIR                   = 0x2000000000\n\tMNT_EXKERB                     = 0x800\n\tMNT_EXPORTANON                 = 0x400\n\tMNT_EXPORTED                   = 0x100\n\tMNT_EXPUBLIC                   = 0x20000000\n\tMNT_EXRDONLY                   = 0x80\n\tMNT_EXTLS                      = 0x4000000000\n\tMNT_EXTLSCERT                  = 0x8000000000\n\tMNT_EXTLSCERTUSER              = 0x10000000000\n\tMNT_FORCE                      = 0x80000\n\tMNT_GJOURNAL                   = 0x2000000\n\tMNT_IGNORE                     = 0x800000\n\tMNT_LAZY                       = 0x3\n\tMNT_LOCAL                      = 0x1000\n\tMNT_MULTILABEL                 = 0x4000000\n\tMNT_NFS4ACLS                   = 0x10\n\tMNT_NOATIME                    = 0x10000000\n\tMNT_NOCLUSTERR                 = 0x40000000\n\tMNT_NOCLUSTERW                 = 0x80000000\n\tMNT_NOCOVER                    = 0x1000000000\n\tMNT_NOEXEC                     = 0x4\n\tMNT_NONBUSY                    = 0x4000000\n\tMNT_NOSUID                     = 0x8\n\tMNT_NOSYMFOLLOW                = 0x400000\n\tMNT_NOWAIT                     = 0x2\n\tMNT_QUOTA                      = 0x2000\n\tMNT_RDONLY                     = 0x1\n\tMNT_RELOAD                     = 0x40000\n\tMNT_ROOTFS                     = 0x4000\n\tMNT_SNAPSHOT                   = 0x1000000\n\tMNT_SOFTDEP                    = 0x200000\n\tMNT_SUIDDIR                    = 0x100000\n\tMNT_SUJ                        = 0x100000000\n\tMNT_SUSPEND                    = 0x4\n\tMNT_SYNCHRONOUS                = 0x2\n\tMNT_UNION                      = 0x20\n\tMNT_UNTRUSTED                  = 0x800000000\n\tMNT_UPDATE                     = 0x10000\n\tMNT_UPDATEMASK                 = 0xad8d0807e\n\tMNT_USER                       = 0x8000\n\tMNT_VERIFIED                   = 0x400000000\n\tMNT_VISFLAGMASK                = 0xffef0ffff\n\tMNT_WAIT                       = 0x1\n\tMSG_CMSG_CLOEXEC               = 0x40000\n\tMSG_COMPAT                     = 0x8000\n\tMSG_CTRUNC                     = 0x20\n\tMSG_DONTROUTE                  = 0x4\n\tMSG_DONTWAIT                   = 0x80\n\tMSG_EOF                        = 0x100\n\tMSG_EOR                        = 0x8\n\tMSG_NBIO                       = 0x4000\n\tMSG_NOSIGNAL                   = 0x20000\n\tMSG_NOTIFICATION               = 0x2000\n\tMSG_OOB                        = 0x1\n\tMSG_PEEK                       = 0x2\n\tMSG_TRUNC                      = 0x10\n\tMSG_WAITALL                    = 0x40\n\tMSG_WAITFORONE                 = 0x80000\n\tMS_ASYNC                       = 0x1\n\tMS_INVALIDATE                  = 0x2\n\tMS_SYNC                        = 0x0\n\tNAME_MAX                       = 0xff\n\tNET_RT_DUMP                    = 0x1\n\tNET_RT_FLAGS                   = 0x2\n\tNET_RT_IFLIST                  = 0x3\n\tNET_RT_IFLISTL                 = 0x5\n\tNET_RT_IFMALIST                = 0x4\n\tNET_RT_NHGRP                   = 0x7\n\tNET_RT_NHOP                    = 0x6\n\tNFDBITS                        = 0x40\n\tNOFLSH                         = 0x80000000\n\tNOKERNINFO                     = 0x2000000\n\tNOTE_ABSTIME                   = 0x10\n\tNOTE_ATTRIB                    = 0x8\n\tNOTE_CHILD                     = 0x4\n\tNOTE_CLOSE                     = 0x100\n\tNOTE_CLOSE_WRITE               = 0x200\n\tNOTE_DELETE                    = 0x1\n\tNOTE_EXEC                      = 0x20000000\n\tNOTE_EXIT                      = 0x80000000\n\tNOTE_EXTEND                    = 0x4\n\tNOTE_FFAND                     = 0x40000000\n\tNOTE_FFCOPY                    = 0xc0000000\n\tNOTE_FFCTRLMASK                = 0xc0000000\n\tNOTE_FFLAGSMASK                = 0xffffff\n\tNOTE_FFNOP                     = 0x0\n\tNOTE_FFOR                      = 0x80000000\n\tNOTE_FILE_POLL                 = 0x2\n\tNOTE_FORK                      = 0x40000000\n\tNOTE_LINK                      = 0x10\n\tNOTE_LOWAT                     = 0x1\n\tNOTE_MSECONDS                  = 0x2\n\tNOTE_NSECONDS                  = 0x8\n\tNOTE_OPEN                      = 0x80\n\tNOTE_PCTRLMASK                 = 0xf0000000\n\tNOTE_PDATAMASK                 = 0xfffff\n\tNOTE_READ                      = 0x400\n\tNOTE_RENAME                    = 0x20\n\tNOTE_REVOKE                    = 0x40\n\tNOTE_SECONDS                   = 0x1\n\tNOTE_TRACK                     = 0x1\n\tNOTE_TRACKERR                  = 0x2\n\tNOTE_TRIGGER                   = 0x1000000\n\tNOTE_USECONDS                  = 0x4\n\tNOTE_WRITE                     = 0x2\n\tOCRNL                          = 0x10\n\tONLCR                          = 0x2\n\tONLRET                         = 0x40\n\tONOCR                          = 0x20\n\tONOEOT                         = 0x8\n\tOPOST                          = 0x1\n\tOXTABS                         = 0x4\n\tO_ACCMODE                      = 0x3\n\tO_APPEND                       = 0x8\n\tO_ASYNC                        = 0x40\n\tO_CLOEXEC                      = 0x100000\n\tO_CREAT                        = 0x200\n\tO_DIRECT                       = 0x10000\n\tO_DIRECTORY                    = 0x20000\n\tO_DSYNC                        = 0x1000000\n\tO_EMPTY_PATH                   = 0x2000000\n\tO_EXCL                         = 0x800\n\tO_EXEC                         = 0x40000\n\tO_EXLOCK                       = 0x20\n\tO_FSYNC                        = 0x80\n\tO_NDELAY                       = 0x4\n\tO_NOCTTY                       = 0x8000\n\tO_NOFOLLOW                     = 0x100\n\tO_NONBLOCK                     = 0x4\n\tO_PATH                         = 0x400000\n\tO_RDONLY                       = 0x0\n\tO_RDWR                         = 0x2\n\tO_RESOLVE_BENEATH              = 0x800000\n\tO_SEARCH                       = 0x40000\n\tO_SHLOCK                       = 0x10\n\tO_SYNC                         = 0x80\n\tO_TRUNC                        = 0x400\n\tO_TTY_INIT                     = 0x80000\n\tO_VERIFY                       = 0x200000\n\tO_WRONLY                       = 0x1\n\tPARENB                         = 0x1000\n\tPARMRK                         = 0x8\n\tPARODD                         = 0x2000\n\tPENDIN                         = 0x20000000\n\tPIOD_READ_D                    = 0x1\n\tPIOD_READ_I                    = 0x3\n\tPIOD_WRITE_D                   = 0x2\n\tPIOD_WRITE_I                   = 0x4\n\tPRIO_PGRP                      = 0x1\n\tPRIO_PROCESS                   = 0x0\n\tPRIO_USER                      = 0x2\n\tPROT_EXEC                      = 0x4\n\tPROT_NONE                      = 0x0\n\tPROT_READ                      = 0x1\n\tPROT_WRITE                     = 0x2\n\tPTRACE_DEFAULT                 = 0x1\n\tPTRACE_EXEC                    = 0x1\n\tPTRACE_FORK                    = 0x8\n\tPTRACE_LWP                     = 0x10\n\tPTRACE_SCE                     = 0x2\n\tPTRACE_SCX                     = 0x4\n\tPTRACE_SYSCALL                 = 0x6\n\tPTRACE_VFORK                   = 0x20\n\tPT_ATTACH                      = 0xa\n\tPT_CLEARSTEP                   = 0x10\n\tPT_CONTINUE                    = 0x7\n\tPT_COREDUMP                    = 0x1d\n\tPT_DETACH                      = 0xb\n\tPT_FIRSTMACH                   = 0x40\n\tPT_FOLLOW_FORK                 = 0x17\n\tPT_GETDBREGS                   = 0x25\n\tPT_GETFPREGS                   = 0x23\n\tPT_GETLWPLIST                  = 0xf\n\tPT_GETNUMLWPS                  = 0xe\n\tPT_GETREGS                     = 0x21\n\tPT_GET_EVENT_MASK              = 0x19\n\tPT_GET_SC_ARGS                 = 0x1b\n\tPT_GET_SC_RET                  = 0x1c\n\tPT_IO                          = 0xc\n\tPT_KILL                        = 0x8\n\tPT_LWPINFO                     = 0xd\n\tPT_LWP_EVENTS                  = 0x18\n\tPT_READ_D                      = 0x2\n\tPT_READ_I                      = 0x1\n\tPT_RESUME                      = 0x13\n\tPT_SETDBREGS                   = 0x26\n\tPT_SETFPREGS                   = 0x24\n\tPT_SETREGS                     = 0x22\n\tPT_SETSTEP                     = 0x11\n\tPT_SET_EVENT_MASK              = 0x1a\n\tPT_STEP                        = 0x9\n\tPT_SUSPEND                     = 0x12\n\tPT_SYSCALL                     = 0x16\n\tPT_TO_SCE                      = 0x14\n\tPT_TO_SCX                      = 0x15\n\tPT_TRACE_ME                    = 0x0\n\tPT_VM_ENTRY                    = 0x29\n\tPT_VM_TIMESTAMP                = 0x28\n\tPT_WRITE_D                     = 0x5\n\tPT_WRITE_I                     = 0x4\n\tP_ZONEID                       = 0xc\n\tRLIMIT_AS                      = 0xa\n\tRLIMIT_CORE                    = 0x4\n\tRLIMIT_CPU                     = 0x0\n\tRLIMIT_DATA                    = 0x2\n\tRLIMIT_FSIZE                   = 0x1\n\tRLIMIT_MEMLOCK                 = 0x6\n\tRLIMIT_NOFILE                  = 0x8\n\tRLIMIT_NPROC                   = 0x7\n\tRLIMIT_RSS                     = 0x5\n\tRLIMIT_STACK                   = 0x3\n\tRLIM_INFINITY                  = 0x7fffffffffffffff\n\tRTAX_AUTHOR                    = 0x6\n\tRTAX_BRD                       = 0x7\n\tRTAX_DST                       = 0x0\n\tRTAX_GATEWAY                   = 0x1\n\tRTAX_GENMASK                   = 0x3\n\tRTAX_IFA                       = 0x5\n\tRTAX_IFP                       = 0x4\n\tRTAX_MAX                       = 0x8\n\tRTAX_NETMASK                   = 0x2\n\tRTA_AUTHOR                     = 0x40\n\tRTA_BRD                        = 0x80\n\tRTA_DST                        = 0x1\n\tRTA_GATEWAY                    = 0x2\n\tRTA_GENMASK                    = 0x8\n\tRTA_IFA                        = 0x20\n\tRTA_IFP                        = 0x10\n\tRTA_NETMASK                    = 0x4\n\tRTF_BLACKHOLE                  = 0x1000\n\tRTF_BROADCAST                  = 0x400000\n\tRTF_DONE                       = 0x40\n\tRTF_DYNAMIC                    = 0x10\n\tRTF_FIXEDMTU                   = 0x80000\n\tRTF_FMASK                      = 0x1004d808\n\tRTF_GATEWAY                    = 0x2\n\tRTF_GWFLAG_COMPAT              = 0x80000000\n\tRTF_HOST                       = 0x4\n\tRTF_LLDATA                     = 0x400\n\tRTF_LLINFO                     = 0x400\n\tRTF_LOCAL                      = 0x200000\n\tRTF_MODIFIED                   = 0x20\n\tRTF_MULTICAST                  = 0x800000\n\tRTF_PINNED                     = 0x100000\n\tRTF_PROTO1                     = 0x8000\n\tRTF_PROTO2                     = 0x4000\n\tRTF_PROTO3                     = 0x40000\n\tRTF_REJECT                     = 0x8\n\tRTF_STATIC                     = 0x800\n\tRTF_STICKY                     = 0x10000000\n\tRTF_UP                         = 0x1\n\tRTF_XRESOLVE                   = 0x200\n\tRTM_ADD                        = 0x1\n\tRTM_CHANGE                     = 0x3\n\tRTM_DELADDR                    = 0xd\n\tRTM_DELETE                     = 0x2\n\tRTM_DELMADDR                   = 0x10\n\tRTM_GET                        = 0x4\n\tRTM_IEEE80211                  = 0x12\n\tRTM_IFANNOUNCE                 = 0x11\n\tRTM_IFINFO                     = 0xe\n\tRTM_LOCK                       = 0x8\n\tRTM_LOSING                     = 0x5\n\tRTM_MISS                       = 0x7\n\tRTM_NEWADDR                    = 0xc\n\tRTM_NEWMADDR                   = 0xf\n\tRTM_REDIRECT                   = 0x6\n\tRTM_RESOLVE                    = 0xb\n\tRTM_RTTUNIT                    = 0xf4240\n\tRTM_VERSION                    = 0x5\n\tRTV_EXPIRE                     = 0x4\n\tRTV_HOPCOUNT                   = 0x2\n\tRTV_MTU                        = 0x1\n\tRTV_RPIPE                      = 0x8\n\tRTV_RTT                        = 0x40\n\tRTV_RTTVAR                     = 0x80\n\tRTV_SPIPE                      = 0x10\n\tRTV_SSTHRESH                   = 0x20\n\tRTV_WEIGHT                     = 0x100\n\tRT_ALL_FIBS                    = -0x1\n\tRT_BLACKHOLE                   = 0x40\n\tRT_DEFAULT_FIB                 = 0x0\n\tRT_DEFAULT_WEIGHT              = 0x1\n\tRT_HAS_GW                      = 0x80\n\tRT_HAS_HEADER                  = 0x10\n\tRT_HAS_HEADER_BIT              = 0x4\n\tRT_L2_ME                       = 0x4\n\tRT_L2_ME_BIT                   = 0x2\n\tRT_LLE_CACHE                   = 0x100\n\tRT_MAX_WEIGHT                  = 0xffffff\n\tRT_MAY_LOOP                    = 0x8\n\tRT_MAY_LOOP_BIT                = 0x3\n\tRT_REJECT                      = 0x20\n\tRUSAGE_CHILDREN                = -0x1\n\tRUSAGE_SELF                    = 0x0\n\tRUSAGE_THREAD                  = 0x1\n\tSCM_BINTIME                    = 0x4\n\tSCM_CREDS                      = 0x3\n\tSCM_CREDS2                     = 0x8\n\tSCM_MONOTONIC                  = 0x6\n\tSCM_REALTIME                   = 0x5\n\tSCM_RIGHTS                     = 0x1\n\tSCM_TIMESTAMP                  = 0x2\n\tSCM_TIME_INFO                  = 0x7\n\tSEEK_CUR                       = 0x1\n\tSEEK_DATA                      = 0x3\n\tSEEK_END                       = 0x2\n\tSEEK_HOLE                      = 0x4\n\tSEEK_SET                       = 0x0\n\tSHUT_RD                        = 0x0\n\tSHUT_RDWR                      = 0x2\n\tSHUT_WR                        = 0x1\n\tSIOCADDMULTI                   = 0x80206931\n\tSIOCAIFADDR                    = 0x8040691a\n\tSIOCAIFGROUP                   = 0x80286987\n\tSIOCATMARK                     = 0x40047307\n\tSIOCDELMULTI                   = 0x80206932\n\tSIOCDIFADDR                    = 0x80206919\n\tSIOCDIFGROUP                   = 0x80286989\n\tSIOCDIFPHYADDR                 = 0x80206949\n\tSIOCGDRVSPEC                   = 0xc028697b\n\tSIOCGETSGCNT                   = 0xc0207210\n\tSIOCGETVIFCNT                  = 0xc028720f\n\tSIOCGHIWAT                     = 0x40047301\n\tSIOCGHWADDR                    = 0xc020693e\n\tSIOCGI2C                       = 0xc020693d\n\tSIOCGIFADDR                    = 0xc0206921\n\tSIOCGIFALIAS                   = 0xc044692d\n\tSIOCGIFBRDADDR                 = 0xc0206923\n\tSIOCGIFCAP                     = 0xc020691f\n\tSIOCGIFCONF                    = 0xc0106924\n\tSIOCGIFDATA                    = 0x8020692c\n\tSIOCGIFDESCR                   = 0xc020692a\n\tSIOCGIFDOWNREASON              = 0xc058699a\n\tSIOCGIFDSTADDR                 = 0xc0206922\n\tSIOCGIFFIB                     = 0xc020695c\n\tSIOCGIFFLAGS                   = 0xc0206911\n\tSIOCGIFGENERIC                 = 0xc020693a\n\tSIOCGIFGMEMB                   = 0xc028698a\n\tSIOCGIFGROUP                   = 0xc0286988\n\tSIOCGIFINDEX                   = 0xc0206920\n\tSIOCGIFMAC                     = 0xc0206926\n\tSIOCGIFMEDIA                   = 0xc0306938\n\tSIOCGIFMETRIC                  = 0xc0206917\n\tSIOCGIFMTU                     = 0xc0206933\n\tSIOCGIFNETMASK                 = 0xc0206925\n\tSIOCGIFPDSTADDR                = 0xc0206948\n\tSIOCGIFPHYS                    = 0xc0206935\n\tSIOCGIFPSRCADDR                = 0xc0206947\n\tSIOCGIFRSSHASH                 = 0xc0186997\n\tSIOCGIFRSSKEY                  = 0xc0946996\n\tSIOCGIFSTATUS                  = 0xc331693b\n\tSIOCGIFXMEDIA                  = 0xc030698b\n\tSIOCGLANPCP                    = 0xc0206998\n\tSIOCGLOWAT                     = 0x40047303\n\tSIOCGPGRP                      = 0x40047309\n\tSIOCGPRIVATE_0                 = 0xc0206950\n\tSIOCGPRIVATE_1                 = 0xc0206951\n\tSIOCGTUNFIB                    = 0xc020695e\n\tSIOCIFCREATE                   = 0xc020697a\n\tSIOCIFCREATE2                  = 0xc020697c\n\tSIOCIFDESTROY                  = 0x80206979\n\tSIOCIFGCLONERS                 = 0xc0106978\n\tSIOCSDRVSPEC                   = 0x8028697b\n\tSIOCSHIWAT                     = 0x80047300\n\tSIOCSIFADDR                    = 0x8020690c\n\tSIOCSIFBRDADDR                 = 0x80206913\n\tSIOCSIFCAP                     = 0x8020691e\n\tSIOCSIFDESCR                   = 0x80206929\n\tSIOCSIFDSTADDR                 = 0x8020690e\n\tSIOCSIFFIB                     = 0x8020695d\n\tSIOCSIFFLAGS                   = 0x80206910\n\tSIOCSIFGENERIC                 = 0x80206939\n\tSIOCSIFLLADDR                  = 0x8020693c\n\tSIOCSIFMAC                     = 0x80206927\n\tSIOCSIFMEDIA                   = 0xc0206937\n\tSIOCSIFMETRIC                  = 0x80206918\n\tSIOCSIFMTU                     = 0x80206934\n\tSIOCSIFNAME                    = 0x80206928\n\tSIOCSIFNETMASK                 = 0x80206916\n\tSIOCSIFPHYADDR                 = 0x80406946\n\tSIOCSIFPHYS                    = 0x80206936\n\tSIOCSIFRVNET                   = 0xc020695b\n\tSIOCSIFVNET                    = 0xc020695a\n\tSIOCSLANPCP                    = 0x80206999\n\tSIOCSLOWAT                     = 0x80047302\n\tSIOCSPGRP                      = 0x80047308\n\tSIOCSTUNFIB                    = 0x8020695f\n\tSOCK_CLOEXEC                   = 0x10000000\n\tSOCK_DGRAM                     = 0x2\n\tSOCK_MAXADDRLEN                = 0xff\n\tSOCK_NONBLOCK                  = 0x20000000\n\tSOCK_RAW                       = 0x3\n\tSOCK_RDM                       = 0x4\n\tSOCK_SEQPACKET                 = 0x5\n\tSOCK_STREAM                    = 0x1\n\tSOL_LOCAL                      = 0x0\n\tSOL_SOCKET                     = 0xffff\n\tSOMAXCONN                      = 0x80\n\tSO_ACCEPTCONN                  = 0x2\n\tSO_ACCEPTFILTER                = 0x1000\n\tSO_BINTIME                     = 0x2000\n\tSO_BROADCAST                   = 0x20\n\tSO_DEBUG                       = 0x1\n\tSO_DOMAIN                      = 0x1019\n\tSO_DONTROUTE                   = 0x10\n\tSO_ERROR                       = 0x1007\n\tSO_KEEPALIVE                   = 0x8\n\tSO_LABEL                       = 0x1009\n\tSO_LINGER                      = 0x80\n\tSO_LISTENINCQLEN               = 0x1013\n\tSO_LISTENQLEN                  = 0x1012\n\tSO_LISTENQLIMIT                = 0x1011\n\tSO_MAX_PACING_RATE             = 0x1018\n\tSO_NOSIGPIPE                   = 0x800\n\tSO_NO_DDP                      = 0x8000\n\tSO_NO_OFFLOAD                  = 0x4000\n\tSO_OOBINLINE                   = 0x100\n\tSO_PEERLABEL                   = 0x1010\n\tSO_PROTOCOL                    = 0x1016\n\tSO_PROTOTYPE                   = 0x1016\n\tSO_RCVBUF                      = 0x1002\n\tSO_RCVLOWAT                    = 0x1004\n\tSO_RCVTIMEO                    = 0x1006\n\tSO_RERROR                      = 0x20000\n\tSO_REUSEADDR                   = 0x4\n\tSO_REUSEPORT                   = 0x200\n\tSO_REUSEPORT_LB                = 0x10000\n\tSO_SETFIB                      = 0x1014\n\tSO_SNDBUF                      = 0x1001\n\tSO_SNDLOWAT                    = 0x1003\n\tSO_SNDTIMEO                    = 0x1005\n\tSO_TIMESTAMP                   = 0x400\n\tSO_TS_BINTIME                  = 0x1\n\tSO_TS_CLOCK                    = 0x1017\n\tSO_TS_CLOCK_MAX                = 0x3\n\tSO_TS_DEFAULT                  = 0x0\n\tSO_TS_MONOTONIC                = 0x3\n\tSO_TS_REALTIME                 = 0x2\n\tSO_TS_REALTIME_MICRO           = 0x0\n\tSO_TYPE                        = 0x1008\n\tSO_USELOOPBACK                 = 0x40\n\tSO_USER_COOKIE                 = 0x1015\n\tSO_VENDOR                      = 0x80000000\n\tS_BLKSIZE                      = 0x200\n\tS_IEXEC                        = 0x40\n\tS_IFBLK                        = 0x6000\n\tS_IFCHR                        = 0x2000\n\tS_IFDIR                        = 0x4000\n\tS_IFIFO                        = 0x1000\n\tS_IFLNK                        = 0xa000\n\tS_IFMT                         = 0xf000\n\tS_IFREG                        = 0x8000\n\tS_IFSOCK                       = 0xc000\n\tS_IFWHT                        = 0xe000\n\tS_IREAD                        = 0x100\n\tS_IRGRP                        = 0x20\n\tS_IROTH                        = 0x4\n\tS_IRUSR                        = 0x100\n\tS_IRWXG                        = 0x38\n\tS_IRWXO                        = 0x7\n\tS_IRWXU                        = 0x1c0\n\tS_ISGID                        = 0x400\n\tS_ISTXT                        = 0x200\n\tS_ISUID                        = 0x800\n\tS_ISVTX                        = 0x200\n\tS_IWGRP                        = 0x10\n\tS_IWOTH                        = 0x2\n\tS_IWRITE                       = 0x80\n\tS_IWUSR                        = 0x80\n\tS_IXGRP                        = 0x8\n\tS_IXOTH                        = 0x1\n\tS_IXUSR                        = 0x40\n\tTAB0                           = 0x0\n\tTAB3                           = 0x4\n\tTABDLY                         = 0x4\n\tTCIFLUSH                       = 0x1\n\tTCIOFF                         = 0x3\n\tTCIOFLUSH                      = 0x3\n\tTCION                          = 0x4\n\tTCOFLUSH                       = 0x2\n\tTCOOFF                         = 0x1\n\tTCOON                          = 0x2\n\tTCPOPT_EOL                     = 0x0\n\tTCPOPT_FAST_OPEN               = 0x22\n\tTCPOPT_MAXSEG                  = 0x2\n\tTCPOPT_NOP                     = 0x1\n\tTCPOPT_PAD                     = 0x0\n\tTCPOPT_SACK                    = 0x5\n\tTCPOPT_SACK_PERMITTED          = 0x4\n\tTCPOPT_SIGNATURE               = 0x13\n\tTCPOPT_TIMESTAMP               = 0x8\n\tTCPOPT_WINDOW                  = 0x3\n\tTCP_BBR_ACK_COMP_ALG           = 0x448\n\tTCP_BBR_ALGORITHM              = 0x43b\n\tTCP_BBR_DRAIN_INC_EXTRA        = 0x43c\n\tTCP_BBR_DRAIN_PG               = 0x42e\n\tTCP_BBR_EXTRA_GAIN             = 0x449\n\tTCP_BBR_EXTRA_STATE            = 0x453\n\tTCP_BBR_FLOOR_MIN_TSO          = 0x454\n\tTCP_BBR_HDWR_PACE              = 0x451\n\tTCP_BBR_HOLD_TARGET            = 0x436\n\tTCP_BBR_IWINTSO                = 0x42b\n\tTCP_BBR_LOWGAIN_FD             = 0x436\n\tTCP_BBR_LOWGAIN_HALF           = 0x435\n\tTCP_BBR_LOWGAIN_THRESH         = 0x434\n\tTCP_BBR_MAX_RTO                = 0x439\n\tTCP_BBR_MIN_RTO                = 0x438\n\tTCP_BBR_MIN_TOPACEOUT          = 0x455\n\tTCP_BBR_ONE_RETRAN             = 0x431\n\tTCP_BBR_PACE_CROSS             = 0x442\n\tTCP_BBR_PACE_DEL_TAR           = 0x43f\n\tTCP_BBR_PACE_OH                = 0x435\n\tTCP_BBR_PACE_PER_SEC           = 0x43e\n\tTCP_BBR_PACE_SEG_MAX           = 0x440\n\tTCP_BBR_PACE_SEG_MIN           = 0x441\n\tTCP_BBR_POLICER_DETECT         = 0x457\n\tTCP_BBR_PROBE_RTT_GAIN         = 0x44d\n\tTCP_BBR_PROBE_RTT_INT          = 0x430\n\tTCP_BBR_PROBE_RTT_LEN          = 0x44e\n\tTCP_BBR_RACK_INIT_RATE         = 0x458\n\tTCP_BBR_RACK_RTT_USE           = 0x44a\n\tTCP_BBR_RECFORCE               = 0x42c\n\tTCP_BBR_REC_OVER_HPTS          = 0x43a\n\tTCP_BBR_RETRAN_WTSO            = 0x44b\n\tTCP_BBR_RWND_IS_APP            = 0x42f\n\tTCP_BBR_SEND_IWND_IN_TSO       = 0x44f\n\tTCP_BBR_STARTUP_EXIT_EPOCH     = 0x43d\n\tTCP_BBR_STARTUP_LOSS_EXIT      = 0x432\n\tTCP_BBR_STARTUP_PG             = 0x42d\n\tTCP_BBR_TMR_PACE_OH            = 0x448\n\tTCP_BBR_TSLIMITS               = 0x434\n\tTCP_BBR_TSTMP_RAISES           = 0x456\n\tTCP_BBR_UNLIMITED              = 0x43b\n\tTCP_BBR_USEDEL_RATE            = 0x437\n\tTCP_BBR_USE_LOWGAIN            = 0x433\n\tTCP_BBR_USE_RACK_CHEAT         = 0x450\n\tTCP_BBR_USE_RACK_RR            = 0x450\n\tTCP_BBR_UTTER_MAX_TSO          = 0x452\n\tTCP_CA_NAME_MAX                = 0x10\n\tTCP_CCALGOOPT                  = 0x41\n\tTCP_CONGESTION                 = 0x40\n\tTCP_DATA_AFTER_CLOSE           = 0x44c\n\tTCP_DEFER_OPTIONS              = 0x470\n\tTCP_DELACK                     = 0x48\n\tTCP_FASTOPEN                   = 0x401\n\tTCP_FASTOPEN_MAX_COOKIE_LEN    = 0x10\n\tTCP_FASTOPEN_MIN_COOKIE_LEN    = 0x4\n\tTCP_FASTOPEN_PSK_LEN           = 0x10\n\tTCP_FAST_RSM_HACK              = 0x471\n\tTCP_FIN_IS_RST                 = 0x49\n\tTCP_FUNCTION_BLK               = 0x2000\n\tTCP_FUNCTION_NAME_LEN_MAX      = 0x20\n\tTCP_HDWR_RATE_CAP              = 0x46a\n\tTCP_HDWR_UP_ONLY               = 0x46c\n\tTCP_IDLE_REDUCE                = 0x46\n\tTCP_INFO                       = 0x20\n\tTCP_IWND_NB                    = 0x2b\n\tTCP_IWND_NSEG                  = 0x2c\n\tTCP_KEEPCNT                    = 0x400\n\tTCP_KEEPIDLE                   = 0x100\n\tTCP_KEEPINIT                   = 0x80\n\tTCP_KEEPINTVL                  = 0x200\n\tTCP_LOG                        = 0x22\n\tTCP_LOGBUF                     = 0x23\n\tTCP_LOGDUMP                    = 0x25\n\tTCP_LOGDUMPID                  = 0x26\n\tTCP_LOGID                      = 0x24\n\tTCP_LOGID_CNT                  = 0x2e\n\tTCP_LOG_ID_LEN                 = 0x40\n\tTCP_LOG_LIMIT                  = 0x4a\n\tTCP_LOG_TAG                    = 0x2f\n\tTCP_MAXBURST                   = 0x4\n\tTCP_MAXHLEN                    = 0x3c\n\tTCP_MAXOLEN                    = 0x28\n\tTCP_MAXPEAKRATE                = 0x45\n\tTCP_MAXSEG                     = 0x2\n\tTCP_MAXUNACKTIME               = 0x44\n\tTCP_MAXWIN                     = 0xffff\n\tTCP_MAX_SACK                   = 0x4\n\tTCP_MAX_WINSHIFT               = 0xe\n\tTCP_MD5SIG                     = 0x10\n\tTCP_MINMSS                     = 0xd8\n\tTCP_MSS                        = 0x218\n\tTCP_NODELAY                    = 0x1\n\tTCP_NOOPT                      = 0x8\n\tTCP_NOPUSH                     = 0x4\n\tTCP_NO_PRR                     = 0x462\n\tTCP_PACING_RATE_CAP            = 0x46b\n\tTCP_PCAP_IN                    = 0x1000\n\tTCP_PCAP_OUT                   = 0x800\n\tTCP_PERF_INFO                  = 0x4e\n\tTCP_PROC_ACCOUNTING            = 0x4c\n\tTCP_RACK_ABC_VAL               = 0x46d\n\tTCP_RACK_CHEAT_NOT_CONF_RATE   = 0x459\n\tTCP_RACK_DO_DETECTION          = 0x449\n\tTCP_RACK_EARLY_RECOV           = 0x423\n\tTCP_RACK_EARLY_SEG             = 0x424\n\tTCP_RACK_FORCE_MSEG            = 0x45d\n\tTCP_RACK_GP_INCREASE           = 0x446\n\tTCP_RACK_GP_INCREASE_CA        = 0x45a\n\tTCP_RACK_GP_INCREASE_REC       = 0x45c\n\tTCP_RACK_GP_INCREASE_SS        = 0x45b\n\tTCP_RACK_IDLE_REDUCE_HIGH      = 0x444\n\tTCP_RACK_MBUF_QUEUE            = 0x41a\n\tTCP_RACK_MEASURE_CNT           = 0x46f\n\tTCP_RACK_MIN_PACE              = 0x445\n\tTCP_RACK_MIN_PACE_SEG          = 0x446\n\tTCP_RACK_MIN_TO                = 0x422\n\tTCP_RACK_NONRXT_CFG_RATE       = 0x463\n\tTCP_RACK_NO_PUSH_AT_MAX        = 0x466\n\tTCP_RACK_PACE_ALWAYS           = 0x41f\n\tTCP_RACK_PACE_MAX_SEG          = 0x41e\n\tTCP_RACK_PACE_RATE_CA          = 0x45e\n\tTCP_RACK_PACE_RATE_REC         = 0x460\n\tTCP_RACK_PACE_RATE_SS          = 0x45f\n\tTCP_RACK_PACE_REDUCE           = 0x41d\n\tTCP_RACK_PACE_TO_FILL          = 0x467\n\tTCP_RACK_PACING_BETA           = 0x472\n\tTCP_RACK_PACING_BETA_ECN       = 0x473\n\tTCP_RACK_PKT_DELAY             = 0x428\n\tTCP_RACK_PROFILE               = 0x469\n\tTCP_RACK_PROP                  = 0x41b\n\tTCP_RACK_PROP_RATE             = 0x420\n\tTCP_RACK_PRR_SENDALOT          = 0x421\n\tTCP_RACK_REORD_FADE            = 0x426\n\tTCP_RACK_REORD_THRESH          = 0x425\n\tTCP_RACK_RR_CONF               = 0x459\n\tTCP_RACK_TIMER_SLOP            = 0x474\n\tTCP_RACK_TLP_INC_VAR           = 0x429\n\tTCP_RACK_TLP_REDUCE            = 0x41c\n\tTCP_RACK_TLP_THRESH            = 0x427\n\tTCP_RACK_TLP_USE               = 0x447\n\tTCP_REC_ABC_VAL                = 0x46e\n\tTCP_REMOTE_UDP_ENCAPS_PORT     = 0x47\n\tTCP_REUSPORT_LB_NUMA           = 0x402\n\tTCP_REUSPORT_LB_NUMA_CURDOM    = -0x1\n\tTCP_REUSPORT_LB_NUMA_NODOM     = -0x2\n\tTCP_RXTLS_ENABLE               = 0x29\n\tTCP_RXTLS_MODE                 = 0x2a\n\tTCP_SHARED_CWND_ALLOWED        = 0x4b\n\tTCP_SHARED_CWND_ENABLE         = 0x464\n\tTCP_SHARED_CWND_TIME_LIMIT     = 0x468\n\tTCP_STATS                      = 0x21\n\tTCP_TIMELY_DYN_ADJ             = 0x465\n\tTCP_TLS_MODE_IFNET             = 0x2\n\tTCP_TLS_MODE_NONE              = 0x0\n\tTCP_TLS_MODE_SW                = 0x1\n\tTCP_TLS_MODE_TOE               = 0x3\n\tTCP_TXTLS_ENABLE               = 0x27\n\tTCP_TXTLS_MODE                 = 0x28\n\tTCP_USER_LOG                   = 0x30\n\tTCP_USE_CMP_ACKS               = 0x4d\n\tTCP_VENDOR                     = 0x80000000\n\tTCSAFLUSH                      = 0x2\n\tTIMER_ABSTIME                  = 0x1\n\tTIMER_RELTIME                  = 0x0\n\tTIOCCBRK                       = 0x2000747a\n\tTIOCCDTR                       = 0x20007478\n\tTIOCCONS                       = 0x80047462\n\tTIOCDRAIN                      = 0x2000745e\n\tTIOCEXCL                       = 0x2000740d\n\tTIOCEXT                        = 0x80047460\n\tTIOCFLUSH                      = 0x80047410\n\tTIOCGDRAINWAIT                 = 0x40047456\n\tTIOCGETA                       = 0x402c7413\n\tTIOCGETD                       = 0x4004741a\n\tTIOCGPGRP                      = 0x40047477\n\tTIOCGPTN                       = 0x4004740f\n\tTIOCGSID                       = 0x40047463\n\tTIOCGWINSZ                     = 0x40087468\n\tTIOCMBIC                       = 0x8004746b\n\tTIOCMBIS                       = 0x8004746c\n\tTIOCMGDTRWAIT                  = 0x4004745a\n\tTIOCMGET                       = 0x4004746a\n\tTIOCMSDTRWAIT                  = 0x8004745b\n\tTIOCMSET                       = 0x8004746d\n\tTIOCM_CAR                      = 0x40\n\tTIOCM_CD                       = 0x40\n\tTIOCM_CTS                      = 0x20\n\tTIOCM_DCD                      = 0x40\n\tTIOCM_DSR                      = 0x100\n\tTIOCM_DTR                      = 0x2\n\tTIOCM_LE                       = 0x1\n\tTIOCM_RI                       = 0x80\n\tTIOCM_RNG                      = 0x80\n\tTIOCM_RTS                      = 0x4\n\tTIOCM_SR                       = 0x10\n\tTIOCM_ST                       = 0x8\n\tTIOCNOTTY                      = 0x20007471\n\tTIOCNXCL                       = 0x2000740e\n\tTIOCOUTQ                       = 0x40047473\n\tTIOCPKT                        = 0x80047470\n\tTIOCPKT_DATA                   = 0x0\n\tTIOCPKT_DOSTOP                 = 0x20\n\tTIOCPKT_FLUSHREAD              = 0x1\n\tTIOCPKT_FLUSHWRITE             = 0x2\n\tTIOCPKT_IOCTL                  = 0x40\n\tTIOCPKT_NOSTOP                 = 0x10\n\tTIOCPKT_START                  = 0x8\n\tTIOCPKT_STOP                   = 0x4\n\tTIOCPTMASTER                   = 0x2000741c\n\tTIOCSBRK                       = 0x2000747b\n\tTIOCSCTTY                      = 0x20007461\n\tTIOCSDRAINWAIT                 = 0x80047457\n\tTIOCSDTR                       = 0x20007479\n\tTIOCSETA                       = 0x802c7414\n\tTIOCSETAF                      = 0x802c7416\n\tTIOCSETAW                      = 0x802c7415\n\tTIOCSETD                       = 0x8004741b\n\tTIOCSIG                        = 0x2004745f\n\tTIOCSPGRP                      = 0x80047476\n\tTIOCSTART                      = 0x2000746e\n\tTIOCSTAT                       = 0x20007465\n\tTIOCSTI                        = 0x80017472\n\tTIOCSTOP                       = 0x2000746f\n\tTIOCSWINSZ                     = 0x80087467\n\tTIOCTIMESTAMP                  = 0x40107459\n\tTIOCUCNTL                      = 0x80047466\n\tTOSTOP                         = 0x400000\n\tUTIME_NOW                      = -0x1\n\tUTIME_OMIT                     = -0x2\n\tVDISCARD                       = 0xf\n\tVDSUSP                         = 0xb\n\tVEOF                           = 0x0\n\tVEOL                           = 0x1\n\tVEOL2                          = 0x2\n\tVERASE                         = 0x3\n\tVERASE2                        = 0x7\n\tVINTR                          = 0x8\n\tVKILL                          = 0x5\n\tVLNEXT                         = 0xe\n\tVMIN                           = 0x10\n\tVQUIT                          = 0x9\n\tVREPRINT                       = 0x6\n\tVSTART                         = 0xc\n\tVSTATUS                        = 0x12\n\tVSTOP                          = 0xd\n\tVSUSP                          = 0xa\n\tVTIME                          = 0x11\n\tVWERASE                        = 0x4\n\tWCONTINUED                     = 0x4\n\tWCOREFLAG                      = 0x80\n\tWEXITED                        = 0x10\n\tWLINUXCLONE                    = 0x80000000\n\tWNOHANG                        = 0x1\n\tWNOWAIT                        = 0x8\n\tWSTOPPED                       = 0x2\n\tWTRAPPED                       = 0x20\n\tWUNTRACED                      = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x59)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x55)\n\tECAPMODE        = syscall.Errno(0x5e)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDOOFUS         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x56)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTEGRITY      = syscall.Errno(0x61)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x61)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5a)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x57)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5b)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCAPABLE     = syscall.Errno(0x5d)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5f)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEOWNERDEAD      = syscall.Errno(0x60)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5c)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGLIBRT  = syscall.Signal(0x21)\n\tSIGLWP    = syscall.Signal(0x20)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EWOULDBLOCK\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"ECANCELED\", \"operation canceled\"},\n\t{86, \"EILSEQ\", \"illegal byte sequence\"},\n\t{87, \"ENOATTR\", \"attribute not found\"},\n\t{88, \"EDOOFUS\", \"programming error\"},\n\t{89, \"EBADMSG\", \"bad message\"},\n\t{90, \"EMULTIHOP\", \"multihop attempted\"},\n\t{91, \"ENOLINK\", \"link has been severed\"},\n\t{92, \"EPROTO\", \"protocol error\"},\n\t{93, \"ENOTCAPABLE\", \"capabilities insufficient\"},\n\t{94, \"ECAPMODE\", \"not permitted in capability mode\"},\n\t{95, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{96, \"EOWNERDEAD\", \"previous owner died\"},\n\t{97, \"EINTEGRITY\", \"integrity check failed\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"unknown signal\"},\n\t{33, \"SIGLIBRT\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAAFS_MAGIC                                  = 0x5a3c69f0\n\tADFS_SUPER_MAGIC                            = 0xadf5\n\tAFFS_SUPER_MAGIC                            = 0xadff\n\tAFS_FS_MAGIC                                = 0x6b414653\n\tAFS_SUPER_MAGIC                             = 0x5346414f\n\tAF_ALG                                      = 0x26\n\tAF_APPLETALK                                = 0x5\n\tAF_ASH                                      = 0x12\n\tAF_ATMPVC                                   = 0x8\n\tAF_ATMSVC                                   = 0x14\n\tAF_AX25                                     = 0x3\n\tAF_BLUETOOTH                                = 0x1f\n\tAF_BRIDGE                                   = 0x7\n\tAF_CAIF                                     = 0x25\n\tAF_CAN                                      = 0x1d\n\tAF_DECnet                                   = 0xc\n\tAF_ECONET                                   = 0x13\n\tAF_FILE                                     = 0x1\n\tAF_IB                                       = 0x1b\n\tAF_IEEE802154                               = 0x24\n\tAF_INET                                     = 0x2\n\tAF_INET6                                    = 0xa\n\tAF_IPX                                      = 0x4\n\tAF_IRDA                                     = 0x17\n\tAF_ISDN                                     = 0x22\n\tAF_IUCV                                     = 0x20\n\tAF_KCM                                      = 0x29\n\tAF_KEY                                      = 0xf\n\tAF_LLC                                      = 0x1a\n\tAF_LOCAL                                    = 0x1\n\tAF_MAX                                      = 0x2e\n\tAF_MCTP                                     = 0x2d\n\tAF_MPLS                                     = 0x1c\n\tAF_NETBEUI                                  = 0xd\n\tAF_NETLINK                                  = 0x10\n\tAF_NETROM                                   = 0x6\n\tAF_NFC                                      = 0x27\n\tAF_PACKET                                   = 0x11\n\tAF_PHONET                                   = 0x23\n\tAF_PPPOX                                    = 0x18\n\tAF_QIPCRTR                                  = 0x2a\n\tAF_RDS                                      = 0x15\n\tAF_ROSE                                     = 0xb\n\tAF_ROUTE                                    = 0x10\n\tAF_RXRPC                                    = 0x21\n\tAF_SECURITY                                 = 0xe\n\tAF_SMC                                      = 0x2b\n\tAF_SNA                                      = 0x16\n\tAF_TIPC                                     = 0x1e\n\tAF_UNIX                                     = 0x1\n\tAF_UNSPEC                                   = 0x0\n\tAF_VSOCK                                    = 0x28\n\tAF_WANPIPE                                  = 0x19\n\tAF_X25                                      = 0x9\n\tAF_XDP                                      = 0x2c\n\tALG_OP_DECRYPT                              = 0x0\n\tALG_OP_ENCRYPT                              = 0x1\n\tALG_SET_AEAD_ASSOCLEN                       = 0x4\n\tALG_SET_AEAD_AUTHSIZE                       = 0x5\n\tALG_SET_DRBG_ENTROPY                        = 0x6\n\tALG_SET_IV                                  = 0x2\n\tALG_SET_KEY                                 = 0x1\n\tALG_SET_KEY_BY_KEY_SERIAL                   = 0x7\n\tALG_SET_OP                                  = 0x3\n\tANON_INODE_FS_MAGIC                         = 0x9041934\n\tARPHRD_6LOWPAN                              = 0x339\n\tARPHRD_ADAPT                                = 0x108\n\tARPHRD_APPLETLK                             = 0x8\n\tARPHRD_ARCNET                               = 0x7\n\tARPHRD_ASH                                  = 0x30d\n\tARPHRD_ATM                                  = 0x13\n\tARPHRD_AX25                                 = 0x3\n\tARPHRD_BIF                                  = 0x307\n\tARPHRD_CAIF                                 = 0x336\n\tARPHRD_CAN                                  = 0x118\n\tARPHRD_CHAOS                                = 0x5\n\tARPHRD_CISCO                                = 0x201\n\tARPHRD_CSLIP                                = 0x101\n\tARPHRD_CSLIP6                               = 0x103\n\tARPHRD_DDCMP                                = 0x205\n\tARPHRD_DLCI                                 = 0xf\n\tARPHRD_ECONET                               = 0x30e\n\tARPHRD_EETHER                               = 0x2\n\tARPHRD_ETHER                                = 0x1\n\tARPHRD_EUI64                                = 0x1b\n\tARPHRD_FCAL                                 = 0x311\n\tARPHRD_FCFABRIC                             = 0x313\n\tARPHRD_FCPL                                 = 0x312\n\tARPHRD_FCPP                                 = 0x310\n\tARPHRD_FDDI                                 = 0x306\n\tARPHRD_FRAD                                 = 0x302\n\tARPHRD_HDLC                                 = 0x201\n\tARPHRD_HIPPI                                = 0x30c\n\tARPHRD_HWX25                                = 0x110\n\tARPHRD_IEEE1394                             = 0x18\n\tARPHRD_IEEE802                              = 0x6\n\tARPHRD_IEEE80211                            = 0x321\n\tARPHRD_IEEE80211_PRISM                      = 0x322\n\tARPHRD_IEEE80211_RADIOTAP                   = 0x323\n\tARPHRD_IEEE802154                           = 0x324\n\tARPHRD_IEEE802154_MONITOR                   = 0x325\n\tARPHRD_IEEE802_TR                           = 0x320\n\tARPHRD_INFINIBAND                           = 0x20\n\tARPHRD_IP6GRE                               = 0x337\n\tARPHRD_IPDDP                                = 0x309\n\tARPHRD_IPGRE                                = 0x30a\n\tARPHRD_IRDA                                 = 0x30f\n\tARPHRD_LAPB                                 = 0x204\n\tARPHRD_LOCALTLK                             = 0x305\n\tARPHRD_LOOPBACK                             = 0x304\n\tARPHRD_MCTP                                 = 0x122\n\tARPHRD_METRICOM                             = 0x17\n\tARPHRD_NETLINK                              = 0x338\n\tARPHRD_NETROM                               = 0x0\n\tARPHRD_NONE                                 = 0xfffe\n\tARPHRD_PHONET                               = 0x334\n\tARPHRD_PHONET_PIPE                          = 0x335\n\tARPHRD_PIMREG                               = 0x30b\n\tARPHRD_PPP                                  = 0x200\n\tARPHRD_PRONET                               = 0x4\n\tARPHRD_RAWHDLC                              = 0x206\n\tARPHRD_RAWIP                                = 0x207\n\tARPHRD_ROSE                                 = 0x10e\n\tARPHRD_RSRVD                                = 0x104\n\tARPHRD_SIT                                  = 0x308\n\tARPHRD_SKIP                                 = 0x303\n\tARPHRD_SLIP                                 = 0x100\n\tARPHRD_SLIP6                                = 0x102\n\tARPHRD_TUNNEL                               = 0x300\n\tARPHRD_TUNNEL6                              = 0x301\n\tARPHRD_VOID                                 = 0xffff\n\tARPHRD_VSOCKMON                             = 0x33a\n\tARPHRD_X25                                  = 0x10f\n\tAUDIT_ADD                                   = 0x3eb\n\tAUDIT_ADD_RULE                              = 0x3f3\n\tAUDIT_ALWAYS                                = 0x2\n\tAUDIT_ANOM_ABEND                            = 0x6a5\n\tAUDIT_ANOM_CREAT                            = 0x6a7\n\tAUDIT_ANOM_LINK                             = 0x6a6\n\tAUDIT_ANOM_PROMISCUOUS                      = 0x6a4\n\tAUDIT_ARCH                                  = 0xb\n\tAUDIT_ARCH_AARCH64                          = 0xc00000b7\n\tAUDIT_ARCH_ALPHA                            = 0xc0009026\n\tAUDIT_ARCH_ARCOMPACT                        = 0x4000005d\n\tAUDIT_ARCH_ARCOMPACTBE                      = 0x5d\n\tAUDIT_ARCH_ARCV2                            = 0x400000c3\n\tAUDIT_ARCH_ARCV2BE                          = 0xc3\n\tAUDIT_ARCH_ARM                              = 0x40000028\n\tAUDIT_ARCH_ARMEB                            = 0x28\n\tAUDIT_ARCH_C6X                              = 0x4000008c\n\tAUDIT_ARCH_C6XBE                            = 0x8c\n\tAUDIT_ARCH_CRIS                             = 0x4000004c\n\tAUDIT_ARCH_CSKY                             = 0x400000fc\n\tAUDIT_ARCH_FRV                              = 0x5441\n\tAUDIT_ARCH_H8300                            = 0x2e\n\tAUDIT_ARCH_HEXAGON                          = 0xa4\n\tAUDIT_ARCH_I386                             = 0x40000003\n\tAUDIT_ARCH_IA64                             = 0xc0000032\n\tAUDIT_ARCH_LOONGARCH32                      = 0x40000102\n\tAUDIT_ARCH_LOONGARCH64                      = 0xc0000102\n\tAUDIT_ARCH_M32R                             = 0x58\n\tAUDIT_ARCH_M68K                             = 0x4\n\tAUDIT_ARCH_MICROBLAZE                       = 0xbd\n\tAUDIT_ARCH_MIPS                             = 0x8\n\tAUDIT_ARCH_MIPS64                           = 0x80000008\n\tAUDIT_ARCH_MIPS64N32                        = 0xa0000008\n\tAUDIT_ARCH_MIPSEL                           = 0x40000008\n\tAUDIT_ARCH_MIPSEL64                         = 0xc0000008\n\tAUDIT_ARCH_MIPSEL64N32                      = 0xe0000008\n\tAUDIT_ARCH_NDS32                            = 0x400000a7\n\tAUDIT_ARCH_NDS32BE                          = 0xa7\n\tAUDIT_ARCH_NIOS2                            = 0x40000071\n\tAUDIT_ARCH_OPENRISC                         = 0x5c\n\tAUDIT_ARCH_PARISC                           = 0xf\n\tAUDIT_ARCH_PARISC64                         = 0x8000000f\n\tAUDIT_ARCH_PPC                              = 0x14\n\tAUDIT_ARCH_PPC64                            = 0x80000015\n\tAUDIT_ARCH_PPC64LE                          = 0xc0000015\n\tAUDIT_ARCH_RISCV32                          = 0x400000f3\n\tAUDIT_ARCH_RISCV64                          = 0xc00000f3\n\tAUDIT_ARCH_S390                             = 0x16\n\tAUDIT_ARCH_S390X                            = 0x80000016\n\tAUDIT_ARCH_SH                               = 0x2a\n\tAUDIT_ARCH_SH64                             = 0x8000002a\n\tAUDIT_ARCH_SHEL                             = 0x4000002a\n\tAUDIT_ARCH_SHEL64                           = 0xc000002a\n\tAUDIT_ARCH_SPARC                            = 0x2\n\tAUDIT_ARCH_SPARC64                          = 0x8000002b\n\tAUDIT_ARCH_TILEGX                           = 0xc00000bf\n\tAUDIT_ARCH_TILEGX32                         = 0x400000bf\n\tAUDIT_ARCH_TILEPRO                          = 0x400000bc\n\tAUDIT_ARCH_UNICORE                          = 0x4000006e\n\tAUDIT_ARCH_X86_64                           = 0xc000003e\n\tAUDIT_ARCH_XTENSA                           = 0x5e\n\tAUDIT_ARG0                                  = 0xc8\n\tAUDIT_ARG1                                  = 0xc9\n\tAUDIT_ARG2                                  = 0xca\n\tAUDIT_ARG3                                  = 0xcb\n\tAUDIT_AVC                                   = 0x578\n\tAUDIT_AVC_PATH                              = 0x57a\n\tAUDIT_BITMASK_SIZE                          = 0x40\n\tAUDIT_BIT_MASK                              = 0x8000000\n\tAUDIT_BIT_TEST                              = 0x48000000\n\tAUDIT_BPF                                   = 0x536\n\tAUDIT_BPRM_FCAPS                            = 0x529\n\tAUDIT_CAPSET                                = 0x52a\n\tAUDIT_CLASS_CHATTR                          = 0x2\n\tAUDIT_CLASS_CHATTR_32                       = 0x3\n\tAUDIT_CLASS_DIR_WRITE                       = 0x0\n\tAUDIT_CLASS_DIR_WRITE_32                    = 0x1\n\tAUDIT_CLASS_READ                            = 0x4\n\tAUDIT_CLASS_READ_32                         = 0x5\n\tAUDIT_CLASS_SIGNAL                          = 0x8\n\tAUDIT_CLASS_SIGNAL_32                       = 0x9\n\tAUDIT_CLASS_WRITE                           = 0x6\n\tAUDIT_CLASS_WRITE_32                        = 0x7\n\tAUDIT_COMPARE_AUID_TO_EUID                  = 0x10\n\tAUDIT_COMPARE_AUID_TO_FSUID                 = 0xe\n\tAUDIT_COMPARE_AUID_TO_OBJ_UID               = 0x5\n\tAUDIT_COMPARE_AUID_TO_SUID                  = 0xf\n\tAUDIT_COMPARE_EGID_TO_FSGID                 = 0x17\n\tAUDIT_COMPARE_EGID_TO_OBJ_GID               = 0x4\n\tAUDIT_COMPARE_EGID_TO_SGID                  = 0x18\n\tAUDIT_COMPARE_EUID_TO_FSUID                 = 0x12\n\tAUDIT_COMPARE_EUID_TO_OBJ_UID               = 0x3\n\tAUDIT_COMPARE_EUID_TO_SUID                  = 0x11\n\tAUDIT_COMPARE_FSGID_TO_OBJ_GID              = 0x9\n\tAUDIT_COMPARE_FSUID_TO_OBJ_UID              = 0x8\n\tAUDIT_COMPARE_GID_TO_EGID                   = 0x14\n\tAUDIT_COMPARE_GID_TO_FSGID                  = 0x15\n\tAUDIT_COMPARE_GID_TO_OBJ_GID                = 0x2\n\tAUDIT_COMPARE_GID_TO_SGID                   = 0x16\n\tAUDIT_COMPARE_SGID_TO_FSGID                 = 0x19\n\tAUDIT_COMPARE_SGID_TO_OBJ_GID               = 0x7\n\tAUDIT_COMPARE_SUID_TO_FSUID                 = 0x13\n\tAUDIT_COMPARE_SUID_TO_OBJ_UID               = 0x6\n\tAUDIT_COMPARE_UID_TO_AUID                   = 0xa\n\tAUDIT_COMPARE_UID_TO_EUID                   = 0xb\n\tAUDIT_COMPARE_UID_TO_FSUID                  = 0xc\n\tAUDIT_COMPARE_UID_TO_OBJ_UID                = 0x1\n\tAUDIT_COMPARE_UID_TO_SUID                   = 0xd\n\tAUDIT_CONFIG_CHANGE                         = 0x519\n\tAUDIT_CWD                                   = 0x51b\n\tAUDIT_DAEMON_ABORT                          = 0x4b2\n\tAUDIT_DAEMON_CONFIG                         = 0x4b3\n\tAUDIT_DAEMON_END                            = 0x4b1\n\tAUDIT_DAEMON_START                          = 0x4b0\n\tAUDIT_DEL                                   = 0x3ec\n\tAUDIT_DEL_RULE                              = 0x3f4\n\tAUDIT_DEVMAJOR                              = 0x64\n\tAUDIT_DEVMINOR                              = 0x65\n\tAUDIT_DIR                                   = 0x6b\n\tAUDIT_DM_CTRL                               = 0x53a\n\tAUDIT_DM_EVENT                              = 0x53b\n\tAUDIT_EGID                                  = 0x6\n\tAUDIT_EOE                                   = 0x528\n\tAUDIT_EQUAL                                 = 0x40000000\n\tAUDIT_EUID                                  = 0x2\n\tAUDIT_EVENT_LISTENER                        = 0x537\n\tAUDIT_EXE                                   = 0x70\n\tAUDIT_EXECVE                                = 0x51d\n\tAUDIT_EXIT                                  = 0x67\n\tAUDIT_FAIL_PANIC                            = 0x2\n\tAUDIT_FAIL_PRINTK                           = 0x1\n\tAUDIT_FAIL_SILENT                           = 0x0\n\tAUDIT_FANOTIFY                              = 0x533\n\tAUDIT_FD_PAIR                               = 0x525\n\tAUDIT_FEATURE_BITMAP_ALL                    = 0x7f\n\tAUDIT_FEATURE_BITMAP_BACKLOG_LIMIT          = 0x1\n\tAUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME      = 0x2\n\tAUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND         = 0x8\n\tAUDIT_FEATURE_BITMAP_EXECUTABLE_PATH        = 0x4\n\tAUDIT_FEATURE_BITMAP_FILTER_FS              = 0x40\n\tAUDIT_FEATURE_BITMAP_LOST_RESET             = 0x20\n\tAUDIT_FEATURE_BITMAP_SESSIONID_FILTER       = 0x10\n\tAUDIT_FEATURE_CHANGE                        = 0x530\n\tAUDIT_FEATURE_LOGINUID_IMMUTABLE            = 0x1\n\tAUDIT_FEATURE_ONLY_UNSET_LOGINUID           = 0x0\n\tAUDIT_FEATURE_VERSION                       = 0x1\n\tAUDIT_FIELD_COMPARE                         = 0x6f\n\tAUDIT_FILETYPE                              = 0x6c\n\tAUDIT_FILTERKEY                             = 0xd2\n\tAUDIT_FILTER_ENTRY                          = 0x2\n\tAUDIT_FILTER_EXCLUDE                        = 0x5\n\tAUDIT_FILTER_EXIT                           = 0x4\n\tAUDIT_FILTER_FS                             = 0x6\n\tAUDIT_FILTER_PREPEND                        = 0x10\n\tAUDIT_FILTER_TASK                           = 0x1\n\tAUDIT_FILTER_TYPE                           = 0x5\n\tAUDIT_FILTER_URING_EXIT                     = 0x7\n\tAUDIT_FILTER_USER                           = 0x0\n\tAUDIT_FILTER_WATCH                          = 0x3\n\tAUDIT_FIRST_KERN_ANOM_MSG                   = 0x6a4\n\tAUDIT_FIRST_USER_MSG                        = 0x44c\n\tAUDIT_FIRST_USER_MSG2                       = 0x834\n\tAUDIT_FSGID                                 = 0x8\n\tAUDIT_FSTYPE                                = 0x1a\n\tAUDIT_FSUID                                 = 0x4\n\tAUDIT_GET                                   = 0x3e8\n\tAUDIT_GET_FEATURE                           = 0x3fb\n\tAUDIT_GID                                   = 0x5\n\tAUDIT_GREATER_THAN                          = 0x20000000\n\tAUDIT_GREATER_THAN_OR_EQUAL                 = 0x60000000\n\tAUDIT_INODE                                 = 0x66\n\tAUDIT_INTEGRITY_DATA                        = 0x708\n\tAUDIT_INTEGRITY_EVM_XATTR                   = 0x70e\n\tAUDIT_INTEGRITY_HASH                        = 0x70b\n\tAUDIT_INTEGRITY_METADATA                    = 0x709\n\tAUDIT_INTEGRITY_PCR                         = 0x70c\n\tAUDIT_INTEGRITY_POLICY_RULE                 = 0x70f\n\tAUDIT_INTEGRITY_RULE                        = 0x70d\n\tAUDIT_INTEGRITY_STATUS                      = 0x70a\n\tAUDIT_IPC                                   = 0x517\n\tAUDIT_IPC_SET_PERM                          = 0x51f\n\tAUDIT_KERNEL                                = 0x7d0\n\tAUDIT_KERNEL_OTHER                          = 0x524\n\tAUDIT_KERN_MODULE                           = 0x532\n\tAUDIT_LAST_FEATURE                          = 0x1\n\tAUDIT_LAST_KERN_ANOM_MSG                    = 0x707\n\tAUDIT_LAST_USER_MSG                         = 0x4af\n\tAUDIT_LAST_USER_MSG2                        = 0xbb7\n\tAUDIT_LESS_THAN                             = 0x10000000\n\tAUDIT_LESS_THAN_OR_EQUAL                    = 0x50000000\n\tAUDIT_LIST                                  = 0x3ea\n\tAUDIT_LIST_RULES                            = 0x3f5\n\tAUDIT_LOGIN                                 = 0x3ee\n\tAUDIT_LOGINUID                              = 0x9\n\tAUDIT_LOGINUID_SET                          = 0x18\n\tAUDIT_MAC_CALIPSO_ADD                       = 0x58a\n\tAUDIT_MAC_CALIPSO_DEL                       = 0x58b\n\tAUDIT_MAC_CIPSOV4_ADD                       = 0x57f\n\tAUDIT_MAC_CIPSOV4_DEL                       = 0x580\n\tAUDIT_MAC_CONFIG_CHANGE                     = 0x57d\n\tAUDIT_MAC_IPSEC_ADDSA                       = 0x583\n\tAUDIT_MAC_IPSEC_ADDSPD                      = 0x585\n\tAUDIT_MAC_IPSEC_DELSA                       = 0x584\n\tAUDIT_MAC_IPSEC_DELSPD                      = 0x586\n\tAUDIT_MAC_IPSEC_EVENT                       = 0x587\n\tAUDIT_MAC_MAP_ADD                           = 0x581\n\tAUDIT_MAC_MAP_DEL                           = 0x582\n\tAUDIT_MAC_POLICY_LOAD                       = 0x57b\n\tAUDIT_MAC_STATUS                            = 0x57c\n\tAUDIT_MAC_UNLBL_ALLOW                       = 0x57e\n\tAUDIT_MAC_UNLBL_STCADD                      = 0x588\n\tAUDIT_MAC_UNLBL_STCDEL                      = 0x589\n\tAUDIT_MAKE_EQUIV                            = 0x3f7\n\tAUDIT_MAX_FIELDS                            = 0x40\n\tAUDIT_MAX_FIELD_COMPARE                     = 0x19\n\tAUDIT_MAX_KEY_LEN                           = 0x100\n\tAUDIT_MESSAGE_TEXT_MAX                      = 0x2170\n\tAUDIT_MMAP                                  = 0x52b\n\tAUDIT_MQ_GETSETATTR                         = 0x523\n\tAUDIT_MQ_NOTIFY                             = 0x522\n\tAUDIT_MQ_OPEN                               = 0x520\n\tAUDIT_MQ_SENDRECV                           = 0x521\n\tAUDIT_MSGTYPE                               = 0xc\n\tAUDIT_NEGATE                                = 0x80000000\n\tAUDIT_NETFILTER_CFG                         = 0x52d\n\tAUDIT_NETFILTER_PKT                         = 0x52c\n\tAUDIT_NEVER                                 = 0x0\n\tAUDIT_NLGRP_MAX                             = 0x1\n\tAUDIT_NOT_EQUAL                             = 0x30000000\n\tAUDIT_NR_FILTERS                            = 0x8\n\tAUDIT_OBJ_GID                               = 0x6e\n\tAUDIT_OBJ_LEV_HIGH                          = 0x17\n\tAUDIT_OBJ_LEV_LOW                           = 0x16\n\tAUDIT_OBJ_PID                               = 0x526\n\tAUDIT_OBJ_ROLE                              = 0x14\n\tAUDIT_OBJ_TYPE                              = 0x15\n\tAUDIT_OBJ_UID                               = 0x6d\n\tAUDIT_OBJ_USER                              = 0x13\n\tAUDIT_OPENAT2                               = 0x539\n\tAUDIT_OPERATORS                             = 0x78000000\n\tAUDIT_PATH                                  = 0x516\n\tAUDIT_PERM                                  = 0x6a\n\tAUDIT_PERM_ATTR                             = 0x8\n\tAUDIT_PERM_EXEC                             = 0x1\n\tAUDIT_PERM_READ                             = 0x4\n\tAUDIT_PERM_WRITE                            = 0x2\n\tAUDIT_PERS                                  = 0xa\n\tAUDIT_PID                                   = 0x0\n\tAUDIT_POSSIBLE                              = 0x1\n\tAUDIT_PPID                                  = 0x12\n\tAUDIT_PROCTITLE                             = 0x52f\n\tAUDIT_REPLACE                               = 0x531\n\tAUDIT_SADDR_FAM                             = 0x71\n\tAUDIT_SECCOMP                               = 0x52e\n\tAUDIT_SELINUX_ERR                           = 0x579\n\tAUDIT_SESSIONID                             = 0x19\n\tAUDIT_SET                                   = 0x3e9\n\tAUDIT_SET_FEATURE                           = 0x3fa\n\tAUDIT_SGID                                  = 0x7\n\tAUDIT_SID_UNSET                             = 0xffffffff\n\tAUDIT_SIGNAL_INFO                           = 0x3f2\n\tAUDIT_SOCKADDR                              = 0x51a\n\tAUDIT_SOCKETCALL                            = 0x518\n\tAUDIT_STATUS_BACKLOG_LIMIT                  = 0x10\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME              = 0x20\n\tAUDIT_STATUS_BACKLOG_WAIT_TIME_ACTUAL       = 0x80\n\tAUDIT_STATUS_ENABLED                        = 0x1\n\tAUDIT_STATUS_FAILURE                        = 0x2\n\tAUDIT_STATUS_LOST                           = 0x40\n\tAUDIT_STATUS_PID                            = 0x4\n\tAUDIT_STATUS_RATE_LIMIT                     = 0x8\n\tAUDIT_SUBJ_CLR                              = 0x11\n\tAUDIT_SUBJ_ROLE                             = 0xe\n\tAUDIT_SUBJ_SEN                              = 0x10\n\tAUDIT_SUBJ_TYPE                             = 0xf\n\tAUDIT_SUBJ_USER                             = 0xd\n\tAUDIT_SUCCESS                               = 0x68\n\tAUDIT_SUID                                  = 0x3\n\tAUDIT_SYSCALL                               = 0x514\n\tAUDIT_SYSCALL_CLASSES                       = 0x10\n\tAUDIT_TIME_ADJNTPVAL                        = 0x535\n\tAUDIT_TIME_INJOFFSET                        = 0x534\n\tAUDIT_TRIM                                  = 0x3f6\n\tAUDIT_TTY                                   = 0x527\n\tAUDIT_TTY_GET                               = 0x3f8\n\tAUDIT_TTY_SET                               = 0x3f9\n\tAUDIT_UID                                   = 0x1\n\tAUDIT_UID_UNSET                             = 0xffffffff\n\tAUDIT_UNUSED_BITS                           = 0x7fffc00\n\tAUDIT_URINGOP                               = 0x538\n\tAUDIT_USER                                  = 0x3ed\n\tAUDIT_USER_AVC                              = 0x453\n\tAUDIT_USER_TTY                              = 0x464\n\tAUDIT_VERSION_BACKLOG_LIMIT                 = 0x1\n\tAUDIT_VERSION_BACKLOG_WAIT_TIME             = 0x2\n\tAUDIT_VERSION_LATEST                        = 0x7f\n\tAUDIT_WATCH                                 = 0x69\n\tAUDIT_WATCH_INS                             = 0x3ef\n\tAUDIT_WATCH_LIST                            = 0x3f1\n\tAUDIT_WATCH_REM                             = 0x3f0\n\tAUTOFS_SUPER_MAGIC                          = 0x187\n\tB0                                          = 0x0\n\tB110                                        = 0x3\n\tB1200                                       = 0x9\n\tB134                                        = 0x4\n\tB150                                        = 0x5\n\tB1800                                       = 0xa\n\tB19200                                      = 0xe\n\tB200                                        = 0x6\n\tB2400                                       = 0xb\n\tB300                                        = 0x7\n\tB38400                                      = 0xf\n\tB4800                                       = 0xc\n\tB50                                         = 0x1\n\tB600                                        = 0x8\n\tB75                                         = 0x2\n\tB9600                                       = 0xd\n\tBDEVFS_MAGIC                                = 0x62646576\n\tBINDERFS_SUPER_MAGIC                        = 0x6c6f6f70\n\tBINFMTFS_MAGIC                              = 0x42494e4d\n\tBPF_A                                       = 0x10\n\tBPF_ABS                                     = 0x20\n\tBPF_ADD                                     = 0x0\n\tBPF_ALU                                     = 0x4\n\tBPF_ALU64                                   = 0x7\n\tBPF_AND                                     = 0x50\n\tBPF_ARSH                                    = 0xc0\n\tBPF_ATOMIC                                  = 0xc0\n\tBPF_B                                       = 0x10\n\tBPF_BUILD_ID_SIZE                           = 0x14\n\tBPF_CALL                                    = 0x80\n\tBPF_CMPXCHG                                 = 0xf1\n\tBPF_DIV                                     = 0x30\n\tBPF_DW                                      = 0x18\n\tBPF_END                                     = 0xd0\n\tBPF_EXIT                                    = 0x90\n\tBPF_FETCH                                   = 0x1\n\tBPF_FROM_BE                                 = 0x8\n\tBPF_FROM_LE                                 = 0x0\n\tBPF_FS_MAGIC                                = 0xcafe4a11\n\tBPF_F_AFTER                                 = 0x10\n\tBPF_F_ALLOW_MULTI                           = 0x2\n\tBPF_F_ALLOW_OVERRIDE                        = 0x1\n\tBPF_F_ANY_ALIGNMENT                         = 0x2\n\tBPF_F_BEFORE                                = 0x8\n\tBPF_F_ID                                    = 0x20\n\tBPF_F_NETFILTER_IP_DEFRAG                   = 0x1\n\tBPF_F_QUERY_EFFECTIVE                       = 0x1\n\tBPF_F_REPLACE                               = 0x4\n\tBPF_F_SLEEPABLE                             = 0x10\n\tBPF_F_STRICT_ALIGNMENT                      = 0x1\n\tBPF_F_TEST_RND_HI32                         = 0x4\n\tBPF_F_TEST_RUN_ON_CPU                       = 0x1\n\tBPF_F_TEST_STATE_FREQ                       = 0x8\n\tBPF_F_TEST_XDP_LIVE_FRAMES                  = 0x2\n\tBPF_F_XDP_DEV_BOUND_ONLY                    = 0x40\n\tBPF_F_XDP_HAS_FRAGS                         = 0x20\n\tBPF_H                                       = 0x8\n\tBPF_IMM                                     = 0x0\n\tBPF_IND                                     = 0x40\n\tBPF_JA                                      = 0x0\n\tBPF_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_MEMSX                                   = 0x80\n\tBPF_MEMWORDS                                = 0x10\n\tBPF_MINOR_VERSION                           = 0x1\n\tBPF_MISC                                    = 0x7\n\tBPF_MOD                                     = 0x90\n\tBPF_MOV                                     = 0xb0\n\tBPF_MSH                                     = 0xa0\n\tBPF_MUL                                     = 0x20\n\tBPF_NEG                                     = 0x80\n\tBPF_NET_OFF                                 = -0x100000\n\tBPF_OBJ_NAME_LEN                            = 0x10\n\tBPF_OR                                      = 0x40\n\tBPF_PSEUDO_BTF_ID                           = 0x3\n\tBPF_PSEUDO_CALL                             = 0x1\n\tBPF_PSEUDO_FUNC                             = 0x4\n\tBPF_PSEUDO_KFUNC_CALL                       = 0x2\n\tBPF_PSEUDO_MAP_FD                           = 0x1\n\tBPF_PSEUDO_MAP_IDX                          = 0x5\n\tBPF_PSEUDO_MAP_IDX_VALUE                    = 0x6\n\tBPF_PSEUDO_MAP_VALUE                        = 0x2\n\tBPF_RET                                     = 0x6\n\tBPF_RSH                                     = 0x70\n\tBPF_ST                                      = 0x2\n\tBPF_STX                                     = 0x3\n\tBPF_SUB                                     = 0x10\n\tBPF_TAG_SIZE                                = 0x8\n\tBPF_TAX                                     = 0x0\n\tBPF_TO_BE                                   = 0x8\n\tBPF_TO_LE                                   = 0x0\n\tBPF_TXA                                     = 0x80\n\tBPF_W                                       = 0x0\n\tBPF_X                                       = 0x8\n\tBPF_XADD                                    = 0xc0\n\tBPF_XCHG                                    = 0xe1\n\tBPF_XOR                                     = 0xa0\n\tBRKINT                                      = 0x2\n\tBS0                                         = 0x0\n\tBTRFS_SUPER_MAGIC                           = 0x9123683e\n\tBTRFS_TEST_MAGIC                            = 0x73727279\n\tBUS_BLUETOOTH                               = 0x5\n\tBUS_HIL                                     = 0x4\n\tBUS_USB                                     = 0x3\n\tBUS_VIRTUAL                                 = 0x6\n\tCAN_BCM                                     = 0x2\n\tCAN_BUS_OFF_THRESHOLD                       = 0x100\n\tCAN_CTRLMODE_3_SAMPLES                      = 0x4\n\tCAN_CTRLMODE_BERR_REPORTING                 = 0x10\n\tCAN_CTRLMODE_CC_LEN8_DLC                    = 0x100\n\tCAN_CTRLMODE_FD                             = 0x20\n\tCAN_CTRLMODE_FD_NON_ISO                     = 0x80\n\tCAN_CTRLMODE_LISTENONLY                     = 0x2\n\tCAN_CTRLMODE_LOOPBACK                       = 0x1\n\tCAN_CTRLMODE_ONE_SHOT                       = 0x8\n\tCAN_CTRLMODE_PRESUME_ACK                    = 0x40\n\tCAN_CTRLMODE_TDC_AUTO                       = 0x200\n\tCAN_CTRLMODE_TDC_MANUAL                     = 0x400\n\tCAN_EFF_FLAG                                = 0x80000000\n\tCAN_EFF_ID_BITS                             = 0x1d\n\tCAN_EFF_MASK                                = 0x1fffffff\n\tCAN_ERROR_PASSIVE_THRESHOLD                 = 0x80\n\tCAN_ERROR_WARNING_THRESHOLD                 = 0x60\n\tCAN_ERR_ACK                                 = 0x20\n\tCAN_ERR_BUSERROR                            = 0x80\n\tCAN_ERR_BUSOFF                              = 0x40\n\tCAN_ERR_CNT                                 = 0x200\n\tCAN_ERR_CRTL                                = 0x4\n\tCAN_ERR_CRTL_ACTIVE                         = 0x40\n\tCAN_ERR_CRTL_RX_OVERFLOW                    = 0x1\n\tCAN_ERR_CRTL_RX_PASSIVE                     = 0x10\n\tCAN_ERR_CRTL_RX_WARNING                     = 0x4\n\tCAN_ERR_CRTL_TX_OVERFLOW                    = 0x2\n\tCAN_ERR_CRTL_TX_PASSIVE                     = 0x20\n\tCAN_ERR_CRTL_TX_WARNING                     = 0x8\n\tCAN_ERR_CRTL_UNSPEC                         = 0x0\n\tCAN_ERR_DLC                                 = 0x8\n\tCAN_ERR_FLAG                                = 0x20000000\n\tCAN_ERR_LOSTARB                             = 0x2\n\tCAN_ERR_LOSTARB_UNSPEC                      = 0x0\n\tCAN_ERR_MASK                                = 0x1fffffff\n\tCAN_ERR_PROT                                = 0x8\n\tCAN_ERR_PROT_ACTIVE                         = 0x40\n\tCAN_ERR_PROT_BIT                            = 0x1\n\tCAN_ERR_PROT_BIT0                           = 0x8\n\tCAN_ERR_PROT_BIT1                           = 0x10\n\tCAN_ERR_PROT_FORM                           = 0x2\n\tCAN_ERR_PROT_LOC_ACK                        = 0x19\n\tCAN_ERR_PROT_LOC_ACK_DEL                    = 0x1b\n\tCAN_ERR_PROT_LOC_CRC_DEL                    = 0x18\n\tCAN_ERR_PROT_LOC_CRC_SEQ                    = 0x8\n\tCAN_ERR_PROT_LOC_DATA                       = 0xa\n\tCAN_ERR_PROT_LOC_DLC                        = 0xb\n\tCAN_ERR_PROT_LOC_EOF                        = 0x1a\n\tCAN_ERR_PROT_LOC_ID04_00                    = 0xe\n\tCAN_ERR_PROT_LOC_ID12_05                    = 0xf\n\tCAN_ERR_PROT_LOC_ID17_13                    = 0x7\n\tCAN_ERR_PROT_LOC_ID20_18                    = 0x6\n\tCAN_ERR_PROT_LOC_ID28_21                    = 0x2\n\tCAN_ERR_PROT_LOC_IDE                        = 0x5\n\tCAN_ERR_PROT_LOC_INTERM                     = 0x12\n\tCAN_ERR_PROT_LOC_RES0                       = 0x9\n\tCAN_ERR_PROT_LOC_RES1                       = 0xd\n\tCAN_ERR_PROT_LOC_RTR                        = 0xc\n\tCAN_ERR_PROT_LOC_SOF                        = 0x3\n\tCAN_ERR_PROT_LOC_SRTR                       = 0x4\n\tCAN_ERR_PROT_LOC_UNSPEC                     = 0x0\n\tCAN_ERR_PROT_OVERLOAD                       = 0x20\n\tCAN_ERR_PROT_STUFF                          = 0x4\n\tCAN_ERR_PROT_TX                             = 0x80\n\tCAN_ERR_PROT_UNSPEC                         = 0x0\n\tCAN_ERR_RESTARTED                           = 0x100\n\tCAN_ERR_TRX                                 = 0x10\n\tCAN_ERR_TRX_CANH_NO_WIRE                    = 0x4\n\tCAN_ERR_TRX_CANH_SHORT_TO_BAT               = 0x5\n\tCAN_ERR_TRX_CANH_SHORT_TO_GND               = 0x7\n\tCAN_ERR_TRX_CANH_SHORT_TO_VCC               = 0x6\n\tCAN_ERR_TRX_CANL_NO_WIRE                    = 0x40\n\tCAN_ERR_TRX_CANL_SHORT_TO_BAT               = 0x50\n\tCAN_ERR_TRX_CANL_SHORT_TO_CANH              = 0x80\n\tCAN_ERR_TRX_CANL_SHORT_TO_GND               = 0x70\n\tCAN_ERR_TRX_CANL_SHORT_TO_VCC               = 0x60\n\tCAN_ERR_TRX_UNSPEC                          = 0x0\n\tCAN_ERR_TX_TIMEOUT                          = 0x1\n\tCAN_INV_FILTER                              = 0x20000000\n\tCAN_ISOTP                                   = 0x6\n\tCAN_J1939                                   = 0x7\n\tCAN_MAX_DLC                                 = 0x8\n\tCAN_MAX_DLEN                                = 0x8\n\tCAN_MAX_RAW_DLC                             = 0xf\n\tCAN_MCNET                                   = 0x5\n\tCAN_MTU                                     = 0x10\n\tCAN_NPROTO                                  = 0x8\n\tCAN_RAW                                     = 0x1\n\tCAN_RAW_FILTER_MAX                          = 0x200\n\tCAN_RTR_FLAG                                = 0x40000000\n\tCAN_SFF_ID_BITS                             = 0xb\n\tCAN_SFF_MASK                                = 0x7ff\n\tCAN_TERMINATION_DISABLED                    = 0x0\n\tCAN_TP16                                    = 0x3\n\tCAN_TP20                                    = 0x4\n\tCAP_AUDIT_CONTROL                           = 0x1e\n\tCAP_AUDIT_READ                              = 0x25\n\tCAP_AUDIT_WRITE                             = 0x1d\n\tCAP_BLOCK_SUSPEND                           = 0x24\n\tCAP_BPF                                     = 0x27\n\tCAP_CHECKPOINT_RESTORE                      = 0x28\n\tCAP_CHOWN                                   = 0x0\n\tCAP_DAC_OVERRIDE                            = 0x1\n\tCAP_DAC_READ_SEARCH                         = 0x2\n\tCAP_FOWNER                                  = 0x3\n\tCAP_FSETID                                  = 0x4\n\tCAP_IPC_LOCK                                = 0xe\n\tCAP_IPC_OWNER                               = 0xf\n\tCAP_KILL                                    = 0x5\n\tCAP_LAST_CAP                                = 0x28\n\tCAP_LEASE                                   = 0x1c\n\tCAP_LINUX_IMMUTABLE                         = 0x9\n\tCAP_MAC_ADMIN                               = 0x21\n\tCAP_MAC_OVERRIDE                            = 0x20\n\tCAP_MKNOD                                   = 0x1b\n\tCAP_NET_ADMIN                               = 0xc\n\tCAP_NET_BIND_SERVICE                        = 0xa\n\tCAP_NET_BROADCAST                           = 0xb\n\tCAP_NET_RAW                                 = 0xd\n\tCAP_PERFMON                                 = 0x26\n\tCAP_SETFCAP                                 = 0x1f\n\tCAP_SETGID                                  = 0x6\n\tCAP_SETPCAP                                 = 0x8\n\tCAP_SETUID                                  = 0x7\n\tCAP_SYSLOG                                  = 0x22\n\tCAP_SYS_ADMIN                               = 0x15\n\tCAP_SYS_BOOT                                = 0x16\n\tCAP_SYS_CHROOT                              = 0x12\n\tCAP_SYS_MODULE                              = 0x10\n\tCAP_SYS_NICE                                = 0x17\n\tCAP_SYS_PACCT                               = 0x14\n\tCAP_SYS_PTRACE                              = 0x13\n\tCAP_SYS_RAWIO                               = 0x11\n\tCAP_SYS_RESOURCE                            = 0x18\n\tCAP_SYS_TIME                                = 0x19\n\tCAP_SYS_TTY_CONFIG                          = 0x1a\n\tCAP_WAKE_ALARM                              = 0x23\n\tCEPH_SUPER_MAGIC                            = 0xc36400\n\tCFLUSH                                      = 0xf\n\tCGROUP2_SUPER_MAGIC                         = 0x63677270\n\tCGROUP_SUPER_MAGIC                          = 0x27e0eb\n\tCIFS_SUPER_MAGIC                            = 0xff534d42\n\tCLOCK_BOOTTIME                              = 0x7\n\tCLOCK_BOOTTIME_ALARM                        = 0x9\n\tCLOCK_DEFAULT                               = 0x0\n\tCLOCK_EXT                                   = 0x1\n\tCLOCK_INT                                   = 0x2\n\tCLOCK_MONOTONIC                             = 0x1\n\tCLOCK_MONOTONIC_COARSE                      = 0x6\n\tCLOCK_MONOTONIC_RAW                         = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID                    = 0x2\n\tCLOCK_REALTIME                              = 0x0\n\tCLOCK_REALTIME_ALARM                        = 0x8\n\tCLOCK_REALTIME_COARSE                       = 0x5\n\tCLOCK_TAI                                   = 0xb\n\tCLOCK_THREAD_CPUTIME_ID                     = 0x3\n\tCLOCK_TXFROMRX                              = 0x4\n\tCLOCK_TXINT                                 = 0x3\n\tCLONE_ARGS_SIZE_VER0                        = 0x40\n\tCLONE_ARGS_SIZE_VER1                        = 0x50\n\tCLONE_ARGS_SIZE_VER2                        = 0x58\n\tCLONE_CHILD_CLEARTID                        = 0x200000\n\tCLONE_CHILD_SETTID                          = 0x1000000\n\tCLONE_CLEAR_SIGHAND                         = 0x100000000\n\tCLONE_DETACHED                              = 0x400000\n\tCLONE_FILES                                 = 0x400\n\tCLONE_FS                                    = 0x200\n\tCLONE_INTO_CGROUP                           = 0x200000000\n\tCLONE_IO                                    = 0x80000000\n\tCLONE_NEWCGROUP                             = 0x2000000\n\tCLONE_NEWIPC                                = 0x8000000\n\tCLONE_NEWNET                                = 0x40000000\n\tCLONE_NEWNS                                 = 0x20000\n\tCLONE_NEWPID                                = 0x20000000\n\tCLONE_NEWTIME                               = 0x80\n\tCLONE_NEWUSER                               = 0x10000000\n\tCLONE_NEWUTS                                = 0x4000000\n\tCLONE_PARENT                                = 0x8000\n\tCLONE_PARENT_SETTID                         = 0x100000\n\tCLONE_PIDFD                                 = 0x1000\n\tCLONE_PTRACE                                = 0x2000\n\tCLONE_SETTLS                                = 0x80000\n\tCLONE_SIGHAND                               = 0x800\n\tCLONE_SYSVSEM                               = 0x40000\n\tCLONE_THREAD                                = 0x10000\n\tCLONE_UNTRACED                              = 0x800000\n\tCLONE_VFORK                                 = 0x4000\n\tCLONE_VM                                    = 0x100\n\tCMSPAR                                      = 0x40000000\n\tCODA_SUPER_MAGIC                            = 0x73757245\n\tCR0                                         = 0x0\n\tCRAMFS_MAGIC                                = 0x28cd3d45\n\tCRTSCTS                                     = 0x80000000\n\tCRYPTO_MAX_NAME                             = 0x40\n\tCRYPTO_MSG_MAX                              = 0x15\n\tCRYPTO_NR_MSGTYPES                          = 0x6\n\tCRYPTO_REPORT_MAXSIZE                       = 0x160\n\tCS5                                         = 0x0\n\tCSIGNAL                                     = 0xff\n\tCSTART                                      = 0x11\n\tCSTATUS                                     = 0x0\n\tCSTOP                                       = 0x13\n\tCSUSP                                       = 0x1a\n\tDAXFS_MAGIC                                 = 0x64646178\n\tDEBUGFS_MAGIC                               = 0x64626720\n\tDEVLINK_CMD_ESWITCH_MODE_GET                = 0x1d\n\tDEVLINK_CMD_ESWITCH_MODE_SET                = 0x1e\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS         = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS            = 0x1\n\tDEVLINK_GENL_MCGRP_CONFIG_NAME              = \"config\"\n\tDEVLINK_GENL_NAME                           = \"devlink\"\n\tDEVLINK_GENL_VERSION                        = 0x1\n\tDEVLINK_PORT_FN_CAP_IPSEC_CRYPTO            = 0x4\n\tDEVLINK_PORT_FN_CAP_IPSEC_PACKET            = 0x8\n\tDEVLINK_PORT_FN_CAP_MIGRATABLE              = 0x2\n\tDEVLINK_PORT_FN_CAP_ROCE                    = 0x1\n\tDEVLINK_SB_THRESHOLD_TO_ALPHA_MAX           = 0x14\n\tDEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS  = 0x3\n\tDEVMEM_MAGIC                                = 0x454d444d\n\tDEVPTS_SUPER_MAGIC                          = 0x1cd1\n\tDMA_BUF_MAGIC                               = 0x444d4142\n\tDM_ACTIVE_PRESENT_FLAG                      = 0x20\n\tDM_BUFFER_FULL_FLAG                         = 0x100\n\tDM_CONTROL_NODE                             = \"control\"\n\tDM_DATA_OUT_FLAG                            = 0x10000\n\tDM_DEFERRED_REMOVE                          = 0x20000\n\tDM_DEV_ARM_POLL                             = 0xc138fd10\n\tDM_DEV_CREATE                               = 0xc138fd03\n\tDM_DEV_REMOVE                               = 0xc138fd04\n\tDM_DEV_RENAME                               = 0xc138fd05\n\tDM_DEV_SET_GEOMETRY                         = 0xc138fd0f\n\tDM_DEV_STATUS                               = 0xc138fd07\n\tDM_DEV_SUSPEND                              = 0xc138fd06\n\tDM_DEV_WAIT                                 = 0xc138fd08\n\tDM_DIR                                      = \"mapper\"\n\tDM_GET_TARGET_VERSION                       = 0xc138fd11\n\tDM_IMA_MEASUREMENT_FLAG                     = 0x80000\n\tDM_INACTIVE_PRESENT_FLAG                    = 0x40\n\tDM_INTERNAL_SUSPEND_FLAG                    = 0x40000\n\tDM_IOCTL                                    = 0xfd\n\tDM_LIST_DEVICES                             = 0xc138fd02\n\tDM_LIST_VERSIONS                            = 0xc138fd0d\n\tDM_MAX_TYPE_NAME                            = 0x10\n\tDM_NAME_LEN                                 = 0x80\n\tDM_NAME_LIST_FLAG_DOESNT_HAVE_UUID          = 0x2\n\tDM_NAME_LIST_FLAG_HAS_UUID                  = 0x1\n\tDM_NOFLUSH_FLAG                             = 0x800\n\tDM_PERSISTENT_DEV_FLAG                      = 0x8\n\tDM_QUERY_INACTIVE_TABLE_FLAG                = 0x1000\n\tDM_READONLY_FLAG                            = 0x1\n\tDM_REMOVE_ALL                               = 0xc138fd01\n\tDM_SECURE_DATA_FLAG                         = 0x8000\n\tDM_SKIP_BDGET_FLAG                          = 0x200\n\tDM_SKIP_LOCKFS_FLAG                         = 0x400\n\tDM_STATUS_TABLE_FLAG                        = 0x10\n\tDM_SUSPEND_FLAG                             = 0x2\n\tDM_TABLE_CLEAR                              = 0xc138fd0a\n\tDM_TABLE_DEPS                               = 0xc138fd0b\n\tDM_TABLE_LOAD                               = 0xc138fd09\n\tDM_TABLE_STATUS                             = 0xc138fd0c\n\tDM_TARGET_MSG                               = 0xc138fd0e\n\tDM_UEVENT_GENERATED_FLAG                    = 0x2000\n\tDM_UUID_FLAG                                = 0x4000\n\tDM_UUID_LEN                                 = 0x81\n\tDM_VERSION                                  = 0xc138fd00\n\tDM_VERSION_EXTRA                            = \"-ioctl (2023-03-01)\"\n\tDM_VERSION_MAJOR                            = 0x4\n\tDM_VERSION_MINOR                            = 0x30\n\tDM_VERSION_PATCHLEVEL                       = 0x0\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\tEM_386                                      = 0x3\n\tEM_486                                      = 0x6\n\tEM_68K                                      = 0x4\n\tEM_860                                      = 0x7\n\tEM_88K                                      = 0x5\n\tEM_AARCH64                                  = 0xb7\n\tEM_ALPHA                                    = 0x9026\n\tEM_ALTERA_NIOS2                             = 0x71\n\tEM_ARCOMPACT                                = 0x5d\n\tEM_ARCV2                                    = 0xc3\n\tEM_ARM                                      = 0x28\n\tEM_BLACKFIN                                 = 0x6a\n\tEM_BPF                                      = 0xf7\n\tEM_CRIS                                     = 0x4c\n\tEM_CSKY                                     = 0xfc\n\tEM_CYGNUS_M32R                              = 0x9041\n\tEM_CYGNUS_MN10300                           = 0xbeef\n\tEM_FRV                                      = 0x5441\n\tEM_H8_300                                   = 0x2e\n\tEM_HEXAGON                                  = 0xa4\n\tEM_IA_64                                    = 0x32\n\tEM_LOONGARCH                                = 0x102\n\tEM_M32                                      = 0x1\n\tEM_M32R                                     = 0x58\n\tEM_MICROBLAZE                               = 0xbd\n\tEM_MIPS                                     = 0x8\n\tEM_MIPS_RS3_LE                              = 0xa\n\tEM_MIPS_RS4_BE                              = 0xa\n\tEM_MN10300                                  = 0x59\n\tEM_NDS32                                    = 0xa7\n\tEM_NONE                                     = 0x0\n\tEM_OPENRISC                                 = 0x5c\n\tEM_PARISC                                   = 0xf\n\tEM_PPC                                      = 0x14\n\tEM_PPC64                                    = 0x15\n\tEM_RISCV                                    = 0xf3\n\tEM_S390                                     = 0x16\n\tEM_S390_OLD                                 = 0xa390\n\tEM_SH                                       = 0x2a\n\tEM_SPARC                                    = 0x2\n\tEM_SPARC32PLUS                              = 0x12\n\tEM_SPARCV9                                  = 0x2b\n\tEM_SPU                                      = 0x17\n\tEM_TILEGX                                   = 0xbf\n\tEM_TILEPRO                                  = 0xbc\n\tEM_TI_C6000                                 = 0x8c\n\tEM_UNICORE                                  = 0x6e\n\tEM_X86_64                                   = 0x3e\n\tEM_XTENSA                                   = 0x5e\n\tENCODING_DEFAULT                            = 0x0\n\tENCODING_FM_MARK                            = 0x3\n\tENCODING_FM_SPACE                           = 0x4\n\tENCODING_MANCHESTER                         = 0x5\n\tENCODING_NRZ                                = 0x1\n\tENCODING_NRZI                               = 0x2\n\tEPOLLERR                                    = 0x8\n\tEPOLLET                                     = 0x80000000\n\tEPOLLEXCLUSIVE                              = 0x10000000\n\tEPOLLHUP                                    = 0x10\n\tEPOLLIN                                     = 0x1\n\tEPOLLMSG                                    = 0x400\n\tEPOLLONESHOT                                = 0x40000000\n\tEPOLLOUT                                    = 0x4\n\tEPOLLPRI                                    = 0x2\n\tEPOLLRDBAND                                 = 0x80\n\tEPOLLRDHUP                                  = 0x2000\n\tEPOLLRDNORM                                 = 0x40\n\tEPOLLWAKEUP                                 = 0x20000000\n\tEPOLLWRBAND                                 = 0x200\n\tEPOLLWRNORM                                 = 0x100\n\tEPOLL_CTL_ADD                               = 0x1\n\tEPOLL_CTL_DEL                               = 0x2\n\tEPOLL_CTL_MOD                               = 0x3\n\tEROFS_SUPER_MAGIC_V1                        = 0xe0f5e1e2\n\tESP_V4_FLOW                                 = 0xa\n\tESP_V6_FLOW                                 = 0xc\n\tETHER_FLOW                                  = 0x12\n\tETHTOOL_BUSINFO_LEN                         = 0x20\n\tETHTOOL_EROMVERS_LEN                        = 0x20\n\tETHTOOL_FEC_AUTO                            = 0x2\n\tETHTOOL_FEC_BASER                           = 0x10\n\tETHTOOL_FEC_LLRS                            = 0x20\n\tETHTOOL_FEC_NONE                            = 0x1\n\tETHTOOL_FEC_OFF                             = 0x4\n\tETHTOOL_FEC_RS                              = 0x8\n\tETHTOOL_FLAG_ALL                            = 0x7\n\tETHTOOL_FLAG_COMPACT_BITSETS                = 0x1\n\tETHTOOL_FLAG_OMIT_REPLY                     = 0x2\n\tETHTOOL_FLAG_STATS                          = 0x4\n\tETHTOOL_FLASHDEV                            = 0x33\n\tETHTOOL_FLASH_MAX_FILENAME                  = 0x80\n\tETHTOOL_FWVERS_LEN                          = 0x20\n\tETHTOOL_F_COMPAT                            = 0x4\n\tETHTOOL_F_UNSUPPORTED                       = 0x1\n\tETHTOOL_F_WISH                              = 0x2\n\tETHTOOL_GCHANNELS                           = 0x3c\n\tETHTOOL_GCOALESCE                           = 0xe\n\tETHTOOL_GDRVINFO                            = 0x3\n\tETHTOOL_GEEE                                = 0x44\n\tETHTOOL_GEEPROM                             = 0xb\n\tETHTOOL_GENL_NAME                           = \"ethtool\"\n\tETHTOOL_GENL_VERSION                        = 0x1\n\tETHTOOL_GET_DUMP_DATA                       = 0x40\n\tETHTOOL_GET_DUMP_FLAG                       = 0x3f\n\tETHTOOL_GET_TS_INFO                         = 0x41\n\tETHTOOL_GFEATURES                           = 0x3a\n\tETHTOOL_GFECPARAM                           = 0x50\n\tETHTOOL_GFLAGS                              = 0x25\n\tETHTOOL_GGRO                                = 0x2b\n\tETHTOOL_GGSO                                = 0x23\n\tETHTOOL_GLINK                               = 0xa\n\tETHTOOL_GLINKSETTINGS                       = 0x4c\n\tETHTOOL_GMODULEEEPROM                       = 0x43\n\tETHTOOL_GMODULEINFO                         = 0x42\n\tETHTOOL_GMSGLVL                             = 0x7\n\tETHTOOL_GPAUSEPARAM                         = 0x12\n\tETHTOOL_GPERMADDR                           = 0x20\n\tETHTOOL_GPFLAGS                             = 0x27\n\tETHTOOL_GPHYSTATS                           = 0x4a\n\tETHTOOL_GREGS                               = 0x4\n\tETHTOOL_GRINGPARAM                          = 0x10\n\tETHTOOL_GRSSH                               = 0x46\n\tETHTOOL_GRXCLSRLALL                         = 0x30\n\tETHTOOL_GRXCLSRLCNT                         = 0x2e\n\tETHTOOL_GRXCLSRULE                          = 0x2f\n\tETHTOOL_GRXCSUM                             = 0x14\n\tETHTOOL_GRXFH                               = 0x29\n\tETHTOOL_GRXFHINDIR                          = 0x38\n\tETHTOOL_GRXNTUPLE                           = 0x36\n\tETHTOOL_GRXRINGS                            = 0x2d\n\tETHTOOL_GSET                                = 0x1\n\tETHTOOL_GSG                                 = 0x18\n\tETHTOOL_GSSET_INFO                          = 0x37\n\tETHTOOL_GSTATS                              = 0x1d\n\tETHTOOL_GSTRINGS                            = 0x1b\n\tETHTOOL_GTSO                                = 0x1e\n\tETHTOOL_GTUNABLE                            = 0x48\n\tETHTOOL_GTXCSUM                             = 0x16\n\tETHTOOL_GUFO                                = 0x21\n\tETHTOOL_GWOL                                = 0x5\n\tETHTOOL_MCGRP_MONITOR_NAME                  = \"monitor\"\n\tETHTOOL_NWAY_RST                            = 0x9\n\tETHTOOL_PERQUEUE                            = 0x4b\n\tETHTOOL_PHYS_ID                             = 0x1c\n\tETHTOOL_PHY_EDPD_DFLT_TX_MSECS              = 0xffff\n\tETHTOOL_PHY_EDPD_DISABLE                    = 0x0\n\tETHTOOL_PHY_EDPD_NO_TX                      = 0xfffe\n\tETHTOOL_PHY_FAST_LINK_DOWN_OFF              = 0xff\n\tETHTOOL_PHY_FAST_LINK_DOWN_ON               = 0x0\n\tETHTOOL_PHY_GTUNABLE                        = 0x4e\n\tETHTOOL_PHY_STUNABLE                        = 0x4f\n\tETHTOOL_RESET                               = 0x34\n\tETHTOOL_RXNTUPLE_ACTION_CLEAR               = -0x2\n\tETHTOOL_RXNTUPLE_ACTION_DROP                = -0x1\n\tETHTOOL_RX_FLOW_SPEC_RING                   = 0xffffffff\n\tETHTOOL_RX_FLOW_SPEC_RING_VF                = 0xff00000000\n\tETHTOOL_RX_FLOW_SPEC_RING_VF_OFF            = 0x20\n\tETHTOOL_SCHANNELS                           = 0x3d\n\tETHTOOL_SCOALESCE                           = 0xf\n\tETHTOOL_SEEE                                = 0x45\n\tETHTOOL_SEEPROM                             = 0xc\n\tETHTOOL_SET_DUMP                            = 0x3e\n\tETHTOOL_SFEATURES                           = 0x3b\n\tETHTOOL_SFECPARAM                           = 0x51\n\tETHTOOL_SFLAGS                              = 0x26\n\tETHTOOL_SGRO                                = 0x2c\n\tETHTOOL_SGSO                                = 0x24\n\tETHTOOL_SLINKSETTINGS                       = 0x4d\n\tETHTOOL_SMSGLVL                             = 0x8\n\tETHTOOL_SPAUSEPARAM                         = 0x13\n\tETHTOOL_SPFLAGS                             = 0x28\n\tETHTOOL_SRINGPARAM                          = 0x11\n\tETHTOOL_SRSSH                               = 0x47\n\tETHTOOL_SRXCLSRLDEL                         = 0x31\n\tETHTOOL_SRXCLSRLINS                         = 0x32\n\tETHTOOL_SRXCSUM                             = 0x15\n\tETHTOOL_SRXFH                               = 0x2a\n\tETHTOOL_SRXFHINDIR                          = 0x39\n\tETHTOOL_SRXNTUPLE                           = 0x35\n\tETHTOOL_SSET                                = 0x2\n\tETHTOOL_SSG                                 = 0x19\n\tETHTOOL_STSO                                = 0x1f\n\tETHTOOL_STUNABLE                            = 0x49\n\tETHTOOL_STXCSUM                             = 0x17\n\tETHTOOL_SUFO                                = 0x22\n\tETHTOOL_SWOL                                = 0x6\n\tETHTOOL_TEST                                = 0x1a\n\tETH_P_1588                                  = 0x88f7\n\tETH_P_8021AD                                = 0x88a8\n\tETH_P_8021AH                                = 0x88e7\n\tETH_P_8021Q                                 = 0x8100\n\tETH_P_80221                                 = 0x8917\n\tETH_P_802_2                                 = 0x4\n\tETH_P_802_3                                 = 0x1\n\tETH_P_802_3_MIN                             = 0x600\n\tETH_P_802_EX1                               = 0x88b5\n\tETH_P_AARP                                  = 0x80f3\n\tETH_P_AF_IUCV                               = 0xfbfb\n\tETH_P_ALL                                   = 0x3\n\tETH_P_AOE                                   = 0x88a2\n\tETH_P_ARCNET                                = 0x1a\n\tETH_P_ARP                                   = 0x806\n\tETH_P_ATALK                                 = 0x809b\n\tETH_P_ATMFATE                               = 0x8884\n\tETH_P_ATMMPOA                               = 0x884c\n\tETH_P_AX25                                  = 0x2\n\tETH_P_BATMAN                                = 0x4305\n\tETH_P_BPQ                                   = 0x8ff\n\tETH_P_CAIF                                  = 0xf7\n\tETH_P_CAN                                   = 0xc\n\tETH_P_CANFD                                 = 0xd\n\tETH_P_CANXL                                 = 0xe\n\tETH_P_CFM                                   = 0x8902\n\tETH_P_CONTROL                               = 0x16\n\tETH_P_CUST                                  = 0x6006\n\tETH_P_DDCMP                                 = 0x6\n\tETH_P_DEC                                   = 0x6000\n\tETH_P_DIAG                                  = 0x6005\n\tETH_P_DNA_DL                                = 0x6001\n\tETH_P_DNA_RC                                = 0x6002\n\tETH_P_DNA_RT                                = 0x6003\n\tETH_P_DSA                                   = 0x1b\n\tETH_P_DSA_8021Q                             = 0xdadb\n\tETH_P_DSA_A5PSW                             = 0xe001\n\tETH_P_ECONET                                = 0x18\n\tETH_P_EDSA                                  = 0xdada\n\tETH_P_ERSPAN                                = 0x88be\n\tETH_P_ERSPAN2                               = 0x22eb\n\tETH_P_ETHERCAT                              = 0x88a4\n\tETH_P_FCOE                                  = 0x8906\n\tETH_P_FIP                                   = 0x8914\n\tETH_P_HDLC                                  = 0x19\n\tETH_P_HSR                                   = 0x892f\n\tETH_P_IBOE                                  = 0x8915\n\tETH_P_IEEE802154                            = 0xf6\n\tETH_P_IEEEPUP                               = 0xa00\n\tETH_P_IEEEPUPAT                             = 0xa01\n\tETH_P_IFE                                   = 0xed3e\n\tETH_P_IP                                    = 0x800\n\tETH_P_IPV6                                  = 0x86dd\n\tETH_P_IPX                                   = 0x8137\n\tETH_P_IRDA                                  = 0x17\n\tETH_P_LAT                                   = 0x6004\n\tETH_P_LINK_CTL                              = 0x886c\n\tETH_P_LLDP                                  = 0x88cc\n\tETH_P_LOCALTALK                             = 0x9\n\tETH_P_LOOP                                  = 0x60\n\tETH_P_LOOPBACK                              = 0x9000\n\tETH_P_MACSEC                                = 0x88e5\n\tETH_P_MAP                                   = 0xf9\n\tETH_P_MCTP                                  = 0xfa\n\tETH_P_MOBITEX                               = 0x15\n\tETH_P_MPLS_MC                               = 0x8848\n\tETH_P_MPLS_UC                               = 0x8847\n\tETH_P_MRP                                   = 0x88e3\n\tETH_P_MVRP                                  = 0x88f5\n\tETH_P_NCSI                                  = 0x88f8\n\tETH_P_NSH                                   = 0x894f\n\tETH_P_PAE                                   = 0x888e\n\tETH_P_PAUSE                                 = 0x8808\n\tETH_P_PHONET                                = 0xf5\n\tETH_P_PPPTALK                               = 0x10\n\tETH_P_PPP_DISC                              = 0x8863\n\tETH_P_PPP_MP                                = 0x8\n\tETH_P_PPP_SES                               = 0x8864\n\tETH_P_PREAUTH                               = 0x88c7\n\tETH_P_PROFINET                              = 0x8892\n\tETH_P_PRP                                   = 0x88fb\n\tETH_P_PUP                                   = 0x200\n\tETH_P_PUPAT                                 = 0x201\n\tETH_P_QINQ1                                 = 0x9100\n\tETH_P_QINQ2                                 = 0x9200\n\tETH_P_QINQ3                                 = 0x9300\n\tETH_P_RARP                                  = 0x8035\n\tETH_P_REALTEK                               = 0x8899\n\tETH_P_SCA                                   = 0x6007\n\tETH_P_SLOW                                  = 0x8809\n\tETH_P_SNAP                                  = 0x5\n\tETH_P_TDLS                                  = 0x890d\n\tETH_P_TEB                                   = 0x6558\n\tETH_P_TIPC                                  = 0x88ca\n\tETH_P_TRAILER                               = 0x1c\n\tETH_P_TR_802_2                              = 0x11\n\tETH_P_TSN                                   = 0x22f0\n\tETH_P_WAN_PPP                               = 0x7\n\tETH_P_WCCP                                  = 0x883e\n\tETH_P_X25                                   = 0x805\n\tETH_P_XDSA                                  = 0xf8\n\tEV_ABS                                      = 0x3\n\tEV_CNT                                      = 0x20\n\tEV_FF                                       = 0x15\n\tEV_FF_STATUS                                = 0x17\n\tEV_KEY                                      = 0x1\n\tEV_LED                                      = 0x11\n\tEV_MAX                                      = 0x1f\n\tEV_MSC                                      = 0x4\n\tEV_PWR                                      = 0x16\n\tEV_REL                                      = 0x2\n\tEV_REP                                      = 0x14\n\tEV_SND                                      = 0x12\n\tEV_SW                                       = 0x5\n\tEV_SYN                                      = 0x0\n\tEV_VERSION                                  = 0x10001\n\tEXABYTE_ENABLE_NEST                         = 0xf0\n\tEXFAT_SUPER_MAGIC                           = 0x2011bab0\n\tEXT2_SUPER_MAGIC                            = 0xef53\n\tEXT3_SUPER_MAGIC                            = 0xef53\n\tEXT4_SUPER_MAGIC                            = 0xef53\n\tEXTA                                        = 0xe\n\tEXTB                                        = 0xf\n\tF2FS_SUPER_MAGIC                            = 0xf2f52010\n\tFALLOC_FL_COLLAPSE_RANGE                    = 0x8\n\tFALLOC_FL_INSERT_RANGE                      = 0x20\n\tFALLOC_FL_KEEP_SIZE                         = 0x1\n\tFALLOC_FL_NO_HIDE_STALE                     = 0x4\n\tFALLOC_FL_PUNCH_HOLE                        = 0x2\n\tFALLOC_FL_UNSHARE_RANGE                     = 0x40\n\tFALLOC_FL_ZERO_RANGE                        = 0x10\n\tFANOTIFY_METADATA_VERSION                   = 0x3\n\tFAN_ACCESS                                  = 0x1\n\tFAN_ACCESS_PERM                             = 0x20000\n\tFAN_ALLOW                                   = 0x1\n\tFAN_ALL_CLASS_BITS                          = 0xc\n\tFAN_ALL_EVENTS                              = 0x3b\n\tFAN_ALL_INIT_FLAGS                          = 0x3f\n\tFAN_ALL_MARK_FLAGS                          = 0xff\n\tFAN_ALL_OUTGOING_EVENTS                     = 0x3403b\n\tFAN_ALL_PERM_EVENTS                         = 0x30000\n\tFAN_ATTRIB                                  = 0x4\n\tFAN_AUDIT                                   = 0x10\n\tFAN_CLASS_CONTENT                           = 0x4\n\tFAN_CLASS_NOTIF                             = 0x0\n\tFAN_CLASS_PRE_CONTENT                       = 0x8\n\tFAN_CLOEXEC                                 = 0x1\n\tFAN_CLOSE                                   = 0x18\n\tFAN_CLOSE_NOWRITE                           = 0x10\n\tFAN_CLOSE_WRITE                             = 0x8\n\tFAN_CREATE                                  = 0x100\n\tFAN_DELETE                                  = 0x200\n\tFAN_DELETE_SELF                             = 0x400\n\tFAN_DENY                                    = 0x2\n\tFAN_ENABLE_AUDIT                            = 0x40\n\tFAN_EPIDFD                                  = -0x2\n\tFAN_EVENT_INFO_TYPE_DFID                    = 0x3\n\tFAN_EVENT_INFO_TYPE_DFID_NAME               = 0x2\n\tFAN_EVENT_INFO_TYPE_ERROR                   = 0x5\n\tFAN_EVENT_INFO_TYPE_FID                     = 0x1\n\tFAN_EVENT_INFO_TYPE_NEW_DFID_NAME           = 0xc\n\tFAN_EVENT_INFO_TYPE_OLD_DFID_NAME           = 0xa\n\tFAN_EVENT_INFO_TYPE_PIDFD                   = 0x4\n\tFAN_EVENT_METADATA_LEN                      = 0x18\n\tFAN_EVENT_ON_CHILD                          = 0x8000000\n\tFAN_FS_ERROR                                = 0x8000\n\tFAN_INFO                                    = 0x20\n\tFAN_MARK_ADD                                = 0x1\n\tFAN_MARK_DONT_FOLLOW                        = 0x4\n\tFAN_MARK_EVICTABLE                          = 0x200\n\tFAN_MARK_FILESYSTEM                         = 0x100\n\tFAN_MARK_FLUSH                              = 0x80\n\tFAN_MARK_IGNORE                             = 0x400\n\tFAN_MARK_IGNORED_MASK                       = 0x20\n\tFAN_MARK_IGNORED_SURV_MODIFY                = 0x40\n\tFAN_MARK_IGNORE_SURV                        = 0x440\n\tFAN_MARK_INODE                              = 0x0\n\tFAN_MARK_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_NOPIDFD                                 = -0x1\n\tFAN_ONDIR                                   = 0x40000000\n\tFAN_OPEN                                    = 0x20\n\tFAN_OPEN_EXEC                               = 0x1000\n\tFAN_OPEN_EXEC_PERM                          = 0x40000\n\tFAN_OPEN_PERM                               = 0x10000\n\tFAN_Q_OVERFLOW                              = 0x4000\n\tFAN_RENAME                                  = 0x10000000\n\tFAN_REPORT_DFID_NAME                        = 0xc00\n\tFAN_REPORT_DFID_NAME_TARGET                 = 0x1e00\n\tFAN_REPORT_DIR_FID                          = 0x400\n\tFAN_REPORT_FID                              = 0x200\n\tFAN_REPORT_NAME                             = 0x800\n\tFAN_REPORT_PIDFD                            = 0x80\n\tFAN_REPORT_TARGET_FID                       = 0x1000\n\tFAN_REPORT_TID                              = 0x100\n\tFAN_RESPONSE_INFO_AUDIT_RULE                = 0x1\n\tFAN_RESPONSE_INFO_NONE                      = 0x0\n\tFAN_UNLIMITED_MARKS                         = 0x20\n\tFAN_UNLIMITED_QUEUE                         = 0x10\n\tFD_CLOEXEC                                  = 0x1\n\tFD_SETSIZE                                  = 0x400\n\tFF0                                         = 0x0\n\tFIB_RULE_DEV_DETACHED                       = 0x8\n\tFIB_RULE_FIND_SADDR                         = 0x10000\n\tFIB_RULE_IIF_DETACHED                       = 0x8\n\tFIB_RULE_INVERT                             = 0x2\n\tFIB_RULE_OIF_DETACHED                       = 0x10\n\tFIB_RULE_PERMANENT                          = 0x1\n\tFIB_RULE_UNRESOLVED                         = 0x4\n\tFIDEDUPERANGE                               = 0xc0189436\n\tFSCRYPT_KEY_DESCRIPTOR_SIZE                 = 0x8\n\tFSCRYPT_KEY_DESC_PREFIX                     = \"fscrypt:\"\n\tFSCRYPT_KEY_DESC_PREFIX_SIZE                = 0x8\n\tFSCRYPT_KEY_IDENTIFIER_SIZE                 = 0x10\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_FILES_BUSY  = 0x1\n\tFSCRYPT_KEY_REMOVAL_STATUS_FLAG_OTHER_USERS = 0x2\n\tFSCRYPT_KEY_SPEC_TYPE_DESCRIPTOR            = 0x1\n\tFSCRYPT_KEY_SPEC_TYPE_IDENTIFIER            = 0x2\n\tFSCRYPT_KEY_STATUS_ABSENT                   = 0x1\n\tFSCRYPT_KEY_STATUS_FLAG_ADDED_BY_SELF       = 0x1\n\tFSCRYPT_KEY_STATUS_INCOMPLETELY_REMOVED     = 0x3\n\tFSCRYPT_KEY_STATUS_PRESENT                  = 0x2\n\tFSCRYPT_MAX_KEY_SIZE                        = 0x40\n\tFSCRYPT_MODE_ADIANTUM                       = 0x9\n\tFSCRYPT_MODE_AES_128_CBC                    = 0x5\n\tFSCRYPT_MODE_AES_128_CTS                    = 0x6\n\tFSCRYPT_MODE_AES_256_CTS                    = 0x4\n\tFSCRYPT_MODE_AES_256_HCTR2                  = 0xa\n\tFSCRYPT_MODE_AES_256_XTS                    = 0x1\n\tFSCRYPT_MODE_SM4_CTS                        = 0x8\n\tFSCRYPT_MODE_SM4_XTS                        = 0x7\n\tFSCRYPT_POLICY_FLAGS_PAD_16                 = 0x2\n\tFSCRYPT_POLICY_FLAGS_PAD_32                 = 0x3\n\tFSCRYPT_POLICY_FLAGS_PAD_4                  = 0x0\n\tFSCRYPT_POLICY_FLAGS_PAD_8                  = 0x1\n\tFSCRYPT_POLICY_FLAGS_PAD_MASK               = 0x3\n\tFSCRYPT_POLICY_FLAG_DIRECT_KEY              = 0x4\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_32          = 0x10\n\tFSCRYPT_POLICY_FLAG_IV_INO_LBLK_64          = 0x8\n\tFSCRYPT_POLICY_V1                           = 0x0\n\tFSCRYPT_POLICY_V2                           = 0x2\n\tFS_ENCRYPTION_MODE_ADIANTUM                 = 0x9\n\tFS_ENCRYPTION_MODE_AES_128_CBC              = 0x5\n\tFS_ENCRYPTION_MODE_AES_128_CTS              = 0x6\n\tFS_ENCRYPTION_MODE_AES_256_CBC              = 0x3\n\tFS_ENCRYPTION_MODE_AES_256_CTS              = 0x4\n\tFS_ENCRYPTION_MODE_AES_256_GCM              = 0x2\n\tFS_ENCRYPTION_MODE_AES_256_XTS              = 0x1\n\tFS_ENCRYPTION_MODE_INVALID                  = 0x0\n\tFS_IOC_ADD_ENCRYPTION_KEY                   = 0xc0506617\n\tFS_IOC_GET_ENCRYPTION_KEY_STATUS            = 0xc080661a\n\tFS_IOC_GET_ENCRYPTION_POLICY_EX             = 0xc0096616\n\tFS_IOC_MEASURE_VERITY                       = 0xc0046686\n\tFS_IOC_READ_VERITY_METADATA                 = 0xc0286687\n\tFS_IOC_REMOVE_ENCRYPTION_KEY                = 0xc0406618\n\tFS_IOC_REMOVE_ENCRYPTION_KEY_ALL_USERS      = 0xc0406619\n\tFS_KEY_DESCRIPTOR_SIZE                      = 0x8\n\tFS_KEY_DESC_PREFIX                          = \"fscrypt:\"\n\tFS_KEY_DESC_PREFIX_SIZE                     = 0x8\n\tFS_MAX_KEY_SIZE                             = 0x40\n\tFS_POLICY_FLAGS_PAD_16                      = 0x2\n\tFS_POLICY_FLAGS_PAD_32                      = 0x3\n\tFS_POLICY_FLAGS_PAD_4                       = 0x0\n\tFS_POLICY_FLAGS_PAD_8                       = 0x1\n\tFS_POLICY_FLAGS_PAD_MASK                    = 0x3\n\tFS_POLICY_FLAGS_VALID                       = 0x7\n\tFS_VERITY_FL                                = 0x100000\n\tFS_VERITY_HASH_ALG_SHA256                   = 0x1\n\tFS_VERITY_HASH_ALG_SHA512                   = 0x2\n\tFS_VERITY_METADATA_TYPE_DESCRIPTOR          = 0x2\n\tFS_VERITY_METADATA_TYPE_MERKLE_TREE         = 0x1\n\tFS_VERITY_METADATA_TYPE_SIGNATURE           = 0x3\n\tFUSE_SUPER_MAGIC                            = 0x65735546\n\tFUTEXFS_SUPER_MAGIC                         = 0xbad1dea\n\tF_ADD_SEALS                                 = 0x409\n\tF_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\tHID_MAX_DESCRIPTOR_SIZE                     = 0x1000\n\tHOSTFS_SUPER_MAGIC                          = 0xc0ffee\n\tHPFS_SUPER_MAGIC                            = 0xf995e849\n\tHUGETLBFS_MAGIC                             = 0x958458f6\n\tIBSHIFT                                     = 0x10\n\tICRNL                                       = 0x100\n\tIFA_F_DADFAILED                             = 0x8\n\tIFA_F_DEPRECATED                            = 0x20\n\tIFA_F_HOMEADDRESS                           = 0x10\n\tIFA_F_MANAGETEMPADDR                        = 0x100\n\tIFA_F_MCAUTOJOIN                            = 0x400\n\tIFA_F_NODAD                                 = 0x2\n\tIFA_F_NOPREFIXROUTE                         = 0x200\n\tIFA_F_OPTIMISTIC                            = 0x4\n\tIFA_F_PERMANENT                             = 0x80\n\tIFA_F_SECONDARY                             = 0x1\n\tIFA_F_STABLE_PRIVACY                        = 0x800\n\tIFA_F_TEMPORARY                             = 0x1\n\tIFA_F_TENTATIVE                             = 0x40\n\tIFA_MAX                                     = 0xb\n\tIFF_ALLMULTI                                = 0x200\n\tIFF_ATTACH_QUEUE                            = 0x200\n\tIFF_AUTOMEDIA                               = 0x4000\n\tIFF_BROADCAST                               = 0x2\n\tIFF_DEBUG                                   = 0x4\n\tIFF_DETACH_QUEUE                            = 0x400\n\tIFF_DORMANT                                 = 0x20000\n\tIFF_DYNAMIC                                 = 0x8000\n\tIFF_ECHO                                    = 0x40000\n\tIFF_LOOPBACK                                = 0x8\n\tIFF_LOWER_UP                                = 0x10000\n\tIFF_MASTER                                  = 0x400\n\tIFF_MULTICAST                               = 0x1000\n\tIFF_MULTI_QUEUE                             = 0x100\n\tIFF_NAPI                                    = 0x10\n\tIFF_NAPI_FRAGS                              = 0x20\n\tIFF_NOARP                                   = 0x80\n\tIFF_NOFILTER                                = 0x1000\n\tIFF_NOTRAILERS                              = 0x20\n\tIFF_NO_CARRIER                              = 0x40\n\tIFF_NO_PI                                   = 0x1000\n\tIFF_ONE_QUEUE                               = 0x2000\n\tIFF_PERSIST                                 = 0x800\n\tIFF_POINTOPOINT                             = 0x10\n\tIFF_PORTSEL                                 = 0x2000\n\tIFF_PROMISC                                 = 0x100\n\tIFF_RUNNING                                 = 0x40\n\tIFF_SLAVE                                   = 0x800\n\tIFF_TAP                                     = 0x2\n\tIFF_TUN                                     = 0x1\n\tIFF_TUN_EXCL                                = 0x8000\n\tIFF_UP                                      = 0x1\n\tIFF_VNET_HDR                                = 0x4000\n\tIFF_VOLATILE                                = 0x70c5a\n\tIFNAMSIZ                                    = 0x10\n\tIGNBRK                                      = 0x1\n\tIGNCR                                       = 0x80\n\tIGNPAR                                      = 0x4\n\tIMAXBEL                                     = 0x2000\n\tINLCR                                       = 0x40\n\tINPCK                                       = 0x10\n\tIN_ACCESS                                   = 0x1\n\tIN_ALL_EVENTS                               = 0xfff\n\tIN_ATTRIB                                   = 0x4\n\tIN_CLASSA_HOST                              = 0xffffff\n\tIN_CLASSA_MAX                               = 0x80\n\tIN_CLASSA_NET                               = 0xff000000\n\tIN_CLASSA_NSHIFT                            = 0x18\n\tIN_CLASSB_HOST                              = 0xffff\n\tIN_CLASSB_MAX                               = 0x10000\n\tIN_CLASSB_NET                               = 0xffff0000\n\tIN_CLASSB_NSHIFT                            = 0x10\n\tIN_CLASSC_HOST                              = 0xff\n\tIN_CLASSC_NET                               = 0xffffff00\n\tIN_CLASSC_NSHIFT                            = 0x8\n\tIN_CLOSE                                    = 0x18\n\tIN_CLOSE_NOWRITE                            = 0x10\n\tIN_CLOSE_WRITE                              = 0x8\n\tIN_CREATE                                   = 0x100\n\tIN_DELETE                                   = 0x200\n\tIN_DELETE_SELF                              = 0x400\n\tIN_DONT_FOLLOW                              = 0x2000000\n\tIN_EXCL_UNLINK                              = 0x4000000\n\tIN_IGNORED                                  = 0x8000\n\tIN_ISDIR                                    = 0x40000000\n\tIN_LOOPBACKNET                              = 0x7f\n\tIN_MASK_ADD                                 = 0x20000000\n\tIN_MASK_CREATE                              = 0x10000000\n\tIN_MODIFY                                   = 0x2\n\tIN_MOVE                                     = 0xc0\n\tIN_MOVED_FROM                               = 0x40\n\tIN_MOVED_TO                                 = 0x80\n\tIN_MOVE_SELF                                = 0x800\n\tIN_ONESHOT                                  = 0x80000000\n\tIN_ONLYDIR                                  = 0x1000000\n\tIN_OPEN                                     = 0x20\n\tIN_Q_OVERFLOW                               = 0x4000\n\tIN_UNMOUNT                                  = 0x2000\n\tIPPROTO_AH                                  = 0x33\n\tIPPROTO_BEETPH                              = 0x5e\n\tIPPROTO_COMP                                = 0x6c\n\tIPPROTO_DCCP                                = 0x21\n\tIPPROTO_DSTOPTS                             = 0x3c\n\tIPPROTO_EGP                                 = 0x8\n\tIPPROTO_ENCAP                               = 0x62\n\tIPPROTO_ESP                                 = 0x32\n\tIPPROTO_ETHERNET                            = 0x8f\n\tIPPROTO_FRAGMENT                            = 0x2c\n\tIPPROTO_GRE                                 = 0x2f\n\tIPPROTO_HOPOPTS                             = 0x0\n\tIPPROTO_ICMP                                = 0x1\n\tIPPROTO_ICMPV6                              = 0x3a\n\tIPPROTO_IDP                                 = 0x16\n\tIPPROTO_IGMP                                = 0x2\n\tIPPROTO_IP                                  = 0x0\n\tIPPROTO_IPIP                                = 0x4\n\tIPPROTO_IPV6                                = 0x29\n\tIPPROTO_L2TP                                = 0x73\n\tIPPROTO_MH                                  = 0x87\n\tIPPROTO_MPLS                                = 0x89\n\tIPPROTO_MPTCP                               = 0x106\n\tIPPROTO_MTP                                 = 0x5c\n\tIPPROTO_NONE                                = 0x3b\n\tIPPROTO_PIM                                 = 0x67\n\tIPPROTO_PUP                                 = 0xc\n\tIPPROTO_RAW                                 = 0xff\n\tIPPROTO_ROUTING                             = 0x2b\n\tIPPROTO_RSVP                                = 0x2e\n\tIPPROTO_SCTP                                = 0x84\n\tIPPROTO_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_FLOW                                   = 0x11\n\tIPV6_FREEBIND                               = 0x4e\n\tIPV6_HDRINCL                                = 0x24\n\tIPV6_HOPLIMIT                               = 0x34\n\tIPV6_HOPOPTS                                = 0x36\n\tIPV6_IPSEC_POLICY                           = 0x22\n\tIPV6_JOIN_ANYCAST                           = 0x1b\n\tIPV6_JOIN_GROUP                             = 0x14\n\tIPV6_LEAVE_ANYCAST                          = 0x1c\n\tIPV6_LEAVE_GROUP                            = 0x15\n\tIPV6_MINHOPCOUNT                            = 0x49\n\tIPV6_MTU                                    = 0x18\n\tIPV6_MTU_DISCOVER                           = 0x17\n\tIPV6_MULTICAST_ALL                          = 0x1d\n\tIPV6_MULTICAST_HOPS                         = 0x12\n\tIPV6_MULTICAST_IF                           = 0x11\n\tIPV6_MULTICAST_LOOP                         = 0x13\n\tIPV6_NEXTHOP                                = 0x9\n\tIPV6_ORIGDSTADDR                            = 0x4a\n\tIPV6_PATHMTU                                = 0x3d\n\tIPV6_PKTINFO                                = 0x32\n\tIPV6_PMTUDISC_DO                            = 0x2\n\tIPV6_PMTUDISC_DONT                          = 0x0\n\tIPV6_PMTUDISC_INTERFACE                     = 0x4\n\tIPV6_PMTUDISC_OMIT                          = 0x5\n\tIPV6_PMTUDISC_PROBE                         = 0x3\n\tIPV6_PMTUDISC_WANT                          = 0x1\n\tIPV6_RECVDSTOPTS                            = 0x3a\n\tIPV6_RECVERR                                = 0x19\n\tIPV6_RECVERR_RFC4884                        = 0x1f\n\tIPV6_RECVFRAGSIZE                           = 0x4d\n\tIPV6_RECVHOPLIMIT                           = 0x33\n\tIPV6_RECVHOPOPTS                            = 0x35\n\tIPV6_RECVORIGDSTADDR                        = 0x4a\n\tIPV6_RECVPATHMTU                            = 0x3c\n\tIPV6_RECVPKTINFO                            = 0x31\n\tIPV6_RECVRTHDR                              = 0x38\n\tIPV6_RECVTCLASS                             = 0x42\n\tIPV6_ROUTER_ALERT                           = 0x16\n\tIPV6_ROUTER_ALERT_ISOLATE                   = 0x1e\n\tIPV6_RTHDR                                  = 0x39\n\tIPV6_RTHDRDSTOPTS                           = 0x37\n\tIPV6_RTHDR_LOOSE                            = 0x0\n\tIPV6_RTHDR_STRICT                           = 0x1\n\tIPV6_RTHDR_TYPE_0                           = 0x0\n\tIPV6_RXDSTOPTS                              = 0x3b\n\tIPV6_RXHOPOPTS                              = 0x36\n\tIPV6_TCLASS                                 = 0x43\n\tIPV6_TRANSPARENT                            = 0x4b\n\tIPV6_UNICAST_HOPS                           = 0x10\n\tIPV6_UNICAST_IF                             = 0x4c\n\tIPV6_USER_FLOW                              = 0xe\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_RECVERR_RFC4884                          = 0x1a\n\tIP_RECVFRAGSIZE                             = 0x19\n\tIP_RECVOPTS                                 = 0x6\n\tIP_RECVORIGDSTADDR                          = 0x14\n\tIP_RECVRETOPTS                              = 0x7\n\tIP_RECVTOS                                  = 0xd\n\tIP_RECVTTL                                  = 0xc\n\tIP_RETOPTS                                  = 0x7\n\tIP_RF                                       = 0x8000\n\tIP_ROUTER_ALERT                             = 0x5\n\tIP_TOS                                      = 0x1\n\tIP_TRANSPARENT                              = 0x13\n\tIP_TTL                                      = 0x2\n\tIP_UNBLOCK_SOURCE                           = 0x25\n\tIP_UNICAST_IF                               = 0x32\n\tIP_USER_FLOW                                = 0xd\n\tIP_XFRM_POLICY                              = 0x11\n\tISOFS_SUPER_MAGIC                           = 0x9660\n\tISTRIP                                      = 0x20\n\tITIMER_PROF                                 = 0x2\n\tITIMER_REAL                                 = 0x0\n\tITIMER_VIRTUAL                              = 0x1\n\tIUTF8                                       = 0x4000\n\tIXANY                                       = 0x800\n\tJFFS2_SUPER_MAGIC                           = 0x72b6\n\tKCMPROTO_CONNECTED                          = 0x0\n\tKCM_RECV_DISABLE                            = 0x1\n\tKEXEC_ARCH_386                              = 0x30000\n\tKEXEC_ARCH_68K                              = 0x40000\n\tKEXEC_ARCH_AARCH64                          = 0xb70000\n\tKEXEC_ARCH_ARM                              = 0x280000\n\tKEXEC_ARCH_DEFAULT                          = 0x0\n\tKEXEC_ARCH_IA_64                            = 0x320000\n\tKEXEC_ARCH_LOONGARCH                        = 0x1020000\n\tKEXEC_ARCH_MASK                             = 0xffff0000\n\tKEXEC_ARCH_MIPS                             = 0x80000\n\tKEXEC_ARCH_MIPS_LE                          = 0xa0000\n\tKEXEC_ARCH_PARISC                           = 0xf0000\n\tKEXEC_ARCH_PPC                              = 0x140000\n\tKEXEC_ARCH_PPC64                            = 0x150000\n\tKEXEC_ARCH_RISCV                            = 0xf30000\n\tKEXEC_ARCH_S390                             = 0x160000\n\tKEXEC_ARCH_SH                               = 0x2a0000\n\tKEXEC_ARCH_X86_64                           = 0x3e0000\n\tKEXEC_FILE_NO_INITRAMFS                     = 0x4\n\tKEXEC_FILE_ON_CRASH                         = 0x2\n\tKEXEC_FILE_UNLOAD                           = 0x1\n\tKEXEC_ON_CRASH                              = 0x1\n\tKEXEC_PRESERVE_CONTEXT                      = 0x2\n\tKEXEC_SEGMENT_MAX                           = 0x10\n\tKEXEC_UPDATE_ELFCOREHDR                     = 0x4\n\tKEYCTL_ASSUME_AUTHORITY                     = 0x10\n\tKEYCTL_CAPABILITIES                         = 0x1f\n\tKEYCTL_CAPS0_BIG_KEY                        = 0x10\n\tKEYCTL_CAPS0_CAPABILITIES                   = 0x1\n\tKEYCTL_CAPS0_DIFFIE_HELLMAN                 = 0x4\n\tKEYCTL_CAPS0_INVALIDATE                     = 0x20\n\tKEYCTL_CAPS0_MOVE                           = 0x80\n\tKEYCTL_CAPS0_PERSISTENT_KEYRINGS            = 0x2\n\tKEYCTL_CAPS0_PUBLIC_KEY                     = 0x8\n\tKEYCTL_CAPS0_RESTRICT_KEYRING               = 0x40\n\tKEYCTL_CAPS1_NOTIFICATIONS                  = 0x4\n\tKEYCTL_CAPS1_NS_KEYRING_NAME                = 0x1\n\tKEYCTL_CAPS1_NS_KEY_TAG                     = 0x2\n\tKEYCTL_CHOWN                                = 0x4\n\tKEYCTL_CLEAR                                = 0x7\n\tKEYCTL_DESCRIBE                             = 0x6\n\tKEYCTL_DH_COMPUTE                           = 0x17\n\tKEYCTL_GET_KEYRING_ID                       = 0x0\n\tKEYCTL_GET_PERSISTENT                       = 0x16\n\tKEYCTL_GET_SECURITY                         = 0x11\n\tKEYCTL_INSTANTIATE                          = 0xc\n\tKEYCTL_INSTANTIATE_IOV                      = 0x14\n\tKEYCTL_INVALIDATE                           = 0x15\n\tKEYCTL_JOIN_SESSION_KEYRING                 = 0x1\n\tKEYCTL_LINK                                 = 0x8\n\tKEYCTL_MOVE                                 = 0x1e\n\tKEYCTL_MOVE_EXCL                            = 0x1\n\tKEYCTL_NEGATE                               = 0xd\n\tKEYCTL_PKEY_DECRYPT                         = 0x1a\n\tKEYCTL_PKEY_ENCRYPT                         = 0x19\n\tKEYCTL_PKEY_QUERY                           = 0x18\n\tKEYCTL_PKEY_SIGN                            = 0x1b\n\tKEYCTL_PKEY_VERIFY                          = 0x1c\n\tKEYCTL_READ                                 = 0xb\n\tKEYCTL_REJECT                               = 0x13\n\tKEYCTL_RESTRICT_KEYRING                     = 0x1d\n\tKEYCTL_REVOKE                               = 0x3\n\tKEYCTL_SEARCH                               = 0xa\n\tKEYCTL_SESSION_TO_PARENT                    = 0x12\n\tKEYCTL_SETPERM                              = 0x5\n\tKEYCTL_SET_REQKEY_KEYRING                   = 0xe\n\tKEYCTL_SET_TIMEOUT                          = 0xf\n\tKEYCTL_SUPPORTS_DECRYPT                     = 0x2\n\tKEYCTL_SUPPORTS_ENCRYPT                     = 0x1\n\tKEYCTL_SUPPORTS_SIGN                        = 0x4\n\tKEYCTL_SUPPORTS_VERIFY                      = 0x8\n\tKEYCTL_UNLINK                               = 0x9\n\tKEYCTL_UPDATE                               = 0x2\n\tKEYCTL_WATCH_KEY                            = 0x20\n\tKEY_REQKEY_DEFL_DEFAULT                     = 0x0\n\tKEY_REQKEY_DEFL_GROUP_KEYRING               = 0x6\n\tKEY_REQKEY_DEFL_NO_CHANGE                   = -0x1\n\tKEY_REQKEY_DEFL_PROCESS_KEYRING             = 0x2\n\tKEY_REQKEY_DEFL_REQUESTOR_KEYRING           = 0x7\n\tKEY_REQKEY_DEFL_SESSION_KEYRING             = 0x3\n\tKEY_REQKEY_DEFL_THREAD_KEYRING              = 0x1\n\tKEY_REQKEY_DEFL_USER_KEYRING                = 0x4\n\tKEY_REQKEY_DEFL_USER_SESSION_KEYRING        = 0x5\n\tKEY_SPEC_GROUP_KEYRING                      = -0x6\n\tKEY_SPEC_PROCESS_KEYRING                    = -0x2\n\tKEY_SPEC_REQKEY_AUTH_KEY                    = -0x7\n\tKEY_SPEC_REQUESTOR_KEYRING                  = -0x8\n\tKEY_SPEC_SESSION_KEYRING                    = -0x3\n\tKEY_SPEC_THREAD_KEYRING                     = -0x1\n\tKEY_SPEC_USER_KEYRING                       = -0x4\n\tKEY_SPEC_USER_SESSION_KEYRING               = -0x5\n\tLANDLOCK_ACCESS_FS_EXECUTE                  = 0x1\n\tLANDLOCK_ACCESS_FS_MAKE_BLOCK               = 0x800\n\tLANDLOCK_ACCESS_FS_MAKE_CHAR                = 0x40\n\tLANDLOCK_ACCESS_FS_MAKE_DIR                 = 0x80\n\tLANDLOCK_ACCESS_FS_MAKE_FIFO                = 0x400\n\tLANDLOCK_ACCESS_FS_MAKE_REG                 = 0x100\n\tLANDLOCK_ACCESS_FS_MAKE_SOCK                = 0x200\n\tLANDLOCK_ACCESS_FS_MAKE_SYM                 = 0x1000\n\tLANDLOCK_ACCESS_FS_READ_DIR                 = 0x8\n\tLANDLOCK_ACCESS_FS_READ_FILE                = 0x4\n\tLANDLOCK_ACCESS_FS_REFER                    = 0x2000\n\tLANDLOCK_ACCESS_FS_REMOVE_DIR               = 0x10\n\tLANDLOCK_ACCESS_FS_REMOVE_FILE              = 0x20\n\tLANDLOCK_ACCESS_FS_TRUNCATE                 = 0x4000\n\tLANDLOCK_ACCESS_FS_WRITE_FILE               = 0x2\n\tLANDLOCK_ACCESS_NET_BIND_TCP                = 0x1\n\tLANDLOCK_ACCESS_NET_CONNECT_TCP             = 0x2\n\tLANDLOCK_CREATE_RULESET_VERSION             = 0x1\n\tLINUX_REBOOT_CMD_CAD_OFF                    = 0x0\n\tLINUX_REBOOT_CMD_CAD_ON                     = 0x89abcdef\n\tLINUX_REBOOT_CMD_HALT                       = 0xcdef0123\n\tLINUX_REBOOT_CMD_KEXEC                      = 0x45584543\n\tLINUX_REBOOT_CMD_POWER_OFF                  = 0x4321fedc\n\tLINUX_REBOOT_CMD_RESTART                    = 0x1234567\n\tLINUX_REBOOT_CMD_RESTART2                   = 0xa1b2c3d4\n\tLINUX_REBOOT_CMD_SW_SUSPEND                 = 0xd000fce2\n\tLINUX_REBOOT_MAGIC1                         = 0xfee1dead\n\tLINUX_REBOOT_MAGIC2                         = 0x28121969\n\tLOCK_EX                                     = 0x2\n\tLOCK_NB                                     = 0x4\n\tLOCK_SH                                     = 0x1\n\tLOCK_UN                                     = 0x8\n\tLOOP_CLR_FD                                 = 0x4c01\n\tLOOP_CONFIGURE                              = 0x4c0a\n\tLOOP_CTL_ADD                                = 0x4c80\n\tLOOP_CTL_GET_FREE                           = 0x4c82\n\tLOOP_CTL_REMOVE                             = 0x4c81\n\tLOOP_GET_STATUS                             = 0x4c03\n\tLOOP_GET_STATUS64                           = 0x4c05\n\tLOOP_SET_BLOCK_SIZE                         = 0x4c09\n\tLOOP_SET_CAPACITY                           = 0x4c07\n\tLOOP_SET_DIRECT_IO                          = 0x4c08\n\tLOOP_SET_FD                                 = 0x4c00\n\tLOOP_SET_STATUS                             = 0x4c02\n\tLOOP_SET_STATUS64                           = 0x4c04\n\tLOOP_SET_STATUS_CLEARABLE_FLAGS             = 0x4\n\tLOOP_SET_STATUS_SETTABLE_FLAGS              = 0xc\n\tLO_KEY_SIZE                                 = 0x20\n\tLO_NAME_SIZE                                = 0x40\n\tLWTUNNEL_IP6_MAX                            = 0x8\n\tLWTUNNEL_IP_MAX                             = 0x8\n\tLWTUNNEL_IP_OPTS_MAX                        = 0x3\n\tLWTUNNEL_IP_OPT_ERSPAN_MAX                  = 0x4\n\tLWTUNNEL_IP_OPT_GENEVE_MAX                  = 0x3\n\tLWTUNNEL_IP_OPT_VXLAN_MAX                   = 0x1\n\tMADV_COLD                                   = 0x14\n\tMADV_COLLAPSE                               = 0x19\n\tMADV_DODUMP                                 = 0x11\n\tMADV_DOFORK                                 = 0xb\n\tMADV_DONTDUMP                               = 0x10\n\tMADV_DONTFORK                               = 0xa\n\tMADV_DONTNEED                               = 0x4\n\tMADV_DONTNEED_LOCKED                        = 0x18\n\tMADV_FREE                                   = 0x8\n\tMADV_HUGEPAGE                               = 0xe\n\tMADV_HWPOISON                               = 0x64\n\tMADV_KEEPONFORK                             = 0x13\n\tMADV_MERGEABLE                              = 0xc\n\tMADV_NOHUGEPAGE                             = 0xf\n\tMADV_NORMAL                                 = 0x0\n\tMADV_PAGEOUT                                = 0x15\n\tMADV_POPULATE_READ                          = 0x16\n\tMADV_POPULATE_WRITE                         = 0x17\n\tMADV_RANDOM                                 = 0x1\n\tMADV_REMOVE                                 = 0x9\n\tMADV_SEQUENTIAL                             = 0x2\n\tMADV_UNMERGEABLE                            = 0xd\n\tMADV_WILLNEED                               = 0x3\n\tMADV_WIPEONFORK                             = 0x12\n\tMAP_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\tMEMGETREGIONINFO                            = 0xc0104d08\n\tMEMREADOOB64                                = 0xc0184d16\n\tMEMWRITE                                    = 0xc0304d18\n\tMEMWRITEOOB64                               = 0xc0184d15\n\tMFD_ALLOW_SEALING                           = 0x2\n\tMFD_CLOEXEC                                 = 0x1\n\tMFD_EXEC                                    = 0x10\n\tMFD_HUGETLB                                 = 0x4\n\tMFD_HUGE_16GB                               = 0x88000000\n\tMFD_HUGE_16MB                               = 0x60000000\n\tMFD_HUGE_1GB                                = 0x78000000\n\tMFD_HUGE_1MB                                = 0x50000000\n\tMFD_HUGE_256MB                              = 0x70000000\n\tMFD_HUGE_2GB                                = 0x7c000000\n\tMFD_HUGE_2MB                                = 0x54000000\n\tMFD_HUGE_32MB                               = 0x64000000\n\tMFD_HUGE_512KB                              = 0x4c000000\n\tMFD_HUGE_512MB                              = 0x74000000\n\tMFD_HUGE_64KB                               = 0x40000000\n\tMFD_HUGE_8MB                                = 0x5c000000\n\tMFD_HUGE_MASK                               = 0x3f\n\tMFD_HUGE_SHIFT                              = 0x1a\n\tMFD_NOEXEC_SEAL                             = 0x8\n\tMINIX2_SUPER_MAGIC                          = 0x2468\n\tMINIX2_SUPER_MAGIC2                         = 0x2478\n\tMINIX3_SUPER_MAGIC                          = 0x4d5a\n\tMINIX_SUPER_MAGIC                           = 0x137f\n\tMINIX_SUPER_MAGIC2                          = 0x138f\n\tMNT_DETACH                                  = 0x2\n\tMNT_EXPIRE                                  = 0x4\n\tMNT_FORCE                                   = 0x1\n\tMODULE_INIT_COMPRESSED_FILE                 = 0x4\n\tMODULE_INIT_IGNORE_MODVERSIONS              = 0x1\n\tMODULE_INIT_IGNORE_VERMAGIC                 = 0x2\n\tMOUNT_ATTR_IDMAP                            = 0x100000\n\tMOUNT_ATTR_NOATIME                          = 0x10\n\tMOUNT_ATTR_NODEV                            = 0x4\n\tMOUNT_ATTR_NODIRATIME                       = 0x80\n\tMOUNT_ATTR_NOEXEC                           = 0x8\n\tMOUNT_ATTR_NOSUID                           = 0x2\n\tMOUNT_ATTR_NOSYMFOLLOW                      = 0x200000\n\tMOUNT_ATTR_RDONLY                           = 0x1\n\tMOUNT_ATTR_RELATIME                         = 0x0\n\tMOUNT_ATTR_SIZE_VER0                        = 0x20\n\tMOUNT_ATTR_STRICTATIME                      = 0x20\n\tMOUNT_ATTR__ATIME                           = 0x70\n\tMREMAP_DONTUNMAP                            = 0x4\n\tMREMAP_FIXED                                = 0x2\n\tMREMAP_MAYMOVE                              = 0x1\n\tMSDOS_SUPER_MAGIC                           = 0x4d44\n\tMSG_BATCH                                   = 0x40000\n\tMSG_CMSG_CLOEXEC                            = 0x40000000\n\tMSG_CONFIRM                                 = 0x800\n\tMSG_CTRUNC                                  = 0x8\n\tMSG_DONTROUTE                               = 0x4\n\tMSG_DONTWAIT                                = 0x40\n\tMSG_EOR                                     = 0x80\n\tMSG_ERRQUEUE                                = 0x2000\n\tMSG_FASTOPEN                                = 0x20000000\n\tMSG_FIN                                     = 0x200\n\tMSG_MORE                                    = 0x8000\n\tMSG_NOSIGNAL                                = 0x4000\n\tMSG_OOB                                     = 0x1\n\tMSG_PEEK                                    = 0x2\n\tMSG_PROXY                                   = 0x10\n\tMSG_RST                                     = 0x1000\n\tMSG_SYN                                     = 0x400\n\tMSG_TRUNC                                   = 0x20\n\tMSG_TRYHARD                                 = 0x4\n\tMSG_WAITALL                                 = 0x100\n\tMSG_WAITFORONE                              = 0x10000\n\tMSG_ZEROCOPY                                = 0x4000000\n\tMS_ACTIVE                                   = 0x40000000\n\tMS_ASYNC                                    = 0x1\n\tMS_BIND                                     = 0x1000\n\tMS_BORN                                     = 0x20000000\n\tMS_DIRSYNC                                  = 0x80\n\tMS_INVALIDATE                               = 0x2\n\tMS_I_VERSION                                = 0x800000\n\tMS_KERNMOUNT                                = 0x400000\n\tMS_LAZYTIME                                 = 0x2000000\n\tMS_MANDLOCK                                 = 0x40\n\tMS_MGC_MSK                                  = 0xffff0000\n\tMS_MGC_VAL                                  = 0xc0ed0000\n\tMS_MOVE                                     = 0x2000\n\tMS_NOATIME                                  = 0x400\n\tMS_NODEV                                    = 0x4\n\tMS_NODIRATIME                               = 0x800\n\tMS_NOEXEC                                   = 0x8\n\tMS_NOREMOTELOCK                             = 0x8000000\n\tMS_NOSEC                                    = 0x10000000\n\tMS_NOSUID                                   = 0x2\n\tMS_NOSYMFOLLOW                              = 0x100\n\tMS_NOUSER                                   = -0x80000000\n\tMS_POSIXACL                                 = 0x10000\n\tMS_PRIVATE                                  = 0x40000\n\tMS_RDONLY                                   = 0x1\n\tMS_REC                                      = 0x4000\n\tMS_RELATIME                                 = 0x200000\n\tMS_REMOUNT                                  = 0x20\n\tMS_RMT_MASK                                 = 0x2800051\n\tMS_SHARED                                   = 0x100000\n\tMS_SILENT                                   = 0x8000\n\tMS_SLAVE                                    = 0x80000\n\tMS_STRICTATIME                              = 0x1000000\n\tMS_SUBMOUNT                                 = 0x4000000\n\tMS_SYNC                                     = 0x4\n\tMS_SYNCHRONOUS                              = 0x10\n\tMS_UNBINDABLE                               = 0x20000\n\tMS_VERBOSE                                  = 0x8000\n\tMTD_ABSENT                                  = 0x0\n\tMTD_BIT_WRITEABLE                           = 0x800\n\tMTD_CAP_NANDFLASH                           = 0x400\n\tMTD_CAP_NORFLASH                            = 0xc00\n\tMTD_CAP_NVRAM                               = 0x1c00\n\tMTD_CAP_RAM                                 = 0x1c00\n\tMTD_CAP_ROM                                 = 0x0\n\tMTD_DATAFLASH                               = 0x6\n\tMTD_INODE_FS_MAGIC                          = 0x11307854\n\tMTD_MAX_ECCPOS_ENTRIES                      = 0x40\n\tMTD_MAX_OOBFREE_ENTRIES                     = 0x8\n\tMTD_MLCNANDFLASH                            = 0x8\n\tMTD_NANDECC_AUTOPLACE                       = 0x2\n\tMTD_NANDECC_AUTOPL_USR                      = 0x4\n\tMTD_NANDECC_OFF                             = 0x0\n\tMTD_NANDECC_PLACE                           = 0x1\n\tMTD_NANDECC_PLACEONLY                       = 0x3\n\tMTD_NANDFLASH                               = 0x4\n\tMTD_NORFLASH                                = 0x3\n\tMTD_NO_ERASE                                = 0x1000\n\tMTD_OTP_FACTORY                             = 0x1\n\tMTD_OTP_OFF                                 = 0x0\n\tMTD_OTP_USER                                = 0x2\n\tMTD_POWERUP_LOCK                            = 0x2000\n\tMTD_RAM                                     = 0x1\n\tMTD_ROM                                     = 0x2\n\tMTD_SLC_ON_MLC_EMULATION                    = 0x4000\n\tMTD_UBIVOLUME                               = 0x7\n\tMTD_WRITEABLE                               = 0x400\n\tNAME_MAX                                    = 0xff\n\tNCP_SUPER_MAGIC                             = 0x564c\n\tNETLINK_ADD_MEMBERSHIP                      = 0x1\n\tNETLINK_AUDIT                               = 0x9\n\tNETLINK_BROADCAST_ERROR                     = 0x4\n\tNETLINK_CAP_ACK                             = 0xa\n\tNETLINK_CONNECTOR                           = 0xb\n\tNETLINK_CRYPTO                              = 0x15\n\tNETLINK_DNRTMSG                             = 0xe\n\tNETLINK_DROP_MEMBERSHIP                     = 0x2\n\tNETLINK_ECRYPTFS                            = 0x13\n\tNETLINK_EXT_ACK                             = 0xb\n\tNETLINK_FIB_LOOKUP                          = 0xa\n\tNETLINK_FIREWALL                            = 0x3\n\tNETLINK_GENERIC                             = 0x10\n\tNETLINK_GET_STRICT_CHK                      = 0xc\n\tNETLINK_INET_DIAG                           = 0x4\n\tNETLINK_IP6_FW                              = 0xd\n\tNETLINK_ISCSI                               = 0x8\n\tNETLINK_KOBJECT_UEVENT                      = 0xf\n\tNETLINK_LISTEN_ALL_NSID                     = 0x8\n\tNETLINK_LIST_MEMBERSHIPS                    = 0x9\n\tNETLINK_NETFILTER                           = 0xc\n\tNETLINK_NFLOG                               = 0x5\n\tNETLINK_NO_ENOBUFS                          = 0x5\n\tNETLINK_PKTINFO                             = 0x3\n\tNETLINK_RDMA                                = 0x14\n\tNETLINK_ROUTE                               = 0x0\n\tNETLINK_RX_RING                             = 0x6\n\tNETLINK_SCSITRANSPORT                       = 0x12\n\tNETLINK_SELINUX                             = 0x7\n\tNETLINK_SMC                                 = 0x16\n\tNETLINK_SOCK_DIAG                           = 0x4\n\tNETLINK_TX_RING                             = 0x7\n\tNETLINK_UNUSED                              = 0x1\n\tNETLINK_USERSOCK                            = 0x2\n\tNETLINK_XFRM                                = 0x6\n\tNETNSA_MAX                                  = 0x5\n\tNETNSA_NSID_NOT_ASSIGNED                    = -0x1\n\tNFC_ATR_REQ_GB_MAXSIZE                      = 0x30\n\tNFC_ATR_REQ_MAXSIZE                         = 0x40\n\tNFC_ATR_RES_GB_MAXSIZE                      = 0x2f\n\tNFC_ATR_RES_MAXSIZE                         = 0x40\n\tNFC_COMM_ACTIVE                             = 0x0\n\tNFC_COMM_PASSIVE                            = 0x1\n\tNFC_DEVICE_NAME_MAXSIZE                     = 0x8\n\tNFC_DIRECTION_RX                            = 0x0\n\tNFC_DIRECTION_TX                            = 0x1\n\tNFC_FIRMWARE_NAME_MAXSIZE                   = 0x20\n\tNFC_GB_MAXSIZE                              = 0x30\n\tNFC_GENL_MCAST_EVENT_NAME                   = \"events\"\n\tNFC_GENL_NAME                               = \"nfc\"\n\tNFC_GENL_VERSION                            = 0x1\n\tNFC_HEADER_SIZE                             = 0x1\n\tNFC_ISO15693_UID_MAXSIZE                    = 0x8\n\tNFC_LLCP_MAX_SERVICE_NAME                   = 0x3f\n\tNFC_LLCP_MIUX                               = 0x1\n\tNFC_LLCP_REMOTE_LTO                         = 0x3\n\tNFC_LLCP_REMOTE_MIU                         = 0x2\n\tNFC_LLCP_REMOTE_RW                          = 0x4\n\tNFC_LLCP_RW                                 = 0x0\n\tNFC_NFCID1_MAXSIZE                          = 0xa\n\tNFC_NFCID2_MAXSIZE                          = 0x8\n\tNFC_NFCID3_MAXSIZE                          = 0xa\n\tNFC_PROTO_FELICA                            = 0x3\n\tNFC_PROTO_FELICA_MASK                       = 0x8\n\tNFC_PROTO_ISO14443                          = 0x4\n\tNFC_PROTO_ISO14443_B                        = 0x6\n\tNFC_PROTO_ISO14443_B_MASK                   = 0x40\n\tNFC_PROTO_ISO14443_MASK                     = 0x10\n\tNFC_PROTO_ISO15693                          = 0x7\n\tNFC_PROTO_ISO15693_MASK                     = 0x80\n\tNFC_PROTO_JEWEL                             = 0x1\n\tNFC_PROTO_JEWEL_MASK                        = 0x2\n\tNFC_PROTO_MAX                               = 0x8\n\tNFC_PROTO_MIFARE                            = 0x2\n\tNFC_PROTO_MIFARE_MASK                       = 0x4\n\tNFC_PROTO_NFC_DEP                           = 0x5\n\tNFC_PROTO_NFC_DEP_MASK                      = 0x20\n\tNFC_RAW_HEADER_SIZE                         = 0x2\n\tNFC_RF_INITIATOR                            = 0x0\n\tNFC_RF_NONE                                 = 0x2\n\tNFC_RF_TARGET                               = 0x1\n\tNFC_SENSB_RES_MAXSIZE                       = 0xc\n\tNFC_SENSF_RES_MAXSIZE                       = 0x12\n\tNFC_SE_DISABLED                             = 0x0\n\tNFC_SE_EMBEDDED                             = 0x2\n\tNFC_SE_ENABLED                              = 0x1\n\tNFC_SE_UICC                                 = 0x1\n\tNFC_SOCKPROTO_LLCP                          = 0x1\n\tNFC_SOCKPROTO_MAX                           = 0x2\n\tNFC_SOCKPROTO_RAW                           = 0x0\n\tNFNETLINK_V0                                = 0x0\n\tNFNLGRP_ACCT_QUOTA                          = 0x8\n\tNFNLGRP_CONNTRACK_DESTROY                   = 0x3\n\tNFNLGRP_CONNTRACK_EXP_DESTROY               = 0x6\n\tNFNLGRP_CONNTRACK_EXP_NEW                   = 0x4\n\tNFNLGRP_CONNTRACK_EXP_UPDATE                = 0x5\n\tNFNLGRP_CONNTRACK_NEW                       = 0x1\n\tNFNLGRP_CONNTRACK_UPDATE                    = 0x2\n\tNFNLGRP_MAX                                 = 0x9\n\tNFNLGRP_NFTABLES                            = 0x7\n\tNFNLGRP_NFTRACE                             = 0x9\n\tNFNLGRP_NONE                                = 0x0\n\tNFNL_BATCH_MAX                              = 0x1\n\tNFNL_MSG_BATCH_BEGIN                        = 0x10\n\tNFNL_MSG_BATCH_END                          = 0x11\n\tNFNL_NFA_NEST                               = 0x8000\n\tNFNL_SUBSYS_ACCT                            = 0x7\n\tNFNL_SUBSYS_COUNT                           = 0xd\n\tNFNL_SUBSYS_CTHELPER                        = 0x9\n\tNFNL_SUBSYS_CTNETLINK                       = 0x1\n\tNFNL_SUBSYS_CTNETLINK_EXP                   = 0x2\n\tNFNL_SUBSYS_CTNETLINK_TIMEOUT               = 0x8\n\tNFNL_SUBSYS_HOOK                            = 0xc\n\tNFNL_SUBSYS_IPSET                           = 0x6\n\tNFNL_SUBSYS_NFTABLES                        = 0xa\n\tNFNL_SUBSYS_NFT_COMPAT                      = 0xb\n\tNFNL_SUBSYS_NONE                            = 0x0\n\tNFNL_SUBSYS_OSF                             = 0x5\n\tNFNL_SUBSYS_QUEUE                           = 0x3\n\tNFNL_SUBSYS_ULOG                            = 0x4\n\tNFS_SUPER_MAGIC                             = 0x6969\n\tNFT_CHAIN_FLAGS                             = 0x7\n\tNFT_CHAIN_MAXNAMELEN                        = 0x100\n\tNFT_CT_MAX                                  = 0x17\n\tNFT_DATA_RESERVED_MASK                      = 0xffffff00\n\tNFT_DATA_VALUE_MAXLEN                       = 0x40\n\tNFT_EXTHDR_OP_MAX                           = 0x4\n\tNFT_FIB_RESULT_MAX                          = 0x3\n\tNFT_INNER_MASK                              = 0xf\n\tNFT_LOGLEVEL_MAX                            = 0x8\n\tNFT_NAME_MAXLEN                             = 0x100\n\tNFT_NG_MAX                                  = 0x1\n\tNFT_OBJECT_CONNLIMIT                        = 0x5\n\tNFT_OBJECT_COUNTER                          = 0x1\n\tNFT_OBJECT_CT_EXPECT                        = 0x9\n\tNFT_OBJECT_CT_HELPER                        = 0x3\n\tNFT_OBJECT_CT_TIMEOUT                       = 0x7\n\tNFT_OBJECT_LIMIT                            = 0x4\n\tNFT_OBJECT_MAX                              = 0xa\n\tNFT_OBJECT_QUOTA                            = 0x2\n\tNFT_OBJECT_SECMARK                          = 0x8\n\tNFT_OBJECT_SYNPROXY                         = 0xa\n\tNFT_OBJECT_TUNNEL                           = 0x6\n\tNFT_OBJECT_UNSPEC                           = 0x0\n\tNFT_OBJ_MAXNAMELEN                          = 0x100\n\tNFT_OSF_MAXGENRELEN                         = 0x10\n\tNFT_QUEUE_FLAG_BYPASS                       = 0x1\n\tNFT_QUEUE_FLAG_CPU_FANOUT                   = 0x2\n\tNFT_QUEUE_FLAG_MASK                         = 0x3\n\tNFT_REG32_COUNT                             = 0x10\n\tNFT_REG32_SIZE                              = 0x4\n\tNFT_REG_MAX                                 = 0x4\n\tNFT_REG_SIZE                                = 0x10\n\tNFT_REJECT_ICMPX_MAX                        = 0x3\n\tNFT_RT_MAX                                  = 0x4\n\tNFT_SECMARK_CTX_MAXLEN                      = 0x100\n\tNFT_SET_MAXNAMELEN                          = 0x100\n\tNFT_SOCKET_MAX                              = 0x3\n\tNFT_TABLE_F_MASK                            = 0x3\n\tNFT_TABLE_MAXNAMELEN                        = 0x100\n\tNFT_TRACETYPE_MAX                           = 0x3\n\tNFT_TUNNEL_F_MASK                           = 0x7\n\tNFT_TUNNEL_MAX                              = 0x1\n\tNFT_TUNNEL_MODE_MAX                         = 0x2\n\tNFT_USERDATA_MAXLEN                         = 0x100\n\tNFT_XFRM_KEY_MAX                            = 0x6\n\tNF_NAT_RANGE_MAP_IPS                        = 0x1\n\tNF_NAT_RANGE_MASK                           = 0x7f\n\tNF_NAT_RANGE_NETMAP                         = 0x40\n\tNF_NAT_RANGE_PERSISTENT                     = 0x8\n\tNF_NAT_RANGE_PROTO_OFFSET                   = 0x20\n\tNF_NAT_RANGE_PROTO_RANDOM                   = 0x4\n\tNF_NAT_RANGE_PROTO_RANDOM_ALL               = 0x14\n\tNF_NAT_RANGE_PROTO_RANDOM_FULLY             = 0x10\n\tNF_NAT_RANGE_PROTO_SPECIFIED                = 0x2\n\tNILFS_SUPER_MAGIC                           = 0x3434\n\tNL0                                         = 0x0\n\tNL1                                         = 0x100\n\tNLA_ALIGNTO                                 = 0x4\n\tNLA_F_NESTED                                = 0x8000\n\tNLA_F_NET_BYTEORDER                         = 0x4000\n\tNLA_HDRLEN                                  = 0x4\n\tNLMSG_ALIGNTO                               = 0x4\n\tNLMSG_DONE                                  = 0x3\n\tNLMSG_ERROR                                 = 0x2\n\tNLMSG_HDRLEN                                = 0x10\n\tNLMSG_MIN_TYPE                              = 0x10\n\tNLMSG_NOOP                                  = 0x1\n\tNLMSG_OVERRUN                               = 0x4\n\tNLM_F_ACK                                   = 0x4\n\tNLM_F_ACK_TLVS                              = 0x200\n\tNLM_F_APPEND                                = 0x800\n\tNLM_F_ATOMIC                                = 0x400\n\tNLM_F_BULK                                  = 0x200\n\tNLM_F_CAPPED                                = 0x100\n\tNLM_F_CREATE                                = 0x400\n\tNLM_F_DUMP                                  = 0x300\n\tNLM_F_DUMP_FILTERED                         = 0x20\n\tNLM_F_DUMP_INTR                             = 0x10\n\tNLM_F_ECHO                                  = 0x8\n\tNLM_F_EXCL                                  = 0x200\n\tNLM_F_MATCH                                 = 0x200\n\tNLM_F_MULTI                                 = 0x2\n\tNLM_F_NONREC                                = 0x100\n\tNLM_F_REPLACE                               = 0x100\n\tNLM_F_REQUEST                               = 0x1\n\tNLM_F_ROOT                                  = 0x100\n\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_IGNORE_OUTGOING          = 0x4000\n\tPACKET_FANOUT_FLAG_ROLLOVER                 = 0x1000\n\tPACKET_FANOUT_FLAG_UNIQUEID                 = 0x2000\n\tPACKET_FANOUT_HASH                          = 0x0\n\tPACKET_FANOUT_LB                            = 0x1\n\tPACKET_FANOUT_QM                            = 0x5\n\tPACKET_FANOUT_RND                           = 0x4\n\tPACKET_FANOUT_ROLLOVER                      = 0x3\n\tPACKET_FASTROUTE                            = 0x6\n\tPACKET_HDRLEN                               = 0xb\n\tPACKET_HOST                                 = 0x0\n\tPACKET_IGNORE_OUTGOING                      = 0x17\n\tPACKET_KERNEL                               = 0x7\n\tPACKET_LOOPBACK                             = 0x5\n\tPACKET_LOSS                                 = 0xe\n\tPACKET_MR_ALLMULTI                          = 0x2\n\tPACKET_MR_MULTICAST                         = 0x0\n\tPACKET_MR_PROMISC                           = 0x1\n\tPACKET_MR_UNICAST                           = 0x3\n\tPACKET_MULTICAST                            = 0x2\n\tPACKET_ORIGDEV                              = 0x9\n\tPACKET_OTHERHOST                            = 0x3\n\tPACKET_OUTGOING                             = 0x4\n\tPACKET_QDISC_BYPASS                         = 0x14\n\tPACKET_RECV_OUTPUT                          = 0x3\n\tPACKET_RESERVE                              = 0xc\n\tPACKET_ROLLOVER_STATS                       = 0x15\n\tPACKET_RX_RING                              = 0x5\n\tPACKET_STATISTICS                           = 0x6\n\tPACKET_TIMESTAMP                            = 0x11\n\tPACKET_TX_HAS_OFF                           = 0x13\n\tPACKET_TX_RING                              = 0xd\n\tPACKET_TX_TIMESTAMP                         = 0x10\n\tPACKET_USER                                 = 0x6\n\tPACKET_VERSION                              = 0xa\n\tPACKET_VNET_HDR                             = 0xf\n\tPACKET_VNET_HDR_SZ                          = 0x18\n\tPARITY_CRC16_PR0                            = 0x2\n\tPARITY_CRC16_PR0_CCITT                      = 0x4\n\tPARITY_CRC16_PR1                            = 0x3\n\tPARITY_CRC16_PR1_CCITT                      = 0x5\n\tPARITY_CRC32_PR0_CCITT                      = 0x6\n\tPARITY_CRC32_PR1_CCITT                      = 0x7\n\tPARITY_DEFAULT                              = 0x0\n\tPARITY_NONE                                 = 0x1\n\tPARMRK                                      = 0x8\n\tPERF_ATTR_SIZE_VER0                         = 0x40\n\tPERF_ATTR_SIZE_VER1                         = 0x48\n\tPERF_ATTR_SIZE_VER2                         = 0x50\n\tPERF_ATTR_SIZE_VER3                         = 0x60\n\tPERF_ATTR_SIZE_VER4                         = 0x68\n\tPERF_ATTR_SIZE_VER5                         = 0x70\n\tPERF_ATTR_SIZE_VER6                         = 0x78\n\tPERF_ATTR_SIZE_VER7                         = 0x80\n\tPERF_ATTR_SIZE_VER8                         = 0x88\n\tPERF_AUX_FLAG_COLLISION                     = 0x8\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_CORESIGHT    = 0x0\n\tPERF_AUX_FLAG_CORESIGHT_FORMAT_RAW          = 0x100\n\tPERF_AUX_FLAG_OVERWRITE                     = 0x2\n\tPERF_AUX_FLAG_PARTIAL                       = 0x4\n\tPERF_AUX_FLAG_PMU_FORMAT_TYPE_MASK          = 0xff00\n\tPERF_AUX_FLAG_TRUNCATED                     = 0x1\n\tPERF_BR_ARM64_DEBUG_DATA                    = 0x7\n\tPERF_BR_ARM64_DEBUG_EXIT                    = 0x5\n\tPERF_BR_ARM64_DEBUG_HALT                    = 0x4\n\tPERF_BR_ARM64_DEBUG_INST                    = 0x6\n\tPERF_BR_ARM64_FIQ                           = 0x3\n\tPERF_FLAG_FD_CLOEXEC                        = 0x8\n\tPERF_FLAG_FD_NO_GROUP                       = 0x1\n\tPERF_FLAG_FD_OUTPUT                         = 0x2\n\tPERF_FLAG_PID_CGROUP                        = 0x4\n\tPERF_HW_EVENT_MASK                          = 0xffffffff\n\tPERF_MAX_CONTEXTS_PER_STACK                 = 0x8\n\tPERF_MAX_STACK_DEPTH                        = 0x7f\n\tPERF_MEM_BLK_ADDR                           = 0x4\n\tPERF_MEM_BLK_DATA                           = 0x2\n\tPERF_MEM_BLK_NA                             = 0x1\n\tPERF_MEM_BLK_SHIFT                          = 0x28\n\tPERF_MEM_HOPS_0                             = 0x1\n\tPERF_MEM_HOPS_1                             = 0x2\n\tPERF_MEM_HOPS_2                             = 0x3\n\tPERF_MEM_HOPS_3                             = 0x4\n\tPERF_MEM_HOPS_SHIFT                         = 0x2b\n\tPERF_MEM_LOCK_LOCKED                        = 0x2\n\tPERF_MEM_LOCK_NA                            = 0x1\n\tPERF_MEM_LOCK_SHIFT                         = 0x18\n\tPERF_MEM_LVLNUM_ANY_CACHE                   = 0xb\n\tPERF_MEM_LVLNUM_CXL                         = 0x9\n\tPERF_MEM_LVLNUM_IO                          = 0xa\n\tPERF_MEM_LVLNUM_L1                          = 0x1\n\tPERF_MEM_LVLNUM_L2                          = 0x2\n\tPERF_MEM_LVLNUM_L3                          = 0x3\n\tPERF_MEM_LVLNUM_L4                          = 0x4\n\tPERF_MEM_LVLNUM_LFB                         = 0xc\n\tPERF_MEM_LVLNUM_NA                          = 0xf\n\tPERF_MEM_LVLNUM_PMEM                        = 0xe\n\tPERF_MEM_LVLNUM_RAM                         = 0xd\n\tPERF_MEM_LVLNUM_SHIFT                       = 0x21\n\tPERF_MEM_LVLNUM_UNC                         = 0x8\n\tPERF_MEM_LVL_HIT                            = 0x2\n\tPERF_MEM_LVL_IO                             = 0x1000\n\tPERF_MEM_LVL_L1                             = 0x8\n\tPERF_MEM_LVL_L2                             = 0x20\n\tPERF_MEM_LVL_L3                             = 0x40\n\tPERF_MEM_LVL_LFB                            = 0x10\n\tPERF_MEM_LVL_LOC_RAM                        = 0x80\n\tPERF_MEM_LVL_MISS                           = 0x4\n\tPERF_MEM_LVL_NA                             = 0x1\n\tPERF_MEM_LVL_REM_CCE1                       = 0x400\n\tPERF_MEM_LVL_REM_CCE2                       = 0x800\n\tPERF_MEM_LVL_REM_RAM1                       = 0x100\n\tPERF_MEM_LVL_REM_RAM2                       = 0x200\n\tPERF_MEM_LVL_SHIFT                          = 0x5\n\tPERF_MEM_LVL_UNC                            = 0x2000\n\tPERF_MEM_OP_EXEC                            = 0x10\n\tPERF_MEM_OP_LOAD                            = 0x2\n\tPERF_MEM_OP_NA                              = 0x1\n\tPERF_MEM_OP_PFETCH                          = 0x8\n\tPERF_MEM_OP_SHIFT                           = 0x0\n\tPERF_MEM_OP_STORE                           = 0x4\n\tPERF_MEM_REMOTE_REMOTE                      = 0x1\n\tPERF_MEM_REMOTE_SHIFT                       = 0x25\n\tPERF_MEM_SNOOPX_FWD                         = 0x1\n\tPERF_MEM_SNOOPX_PEER                        = 0x2\n\tPERF_MEM_SNOOPX_SHIFT                       = 0x26\n\tPERF_MEM_SNOOP_HIT                          = 0x4\n\tPERF_MEM_SNOOP_HITM                         = 0x10\n\tPERF_MEM_SNOOP_MISS                         = 0x8\n\tPERF_MEM_SNOOP_NA                           = 0x1\n\tPERF_MEM_SNOOP_NONE                         = 0x2\n\tPERF_MEM_SNOOP_SHIFT                        = 0x13\n\tPERF_MEM_TLB_HIT                            = 0x2\n\tPERF_MEM_TLB_L1                             = 0x8\n\tPERF_MEM_TLB_L2                             = 0x10\n\tPERF_MEM_TLB_MISS                           = 0x4\n\tPERF_MEM_TLB_NA                             = 0x1\n\tPERF_MEM_TLB_OS                             = 0x40\n\tPERF_MEM_TLB_SHIFT                          = 0x1a\n\tPERF_MEM_TLB_WK                             = 0x20\n\tPERF_PMU_TYPE_SHIFT                         = 0x20\n\tPERF_RECORD_KSYMBOL_FLAGS_UNREGISTER        = 0x1\n\tPERF_RECORD_MISC_COMM_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_CPUMODE_MASK               = 0x7\n\tPERF_RECORD_MISC_CPUMODE_UNKNOWN            = 0x0\n\tPERF_RECORD_MISC_EXACT_IP                   = 0x4000\n\tPERF_RECORD_MISC_EXT_RESERVED               = 0x8000\n\tPERF_RECORD_MISC_FORK_EXEC                  = 0x2000\n\tPERF_RECORD_MISC_GUEST_KERNEL               = 0x4\n\tPERF_RECORD_MISC_GUEST_USER                 = 0x5\n\tPERF_RECORD_MISC_HYPERVISOR                 = 0x3\n\tPERF_RECORD_MISC_KERNEL                     = 0x1\n\tPERF_RECORD_MISC_MMAP_BUILD_ID              = 0x4000\n\tPERF_RECORD_MISC_MMAP_DATA                  = 0x2000\n\tPERF_RECORD_MISC_PROC_MAP_PARSE_TIMEOUT     = 0x1000\n\tPERF_RECORD_MISC_SWITCH_OUT                 = 0x2000\n\tPERF_RECORD_MISC_SWITCH_OUT_PREEMPT         = 0x4000\n\tPERF_RECORD_MISC_USER                       = 0x2\n\tPERF_SAMPLE_BRANCH_PLM_ALL                  = 0x7\n\tPERF_SAMPLE_WEIGHT_TYPE                     = 0x1004000\n\tPIPEFS_MAGIC                                = 0x50495045\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_AUXV                                 = 0x41555856\n\tPR_GET_CHILD_SUBREAPER                      = 0x25\n\tPR_GET_DUMPABLE                             = 0x3\n\tPR_GET_ENDIAN                               = 0x13\n\tPR_GET_FPEMU                                = 0x9\n\tPR_GET_FPEXC                                = 0xb\n\tPR_GET_FP_MODE                              = 0x2e\n\tPR_GET_IO_FLUSHER                           = 0x3a\n\tPR_GET_KEEPCAPS                             = 0x7\n\tPR_GET_MDWE                                 = 0x42\n\tPR_GET_MEMORY_MERGE                         = 0x44\n\tPR_GET_NAME                                 = 0x10\n\tPR_GET_NO_NEW_PRIVS                         = 0x27\n\tPR_GET_PDEATHSIG                            = 0x2\n\tPR_GET_SECCOMP                              = 0x15\n\tPR_GET_SECUREBITS                           = 0x1b\n\tPR_GET_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_MDWE_NO_INHERIT                          = 0x2\n\tPR_MDWE_REFUSE_EXEC_GAIN                    = 0x1\n\tPR_MPX_DISABLE_MANAGEMENT                   = 0x2c\n\tPR_MPX_ENABLE_MANAGEMENT                    = 0x2b\n\tPR_MTE_TAG_MASK                             = 0x7fff8\n\tPR_MTE_TAG_SHIFT                            = 0x3\n\tPR_MTE_TCF_ASYNC                            = 0x4\n\tPR_MTE_TCF_MASK                             = 0x6\n\tPR_MTE_TCF_NONE                             = 0x0\n\tPR_MTE_TCF_SHIFT                            = 0x1\n\tPR_MTE_TCF_SYNC                             = 0x2\n\tPR_PAC_APDAKEY                              = 0x4\n\tPR_PAC_APDBKEY                              = 0x8\n\tPR_PAC_APGAKEY                              = 0x10\n\tPR_PAC_APIAKEY                              = 0x1\n\tPR_PAC_APIBKEY                              = 0x2\n\tPR_PAC_GET_ENABLED_KEYS                     = 0x3d\n\tPR_PAC_RESET_KEYS                           = 0x36\n\tPR_PAC_SET_ENABLED_KEYS                     = 0x3c\n\tPR_RISCV_V_GET_CONTROL                      = 0x46\n\tPR_RISCV_V_SET_CONTROL                      = 0x45\n\tPR_RISCV_V_VSTATE_CTRL_CUR_MASK             = 0x3\n\tPR_RISCV_V_VSTATE_CTRL_DEFAULT              = 0x0\n\tPR_RISCV_V_VSTATE_CTRL_INHERIT              = 0x10\n\tPR_RISCV_V_VSTATE_CTRL_MASK                 = 0x1f\n\tPR_RISCV_V_VSTATE_CTRL_NEXT_MASK            = 0xc\n\tPR_RISCV_V_VSTATE_CTRL_OFF                  = 0x1\n\tPR_RISCV_V_VSTATE_CTRL_ON                   = 0x2\n\tPR_SCHED_CORE                               = 0x3e\n\tPR_SCHED_CORE_CREATE                        = 0x1\n\tPR_SCHED_CORE_GET                           = 0x0\n\tPR_SCHED_CORE_MAX                           = 0x4\n\tPR_SCHED_CORE_SCOPE_PROCESS_GROUP           = 0x2\n\tPR_SCHED_CORE_SCOPE_THREAD                  = 0x0\n\tPR_SCHED_CORE_SCOPE_THREAD_GROUP            = 0x1\n\tPR_SCHED_CORE_SHARE_FROM                    = 0x3\n\tPR_SCHED_CORE_SHARE_TO                      = 0x2\n\tPR_SET_CHILD_SUBREAPER                      = 0x24\n\tPR_SET_DUMPABLE                             = 0x4\n\tPR_SET_ENDIAN                               = 0x14\n\tPR_SET_FPEMU                                = 0xa\n\tPR_SET_FPEXC                                = 0xc\n\tPR_SET_FP_MODE                              = 0x2d\n\tPR_SET_IO_FLUSHER                           = 0x39\n\tPR_SET_KEEPCAPS                             = 0x8\n\tPR_SET_MDWE                                 = 0x41\n\tPR_SET_MEMORY_MERGE                         = 0x43\n\tPR_SET_MM                                   = 0x23\n\tPR_SET_MM_ARG_END                           = 0x9\n\tPR_SET_MM_ARG_START                         = 0x8\n\tPR_SET_MM_AUXV                              = 0xc\n\tPR_SET_MM_BRK                               = 0x7\n\tPR_SET_MM_END_CODE                          = 0x2\n\tPR_SET_MM_END_DATA                          = 0x4\n\tPR_SET_MM_ENV_END                           = 0xb\n\tPR_SET_MM_ENV_START                         = 0xa\n\tPR_SET_MM_EXE_FILE                          = 0xd\n\tPR_SET_MM_MAP                               = 0xe\n\tPR_SET_MM_MAP_SIZE                          = 0xf\n\tPR_SET_MM_START_BRK                         = 0x6\n\tPR_SET_MM_START_CODE                        = 0x1\n\tPR_SET_MM_START_DATA                        = 0x3\n\tPR_SET_MM_START_STACK                       = 0x5\n\tPR_SET_NAME                                 = 0xf\n\tPR_SET_NO_NEW_PRIVS                         = 0x26\n\tPR_SET_PDEATHSIG                            = 0x1\n\tPR_SET_PTRACER                              = 0x59616d61\n\tPR_SET_SECCOMP                              = 0x16\n\tPR_SET_SECUREBITS                           = 0x1c\n\tPR_SET_SPECULATION_CTRL                     = 0x35\n\tPR_SET_SYSCALL_USER_DISPATCH                = 0x3b\n\tPR_SET_TAGGED_ADDR_CTRL                     = 0x37\n\tPR_SET_THP_DISABLE                          = 0x29\n\tPR_SET_TIMERSLACK                           = 0x1d\n\tPR_SET_TIMING                               = 0xe\n\tPR_SET_TSC                                  = 0x1a\n\tPR_SET_UNALIGN                              = 0x6\n\tPR_SET_VMA                                  = 0x53564d41\n\tPR_SET_VMA_ANON_NAME                        = 0x0\n\tPR_SME_GET_VL                               = 0x40\n\tPR_SME_SET_VL                               = 0x3f\n\tPR_SME_SET_VL_ONEXEC                        = 0x40000\n\tPR_SME_VL_INHERIT                           = 0x20000\n\tPR_SME_VL_LEN_MASK                          = 0xffff\n\tPR_SPEC_DISABLE                             = 0x4\n\tPR_SPEC_DISABLE_NOEXEC                      = 0x10\n\tPR_SPEC_ENABLE                              = 0x2\n\tPR_SPEC_FORCE_DISABLE                       = 0x8\n\tPR_SPEC_INDIRECT_BRANCH                     = 0x1\n\tPR_SPEC_L1D_FLUSH                           = 0x2\n\tPR_SPEC_NOT_AFFECTED                        = 0x0\n\tPR_SPEC_PRCTL                               = 0x1\n\tPR_SPEC_STORE_BYPASS                        = 0x0\n\tPR_SVE_GET_VL                               = 0x33\n\tPR_SVE_SET_VL                               = 0x32\n\tPR_SVE_SET_VL_ONEXEC                        = 0x40000\n\tPR_SVE_VL_INHERIT                           = 0x20000\n\tPR_SVE_VL_LEN_MASK                          = 0xffff\n\tPR_SYS_DISPATCH_OFF                         = 0x0\n\tPR_SYS_DISPATCH_ON                          = 0x1\n\tPR_TAGGED_ADDR_ENABLE                       = 0x1\n\tPR_TASK_PERF_EVENTS_DISABLE                 = 0x1f\n\tPR_TASK_PERF_EVENTS_ENABLE                  = 0x20\n\tPR_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_RSEQ_CONFIGURATION               = 0x420f\n\tPTRACE_GET_SYSCALL_INFO                     = 0x420e\n\tPTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4211\n\tPTRACE_INTERRUPT                            = 0x4207\n\tPTRACE_KILL                                 = 0x8\n\tPTRACE_LISTEN                               = 0x4208\n\tPTRACE_O_EXITKILL                           = 0x100000\n\tPTRACE_O_MASK                               = 0x3000ff\n\tPTRACE_O_SUSPEND_SECCOMP                    = 0x200000\n\tPTRACE_O_TRACECLONE                         = 0x8\n\tPTRACE_O_TRACEEXEC                          = 0x10\n\tPTRACE_O_TRACEEXIT                          = 0x40\n\tPTRACE_O_TRACEFORK                          = 0x2\n\tPTRACE_O_TRACESECCOMP                       = 0x80\n\tPTRACE_O_TRACESYSGOOD                       = 0x1\n\tPTRACE_O_TRACEVFORK                         = 0x4\n\tPTRACE_O_TRACEVFORKDONE                     = 0x20\n\tPTRACE_PEEKDATA                             = 0x2\n\tPTRACE_PEEKSIGINFO                          = 0x4209\n\tPTRACE_PEEKSIGINFO_SHARED                   = 0x1\n\tPTRACE_PEEKTEXT                             = 0x1\n\tPTRACE_PEEKUSR                              = 0x3\n\tPTRACE_POKEDATA                             = 0x5\n\tPTRACE_POKETEXT                             = 0x4\n\tPTRACE_POKEUSR                              = 0x6\n\tPTRACE_SECCOMP_GET_FILTER                   = 0x420c\n\tPTRACE_SECCOMP_GET_METADATA                 = 0x420d\n\tPTRACE_SEIZE                                = 0x4206\n\tPTRACE_SETOPTIONS                           = 0x4200\n\tPTRACE_SETREGS                              = 0xd\n\tPTRACE_SETREGSET                            = 0x4205\n\tPTRACE_SETSIGINFO                           = 0x4203\n\tPTRACE_SETSIGMASK                           = 0x420b\n\tPTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG     = 0x4210\n\tPTRACE_SINGLESTEP                           = 0x9\n\tPTRACE_SYSCALL                              = 0x18\n\tPTRACE_SYSCALL_INFO_ENTRY                   = 0x1\n\tPTRACE_SYSCALL_INFO_EXIT                    = 0x2\n\tPTRACE_SYSCALL_INFO_NONE                    = 0x0\n\tPTRACE_SYSCALL_INFO_SECCOMP                 = 0x3\n\tPTRACE_TRACEME                              = 0x0\n\tP_ALL                                       = 0x0\n\tP_PGID                                      = 0x2\n\tP_PID                                       = 0x1\n\tP_PIDFD                                     = 0x3\n\tQNX4_SUPER_MAGIC                            = 0x2f\n\tQNX6_SUPER_MAGIC                            = 0x68191122\n\tRAMFS_MAGIC                                 = 0x858458f6\n\tRAW_PAYLOAD_DIGITAL                         = 0x3\n\tRAW_PAYLOAD_HCI                             = 0x2\n\tRAW_PAYLOAD_LLCP                            = 0x0\n\tRAW_PAYLOAD_NCI                             = 0x1\n\tRAW_PAYLOAD_PROPRIETARY                     = 0x4\n\tRDTGROUP_SUPER_MAGIC                        = 0x7655821\n\tREISERFS_SUPER_MAGIC                        = 0x52654973\n\tRENAME_EXCHANGE                             = 0x2\n\tRENAME_NOREPLACE                            = 0x1\n\tRENAME_WHITEOUT                             = 0x4\n\tRLIMIT_CORE                                 = 0x4\n\tRLIMIT_CPU                                  = 0x0\n\tRLIMIT_DATA                                 = 0x2\n\tRLIMIT_FSIZE                                = 0x1\n\tRLIMIT_LOCKS                                = 0xa\n\tRLIMIT_MSGQUEUE                             = 0xc\n\tRLIMIT_NICE                                 = 0xd\n\tRLIMIT_RTPRIO                               = 0xe\n\tRLIMIT_RTTIME                               = 0xf\n\tRLIMIT_SIGPENDING                           = 0xb\n\tRLIMIT_STACK                                = 0x3\n\tRLIM_INFINITY                               = 0xffffffffffffffff\n\tRTAX_ADVMSS                                 = 0x8\n\tRTAX_CC_ALGO                                = 0x10\n\tRTAX_CWND                                   = 0x7\n\tRTAX_FASTOPEN_NO_COOKIE                     = 0x11\n\tRTAX_FEATURES                               = 0xc\n\tRTAX_FEATURE_ALLFRAG                        = 0x8\n\tRTAX_FEATURE_ECN                            = 0x1\n\tRTAX_FEATURE_MASK                           = 0x1f\n\tRTAX_FEATURE_SACK                           = 0x2\n\tRTAX_FEATURE_TCP_USEC_TS                    = 0x10\n\tRTAX_FEATURE_TIMESTAMP                      = 0x4\n\tRTAX_HOPLIMIT                               = 0xa\n\tRTAX_INITCWND                               = 0xb\n\tRTAX_INITRWND                               = 0xe\n\tRTAX_LOCK                                   = 0x1\n\tRTAX_MAX                                    = 0x11\n\tRTAX_MTU                                    = 0x2\n\tRTAX_QUICKACK                               = 0xf\n\tRTAX_REORDERING                             = 0x9\n\tRTAX_RTO_MIN                                = 0xd\n\tRTAX_RTT                                    = 0x4\n\tRTAX_RTTVAR                                 = 0x5\n\tRTAX_SSTHRESH                               = 0x6\n\tRTAX_UNSPEC                                 = 0x0\n\tRTAX_WINDOW                                 = 0x3\n\tRTA_ALIGNTO                                 = 0x4\n\tRTA_MAX                                     = 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_BSM_DIRECT                              = 0x1\n\tRTC_BSM_DISABLED                            = 0x0\n\tRTC_BSM_LEVEL                               = 0x2\n\tRTC_BSM_STANDBY                             = 0x3\n\tRTC_FEATURE_ALARM                           = 0x0\n\tRTC_FEATURE_ALARM_RES_2S                    = 0x3\n\tRTC_FEATURE_ALARM_RES_MINUTE                = 0x1\n\tRTC_FEATURE_ALARM_WAKEUP_ONLY               = 0x7\n\tRTC_FEATURE_BACKUP_SWITCH_MODE              = 0x6\n\tRTC_FEATURE_CNT                             = 0x8\n\tRTC_FEATURE_CORRECTION                      = 0x5\n\tRTC_FEATURE_NEED_WEEK_DAY                   = 0x2\n\tRTC_FEATURE_UPDATE_INTERRUPT                = 0x4\n\tRTC_IRQF                                    = 0x80\n\tRTC_MAX_FREQ                                = 0x2000\n\tRTC_PARAM_BACKUP_SWITCH_MODE                = 0x2\n\tRTC_PARAM_CORRECTION                        = 0x1\n\tRTC_PARAM_FEATURES                          = 0x0\n\tRTC_PF                                      = 0x40\n\tRTC_UF                                      = 0x10\n\tRTF_ADDRCLASSMASK                           = 0xf8000000\n\tRTF_ADDRCONF                                = 0x40000\n\tRTF_ALLONLINK                               = 0x20000\n\tRTF_BROADCAST                               = 0x10000000\n\tRTF_CACHE                                   = 0x1000000\n\tRTF_DEFAULT                                 = 0x10000\n\tRTF_DYNAMIC                                 = 0x10\n\tRTF_FLOW                                    = 0x2000000\n\tRTF_GATEWAY                                 = 0x2\n\tRTF_HOST                                    = 0x4\n\tRTF_INTERFACE                               = 0x40000000\n\tRTF_IRTT                                    = 0x100\n\tRTF_LINKRT                                  = 0x100000\n\tRTF_LOCAL                                   = 0x80000000\n\tRTF_MODIFIED                                = 0x20\n\tRTF_MSS                                     = 0x40\n\tRTF_MTU                                     = 0x40\n\tRTF_MULTICAST                               = 0x20000000\n\tRTF_NAT                                     = 0x8000000\n\tRTF_NOFORWARD                               = 0x1000\n\tRTF_NONEXTHOP                               = 0x200000\n\tRTF_NOPMTUDISC                              = 0x4000\n\tRTF_POLICY                                  = 0x4000000\n\tRTF_REINSTATE                               = 0x8\n\tRTF_REJECT                                  = 0x200\n\tRTF_STATIC                                  = 0x400\n\tRTF_THROW                                   = 0x2000\n\tRTF_UP                                      = 0x1\n\tRTF_WINDOW                                  = 0x80\n\tRTF_XRESOLVE                                = 0x800\n\tRTMGRP_DECnet_IFADDR                        = 0x1000\n\tRTMGRP_DECnet_ROUTE                         = 0x4000\n\tRTMGRP_IPV4_IFADDR                          = 0x10\n\tRTMGRP_IPV4_MROUTE                          = 0x20\n\tRTMGRP_IPV4_ROUTE                           = 0x40\n\tRTMGRP_IPV4_RULE                            = 0x80\n\tRTMGRP_IPV6_IFADDR                          = 0x100\n\tRTMGRP_IPV6_IFINFO                          = 0x800\n\tRTMGRP_IPV6_MROUTE                          = 0x200\n\tRTMGRP_IPV6_PREFIX                          = 0x20000\n\tRTMGRP_IPV6_ROUTE                           = 0x400\n\tRTMGRP_LINK                                 = 0x1\n\tRTMGRP_NEIGH                                = 0x4\n\tRTMGRP_NOTIFY                               = 0x2\n\tRTMGRP_TC                                   = 0x8\n\tRTM_BASE                                    = 0x10\n\tRTM_DELACTION                               = 0x31\n\tRTM_DELADDR                                 = 0x15\n\tRTM_DELADDRLABEL                            = 0x49\n\tRTM_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_DELNEXTHOPBUCKET                        = 0x75\n\tRTM_DELNSID                                 = 0x59\n\tRTM_DELQDISC                                = 0x25\n\tRTM_DELROUTE                                = 0x19\n\tRTM_DELRULE                                 = 0x21\n\tRTM_DELTCLASS                               = 0x29\n\tRTM_DELTFILTER                              = 0x2d\n\tRTM_DELTUNNEL                               = 0x79\n\tRTM_DELVLAN                                 = 0x71\n\tRTM_F_CLONED                                = 0x200\n\tRTM_F_EQUALIZE                              = 0x400\n\tRTM_F_FIB_MATCH                             = 0x2000\n\tRTM_F_LOOKUP_TABLE                          = 0x1000\n\tRTM_F_NOTIFY                                = 0x100\n\tRTM_F_OFFLOAD                               = 0x4000\n\tRTM_F_OFFLOAD_FAILED                        = 0x20000000\n\tRTM_F_PREFIX                                = 0x800\n\tRTM_F_TRAP                                  = 0x8000\n\tRTM_GETACTION                               = 0x32\n\tRTM_GETADDR                                 = 0x16\n\tRTM_GETADDRLABEL                            = 0x4a\n\tRTM_GETANYCAST                              = 0x3e\n\tRTM_GETCHAIN                                = 0x66\n\tRTM_GETDCB                                  = 0x4e\n\tRTM_GETLINK                                 = 0x12\n\tRTM_GETLINKPROP                             = 0x6e\n\tRTM_GETMDB                                  = 0x56\n\tRTM_GETMULTICAST                            = 0x3a\n\tRTM_GETNEIGH                                = 0x1e\n\tRTM_GETNEIGHTBL                             = 0x42\n\tRTM_GETNETCONF                              = 0x52\n\tRTM_GETNEXTHOP                              = 0x6a\n\tRTM_GETNEXTHOPBUCKET                        = 0x76\n\tRTM_GETNSID                                 = 0x5a\n\tRTM_GETQDISC                                = 0x26\n\tRTM_GETROUTE                                = 0x1a\n\tRTM_GETRULE                                 = 0x22\n\tRTM_GETSTATS                                = 0x5e\n\tRTM_GETTCLASS                               = 0x2a\n\tRTM_GETTFILTER                              = 0x2e\n\tRTM_GETTUNNEL                               = 0x7a\n\tRTM_GETVLAN                                 = 0x72\n\tRTM_MAX                                     = 0x7b\n\tRTM_NEWACTION                               = 0x30\n\tRTM_NEWADDR                                 = 0x14\n\tRTM_NEWADDRLABEL                            = 0x48\n\tRTM_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_NEWNEXTHOPBUCKET                        = 0x74\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_NEWTUNNEL                               = 0x78\n\tRTM_NR_FAMILIES                             = 0x1b\n\tRTM_NR_MSGTYPES                             = 0x6c\n\tRTM_SETDCB                                  = 0x4f\n\tRTM_SETLINK                                 = 0x13\n\tRTM_SETNEIGHTBL                             = 0x43\n\tRTM_SETSTATS                                = 0x5f\n\tRTNH_ALIGNTO                                = 0x4\n\tRTNH_COMPARE_MASK                           = 0x59\n\tRTNH_F_DEAD                                 = 0x1\n\tRTNH_F_LINKDOWN                             = 0x10\n\tRTNH_F_OFFLOAD                              = 0x8\n\tRTNH_F_ONLINK                               = 0x4\n\tRTNH_F_PERVASIVE                            = 0x2\n\tRTNH_F_TRAP                                 = 0x40\n\tRTNH_F_UNRESOLVED                           = 0x20\n\tRTN_MAX                                     = 0xb\n\tRTPROT_BABEL                                = 0x2a\n\tRTPROT_BGP                                  = 0xba\n\tRTPROT_BIRD                                 = 0xc\n\tRTPROT_BOOT                                 = 0x3\n\tRTPROT_DHCP                                 = 0x10\n\tRTPROT_DNROUTED                             = 0xd\n\tRTPROT_EIGRP                                = 0xc0\n\tRTPROT_GATED                                = 0x8\n\tRTPROT_ISIS                                 = 0xbb\n\tRTPROT_KEEPALIVED                           = 0x12\n\tRTPROT_KERNEL                               = 0x2\n\tRTPROT_MROUTED                              = 0x11\n\tRTPROT_MRT                                  = 0xa\n\tRTPROT_NTK                                  = 0xf\n\tRTPROT_OPENR                                = 0x63\n\tRTPROT_OSPF                                 = 0xbc\n\tRTPROT_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\tSCHED_BATCH                                 = 0x3\n\tSCHED_DEADLINE                              = 0x6\n\tSCHED_FIFO                                  = 0x1\n\tSCHED_FLAG_ALL                              = 0x7f\n\tSCHED_FLAG_DL_OVERRUN                       = 0x4\n\tSCHED_FLAG_KEEP_ALL                         = 0x18\n\tSCHED_FLAG_KEEP_PARAMS                      = 0x10\n\tSCHED_FLAG_KEEP_POLICY                      = 0x8\n\tSCHED_FLAG_RECLAIM                          = 0x2\n\tSCHED_FLAG_RESET_ON_FORK                    = 0x1\n\tSCHED_FLAG_UTIL_CLAMP                       = 0x60\n\tSCHED_FLAG_UTIL_CLAMP_MAX                   = 0x40\n\tSCHED_FLAG_UTIL_CLAMP_MIN                   = 0x20\n\tSCHED_IDLE                                  = 0x5\n\tSCHED_NORMAL                                = 0x0\n\tSCHED_RESET_ON_FORK                         = 0x40000000\n\tSCHED_RR                                    = 0x2\n\tSCM_CREDENTIALS                             = 0x2\n\tSCM_RIGHTS                                  = 0x1\n\tSCM_TIMESTAMP                               = 0x1d\n\tSC_LOG_FLUSH                                = 0x100000\n\tSECCOMP_ADDFD_FLAG_SEND                     = 0x2\n\tSECCOMP_ADDFD_FLAG_SETFD                    = 0x1\n\tSECCOMP_FILTER_FLAG_LOG                     = 0x2\n\tSECCOMP_FILTER_FLAG_NEW_LISTENER            = 0x8\n\tSECCOMP_FILTER_FLAG_SPEC_ALLOW              = 0x4\n\tSECCOMP_FILTER_FLAG_TSYNC                   = 0x1\n\tSECCOMP_FILTER_FLAG_TSYNC_ESRCH             = 0x10\n\tSECCOMP_FILTER_FLAG_WAIT_KILLABLE_RECV      = 0x20\n\tSECCOMP_GET_ACTION_AVAIL                    = 0x2\n\tSECCOMP_GET_NOTIF_SIZES                     = 0x3\n\tSECCOMP_IOCTL_NOTIF_RECV                    = 0xc0502100\n\tSECCOMP_IOCTL_NOTIF_SEND                    = 0xc0182101\n\tSECCOMP_IOC_MAGIC                           = '!'\n\tSECCOMP_MODE_DISABLED                       = 0x0\n\tSECCOMP_MODE_FILTER                         = 0x2\n\tSECCOMP_MODE_STRICT                         = 0x1\n\tSECCOMP_RET_ACTION                          = 0x7fff0000\n\tSECCOMP_RET_ACTION_FULL                     = 0xffff0000\n\tSECCOMP_RET_ALLOW                           = 0x7fff0000\n\tSECCOMP_RET_DATA                            = 0xffff\n\tSECCOMP_RET_ERRNO                           = 0x50000\n\tSECCOMP_RET_KILL                            = 0x0\n\tSECCOMP_RET_KILL_PROCESS                    = 0x80000000\n\tSECCOMP_RET_KILL_THREAD                     = 0x0\n\tSECCOMP_RET_LOG                             = 0x7ffc0000\n\tSECCOMP_RET_TRACE                           = 0x7ff00000\n\tSECCOMP_RET_TRAP                            = 0x30000\n\tSECCOMP_RET_USER_NOTIF                      = 0x7fc00000\n\tSECCOMP_SET_MODE_FILTER                     = 0x1\n\tSECCOMP_SET_MODE_STRICT                     = 0x0\n\tSECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP          = 0x1\n\tSECCOMP_USER_NOTIF_FLAG_CONTINUE            = 0x1\n\tSECRETMEM_MAGIC                             = 0x5345434d\n\tSECURITYFS_MAGIC                            = 0x73636673\n\tSEEK_CUR                                    = 0x1\n\tSEEK_DATA                                   = 0x3\n\tSEEK_END                                    = 0x2\n\tSEEK_HOLE                                   = 0x4\n\tSEEK_MAX                                    = 0x4\n\tSEEK_SET                                    = 0x0\n\tSELINUX_MAGIC                               = 0xf97cff8c\n\tSHUT_RD                                     = 0x0\n\tSHUT_RDWR                                   = 0x2\n\tSHUT_WR                                     = 0x1\n\tSIOCADDDLCI                                 = 0x8980\n\tSIOCADDMULTI                                = 0x8931\n\tSIOCADDRT                                   = 0x890b\n\tSIOCBONDCHANGEACTIVE                        = 0x8995\n\tSIOCBONDENSLAVE                             = 0x8990\n\tSIOCBONDINFOQUERY                           = 0x8994\n\tSIOCBONDRELEASE                             = 0x8991\n\tSIOCBONDSETHWADDR                           = 0x8992\n\tSIOCBONDSLAVEINFOQUERY                      = 0x8993\n\tSIOCBRADDBR                                 = 0x89a0\n\tSIOCBRADDIF                                 = 0x89a2\n\tSIOCBRDELBR                                 = 0x89a1\n\tSIOCBRDELIF                                 = 0x89a3\n\tSIOCDARP                                    = 0x8953\n\tSIOCDELDLCI                                 = 0x8981\n\tSIOCDELMULTI                                = 0x8932\n\tSIOCDELRT                                   = 0x890c\n\tSIOCDEVPRIVATE                              = 0x89f0\n\tSIOCDIFADDR                                 = 0x8936\n\tSIOCDRARP                                   = 0x8960\n\tSIOCETHTOOL                                 = 0x8946\n\tSIOCGARP                                    = 0x8954\n\tSIOCGETLINKNAME                             = 0x89e0\n\tSIOCGETNODEID                               = 0x89e1\n\tSIOCGHWTSTAMP                               = 0x89b1\n\tSIOCGIFADDR                                 = 0x8915\n\tSIOCGIFBR                                   = 0x8940\n\tSIOCGIFBRDADDR                              = 0x8919\n\tSIOCGIFCONF                                 = 0x8912\n\tSIOCGIFCOUNT                                = 0x8938\n\tSIOCGIFDSTADDR                              = 0x8917\n\tSIOCGIFENCAP                                = 0x8925\n\tSIOCGIFFLAGS                                = 0x8913\n\tSIOCGIFHWADDR                               = 0x8927\n\tSIOCGIFINDEX                                = 0x8933\n\tSIOCGIFMAP                                  = 0x8970\n\tSIOCGIFMEM                                  = 0x891f\n\tSIOCGIFMETRIC                               = 0x891d\n\tSIOCGIFMTU                                  = 0x8921\n\tSIOCGIFNAME                                 = 0x8910\n\tSIOCGIFNETMASK                              = 0x891b\n\tSIOCGIFPFLAGS                               = 0x8935\n\tSIOCGIFSLAVE                                = 0x8929\n\tSIOCGIFTXQLEN                               = 0x8942\n\tSIOCGIFVLAN                                 = 0x8982\n\tSIOCGMIIPHY                                 = 0x8947\n\tSIOCGMIIREG                                 = 0x8948\n\tSIOCGPPPCSTATS                              = 0x89f2\n\tSIOCGPPPSTATS                               = 0x89f0\n\tSIOCGPPPVER                                 = 0x89f1\n\tSIOCGRARP                                   = 0x8961\n\tSIOCGSKNS                                   = 0x894c\n\tSIOCGSTAMP                                  = 0x8906\n\tSIOCGSTAMPNS                                = 0x8907\n\tSIOCGSTAMPNS_OLD                            = 0x8907\n\tSIOCGSTAMP_OLD                              = 0x8906\n\tSIOCKCMATTACH                               = 0x89e0\n\tSIOCKCMCLONE                                = 0x89e2\n\tSIOCKCMUNATTACH                             = 0x89e1\n\tSIOCOUTQNSD                                 = 0x894b\n\tSIOCPROTOPRIVATE                            = 0x89e0\n\tSIOCRTMSG                                   = 0x890d\n\tSIOCSARP                                    = 0x8955\n\tSIOCSHWTSTAMP                               = 0x89b0\n\tSIOCSIFADDR                                 = 0x8916\n\tSIOCSIFBR                                   = 0x8941\n\tSIOCSIFBRDADDR                              = 0x891a\n\tSIOCSIFDSTADDR                              = 0x8918\n\tSIOCSIFENCAP                                = 0x8926\n\tSIOCSIFFLAGS                                = 0x8914\n\tSIOCSIFHWADDR                               = 0x8924\n\tSIOCSIFHWBROADCAST                          = 0x8937\n\tSIOCSIFLINK                                 = 0x8911\n\tSIOCSIFMAP                                  = 0x8971\n\tSIOCSIFMEM                                  = 0x8920\n\tSIOCSIFMETRIC                               = 0x891e\n\tSIOCSIFMTU                                  = 0x8922\n\tSIOCSIFNAME                                 = 0x8923\n\tSIOCSIFNETMASK                              = 0x891c\n\tSIOCSIFPFLAGS                               = 0x8934\n\tSIOCSIFSLAVE                                = 0x8930\n\tSIOCSIFTXQLEN                               = 0x8943\n\tSIOCSIFVLAN                                 = 0x8983\n\tSIOCSMIIREG                                 = 0x8949\n\tSIOCSRARP                                   = 0x8962\n\tSIOCWANDEV                                  = 0x894a\n\tSMACK_MAGIC                                 = 0x43415d53\n\tSMART_AUTOSAVE                              = 0xd2\n\tSMART_AUTO_OFFLINE                          = 0xdb\n\tSMART_DISABLE                               = 0xd9\n\tSMART_ENABLE                                = 0xd8\n\tSMART_HCYL_PASS                             = 0xc2\n\tSMART_IMMEDIATE_OFFLINE                     = 0xd4\n\tSMART_LCYL_PASS                             = 0x4f\n\tSMART_READ_LOG_SECTOR                       = 0xd5\n\tSMART_READ_THRESHOLDS                       = 0xd1\n\tSMART_READ_VALUES                           = 0xd0\n\tSMART_SAVE                                  = 0xd3\n\tSMART_STATUS                                = 0xda\n\tSMART_WRITE_LOG_SECTOR                      = 0xd6\n\tSMART_WRITE_THRESHOLDS                      = 0xd7\n\tSMB2_SUPER_MAGIC                            = 0xfe534d42\n\tSMB_SUPER_MAGIC                             = 0x517b\n\tSOCKFS_MAGIC                                = 0x534f434b\n\tSOCK_BUF_LOCK_MASK                          = 0x3\n\tSOCK_DCCP                                   = 0x6\n\tSOCK_IOC_TYPE                               = 0x89\n\tSOCK_PACKET                                 = 0xa\n\tSOCK_RAW                                    = 0x3\n\tSOCK_RCVBUF_LOCK                            = 0x2\n\tSOCK_RDM                                    = 0x4\n\tSOCK_SEQPACKET                              = 0x5\n\tSOCK_SNDBUF_LOCK                            = 0x1\n\tSOCK_TXREHASH_DEFAULT                       = 0xff\n\tSOCK_TXREHASH_DISABLED                      = 0x0\n\tSOCK_TXREHASH_ENABLED                       = 0x1\n\tSOL_AAL                                     = 0x109\n\tSOL_ALG                                     = 0x117\n\tSOL_ATM                                     = 0x108\n\tSOL_CAIF                                    = 0x116\n\tSOL_CAN_BASE                                = 0x64\n\tSOL_CAN_RAW                                 = 0x65\n\tSOL_DCCP                                    = 0x10d\n\tSOL_DECNET                                  = 0x105\n\tSOL_ICMPV6                                  = 0x3a\n\tSOL_IP                                      = 0x0\n\tSOL_IPV6                                    = 0x29\n\tSOL_IRDA                                    = 0x10a\n\tSOL_IUCV                                    = 0x115\n\tSOL_KCM                                     = 0x119\n\tSOL_LLC                                     = 0x10c\n\tSOL_MCTP                                    = 0x11d\n\tSOL_MPTCP                                   = 0x11c\n\tSOL_NETBEUI                                 = 0x10b\n\tSOL_NETLINK                                 = 0x10e\n\tSOL_NFC                                     = 0x118\n\tSOL_PACKET                                  = 0x107\n\tSOL_PNPIPE                                  = 0x113\n\tSOL_PPPOL2TP                                = 0x111\n\tSOL_RAW                                     = 0xff\n\tSOL_RDS                                     = 0x114\n\tSOL_RXRPC                                   = 0x110\n\tSOL_SMC                                     = 0x11e\n\tSOL_TCP                                     = 0x6\n\tSOL_TIPC                                    = 0x10f\n\tSOL_TLS                                     = 0x11a\n\tSOL_UDP                                     = 0x11\n\tSOL_VSOCK                                   = 0x11f\n\tSOL_X25                                     = 0x106\n\tSOL_XDP                                     = 0x11b\n\tSOMAXCONN                                   = 0x1000\n\tSO_ATTACH_FILTER                            = 0x1a\n\tSO_DEBUG                                    = 0x1\n\tSO_DETACH_BPF                               = 0x1b\n\tSO_DETACH_FILTER                            = 0x1b\n\tSO_EE_CODE_TXTIME_INVALID_PARAM             = 0x1\n\tSO_EE_CODE_TXTIME_MISSED                    = 0x2\n\tSO_EE_CODE_ZEROCOPY_COPIED                  = 0x1\n\tSO_EE_ORIGIN_ICMP                           = 0x2\n\tSO_EE_ORIGIN_ICMP6                          = 0x3\n\tSO_EE_ORIGIN_LOCAL                          = 0x1\n\tSO_EE_ORIGIN_NONE                           = 0x0\n\tSO_EE_ORIGIN_TIMESTAMPING                   = 0x4\n\tSO_EE_ORIGIN_TXSTATUS                       = 0x4\n\tSO_EE_ORIGIN_TXTIME                         = 0x6\n\tSO_EE_ORIGIN_ZEROCOPY                       = 0x5\n\tSO_EE_RFC4884_FLAG_INVALID                  = 0x1\n\tSO_GET_FILTER                               = 0x1a\n\tSO_NO_CHECK                                 = 0xb\n\tSO_PEERNAME                                 = 0x1c\n\tSO_PRIORITY                                 = 0xc\n\tSO_TIMESTAMP                                = 0x1d\n\tSO_TIMESTAMP_OLD                            = 0x1d\n\tSO_VM_SOCKETS_BUFFER_MAX_SIZE               = 0x2\n\tSO_VM_SOCKETS_BUFFER_MIN_SIZE               = 0x1\n\tSO_VM_SOCKETS_BUFFER_SIZE                   = 0x0\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT               = 0x6\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_NEW           = 0x8\n\tSO_VM_SOCKETS_CONNECT_TIMEOUT_OLD           = 0x6\n\tSO_VM_SOCKETS_NONBLOCK_TXRX                 = 0x7\n\tSO_VM_SOCKETS_PEER_HOST_VM_ID               = 0x3\n\tSO_VM_SOCKETS_TRUSTED                       = 0x5\n\tSPLICE_F_GIFT                               = 0x8\n\tSPLICE_F_MORE                               = 0x4\n\tSPLICE_F_MOVE                               = 0x1\n\tSPLICE_F_NONBLOCK                           = 0x2\n\tSQUASHFS_MAGIC                              = 0x73717368\n\tSTACK_END_MAGIC                             = 0x57ac6e9d\n\tSTATX_ALL                                   = 0xfff\n\tSTATX_ATIME                                 = 0x20\n\tSTATX_ATTR_APPEND                           = 0x20\n\tSTATX_ATTR_AUTOMOUNT                        = 0x1000\n\tSTATX_ATTR_COMPRESSED                       = 0x4\n\tSTATX_ATTR_DAX                              = 0x200000\n\tSTATX_ATTR_ENCRYPTED                        = 0x800\n\tSTATX_ATTR_IMMUTABLE                        = 0x10\n\tSTATX_ATTR_MOUNT_ROOT                       = 0x2000\n\tSTATX_ATTR_NODUMP                           = 0x40\n\tSTATX_ATTR_VERITY                           = 0x100000\n\tSTATX_BASIC_STATS                           = 0x7ff\n\tSTATX_BLOCKS                                = 0x400\n\tSTATX_BTIME                                 = 0x800\n\tSTATX_CTIME                                 = 0x80\n\tSTATX_DIOALIGN                              = 0x2000\n\tSTATX_GID                                   = 0x10\n\tSTATX_INO                                   = 0x100\n\tSTATX_MNT_ID                                = 0x1000\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                           = 0xe\n\tTCIFLUSH                                    = 0x0\n\tTCIOFF                                      = 0x2\n\tTCIOFLUSH                                   = 0x2\n\tTCION                                       = 0x3\n\tTCOFLUSH                                    = 0x1\n\tTCOOFF                                      = 0x0\n\tTCOON                                       = 0x1\n\tTCPOPT_EOL                                  = 0x0\n\tTCPOPT_MAXSEG                               = 0x2\n\tTCPOPT_NOP                                  = 0x1\n\tTCPOPT_SACK                                 = 0x5\n\tTCPOPT_SACK_PERMITTED                       = 0x4\n\tTCPOPT_TIMESTAMP                            = 0x8\n\tTCPOPT_TSTAMP_HDR                           = 0x101080a\n\tTCPOPT_WINDOW                               = 0x3\n\tTCP_CC_INFO                                 = 0x1a\n\tTCP_CM_INQ                                  = 0x24\n\tTCP_CONGESTION                              = 0xd\n\tTCP_COOKIE_IN_ALWAYS                        = 0x1\n\tTCP_COOKIE_MAX                              = 0x10\n\tTCP_COOKIE_MIN                              = 0x8\n\tTCP_COOKIE_OUT_NEVER                        = 0x2\n\tTCP_COOKIE_PAIR_SIZE                        = 0x20\n\tTCP_COOKIE_TRANSACTIONS                     = 0xf\n\tTCP_CORK                                    = 0x3\n\tTCP_DEFER_ACCEPT                            = 0x9\n\tTCP_FASTOPEN                                = 0x17\n\tTCP_FASTOPEN_CONNECT                        = 0x1e\n\tTCP_FASTOPEN_KEY                            = 0x21\n\tTCP_FASTOPEN_NO_COOKIE                      = 0x22\n\tTCP_INFO                                    = 0xb\n\tTCP_INQ                                     = 0x24\n\tTCP_KEEPCNT                                 = 0x6\n\tTCP_KEEPIDLE                                = 0x4\n\tTCP_KEEPINTVL                               = 0x5\n\tTCP_LINGER2                                 = 0x8\n\tTCP_MAXSEG                                  = 0x2\n\tTCP_MAXWIN                                  = 0xffff\n\tTCP_MAX_WINSHIFT                            = 0xe\n\tTCP_MD5SIG                                  = 0xe\n\tTCP_MD5SIG_EXT                              = 0x20\n\tTCP_MD5SIG_FLAG_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_V4_FLOW                                 = 0x1\n\tTCP_V6_FLOW                                 = 0x5\n\tTCP_WINDOW_CLAMP                            = 0xa\n\tTCP_ZEROCOPY_RECEIVE                        = 0x23\n\tTFD_TIMER_ABSTIME                           = 0x1\n\tTFD_TIMER_CANCEL_ON_SET                     = 0x2\n\tTIMER_ABSTIME                               = 0x1\n\tTIOCM_DTR                                   = 0x2\n\tTIOCM_LE                                    = 0x1\n\tTIOCM_RTS                                   = 0x4\n\tTIOCPKT_DATA                                = 0x0\n\tTIOCPKT_DOSTOP                              = 0x20\n\tTIOCPKT_FLUSHREAD                           = 0x1\n\tTIOCPKT_FLUSHWRITE                          = 0x2\n\tTIOCPKT_IOCTL                               = 0x40\n\tTIOCPKT_NOSTOP                              = 0x10\n\tTIOCPKT_START                               = 0x8\n\tTIOCPKT_STOP                                = 0x4\n\tTIPC_ADDR_ID                                = 0x3\n\tTIPC_ADDR_MCAST                             = 0x1\n\tTIPC_ADDR_NAME                              = 0x2\n\tTIPC_ADDR_NAMESEQ                           = 0x1\n\tTIPC_AEAD_ALG_NAME                          = 0x20\n\tTIPC_AEAD_KEYLEN_MAX                        = 0x24\n\tTIPC_AEAD_KEYLEN_MIN                        = 0x14\n\tTIPC_AEAD_KEY_SIZE_MAX                      = 0x48\n\tTIPC_CFG_SRV                                = 0x0\n\tTIPC_CLUSTER_BITS                           = 0xc\n\tTIPC_CLUSTER_MASK                           = 0xfff000\n\tTIPC_CLUSTER_OFFSET                         = 0xc\n\tTIPC_CLUSTER_SIZE                           = 0xfff\n\tTIPC_CONN_SHUTDOWN                          = 0x5\n\tTIPC_CONN_TIMEOUT                           = 0x82\n\tTIPC_CRITICAL_IMPORTANCE                    = 0x3\n\tTIPC_DESTNAME                               = 0x3\n\tTIPC_DEST_DROPPABLE                         = 0x81\n\tTIPC_ERRINFO                                = 0x1\n\tTIPC_ERR_NO_NAME                            = 0x1\n\tTIPC_ERR_NO_NODE                            = 0x3\n\tTIPC_ERR_NO_PORT                            = 0x2\n\tTIPC_ERR_OVERLOAD                           = 0x4\n\tTIPC_GROUP_JOIN                             = 0x87\n\tTIPC_GROUP_LEAVE                            = 0x88\n\tTIPC_GROUP_LOOPBACK                         = 0x1\n\tTIPC_GROUP_MEMBER_EVTS                      = 0x2\n\tTIPC_HIGH_IMPORTANCE                        = 0x2\n\tTIPC_IMPORTANCE                             = 0x7f\n\tTIPC_LINK_STATE                             = 0x2\n\tTIPC_LOW_IMPORTANCE                         = 0x0\n\tTIPC_MAX_BEARER_NAME                        = 0x20\n\tTIPC_MAX_IF_NAME                            = 0x10\n\tTIPC_MAX_LINK_NAME                          = 0x44\n\tTIPC_MAX_MEDIA_NAME                         = 0x10\n\tTIPC_MAX_USER_MSG_SIZE                      = 0x101d0\n\tTIPC_MCAST_BROADCAST                        = 0x85\n\tTIPC_MCAST_REPLICAST                        = 0x86\n\tTIPC_MEDIUM_IMPORTANCE                      = 0x1\n\tTIPC_NODEID_LEN                             = 0x10\n\tTIPC_NODELAY                                = 0x8a\n\tTIPC_NODE_BITS                              = 0xc\n\tTIPC_NODE_MASK                              = 0xfff\n\tTIPC_NODE_OFFSET                            = 0x0\n\tTIPC_NODE_RECVQ_DEPTH                       = 0x83\n\tTIPC_NODE_SIZE                              = 0xfff\n\tTIPC_NODE_STATE                             = 0x0\n\tTIPC_OK                                     = 0x0\n\tTIPC_PUBLISHED                              = 0x1\n\tTIPC_REKEYING_NOW                           = 0xffffffff\n\tTIPC_RESERVED_TYPES                         = 0x40\n\tTIPC_RETDATA                                = 0x2\n\tTIPC_SERVICE_ADDR                           = 0x2\n\tTIPC_SERVICE_RANGE                          = 0x1\n\tTIPC_SOCKET_ADDR                            = 0x3\n\tTIPC_SOCK_RECVQ_DEPTH                       = 0x84\n\tTIPC_SOCK_RECVQ_USED                        = 0x89\n\tTIPC_SRC_DROPPABLE                          = 0x80\n\tTIPC_SUBSCR_TIMEOUT                         = 0x3\n\tTIPC_SUB_CANCEL                             = 0x4\n\tTIPC_SUB_PORTS                              = 0x1\n\tTIPC_SUB_SERVICE                            = 0x2\n\tTIPC_TOP_SRV                                = 0x1\n\tTIPC_WAIT_FOREVER                           = 0xffffffff\n\tTIPC_WITHDRAWN                              = 0x2\n\tTIPC_ZONE_BITS                              = 0x8\n\tTIPC_ZONE_CLUSTER_MASK                      = 0xfffff000\n\tTIPC_ZONE_MASK                              = 0xff000000\n\tTIPC_ZONE_OFFSET                            = 0x18\n\tTIPC_ZONE_SCOPE                             = 0x1\n\tTIPC_ZONE_SIZE                              = 0xff\n\tTMPFS_MAGIC                                 = 0x1021994\n\tTPACKET_ALIGNMENT                           = 0x10\n\tTPACKET_HDRLEN                              = 0x34\n\tTP_STATUS_AVAILABLE                         = 0x0\n\tTP_STATUS_BLK_TMO                           = 0x20\n\tTP_STATUS_COPY                              = 0x2\n\tTP_STATUS_CSUMNOTREADY                      = 0x8\n\tTP_STATUS_CSUM_VALID                        = 0x80\n\tTP_STATUS_GSO_TCP                           = 0x100\n\tTP_STATUS_KERNEL                            = 0x0\n\tTP_STATUS_LOSING                            = 0x4\n\tTP_STATUS_SENDING                           = 0x2\n\tTP_STATUS_SEND_REQUEST                      = 0x1\n\tTP_STATUS_TS_RAW_HARDWARE                   = 0x80000000\n\tTP_STATUS_TS_SOFTWARE                       = 0x20000000\n\tTP_STATUS_TS_SYS_HARDWARE                   = 0x40000000\n\tTP_STATUS_USER                              = 0x1\n\tTP_STATUS_VLAN_TPID_VALID                   = 0x40\n\tTP_STATUS_VLAN_VALID                        = 0x10\n\tTP_STATUS_WRONG_FORMAT                      = 0x4\n\tTRACEFS_MAGIC                               = 0x74726163\n\tTS_COMM_LEN                                 = 0x20\n\tUDF_SUPER_MAGIC                             = 0x15013346\n\tUDP_CORK                                    = 0x1\n\tUDP_ENCAP                                   = 0x64\n\tUDP_ENCAP_ESPINUDP                          = 0x2\n\tUDP_ENCAP_ESPINUDP_NON_IKE                  = 0x1\n\tUDP_ENCAP_GTP0                              = 0x4\n\tUDP_ENCAP_GTP1U                             = 0x5\n\tUDP_ENCAP_L2TPINUDP                         = 0x3\n\tUDP_GRO                                     = 0x68\n\tUDP_NO_CHECK6_RX                            = 0x66\n\tUDP_NO_CHECK6_TX                            = 0x65\n\tUDP_SEGMENT                                 = 0x67\n\tUDP_V4_FLOW                                 = 0x2\n\tUDP_V6_FLOW                                 = 0x6\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_FLAG_TO_HOST                         = 0x1\n\tVMADDR_PORT_ANY                             = 0xffffffff\n\tVM_SOCKETS_INVALID_VERSION                  = 0xffffffff\n\tVQUIT                                       = 0x1\n\tVT0                                         = 0x0\n\tWAKE_MAGIC                                  = 0x20\n\tWALL                                        = 0x40000000\n\tWCLONE                                      = 0x80000000\n\tWCONTINUED                                  = 0x8\n\tWDIOC_SETPRETIMEOUT                         = 0xc0045708\n\tWDIOC_SETTIMEOUT                            = 0xc0045706\n\tWDIOF_ALARMONLY                             = 0x400\n\tWDIOF_CARDRESET                             = 0x20\n\tWDIOF_EXTERN1                               = 0x4\n\tWDIOF_EXTERN2                               = 0x8\n\tWDIOF_FANFAULT                              = 0x2\n\tWDIOF_KEEPALIVEPING                         = 0x8000\n\tWDIOF_MAGICCLOSE                            = 0x100\n\tWDIOF_OVERHEAT                              = 0x1\n\tWDIOF_POWEROVER                             = 0x40\n\tWDIOF_POWERUNDER                            = 0x10\n\tWDIOF_PRETIMEOUT                            = 0x200\n\tWDIOF_SETTIMEOUT                            = 0x80\n\tWDIOF_UNKNOWN                               = -0x1\n\tWDIOS_DISABLECARD                           = 0x1\n\tWDIOS_ENABLECARD                            = 0x2\n\tWDIOS_TEMPPANIC                             = 0x4\n\tWDIOS_UNKNOWN                               = -0x1\n\tWEXITED                                     = 0x4\n\tWGALLOWEDIP_A_MAX                           = 0x3\n\tWGDEVICE_A_MAX                              = 0x8\n\tWGPEER_A_MAX                                = 0xa\n\tWG_CMD_MAX                                  = 0x1\n\tWG_GENL_NAME                                = \"wireguard\"\n\tWG_GENL_VERSION                             = 0x1\n\tWG_KEY_LEN                                  = 0x20\n\tWIN_ACKMEDIACHANGE                          = 0xdb\n\tWIN_CHECKPOWERMODE1                         = 0xe5\n\tWIN_CHECKPOWERMODE2                         = 0x98\n\tWIN_DEVICE_RESET                            = 0x8\n\tWIN_DIAGNOSE                                = 0x90\n\tWIN_DOORLOCK                                = 0xde\n\tWIN_DOORUNLOCK                              = 0xdf\n\tWIN_DOWNLOAD_MICROCODE                      = 0x92\n\tWIN_FLUSH_CACHE                             = 0xe7\n\tWIN_FLUSH_CACHE_EXT                         = 0xea\n\tWIN_FORMAT                                  = 0x50\n\tWIN_GETMEDIASTATUS                          = 0xda\n\tWIN_IDENTIFY                                = 0xec\n\tWIN_IDENTIFY_DMA                            = 0xee\n\tWIN_IDLEIMMEDIATE                           = 0xe1\n\tWIN_INIT                                    = 0x60\n\tWIN_MEDIAEJECT                              = 0xed\n\tWIN_MULTREAD                                = 0xc4\n\tWIN_MULTREAD_EXT                            = 0x29\n\tWIN_MULTWRITE                               = 0xc5\n\tWIN_MULTWRITE_EXT                           = 0x39\n\tWIN_NOP                                     = 0x0\n\tWIN_PACKETCMD                               = 0xa0\n\tWIN_PIDENTIFY                               = 0xa1\n\tWIN_POSTBOOT                                = 0xdc\n\tWIN_PREBOOT                                 = 0xdd\n\tWIN_QUEUED_SERVICE                          = 0xa2\n\tWIN_READ                                    = 0x20\n\tWIN_READDMA                                 = 0xc8\n\tWIN_READDMA_EXT                             = 0x25\n\tWIN_READDMA_ONCE                            = 0xc9\n\tWIN_READDMA_QUEUED                          = 0xc7\n\tWIN_READDMA_QUEUED_EXT                      = 0x26\n\tWIN_READ_BUFFER                             = 0xe4\n\tWIN_READ_EXT                                = 0x24\n\tWIN_READ_LONG                               = 0x22\n\tWIN_READ_LONG_ONCE                          = 0x23\n\tWIN_READ_NATIVE_MAX                         = 0xf8\n\tWIN_READ_NATIVE_MAX_EXT                     = 0x27\n\tWIN_READ_ONCE                               = 0x21\n\tWIN_RECAL                                   = 0x10\n\tWIN_RESTORE                                 = 0x10\n\tWIN_SECURITY_DISABLE                        = 0xf6\n\tWIN_SECURITY_ERASE_PREPARE                  = 0xf3\n\tWIN_SECURITY_ERASE_UNIT                     = 0xf4\n\tWIN_SECURITY_FREEZE_LOCK                    = 0xf5\n\tWIN_SECURITY_SET_PASS                       = 0xf1\n\tWIN_SECURITY_UNLOCK                         = 0xf2\n\tWIN_SEEK                                    = 0x70\n\tWIN_SETFEATURES                             = 0xef\n\tWIN_SETIDLE1                                = 0xe3\n\tWIN_SETIDLE2                                = 0x97\n\tWIN_SETMULT                                 = 0xc6\n\tWIN_SET_MAX                                 = 0xf9\n\tWIN_SET_MAX_EXT                             = 0x37\n\tWIN_SLEEPNOW1                               = 0xe6\n\tWIN_SLEEPNOW2                               = 0x99\n\tWIN_SMART                                   = 0xb0\n\tWIN_SPECIFY                                 = 0x91\n\tWIN_SRST                                    = 0x8\n\tWIN_STANDBY                                 = 0xe2\n\tWIN_STANDBY2                                = 0x96\n\tWIN_STANDBYNOW1                             = 0xe0\n\tWIN_STANDBYNOW2                             = 0x94\n\tWIN_VERIFY                                  = 0x40\n\tWIN_VERIFY_EXT                              = 0x42\n\tWIN_VERIFY_ONCE                             = 0x41\n\tWIN_WRITE                                   = 0x30\n\tWIN_WRITEDMA                                = 0xca\n\tWIN_WRITEDMA_EXT                            = 0x35\n\tWIN_WRITEDMA_ONCE                           = 0xcb\n\tWIN_WRITEDMA_QUEUED                         = 0xcc\n\tWIN_WRITEDMA_QUEUED_EXT                     = 0x36\n\tWIN_WRITE_BUFFER                            = 0xe8\n\tWIN_WRITE_EXT                               = 0x34\n\tWIN_WRITE_LONG                              = 0x32\n\tWIN_WRITE_LONG_ONCE                         = 0x33\n\tWIN_WRITE_ONCE                              = 0x31\n\tWIN_WRITE_SAME                              = 0xe9\n\tWIN_WRITE_VERIFY                            = 0x3c\n\tWNOHANG                                     = 0x1\n\tWNOTHREAD                                   = 0x20000000\n\tWNOWAIT                                     = 0x1000000\n\tWSTOPPED                                    = 0x2\n\tWUNTRACED                                   = 0x2\n\tXATTR_CREATE                                = 0x1\n\tXATTR_REPLACE                               = 0x2\n\tXDP_COPY                                    = 0x2\n\tXDP_FLAGS_DRV_MODE                          = 0x4\n\tXDP_FLAGS_HW_MODE                           = 0x8\n\tXDP_FLAGS_MASK                              = 0x1f\n\tXDP_FLAGS_MODES                             = 0xe\n\tXDP_FLAGS_REPLACE                           = 0x10\n\tXDP_FLAGS_SKB_MODE                          = 0x2\n\tXDP_FLAGS_UPDATE_IF_NOEXIST                 = 0x1\n\tXDP_MMAP_OFFSETS                            = 0x1\n\tXDP_OPTIONS                                 = 0x8\n\tXDP_OPTIONS_ZEROCOPY                        = 0x1\n\tXDP_PACKET_HEADROOM                         = 0x100\n\tXDP_PGOFF_RX_RING                           = 0x0\n\tXDP_PGOFF_TX_RING                           = 0x80000000\n\tXDP_PKT_CONTD                               = 0x1\n\tXDP_RING_NEED_WAKEUP                        = 0x1\n\tXDP_RX_RING                                 = 0x2\n\tXDP_SHARED_UMEM                             = 0x1\n\tXDP_STATISTICS                              = 0x7\n\tXDP_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_USE_SG                                  = 0x10\n\tXDP_ZEROCOPY                                = 0x4\n\tXENFS_SUPER_MAGIC                           = 0xabba1974\n\tXFS_SUPER_MAGIC                             = 0x58465342\n\tZONEFS_MAGIC                                = 0x5a4f4653\n\t_HIDIOCGRAWNAME_LEN                         = 0x80\n\t_HIDIOCGRAWPHYS_LEN                         = 0x40\n\t_HIDIOCGRAWUNIQ_LEN                         = 0x40\n)\n\n// Errors\nconst (\n\tE2BIG       = syscall.Errno(0x7)\n\tEACCES      = syscall.Errno(0xd)\n\tEAGAIN      = syscall.Errno(0xb)\n\tEBADF       = syscall.Errno(0x9)\n\tEBUSY       = syscall.Errno(0x10)\n\tECHILD      = syscall.Errno(0xa)\n\tEDOM        = syscall.Errno(0x21)\n\tEEXIST      = syscall.Errno(0x11)\n\tEFAULT      = syscall.Errno(0xe)\n\tEFBIG       = syscall.Errno(0x1b)\n\tEINTR       = syscall.Errno(0x4)\n\tEINVAL      = syscall.Errno(0x16)\n\tEIO         = syscall.Errno(0x5)\n\tEISDIR      = syscall.Errno(0x15)\n\tEMFILE      = syscall.Errno(0x18)\n\tEMLINK      = syscall.Errno(0x1f)\n\tENFILE      = syscall.Errno(0x17)\n\tENODEV      = syscall.Errno(0x13)\n\tENOENT      = syscall.Errno(0x2)\n\tENOEXEC     = syscall.Errno(0x8)\n\tENOMEM      = syscall.Errno(0xc)\n\tENOSPC      = syscall.Errno(0x1c)\n\tENOTBLK     = syscall.Errno(0xf)\n\tENOTDIR     = syscall.Errno(0x14)\n\tENOTTY      = syscall.Errno(0x19)\n\tENXIO       = syscall.Errno(0x6)\n\tEPERM       = syscall.Errno(0x1)\n\tEPIPE       = syscall.Errno(0x20)\n\tERANGE      = syscall.Errno(0x22)\n\tEROFS       = syscall.Errno(0x1e)\n\tESPIPE      = syscall.Errno(0x1d)\n\tESRCH       = syscall.Errno(0x3)\n\tETXTBSY     = syscall.Errno(0x1a)\n\tEWOULDBLOCK = syscall.Errno(0xb)\n\tEXDEV       = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT = syscall.Signal(0x6)\n\tSIGALRM = syscall.Signal(0xe)\n\tSIGFPE  = syscall.Signal(0x8)\n\tSIGHUP  = syscall.Signal(0x1)\n\tSIGILL  = syscall.Signal(0x4)\n\tSIGINT  = syscall.Signal(0x2)\n\tSIGIOT  = syscall.Signal(0x6)\n\tSIGKILL = syscall.Signal(0x9)\n\tSIGPIPE = syscall.Signal(0xd)\n\tSIGQUIT = syscall.Signal(0x3)\n\tSIGSEGV = syscall.Signal(0xb)\n\tSIGTERM = syscall.Signal(0xf)\n\tSIGTRAP = syscall.Signal(0x5)\n)\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_386.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/386/include -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/386/include -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc03c4d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x8000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tX86_FXSR_MAGIC                   = 0x0\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_amd64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/amd64/include -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/amd64/include -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFP_XSTATE_MAGIC2                 = 0x46505845\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_ARCH_PRCTL                = 0x1e\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPXREGS                = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPXREGS                = 0x13\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x21\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_arm.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80041270\n\tBLKBSZSET                        = 0x40041271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80041272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x20000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8008743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40087446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x400c744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40087447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTRACE_GETCRUNCHREGS             = 0x19\n\tPTRACE_GETFDPIC                  = 0x1f\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETHBPREGS                = 0x1d\n\tPTRACE_GETVFPREGS                = 0x1b\n\tPTRACE_GETWMMXREGS               = 0x12\n\tPTRACE_GET_THREAD_AREA           = 0x16\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_SETCRUNCHREGS             = 0x1a\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETHBPREGS                = 0x1e\n\tPTRACE_SETVFPREGS                = 0x1c\n\tPTRACE_SETWMMXREGS               = 0x13\n\tPTRACE_SET_SYSCALL               = 0x17\n\tPT_DATA_ADDR                     = 0x10004\n\tPT_TEXT_ADDR                     = 0x10000\n\tPT_TEXT_END_ADDR                 = 0x10008\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8004700d\n\tRTC_EPOCH_SET                    = 0x4004700e\n\tRTC_IRQP_READ                    = 0x8004700b\n\tRTC_IRQP_SET                     = 0x4004700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x801c7011\n\tRTC_PLL_SET                      = 0x401c7012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x400854d5\n\tTUNDETACHFILTER                  = 0x400854d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x800854db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_arm64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/arm64/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tESR_MAGIC                        = 0x45535201\n\tEXTPROC                          = 0x10000\n\tEXTRA_MAGIC                      = 0x45585401\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPSIMD_MAGIC                     = 0x46508001\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x10000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPROT_BTI                         = 0x10\n\tPROT_MTE                         = 0x20\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_PEEKMTETAGS               = 0x21\n\tPTRACE_POKEMTETAGS               = 0x22\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tSVE_MAGIC                        = 0x53564501\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTPIDR2_MAGIC                     = 0x54504902\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\tZA_MAGIC                         = 0x54366345\n\tZT_MAGIC                         = 0x5a544e01\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_loong64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/loong64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/loong64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFPU_CTX_MAGIC                    = 0x46505501\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tLASX_CTX_MAGIC                   = 0x41535801\n\tLBT_CTX_MAGIC                    = 0x42540001\n\tLSX_CTX_MAGIC                    = 0x53580001\n\tMAP_ANON                         = 0x20\n\tMAP_ANONYMOUS                    = 0x20\n\tMAP_DENYWRITE                    = 0x800\n\tMAP_EXECUTABLE                   = 0x1000\n\tMAP_GROWSDOWN                    = 0x100\n\tMAP_HUGETLB                      = 0x40000\n\tMAP_LOCKED                       = 0x2000\n\tMAP_NONBLOCK                     = 0x10000\n\tMAP_NORESERVE                    = 0x4000\n\tMAP_POPULATE                     = 0x8000\n\tMAP_STACK                        = 0x20000\n\tMAP_SYNC                         = 0x80000\n\tMCL_CURRENT                      = 0x1\n\tMCL_FUTURE                       = 0x2\n\tMCL_ONFAULT                      = 0x4\n\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_mips.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_mips64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_mips64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mips64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mips64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xe\n\tF_GETLK64                        = 0xe\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_mipsle.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/mipsle/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/mipsle/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x80\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x2000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x21\n\tF_GETLK64                        = 0x21\n\tF_GETOWN                         = 0x17\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x22\n\tF_SETLK64                        = 0x22\n\tF_SETLKW                         = 0x23\n\tF_SETLKW64                       = 0x23\n\tF_SETOWN                         = 0x18\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x1000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x100\n\tO_DIRECT                         = 0x8000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x10\n\tO_EXCL                           = 0x400\n\tO_FSYNC                          = 0x4010\n\tO_LARGEFILE                      = 0x2000\n\tO_NDELAY                         = 0x80\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x800\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x80\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x4010\n\tO_SYNC                           = 0x4010\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GET_THREAD_AREA           = 0x19\n\tPTRACE_GET_THREAD_AREA_3264      = 0xc4\n\tPTRACE_GET_WATCH_REGS            = 0xd0\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_3264             = 0xc1\n\tPTRACE_PEEKTEXT_3264             = 0xc0\n\tPTRACE_POKEDATA_3264             = 0xc3\n\tPTRACE_POKETEXT_3264             = 0xc2\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SET_THREAD_AREA           = 0x1a\n\tPTRACE_SET_WATCH_REGS            = 0xd1\n\tRLIMIT_AS                        = 0x6\n\tRLIMIT_MEMLOCK                   = 0x9\n\tRLIMIT_NOFILE                    = 0x5\n\tRLIMIT_NPROC                     = 0x8\n\tRLIMIT_RSS                       = 0x7\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x80\n\tSIOCATMARK                       = 0x40047307\n\tSIOCGPGRP                        = 0x40047309\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x467f\n\tSIOCOUTQ                         = 0x7472\n\tSIOCSPGRP                        = 0x80047308\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x1\n\tSOCK_NONBLOCK                    = 0x80\n\tSOCK_STREAM                      = 0x2\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x1009\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x11\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x12\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x1004\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x1006\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x1006\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x1f\n\tSO_SNDLOWAT                      = 0x1003\n\tSO_SNDTIMEO                      = 0x1005\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x1005\n\tSO_STYLE                         = 0x1008\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x5407\n\tTCGETA                           = 0x5401\n\tTCGETS                           = 0x540d\n\tTCGETS2                          = 0x4030542a\n\tTCSAFLUSH                        = 0x5410\n\tTCSBRK                           = 0x5405\n\tTCSBRKP                          = 0x5486\n\tTCSETA                           = 0x5402\n\tTCSETAF                          = 0x5404\n\tTCSETAW                          = 0x5403\n\tTCSETS                           = 0x540e\n\tTCSETS2                          = 0x8030542b\n\tTCSETSF                          = 0x5410\n\tTCSETSF2                         = 0x8030542d\n\tTCSETSW                          = 0x540f\n\tTCSETSW2                         = 0x8030542c\n\tTCXONC                           = 0x5406\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x80\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x80047478\n\tTIOCEXCL                         = 0x740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x7400\n\tTIOCGETP                         = 0x7408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x5492\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x548b\n\tTIOCGLTC                         = 0x7474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x4020542e\n\tTIOCGSERIAL                      = 0x5484\n\tTIOCGSID                         = 0x7416\n\tTIOCGSOFTCAR                     = 0x5481\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x467f\n\tTIOCLINUX                        = 0x5483\n\tTIOCMBIC                         = 0x741c\n\tTIOCMBIS                         = 0x741b\n\tTIOCMGET                         = 0x741d\n\tTIOCMIWAIT                       = 0x5491\n\tTIOCMSET                         = 0x741a\n\tTIOCM_CAR                        = 0x100\n\tTIOCM_CD                         = 0x100\n\tTIOCM_CTS                        = 0x40\n\tTIOCM_DSR                        = 0x400\n\tTIOCM_RI                         = 0x200\n\tTIOCM_RNG                        = 0x200\n\tTIOCM_SR                         = 0x20\n\tTIOCM_ST                         = 0x10\n\tTIOCNOTTY                        = 0x5471\n\tTIOCNXCL                         = 0x740e\n\tTIOCOUTQ                         = 0x7472\n\tTIOCPKT                          = 0x5470\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x5480\n\tTIOCSERCONFIG                    = 0x5488\n\tTIOCSERGETLSR                    = 0x548e\n\tTIOCSERGETMULTI                  = 0x548f\n\tTIOCSERGSTRUCT                   = 0x548d\n\tTIOCSERGWILD                     = 0x5489\n\tTIOCSERSETMULTI                  = 0x5490\n\tTIOCSERSWILD                     = 0x548a\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x7401\n\tTIOCSETN                         = 0x740a\n\tTIOCSETP                         = 0x7409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x548c\n\tTIOCSLTC                         = 0x7475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0xc020542f\n\tTIOCSSERIAL                      = 0x5485\n\tTIOCSSOFTCAR                     = 0x5482\n\tTIOCSTI                          = 0x5472\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x8000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x10\n\tVEOL                             = 0x11\n\tVEOL2                            = 0x6\n\tVMIN                             = 0x4\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVSWTCH                           = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x9e)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x46d)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEHWPOISON       = syscall.Errno(0xa8)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINIT           = syscall.Errno(0x8d)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISNAM          = syscall.Errno(0x8b)\n\tEKEYEXPIRED     = syscall.Errno(0xa2)\n\tEKEYREJECTED    = syscall.Errno(0xa4)\n\tEKEYREVOKED     = syscall.Errno(0xa3)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMEDIUMTYPE     = syscall.Errno(0xa0)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENAVAIL         = syscall.Errno(0x8a)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0xa1)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x9f)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTNAM         = syscall.Errno(0x89)\n\tENOTRECOVERABLE = syscall.Errno(0xa6)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x7a)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0xa5)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMDEV         = syscall.Errno(0x8e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x8c)\n\tERESTART        = syscall.Errno(0x5b)\n\tERFKILL         = syscall.Errno(0xa7)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tEUCLEAN         = syscall.Errno(0x87)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x12)\n\tSIGCLD    = syscall.Signal(0x12)\n\tSIGCONT   = syscall.Signal(0x19)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x16)\n\tSIGPOLL   = syscall.Signal(0x16)\n\tSIGPROF   = syscall.Signal(0x1d)\n\tSIGPWR    = syscall.Signal(0x13)\n\tSIGSTOP   = syscall.Signal(0x17)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x18)\n\tSIGTTIN   = syscall.Signal(0x1a)\n\tSIGTTOU   = syscall.Signal(0x1b)\n\tSIGURG    = syscall.Signal(0x15)\n\tSIGUSR1   = syscall.Signal(0x10)\n\tSIGUSR2   = syscall.Signal(0x11)\n\tSIGVTALRM = syscall.Signal(0x1c)\n\tSIGWINCH  = syscall.Signal(0x14)\n\tSIGXCPU   = syscall.Signal(0x1e)\n\tSIGXFSZ   = syscall.Signal(0x1f)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{46, \"ENOLCK\", \"no locks available\"},\n\t{50, \"EBADE\", \"invalid exchange\"},\n\t{51, \"EBADR\", \"invalid request descriptor\"},\n\t{52, \"EXFULL\", \"exchange full\"},\n\t{53, \"ENOANO\", \"no anode\"},\n\t{54, \"EBADRQC\", \"invalid request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"bad message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{87, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{89, \"ENOSYS\", \"function not implemented\"},\n\t{90, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{91, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{92, \"ESTRPIPE\", \"streams pipe error\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"ENOTSUP\", \"operation not supported\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{135, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{137, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{138, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{139, \"EISNAM\", \"is a named type file\"},\n\t{140, \"EREMOTEIO\", \"remote I/O error\"},\n\t{141, \"EINIT\", \"unknown error 141\"},\n\t{142, \"EREMDEV\", \"unknown error 142\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale file handle\"},\n\t{158, \"ECANCELED\", \"operation canceled\"},\n\t{159, \"ENOMEDIUM\", \"no medium found\"},\n\t{160, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{161, \"ENOKEY\", \"required key not available\"},\n\t{162, \"EKEYEXPIRED\", \"key has expired\"},\n\t{163, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{164, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{165, \"EOWNERDEAD\", \"owner died\"},\n\t{166, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{167, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{168, \"EHWPOISON\", \"memory page has hardware error\"},\n\t{1133, \"EDQUOT\", \"disk quota exceeded\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGCHLD\", \"child exited\"},\n\t{19, \"SIGPWR\", \"power failure\"},\n\t{20, \"SIGWINCH\", \"window changed\"},\n\t{21, \"SIGURG\", \"urgent I/O condition\"},\n\t{22, \"SIGIO\", \"I/O possible\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{29, \"SIGPROF\", \"profiling timer expired\"},\n\t{30, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{31, \"SIGXFSZ\", \"file size limit exceeded\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_ppc.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40041270\n\tBLKBSZSET                        = 0x80041271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40041272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40046601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80046602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0xc\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0xd\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0xe\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc00c4d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc00c4d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x20\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x10000\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40042407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8004240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc004240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80042406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4008743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80087446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x800c744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80087447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffff\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPR31                         = 0x6e\n\tPT_FPSCR                         = 0x71\n\tPT_LNK                           = 0x24\n\tPT_MQ                            = 0x27\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_TRAP                          = 0x28\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4004700d\n\tRTC_EPOCH_SET                    = 0x8004700e\n\tRTC_IRQP_READ                    = 0x4004700b\n\tRTC_IRQP_SET                     = 0x8004700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x401c7011\n\tRTC_PLL_SET                      = 0x801c7012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x800854d5\n\tTUNDETACHFILTER                  = 0x800854d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x400854db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x20\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_ppc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_ppc64le.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/ppc64le/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/ppc64le/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x17\n\tB115200                          = 0x11\n\tB1152000                         = 0x18\n\tB1500000                         = 0x19\n\tB2000000                         = 0x1a\n\tB230400                          = 0x12\n\tB2500000                         = 0x1b\n\tB3000000                         = 0x1c\n\tB3500000                         = 0x1d\n\tB4000000                         = 0x1e\n\tB460800                          = 0x13\n\tB500000                          = 0x14\n\tB57600                           = 0x10\n\tB576000                          = 0x15\n\tB921600                          = 0x16\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1f\n\tBS1                              = 0x8000\n\tBSDLY                            = 0x8000\n\tCBAUD                            = 0xff\n\tCBAUDEX                          = 0x0\n\tCIBAUD                           = 0xff0000\n\tCLOCAL                           = 0x8000\n\tCR1                              = 0x1000\n\tCR2                              = 0x2000\n\tCR3                              = 0x3000\n\tCRDLY                            = 0x3000\n\tCREAD                            = 0x800\n\tCS6                              = 0x100\n\tCS7                              = 0x200\n\tCS8                              = 0x300\n\tCSIZE                            = 0x300\n\tCSTOPB                           = 0x400\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x40\n\tECHOE                            = 0x2\n\tECHOK                            = 0x4\n\tECHOKE                           = 0x1\n\tECHONL                           = 0x10\n\tECHOPRT                          = 0x20\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000000\n\tFF1                              = 0x4000\n\tFFDLY                            = 0x4000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x800000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0xc\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0xd\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0xe\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNL2                              = 0x200\n\tNL3                              = 0x300\n\tNLDLY                            = 0x300\n\tNOFLSH                           = 0x80000000\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x20000\n\tO_DIRECTORY                      = 0x4000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x8000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x404000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x1000\n\tPARODD                           = 0x2000\n\tPENDIN                           = 0x20000000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPROT_SAO                         = 0x10\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETEVRREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_GETVRREGS                 = 0x12\n\tPTRACE_GETVSRREGS                = 0x1b\n\tPTRACE_GET_DEBUGREG              = 0x19\n\tPTRACE_SETEVRREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SETVRREGS                 = 0x13\n\tPTRACE_SETVSRREGS                = 0x1c\n\tPTRACE_SET_DEBUGREG              = 0x1a\n\tPTRACE_SINGLEBLOCK               = 0x100\n\tPTRACE_SYSEMU                    = 0x1d\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x1e\n\tPT_CCR                           = 0x26\n\tPT_CTR                           = 0x23\n\tPT_DAR                           = 0x29\n\tPT_DSCR                          = 0x2c\n\tPT_DSISR                         = 0x2a\n\tPT_FPR0                          = 0x30\n\tPT_FPSCR                         = 0x50\n\tPT_LNK                           = 0x24\n\tPT_MSR                           = 0x21\n\tPT_NIP                           = 0x20\n\tPT_ORIG_R3                       = 0x22\n\tPT_R0                            = 0x0\n\tPT_R1                            = 0x1\n\tPT_R10                           = 0xa\n\tPT_R11                           = 0xb\n\tPT_R12                           = 0xc\n\tPT_R13                           = 0xd\n\tPT_R14                           = 0xe\n\tPT_R15                           = 0xf\n\tPT_R16                           = 0x10\n\tPT_R17                           = 0x11\n\tPT_R18                           = 0x12\n\tPT_R19                           = 0x13\n\tPT_R2                            = 0x2\n\tPT_R20                           = 0x14\n\tPT_R21                           = 0x15\n\tPT_R22                           = 0x16\n\tPT_R23                           = 0x17\n\tPT_R24                           = 0x18\n\tPT_R25                           = 0x19\n\tPT_R26                           = 0x1a\n\tPT_R27                           = 0x1b\n\tPT_R28                           = 0x1c\n\tPT_R29                           = 0x1d\n\tPT_R3                            = 0x3\n\tPT_R30                           = 0x1e\n\tPT_R31                           = 0x1f\n\tPT_R4                            = 0x4\n\tPT_R5                            = 0x5\n\tPT_R6                            = 0x6\n\tPT_R7                            = 0x7\n\tPT_R8                            = 0x8\n\tPT_R9                            = 0x9\n\tPT_REGS_COUNT                    = 0x2c\n\tPT_RESULT                        = 0x2b\n\tPT_SOFTE                         = 0x27\n\tPT_TRAP                          = 0x28\n\tPT_VR0                           = 0x52\n\tPT_VRSAVE                        = 0x94\n\tPT_VSCR                          = 0x93\n\tPT_VSR0                          = 0x96\n\tPT_VSR31                         = 0xd4\n\tPT_XER                           = 0x25\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x14\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x15\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x10\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x12\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x12\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x11\n\tSO_SNDTIMEO                      = 0x13\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x13\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x400\n\tTAB2                             = 0x800\n\tTAB3                             = 0xc00\n\tTABDLY                           = 0xc00\n\tTCFLSH                           = 0x2000741f\n\tTCGETA                           = 0x40147417\n\tTCGETS                           = 0x402c7413\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x2000741d\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80147418\n\tTCSETAF                          = 0x8014741c\n\tTCSETAW                          = 0x80147419\n\tTCSETS                           = 0x802c7414\n\tTCSETSF                          = 0x802c7416\n\tTCSETSW                          = 0x802c7415\n\tTCXONC                           = 0x2000741e\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETC                         = 0x40067412\n\tTIOCGETD                         = 0x5424\n\tTIOCGETP                         = 0x40067408\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGLTC                         = 0x40067474\n\tTIOCGPGRP                        = 0x40047477\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40045430\n\tTIOCGPTPEER                      = 0x20005441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_LOOP                       = 0x8000\n\tTIOCM_OUT1                       = 0x2000\n\tTIOCM_OUT2                       = 0x4000\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETC                         = 0x80067411\n\tTIOCSETD                         = 0x5423\n\tTIOCSETN                         = 0x8006740a\n\tTIOCSETP                         = 0x80067409\n\tTIOCSIG                          = 0x80045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSLTC                         = 0x80067475\n\tTIOCSPGRP                        = 0x80047476\n\tTIOCSPTLCK                       = 0x80045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x5412\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x400000\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0x10\n\tVEOF                             = 0x4\n\tVEOL                             = 0x6\n\tVEOL2                            = 0x8\n\tVMIN                             = 0x5\n\tVREPRINT                         = 0xb\n\tVSTART                           = 0xd\n\tVSTOP                            = 0xe\n\tVSUSP                            = 0xc\n\tVSWTC                            = 0x9\n\tVT1                              = 0x10000\n\tVTDLY                            = 0x10000\n\tVTIME                            = 0x7\n\tVWERASE                          = 0xa\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4000\n\tXTABS                            = 0xc00\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x3a)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{58, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_riscv64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/riscv64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/riscv64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETFDPIC                  = 0x21\n\tPTRACE_GETFDPIC_EXEC             = 0x0\n\tPTRACE_GETFDPIC_INTERP           = 0x1\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_s390x.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/s390x/include -fsigned-char\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x127a\n\tBLKBSZGET                        = 0x80081270\n\tBLKBSZSET                        = 0x40081271\n\tBLKDISCARD                       = 0x1277\n\tBLKDISCARDZEROES                 = 0x127c\n\tBLKFLSBUF                        = 0x1261\n\tBLKFRAGET                        = 0x1265\n\tBLKFRASET                        = 0x1264\n\tBLKGETDISKSEQ                    = 0x80081280\n\tBLKGETSIZE                       = 0x1260\n\tBLKGETSIZE64                     = 0x80081272\n\tBLKIOMIN                         = 0x1278\n\tBLKIOOPT                         = 0x1279\n\tBLKPBSZGET                       = 0x127b\n\tBLKRAGET                         = 0x1263\n\tBLKRASET                         = 0x1262\n\tBLKROGET                         = 0x125e\n\tBLKROSET                         = 0x125d\n\tBLKROTATIONAL                    = 0x127e\n\tBLKRRPART                        = 0x125f\n\tBLKSECDISCARD                    = 0x127d\n\tBLKSECTGET                       = 0x1267\n\tBLKSECTSET                       = 0x1266\n\tBLKSSZGET                        = 0x1268\n\tBLKZEROOUT                       = 0x127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x81484d11\n\tECCGETSTATS                      = 0x80104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x80000\n\tEFD_NONBLOCK                     = 0x800\n\tEPOLL_CLOEXEC                    = 0x80000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x40049409\n\tFICLONERANGE                     = 0x4020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x40806685\n\tFS_IOC_GETFLAGS                  = 0x80086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x8010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x400c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x40106614\n\tFS_IOC_SETFLAGS                  = 0x40086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x800c6613\n\tF_GETLK                          = 0x5\n\tF_GETLK64                        = 0x5\n\tF_GETOWN                         = 0x9\n\tF_RDLCK                          = 0x0\n\tF_SETLK                          = 0x6\n\tF_SETLK64                        = 0x6\n\tF_SETLKW                         = 0x7\n\tF_SETLKW64                       = 0x7\n\tF_SETOWN                         = 0x8\n\tF_UNLCK                          = 0x2\n\tF_WRLCK                          = 0x1\n\tHIDIOCGRAWINFO                   = 0x80084803\n\tHIDIOCGRDESC                     = 0x90044802\n\tHIDIOCGRDESCSIZE                 = 0x80044801\n\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\tMEMERASE                         = 0x40084d02\n\tMEMERASE64                       = 0x40104d14\n\tMEMGETBADBLOCK                   = 0x40084d0b\n\tMEMGETINFO                       = 0x80204d01\n\tMEMGETOOBSEL                     = 0x80c84d0a\n\tMEMGETREGIONCOUNT                = 0x80044d07\n\tMEMISLOCKED                      = 0x80084d17\n\tMEMLOCK                          = 0x40084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x40084d0c\n\tMEMUNLOCK                        = 0x40084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x4d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x400c4d19\n\tOTPGETREGIONCOUNT                = 0x40044d0e\n\tOTPGETREGIONINFO                 = 0x400c4d0f\n\tOTPLOCK                          = 0x800c4d10\n\tOTPSELECT                        = 0x80044d0d\n\tO_APPEND                         = 0x400\n\tO_ASYNC                          = 0x2000\n\tO_CLOEXEC                        = 0x80000\n\tO_CREAT                          = 0x40\n\tO_DIRECT                         = 0x4000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x1000\n\tO_EXCL                           = 0x80\n\tO_FSYNC                          = 0x101000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x800\n\tO_NOATIME                        = 0x40000\n\tO_NOCTTY                         = 0x100\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x800\n\tO_PATH                           = 0x200000\n\tO_RSYNC                          = 0x101000\n\tO_SYNC                           = 0x101000\n\tO_TMPFILE                        = 0x410000\n\tO_TRUNC                          = 0x200\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x2401\n\tPERF_EVENT_IOC_ENABLE            = 0x2400\n\tPERF_EVENT_IOC_ID                = 0x80082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x4008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x40042409\n\tPERF_EVENT_IOC_PERIOD            = 0x40082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x2402\n\tPERF_EVENT_IOC_RESET             = 0x2403\n\tPERF_EVENT_IOC_SET_BPF           = 0x40042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x40082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x2405\n\tPPPIOCATTACH                     = 0x4004743d\n\tPPPIOCATTCHAN                    = 0x40047438\n\tPPPIOCBRIDGECHAN                 = 0x40047435\n\tPPPIOCCONNECT                    = 0x4004743a\n\tPPPIOCDETACH                     = 0x4004743c\n\tPPPIOCDISCONN                    = 0x7439\n\tPPPIOCGASYNCMAP                  = 0x80047458\n\tPPPIOCGCHAN                      = 0x80047437\n\tPPPIOCGDEBUG                     = 0x80047441\n\tPPPIOCGFLAGS                     = 0x8004745a\n\tPPPIOCGIDLE                      = 0x8010743f\n\tPPPIOCGIDLE32                    = 0x8008743f\n\tPPPIOCGIDLE64                    = 0x8010743f\n\tPPPIOCGL2TPSTATS                 = 0x80487436\n\tPPPIOCGMRU                       = 0x80047453\n\tPPPIOCGRASYNCMAP                 = 0x80047455\n\tPPPIOCGUNIT                      = 0x80047456\n\tPPPIOCGXASYNCMAP                 = 0x80207450\n\tPPPIOCSACTIVE                    = 0x40107446\n\tPPPIOCSASYNCMAP                  = 0x40047457\n\tPPPIOCSCOMPRESS                  = 0x4010744d\n\tPPPIOCSDEBUG                     = 0x40047440\n\tPPPIOCSFLAGS                     = 0x40047459\n\tPPPIOCSMAXCID                    = 0x40047451\n\tPPPIOCSMRRU                      = 0x4004743b\n\tPPPIOCSMRU                       = 0x40047452\n\tPPPIOCSNPMODE                    = 0x4008744b\n\tPPPIOCSPASS                      = 0x40107447\n\tPPPIOCSRASYNCMAP                 = 0x40047454\n\tPPPIOCSXASYNCMAP                 = 0x4020744f\n\tPPPIOCUNBRIDGECHAN               = 0x7434\n\tPPPIOCXFERUNIT                   = 0x744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_DISABLE_TE                = 0x5010\n\tPTRACE_ENABLE_TE                 = 0x5009\n\tPTRACE_GET_LAST_BREAK            = 0x5006\n\tPTRACE_OLDSETOPTIONS             = 0x15\n\tPTRACE_PEEKDATA_AREA             = 0x5003\n\tPTRACE_PEEKTEXT_AREA             = 0x5002\n\tPTRACE_PEEKUSR_AREA              = 0x5000\n\tPTRACE_PEEK_SYSTEM_CALL          = 0x5007\n\tPTRACE_POKEDATA_AREA             = 0x5005\n\tPTRACE_POKETEXT_AREA             = 0x5004\n\tPTRACE_POKEUSR_AREA              = 0x5001\n\tPTRACE_POKE_SYSTEM_CALL          = 0x5008\n\tPTRACE_PROT                      = 0x15\n\tPTRACE_SINGLEBLOCK               = 0xc\n\tPTRACE_SYSEMU                    = 0x1f\n\tPTRACE_SYSEMU_SINGLESTEP         = 0x20\n\tPTRACE_TE_ABORT_RAND             = 0x5011\n\tPT_ACR0                          = 0x90\n\tPT_ACR1                          = 0x94\n\tPT_ACR10                         = 0xb8\n\tPT_ACR11                         = 0xbc\n\tPT_ACR12                         = 0xc0\n\tPT_ACR13                         = 0xc4\n\tPT_ACR14                         = 0xc8\n\tPT_ACR15                         = 0xcc\n\tPT_ACR2                          = 0x98\n\tPT_ACR3                          = 0x9c\n\tPT_ACR4                          = 0xa0\n\tPT_ACR5                          = 0xa4\n\tPT_ACR6                          = 0xa8\n\tPT_ACR7                          = 0xac\n\tPT_ACR8                          = 0xb0\n\tPT_ACR9                          = 0xb4\n\tPT_CR_10                         = 0x168\n\tPT_CR_11                         = 0x170\n\tPT_CR_9                          = 0x160\n\tPT_ENDREGS                       = 0x1af\n\tPT_FPC                           = 0xd8\n\tPT_FPR0                          = 0xe0\n\tPT_FPR1                          = 0xe8\n\tPT_FPR10                         = 0x130\n\tPT_FPR11                         = 0x138\n\tPT_FPR12                         = 0x140\n\tPT_FPR13                         = 0x148\n\tPT_FPR14                         = 0x150\n\tPT_FPR15                         = 0x158\n\tPT_FPR2                          = 0xf0\n\tPT_FPR3                          = 0xf8\n\tPT_FPR4                          = 0x100\n\tPT_FPR5                          = 0x108\n\tPT_FPR6                          = 0x110\n\tPT_FPR7                          = 0x118\n\tPT_FPR8                          = 0x120\n\tPT_FPR9                          = 0x128\n\tPT_GPR0                          = 0x10\n\tPT_GPR1                          = 0x18\n\tPT_GPR10                         = 0x60\n\tPT_GPR11                         = 0x68\n\tPT_GPR12                         = 0x70\n\tPT_GPR13                         = 0x78\n\tPT_GPR14                         = 0x80\n\tPT_GPR15                         = 0x88\n\tPT_GPR2                          = 0x20\n\tPT_GPR3                          = 0x28\n\tPT_GPR4                          = 0x30\n\tPT_GPR5                          = 0x38\n\tPT_GPR6                          = 0x40\n\tPT_GPR7                          = 0x48\n\tPT_GPR8                          = 0x50\n\tPT_GPR9                          = 0x58\n\tPT_IEEE_IP                       = 0x1a8\n\tPT_LASTOFF                       = 0x1a8\n\tPT_ORIGGPR2                      = 0xd0\n\tPT_PSWADDR                       = 0x8\n\tPT_PSWMASK                       = 0x0\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x7\n\tRLIMIT_NPROC                     = 0x6\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x40085203\n\tRNDADDTOENTCNT                   = 0x40045201\n\tRNDCLEARPOOL                     = 0x5206\n\tRNDGETENTCNT                     = 0x80045200\n\tRNDGETPOOL                       = 0x80085202\n\tRNDRESEEDCRNG                    = 0x5207\n\tRNDZAPENTCNT                     = 0x5204\n\tRTC_AIE_OFF                      = 0x7002\n\tRTC_AIE_ON                       = 0x7001\n\tRTC_ALM_READ                     = 0x80247008\n\tRTC_ALM_SET                      = 0x40247007\n\tRTC_EPOCH_READ                   = 0x8008700d\n\tRTC_EPOCH_SET                    = 0x4008700e\n\tRTC_IRQP_READ                    = 0x8008700b\n\tRTC_IRQP_SET                     = 0x4008700c\n\tRTC_PARAM_GET                    = 0x40187013\n\tRTC_PARAM_SET                    = 0x40187014\n\tRTC_PIE_OFF                      = 0x7006\n\tRTC_PIE_ON                       = 0x7005\n\tRTC_PLL_GET                      = 0x80207011\n\tRTC_PLL_SET                      = 0x40207012\n\tRTC_RD_TIME                      = 0x80247009\n\tRTC_SET_TIME                     = 0x4024700a\n\tRTC_UIE_OFF                      = 0x7004\n\tRTC_UIE_ON                       = 0x7003\n\tRTC_VL_CLR                       = 0x7014\n\tRTC_VL_READ                      = 0x80047013\n\tRTC_WIE_OFF                      = 0x7010\n\tRTC_WIE_ON                       = 0x700f\n\tRTC_WKALM_RD                     = 0x80287010\n\tRTC_WKALM_SET                    = 0x4028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x40182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x40082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x40082104\n\tSFD_CLOEXEC                      = 0x80000\n\tSFD_NONBLOCK                     = 0x800\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x80108907\n\tSIOCGSTAMP_NEW                   = 0x80108906\n\tSIOCINQ                          = 0x541b\n\tSIOCOUTQ                         = 0x5411\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x80000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x800\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0x1\n\tSO_ACCEPTCONN                    = 0x1e\n\tSO_ATTACH_BPF                    = 0x32\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x33\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x34\n\tSO_BINDTODEVICE                  = 0x19\n\tSO_BINDTOIFINDEX                 = 0x3e\n\tSO_BPF_EXTENSIONS                = 0x30\n\tSO_BROADCAST                     = 0x6\n\tSO_BSDCOMPAT                     = 0xe\n\tSO_BUF_LOCK                      = 0x48\n\tSO_BUSY_POLL                     = 0x2e\n\tSO_BUSY_POLL_BUDGET              = 0x46\n\tSO_CNX_ADVICE                    = 0x35\n\tSO_COOKIE                        = 0x39\n\tSO_DETACH_REUSEPORT_BPF          = 0x44\n\tSO_DOMAIN                        = 0x27\n\tSO_DONTROUTE                     = 0x5\n\tSO_ERROR                         = 0x4\n\tSO_INCOMING_CPU                  = 0x31\n\tSO_INCOMING_NAPI_ID              = 0x38\n\tSO_KEEPALIVE                     = 0x9\n\tSO_LINGER                        = 0xd\n\tSO_LOCK_FILTER                   = 0x2c\n\tSO_MARK                          = 0x24\n\tSO_MAX_PACING_RATE               = 0x2f\n\tSO_MEMINFO                       = 0x37\n\tSO_NETNS_COOKIE                  = 0x47\n\tSO_NOFCS                         = 0x2b\n\tSO_OOBINLINE                     = 0xa\n\tSO_PASSCRED                      = 0x10\n\tSO_PASSPIDFD                     = 0x4c\n\tSO_PASSSEC                       = 0x22\n\tSO_PEEK_OFF                      = 0x2a\n\tSO_PEERCRED                      = 0x11\n\tSO_PEERGROUPS                    = 0x3b\n\tSO_PEERPIDFD                     = 0x4d\n\tSO_PEERSEC                       = 0x1f\n\tSO_PREFER_BUSY_POLL              = 0x45\n\tSO_PROTOCOL                      = 0x26\n\tSO_RCVBUF                        = 0x8\n\tSO_RCVBUFFORCE                   = 0x21\n\tSO_RCVLOWAT                      = 0x12\n\tSO_RCVMARK                       = 0x4b\n\tSO_RCVTIMEO                      = 0x14\n\tSO_RCVTIMEO_NEW                  = 0x42\n\tSO_RCVTIMEO_OLD                  = 0x14\n\tSO_RESERVE_MEM                   = 0x49\n\tSO_REUSEADDR                     = 0x2\n\tSO_REUSEPORT                     = 0xf\n\tSO_RXQ_OVFL                      = 0x28\n\tSO_SECURITY_AUTHENTICATION       = 0x16\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x18\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x17\n\tSO_SELECT_ERR_QUEUE              = 0x2d\n\tSO_SNDBUF                        = 0x7\n\tSO_SNDBUFFORCE                   = 0x20\n\tSO_SNDLOWAT                      = 0x13\n\tSO_SNDTIMEO                      = 0x15\n\tSO_SNDTIMEO_NEW                  = 0x43\n\tSO_SNDTIMEO_OLD                  = 0x15\n\tSO_TIMESTAMPING                  = 0x25\n\tSO_TIMESTAMPING_NEW              = 0x41\n\tSO_TIMESTAMPING_OLD              = 0x25\n\tSO_TIMESTAMPNS                   = 0x23\n\tSO_TIMESTAMPNS_NEW               = 0x40\n\tSO_TIMESTAMPNS_OLD               = 0x23\n\tSO_TIMESTAMP_NEW                 = 0x3f\n\tSO_TXREHASH                      = 0x4a\n\tSO_TXTIME                        = 0x3d\n\tSO_TYPE                          = 0x3\n\tSO_WIFI_STATUS                   = 0x29\n\tSO_ZEROCOPY                      = 0x3c\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x540b\n\tTCGETA                           = 0x5405\n\tTCGETS                           = 0x5401\n\tTCGETS2                          = 0x802c542a\n\tTCGETX                           = 0x5432\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x5409\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x5406\n\tTCSETAF                          = 0x5408\n\tTCSETAW                          = 0x5407\n\tTCSETS                           = 0x5402\n\tTCSETS2                          = 0x402c542b\n\tTCSETSF                          = 0x5404\n\tTCSETSF2                         = 0x402c542d\n\tTCSETSW                          = 0x5403\n\tTCSETSW2                         = 0x402c542c\n\tTCSETX                           = 0x5433\n\tTCSETXF                          = 0x5434\n\tTCSETXW                          = 0x5435\n\tTCXONC                           = 0x540a\n\tTFD_CLOEXEC                      = 0x80000\n\tTFD_NONBLOCK                     = 0x800\n\tTIOCCBRK                         = 0x5428\n\tTIOCCONS                         = 0x541d\n\tTIOCEXCL                         = 0x540c\n\tTIOCGDEV                         = 0x80045432\n\tTIOCGETD                         = 0x5424\n\tTIOCGEXCL                        = 0x80045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x80285442\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x540f\n\tTIOCGPKT                         = 0x80045438\n\tTIOCGPTLCK                       = 0x80045439\n\tTIOCGPTN                         = 0x80045430\n\tTIOCGPTPEER                      = 0x5441\n\tTIOCGRS485                       = 0x542e\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x5429\n\tTIOCGSOFTCAR                     = 0x5419\n\tTIOCGWINSZ                       = 0x5413\n\tTIOCINQ                          = 0x541b\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x5417\n\tTIOCMBIS                         = 0x5416\n\tTIOCMGET                         = 0x5415\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x5418\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x5422\n\tTIOCNXCL                         = 0x540d\n\tTIOCOUTQ                         = 0x5411\n\tTIOCPKT                          = 0x5420\n\tTIOCSBRK                         = 0x5427\n\tTIOCSCTTY                        = 0x540e\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSER_TEMT                     = 0x1\n\tTIOCSETD                         = 0x5423\n\tTIOCSIG                          = 0x40045436\n\tTIOCSISO7816                     = 0xc0285443\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x5410\n\tTIOCSPTLCK                       = 0x40045431\n\tTIOCSRS485                       = 0x542f\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x541a\n\tTIOCSTI                          = 0x5412\n\tTIOCSWINSZ                       = 0x5414\n\tTIOCVHANGUP                      = 0x5437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x401054d5\n\tTUNDETACHFILTER                  = 0x401054d6\n\tTUNGETDEVNETNS                   = 0x54e3\n\tTUNGETFEATURES                   = 0x800454cf\n\tTUNGETFILTER                     = 0x801054db\n\tTUNGETIFF                        = 0x800454d2\n\tTUNGETSNDBUF                     = 0x800454d3\n\tTUNGETVNETBE                     = 0x800454df\n\tTUNGETVNETHDRSZ                  = 0x800454d7\n\tTUNGETVNETLE                     = 0x800454dd\n\tTUNSETCARRIER                    = 0x400454e2\n\tTUNSETDEBUG                      = 0x400454c9\n\tTUNSETFILTEREBPF                 = 0x800454e1\n\tTUNSETGROUP                      = 0x400454ce\n\tTUNSETIFF                        = 0x400454ca\n\tTUNSETIFINDEX                    = 0x400454da\n\tTUNSETLINK                       = 0x400454cd\n\tTUNSETNOCSUM                     = 0x400454c8\n\tTUNSETOFFLOAD                    = 0x400454d0\n\tTUNSETOWNER                      = 0x400454cc\n\tTUNSETPERSIST                    = 0x400454cb\n\tTUNSETQUEUE                      = 0x400454d9\n\tTUNSETSNDBUF                     = 0x400454d4\n\tTUNSETSTEERINGEBPF               = 0x800454e0\n\tTUNSETTXFILTER                   = 0x400454d1\n\tTUNSETVNETBE                     = 0x400454de\n\tTUNSETVNETHDRSZ                  = 0x400454d8\n\tTUNSETVNETLE                     = 0x400454dc\n\tUBI_IOCATT                       = 0x40186f40\n\tUBI_IOCDET                       = 0x40046f41\n\tUBI_IOCEBCH                      = 0x40044f02\n\tUBI_IOCEBER                      = 0x40044f01\n\tUBI_IOCEBISMAP                   = 0x80044f05\n\tUBI_IOCEBMAP                     = 0x40084f03\n\tUBI_IOCEBUNMAP                   = 0x40044f04\n\tUBI_IOCMKVOL                     = 0x40986f00\n\tUBI_IOCRMVOL                     = 0x40046f01\n\tUBI_IOCRNVOL                     = 0x51106f03\n\tUBI_IOCRPEB                      = 0x40046f04\n\tUBI_IOCRSVOL                     = 0x400c6f02\n\tUBI_IOCSETVOLPROP                = 0x40104f06\n\tUBI_IOCSPEB                      = 0x40046f05\n\tUBI_IOCVOLCRBLK                  = 0x40804f07\n\tUBI_IOCVOLRMBLK                  = 0x4f08\n\tUBI_IOCVOLUP                     = 0x40084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x80045702\n\tWDIOC_GETPRETIMEOUT              = 0x80045709\n\tWDIOC_GETSTATUS                  = 0x80045701\n\tWDIOC_GETSUPPORT                 = 0x80285700\n\tWDIOC_GETTEMP                    = 0x80045703\n\tWDIOC_GETTIMELEFT                = 0x8004570a\n\tWDIOC_GETTIMEOUT                 = 0x80045707\n\tWDIOC_KEEPALIVE                  = 0x80045705\n\tWDIOC_SETOPTIONS                 = 0x80045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x80804804\n\t_HIDIOCGRAWPHYS                  = 0x80404805\n\t_HIDIOCGRAWUNIQ                  = 0x80404808\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x62)\n\tEADDRNOTAVAIL   = syscall.Errno(0x63)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x61)\n\tEALREADY        = syscall.Errno(0x72)\n\tEBADE           = syscall.Errno(0x34)\n\tEBADFD          = syscall.Errno(0x4d)\n\tEBADMSG         = syscall.Errno(0x4a)\n\tEBADR           = syscall.Errno(0x35)\n\tEBADRQC         = syscall.Errno(0x38)\n\tEBADSLT         = syscall.Errno(0x39)\n\tEBFONT          = syscall.Errno(0x3b)\n\tECANCELED       = syscall.Errno(0x7d)\n\tECHRNG          = syscall.Errno(0x2c)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x67)\n\tECONNREFUSED    = syscall.Errno(0x6f)\n\tECONNRESET      = syscall.Errno(0x68)\n\tEDEADLK         = syscall.Errno(0x23)\n\tEDEADLOCK       = syscall.Errno(0x23)\n\tEDESTADDRREQ    = syscall.Errno(0x59)\n\tEDOTDOT         = syscall.Errno(0x49)\n\tEDQUOT          = syscall.Errno(0x7a)\n\tEHOSTDOWN       = syscall.Errno(0x70)\n\tEHOSTUNREACH    = syscall.Errno(0x71)\n\tEHWPOISON       = syscall.Errno(0x85)\n\tEIDRM           = syscall.Errno(0x2b)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x73)\n\tEISCONN         = syscall.Errno(0x6a)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x7f)\n\tEKEYREJECTED    = syscall.Errno(0x81)\n\tEKEYREVOKED     = syscall.Errno(0x80)\n\tEL2HLT          = syscall.Errno(0x33)\n\tEL2NSYNC        = syscall.Errno(0x2d)\n\tEL3HLT          = syscall.Errno(0x2e)\n\tEL3RST          = syscall.Errno(0x2f)\n\tELIBACC         = syscall.Errno(0x4f)\n\tELIBBAD         = syscall.Errno(0x50)\n\tELIBEXEC        = syscall.Errno(0x53)\n\tELIBMAX         = syscall.Errno(0x52)\n\tELIBSCN         = syscall.Errno(0x51)\n\tELNRNG          = syscall.Errno(0x30)\n\tELOOP           = syscall.Errno(0x28)\n\tEMEDIUMTYPE     = syscall.Errno(0x7c)\n\tEMSGSIZE        = syscall.Errno(0x5a)\n\tEMULTIHOP       = syscall.Errno(0x48)\n\tENAMETOOLONG    = syscall.Errno(0x24)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x64)\n\tENETRESET       = syscall.Errno(0x66)\n\tENETUNREACH     = syscall.Errno(0x65)\n\tENOANO          = syscall.Errno(0x37)\n\tENOBUFS         = syscall.Errno(0x69)\n\tENOCSI          = syscall.Errno(0x32)\n\tENODATA         = syscall.Errno(0x3d)\n\tENOKEY          = syscall.Errno(0x7e)\n\tENOLCK          = syscall.Errno(0x25)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEDIUM       = syscall.Errno(0x7b)\n\tENOMSG          = syscall.Errno(0x2a)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x5c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x26)\n\tENOTCONN        = syscall.Errno(0x6b)\n\tENOTEMPTY       = syscall.Errno(0x27)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x83)\n\tENOTSOCK        = syscall.Errno(0x58)\n\tENOTSUP         = syscall.Errno(0x5f)\n\tENOTUNIQ        = syscall.Errno(0x4c)\n\tEOPNOTSUPP      = syscall.Errno(0x5f)\n\tEOVERFLOW       = syscall.Errno(0x4b)\n\tEOWNERDEAD      = syscall.Errno(0x82)\n\tEPFNOSUPPORT    = syscall.Errno(0x60)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x5d)\n\tEPROTOTYPE      = syscall.Errno(0x5b)\n\tEREMCHG         = syscall.Errno(0x4e)\n\tEREMOTE         = syscall.Errno(0x42)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x55)\n\tERFKILL         = syscall.Errno(0x84)\n\tESHUTDOWN       = syscall.Errno(0x6c)\n\tESOCKTNOSUPPORT = syscall.Errno(0x5e)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x74)\n\tESTRPIPE        = syscall.Errno(0x56)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x6e)\n\tETOOMANYREFS    = syscall.Errno(0x6d)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x31)\n\tEUSERS          = syscall.Errno(0x57)\n\tEXFULL          = syscall.Errno(0x36)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0x7)\n\tSIGCHLD   = syscall.Signal(0x11)\n\tSIGCLD    = syscall.Signal(0x11)\n\tSIGCONT   = syscall.Signal(0x12)\n\tSIGIO     = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x1d)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1e)\n\tSIGSTKFLT = syscall.Signal(0x10)\n\tSIGSTOP   = syscall.Signal(0x13)\n\tSIGSYS    = syscall.Signal(0x1f)\n\tSIGTSTP   = syscall.Signal(0x14)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x17)\n\tSIGUSR1   = syscall.Signal(0xa)\n\tSIGUSR2   = syscall.Signal(0xc)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{35, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{36, \"ENAMETOOLONG\", \"file name too long\"},\n\t{37, \"ENOLCK\", \"no locks available\"},\n\t{38, \"ENOSYS\", \"function not implemented\"},\n\t{39, \"ENOTEMPTY\", \"directory not empty\"},\n\t{40, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{42, \"ENOMSG\", \"no message of desired type\"},\n\t{43, \"EIDRM\", \"identifier removed\"},\n\t{44, \"ECHRNG\", \"channel number out of range\"},\n\t{45, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{46, \"EL3HLT\", \"level 3 halted\"},\n\t{47, \"EL3RST\", \"level 3 reset\"},\n\t{48, \"ELNRNG\", \"link number out of range\"},\n\t{49, \"EUNATCH\", \"protocol driver not attached\"},\n\t{50, \"ENOCSI\", \"no CSI structure available\"},\n\t{51, \"EL2HLT\", \"level 2 halted\"},\n\t{52, \"EBADE\", \"invalid exchange\"},\n\t{53, \"EBADR\", \"invalid request descriptor\"},\n\t{54, \"EXFULL\", \"exchange full\"},\n\t{55, \"ENOANO\", \"no anode\"},\n\t{56, \"EBADRQC\", \"invalid request code\"},\n\t{57, \"EBADSLT\", \"invalid slot\"},\n\t{59, \"EBFONT\", \"bad font file format\"},\n\t{60, \"ENOSTR\", \"device not a stream\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of streams resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"EMULTIHOP\", \"multihop attempted\"},\n\t{73, \"EDOTDOT\", \"RFS specific error\"},\n\t{74, \"EBADMSG\", \"bad message\"},\n\t{75, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{76, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{77, \"EBADFD\", \"file descriptor in bad state\"},\n\t{78, \"EREMCHG\", \"remote address changed\"},\n\t{79, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{80, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{81, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{82, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{83, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{84, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{85, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{86, \"ESTRPIPE\", \"streams pipe error\"},\n\t{87, \"EUSERS\", \"too many users\"},\n\t{88, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{89, \"EDESTADDRREQ\", \"destination address required\"},\n\t{90, \"EMSGSIZE\", \"message too long\"},\n\t{91, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{92, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{93, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{94, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{95, \"ENOTSUP\", \"operation not supported\"},\n\t{96, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{97, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{98, \"EADDRINUSE\", \"address already in use\"},\n\t{99, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{100, \"ENETDOWN\", \"network is down\"},\n\t{101, \"ENETUNREACH\", \"network is unreachable\"},\n\t{102, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{103, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{104, \"ECONNRESET\", \"connection reset by peer\"},\n\t{105, \"ENOBUFS\", \"no buffer space available\"},\n\t{106, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{107, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{108, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{109, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{110, \"ETIMEDOUT\", \"connection timed out\"},\n\t{111, \"ECONNREFUSED\", \"connection refused\"},\n\t{112, \"EHOSTDOWN\", \"host is down\"},\n\t{113, \"EHOSTUNREACH\", \"no route to host\"},\n\t{114, \"EALREADY\", \"operation already in progress\"},\n\t{115, \"EINPROGRESS\", \"operation now in progress\"},\n\t{116, \"ESTALE\", \"stale file handle\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EDQUOT\", \"disk quota exceeded\"},\n\t{123, \"ENOMEDIUM\", \"no medium found\"},\n\t{124, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{125, \"ECANCELED\", \"operation canceled\"},\n\t{126, \"ENOKEY\", \"required key not available\"},\n\t{127, \"EKEYEXPIRED\", \"key has expired\"},\n\t{128, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{129, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{130, \"EOWNERDEAD\", \"owner died\"},\n\t{131, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{132, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{133, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGBUS\", \"bus error\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGUSR1\", \"user defined signal 1\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGUSR2\", \"user defined signal 2\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGSTKFLT\", \"stack fault\"},\n\t{17, \"SIGCHLD\", \"child exited\"},\n\t{18, \"SIGCONT\", \"continued\"},\n\t{19, \"SIGSTOP\", \"stopped (signal)\"},\n\t{20, \"SIGTSTP\", \"stopped\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGURG\", \"urgent I/O condition\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGIO\", \"I/O possible\"},\n\t{30, \"SIGPWR\", \"power failure\"},\n\t{31, \"SIGSYS\", \"bad system call\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_linux_sparc64.go",
    "content": "// mkerrors.sh -Wall -Werror -static -I/tmp/sparc64/include\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -Wall -Werror -static -I/tmp/sparc64/include _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tASI_LEON_DFLUSH                  = 0x11\n\tASI_LEON_IFLUSH                  = 0x10\n\tASI_LEON_MMUFLUSH                = 0x18\n\tB1000000                         = 0x1008\n\tB115200                          = 0x1002\n\tB1152000                         = 0x1009\n\tB1500000                         = 0x100a\n\tB2000000                         = 0x100b\n\tB230400                          = 0x1003\n\tB2500000                         = 0x100c\n\tB3000000                         = 0x100d\n\tB3500000                         = 0x100e\n\tB4000000                         = 0x100f\n\tB460800                          = 0x1004\n\tB500000                          = 0x1005\n\tB57600                           = 0x1001\n\tB576000                          = 0x1006\n\tB921600                          = 0x1007\n\tBLKALIGNOFF                      = 0x2000127a\n\tBLKBSZGET                        = 0x40081270\n\tBLKBSZSET                        = 0x80081271\n\tBLKDISCARD                       = 0x20001277\n\tBLKDISCARDZEROES                 = 0x2000127c\n\tBLKFLSBUF                        = 0x20001261\n\tBLKFRAGET                        = 0x20001265\n\tBLKFRASET                        = 0x20001264\n\tBLKGETDISKSEQ                    = 0x40081280\n\tBLKGETSIZE                       = 0x20001260\n\tBLKGETSIZE64                     = 0x40081272\n\tBLKIOMIN                         = 0x20001278\n\tBLKIOOPT                         = 0x20001279\n\tBLKPBSZGET                       = 0x2000127b\n\tBLKRAGET                         = 0x20001263\n\tBLKRASET                         = 0x20001262\n\tBLKROGET                         = 0x2000125e\n\tBLKROSET                         = 0x2000125d\n\tBLKROTATIONAL                    = 0x2000127e\n\tBLKRRPART                        = 0x2000125f\n\tBLKSECDISCARD                    = 0x2000127d\n\tBLKSECTGET                       = 0x20001267\n\tBLKSECTSET                       = 0x20001266\n\tBLKSSZGET                        = 0x20001268\n\tBLKZEROOUT                       = 0x2000127f\n\tBOTHER                           = 0x1000\n\tBS1                              = 0x2000\n\tBSDLY                            = 0x2000\n\tCBAUD                            = 0x100f\n\tCBAUDEX                          = 0x1000\n\tCIBAUD                           = 0x100f0000\n\tCLOCAL                           = 0x800\n\tCR1                              = 0x200\n\tCR2                              = 0x400\n\tCR3                              = 0x600\n\tCRDLY                            = 0x600\n\tCREAD                            = 0x80\n\tCS6                              = 0x10\n\tCS7                              = 0x20\n\tCS8                              = 0x30\n\tCSIZE                            = 0x30\n\tCSTOPB                           = 0x40\n\tECCGETLAYOUT                     = 0x41484d11\n\tECCGETSTATS                      = 0x40104d12\n\tECHOCTL                          = 0x200\n\tECHOE                            = 0x10\n\tECHOK                            = 0x20\n\tECHOKE                           = 0x800\n\tECHONL                           = 0x40\n\tECHOPRT                          = 0x400\n\tEFD_CLOEXEC                      = 0x400000\n\tEFD_NONBLOCK                     = 0x4000\n\tEMT_TAGOVF                       = 0x1\n\tEPOLL_CLOEXEC                    = 0x400000\n\tEXTPROC                          = 0x10000\n\tFF1                              = 0x8000\n\tFFDLY                            = 0x8000\n\tFICLONE                          = 0x80049409\n\tFICLONERANGE                     = 0x8020940d\n\tFLUSHO                           = 0x1000\n\tFS_IOC_ENABLE_VERITY             = 0x80806685\n\tFS_IOC_GETFLAGS                  = 0x40086601\n\tFS_IOC_GET_ENCRYPTION_NONCE      = 0x4010661b\n\tFS_IOC_GET_ENCRYPTION_POLICY     = 0x800c6615\n\tFS_IOC_GET_ENCRYPTION_PWSALT     = 0x80106614\n\tFS_IOC_SETFLAGS                  = 0x80086602\n\tFS_IOC_SET_ENCRYPTION_POLICY     = 0x400c6613\n\tF_GETLK                          = 0x7\n\tF_GETLK64                        = 0x7\n\tF_GETOWN                         = 0x5\n\tF_RDLCK                          = 0x1\n\tF_SETLK                          = 0x8\n\tF_SETLK64                        = 0x8\n\tF_SETLKW                         = 0x9\n\tF_SETLKW64                       = 0x9\n\tF_SETOWN                         = 0x6\n\tF_UNLCK                          = 0x3\n\tF_WRLCK                          = 0x2\n\tHIDIOCGRAWINFO                   = 0x40084803\n\tHIDIOCGRDESC                     = 0x50044802\n\tHIDIOCGRDESCSIZE                 = 0x40044801\n\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\tMEMERASE                         = 0x80084d02\n\tMEMERASE64                       = 0x80104d14\n\tMEMGETBADBLOCK                   = 0x80084d0b\n\tMEMGETINFO                       = 0x40204d01\n\tMEMGETOOBSEL                     = 0x40c84d0a\n\tMEMGETREGIONCOUNT                = 0x40044d07\n\tMEMISLOCKED                      = 0x40084d17\n\tMEMLOCK                          = 0x80084d05\n\tMEMREAD                          = 0xc0404d1a\n\tMEMREADOOB                       = 0xc0104d04\n\tMEMSETBADBLOCK                   = 0x80084d0c\n\tMEMUNLOCK                        = 0x80084d06\n\tMEMWRITEOOB                      = 0xc0104d03\n\tMTDFILEMODE                      = 0x20004d13\n\tNFDBITS                          = 0x40\n\tNLDLY                            = 0x100\n\tNOFLSH                           = 0x80\n\tNS_GET_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\tOTPERASE                         = 0x800c4d19\n\tOTPGETREGIONCOUNT                = 0x80044d0e\n\tOTPGETREGIONINFO                 = 0x800c4d0f\n\tOTPLOCK                          = 0x400c4d10\n\tOTPSELECT                        = 0x40044d0d\n\tO_APPEND                         = 0x8\n\tO_ASYNC                          = 0x40\n\tO_CLOEXEC                        = 0x400000\n\tO_CREAT                          = 0x200\n\tO_DIRECT                         = 0x100000\n\tO_DIRECTORY                      = 0x10000\n\tO_DSYNC                          = 0x2000\n\tO_EXCL                           = 0x800\n\tO_FSYNC                          = 0x802000\n\tO_LARGEFILE                      = 0x0\n\tO_NDELAY                         = 0x4004\n\tO_NOATIME                        = 0x200000\n\tO_NOCTTY                         = 0x8000\n\tO_NOFOLLOW                       = 0x20000\n\tO_NONBLOCK                       = 0x4000\n\tO_PATH                           = 0x1000000\n\tO_RSYNC                          = 0x802000\n\tO_SYNC                           = 0x802000\n\tO_TMPFILE                        = 0x2010000\n\tO_TRUNC                          = 0x400\n\tPARENB                           = 0x100\n\tPARODD                           = 0x200\n\tPENDIN                           = 0x4000\n\tPERF_EVENT_IOC_DISABLE           = 0x20002401\n\tPERF_EVENT_IOC_ENABLE            = 0x20002400\n\tPERF_EVENT_IOC_ID                = 0x40082407\n\tPERF_EVENT_IOC_MODIFY_ATTRIBUTES = 0x8008240b\n\tPERF_EVENT_IOC_PAUSE_OUTPUT      = 0x80042409\n\tPERF_EVENT_IOC_PERIOD            = 0x80082404\n\tPERF_EVENT_IOC_QUERY_BPF         = 0xc008240a\n\tPERF_EVENT_IOC_REFRESH           = 0x20002402\n\tPERF_EVENT_IOC_RESET             = 0x20002403\n\tPERF_EVENT_IOC_SET_BPF           = 0x80042408\n\tPERF_EVENT_IOC_SET_FILTER        = 0x80082406\n\tPERF_EVENT_IOC_SET_OUTPUT        = 0x20002405\n\tPPPIOCATTACH                     = 0x8004743d\n\tPPPIOCATTCHAN                    = 0x80047438\n\tPPPIOCBRIDGECHAN                 = 0x80047435\n\tPPPIOCCONNECT                    = 0x8004743a\n\tPPPIOCDETACH                     = 0x8004743c\n\tPPPIOCDISCONN                    = 0x20007439\n\tPPPIOCGASYNCMAP                  = 0x40047458\n\tPPPIOCGCHAN                      = 0x40047437\n\tPPPIOCGDEBUG                     = 0x40047441\n\tPPPIOCGFLAGS                     = 0x4004745a\n\tPPPIOCGIDLE                      = 0x4010743f\n\tPPPIOCGIDLE32                    = 0x4008743f\n\tPPPIOCGIDLE64                    = 0x4010743f\n\tPPPIOCGL2TPSTATS                 = 0x40487436\n\tPPPIOCGMRU                       = 0x40047453\n\tPPPIOCGRASYNCMAP                 = 0x40047455\n\tPPPIOCGUNIT                      = 0x40047456\n\tPPPIOCGXASYNCMAP                 = 0x40207450\n\tPPPIOCSACTIVE                    = 0x80107446\n\tPPPIOCSASYNCMAP                  = 0x80047457\n\tPPPIOCSCOMPRESS                  = 0x8010744d\n\tPPPIOCSDEBUG                     = 0x80047440\n\tPPPIOCSFLAGS                     = 0x80047459\n\tPPPIOCSMAXCID                    = 0x80047451\n\tPPPIOCSMRRU                      = 0x8004743b\n\tPPPIOCSMRU                       = 0x80047452\n\tPPPIOCSNPMODE                    = 0x8008744b\n\tPPPIOCSPASS                      = 0x80107447\n\tPPPIOCSRASYNCMAP                 = 0x80047454\n\tPPPIOCSXASYNCMAP                 = 0x8020744f\n\tPPPIOCUNBRIDGECHAN               = 0x20007434\n\tPPPIOCXFERUNIT                   = 0x2000744e\n\tPR_SET_PTRACER_ANY               = 0xffffffffffffffff\n\tPTRACE_GETFPAREGS                = 0x14\n\tPTRACE_GETFPREGS                 = 0xe\n\tPTRACE_GETFPREGS64               = 0x19\n\tPTRACE_GETREGS64                 = 0x16\n\tPTRACE_READDATA                  = 0x10\n\tPTRACE_READTEXT                  = 0x12\n\tPTRACE_SETFPAREGS                = 0x15\n\tPTRACE_SETFPREGS                 = 0xf\n\tPTRACE_SETFPREGS64               = 0x1a\n\tPTRACE_SETREGS64                 = 0x17\n\tPTRACE_SPARC_DETACH              = 0xb\n\tPTRACE_WRITEDATA                 = 0x11\n\tPTRACE_WRITETEXT                 = 0x13\n\tPT_FP                            = 0x48\n\tPT_G0                            = 0x10\n\tPT_G1                            = 0x14\n\tPT_G2                            = 0x18\n\tPT_G3                            = 0x1c\n\tPT_G4                            = 0x20\n\tPT_G5                            = 0x24\n\tPT_G6                            = 0x28\n\tPT_G7                            = 0x2c\n\tPT_I0                            = 0x30\n\tPT_I1                            = 0x34\n\tPT_I2                            = 0x38\n\tPT_I3                            = 0x3c\n\tPT_I4                            = 0x40\n\tPT_I5                            = 0x44\n\tPT_I6                            = 0x48\n\tPT_I7                            = 0x4c\n\tPT_NPC                           = 0x8\n\tPT_PC                            = 0x4\n\tPT_PSR                           = 0x0\n\tPT_REGS_MAGIC                    = 0x57ac6c00\n\tPT_TNPC                          = 0x90\n\tPT_TPC                           = 0x88\n\tPT_TSTATE                        = 0x80\n\tPT_V9_FP                         = 0x70\n\tPT_V9_G0                         = 0x0\n\tPT_V9_G1                         = 0x8\n\tPT_V9_G2                         = 0x10\n\tPT_V9_G3                         = 0x18\n\tPT_V9_G4                         = 0x20\n\tPT_V9_G5                         = 0x28\n\tPT_V9_G6                         = 0x30\n\tPT_V9_G7                         = 0x38\n\tPT_V9_I0                         = 0x40\n\tPT_V9_I1                         = 0x48\n\tPT_V9_I2                         = 0x50\n\tPT_V9_I3                         = 0x58\n\tPT_V9_I4                         = 0x60\n\tPT_V9_I5                         = 0x68\n\tPT_V9_I6                         = 0x70\n\tPT_V9_I7                         = 0x78\n\tPT_V9_MAGIC                      = 0x9c\n\tPT_V9_TNPC                       = 0x90\n\tPT_V9_TPC                        = 0x88\n\tPT_V9_TSTATE                     = 0x80\n\tPT_V9_Y                          = 0x98\n\tPT_WIM                           = 0x10\n\tPT_Y                             = 0xc\n\tRLIMIT_AS                        = 0x9\n\tRLIMIT_MEMLOCK                   = 0x8\n\tRLIMIT_NOFILE                    = 0x6\n\tRLIMIT_NPROC                     = 0x7\n\tRLIMIT_RSS                       = 0x5\n\tRNDADDENTROPY                    = 0x80085203\n\tRNDADDTOENTCNT                   = 0x80045201\n\tRNDCLEARPOOL                     = 0x20005206\n\tRNDGETENTCNT                     = 0x40045200\n\tRNDGETPOOL                       = 0x40085202\n\tRNDRESEEDCRNG                    = 0x20005207\n\tRNDZAPENTCNT                     = 0x20005204\n\tRTC_AIE_OFF                      = 0x20007002\n\tRTC_AIE_ON                       = 0x20007001\n\tRTC_ALM_READ                     = 0x40247008\n\tRTC_ALM_SET                      = 0x80247007\n\tRTC_EPOCH_READ                   = 0x4008700d\n\tRTC_EPOCH_SET                    = 0x8008700e\n\tRTC_IRQP_READ                    = 0x4008700b\n\tRTC_IRQP_SET                     = 0x8008700c\n\tRTC_PARAM_GET                    = 0x80187013\n\tRTC_PARAM_SET                    = 0x80187014\n\tRTC_PIE_OFF                      = 0x20007006\n\tRTC_PIE_ON                       = 0x20007005\n\tRTC_PLL_GET                      = 0x40207011\n\tRTC_PLL_SET                      = 0x80207012\n\tRTC_RD_TIME                      = 0x40247009\n\tRTC_SET_TIME                     = 0x8024700a\n\tRTC_UIE_OFF                      = 0x20007004\n\tRTC_UIE_ON                       = 0x20007003\n\tRTC_VL_CLR                       = 0x20007014\n\tRTC_VL_READ                      = 0x40047013\n\tRTC_WIE_OFF                      = 0x20007010\n\tRTC_WIE_ON                       = 0x2000700f\n\tRTC_WKALM_RD                     = 0x40287010\n\tRTC_WKALM_SET                    = 0x8028700f\n\tSCM_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\tSECCOMP_IOCTL_NOTIF_ADDFD        = 0x80182103\n\tSECCOMP_IOCTL_NOTIF_ID_VALID     = 0x80082102\n\tSECCOMP_IOCTL_NOTIF_SET_FLAGS    = 0x80082104\n\tSFD_CLOEXEC                      = 0x400000\n\tSFD_NONBLOCK                     = 0x4000\n\tSF_FP                            = 0x38\n\tSF_I0                            = 0x20\n\tSF_I1                            = 0x24\n\tSF_I2                            = 0x28\n\tSF_I3                            = 0x2c\n\tSF_I4                            = 0x30\n\tSF_I5                            = 0x34\n\tSF_L0                            = 0x0\n\tSF_L1                            = 0x4\n\tSF_L2                            = 0x8\n\tSF_L3                            = 0xc\n\tSF_L4                            = 0x10\n\tSF_L5                            = 0x14\n\tSF_L6                            = 0x18\n\tSF_L7                            = 0x1c\n\tSF_PC                            = 0x3c\n\tSF_RETP                          = 0x40\n\tSF_V9_FP                         = 0x70\n\tSF_V9_I0                         = 0x40\n\tSF_V9_I1                         = 0x48\n\tSF_V9_I2                         = 0x50\n\tSF_V9_I3                         = 0x58\n\tSF_V9_I4                         = 0x60\n\tSF_V9_I5                         = 0x68\n\tSF_V9_L0                         = 0x0\n\tSF_V9_L1                         = 0x8\n\tSF_V9_L2                         = 0x10\n\tSF_V9_L3                         = 0x18\n\tSF_V9_L4                         = 0x20\n\tSF_V9_L5                         = 0x28\n\tSF_V9_L6                         = 0x30\n\tSF_V9_L7                         = 0x38\n\tSF_V9_PC                         = 0x78\n\tSF_V9_RETP                       = 0x80\n\tSF_V9_XARG0                      = 0x88\n\tSF_V9_XARG1                      = 0x90\n\tSF_V9_XARG2                      = 0x98\n\tSF_V9_XARG3                      = 0xa0\n\tSF_V9_XARG4                      = 0xa8\n\tSF_V9_XARG5                      = 0xb0\n\tSF_V9_XXARG                      = 0xb8\n\tSF_XARG0                         = 0x44\n\tSF_XARG1                         = 0x48\n\tSF_XARG2                         = 0x4c\n\tSF_XARG3                         = 0x50\n\tSF_XARG4                         = 0x54\n\tSF_XARG5                         = 0x58\n\tSF_XXARG                         = 0x5c\n\tSIOCATMARK                       = 0x8905\n\tSIOCGPGRP                        = 0x8904\n\tSIOCGSTAMPNS_NEW                 = 0x40108907\n\tSIOCGSTAMP_NEW                   = 0x40108906\n\tSIOCINQ                          = 0x4004667f\n\tSIOCOUTQ                         = 0x40047473\n\tSIOCSPGRP                        = 0x8902\n\tSOCK_CLOEXEC                     = 0x400000\n\tSOCK_DGRAM                       = 0x2\n\tSOCK_NONBLOCK                    = 0x4000\n\tSOCK_STREAM                      = 0x1\n\tSOL_SOCKET                       = 0xffff\n\tSO_ACCEPTCONN                    = 0x8000\n\tSO_ATTACH_BPF                    = 0x34\n\tSO_ATTACH_REUSEPORT_CBPF         = 0x35\n\tSO_ATTACH_REUSEPORT_EBPF         = 0x36\n\tSO_BINDTODEVICE                  = 0xd\n\tSO_BINDTOIFINDEX                 = 0x41\n\tSO_BPF_EXTENSIONS                = 0x32\n\tSO_BROADCAST                     = 0x20\n\tSO_BSDCOMPAT                     = 0x400\n\tSO_BUF_LOCK                      = 0x51\n\tSO_BUSY_POLL                     = 0x30\n\tSO_BUSY_POLL_BUDGET              = 0x49\n\tSO_CNX_ADVICE                    = 0x37\n\tSO_COOKIE                        = 0x3b\n\tSO_DETACH_REUSEPORT_BPF          = 0x47\n\tSO_DOMAIN                        = 0x1029\n\tSO_DONTROUTE                     = 0x10\n\tSO_ERROR                         = 0x1007\n\tSO_INCOMING_CPU                  = 0x33\n\tSO_INCOMING_NAPI_ID              = 0x3a\n\tSO_KEEPALIVE                     = 0x8\n\tSO_LINGER                        = 0x80\n\tSO_LOCK_FILTER                   = 0x28\n\tSO_MARK                          = 0x22\n\tSO_MAX_PACING_RATE               = 0x31\n\tSO_MEMINFO                       = 0x39\n\tSO_NETNS_COOKIE                  = 0x50\n\tSO_NOFCS                         = 0x27\n\tSO_OOBINLINE                     = 0x100\n\tSO_PASSCRED                      = 0x2\n\tSO_PASSPIDFD                     = 0x55\n\tSO_PASSSEC                       = 0x1f\n\tSO_PEEK_OFF                      = 0x26\n\tSO_PEERCRED                      = 0x40\n\tSO_PEERGROUPS                    = 0x3d\n\tSO_PEERPIDFD                     = 0x56\n\tSO_PEERSEC                       = 0x1e\n\tSO_PREFER_BUSY_POLL              = 0x48\n\tSO_PROTOCOL                      = 0x1028\n\tSO_RCVBUF                        = 0x1002\n\tSO_RCVBUFFORCE                   = 0x100b\n\tSO_RCVLOWAT                      = 0x800\n\tSO_RCVMARK                       = 0x54\n\tSO_RCVTIMEO                      = 0x2000\n\tSO_RCVTIMEO_NEW                  = 0x44\n\tSO_RCVTIMEO_OLD                  = 0x2000\n\tSO_RESERVE_MEM                   = 0x52\n\tSO_REUSEADDR                     = 0x4\n\tSO_REUSEPORT                     = 0x200\n\tSO_RXQ_OVFL                      = 0x24\n\tSO_SECURITY_AUTHENTICATION       = 0x5001\n\tSO_SECURITY_ENCRYPTION_NETWORK   = 0x5004\n\tSO_SECURITY_ENCRYPTION_TRANSPORT = 0x5002\n\tSO_SELECT_ERR_QUEUE              = 0x29\n\tSO_SNDBUF                        = 0x1001\n\tSO_SNDBUFFORCE                   = 0x100a\n\tSO_SNDLOWAT                      = 0x1000\n\tSO_SNDTIMEO                      = 0x4000\n\tSO_SNDTIMEO_NEW                  = 0x45\n\tSO_SNDTIMEO_OLD                  = 0x4000\n\tSO_TIMESTAMPING                  = 0x23\n\tSO_TIMESTAMPING_NEW              = 0x43\n\tSO_TIMESTAMPING_OLD              = 0x23\n\tSO_TIMESTAMPNS                   = 0x21\n\tSO_TIMESTAMPNS_NEW               = 0x42\n\tSO_TIMESTAMPNS_OLD               = 0x21\n\tSO_TIMESTAMP_NEW                 = 0x46\n\tSO_TXREHASH                      = 0x53\n\tSO_TXTIME                        = 0x3f\n\tSO_TYPE                          = 0x1008\n\tSO_WIFI_STATUS                   = 0x25\n\tSO_ZEROCOPY                      = 0x3e\n\tTAB1                             = 0x800\n\tTAB2                             = 0x1000\n\tTAB3                             = 0x1800\n\tTABDLY                           = 0x1800\n\tTCFLSH                           = 0x20005407\n\tTCGETA                           = 0x40125401\n\tTCGETS                           = 0x40245408\n\tTCGETS2                          = 0x402c540c\n\tTCSAFLUSH                        = 0x2\n\tTCSBRK                           = 0x20005405\n\tTCSBRKP                          = 0x5425\n\tTCSETA                           = 0x80125402\n\tTCSETAF                          = 0x80125404\n\tTCSETAW                          = 0x80125403\n\tTCSETS                           = 0x80245409\n\tTCSETS2                          = 0x802c540d\n\tTCSETSF                          = 0x8024540b\n\tTCSETSF2                         = 0x802c540f\n\tTCSETSW                          = 0x8024540a\n\tTCSETSW2                         = 0x802c540e\n\tTCXONC                           = 0x20005406\n\tTFD_CLOEXEC                      = 0x400000\n\tTFD_NONBLOCK                     = 0x4000\n\tTIOCCBRK                         = 0x2000747a\n\tTIOCCONS                         = 0x20007424\n\tTIOCEXCL                         = 0x2000740d\n\tTIOCGDEV                         = 0x40045432\n\tTIOCGETD                         = 0x40047400\n\tTIOCGEXCL                        = 0x40045440\n\tTIOCGICOUNT                      = 0x545d\n\tTIOCGISO7816                     = 0x40285443\n\tTIOCGLCKTRMIOS                   = 0x5456\n\tTIOCGPGRP                        = 0x40047483\n\tTIOCGPKT                         = 0x40045438\n\tTIOCGPTLCK                       = 0x40045439\n\tTIOCGPTN                         = 0x40047486\n\tTIOCGPTPEER                      = 0x20007489\n\tTIOCGRS485                       = 0x40205441\n\tTIOCGSERIAL                      = 0x541e\n\tTIOCGSID                         = 0x40047485\n\tTIOCGSOFTCAR                     = 0x40047464\n\tTIOCGWINSZ                       = 0x40087468\n\tTIOCINQ                          = 0x4004667f\n\tTIOCLINUX                        = 0x541c\n\tTIOCMBIC                         = 0x8004746b\n\tTIOCMBIS                         = 0x8004746c\n\tTIOCMGET                         = 0x4004746a\n\tTIOCMIWAIT                       = 0x545c\n\tTIOCMSET                         = 0x8004746d\n\tTIOCM_CAR                        = 0x40\n\tTIOCM_CD                         = 0x40\n\tTIOCM_CTS                        = 0x20\n\tTIOCM_DSR                        = 0x100\n\tTIOCM_RI                         = 0x80\n\tTIOCM_RNG                        = 0x80\n\tTIOCM_SR                         = 0x10\n\tTIOCM_ST                         = 0x8\n\tTIOCNOTTY                        = 0x20007471\n\tTIOCNXCL                         = 0x2000740e\n\tTIOCOUTQ                         = 0x40047473\n\tTIOCPKT                          = 0x80047470\n\tTIOCSBRK                         = 0x2000747b\n\tTIOCSCTTY                        = 0x20007484\n\tTIOCSERCONFIG                    = 0x5453\n\tTIOCSERGETLSR                    = 0x5459\n\tTIOCSERGETMULTI                  = 0x545a\n\tTIOCSERGSTRUCT                   = 0x5458\n\tTIOCSERGWILD                     = 0x5454\n\tTIOCSERSETMULTI                  = 0x545b\n\tTIOCSERSWILD                     = 0x5455\n\tTIOCSETD                         = 0x80047401\n\tTIOCSIG                          = 0x80047488\n\tTIOCSISO7816                     = 0xc0285444\n\tTIOCSLCKTRMIOS                   = 0x5457\n\tTIOCSPGRP                        = 0x80047482\n\tTIOCSPTLCK                       = 0x80047487\n\tTIOCSRS485                       = 0xc0205442\n\tTIOCSSERIAL                      = 0x541f\n\tTIOCSSOFTCAR                     = 0x80047465\n\tTIOCSTART                        = 0x2000746e\n\tTIOCSTI                          = 0x80017472\n\tTIOCSTOP                         = 0x2000746f\n\tTIOCSWINSZ                       = 0x80087467\n\tTIOCVHANGUP                      = 0x20005437\n\tTOSTOP                           = 0x100\n\tTUNATTACHFILTER                  = 0x801054d5\n\tTUNDETACHFILTER                  = 0x801054d6\n\tTUNGETDEVNETNS                   = 0x200054e3\n\tTUNGETFEATURES                   = 0x400454cf\n\tTUNGETFILTER                     = 0x401054db\n\tTUNGETIFF                        = 0x400454d2\n\tTUNGETSNDBUF                     = 0x400454d3\n\tTUNGETVNETBE                     = 0x400454df\n\tTUNGETVNETHDRSZ                  = 0x400454d7\n\tTUNGETVNETLE                     = 0x400454dd\n\tTUNSETCARRIER                    = 0x800454e2\n\tTUNSETDEBUG                      = 0x800454c9\n\tTUNSETFILTEREBPF                 = 0x400454e1\n\tTUNSETGROUP                      = 0x800454ce\n\tTUNSETIFF                        = 0x800454ca\n\tTUNSETIFINDEX                    = 0x800454da\n\tTUNSETLINK                       = 0x800454cd\n\tTUNSETNOCSUM                     = 0x800454c8\n\tTUNSETOFFLOAD                    = 0x800454d0\n\tTUNSETOWNER                      = 0x800454cc\n\tTUNSETPERSIST                    = 0x800454cb\n\tTUNSETQUEUE                      = 0x800454d9\n\tTUNSETSNDBUF                     = 0x800454d4\n\tTUNSETSTEERINGEBPF               = 0x400454e0\n\tTUNSETTXFILTER                   = 0x800454d1\n\tTUNSETVNETBE                     = 0x800454de\n\tTUNSETVNETHDRSZ                  = 0x800454d8\n\tTUNSETVNETLE                     = 0x800454dc\n\tUBI_IOCATT                       = 0x80186f40\n\tUBI_IOCDET                       = 0x80046f41\n\tUBI_IOCEBCH                      = 0x80044f02\n\tUBI_IOCEBER                      = 0x80044f01\n\tUBI_IOCEBISMAP                   = 0x40044f05\n\tUBI_IOCEBMAP                     = 0x80084f03\n\tUBI_IOCEBUNMAP                   = 0x80044f04\n\tUBI_IOCMKVOL                     = 0x80986f00\n\tUBI_IOCRMVOL                     = 0x80046f01\n\tUBI_IOCRNVOL                     = 0x91106f03\n\tUBI_IOCRPEB                      = 0x80046f04\n\tUBI_IOCRSVOL                     = 0x800c6f02\n\tUBI_IOCSETVOLPROP                = 0x80104f06\n\tUBI_IOCSPEB                      = 0x80046f05\n\tUBI_IOCVOLCRBLK                  = 0x80804f07\n\tUBI_IOCVOLRMBLK                  = 0x20004f08\n\tUBI_IOCVOLUP                     = 0x80084f00\n\tVDISCARD                         = 0xd\n\tVEOF                             = 0x4\n\tVEOL                             = 0xb\n\tVEOL2                            = 0x10\n\tVMIN                             = 0x6\n\tVREPRINT                         = 0xc\n\tVSTART                           = 0x8\n\tVSTOP                            = 0x9\n\tVSUSP                            = 0xa\n\tVSWTC                            = 0x7\n\tVT1                              = 0x4000\n\tVTDLY                            = 0x4000\n\tVTIME                            = 0x5\n\tVWERASE                          = 0xe\n\tWDIOC_GETBOOTSTATUS              = 0x40045702\n\tWDIOC_GETPRETIMEOUT              = 0x40045709\n\tWDIOC_GETSTATUS                  = 0x40045701\n\tWDIOC_GETSUPPORT                 = 0x40285700\n\tWDIOC_GETTEMP                    = 0x40045703\n\tWDIOC_GETTIMELEFT                = 0x4004570a\n\tWDIOC_GETTIMEOUT                 = 0x40045707\n\tWDIOC_KEEPALIVE                  = 0x40045705\n\tWDIOC_SETOPTIONS                 = 0x40045704\n\tWORDSIZE                         = 0x40\n\tXCASE                            = 0x4\n\tXTABS                            = 0x1800\n\t_HIDIOCGRAWNAME                  = 0x40804804\n\t_HIDIOCGRAWPHYS                  = 0x40404805\n\t_HIDIOCGRAWUNIQ                  = 0x40404808\n\t__TIOCFLUSH                      = 0x80047410\n)\n\n// Errors\nconst (\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEADV            = syscall.Errno(0x53)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEALREADY        = syscall.Errno(0x25)\n\tEBADE           = syscall.Errno(0x66)\n\tEBADFD          = syscall.Errno(0x5d)\n\tEBADMSG         = syscall.Errno(0x4c)\n\tEBADR           = syscall.Errno(0x67)\n\tEBADRQC         = syscall.Errno(0x6a)\n\tEBADSLT         = syscall.Errno(0x6b)\n\tEBFONT          = syscall.Errno(0x6d)\n\tECANCELED       = syscall.Errno(0x7f)\n\tECHRNG          = syscall.Errno(0x5e)\n\tECOMM           = syscall.Errno(0x55)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0x4e)\n\tEDEADLOCK       = syscall.Errno(0x6c)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOTDOT         = syscall.Errno(0x58)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEHWPOISON       = syscall.Errno(0x87)\n\tEIDRM           = syscall.Errno(0x4d)\n\tEILSEQ          = syscall.Errno(0x7a)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISNAM          = syscall.Errno(0x78)\n\tEKEYEXPIRED     = syscall.Errno(0x81)\n\tEKEYREJECTED    = syscall.Errno(0x83)\n\tEKEYREVOKED     = syscall.Errno(0x82)\n\tEL2HLT          = syscall.Errno(0x65)\n\tEL2NSYNC        = syscall.Errno(0x5f)\n\tEL3HLT          = syscall.Errno(0x60)\n\tEL3RST          = syscall.Errno(0x61)\n\tELIBACC         = syscall.Errno(0x72)\n\tELIBBAD         = syscall.Errno(0x70)\n\tELIBEXEC        = syscall.Errno(0x6e)\n\tELIBMAX         = syscall.Errno(0x7b)\n\tELIBSCN         = syscall.Errno(0x7c)\n\tELNRNG          = syscall.Errno(0x62)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x7e)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x57)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENAVAIL         = syscall.Errno(0x77)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENOANO          = syscall.Errno(0x69)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENOCSI          = syscall.Errno(0x64)\n\tENODATA         = syscall.Errno(0x6f)\n\tENOKEY          = syscall.Errno(0x80)\n\tENOLCK          = syscall.Errno(0x4f)\n\tENOLINK         = syscall.Errno(0x52)\n\tENOMEDIUM       = syscall.Errno(0x7d)\n\tENOMSG          = syscall.Errno(0x4b)\n\tENONET          = syscall.Errno(0x50)\n\tENOPKG          = syscall.Errno(0x71)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSR           = syscall.Errno(0x4a)\n\tENOSTR          = syscall.Errno(0x48)\n\tENOSYS          = syscall.Errno(0x5a)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTNAM         = syscall.Errno(0x76)\n\tENOTRECOVERABLE = syscall.Errno(0x85)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x2d)\n\tENOTUNIQ        = syscall.Errno(0x73)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x5c)\n\tEOWNERDEAD      = syscall.Errno(0x84)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROTO          = syscall.Errno(0x56)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tEREMCHG         = syscall.Errno(0x59)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEREMOTEIO       = syscall.Errno(0x79)\n\tERESTART        = syscall.Errno(0x74)\n\tERFKILL         = syscall.Errno(0x86)\n\tERREMOTE        = syscall.Errno(0x51)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESRMNT          = syscall.Errno(0x54)\n\tESTALE          = syscall.Errno(0x46)\n\tESTRPIPE        = syscall.Errno(0x5b)\n\tETIME           = syscall.Errno(0x49)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tEUCLEAN         = syscall.Errno(0x75)\n\tEUNATCH         = syscall.Errno(0x63)\n\tEUSERS          = syscall.Errno(0x44)\n\tEXFULL          = syscall.Errno(0x68)\n)\n\n// Signals\nconst (\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCLD    = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGLOST   = syscall.Signal(0x1d)\n\tSIGPOLL   = syscall.Signal(0x17)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x1d)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device or resource busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"invalid cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"numerical result out of range\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"ENOTSUP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{57, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{58, \"ESHUTDOWN\", \"cannot send after transport endpoint shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale file handle\"},\n\t{71, \"EREMOTE\", \"object is remote\"},\n\t{72, \"ENOSTR\", \"device not a stream\"},\n\t{73, \"ETIME\", \"timer expired\"},\n\t{74, \"ENOSR\", \"out of streams resources\"},\n\t{75, \"ENOMSG\", \"no message of desired type\"},\n\t{76, \"EBADMSG\", \"bad message\"},\n\t{77, \"EIDRM\", \"identifier removed\"},\n\t{78, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{79, \"ENOLCK\", \"no locks available\"},\n\t{80, \"ENONET\", \"machine is not on the network\"},\n\t{81, \"ERREMOTE\", \"unknown error 81\"},\n\t{82, \"ENOLINK\", \"link has been severed\"},\n\t{83, \"EADV\", \"advertise error\"},\n\t{84, \"ESRMNT\", \"srmount error\"},\n\t{85, \"ECOMM\", \"communication error on send\"},\n\t{86, \"EPROTO\", \"protocol error\"},\n\t{87, \"EMULTIHOP\", \"multihop attempted\"},\n\t{88, \"EDOTDOT\", \"RFS specific error\"},\n\t{89, \"EREMCHG\", \"remote address changed\"},\n\t{90, \"ENOSYS\", \"function not implemented\"},\n\t{91, \"ESTRPIPE\", \"streams pipe error\"},\n\t{92, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{93, \"EBADFD\", \"file descriptor in bad state\"},\n\t{94, \"ECHRNG\", \"channel number out of range\"},\n\t{95, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{96, \"EL3HLT\", \"level 3 halted\"},\n\t{97, \"EL3RST\", \"level 3 reset\"},\n\t{98, \"ELNRNG\", \"link number out of range\"},\n\t{99, \"EUNATCH\", \"protocol driver not attached\"},\n\t{100, \"ENOCSI\", \"no CSI structure available\"},\n\t{101, \"EL2HLT\", \"level 2 halted\"},\n\t{102, \"EBADE\", \"invalid exchange\"},\n\t{103, \"EBADR\", \"invalid request descriptor\"},\n\t{104, \"EXFULL\", \"exchange full\"},\n\t{105, \"ENOANO\", \"no anode\"},\n\t{106, \"EBADRQC\", \"invalid request code\"},\n\t{107, \"EBADSLT\", \"invalid slot\"},\n\t{108, \"EDEADLOCK\", \"file locking deadlock error\"},\n\t{109, \"EBFONT\", \"bad font file format\"},\n\t{110, \"ELIBEXEC\", \"cannot exec a shared library directly\"},\n\t{111, \"ENODATA\", \"no data available\"},\n\t{112, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{113, \"ENOPKG\", \"package not installed\"},\n\t{114, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{115, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{116, \"ERESTART\", \"interrupted system call should be restarted\"},\n\t{117, \"EUCLEAN\", \"structure needs cleaning\"},\n\t{118, \"ENOTNAM\", \"not a XENIX named type file\"},\n\t{119, \"ENAVAIL\", \"no XENIX semaphores available\"},\n\t{120, \"EISNAM\", \"is a named type file\"},\n\t{121, \"EREMOTEIO\", \"remote I/O error\"},\n\t{122, \"EILSEQ\", \"invalid or incomplete multibyte or wide character\"},\n\t{123, \"ELIBMAX\", \"attempting to link in too many shared libraries\"},\n\t{124, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{125, \"ENOMEDIUM\", \"no medium found\"},\n\t{126, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{127, \"ECANCELED\", \"operation canceled\"},\n\t{128, \"ENOKEY\", \"required key not available\"},\n\t{129, \"EKEYEXPIRED\", \"key has expired\"},\n\t{130, \"EKEYREVOKED\", \"key has been revoked\"},\n\t{131, \"EKEYREJECTED\", \"key was rejected by service\"},\n\t{132, \"EOWNERDEAD\", \"owner died\"},\n\t{133, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{134, \"ERFKILL\", \"operation not possible due to RF-kill\"},\n\t{135, \"EHWPOISON\", \"memory page has hardware error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{6, \"SIGABRT\", \"aborted\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGLOST\", \"power failure\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_netbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tEN_SW_CTL_INF                     = 0x1000\n\tEN_SW_CTL_PREC                    = 0x300\n\tEN_SW_CTL_ROUND                   = 0xc00\n\tEN_SW_DATACHAIN                   = 0x80\n\tEN_SW_DENORM                      = 0x2\n\tEN_SW_INVOP                       = 0x1\n\tEN_SW_OVERFLOW                    = 0x8\n\tEN_SW_PRECLOSS                    = 0x20\n\tEN_SW_UNDERFLOW                   = 0x10\n\tEN_SW_ZERODIV                     = 0x4\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_netbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_netbsd_arm.go",
    "content": "// mkerrors.sh -marm\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -marm _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0084277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x400c427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x800c427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80084272\n\tBIOCSUDPF                         = 0x80084273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8030720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8030720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc01c697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0946920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0086926\n\tSIOCGIFDATA                       = 0xc0946985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0286936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc01c6987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCINITIFADDR                    = 0xc0446984\n\tSIOCSDRVSPEC                      = 0x801c697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8094691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x801c6988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0946986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x400c7458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x48087446\n\tTIOCPTSNAME                       = 0x48087448\n\tTIOCRCVFRAME                      = 0x80047445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80047444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_netbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_ARP                            = 0x1c\n\tAF_BLUETOOTH                      = 0x1f\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_HYLINK                         = 0xf\n\tAF_IEEE80211                      = 0x20\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x23\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OROUTE                         = 0x11\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x22\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tARPHRD_ARCNET                     = 0x7\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tARPHRD_STRIP                      = 0x17\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB460800                           = 0x70800\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB921600                           = 0xe1000\n\tB9600                             = 0x2580\n\tBIOCFEEDBACK                      = 0x8004427d\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc0104277\n\tBIOCGETIF                         = 0x4090426b\n\tBIOCGFEEDBACK                     = 0x4004427c\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRTIMEOUT                     = 0x4010427b\n\tBIOCGSEESENT                      = 0x40044278\n\tBIOCGSTATS                        = 0x4080426f\n\tBIOCGSTATSOLD                     = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDLT                          = 0x80044276\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8090426c\n\tBIOCSFEEDBACK                     = 0x8004427d\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRTIMEOUT                     = 0x8010427a\n\tBIOCSSEESENT                      = 0x80044279\n\tBIOCSTCPF                         = 0x80104272\n\tBIOCSUDPF                         = 0x80104273\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x8\n\tBPF_ALIGNMENT32                   = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DFLTBUFSIZE                   = 0x100000\n\tBPF_DIV                           = 0x30\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x1000000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLONE_CSIGNAL                     = 0xff\n\tCLONE_FILES                       = 0x400\n\tCLONE_FS                          = 0x200\n\tCLONE_PID                         = 0x1000\n\tCLONE_PTRACE                      = 0x2000\n\tCLONE_SIGHAND                     = 0x800\n\tCLONE_VFORK                       = 0x4000\n\tCLONE_VM                          = 0x100\n\tCPUSTATES                         = 0x5\n\tCP_IDLE                           = 0x4\n\tCP_INTR                           = 0x3\n\tCP_NICE                           = 0x1\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0x14\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tCTL_QUERY                         = -0x2\n\tDIOCBSFLUSH                       = 0x20006478\n\tDLT_A429                          = 0xb8\n\tDLT_A653_ICM                      = 0xb9\n\tDLT_AIRONET_HEADER                = 0x78\n\tDLT_AOS                           = 0xde\n\tDLT_APPLE_IP_OVER_IEEE1394        = 0x8a\n\tDLT_ARCNET                        = 0x7\n\tDLT_ARCNET_LINUX                  = 0x81\n\tDLT_ATM_CLIP                      = 0x13\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AURORA                        = 0x7e\n\tDLT_AX25                          = 0x3\n\tDLT_AX25_KISS                     = 0xca\n\tDLT_BACNET_MS_TP                  = 0xa5\n\tDLT_BLUETOOTH_HCI_H4              = 0xbb\n\tDLT_BLUETOOTH_HCI_H4_WITH_PHDR    = 0xc9\n\tDLT_CAN20B                        = 0xbe\n\tDLT_CAN_SOCKETCAN                 = 0xe3\n\tDLT_CHAOS                         = 0x5\n\tDLT_CISCO_IOS                     = 0x76\n\tDLT_C_HDLC                        = 0x68\n\tDLT_C_HDLC_WITH_DIR               = 0xcd\n\tDLT_DECT                          = 0xdd\n\tDLT_DOCSIS                        = 0x8f\n\tDLT_ECONET                        = 0x73\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0x6d\n\tDLT_ERF                           = 0xc5\n\tDLT_ERF_ETH                       = 0xaf\n\tDLT_ERF_POS                       = 0xb0\n\tDLT_FC_2                          = 0xe0\n\tDLT_FC_2_WITH_FRAME_DELIMS        = 0xe1\n\tDLT_FDDI                          = 0xa\n\tDLT_FLEXRAY                       = 0xd2\n\tDLT_FRELAY                        = 0x6b\n\tDLT_FRELAY_WITH_DIR               = 0xce\n\tDLT_GCOM_SERIAL                   = 0xad\n\tDLT_GCOM_T1E1                     = 0xac\n\tDLT_GPF_F                         = 0xab\n\tDLT_GPF_T                         = 0xaa\n\tDLT_GPRS_LLC                      = 0xa9\n\tDLT_GSMTAP_ABIS                   = 0xda\n\tDLT_GSMTAP_UM                     = 0xd9\n\tDLT_HDLC                          = 0x10\n\tDLT_HHDLC                         = 0x79\n\tDLT_HIPPI                         = 0xf\n\tDLT_IBM_SN                        = 0x92\n\tDLT_IBM_SP                        = 0x91\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS          = 0xa3\n\tDLT_IEEE802_15_4                  = 0xc3\n\tDLT_IEEE802_15_4_LINUX            = 0xbf\n\tDLT_IEEE802_15_4_NONASK_PHY       = 0xd7\n\tDLT_IEEE802_16_MAC_CPS            = 0xbc\n\tDLT_IEEE802_16_MAC_CPS_RADIO      = 0xc1\n\tDLT_IPMB                          = 0xc7\n\tDLT_IPMB_LINUX                    = 0xd1\n\tDLT_IPNET                         = 0xe2\n\tDLT_IPV4                          = 0xe4\n\tDLT_IPV6                          = 0xe5\n\tDLT_IP_OVER_FC                    = 0x7a\n\tDLT_JUNIPER_ATM1                  = 0x89\n\tDLT_JUNIPER_ATM2                  = 0x87\n\tDLT_JUNIPER_CHDLC                 = 0xb5\n\tDLT_JUNIPER_ES                    = 0x84\n\tDLT_JUNIPER_ETHER                 = 0xb2\n\tDLT_JUNIPER_FRELAY                = 0xb4\n\tDLT_JUNIPER_GGSN                  = 0x85\n\tDLT_JUNIPER_ISM                   = 0xc2\n\tDLT_JUNIPER_MFR                   = 0x86\n\tDLT_JUNIPER_MLFR                  = 0x83\n\tDLT_JUNIPER_MLPPP                 = 0x82\n\tDLT_JUNIPER_MONITOR               = 0xa4\n\tDLT_JUNIPER_PIC_PEER              = 0xae\n\tDLT_JUNIPER_PPP                   = 0xb3\n\tDLT_JUNIPER_PPPOE                 = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM             = 0xa8\n\tDLT_JUNIPER_SERVICES              = 0x88\n\tDLT_JUNIPER_ST                    = 0xc8\n\tDLT_JUNIPER_VP                    = 0xb7\n\tDLT_LAPB_WITH_DIR                 = 0xcf\n\tDLT_LAPD                          = 0xcb\n\tDLT_LIN                           = 0xd4\n\tDLT_LINUX_EVDEV                   = 0xd8\n\tDLT_LINUX_IRDA                    = 0x90\n\tDLT_LINUX_LAPD                    = 0xb1\n\tDLT_LINUX_SLL                     = 0x71\n\tDLT_LOOP                          = 0x6c\n\tDLT_LTALK                         = 0x72\n\tDLT_MFR                           = 0xb6\n\tDLT_MOST                          = 0xd3\n\tDLT_MPLS                          = 0xdb\n\tDLT_MTP2                          = 0x8c\n\tDLT_MTP2_WITH_PHDR                = 0x8b\n\tDLT_MTP3                          = 0x8d\n\tDLT_NULL                          = 0x0\n\tDLT_PCI_EXP                       = 0x7d\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPI                           = 0xc0\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0xe\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_PPPD                      = 0xa6\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PPP_WITH_DIR                  = 0xcc\n\tDLT_PRISM_HEADER                  = 0x77\n\tDLT_PRONET                        = 0x4\n\tDLT_RAIF1                         = 0xc6\n\tDLT_RAW                           = 0xc\n\tDLT_RAWAF_MASK                    = 0x2240000\n\tDLT_RIO                           = 0x7c\n\tDLT_SCCP                          = 0x8e\n\tDLT_SITA                          = 0xc4\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xd\n\tDLT_SUNATM                        = 0x7b\n\tDLT_SYMANTEC_FIREWALL             = 0x63\n\tDLT_TZSP                          = 0x80\n\tDLT_USB                           = 0xba\n\tDLT_USB_LINUX                     = 0xbd\n\tDLT_USB_LINUX_MMAPPED             = 0xdc\n\tDLT_WIHART                        = 0xdf\n\tDLT_X2E_SERIAL                    = 0xd5\n\tDLT_X2E_XORAYA                    = 0xd6\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tDT_WHT                            = 0xe\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMUL_LINUX                        = 0x1\n\tEMUL_LINUX32                      = 0x5\n\tEMUL_MAXID                        = 0x6\n\tETHERCAP_JUMBO_MTU                = 0x4\n\tETHERCAP_VLAN_HWTAGGING           = 0x2\n\tETHERCAP_VLAN_MTU                 = 0x1\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERMTU_JUMBO                    = 0x2328\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PAE                     = 0x888e\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOWPROTOCOLS           = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MAX_LEN_JUMBO               = 0x233a\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_PPPOE_ENCAP_LEN             = 0x8\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = 0x2\n\tEVFILT_PROC                       = 0x4\n\tEVFILT_READ                       = 0x0\n\tEVFILT_SIGNAL                     = 0x5\n\tEVFILT_SYSCOUNT                   = 0x7\n\tEVFILT_TIMER                      = 0x6\n\tEVFILT_VNODE                      = 0x3\n\tEVFILT_WRITE                      = 0x1\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_SYSFLAGS                       = 0xf000\n\tEXTA                              = 0x4b00\n\tEXTATTR_CMD_START                 = 0x1\n\tEXTATTR_CMD_STOP                  = 0x2\n\tEXTATTR_NAMESPACE_SYSTEM          = 0x2\n\tEXTATTR_NAMESPACE_USER            = 0x1\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x100\n\tFLUSHO                            = 0x800000\n\tF_CLOSEM                          = 0xa\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xc\n\tF_FSCTL                           = -0x80000000\n\tF_FSDIRMASK                       = 0x70000000\n\tF_FSIN                            = 0x10000000\n\tF_FSINOUT                         = 0x30000000\n\tF_FSOUT                           = 0x20000000\n\tF_FSPRIV                          = 0x8000\n\tF_FSVOID                          = 0x40000000\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETNOSIGPIPE                    = 0xd\n\tF_GETOWN                          = 0x5\n\tF_MAXFD                           = 0xb\n\tF_OK                              = 0x0\n\tF_PARAM_MASK                      = 0xfff\n\tF_PARAM_MAX                       = 0xfff\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETNOSIGPIPE                    = 0xe\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFA_ROUTE                         = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8f52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_NOTRAILERS                    = 0x20\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf8\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf2\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf1\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_STF                           = 0xd7\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_IPV6_ICMP                 = 0x3a\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x34\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_VRRP                      = 0x70\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPSEC_POLICY                 = 0x1c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_EF                             = 0x8000\n\tIP_ERRORMTU                       = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPSEC_POLICY                   = 0x16\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0x14\n\tIP_MF                             = 0x2000\n\tIP_MINFRAGSIZE                    = 0x45\n\tIP_MINTTL                         = 0x18\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVIF                         = 0x14\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVTTL                        = 0x17\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ALIGNMENT_16MB                = 0x18000000\n\tMAP_ALIGNMENT_1TB                 = 0x28000000\n\tMAP_ALIGNMENT_256TB               = 0x30000000\n\tMAP_ALIGNMENT_4GB                 = 0x20000000\n\tMAP_ALIGNMENT_64KB                = 0x10000000\n\tMAP_ALIGNMENT_64PB                = 0x38000000\n\tMAP_ALIGNMENT_MASK                = -0x1000000\n\tMAP_ALIGNMENT_SHIFT               = 0x18\n\tMAP_ANON                          = 0x1000\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_HASSEMAPHORE                  = 0x200\n\tMAP_INHERIT                       = 0x80\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_DEFAULT               = 0x1\n\tMAP_INHERIT_DONATE_COPY           = 0x3\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_NORESERVE                     = 0x40\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x20\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x2000\n\tMAP_TRYFIXED                      = 0x400\n\tMAP_WIRED                         = 0x800\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_BASIC_FLAGS                   = 0xe782807f\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DISCARD                       = 0x800000\n\tMNT_EXKERB                        = 0x800\n\tMNT_EXNORESPORT                   = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXPUBLIC                      = 0x10000000\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_EXTATTR                       = 0x1000000\n\tMNT_FORCE                         = 0x80000\n\tMNT_GETARGS                       = 0x400000\n\tMNT_IGNORE                        = 0x100000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_LOG                           = 0x2000000\n\tMNT_NOATIME                       = 0x4000000\n\tMNT_NOCOREDUMP                    = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NODEVMTIME                    = 0x40000000\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_OP_FLAGS                      = 0x4d0000\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELATIME                      = 0x20000\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x80000000\n\tMNT_SYMPERM                       = 0x20000000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UNION                         = 0x20\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0xff90ffff\n\tMNT_WAIT                          = 0x1\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CONTROLMBUF                   = 0x2000000\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_IOVUSRSPACE                   = 0x4000000\n\tMSG_LENUSRSPACE                   = 0x8000000\n\tMSG_MCAST                         = 0x200\n\tMSG_NAMEMBUF                      = 0x1000000\n\tMSG_NBIO                          = 0x1000\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_USERFLAGS                     = 0xffffff\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x2\n\tMS_SYNC                           = 0x4\n\tNAME_MAX                          = 0x1ff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x5\n\tNET_RT_MAXID                      = 0x6\n\tNET_RT_OIFLIST                    = 0x4\n\tNET_RT_OOIFLIST                   = 0x3\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOFIOGETBMAP                       = 0xc004667a\n\tONLCR                             = 0x2\n\tONLRET                            = 0x40\n\tONOCR                             = 0x20\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tO_ACCMODE                         = 0x3\n\tO_ALT_IO                          = 0x40000\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x400000\n\tO_CREAT                           = 0x200\n\tO_DIRECT                          = 0x80000\n\tO_DIRECTORY                       = 0x200000\n\tO_DSYNC                           = 0x10000\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_NOSIGPIPE                       = 0x1000000\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x20000\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPRI_IOFLUSH                       = 0x7c\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_AS                         = 0xa\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BRD                          = 0x7\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_MAX                          = 0x9\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_TAG                          = 0x8\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BRD                           = 0x80\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_NETMASK                       = 0x4\n\tRTA_TAG                           = 0x100\n\tRTF_ANNOUNCE                      = 0x20000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_CLONED                        = 0x2000\n\tRTF_CLONING                       = 0x100\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_MASK                          = 0x80\n\tRTF_MODIFIED                      = 0x20\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_REJECT                        = 0x8\n\tRTF_SRC                           = 0x10000\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_XRESOLVE                      = 0x200\n\tRTM_ADD                           = 0x1\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDR                       = 0x15\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_GET                           = 0x4\n\tRTM_IEEE80211                     = 0x11\n\tRTM_IFANNOUNCE                    = 0x10\n\tRTM_IFINFO                        = 0x14\n\tRTM_LLINFO_UPD                    = 0x13\n\tRTM_LOCK                          = 0x8\n\tRTM_LOSING                        = 0x5\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_OIFINFO                       = 0xf\n\tRTM_OLDADD                        = 0x9\n\tRTM_OLDDEL                        = 0xa\n\tRTM_OOIFINFO                      = 0xe\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_RTTUNIT                       = 0xf4240\n\tRTM_SETGATE                       = 0x12\n\tRTM_VERSION                       = 0x4\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tSCM_CREDS                         = 0x4\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x8\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80906931\n\tSIOCADDRT                         = 0x8038720a\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCALIFADDR                      = 0x8118691c\n\tSIOCATMARK                        = 0x40047307\n\tSIOCDELMULTI                      = 0x80906932\n\tSIOCDELRT                         = 0x8038720b\n\tSIOCDIFADDR                       = 0x80906919\n\tSIOCDIFPHYADDR                    = 0x80906949\n\tSIOCDLIFADDR                      = 0x8118691e\n\tSIOCGDRVSPEC                      = 0xc028697b\n\tSIOCGETPFSYNC                     = 0xc09069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGHIWAT                        = 0x40047301\n\tSIOCGIFADDR                       = 0xc0906921\n\tSIOCGIFADDRPREF                   = 0xc0986920\n\tSIOCGIFALIAS                      = 0xc040691b\n\tSIOCGIFBRDADDR                    = 0xc0906923\n\tSIOCGIFCAP                        = 0xc0206976\n\tSIOCGIFCONF                       = 0xc0106926\n\tSIOCGIFDATA                       = 0xc0986985\n\tSIOCGIFDLT                        = 0xc0906977\n\tSIOCGIFDSTADDR                    = 0xc0906922\n\tSIOCGIFFLAGS                      = 0xc0906911\n\tSIOCGIFGENERIC                    = 0xc090693a\n\tSIOCGIFMEDIA                      = 0xc0306936\n\tSIOCGIFMETRIC                     = 0xc0906917\n\tSIOCGIFMTU                        = 0xc090697e\n\tSIOCGIFNETMASK                    = 0xc0906925\n\tSIOCGIFPDSTADDR                   = 0xc0906948\n\tSIOCGIFPSRCADDR                   = 0xc0906947\n\tSIOCGLIFADDR                      = 0xc118691d\n\tSIOCGLIFPHYADDR                   = 0xc118694b\n\tSIOCGLINKSTR                      = 0xc0286987\n\tSIOCGLOWAT                        = 0x40047303\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGVH                           = 0xc0906983\n\tSIOCIFCREATE                      = 0x8090697a\n\tSIOCIFDESTROY                     = 0x80906979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCINITIFADDR                    = 0xc0706984\n\tSIOCSDRVSPEC                      = 0x8028697b\n\tSIOCSETPFSYNC                     = 0x809069f7\n\tSIOCSHIWAT                        = 0x80047300\n\tSIOCSIFADDR                       = 0x8090690c\n\tSIOCSIFADDRPREF                   = 0x8098691f\n\tSIOCSIFBRDADDR                    = 0x80906913\n\tSIOCSIFCAP                        = 0x80206975\n\tSIOCSIFDSTADDR                    = 0x8090690e\n\tSIOCSIFFLAGS                      = 0x80906910\n\tSIOCSIFGENERIC                    = 0x80906939\n\tSIOCSIFMEDIA                      = 0xc0906935\n\tSIOCSIFMETRIC                     = 0x80906918\n\tSIOCSIFMTU                        = 0x8090697f\n\tSIOCSIFNETMASK                    = 0x80906916\n\tSIOCSIFPHYADDR                    = 0x80406946\n\tSIOCSLIFPHYADDR                   = 0x8118694a\n\tSIOCSLINKSTR                      = 0x80286988\n\tSIOCSLOWAT                        = 0x80047302\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSVH                           = 0xc0906982\n\tSIOCZIFDATA                       = 0xc0986986\n\tSOCK_CLOEXEC                      = 0x10000000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_FLAGS_MASK                   = 0xf0000000\n\tSOCK_NONBLOCK                     = 0x20000000\n\tSOCK_NOSIGPIPE                    = 0x40000000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_ACCEPTFILTER                   = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NOHEADER                       = 0x100a\n\tSO_NOSIGPIPE                      = 0x800\n\tSO_OOBINLINE                      = 0x100\n\tSO_OVERFLOWED                     = 0x1009\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x100c\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x100b\n\tSO_TIMESTAMP                      = 0x2000\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSYSCTL_VERSION                    = 0x1000000\n\tSYSCTL_VERS_0                     = 0x0\n\tSYSCTL_VERS_1                     = 0x1000000\n\tSYSCTL_VERS_MASK                  = 0xff000000\n\tS_ARCH1                           = 0x10000\n\tS_ARCH2                           = 0x20000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IFWHT                           = 0xe000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tS_LOGIN_SET                       = 0x1\n\tTCIFLUSH                          = 0x1\n\tTCIOFLUSH                         = 0x3\n\tTCOFLUSH                          = 0x2\n\tTCP_CONGCTL                       = 0x20\n\tTCP_KEEPCNT                       = 0x6\n\tTCP_KEEPIDLE                      = 0x3\n\tTCP_KEEPINIT                      = 0x7\n\tTCP_KEEPINTVL                     = 0x5\n\tTCP_MAXBURST                      = 0x4\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x10\n\tTCP_MINMSS                        = 0xd8\n\tTCP_MSS                           = 0x218\n\tTCP_NODELAY                       = 0x1\n\tTCSAFLUSH                         = 0x2\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCONS                          = 0x80047462\n\tTIOCDCDTIMESTAMP                  = 0x40107458\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CDTRCTS                  = 0x10\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGLINED                        = 0x40207442\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGQSIZE                        = 0x40047481\n\tTIOCGRANTPT                       = 0x20007447\n\tTIOCGSID                          = 0x40047463\n\tTIOCGSIZE                         = 0x40087468\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCPTMGET                        = 0x40287446\n\tTIOCPTSNAME                       = 0x40287448\n\tTIOCRCVFRAME                      = 0x80087445\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x2000745f\n\tTIOCSLINED                        = 0x80207443\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSQSIZE                        = 0x80047480\n\tTIOCSSIZE                         = 0x80087467\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x80047465\n\tTIOCSTI                           = 0x80017472\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCXMTFRAME                      = 0x80087444\n\tTOSTOP                            = 0x400000\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALL                              = 0x8\n\tWALLSIG                           = 0x8\n\tWALTSIG                           = 0x4\n\tWCLONE                            = 0x4\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWNOWAIT                           = 0x10000\n\tWNOZOMBIE                         = 0x20000\n\tWOPTSCHECKED                      = 0x40000\n\tWSTOPPED                          = 0x7f\n\tWUNTRACED                         = 0x2\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x58)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x57)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x52)\n\tEILSEQ          = syscall.Errno(0x55)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x60)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tEMULTIHOP       = syscall.Errno(0x5e)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x5d)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODATA         = syscall.Errno(0x59)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOLINK         = syscall.Errno(0x5f)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x53)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x5a)\n\tENOSTR          = syscall.Errno(0x5b)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x56)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x54)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x60)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIME           = syscall.Errno(0x5c)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGPWR    = syscall.Signal(0x20)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large or too small\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol option not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"connection timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disc quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC prog. not avail\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIDRM\", \"identifier removed\"},\n\t{83, \"ENOMSG\", \"no message of desired type\"},\n\t{84, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{85, \"EILSEQ\", \"illegal byte sequence\"},\n\t{86, \"ENOTSUP\", \"not supported\"},\n\t{87, \"ECANCELED\", \"operation Canceled\"},\n\t{88, \"EBADMSG\", \"bad or Corrupt message\"},\n\t{89, \"ENODATA\", \"no message available\"},\n\t{90, \"ENOSR\", \"no STREAM resources\"},\n\t{91, \"ENOSTR\", \"not a STREAM\"},\n\t{92, \"ETIME\", \"STREAM ioctl timeout\"},\n\t{93, \"ENOATTR\", \"attribute not found\"},\n\t{94, \"EMULTIHOP\", \"multihop attempted\"},\n\t{95, \"ENOLINK\", \"link has been severed\"},\n\t{96, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"stopped (signal)\"},\n\t{18, \"SIGTSTP\", \"stopped\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGPWR\", \"power fail/restart\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_386.go",
    "content": "// mkerrors.sh -m32\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m32 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x400c426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x800c426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xccc84404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xccc8441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xccc84407\n\tDIOCGETRULES                      = 0xccc84406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc084444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0844450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x805c693c\n\tSIOCBRDGADDL                      = 0x805c6949\n\tSIOCBRDGADDS                      = 0x805c6941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x805c693d\n\tSIOCBRDGDELS                      = 0x805c6942\n\tSIOCBRDGFLUSH                     = 0x805c6948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc05c693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc03c6958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc05c6942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x805c6955\n\tSIOCBRDGSIFFLGS                   = 0x805c693f\n\tSIOCBRDGSIFPRIO                   = 0x805c6954\n\tSIOCBRDGSIFPROT                   = 0x805c694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x400c745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_arm.go",
    "content": "// mkerrors.sh\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc008427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80084267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80084277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc100445d\n\tDIOCADDRULE                       = 0xcce04404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcce0441a\n\tDIOCCLRIFFLAG                     = 0xc024445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0d04412\n\tDIOCCLRSTATUS                     = 0xc0244416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1084460\n\tDIOCGETQUEUE                      = 0xc100445f\n\tDIOCGETQUEUES                     = 0xc100445e\n\tDIOCGETRULE                       = 0xcce04407\n\tDIOCGETRULES                      = 0xcce04406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0084454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0084419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0244457\n\tDIOCKILLSRCNODES                  = 0xc068445b\n\tDIOCKILLSTATES                    = 0xc0d04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc44c4443\n\tDIOCRADDTABLES                    = 0xc44c443d\n\tDIOCRCLRADDRS                     = 0xc44c4442\n\tDIOCRCLRASTATS                    = 0xc44c4448\n\tDIOCRCLRTABLES                    = 0xc44c443c\n\tDIOCRCLRTSTATS                    = 0xc44c4441\n\tDIOCRDELADDRS                     = 0xc44c4444\n\tDIOCRDELTABLES                    = 0xc44c443e\n\tDIOCRGETADDRS                     = 0xc44c4446\n\tDIOCRGETASTATS                    = 0xc44c4447\n\tDIOCRGETTABLES                    = 0xc44c443f\n\tDIOCRGETTSTATS                    = 0xc44c4440\n\tDIOCRINADEFINE                    = 0xc44c444d\n\tDIOCRSETADDRS                     = 0xc44c4445\n\tDIOCRSETTFLAGS                    = 0xc44c444a\n\tDIOCRTSTADDRS                     = 0xc44c4449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0244459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0244414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc00c4451\n\tDIOCXCOMMIT                       = 0xc00c4452\n\tDIOCXROLLBACK                     = 0xc00c4453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80246987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc028694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0186943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80246989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0147534\n\tSIOCGETVIFCNT                     = 0xc0147533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0086924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc024698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc024698d\n\tSIOCGIFGMEMB                      = 0xc024698a\n\tSIOCGIFGROUP                      = 0xc0246988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0386938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc00c6978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8024698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_arm64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{28672, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_mips64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGIOT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n\t{81920, \"SIGSTKSZ\", \"unknown signal\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_ppc64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xfffffff\n\tIPV6_FLOWLABEL_MASK               = 0xfffff\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMSG_WAITFORONE                    = 0x1000\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_openbsd_riscv64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_APPLETALK                      = 0x10\n\tAF_BLUETOOTH                      = 0x20\n\tAF_CCITT                          = 0xa\n\tAF_CHAOS                          = 0x5\n\tAF_CNT                            = 0x15\n\tAF_COIP                           = 0x14\n\tAF_DATAKIT                        = 0x9\n\tAF_DECnet                         = 0xc\n\tAF_DLI                            = 0xd\n\tAF_E164                           = 0x1a\n\tAF_ECMA                           = 0x8\n\tAF_ENCAP                          = 0x1c\n\tAF_HYLINK                         = 0xf\n\tAF_IMPLINK                        = 0x3\n\tAF_INET                           = 0x2\n\tAF_INET6                          = 0x18\n\tAF_IPX                            = 0x17\n\tAF_ISDN                           = 0x1a\n\tAF_ISO                            = 0x7\n\tAF_KEY                            = 0x1e\n\tAF_LAT                            = 0xe\n\tAF_LINK                           = 0x12\n\tAF_LOCAL                          = 0x1\n\tAF_MAX                            = 0x24\n\tAF_MPLS                           = 0x21\n\tAF_NATM                           = 0x1b\n\tAF_NS                             = 0x6\n\tAF_OSI                            = 0x7\n\tAF_PUP                            = 0x4\n\tAF_ROUTE                          = 0x11\n\tAF_SIP                            = 0x1d\n\tAF_SNA                            = 0xb\n\tAF_UNIX                           = 0x1\n\tAF_UNSPEC                         = 0x0\n\tALTWERASE                         = 0x200\n\tARPHRD_ETHER                      = 0x1\n\tARPHRD_FRELAY                     = 0xf\n\tARPHRD_IEEE1394                   = 0x18\n\tARPHRD_IEEE802                    = 0x6\n\tB0                                = 0x0\n\tB110                              = 0x6e\n\tB115200                           = 0x1c200\n\tB1200                             = 0x4b0\n\tB134                              = 0x86\n\tB14400                            = 0x3840\n\tB150                              = 0x96\n\tB1800                             = 0x708\n\tB19200                            = 0x4b00\n\tB200                              = 0xc8\n\tB230400                           = 0x38400\n\tB2400                             = 0x960\n\tB28800                            = 0x7080\n\tB300                              = 0x12c\n\tB38400                            = 0x9600\n\tB4800                             = 0x12c0\n\tB50                               = 0x32\n\tB57600                            = 0xe100\n\tB600                              = 0x258\n\tB7200                             = 0x1c20\n\tB75                               = 0x4b\n\tB76800                            = 0x12c00\n\tB9600                             = 0x2580\n\tBIOCFLUSH                         = 0x20004268\n\tBIOCGBLEN                         = 0x40044266\n\tBIOCGDIRFILT                      = 0x4004427c\n\tBIOCGDLT                          = 0x4004426a\n\tBIOCGDLTLIST                      = 0xc010427b\n\tBIOCGETIF                         = 0x4020426b\n\tBIOCGFILDROP                      = 0x40044278\n\tBIOCGHDRCMPLT                     = 0x40044274\n\tBIOCGRSIG                         = 0x40044273\n\tBIOCGRTIMEOUT                     = 0x4010426e\n\tBIOCGSTATS                        = 0x4008426f\n\tBIOCIMMEDIATE                     = 0x80044270\n\tBIOCLOCK                          = 0x20004276\n\tBIOCPROMISC                       = 0x20004269\n\tBIOCSBLEN                         = 0xc0044266\n\tBIOCSDIRFILT                      = 0x8004427d\n\tBIOCSDLT                          = 0x8004427a\n\tBIOCSETF                          = 0x80104267\n\tBIOCSETIF                         = 0x8020426c\n\tBIOCSETWF                         = 0x80104277\n\tBIOCSFILDROP                      = 0x80044279\n\tBIOCSHDRCMPLT                     = 0x80044275\n\tBIOCSRSIG                         = 0x80044272\n\tBIOCSRTIMEOUT                     = 0x8010426d\n\tBIOCVERSION                       = 0x40044271\n\tBPF_A                             = 0x10\n\tBPF_ABS                           = 0x20\n\tBPF_ADD                           = 0x0\n\tBPF_ALIGNMENT                     = 0x4\n\tBPF_ALU                           = 0x4\n\tBPF_AND                           = 0x50\n\tBPF_B                             = 0x10\n\tBPF_DIRECTION_IN                  = 0x1\n\tBPF_DIRECTION_OUT                 = 0x2\n\tBPF_DIV                           = 0x30\n\tBPF_FILDROP_CAPTURE               = 0x1\n\tBPF_FILDROP_DROP                  = 0x2\n\tBPF_FILDROP_PASS                  = 0x0\n\tBPF_F_DIR_IN                      = 0x10\n\tBPF_F_DIR_MASK                    = 0x30\n\tBPF_F_DIR_OUT                     = 0x20\n\tBPF_F_DIR_SHIFT                   = 0x4\n\tBPF_F_FLOWID                      = 0x8\n\tBPF_F_PRI_MASK                    = 0x7\n\tBPF_H                             = 0x8\n\tBPF_IMM                           = 0x0\n\tBPF_IND                           = 0x40\n\tBPF_JA                            = 0x0\n\tBPF_JEQ                           = 0x10\n\tBPF_JGE                           = 0x30\n\tBPF_JGT                           = 0x20\n\tBPF_JMP                           = 0x5\n\tBPF_JSET                          = 0x40\n\tBPF_K                             = 0x0\n\tBPF_LD                            = 0x0\n\tBPF_LDX                           = 0x1\n\tBPF_LEN                           = 0x80\n\tBPF_LSH                           = 0x60\n\tBPF_MAJOR_VERSION                 = 0x1\n\tBPF_MAXBUFSIZE                    = 0x200000\n\tBPF_MAXINSNS                      = 0x200\n\tBPF_MEM                           = 0x60\n\tBPF_MEMWORDS                      = 0x10\n\tBPF_MINBUFSIZE                    = 0x20\n\tBPF_MINOR_VERSION                 = 0x1\n\tBPF_MISC                          = 0x7\n\tBPF_MSH                           = 0xa0\n\tBPF_MUL                           = 0x20\n\tBPF_NEG                           = 0x80\n\tBPF_OR                            = 0x40\n\tBPF_RELEASE                       = 0x30bb6\n\tBPF_RET                           = 0x6\n\tBPF_RND                           = 0xc0\n\tBPF_RSH                           = 0x70\n\tBPF_ST                            = 0x2\n\tBPF_STX                           = 0x3\n\tBPF_SUB                           = 0x10\n\tBPF_TAX                           = 0x0\n\tBPF_TXA                           = 0x80\n\tBPF_W                             = 0x0\n\tBPF_X                             = 0x8\n\tBRKINT                            = 0x2\n\tCFLUSH                            = 0xf\n\tCLOCAL                            = 0x8000\n\tCLOCK_BOOTTIME                    = 0x6\n\tCLOCK_MONOTONIC                   = 0x3\n\tCLOCK_PROCESS_CPUTIME_ID          = 0x2\n\tCLOCK_REALTIME                    = 0x0\n\tCLOCK_THREAD_CPUTIME_ID           = 0x4\n\tCLOCK_UPTIME                      = 0x5\n\tCPUSTATES                         = 0x6\n\tCP_IDLE                           = 0x5\n\tCP_INTR                           = 0x4\n\tCP_NICE                           = 0x1\n\tCP_SPIN                           = 0x3\n\tCP_SYS                            = 0x2\n\tCP_USER                           = 0x0\n\tCREAD                             = 0x800\n\tCRTSCTS                           = 0x10000\n\tCS5                               = 0x0\n\tCS6                               = 0x100\n\tCS7                               = 0x200\n\tCS8                               = 0x300\n\tCSIZE                             = 0x300\n\tCSTART                            = 0x11\n\tCSTATUS                           = 0xff\n\tCSTOP                             = 0x13\n\tCSTOPB                            = 0x400\n\tCSUSP                             = 0x1a\n\tCTL_HW                            = 0x6\n\tCTL_KERN                          = 0x1\n\tCTL_MAXNAME                       = 0xc\n\tCTL_NET                           = 0x4\n\tDIOCADDQUEUE                      = 0xc110445d\n\tDIOCADDRULE                       = 0xcd604404\n\tDIOCADDSTATE                      = 0xc1084425\n\tDIOCCHANGERULE                    = 0xcd60441a\n\tDIOCCLRIFFLAG                     = 0xc028445a\n\tDIOCCLRSRCNODES                   = 0x20004455\n\tDIOCCLRSTATES                     = 0xc0e04412\n\tDIOCCLRSTATUS                     = 0xc0284416\n\tDIOCGETLIMIT                      = 0xc0084427\n\tDIOCGETQSTATS                     = 0xc1204460\n\tDIOCGETQUEUE                      = 0xc110445f\n\tDIOCGETQUEUES                     = 0xc110445e\n\tDIOCGETRULE                       = 0xcd604407\n\tDIOCGETRULES                      = 0xcd604406\n\tDIOCGETRULESET                    = 0xc444443b\n\tDIOCGETRULESETS                   = 0xc444443a\n\tDIOCGETSRCNODES                   = 0xc0104454\n\tDIOCGETSTATE                      = 0xc1084413\n\tDIOCGETSTATES                     = 0xc0104419\n\tDIOCGETSTATUS                     = 0xc1e84415\n\tDIOCGETSYNFLWATS                  = 0xc0084463\n\tDIOCGETTIMEOUT                    = 0xc008441e\n\tDIOCIGETIFACES                    = 0xc0284457\n\tDIOCKILLSRCNODES                  = 0xc080445b\n\tDIOCKILLSTATES                    = 0xc0e04429\n\tDIOCNATLOOK                       = 0xc0504417\n\tDIOCOSFPADD                       = 0xc088444f\n\tDIOCOSFPFLUSH                     = 0x2000444e\n\tDIOCOSFPGET                       = 0xc0884450\n\tDIOCRADDADDRS                     = 0xc4504443\n\tDIOCRADDTABLES                    = 0xc450443d\n\tDIOCRCLRADDRS                     = 0xc4504442\n\tDIOCRCLRASTATS                    = 0xc4504448\n\tDIOCRCLRTABLES                    = 0xc450443c\n\tDIOCRCLRTSTATS                    = 0xc4504441\n\tDIOCRDELADDRS                     = 0xc4504444\n\tDIOCRDELTABLES                    = 0xc450443e\n\tDIOCRGETADDRS                     = 0xc4504446\n\tDIOCRGETASTATS                    = 0xc4504447\n\tDIOCRGETTABLES                    = 0xc450443f\n\tDIOCRGETTSTATS                    = 0xc4504440\n\tDIOCRINADEFINE                    = 0xc450444d\n\tDIOCRSETADDRS                     = 0xc4504445\n\tDIOCRSETTFLAGS                    = 0xc450444a\n\tDIOCRTSTADDRS                     = 0xc4504449\n\tDIOCSETDEBUG                      = 0xc0044418\n\tDIOCSETHOSTID                     = 0xc0044456\n\tDIOCSETIFFLAG                     = 0xc0284459\n\tDIOCSETLIMIT                      = 0xc0084428\n\tDIOCSETREASS                      = 0xc004445c\n\tDIOCSETSTATUSIF                   = 0xc0284414\n\tDIOCSETSYNCOOKIES                 = 0xc0014462\n\tDIOCSETSYNFLWATS                  = 0xc0084461\n\tDIOCSETTIMEOUT                    = 0xc008441d\n\tDIOCSTART                         = 0x20004401\n\tDIOCSTOP                          = 0x20004402\n\tDIOCXBEGIN                        = 0xc0104451\n\tDIOCXCOMMIT                       = 0xc0104452\n\tDIOCXROLLBACK                     = 0xc0104453\n\tDLT_ARCNET                        = 0x7\n\tDLT_ATM_RFC1483                   = 0xb\n\tDLT_AX25                          = 0x3\n\tDLT_CHAOS                         = 0x5\n\tDLT_C_HDLC                        = 0x68\n\tDLT_EN10MB                        = 0x1\n\tDLT_EN3MB                         = 0x2\n\tDLT_ENC                           = 0xd\n\tDLT_FDDI                          = 0xa\n\tDLT_IEEE802                       = 0x6\n\tDLT_IEEE802_11                    = 0x69\n\tDLT_IEEE802_11_RADIO              = 0x7f\n\tDLT_LOOP                          = 0xc\n\tDLT_MPLS                          = 0xdb\n\tDLT_NULL                          = 0x0\n\tDLT_OPENFLOW                      = 0x10b\n\tDLT_PFLOG                         = 0x75\n\tDLT_PFSYNC                        = 0x12\n\tDLT_PPP                           = 0x9\n\tDLT_PPP_BSDOS                     = 0x10\n\tDLT_PPP_ETHER                     = 0x33\n\tDLT_PPP_SERIAL                    = 0x32\n\tDLT_PRONET                        = 0x4\n\tDLT_RAW                           = 0xe\n\tDLT_SLIP                          = 0x8\n\tDLT_SLIP_BSDOS                    = 0xf\n\tDLT_USBPCAP                       = 0xf9\n\tDLT_USER0                         = 0x93\n\tDLT_USER1                         = 0x94\n\tDLT_USER10                        = 0x9d\n\tDLT_USER11                        = 0x9e\n\tDLT_USER12                        = 0x9f\n\tDLT_USER13                        = 0xa0\n\tDLT_USER14                        = 0xa1\n\tDLT_USER15                        = 0xa2\n\tDLT_USER2                         = 0x95\n\tDLT_USER3                         = 0x96\n\tDLT_USER4                         = 0x97\n\tDLT_USER5                         = 0x98\n\tDLT_USER6                         = 0x99\n\tDLT_USER7                         = 0x9a\n\tDLT_USER8                         = 0x9b\n\tDLT_USER9                         = 0x9c\n\tDT_BLK                            = 0x6\n\tDT_CHR                            = 0x2\n\tDT_DIR                            = 0x4\n\tDT_FIFO                           = 0x1\n\tDT_LNK                            = 0xa\n\tDT_REG                            = 0x8\n\tDT_SOCK                           = 0xc\n\tDT_UNKNOWN                        = 0x0\n\tECHO                              = 0x8\n\tECHOCTL                           = 0x40\n\tECHOE                             = 0x2\n\tECHOK                             = 0x4\n\tECHOKE                            = 0x1\n\tECHONL                            = 0x10\n\tECHOPRT                           = 0x20\n\tEMT_TAGOVF                        = 0x1\n\tEMUL_ENABLED                      = 0x1\n\tEMUL_NATIVE                       = 0x2\n\tENDRUNDISC                        = 0x9\n\tETH64_8021_RSVD_MASK              = 0xfffffffffff0\n\tETH64_8021_RSVD_PREFIX            = 0x180c2000000\n\tETHERMIN                          = 0x2e\n\tETHERMTU                          = 0x5dc\n\tETHERTYPE_8023                    = 0x4\n\tETHERTYPE_AARP                    = 0x80f3\n\tETHERTYPE_ACCTON                  = 0x8390\n\tETHERTYPE_AEONIC                  = 0x8036\n\tETHERTYPE_ALPHA                   = 0x814a\n\tETHERTYPE_AMBER                   = 0x6008\n\tETHERTYPE_AMOEBA                  = 0x8145\n\tETHERTYPE_AOE                     = 0x88a2\n\tETHERTYPE_APOLLO                  = 0x80f7\n\tETHERTYPE_APOLLODOMAIN            = 0x8019\n\tETHERTYPE_APPLETALK               = 0x809b\n\tETHERTYPE_APPLITEK                = 0x80c7\n\tETHERTYPE_ARGONAUT                = 0x803a\n\tETHERTYPE_ARP                     = 0x806\n\tETHERTYPE_AT                      = 0x809b\n\tETHERTYPE_ATALK                   = 0x809b\n\tETHERTYPE_ATOMIC                  = 0x86df\n\tETHERTYPE_ATT                     = 0x8069\n\tETHERTYPE_ATTSTANFORD             = 0x8008\n\tETHERTYPE_AUTOPHON                = 0x806a\n\tETHERTYPE_AXIS                    = 0x8856\n\tETHERTYPE_BCLOOP                  = 0x9003\n\tETHERTYPE_BOFL                    = 0x8102\n\tETHERTYPE_CABLETRON               = 0x7034\n\tETHERTYPE_CHAOS                   = 0x804\n\tETHERTYPE_COMDESIGN               = 0x806c\n\tETHERTYPE_COMPUGRAPHIC            = 0x806d\n\tETHERTYPE_COUNTERPOINT            = 0x8062\n\tETHERTYPE_CRONUS                  = 0x8004\n\tETHERTYPE_CRONUSVLN               = 0x8003\n\tETHERTYPE_DCA                     = 0x1234\n\tETHERTYPE_DDE                     = 0x807b\n\tETHERTYPE_DEBNI                   = 0xaaaa\n\tETHERTYPE_DECAM                   = 0x8048\n\tETHERTYPE_DECCUST                 = 0x6006\n\tETHERTYPE_DECDIAG                 = 0x6005\n\tETHERTYPE_DECDNS                  = 0x803c\n\tETHERTYPE_DECDTS                  = 0x803e\n\tETHERTYPE_DECEXPER                = 0x6000\n\tETHERTYPE_DECLAST                 = 0x8041\n\tETHERTYPE_DECLTM                  = 0x803f\n\tETHERTYPE_DECMUMPS                = 0x6009\n\tETHERTYPE_DECNETBIOS              = 0x8040\n\tETHERTYPE_DELTACON                = 0x86de\n\tETHERTYPE_DIDDLE                  = 0x4321\n\tETHERTYPE_DLOG1                   = 0x660\n\tETHERTYPE_DLOG2                   = 0x661\n\tETHERTYPE_DN                      = 0x6003\n\tETHERTYPE_DOGFIGHT                = 0x1989\n\tETHERTYPE_DSMD                    = 0x8039\n\tETHERTYPE_EAPOL                   = 0x888e\n\tETHERTYPE_ECMA                    = 0x803\n\tETHERTYPE_ENCRYPT                 = 0x803d\n\tETHERTYPE_ES                      = 0x805d\n\tETHERTYPE_EXCELAN                 = 0x8010\n\tETHERTYPE_EXPERDATA               = 0x8049\n\tETHERTYPE_FLIP                    = 0x8146\n\tETHERTYPE_FLOWCONTROL             = 0x8808\n\tETHERTYPE_FRARP                   = 0x808\n\tETHERTYPE_GENDYN                  = 0x8068\n\tETHERTYPE_HAYES                   = 0x8130\n\tETHERTYPE_HIPPI_FP                = 0x8180\n\tETHERTYPE_HITACHI                 = 0x8820\n\tETHERTYPE_HP                      = 0x8005\n\tETHERTYPE_IEEEPUP                 = 0xa00\n\tETHERTYPE_IEEEPUPAT               = 0xa01\n\tETHERTYPE_IMLBL                   = 0x4c42\n\tETHERTYPE_IMLBLDIAG               = 0x424c\n\tETHERTYPE_IP                      = 0x800\n\tETHERTYPE_IPAS                    = 0x876c\n\tETHERTYPE_IPV6                    = 0x86dd\n\tETHERTYPE_IPX                     = 0x8137\n\tETHERTYPE_IPXNEW                  = 0x8037\n\tETHERTYPE_KALPANA                 = 0x8582\n\tETHERTYPE_LANBRIDGE               = 0x8038\n\tETHERTYPE_LANPROBE                = 0x8888\n\tETHERTYPE_LAT                     = 0x6004\n\tETHERTYPE_LBACK                   = 0x9000\n\tETHERTYPE_LITTLE                  = 0x8060\n\tETHERTYPE_LLDP                    = 0x88cc\n\tETHERTYPE_LOGICRAFT               = 0x8148\n\tETHERTYPE_LOOPBACK                = 0x9000\n\tETHERTYPE_MACSEC                  = 0x88e5\n\tETHERTYPE_MATRA                   = 0x807a\n\tETHERTYPE_MAX                     = 0xffff\n\tETHERTYPE_MERIT                   = 0x807c\n\tETHERTYPE_MICP                    = 0x873a\n\tETHERTYPE_MOPDL                   = 0x6001\n\tETHERTYPE_MOPRC                   = 0x6002\n\tETHERTYPE_MOTOROLA                = 0x818d\n\tETHERTYPE_MPLS                    = 0x8847\n\tETHERTYPE_MPLS_MCAST              = 0x8848\n\tETHERTYPE_MUMPS                   = 0x813f\n\tETHERTYPE_NBPCC                   = 0x3c04\n\tETHERTYPE_NBPCLAIM                = 0x3c09\n\tETHERTYPE_NBPCLREQ                = 0x3c05\n\tETHERTYPE_NBPCLRSP                = 0x3c06\n\tETHERTYPE_NBPCREQ                 = 0x3c02\n\tETHERTYPE_NBPCRSP                 = 0x3c03\n\tETHERTYPE_NBPDG                   = 0x3c07\n\tETHERTYPE_NBPDGB                  = 0x3c08\n\tETHERTYPE_NBPDLTE                 = 0x3c0a\n\tETHERTYPE_NBPRAR                  = 0x3c0c\n\tETHERTYPE_NBPRAS                  = 0x3c0b\n\tETHERTYPE_NBPRST                  = 0x3c0d\n\tETHERTYPE_NBPSCD                  = 0x3c01\n\tETHERTYPE_NBPVCD                  = 0x3c00\n\tETHERTYPE_NBS                     = 0x802\n\tETHERTYPE_NCD                     = 0x8149\n\tETHERTYPE_NESTAR                  = 0x8006\n\tETHERTYPE_NETBEUI                 = 0x8191\n\tETHERTYPE_NHRP                    = 0x2001\n\tETHERTYPE_NOVELL                  = 0x8138\n\tETHERTYPE_NS                      = 0x600\n\tETHERTYPE_NSAT                    = 0x601\n\tETHERTYPE_NSCOMPAT                = 0x807\n\tETHERTYPE_NSH                     = 0x984f\n\tETHERTYPE_NTRAILER                = 0x10\n\tETHERTYPE_OS9                     = 0x7007\n\tETHERTYPE_OS9NET                  = 0x7009\n\tETHERTYPE_PACER                   = 0x80c6\n\tETHERTYPE_PBB                     = 0x88e7\n\tETHERTYPE_PCS                     = 0x4242\n\tETHERTYPE_PLANNING                = 0x8044\n\tETHERTYPE_PPP                     = 0x880b\n\tETHERTYPE_PPPOE                   = 0x8864\n\tETHERTYPE_PPPOEDISC               = 0x8863\n\tETHERTYPE_PRIMENTS                = 0x7031\n\tETHERTYPE_PUP                     = 0x200\n\tETHERTYPE_PUPAT                   = 0x200\n\tETHERTYPE_QINQ                    = 0x88a8\n\tETHERTYPE_RACAL                   = 0x7030\n\tETHERTYPE_RATIONAL                = 0x8150\n\tETHERTYPE_RAWFR                   = 0x6559\n\tETHERTYPE_RCL                     = 0x1995\n\tETHERTYPE_RDP                     = 0x8739\n\tETHERTYPE_RETIX                   = 0x80f2\n\tETHERTYPE_REVARP                  = 0x8035\n\tETHERTYPE_SCA                     = 0x6007\n\tETHERTYPE_SECTRA                  = 0x86db\n\tETHERTYPE_SECUREDATA              = 0x876d\n\tETHERTYPE_SGITW                   = 0x817e\n\tETHERTYPE_SG_BOUNCE               = 0x8016\n\tETHERTYPE_SG_DIAG                 = 0x8013\n\tETHERTYPE_SG_NETGAMES             = 0x8014\n\tETHERTYPE_SG_RESV                 = 0x8015\n\tETHERTYPE_SIMNET                  = 0x5208\n\tETHERTYPE_SLOW                    = 0x8809\n\tETHERTYPE_SNA                     = 0x80d5\n\tETHERTYPE_SNMP                    = 0x814c\n\tETHERTYPE_SONIX                   = 0xfaf5\n\tETHERTYPE_SPIDER                  = 0x809f\n\tETHERTYPE_SPRITE                  = 0x500\n\tETHERTYPE_STP                     = 0x8181\n\tETHERTYPE_TALARIS                 = 0x812b\n\tETHERTYPE_TALARISMC               = 0x852b\n\tETHERTYPE_TCPCOMP                 = 0x876b\n\tETHERTYPE_TCPSM                   = 0x9002\n\tETHERTYPE_TEC                     = 0x814f\n\tETHERTYPE_TIGAN                   = 0x802f\n\tETHERTYPE_TRAIL                   = 0x1000\n\tETHERTYPE_TRANSETHER              = 0x6558\n\tETHERTYPE_TYMSHARE                = 0x802e\n\tETHERTYPE_UBBST                   = 0x7005\n\tETHERTYPE_UBDEBUG                 = 0x900\n\tETHERTYPE_UBDIAGLOOP              = 0x7002\n\tETHERTYPE_UBDL                    = 0x7000\n\tETHERTYPE_UBNIU                   = 0x7001\n\tETHERTYPE_UBNMC                   = 0x7003\n\tETHERTYPE_VALID                   = 0x1600\n\tETHERTYPE_VARIAN                  = 0x80dd\n\tETHERTYPE_VAXELN                  = 0x803b\n\tETHERTYPE_VEECO                   = 0x8067\n\tETHERTYPE_VEXP                    = 0x805b\n\tETHERTYPE_VGLAB                   = 0x8131\n\tETHERTYPE_VINES                   = 0xbad\n\tETHERTYPE_VINESECHO               = 0xbaf\n\tETHERTYPE_VINESLOOP               = 0xbae\n\tETHERTYPE_VITAL                   = 0xff00\n\tETHERTYPE_VLAN                    = 0x8100\n\tETHERTYPE_VLTLMAN                 = 0x8080\n\tETHERTYPE_VPROD                   = 0x805c\n\tETHERTYPE_VURESERVED              = 0x8147\n\tETHERTYPE_WATERLOO                = 0x8130\n\tETHERTYPE_WELLFLEET               = 0x8103\n\tETHERTYPE_X25                     = 0x805\n\tETHERTYPE_X75                     = 0x801\n\tETHERTYPE_XNSSM                   = 0x9001\n\tETHERTYPE_XTP                     = 0x817d\n\tETHER_ADDR_LEN                    = 0x6\n\tETHER_ALIGN                       = 0x2\n\tETHER_CRC_LEN                     = 0x4\n\tETHER_CRC_POLY_BE                 = 0x4c11db6\n\tETHER_CRC_POLY_LE                 = 0xedb88320\n\tETHER_HDR_LEN                     = 0xe\n\tETHER_MAX_DIX_LEN                 = 0x600\n\tETHER_MAX_HARDMTU_LEN             = 0xff9b\n\tETHER_MAX_LEN                     = 0x5ee\n\tETHER_MIN_LEN                     = 0x40\n\tETHER_TYPE_LEN                    = 0x2\n\tETHER_VLAN_ENCAP_LEN              = 0x4\n\tEVFILT_AIO                        = -0x3\n\tEVFILT_DEVICE                     = -0x8\n\tEVFILT_EXCEPT                     = -0x9\n\tEVFILT_PROC                       = -0x5\n\tEVFILT_READ                       = -0x1\n\tEVFILT_SIGNAL                     = -0x6\n\tEVFILT_SYSCOUNT                   = 0x9\n\tEVFILT_TIMER                      = -0x7\n\tEVFILT_VNODE                      = -0x4\n\tEVFILT_WRITE                      = -0x2\n\tEVL_ENCAPLEN                      = 0x4\n\tEVL_PRIO_BITS                     = 0xd\n\tEVL_PRIO_MAX                      = 0x7\n\tEVL_VLID_MASK                     = 0xfff\n\tEVL_VLID_MAX                      = 0xffe\n\tEVL_VLID_MIN                      = 0x1\n\tEVL_VLID_NULL                     = 0x0\n\tEV_ADD                            = 0x1\n\tEV_CLEAR                          = 0x20\n\tEV_DELETE                         = 0x2\n\tEV_DISABLE                        = 0x8\n\tEV_DISPATCH                       = 0x80\n\tEV_ENABLE                         = 0x4\n\tEV_EOF                            = 0x8000\n\tEV_ERROR                          = 0x4000\n\tEV_FLAG1                          = 0x2000\n\tEV_ONESHOT                        = 0x10\n\tEV_RECEIPT                        = 0x40\n\tEV_SYSFLAGS                       = 0xf800\n\tEXTA                              = 0x4b00\n\tEXTB                              = 0x9600\n\tEXTPROC                           = 0x800\n\tFD_CLOEXEC                        = 0x1\n\tFD_SETSIZE                        = 0x400\n\tFLUSHO                            = 0x800000\n\tF_DUPFD                           = 0x0\n\tF_DUPFD_CLOEXEC                   = 0xa\n\tF_GETFD                           = 0x1\n\tF_GETFL                           = 0x3\n\tF_GETLK                           = 0x7\n\tF_GETOWN                          = 0x5\n\tF_ISATTY                          = 0xb\n\tF_OK                              = 0x0\n\tF_RDLCK                           = 0x1\n\tF_SETFD                           = 0x2\n\tF_SETFL                           = 0x4\n\tF_SETLK                           = 0x8\n\tF_SETLKW                          = 0x9\n\tF_SETOWN                          = 0x6\n\tF_UNLCK                           = 0x2\n\tF_WRLCK                           = 0x3\n\tHUPCL                             = 0x4000\n\tHW_MACHINE                        = 0x1\n\tICANON                            = 0x100\n\tICMP6_FILTER                      = 0x12\n\tICRNL                             = 0x100\n\tIEXTEN                            = 0x400\n\tIFAN_ARRIVAL                      = 0x0\n\tIFAN_DEPARTURE                    = 0x1\n\tIFF_ALLMULTI                      = 0x200\n\tIFF_BROADCAST                     = 0x2\n\tIFF_CANTCHANGE                    = 0x8e52\n\tIFF_DEBUG                         = 0x4\n\tIFF_LINK0                         = 0x1000\n\tIFF_LINK1                         = 0x2000\n\tIFF_LINK2                         = 0x4000\n\tIFF_LOOPBACK                      = 0x8\n\tIFF_MULTICAST                     = 0x8000\n\tIFF_NOARP                         = 0x80\n\tIFF_OACTIVE                       = 0x400\n\tIFF_POINTOPOINT                   = 0x10\n\tIFF_PROMISC                       = 0x100\n\tIFF_RUNNING                       = 0x40\n\tIFF_SIMPLEX                       = 0x800\n\tIFF_STATICARP                     = 0x20\n\tIFF_UP                            = 0x1\n\tIFNAMSIZ                          = 0x10\n\tIFT_1822                          = 0x2\n\tIFT_A12MPPSWITCH                  = 0x82\n\tIFT_AAL2                          = 0xbb\n\tIFT_AAL5                          = 0x31\n\tIFT_ADSL                          = 0x5e\n\tIFT_AFLANE8023                    = 0x3b\n\tIFT_AFLANE8025                    = 0x3c\n\tIFT_ARAP                          = 0x58\n\tIFT_ARCNET                        = 0x23\n\tIFT_ARCNETPLUS                    = 0x24\n\tIFT_ASYNC                         = 0x54\n\tIFT_ATM                           = 0x25\n\tIFT_ATMDXI                        = 0x69\n\tIFT_ATMFUNI                       = 0x6a\n\tIFT_ATMIMA                        = 0x6b\n\tIFT_ATMLOGICAL                    = 0x50\n\tIFT_ATMRADIO                      = 0xbd\n\tIFT_ATMSUBINTERFACE               = 0x86\n\tIFT_ATMVCIENDPT                   = 0xc2\n\tIFT_ATMVIRTUAL                    = 0x95\n\tIFT_BGPPOLICYACCOUNTING           = 0xa2\n\tIFT_BLUETOOTH                     = 0xf8\n\tIFT_BRIDGE                        = 0xd1\n\tIFT_BSC                           = 0x53\n\tIFT_CARP                          = 0xf7\n\tIFT_CCTEMUL                       = 0x3d\n\tIFT_CEPT                          = 0x13\n\tIFT_CES                           = 0x85\n\tIFT_CHANNEL                       = 0x46\n\tIFT_CNR                           = 0x55\n\tIFT_COFFEE                        = 0x84\n\tIFT_COMPOSITELINK                 = 0x9b\n\tIFT_DCN                           = 0x8d\n\tIFT_DIGITALPOWERLINE              = 0x8a\n\tIFT_DIGITALWRAPPEROVERHEADCHANNEL = 0xba\n\tIFT_DLSW                          = 0x4a\n\tIFT_DOCSCABLEDOWNSTREAM           = 0x80\n\tIFT_DOCSCABLEMACLAYER             = 0x7f\n\tIFT_DOCSCABLEUPSTREAM             = 0x81\n\tIFT_DOCSCABLEUPSTREAMCHANNEL      = 0xcd\n\tIFT_DS0                           = 0x51\n\tIFT_DS0BUNDLE                     = 0x52\n\tIFT_DS1FDL                        = 0xaa\n\tIFT_DS3                           = 0x1e\n\tIFT_DTM                           = 0x8c\n\tIFT_DUMMY                         = 0xf1\n\tIFT_DVBASILN                      = 0xac\n\tIFT_DVBASIOUT                     = 0xad\n\tIFT_DVBRCCDOWNSTREAM              = 0x93\n\tIFT_DVBRCCMACLAYER                = 0x92\n\tIFT_DVBRCCUPSTREAM                = 0x94\n\tIFT_ECONET                        = 0xce\n\tIFT_ENC                           = 0xf4\n\tIFT_EON                           = 0x19\n\tIFT_EPLRS                         = 0x57\n\tIFT_ESCON                         = 0x49\n\tIFT_ETHER                         = 0x6\n\tIFT_FAITH                         = 0xf3\n\tIFT_FAST                          = 0x7d\n\tIFT_FASTETHER                     = 0x3e\n\tIFT_FASTETHERFX                   = 0x45\n\tIFT_FDDI                          = 0xf\n\tIFT_FIBRECHANNEL                  = 0x38\n\tIFT_FRAMERELAYINTERCONNECT        = 0x3a\n\tIFT_FRAMERELAYMPI                 = 0x5c\n\tIFT_FRDLCIENDPT                   = 0xc1\n\tIFT_FRELAY                        = 0x20\n\tIFT_FRELAYDCE                     = 0x2c\n\tIFT_FRF16MFRBUNDLE                = 0xa3\n\tIFT_FRFORWARD                     = 0x9e\n\tIFT_G703AT2MB                     = 0x43\n\tIFT_G703AT64K                     = 0x42\n\tIFT_GIF                           = 0xf0\n\tIFT_GIGABITETHERNET               = 0x75\n\tIFT_GR303IDT                      = 0xb2\n\tIFT_GR303RDT                      = 0xb1\n\tIFT_H323GATEKEEPER                = 0xa4\n\tIFT_H323PROXY                     = 0xa5\n\tIFT_HDH1822                       = 0x3\n\tIFT_HDLC                          = 0x76\n\tIFT_HDSL2                         = 0xa8\n\tIFT_HIPERLAN2                     = 0xb7\n\tIFT_HIPPI                         = 0x2f\n\tIFT_HIPPIINTERFACE                = 0x39\n\tIFT_HOSTPAD                       = 0x5a\n\tIFT_HSSI                          = 0x2e\n\tIFT_HY                            = 0xe\n\tIFT_IBM370PARCHAN                 = 0x48\n\tIFT_IDSL                          = 0x9a\n\tIFT_IEEE1394                      = 0x90\n\tIFT_IEEE80211                     = 0x47\n\tIFT_IEEE80212                     = 0x37\n\tIFT_IEEE8023ADLAG                 = 0xa1\n\tIFT_IFGSN                         = 0x91\n\tIFT_IMT                           = 0xbe\n\tIFT_INFINIBAND                    = 0xc7\n\tIFT_INTERLEAVE                    = 0x7c\n\tIFT_IP                            = 0x7e\n\tIFT_IPFORWARD                     = 0x8e\n\tIFT_IPOVERATM                     = 0x72\n\tIFT_IPOVERCDLC                    = 0x6d\n\tIFT_IPOVERCLAW                    = 0x6e\n\tIFT_IPSWITCH                      = 0x4e\n\tIFT_ISDN                          = 0x3f\n\tIFT_ISDNBASIC                     = 0x14\n\tIFT_ISDNPRIMARY                   = 0x15\n\tIFT_ISDNS                         = 0x4b\n\tIFT_ISDNU                         = 0x4c\n\tIFT_ISO88022LLC                   = 0x29\n\tIFT_ISO88023                      = 0x7\n\tIFT_ISO88024                      = 0x8\n\tIFT_ISO88025                      = 0x9\n\tIFT_ISO88025CRFPINT               = 0x62\n\tIFT_ISO88025DTR                   = 0x56\n\tIFT_ISO88025FIBER                 = 0x73\n\tIFT_ISO88026                      = 0xa\n\tIFT_ISUP                          = 0xb3\n\tIFT_L2VLAN                        = 0x87\n\tIFT_L3IPVLAN                      = 0x88\n\tIFT_L3IPXVLAN                     = 0x89\n\tIFT_LAPB                          = 0x10\n\tIFT_LAPD                          = 0x4d\n\tIFT_LAPF                          = 0x77\n\tIFT_LINEGROUP                     = 0xd2\n\tIFT_LOCALTALK                     = 0x2a\n\tIFT_LOOP                          = 0x18\n\tIFT_MBIM                          = 0xfa\n\tIFT_MEDIAMAILOVERIP               = 0x8b\n\tIFT_MFSIGLINK                     = 0xa7\n\tIFT_MIOX25                        = 0x26\n\tIFT_MODEM                         = 0x30\n\tIFT_MPC                           = 0x71\n\tIFT_MPLS                          = 0xa6\n\tIFT_MPLSTUNNEL                    = 0x96\n\tIFT_MSDSL                         = 0x8f\n\tIFT_MVL                           = 0xbf\n\tIFT_MYRINET                       = 0x63\n\tIFT_NFAS                          = 0xaf\n\tIFT_NSIP                          = 0x1b\n\tIFT_OPTICALCHANNEL                = 0xc3\n\tIFT_OPTICALTRANSPORT              = 0xc4\n\tIFT_OTHER                         = 0x1\n\tIFT_P10                           = 0xc\n\tIFT_P80                           = 0xd\n\tIFT_PARA                          = 0x22\n\tIFT_PFLOG                         = 0xf5\n\tIFT_PFLOW                         = 0xf9\n\tIFT_PFSYNC                        = 0xf6\n\tIFT_PLC                           = 0xae\n\tIFT_PON155                        = 0xcf\n\tIFT_PON622                        = 0xd0\n\tIFT_POS                           = 0xab\n\tIFT_PPP                           = 0x17\n\tIFT_PPPMULTILINKBUNDLE            = 0x6c\n\tIFT_PROPATM                       = 0xc5\n\tIFT_PROPBWAP2MP                   = 0xb8\n\tIFT_PROPCNLS                      = 0x59\n\tIFT_PROPDOCSWIRELESSDOWNSTREAM    = 0xb5\n\tIFT_PROPDOCSWIRELESSMACLAYER      = 0xb4\n\tIFT_PROPDOCSWIRELESSUPSTREAM      = 0xb6\n\tIFT_PROPMUX                       = 0x36\n\tIFT_PROPVIRTUAL                   = 0x35\n\tIFT_PROPWIRELESSP2P               = 0x9d\n\tIFT_PTPSERIAL                     = 0x16\n\tIFT_PVC                           = 0xf2\n\tIFT_Q2931                         = 0xc9\n\tIFT_QLLC                          = 0x44\n\tIFT_RADIOMAC                      = 0xbc\n\tIFT_RADSL                         = 0x5f\n\tIFT_REACHDSL                      = 0xc0\n\tIFT_RFC1483                       = 0x9f\n\tIFT_RS232                         = 0x21\n\tIFT_RSRB                          = 0x4f\n\tIFT_SDLC                          = 0x11\n\tIFT_SDSL                          = 0x60\n\tIFT_SHDSL                         = 0xa9\n\tIFT_SIP                           = 0x1f\n\tIFT_SIPSIG                        = 0xcc\n\tIFT_SIPTG                         = 0xcb\n\tIFT_SLIP                          = 0x1c\n\tIFT_SMDSDXI                       = 0x2b\n\tIFT_SMDSICIP                      = 0x34\n\tIFT_SONET                         = 0x27\n\tIFT_SONETOVERHEADCHANNEL          = 0xb9\n\tIFT_SONETPATH                     = 0x32\n\tIFT_SONETVT                       = 0x33\n\tIFT_SRP                           = 0x97\n\tIFT_SS7SIGLINK                    = 0x9c\n\tIFT_STACKTOSTACK                  = 0x6f\n\tIFT_STARLAN                       = 0xb\n\tIFT_T1                            = 0x12\n\tIFT_TDLC                          = 0x74\n\tIFT_TELINK                        = 0xc8\n\tIFT_TERMPAD                       = 0x5b\n\tIFT_TR008                         = 0xb0\n\tIFT_TRANSPHDLC                    = 0x7b\n\tIFT_TUNNEL                        = 0x83\n\tIFT_ULTRA                         = 0x1d\n\tIFT_USB                           = 0xa0\n\tIFT_V11                           = 0x40\n\tIFT_V35                           = 0x2d\n\tIFT_V36                           = 0x41\n\tIFT_V37                           = 0x78\n\tIFT_VDSL                          = 0x61\n\tIFT_VIRTUALIPADDRESS              = 0x70\n\tIFT_VIRTUALTG                     = 0xca\n\tIFT_VOICEDID                      = 0xd5\n\tIFT_VOICEEM                       = 0x64\n\tIFT_VOICEEMFGD                    = 0xd3\n\tIFT_VOICEENCAP                    = 0x67\n\tIFT_VOICEFGDEANA                  = 0xd4\n\tIFT_VOICEFXO                      = 0x65\n\tIFT_VOICEFXS                      = 0x66\n\tIFT_VOICEOVERATM                  = 0x98\n\tIFT_VOICEOVERCABLE                = 0xc6\n\tIFT_VOICEOVERFRAMERELAY           = 0x99\n\tIFT_VOICEOVERIP                   = 0x68\n\tIFT_WIREGUARD                     = 0xfb\n\tIFT_X213                          = 0x5d\n\tIFT_X25                           = 0x5\n\tIFT_X25DDN                        = 0x4\n\tIFT_X25HUNTGROUP                  = 0x7a\n\tIFT_X25MLP                        = 0x79\n\tIFT_X25PLE                        = 0x28\n\tIFT_XETHER                        = 0x1a\n\tIGNBRK                            = 0x1\n\tIGNCR                             = 0x80\n\tIGNPAR                            = 0x4\n\tIMAXBEL                           = 0x2000\n\tINLCR                             = 0x40\n\tINPCK                             = 0x10\n\tIN_CLASSA_HOST                    = 0xffffff\n\tIN_CLASSA_MAX                     = 0x80\n\tIN_CLASSA_NET                     = 0xff000000\n\tIN_CLASSA_NSHIFT                  = 0x18\n\tIN_CLASSB_HOST                    = 0xffff\n\tIN_CLASSB_MAX                     = 0x10000\n\tIN_CLASSB_NET                     = 0xffff0000\n\tIN_CLASSB_NSHIFT                  = 0x10\n\tIN_CLASSC_HOST                    = 0xff\n\tIN_CLASSC_NET                     = 0xffffff00\n\tIN_CLASSC_NSHIFT                  = 0x8\n\tIN_CLASSD_HOST                    = 0xfffffff\n\tIN_CLASSD_NET                     = 0xf0000000\n\tIN_CLASSD_NSHIFT                  = 0x1c\n\tIN_LOOPBACKNET                    = 0x7f\n\tIN_RFC3021_HOST                   = 0x1\n\tIN_RFC3021_NET                    = 0xfffffffe\n\tIN_RFC3021_NSHIFT                 = 0x1f\n\tIPPROTO_AH                        = 0x33\n\tIPPROTO_CARP                      = 0x70\n\tIPPROTO_DIVERT                    = 0x102\n\tIPPROTO_DONE                      = 0x101\n\tIPPROTO_DSTOPTS                   = 0x3c\n\tIPPROTO_EGP                       = 0x8\n\tIPPROTO_ENCAP                     = 0x62\n\tIPPROTO_EON                       = 0x50\n\tIPPROTO_ESP                       = 0x32\n\tIPPROTO_ETHERIP                   = 0x61\n\tIPPROTO_FRAGMENT                  = 0x2c\n\tIPPROTO_GGP                       = 0x3\n\tIPPROTO_GRE                       = 0x2f\n\tIPPROTO_HOPOPTS                   = 0x0\n\tIPPROTO_ICMP                      = 0x1\n\tIPPROTO_ICMPV6                    = 0x3a\n\tIPPROTO_IDP                       = 0x16\n\tIPPROTO_IGMP                      = 0x2\n\tIPPROTO_IP                        = 0x0\n\tIPPROTO_IPCOMP                    = 0x6c\n\tIPPROTO_IPIP                      = 0x4\n\tIPPROTO_IPV4                      = 0x4\n\tIPPROTO_IPV6                      = 0x29\n\tIPPROTO_MAX                       = 0x100\n\tIPPROTO_MAXID                     = 0x103\n\tIPPROTO_MOBILE                    = 0x37\n\tIPPROTO_MPLS                      = 0x89\n\tIPPROTO_NONE                      = 0x3b\n\tIPPROTO_PFSYNC                    = 0xf0\n\tIPPROTO_PIM                       = 0x67\n\tIPPROTO_PUP                       = 0xc\n\tIPPROTO_RAW                       = 0xff\n\tIPPROTO_ROUTING                   = 0x2b\n\tIPPROTO_RSVP                      = 0x2e\n\tIPPROTO_SCTP                      = 0x84\n\tIPPROTO_TCP                       = 0x6\n\tIPPROTO_TP                        = 0x1d\n\tIPPROTO_UDP                       = 0x11\n\tIPPROTO_UDPLITE                   = 0x88\n\tIPV6_AUTH_LEVEL                   = 0x35\n\tIPV6_AUTOFLOWLABEL                = 0x3b\n\tIPV6_CHECKSUM                     = 0x1a\n\tIPV6_DEFAULT_MULTICAST_HOPS       = 0x1\n\tIPV6_DEFAULT_MULTICAST_LOOP       = 0x1\n\tIPV6_DEFHLIM                      = 0x40\n\tIPV6_DONTFRAG                     = 0x3e\n\tIPV6_DSTOPTS                      = 0x32\n\tIPV6_ESP_NETWORK_LEVEL            = 0x37\n\tIPV6_ESP_TRANS_LEVEL              = 0x36\n\tIPV6_FAITH                        = 0x1d\n\tIPV6_FLOWINFO_MASK                = 0xffffff0f\n\tIPV6_FLOWLABEL_MASK               = 0xffff0f00\n\tIPV6_FRAGTTL                      = 0x78\n\tIPV6_HLIMDEC                      = 0x1\n\tIPV6_HOPLIMIT                     = 0x2f\n\tIPV6_HOPOPTS                      = 0x31\n\tIPV6_IPCOMP_LEVEL                 = 0x3c\n\tIPV6_JOIN_GROUP                   = 0xc\n\tIPV6_LEAVE_GROUP                  = 0xd\n\tIPV6_MAXHLIM                      = 0xff\n\tIPV6_MAXPACKET                    = 0xffff\n\tIPV6_MINHOPCOUNT                  = 0x41\n\tIPV6_MMTU                         = 0x500\n\tIPV6_MULTICAST_HOPS               = 0xa\n\tIPV6_MULTICAST_IF                 = 0x9\n\tIPV6_MULTICAST_LOOP               = 0xb\n\tIPV6_NEXTHOP                      = 0x30\n\tIPV6_OPTIONS                      = 0x1\n\tIPV6_PATHMTU                      = 0x2c\n\tIPV6_PIPEX                        = 0x3f\n\tIPV6_PKTINFO                      = 0x2e\n\tIPV6_PORTRANGE                    = 0xe\n\tIPV6_PORTRANGE_DEFAULT            = 0x0\n\tIPV6_PORTRANGE_HIGH               = 0x1\n\tIPV6_PORTRANGE_LOW                = 0x2\n\tIPV6_RECVDSTOPTS                  = 0x28\n\tIPV6_RECVDSTPORT                  = 0x40\n\tIPV6_RECVHOPLIMIT                 = 0x25\n\tIPV6_RECVHOPOPTS                  = 0x27\n\tIPV6_RECVPATHMTU                  = 0x2b\n\tIPV6_RECVPKTINFO                  = 0x24\n\tIPV6_RECVRTHDR                    = 0x26\n\tIPV6_RECVTCLASS                   = 0x39\n\tIPV6_RTABLE                       = 0x1021\n\tIPV6_RTHDR                        = 0x33\n\tIPV6_RTHDRDSTOPTS                 = 0x23\n\tIPV6_RTHDR_LOOSE                  = 0x0\n\tIPV6_RTHDR_STRICT                 = 0x1\n\tIPV6_RTHDR_TYPE_0                 = 0x0\n\tIPV6_SOCKOPT_RESERVED1            = 0x3\n\tIPV6_TCLASS                       = 0x3d\n\tIPV6_UNICAST_HOPS                 = 0x4\n\tIPV6_USE_MIN_MTU                  = 0x2a\n\tIPV6_V6ONLY                       = 0x1b\n\tIPV6_VERSION                      = 0x60\n\tIPV6_VERSION_MASK                 = 0xf0\n\tIP_ADD_MEMBERSHIP                 = 0xc\n\tIP_AUTH_LEVEL                     = 0x14\n\tIP_DEFAULT_MULTICAST_LOOP         = 0x1\n\tIP_DEFAULT_MULTICAST_TTL          = 0x1\n\tIP_DF                             = 0x4000\n\tIP_DROP_MEMBERSHIP                = 0xd\n\tIP_ESP_NETWORK_LEVEL              = 0x16\n\tIP_ESP_TRANS_LEVEL                = 0x15\n\tIP_HDRINCL                        = 0x2\n\tIP_IPCOMP_LEVEL                   = 0x1d\n\tIP_IPDEFTTL                       = 0x25\n\tIP_IPSECFLOWINFO                  = 0x24\n\tIP_IPSEC_LOCAL_AUTH               = 0x1b\n\tIP_IPSEC_LOCAL_CRED               = 0x19\n\tIP_IPSEC_LOCAL_ID                 = 0x17\n\tIP_IPSEC_REMOTE_AUTH              = 0x1c\n\tIP_IPSEC_REMOTE_CRED              = 0x1a\n\tIP_IPSEC_REMOTE_ID                = 0x18\n\tIP_MAXPACKET                      = 0xffff\n\tIP_MAX_MEMBERSHIPS                = 0xfff\n\tIP_MF                             = 0x2000\n\tIP_MINTTL                         = 0x20\n\tIP_MIN_MEMBERSHIPS                = 0xf\n\tIP_MSS                            = 0x240\n\tIP_MULTICAST_IF                   = 0x9\n\tIP_MULTICAST_LOOP                 = 0xb\n\tIP_MULTICAST_TTL                  = 0xa\n\tIP_OFFMASK                        = 0x1fff\n\tIP_OPTIONS                        = 0x1\n\tIP_PIPEX                          = 0x22\n\tIP_PORTRANGE                      = 0x13\n\tIP_PORTRANGE_DEFAULT              = 0x0\n\tIP_PORTRANGE_HIGH                 = 0x1\n\tIP_PORTRANGE_LOW                  = 0x2\n\tIP_RECVDSTADDR                    = 0x7\n\tIP_RECVDSTPORT                    = 0x21\n\tIP_RECVIF                         = 0x1e\n\tIP_RECVOPTS                       = 0x5\n\tIP_RECVRETOPTS                    = 0x6\n\tIP_RECVRTABLE                     = 0x23\n\tIP_RECVTTL                        = 0x1f\n\tIP_RETOPTS                        = 0x8\n\tIP_RF                             = 0x8000\n\tIP_RTABLE                         = 0x1021\n\tIP_SENDSRCADDR                    = 0x7\n\tIP_TOS                            = 0x3\n\tIP_TTL                            = 0x4\n\tISIG                              = 0x80\n\tISTRIP                            = 0x20\n\tITIMER_PROF                       = 0x2\n\tITIMER_REAL                       = 0x0\n\tITIMER_VIRTUAL                    = 0x1\n\tIUCLC                             = 0x1000\n\tIXANY                             = 0x800\n\tIXOFF                             = 0x400\n\tIXON                              = 0x200\n\tKERN_HOSTNAME                     = 0xa\n\tKERN_OSRELEASE                    = 0x2\n\tKERN_OSTYPE                       = 0x1\n\tKERN_VERSION                      = 0x4\n\tLCNT_OVERLOAD_FLUSH               = 0x6\n\tLOCK_EX                           = 0x2\n\tLOCK_NB                           = 0x4\n\tLOCK_SH                           = 0x1\n\tLOCK_UN                           = 0x8\n\tMADV_DONTNEED                     = 0x4\n\tMADV_FREE                         = 0x6\n\tMADV_NORMAL                       = 0x0\n\tMADV_RANDOM                       = 0x1\n\tMADV_SEQUENTIAL                   = 0x2\n\tMADV_SPACEAVAIL                   = 0x5\n\tMADV_WILLNEED                     = 0x3\n\tMAP_ANON                          = 0x1000\n\tMAP_ANONYMOUS                     = 0x1000\n\tMAP_CONCEAL                       = 0x8000\n\tMAP_COPY                          = 0x2\n\tMAP_FILE                          = 0x0\n\tMAP_FIXED                         = 0x10\n\tMAP_FLAGMASK                      = 0xfff7\n\tMAP_HASSEMAPHORE                  = 0x0\n\tMAP_INHERIT                       = 0x0\n\tMAP_INHERIT_COPY                  = 0x1\n\tMAP_INHERIT_NONE                  = 0x2\n\tMAP_INHERIT_SHARE                 = 0x0\n\tMAP_INHERIT_ZERO                  = 0x3\n\tMAP_NOEXTEND                      = 0x0\n\tMAP_NORESERVE                     = 0x0\n\tMAP_PRIVATE                       = 0x2\n\tMAP_RENAME                        = 0x0\n\tMAP_SHARED                        = 0x1\n\tMAP_STACK                         = 0x4000\n\tMAP_TRYFIXED                      = 0x0\n\tMCL_CURRENT                       = 0x1\n\tMCL_FUTURE                        = 0x2\n\tMNT_ASYNC                         = 0x40\n\tMNT_DEFEXPORTED                   = 0x200\n\tMNT_DELEXPORT                     = 0x20000\n\tMNT_DOOMED                        = 0x8000000\n\tMNT_EXPORTANON                    = 0x400\n\tMNT_EXPORTED                      = 0x100\n\tMNT_EXRDONLY                      = 0x80\n\tMNT_FORCE                         = 0x80000\n\tMNT_LAZY                          = 0x3\n\tMNT_LOCAL                         = 0x1000\n\tMNT_NOATIME                       = 0x8000\n\tMNT_NODEV                         = 0x10\n\tMNT_NOEXEC                        = 0x4\n\tMNT_NOPERM                        = 0x20\n\tMNT_NOSUID                        = 0x8\n\tMNT_NOWAIT                        = 0x2\n\tMNT_QUOTA                         = 0x2000\n\tMNT_RDONLY                        = 0x1\n\tMNT_RELOAD                        = 0x40000\n\tMNT_ROOTFS                        = 0x4000\n\tMNT_SOFTDEP                       = 0x4000000\n\tMNT_STALLED                       = 0x100000\n\tMNT_SWAPPABLE                     = 0x200000\n\tMNT_SYNCHRONOUS                   = 0x2\n\tMNT_UPDATE                        = 0x10000\n\tMNT_VISFLAGMASK                   = 0x400ffff\n\tMNT_WAIT                          = 0x1\n\tMNT_WANTRDWR                      = 0x2000000\n\tMNT_WXALLOWED                     = 0x800\n\tMOUNT_AFS                         = \"afs\"\n\tMOUNT_CD9660                      = \"cd9660\"\n\tMOUNT_EXT2FS                      = \"ext2fs\"\n\tMOUNT_FFS                         = \"ffs\"\n\tMOUNT_FUSEFS                      = \"fuse\"\n\tMOUNT_MFS                         = \"mfs\"\n\tMOUNT_MSDOS                       = \"msdos\"\n\tMOUNT_NCPFS                       = \"ncpfs\"\n\tMOUNT_NFS                         = \"nfs\"\n\tMOUNT_NTFS                        = \"ntfs\"\n\tMOUNT_TMPFS                       = \"tmpfs\"\n\tMOUNT_UDF                         = \"udf\"\n\tMOUNT_UFS                         = \"ffs\"\n\tMSG_BCAST                         = 0x100\n\tMSG_CMSG_CLOEXEC                  = 0x800\n\tMSG_CTRUNC                        = 0x20\n\tMSG_DONTROUTE                     = 0x4\n\tMSG_DONTWAIT                      = 0x80\n\tMSG_EOR                           = 0x8\n\tMSG_MCAST                         = 0x200\n\tMSG_NOSIGNAL                      = 0x400\n\tMSG_OOB                           = 0x1\n\tMSG_PEEK                          = 0x2\n\tMSG_TRUNC                         = 0x10\n\tMSG_WAITALL                       = 0x40\n\tMS_ASYNC                          = 0x1\n\tMS_INVALIDATE                     = 0x4\n\tMS_SYNC                           = 0x2\n\tNAME_MAX                          = 0xff\n\tNET_RT_DUMP                       = 0x1\n\tNET_RT_FLAGS                      = 0x2\n\tNET_RT_IFLIST                     = 0x3\n\tNET_RT_IFNAMES                    = 0x6\n\tNET_RT_MAXID                      = 0x8\n\tNET_RT_SOURCE                     = 0x7\n\tNET_RT_STATS                      = 0x4\n\tNET_RT_TABLE                      = 0x5\n\tNFDBITS                           = 0x20\n\tNOFLSH                            = 0x80000000\n\tNOKERNINFO                        = 0x2000000\n\tNOTE_ATTRIB                       = 0x8\n\tNOTE_CHANGE                       = 0x1\n\tNOTE_CHILD                        = 0x4\n\tNOTE_DELETE                       = 0x1\n\tNOTE_EOF                          = 0x2\n\tNOTE_EXEC                         = 0x20000000\n\tNOTE_EXIT                         = 0x80000000\n\tNOTE_EXTEND                       = 0x4\n\tNOTE_FORK                         = 0x40000000\n\tNOTE_LINK                         = 0x10\n\tNOTE_LOWAT                        = 0x1\n\tNOTE_OOB                          = 0x4\n\tNOTE_PCTRLMASK                    = 0xf0000000\n\tNOTE_PDATAMASK                    = 0xfffff\n\tNOTE_RENAME                       = 0x20\n\tNOTE_REVOKE                       = 0x40\n\tNOTE_TRACK                        = 0x1\n\tNOTE_TRACKERR                     = 0x2\n\tNOTE_TRUNCATE                     = 0x80\n\tNOTE_WRITE                        = 0x2\n\tOCRNL                             = 0x10\n\tOLCUC                             = 0x20\n\tONLCR                             = 0x2\n\tONLRET                            = 0x80\n\tONOCR                             = 0x40\n\tONOEOT                            = 0x8\n\tOPOST                             = 0x1\n\tOXTABS                            = 0x4\n\tO_ACCMODE                         = 0x3\n\tO_APPEND                          = 0x8\n\tO_ASYNC                           = 0x40\n\tO_CLOEXEC                         = 0x10000\n\tO_CREAT                           = 0x200\n\tO_DIRECTORY                       = 0x20000\n\tO_DSYNC                           = 0x80\n\tO_EXCL                            = 0x800\n\tO_EXLOCK                          = 0x20\n\tO_FSYNC                           = 0x80\n\tO_NDELAY                          = 0x4\n\tO_NOCTTY                          = 0x8000\n\tO_NOFOLLOW                        = 0x100\n\tO_NONBLOCK                        = 0x4\n\tO_RDONLY                          = 0x0\n\tO_RDWR                            = 0x2\n\tO_RSYNC                           = 0x80\n\tO_SHLOCK                          = 0x10\n\tO_SYNC                            = 0x80\n\tO_TRUNC                           = 0x400\n\tO_WRONLY                          = 0x1\n\tPARENB                            = 0x1000\n\tPARMRK                            = 0x8\n\tPARODD                            = 0x2000\n\tPENDIN                            = 0x20000000\n\tPF_FLUSH                          = 0x1\n\tPRIO_PGRP                         = 0x1\n\tPRIO_PROCESS                      = 0x0\n\tPRIO_USER                         = 0x2\n\tPROT_EXEC                         = 0x4\n\tPROT_NONE                         = 0x0\n\tPROT_READ                         = 0x1\n\tPROT_WRITE                        = 0x2\n\tRLIMIT_CORE                       = 0x4\n\tRLIMIT_CPU                        = 0x0\n\tRLIMIT_DATA                       = 0x2\n\tRLIMIT_FSIZE                      = 0x1\n\tRLIMIT_MEMLOCK                    = 0x6\n\tRLIMIT_NOFILE                     = 0x8\n\tRLIMIT_NPROC                      = 0x7\n\tRLIMIT_RSS                        = 0x5\n\tRLIMIT_STACK                      = 0x3\n\tRLIM_INFINITY                     = 0x7fffffffffffffff\n\tRTAX_AUTHOR                       = 0x6\n\tRTAX_BFD                          = 0xb\n\tRTAX_BRD                          = 0x7\n\tRTAX_DNS                          = 0xc\n\tRTAX_DST                          = 0x0\n\tRTAX_GATEWAY                      = 0x1\n\tRTAX_GENMASK                      = 0x3\n\tRTAX_IFA                          = 0x5\n\tRTAX_IFP                          = 0x4\n\tRTAX_LABEL                        = 0xa\n\tRTAX_MAX                          = 0xf\n\tRTAX_NETMASK                      = 0x2\n\tRTAX_SEARCH                       = 0xe\n\tRTAX_SRC                          = 0x8\n\tRTAX_SRCMASK                      = 0x9\n\tRTAX_STATIC                       = 0xd\n\tRTA_AUTHOR                        = 0x40\n\tRTA_BFD                           = 0x800\n\tRTA_BRD                           = 0x80\n\tRTA_DNS                           = 0x1000\n\tRTA_DST                           = 0x1\n\tRTA_GATEWAY                       = 0x2\n\tRTA_GENMASK                       = 0x8\n\tRTA_IFA                           = 0x20\n\tRTA_IFP                           = 0x10\n\tRTA_LABEL                         = 0x400\n\tRTA_NETMASK                       = 0x4\n\tRTA_SEARCH                        = 0x4000\n\tRTA_SRC                           = 0x100\n\tRTA_SRCMASK                       = 0x200\n\tRTA_STATIC                        = 0x2000\n\tRTF_ANNOUNCE                      = 0x4000\n\tRTF_BFD                           = 0x1000000\n\tRTF_BLACKHOLE                     = 0x1000\n\tRTF_BROADCAST                     = 0x400000\n\tRTF_CACHED                        = 0x20000\n\tRTF_CLONED                        = 0x10000\n\tRTF_CLONING                       = 0x100\n\tRTF_CONNECTED                     = 0x800000\n\tRTF_DONE                          = 0x40\n\tRTF_DYNAMIC                       = 0x10\n\tRTF_FMASK                         = 0x110fc08\n\tRTF_GATEWAY                       = 0x2\n\tRTF_HOST                          = 0x4\n\tRTF_LLINFO                        = 0x400\n\tRTF_LOCAL                         = 0x200000\n\tRTF_MODIFIED                      = 0x20\n\tRTF_MPATH                         = 0x40000\n\tRTF_MPLS                          = 0x100000\n\tRTF_MULTICAST                     = 0x200\n\tRTF_PERMANENT_ARP                 = 0x2000\n\tRTF_PROTO1                        = 0x8000\n\tRTF_PROTO2                        = 0x4000\n\tRTF_PROTO3                        = 0x2000\n\tRTF_REJECT                        = 0x8\n\tRTF_STATIC                        = 0x800\n\tRTF_UP                            = 0x1\n\tRTF_USETRAILERS                   = 0x8000\n\tRTM_80211INFO                     = 0x15\n\tRTM_ADD                           = 0x1\n\tRTM_BFD                           = 0x12\n\tRTM_CHANGE                        = 0x3\n\tRTM_CHGADDRATTR                   = 0x14\n\tRTM_DELADDR                       = 0xd\n\tRTM_DELETE                        = 0x2\n\tRTM_DESYNC                        = 0x10\n\tRTM_GET                           = 0x4\n\tRTM_IFANNOUNCE                    = 0xf\n\tRTM_IFINFO                        = 0xe\n\tRTM_INVALIDATE                    = 0x11\n\tRTM_LOSING                        = 0x5\n\tRTM_MAXSIZE                       = 0x800\n\tRTM_MISS                          = 0x7\n\tRTM_NEWADDR                       = 0xc\n\tRTM_PROPOSAL                      = 0x13\n\tRTM_REDIRECT                      = 0x6\n\tRTM_RESOLVE                       = 0xb\n\tRTM_SOURCE                        = 0x16\n\tRTM_VERSION                       = 0x5\n\tRTV_EXPIRE                        = 0x4\n\tRTV_HOPCOUNT                      = 0x2\n\tRTV_MTU                           = 0x1\n\tRTV_RPIPE                         = 0x8\n\tRTV_RTT                           = 0x40\n\tRTV_RTTVAR                        = 0x80\n\tRTV_SPIPE                         = 0x10\n\tRTV_SSTHRESH                      = 0x20\n\tRT_TABLEID_BITS                   = 0x8\n\tRT_TABLEID_MASK                   = 0xff\n\tRT_TABLEID_MAX                    = 0xff\n\tRUSAGE_CHILDREN                   = -0x1\n\tRUSAGE_SELF                       = 0x0\n\tRUSAGE_THREAD                     = 0x1\n\tSCM_RIGHTS                        = 0x1\n\tSCM_TIMESTAMP                     = 0x4\n\tSEEK_CUR                          = 0x1\n\tSEEK_END                          = 0x2\n\tSEEK_SET                          = 0x0\n\tSHUT_RD                           = 0x0\n\tSHUT_RDWR                         = 0x2\n\tSHUT_WR                           = 0x1\n\tSIOCADDMULTI                      = 0x80206931\n\tSIOCAIFADDR                       = 0x8040691a\n\tSIOCAIFGROUP                      = 0x80286987\n\tSIOCATMARK                        = 0x40047307\n\tSIOCBRDGADD                       = 0x8060693c\n\tSIOCBRDGADDL                      = 0x80606949\n\tSIOCBRDGADDS                      = 0x80606941\n\tSIOCBRDGARL                       = 0x808c694d\n\tSIOCBRDGDADDR                     = 0x81286947\n\tSIOCBRDGDEL                       = 0x8060693d\n\tSIOCBRDGDELS                      = 0x80606942\n\tSIOCBRDGFLUSH                     = 0x80606948\n\tSIOCBRDGFRL                       = 0x808c694e\n\tSIOCBRDGGCACHE                    = 0xc0146941\n\tSIOCBRDGGFD                       = 0xc0146952\n\tSIOCBRDGGHT                       = 0xc0146951\n\tSIOCBRDGGIFFLGS                   = 0xc060693e\n\tSIOCBRDGGMA                       = 0xc0146953\n\tSIOCBRDGGPARAM                    = 0xc0406958\n\tSIOCBRDGGPRI                      = 0xc0146950\n\tSIOCBRDGGRL                       = 0xc030694f\n\tSIOCBRDGGTO                       = 0xc0146946\n\tSIOCBRDGIFS                       = 0xc0606942\n\tSIOCBRDGRTS                       = 0xc0206943\n\tSIOCBRDGSADDR                     = 0xc1286944\n\tSIOCBRDGSCACHE                    = 0x80146940\n\tSIOCBRDGSFD                       = 0x80146952\n\tSIOCBRDGSHT                       = 0x80146951\n\tSIOCBRDGSIFCOST                   = 0x80606955\n\tSIOCBRDGSIFFLGS                   = 0x8060693f\n\tSIOCBRDGSIFPRIO                   = 0x80606954\n\tSIOCBRDGSIFPROT                   = 0x8060694a\n\tSIOCBRDGSMA                       = 0x80146953\n\tSIOCBRDGSPRI                      = 0x80146950\n\tSIOCBRDGSPROTO                    = 0x8014695a\n\tSIOCBRDGSTO                       = 0x80146945\n\tSIOCBRDGSTXHC                     = 0x80146959\n\tSIOCDELLABEL                      = 0x80206997\n\tSIOCDELMULTI                      = 0x80206932\n\tSIOCDIFADDR                       = 0x80206919\n\tSIOCDIFGROUP                      = 0x80286989\n\tSIOCDIFPARENT                     = 0x802069b4\n\tSIOCDIFPHYADDR                    = 0x80206949\n\tSIOCDPWE3NEIGHBOR                 = 0x802069de\n\tSIOCDVNETID                       = 0x802069af\n\tSIOCGETKALIVE                     = 0xc01869a4\n\tSIOCGETLABEL                      = 0x8020699a\n\tSIOCGETMPWCFG                     = 0xc02069ae\n\tSIOCGETPFLOW                      = 0xc02069fe\n\tSIOCGETPFSYNC                     = 0xc02069f8\n\tSIOCGETSGCNT                      = 0xc0207534\n\tSIOCGETVIFCNT                     = 0xc0287533\n\tSIOCGETVLAN                       = 0xc0206990\n\tSIOCGIFADDR                       = 0xc0206921\n\tSIOCGIFBRDADDR                    = 0xc0206923\n\tSIOCGIFCONF                       = 0xc0106924\n\tSIOCGIFDATA                       = 0xc020691b\n\tSIOCGIFDESCR                      = 0xc0206981\n\tSIOCGIFDSTADDR                    = 0xc0206922\n\tSIOCGIFFLAGS                      = 0xc0206911\n\tSIOCGIFGATTR                      = 0xc028698b\n\tSIOCGIFGENERIC                    = 0xc020693a\n\tSIOCGIFGLIST                      = 0xc028698d\n\tSIOCGIFGMEMB                      = 0xc028698a\n\tSIOCGIFGROUP                      = 0xc0286988\n\tSIOCGIFHARDMTU                    = 0xc02069a5\n\tSIOCGIFLLPRIO                     = 0xc02069b6\n\tSIOCGIFMEDIA                      = 0xc0406938\n\tSIOCGIFMETRIC                     = 0xc0206917\n\tSIOCGIFMTU                        = 0xc020697e\n\tSIOCGIFNETMASK                    = 0xc0206925\n\tSIOCGIFPAIR                       = 0xc02069b1\n\tSIOCGIFPARENT                     = 0xc02069b3\n\tSIOCGIFPRIORITY                   = 0xc020699c\n\tSIOCGIFRDOMAIN                    = 0xc02069a0\n\tSIOCGIFRTLABEL                    = 0xc0206983\n\tSIOCGIFRXR                        = 0x802069aa\n\tSIOCGIFSFFPAGE                    = 0xc1126939\n\tSIOCGIFXFLAGS                     = 0xc020699e\n\tSIOCGLIFPHYADDR                   = 0xc218694b\n\tSIOCGLIFPHYDF                     = 0xc02069c2\n\tSIOCGLIFPHYECN                    = 0xc02069c8\n\tSIOCGLIFPHYRTABLE                 = 0xc02069a2\n\tSIOCGLIFPHYTTL                    = 0xc02069a9\n\tSIOCGPGRP                         = 0x40047309\n\tSIOCGPWE3                         = 0xc0206998\n\tSIOCGPWE3CTRLWORD                 = 0xc02069dc\n\tSIOCGPWE3FAT                      = 0xc02069dd\n\tSIOCGPWE3NEIGHBOR                 = 0xc21869de\n\tSIOCGRXHPRIO                      = 0xc02069db\n\tSIOCGSPPPPARAMS                   = 0xc0206994\n\tSIOCGTXHPRIO                      = 0xc02069c6\n\tSIOCGUMBINFO                      = 0xc02069be\n\tSIOCGUMBPARAM                     = 0xc02069c0\n\tSIOCGVH                           = 0xc02069f6\n\tSIOCGVNETFLOWID                   = 0xc02069c4\n\tSIOCGVNETID                       = 0xc02069a7\n\tSIOCIFAFATTACH                    = 0x801169ab\n\tSIOCIFAFDETACH                    = 0x801169ac\n\tSIOCIFCREATE                      = 0x8020697a\n\tSIOCIFDESTROY                     = 0x80206979\n\tSIOCIFGCLONERS                    = 0xc0106978\n\tSIOCSETKALIVE                     = 0x801869a3\n\tSIOCSETLABEL                      = 0x80206999\n\tSIOCSETMPWCFG                     = 0x802069ad\n\tSIOCSETPFLOW                      = 0x802069fd\n\tSIOCSETPFSYNC                     = 0x802069f7\n\tSIOCSETVLAN                       = 0x8020698f\n\tSIOCSIFADDR                       = 0x8020690c\n\tSIOCSIFBRDADDR                    = 0x80206913\n\tSIOCSIFDESCR                      = 0x80206980\n\tSIOCSIFDSTADDR                    = 0x8020690e\n\tSIOCSIFFLAGS                      = 0x80206910\n\tSIOCSIFGATTR                      = 0x8028698c\n\tSIOCSIFGENERIC                    = 0x80206939\n\tSIOCSIFLLADDR                     = 0x8020691f\n\tSIOCSIFLLPRIO                     = 0x802069b5\n\tSIOCSIFMEDIA                      = 0xc0206937\n\tSIOCSIFMETRIC                     = 0x80206918\n\tSIOCSIFMTU                        = 0x8020697f\n\tSIOCSIFNETMASK                    = 0x80206916\n\tSIOCSIFPAIR                       = 0x802069b0\n\tSIOCSIFPARENT                     = 0x802069b2\n\tSIOCSIFPRIORITY                   = 0x8020699b\n\tSIOCSIFRDOMAIN                    = 0x8020699f\n\tSIOCSIFRTLABEL                    = 0x80206982\n\tSIOCSIFXFLAGS                     = 0x8020699d\n\tSIOCSLIFPHYADDR                   = 0x8218694a\n\tSIOCSLIFPHYDF                     = 0x802069c1\n\tSIOCSLIFPHYECN                    = 0x802069c7\n\tSIOCSLIFPHYRTABLE                 = 0x802069a1\n\tSIOCSLIFPHYTTL                    = 0x802069a8\n\tSIOCSPGRP                         = 0x80047308\n\tSIOCSPWE3CTRLWORD                 = 0x802069dc\n\tSIOCSPWE3FAT                      = 0x802069dd\n\tSIOCSPWE3NEIGHBOR                 = 0x821869de\n\tSIOCSRXHPRIO                      = 0x802069db\n\tSIOCSSPPPPARAMS                   = 0x80206993\n\tSIOCSTXHPRIO                      = 0x802069c5\n\tSIOCSUMBPARAM                     = 0x802069bf\n\tSIOCSVH                           = 0xc02069f5\n\tSIOCSVNETFLOWID                   = 0x802069c3\n\tSIOCSVNETID                       = 0x802069a6\n\tSOCK_CLOEXEC                      = 0x8000\n\tSOCK_DGRAM                        = 0x2\n\tSOCK_DNS                          = 0x1000\n\tSOCK_NONBLOCK                     = 0x4000\n\tSOCK_RAW                          = 0x3\n\tSOCK_RDM                          = 0x4\n\tSOCK_SEQPACKET                    = 0x5\n\tSOCK_STREAM                       = 0x1\n\tSOL_SOCKET                        = 0xffff\n\tSOMAXCONN                         = 0x80\n\tSO_ACCEPTCONN                     = 0x2\n\tSO_BINDANY                        = 0x1000\n\tSO_BROADCAST                      = 0x20\n\tSO_DEBUG                          = 0x1\n\tSO_DOMAIN                         = 0x1024\n\tSO_DONTROUTE                      = 0x10\n\tSO_ERROR                          = 0x1007\n\tSO_KEEPALIVE                      = 0x8\n\tSO_LINGER                         = 0x80\n\tSO_NETPROC                        = 0x1020\n\tSO_OOBINLINE                      = 0x100\n\tSO_PEERCRED                       = 0x1022\n\tSO_PROTOCOL                       = 0x1025\n\tSO_RCVBUF                         = 0x1002\n\tSO_RCVLOWAT                       = 0x1004\n\tSO_RCVTIMEO                       = 0x1006\n\tSO_REUSEADDR                      = 0x4\n\tSO_REUSEPORT                      = 0x200\n\tSO_RTABLE                         = 0x1021\n\tSO_SNDBUF                         = 0x1001\n\tSO_SNDLOWAT                       = 0x1003\n\tSO_SNDTIMEO                       = 0x1005\n\tSO_SPLICE                         = 0x1023\n\tSO_TIMESTAMP                      = 0x800\n\tSO_TYPE                           = 0x1008\n\tSO_USELOOPBACK                    = 0x40\n\tSO_ZEROIZE                        = 0x2000\n\tS_BLKSIZE                         = 0x200\n\tS_IEXEC                           = 0x40\n\tS_IFBLK                           = 0x6000\n\tS_IFCHR                           = 0x2000\n\tS_IFDIR                           = 0x4000\n\tS_IFIFO                           = 0x1000\n\tS_IFLNK                           = 0xa000\n\tS_IFMT                            = 0xf000\n\tS_IFREG                           = 0x8000\n\tS_IFSOCK                          = 0xc000\n\tS_IREAD                           = 0x100\n\tS_IRGRP                           = 0x20\n\tS_IROTH                           = 0x4\n\tS_IRUSR                           = 0x100\n\tS_IRWXG                           = 0x38\n\tS_IRWXO                           = 0x7\n\tS_IRWXU                           = 0x1c0\n\tS_ISGID                           = 0x400\n\tS_ISTXT                           = 0x200\n\tS_ISUID                           = 0x800\n\tS_ISVTX                           = 0x200\n\tS_IWGRP                           = 0x10\n\tS_IWOTH                           = 0x2\n\tS_IWRITE                          = 0x80\n\tS_IWUSR                           = 0x80\n\tS_IXGRP                           = 0x8\n\tS_IXOTH                           = 0x1\n\tS_IXUSR                           = 0x40\n\tTCIFLUSH                          = 0x1\n\tTCIOFF                            = 0x3\n\tTCIOFLUSH                         = 0x3\n\tTCION                             = 0x4\n\tTCOFLUSH                          = 0x2\n\tTCOOFF                            = 0x1\n\tTCOON                             = 0x2\n\tTCPOPT_EOL                        = 0x0\n\tTCPOPT_MAXSEG                     = 0x2\n\tTCPOPT_NOP                        = 0x1\n\tTCPOPT_SACK                       = 0x5\n\tTCPOPT_SACK_HDR                   = 0x1010500\n\tTCPOPT_SACK_PERMITTED             = 0x4\n\tTCPOPT_SACK_PERMIT_HDR            = 0x1010402\n\tTCPOPT_SIGNATURE                  = 0x13\n\tTCPOPT_TIMESTAMP                  = 0x8\n\tTCPOPT_TSTAMP_HDR                 = 0x101080a\n\tTCPOPT_WINDOW                     = 0x3\n\tTCP_INFO                          = 0x9\n\tTCP_MAXSEG                        = 0x2\n\tTCP_MAXWIN                        = 0xffff\n\tTCP_MAX_SACK                      = 0x3\n\tTCP_MAX_WINSHIFT                  = 0xe\n\tTCP_MD5SIG                        = 0x4\n\tTCP_MSS                           = 0x200\n\tTCP_NODELAY                       = 0x1\n\tTCP_NOPUSH                        = 0x10\n\tTCP_SACKHOLE_LIMIT                = 0x80\n\tTCP_SACK_ENABLE                   = 0x8\n\tTCSAFLUSH                         = 0x2\n\tTIMER_ABSTIME                     = 0x1\n\tTIMER_RELTIME                     = 0x0\n\tTIOCCBRK                          = 0x2000747a\n\tTIOCCDTR                          = 0x20007478\n\tTIOCCHKVERAUTH                    = 0x2000741e\n\tTIOCCLRVERAUTH                    = 0x2000741d\n\tTIOCCONS                          = 0x80047462\n\tTIOCDRAIN                         = 0x2000745e\n\tTIOCEXCL                          = 0x2000740d\n\tTIOCEXT                           = 0x80047460\n\tTIOCFLAG_CLOCAL                   = 0x2\n\tTIOCFLAG_CRTSCTS                  = 0x4\n\tTIOCFLAG_MDMBUF                   = 0x8\n\tTIOCFLAG_PPS                      = 0x10\n\tTIOCFLAG_SOFTCAR                  = 0x1\n\tTIOCFLUSH                         = 0x80047410\n\tTIOCGETA                          = 0x402c7413\n\tTIOCGETD                          = 0x4004741a\n\tTIOCGFLAGS                        = 0x4004745d\n\tTIOCGPGRP                         = 0x40047477\n\tTIOCGSID                          = 0x40047463\n\tTIOCGTSTAMP                       = 0x4010745b\n\tTIOCGWINSZ                        = 0x40087468\n\tTIOCMBIC                          = 0x8004746b\n\tTIOCMBIS                          = 0x8004746c\n\tTIOCMGET                          = 0x4004746a\n\tTIOCMODG                          = 0x4004746a\n\tTIOCMODS                          = 0x8004746d\n\tTIOCMSET                          = 0x8004746d\n\tTIOCM_CAR                         = 0x40\n\tTIOCM_CD                          = 0x40\n\tTIOCM_CTS                         = 0x20\n\tTIOCM_DSR                         = 0x100\n\tTIOCM_DTR                         = 0x2\n\tTIOCM_LE                          = 0x1\n\tTIOCM_RI                          = 0x80\n\tTIOCM_RNG                         = 0x80\n\tTIOCM_RTS                         = 0x4\n\tTIOCM_SR                          = 0x10\n\tTIOCM_ST                          = 0x8\n\tTIOCNOTTY                         = 0x20007471\n\tTIOCNXCL                          = 0x2000740e\n\tTIOCOUTQ                          = 0x40047473\n\tTIOCPKT                           = 0x80047470\n\tTIOCPKT_DATA                      = 0x0\n\tTIOCPKT_DOSTOP                    = 0x20\n\tTIOCPKT_FLUSHREAD                 = 0x1\n\tTIOCPKT_FLUSHWRITE                = 0x2\n\tTIOCPKT_IOCTL                     = 0x40\n\tTIOCPKT_NOSTOP                    = 0x10\n\tTIOCPKT_START                     = 0x8\n\tTIOCPKT_STOP                      = 0x4\n\tTIOCREMOTE                        = 0x80047469\n\tTIOCSBRK                          = 0x2000747b\n\tTIOCSCTTY                         = 0x20007461\n\tTIOCSDTR                          = 0x20007479\n\tTIOCSETA                          = 0x802c7414\n\tTIOCSETAF                         = 0x802c7416\n\tTIOCSETAW                         = 0x802c7415\n\tTIOCSETD                          = 0x8004741b\n\tTIOCSETVERAUTH                    = 0x8004741c\n\tTIOCSFLAGS                        = 0x8004745c\n\tTIOCSIG                           = 0x8004745f\n\tTIOCSPGRP                         = 0x80047476\n\tTIOCSTART                         = 0x2000746e\n\tTIOCSTAT                          = 0x20007465\n\tTIOCSTOP                          = 0x2000746f\n\tTIOCSTSTAMP                       = 0x8008745a\n\tTIOCSWINSZ                        = 0x80087467\n\tTIOCUCNTL                         = 0x80047466\n\tTIOCUCNTL_CBRK                    = 0x7a\n\tTIOCUCNTL_SBRK                    = 0x7b\n\tTOSTOP                            = 0x400000\n\tUTIME_NOW                         = -0x2\n\tUTIME_OMIT                        = -0x1\n\tVDISCARD                          = 0xf\n\tVDSUSP                            = 0xb\n\tVEOF                              = 0x0\n\tVEOL                              = 0x1\n\tVEOL2                             = 0x2\n\tVERASE                            = 0x3\n\tVINTR                             = 0x8\n\tVKILL                             = 0x5\n\tVLNEXT                            = 0xe\n\tVMIN                              = 0x10\n\tVM_ANONMIN                        = 0x7\n\tVM_LOADAVG                        = 0x2\n\tVM_MALLOC_CONF                    = 0xc\n\tVM_MAXID                          = 0xd\n\tVM_MAXSLP                         = 0xa\n\tVM_METER                          = 0x1\n\tVM_NKMEMPAGES                     = 0x6\n\tVM_PSSTRINGS                      = 0x3\n\tVM_SWAPENCRYPT                    = 0x5\n\tVM_USPACE                         = 0xb\n\tVM_UVMEXP                         = 0x4\n\tVM_VNODEMIN                       = 0x9\n\tVM_VTEXTMIN                       = 0x8\n\tVQUIT                             = 0x9\n\tVREPRINT                          = 0x6\n\tVSTART                            = 0xc\n\tVSTATUS                           = 0x12\n\tVSTOP                             = 0xd\n\tVSUSP                             = 0xa\n\tVTIME                             = 0x11\n\tVWERASE                           = 0x4\n\tWALTSIG                           = 0x4\n\tWCONTINUED                        = 0x8\n\tWCOREFLAG                         = 0x80\n\tWNOHANG                           = 0x1\n\tWUNTRACED                         = 0x2\n\tXCASE                             = 0x1000000\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x30)\n\tEADDRNOTAVAIL   = syscall.Errno(0x31)\n\tEAFNOSUPPORT    = syscall.Errno(0x2f)\n\tEAGAIN          = syscall.Errno(0x23)\n\tEALREADY        = syscall.Errno(0x25)\n\tEAUTH           = syscall.Errno(0x50)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADMSG         = syscall.Errno(0x5c)\n\tEBADRPC         = syscall.Errno(0x48)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x58)\n\tECHILD          = syscall.Errno(0xa)\n\tECONNABORTED    = syscall.Errno(0x35)\n\tECONNREFUSED    = syscall.Errno(0x3d)\n\tECONNRESET      = syscall.Errno(0x36)\n\tEDEADLK         = syscall.Errno(0xb)\n\tEDESTADDRREQ    = syscall.Errno(0x27)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x45)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEFTYPE          = syscall.Errno(0x4f)\n\tEHOSTDOWN       = syscall.Errno(0x40)\n\tEHOSTUNREACH    = syscall.Errno(0x41)\n\tEIDRM           = syscall.Errno(0x59)\n\tEILSEQ          = syscall.Errno(0x54)\n\tEINPROGRESS     = syscall.Errno(0x24)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEIPSEC          = syscall.Errno(0x52)\n\tEISCONN         = syscall.Errno(0x38)\n\tEISDIR          = syscall.Errno(0x15)\n\tELAST           = syscall.Errno(0x5f)\n\tELOOP           = syscall.Errno(0x3e)\n\tEMEDIUMTYPE     = syscall.Errno(0x56)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x28)\n\tENAMETOOLONG    = syscall.Errno(0x3f)\n\tENEEDAUTH       = syscall.Errno(0x51)\n\tENETDOWN        = syscall.Errno(0x32)\n\tENETRESET       = syscall.Errno(0x34)\n\tENETUNREACH     = syscall.Errno(0x33)\n\tENFILE          = syscall.Errno(0x17)\n\tENOATTR         = syscall.Errno(0x53)\n\tENOBUFS         = syscall.Errno(0x37)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x4d)\n\tENOMEDIUM       = syscall.Errno(0x55)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x5a)\n\tENOPROTOOPT     = syscall.Errno(0x2a)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSYS          = syscall.Errno(0x4e)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x39)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x42)\n\tENOTRECOVERABLE = syscall.Errno(0x5d)\n\tENOTSOCK        = syscall.Errno(0x26)\n\tENOTSUP         = syscall.Errno(0x5b)\n\tENOTTY          = syscall.Errno(0x19)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x2d)\n\tEOVERFLOW       = syscall.Errno(0x57)\n\tEOWNERDEAD      = syscall.Errno(0x5e)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x2e)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROCLIM        = syscall.Errno(0x43)\n\tEPROCUNAVAIL    = syscall.Errno(0x4c)\n\tEPROGMISMATCH   = syscall.Errno(0x4b)\n\tEPROGUNAVAIL    = syscall.Errno(0x4a)\n\tEPROTO          = syscall.Errno(0x5f)\n\tEPROTONOSUPPORT = syscall.Errno(0x2b)\n\tEPROTOTYPE      = syscall.Errno(0x29)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMOTE         = syscall.Errno(0x47)\n\tEROFS           = syscall.Errno(0x1e)\n\tERPCMISMATCH    = syscall.Errno(0x49)\n\tESHUTDOWN       = syscall.Errno(0x3a)\n\tESOCKTNOSUPPORT = syscall.Errno(0x2c)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESTALE          = syscall.Errno(0x46)\n\tETIMEDOUT       = syscall.Errno(0x3c)\n\tETOOMANYREFS    = syscall.Errno(0x3b)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUSERS          = syscall.Errno(0x44)\n\tEWOULDBLOCK     = syscall.Errno(0x23)\n\tEXDEV           = syscall.Errno(0x12)\n)\n\n// Signals\nconst (\n\tSIGABRT   = syscall.Signal(0x6)\n\tSIGALRM   = syscall.Signal(0xe)\n\tSIGBUS    = syscall.Signal(0xa)\n\tSIGCHLD   = syscall.Signal(0x14)\n\tSIGCONT   = syscall.Signal(0x13)\n\tSIGEMT    = syscall.Signal(0x7)\n\tSIGFPE    = syscall.Signal(0x8)\n\tSIGHUP    = syscall.Signal(0x1)\n\tSIGILL    = syscall.Signal(0x4)\n\tSIGINFO   = syscall.Signal(0x1d)\n\tSIGINT    = syscall.Signal(0x2)\n\tSIGIO     = syscall.Signal(0x17)\n\tSIGIOT    = syscall.Signal(0x6)\n\tSIGKILL   = syscall.Signal(0x9)\n\tSIGPIPE   = syscall.Signal(0xd)\n\tSIGPROF   = syscall.Signal(0x1b)\n\tSIGQUIT   = syscall.Signal(0x3)\n\tSIGSEGV   = syscall.Signal(0xb)\n\tSIGSTOP   = syscall.Signal(0x11)\n\tSIGSYS    = syscall.Signal(0xc)\n\tSIGTERM   = syscall.Signal(0xf)\n\tSIGTHR    = syscall.Signal(0x20)\n\tSIGTRAP   = syscall.Signal(0x5)\n\tSIGTSTP   = syscall.Signal(0x12)\n\tSIGTTIN   = syscall.Signal(0x15)\n\tSIGTTOU   = syscall.Signal(0x16)\n\tSIGURG    = syscall.Signal(0x10)\n\tSIGUSR1   = syscall.Signal(0x1e)\n\tSIGUSR2   = syscall.Signal(0x1f)\n\tSIGVTALRM = syscall.Signal(0x1a)\n\tSIGWINCH  = syscall.Signal(0x1c)\n\tSIGXCPU   = syscall.Signal(0x18)\n\tSIGXFSZ   = syscall.Signal(0x19)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"operation not permitted\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"input/output error\"},\n\t{6, \"ENXIO\", \"device not configured\"},\n\t{7, \"E2BIG\", \"argument list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file descriptor\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EDEADLK\", \"resource deadlock avoided\"},\n\t{12, \"ENOMEM\", \"cannot allocate memory\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"operation not supported by device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"too many open files in system\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"numerical argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{36, \"EINPROGRESS\", \"operation now in progress\"},\n\t{37, \"EALREADY\", \"operation already in progress\"},\n\t{38, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{39, \"EDESTADDRREQ\", \"destination address required\"},\n\t{40, \"EMSGSIZE\", \"message too long\"},\n\t{41, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{42, \"ENOPROTOOPT\", \"protocol not available\"},\n\t{43, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{44, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{45, \"EOPNOTSUPP\", \"operation not supported\"},\n\t{46, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{47, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{48, \"EADDRINUSE\", \"address already in use\"},\n\t{49, \"EADDRNOTAVAIL\", \"can't assign requested address\"},\n\t{50, \"ENETDOWN\", \"network is down\"},\n\t{51, \"ENETUNREACH\", \"network is unreachable\"},\n\t{52, \"ENETRESET\", \"network dropped connection on reset\"},\n\t{53, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{54, \"ECONNRESET\", \"connection reset by peer\"},\n\t{55, \"ENOBUFS\", \"no buffer space available\"},\n\t{56, \"EISCONN\", \"socket is already connected\"},\n\t{57, \"ENOTCONN\", \"socket is not connected\"},\n\t{58, \"ESHUTDOWN\", \"can't send after socket shutdown\"},\n\t{59, \"ETOOMANYREFS\", \"too many references: can't splice\"},\n\t{60, \"ETIMEDOUT\", \"operation timed out\"},\n\t{61, \"ECONNREFUSED\", \"connection refused\"},\n\t{62, \"ELOOP\", \"too many levels of symbolic links\"},\n\t{63, \"ENAMETOOLONG\", \"file name too long\"},\n\t{64, \"EHOSTDOWN\", \"host is down\"},\n\t{65, \"EHOSTUNREACH\", \"no route to host\"},\n\t{66, \"ENOTEMPTY\", \"directory not empty\"},\n\t{67, \"EPROCLIM\", \"too many processes\"},\n\t{68, \"EUSERS\", \"too many users\"},\n\t{69, \"EDQUOT\", \"disk quota exceeded\"},\n\t{70, \"ESTALE\", \"stale NFS file handle\"},\n\t{71, \"EREMOTE\", \"too many levels of remote in path\"},\n\t{72, \"EBADRPC\", \"RPC struct is bad\"},\n\t{73, \"ERPCMISMATCH\", \"RPC version wrong\"},\n\t{74, \"EPROGUNAVAIL\", \"RPC program not available\"},\n\t{75, \"EPROGMISMATCH\", \"program version wrong\"},\n\t{76, \"EPROCUNAVAIL\", \"bad procedure for program\"},\n\t{77, \"ENOLCK\", \"no locks available\"},\n\t{78, \"ENOSYS\", \"function not implemented\"},\n\t{79, \"EFTYPE\", \"inappropriate file type or format\"},\n\t{80, \"EAUTH\", \"authentication error\"},\n\t{81, \"ENEEDAUTH\", \"need authenticator\"},\n\t{82, \"EIPSEC\", \"IPsec processing failure\"},\n\t{83, \"ENOATTR\", \"attribute not found\"},\n\t{84, \"EILSEQ\", \"illegal byte sequence\"},\n\t{85, \"ENOMEDIUM\", \"no medium found\"},\n\t{86, \"EMEDIUMTYPE\", \"wrong medium type\"},\n\t{87, \"EOVERFLOW\", \"value too large to be stored in data type\"},\n\t{88, \"ECANCELED\", \"operation canceled\"},\n\t{89, \"EIDRM\", \"identifier removed\"},\n\t{90, \"ENOMSG\", \"no message of desired type\"},\n\t{91, \"ENOTSUP\", \"not supported\"},\n\t{92, \"EBADMSG\", \"bad message\"},\n\t{93, \"ENOTRECOVERABLE\", \"state not recoverable\"},\n\t{94, \"EOWNERDEAD\", \"previous owner died\"},\n\t{95, \"ELAST\", \"protocol error\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGTRAP\", \"trace/BPT trap\"},\n\t{6, \"SIGABRT\", \"abort trap\"},\n\t{7, \"SIGEMT\", \"EMT trap\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad system call\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGURG\", \"urgent I/O condition\"},\n\t{17, \"SIGSTOP\", \"suspended (signal)\"},\n\t{18, \"SIGTSTP\", \"suspended\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGXCPU\", \"cputime limit exceeded\"},\n\t{25, \"SIGXFSZ\", \"filesize limit exceeded\"},\n\t{26, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{27, \"SIGPROF\", \"profiling timer expired\"},\n\t{28, \"SIGWINCH\", \"window size changes\"},\n\t{29, \"SIGINFO\", \"information request\"},\n\t{30, \"SIGUSR1\", \"user defined signal 1\"},\n\t{31, \"SIGUSR2\", \"user defined signal 2\"},\n\t{32, \"SIGTHR\", \"thread AST\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_solaris_amd64.go",
    "content": "// mkerrors.sh -m64\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\n// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n// cgo -godefs -- -m64 _const.go\n\npackage unix\n\nimport \"syscall\"\n\nconst (\n\tAF_802                        = 0x12\n\tAF_APPLETALK                  = 0x10\n\tAF_CCITT                      = 0xa\n\tAF_CHAOS                      = 0x5\n\tAF_DATAKIT                    = 0x9\n\tAF_DECnet                     = 0xc\n\tAF_DLI                        = 0xd\n\tAF_ECMA                       = 0x8\n\tAF_FILE                       = 0x1\n\tAF_GOSIP                      = 0x16\n\tAF_HYLINK                     = 0xf\n\tAF_IMPLINK                    = 0x3\n\tAF_INET                       = 0x2\n\tAF_INET6                      = 0x1a\n\tAF_INET_OFFLOAD               = 0x1e\n\tAF_IPX                        = 0x17\n\tAF_KEY                        = 0x1b\n\tAF_LAT                        = 0xe\n\tAF_LINK                       = 0x19\n\tAF_LOCAL                      = 0x1\n\tAF_MAX                        = 0x20\n\tAF_NBS                        = 0x7\n\tAF_NCA                        = 0x1c\n\tAF_NIT                        = 0x11\n\tAF_NS                         = 0x6\n\tAF_OSI                        = 0x13\n\tAF_OSINET                     = 0x15\n\tAF_PACKET                     = 0x20\n\tAF_POLICY                     = 0x1d\n\tAF_PUP                        = 0x4\n\tAF_ROUTE                      = 0x18\n\tAF_SNA                        = 0xb\n\tAF_TRILL                      = 0x1f\n\tAF_UNIX                       = 0x1\n\tAF_UNSPEC                     = 0x0\n\tAF_X25                        = 0x14\n\tARPHRD_ARCNET                 = 0x7\n\tARPHRD_ATM                    = 0x10\n\tARPHRD_AX25                   = 0x3\n\tARPHRD_CHAOS                  = 0x5\n\tARPHRD_EETHER                 = 0x2\n\tARPHRD_ETHER                  = 0x1\n\tARPHRD_FC                     = 0x12\n\tARPHRD_FRAME                  = 0xf\n\tARPHRD_HDLC                   = 0x11\n\tARPHRD_IB                     = 0x20\n\tARPHRD_IEEE802                = 0x6\n\tARPHRD_IPATM                  = 0x13\n\tARPHRD_METRICOM               = 0x17\n\tARPHRD_TUNNEL                 = 0x1f\n\tB0                            = 0x0\n\tB110                          = 0x3\n\tB115200                       = 0x12\n\tB1200                         = 0x9\n\tB134                          = 0x4\n\tB150                          = 0x5\n\tB153600                       = 0x13\n\tB1800                         = 0xa\n\tB19200                        = 0xe\n\tB200                          = 0x6\n\tB230400                       = 0x14\n\tB2400                         = 0xb\n\tB300                          = 0x7\n\tB307200                       = 0x15\n\tB38400                        = 0xf\n\tB460800                       = 0x16\n\tB4800                         = 0xc\n\tB50                           = 0x1\n\tB57600                        = 0x10\n\tB600                          = 0x8\n\tB75                           = 0x2\n\tB76800                        = 0x11\n\tB921600                       = 0x17\n\tB9600                         = 0xd\n\tBIOCFLUSH                     = 0x20004268\n\tBIOCGBLEN                     = 0x40044266\n\tBIOCGDLT                      = 0x4004426a\n\tBIOCGDLTLIST                  = -0x3fefbd89\n\tBIOCGDLTLIST32                = -0x3ff7bd89\n\tBIOCGETIF                     = 0x4020426b\n\tBIOCGETLIF                    = 0x4078426b\n\tBIOCGHDRCMPLT                 = 0x40044274\n\tBIOCGRTIMEOUT                 = 0x4010427b\n\tBIOCGRTIMEOUT32               = 0x4008427b\n\tBIOCGSEESENT                  = 0x40044278\n\tBIOCGSTATS                    = 0x4080426f\n\tBIOCGSTATSOLD                 = 0x4008426f\n\tBIOCIMMEDIATE                 = -0x7ffbbd90\n\tBIOCPROMISC                   = 0x20004269\n\tBIOCSBLEN                     = -0x3ffbbd9a\n\tBIOCSDLT                      = -0x7ffbbd8a\n\tBIOCSETF                      = -0x7fefbd99\n\tBIOCSETF32                    = -0x7ff7bd99\n\tBIOCSETIF                     = -0x7fdfbd94\n\tBIOCSETLIF                    = -0x7f87bd94\n\tBIOCSHDRCMPLT                 = -0x7ffbbd8b\n\tBIOCSRTIMEOUT                 = -0x7fefbd86\n\tBIOCSRTIMEOUT32               = -0x7ff7bd86\n\tBIOCSSEESENT                  = -0x7ffbbd87\n\tBIOCSTCPF                     = -0x7fefbd8e\n\tBIOCSUDPF                     = -0x7fefbd8d\n\tBIOCVERSION                   = 0x40044271\n\tBPF_A                         = 0x10\n\tBPF_ABS                       = 0x20\n\tBPF_ADD                       = 0x0\n\tBPF_ALIGNMENT                 = 0x4\n\tBPF_ALU                       = 0x4\n\tBPF_AND                       = 0x50\n\tBPF_B                         = 0x10\n\tBPF_DFLTBUFSIZE               = 0x100000\n\tBPF_DIV                       = 0x30\n\tBPF_H                         = 0x8\n\tBPF_IMM                       = 0x0\n\tBPF_IND                       = 0x40\n\tBPF_JA                        = 0x0\n\tBPF_JEQ                       = 0x10\n\tBPF_JGE                       = 0x30\n\tBPF_JGT                       = 0x20\n\tBPF_JMP                       = 0x5\n\tBPF_JSET                      = 0x40\n\tBPF_K                         = 0x0\n\tBPF_LD                        = 0x0\n\tBPF_LDX                       = 0x1\n\tBPF_LEN                       = 0x80\n\tBPF_LSH                       = 0x60\n\tBPF_MAJOR_VERSION             = 0x1\n\tBPF_MAXBUFSIZE                = 0x1000000\n\tBPF_MAXINSNS                  = 0x200\n\tBPF_MEM                       = 0x60\n\tBPF_MEMWORDS                  = 0x10\n\tBPF_MINBUFSIZE                = 0x20\n\tBPF_MINOR_VERSION             = 0x1\n\tBPF_MISC                      = 0x7\n\tBPF_MSH                       = 0xa0\n\tBPF_MUL                       = 0x20\n\tBPF_NEG                       = 0x80\n\tBPF_OR                        = 0x40\n\tBPF_RELEASE                   = 0x30bb6\n\tBPF_RET                       = 0x6\n\tBPF_RSH                       = 0x70\n\tBPF_ST                        = 0x2\n\tBPF_STX                       = 0x3\n\tBPF_SUB                       = 0x10\n\tBPF_TAX                       = 0x0\n\tBPF_TXA                       = 0x80\n\tBPF_W                         = 0x0\n\tBPF_X                         = 0x8\n\tBRKINT                        = 0x2\n\tBS0                           = 0x0\n\tBS1                           = 0x2000\n\tBSDLY                         = 0x2000\n\tCBAUD                         = 0xf\n\tCFLUSH                        = 0xf\n\tCIBAUD                        = 0xf0000\n\tCLOCAL                        = 0x800\n\tCLOCK_HIGHRES                 = 0x4\n\tCLOCK_LEVEL                   = 0xa\n\tCLOCK_MONOTONIC               = 0x4\n\tCLOCK_PROCESS_CPUTIME_ID      = 0x5\n\tCLOCK_PROF                    = 0x2\n\tCLOCK_REALTIME                = 0x3\n\tCLOCK_THREAD_CPUTIME_ID       = 0x2\n\tCLOCK_VIRTUAL                 = 0x1\n\tCR0                           = 0x0\n\tCR1                           = 0x200\n\tCR2                           = 0x400\n\tCR3                           = 0x600\n\tCRDLY                         = 0x600\n\tCREAD                         = 0x80\n\tCRTSCTS                       = 0x80000000\n\tCS5                           = 0x0\n\tCS6                           = 0x10\n\tCS7                           = 0x20\n\tCS8                           = 0x30\n\tCSIZE                         = 0x30\n\tCSTART                        = 0x11\n\tCSTATUS                       = 0x14\n\tCSTOP                         = 0x13\n\tCSTOPB                        = 0x40\n\tCSUSP                         = 0x1a\n\tCSWTCH                        = 0x1a\n\tDIOC                          = 0x6400\n\tDIOCGETB                      = 0x6402\n\tDIOCGETC                      = 0x6401\n\tDIOCGETP                      = 0x6408\n\tDIOCSETE                      = 0x6403\n\tDIOCSETP                      = 0x6409\n\tDLT_AIRONET_HEADER            = 0x78\n\tDLT_APPLE_IP_OVER_IEEE1394    = 0x8a\n\tDLT_ARCNET                    = 0x7\n\tDLT_ARCNET_LINUX              = 0x81\n\tDLT_ATM_CLIP                  = 0x13\n\tDLT_ATM_RFC1483               = 0xb\n\tDLT_AURORA                    = 0x7e\n\tDLT_AX25                      = 0x3\n\tDLT_BACNET_MS_TP              = 0xa5\n\tDLT_CHAOS                     = 0x5\n\tDLT_CISCO_IOS                 = 0x76\n\tDLT_C_HDLC                    = 0x68\n\tDLT_DOCSIS                    = 0x8f\n\tDLT_ECONET                    = 0x73\n\tDLT_EN10MB                    = 0x1\n\tDLT_EN3MB                     = 0x2\n\tDLT_ENC                       = 0x6d\n\tDLT_ERF_ETH                   = 0xaf\n\tDLT_ERF_POS                   = 0xb0\n\tDLT_FDDI                      = 0xa\n\tDLT_FRELAY                    = 0x6b\n\tDLT_GCOM_SERIAL               = 0xad\n\tDLT_GCOM_T1E1                 = 0xac\n\tDLT_GPF_F                     = 0xab\n\tDLT_GPF_T                     = 0xaa\n\tDLT_GPRS_LLC                  = 0xa9\n\tDLT_HDLC                      = 0x10\n\tDLT_HHDLC                     = 0x79\n\tDLT_HIPPI                     = 0xf\n\tDLT_IBM_SN                    = 0x92\n\tDLT_IBM_SP                    = 0x91\n\tDLT_IEEE802                   = 0x6\n\tDLT_IEEE802_11                = 0x69\n\tDLT_IEEE802_11_RADIO          = 0x7f\n\tDLT_IEEE802_11_RADIO_AVS      = 0xa3\n\tDLT_IPNET                     = 0xe2\n\tDLT_IPOIB                     = 0xa2\n\tDLT_IP_OVER_FC                = 0x7a\n\tDLT_JUNIPER_ATM1              = 0x89\n\tDLT_JUNIPER_ATM2              = 0x87\n\tDLT_JUNIPER_CHDLC             = 0xb5\n\tDLT_JUNIPER_ES                = 0x84\n\tDLT_JUNIPER_ETHER             = 0xb2\n\tDLT_JUNIPER_FRELAY            = 0xb4\n\tDLT_JUNIPER_GGSN              = 0x85\n\tDLT_JUNIPER_MFR               = 0x86\n\tDLT_JUNIPER_MLFR              = 0x83\n\tDLT_JUNIPER_MLPPP             = 0x82\n\tDLT_JUNIPER_MONITOR           = 0xa4\n\tDLT_JUNIPER_PIC_PEER          = 0xae\n\tDLT_JUNIPER_PPP               = 0xb3\n\tDLT_JUNIPER_PPPOE             = 0xa7\n\tDLT_JUNIPER_PPPOE_ATM         = 0xa8\n\tDLT_JUNIPER_SERVICES          = 0x88\n\tDLT_LINUX_IRDA                = 0x90\n\tDLT_LINUX_LAPD                = 0xb1\n\tDLT_LINUX_SLL                 = 0x71\n\tDLT_LOOP                      = 0x6c\n\tDLT_LTALK                     = 0x72\n\tDLT_MTP2                      = 0x8c\n\tDLT_MTP2_WITH_PHDR            = 0x8b\n\tDLT_MTP3                      = 0x8d\n\tDLT_NULL                      = 0x0\n\tDLT_PCI_EXP                   = 0x7d\n\tDLT_PFLOG                     = 0x75\n\tDLT_PFSYNC                    = 0x12\n\tDLT_PPP                       = 0x9\n\tDLT_PPP_BSDOS                 = 0xe\n\tDLT_PPP_PPPD                  = 0xa6\n\tDLT_PRISM_HEADER              = 0x77\n\tDLT_PRONET                    = 0x4\n\tDLT_RAW                       = 0xc\n\tDLT_RAWAF_MASK                = 0x2240000\n\tDLT_RIO                       = 0x7c\n\tDLT_SCCP                      = 0x8e\n\tDLT_SLIP                      = 0x8\n\tDLT_SLIP_BSDOS                = 0xd\n\tDLT_SUNATM                    = 0x7b\n\tDLT_SYMANTEC_FIREWALL         = 0x63\n\tDLT_TZSP                      = 0x80\n\tECHO                          = 0x8\n\tECHOCTL                       = 0x200\n\tECHOE                         = 0x10\n\tECHOK                         = 0x20\n\tECHOKE                        = 0x800\n\tECHONL                        = 0x40\n\tECHOPRT                       = 0x400\n\tEMPTY_SET                     = 0x0\n\tEMT_CPCOVF                    = 0x1\n\tEQUALITY_CHECK                = 0x0\n\tEXTA                          = 0xe\n\tEXTB                          = 0xf\n\tFD_CLOEXEC                    = 0x1\n\tFD_NFDBITS                    = 0x40\n\tFD_SETSIZE                    = 0x10000\n\tFF0                           = 0x0\n\tFF1                           = 0x8000\n\tFFDLY                         = 0x8000\n\tFIORDCHK                      = 0x6603\n\tFLUSHALL                      = 0x1\n\tFLUSHDATA                     = 0x0\n\tFLUSHO                        = 0x2000\n\tF_ALLOCSP                     = 0xa\n\tF_ALLOCSP64                   = 0xa\n\tF_BADFD                       = 0x2e\n\tF_BLKSIZE                     = 0x13\n\tF_BLOCKS                      = 0x12\n\tF_CHKFL                       = 0x8\n\tF_COMPAT                      = 0x8\n\tF_DUP2FD                      = 0x9\n\tF_DUP2FD_CLOEXEC              = 0x24\n\tF_DUPFD                       = 0x0\n\tF_DUPFD_CLOEXEC               = 0x25\n\tF_FLOCK                       = 0x35\n\tF_FLOCK64                     = 0x35\n\tF_FLOCKW                      = 0x36\n\tF_FLOCKW64                    = 0x36\n\tF_FREESP                      = 0xb\n\tF_FREESP64                    = 0xb\n\tF_GETFD                       = 0x1\n\tF_GETFL                       = 0x3\n\tF_GETLK                       = 0xe\n\tF_GETLK64                     = 0xe\n\tF_GETOWN                      = 0x17\n\tF_GETXFL                      = 0x2d\n\tF_HASREMOTELOCKS              = 0x1a\n\tF_ISSTREAM                    = 0xd\n\tF_MANDDNY                     = 0x10\n\tF_MDACC                       = 0x20\n\tF_NODNY                       = 0x0\n\tF_NPRIV                       = 0x10\n\tF_OFD_GETLK                   = 0x2f\n\tF_OFD_GETLK64                 = 0x2f\n\tF_OFD_SETLK                   = 0x30\n\tF_OFD_SETLK64                 = 0x30\n\tF_OFD_SETLKW                  = 0x31\n\tF_OFD_SETLKW64                = 0x31\n\tF_PRIV                        = 0xf\n\tF_QUOTACTL                    = 0x11\n\tF_RDACC                       = 0x1\n\tF_RDDNY                       = 0x1\n\tF_RDLCK                       = 0x1\n\tF_REVOKE                      = 0x19\n\tF_RMACC                       = 0x4\n\tF_RMDNY                       = 0x4\n\tF_RWACC                       = 0x3\n\tF_RWDNY                       = 0x3\n\tF_SETFD                       = 0x2\n\tF_SETFL                       = 0x4\n\tF_SETLK                       = 0x6\n\tF_SETLK64                     = 0x6\n\tF_SETLK64_NBMAND              = 0x2a\n\tF_SETLKW                      = 0x7\n\tF_SETLKW64                    = 0x7\n\tF_SETLK_NBMAND                = 0x2a\n\tF_SETOWN                      = 0x18\n\tF_SHARE                       = 0x28\n\tF_SHARE_NBMAND                = 0x2b\n\tF_UNLCK                       = 0x3\n\tF_UNLKSYS                     = 0x4\n\tF_UNSHARE                     = 0x29\n\tF_WRACC                       = 0x2\n\tF_WRDNY                       = 0x2\n\tF_WRLCK                       = 0x2\n\tHUPCL                         = 0x400\n\tIBSHIFT                       = 0x10\n\tICANON                        = 0x2\n\tICMP6_FILTER                  = 0x1\n\tICRNL                         = 0x100\n\tIEXTEN                        = 0x8000\n\tIFF_ADDRCONF                  = 0x80000\n\tIFF_ALLMULTI                  = 0x200\n\tIFF_ANYCAST                   = 0x400000\n\tIFF_BROADCAST                 = 0x2\n\tIFF_CANTCHANGE                = 0x7f203003b5a\n\tIFF_COS_ENABLED               = 0x200000000\n\tIFF_DEBUG                     = 0x4\n\tIFF_DEPRECATED                = 0x40000\n\tIFF_DHCPRUNNING               = 0x4000\n\tIFF_DUPLICATE                 = 0x4000000000\n\tIFF_FAILED                    = 0x10000000\n\tIFF_FIXEDMTU                  = 0x1000000000\n\tIFF_INACTIVE                  = 0x40000000\n\tIFF_INTELLIGENT               = 0x400\n\tIFF_IPMP                      = 0x8000000000\n\tIFF_IPMP_CANTCHANGE           = 0x10000000\n\tIFF_IPMP_INVALID              = 0x1ec200080\n\tIFF_IPV4                      = 0x1000000\n\tIFF_IPV6                      = 0x2000000\n\tIFF_L3PROTECT                 = 0x40000000000\n\tIFF_LOOPBACK                  = 0x8\n\tIFF_MULTICAST                 = 0x800\n\tIFF_MULTI_BCAST               = 0x1000\n\tIFF_NOACCEPT                  = 0x4000000\n\tIFF_NOARP                     = 0x80\n\tIFF_NOFAILOVER                = 0x8000000\n\tIFF_NOLINKLOCAL               = 0x20000000000\n\tIFF_NOLOCAL                   = 0x20000\n\tIFF_NONUD                     = 0x200000\n\tIFF_NORTEXCH                  = 0x800000\n\tIFF_NOTRAILERS                = 0x20\n\tIFF_NOXMIT                    = 0x10000\n\tIFF_OFFLINE                   = 0x80000000\n\tIFF_POINTOPOINT               = 0x10\n\tIFF_PREFERRED                 = 0x400000000\n\tIFF_PRIVATE                   = 0x8000\n\tIFF_PROMISC                   = 0x100\n\tIFF_ROUTER                    = 0x100000\n\tIFF_RUNNING                   = 0x40\n\tIFF_STANDBY                   = 0x20000000\n\tIFF_TEMPORARY                 = 0x800000000\n\tIFF_UNNUMBERED                = 0x2000\n\tIFF_UP                        = 0x1\n\tIFF_VIRTUAL                   = 0x2000000000\n\tIFF_VRRP                      = 0x10000000000\n\tIFF_XRESOLV                   = 0x100000000\n\tIFNAMSIZ                      = 0x10\n\tIFT_1822                      = 0x2\n\tIFT_6TO4                      = 0xca\n\tIFT_AAL5                      = 0x31\n\tIFT_ARCNET                    = 0x23\n\tIFT_ARCNETPLUS                = 0x24\n\tIFT_ATM                       = 0x25\n\tIFT_CEPT                      = 0x13\n\tIFT_DS3                       = 0x1e\n\tIFT_EON                       = 0x19\n\tIFT_ETHER                     = 0x6\n\tIFT_FDDI                      = 0xf\n\tIFT_FRELAY                    = 0x20\n\tIFT_FRELAYDCE                 = 0x2c\n\tIFT_HDH1822                   = 0x3\n\tIFT_HIPPI                     = 0x2f\n\tIFT_HSSI                      = 0x2e\n\tIFT_HY                        = 0xe\n\tIFT_IB                        = 0xc7\n\tIFT_IPV4                      = 0xc8\n\tIFT_IPV6                      = 0xc9\n\tIFT_ISDNBASIC                 = 0x14\n\tIFT_ISDNPRIMARY               = 0x15\n\tIFT_ISO88022LLC               = 0x29\n\tIFT_ISO88023                  = 0x7\n\tIFT_ISO88024                  = 0x8\n\tIFT_ISO88025                  = 0x9\n\tIFT_ISO88026                  = 0xa\n\tIFT_LAPB                      = 0x10\n\tIFT_LOCALTALK                 = 0x2a\n\tIFT_LOOP                      = 0x18\n\tIFT_MIOX25                    = 0x26\n\tIFT_MODEM                     = 0x30\n\tIFT_NSIP                      = 0x1b\n\tIFT_OTHER                     = 0x1\n\tIFT_P10                       = 0xc\n\tIFT_P80                       = 0xd\n\tIFT_PARA                      = 0x22\n\tIFT_PPP                       = 0x17\n\tIFT_PROPMUX                   = 0x36\n\tIFT_PROPVIRTUAL               = 0x35\n\tIFT_PTPSERIAL                 = 0x16\n\tIFT_RS232                     = 0x21\n\tIFT_SDLC                      = 0x11\n\tIFT_SIP                       = 0x1f\n\tIFT_SLIP                      = 0x1c\n\tIFT_SMDSDXI                   = 0x2b\n\tIFT_SMDSICIP                  = 0x34\n\tIFT_SONET                     = 0x27\n\tIFT_SONETPATH                 = 0x32\n\tIFT_SONETVT                   = 0x33\n\tIFT_STARLAN                   = 0xb\n\tIFT_T1                        = 0x12\n\tIFT_ULTRA                     = 0x1d\n\tIFT_V35                       = 0x2d\n\tIFT_X25                       = 0x5\n\tIFT_X25DDN                    = 0x4\n\tIFT_X25PLE                    = 0x28\n\tIFT_XETHER                    = 0x1a\n\tIGNBRK                        = 0x1\n\tIGNCR                         = 0x80\n\tIGNPAR                        = 0x4\n\tIMAXBEL                       = 0x2000\n\tINLCR                         = 0x40\n\tINPCK                         = 0x10\n\tIN_AUTOCONF_MASK              = 0xffff0000\n\tIN_AUTOCONF_NET               = 0xa9fe0000\n\tIN_CLASSA_HOST                = 0xffffff\n\tIN_CLASSA_MAX                 = 0x80\n\tIN_CLASSA_NET                 = 0xff000000\n\tIN_CLASSA_NSHIFT              = 0x18\n\tIN_CLASSB_HOST                = 0xffff\n\tIN_CLASSB_MAX                 = 0x10000\n\tIN_CLASSB_NET                 = 0xffff0000\n\tIN_CLASSB_NSHIFT              = 0x10\n\tIN_CLASSC_HOST                = 0xff\n\tIN_CLASSC_NET                 = 0xffffff00\n\tIN_CLASSC_NSHIFT              = 0x8\n\tIN_CLASSD_HOST                = 0xfffffff\n\tIN_CLASSD_NET                 = 0xf0000000\n\tIN_CLASSD_NSHIFT              = 0x1c\n\tIN_CLASSE_NET                 = 0xffffffff\n\tIN_LOOPBACKNET                = 0x7f\n\tIN_PRIVATE12_MASK             = 0xfff00000\n\tIN_PRIVATE12_NET              = 0xac100000\n\tIN_PRIVATE16_MASK             = 0xffff0000\n\tIN_PRIVATE16_NET              = 0xc0a80000\n\tIN_PRIVATE8_MASK              = 0xff000000\n\tIN_PRIVATE8_NET               = 0xa000000\n\tIPPROTO_AH                    = 0x33\n\tIPPROTO_DSTOPTS               = 0x3c\n\tIPPROTO_EGP                   = 0x8\n\tIPPROTO_ENCAP                 = 0x4\n\tIPPROTO_EON                   = 0x50\n\tIPPROTO_ESP                   = 0x32\n\tIPPROTO_FRAGMENT              = 0x2c\n\tIPPROTO_GGP                   = 0x3\n\tIPPROTO_HELLO                 = 0x3f\n\tIPPROTO_HOPOPTS               = 0x0\n\tIPPROTO_ICMP                  = 0x1\n\tIPPROTO_ICMPV6                = 0x3a\n\tIPPROTO_IDP                   = 0x16\n\tIPPROTO_IGMP                  = 0x2\n\tIPPROTO_IP                    = 0x0\n\tIPPROTO_IPV6                  = 0x29\n\tIPPROTO_MAX                   = 0x100\n\tIPPROTO_ND                    = 0x4d\n\tIPPROTO_NONE                  = 0x3b\n\tIPPROTO_OSPF                  = 0x59\n\tIPPROTO_PIM                   = 0x67\n\tIPPROTO_PUP                   = 0xc\n\tIPPROTO_RAW                   = 0xff\n\tIPPROTO_ROUTING               = 0x2b\n\tIPPROTO_RSVP                  = 0x2e\n\tIPPROTO_SCTP                  = 0x84\n\tIPPROTO_TCP                   = 0x6\n\tIPPROTO_UDP                   = 0x11\n\tIPV6_ADD_MEMBERSHIP           = 0x9\n\tIPV6_BOUND_IF                 = 0x41\n\tIPV6_CHECKSUM                 = 0x18\n\tIPV6_DONTFRAG                 = 0x21\n\tIPV6_DROP_MEMBERSHIP          = 0xa\n\tIPV6_DSTOPTS                  = 0xf\n\tIPV6_FLOWINFO_FLOWLABEL       = 0xffff0f00\n\tIPV6_FLOWINFO_TCLASS          = 0xf00f\n\tIPV6_HOPLIMIT                 = 0xc\n\tIPV6_HOPOPTS                  = 0xe\n\tIPV6_JOIN_GROUP               = 0x9\n\tIPV6_LEAVE_GROUP              = 0xa\n\tIPV6_MULTICAST_HOPS           = 0x7\n\tIPV6_MULTICAST_IF             = 0x6\n\tIPV6_MULTICAST_LOOP           = 0x8\n\tIPV6_NEXTHOP                  = 0xd\n\tIPV6_PAD1_OPT                 = 0x0\n\tIPV6_PATHMTU                  = 0x25\n\tIPV6_PKTINFO                  = 0xb\n\tIPV6_PREFER_SRC_CGA           = 0x20\n\tIPV6_PREFER_SRC_CGADEFAULT    = 0x10\n\tIPV6_PREFER_SRC_CGAMASK       = 0x30\n\tIPV6_PREFER_SRC_COA           = 0x2\n\tIPV6_PREFER_SRC_DEFAULT       = 0x15\n\tIPV6_PREFER_SRC_HOME          = 0x1\n\tIPV6_PREFER_SRC_MASK          = 0x3f\n\tIPV6_PREFER_SRC_MIPDEFAULT    = 0x1\n\tIPV6_PREFER_SRC_MIPMASK       = 0x3\n\tIPV6_PREFER_SRC_NONCGA        = 0x10\n\tIPV6_PREFER_SRC_PUBLIC        = 0x4\n\tIPV6_PREFER_SRC_TMP           = 0x8\n\tIPV6_PREFER_SRC_TMPDEFAULT    = 0x4\n\tIPV6_PREFER_SRC_TMPMASK       = 0xc\n\tIPV6_RECVDSTOPTS              = 0x28\n\tIPV6_RECVHOPLIMIT             = 0x13\n\tIPV6_RECVHOPOPTS              = 0x14\n\tIPV6_RECVPATHMTU              = 0x24\n\tIPV6_RECVPKTINFO              = 0x12\n\tIPV6_RECVRTHDR                = 0x16\n\tIPV6_RECVRTHDRDSTOPTS         = 0x17\n\tIPV6_RECVTCLASS               = 0x19\n\tIPV6_RTHDR                    = 0x10\n\tIPV6_RTHDRDSTOPTS             = 0x11\n\tIPV6_RTHDR_TYPE_0             = 0x0\n\tIPV6_SEC_OPT                  = 0x22\n\tIPV6_SRC_PREFERENCES          = 0x23\n\tIPV6_TCLASS                   = 0x26\n\tIPV6_UNICAST_HOPS             = 0x5\n\tIPV6_UNSPEC_SRC               = 0x42\n\tIPV6_USE_MIN_MTU              = 0x20\n\tIPV6_V6ONLY                   = 0x27\n\tIP_ADD_MEMBERSHIP             = 0x13\n\tIP_ADD_SOURCE_MEMBERSHIP      = 0x17\n\tIP_BLOCK_SOURCE               = 0x15\n\tIP_BOUND_IF                   = 0x41\n\tIP_BROADCAST                  = 0x106\n\tIP_BROADCAST_TTL              = 0x43\n\tIP_DEFAULT_MULTICAST_LOOP     = 0x1\n\tIP_DEFAULT_MULTICAST_TTL      = 0x1\n\tIP_DF                         = 0x4000\n\tIP_DHCPINIT_IF                = 0x45\n\tIP_DONTFRAG                   = 0x1b\n\tIP_DONTROUTE                  = 0x105\n\tIP_DROP_MEMBERSHIP            = 0x14\n\tIP_DROP_SOURCE_MEMBERSHIP     = 0x18\n\tIP_HDRINCL                    = 0x2\n\tIP_MAXPACKET                  = 0xffff\n\tIP_MF                         = 0x2000\n\tIP_MSS                        = 0x240\n\tIP_MULTICAST_IF               = 0x10\n\tIP_MULTICAST_LOOP             = 0x12\n\tIP_MULTICAST_TTL              = 0x11\n\tIP_NEXTHOP                    = 0x19\n\tIP_OPTIONS                    = 0x1\n\tIP_PKTINFO                    = 0x1a\n\tIP_RECVDSTADDR                = 0x7\n\tIP_RECVIF                     = 0x9\n\tIP_RECVOPTS                   = 0x5\n\tIP_RECVPKTINFO                = 0x1a\n\tIP_RECVRETOPTS                = 0x6\n\tIP_RECVSLLA                   = 0xa\n\tIP_RECVTOS                    = 0xc\n\tIP_RECVTTL                    = 0xb\n\tIP_RETOPTS                    = 0x8\n\tIP_REUSEADDR                  = 0x104\n\tIP_SEC_OPT                    = 0x22\n\tIP_TOS                        = 0x3\n\tIP_TTL                        = 0x4\n\tIP_UNBLOCK_SOURCE             = 0x16\n\tIP_UNSPEC_SRC                 = 0x42\n\tISIG                          = 0x1\n\tISTRIP                        = 0x20\n\tIUCLC                         = 0x200\n\tIXANY                         = 0x800\n\tIXOFF                         = 0x1000\n\tIXON                          = 0x400\n\tLOCK_EX                       = 0x2\n\tLOCK_NB                       = 0x4\n\tLOCK_SH                       = 0x1\n\tLOCK_UN                       = 0x8\n\tMADV_ACCESS_DEFAULT           = 0x6\n\tMADV_ACCESS_LWP               = 0x7\n\tMADV_ACCESS_MANY              = 0x8\n\tMADV_DONTNEED                 = 0x4\n\tMADV_FREE                     = 0x5\n\tMADV_NORMAL                   = 0x0\n\tMADV_PURGE                    = 0x9\n\tMADV_RANDOM                   = 0x1\n\tMADV_SEQUENTIAL               = 0x2\n\tMADV_WILLNEED                 = 0x3\n\tMAP_32BIT                     = 0x80\n\tMAP_ALIGN                     = 0x200\n\tMAP_ANON                      = 0x100\n\tMAP_ANONYMOUS                 = 0x100\n\tMAP_FILE                      = 0x0\n\tMAP_FIXED                     = 0x10\n\tMAP_INITDATA                  = 0x800\n\tMAP_NORESERVE                 = 0x40\n\tMAP_PRIVATE                   = 0x2\n\tMAP_RENAME                    = 0x20\n\tMAP_SHARED                    = 0x1\n\tMAP_TEXT                      = 0x400\n\tMAP_TYPE                      = 0xf\n\tMCAST_BLOCK_SOURCE            = 0x2b\n\tMCAST_EXCLUDE                 = 0x2\n\tMCAST_INCLUDE                 = 0x1\n\tMCAST_JOIN_GROUP              = 0x29\n\tMCAST_JOIN_SOURCE_GROUP       = 0x2d\n\tMCAST_LEAVE_GROUP             = 0x2a\n\tMCAST_LEAVE_SOURCE_GROUP      = 0x2e\n\tMCAST_UNBLOCK_SOURCE          = 0x2c\n\tMCL_CURRENT                   = 0x1\n\tMCL_FUTURE                    = 0x2\n\tMSG_CTRUNC                    = 0x10\n\tMSG_DONTROUTE                 = 0x4\n\tMSG_DONTWAIT                  = 0x80\n\tMSG_DUPCTRL                   = 0x800\n\tMSG_EOR                       = 0x8\n\tMSG_MAXIOVLEN                 = 0x10\n\tMSG_NOSIGNAL                  = 0x200\n\tMSG_NOTIFICATION              = 0x100\n\tMSG_OOB                       = 0x1\n\tMSG_PEEK                      = 0x2\n\tMSG_TRUNC                     = 0x20\n\tMSG_WAITALL                   = 0x40\n\tMSG_XPG4_2                    = 0x8000\n\tMS_ASYNC                      = 0x1\n\tMS_INVALIDATE                 = 0x2\n\tMS_OLDSYNC                    = 0x0\n\tMS_SYNC                       = 0x4\n\tM_FLUSH                       = 0x86\n\tNAME_MAX                      = 0xff\n\tNEWDEV                        = 0x1\n\tNFDBITS                       = 0x40\n\tNL0                           = 0x0\n\tNL1                           = 0x100\n\tNLDLY                         = 0x100\n\tNOFLSH                        = 0x80\n\tOCRNL                         = 0x8\n\tOFDEL                         = 0x80\n\tOFILL                         = 0x40\n\tOLCUC                         = 0x2\n\tOLDDEV                        = 0x0\n\tONBITSMAJOR                   = 0x7\n\tONBITSMINOR                   = 0x8\n\tONLCR                         = 0x4\n\tONLRET                        = 0x20\n\tONOCR                         = 0x10\n\tOPENFAIL                      = -0x1\n\tOPOST                         = 0x1\n\tO_ACCMODE                     = 0x600003\n\tO_APPEND                      = 0x8\n\tO_CLOEXEC                     = 0x800000\n\tO_CREAT                       = 0x100\n\tO_DIRECT                      = 0x2000000\n\tO_DIRECTORY                   = 0x1000000\n\tO_DSYNC                       = 0x40\n\tO_EXCL                        = 0x400\n\tO_EXEC                        = 0x400000\n\tO_LARGEFILE                   = 0x2000\n\tO_NDELAY                      = 0x4\n\tO_NOCTTY                      = 0x800\n\tO_NOFOLLOW                    = 0x20000\n\tO_NOLINKS                     = 0x40000\n\tO_NONBLOCK                    = 0x80\n\tO_RDONLY                      = 0x0\n\tO_RDWR                        = 0x2\n\tO_RSYNC                       = 0x8000\n\tO_SEARCH                      = 0x200000\n\tO_SIOCGIFCONF                 = -0x3ff796ec\n\tO_SIOCGLIFCONF                = -0x3fef9688\n\tO_SYNC                        = 0x10\n\tO_TRUNC                       = 0x200\n\tO_WRONLY                      = 0x1\n\tO_XATTR                       = 0x4000\n\tPARENB                        = 0x100\n\tPAREXT                        = 0x100000\n\tPARMRK                        = 0x8\n\tPARODD                        = 0x200\n\tPENDIN                        = 0x4000\n\tPRIO_PGRP                     = 0x1\n\tPRIO_PROCESS                  = 0x0\n\tPRIO_USER                     = 0x2\n\tPROT_EXEC                     = 0x4\n\tPROT_NONE                     = 0x0\n\tPROT_READ                     = 0x1\n\tPROT_WRITE                    = 0x2\n\tRLIMIT_AS                     = 0x6\n\tRLIMIT_CORE                   = 0x4\n\tRLIMIT_CPU                    = 0x0\n\tRLIMIT_DATA                   = 0x2\n\tRLIMIT_FSIZE                  = 0x1\n\tRLIMIT_NOFILE                 = 0x5\n\tRLIMIT_STACK                  = 0x3\n\tRLIM_INFINITY                 = 0xfffffffffffffffd\n\tRTAX_AUTHOR                   = 0x6\n\tRTAX_BRD                      = 0x7\n\tRTAX_DST                      = 0x0\n\tRTAX_GATEWAY                  = 0x1\n\tRTAX_GENMASK                  = 0x3\n\tRTAX_IFA                      = 0x5\n\tRTAX_IFP                      = 0x4\n\tRTAX_MAX                      = 0x9\n\tRTAX_NETMASK                  = 0x2\n\tRTAX_SRC                      = 0x8\n\tRTA_AUTHOR                    = 0x40\n\tRTA_BRD                       = 0x80\n\tRTA_DST                       = 0x1\n\tRTA_GATEWAY                   = 0x2\n\tRTA_GENMASK                   = 0x8\n\tRTA_IFA                       = 0x20\n\tRTA_IFP                       = 0x10\n\tRTA_NETMASK                   = 0x4\n\tRTA_NUMBITS                   = 0x9\n\tRTA_SRC                       = 0x100\n\tRTF_BLACKHOLE                 = 0x1000\n\tRTF_CLONING                   = 0x100\n\tRTF_DONE                      = 0x40\n\tRTF_DYNAMIC                   = 0x10\n\tRTF_GATEWAY                   = 0x2\n\tRTF_HOST                      = 0x4\n\tRTF_INDIRECT                  = 0x40000\n\tRTF_KERNEL                    = 0x80000\n\tRTF_LLINFO                    = 0x400\n\tRTF_MASK                      = 0x80\n\tRTF_MODIFIED                  = 0x20\n\tRTF_MULTIRT                   = 0x10000\n\tRTF_PRIVATE                   = 0x2000\n\tRTF_PROTO1                    = 0x8000\n\tRTF_PROTO2                    = 0x4000\n\tRTF_REJECT                    = 0x8\n\tRTF_SETSRC                    = 0x20000\n\tRTF_STATIC                    = 0x800\n\tRTF_UP                        = 0x1\n\tRTF_XRESOLVE                  = 0x200\n\tRTF_ZONE                      = 0x100000\n\tRTM_ADD                       = 0x1\n\tRTM_CHANGE                    = 0x3\n\tRTM_CHGADDR                   = 0xf\n\tRTM_DELADDR                   = 0xd\n\tRTM_DELETE                    = 0x2\n\tRTM_FREEADDR                  = 0x10\n\tRTM_GET                       = 0x4\n\tRTM_IFINFO                    = 0xe\n\tRTM_LOCK                      = 0x8\n\tRTM_LOSING                    = 0x5\n\tRTM_MISS                      = 0x7\n\tRTM_NEWADDR                   = 0xc\n\tRTM_OLDADD                    = 0x9\n\tRTM_OLDDEL                    = 0xa\n\tRTM_REDIRECT                  = 0x6\n\tRTM_RESOLVE                   = 0xb\n\tRTM_VERSION                   = 0x3\n\tRTV_EXPIRE                    = 0x4\n\tRTV_HOPCOUNT                  = 0x2\n\tRTV_MTU                       = 0x1\n\tRTV_RPIPE                     = 0x8\n\tRTV_RTT                       = 0x40\n\tRTV_RTTVAR                    = 0x80\n\tRTV_SPIPE                     = 0x10\n\tRTV_SSTHRESH                  = 0x20\n\tRT_AWARE                      = 0x1\n\tRUSAGE_CHILDREN               = -0x1\n\tRUSAGE_SELF                   = 0x0\n\tSCM_RIGHTS                    = 0x1010\n\tSCM_TIMESTAMP                 = 0x1013\n\tSCM_UCRED                     = 0x1012\n\tSHUT_RD                       = 0x0\n\tSHUT_RDWR                     = 0x2\n\tSHUT_WR                       = 0x1\n\tSIG2STR_MAX                   = 0x20\n\tSIOCADDMULTI                  = -0x7fdf96cf\n\tSIOCADDRT                     = -0x7fcf8df6\n\tSIOCATMARK                    = 0x40047307\n\tSIOCDARP                      = -0x7fdb96e0\n\tSIOCDELMULTI                  = -0x7fdf96ce\n\tSIOCDELRT                     = -0x7fcf8df5\n\tSIOCDXARP                     = -0x7fff9658\n\tSIOCGARP                      = -0x3fdb96e1\n\tSIOCGDSTINFO                  = -0x3fff965c\n\tSIOCGENADDR                   = -0x3fdf96ab\n\tSIOCGENPSTATS                 = -0x3fdf96c7\n\tSIOCGETLSGCNT                 = -0x3fef8deb\n\tSIOCGETNAME                   = 0x40107334\n\tSIOCGETPEER                   = 0x40107335\n\tSIOCGETPROP                   = -0x3fff8f44\n\tSIOCGETSGCNT                  = -0x3feb8deb\n\tSIOCGETSYNC                   = -0x3fdf96d3\n\tSIOCGETVIFCNT                 = -0x3feb8dec\n\tSIOCGHIWAT                    = 0x40047301\n\tSIOCGIFADDR                   = -0x3fdf96f3\n\tSIOCGIFBRDADDR                = -0x3fdf96e9\n\tSIOCGIFCONF                   = -0x3ff796a4\n\tSIOCGIFDSTADDR                = -0x3fdf96f1\n\tSIOCGIFFLAGS                  = -0x3fdf96ef\n\tSIOCGIFHWADDR                 = -0x3fdf9647\n\tSIOCGIFINDEX                  = -0x3fdf96a6\n\tSIOCGIFMEM                    = -0x3fdf96ed\n\tSIOCGIFMETRIC                 = -0x3fdf96e5\n\tSIOCGIFMTU                    = -0x3fdf96ea\n\tSIOCGIFMUXID                  = -0x3fdf96a8\n\tSIOCGIFNETMASK                = -0x3fdf96e7\n\tSIOCGIFNUM                    = 0x40046957\n\tSIOCGIP6ADDRPOLICY            = -0x3fff965e\n\tSIOCGIPMSFILTER               = -0x3ffb964c\n\tSIOCGLIFADDR                  = -0x3f87968f\n\tSIOCGLIFBINDING               = -0x3f879666\n\tSIOCGLIFBRDADDR               = -0x3f879685\n\tSIOCGLIFCONF                  = -0x3fef965b\n\tSIOCGLIFDADSTATE              = -0x3f879642\n\tSIOCGLIFDSTADDR               = -0x3f87968d\n\tSIOCGLIFFLAGS                 = -0x3f87968b\n\tSIOCGLIFGROUPINFO             = -0x3f4b9663\n\tSIOCGLIFGROUPNAME             = -0x3f879664\n\tSIOCGLIFHWADDR                = -0x3f879640\n\tSIOCGLIFINDEX                 = -0x3f87967b\n\tSIOCGLIFLNKINFO               = -0x3f879674\n\tSIOCGLIFMETRIC                = -0x3f879681\n\tSIOCGLIFMTU                   = -0x3f879686\n\tSIOCGLIFMUXID                 = -0x3f87967d\n\tSIOCGLIFNETMASK               = -0x3f879683\n\tSIOCGLIFNUM                   = -0x3ff3967e\n\tSIOCGLIFSRCOF                 = -0x3fef964f\n\tSIOCGLIFSUBNET                = -0x3f879676\n\tSIOCGLIFTOKEN                 = -0x3f879678\n\tSIOCGLIFUSESRC                = -0x3f879651\n\tSIOCGLIFZONE                  = -0x3f879656\n\tSIOCGLOWAT                    = 0x40047303\n\tSIOCGMSFILTER                 = -0x3ffb964e\n\tSIOCGPGRP                     = 0x40047309\n\tSIOCGSTAMP                    = -0x3fef9646\n\tSIOCGXARP                     = -0x3fff9659\n\tSIOCIFDETACH                  = -0x7fdf96c8\n\tSIOCILB                       = -0x3ffb9645\n\tSIOCLIFADDIF                  = -0x3f879691\n\tSIOCLIFDELND                  = -0x7f879673\n\tSIOCLIFGETND                  = -0x3f879672\n\tSIOCLIFREMOVEIF               = -0x7f879692\n\tSIOCLIFSETND                  = -0x7f879671\n\tSIOCLOWER                     = -0x7fdf96d7\n\tSIOCSARP                      = -0x7fdb96e2\n\tSIOCSCTPGOPT                  = -0x3fef9653\n\tSIOCSCTPPEELOFF               = -0x3ffb9652\n\tSIOCSCTPSOPT                  = -0x7fef9654\n\tSIOCSENABLESDP                = -0x3ffb9649\n\tSIOCSETPROP                   = -0x7ffb8f43\n\tSIOCSETSYNC                   = -0x7fdf96d4\n\tSIOCSHIWAT                    = -0x7ffb8d00\n\tSIOCSIFADDR                   = -0x7fdf96f4\n\tSIOCSIFBRDADDR                = -0x7fdf96e8\n\tSIOCSIFDSTADDR                = -0x7fdf96f2\n\tSIOCSIFFLAGS                  = -0x7fdf96f0\n\tSIOCSIFINDEX                  = -0x7fdf96a5\n\tSIOCSIFMEM                    = -0x7fdf96ee\n\tSIOCSIFMETRIC                 = -0x7fdf96e4\n\tSIOCSIFMTU                    = -0x7fdf96eb\n\tSIOCSIFMUXID                  = -0x7fdf96a7\n\tSIOCSIFNAME                   = -0x7fdf96b7\n\tSIOCSIFNETMASK                = -0x7fdf96e6\n\tSIOCSIP6ADDRPOLICY            = -0x7fff965d\n\tSIOCSIPMSFILTER               = -0x7ffb964b\n\tSIOCSLGETREQ                  = -0x3fdf96b9\n\tSIOCSLIFADDR                  = -0x7f879690\n\tSIOCSLIFBRDADDR               = -0x7f879684\n\tSIOCSLIFDSTADDR               = -0x7f87968e\n\tSIOCSLIFFLAGS                 = -0x7f87968c\n\tSIOCSLIFGROUPNAME             = -0x7f879665\n\tSIOCSLIFINDEX                 = -0x7f87967a\n\tSIOCSLIFLNKINFO               = -0x7f879675\n\tSIOCSLIFMETRIC                = -0x7f879680\n\tSIOCSLIFMTU                   = -0x7f879687\n\tSIOCSLIFMUXID                 = -0x7f87967c\n\tSIOCSLIFNAME                  = -0x3f87967f\n\tSIOCSLIFNETMASK               = -0x7f879682\n\tSIOCSLIFPREFIX                = -0x3f879641\n\tSIOCSLIFSUBNET                = -0x7f879677\n\tSIOCSLIFTOKEN                 = -0x7f879679\n\tSIOCSLIFUSESRC                = -0x7f879650\n\tSIOCSLIFZONE                  = -0x7f879655\n\tSIOCSLOWAT                    = -0x7ffb8cfe\n\tSIOCSLSTAT                    = -0x7fdf96b8\n\tSIOCSMSFILTER                 = -0x7ffb964d\n\tSIOCSPGRP                     = -0x7ffb8cf8\n\tSIOCSPROMISC                  = -0x7ffb96d0\n\tSIOCSQPTR                     = -0x3ffb9648\n\tSIOCSSDSTATS                  = -0x3fdf96d2\n\tSIOCSSESTATS                  = -0x3fdf96d1\n\tSIOCSXARP                     = -0x7fff965a\n\tSIOCTMYADDR                   = -0x3ff79670\n\tSIOCTMYSITE                   = -0x3ff7966e\n\tSIOCTONLINK                   = -0x3ff7966f\n\tSIOCUPPER                     = -0x7fdf96d8\n\tSIOCX25RCV                    = -0x3fdf96c4\n\tSIOCX25TBL                    = -0x3fdf96c3\n\tSIOCX25XMT                    = -0x3fdf96c5\n\tSIOCXPROTO                    = 0x20007337\n\tSOCK_CLOEXEC                  = 0x80000\n\tSOCK_DGRAM                    = 0x1\n\tSOCK_NDELAY                   = 0x200000\n\tSOCK_NONBLOCK                 = 0x100000\n\tSOCK_RAW                      = 0x4\n\tSOCK_RDM                      = 0x5\n\tSOCK_SEQPACKET                = 0x6\n\tSOCK_STREAM                   = 0x2\n\tSOCK_TYPE_MASK                = 0xffff\n\tSOL_FILTER                    = 0xfffc\n\tSOL_PACKET                    = 0xfffd\n\tSOL_ROUTE                     = 0xfffe\n\tSOL_SOCKET                    = 0xffff\n\tSOMAXCONN                     = 0x80\n\tSO_ACCEPTCONN                 = 0x2\n\tSO_ALL                        = 0x3f\n\tSO_ALLZONES                   = 0x1014\n\tSO_ANON_MLP                   = 0x100a\n\tSO_ATTACH_FILTER              = 0x40000001\n\tSO_BAND                       = 0x4000\n\tSO_BROADCAST                  = 0x20\n\tSO_COPYOPT                    = 0x80000\n\tSO_DEBUG                      = 0x1\n\tSO_DELIM                      = 0x8000\n\tSO_DETACH_FILTER              = 0x40000002\n\tSO_DGRAM_ERRIND               = 0x200\n\tSO_DOMAIN                     = 0x100c\n\tSO_DONTLINGER                 = -0x81\n\tSO_DONTROUTE                  = 0x10\n\tSO_ERROPT                     = 0x40000\n\tSO_ERROR                      = 0x1007\n\tSO_EXCLBIND                   = 0x1015\n\tSO_HIWAT                      = 0x10\n\tSO_ISNTTY                     = 0x800\n\tSO_ISTTY                      = 0x400\n\tSO_KEEPALIVE                  = 0x8\n\tSO_LINGER                     = 0x80\n\tSO_LOWAT                      = 0x20\n\tSO_MAC_EXEMPT                 = 0x100b\n\tSO_MAC_IMPLICIT               = 0x1016\n\tSO_MAXBLK                     = 0x100000\n\tSO_MAXPSZ                     = 0x8\n\tSO_MINPSZ                     = 0x4\n\tSO_MREADOFF                   = 0x80\n\tSO_MREADON                    = 0x40\n\tSO_NDELOFF                    = 0x200\n\tSO_NDELON                     = 0x100\n\tSO_NODELIM                    = 0x10000\n\tSO_OOBINLINE                  = 0x100\n\tSO_PROTOTYPE                  = 0x1009\n\tSO_RCVBUF                     = 0x1002\n\tSO_RCVLOWAT                   = 0x1004\n\tSO_RCVPSH                     = 0x100d\n\tSO_RCVTIMEO                   = 0x1006\n\tSO_READOPT                    = 0x1\n\tSO_RECVUCRED                  = 0x400\n\tSO_REUSEADDR                  = 0x4\n\tSO_SECATTR                    = 0x1011\n\tSO_SNDBUF                     = 0x1001\n\tSO_SNDLOWAT                   = 0x1003\n\tSO_SNDTIMEO                   = 0x1005\n\tSO_STRHOLD                    = 0x20000\n\tSO_TAIL                       = 0x200000\n\tSO_TIMESTAMP                  = 0x1013\n\tSO_TONSTOP                    = 0x2000\n\tSO_TOSTOP                     = 0x1000\n\tSO_TYPE                       = 0x1008\n\tSO_USELOOPBACK                = 0x40\n\tSO_VRRP                       = 0x1017\n\tSO_WROFF                      = 0x2\n\tS_ENFMT                       = 0x400\n\tS_IAMB                        = 0x1ff\n\tS_IEXEC                       = 0x40\n\tS_IFBLK                       = 0x6000\n\tS_IFCHR                       = 0x2000\n\tS_IFDIR                       = 0x4000\n\tS_IFDOOR                      = 0xd000\n\tS_IFIFO                       = 0x1000\n\tS_IFLNK                       = 0xa000\n\tS_IFMT                        = 0xf000\n\tS_IFNAM                       = 0x5000\n\tS_IFPORT                      = 0xe000\n\tS_IFREG                       = 0x8000\n\tS_IFSOCK                      = 0xc000\n\tS_INSEM                       = 0x1\n\tS_INSHD                       = 0x2\n\tS_IREAD                       = 0x100\n\tS_IRGRP                       = 0x20\n\tS_IROTH                       = 0x4\n\tS_IRUSR                       = 0x100\n\tS_IRWXG                       = 0x38\n\tS_IRWXO                       = 0x7\n\tS_IRWXU                       = 0x1c0\n\tS_ISGID                       = 0x400\n\tS_ISUID                       = 0x800\n\tS_ISVTX                       = 0x200\n\tS_IWGRP                       = 0x10\n\tS_IWOTH                       = 0x2\n\tS_IWRITE                      = 0x80\n\tS_IWUSR                       = 0x80\n\tS_IXGRP                       = 0x8\n\tS_IXOTH                       = 0x1\n\tS_IXUSR                       = 0x40\n\tTAB0                          = 0x0\n\tTAB1                          = 0x800\n\tTAB2                          = 0x1000\n\tTAB3                          = 0x1800\n\tTABDLY                        = 0x1800\n\tTCFLSH                        = 0x5407\n\tTCGETA                        = 0x5401\n\tTCGETS                        = 0x540d\n\tTCIFLUSH                      = 0x0\n\tTCIOFF                        = 0x2\n\tTCIOFLUSH                     = 0x2\n\tTCION                         = 0x3\n\tTCOFLUSH                      = 0x1\n\tTCOOFF                        = 0x0\n\tTCOON                         = 0x1\n\tTCP_ABORT_THRESHOLD           = 0x11\n\tTCP_ANONPRIVBIND              = 0x20\n\tTCP_CONGESTION                = 0x25\n\tTCP_CONN_ABORT_THRESHOLD      = 0x13\n\tTCP_CONN_NOTIFY_THRESHOLD     = 0x12\n\tTCP_CORK                      = 0x18\n\tTCP_EXCLBIND                  = 0x21\n\tTCP_INIT_CWND                 = 0x15\n\tTCP_KEEPALIVE                 = 0x8\n\tTCP_KEEPALIVE_ABORT_THRESHOLD = 0x17\n\tTCP_KEEPALIVE_THRESHOLD       = 0x16\n\tTCP_KEEPCNT                   = 0x23\n\tTCP_KEEPIDLE                  = 0x22\n\tTCP_KEEPINTVL                 = 0x24\n\tTCP_LINGER2                   = 0x1c\n\tTCP_MAXSEG                    = 0x2\n\tTCP_MSS                       = 0x218\n\tTCP_NODELAY                   = 0x1\n\tTCP_NOTIFY_THRESHOLD          = 0x10\n\tTCP_RECVDSTADDR               = 0x14\n\tTCP_RTO_INITIAL               = 0x19\n\tTCP_RTO_MAX                   = 0x1b\n\tTCP_RTO_MIN                   = 0x1a\n\tTCSAFLUSH                     = 0x5410\n\tTCSBRK                        = 0x5405\n\tTCSETA                        = 0x5402\n\tTCSETAF                       = 0x5404\n\tTCSETAW                       = 0x5403\n\tTCSETS                        = 0x540e\n\tTCSETSF                       = 0x5410\n\tTCSETSW                       = 0x540f\n\tTCXONC                        = 0x5406\n\tTIMER_ABSTIME                 = 0x1\n\tTIMER_RELTIME                 = 0x0\n\tTIOC                          = 0x5400\n\tTIOCCBRK                      = 0x747a\n\tTIOCCDTR                      = 0x7478\n\tTIOCCILOOP                    = 0x746c\n\tTIOCEXCL                      = 0x740d\n\tTIOCFLUSH                     = 0x7410\n\tTIOCGETC                      = 0x7412\n\tTIOCGETD                      = 0x7400\n\tTIOCGETP                      = 0x7408\n\tTIOCGLTC                      = 0x7474\n\tTIOCGPGRP                     = 0x7414\n\tTIOCGPPS                      = 0x547d\n\tTIOCGPPSEV                    = 0x547f\n\tTIOCGSID                      = 0x7416\n\tTIOCGSOFTCAR                  = 0x5469\n\tTIOCGWINSZ                    = 0x5468\n\tTIOCHPCL                      = 0x7402\n\tTIOCKBOF                      = 0x5409\n\tTIOCKBON                      = 0x5408\n\tTIOCLBIC                      = 0x747e\n\tTIOCLBIS                      = 0x747f\n\tTIOCLGET                      = 0x747c\n\tTIOCLSET                      = 0x747d\n\tTIOCMBIC                      = 0x741c\n\tTIOCMBIS                      = 0x741b\n\tTIOCMGET                      = 0x741d\n\tTIOCMSET                      = 0x741a\n\tTIOCM_CAR                     = 0x40\n\tTIOCM_CD                      = 0x40\n\tTIOCM_CTS                     = 0x20\n\tTIOCM_DSR                     = 0x100\n\tTIOCM_DTR                     = 0x2\n\tTIOCM_LE                      = 0x1\n\tTIOCM_RI                      = 0x80\n\tTIOCM_RNG                     = 0x80\n\tTIOCM_RTS                     = 0x4\n\tTIOCM_SR                      = 0x10\n\tTIOCM_ST                      = 0x8\n\tTIOCNOTTY                     = 0x7471\n\tTIOCNXCL                      = 0x740e\n\tTIOCOUTQ                      = 0x7473\n\tTIOCREMOTE                    = 0x741e\n\tTIOCSBRK                      = 0x747b\n\tTIOCSCTTY                     = 0x7484\n\tTIOCSDTR                      = 0x7479\n\tTIOCSETC                      = 0x7411\n\tTIOCSETD                      = 0x7401\n\tTIOCSETN                      = 0x740a\n\tTIOCSETP                      = 0x7409\n\tTIOCSIGNAL                    = 0x741f\n\tTIOCSILOOP                    = 0x746d\n\tTIOCSLTC                      = 0x7475\n\tTIOCSPGRP                     = 0x7415\n\tTIOCSPPS                      = 0x547e\n\tTIOCSSOFTCAR                  = 0x546a\n\tTIOCSTART                     = 0x746e\n\tTIOCSTI                       = 0x7417\n\tTIOCSTOP                      = 0x746f\n\tTIOCSWINSZ                    = 0x5467\n\tTOSTOP                        = 0x100\n\tUTIME_NOW                     = -0x1\n\tUTIME_OMIT                    = -0x2\n\tVCEOF                         = 0x8\n\tVCEOL                         = 0x9\n\tVDISCARD                      = 0xd\n\tVDSUSP                        = 0xb\n\tVEOF                          = 0x4\n\tVEOL                          = 0x5\n\tVEOL2                         = 0x6\n\tVERASE                        = 0x2\n\tVERASE2                       = 0x11\n\tVINTR                         = 0x0\n\tVKILL                         = 0x3\n\tVLNEXT                        = 0xf\n\tVMIN                          = 0x4\n\tVQUIT                         = 0x1\n\tVREPRINT                      = 0xc\n\tVSTART                        = 0x8\n\tVSTATUS                       = 0x10\n\tVSTOP                         = 0x9\n\tVSUSP                         = 0xa\n\tVSWTCH                        = 0x7\n\tVT0                           = 0x0\n\tVT1                           = 0x4000\n\tVTDLY                         = 0x4000\n\tVTIME                         = 0x5\n\tVWERASE                       = 0xe\n\tWCONTFLG                      = 0xffff\n\tWCONTINUED                    = 0x8\n\tWCOREFLG                      = 0x80\n\tWEXITED                       = 0x1\n\tWNOHANG                       = 0x40\n\tWNOWAIT                       = 0x80\n\tWOPTMASK                      = 0xcf\n\tWRAP                          = 0x20000\n\tWSIGMASK                      = 0x7f\n\tWSTOPFLG                      = 0x7f\n\tWSTOPPED                      = 0x4\n\tWTRAPPED                      = 0x2\n\tWUNTRACED                     = 0x4\n\tXCASE                         = 0x4\n\tXTABS                         = 0x1800\n)\n\n// Errors\nconst (\n\tE2BIG           = syscall.Errno(0x7)\n\tEACCES          = syscall.Errno(0xd)\n\tEADDRINUSE      = syscall.Errno(0x7d)\n\tEADDRNOTAVAIL   = syscall.Errno(0x7e)\n\tEADV            = syscall.Errno(0x44)\n\tEAFNOSUPPORT    = syscall.Errno(0x7c)\n\tEAGAIN          = syscall.Errno(0xb)\n\tEALREADY        = syscall.Errno(0x95)\n\tEBADE           = syscall.Errno(0x32)\n\tEBADF           = syscall.Errno(0x9)\n\tEBADFD          = syscall.Errno(0x51)\n\tEBADMSG         = syscall.Errno(0x4d)\n\tEBADR           = syscall.Errno(0x33)\n\tEBADRQC         = syscall.Errno(0x36)\n\tEBADSLT         = syscall.Errno(0x37)\n\tEBFONT          = syscall.Errno(0x39)\n\tEBUSY           = syscall.Errno(0x10)\n\tECANCELED       = syscall.Errno(0x2f)\n\tECHILD          = syscall.Errno(0xa)\n\tECHRNG          = syscall.Errno(0x25)\n\tECOMM           = syscall.Errno(0x46)\n\tECONNABORTED    = syscall.Errno(0x82)\n\tECONNREFUSED    = syscall.Errno(0x92)\n\tECONNRESET      = syscall.Errno(0x83)\n\tEDEADLK         = syscall.Errno(0x2d)\n\tEDEADLOCK       = syscall.Errno(0x38)\n\tEDESTADDRREQ    = syscall.Errno(0x60)\n\tEDOM            = syscall.Errno(0x21)\n\tEDQUOT          = syscall.Errno(0x31)\n\tEEXIST          = syscall.Errno(0x11)\n\tEFAULT          = syscall.Errno(0xe)\n\tEFBIG           = syscall.Errno(0x1b)\n\tEHOSTDOWN       = syscall.Errno(0x93)\n\tEHOSTUNREACH    = syscall.Errno(0x94)\n\tEIDRM           = syscall.Errno(0x24)\n\tEILSEQ          = syscall.Errno(0x58)\n\tEINPROGRESS     = syscall.Errno(0x96)\n\tEINTR           = syscall.Errno(0x4)\n\tEINVAL          = syscall.Errno(0x16)\n\tEIO             = syscall.Errno(0x5)\n\tEISCONN         = syscall.Errno(0x85)\n\tEISDIR          = syscall.Errno(0x15)\n\tEL2HLT          = syscall.Errno(0x2c)\n\tEL2NSYNC        = syscall.Errno(0x26)\n\tEL3HLT          = syscall.Errno(0x27)\n\tEL3RST          = syscall.Errno(0x28)\n\tELIBACC         = syscall.Errno(0x53)\n\tELIBBAD         = syscall.Errno(0x54)\n\tELIBEXEC        = syscall.Errno(0x57)\n\tELIBMAX         = syscall.Errno(0x56)\n\tELIBSCN         = syscall.Errno(0x55)\n\tELNRNG          = syscall.Errno(0x29)\n\tELOCKUNMAPPED   = syscall.Errno(0x48)\n\tELOOP           = syscall.Errno(0x5a)\n\tEMFILE          = syscall.Errno(0x18)\n\tEMLINK          = syscall.Errno(0x1f)\n\tEMSGSIZE        = syscall.Errno(0x61)\n\tEMULTIHOP       = syscall.Errno(0x4a)\n\tENAMETOOLONG    = syscall.Errno(0x4e)\n\tENETDOWN        = syscall.Errno(0x7f)\n\tENETRESET       = syscall.Errno(0x81)\n\tENETUNREACH     = syscall.Errno(0x80)\n\tENFILE          = syscall.Errno(0x17)\n\tENOANO          = syscall.Errno(0x35)\n\tENOBUFS         = syscall.Errno(0x84)\n\tENOCSI          = syscall.Errno(0x2b)\n\tENODATA         = syscall.Errno(0x3d)\n\tENODEV          = syscall.Errno(0x13)\n\tENOENT          = syscall.Errno(0x2)\n\tENOEXEC         = syscall.Errno(0x8)\n\tENOLCK          = syscall.Errno(0x2e)\n\tENOLINK         = syscall.Errno(0x43)\n\tENOMEM          = syscall.Errno(0xc)\n\tENOMSG          = syscall.Errno(0x23)\n\tENONET          = syscall.Errno(0x40)\n\tENOPKG          = syscall.Errno(0x41)\n\tENOPROTOOPT     = syscall.Errno(0x63)\n\tENOSPC          = syscall.Errno(0x1c)\n\tENOSR           = syscall.Errno(0x3f)\n\tENOSTR          = syscall.Errno(0x3c)\n\tENOSYS          = syscall.Errno(0x59)\n\tENOTACTIVE      = syscall.Errno(0x49)\n\tENOTBLK         = syscall.Errno(0xf)\n\tENOTCONN        = syscall.Errno(0x86)\n\tENOTDIR         = syscall.Errno(0x14)\n\tENOTEMPTY       = syscall.Errno(0x5d)\n\tENOTRECOVERABLE = syscall.Errno(0x3b)\n\tENOTSOCK        = syscall.Errno(0x5f)\n\tENOTSUP         = syscall.Errno(0x30)\n\tENOTTY          = syscall.Errno(0x19)\n\tENOTUNIQ        = syscall.Errno(0x50)\n\tENXIO           = syscall.Errno(0x6)\n\tEOPNOTSUPP      = syscall.Errno(0x7a)\n\tEOVERFLOW       = syscall.Errno(0x4f)\n\tEOWNERDEAD      = syscall.Errno(0x3a)\n\tEPERM           = syscall.Errno(0x1)\n\tEPFNOSUPPORT    = syscall.Errno(0x7b)\n\tEPIPE           = syscall.Errno(0x20)\n\tEPROTO          = syscall.Errno(0x47)\n\tEPROTONOSUPPORT = syscall.Errno(0x78)\n\tEPROTOTYPE      = syscall.Errno(0x62)\n\tERANGE          = syscall.Errno(0x22)\n\tEREMCHG         = syscall.Errno(0x52)\n\tEREMOTE         = syscall.Errno(0x42)\n\tERESTART        = syscall.Errno(0x5b)\n\tEROFS           = syscall.Errno(0x1e)\n\tESHUTDOWN       = syscall.Errno(0x8f)\n\tESOCKTNOSUPPORT = syscall.Errno(0x79)\n\tESPIPE          = syscall.Errno(0x1d)\n\tESRCH           = syscall.Errno(0x3)\n\tESRMNT          = syscall.Errno(0x45)\n\tESTALE          = syscall.Errno(0x97)\n\tESTRPIPE        = syscall.Errno(0x5c)\n\tETIME           = syscall.Errno(0x3e)\n\tETIMEDOUT       = syscall.Errno(0x91)\n\tETOOMANYREFS    = syscall.Errno(0x90)\n\tETXTBSY         = syscall.Errno(0x1a)\n\tEUNATCH         = syscall.Errno(0x2a)\n\tEUSERS          = syscall.Errno(0x5e)\n\tEWOULDBLOCK     = syscall.Errno(0xb)\n\tEXDEV           = syscall.Errno(0x12)\n\tEXFULL          = syscall.Errno(0x34)\n)\n\n// Signals\nconst (\n\tSIGABRT    = syscall.Signal(0x6)\n\tSIGALRM    = syscall.Signal(0xe)\n\tSIGBUS     = syscall.Signal(0xa)\n\tSIGCANCEL  = syscall.Signal(0x24)\n\tSIGCHLD    = syscall.Signal(0x12)\n\tSIGCLD     = syscall.Signal(0x12)\n\tSIGCONT    = syscall.Signal(0x19)\n\tSIGEMT     = syscall.Signal(0x7)\n\tSIGFPE     = syscall.Signal(0x8)\n\tSIGFREEZE  = syscall.Signal(0x22)\n\tSIGHUP     = syscall.Signal(0x1)\n\tSIGILL     = syscall.Signal(0x4)\n\tSIGINFO    = syscall.Signal(0x29)\n\tSIGINT     = syscall.Signal(0x2)\n\tSIGIO      = syscall.Signal(0x16)\n\tSIGIOT     = syscall.Signal(0x6)\n\tSIGJVM1    = syscall.Signal(0x27)\n\tSIGJVM2    = syscall.Signal(0x28)\n\tSIGKILL    = syscall.Signal(0x9)\n\tSIGLOST    = syscall.Signal(0x25)\n\tSIGLWP     = syscall.Signal(0x21)\n\tSIGPIPE    = syscall.Signal(0xd)\n\tSIGPOLL    = syscall.Signal(0x16)\n\tSIGPROF    = syscall.Signal(0x1d)\n\tSIGPWR     = syscall.Signal(0x13)\n\tSIGQUIT    = syscall.Signal(0x3)\n\tSIGSEGV    = syscall.Signal(0xb)\n\tSIGSTOP    = syscall.Signal(0x17)\n\tSIGSYS     = syscall.Signal(0xc)\n\tSIGTERM    = syscall.Signal(0xf)\n\tSIGTHAW    = syscall.Signal(0x23)\n\tSIGTRAP    = syscall.Signal(0x5)\n\tSIGTSTP    = syscall.Signal(0x18)\n\tSIGTTIN    = syscall.Signal(0x1a)\n\tSIGTTOU    = syscall.Signal(0x1b)\n\tSIGURG     = syscall.Signal(0x15)\n\tSIGUSR1    = syscall.Signal(0x10)\n\tSIGUSR2    = syscall.Signal(0x11)\n\tSIGVTALRM  = syscall.Signal(0x1c)\n\tSIGWAITING = syscall.Signal(0x20)\n\tSIGWINCH   = syscall.Signal(0x14)\n\tSIGXCPU    = syscall.Signal(0x1e)\n\tSIGXFSZ    = syscall.Signal(0x1f)\n\tSIGXRES    = syscall.Signal(0x26)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  syscall.Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EPERM\", \"not owner\"},\n\t{2, \"ENOENT\", \"no such file or directory\"},\n\t{3, \"ESRCH\", \"no such process\"},\n\t{4, \"EINTR\", \"interrupted system call\"},\n\t{5, \"EIO\", \"I/O error\"},\n\t{6, \"ENXIO\", \"no such device or address\"},\n\t{7, \"E2BIG\", \"arg list too long\"},\n\t{8, \"ENOEXEC\", \"exec format error\"},\n\t{9, \"EBADF\", \"bad file number\"},\n\t{10, \"ECHILD\", \"no child processes\"},\n\t{11, \"EAGAIN\", \"resource temporarily unavailable\"},\n\t{12, \"ENOMEM\", \"not enough space\"},\n\t{13, \"EACCES\", \"permission denied\"},\n\t{14, \"EFAULT\", \"bad address\"},\n\t{15, \"ENOTBLK\", \"block device required\"},\n\t{16, \"EBUSY\", \"device busy\"},\n\t{17, \"EEXIST\", \"file exists\"},\n\t{18, \"EXDEV\", \"cross-device link\"},\n\t{19, \"ENODEV\", \"no such device\"},\n\t{20, \"ENOTDIR\", \"not a directory\"},\n\t{21, \"EISDIR\", \"is a directory\"},\n\t{22, \"EINVAL\", \"invalid argument\"},\n\t{23, \"ENFILE\", \"file table overflow\"},\n\t{24, \"EMFILE\", \"too many open files\"},\n\t{25, \"ENOTTY\", \"inappropriate ioctl for device\"},\n\t{26, \"ETXTBSY\", \"text file busy\"},\n\t{27, \"EFBIG\", \"file too large\"},\n\t{28, \"ENOSPC\", \"no space left on device\"},\n\t{29, \"ESPIPE\", \"illegal seek\"},\n\t{30, \"EROFS\", \"read-only file system\"},\n\t{31, \"EMLINK\", \"too many links\"},\n\t{32, \"EPIPE\", \"broken pipe\"},\n\t{33, \"EDOM\", \"argument out of domain\"},\n\t{34, \"ERANGE\", \"result too large\"},\n\t{35, \"ENOMSG\", \"no message of desired type\"},\n\t{36, \"EIDRM\", \"identifier removed\"},\n\t{37, \"ECHRNG\", \"channel number out of range\"},\n\t{38, \"EL2NSYNC\", \"level 2 not synchronized\"},\n\t{39, \"EL3HLT\", \"level 3 halted\"},\n\t{40, \"EL3RST\", \"level 3 reset\"},\n\t{41, \"ELNRNG\", \"link number out of range\"},\n\t{42, \"EUNATCH\", \"protocol driver not attached\"},\n\t{43, \"ENOCSI\", \"no CSI structure available\"},\n\t{44, \"EL2HLT\", \"level 2 halted\"},\n\t{45, \"EDEADLK\", \"deadlock situation detected/avoided\"},\n\t{46, \"ENOLCK\", \"no record locks available\"},\n\t{47, \"ECANCELED\", \"operation canceled\"},\n\t{48, \"ENOTSUP\", \"operation not supported\"},\n\t{49, \"EDQUOT\", \"disc quota exceeded\"},\n\t{50, \"EBADE\", \"bad exchange descriptor\"},\n\t{51, \"EBADR\", \"bad request descriptor\"},\n\t{52, \"EXFULL\", \"message tables full\"},\n\t{53, \"ENOANO\", \"anode table overflow\"},\n\t{54, \"EBADRQC\", \"bad request code\"},\n\t{55, \"EBADSLT\", \"invalid slot\"},\n\t{56, \"EDEADLOCK\", \"file locking deadlock\"},\n\t{57, \"EBFONT\", \"bad font file format\"},\n\t{58, \"EOWNERDEAD\", \"owner of the lock died\"},\n\t{59, \"ENOTRECOVERABLE\", \"lock is not recoverable\"},\n\t{60, \"ENOSTR\", \"not a stream device\"},\n\t{61, \"ENODATA\", \"no data available\"},\n\t{62, \"ETIME\", \"timer expired\"},\n\t{63, \"ENOSR\", \"out of stream resources\"},\n\t{64, \"ENONET\", \"machine is not on the network\"},\n\t{65, \"ENOPKG\", \"package not installed\"},\n\t{66, \"EREMOTE\", \"object is remote\"},\n\t{67, \"ENOLINK\", \"link has been severed\"},\n\t{68, \"EADV\", \"advertise error\"},\n\t{69, \"ESRMNT\", \"srmount error\"},\n\t{70, \"ECOMM\", \"communication error on send\"},\n\t{71, \"EPROTO\", \"protocol error\"},\n\t{72, \"ELOCKUNMAPPED\", \"locked lock was unmapped \"},\n\t{73, \"ENOTACTIVE\", \"facility is not active\"},\n\t{74, \"EMULTIHOP\", \"multihop attempted\"},\n\t{77, \"EBADMSG\", \"not a data message\"},\n\t{78, \"ENAMETOOLONG\", \"file name too long\"},\n\t{79, \"EOVERFLOW\", \"value too large for defined data type\"},\n\t{80, \"ENOTUNIQ\", \"name not unique on network\"},\n\t{81, \"EBADFD\", \"file descriptor in bad state\"},\n\t{82, \"EREMCHG\", \"remote address changed\"},\n\t{83, \"ELIBACC\", \"can not access a needed shared library\"},\n\t{84, \"ELIBBAD\", \"accessing a corrupted shared library\"},\n\t{85, \"ELIBSCN\", \".lib section in a.out corrupted\"},\n\t{86, \"ELIBMAX\", \"attempting to link in more shared libraries than system limit\"},\n\t{87, \"ELIBEXEC\", \"can not exec a shared library directly\"},\n\t{88, \"EILSEQ\", \"illegal byte sequence\"},\n\t{89, \"ENOSYS\", \"operation not applicable\"},\n\t{90, \"ELOOP\", \"number of symbolic links encountered during path name traversal exceeds MAXSYMLINKS\"},\n\t{91, \"ERESTART\", \"error 91\"},\n\t{92, \"ESTRPIPE\", \"error 92\"},\n\t{93, \"ENOTEMPTY\", \"directory not empty\"},\n\t{94, \"EUSERS\", \"too many users\"},\n\t{95, \"ENOTSOCK\", \"socket operation on non-socket\"},\n\t{96, \"EDESTADDRREQ\", \"destination address required\"},\n\t{97, \"EMSGSIZE\", \"message too long\"},\n\t{98, \"EPROTOTYPE\", \"protocol wrong type for socket\"},\n\t{99, \"ENOPROTOOPT\", \"option not supported by protocol\"},\n\t{120, \"EPROTONOSUPPORT\", \"protocol not supported\"},\n\t{121, \"ESOCKTNOSUPPORT\", \"socket type not supported\"},\n\t{122, \"EOPNOTSUPP\", \"operation not supported on transport endpoint\"},\n\t{123, \"EPFNOSUPPORT\", \"protocol family not supported\"},\n\t{124, \"EAFNOSUPPORT\", \"address family not supported by protocol family\"},\n\t{125, \"EADDRINUSE\", \"address already in use\"},\n\t{126, \"EADDRNOTAVAIL\", \"cannot assign requested address\"},\n\t{127, \"ENETDOWN\", \"network is down\"},\n\t{128, \"ENETUNREACH\", \"network is unreachable\"},\n\t{129, \"ENETRESET\", \"network dropped connection because of reset\"},\n\t{130, \"ECONNABORTED\", \"software caused connection abort\"},\n\t{131, \"ECONNRESET\", \"connection reset by peer\"},\n\t{132, \"ENOBUFS\", \"no buffer space available\"},\n\t{133, \"EISCONN\", \"transport endpoint is already connected\"},\n\t{134, \"ENOTCONN\", \"transport endpoint is not connected\"},\n\t{143, \"ESHUTDOWN\", \"cannot send after socket shutdown\"},\n\t{144, \"ETOOMANYREFS\", \"too many references: cannot splice\"},\n\t{145, \"ETIMEDOUT\", \"connection timed out\"},\n\t{146, \"ECONNREFUSED\", \"connection refused\"},\n\t{147, \"EHOSTDOWN\", \"host is down\"},\n\t{148, \"EHOSTUNREACH\", \"no route to host\"},\n\t{149, \"EALREADY\", \"operation already in progress\"},\n\t{150, \"EINPROGRESS\", \"operation now in progress\"},\n\t{151, \"ESTALE\", \"stale NFS file handle\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  syscall.Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGQUIT\", \"quit\"},\n\t{4, \"SIGILL\", \"illegal Instruction\"},\n\t{5, \"SIGTRAP\", \"trace/Breakpoint Trap\"},\n\t{6, \"SIGABRT\", \"abort\"},\n\t{7, \"SIGEMT\", \"emulation Trap\"},\n\t{8, \"SIGFPE\", \"arithmetic Exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus Error\"},\n\t{11, \"SIGSEGV\", \"segmentation Fault\"},\n\t{12, \"SIGSYS\", \"bad System Call\"},\n\t{13, \"SIGPIPE\", \"broken Pipe\"},\n\t{14, \"SIGALRM\", \"alarm Clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user Signal 1\"},\n\t{17, \"SIGUSR2\", \"user Signal 2\"},\n\t{18, \"SIGCHLD\", \"child Status Changed\"},\n\t{19, \"SIGPWR\", \"power-Fail/Restart\"},\n\t{20, \"SIGWINCH\", \"window Size Change\"},\n\t{21, \"SIGURG\", \"urgent Socket Condition\"},\n\t{22, \"SIGIO\", \"pollable Event\"},\n\t{23, \"SIGSTOP\", \"stopped (signal)\"},\n\t{24, \"SIGTSTP\", \"stopped (user)\"},\n\t{25, \"SIGCONT\", \"continued\"},\n\t{26, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{27, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{28, \"SIGVTALRM\", \"virtual Timer Expired\"},\n\t{29, \"SIGPROF\", \"profiling Timer Expired\"},\n\t{30, \"SIGXCPU\", \"cpu Limit Exceeded\"},\n\t{31, \"SIGXFSZ\", \"file Size Limit Exceeded\"},\n\t{32, \"SIGWAITING\", \"no runnable lwp\"},\n\t{33, \"SIGLWP\", \"inter-lwp signal\"},\n\t{34, \"SIGFREEZE\", \"checkpoint Freeze\"},\n\t{35, \"SIGTHAW\", \"checkpoint Thaw\"},\n\t{36, \"SIGCANCEL\", \"thread Cancellation\"},\n\t{37, \"SIGLOST\", \"resource Lost\"},\n\t{38, \"SIGXRES\", \"resource Control Exceeded\"},\n\t{39, \"SIGJVM1\", \"reserved for JVM 1\"},\n\t{40, \"SIGJVM2\", \"reserved for JVM 2\"},\n\t{41, \"SIGINFO\", \"information Request\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zerrors_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on zerrors_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tBRKINT                          = 0x0001\n\tCLOCK_MONOTONIC                 = 0x1\n\tCLOCK_PROCESS_CPUTIME_ID        = 0x2\n\tCLOCK_REALTIME                  = 0x0\n\tCLOCK_THREAD_CPUTIME_ID         = 0x3\n\tCS8                             = 0x0030\n\tCSIZE                           = 0x0030\n\tECHO                            = 0x00000008\n\tECHONL                          = 0x00000001\n\tFD_CLOEXEC                      = 0x01\n\tFD_CLOFORK                      = 0x02\n\tFNDELAY                         = 0x04\n\tF_CLOSFD                        = 9\n\tF_CONTROL_CVT                   = 13\n\tF_DUPFD                         = 0\n\tF_DUPFD2                        = 8\n\tF_GETFD                         = 1\n\tF_GETFL                         = 259\n\tF_GETLK                         = 5\n\tF_GETOWN                        = 10\n\tF_OK                            = 0x0\n\tF_RDLCK                         = 1\n\tF_SETFD                         = 2\n\tF_SETFL                         = 4\n\tF_SETLK                         = 6\n\tF_SETLKW                        = 7\n\tF_SETOWN                        = 11\n\tF_SETTAG                        = 12\n\tF_UNLCK                         = 3\n\tF_WRLCK                         = 2\n\tFSTYPE_ZFS                      = 0xe9 //\"Z\"\n\tFSTYPE_HFS                      = 0xc8 //\"H\"\n\tFSTYPE_NFS                      = 0xd5 //\"N\"\n\tFSTYPE_TFS                      = 0xe3 //\"T\"\n\tFSTYPE_AUTOMOUNT                = 0xc1 //\"A\"\n\tIP6F_MORE_FRAG                  = 0x0001\n\tIP6F_OFF_MASK                   = 0xfff8\n\tIP6F_RESERVED_MASK              = 0x0006\n\tIP6OPT_JUMBO                    = 0xc2\n\tIP6OPT_JUMBO_LEN                = 6\n\tIP6OPT_MUTABLE                  = 0x20\n\tIP6OPT_NSAP_ADDR                = 0xc3\n\tIP6OPT_PAD1                     = 0x00\n\tIP6OPT_PADN                     = 0x01\n\tIP6OPT_ROUTER_ALERT             = 0x05\n\tIP6OPT_TUNNEL_LIMIT             = 0x04\n\tIP6OPT_TYPE_DISCARD             = 0x40\n\tIP6OPT_TYPE_FORCEICMP           = 0x80\n\tIP6OPT_TYPE_ICMP                = 0xc0\n\tIP6OPT_TYPE_SKIP                = 0x00\n\tIP6_ALERT_AN                    = 0x0002\n\tIP6_ALERT_MLD                   = 0x0000\n\tIP6_ALERT_RSVP                  = 0x0001\n\tIPPORT_RESERVED                 = 1024\n\tIPPORT_USERRESERVED             = 5000\n\tIPPROTO_AH                      = 51\n\tSOL_AH                          = 51\n\tIPPROTO_DSTOPTS                 = 60\n\tSOL_DSTOPTS                     = 60\n\tIPPROTO_EGP                     = 8\n\tSOL_EGP                         = 8\n\tIPPROTO_ESP                     = 50\n\tSOL_ESP                         = 50\n\tIPPROTO_FRAGMENT                = 44\n\tSOL_FRAGMENT                    = 44\n\tIPPROTO_GGP                     = 2\n\tSOL_GGP                         = 2\n\tIPPROTO_HOPOPTS                 = 0\n\tSOL_HOPOPTS                     = 0\n\tIPPROTO_ICMP                    = 1\n\tSOL_ICMP                        = 1\n\tIPPROTO_ICMPV6                  = 58\n\tSOL_ICMPV6                      = 58\n\tIPPROTO_IDP                     = 22\n\tSOL_IDP                         = 22\n\tIPPROTO_IP                      = 0\n\tSOL_IP                          = 0\n\tIPPROTO_IPV6                    = 41\n\tSOL_IPV6                        = 41\n\tIPPROTO_MAX                     = 256\n\tSOL_MAX                         = 256\n\tIPPROTO_NONE                    = 59\n\tSOL_NONE                        = 59\n\tIPPROTO_PUP                     = 12\n\tSOL_PUP                         = 12\n\tIPPROTO_RAW                     = 255\n\tSOL_RAW                         = 255\n\tIPPROTO_ROUTING                 = 43\n\tSOL_ROUTING                     = 43\n\tIPPROTO_TCP                     = 6\n\tSOL_TCP                         = 6\n\tIPPROTO_UDP                     = 17\n\tSOL_UDP                         = 17\n\tIPV6_ADDR_PREFERENCES           = 32\n\tIPV6_CHECKSUM                   = 19\n\tIPV6_DONTFRAG                   = 29\n\tIPV6_DSTOPTS                    = 23\n\tIPV6_HOPLIMIT                   = 11\n\tIPV6_HOPOPTS                    = 22\n\tIPV6_JOIN_GROUP                 = 5\n\tIPV6_LEAVE_GROUP                = 6\n\tIPV6_MULTICAST_HOPS             = 9\n\tIPV6_MULTICAST_IF               = 7\n\tIPV6_MULTICAST_LOOP             = 4\n\tIPV6_NEXTHOP                    = 20\n\tIPV6_PATHMTU                    = 12\n\tIPV6_PKTINFO                    = 13\n\tIPV6_PREFER_SRC_CGA             = 0x10\n\tIPV6_PREFER_SRC_COA             = 0x02\n\tIPV6_PREFER_SRC_HOME            = 0x01\n\tIPV6_PREFER_SRC_NONCGA          = 0x20\n\tIPV6_PREFER_SRC_PUBLIC          = 0x08\n\tIPV6_PREFER_SRC_TMP             = 0x04\n\tIPV6_RECVDSTOPTS                = 28\n\tIPV6_RECVHOPLIMIT               = 14\n\tIPV6_RECVHOPOPTS                = 26\n\tIPV6_RECVPATHMTU                = 16\n\tIPV6_RECVPKTINFO                = 15\n\tIPV6_RECVRTHDR                  = 25\n\tIPV6_RECVTCLASS                 = 31\n\tIPV6_RTHDR                      = 21\n\tIPV6_RTHDRDSTOPTS               = 24\n\tIPV6_RTHDR_TYPE_0               = 0\n\tIPV6_TCLASS                     = 30\n\tIPV6_UNICAST_HOPS               = 3\n\tIPV6_USE_MIN_MTU                = 18\n\tIPV6_V6ONLY                     = 10\n\tIP_ADD_MEMBERSHIP               = 5\n\tIP_ADD_SOURCE_MEMBERSHIP        = 12\n\tIP_BLOCK_SOURCE                 = 10\n\tIP_DEFAULT_MULTICAST_LOOP       = 1\n\tIP_DEFAULT_MULTICAST_TTL        = 1\n\tIP_DROP_MEMBERSHIP              = 6\n\tIP_DROP_SOURCE_MEMBERSHIP       = 13\n\tIP_MAX_MEMBERSHIPS              = 20\n\tIP_MULTICAST_IF                 = 7\n\tIP_MULTICAST_LOOP               = 4\n\tIP_MULTICAST_TTL                = 3\n\tIP_OPTIONS                      = 1\n\tIP_PKTINFO                      = 101\n\tIP_RECVPKTINFO                  = 102\n\tIP_TOS                          = 2\n\tIP_TTL                          = 3\n\tIP_UNBLOCK_SOURCE               = 11\n\tICANON                          = 0x0010\n\tICMP6_FILTER                    = 0x26\n\tICRNL                           = 0x0002\n\tIEXTEN                          = 0x0020\n\tIGNBRK                          = 0x0004\n\tIGNCR                           = 0x0008\n\tINLCR                           = 0x0020\n\tISIG                            = 0x0040\n\tISTRIP                          = 0x0080\n\tIXON                            = 0x0200\n\tIXOFF                           = 0x0100\n\tLOCK_SH                         = 0x1 // Not exist on zOS\n\tLOCK_EX                         = 0x2 // Not exist on zOS\n\tLOCK_NB                         = 0x4 // Not exist on zOS\n\tLOCK_UN                         = 0x8 // Not exist on zOS\n\tPOLLIN                          = 0x0003\n\tPOLLOUT                         = 0x0004\n\tPOLLPRI                         = 0x0010\n\tPOLLERR                         = 0x0020\n\tPOLLHUP                         = 0x0040\n\tPOLLNVAL                        = 0x0080\n\tPROT_READ                       = 0x1 // mmap - page can be read\n\tPROT_WRITE                      = 0x2 // page can be written\n\tPROT_NONE                       = 0x4 // can't be accessed\n\tPROT_EXEC                       = 0x8 // can be executed\n\tMAP_PRIVATE                     = 0x1 // changes are private\n\tMAP_SHARED                      = 0x2 // changes are shared\n\tMAP_FIXED                       = 0x4 // place exactly\n\tMCAST_JOIN_GROUP                = 40\n\tMCAST_LEAVE_GROUP               = 41\n\tMCAST_JOIN_SOURCE_GROUP         = 42\n\tMCAST_LEAVE_SOURCE_GROUP        = 43\n\tMCAST_BLOCK_SOURCE              = 44\n\tMCAST_UNBLOCK_SOURCE            = 45\n\tMS_SYNC                         = 0x1 // msync - synchronous writes\n\tMS_ASYNC                        = 0x2 // asynchronous writes\n\tMS_INVALIDATE                   = 0x4 // invalidate mappings\n\tMTM_RDONLY                      = 0x80000000\n\tMTM_RDWR                        = 0x40000000\n\tMTM_UMOUNT                      = 0x10000000\n\tMTM_IMMED                       = 0x08000000\n\tMTM_FORCE                       = 0x04000000\n\tMTM_DRAIN                       = 0x02000000\n\tMTM_RESET                       = 0x01000000\n\tMTM_SAMEMODE                    = 0x00100000\n\tMTM_UNQSEFORCE                  = 0x00040000\n\tMTM_NOSUID                      = 0x00000400\n\tMTM_SYNCHONLY                   = 0x00000200\n\tMTM_REMOUNT                     = 0x00000100\n\tMTM_NOSECURITY                  = 0x00000080\n\tNFDBITS                         = 0x20\n\tO_ACCMODE                       = 0x03\n\tO_APPEND                        = 0x08\n\tO_ASYNCSIG                      = 0x0200\n\tO_CREAT                         = 0x80\n\tO_EXCL                          = 0x40\n\tO_GETFL                         = 0x0F\n\tO_LARGEFILE                     = 0x0400\n\tO_NONBLOCK                      = 0x04\n\tO_RDONLY                        = 0x02\n\tO_RDWR                          = 0x03\n\tO_SYNC                          = 0x0100\n\tO_TRUNC                         = 0x10\n\tO_WRONLY                        = 0x01\n\tO_NOCTTY                        = 0x20\n\tOPOST                           = 0x0001\n\tONLCR                           = 0x0004\n\tPARENB                          = 0x0200\n\tPARMRK                          = 0x0400\n\tQUERYCVT                        = 3\n\tRUSAGE_CHILDREN                 = -0x1\n\tRUSAGE_SELF                     = 0x0 // RUSAGE_THREAD unsupported on z/OS\n\tSEEK_CUR                        = 1\n\tSEEK_END                        = 2\n\tSEEK_SET                        = 0\n\tSETAUTOCVTALL                   = 5\n\tSETAUTOCVTON                    = 2\n\tSETCVTALL                       = 4\n\tSETCVTOFF                       = 0\n\tSETCVTON                        = 1\n\tAF_APPLETALK                    = 16\n\tAF_CCITT                        = 10\n\tAF_CHAOS                        = 5\n\tAF_DATAKIT                      = 9\n\tAF_DLI                          = 13\n\tAF_ECMA                         = 8\n\tAF_HYLINK                       = 15\n\tAF_IMPLINK                      = 3\n\tAF_INET                         = 2\n\tAF_INET6                        = 19\n\tAF_INTF                         = 20\n\tAF_IUCV                         = 17\n\tAF_LAT                          = 14\n\tAF_LINK                         = 18\n\tAF_MAX                          = 30\n\tAF_NBS                          = 7\n\tAF_NDD                          = 23\n\tAF_NETWARE                      = 22\n\tAF_NS                           = 6\n\tAF_PUP                          = 4\n\tAF_RIF                          = 21\n\tAF_ROUTE                        = 20\n\tAF_SNA                          = 11\n\tAF_UNIX                         = 1\n\tAF_UNSPEC                       = 0\n\tIBMTCP_IMAGE                    = 1\n\tMSG_ACK_EXPECTED                = 0x10\n\tMSG_ACK_GEN                     = 0x40\n\tMSG_ACK_TIMEOUT                 = 0x20\n\tMSG_CONNTERM                    = 0x80\n\tMSG_CTRUNC                      = 0x20\n\tMSG_DONTROUTE                   = 0x4\n\tMSG_EOF                         = 0x8000\n\tMSG_EOR                         = 0x8\n\tMSG_MAXIOVLEN                   = 16\n\tMSG_NONBLOCK                    = 0x4000\n\tMSG_OOB                         = 0x1\n\tMSG_PEEK                        = 0x2\n\tMSG_TRUNC                       = 0x10\n\tMSG_WAITALL                     = 0x40\n\tPRIO_PROCESS                    = 1\n\tPRIO_PGRP                       = 2\n\tPRIO_USER                       = 3\n\tRLIMIT_CPU                      = 0\n\tRLIMIT_FSIZE                    = 1\n\tRLIMIT_DATA                     = 2\n\tRLIMIT_STACK                    = 3\n\tRLIMIT_CORE                     = 4\n\tRLIMIT_AS                       = 5\n\tRLIMIT_NOFILE                   = 6\n\tRLIMIT_MEMLIMIT                 = 7\n\tRLIM_INFINITY                   = 2147483647\n\tSCM_RIGHTS                      = 0x01\n\tSF_CLOSE                        = 0x00000002\n\tSF_REUSE                        = 0x00000001\n\tSHUT_RD                         = 0\n\tSHUT_RDWR                       = 2\n\tSHUT_WR                         = 1\n\tSOCK_CONN_DGRAM                 = 6\n\tSOCK_DGRAM                      = 2\n\tSOCK_RAW                        = 3\n\tSOCK_RDM                        = 4\n\tSOCK_SEQPACKET                  = 5\n\tSOCK_STREAM                     = 1\n\tSOL_SOCKET                      = 0xffff\n\tSOMAXCONN                       = 10\n\tSO_ACCEPTCONN                   = 0x0002\n\tSO_ACCEPTECONNABORTED           = 0x0006\n\tSO_ACKNOW                       = 0x7700\n\tSO_BROADCAST                    = 0x0020\n\tSO_BULKMODE                     = 0x8000\n\tSO_CKSUMRECV                    = 0x0800\n\tSO_CLOSE                        = 0x01\n\tSO_CLUSTERCONNTYPE              = 0x00004001\n\tSO_CLUSTERCONNTYPE_INTERNAL     = 8\n\tSO_CLUSTERCONNTYPE_NOCONN       = 0\n\tSO_CLUSTERCONNTYPE_NONE         = 1\n\tSO_CLUSTERCONNTYPE_SAME_CLUSTER = 2\n\tSO_CLUSTERCONNTYPE_SAME_IMAGE   = 4\n\tSO_DEBUG                        = 0x0001\n\tSO_DONTROUTE                    = 0x0010\n\tSO_ERROR                        = 0x1007\n\tSO_IGNOREINCOMINGPUSH           = 0x1\n\tSO_IGNORESOURCEVIPA             = 0x0002\n\tSO_KEEPALIVE                    = 0x0008\n\tSO_LINGER                       = 0x0080\n\tSO_NONBLOCKLOCAL                = 0x8001\n\tSO_NOREUSEADDR                  = 0x1000\n\tSO_OOBINLINE                    = 0x0100\n\tSO_OPTACK                       = 0x8004\n\tSO_OPTMSS                       = 0x8003\n\tSO_RCVBUF                       = 0x1002\n\tSO_RCVLOWAT                     = 0x1004\n\tSO_RCVTIMEO                     = 0x1006\n\tSO_REUSEADDR                    = 0x0004\n\tSO_REUSEPORT                    = 0x0200\n\tSO_SECINFO                      = 0x00004002\n\tSO_SET                          = 0x0200\n\tSO_SNDBUF                       = 0x1001\n\tSO_SNDLOWAT                     = 0x1003\n\tSO_SNDTIMEO                     = 0x1005\n\tSO_TYPE                         = 0x1008\n\tSO_UNSET                        = 0x0400\n\tSO_USELOOPBACK                  = 0x0040\n\tSO_USE_IFBUFS                   = 0x0400\n\tS_ISUID                         = 0x0800\n\tS_ISGID                         = 0x0400\n\tS_ISVTX                         = 0x0200\n\tS_IRUSR                         = 0x0100\n\tS_IWUSR                         = 0x0080\n\tS_IXUSR                         = 0x0040\n\tS_IRWXU                         = 0x01C0\n\tS_IRGRP                         = 0x0020\n\tS_IWGRP                         = 0x0010\n\tS_IXGRP                         = 0x0008\n\tS_IRWXG                         = 0x0038\n\tS_IROTH                         = 0x0004\n\tS_IWOTH                         = 0x0002\n\tS_IXOTH                         = 0x0001\n\tS_IRWXO                         = 0x0007\n\tS_IREAD                         = S_IRUSR\n\tS_IWRITE                        = S_IWUSR\n\tS_IEXEC                         = S_IXUSR\n\tS_IFDIR                         = 0x01000000\n\tS_IFCHR                         = 0x02000000\n\tS_IFREG                         = 0x03000000\n\tS_IFFIFO                        = 0x04000000\n\tS_IFIFO                         = 0x04000000\n\tS_IFLNK                         = 0x05000000\n\tS_IFBLK                         = 0x06000000\n\tS_IFSOCK                        = 0x07000000\n\tS_IFVMEXTL                      = 0xFE000000\n\tS_IFVMEXTL_EXEC                 = 0x00010000\n\tS_IFVMEXTL_DATA                 = 0x00020000\n\tS_IFVMEXTL_MEL                  = 0x00030000\n\tS_IFEXTL                        = 0x00000001\n\tS_IFPROGCTL                     = 0x00000002\n\tS_IFAPFCTL                      = 0x00000004\n\tS_IFNOSHARE                     = 0x00000008\n\tS_IFSHARELIB                    = 0x00000010\n\tS_IFMT                          = 0xFF000000\n\tS_IFMST                         = 0x00FF0000\n\tTCP_KEEPALIVE                   = 0x8\n\tTCP_NODELAY                     = 0x1\n\tTCP_INFO                        = 0xb\n\tTCP_USER_TIMEOUT                = 0x1\n\tTIOCGWINSZ                      = 0x4008a368\n\tTIOCSWINSZ                      = 0x8008a367\n\tTIOCSBRK                        = 0x2000a77b\n\tTIOCCBRK                        = 0x2000a77a\n\tTIOCSTI                         = 0x8001a772\n\tTIOCGPGRP                       = 0x4004a777 // _IOR(167, 119, int)\n\tTCSANOW                         = 0\n\tTCSETS                          = 0 // equivalent to TCSANOW for tcsetattr\n\tTCSADRAIN                       = 1\n\tTCSETSW                         = 1 // equivalent to TCSADRAIN for tcsetattr\n\tTCSAFLUSH                       = 2\n\tTCSETSF                         = 2 // equivalent to TCSAFLUSH for tcsetattr\n\tTCGETS                          = 3 // not defined in ioctl.h -- zos golang only\n\tTCIFLUSH                        = 0\n\tTCOFLUSH                        = 1\n\tTCIOFLUSH                       = 2\n\tTCOOFF                          = 0\n\tTCOON                           = 1\n\tTCIOFF                          = 2\n\tTCION                           = 3\n\tTIOCSPGRP                       = 0x8004a776\n\tTIOCNOTTY                       = 0x2000a771\n\tTIOCEXCL                        = 0x2000a70d\n\tTIOCNXCL                        = 0x2000a70e\n\tTIOCGETD                        = 0x4004a700\n\tTIOCSETD                        = 0x8004a701\n\tTIOCPKT                         = 0x8004a770\n\tTIOCSTOP                        = 0x2000a76f\n\tTIOCSTART                       = 0x2000a76e\n\tTIOCUCNTL                       = 0x8004a766\n\tTIOCREMOTE                      = 0x8004a769\n\tTIOCMGET                        = 0x4004a76a\n\tTIOCMSET                        = 0x8004a76d\n\tTIOCMBIC                        = 0x8004a76b\n\tTIOCMBIS                        = 0x8004a76c\n\tVINTR                           = 0\n\tVQUIT                           = 1\n\tVERASE                          = 2\n\tVKILL                           = 3\n\tVEOF                            = 4\n\tVEOL                            = 5\n\tVMIN                            = 6\n\tVSTART                          = 7\n\tVSTOP                           = 8\n\tVSUSP                           = 9\n\tVTIME                           = 10\n\tWCONTINUED                      = 0x4\n\tWNOHANG                         = 0x1\n\tWUNTRACED                       = 0x2\n\t_BPX_SWAP                       = 1\n\t_BPX_NONSWAP                    = 2\n\tMCL_CURRENT                     = 1  // for Linux compatibility -- no zos semantics\n\tMCL_FUTURE                      = 2  // for Linux compatibility -- no zos semantics\n\tMCL_ONFAULT                     = 3  // for Linux compatibility -- no zos semantics\n\tMADV_NORMAL                     = 0  // for Linux compatibility -- no zos semantics\n\tMADV_RANDOM                     = 1  // for Linux compatibility -- no zos semantics\n\tMADV_SEQUENTIAL                 = 2  // for Linux compatibility -- no zos semantics\n\tMADV_WILLNEED                   = 3  // for Linux compatibility -- no zos semantics\n\tMADV_REMOVE                     = 4  // for Linux compatibility -- no zos semantics\n\tMADV_DONTFORK                   = 5  // for Linux compatibility -- no zos semantics\n\tMADV_DOFORK                     = 6  // for Linux compatibility -- no zos semantics\n\tMADV_HWPOISON                   = 7  // for Linux compatibility -- no zos semantics\n\tMADV_MERGEABLE                  = 8  // for Linux compatibility -- no zos semantics\n\tMADV_UNMERGEABLE                = 9  // for Linux compatibility -- no zos semantics\n\tMADV_SOFT_OFFLINE               = 10 // for Linux compatibility -- no zos semantics\n\tMADV_HUGEPAGE                   = 11 // for Linux compatibility -- no zos semantics\n\tMADV_NOHUGEPAGE                 = 12 // for Linux compatibility -- no zos semantics\n\tMADV_DONTDUMP                   = 13 // for Linux compatibility -- no zos semantics\n\tMADV_DODUMP                     = 14 // for Linux compatibility -- no zos semantics\n\tMADV_FREE                       = 15 // for Linux compatibility -- no zos semantics\n\tMADV_WIPEONFORK                 = 16 // for Linux compatibility -- no zos semantics\n\tMADV_KEEPONFORK                 = 17 // for Linux compatibility -- no zos semantics\n\tAT_SYMLINK_NOFOLLOW             = 1  // for Unix  compatibility -- no zos semantics\n\tAT_FDCWD                        = 2  // for Unix  compatibility -- no zos semantics\n)\n\nconst (\n\tEDOM               = Errno(1)\n\tERANGE             = Errno(2)\n\tEACCES             = Errno(111)\n\tEAGAIN             = Errno(112)\n\tEBADF              = Errno(113)\n\tEBUSY              = Errno(114)\n\tECHILD             = Errno(115)\n\tEDEADLK            = Errno(116)\n\tEEXIST             = Errno(117)\n\tEFAULT             = Errno(118)\n\tEFBIG              = Errno(119)\n\tEINTR              = Errno(120)\n\tEINVAL             = Errno(121)\n\tEIO                = Errno(122)\n\tEISDIR             = Errno(123)\n\tEMFILE             = Errno(124)\n\tEMLINK             = Errno(125)\n\tENAMETOOLONG       = Errno(126)\n\tENFILE             = Errno(127)\n\tENODEV             = Errno(128)\n\tENOENT             = Errno(129)\n\tENOEXEC            = Errno(130)\n\tENOLCK             = Errno(131)\n\tENOMEM             = Errno(132)\n\tENOSPC             = Errno(133)\n\tENOSYS             = Errno(134)\n\tENOTDIR            = Errno(135)\n\tENOTEMPTY          = Errno(136)\n\tENOTTY             = Errno(137)\n\tENXIO              = Errno(138)\n\tEPERM              = Errno(139)\n\tEPIPE              = Errno(140)\n\tEROFS              = Errno(141)\n\tESPIPE             = Errno(142)\n\tESRCH              = Errno(143)\n\tEXDEV              = Errno(144)\n\tE2BIG              = Errno(145)\n\tELOOP              = Errno(146)\n\tEILSEQ             = Errno(147)\n\tENODATA            = Errno(148)\n\tEOVERFLOW          = Errno(149)\n\tEMVSNOTUP          = Errno(150)\n\tECMSSTORAGE        = Errno(151)\n\tEMVSDYNALC         = Errno(151)\n\tEMVSCVAF           = Errno(152)\n\tEMVSCATLG          = Errno(153)\n\tECMSINITIAL        = Errno(156)\n\tEMVSINITIAL        = Errno(156)\n\tECMSERR            = Errno(157)\n\tEMVSERR            = Errno(157)\n\tEMVSPARM           = Errno(158)\n\tECMSPFSFILE        = Errno(159)\n\tEMVSPFSFILE        = Errno(159)\n\tEMVSBADCHAR        = Errno(160)\n\tECMSPFSPERM        = Errno(162)\n\tEMVSPFSPERM        = Errno(162)\n\tEMVSSAFEXTRERR     = Errno(163)\n\tEMVSSAF2ERR        = Errno(164)\n\tEMVSTODNOTSET      = Errno(165)\n\tEMVSPATHOPTS       = Errno(166)\n\tEMVSNORTL          = Errno(167)\n\tEMVSEXPIRE         = Errno(168)\n\tEMVSPASSWORD       = Errno(169)\n\tEMVSWLMERROR       = Errno(170)\n\tEMVSCPLERROR       = Errno(171)\n\tEMVSARMERROR       = Errno(172)\n\tELENOFORK          = Errno(200)\n\tELEMSGERR          = Errno(201)\n\tEFPMASKINV         = Errno(202)\n\tEFPMODEINV         = Errno(203)\n\tEBUFLEN            = Errno(227)\n\tEEXTLINK           = Errno(228)\n\tENODD              = Errno(229)\n\tECMSESMERR         = Errno(230)\n\tECPERR             = Errno(231)\n\tELEMULTITHREAD     = Errno(232)\n\tELEFENCE           = Errno(244)\n\tEBADDATA           = Errno(245)\n\tEUNKNOWN           = Errno(246)\n\tENOTSUP            = Errno(247)\n\tEBADNAME           = Errno(248)\n\tENOTSAFE           = Errno(249)\n\tELEMULTITHREADFORK = Errno(257)\n\tECUNNOENV          = Errno(258)\n\tECUNNOCONV         = Errno(259)\n\tECUNNOTALIGNED     = Errno(260)\n\tECUNERR            = Errno(262)\n\tEIBMBADCALL        = Errno(1000)\n\tEIBMBADPARM        = Errno(1001)\n\tEIBMSOCKOUTOFRANGE = Errno(1002)\n\tEIBMSOCKINUSE      = Errno(1003)\n\tEIBMIUCVERR        = Errno(1004)\n\tEOFFLOADboxERROR   = Errno(1005)\n\tEOFFLOADboxRESTART = Errno(1006)\n\tEOFFLOADboxDOWN    = Errno(1007)\n\tEIBMCONFLICT       = Errno(1008)\n\tEIBMCANCELLED      = Errno(1009)\n\tEIBMBADTCPNAME     = Errno(1011)\n\tENOTBLK            = Errno(1100)\n\tETXTBSY            = Errno(1101)\n\tEWOULDBLOCK        = Errno(1102)\n\tEINPROGRESS        = Errno(1103)\n\tEALREADY           = Errno(1104)\n\tENOTSOCK           = Errno(1105)\n\tEDESTADDRREQ       = Errno(1106)\n\tEMSGSIZE           = Errno(1107)\n\tEPROTOTYPE         = Errno(1108)\n\tENOPROTOOPT        = Errno(1109)\n\tEPROTONOSUPPORT    = Errno(1110)\n\tESOCKTNOSUPPORT    = Errno(1111)\n\tEOPNOTSUPP         = Errno(1112)\n\tEPFNOSUPPORT       = Errno(1113)\n\tEAFNOSUPPORT       = Errno(1114)\n\tEADDRINUSE         = Errno(1115)\n\tEADDRNOTAVAIL      = Errno(1116)\n\tENETDOWN           = Errno(1117)\n\tENETUNREACH        = Errno(1118)\n\tENETRESET          = Errno(1119)\n\tECONNABORTED       = Errno(1120)\n\tECONNRESET         = Errno(1121)\n\tENOBUFS            = Errno(1122)\n\tEISCONN            = Errno(1123)\n\tENOTCONN           = Errno(1124)\n\tESHUTDOWN          = Errno(1125)\n\tETOOMANYREFS       = Errno(1126)\n\tETIMEDOUT          = Errno(1127)\n\tECONNREFUSED       = Errno(1128)\n\tEHOSTDOWN          = Errno(1129)\n\tEHOSTUNREACH       = Errno(1130)\n\tEPROCLIM           = Errno(1131)\n\tEUSERS             = Errno(1132)\n\tEDQUOT             = Errno(1133)\n\tESTALE             = Errno(1134)\n\tEREMOTE            = Errno(1135)\n\tENOSTR             = Errno(1136)\n\tETIME              = Errno(1137)\n\tENOSR              = Errno(1138)\n\tENOMSG             = Errno(1139)\n\tEBADMSG            = Errno(1140)\n\tEIDRM              = Errno(1141)\n\tENONET             = Errno(1142)\n\tERREMOTE           = Errno(1143)\n\tENOLINK            = Errno(1144)\n\tEADV               = Errno(1145)\n\tESRMNT             = Errno(1146)\n\tECOMM              = Errno(1147)\n\tEPROTO             = Errno(1148)\n\tEMULTIHOP          = Errno(1149)\n\tEDOTDOT            = Errno(1150)\n\tEREMCHG            = Errno(1151)\n\tECANCELED          = Errno(1152)\n\tEINTRNODATA        = Errno(1159)\n\tENOREUSE           = Errno(1160)\n\tENOMOVE            = Errno(1161)\n)\n\n// Signals\nconst (\n\tSIGHUP    = Signal(1)\n\tSIGINT    = Signal(2)\n\tSIGABRT   = Signal(3)\n\tSIGILL    = Signal(4)\n\tSIGPOLL   = Signal(5)\n\tSIGURG    = Signal(6)\n\tSIGSTOP   = Signal(7)\n\tSIGFPE    = Signal(8)\n\tSIGKILL   = Signal(9)\n\tSIGBUS    = Signal(10)\n\tSIGSEGV   = Signal(11)\n\tSIGSYS    = Signal(12)\n\tSIGPIPE   = Signal(13)\n\tSIGALRM   = Signal(14)\n\tSIGTERM   = Signal(15)\n\tSIGUSR1   = Signal(16)\n\tSIGUSR2   = Signal(17)\n\tSIGABND   = Signal(18)\n\tSIGCONT   = Signal(19)\n\tSIGCHLD   = Signal(20)\n\tSIGTTIN   = Signal(21)\n\tSIGTTOU   = Signal(22)\n\tSIGIO     = Signal(23)\n\tSIGQUIT   = Signal(24)\n\tSIGTSTP   = Signal(25)\n\tSIGTRAP   = Signal(26)\n\tSIGIOERR  = Signal(27)\n\tSIGWINCH  = Signal(28)\n\tSIGXCPU   = Signal(29)\n\tSIGXFSZ   = Signal(30)\n\tSIGVTALRM = Signal(31)\n\tSIGPROF   = Signal(32)\n\tSIGDANGER = Signal(33)\n\tSIGTHSTOP = Signal(34)\n\tSIGTHCONT = Signal(35)\n\tSIGTRACE  = Signal(37)\n\tSIGDCE    = Signal(38)\n\tSIGDUMP   = Signal(39)\n)\n\n// Error table\nvar errorList = [...]struct {\n\tnum  Errno\n\tname string\n\tdesc string\n}{\n\t{1, \"EDC5001I\", \"A domain error occurred.\"},\n\t{2, \"EDC5002I\", \"A range error occurred.\"},\n\t{111, \"EDC5111I\", \"Permission denied.\"},\n\t{112, \"EDC5112I\", \"Resource temporarily unavailable.\"},\n\t{113, \"EDC5113I\", \"Bad file descriptor.\"},\n\t{114, \"EDC5114I\", \"Resource busy.\"},\n\t{115, \"EDC5115I\", \"No child processes.\"},\n\t{116, \"EDC5116I\", \"Resource deadlock avoided.\"},\n\t{117, \"EDC5117I\", \"File exists.\"},\n\t{118, \"EDC5118I\", \"Incorrect address.\"},\n\t{119, \"EDC5119I\", \"File too large.\"},\n\t{120, \"EDC5120I\", \"Interrupted function call.\"},\n\t{121, \"EDC5121I\", \"Invalid argument.\"},\n\t{122, \"EDC5122I\", \"Input/output error.\"},\n\t{123, \"EDC5123I\", \"Is a directory.\"},\n\t{124, \"EDC5124I\", \"Too many open files.\"},\n\t{125, \"EDC5125I\", \"Too many links.\"},\n\t{126, \"EDC5126I\", \"Filename too long.\"},\n\t{127, \"EDC5127I\", \"Too many open files in system.\"},\n\t{128, \"EDC5128I\", \"No such device.\"},\n\t{129, \"EDC5129I\", \"No such file or directory.\"},\n\t{130, \"EDC5130I\", \"Exec format error.\"},\n\t{131, \"EDC5131I\", \"No locks available.\"},\n\t{132, \"EDC5132I\", \"Not enough memory.\"},\n\t{133, \"EDC5133I\", \"No space left on device.\"},\n\t{134, \"EDC5134I\", \"Function not implemented.\"},\n\t{135, \"EDC5135I\", \"Not a directory.\"},\n\t{136, \"EDC5136I\", \"Directory not empty.\"},\n\t{137, \"EDC5137I\", \"Inappropriate I/O control operation.\"},\n\t{138, \"EDC5138I\", \"No such device or address.\"},\n\t{139, \"EDC5139I\", \"Operation not permitted.\"},\n\t{140, \"EDC5140I\", \"Broken pipe.\"},\n\t{141, \"EDC5141I\", \"Read-only file system.\"},\n\t{142, \"EDC5142I\", \"Invalid seek.\"},\n\t{143, \"EDC5143I\", \"No such process.\"},\n\t{144, \"EDC5144I\", \"Improper link.\"},\n\t{145, \"EDC5145I\", \"The parameter list is too long, or the message to receive was too large for the buffer.\"},\n\t{146, \"EDC5146I\", \"Too many levels of symbolic links.\"},\n\t{147, \"EDC5147I\", \"Illegal byte sequence.\"},\n\t{148, \"\", \"\"},\n\t{149, \"EDC5149I\", \"Value Overflow Error.\"},\n\t{150, \"EDC5150I\", \"UNIX System Services is not active.\"},\n\t{151, \"EDC5151I\", \"Dynamic allocation error.\"},\n\t{152, \"EDC5152I\", \"Common VTOC access facility (CVAF) error.\"},\n\t{153, \"EDC5153I\", \"Catalog obtain error.\"},\n\t{156, \"EDC5156I\", \"Process initialization error.\"},\n\t{157, \"EDC5157I\", \"An internal error has occurred.\"},\n\t{158, \"EDC5158I\", \"Bad parameters were passed to the service.\"},\n\t{159, \"EDC5159I\", \"The Physical File System encountered a permanent file error.\"},\n\t{160, \"EDC5160I\", \"Bad character in environment variable name.\"},\n\t{162, \"EDC5162I\", \"The Physical File System encountered a system error.\"},\n\t{163, \"EDC5163I\", \"SAF/RACF extract error.\"},\n\t{164, \"EDC5164I\", \"SAF/RACF error.\"},\n\t{165, \"EDC5165I\", \"System TOD clock not set.\"},\n\t{166, \"EDC5166I\", \"Access mode argument on function call conflicts with PATHOPTS parameter on JCL DD statement.\"},\n\t{167, \"EDC5167I\", \"Access to the UNIX System Services version of the C RTL is denied.\"},\n\t{168, \"EDC5168I\", \"Password has expired.\"},\n\t{169, \"EDC5169I\", \"Password is invalid.\"},\n\t{170, \"EDC5170I\", \"An error was encountered with WLM.\"},\n\t{171, \"EDC5171I\", \"An error was encountered with CPL.\"},\n\t{172, \"EDC5172I\", \"An error was encountered with Application Response Measurement (ARM) component.\"},\n\t{200, \"EDC5200I\", \"The application contains a Language Environment member language that cannot tolerate a fork().\"},\n\t{201, \"EDC5201I\", \"The Language Environment message file was not found in the hierarchical file system.\"},\n\t{202, \"EDC5202E\", \"DLL facilities are not supported under SPC environment.\"},\n\t{203, \"EDC5203E\", \"DLL facilities are not supported under POSIX environment.\"},\n\t{227, \"EDC5227I\", \"Buffer is not long enough to contain a path definition\"},\n\t{228, \"EDC5228I\", \"The file referred to is an external link\"},\n\t{229, \"EDC5229I\", \"No path definition for ddname in effect\"},\n\t{230, \"EDC5230I\", \"ESM error.\"},\n\t{231, \"EDC5231I\", \"CP or the external security manager had an error\"},\n\t{232, \"EDC5232I\", \"The function failed because it was invoked from a multithread environment.\"},\n\t{244, \"EDC5244I\", \"The program, module or DLL is not supported in this environment.\"},\n\t{245, \"EDC5245I\", \"Data is not valid.\"},\n\t{246, \"EDC5246I\", \"Unknown system state.\"},\n\t{247, \"EDC5247I\", \"Operation not supported.\"},\n\t{248, \"EDC5248I\", \"The object name specified is not correct.\"},\n\t{249, \"EDC5249I\", \"The function is not allowed.\"},\n\t{257, \"EDC5257I\", \"Function cannot be called in the child process of a fork() from a multithreaded process until exec() is called.\"},\n\t{258, \"EDC5258I\", \"A CUN_RS_NO_UNI_ENV error was issued by Unicode Services.\"},\n\t{259, \"EDC5259I\", \"A CUN_RS_NO_CONVERSION error was issued by Unicode Services.\"},\n\t{260, \"EDC5260I\", \"A CUN_RS_TABLE_NOT_ALIGNED error was issued by Unicode Services.\"},\n\t{262, \"EDC5262I\", \"An iconv() function encountered an unexpected error while using Unicode Services.\"},\n\t{1000, \"EDC8000I\", \"A bad socket-call constant was found in the IUCV header.\"},\n\t{1001, \"EDC8001I\", \"An error was found in the IUCV header.\"},\n\t{1002, \"EDC8002I\", \"A socket descriptor is out of range.\"},\n\t{1003, \"EDC8003I\", \"A socket descriptor is in use.\"},\n\t{1004, \"EDC8004I\", \"Request failed because of an IUCV error.\"},\n\t{1005, \"EDC8005I\", \"Offload box error.\"},\n\t{1006, \"EDC8006I\", \"Offload box restarted.\"},\n\t{1007, \"EDC8007I\", \"Offload box down.\"},\n\t{1008, \"EDC8008I\", \"Already a conflicting call outstanding on socket.\"},\n\t{1009, \"EDC8009I\", \"Request cancelled using a SOCKcallCANCEL request.\"},\n\t{1011, \"EDC8011I\", \"A name of a PFS was specified that either is not configured or is not a Sockets PFS.\"},\n\t{1100, \"EDC8100I\", \"Block device required.\"},\n\t{1101, \"EDC8101I\", \"Text file busy.\"},\n\t{1102, \"EDC8102I\", \"Operation would block.\"},\n\t{1103, \"EDC8103I\", \"Operation now in progress.\"},\n\t{1104, \"EDC8104I\", \"Connection already in progress.\"},\n\t{1105, \"EDC8105I\", \"Socket operation on non-socket.\"},\n\t{1106, \"EDC8106I\", \"Destination address required.\"},\n\t{1107, \"EDC8107I\", \"Message too long.\"},\n\t{1108, \"EDC8108I\", \"Protocol wrong type for socket.\"},\n\t{1109, \"EDC8109I\", \"Protocol not available.\"},\n\t{1110, \"EDC8110I\", \"Protocol not supported.\"},\n\t{1111, \"EDC8111I\", \"Socket type not supported.\"},\n\t{1112, \"EDC8112I\", \"Operation not supported on socket.\"},\n\t{1113, \"EDC8113I\", \"Protocol family not supported.\"},\n\t{1114, \"EDC8114I\", \"Address family not supported.\"},\n\t{1115, \"EDC8115I\", \"Address already in use.\"},\n\t{1116, \"EDC8116I\", \"Address not available.\"},\n\t{1117, \"EDC8117I\", \"Network is down.\"},\n\t{1118, \"EDC8118I\", \"Network is unreachable.\"},\n\t{1119, \"EDC8119I\", \"Network dropped connection on reset.\"},\n\t{1120, \"EDC8120I\", \"Connection ended abnormally.\"},\n\t{1121, \"EDC8121I\", \"Connection reset.\"},\n\t{1122, \"EDC8122I\", \"No buffer space available.\"},\n\t{1123, \"EDC8123I\", \"Socket already connected.\"},\n\t{1124, \"EDC8124I\", \"Socket not connected.\"},\n\t{1125, \"EDC8125I\", \"Can't send after socket shutdown.\"},\n\t{1126, \"EDC8126I\", \"Too many references; can't splice.\"},\n\t{1127, \"EDC8127I\", \"Connection timed out.\"},\n\t{1128, \"EDC8128I\", \"Connection refused.\"},\n\t{1129, \"EDC8129I\", \"Host is not available.\"},\n\t{1130, \"EDC8130I\", \"Host cannot be reached.\"},\n\t{1131, \"EDC8131I\", \"Too many processes.\"},\n\t{1132, \"EDC8132I\", \"Too many users.\"},\n\t{1133, \"EDC8133I\", \"Disk quota exceeded.\"},\n\t{1134, \"EDC8134I\", \"Stale file handle.\"},\n\t{1135, \"\", \"\"},\n\t{1136, \"EDC8136I\", \"File is not a STREAM.\"},\n\t{1137, \"EDC8137I\", \"STREAMS ioctl() timeout.\"},\n\t{1138, \"EDC8138I\", \"No STREAMS resources.\"},\n\t{1139, \"EDC8139I\", \"The message identified by set_id and msg_id is not in the message catalog.\"},\n\t{1140, \"EDC8140I\", \"Bad message.\"},\n\t{1141, \"EDC8141I\", \"Identifier removed.\"},\n\t{1142, \"\", \"\"},\n\t{1143, \"\", \"\"},\n\t{1144, \"EDC8144I\", \"The link has been severed.\"},\n\t{1145, \"\", \"\"},\n\t{1146, \"\", \"\"},\n\t{1147, \"\", \"\"},\n\t{1148, \"EDC8148I\", \"Protocol error.\"},\n\t{1149, \"EDC8149I\", \"Multihop not allowed.\"},\n\t{1150, \"\", \"\"},\n\t{1151, \"\", \"\"},\n\t{1152, \"EDC8152I\", \"The asynchronous I/O request has been canceled.\"},\n\t{1159, \"EDC8159I\", \"Function call was interrupted before any data was received.\"},\n\t{1160, \"EDC8160I\", \"Socket reuse is not supported.\"},\n\t{1161, \"EDC8161I\", \"The file system cannot currently be moved.\"},\n}\n\n// Signal table\nvar signalList = [...]struct {\n\tnum  Signal\n\tname string\n\tdesc string\n}{\n\t{1, \"SIGHUP\", \"hangup\"},\n\t{2, \"SIGINT\", \"interrupt\"},\n\t{3, \"SIGABT\", \"aborted\"},\n\t{4, \"SIGILL\", \"illegal instruction\"},\n\t{5, \"SIGPOLL\", \"pollable event\"},\n\t{6, \"SIGURG\", \"urgent I/O condition\"},\n\t{7, \"SIGSTOP\", \"stop process\"},\n\t{8, \"SIGFPE\", \"floating point exception\"},\n\t{9, \"SIGKILL\", \"killed\"},\n\t{10, \"SIGBUS\", \"bus error\"},\n\t{11, \"SIGSEGV\", \"segmentation fault\"},\n\t{12, \"SIGSYS\", \"bad argument to routine\"},\n\t{13, \"SIGPIPE\", \"broken pipe\"},\n\t{14, \"SIGALRM\", \"alarm clock\"},\n\t{15, \"SIGTERM\", \"terminated\"},\n\t{16, \"SIGUSR1\", \"user defined signal 1\"},\n\t{17, \"SIGUSR2\", \"user defined signal 2\"},\n\t{18, \"SIGABND\", \"abend\"},\n\t{19, \"SIGCONT\", \"continued\"},\n\t{20, \"SIGCHLD\", \"child exited\"},\n\t{21, \"SIGTTIN\", \"stopped (tty input)\"},\n\t{22, \"SIGTTOU\", \"stopped (tty output)\"},\n\t{23, \"SIGIO\", \"I/O possible\"},\n\t{24, \"SIGQUIT\", \"quit\"},\n\t{25, \"SIGTSTP\", \"stopped\"},\n\t{26, \"SIGTRAP\", \"trace/breakpoint trap\"},\n\t{27, \"SIGIOER\", \"I/O error\"},\n\t{28, \"SIGWINCH\", \"window changed\"},\n\t{29, \"SIGXCPU\", \"CPU time limit exceeded\"},\n\t{30, \"SIGXFSZ\", \"file size limit exceeded\"},\n\t{31, \"SIGVTALRM\", \"virtual timer expired\"},\n\t{32, \"SIGPROF\", \"profiling timer expired\"},\n\t{33, \"SIGDANGER\", \"danger\"},\n\t{34, \"SIGTHSTOP\", \"stop thread\"},\n\t{35, \"SIGTHCONT\", \"continue thread\"},\n\t{37, \"SIGTRACE\", \"trace\"},\n\t{38, \"\", \"DCE\"},\n\t{39, \"SIGDUMP\", \"dump\"},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zptrace_armnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"arm\", \"arm64\"). DO NOT EDIT.\n\n//go:build linux && (arm || arm64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsArm is the registers used by arm binaries.\ntype PtraceRegsArm struct {\n\tUregs [18]uint32\n}\n\n// PtraceGetRegsArm fetches the registers used by arm binaries.\nfunc PtraceGetRegsArm(pid int, regsout *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm sets the registers used by arm binaries.\nfunc PtraceSetRegsArm(pid int, regs *PtraceRegsArm) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsArm64 is the registers used by arm64 binaries.\ntype PtraceRegsArm64 struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\n// PtraceGetRegsArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegsArm64(pid int, regsout *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegsArm64(pid int, regs *PtraceRegsArm64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "gossh/sys/unix/zptrace_linux_arm64.go",
    "content": "// Code generated by linux/mkall.go generatePtraceRegSet(\"arm64\"). DO NOT EDIT.\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceGetRegSetArm64 fetches the registers used by arm64 binaries.\nfunc PtraceGetRegSetArm64(pid, addr int, regsout *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regsout)), uint64(unsafe.Sizeof(*regsout))}\n\treturn ptracePtr(PTRACE_GETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n\n// PtraceSetRegSetArm64 sets the registers used by arm64 binaries.\nfunc PtraceSetRegSetArm64(pid, addr int, regs *PtraceRegsArm64) error {\n\tiovec := Iovec{(*byte)(unsafe.Pointer(regs)), uint64(unsafe.Sizeof(*regs))}\n\treturn ptracePtr(PTRACE_SETREGSET, pid, uintptr(addr), unsafe.Pointer(&iovec))\n}\n"
  },
  {
    "path": "gossh/sys/unix/zptrace_mipsnn_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mips\", \"mips64\"). DO NOT EDIT.\n\n//go:build linux && (mips || mips64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMips is the registers used by mips binaries.\ntype PtraceRegsMips struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips fetches the registers used by mips binaries.\nfunc PtraceGetRegsMips(pid int, regsout *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips sets the registers used by mips binaries.\nfunc PtraceSetRegsMips(pid int, regs *PtraceRegsMips) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64 is the registers used by mips64 binaries.\ntype PtraceRegsMips64 struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64 fetches the registers used by mips64 binaries.\nfunc PtraceGetRegsMips64(pid int, regsout *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64 sets the registers used by mips64 binaries.\nfunc PtraceSetRegsMips64(pid int, regs *PtraceRegsMips64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "gossh/sys/unix/zptrace_mipsnnle_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"mipsle\", \"mips64le\"). DO NOT EDIT.\n\n//go:build linux && (mipsle || mips64le)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegsMipsle is the registers used by mipsle binaries.\ntype PtraceRegsMipsle struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMipsle fetches the registers used by mipsle binaries.\nfunc PtraceGetRegsMipsle(pid int, regsout *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMipsle sets the registers used by mipsle binaries.\nfunc PtraceSetRegsMipsle(pid int, regs *PtraceRegsMipsle) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsMips64le is the registers used by mips64le binaries.\ntype PtraceRegsMips64le struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\n// PtraceGetRegsMips64le fetches the registers used by mips64le binaries.\nfunc PtraceGetRegsMips64le(pid int, regsout *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsMips64le sets the registers used by mips64le binaries.\nfunc PtraceSetRegsMips64le(pid int, regs *PtraceRegsMips64le) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "gossh/sys/unix/zptrace_x86_linux.go",
    "content": "// Code generated by linux/mkall.go generatePtracePair(\"386\", \"amd64\"). DO NOT EDIT.\n\n//go:build linux && (386 || amd64)\n\npackage unix\n\nimport \"unsafe\"\n\n// PtraceRegs386 is the registers used by 386 binaries.\ntype PtraceRegs386 struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\n// PtraceGetRegs386 fetches the registers used by 386 binaries.\nfunc PtraceGetRegs386(pid int, regsout *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegs386 sets the registers used by 386 binaries.\nfunc PtraceSetRegs386(pid int, regs *PtraceRegs386) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n\n// PtraceRegsAmd64 is the registers used by amd64 binaries.\ntype PtraceRegsAmd64 struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\n// PtraceGetRegsAmd64 fetches the registers used by amd64 binaries.\nfunc PtraceGetRegsAmd64(pid int, regsout *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_GETREGS, pid, 0, unsafe.Pointer(regsout))\n}\n\n// PtraceSetRegsAmd64 sets the registers used by amd64 binaries.\nfunc PtraceSetRegsAmd64(pid int, regs *PtraceRegsAmd64) error {\n\treturn ptracePtr(PTRACE_SETREGS, pid, 0, unsafe.Pointer(regs))\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_aix_ppc.go",
    "content": "// go run mksyscall_aix_ppc.go -aix -tags aix,ppc syscall_aix.go syscall_aix_ppc.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc\n\npackage unix\n\n/*\n#include <stdint.h>\n#include <stddef.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit64(int, uintptr_t);\nlong long lseek64(int, long long, int);\nuintptr_t mmap(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimes(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(times))), C.int(flag))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getcwd(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, er := C.accept(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.getdirent(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, er := C.wait4(C.int(pid), C.uintptr_t(uintptr(unsafe.Pointer(status))), C.int(options), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\twpid = Pid_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\tr0, er := C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tr = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(uintptr(unsafe.Pointer(lk))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, er := C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg))\n\tval = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\tr0, er := C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.acct(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chdir(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.chroot(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\tr0, er := C.close(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, er := C.dup(C.int(oldfd))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tC.exit(C.int(code))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\tr0, er := C.fchdir(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\tr0, er := C.fchmod(C.int(fd), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\tr0, er := C.fdatasync(C.int(fd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, er := C.getpgid(C.int(pid))\n\tpgid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := C.getpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := C.getpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := C.getppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, er := C.getpriority(C.int(which), C.int(who))\n\tprio = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\tr0, er := C.getrusage(C.int(who), C.uintptr_t(uintptr(unsafe.Pointer(rusage))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, er := C.getsid(C.int(pid))\n\tsid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\tr0, er := C.kill(C.int(pid), C.int(sig))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.syslog(C.int(typ), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mkfifo(C.uintptr_t(_p0), C.uint(mode))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\tr0, er := C.nanosleep(C.uintptr_t(uintptr(unsafe.Pointer(time))), C.uintptr_t(uintptr(unsafe.Pointer(leftover))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.read(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tvar _p2 int\n\t_p2 = len(buf)\n\tr0, er := C.readlink(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(_p1))), C.size_t(_p2))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(oldpath)))\n\t_p1 := uintptr(unsafe.Pointer(C.CString(newpath)))\n\tr0, er := C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.setdomainname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.sethostname(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\tr0, er := C.setpgid(C.int(pid), C.int(pgid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, er := C.setsid()\n\tpid = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\tr0, er := C.settimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\tr0, er := C.setuid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\tr0, er := C.setgid(C.int(uid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\tr0, er := C.setpriority(C.int(which), C.int(who), C.int(prio))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tC.sync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, er := C.times(C.uintptr_t(uintptr(unsafe.Pointer(tms))))\n\tticks = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := C.umask(C.int(mask))\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\tr0, er := C.uname(C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlink(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\tr0, er := C.ustat(C.int(dev), C.uintptr_t(uintptr(unsafe.Pointer(ubuf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.write(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\tr0, er := C.dup2(C.int(oldfd), C.int(newfd))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\tr0, er := C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\tr0, er := C.fchown(C.int(fd), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\tr0, er := C.fstat(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\tr0, er := C.fstatfs(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\tr0, er := C.ftruncate(C.int(fd), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := C.getegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := C.geteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := C.getgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := C.getuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\tr0, er := C.listen(C.int(s), C.int(n))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.lstat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(stat))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\tr0, er := C.pause()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pread64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.pwrite64(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.longlong(offset))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, er := C.c_select(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, er := C.pselect(C.int(nfd), C.uintptr_t(uintptr(unsafe.Pointer(r))), C.uintptr_t(uintptr(unsafe.Pointer(w))), C.uintptr_t(uintptr(unsafe.Pointer(e))), C.uintptr_t(uintptr(unsafe.Pointer(timeout))), C.uintptr_t(uintptr(unsafe.Pointer(sigmask))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\tr0, er := C.setregid(C.int(rgid), C.int(egid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\tr0, er := C.setreuid(C.int(ruid), C.int(euid))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\tr0, er := C.shutdown(C.int(fd), C.int(how))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, er := C.splice(C.int(rfd), C.uintptr_t(uintptr(unsafe.Pointer(roff))), C.int(wfd), C.uintptr_t(uintptr(unsafe.Pointer(woff))), C.int(len), C.int(flags))\n\tn = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.stat(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(statptr))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.statfs(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.truncate(C.uintptr_t(_p0), C.longlong(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.bind(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\tr0, er := C.connect(C.int(s), C.uintptr_t(uintptr(addr)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, er := C.getgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tnn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\tr0, er := C.setgroups(C.int(n), C.uintptr_t(uintptr(unsafe.Pointer(list))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\tr0, er := C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(uintptr(unsafe.Pointer(vallen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\tr0, er := C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(uintptr(val)), C.uintptr_t(vallen))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, er := C.socket(C.int(domain), C.int(typ), C.int(proto))\n\tfd = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\tr0, er := C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(uintptr(unsafe.Pointer(fd))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getpeername(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\tr0, er := C.getsockname(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(rsa))), C.uintptr_t(uintptr(unsafe.Pointer(addrlen))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(p)\n\tr0, er := C.recvfrom(C.int(fd), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(unsafe.Pointer(from))), C.uintptr_t(uintptr(unsafe.Pointer(fromlen))))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(buf)\n\tr0, er := C.sendto(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags), C.uintptr_t(uintptr(to)), C.uintptr_t(uintptr(addrlen)))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nrecvmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, er := C.nsendmsg(C.int(s), C.uintptr_t(uintptr(unsafe.Pointer(msg))), C.int(flags))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\tr0, er := C.munmap(C.uintptr_t(addr), C.uintptr_t(length))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.madvise(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(advice))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mprotect(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(prot))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.mlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\tr0, er := C.mlockall(C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.msync(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1), C.int(flags))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\tvar _p1 int\n\t_p1 = len(b)\n\tr0, er := C.munlock(C.uintptr_t(uintptr(unsafe.Pointer(_p0))), C.size_t(_p1))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\tr0, er := C.munlockall()\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\tr0, er := C.pipe(C.uintptr_t(uintptr(unsafe.Pointer(p))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, er := C.poll(C.uintptr_t(uintptr(unsafe.Pointer(fds))), C.int(nfds), C.int(timeout))\n\tn = int(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\tr0, er := C.gettimeofday(C.uintptr_t(uintptr(unsafe.Pointer(tv))), C.uintptr_t(uintptr(unsafe.Pointer(tzp))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, er := C.time(C.uintptr_t(uintptr(unsafe.Pointer(t))))\n\ttt = Time_t(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(path)))\n\tr0, er := C.utime(C.uintptr_t(_p0), C.uintptr_t(uintptr(unsafe.Pointer(buf))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := C.getsystemcfg(C.int(label))\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\t_p0 := uintptr(unsafe.Pointer(C.CString(target)))\n\tr0, er := C.umount(C.uintptr_t(_p0))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\tr0, er := C.getrlimit64(C.int(resource), C.uintptr_t(uintptr(unsafe.Pointer(rlim))))\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, er := C.lseek64(C.int(fd), C.longlong(offset), C.int(whence))\n\toff = int64(r0)\n\tif r0 == -1 && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, er := C.mmap(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset))\n\txaddr = uintptr(r0)\n\tif uintptr(r0) == ^uintptr(0) && er != nil {\n\t\terr = er\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_aix_ppc64.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimes(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutimensat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), flag)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getcwd(buf []byte) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callgetcwd(uintptr(unsafe.Pointer(_p0)), len(buf))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, e1 := callaccept(s, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirent(fd int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callgetdirent(fd, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid Pid_t, status *_C_int, options int, rusage *Rusage) (wpid Pid_t, err error) {\n\tr0, e1 := callwait4(int(pid), uintptr(unsafe.Pointer(status)), options, uintptr(unsafe.Pointer(rusage)))\n\twpid = Pid_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, e1 := callioctl(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, e1 := callioctl_ptr(fd, req, arg)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlInt(fd uintptr, cmd int, arg int) (r int, err error) {\n\tr0, e1 := callfcntl(fd, cmd, uintptr(arg))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FcntlFlock(fd uintptr, cmd int, lk *Flock_t) (err error) {\n\t_, e1 := callfcntl(fd, cmd, uintptr(unsafe.Pointer(lk)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, e1 := callfcntl(uintptr(fd), cmd, uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsyncRange(fd int, how int, start int64, length int64) (err error) {\n\t_, e1 := callfsync_range(fd, how, start, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callacct(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchdir(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callchroot(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, e1 := callclose(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, e1 := calldup(oldfd)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tcallexit(code)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfaccessat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, e1 := callfchdir(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, e1 := callfchmod(fd, mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchmodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfchownat(dirfd, uintptr(unsafe.Pointer(_p0)), uid, gid, flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, e1 := callfdatasync(fd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, e1 := callgetpgid(pid)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pid int) {\n\tr0, _ := callgetpgrp()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := callgetpid()\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := callgetppid()\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, e1 := callgetpriority(which, who)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, e1 := callgetrusage(who, uintptr(unsafe.Pointer(rusage)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, e1 := callgetsid(pid)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, sig Signal) (err error) {\n\t_, e1 := callkill(pid, int(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Klogctl(typ int, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, e1 := callsyslog(typ, uintptr(unsafe.Pointer(_p0)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdir(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkdirat(dirfd, uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmkfifo(uintptr(unsafe.Pointer(_p0)), mode)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknod(uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callmknodat(dirfd, uintptr(unsafe.Pointer(_p0)), mode, dev)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, e1 := callnanosleep(uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopen64(uintptr(unsafe.Pointer(_p0)), mode, perm)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, e1 := callopenat(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mode)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callread(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, e1 := callreadlink(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), len(buf))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callrenameat(olddirfd, uintptr(unsafe.Pointer(_p0)), newdirfd, uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsetdomainname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, e1 := callsethostname(uintptr(unsafe.Pointer(_p0)), len(p))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, e1 := callsetpgid(pid, pgid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, e1 := callsetsid()\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, e1 := callsettimeofday(uintptr(unsafe.Pointer(tv)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, e1 := callsetuid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(uid int) (err error) {\n\t_, e1 := callsetgid(uid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, e1 := callsetpriority(which, who, prio)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatx(dirfd, uintptr(unsafe.Pointer(_p0)), flags, mask, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tcallsync()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, e1 := calltimes(uintptr(unsafe.Pointer(tms)))\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := callumask(mask)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, e1 := calluname(uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlink(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callunlinkat(dirfd, uintptr(unsafe.Pointer(_p0)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, e1 := callustat(dev, uintptr(unsafe.Pointer(ubuf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callwrite(fd, uintptr(unsafe.Pointer(_p0)), len(p))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, e1 := calldup2(oldfd, newfd)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, e1 := callposix_fadvise64(fd, offset, length, advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, e1 := callfchown(fd, uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, stat *Stat_t) (err error) {\n\t_, e1 := callfstat(fd, uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callfstatat(dirfd, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, e1 := callfstatfs(fd, uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, e1 := callftruncate(fd, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := callgetegid()\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := callgeteuid()\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := callgetgid()\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := callgetuid()\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllchown(uintptr(unsafe.Pointer(_p0)), uid, gid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, e1 := calllisten(s, n)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calllstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, e1 := callpause()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpread64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callpwrite64(fd, uintptr(unsafe.Pointer(_p0)), len(p), offset)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, e1 := callselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pselect(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, e1 := callpselect(nfd, uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, e1 := callsetregid(rgid, egid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, e1 := callsetreuid(ruid, euid)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, e1 := callshutdown(fd, how)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, e1 := callsplice(rfd, uintptr(unsafe.Pointer(roff)), wfd, uintptr(unsafe.Pointer(woff)), len, flags)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, statptr *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstat(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statptr)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callstatfs(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := calltruncate(uintptr(unsafe.Pointer(_p0)), length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callbind(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, e1 := callconnect(s, uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, e1 := callgetgroups(n, uintptr(unsafe.Pointer(list)))\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, e1 := callsetgroups(n, uintptr(unsafe.Pointer(list)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, e1 := callgetsockopt(s, level, name, uintptr(val), uintptr(unsafe.Pointer(vallen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, e1 := callsetsockopt(s, level, name, uintptr(val), vallen)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, e1 := callsocket(domain, typ, proto)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, e1 := callsocketpair(domain, typ, proto, uintptr(unsafe.Pointer(fd)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetpeername(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, e1 := callgetsockname(fd, uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, e1 := callrecvfrom(fd, uintptr(unsafe.Pointer(_p0)), len(p), flags, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, e1 := callsendto(s, uintptr(unsafe.Pointer(_p0)), len(buf), flags, uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnrecvmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, e1 := callnsendmsg(s, uintptr(unsafe.Pointer(msg)), flags)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, e1 := callmunmap(addr, length)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmadvise(uintptr(unsafe.Pointer(_p0)), len(b), advice)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmprotect(uintptr(unsafe.Pointer(_p0)), len(b), prot)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, e1 := callmlockall(flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmsync(uintptr(unsafe.Pointer(_p0)), len(b), flags)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, e1 := callmunlock(uintptr(unsafe.Pointer(_p0)), len(b))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, e1 := callmunlockall()\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (err error) {\n\t_, e1 := callpipe(uintptr(unsafe.Pointer(p)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, e1 := callpoll(uintptr(unsafe.Pointer(fds)), nfds, timeout)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gettimeofday(tv *Timeval, tzp *Timezone) (err error) {\n\t_, e1 := callgettimeofday(uintptr(unsafe.Pointer(tv)), uintptr(unsafe.Pointer(tzp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, e1 := calltime(uintptr(unsafe.Pointer(t)))\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callutime(uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsystemcfg(label int) (n uint64) {\n\tr0, _ := callgetsystemcfg(label)\n\tn = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc umount(target string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, e1 := callumount(uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, e1 := callgetrlimit(resource, uintptr(unsafe.Pointer(rlim)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, e1 := calllseek(fd, offset, whence)\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, e1 := callmmap64(addr, length, prot, flags, fd, offset)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_aix_ppc64_gc.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gc\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_accept accept \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getdirent getdirent \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fsync_range fsync_range \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_acct acct \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_close close \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup dup \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_exit exit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_kill kill \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_syslog syslog \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknod mknod \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_open64 open64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_openat openat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_read read \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_readlink readlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_renameat renameat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setdomainname setdomainname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sethostname sethostname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsid setsid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgid setgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statx statx \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sync sync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_times times \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umask umask \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_uname uname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_write write \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_posix_fadvise64 posix_fadvise64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_listen listen \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lstat lstat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pause pause \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pread64 pread64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pwrite64 pwrite64 \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_select select \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pselect pselect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setregid setregid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_splice splice \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_stat stat \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_statfs statfs \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_bind bind \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_connect connect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socket socket \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_sendto sendto \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nrecvmsg nrecvmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_nsendmsg nsendmsg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_madvise madvise \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlock mlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_msync msync \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlock munlock \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_pipe pipe \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_poll poll \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_time time \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_utime utime \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getsystemcfg getsystemcfg \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_umount umount \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_lseek lseek \"libc.a/shr_64.o\"\n//go:cgo_import_dynamic libc_mmap64 mmap64 \"libc.a/shr_64.o\"\n\n//go:linkname libc_utimes libc_utimes\n//go:linkname libc_utimensat libc_utimensat\n//go:linkname libc_getcwd libc_getcwd\n//go:linkname libc_accept libc_accept\n//go:linkname libc_getdirent libc_getdirent\n//go:linkname libc_wait4 libc_wait4\n//go:linkname libc_ioctl libc_ioctl\n//go:linkname libc_fcntl libc_fcntl\n//go:linkname libc_fsync_range libc_fsync_range\n//go:linkname libc_acct libc_acct\n//go:linkname libc_chdir libc_chdir\n//go:linkname libc_chroot libc_chroot\n//go:linkname libc_close libc_close\n//go:linkname libc_dup libc_dup\n//go:linkname libc_exit libc_exit\n//go:linkname libc_faccessat libc_faccessat\n//go:linkname libc_fchdir libc_fchdir\n//go:linkname libc_fchmod libc_fchmod\n//go:linkname libc_fchmodat libc_fchmodat\n//go:linkname libc_fchownat libc_fchownat\n//go:linkname libc_fdatasync libc_fdatasync\n//go:linkname libc_getpgid libc_getpgid\n//go:linkname libc_getpgrp libc_getpgrp\n//go:linkname libc_getpid libc_getpid\n//go:linkname libc_getppid libc_getppid\n//go:linkname libc_getpriority libc_getpriority\n//go:linkname libc_getrusage libc_getrusage\n//go:linkname libc_getsid libc_getsid\n//go:linkname libc_kill libc_kill\n//go:linkname libc_syslog libc_syslog\n//go:linkname libc_mkdir libc_mkdir\n//go:linkname libc_mkdirat libc_mkdirat\n//go:linkname libc_mkfifo libc_mkfifo\n//go:linkname libc_mknod libc_mknod\n//go:linkname libc_mknodat libc_mknodat\n//go:linkname libc_nanosleep libc_nanosleep\n//go:linkname libc_open64 libc_open64\n//go:linkname libc_openat libc_openat\n//go:linkname libc_read libc_read\n//go:linkname libc_readlink libc_readlink\n//go:linkname libc_renameat libc_renameat\n//go:linkname libc_setdomainname libc_setdomainname\n//go:linkname libc_sethostname libc_sethostname\n//go:linkname libc_setpgid libc_setpgid\n//go:linkname libc_setsid libc_setsid\n//go:linkname libc_settimeofday libc_settimeofday\n//go:linkname libc_setuid libc_setuid\n//go:linkname libc_setgid libc_setgid\n//go:linkname libc_setpriority libc_setpriority\n//go:linkname libc_statx libc_statx\n//go:linkname libc_sync libc_sync\n//go:linkname libc_times libc_times\n//go:linkname libc_umask libc_umask\n//go:linkname libc_uname libc_uname\n//go:linkname libc_unlink libc_unlink\n//go:linkname libc_unlinkat libc_unlinkat\n//go:linkname libc_ustat libc_ustat\n//go:linkname libc_write libc_write\n//go:linkname libc_dup2 libc_dup2\n//go:linkname libc_posix_fadvise64 libc_posix_fadvise64\n//go:linkname libc_fchown libc_fchown\n//go:linkname libc_fstat libc_fstat\n//go:linkname libc_fstatat libc_fstatat\n//go:linkname libc_fstatfs libc_fstatfs\n//go:linkname libc_ftruncate libc_ftruncate\n//go:linkname libc_getegid libc_getegid\n//go:linkname libc_geteuid libc_geteuid\n//go:linkname libc_getgid libc_getgid\n//go:linkname libc_getuid libc_getuid\n//go:linkname libc_lchown libc_lchown\n//go:linkname libc_listen libc_listen\n//go:linkname libc_lstat libc_lstat\n//go:linkname libc_pause libc_pause\n//go:linkname libc_pread64 libc_pread64\n//go:linkname libc_pwrite64 libc_pwrite64\n//go:linkname libc_select libc_select\n//go:linkname libc_pselect libc_pselect\n//go:linkname libc_setregid libc_setregid\n//go:linkname libc_setreuid libc_setreuid\n//go:linkname libc_shutdown libc_shutdown\n//go:linkname libc_splice libc_splice\n//go:linkname libc_stat libc_stat\n//go:linkname libc_statfs libc_statfs\n//go:linkname libc_truncate libc_truncate\n//go:linkname libc_bind libc_bind\n//go:linkname libc_connect libc_connect\n//go:linkname libc_getgroups libc_getgroups\n//go:linkname libc_setgroups libc_setgroups\n//go:linkname libc_getsockopt libc_getsockopt\n//go:linkname libc_setsockopt libc_setsockopt\n//go:linkname libc_socket libc_socket\n//go:linkname libc_socketpair libc_socketpair\n//go:linkname libc_getpeername libc_getpeername\n//go:linkname libc_getsockname libc_getsockname\n//go:linkname libc_recvfrom libc_recvfrom\n//go:linkname libc_sendto libc_sendto\n//go:linkname libc_nrecvmsg libc_nrecvmsg\n//go:linkname libc_nsendmsg libc_nsendmsg\n//go:linkname libc_munmap libc_munmap\n//go:linkname libc_madvise libc_madvise\n//go:linkname libc_mprotect libc_mprotect\n//go:linkname libc_mlock libc_mlock\n//go:linkname libc_mlockall libc_mlockall\n//go:linkname libc_msync libc_msync\n//go:linkname libc_munlock libc_munlock\n//go:linkname libc_munlockall libc_munlockall\n//go:linkname libc_pipe libc_pipe\n//go:linkname libc_poll libc_poll\n//go:linkname libc_gettimeofday libc_gettimeofday\n//go:linkname libc_time libc_time\n//go:linkname libc_utime libc_utime\n//go:linkname libc_getsystemcfg libc_getsystemcfg\n//go:linkname libc_umount libc_umount\n//go:linkname libc_getrlimit libc_getrlimit\n//go:linkname libc_lseek libc_lseek\n//go:linkname libc_mmap64 libc_mmap64\n\ntype syscallFunc uintptr\n\nvar (\n\tlibc_utimes,\n\tlibc_utimensat,\n\tlibc_getcwd,\n\tlibc_accept,\n\tlibc_getdirent,\n\tlibc_wait4,\n\tlibc_ioctl,\n\tlibc_fcntl,\n\tlibc_fsync_range,\n\tlibc_acct,\n\tlibc_chdir,\n\tlibc_chroot,\n\tlibc_close,\n\tlibc_dup,\n\tlibc_exit,\n\tlibc_faccessat,\n\tlibc_fchdir,\n\tlibc_fchmod,\n\tlibc_fchmodat,\n\tlibc_fchownat,\n\tlibc_fdatasync,\n\tlibc_getpgid,\n\tlibc_getpgrp,\n\tlibc_getpid,\n\tlibc_getppid,\n\tlibc_getpriority,\n\tlibc_getrusage,\n\tlibc_getsid,\n\tlibc_kill,\n\tlibc_syslog,\n\tlibc_mkdir,\n\tlibc_mkdirat,\n\tlibc_mkfifo,\n\tlibc_mknod,\n\tlibc_mknodat,\n\tlibc_nanosleep,\n\tlibc_open64,\n\tlibc_openat,\n\tlibc_read,\n\tlibc_readlink,\n\tlibc_renameat,\n\tlibc_setdomainname,\n\tlibc_sethostname,\n\tlibc_setpgid,\n\tlibc_setsid,\n\tlibc_settimeofday,\n\tlibc_setuid,\n\tlibc_setgid,\n\tlibc_setpriority,\n\tlibc_statx,\n\tlibc_sync,\n\tlibc_times,\n\tlibc_umask,\n\tlibc_uname,\n\tlibc_unlink,\n\tlibc_unlinkat,\n\tlibc_ustat,\n\tlibc_write,\n\tlibc_dup2,\n\tlibc_posix_fadvise64,\n\tlibc_fchown,\n\tlibc_fstat,\n\tlibc_fstatat,\n\tlibc_fstatfs,\n\tlibc_ftruncate,\n\tlibc_getegid,\n\tlibc_geteuid,\n\tlibc_getgid,\n\tlibc_getuid,\n\tlibc_lchown,\n\tlibc_listen,\n\tlibc_lstat,\n\tlibc_pause,\n\tlibc_pread64,\n\tlibc_pwrite64,\n\tlibc_select,\n\tlibc_pselect,\n\tlibc_setregid,\n\tlibc_setreuid,\n\tlibc_shutdown,\n\tlibc_splice,\n\tlibc_stat,\n\tlibc_statfs,\n\tlibc_truncate,\n\tlibc_bind,\n\tlibc_connect,\n\tlibc_getgroups,\n\tlibc_setgroups,\n\tlibc_getsockopt,\n\tlibc_setsockopt,\n\tlibc_socket,\n\tlibc_socketpair,\n\tlibc_getpeername,\n\tlibc_getsockname,\n\tlibc_recvfrom,\n\tlibc_sendto,\n\tlibc_nrecvmsg,\n\tlibc_nsendmsg,\n\tlibc_munmap,\n\tlibc_madvise,\n\tlibc_mprotect,\n\tlibc_mlock,\n\tlibc_mlockall,\n\tlibc_msync,\n\tlibc_munlock,\n\tlibc_munlockall,\n\tlibc_pipe,\n\tlibc_poll,\n\tlibc_gettimeofday,\n\tlibc_time,\n\tlibc_utime,\n\tlibc_getsystemcfg,\n\tlibc_umount,\n\tlibc_getrlimit,\n\tlibc_lseek,\n\tlibc_mmap64 syscallFunc\n)\n\n// Implemented in runtime/syscall_aix.go.\nfunc rawSyscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\nfunc syscall6(trap, nargs, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimes)), 2, _p0, times, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utimensat)), 4, uintptr(dirfd), _p0, times, uintptr(flag), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getcwd)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_accept)), 3, uintptr(s), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getdirent)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_wait4)), 4, uintptr(pid), status, uintptr(options), rusage, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fcntl)), 3, fd, uintptr(cmd), arg, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fsync_range)), 4, uintptr(fd), uintptr(how), uintptr(start), uintptr(length), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_acct)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chdir)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_chroot)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_close)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup)), 1, uintptr(oldfd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_exit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_faccessat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchmodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchownat)), 5, uintptr(dirfd), _p0, uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getppid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrusage)), 2, uintptr(who), rusage, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_kill)), 2, uintptr(pid), uintptr(sig), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_syslog)), 3, uintptr(typ), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdir)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkdirat)), 3, uintptr(dirfd), _p0, uintptr(mode), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mkfifo)), 2, _p0, uintptr(mode), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknod)), 3, _p0, uintptr(mode), uintptr(dev), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mknodat)), 4, uintptr(dirfd), _p0, uintptr(mode), uintptr(dev), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nanosleep)), 2, time, leftover, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_open64)), 3, _p0, uintptr(mode), uintptr(perm), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_openat)), 4, uintptr(dirfd), _p0, uintptr(flags), uintptr(mode), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_read)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_readlink)), 3, _p0, _p1, uintptr(_lenp1), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_renameat)), 4, uintptr(olddirfd), _p0, uintptr(newdirfd), _p1, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setdomainname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sethostname)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setsid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_settimeofday)), 1, tv, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setgid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statx)), 5, uintptr(dirfd), _p0, uintptr(flags), uintptr(mask), stat, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sync)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_times)), 1, tms, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_umask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_uname)), 1, buf, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlink)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_unlinkat)), 3, uintptr(dirfd), _p0, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ustat)), 2, uintptr(dev), ubuf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_write)), 3, uintptr(fd), _p0, uintptr(_lenp0), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_dup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_posix_fadvise64)), 4, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstat)), 2, uintptr(fd), stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatat)), 4, uintptr(dirfd), _p0, stat, uintptr(flags), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_fstatfs)), 2, uintptr(fd), buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_ftruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getegid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_geteuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getuid)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lchown)), 3, _p0, uintptr(uid), uintptr(gid), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_listen)), 2, uintptr(s), uintptr(n), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lstat)), 2, _p0, stat, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pause)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pread64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pwrite64)), 4, uintptr(fd), _p0, uintptr(_lenp0), uintptr(offset), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_select)), 5, uintptr(nfd), r, w, e, timeout, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_pselect)), 6, uintptr(nfd), r, w, e, timeout, sigmask)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_shutdown)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_splice)), 6, uintptr(rfd), roff, uintptr(wfd), woff, uintptr(len), uintptr(flags))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_stat)), 2, _p0, statptr, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_statfs)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_truncate)), 2, _p0, uintptr(length), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_bind)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_connect)), 3, uintptr(s), addr, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_setgroups)), 2, uintptr(n), list, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_setsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), val, vallen, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), fd, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getpeername)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getsockname)), 3, uintptr(fd), rsa, addrlen, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_recvfrom)), 6, uintptr(fd), _p0, uintptr(_lenp0), uintptr(flags), from, fromlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_sendto)), 6, uintptr(s), _p0, uintptr(_lenp0), uintptr(flags), to, addrlen)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nrecvmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_nsendmsg)), 3, uintptr(s), msg, uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munmap)), 2, addr, length, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_madvise)), 3, _p0, uintptr(_lenp0), uintptr(advice), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mprotect)), 3, _p0, uintptr(_lenp0), uintptr(prot), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_msync)), 3, _p0, uintptr(_lenp0), uintptr(flags), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlock)), 2, _p0, uintptr(_lenp0), 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_munlockall)), 0, 0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_pipe)), 1, p, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_poll)), 3, fds, uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_gettimeofday)), 2, tv, tzp, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_time)), 1, t, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_utime)), 2, _p0, buf, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_getsystemcfg)), 1, uintptr(label), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_umount)), 1, _p0, 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = rawSyscall6(uintptr(unsafe.Pointer(&libc_getrlimit)), 2, uintptr(resource), rlim, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_lseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1, _, e1 = syscall6(uintptr(unsafe.Pointer(&libc_mmap64)), 6, addr, length, uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_aix_ppc64_gccgo.go",
    "content": "// go run mksyscall_aix_ppc64.go -aix -tags aix,ppc64 syscall_aix.go syscall_aix_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build aix && ppc64 && gccgo\n\npackage unix\n\n/*\n#include <stdint.h>\nint utimes(uintptr_t, uintptr_t);\nint utimensat(int, uintptr_t, uintptr_t, int);\nint getcwd(uintptr_t, size_t);\nint accept(int, uintptr_t, uintptr_t);\nint getdirent(int, uintptr_t, size_t);\nint wait4(int, uintptr_t, int, uintptr_t);\nint ioctl(int, int, uintptr_t);\nint fcntl(uintptr_t, int, uintptr_t);\nint fsync_range(int, int, long long, long long);\nint acct(uintptr_t);\nint chdir(uintptr_t);\nint chroot(uintptr_t);\nint close(int);\nint dup(int);\nvoid exit(int);\nint faccessat(int, uintptr_t, unsigned int, int);\nint fchdir(int);\nint fchmod(int, unsigned int);\nint fchmodat(int, uintptr_t, unsigned int, int);\nint fchownat(int, uintptr_t, int, int, int);\nint fdatasync(int);\nint getpgid(int);\nint getpgrp();\nint getpid();\nint getppid();\nint getpriority(int, int);\nint getrusage(int, uintptr_t);\nint getsid(int);\nint kill(int, int);\nint syslog(int, uintptr_t, size_t);\nint mkdir(int, uintptr_t, unsigned int);\nint mkdirat(int, uintptr_t, unsigned int);\nint mkfifo(uintptr_t, unsigned int);\nint mknod(uintptr_t, unsigned int, int);\nint mknodat(int, uintptr_t, unsigned int, int);\nint nanosleep(uintptr_t, uintptr_t);\nint open64(uintptr_t, int, unsigned int);\nint openat(int, uintptr_t, int, unsigned int);\nint read(int, uintptr_t, size_t);\nint readlink(uintptr_t, uintptr_t, size_t);\nint renameat(int, uintptr_t, int, uintptr_t);\nint setdomainname(uintptr_t, size_t);\nint sethostname(uintptr_t, size_t);\nint setpgid(int, int);\nint setsid();\nint settimeofday(uintptr_t);\nint setuid(int);\nint setgid(int);\nint setpriority(int, int, int);\nint statx(int, uintptr_t, int, int, uintptr_t);\nint sync();\nuintptr_t times(uintptr_t);\nint umask(int);\nint uname(uintptr_t);\nint unlink(uintptr_t);\nint unlinkat(int, uintptr_t, int);\nint ustat(int, uintptr_t);\nint write(int, uintptr_t, size_t);\nint dup2(int, int);\nint posix_fadvise64(int, long long, long long, int);\nint fchown(int, int, int);\nint fstat(int, uintptr_t);\nint fstatat(int, uintptr_t, uintptr_t, int);\nint fstatfs(int, uintptr_t);\nint ftruncate(int, long long);\nint getegid();\nint geteuid();\nint getgid();\nint getuid();\nint lchown(uintptr_t, int, int);\nint listen(int, int);\nint lstat(uintptr_t, uintptr_t);\nint pause();\nint pread64(int, uintptr_t, size_t, long long);\nint pwrite64(int, uintptr_t, size_t, long long);\n#define c_select select\nint select(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint pselect(int, uintptr_t, uintptr_t, uintptr_t, uintptr_t, uintptr_t);\nint setregid(int, int);\nint setreuid(int, int);\nint shutdown(int, int);\nlong long splice(int, uintptr_t, int, uintptr_t, int, int);\nint stat(uintptr_t, uintptr_t);\nint statfs(uintptr_t, uintptr_t);\nint truncate(uintptr_t, long long);\nint bind(int, uintptr_t, uintptr_t);\nint connect(int, uintptr_t, uintptr_t);\nint getgroups(int, uintptr_t);\nint setgroups(int, uintptr_t);\nint getsockopt(int, int, int, uintptr_t, uintptr_t);\nint setsockopt(int, int, int, uintptr_t, uintptr_t);\nint socket(int, int, int);\nint socketpair(int, int, int, uintptr_t);\nint getpeername(int, uintptr_t, uintptr_t);\nint getsockname(int, uintptr_t, uintptr_t);\nint recvfrom(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint sendto(int, uintptr_t, size_t, int, uintptr_t, uintptr_t);\nint nrecvmsg(int, uintptr_t, int);\nint nsendmsg(int, uintptr_t, int);\nint munmap(uintptr_t, uintptr_t);\nint madvise(uintptr_t, size_t, int);\nint mprotect(uintptr_t, size_t, int);\nint mlock(uintptr_t, size_t);\nint mlockall(int);\nint msync(uintptr_t, size_t, int);\nint munlock(uintptr_t, size_t);\nint munlockall();\nint pipe(uintptr_t);\nint poll(uintptr_t, int, int);\nint gettimeofday(uintptr_t, uintptr_t);\nint time(uintptr_t);\nint utime(uintptr_t, uintptr_t);\nunsigned long long getsystemcfg(int);\nint umount(uintptr_t);\nint getrlimit(int, uintptr_t);\nlong long lseek(int, long long, int);\nuintptr_t mmap64(uintptr_t, uintptr_t, int, int, int, long long);\n\n*/\nimport \"C\"\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimes(_p0 uintptr, times uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimes(C.uintptr_t(_p0), C.uintptr_t(times)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutimensat(dirfd int, _p0 uintptr, times uintptr, flag int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utimensat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(times), C.int(flag)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetcwd(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getcwd(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callaccept(s int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.accept(C.int(s), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetdirent(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getdirent(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwait4(pid int, status uintptr, options int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.wait4(C.int(pid), C.uintptr_t(status), C.int(options), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl(fd int, req int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callioctl_ptr(fd int, req int, arg unsafe.Pointer) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ioctl(C.int(fd), C.int(req), C.uintptr_t(uintptr(arg))))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfcntl(fd uintptr, cmd int, arg uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fcntl(C.uintptr_t(fd), C.int(cmd), C.uintptr_t(arg)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfsync_range(fd int, how int, start int64, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fsync_range(C.int(fd), C.int(how), C.longlong(start), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callacct(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.acct(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchdir(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chdir(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callchroot(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.chroot(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callclose(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.close(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup(oldfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup(C.int(oldfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callexit(code int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.exit(C.int(code)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfaccessat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.faccessat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchdir(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchdir(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmod(fd int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmod(C.int(fd), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchmodat(dirfd int, _p0 uintptr, mode uint32, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchmodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchownat(dirfd int, _p0 uintptr, uid int, gid int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchownat(C.int(dirfd), C.uintptr_t(_p0), C.int(uid), C.int(gid), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfdatasync(fd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fdatasync(C.int(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpgrp() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpgrp())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetppid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getppid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpriority(which int, who int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpriority(C.int(which), C.int(who)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrusage(who int, rusage uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrusage(C.int(who), C.uintptr_t(rusage)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsid(pid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsid(C.int(pid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callkill(pid int, sig int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.kill(C.int(pid), C.int(sig)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsyslog(typ int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.syslog(C.int(typ), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdir(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdir(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkdirat(dirfd int, _p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkdirat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmkfifo(_p0 uintptr, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mkfifo(C.uintptr_t(_p0), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknod(_p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknod(C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmknodat(dirfd int, _p0 uintptr, mode uint32, dev int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mknodat(C.int(dirfd), C.uintptr_t(_p0), C.uint(mode), C.int(dev)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnanosleep(time uintptr, leftover uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nanosleep(C.uintptr_t(time), C.uintptr_t(leftover)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopen64(_p0 uintptr, mode int, perm uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.open64(C.uintptr_t(_p0), C.int(mode), C.uint(perm)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callopenat(dirfd int, _p0 uintptr, flags int, mode uint32) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.openat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.uint(mode)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callread(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.read(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callreadlink(_p0 uintptr, _p1 uintptr, _lenp1 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.readlink(C.uintptr_t(_p0), C.uintptr_t(_p1), C.size_t(_lenp1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrenameat(olddirfd int, _p0 uintptr, newdirfd int, _p1 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.renameat(C.int(olddirfd), C.uintptr_t(_p0), C.int(newdirfd), C.uintptr_t(_p1)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetdomainname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setdomainname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsethostname(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sethostname(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpgid(pid int, pgid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpgid(C.int(pid), C.int(pgid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsettimeofday(tv uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.settimeofday(C.uintptr_t(tv)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetuid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setuid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgid(uid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgid(C.int(uid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetpriority(which int, who int, prio int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setpriority(C.int(which), C.int(who), C.int(prio)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatx(dirfd int, _p0 uintptr, flags int, mask int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statx(C.int(dirfd), C.uintptr_t(_p0), C.int(flags), C.int(mask), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsync() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sync())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltimes(tms uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.times(C.uintptr_t(tms)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumask(mask int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umask(C.int(mask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calluname(buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.uname(C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlink(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlink(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callunlinkat(dirfd int, _p0 uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.unlinkat(C.int(dirfd), C.uintptr_t(_p0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callustat(dev int, ubuf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ustat(C.int(dev), C.uintptr_t(ubuf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callwrite(fd int, _p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.write(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calldup2(oldfd int, newfd int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.dup2(C.int(oldfd), C.int(newfd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callposix_fadvise64(fd int, offset int64, length int64, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.posix_fadvise64(C.int(fd), C.longlong(offset), C.longlong(length), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfchown(fd int, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fchown(C.int(fd), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstat(fd int, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstat(C.int(fd), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatat(dirfd int, _p0 uintptr, stat uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatat(C.int(dirfd), C.uintptr_t(_p0), C.uintptr_t(stat), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callfstatfs(fd int, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.fstatfs(C.int(fd), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callftruncate(fd int, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.ftruncate(C.int(fd), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetegid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getegid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgeteuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.geteuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetuid() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getuid())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllchown(_p0 uintptr, uid int, gid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lchown(C.uintptr_t(_p0), C.int(uid), C.int(gid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllisten(s int, n int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.listen(C.int(s), C.int(n)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllstat(_p0 uintptr, stat uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lstat(C.uintptr_t(_p0), C.uintptr_t(stat)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpause() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pause())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpread64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pread64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpwrite64(fd int, _p0 uintptr, _lenp0 int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pwrite64(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.c_select(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpselect(nfd int, r uintptr, w uintptr, e uintptr, timeout uintptr, sigmask uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pselect(C.int(nfd), C.uintptr_t(r), C.uintptr_t(w), C.uintptr_t(e), C.uintptr_t(timeout), C.uintptr_t(sigmask)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetregid(rgid int, egid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setregid(C.int(rgid), C.int(egid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetreuid(ruid int, euid int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setreuid(C.int(ruid), C.int(euid)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callshutdown(fd int, how int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.shutdown(C.int(fd), C.int(how)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsplice(rfd int, roff uintptr, wfd int, woff uintptr, len int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.splice(C.int(rfd), C.uintptr_t(roff), C.int(wfd), C.uintptr_t(woff), C.int(len), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstat(_p0 uintptr, statptr uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.stat(C.uintptr_t(_p0), C.uintptr_t(statptr)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callstatfs(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.statfs(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltruncate(_p0 uintptr, length int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.truncate(C.uintptr_t(_p0), C.longlong(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callbind(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.bind(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callconnect(s int, addr uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.connect(C.int(s), C.uintptr_t(addr), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetgroups(n int, list uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setgroups(C.int(n), C.uintptr_t(list)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsetsockopt(s int, level int, name int, val uintptr, vallen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.setsockopt(C.int(s), C.int(level), C.int(name), C.uintptr_t(val), C.uintptr_t(vallen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocket(domain int, typ int, proto int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socket(C.int(domain), C.int(typ), C.int(proto)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsocketpair(domain int, typ int, proto int, fd uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.socketpair(C.int(domain), C.int(typ), C.int(proto), C.uintptr_t(fd)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetpeername(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getpeername(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsockname(fd int, rsa uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsockname(C.int(fd), C.uintptr_t(rsa), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callrecvfrom(fd int, _p0 uintptr, _lenp0 int, flags int, from uintptr, fromlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.recvfrom(C.int(fd), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(from), C.uintptr_t(fromlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callsendto(s int, _p0 uintptr, _lenp0 int, flags int, to uintptr, addrlen uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.sendto(C.int(s), C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags), C.uintptr_t(to), C.uintptr_t(addrlen)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnrecvmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nrecvmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callnsendmsg(s int, msg uintptr, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.nsendmsg(C.int(s), C.uintptr_t(msg), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunmap(addr uintptr, length uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munmap(C.uintptr_t(addr), C.uintptr_t(length)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmadvise(_p0 uintptr, _lenp0 int, advice int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.madvise(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(advice)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmprotect(_p0 uintptr, _lenp0 int, prot int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mprotect(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(prot)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmlockall(flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mlockall(C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmsync(_p0 uintptr, _lenp0 int, flags int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.msync(C.uintptr_t(_p0), C.size_t(_lenp0), C.int(flags)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlock(_p0 uintptr, _lenp0 int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlock(C.uintptr_t(_p0), C.size_t(_lenp0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmunlockall() (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.munlockall())\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpipe(p uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.pipe(C.uintptr_t(p)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callpoll(fds uintptr, nfds int, timeout int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.poll(C.uintptr_t(fds), C.int(nfds), C.int(timeout)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgettimeofday(tv uintptr, tzp uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.gettimeofday(C.uintptr_t(tv), C.uintptr_t(tzp)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calltime(t uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.time(C.uintptr_t(t)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callutime(_p0 uintptr, buf uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.utime(C.uintptr_t(_p0), C.uintptr_t(buf)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetsystemcfg(label int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getsystemcfg(C.int(label)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callumount(_p0 uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.umount(C.uintptr_t(_p0)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callgetrlimit(resource int, rlim uintptr) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.getrlimit(C.int(resource), C.uintptr_t(rlim)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc calllseek(fd int, offset int64, whence int) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.lseek(C.int(fd), C.longlong(offset), C.int(whence)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc callmmap64(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (r1 uintptr, e1 Errno) {\n\tr1 = uintptr(C.mmap64(C.uintptr_t(addr), C.uintptr_t(length), C.int(prot), C.int(flags), C.int(fd), C.longlong(offset)))\n\te1 = syscall.GetErrno()\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_darwin_amd64.go",
    "content": "// go run mksyscall.go -tags darwin,amd64 syscall_bsd.go syscall_darwin.go syscall_darwin_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat64 fstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat64 fstatat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs64_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs64 fstatfs64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat64_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat64 getfsstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat64 lstat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat64 stat64 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs64_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs64_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs64 statfs64 \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_darwin_amd64.s",
    "content": "// go run mkasm.go darwin amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_fstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat64(SB)\nGLOBL\t·libc_fstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat64_trampoline_addr(SB)/8, $libc_fstat64_trampoline<>(SB)\n\nTEXT libc_fstatat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat64(SB)\nGLOBL\t·libc_fstatat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat64_trampoline_addr(SB)/8, $libc_fstatat64_trampoline<>(SB)\n\nTEXT libc_fstatfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs64(SB)\nGLOBL\t·libc_fstatfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs64_trampoline_addr(SB)/8, $libc_fstatfs64_trampoline<>(SB)\n\nTEXT libc_getfsstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat64(SB)\nGLOBL\t·libc_getfsstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat64_trampoline_addr(SB)/8, $libc_getfsstat64_trampoline<>(SB)\n\nTEXT libc_lstat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat64(SB)\nGLOBL\t·libc_lstat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat64_trampoline_addr(SB)/8, $libc_lstat64_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat64(SB)\nGLOBL\t·libc_stat64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat64_trampoline_addr(SB)/8, $libc_stat64_trampoline<>(SB)\n\nTEXT libc_statfs64_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs64(SB)\nGLOBL\t·libc_statfs64_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs64_trampoline_addr(SB)/8, $libc_statfs64_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_darwin_arm64.go",
    "content": "// go run mksyscall.go -tags darwin,arm64 syscall_bsd.go syscall_darwin.go syscall_darwin_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build darwin && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc closedir(dir uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_closedir_trampoline_addr, uintptr(dir), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_closedir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_closedir closedir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readdir_r(dir uintptr, entry *Dirent, result **Dirent) (res Errno) {\n\tr0, _, _ := syscall_syscall(libc_readdir_r_trampoline_addr, uintptr(dir), uintptr(unsafe.Pointer(entry)), uintptr(unsafe.Pointer(result)))\n\tres = Errno(r0)\n\treturn\n}\n\nvar libc_readdir_r_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readdir_r readdir_r \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe_trampoline_addr, uintptr(unsafe.Pointer(p)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe pipe \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getxattr(path string, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_getxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getxattr getxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fgetxattr(fd int, attr string, dest *byte, size int, position uint32, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_fgetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(position), uintptr(options))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fgetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fgetxattr fgetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setxattr(path string, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setxattr setxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsetxattr(fd int, attr string, data *byte, size int, position uint32, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fsetxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(data)), uintptr(size), uintptr(position), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsetxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsetxattr fsetxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc removexattr(path string, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_removexattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_removexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_removexattr removexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fremovexattr(fd int, attr string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_fremovexattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fremovexattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fremovexattr fremovexattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc listxattr(path string, dest *byte, size int, options int) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_listxattr_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listxattr listxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc flistxattr(fd int, dest *byte, size int, options int) (sz int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_flistxattr_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(dest)), uintptr(size), uintptr(options), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flistxattr_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flistxattr flistxattr \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kill(pid int, signum int, posix int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), uintptr(posix))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(infd int, outfd int, offset int64, len *int64, hdtr unsafe.Pointer, flags int) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_sendfile_trampoline_addr, uintptr(infd), uintptr(outfd), uintptr(offset), uintptr(unsafe.Pointer(len)), uintptr(hdtr), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendfile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendfile sendfile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmat_trampoline_addr, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmat shmat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmctl_trampoline_addr, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmctl shmctl \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shmdt_trampoline_addr, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmdt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmdt shmdt \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_shmget_trampoline_addr, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shmget_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shmget shmget \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefile(src string, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_clonefile_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefile_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefile clonefile \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Clonefileat(srcDirfd int, src string, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(src)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_clonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clonefileat clonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exchangedata(path1 string, path2 string, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path1)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(path2)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_exchangedata_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(options))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_exchangedata_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exchangedata exchangedata \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fclonefileat(srcDirfd int, dstDirfd int, dst string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(dst)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fclonefileat_trampoline_addr, uintptr(srcDirfd), uintptr(dstDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fclonefileat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fclonefileat fclonefileat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := syscall_syscall(libc_getdtablesize_trampoline_addr, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\nvar libc_getdtablesize_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdtablesize getdtablesize \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_rawSyscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mount(fsType string, dir string, flags int, data unsafe.Pointer) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(dir)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(flags), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mount mount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setattrlist(path string, attrlist *Attrlist, attrBuf []byte, options int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(attrBuf) > 0 {\n\t\t_p1 = unsafe.Pointer(&attrBuf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_setattrlist_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(attrlist)), uintptr(_p1), uintptr(len(attrBuf)), uintptr(options), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setattrlist_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setattrlist setattrlist \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setprivexec(flag int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setprivexec_trampoline_addr, uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setprivexec_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setprivexec setprivexec \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_undelete_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_undelete_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_undelete undelete \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(buf unsafe.Pointer, size uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(buf), uintptr(size), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace1(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ptrace_trampoline_addr, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ptrace_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ptrace ptrace \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"/usr/lib/libSystem.B.dylib\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"/usr/lib/libSystem.B.dylib\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_darwin_arm64.s",
    "content": "// go run mkasm.go darwin arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_fdopendir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fdopendir(SB)\nGLOBL\t·libc_fdopendir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fdopendir_trampoline_addr(SB)/8, $libc_fdopendir_trampoline<>(SB)\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_closedir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_closedir(SB)\nGLOBL\t·libc_closedir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_closedir_trampoline_addr(SB)/8, $libc_closedir_trampoline<>(SB)\n\nTEXT libc_readdir_r_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readdir_r(SB)\nGLOBL\t·libc_readdir_r_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readdir_r_trampoline_addr(SB)/8, $libc_readdir_r_trampoline<>(SB)\n\nTEXT libc_pipe_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe(SB)\nGLOBL\t·libc_pipe_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe_trampoline_addr(SB)/8, $libc_pipe_trampoline<>(SB)\n\nTEXT libc_getxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getxattr(SB)\nGLOBL\t·libc_getxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getxattr_trampoline_addr(SB)/8, $libc_getxattr_trampoline<>(SB)\n\nTEXT libc_fgetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fgetxattr(SB)\nGLOBL\t·libc_fgetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fgetxattr_trampoline_addr(SB)/8, $libc_fgetxattr_trampoline<>(SB)\n\nTEXT libc_setxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setxattr(SB)\nGLOBL\t·libc_setxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setxattr_trampoline_addr(SB)/8, $libc_setxattr_trampoline<>(SB)\n\nTEXT libc_fsetxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsetxattr(SB)\nGLOBL\t·libc_fsetxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsetxattr_trampoline_addr(SB)/8, $libc_fsetxattr_trampoline<>(SB)\n\nTEXT libc_removexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_removexattr(SB)\nGLOBL\t·libc_removexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_removexattr_trampoline_addr(SB)/8, $libc_removexattr_trampoline<>(SB)\n\nTEXT libc_fremovexattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fremovexattr(SB)\nGLOBL\t·libc_fremovexattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fremovexattr_trampoline_addr(SB)/8, $libc_fremovexattr_trampoline<>(SB)\n\nTEXT libc_listxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listxattr(SB)\nGLOBL\t·libc_listxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listxattr_trampoline_addr(SB)/8, $libc_listxattr_trampoline<>(SB)\n\nTEXT libc_flistxattr_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flistxattr(SB)\nGLOBL\t·libc_flistxattr_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flistxattr_trampoline_addr(SB)/8, $libc_flistxattr_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_sendfile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendfile(SB)\nGLOBL\t·libc_sendfile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendfile_trampoline_addr(SB)/8, $libc_sendfile_trampoline<>(SB)\n\nTEXT libc_shmat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmat(SB)\nGLOBL\t·libc_shmat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmat_trampoline_addr(SB)/8, $libc_shmat_trampoline<>(SB)\n\nTEXT libc_shmctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmctl(SB)\nGLOBL\t·libc_shmctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmctl_trampoline_addr(SB)/8, $libc_shmctl_trampoline<>(SB)\n\nTEXT libc_shmdt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmdt(SB)\nGLOBL\t·libc_shmdt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmdt_trampoline_addr(SB)/8, $libc_shmdt_trampoline<>(SB)\n\nTEXT libc_shmget_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shmget(SB)\nGLOBL\t·libc_shmget_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shmget_trampoline_addr(SB)/8, $libc_shmget_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_clonefile_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefile(SB)\nGLOBL\t·libc_clonefile_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefile_trampoline_addr(SB)/8, $libc_clonefile_trampoline<>(SB)\n\nTEXT libc_clonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clonefileat(SB)\nGLOBL\t·libc_clonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clonefileat_trampoline_addr(SB)/8, $libc_clonefileat_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_exchangedata_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exchangedata(SB)\nGLOBL\t·libc_exchangedata_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exchangedata_trampoline_addr(SB)/8, $libc_exchangedata_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_fclonefileat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fclonefileat(SB)\nGLOBL\t·libc_fclonefileat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fclonefileat_trampoline_addr(SB)/8, $libc_fclonefileat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getdtablesize_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdtablesize(SB)\nGLOBL\t·libc_getdtablesize_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdtablesize_trampoline_addr(SB)/8, $libc_getdtablesize_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mount(SB)\nGLOBL\t·libc_mount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mount_trampoline_addr(SB)/8, $libc_mount_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setattrlist_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setattrlist(SB)\nGLOBL\t·libc_setattrlist_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setattrlist_trampoline_addr(SB)/8, $libc_setattrlist_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setprivexec_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setprivexec(SB)\nGLOBL\t·libc_setprivexec_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setprivexec_trampoline_addr(SB)/8, $libc_setprivexec_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_undelete_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_undelete(SB)\nGLOBL\t·libc_undelete_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_undelete_trampoline_addr(SB)/8, $libc_undelete_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_ptrace_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ptrace(SB)\nGLOBL\t·libc_ptrace_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ptrace_trampoline_addr(SB)/8, $libc_ptrace_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_dragonfly_amd64.go",
    "content": "// go run mksyscall.go -dragonfly -tags dragonfly,amd64 syscall_bsd.go syscall_dragonfly.go syscall_dragonfly_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build dragonfly && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe() (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE, 0, 0, 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (r int, w int, err error) {\n\tr0, r1, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tr = int(r0)\n\tw = int(r1)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpread(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc extpwrite(fd int, p []byte, flags int, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTPWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdirentries(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_freebsd_386.go",
    "content": "// go run mksyscall.go -l32 -tags freebsd,386 syscall_bsd.go syscall_freebsd.go syscall_freebsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), uintptr(dev>>32), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_freebsd_amd64.go",
    "content": "// go run mksyscall.go -tags freebsd,amd64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_freebsd_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags freebsd,arm syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, uintptr(dev), uintptr(dev>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_freebsd_arm64.go",
    "content": "// go run mksyscall.go -tags freebsd,arm64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_freebsd_riscv64.go",
    "content": "// go run mksyscall.go -tags freebsd,riscv64 syscall_bsd.go syscall_freebsd.go syscall_freebsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build freebsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr unsafe.Pointer, data int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CapEnter() (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_ENTER, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsGet(version int, fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS___CAP_RIGHTS_GET, uintptr(version), uintptr(fd), uintptr(unsafe.Pointer(rightsp)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc capRightsLimit(fd int, rightsp *CapRights) (err error) {\n\t_, _, e1 := Syscall(SYS_CAP_RIGHTS_LIMIT, uintptr(fd), uintptr(unsafe.Pointer(rightsp)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getdirentries(fd int, buf []byte, basep *uint64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_GETDIRENTRIES, uintptr(fd), uintptr(_p0), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdtablesize() (size int) {\n\tr0, _, _ := Syscall(SYS_GETDTABLESIZE, 0, 0, 0)\n\tsize = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(fd int, path string, mode uint32, dev uint64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(fdat int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(fdat), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SETLOGIN, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESGID, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETRESUID, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Undelete(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNDELETE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(fd int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (nfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_illumos_amd64.go",
    "content": "// go run mksyscall_solaris.go -illumos -tags illumos,amd64 syscall_illumos.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build illumos && amd64\n\npackage unix\n\nimport (\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_readv readv \"libc.so\"\n//go:cgo_import_dynamic libc_preadv preadv \"libc.so\"\n//go:cgo_import_dynamic libc_writev writev \"libc.so\"\n//go:cgo_import_dynamic libc_pwritev pwritev \"libc.so\"\n//go:cgo_import_dynamic libc_accept4 accept4 \"libsocket.so\"\n\n//go:linkname procreadv libc_readv\n//go:linkname procpreadv libc_preadv\n//go:linkname procwritev libc_writev\n//go:linkname procpwritev libc_pwritev\n//go:linkname procaccept4 libc_accept4\n\nvar (\n\tprocreadv,\n\tprocpreadv,\n\tprocwritev,\n\tprocpwritev,\n\tprocaccept4 syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procreadv)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpreadv)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwritev)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, off int64) (n int, err error) {\n\tvar _p0 *Iovec\n\tif len(iovs) > 0 {\n\t\t_p0 = &iovs[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwritev)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(iovs)), uintptr(off), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept4)), 4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FanotifyInit(flags uint, event_f_flags uint) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FANOTIFY_INIT, uintptr(flags), uintptr(event_f_flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fchmodat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(olddirfd int, oldpath string, newdirfd int, newpath string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openat2(dirfd int, path string, open_how *OpenHow, size int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(open_how)), uintptr(size), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PPOLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Waitid(idType int, id int, info *Siginfo, options int, rusage *Rusage) (err error) {\n\t_, _, e1 := Syscall6(SYS_WAITID, uintptr(idType), uintptr(id), uintptr(unsafe.Pointer(info)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlInt(cmd int, arg2 int, arg3 int, arg4 int, arg5 int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc KeyctlBuffer(cmd int, arg2 int, buf []byte, arg5 int) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(buf)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlJoin(cmd int, arg2 string) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg2)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlSearch(cmd int, arg2 int, arg3 string, arg4 string, arg5 int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg3)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(arg4)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(arg5), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlIOV(cmd int, arg2 int, payload []Iovec, arg5 int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p0 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(_p0), uintptr(len(payload)), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlDH(cmd int, arg2 *KeyctlDHParams, buf []byte) (ret int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(unsafe.Pointer(arg2)), uintptr(_p0), uintptr(len(buf)), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyringByType(cmd int, arg2 int, keyType string, restriction string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(restriction)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc keyctlRestrictKeyring(cmd int, arg2 int) (err error) {\n\t_, _, e1 := Syscall(SYS_KEYCTL, uintptr(cmd), uintptr(arg2), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptrace(request int, pid int, addr uintptr, data uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ptracePtr(request int, pid int, addr uintptr, data unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall6(SYS_PTRACE, uintptr(request), uintptr(pid), uintptr(addr), uintptr(data), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc reboot(magic1 uint, magic2 uint, cmd int, arg string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(arg)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_REBOOT, uintptr(magic1), uintptr(magic2), uintptr(cmd), uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mount(source string, target string, fstype string, flags uintptr, data *byte) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(source)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(flags), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mountSetattr(dirfd int, pathname string, flags uint, attr *MountAttr, size uintptr) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOUNT_SETATTR, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(unsafe.Pointer(attr)), uintptr(size), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Acct(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc AddKey(keyType string, description string, payload []byte, ringid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(payload) > 0 {\n\t\t_p2 = unsafe.Pointer(&payload[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_ADD_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(payload)), uintptr(ringid), 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtimex(buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_ADJTIMEX, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capget(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPGET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Capset(hdr *CapUserHeader, data *CapUserData) (err error) {\n\t_, _, e1 := RawSyscall(SYS_CAPSET, uintptr(unsafe.Pointer(hdr)), uintptr(unsafe.Pointer(data)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockAdjtime(clockid int32, buf *Timex) (state int, err error) {\n\tr0, _, e1 := Syscall(SYS_CLOCK_ADJTIME, uintptr(clockid), uintptr(unsafe.Pointer(buf)), 0)\n\tstate = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGetres(clockid int32, res *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETRES, uintptr(clockid), uintptr(unsafe.Pointer(res)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockNanosleep(clockid int32, flags int, request *Timespec, remain *Timespec) (err error) {\n\t_, _, e1 := Syscall6(SYS_CLOCK_NANOSLEEP, uintptr(clockid), uintptr(flags), uintptr(unsafe.Pointer(request)), uintptr(unsafe.Pointer(remain)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CloseRange(first uint, last uint, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE_RANGE, uintptr(first), uintptr(last), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc CopyFileRange(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_COPY_FILE_RANGE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc DeleteModule(name string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_DELETE_MODULE, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(oldfd), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(oldfd int, newfd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(oldfd), uintptr(newfd), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCreate1(flag int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_EPOLL_CREATE1, uintptr(flag), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollCtl(epfd int, op int, fd int, event *EpollEvent) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_EPOLL_CTL, uintptr(epfd), uintptr(op), uintptr(fd), uintptr(unsafe.Pointer(event)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Eventfd(initval uint, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_EVENTFD2, uintptr(initval), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscallNoError(SYS_EXIT_GROUP, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FDATASYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fgetxattr(fd int, attr string, dest []byte) (sz int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_FGETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), 0, 0)\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc FinitModule(fd int, params string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(params)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FINIT_MODULE, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flistxattr(fd int, dest []byte) (sz int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p0 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_FLISTXATTR, uintptr(fd), uintptr(_p0), uintptr(len(dest)))\n\tsz = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fremovexattr(fd int, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FREMOVEXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsetxattr(fd int, attr string, dest []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(dest) > 0 {\n\t\t_p1 = unsafe.Pointer(&dest[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_FSETXATTR, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(dest)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsmount(fd int, flags int, mountAttrs int) (fsfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_FSMOUNT, uintptr(fd), uintptr(flags), uintptr(mountAttrs))\n\tfsfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsopen(fsName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fsName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSOPEN, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fspick(dirfd int, pathName string, flags int) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_FSPICK, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fsconfig(fd int, cmd uint, key *byte, value *byte, aux int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FSCONFIG, uintptr(fd), uintptr(cmd), uintptr(unsafe.Pointer(key)), uintptr(unsafe.Pointer(value)), uintptr(aux), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS64, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc 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 MoveMount(fromDirfd int, fromPathName string, toDirfd int, toPathName string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fromPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(toPathName)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MOVE_MOUNT, uintptr(fromDirfd), uintptr(unsafe.Pointer(_p0)), uintptr(toDirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc OpenTree(dfd int, fileName string, flags uint) (r int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(fileName)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN_TREE, uintptr(dfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tr = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PerfEventOpen(attr *PerfEventAttr, pid int, cpu int, groupFd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PERF_EVENT_OPEN, uintptr(unsafe.Pointer(attr)), uintptr(pid), uintptr(cpu), uintptr(groupFd), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PivotRoot(newroot string, putold string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(newroot)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(putold)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_PIVOT_ROOT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Prctl(option int, arg2 uintptr, arg3 uintptr, arg4 uintptr, arg5 uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_PRCTL, uintptr(option), uintptr(arg2), uintptr(arg3), uintptr(arg4), uintptr(arg5), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pselect6(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timespec, sigmask *sigset_argpack) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_PSELECT6, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Removexattr(path string, attr string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REMOVEXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat2(olddirfd int, oldpath string, newdirfd int, newpath string, flags uint) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT2, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc RequestKey(keyType string, description string, callback string, destRingid int) (id int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(keyType)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(description)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(callback)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_REQUEST_KEY, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(destRingid), 0, 0)\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setdomainname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETDOMAINNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_SETHOSTNAME, uintptr(_p0), uintptr(len(p)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setns(fd int, nstype int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETNS, uintptr(fd), uintptr(nstype), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setxattr(path string, attr string, data []byte, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attr)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 unsafe.Pointer\n\tif len(data) > 0 {\n\t\t_p2 = unsafe.Pointer(&data[0])\n\t} else {\n\t\t_p2 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SETXATTR, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(_p2), uintptr(len(data)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc signalfd(fd int, sigmask *Sigset_t, maskSize uintptr, flags int) (newfd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SIGNALFD4, uintptr(fd), uintptr(unsafe.Pointer(sigmask)), uintptr(maskSize), uintptr(flags), 0, 0)\n\tnewfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statx(dirfd int, path string, flags int, mask int, stat *Statx_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_STATX, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mask), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() {\n\tSyscallNoError(SYS_SYNC, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Syncfs(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_SYNCFS, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysinfo(info *Sysinfo_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SYSINFO, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdCreate(clockid int, flags int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMERFD_CREATE, uintptr(clockid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdGettime(fd int, currValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TIMERFD_GETTIME, uintptr(fd), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc TimerfdSettime(fd int, flags int, newValue *ItimerSpec, oldValue *ItimerSpec) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_TIMERFD_SETTIME, uintptr(fd), uintptr(flags), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tgkill(tgid int, tid int, sig syscall.Signal) (err error) {\n\t_, _, e1 := RawSyscall(SYS_TGKILL, uintptr(tgid), uintptr(tid), uintptr(sig))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIMES, uintptr(unsafe.Pointer(tms)), 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _ := RawSyscallNoError(SYS_UMASK, uintptr(mask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UNAME, uintptr(unsafe.Pointer(buf)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UMOUNT2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unshare(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_UNSHARE, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc exitThread(code int) (err error) {\n\t_, _, e1 := Syscall(SYS_EXIT, uintptr(code), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc readv(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc writev(fd int, iovs []Iovec) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc preadv2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREADV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwritev2(fd int, iovs []Iovec, offs_l uintptr, offs_h uintptr, flags int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(iovs) > 0 {\n\t\t_p0 = unsafe.Pointer(&iovs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITEV2, uintptr(fd), uintptr(_p0), uintptr(len(iovs)), uintptr(offs_l), uintptr(offs_h), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremap(oldaddr uintptr, oldlength uintptr, newlength uintptr, flags int, newaddr uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldaddr), uintptr(oldlength), uintptr(newlength), uintptr(flags), uintptr(newaddr), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc faccessat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat2(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT2, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc nameToHandleAt(dirFD int, pathname string, fh *fileHandle, mountID *_C_int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(pathname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NAME_TO_HANDLE_AT, uintptr(dirFD), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(fh)), uintptr(unsafe.Pointer(mountID)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc openByHandleAt(mountFD int, fh *fileHandle, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_OPEN_BY_HANDLE_AT, uintptr(mountFD), uintptr(unsafe.Pointer(fh)), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMReadv(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_READV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ProcessVMWritev(pid int, localIov []Iovec, remoteIov []RemoteIovec, flags uint) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(localIov) > 0 {\n\t\t_p0 = unsafe.Pointer(&localIov[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(remoteIov) > 0 {\n\t\t_p1 = unsafe.Pointer(&remoteIov[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PROCESS_VM_WRITEV, uintptr(pid), uintptr(_p0), uintptr(len(localIov)), uintptr(_p1), uintptr(len(remoteIov)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdOpen(pid int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_OPEN, uintptr(pid), uintptr(flags), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdGetfd(pidfd int, targetfd int, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_PIDFD_GETFD, uintptr(pidfd), uintptr(targetfd), uintptr(flags))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc PidfdSendSignal(pidfd int, sig Signal, info *Siginfo, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_PIDFD_SEND_SIGNAL, uintptr(pidfd), uintptr(sig), uintptr(unsafe.Pointer(info)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmat(id int, addr uintptr, flag int) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMAT, uintptr(id), uintptr(addr), uintptr(flag))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmctl(id int, cmd int, buf *SysvShmDesc) (result int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMCTL, uintptr(id), uintptr(cmd), uintptr(unsafe.Pointer(buf)))\n\tresult = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmdt(addr uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_SHMDT, uintptr(addr), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc shmget(key int, size int, flag int) (id int, err error) {\n\tr0, _, e1 := Syscall(SYS_SHMGET, uintptr(key), uintptr(size), uintptr(flag))\n\tid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getitimer(which int, currValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_GETITIMER, uintptr(which), uintptr(unsafe.Pointer(currValue)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setitimer(which int, newValue *Itimerval, oldValue *Itimerval) (err error) {\n\t_, _, e1 := Syscall(SYS_SETITIMER, uintptr(which), uintptr(unsafe.Pointer(newValue)), uintptr(unsafe.Pointer(oldValue)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc rtSigprocmask(how int, set *Sigset_t, oldset *Sigset_t, sigsetsize uintptr) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_RT_SIGPROCMASK, uintptr(how), uintptr(unsafe.Pointer(set)), uintptr(unsafe.Pointer(oldset)), uintptr(sigsetsize), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESUID, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tRawSyscallNoError(SYS_GETRESGID, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedSetattr(pid int, attr *SchedAttr, flags uint) (err error) {\n\t_, _, e1 := Syscall(SYS_SCHED_SETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc schedGetattr(pid int, attr *SchedAttr, size uint, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_SCHED_GETATTR, uintptr(pid), uintptr(unsafe.Pointer(attr)), uintptr(size), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Cachestat(fd uint, crange *CachestatRange, cstat *Cachestat_t, flags uint) (err error) {\n\t_, _, e1 := Syscall6(SYS_CACHESTAT, uintptr(fd), uintptr(unsafe.Pointer(crange)), uintptr(unsafe.Pointer(cstat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_386.go",
    "content": "// go run mksyscall.go -l32 -tags linux,386 syscall_linux.go syscall_linux_386.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64_64, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_amd64.go",
    "content": "// go run mksyscall.go -tags linux,amd64 syscall_linux.go syscall_linux_amd64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_arm.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,arm syscall_linux.go syscall_linux_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS32, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, flags int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(flags), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN32, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID32, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID32, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID32, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID32, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN32, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID32, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID32, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc armSyncFileRange(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_ARM_SYNC_FILE_RANGE, uintptr(fd), uintptr(flags), uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_arm64.go",
    "content": "// go run mksyscall.go -tags linux,arm64 syscall_linux.go syscall_linux_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_loong64.go",
    "content": "// go run mksyscall.go -tags linux,loong64 syscall_linux.go syscall_linux_loong64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && loong64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_mips.go",
    "content": "// go run mksyscall.go -b32 -arm -tags linux,mips syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset>>32), uintptr(offset), uintptr(length>>32), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset>>32), uintptr(offset))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length>>32), uintptr(length), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_mips64.go",
    "content": "// go run mksyscall.go -tags linux,mips64 syscall_linux.go syscall_linux_mips64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_mips64le.go",
    "content": "// go run mksyscall.go -tags linux,mips64le syscall_linux.go syscall_linux_mips64x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mips64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstat(fd int, st *stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fstatat(dirfd int, path string, st *stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc lstat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc stat(path string, st *stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(st)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_mipsle.go",
    "content": "// go run mksyscall.go -l32 -arm -tags linux,mipsle syscall_linux.go syscall_linux_mipsx.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && mipsle\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(mask>>32), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(off>>32), uintptr(len), uintptr(len>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_FADVISE64, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(length), uintptr(length>>32), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE64, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall9(SYS_SYNC_FILE_RANGE, uintptr(fd), 0, uintptr(off), uintptr(off>>32), uintptr(n), uintptr(n>>32), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_ppc.go",
    "content": "// go run mksyscall.go -b32 -tags linux,ppc syscall_linux.go syscall_linux_ppc.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask>>32), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off>>32), uintptr(off), uintptr(len>>32), uintptr(len))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(int64(r0)<<32 | int64(r1))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT64, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE64, uintptr(fd), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset>>32), uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE64, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT64, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE64, uintptr(unsafe.Pointer(_p0)), uintptr(length>>32), uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap2(addr uintptr, length uintptr, prot int, flags int, fd int, pageOffset uintptr) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP2, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(pageOffset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getrlimit(resource int, rlim *rlimit32) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off>>32), uintptr(off), uintptr(n>>32), uintptr(n))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_ppc64.go",
    "content": "// go run mksyscall.go -tags linux,ppc64 syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_ppc64le.go",
    "content": "// go run mksyscall.go -tags linux,ppc64le syscall_linux.go syscall_linux_ppc64x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && ppc64le\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_UGETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ioperm(from int, num int, on int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPERM, uintptr(from), uintptr(num), uintptr(on))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Iopl(level int) (err error) {\n\t_, _, e1 := Syscall(SYS_IOPL, uintptr(level), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS__NEWSELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Time(t *Time_t) (tt Time_t, err error) {\n\tr0, _, e1 := RawSyscall(SYS_TIME, uintptr(unsafe.Pointer(t)), 0, 0)\n\ttt = Time_t(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc syncFileRange2(fd int, flags int, off int64, n int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE2, uintptr(fd), uintptr(flags), uintptr(off), uintptr(n), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_riscv64.go",
    "content": "// go run mksyscall.go -tags linux,riscv64 syscall_linux.go syscall_linux_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_PWAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc MemfdSecret(flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_MEMFD_SECRET, uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc riscvHWProbe(pairs []RISCVHWProbePairs, cpuCount uintptr, cpus *CPUSet, flags uint) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(pairs) > 0 {\n\t\t_p0 = unsafe.Pointer(&pairs[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_RISCV_HWPROBE, uintptr(_p0), uintptr(len(pairs)), uintptr(cpuCount), uintptr(unsafe.Pointer(cpus)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_s390x.go",
    "content": "// go run mksyscall.go -tags linux,s390x syscall_linux.go syscall_linux_s390x.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && s390x\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_NEWFSTATAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_USTAT, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kexecFileLoad(kernelFd int, initrdFd int, cmdlineLen int, cmdline string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(cmdline)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_KEXEC_FILE_LOAD, uintptr(kernelFd), uintptr(initrdFd), uintptr(cmdlineLen), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_linux_sparc64.go",
    "content": "// go run mksyscall.go -tags linux,sparc64 syscall_linux.go syscall_linux_sparc64.go syscall_linux_alarm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build linux && sparc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fanotifyMark(fd int, flags uint, mask uint64, dirFd int, pathname *byte) (err error) {\n\t_, _, e1 := Syscall6(SYS_FANOTIFY_MARK, uintptr(fd), uintptr(flags), uintptr(mask), uintptr(dirFd), uintptr(unsafe.Pointer(pathname)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fallocate(fd int, mode uint32, off int64, len int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FALLOCATE, uintptr(fd), uintptr(mode), uintptr(off), uintptr(len), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tee(rfd int, wfd int, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_TEE, uintptr(rfd), uintptr(wfd), uintptr(len), uintptr(flags), 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc EpollWait(epfd int, events []EpollEvent, msec int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(events) > 0 {\n\t\t_p0 = unsafe.Pointer(&events[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_EPOLL_WAIT, uintptr(epfd), uintptr(_p0), uintptr(len(events)), uintptr(msec), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_FADVISE64, uintptr(fd), uintptr(offset), uintptr(length), uintptr(advice), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(dirfd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT64, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, buf *Statfs_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATFS, uintptr(fd), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETEUID, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(resource), uintptr(unsafe.Pointer(rlim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _ := RawSyscallNoError(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, n int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(n), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := Syscall(SYS_PAUSE, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE64, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (off int64, err error) {\n\tr0, _, e1 := Syscall(SYS_LSEEK, uintptr(fd), uintptr(offset), uintptr(whence))\n\toff = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SENDFILE, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsgid(gid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSGID, uintptr(gid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setfsuid(uid int) (prev int, err error) {\n\tr0, _, e1 := Syscall(SYS_SETFSUID, uintptr(uid), 0, 0)\n\tprev = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Splice(rfd int, roff *int64, wfd int, woff *int64, len int, flags int) (n int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_SPLICE, uintptr(rfd), uintptr(unsafe.Pointer(roff)), uintptr(wfd), uintptr(unsafe.Pointer(woff)), uintptr(len), uintptr(flags))\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, buf *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATFS, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc SyncFileRange(fd int, off int64, n int64, flags int) (err error) {\n\t_, _, e1 := Syscall6(SYS_SYNC_FILE_RANGE, uintptr(fd), uintptr(off), uintptr(n), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept4(s int, rsa *RawSockaddrAny, addrlen *_Socklen, flags int) (fd int, err error) {\n\tr0, _, e1 := Syscall6(SYS_ACCEPT4, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), uintptr(flags), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(n int, list *_Gid_t) (nn int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tnn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(n int, list *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(n), uintptr(unsafe.Pointer(list)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flags int, fd int, offset int64) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flags), uintptr(fd), uintptr(offset))\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(dirfd int, path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_FUTIMESAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Alarm(seconds uint) (remaining uint, err error) {\n\tr0, _, e1 := Syscall(SYS_ALARM, uintptr(seconds), 0, 0)\n\tremaining = uint(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_netbsd_386.go",
    "content": "// go run mksyscall.go -l32 -netbsd -tags netbsd,386 syscall_bsd.go syscall_netbsd.go syscall_netbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_netbsd_amd64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,amd64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_netbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -netbsd -arm -tags netbsd,arm syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall9(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), 0, uintptr(length), uintptr(length>>32), uintptr(advice), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall6(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_netbsd_arm64.go",
    "content": "// go run mksyscall.go -netbsd -tags netbsd,arm64 syscall_bsd.go syscall_netbsd.go syscall_netbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build netbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGROUPS, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := Syscall6(SYS_WAIT4, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_ACCEPT, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_BIND, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := Syscall(SYS_CONNECT, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SOCKET, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := Syscall6(SYS_GETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := Syscall6(SYS_SETSOCKOPT, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETPEERNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETSOCKNAME, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_SHUTDOWN, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := RawSyscall6(SYS_SOCKETPAIR, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_RECVFROM, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS_SENDTO, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_RECVMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_SENDMSG, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_KEVENT, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UTIMES, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_FUTIMES, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := Syscall(SYS_POLL, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MADVISE, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_MLOCKALL, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MPROTECT, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MSYNC, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall(SYS_MUNLOCK, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := Syscall(SYS_MUNLOCKALL, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_PIPE2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_GETDENTS, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS___GETCWD, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := Syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := Syscall6(SYS___SYSCTL, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_ACCESS, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := Syscall(SYS_ADJTIME, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHFLAGS, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHMOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_CHROOT, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOCK_GETTIME, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_CLOSE, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := Syscall(SYS_DUP, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP2, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_DUP3, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tSyscall(SYS_EXIT, uintptr(code), 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFd(fd int, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFd(fd int, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FD, uintptr(fd), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p0)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFd(fd int, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FD, uintptr(fd), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetFile(file string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteFile(file string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListFile(file string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(file)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_FILE, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrGetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_GET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrSetLink(link string, attrnamespace int, attrname string, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_SET_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)), uintptr(data), uintptr(nbytes), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrDeleteLink(link string, attrnamespace int, attrname string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(attrname)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_EXTATTR_DELETE_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ExtattrListLink(link string, attrnamespace int, data uintptr, nbytes int) (ret int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_EXTATTR_LIST_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(attrnamespace), uintptr(data), uintptr(nbytes), 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FACCESSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fadvise(fd int, offset int64, length int64, advice int) (err error) {\n\t_, _, e1 := Syscall6(SYS_POSIX_FADVISE, uintptr(fd), 0, uintptr(offset), 0, uintptr(length), uintptr(advice))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHDIR, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHFLAGS, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHMOD, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHMODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := Syscall(SYS_FCHOWN, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FCHOWNAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := Syscall(SYS_FLOCK, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := Syscall(SYS_FPATHCONF, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTAT, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_FSTATAT, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs1(fd int, buf *Statvfs_t, flags int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSTATVFS1, uintptr(fd), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := Syscall(SYS_FSYNC, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := Syscall(SYS_FTRUNCATE, uintptr(fd), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEGID, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETEUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := RawSyscall(SYS_GETGID, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETPGID, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := RawSyscall(SYS_GETPGRP, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPID, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := RawSyscall(SYS_GETPPID, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := Syscall(SYS_GETPRIORITY, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRLIMIT, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETRUSAGE, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_GETSID, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_GETTIMEOFDAY, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := RawSyscall(SYS_GETUID, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := Syscall(SYS_ISSETUGID, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := Syscall(SYS_KILL, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := Syscall(SYS_KQUEUE, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LCHOWN, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_LINKAT, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := Syscall(SYS_LISTEN, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_LSTAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIR, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKDIRAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFO, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKFIFOAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_MKNOD, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_MKNODAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := Syscall(SYS_NANOSLEEP, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_OPEN, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall6(SYS_OPENAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := Syscall(SYS_PATHCONF, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PREAD, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_PWRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READ, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_READLINK, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall6(SYS_READLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RENAME, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_RENAMEAT, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_REVOKE, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_RMDIR, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := Syscall6(SYS_LSEEK, uintptr(fd), 0, uintptr(offset), uintptr(whence), 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := Syscall6(SYS_SELECT, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEGID, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETEUID, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETGID, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETPGID, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := Syscall(SYS_SETPRIORITY, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREGID, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := RawSyscall(SYS_SETSID, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETTIMEOFDAY, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := RawSyscall(SYS_SETUID, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STAT, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs1(path string, buf *Statvfs_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_STATVFS1, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINK, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_SYMLINKAT, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := Syscall(SYS_SYNC, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_TRUNCATE, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := Syscall(SYS_UMASK, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINK, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNLINKAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall(SYS_UNMOUNT, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := Syscall(SYS_WRITE, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := Syscall9(SYS_MMAP, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := Syscall(SYS_MUNMAP, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := Syscall6(SYS_UTIMENSAT, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mremapNetBSD(oldp uintptr, oldsize uintptr, newp uintptr, newsize uintptr, flags int) (xaddr uintptr, err error) {\n\tr0, _, e1 := Syscall6(SYS_MREMAP, uintptr(oldp), uintptr(oldsize), uintptr(newp), uintptr(newsize), uintptr(flags), 0)\n\txaddr = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_386.go",
    "content": "// go run mksyscall.go -l32 -openbsd -libc -tags openbsd,386 syscall_bsd.go syscall_openbsd.go syscall_openbsd_386.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && 386\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), uintptr(offset>>32), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(offset>>32), uintptr(whence), 0, 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), uintptr(length>>32))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos), uintptr(pos>>32), 0, 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_386.s",
    "content": "// go run mkasm.go openbsd 386\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_amd64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,amd64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_amd64.s",
    "content": "// go run mkasm.go openbsd amd64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_arm.go",
    "content": "// go run mksyscall.go -l32 -openbsd -arm -libc -tags openbsd,arm syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_ftruncate_trampoline_addr, uintptr(fd), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), 0, uintptr(offset), uintptr(offset>>32))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, r1, e1 := syscall_syscall6(libc_lseek_trampoline_addr, uintptr(fd), 0, uintptr(offset), uintptr(offset>>32), uintptr(whence), 0)\n\tnewoffset = int64(int64(r1)<<32 | int64(r0))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, uintptr(length), uintptr(length>>32), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall9(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), 0, uintptr(pos), uintptr(pos>>32), 0)\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_arm.s",
    "content": "// go run mkasm.go openbsd arm\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgroups_trampoline_addr(SB)/4, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgroups_trampoline_addr(SB)/4, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_wait4_trampoline_addr(SB)/4, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_accept_trampoline_addr(SB)/4, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_bind_trampoline_addr(SB)/4, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_connect_trampoline_addr(SB)/4, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socket_trampoline_addr(SB)/4, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockopt_trampoline_addr(SB)/4, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsockopt_trampoline_addr(SB)/4, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpeername_trampoline_addr(SB)/4, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsockname_trampoline_addr(SB)/4, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_shutdown_trampoline_addr(SB)/4, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_socketpair_trampoline_addr(SB)/4, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvfrom_trampoline_addr(SB)/4, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendto_trampoline_addr(SB)/4, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_recvmsg_trampoline_addr(SB)/4, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sendmsg_trampoline_addr(SB)/4, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kevent_trampoline_addr(SB)/4, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimes_trampoline_addr(SB)/4, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_futimes_trampoline_addr(SB)/4, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_poll_trampoline_addr(SB)/4, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_madvise_trampoline_addr(SB)/4, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlock_trampoline_addr(SB)/4, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mlockall_trampoline_addr(SB)/4, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mprotect_trampoline_addr(SB)/4, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_msync_trampoline_addr(SB)/4, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlock_trampoline_addr(SB)/4, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munlockall_trampoline_addr(SB)/4, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pipe2_trampoline_addr(SB)/4, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getdents_trampoline_addr(SB)/4, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getcwd_trampoline_addr(SB)/4, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresuid_trampoline_addr(SB)/4, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getresgid_trampoline_addr(SB)/4, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ioctl_trampoline_addr(SB)/4, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sysctl_trampoline_addr(SB)/4, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fcntl_trampoline_addr(SB)/4, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ppoll_trampoline_addr(SB)/4, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_access_trampoline_addr(SB)/4, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_adjtime_trampoline_addr(SB)/4, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chdir_trampoline_addr(SB)/4, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chflags_trampoline_addr(SB)/4, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chmod_trampoline_addr(SB)/4, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chown_trampoline_addr(SB)/4, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_chroot_trampoline_addr(SB)/4, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/4, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_close_trampoline_addr(SB)/4, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup_trampoline_addr(SB)/4, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup2_trampoline_addr(SB)/4, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_dup3_trampoline_addr(SB)/4, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_exit_trampoline_addr(SB)/4, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_faccessat_trampoline_addr(SB)/4, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchdir_trampoline_addr(SB)/4, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchflags_trampoline_addr(SB)/4, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmod_trampoline_addr(SB)/4, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchmodat_trampoline_addr(SB)/4, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchown_trampoline_addr(SB)/4, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fchownat_trampoline_addr(SB)/4, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_flock_trampoline_addr(SB)/4, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fpathconf_trampoline_addr(SB)/4, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstat_trampoline_addr(SB)/4, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatat_trampoline_addr(SB)/4, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fstatfs_trampoline_addr(SB)/4, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_fsync_trampoline_addr(SB)/4, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_ftruncate_trampoline_addr(SB)/4, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getegid_trampoline_addr(SB)/4, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_geteuid_trampoline_addr(SB)/4, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getgid_trampoline_addr(SB)/4, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgid_trampoline_addr(SB)/4, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpgrp_trampoline_addr(SB)/4, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpid_trampoline_addr(SB)/4, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getppid_trampoline_addr(SB)/4, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getpriority_trampoline_addr(SB)/4, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrlimit_trampoline_addr(SB)/4, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrtable_trampoline_addr(SB)/4, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getrusage_trampoline_addr(SB)/4, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getsid_trampoline_addr(SB)/4, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/4, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getuid_trampoline_addr(SB)/4, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_issetugid_trampoline_addr(SB)/4, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kill_trampoline_addr(SB)/4, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_kqueue_trampoline_addr(SB)/4, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lchown_trampoline_addr(SB)/4, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_link_trampoline_addr(SB)/4, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_linkat_trampoline_addr(SB)/4, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_listen_trampoline_addr(SB)/4, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lstat_trampoline_addr(SB)/4, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdir_trampoline_addr(SB)/4, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkdirat_trampoline_addr(SB)/4, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifo_trampoline_addr(SB)/4, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/4, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknod_trampoline_addr(SB)/4, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mknodat_trampoline_addr(SB)/4, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_nanosleep_trampoline_addr(SB)/4, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_open_trampoline_addr(SB)/4, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_openat_trampoline_addr(SB)/4, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pathconf_trampoline_addr(SB)/4, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pread_trampoline_addr(SB)/4, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pwrite_trampoline_addr(SB)/4, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_read_trampoline_addr(SB)/4, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlink_trampoline_addr(SB)/4, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_readlinkat_trampoline_addr(SB)/4, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rename_trampoline_addr(SB)/4, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_renameat_trampoline_addr(SB)/4, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_revoke_trampoline_addr(SB)/4, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_rmdir_trampoline_addr(SB)/4, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_lseek_trampoline_addr(SB)/4, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_select_trampoline_addr(SB)/4, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setegid_trampoline_addr(SB)/4, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_seteuid_trampoline_addr(SB)/4, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setgid_trampoline_addr(SB)/4, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setlogin_trampoline_addr(SB)/4, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpgid_trampoline_addr(SB)/4, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setpriority_trampoline_addr(SB)/4, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setregid_trampoline_addr(SB)/4, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setreuid_trampoline_addr(SB)/4, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresgid_trampoline_addr(SB)/4, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setresuid_trampoline_addr(SB)/4, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setrtable_trampoline_addr(SB)/4, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setsid_trampoline_addr(SB)/4, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_settimeofday_trampoline_addr(SB)/4, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_setuid_trampoline_addr(SB)/4, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_stat_trampoline_addr(SB)/4, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_statfs_trampoline_addr(SB)/4, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlink_trampoline_addr(SB)/4, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_symlinkat_trampoline_addr(SB)/4, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_sync_trampoline_addr(SB)/4, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_truncate_trampoline_addr(SB)/4, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_umask_trampoline_addr(SB)/4, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlink_trampoline_addr(SB)/4, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unlinkat_trampoline_addr(SB)/4, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unmount_trampoline_addr(SB)/4, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_write_trampoline_addr(SB)/4, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_mmap_trampoline_addr(SB)/4, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_munmap_trampoline_addr(SB)/4, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_getfsstat_trampoline_addr(SB)/4, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_utimensat_trampoline_addr(SB)/4, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_pledge_trampoline_addr(SB)/4, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $4\nDATA\t·libc_unveil_trampoline_addr(SB)/4, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_arm64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,arm64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_arm64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && arm64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_arm64.s",
    "content": "// go run mkasm.go openbsd arm64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_mips64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,mips64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_mips64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && mips64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_mips64.s",
    "content": "// go run mkasm.go openbsd mips64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_ppc64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,ppc64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_ppc64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && ppc64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_ppc64.s",
    "content": "// go run mkasm.go openbsd ppc64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgroups(SB)\n\tRET\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgroups(SB)\n\tRET\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_wait4(SB)\n\tRET\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_accept(SB)\n\tRET\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_bind(SB)\n\tRET\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_connect(SB)\n\tRET\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socket(SB)\n\tRET\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockopt(SB)\n\tRET\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsockopt(SB)\n\tRET\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpeername(SB)\n\tRET\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsockname(SB)\n\tRET\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_shutdown(SB)\n\tRET\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_socketpair(SB)\n\tRET\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvfrom(SB)\n\tRET\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendto(SB)\n\tRET\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_recvmsg(SB)\n\tRET\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sendmsg(SB)\n\tRET\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kevent(SB)\n\tRET\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimes(SB)\n\tRET\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_futimes(SB)\n\tRET\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_poll(SB)\n\tRET\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_madvise(SB)\n\tRET\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlock(SB)\n\tRET\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mlockall(SB)\n\tRET\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mprotect(SB)\n\tRET\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_msync(SB)\n\tRET\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlock(SB)\n\tRET\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munlockall(SB)\n\tRET\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pipe2(SB)\n\tRET\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getdents(SB)\n\tRET\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getcwd(SB)\n\tRET\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresuid(SB)\n\tRET\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getresgid(SB)\n\tRET\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ioctl(SB)\n\tRET\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sysctl(SB)\n\tRET\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fcntl(SB)\n\tRET\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ppoll(SB)\n\tRET\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_access(SB)\n\tRET\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_adjtime(SB)\n\tRET\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chdir(SB)\n\tRET\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chflags(SB)\n\tRET\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chmod(SB)\n\tRET\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chown(SB)\n\tRET\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_chroot(SB)\n\tRET\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_clock_gettime(SB)\n\tRET\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_close(SB)\n\tRET\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup(SB)\n\tRET\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup2(SB)\n\tRET\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_dup3(SB)\n\tRET\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_exit(SB)\n\tRET\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_faccessat(SB)\n\tRET\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchdir(SB)\n\tRET\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchflags(SB)\n\tRET\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmod(SB)\n\tRET\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchmodat(SB)\n\tRET\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchown(SB)\n\tRET\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fchownat(SB)\n\tRET\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_flock(SB)\n\tRET\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fpathconf(SB)\n\tRET\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstat(SB)\n\tRET\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatat(SB)\n\tRET\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fstatfs(SB)\n\tRET\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_fsync(SB)\n\tRET\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_ftruncate(SB)\n\tRET\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getegid(SB)\n\tRET\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_geteuid(SB)\n\tRET\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getgid(SB)\n\tRET\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgid(SB)\n\tRET\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpgrp(SB)\n\tRET\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpid(SB)\n\tRET\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getppid(SB)\n\tRET\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getpriority(SB)\n\tRET\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrlimit(SB)\n\tRET\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrtable(SB)\n\tRET\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getrusage(SB)\n\tRET\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getsid(SB)\n\tRET\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_gettimeofday(SB)\n\tRET\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getuid(SB)\n\tRET\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_issetugid(SB)\n\tRET\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kill(SB)\n\tRET\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_kqueue(SB)\n\tRET\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lchown(SB)\n\tRET\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_link(SB)\n\tRET\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_linkat(SB)\n\tRET\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_listen(SB)\n\tRET\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lstat(SB)\n\tRET\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdir(SB)\n\tRET\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkdirat(SB)\n\tRET\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifo(SB)\n\tRET\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mkfifoat(SB)\n\tRET\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknod(SB)\n\tRET\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mknodat(SB)\n\tRET\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_nanosleep(SB)\n\tRET\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_open(SB)\n\tRET\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_openat(SB)\n\tRET\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pathconf(SB)\n\tRET\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pread(SB)\n\tRET\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pwrite(SB)\n\tRET\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_read(SB)\n\tRET\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlink(SB)\n\tRET\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_readlinkat(SB)\n\tRET\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rename(SB)\n\tRET\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_renameat(SB)\n\tRET\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_revoke(SB)\n\tRET\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_rmdir(SB)\n\tRET\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_lseek(SB)\n\tRET\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_select(SB)\n\tRET\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setegid(SB)\n\tRET\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_seteuid(SB)\n\tRET\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setgid(SB)\n\tRET\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setlogin(SB)\n\tRET\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpgid(SB)\n\tRET\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setpriority(SB)\n\tRET\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setregid(SB)\n\tRET\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setreuid(SB)\n\tRET\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresgid(SB)\n\tRET\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setresuid(SB)\n\tRET\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setrtable(SB)\n\tRET\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setsid(SB)\n\tRET\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_settimeofday(SB)\n\tRET\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_setuid(SB)\n\tRET\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_stat(SB)\n\tRET\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_statfs(SB)\n\tRET\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlink(SB)\n\tRET\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_symlinkat(SB)\n\tRET\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_sync(SB)\n\tRET\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_truncate(SB)\n\tRET\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_umask(SB)\n\tRET\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlink(SB)\n\tRET\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unlinkat(SB)\n\tRET\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unmount(SB)\n\tRET\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_write(SB)\n\tRET\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_mmap(SB)\n\tRET\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_munmap(SB)\n\tRET\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_getfsstat(SB)\n\tRET\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_utimensat(SB)\n\tRET\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_pledge(SB)\n\tRET\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tCALL\tlibc_unveil(SB)\n\tRET\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_riscv64.go",
    "content": "// go run mksyscall.go -openbsd -libc -tags openbsd,riscv64 syscall_bsd.go syscall_openbsd.go syscall_openbsd_riscv64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build openbsd && riscv64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ syscall.Errno\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgroups_trampoline_addr, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgroups_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int, wstatus *_C_int, options int, rusage *Rusage) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_wait4_trampoline_addr, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_wait4_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_accept_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_accept_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_accept accept \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_bind_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_bind_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_bind bind \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := syscall_syscall(libc_connect_trampoline_addr, uintptr(s), uintptr(addr), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_connect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_connect connect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_socket_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socket_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socket socket \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_getsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockopt getsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := syscall_syscall6(libc_setsockopt_trampoline_addr, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsockopt_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getpeername_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpeername_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpeername getpeername \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getsockname_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsockname_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsockname getsockname \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_shutdown_trampoline_addr, uintptr(s), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_shutdown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_shutdown shutdown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := syscall_rawSyscall6(libc_socketpair_trampoline_addr, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_socketpair_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_socketpair socketpair \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_recvfrom_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvfrom_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sendto_trampoline_addr, uintptr(s), uintptr(_p0), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendto_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendto sendto \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_recvmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_recvmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_recvmsg recvmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_sendmsg_trampoline_addr, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sendmsg_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sendmsg sendmsg \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc kevent(kq int, change unsafe.Pointer, nchange int, event unsafe.Pointer, nevent int, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_kevent_trampoline_addr, uintptr(kq), uintptr(change), uintptr(nchange), uintptr(event), uintptr(nevent), uintptr(unsafe.Pointer(timeout)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kevent_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kevent kevent \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, timeval *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_utimes_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimes(fd int, timeval *[2]Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_futimes_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(timeval)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_futimes_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_futimes futimes \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_poll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_poll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, behav int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_madvise_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(behav))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_madvise_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_madvise madvise \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlock mlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_mlockall_trampoline_addr, uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mlockall mlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_mprotect_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(prot))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mprotect_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mprotect mprotect \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_msync_trampoline_addr, uintptr(_p0), uintptr(len(b)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_msync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_msync msync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(b) > 0 {\n\t\t_p0 = unsafe.Pointer(&b[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(libc_munlock_trampoline_addr, uintptr(_p0), uintptr(len(b)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlock munlock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := syscall_syscall(libc_munlockall_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munlockall_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munlockall munlockall \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_pipe2_trampoline_addr, uintptr(unsafe.Pointer(p)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pipe2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getdents_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getdents_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_getcwd_trampoline_addr, uintptr(_p0), uintptr(len(buf)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getcwd_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresuid(ruid *_C_int, euid *_C_int, suid *_C_int) {\n\tsyscall_rawSyscall(libc_getresuid_trampoline_addr, uintptr(unsafe.Pointer(ruid)), uintptr(unsafe.Pointer(euid)), uintptr(unsafe.Pointer(suid)))\n\treturn\n}\n\nvar libc_getresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresuid getresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getresgid(rgid *_C_int, egid *_C_int, sgid *_C_int) {\n\tsyscall_rawSyscall(libc_getresgid_trampoline_addr, uintptr(unsafe.Pointer(rgid)), uintptr(unsafe.Pointer(egid)), uintptr(unsafe.Pointer(sgid)))\n\treturn\n}\n\nvar libc_getresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getresgid getresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctl(fd int, req uint, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ioctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req uint, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ioctl_trampoline_addr, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sysctl(mib []_C_int, old *byte, oldlen *uintptr, new *byte, newlen uintptr) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(mib) > 0 {\n\t\t_p0 = unsafe.Pointer(&mib[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall6(libc_sysctl_trampoline_addr, uintptr(_p0), uintptr(len(mib)), uintptr(unsafe.Pointer(old)), uintptr(unsafe.Pointer(oldlen)), uintptr(unsafe.Pointer(new)), uintptr(newlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sysctl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sysctl sysctl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fcntl_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntlPtr(fd int, cmd int, arg unsafe.Pointer) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fcntl_trampoline_addr, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ppoll(fds *PollFd, nfds int, timeout *Timespec, sigmask *Sigset_t) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_ppoll_trampoline_addr, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(unsafe.Pointer(timeout)), uintptr(unsafe.Pointer(sigmask)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ppoll_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ppoll ppoll \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_access_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_access_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := syscall_syscall(libc_adjtime_trampoline_addr, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_adjtime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chflags(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chflags_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chflags chflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chmod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_chroot_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_chroot_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_clock_gettime_trampoline_addr, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_clock_gettime_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_clock_gettime clock_gettime \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_close_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_close_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_dup_trampoline_addr, uintptr(fd), 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(from int, to int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup2_trampoline_addr, uintptr(from), uintptr(to), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup2_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup3(from int, to int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_dup3_trampoline_addr, uintptr(from), uintptr(to), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_dup3_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_dup3 dup3 \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsyscall_syscall(libc_exit_trampoline_addr, uintptr(code), 0, 0)\n\treturn\n}\n\nvar libc_exit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_faccessat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_faccessat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchdir_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchflags(fd int, flags int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchflags_trampoline_addr, uintptr(fd), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchflags_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchflags fchflags \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchmod_trampoline_addr, uintptr(fd), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchmodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchmodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fchown_trampoline_addr, uintptr(fd), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fchownat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fchownat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_flock_trampoline_addr, uintptr(fd), uintptr(how), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_flock_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_fpathconf_trampoline_addr, uintptr(fd), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fpathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_fstatat_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatfs(fd int, stat *Statfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fstatfs_trampoline_addr, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fstatfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fstatfs fstatfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_fsync_trampoline_addr, uintptr(fd), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_fsync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := syscall_syscall(libc_ftruncate_trampoline_addr, uintptr(fd), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_ftruncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getegid_trampoline_addr, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\nvar libc_getegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_geteuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_geteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getgid_trampoline_addr, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\nvar libc_getgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getpgid_trampoline_addr, uintptr(pid), 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgrp int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpgrp_trampoline_addr, 0, 0, 0)\n\tpgrp = int(r0)\n\treturn\n}\n\nvar libc_getpgrp_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getpid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\nvar libc_getpid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getppid_trampoline_addr, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\nvar libc_getppid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getpriority_trampoline_addr, uintptr(which), uintptr(who), 0)\n\tprio = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrlimit_trampoline_addr, uintptr(which), uintptr(unsafe.Pointer(lim)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrlimit_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrtable() (rtable int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getrtable_trampoline_addr, 0, 0, 0)\n\trtable = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrtable getrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_getrusage_trampoline_addr, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getrusage_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_getsid_trampoline_addr, uintptr(pid), 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_gettimeofday_trampoline_addr, uintptr(unsafe.Pointer(tv)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_gettimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := syscall_rawSyscall(libc_getuid_trampoline_addr, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\nvar libc_getuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Issetugid() (tainted bool) {\n\tr0, _, _ := syscall_syscall(libc_issetugid_trampoline_addr, 0, 0, 0)\n\ttainted = bool(r0 != 0)\n\treturn\n}\n\nvar libc_issetugid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_issetugid issetugid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := syscall_syscall(libc_kill_trampoline_addr, uintptr(pid), uintptr(signum), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kill_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kqueue() (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_kqueue_trampoline_addr, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_kqueue_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_kqueue kqueue \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lchown_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lchown_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_link_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_link_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Linkat(pathfd int, path string, linkfd int, link string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_linkat_trampoline_addr, uintptr(pathfd), uintptr(unsafe.Pointer(_p0)), uintptr(linkfd), uintptr(unsafe.Pointer(_p1)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_linkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_linkat linkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_listen_trampoline_addr, uintptr(s), uintptr(backlog), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_listen_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_listen listen \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_lstat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lstat lstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdir mkdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkdirat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkdirat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkdirat mkdirat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifo_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifo_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifo mkfifo \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mkfifoat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mkfifoat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mkfifoat mkfifoat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_mknod_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknod_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknod mknod \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_mknodat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mknodat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mknodat mknodat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := syscall_syscall(libc_nanosleep_trampoline_addr, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_nanosleep_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_nanosleep nanosleep \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_open_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm))\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_open_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_open open \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_openat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_openat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_openat openat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := syscall_syscall(libc_pathconf_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pathconf_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pathconf pathconf \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pread_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pread_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pread pread \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_pwrite_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pwrite_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pwrite pwrite \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_read_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_read_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_read read \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_readlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlink readlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlinkat(dirfd int, path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p1 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p1 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall6(libc_readlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(_p1), uintptr(len(buf)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_readlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_readlinkat readlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rename_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rename_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rename rename \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(fromfd int, from string, tofd int, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_renameat_trampoline_addr, uintptr(fromfd), uintptr(unsafe.Pointer(_p0)), uintptr(tofd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_renameat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_renameat renameat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Revoke(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_revoke_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_revoke_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_revoke revoke \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_rmdir_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_rmdir_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_rmdir rmdir \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := syscall_syscall(libc_lseek_trampoline_addr, uintptr(fd), uintptr(offset), uintptr(whence))\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_lseek_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_lseek lseek \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_select_trampoline_addr, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_select_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_select select \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setegid_trampoline_addr, uintptr(egid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setegid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setegid setegid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_seteuid_trampoline_addr, uintptr(euid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_seteuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_seteuid seteuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setgid_trampoline_addr, uintptr(gid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setgid setgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setlogin(name string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_setlogin_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setlogin_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setlogin setlogin \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setpgid_trampoline_addr, uintptr(pid), uintptr(pgid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpgid setpgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_syscall(libc_setpriority_trampoline_addr, uintptr(which), uintptr(who), uintptr(prio))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setpriority_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setpriority setpriority \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setregid_trampoline_addr, uintptr(rgid), uintptr(egid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setregid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setregid setregid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setreuid_trampoline_addr, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setreuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setreuid setreuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresgid(rgid int, egid int, sgid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresgid_trampoline_addr, uintptr(rgid), uintptr(egid), uintptr(sgid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresgid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresgid setresgid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setresuid(ruid int, euid int, suid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setresuid_trampoline_addr, uintptr(ruid), uintptr(euid), uintptr(suid))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setresuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setresuid setresuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setrtable(rtable int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setrtable_trampoline_addr, uintptr(rtable), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setrtable_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setrtable setrtable \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_rawSyscall(libc_setsid_trampoline_addr, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setsid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setsid setsid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Settimeofday(tp *Timeval) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_settimeofday_trampoline_addr, uintptr(unsafe.Pointer(tp)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_settimeofday_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_settimeofday settimeofday \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_rawSyscall(libc_setuid_trampoline_addr, uintptr(uid), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_setuid_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_stat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_stat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statfs(path string, stat *Statfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_statfs_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_statfs_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_statfs statfs \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlinkat(oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_symlinkat_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_symlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_symlinkat symlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := syscall_syscall(libc_sync_trampoline_addr, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_sync_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_truncate_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_truncate_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(newmask int) (oldmask int) {\n\tr0, _, _ := syscall_syscall(libc_umask_trampoline_addr, uintptr(newmask), 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\nvar libc_umask_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlink_trampoline_addr, uintptr(unsafe.Pointer(_p0)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlink_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unlinkat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unlinkat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(libc_unmount_trampoline_addr, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unmount_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unmount unmount \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(p) > 0 {\n\t\t_p0 = unsafe.Pointer(&p[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(libc_write_trampoline_addr, uintptr(fd), uintptr(_p0), uintptr(len(p)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_write_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_syscall6(libc_mmap_trampoline_addr, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_mmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(libc_munmap_trampoline_addr, uintptr(addr), uintptr(length), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_munmap_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getfsstat(stat *Statfs_t, bufsize uintptr, flags int) (n int, err error) {\n\tr0, _, e1 := syscall_syscall(libc_getfsstat_trampoline_addr, uintptr(unsafe.Pointer(stat)), uintptr(bufsize), uintptr(flags))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_getfsstat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_getfsstat getfsstat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(dirfd int, path string, times *[2]Timespec, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(libc_utimensat_trampoline_addr, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_utimensat_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pledge(promises *byte, execpromises *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_pledge_trampoline_addr, uintptr(unsafe.Pointer(promises)), uintptr(unsafe.Pointer(execpromises)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_pledge_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_pledge pledge \"libc.so\"\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc unveil(path *byte, flags *byte) (err error) {\n\t_, _, e1 := syscall_syscall(libc_unveil_trampoline_addr, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(flags)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nvar libc_unveil_trampoline_addr uintptr\n\n//go:cgo_import_dynamic libc_unveil unveil \"libc.so\"\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_openbsd_riscv64.s",
    "content": "// go run mkasm.go openbsd riscv64\n// Code generated by the command above; DO NOT EDIT.\n\n#include \"textflag.h\"\n\nTEXT libc_getgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgroups(SB)\nGLOBL\t·libc_getgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgroups_trampoline_addr(SB)/8, $libc_getgroups_trampoline<>(SB)\n\nTEXT libc_setgroups_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgroups(SB)\nGLOBL\t·libc_setgroups_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgroups_trampoline_addr(SB)/8, $libc_setgroups_trampoline<>(SB)\n\nTEXT libc_wait4_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_wait4(SB)\nGLOBL\t·libc_wait4_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_wait4_trampoline_addr(SB)/8, $libc_wait4_trampoline<>(SB)\n\nTEXT libc_accept_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_accept(SB)\nGLOBL\t·libc_accept_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_accept_trampoline_addr(SB)/8, $libc_accept_trampoline<>(SB)\n\nTEXT libc_bind_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_bind(SB)\nGLOBL\t·libc_bind_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_bind_trampoline_addr(SB)/8, $libc_bind_trampoline<>(SB)\n\nTEXT libc_connect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_connect(SB)\nGLOBL\t·libc_connect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_connect_trampoline_addr(SB)/8, $libc_connect_trampoline<>(SB)\n\nTEXT libc_socket_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socket(SB)\nGLOBL\t·libc_socket_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socket_trampoline_addr(SB)/8, $libc_socket_trampoline<>(SB)\n\nTEXT libc_getsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockopt(SB)\nGLOBL\t·libc_getsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockopt_trampoline_addr(SB)/8, $libc_getsockopt_trampoline<>(SB)\n\nTEXT libc_setsockopt_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsockopt(SB)\nGLOBL\t·libc_setsockopt_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsockopt_trampoline_addr(SB)/8, $libc_setsockopt_trampoline<>(SB)\n\nTEXT libc_getpeername_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpeername(SB)\nGLOBL\t·libc_getpeername_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpeername_trampoline_addr(SB)/8, $libc_getpeername_trampoline<>(SB)\n\nTEXT libc_getsockname_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsockname(SB)\nGLOBL\t·libc_getsockname_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsockname_trampoline_addr(SB)/8, $libc_getsockname_trampoline<>(SB)\n\nTEXT libc_shutdown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_shutdown(SB)\nGLOBL\t·libc_shutdown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_shutdown_trampoline_addr(SB)/8, $libc_shutdown_trampoline<>(SB)\n\nTEXT libc_socketpair_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_socketpair(SB)\nGLOBL\t·libc_socketpair_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_socketpair_trampoline_addr(SB)/8, $libc_socketpair_trampoline<>(SB)\n\nTEXT libc_recvfrom_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvfrom(SB)\nGLOBL\t·libc_recvfrom_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvfrom_trampoline_addr(SB)/8, $libc_recvfrom_trampoline<>(SB)\n\nTEXT libc_sendto_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendto(SB)\nGLOBL\t·libc_sendto_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendto_trampoline_addr(SB)/8, $libc_sendto_trampoline<>(SB)\n\nTEXT libc_recvmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_recvmsg(SB)\nGLOBL\t·libc_recvmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_recvmsg_trampoline_addr(SB)/8, $libc_recvmsg_trampoline<>(SB)\n\nTEXT libc_sendmsg_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sendmsg(SB)\nGLOBL\t·libc_sendmsg_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sendmsg_trampoline_addr(SB)/8, $libc_sendmsg_trampoline<>(SB)\n\nTEXT libc_kevent_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kevent(SB)\nGLOBL\t·libc_kevent_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kevent_trampoline_addr(SB)/8, $libc_kevent_trampoline<>(SB)\n\nTEXT libc_utimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimes(SB)\nGLOBL\t·libc_utimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimes_trampoline_addr(SB)/8, $libc_utimes_trampoline<>(SB)\n\nTEXT libc_futimes_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_futimes(SB)\nGLOBL\t·libc_futimes_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_futimes_trampoline_addr(SB)/8, $libc_futimes_trampoline<>(SB)\n\nTEXT libc_poll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_poll(SB)\nGLOBL\t·libc_poll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_poll_trampoline_addr(SB)/8, $libc_poll_trampoline<>(SB)\n\nTEXT libc_madvise_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_madvise(SB)\nGLOBL\t·libc_madvise_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_madvise_trampoline_addr(SB)/8, $libc_madvise_trampoline<>(SB)\n\nTEXT libc_mlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlock(SB)\nGLOBL\t·libc_mlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlock_trampoline_addr(SB)/8, $libc_mlock_trampoline<>(SB)\n\nTEXT libc_mlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mlockall(SB)\nGLOBL\t·libc_mlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mlockall_trampoline_addr(SB)/8, $libc_mlockall_trampoline<>(SB)\n\nTEXT libc_mprotect_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mprotect(SB)\nGLOBL\t·libc_mprotect_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mprotect_trampoline_addr(SB)/8, $libc_mprotect_trampoline<>(SB)\n\nTEXT libc_msync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_msync(SB)\nGLOBL\t·libc_msync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_msync_trampoline_addr(SB)/8, $libc_msync_trampoline<>(SB)\n\nTEXT libc_munlock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlock(SB)\nGLOBL\t·libc_munlock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlock_trampoline_addr(SB)/8, $libc_munlock_trampoline<>(SB)\n\nTEXT libc_munlockall_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munlockall(SB)\nGLOBL\t·libc_munlockall_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munlockall_trampoline_addr(SB)/8, $libc_munlockall_trampoline<>(SB)\n\nTEXT libc_pipe2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pipe2(SB)\nGLOBL\t·libc_pipe2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pipe2_trampoline_addr(SB)/8, $libc_pipe2_trampoline<>(SB)\n\nTEXT libc_getdents_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getdents(SB)\nGLOBL\t·libc_getdents_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getdents_trampoline_addr(SB)/8, $libc_getdents_trampoline<>(SB)\n\nTEXT libc_getcwd_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getcwd(SB)\nGLOBL\t·libc_getcwd_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getcwd_trampoline_addr(SB)/8, $libc_getcwd_trampoline<>(SB)\n\nTEXT libc_getresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresuid(SB)\nGLOBL\t·libc_getresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresuid_trampoline_addr(SB)/8, $libc_getresuid_trampoline<>(SB)\n\nTEXT libc_getresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getresgid(SB)\nGLOBL\t·libc_getresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getresgid_trampoline_addr(SB)/8, $libc_getresgid_trampoline<>(SB)\n\nTEXT libc_ioctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ioctl(SB)\nGLOBL\t·libc_ioctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ioctl_trampoline_addr(SB)/8, $libc_ioctl_trampoline<>(SB)\n\nTEXT libc_sysctl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sysctl(SB)\nGLOBL\t·libc_sysctl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sysctl_trampoline_addr(SB)/8, $libc_sysctl_trampoline<>(SB)\n\nTEXT libc_fcntl_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fcntl(SB)\nGLOBL\t·libc_fcntl_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fcntl_trampoline_addr(SB)/8, $libc_fcntl_trampoline<>(SB)\n\nTEXT libc_ppoll_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ppoll(SB)\nGLOBL\t·libc_ppoll_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ppoll_trampoline_addr(SB)/8, $libc_ppoll_trampoline<>(SB)\n\nTEXT libc_access_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_access(SB)\nGLOBL\t·libc_access_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_access_trampoline_addr(SB)/8, $libc_access_trampoline<>(SB)\n\nTEXT libc_adjtime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_adjtime(SB)\nGLOBL\t·libc_adjtime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_adjtime_trampoline_addr(SB)/8, $libc_adjtime_trampoline<>(SB)\n\nTEXT libc_chdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chdir(SB)\nGLOBL\t·libc_chdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chdir_trampoline_addr(SB)/8, $libc_chdir_trampoline<>(SB)\n\nTEXT libc_chflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chflags(SB)\nGLOBL\t·libc_chflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chflags_trampoline_addr(SB)/8, $libc_chflags_trampoline<>(SB)\n\nTEXT libc_chmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chmod(SB)\nGLOBL\t·libc_chmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chmod_trampoline_addr(SB)/8, $libc_chmod_trampoline<>(SB)\n\nTEXT libc_chown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chown(SB)\nGLOBL\t·libc_chown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chown_trampoline_addr(SB)/8, $libc_chown_trampoline<>(SB)\n\nTEXT libc_chroot_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_chroot(SB)\nGLOBL\t·libc_chroot_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_chroot_trampoline_addr(SB)/8, $libc_chroot_trampoline<>(SB)\n\nTEXT libc_clock_gettime_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_clock_gettime(SB)\nGLOBL\t·libc_clock_gettime_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_clock_gettime_trampoline_addr(SB)/8, $libc_clock_gettime_trampoline<>(SB)\n\nTEXT libc_close_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_close(SB)\nGLOBL\t·libc_close_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_close_trampoline_addr(SB)/8, $libc_close_trampoline<>(SB)\n\nTEXT libc_dup_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup(SB)\nGLOBL\t·libc_dup_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup_trampoline_addr(SB)/8, $libc_dup_trampoline<>(SB)\n\nTEXT libc_dup2_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup2(SB)\nGLOBL\t·libc_dup2_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup2_trampoline_addr(SB)/8, $libc_dup2_trampoline<>(SB)\n\nTEXT libc_dup3_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_dup3(SB)\nGLOBL\t·libc_dup3_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_dup3_trampoline_addr(SB)/8, $libc_dup3_trampoline<>(SB)\n\nTEXT libc_exit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_exit(SB)\nGLOBL\t·libc_exit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_exit_trampoline_addr(SB)/8, $libc_exit_trampoline<>(SB)\n\nTEXT libc_faccessat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_faccessat(SB)\nGLOBL\t·libc_faccessat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_faccessat_trampoline_addr(SB)/8, $libc_faccessat_trampoline<>(SB)\n\nTEXT libc_fchdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchdir(SB)\nGLOBL\t·libc_fchdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchdir_trampoline_addr(SB)/8, $libc_fchdir_trampoline<>(SB)\n\nTEXT libc_fchflags_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchflags(SB)\nGLOBL\t·libc_fchflags_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchflags_trampoline_addr(SB)/8, $libc_fchflags_trampoline<>(SB)\n\nTEXT libc_fchmod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmod(SB)\nGLOBL\t·libc_fchmod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmod_trampoline_addr(SB)/8, $libc_fchmod_trampoline<>(SB)\n\nTEXT libc_fchmodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchmodat(SB)\nGLOBL\t·libc_fchmodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchmodat_trampoline_addr(SB)/8, $libc_fchmodat_trampoline<>(SB)\n\nTEXT libc_fchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchown(SB)\nGLOBL\t·libc_fchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchown_trampoline_addr(SB)/8, $libc_fchown_trampoline<>(SB)\n\nTEXT libc_fchownat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fchownat(SB)\nGLOBL\t·libc_fchownat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fchownat_trampoline_addr(SB)/8, $libc_fchownat_trampoline<>(SB)\n\nTEXT libc_flock_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_flock(SB)\nGLOBL\t·libc_flock_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_flock_trampoline_addr(SB)/8, $libc_flock_trampoline<>(SB)\n\nTEXT libc_fpathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fpathconf(SB)\nGLOBL\t·libc_fpathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fpathconf_trampoline_addr(SB)/8, $libc_fpathconf_trampoline<>(SB)\n\nTEXT libc_fstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstat(SB)\nGLOBL\t·libc_fstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstat_trampoline_addr(SB)/8, $libc_fstat_trampoline<>(SB)\n\nTEXT libc_fstatat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatat(SB)\nGLOBL\t·libc_fstatat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatat_trampoline_addr(SB)/8, $libc_fstatat_trampoline<>(SB)\n\nTEXT libc_fstatfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fstatfs(SB)\nGLOBL\t·libc_fstatfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fstatfs_trampoline_addr(SB)/8, $libc_fstatfs_trampoline<>(SB)\n\nTEXT libc_fsync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_fsync(SB)\nGLOBL\t·libc_fsync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_fsync_trampoline_addr(SB)/8, $libc_fsync_trampoline<>(SB)\n\nTEXT libc_ftruncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_ftruncate(SB)\nGLOBL\t·libc_ftruncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_ftruncate_trampoline_addr(SB)/8, $libc_ftruncate_trampoline<>(SB)\n\nTEXT libc_getegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getegid(SB)\nGLOBL\t·libc_getegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getegid_trampoline_addr(SB)/8, $libc_getegid_trampoline<>(SB)\n\nTEXT libc_geteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_geteuid(SB)\nGLOBL\t·libc_geteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_geteuid_trampoline_addr(SB)/8, $libc_geteuid_trampoline<>(SB)\n\nTEXT libc_getgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getgid(SB)\nGLOBL\t·libc_getgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getgid_trampoline_addr(SB)/8, $libc_getgid_trampoline<>(SB)\n\nTEXT libc_getpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgid(SB)\nGLOBL\t·libc_getpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgid_trampoline_addr(SB)/8, $libc_getpgid_trampoline<>(SB)\n\nTEXT libc_getpgrp_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpgrp(SB)\nGLOBL\t·libc_getpgrp_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpgrp_trampoline_addr(SB)/8, $libc_getpgrp_trampoline<>(SB)\n\nTEXT libc_getpid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpid(SB)\nGLOBL\t·libc_getpid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpid_trampoline_addr(SB)/8, $libc_getpid_trampoline<>(SB)\n\nTEXT libc_getppid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getppid(SB)\nGLOBL\t·libc_getppid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getppid_trampoline_addr(SB)/8, $libc_getppid_trampoline<>(SB)\n\nTEXT libc_getpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getpriority(SB)\nGLOBL\t·libc_getpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getpriority_trampoline_addr(SB)/8, $libc_getpriority_trampoline<>(SB)\n\nTEXT libc_getrlimit_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrlimit(SB)\nGLOBL\t·libc_getrlimit_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrlimit_trampoline_addr(SB)/8, $libc_getrlimit_trampoline<>(SB)\n\nTEXT libc_getrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrtable(SB)\nGLOBL\t·libc_getrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrtable_trampoline_addr(SB)/8, $libc_getrtable_trampoline<>(SB)\n\nTEXT libc_getrusage_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getrusage(SB)\nGLOBL\t·libc_getrusage_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getrusage_trampoline_addr(SB)/8, $libc_getrusage_trampoline<>(SB)\n\nTEXT libc_getsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getsid(SB)\nGLOBL\t·libc_getsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getsid_trampoline_addr(SB)/8, $libc_getsid_trampoline<>(SB)\n\nTEXT libc_gettimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_gettimeofday(SB)\nGLOBL\t·libc_gettimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_gettimeofday_trampoline_addr(SB)/8, $libc_gettimeofday_trampoline<>(SB)\n\nTEXT libc_getuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getuid(SB)\nGLOBL\t·libc_getuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getuid_trampoline_addr(SB)/8, $libc_getuid_trampoline<>(SB)\n\nTEXT libc_issetugid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_issetugid(SB)\nGLOBL\t·libc_issetugid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_issetugid_trampoline_addr(SB)/8, $libc_issetugid_trampoline<>(SB)\n\nTEXT libc_kill_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kill(SB)\nGLOBL\t·libc_kill_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kill_trampoline_addr(SB)/8, $libc_kill_trampoline<>(SB)\n\nTEXT libc_kqueue_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_kqueue(SB)\nGLOBL\t·libc_kqueue_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_kqueue_trampoline_addr(SB)/8, $libc_kqueue_trampoline<>(SB)\n\nTEXT libc_lchown_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lchown(SB)\nGLOBL\t·libc_lchown_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lchown_trampoline_addr(SB)/8, $libc_lchown_trampoline<>(SB)\n\nTEXT libc_link_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_link(SB)\nGLOBL\t·libc_link_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_link_trampoline_addr(SB)/8, $libc_link_trampoline<>(SB)\n\nTEXT libc_linkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_linkat(SB)\nGLOBL\t·libc_linkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_linkat_trampoline_addr(SB)/8, $libc_linkat_trampoline<>(SB)\n\nTEXT libc_listen_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_listen(SB)\nGLOBL\t·libc_listen_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_listen_trampoline_addr(SB)/8, $libc_listen_trampoline<>(SB)\n\nTEXT libc_lstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lstat(SB)\nGLOBL\t·libc_lstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lstat_trampoline_addr(SB)/8, $libc_lstat_trampoline<>(SB)\n\nTEXT libc_mkdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdir(SB)\nGLOBL\t·libc_mkdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdir_trampoline_addr(SB)/8, $libc_mkdir_trampoline<>(SB)\n\nTEXT libc_mkdirat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkdirat(SB)\nGLOBL\t·libc_mkdirat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkdirat_trampoline_addr(SB)/8, $libc_mkdirat_trampoline<>(SB)\n\nTEXT libc_mkfifo_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifo(SB)\nGLOBL\t·libc_mkfifo_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifo_trampoline_addr(SB)/8, $libc_mkfifo_trampoline<>(SB)\n\nTEXT libc_mkfifoat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mkfifoat(SB)\nGLOBL\t·libc_mkfifoat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mkfifoat_trampoline_addr(SB)/8, $libc_mkfifoat_trampoline<>(SB)\n\nTEXT libc_mknod_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknod(SB)\nGLOBL\t·libc_mknod_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknod_trampoline_addr(SB)/8, $libc_mknod_trampoline<>(SB)\n\nTEXT libc_mknodat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mknodat(SB)\nGLOBL\t·libc_mknodat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mknodat_trampoline_addr(SB)/8, $libc_mknodat_trampoline<>(SB)\n\nTEXT libc_nanosleep_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_nanosleep(SB)\nGLOBL\t·libc_nanosleep_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_nanosleep_trampoline_addr(SB)/8, $libc_nanosleep_trampoline<>(SB)\n\nTEXT libc_open_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_open(SB)\nGLOBL\t·libc_open_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_open_trampoline_addr(SB)/8, $libc_open_trampoline<>(SB)\n\nTEXT libc_openat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_openat(SB)\nGLOBL\t·libc_openat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_openat_trampoline_addr(SB)/8, $libc_openat_trampoline<>(SB)\n\nTEXT libc_pathconf_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pathconf(SB)\nGLOBL\t·libc_pathconf_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pathconf_trampoline_addr(SB)/8, $libc_pathconf_trampoline<>(SB)\n\nTEXT libc_pread_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pread(SB)\nGLOBL\t·libc_pread_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pread_trampoline_addr(SB)/8, $libc_pread_trampoline<>(SB)\n\nTEXT libc_pwrite_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pwrite(SB)\nGLOBL\t·libc_pwrite_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pwrite_trampoline_addr(SB)/8, $libc_pwrite_trampoline<>(SB)\n\nTEXT libc_read_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_read(SB)\nGLOBL\t·libc_read_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_read_trampoline_addr(SB)/8, $libc_read_trampoline<>(SB)\n\nTEXT libc_readlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlink(SB)\nGLOBL\t·libc_readlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlink_trampoline_addr(SB)/8, $libc_readlink_trampoline<>(SB)\n\nTEXT libc_readlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_readlinkat(SB)\nGLOBL\t·libc_readlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_readlinkat_trampoline_addr(SB)/8, $libc_readlinkat_trampoline<>(SB)\n\nTEXT libc_rename_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rename(SB)\nGLOBL\t·libc_rename_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rename_trampoline_addr(SB)/8, $libc_rename_trampoline<>(SB)\n\nTEXT libc_renameat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_renameat(SB)\nGLOBL\t·libc_renameat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_renameat_trampoline_addr(SB)/8, $libc_renameat_trampoline<>(SB)\n\nTEXT libc_revoke_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_revoke(SB)\nGLOBL\t·libc_revoke_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_revoke_trampoline_addr(SB)/8, $libc_revoke_trampoline<>(SB)\n\nTEXT libc_rmdir_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_rmdir(SB)\nGLOBL\t·libc_rmdir_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_rmdir_trampoline_addr(SB)/8, $libc_rmdir_trampoline<>(SB)\n\nTEXT libc_lseek_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_lseek(SB)\nGLOBL\t·libc_lseek_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_lseek_trampoline_addr(SB)/8, $libc_lseek_trampoline<>(SB)\n\nTEXT libc_select_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_select(SB)\nGLOBL\t·libc_select_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_select_trampoline_addr(SB)/8, $libc_select_trampoline<>(SB)\n\nTEXT libc_setegid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setegid(SB)\nGLOBL\t·libc_setegid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setegid_trampoline_addr(SB)/8, $libc_setegid_trampoline<>(SB)\n\nTEXT libc_seteuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_seteuid(SB)\nGLOBL\t·libc_seteuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_seteuid_trampoline_addr(SB)/8, $libc_seteuid_trampoline<>(SB)\n\nTEXT libc_setgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setgid(SB)\nGLOBL\t·libc_setgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setgid_trampoline_addr(SB)/8, $libc_setgid_trampoline<>(SB)\n\nTEXT libc_setlogin_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setlogin(SB)\nGLOBL\t·libc_setlogin_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setlogin_trampoline_addr(SB)/8, $libc_setlogin_trampoline<>(SB)\n\nTEXT libc_setpgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpgid(SB)\nGLOBL\t·libc_setpgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpgid_trampoline_addr(SB)/8, $libc_setpgid_trampoline<>(SB)\n\nTEXT libc_setpriority_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setpriority(SB)\nGLOBL\t·libc_setpriority_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setpriority_trampoline_addr(SB)/8, $libc_setpriority_trampoline<>(SB)\n\nTEXT libc_setregid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setregid(SB)\nGLOBL\t·libc_setregid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setregid_trampoline_addr(SB)/8, $libc_setregid_trampoline<>(SB)\n\nTEXT libc_setreuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setreuid(SB)\nGLOBL\t·libc_setreuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setreuid_trampoline_addr(SB)/8, $libc_setreuid_trampoline<>(SB)\n\nTEXT libc_setresgid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresgid(SB)\nGLOBL\t·libc_setresgid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresgid_trampoline_addr(SB)/8, $libc_setresgid_trampoline<>(SB)\n\nTEXT libc_setresuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setresuid(SB)\nGLOBL\t·libc_setresuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setresuid_trampoline_addr(SB)/8, $libc_setresuid_trampoline<>(SB)\n\nTEXT libc_setrtable_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setrtable(SB)\nGLOBL\t·libc_setrtable_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setrtable_trampoline_addr(SB)/8, $libc_setrtable_trampoline<>(SB)\n\nTEXT libc_setsid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setsid(SB)\nGLOBL\t·libc_setsid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setsid_trampoline_addr(SB)/8, $libc_setsid_trampoline<>(SB)\n\nTEXT libc_settimeofday_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_settimeofday(SB)\nGLOBL\t·libc_settimeofday_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_settimeofday_trampoline_addr(SB)/8, $libc_settimeofday_trampoline<>(SB)\n\nTEXT libc_setuid_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_setuid(SB)\nGLOBL\t·libc_setuid_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_setuid_trampoline_addr(SB)/8, $libc_setuid_trampoline<>(SB)\n\nTEXT libc_stat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_stat(SB)\nGLOBL\t·libc_stat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_stat_trampoline_addr(SB)/8, $libc_stat_trampoline<>(SB)\n\nTEXT libc_statfs_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_statfs(SB)\nGLOBL\t·libc_statfs_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_statfs_trampoline_addr(SB)/8, $libc_statfs_trampoline<>(SB)\n\nTEXT libc_symlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlink(SB)\nGLOBL\t·libc_symlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlink_trampoline_addr(SB)/8, $libc_symlink_trampoline<>(SB)\n\nTEXT libc_symlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_symlinkat(SB)\nGLOBL\t·libc_symlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_symlinkat_trampoline_addr(SB)/8, $libc_symlinkat_trampoline<>(SB)\n\nTEXT libc_sync_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_sync(SB)\nGLOBL\t·libc_sync_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_sync_trampoline_addr(SB)/8, $libc_sync_trampoline<>(SB)\n\nTEXT libc_truncate_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_truncate(SB)\nGLOBL\t·libc_truncate_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_truncate_trampoline_addr(SB)/8, $libc_truncate_trampoline<>(SB)\n\nTEXT libc_umask_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_umask(SB)\nGLOBL\t·libc_umask_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_umask_trampoline_addr(SB)/8, $libc_umask_trampoline<>(SB)\n\nTEXT libc_unlink_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlink(SB)\nGLOBL\t·libc_unlink_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlink_trampoline_addr(SB)/8, $libc_unlink_trampoline<>(SB)\n\nTEXT libc_unlinkat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unlinkat(SB)\nGLOBL\t·libc_unlinkat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unlinkat_trampoline_addr(SB)/8, $libc_unlinkat_trampoline<>(SB)\n\nTEXT libc_unmount_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unmount(SB)\nGLOBL\t·libc_unmount_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unmount_trampoline_addr(SB)/8, $libc_unmount_trampoline<>(SB)\n\nTEXT libc_write_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_write(SB)\nGLOBL\t·libc_write_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_write_trampoline_addr(SB)/8, $libc_write_trampoline<>(SB)\n\nTEXT libc_mmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_mmap(SB)\nGLOBL\t·libc_mmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_mmap_trampoline_addr(SB)/8, $libc_mmap_trampoline<>(SB)\n\nTEXT libc_munmap_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_munmap(SB)\nGLOBL\t·libc_munmap_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_munmap_trampoline_addr(SB)/8, $libc_munmap_trampoline<>(SB)\n\nTEXT libc_getfsstat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_getfsstat(SB)\nGLOBL\t·libc_getfsstat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_getfsstat_trampoline_addr(SB)/8, $libc_getfsstat_trampoline<>(SB)\n\nTEXT libc_utimensat_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_utimensat(SB)\nGLOBL\t·libc_utimensat_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_utimensat_trampoline_addr(SB)/8, $libc_utimensat_trampoline<>(SB)\n\nTEXT libc_pledge_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_pledge(SB)\nGLOBL\t·libc_pledge_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_pledge_trampoline_addr(SB)/8, $libc_pledge_trampoline<>(SB)\n\nTEXT libc_unveil_trampoline<>(SB),NOSPLIT,$0-0\n\tJMP\tlibc_unveil(SB)\nGLOBL\t·libc_unveil_trampoline_addr(SB), RODATA, $8\nDATA\t·libc_unveil_trampoline_addr(SB)/8, $libc_unveil_trampoline<>(SB)\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_solaris_amd64.go",
    "content": "// go run mksyscall_solaris.go -tags solaris,amd64 syscall_solaris.go syscall_solaris_amd64.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build solaris && amd64\n\npackage unix\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n//go:cgo_import_dynamic libc_pipe pipe \"libc.so\"\n//go:cgo_import_dynamic libc_pipe2 pipe2 \"libc.so\"\n//go:cgo_import_dynamic libc_getsockname getsockname \"libsocket.so\"\n//go:cgo_import_dynamic libc_getcwd getcwd \"libc.so\"\n//go:cgo_import_dynamic libc_getgroups getgroups \"libc.so\"\n//go:cgo_import_dynamic libc_setgroups setgroups \"libc.so\"\n//go:cgo_import_dynamic libc_wait4 wait4 \"libc.so\"\n//go:cgo_import_dynamic libc_gethostname gethostname \"libc.so\"\n//go:cgo_import_dynamic libc_utimes utimes \"libc.so\"\n//go:cgo_import_dynamic libc_utimensat utimensat \"libc.so\"\n//go:cgo_import_dynamic libc_fcntl fcntl \"libc.so\"\n//go:cgo_import_dynamic libc_futimesat futimesat \"libc.so\"\n//go:cgo_import_dynamic libc_accept accept \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_recvmsg __xnet_recvmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_sendmsg __xnet_sendmsg \"libsocket.so\"\n//go:cgo_import_dynamic libc_acct acct \"libc.so\"\n//go:cgo_import_dynamic libc___makedev __makedev \"libc.so\"\n//go:cgo_import_dynamic libc___major __major \"libc.so\"\n//go:cgo_import_dynamic libc___minor __minor \"libc.so\"\n//go:cgo_import_dynamic libc_ioctl ioctl \"libc.so\"\n//go:cgo_import_dynamic libc_poll poll \"libc.so\"\n//go:cgo_import_dynamic libc_access access \"libc.so\"\n//go:cgo_import_dynamic libc_adjtime adjtime \"libc.so\"\n//go:cgo_import_dynamic libc_chdir chdir \"libc.so\"\n//go:cgo_import_dynamic libc_chmod chmod \"libc.so\"\n//go:cgo_import_dynamic libc_chown chown \"libc.so\"\n//go:cgo_import_dynamic libc_chroot chroot \"libc.so\"\n//go:cgo_import_dynamic libc_clockgettime clockgettime \"libc.so\"\n//go:cgo_import_dynamic libc_close close \"libc.so\"\n//go:cgo_import_dynamic libc_creat creat \"libc.so\"\n//go:cgo_import_dynamic libc_dup dup \"libc.so\"\n//go:cgo_import_dynamic libc_dup2 dup2 \"libc.so\"\n//go:cgo_import_dynamic libc_exit exit \"libc.so\"\n//go:cgo_import_dynamic libc_faccessat faccessat \"libc.so\"\n//go:cgo_import_dynamic libc_fchdir fchdir \"libc.so\"\n//go:cgo_import_dynamic libc_fchmod fchmod \"libc.so\"\n//go:cgo_import_dynamic libc_fchmodat fchmodat \"libc.so\"\n//go:cgo_import_dynamic libc_fchown fchown \"libc.so\"\n//go:cgo_import_dynamic libc_fchownat fchownat \"libc.so\"\n//go:cgo_import_dynamic libc_fdatasync fdatasync \"libc.so\"\n//go:cgo_import_dynamic libc_flock flock \"libc.so\"\n//go:cgo_import_dynamic libc_fpathconf fpathconf \"libc.so\"\n//go:cgo_import_dynamic libc_fstat fstat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatat fstatat \"libc.so\"\n//go:cgo_import_dynamic libc_fstatvfs fstatvfs \"libc.so\"\n//go:cgo_import_dynamic libc_getdents getdents \"libc.so\"\n//go:cgo_import_dynamic libc_getgid getgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpid getpid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgid getpgid \"libc.so\"\n//go:cgo_import_dynamic libc_getpgrp getpgrp \"libc.so\"\n//go:cgo_import_dynamic libc_geteuid geteuid \"libc.so\"\n//go:cgo_import_dynamic libc_getegid getegid \"libc.so\"\n//go:cgo_import_dynamic libc_getppid getppid \"libc.so\"\n//go:cgo_import_dynamic libc_getpriority getpriority \"libc.so\"\n//go:cgo_import_dynamic libc_getrlimit getrlimit \"libc.so\"\n//go:cgo_import_dynamic libc_getrusage getrusage \"libc.so\"\n//go:cgo_import_dynamic libc_getsid getsid \"libc.so\"\n//go:cgo_import_dynamic libc_gettimeofday gettimeofday \"libc.so\"\n//go:cgo_import_dynamic libc_getuid getuid \"libc.so\"\n//go:cgo_import_dynamic libc_kill kill \"libc.so\"\n//go:cgo_import_dynamic libc_lchown lchown \"libc.so\"\n//go:cgo_import_dynamic libc_link link \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_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_setsid setsid \"libc.so\"\n//go:cgo_import_dynamic libc_setuid setuid \"libc.so\"\n//go:cgo_import_dynamic libc_shutdown shutdown \"libsocket.so\"\n//go:cgo_import_dynamic libc_stat stat \"libc.so\"\n//go:cgo_import_dynamic libc_statvfs statvfs \"libc.so\"\n//go:cgo_import_dynamic libc_symlink symlink \"libc.so\"\n//go:cgo_import_dynamic libc_sync sync \"libc.so\"\n//go:cgo_import_dynamic libc_sysconf sysconf \"libc.so\"\n//go:cgo_import_dynamic libc_times times \"libc.so\"\n//go:cgo_import_dynamic libc_truncate truncate \"libc.so\"\n//go:cgo_import_dynamic libc_fsync fsync \"libc.so\"\n//go:cgo_import_dynamic libc_ftruncate ftruncate \"libc.so\"\n//go:cgo_import_dynamic libc_umask umask \"libc.so\"\n//go:cgo_import_dynamic libc_uname uname \"libc.so\"\n//go:cgo_import_dynamic libc_umount umount \"libc.so\"\n//go:cgo_import_dynamic libc_unlink unlink \"libc.so\"\n//go:cgo_import_dynamic libc_unlinkat unlinkat \"libc.so\"\n//go:cgo_import_dynamic libc_ustat ustat \"libc.so\"\n//go:cgo_import_dynamic libc_utime utime \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_bind __xnet_bind \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_connect __xnet_connect \"libsocket.so\"\n//go:cgo_import_dynamic libc_mmap mmap \"libc.so\"\n//go:cgo_import_dynamic libc_munmap munmap \"libc.so\"\n//go:cgo_import_dynamic libc_sendfile sendfile \"libsendfile.so\"\n//go:cgo_import_dynamic libc___xnet_sendto __xnet_sendto \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socket __xnet_socket \"libsocket.so\"\n//go:cgo_import_dynamic libc___xnet_socketpair __xnet_socketpair \"libsocket.so\"\n//go:cgo_import_dynamic libc_write write \"libc.so\"\n//go:cgo_import_dynamic libc___xnet_getsockopt __xnet_getsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_getpeername getpeername \"libsocket.so\"\n//go:cgo_import_dynamic libc_setsockopt setsockopt \"libsocket.so\"\n//go:cgo_import_dynamic libc_recvfrom recvfrom \"libsocket.so\"\n//go:cgo_import_dynamic libc_port_create port_create \"libc.so\"\n//go:cgo_import_dynamic libc_port_associate port_associate \"libc.so\"\n//go:cgo_import_dynamic libc_port_dissociate port_dissociate \"libc.so\"\n//go:cgo_import_dynamic libc_port_get port_get \"libc.so\"\n//go:cgo_import_dynamic libc_port_getn port_getn \"libc.so\"\n//go:cgo_import_dynamic libc_putmsg putmsg \"libc.so\"\n//go:cgo_import_dynamic libc_getmsg getmsg \"libc.so\"\n\n//go:linkname procpipe libc_pipe\n//go:linkname procpipe2 libc_pipe2\n//go:linkname procgetsockname libc_getsockname\n//go:linkname procGetcwd libc_getcwd\n//go:linkname procgetgroups libc_getgroups\n//go:linkname procsetgroups libc_setgroups\n//go:linkname procwait4 libc_wait4\n//go:linkname procgethostname libc_gethostname\n//go:linkname procutimes libc_utimes\n//go:linkname procutimensat libc_utimensat\n//go:linkname procfcntl libc_fcntl\n//go:linkname procfutimesat libc_futimesat\n//go:linkname procaccept libc_accept\n//go:linkname proc__xnet_recvmsg libc___xnet_recvmsg\n//go:linkname proc__xnet_sendmsg libc___xnet_sendmsg\n//go:linkname procacct libc_acct\n//go:linkname proc__makedev libc___makedev\n//go:linkname proc__major libc___major\n//go:linkname proc__minor libc___minor\n//go:linkname procioctl libc_ioctl\n//go:linkname procpoll libc_poll\n//go:linkname procAccess libc_access\n//go:linkname procAdjtime libc_adjtime\n//go:linkname procChdir libc_chdir\n//go:linkname procChmod libc_chmod\n//go:linkname procChown libc_chown\n//go:linkname procChroot libc_chroot\n//go:linkname procClockGettime libc_clockgettime\n//go:linkname procClose libc_close\n//go:linkname procCreat libc_creat\n//go:linkname procDup libc_dup\n//go:linkname procDup2 libc_dup2\n//go:linkname procExit libc_exit\n//go:linkname procFaccessat libc_faccessat\n//go:linkname procFchdir libc_fchdir\n//go:linkname procFchmod libc_fchmod\n//go:linkname procFchmodat libc_fchmodat\n//go:linkname procFchown libc_fchown\n//go:linkname procFchownat libc_fchownat\n//go:linkname procFdatasync libc_fdatasync\n//go:linkname procFlock libc_flock\n//go:linkname procFpathconf libc_fpathconf\n//go:linkname procFstat libc_fstat\n//go:linkname procFstatat libc_fstatat\n//go:linkname procFstatvfs libc_fstatvfs\n//go:linkname procGetdents libc_getdents\n//go:linkname procGetgid libc_getgid\n//go:linkname procGetpid libc_getpid\n//go:linkname procGetpgid libc_getpgid\n//go:linkname procGetpgrp libc_getpgrp\n//go:linkname procGeteuid libc_geteuid\n//go:linkname procGetegid libc_getegid\n//go:linkname procGetppid libc_getppid\n//go:linkname procGetpriority libc_getpriority\n//go:linkname procGetrlimit libc_getrlimit\n//go:linkname procGetrusage libc_getrusage\n//go:linkname procGetsid libc_getsid\n//go:linkname procGettimeofday libc_gettimeofday\n//go:linkname procGetuid libc_getuid\n//go:linkname procKill libc_kill\n//go:linkname procLchown libc_lchown\n//go:linkname procLink libc_link\n//go:linkname proc__xnet_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 procSetsid libc_setsid\n//go:linkname procSetuid libc_setuid\n//go:linkname procshutdown libc_shutdown\n//go:linkname procStat libc_stat\n//go:linkname procStatvfs libc_statvfs\n//go:linkname procSymlink libc_symlink\n//go:linkname procSync libc_sync\n//go:linkname procSysconf libc_sysconf\n//go:linkname procTimes libc_times\n//go:linkname procTruncate libc_truncate\n//go:linkname procFsync libc_fsync\n//go:linkname procFtruncate libc_ftruncate\n//go:linkname procUmask libc_umask\n//go:linkname procUname libc_uname\n//go:linkname procumount libc_umount\n//go:linkname procUnlink libc_unlink\n//go:linkname procUnlinkat libc_unlinkat\n//go:linkname procUstat libc_ustat\n//go:linkname procUtime libc_utime\n//go:linkname proc__xnet_bind libc___xnet_bind\n//go:linkname proc__xnet_connect libc___xnet_connect\n//go:linkname procmmap libc_mmap\n//go:linkname procmunmap libc_munmap\n//go:linkname procsendfile libc_sendfile\n//go:linkname proc__xnet_sendto libc___xnet_sendto\n//go:linkname proc__xnet_socket libc___xnet_socket\n//go:linkname proc__xnet_socketpair libc___xnet_socketpair\n//go:linkname procwrite libc_write\n//go:linkname proc__xnet_getsockopt libc___xnet_getsockopt\n//go:linkname procgetpeername libc_getpeername\n//go:linkname procsetsockopt libc_setsockopt\n//go:linkname procrecvfrom libc_recvfrom\n//go:linkname procport_create libc_port_create\n//go:linkname procport_associate libc_port_associate\n//go:linkname procport_dissociate libc_port_dissociate\n//go:linkname procport_get libc_port_get\n//go:linkname procport_getn libc_port_getn\n//go:linkname procputmsg libc_putmsg\n//go:linkname procgetmsg libc_getmsg\n\nvar (\n\tprocpipe,\n\tprocpipe2,\n\tprocgetsockname,\n\tprocGetcwd,\n\tprocgetgroups,\n\tprocsetgroups,\n\tprocwait4,\n\tprocgethostname,\n\tprocutimes,\n\tprocutimensat,\n\tprocfcntl,\n\tprocfutimesat,\n\tprocaccept,\n\tproc__xnet_recvmsg,\n\tproc__xnet_sendmsg,\n\tprocacct,\n\tproc__makedev,\n\tproc__major,\n\tproc__minor,\n\tprocioctl,\n\tprocpoll,\n\tprocAccess,\n\tprocAdjtime,\n\tprocChdir,\n\tprocChmod,\n\tprocChown,\n\tprocChroot,\n\tprocClockGettime,\n\tprocClose,\n\tprocCreat,\n\tprocDup,\n\tprocDup2,\n\tprocExit,\n\tprocFaccessat,\n\tprocFchdir,\n\tprocFchmod,\n\tprocFchmodat,\n\tprocFchown,\n\tprocFchownat,\n\tprocFdatasync,\n\tprocFlock,\n\tprocFpathconf,\n\tprocFstat,\n\tprocFstatat,\n\tprocFstatvfs,\n\tprocGetdents,\n\tprocGetgid,\n\tprocGetpid,\n\tprocGetpgid,\n\tprocGetpgrp,\n\tprocGeteuid,\n\tprocGetegid,\n\tprocGetppid,\n\tprocGetpriority,\n\tprocGetrlimit,\n\tprocGetrusage,\n\tprocGetsid,\n\tprocGettimeofday,\n\tprocGetuid,\n\tprocKill,\n\tprocLchown,\n\tprocLink,\n\tproc__xnet_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\tprocSetsid,\n\tprocSetuid,\n\tprocshutdown,\n\tprocStat,\n\tprocStatvfs,\n\tprocSymlink,\n\tprocSync,\n\tprocSysconf,\n\tprocTimes,\n\tprocTruncate,\n\tprocFsync,\n\tprocFtruncate,\n\tprocUmask,\n\tprocUname,\n\tprocumount,\n\tprocUnlink,\n\tprocUnlinkat,\n\tprocUstat,\n\tprocUtime,\n\tproc__xnet_bind,\n\tproc__xnet_connect,\n\tprocmmap,\n\tprocmunmap,\n\tprocsendfile,\n\tproc__xnet_sendto,\n\tproc__xnet_socket,\n\tproc__xnet_socketpair,\n\tprocwrite,\n\tproc__xnet_getsockopt,\n\tprocgetpeername,\n\tprocsetsockopt,\n\tprocrecvfrom,\n\tprocport_create,\n\tprocport_associate,\n\tprocport_dissociate,\n\tprocport_get,\n\tprocport_getn,\n\tprocputmsg,\n\tprocgetmsg syscallFunc\n)\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe(p *[2]_C_int) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe)), 1, uintptr(unsafe.Pointer(p)), 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pipe2(p *[2]_C_int, flags int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procpipe2)), 2, uintptr(unsafe.Pointer(p)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockname(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetsockname)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getcwd(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetcwd)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getgroups(ngid int, gid *_Gid_t) (n int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setgroups(ngid int, gid *_Gid_t) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procsetgroups)), 2, uintptr(ngid), uintptr(unsafe.Pointer(gid)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc wait4(pid int32, statusp *_C_int, options int, rusage *Rusage) (wpid int32, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwait4)), 4, uintptr(pid), uintptr(unsafe.Pointer(statusp)), uintptr(options), uintptr(unsafe.Pointer(rusage)), 0, 0)\n\twpid = int32(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc gethostname(buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimes(path string, times *[2]Timeval) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimes)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc utimensat(fd int, path string, times *[2]Timespec, flag int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procutimensat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(times)), uintptr(flag), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc fcntl(fd int, cmd int, arg int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfcntl)), 3, uintptr(fd), uintptr(cmd), uintptr(arg), 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc futimesat(fildes int, path *byte, times *[2]Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procfutimesat)), 3, uintptr(fildes), uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(times)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procaccept)), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_recvmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendmsg(s int, msg *Msghdr, flags int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendmsg)), 3, uintptr(s), uintptr(unsafe.Pointer(msg)), uintptr(flags), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc acct(path *byte) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procacct)), 1, uintptr(unsafe.Pointer(path)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __makedev(version int, major uint, minor uint) (val uint64) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__makedev)), 3, uintptr(version), uintptr(major), uintptr(minor), 0, 0, 0)\n\tval = uint64(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __major(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__major)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc __minor(version int, dev uint64) (val uint) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&proc__minor)), 2, uintptr(version), uintptr(dev), 0, 0, 0, 0)\n\tval = uint(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlRet(fd int, req int, arg uintptr) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtrRet(fd int, req int, arg unsafe.Pointer) (ret int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procioctl)), 3, uintptr(fd), uintptr(req), uintptr(arg), 0, 0, 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc poll(fds *PollFd, nfds int, timeout int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpoll)), 3, uintptr(unsafe.Pointer(fds)), uintptr(nfds), uintptr(timeout), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Access(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAccess)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Adjtime(delta *Timeval, olddelta *Timeval) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procAdjtime)), 2, uintptr(unsafe.Pointer(delta)), uintptr(unsafe.Pointer(olddelta)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChmod)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Chroot(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procChroot)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ClockGettime(clockid int32, time *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClockGettime)), 2, uintptr(clockid), uintptr(unsafe.Pointer(time)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Close(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procClose)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Creat(path string, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procCreat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(fd int) (nfd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tnfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procDup2)), 2, uintptr(oldfd), uintptr(newfd), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Exit(code int) {\n\tsysvicall6(uintptr(unsafe.Pointer(&procExit)), 1, uintptr(code), 0, 0, 0, 0, 0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Faccessat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFaccessat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchdir(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchdir)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmod(fd int, mode uint32) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmod)), 2, uintptr(fd), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchmodat(dirfd int, path string, mode uint32, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchmodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchown)), 3, uintptr(fd), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fchownat(dirfd int, path string, uid int, gid int, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFchownat)), 5, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), uintptr(flags), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fdatasync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFdatasync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Flock(fd int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFlock)), 2, uintptr(fd), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fpathconf(fd int, name int) (val int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFpathconf)), 2, uintptr(fd), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstat(fd int, stat *Stat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstat)), 2, uintptr(fd), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatat(fd int, path string, stat *Stat_t, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatat)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fstatvfs(fd int, vfsstat *Statvfs_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFstatvfs)), 2, uintptr(fd), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getdents(fd int, buf []byte, basep *uintptr) (n int, err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetdents)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(unsafe.Pointer(basep)), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getgid() (gid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetgid)), 0, 0, 0, 0, 0, 0, 0)\n\tgid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpid() (pid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpgrp() (pgid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetpgrp)), 0, 0, 0, 0, 0, 0, 0)\n\tpgid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Geteuid() (euid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGeteuid)), 0, 0, 0, 0, 0, 0, 0)\n\teuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getegid() (egid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetegid)), 0, 0, 0, 0, 0, 0, 0)\n\tegid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getppid() (ppid int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procGetppid)), 0, 0, 0, 0, 0, 0, 0)\n\tppid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getpriority(which int, who int) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procGetpriority)), 2, uintptr(which), uintptr(who), 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrlimit(which int, lim *Rlimit) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrlimit)), 2, uintptr(which), uintptr(unsafe.Pointer(lim)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getrusage(who int, rusage *Rusage) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetrusage)), 2, uintptr(who), uintptr(unsafe.Pointer(rusage)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getsid(pid int) (sid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGetsid)), 1, uintptr(pid), 0, 0, 0, 0, 0)\n\tsid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Gettimeofday(tv *Timeval) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procGettimeofday)), 1, uintptr(unsafe.Pointer(tv)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Getuid() (uid int) {\n\tr0, _, _ := rawSysvicall6(uintptr(unsafe.Pointer(&procGetuid)), 0, 0, 0, 0, 0, 0, 0)\n\tuid = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Kill(pid int, signum syscall.Signal) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procKill)), 2, uintptr(pid), uintptr(signum), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lchown(path string, uid int, gid int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLchown)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(uid), uintptr(gid), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Link(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Listen(s int, backlog int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_llisten)), 2, uintptr(s), uintptr(backlog), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Lstat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procLstat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Madvise(b []byte, advice int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMadvise)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(advice), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdir)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkdirat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkdirat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifo(path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifo)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mkfifoat(dirfd int, path string, mode uint32) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMkfifoat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknod(path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknod)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mknodat(dirfd int, path string, mode uint32, dev int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMknodat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(dev), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mlockall(flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMlockall)), 1, uintptr(flags), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Mprotect(b []byte, prot int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMprotect)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(prot), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Msync(b []byte, flags int) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMsync)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlock(b []byte) (err error) {\n\tvar _p0 *byte\n\tif len(b) > 0 {\n\t\t_p0 = &b[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlock)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(b)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Munlockall() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procMunlockall)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Nanosleep(time *Timespec, leftover *Timespec) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procNanosleep)), 2, uintptr(unsafe.Pointer(time)), uintptr(unsafe.Pointer(leftover)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Open(path string, mode int, perm uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpen)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(mode), uintptr(perm), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Openat(dirfd int, path string, flags int, mode uint32) (fd int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procOpenat)), 4, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), uintptr(mode), 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pathconf(path string, name int) (val int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPathconf)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(name), 0, 0, 0, 0)\n\tval = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Pause() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procPause)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pread(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpread)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc pwrite(fd int, p []byte, offset int64) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procpwrite)), 4, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(offset), 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc read(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procread)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Readlink(path string, buf []byte) (n int, err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\tif len(buf) > 0 {\n\t\t_p1 = &buf[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procReadlink)), 3, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(len(buf)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rename(from string, to string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(from)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(to)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRename)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Renameat(olddirfd int, oldpath string, newdirfd int, newpath string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(oldpath)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(newpath)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRenameat)), 4, uintptr(olddirfd), uintptr(unsafe.Pointer(_p0)), uintptr(newdirfd), uintptr(unsafe.Pointer(_p1)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Rmdir(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procRmdir)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seek(fd int, offset int64, whence int) (newoffset int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proclseek)), 3, uintptr(fd), uintptr(offset), uintptr(whence), 0, 0, 0)\n\tnewoffset = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Select(nfd int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSelect)), 5, uintptr(nfd), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setegid(egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetegid)), 1, uintptr(egid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Seteuid(euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSeteuid)), 1, uintptr(euid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setgid(gid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetgid)), 1, uintptr(gid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sethostname(p []byte) (err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSethostname)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetpgid)), 2, uintptr(pid), uintptr(pgid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSetpriority)), 3, uintptr(which), uintptr(who), uintptr(prio), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetregid)), 2, uintptr(rgid), uintptr(egid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setreuid(ruid int, euid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetreuid)), 2, uintptr(ruid), uintptr(euid), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetsid)), 0, 0, 0, 0, 0, 0, 0)\n\tpid = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setuid(uid int) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procSetuid)), 1, uintptr(uid), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Shutdown(s int, how int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procshutdown)), 2, uintptr(s), uintptr(how), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Stat(path string, stat *Stat_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStat)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(stat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Statvfs(path string, vfsstat *Statvfs_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procStatvfs)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(vfsstat)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Symlink(path string, link string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(link)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSymlink)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sync() (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSync)), 0, 0, 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Sysconf(which int) (n int64, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procSysconf)), 1, uintptr(which), 0, 0, 0, 0, 0)\n\tn = int64(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procTimes)), 1, uintptr(unsafe.Pointer(tms)), 0, 0, 0, 0, 0)\n\tticks = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Truncate(path string, length int64) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procTruncate)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Fsync(fd int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFsync)), 1, uintptr(fd), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ftruncate(fd int, length int64) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procFtruncate)), 2, uintptr(fd), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Umask(mask int) (oldmask int) {\n\tr0, _, _ := sysvicall6(uintptr(unsafe.Pointer(&procUmask)), 1, uintptr(mask), 0, 0, 0, 0, 0)\n\toldmask = int(r0)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Uname(buf *Utsname) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procUname)), 1, uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unmount(target string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(target)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procumount)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlink(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlink)), 1, uintptr(unsafe.Pointer(_p0)), 0, 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Unlinkat(dirfd int, path string, flags int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUnlinkat)), 3, uintptr(dirfd), uintptr(unsafe.Pointer(_p0)), uintptr(flags), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Ustat(dev int, ubuf *Ustat_t) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUstat)), 2, uintptr(dev), uintptr(unsafe.Pointer(ubuf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Utime(path string, buf *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procUtime)), 2, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(buf)), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc bind(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_bind)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc connect(s int, addr unsafe.Pointer, addrlen _Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_connect)), 3, uintptr(s), uintptr(addr), uintptr(addrlen), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc mmap(addr uintptr, length uintptr, prot int, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmmap)), 6, uintptr(addr), uintptr(length), uintptr(prot), uintptr(flag), uintptr(fd), uintptr(pos))\n\tret = uintptr(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc munmap(addr uintptr, length uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procmunmap)), 2, uintptr(addr), uintptr(length), 0, 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendfile(outfd int, infd int, offset *int64, count int) (written int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsendfile)), 4, uintptr(outfd), uintptr(infd), uintptr(unsafe.Pointer(offset)), uintptr(count), 0, 0)\n\twritten = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc sendto(s int, buf []byte, flags int, to unsafe.Pointer, addrlen _Socklen) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_sendto)), 6, uintptr(s), uintptr(unsafe.Pointer(_p0)), uintptr(len(buf)), uintptr(flags), uintptr(to), uintptr(addrlen))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socket(domain int, typ int, proto int) (fd int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socket)), 3, uintptr(domain), uintptr(typ), uintptr(proto), 0, 0, 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc socketpair(domain int, typ int, proto int, fd *[2]int32) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&proc__xnet_socketpair)), 4, uintptr(domain), uintptr(typ), uintptr(proto), uintptr(unsafe.Pointer(fd)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc write(fd int, p []byte) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procwrite)), 3, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getsockopt(s int, level int, name int, val unsafe.Pointer, vallen *_Socklen) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&proc__xnet_getsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(unsafe.Pointer(vallen)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getpeername(fd int, rsa *RawSockaddrAny, addrlen *_Socklen) (err error) {\n\t_, _, e1 := rawSysvicall6(uintptr(unsafe.Pointer(&procgetpeername)), 3, uintptr(fd), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)), 0, 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc setsockopt(s int, level int, name int, val unsafe.Pointer, vallen uintptr) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procsetsockopt)), 5, uintptr(s), uintptr(level), uintptr(name), uintptr(val), uintptr(vallen), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc recvfrom(fd int, p []byte, flags int, from *RawSockaddrAny, fromlen *_Socklen) (n int, err error) {\n\tvar _p0 *byte\n\tif len(p) > 0 {\n\t\t_p0 = &p[0]\n\t}\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procrecvfrom)), 6, uintptr(fd), uintptr(unsafe.Pointer(_p0)), uintptr(len(p)), uintptr(flags), uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(fromlen)))\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_create() (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_create)), 0, 0, 0, 0, 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_associate(port int, source int, object uintptr, events int, user *byte) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_associate)), 5, uintptr(port), uintptr(source), uintptr(object), uintptr(events), uintptr(unsafe.Pointer(user)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_dissociate(port int, source int, object uintptr) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_dissociate)), 3, uintptr(port), uintptr(source), uintptr(object), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_get(port int, pe *portEvent, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_get)), 3, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(unsafe.Pointer(timeout)), 0, 0, 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc port_getn(port int, pe *portEvent, max uint32, nget *uint32, timeout *Timespec) (n int, err error) {\n\tr0, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procport_getn)), 5, uintptr(port), uintptr(unsafe.Pointer(pe)), uintptr(max), uintptr(unsafe.Pointer(nget)), uintptr(unsafe.Pointer(timeout)), 0)\n\tn = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc putmsg(fd int, clptr *strbuf, dataptr *strbuf, flags int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procputmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(flags), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc getmsg(fd int, clptr *strbuf, dataptr *strbuf, flags *int) (err error) {\n\t_, _, e1 := sysvicall6(uintptr(unsafe.Pointer(&procgetmsg)), 4, uintptr(fd), uintptr(unsafe.Pointer(clptr)), uintptr(unsafe.Pointer(dataptr)), uintptr(unsafe.Pointer(flags)), 0, 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsyscall_zos_s390x.go",
    "content": "// go run mksyscall.go -tags zos,s390x syscall_zos_s390x.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build zos && s390x\n\npackage unix\n\nimport (\n\t\"unsafe\"\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_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 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(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 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(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 accept(s int, rsa *RawSockaddrAny, addrlen *_Socklen) (fd int, err error) {\n\tr0, _, e1 := syscall_syscall(SYS___ACCEPT_A, 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_syscall(SYS___BIND_A, 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_syscall(SYS___CONNECT_A, 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 := syscall_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 := syscall_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 := syscall_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 := syscall_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 := syscall_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 := syscall_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 := syscall_rawsyscall(SYS___GETPEERNAME_A, 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 := syscall_rawsyscall(SYS___GETSOCKNAME_A, 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 := syscall_syscall6(SYS___RECVFROM_A, 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 := syscall_syscall6(SYS___SENDTO_A, 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_syscall(SYS___RECVMSG_A, 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_syscall(SYS___SENDMSG_A, 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, flag int, fd int, pos int64) (ret uintptr, err error) {\n\tr0, _, e1 := syscall_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_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 ioctl(fd int, req int, arg uintptr) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_IOCTL, uintptr(fd), uintptr(req), uintptr(arg))\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc ioctlPtr(fd int, req int, arg unsafe.Pointer) (err error) {\n\t_, _, e1 := syscall_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_syscall(SYS___ACCESS_A, 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 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(SYS___CHDIR_A, 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 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(SYS___CHOWN_A, 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 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(SYS___CHMOD_A, 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 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 := syscall_syscall(SYS___CREAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mode), 0)\n\tfd = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Dup(oldfd int) (fd int, err error) {\n\tr0, _, e1 := syscall_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 Dup2(oldfd int, newfd int) (err error) {\n\t_, _, e1 := syscall_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 Errno2() (er2 int) {\n\tuer2, _, _ := syscall_syscall(SYS___ERRNO2, 0, 0, 0)\n\ter2 = int(uer2)\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Err2ad() (eadd *int) {\n\tueadd, _, _ := syscall_syscall(SYS___ERR2AD, 0, 0, 0)\n\teadd = (*int)(unsafe.Pointer(ueadd))\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_syscall(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 Fchdir(fd int) (err error) {\n\t_, _, e1 := syscall_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_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 Fchown(fd int, uid int, gid int) (err error) {\n\t_, _, e1 := syscall_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 FcntlInt(fd uintptr, cmd int, arg int) (retval int, err error) {\n\tr0, _, e1 := syscall_syscall(SYS_FCNTL, uintptr(fd), uintptr(cmd), uintptr(arg))\n\tretval = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_LE_t) (err error) {\n\t_, _, e1 := syscall_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 Fstatvfs(fd int, stat *Statvfs_t) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_FSTATVFS, 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_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_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 Getpagesize() (pgsize int) {\n\tr0, _, _ := syscall_syscall(SYS_GETPAGESIZE, 0, 0, 0)\n\tpgsize = int(r0)\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_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_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 Poll(fds []PollFd, timeout int) (n int, err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(fds) > 0 {\n\t\t_p0 = unsafe.Pointer(&fds[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\tr0, _, e1 := syscall_syscall(SYS_POLL, uintptr(_p0), uintptr(len(fds)), 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 Times(tms *Tms) (ticks uintptr, err error) {\n\tr0, _, e1 := syscall_syscall(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 W_Getmntent(buff *byte, size int) (lastsys int, err error) {\n\tr0, _, e1 := syscall_syscall(SYS_W_GETMNTENT, uintptr(unsafe.Pointer(buff)), uintptr(size), 0)\n\tlastsys = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc W_Getmntent_A(buff *byte, size int) (lastsys int, err error) {\n\tr0, _, e1 := syscall_syscall(SYS___W_GETMNTENT_A, uintptr(unsafe.Pointer(buff)), uintptr(size), 0)\n\tlastsys = int(r0)\n\tif e1 != 0 {\n\t\terr = 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_LE(path string, filesystem string, fstype string, mtm uint32, parmlen int32, parm string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p2 *byte\n\t_p2, err = BytePtrFromString(fstype)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p3 *byte\n\t_p3, err = BytePtrFromString(parm)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall6(SYS___MOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(_p1)), uintptr(unsafe.Pointer(_p2)), uintptr(mtm), uintptr(parmlen), uintptr(unsafe.Pointer(_p3)))\n\tif e1 != 0 {\n\t\terr = 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(filesystem string, mtm int) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(filesystem)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(SYS___UMOUNT_A, uintptr(unsafe.Pointer(_p0)), uintptr(mtm), 0)\n\tif e1 != 0 {\n\t\terr = 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_syscall(SYS___CHROOT_A, 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 Uname(buf *Utsname) (err error) {\n\t_, _, e1 := syscall_rawsyscall(SYS___UNAME_A, 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 Gethostname(buf []byte) (err error) {\n\tvar _p0 unsafe.Pointer\n\tif len(buf) > 0 {\n\t\t_p0 = unsafe.Pointer(&buf[0])\n\t} else {\n\t\t_p0 = unsafe.Pointer(&_zero)\n\t}\n\t_, _, e1 := syscall_syscall(SYS___GETHOSTNAME_A, uintptr(_p0), uintptr(len(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 Getegid() (egid int) {\n\tr0, _, _ := syscall_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, _, _ := syscall_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, _, _ := syscall_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 Getpid() (pid int) {\n\tr0, _, _ := syscall_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 Getpgid(pid int) (pgid int, err error) {\n\tr0, _, e1 := syscall_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 Getppid() (pid int) {\n\tr0, _, _ := syscall_rawsyscall(SYS_GETPPID, 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 Getpriority(which int, who int) (prio int, err error) {\n\tr0, _, e1 := syscall_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(resource int, rlim *Rlimit) (err error) {\n\t_, _, e1 := syscall_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 getrusage(who int, rusage *rusage_zos) (err error) {\n\t_, _, e1 := syscall_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 := syscall_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, _, _ := syscall_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 Kill(pid int, sig Signal) (err error) {\n\t_, _, e1 := syscall_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 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(SYS___LCHOWN_A, 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_syscall(SYS___LINK_A, 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 Listen(s int, n int) (err error) {\n\t_, _, e1 := syscall_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_LE_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(SYS___LSTAT_A, 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_syscall(SYS___MKDIR_A, 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 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(SYS___MKFIFO_A, 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_syscall(SYS___MKNOD_A, 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 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(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 := syscall_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 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(SYS___READLINK_A, 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_syscall(SYS___RENAME_A, 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 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(SYS___RMDIR_A, 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) (off int64, err error) {\n\tr0, _, e1 := syscall_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 Setpriority(which int, who int, prio int) (err error) {\n\t_, _, e1 := syscall_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 Setpgid(pid int, pgid int) (err error) {\n\t_, _, e1 := syscall_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 Setrlimit(resource int, lim *Rlimit) (err error) {\n\t_, _, e1 := syscall_rawsyscall(SYS_SETRLIMIT, uintptr(resource), 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 Setregid(rgid int, egid int) (err error) {\n\t_, _, e1 := syscall_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 := syscall_rawsyscall(SYS_SETREUID, uintptr(ruid), uintptr(euid), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Setsid() (pid int, err error) {\n\tr0, _, e1 := syscall_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 Setuid(uid int) (err error) {\n\t_, _, e1 := syscall_syscall(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 Setgid(uid int) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_SETGID, 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 Shutdown(fd int, how int) (err error) {\n\t_, _, e1 := syscall_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 stat(path string, statLE *Stat_LE_t) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(SYS___STAT_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(statLE)), 0)\n\tif e1 != 0 {\n\t\terr = 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_syscall(SYS___SYMLINK_A, 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 Sync() {\n\tsyscall_syscall(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 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(SYS___TRUNCATE_A, 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 Tcgetattr(fildes int, termptr *Termios) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_TCGETATTR, uintptr(fildes), uintptr(unsafe.Pointer(termptr)), 0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\n// THIS FILE IS GENERATED BY THE COMMAND AT THE TOP; DO NOT EDIT\n\nfunc Tcsetattr(fildes int, when int, termptr *Termios) (err error) {\n\t_, _, e1 := syscall_syscall(SYS_TCSETATTR, uintptr(fildes), uintptr(when), uintptr(unsafe.Pointer(termptr)))\n\tif e1 != 0 {\n\t\terr = 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, _, _ := syscall_syscall(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 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(SYS___UNLINK_A, 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 Utime(path string, utim *Utimbuf) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(SYS___UTIME_A, uintptr(unsafe.Pointer(_p0)), uintptr(unsafe.Pointer(utim)), 0)\n\tif e1 != 0 {\n\t\terr = 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_syscall(SYS___OPEN_A, 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 remove(path string) (err error) {\n\tvar _p0 *byte\n\t_p0, err = BytePtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\t_, _, e1 := syscall_syscall(SYS_REMOVE, 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 waitpid(pid int, wstatus *_C_int, options int) (wpid int, err error) {\n\tr0, _, e1 := syscall_syscall(SYS_WAITPID, uintptr(pid), uintptr(unsafe.Pointer(wstatus)), uintptr(options))\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 gettimeofday(tv *timeval_zos) (err error) {\n\t_, _, e1 := syscall_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 pipe(p *[2]_C_int) (err error) {\n\t_, _, e1 := syscall_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 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(SYS___UTIMES_A, 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 Select(nmsgsfds int, r *FdSet, w *FdSet, e *FdSet, timeout *Timeval) (ret int, err error) {\n\tr0, _, e1 := syscall_syscall6(SYS_SELECT, uintptr(nmsgsfds), uintptr(unsafe.Pointer(r)), uintptr(unsafe.Pointer(w)), uintptr(unsafe.Pointer(e)), uintptr(unsafe.Pointer(timeout)), 0)\n\tret = int(r0)\n\tif e1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_386.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_amd64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_arm.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_arm64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_mips64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_ppc64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysctl_openbsd_riscv64.go",
    "content": "// go run mksysctl_openbsd.go\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\ntype mibentry struct {\n\tctlname string\n\tctloid  []_C_int\n}\n\nvar sysctlMib = []mibentry{\n\t{\"ddb.console\", []_C_int{9, 6}},\n\t{\"ddb.log\", []_C_int{9, 7}},\n\t{\"ddb.max_line\", []_C_int{9, 3}},\n\t{\"ddb.max_width\", []_C_int{9, 2}},\n\t{\"ddb.panic\", []_C_int{9, 5}},\n\t{\"ddb.profile\", []_C_int{9, 9}},\n\t{\"ddb.radix\", []_C_int{9, 1}},\n\t{\"ddb.tab_stop_width\", []_C_int{9, 4}},\n\t{\"ddb.trigger\", []_C_int{9, 8}},\n\t{\"sftpfs.posix.setuid\", []_C_int{3, 1, 1}},\n\t{\"hw.allowpowerdown\", []_C_int{6, 22}},\n\t{\"hw.byteorder\", []_C_int{6, 4}},\n\t{\"hw.cpuspeed\", []_C_int{6, 12}},\n\t{\"hw.diskcount\", []_C_int{6, 10}},\n\t{\"hw.disknames\", []_C_int{6, 8}},\n\t{\"hw.diskstats\", []_C_int{6, 9}},\n\t{\"hw.machine\", []_C_int{6, 1}},\n\t{\"hw.model\", []_C_int{6, 2}},\n\t{\"hw.ncpu\", []_C_int{6, 3}},\n\t{\"hw.ncpufound\", []_C_int{6, 21}},\n\t{\"hw.ncpuonline\", []_C_int{6, 25}},\n\t{\"hw.pagesize\", []_C_int{6, 7}},\n\t{\"hw.perfpolicy\", []_C_int{6, 23}},\n\t{\"hw.physmem\", []_C_int{6, 19}},\n\t{\"hw.power\", []_C_int{6, 26}},\n\t{\"hw.product\", []_C_int{6, 15}},\n\t{\"hw.serialno\", []_C_int{6, 17}},\n\t{\"hw.setperf\", []_C_int{6, 13}},\n\t{\"hw.smt\", []_C_int{6, 24}},\n\t{\"hw.usermem\", []_C_int{6, 20}},\n\t{\"hw.uuid\", []_C_int{6, 18}},\n\t{\"hw.vendor\", []_C_int{6, 14}},\n\t{\"hw.version\", []_C_int{6, 16}},\n\t{\"kern.allowdt\", []_C_int{1, 65}},\n\t{\"kern.allowkmem\", []_C_int{1, 52}},\n\t{\"kern.argmax\", []_C_int{1, 8}},\n\t{\"kern.audio\", []_C_int{1, 84}},\n\t{\"kern.boottime\", []_C_int{1, 21}},\n\t{\"kern.bufcachepercent\", []_C_int{1, 72}},\n\t{\"kern.ccpu\", []_C_int{1, 45}},\n\t{\"kern.clockrate\", []_C_int{1, 12}},\n\t{\"kern.consbuf\", []_C_int{1, 83}},\n\t{\"kern.consbufsize\", []_C_int{1, 82}},\n\t{\"kern.consdev\", []_C_int{1, 75}},\n\t{\"kern.cp_time\", []_C_int{1, 40}},\n\t{\"kern.cp_time2\", []_C_int{1, 71}},\n\t{\"kern.cpustats\", []_C_int{1, 85}},\n\t{\"kern.domainname\", []_C_int{1, 22}},\n\t{\"kern.file\", []_C_int{1, 73}},\n\t{\"kern.forkstat\", []_C_int{1, 42}},\n\t{\"kern.fscale\", []_C_int{1, 46}},\n\t{\"kern.fsync\", []_C_int{1, 33}},\n\t{\"kern.global_ptrace\", []_C_int{1, 81}},\n\t{\"kern.hostid\", []_C_int{1, 11}},\n\t{\"kern.hostname\", []_C_int{1, 10}},\n\t{\"kern.intrcnt.nintrcnt\", []_C_int{1, 63, 1}},\n\t{\"kern.job_control\", []_C_int{1, 19}},\n\t{\"kern.malloc.buckets\", []_C_int{1, 39, 1}},\n\t{\"kern.malloc.kmemnames\", []_C_int{1, 39, 3}},\n\t{\"kern.maxclusters\", []_C_int{1, 67}},\n\t{\"kern.maxfiles\", []_C_int{1, 7}},\n\t{\"kern.maxlocksperuid\", []_C_int{1, 70}},\n\t{\"kern.maxpartitions\", []_C_int{1, 23}},\n\t{\"kern.maxproc\", []_C_int{1, 6}},\n\t{\"kern.maxthread\", []_C_int{1, 25}},\n\t{\"kern.maxvnodes\", []_C_int{1, 5}},\n\t{\"kern.mbstat\", []_C_int{1, 59}},\n\t{\"kern.msgbuf\", []_C_int{1, 48}},\n\t{\"kern.msgbufsize\", []_C_int{1, 38}},\n\t{\"kern.nchstats\", []_C_int{1, 41}},\n\t{\"kern.netlivelocks\", []_C_int{1, 76}},\n\t{\"kern.nfiles\", []_C_int{1, 56}},\n\t{\"kern.ngroups\", []_C_int{1, 18}},\n\t{\"kern.nosuidcoredump\", []_C_int{1, 32}},\n\t{\"kern.nprocs\", []_C_int{1, 47}},\n\t{\"kern.nselcoll\", []_C_int{1, 43}},\n\t{\"kern.nthreads\", []_C_int{1, 26}},\n\t{\"kern.numvnodes\", []_C_int{1, 58}},\n\t{\"kern.osrelease\", []_C_int{1, 2}},\n\t{\"kern.osrevision\", []_C_int{1, 3}},\n\t{\"kern.ostype\", []_C_int{1, 1}},\n\t{\"kern.osversion\", []_C_int{1, 27}},\n\t{\"kern.pfstatus\", []_C_int{1, 86}},\n\t{\"kern.pool_debug\", []_C_int{1, 77}},\n\t{\"kern.posix1version\", []_C_int{1, 17}},\n\t{\"kern.proc\", []_C_int{1, 66}},\n\t{\"kern.rawpartition\", []_C_int{1, 24}},\n\t{\"kern.saved_ids\", []_C_int{1, 20}},\n\t{\"kern.securelevel\", []_C_int{1, 9}},\n\t{\"kern.seminfo\", []_C_int{1, 61}},\n\t{\"kern.shminfo\", []_C_int{1, 62}},\n\t{\"kern.somaxconn\", []_C_int{1, 28}},\n\t{\"kern.sominconn\", []_C_int{1, 29}},\n\t{\"kern.splassert\", []_C_int{1, 54}},\n\t{\"kern.stackgap_random\", []_C_int{1, 50}},\n\t{\"kern.sysvipc_info\", []_C_int{1, 51}},\n\t{\"kern.sysvmsg\", []_C_int{1, 34}},\n\t{\"kern.sysvsem\", []_C_int{1, 35}},\n\t{\"kern.sysvshm\", []_C_int{1, 36}},\n\t{\"kern.timecounter.choice\", []_C_int{1, 69, 4}},\n\t{\"kern.timecounter.hardware\", []_C_int{1, 69, 3}},\n\t{\"kern.timecounter.tick\", []_C_int{1, 69, 1}},\n\t{\"kern.timecounter.timestepwarnings\", []_C_int{1, 69, 2}},\n\t{\"kern.timeout_stats\", []_C_int{1, 87}},\n\t{\"kern.tty.tk_cancc\", []_C_int{1, 44, 4}},\n\t{\"kern.tty.tk_nin\", []_C_int{1, 44, 1}},\n\t{\"kern.tty.tk_nout\", []_C_int{1, 44, 2}},\n\t{\"kern.tty.tk_rawcc\", []_C_int{1, 44, 3}},\n\t{\"kern.tty.ttyinfo\", []_C_int{1, 44, 5}},\n\t{\"kern.ttycount\", []_C_int{1, 57}},\n\t{\"kern.utc_offset\", []_C_int{1, 88}},\n\t{\"kern.version\", []_C_int{1, 4}},\n\t{\"kern.video\", []_C_int{1, 89}},\n\t{\"kern.watchdog.auto\", []_C_int{1, 64, 2}},\n\t{\"kern.watchdog.period\", []_C_int{1, 64, 1}},\n\t{\"kern.witnesswatch\", []_C_int{1, 53}},\n\t{\"kern.wxabort\", []_C_int{1, 74}},\n\t{\"net.bpf.bufsize\", []_C_int{4, 31, 1}},\n\t{\"net.bpf.maxbufsize\", []_C_int{4, 31, 2}},\n\t{\"net.inet.ah.enable\", []_C_int{4, 2, 51, 1}},\n\t{\"net.inet.ah.stats\", []_C_int{4, 2, 51, 2}},\n\t{\"net.inet.carp.allow\", []_C_int{4, 2, 112, 1}},\n\t{\"net.inet.carp.log\", []_C_int{4, 2, 112, 3}},\n\t{\"net.inet.carp.preempt\", []_C_int{4, 2, 112, 2}},\n\t{\"net.inet.carp.stats\", []_C_int{4, 2, 112, 4}},\n\t{\"net.inet.divert.recvspace\", []_C_int{4, 2, 258, 1}},\n\t{\"net.inet.divert.sendspace\", []_C_int{4, 2, 258, 2}},\n\t{\"net.inet.divert.stats\", []_C_int{4, 2, 258, 3}},\n\t{\"net.inet.esp.enable\", []_C_int{4, 2, 50, 1}},\n\t{\"net.inet.esp.stats\", []_C_int{4, 2, 50, 4}},\n\t{\"net.inet.esp.udpencap\", []_C_int{4, 2, 50, 2}},\n\t{\"net.inet.esp.udpencap_port\", []_C_int{4, 2, 50, 3}},\n\t{\"net.inet.etherip.allow\", []_C_int{4, 2, 97, 1}},\n\t{\"net.inet.etherip.stats\", []_C_int{4, 2, 97, 2}},\n\t{\"net.inet.gre.allow\", []_C_int{4, 2, 47, 1}},\n\t{\"net.inet.gre.wccp\", []_C_int{4, 2, 47, 2}},\n\t{\"net.inet.icmp.bmcastecho\", []_C_int{4, 2, 1, 2}},\n\t{\"net.inet.icmp.errppslimit\", []_C_int{4, 2, 1, 3}},\n\t{\"net.inet.icmp.maskrepl\", []_C_int{4, 2, 1, 1}},\n\t{\"net.inet.icmp.rediraccept\", []_C_int{4, 2, 1, 4}},\n\t{\"net.inet.icmp.redirtimeout\", []_C_int{4, 2, 1, 5}},\n\t{\"net.inet.icmp.stats\", []_C_int{4, 2, 1, 7}},\n\t{\"net.inet.icmp.tstamprepl\", []_C_int{4, 2, 1, 6}},\n\t{\"net.inet.igmp.stats\", []_C_int{4, 2, 2, 1}},\n\t{\"net.inet.ip.arpdown\", []_C_int{4, 2, 0, 40}},\n\t{\"net.inet.ip.arpqueued\", []_C_int{4, 2, 0, 36}},\n\t{\"net.inet.ip.arptimeout\", []_C_int{4, 2, 0, 39}},\n\t{\"net.inet.ip.encdebug\", []_C_int{4, 2, 0, 12}},\n\t{\"net.inet.ip.forwarding\", []_C_int{4, 2, 0, 1}},\n\t{\"net.inet.ip.ifq.congestion\", []_C_int{4, 2, 0, 30, 4}},\n\t{\"net.inet.ip.ifq.drops\", []_C_int{4, 2, 0, 30, 3}},\n\t{\"net.inet.ip.ifq.len\", []_C_int{4, 2, 0, 30, 1}},\n\t{\"net.inet.ip.ifq.maxlen\", []_C_int{4, 2, 0, 30, 2}},\n\t{\"net.inet.ip.maxqueue\", []_C_int{4, 2, 0, 11}},\n\t{\"net.inet.ip.mforwarding\", []_C_int{4, 2, 0, 31}},\n\t{\"net.inet.ip.mrtmfc\", []_C_int{4, 2, 0, 37}},\n\t{\"net.inet.ip.mrtproto\", []_C_int{4, 2, 0, 34}},\n\t{\"net.inet.ip.mrtstats\", []_C_int{4, 2, 0, 35}},\n\t{\"net.inet.ip.mrtvif\", []_C_int{4, 2, 0, 38}},\n\t{\"net.inet.ip.mtu\", []_C_int{4, 2, 0, 4}},\n\t{\"net.inet.ip.mtudisc\", []_C_int{4, 2, 0, 27}},\n\t{\"net.inet.ip.mtudisctimeout\", []_C_int{4, 2, 0, 28}},\n\t{\"net.inet.ip.multipath\", []_C_int{4, 2, 0, 32}},\n\t{\"net.inet.ip.portfirst\", []_C_int{4, 2, 0, 7}},\n\t{\"net.inet.ip.porthifirst\", []_C_int{4, 2, 0, 9}},\n\t{\"net.inet.ip.porthilast\", []_C_int{4, 2, 0, 10}},\n\t{\"net.inet.ip.portlast\", []_C_int{4, 2, 0, 8}},\n\t{\"net.inet.ip.redirect\", []_C_int{4, 2, 0, 2}},\n\t{\"net.inet.ip.sourceroute\", []_C_int{4, 2, 0, 5}},\n\t{\"net.inet.ip.stats\", []_C_int{4, 2, 0, 33}},\n\t{\"net.inet.ip.ttl\", []_C_int{4, 2, 0, 3}},\n\t{\"net.inet.ipcomp.enable\", []_C_int{4, 2, 108, 1}},\n\t{\"net.inet.ipcomp.stats\", []_C_int{4, 2, 108, 2}},\n\t{\"net.inet.ipip.allow\", []_C_int{4, 2, 4, 1}},\n\t{\"net.inet.ipip.stats\", []_C_int{4, 2, 4, 2}},\n\t{\"net.inet.pfsync.stats\", []_C_int{4, 2, 240, 1}},\n\t{\"net.inet.tcp.ackonpush\", []_C_int{4, 2, 6, 13}},\n\t{\"net.inet.tcp.always_keepalive\", []_C_int{4, 2, 6, 22}},\n\t{\"net.inet.tcp.baddynamic\", []_C_int{4, 2, 6, 6}},\n\t{\"net.inet.tcp.drop\", []_C_int{4, 2, 6, 19}},\n\t{\"net.inet.tcp.ecn\", []_C_int{4, 2, 6, 14}},\n\t{\"net.inet.tcp.ident\", []_C_int{4, 2, 6, 9}},\n\t{\"net.inet.tcp.keepidle\", []_C_int{4, 2, 6, 3}},\n\t{\"net.inet.tcp.keepinittime\", []_C_int{4, 2, 6, 2}},\n\t{\"net.inet.tcp.keepintvl\", []_C_int{4, 2, 6, 4}},\n\t{\"net.inet.tcp.mssdflt\", []_C_int{4, 2, 6, 11}},\n\t{\"net.inet.tcp.reasslimit\", []_C_int{4, 2, 6, 18}},\n\t{\"net.inet.tcp.rfc1323\", []_C_int{4, 2, 6, 1}},\n\t{\"net.inet.tcp.rfc3390\", []_C_int{4, 2, 6, 17}},\n\t{\"net.inet.tcp.rootonly\", []_C_int{4, 2, 6, 24}},\n\t{\"net.inet.tcp.rstppslimit\", []_C_int{4, 2, 6, 12}},\n\t{\"net.inet.tcp.sack\", []_C_int{4, 2, 6, 10}},\n\t{\"net.inet.tcp.sackholelimit\", []_C_int{4, 2, 6, 20}},\n\t{\"net.inet.tcp.slowhz\", []_C_int{4, 2, 6, 5}},\n\t{\"net.inet.tcp.stats\", []_C_int{4, 2, 6, 21}},\n\t{\"net.inet.tcp.synbucketlimit\", []_C_int{4, 2, 6, 16}},\n\t{\"net.inet.tcp.syncachelimit\", []_C_int{4, 2, 6, 15}},\n\t{\"net.inet.tcp.synhashsize\", []_C_int{4, 2, 6, 25}},\n\t{\"net.inet.tcp.synuselimit\", []_C_int{4, 2, 6, 23}},\n\t{\"net.inet.udp.baddynamic\", []_C_int{4, 2, 17, 2}},\n\t{\"net.inet.udp.checksum\", []_C_int{4, 2, 17, 1}},\n\t{\"net.inet.udp.recvspace\", []_C_int{4, 2, 17, 3}},\n\t{\"net.inet.udp.rootonly\", []_C_int{4, 2, 17, 6}},\n\t{\"net.inet.udp.sendspace\", []_C_int{4, 2, 17, 4}},\n\t{\"net.inet.udp.stats\", []_C_int{4, 2, 17, 5}},\n\t{\"net.inet6.divert.recvspace\", []_C_int{4, 24, 86, 1}},\n\t{\"net.inet6.divert.sendspace\", []_C_int{4, 24, 86, 2}},\n\t{\"net.inet6.divert.stats\", []_C_int{4, 24, 86, 3}},\n\t{\"net.inet6.icmp6.errppslimit\", []_C_int{4, 24, 30, 14}},\n\t{\"net.inet6.icmp6.mtudisc_hiwat\", []_C_int{4, 24, 30, 16}},\n\t{\"net.inet6.icmp6.mtudisc_lowat\", []_C_int{4, 24, 30, 17}},\n\t{\"net.inet6.icmp6.nd6_debug\", []_C_int{4, 24, 30, 18}},\n\t{\"net.inet6.icmp6.nd6_delay\", []_C_int{4, 24, 30, 8}},\n\t{\"net.inet6.icmp6.nd6_maxnudhint\", []_C_int{4, 24, 30, 15}},\n\t{\"net.inet6.icmp6.nd6_mmaxtries\", []_C_int{4, 24, 30, 10}},\n\t{\"net.inet6.icmp6.nd6_umaxtries\", []_C_int{4, 24, 30, 9}},\n\t{\"net.inet6.icmp6.redirtimeout\", []_C_int{4, 24, 30, 3}},\n\t{\"net.inet6.ip6.auto_flowlabel\", []_C_int{4, 24, 17, 17}},\n\t{\"net.inet6.ip6.dad_count\", []_C_int{4, 24, 17, 16}},\n\t{\"net.inet6.ip6.dad_pending\", []_C_int{4, 24, 17, 49}},\n\t{\"net.inet6.ip6.defmcasthlim\", []_C_int{4, 24, 17, 18}},\n\t{\"net.inet6.ip6.forwarding\", []_C_int{4, 24, 17, 1}},\n\t{\"net.inet6.ip6.forwsrcrt\", []_C_int{4, 24, 17, 5}},\n\t{\"net.inet6.ip6.hdrnestlimit\", []_C_int{4, 24, 17, 15}},\n\t{\"net.inet6.ip6.hlim\", []_C_int{4, 24, 17, 3}},\n\t{\"net.inet6.ip6.log_interval\", []_C_int{4, 24, 17, 14}},\n\t{\"net.inet6.ip6.maxdynroutes\", []_C_int{4, 24, 17, 48}},\n\t{\"net.inet6.ip6.maxfragpackets\", []_C_int{4, 24, 17, 9}},\n\t{\"net.inet6.ip6.maxfrags\", []_C_int{4, 24, 17, 41}},\n\t{\"net.inet6.ip6.mforwarding\", []_C_int{4, 24, 17, 42}},\n\t{\"net.inet6.ip6.mrtmfc\", []_C_int{4, 24, 17, 53}},\n\t{\"net.inet6.ip6.mrtmif\", []_C_int{4, 24, 17, 52}},\n\t{\"net.inet6.ip6.mrtproto\", []_C_int{4, 24, 17, 8}},\n\t{\"net.inet6.ip6.mtudisctimeout\", []_C_int{4, 24, 17, 50}},\n\t{\"net.inet6.ip6.multicast_mtudisc\", []_C_int{4, 24, 17, 44}},\n\t{\"net.inet6.ip6.multipath\", []_C_int{4, 24, 17, 43}},\n\t{\"net.inet6.ip6.neighborgcthresh\", []_C_int{4, 24, 17, 45}},\n\t{\"net.inet6.ip6.redirect\", []_C_int{4, 24, 17, 2}},\n\t{\"net.inet6.ip6.soiikey\", []_C_int{4, 24, 17, 54}},\n\t{\"net.inet6.ip6.sourcecheck\", []_C_int{4, 24, 17, 10}},\n\t{\"net.inet6.ip6.sourcecheck_logint\", []_C_int{4, 24, 17, 11}},\n\t{\"net.inet6.ip6.use_deprecated\", []_C_int{4, 24, 17, 21}},\n\t{\"net.key.sadb_dump\", []_C_int{4, 30, 1}},\n\t{\"net.key.spd_dump\", []_C_int{4, 30, 2}},\n\t{\"net.mpls.ifq.congestion\", []_C_int{4, 33, 3, 4}},\n\t{\"net.mpls.ifq.drops\", []_C_int{4, 33, 3, 3}},\n\t{\"net.mpls.ifq.len\", []_C_int{4, 33, 3, 1}},\n\t{\"net.mpls.ifq.maxlen\", []_C_int{4, 33, 3, 2}},\n\t{\"net.mpls.mapttl_ip\", []_C_int{4, 33, 5}},\n\t{\"net.mpls.mapttl_ip6\", []_C_int{4, 33, 6}},\n\t{\"net.mpls.ttl\", []_C_int{4, 33, 2}},\n\t{\"net.pflow.stats\", []_C_int{4, 34, 1}},\n\t{\"net.pipex.enable\", []_C_int{4, 35, 1}},\n\t{\"vm.anonmin\", []_C_int{2, 7}},\n\t{\"vm.loadavg\", []_C_int{2, 2}},\n\t{\"vm.malloc_conf\", []_C_int{2, 12}},\n\t{\"vm.maxslp\", []_C_int{2, 10}},\n\t{\"vm.nkmempages\", []_C_int{2, 6}},\n\t{\"vm.psstrings\", []_C_int{2, 3}},\n\t{\"vm.swapencrypt.enable\", []_C_int{2, 5, 0}},\n\t{\"vm.swapencrypt.keyscreated\", []_C_int{2, 5, 1}},\n\t{\"vm.swapencrypt.keysdeleted\", []_C_int{2, 5, 2}},\n\t{\"vm.uspace\", []_C_int{2, 11}},\n\t{\"vm.uvmexp\", []_C_int{2, 4}},\n\t{\"vm.vmmeter\", []_C_int{2, 1}},\n\t{\"vm.vnodemin\", []_C_int{2, 9}},\n\t{\"vm.vtextmin\", []_C_int{2, 8}},\n}\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_darwin_amd64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_KQUEUE_WORKLOOP_CTL            = 530\n\tSYS___MACH_BRIDGE_REMOTE_TIME      = 531\n\tSYS_MAXSYSCALL                     = 532\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_darwin_arm64.go",
    "content": "// go run mksysnum.go /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/sys/syscall.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\n// Deprecated: Use libSystem wrappers instead of direct syscalls.\nconst (\n\tSYS_SYSCALL                        = 0\n\tSYS_EXIT                           = 1\n\tSYS_FORK                           = 2\n\tSYS_READ                           = 3\n\tSYS_WRITE                          = 4\n\tSYS_OPEN                           = 5\n\tSYS_CLOSE                          = 6\n\tSYS_WAIT4                          = 7\n\tSYS_LINK                           = 9\n\tSYS_UNLINK                         = 10\n\tSYS_CHDIR                          = 12\n\tSYS_FCHDIR                         = 13\n\tSYS_MKNOD                          = 14\n\tSYS_CHMOD                          = 15\n\tSYS_CHOWN                          = 16\n\tSYS_GETFSSTAT                      = 18\n\tSYS_GETPID                         = 20\n\tSYS_SETUID                         = 23\n\tSYS_GETUID                         = 24\n\tSYS_GETEUID                        = 25\n\tSYS_PTRACE                         = 26\n\tSYS_RECVMSG                        = 27\n\tSYS_SENDMSG                        = 28\n\tSYS_RECVFROM                       = 29\n\tSYS_ACCEPT                         = 30\n\tSYS_GETPEERNAME                    = 31\n\tSYS_GETSOCKNAME                    = 32\n\tSYS_ACCESS                         = 33\n\tSYS_CHFLAGS                        = 34\n\tSYS_FCHFLAGS                       = 35\n\tSYS_SYNC                           = 36\n\tSYS_KILL                           = 37\n\tSYS_GETPPID                        = 39\n\tSYS_DUP                            = 41\n\tSYS_PIPE                           = 42\n\tSYS_GETEGID                        = 43\n\tSYS_SIGACTION                      = 46\n\tSYS_GETGID                         = 47\n\tSYS_SIGPROCMASK                    = 48\n\tSYS_GETLOGIN                       = 49\n\tSYS_SETLOGIN                       = 50\n\tSYS_ACCT                           = 51\n\tSYS_SIGPENDING                     = 52\n\tSYS_SIGALTSTACK                    = 53\n\tSYS_IOCTL                          = 54\n\tSYS_REBOOT                         = 55\n\tSYS_REVOKE                         = 56\n\tSYS_SYMLINK                        = 57\n\tSYS_READLINK                       = 58\n\tSYS_EXECVE                         = 59\n\tSYS_UMASK                          = 60\n\tSYS_CHROOT                         = 61\n\tSYS_MSYNC                          = 65\n\tSYS_VFORK                          = 66\n\tSYS_MUNMAP                         = 73\n\tSYS_MPROTECT                       = 74\n\tSYS_MADVISE                        = 75\n\tSYS_MINCORE                        = 78\n\tSYS_GETGROUPS                      = 79\n\tSYS_SETGROUPS                      = 80\n\tSYS_GETPGRP                        = 81\n\tSYS_SETPGID                        = 82\n\tSYS_SETITIMER                      = 83\n\tSYS_SWAPON                         = 85\n\tSYS_GETITIMER                      = 86\n\tSYS_GETDTABLESIZE                  = 89\n\tSYS_DUP2                           = 90\n\tSYS_FCNTL                          = 92\n\tSYS_SELECT                         = 93\n\tSYS_FSYNC                          = 95\n\tSYS_SETPRIORITY                    = 96\n\tSYS_SOCKET                         = 97\n\tSYS_CONNECT                        = 98\n\tSYS_GETPRIORITY                    = 100\n\tSYS_BIND                           = 104\n\tSYS_SETSOCKOPT                     = 105\n\tSYS_LISTEN                         = 106\n\tSYS_SIGSUSPEND                     = 111\n\tSYS_GETTIMEOFDAY                   = 116\n\tSYS_GETRUSAGE                      = 117\n\tSYS_GETSOCKOPT                     = 118\n\tSYS_READV                          = 120\n\tSYS_WRITEV                         = 121\n\tSYS_SETTIMEOFDAY                   = 122\n\tSYS_FCHOWN                         = 123\n\tSYS_FCHMOD                         = 124\n\tSYS_SETREUID                       = 126\n\tSYS_SETREGID                       = 127\n\tSYS_RENAME                         = 128\n\tSYS_FLOCK                          = 131\n\tSYS_MKFIFO                         = 132\n\tSYS_SENDTO                         = 133\n\tSYS_SHUTDOWN                       = 134\n\tSYS_SOCKETPAIR                     = 135\n\tSYS_MKDIR                          = 136\n\tSYS_RMDIR                          = 137\n\tSYS_UTIMES                         = 138\n\tSYS_FUTIMES                        = 139\n\tSYS_ADJTIME                        = 140\n\tSYS_GETHOSTUUID                    = 142\n\tSYS_SETSID                         = 147\n\tSYS_GETPGID                        = 151\n\tSYS_SETPRIVEXEC                    = 152\n\tSYS_PREAD                          = 153\n\tSYS_PWRITE                         = 154\n\tSYS_NFSSVC                         = 155\n\tSYS_STATFS                         = 157\n\tSYS_FSTATFS                        = 158\n\tSYS_UNMOUNT                        = 159\n\tSYS_GETFH                          = 161\n\tSYS_QUOTACTL                       = 165\n\tSYS_MOUNT                          = 167\n\tSYS_CSOPS                          = 169\n\tSYS_CSOPS_AUDITTOKEN               = 170\n\tSYS_WAITID                         = 173\n\tSYS_KDEBUG_TYPEFILTER              = 177\n\tSYS_KDEBUG_TRACE_STRING            = 178\n\tSYS_KDEBUG_TRACE64                 = 179\n\tSYS_KDEBUG_TRACE                   = 180\n\tSYS_SETGID                         = 181\n\tSYS_SETEGID                        = 182\n\tSYS_SETEUID                        = 183\n\tSYS_SIGRETURN                      = 184\n\tSYS_THREAD_SELFCOUNTS              = 186\n\tSYS_FDATASYNC                      = 187\n\tSYS_STAT                           = 188\n\tSYS_FSTAT                          = 189\n\tSYS_LSTAT                          = 190\n\tSYS_PATHCONF                       = 191\n\tSYS_FPATHCONF                      = 192\n\tSYS_GETRLIMIT                      = 194\n\tSYS_SETRLIMIT                      = 195\n\tSYS_GETDIRENTRIES                  = 196\n\tSYS_MMAP                           = 197\n\tSYS_LSEEK                          = 199\n\tSYS_TRUNCATE                       = 200\n\tSYS_FTRUNCATE                      = 201\n\tSYS_SYSCTL                         = 202\n\tSYS_MLOCK                          = 203\n\tSYS_MUNLOCK                        = 204\n\tSYS_UNDELETE                       = 205\n\tSYS_OPEN_DPROTECTED_NP             = 216\n\tSYS_GETATTRLIST                    = 220\n\tSYS_SETATTRLIST                    = 221\n\tSYS_GETDIRENTRIESATTR              = 222\n\tSYS_EXCHANGEDATA                   = 223\n\tSYS_SEARCHFS                       = 225\n\tSYS_DELETE                         = 226\n\tSYS_COPYFILE                       = 227\n\tSYS_FGETATTRLIST                   = 228\n\tSYS_FSETATTRLIST                   = 229\n\tSYS_POLL                           = 230\n\tSYS_WATCHEVENT                     = 231\n\tSYS_WAITEVENT                      = 232\n\tSYS_MODWATCH                       = 233\n\tSYS_GETXATTR                       = 234\n\tSYS_FGETXATTR                      = 235\n\tSYS_SETXATTR                       = 236\n\tSYS_FSETXATTR                      = 237\n\tSYS_REMOVEXATTR                    = 238\n\tSYS_FREMOVEXATTR                   = 239\n\tSYS_LISTXATTR                      = 240\n\tSYS_FLISTXATTR                     = 241\n\tSYS_FSCTL                          = 242\n\tSYS_INITGROUPS                     = 243\n\tSYS_POSIX_SPAWN                    = 244\n\tSYS_FFSCTL                         = 245\n\tSYS_NFSCLNT                        = 247\n\tSYS_FHOPEN                         = 248\n\tSYS_MINHERIT                       = 250\n\tSYS_SEMSYS                         = 251\n\tSYS_MSGSYS                         = 252\n\tSYS_SHMSYS                         = 253\n\tSYS_SEMCTL                         = 254\n\tSYS_SEMGET                         = 255\n\tSYS_SEMOP                          = 256\n\tSYS_MSGCTL                         = 258\n\tSYS_MSGGET                         = 259\n\tSYS_MSGSND                         = 260\n\tSYS_MSGRCV                         = 261\n\tSYS_SHMAT                          = 262\n\tSYS_SHMCTL                         = 263\n\tSYS_SHMDT                          = 264\n\tSYS_SHMGET                         = 265\n\tSYS_SHM_OPEN                       = 266\n\tSYS_SHM_UNLINK                     = 267\n\tSYS_SEM_OPEN                       = 268\n\tSYS_SEM_CLOSE                      = 269\n\tSYS_SEM_UNLINK                     = 270\n\tSYS_SEM_WAIT                       = 271\n\tSYS_SEM_TRYWAIT                    = 272\n\tSYS_SEM_POST                       = 273\n\tSYS_SYSCTLBYNAME                   = 274\n\tSYS_OPEN_EXTENDED                  = 277\n\tSYS_UMASK_EXTENDED                 = 278\n\tSYS_STAT_EXTENDED                  = 279\n\tSYS_LSTAT_EXTENDED                 = 280\n\tSYS_FSTAT_EXTENDED                 = 281\n\tSYS_CHMOD_EXTENDED                 = 282\n\tSYS_FCHMOD_EXTENDED                = 283\n\tSYS_ACCESS_EXTENDED                = 284\n\tSYS_SETTID                         = 285\n\tSYS_GETTID                         = 286\n\tSYS_SETSGROUPS                     = 287\n\tSYS_GETSGROUPS                     = 288\n\tSYS_SETWGROUPS                     = 289\n\tSYS_GETWGROUPS                     = 290\n\tSYS_MKFIFO_EXTENDED                = 291\n\tSYS_MKDIR_EXTENDED                 = 292\n\tSYS_IDENTITYSVC                    = 293\n\tSYS_SHARED_REGION_CHECK_NP         = 294\n\tSYS_VM_PRESSURE_MONITOR            = 296\n\tSYS_PSYNCH_RW_LONGRDLOCK           = 297\n\tSYS_PSYNCH_RW_YIELDWRLOCK          = 298\n\tSYS_PSYNCH_RW_DOWNGRADE            = 299\n\tSYS_PSYNCH_RW_UPGRADE              = 300\n\tSYS_PSYNCH_MUTEXWAIT               = 301\n\tSYS_PSYNCH_MUTEXDROP               = 302\n\tSYS_PSYNCH_CVBROAD                 = 303\n\tSYS_PSYNCH_CVSIGNAL                = 304\n\tSYS_PSYNCH_CVWAIT                  = 305\n\tSYS_PSYNCH_RW_RDLOCK               = 306\n\tSYS_PSYNCH_RW_WRLOCK               = 307\n\tSYS_PSYNCH_RW_UNLOCK               = 308\n\tSYS_PSYNCH_RW_UNLOCK2              = 309\n\tSYS_GETSID                         = 310\n\tSYS_SETTID_WITH_PID                = 311\n\tSYS_PSYNCH_CVCLRPREPOST            = 312\n\tSYS_AIO_FSYNC                      = 313\n\tSYS_AIO_RETURN                     = 314\n\tSYS_AIO_SUSPEND                    = 315\n\tSYS_AIO_CANCEL                     = 316\n\tSYS_AIO_ERROR                      = 317\n\tSYS_AIO_READ                       = 318\n\tSYS_AIO_WRITE                      = 319\n\tSYS_LIO_LISTIO                     = 320\n\tSYS_IOPOLICYSYS                    = 322\n\tSYS_PROCESS_POLICY                 = 323\n\tSYS_MLOCKALL                       = 324\n\tSYS_MUNLOCKALL                     = 325\n\tSYS_ISSETUGID                      = 327\n\tSYS___PTHREAD_KILL                 = 328\n\tSYS___PTHREAD_SIGMASK              = 329\n\tSYS___SIGWAIT                      = 330\n\tSYS___DISABLE_THREADSIGNAL         = 331\n\tSYS___PTHREAD_MARKCANCEL           = 332\n\tSYS___PTHREAD_CANCELED             = 333\n\tSYS___SEMWAIT_SIGNAL               = 334\n\tSYS_PROC_INFO                      = 336\n\tSYS_SENDFILE                       = 337\n\tSYS_STAT64                         = 338\n\tSYS_FSTAT64                        = 339\n\tSYS_LSTAT64                        = 340\n\tSYS_STAT64_EXTENDED                = 341\n\tSYS_LSTAT64_EXTENDED               = 342\n\tSYS_FSTAT64_EXTENDED               = 343\n\tSYS_GETDIRENTRIES64                = 344\n\tSYS_STATFS64                       = 345\n\tSYS_FSTATFS64                      = 346\n\tSYS_GETFSSTAT64                    = 347\n\tSYS___PTHREAD_CHDIR                = 348\n\tSYS___PTHREAD_FCHDIR               = 349\n\tSYS_AUDIT                          = 350\n\tSYS_AUDITON                        = 351\n\tSYS_GETAUID                        = 353\n\tSYS_SETAUID                        = 354\n\tSYS_GETAUDIT_ADDR                  = 357\n\tSYS_SETAUDIT_ADDR                  = 358\n\tSYS_AUDITCTL                       = 359\n\tSYS_BSDTHREAD_CREATE               = 360\n\tSYS_BSDTHREAD_TERMINATE            = 361\n\tSYS_KQUEUE                         = 362\n\tSYS_KEVENT                         = 363\n\tSYS_LCHOWN                         = 364\n\tSYS_BSDTHREAD_REGISTER             = 366\n\tSYS_WORKQ_OPEN                     = 367\n\tSYS_WORKQ_KERNRETURN               = 368\n\tSYS_KEVENT64                       = 369\n\tSYS___OLD_SEMWAIT_SIGNAL           = 370\n\tSYS___OLD_SEMWAIT_SIGNAL_NOCANCEL  = 371\n\tSYS_THREAD_SELFID                  = 372\n\tSYS_LEDGER                         = 373\n\tSYS_KEVENT_QOS                     = 374\n\tSYS_KEVENT_ID                      = 375\n\tSYS___MAC_EXECVE                   = 380\n\tSYS___MAC_SYSCALL                  = 381\n\tSYS___MAC_GET_FILE                 = 382\n\tSYS___MAC_SET_FILE                 = 383\n\tSYS___MAC_GET_LINK                 = 384\n\tSYS___MAC_SET_LINK                 = 385\n\tSYS___MAC_GET_PROC                 = 386\n\tSYS___MAC_SET_PROC                 = 387\n\tSYS___MAC_GET_FD                   = 388\n\tSYS___MAC_SET_FD                   = 389\n\tSYS___MAC_GET_PID                  = 390\n\tSYS_PSELECT                        = 394\n\tSYS_PSELECT_NOCANCEL               = 395\n\tSYS_READ_NOCANCEL                  = 396\n\tSYS_WRITE_NOCANCEL                 = 397\n\tSYS_OPEN_NOCANCEL                  = 398\n\tSYS_CLOSE_NOCANCEL                 = 399\n\tSYS_WAIT4_NOCANCEL                 = 400\n\tSYS_RECVMSG_NOCANCEL               = 401\n\tSYS_SENDMSG_NOCANCEL               = 402\n\tSYS_RECVFROM_NOCANCEL              = 403\n\tSYS_ACCEPT_NOCANCEL                = 404\n\tSYS_MSYNC_NOCANCEL                 = 405\n\tSYS_FCNTL_NOCANCEL                 = 406\n\tSYS_SELECT_NOCANCEL                = 407\n\tSYS_FSYNC_NOCANCEL                 = 408\n\tSYS_CONNECT_NOCANCEL               = 409\n\tSYS_SIGSUSPEND_NOCANCEL            = 410\n\tSYS_READV_NOCANCEL                 = 411\n\tSYS_WRITEV_NOCANCEL                = 412\n\tSYS_SENDTO_NOCANCEL                = 413\n\tSYS_PREAD_NOCANCEL                 = 414\n\tSYS_PWRITE_NOCANCEL                = 415\n\tSYS_WAITID_NOCANCEL                = 416\n\tSYS_POLL_NOCANCEL                  = 417\n\tSYS_MSGSND_NOCANCEL                = 418\n\tSYS_MSGRCV_NOCANCEL                = 419\n\tSYS_SEM_WAIT_NOCANCEL              = 420\n\tSYS_AIO_SUSPEND_NOCANCEL           = 421\n\tSYS___SIGWAIT_NOCANCEL             = 422\n\tSYS___SEMWAIT_SIGNAL_NOCANCEL      = 423\n\tSYS___MAC_MOUNT                    = 424\n\tSYS___MAC_GET_MOUNT                = 425\n\tSYS___MAC_GETFSSTAT                = 426\n\tSYS_FSGETPATH                      = 427\n\tSYS_AUDIT_SESSION_SELF             = 428\n\tSYS_AUDIT_SESSION_JOIN             = 429\n\tSYS_FILEPORT_MAKEPORT              = 430\n\tSYS_FILEPORT_MAKEFD                = 431\n\tSYS_AUDIT_SESSION_PORT             = 432\n\tSYS_PID_SUSPEND                    = 433\n\tSYS_PID_RESUME                     = 434\n\tSYS_PID_HIBERNATE                  = 435\n\tSYS_PID_SHUTDOWN_SOCKETS           = 436\n\tSYS_SHARED_REGION_MAP_AND_SLIDE_NP = 438\n\tSYS_KAS_INFO                       = 439\n\tSYS_MEMORYSTATUS_CONTROL           = 440\n\tSYS_GUARDED_OPEN_NP                = 441\n\tSYS_GUARDED_CLOSE_NP               = 442\n\tSYS_GUARDED_KQUEUE_NP              = 443\n\tSYS_CHANGE_FDGUARD_NP              = 444\n\tSYS_USRCTL                         = 445\n\tSYS_PROC_RLIMIT_CONTROL            = 446\n\tSYS_CONNECTX                       = 447\n\tSYS_DISCONNECTX                    = 448\n\tSYS_PEELOFF                        = 449\n\tSYS_SOCKET_DELEGATE                = 450\n\tSYS_TELEMETRY                      = 451\n\tSYS_PROC_UUID_POLICY               = 452\n\tSYS_MEMORYSTATUS_GET_LEVEL         = 453\n\tSYS_SYSTEM_OVERRIDE                = 454\n\tSYS_VFS_PURGE                      = 455\n\tSYS_SFI_CTL                        = 456\n\tSYS_SFI_PIDCTL                     = 457\n\tSYS_COALITION                      = 458\n\tSYS_COALITION_INFO                 = 459\n\tSYS_NECP_MATCH_POLICY              = 460\n\tSYS_GETATTRLISTBULK                = 461\n\tSYS_CLONEFILEAT                    = 462\n\tSYS_OPENAT                         = 463\n\tSYS_OPENAT_NOCANCEL                = 464\n\tSYS_RENAMEAT                       = 465\n\tSYS_FACCESSAT                      = 466\n\tSYS_FCHMODAT                       = 467\n\tSYS_FCHOWNAT                       = 468\n\tSYS_FSTATAT                        = 469\n\tSYS_FSTATAT64                      = 470\n\tSYS_LINKAT                         = 471\n\tSYS_UNLINKAT                       = 472\n\tSYS_READLINKAT                     = 473\n\tSYS_SYMLINKAT                      = 474\n\tSYS_MKDIRAT                        = 475\n\tSYS_GETATTRLISTAT                  = 476\n\tSYS_PROC_TRACE_LOG                 = 477\n\tSYS_BSDTHREAD_CTL                  = 478\n\tSYS_OPENBYID_NP                    = 479\n\tSYS_RECVMSG_X                      = 480\n\tSYS_SENDMSG_X                      = 481\n\tSYS_THREAD_SELFUSAGE               = 482\n\tSYS_CSRCTL                         = 483\n\tSYS_GUARDED_OPEN_DPROTECTED_NP     = 484\n\tSYS_GUARDED_WRITE_NP               = 485\n\tSYS_GUARDED_PWRITE_NP              = 486\n\tSYS_GUARDED_WRITEV_NP              = 487\n\tSYS_RENAMEATX_NP                   = 488\n\tSYS_MREMAP_ENCRYPTED               = 489\n\tSYS_NETAGENT_TRIGGER               = 490\n\tSYS_STACK_SNAPSHOT_WITH_CONFIG     = 491\n\tSYS_MICROSTACKSHOT                 = 492\n\tSYS_GRAB_PGO_DATA                  = 493\n\tSYS_PERSONA                        = 494\n\tSYS_WORK_INTERVAL_CTL              = 499\n\tSYS_GETENTROPY                     = 500\n\tSYS_NECP_OPEN                      = 501\n\tSYS_NECP_CLIENT_ACTION             = 502\n\tSYS___NEXUS_OPEN                   = 503\n\tSYS___NEXUS_REGISTER               = 504\n\tSYS___NEXUS_DEREGISTER             = 505\n\tSYS___NEXUS_CREATE                 = 506\n\tSYS___NEXUS_DESTROY                = 507\n\tSYS___NEXUS_GET_OPT                = 508\n\tSYS___NEXUS_SET_OPT                = 509\n\tSYS___CHANNEL_OPEN                 = 510\n\tSYS___CHANNEL_GET_INFO             = 511\n\tSYS___CHANNEL_SYNC                 = 512\n\tSYS___CHANNEL_GET_OPT              = 513\n\tSYS___CHANNEL_SET_OPT              = 514\n\tSYS_ULOCK_WAIT                     = 515\n\tSYS_ULOCK_WAKE                     = 516\n\tSYS_FCLONEFILEAT                   = 517\n\tSYS_FS_SNAPSHOT                    = 518\n\tSYS_TERMINATE_WITH_PAYLOAD         = 520\n\tSYS_ABORT_WITH_PAYLOAD             = 521\n\tSYS_NECP_SESSION_OPEN              = 522\n\tSYS_NECP_SESSION_ACTION            = 523\n\tSYS_SETATTRLISTAT                  = 524\n\tSYS_NET_QOS_GUIDELINE              = 525\n\tSYS_FMOUNT                         = 526\n\tSYS_NTP_ADJTIME                    = 527\n\tSYS_NTP_GETTIME                    = 528\n\tSYS_OS_FAULT_WITH_PAYLOAD          = 529\n\tSYS_MAXSYSCALL                     = 530\n\tSYS_INVALID                        = 63\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_dragonfly_amd64.go",
    "content": "// go run mksysnum.go https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSYS_EXIT  = 1 // { void exit(int rval); }\n\tSYS_FORK  = 2 // { int fork(void); }\n\tSYS_READ  = 3 // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE = 4 // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN  = 5 // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE = 6 // { int close(int fd); }\n\tSYS_WAIT4 = 7 // { int wait4(int pid, int *status, int options, struct rusage *rusage); } wait4 wait_args int\n\t// SYS_NOSYS = 8;  // { int nosys(void); } __nosys nosys_args int\n\tSYS_LINK                   = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                 = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                  = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                 = 13  // { int fchdir(int fd); }\n\tSYS_MKNOD                  = 14  // { int mknod(char *path, int mode, int dev); }\n\tSYS_CHMOD                  = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                  = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_OBREAK                 = 17  // { int obreak(char *nsize); } break obreak_args int\n\tSYS_GETFSSTAT              = 18  // { int getfsstat(struct statfs *buf, long bufsize, int flags); }\n\tSYS_GETPID                 = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                  = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                 = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                 = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                 = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                = 28  // { int sendmsg(int s, caddr_t msg, int flags); }\n\tSYS_RECVFROM               = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, caddr_t from, int *fromlenaddr); }\n\tSYS_ACCEPT                 = 30  // { int accept(int s, caddr_t name, int *anamelen); }\n\tSYS_GETPEERNAME            = 31  // { int getpeername(int fdes, caddr_t asa, int *alen); }\n\tSYS_GETSOCKNAME            = 32  // { int getsockname(int fdes, caddr_t asa, int *alen); }\n\tSYS_ACCESS                 = 33  // { int access(char *path, int flags); }\n\tSYS_CHFLAGS                = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS               = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                   = 36  // { int sync(void); }\n\tSYS_KILL                   = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                = 39  // { pid_t getppid(void); }\n\tSYS_DUP                    = 41  // { int dup(int fd); }\n\tSYS_PIPE                   = 42  // { int pipe(void); }\n\tSYS_GETEGID                = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                 = 44  // { int profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE                 = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                 = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN               = 49  // { int getlogin(char *namebuf, size_t namelen); }\n\tSYS_SETLOGIN               = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                   = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK            = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                  = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                 = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                 = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK               = 58  // { int readlink(char *path, char *buf, int count); }\n\tSYS_EXECVE                 = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                  = 60  // { int umask(int newmask); } umask umask_args int\n\tSYS_CHROOT                 = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                  = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                  = 66  // { pid_t vfork(void); }\n\tSYS_SBRK                   = 69  // { caddr_t sbrk(size_t incr); }\n\tSYS_SSTK                   = 70  // { int sstk(size_t incr); }\n\tSYS_MUNMAP                 = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT               = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS              = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS              = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER              = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                 = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER              = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE          = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                   = 90  // { int dup2(int from, int to); }\n\tSYS_FCNTL                  = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                 = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                  = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY            = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                 = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY            = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                   = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT             = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                 = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY           = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE              = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT             = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                  = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                 = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY           = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                 = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                 = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID               = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID               = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                 = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                  = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                 = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                 = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN               = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR             = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                  = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                  = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                 = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                 = 147 // { int setsid(void); }\n\tSYS_QUOTACTL               = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_STATFS                 = 157 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                = 158 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFH                  = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                 = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_EXTPREAD               = 173 // { ssize_t extpread(int fd, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTPWRITE              = 174 // { ssize_t extpwrite(int fd, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_NTP_ADJTIME            = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                 = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF               = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF              = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT              = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT              = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS_MMAP                   = 197 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, int pad, off_t pos); }\n\tSYS_LSEEK                  = 199 // { off_t lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE               = 200 // { int truncate(char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE              = 201 // { int ftruncate(int fd, int pad, off_t length); }\n\tSYS___SYSCTL               = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                  = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE               = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                   = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS___SEMCTL               = 220 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SEMGET                 = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                  = 222 // { int semop(int semid, struct sembuf *sops, u_int nsops); }\n\tSYS_MSGCTL                 = 224 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_MSGGET                 = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                 = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                 = 227 // { int msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                  = 228 // { caddr_t shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMCTL                 = 229 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_SHMDT                  = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                 = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME          = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME          = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES           = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP              = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_MINHERIT               = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                  = 251 // { int rfork(int flags); }\n\tSYS_OPENBSD_POLL           = 252 // { int openbsd_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID              = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                 = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_LCHMOD                 = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_EXTPREADV              = 289 // { ssize_t extpreadv(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_EXTPWRITEV             = 290 // { ssize_t extpwritev(int fd, const struct iovec *iovp, int iovcnt, int flags, off_t offset); }\n\tSYS_FHSTATFS               = 297 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_FHOPEN                 = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT               = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD              = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                = 308 // { int kldstat(int fileid, struct kld_file_stat* stat); }\n\tSYS_KLDFIRSTMOD            = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                 = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID              = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID              = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN             = 314 // { int aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND            = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL             = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR              = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_AIO_READ               = 318 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE              = 319 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO             = 320 // { int lio_listio(int mode, struct aiocb * const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_YIELD                  = 321 // { int yield(void); }\n\tSYS_MLOCKALL               = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL             = 325 // { int munlockall(void); }\n\tSYS___GETCWD               = 326 // { int __getcwd(u_char *buf, u_int buflen); }\n\tSYS_SCHED_SETPARAM         = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM         = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER     = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER     = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD            = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL  = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                 = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                 = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                   = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK            = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND             = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGACTION              = 342 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGPENDING             = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGRETURN              = 344 // { int sigreturn(ucontext_t *sigcntxp); }\n\tSYS_SIGTIMEDWAIT           = 345 // { int sigtimedwait(const sigset_t *set,siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO            = 346 // { int sigwaitinfo(const sigset_t *set,siginfo_t *info); }\n\tSYS___ACL_GET_FILE         = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE         = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD           = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD           = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE      = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD        = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE    = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD      = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL             = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE       = 356 // { int extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE       = 357 // { int extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE    = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE       = 359 // { int aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID              = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID              = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                 = 362 // { int kqueue(void); }\n\tSYS_KEVENT                 = 363 // { int kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_KENV                   = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS               = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE               = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_VARSYM_SET             = 450 // { int varsym_set(int level, const char *name, const char *data); }\n\tSYS_VARSYM_GET             = 451 // { int varsym_get(int mask, const char *wild, char *buf, int bufsize); }\n\tSYS_VARSYM_LIST            = 452 // { int varsym_list(int level, char *buf, int maxsize, int *marker); }\n\tSYS_EXEC_SYS_REGISTER      = 465 // { int exec_sys_register(void *entry); }\n\tSYS_EXEC_SYS_UNREGISTER    = 466 // { int exec_sys_unregister(int id); }\n\tSYS_SYS_CHECKPOINT         = 467 // { int sys_checkpoint(int type, int fd, pid_t pid, int retval); }\n\tSYS_MOUNTCTL               = 468 // { int mountctl(const char *path, int op, int fd, const void *ctl, int ctllen, void *buf, int buflen); }\n\tSYS_UMTX_SLEEP             = 469 // { int umtx_sleep(volatile const int *ptr, int value, int timeout); }\n\tSYS_UMTX_WAKEUP            = 470 // { int umtx_wakeup(volatile const int *ptr, int count); }\n\tSYS_JAIL_ATTACH            = 471 // { int jail_attach(int jid); }\n\tSYS_SET_TLS_AREA           = 472 // { int set_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_GET_TLS_AREA           = 473 // { int get_tls_area(int which, struct tls_info *info, size_t infosize); }\n\tSYS_CLOSEFROM              = 474 // { int closefrom(int fd); }\n\tSYS_STAT                   = 475 // { int stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                  = 476 // { int fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                  = 477 // { int lstat(const char *path, struct stat *ub); }\n\tSYS_FHSTAT                 = 478 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES          = 479 // { int getdirentries(int fd, char *buf, u_int count, long *basep); }\n\tSYS_GETDENTS               = 480 // { int getdents(int fd, char *buf, size_t count); }\n\tSYS_USCHED_SET             = 481 // { int usched_set(pid_t pid, int cmd, void *data, int bytes); }\n\tSYS_EXTACCEPT              = 482 // { int extaccept(int s, int flags, caddr_t name, int *anamelen); }\n\tSYS_EXTCONNECT             = 483 // { int extconnect(int s, int flags, caddr_t name, int namelen); }\n\tSYS_MCONTROL               = 485 // { int mcontrol(void *addr, size_t len, int behav, off_t value); }\n\tSYS_VMSPACE_CREATE         = 486 // { int vmspace_create(void *id, int type, void *data); }\n\tSYS_VMSPACE_DESTROY        = 487 // { int vmspace_destroy(void *id); }\n\tSYS_VMSPACE_CTL            = 488 // { int vmspace_ctl(void *id, int cmd, \t\tstruct trapframe *tframe,\tstruct vextframe *vframe); }\n\tSYS_VMSPACE_MMAP           = 489 // { int vmspace_mmap(void *id, void *addr, size_t len, int prot, int flags, int fd, off_t offset); }\n\tSYS_VMSPACE_MUNMAP         = 490 // { int vmspace_munmap(void *id, void *addr,\tsize_t len); }\n\tSYS_VMSPACE_MCONTROL       = 491 // { int vmspace_mcontrol(void *id, void *addr, \tsize_t len, int behav, off_t value); }\n\tSYS_VMSPACE_PREAD          = 492 // { ssize_t vmspace_pread(void *id, void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_VMSPACE_PWRITE         = 493 // { ssize_t vmspace_pwrite(void *id, const void *buf, size_t nbyte, int flags, off_t offset); }\n\tSYS_EXTEXIT                = 494 // { void extexit(int how, int status, void *addr); }\n\tSYS_LWP_CREATE             = 495 // { int lwp_create(struct lwp_params *params); }\n\tSYS_LWP_GETTID             = 496 // { lwpid_t lwp_gettid(void); }\n\tSYS_LWP_KILL               = 497 // { int lwp_kill(pid_t pid, lwpid_t tid, int signum); }\n\tSYS_LWP_RTPRIO             = 498 // { int lwp_rtprio(int function, pid_t pid, lwpid_t tid, struct rtprio *rtp); }\n\tSYS_PSELECT                = 499 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts,    const sigset_t *sigmask); }\n\tSYS_STATVFS                = 500 // { int statvfs(const char *path, struct statvfs *buf); }\n\tSYS_FSTATVFS               = 501 // { int fstatvfs(int fd, struct statvfs *buf); }\n\tSYS_FHSTATVFS              = 502 // { int fhstatvfs(const struct fhandle *u_fhp, struct statvfs *buf); }\n\tSYS_GETVFSSTAT             = 503 // { int getvfsstat(struct statfs *buf,          struct statvfs *vbuf, long vbufsize, int flags); }\n\tSYS_OPENAT                 = 504 // { int openat(int fd, char *path, int flags, int mode); }\n\tSYS_FSTATAT                = 505 // { int fstatat(int fd, char *path, \tstruct stat *sb, int flags); }\n\tSYS_FCHMODAT               = 506 // { int fchmodat(int fd, char *path, int mode, int flags); }\n\tSYS_FCHOWNAT               = 507 // { int fchownat(int fd, char *path, int uid, int gid, int flags); }\n\tSYS_UNLINKAT               = 508 // { int unlinkat(int fd, char *path, int flags); }\n\tSYS_FACCESSAT              = 509 // { int faccessat(int fd, char *path, int amode, int flags); }\n\tSYS_MQ_OPEN                = 510 // { mqd_t mq_open(const char * name, int oflag, mode_t mode, struct mq_attr *attr); }\n\tSYS_MQ_CLOSE               = 511 // { int mq_close(mqd_t mqdes); }\n\tSYS_MQ_UNLINK              = 512 // { int mq_unlink(const char *name); }\n\tSYS_MQ_GETATTR             = 513 // { int mq_getattr(mqd_t mqdes, struct mq_attr *mqstat); }\n\tSYS_MQ_SETATTR             = 514 // { int mq_setattr(mqd_t mqdes, const struct mq_attr *mqstat, struct mq_attr *omqstat); }\n\tSYS_MQ_NOTIFY              = 515 // { int mq_notify(mqd_t mqdes, const struct sigevent *notification); }\n\tSYS_MQ_SEND                = 516 // { int mq_send(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio); }\n\tSYS_MQ_RECEIVE             = 517 // { ssize_t mq_receive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio); }\n\tSYS_MQ_TIMEDSEND           = 518 // { int mq_timedsend(mqd_t mqdes, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_MQ_TIMEDRECEIVE        = 519 // { ssize_t mq_timedreceive(mqd_t mqdes, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_IOPRIO_SET             = 520 // { int ioprio_set(int which, int who, int prio); }\n\tSYS_IOPRIO_GET             = 521 // { int ioprio_get(int which, int who); }\n\tSYS_CHROOT_KERNEL          = 522 // { int chroot_kernel(char *path); }\n\tSYS_RENAMEAT               = 523 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_MKDIRAT                = 524 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT               = 525 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_MKNODAT                = 526 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_READLINKAT             = 527 // { int readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT              = 528 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_SWAPOFF                = 529 // { int swapoff(char *name); }\n\tSYS_VQUOTACTL              = 530 // { int vquotactl(const char *path, struct plistref *pref); }\n\tSYS_LINKAT                 = 531 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flags); }\n\tSYS_EACCESS                = 532 // { int eaccess(char *path, int flags); }\n\tSYS_LPATHCONF              = 533 // { int lpathconf(char *path, int name); }\n\tSYS_VMM_GUEST_CTL          = 534 // { int vmm_guest_ctl(int op, struct vmm_guest_options *options); }\n\tSYS_VMM_GUEST_SYNC_ADDR    = 535 // { int vmm_guest_sync_addr(long *dstaddr, long *srcaddr); }\n\tSYS_PROCCTL                = 536 // { int procctl(idtype_t idtype, id_t id, int cmd, void *data); }\n\tSYS_CHFLAGSAT              = 537 // { int chflagsat(int fd, const char *path, u_long flags, int atflags);}\n\tSYS_PIPE2                  = 538 // { int pipe2(int *fildes, int flags); }\n\tSYS_UTIMENSAT              = 539 // { int utimensat(int fd, const char *path, const struct timespec *ts, int flags); }\n\tSYS_FUTIMENS               = 540 // { int futimens(int fd, const struct timespec *ts); }\n\tSYS_ACCEPT4                = 541 // { int accept4(int s, caddr_t name, int *anamelen, int flags); }\n\tSYS_LWP_SETNAME            = 542 // { int lwp_setname(lwpid_t tid, const char *name); }\n\tSYS_PPOLL                  = 543 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *sigmask); }\n\tSYS_LWP_SETAFFINITY        = 544 // { int lwp_setaffinity(pid_t pid, lwpid_t tid, const cpumask_t *mask); }\n\tSYS_LWP_GETAFFINITY        = 545 // { int lwp_getaffinity(pid_t pid, lwpid_t tid, cpumask_t *mask); }\n\tSYS_LWP_CREATE2            = 546 // { int lwp_create2(struct lwp_params *params, const cpumask_t *mask); }\n\tSYS_GETCPUCLOCKID          = 547 // { int getcpuclockid(pid_t pid, lwpid_t lwp_id, clockid_t *clock_id); }\n\tSYS_WAIT6                  = 548 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_LWP_GETNAME            = 549 // { int lwp_getname(lwpid_t tid, char *name, size_t len); }\n\tSYS_GETRANDOM              = 550 // { ssize_t getrandom(void *buf, size_t len, unsigned flags); }\n\tSYS___REALPATH             = 551 // { ssize_t __realpath(const char *path, char *buf, size_t len); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_freebsd_386.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_freebsd_amd64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_freebsd_arm.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_freebsd_arm64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_freebsd_riscv64.go",
    "content": "// go run mksysnum.go https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\t// SYS_NOSYS = 0;  // { int nosys(void); } syscall nosys_args int\n\tSYS_EXIT                     = 1   // { void sys_exit(int rval); } exit sys_exit_args void\n\tSYS_FORK                     = 2   // { int fork(void); }\n\tSYS_READ                     = 3   // { ssize_t read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                    = 4   // { ssize_t write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                     = 5   // { int open(char *path, int flags, int mode); }\n\tSYS_CLOSE                    = 6   // { int close(int fd); }\n\tSYS_WAIT4                    = 7   // { int wait4(int pid, int *status, int options, struct rusage *rusage); }\n\tSYS_LINK                     = 9   // { int link(char *path, char *link); }\n\tSYS_UNLINK                   = 10  // { int unlink(char *path); }\n\tSYS_CHDIR                    = 12  // { int chdir(char *path); }\n\tSYS_FCHDIR                   = 13  // { int fchdir(int fd); }\n\tSYS_CHMOD                    = 15  // { int chmod(char *path, int mode); }\n\tSYS_CHOWN                    = 16  // { int chown(char *path, int uid, int gid); }\n\tSYS_BREAK                    = 17  // { caddr_t break(char *nsize); }\n\tSYS_GETPID                   = 20  // { pid_t getpid(void); }\n\tSYS_MOUNT                    = 21  // { int mount(char *type, char *path, int flags, caddr_t data); }\n\tSYS_UNMOUNT                  = 22  // { int unmount(char *path, int flags); }\n\tSYS_SETUID                   = 23  // { int setuid(uid_t uid); }\n\tSYS_GETUID                   = 24  // { uid_t getuid(void); }\n\tSYS_GETEUID                  = 25  // { uid_t geteuid(void); }\n\tSYS_PTRACE                   = 26  // { int ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG                  = 27  // { int recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG                  = 28  // { int sendmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_RECVFROM                 = 29  // { int recvfrom(int s, caddr_t buf, size_t len, int flags, struct sockaddr * __restrict from, __socklen_t * __restrict fromlenaddr); }\n\tSYS_ACCEPT                   = 30  // { int accept(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen); }\n\tSYS_GETPEERNAME              = 31  // { int getpeername(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_GETSOCKNAME              = 32  // { int getsockname(int fdes, struct sockaddr * __restrict asa, __socklen_t * __restrict alen); }\n\tSYS_ACCESS                   = 33  // { int access(char *path, int amode); }\n\tSYS_CHFLAGS                  = 34  // { int chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS                 = 35  // { int fchflags(int fd, u_long flags); }\n\tSYS_SYNC                     = 36  // { int sync(void); }\n\tSYS_KILL                     = 37  // { int kill(int pid, int signum); }\n\tSYS_GETPPID                  = 39  // { pid_t getppid(void); }\n\tSYS_DUP                      = 41  // { int dup(u_int fd); }\n\tSYS_GETEGID                  = 43  // { gid_t getegid(void); }\n\tSYS_PROFIL                   = 44  // { int profil(caddr_t samples, size_t size, size_t offset, u_int scale); }\n\tSYS_KTRACE                   = 45  // { int ktrace(const char *fname, int ops, int facs, int pid); }\n\tSYS_GETGID                   = 47  // { gid_t getgid(void); }\n\tSYS_GETLOGIN                 = 49  // { int getlogin(char *namebuf, u_int namelen); }\n\tSYS_SETLOGIN                 = 50  // { int setlogin(char *namebuf); }\n\tSYS_ACCT                     = 51  // { int acct(char *path); }\n\tSYS_SIGALTSTACK              = 53  // { int sigaltstack(stack_t *ss, stack_t *oss); }\n\tSYS_IOCTL                    = 54  // { int ioctl(int fd, u_long com, caddr_t data); }\n\tSYS_REBOOT                   = 55  // { int reboot(int opt); }\n\tSYS_REVOKE                   = 56  // { int revoke(char *path); }\n\tSYS_SYMLINK                  = 57  // { int symlink(char *path, char *link); }\n\tSYS_READLINK                 = 58  // { ssize_t readlink(char *path, char *buf, size_t count); }\n\tSYS_EXECVE                   = 59  // { int execve(char *fname, char **argv, char **envv); }\n\tSYS_UMASK                    = 60  // { int umask(int newmask); }\n\tSYS_CHROOT                   = 61  // { int chroot(char *path); }\n\tSYS_MSYNC                    = 65  // { int msync(void *addr, size_t len, int flags); }\n\tSYS_VFORK                    = 66  // { int vfork(void); }\n\tSYS_SBRK                     = 69  // { int sbrk(int incr); }\n\tSYS_SSTK                     = 70  // { int sstk(int incr); }\n\tSYS_MUNMAP                   = 73  // { int munmap(void *addr, size_t len); }\n\tSYS_MPROTECT                 = 74  // { int mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE                  = 75  // { int madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE                  = 78  // { int mincore(const void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS                = 79  // { int getgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS                = 80  // { int setgroups(u_int gidsetsize, gid_t *gidset); }\n\tSYS_GETPGRP                  = 81  // { int getpgrp(void); }\n\tSYS_SETPGID                  = 82  // { int setpgid(int pid, int pgid); }\n\tSYS_SETITIMER                = 83  // { int setitimer(u_int which, struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_SWAPON                   = 85  // { int swapon(char *name); }\n\tSYS_GETITIMER                = 86  // { int getitimer(u_int which, struct itimerval *itv); }\n\tSYS_GETDTABLESIZE            = 89  // { int getdtablesize(void); }\n\tSYS_DUP2                     = 90  // { int dup2(u_int from, u_int to); }\n\tSYS_FCNTL                    = 92  // { int fcntl(int fd, int cmd, long arg); }\n\tSYS_SELECT                   = 93  // { int select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_FSYNC                    = 95  // { int fsync(int fd); }\n\tSYS_SETPRIORITY              = 96  // { int setpriority(int which, int who, int prio); }\n\tSYS_SOCKET                   = 97  // { int socket(int domain, int type, int protocol); }\n\tSYS_CONNECT                  = 98  // { int connect(int s, caddr_t name, int namelen); }\n\tSYS_GETPRIORITY              = 100 // { int getpriority(int which, int who); }\n\tSYS_BIND                     = 104 // { int bind(int s, caddr_t name, int namelen); }\n\tSYS_SETSOCKOPT               = 105 // { int setsockopt(int s, int level, int name, caddr_t val, int valsize); }\n\tSYS_LISTEN                   = 106 // { int listen(int s, int backlog); }\n\tSYS_GETTIMEOFDAY             = 116 // { int gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_GETRUSAGE                = 117 // { int getrusage(int who, struct rusage *rusage); }\n\tSYS_GETSOCKOPT               = 118 // { int getsockopt(int s, int level, int name, caddr_t val, int *avalsize); }\n\tSYS_READV                    = 120 // { int readv(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_WRITEV                   = 121 // { int writev(int fd, struct iovec *iovp, u_int iovcnt); }\n\tSYS_SETTIMEOFDAY             = 122 // { int settimeofday(struct timeval *tv, struct timezone *tzp); }\n\tSYS_FCHOWN                   = 123 // { int fchown(int fd, int uid, int gid); }\n\tSYS_FCHMOD                   = 124 // { int fchmod(int fd, int mode); }\n\tSYS_SETREUID                 = 126 // { int setreuid(int ruid, int euid); }\n\tSYS_SETREGID                 = 127 // { int setregid(int rgid, int egid); }\n\tSYS_RENAME                   = 128 // { int rename(char *from, char *to); }\n\tSYS_FLOCK                    = 131 // { int flock(int fd, int how); }\n\tSYS_MKFIFO                   = 132 // { int mkfifo(char *path, int mode); }\n\tSYS_SENDTO                   = 133 // { int sendto(int s, caddr_t buf, size_t len, int flags, caddr_t to, int tolen); }\n\tSYS_SHUTDOWN                 = 134 // { int shutdown(int s, int how); }\n\tSYS_SOCKETPAIR               = 135 // { int socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                    = 136 // { int mkdir(char *path, int mode); }\n\tSYS_RMDIR                    = 137 // { int rmdir(char *path); }\n\tSYS_UTIMES                   = 138 // { int utimes(char *path, struct timeval *tptr); }\n\tSYS_ADJTIME                  = 140 // { int adjtime(struct timeval *delta, struct timeval *olddelta); }\n\tSYS_SETSID                   = 147 // { int setsid(void); }\n\tSYS_QUOTACTL                 = 148 // { int quotactl(char *path, int cmd, int uid, caddr_t arg); }\n\tSYS_NLM_SYSCALL              = 154 // { int nlm_syscall(int debug_level, int grace_period, int addr_count, char **addrs); }\n\tSYS_NFSSVC                   = 155 // { int nfssvc(int flag, caddr_t argp); }\n\tSYS_LGETFH                   = 160 // { int lgetfh(char *fname, struct fhandle *fhp); }\n\tSYS_GETFH                    = 161 // { int getfh(char *fname, struct fhandle *fhp); }\n\tSYS_SYSARCH                  = 165 // { int sysarch(int op, char *parms); }\n\tSYS_RTPRIO                   = 166 // { int rtprio(int function, pid_t pid, struct rtprio *rtp); }\n\tSYS_SEMSYS                   = 169 // { int semsys(int which, int a2, int a3, int a4, int a5); }\n\tSYS_MSGSYS                   = 170 // { int msgsys(int which, int a2, int a3, int a4, int a5, int a6); }\n\tSYS_SHMSYS                   = 171 // { int shmsys(int which, int a2, int a3, int a4); }\n\tSYS_SETFIB                   = 175 // { int setfib(int fibnum); }\n\tSYS_NTP_ADJTIME              = 176 // { int ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID                   = 181 // { int setgid(gid_t gid); }\n\tSYS_SETEGID                  = 182 // { int setegid(gid_t egid); }\n\tSYS_SETEUID                  = 183 // { int seteuid(uid_t euid); }\n\tSYS_PATHCONF                 = 191 // { int pathconf(char *path, int name); }\n\tSYS_FPATHCONF                = 192 // { int fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT                = 194 // { int getrlimit(u_int which, struct rlimit *rlp); } getrlimit __getrlimit_args int\n\tSYS_SETRLIMIT                = 195 // { int setrlimit(u_int which, struct rlimit *rlp); } setrlimit __setrlimit_args int\n\tSYS___SYSCTL                 = 202 // { int __sysctl(int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); } __sysctl sysctl_args int\n\tSYS_MLOCK                    = 203 // { int mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK                  = 204 // { int munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE                 = 205 // { int undelete(char *path); }\n\tSYS_FUTIMES                  = 206 // { int futimes(int fd, struct timeval *tptr); }\n\tSYS_GETPGID                  = 207 // { int getpgid(pid_t pid); }\n\tSYS_POLL                     = 209 // { int poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET                   = 221 // { int semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                    = 222 // { int semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_MSGGET                   = 225 // { int msgget(key_t key, int msgflg); }\n\tSYS_MSGSND                   = 226 // { int msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV                   = 227 // { ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                    = 228 // { int shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                    = 230 // { int shmdt(const void *shmaddr); }\n\tSYS_SHMGET                   = 231 // { int shmget(key_t key, size_t size, int shmflg); }\n\tSYS_CLOCK_GETTIME            = 232 // { int clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME            = 233 // { int clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES             = 234 // { int clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_KTIMER_CREATE            = 235 // { int ktimer_create(clockid_t clock_id, struct sigevent *evp, int *timerid); }\n\tSYS_KTIMER_DELETE            = 236 // { int ktimer_delete(int timerid); }\n\tSYS_KTIMER_SETTIME           = 237 // { int ktimer_settime(int timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_KTIMER_GETTIME           = 238 // { int ktimer_gettime(int timerid, struct itimerspec *value); }\n\tSYS_KTIMER_GETOVERRUN        = 239 // { int ktimer_getoverrun(int timerid); }\n\tSYS_NANOSLEEP                = 240 // { int nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FFCLOCK_GETCOUNTER       = 241 // { int ffclock_getcounter(ffcounter *ffcount); }\n\tSYS_FFCLOCK_SETESTIMATE      = 242 // { int ffclock_setestimate(struct ffclock_estimate *cest); }\n\tSYS_FFCLOCK_GETESTIMATE      = 243 // { int ffclock_getestimate(struct ffclock_estimate *cest); }\n\tSYS_CLOCK_NANOSLEEP          = 244 // { int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_CLOCK_GETCPUCLOCKID2     = 247 // { int clock_getcpuclockid2(id_t id, int which, clockid_t *clock_id); }\n\tSYS_NTP_GETTIME              = 248 // { int ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_MINHERIT                 = 250 // { int minherit(void *addr, size_t len, int inherit); }\n\tSYS_RFORK                    = 251 // { int rfork(int flags); }\n\tSYS_ISSETUGID                = 253 // { int issetugid(void); }\n\tSYS_LCHOWN                   = 254 // { int lchown(char *path, int uid, int gid); }\n\tSYS_AIO_READ                 = 255 // { int aio_read(struct aiocb *aiocbp); }\n\tSYS_AIO_WRITE                = 256 // { int aio_write(struct aiocb *aiocbp); }\n\tSYS_LIO_LISTIO               = 257 // { int lio_listio(int mode, struct aiocb* const *acb_list, int nent, struct sigevent *sig); }\n\tSYS_LCHMOD                   = 274 // { int lchmod(char *path, mode_t mode); }\n\tSYS_LUTIMES                  = 276 // { int lutimes(char *path, struct timeval *tptr); }\n\tSYS_PREADV                   = 289 // { ssize_t preadv(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_PWRITEV                  = 290 // { ssize_t pwritev(int fd, struct iovec *iovp, u_int iovcnt, off_t offset); }\n\tSYS_FHOPEN                   = 298 // { int fhopen(const struct fhandle *u_fhp, int flags); }\n\tSYS_MODNEXT                  = 300 // { int modnext(int modid); }\n\tSYS_MODSTAT                  = 301 // { int modstat(int modid, struct module_stat* stat); }\n\tSYS_MODFNEXT                 = 302 // { int modfnext(int modid); }\n\tSYS_MODFIND                  = 303 // { int modfind(const char *name); }\n\tSYS_KLDLOAD                  = 304 // { int kldload(const char *file); }\n\tSYS_KLDUNLOAD                = 305 // { int kldunload(int fileid); }\n\tSYS_KLDFIND                  = 306 // { int kldfind(const char *file); }\n\tSYS_KLDNEXT                  = 307 // { int kldnext(int fileid); }\n\tSYS_KLDSTAT                  = 308 // { int kldstat(int fileid, struct kld_file_stat *stat); }\n\tSYS_KLDFIRSTMOD              = 309 // { int kldfirstmod(int fileid); }\n\tSYS_GETSID                   = 310 // { int getsid(pid_t pid); }\n\tSYS_SETRESUID                = 311 // { int setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_SETRESGID                = 312 // { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_AIO_RETURN               = 314 // { ssize_t aio_return(struct aiocb *aiocbp); }\n\tSYS_AIO_SUSPEND              = 315 // { int aio_suspend(struct aiocb * const * aiocbp, int nent, const struct timespec *timeout); }\n\tSYS_AIO_CANCEL               = 316 // { int aio_cancel(int fd, struct aiocb *aiocbp); }\n\tSYS_AIO_ERROR                = 317 // { int aio_error(struct aiocb *aiocbp); }\n\tSYS_YIELD                    = 321 // { int yield(void); }\n\tSYS_MLOCKALL                 = 324 // { int mlockall(int how); }\n\tSYS_MUNLOCKALL               = 325 // { int munlockall(void); }\n\tSYS___GETCWD                 = 326 // { int __getcwd(char *buf, size_t buflen); }\n\tSYS_SCHED_SETPARAM           = 327 // { int sched_setparam (pid_t pid, const struct sched_param *param); }\n\tSYS_SCHED_GETPARAM           = 328 // { int sched_getparam (pid_t pid, struct sched_param *param); }\n\tSYS_SCHED_SETSCHEDULER       = 329 // { int sched_setscheduler (pid_t pid, int policy, const struct sched_param *param); }\n\tSYS_SCHED_GETSCHEDULER       = 330 // { int sched_getscheduler (pid_t pid); }\n\tSYS_SCHED_YIELD              = 331 // { int sched_yield (void); }\n\tSYS_SCHED_GET_PRIORITY_MAX   = 332 // { int sched_get_priority_max (int policy); }\n\tSYS_SCHED_GET_PRIORITY_MIN   = 333 // { int sched_get_priority_min (int policy); }\n\tSYS_SCHED_RR_GET_INTERVAL    = 334 // { int sched_rr_get_interval (pid_t pid, struct timespec *interval); }\n\tSYS_UTRACE                   = 335 // { int utrace(const void *addr, size_t len); }\n\tSYS_KLDSYM                   = 337 // { int kldsym(int fileid, int cmd, void *data); }\n\tSYS_JAIL                     = 338 // { int jail(struct jail *jail); }\n\tSYS_SIGPROCMASK              = 340 // { int sigprocmask(int how, const sigset_t *set, sigset_t *oset); }\n\tSYS_SIGSUSPEND               = 341 // { int sigsuspend(const sigset_t *sigmask); }\n\tSYS_SIGPENDING               = 343 // { int sigpending(sigset_t *set); }\n\tSYS_SIGTIMEDWAIT             = 345 // { int sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec *timeout); }\n\tSYS_SIGWAITINFO              = 346 // { int sigwaitinfo(const sigset_t *set, siginfo_t *info); }\n\tSYS___ACL_GET_FILE           = 347 // { int __acl_get_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FILE           = 348 // { int __acl_set_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_GET_FD             = 349 // { int __acl_get_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_FD             = 350 // { int __acl_set_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_FILE        = 351 // { int __acl_delete_file(const char *path, acl_type_t type); }\n\tSYS___ACL_DELETE_FD          = 352 // { int __acl_delete_fd(int filedes, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_FILE      = 353 // { int __acl_aclcheck_file(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_ACLCHECK_FD        = 354 // { int __acl_aclcheck_fd(int filedes, acl_type_t type, struct acl *aclp); }\n\tSYS_EXTATTRCTL               = 355 // { int extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE         = 356 // { ssize_t extattr_set_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE         = 357 // { ssize_t extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE      = 358 // { int extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_AIO_WAITCOMPLETE         = 359 // { ssize_t aio_waitcomplete(struct aiocb **aiocbp, struct timespec *timeout); }\n\tSYS_GETRESUID                = 360 // { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_GETRESGID                = 361 // { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_KQUEUE                   = 362 // { int kqueue(void); }\n\tSYS_EXTATTR_SET_FD           = 371 // { ssize_t extattr_set_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD           = 372 // { ssize_t extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD        = 373 // { int extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS___SETUGID                = 374 // { int __setugid(int flag); }\n\tSYS_EACCESS                  = 376 // { int eaccess(char *path, int amode); }\n\tSYS_NMOUNT                   = 378 // { int nmount(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS___MAC_GET_PROC           = 384 // { int __mac_get_proc(struct mac *mac_p); }\n\tSYS___MAC_SET_PROC           = 385 // { int __mac_set_proc(struct mac *mac_p); }\n\tSYS___MAC_GET_FD             = 386 // { int __mac_get_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_GET_FILE           = 387 // { int __mac_get_file(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_FD             = 388 // { int __mac_set_fd(int fd, struct mac *mac_p); }\n\tSYS___MAC_SET_FILE           = 389 // { int __mac_set_file(const char *path_p, struct mac *mac_p); }\n\tSYS_KENV                     = 390 // { int kenv(int what, const char *name, char *value, int len); }\n\tSYS_LCHFLAGS                 = 391 // { int lchflags(const char *path, u_long flags); }\n\tSYS_UUIDGEN                  = 392 // { int uuidgen(struct uuid *store, int count); }\n\tSYS_SENDFILE                 = 393 // { int sendfile(int fd, int s, off_t offset, size_t nbytes, struct sf_hdtr *hdtr, off_t *sbytes, int flags); }\n\tSYS_MAC_SYSCALL              = 394 // { int mac_syscall(const char *policy, int call, void *arg); }\n\tSYS_KSEM_CLOSE               = 400 // { int ksem_close(semid_t id); }\n\tSYS_KSEM_POST                = 401 // { int ksem_post(semid_t id); }\n\tSYS_KSEM_WAIT                = 402 // { int ksem_wait(semid_t id); }\n\tSYS_KSEM_TRYWAIT             = 403 // { int ksem_trywait(semid_t id); }\n\tSYS_KSEM_INIT                = 404 // { int ksem_init(semid_t *idp, unsigned int value); }\n\tSYS_KSEM_OPEN                = 405 // { int ksem_open(semid_t *idp, const char *name, int oflag, mode_t mode, unsigned int value); }\n\tSYS_KSEM_UNLINK              = 406 // { int ksem_unlink(const char *name); }\n\tSYS_KSEM_GETVALUE            = 407 // { int ksem_getvalue(semid_t id, int *val); }\n\tSYS_KSEM_DESTROY             = 408 // { int ksem_destroy(semid_t id); }\n\tSYS___MAC_GET_PID            = 409 // { int __mac_get_pid(pid_t pid, struct mac *mac_p); }\n\tSYS___MAC_GET_LINK           = 410 // { int __mac_get_link(const char *path_p, struct mac *mac_p); }\n\tSYS___MAC_SET_LINK           = 411 // { int __mac_set_link(const char *path_p, struct mac *mac_p); }\n\tSYS_EXTATTR_SET_LINK         = 412 // { ssize_t extattr_set_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK         = 413 // { ssize_t extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK      = 414 // { int extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS___MAC_EXECVE             = 415 // { int __mac_execve(char *fname, char **argv, char **envv, struct mac *mac_p); }\n\tSYS_SIGACTION                = 416 // { int sigaction(int sig, const struct sigaction *act, struct sigaction *oact); }\n\tSYS_SIGRETURN                = 417 // { int sigreturn(const struct __ucontext *sigcntxp); }\n\tSYS_GETCONTEXT               = 421 // { int getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT               = 422 // { int setcontext(const struct __ucontext *ucp); }\n\tSYS_SWAPCONTEXT              = 423 // { int swapcontext(struct __ucontext *oucp, const struct __ucontext *ucp); }\n\tSYS_SWAPOFF                  = 424 // { int swapoff(const char *name); }\n\tSYS___ACL_GET_LINK           = 425 // { int __acl_get_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_SET_LINK           = 426 // { int __acl_set_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS___ACL_DELETE_LINK        = 427 // { int __acl_delete_link(const char *path, acl_type_t type); }\n\tSYS___ACL_ACLCHECK_LINK      = 428 // { int __acl_aclcheck_link(const char *path, acl_type_t type, struct acl *aclp); }\n\tSYS_SIGWAIT                  = 429 // { int sigwait(const sigset_t *set, int *sig); }\n\tSYS_THR_CREATE               = 430 // { int thr_create(ucontext_t *ctx, long *id, int flags); }\n\tSYS_THR_EXIT                 = 431 // { void thr_exit(long *state); }\n\tSYS_THR_SELF                 = 432 // { int thr_self(long *id); }\n\tSYS_THR_KILL                 = 433 // { int thr_kill(long id, int sig); }\n\tSYS_JAIL_ATTACH              = 436 // { int jail_attach(int jid); }\n\tSYS_EXTATTR_LIST_FD          = 437 // { ssize_t extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE        = 438 // { ssize_t extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK        = 439 // { ssize_t extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_KSEM_TIMEDWAIT           = 441 // { int ksem_timedwait(semid_t id, const struct timespec *abstime); }\n\tSYS_THR_SUSPEND              = 442 // { int thr_suspend(const struct timespec *timeout); }\n\tSYS_THR_WAKE                 = 443 // { int thr_wake(long id); }\n\tSYS_KLDUNLOADF               = 444 // { int kldunloadf(int fileid, int flags); }\n\tSYS_AUDIT                    = 445 // { int audit(const void *record, u_int length); }\n\tSYS_AUDITON                  = 446 // { int auditon(int cmd, void *data, u_int length); }\n\tSYS_GETAUID                  = 447 // { int getauid(uid_t *auid); }\n\tSYS_SETAUID                  = 448 // { int setauid(uid_t *auid); }\n\tSYS_GETAUDIT                 = 449 // { int getaudit(struct auditinfo *auditinfo); }\n\tSYS_SETAUDIT                 = 450 // { int setaudit(struct auditinfo *auditinfo); }\n\tSYS_GETAUDIT_ADDR            = 451 // { int getaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_SETAUDIT_ADDR            = 452 // { int setaudit_addr(struct auditinfo_addr *auditinfo_addr, u_int length); }\n\tSYS_AUDITCTL                 = 453 // { int auditctl(char *path); }\n\tSYS__UMTX_OP                 = 454 // { int _umtx_op(void *obj, int op, u_long val, void *uaddr1, void *uaddr2); }\n\tSYS_THR_NEW                  = 455 // { int thr_new(struct thr_param *param, int param_size); }\n\tSYS_SIGQUEUE                 = 456 // { int sigqueue(pid_t pid, int signum, void *value); }\n\tSYS_KMQ_OPEN                 = 457 // { int kmq_open(const char *path, int flags, mode_t mode, const struct mq_attr *attr); }\n\tSYS_KMQ_SETATTR              = 458 // { int kmq_setattr(int mqd, const struct mq_attr *attr, struct mq_attr *oattr); }\n\tSYS_KMQ_TIMEDRECEIVE         = 459 // { int kmq_timedreceive(int mqd, char *msg_ptr, size_t msg_len, unsigned *msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_TIMEDSEND            = 460 // { int kmq_timedsend(int mqd, const char *msg_ptr, size_t msg_len, unsigned msg_prio, const struct timespec *abs_timeout); }\n\tSYS_KMQ_NOTIFY               = 461 // { int kmq_notify(int mqd, const struct sigevent *sigev); }\n\tSYS_KMQ_UNLINK               = 462 // { int kmq_unlink(const char *path); }\n\tSYS_ABORT2                   = 463 // { int abort2(const char *why, int nargs, void **args); }\n\tSYS_THR_SET_NAME             = 464 // { int thr_set_name(long id, const char *name); }\n\tSYS_AIO_FSYNC                = 465 // { int aio_fsync(int op, struct aiocb *aiocbp); }\n\tSYS_RTPRIO_THREAD            = 466 // { int rtprio_thread(int function, lwpid_t lwpid, struct rtprio *rtp); }\n\tSYS_SCTP_PEELOFF             = 471 // { int sctp_peeloff(int sd, uint32_t name); }\n\tSYS_SCTP_GENERIC_SENDMSG     = 472 // { int sctp_generic_sendmsg(int sd, caddr_t msg, int mlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_SENDMSG_IOV = 473 // { int sctp_generic_sendmsg_iov(int sd, struct iovec *iov, int iovlen, caddr_t to, __socklen_t tolen, struct sctp_sndrcvinfo *sinfo, int flags); }\n\tSYS_SCTP_GENERIC_RECVMSG     = 474 // { int sctp_generic_recvmsg(int sd, struct iovec *iov, int iovlen, struct sockaddr *from, __socklen_t *fromlenaddr, struct sctp_sndrcvinfo *sinfo, int *msg_flags); }\n\tSYS_PREAD                    = 475 // { ssize_t pread(int fd, void *buf, size_t nbyte, off_t offset); }\n\tSYS_PWRITE                   = 476 // { ssize_t pwrite(int fd, const void *buf, size_t nbyte, off_t offset); }\n\tSYS_MMAP                     = 477 // { caddr_t mmap(caddr_t addr, size_t len, int prot, int flags, int fd, off_t pos); }\n\tSYS_LSEEK                    = 478 // { off_t lseek(int fd, off_t offset, int whence); }\n\tSYS_TRUNCATE                 = 479 // { int truncate(char *path, off_t length); }\n\tSYS_FTRUNCATE                = 480 // { int ftruncate(int fd, off_t length); }\n\tSYS_THR_KILL2                = 481 // { int thr_kill2(pid_t pid, long id, int sig); }\n\tSYS_SHM_OPEN                 = 482 // { int shm_open(const char *path, int flags, mode_t mode); }\n\tSYS_SHM_UNLINK               = 483 // { int shm_unlink(const char *path); }\n\tSYS_CPUSET                   = 484 // { int cpuset(cpusetid_t *setid); }\n\tSYS_CPUSET_SETID             = 485 // { int cpuset_setid(cpuwhich_t which, id_t id, cpusetid_t setid); }\n\tSYS_CPUSET_GETID             = 486 // { int cpuset_getid(cpulevel_t level, cpuwhich_t which, id_t id, cpusetid_t *setid); }\n\tSYS_CPUSET_GETAFFINITY       = 487 // { int cpuset_getaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, cpuset_t *mask); }\n\tSYS_CPUSET_SETAFFINITY       = 488 // { int cpuset_setaffinity(cpulevel_t level, cpuwhich_t which, id_t id, size_t cpusetsize, const cpuset_t *mask); }\n\tSYS_FACCESSAT                = 489 // { int faccessat(int fd, char *path, int amode, int flag); }\n\tSYS_FCHMODAT                 = 490 // { int fchmodat(int fd, char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT                 = 491 // { int fchownat(int fd, char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_FEXECVE                  = 492 // { int fexecve(int fd, char **argv, char **envv); }\n\tSYS_FUTIMESAT                = 494 // { int futimesat(int fd, char *path, struct timeval *times); }\n\tSYS_LINKAT                   = 495 // { int linkat(int fd1, char *path1, int fd2, char *path2, int flag); }\n\tSYS_MKDIRAT                  = 496 // { int mkdirat(int fd, char *path, mode_t mode); }\n\tSYS_MKFIFOAT                 = 497 // { int mkfifoat(int fd, char *path, mode_t mode); }\n\tSYS_OPENAT                   = 499 // { int openat(int fd, char *path, int flag, mode_t mode); }\n\tSYS_READLINKAT               = 500 // { ssize_t readlinkat(int fd, char *path, char *buf, size_t bufsize); }\n\tSYS_RENAMEAT                 = 501 // { int renameat(int oldfd, char *old, int newfd, char *new); }\n\tSYS_SYMLINKAT                = 502 // { int symlinkat(char *path1, int fd, char *path2); }\n\tSYS_UNLINKAT                 = 503 // { int unlinkat(int fd, char *path, int flag); }\n\tSYS_POSIX_OPENPT             = 504 // { int posix_openpt(int flags); }\n\tSYS_GSSD_SYSCALL             = 505 // { int gssd_syscall(char *path); }\n\tSYS_JAIL_GET                 = 506 // { int jail_get(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_SET                 = 507 // { int jail_set(struct iovec *iovp, unsigned int iovcnt, int flags); }\n\tSYS_JAIL_REMOVE              = 508 // { int jail_remove(int jid); }\n\tSYS_CLOSEFROM                = 509 // { int closefrom(int lowfd); }\n\tSYS___SEMCTL                 = 510 // { int __semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_MSGCTL                   = 511 // { int msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SHMCTL                   = 512 // { int shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_LPATHCONF                = 513 // { int lpathconf(char *path, int name); }\n\tSYS___CAP_RIGHTS_GET         = 515 // { int __cap_rights_get(int version, int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_ENTER                = 516 // { int cap_enter(void); }\n\tSYS_CAP_GETMODE              = 517 // { int cap_getmode(u_int *modep); }\n\tSYS_PDFORK                   = 518 // { int pdfork(int *fdp, int flags); }\n\tSYS_PDKILL                   = 519 // { int pdkill(int fd, int signum); }\n\tSYS_PDGETPID                 = 520 // { int pdgetpid(int fd, pid_t *pidp); }\n\tSYS_PSELECT                  = 522 // { int pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *sm); }\n\tSYS_GETLOGINCLASS            = 523 // { int getloginclass(char *namebuf, size_t namelen); }\n\tSYS_SETLOGINCLASS            = 524 // { int setloginclass(const char *namebuf); }\n\tSYS_RCTL_GET_RACCT           = 525 // { int rctl_get_racct(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_RULES           = 526 // { int rctl_get_rules(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_GET_LIMITS          = 527 // { int rctl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_ADD_RULE            = 528 // { int rctl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_RCTL_REMOVE_RULE         = 529 // { int rctl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }\n\tSYS_POSIX_FALLOCATE          = 530 // { int posix_fallocate(int fd, off_t offset, off_t len); }\n\tSYS_POSIX_FADVISE            = 531 // { int posix_fadvise(int fd, off_t offset, off_t len, int advice); }\n\tSYS_WAIT6                    = 532 // { int wait6(idtype_t idtype, id_t id, int *status, int options, struct __wrusage *wrusage, siginfo_t *info); }\n\tSYS_CAP_RIGHTS_LIMIT         = 533 // { int cap_rights_limit(int fd, cap_rights_t *rightsp); }\n\tSYS_CAP_IOCTLS_LIMIT         = 534 // { int cap_ioctls_limit(int fd, const u_long *cmds, size_t ncmds); }\n\tSYS_CAP_IOCTLS_GET           = 535 // { ssize_t cap_ioctls_get(int fd, u_long *cmds, size_t maxcmds); }\n\tSYS_CAP_FCNTLS_LIMIT         = 536 // { int cap_fcntls_limit(int fd, uint32_t fcntlrights); }\n\tSYS_CAP_FCNTLS_GET           = 537 // { int cap_fcntls_get(int fd, uint32_t *fcntlrightsp); }\n\tSYS_BINDAT                   = 538 // { int bindat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CONNECTAT                = 539 // { int connectat(int fd, int s, caddr_t name, int namelen); }\n\tSYS_CHFLAGSAT                = 540 // { int chflagsat(int fd, const char *path, u_long flags, int atflag); }\n\tSYS_ACCEPT4                  = 541 // { int accept4(int s, struct sockaddr * __restrict name, __socklen_t * __restrict anamelen, int flags); }\n\tSYS_PIPE2                    = 542 // { int pipe2(int *fildes, int flags); }\n\tSYS_AIO_MLOCK                = 543 // { int aio_mlock(struct aiocb *aiocbp); }\n\tSYS_PROCCTL                  = 544 // { int procctl(idtype_t idtype, id_t id, int com, void *data); }\n\tSYS_PPOLL                    = 545 // { int ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *set); }\n\tSYS_FUTIMENS                 = 546 // { int futimens(int fd, struct timespec *times); }\n\tSYS_UTIMENSAT                = 547 // { int utimensat(int fd, char *path, struct timespec *times, int flag); }\n\tSYS_FDATASYNC                = 550 // { int fdatasync(int fd); }\n\tSYS_FSTAT                    = 551 // { int fstat(int fd, struct stat *sb); }\n\tSYS_FSTATAT                  = 552 // { int fstatat(int fd, char *path, struct stat *buf, int flag); }\n\tSYS_FHSTAT                   = 553 // { int fhstat(const struct fhandle *u_fhp, struct stat *sb); }\n\tSYS_GETDIRENTRIES            = 554 // { ssize_t getdirentries(int fd, char *buf, size_t count, off_t *basep); }\n\tSYS_STATFS                   = 555 // { int statfs(char *path, struct statfs *buf); }\n\tSYS_FSTATFS                  = 556 // { int fstatfs(int fd, struct statfs *buf); }\n\tSYS_GETFSSTAT                = 557 // { int getfsstat(struct statfs *buf, long bufsize, int mode); }\n\tSYS_FHSTATFS                 = 558 // { int fhstatfs(const struct fhandle *u_fhp, struct statfs *buf); }\n\tSYS_MKNODAT                  = 559 // { int mknodat(int fd, char *path, mode_t mode, dev_t dev); }\n\tSYS_KEVENT                   = 560 // { int kevent(int fd, struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_CPUSET_GETDOMAIN         = 561 // { int cpuset_getdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int *policy); }\n\tSYS_CPUSET_SETDOMAIN         = 562 // { int cpuset_setdomain(cpulevel_t level, cpuwhich_t which, id_t id, size_t domainsetsize, domainset_t *mask, int policy); }\n\tSYS_GETRANDOM                = 563 // { int getrandom(void *buf, size_t buflen, unsigned int flags); }\n\tSYS_GETFHAT                  = 564 // { int getfhat(int fd, char *path, struct fhandle *fhp, int flags); }\n\tSYS_FHLINK                   = 565 // { int fhlink(struct fhandle *fhp, const char *to); }\n\tSYS_FHLINKAT                 = 566 // { int fhlinkat(struct fhandle *fhp, int tofd, const char *to,); }\n\tSYS_FHREADLINK               = 567 // { int fhreadlink(struct fhandle *fhp, char *buf, size_t bufsize); }\n\tSYS___SYSCTLBYNAME           = 570 // { int __sysctlbyname(const char *name, size_t namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_CLOSE_RANGE              = 575 // { int close_range(u_int lowfd, u_int highfd, int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_386.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/386/include -m32 /tmp/386/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86OLD                      = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_VM86                         = 166\n\tSYS_QUERY_MODULE                 = 167\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_GETPMSG                      = 188\n\tSYS_PUTPMSG                      = 189\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_PIVOT_ROOT                   = 217\n\tSYS_MINCORE                      = 218\n\tSYS_MADVISE                      = 219\n\tSYS_GETDENTS64                   = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_SET_THREAD_AREA              = 243\n\tSYS_GET_THREAD_AREA              = 244\n\tSYS_IO_SETUP                     = 245\n\tSYS_IO_DESTROY                   = 246\n\tSYS_IO_GETEVENTS                 = 247\n\tSYS_IO_SUBMIT                    = 248\n\tSYS_IO_CANCEL                    = 249\n\tSYS_FADVISE64                    = 250\n\tSYS_EXIT_GROUP                   = 252\n\tSYS_LOOKUP_DCOOKIE               = 253\n\tSYS_EPOLL_CREATE                 = 254\n\tSYS_EPOLL_CTL                    = 255\n\tSYS_EPOLL_WAIT                   = 256\n\tSYS_REMAP_FILE_PAGES             = 257\n\tSYS_SET_TID_ADDRESS              = 258\n\tSYS_TIMER_CREATE                 = 259\n\tSYS_TIMER_SETTIME                = 260\n\tSYS_TIMER_GETTIME                = 261\n\tSYS_TIMER_GETOVERRUN             = 262\n\tSYS_TIMER_DELETE                 = 263\n\tSYS_CLOCK_SETTIME                = 264\n\tSYS_CLOCK_GETTIME                = 265\n\tSYS_CLOCK_GETRES                 = 266\n\tSYS_CLOCK_NANOSLEEP              = 267\n\tSYS_STATFS64                     = 268\n\tSYS_FSTATFS64                    = 269\n\tSYS_TGKILL                       = 270\n\tSYS_UTIMES                       = 271\n\tSYS_FADVISE64_64                 = 272\n\tSYS_VSERVER                      = 273\n\tSYS_MBIND                        = 274\n\tSYS_GET_MEMPOLICY                = 275\n\tSYS_SET_MEMPOLICY                = 276\n\tSYS_MQ_OPEN                      = 277\n\tSYS_MQ_UNLINK                    = 278\n\tSYS_MQ_TIMEDSEND                 = 279\n\tSYS_MQ_TIMEDRECEIVE              = 280\n\tSYS_MQ_NOTIFY                    = 281\n\tSYS_MQ_GETSETATTR                = 282\n\tSYS_KEXEC_LOAD                   = 283\n\tSYS_WAITID                       = 284\n\tSYS_ADD_KEY                      = 286\n\tSYS_REQUEST_KEY                  = 287\n\tSYS_KEYCTL                       = 288\n\tSYS_IOPRIO_SET                   = 289\n\tSYS_IOPRIO_GET                   = 290\n\tSYS_INOTIFY_INIT                 = 291\n\tSYS_INOTIFY_ADD_WATCH            = 292\n\tSYS_INOTIFY_RM_WATCH             = 293\n\tSYS_MIGRATE_PAGES                = 294\n\tSYS_OPENAT                       = 295\n\tSYS_MKDIRAT                      = 296\n\tSYS_MKNODAT                      = 297\n\tSYS_FCHOWNAT                     = 298\n\tSYS_FUTIMESAT                    = 299\n\tSYS_FSTATAT64                    = 300\n\tSYS_UNLINKAT                     = 301\n\tSYS_RENAMEAT                     = 302\n\tSYS_LINKAT                       = 303\n\tSYS_SYMLINKAT                    = 304\n\tSYS_READLINKAT                   = 305\n\tSYS_FCHMODAT                     = 306\n\tSYS_FACCESSAT                    = 307\n\tSYS_PSELECT6                     = 308\n\tSYS_PPOLL                        = 309\n\tSYS_UNSHARE                      = 310\n\tSYS_SET_ROBUST_LIST              = 311\n\tSYS_GET_ROBUST_LIST              = 312\n\tSYS_SPLICE                       = 313\n\tSYS_SYNC_FILE_RANGE              = 314\n\tSYS_TEE                          = 315\n\tSYS_VMSPLICE                     = 316\n\tSYS_MOVE_PAGES                   = 317\n\tSYS_GETCPU                       = 318\n\tSYS_EPOLL_PWAIT                  = 319\n\tSYS_UTIMENSAT                    = 320\n\tSYS_SIGNALFD                     = 321\n\tSYS_TIMERFD_CREATE               = 322\n\tSYS_EVENTFD                      = 323\n\tSYS_FALLOCATE                    = 324\n\tSYS_TIMERFD_SETTIME              = 325\n\tSYS_TIMERFD_GETTIME              = 326\n\tSYS_SIGNALFD4                    = 327\n\tSYS_EVENTFD2                     = 328\n\tSYS_EPOLL_CREATE1                = 329\n\tSYS_DUP3                         = 330\n\tSYS_PIPE2                        = 331\n\tSYS_INOTIFY_INIT1                = 332\n\tSYS_PREADV                       = 333\n\tSYS_PWRITEV                      = 334\n\tSYS_RT_TGSIGQUEUEINFO            = 335\n\tSYS_PERF_EVENT_OPEN              = 336\n\tSYS_RECVMMSG                     = 337\n\tSYS_FANOTIFY_INIT                = 338\n\tSYS_FANOTIFY_MARK                = 339\n\tSYS_PRLIMIT64                    = 340\n\tSYS_NAME_TO_HANDLE_AT            = 341\n\tSYS_OPEN_BY_HANDLE_AT            = 342\n\tSYS_CLOCK_ADJTIME                = 343\n\tSYS_SYNCFS                       = 344\n\tSYS_SENDMMSG                     = 345\n\tSYS_SETNS                        = 346\n\tSYS_PROCESS_VM_READV             = 347\n\tSYS_PROCESS_VM_WRITEV            = 348\n\tSYS_KCMP                         = 349\n\tSYS_FINIT_MODULE                 = 350\n\tSYS_SCHED_SETATTR                = 351\n\tSYS_SCHED_GETATTR                = 352\n\tSYS_RENAMEAT2                    = 353\n\tSYS_SECCOMP                      = 354\n\tSYS_GETRANDOM                    = 355\n\tSYS_MEMFD_CREATE                 = 356\n\tSYS_BPF                          = 357\n\tSYS_EXECVEAT                     = 358\n\tSYS_SOCKET                       = 359\n\tSYS_SOCKETPAIR                   = 360\n\tSYS_BIND                         = 361\n\tSYS_CONNECT                      = 362\n\tSYS_LISTEN                       = 363\n\tSYS_ACCEPT4                      = 364\n\tSYS_GETSOCKOPT                   = 365\n\tSYS_SETSOCKOPT                   = 366\n\tSYS_GETSOCKNAME                  = 367\n\tSYS_GETPEERNAME                  = 368\n\tSYS_SENDTO                       = 369\n\tSYS_SENDMSG                      = 370\n\tSYS_RECVFROM                     = 371\n\tSYS_RECVMSG                      = 372\n\tSYS_SHUTDOWN                     = 373\n\tSYS_USERFAULTFD                  = 374\n\tSYS_MEMBARRIER                   = 375\n\tSYS_MLOCK2                       = 376\n\tSYS_COPY_FILE_RANGE              = 377\n\tSYS_PREADV2                      = 378\n\tSYS_PWRITEV2                     = 379\n\tSYS_PKEY_MPROTECT                = 380\n\tSYS_PKEY_ALLOC                   = 381\n\tSYS_PKEY_FREE                    = 382\n\tSYS_STATX                        = 383\n\tSYS_ARCH_PRCTL                   = 384\n\tSYS_IO_PGETEVENTS                = 385\n\tSYS_RSEQ                         = 386\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_MEMFD_SECRET                 = 447\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_amd64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/amd64/include -m64 /tmp/amd64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 0\n\tSYS_WRITE                   = 1\n\tSYS_OPEN                    = 2\n\tSYS_CLOSE                   = 3\n\tSYS_STAT                    = 4\n\tSYS_FSTAT                   = 5\n\tSYS_LSTAT                   = 6\n\tSYS_POLL                    = 7\n\tSYS_LSEEK                   = 8\n\tSYS_MMAP                    = 9\n\tSYS_MPROTECT                = 10\n\tSYS_MUNMAP                  = 11\n\tSYS_BRK                     = 12\n\tSYS_RT_SIGACTION            = 13\n\tSYS_RT_SIGPROCMASK          = 14\n\tSYS_RT_SIGRETURN            = 15\n\tSYS_IOCTL                   = 16\n\tSYS_PREAD64                 = 17\n\tSYS_PWRITE64                = 18\n\tSYS_READV                   = 19\n\tSYS_WRITEV                  = 20\n\tSYS_ACCESS                  = 21\n\tSYS_PIPE                    = 22\n\tSYS_SELECT                  = 23\n\tSYS_SCHED_YIELD             = 24\n\tSYS_MREMAP                  = 25\n\tSYS_MSYNC                   = 26\n\tSYS_MINCORE                 = 27\n\tSYS_MADVISE                 = 28\n\tSYS_SHMGET                  = 29\n\tSYS_SHMAT                   = 30\n\tSYS_SHMCTL                  = 31\n\tSYS_DUP                     = 32\n\tSYS_DUP2                    = 33\n\tSYS_PAUSE                   = 34\n\tSYS_NANOSLEEP               = 35\n\tSYS_GETITIMER               = 36\n\tSYS_ALARM                   = 37\n\tSYS_SETITIMER               = 38\n\tSYS_GETPID                  = 39\n\tSYS_SENDFILE                = 40\n\tSYS_SOCKET                  = 41\n\tSYS_CONNECT                 = 42\n\tSYS_ACCEPT                  = 43\n\tSYS_SENDTO                  = 44\n\tSYS_RECVFROM                = 45\n\tSYS_SENDMSG                 = 46\n\tSYS_RECVMSG                 = 47\n\tSYS_SHUTDOWN                = 48\n\tSYS_BIND                    = 49\n\tSYS_LISTEN                  = 50\n\tSYS_GETSOCKNAME             = 51\n\tSYS_GETPEERNAME             = 52\n\tSYS_SOCKETPAIR              = 53\n\tSYS_SETSOCKOPT              = 54\n\tSYS_GETSOCKOPT              = 55\n\tSYS_CLONE                   = 56\n\tSYS_FORK                    = 57\n\tSYS_VFORK                   = 58\n\tSYS_EXECVE                  = 59\n\tSYS_EXIT                    = 60\n\tSYS_WAIT4                   = 61\n\tSYS_KILL                    = 62\n\tSYS_UNAME                   = 63\n\tSYS_SEMGET                  = 64\n\tSYS_SEMOP                   = 65\n\tSYS_SEMCTL                  = 66\n\tSYS_SHMDT                   = 67\n\tSYS_MSGGET                  = 68\n\tSYS_MSGSND                  = 69\n\tSYS_MSGRCV                  = 70\n\tSYS_MSGCTL                  = 71\n\tSYS_FCNTL                   = 72\n\tSYS_FLOCK                   = 73\n\tSYS_FSYNC                   = 74\n\tSYS_FDATASYNC               = 75\n\tSYS_TRUNCATE                = 76\n\tSYS_FTRUNCATE               = 77\n\tSYS_GETDENTS                = 78\n\tSYS_GETCWD                  = 79\n\tSYS_CHDIR                   = 80\n\tSYS_FCHDIR                  = 81\n\tSYS_RENAME                  = 82\n\tSYS_MKDIR                   = 83\n\tSYS_RMDIR                   = 84\n\tSYS_CREAT                   = 85\n\tSYS_LINK                    = 86\n\tSYS_UNLINK                  = 87\n\tSYS_SYMLINK                 = 88\n\tSYS_READLINK                = 89\n\tSYS_CHMOD                   = 90\n\tSYS_FCHMOD                  = 91\n\tSYS_CHOWN                   = 92\n\tSYS_FCHOWN                  = 93\n\tSYS_LCHOWN                  = 94\n\tSYS_UMASK                   = 95\n\tSYS_GETTIMEOFDAY            = 96\n\tSYS_GETRLIMIT               = 97\n\tSYS_GETRUSAGE               = 98\n\tSYS_SYSINFO                 = 99\n\tSYS_TIMES                   = 100\n\tSYS_PTRACE                  = 101\n\tSYS_GETUID                  = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_GETGID                  = 104\n\tSYS_SETUID                  = 105\n\tSYS_SETGID                  = 106\n\tSYS_GETEUID                 = 107\n\tSYS_GETEGID                 = 108\n\tSYS_SETPGID                 = 109\n\tSYS_GETPPID                 = 110\n\tSYS_GETPGRP                 = 111\n\tSYS_SETSID                  = 112\n\tSYS_SETREUID                = 113\n\tSYS_SETREGID                = 114\n\tSYS_GETGROUPS               = 115\n\tSYS_SETGROUPS               = 116\n\tSYS_SETRESUID               = 117\n\tSYS_GETRESUID               = 118\n\tSYS_SETRESGID               = 119\n\tSYS_GETRESGID               = 120\n\tSYS_GETPGID                 = 121\n\tSYS_SETFSUID                = 122\n\tSYS_SETFSGID                = 123\n\tSYS_GETSID                  = 124\n\tSYS_CAPGET                  = 125\n\tSYS_CAPSET                  = 126\n\tSYS_RT_SIGPENDING           = 127\n\tSYS_RT_SIGTIMEDWAIT         = 128\n\tSYS_RT_SIGQUEUEINFO         = 129\n\tSYS_RT_SIGSUSPEND           = 130\n\tSYS_SIGALTSTACK             = 131\n\tSYS_UTIME                   = 132\n\tSYS_MKNOD                   = 133\n\tSYS_USELIB                  = 134\n\tSYS_PERSONALITY             = 135\n\tSYS_USTAT                   = 136\n\tSYS_STATFS                  = 137\n\tSYS_FSTATFS                 = 138\n\tSYS_SYSFS                   = 139\n\tSYS_GETPRIORITY             = 140\n\tSYS_SETPRIORITY             = 141\n\tSYS_SCHED_SETPARAM          = 142\n\tSYS_SCHED_GETPARAM          = 143\n\tSYS_SCHED_SETSCHEDULER      = 144\n\tSYS_SCHED_GETSCHEDULER      = 145\n\tSYS_SCHED_GET_PRIORITY_MAX  = 146\n\tSYS_SCHED_GET_PRIORITY_MIN  = 147\n\tSYS_SCHED_RR_GET_INTERVAL   = 148\n\tSYS_MLOCK                   = 149\n\tSYS_MUNLOCK                 = 150\n\tSYS_MLOCKALL                = 151\n\tSYS_MUNLOCKALL              = 152\n\tSYS_VHANGUP                 = 153\n\tSYS_MODIFY_LDT              = 154\n\tSYS_PIVOT_ROOT              = 155\n\tSYS__SYSCTL                 = 156\n\tSYS_PRCTL                   = 157\n\tSYS_ARCH_PRCTL              = 158\n\tSYS_ADJTIMEX                = 159\n\tSYS_SETRLIMIT               = 160\n\tSYS_CHROOT                  = 161\n\tSYS_SYNC                    = 162\n\tSYS_ACCT                    = 163\n\tSYS_SETTIMEOFDAY            = 164\n\tSYS_MOUNT                   = 165\n\tSYS_UMOUNT2                 = 166\n\tSYS_SWAPON                  = 167\n\tSYS_SWAPOFF                 = 168\n\tSYS_REBOOT                  = 169\n\tSYS_SETHOSTNAME             = 170\n\tSYS_SETDOMAINNAME           = 171\n\tSYS_IOPL                    = 172\n\tSYS_IOPERM                  = 173\n\tSYS_CREATE_MODULE           = 174\n\tSYS_INIT_MODULE             = 175\n\tSYS_DELETE_MODULE           = 176\n\tSYS_GET_KERNEL_SYMS         = 177\n\tSYS_QUERY_MODULE            = 178\n\tSYS_QUOTACTL                = 179\n\tSYS_NFSSERVCTL              = 180\n\tSYS_GETPMSG                 = 181\n\tSYS_PUTPMSG                 = 182\n\tSYS_AFS_SYSCALL             = 183\n\tSYS_TUXCALL                 = 184\n\tSYS_SECURITY                = 185\n\tSYS_GETTID                  = 186\n\tSYS_READAHEAD               = 187\n\tSYS_SETXATTR                = 188\n\tSYS_LSETXATTR               = 189\n\tSYS_FSETXATTR               = 190\n\tSYS_GETXATTR                = 191\n\tSYS_LGETXATTR               = 192\n\tSYS_FGETXATTR               = 193\n\tSYS_LISTXATTR               = 194\n\tSYS_LLISTXATTR              = 195\n\tSYS_FLISTXATTR              = 196\n\tSYS_REMOVEXATTR             = 197\n\tSYS_LREMOVEXATTR            = 198\n\tSYS_FREMOVEXATTR            = 199\n\tSYS_TKILL                   = 200\n\tSYS_TIME                    = 201\n\tSYS_FUTEX                   = 202\n\tSYS_SCHED_SETAFFINITY       = 203\n\tSYS_SCHED_GETAFFINITY       = 204\n\tSYS_SET_THREAD_AREA         = 205\n\tSYS_IO_SETUP                = 206\n\tSYS_IO_DESTROY              = 207\n\tSYS_IO_GETEVENTS            = 208\n\tSYS_IO_SUBMIT               = 209\n\tSYS_IO_CANCEL               = 210\n\tSYS_GET_THREAD_AREA         = 211\n\tSYS_LOOKUP_DCOOKIE          = 212\n\tSYS_EPOLL_CREATE            = 213\n\tSYS_EPOLL_CTL_OLD           = 214\n\tSYS_EPOLL_WAIT_OLD          = 215\n\tSYS_REMAP_FILE_PAGES        = 216\n\tSYS_GETDENTS64              = 217\n\tSYS_SET_TID_ADDRESS         = 218\n\tSYS_RESTART_SYSCALL         = 219\n\tSYS_SEMTIMEDOP              = 220\n\tSYS_FADVISE64               = 221\n\tSYS_TIMER_CREATE            = 222\n\tSYS_TIMER_SETTIME           = 223\n\tSYS_TIMER_GETTIME           = 224\n\tSYS_TIMER_GETOVERRUN        = 225\n\tSYS_TIMER_DELETE            = 226\n\tSYS_CLOCK_SETTIME           = 227\n\tSYS_CLOCK_GETTIME           = 228\n\tSYS_CLOCK_GETRES            = 229\n\tSYS_CLOCK_NANOSLEEP         = 230\n\tSYS_EXIT_GROUP              = 231\n\tSYS_EPOLL_WAIT              = 232\n\tSYS_EPOLL_CTL               = 233\n\tSYS_TGKILL                  = 234\n\tSYS_UTIMES                  = 235\n\tSYS_VSERVER                 = 236\n\tSYS_MBIND                   = 237\n\tSYS_SET_MEMPOLICY           = 238\n\tSYS_GET_MEMPOLICY           = 239\n\tSYS_MQ_OPEN                 = 240\n\tSYS_MQ_UNLINK               = 241\n\tSYS_MQ_TIMEDSEND            = 242\n\tSYS_MQ_TIMEDRECEIVE         = 243\n\tSYS_MQ_NOTIFY               = 244\n\tSYS_MQ_GETSETATTR           = 245\n\tSYS_KEXEC_LOAD              = 246\n\tSYS_WAITID                  = 247\n\tSYS_ADD_KEY                 = 248\n\tSYS_REQUEST_KEY             = 249\n\tSYS_KEYCTL                  = 250\n\tSYS_IOPRIO_SET              = 251\n\tSYS_IOPRIO_GET              = 252\n\tSYS_INOTIFY_INIT            = 253\n\tSYS_INOTIFY_ADD_WATCH       = 254\n\tSYS_INOTIFY_RM_WATCH        = 255\n\tSYS_MIGRATE_PAGES           = 256\n\tSYS_OPENAT                  = 257\n\tSYS_MKDIRAT                 = 258\n\tSYS_MKNODAT                 = 259\n\tSYS_FCHOWNAT                = 260\n\tSYS_FUTIMESAT               = 261\n\tSYS_NEWFSTATAT              = 262\n\tSYS_UNLINKAT                = 263\n\tSYS_RENAMEAT                = 264\n\tSYS_LINKAT                  = 265\n\tSYS_SYMLINKAT               = 266\n\tSYS_READLINKAT              = 267\n\tSYS_FCHMODAT                = 268\n\tSYS_FACCESSAT               = 269\n\tSYS_PSELECT6                = 270\n\tSYS_PPOLL                   = 271\n\tSYS_UNSHARE                 = 272\n\tSYS_SET_ROBUST_LIST         = 273\n\tSYS_GET_ROBUST_LIST         = 274\n\tSYS_SPLICE                  = 275\n\tSYS_TEE                     = 276\n\tSYS_SYNC_FILE_RANGE         = 277\n\tSYS_VMSPLICE                = 278\n\tSYS_MOVE_PAGES              = 279\n\tSYS_UTIMENSAT               = 280\n\tSYS_EPOLL_PWAIT             = 281\n\tSYS_SIGNALFD                = 282\n\tSYS_TIMERFD_CREATE          = 283\n\tSYS_EVENTFD                 = 284\n\tSYS_FALLOCATE               = 285\n\tSYS_TIMERFD_SETTIME         = 286\n\tSYS_TIMERFD_GETTIME         = 287\n\tSYS_ACCEPT4                 = 288\n\tSYS_SIGNALFD4               = 289\n\tSYS_EVENTFD2                = 290\n\tSYS_EPOLL_CREATE1           = 291\n\tSYS_DUP3                    = 292\n\tSYS_PIPE2                   = 293\n\tSYS_INOTIFY_INIT1           = 294\n\tSYS_PREADV                  = 295\n\tSYS_PWRITEV                 = 296\n\tSYS_RT_TGSIGQUEUEINFO       = 297\n\tSYS_PERF_EVENT_OPEN         = 298\n\tSYS_RECVMMSG                = 299\n\tSYS_FANOTIFY_INIT           = 300\n\tSYS_FANOTIFY_MARK           = 301\n\tSYS_PRLIMIT64               = 302\n\tSYS_NAME_TO_HANDLE_AT       = 303\n\tSYS_OPEN_BY_HANDLE_AT       = 304\n\tSYS_CLOCK_ADJTIME           = 305\n\tSYS_SYNCFS                  = 306\n\tSYS_SENDMMSG                = 307\n\tSYS_SETNS                   = 308\n\tSYS_GETCPU                  = 309\n\tSYS_PROCESS_VM_READV        = 310\n\tSYS_PROCESS_VM_WRITEV       = 311\n\tSYS_KCMP                    = 312\n\tSYS_FINIT_MODULE            = 313\n\tSYS_SCHED_SETATTR           = 314\n\tSYS_SCHED_GETATTR           = 315\n\tSYS_RENAMEAT2               = 316\n\tSYS_SECCOMP                 = 317\n\tSYS_GETRANDOM               = 318\n\tSYS_MEMFD_CREATE            = 319\n\tSYS_KEXEC_FILE_LOAD         = 320\n\tSYS_BPF                     = 321\n\tSYS_EXECVEAT                = 322\n\tSYS_USERFAULTFD             = 323\n\tSYS_MEMBARRIER              = 324\n\tSYS_MLOCK2                  = 325\n\tSYS_COPY_FILE_RANGE         = 326\n\tSYS_PREADV2                 = 327\n\tSYS_PWRITEV2                = 328\n\tSYS_PKEY_MPROTECT           = 329\n\tSYS_PKEY_ALLOC              = 330\n\tSYS_PKEY_FREE               = 331\n\tSYS_STATX                   = 332\n\tSYS_IO_PGETEVENTS           = 333\n\tSYS_RSEQ                    = 334\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_arm.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm/include /tmp/arm/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL_MASK                 = 0\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_PTRACE                       = 26\n\tSYS_PAUSE                        = 29\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_SETPGID                      = 57\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SYMLINK                      = 83\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_VHANGUP                      = 111\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_POLL                         = 168\n\tSYS_NFSSERVCTL                   = 169\n\tSYS_SETRESGID                    = 170\n\tSYS_GETRESGID                    = 171\n\tSYS_PRCTL                        = 172\n\tSYS_RT_SIGRETURN                 = 173\n\tSYS_RT_SIGACTION                 = 174\n\tSYS_RT_SIGPROCMASK               = 175\n\tSYS_RT_SIGPENDING                = 176\n\tSYS_RT_SIGTIMEDWAIT              = 177\n\tSYS_RT_SIGQUEUEINFO              = 178\n\tSYS_RT_SIGSUSPEND                = 179\n\tSYS_PREAD64                      = 180\n\tSYS_PWRITE64                     = 181\n\tSYS_CHOWN                        = 182\n\tSYS_GETCWD                       = 183\n\tSYS_CAPGET                       = 184\n\tSYS_CAPSET                       = 185\n\tSYS_SIGALTSTACK                  = 186\n\tSYS_SENDFILE                     = 187\n\tSYS_VFORK                        = 190\n\tSYS_UGETRLIMIT                   = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_LCHOWN32                     = 198\n\tSYS_GETUID32                     = 199\n\tSYS_GETGID32                     = 200\n\tSYS_GETEUID32                    = 201\n\tSYS_GETEGID32                    = 202\n\tSYS_SETREUID32                   = 203\n\tSYS_SETREGID32                   = 204\n\tSYS_GETGROUPS32                  = 205\n\tSYS_SETGROUPS32                  = 206\n\tSYS_FCHOWN32                     = 207\n\tSYS_SETRESUID32                  = 208\n\tSYS_GETRESUID32                  = 209\n\tSYS_SETRESGID32                  = 210\n\tSYS_GETRESGID32                  = 211\n\tSYS_CHOWN32                      = 212\n\tSYS_SETUID32                     = 213\n\tSYS_SETGID32                     = 214\n\tSYS_SETFSUID32                   = 215\n\tSYS_SETFSGID32                   = 216\n\tSYS_GETDENTS64                   = 217\n\tSYS_PIVOT_ROOT                   = 218\n\tSYS_MINCORE                      = 219\n\tSYS_MADVISE                      = 220\n\tSYS_FCNTL64                      = 221\n\tSYS_GETTID                       = 224\n\tSYS_READAHEAD                    = 225\n\tSYS_SETXATTR                     = 226\n\tSYS_LSETXATTR                    = 227\n\tSYS_FSETXATTR                    = 228\n\tSYS_GETXATTR                     = 229\n\tSYS_LGETXATTR                    = 230\n\tSYS_FGETXATTR                    = 231\n\tSYS_LISTXATTR                    = 232\n\tSYS_LLISTXATTR                   = 233\n\tSYS_FLISTXATTR                   = 234\n\tSYS_REMOVEXATTR                  = 235\n\tSYS_LREMOVEXATTR                 = 236\n\tSYS_FREMOVEXATTR                 = 237\n\tSYS_TKILL                        = 238\n\tSYS_SENDFILE64                   = 239\n\tSYS_FUTEX                        = 240\n\tSYS_SCHED_SETAFFINITY            = 241\n\tSYS_SCHED_GETAFFINITY            = 242\n\tSYS_IO_SETUP                     = 243\n\tSYS_IO_DESTROY                   = 244\n\tSYS_IO_GETEVENTS                 = 245\n\tSYS_IO_SUBMIT                    = 246\n\tSYS_IO_CANCEL                    = 247\n\tSYS_EXIT_GROUP                   = 248\n\tSYS_LOOKUP_DCOOKIE               = 249\n\tSYS_EPOLL_CREATE                 = 250\n\tSYS_EPOLL_CTL                    = 251\n\tSYS_EPOLL_WAIT                   = 252\n\tSYS_REMAP_FILE_PAGES             = 253\n\tSYS_SET_TID_ADDRESS              = 256\n\tSYS_TIMER_CREATE                 = 257\n\tSYS_TIMER_SETTIME                = 258\n\tSYS_TIMER_GETTIME                = 259\n\tSYS_TIMER_GETOVERRUN             = 260\n\tSYS_TIMER_DELETE                 = 261\n\tSYS_CLOCK_SETTIME                = 262\n\tSYS_CLOCK_GETTIME                = 263\n\tSYS_CLOCK_GETRES                 = 264\n\tSYS_CLOCK_NANOSLEEP              = 265\n\tSYS_STATFS64                     = 266\n\tSYS_FSTATFS64                    = 267\n\tSYS_TGKILL                       = 268\n\tSYS_UTIMES                       = 269\n\tSYS_ARM_FADVISE64_64             = 270\n\tSYS_PCICONFIG_IOBASE             = 271\n\tSYS_PCICONFIG_READ               = 272\n\tSYS_PCICONFIG_WRITE              = 273\n\tSYS_MQ_OPEN                      = 274\n\tSYS_MQ_UNLINK                    = 275\n\tSYS_MQ_TIMEDSEND                 = 276\n\tSYS_MQ_TIMEDRECEIVE              = 277\n\tSYS_MQ_NOTIFY                    = 278\n\tSYS_MQ_GETSETATTR                = 279\n\tSYS_WAITID                       = 280\n\tSYS_SOCKET                       = 281\n\tSYS_BIND                         = 282\n\tSYS_CONNECT                      = 283\n\tSYS_LISTEN                       = 284\n\tSYS_ACCEPT                       = 285\n\tSYS_GETSOCKNAME                  = 286\n\tSYS_GETPEERNAME                  = 287\n\tSYS_SOCKETPAIR                   = 288\n\tSYS_SEND                         = 289\n\tSYS_SENDTO                       = 290\n\tSYS_RECV                         = 291\n\tSYS_RECVFROM                     = 292\n\tSYS_SHUTDOWN                     = 293\n\tSYS_SETSOCKOPT                   = 294\n\tSYS_GETSOCKOPT                   = 295\n\tSYS_SENDMSG                      = 296\n\tSYS_RECVMSG                      = 297\n\tSYS_SEMOP                        = 298\n\tSYS_SEMGET                       = 299\n\tSYS_SEMCTL                       = 300\n\tSYS_MSGSND                       = 301\n\tSYS_MSGRCV                       = 302\n\tSYS_MSGGET                       = 303\n\tSYS_MSGCTL                       = 304\n\tSYS_SHMAT                        = 305\n\tSYS_SHMDT                        = 306\n\tSYS_SHMGET                       = 307\n\tSYS_SHMCTL                       = 308\n\tSYS_ADD_KEY                      = 309\n\tSYS_REQUEST_KEY                  = 310\n\tSYS_KEYCTL                       = 311\n\tSYS_SEMTIMEDOP                   = 312\n\tSYS_VSERVER                      = 313\n\tSYS_IOPRIO_SET                   = 314\n\tSYS_IOPRIO_GET                   = 315\n\tSYS_INOTIFY_INIT                 = 316\n\tSYS_INOTIFY_ADD_WATCH            = 317\n\tSYS_INOTIFY_RM_WATCH             = 318\n\tSYS_MBIND                        = 319\n\tSYS_GET_MEMPOLICY                = 320\n\tSYS_SET_MEMPOLICY                = 321\n\tSYS_OPENAT                       = 322\n\tSYS_MKDIRAT                      = 323\n\tSYS_MKNODAT                      = 324\n\tSYS_FCHOWNAT                     = 325\n\tSYS_FUTIMESAT                    = 326\n\tSYS_FSTATAT64                    = 327\n\tSYS_UNLINKAT                     = 328\n\tSYS_RENAMEAT                     = 329\n\tSYS_LINKAT                       = 330\n\tSYS_SYMLINKAT                    = 331\n\tSYS_READLINKAT                   = 332\n\tSYS_FCHMODAT                     = 333\n\tSYS_FACCESSAT                    = 334\n\tSYS_PSELECT6                     = 335\n\tSYS_PPOLL                        = 336\n\tSYS_UNSHARE                      = 337\n\tSYS_SET_ROBUST_LIST              = 338\n\tSYS_GET_ROBUST_LIST              = 339\n\tSYS_SPLICE                       = 340\n\tSYS_ARM_SYNC_FILE_RANGE          = 341\n\tSYS_TEE                          = 342\n\tSYS_VMSPLICE                     = 343\n\tSYS_MOVE_PAGES                   = 344\n\tSYS_GETCPU                       = 345\n\tSYS_EPOLL_PWAIT                  = 346\n\tSYS_KEXEC_LOAD                   = 347\n\tSYS_UTIMENSAT                    = 348\n\tSYS_SIGNALFD                     = 349\n\tSYS_TIMERFD_CREATE               = 350\n\tSYS_EVENTFD                      = 351\n\tSYS_FALLOCATE                    = 352\n\tSYS_TIMERFD_SETTIME              = 353\n\tSYS_TIMERFD_GETTIME              = 354\n\tSYS_SIGNALFD4                    = 355\n\tSYS_EVENTFD2                     = 356\n\tSYS_EPOLL_CREATE1                = 357\n\tSYS_DUP3                         = 358\n\tSYS_PIPE2                        = 359\n\tSYS_INOTIFY_INIT1                = 360\n\tSYS_PREADV                       = 361\n\tSYS_PWRITEV                      = 362\n\tSYS_RT_TGSIGQUEUEINFO            = 363\n\tSYS_PERF_EVENT_OPEN              = 364\n\tSYS_RECVMMSG                     = 365\n\tSYS_ACCEPT4                      = 366\n\tSYS_FANOTIFY_INIT                = 367\n\tSYS_FANOTIFY_MARK                = 368\n\tSYS_PRLIMIT64                    = 369\n\tSYS_NAME_TO_HANDLE_AT            = 370\n\tSYS_OPEN_BY_HANDLE_AT            = 371\n\tSYS_CLOCK_ADJTIME                = 372\n\tSYS_SYNCFS                       = 373\n\tSYS_SENDMMSG                     = 374\n\tSYS_SETNS                        = 375\n\tSYS_PROCESS_VM_READV             = 376\n\tSYS_PROCESS_VM_WRITEV            = 377\n\tSYS_KCMP                         = 378\n\tSYS_FINIT_MODULE                 = 379\n\tSYS_SCHED_SETATTR                = 380\n\tSYS_SCHED_GETATTR                = 381\n\tSYS_RENAMEAT2                    = 382\n\tSYS_SECCOMP                      = 383\n\tSYS_GETRANDOM                    = 384\n\tSYS_MEMFD_CREATE                 = 385\n\tSYS_BPF                          = 386\n\tSYS_EXECVEAT                     = 387\n\tSYS_USERFAULTFD                  = 388\n\tSYS_MEMBARRIER                   = 389\n\tSYS_MLOCK2                       = 390\n\tSYS_COPY_FILE_RANGE              = 391\n\tSYS_PREADV2                      = 392\n\tSYS_PWRITEV2                     = 393\n\tSYS_PKEY_MPROTECT                = 394\n\tSYS_PKEY_ALLOC                   = 395\n\tSYS_PKEY_FREE                    = 396\n\tSYS_STATX                        = 397\n\tSYS_RSEQ                         = 398\n\tSYS_IO_PGETEVENTS                = 399\n\tSYS_MIGRATE_PAGES                = 400\n\tSYS_KEXEC_FILE_LOAD              = 401\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_arm64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/arm64/include -fsigned-char /tmp/arm64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_RENAMEAT                = 38\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_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_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_loong64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/loong64/include /tmp/loong64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_SYNC                    = 81\n\tSYS_FSYNC                   = 82\n\tSYS_FDATASYNC               = 83\n\tSYS_SYNC_FILE_RANGE         = 84\n\tSYS_TIMERFD_CREATE          = 85\n\tSYS_TIMERFD_SETTIME         = 86\n\tSYS_TIMERFD_GETTIME         = 87\n\tSYS_UTIMENSAT               = 88\n\tSYS_ACCT                    = 89\n\tSYS_CAPGET                  = 90\n\tSYS_CAPSET                  = 91\n\tSYS_PERSONALITY             = 92\n\tSYS_EXIT                    = 93\n\tSYS_EXIT_GROUP              = 94\n\tSYS_WAITID                  = 95\n\tSYS_SET_TID_ADDRESS         = 96\n\tSYS_UNSHARE                 = 97\n\tSYS_FUTEX                   = 98\n\tSYS_SET_ROBUST_LIST         = 99\n\tSYS_GET_ROBUST_LIST         = 100\n\tSYS_NANOSLEEP               = 101\n\tSYS_GETITIMER               = 102\n\tSYS_SETITIMER               = 103\n\tSYS_KEXEC_LOAD              = 104\n\tSYS_INIT_MODULE             = 105\n\tSYS_DELETE_MODULE           = 106\n\tSYS_TIMER_CREATE            = 107\n\tSYS_TIMER_GETTIME           = 108\n\tSYS_TIMER_GETOVERRUN        = 109\n\tSYS_TIMER_SETTIME           = 110\n\tSYS_TIMER_DELETE            = 111\n\tSYS_CLOCK_SETTIME           = 112\n\tSYS_CLOCK_GETTIME           = 113\n\tSYS_CLOCK_GETRES            = 114\n\tSYS_CLOCK_NANOSLEEP         = 115\n\tSYS_SYSLOG                  = 116\n\tSYS_PTRACE                  = 117\n\tSYS_SCHED_SETPARAM          = 118\n\tSYS_SCHED_SETSCHEDULER      = 119\n\tSYS_SCHED_GETSCHEDULER      = 120\n\tSYS_SCHED_GETPARAM          = 121\n\tSYS_SCHED_SETAFFINITY       = 122\n\tSYS_SCHED_GETAFFINITY       = 123\n\tSYS_SCHED_YIELD             = 124\n\tSYS_SCHED_GET_PRIORITY_MAX  = 125\n\tSYS_SCHED_GET_PRIORITY_MIN  = 126\n\tSYS_SCHED_RR_GET_INTERVAL   = 127\n\tSYS_RESTART_SYSCALL         = 128\n\tSYS_KILL                    = 129\n\tSYS_TKILL                   = 130\n\tSYS_TGKILL                  = 131\n\tSYS_SIGALTSTACK             = 132\n\tSYS_RT_SIGSUSPEND           = 133\n\tSYS_RT_SIGACTION            = 134\n\tSYS_RT_SIGPROCMASK          = 135\n\tSYS_RT_SIGPENDING           = 136\n\tSYS_RT_SIGTIMEDWAIT         = 137\n\tSYS_RT_SIGQUEUEINFO         = 138\n\tSYS_RT_SIGRETURN            = 139\n\tSYS_SETPRIORITY             = 140\n\tSYS_GETPRIORITY             = 141\n\tSYS_REBOOT                  = 142\n\tSYS_SETREGID                = 143\n\tSYS_SETGID                  = 144\n\tSYS_SETREUID                = 145\n\tSYS_SETUID                  = 146\n\tSYS_SETRESUID               = 147\n\tSYS_GETRESUID               = 148\n\tSYS_SETRESGID               = 149\n\tSYS_GETRESGID               = 150\n\tSYS_SETFSUID                = 151\n\tSYS_SETFSGID                = 152\n\tSYS_TIMES                   = 153\n\tSYS_SETPGID                 = 154\n\tSYS_GETPGID                 = 155\n\tSYS_GETSID                  = 156\n\tSYS_SETSID                  = 157\n\tSYS_GETGROUPS               = 158\n\tSYS_SETGROUPS               = 159\n\tSYS_UNAME                   = 160\n\tSYS_SETHOSTNAME             = 161\n\tSYS_SETDOMAINNAME           = 162\n\tSYS_GETRUSAGE               = 165\n\tSYS_UMASK                   = 166\n\tSYS_PRCTL                   = 167\n\tSYS_GETCPU                  = 168\n\tSYS_GETTIMEOFDAY            = 169\n\tSYS_SETTIMEOFDAY            = 170\n\tSYS_ADJTIMEX                = 171\n\tSYS_GETPID                  = 172\n\tSYS_GETPPID                 = 173\n\tSYS_GETUID                  = 174\n\tSYS_GETEUID                 = 175\n\tSYS_GETGID                  = 176\n\tSYS_GETEGID                 = 177\n\tSYS_GETTID                  = 178\n\tSYS_SYSINFO                 = 179\n\tSYS_MQ_OPEN                 = 180\n\tSYS_MQ_UNLINK               = 181\n\tSYS_MQ_TIMEDSEND            = 182\n\tSYS_MQ_TIMEDRECEIVE         = 183\n\tSYS_MQ_NOTIFY               = 184\n\tSYS_MQ_GETSETATTR           = 185\n\tSYS_MSGGET                  = 186\n\tSYS_MSGCTL                  = 187\n\tSYS_MSGRCV                  = 188\n\tSYS_MSGSND                  = 189\n\tSYS_SEMGET                  = 190\n\tSYS_SEMCTL                  = 191\n\tSYS_SEMTIMEDOP              = 192\n\tSYS_SEMOP                   = 193\n\tSYS_SHMGET                  = 194\n\tSYS_SHMCTL                  = 195\n\tSYS_SHMAT                   = 196\n\tSYS_SHMDT                   = 197\n\tSYS_SOCKET                  = 198\n\tSYS_SOCKETPAIR              = 199\n\tSYS_BIND                    = 200\n\tSYS_LISTEN                  = 201\n\tSYS_ACCEPT                  = 202\n\tSYS_CONNECT                 = 203\n\tSYS_GETSOCKNAME             = 204\n\tSYS_GETPEERNAME             = 205\n\tSYS_SENDTO                  = 206\n\tSYS_RECVFROM                = 207\n\tSYS_SETSOCKOPT              = 208\n\tSYS_GETSOCKOPT              = 209\n\tSYS_SHUTDOWN                = 210\n\tSYS_SENDMSG                 = 211\n\tSYS_RECVMSG                 = 212\n\tSYS_READAHEAD               = 213\n\tSYS_BRK                     = 214\n\tSYS_MUNMAP                  = 215\n\tSYS_MREMAP                  = 216\n\tSYS_ADD_KEY                 = 217\n\tSYS_REQUEST_KEY             = 218\n\tSYS_KEYCTL                  = 219\n\tSYS_CLONE                   = 220\n\tSYS_EXECVE                  = 221\n\tSYS_MMAP                    = 222\n\tSYS_FADVISE64               = 223\n\tSYS_SWAPON                  = 224\n\tSYS_SWAPOFF                 = 225\n\tSYS_MPROTECT                = 226\n\tSYS_MSYNC                   = 227\n\tSYS_MLOCK                   = 228\n\tSYS_MUNLOCK                 = 229\n\tSYS_MLOCKALL                = 230\n\tSYS_MUNLOCKALL              = 231\n\tSYS_MINCORE                 = 232\n\tSYS_MADVISE                 = 233\n\tSYS_REMAP_FILE_PAGES        = 234\n\tSYS_MBIND                   = 235\n\tSYS_GET_MEMPOLICY           = 236\n\tSYS_SET_MEMPOLICY           = 237\n\tSYS_MIGRATE_PAGES           = 238\n\tSYS_MOVE_PAGES              = 239\n\tSYS_RT_TGSIGQUEUEINFO       = 240\n\tSYS_PERF_EVENT_OPEN         = 241\n\tSYS_ACCEPT4                 = 242\n\tSYS_RECVMMSG                = 243\n\tSYS_ARCH_SPECIFIC_SYSCALL   = 244\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_mips.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips/include /tmp/mips/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_mips64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64/include /tmp/mips64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_mips64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mips64le/include /tmp/mips64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSYS_READ                    = 5000\n\tSYS_WRITE                   = 5001\n\tSYS_OPEN                    = 5002\n\tSYS_CLOSE                   = 5003\n\tSYS_STAT                    = 5004\n\tSYS_FSTAT                   = 5005\n\tSYS_LSTAT                   = 5006\n\tSYS_POLL                    = 5007\n\tSYS_LSEEK                   = 5008\n\tSYS_MMAP                    = 5009\n\tSYS_MPROTECT                = 5010\n\tSYS_MUNMAP                  = 5011\n\tSYS_BRK                     = 5012\n\tSYS_RT_SIGACTION            = 5013\n\tSYS_RT_SIGPROCMASK          = 5014\n\tSYS_IOCTL                   = 5015\n\tSYS_PREAD64                 = 5016\n\tSYS_PWRITE64                = 5017\n\tSYS_READV                   = 5018\n\tSYS_WRITEV                  = 5019\n\tSYS_ACCESS                  = 5020\n\tSYS_PIPE                    = 5021\n\tSYS__NEWSELECT              = 5022\n\tSYS_SCHED_YIELD             = 5023\n\tSYS_MREMAP                  = 5024\n\tSYS_MSYNC                   = 5025\n\tSYS_MINCORE                 = 5026\n\tSYS_MADVISE                 = 5027\n\tSYS_SHMGET                  = 5028\n\tSYS_SHMAT                   = 5029\n\tSYS_SHMCTL                  = 5030\n\tSYS_DUP                     = 5031\n\tSYS_DUP2                    = 5032\n\tSYS_PAUSE                   = 5033\n\tSYS_NANOSLEEP               = 5034\n\tSYS_GETITIMER               = 5035\n\tSYS_SETITIMER               = 5036\n\tSYS_ALARM                   = 5037\n\tSYS_GETPID                  = 5038\n\tSYS_SENDFILE                = 5039\n\tSYS_SOCKET                  = 5040\n\tSYS_CONNECT                 = 5041\n\tSYS_ACCEPT                  = 5042\n\tSYS_SENDTO                  = 5043\n\tSYS_RECVFROM                = 5044\n\tSYS_SENDMSG                 = 5045\n\tSYS_RECVMSG                 = 5046\n\tSYS_SHUTDOWN                = 5047\n\tSYS_BIND                    = 5048\n\tSYS_LISTEN                  = 5049\n\tSYS_GETSOCKNAME             = 5050\n\tSYS_GETPEERNAME             = 5051\n\tSYS_SOCKETPAIR              = 5052\n\tSYS_SETSOCKOPT              = 5053\n\tSYS_GETSOCKOPT              = 5054\n\tSYS_CLONE                   = 5055\n\tSYS_FORK                    = 5056\n\tSYS_EXECVE                  = 5057\n\tSYS_EXIT                    = 5058\n\tSYS_WAIT4                   = 5059\n\tSYS_KILL                    = 5060\n\tSYS_UNAME                   = 5061\n\tSYS_SEMGET                  = 5062\n\tSYS_SEMOP                   = 5063\n\tSYS_SEMCTL                  = 5064\n\tSYS_SHMDT                   = 5065\n\tSYS_MSGGET                  = 5066\n\tSYS_MSGSND                  = 5067\n\tSYS_MSGRCV                  = 5068\n\tSYS_MSGCTL                  = 5069\n\tSYS_FCNTL                   = 5070\n\tSYS_FLOCK                   = 5071\n\tSYS_FSYNC                   = 5072\n\tSYS_FDATASYNC               = 5073\n\tSYS_TRUNCATE                = 5074\n\tSYS_FTRUNCATE               = 5075\n\tSYS_GETDENTS                = 5076\n\tSYS_GETCWD                  = 5077\n\tSYS_CHDIR                   = 5078\n\tSYS_FCHDIR                  = 5079\n\tSYS_RENAME                  = 5080\n\tSYS_MKDIR                   = 5081\n\tSYS_RMDIR                   = 5082\n\tSYS_CREAT                   = 5083\n\tSYS_LINK                    = 5084\n\tSYS_UNLINK                  = 5085\n\tSYS_SYMLINK                 = 5086\n\tSYS_READLINK                = 5087\n\tSYS_CHMOD                   = 5088\n\tSYS_FCHMOD                  = 5089\n\tSYS_CHOWN                   = 5090\n\tSYS_FCHOWN                  = 5091\n\tSYS_LCHOWN                  = 5092\n\tSYS_UMASK                   = 5093\n\tSYS_GETTIMEOFDAY            = 5094\n\tSYS_GETRLIMIT               = 5095\n\tSYS_GETRUSAGE               = 5096\n\tSYS_SYSINFO                 = 5097\n\tSYS_TIMES                   = 5098\n\tSYS_PTRACE                  = 5099\n\tSYS_GETUID                  = 5100\n\tSYS_SYSLOG                  = 5101\n\tSYS_GETGID                  = 5102\n\tSYS_SETUID                  = 5103\n\tSYS_SETGID                  = 5104\n\tSYS_GETEUID                 = 5105\n\tSYS_GETEGID                 = 5106\n\tSYS_SETPGID                 = 5107\n\tSYS_GETPPID                 = 5108\n\tSYS_GETPGRP                 = 5109\n\tSYS_SETSID                  = 5110\n\tSYS_SETREUID                = 5111\n\tSYS_SETREGID                = 5112\n\tSYS_GETGROUPS               = 5113\n\tSYS_SETGROUPS               = 5114\n\tSYS_SETRESUID               = 5115\n\tSYS_GETRESUID               = 5116\n\tSYS_SETRESGID               = 5117\n\tSYS_GETRESGID               = 5118\n\tSYS_GETPGID                 = 5119\n\tSYS_SETFSUID                = 5120\n\tSYS_SETFSGID                = 5121\n\tSYS_GETSID                  = 5122\n\tSYS_CAPGET                  = 5123\n\tSYS_CAPSET                  = 5124\n\tSYS_RT_SIGPENDING           = 5125\n\tSYS_RT_SIGTIMEDWAIT         = 5126\n\tSYS_RT_SIGQUEUEINFO         = 5127\n\tSYS_RT_SIGSUSPEND           = 5128\n\tSYS_SIGALTSTACK             = 5129\n\tSYS_UTIME                   = 5130\n\tSYS_MKNOD                   = 5131\n\tSYS_PERSONALITY             = 5132\n\tSYS_USTAT                   = 5133\n\tSYS_STATFS                  = 5134\n\tSYS_FSTATFS                 = 5135\n\tSYS_SYSFS                   = 5136\n\tSYS_GETPRIORITY             = 5137\n\tSYS_SETPRIORITY             = 5138\n\tSYS_SCHED_SETPARAM          = 5139\n\tSYS_SCHED_GETPARAM          = 5140\n\tSYS_SCHED_SETSCHEDULER      = 5141\n\tSYS_SCHED_GETSCHEDULER      = 5142\n\tSYS_SCHED_GET_PRIORITY_MAX  = 5143\n\tSYS_SCHED_GET_PRIORITY_MIN  = 5144\n\tSYS_SCHED_RR_GET_INTERVAL   = 5145\n\tSYS_MLOCK                   = 5146\n\tSYS_MUNLOCK                 = 5147\n\tSYS_MLOCKALL                = 5148\n\tSYS_MUNLOCKALL              = 5149\n\tSYS_VHANGUP                 = 5150\n\tSYS_PIVOT_ROOT              = 5151\n\tSYS__SYSCTL                 = 5152\n\tSYS_PRCTL                   = 5153\n\tSYS_ADJTIMEX                = 5154\n\tSYS_SETRLIMIT               = 5155\n\tSYS_CHROOT                  = 5156\n\tSYS_SYNC                    = 5157\n\tSYS_ACCT                    = 5158\n\tSYS_SETTIMEOFDAY            = 5159\n\tSYS_MOUNT                   = 5160\n\tSYS_UMOUNT2                 = 5161\n\tSYS_SWAPON                  = 5162\n\tSYS_SWAPOFF                 = 5163\n\tSYS_REBOOT                  = 5164\n\tSYS_SETHOSTNAME             = 5165\n\tSYS_SETDOMAINNAME           = 5166\n\tSYS_CREATE_MODULE           = 5167\n\tSYS_INIT_MODULE             = 5168\n\tSYS_DELETE_MODULE           = 5169\n\tSYS_GET_KERNEL_SYMS         = 5170\n\tSYS_QUERY_MODULE            = 5171\n\tSYS_QUOTACTL                = 5172\n\tSYS_NFSSERVCTL              = 5173\n\tSYS_GETPMSG                 = 5174\n\tSYS_PUTPMSG                 = 5175\n\tSYS_AFS_SYSCALL             = 5176\n\tSYS_RESERVED177             = 5177\n\tSYS_GETTID                  = 5178\n\tSYS_READAHEAD               = 5179\n\tSYS_SETXATTR                = 5180\n\tSYS_LSETXATTR               = 5181\n\tSYS_FSETXATTR               = 5182\n\tSYS_GETXATTR                = 5183\n\tSYS_LGETXATTR               = 5184\n\tSYS_FGETXATTR               = 5185\n\tSYS_LISTXATTR               = 5186\n\tSYS_LLISTXATTR              = 5187\n\tSYS_FLISTXATTR              = 5188\n\tSYS_REMOVEXATTR             = 5189\n\tSYS_LREMOVEXATTR            = 5190\n\tSYS_FREMOVEXATTR            = 5191\n\tSYS_TKILL                   = 5192\n\tSYS_RESERVED193             = 5193\n\tSYS_FUTEX                   = 5194\n\tSYS_SCHED_SETAFFINITY       = 5195\n\tSYS_SCHED_GETAFFINITY       = 5196\n\tSYS_CACHEFLUSH              = 5197\n\tSYS_CACHECTL                = 5198\n\tSYS_SYSMIPS                 = 5199\n\tSYS_IO_SETUP                = 5200\n\tSYS_IO_DESTROY              = 5201\n\tSYS_IO_GETEVENTS            = 5202\n\tSYS_IO_SUBMIT               = 5203\n\tSYS_IO_CANCEL               = 5204\n\tSYS_EXIT_GROUP              = 5205\n\tSYS_LOOKUP_DCOOKIE          = 5206\n\tSYS_EPOLL_CREATE            = 5207\n\tSYS_EPOLL_CTL               = 5208\n\tSYS_EPOLL_WAIT              = 5209\n\tSYS_REMAP_FILE_PAGES        = 5210\n\tSYS_RT_SIGRETURN            = 5211\n\tSYS_SET_TID_ADDRESS         = 5212\n\tSYS_RESTART_SYSCALL         = 5213\n\tSYS_SEMTIMEDOP              = 5214\n\tSYS_FADVISE64               = 5215\n\tSYS_TIMER_CREATE            = 5216\n\tSYS_TIMER_SETTIME           = 5217\n\tSYS_TIMER_GETTIME           = 5218\n\tSYS_TIMER_GETOVERRUN        = 5219\n\tSYS_TIMER_DELETE            = 5220\n\tSYS_CLOCK_SETTIME           = 5221\n\tSYS_CLOCK_GETTIME           = 5222\n\tSYS_CLOCK_GETRES            = 5223\n\tSYS_CLOCK_NANOSLEEP         = 5224\n\tSYS_TGKILL                  = 5225\n\tSYS_UTIMES                  = 5226\n\tSYS_MBIND                   = 5227\n\tSYS_GET_MEMPOLICY           = 5228\n\tSYS_SET_MEMPOLICY           = 5229\n\tSYS_MQ_OPEN                 = 5230\n\tSYS_MQ_UNLINK               = 5231\n\tSYS_MQ_TIMEDSEND            = 5232\n\tSYS_MQ_TIMEDRECEIVE         = 5233\n\tSYS_MQ_NOTIFY               = 5234\n\tSYS_MQ_GETSETATTR           = 5235\n\tSYS_VSERVER                 = 5236\n\tSYS_WAITID                  = 5237\n\tSYS_ADD_KEY                 = 5239\n\tSYS_REQUEST_KEY             = 5240\n\tSYS_KEYCTL                  = 5241\n\tSYS_SET_THREAD_AREA         = 5242\n\tSYS_INOTIFY_INIT            = 5243\n\tSYS_INOTIFY_ADD_WATCH       = 5244\n\tSYS_INOTIFY_RM_WATCH        = 5245\n\tSYS_MIGRATE_PAGES           = 5246\n\tSYS_OPENAT                  = 5247\n\tSYS_MKDIRAT                 = 5248\n\tSYS_MKNODAT                 = 5249\n\tSYS_FCHOWNAT                = 5250\n\tSYS_FUTIMESAT               = 5251\n\tSYS_NEWFSTATAT              = 5252\n\tSYS_UNLINKAT                = 5253\n\tSYS_RENAMEAT                = 5254\n\tSYS_LINKAT                  = 5255\n\tSYS_SYMLINKAT               = 5256\n\tSYS_READLINKAT              = 5257\n\tSYS_FCHMODAT                = 5258\n\tSYS_FACCESSAT               = 5259\n\tSYS_PSELECT6                = 5260\n\tSYS_PPOLL                   = 5261\n\tSYS_UNSHARE                 = 5262\n\tSYS_SPLICE                  = 5263\n\tSYS_SYNC_FILE_RANGE         = 5264\n\tSYS_TEE                     = 5265\n\tSYS_VMSPLICE                = 5266\n\tSYS_MOVE_PAGES              = 5267\n\tSYS_SET_ROBUST_LIST         = 5268\n\tSYS_GET_ROBUST_LIST         = 5269\n\tSYS_KEXEC_LOAD              = 5270\n\tSYS_GETCPU                  = 5271\n\tSYS_EPOLL_PWAIT             = 5272\n\tSYS_IOPRIO_SET              = 5273\n\tSYS_IOPRIO_GET              = 5274\n\tSYS_UTIMENSAT               = 5275\n\tSYS_SIGNALFD                = 5276\n\tSYS_TIMERFD                 = 5277\n\tSYS_EVENTFD                 = 5278\n\tSYS_FALLOCATE               = 5279\n\tSYS_TIMERFD_CREATE          = 5280\n\tSYS_TIMERFD_GETTIME         = 5281\n\tSYS_TIMERFD_SETTIME         = 5282\n\tSYS_SIGNALFD4               = 5283\n\tSYS_EVENTFD2                = 5284\n\tSYS_EPOLL_CREATE1           = 5285\n\tSYS_DUP3                    = 5286\n\tSYS_PIPE2                   = 5287\n\tSYS_INOTIFY_INIT1           = 5288\n\tSYS_PREADV                  = 5289\n\tSYS_PWRITEV                 = 5290\n\tSYS_RT_TGSIGQUEUEINFO       = 5291\n\tSYS_PERF_EVENT_OPEN         = 5292\n\tSYS_ACCEPT4                 = 5293\n\tSYS_RECVMMSG                = 5294\n\tSYS_FANOTIFY_INIT           = 5295\n\tSYS_FANOTIFY_MARK           = 5296\n\tSYS_PRLIMIT64               = 5297\n\tSYS_NAME_TO_HANDLE_AT       = 5298\n\tSYS_OPEN_BY_HANDLE_AT       = 5299\n\tSYS_CLOCK_ADJTIME           = 5300\n\tSYS_SYNCFS                  = 5301\n\tSYS_SENDMMSG                = 5302\n\tSYS_SETNS                   = 5303\n\tSYS_PROCESS_VM_READV        = 5304\n\tSYS_PROCESS_VM_WRITEV       = 5305\n\tSYS_KCMP                    = 5306\n\tSYS_FINIT_MODULE            = 5307\n\tSYS_GETDENTS64              = 5308\n\tSYS_SCHED_SETATTR           = 5309\n\tSYS_SCHED_GETATTR           = 5310\n\tSYS_RENAMEAT2               = 5311\n\tSYS_SECCOMP                 = 5312\n\tSYS_GETRANDOM               = 5313\n\tSYS_MEMFD_CREATE            = 5314\n\tSYS_BPF                     = 5315\n\tSYS_EXECVEAT                = 5316\n\tSYS_USERFAULTFD             = 5317\n\tSYS_MEMBARRIER              = 5318\n\tSYS_MLOCK2                  = 5319\n\tSYS_COPY_FILE_RANGE         = 5320\n\tSYS_PREADV2                 = 5321\n\tSYS_PWRITEV2                = 5322\n\tSYS_PKEY_MPROTECT           = 5323\n\tSYS_PKEY_ALLOC              = 5324\n\tSYS_PKEY_FREE               = 5325\n\tSYS_STATX                   = 5326\n\tSYS_RSEQ                    = 5327\n\tSYS_IO_PGETEVENTS           = 5328\n\tSYS_PIDFD_SEND_SIGNAL       = 5424\n\tSYS_IO_URING_SETUP          = 5425\n\tSYS_IO_URING_ENTER          = 5426\n\tSYS_IO_URING_REGISTER       = 5427\n\tSYS_OPEN_TREE               = 5428\n\tSYS_MOVE_MOUNT              = 5429\n\tSYS_FSOPEN                  = 5430\n\tSYS_FSCONFIG                = 5431\n\tSYS_FSMOUNT                 = 5432\n\tSYS_FSPICK                  = 5433\n\tSYS_PIDFD_OPEN              = 5434\n\tSYS_CLONE3                  = 5435\n\tSYS_CLOSE_RANGE             = 5436\n\tSYS_OPENAT2                 = 5437\n\tSYS_PIDFD_GETFD             = 5438\n\tSYS_FACCESSAT2              = 5439\n\tSYS_PROCESS_MADVISE         = 5440\n\tSYS_EPOLL_PWAIT2            = 5441\n\tSYS_MOUNT_SETATTR           = 5442\n\tSYS_QUOTACTL_FD             = 5443\n\tSYS_LANDLOCK_CREATE_RULESET = 5444\n\tSYS_LANDLOCK_ADD_RULE       = 5445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 5446\n\tSYS_PROCESS_MRELEASE        = 5448\n\tSYS_FUTEX_WAITV             = 5449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 5450\n\tSYS_CACHESTAT               = 5451\n\tSYS_FCHMODAT2               = 5452\n\tSYS_MAP_SHADOW_STACK        = 5453\n\tSYS_FUTEX_WAKE              = 5454\n\tSYS_FUTEX_WAIT              = 5455\n\tSYS_FUTEX_REQUEUE           = 5456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_mipsle.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/mipsle/include /tmp/mipsle/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSYS_SYSCALL                      = 4000\n\tSYS_EXIT                         = 4001\n\tSYS_FORK                         = 4002\n\tSYS_READ                         = 4003\n\tSYS_WRITE                        = 4004\n\tSYS_OPEN                         = 4005\n\tSYS_CLOSE                        = 4006\n\tSYS_WAITPID                      = 4007\n\tSYS_CREAT                        = 4008\n\tSYS_LINK                         = 4009\n\tSYS_UNLINK                       = 4010\n\tSYS_EXECVE                       = 4011\n\tSYS_CHDIR                        = 4012\n\tSYS_TIME                         = 4013\n\tSYS_MKNOD                        = 4014\n\tSYS_CHMOD                        = 4015\n\tSYS_LCHOWN                       = 4016\n\tSYS_BREAK                        = 4017\n\tSYS_UNUSED18                     = 4018\n\tSYS_LSEEK                        = 4019\n\tSYS_GETPID                       = 4020\n\tSYS_MOUNT                        = 4021\n\tSYS_UMOUNT                       = 4022\n\tSYS_SETUID                       = 4023\n\tSYS_GETUID                       = 4024\n\tSYS_STIME                        = 4025\n\tSYS_PTRACE                       = 4026\n\tSYS_ALARM                        = 4027\n\tSYS_UNUSED28                     = 4028\n\tSYS_PAUSE                        = 4029\n\tSYS_UTIME                        = 4030\n\tSYS_STTY                         = 4031\n\tSYS_GTTY                         = 4032\n\tSYS_ACCESS                       = 4033\n\tSYS_NICE                         = 4034\n\tSYS_FTIME                        = 4035\n\tSYS_SYNC                         = 4036\n\tSYS_KILL                         = 4037\n\tSYS_RENAME                       = 4038\n\tSYS_MKDIR                        = 4039\n\tSYS_RMDIR                        = 4040\n\tSYS_DUP                          = 4041\n\tSYS_PIPE                         = 4042\n\tSYS_TIMES                        = 4043\n\tSYS_PROF                         = 4044\n\tSYS_BRK                          = 4045\n\tSYS_SETGID                       = 4046\n\tSYS_GETGID                       = 4047\n\tSYS_SIGNAL                       = 4048\n\tSYS_GETEUID                      = 4049\n\tSYS_GETEGID                      = 4050\n\tSYS_ACCT                         = 4051\n\tSYS_UMOUNT2                      = 4052\n\tSYS_LOCK                         = 4053\n\tSYS_IOCTL                        = 4054\n\tSYS_FCNTL                        = 4055\n\tSYS_MPX                          = 4056\n\tSYS_SETPGID                      = 4057\n\tSYS_ULIMIT                       = 4058\n\tSYS_UNUSED59                     = 4059\n\tSYS_UMASK                        = 4060\n\tSYS_CHROOT                       = 4061\n\tSYS_USTAT                        = 4062\n\tSYS_DUP2                         = 4063\n\tSYS_GETPPID                      = 4064\n\tSYS_GETPGRP                      = 4065\n\tSYS_SETSID                       = 4066\n\tSYS_SIGACTION                    = 4067\n\tSYS_SGETMASK                     = 4068\n\tSYS_SSETMASK                     = 4069\n\tSYS_SETREUID                     = 4070\n\tSYS_SETREGID                     = 4071\n\tSYS_SIGSUSPEND                   = 4072\n\tSYS_SIGPENDING                   = 4073\n\tSYS_SETHOSTNAME                  = 4074\n\tSYS_SETRLIMIT                    = 4075\n\tSYS_GETRLIMIT                    = 4076\n\tSYS_GETRUSAGE                    = 4077\n\tSYS_GETTIMEOFDAY                 = 4078\n\tSYS_SETTIMEOFDAY                 = 4079\n\tSYS_GETGROUPS                    = 4080\n\tSYS_SETGROUPS                    = 4081\n\tSYS_RESERVED82                   = 4082\n\tSYS_SYMLINK                      = 4083\n\tSYS_UNUSED84                     = 4084\n\tSYS_READLINK                     = 4085\n\tSYS_USELIB                       = 4086\n\tSYS_SWAPON                       = 4087\n\tSYS_REBOOT                       = 4088\n\tSYS_READDIR                      = 4089\n\tSYS_MMAP                         = 4090\n\tSYS_MUNMAP                       = 4091\n\tSYS_TRUNCATE                     = 4092\n\tSYS_FTRUNCATE                    = 4093\n\tSYS_FCHMOD                       = 4094\n\tSYS_FCHOWN                       = 4095\n\tSYS_GETPRIORITY                  = 4096\n\tSYS_SETPRIORITY                  = 4097\n\tSYS_PROFIL                       = 4098\n\tSYS_STATFS                       = 4099\n\tSYS_FSTATFS                      = 4100\n\tSYS_IOPERM                       = 4101\n\tSYS_SOCKETCALL                   = 4102\n\tSYS_SYSLOG                       = 4103\n\tSYS_SETITIMER                    = 4104\n\tSYS_GETITIMER                    = 4105\n\tSYS_STAT                         = 4106\n\tSYS_LSTAT                        = 4107\n\tSYS_FSTAT                        = 4108\n\tSYS_UNUSED109                    = 4109\n\tSYS_IOPL                         = 4110\n\tSYS_VHANGUP                      = 4111\n\tSYS_IDLE                         = 4112\n\tSYS_VM86                         = 4113\n\tSYS_WAIT4                        = 4114\n\tSYS_SWAPOFF                      = 4115\n\tSYS_SYSINFO                      = 4116\n\tSYS_IPC                          = 4117\n\tSYS_FSYNC                        = 4118\n\tSYS_SIGRETURN                    = 4119\n\tSYS_CLONE                        = 4120\n\tSYS_SETDOMAINNAME                = 4121\n\tSYS_UNAME                        = 4122\n\tSYS_MODIFY_LDT                   = 4123\n\tSYS_ADJTIMEX                     = 4124\n\tSYS_MPROTECT                     = 4125\n\tSYS_SIGPROCMASK                  = 4126\n\tSYS_CREATE_MODULE                = 4127\n\tSYS_INIT_MODULE                  = 4128\n\tSYS_DELETE_MODULE                = 4129\n\tSYS_GET_KERNEL_SYMS              = 4130\n\tSYS_QUOTACTL                     = 4131\n\tSYS_GETPGID                      = 4132\n\tSYS_FCHDIR                       = 4133\n\tSYS_BDFLUSH                      = 4134\n\tSYS_SYSFS                        = 4135\n\tSYS_PERSONALITY                  = 4136\n\tSYS_AFS_SYSCALL                  = 4137\n\tSYS_SETFSUID                     = 4138\n\tSYS_SETFSGID                     = 4139\n\tSYS__LLSEEK                      = 4140\n\tSYS_GETDENTS                     = 4141\n\tSYS__NEWSELECT                   = 4142\n\tSYS_FLOCK                        = 4143\n\tSYS_MSYNC                        = 4144\n\tSYS_READV                        = 4145\n\tSYS_WRITEV                       = 4146\n\tSYS_CACHEFLUSH                   = 4147\n\tSYS_CACHECTL                     = 4148\n\tSYS_SYSMIPS                      = 4149\n\tSYS_UNUSED150                    = 4150\n\tSYS_GETSID                       = 4151\n\tSYS_FDATASYNC                    = 4152\n\tSYS__SYSCTL                      = 4153\n\tSYS_MLOCK                        = 4154\n\tSYS_MUNLOCK                      = 4155\n\tSYS_MLOCKALL                     = 4156\n\tSYS_MUNLOCKALL                   = 4157\n\tSYS_SCHED_SETPARAM               = 4158\n\tSYS_SCHED_GETPARAM               = 4159\n\tSYS_SCHED_SETSCHEDULER           = 4160\n\tSYS_SCHED_GETSCHEDULER           = 4161\n\tSYS_SCHED_YIELD                  = 4162\n\tSYS_SCHED_GET_PRIORITY_MAX       = 4163\n\tSYS_SCHED_GET_PRIORITY_MIN       = 4164\n\tSYS_SCHED_RR_GET_INTERVAL        = 4165\n\tSYS_NANOSLEEP                    = 4166\n\tSYS_MREMAP                       = 4167\n\tSYS_ACCEPT                       = 4168\n\tSYS_BIND                         = 4169\n\tSYS_CONNECT                      = 4170\n\tSYS_GETPEERNAME                  = 4171\n\tSYS_GETSOCKNAME                  = 4172\n\tSYS_GETSOCKOPT                   = 4173\n\tSYS_LISTEN                       = 4174\n\tSYS_RECV                         = 4175\n\tSYS_RECVFROM                     = 4176\n\tSYS_RECVMSG                      = 4177\n\tSYS_SEND                         = 4178\n\tSYS_SENDMSG                      = 4179\n\tSYS_SENDTO                       = 4180\n\tSYS_SETSOCKOPT                   = 4181\n\tSYS_SHUTDOWN                     = 4182\n\tSYS_SOCKET                       = 4183\n\tSYS_SOCKETPAIR                   = 4184\n\tSYS_SETRESUID                    = 4185\n\tSYS_GETRESUID                    = 4186\n\tSYS_QUERY_MODULE                 = 4187\n\tSYS_POLL                         = 4188\n\tSYS_NFSSERVCTL                   = 4189\n\tSYS_SETRESGID                    = 4190\n\tSYS_GETRESGID                    = 4191\n\tSYS_PRCTL                        = 4192\n\tSYS_RT_SIGRETURN                 = 4193\n\tSYS_RT_SIGACTION                 = 4194\n\tSYS_RT_SIGPROCMASK               = 4195\n\tSYS_RT_SIGPENDING                = 4196\n\tSYS_RT_SIGTIMEDWAIT              = 4197\n\tSYS_RT_SIGQUEUEINFO              = 4198\n\tSYS_RT_SIGSUSPEND                = 4199\n\tSYS_PREAD64                      = 4200\n\tSYS_PWRITE64                     = 4201\n\tSYS_CHOWN                        = 4202\n\tSYS_GETCWD                       = 4203\n\tSYS_CAPGET                       = 4204\n\tSYS_CAPSET                       = 4205\n\tSYS_SIGALTSTACK                  = 4206\n\tSYS_SENDFILE                     = 4207\n\tSYS_GETPMSG                      = 4208\n\tSYS_PUTPMSG                      = 4209\n\tSYS_MMAP2                        = 4210\n\tSYS_TRUNCATE64                   = 4211\n\tSYS_FTRUNCATE64                  = 4212\n\tSYS_STAT64                       = 4213\n\tSYS_LSTAT64                      = 4214\n\tSYS_FSTAT64                      = 4215\n\tSYS_PIVOT_ROOT                   = 4216\n\tSYS_MINCORE                      = 4217\n\tSYS_MADVISE                      = 4218\n\tSYS_GETDENTS64                   = 4219\n\tSYS_FCNTL64                      = 4220\n\tSYS_RESERVED221                  = 4221\n\tSYS_GETTID                       = 4222\n\tSYS_READAHEAD                    = 4223\n\tSYS_SETXATTR                     = 4224\n\tSYS_LSETXATTR                    = 4225\n\tSYS_FSETXATTR                    = 4226\n\tSYS_GETXATTR                     = 4227\n\tSYS_LGETXATTR                    = 4228\n\tSYS_FGETXATTR                    = 4229\n\tSYS_LISTXATTR                    = 4230\n\tSYS_LLISTXATTR                   = 4231\n\tSYS_FLISTXATTR                   = 4232\n\tSYS_REMOVEXATTR                  = 4233\n\tSYS_LREMOVEXATTR                 = 4234\n\tSYS_FREMOVEXATTR                 = 4235\n\tSYS_TKILL                        = 4236\n\tSYS_SENDFILE64                   = 4237\n\tSYS_FUTEX                        = 4238\n\tSYS_SCHED_SETAFFINITY            = 4239\n\tSYS_SCHED_GETAFFINITY            = 4240\n\tSYS_IO_SETUP                     = 4241\n\tSYS_IO_DESTROY                   = 4242\n\tSYS_IO_GETEVENTS                 = 4243\n\tSYS_IO_SUBMIT                    = 4244\n\tSYS_IO_CANCEL                    = 4245\n\tSYS_EXIT_GROUP                   = 4246\n\tSYS_LOOKUP_DCOOKIE               = 4247\n\tSYS_EPOLL_CREATE                 = 4248\n\tSYS_EPOLL_CTL                    = 4249\n\tSYS_EPOLL_WAIT                   = 4250\n\tSYS_REMAP_FILE_PAGES             = 4251\n\tSYS_SET_TID_ADDRESS              = 4252\n\tSYS_RESTART_SYSCALL              = 4253\n\tSYS_FADVISE64                    = 4254\n\tSYS_STATFS64                     = 4255\n\tSYS_FSTATFS64                    = 4256\n\tSYS_TIMER_CREATE                 = 4257\n\tSYS_TIMER_SETTIME                = 4258\n\tSYS_TIMER_GETTIME                = 4259\n\tSYS_TIMER_GETOVERRUN             = 4260\n\tSYS_TIMER_DELETE                 = 4261\n\tSYS_CLOCK_SETTIME                = 4262\n\tSYS_CLOCK_GETTIME                = 4263\n\tSYS_CLOCK_GETRES                 = 4264\n\tSYS_CLOCK_NANOSLEEP              = 4265\n\tSYS_TGKILL                       = 4266\n\tSYS_UTIMES                       = 4267\n\tSYS_MBIND                        = 4268\n\tSYS_GET_MEMPOLICY                = 4269\n\tSYS_SET_MEMPOLICY                = 4270\n\tSYS_MQ_OPEN                      = 4271\n\tSYS_MQ_UNLINK                    = 4272\n\tSYS_MQ_TIMEDSEND                 = 4273\n\tSYS_MQ_TIMEDRECEIVE              = 4274\n\tSYS_MQ_NOTIFY                    = 4275\n\tSYS_MQ_GETSETATTR                = 4276\n\tSYS_VSERVER                      = 4277\n\tSYS_WAITID                       = 4278\n\tSYS_ADD_KEY                      = 4280\n\tSYS_REQUEST_KEY                  = 4281\n\tSYS_KEYCTL                       = 4282\n\tSYS_SET_THREAD_AREA              = 4283\n\tSYS_INOTIFY_INIT                 = 4284\n\tSYS_INOTIFY_ADD_WATCH            = 4285\n\tSYS_INOTIFY_RM_WATCH             = 4286\n\tSYS_MIGRATE_PAGES                = 4287\n\tSYS_OPENAT                       = 4288\n\tSYS_MKDIRAT                      = 4289\n\tSYS_MKNODAT                      = 4290\n\tSYS_FCHOWNAT                     = 4291\n\tSYS_FUTIMESAT                    = 4292\n\tSYS_FSTATAT64                    = 4293\n\tSYS_UNLINKAT                     = 4294\n\tSYS_RENAMEAT                     = 4295\n\tSYS_LINKAT                       = 4296\n\tSYS_SYMLINKAT                    = 4297\n\tSYS_READLINKAT                   = 4298\n\tSYS_FCHMODAT                     = 4299\n\tSYS_FACCESSAT                    = 4300\n\tSYS_PSELECT6                     = 4301\n\tSYS_PPOLL                        = 4302\n\tSYS_UNSHARE                      = 4303\n\tSYS_SPLICE                       = 4304\n\tSYS_SYNC_FILE_RANGE              = 4305\n\tSYS_TEE                          = 4306\n\tSYS_VMSPLICE                     = 4307\n\tSYS_MOVE_PAGES                   = 4308\n\tSYS_SET_ROBUST_LIST              = 4309\n\tSYS_GET_ROBUST_LIST              = 4310\n\tSYS_KEXEC_LOAD                   = 4311\n\tSYS_GETCPU                       = 4312\n\tSYS_EPOLL_PWAIT                  = 4313\n\tSYS_IOPRIO_SET                   = 4314\n\tSYS_IOPRIO_GET                   = 4315\n\tSYS_UTIMENSAT                    = 4316\n\tSYS_SIGNALFD                     = 4317\n\tSYS_TIMERFD                      = 4318\n\tSYS_EVENTFD                      = 4319\n\tSYS_FALLOCATE                    = 4320\n\tSYS_TIMERFD_CREATE               = 4321\n\tSYS_TIMERFD_GETTIME              = 4322\n\tSYS_TIMERFD_SETTIME              = 4323\n\tSYS_SIGNALFD4                    = 4324\n\tSYS_EVENTFD2                     = 4325\n\tSYS_EPOLL_CREATE1                = 4326\n\tSYS_DUP3                         = 4327\n\tSYS_PIPE2                        = 4328\n\tSYS_INOTIFY_INIT1                = 4329\n\tSYS_PREADV                       = 4330\n\tSYS_PWRITEV                      = 4331\n\tSYS_RT_TGSIGQUEUEINFO            = 4332\n\tSYS_PERF_EVENT_OPEN              = 4333\n\tSYS_ACCEPT4                      = 4334\n\tSYS_RECVMMSG                     = 4335\n\tSYS_FANOTIFY_INIT                = 4336\n\tSYS_FANOTIFY_MARK                = 4337\n\tSYS_PRLIMIT64                    = 4338\n\tSYS_NAME_TO_HANDLE_AT            = 4339\n\tSYS_OPEN_BY_HANDLE_AT            = 4340\n\tSYS_CLOCK_ADJTIME                = 4341\n\tSYS_SYNCFS                       = 4342\n\tSYS_SENDMMSG                     = 4343\n\tSYS_SETNS                        = 4344\n\tSYS_PROCESS_VM_READV             = 4345\n\tSYS_PROCESS_VM_WRITEV            = 4346\n\tSYS_KCMP                         = 4347\n\tSYS_FINIT_MODULE                 = 4348\n\tSYS_SCHED_SETATTR                = 4349\n\tSYS_SCHED_GETATTR                = 4350\n\tSYS_RENAMEAT2                    = 4351\n\tSYS_SECCOMP                      = 4352\n\tSYS_GETRANDOM                    = 4353\n\tSYS_MEMFD_CREATE                 = 4354\n\tSYS_BPF                          = 4355\n\tSYS_EXECVEAT                     = 4356\n\tSYS_USERFAULTFD                  = 4357\n\tSYS_MEMBARRIER                   = 4358\n\tSYS_MLOCK2                       = 4359\n\tSYS_COPY_FILE_RANGE              = 4360\n\tSYS_PREADV2                      = 4361\n\tSYS_PWRITEV2                     = 4362\n\tSYS_PKEY_MPROTECT                = 4363\n\tSYS_PKEY_ALLOC                   = 4364\n\tSYS_PKEY_FREE                    = 4365\n\tSYS_STATX                        = 4366\n\tSYS_RSEQ                         = 4367\n\tSYS_IO_PGETEVENTS                = 4368\n\tSYS_SEMGET                       = 4393\n\tSYS_SEMCTL                       = 4394\n\tSYS_SHMGET                       = 4395\n\tSYS_SHMCTL                       = 4396\n\tSYS_SHMAT                        = 4397\n\tSYS_SHMDT                        = 4398\n\tSYS_MSGGET                       = 4399\n\tSYS_MSGSND                       = 4400\n\tSYS_MSGRCV                       = 4401\n\tSYS_MSGCTL                       = 4402\n\tSYS_CLOCK_GETTIME64              = 4403\n\tSYS_CLOCK_SETTIME64              = 4404\n\tSYS_CLOCK_ADJTIME64              = 4405\n\tSYS_CLOCK_GETRES_TIME64          = 4406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 4407\n\tSYS_TIMER_GETTIME64              = 4408\n\tSYS_TIMER_SETTIME64              = 4409\n\tSYS_TIMERFD_GETTIME64            = 4410\n\tSYS_TIMERFD_SETTIME64            = 4411\n\tSYS_UTIMENSAT_TIME64             = 4412\n\tSYS_PSELECT6_TIME64              = 4413\n\tSYS_PPOLL_TIME64                 = 4414\n\tSYS_IO_PGETEVENTS_TIME64         = 4416\n\tSYS_RECVMMSG_TIME64              = 4417\n\tSYS_MQ_TIMEDSEND_TIME64          = 4418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 4419\n\tSYS_SEMTIMEDOP_TIME64            = 4420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 4421\n\tSYS_FUTEX_TIME64                 = 4422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 4423\n\tSYS_PIDFD_SEND_SIGNAL            = 4424\n\tSYS_IO_URING_SETUP               = 4425\n\tSYS_IO_URING_ENTER               = 4426\n\tSYS_IO_URING_REGISTER            = 4427\n\tSYS_OPEN_TREE                    = 4428\n\tSYS_MOVE_MOUNT                   = 4429\n\tSYS_FSOPEN                       = 4430\n\tSYS_FSCONFIG                     = 4431\n\tSYS_FSMOUNT                      = 4432\n\tSYS_FSPICK                       = 4433\n\tSYS_PIDFD_OPEN                   = 4434\n\tSYS_CLONE3                       = 4435\n\tSYS_CLOSE_RANGE                  = 4436\n\tSYS_OPENAT2                      = 4437\n\tSYS_PIDFD_GETFD                  = 4438\n\tSYS_FACCESSAT2                   = 4439\n\tSYS_PROCESS_MADVISE              = 4440\n\tSYS_EPOLL_PWAIT2                 = 4441\n\tSYS_MOUNT_SETATTR                = 4442\n\tSYS_QUOTACTL_FD                  = 4443\n\tSYS_LANDLOCK_CREATE_RULESET      = 4444\n\tSYS_LANDLOCK_ADD_RULE            = 4445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 4446\n\tSYS_PROCESS_MRELEASE             = 4448\n\tSYS_FUTEX_WAITV                  = 4449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 4450\n\tSYS_CACHESTAT                    = 4451\n\tSYS_FCHMODAT2                    = 4452\n\tSYS_MAP_SHADOW_STACK             = 4453\n\tSYS_FUTEX_WAKE                   = 4454\n\tSYS_FUTEX_WAIT                   = 4455\n\tSYS_FUTEX_REQUEUE                = 4456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_ppc.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc/include /tmp/ppc/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL              = 0\n\tSYS_EXIT                         = 1\n\tSYS_FORK                         = 2\n\tSYS_READ                         = 3\n\tSYS_WRITE                        = 4\n\tSYS_OPEN                         = 5\n\tSYS_CLOSE                        = 6\n\tSYS_WAITPID                      = 7\n\tSYS_CREAT                        = 8\n\tSYS_LINK                         = 9\n\tSYS_UNLINK                       = 10\n\tSYS_EXECVE                       = 11\n\tSYS_CHDIR                        = 12\n\tSYS_TIME                         = 13\n\tSYS_MKNOD                        = 14\n\tSYS_CHMOD                        = 15\n\tSYS_LCHOWN                       = 16\n\tSYS_BREAK                        = 17\n\tSYS_OLDSTAT                      = 18\n\tSYS_LSEEK                        = 19\n\tSYS_GETPID                       = 20\n\tSYS_MOUNT                        = 21\n\tSYS_UMOUNT                       = 22\n\tSYS_SETUID                       = 23\n\tSYS_GETUID                       = 24\n\tSYS_STIME                        = 25\n\tSYS_PTRACE                       = 26\n\tSYS_ALARM                        = 27\n\tSYS_OLDFSTAT                     = 28\n\tSYS_PAUSE                        = 29\n\tSYS_UTIME                        = 30\n\tSYS_STTY                         = 31\n\tSYS_GTTY                         = 32\n\tSYS_ACCESS                       = 33\n\tSYS_NICE                         = 34\n\tSYS_FTIME                        = 35\n\tSYS_SYNC                         = 36\n\tSYS_KILL                         = 37\n\tSYS_RENAME                       = 38\n\tSYS_MKDIR                        = 39\n\tSYS_RMDIR                        = 40\n\tSYS_DUP                          = 41\n\tSYS_PIPE                         = 42\n\tSYS_TIMES                        = 43\n\tSYS_PROF                         = 44\n\tSYS_BRK                          = 45\n\tSYS_SETGID                       = 46\n\tSYS_GETGID                       = 47\n\tSYS_SIGNAL                       = 48\n\tSYS_GETEUID                      = 49\n\tSYS_GETEGID                      = 50\n\tSYS_ACCT                         = 51\n\tSYS_UMOUNT2                      = 52\n\tSYS_LOCK                         = 53\n\tSYS_IOCTL                        = 54\n\tSYS_FCNTL                        = 55\n\tSYS_MPX                          = 56\n\tSYS_SETPGID                      = 57\n\tSYS_ULIMIT                       = 58\n\tSYS_OLDOLDUNAME                  = 59\n\tSYS_UMASK                        = 60\n\tSYS_CHROOT                       = 61\n\tSYS_USTAT                        = 62\n\tSYS_DUP2                         = 63\n\tSYS_GETPPID                      = 64\n\tSYS_GETPGRP                      = 65\n\tSYS_SETSID                       = 66\n\tSYS_SIGACTION                    = 67\n\tSYS_SGETMASK                     = 68\n\tSYS_SSETMASK                     = 69\n\tSYS_SETREUID                     = 70\n\tSYS_SETREGID                     = 71\n\tSYS_SIGSUSPEND                   = 72\n\tSYS_SIGPENDING                   = 73\n\tSYS_SETHOSTNAME                  = 74\n\tSYS_SETRLIMIT                    = 75\n\tSYS_GETRLIMIT                    = 76\n\tSYS_GETRUSAGE                    = 77\n\tSYS_GETTIMEOFDAY                 = 78\n\tSYS_SETTIMEOFDAY                 = 79\n\tSYS_GETGROUPS                    = 80\n\tSYS_SETGROUPS                    = 81\n\tSYS_SELECT                       = 82\n\tSYS_SYMLINK                      = 83\n\tSYS_OLDLSTAT                     = 84\n\tSYS_READLINK                     = 85\n\tSYS_USELIB                       = 86\n\tSYS_SWAPON                       = 87\n\tSYS_REBOOT                       = 88\n\tSYS_READDIR                      = 89\n\tSYS_MMAP                         = 90\n\tSYS_MUNMAP                       = 91\n\tSYS_TRUNCATE                     = 92\n\tSYS_FTRUNCATE                    = 93\n\tSYS_FCHMOD                       = 94\n\tSYS_FCHOWN                       = 95\n\tSYS_GETPRIORITY                  = 96\n\tSYS_SETPRIORITY                  = 97\n\tSYS_PROFIL                       = 98\n\tSYS_STATFS                       = 99\n\tSYS_FSTATFS                      = 100\n\tSYS_IOPERM                       = 101\n\tSYS_SOCKETCALL                   = 102\n\tSYS_SYSLOG                       = 103\n\tSYS_SETITIMER                    = 104\n\tSYS_GETITIMER                    = 105\n\tSYS_STAT                         = 106\n\tSYS_LSTAT                        = 107\n\tSYS_FSTAT                        = 108\n\tSYS_OLDUNAME                     = 109\n\tSYS_IOPL                         = 110\n\tSYS_VHANGUP                      = 111\n\tSYS_IDLE                         = 112\n\tSYS_VM86                         = 113\n\tSYS_WAIT4                        = 114\n\tSYS_SWAPOFF                      = 115\n\tSYS_SYSINFO                      = 116\n\tSYS_IPC                          = 117\n\tSYS_FSYNC                        = 118\n\tSYS_SIGRETURN                    = 119\n\tSYS_CLONE                        = 120\n\tSYS_SETDOMAINNAME                = 121\n\tSYS_UNAME                        = 122\n\tSYS_MODIFY_LDT                   = 123\n\tSYS_ADJTIMEX                     = 124\n\tSYS_MPROTECT                     = 125\n\tSYS_SIGPROCMASK                  = 126\n\tSYS_CREATE_MODULE                = 127\n\tSYS_INIT_MODULE                  = 128\n\tSYS_DELETE_MODULE                = 129\n\tSYS_GET_KERNEL_SYMS              = 130\n\tSYS_QUOTACTL                     = 131\n\tSYS_GETPGID                      = 132\n\tSYS_FCHDIR                       = 133\n\tSYS_BDFLUSH                      = 134\n\tSYS_SYSFS                        = 135\n\tSYS_PERSONALITY                  = 136\n\tSYS_AFS_SYSCALL                  = 137\n\tSYS_SETFSUID                     = 138\n\tSYS_SETFSGID                     = 139\n\tSYS__LLSEEK                      = 140\n\tSYS_GETDENTS                     = 141\n\tSYS__NEWSELECT                   = 142\n\tSYS_FLOCK                        = 143\n\tSYS_MSYNC                        = 144\n\tSYS_READV                        = 145\n\tSYS_WRITEV                       = 146\n\tSYS_GETSID                       = 147\n\tSYS_FDATASYNC                    = 148\n\tSYS__SYSCTL                      = 149\n\tSYS_MLOCK                        = 150\n\tSYS_MUNLOCK                      = 151\n\tSYS_MLOCKALL                     = 152\n\tSYS_MUNLOCKALL                   = 153\n\tSYS_SCHED_SETPARAM               = 154\n\tSYS_SCHED_GETPARAM               = 155\n\tSYS_SCHED_SETSCHEDULER           = 156\n\tSYS_SCHED_GETSCHEDULER           = 157\n\tSYS_SCHED_YIELD                  = 158\n\tSYS_SCHED_GET_PRIORITY_MAX       = 159\n\tSYS_SCHED_GET_PRIORITY_MIN       = 160\n\tSYS_SCHED_RR_GET_INTERVAL        = 161\n\tSYS_NANOSLEEP                    = 162\n\tSYS_MREMAP                       = 163\n\tSYS_SETRESUID                    = 164\n\tSYS_GETRESUID                    = 165\n\tSYS_QUERY_MODULE                 = 166\n\tSYS_POLL                         = 167\n\tSYS_NFSSERVCTL                   = 168\n\tSYS_SETRESGID                    = 169\n\tSYS_GETRESGID                    = 170\n\tSYS_PRCTL                        = 171\n\tSYS_RT_SIGRETURN                 = 172\n\tSYS_RT_SIGACTION                 = 173\n\tSYS_RT_SIGPROCMASK               = 174\n\tSYS_RT_SIGPENDING                = 175\n\tSYS_RT_SIGTIMEDWAIT              = 176\n\tSYS_RT_SIGQUEUEINFO              = 177\n\tSYS_RT_SIGSUSPEND                = 178\n\tSYS_PREAD64                      = 179\n\tSYS_PWRITE64                     = 180\n\tSYS_CHOWN                        = 181\n\tSYS_GETCWD                       = 182\n\tSYS_CAPGET                       = 183\n\tSYS_CAPSET                       = 184\n\tSYS_SIGALTSTACK                  = 185\n\tSYS_SENDFILE                     = 186\n\tSYS_GETPMSG                      = 187\n\tSYS_PUTPMSG                      = 188\n\tSYS_VFORK                        = 189\n\tSYS_UGETRLIMIT                   = 190\n\tSYS_READAHEAD                    = 191\n\tSYS_MMAP2                        = 192\n\tSYS_TRUNCATE64                   = 193\n\tSYS_FTRUNCATE64                  = 194\n\tSYS_STAT64                       = 195\n\tSYS_LSTAT64                      = 196\n\tSYS_FSTAT64                      = 197\n\tSYS_PCICONFIG_READ               = 198\n\tSYS_PCICONFIG_WRITE              = 199\n\tSYS_PCICONFIG_IOBASE             = 200\n\tSYS_MULTIPLEXER                  = 201\n\tSYS_GETDENTS64                   = 202\n\tSYS_PIVOT_ROOT                   = 203\n\tSYS_FCNTL64                      = 204\n\tSYS_MADVISE                      = 205\n\tSYS_MINCORE                      = 206\n\tSYS_GETTID                       = 207\n\tSYS_TKILL                        = 208\n\tSYS_SETXATTR                     = 209\n\tSYS_LSETXATTR                    = 210\n\tSYS_FSETXATTR                    = 211\n\tSYS_GETXATTR                     = 212\n\tSYS_LGETXATTR                    = 213\n\tSYS_FGETXATTR                    = 214\n\tSYS_LISTXATTR                    = 215\n\tSYS_LLISTXATTR                   = 216\n\tSYS_FLISTXATTR                   = 217\n\tSYS_REMOVEXATTR                  = 218\n\tSYS_LREMOVEXATTR                 = 219\n\tSYS_FREMOVEXATTR                 = 220\n\tSYS_FUTEX                        = 221\n\tSYS_SCHED_SETAFFINITY            = 222\n\tSYS_SCHED_GETAFFINITY            = 223\n\tSYS_TUXCALL                      = 225\n\tSYS_SENDFILE64                   = 226\n\tSYS_IO_SETUP                     = 227\n\tSYS_IO_DESTROY                   = 228\n\tSYS_IO_GETEVENTS                 = 229\n\tSYS_IO_SUBMIT                    = 230\n\tSYS_IO_CANCEL                    = 231\n\tSYS_SET_TID_ADDRESS              = 232\n\tSYS_FADVISE64                    = 233\n\tSYS_EXIT_GROUP                   = 234\n\tSYS_LOOKUP_DCOOKIE               = 235\n\tSYS_EPOLL_CREATE                 = 236\n\tSYS_EPOLL_CTL                    = 237\n\tSYS_EPOLL_WAIT                   = 238\n\tSYS_REMAP_FILE_PAGES             = 239\n\tSYS_TIMER_CREATE                 = 240\n\tSYS_TIMER_SETTIME                = 241\n\tSYS_TIMER_GETTIME                = 242\n\tSYS_TIMER_GETOVERRUN             = 243\n\tSYS_TIMER_DELETE                 = 244\n\tSYS_CLOCK_SETTIME                = 245\n\tSYS_CLOCK_GETTIME                = 246\n\tSYS_CLOCK_GETRES                 = 247\n\tSYS_CLOCK_NANOSLEEP              = 248\n\tSYS_SWAPCONTEXT                  = 249\n\tSYS_TGKILL                       = 250\n\tSYS_UTIMES                       = 251\n\tSYS_STATFS64                     = 252\n\tSYS_FSTATFS64                    = 253\n\tSYS_FADVISE64_64                 = 254\n\tSYS_RTAS                         = 255\n\tSYS_SYS_DEBUG_SETCONTEXT         = 256\n\tSYS_MIGRATE_PAGES                = 258\n\tSYS_MBIND                        = 259\n\tSYS_GET_MEMPOLICY                = 260\n\tSYS_SET_MEMPOLICY                = 261\n\tSYS_MQ_OPEN                      = 262\n\tSYS_MQ_UNLINK                    = 263\n\tSYS_MQ_TIMEDSEND                 = 264\n\tSYS_MQ_TIMEDRECEIVE              = 265\n\tSYS_MQ_NOTIFY                    = 266\n\tSYS_MQ_GETSETATTR                = 267\n\tSYS_KEXEC_LOAD                   = 268\n\tSYS_ADD_KEY                      = 269\n\tSYS_REQUEST_KEY                  = 270\n\tSYS_KEYCTL                       = 271\n\tSYS_WAITID                       = 272\n\tSYS_IOPRIO_SET                   = 273\n\tSYS_IOPRIO_GET                   = 274\n\tSYS_INOTIFY_INIT                 = 275\n\tSYS_INOTIFY_ADD_WATCH            = 276\n\tSYS_INOTIFY_RM_WATCH             = 277\n\tSYS_SPU_RUN                      = 278\n\tSYS_SPU_CREATE                   = 279\n\tSYS_PSELECT6                     = 280\n\tSYS_PPOLL                        = 281\n\tSYS_UNSHARE                      = 282\n\tSYS_SPLICE                       = 283\n\tSYS_TEE                          = 284\n\tSYS_VMSPLICE                     = 285\n\tSYS_OPENAT                       = 286\n\tSYS_MKDIRAT                      = 287\n\tSYS_MKNODAT                      = 288\n\tSYS_FCHOWNAT                     = 289\n\tSYS_FUTIMESAT                    = 290\n\tSYS_FSTATAT64                    = 291\n\tSYS_UNLINKAT                     = 292\n\tSYS_RENAMEAT                     = 293\n\tSYS_LINKAT                       = 294\n\tSYS_SYMLINKAT                    = 295\n\tSYS_READLINKAT                   = 296\n\tSYS_FCHMODAT                     = 297\n\tSYS_FACCESSAT                    = 298\n\tSYS_GET_ROBUST_LIST              = 299\n\tSYS_SET_ROBUST_LIST              = 300\n\tSYS_MOVE_PAGES                   = 301\n\tSYS_GETCPU                       = 302\n\tSYS_EPOLL_PWAIT                  = 303\n\tSYS_UTIMENSAT                    = 304\n\tSYS_SIGNALFD                     = 305\n\tSYS_TIMERFD_CREATE               = 306\n\tSYS_EVENTFD                      = 307\n\tSYS_SYNC_FILE_RANGE2             = 308\n\tSYS_FALLOCATE                    = 309\n\tSYS_SUBPAGE_PROT                 = 310\n\tSYS_TIMERFD_SETTIME              = 311\n\tSYS_TIMERFD_GETTIME              = 312\n\tSYS_SIGNALFD4                    = 313\n\tSYS_EVENTFD2                     = 314\n\tSYS_EPOLL_CREATE1                = 315\n\tSYS_DUP3                         = 316\n\tSYS_PIPE2                        = 317\n\tSYS_INOTIFY_INIT1                = 318\n\tSYS_PERF_EVENT_OPEN              = 319\n\tSYS_PREADV                       = 320\n\tSYS_PWRITEV                      = 321\n\tSYS_RT_TGSIGQUEUEINFO            = 322\n\tSYS_FANOTIFY_INIT                = 323\n\tSYS_FANOTIFY_MARK                = 324\n\tSYS_PRLIMIT64                    = 325\n\tSYS_SOCKET                       = 326\n\tSYS_BIND                         = 327\n\tSYS_CONNECT                      = 328\n\tSYS_LISTEN                       = 329\n\tSYS_ACCEPT                       = 330\n\tSYS_GETSOCKNAME                  = 331\n\tSYS_GETPEERNAME                  = 332\n\tSYS_SOCKETPAIR                   = 333\n\tSYS_SEND                         = 334\n\tSYS_SENDTO                       = 335\n\tSYS_RECV                         = 336\n\tSYS_RECVFROM                     = 337\n\tSYS_SHUTDOWN                     = 338\n\tSYS_SETSOCKOPT                   = 339\n\tSYS_GETSOCKOPT                   = 340\n\tSYS_SENDMSG                      = 341\n\tSYS_RECVMSG                      = 342\n\tSYS_RECVMMSG                     = 343\n\tSYS_ACCEPT4                      = 344\n\tSYS_NAME_TO_HANDLE_AT            = 345\n\tSYS_OPEN_BY_HANDLE_AT            = 346\n\tSYS_CLOCK_ADJTIME                = 347\n\tSYS_SYNCFS                       = 348\n\tSYS_SENDMMSG                     = 349\n\tSYS_SETNS                        = 350\n\tSYS_PROCESS_VM_READV             = 351\n\tSYS_PROCESS_VM_WRITEV            = 352\n\tSYS_FINIT_MODULE                 = 353\n\tSYS_KCMP                         = 354\n\tSYS_SCHED_SETATTR                = 355\n\tSYS_SCHED_GETATTR                = 356\n\tSYS_RENAMEAT2                    = 357\n\tSYS_SECCOMP                      = 358\n\tSYS_GETRANDOM                    = 359\n\tSYS_MEMFD_CREATE                 = 360\n\tSYS_BPF                          = 361\n\tSYS_EXECVEAT                     = 362\n\tSYS_SWITCH_ENDIAN                = 363\n\tSYS_USERFAULTFD                  = 364\n\tSYS_MEMBARRIER                   = 365\n\tSYS_MLOCK2                       = 378\n\tSYS_COPY_FILE_RANGE              = 379\n\tSYS_PREADV2                      = 380\n\tSYS_PWRITEV2                     = 381\n\tSYS_KEXEC_FILE_LOAD              = 382\n\tSYS_STATX                        = 383\n\tSYS_PKEY_ALLOC                   = 384\n\tSYS_PKEY_FREE                    = 385\n\tSYS_PKEY_MPROTECT                = 386\n\tSYS_RSEQ                         = 387\n\tSYS_IO_PGETEVENTS                = 388\n\tSYS_SEMGET                       = 393\n\tSYS_SEMCTL                       = 394\n\tSYS_SHMGET                       = 395\n\tSYS_SHMCTL                       = 396\n\tSYS_SHMAT                        = 397\n\tSYS_SHMDT                        = 398\n\tSYS_MSGGET                       = 399\n\tSYS_MSGSND                       = 400\n\tSYS_MSGRCV                       = 401\n\tSYS_MSGCTL                       = 402\n\tSYS_CLOCK_GETTIME64              = 403\n\tSYS_CLOCK_SETTIME64              = 404\n\tSYS_CLOCK_ADJTIME64              = 405\n\tSYS_CLOCK_GETRES_TIME64          = 406\n\tSYS_CLOCK_NANOSLEEP_TIME64       = 407\n\tSYS_TIMER_GETTIME64              = 408\n\tSYS_TIMER_SETTIME64              = 409\n\tSYS_TIMERFD_GETTIME64            = 410\n\tSYS_TIMERFD_SETTIME64            = 411\n\tSYS_UTIMENSAT_TIME64             = 412\n\tSYS_PSELECT6_TIME64              = 413\n\tSYS_PPOLL_TIME64                 = 414\n\tSYS_IO_PGETEVENTS_TIME64         = 416\n\tSYS_RECVMMSG_TIME64              = 417\n\tSYS_MQ_TIMEDSEND_TIME64          = 418\n\tSYS_MQ_TIMEDRECEIVE_TIME64       = 419\n\tSYS_SEMTIMEDOP_TIME64            = 420\n\tSYS_RT_SIGTIMEDWAIT_TIME64       = 421\n\tSYS_FUTEX_TIME64                 = 422\n\tSYS_SCHED_RR_GET_INTERVAL_TIME64 = 423\n\tSYS_PIDFD_SEND_SIGNAL            = 424\n\tSYS_IO_URING_SETUP               = 425\n\tSYS_IO_URING_ENTER               = 426\n\tSYS_IO_URING_REGISTER            = 427\n\tSYS_OPEN_TREE                    = 428\n\tSYS_MOVE_MOUNT                   = 429\n\tSYS_FSOPEN                       = 430\n\tSYS_FSCONFIG                     = 431\n\tSYS_FSMOUNT                      = 432\n\tSYS_FSPICK                       = 433\n\tSYS_PIDFD_OPEN                   = 434\n\tSYS_CLONE3                       = 435\n\tSYS_CLOSE_RANGE                  = 436\n\tSYS_OPENAT2                      = 437\n\tSYS_PIDFD_GETFD                  = 438\n\tSYS_FACCESSAT2                   = 439\n\tSYS_PROCESS_MADVISE              = 440\n\tSYS_EPOLL_PWAIT2                 = 441\n\tSYS_MOUNT_SETATTR                = 442\n\tSYS_QUOTACTL_FD                  = 443\n\tSYS_LANDLOCK_CREATE_RULESET      = 444\n\tSYS_LANDLOCK_ADD_RULE            = 445\n\tSYS_LANDLOCK_RESTRICT_SELF       = 446\n\tSYS_PROCESS_MRELEASE             = 448\n\tSYS_FUTEX_WAITV                  = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE      = 450\n\tSYS_CACHESTAT                    = 451\n\tSYS_FCHMODAT2                    = 452\n\tSYS_MAP_SHADOW_STACK             = 453\n\tSYS_FUTEX_WAKE                   = 454\n\tSYS_FUTEX_WAIT                   = 455\n\tSYS_FUTEX_REQUEUE                = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_ppc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64/include /tmp/ppc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_ppc64le.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/ppc64le/include /tmp/ppc64le/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAITPID                 = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_TIME                    = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BREAK                   = 17\n\tSYS_OLDSTAT                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_STIME                   = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_OLDFSTAT                = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_STTY                    = 31\n\tSYS_GTTY                    = 32\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_FTIME                   = 35\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_PROF                    = 44\n\tSYS_BRK                     = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_LOCK                    = 53\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_MPX                     = 56\n\tSYS_SETPGID                 = 57\n\tSYS_ULIMIT                  = 58\n\tSYS_OLDOLDUNAME             = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SGETMASK                = 68\n\tSYS_SSETMASK                = 69\n\tSYS_SETREUID                = 70\n\tSYS_SETREGID                = 71\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRLIMIT               = 76\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_GETGROUPS               = 80\n\tSYS_SETGROUPS               = 81\n\tSYS_SELECT                  = 82\n\tSYS_SYMLINK                 = 83\n\tSYS_OLDLSTAT                = 84\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_FCHOWN                  = 95\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_PROFIL                  = 98\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_IOPERM                  = 101\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_OLDUNAME                = 109\n\tSYS_IOPL                    = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_VM86                    = 113\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_MODIFY_LDT              = 123\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_SETFSUID                = 138\n\tSYS_SETFSGID                = 139\n\tSYS__LLSEEK                 = 140\n\tSYS_GETDENTS                = 141\n\tSYS__NEWSELECT              = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_SETRESUID               = 164\n\tSYS_GETRESUID               = 165\n\tSYS_QUERY_MODULE            = 166\n\tSYS_POLL                    = 167\n\tSYS_NFSSERVCTL              = 168\n\tSYS_SETRESGID               = 169\n\tSYS_GETRESGID               = 170\n\tSYS_PRCTL                   = 171\n\tSYS_RT_SIGRETURN            = 172\n\tSYS_RT_SIGACTION            = 173\n\tSYS_RT_SIGPROCMASK          = 174\n\tSYS_RT_SIGPENDING           = 175\n\tSYS_RT_SIGTIMEDWAIT         = 176\n\tSYS_RT_SIGQUEUEINFO         = 177\n\tSYS_RT_SIGSUSPEND           = 178\n\tSYS_PREAD64                 = 179\n\tSYS_PWRITE64                = 180\n\tSYS_CHOWN                   = 181\n\tSYS_GETCWD                  = 182\n\tSYS_CAPGET                  = 183\n\tSYS_CAPSET                  = 184\n\tSYS_SIGALTSTACK             = 185\n\tSYS_SENDFILE                = 186\n\tSYS_GETPMSG                 = 187\n\tSYS_PUTPMSG                 = 188\n\tSYS_VFORK                   = 189\n\tSYS_UGETRLIMIT              = 190\n\tSYS_READAHEAD               = 191\n\tSYS_PCICONFIG_READ          = 198\n\tSYS_PCICONFIG_WRITE         = 199\n\tSYS_PCICONFIG_IOBASE        = 200\n\tSYS_MULTIPLEXER             = 201\n\tSYS_GETDENTS64              = 202\n\tSYS_PIVOT_ROOT              = 203\n\tSYS_MADVISE                 = 205\n\tSYS_MINCORE                 = 206\n\tSYS_GETTID                  = 207\n\tSYS_TKILL                   = 208\n\tSYS_SETXATTR                = 209\n\tSYS_LSETXATTR               = 210\n\tSYS_FSETXATTR               = 211\n\tSYS_GETXATTR                = 212\n\tSYS_LGETXATTR               = 213\n\tSYS_FGETXATTR               = 214\n\tSYS_LISTXATTR               = 215\n\tSYS_LLISTXATTR              = 216\n\tSYS_FLISTXATTR              = 217\n\tSYS_REMOVEXATTR             = 218\n\tSYS_LREMOVEXATTR            = 219\n\tSYS_FREMOVEXATTR            = 220\n\tSYS_FUTEX                   = 221\n\tSYS_SCHED_SETAFFINITY       = 222\n\tSYS_SCHED_GETAFFINITY       = 223\n\tSYS_TUXCALL                 = 225\n\tSYS_IO_SETUP                = 227\n\tSYS_IO_DESTROY              = 228\n\tSYS_IO_GETEVENTS            = 229\n\tSYS_IO_SUBMIT               = 230\n\tSYS_IO_CANCEL               = 231\n\tSYS_SET_TID_ADDRESS         = 232\n\tSYS_FADVISE64               = 233\n\tSYS_EXIT_GROUP              = 234\n\tSYS_LOOKUP_DCOOKIE          = 235\n\tSYS_EPOLL_CREATE            = 236\n\tSYS_EPOLL_CTL               = 237\n\tSYS_EPOLL_WAIT              = 238\n\tSYS_REMAP_FILE_PAGES        = 239\n\tSYS_TIMER_CREATE            = 240\n\tSYS_TIMER_SETTIME           = 241\n\tSYS_TIMER_GETTIME           = 242\n\tSYS_TIMER_GETOVERRUN        = 243\n\tSYS_TIMER_DELETE            = 244\n\tSYS_CLOCK_SETTIME           = 245\n\tSYS_CLOCK_GETTIME           = 246\n\tSYS_CLOCK_GETRES            = 247\n\tSYS_CLOCK_NANOSLEEP         = 248\n\tSYS_SWAPCONTEXT             = 249\n\tSYS_TGKILL                  = 250\n\tSYS_UTIMES                  = 251\n\tSYS_STATFS64                = 252\n\tSYS_FSTATFS64               = 253\n\tSYS_RTAS                    = 255\n\tSYS_SYS_DEBUG_SETCONTEXT    = 256\n\tSYS_MIGRATE_PAGES           = 258\n\tSYS_MBIND                   = 259\n\tSYS_GET_MEMPOLICY           = 260\n\tSYS_SET_MEMPOLICY           = 261\n\tSYS_MQ_OPEN                 = 262\n\tSYS_MQ_UNLINK               = 263\n\tSYS_MQ_TIMEDSEND            = 264\n\tSYS_MQ_TIMEDRECEIVE         = 265\n\tSYS_MQ_NOTIFY               = 266\n\tSYS_MQ_GETSETATTR           = 267\n\tSYS_KEXEC_LOAD              = 268\n\tSYS_ADD_KEY                 = 269\n\tSYS_REQUEST_KEY             = 270\n\tSYS_KEYCTL                  = 271\n\tSYS_WAITID                  = 272\n\tSYS_IOPRIO_SET              = 273\n\tSYS_IOPRIO_GET              = 274\n\tSYS_INOTIFY_INIT            = 275\n\tSYS_INOTIFY_ADD_WATCH       = 276\n\tSYS_INOTIFY_RM_WATCH        = 277\n\tSYS_SPU_RUN                 = 278\n\tSYS_SPU_CREATE              = 279\n\tSYS_PSELECT6                = 280\n\tSYS_PPOLL                   = 281\n\tSYS_UNSHARE                 = 282\n\tSYS_SPLICE                  = 283\n\tSYS_TEE                     = 284\n\tSYS_VMSPLICE                = 285\n\tSYS_OPENAT                  = 286\n\tSYS_MKDIRAT                 = 287\n\tSYS_MKNODAT                 = 288\n\tSYS_FCHOWNAT                = 289\n\tSYS_FUTIMESAT               = 290\n\tSYS_NEWFSTATAT              = 291\n\tSYS_UNLINKAT                = 292\n\tSYS_RENAMEAT                = 293\n\tSYS_LINKAT                  = 294\n\tSYS_SYMLINKAT               = 295\n\tSYS_READLINKAT              = 296\n\tSYS_FCHMODAT                = 297\n\tSYS_FACCESSAT               = 298\n\tSYS_GET_ROBUST_LIST         = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_MOVE_PAGES              = 301\n\tSYS_GETCPU                  = 302\n\tSYS_EPOLL_PWAIT             = 303\n\tSYS_UTIMENSAT               = 304\n\tSYS_SIGNALFD                = 305\n\tSYS_TIMERFD_CREATE          = 306\n\tSYS_EVENTFD                 = 307\n\tSYS_SYNC_FILE_RANGE2        = 308\n\tSYS_FALLOCATE               = 309\n\tSYS_SUBPAGE_PROT            = 310\n\tSYS_TIMERFD_SETTIME         = 311\n\tSYS_TIMERFD_GETTIME         = 312\n\tSYS_SIGNALFD4               = 313\n\tSYS_EVENTFD2                = 314\n\tSYS_EPOLL_CREATE1           = 315\n\tSYS_DUP3                    = 316\n\tSYS_PIPE2                   = 317\n\tSYS_INOTIFY_INIT1           = 318\n\tSYS_PERF_EVENT_OPEN         = 319\n\tSYS_PREADV                  = 320\n\tSYS_PWRITEV                 = 321\n\tSYS_RT_TGSIGQUEUEINFO       = 322\n\tSYS_FANOTIFY_INIT           = 323\n\tSYS_FANOTIFY_MARK           = 324\n\tSYS_PRLIMIT64               = 325\n\tSYS_SOCKET                  = 326\n\tSYS_BIND                    = 327\n\tSYS_CONNECT                 = 328\n\tSYS_LISTEN                  = 329\n\tSYS_ACCEPT                  = 330\n\tSYS_GETSOCKNAME             = 331\n\tSYS_GETPEERNAME             = 332\n\tSYS_SOCKETPAIR              = 333\n\tSYS_SEND                    = 334\n\tSYS_SENDTO                  = 335\n\tSYS_RECV                    = 336\n\tSYS_RECVFROM                = 337\n\tSYS_SHUTDOWN                = 338\n\tSYS_SETSOCKOPT              = 339\n\tSYS_GETSOCKOPT              = 340\n\tSYS_SENDMSG                 = 341\n\tSYS_RECVMSG                 = 342\n\tSYS_RECVMMSG                = 343\n\tSYS_ACCEPT4                 = 344\n\tSYS_NAME_TO_HANDLE_AT       = 345\n\tSYS_OPEN_BY_HANDLE_AT       = 346\n\tSYS_CLOCK_ADJTIME           = 347\n\tSYS_SYNCFS                  = 348\n\tSYS_SENDMMSG                = 349\n\tSYS_SETNS                   = 350\n\tSYS_PROCESS_VM_READV        = 351\n\tSYS_PROCESS_VM_WRITEV       = 352\n\tSYS_FINIT_MODULE            = 353\n\tSYS_KCMP                    = 354\n\tSYS_SCHED_SETATTR           = 355\n\tSYS_SCHED_GETATTR           = 356\n\tSYS_RENAMEAT2               = 357\n\tSYS_SECCOMP                 = 358\n\tSYS_GETRANDOM               = 359\n\tSYS_MEMFD_CREATE            = 360\n\tSYS_BPF                     = 361\n\tSYS_EXECVEAT                = 362\n\tSYS_SWITCH_ENDIAN           = 363\n\tSYS_USERFAULTFD             = 364\n\tSYS_MEMBARRIER              = 365\n\tSYS_MLOCK2                  = 378\n\tSYS_COPY_FILE_RANGE         = 379\n\tSYS_PREADV2                 = 380\n\tSYS_PWRITEV2                = 381\n\tSYS_KEXEC_FILE_LOAD         = 382\n\tSYS_STATX                   = 383\n\tSYS_PKEY_ALLOC              = 384\n\tSYS_PKEY_FREE               = 385\n\tSYS_PKEY_MPROTECT           = 386\n\tSYS_RSEQ                    = 387\n\tSYS_IO_PGETEVENTS           = 388\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_riscv64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/riscv64/include /tmp/riscv64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSYS_IO_SETUP                = 0\n\tSYS_IO_DESTROY              = 1\n\tSYS_IO_SUBMIT               = 2\n\tSYS_IO_CANCEL               = 3\n\tSYS_IO_GETEVENTS            = 4\n\tSYS_SETXATTR                = 5\n\tSYS_LSETXATTR               = 6\n\tSYS_FSETXATTR               = 7\n\tSYS_GETXATTR                = 8\n\tSYS_LGETXATTR               = 9\n\tSYS_FGETXATTR               = 10\n\tSYS_LISTXATTR               = 11\n\tSYS_LLISTXATTR              = 12\n\tSYS_FLISTXATTR              = 13\n\tSYS_REMOVEXATTR             = 14\n\tSYS_LREMOVEXATTR            = 15\n\tSYS_FREMOVEXATTR            = 16\n\tSYS_GETCWD                  = 17\n\tSYS_LOOKUP_DCOOKIE          = 18\n\tSYS_EVENTFD2                = 19\n\tSYS_EPOLL_CREATE1           = 20\n\tSYS_EPOLL_CTL               = 21\n\tSYS_EPOLL_PWAIT             = 22\n\tSYS_DUP                     = 23\n\tSYS_DUP3                    = 24\n\tSYS_FCNTL                   = 25\n\tSYS_INOTIFY_INIT1           = 26\n\tSYS_INOTIFY_ADD_WATCH       = 27\n\tSYS_INOTIFY_RM_WATCH        = 28\n\tSYS_IOCTL                   = 29\n\tSYS_IOPRIO_SET              = 30\n\tSYS_IOPRIO_GET              = 31\n\tSYS_FLOCK                   = 32\n\tSYS_MKNODAT                 = 33\n\tSYS_MKDIRAT                 = 34\n\tSYS_UNLINKAT                = 35\n\tSYS_SYMLINKAT               = 36\n\tSYS_LINKAT                  = 37\n\tSYS_UMOUNT2                 = 39\n\tSYS_MOUNT                   = 40\n\tSYS_PIVOT_ROOT              = 41\n\tSYS_NFSSERVCTL              = 42\n\tSYS_STATFS                  = 43\n\tSYS_FSTATFS                 = 44\n\tSYS_TRUNCATE                = 45\n\tSYS_FTRUNCATE               = 46\n\tSYS_FALLOCATE               = 47\n\tSYS_FACCESSAT               = 48\n\tSYS_CHDIR                   = 49\n\tSYS_FCHDIR                  = 50\n\tSYS_CHROOT                  = 51\n\tSYS_FCHMOD                  = 52\n\tSYS_FCHMODAT                = 53\n\tSYS_FCHOWNAT                = 54\n\tSYS_FCHOWN                  = 55\n\tSYS_OPENAT                  = 56\n\tSYS_CLOSE                   = 57\n\tSYS_VHANGUP                 = 58\n\tSYS_PIPE2                   = 59\n\tSYS_QUOTACTL                = 60\n\tSYS_GETDENTS64              = 61\n\tSYS_LSEEK                   = 62\n\tSYS_READ                    = 63\n\tSYS_WRITE                   = 64\n\tSYS_READV                   = 65\n\tSYS_WRITEV                  = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_PREADV                  = 69\n\tSYS_PWRITEV                 = 70\n\tSYS_SENDFILE                = 71\n\tSYS_PSELECT6                = 72\n\tSYS_PPOLL                   = 73\n\tSYS_SIGNALFD4               = 74\n\tSYS_VMSPLICE                = 75\n\tSYS_SPLICE                  = 76\n\tSYS_TEE                     = 77\n\tSYS_READLINKAT              = 78\n\tSYS_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_RISCV_HWPROBE           = 258\n\tSYS_RISCV_FLUSH_ICACHE      = 259\n\tSYS_WAIT4                   = 260\n\tSYS_PRLIMIT64               = 261\n\tSYS_FANOTIFY_INIT           = 262\n\tSYS_FANOTIFY_MARK           = 263\n\tSYS_NAME_TO_HANDLE_AT       = 264\n\tSYS_OPEN_BY_HANDLE_AT       = 265\n\tSYS_CLOCK_ADJTIME           = 266\n\tSYS_SYNCFS                  = 267\n\tSYS_SETNS                   = 268\n\tSYS_SENDMMSG                = 269\n\tSYS_PROCESS_VM_READV        = 270\n\tSYS_PROCESS_VM_WRITEV       = 271\n\tSYS_KCMP                    = 272\n\tSYS_FINIT_MODULE            = 273\n\tSYS_SCHED_SETATTR           = 274\n\tSYS_SCHED_GETATTR           = 275\n\tSYS_RENAMEAT2               = 276\n\tSYS_SECCOMP                 = 277\n\tSYS_GETRANDOM               = 278\n\tSYS_MEMFD_CREATE            = 279\n\tSYS_BPF                     = 280\n\tSYS_EXECVEAT                = 281\n\tSYS_USERFAULTFD             = 282\n\tSYS_MEMBARRIER              = 283\n\tSYS_MLOCK2                  = 284\n\tSYS_COPY_FILE_RANGE         = 285\n\tSYS_PREADV2                 = 286\n\tSYS_PWRITEV2                = 287\n\tSYS_PKEY_MPROTECT           = 288\n\tSYS_PKEY_ALLOC              = 289\n\tSYS_PKEY_FREE               = 290\n\tSYS_STATX                   = 291\n\tSYS_IO_PGETEVENTS           = 292\n\tSYS_RSEQ                    = 293\n\tSYS_KEXEC_FILE_LOAD         = 294\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_s390x.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/s390x/include -fsigned-char /tmp/s390x/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_RESTART_SYSCALL         = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECVE                  = 11\n\tSYS_CHDIR                   = 12\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_MOUNT                   = 21\n\tSYS_UMOUNT                  = 22\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_RENAME                  = 38\n\tSYS_MKDIR                   = 39\n\tSYS_RMDIR                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_BRK                     = 45\n\tSYS_SIGNAL                  = 48\n\tSYS_ACCT                    = 51\n\tSYS_UMOUNT2                 = 52\n\tSYS_IOCTL                   = 54\n\tSYS_FCNTL                   = 55\n\tSYS_SETPGID                 = 57\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_USTAT                   = 62\n\tSYS_DUP2                    = 63\n\tSYS_GETPPID                 = 64\n\tSYS_GETPGRP                 = 65\n\tSYS_SETSID                  = 66\n\tSYS_SIGACTION               = 67\n\tSYS_SIGSUSPEND              = 72\n\tSYS_SIGPENDING              = 73\n\tSYS_SETHOSTNAME             = 74\n\tSYS_SETRLIMIT               = 75\n\tSYS_GETRUSAGE               = 77\n\tSYS_GETTIMEOFDAY            = 78\n\tSYS_SETTIMEOFDAY            = 79\n\tSYS_SYMLINK                 = 83\n\tSYS_READLINK                = 85\n\tSYS_USELIB                  = 86\n\tSYS_SWAPON                  = 87\n\tSYS_REBOOT                  = 88\n\tSYS_READDIR                 = 89\n\tSYS_MMAP                    = 90\n\tSYS_MUNMAP                  = 91\n\tSYS_TRUNCATE                = 92\n\tSYS_FTRUNCATE               = 93\n\tSYS_FCHMOD                  = 94\n\tSYS_GETPRIORITY             = 96\n\tSYS_SETPRIORITY             = 97\n\tSYS_STATFS                  = 99\n\tSYS_FSTATFS                 = 100\n\tSYS_SOCKETCALL              = 102\n\tSYS_SYSLOG                  = 103\n\tSYS_SETITIMER               = 104\n\tSYS_GETITIMER               = 105\n\tSYS_STAT                    = 106\n\tSYS_LSTAT                   = 107\n\tSYS_FSTAT                   = 108\n\tSYS_LOOKUP_DCOOKIE          = 110\n\tSYS_VHANGUP                 = 111\n\tSYS_IDLE                    = 112\n\tSYS_WAIT4                   = 114\n\tSYS_SWAPOFF                 = 115\n\tSYS_SYSINFO                 = 116\n\tSYS_IPC                     = 117\n\tSYS_FSYNC                   = 118\n\tSYS_SIGRETURN               = 119\n\tSYS_CLONE                   = 120\n\tSYS_SETDOMAINNAME           = 121\n\tSYS_UNAME                   = 122\n\tSYS_ADJTIMEX                = 124\n\tSYS_MPROTECT                = 125\n\tSYS_SIGPROCMASK             = 126\n\tSYS_CREATE_MODULE           = 127\n\tSYS_INIT_MODULE             = 128\n\tSYS_DELETE_MODULE           = 129\n\tSYS_GET_KERNEL_SYMS         = 130\n\tSYS_QUOTACTL                = 131\n\tSYS_GETPGID                 = 132\n\tSYS_FCHDIR                  = 133\n\tSYS_BDFLUSH                 = 134\n\tSYS_SYSFS                   = 135\n\tSYS_PERSONALITY             = 136\n\tSYS_AFS_SYSCALL             = 137\n\tSYS_GETDENTS                = 141\n\tSYS_SELECT                  = 142\n\tSYS_FLOCK                   = 143\n\tSYS_MSYNC                   = 144\n\tSYS_READV                   = 145\n\tSYS_WRITEV                  = 146\n\tSYS_GETSID                  = 147\n\tSYS_FDATASYNC               = 148\n\tSYS__SYSCTL                 = 149\n\tSYS_MLOCK                   = 150\n\tSYS_MUNLOCK                 = 151\n\tSYS_MLOCKALL                = 152\n\tSYS_MUNLOCKALL              = 153\n\tSYS_SCHED_SETPARAM          = 154\n\tSYS_SCHED_GETPARAM          = 155\n\tSYS_SCHED_SETSCHEDULER      = 156\n\tSYS_SCHED_GETSCHEDULER      = 157\n\tSYS_SCHED_YIELD             = 158\n\tSYS_SCHED_GET_PRIORITY_MAX  = 159\n\tSYS_SCHED_GET_PRIORITY_MIN  = 160\n\tSYS_SCHED_RR_GET_INTERVAL   = 161\n\tSYS_NANOSLEEP               = 162\n\tSYS_MREMAP                  = 163\n\tSYS_QUERY_MODULE            = 167\n\tSYS_POLL                    = 168\n\tSYS_NFSSERVCTL              = 169\n\tSYS_PRCTL                   = 172\n\tSYS_RT_SIGRETURN            = 173\n\tSYS_RT_SIGACTION            = 174\n\tSYS_RT_SIGPROCMASK          = 175\n\tSYS_RT_SIGPENDING           = 176\n\tSYS_RT_SIGTIMEDWAIT         = 177\n\tSYS_RT_SIGQUEUEINFO         = 178\n\tSYS_RT_SIGSUSPEND           = 179\n\tSYS_PREAD64                 = 180\n\tSYS_PWRITE64                = 181\n\tSYS_GETCWD                  = 183\n\tSYS_CAPGET                  = 184\n\tSYS_CAPSET                  = 185\n\tSYS_SIGALTSTACK             = 186\n\tSYS_SENDFILE                = 187\n\tSYS_GETPMSG                 = 188\n\tSYS_PUTPMSG                 = 189\n\tSYS_VFORK                   = 190\n\tSYS_GETRLIMIT               = 191\n\tSYS_LCHOWN                  = 198\n\tSYS_GETUID                  = 199\n\tSYS_GETGID                  = 200\n\tSYS_GETEUID                 = 201\n\tSYS_GETEGID                 = 202\n\tSYS_SETREUID                = 203\n\tSYS_SETREGID                = 204\n\tSYS_GETGROUPS               = 205\n\tSYS_SETGROUPS               = 206\n\tSYS_FCHOWN                  = 207\n\tSYS_SETRESUID               = 208\n\tSYS_GETRESUID               = 209\n\tSYS_SETRESGID               = 210\n\tSYS_GETRESGID               = 211\n\tSYS_CHOWN                   = 212\n\tSYS_SETUID                  = 213\n\tSYS_SETGID                  = 214\n\tSYS_SETFSUID                = 215\n\tSYS_SETFSGID                = 216\n\tSYS_PIVOT_ROOT              = 217\n\tSYS_MINCORE                 = 218\n\tSYS_MADVISE                 = 219\n\tSYS_GETDENTS64              = 220\n\tSYS_READAHEAD               = 222\n\tSYS_SETXATTR                = 224\n\tSYS_LSETXATTR               = 225\n\tSYS_FSETXATTR               = 226\n\tSYS_GETXATTR                = 227\n\tSYS_LGETXATTR               = 228\n\tSYS_FGETXATTR               = 229\n\tSYS_LISTXATTR               = 230\n\tSYS_LLISTXATTR              = 231\n\tSYS_FLISTXATTR              = 232\n\tSYS_REMOVEXATTR             = 233\n\tSYS_LREMOVEXATTR            = 234\n\tSYS_FREMOVEXATTR            = 235\n\tSYS_GETTID                  = 236\n\tSYS_TKILL                   = 237\n\tSYS_FUTEX                   = 238\n\tSYS_SCHED_SETAFFINITY       = 239\n\tSYS_SCHED_GETAFFINITY       = 240\n\tSYS_TGKILL                  = 241\n\tSYS_IO_SETUP                = 243\n\tSYS_IO_DESTROY              = 244\n\tSYS_IO_GETEVENTS            = 245\n\tSYS_IO_SUBMIT               = 246\n\tSYS_IO_CANCEL               = 247\n\tSYS_EXIT_GROUP              = 248\n\tSYS_EPOLL_CREATE            = 249\n\tSYS_EPOLL_CTL               = 250\n\tSYS_EPOLL_WAIT              = 251\n\tSYS_SET_TID_ADDRESS         = 252\n\tSYS_FADVISE64               = 253\n\tSYS_TIMER_CREATE            = 254\n\tSYS_TIMER_SETTIME           = 255\n\tSYS_TIMER_GETTIME           = 256\n\tSYS_TIMER_GETOVERRUN        = 257\n\tSYS_TIMER_DELETE            = 258\n\tSYS_CLOCK_SETTIME           = 259\n\tSYS_CLOCK_GETTIME           = 260\n\tSYS_CLOCK_GETRES            = 261\n\tSYS_CLOCK_NANOSLEEP         = 262\n\tSYS_STATFS64                = 265\n\tSYS_FSTATFS64               = 266\n\tSYS_REMAP_FILE_PAGES        = 267\n\tSYS_MBIND                   = 268\n\tSYS_GET_MEMPOLICY           = 269\n\tSYS_SET_MEMPOLICY           = 270\n\tSYS_MQ_OPEN                 = 271\n\tSYS_MQ_UNLINK               = 272\n\tSYS_MQ_TIMEDSEND            = 273\n\tSYS_MQ_TIMEDRECEIVE         = 274\n\tSYS_MQ_NOTIFY               = 275\n\tSYS_MQ_GETSETATTR           = 276\n\tSYS_KEXEC_LOAD              = 277\n\tSYS_ADD_KEY                 = 278\n\tSYS_REQUEST_KEY             = 279\n\tSYS_KEYCTL                  = 280\n\tSYS_WAITID                  = 281\n\tSYS_IOPRIO_SET              = 282\n\tSYS_IOPRIO_GET              = 283\n\tSYS_INOTIFY_INIT            = 284\n\tSYS_INOTIFY_ADD_WATCH       = 285\n\tSYS_INOTIFY_RM_WATCH        = 286\n\tSYS_MIGRATE_PAGES           = 287\n\tSYS_OPENAT                  = 288\n\tSYS_MKDIRAT                 = 289\n\tSYS_MKNODAT                 = 290\n\tSYS_FCHOWNAT                = 291\n\tSYS_FUTIMESAT               = 292\n\tSYS_NEWFSTATAT              = 293\n\tSYS_UNLINKAT                = 294\n\tSYS_RENAMEAT                = 295\n\tSYS_LINKAT                  = 296\n\tSYS_SYMLINKAT               = 297\n\tSYS_READLINKAT              = 298\n\tSYS_FCHMODAT                = 299\n\tSYS_FACCESSAT               = 300\n\tSYS_PSELECT6                = 301\n\tSYS_PPOLL                   = 302\n\tSYS_UNSHARE                 = 303\n\tSYS_SET_ROBUST_LIST         = 304\n\tSYS_GET_ROBUST_LIST         = 305\n\tSYS_SPLICE                  = 306\n\tSYS_SYNC_FILE_RANGE         = 307\n\tSYS_TEE                     = 308\n\tSYS_VMSPLICE                = 309\n\tSYS_MOVE_PAGES              = 310\n\tSYS_GETCPU                  = 311\n\tSYS_EPOLL_PWAIT             = 312\n\tSYS_UTIMES                  = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_UTIMENSAT               = 315\n\tSYS_SIGNALFD                = 316\n\tSYS_TIMERFD                 = 317\n\tSYS_EVENTFD                 = 318\n\tSYS_TIMERFD_CREATE          = 319\n\tSYS_TIMERFD_SETTIME         = 320\n\tSYS_TIMERFD_GETTIME         = 321\n\tSYS_SIGNALFD4               = 322\n\tSYS_EVENTFD2                = 323\n\tSYS_INOTIFY_INIT1           = 324\n\tSYS_PIPE2                   = 325\n\tSYS_DUP3                    = 326\n\tSYS_EPOLL_CREATE1           = 327\n\tSYS_PREADV                  = 328\n\tSYS_PWRITEV                 = 329\n\tSYS_RT_TGSIGQUEUEINFO       = 330\n\tSYS_PERF_EVENT_OPEN         = 331\n\tSYS_FANOTIFY_INIT           = 332\n\tSYS_FANOTIFY_MARK           = 333\n\tSYS_PRLIMIT64               = 334\n\tSYS_NAME_TO_HANDLE_AT       = 335\n\tSYS_OPEN_BY_HANDLE_AT       = 336\n\tSYS_CLOCK_ADJTIME           = 337\n\tSYS_SYNCFS                  = 338\n\tSYS_SETNS                   = 339\n\tSYS_PROCESS_VM_READV        = 340\n\tSYS_PROCESS_VM_WRITEV       = 341\n\tSYS_S390_RUNTIME_INSTR      = 342\n\tSYS_KCMP                    = 343\n\tSYS_FINIT_MODULE            = 344\n\tSYS_SCHED_SETATTR           = 345\n\tSYS_SCHED_GETATTR           = 346\n\tSYS_RENAMEAT2               = 347\n\tSYS_SECCOMP                 = 348\n\tSYS_GETRANDOM               = 349\n\tSYS_MEMFD_CREATE            = 350\n\tSYS_BPF                     = 351\n\tSYS_S390_PCI_MMIO_WRITE     = 352\n\tSYS_S390_PCI_MMIO_READ      = 353\n\tSYS_EXECVEAT                = 354\n\tSYS_USERFAULTFD             = 355\n\tSYS_MEMBARRIER              = 356\n\tSYS_RECVMMSG                = 357\n\tSYS_SENDMMSG                = 358\n\tSYS_SOCKET                  = 359\n\tSYS_SOCKETPAIR              = 360\n\tSYS_BIND                    = 361\n\tSYS_CONNECT                 = 362\n\tSYS_LISTEN                  = 363\n\tSYS_ACCEPT4                 = 364\n\tSYS_GETSOCKOPT              = 365\n\tSYS_SETSOCKOPT              = 366\n\tSYS_GETSOCKNAME             = 367\n\tSYS_GETPEERNAME             = 368\n\tSYS_SENDTO                  = 369\n\tSYS_SENDMSG                 = 370\n\tSYS_RECVFROM                = 371\n\tSYS_RECVMSG                 = 372\n\tSYS_SHUTDOWN                = 373\n\tSYS_MLOCK2                  = 374\n\tSYS_COPY_FILE_RANGE         = 375\n\tSYS_PREADV2                 = 376\n\tSYS_PWRITEV2                = 377\n\tSYS_S390_GUARDED_STORAGE    = 378\n\tSYS_STATX                   = 379\n\tSYS_S390_STHYI              = 380\n\tSYS_KEXEC_FILE_LOAD         = 381\n\tSYS_IO_PGETEVENTS           = 382\n\tSYS_RSEQ                    = 383\n\tSYS_PKEY_MPROTECT           = 384\n\tSYS_PKEY_ALLOC              = 385\n\tSYS_PKEY_FREE               = 386\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLONE3                  = 435\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_MEMFD_SECRET            = 447\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_linux_sparc64.go",
    "content": "// go run linux/mksysnum.go -Wall -Werror -static -I/tmp/sparc64/include /tmp/sparc64/include/asm/unistd.h\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSYS_RESTART_SYSCALL         = 0\n\tSYS_EXIT                    = 1\n\tSYS_FORK                    = 2\n\tSYS_READ                    = 3\n\tSYS_WRITE                   = 4\n\tSYS_OPEN                    = 5\n\tSYS_CLOSE                   = 6\n\tSYS_WAIT4                   = 7\n\tSYS_CREAT                   = 8\n\tSYS_LINK                    = 9\n\tSYS_UNLINK                  = 10\n\tSYS_EXECV                   = 11\n\tSYS_CHDIR                   = 12\n\tSYS_CHOWN                   = 13\n\tSYS_MKNOD                   = 14\n\tSYS_CHMOD                   = 15\n\tSYS_LCHOWN                  = 16\n\tSYS_BRK                     = 17\n\tSYS_PERFCTR                 = 18\n\tSYS_LSEEK                   = 19\n\tSYS_GETPID                  = 20\n\tSYS_CAPGET                  = 21\n\tSYS_CAPSET                  = 22\n\tSYS_SETUID                  = 23\n\tSYS_GETUID                  = 24\n\tSYS_VMSPLICE                = 25\n\tSYS_PTRACE                  = 26\n\tSYS_ALARM                   = 27\n\tSYS_SIGALTSTACK             = 28\n\tSYS_PAUSE                   = 29\n\tSYS_UTIME                   = 30\n\tSYS_ACCESS                  = 33\n\tSYS_NICE                    = 34\n\tSYS_SYNC                    = 36\n\tSYS_KILL                    = 37\n\tSYS_STAT                    = 38\n\tSYS_SENDFILE                = 39\n\tSYS_LSTAT                   = 40\n\tSYS_DUP                     = 41\n\tSYS_PIPE                    = 42\n\tSYS_TIMES                   = 43\n\tSYS_UMOUNT2                 = 45\n\tSYS_SETGID                  = 46\n\tSYS_GETGID                  = 47\n\tSYS_SIGNAL                  = 48\n\tSYS_GETEUID                 = 49\n\tSYS_GETEGID                 = 50\n\tSYS_ACCT                    = 51\n\tSYS_MEMORY_ORDERING         = 52\n\tSYS_IOCTL                   = 54\n\tSYS_REBOOT                  = 55\n\tSYS_SYMLINK                 = 57\n\tSYS_READLINK                = 58\n\tSYS_EXECVE                  = 59\n\tSYS_UMASK                   = 60\n\tSYS_CHROOT                  = 61\n\tSYS_FSTAT                   = 62\n\tSYS_FSTAT64                 = 63\n\tSYS_GETPAGESIZE             = 64\n\tSYS_MSYNC                   = 65\n\tSYS_VFORK                   = 66\n\tSYS_PREAD64                 = 67\n\tSYS_PWRITE64                = 68\n\tSYS_MMAP                    = 71\n\tSYS_MUNMAP                  = 73\n\tSYS_MPROTECT                = 74\n\tSYS_MADVISE                 = 75\n\tSYS_VHANGUP                 = 76\n\tSYS_MINCORE                 = 78\n\tSYS_GETGROUPS               = 79\n\tSYS_SETGROUPS               = 80\n\tSYS_GETPGRP                 = 81\n\tSYS_SETITIMER               = 83\n\tSYS_SWAPON                  = 85\n\tSYS_GETITIMER               = 86\n\tSYS_SETHOSTNAME             = 88\n\tSYS_DUP2                    = 90\n\tSYS_FCNTL                   = 92\n\tSYS_SELECT                  = 93\n\tSYS_FSYNC                   = 95\n\tSYS_SETPRIORITY             = 96\n\tSYS_SOCKET                  = 97\n\tSYS_CONNECT                 = 98\n\tSYS_ACCEPT                  = 99\n\tSYS_GETPRIORITY             = 100\n\tSYS_RT_SIGRETURN            = 101\n\tSYS_RT_SIGACTION            = 102\n\tSYS_RT_SIGPROCMASK          = 103\n\tSYS_RT_SIGPENDING           = 104\n\tSYS_RT_SIGTIMEDWAIT         = 105\n\tSYS_RT_SIGQUEUEINFO         = 106\n\tSYS_RT_SIGSUSPEND           = 107\n\tSYS_SETRESUID               = 108\n\tSYS_GETRESUID               = 109\n\tSYS_SETRESGID               = 110\n\tSYS_GETRESGID               = 111\n\tSYS_RECVMSG                 = 113\n\tSYS_SENDMSG                 = 114\n\tSYS_GETTIMEOFDAY            = 116\n\tSYS_GETRUSAGE               = 117\n\tSYS_GETSOCKOPT              = 118\n\tSYS_GETCWD                  = 119\n\tSYS_READV                   = 120\n\tSYS_WRITEV                  = 121\n\tSYS_SETTIMEOFDAY            = 122\n\tSYS_FCHOWN                  = 123\n\tSYS_FCHMOD                  = 124\n\tSYS_RECVFROM                = 125\n\tSYS_SETREUID                = 126\n\tSYS_SETREGID                = 127\n\tSYS_RENAME                  = 128\n\tSYS_TRUNCATE                = 129\n\tSYS_FTRUNCATE               = 130\n\tSYS_FLOCK                   = 131\n\tSYS_LSTAT64                 = 132\n\tSYS_SENDTO                  = 133\n\tSYS_SHUTDOWN                = 134\n\tSYS_SOCKETPAIR              = 135\n\tSYS_MKDIR                   = 136\n\tSYS_RMDIR                   = 137\n\tSYS_UTIMES                  = 138\n\tSYS_STAT64                  = 139\n\tSYS_SENDFILE64              = 140\n\tSYS_GETPEERNAME             = 141\n\tSYS_FUTEX                   = 142\n\tSYS_GETTID                  = 143\n\tSYS_GETRLIMIT               = 144\n\tSYS_SETRLIMIT               = 145\n\tSYS_PIVOT_ROOT              = 146\n\tSYS_PRCTL                   = 147\n\tSYS_PCICONFIG_READ          = 148\n\tSYS_PCICONFIG_WRITE         = 149\n\tSYS_GETSOCKNAME             = 150\n\tSYS_INOTIFY_INIT            = 151\n\tSYS_INOTIFY_ADD_WATCH       = 152\n\tSYS_POLL                    = 153\n\tSYS_GETDENTS64              = 154\n\tSYS_INOTIFY_RM_WATCH        = 156\n\tSYS_STATFS                  = 157\n\tSYS_FSTATFS                 = 158\n\tSYS_UMOUNT                  = 159\n\tSYS_SCHED_SET_AFFINITY      = 160\n\tSYS_SCHED_GET_AFFINITY      = 161\n\tSYS_GETDOMAINNAME           = 162\n\tSYS_SETDOMAINNAME           = 163\n\tSYS_UTRAP_INSTALL           = 164\n\tSYS_QUOTACTL                = 165\n\tSYS_SET_TID_ADDRESS         = 166\n\tSYS_MOUNT                   = 167\n\tSYS_USTAT                   = 168\n\tSYS_SETXATTR                = 169\n\tSYS_LSETXATTR               = 170\n\tSYS_FSETXATTR               = 171\n\tSYS_GETXATTR                = 172\n\tSYS_LGETXATTR               = 173\n\tSYS_GETDENTS                = 174\n\tSYS_SETSID                  = 175\n\tSYS_FCHDIR                  = 176\n\tSYS_FGETXATTR               = 177\n\tSYS_LISTXATTR               = 178\n\tSYS_LLISTXATTR              = 179\n\tSYS_FLISTXATTR              = 180\n\tSYS_REMOVEXATTR             = 181\n\tSYS_LREMOVEXATTR            = 182\n\tSYS_SIGPENDING              = 183\n\tSYS_QUERY_MODULE            = 184\n\tSYS_SETPGID                 = 185\n\tSYS_FREMOVEXATTR            = 186\n\tSYS_TKILL                   = 187\n\tSYS_EXIT_GROUP              = 188\n\tSYS_UNAME                   = 189\n\tSYS_INIT_MODULE             = 190\n\tSYS_PERSONALITY             = 191\n\tSYS_REMAP_FILE_PAGES        = 192\n\tSYS_EPOLL_CREATE            = 193\n\tSYS_EPOLL_CTL               = 194\n\tSYS_EPOLL_WAIT              = 195\n\tSYS_IOPRIO_SET              = 196\n\tSYS_GETPPID                 = 197\n\tSYS_SIGACTION               = 198\n\tSYS_SGETMASK                = 199\n\tSYS_SSETMASK                = 200\n\tSYS_SIGSUSPEND              = 201\n\tSYS_OLDLSTAT                = 202\n\tSYS_USELIB                  = 203\n\tSYS_READDIR                 = 204\n\tSYS_READAHEAD               = 205\n\tSYS_SOCKETCALL              = 206\n\tSYS_SYSLOG                  = 207\n\tSYS_LOOKUP_DCOOKIE          = 208\n\tSYS_FADVISE64               = 209\n\tSYS_FADVISE64_64            = 210\n\tSYS_TGKILL                  = 211\n\tSYS_WAITPID                 = 212\n\tSYS_SWAPOFF                 = 213\n\tSYS_SYSINFO                 = 214\n\tSYS_IPC                     = 215\n\tSYS_SIGRETURN               = 216\n\tSYS_CLONE                   = 217\n\tSYS_IOPRIO_GET              = 218\n\tSYS_ADJTIMEX                = 219\n\tSYS_SIGPROCMASK             = 220\n\tSYS_CREATE_MODULE           = 221\n\tSYS_DELETE_MODULE           = 222\n\tSYS_GET_KERNEL_SYMS         = 223\n\tSYS_GETPGID                 = 224\n\tSYS_BDFLUSH                 = 225\n\tSYS_SYSFS                   = 226\n\tSYS_AFS_SYSCALL             = 227\n\tSYS_SETFSUID                = 228\n\tSYS_SETFSGID                = 229\n\tSYS__NEWSELECT              = 230\n\tSYS_SPLICE                  = 232\n\tSYS_STIME                   = 233\n\tSYS_STATFS64                = 234\n\tSYS_FSTATFS64               = 235\n\tSYS__LLSEEK                 = 236\n\tSYS_MLOCK                   = 237\n\tSYS_MUNLOCK                 = 238\n\tSYS_MLOCKALL                = 239\n\tSYS_MUNLOCKALL              = 240\n\tSYS_SCHED_SETPARAM          = 241\n\tSYS_SCHED_GETPARAM          = 242\n\tSYS_SCHED_SETSCHEDULER      = 243\n\tSYS_SCHED_GETSCHEDULER      = 244\n\tSYS_SCHED_YIELD             = 245\n\tSYS_SCHED_GET_PRIORITY_MAX  = 246\n\tSYS_SCHED_GET_PRIORITY_MIN  = 247\n\tSYS_SCHED_RR_GET_INTERVAL   = 248\n\tSYS_NANOSLEEP               = 249\n\tSYS_MREMAP                  = 250\n\tSYS__SYSCTL                 = 251\n\tSYS_GETSID                  = 252\n\tSYS_FDATASYNC               = 253\n\tSYS_NFSSERVCTL              = 254\n\tSYS_SYNC_FILE_RANGE         = 255\n\tSYS_CLOCK_SETTIME           = 256\n\tSYS_CLOCK_GETTIME           = 257\n\tSYS_CLOCK_GETRES            = 258\n\tSYS_CLOCK_NANOSLEEP         = 259\n\tSYS_SCHED_GETAFFINITY       = 260\n\tSYS_SCHED_SETAFFINITY       = 261\n\tSYS_TIMER_SETTIME           = 262\n\tSYS_TIMER_GETTIME           = 263\n\tSYS_TIMER_GETOVERRUN        = 264\n\tSYS_TIMER_DELETE            = 265\n\tSYS_TIMER_CREATE            = 266\n\tSYS_VSERVER                 = 267\n\tSYS_IO_SETUP                = 268\n\tSYS_IO_DESTROY              = 269\n\tSYS_IO_SUBMIT               = 270\n\tSYS_IO_CANCEL               = 271\n\tSYS_IO_GETEVENTS            = 272\n\tSYS_MQ_OPEN                 = 273\n\tSYS_MQ_UNLINK               = 274\n\tSYS_MQ_TIMEDSEND            = 275\n\tSYS_MQ_TIMEDRECEIVE         = 276\n\tSYS_MQ_NOTIFY               = 277\n\tSYS_MQ_GETSETATTR           = 278\n\tSYS_WAITID                  = 279\n\tSYS_TEE                     = 280\n\tSYS_ADD_KEY                 = 281\n\tSYS_REQUEST_KEY             = 282\n\tSYS_KEYCTL                  = 283\n\tSYS_OPENAT                  = 284\n\tSYS_MKDIRAT                 = 285\n\tSYS_MKNODAT                 = 286\n\tSYS_FCHOWNAT                = 287\n\tSYS_FUTIMESAT               = 288\n\tSYS_FSTATAT64               = 289\n\tSYS_UNLINKAT                = 290\n\tSYS_RENAMEAT                = 291\n\tSYS_LINKAT                  = 292\n\tSYS_SYMLINKAT               = 293\n\tSYS_READLINKAT              = 294\n\tSYS_FCHMODAT                = 295\n\tSYS_FACCESSAT               = 296\n\tSYS_PSELECT6                = 297\n\tSYS_PPOLL                   = 298\n\tSYS_UNSHARE                 = 299\n\tSYS_SET_ROBUST_LIST         = 300\n\tSYS_GET_ROBUST_LIST         = 301\n\tSYS_MIGRATE_PAGES           = 302\n\tSYS_MBIND                   = 303\n\tSYS_GET_MEMPOLICY           = 304\n\tSYS_SET_MEMPOLICY           = 305\n\tSYS_KEXEC_LOAD              = 306\n\tSYS_MOVE_PAGES              = 307\n\tSYS_GETCPU                  = 308\n\tSYS_EPOLL_PWAIT             = 309\n\tSYS_UTIMENSAT               = 310\n\tSYS_SIGNALFD                = 311\n\tSYS_TIMERFD_CREATE          = 312\n\tSYS_EVENTFD                 = 313\n\tSYS_FALLOCATE               = 314\n\tSYS_TIMERFD_SETTIME         = 315\n\tSYS_TIMERFD_GETTIME         = 316\n\tSYS_SIGNALFD4               = 317\n\tSYS_EVENTFD2                = 318\n\tSYS_EPOLL_CREATE1           = 319\n\tSYS_DUP3                    = 320\n\tSYS_PIPE2                   = 321\n\tSYS_INOTIFY_INIT1           = 322\n\tSYS_ACCEPT4                 = 323\n\tSYS_PREADV                  = 324\n\tSYS_PWRITEV                 = 325\n\tSYS_RT_TGSIGQUEUEINFO       = 326\n\tSYS_PERF_EVENT_OPEN         = 327\n\tSYS_RECVMMSG                = 328\n\tSYS_FANOTIFY_INIT           = 329\n\tSYS_FANOTIFY_MARK           = 330\n\tSYS_PRLIMIT64               = 331\n\tSYS_NAME_TO_HANDLE_AT       = 332\n\tSYS_OPEN_BY_HANDLE_AT       = 333\n\tSYS_CLOCK_ADJTIME           = 334\n\tSYS_SYNCFS                  = 335\n\tSYS_SENDMMSG                = 336\n\tSYS_SETNS                   = 337\n\tSYS_PROCESS_VM_READV        = 338\n\tSYS_PROCESS_VM_WRITEV       = 339\n\tSYS_KERN_FEATURES           = 340\n\tSYS_KCMP                    = 341\n\tSYS_FINIT_MODULE            = 342\n\tSYS_SCHED_SETATTR           = 343\n\tSYS_SCHED_GETATTR           = 344\n\tSYS_RENAMEAT2               = 345\n\tSYS_SECCOMP                 = 346\n\tSYS_GETRANDOM               = 347\n\tSYS_MEMFD_CREATE            = 348\n\tSYS_BPF                     = 349\n\tSYS_EXECVEAT                = 350\n\tSYS_MEMBARRIER              = 351\n\tSYS_USERFAULTFD             = 352\n\tSYS_BIND                    = 353\n\tSYS_LISTEN                  = 354\n\tSYS_SETSOCKOPT              = 355\n\tSYS_MLOCK2                  = 356\n\tSYS_COPY_FILE_RANGE         = 357\n\tSYS_PREADV2                 = 358\n\tSYS_PWRITEV2                = 359\n\tSYS_STATX                   = 360\n\tSYS_IO_PGETEVENTS           = 361\n\tSYS_PKEY_MPROTECT           = 362\n\tSYS_PKEY_ALLOC              = 363\n\tSYS_PKEY_FREE               = 364\n\tSYS_RSEQ                    = 365\n\tSYS_SEMTIMEDOP              = 392\n\tSYS_SEMGET                  = 393\n\tSYS_SEMCTL                  = 394\n\tSYS_SHMGET                  = 395\n\tSYS_SHMCTL                  = 396\n\tSYS_SHMAT                   = 397\n\tSYS_SHMDT                   = 398\n\tSYS_MSGGET                  = 399\n\tSYS_MSGSND                  = 400\n\tSYS_MSGRCV                  = 401\n\tSYS_MSGCTL                  = 402\n\tSYS_PIDFD_SEND_SIGNAL       = 424\n\tSYS_IO_URING_SETUP          = 425\n\tSYS_IO_URING_ENTER          = 426\n\tSYS_IO_URING_REGISTER       = 427\n\tSYS_OPEN_TREE               = 428\n\tSYS_MOVE_MOUNT              = 429\n\tSYS_FSOPEN                  = 430\n\tSYS_FSCONFIG                = 431\n\tSYS_FSMOUNT                 = 432\n\tSYS_FSPICK                  = 433\n\tSYS_PIDFD_OPEN              = 434\n\tSYS_CLOSE_RANGE             = 436\n\tSYS_OPENAT2                 = 437\n\tSYS_PIDFD_GETFD             = 438\n\tSYS_FACCESSAT2              = 439\n\tSYS_PROCESS_MADVISE         = 440\n\tSYS_EPOLL_PWAIT2            = 441\n\tSYS_MOUNT_SETATTR           = 442\n\tSYS_QUOTACTL_FD             = 443\n\tSYS_LANDLOCK_CREATE_RULESET = 444\n\tSYS_LANDLOCK_ADD_RULE       = 445\n\tSYS_LANDLOCK_RESTRICT_SELF  = 446\n\tSYS_PROCESS_MRELEASE        = 448\n\tSYS_FUTEX_WAITV             = 449\n\tSYS_SET_MEMPOLICY_HOME_NODE = 450\n\tSYS_CACHESTAT               = 451\n\tSYS_FCHMODAT2               = 452\n\tSYS_MAP_SHADOW_STACK        = 453\n\tSYS_FUTEX_WAKE              = 454\n\tSYS_FUTEX_WAIT              = 455\n\tSYS_FUTEX_REQUEUE           = 456\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_netbsd_386.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_netbsd_amd64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_netbsd_arm.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_netbsd_arm64.go",
    "content": "// go run mksysnum.go http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT                 = 1   // { void|sys||exit(int rval); }\n\tSYS_FORK                 = 2   // { int|sys||fork(void); }\n\tSYS_READ                 = 3   // { ssize_t|sys||read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE                = 4   // { ssize_t|sys||write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN                 = 5   // { int|sys||open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE                = 6   // { int|sys||close(int fd); }\n\tSYS_LINK                 = 9   // { int|sys||link(const char *path, const char *link); }\n\tSYS_UNLINK               = 10  // { int|sys||unlink(const char *path); }\n\tSYS_CHDIR                = 12  // { int|sys||chdir(const char *path); }\n\tSYS_FCHDIR               = 13  // { int|sys||fchdir(int fd); }\n\tSYS_CHMOD                = 15  // { int|sys||chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN                = 16  // { int|sys||chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_BREAK                = 17  // { int|sys||obreak(char *nsize); }\n\tSYS_GETPID               = 20  // { pid_t|sys||getpid_with_ppid(void); }\n\tSYS_UNMOUNT              = 22  // { int|sys||unmount(const char *path, int flags); }\n\tSYS_SETUID               = 23  // { int|sys||setuid(uid_t uid); }\n\tSYS_GETUID               = 24  // { uid_t|sys||getuid_with_euid(void); }\n\tSYS_GETEUID              = 25  // { uid_t|sys||geteuid(void); }\n\tSYS_PTRACE               = 26  // { int|sys||ptrace(int req, pid_t pid, void *addr, int data); }\n\tSYS_RECVMSG              = 27  // { ssize_t|sys||recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG              = 28  // { ssize_t|sys||sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM             = 29  // { ssize_t|sys||recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT               = 30  // { int|sys||accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME          = 31  // { int|sys||getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME          = 32  // { int|sys||getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS               = 33  // { int|sys||access(const char *path, int flags); }\n\tSYS_CHFLAGS              = 34  // { int|sys||chflags(const char *path, u_long flags); }\n\tSYS_FCHFLAGS             = 35  // { int|sys||fchflags(int fd, u_long flags); }\n\tSYS_SYNC                 = 36  // { void|sys||sync(void); }\n\tSYS_KILL                 = 37  // { int|sys||kill(pid_t pid, int signum); }\n\tSYS_GETPPID              = 39  // { pid_t|sys||getppid(void); }\n\tSYS_DUP                  = 41  // { int|sys||dup(int fd); }\n\tSYS_PIPE                 = 42  // { int|sys||pipe(void); }\n\tSYS_GETEGID              = 43  // { gid_t|sys||getegid(void); }\n\tSYS_PROFIL               = 44  // { int|sys||profil(char *samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE               = 45  // { int|sys||ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_GETGID               = 47  // { gid_t|sys||getgid_with_egid(void); }\n\tSYS___GETLOGIN           = 49  // { int|sys||__getlogin(char *namebuf, size_t namelen); }\n\tSYS___SETLOGIN           = 50  // { int|sys||__setlogin(const char *namebuf); }\n\tSYS_ACCT                 = 51  // { int|sys||acct(const char *path); }\n\tSYS_IOCTL                = 54  // { int|sys||ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REVOKE               = 56  // { int|sys||revoke(const char *path); }\n\tSYS_SYMLINK              = 57  // { int|sys||symlink(const char *path, const char *link); }\n\tSYS_READLINK             = 58  // { ssize_t|sys||readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE               = 59  // { int|sys||execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK                = 60  // { mode_t|sys||umask(mode_t newmask); }\n\tSYS_CHROOT               = 61  // { int|sys||chroot(const char *path); }\n\tSYS_VFORK                = 66  // { int|sys||vfork(void); }\n\tSYS_SBRK                 = 69  // { int|sys||sbrk(intptr_t incr); }\n\tSYS_SSTK                 = 70  // { int|sys||sstk(int incr); }\n\tSYS_VADVISE              = 72  // { int|sys||ovadvise(int anom); }\n\tSYS_MUNMAP               = 73  // { int|sys||munmap(void *addr, size_t len); }\n\tSYS_MPROTECT             = 74  // { int|sys||mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE              = 75  // { int|sys||madvise(void *addr, size_t len, int behav); }\n\tSYS_MINCORE              = 78  // { int|sys||mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS            = 79  // { int|sys||getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS            = 80  // { int|sys||setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP              = 81  // { int|sys||getpgrp(void); }\n\tSYS_SETPGID              = 82  // { int|sys||setpgid(pid_t pid, pid_t pgid); }\n\tSYS_DUP2                 = 90  // { int|sys||dup2(int from, int to); }\n\tSYS_FCNTL                = 92  // { int|sys||fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_FSYNC                = 95  // { int|sys||fsync(int fd); }\n\tSYS_SETPRIORITY          = 96  // { int|sys||setpriority(int which, id_t who, int prio); }\n\tSYS_CONNECT              = 98  // { int|sys||connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETPRIORITY          = 100 // { int|sys||getpriority(int which, id_t who); }\n\tSYS_BIND                 = 104 // { int|sys||bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT           = 105 // { int|sys||setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN               = 106 // { int|sys||listen(int s, int backlog); }\n\tSYS_GETSOCKOPT           = 118 // { int|sys||getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_READV                = 120 // { ssize_t|sys||readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV               = 121 // { ssize_t|sys||writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_FCHOWN               = 123 // { int|sys||fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD               = 124 // { int|sys||fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID             = 126 // { int|sys||setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID             = 127 // { int|sys||setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME               = 128 // { int|sys||rename(const char *from, const char *to); }\n\tSYS_FLOCK                = 131 // { int|sys||flock(int fd, int how); }\n\tSYS_MKFIFO               = 132 // { int|sys||mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO               = 133 // { ssize_t|sys||sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN             = 134 // { int|sys||shutdown(int s, int how); }\n\tSYS_SOCKETPAIR           = 135 // { int|sys||socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR                = 136 // { int|sys||mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR                = 137 // { int|sys||rmdir(const char *path); }\n\tSYS_SETSID               = 147 // { int|sys||setsid(void); }\n\tSYS_SYSARCH              = 165 // { int|sys||sysarch(int op, void *parms); }\n\tSYS_PREAD                = 173 // { ssize_t|sys||pread(int fd, void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_PWRITE               = 174 // { ssize_t|sys||pwrite(int fd, const void *buf, size_t nbyte, int PAD, off_t offset); }\n\tSYS_NTP_ADJTIME          = 176 // { int|sys||ntp_adjtime(struct timex *tp); }\n\tSYS_SETGID               = 181 // { int|sys||setgid(gid_t gid); }\n\tSYS_SETEGID              = 182 // { int|sys||setegid(gid_t egid); }\n\tSYS_SETEUID              = 183 // { int|sys||seteuid(uid_t euid); }\n\tSYS_PATHCONF             = 191 // { long|sys||pathconf(const char *path, int name); }\n\tSYS_FPATHCONF            = 192 // { long|sys||fpathconf(int fd, int name); }\n\tSYS_GETRLIMIT            = 194 // { int|sys||getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT            = 195 // { int|sys||setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP                 = 197 // { void *|sys||mmap(void *addr, size_t len, int prot, int flags, int fd, long PAD, off_t pos); }\n\tSYS_LSEEK                = 199 // { off_t|sys||lseek(int fd, int PAD, off_t offset, int whence); }\n\tSYS_TRUNCATE             = 200 // { int|sys||truncate(const char *path, int PAD, off_t length); }\n\tSYS_FTRUNCATE            = 201 // { int|sys||ftruncate(int fd, int PAD, off_t length); }\n\tSYS___SYSCTL             = 202 // { int|sys||__sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, const void *new, size_t newlen); }\n\tSYS_MLOCK                = 203 // { int|sys||mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK              = 204 // { int|sys||munlock(const void *addr, size_t len); }\n\tSYS_UNDELETE             = 205 // { int|sys||undelete(const char *path); }\n\tSYS_GETPGID              = 207 // { pid_t|sys||getpgid(pid_t pid); }\n\tSYS_REBOOT               = 208 // { int|sys||reboot(int opt, char *bootstr); }\n\tSYS_POLL                 = 209 // { int|sys||poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_SEMGET               = 221 // { int|sys||semget(key_t key, int nsems, int semflg); }\n\tSYS_SEMOP                = 222 // { int|sys||semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_SEMCONFIG            = 223 // { int|sys||semconfig(int flag); }\n\tSYS_MSGGET               = 225 // { int|sys||msgget(key_t key, int msgflg); }\n\tSYS_MSGSND               = 226 // { int|sys||msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV               = 227 // { ssize_t|sys||msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT                = 228 // { void *|sys||shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT                = 230 // { int|sys||shmdt(const void *shmaddr); }\n\tSYS_SHMGET               = 231 // { int|sys||shmget(key_t key, size_t size, int shmflg); }\n\tSYS_TIMER_CREATE         = 235 // { int|sys||timer_create(clockid_t clock_id, struct sigevent *evp, timer_t *timerid); }\n\tSYS_TIMER_DELETE         = 236 // { int|sys||timer_delete(timer_t timerid); }\n\tSYS_TIMER_GETOVERRUN     = 239 // { int|sys||timer_getoverrun(timer_t timerid); }\n\tSYS_FDATASYNC            = 241 // { int|sys||fdatasync(int fd); }\n\tSYS_MLOCKALL             = 242 // { int|sys||mlockall(int flags); }\n\tSYS_MUNLOCKALL           = 243 // { int|sys||munlockall(void); }\n\tSYS_SIGQUEUEINFO         = 245 // { int|sys||sigqueueinfo(pid_t pid, const siginfo_t *info); }\n\tSYS_MODCTL               = 246 // { int|sys||modctl(int cmd, void *arg); }\n\tSYS___POSIX_RENAME       = 270 // { int|sys||__posix_rename(const char *from, const char *to); }\n\tSYS_SWAPCTL              = 271 // { int|sys||swapctl(int cmd, void *arg, int misc); }\n\tSYS_MINHERIT             = 273 // { int|sys||minherit(void *addr, size_t len, int inherit); }\n\tSYS_LCHMOD               = 274 // { int|sys||lchmod(const char *path, mode_t mode); }\n\tSYS_LCHOWN               = 275 // { int|sys||lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_MSYNC                = 277 // { int|sys|13|msync(void *addr, size_t len, int flags); }\n\tSYS___POSIX_CHOWN        = 283 // { int|sys||__posix_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS___POSIX_FCHOWN       = 284 // { int|sys||__posix_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS___POSIX_LCHOWN       = 285 // { int|sys||__posix_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID               = 286 // { pid_t|sys||getsid(pid_t pid); }\n\tSYS___CLONE              = 287 // { pid_t|sys||__clone(int flags, void *stack); }\n\tSYS_FKTRACE              = 288 // { int|sys||fktrace(int fd, int ops, int facs, pid_t pid); }\n\tSYS_PREADV               = 289 // { ssize_t|sys||preadv(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS_PWRITEV              = 290 // { ssize_t|sys||pwritev(int fd, const struct iovec *iovp, int iovcnt, int PAD, off_t offset); }\n\tSYS___GETCWD             = 296 // { int|sys||__getcwd(char *bufp, size_t length); }\n\tSYS_FCHROOT              = 297 // { int|sys||fchroot(int fd); }\n\tSYS_LCHFLAGS             = 304 // { int|sys||lchflags(const char *path, u_long flags); }\n\tSYS_ISSETUGID            = 305 // { int|sys||issetugid(void); }\n\tSYS_UTRACE               = 306 // { int|sys||utrace(const char *label, void *addr, size_t len); }\n\tSYS_GETCONTEXT           = 307 // { int|sys||getcontext(struct __ucontext *ucp); }\n\tSYS_SETCONTEXT           = 308 // { int|sys||setcontext(const struct __ucontext *ucp); }\n\tSYS__LWP_CREATE          = 309 // { int|sys||_lwp_create(const struct __ucontext *ucp, u_long flags, lwpid_t *new_lwp); }\n\tSYS__LWP_EXIT            = 310 // { int|sys||_lwp_exit(void); }\n\tSYS__LWP_SELF            = 311 // { lwpid_t|sys||_lwp_self(void); }\n\tSYS__LWP_WAIT            = 312 // { int|sys||_lwp_wait(lwpid_t wait_for, lwpid_t *departed); }\n\tSYS__LWP_SUSPEND         = 313 // { int|sys||_lwp_suspend(lwpid_t target); }\n\tSYS__LWP_CONTINUE        = 314 // { int|sys||_lwp_continue(lwpid_t target); }\n\tSYS__LWP_WAKEUP          = 315 // { int|sys||_lwp_wakeup(lwpid_t target); }\n\tSYS__LWP_GETPRIVATE      = 316 // { void *|sys||_lwp_getprivate(void); }\n\tSYS__LWP_SETPRIVATE      = 317 // { void|sys||_lwp_setprivate(void *ptr); }\n\tSYS__LWP_KILL            = 318 // { int|sys||_lwp_kill(lwpid_t target, int signo); }\n\tSYS__LWP_DETACH          = 319 // { int|sys||_lwp_detach(lwpid_t target); }\n\tSYS__LWP_UNPARK          = 321 // { int|sys||_lwp_unpark(lwpid_t target, const void *hint); }\n\tSYS__LWP_UNPARK_ALL      = 322 // { ssize_t|sys||_lwp_unpark_all(const lwpid_t *targets, size_t ntargets, const void *hint); }\n\tSYS__LWP_SETNAME         = 323 // { int|sys||_lwp_setname(lwpid_t target, const char *name); }\n\tSYS__LWP_GETNAME         = 324 // { int|sys||_lwp_getname(lwpid_t target, char *name, size_t len); }\n\tSYS__LWP_CTL             = 325 // { int|sys||_lwp_ctl(int features, struct lwpctl **address); }\n\tSYS___SIGACTION_SIGTRAMP = 340 // { int|sys||__sigaction_sigtramp(int signum, const struct sigaction *nsa, struct sigaction *osa, const void *tramp, int vers); }\n\tSYS_PMC_GET_INFO         = 341 // { int|sys||pmc_get_info(int ctr, int op, void *args); }\n\tSYS_PMC_CONTROL          = 342 // { int|sys||pmc_control(int ctr, int op, void *args); }\n\tSYS_RASCTL               = 343 // { int|sys||rasctl(void *addr, size_t len, int op); }\n\tSYS_KQUEUE               = 344 // { int|sys||kqueue(void); }\n\tSYS__SCHED_SETPARAM      = 346 // { int|sys||_sched_setparam(pid_t pid, lwpid_t lid, int policy, const struct sched_param *params); }\n\tSYS__SCHED_GETPARAM      = 347 // { int|sys||_sched_getparam(pid_t pid, lwpid_t lid, int *policy, struct sched_param *params); }\n\tSYS__SCHED_SETAFFINITY   = 348 // { int|sys||_sched_setaffinity(pid_t pid, lwpid_t lid, size_t size, const cpuset_t *cpuset); }\n\tSYS__SCHED_GETAFFINITY   = 349 // { int|sys||_sched_getaffinity(pid_t pid, lwpid_t lid, size_t size, cpuset_t *cpuset); }\n\tSYS_SCHED_YIELD          = 350 // { int|sys||sched_yield(void); }\n\tSYS_FSYNC_RANGE          = 354 // { int|sys||fsync_range(int fd, int flags, off_t start, off_t length); }\n\tSYS_UUIDGEN              = 355 // { int|sys||uuidgen(struct uuid *store, int count); }\n\tSYS_GETVFSSTAT           = 356 // { int|sys||getvfsstat(struct statvfs *buf, size_t bufsize, int flags); }\n\tSYS_STATVFS1             = 357 // { int|sys||statvfs1(const char *path, struct statvfs *buf, int flags); }\n\tSYS_FSTATVFS1            = 358 // { int|sys||fstatvfs1(int fd, struct statvfs *buf, int flags); }\n\tSYS_EXTATTRCTL           = 360 // { int|sys||extattrctl(const char *path, int cmd, const char *filename, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FILE     = 361 // { int|sys||extattr_set_file(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FILE     = 362 // { ssize_t|sys||extattr_get_file(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FILE  = 363 // { int|sys||extattr_delete_file(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_FD       = 364 // { int|sys||extattr_set_fd(int fd, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_FD       = 365 // { ssize_t|sys||extattr_get_fd(int fd, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_FD    = 366 // { int|sys||extattr_delete_fd(int fd, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_SET_LINK     = 367 // { int|sys||extattr_set_link(const char *path, int attrnamespace, const char *attrname, const void *data, size_t nbytes); }\n\tSYS_EXTATTR_GET_LINK     = 368 // { ssize_t|sys||extattr_get_link(const char *path, int attrnamespace, const char *attrname, void *data, size_t nbytes); }\n\tSYS_EXTATTR_DELETE_LINK  = 369 // { int|sys||extattr_delete_link(const char *path, int attrnamespace, const char *attrname); }\n\tSYS_EXTATTR_LIST_FD      = 370 // { ssize_t|sys||extattr_list_fd(int fd, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_FILE    = 371 // { ssize_t|sys||extattr_list_file(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_EXTATTR_LIST_LINK    = 372 // { ssize_t|sys||extattr_list_link(const char *path, int attrnamespace, void *data, size_t nbytes); }\n\tSYS_SETXATTR             = 375 // { int|sys||setxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_LSETXATTR            = 376 // { int|sys||lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags); }\n\tSYS_FSETXATTR            = 377 // { int|sys||fsetxattr(int fd, const char *name, const void *value, size_t size, int flags); }\n\tSYS_GETXATTR             = 378 // { int|sys||getxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_LGETXATTR            = 379 // { int|sys||lgetxattr(const char *path, const char *name, void *value, size_t size); }\n\tSYS_FGETXATTR            = 380 // { int|sys||fgetxattr(int fd, const char *name, void *value, size_t size); }\n\tSYS_LISTXATTR            = 381 // { int|sys||listxattr(const char *path, char *list, size_t size); }\n\tSYS_LLISTXATTR           = 382 // { int|sys||llistxattr(const char *path, char *list, size_t size); }\n\tSYS_FLISTXATTR           = 383 // { int|sys||flistxattr(int fd, char *list, size_t size); }\n\tSYS_REMOVEXATTR          = 384 // { int|sys||removexattr(const char *path, const char *name); }\n\tSYS_LREMOVEXATTR         = 385 // { int|sys||lremovexattr(const char *path, const char *name); }\n\tSYS_FREMOVEXATTR         = 386 // { int|sys||fremovexattr(int fd, const char *name); }\n\tSYS_GETDENTS             = 390 // { int|sys|30|getdents(int fd, char *buf, size_t count); }\n\tSYS_SOCKET               = 394 // { int|sys|30|socket(int domain, int type, int protocol); }\n\tSYS_GETFH                = 395 // { int|sys|30|getfh(const char *fname, void *fhp, size_t *fh_size); }\n\tSYS_MOUNT                = 410 // { int|sys|50|mount(const char *type, const char *path, int flags, void *data, size_t data_len); }\n\tSYS_MREMAP               = 411 // { void *|sys||mremap(void *old_address, size_t old_size, void *new_address, size_t new_size, int flags); }\n\tSYS_PSET_CREATE          = 412 // { int|sys||pset_create(psetid_t *psid); }\n\tSYS_PSET_DESTROY         = 413 // { int|sys||pset_destroy(psetid_t psid); }\n\tSYS_PSET_ASSIGN          = 414 // { int|sys||pset_assign(psetid_t psid, cpuid_t cpuid, psetid_t *opsid); }\n\tSYS__PSET_BIND           = 415 // { int|sys||_pset_bind(idtype_t idtype, id_t first_id, id_t second_id, psetid_t psid, psetid_t *opsid); }\n\tSYS_POSIX_FADVISE        = 416 // { int|sys|50|posix_fadvise(int fd, int PAD, off_t offset, off_t len, int advice); }\n\tSYS_SELECT               = 417 // { int|sys|50|select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_GETTIMEOFDAY         = 418 // { int|sys|50|gettimeofday(struct timeval *tp, void *tzp); }\n\tSYS_SETTIMEOFDAY         = 419 // { int|sys|50|settimeofday(const struct timeval *tv, const void *tzp); }\n\tSYS_UTIMES               = 420 // { int|sys|50|utimes(const char *path, const struct timeval *tptr); }\n\tSYS_ADJTIME              = 421 // { int|sys|50|adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_FUTIMES              = 423 // { int|sys|50|futimes(int fd, const struct timeval *tptr); }\n\tSYS_LUTIMES              = 424 // { int|sys|50|lutimes(const char *path, const struct timeval *tptr); }\n\tSYS_SETITIMER            = 425 // { int|sys|50|setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER            = 426 // { int|sys|50|getitimer(int which, struct itimerval *itv); }\n\tSYS_CLOCK_GETTIME        = 427 // { int|sys|50|clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME        = 428 // { int|sys|50|clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES         = 429 // { int|sys|50|clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_NANOSLEEP            = 430 // { int|sys|50|nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS___SIGTIMEDWAIT       = 431 // { int|sys|50|__sigtimedwait(const sigset_t *set, siginfo_t *info, struct timespec *timeout); }\n\tSYS__LWP_PARK            = 434 // { int|sys|50|_lwp_park(const struct timespec *ts, lwpid_t unpark, const void *hint, const void *unparkhint); }\n\tSYS_KEVENT               = 435 // { int|sys|50|kevent(int fd, const struct kevent *changelist, size_t nchanges, struct kevent *eventlist, size_t nevents, const struct timespec *timeout); }\n\tSYS_PSELECT              = 436 // { int|sys|50|pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_POLLTS               = 437 // { int|sys|50|pollts(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_STAT                 = 439 // { int|sys|50|stat(const char *path, struct stat *ub); }\n\tSYS_FSTAT                = 440 // { int|sys|50|fstat(int fd, struct stat *sb); }\n\tSYS_LSTAT                = 441 // { int|sys|50|lstat(const char *path, struct stat *ub); }\n\tSYS___SEMCTL             = 442 // { int|sys|50|__semctl(int semid, int semnum, int cmd, ... union __semun *arg); }\n\tSYS_SHMCTL               = 443 // { int|sys|50|shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL               = 444 // { int|sys|50|msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_GETRUSAGE            = 445 // { int|sys|50|getrusage(int who, struct rusage *rusage); }\n\tSYS_TIMER_SETTIME        = 446 // { int|sys|50|timer_settime(timer_t timerid, int flags, const struct itimerspec *value, struct itimerspec *ovalue); }\n\tSYS_TIMER_GETTIME        = 447 // { int|sys|50|timer_gettime(timer_t timerid, struct itimerspec *value); }\n\tSYS_NTP_GETTIME          = 448 // { int|sys|50|ntp_gettime(struct ntptimeval *ntvp); }\n\tSYS_WAIT4                = 449 // { int|sys|50|wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_MKNOD                = 450 // { int|sys|50|mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_FHSTAT               = 451 // { int|sys|50|fhstat(const void *fhp, size_t fh_size, struct stat *sb); }\n\tSYS_PIPE2                = 453 // { int|sys||pipe2(int *fildes, int flags); }\n\tSYS_DUP3                 = 454 // { int|sys||dup3(int from, int to, int flags); }\n\tSYS_KQUEUE1              = 455 // { int|sys||kqueue1(int flags); }\n\tSYS_PACCEPT              = 456 // { int|sys||paccept(int s, struct sockaddr *name, socklen_t *anamelen, const sigset_t *mask, int flags); }\n\tSYS_LINKAT               = 457 // { int|sys||linkat(int fd1, const char *name1, int fd2, const char *name2, int flags); }\n\tSYS_RENAMEAT             = 458 // { int|sys||renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_MKFIFOAT             = 459 // { int|sys||mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT              = 460 // { int|sys||mknodat(int fd, const char *path, mode_t mode, uint32_t dev); }\n\tSYS_MKDIRAT              = 461 // { int|sys||mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_FACCESSAT            = 462 // { int|sys||faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT             = 463 // { int|sys||fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT             = 464 // { int|sys||fchownat(int fd, const char *path, uid_t owner, gid_t group, int flag); }\n\tSYS_FEXECVE              = 465 // { int|sys||fexecve(int fd, char * const *argp, char * const *envp); }\n\tSYS_FSTATAT              = 466 // { int|sys||fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_UTIMENSAT            = 467 // { int|sys||utimensat(int fd, const char *path, const struct timespec *tptr, int flag); }\n\tSYS_OPENAT               = 468 // { int|sys||openat(int fd, const char *path, int oflags, ... mode_t mode); }\n\tSYS_READLINKAT           = 469 // { int|sys||readlinkat(int fd, const char *path, char *buf, size_t bufsize); }\n\tSYS_SYMLINKAT            = 470 // { int|sys||symlinkat(const char *path1, int fd, const char *path2); }\n\tSYS_UNLINKAT             = 471 // { int|sys||unlinkat(int fd, const char *path, int flag); }\n\tSYS_FUTIMENS             = 472 // { int|sys||futimens(int fd, const struct timespec *tptr); }\n\tSYS___QUOTACTL           = 473 // { int|sys||__quotactl(const char *path, struct quotactl_args *args); }\n\tSYS_POSIX_SPAWN          = 474 // { int|sys||posix_spawn(pid_t *pid, const char *path, const struct posix_spawn_file_actions *file_actions, const struct posix_spawnattr *attrp, char *const *argv, char *const *envp); }\n\tSYS_RECVMMSG             = 475 // { int|sys||recvmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags, struct timespec *timeout); }\n\tSYS_SENDMMSG             = 476 // { int|sys||sendmmsg(int s, struct mmsghdr *mmsg, unsigned int vlen, unsigned int flags); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_386.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_amd64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_arm.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_MINCORE        = 78  // { int sys_mincore(void *addr, size_t len, char *vec); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_arm64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_mips64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_MSYSCALL       = 37  // { int sys_msyscall(void *addr, size_t len); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS___REALPATH     = 115 // { int sys___realpath(const char *pathname, char *resolved); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS___TMPFD        = 164 // { int sys___tmpfd(int flags); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_ppc64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_openbsd_riscv64.go",
    "content": "// go run mksysnum.go https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\n// Deprecated: Use libc wrappers instead of direct syscalls.\nconst (\n\tSYS_EXIT           = 1   // { void sys_exit(int rval); }\n\tSYS_FORK           = 2   // { int sys_fork(void); }\n\tSYS_READ           = 3   // { ssize_t sys_read(int fd, void *buf, size_t nbyte); }\n\tSYS_WRITE          = 4   // { ssize_t sys_write(int fd, const void *buf, size_t nbyte); }\n\tSYS_OPEN           = 5   // { int sys_open(const char *path, int flags, ... mode_t mode); }\n\tSYS_CLOSE          = 6   // { int sys_close(int fd); }\n\tSYS_GETENTROPY     = 7   // { int sys_getentropy(void *buf, size_t nbyte); }\n\tSYS___TFORK        = 8   // { int sys___tfork(const struct __tfork *param, size_t psize); }\n\tSYS_LINK           = 9   // { int sys_link(const char *path, const char *link); }\n\tSYS_UNLINK         = 10  // { int sys_unlink(const char *path); }\n\tSYS_WAIT4          = 11  // { pid_t sys_wait4(pid_t pid, int *status, int options, struct rusage *rusage); }\n\tSYS_CHDIR          = 12  // { int sys_chdir(const char *path); }\n\tSYS_FCHDIR         = 13  // { int sys_fchdir(int fd); }\n\tSYS_MKNOD          = 14  // { int sys_mknod(const char *path, mode_t mode, dev_t dev); }\n\tSYS_CHMOD          = 15  // { int sys_chmod(const char *path, mode_t mode); }\n\tSYS_CHOWN          = 16  // { int sys_chown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_OBREAK         = 17  // { int sys_obreak(char *nsize); } break\n\tSYS_GETDTABLECOUNT = 18  // { int sys_getdtablecount(void); }\n\tSYS_GETRUSAGE      = 19  // { int sys_getrusage(int who, struct rusage *rusage); }\n\tSYS_GETPID         = 20  // { pid_t sys_getpid(void); }\n\tSYS_MOUNT          = 21  // { int sys_mount(const char *type, const char *path, int flags, void *data); }\n\tSYS_UNMOUNT        = 22  // { int sys_unmount(const char *path, int flags); }\n\tSYS_SETUID         = 23  // { int sys_setuid(uid_t uid); }\n\tSYS_GETUID         = 24  // { uid_t sys_getuid(void); }\n\tSYS_GETEUID        = 25  // { uid_t sys_geteuid(void); }\n\tSYS_PTRACE         = 26  // { int sys_ptrace(int req, pid_t pid, caddr_t addr, int data); }\n\tSYS_RECVMSG        = 27  // { ssize_t sys_recvmsg(int s, struct msghdr *msg, int flags); }\n\tSYS_SENDMSG        = 28  // { ssize_t sys_sendmsg(int s, const struct msghdr *msg, int flags); }\n\tSYS_RECVFROM       = 29  // { ssize_t sys_recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlenaddr); }\n\tSYS_ACCEPT         = 30  // { int sys_accept(int s, struct sockaddr *name, socklen_t *anamelen); }\n\tSYS_GETPEERNAME    = 31  // { int sys_getpeername(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_GETSOCKNAME    = 32  // { int sys_getsockname(int fdes, struct sockaddr *asa, socklen_t *alen); }\n\tSYS_ACCESS         = 33  // { int sys_access(const char *path, int amode); }\n\tSYS_CHFLAGS        = 34  // { int sys_chflags(const char *path, u_int flags); }\n\tSYS_FCHFLAGS       = 35  // { int sys_fchflags(int fd, u_int flags); }\n\tSYS_SYNC           = 36  // { void sys_sync(void); }\n\tSYS_STAT           = 38  // { int sys_stat(const char *path, struct stat *ub); }\n\tSYS_GETPPID        = 39  // { pid_t sys_getppid(void); }\n\tSYS_LSTAT          = 40  // { int sys_lstat(const char *path, struct stat *ub); }\n\tSYS_DUP            = 41  // { int sys_dup(int fd); }\n\tSYS_FSTATAT        = 42  // { int sys_fstatat(int fd, const char *path, struct stat *buf, int flag); }\n\tSYS_GETEGID        = 43  // { gid_t sys_getegid(void); }\n\tSYS_PROFIL         = 44  // { int sys_profil(caddr_t samples, size_t size, u_long offset, u_int scale); }\n\tSYS_KTRACE         = 45  // { int sys_ktrace(const char *fname, int ops, int facs, pid_t pid); }\n\tSYS_SIGACTION      = 46  // { int sys_sigaction(int signum, const struct sigaction *nsa, struct sigaction *osa); }\n\tSYS_GETGID         = 47  // { gid_t sys_getgid(void); }\n\tSYS_SIGPROCMASK    = 48  // { int sys_sigprocmask(int how, sigset_t mask); }\n\tSYS_SETLOGIN       = 50  // { int sys_setlogin(const char *namebuf); }\n\tSYS_ACCT           = 51  // { int sys_acct(const char *path); }\n\tSYS_SIGPENDING     = 52  // { int sys_sigpending(void); }\n\tSYS_FSTAT          = 53  // { int sys_fstat(int fd, struct stat *sb); }\n\tSYS_IOCTL          = 54  // { int sys_ioctl(int fd, u_long com, ... void *data); }\n\tSYS_REBOOT         = 55  // { int sys_reboot(int opt); }\n\tSYS_REVOKE         = 56  // { int sys_revoke(const char *path); }\n\tSYS_SYMLINK        = 57  // { int sys_symlink(const char *path, const char *link); }\n\tSYS_READLINK       = 58  // { ssize_t sys_readlink(const char *path, char *buf, size_t count); }\n\tSYS_EXECVE         = 59  // { int sys_execve(const char *path, char * const *argp, char * const *envp); }\n\tSYS_UMASK          = 60  // { mode_t sys_umask(mode_t newmask); }\n\tSYS_CHROOT         = 61  // { int sys_chroot(const char *path); }\n\tSYS_GETFSSTAT      = 62  // { int sys_getfsstat(struct statfs *buf, size_t bufsize, int flags); }\n\tSYS_STATFS         = 63  // { int sys_statfs(const char *path, struct statfs *buf); }\n\tSYS_FSTATFS        = 64  // { int sys_fstatfs(int fd, struct statfs *buf); }\n\tSYS_FHSTATFS       = 65  // { int sys_fhstatfs(const fhandle_t *fhp, struct statfs *buf); }\n\tSYS_VFORK          = 66  // { int sys_vfork(void); }\n\tSYS_GETTIMEOFDAY   = 67  // { int sys_gettimeofday(struct timeval *tp, struct timezone *tzp); }\n\tSYS_SETTIMEOFDAY   = 68  // { int sys_settimeofday(const struct timeval *tv, const struct timezone *tzp); }\n\tSYS_SETITIMER      = 69  // { int sys_setitimer(int which, const struct itimerval *itv, struct itimerval *oitv); }\n\tSYS_GETITIMER      = 70  // { int sys_getitimer(int which, struct itimerval *itv); }\n\tSYS_SELECT         = 71  // { int sys_select(int nd, fd_set *in, fd_set *ou, fd_set *ex, struct timeval *tv); }\n\tSYS_KEVENT         = 72  // { int sys_kevent(int fd, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout); }\n\tSYS_MUNMAP         = 73  // { int sys_munmap(void *addr, size_t len); }\n\tSYS_MPROTECT       = 74  // { int sys_mprotect(void *addr, size_t len, int prot); }\n\tSYS_MADVISE        = 75  // { int sys_madvise(void *addr, size_t len, int behav); }\n\tSYS_UTIMES         = 76  // { int sys_utimes(const char *path, const struct timeval *tptr); }\n\tSYS_FUTIMES        = 77  // { int sys_futimes(int fd, const struct timeval *tptr); }\n\tSYS_GETGROUPS      = 79  // { int sys_getgroups(int gidsetsize, gid_t *gidset); }\n\tSYS_SETGROUPS      = 80  // { int sys_setgroups(int gidsetsize, const gid_t *gidset); }\n\tSYS_GETPGRP        = 81  // { int sys_getpgrp(void); }\n\tSYS_SETPGID        = 82  // { int sys_setpgid(pid_t pid, pid_t pgid); }\n\tSYS_FUTEX          = 83  // { int sys_futex(uint32_t *f, int op, int val, const struct timespec *timeout, uint32_t *g); }\n\tSYS_UTIMENSAT      = 84  // { int sys_utimensat(int fd, const char *path, const struct timespec *times, int flag); }\n\tSYS_FUTIMENS       = 85  // { int sys_futimens(int fd, const struct timespec *times); }\n\tSYS_KBIND          = 86  // { int sys_kbind(const struct __kbind *param, size_t psize, int64_t proc_cookie); }\n\tSYS_CLOCK_GETTIME  = 87  // { int sys_clock_gettime(clockid_t clock_id, struct timespec *tp); }\n\tSYS_CLOCK_SETTIME  = 88  // { int sys_clock_settime(clockid_t clock_id, const struct timespec *tp); }\n\tSYS_CLOCK_GETRES   = 89  // { int sys_clock_getres(clockid_t clock_id, struct timespec *tp); }\n\tSYS_DUP2           = 90  // { int sys_dup2(int from, int to); }\n\tSYS_NANOSLEEP      = 91  // { int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp); }\n\tSYS_FCNTL          = 92  // { int sys_fcntl(int fd, int cmd, ... void *arg); }\n\tSYS_ACCEPT4        = 93  // { int sys_accept4(int s, struct sockaddr *name, socklen_t *anamelen, int flags); }\n\tSYS___THRSLEEP     = 94  // { int sys___thrsleep(const volatile void *ident, clockid_t clock_id, const struct timespec *tp, void *lock, const int *abort); }\n\tSYS_FSYNC          = 95  // { int sys_fsync(int fd); }\n\tSYS_SETPRIORITY    = 96  // { int sys_setpriority(int which, id_t who, int prio); }\n\tSYS_SOCKET         = 97  // { int sys_socket(int domain, int type, int protocol); }\n\tSYS_CONNECT        = 98  // { int sys_connect(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_GETDENTS       = 99  // { int sys_getdents(int fd, void *buf, size_t buflen); }\n\tSYS_GETPRIORITY    = 100 // { int sys_getpriority(int which, id_t who); }\n\tSYS_PIPE2          = 101 // { int sys_pipe2(int *fdp, int flags); }\n\tSYS_DUP3           = 102 // { int sys_dup3(int from, int to, int flags); }\n\tSYS_SIGRETURN      = 103 // { int sys_sigreturn(struct sigcontext *sigcntxp); }\n\tSYS_BIND           = 104 // { int sys_bind(int s, const struct sockaddr *name, socklen_t namelen); }\n\tSYS_SETSOCKOPT     = 105 // { int sys_setsockopt(int s, int level, int name, const void *val, socklen_t valsize); }\n\tSYS_LISTEN         = 106 // { int sys_listen(int s, int backlog); }\n\tSYS_CHFLAGSAT      = 107 // { int sys_chflagsat(int fd, const char *path, u_int flags, int atflags); }\n\tSYS_PLEDGE         = 108 // { int sys_pledge(const char *promises, const char *execpromises); }\n\tSYS_PPOLL          = 109 // { int sys_ppoll(struct pollfd *fds, u_int nfds, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_PSELECT        = 110 // { int sys_pselect(int nd, fd_set *in, fd_set *ou, fd_set *ex, const struct timespec *ts, const sigset_t *mask); }\n\tSYS_SIGSUSPEND     = 111 // { int sys_sigsuspend(int mask); }\n\tSYS_SENDSYSLOG     = 112 // { int sys_sendsyslog(const char *buf, size_t nbyte, int flags); }\n\tSYS_UNVEIL         = 114 // { int sys_unveil(const char *path, const char *permissions); }\n\tSYS_GETSOCKOPT     = 118 // { int sys_getsockopt(int s, int level, int name, void *val, socklen_t *avalsize); }\n\tSYS_THRKILL        = 119 // { int sys_thrkill(pid_t tid, int signum, void *tcb); }\n\tSYS_READV          = 120 // { ssize_t sys_readv(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_WRITEV         = 121 // { ssize_t sys_writev(int fd, const struct iovec *iovp, int iovcnt); }\n\tSYS_KILL           = 122 // { int sys_kill(int pid, int signum); }\n\tSYS_FCHOWN         = 123 // { int sys_fchown(int fd, uid_t uid, gid_t gid); }\n\tSYS_FCHMOD         = 124 // { int sys_fchmod(int fd, mode_t mode); }\n\tSYS_SETREUID       = 126 // { int sys_setreuid(uid_t ruid, uid_t euid); }\n\tSYS_SETREGID       = 127 // { int sys_setregid(gid_t rgid, gid_t egid); }\n\tSYS_RENAME         = 128 // { int sys_rename(const char *from, const char *to); }\n\tSYS_FLOCK          = 131 // { int sys_flock(int fd, int how); }\n\tSYS_MKFIFO         = 132 // { int sys_mkfifo(const char *path, mode_t mode); }\n\tSYS_SENDTO         = 133 // { ssize_t sys_sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen); }\n\tSYS_SHUTDOWN       = 134 // { int sys_shutdown(int s, int how); }\n\tSYS_SOCKETPAIR     = 135 // { int sys_socketpair(int domain, int type, int protocol, int *rsv); }\n\tSYS_MKDIR          = 136 // { int sys_mkdir(const char *path, mode_t mode); }\n\tSYS_RMDIR          = 137 // { int sys_rmdir(const char *path); }\n\tSYS_ADJTIME        = 140 // { int sys_adjtime(const struct timeval *delta, struct timeval *olddelta); }\n\tSYS_GETLOGIN_R     = 141 // { int sys_getlogin_r(char *namebuf, u_int namelen); }\n\tSYS_SETSID         = 147 // { int sys_setsid(void); }\n\tSYS_QUOTACTL       = 148 // { int sys_quotactl(const char *path, int cmd, int uid, char *arg); }\n\tSYS_NFSSVC         = 155 // { int sys_nfssvc(int flag, void *argp); }\n\tSYS_GETFH          = 161 // { int sys_getfh(const char *fname, fhandle_t *fhp); }\n\tSYS_SYSARCH        = 165 // { int sys_sysarch(int op, void *parms); }\n\tSYS_PREAD          = 173 // { ssize_t sys_pread(int fd, void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_PWRITE         = 174 // { ssize_t sys_pwrite(int fd, const void *buf, size_t nbyte, int pad, off_t offset); }\n\tSYS_SETGID         = 181 // { int sys_setgid(gid_t gid); }\n\tSYS_SETEGID        = 182 // { int sys_setegid(gid_t egid); }\n\tSYS_SETEUID        = 183 // { int sys_seteuid(uid_t euid); }\n\tSYS_PATHCONF       = 191 // { long sys_pathconf(const char *path, int name); }\n\tSYS_FPATHCONF      = 192 // { long sys_fpathconf(int fd, int name); }\n\tSYS_SWAPCTL        = 193 // { int sys_swapctl(int cmd, const void *arg, int misc); }\n\tSYS_GETRLIMIT      = 194 // { int sys_getrlimit(int which, struct rlimit *rlp); }\n\tSYS_SETRLIMIT      = 195 // { int sys_setrlimit(int which, const struct rlimit *rlp); }\n\tSYS_MMAP           = 197 // { void *sys_mmap(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_LSEEK          = 199 // { off_t sys_lseek(int fd, int pad, off_t offset, int whence); }\n\tSYS_TRUNCATE       = 200 // { int sys_truncate(const char *path, int pad, off_t length); }\n\tSYS_FTRUNCATE      = 201 // { int sys_ftruncate(int fd, int pad, off_t length); }\n\tSYS_SYSCTL         = 202 // { int sys_sysctl(const int *name, u_int namelen, void *old, size_t *oldlenp, void *new, size_t newlen); }\n\tSYS_MLOCK          = 203 // { int sys_mlock(const void *addr, size_t len); }\n\tSYS_MUNLOCK        = 204 // { int sys_munlock(const void *addr, size_t len); }\n\tSYS_GETPGID        = 207 // { pid_t sys_getpgid(pid_t pid); }\n\tSYS_UTRACE         = 209 // { int sys_utrace(const char *label, const void *addr, size_t len); }\n\tSYS_SEMGET         = 221 // { int sys_semget(key_t key, int nsems, int semflg); }\n\tSYS_MSGGET         = 225 // { int sys_msgget(key_t key, int msgflg); }\n\tSYS_MSGSND         = 226 // { int sys_msgsnd(int msqid, const void *msgp, size_t msgsz, int msgflg); }\n\tSYS_MSGRCV         = 227 // { int sys_msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp, int msgflg); }\n\tSYS_SHMAT          = 228 // { void *sys_shmat(int shmid, const void *shmaddr, int shmflg); }\n\tSYS_SHMDT          = 230 // { int sys_shmdt(const void *shmaddr); }\n\tSYS_MINHERIT       = 250 // { int sys_minherit(void *addr, size_t len, int inherit); }\n\tSYS_POLL           = 252 // { int sys_poll(struct pollfd *fds, u_int nfds, int timeout); }\n\tSYS_ISSETUGID      = 253 // { int sys_issetugid(void); }\n\tSYS_LCHOWN         = 254 // { int sys_lchown(const char *path, uid_t uid, gid_t gid); }\n\tSYS_GETSID         = 255 // { pid_t sys_getsid(pid_t pid); }\n\tSYS_MSYNC          = 256 // { int sys_msync(void *addr, size_t len, int flags); }\n\tSYS_PIPE           = 263 // { int sys_pipe(int *fdp); }\n\tSYS_FHOPEN         = 264 // { int sys_fhopen(const fhandle_t *fhp, int flags); }\n\tSYS_PREADV         = 267 // { ssize_t sys_preadv(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_PWRITEV        = 268 // { ssize_t sys_pwritev(int fd, const struct iovec *iovp, int iovcnt, int pad, off_t offset); }\n\tSYS_KQUEUE         = 269 // { int sys_kqueue(void); }\n\tSYS_MLOCKALL       = 271 // { int sys_mlockall(int flags); }\n\tSYS_MUNLOCKALL     = 272 // { int sys_munlockall(void); }\n\tSYS_GETRESUID      = 281 // { int sys_getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); }\n\tSYS_SETRESUID      = 282 // { int sys_setresuid(uid_t ruid, uid_t euid, uid_t suid); }\n\tSYS_GETRESGID      = 283 // { int sys_getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); }\n\tSYS_SETRESGID      = 284 // { int sys_setresgid(gid_t rgid, gid_t egid, gid_t sgid); }\n\tSYS_MQUERY         = 286 // { void *sys_mquery(void *addr, size_t len, int prot, int flags, int fd, long pad, off_t pos); }\n\tSYS_CLOSEFROM      = 287 // { int sys_closefrom(int fd); }\n\tSYS_SIGALTSTACK    = 288 // { int sys_sigaltstack(const struct sigaltstack *nss, struct sigaltstack *oss); }\n\tSYS_SHMGET         = 289 // { int sys_shmget(key_t key, size_t size, int shmflg); }\n\tSYS_SEMOP          = 290 // { int sys_semop(int semid, struct sembuf *sops, size_t nsops); }\n\tSYS_FHSTAT         = 294 // { int sys_fhstat(const fhandle_t *fhp, struct stat *sb); }\n\tSYS___SEMCTL       = 295 // { int sys___semctl(int semid, int semnum, int cmd, union semun *arg); }\n\tSYS_SHMCTL         = 296 // { int sys_shmctl(int shmid, int cmd, struct shmid_ds *buf); }\n\tSYS_MSGCTL         = 297 // { int sys_msgctl(int msqid, int cmd, struct msqid_ds *buf); }\n\tSYS_SCHED_YIELD    = 298 // { int sys_sched_yield(void); }\n\tSYS_GETTHRID       = 299 // { pid_t sys_getthrid(void); }\n\tSYS___THRWAKEUP    = 301 // { int sys___thrwakeup(const volatile void *ident, int n); }\n\tSYS___THREXIT      = 302 // { void sys___threxit(pid_t *notdead); }\n\tSYS___THRSIGDIVERT = 303 // { int sys___thrsigdivert(sigset_t sigmask, siginfo_t *info, const struct timespec *timeout); }\n\tSYS___GETCWD       = 304 // { int sys___getcwd(char *buf, size_t len); }\n\tSYS_ADJFREQ        = 305 // { int sys_adjfreq(const int64_t *freq, int64_t *oldfreq); }\n\tSYS_SETRTABLE      = 310 // { int sys_setrtable(int rtableid); }\n\tSYS_GETRTABLE      = 311 // { int sys_getrtable(void); }\n\tSYS_FACCESSAT      = 313 // { int sys_faccessat(int fd, const char *path, int amode, int flag); }\n\tSYS_FCHMODAT       = 314 // { int sys_fchmodat(int fd, const char *path, mode_t mode, int flag); }\n\tSYS_FCHOWNAT       = 315 // { int sys_fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag); }\n\tSYS_LINKAT         = 317 // { int sys_linkat(int fd1, const char *path1, int fd2, const char *path2, int flag); }\n\tSYS_MKDIRAT        = 318 // { int sys_mkdirat(int fd, const char *path, mode_t mode); }\n\tSYS_MKFIFOAT       = 319 // { int sys_mkfifoat(int fd, const char *path, mode_t mode); }\n\tSYS_MKNODAT        = 320 // { int sys_mknodat(int fd, const char *path, mode_t mode, dev_t dev); }\n\tSYS_OPENAT         = 321 // { int sys_openat(int fd, const char *path, int flags, ... mode_t mode); }\n\tSYS_READLINKAT     = 322 // { ssize_t sys_readlinkat(int fd, const char *path, char *buf, size_t count); }\n\tSYS_RENAMEAT       = 323 // { int sys_renameat(int fromfd, const char *from, int tofd, const char *to); }\n\tSYS_SYMLINKAT      = 324 // { int sys_symlinkat(const char *path, int fd, const char *link); }\n\tSYS_UNLINKAT       = 325 // { int sys_unlinkat(int fd, const char *path, int flag); }\n\tSYS___SET_TCB      = 329 // { void sys___set_tcb(void *tcb); }\n\tSYS___GET_TCB      = 330 // { void *sys___get_tcb(void); }\n)\n"
  },
  {
    "path": "gossh/sys/unix/zsysnum_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\npackage unix\n\n// TODO: auto-generate.\n\nconst (\n\tSYS_ACOSD128                        = 0xB80\n\tSYS_ACOSD32                         = 0xB7E\n\tSYS_ACOSD64                         = 0xB7F\n\tSYS_ACOSHD128                       = 0xB83\n\tSYS_ACOSHD32                        = 0xB81\n\tSYS_ACOSHD64                        = 0xB82\n\tSYS_AIO_FSYNC                       = 0xC69\n\tSYS_ASCTIME                         = 0x0AE\n\tSYS_ASCTIME64                       = 0xCD7\n\tSYS_ASCTIME64_R                     = 0xCD8\n\tSYS_ASIND128                        = 0xB86\n\tSYS_ASIND32                         = 0xB84\n\tSYS_ASIND64                         = 0xB85\n\tSYS_ASINHD128                       = 0xB89\n\tSYS_ASINHD32                        = 0xB87\n\tSYS_ASINHD64                        = 0xB88\n\tSYS_ATAN2D128                       = 0xB8F\n\tSYS_ATAN2D32                        = 0xB8D\n\tSYS_ATAN2D64                        = 0xB8E\n\tSYS_ATAND128                        = 0xB8C\n\tSYS_ATAND32                         = 0xB8A\n\tSYS_ATAND64                         = 0xB8B\n\tSYS_ATANHD128                       = 0xB92\n\tSYS_ATANHD32                        = 0xB90\n\tSYS_ATANHD64                        = 0xB91\n\tSYS_BIND2ADDRSEL                    = 0xD59\n\tSYS_C16RTOMB                        = 0xD40\n\tSYS_C32RTOMB                        = 0xD41\n\tSYS_CBRTD128                        = 0xB95\n\tSYS_CBRTD32                         = 0xB93\n\tSYS_CBRTD64                         = 0xB94\n\tSYS_CEILD128                        = 0xB98\n\tSYS_CEILD32                         = 0xB96\n\tSYS_CEILD64                         = 0xB97\n\tSYS_CLEARENV                        = 0x0C9\n\tSYS_CLEARERR_UNLOCKED               = 0xCA1\n\tSYS_CLOCK                           = 0x0AA\n\tSYS_CLOGL                           = 0xA00\n\tSYS_CLRMEMF                         = 0x0BD\n\tSYS_CONJ                            = 0xA03\n\tSYS_CONJF                           = 0xA06\n\tSYS_CONJL                           = 0xA09\n\tSYS_COPYSIGND128                    = 0xB9E\n\tSYS_COPYSIGND32                     = 0xB9C\n\tSYS_COPYSIGND64                     = 0xB9D\n\tSYS_COSD128                         = 0xBA1\n\tSYS_COSD32                          = 0xB9F\n\tSYS_COSD64                          = 0xBA0\n\tSYS_COSHD128                        = 0xBA4\n\tSYS_COSHD32                         = 0xBA2\n\tSYS_COSHD64                         = 0xBA3\n\tSYS_CPOW                            = 0xA0C\n\tSYS_CPOWF                           = 0xA0F\n\tSYS_CPOWL                           = 0xA12\n\tSYS_CPROJ                           = 0xA15\n\tSYS_CPROJF                          = 0xA18\n\tSYS_CPROJL                          = 0xA1B\n\tSYS_CREAL                           = 0xA1E\n\tSYS_CREALF                          = 0xA21\n\tSYS_CREALL                          = 0xA24\n\tSYS_CSIN                            = 0xA27\n\tSYS_CSINF                           = 0xA2A\n\tSYS_CSINH                           = 0xA30\n\tSYS_CSINHF                          = 0xA33\n\tSYS_CSINHL                          = 0xA36\n\tSYS_CSINL                           = 0xA2D\n\tSYS_CSNAP                           = 0x0C5\n\tSYS_CSQRT                           = 0xA39\n\tSYS_CSQRTF                          = 0xA3C\n\tSYS_CSQRTL                          = 0xA3F\n\tSYS_CTAN                            = 0xA42\n\tSYS_CTANF                           = 0xA45\n\tSYS_CTANH                           = 0xA4B\n\tSYS_CTANHF                          = 0xA4E\n\tSYS_CTANHL                          = 0xA51\n\tSYS_CTANL                           = 0xA48\n\tSYS_CTIME                           = 0x0AB\n\tSYS_CTIME64                         = 0xCD9\n\tSYS_CTIME64_R                       = 0xCDA\n\tSYS_CTRACE                          = 0x0C6\n\tSYS_DIFFTIME                        = 0x0A7\n\tSYS_DIFFTIME64                      = 0xCDB\n\tSYS_DLADDR                          = 0xC82\n\tSYS_DYNALLOC                        = 0x0C3\n\tSYS_DYNFREE                         = 0x0C2\n\tSYS_ERFCD128                        = 0xBAA\n\tSYS_ERFCD32                         = 0xBA8\n\tSYS_ERFCD64                         = 0xBA9\n\tSYS_ERFD128                         = 0xBA7\n\tSYS_ERFD32                          = 0xBA5\n\tSYS_ERFD64                          = 0xBA6\n\tSYS_EXP2D128                        = 0xBB0\n\tSYS_EXP2D32                         = 0xBAE\n\tSYS_EXP2D64                         = 0xBAF\n\tSYS_EXPD128                         = 0xBAD\n\tSYS_EXPD32                          = 0xBAB\n\tSYS_EXPD64                          = 0xBAC\n\tSYS_EXPM1D128                       = 0xBB3\n\tSYS_EXPM1D32                        = 0xBB1\n\tSYS_EXPM1D64                        = 0xBB2\n\tSYS_FABSD128                        = 0xBB6\n\tSYS_FABSD32                         = 0xBB4\n\tSYS_FABSD64                         = 0xBB5\n\tSYS_FDELREC_UNLOCKED                = 0xCA2\n\tSYS_FDIMD128                        = 0xBB9\n\tSYS_FDIMD32                         = 0xBB7\n\tSYS_FDIMD64                         = 0xBB8\n\tSYS_FDOPEN_UNLOCKED                 = 0xCFC\n\tSYS_FECLEAREXCEPT                   = 0xAEA\n\tSYS_FEGETENV                        = 0xAEB\n\tSYS_FEGETEXCEPTFLAG                 = 0xAEC\n\tSYS_FEGETROUND                      = 0xAED\n\tSYS_FEHOLDEXCEPT                    = 0xAEE\n\tSYS_FEOF_UNLOCKED                   = 0xCA3\n\tSYS_FERAISEEXCEPT                   = 0xAEF\n\tSYS_FERROR_UNLOCKED                 = 0xCA4\n\tSYS_FESETENV                        = 0xAF0\n\tSYS_FESETEXCEPTFLAG                 = 0xAF1\n\tSYS_FESETROUND                      = 0xAF2\n\tSYS_FETCHEP                         = 0x0BF\n\tSYS_FETESTEXCEPT                    = 0xAF3\n\tSYS_FEUPDATEENV                     = 0xAF4\n\tSYS_FE_DEC_GETROUND                 = 0xBBA\n\tSYS_FE_DEC_SETROUND                 = 0xBBB\n\tSYS_FFLUSH_UNLOCKED                 = 0xCA5\n\tSYS_FGETC_UNLOCKED                  = 0xC80\n\tSYS_FGETPOS64                       = 0xCEE\n\tSYS_FGETPOS64_UNLOCKED              = 0xCF4\n\tSYS_FGETPOS_UNLOCKED                = 0xCA6\n\tSYS_FGETS_UNLOCKED                  = 0xC7C\n\tSYS_FGETWC_UNLOCKED                 = 0xCA7\n\tSYS_FGETWS_UNLOCKED                 = 0xCA8\n\tSYS_FILENO_UNLOCKED                 = 0xCA9\n\tSYS_FLDATA                          = 0x0C1\n\tSYS_FLDATA_UNLOCKED                 = 0xCAA\n\tSYS_FLOCATE_UNLOCKED                = 0xCAB\n\tSYS_FLOORD128                       = 0xBBE\n\tSYS_FLOORD32                        = 0xBBC\n\tSYS_FLOORD64                        = 0xBBD\n\tSYS_FMA                             = 0xA63\n\tSYS_FMAD128                         = 0xBC1\n\tSYS_FMAD32                          = 0xBBF\n\tSYS_FMAD64                          = 0xBC0\n\tSYS_FMAF                            = 0xA66\n\tSYS_FMAL                            = 0xA69\n\tSYS_FMAX                            = 0xA6C\n\tSYS_FMAXD128                        = 0xBC4\n\tSYS_FMAXD32                         = 0xBC2\n\tSYS_FMAXD64                         = 0xBC3\n\tSYS_FMAXF                           = 0xA6F\n\tSYS_FMAXL                           = 0xA72\n\tSYS_FMIN                            = 0xA75\n\tSYS_FMIND128                        = 0xBC7\n\tSYS_FMIND32                         = 0xBC5\n\tSYS_FMIND64                         = 0xBC6\n\tSYS_FMINF                           = 0xA78\n\tSYS_FMINL                           = 0xA7B\n\tSYS_FMODD128                        = 0xBCA\n\tSYS_FMODD32                         = 0xBC8\n\tSYS_FMODD64                         = 0xBC9\n\tSYS_FOPEN64                         = 0xD49\n\tSYS_FOPEN64_UNLOCKED                = 0xD4A\n\tSYS_FOPEN_UNLOCKED                  = 0xCFA\n\tSYS_FPRINTF_UNLOCKED                = 0xCAC\n\tSYS_FPUTC_UNLOCKED                  = 0xC81\n\tSYS_FPUTS_UNLOCKED                  = 0xC7E\n\tSYS_FPUTWC_UNLOCKED                 = 0xCAD\n\tSYS_FPUTWS_UNLOCKED                 = 0xCAE\n\tSYS_FREAD_NOUPDATE                  = 0xCEC\n\tSYS_FREAD_NOUPDATE_UNLOCKED         = 0xCED\n\tSYS_FREAD_UNLOCKED                  = 0xC7B\n\tSYS_FREEIFADDRS                     = 0xCE6\n\tSYS_FREOPEN64                       = 0xD4B\n\tSYS_FREOPEN64_UNLOCKED              = 0xD4C\n\tSYS_FREOPEN_UNLOCKED                = 0xCFB\n\tSYS_FREXPD128                       = 0xBCE\n\tSYS_FREXPD32                        = 0xBCC\n\tSYS_FREXPD64                        = 0xBCD\n\tSYS_FSCANF_UNLOCKED                 = 0xCAF\n\tSYS_FSEEK64                         = 0xCEF\n\tSYS_FSEEK64_UNLOCKED                = 0xCF5\n\tSYS_FSEEKO64                        = 0xCF0\n\tSYS_FSEEKO64_UNLOCKED               = 0xCF6\n\tSYS_FSEEKO_UNLOCKED                 = 0xCB1\n\tSYS_FSEEK_UNLOCKED                  = 0xCB0\n\tSYS_FSETPOS64                       = 0xCF1\n\tSYS_FSETPOS64_UNLOCKED              = 0xCF7\n\tSYS_FSETPOS_UNLOCKED                = 0xCB3\n\tSYS_FTELL64                         = 0xCF2\n\tSYS_FTELL64_UNLOCKED                = 0xCF8\n\tSYS_FTELLO64                        = 0xCF3\n\tSYS_FTELLO64_UNLOCKED               = 0xCF9\n\tSYS_FTELLO_UNLOCKED                 = 0xCB5\n\tSYS_FTELL_UNLOCKED                  = 0xCB4\n\tSYS_FUPDATE                         = 0x0B5\n\tSYS_FUPDATE_UNLOCKED                = 0xCB7\n\tSYS_FWIDE_UNLOCKED                  = 0xCB8\n\tSYS_FWPRINTF_UNLOCKED               = 0xCB9\n\tSYS_FWRITE_UNLOCKED                 = 0xC7A\n\tSYS_FWSCANF_UNLOCKED                = 0xCBA\n\tSYS_GETDATE64                       = 0xD4F\n\tSYS_GETIFADDRS                      = 0xCE7\n\tSYS_GETIPV4SOURCEFILTER             = 0xC77\n\tSYS_GETSOURCEFILTER                 = 0xC79\n\tSYS_GETSYNTX                        = 0x0FD\n\tSYS_GETS_UNLOCKED                   = 0xC7D\n\tSYS_GETTIMEOFDAY64                  = 0xD50\n\tSYS_GETWCHAR_UNLOCKED               = 0xCBC\n\tSYS_GETWC_UNLOCKED                  = 0xCBB\n\tSYS_GMTIME                          = 0x0B0\n\tSYS_GMTIME64                        = 0xCDC\n\tSYS_GMTIME64_R                      = 0xCDD\n\tSYS_HYPOTD128                       = 0xBD1\n\tSYS_HYPOTD32                        = 0xBCF\n\tSYS_HYPOTD64                        = 0xBD0\n\tSYS_ILOGBD128                       = 0xBD4\n\tSYS_ILOGBD32                        = 0xBD2\n\tSYS_ILOGBD64                        = 0xBD3\n\tSYS_ILOGBF                          = 0xA7E\n\tSYS_ILOGBL                          = 0xA81\n\tSYS_INET6_IS_SRCADDR                = 0xD5A\n\tSYS_ISBLANK                         = 0x0FE\n\tSYS_ISWALNUM                        = 0x0FF\n\tSYS_LDEXPD128                       = 0xBD7\n\tSYS_LDEXPD32                        = 0xBD5\n\tSYS_LDEXPD64                        = 0xBD6\n\tSYS_LGAMMAD128                      = 0xBDA\n\tSYS_LGAMMAD32                       = 0xBD8\n\tSYS_LGAMMAD64                       = 0xBD9\n\tSYS_LIO_LISTIO                      = 0xC6A\n\tSYS_LLRINT                          = 0xA84\n\tSYS_LLRINTD128                      = 0xBDD\n\tSYS_LLRINTD32                       = 0xBDB\n\tSYS_LLRINTD64                       = 0xBDC\n\tSYS_LLRINTF                         = 0xA87\n\tSYS_LLRINTL                         = 0xA8A\n\tSYS_LLROUND                         = 0xA8D\n\tSYS_LLROUNDD128                     = 0xBE0\n\tSYS_LLROUNDD32                      = 0xBDE\n\tSYS_LLROUNDD64                      = 0xBDF\n\tSYS_LLROUNDF                        = 0xA90\n\tSYS_LLROUNDL                        = 0xA93\n\tSYS_LOCALTIM                        = 0x0B1\n\tSYS_LOCALTIME                       = 0x0B1\n\tSYS_LOCALTIME64                     = 0xCDE\n\tSYS_LOCALTIME64_R                   = 0xCDF\n\tSYS_LOG10D128                       = 0xBE6\n\tSYS_LOG10D32                        = 0xBE4\n\tSYS_LOG10D64                        = 0xBE5\n\tSYS_LOG1PD128                       = 0xBE9\n\tSYS_LOG1PD32                        = 0xBE7\n\tSYS_LOG1PD64                        = 0xBE8\n\tSYS_LOG2D128                        = 0xBEC\n\tSYS_LOG2D32                         = 0xBEA\n\tSYS_LOG2D64                         = 0xBEB\n\tSYS_LOGBD128                        = 0xBEF\n\tSYS_LOGBD32                         = 0xBED\n\tSYS_LOGBD64                         = 0xBEE\n\tSYS_LOGBF                           = 0xA96\n\tSYS_LOGBL                           = 0xA99\n\tSYS_LOGD128                         = 0xBE3\n\tSYS_LOGD32                          = 0xBE1\n\tSYS_LOGD64                          = 0xBE2\n\tSYS_LRINT                           = 0xA9C\n\tSYS_LRINTD128                       = 0xBF2\n\tSYS_LRINTD32                        = 0xBF0\n\tSYS_LRINTD64                        = 0xBF1\n\tSYS_LRINTF                          = 0xA9F\n\tSYS_LRINTL                          = 0xAA2\n\tSYS_LROUNDD128                      = 0xBF5\n\tSYS_LROUNDD32                       = 0xBF3\n\tSYS_LROUNDD64                       = 0xBF4\n\tSYS_LROUNDL                         = 0xAA5\n\tSYS_MBLEN                           = 0x0AF\n\tSYS_MBRTOC16                        = 0xD42\n\tSYS_MBRTOC32                        = 0xD43\n\tSYS_MEMSET                          = 0x0A3\n\tSYS_MKTIME                          = 0x0AC\n\tSYS_MKTIME64                        = 0xCE0\n\tSYS_MODFD128                        = 0xBF8\n\tSYS_MODFD32                         = 0xBF6\n\tSYS_MODFD64                         = 0xBF7\n\tSYS_NAN                             = 0xAA8\n\tSYS_NAND128                         = 0xBFB\n\tSYS_NAND32                          = 0xBF9\n\tSYS_NAND64                          = 0xBFA\n\tSYS_NANF                            = 0xAAA\n\tSYS_NANL                            = 0xAAC\n\tSYS_NEARBYINT                       = 0xAAE\n\tSYS_NEARBYINTD128                   = 0xBFE\n\tSYS_NEARBYINTD32                    = 0xBFC\n\tSYS_NEARBYINTD64                    = 0xBFD\n\tSYS_NEARBYINTF                      = 0xAB1\n\tSYS_NEARBYINTL                      = 0xAB4\n\tSYS_NEXTAFTERD128                   = 0xC01\n\tSYS_NEXTAFTERD32                    = 0xBFF\n\tSYS_NEXTAFTERD64                    = 0xC00\n\tSYS_NEXTAFTERF                      = 0xAB7\n\tSYS_NEXTAFTERL                      = 0xABA\n\tSYS_NEXTTOWARD                      = 0xABD\n\tSYS_NEXTTOWARDD128                  = 0xC04\n\tSYS_NEXTTOWARDD32                   = 0xC02\n\tSYS_NEXTTOWARDD64                   = 0xC03\n\tSYS_NEXTTOWARDF                     = 0xAC0\n\tSYS_NEXTTOWARDL                     = 0xAC3\n\tSYS_NL_LANGINFO                     = 0x0FC\n\tSYS_PERROR_UNLOCKED                 = 0xCBD\n\tSYS_POSIX_FALLOCATE                 = 0xCE8\n\tSYS_POSIX_MEMALIGN                  = 0xCE9\n\tSYS_POSIX_OPENPT                    = 0xC66\n\tSYS_POWD128                         = 0xC07\n\tSYS_POWD32                          = 0xC05\n\tSYS_POWD64                          = 0xC06\n\tSYS_PRINTF_UNLOCKED                 = 0xCBE\n\tSYS_PSELECT                         = 0xC67\n\tSYS_PTHREAD_ATTR_GETSTACK           = 0xB3E\n\tSYS_PTHREAD_ATTR_SETSTACK           = 0xB3F\n\tSYS_PTHREAD_SECURITY_APPLID_NP      = 0xCE4\n\tSYS_PUTS_UNLOCKED                   = 0xC7F\n\tSYS_PUTWCHAR_UNLOCKED               = 0xCC0\n\tSYS_PUTWC_UNLOCKED                  = 0xCBF\n\tSYS_QUANTEXPD128                    = 0xD46\n\tSYS_QUANTEXPD32                     = 0xD44\n\tSYS_QUANTEXPD64                     = 0xD45\n\tSYS_QUANTIZED128                    = 0xC0A\n\tSYS_QUANTIZED32                     = 0xC08\n\tSYS_QUANTIZED64                     = 0xC09\n\tSYS_REMAINDERD128                   = 0xC0D\n\tSYS_REMAINDERD32                    = 0xC0B\n\tSYS_REMAINDERD64                    = 0xC0C\n\tSYS_RESIZE_ALLOC                    = 0xCEB\n\tSYS_REWIND_UNLOCKED                 = 0xCC1\n\tSYS_RINTD128                        = 0xC13\n\tSYS_RINTD32                         = 0xC11\n\tSYS_RINTD64                         = 0xC12\n\tSYS_RINTF                           = 0xACB\n\tSYS_RINTL                           = 0xACD\n\tSYS_ROUND                           = 0xACF\n\tSYS_ROUNDD128                       = 0xC16\n\tSYS_ROUNDD32                        = 0xC14\n\tSYS_ROUNDD64                        = 0xC15\n\tSYS_ROUNDF                          = 0xAD2\n\tSYS_ROUNDL                          = 0xAD5\n\tSYS_SAMEQUANTUMD128                 = 0xC19\n\tSYS_SAMEQUANTUMD32                  = 0xC17\n\tSYS_SAMEQUANTUMD64                  = 0xC18\n\tSYS_SCALBLN                         = 0xAD8\n\tSYS_SCALBLND128                     = 0xC1C\n\tSYS_SCALBLND32                      = 0xC1A\n\tSYS_SCALBLND64                      = 0xC1B\n\tSYS_SCALBLNF                        = 0xADB\n\tSYS_SCALBLNL                        = 0xADE\n\tSYS_SCALBND128                      = 0xC1F\n\tSYS_SCALBND32                       = 0xC1D\n\tSYS_SCALBND64                       = 0xC1E\n\tSYS_SCALBNF                         = 0xAE3\n\tSYS_SCALBNL                         = 0xAE6\n\tSYS_SCANF_UNLOCKED                  = 0xCC2\n\tSYS_SCHED_YIELD                     = 0xB32\n\tSYS_SETENV                          = 0x0C8\n\tSYS_SETIPV4SOURCEFILTER             = 0xC76\n\tSYS_SETSOURCEFILTER                 = 0xC78\n\tSYS_SHM_OPEN                        = 0xC8C\n\tSYS_SHM_UNLINK                      = 0xC8D\n\tSYS_SIND128                         = 0xC22\n\tSYS_SIND32                          = 0xC20\n\tSYS_SIND64                          = 0xC21\n\tSYS_SINHD128                        = 0xC25\n\tSYS_SINHD32                         = 0xC23\n\tSYS_SINHD64                         = 0xC24\n\tSYS_SIZEOF_ALLOC                    = 0xCEA\n\tSYS_SOCKATMARK                      = 0xC68\n\tSYS_SQRTD128                        = 0xC28\n\tSYS_SQRTD32                         = 0xC26\n\tSYS_SQRTD64                         = 0xC27\n\tSYS_STRCHR                          = 0x0A0\n\tSYS_STRCSPN                         = 0x0A1\n\tSYS_STRERROR                        = 0x0A8\n\tSYS_STRERROR_R                      = 0xB33\n\tSYS_STRFTIME                        = 0x0B2\n\tSYS_STRLEN                          = 0x0A9\n\tSYS_STRPBRK                         = 0x0A2\n\tSYS_STRSPN                          = 0x0A4\n\tSYS_STRSTR                          = 0x0A5\n\tSYS_STRTOD128                       = 0xC2B\n\tSYS_STRTOD32                        = 0xC29\n\tSYS_STRTOD64                        = 0xC2A\n\tSYS_STRTOK                          = 0x0A6\n\tSYS_TAND128                         = 0xC2E\n\tSYS_TAND32                          = 0xC2C\n\tSYS_TAND64                          = 0xC2D\n\tSYS_TANHD128                        = 0xC31\n\tSYS_TANHD32                         = 0xC2F\n\tSYS_TANHD64                         = 0xC30\n\tSYS_TGAMMAD128                      = 0xC34\n\tSYS_TGAMMAD32                       = 0xC32\n\tSYS_TGAMMAD64                       = 0xC33\n\tSYS_TIME                            = 0x0AD\n\tSYS_TIME64                          = 0xCE1\n\tSYS_TMPFILE64                       = 0xD4D\n\tSYS_TMPFILE64_UNLOCKED              = 0xD4E\n\tSYS_TMPFILE_UNLOCKED                = 0xCFD\n\tSYS_TRUNCD128                       = 0xC40\n\tSYS_TRUNCD32                        = 0xC3E\n\tSYS_TRUNCD64                        = 0xC3F\n\tSYS_UNGETC_UNLOCKED                 = 0xCC3\n\tSYS_UNGETWC_UNLOCKED                = 0xCC4\n\tSYS_UNSETENV                        = 0xB34\n\tSYS_VFPRINTF_UNLOCKED               = 0xCC5\n\tSYS_VFSCANF_UNLOCKED                = 0xCC7\n\tSYS_VFWPRINTF_UNLOCKED              = 0xCC9\n\tSYS_VFWSCANF_UNLOCKED               = 0xCCB\n\tSYS_VPRINTF_UNLOCKED                = 0xCCD\n\tSYS_VSCANF_UNLOCKED                 = 0xCCF\n\tSYS_VWPRINTF_UNLOCKED               = 0xCD1\n\tSYS_VWSCANF_UNLOCKED                = 0xCD3\n\tSYS_WCSTOD128                       = 0xC43\n\tSYS_WCSTOD32                        = 0xC41\n\tSYS_WCSTOD64                        = 0xC42\n\tSYS_WPRINTF_UNLOCKED                = 0xCD5\n\tSYS_WSCANF_UNLOCKED                 = 0xCD6\n\tSYS__FLUSHLBF                       = 0xD68\n\tSYS__FLUSHLBF_UNLOCKED              = 0xD6F\n\tSYS___ACOSHF_H                      = 0xA54\n\tSYS___ACOSHL_H                      = 0xA55\n\tSYS___ASINHF_H                      = 0xA56\n\tSYS___ASINHL_H                      = 0xA57\n\tSYS___ATANPID128                    = 0xC6D\n\tSYS___ATANPID32                     = 0xC6B\n\tSYS___ATANPID64                     = 0xC6C\n\tSYS___CBRTF_H                       = 0xA58\n\tSYS___CBRTL_H                       = 0xA59\n\tSYS___CDUMP                         = 0x0C4\n\tSYS___CLASS                         = 0xAFA\n\tSYS___CLASS2                        = 0xB99\n\tSYS___CLASS2D128                    = 0xC99\n\tSYS___CLASS2D32                     = 0xC97\n\tSYS___CLASS2D64                     = 0xC98\n\tSYS___CLASS2F                       = 0xC91\n\tSYS___CLASS2F_B                     = 0xC93\n\tSYS___CLASS2F_H                     = 0xC94\n\tSYS___CLASS2L                       = 0xC92\n\tSYS___CLASS2L_B                     = 0xC95\n\tSYS___CLASS2L_H                     = 0xC96\n\tSYS___CLASS2_B                      = 0xB9A\n\tSYS___CLASS2_H                      = 0xB9B\n\tSYS___CLASS_B                       = 0xAFB\n\tSYS___CLASS_H                       = 0xAFC\n\tSYS___CLOGL_B                       = 0xA01\n\tSYS___CLOGL_H                       = 0xA02\n\tSYS___CLRENV                        = 0x0C9\n\tSYS___CLRMF                         = 0x0BD\n\tSYS___CODEPAGE_INFO                 = 0xC64\n\tSYS___CONJF_B                       = 0xA07\n\tSYS___CONJF_H                       = 0xA08\n\tSYS___CONJL_B                       = 0xA0A\n\tSYS___CONJL_H                       = 0xA0B\n\tSYS___CONJ_B                        = 0xA04\n\tSYS___CONJ_H                        = 0xA05\n\tSYS___COPYSIGN_B                    = 0xA5A\n\tSYS___COPYSIGN_H                    = 0xAF5\n\tSYS___COSPID128                     = 0xC70\n\tSYS___COSPID32                      = 0xC6E\n\tSYS___COSPID64                      = 0xC6F\n\tSYS___CPOWF_B                       = 0xA10\n\tSYS___CPOWF_H                       = 0xA11\n\tSYS___CPOWL_B                       = 0xA13\n\tSYS___CPOWL_H                       = 0xA14\n\tSYS___CPOW_B                        = 0xA0D\n\tSYS___CPOW_H                        = 0xA0E\n\tSYS___CPROJF_B                      = 0xA19\n\tSYS___CPROJF_H                      = 0xA1A\n\tSYS___CPROJL_B                      = 0xA1C\n\tSYS___CPROJL_H                      = 0xA1D\n\tSYS___CPROJ_B                       = 0xA16\n\tSYS___CPROJ_H                       = 0xA17\n\tSYS___CREALF_B                      = 0xA22\n\tSYS___CREALF_H                      = 0xA23\n\tSYS___CREALL_B                      = 0xA25\n\tSYS___CREALL_H                      = 0xA26\n\tSYS___CREAL_B                       = 0xA1F\n\tSYS___CREAL_H                       = 0xA20\n\tSYS___CSINF_B                       = 0xA2B\n\tSYS___CSINF_H                       = 0xA2C\n\tSYS___CSINHF_B                      = 0xA34\n\tSYS___CSINHF_H                      = 0xA35\n\tSYS___CSINHL_B                      = 0xA37\n\tSYS___CSINHL_H                      = 0xA38\n\tSYS___CSINH_B                       = 0xA31\n\tSYS___CSINH_H                       = 0xA32\n\tSYS___CSINL_B                       = 0xA2E\n\tSYS___CSINL_H                       = 0xA2F\n\tSYS___CSIN_B                        = 0xA28\n\tSYS___CSIN_H                        = 0xA29\n\tSYS___CSNAP                         = 0x0C5\n\tSYS___CSQRTF_B                      = 0xA3D\n\tSYS___CSQRTF_H                      = 0xA3E\n\tSYS___CSQRTL_B                      = 0xA40\n\tSYS___CSQRTL_H                      = 0xA41\n\tSYS___CSQRT_B                       = 0xA3A\n\tSYS___CSQRT_H                       = 0xA3B\n\tSYS___CTANF_B                       = 0xA46\n\tSYS___CTANF_H                       = 0xA47\n\tSYS___CTANHF_B                      = 0xA4F\n\tSYS___CTANHF_H                      = 0xA50\n\tSYS___CTANHL_B                      = 0xA52\n\tSYS___CTANHL_H                      = 0xA53\n\tSYS___CTANH_B                       = 0xA4C\n\tSYS___CTANH_H                       = 0xA4D\n\tSYS___CTANL_B                       = 0xA49\n\tSYS___CTANL_H                       = 0xA4A\n\tSYS___CTAN_B                        = 0xA43\n\tSYS___CTAN_H                        = 0xA44\n\tSYS___CTEST                         = 0x0C7\n\tSYS___CTRACE                        = 0x0C6\n\tSYS___D1TOP                         = 0xC9B\n\tSYS___D2TOP                         = 0xC9C\n\tSYS___D4TOP                         = 0xC9D\n\tSYS___DYNALL                        = 0x0C3\n\tSYS___DYNFRE                        = 0x0C2\n\tSYS___EXP2F_H                       = 0xA5E\n\tSYS___EXP2L_H                       = 0xA5F\n\tSYS___EXP2_H                        = 0xA5D\n\tSYS___EXPM1F_H                      = 0xA5B\n\tSYS___EXPM1L_H                      = 0xA5C\n\tSYS___FBUFSIZE                      = 0xD60\n\tSYS___FLBF                          = 0xD62\n\tSYS___FLDATA                        = 0x0C1\n\tSYS___FMAF_B                        = 0xA67\n\tSYS___FMAF_H                        = 0xA68\n\tSYS___FMAL_B                        = 0xA6A\n\tSYS___FMAL_H                        = 0xA6B\n\tSYS___FMAXF_B                       = 0xA70\n\tSYS___FMAXF_H                       = 0xA71\n\tSYS___FMAXL_B                       = 0xA73\n\tSYS___FMAXL_H                       = 0xA74\n\tSYS___FMAX_B                        = 0xA6D\n\tSYS___FMAX_H                        = 0xA6E\n\tSYS___FMA_B                         = 0xA64\n\tSYS___FMA_H                         = 0xA65\n\tSYS___FMINF_B                       = 0xA79\n\tSYS___FMINF_H                       = 0xA7A\n\tSYS___FMINL_B                       = 0xA7C\n\tSYS___FMINL_H                       = 0xA7D\n\tSYS___FMIN_B                        = 0xA76\n\tSYS___FMIN_H                        = 0xA77\n\tSYS___FPENDING                      = 0xD61\n\tSYS___FPENDING_UNLOCKED             = 0xD6C\n\tSYS___FPURGE                        = 0xD69\n\tSYS___FPURGE_UNLOCKED               = 0xD70\n\tSYS___FP_CAST_D                     = 0xBCB\n\tSYS___FREADABLE                     = 0xD63\n\tSYS___FREADAHEAD                    = 0xD6A\n\tSYS___FREADAHEAD_UNLOCKED           = 0xD71\n\tSYS___FREADING                      = 0xD65\n\tSYS___FREADING_UNLOCKED             = 0xD6D\n\tSYS___FSEEK2                        = 0xB3C\n\tSYS___FSETERR                       = 0xD6B\n\tSYS___FSETLOCKING                   = 0xD67\n\tSYS___FTCHEP                        = 0x0BF\n\tSYS___FTELL2                        = 0xB3B\n\tSYS___FUPDT                         = 0x0B5\n\tSYS___FWRITABLE                     = 0xD64\n\tSYS___FWRITING                      = 0xD66\n\tSYS___FWRITING_UNLOCKED             = 0xD6E\n\tSYS___GETCB                         = 0x0B4\n\tSYS___GETGRGID1                     = 0xD5B\n\tSYS___GETGRNAM1                     = 0xD5C\n\tSYS___GETTHENT                      = 0xCE5\n\tSYS___GETTOD                        = 0xD3E\n\tSYS___HYPOTF_H                      = 0xAF6\n\tSYS___HYPOTL_H                      = 0xAF7\n\tSYS___ILOGBF_B                      = 0xA7F\n\tSYS___ILOGBF_H                      = 0xA80\n\tSYS___ILOGBL_B                      = 0xA82\n\tSYS___ILOGBL_H                      = 0xA83\n\tSYS___ISBLANK_A                     = 0xB2E\n\tSYS___ISBLNK                        = 0x0FE\n\tSYS___ISWBLANK_A                    = 0xB2F\n\tSYS___LE_CEEGTJS                    = 0xD72\n\tSYS___LE_TRACEBACK                  = 0xB7A\n\tSYS___LGAMMAL_H                     = 0xA62\n\tSYS___LGAMMA_B_C99                  = 0xB39\n\tSYS___LGAMMA_H_C99                  = 0xB38\n\tSYS___LGAMMA_R_C99                  = 0xB3A\n\tSYS___LLRINTF_B                     = 0xA88\n\tSYS___LLRINTF_H                     = 0xA89\n\tSYS___LLRINTL_B                     = 0xA8B\n\tSYS___LLRINTL_H                     = 0xA8C\n\tSYS___LLRINT_B                      = 0xA85\n\tSYS___LLRINT_H                      = 0xA86\n\tSYS___LLROUNDF_B                    = 0xA91\n\tSYS___LLROUNDF_H                    = 0xA92\n\tSYS___LLROUNDL_B                    = 0xA94\n\tSYS___LLROUNDL_H                    = 0xA95\n\tSYS___LLROUND_B                     = 0xA8E\n\tSYS___LLROUND_H                     = 0xA8F\n\tSYS___LOCALE_CTL                    = 0xD47\n\tSYS___LOG1PF_H                      = 0xA60\n\tSYS___LOG1PL_H                      = 0xA61\n\tSYS___LOGBF_B                       = 0xA97\n\tSYS___LOGBF_H                       = 0xA98\n\tSYS___LOGBL_B                       = 0xA9A\n\tSYS___LOGBL_H                       = 0xA9B\n\tSYS___LOGIN_APPLID                  = 0xCE2\n\tSYS___LRINTF_B                      = 0xAA0\n\tSYS___LRINTF_H                      = 0xAA1\n\tSYS___LRINTL_B                      = 0xAA3\n\tSYS___LRINTL_H                      = 0xAA4\n\tSYS___LRINT_B                       = 0xA9D\n\tSYS___LRINT_H                       = 0xA9E\n\tSYS___LROUNDF_FIXUP                 = 0xB31\n\tSYS___LROUNDL_B                     = 0xAA6\n\tSYS___LROUNDL_H                     = 0xAA7\n\tSYS___LROUND_FIXUP                  = 0xB30\n\tSYS___MOSERVICES                    = 0xD3D\n\tSYS___MUST_STAY_CLEAN               = 0xB7C\n\tSYS___NANF_B                        = 0xAAB\n\tSYS___NANL_B                        = 0xAAD\n\tSYS___NAN_B                         = 0xAA9\n\tSYS___NEARBYINTF_B                  = 0xAB2\n\tSYS___NEARBYINTF_H                  = 0xAB3\n\tSYS___NEARBYINTL_B                  = 0xAB5\n\tSYS___NEARBYINTL_H                  = 0xAB6\n\tSYS___NEARBYINT_B                   = 0xAAF\n\tSYS___NEARBYINT_H                   = 0xAB0\n\tSYS___NEXTAFTERF_B                  = 0xAB8\n\tSYS___NEXTAFTERF_H                  = 0xAB9\n\tSYS___NEXTAFTERL_B                  = 0xABB\n\tSYS___NEXTAFTERL_H                  = 0xABC\n\tSYS___NEXTTOWARDF_B                 = 0xAC1\n\tSYS___NEXTTOWARDF_H                 = 0xAC2\n\tSYS___NEXTTOWARDL_B                 = 0xAC4\n\tSYS___NEXTTOWARDL_H                 = 0xAC5\n\tSYS___NEXTTOWARD_B                  = 0xABE\n\tSYS___NEXTTOWARD_H                  = 0xABF\n\tSYS___O_ENV                         = 0xB7D\n\tSYS___PASSWD_APPLID                 = 0xCE3\n\tSYS___PTOD1                         = 0xC9E\n\tSYS___PTOD2                         = 0xC9F\n\tSYS___PTOD4                         = 0xCA0\n\tSYS___REGCOMP_STD                   = 0x0EA\n\tSYS___REMAINDERF_H                  = 0xAC6\n\tSYS___REMAINDERL_H                  = 0xAC7\n\tSYS___REMQUOD128                    = 0xC10\n\tSYS___REMQUOD32                     = 0xC0E\n\tSYS___REMQUOD64                     = 0xC0F\n\tSYS___REMQUOF_H                     = 0xAC9\n\tSYS___REMQUOL_H                     = 0xACA\n\tSYS___REMQUO_H                      = 0xAC8\n\tSYS___RINTF_B                       = 0xACC\n\tSYS___RINTL_B                       = 0xACE\n\tSYS___ROUNDF_B                      = 0xAD3\n\tSYS___ROUNDF_H                      = 0xAD4\n\tSYS___ROUNDL_B                      = 0xAD6\n\tSYS___ROUNDL_H                      = 0xAD7\n\tSYS___ROUND_B                       = 0xAD0\n\tSYS___ROUND_H                       = 0xAD1\n\tSYS___SCALBLNF_B                    = 0xADC\n\tSYS___SCALBLNF_H                    = 0xADD\n\tSYS___SCALBLNL_B                    = 0xADF\n\tSYS___SCALBLNL_H                    = 0xAE0\n\tSYS___SCALBLN_B                     = 0xAD9\n\tSYS___SCALBLN_H                     = 0xADA\n\tSYS___SCALBNF_B                     = 0xAE4\n\tSYS___SCALBNF_H                     = 0xAE5\n\tSYS___SCALBNL_B                     = 0xAE7\n\tSYS___SCALBNL_H                     = 0xAE8\n\tSYS___SCALBN_B                      = 0xAE1\n\tSYS___SCALBN_H                      = 0xAE2\n\tSYS___SETENV                        = 0x0C8\n\tSYS___SINPID128                     = 0xC73\n\tSYS___SINPID32                      = 0xC71\n\tSYS___SINPID64                      = 0xC72\n\tSYS___SMF_RECORD2                   = 0xD48\n\tSYS___STATIC_REINIT                 = 0xB3D\n\tSYS___TGAMMAF_H_C99                 = 0xB79\n\tSYS___TGAMMAL_H                     = 0xAE9\n\tSYS___TGAMMA_H_C99                  = 0xB78\n\tSYS___TOCSNAME2                     = 0xC9A\n\tSYS_CEIL                            = 0x01F\n\tSYS_CHAUDIT                         = 0x1E0\n\tSYS_EXP                             = 0x01A\n\tSYS_FCHAUDIT                        = 0x1E1\n\tSYS_FREXP                           = 0x01D\n\tSYS_GETGROUPSBYNAME                 = 0x1E2\n\tSYS_GETPWUID                        = 0x1A0\n\tSYS_GETUID                          = 0x1A1\n\tSYS_ISATTY                          = 0x1A3\n\tSYS_KILL                            = 0x1A4\n\tSYS_LDEXP                           = 0x01E\n\tSYS_LINK                            = 0x1A5\n\tSYS_LOG10                           = 0x01C\n\tSYS_LSEEK                           = 0x1A6\n\tSYS_LSTAT                           = 0x1A7\n\tSYS_MKDIR                           = 0x1A8\n\tSYS_MKFIFO                          = 0x1A9\n\tSYS_MKNOD                           = 0x1AA\n\tSYS_MODF                            = 0x01B\n\tSYS_MOUNT                           = 0x1AB\n\tSYS_OPEN                            = 0x1AC\n\tSYS_OPENDIR                         = 0x1AD\n\tSYS_PATHCONF                        = 0x1AE\n\tSYS_PAUSE                           = 0x1AF\n\tSYS_PIPE                            = 0x1B0\n\tSYS_PTHREAD_ATTR_DESTROY            = 0x1E7\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE     = 0x1EB\n\tSYS_PTHREAD_ATTR_GETSTACKSIZE       = 0x1E9\n\tSYS_PTHREAD_ATTR_GETWEIGHT_NP       = 0x1ED\n\tSYS_PTHREAD_ATTR_INIT               = 0x1E6\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE     = 0x1EA\n\tSYS_PTHREAD_ATTR_SETSTACKSIZE       = 0x1E8\n\tSYS_PTHREAD_ATTR_SETWEIGHT_NP       = 0x1EC\n\tSYS_PTHREAD_CANCEL                  = 0x1EE\n\tSYS_PTHREAD_CLEANUP_POP             = 0x1F0\n\tSYS_PTHREAD_CLEANUP_PUSH            = 0x1EF\n\tSYS_PTHREAD_CONDATTR_DESTROY        = 0x1F2\n\tSYS_PTHREAD_CONDATTR_INIT           = 0x1F1\n\tSYS_PTHREAD_COND_BROADCAST          = 0x1F6\n\tSYS_PTHREAD_COND_DESTROY            = 0x1F4\n\tSYS_PTHREAD_COND_INIT               = 0x1F3\n\tSYS_PTHREAD_COND_SIGNAL             = 0x1F5\n\tSYS_PTHREAD_COND_TIMEDWAIT          = 0x1F8\n\tSYS_PTHREAD_COND_WAIT               = 0x1F7\n\tSYS_PTHREAD_CREATE                  = 0x1F9\n\tSYS_PTHREAD_DETACH                  = 0x1FA\n\tSYS_PTHREAD_EQUAL                   = 0x1FB\n\tSYS_PTHREAD_EXIT                    = 0x1E4\n\tSYS_PTHREAD_GETSPECIFIC             = 0x1FC\n\tSYS_PTHREAD_JOIN                    = 0x1FD\n\tSYS_PTHREAD_KEY_CREATE              = 0x1FE\n\tSYS_PTHREAD_KILL                    = 0x1E5\n\tSYS_PTHREAD_MUTEXATTR_INIT          = 0x1FF\n\tSYS_READ                            = 0x1B2\n\tSYS_READDIR                         = 0x1B3\n\tSYS_READLINK                        = 0x1B4\n\tSYS_REWINDDIR                       = 0x1B5\n\tSYS_RMDIR                           = 0x1B6\n\tSYS_SETEGID                         = 0x1B7\n\tSYS_SETEUID                         = 0x1B8\n\tSYS_SETGID                          = 0x1B9\n\tSYS_SETPGID                         = 0x1BA\n\tSYS_SETSID                          = 0x1BB\n\tSYS_SETUID                          = 0x1BC\n\tSYS_SIGACTION                       = 0x1BD\n\tSYS_SIGADDSET                       = 0x1BE\n\tSYS_SIGDELSET                       = 0x1BF\n\tSYS_SIGEMPTYSET                     = 0x1C0\n\tSYS_SIGFILLSET                      = 0x1C1\n\tSYS_SIGISMEMBER                     = 0x1C2\n\tSYS_SIGLONGJMP                      = 0x1C3\n\tSYS_SIGPENDING                      = 0x1C4\n\tSYS_SIGPROCMASK                     = 0x1C5\n\tSYS_SIGSETJMP                       = 0x1C6\n\tSYS_SIGSUSPEND                      = 0x1C7\n\tSYS_SIGWAIT                         = 0x1E3\n\tSYS_SLEEP                           = 0x1C8\n\tSYS_STAT                            = 0x1C9\n\tSYS_SYMLINK                         = 0x1CB\n\tSYS_SYSCONF                         = 0x1CC\n\tSYS_TCDRAIN                         = 0x1CD\n\tSYS_TCFLOW                          = 0x1CE\n\tSYS_TCFLUSH                         = 0x1CF\n\tSYS_TCGETATTR                       = 0x1D0\n\tSYS_TCGETPGRP                       = 0x1D1\n\tSYS_TCSENDBREAK                     = 0x1D2\n\tSYS_TCSETATTR                       = 0x1D3\n\tSYS_TCSETPGRP                       = 0x1D4\n\tSYS_TIMES                           = 0x1D5\n\tSYS_TTYNAME                         = 0x1D6\n\tSYS_TZSET                           = 0x1D7\n\tSYS_UMASK                           = 0x1D8\n\tSYS_UMOUNT                          = 0x1D9\n\tSYS_UNAME                           = 0x1DA\n\tSYS_UNLINK                          = 0x1DB\n\tSYS_UTIME                           = 0x1DC\n\tSYS_WAIT                            = 0x1DD\n\tSYS_WAITPID                         = 0x1DE\n\tSYS_WRITE                           = 0x1DF\n\tSYS_W_GETPSENT                      = 0x1B1\n\tSYS_W_IOCTL                         = 0x1A2\n\tSYS_W_STATFS                        = 0x1CA\n\tSYS_A64L                            = 0x2EF\n\tSYS_BCMP                            = 0x2B9\n\tSYS_BCOPY                           = 0x2BA\n\tSYS_BZERO                           = 0x2BB\n\tSYS_CATCLOSE                        = 0x2B6\n\tSYS_CATGETS                         = 0x2B7\n\tSYS_CATOPEN                         = 0x2B8\n\tSYS_CRYPT                           = 0x2AC\n\tSYS_DBM_CLEARERR                    = 0x2F7\n\tSYS_DBM_CLOSE                       = 0x2F8\n\tSYS_DBM_DELETE                      = 0x2F9\n\tSYS_DBM_ERROR                       = 0x2FA\n\tSYS_DBM_FETCH                       = 0x2FB\n\tSYS_DBM_FIRSTKEY                    = 0x2FC\n\tSYS_DBM_NEXTKEY                     = 0x2FD\n\tSYS_DBM_OPEN                        = 0x2FE\n\tSYS_DBM_STORE                       = 0x2FF\n\tSYS_DRAND48                         = 0x2B2\n\tSYS_ENCRYPT                         = 0x2AD\n\tSYS_ENDUTXENT                       = 0x2E1\n\tSYS_ERAND48                         = 0x2B3\n\tSYS_ERF                             = 0x02C\n\tSYS_ERFC                            = 0x02D\n\tSYS_FCHDIR                          = 0x2D9\n\tSYS_FFS                             = 0x2BC\n\tSYS_FMTMSG                          = 0x2E5\n\tSYS_FSTATVFS                        = 0x2B4\n\tSYS_FTIME                           = 0x2F5\n\tSYS_GAMMA                           = 0x02E\n\tSYS_GETDATE                         = 0x2A6\n\tSYS_GETPAGESIZE                     = 0x2D8\n\tSYS_GETTIMEOFDAY                    = 0x2F6\n\tSYS_GETUTXENT                       = 0x2E0\n\tSYS_GETUTXID                        = 0x2E2\n\tSYS_GETUTXLINE                      = 0x2E3\n\tSYS_HCREATE                         = 0x2C6\n\tSYS_HDESTROY                        = 0x2C7\n\tSYS_HSEARCH                         = 0x2C8\n\tSYS_HYPOT                           = 0x02B\n\tSYS_INDEX                           = 0x2BD\n\tSYS_INITSTATE                       = 0x2C2\n\tSYS_INSQUE                          = 0x2CF\n\tSYS_ISASCII                         = 0x2ED\n\tSYS_JRAND48                         = 0x2E6\n\tSYS_L64A                            = 0x2F0\n\tSYS_LCONG48                         = 0x2EA\n\tSYS_LFIND                           = 0x2C9\n\tSYS_LRAND48                         = 0x2E7\n\tSYS_LSEARCH                         = 0x2CA\n\tSYS_MEMCCPY                         = 0x2D4\n\tSYS_MRAND48                         = 0x2E8\n\tSYS_NRAND48                         = 0x2E9\n\tSYS_PCLOSE                          = 0x2D2\n\tSYS_POPEN                           = 0x2D1\n\tSYS_PUTUTXLINE                      = 0x2E4\n\tSYS_RANDOM                          = 0x2C4\n\tSYS_REMQUE                          = 0x2D0\n\tSYS_RINDEX                          = 0x2BE\n\tSYS_SEED48                          = 0x2EC\n\tSYS_SETKEY                          = 0x2AE\n\tSYS_SETSTATE                        = 0x2C3\n\tSYS_SETUTXENT                       = 0x2DF\n\tSYS_SRAND48                         = 0x2EB\n\tSYS_SRANDOM                         = 0x2C5\n\tSYS_STATVFS                         = 0x2B5\n\tSYS_STRCASECMP                      = 0x2BF\n\tSYS_STRDUP                          = 0x2C0\n\tSYS_STRNCASECMP                     = 0x2C1\n\tSYS_SWAB                            = 0x2D3\n\tSYS_TDELETE                         = 0x2CB\n\tSYS_TFIND                           = 0x2CC\n\tSYS_TOASCII                         = 0x2EE\n\tSYS_TSEARCH                         = 0x2CD\n\tSYS_TWALK                           = 0x2CE\n\tSYS_UALARM                          = 0x2F1\n\tSYS_USLEEP                          = 0x2F2\n\tSYS_WAIT3                           = 0x2A7\n\tSYS_WAITID                          = 0x2A8\n\tSYS_Y1                              = 0x02A\n\tSYS___ATOE                          = 0x2DB\n\tSYS___ATOE_L                        = 0x2DC\n\tSYS___CATTRM                        = 0x2A9\n\tSYS___CNVBLK                        = 0x2AF\n\tSYS___CRYTRM                        = 0x2B0\n\tSYS___DLGHT                         = 0x2A1\n\tSYS___ECRTRM                        = 0x2B1\n\tSYS___ETOA                          = 0x2DD\n\tSYS___ETOA_L                        = 0x2DE\n\tSYS___GDTRM                         = 0x2AA\n\tSYS___OCLCK                         = 0x2DA\n\tSYS___OPARGF                        = 0x2A2\n\tSYS___OPERRF                        = 0x2A5\n\tSYS___OPINDF                        = 0x2A4\n\tSYS___OPOPTF                        = 0x2A3\n\tSYS___RNDTRM                        = 0x2AB\n\tSYS___SRCTRM                        = 0x2F4\n\tSYS___TZONE                         = 0x2A0\n\tSYS___UTXTRM                        = 0x2F3\n\tSYS_ASIN                            = 0x03E\n\tSYS_ISXDIGIT                        = 0x03B\n\tSYS_SETLOCAL                        = 0x03A\n\tSYS_SETLOCALE                       = 0x03A\n\tSYS_SIN                             = 0x03F\n\tSYS_TOLOWER                         = 0x03C\n\tSYS_TOUPPER                         = 0x03D\n\tSYS_ACCEPT_AND_RECV                 = 0x4F7\n\tSYS_ATOL                            = 0x04E\n\tSYS_CHECKSCH                        = 0x4BC\n\tSYS_CHECKSCHENV                     = 0x4BC\n\tSYS_CLEARERR                        = 0x04C\n\tSYS_CONNECTS                        = 0x4B5\n\tSYS_CONNECTSERVER                   = 0x4B5\n\tSYS_CONNECTW                        = 0x4B4\n\tSYS_CONNECTWORKMGR                  = 0x4B4\n\tSYS_CONTINUE                        = 0x4B3\n\tSYS_CONTINUEWORKUNIT                = 0x4B3\n\tSYS_COPYSIGN                        = 0x4C2\n\tSYS_CREATEWO                        = 0x4B2\n\tSYS_CREATEWORKUNIT                  = 0x4B2\n\tSYS_DELETEWO                        = 0x4B9\n\tSYS_DELETEWORKUNIT                  = 0x4B9\n\tSYS_DISCONNE                        = 0x4B6\n\tSYS_DISCONNECTSERVER                = 0x4B6\n\tSYS_FEOF                            = 0x04D\n\tSYS_FERROR                          = 0x04A\n\tSYS_FINITE                          = 0x4C8\n\tSYS_GAMMA_R                         = 0x4E2\n\tSYS_JOINWORK                        = 0x4B7\n\tSYS_JOINWORKUNIT                    = 0x4B7\n\tSYS_LEAVEWOR                        = 0x4B8\n\tSYS_LEAVEWORKUNIT                   = 0x4B8\n\tSYS_LGAMMA_R                        = 0x4EB\n\tSYS_MATHERR                         = 0x4D0\n\tSYS_PERROR                          = 0x04F\n\tSYS_QUERYMET                        = 0x4BA\n\tSYS_QUERYMETRICS                    = 0x4BA\n\tSYS_QUERYSCH                        = 0x4BB\n\tSYS_QUERYSCHENV                     = 0x4BB\n\tSYS_REWIND                          = 0x04B\n\tSYS_SCALBN                          = 0x4D4\n\tSYS_SIGNIFIC                        = 0x4D5\n\tSYS_SIGNIFICAND                     = 0x4D5\n\tSYS___ACOSH_B                       = 0x4DA\n\tSYS___ACOS_B                        = 0x4D9\n\tSYS___ASINH_B                       = 0x4BE\n\tSYS___ASIN_B                        = 0x4DB\n\tSYS___ATAN2_B                       = 0x4DC\n\tSYS___ATANH_B                       = 0x4DD\n\tSYS___ATAN_B                        = 0x4BF\n\tSYS___CBRT_B                        = 0x4C0\n\tSYS___CEIL_B                        = 0x4C1\n\tSYS___COSH_B                        = 0x4DE\n\tSYS___COS_B                         = 0x4C3\n\tSYS___DGHT                          = 0x4A8\n\tSYS___ENVN                          = 0x4B0\n\tSYS___ERFC_B                        = 0x4C5\n\tSYS___ERF_B                         = 0x4C4\n\tSYS___EXPM1_B                       = 0x4C6\n\tSYS___EXP_B                         = 0x4DF\n\tSYS___FABS_B                        = 0x4C7\n\tSYS___FLOOR_B                       = 0x4C9\n\tSYS___FMOD_B                        = 0x4E0\n\tSYS___FP_SETMODE                    = 0x4F8\n\tSYS___FREXP_B                       = 0x4CA\n\tSYS___GAMMA_B                       = 0x4E1\n\tSYS___GDRR                          = 0x4A1\n\tSYS___HRRNO                         = 0x4A2\n\tSYS___HYPOT_B                       = 0x4E3\n\tSYS___ILOGB_B                       = 0x4CB\n\tSYS___ISNAN_B                       = 0x4CC\n\tSYS___J0_B                          = 0x4E4\n\tSYS___J1_B                          = 0x4E6\n\tSYS___JN_B                          = 0x4E8\n\tSYS___LDEXP_B                       = 0x4CD\n\tSYS___LGAMMA_B                      = 0x4EA\n\tSYS___LOG10_B                       = 0x4ED\n\tSYS___LOG1P_B                       = 0x4CE\n\tSYS___LOGB_B                        = 0x4CF\n\tSYS___LOGIN                         = 0x4F5\n\tSYS___LOG_B                         = 0x4EC\n\tSYS___MLOCKALL                      = 0x4B1\n\tSYS___MODF_B                        = 0x4D1\n\tSYS___NEXTAFTER_B                   = 0x4D2\n\tSYS___OPENDIR2                      = 0x4F3\n\tSYS___OPEN_STAT                     = 0x4F6\n\tSYS___OPND                          = 0x4A5\n\tSYS___OPPT                          = 0x4A6\n\tSYS___OPRG                          = 0x4A3\n\tSYS___OPRR                          = 0x4A4\n\tSYS___PID_AFFINITY                  = 0x4BD\n\tSYS___POW_B                         = 0x4EE\n\tSYS___READDIR2                      = 0x4F4\n\tSYS___REMAINDER_B                   = 0x4EF\n\tSYS___RINT_B                        = 0x4D3\n\tSYS___SCALB_B                       = 0x4F0\n\tSYS___SIGACTIONSET                  = 0x4FB\n\tSYS___SIGGM                         = 0x4A7\n\tSYS___SINH_B                        = 0x4F1\n\tSYS___SIN_B                         = 0x4D6\n\tSYS___SQRT_B                        = 0x4F2\n\tSYS___TANH_B                        = 0x4D8\n\tSYS___TAN_B                         = 0x4D7\n\tSYS___TRRNO                         = 0x4AF\n\tSYS___TZNE                          = 0x4A9\n\tSYS___TZZN                          = 0x4AA\n\tSYS___UCREATE                       = 0x4FC\n\tSYS___UFREE                         = 0x4FE\n\tSYS___UHEAPREPORT                   = 0x4FF\n\tSYS___UMALLOC                       = 0x4FD\n\tSYS___Y0_B                          = 0x4E5\n\tSYS___Y1_B                          = 0x4E7\n\tSYS___YN_B                          = 0x4E9\n\tSYS_ABORT                           = 0x05C\n\tSYS_ASCTIME_R                       = 0x5E0\n\tSYS_ATEXIT                          = 0x05D\n\tSYS_CONNECTE                        = 0x5AE\n\tSYS_CONNECTEXPORTIMPORT             = 0x5AE\n\tSYS_CTIME_R                         = 0x5E1\n\tSYS_DN_COMP                         = 0x5DF\n\tSYS_DN_EXPAND                       = 0x5DD\n\tSYS_DN_SKIPNAME                     = 0x5DE\n\tSYS_EXIT                            = 0x05A\n\tSYS_EXPORTWO                        = 0x5A1\n\tSYS_EXPORTWORKUNIT                  = 0x5A1\n\tSYS_EXTRACTW                        = 0x5A5\n\tSYS_EXTRACTWORKUNIT                 = 0x5A5\n\tSYS_FSEEKO                          = 0x5C9\n\tSYS_FTELLO                          = 0x5C8\n\tSYS_GETGRGID_R                      = 0x5E7\n\tSYS_GETGRNAM_R                      = 0x5E8\n\tSYS_GETLOGIN_R                      = 0x5E9\n\tSYS_GETPWNAM_R                      = 0x5EA\n\tSYS_GETPWUID_R                      = 0x5EB\n\tSYS_GMTIME_R                        = 0x5E2\n\tSYS_IMPORTWO                        = 0x5A3\n\tSYS_IMPORTWORKUNIT                  = 0x5A3\n\tSYS_INET_NTOP                       = 0x5D3\n\tSYS_INET_PTON                       = 0x5D4\n\tSYS_LLABS                           = 0x5CE\n\tSYS_LLDIV                           = 0x5CB\n\tSYS_LOCALTIME_R                     = 0x5E3\n\tSYS_PTHREAD_ATFORK                  = 0x5ED\n\tSYS_PTHREAD_ATTR_GETDETACHSTATE_U98 = 0x5FB\n\tSYS_PTHREAD_ATTR_GETGUARDSIZE       = 0x5EE\n\tSYS_PTHREAD_ATTR_GETSCHEDPARAM      = 0x5F9\n\tSYS_PTHREAD_ATTR_GETSTACKADDR       = 0x5EF\n\tSYS_PTHREAD_ATTR_SETDETACHSTATE_U98 = 0x5FC\n\tSYS_PTHREAD_ATTR_SETGUARDSIZE       = 0x5F0\n\tSYS_PTHREAD_ATTR_SETSCHEDPARAM      = 0x5FA\n\tSYS_PTHREAD_ATTR_SETSTACKADDR       = 0x5F1\n\tSYS_PTHREAD_CONDATTR_GETPSHARED     = 0x5F2\n\tSYS_PTHREAD_CONDATTR_SETPSHARED     = 0x5F3\n\tSYS_PTHREAD_DETACH_U98              = 0x5FD\n\tSYS_PTHREAD_GETCONCURRENCY          = 0x5F4\n\tSYS_PTHREAD_GETSPECIFIC_U98         = 0x5FE\n\tSYS_PTHREAD_KEY_DELETE              = 0x5F5\n\tSYS_PTHREAD_SETCANCELSTATE          = 0x5FF\n\tSYS_PTHREAD_SETCONCURRENCY          = 0x5F6\n\tSYS_PTHREAD_SIGMASK                 = 0x5F7\n\tSYS_QUERYENC                        = 0x5AD\n\tSYS_QUERYWORKUNITCLASSIFICATION     = 0x5AD\n\tSYS_RAISE                           = 0x05E\n\tSYS_RAND_R                          = 0x5E4\n\tSYS_READDIR_R                       = 0x5E6\n\tSYS_REALLOC                         = 0x05B\n\tSYS_RES_INIT                        = 0x5D8\n\tSYS_RES_MKQUERY                     = 0x5D7\n\tSYS_RES_QUERY                       = 0x5D9\n\tSYS_RES_QUERYDOMAIN                 = 0x5DC\n\tSYS_RES_SEARCH                      = 0x5DA\n\tSYS_RES_SEND                        = 0x5DB\n\tSYS_SETJMP                          = 0x05F\n\tSYS_SIGQUEUE                        = 0x5A9\n\tSYS_STRTOK_R                        = 0x5E5\n\tSYS_STRTOLL                         = 0x5B0\n\tSYS_STRTOULL                        = 0x5B1\n\tSYS_TTYNAME_R                       = 0x5EC\n\tSYS_UNDOEXPO                        = 0x5A2\n\tSYS_UNDOEXPORTWORKUNIT              = 0x5A2\n\tSYS_UNDOIMPO                        = 0x5A4\n\tSYS_UNDOIMPORTWORKUNIT              = 0x5A4\n\tSYS_WCSTOLL                         = 0x5CC\n\tSYS_WCSTOULL                        = 0x5CD\n\tSYS___ABORT                         = 0x05C\n\tSYS___CONSOLE2                      = 0x5D2\n\tSYS___CPL                           = 0x5A6\n\tSYS___DISCARDDATA                   = 0x5F8\n\tSYS___DSA_PREV                      = 0x5B2\n\tSYS___EP_FIND                       = 0x5B3\n\tSYS___FP_SWAPMODE                   = 0x5AF\n\tSYS___GETUSERID                     = 0x5AB\n\tSYS___GET_CPUID                     = 0x5B9\n\tSYS___GET_SYSTEM_SETTINGS           = 0x5BA\n\tSYS___IPDOMAINNAME                  = 0x5AC\n\tSYS___MAP_INIT                      = 0x5A7\n\tSYS___MAP_SERVICE                   = 0x5A8\n\tSYS___MOUNT                         = 0x5AA\n\tSYS___MSGRCV_TIMED                  = 0x5B7\n\tSYS___RES                           = 0x5D6\n\tSYS___SEMOP_TIMED                   = 0x5B8\n\tSYS___SERVER_THREADS_QUERY          = 0x5B4\n\tSYS_FPRINTF                         = 0x06D\n\tSYS_FSCANF                          = 0x06A\n\tSYS_PRINTF                          = 0x06F\n\tSYS_SETBUF                          = 0x06B\n\tSYS_SETVBUF                         = 0x06C\n\tSYS_SSCANF                          = 0x06E\n\tSYS___CATGETS_A                     = 0x6C0\n\tSYS___CHAUDIT_A                     = 0x6F4\n\tSYS___CHMOD_A                       = 0x6E8\n\tSYS___COLLATE_INIT_A                = 0x6AC\n\tSYS___CREAT_A                       = 0x6F6\n\tSYS___CTYPE_INIT_A                  = 0x6AF\n\tSYS___DLLLOAD_A                     = 0x6DF\n\tSYS___DLLQUERYFN_A                  = 0x6E0\n\tSYS___DLLQUERYVAR_A                 = 0x6E1\n\tSYS___E2A_L                         = 0x6E3\n\tSYS___EXECLE_A                      = 0x6A0\n\tSYS___EXECLP_A                      = 0x6A4\n\tSYS___EXECVE_A                      = 0x6C1\n\tSYS___EXECVP_A                      = 0x6C2\n\tSYS___EXECV_A                       = 0x6B1\n\tSYS___FPRINTF_A                     = 0x6FA\n\tSYS___GETADDRINFO_A                 = 0x6BF\n\tSYS___GETNAMEINFO_A                 = 0x6C4\n\tSYS___GET_WCTYPE_STD_A              = 0x6AE\n\tSYS___ICONV_OPEN_A                  = 0x6DE\n\tSYS___IF_INDEXTONAME_A              = 0x6DC\n\tSYS___IF_NAMETOINDEX_A              = 0x6DB\n\tSYS___ISWCTYPE_A                    = 0x6B0\n\tSYS___IS_WCTYPE_STD_A               = 0x6B2\n\tSYS___LOCALECONV_A                  = 0x6B8\n\tSYS___LOCALECONV_STD_A              = 0x6B9\n\tSYS___LOCALE_INIT_A                 = 0x6B7\n\tSYS___LSTAT_A                       = 0x6EE\n\tSYS___LSTAT_O_A                     = 0x6EF\n\tSYS___MKDIR_A                       = 0x6E9\n\tSYS___MKFIFO_A                      = 0x6EC\n\tSYS___MKNOD_A                       = 0x6F0\n\tSYS___MONETARY_INIT_A               = 0x6BC\n\tSYS___MOUNT_A                       = 0x6F1\n\tSYS___NL_CSINFO_A                   = 0x6D6\n\tSYS___NL_LANGINFO_A                 = 0x6BA\n\tSYS___NL_LNAGINFO_STD_A             = 0x6BB\n\tSYS___NL_MONINFO_A                  = 0x6D7\n\tSYS___NL_NUMINFO_A                  = 0x6D8\n\tSYS___NL_RESPINFO_A                 = 0x6D9\n\tSYS___NL_TIMINFO_A                  = 0x6DA\n\tSYS___NUMERIC_INIT_A                = 0x6C6\n\tSYS___OPEN_A                        = 0x6F7\n\tSYS___PRINTF_A                      = 0x6DD\n\tSYS___RESP_INIT_A                   = 0x6C7\n\tSYS___RPMATCH_A                     = 0x6C8\n\tSYS___RPMATCH_C_A                   = 0x6C9\n\tSYS___RPMATCH_STD_A                 = 0x6CA\n\tSYS___SETLOCALE_A                   = 0x6F9\n\tSYS___SPAWNP_A                      = 0x6C5\n\tSYS___SPAWN_A                       = 0x6C3\n\tSYS___SPRINTF_A                     = 0x6FB\n\tSYS___STAT_A                        = 0x6EA\n\tSYS___STAT_O_A                      = 0x6EB\n\tSYS___STRCOLL_STD_A                 = 0x6A1\n\tSYS___STRFMON_A                     = 0x6BD\n\tSYS___STRFMON_STD_A                 = 0x6BE\n\tSYS___STRFTIME_A                    = 0x6CC\n\tSYS___STRFTIME_STD_A                = 0x6CD\n\tSYS___STRPTIME_A                    = 0x6CE\n\tSYS___STRPTIME_STD_A                = 0x6CF\n\tSYS___STRXFRM_A                     = 0x6A2\n\tSYS___STRXFRM_C_A                   = 0x6A3\n\tSYS___STRXFRM_STD_A                 = 0x6A5\n\tSYS___SYNTAX_INIT_A                 = 0x6D4\n\tSYS___TIME_INIT_A                   = 0x6CB\n\tSYS___TOD_INIT_A                    = 0x6D5\n\tSYS___TOWLOWER_A                    = 0x6B3\n\tSYS___TOWLOWER_STD_A                = 0x6B4\n\tSYS___TOWUPPER_A                    = 0x6B5\n\tSYS___TOWUPPER_STD_A                = 0x6B6\n\tSYS___UMOUNT_A                      = 0x6F2\n\tSYS___VFPRINTF_A                    = 0x6FC\n\tSYS___VPRINTF_A                     = 0x6FD\n\tSYS___VSPRINTF_A                    = 0x6FE\n\tSYS___VSWPRINTF_A                   = 0x6FF\n\tSYS___WCSCOLL_A                     = 0x6A6\n\tSYS___WCSCOLL_C_A                   = 0x6A7\n\tSYS___WCSCOLL_STD_A                 = 0x6A8\n\tSYS___WCSFTIME_A                    = 0x6D0\n\tSYS___WCSFTIME_STD_A                = 0x6D1\n\tSYS___WCSXFRM_A                     = 0x6A9\n\tSYS___WCSXFRM_C_A                   = 0x6AA\n\tSYS___WCSXFRM_STD_A                 = 0x6AB\n\tSYS___WCTYPE_A                      = 0x6AD\n\tSYS___W_GETMNTENT_A                 = 0x6F5\n\tSYS_____CCSIDTYPE_A                 = 0x6E6\n\tSYS_____CHATTR_A                    = 0x6E2\n\tSYS_____CSNAMETYPE_A                = 0x6E7\n\tSYS_____OPEN_STAT_A                 = 0x6ED\n\tSYS_____SPAWN2_A                    = 0x6D2\n\tSYS_____SPAWNP2_A                   = 0x6D3\n\tSYS_____TOCCSID_A                   = 0x6E4\n\tSYS_____TOCSNAME_A                  = 0x6E5\n\tSYS_ACL_FREE                        = 0x7FF\n\tSYS_ACL_INIT                        = 0x7FE\n\tSYS_FWIDE                           = 0x7DF\n\tSYS_FWPRINTF                        = 0x7D1\n\tSYS_FWRITE                          = 0x07E\n\tSYS_FWSCANF                         = 0x7D5\n\tSYS_GETCHAR                         = 0x07B\n\tSYS_GETS                            = 0x07C\n\tSYS_M_CREATE_LAYOUT                 = 0x7C9\n\tSYS_M_DESTROY_LAYOUT                = 0x7CA\n\tSYS_M_GETVALUES_LAYOUT              = 0x7CB\n\tSYS_M_SETVALUES_LAYOUT              = 0x7CC\n\tSYS_M_TRANSFORM_LAYOUT              = 0x7CD\n\tSYS_M_WTRANSFORM_LAYOUT             = 0x7CE\n\tSYS_PREAD                           = 0x7C7\n\tSYS_PUTC                            = 0x07D\n\tSYS_PUTCHAR                         = 0x07A\n\tSYS_PUTS                            = 0x07F\n\tSYS_PWRITE                          = 0x7C8\n\tSYS_TOWCTRAN                        = 0x7D8\n\tSYS_TOWCTRANS                       = 0x7D8\n\tSYS_UNATEXIT                        = 0x7B5\n\tSYS_VFWPRINT                        = 0x7D3\n\tSYS_VFWPRINTF                       = 0x7D3\n\tSYS_VWPRINTF                        = 0x7D4\n\tSYS_WCTRANS                         = 0x7D7\n\tSYS_WPRINTF                         = 0x7D2\n\tSYS_WSCANF                          = 0x7D6\n\tSYS___ASCTIME_R_A                   = 0x7A1\n\tSYS___BASENAME_A                    = 0x7DC\n\tSYS___BTOWC_A                       = 0x7E4\n\tSYS___CDUMP_A                       = 0x7B7\n\tSYS___CEE3DMP_A                     = 0x7B6\n\tSYS___CEILF_H                       = 0x7F4\n\tSYS___CEILL_H                       = 0x7F5\n\tSYS___CEIL_H                        = 0x7EA\n\tSYS___CRYPT_A                       = 0x7BE\n\tSYS___CSNAP_A                       = 0x7B8\n\tSYS___CTEST_A                       = 0x7B9\n\tSYS___CTIME_R_A                     = 0x7A2\n\tSYS___CTRACE_A                      = 0x7BA\n\tSYS___DBM_OPEN_A                    = 0x7E6\n\tSYS___DIRNAME_A                     = 0x7DD\n\tSYS___FABSF_H                       = 0x7FA\n\tSYS___FABSL_H                       = 0x7FB\n\tSYS___FABS_H                        = 0x7ED\n\tSYS___FGETWC_A                      = 0x7AA\n\tSYS___FGETWS_A                      = 0x7AD\n\tSYS___FLOORF_H                      = 0x7F6\n\tSYS___FLOORL_H                      = 0x7F7\n\tSYS___FLOOR_H                       = 0x7EB\n\tSYS___FPUTWC_A                      = 0x7A5\n\tSYS___FPUTWS_A                      = 0x7A8\n\tSYS___GETTIMEOFDAY_A                = 0x7AE\n\tSYS___GETWCHAR_A                    = 0x7AC\n\tSYS___GETWC_A                       = 0x7AB\n\tSYS___GLOB_A                        = 0x7DE\n\tSYS___GMTIME_A                      = 0x7AF\n\tSYS___GMTIME_R_A                    = 0x7B0\n\tSYS___INET_PTON_A                   = 0x7BC\n\tSYS___J0_H                          = 0x7EE\n\tSYS___J1_H                          = 0x7EF\n\tSYS___JN_H                          = 0x7F0\n\tSYS___LOCALTIME_A                   = 0x7B1\n\tSYS___LOCALTIME_R_A                 = 0x7B2\n\tSYS___MALLOC24                      = 0x7FC\n\tSYS___MALLOC31                      = 0x7FD\n\tSYS___MKTIME_A                      = 0x7B3\n\tSYS___MODFF_H                       = 0x7F8\n\tSYS___MODFL_H                       = 0x7F9\n\tSYS___MODF_H                        = 0x7EC\n\tSYS___OPENDIR_A                     = 0x7C2\n\tSYS___OSNAME                        = 0x7E0\n\tSYS___PUTWCHAR_A                    = 0x7A7\n\tSYS___PUTWC_A                       = 0x7A6\n\tSYS___READDIR_A                     = 0x7C3\n\tSYS___STRTOLL_A                     = 0x7A3\n\tSYS___STRTOULL_A                    = 0x7A4\n\tSYS___SYSLOG_A                      = 0x7BD\n\tSYS___TZZNA                         = 0x7B4\n\tSYS___UNGETWC_A                     = 0x7A9\n\tSYS___UTIME_A                       = 0x7A0\n\tSYS___VFPRINTF2_A                   = 0x7E7\n\tSYS___VPRINTF2_A                    = 0x7E8\n\tSYS___VSPRINTF2_A                   = 0x7E9\n\tSYS___VSWPRNTF2_A                   = 0x7BB\n\tSYS___WCSTOD_A                      = 0x7D9\n\tSYS___WCSTOL_A                      = 0x7DA\n\tSYS___WCSTOUL_A                     = 0x7DB\n\tSYS___WCTOB_A                       = 0x7E5\n\tSYS___Y0_H                          = 0x7F1\n\tSYS___Y1_H                          = 0x7F2\n\tSYS___YN_H                          = 0x7F3\n\tSYS_____OPENDIR2_A                  = 0x7BF\n\tSYS_____OSNAME_A                    = 0x7E1\n\tSYS_____READDIR2_A                  = 0x7C0\n\tSYS_DLCLOSE                         = 0x8DF\n\tSYS_DLERROR                         = 0x8E0\n\tSYS_DLOPEN                          = 0x8DD\n\tSYS_DLSYM                           = 0x8DE\n\tSYS_FLOCKFILE                       = 0x8D3\n\tSYS_FTRYLOCKFILE                    = 0x8D4\n\tSYS_FUNLOCKFILE                     = 0x8D5\n\tSYS_GETCHAR_UNLOCKED                = 0x8D7\n\tSYS_GETC_UNLOCKED                   = 0x8D6\n\tSYS_PUTCHAR_UNLOCKED                = 0x8D9\n\tSYS_PUTC_UNLOCKED                   = 0x8D8\n\tSYS_SNPRINTF                        = 0x8DA\n\tSYS_VSNPRINTF                       = 0x8DB\n\tSYS_WCSCSPN                         = 0x08B\n\tSYS_WCSLEN                          = 0x08C\n\tSYS_WCSNCAT                         = 0x08D\n\tSYS_WCSNCMP                         = 0x08A\n\tSYS_WCSNCPY                         = 0x08F\n\tSYS_WCSSPN                          = 0x08E\n\tSYS___ABSF_H                        = 0x8E7\n\tSYS___ABSL_H                        = 0x8E8\n\tSYS___ABS_H                         = 0x8E6\n\tSYS___ACOSF_H                       = 0x8EA\n\tSYS___ACOSH_H                       = 0x8EC\n\tSYS___ACOSL_H                       = 0x8EB\n\tSYS___ACOS_H                        = 0x8E9\n\tSYS___ASINF_H                       = 0x8EE\n\tSYS___ASINH_H                       = 0x8F0\n\tSYS___ASINL_H                       = 0x8EF\n\tSYS___ASIN_H                        = 0x8ED\n\tSYS___ATAN2F_H                      = 0x8F8\n\tSYS___ATAN2L_H                      = 0x8F9\n\tSYS___ATAN2_H                       = 0x8F7\n\tSYS___ATANF_H                       = 0x8F2\n\tSYS___ATANHF_H                      = 0x8F5\n\tSYS___ATANHL_H                      = 0x8F6\n\tSYS___ATANH_H                       = 0x8F4\n\tSYS___ATANL_H                       = 0x8F3\n\tSYS___ATAN_H                        = 0x8F1\n\tSYS___CBRT_H                        = 0x8FA\n\tSYS___COPYSIGNF_H                   = 0x8FB\n\tSYS___COPYSIGNL_H                   = 0x8FC\n\tSYS___COSF_H                        = 0x8FE\n\tSYS___COSL_H                        = 0x8FF\n\tSYS___COS_H                         = 0x8FD\n\tSYS___DLERROR_A                     = 0x8D2\n\tSYS___DLOPEN_A                      = 0x8D0\n\tSYS___DLSYM_A                       = 0x8D1\n\tSYS___GETUTXENT_A                   = 0x8C6\n\tSYS___GETUTXID_A                    = 0x8C7\n\tSYS___GETUTXLINE_A                  = 0x8C8\n\tSYS___ITOA                          = 0x8AA\n\tSYS___ITOA_A                        = 0x8B0\n\tSYS___LE_CONDITION_TOKEN_BUILD      = 0x8A5\n\tSYS___LE_MSG_ADD_INSERT             = 0x8A6\n\tSYS___LE_MSG_GET                    = 0x8A7\n\tSYS___LE_MSG_GET_AND_WRITE          = 0x8A8\n\tSYS___LE_MSG_WRITE                  = 0x8A9\n\tSYS___LLTOA                         = 0x8AE\n\tSYS___LLTOA_A                       = 0x8B4\n\tSYS___LTOA                          = 0x8AC\n\tSYS___LTOA_A                        = 0x8B2\n\tSYS___PUTCHAR_UNLOCKED_A            = 0x8CC\n\tSYS___PUTC_UNLOCKED_A               = 0x8CB\n\tSYS___PUTUTXLINE_A                  = 0x8C9\n\tSYS___RESET_EXCEPTION_HANDLER       = 0x8E3\n\tSYS___REXEC_A                       = 0x8C4\n\tSYS___REXEC_AF_A                    = 0x8C5\n\tSYS___SET_EXCEPTION_HANDLER         = 0x8E2\n\tSYS___SNPRINTF_A                    = 0x8CD\n\tSYS___SUPERKILL                     = 0x8A4\n\tSYS___TCGETATTR_A                   = 0x8A1\n\tSYS___TCSETATTR_A                   = 0x8A2\n\tSYS___ULLTOA                        = 0x8AF\n\tSYS___ULLTOA_A                      = 0x8B5\n\tSYS___ULTOA                         = 0x8AD\n\tSYS___ULTOA_A                       = 0x8B3\n\tSYS___UTOA                          = 0x8AB\n\tSYS___UTOA_A                        = 0x8B1\n\tSYS___VHM_EVENT                     = 0x8E4\n\tSYS___VSNPRINTF_A                   = 0x8CE\n\tSYS_____GETENV_A                    = 0x8C3\n\tSYS_____UTMPXNAME_A                 = 0x8CA\n\tSYS_CACOSH                          = 0x9A0\n\tSYS_CACOSHF                         = 0x9A3\n\tSYS_CACOSHL                         = 0x9A6\n\tSYS_CARG                            = 0x9A9\n\tSYS_CARGF                           = 0x9AC\n\tSYS_CARGL                           = 0x9AF\n\tSYS_CASIN                           = 0x9B2\n\tSYS_CASINF                          = 0x9B5\n\tSYS_CASINH                          = 0x9BB\n\tSYS_CASINHF                         = 0x9BE\n\tSYS_CASINHL                         = 0x9C1\n\tSYS_CASINL                          = 0x9B8\n\tSYS_CATAN                           = 0x9C4\n\tSYS_CATANF                          = 0x9C7\n\tSYS_CATANH                          = 0x9CD\n\tSYS_CATANHF                         = 0x9D0\n\tSYS_CATANHL                         = 0x9D3\n\tSYS_CATANL                          = 0x9CA\n\tSYS_CCOS                            = 0x9D6\n\tSYS_CCOSF                           = 0x9D9\n\tSYS_CCOSH                           = 0x9DF\n\tSYS_CCOSHF                          = 0x9E2\n\tSYS_CCOSHL                          = 0x9E5\n\tSYS_CCOSL                           = 0x9DC\n\tSYS_CEXP                            = 0x9E8\n\tSYS_CEXPF                           = 0x9EB\n\tSYS_CEXPL                           = 0x9EE\n\tSYS_CIMAG                           = 0x9F1\n\tSYS_CIMAGF                          = 0x9F4\n\tSYS_CIMAGL                          = 0x9F7\n\tSYS_CLOGF                           = 0x9FD\n\tSYS_MEMCHR                          = 0x09B\n\tSYS_MEMCMP                          = 0x09A\n\tSYS_STRCOLL                         = 0x09C\n\tSYS_STRNCMP                         = 0x09D\n\tSYS_STRRCHR                         = 0x09F\n\tSYS_STRXFRM                         = 0x09E\n\tSYS___CACOSHF_B                     = 0x9A4\n\tSYS___CACOSHF_H                     = 0x9A5\n\tSYS___CACOSHL_B                     = 0x9A7\n\tSYS___CACOSHL_H                     = 0x9A8\n\tSYS___CACOSH_B                      = 0x9A1\n\tSYS___CACOSH_H                      = 0x9A2\n\tSYS___CARGF_B                       = 0x9AD\n\tSYS___CARGF_H                       = 0x9AE\n\tSYS___CARGL_B                       = 0x9B0\n\tSYS___CARGL_H                       = 0x9B1\n\tSYS___CARG_B                        = 0x9AA\n\tSYS___CARG_H                        = 0x9AB\n\tSYS___CASINF_B                      = 0x9B6\n\tSYS___CASINF_H                      = 0x9B7\n\tSYS___CASINHF_B                     = 0x9BF\n\tSYS___CASINHF_H                     = 0x9C0\n\tSYS___CASINHL_B                     = 0x9C2\n\tSYS___CASINHL_H                     = 0x9C3\n\tSYS___CASINH_B                      = 0x9BC\n\tSYS___CASINH_H                      = 0x9BD\n\tSYS___CASINL_B                      = 0x9B9\n\tSYS___CASINL_H                      = 0x9BA\n\tSYS___CASIN_B                       = 0x9B3\n\tSYS___CASIN_H                       = 0x9B4\n\tSYS___CATANF_B                      = 0x9C8\n\tSYS___CATANF_H                      = 0x9C9\n\tSYS___CATANHF_B                     = 0x9D1\n\tSYS___CATANHF_H                     = 0x9D2\n\tSYS___CATANHL_B                     = 0x9D4\n\tSYS___CATANHL_H                     = 0x9D5\n\tSYS___CATANH_B                      = 0x9CE\n\tSYS___CATANH_H                      = 0x9CF\n\tSYS___CATANL_B                      = 0x9CB\n\tSYS___CATANL_H                      = 0x9CC\n\tSYS___CATAN_B                       = 0x9C5\n\tSYS___CATAN_H                       = 0x9C6\n\tSYS___CCOSF_B                       = 0x9DA\n\tSYS___CCOSF_H                       = 0x9DB\n\tSYS___CCOSHF_B                      = 0x9E3\n\tSYS___CCOSHF_H                      = 0x9E4\n\tSYS___CCOSHL_B                      = 0x9E6\n\tSYS___CCOSHL_H                      = 0x9E7\n\tSYS___CCOSH_B                       = 0x9E0\n\tSYS___CCOSH_H                       = 0x9E1\n\tSYS___CCOSL_B                       = 0x9DD\n\tSYS___CCOSL_H                       = 0x9DE\n\tSYS___CCOS_B                        = 0x9D7\n\tSYS___CCOS_H                        = 0x9D8\n\tSYS___CEXPF_B                       = 0x9EC\n\tSYS___CEXPF_H                       = 0x9ED\n\tSYS___CEXPL_B                       = 0x9EF\n\tSYS___CEXPL_H                       = 0x9F0\n\tSYS___CEXP_B                        = 0x9E9\n\tSYS___CEXP_H                        = 0x9EA\n\tSYS___CIMAGF_B                      = 0x9F5\n\tSYS___CIMAGF_H                      = 0x9F6\n\tSYS___CIMAGL_B                      = 0x9F8\n\tSYS___CIMAGL_H                      = 0x9F9\n\tSYS___CIMAG_B                       = 0x9F2\n\tSYS___CIMAG_H                       = 0x9F3\n\tSYS___CLOG                          = 0x9FA\n\tSYS___CLOGF_B                       = 0x9FE\n\tSYS___CLOGF_H                       = 0x9FF\n\tSYS___CLOG_B                        = 0x9FB\n\tSYS___CLOG_H                        = 0x9FC\n\tSYS_ISWCTYPE                        = 0x10C\n\tSYS_ISWXDIGI                        = 0x10A\n\tSYS_ISWXDIGIT                       = 0x10A\n\tSYS_MBSINIT                         = 0x10F\n\tSYS_TOWLOWER                        = 0x10D\n\tSYS_TOWUPPER                        = 0x10E\n\tSYS_WCTYPE                          = 0x10B\n\tSYS_WCSSTR                          = 0x11B\n\tSYS___RPMTCH                        = 0x11A\n\tSYS_WCSTOD                          = 0x12E\n\tSYS_WCSTOK                          = 0x12C\n\tSYS_WCSTOL                          = 0x12D\n\tSYS_WCSTOUL                         = 0x12F\n\tSYS_FGETWC                          = 0x13C\n\tSYS_FGETWS                          = 0x13D\n\tSYS_FPUTWC                          = 0x13E\n\tSYS_FPUTWS                          = 0x13F\n\tSYS_REGERROR                        = 0x13B\n\tSYS_REGFREE                         = 0x13A\n\tSYS_COLLEQUIV                       = 0x14F\n\tSYS_COLLTOSTR                       = 0x14E\n\tSYS_ISMCCOLLEL                      = 0x14C\n\tSYS_STRTOCOLL                       = 0x14D\n\tSYS_DLLFREE                         = 0x16F\n\tSYS_DLLQUERYFN                      = 0x16D\n\tSYS_DLLQUERYVAR                     = 0x16E\n\tSYS_GETMCCOLL                       = 0x16A\n\tSYS_GETWMCCOLL                      = 0x16B\n\tSYS___ERR2AD                        = 0x16C\n\tSYS_CFSETOSPEED                     = 0x17A\n\tSYS_CHDIR                           = 0x17B\n\tSYS_CHMOD                           = 0x17C\n\tSYS_CHOWN                           = 0x17D\n\tSYS_CLOSE                           = 0x17E\n\tSYS_CLOSEDIR                        = 0x17F\n\tSYS_LOG                             = 0x017\n\tSYS_COSH                            = 0x018\n\tSYS_FCHMOD                          = 0x18A\n\tSYS_FCHOWN                          = 0x18B\n\tSYS_FCNTL                           = 0x18C\n\tSYS_FILENO                          = 0x18D\n\tSYS_FORK                            = 0x18E\n\tSYS_FPATHCONF                       = 0x18F\n\tSYS_GETLOGIN                        = 0x19A\n\tSYS_GETPGRP                         = 0x19C\n\tSYS_GETPID                          = 0x19D\n\tSYS_GETPPID                         = 0x19E\n\tSYS_GETPWNAM                        = 0x19F\n\tSYS_TANH                            = 0x019\n\tSYS_W_GETMNTENT                     = 0x19B\n\tSYS_POW                             = 0x020\n\tSYS_PTHREAD_SELF                    = 0x20A\n\tSYS_PTHREAD_SETINTR                 = 0x20B\n\tSYS_PTHREAD_SETINTRTYPE             = 0x20C\n\tSYS_PTHREAD_SETSPECIFIC             = 0x20D\n\tSYS_PTHREAD_TESTINTR                = 0x20E\n\tSYS_PTHREAD_YIELD                   = 0x20F\n\tSYS_SQRT                            = 0x021\n\tSYS_FLOOR                           = 0x022\n\tSYS_J1                              = 0x023\n\tSYS_WCSPBRK                         = 0x23F\n\tSYS_BSEARCH                         = 0x24C\n\tSYS_FABS                            = 0x024\n\tSYS_GETENV                          = 0x24A\n\tSYS_LDIV                            = 0x24D\n\tSYS_SYSTEM                          = 0x24B\n\tSYS_FMOD                            = 0x025\n\tSYS___RETHROW                       = 0x25F\n\tSYS___THROW                         = 0x25E\n\tSYS_J0                              = 0x026\n\tSYS_PUTENV                          = 0x26A\n\tSYS___GETENV                        = 0x26F\n\tSYS_SEMCTL                          = 0x27A\n\tSYS_SEMGET                          = 0x27B\n\tSYS_SEMOP                           = 0x27C\n\tSYS_SHMAT                           = 0x27D\n\tSYS_SHMCTL                          = 0x27E\n\tSYS_SHMDT                           = 0x27F\n\tSYS_YN                              = 0x027\n\tSYS_JN                              = 0x028\n\tSYS_SIGALTSTACK                     = 0x28A\n\tSYS_SIGHOLD                         = 0x28B\n\tSYS_SIGIGNORE                       = 0x28C\n\tSYS_SIGINTERRUPT                    = 0x28D\n\tSYS_SIGPAUSE                        = 0x28E\n\tSYS_SIGRELSE                        = 0x28F\n\tSYS_GETOPT                          = 0x29A\n\tSYS_GETSUBOPT                       = 0x29D\n\tSYS_LCHOWN                          = 0x29B\n\tSYS_SETPGRP                         = 0x29E\n\tSYS_TRUNCATE                        = 0x29C\n\tSYS_Y0                              = 0x029\n\tSYS___GDERR                         = 0x29F\n\tSYS_ISALPHA                         = 0x030\n\tSYS_VFORK                           = 0x30F\n\tSYS__LONGJMP                        = 0x30D\n\tSYS__SETJMP                         = 0x30E\n\tSYS_GLOB                            = 0x31A\n\tSYS_GLOBFREE                        = 0x31B\n\tSYS_ISALNUM                         = 0x031\n\tSYS_PUTW                            = 0x31C\n\tSYS_SEEKDIR                         = 0x31D\n\tSYS_TELLDIR                         = 0x31E\n\tSYS_TEMPNAM                         = 0x31F\n\tSYS_GETTIMEOFDAY_R                  = 0x32E\n\tSYS_ISLOWER                         = 0x032\n\tSYS_LGAMMA                          = 0x32C\n\tSYS_REMAINDER                       = 0x32A\n\tSYS_SCALB                           = 0x32B\n\tSYS_SYNC                            = 0x32F\n\tSYS_TTYSLOT                         = 0x32D\n\tSYS_ENDPROTOENT                     = 0x33A\n\tSYS_ENDSERVENT                      = 0x33B\n\tSYS_GETHOSTBYADDR                   = 0x33D\n\tSYS_GETHOSTBYADDR_R                 = 0x33C\n\tSYS_GETHOSTBYNAME                   = 0x33F\n\tSYS_GETHOSTBYNAME_R                 = 0x33E\n\tSYS_ISCNTRL                         = 0x033\n\tSYS_GETSERVBYNAME                   = 0x34A\n\tSYS_GETSERVBYPORT                   = 0x34B\n\tSYS_GETSERVENT                      = 0x34C\n\tSYS_GETSOCKNAME                     = 0x34D\n\tSYS_GETSOCKOPT                      = 0x34E\n\tSYS_INET_ADDR                       = 0x34F\n\tSYS_ISDIGIT                         = 0x034\n\tSYS_ISGRAPH                         = 0x035\n\tSYS_SELECT                          = 0x35B\n\tSYS_SELECTEX                        = 0x35C\n\tSYS_SEND                            = 0x35D\n\tSYS_SENDTO                          = 0x35F\n\tSYS_CHROOT                          = 0x36A\n\tSYS_ISNAN                           = 0x36D\n\tSYS_ISUPPER                         = 0x036\n\tSYS_ULIMIT                          = 0x36C\n\tSYS_UTIMES                          = 0x36E\n\tSYS_W_STATVFS                       = 0x36B\n\tSYS___H_ERRNO                       = 0x36F\n\tSYS_GRANTPT                         = 0x37A\n\tSYS_ISPRINT                         = 0x037\n\tSYS_TCGETSID                        = 0x37C\n\tSYS_UNLOCKPT                        = 0x37B\n\tSYS___TCGETCP                       = 0x37D\n\tSYS___TCSETCP                       = 0x37E\n\tSYS___TCSETTABLES                   = 0x37F\n\tSYS_ISPUNCT                         = 0x038\n\tSYS_NLIST                           = 0x38C\n\tSYS___IPDBCS                        = 0x38D\n\tSYS___IPDSPX                        = 0x38E\n\tSYS___IPMSGC                        = 0x38F\n\tSYS___STHOSTENT                     = 0x38B\n\tSYS___STSERVENT                     = 0x38A\n\tSYS_ISSPACE                         = 0x039\n\tSYS_COS                             = 0x040\n\tSYS_T_ALLOC                         = 0x40A\n\tSYS_T_BIND                          = 0x40B\n\tSYS_T_CLOSE                         = 0x40C\n\tSYS_T_CONNECT                       = 0x40D\n\tSYS_T_ERROR                         = 0x40E\n\tSYS_T_FREE                          = 0x40F\n\tSYS_TAN                             = 0x041\n\tSYS_T_RCVREL                        = 0x41A\n\tSYS_T_RCVUDATA                      = 0x41B\n\tSYS_T_RCVUDERR                      = 0x41C\n\tSYS_T_SND                           = 0x41D\n\tSYS_T_SNDDIS                        = 0x41E\n\tSYS_T_SNDREL                        = 0x41F\n\tSYS_GETPMSG                         = 0x42A\n\tSYS_ISASTREAM                       = 0x42B\n\tSYS_PUTMSG                          = 0x42C\n\tSYS_PUTPMSG                         = 0x42D\n\tSYS_SINH                            = 0x042\n\tSYS___ISPOSIXON                     = 0x42E\n\tSYS___OPENMVSREL                    = 0x42F\n\tSYS_ACOS                            = 0x043\n\tSYS_ATAN                            = 0x044\n\tSYS_ATAN2                           = 0x045\n\tSYS_FTELL                           = 0x046\n\tSYS_FGETPOS                         = 0x047\n\tSYS_SOCK_DEBUG                      = 0x47A\n\tSYS_SOCK_DO_TESTSTOR                = 0x47D\n\tSYS_TAKESOCKET                      = 0x47E\n\tSYS___SERVER_INIT                   = 0x47F\n\tSYS_FSEEK                           = 0x048\n\tSYS___IPHOST                        = 0x48B\n\tSYS___IPNODE                        = 0x48C\n\tSYS___SERVER_CLASSIFY_CREATE        = 0x48D\n\tSYS___SERVER_CLASSIFY_DESTROY       = 0x48E\n\tSYS___SERVER_CLASSIFY_RESET         = 0x48F\n\tSYS___SMF_RECORD                    = 0x48A\n\tSYS_FSETPOS                         = 0x049\n\tSYS___FNWSA                         = 0x49B\n\tSYS___SPAWN2                        = 0x49D\n\tSYS___SPAWNP2                       = 0x49E\n\tSYS_ATOF                            = 0x050\n\tSYS_PTHREAD_MUTEXATTR_GETPSHARED    = 0x50A\n\tSYS_PTHREAD_MUTEXATTR_SETPSHARED    = 0x50B\n\tSYS_PTHREAD_RWLOCK_DESTROY          = 0x50C\n\tSYS_PTHREAD_RWLOCK_INIT             = 0x50D\n\tSYS_PTHREAD_RWLOCK_RDLOCK           = 0x50E\n\tSYS_PTHREAD_RWLOCK_TRYRDLOCK        = 0x50F\n\tSYS_ATOI                            = 0x051\n\tSYS___FP_CLASS                      = 0x51D\n\tSYS___FP_CLR_FLAG                   = 0x51A\n\tSYS___FP_FINITE                     = 0x51E\n\tSYS___FP_ISNAN                      = 0x51F\n\tSYS___FP_RAISE_XCP                  = 0x51C\n\tSYS___FP_READ_FLAG                  = 0x51B\n\tSYS_RAND                            = 0x052\n\tSYS_SIGTIMEDWAIT                    = 0x52D\n\tSYS_SIGWAITINFO                     = 0x52E\n\tSYS___CHKBFP                        = 0x52F\n\tSYS___FPC_RS                        = 0x52C\n\tSYS___FPC_RW                        = 0x52A\n\tSYS___FPC_SM                        = 0x52B\n\tSYS_STRTOD                          = 0x053\n\tSYS_STRTOL                          = 0x054\n\tSYS_STRTOUL                         = 0x055\n\tSYS_MALLOC                          = 0x056\n\tSYS_SRAND                           = 0x057\n\tSYS_CALLOC                          = 0x058\n\tSYS_FREE                            = 0x059\n\tSYS___OSENV                         = 0x59F\n\tSYS___W_PIOCTL                      = 0x59E\n\tSYS_LONGJMP                         = 0x060\n\tSYS___FLOORF_B                      = 0x60A\n\tSYS___FLOORL_B                      = 0x60B\n\tSYS___FREXPF_B                      = 0x60C\n\tSYS___FREXPL_B                      = 0x60D\n\tSYS___LDEXPF_B                      = 0x60E\n\tSYS___LDEXPL_B                      = 0x60F\n\tSYS_SIGNAL                          = 0x061\n\tSYS___ATAN2F_B                      = 0x61A\n\tSYS___ATAN2L_B                      = 0x61B\n\tSYS___COSHF_B                       = 0x61C\n\tSYS___COSHL_B                       = 0x61D\n\tSYS___EXPF_B                        = 0x61E\n\tSYS___EXPL_B                        = 0x61F\n\tSYS_TMPNAM                          = 0x062\n\tSYS___ABSF_B                        = 0x62A\n\tSYS___ABSL_B                        = 0x62C\n\tSYS___ABS_B                         = 0x62B\n\tSYS___FMODF_B                       = 0x62D\n\tSYS___FMODL_B                       = 0x62E\n\tSYS___MODFF_B                       = 0x62F\n\tSYS_ATANL                           = 0x63A\n\tSYS_CEILF                           = 0x63B\n\tSYS_CEILL                           = 0x63C\n\tSYS_COSF                            = 0x63D\n\tSYS_COSHF                           = 0x63F\n\tSYS_COSL                            = 0x63E\n\tSYS_REMOVE                          = 0x063\n\tSYS_POWL                            = 0x64A\n\tSYS_RENAME                          = 0x064\n\tSYS_SINF                            = 0x64B\n\tSYS_SINHF                           = 0x64F\n\tSYS_SINL                            = 0x64C\n\tSYS_SQRTF                           = 0x64D\n\tSYS_SQRTL                           = 0x64E\n\tSYS_BTOWC                           = 0x65F\n\tSYS_FREXPL                          = 0x65A\n\tSYS_LDEXPF                          = 0x65B\n\tSYS_LDEXPL                          = 0x65C\n\tSYS_MODFF                           = 0x65D\n\tSYS_MODFL                           = 0x65E\n\tSYS_TMPFILE                         = 0x065\n\tSYS_FREOPEN                         = 0x066\n\tSYS___CHARMAP_INIT_A                = 0x66E\n\tSYS___GETHOSTBYADDR_R_A             = 0x66C\n\tSYS___GETHOSTBYNAME_A               = 0x66A\n\tSYS___GETHOSTBYNAME_R_A             = 0x66D\n\tSYS___MBLEN_A                       = 0x66F\n\tSYS___RES_INIT_A                    = 0x66B\n\tSYS_FCLOSE                          = 0x067\n\tSYS___GETGRGID_R_A                  = 0x67D\n\tSYS___WCSTOMBS_A                    = 0x67A\n\tSYS___WCSTOMBS_STD_A                = 0x67B\n\tSYS___WCSWIDTH_A                    = 0x67C\n\tSYS___WCSWIDTH_ASIA                 = 0x67F\n\tSYS___WCSWIDTH_STD_A                = 0x67E\n\tSYS_FFLUSH                          = 0x068\n\tSYS___GETLOGIN_R_A                  = 0x68E\n\tSYS___GETPWNAM_R_A                  = 0x68C\n\tSYS___GETPWUID_R_A                  = 0x68D\n\tSYS___TTYNAME_R_A                   = 0x68F\n\tSYS___WCWIDTH_ASIA                  = 0x68B\n\tSYS___WCWIDTH_STD_A                 = 0x68A\n\tSYS_FOPEN                           = 0x069\n\tSYS___REGEXEC_A                     = 0x69A\n\tSYS___REGEXEC_STD_A                 = 0x69B\n\tSYS___REGFREE_A                     = 0x69C\n\tSYS___REGFREE_STD_A                 = 0x69D\n\tSYS___STRCOLL_A                     = 0x69E\n\tSYS___STRCOLL_C_A                   = 0x69F\n\tSYS_SCANF                           = 0x070\n\tSYS___A64L_A                        = 0x70C\n\tSYS___ECVT_A                        = 0x70D\n\tSYS___FCVT_A                        = 0x70E\n\tSYS___GCVT_A                        = 0x70F\n\tSYS___STRTOUL_A                     = 0x70A\n\tSYS_____AE_CORRESTBL_QUERY_A        = 0x70B\n\tSYS_SPRINTF                         = 0x071\n\tSYS___ACCESS_A                      = 0x71F\n\tSYS___CATOPEN_A                     = 0x71E\n\tSYS___GETOPT_A                      = 0x71D\n\tSYS___REALPATH_A                    = 0x71A\n\tSYS___SETENV_A                      = 0x71B\n\tSYS___SYSTEM_A                      = 0x71C\n\tSYS_FGETC                           = 0x072\n\tSYS___GAI_STRERROR_A                = 0x72F\n\tSYS___RMDIR_A                       = 0x72A\n\tSYS___STATVFS_A                     = 0x72B\n\tSYS___SYMLINK_A                     = 0x72C\n\tSYS___TRUNCATE_A                    = 0x72D\n\tSYS___UNLINK_A                      = 0x72E\n\tSYS_VFPRINTF                        = 0x073\n\tSYS___ISSPACE_A                     = 0x73A\n\tSYS___ISUPPER_A                     = 0x73B\n\tSYS___ISWALNUM_A                    = 0x73F\n\tSYS___ISXDIGIT_A                    = 0x73C\n\tSYS___TOLOWER_A                     = 0x73D\n\tSYS___TOUPPER_A                     = 0x73E\n\tSYS_VPRINTF                         = 0x074\n\tSYS___CONFSTR_A                     = 0x74B\n\tSYS___FDOPEN_A                      = 0x74E\n\tSYS___FLDATA_A                      = 0x74F\n\tSYS___FTOK_A                        = 0x74C\n\tSYS___ISWXDIGIT_A                   = 0x74A\n\tSYS___MKTEMP_A                      = 0x74D\n\tSYS_VSPRINTF                        = 0x075\n\tSYS___GETGRGID_A                    = 0x75A\n\tSYS___GETGRNAM_A                    = 0x75B\n\tSYS___GETGROUPSBYNAME_A             = 0x75C\n\tSYS___GETHOSTENT_A                  = 0x75D\n\tSYS___GETHOSTNAME_A                 = 0x75E\n\tSYS___GETLOGIN_A                    = 0x75F\n\tSYS_GETC                            = 0x076\n\tSYS___CREATEWORKUNIT_A              = 0x76A\n\tSYS___CTERMID_A                     = 0x76B\n\tSYS___FMTMSG_A                      = 0x76C\n\tSYS___INITGROUPS_A                  = 0x76D\n\tSYS___MSGRCV_A                      = 0x76F\n\tSYS_____LOGIN_A                     = 0x76E\n\tSYS_FGETS                           = 0x077\n\tSYS___STRCASECMP_A                  = 0x77B\n\tSYS___STRNCASECMP_A                 = 0x77C\n\tSYS___TTYNAME_A                     = 0x77D\n\tSYS___UNAME_A                       = 0x77E\n\tSYS___UTIMES_A                      = 0x77F\n\tSYS_____SERVER_PWU_A                = 0x77A\n\tSYS_FPUTC                           = 0x078\n\tSYS___CREAT_O_A                     = 0x78E\n\tSYS___ENVNA                         = 0x78F\n\tSYS___FREAD_A                       = 0x78A\n\tSYS___FWRITE_A                      = 0x78B\n\tSYS___ISASCII                       = 0x78D\n\tSYS___OPEN_O_A                      = 0x78C\n\tSYS_FPUTS                           = 0x079\n\tSYS___ASCTIME_A                     = 0x79C\n\tSYS___CTIME_A                       = 0x79D\n\tSYS___GETDATE_A                     = 0x79E\n\tSYS___GETSERVBYPORT_A               = 0x79A\n\tSYS___GETSERVENT_A                  = 0x79B\n\tSYS___TZSET_A                       = 0x79F\n\tSYS_ACL_FROM_TEXT                   = 0x80C\n\tSYS_ACL_SET_FD                      = 0x80A\n\tSYS_ACL_SET_FILE                    = 0x80B\n\tSYS_ACL_SORT                        = 0x80E\n\tSYS_ACL_TO_TEXT                     = 0x80D\n\tSYS_UNGETC                          = 0x080\n\tSYS___SHUTDOWN_REGISTRATION         = 0x80F\n\tSYS_FREAD                           = 0x081\n\tSYS_FREEADDRINFO                    = 0x81A\n\tSYS_GAI_STRERROR                    = 0x81B\n\tSYS_REXEC_AF                        = 0x81C\n\tSYS___DYNALLOC_A                    = 0x81F\n\tSYS___POE                           = 0x81D\n\tSYS_WCSTOMBS                        = 0x082\n\tSYS___INET_ADDR_A                   = 0x82F\n\tSYS___NLIST_A                       = 0x82A\n\tSYS_____TCGETCP_A                   = 0x82B\n\tSYS_____TCSETCP_A                   = 0x82C\n\tSYS_____W_PIOCTL_A                  = 0x82E\n\tSYS_MBTOWC                          = 0x083\n\tSYS___CABEND                        = 0x83D\n\tSYS___LE_CIB_GET                    = 0x83E\n\tSYS___RECVMSG_A                     = 0x83B\n\tSYS___SENDMSG_A                     = 0x83A\n\tSYS___SET_LAA_FOR_JIT               = 0x83F\n\tSYS_____LCHATTR_A                   = 0x83C\n\tSYS_WCTOMB                          = 0x084\n\tSYS___CBRTL_B                       = 0x84A\n\tSYS___COPYSIGNF_B                   = 0x84B\n\tSYS___COPYSIGNL_B                   = 0x84C\n\tSYS___COTANF_B                      = 0x84D\n\tSYS___COTANL_B                      = 0x84F\n\tSYS___COTAN_B                       = 0x84E\n\tSYS_MBSTOWCS                        = 0x085\n\tSYS___LOG1PL_B                      = 0x85A\n\tSYS___LOG2F_B                       = 0x85B\n\tSYS___LOG2L_B                       = 0x85D\n\tSYS___LOG2_B                        = 0x85C\n\tSYS___REMAINDERF_B                  = 0x85E\n\tSYS___REMAINDERL_B                  = 0x85F\n\tSYS_ACOSHF                          = 0x86E\n\tSYS_ACOSHL                          = 0x86F\n\tSYS_WCSCPY                          = 0x086\n\tSYS___ERFCF_B                       = 0x86D\n\tSYS___ERFF_B                        = 0x86C\n\tSYS___LROUNDF_B                     = 0x86A\n\tSYS___LROUND_B                      = 0x86B\n\tSYS_COTANL                          = 0x87A\n\tSYS_EXP2F                           = 0x87B\n\tSYS_EXP2L                           = 0x87C\n\tSYS_EXPM1F                          = 0x87D\n\tSYS_EXPM1L                          = 0x87E\n\tSYS_FDIMF                           = 0x87F\n\tSYS_WCSCAT                          = 0x087\n\tSYS___COTANL                        = 0x87A\n\tSYS_REMAINDERF                      = 0x88A\n\tSYS_REMAINDERL                      = 0x88B\n\tSYS_REMAINDF                        = 0x88A\n\tSYS_REMAINDL                        = 0x88B\n\tSYS_REMQUO                          = 0x88D\n\tSYS_REMQUOF                         = 0x88C\n\tSYS_REMQUOL                         = 0x88E\n\tSYS_TGAMMAF                         = 0x88F\n\tSYS_WCSCHR                          = 0x088\n\tSYS_ERFCF                           = 0x89B\n\tSYS_ERFCL                           = 0x89C\n\tSYS_ERFL                            = 0x89A\n\tSYS_EXP2                            = 0x89E\n\tSYS_WCSCMP                          = 0x089\n\tSYS___EXP2_B                        = 0x89D\n\tSYS___FAR_JUMP                      = 0x89F\n\tSYS_ABS                             = 0x090\n\tSYS___ERFCL_H                       = 0x90A\n\tSYS___EXPF_H                        = 0x90C\n\tSYS___EXPL_H                        = 0x90D\n\tSYS___EXPM1_H                       = 0x90E\n\tSYS___EXP_H                         = 0x90B\n\tSYS___FDIM_H                        = 0x90F\n\tSYS_DIV                             = 0x091\n\tSYS___LOG2F_H                       = 0x91F\n\tSYS___LOG2_H                        = 0x91E\n\tSYS___LOGB_H                        = 0x91D\n\tSYS___LOGF_H                        = 0x91B\n\tSYS___LOGL_H                        = 0x91C\n\tSYS___LOG_H                         = 0x91A\n\tSYS_LABS                            = 0x092\n\tSYS___POWL_H                        = 0x92A\n\tSYS___REMAINDER_H                   = 0x92B\n\tSYS___RINT_H                        = 0x92C\n\tSYS___SCALB_H                       = 0x92D\n\tSYS___SINF_H                        = 0x92F\n\tSYS___SIN_H                         = 0x92E\n\tSYS_STRNCPY                         = 0x093\n\tSYS___TANHF_H                       = 0x93B\n\tSYS___TANHL_H                       = 0x93C\n\tSYS___TANH_H                        = 0x93A\n\tSYS___TGAMMAF_H                     = 0x93E\n\tSYS___TGAMMA_H                      = 0x93D\n\tSYS___TRUNC_H                       = 0x93F\n\tSYS_MEMCPY                          = 0x094\n\tSYS_VFWSCANF                        = 0x94A\n\tSYS_VSWSCANF                        = 0x94E\n\tSYS_VWSCANF                         = 0x94C\n\tSYS_INET6_RTH_ADD                   = 0x95D\n\tSYS_INET6_RTH_INIT                  = 0x95C\n\tSYS_INET6_RTH_REVERSE               = 0x95E\n\tSYS_INET6_RTH_SEGMENTS              = 0x95F\n\tSYS_INET6_RTH_SPACE                 = 0x95B\n\tSYS_MEMMOVE                         = 0x095\n\tSYS_WCSTOLD                         = 0x95A\n\tSYS_STRCPY                          = 0x096\n\tSYS_STRCMP                          = 0x097\n\tSYS_CABS                            = 0x98E\n\tSYS_STRCAT                          = 0x098\n\tSYS___CABS_B                        = 0x98F\n\tSYS___POW_II                        = 0x98A\n\tSYS___POW_II_B                      = 0x98B\n\tSYS___POW_II_H                      = 0x98C\n\tSYS_CACOSF                          = 0x99A\n\tSYS_CACOSL                          = 0x99D\n\tSYS_STRNCAT                         = 0x099\n\tSYS___CACOSF_B                      = 0x99B\n\tSYS___CACOSF_H                      = 0x99C\n\tSYS___CACOSL_B                      = 0x99E\n\tSYS___CACOSL_H                      = 0x99F\n\tSYS_ISWALPHA                        = 0x100\n\tSYS_ISWBLANK                        = 0x101\n\tSYS___ISWBLK                        = 0x101\n\tSYS_ISWCNTRL                        = 0x102\n\tSYS_ISWDIGIT                        = 0x103\n\tSYS_ISWGRAPH                        = 0x104\n\tSYS_ISWLOWER                        = 0x105\n\tSYS_ISWPRINT                        = 0x106\n\tSYS_ISWPUNCT                        = 0x107\n\tSYS_ISWSPACE                        = 0x108\n\tSYS_ISWUPPER                        = 0x109\n\tSYS_WCTOB                           = 0x110\n\tSYS_MBRLEN                          = 0x111\n\tSYS_MBRTOWC                         = 0x112\n\tSYS_MBSRTOWC                        = 0x113\n\tSYS_MBSRTOWCS                       = 0x113\n\tSYS_WCRTOMB                         = 0x114\n\tSYS_WCSRTOMB                        = 0x115\n\tSYS_WCSRTOMBS                       = 0x115\n\tSYS___CSID                          = 0x116\n\tSYS___WCSID                         = 0x117\n\tSYS_STRPTIME                        = 0x118\n\tSYS___STRPTM                        = 0x118\n\tSYS_STRFMON                         = 0x119\n\tSYS_WCSCOLL                         = 0x130\n\tSYS_WCSXFRM                         = 0x131\n\tSYS_WCSWIDTH                        = 0x132\n\tSYS_WCWIDTH                         = 0x133\n\tSYS_WCSFTIME                        = 0x134\n\tSYS_SWPRINTF                        = 0x135\n\tSYS_VSWPRINT                        = 0x136\n\tSYS_VSWPRINTF                       = 0x136\n\tSYS_SWSCANF                         = 0x137\n\tSYS_REGCOMP                         = 0x138\n\tSYS_REGEXEC                         = 0x139\n\tSYS_GETWC                           = 0x140\n\tSYS_GETWCHAR                        = 0x141\n\tSYS_PUTWC                           = 0x142\n\tSYS_PUTWCHAR                        = 0x143\n\tSYS_UNGETWC                         = 0x144\n\tSYS_ICONV_OPEN                      = 0x145\n\tSYS_ICONV                           = 0x146\n\tSYS_ICONV_CLOSE                     = 0x147\n\tSYS_COLLRANGE                       = 0x150\n\tSYS_CCLASS                          = 0x151\n\tSYS_COLLORDER                       = 0x152\n\tSYS___DEMANGLE                      = 0x154\n\tSYS_FDOPEN                          = 0x155\n\tSYS___ERRNO                         = 0x156\n\tSYS___ERRNO2                        = 0x157\n\tSYS___TERROR                        = 0x158\n\tSYS_MAXCOLL                         = 0x169\n\tSYS_DLLLOAD                         = 0x170\n\tSYS__EXIT                           = 0x174\n\tSYS_ACCESS                          = 0x175\n\tSYS_ALARM                           = 0x176\n\tSYS_CFGETISPEED                     = 0x177\n\tSYS_CFGETOSPEED                     = 0x178\n\tSYS_CFSETISPEED                     = 0x179\n\tSYS_CREAT                           = 0x180\n\tSYS_CTERMID                         = 0x181\n\tSYS_DUP                             = 0x182\n\tSYS_DUP2                            = 0x183\n\tSYS_EXECL                           = 0x184\n\tSYS_EXECLE                          = 0x185\n\tSYS_EXECLP                          = 0x186\n\tSYS_EXECV                           = 0x187\n\tSYS_EXECVE                          = 0x188\n\tSYS_EXECVP                          = 0x189\n\tSYS_FSTAT                           = 0x190\n\tSYS_FSYNC                           = 0x191\n\tSYS_FTRUNCATE                       = 0x192\n\tSYS_GETCWD                          = 0x193\n\tSYS_GETEGID                         = 0x194\n\tSYS_GETEUID                         = 0x195\n\tSYS_GETGID                          = 0x196\n\tSYS_GETGRGID                        = 0x197\n\tSYS_GETGRNAM                        = 0x198\n\tSYS_GETGROUPS                       = 0x199\n\tSYS_PTHREAD_MUTEXATTR_DESTROY       = 0x200\n\tSYS_PTHREAD_MUTEXATTR_SETKIND_NP    = 0x201\n\tSYS_PTHREAD_MUTEXATTR_GETKIND_NP    = 0x202\n\tSYS_PTHREAD_MUTEX_INIT              = 0x203\n\tSYS_PTHREAD_MUTEX_DESTROY           = 0x204\n\tSYS_PTHREAD_MUTEX_LOCK              = 0x205\n\tSYS_PTHREAD_MUTEX_TRYLOCK           = 0x206\n\tSYS_PTHREAD_MUTEX_UNLOCK            = 0x207\n\tSYS_PTHREAD_ONCE                    = 0x209\n\tSYS_TW_OPEN                         = 0x210\n\tSYS_TW_FCNTL                        = 0x211\n\tSYS_PTHREAD_JOIN_D4_NP              = 0x212\n\tSYS_PTHREAD_CONDATTR_SETKIND_NP     = 0x213\n\tSYS_PTHREAD_CONDATTR_GETKIND_NP     = 0x214\n\tSYS_EXTLINK_NP                      = 0x215\n\tSYS___PASSWD                        = 0x216\n\tSYS_SETGROUPS                       = 0x217\n\tSYS_INITGROUPS                      = 0x218\n\tSYS_WCSRCHR                         = 0x240\n\tSYS_SVC99                           = 0x241\n\tSYS___SVC99                         = 0x241\n\tSYS_WCSWCS                          = 0x242\n\tSYS_LOCALECO                        = 0x243\n\tSYS_LOCALECONV                      = 0x243\n\tSYS___LIBREL                        = 0x244\n\tSYS_RELEASE                         = 0x245\n\tSYS___RLSE                          = 0x245\n\tSYS_FLOCATE                         = 0x246\n\tSYS___FLOCT                         = 0x246\n\tSYS_FDELREC                         = 0x247\n\tSYS___FDLREC                        = 0x247\n\tSYS_FETCH                           = 0x248\n\tSYS___FETCH                         = 0x248\n\tSYS_QSORT                           = 0x249\n\tSYS___CLEANUPCATCH                  = 0x260\n\tSYS___CATCHMATCH                    = 0x261\n\tSYS___CLEAN2UPCATCH                 = 0x262\n\tSYS_GETPRIORITY                     = 0x270\n\tSYS_NICE                            = 0x271\n\tSYS_SETPRIORITY                     = 0x272\n\tSYS_GETITIMER                       = 0x273\n\tSYS_SETITIMER                       = 0x274\n\tSYS_MSGCTL                          = 0x275\n\tSYS_MSGGET                          = 0x276\n\tSYS_MSGRCV                          = 0x277\n\tSYS_MSGSND                          = 0x278\n\tSYS_MSGXRCV                         = 0x279\n\tSYS___MSGXR                         = 0x279\n\tSYS_SHMGET                          = 0x280\n\tSYS___GETIPC                        = 0x281\n\tSYS_SETGRENT                        = 0x282\n\tSYS_GETGRENT                        = 0x283\n\tSYS_ENDGRENT                        = 0x284\n\tSYS_SETPWENT                        = 0x285\n\tSYS_GETPWENT                        = 0x286\n\tSYS_ENDPWENT                        = 0x287\n\tSYS_BSD_SIGNAL                      = 0x288\n\tSYS_KILLPG                          = 0x289\n\tSYS_SIGSET                          = 0x290\n\tSYS_SIGSTACK                        = 0x291\n\tSYS_GETRLIMIT                       = 0x292\n\tSYS_SETRLIMIT                       = 0x293\n\tSYS_GETRUSAGE                       = 0x294\n\tSYS_MMAP                            = 0x295\n\tSYS_MPROTECT                        = 0x296\n\tSYS_MSYNC                           = 0x297\n\tSYS_MUNMAP                          = 0x298\n\tSYS_CONFSTR                         = 0x299\n\tSYS___NDMTRM                        = 0x300\n\tSYS_FTOK                            = 0x301\n\tSYS_BASENAME                        = 0x302\n\tSYS_DIRNAME                         = 0x303\n\tSYS_GETDTABLESIZE                   = 0x304\n\tSYS_MKSTEMP                         = 0x305\n\tSYS_MKTEMP                          = 0x306\n\tSYS_NFTW                            = 0x307\n\tSYS_GETWD                           = 0x308\n\tSYS_LOCKF                           = 0x309\n\tSYS_WORDEXP                         = 0x310\n\tSYS_WORDFREE                        = 0x311\n\tSYS_GETPGID                         = 0x312\n\tSYS_GETSID                          = 0x313\n\tSYS___UTMPXNAME                     = 0x314\n\tSYS_CUSERID                         = 0x315\n\tSYS_GETPASS                         = 0x316\n\tSYS_FNMATCH                         = 0x317\n\tSYS_FTW                             = 0x318\n\tSYS_GETW                            = 0x319\n\tSYS_ACOSH                           = 0x320\n\tSYS_ASINH                           = 0x321\n\tSYS_ATANH                           = 0x322\n\tSYS_CBRT                            = 0x323\n\tSYS_EXPM1                           = 0x324\n\tSYS_ILOGB                           = 0x325\n\tSYS_LOGB                            = 0x326\n\tSYS_LOG1P                           = 0x327\n\tSYS_NEXTAFTER                       = 0x328\n\tSYS_RINT                            = 0x329\n\tSYS_SPAWN                           = 0x330\n\tSYS_SPAWNP                          = 0x331\n\tSYS_GETLOGIN_UU                     = 0x332\n\tSYS_ECVT                            = 0x333\n\tSYS_FCVT                            = 0x334\n\tSYS_GCVT                            = 0x335\n\tSYS_ACCEPT                          = 0x336\n\tSYS_BIND                            = 0x337\n\tSYS_CONNECT                         = 0x338\n\tSYS_ENDHOSTENT                      = 0x339\n\tSYS_GETHOSTENT                      = 0x340\n\tSYS_GETHOSTID                       = 0x341\n\tSYS_GETHOSTNAME                     = 0x342\n\tSYS_GETNETBYADDR                    = 0x343\n\tSYS_GETNETBYNAME                    = 0x344\n\tSYS_GETNETENT                       = 0x345\n\tSYS_GETPEERNAME                     = 0x346\n\tSYS_GETPROTOBYNAME                  = 0x347\n\tSYS_GETPROTOBYNUMBER                = 0x348\n\tSYS_GETPROTOENT                     = 0x349\n\tSYS_INET_LNAOF                      = 0x350\n\tSYS_INET_MAKEADDR                   = 0x351\n\tSYS_INET_NETOF                      = 0x352\n\tSYS_INET_NETWORK                    = 0x353\n\tSYS_INET_NTOA                       = 0x354\n\tSYS_IOCTL                           = 0x355\n\tSYS_LISTEN                          = 0x356\n\tSYS_READV                           = 0x357\n\tSYS_RECV                            = 0x358\n\tSYS_RECVFROM                        = 0x359\n\tSYS_SETHOSTENT                      = 0x360\n\tSYS_SETNETENT                       = 0x361\n\tSYS_SETPEER                         = 0x362\n\tSYS_SETPROTOENT                     = 0x363\n\tSYS_SETSERVENT                      = 0x364\n\tSYS_SETSOCKOPT                      = 0x365\n\tSYS_SHUTDOWN                        = 0x366\n\tSYS_SOCKET                          = 0x367\n\tSYS_SOCKETPAIR                      = 0x368\n\tSYS_WRITEV                          = 0x369\n\tSYS_ENDNETENT                       = 0x370\n\tSYS_CLOSELOG                        = 0x371\n\tSYS_OPENLOG                         = 0x372\n\tSYS_SETLOGMASK                      = 0x373\n\tSYS_SYSLOG                          = 0x374\n\tSYS_PTSNAME                         = 0x375\n\tSYS_SETREUID                        = 0x376\n\tSYS_SETREGID                        = 0x377\n\tSYS_REALPATH                        = 0x378\n\tSYS___SIGNGAM                       = 0x379\n\tSYS_POLL                            = 0x380\n\tSYS_REXEC                           = 0x381\n\tSYS___ISASCII2                      = 0x382\n\tSYS___TOASCII2                      = 0x383\n\tSYS_CHPRIORITY                      = 0x384\n\tSYS_PTHREAD_ATTR_SETSYNCTYPE_NP     = 0x385\n\tSYS_PTHREAD_ATTR_GETSYNCTYPE_NP     = 0x386\n\tSYS_PTHREAD_SET_LIMIT_NP            = 0x387\n\tSYS___STNETENT                      = 0x388\n\tSYS___STPROTOENT                    = 0x389\n\tSYS___SELECT1                       = 0x390\n\tSYS_PTHREAD_SECURITY_NP             = 0x391\n\tSYS___CHECK_RESOURCE_AUTH_NP        = 0x392\n\tSYS___CONVERT_ID_NP                 = 0x393\n\tSYS___OPENVMREL                     = 0x394\n\tSYS_WMEMCHR                         = 0x395\n\tSYS_WMEMCMP                         = 0x396\n\tSYS_WMEMCPY                         = 0x397\n\tSYS_WMEMMOVE                        = 0x398\n\tSYS_WMEMSET                         = 0x399\n\tSYS___FPUTWC                        = 0x400\n\tSYS___PUTWC                         = 0x401\n\tSYS___PWCHAR                        = 0x402\n\tSYS___WCSFTM                        = 0x403\n\tSYS___WCSTOK                        = 0x404\n\tSYS___WCWDTH                        = 0x405\n\tSYS_T_ACCEPT                        = 0x409\n\tSYS_T_GETINFO                       = 0x410\n\tSYS_T_GETPROTADDR                   = 0x411\n\tSYS_T_GETSTATE                      = 0x412\n\tSYS_T_LISTEN                        = 0x413\n\tSYS_T_LOOK                          = 0x414\n\tSYS_T_OPEN                          = 0x415\n\tSYS_T_OPTMGMT                       = 0x416\n\tSYS_T_RCV                           = 0x417\n\tSYS_T_RCVCONNECT                    = 0x418\n\tSYS_T_RCVDIS                        = 0x419\n\tSYS_T_SNDUDATA                      = 0x420\n\tSYS_T_STRERROR                      = 0x421\n\tSYS_T_SYNC                          = 0x422\n\tSYS_T_UNBIND                        = 0x423\n\tSYS___T_ERRNO                       = 0x424\n\tSYS___RECVMSG2                      = 0x425\n\tSYS___SENDMSG2                      = 0x426\n\tSYS_FATTACH                         = 0x427\n\tSYS_FDETACH                         = 0x428\n\tSYS_GETMSG                          = 0x429\n\tSYS_GETCONTEXT                      = 0x430\n\tSYS_SETCONTEXT                      = 0x431\n\tSYS_MAKECONTEXT                     = 0x432\n\tSYS_SWAPCONTEXT                     = 0x433\n\tSYS_PTHREAD_GETSPECIFIC_D8_NP       = 0x434\n\tSYS_GETCLIENTID                     = 0x470\n\tSYS___GETCLIENTID                   = 0x471\n\tSYS_GETSTABLESIZE                   = 0x472\n\tSYS_GETIBMOPT                       = 0x473\n\tSYS_GETIBMSOCKOPT                   = 0x474\n\tSYS_GIVESOCKET                      = 0x475\n\tSYS_IBMSFLUSH                       = 0x476\n\tSYS_MAXDESC                         = 0x477\n\tSYS_SETIBMOPT                       = 0x478\n\tSYS_SETIBMSOCKOPT                   = 0x479\n\tSYS___SERVER_PWU                    = 0x480\n\tSYS_PTHREAD_TAG_NP                  = 0x481\n\tSYS___CONSOLE                       = 0x482\n\tSYS___WSINIT                        = 0x483\n\tSYS___IPTCPN                        = 0x489\n\tSYS___SERVER_CLASSIFY               = 0x490\n\tSYS___HEAPRPT                       = 0x496\n\tSYS___ISBFP                         = 0x500\n\tSYS___FP_CAST                       = 0x501\n\tSYS___CERTIFICATE                   = 0x502\n\tSYS_SEND_FILE                       = 0x503\n\tSYS_AIO_CANCEL                      = 0x504\n\tSYS_AIO_ERROR                       = 0x505\n\tSYS_AIO_READ                        = 0x506\n\tSYS_AIO_RETURN                      = 0x507\n\tSYS_AIO_SUSPEND                     = 0x508\n\tSYS_AIO_WRITE                       = 0x509\n\tSYS_PTHREAD_RWLOCK_TRYWRLOCK        = 0x510\n\tSYS_PTHREAD_RWLOCK_UNLOCK           = 0x511\n\tSYS_PTHREAD_RWLOCK_WRLOCK           = 0x512\n\tSYS_PTHREAD_RWLOCKATTR_GETPSHARED   = 0x513\n\tSYS_PTHREAD_RWLOCKATTR_SETPSHARED   = 0x514\n\tSYS_PTHREAD_RWLOCKATTR_INIT         = 0x515\n\tSYS_PTHREAD_RWLOCKATTR_DESTROY      = 0x516\n\tSYS___CTTBL                         = 0x517\n\tSYS_PTHREAD_MUTEXATTR_SETTYPE       = 0x518\n\tSYS_PTHREAD_MUTEXATTR_GETTYPE       = 0x519\n\tSYS___FP_UNORDERED                  = 0x520\n\tSYS___FP_READ_RND                   = 0x521\n\tSYS___FP_READ_RND_B                 = 0x522\n\tSYS___FP_SWAP_RND                   = 0x523\n\tSYS___FP_SWAP_RND_B                 = 0x524\n\tSYS___FP_LEVEL                      = 0x525\n\tSYS___FP_BTOH                       = 0x526\n\tSYS___FP_HTOB                       = 0x527\n\tSYS___FPC_RD                        = 0x528\n\tSYS___FPC_WR                        = 0x529\n\tSYS_PTHREAD_SETCANCELTYPE           = 0x600\n\tSYS_PTHREAD_TESTCANCEL              = 0x601\n\tSYS___ATANF_B                       = 0x602\n\tSYS___ATANL_B                       = 0x603\n\tSYS___CEILF_B                       = 0x604\n\tSYS___CEILL_B                       = 0x605\n\tSYS___COSF_B                        = 0x606\n\tSYS___COSL_B                        = 0x607\n\tSYS___FABSF_B                       = 0x608\n\tSYS___FABSL_B                       = 0x609\n\tSYS___SINF_B                        = 0x610\n\tSYS___SINL_B                        = 0x611\n\tSYS___TANF_B                        = 0x612\n\tSYS___TANL_B                        = 0x613\n\tSYS___TANHF_B                       = 0x614\n\tSYS___TANHL_B                       = 0x615\n\tSYS___ACOSF_B                       = 0x616\n\tSYS___ACOSL_B                       = 0x617\n\tSYS___ASINF_B                       = 0x618\n\tSYS___ASINL_B                       = 0x619\n\tSYS___LOGF_B                        = 0x620\n\tSYS___LOGL_B                        = 0x621\n\tSYS___LOG10F_B                      = 0x622\n\tSYS___LOG10L_B                      = 0x623\n\tSYS___POWF_B                        = 0x624\n\tSYS___POWL_B                        = 0x625\n\tSYS___SINHF_B                       = 0x626\n\tSYS___SINHL_B                       = 0x627\n\tSYS___SQRTF_B                       = 0x628\n\tSYS___SQRTL_B                       = 0x629\n\tSYS___MODFL_B                       = 0x630\n\tSYS_ABSF                            = 0x631\n\tSYS_ABSL                            = 0x632\n\tSYS_ACOSF                           = 0x633\n\tSYS_ACOSL                           = 0x634\n\tSYS_ASINF                           = 0x635\n\tSYS_ASINL                           = 0x636\n\tSYS_ATAN2F                          = 0x637\n\tSYS_ATAN2L                          = 0x638\n\tSYS_ATANF                           = 0x639\n\tSYS_COSHL                           = 0x640\n\tSYS_EXPF                            = 0x641\n\tSYS_EXPL                            = 0x642\n\tSYS_TANHF                           = 0x643\n\tSYS_TANHL                           = 0x644\n\tSYS_LOG10F                          = 0x645\n\tSYS_LOG10L                          = 0x646\n\tSYS_LOGF                            = 0x647\n\tSYS_LOGL                            = 0x648\n\tSYS_POWF                            = 0x649\n\tSYS_SINHL                           = 0x650\n\tSYS_TANF                            = 0x651\n\tSYS_TANL                            = 0x652\n\tSYS_FABSF                           = 0x653\n\tSYS_FABSL                           = 0x654\n\tSYS_FLOORF                          = 0x655\n\tSYS_FLOORL                          = 0x656\n\tSYS_FMODF                           = 0x657\n\tSYS_FMODL                           = 0x658\n\tSYS_FREXPF                          = 0x659\n\tSYS___CHATTR                        = 0x660\n\tSYS___FCHATTR                       = 0x661\n\tSYS___TOCCSID                       = 0x662\n\tSYS___CSNAMETYPE                    = 0x663\n\tSYS___TOCSNAME                      = 0x664\n\tSYS___CCSIDTYPE                     = 0x665\n\tSYS___AE_CORRESTBL_QUERY            = 0x666\n\tSYS___AE_AUTOCONVERT_STATE          = 0x667\n\tSYS_DN_FIND                         = 0x668\n\tSYS___GETHOSTBYADDR_A               = 0x669\n\tSYS___MBLEN_SB_A                    = 0x670\n\tSYS___MBLEN_STD_A                   = 0x671\n\tSYS___MBLEN_UTF                     = 0x672\n\tSYS___MBSTOWCS_A                    = 0x673\n\tSYS___MBSTOWCS_STD_A                = 0x674\n\tSYS___MBTOWC_A                      = 0x675\n\tSYS___MBTOWC_ISO1                   = 0x676\n\tSYS___MBTOWC_SBCS                   = 0x677\n\tSYS___MBTOWC_MBCS                   = 0x678\n\tSYS___MBTOWC_UTF                    = 0x679\n\tSYS___CSID_A                        = 0x680\n\tSYS___CSID_STD_A                    = 0x681\n\tSYS___WCSID_A                       = 0x682\n\tSYS___WCSID_STD_A                   = 0x683\n\tSYS___WCTOMB_A                      = 0x684\n\tSYS___WCTOMB_ISO1                   = 0x685\n\tSYS___WCTOMB_STD_A                  = 0x686\n\tSYS___WCTOMB_UTF                    = 0x687\n\tSYS___WCWIDTH_A                     = 0x688\n\tSYS___GETGRNAM_R_A                  = 0x689\n\tSYS___READDIR_R_A                   = 0x690\n\tSYS___E2A_S                         = 0x691\n\tSYS___FNMATCH_A                     = 0x692\n\tSYS___FNMATCH_C_A                   = 0x693\n\tSYS___EXECL_A                       = 0x694\n\tSYS___FNMATCH_STD_A                 = 0x695\n\tSYS___REGCOMP_A                     = 0x696\n\tSYS___REGCOMP_STD_A                 = 0x697\n\tSYS___REGERROR_A                    = 0x698\n\tSYS___REGERROR_STD_A                = 0x699\n\tSYS___SWPRINTF_A                    = 0x700\n\tSYS___FSCANF_A                      = 0x701\n\tSYS___SCANF_A                       = 0x702\n\tSYS___SSCANF_A                      = 0x703\n\tSYS___SWSCANF_A                     = 0x704\n\tSYS___ATOF_A                        = 0x705\n\tSYS___ATOI_A                        = 0x706\n\tSYS___ATOL_A                        = 0x707\n\tSYS___STRTOD_A                      = 0x708\n\tSYS___STRTOL_A                      = 0x709\n\tSYS___L64A_A                        = 0x710\n\tSYS___STRERROR_A                    = 0x711\n\tSYS___PERROR_A                      = 0x712\n\tSYS___FETCH_A                       = 0x713\n\tSYS___GETENV_A                      = 0x714\n\tSYS___MKSTEMP_A                     = 0x717\n\tSYS___PTSNAME_A                     = 0x718\n\tSYS___PUTENV_A                      = 0x719\n\tSYS___CHDIR_A                       = 0x720\n\tSYS___CHOWN_A                       = 0x721\n\tSYS___CHROOT_A                      = 0x722\n\tSYS___GETCWD_A                      = 0x723\n\tSYS___GETWD_A                       = 0x724\n\tSYS___LCHOWN_A                      = 0x725\n\tSYS___LINK_A                        = 0x726\n\tSYS___PATHCONF_A                    = 0x727\n\tSYS___IF_NAMEINDEX_A                = 0x728\n\tSYS___READLINK_A                    = 0x729\n\tSYS___EXTLINK_NP_A                  = 0x730\n\tSYS___ISALNUM_A                     = 0x731\n\tSYS___ISALPHA_A                     = 0x732\n\tSYS___A2E_S                         = 0x733\n\tSYS___ISCNTRL_A                     = 0x734\n\tSYS___ISDIGIT_A                     = 0x735\n\tSYS___ISGRAPH_A                     = 0x736\n\tSYS___ISLOWER_A                     = 0x737\n\tSYS___ISPRINT_A                     = 0x738\n\tSYS___ISPUNCT_A                     = 0x739\n\tSYS___ISWALPHA_A                    = 0x740\n\tSYS___A2E_L                         = 0x741\n\tSYS___ISWCNTRL_A                    = 0x742\n\tSYS___ISWDIGIT_A                    = 0x743\n\tSYS___ISWGRAPH_A                    = 0x744\n\tSYS___ISWLOWER_A                    = 0x745\n\tSYS___ISWPRINT_A                    = 0x746\n\tSYS___ISWPUNCT_A                    = 0x747\n\tSYS___ISWSPACE_A                    = 0x748\n\tSYS___ISWUPPER_A                    = 0x749\n\tSYS___REMOVE_A                      = 0x750\n\tSYS___RENAME_A                      = 0x751\n\tSYS___TMPNAM_A                      = 0x752\n\tSYS___FOPEN_A                       = 0x753\n\tSYS___FREOPEN_A                     = 0x754\n\tSYS___CUSERID_A                     = 0x755\n\tSYS___POPEN_A                       = 0x756\n\tSYS___TEMPNAM_A                     = 0x757\n\tSYS___FTW_A                         = 0x758\n\tSYS___GETGRENT_A                    = 0x759\n\tSYS___INET_NTOP_A                   = 0x760\n\tSYS___GETPASS_A                     = 0x761\n\tSYS___GETPWENT_A                    = 0x762\n\tSYS___GETPWNAM_A                    = 0x763\n\tSYS___GETPWUID_A                    = 0x764\n\tSYS_____CHECK_RESOURCE_AUTH_NP_A    = 0x765\n\tSYS___CHECKSCHENV_A                 = 0x766\n\tSYS___CONNECTSERVER_A               = 0x767\n\tSYS___CONNECTWORKMGR_A              = 0x768\n\tSYS_____CONSOLE_A                   = 0x769\n\tSYS___MSGSND_A                      = 0x770\n\tSYS___MSGXRCV_A                     = 0x771\n\tSYS___NFTW_A                        = 0x772\n\tSYS_____PASSWD_A                    = 0x773\n\tSYS___PTHREAD_SECURITY_NP_A         = 0x774\n\tSYS___QUERYMETRICS_A                = 0x775\n\tSYS___QUERYSCHENV                   = 0x776\n\tSYS___READV_A                       = 0x777\n\tSYS_____SERVER_CLASSIFY_A           = 0x778\n\tSYS_____SERVER_INIT_A               = 0x779\n\tSYS___W_GETPSENT_A                  = 0x780\n\tSYS___WRITEV_A                      = 0x781\n\tSYS___W_STATFS_A                    = 0x782\n\tSYS___W_STATVFS_A                   = 0x783\n\tSYS___FPUTC_A                       = 0x784\n\tSYS___PUTCHAR_A                     = 0x785\n\tSYS___PUTS_A                        = 0x786\n\tSYS___FGETS_A                       = 0x787\n\tSYS___GETS_A                        = 0x788\n\tSYS___FPUTS_A                       = 0x789\n\tSYS___PUTC_A                        = 0x790\n\tSYS___AE_THREAD_SETMODE             = 0x791\n\tSYS___AE_THREAD_SWAPMODE            = 0x792\n\tSYS___GETNETBYADDR_A                = 0x793\n\tSYS___GETNETBYNAME_A                = 0x794\n\tSYS___GETNETENT_A                   = 0x795\n\tSYS___GETPROTOBYNAME_A              = 0x796\n\tSYS___GETPROTOBYNUMBER_A            = 0x797\n\tSYS___GETPROTOENT_A                 = 0x798\n\tSYS___GETSERVBYNAME_A               = 0x799\n\tSYS_ACL_FIRST_ENTRY                 = 0x800\n\tSYS_ACL_GET_ENTRY                   = 0x801\n\tSYS_ACL_VALID                       = 0x802\n\tSYS_ACL_CREATE_ENTRY                = 0x803\n\tSYS_ACL_DELETE_ENTRY                = 0x804\n\tSYS_ACL_UPDATE_ENTRY                = 0x805\n\tSYS_ACL_DELETE_FD                   = 0x806\n\tSYS_ACL_DELETE_FILE                 = 0x807\n\tSYS_ACL_GET_FD                      = 0x808\n\tSYS_ACL_GET_FILE                    = 0x809\n\tSYS___ERFL_B                        = 0x810\n\tSYS___ERFCL_B                       = 0x811\n\tSYS___LGAMMAL_B                     = 0x812\n\tSYS___SETHOOKEVENTS                 = 0x813\n\tSYS_IF_NAMETOINDEX                  = 0x814\n\tSYS_IF_INDEXTONAME                  = 0x815\n\tSYS_IF_NAMEINDEX                    = 0x816\n\tSYS_IF_FREENAMEINDEX                = 0x817\n\tSYS_GETADDRINFO                     = 0x818\n\tSYS_GETNAMEINFO                     = 0x819\n\tSYS___DYNFREE_A                     = 0x820\n\tSYS___RES_QUERY_A                   = 0x821\n\tSYS___RES_SEARCH_A                  = 0x822\n\tSYS___RES_QUERYDOMAIN_A             = 0x823\n\tSYS___RES_MKQUERY_A                 = 0x824\n\tSYS___RES_SEND_A                    = 0x825\n\tSYS___DN_EXPAND_A                   = 0x826\n\tSYS___DN_SKIPNAME_A                 = 0x827\n\tSYS___DN_COMP_A                     = 0x828\n\tSYS___DN_FIND_A                     = 0x829\n\tSYS___INET_NTOA_A                   = 0x830\n\tSYS___INET_NETWORK_A                = 0x831\n\tSYS___ACCEPT_A                      = 0x832\n\tSYS___ACCEPT_AND_RECV_A             = 0x833\n\tSYS___BIND_A                        = 0x834\n\tSYS___CONNECT_A                     = 0x835\n\tSYS___GETPEERNAME_A                 = 0x836\n\tSYS___GETSOCKNAME_A                 = 0x837\n\tSYS___RECVFROM_A                    = 0x838\n\tSYS___SENDTO_A                      = 0x839\n\tSYS___LCHATTR                       = 0x840\n\tSYS___WRITEDOWN                     = 0x841\n\tSYS_PTHREAD_MUTEX_INIT2             = 0x842\n\tSYS___ACOSHF_B                      = 0x843\n\tSYS___ACOSHL_B                      = 0x844\n\tSYS___ASINHF_B                      = 0x845\n\tSYS___ASINHL_B                      = 0x846\n\tSYS___ATANHF_B                      = 0x847\n\tSYS___ATANHL_B                      = 0x848\n\tSYS___CBRTF_B                       = 0x849\n\tSYS___EXP2F_B                       = 0x850\n\tSYS___EXP2L_B                       = 0x851\n\tSYS___EXPM1F_B                      = 0x852\n\tSYS___EXPM1L_B                      = 0x853\n\tSYS___FDIMF_B                       = 0x854\n\tSYS___FDIM_B                        = 0x855\n\tSYS___FDIML_B                       = 0x856\n\tSYS___HYPOTF_B                      = 0x857\n\tSYS___HYPOTL_B                      = 0x858\n\tSYS___LOG1PF_B                      = 0x859\n\tSYS___REMQUOF_B                     = 0x860\n\tSYS___REMQUO_B                      = 0x861\n\tSYS___REMQUOL_B                     = 0x862\n\tSYS___TGAMMAF_B                     = 0x863\n\tSYS___TGAMMA_B                      = 0x864\n\tSYS___TGAMMAL_B                     = 0x865\n\tSYS___TRUNCF_B                      = 0x866\n\tSYS___TRUNC_B                       = 0x867\n\tSYS___TRUNCL_B                      = 0x868\n\tSYS___LGAMMAF_B                     = 0x869\n\tSYS_ASINHF                          = 0x870\n\tSYS_ASINHL                          = 0x871\n\tSYS_ATANHF                          = 0x872\n\tSYS_ATANHL                          = 0x873\n\tSYS_CBRTF                           = 0x874\n\tSYS_CBRTL                           = 0x875\n\tSYS_COPYSIGNF                       = 0x876\n\tSYS_CPYSIGNF                        = 0x876\n\tSYS_COPYSIGNL                       = 0x877\n\tSYS_CPYSIGNL                        = 0x877\n\tSYS_COTANF                          = 0x878\n\tSYS___COTANF                        = 0x878\n\tSYS_COTAN                           = 0x879\n\tSYS___COTAN                         = 0x879\n\tSYS_FDIM                            = 0x881\n\tSYS_FDIML                           = 0x882\n\tSYS_HYPOTF                          = 0x883\n\tSYS_HYPOTL                          = 0x884\n\tSYS_LOG1PF                          = 0x885\n\tSYS_LOG1PL                          = 0x886\n\tSYS_LOG2F                           = 0x887\n\tSYS_LOG2                            = 0x888\n\tSYS_LOG2L                           = 0x889\n\tSYS_TGAMMA                          = 0x890\n\tSYS_TGAMMAL                         = 0x891\n\tSYS_TRUNCF                          = 0x892\n\tSYS_TRUNC                           = 0x893\n\tSYS_TRUNCL                          = 0x894\n\tSYS_LGAMMAF                         = 0x895\n\tSYS_LGAMMAL                         = 0x896\n\tSYS_LROUNDF                         = 0x897\n\tSYS_LROUND                          = 0x898\n\tSYS_ERFF                            = 0x899\n\tSYS___COSHF_H                       = 0x900\n\tSYS___COSHL_H                       = 0x901\n\tSYS___COTAN_H                       = 0x902\n\tSYS___COTANF_H                      = 0x903\n\tSYS___COTANL_H                      = 0x904\n\tSYS___ERF_H                         = 0x905\n\tSYS___ERFF_H                        = 0x906\n\tSYS___ERFL_H                        = 0x907\n\tSYS___ERFC_H                        = 0x908\n\tSYS___ERFCF_H                       = 0x909\n\tSYS___FDIMF_H                       = 0x910\n\tSYS___FDIML_H                       = 0x911\n\tSYS___FMOD_H                        = 0x912\n\tSYS___FMODF_H                       = 0x913\n\tSYS___FMODL_H                       = 0x914\n\tSYS___GAMMA_H                       = 0x915\n\tSYS___HYPOT_H                       = 0x916\n\tSYS___ILOGB_H                       = 0x917\n\tSYS___LGAMMA_H                      = 0x918\n\tSYS___LGAMMAF_H                     = 0x919\n\tSYS___LOG2L_H                       = 0x920\n\tSYS___LOG1P_H                       = 0x921\n\tSYS___LOG10_H                       = 0x922\n\tSYS___LOG10F_H                      = 0x923\n\tSYS___LOG10L_H                      = 0x924\n\tSYS___LROUND_H                      = 0x925\n\tSYS___LROUNDF_H                     = 0x926\n\tSYS___NEXTAFTER_H                   = 0x927\n\tSYS___POW_H                         = 0x928\n\tSYS___POWF_H                        = 0x929\n\tSYS___SINL_H                        = 0x930\n\tSYS___SINH_H                        = 0x931\n\tSYS___SINHF_H                       = 0x932\n\tSYS___SINHL_H                       = 0x933\n\tSYS___SQRT_H                        = 0x934\n\tSYS___SQRTF_H                       = 0x935\n\tSYS___SQRTL_H                       = 0x936\n\tSYS___TAN_H                         = 0x937\n\tSYS___TANF_H                        = 0x938\n\tSYS___TANL_H                        = 0x939\n\tSYS___TRUNCF_H                      = 0x940\n\tSYS___TRUNCL_H                      = 0x941\n\tSYS___COSH_H                        = 0x942\n\tSYS___LE_DEBUG_SET_RESUME_MCH       = 0x943\n\tSYS_VFSCANF                         = 0x944\n\tSYS_VSCANF                          = 0x946\n\tSYS_VSSCANF                         = 0x948\n\tSYS_IMAXABS                         = 0x950\n\tSYS_IMAXDIV                         = 0x951\n\tSYS_STRTOIMAX                       = 0x952\n\tSYS_STRTOUMAX                       = 0x953\n\tSYS_WCSTOIMAX                       = 0x954\n\tSYS_WCSTOUMAX                       = 0x955\n\tSYS_ATOLL                           = 0x956\n\tSYS_STRTOF                          = 0x957\n\tSYS_STRTOLD                         = 0x958\n\tSYS_WCSTOF                          = 0x959\n\tSYS_INET6_RTH_GETADDR               = 0x960\n\tSYS_INET6_OPT_INIT                  = 0x961\n\tSYS_INET6_OPT_APPEND                = 0x962\n\tSYS_INET6_OPT_FINISH                = 0x963\n\tSYS_INET6_OPT_SET_VAL               = 0x964\n\tSYS_INET6_OPT_NEXT                  = 0x965\n\tSYS_INET6_OPT_FIND                  = 0x966\n\tSYS_INET6_OPT_GET_VAL               = 0x967\n\tSYS___POW_I                         = 0x987\n\tSYS___POW_I_B                       = 0x988\n\tSYS___POW_I_H                       = 0x989\n\tSYS___CABS_H                        = 0x990\n\tSYS_CABSF                           = 0x991\n\tSYS___CABSF_B                       = 0x992\n\tSYS___CABSF_H                       = 0x993\n\tSYS_CABSL                           = 0x994\n\tSYS___CABSL_B                       = 0x995\n\tSYS___CABSL_H                       = 0x996\n\tSYS_CACOS                           = 0x997\n\tSYS___CACOS_B                       = 0x998\n\tSYS___CACOS_H                       = 0x999\n)\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_aix_ppc.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int32\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int32\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint32\n\ntype Stat_t struct {\n\tDev      uint32\n\tIno      uint32\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint32\n\tSize     int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int32\n\tBlocks   int32\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint32\n\tIno    uint32\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [2048]int32\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tLosigs uint32\n\tHisigs uint32\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint32\n\tBlocks    uint32\n\tBfree     uint32\n\tBavail    uint32\n\tFiles     uint32\n\tFfree     uint32\n\tFsid      Fsid_t\n\tVfstype   int32\n\tFsize     uint32\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_aix_ppc64.go",
    "content": "// cgo -godefs types_aix.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && aix\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x3ff\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype off64 int64\ntype off int64\ntype Mode_t uint32\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct{}\n\ntype Time_t int64\n\ntype Tms struct{}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Timezone struct {\n\tMinuteswest int32\n\tDsttime     int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype Pid_t int32\n\ntype _Gid_t uint32\n\ntype dev_t uint64\n\ntype Stat_t struct {\n\tDev      uint64\n\tIno      uint64\n\tMode     uint32\n\tNlink    int16\n\tFlag     uint16\n\tUid      uint32\n\tGid      uint32\n\tRdev     uint64\n\tSsize    int32\n\tAtim     Timespec\n\tMtim     Timespec\n\tCtim     Timespec\n\tBlksize  int64\n\tBlocks   int64\n\tVfstype  int32\n\tVfs      uint32\n\tType     uint32\n\tGen      uint32\n\tReserved [9]uint32\n\tPadto_ll uint32\n\tSize     int64\n}\n\ntype StatxTimestamp struct{}\n\ntype Statx_t struct{}\n\ntype Dirent struct {\n\tOffset uint64\n\tIno    uint64\n\tReclen uint16\n\tNamlen uint16\n\tName   [256]uint8\n\t_      [4]byte\n}\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [1023]uint8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [120]uint8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [1012]uint8\n}\n\ntype _Socklen uint32\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x404\n\tSizeofSockaddrUnix     = 0x401\n\tSizeofSockaddrDatalink = 0x80\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tSizeofIfMsghdr = 0x10\n)\n\ntype IfMsgHdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tAddrlen uint8\n\t_       [1]byte\n}\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\ntype Ustat_t struct{}\n\ntype Sigset_t struct {\n\tSet [4]uint64\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x1\n)\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [16]uint8\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  uint8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  uint16\n\tRevents uint16\n}\n\nconst (\n\tPOLLERR    = 0x4000\n\tPOLLHUP    = 0x2000\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x8000\n\tPOLLOUT    = 0x2\n\tPOLLPRI    = 0x4\n\tPOLLRDBAND = 0x20\n\tPOLLRDNORM = 0x10\n\tPOLLWRBAND = 0x40\n\tPOLLWRNORM = 0x2\n)\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tSysid  uint32\n\tPid    int32\n\tVfs    int32\n\tStart  int64\n\tLen    int64\n}\n\ntype Fsid_t struct {\n\tVal [2]uint32\n}\ntype Fsid64_t struct {\n\tVal [2]uint64\n}\n\ntype Statfs_t struct {\n\tVersion   int32\n\tType      int32\n\tBsize     uint64\n\tBlocks    uint64\n\tBfree     uint64\n\tBavail    uint64\n\tFiles     uint64\n\tFfree     uint64\n\tFsid      Fsid64_t\n\tVfstype   int32\n\tFsize     uint64\n\tVfsnumber int32\n\tVfsoff    int32\n\tVfslen    int32\n\tVfsvers   int32\n\tFname     [32]uint8\n\tFpack     [32]uint8\n\tName_max  int32\n\t_         [4]byte\n}\n\nconst RNDGETENTCNT = 0x80045200\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_darwin_amd64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\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\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\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_darwin_arm64.go",
    "content": "// cgo -godefs types_darwin.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && darwin\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     int32\n\tMode    uint16\n\tNlink   uint16\n\tIno     uint64\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tQspare  [2]int64\n}\n\ntype Statfs_t struct {\n\tBsize       uint32\n\tIosize      int32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        uint32\n\tFlags       uint32\n\tFssubtype   uint32\n\tFstypename  [16]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\tFlags_ext   uint32\n\tReserved    [7]uint32\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Fstore_t struct {\n\tFlags      uint32\n\tPosmode    int32\n\tOffset     int64\n\tLength     int64\n\tBytesalloc int64\n}\n\ntype Radvisory_t struct {\n\tOffset int64\n\tCount  int32\n\t_      [4]byte\n}\n\ntype Fbootstraptransfer_t struct {\n\tOffset int64\n\tLength uint64\n\tBuffer *byte\n}\n\ntype Log2phys_t struct {\n\tFlags uint32\n\t_     [16]byte\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype Dirent struct {\n\tIno     uint64\n\tSeekoff uint64\n\tReclen  uint16\n\tNamlen  uint16\n\tType    uint8\n\tName    [1024]int8\n\t_       [3]byte\n}\n\ntype Attrlist struct {\n\tBitmapcount uint16\n\tReserved    uint16\n\tCommonattr  uint32\n\tVolattr     uint32\n\tDirattr     uint32\n\tFileattr    uint32\n\tForkattr    uint32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype RawSockaddrCtl struct {\n\tSc_len      uint8\n\tSc_family   uint8\n\tSs_sysaddr  uint16\n\tSc_id       uint32\n\tSc_unit     uint32\n\tSc_reserved [5]uint32\n}\n\ntype RawSockaddrVM struct {\n\tLen       uint8\n\tFamily    uint8\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n}\n\ntype XVSockPCB struct {\n\tXv_len           uint32\n\tXv_vsockpp       uint64\n\tXvp_local_cid    uint32\n\tXvp_local_port   uint32\n\tXvp_remote_cid   uint32\n\tXvp_remote_port  uint32\n\tXvp_rxcnt        uint32\n\tXvp_txcnt        uint32\n\tXvp_peer_rxhiwat uint32\n\tXvp_peer_rxcnt   uint32\n\tXvp_last_pid     int32\n\tXvp_gencnt       uint64\n\tXv_socket        XSocket\n\t_                [4]byte\n}\n\ntype XSocket struct {\n\tXso_len      uint32\n\tXso_so       uint32\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\tSo_pcb       uint32\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSocket64 struct {\n\tXso_len      uint32\n\t_            [8]byte\n\tSo_type      int16\n\tSo_options   int16\n\tSo_linger    int16\n\tSo_state     int16\n\t_            [8]byte\n\tXso_protocol int32\n\tXso_family   int32\n\tSo_qlen      int16\n\tSo_incqlen   int16\n\tSo_qlimit    int16\n\tSo_timeo     int16\n\tSo_error     uint16\n\tSo_pgid      int32\n\tSo_oobmark   uint32\n\tSo_rcv       XSockbuf\n\tSo_snd       XSockbuf\n\tSo_uid       uint32\n}\n\ntype XSockbuf struct {\n\tCc    uint32\n\tHiwat uint32\n\tMbcnt uint32\n\tMbmax uint32\n\tLowat int32\n\tFlags int16\n\tTimeo int16\n}\n\ntype XVSockPgen struct {\n\tLen   uint32\n\tCount uint64\n\tGen   uint64\n\tSogen uint64\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\ntype TCPConnectionInfo struct {\n\tState               uint8\n\tSnd_wscale          uint8\n\tRcv_wscale          uint8\n\t_                   uint8\n\tOptions             uint32\n\tFlags               uint32\n\tRto                 uint32\n\tMaxseg              uint32\n\tSnd_ssthresh        uint32\n\tSnd_cwnd            uint32\n\tSnd_wnd             uint32\n\tSnd_sbbytes         uint32\n\tRcv_wnd             uint32\n\tRttcur              uint32\n\tSrtt                uint32\n\tRttvar              uint32\n\tTxpackets           uint64\n\tTxbytes             uint64\n\tTxretransmitbytes   uint64\n\tRxpackets           uint64\n\tRxbytes             uint64\n\tRxoutoforderbytes   uint64\n\tTxretransmitpackets uint64\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x6c\n\tSizeofSockaddrUnix      = 0x6a\n\tSizeofSockaddrDatalink  = 0x14\n\tSizeofSockaddrCtl       = 0x20\n\tSizeofSockaddrVM        = 0xc\n\tSizeofXvsockpcb         = 0xa8\n\tSizeofXSocket           = 0x64\n\tSizeofXSockbuf          = 0x18\n\tSizeofXVSockPgen        = 0x20\n\tSizeofXucred            = 0x4c\n\tSizeofLinger            = 0x8\n\tSizeofIovec             = 0x10\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofMsghdr            = 0x30\n\tSizeofCmsghdr           = 0xc\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofTCPConnectionInfo = 0x70\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\nconst (\n\tSizeofIfMsghdr    = 0x70\n\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\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\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       [2]byte\n}\n\ntype IfmaMsghdr2 struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tAddrs    int32\n\tFlags    int32\n\tIndex    uint16\n\tRefcount int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   int32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tState    uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval32\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag  uint64\n\tOflag  uint64\n\tCflag  uint64\n\tLflag  uint64\n\tCc     [20]uint8\n\tIspeed uint64\n\tOspeed uint64\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x2\n\tAT_REMOVEDIR        = 0x80\n\tAT_SYMLINK_FOLLOW   = 0x40\n\tAT_SYMLINK_NOFOLLOW = 0x20\n\tAT_EACCESS          = 0x10\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n\ntype CtlInfo struct {\n\tId   uint32\n\tName [96]byte\n}\n\nconst SizeofKinfoProc = 0x288\n\ntype Eproc struct {\n\tPaddr   uintptr\n\tSess    uintptr\n\tPcred   Pcred\n\tUcred   Ucred\n\tVm      Vmspace\n\tPpid    int32\n\tPgid    int32\n\tJobc    int16\n\tTdev    int32\n\tTpgid   int32\n\tTsess   uintptr\n\tWmesg   [8]byte\n\tXsize   int32\n\tXrssize int16\n\tXccount int16\n\tXswrss  int16\n\tFlag    int32\n\tLogin   [12]byte\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype ExternProc struct {\n\tP_starttime Timeval\n\tP_vmspace   *Vmspace\n\tP_sigacts   uintptr\n\tP_flag      int32\n\tP_stat      int8\n\tP_pid       int32\n\tP_oppid     int32\n\tP_dupfd     int32\n\tUser_stack  *int8\n\tExit_thread *byte\n\tP_debugger  int32\n\tSigwait     int32\n\tP_estcpu    uint32\n\tP_cpticks   int32\n\tP_pctcpu    uint32\n\tP_wchan     *byte\n\tP_wmesg     *int8\n\tP_swtime    uint32\n\tP_slptime   uint32\n\tP_realtimer Itimerval\n\tP_rtime     Timeval\n\tP_uticks    uint64\n\tP_sticks    uint64\n\tP_iticks    uint64\n\tP_traceflag int32\n\tP_tracep    uintptr\n\tP_siglist   int32\n\tP_textvp    uintptr\n\tP_holdcnt   int32\n\tP_sigmask   uint32\n\tP_sigignore uint32\n\tP_sigcatch  uint32\n\tP_priority  uint8\n\tP_usrpri    uint8\n\tP_nice      int8\n\tP_comm      [17]byte\n\tP_pgrp      uintptr\n\tP_addr      uintptr\n\tP_xstat     uint16\n\tP_acflag    uint16\n\tP_ru        *Rusage\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\ntype KinfoProc struct {\n\tProc  ExternProc\n\tEproc Eproc\n}\n\ntype Vmspace struct {\n\tDummy  int32\n\tDummy2 *int8\n\tDummy3 [5]int32\n\tDummy4 [3]*int8\n}\n\ntype Pcred struct {\n\tPc_lock  [72]int8\n\tPc_ucred uintptr\n\tP_ruid   uint32\n\tP_svuid  uint32\n\tP_rgid   uint32\n\tP_svgid  uint32\n\tP_refcnt int32\n\t_        [4]byte\n}\n\ntype Ucred struct {\n\tRef     int32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n}\n\ntype SysvIpcPerm struct {\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    uint16\n\t_    int32\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tLpid   int32\n\tCpid   int32\n\tNattch uint16\n\t_      [34]byte\n}\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_dragonfly_amd64.go",
    "content": "// cgo -godefs types_dragonfly.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && dragonfly\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tIno     uint64\n\tNlink   uint32\n\tDev     uint32\n\tMode    uint16\n\t_1      uint16\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\t_       uint32\n\tFlags   uint32\n\tGen     uint32\n\tLspare  int32\n\tBlksize int64\n\tQspare2 int64\n}\n\ntype Statfs_t struct {\n\tSpare2      int64\n\tBsize       int64\n\tIosize      int64\n\tBlocks      int64\n\tBfree       int64\n\tBavail      int64\n\tFiles       int64\n\tFfree       int64\n\tFsid        Fsid\n\tOwner       uint32\n\tType        int32\n\tFlags       int32\n\tSyncwrites  int64\n\tAsyncwrites int64\n\tFstypename  [16]byte\n\tMntonname   [80]byte\n\tSyncreads   int64\n\tAsyncreads  int64\n\tSpares1     int16\n\tMntfromname [80]byte\n\tSpares2     int16\n\tSpare       [2]int64\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno  uint64\n\tNamlen  uint16\n\tType    uint8\n\tUnused1 uint8\n\tUnused2 uint32\n\tName    [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n\tRcf    uint16\n\tRoute  [16]uint16\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xb0\n\tSizeofIfData           = 0xa0\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tRecvquota  uint8\n\tXmitquota  uint8\n\tMtu        uint64\n\tMetric     uint64\n\tLink_state uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\tOqdrops    uint64\n\tLastchange Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tFlags     int32\n\tAddrs     int32\n\tAddrflags int32\n\tMetric    int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks     uint64\n\tMtu       uint64\n\tPksent    uint64\n\tExpire    uint64\n\tSendpipe  uint64\n\tSsthresh  uint64\n\tRtt       uint64\n\tRttvar    uint64\n\tRecvpipe  uint64\n\tHopcount  uint64\n\tMssopt    uint16\n\tPad       uint16\n\tMsl       uint64\n\tIwmaxsegs uint64\n\tIwcapsegs uint64\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = 0xfffafdcd\n\tAT_SYMLINK_NOFOLLOW = 0x1\n\tAT_REMOVEDIR        = 0x2\n\tAT_EACCESS          = 0x4\n\tAT_SYMLINK_FOLLOW   = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Utsname struct {\n\tSysname  [32]byte\n\tNodename [32]byte\n\tRelease  [32]byte\n\tVersion  [32]byte\n\tMachine  [32]byte\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_freebsd_386.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Time_t int32\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\t_       int32\n\tAtim    Timespec\n\t_       int32\n\tMtim    Timespec\n\t_       int32\n\tCtim    Timespec\n\t_       int32\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tFs     uint32\n\tEs     uint32\n\tDs     uint32\n\tEdi    uint32\n\tEsi    uint32\n\tEbp    uint32\n\tIsp    uint32\n\tEbx    uint32\n\tEdx    uint32\n\tEcx    uint32\n\tEax    uint32\n\tTrapno uint32\n\tErr    uint32\n\tEip    uint32\n\tCs     uint32\n\tEflags uint32\n\tEsp    uint32\n\tSs     uint32\n\tGs     uint32\n}\n\ntype FpReg struct {\n\tEnv   [7]uint32\n\tAcc   [8][10]uint8\n\tEx_sw uint32\n\tPad   [64]uint8\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x60\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x50\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\tEpoch       int32\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x14\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\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": "gossh/sys/unix/ztypes_freebsd_amd64.go",
    "content": "// cgo -godefs types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR15    int64\n\tR14    int64\n\tR13    int64\n\tR12    int64\n\tR11    int64\n\tR10    int64\n\tR9     int64\n\tR8     int64\n\tRdi    int64\n\tRsi    int64\n\tRbp    int64\n\tRbx    int64\n\tRdx    int64\n\tRcx    int64\n\tRax    int64\n\tTrapno uint32\n\tFs     uint16\n\tGs     uint16\n\tErr    uint32\n\tEs     uint16\n\tDs     uint16\n\tRip    int64\n\tCs     int64\n\tRflags int64\n\tRsp    int64\n\tSs     int64\n}\n\ntype FpReg struct {\n\tEnv   [4]uint64\n\tAcc   [8][16]uint8\n\tXacc  [16][16]uint8\n\tSpare [12]uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\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": "gossh/sys/unix/ztypes_freebsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x50\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [4]byte\n\t_      [32]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tR    [13]uint32\n\tSp   uint32\n\tLr   uint32\n\tPc   uint32\n\tCpsr uint32\n}\n\ntype FpReg struct {\n\tFpsr uint32\n\tFpr  [8]FpExtendedPrecision\n}\n\ntype FpExtendedPrecision struct {\n\tExponent    uint32\n\tMantissa_hi uint32\n\tMantissa_lo uint32\n}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint32\n}\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0x70\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x60\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x5c\n\tSizeofRtMetrics        = 0x38\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint32\n\tMetric      uint32\n\tBaudrate    uint32\n\tIpackets    uint32\n\tIerrors     uint32\n\tOpackets    uint32\n\tOerrors     uint32\n\tCollisions  uint32\n\tIbytes      uint32\n\tObytes      uint32\n\tImcasts     uint32\n\tOmcasts     uint32\n\tIqdrops     uint32\n\tNoproto     uint32\n\tHwassist    uint32\n\t_           [4]byte\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n\tWeight   uint32\n\tFiller   [3]uint32\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0xc\n\tSizeofBpfProgram    = 0x8\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\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": "gossh/sys/unix/ztypes_freebsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tX    [30]uint64\n\tLr   uint64\n\tSp   uint64\n\tElr  uint64\n\tSpsr uint32\n\t_    [4]byte\n}\n\ntype FpReg struct {\n\tQ  [32][16]uint8\n\tSr uint32\n\tCr uint32\n\t_  [8]byte\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tFiller   [3]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\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": "gossh/sys/unix/ztypes_freebsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_freebsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && freebsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Time_t int64\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur int64\n\tMax int64\n}\n\ntype _Gid_t uint32\n\nconst (\n\t_statfsVersion = 0x20140518\n\t_dirblksiz     = 0x400\n)\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint16\n\t_0      int16\n\tUid     uint32\n\tGid     uint32\n\t_1      int32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint64\n\tSpare   [10]uint64\n}\n\ntype Statfs_t struct {\n\tVersion     uint32\n\tType        uint32\n\tFlags       uint64\n\tBsize       uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      int64\n\tFiles       uint64\n\tFfree       int64\n\tSyncwrites  uint64\n\tAsyncwrites uint64\n\tSyncreads   uint64\n\tAsyncreads  uint64\n\tSpare       [10]uint64\n\tNamemax     uint32\n\tOwner       uint32\n\tFsid        Fsid\n\tCharspare   [80]int8\n\tFstypename  [16]byte\n\tMntfromname [1024]byte\n\tMntonname   [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n\tSysid  int32\n\t_      [4]byte\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tPad0   uint8\n\tNamlen uint16\n\tPad1   uint16\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [46]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Xucred struct {\n\tVersion uint32\n\tUid     uint32\n\tNgroups int16\n\tGroups  [16]uint32\n\t_       *byte\n}\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x36\n\tSizeofXucred           = 0x58\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPMreqn          = 0xc\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype PtraceLwpInfoStruct struct {\n\tLwpid        int32\n\tEvent        int32\n\tFlags        int32\n\tSigmask      Sigset_t\n\tSiglist      Sigset_t\n\tSiginfo      __PtraceSiginfo\n\tTdname       [20]int8\n\tChild_pid    int32\n\tSyscall_code uint32\n\tSyscall_narg uint32\n}\n\ntype __Siginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   *byte\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype __PtraceSiginfo struct {\n\tSigno  int32\n\tErrno  int32\n\tCode   int32\n\tPid    int32\n\tUid    uint32\n\tStatus int32\n\tAddr   uintptr\n\tValue  [8]byte\n\t_      [40]byte\n}\n\ntype Sigset_t struct {\n\tVal [4]uint32\n}\n\ntype Reg struct {\n\tRa      uint64\n\tSp      uint64\n\tGp      uint64\n\tTp      uint64\n\tT       [7]uint64\n\tS       [12]uint64\n\tA       [8]uint64\n\tSepc    uint64\n\tSstatus uint64\n}\n\ntype FpReg struct {\n\tX    [32][2]uint64\n\tFcsr uint64\n}\n\ntype FpExtendedPrecision struct{}\n\ntype PtraceIoDesc struct {\n\tOp   int32\n\tOffs uintptr\n\tAddr *byte\n\tLen  uint64\n}\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n\tExt    [4]uint64\n}\n\ntype FdSet struct {\n\tBits [16]uint64\n}\n\nconst (\n\tsizeofIfMsghdr         = 0xa8\n\tSizeofIfMsghdr         = 0xa8\n\tsizeofIfData           = 0x98\n\tSizeofIfData           = 0x98\n\tSizeofIfaMsghdr        = 0x14\n\tSizeofIfmaMsghdr       = 0x10\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x98\n\tSizeofRtMetrics        = 0x70\n)\n\ntype ifMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tData    ifData\n}\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype ifData struct {\n\tType       uint8\n\tPhysical   uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tLink_state uint8\n\tVhid       uint8\n\tDatalen    uint16\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tOqdrops    uint64\n\tNoproto    uint64\n\tHwassist   uint64\n\t_          [8]byte\n\t_          [16]byte\n}\n\ntype IfData struct {\n\tType        uint8\n\tPhysical    uint8\n\tAddrlen     uint8\n\tHdrlen      uint8\n\tLink_state  uint8\n\tSpare_char1 uint8\n\tSpare_char2 uint8\n\tDatalen     uint8\n\tMtu         uint64\n\tMetric      uint64\n\tBaudrate    uint64\n\tIpackets    uint64\n\tIerrors     uint64\n\tOpackets    uint64\n\tOerrors     uint64\n\tCollisions  uint64\n\tIbytes      uint64\n\tObytes      uint64\n\tImcasts     uint64\n\tOmcasts     uint64\n\tIqdrops     uint64\n\tNoproto     uint64\n\tHwassist    uint64\n\tEpoch       int64\n\tLastchange  Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n\tMetric  int32\n}\n\ntype IfmaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\t_       uint16\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\t_       uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tFmask   int32\n\tInits   uint64\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tExpire   uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tPksent   uint64\n\tWeight   uint64\n\tNhidx    uint64\n\tFiller   [2]uint64\n}\n\nconst (\n\tSizeofBpfVersion    = 0x4\n\tSizeofBpfStat       = 0x8\n\tSizeofBpfZbuf       = 0x18\n\tSizeofBpfProgram    = 0x10\n\tSizeofBpfInsn       = 0x8\n\tSizeofBpfHdr        = 0x20\n\tSizeofBpfZbufHeader = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfZbuf struct {\n\tBufa   *byte\n\tBufb   *byte\n\tBuflen uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  Timeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [6]byte\n}\n\ntype BpfZbufHeader struct {\n\tKernel_gen uint32\n\tKernel_len uint32\n\tUser_gen   uint32\n\t_          [5]uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR      = 0x8\n\tPOLLHUP      = 0x10\n\tPOLLIN       = 0x1\n\tPOLLINIGNEOF = 0x2000\n\tPOLLNVAL     = 0x20\n\tPOLLOUT      = 0x4\n\tPOLLPRI      = 0x2\n\tPOLLRDBAND   = 0x80\n\tPOLLRDNORM   = 0x40\n\tPOLLWRBAND   = 0x100\n\tPOLLWRNORM   = 0x4\n)\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": "gossh/sys/unix/ztypes_linux.go",
    "content": "// Code generated by mkmerge; DO NOT EDIT.\n\n//go:build linux\n\npackage unix\n\nconst (\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\ntype (\n\t_C_short int16\n\t_C_int   int32\n\n\t_C_long_long int64\n)\n\ntype ItimerSpec struct {\n\tInterval Timespec\n\tValue    Timespec\n}\n\ntype Itimerval struct {\n\tInterval Timeval\n\tValue    Timeval\n}\n\nconst (\n\tADJ_OFFSET            = 0x1\n\tADJ_FREQUENCY         = 0x2\n\tADJ_MAXERROR          = 0x4\n\tADJ_ESTERROR          = 0x8\n\tADJ_STATUS            = 0x10\n\tADJ_TIMECONST         = 0x20\n\tADJ_TAI               = 0x80\n\tADJ_SETOFFSET         = 0x100\n\tADJ_MICRO             = 0x1000\n\tADJ_NANO              = 0x2000\n\tADJ_TICK              = 0x4000\n\tADJ_OFFSET_SINGLESHOT = 0x8001\n\tADJ_OFFSET_SS_READ    = 0xa001\n)\n\nconst (\n\tSTA_PLL       = 0x1\n\tSTA_PPSFREQ   = 0x2\n\tSTA_PPSTIME   = 0x4\n\tSTA_FLL       = 0x8\n\tSTA_INS       = 0x10\n\tSTA_DEL       = 0x20\n\tSTA_UNSYNC    = 0x40\n\tSTA_FREQHOLD  = 0x80\n\tSTA_PPSSIGNAL = 0x100\n\tSTA_PPSJITTER = 0x200\n\tSTA_PPSWANDER = 0x400\n\tSTA_PPSERROR  = 0x800\n\tSTA_CLOCKERR  = 0x1000\n\tSTA_NANO      = 0x2000\n\tSTA_MODE      = 0x4000\n\tSTA_CLK       = 0x8000\n)\n\nconst (\n\tTIME_OK    = 0x0\n\tTIME_INS   = 0x1\n\tTIME_DEL   = 0x2\n\tTIME_OOP   = 0x3\n\tTIME_WAIT  = 0x4\n\tTIME_ERROR = 0x5\n\tTIME_BAD   = 0x5\n)\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype StatxTimestamp struct {\n\tSec  int64\n\tNsec uint32\n\t_    int32\n}\n\ntype Statx_t struct {\n\tMask             uint32\n\tBlksize          uint32\n\tAttributes       uint64\n\tNlink            uint32\n\tUid              uint32\n\tGid              uint32\n\tMode             uint16\n\t_                [1]uint16\n\tIno              uint64\n\tSize             uint64\n\tBlocks           uint64\n\tAttributes_mask  uint64\n\tAtime            StatxTimestamp\n\tBtime            StatxTimestamp\n\tCtime            StatxTimestamp\n\tMtime            StatxTimestamp\n\tRdev_major       uint32\n\tRdev_minor       uint32\n\tDev_major        uint32\n\tDev_minor        uint32\n\tMnt_id           uint64\n\tDio_mem_align    uint32\n\tDio_offset_align uint32\n\t_                [12]uint64\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\ntype FileCloneRange struct {\n\tSrc_fd      int64\n\tSrc_offset  uint64\n\tSrc_length  uint64\n\tDest_offset uint64\n}\n\ntype RawFileDedupeRange struct {\n\tSrc_offset uint64\n\tSrc_length uint64\n\tDest_count uint16\n\tReserved1  uint16\n\tReserved2  uint32\n}\n\ntype RawFileDedupeRangeInfo struct {\n\tDest_fd       int64\n\tDest_offset   uint64\n\tBytes_deduped uint64\n\tStatus        int32\n\tReserved      uint32\n}\n\nconst (\n\tSizeofRawFileDedupeRange     = 0x18\n\tSizeofRawFileDedupeRangeInfo = 0x20\n\tFILE_DEDUPE_RANGE_SAME       = 0x0\n\tFILE_DEDUPE_RANGE_DIFFERS    = 0x1\n)\n\ntype FscryptPolicy struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptKey struct {\n\tMode uint32\n\tRaw  [64]uint8\n\tSize uint32\n}\n\ntype FscryptPolicyV1 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tMaster_key_descriptor     [8]uint8\n}\n\ntype FscryptPolicyV2 struct {\n\tVersion                   uint8\n\tContents_encryption_mode  uint8\n\tFilenames_encryption_mode uint8\n\tFlags                     uint8\n\tLog2_data_unit_size       uint8\n\t_                         [3]uint8\n\tMaster_key_identifier     [16]uint8\n}\n\ntype FscryptGetPolicyExArg struct {\n\tSize   uint64\n\tPolicy [24]byte\n}\n\ntype FscryptKeySpecifier struct {\n\tType uint32\n\t_    uint32\n\tU    [32]byte\n}\n\ntype FscryptAddKeyArg struct {\n\tKey_spec FscryptKeySpecifier\n\tRaw_size uint32\n\tKey_id   uint32\n\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 DmIoctl struct {\n\tVersion      [3]uint32\n\tData_size    uint32\n\tData_start   uint32\n\tTarget_count uint32\n\tOpen_count   int32\n\tFlags        uint32\n\tEvent_nr     uint32\n\t_            uint32\n\tDev          uint64\n\tName         [128]byte\n\tUuid         [129]byte\n\tData         [7]byte\n}\n\ntype DmTargetSpec struct {\n\tSector_start uint64\n\tLength       uint64\n\tStatus       int32\n\tNext         uint32\n\tTarget_type  [16]byte\n}\n\ntype DmTargetDeps struct {\n\tCount uint32\n\t_     uint32\n}\n\ntype DmTargetVersions struct {\n\tNext    uint32\n\tVersion [3]uint32\n}\n\ntype DmTargetMsg struct {\n\tSector uint64\n}\n\nconst (\n\tSizeofDmIoctl      = 0x138\n\tSizeofDmTargetSpec = 0x28\n)\n\ntype KeyctlDHParams struct {\n\tPrivate int32\n\tPrime   int32\n\tBase    int32\n}\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n)\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]uint8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrLinklayer struct {\n\tFamily   uint16\n\tProtocol uint16\n\tIfindex  int32\n\tHatype   uint16\n\tPkttype  uint8\n\tHalen    uint8\n\tAddr     [8]uint8\n}\n\ntype RawSockaddrNetlink struct {\n\tFamily uint16\n\tPad    uint16\n\tPid    uint32\n\tGroups uint32\n}\n\ntype RawSockaddrHCI struct {\n\tFamily  uint16\n\tDev     uint16\n\tChannel uint16\n}\n\ntype RawSockaddrL2 struct {\n\tFamily      uint16\n\tPsm         uint16\n\tBdaddr      [6]uint8\n\tCid         uint16\n\tBdaddr_type uint8\n\t_           [1]byte\n}\n\ntype RawSockaddrRFCOMM struct {\n\tFamily  uint16\n\tBdaddr  [6]uint8\n\tChannel uint8\n\t_       [1]byte\n}\n\ntype RawSockaddrCAN struct {\n\tFamily  uint16\n\tIfindex int32\n\tAddr    [16]byte\n}\n\ntype RawSockaddrALG struct {\n\tFamily uint16\n\tType   [14]uint8\n\tFeat   uint32\n\tMask   uint32\n\tName   [64]uint8\n}\n\ntype RawSockaddrVM struct {\n\tFamily    uint16\n\tReserved1 uint16\n\tPort      uint32\n\tCid       uint32\n\tFlags     uint8\n\tZero      [3]uint8\n}\n\ntype RawSockaddrXDP struct {\n\tFamily         uint16\n\tFlags          uint16\n\tIfindex        uint32\n\tQueue_id       uint32\n\tShared_umem_fd uint32\n}\n\ntype RawSockaddrPPPoX [0x1e]byte\n\ntype RawSockaddrTIPC struct {\n\tFamily   uint16\n\tAddrtype uint8\n\tScope    int8\n\tAddr     [12]byte\n}\n\ntype RawSockaddrL2TPIP struct {\n\tFamily  uint16\n\tUnused  uint16\n\tAddr    [4]byte /* in_addr */\n\tConn_id uint32\n\t_       [4]uint8\n}\n\ntype RawSockaddrL2TPIP6 struct {\n\tFamily   uint16\n\tUnused   uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\tConn_id  uint32\n}\n\ntype RawSockaddrIUCV struct {\n\tFamily  uint16\n\tPort    uint16\n\tAddr    uint32\n\tNodeid  [8]int8\n\tUser_id [8]int8\n\tName    [8]int8\n}\n\ntype RawSockaddrNFC struct {\n\tSa_family    uint16\n\tDev_idx      uint32\n\tTarget_idx   uint32\n\tNfc_protocol uint32\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPMreqn struct {\n\tMultiaddr [4]byte /* in_addr */\n\tAddress   [4]byte /* in_addr */\n\tIfindex   int32\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype PacketMreq struct {\n\tIfindex int32\n\tType    uint16\n\tAlen    uint16\n\tAddress [8]uint8\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  int32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype Ucred struct {\n\tPid int32\n\tUid uint32\n\tGid uint32\n}\n\ntype TCPInfo struct {\n\tState                uint8\n\tCa_state             uint8\n\tRetransmits          uint8\n\tProbes               uint8\n\tBackoff              uint8\n\tOptions              uint8\n\tRto                  uint32\n\tAto                  uint32\n\tSnd_mss              uint32\n\tRcv_mss              uint32\n\tUnacked              uint32\n\tSacked               uint32\n\tLost                 uint32\n\tRetrans              uint32\n\tFackets              uint32\n\tLast_data_sent       uint32\n\tLast_ack_sent        uint32\n\tLast_data_recv       uint32\n\tLast_ack_recv        uint32\n\tPmtu                 uint32\n\tRcv_ssthresh         uint32\n\tRtt                  uint32\n\tRttvar               uint32\n\tSnd_ssthresh         uint32\n\tSnd_cwnd             uint32\n\tAdvmss               uint32\n\tReordering           uint32\n\tRcv_rtt              uint32\n\tRcv_space            uint32\n\tTotal_retrans        uint32\n\tPacing_rate          uint64\n\tMax_pacing_rate      uint64\n\tBytes_acked          uint64\n\tBytes_received       uint64\n\tSegs_out             uint32\n\tSegs_in              uint32\n\tNotsent_bytes        uint32\n\tMin_rtt              uint32\n\tData_segs_in         uint32\n\tData_segs_out        uint32\n\tDelivery_rate        uint64\n\tBusy_time            uint64\n\tRwnd_limited         uint64\n\tSndbuf_limited       uint64\n\tDelivered            uint32\n\tDelivered_ce         uint32\n\tBytes_sent           uint64\n\tBytes_retrans        uint64\n\tDsack_dups           uint32\n\tReord_seen           uint32\n\tRcv_ooopack          uint32\n\tSnd_wnd              uint32\n\tRcv_wnd              uint32\n\tRehash               uint32\n\tTotal_rto            uint16\n\tTotal_rto_recoveries uint16\n\tTotal_rto_time       uint32\n}\n\ntype CanFilter struct {\n\tId   uint32\n\tMask uint32\n}\n\ntype TCPRepairOpt struct {\n\tCode uint32\n\tVal  uint32\n}\n\nconst (\n\tSizeofSockaddrInet4     = 0x10\n\tSizeofSockaddrInet6     = 0x1c\n\tSizeofSockaddrAny       = 0x70\n\tSizeofSockaddrUnix      = 0x6e\n\tSizeofSockaddrLinklayer = 0x14\n\tSizeofSockaddrNetlink   = 0xc\n\tSizeofSockaddrHCI       = 0x6\n\tSizeofSockaddrL2        = 0xe\n\tSizeofSockaddrRFCOMM    = 0xa\n\tSizeofSockaddrCAN       = 0x18\n\tSizeofSockaddrALG       = 0x58\n\tSizeofSockaddrVM        = 0x10\n\tSizeofSockaddrXDP       = 0x10\n\tSizeofSockaddrPPPoX     = 0x1e\n\tSizeofSockaddrTIPC      = 0x10\n\tSizeofSockaddrL2TPIP    = 0x10\n\tSizeofSockaddrL2TPIP6   = 0x20\n\tSizeofSockaddrIUCV      = 0x20\n\tSizeofSockaddrNFC       = 0x10\n\tSizeofLinger            = 0x8\n\tSizeofIPMreq            = 0x8\n\tSizeofIPMreqn           = 0xc\n\tSizeofIPv6Mreq          = 0x14\n\tSizeofPacketMreq        = 0x10\n\tSizeofInet4Pktinfo      = 0xc\n\tSizeofInet6Pktinfo      = 0x14\n\tSizeofIPv6MTUInfo       = 0x20\n\tSizeofICMPv6Filter      = 0x20\n\tSizeofUcred             = 0xc\n\tSizeofTCPInfo           = 0xf8\n\tSizeofCanFilter         = 0x8\n\tSizeofTCPRepairOpt      = 0x8\n)\n\nconst (\n\tNDA_UNSPEC         = 0x0\n\tNDA_DST            = 0x1\n\tNDA_LLADDR         = 0x2\n\tNDA_CACHEINFO      = 0x3\n\tNDA_PROBES         = 0x4\n\tNDA_VLAN           = 0x5\n\tNDA_PORT           = 0x6\n\tNDA_VNI            = 0x7\n\tNDA_IFINDEX        = 0x8\n\tNDA_MASTER         = 0x9\n\tNDA_LINK_NETNSID   = 0xa\n\tNDA_SRC_VNI        = 0xb\n\tNTF_USE            = 0x1\n\tNTF_SELF           = 0x2\n\tNTF_MASTER         = 0x4\n\tNTF_PROXY          = 0x8\n\tNTF_EXT_LEARNED    = 0x10\n\tNTF_OFFLOADED      = 0x20\n\tNTF_ROUTER         = 0x80\n\tNUD_INCOMPLETE     = 0x1\n\tNUD_REACHABLE      = 0x2\n\tNUD_STALE          = 0x4\n\tNUD_DELAY          = 0x8\n\tNUD_PROBE          = 0x10\n\tNUD_FAILED         = 0x20\n\tNUD_NOARP          = 0x40\n\tNUD_PERMANENT      = 0x80\n\tNUD_NONE           = 0x0\n\tIFA_UNSPEC         = 0x0\n\tIFA_ADDRESS        = 0x1\n\tIFA_LOCAL          = 0x2\n\tIFA_LABEL          = 0x3\n\tIFA_BROADCAST      = 0x4\n\tIFA_ANYCAST        = 0x5\n\tIFA_CACHEINFO      = 0x6\n\tIFA_MULTICAST      = 0x7\n\tIFA_FLAGS          = 0x8\n\tIFA_RT_PRIORITY    = 0x9\n\tIFA_TARGET_NETNSID = 0xa\n\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\tICMP_FILTER = 0x1\n\n\tICMPV6_FILTER             = 0x1\n\tICMPV6_FILTER_BLOCK       = 0x1\n\tICMPV6_FILTER_BLOCKOTHERS = 0x3\n\tICMPV6_FILTER_PASS        = 0x2\n\tICMPV6_FILTER_PASSONLY    = 0x4\n)\n\nconst (\n\tSizeofSockFilter = 0x8\n)\n\ntype SockFilter struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype SockFprog struct {\n\tLen    uint16\n\tFilter *SockFilter\n}\n\ntype InotifyEvent struct {\n\tWd     int32\n\tMask   uint32\n\tCookie uint32\n\tLen    uint32\n}\n\nconst SizeofInotifyEvent = 0x10\n\nconst SI_LOAD_SHIFT = 0x10\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]byte\n}\n\nconst (\n\tAT_EMPTY_PATH   = 0x1000\n\tAT_FDCWD        = -0x64\n\tAT_NO_AUTOMOUNT = 0x800\n\tAT_REMOVEDIR    = 0x200\n\n\tAT_STATX_SYNC_AS_STAT = 0x0\n\tAT_STATX_FORCE_SYNC   = 0x2000\n\tAT_STATX_DONT_SYNC    = 0x4000\n\n\tAT_RECURSIVE = 0x8000\n\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_SYMLINK_NOFOLLOW = 0x100\n\n\tAT_EACCESS = 0x200\n\n\tOPEN_TREE_CLONE = 0x1\n\n\tMOVE_MOUNT_F_SYMLINKS   = 0x1\n\tMOVE_MOUNT_F_AUTOMOUNTS = 0x2\n\tMOVE_MOUNT_F_EMPTY_PATH = 0x4\n\tMOVE_MOUNT_T_SYMLINKS   = 0x10\n\tMOVE_MOUNT_T_AUTOMOUNTS = 0x20\n\tMOVE_MOUNT_T_EMPTY_PATH = 0x40\n\tMOVE_MOUNT_SET_GROUP    = 0x100\n\n\tFSOPEN_CLOEXEC = 0x1\n\n\tFSPICK_CLOEXEC          = 0x1\n\tFSPICK_SYMLINK_NOFOLLOW = 0x2\n\tFSPICK_NO_AUTOMOUNT     = 0x4\n\tFSPICK_EMPTY_PATH       = 0x8\n\n\tFSMOUNT_CLOEXEC = 0x1\n\n\tFSCONFIG_SET_FLAG        = 0x0\n\tFSCONFIG_SET_STRING      = 0x1\n\tFSCONFIG_SET_BINARY      = 0x2\n\tFSCONFIG_SET_PATH        = 0x3\n\tFSCONFIG_SET_PATH_EMPTY  = 0x4\n\tFSCONFIG_SET_FD          = 0x5\n\tFSCONFIG_CMD_CREATE      = 0x6\n\tFSCONFIG_CMD_RECONFIGURE = 0x7\n)\n\ntype OpenHow struct {\n\tFlags   uint64\n\tMode    uint64\n\tResolve uint64\n}\n\nconst SizeofOpenHow = 0x18\n\nconst (\n\tRESOLVE_BENEATH       = 0x8\n\tRESOLVE_IN_ROOT       = 0x10\n\tRESOLVE_NO_MAGICLINKS = 0x2\n\tRESOLVE_NO_SYMLINKS   = 0x4\n\tRESOLVE_NO_XDEV       = 0x1\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLIN   = 0x1\n\tPOLLPRI  = 0x2\n\tPOLLOUT  = 0x4\n\tPOLLERR  = 0x8\n\tPOLLHUP  = 0x10\n\tPOLLNVAL = 0x20\n)\n\ntype sigset_argpack struct {\n\tss    *Sigset_t\n\tssLen uintptr\n}\n\ntype SignalfdSiginfo struct {\n\tSigno     uint32\n\tErrno     int32\n\tCode      int32\n\tPid       uint32\n\tUid       uint32\n\tFd        int32\n\tTid       uint32\n\tBand      uint32\n\tOverrun   uint32\n\tTrapno    uint32\n\tStatus    int32\n\tInt       int32\n\tPtr       uint64\n\tUtime     uint64\n\tStime     uint64\n\tAddr      uint64\n\tAddr_lsb  uint16\n\t_         uint16\n\tSyscall   int32\n\tCall_addr uint64\n\tArch      uint32\n\t_         [28]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tTASKSTATS_CMD_UNSPEC                  = 0x0\n\tTASKSTATS_CMD_GET                     = 0x1\n\tTASKSTATS_CMD_NEW                     = 0x2\n\tTASKSTATS_TYPE_UNSPEC                 = 0x0\n\tTASKSTATS_TYPE_PID                    = 0x1\n\tTASKSTATS_TYPE_TGID                   = 0x2\n\tTASKSTATS_TYPE_STATS                  = 0x3\n\tTASKSTATS_TYPE_AGGR_PID               = 0x4\n\tTASKSTATS_TYPE_AGGR_TGID              = 0x5\n\tTASKSTATS_TYPE_NULL                   = 0x6\n\tTASKSTATS_CMD_ATTR_UNSPEC             = 0x0\n\tTASKSTATS_CMD_ATTR_PID                = 0x1\n\tTASKSTATS_CMD_ATTR_TGID               = 0x2\n\tTASKSTATS_CMD_ATTR_REGISTER_CPUMASK   = 0x3\n\tTASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK = 0x4\n)\n\ntype CGroupStats struct {\n\tSleeping        uint64\n\tRunning         uint64\n\tStopped         uint64\n\tUninterruptible uint64\n\tIo_wait         uint64\n}\n\nconst (\n\tCGROUPSTATS_CMD_UNSPEC        = 0x3\n\tCGROUPSTATS_CMD_GET           = 0x4\n\tCGROUPSTATS_CMD_NEW           = 0x5\n\tCGROUPSTATS_TYPE_UNSPEC       = 0x0\n\tCGROUPSTATS_TYPE_CGROUP_STATS = 0x1\n\tCGROUPSTATS_CMD_ATTR_UNSPEC   = 0x0\n\tCGROUPSTATS_CMD_ATTR_FD       = 0x1\n)\n\ntype Genlmsghdr struct {\n\tCmd      uint8\n\tVersion  uint8\n\tReserved uint16\n}\n\nconst (\n\tCTRL_CMD_UNSPEC            = 0x0\n\tCTRL_CMD_NEWFAMILY         = 0x1\n\tCTRL_CMD_DELFAMILY         = 0x2\n\tCTRL_CMD_GETFAMILY         = 0x3\n\tCTRL_CMD_NEWOPS            = 0x4\n\tCTRL_CMD_DELOPS            = 0x5\n\tCTRL_CMD_GETOPS            = 0x6\n\tCTRL_CMD_NEWMCAST_GRP      = 0x7\n\tCTRL_CMD_DELMCAST_GRP      = 0x8\n\tCTRL_CMD_GETMCAST_GRP      = 0x9\n\tCTRL_CMD_GETPOLICY         = 0xa\n\tCTRL_ATTR_UNSPEC           = 0x0\n\tCTRL_ATTR_FAMILY_ID        = 0x1\n\tCTRL_ATTR_FAMILY_NAME      = 0x2\n\tCTRL_ATTR_VERSION          = 0x3\n\tCTRL_ATTR_HDRSIZE          = 0x4\n\tCTRL_ATTR_MAXATTR          = 0x5\n\tCTRL_ATTR_OPS              = 0x6\n\tCTRL_ATTR_MCAST_GROUPS     = 0x7\n\tCTRL_ATTR_POLICY           = 0x8\n\tCTRL_ATTR_OP_POLICY        = 0x9\n\tCTRL_ATTR_OP               = 0xa\n\tCTRL_ATTR_OP_UNSPEC        = 0x0\n\tCTRL_ATTR_OP_ID            = 0x1\n\tCTRL_ATTR_OP_FLAGS         = 0x2\n\tCTRL_ATTR_MCAST_GRP_UNSPEC = 0x0\n\tCTRL_ATTR_MCAST_GRP_NAME   = 0x1\n\tCTRL_ATTR_MCAST_GRP_ID     = 0x2\n\tCTRL_ATTR_POLICY_UNSPEC    = 0x0\n\tCTRL_ATTR_POLICY_DO        = 0x1\n\tCTRL_ATTR_POLICY_DUMP      = 0x2\n\tCTRL_ATTR_POLICY_DUMP_MAX  = 0x2\n)\n\nconst (\n\t_CPU_SETSIZE = 0x400\n)\n\nconst (\n\tBDADDR_BREDR     = 0x0\n\tBDADDR_LE_PUBLIC = 0x1\n\tBDADDR_LE_RANDOM = 0x2\n)\n\ntype PerfEventAttr struct {\n\tType               uint32\n\tSize               uint32\n\tConfig             uint64\n\tSample             uint64\n\tSample_type        uint64\n\tRead_format        uint64\n\tBits               uint64\n\tWakeup             uint32\n\tBp_type            uint32\n\tExt1               uint64\n\tExt2               uint64\n\tBranch_sample_type uint64\n\tSample_regs_user   uint64\n\tSample_stack_user  uint32\n\tClockid            int32\n\tSample_regs_intr   uint64\n\tAux_watermark      uint32\n\tSample_max_stack   uint16\n\t_                  uint16\n\tAux_sample_size    uint32\n\t_                  uint32\n\tSig_data           uint64\n}\n\ntype PerfEventMmapPage struct {\n\tVersion        uint32\n\tCompat_version uint32\n\tLock           uint32\n\tIndex          uint32\n\tOffset         int64\n\tTime_enabled   uint64\n\tTime_running   uint64\n\tCapabilities   uint64\n\tPmc_width      uint16\n\tTime_shift     uint16\n\tTime_mult      uint32\n\tTime_offset    uint64\n\tTime_zero      uint64\n\tSize           uint32\n\t_              uint32\n\tTime_cycles    uint64\n\tTime_mask      uint64\n\t_              [928]uint8\n\tData_head      uint64\n\tData_tail      uint64\n\tData_offset    uint64\n\tData_size      uint64\n\tAux_head       uint64\n\tAux_tail       uint64\n\tAux_offset     uint64\n\tAux_size       uint64\n}\n\nconst (\n\tPerfBitDisabled               uint64 = CBitFieldMaskBit0\n\tPerfBitInherit                       = CBitFieldMaskBit1\n\tPerfBitPinned                        = CBitFieldMaskBit2\n\tPerfBitExclusive                     = CBitFieldMaskBit3\n\tPerfBitExcludeUser                   = CBitFieldMaskBit4\n\tPerfBitExcludeKernel                 = CBitFieldMaskBit5\n\tPerfBitExcludeHv                     = CBitFieldMaskBit6\n\tPerfBitExcludeIdle                   = CBitFieldMaskBit7\n\tPerfBitMmap                          = CBitFieldMaskBit8\n\tPerfBitComm                          = CBitFieldMaskBit9\n\tPerfBitFreq                          = CBitFieldMaskBit10\n\tPerfBitInheritStat                   = CBitFieldMaskBit11\n\tPerfBitEnableOnExec                  = CBitFieldMaskBit12\n\tPerfBitTask                          = CBitFieldMaskBit13\n\tPerfBitWatermark                     = CBitFieldMaskBit14\n\tPerfBitPreciseIPBit1                 = CBitFieldMaskBit15\n\tPerfBitPreciseIPBit2                 = CBitFieldMaskBit16\n\tPerfBitMmapData                      = CBitFieldMaskBit17\n\tPerfBitSampleIDAll                   = CBitFieldMaskBit18\n\tPerfBitExcludeHost                   = CBitFieldMaskBit19\n\tPerfBitExcludeGuest                  = CBitFieldMaskBit20\n\tPerfBitExcludeCallchainKernel        = CBitFieldMaskBit21\n\tPerfBitExcludeCallchainUser          = CBitFieldMaskBit22\n\tPerfBitMmap2                         = CBitFieldMaskBit23\n\tPerfBitCommExec                      = CBitFieldMaskBit24\n\tPerfBitUseClockID                    = CBitFieldMaskBit25\n\tPerfBitContextSwitch                 = CBitFieldMaskBit26\n\tPerfBitWriteBackward                 = CBitFieldMaskBit27\n)\n\nconst (\n\tPERF_TYPE_HARDWARE                    = 0x0\n\tPERF_TYPE_SOFTWARE                    = 0x1\n\tPERF_TYPE_TRACEPOINT                  = 0x2\n\tPERF_TYPE_HW_CACHE                    = 0x3\n\tPERF_TYPE_RAW                         = 0x4\n\tPERF_TYPE_BREAKPOINT                  = 0x5\n\tPERF_TYPE_MAX                         = 0x6\n\tPERF_COUNT_HW_CPU_CYCLES              = 0x0\n\tPERF_COUNT_HW_INSTRUCTIONS            = 0x1\n\tPERF_COUNT_HW_CACHE_REFERENCES        = 0x2\n\tPERF_COUNT_HW_CACHE_MISSES            = 0x3\n\tPERF_COUNT_HW_BRANCH_INSTRUCTIONS     = 0x4\n\tPERF_COUNT_HW_BRANCH_MISSES           = 0x5\n\tPERF_COUNT_HW_BUS_CYCLES              = 0x6\n\tPERF_COUNT_HW_STALLED_CYCLES_FRONTEND = 0x7\n\tPERF_COUNT_HW_STALLED_CYCLES_BACKEND  = 0x8\n\tPERF_COUNT_HW_REF_CPU_CYCLES          = 0x9\n\tPERF_COUNT_HW_MAX                     = 0xa\n\tPERF_COUNT_HW_CACHE_L1D               = 0x0\n\tPERF_COUNT_HW_CACHE_L1I               = 0x1\n\tPERF_COUNT_HW_CACHE_LL                = 0x2\n\tPERF_COUNT_HW_CACHE_DTLB              = 0x3\n\tPERF_COUNT_HW_CACHE_ITLB              = 0x4\n\tPERF_COUNT_HW_CACHE_BPU               = 0x5\n\tPERF_COUNT_HW_CACHE_NODE              = 0x6\n\tPERF_COUNT_HW_CACHE_MAX               = 0x7\n\tPERF_COUNT_HW_CACHE_OP_READ           = 0x0\n\tPERF_COUNT_HW_CACHE_OP_WRITE          = 0x1\n\tPERF_COUNT_HW_CACHE_OP_PREFETCH       = 0x2\n\tPERF_COUNT_HW_CACHE_OP_MAX            = 0x3\n\tPERF_COUNT_HW_CACHE_RESULT_ACCESS     = 0x0\n\tPERF_COUNT_HW_CACHE_RESULT_MISS       = 0x1\n\tPERF_COUNT_HW_CACHE_RESULT_MAX        = 0x2\n\tPERF_COUNT_SW_CPU_CLOCK               = 0x0\n\tPERF_COUNT_SW_TASK_CLOCK              = 0x1\n\tPERF_COUNT_SW_PAGE_FAULTS             = 0x2\n\tPERF_COUNT_SW_CONTEXT_SWITCHES        = 0x3\n\tPERF_COUNT_SW_CPU_MIGRATIONS          = 0x4\n\tPERF_COUNT_SW_PAGE_FAULTS_MIN         = 0x5\n\tPERF_COUNT_SW_PAGE_FAULTS_MAJ         = 0x6\n\tPERF_COUNT_SW_ALIGNMENT_FAULTS        = 0x7\n\tPERF_COUNT_SW_EMULATION_FAULTS        = 0x8\n\tPERF_COUNT_SW_DUMMY                   = 0x9\n\tPERF_COUNT_SW_BPF_OUTPUT              = 0xa\n\tPERF_COUNT_SW_MAX                     = 0xc\n\tPERF_SAMPLE_IP                        = 0x1\n\tPERF_SAMPLE_TID                       = 0x2\n\tPERF_SAMPLE_TIME                      = 0x4\n\tPERF_SAMPLE_ADDR                      = 0x8\n\tPERF_SAMPLE_READ                      = 0x10\n\tPERF_SAMPLE_CALLCHAIN                 = 0x20\n\tPERF_SAMPLE_ID                        = 0x40\n\tPERF_SAMPLE_CPU                       = 0x80\n\tPERF_SAMPLE_PERIOD                    = 0x100\n\tPERF_SAMPLE_STREAM_ID                 = 0x200\n\tPERF_SAMPLE_RAW                       = 0x400\n\tPERF_SAMPLE_BRANCH_STACK              = 0x800\n\tPERF_SAMPLE_REGS_USER                 = 0x1000\n\tPERF_SAMPLE_STACK_USER                = 0x2000\n\tPERF_SAMPLE_WEIGHT                    = 0x4000\n\tPERF_SAMPLE_DATA_SRC                  = 0x8000\n\tPERF_SAMPLE_IDENTIFIER                = 0x10000\n\tPERF_SAMPLE_TRANSACTION               = 0x20000\n\tPERF_SAMPLE_REGS_INTR                 = 0x40000\n\tPERF_SAMPLE_PHYS_ADDR                 = 0x80000\n\tPERF_SAMPLE_AUX                       = 0x100000\n\tPERF_SAMPLE_CGROUP                    = 0x200000\n\tPERF_SAMPLE_DATA_PAGE_SIZE            = 0x400000\n\tPERF_SAMPLE_CODE_PAGE_SIZE            = 0x800000\n\tPERF_SAMPLE_WEIGHT_STRUCT             = 0x1000000\n\tPERF_SAMPLE_MAX                       = 0x2000000\n\tPERF_SAMPLE_BRANCH_USER_SHIFT         = 0x0\n\tPERF_SAMPLE_BRANCH_KERNEL_SHIFT       = 0x1\n\tPERF_SAMPLE_BRANCH_HV_SHIFT           = 0x2\n\tPERF_SAMPLE_BRANCH_ANY_SHIFT          = 0x3\n\tPERF_SAMPLE_BRANCH_ANY_CALL_SHIFT     = 0x4\n\tPERF_SAMPLE_BRANCH_ANY_RETURN_SHIFT   = 0x5\n\tPERF_SAMPLE_BRANCH_IND_CALL_SHIFT     = 0x6\n\tPERF_SAMPLE_BRANCH_ABORT_TX_SHIFT     = 0x7\n\tPERF_SAMPLE_BRANCH_IN_TX_SHIFT        = 0x8\n\tPERF_SAMPLE_BRANCH_NO_TX_SHIFT        = 0x9\n\tPERF_SAMPLE_BRANCH_COND_SHIFT         = 0xa\n\tPERF_SAMPLE_BRANCH_CALL_STACK_SHIFT   = 0xb\n\tPERF_SAMPLE_BRANCH_IND_JUMP_SHIFT     = 0xc\n\tPERF_SAMPLE_BRANCH_CALL_SHIFT         = 0xd\n\tPERF_SAMPLE_BRANCH_NO_FLAGS_SHIFT     = 0xe\n\tPERF_SAMPLE_BRANCH_NO_CYCLES_SHIFT    = 0xf\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT    = 0x10\n\tPERF_SAMPLE_BRANCH_HW_INDEX_SHIFT     = 0x11\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT    = 0x12\n\tPERF_SAMPLE_BRANCH_MAX_SHIFT          = 0x13\n\tPERF_SAMPLE_BRANCH_USER               = 0x1\n\tPERF_SAMPLE_BRANCH_KERNEL             = 0x2\n\tPERF_SAMPLE_BRANCH_HV                 = 0x4\n\tPERF_SAMPLE_BRANCH_ANY                = 0x8\n\tPERF_SAMPLE_BRANCH_ANY_CALL           = 0x10\n\tPERF_SAMPLE_BRANCH_ANY_RETURN         = 0x20\n\tPERF_SAMPLE_BRANCH_IND_CALL           = 0x40\n\tPERF_SAMPLE_BRANCH_ABORT_TX           = 0x80\n\tPERF_SAMPLE_BRANCH_IN_TX              = 0x100\n\tPERF_SAMPLE_BRANCH_NO_TX              = 0x200\n\tPERF_SAMPLE_BRANCH_COND               = 0x400\n\tPERF_SAMPLE_BRANCH_CALL_STACK         = 0x800\n\tPERF_SAMPLE_BRANCH_IND_JUMP           = 0x1000\n\tPERF_SAMPLE_BRANCH_CALL               = 0x2000\n\tPERF_SAMPLE_BRANCH_NO_FLAGS           = 0x4000\n\tPERF_SAMPLE_BRANCH_NO_CYCLES          = 0x8000\n\tPERF_SAMPLE_BRANCH_TYPE_SAVE          = 0x10000\n\tPERF_SAMPLE_BRANCH_HW_INDEX           = 0x20000\n\tPERF_SAMPLE_BRANCH_PRIV_SAVE          = 0x40000\n\tPERF_SAMPLE_BRANCH_MAX                = 0x80000\n\tPERF_BR_UNKNOWN                       = 0x0\n\tPERF_BR_COND                          = 0x1\n\tPERF_BR_UNCOND                        = 0x2\n\tPERF_BR_IND                           = 0x3\n\tPERF_BR_CALL                          = 0x4\n\tPERF_BR_IND_CALL                      = 0x5\n\tPERF_BR_RET                           = 0x6\n\tPERF_BR_SYSCALL                       = 0x7\n\tPERF_BR_SYSRET                        = 0x8\n\tPERF_BR_COND_CALL                     = 0x9\n\tPERF_BR_COND_RET                      = 0xa\n\tPERF_BR_ERET                          = 0xb\n\tPERF_BR_IRQ                           = 0xc\n\tPERF_BR_SERROR                        = 0xd\n\tPERF_BR_NO_TX                         = 0xe\n\tPERF_BR_EXTEND_ABI                    = 0xf\n\tPERF_BR_MAX                           = 0x10\n\tPERF_SAMPLE_REGS_ABI_NONE             = 0x0\n\tPERF_SAMPLE_REGS_ABI_32               = 0x1\n\tPERF_SAMPLE_REGS_ABI_64               = 0x2\n\tPERF_TXN_ELISION                      = 0x1\n\tPERF_TXN_TRANSACTION                  = 0x2\n\tPERF_TXN_SYNC                         = 0x4\n\tPERF_TXN_ASYNC                        = 0x8\n\tPERF_TXN_RETRY                        = 0x10\n\tPERF_TXN_CONFLICT                     = 0x20\n\tPERF_TXN_CAPACITY_WRITE               = 0x40\n\tPERF_TXN_CAPACITY_READ                = 0x80\n\tPERF_TXN_MAX                          = 0x100\n\tPERF_TXN_ABORT_MASK                   = -0x100000000\n\tPERF_TXN_ABORT_SHIFT                  = 0x20\n\tPERF_FORMAT_TOTAL_TIME_ENABLED        = 0x1\n\tPERF_FORMAT_TOTAL_TIME_RUNNING        = 0x2\n\tPERF_FORMAT_ID                        = 0x4\n\tPERF_FORMAT_GROUP                     = 0x8\n\tPERF_FORMAT_LOST                      = 0x10\n\tPERF_FORMAT_MAX                       = 0x20\n\tPERF_IOC_FLAG_GROUP                   = 0x1\n\tPERF_RECORD_MMAP                      = 0x1\n\tPERF_RECORD_LOST                      = 0x2\n\tPERF_RECORD_COMM                      = 0x3\n\tPERF_RECORD_EXIT                      = 0x4\n\tPERF_RECORD_THROTTLE                  = 0x5\n\tPERF_RECORD_UNTHROTTLE                = 0x6\n\tPERF_RECORD_FORK                      = 0x7\n\tPERF_RECORD_READ                      = 0x8\n\tPERF_RECORD_SAMPLE                    = 0x9\n\tPERF_RECORD_MMAP2                     = 0xa\n\tPERF_RECORD_AUX                       = 0xb\n\tPERF_RECORD_ITRACE_START              = 0xc\n\tPERF_RECORD_LOST_SAMPLES              = 0xd\n\tPERF_RECORD_SWITCH                    = 0xe\n\tPERF_RECORD_SWITCH_CPU_WIDE           = 0xf\n\tPERF_RECORD_NAMESPACES                = 0x10\n\tPERF_RECORD_KSYMBOL                   = 0x11\n\tPERF_RECORD_BPF_EVENT                 = 0x12\n\tPERF_RECORD_CGROUP                    = 0x13\n\tPERF_RECORD_TEXT_POKE                 = 0x14\n\tPERF_RECORD_AUX_OUTPUT_HW_ID          = 0x15\n\tPERF_RECORD_MAX                       = 0x16\n\tPERF_RECORD_KSYMBOL_TYPE_UNKNOWN      = 0x0\n\tPERF_RECORD_KSYMBOL_TYPE_BPF          = 0x1\n\tPERF_RECORD_KSYMBOL_TYPE_OOL          = 0x2\n\tPERF_RECORD_KSYMBOL_TYPE_MAX          = 0x3\n\tPERF_BPF_EVENT_UNKNOWN                = 0x0\n\tPERF_BPF_EVENT_PROG_LOAD              = 0x1\n\tPERF_BPF_EVENT_PROG_UNLOAD            = 0x2\n\tPERF_BPF_EVENT_MAX                    = 0x3\n\tPERF_CONTEXT_HV                       = -0x20\n\tPERF_CONTEXT_KERNEL                   = -0x80\n\tPERF_CONTEXT_USER                     = -0x200\n\tPERF_CONTEXT_GUEST                    = -0x800\n\tPERF_CONTEXT_GUEST_KERNEL             = -0x880\n\tPERF_CONTEXT_GUEST_USER               = -0xa00\n\tPERF_CONTEXT_MAX                      = -0xfff\n)\n\ntype TCPMD5Sig struct {\n\tAddr      SockaddrStorage\n\tFlags     uint8\n\tPrefixlen uint8\n\tKeylen    uint16\n\tIfindex   int32\n\tKey       [80]uint8\n}\n\ntype HDDriveCmdHdr struct {\n\tCommand uint8\n\tNumber  uint8\n\tFeature uint8\n\tCount   uint8\n}\n\ntype HDDriveID struct {\n\tConfig         uint16\n\tCyls           uint16\n\tReserved2      uint16\n\tHeads          uint16\n\tTrack_bytes    uint16\n\tSector_bytes   uint16\n\tSectors        uint16\n\tVendor0        uint16\n\tVendor1        uint16\n\tVendor2        uint16\n\tSerial_no      [20]uint8\n\tBuf_type       uint16\n\tBuf_size       uint16\n\tEcc_bytes      uint16\n\tFw_rev         [8]uint8\n\tModel          [40]uint8\n\tMax_multsect   uint8\n\tVendor3        uint8\n\tDword_io       uint16\n\tVendor4        uint8\n\tCapability     uint8\n\tReserved50     uint16\n\tVendor5        uint8\n\tTPIO           uint8\n\tVendor6        uint8\n\tTDMA           uint8\n\tField_valid    uint16\n\tCur_cyls       uint16\n\tCur_heads      uint16\n\tCur_sectors    uint16\n\tCur_capacity0  uint16\n\tCur_capacity1  uint16\n\tMultsect       uint8\n\tMultsect_valid uint8\n\tLba_capacity   uint32\n\tDma_1word      uint16\n\tDma_mword      uint16\n\tEide_pio_modes uint16\n\tEide_dma_min   uint16\n\tEide_dma_time  uint16\n\tEide_pio       uint16\n\tEide_pio_iordy uint16\n\tWords69_70     [2]uint16\n\tWords71_74     [4]uint16\n\tQueue_depth    uint16\n\tWords76_79     [4]uint16\n\tMajor_rev_num  uint16\n\tMinor_rev_num  uint16\n\tCommand_set_1  uint16\n\tCommand_set_2  uint16\n\tCfsse          uint16\n\tCfs_enable_1   uint16\n\tCfs_enable_2   uint16\n\tCsf_default    uint16\n\tDma_ultra      uint16\n\tTrseuc         uint16\n\tTrsEuc         uint16\n\tCurAPMvalues   uint16\n\tMprc           uint16\n\tHw_config      uint16\n\tAcoustic       uint16\n\tMsrqs          uint16\n\tSxfert         uint16\n\tSal            uint16\n\tSpg            uint32\n\tLba_capacity_2 uint64\n\tWords104_125   [22]uint16\n\tLast_lun       uint16\n\tWord127        uint16\n\tDlf            uint16\n\tCsfo           uint16\n\tWords130_155   [26]uint16\n\tWord156        uint16\n\tWords157_159   [3]uint16\n\tCfa_power      uint16\n\tWords161_175   [15]uint16\n\tWords176_205   [30]uint16\n\tWords206_254   [49]uint16\n\tIntegrity_word uint16\n}\n\nconst (\n\tST_MANDLOCK    = 0x40\n\tST_NOATIME     = 0x400\n\tST_NODEV       = 0x4\n\tST_NODIRATIME  = 0x800\n\tST_NOEXEC      = 0x8\n\tST_NOSUID      = 0x2\n\tST_RDONLY      = 0x1\n\tST_RELATIME    = 0x1000\n\tST_SYNCHRONOUS = 0x10\n)\n\ntype Tpacket2Hdr struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tSec       uint32\n\tNsec      uint32\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n\t_         [4]uint8\n}\n\ntype Tpacket3Hdr struct {\n\tNext_offset uint32\n\tSec         uint32\n\tNsec        uint32\n\tSnaplen     uint32\n\tLen         uint32\n\tStatus      uint32\n\tMac         uint16\n\tNet         uint16\n\tHv1         TpacketHdrVariant1\n\t_           [8]uint8\n}\n\ntype TpacketHdrVariant1 struct {\n\tRxhash    uint32\n\tVlan_tci  uint32\n\tVlan_tpid uint16\n\t_         uint16\n}\n\ntype TpacketBlockDesc struct {\n\tVersion uint32\n\tTo_priv uint32\n\tHdr     [40]byte\n}\n\ntype TpacketBDTS struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype TpacketHdrV1 struct {\n\tBlock_status        uint32\n\tNum_pkts            uint32\n\tOffset_to_first_pkt uint32\n\tBlk_len             uint32\n\tSeq_num             uint64\n\tTs_first_pkt        TpacketBDTS\n\tTs_last_pkt         TpacketBDTS\n}\n\ntype TpacketReq struct {\n\tBlock_size uint32\n\tBlock_nr   uint32\n\tFrame_size uint32\n\tFrame_nr   uint32\n}\n\ntype TpacketReq3 struct {\n\tBlock_size       uint32\n\tBlock_nr         uint32\n\tFrame_size       uint32\n\tFrame_nr         uint32\n\tRetire_blk_tov   uint32\n\tSizeof_priv      uint32\n\tFeature_req_word uint32\n}\n\ntype TpacketStats struct {\n\tPackets uint32\n\tDrops   uint32\n}\n\ntype TpacketStatsV3 struct {\n\tPackets      uint32\n\tDrops        uint32\n\tFreeze_q_cnt uint32\n}\n\ntype TpacketAuxdata struct {\n\tStatus    uint32\n\tLen       uint32\n\tSnaplen   uint32\n\tMac       uint16\n\tNet       uint16\n\tVlan_tci  uint16\n\tVlan_tpid uint16\n}\n\nconst (\n\tTPACKET_V1 = 0x0\n\tTPACKET_V2 = 0x1\n\tTPACKET_V3 = 0x2\n)\n\nconst (\n\tSizeofTpacket2Hdr = 0x20\n\tSizeofTpacket3Hdr = 0x30\n\n\tSizeofTpacketStats   = 0x8\n\tSizeofTpacketStatsV3 = 0xc\n)\n\nconst (\n\tIFLA_UNSPEC                                = 0x0\n\tIFLA_ADDRESS                               = 0x1\n\tIFLA_BROADCAST                             = 0x2\n\tIFLA_IFNAME                                = 0x3\n\tIFLA_MTU                                   = 0x4\n\tIFLA_LINK                                  = 0x5\n\tIFLA_QDISC                                 = 0x6\n\tIFLA_STATS                                 = 0x7\n\tIFLA_COST                                  = 0x8\n\tIFLA_PRIORITY                              = 0x9\n\tIFLA_MASTER                                = 0xa\n\tIFLA_WIRELESS                              = 0xb\n\tIFLA_PROTINFO                              = 0xc\n\tIFLA_TXQLEN                                = 0xd\n\tIFLA_MAP                                   = 0xe\n\tIFLA_WEIGHT                                = 0xf\n\tIFLA_OPERSTATE                             = 0x10\n\tIFLA_LINKMODE                              = 0x11\n\tIFLA_LINKINFO                              = 0x12\n\tIFLA_NET_NS_PID                            = 0x13\n\tIFLA_IFALIAS                               = 0x14\n\tIFLA_NUM_VF                                = 0x15\n\tIFLA_VFINFO_LIST                           = 0x16\n\tIFLA_STATS64                               = 0x17\n\tIFLA_VF_PORTS                              = 0x18\n\tIFLA_PORT_SELF                             = 0x19\n\tIFLA_AF_SPEC                               = 0x1a\n\tIFLA_GROUP                                 = 0x1b\n\tIFLA_NET_NS_FD                             = 0x1c\n\tIFLA_EXT_MASK                              = 0x1d\n\tIFLA_PROMISCUITY                           = 0x1e\n\tIFLA_NUM_TX_QUEUES                         = 0x1f\n\tIFLA_NUM_RX_QUEUES                         = 0x20\n\tIFLA_CARRIER                               = 0x21\n\tIFLA_PHYS_PORT_ID                          = 0x22\n\tIFLA_CARRIER_CHANGES                       = 0x23\n\tIFLA_PHYS_SWITCH_ID                        = 0x24\n\tIFLA_LINK_NETNSID                          = 0x25\n\tIFLA_PHYS_PORT_NAME                        = 0x26\n\tIFLA_PROTO_DOWN                            = 0x27\n\tIFLA_GSO_MAX_SEGS                          = 0x28\n\tIFLA_GSO_MAX_SIZE                          = 0x29\n\tIFLA_PAD                                   = 0x2a\n\tIFLA_XDP                                   = 0x2b\n\tIFLA_EVENT                                 = 0x2c\n\tIFLA_NEW_NETNSID                           = 0x2d\n\tIFLA_IF_NETNSID                            = 0x2e\n\tIFLA_TARGET_NETNSID                        = 0x2e\n\tIFLA_CARRIER_UP_COUNT                      = 0x2f\n\tIFLA_CARRIER_DOWN_COUNT                    = 0x30\n\tIFLA_NEW_IFINDEX                           = 0x31\n\tIFLA_MIN_MTU                               = 0x32\n\tIFLA_MAX_MTU                               = 0x33\n\tIFLA_PROP_LIST                             = 0x34\n\tIFLA_ALT_IFNAME                            = 0x35\n\tIFLA_PERM_ADDRESS                          = 0x36\n\tIFLA_PROTO_DOWN_REASON                     = 0x37\n\tIFLA_PARENT_DEV_NAME                       = 0x38\n\tIFLA_PARENT_DEV_BUS_NAME                   = 0x39\n\tIFLA_GRO_MAX_SIZE                          = 0x3a\n\tIFLA_TSO_MAX_SIZE                          = 0x3b\n\tIFLA_TSO_MAX_SEGS                          = 0x3c\n\tIFLA_ALLMULTI                              = 0x3d\n\tIFLA_DEVLINK_PORT                          = 0x3e\n\tIFLA_GSO_IPV4_MAX_SIZE                     = 0x3f\n\tIFLA_GRO_IPV4_MAX_SIZE                     = 0x40\n\tIFLA_DPLL_PIN                              = 0x41\n\tIFLA_PROTO_DOWN_REASON_UNSPEC              = 0x0\n\tIFLA_PROTO_DOWN_REASON_MASK                = 0x1\n\tIFLA_PROTO_DOWN_REASON_VALUE               = 0x2\n\tIFLA_PROTO_DOWN_REASON_MAX                 = 0x2\n\tIFLA_INET_UNSPEC                           = 0x0\n\tIFLA_INET_CONF                             = 0x1\n\tIFLA_INET6_UNSPEC                          = 0x0\n\tIFLA_INET6_FLAGS                           = 0x1\n\tIFLA_INET6_CONF                            = 0x2\n\tIFLA_INET6_STATS                           = 0x3\n\tIFLA_INET6_MCAST                           = 0x4\n\tIFLA_INET6_CACHEINFO                       = 0x5\n\tIFLA_INET6_ICMP6STATS                      = 0x6\n\tIFLA_INET6_TOKEN                           = 0x7\n\tIFLA_INET6_ADDR_GEN_MODE                   = 0x8\n\tIFLA_INET6_RA_MTU                          = 0x9\n\tIFLA_BR_UNSPEC                             = 0x0\n\tIFLA_BR_FORWARD_DELAY                      = 0x1\n\tIFLA_BR_HELLO_TIME                         = 0x2\n\tIFLA_BR_MAX_AGE                            = 0x3\n\tIFLA_BR_AGEING_TIME                        = 0x4\n\tIFLA_BR_STP_STATE                          = 0x5\n\tIFLA_BR_PRIORITY                           = 0x6\n\tIFLA_BR_VLAN_FILTERING                     = 0x7\n\tIFLA_BR_VLAN_PROTOCOL                      = 0x8\n\tIFLA_BR_GROUP_FWD_MASK                     = 0x9\n\tIFLA_BR_ROOT_ID                            = 0xa\n\tIFLA_BR_BRIDGE_ID                          = 0xb\n\tIFLA_BR_ROOT_PORT                          = 0xc\n\tIFLA_BR_ROOT_PATH_COST                     = 0xd\n\tIFLA_BR_TOPOLOGY_CHANGE                    = 0xe\n\tIFLA_BR_TOPOLOGY_CHANGE_DETECTED           = 0xf\n\tIFLA_BR_HELLO_TIMER                        = 0x10\n\tIFLA_BR_TCN_TIMER                          = 0x11\n\tIFLA_BR_TOPOLOGY_CHANGE_TIMER              = 0x12\n\tIFLA_BR_GC_TIMER                           = 0x13\n\tIFLA_BR_GROUP_ADDR                         = 0x14\n\tIFLA_BR_FDB_FLUSH                          = 0x15\n\tIFLA_BR_MCAST_ROUTER                       = 0x16\n\tIFLA_BR_MCAST_SNOOPING                     = 0x17\n\tIFLA_BR_MCAST_QUERY_USE_IFADDR             = 0x18\n\tIFLA_BR_MCAST_QUERIER                      = 0x19\n\tIFLA_BR_MCAST_HASH_ELASTICITY              = 0x1a\n\tIFLA_BR_MCAST_HASH_MAX                     = 0x1b\n\tIFLA_BR_MCAST_LAST_MEMBER_CNT              = 0x1c\n\tIFLA_BR_MCAST_STARTUP_QUERY_CNT            = 0x1d\n\tIFLA_BR_MCAST_LAST_MEMBER_INTVL            = 0x1e\n\tIFLA_BR_MCAST_MEMBERSHIP_INTVL             = 0x1f\n\tIFLA_BR_MCAST_QUERIER_INTVL                = 0x20\n\tIFLA_BR_MCAST_QUERY_INTVL                  = 0x21\n\tIFLA_BR_MCAST_QUERY_RESPONSE_INTVL         = 0x22\n\tIFLA_BR_MCAST_STARTUP_QUERY_INTVL          = 0x23\n\tIFLA_BR_NF_CALL_IPTABLES                   = 0x24\n\tIFLA_BR_NF_CALL_IP6TABLES                  = 0x25\n\tIFLA_BR_NF_CALL_ARPTABLES                  = 0x26\n\tIFLA_BR_VLAN_DEFAULT_PVID                  = 0x27\n\tIFLA_BR_PAD                                = 0x28\n\tIFLA_BR_VLAN_STATS_ENABLED                 = 0x29\n\tIFLA_BR_MCAST_STATS_ENABLED                = 0x2a\n\tIFLA_BR_MCAST_IGMP_VERSION                 = 0x2b\n\tIFLA_BR_MCAST_MLD_VERSION                  = 0x2c\n\tIFLA_BR_VLAN_STATS_PER_PORT                = 0x2d\n\tIFLA_BR_MULTI_BOOLOPT                      = 0x2e\n\tIFLA_BR_MCAST_QUERIER_STATE                = 0x2f\n\tIFLA_BR_FDB_N_LEARNED                      = 0x30\n\tIFLA_BR_FDB_MAX_LEARNED                    = 0x31\n\tIFLA_BRPORT_UNSPEC                         = 0x0\n\tIFLA_BRPORT_STATE                          = 0x1\n\tIFLA_BRPORT_PRIORITY                       = 0x2\n\tIFLA_BRPORT_COST                           = 0x3\n\tIFLA_BRPORT_MODE                           = 0x4\n\tIFLA_BRPORT_GUARD                          = 0x5\n\tIFLA_BRPORT_PROTECT                        = 0x6\n\tIFLA_BRPORT_FAST_LEAVE                     = 0x7\n\tIFLA_BRPORT_LEARNING                       = 0x8\n\tIFLA_BRPORT_UNICAST_FLOOD                  = 0x9\n\tIFLA_BRPORT_PROXYARP                       = 0xa\n\tIFLA_BRPORT_LEARNING_SYNC                  = 0xb\n\tIFLA_BRPORT_PROXYARP_WIFI                  = 0xc\n\tIFLA_BRPORT_ROOT_ID                        = 0xd\n\tIFLA_BRPORT_BRIDGE_ID                      = 0xe\n\tIFLA_BRPORT_DESIGNATED_PORT                = 0xf\n\tIFLA_BRPORT_DESIGNATED_COST                = 0x10\n\tIFLA_BRPORT_ID                             = 0x11\n\tIFLA_BRPORT_NO                             = 0x12\n\tIFLA_BRPORT_TOPOLOGY_CHANGE_ACK            = 0x13\n\tIFLA_BRPORT_CONFIG_PENDING                 = 0x14\n\tIFLA_BRPORT_MESSAGE_AGE_TIMER              = 0x15\n\tIFLA_BRPORT_FORWARD_DELAY_TIMER            = 0x16\n\tIFLA_BRPORT_HOLD_TIMER                     = 0x17\n\tIFLA_BRPORT_FLUSH                          = 0x18\n\tIFLA_BRPORT_MULTICAST_ROUTER               = 0x19\n\tIFLA_BRPORT_PAD                            = 0x1a\n\tIFLA_BRPORT_MCAST_FLOOD                    = 0x1b\n\tIFLA_BRPORT_MCAST_TO_UCAST                 = 0x1c\n\tIFLA_BRPORT_VLAN_TUNNEL                    = 0x1d\n\tIFLA_BRPORT_BCAST_FLOOD                    = 0x1e\n\tIFLA_BRPORT_GROUP_FWD_MASK                 = 0x1f\n\tIFLA_BRPORT_NEIGH_SUPPRESS                 = 0x20\n\tIFLA_BRPORT_ISOLATED                       = 0x21\n\tIFLA_BRPORT_BACKUP_PORT                    = 0x22\n\tIFLA_BRPORT_MRP_RING_OPEN                  = 0x23\n\tIFLA_BRPORT_MRP_IN_OPEN                    = 0x24\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT          = 0x25\n\tIFLA_BRPORT_MCAST_EHT_HOSTS_CNT            = 0x26\n\tIFLA_BRPORT_LOCKED                         = 0x27\n\tIFLA_BRPORT_MAB                            = 0x28\n\tIFLA_BRPORT_MCAST_N_GROUPS                 = 0x29\n\tIFLA_BRPORT_MCAST_MAX_GROUPS               = 0x2a\n\tIFLA_BRPORT_NEIGH_VLAN_SUPPRESS            = 0x2b\n\tIFLA_BRPORT_BACKUP_NHID                    = 0x2c\n\tIFLA_INFO_UNSPEC                           = 0x0\n\tIFLA_INFO_KIND                             = 0x1\n\tIFLA_INFO_DATA                             = 0x2\n\tIFLA_INFO_XSTATS                           = 0x3\n\tIFLA_INFO_SLAVE_KIND                       = 0x4\n\tIFLA_INFO_SLAVE_DATA                       = 0x5\n\tIFLA_VLAN_UNSPEC                           = 0x0\n\tIFLA_VLAN_ID                               = 0x1\n\tIFLA_VLAN_FLAGS                            = 0x2\n\tIFLA_VLAN_EGRESS_QOS                       = 0x3\n\tIFLA_VLAN_INGRESS_QOS                      = 0x4\n\tIFLA_VLAN_PROTOCOL                         = 0x5\n\tIFLA_VLAN_QOS_UNSPEC                       = 0x0\n\tIFLA_VLAN_QOS_MAPPING                      = 0x1\n\tIFLA_MACVLAN_UNSPEC                        = 0x0\n\tIFLA_MACVLAN_MODE                          = 0x1\n\tIFLA_MACVLAN_FLAGS                         = 0x2\n\tIFLA_MACVLAN_MACADDR_MODE                  = 0x3\n\tIFLA_MACVLAN_MACADDR                       = 0x4\n\tIFLA_MACVLAN_MACADDR_DATA                  = 0x5\n\tIFLA_MACVLAN_MACADDR_COUNT                 = 0x6\n\tIFLA_MACVLAN_BC_QUEUE_LEN                  = 0x7\n\tIFLA_MACVLAN_BC_QUEUE_LEN_USED             = 0x8\n\tIFLA_MACVLAN_BC_CUTOFF                     = 0x9\n\tIFLA_VRF_UNSPEC                            = 0x0\n\tIFLA_VRF_TABLE                             = 0x1\n\tIFLA_VRF_PORT_UNSPEC                       = 0x0\n\tIFLA_VRF_PORT_TABLE                        = 0x1\n\tIFLA_MACSEC_UNSPEC                         = 0x0\n\tIFLA_MACSEC_SCI                            = 0x1\n\tIFLA_MACSEC_PORT                           = 0x2\n\tIFLA_MACSEC_ICV_LEN                        = 0x3\n\tIFLA_MACSEC_CIPHER_SUITE                   = 0x4\n\tIFLA_MACSEC_WINDOW                         = 0x5\n\tIFLA_MACSEC_ENCODING_SA                    = 0x6\n\tIFLA_MACSEC_ENCRYPT                        = 0x7\n\tIFLA_MACSEC_PROTECT                        = 0x8\n\tIFLA_MACSEC_INC_SCI                        = 0x9\n\tIFLA_MACSEC_ES                             = 0xa\n\tIFLA_MACSEC_SCB                            = 0xb\n\tIFLA_MACSEC_REPLAY_PROTECT                 = 0xc\n\tIFLA_MACSEC_VALIDATION                     = 0xd\n\tIFLA_MACSEC_PAD                            = 0xe\n\tIFLA_MACSEC_OFFLOAD                        = 0xf\n\tIFLA_XFRM_UNSPEC                           = 0x0\n\tIFLA_XFRM_LINK                             = 0x1\n\tIFLA_XFRM_IF_ID                            = 0x2\n\tIFLA_XFRM_COLLECT_METADATA                 = 0x3\n\tIFLA_IPVLAN_UNSPEC                         = 0x0\n\tIFLA_IPVLAN_MODE                           = 0x1\n\tIFLA_IPVLAN_FLAGS                          = 0x2\n\tNETKIT_NEXT                                = -0x1\n\tNETKIT_PASS                                = 0x0\n\tNETKIT_DROP                                = 0x2\n\tNETKIT_REDIRECT                            = 0x7\n\tNETKIT_L2                                  = 0x0\n\tNETKIT_L3                                  = 0x1\n\tIFLA_NETKIT_UNSPEC                         = 0x0\n\tIFLA_NETKIT_PEER_INFO                      = 0x1\n\tIFLA_NETKIT_PRIMARY                        = 0x2\n\tIFLA_NETKIT_POLICY                         = 0x3\n\tIFLA_NETKIT_PEER_POLICY                    = 0x4\n\tIFLA_NETKIT_MODE                           = 0x5\n\tIFLA_VXLAN_UNSPEC                          = 0x0\n\tIFLA_VXLAN_ID                              = 0x1\n\tIFLA_VXLAN_GROUP                           = 0x2\n\tIFLA_VXLAN_LINK                            = 0x3\n\tIFLA_VXLAN_LOCAL                           = 0x4\n\tIFLA_VXLAN_TTL                             = 0x5\n\tIFLA_VXLAN_TOS                             = 0x6\n\tIFLA_VXLAN_LEARNING                        = 0x7\n\tIFLA_VXLAN_AGEING                          = 0x8\n\tIFLA_VXLAN_LIMIT                           = 0x9\n\tIFLA_VXLAN_PORT_RANGE                      = 0xa\n\tIFLA_VXLAN_PROXY                           = 0xb\n\tIFLA_VXLAN_RSC                             = 0xc\n\tIFLA_VXLAN_L2MISS                          = 0xd\n\tIFLA_VXLAN_L3MISS                          = 0xe\n\tIFLA_VXLAN_PORT                            = 0xf\n\tIFLA_VXLAN_GROUP6                          = 0x10\n\tIFLA_VXLAN_LOCAL6                          = 0x11\n\tIFLA_VXLAN_UDP_CSUM                        = 0x12\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_TX               = 0x13\n\tIFLA_VXLAN_UDP_ZERO_CSUM6_RX               = 0x14\n\tIFLA_VXLAN_REMCSUM_TX                      = 0x15\n\tIFLA_VXLAN_REMCSUM_RX                      = 0x16\n\tIFLA_VXLAN_GBP                             = 0x17\n\tIFLA_VXLAN_REMCSUM_NOPARTIAL               = 0x18\n\tIFLA_VXLAN_COLLECT_METADATA                = 0x19\n\tIFLA_VXLAN_LABEL                           = 0x1a\n\tIFLA_VXLAN_GPE                             = 0x1b\n\tIFLA_VXLAN_TTL_INHERIT                     = 0x1c\n\tIFLA_VXLAN_DF                              = 0x1d\n\tIFLA_VXLAN_VNIFILTER                       = 0x1e\n\tIFLA_VXLAN_LOCALBYPASS                     = 0x1f\n\tIFLA_GENEVE_UNSPEC                         = 0x0\n\tIFLA_GENEVE_ID                             = 0x1\n\tIFLA_GENEVE_REMOTE                         = 0x2\n\tIFLA_GENEVE_TTL                            = 0x3\n\tIFLA_GENEVE_TOS                            = 0x4\n\tIFLA_GENEVE_PORT                           = 0x5\n\tIFLA_GENEVE_COLLECT_METADATA               = 0x6\n\tIFLA_GENEVE_REMOTE6                        = 0x7\n\tIFLA_GENEVE_UDP_CSUM                       = 0x8\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_TX              = 0x9\n\tIFLA_GENEVE_UDP_ZERO_CSUM6_RX              = 0xa\n\tIFLA_GENEVE_LABEL                          = 0xb\n\tIFLA_GENEVE_TTL_INHERIT                    = 0xc\n\tIFLA_GENEVE_DF                             = 0xd\n\tIFLA_GENEVE_INNER_PROTO_INHERIT            = 0xe\n\tIFLA_BAREUDP_UNSPEC                        = 0x0\n\tIFLA_BAREUDP_PORT                          = 0x1\n\tIFLA_BAREUDP_ETHERTYPE                     = 0x2\n\tIFLA_BAREUDP_SRCPORT_MIN                   = 0x3\n\tIFLA_BAREUDP_MULTIPROTO_MODE               = 0x4\n\tIFLA_PPP_UNSPEC                            = 0x0\n\tIFLA_PPP_DEV_FD                            = 0x1\n\tIFLA_GTP_UNSPEC                            = 0x0\n\tIFLA_GTP_FD0                               = 0x1\n\tIFLA_GTP_FD1                               = 0x2\n\tIFLA_GTP_PDP_HASHSIZE                      = 0x3\n\tIFLA_GTP_ROLE                              = 0x4\n\tIFLA_GTP_CREATE_SOCKETS                    = 0x5\n\tIFLA_GTP_RESTART_COUNT                     = 0x6\n\tIFLA_BOND_UNSPEC                           = 0x0\n\tIFLA_BOND_MODE                             = 0x1\n\tIFLA_BOND_ACTIVE_SLAVE                     = 0x2\n\tIFLA_BOND_MIIMON                           = 0x3\n\tIFLA_BOND_UPDELAY                          = 0x4\n\tIFLA_BOND_DOWNDELAY                        = 0x5\n\tIFLA_BOND_USE_CARRIER                      = 0x6\n\tIFLA_BOND_ARP_INTERVAL                     = 0x7\n\tIFLA_BOND_ARP_IP_TARGET                    = 0x8\n\tIFLA_BOND_ARP_VALIDATE                     = 0x9\n\tIFLA_BOND_ARP_ALL_TARGETS                  = 0xa\n\tIFLA_BOND_PRIMARY                          = 0xb\n\tIFLA_BOND_PRIMARY_RESELECT                 = 0xc\n\tIFLA_BOND_FAIL_OVER_MAC                    = 0xd\n\tIFLA_BOND_XMIT_HASH_POLICY                 = 0xe\n\tIFLA_BOND_RESEND_IGMP                      = 0xf\n\tIFLA_BOND_NUM_PEER_NOTIF                   = 0x10\n\tIFLA_BOND_ALL_SLAVES_ACTIVE                = 0x11\n\tIFLA_BOND_MIN_LINKS                        = 0x12\n\tIFLA_BOND_LP_INTERVAL                      = 0x13\n\tIFLA_BOND_PACKETS_PER_SLAVE                = 0x14\n\tIFLA_BOND_AD_LACP_RATE                     = 0x15\n\tIFLA_BOND_AD_SELECT                        = 0x16\n\tIFLA_BOND_AD_INFO                          = 0x17\n\tIFLA_BOND_AD_ACTOR_SYS_PRIO                = 0x18\n\tIFLA_BOND_AD_USER_PORT_KEY                 = 0x19\n\tIFLA_BOND_AD_ACTOR_SYSTEM                  = 0x1a\n\tIFLA_BOND_TLB_DYNAMIC_LB                   = 0x1b\n\tIFLA_BOND_PEER_NOTIF_DELAY                 = 0x1c\n\tIFLA_BOND_AD_LACP_ACTIVE                   = 0x1d\n\tIFLA_BOND_MISSED_MAX                       = 0x1e\n\tIFLA_BOND_NS_IP6_TARGET                    = 0x1f\n\tIFLA_BOND_AD_INFO_UNSPEC                   = 0x0\n\tIFLA_BOND_AD_INFO_AGGREGATOR               = 0x1\n\tIFLA_BOND_AD_INFO_NUM_PORTS                = 0x2\n\tIFLA_BOND_AD_INFO_ACTOR_KEY                = 0x3\n\tIFLA_BOND_AD_INFO_PARTNER_KEY              = 0x4\n\tIFLA_BOND_AD_INFO_PARTNER_MAC              = 0x5\n\tIFLA_BOND_SLAVE_UNSPEC                     = 0x0\n\tIFLA_BOND_SLAVE_STATE                      = 0x1\n\tIFLA_BOND_SLAVE_MII_STATUS                 = 0x2\n\tIFLA_BOND_SLAVE_LINK_FAILURE_COUNT         = 0x3\n\tIFLA_BOND_SLAVE_PERM_HWADDR                = 0x4\n\tIFLA_BOND_SLAVE_QUEUE_ID                   = 0x5\n\tIFLA_BOND_SLAVE_AD_AGGREGATOR_ID           = 0x6\n\tIFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE   = 0x7\n\tIFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE = 0x8\n\tIFLA_BOND_SLAVE_PRIO                       = 0x9\n\tIFLA_VF_INFO_UNSPEC                        = 0x0\n\tIFLA_VF_INFO                               = 0x1\n\tIFLA_VF_UNSPEC                             = 0x0\n\tIFLA_VF_MAC                                = 0x1\n\tIFLA_VF_VLAN                               = 0x2\n\tIFLA_VF_TX_RATE                            = 0x3\n\tIFLA_VF_SPOOFCHK                           = 0x4\n\tIFLA_VF_LINK_STATE                         = 0x5\n\tIFLA_VF_RATE                               = 0x6\n\tIFLA_VF_RSS_QUERY_EN                       = 0x7\n\tIFLA_VF_STATS                              = 0x8\n\tIFLA_VF_TRUST                              = 0x9\n\tIFLA_VF_IB_NODE_GUID                       = 0xa\n\tIFLA_VF_IB_PORT_GUID                       = 0xb\n\tIFLA_VF_VLAN_LIST                          = 0xc\n\tIFLA_VF_BROADCAST                          = 0xd\n\tIFLA_VF_VLAN_INFO_UNSPEC                   = 0x0\n\tIFLA_VF_VLAN_INFO                          = 0x1\n\tIFLA_VF_LINK_STATE_AUTO                    = 0x0\n\tIFLA_VF_LINK_STATE_ENABLE                  = 0x1\n\tIFLA_VF_LINK_STATE_DISABLE                 = 0x2\n\tIFLA_VF_STATS_RX_PACKETS                   = 0x0\n\tIFLA_VF_STATS_TX_PACKETS                   = 0x1\n\tIFLA_VF_STATS_RX_BYTES                     = 0x2\n\tIFLA_VF_STATS_TX_BYTES                     = 0x3\n\tIFLA_VF_STATS_BROADCAST                    = 0x4\n\tIFLA_VF_STATS_MULTICAST                    = 0x5\n\tIFLA_VF_STATS_PAD                          = 0x6\n\tIFLA_VF_STATS_RX_DROPPED                   = 0x7\n\tIFLA_VF_STATS_TX_DROPPED                   = 0x8\n\tIFLA_VF_PORT_UNSPEC                        = 0x0\n\tIFLA_VF_PORT                               = 0x1\n\tIFLA_PORT_UNSPEC                           = 0x0\n\tIFLA_PORT_VF                               = 0x1\n\tIFLA_PORT_PROFILE                          = 0x2\n\tIFLA_PORT_VSI_TYPE                         = 0x3\n\tIFLA_PORT_INSTANCE_UUID                    = 0x4\n\tIFLA_PORT_HOST_UUID                        = 0x5\n\tIFLA_PORT_REQUEST                          = 0x6\n\tIFLA_PORT_RESPONSE                         = 0x7\n\tIFLA_IPOIB_UNSPEC                          = 0x0\n\tIFLA_IPOIB_PKEY                            = 0x1\n\tIFLA_IPOIB_MODE                            = 0x2\n\tIFLA_IPOIB_UMCAST                          = 0x3\n\tIFLA_HSR_UNSPEC                            = 0x0\n\tIFLA_HSR_SLAVE1                            = 0x1\n\tIFLA_HSR_SLAVE2                            = 0x2\n\tIFLA_HSR_MULTICAST_SPEC                    = 0x3\n\tIFLA_HSR_SUPERVISION_ADDR                  = 0x4\n\tIFLA_HSR_SEQ_NR                            = 0x5\n\tIFLA_HSR_VERSION                           = 0x6\n\tIFLA_HSR_PROTOCOL                          = 0x7\n\tIFLA_STATS_UNSPEC                          = 0x0\n\tIFLA_STATS_LINK_64                         = 0x1\n\tIFLA_STATS_LINK_XSTATS                     = 0x2\n\tIFLA_STATS_LINK_XSTATS_SLAVE               = 0x3\n\tIFLA_STATS_LINK_OFFLOAD_XSTATS             = 0x4\n\tIFLA_STATS_AF_SPEC                         = 0x5\n\tIFLA_STATS_GETSET_UNSPEC                   = 0x0\n\tIFLA_STATS_GET_FILTERS                     = 0x1\n\tIFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS     = 0x2\n\tIFLA_OFFLOAD_XSTATS_UNSPEC                 = 0x0\n\tIFLA_OFFLOAD_XSTATS_CPU_HIT                = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO              = 0x2\n\tIFLA_OFFLOAD_XSTATS_L3_STATS               = 0x3\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC       = 0x0\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST      = 0x1\n\tIFLA_OFFLOAD_XSTATS_HW_S_INFO_USED         = 0x2\n\tIFLA_XDP_UNSPEC                            = 0x0\n\tIFLA_XDP_FD                                = 0x1\n\tIFLA_XDP_ATTACHED                          = 0x2\n\tIFLA_XDP_FLAGS                             = 0x3\n\tIFLA_XDP_PROG_ID                           = 0x4\n\tIFLA_XDP_DRV_PROG_ID                       = 0x5\n\tIFLA_XDP_SKB_PROG_ID                       = 0x6\n\tIFLA_XDP_HW_PROG_ID                        = 0x7\n\tIFLA_XDP_EXPECTED_FD                       = 0x8\n\tIFLA_EVENT_NONE                            = 0x0\n\tIFLA_EVENT_REBOOT                          = 0x1\n\tIFLA_EVENT_FEATURES                        = 0x2\n\tIFLA_EVENT_BONDING_FAILOVER                = 0x3\n\tIFLA_EVENT_NOTIFY_PEERS                    = 0x4\n\tIFLA_EVENT_IGMP_RESEND                     = 0x5\n\tIFLA_EVENT_BONDING_OPTIONS                 = 0x6\n\tIFLA_TUN_UNSPEC                            = 0x0\n\tIFLA_TUN_OWNER                             = 0x1\n\tIFLA_TUN_GROUP                             = 0x2\n\tIFLA_TUN_TYPE                              = 0x3\n\tIFLA_TUN_PI                                = 0x4\n\tIFLA_TUN_VNET_HDR                          = 0x5\n\tIFLA_TUN_PERSIST                           = 0x6\n\tIFLA_TUN_MULTI_QUEUE                       = 0x7\n\tIFLA_TUN_NUM_QUEUES                        = 0x8\n\tIFLA_TUN_NUM_DISABLED_QUEUES               = 0x9\n\tIFLA_RMNET_UNSPEC                          = 0x0\n\tIFLA_RMNET_MUX_ID                          = 0x1\n\tIFLA_RMNET_FLAGS                           = 0x2\n\tIFLA_MCTP_UNSPEC                           = 0x0\n\tIFLA_MCTP_NET                              = 0x1\n\tIFLA_DSA_UNSPEC                            = 0x0\n\tIFLA_DSA_CONDUIT                           = 0x1\n\tIFLA_DSA_MASTER                            = 0x1\n)\n\nconst (\n\tNF_INET_PRE_ROUTING  = 0x0\n\tNF_INET_LOCAL_IN     = 0x1\n\tNF_INET_FORWARD      = 0x2\n\tNF_INET_LOCAL_OUT    = 0x3\n\tNF_INET_POST_ROUTING = 0x4\n\tNF_INET_NUMHOOKS     = 0x5\n)\n\nconst (\n\tNF_NETDEV_INGRESS  = 0x0\n\tNF_NETDEV_EGRESS   = 0x1\n\tNF_NETDEV_NUMHOOKS = 0x2\n)\n\nconst (\n\tNFPROTO_UNSPEC   = 0x0\n\tNFPROTO_INET     = 0x1\n\tNFPROTO_IPV4     = 0x2\n\tNFPROTO_ARP      = 0x3\n\tNFPROTO_NETDEV   = 0x5\n\tNFPROTO_BRIDGE   = 0x7\n\tNFPROTO_IPV6     = 0xa\n\tNFPROTO_DECNET   = 0xc\n\tNFPROTO_NUMPROTO = 0xd\n)\n\nconst SO_ORIGINAL_DST = 0x50\n\ntype Nfgenmsg struct {\n\tNfgen_family uint8\n\tVersion      uint8\n\tRes_id       uint16\n}\n\nconst (\n\tNFNL_BATCH_UNSPEC = 0x0\n\tNFNL_BATCH_GENID  = 0x1\n)\n\nconst (\n\tNFT_REG_VERDICT                   = 0x0\n\tNFT_REG_1                         = 0x1\n\tNFT_REG_2                         = 0x2\n\tNFT_REG_3                         = 0x3\n\tNFT_REG_4                         = 0x4\n\tNFT_REG32_00                      = 0x8\n\tNFT_REG32_01                      = 0x9\n\tNFT_REG32_02                      = 0xa\n\tNFT_REG32_03                      = 0xb\n\tNFT_REG32_04                      = 0xc\n\tNFT_REG32_05                      = 0xd\n\tNFT_REG32_06                      = 0xe\n\tNFT_REG32_07                      = 0xf\n\tNFT_REG32_08                      = 0x10\n\tNFT_REG32_09                      = 0x11\n\tNFT_REG32_10                      = 0x12\n\tNFT_REG32_11                      = 0x13\n\tNFT_REG32_12                      = 0x14\n\tNFT_REG32_13                      = 0x15\n\tNFT_REG32_14                      = 0x16\n\tNFT_REG32_15                      = 0x17\n\tNFT_CONTINUE                      = -0x1\n\tNFT_BREAK                         = -0x2\n\tNFT_JUMP                          = -0x3\n\tNFT_GOTO                          = -0x4\n\tNFT_RETURN                        = -0x5\n\tNFT_MSG_NEWTABLE                  = 0x0\n\tNFT_MSG_GETTABLE                  = 0x1\n\tNFT_MSG_DELTABLE                  = 0x2\n\tNFT_MSG_NEWCHAIN                  = 0x3\n\tNFT_MSG_GETCHAIN                  = 0x4\n\tNFT_MSG_DELCHAIN                  = 0x5\n\tNFT_MSG_NEWRULE                   = 0x6\n\tNFT_MSG_GETRULE                   = 0x7\n\tNFT_MSG_DELRULE                   = 0x8\n\tNFT_MSG_NEWSET                    = 0x9\n\tNFT_MSG_GETSET                    = 0xa\n\tNFT_MSG_DELSET                    = 0xb\n\tNFT_MSG_NEWSETELEM                = 0xc\n\tNFT_MSG_GETSETELEM                = 0xd\n\tNFT_MSG_DELSETELEM                = 0xe\n\tNFT_MSG_NEWGEN                    = 0xf\n\tNFT_MSG_GETGEN                    = 0x10\n\tNFT_MSG_TRACE                     = 0x11\n\tNFT_MSG_NEWOBJ                    = 0x12\n\tNFT_MSG_GETOBJ                    = 0x13\n\tNFT_MSG_DELOBJ                    = 0x14\n\tNFT_MSG_GETOBJ_RESET              = 0x15\n\tNFT_MSG_NEWFLOWTABLE              = 0x16\n\tNFT_MSG_GETFLOWTABLE              = 0x17\n\tNFT_MSG_DELFLOWTABLE              = 0x18\n\tNFT_MSG_GETRULE_RESET             = 0x19\n\tNFT_MSG_MAX                       = 0x22\n\tNFTA_LIST_UNSPEC                  = 0x0\n\tNFTA_LIST_ELEM                    = 0x1\n\tNFTA_HOOK_UNSPEC                  = 0x0\n\tNFTA_HOOK_HOOKNUM                 = 0x1\n\tNFTA_HOOK_PRIORITY                = 0x2\n\tNFTA_HOOK_DEV                     = 0x3\n\tNFT_TABLE_F_DORMANT               = 0x1\n\tNFTA_TABLE_UNSPEC                 = 0x0\n\tNFTA_TABLE_NAME                   = 0x1\n\tNFTA_TABLE_FLAGS                  = 0x2\n\tNFTA_TABLE_USE                    = 0x3\n\tNFTA_CHAIN_UNSPEC                 = 0x0\n\tNFTA_CHAIN_TABLE                  = 0x1\n\tNFTA_CHAIN_HANDLE                 = 0x2\n\tNFTA_CHAIN_NAME                   = 0x3\n\tNFTA_CHAIN_HOOK                   = 0x4\n\tNFTA_CHAIN_POLICY                 = 0x5\n\tNFTA_CHAIN_USE                    = 0x6\n\tNFTA_CHAIN_TYPE                   = 0x7\n\tNFTA_CHAIN_COUNTERS               = 0x8\n\tNFTA_CHAIN_PAD                    = 0x9\n\tNFTA_RULE_UNSPEC                  = 0x0\n\tNFTA_RULE_TABLE                   = 0x1\n\tNFTA_RULE_CHAIN                   = 0x2\n\tNFTA_RULE_HANDLE                  = 0x3\n\tNFTA_RULE_EXPRESSIONS             = 0x4\n\tNFTA_RULE_COMPAT                  = 0x5\n\tNFTA_RULE_POSITION                = 0x6\n\tNFTA_RULE_USERDATA                = 0x7\n\tNFTA_RULE_PAD                     = 0x8\n\tNFTA_RULE_ID                      = 0x9\n\tNFT_RULE_COMPAT_F_INV             = 0x2\n\tNFT_RULE_COMPAT_F_MASK            = 0x2\n\tNFTA_RULE_COMPAT_UNSPEC           = 0x0\n\tNFTA_RULE_COMPAT_PROTO            = 0x1\n\tNFTA_RULE_COMPAT_FLAGS            = 0x2\n\tNFT_SET_ANONYMOUS                 = 0x1\n\tNFT_SET_CONSTANT                  = 0x2\n\tNFT_SET_INTERVAL                  = 0x4\n\tNFT_SET_MAP                       = 0x8\n\tNFT_SET_TIMEOUT                   = 0x10\n\tNFT_SET_EVAL                      = 0x20\n\tNFT_SET_OBJECT                    = 0x40\n\tNFT_SET_POL_PERFORMANCE           = 0x0\n\tNFT_SET_POL_MEMORY                = 0x1\n\tNFTA_SET_DESC_UNSPEC              = 0x0\n\tNFTA_SET_DESC_SIZE                = 0x1\n\tNFTA_SET_UNSPEC                   = 0x0\n\tNFTA_SET_TABLE                    = 0x1\n\tNFTA_SET_NAME                     = 0x2\n\tNFTA_SET_FLAGS                    = 0x3\n\tNFTA_SET_KEY_TYPE                 = 0x4\n\tNFTA_SET_KEY_LEN                  = 0x5\n\tNFTA_SET_DATA_TYPE                = 0x6\n\tNFTA_SET_DATA_LEN                 = 0x7\n\tNFTA_SET_POLICY                   = 0x8\n\tNFTA_SET_DESC                     = 0x9\n\tNFTA_SET_ID                       = 0xa\n\tNFTA_SET_TIMEOUT                  = 0xb\n\tNFTA_SET_GC_INTERVAL              = 0xc\n\tNFTA_SET_USERDATA                 = 0xd\n\tNFTA_SET_PAD                      = 0xe\n\tNFTA_SET_OBJ_TYPE                 = 0xf\n\tNFT_SET_ELEM_INTERVAL_END         = 0x1\n\tNFTA_SET_ELEM_UNSPEC              = 0x0\n\tNFTA_SET_ELEM_KEY                 = 0x1\n\tNFTA_SET_ELEM_DATA                = 0x2\n\tNFTA_SET_ELEM_FLAGS               = 0x3\n\tNFTA_SET_ELEM_TIMEOUT             = 0x4\n\tNFTA_SET_ELEM_EXPIRATION          = 0x5\n\tNFTA_SET_ELEM_USERDATA            = 0x6\n\tNFTA_SET_ELEM_EXPR                = 0x7\n\tNFTA_SET_ELEM_PAD                 = 0x8\n\tNFTA_SET_ELEM_OBJREF              = 0x9\n\tNFTA_SET_ELEM_LIST_UNSPEC         = 0x0\n\tNFTA_SET_ELEM_LIST_TABLE          = 0x1\n\tNFTA_SET_ELEM_LIST_SET            = 0x2\n\tNFTA_SET_ELEM_LIST_ELEMENTS       = 0x3\n\tNFTA_SET_ELEM_LIST_SET_ID         = 0x4\n\tNFT_DATA_VALUE                    = 0x0\n\tNFT_DATA_VERDICT                  = 0xffffff00\n\tNFTA_DATA_UNSPEC                  = 0x0\n\tNFTA_DATA_VALUE                   = 0x1\n\tNFTA_DATA_VERDICT                 = 0x2\n\tNFTA_VERDICT_UNSPEC               = 0x0\n\tNFTA_VERDICT_CODE                 = 0x1\n\tNFTA_VERDICT_CHAIN                = 0x2\n\tNFTA_EXPR_UNSPEC                  = 0x0\n\tNFTA_EXPR_NAME                    = 0x1\n\tNFTA_EXPR_DATA                    = 0x2\n\tNFTA_IMMEDIATE_UNSPEC             = 0x0\n\tNFTA_IMMEDIATE_DREG               = 0x1\n\tNFTA_IMMEDIATE_DATA               = 0x2\n\tNFTA_BITWISE_UNSPEC               = 0x0\n\tNFTA_BITWISE_SREG                 = 0x1\n\tNFTA_BITWISE_DREG                 = 0x2\n\tNFTA_BITWISE_LEN                  = 0x3\n\tNFTA_BITWISE_MASK                 = 0x4\n\tNFTA_BITWISE_XOR                  = 0x5\n\tNFT_BYTEORDER_NTOH                = 0x0\n\tNFT_BYTEORDER_HTON                = 0x1\n\tNFTA_BYTEORDER_UNSPEC             = 0x0\n\tNFTA_BYTEORDER_SREG               = 0x1\n\tNFTA_BYTEORDER_DREG               = 0x2\n\tNFTA_BYTEORDER_OP                 = 0x3\n\tNFTA_BYTEORDER_LEN                = 0x4\n\tNFTA_BYTEORDER_SIZE               = 0x5\n\tNFT_CMP_EQ                        = 0x0\n\tNFT_CMP_NEQ                       = 0x1\n\tNFT_CMP_LT                        = 0x2\n\tNFT_CMP_LTE                       = 0x3\n\tNFT_CMP_GT                        = 0x4\n\tNFT_CMP_GTE                       = 0x5\n\tNFTA_CMP_UNSPEC                   = 0x0\n\tNFTA_CMP_SREG                     = 0x1\n\tNFTA_CMP_OP                       = 0x2\n\tNFTA_CMP_DATA                     = 0x3\n\tNFT_RANGE_EQ                      = 0x0\n\tNFT_RANGE_NEQ                     = 0x1\n\tNFTA_RANGE_UNSPEC                 = 0x0\n\tNFTA_RANGE_SREG                   = 0x1\n\tNFTA_RANGE_OP                     = 0x2\n\tNFTA_RANGE_FROM_DATA              = 0x3\n\tNFTA_RANGE_TO_DATA                = 0x4\n\tNFT_LOOKUP_F_INV                  = 0x1\n\tNFTA_LOOKUP_UNSPEC                = 0x0\n\tNFTA_LOOKUP_SET                   = 0x1\n\tNFTA_LOOKUP_SREG                  = 0x2\n\tNFTA_LOOKUP_DREG                  = 0x3\n\tNFTA_LOOKUP_SET_ID                = 0x4\n\tNFTA_LOOKUP_FLAGS                 = 0x5\n\tNFT_DYNSET_OP_ADD                 = 0x0\n\tNFT_DYNSET_OP_UPDATE              = 0x1\n\tNFT_DYNSET_F_INV                  = 0x1\n\tNFTA_DYNSET_UNSPEC                = 0x0\n\tNFTA_DYNSET_SET_NAME              = 0x1\n\tNFTA_DYNSET_SET_ID                = 0x2\n\tNFTA_DYNSET_OP                    = 0x3\n\tNFTA_DYNSET_SREG_KEY              = 0x4\n\tNFTA_DYNSET_SREG_DATA             = 0x5\n\tNFTA_DYNSET_TIMEOUT               = 0x6\n\tNFTA_DYNSET_EXPR                  = 0x7\n\tNFTA_DYNSET_PAD                   = 0x8\n\tNFTA_DYNSET_FLAGS                 = 0x9\n\tNFT_PAYLOAD_LL_HEADER             = 0x0\n\tNFT_PAYLOAD_NETWORK_HEADER        = 0x1\n\tNFT_PAYLOAD_TRANSPORT_HEADER      = 0x2\n\tNFT_PAYLOAD_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\nconst (\n\tNFTA_TARGET_UNSPEC = 0x0\n\tNFTA_TARGET_NAME   = 0x1\n\tNFTA_TARGET_REV    = 0x2\n\tNFTA_TARGET_INFO   = 0x3\n\tNFTA_MATCH_UNSPEC  = 0x0\n\tNFTA_MATCH_NAME    = 0x1\n\tNFTA_MATCH_REV     = 0x2\n\tNFTA_MATCH_INFO    = 0x3\n\tNFTA_COMPAT_UNSPEC = 0x0\n\tNFTA_COMPAT_NAME   = 0x1\n\tNFTA_COMPAT_REV    = 0x2\n\tNFTA_COMPAT_TYPE   = 0x3\n)\n\ntype RTCTime struct {\n\tSec   int32\n\tMin   int32\n\tHour  int32\n\tMday  int32\n\tMon   int32\n\tYear  int32\n\tWday  int32\n\tYday  int32\n\tIsdst int32\n}\n\ntype RTCWkAlrm struct {\n\tEnabled uint8\n\tPending uint8\n\tTime    RTCTime\n}\n\ntype BlkpgIoctlArg struct {\n\tOp      int32\n\tFlags   int32\n\tDatalen int32\n\tData    *byte\n}\n\nconst (\n\tBLKPG_ADD_PARTITION    = 0x1\n\tBLKPG_DEL_PARTITION    = 0x2\n\tBLKPG_RESIZE_PARTITION = 0x3\n)\n\nconst (\n\tNETNSA_NONE         = 0x0\n\tNETNSA_NSID         = 0x1\n\tNETNSA_PID          = 0x2\n\tNETNSA_FD           = 0x3\n\tNETNSA_TARGET_NSID  = 0x4\n\tNETNSA_CURRENT_NSID = 0x5\n)\n\ntype XDPRingOffset struct {\n\tProducer uint64\n\tConsumer uint64\n\tDesc     uint64\n\tFlags    uint64\n}\n\ntype XDPMmapOffsets struct {\n\tRx XDPRingOffset\n\tTx XDPRingOffset\n\tFr XDPRingOffset\n\tCr XDPRingOffset\n}\n\ntype XDPStatistics struct {\n\tRx_dropped               uint64\n\tRx_invalid_descs         uint64\n\tTx_invalid_descs         uint64\n\tRx_ring_full             uint64\n\tRx_fill_ring_empty_descs uint64\n\tTx_ring_empty_descs      uint64\n}\n\ntype XDPDesc struct {\n\tAddr    uint64\n\tLen     uint32\n\tOptions uint32\n}\n\nconst (\n\tNCSI_CMD_UNSPEC                 = 0x0\n\tNCSI_CMD_PKG_INFO               = 0x1\n\tNCSI_CMD_SET_INTERFACE          = 0x2\n\tNCSI_CMD_CLEAR_INTERFACE        = 0x3\n\tNCSI_ATTR_UNSPEC                = 0x0\n\tNCSI_ATTR_IFINDEX               = 0x1\n\tNCSI_ATTR_PACKAGE_LIST          = 0x2\n\tNCSI_ATTR_PACKAGE_ID            = 0x3\n\tNCSI_ATTR_CHANNEL_ID            = 0x4\n\tNCSI_PKG_ATTR_UNSPEC            = 0x0\n\tNCSI_PKG_ATTR                   = 0x1\n\tNCSI_PKG_ATTR_ID                = 0x2\n\tNCSI_PKG_ATTR_FORCED            = 0x3\n\tNCSI_PKG_ATTR_CHANNEL_LIST      = 0x4\n\tNCSI_CHANNEL_ATTR_UNSPEC        = 0x0\n\tNCSI_CHANNEL_ATTR               = 0x1\n\tNCSI_CHANNEL_ATTR_ID            = 0x2\n\tNCSI_CHANNEL_ATTR_VERSION_MAJOR = 0x3\n\tNCSI_CHANNEL_ATTR_VERSION_MINOR = 0x4\n\tNCSI_CHANNEL_ATTR_VERSION_STR   = 0x5\n\tNCSI_CHANNEL_ATTR_LINK_STATE    = 0x6\n\tNCSI_CHANNEL_ATTR_ACTIVE        = 0x7\n\tNCSI_CHANNEL_ATTR_FORCED        = 0x8\n\tNCSI_CHANNEL_ATTR_VLAN_LIST     = 0x9\n\tNCSI_CHANNEL_ATTR_VLAN_ID       = 0xa\n)\n\ntype ScmTimestamping struct {\n\tTs [3]Timespec\n}\n\nconst (\n\tSOF_TIMESTAMPING_TX_HARDWARE  = 0x1\n\tSOF_TIMESTAMPING_TX_SOFTWARE  = 0x2\n\tSOF_TIMESTAMPING_RX_HARDWARE  = 0x4\n\tSOF_TIMESTAMPING_RX_SOFTWARE  = 0x8\n\tSOF_TIMESTAMPING_SOFTWARE     = 0x10\n\tSOF_TIMESTAMPING_SYS_HARDWARE = 0x20\n\tSOF_TIMESTAMPING_RAW_HARDWARE = 0x40\n\tSOF_TIMESTAMPING_OPT_ID       = 0x80\n\tSOF_TIMESTAMPING_TX_SCHED     = 0x100\n\tSOF_TIMESTAMPING_TX_ACK       = 0x200\n\tSOF_TIMESTAMPING_OPT_CMSG     = 0x400\n\tSOF_TIMESTAMPING_OPT_TSONLY   = 0x800\n\tSOF_TIMESTAMPING_OPT_STATS    = 0x1000\n\tSOF_TIMESTAMPING_OPT_PKTINFO  = 0x2000\n\tSOF_TIMESTAMPING_OPT_TX_SWHW  = 0x4000\n\tSOF_TIMESTAMPING_BIND_PHC     = 0x8000\n\tSOF_TIMESTAMPING_OPT_ID_TCP   = 0x10000\n\n\tSOF_TIMESTAMPING_LAST = 0x10000\n\tSOF_TIMESTAMPING_MASK = 0x1ffff\n\n\tSCM_TSTAMP_SND   = 0x0\n\tSCM_TSTAMP_SCHED = 0x1\n\tSCM_TSTAMP_ACK   = 0x2\n)\n\ntype SockExtendedErr struct {\n\tErrno  uint32\n\tOrigin uint8\n\tType   uint8\n\tCode   uint8\n\tPad    uint8\n\tInfo   uint32\n\tData   uint32\n}\n\ntype FanotifyEventMetadata struct {\n\tEvent_len    uint32\n\tVers         uint8\n\tReserved     uint8\n\tMetadata_len uint16\n\tMask         uint64\n\tFd           int32\n\tPid          int32\n}\n\ntype FanotifyResponse struct {\n\tFd       int32\n\tResponse uint32\n}\n\nconst (\n\tCRYPTO_MSG_BASE      = 0x10\n\tCRYPTO_MSG_NEWALG    = 0x10\n\tCRYPTO_MSG_DELALG    = 0x11\n\tCRYPTO_MSG_UPDATEALG = 0x12\n\tCRYPTO_MSG_GETALG    = 0x13\n\tCRYPTO_MSG_DELRNG    = 0x14\n\tCRYPTO_MSG_GETSTAT   = 0x15\n)\n\nconst (\n\tCRYPTOCFGA_UNSPEC           = 0x0\n\tCRYPTOCFGA_PRIORITY_VAL     = 0x1\n\tCRYPTOCFGA_REPORT_LARVAL    = 0x2\n\tCRYPTOCFGA_REPORT_HASH      = 0x3\n\tCRYPTOCFGA_REPORT_BLKCIPHER = 0x4\n\tCRYPTOCFGA_REPORT_AEAD      = 0x5\n\tCRYPTOCFGA_REPORT_COMPRESS  = 0x6\n\tCRYPTOCFGA_REPORT_RNG       = 0x7\n\tCRYPTOCFGA_REPORT_CIPHER    = 0x8\n\tCRYPTOCFGA_REPORT_AKCIPHER  = 0x9\n\tCRYPTOCFGA_REPORT_KPP       = 0xa\n\tCRYPTOCFGA_REPORT_ACOMP     = 0xb\n\tCRYPTOCFGA_STAT_LARVAL      = 0xc\n\tCRYPTOCFGA_STAT_HASH        = 0xd\n\tCRYPTOCFGA_STAT_BLKCIPHER   = 0xe\n\tCRYPTOCFGA_STAT_AEAD        = 0xf\n\tCRYPTOCFGA_STAT_COMPRESS    = 0x10\n\tCRYPTOCFGA_STAT_RNG         = 0x11\n\tCRYPTOCFGA_STAT_CIPHER      = 0x12\n\tCRYPTOCFGA_STAT_AKCIPHER    = 0x13\n\tCRYPTOCFGA_STAT_KPP         = 0x14\n\tCRYPTOCFGA_STAT_ACOMP       = 0x15\n)\n\nconst (\n\tBPF_REG_0                                  = 0x0\n\tBPF_REG_1                                  = 0x1\n\tBPF_REG_2                                  = 0x2\n\tBPF_REG_3                                  = 0x3\n\tBPF_REG_4                                  = 0x4\n\tBPF_REG_5                                  = 0x5\n\tBPF_REG_6                                  = 0x6\n\tBPF_REG_7                                  = 0x7\n\tBPF_REG_8                                  = 0x8\n\tBPF_REG_9                                  = 0x9\n\tBPF_REG_10                                 = 0xa\n\tBPF_CGROUP_ITER_ORDER_UNSPEC               = 0x0\n\tBPF_CGROUP_ITER_SELF_ONLY                  = 0x1\n\tBPF_CGROUP_ITER_DESCENDANTS_PRE            = 0x2\n\tBPF_CGROUP_ITER_DESCENDANTS_POST           = 0x3\n\tBPF_CGROUP_ITER_ANCESTORS_UP               = 0x4\n\tBPF_MAP_CREATE                             = 0x0\n\tBPF_MAP_LOOKUP_ELEM                        = 0x1\n\tBPF_MAP_UPDATE_ELEM                        = 0x2\n\tBPF_MAP_DELETE_ELEM                        = 0x3\n\tBPF_MAP_GET_NEXT_KEY                       = 0x4\n\tBPF_PROG_LOAD                              = 0x5\n\tBPF_OBJ_PIN                                = 0x6\n\tBPF_OBJ_GET                                = 0x7\n\tBPF_PROG_ATTACH                            = 0x8\n\tBPF_PROG_DETACH                            = 0x9\n\tBPF_PROG_TEST_RUN                          = 0xa\n\tBPF_PROG_RUN                               = 0xa\n\tBPF_PROG_GET_NEXT_ID                       = 0xb\n\tBPF_MAP_GET_NEXT_ID                        = 0xc\n\tBPF_PROG_GET_FD_BY_ID                      = 0xd\n\tBPF_MAP_GET_FD_BY_ID                       = 0xe\n\tBPF_OBJ_GET_INFO_BY_FD                     = 0xf\n\tBPF_PROG_QUERY                             = 0x10\n\tBPF_RAW_TRACEPOINT_OPEN                    = 0x11\n\tBPF_BTF_LOAD                               = 0x12\n\tBPF_BTF_GET_FD_BY_ID                       = 0x13\n\tBPF_TASK_FD_QUERY                          = 0x14\n\tBPF_MAP_LOOKUP_AND_DELETE_ELEM             = 0x15\n\tBPF_MAP_FREEZE                             = 0x16\n\tBPF_BTF_GET_NEXT_ID                        = 0x17\n\tBPF_MAP_LOOKUP_BATCH                       = 0x18\n\tBPF_MAP_LOOKUP_AND_DELETE_BATCH            = 0x19\n\tBPF_MAP_UPDATE_BATCH                       = 0x1a\n\tBPF_MAP_DELETE_BATCH                       = 0x1b\n\tBPF_LINK_CREATE                            = 0x1c\n\tBPF_LINK_UPDATE                            = 0x1d\n\tBPF_LINK_GET_FD_BY_ID                      = 0x1e\n\tBPF_LINK_GET_NEXT_ID                       = 0x1f\n\tBPF_ENABLE_STATS                           = 0x20\n\tBPF_ITER_CREATE                            = 0x21\n\tBPF_LINK_DETACH                            = 0x22\n\tBPF_PROG_BIND_MAP                          = 0x23\n\tBPF_MAP_TYPE_UNSPEC                        = 0x0\n\tBPF_MAP_TYPE_HASH                          = 0x1\n\tBPF_MAP_TYPE_ARRAY                         = 0x2\n\tBPF_MAP_TYPE_PROG_ARRAY                    = 0x3\n\tBPF_MAP_TYPE_PERF_EVENT_ARRAY              = 0x4\n\tBPF_MAP_TYPE_PERCPU_HASH                   = 0x5\n\tBPF_MAP_TYPE_PERCPU_ARRAY                  = 0x6\n\tBPF_MAP_TYPE_STACK_TRACE                   = 0x7\n\tBPF_MAP_TYPE_CGROUP_ARRAY                  = 0x8\n\tBPF_MAP_TYPE_LRU_HASH                      = 0x9\n\tBPF_MAP_TYPE_LRU_PERCPU_HASH               = 0xa\n\tBPF_MAP_TYPE_LPM_TRIE                      = 0xb\n\tBPF_MAP_TYPE_ARRAY_OF_MAPS                 = 0xc\n\tBPF_MAP_TYPE_HASH_OF_MAPS                  = 0xd\n\tBPF_MAP_TYPE_DEVMAP                        = 0xe\n\tBPF_MAP_TYPE_SOCKMAP                       = 0xf\n\tBPF_MAP_TYPE_CPUMAP                        = 0x10\n\tBPF_MAP_TYPE_XSKMAP                        = 0x11\n\tBPF_MAP_TYPE_SOCKHASH                      = 0x12\n\tBPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED     = 0x13\n\tBPF_MAP_TYPE_CGROUP_STORAGE                = 0x13\n\tBPF_MAP_TYPE_REUSEPORT_SOCKARRAY           = 0x14\n\tBPF_MAP_TYPE_PERCPU_CGROUP_STORAGE         = 0x15\n\tBPF_MAP_TYPE_QUEUE                         = 0x16\n\tBPF_MAP_TYPE_STACK                         = 0x17\n\tBPF_MAP_TYPE_SK_STORAGE                    = 0x18\n\tBPF_MAP_TYPE_DEVMAP_HASH                   = 0x19\n\tBPF_MAP_TYPE_STRUCT_OPS                    = 0x1a\n\tBPF_MAP_TYPE_RINGBUF                       = 0x1b\n\tBPF_MAP_TYPE_INODE_STORAGE                 = 0x1c\n\tBPF_MAP_TYPE_TASK_STORAGE                  = 0x1d\n\tBPF_MAP_TYPE_BLOOM_FILTER                  = 0x1e\n\tBPF_MAP_TYPE_USER_RINGBUF                  = 0x1f\n\tBPF_MAP_TYPE_CGRP_STORAGE                  = 0x20\n\tBPF_PROG_TYPE_UNSPEC                       = 0x0\n\tBPF_PROG_TYPE_SOCKET_FILTER                = 0x1\n\tBPF_PROG_TYPE_KPROBE                       = 0x2\n\tBPF_PROG_TYPE_SCHED_CLS                    = 0x3\n\tBPF_PROG_TYPE_SCHED_ACT                    = 0x4\n\tBPF_PROG_TYPE_TRACEPOINT                   = 0x5\n\tBPF_PROG_TYPE_XDP                          = 0x6\n\tBPF_PROG_TYPE_PERF_EVENT                   = 0x7\n\tBPF_PROG_TYPE_CGROUP_SKB                   = 0x8\n\tBPF_PROG_TYPE_CGROUP_SOCK                  = 0x9\n\tBPF_PROG_TYPE_LWT_IN                       = 0xa\n\tBPF_PROG_TYPE_LWT_OUT                      = 0xb\n\tBPF_PROG_TYPE_LWT_XMIT                     = 0xc\n\tBPF_PROG_TYPE_SOCK_OPS                     = 0xd\n\tBPF_PROG_TYPE_SK_SKB                       = 0xe\n\tBPF_PROG_TYPE_CGROUP_DEVICE                = 0xf\n\tBPF_PROG_TYPE_SK_MSG                       = 0x10\n\tBPF_PROG_TYPE_RAW_TRACEPOINT               = 0x11\n\tBPF_PROG_TYPE_CGROUP_SOCK_ADDR             = 0x12\n\tBPF_PROG_TYPE_LWT_SEG6LOCAL                = 0x13\n\tBPF_PROG_TYPE_LIRC_MODE2                   = 0x14\n\tBPF_PROG_TYPE_SK_REUSEPORT                 = 0x15\n\tBPF_PROG_TYPE_FLOW_DISSECTOR               = 0x16\n\tBPF_PROG_TYPE_CGROUP_SYSCTL                = 0x17\n\tBPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE      = 0x18\n\tBPF_PROG_TYPE_CGROUP_SOCKOPT               = 0x19\n\tBPF_PROG_TYPE_TRACING                      = 0x1a\n\tBPF_PROG_TYPE_STRUCT_OPS                   = 0x1b\n\tBPF_PROG_TYPE_EXT                          = 0x1c\n\tBPF_PROG_TYPE_LSM                          = 0x1d\n\tBPF_PROG_TYPE_SK_LOOKUP                    = 0x1e\n\tBPF_PROG_TYPE_SYSCALL                      = 0x1f\n\tBPF_PROG_TYPE_NETFILTER                    = 0x20\n\tBPF_CGROUP_INET_INGRESS                    = 0x0\n\tBPF_CGROUP_INET_EGRESS                     = 0x1\n\tBPF_CGROUP_INET_SOCK_CREATE                = 0x2\n\tBPF_CGROUP_SOCK_OPS                        = 0x3\n\tBPF_SK_SKB_STREAM_PARSER                   = 0x4\n\tBPF_SK_SKB_STREAM_VERDICT                  = 0x5\n\tBPF_CGROUP_DEVICE                          = 0x6\n\tBPF_SK_MSG_VERDICT                         = 0x7\n\tBPF_CGROUP_INET4_BIND                      = 0x8\n\tBPF_CGROUP_INET6_BIND                      = 0x9\n\tBPF_CGROUP_INET4_CONNECT                   = 0xa\n\tBPF_CGROUP_INET6_CONNECT                   = 0xb\n\tBPF_CGROUP_INET4_POST_BIND                 = 0xc\n\tBPF_CGROUP_INET6_POST_BIND                 = 0xd\n\tBPF_CGROUP_UDP4_SENDMSG                    = 0xe\n\tBPF_CGROUP_UDP6_SENDMSG                    = 0xf\n\tBPF_LIRC_MODE2                             = 0x10\n\tBPF_FLOW_DISSECTOR                         = 0x11\n\tBPF_CGROUP_SYSCTL                          = 0x12\n\tBPF_CGROUP_UDP4_RECVMSG                    = 0x13\n\tBPF_CGROUP_UDP6_RECVMSG                    = 0x14\n\tBPF_CGROUP_GETSOCKOPT                      = 0x15\n\tBPF_CGROUP_SETSOCKOPT                      = 0x16\n\tBPF_TRACE_RAW_TP                           = 0x17\n\tBPF_TRACE_FENTRY                           = 0x18\n\tBPF_TRACE_FEXIT                            = 0x19\n\tBPF_MODIFY_RETURN                          = 0x1a\n\tBPF_LSM_MAC                                = 0x1b\n\tBPF_TRACE_ITER                             = 0x1c\n\tBPF_CGROUP_INET4_GETPEERNAME               = 0x1d\n\tBPF_CGROUP_INET6_GETPEERNAME               = 0x1e\n\tBPF_CGROUP_INET4_GETSOCKNAME               = 0x1f\n\tBPF_CGROUP_INET6_GETSOCKNAME               = 0x20\n\tBPF_XDP_DEVMAP                             = 0x21\n\tBPF_CGROUP_INET_SOCK_RELEASE               = 0x22\n\tBPF_XDP_CPUMAP                             = 0x23\n\tBPF_SK_LOOKUP                              = 0x24\n\tBPF_XDP                                    = 0x25\n\tBPF_SK_SKB_VERDICT                         = 0x26\n\tBPF_SK_REUSEPORT_SELECT                    = 0x27\n\tBPF_SK_REUSEPORT_SELECT_OR_MIGRATE         = 0x28\n\tBPF_PERF_EVENT                             = 0x29\n\tBPF_TRACE_KPROBE_MULTI                     = 0x2a\n\tBPF_LSM_CGROUP                             = 0x2b\n\tBPF_STRUCT_OPS                             = 0x2c\n\tBPF_NETFILTER                              = 0x2d\n\tBPF_TCX_INGRESS                            = 0x2e\n\tBPF_TCX_EGRESS                             = 0x2f\n\tBPF_TRACE_UPROBE_MULTI                     = 0x30\n\tBPF_LINK_TYPE_UNSPEC                       = 0x0\n\tBPF_LINK_TYPE_RAW_TRACEPOINT               = 0x1\n\tBPF_LINK_TYPE_TRACING                      = 0x2\n\tBPF_LINK_TYPE_CGROUP                       = 0x3\n\tBPF_LINK_TYPE_ITER                         = 0x4\n\tBPF_LINK_TYPE_NETNS                        = 0x5\n\tBPF_LINK_TYPE_XDP                          = 0x6\n\tBPF_LINK_TYPE_PERF_EVENT                   = 0x7\n\tBPF_LINK_TYPE_KPROBE_MULTI                 = 0x8\n\tBPF_LINK_TYPE_STRUCT_OPS                   = 0x9\n\tBPF_LINK_TYPE_NETFILTER                    = 0xa\n\tBPF_LINK_TYPE_TCX                          = 0xb\n\tBPF_LINK_TYPE_UPROBE_MULTI                 = 0xc\n\tBPF_PERF_EVENT_UNSPEC                      = 0x0\n\tBPF_PERF_EVENT_UPROBE                      = 0x1\n\tBPF_PERF_EVENT_URETPROBE                   = 0x2\n\tBPF_PERF_EVENT_KPROBE                      = 0x3\n\tBPF_PERF_EVENT_KRETPROBE                   = 0x4\n\tBPF_PERF_EVENT_TRACEPOINT                  = 0x5\n\tBPF_PERF_EVENT_EVENT                       = 0x6\n\tBPF_F_KPROBE_MULTI_RETURN                  = 0x1\n\tBPF_F_UPROBE_MULTI_RETURN                  = 0x1\n\tBPF_ANY                                    = 0x0\n\tBPF_NOEXIST                                = 0x1\n\tBPF_EXIST                                  = 0x2\n\tBPF_F_LOCK                                 = 0x4\n\tBPF_F_NO_PREALLOC                          = 0x1\n\tBPF_F_NO_COMMON_LRU                        = 0x2\n\tBPF_F_NUMA_NODE                            = 0x4\n\tBPF_F_RDONLY                               = 0x8\n\tBPF_F_WRONLY                               = 0x10\n\tBPF_F_STACK_BUILD_ID                       = 0x20\n\tBPF_F_ZERO_SEED                            = 0x40\n\tBPF_F_RDONLY_PROG                          = 0x80\n\tBPF_F_WRONLY_PROG                          = 0x100\n\tBPF_F_CLONE                                = 0x200\n\tBPF_F_MMAPABLE                             = 0x400\n\tBPF_F_PRESERVE_ELEMS                       = 0x800\n\tBPF_F_INNER_MAP                            = 0x1000\n\tBPF_F_LINK                                 = 0x2000\n\tBPF_F_PATH_FD                              = 0x4000\n\tBPF_STATS_RUN_TIME                         = 0x0\n\tBPF_STACK_BUILD_ID_EMPTY                   = 0x0\n\tBPF_STACK_BUILD_ID_VALID                   = 0x1\n\tBPF_STACK_BUILD_ID_IP                      = 0x2\n\tBPF_F_RECOMPUTE_CSUM                       = 0x1\n\tBPF_F_INVALIDATE_HASH                      = 0x2\n\tBPF_F_HDR_FIELD_MASK                       = 0xf\n\tBPF_F_PSEUDO_HDR                           = 0x10\n\tBPF_F_MARK_MANGLED_0                       = 0x20\n\tBPF_F_MARK_ENFORCE                         = 0x40\n\tBPF_F_INGRESS                              = 0x1\n\tBPF_F_TUNINFO_IPV6                         = 0x1\n\tBPF_F_SKIP_FIELD_MASK                      = 0xff\n\tBPF_F_USER_STACK                           = 0x100\n\tBPF_F_FAST_STACK_CMP                       = 0x200\n\tBPF_F_REUSE_STACKID                        = 0x400\n\tBPF_F_USER_BUILD_ID                        = 0x800\n\tBPF_F_ZERO_CSUM_TX                         = 0x2\n\tBPF_F_DONT_FRAGMENT                        = 0x4\n\tBPF_F_SEQ_NUMBER                           = 0x8\n\tBPF_F_NO_TUNNEL_KEY                        = 0x10\n\tBPF_F_TUNINFO_FLAGS                        = 0x10\n\tBPF_F_INDEX_MASK                           = 0xffffffff\n\tBPF_F_CURRENT_CPU                          = 0xffffffff\n\tBPF_F_CTXLEN_MASK                          = 0xfffff00000000\n\tBPF_F_CURRENT_NETNS                        = -0x1\n\tBPF_CSUM_LEVEL_QUERY                       = 0x0\n\tBPF_CSUM_LEVEL_INC                         = 0x1\n\tBPF_CSUM_LEVEL_DEC                         = 0x2\n\tBPF_CSUM_LEVEL_RESET                       = 0x3\n\tBPF_F_ADJ_ROOM_FIXED_GSO                   = 0x1\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV4               = 0x2\n\tBPF_F_ADJ_ROOM_ENCAP_L3_IPV6               = 0x4\n\tBPF_F_ADJ_ROOM_ENCAP_L4_GRE                = 0x8\n\tBPF_F_ADJ_ROOM_ENCAP_L4_UDP                = 0x10\n\tBPF_F_ADJ_ROOM_NO_CSUM_RESET               = 0x20\n\tBPF_F_ADJ_ROOM_ENCAP_L2_ETH                = 0x40\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV4               = 0x80\n\tBPF_F_ADJ_ROOM_DECAP_L3_IPV6               = 0x100\n\tBPF_ADJ_ROOM_ENCAP_L2_MASK                 = 0xff\n\tBPF_ADJ_ROOM_ENCAP_L2_SHIFT                = 0x38\n\tBPF_F_SYSCTL_BASE_NAME                     = 0x1\n\tBPF_LOCAL_STORAGE_GET_F_CREATE             = 0x1\n\tBPF_SK_STORAGE_GET_F_CREATE                = 0x1\n\tBPF_F_GET_BRANCH_RECORDS_SIZE              = 0x1\n\tBPF_RB_NO_WAKEUP                           = 0x1\n\tBPF_RB_FORCE_WAKEUP                        = 0x2\n\tBPF_RB_AVAIL_DATA                          = 0x0\n\tBPF_RB_RING_SIZE                           = 0x1\n\tBPF_RB_CONS_POS                            = 0x2\n\tBPF_RB_PROD_POS                            = 0x3\n\tBPF_RINGBUF_BUSY_BIT                       = 0x80000000\n\tBPF_RINGBUF_DISCARD_BIT                    = 0x40000000\n\tBPF_RINGBUF_HDR_SZ                         = 0x8\n\tBPF_SK_LOOKUP_F_REPLACE                    = 0x1\n\tBPF_SK_LOOKUP_F_NO_REUSEPORT               = 0x2\n\tBPF_ADJ_ROOM_NET                           = 0x0\n\tBPF_ADJ_ROOM_MAC                           = 0x1\n\tBPF_HDR_START_MAC                          = 0x0\n\tBPF_HDR_START_NET                          = 0x1\n\tBPF_LWT_ENCAP_SEG6                         = 0x0\n\tBPF_LWT_ENCAP_SEG6_INLINE                  = 0x1\n\tBPF_LWT_ENCAP_IP                           = 0x2\n\tBPF_F_BPRM_SECUREEXEC                      = 0x1\n\tBPF_F_BROADCAST                            = 0x8\n\tBPF_F_EXCLUDE_INGRESS                      = 0x10\n\tBPF_SKB_TSTAMP_UNSPEC                      = 0x0\n\tBPF_SKB_TSTAMP_DELIVERY_MONO               = 0x1\n\tBPF_OK                                     = 0x0\n\tBPF_DROP                                   = 0x2\n\tBPF_REDIRECT                               = 0x7\n\tBPF_LWT_REROUTE                            = 0x80\n\tBPF_FLOW_DISSECTOR_CONTINUE                = 0x81\n\tBPF_SOCK_OPS_RTO_CB_FLAG                   = 0x1\n\tBPF_SOCK_OPS_RETRANS_CB_FLAG               = 0x2\n\tBPF_SOCK_OPS_STATE_CB_FLAG                 = 0x4\n\tBPF_SOCK_OPS_RTT_CB_FLAG                   = 0x8\n\tBPF_SOCK_OPS_PARSE_ALL_HDR_OPT_CB_FLAG     = 0x10\n\tBPF_SOCK_OPS_PARSE_UNKNOWN_HDR_OPT_CB_FLAG = 0x20\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB_FLAG         = 0x40\n\tBPF_SOCK_OPS_ALL_CB_FLAGS                  = 0x7f\n\tBPF_SOCK_OPS_VOID                          = 0x0\n\tBPF_SOCK_OPS_TIMEOUT_INIT                  = 0x1\n\tBPF_SOCK_OPS_RWND_INIT                     = 0x2\n\tBPF_SOCK_OPS_TCP_CONNECT_CB                = 0x3\n\tBPF_SOCK_OPS_ACTIVE_ESTABLISHED_CB         = 0x4\n\tBPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB        = 0x5\n\tBPF_SOCK_OPS_NEEDS_ECN                     = 0x6\n\tBPF_SOCK_OPS_BASE_RTT                      = 0x7\n\tBPF_SOCK_OPS_RTO_CB                        = 0x8\n\tBPF_SOCK_OPS_RETRANS_CB                    = 0x9\n\tBPF_SOCK_OPS_STATE_CB                      = 0xa\n\tBPF_SOCK_OPS_TCP_LISTEN_CB                 = 0xb\n\tBPF_SOCK_OPS_RTT_CB                        = 0xc\n\tBPF_SOCK_OPS_PARSE_HDR_OPT_CB              = 0xd\n\tBPF_SOCK_OPS_HDR_OPT_LEN_CB                = 0xe\n\tBPF_SOCK_OPS_WRITE_HDR_OPT_CB              = 0xf\n\tBPF_TCP_ESTABLISHED                        = 0x1\n\tBPF_TCP_SYN_SENT                           = 0x2\n\tBPF_TCP_SYN_RECV                           = 0x3\n\tBPF_TCP_FIN_WAIT1                          = 0x4\n\tBPF_TCP_FIN_WAIT2                          = 0x5\n\tBPF_TCP_TIME_WAIT                          = 0x6\n\tBPF_TCP_CLOSE                              = 0x7\n\tBPF_TCP_CLOSE_WAIT                         = 0x8\n\tBPF_TCP_LAST_ACK                           = 0x9\n\tBPF_TCP_LISTEN                             = 0xa\n\tBPF_TCP_CLOSING                            = 0xb\n\tBPF_TCP_NEW_SYN_RECV                       = 0xc\n\tBPF_TCP_MAX_STATES                         = 0xd\n\tTCP_BPF_IW                                 = 0x3e9\n\tTCP_BPF_SNDCWND_CLAMP                      = 0x3ea\n\tTCP_BPF_DELACK_MAX                         = 0x3eb\n\tTCP_BPF_RTO_MIN                            = 0x3ec\n\tTCP_BPF_SYN                                = 0x3ed\n\tTCP_BPF_SYN_IP                             = 0x3ee\n\tTCP_BPF_SYN_MAC                            = 0x3ef\n\tBPF_LOAD_HDR_OPT_TCP_SYN                   = 0x1\n\tBPF_WRITE_HDR_TCP_CURRENT_MSS              = 0x1\n\tBPF_WRITE_HDR_TCP_SYNACK_COOKIE            = 0x2\n\tBPF_DEVCG_ACC_MKNOD                        = 0x1\n\tBPF_DEVCG_ACC_READ                         = 0x2\n\tBPF_DEVCG_ACC_WRITE                        = 0x4\n\tBPF_DEVCG_DEV_BLOCK                        = 0x1\n\tBPF_DEVCG_DEV_CHAR                         = 0x2\n\tBPF_FIB_LOOKUP_DIRECT                      = 0x1\n\tBPF_FIB_LOOKUP_OUTPUT                      = 0x2\n\tBPF_FIB_LOOKUP_SKIP_NEIGH                  = 0x4\n\tBPF_FIB_LOOKUP_TBID                        = 0x8\n\tBPF_FIB_LKUP_RET_SUCCESS                   = 0x0\n\tBPF_FIB_LKUP_RET_BLACKHOLE                 = 0x1\n\tBPF_FIB_LKUP_RET_UNREACHABLE               = 0x2\n\tBPF_FIB_LKUP_RET_PROHIBIT                  = 0x3\n\tBPF_FIB_LKUP_RET_NOT_FWDED                 = 0x4\n\tBPF_FIB_LKUP_RET_FWD_DISABLED              = 0x5\n\tBPF_FIB_LKUP_RET_UNSUPP_LWT                = 0x6\n\tBPF_FIB_LKUP_RET_NO_NEIGH                  = 0x7\n\tBPF_FIB_LKUP_RET_FRAG_NEEDED               = 0x8\n\tBPF_MTU_CHK_SEGS                           = 0x1\n\tBPF_MTU_CHK_RET_SUCCESS                    = 0x0\n\tBPF_MTU_CHK_RET_FRAG_NEEDED                = 0x1\n\tBPF_MTU_CHK_RET_SEGS_TOOBIG                = 0x2\n\tBPF_FD_TYPE_RAW_TRACEPOINT                 = 0x0\n\tBPF_FD_TYPE_TRACEPOINT                     = 0x1\n\tBPF_FD_TYPE_KPROBE                         = 0x2\n\tBPF_FD_TYPE_KRETPROBE                      = 0x3\n\tBPF_FD_TYPE_UPROBE                         = 0x4\n\tBPF_FD_TYPE_URETPROBE                      = 0x5\n\tBPF_FLOW_DISSECTOR_F_PARSE_1ST_FRAG        = 0x1\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_FLOW_LABEL    = 0x2\n\tBPF_FLOW_DISSECTOR_F_STOP_AT_ENCAP         = 0x4\n\tBPF_CORE_FIELD_BYTE_OFFSET                 = 0x0\n\tBPF_CORE_FIELD_BYTE_SIZE                   = 0x1\n\tBPF_CORE_FIELD_EXISTS                      = 0x2\n\tBPF_CORE_FIELD_SIGNED                      = 0x3\n\tBPF_CORE_FIELD_LSHIFT_U64                  = 0x4\n\tBPF_CORE_FIELD_RSHIFT_U64                  = 0x5\n\tBPF_CORE_TYPE_ID_LOCAL                     = 0x6\n\tBPF_CORE_TYPE_ID_TARGET                    = 0x7\n\tBPF_CORE_TYPE_EXISTS                       = 0x8\n\tBPF_CORE_TYPE_SIZE                         = 0x9\n\tBPF_CORE_ENUMVAL_EXISTS                    = 0xa\n\tBPF_CORE_ENUMVAL_VALUE                     = 0xb\n\tBPF_CORE_TYPE_MATCHES                      = 0xc\n\tBPF_F_TIMER_ABS                            = 0x1\n)\n\nconst (\n\tRTNLGRP_NONE          = 0x0\n\tRTNLGRP_LINK          = 0x1\n\tRTNLGRP_NOTIFY        = 0x2\n\tRTNLGRP_NEIGH         = 0x3\n\tRTNLGRP_TC            = 0x4\n\tRTNLGRP_IPV4_IFADDR   = 0x5\n\tRTNLGRP_IPV4_MROUTE   = 0x6\n\tRTNLGRP_IPV4_ROUTE    = 0x7\n\tRTNLGRP_IPV4_RULE     = 0x8\n\tRTNLGRP_IPV6_IFADDR   = 0x9\n\tRTNLGRP_IPV6_MROUTE   = 0xa\n\tRTNLGRP_IPV6_ROUTE    = 0xb\n\tRTNLGRP_IPV6_IFINFO   = 0xc\n\tRTNLGRP_DECnet_IFADDR = 0xd\n\tRTNLGRP_NOP2          = 0xe\n\tRTNLGRP_DECnet_ROUTE  = 0xf\n\tRTNLGRP_DECnet_RULE   = 0x10\n\tRTNLGRP_NOP4          = 0x11\n\tRTNLGRP_IPV6_PREFIX   = 0x12\n\tRTNLGRP_IPV6_RULE     = 0x13\n\tRTNLGRP_ND_USEROPT    = 0x14\n\tRTNLGRP_PHONET_IFADDR = 0x15\n\tRTNLGRP_PHONET_ROUTE  = 0x16\n\tRTNLGRP_DCB           = 0x17\n\tRTNLGRP_IPV4_NETCONF  = 0x18\n\tRTNLGRP_IPV6_NETCONF  = 0x19\n\tRTNLGRP_MDB           = 0x1a\n\tRTNLGRP_MPLS_ROUTE    = 0x1b\n\tRTNLGRP_NSID          = 0x1c\n\tRTNLGRP_MPLS_NETCONF  = 0x1d\n\tRTNLGRP_IPV4_MROUTE_R = 0x1e\n\tRTNLGRP_IPV6_MROUTE_R = 0x1f\n\tRTNLGRP_NEXTHOP       = 0x20\n\tRTNLGRP_BRVLAN        = 0x21\n)\n\ntype CapUserHeader struct {\n\tVersion uint32\n\tPid     int32\n}\n\ntype CapUserData struct {\n\tEffective   uint32\n\tPermitted   uint32\n\tInheritable uint32\n}\n\nconst (\n\tLINUX_CAPABILITY_VERSION_1 = 0x19980330\n\tLINUX_CAPABILITY_VERSION_2 = 0x20071026\n\tLINUX_CAPABILITY_VERSION_3 = 0x20080522\n)\n\nconst (\n\tLO_FLAGS_READ_ONLY = 0x1\n\tLO_FLAGS_AUTOCLEAR = 0x4\n\tLO_FLAGS_PARTSCAN  = 0x8\n\tLO_FLAGS_DIRECT_IO = 0x10\n)\n\ntype LoopInfo64 struct {\n\tDevice           uint64\n\tInode            uint64\n\tRdevice          uint64\n\tOffset           uint64\n\tSizelimit        uint64\n\tNumber           uint32\n\tEncrypt_type     uint32\n\tEncrypt_key_size uint32\n\tFlags            uint32\n\tFile_name        [64]uint8\n\tCrypt_name       [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint64\n}\ntype LoopConfig struct {\n\tFd   uint32\n\tSize uint32\n\tInfo LoopInfo64\n\t_    [8]uint64\n}\n\ntype TIPCSocketAddr struct {\n\tRef  uint32\n\tNode uint32\n}\n\ntype TIPCServiceRange struct {\n\tType  uint32\n\tLower uint32\n\tUpper uint32\n}\n\ntype TIPCServiceName struct {\n\tType     uint32\n\tInstance uint32\n\tDomain   uint32\n}\n\ntype TIPCEvent struct {\n\tEvent uint32\n\tLower uint32\n\tUpper uint32\n\tPort  TIPCSocketAddr\n\tS     TIPCSubscr\n}\n\ntype TIPCGroupReq struct {\n\tType     uint32\n\tInstance uint32\n\tScope    uint32\n\tFlags    uint32\n}\n\nconst (\n\tTIPC_CLUSTER_SCOPE = 0x2\n\tTIPC_NODE_SCOPE    = 0x3\n)\n\nconst (\n\tSYSLOG_ACTION_CLOSE         = 0\n\tSYSLOG_ACTION_OPEN          = 1\n\tSYSLOG_ACTION_READ          = 2\n\tSYSLOG_ACTION_READ_ALL      = 3\n\tSYSLOG_ACTION_READ_CLEAR    = 4\n\tSYSLOG_ACTION_CLEAR         = 5\n\tSYSLOG_ACTION_CONSOLE_OFF   = 6\n\tSYSLOG_ACTION_CONSOLE_ON    = 7\n\tSYSLOG_ACTION_CONSOLE_LEVEL = 8\n\tSYSLOG_ACTION_SIZE_UNREAD   = 9\n\tSYSLOG_ACTION_SIZE_BUFFER   = 10\n)\n\nconst (\n\tDEVLINK_CMD_UNSPEC                                 = 0x0\n\tDEVLINK_CMD_GET                                    = 0x1\n\tDEVLINK_CMD_SET                                    = 0x2\n\tDEVLINK_CMD_NEW                                    = 0x3\n\tDEVLINK_CMD_DEL                                    = 0x4\n\tDEVLINK_CMD_PORT_GET                               = 0x5\n\tDEVLINK_CMD_PORT_SET                               = 0x6\n\tDEVLINK_CMD_PORT_NEW                               = 0x7\n\tDEVLINK_CMD_PORT_DEL                               = 0x8\n\tDEVLINK_CMD_PORT_SPLIT                             = 0x9\n\tDEVLINK_CMD_PORT_UNSPLIT                           = 0xa\n\tDEVLINK_CMD_SB_GET                                 = 0xb\n\tDEVLINK_CMD_SB_SET                                 = 0xc\n\tDEVLINK_CMD_SB_NEW                                 = 0xd\n\tDEVLINK_CMD_SB_DEL                                 = 0xe\n\tDEVLINK_CMD_SB_POOL_GET                            = 0xf\n\tDEVLINK_CMD_SB_POOL_SET                            = 0x10\n\tDEVLINK_CMD_SB_POOL_NEW                            = 0x11\n\tDEVLINK_CMD_SB_POOL_DEL                            = 0x12\n\tDEVLINK_CMD_SB_PORT_POOL_GET                       = 0x13\n\tDEVLINK_CMD_SB_PORT_POOL_SET                       = 0x14\n\tDEVLINK_CMD_SB_PORT_POOL_NEW                       = 0x15\n\tDEVLINK_CMD_SB_PORT_POOL_DEL                       = 0x16\n\tDEVLINK_CMD_SB_TC_POOL_BIND_GET                    = 0x17\n\tDEVLINK_CMD_SB_TC_POOL_BIND_SET                    = 0x18\n\tDEVLINK_CMD_SB_TC_POOL_BIND_NEW                    = 0x19\n\tDEVLINK_CMD_SB_TC_POOL_BIND_DEL                    = 0x1a\n\tDEVLINK_CMD_SB_OCC_SNAPSHOT                        = 0x1b\n\tDEVLINK_CMD_SB_OCC_MAX_CLEAR                       = 0x1c\n\tDEVLINK_CMD_ESWITCH_GET                            = 0x1d\n\tDEVLINK_CMD_ESWITCH_SET                            = 0x1e\n\tDEVLINK_CMD_DPIPE_TABLE_GET                        = 0x1f\n\tDEVLINK_CMD_DPIPE_ENTRIES_GET                      = 0x20\n\tDEVLINK_CMD_DPIPE_HEADERS_GET                      = 0x21\n\tDEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET               = 0x22\n\tDEVLINK_CMD_RESOURCE_SET                           = 0x23\n\tDEVLINK_CMD_RESOURCE_DUMP                          = 0x24\n\tDEVLINK_CMD_RELOAD                                 = 0x25\n\tDEVLINK_CMD_PARAM_GET                              = 0x26\n\tDEVLINK_CMD_PARAM_SET                              = 0x27\n\tDEVLINK_CMD_PARAM_NEW                              = 0x28\n\tDEVLINK_CMD_PARAM_DEL                              = 0x29\n\tDEVLINK_CMD_REGION_GET                             = 0x2a\n\tDEVLINK_CMD_REGION_SET                             = 0x2b\n\tDEVLINK_CMD_REGION_NEW                             = 0x2c\n\tDEVLINK_CMD_REGION_DEL                             = 0x2d\n\tDEVLINK_CMD_REGION_READ                            = 0x2e\n\tDEVLINK_CMD_PORT_PARAM_GET                         = 0x2f\n\tDEVLINK_CMD_PORT_PARAM_SET                         = 0x30\n\tDEVLINK_CMD_PORT_PARAM_NEW                         = 0x31\n\tDEVLINK_CMD_PORT_PARAM_DEL                         = 0x32\n\tDEVLINK_CMD_INFO_GET                               = 0x33\n\tDEVLINK_CMD_HEALTH_REPORTER_GET                    = 0x34\n\tDEVLINK_CMD_HEALTH_REPORTER_SET                    = 0x35\n\tDEVLINK_CMD_HEALTH_REPORTER_RECOVER                = 0x36\n\tDEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE               = 0x37\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_GET               = 0x38\n\tDEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR             = 0x39\n\tDEVLINK_CMD_FLASH_UPDATE                           = 0x3a\n\tDEVLINK_CMD_FLASH_UPDATE_END                       = 0x3b\n\tDEVLINK_CMD_FLASH_UPDATE_STATUS                    = 0x3c\n\tDEVLINK_CMD_TRAP_GET                               = 0x3d\n\tDEVLINK_CMD_TRAP_SET                               = 0x3e\n\tDEVLINK_CMD_TRAP_NEW                               = 0x3f\n\tDEVLINK_CMD_TRAP_DEL                               = 0x40\n\tDEVLINK_CMD_TRAP_GROUP_GET                         = 0x41\n\tDEVLINK_CMD_TRAP_GROUP_SET                         = 0x42\n\tDEVLINK_CMD_TRAP_GROUP_NEW                         = 0x43\n\tDEVLINK_CMD_TRAP_GROUP_DEL                         = 0x44\n\tDEVLINK_CMD_TRAP_POLICER_GET                       = 0x45\n\tDEVLINK_CMD_TRAP_POLICER_SET                       = 0x46\n\tDEVLINK_CMD_TRAP_POLICER_NEW                       = 0x47\n\tDEVLINK_CMD_TRAP_POLICER_DEL                       = 0x48\n\tDEVLINK_CMD_HEALTH_REPORTER_TEST                   = 0x49\n\tDEVLINK_CMD_RATE_GET                               = 0x4a\n\tDEVLINK_CMD_RATE_SET                               = 0x4b\n\tDEVLINK_CMD_RATE_NEW                               = 0x4c\n\tDEVLINK_CMD_RATE_DEL                               = 0x4d\n\tDEVLINK_CMD_LINECARD_GET                           = 0x4e\n\tDEVLINK_CMD_LINECARD_SET                           = 0x4f\n\tDEVLINK_CMD_LINECARD_NEW                           = 0x50\n\tDEVLINK_CMD_LINECARD_DEL                           = 0x51\n\tDEVLINK_CMD_SELFTESTS_GET                          = 0x52\n\tDEVLINK_CMD_MAX                                    = 0x53\n\tDEVLINK_PORT_TYPE_NOTSET                           = 0x0\n\tDEVLINK_PORT_TYPE_AUTO                             = 0x1\n\tDEVLINK_PORT_TYPE_ETH                              = 0x2\n\tDEVLINK_PORT_TYPE_IB                               = 0x3\n\tDEVLINK_SB_POOL_TYPE_INGRESS                       = 0x0\n\tDEVLINK_SB_POOL_TYPE_EGRESS                        = 0x1\n\tDEVLINK_SB_THRESHOLD_TYPE_STATIC                   = 0x0\n\tDEVLINK_SB_THRESHOLD_TYPE_DYNAMIC                  = 0x1\n\tDEVLINK_ESWITCH_MODE_LEGACY                        = 0x0\n\tDEVLINK_ESWITCH_MODE_SWITCHDEV                     = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NONE                   = 0x0\n\tDEVLINK_ESWITCH_INLINE_MODE_LINK                   = 0x1\n\tDEVLINK_ESWITCH_INLINE_MODE_NETWORK                = 0x2\n\tDEVLINK_ESWITCH_INLINE_MODE_TRANSPORT              = 0x3\n\tDEVLINK_ESWITCH_ENCAP_MODE_NONE                    = 0x0\n\tDEVLINK_ESWITCH_ENCAP_MODE_BASIC                   = 0x1\n\tDEVLINK_PORT_FLAVOUR_PHYSICAL                      = 0x0\n\tDEVLINK_PORT_FLAVOUR_CPU                           = 0x1\n\tDEVLINK_PORT_FLAVOUR_DSA                           = 0x2\n\tDEVLINK_PORT_FLAVOUR_PCI_PF                        = 0x3\n\tDEVLINK_PORT_FLAVOUR_PCI_VF                        = 0x4\n\tDEVLINK_PORT_FLAVOUR_VIRTUAL                       = 0x5\n\tDEVLINK_PORT_FLAVOUR_UNUSED                        = 0x6\n\tDEVLINK_PARAM_CMODE_RUNTIME                        = 0x0\n\tDEVLINK_PARAM_CMODE_DRIVERINIT                     = 0x1\n\tDEVLINK_PARAM_CMODE_PERMANENT                      = 0x2\n\tDEVLINK_PARAM_CMODE_MAX                            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER          = 0x0\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH           = 0x1\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DISK            = 0x2\n\tDEVLINK_PARAM_FW_LOAD_POLICY_VALUE_UNKNOWN         = 0x3\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_UNKNOWN = 0x0\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_ALWAYS  = 0x1\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_NEVER   = 0x2\n\tDEVLINK_PARAM_RESET_DEV_ON_DRV_PROBE_VALUE_DISK    = 0x3\n\tDEVLINK_ATTR_STATS_RX_PACKETS                      = 0x0\n\tDEVLINK_ATTR_STATS_RX_BYTES                        = 0x1\n\tDEVLINK_ATTR_STATS_RX_DROPPED                      = 0x2\n\tDEVLINK_ATTR_STATS_MAX                             = 0x2\n\tDEVLINK_FLASH_OVERWRITE_SETTINGS_BIT               = 0x0\n\tDEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT            = 0x1\n\tDEVLINK_FLASH_OVERWRITE_MAX_BIT                    = 0x1\n\tDEVLINK_TRAP_ACTION_DROP                           = 0x0\n\tDEVLINK_TRAP_ACTION_TRAP                           = 0x1\n\tDEVLINK_TRAP_ACTION_MIRROR                         = 0x2\n\tDEVLINK_TRAP_TYPE_DROP                             = 0x0\n\tDEVLINK_TRAP_TYPE_EXCEPTION                        = 0x1\n\tDEVLINK_TRAP_TYPE_CONTROL                          = 0x2\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_IN_PORT            = 0x0\n\tDEVLINK_ATTR_TRAP_METADATA_TYPE_FA_COOKIE          = 0x1\n\tDEVLINK_RELOAD_ACTION_UNSPEC                       = 0x0\n\tDEVLINK_RELOAD_ACTION_DRIVER_REINIT                = 0x1\n\tDEVLINK_RELOAD_ACTION_FW_ACTIVATE                  = 0x2\n\tDEVLINK_RELOAD_ACTION_MAX                          = 0x2\n\tDEVLINK_RELOAD_LIMIT_UNSPEC                        = 0x0\n\tDEVLINK_RELOAD_LIMIT_NO_RESET                      = 0x1\n\tDEVLINK_RELOAD_LIMIT_MAX                           = 0x1\n\tDEVLINK_ATTR_UNSPEC                                = 0x0\n\tDEVLINK_ATTR_BUS_NAME                              = 0x1\n\tDEVLINK_ATTR_DEV_NAME                              = 0x2\n\tDEVLINK_ATTR_PORT_INDEX                            = 0x3\n\tDEVLINK_ATTR_PORT_TYPE                             = 0x4\n\tDEVLINK_ATTR_PORT_DESIRED_TYPE                     = 0x5\n\tDEVLINK_ATTR_PORT_NETDEV_IFINDEX                   = 0x6\n\tDEVLINK_ATTR_PORT_NETDEV_NAME                      = 0x7\n\tDEVLINK_ATTR_PORT_IBDEV_NAME                       = 0x8\n\tDEVLINK_ATTR_PORT_SPLIT_COUNT                      = 0x9\n\tDEVLINK_ATTR_PORT_SPLIT_GROUP                      = 0xa\n\tDEVLINK_ATTR_SB_INDEX                              = 0xb\n\tDEVLINK_ATTR_SB_SIZE                               = 0xc\n\tDEVLINK_ATTR_SB_INGRESS_POOL_COUNT                 = 0xd\n\tDEVLINK_ATTR_SB_EGRESS_POOL_COUNT                  = 0xe\n\tDEVLINK_ATTR_SB_INGRESS_TC_COUNT                   = 0xf\n\tDEVLINK_ATTR_SB_EGRESS_TC_COUNT                    = 0x10\n\tDEVLINK_ATTR_SB_POOL_INDEX                         = 0x11\n\tDEVLINK_ATTR_SB_POOL_TYPE                          = 0x12\n\tDEVLINK_ATTR_SB_POOL_SIZE                          = 0x13\n\tDEVLINK_ATTR_SB_POOL_THRESHOLD_TYPE                = 0x14\n\tDEVLINK_ATTR_SB_THRESHOLD                          = 0x15\n\tDEVLINK_ATTR_SB_TC_INDEX                           = 0x16\n\tDEVLINK_ATTR_SB_OCC_CUR                            = 0x17\n\tDEVLINK_ATTR_SB_OCC_MAX                            = 0x18\n\tDEVLINK_ATTR_ESWITCH_MODE                          = 0x19\n\tDEVLINK_ATTR_ESWITCH_INLINE_MODE                   = 0x1a\n\tDEVLINK_ATTR_DPIPE_TABLES                          = 0x1b\n\tDEVLINK_ATTR_DPIPE_TABLE                           = 0x1c\n\tDEVLINK_ATTR_DPIPE_TABLE_NAME                      = 0x1d\n\tDEVLINK_ATTR_DPIPE_TABLE_SIZE                      = 0x1e\n\tDEVLINK_ATTR_DPIPE_TABLE_MATCHES                   = 0x1f\n\tDEVLINK_ATTR_DPIPE_TABLE_ACTIONS                   = 0x20\n\tDEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED          = 0x21\n\tDEVLINK_ATTR_DPIPE_ENTRIES                         = 0x22\n\tDEVLINK_ATTR_DPIPE_ENTRY                           = 0x23\n\tDEVLINK_ATTR_DPIPE_ENTRY_INDEX                     = 0x24\n\tDEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES              = 0x25\n\tDEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES             = 0x26\n\tDEVLINK_ATTR_DPIPE_ENTRY_COUNTER                   = 0x27\n\tDEVLINK_ATTR_DPIPE_MATCH                           = 0x28\n\tDEVLINK_ATTR_DPIPE_MATCH_VALUE                     = 0x29\n\tDEVLINK_ATTR_DPIPE_MATCH_TYPE                      = 0x2a\n\tDEVLINK_ATTR_DPIPE_ACTION                          = 0x2b\n\tDEVLINK_ATTR_DPIPE_ACTION_VALUE                    = 0x2c\n\tDEVLINK_ATTR_DPIPE_ACTION_TYPE                     = 0x2d\n\tDEVLINK_ATTR_DPIPE_VALUE                           = 0x2e\n\tDEVLINK_ATTR_DPIPE_VALUE_MASK                      = 0x2f\n\tDEVLINK_ATTR_DPIPE_VALUE_MAPPING                   = 0x30\n\tDEVLINK_ATTR_DPIPE_HEADERS                         = 0x31\n\tDEVLINK_ATTR_DPIPE_HEADER                          = 0x32\n\tDEVLINK_ATTR_DPIPE_HEADER_NAME                     = 0x33\n\tDEVLINK_ATTR_DPIPE_HEADER_ID                       = 0x34\n\tDEVLINK_ATTR_DPIPE_HEADER_FIELDS                   = 0x35\n\tDEVLINK_ATTR_DPIPE_HEADER_GLOBAL                   = 0x36\n\tDEVLINK_ATTR_DPIPE_HEADER_INDEX                    = 0x37\n\tDEVLINK_ATTR_DPIPE_FIELD                           = 0x38\n\tDEVLINK_ATTR_DPIPE_FIELD_NAME                      = 0x39\n\tDEVLINK_ATTR_DPIPE_FIELD_ID                        = 0x3a\n\tDEVLINK_ATTR_DPIPE_FIELD_BITWIDTH                  = 0x3b\n\tDEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE              = 0x3c\n\tDEVLINK_ATTR_PAD                                   = 0x3d\n\tDEVLINK_ATTR_ESWITCH_ENCAP_MODE                    = 0x3e\n\tDEVLINK_ATTR_RESOURCE_LIST                         = 0x3f\n\tDEVLINK_ATTR_RESOURCE                              = 0x40\n\tDEVLINK_ATTR_RESOURCE_NAME                         = 0x41\n\tDEVLINK_ATTR_RESOURCE_ID                           = 0x42\n\tDEVLINK_ATTR_RESOURCE_SIZE                         = 0x43\n\tDEVLINK_ATTR_RESOURCE_SIZE_NEW                     = 0x44\n\tDEVLINK_ATTR_RESOURCE_SIZE_VALID                   = 0x45\n\tDEVLINK_ATTR_RESOURCE_SIZE_MIN                     = 0x46\n\tDEVLINK_ATTR_RESOURCE_SIZE_MAX                     = 0x47\n\tDEVLINK_ATTR_RESOURCE_SIZE_GRAN                    = 0x48\n\tDEVLINK_ATTR_RESOURCE_UNIT                         = 0x49\n\tDEVLINK_ATTR_RESOURCE_OCC                          = 0x4a\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID               = 0x4b\n\tDEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS            = 0x4c\n\tDEVLINK_ATTR_PORT_FLAVOUR                          = 0x4d\n\tDEVLINK_ATTR_PORT_NUMBER                           = 0x4e\n\tDEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER             = 0x4f\n\tDEVLINK_ATTR_PARAM                                 = 0x50\n\tDEVLINK_ATTR_PARAM_NAME                            = 0x51\n\tDEVLINK_ATTR_PARAM_GENERIC                         = 0x52\n\tDEVLINK_ATTR_PARAM_TYPE                            = 0x53\n\tDEVLINK_ATTR_PARAM_VALUES_LIST                     = 0x54\n\tDEVLINK_ATTR_PARAM_VALUE                           = 0x55\n\tDEVLINK_ATTR_PARAM_VALUE_DATA                      = 0x56\n\tDEVLINK_ATTR_PARAM_VALUE_CMODE                     = 0x57\n\tDEVLINK_ATTR_REGION_NAME                           = 0x58\n\tDEVLINK_ATTR_REGION_SIZE                           = 0x59\n\tDEVLINK_ATTR_REGION_SNAPSHOTS                      = 0x5a\n\tDEVLINK_ATTR_REGION_SNAPSHOT                       = 0x5b\n\tDEVLINK_ATTR_REGION_SNAPSHOT_ID                    = 0x5c\n\tDEVLINK_ATTR_REGION_CHUNKS                         = 0x5d\n\tDEVLINK_ATTR_REGION_CHUNK                          = 0x5e\n\tDEVLINK_ATTR_REGION_CHUNK_DATA                     = 0x5f\n\tDEVLINK_ATTR_REGION_CHUNK_ADDR                     = 0x60\n\tDEVLINK_ATTR_REGION_CHUNK_LEN                      = 0x61\n\tDEVLINK_ATTR_INFO_DRIVER_NAME                      = 0x62\n\tDEVLINK_ATTR_INFO_SERIAL_NUMBER                    = 0x63\n\tDEVLINK_ATTR_INFO_VERSION_FIXED                    = 0x64\n\tDEVLINK_ATTR_INFO_VERSION_RUNNING                  = 0x65\n\tDEVLINK_ATTR_INFO_VERSION_STORED                   = 0x66\n\tDEVLINK_ATTR_INFO_VERSION_NAME                     = 0x67\n\tDEVLINK_ATTR_INFO_VERSION_VALUE                    = 0x68\n\tDEVLINK_ATTR_SB_POOL_CELL_SIZE                     = 0x69\n\tDEVLINK_ATTR_FMSG                                  = 0x6a\n\tDEVLINK_ATTR_FMSG_OBJ_NEST_START                   = 0x6b\n\tDEVLINK_ATTR_FMSG_PAIR_NEST_START                  = 0x6c\n\tDEVLINK_ATTR_FMSG_ARR_NEST_START                   = 0x6d\n\tDEVLINK_ATTR_FMSG_NEST_END                         = 0x6e\n\tDEVLINK_ATTR_FMSG_OBJ_NAME                         = 0x6f\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE                   = 0x70\n\tDEVLINK_ATTR_FMSG_OBJ_VALUE_DATA                   = 0x71\n\tDEVLINK_ATTR_HEALTH_REPORTER                       = 0x72\n\tDEVLINK_ATTR_HEALTH_REPORTER_NAME                  = 0x73\n\tDEVLINK_ATTR_HEALTH_REPORTER_STATE                 = 0x74\n\tDEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT             = 0x75\n\tDEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT         = 0x76\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS               = 0x77\n\tDEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD       = 0x78\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER          = 0x79\n\tDEVLINK_ATTR_FLASH_UPDATE_FILE_NAME                = 0x7a\n\tDEVLINK_ATTR_FLASH_UPDATE_COMPONENT                = 0x7b\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_MSG               = 0x7c\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_DONE              = 0x7d\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TOTAL             = 0x7e\n\tDEVLINK_ATTR_PORT_PCI_PF_NUMBER                    = 0x7f\n\tDEVLINK_ATTR_PORT_PCI_VF_NUMBER                    = 0x80\n\tDEVLINK_ATTR_STATS                                 = 0x81\n\tDEVLINK_ATTR_TRAP_NAME                             = 0x82\n\tDEVLINK_ATTR_TRAP_ACTION                           = 0x83\n\tDEVLINK_ATTR_TRAP_TYPE                             = 0x84\n\tDEVLINK_ATTR_TRAP_GENERIC                          = 0x85\n\tDEVLINK_ATTR_TRAP_METADATA                         = 0x86\n\tDEVLINK_ATTR_TRAP_GROUP_NAME                       = 0x87\n\tDEVLINK_ATTR_RELOAD_FAILED                         = 0x88\n\tDEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS            = 0x89\n\tDEVLINK_ATTR_NETNS_FD                              = 0x8a\n\tDEVLINK_ATTR_NETNS_PID                             = 0x8b\n\tDEVLINK_ATTR_NETNS_ID                              = 0x8c\n\tDEVLINK_ATTR_HEALTH_REPORTER_AUTO_DUMP             = 0x8d\n\tDEVLINK_ATTR_TRAP_POLICER_ID                       = 0x8e\n\tDEVLINK_ATTR_TRAP_POLICER_RATE                     = 0x8f\n\tDEVLINK_ATTR_TRAP_POLICER_BURST                    = 0x90\n\tDEVLINK_ATTR_PORT_FUNCTION                         = 0x91\n\tDEVLINK_ATTR_INFO_BOARD_SERIAL_NUMBER              = 0x92\n\tDEVLINK_ATTR_PORT_LANES                            = 0x93\n\tDEVLINK_ATTR_PORT_SPLITTABLE                       = 0x94\n\tDEVLINK_ATTR_PORT_EXTERNAL                         = 0x95\n\tDEVLINK_ATTR_PORT_CONTROLLER_NUMBER                = 0x96\n\tDEVLINK_ATTR_FLASH_UPDATE_STATUS_TIMEOUT           = 0x97\n\tDEVLINK_ATTR_FLASH_UPDATE_OVERWRITE_MASK           = 0x98\n\tDEVLINK_ATTR_RELOAD_ACTION                         = 0x99\n\tDEVLINK_ATTR_RELOAD_ACTIONS_PERFORMED              = 0x9a\n\tDEVLINK_ATTR_RELOAD_LIMITS                         = 0x9b\n\tDEVLINK_ATTR_DEV_STATS                             = 0x9c\n\tDEVLINK_ATTR_RELOAD_STATS                          = 0x9d\n\tDEVLINK_ATTR_RELOAD_STATS_ENTRY                    = 0x9e\n\tDEVLINK_ATTR_RELOAD_STATS_LIMIT                    = 0x9f\n\tDEVLINK_ATTR_RELOAD_STATS_VALUE                    = 0xa0\n\tDEVLINK_ATTR_REMOTE_RELOAD_STATS                   = 0xa1\n\tDEVLINK_ATTR_RELOAD_ACTION_INFO                    = 0xa2\n\tDEVLINK_ATTR_RELOAD_ACTION_STATS                   = 0xa3\n\tDEVLINK_ATTR_PORT_PCI_SF_NUMBER                    = 0xa4\n\tDEVLINK_ATTR_RATE_TYPE                             = 0xa5\n\tDEVLINK_ATTR_RATE_TX_SHARE                         = 0xa6\n\tDEVLINK_ATTR_RATE_TX_MAX                           = 0xa7\n\tDEVLINK_ATTR_RATE_NODE_NAME                        = 0xa8\n\tDEVLINK_ATTR_RATE_PARENT_NODE_NAME                 = 0xa9\n\tDEVLINK_ATTR_REGION_MAX_SNAPSHOTS                  = 0xaa\n\tDEVLINK_ATTR_LINECARD_INDEX                        = 0xab\n\tDEVLINK_ATTR_LINECARD_STATE                        = 0xac\n\tDEVLINK_ATTR_LINECARD_TYPE                         = 0xad\n\tDEVLINK_ATTR_LINECARD_SUPPORTED_TYPES              = 0xae\n\tDEVLINK_ATTR_NESTED_DEVLINK                        = 0xaf\n\tDEVLINK_ATTR_SELFTESTS                             = 0xb0\n\tDEVLINK_ATTR_MAX                                   = 0xb3\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE              = 0x0\n\tDEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX           = 0x1\n\tDEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT               = 0x0\n\tDEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY             = 0x0\n\tDEVLINK_DPIPE_FIELD_ETHERNET_DST_MAC               = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV4_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_FIELD_IPV6_DST_IP                    = 0x0\n\tDEVLINK_DPIPE_HEADER_ETHERNET                      = 0x0\n\tDEVLINK_DPIPE_HEADER_IPV4                          = 0x1\n\tDEVLINK_DPIPE_HEADER_IPV6                          = 0x2\n\tDEVLINK_RESOURCE_UNIT_ENTRY                        = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_UNSPEC                  = 0x0\n\tDEVLINK_PORT_FUNCTION_ATTR_HW_ADDR                 = 0x1\n\tDEVLINK_PORT_FN_ATTR_STATE                         = 0x2\n\tDEVLINK_PORT_FN_ATTR_OPSTATE                       = 0x3\n\tDEVLINK_PORT_FN_ATTR_CAPS                          = 0x4\n\tDEVLINK_PORT_FUNCTION_ATTR_MAX                     = 0x5\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\nconst (\n\tCAN_RAW_FILTER        = 0x1\n\tCAN_RAW_ERR_FILTER    = 0x2\n\tCAN_RAW_LOOPBACK      = 0x3\n\tCAN_RAW_RECV_OWN_MSGS = 0x4\n\tCAN_RAW_FD_FRAMES     = 0x5\n\tCAN_RAW_JOIN_FILTERS  = 0x6\n)\n\ntype WatchdogInfo struct {\n\tOptions  uint32\n\tVersion  uint32\n\tIdentity [32]uint8\n}\n\ntype PPSFData struct {\n\tInfo    PPSKInfo\n\tTimeout PPSKTime\n}\n\ntype PPSKParams struct {\n\tApi_version   int32\n\tMode          int32\n\tAssert_off_tu PPSKTime\n\tClear_off_tu  PPSKTime\n}\n\ntype PPSKTime struct {\n\tSec   int64\n\tNsec  int32\n\tFlags uint32\n}\n\nconst (\n\tLWTUNNEL_ENCAP_NONE       = 0x0\n\tLWTUNNEL_ENCAP_MPLS       = 0x1\n\tLWTUNNEL_ENCAP_IP         = 0x2\n\tLWTUNNEL_ENCAP_ILA        = 0x3\n\tLWTUNNEL_ENCAP_IP6        = 0x4\n\tLWTUNNEL_ENCAP_SEG6       = 0x5\n\tLWTUNNEL_ENCAP_BPF        = 0x6\n\tLWTUNNEL_ENCAP_SEG6_LOCAL = 0x7\n\tLWTUNNEL_ENCAP_RPL        = 0x8\n\tLWTUNNEL_ENCAP_IOAM6      = 0x9\n\tLWTUNNEL_ENCAP_XFRM       = 0xa\n\tLWTUNNEL_ENCAP_MAX        = 0xa\n\n\tMPLS_IPTUNNEL_UNSPEC = 0x0\n\tMPLS_IPTUNNEL_DST    = 0x1\n\tMPLS_IPTUNNEL_TTL    = 0x2\n\tMPLS_IPTUNNEL_MAX    = 0x2\n)\n\nconst (\n\tETHTOOL_ID_UNSPEC                                                       = 0x0\n\tETHTOOL_RX_COPYBREAK                                                    = 0x1\n\tETHTOOL_TX_COPYBREAK                                                    = 0x2\n\tETHTOOL_PFC_PREVENTION_TOUT                                             = 0x3\n\tETHTOOL_TUNABLE_UNSPEC                                                  = 0x0\n\tETHTOOL_TUNABLE_U8                                                      = 0x1\n\tETHTOOL_TUNABLE_U16                                                     = 0x2\n\tETHTOOL_TUNABLE_U32                                                     = 0x3\n\tETHTOOL_TUNABLE_U64                                                     = 0x4\n\tETHTOOL_TUNABLE_STRING                                                  = 0x5\n\tETHTOOL_TUNABLE_S8                                                      = 0x6\n\tETHTOOL_TUNABLE_S16                                                     = 0x7\n\tETHTOOL_TUNABLE_S32                                                     = 0x8\n\tETHTOOL_TUNABLE_S64                                                     = 0x9\n\tETHTOOL_PHY_ID_UNSPEC                                                   = 0x0\n\tETHTOOL_PHY_DOWNSHIFT                                                   = 0x1\n\tETHTOOL_PHY_FAST_LINK_DOWN                                              = 0x2\n\tETHTOOL_PHY_EDPD                                                        = 0x3\n\tETHTOOL_LINK_EXT_STATE_AUTONEG                                          = 0x0\n\tETHTOOL_LINK_EXT_STATE_LINK_TRAINING_FAILURE                            = 0x1\n\tETHTOOL_LINK_EXT_STATE_LINK_LOGICAL_MISMATCH                            = 0x2\n\tETHTOOL_LINK_EXT_STATE_BAD_SIGNAL_INTEGRITY                             = 0x3\n\tETHTOOL_LINK_EXT_STATE_NO_CABLE                                         = 0x4\n\tETHTOOL_LINK_EXT_STATE_CABLE_ISSUE                                      = 0x5\n\tETHTOOL_LINK_EXT_STATE_EEPROM_ISSUE                                     = 0x6\n\tETHTOOL_LINK_EXT_STATE_CALIBRATION_FAILURE                              = 0x7\n\tETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED                            = 0x8\n\tETHTOOL_LINK_EXT_STATE_OVERHEAT                                         = 0x9\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED                        = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_ACK_NOT_RECEIVED                           = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NEXT_PAGE_EXCHANGE_FAILED                  = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_PARTNER_DETECTED_FORCE_MODE             = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_FEC_MISMATCH_DURING_OVERRIDE               = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_AN_NO_HCD                                     = 0x6\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_FRAME_LOCK_NOT_ACQUIRED                 = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_INHIBIT_TIMEOUT                    = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_KR_LINK_PARTNER_DID_NOT_SET_RECEIVER_READY = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LT_REMOTE_FAULT                               = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_BLOCK_LOCK            = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_ACQUIRE_AM_LOCK               = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_PCS_DID_NOT_GET_ALIGN_STATUS              = 0x3\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_FC_FEC_IS_NOT_LOCKED                      = 0x4\n\tETHTOOL_LINK_EXT_SUBSTATE_LLM_RS_FEC_IS_NOT_LOCKED                      = 0x5\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_LARGE_NUMBER_OF_PHYSICAL_ERRORS           = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_BSI_UNSUPPORTED_RATE                          = 0x2\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_UNSUPPORTED_CABLE                          = 0x1\n\tETHTOOL_LINK_EXT_SUBSTATE_CI_CABLE_TEST_FAILURE                         = 0x2\n\tETHTOOL_FLASH_ALL_REGIONS                                               = 0x0\n\tETHTOOL_F_UNSUPPORTED__BIT                                              = 0x0\n\tETHTOOL_F_WISH__BIT                                                     = 0x1\n\tETHTOOL_F_COMPAT__BIT                                                   = 0x2\n\tETHTOOL_FEC_NONE_BIT                                                    = 0x0\n\tETHTOOL_FEC_AUTO_BIT                                                    = 0x1\n\tETHTOOL_FEC_OFF_BIT                                                     = 0x2\n\tETHTOOL_FEC_RS_BIT                                                      = 0x3\n\tETHTOOL_FEC_BASER_BIT                                                   = 0x4\n\tETHTOOL_FEC_LLRS_BIT                                                    = 0x5\n\tETHTOOL_LINK_MODE_10baseT_Half_BIT                                      = 0x0\n\tETHTOOL_LINK_MODE_10baseT_Full_BIT                                      = 0x1\n\tETHTOOL_LINK_MODE_100baseT_Half_BIT                                     = 0x2\n\tETHTOOL_LINK_MODE_100baseT_Full_BIT                                     = 0x3\n\tETHTOOL_LINK_MODE_1000baseT_Half_BIT                                    = 0x4\n\tETHTOOL_LINK_MODE_1000baseT_Full_BIT                                    = 0x5\n\tETHTOOL_LINK_MODE_Autoneg_BIT                                           = 0x6\n\tETHTOOL_LINK_MODE_TP_BIT                                                = 0x7\n\tETHTOOL_LINK_MODE_AUI_BIT                                               = 0x8\n\tETHTOOL_LINK_MODE_MII_BIT                                               = 0x9\n\tETHTOOL_LINK_MODE_FIBRE_BIT                                             = 0xa\n\tETHTOOL_LINK_MODE_BNC_BIT                                               = 0xb\n\tETHTOOL_LINK_MODE_10000baseT_Full_BIT                                   = 0xc\n\tETHTOOL_LINK_MODE_Pause_BIT                                             = 0xd\n\tETHTOOL_LINK_MODE_Asym_Pause_BIT                                        = 0xe\n\tETHTOOL_LINK_MODE_2500baseX_Full_BIT                                    = 0xf\n\tETHTOOL_LINK_MODE_Backplane_BIT                                         = 0x10\n\tETHTOOL_LINK_MODE_1000baseKX_Full_BIT                                   = 0x11\n\tETHTOOL_LINK_MODE_10000baseKX4_Full_BIT                                 = 0x12\n\tETHTOOL_LINK_MODE_10000baseKR_Full_BIT                                  = 0x13\n\tETHTOOL_LINK_MODE_10000baseR_FEC_BIT                                    = 0x14\n\tETHTOOL_LINK_MODE_20000baseMLD2_Full_BIT                                = 0x15\n\tETHTOOL_LINK_MODE_20000baseKR2_Full_BIT                                 = 0x16\n\tETHTOOL_LINK_MODE_40000baseKR4_Full_BIT                                 = 0x17\n\tETHTOOL_LINK_MODE_40000baseCR4_Full_BIT                                 = 0x18\n\tETHTOOL_LINK_MODE_40000baseSR4_Full_BIT                                 = 0x19\n\tETHTOOL_LINK_MODE_40000baseLR4_Full_BIT                                 = 0x1a\n\tETHTOOL_LINK_MODE_56000baseKR4_Full_BIT                                 = 0x1b\n\tETHTOOL_LINK_MODE_56000baseCR4_Full_BIT                                 = 0x1c\n\tETHTOOL_LINK_MODE_56000baseSR4_Full_BIT                                 = 0x1d\n\tETHTOOL_LINK_MODE_56000baseLR4_Full_BIT                                 = 0x1e\n\tETHTOOL_LINK_MODE_25000baseCR_Full_BIT                                  = 0x1f\n\tETHTOOL_LINK_MODE_25000baseKR_Full_BIT                                  = 0x20\n\tETHTOOL_LINK_MODE_25000baseSR_Full_BIT                                  = 0x21\n\tETHTOOL_LINK_MODE_50000baseCR2_Full_BIT                                 = 0x22\n\tETHTOOL_LINK_MODE_50000baseKR2_Full_BIT                                 = 0x23\n\tETHTOOL_LINK_MODE_100000baseKR4_Full_BIT                                = 0x24\n\tETHTOOL_LINK_MODE_100000baseSR4_Full_BIT                                = 0x25\n\tETHTOOL_LINK_MODE_100000baseCR4_Full_BIT                                = 0x26\n\tETHTOOL_LINK_MODE_100000baseLR4_ER4_Full_BIT                            = 0x27\n\tETHTOOL_LINK_MODE_50000baseSR2_Full_BIT                                 = 0x28\n\tETHTOOL_LINK_MODE_1000baseX_Full_BIT                                    = 0x29\n\tETHTOOL_LINK_MODE_10000baseCR_Full_BIT                                  = 0x2a\n\tETHTOOL_LINK_MODE_10000baseSR_Full_BIT                                  = 0x2b\n\tETHTOOL_LINK_MODE_10000baseLR_Full_BIT                                  = 0x2c\n\tETHTOOL_LINK_MODE_10000baseLRM_Full_BIT                                 = 0x2d\n\tETHTOOL_LINK_MODE_10000baseER_Full_BIT                                  = 0x2e\n\tETHTOOL_LINK_MODE_2500baseT_Full_BIT                                    = 0x2f\n\tETHTOOL_LINK_MODE_5000baseT_Full_BIT                                    = 0x30\n\tETHTOOL_LINK_MODE_FEC_NONE_BIT                                          = 0x31\n\tETHTOOL_LINK_MODE_FEC_RS_BIT                                            = 0x32\n\tETHTOOL_LINK_MODE_FEC_BASER_BIT                                         = 0x33\n\tETHTOOL_LINK_MODE_50000baseKR_Full_BIT                                  = 0x34\n\tETHTOOL_LINK_MODE_50000baseSR_Full_BIT                                  = 0x35\n\tETHTOOL_LINK_MODE_50000baseCR_Full_BIT                                  = 0x36\n\tETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT                            = 0x37\n\tETHTOOL_LINK_MODE_50000baseDR_Full_BIT                                  = 0x38\n\tETHTOOL_LINK_MODE_100000baseKR2_Full_BIT                                = 0x39\n\tETHTOOL_LINK_MODE_100000baseSR2_Full_BIT                                = 0x3a\n\tETHTOOL_LINK_MODE_100000baseCR2_Full_BIT                                = 0x3b\n\tETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT                        = 0x3c\n\tETHTOOL_LINK_MODE_100000baseDR2_Full_BIT                                = 0x3d\n\tETHTOOL_LINK_MODE_200000baseKR4_Full_BIT                                = 0x3e\n\tETHTOOL_LINK_MODE_200000baseSR4_Full_BIT                                = 0x3f\n\tETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT                        = 0x40\n\tETHTOOL_LINK_MODE_200000baseDR4_Full_BIT                                = 0x41\n\tETHTOOL_LINK_MODE_200000baseCR4_Full_BIT                                = 0x42\n\tETHTOOL_LINK_MODE_100baseT1_Full_BIT                                    = 0x43\n\tETHTOOL_LINK_MODE_1000baseT1_Full_BIT                                   = 0x44\n\tETHTOOL_LINK_MODE_400000baseKR8_Full_BIT                                = 0x45\n\tETHTOOL_LINK_MODE_400000baseSR8_Full_BIT                                = 0x46\n\tETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT                        = 0x47\n\tETHTOOL_LINK_MODE_400000baseDR8_Full_BIT                                = 0x48\n\tETHTOOL_LINK_MODE_400000baseCR8_Full_BIT                                = 0x49\n\tETHTOOL_LINK_MODE_FEC_LLRS_BIT                                          = 0x4a\n\tETHTOOL_LINK_MODE_100000baseKR_Full_BIT                                 = 0x4b\n\tETHTOOL_LINK_MODE_100000baseSR_Full_BIT                                 = 0x4c\n\tETHTOOL_LINK_MODE_100000baseLR_ER_FR_Full_BIT                           = 0x4d\n\tETHTOOL_LINK_MODE_100000baseCR_Full_BIT                                 = 0x4e\n\tETHTOOL_LINK_MODE_100000baseDR_Full_BIT                                 = 0x4f\n\tETHTOOL_LINK_MODE_200000baseKR2_Full_BIT                                = 0x50\n\tETHTOOL_LINK_MODE_200000baseSR2_Full_BIT                                = 0x51\n\tETHTOOL_LINK_MODE_200000baseLR2_ER2_FR2_Full_BIT                        = 0x52\n\tETHTOOL_LINK_MODE_200000baseDR2_Full_BIT                                = 0x53\n\tETHTOOL_LINK_MODE_200000baseCR2_Full_BIT                                = 0x54\n\tETHTOOL_LINK_MODE_400000baseKR4_Full_BIT                                = 0x55\n\tETHTOOL_LINK_MODE_400000baseSR4_Full_BIT                                = 0x56\n\tETHTOOL_LINK_MODE_400000baseLR4_ER4_FR4_Full_BIT                        = 0x57\n\tETHTOOL_LINK_MODE_400000baseDR4_Full_BIT                                = 0x58\n\tETHTOOL_LINK_MODE_400000baseCR4_Full_BIT                                = 0x59\n\tETHTOOL_LINK_MODE_100baseFX_Half_BIT                                    = 0x5a\n\tETHTOOL_LINK_MODE_100baseFX_Full_BIT                                    = 0x5b\n\n\tETHTOOL_MSG_USER_NONE                     = 0x0\n\tETHTOOL_MSG_STRSET_GET                    = 0x1\n\tETHTOOL_MSG_LINKINFO_GET                  = 0x2\n\tETHTOOL_MSG_LINKINFO_SET                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET                 = 0x4\n\tETHTOOL_MSG_LINKMODES_SET                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET                 = 0x6\n\tETHTOOL_MSG_DEBUG_GET                     = 0x7\n\tETHTOOL_MSG_DEBUG_SET                     = 0x8\n\tETHTOOL_MSG_WOL_GET                       = 0x9\n\tETHTOOL_MSG_WOL_SET                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET                  = 0xb\n\tETHTOOL_MSG_FEATURES_SET                  = 0xc\n\tETHTOOL_MSG_PRIVFLAGS_GET                 = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_SET                 = 0xe\n\tETHTOOL_MSG_RINGS_GET                     = 0xf\n\tETHTOOL_MSG_RINGS_SET                     = 0x10\n\tETHTOOL_MSG_CHANNELS_GET                  = 0x11\n\tETHTOOL_MSG_CHANNELS_SET                  = 0x12\n\tETHTOOL_MSG_COALESCE_GET                  = 0x13\n\tETHTOOL_MSG_COALESCE_SET                  = 0x14\n\tETHTOOL_MSG_PAUSE_GET                     = 0x15\n\tETHTOOL_MSG_PAUSE_SET                     = 0x16\n\tETHTOOL_MSG_EEE_GET                       = 0x17\n\tETHTOOL_MSG_EEE_SET                       = 0x18\n\tETHTOOL_MSG_TSINFO_GET                    = 0x19\n\tETHTOOL_MSG_CABLE_TEST_ACT                = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_TDR_ACT            = 0x1b\n\tETHTOOL_MSG_TUNNEL_INFO_GET               = 0x1c\n\tETHTOOL_MSG_FEC_GET                       = 0x1d\n\tETHTOOL_MSG_FEC_SET                       = 0x1e\n\tETHTOOL_MSG_MODULE_EEPROM_GET             = 0x1f\n\tETHTOOL_MSG_STATS_GET                     = 0x20\n\tETHTOOL_MSG_PHC_VCLOCKS_GET               = 0x21\n\tETHTOOL_MSG_MODULE_GET                    = 0x22\n\tETHTOOL_MSG_MODULE_SET                    = 0x23\n\tETHTOOL_MSG_PSE_GET                       = 0x24\n\tETHTOOL_MSG_PSE_SET                       = 0x25\n\tETHTOOL_MSG_RSS_GET                       = 0x26\n\tETHTOOL_MSG_USER_MAX                      = 0x2b\n\tETHTOOL_MSG_KERNEL_NONE                   = 0x0\n\tETHTOOL_MSG_STRSET_GET_REPLY              = 0x1\n\tETHTOOL_MSG_LINKINFO_GET_REPLY            = 0x2\n\tETHTOOL_MSG_LINKINFO_NTF                  = 0x3\n\tETHTOOL_MSG_LINKMODES_GET_REPLY           = 0x4\n\tETHTOOL_MSG_LINKMODES_NTF                 = 0x5\n\tETHTOOL_MSG_LINKSTATE_GET_REPLY           = 0x6\n\tETHTOOL_MSG_DEBUG_GET_REPLY               = 0x7\n\tETHTOOL_MSG_DEBUG_NTF                     = 0x8\n\tETHTOOL_MSG_WOL_GET_REPLY                 = 0x9\n\tETHTOOL_MSG_WOL_NTF                       = 0xa\n\tETHTOOL_MSG_FEATURES_GET_REPLY            = 0xb\n\tETHTOOL_MSG_FEATURES_SET_REPLY            = 0xc\n\tETHTOOL_MSG_FEATURES_NTF                  = 0xd\n\tETHTOOL_MSG_PRIVFLAGS_GET_REPLY           = 0xe\n\tETHTOOL_MSG_PRIVFLAGS_NTF                 = 0xf\n\tETHTOOL_MSG_RINGS_GET_REPLY               = 0x10\n\tETHTOOL_MSG_RINGS_NTF                     = 0x11\n\tETHTOOL_MSG_CHANNELS_GET_REPLY            = 0x12\n\tETHTOOL_MSG_CHANNELS_NTF                  = 0x13\n\tETHTOOL_MSG_COALESCE_GET_REPLY            = 0x14\n\tETHTOOL_MSG_COALESCE_NTF                  = 0x15\n\tETHTOOL_MSG_PAUSE_GET_REPLY               = 0x16\n\tETHTOOL_MSG_PAUSE_NTF                     = 0x17\n\tETHTOOL_MSG_EEE_GET_REPLY                 = 0x18\n\tETHTOOL_MSG_EEE_NTF                       = 0x19\n\tETHTOOL_MSG_TSINFO_GET_REPLY              = 0x1a\n\tETHTOOL_MSG_CABLE_TEST_NTF                = 0x1b\n\tETHTOOL_MSG_CABLE_TEST_TDR_NTF            = 0x1c\n\tETHTOOL_MSG_TUNNEL_INFO_GET_REPLY         = 0x1d\n\tETHTOOL_MSG_FEC_GET_REPLY                 = 0x1e\n\tETHTOOL_MSG_FEC_NTF                       = 0x1f\n\tETHTOOL_MSG_MODULE_EEPROM_GET_REPLY       = 0x20\n\tETHTOOL_MSG_STATS_GET_REPLY               = 0x21\n\tETHTOOL_MSG_PHC_VCLOCKS_GET_REPLY         = 0x22\n\tETHTOOL_MSG_MODULE_GET_REPLY              = 0x23\n\tETHTOOL_MSG_MODULE_NTF                    = 0x24\n\tETHTOOL_MSG_PSE_GET_REPLY                 = 0x25\n\tETHTOOL_MSG_RSS_GET_REPLY                 = 0x26\n\tETHTOOL_MSG_KERNEL_MAX                    = 0x2b\n\tETHTOOL_A_HEADER_UNSPEC                   = 0x0\n\tETHTOOL_A_HEADER_DEV_INDEX                = 0x1\n\tETHTOOL_A_HEADER_DEV_NAME                 = 0x2\n\tETHTOOL_A_HEADER_FLAGS                    = 0x3\n\tETHTOOL_A_HEADER_MAX                      = 0x3\n\tETHTOOL_A_BITSET_BIT_UNSPEC               = 0x0\n\tETHTOOL_A_BITSET_BIT_INDEX                = 0x1\n\tETHTOOL_A_BITSET_BIT_NAME                 = 0x2\n\tETHTOOL_A_BITSET_BIT_VALUE                = 0x3\n\tETHTOOL_A_BITSET_BIT_MAX                  = 0x3\n\tETHTOOL_A_BITSET_BITS_UNSPEC              = 0x0\n\tETHTOOL_A_BITSET_BITS_BIT                 = 0x1\n\tETHTOOL_A_BITSET_BITS_MAX                 = 0x1\n\tETHTOOL_A_BITSET_UNSPEC                   = 0x0\n\tETHTOOL_A_BITSET_NOMASK                   = 0x1\n\tETHTOOL_A_BITSET_SIZE                     = 0x2\n\tETHTOOL_A_BITSET_BITS                     = 0x3\n\tETHTOOL_A_BITSET_VALUE                    = 0x4\n\tETHTOOL_A_BITSET_MASK                     = 0x5\n\tETHTOOL_A_BITSET_MAX                      = 0x5\n\tETHTOOL_A_STRING_UNSPEC                   = 0x0\n\tETHTOOL_A_STRING_INDEX                    = 0x1\n\tETHTOOL_A_STRING_VALUE                    = 0x2\n\tETHTOOL_A_STRING_MAX                      = 0x2\n\tETHTOOL_A_STRINGS_UNSPEC                  = 0x0\n\tETHTOOL_A_STRINGS_STRING                  = 0x1\n\tETHTOOL_A_STRINGS_MAX                     = 0x1\n\tETHTOOL_A_STRINGSET_UNSPEC                = 0x0\n\tETHTOOL_A_STRINGSET_ID                    = 0x1\n\tETHTOOL_A_STRINGSET_COUNT                 = 0x2\n\tETHTOOL_A_STRINGSET_STRINGS               = 0x3\n\tETHTOOL_A_STRINGSET_MAX                   = 0x3\n\tETHTOOL_A_STRINGSETS_UNSPEC               = 0x0\n\tETHTOOL_A_STRINGSETS_STRINGSET            = 0x1\n\tETHTOOL_A_STRINGSETS_MAX                  = 0x1\n\tETHTOOL_A_STRSET_UNSPEC                   = 0x0\n\tETHTOOL_A_STRSET_HEADER                   = 0x1\n\tETHTOOL_A_STRSET_STRINGSETS               = 0x2\n\tETHTOOL_A_STRSET_COUNTS_ONLY              = 0x3\n\tETHTOOL_A_STRSET_MAX                      = 0x3\n\tETHTOOL_A_LINKINFO_UNSPEC                 = 0x0\n\tETHTOOL_A_LINKINFO_HEADER                 = 0x1\n\tETHTOOL_A_LINKINFO_PORT                   = 0x2\n\tETHTOOL_A_LINKINFO_PHYADDR                = 0x3\n\tETHTOOL_A_LINKINFO_TP_MDIX                = 0x4\n\tETHTOOL_A_LINKINFO_TP_MDIX_CTRL           = 0x5\n\tETHTOOL_A_LINKINFO_TRANSCEIVER            = 0x6\n\tETHTOOL_A_LINKINFO_MAX                    = 0x6\n\tETHTOOL_A_LINKMODES_UNSPEC                = 0x0\n\tETHTOOL_A_LINKMODES_HEADER                = 0x1\n\tETHTOOL_A_LINKMODES_AUTONEG               = 0x2\n\tETHTOOL_A_LINKMODES_OURS                  = 0x3\n\tETHTOOL_A_LINKMODES_PEER                  = 0x4\n\tETHTOOL_A_LINKMODES_SPEED                 = 0x5\n\tETHTOOL_A_LINKMODES_DUPLEX                = 0x6\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_CFG      = 0x7\n\tETHTOOL_A_LINKMODES_MASTER_SLAVE_STATE    = 0x8\n\tETHTOOL_A_LINKMODES_LANES                 = 0x9\n\tETHTOOL_A_LINKMODES_RATE_MATCHING         = 0xa\n\tETHTOOL_A_LINKMODES_MAX                   = 0xa\n\tETHTOOL_A_LINKSTATE_UNSPEC                = 0x0\n\tETHTOOL_A_LINKSTATE_HEADER                = 0x1\n\tETHTOOL_A_LINKSTATE_LINK                  = 0x2\n\tETHTOOL_A_LINKSTATE_SQI                   = 0x3\n\tETHTOOL_A_LINKSTATE_SQI_MAX               = 0x4\n\tETHTOOL_A_LINKSTATE_EXT_STATE             = 0x5\n\tETHTOOL_A_LINKSTATE_EXT_SUBSTATE          = 0x6\n\tETHTOOL_A_LINKSTATE_EXT_DOWN_CNT          = 0x7\n\tETHTOOL_A_LINKSTATE_MAX                   = 0x7\n\tETHTOOL_A_DEBUG_UNSPEC                    = 0x0\n\tETHTOOL_A_DEBUG_HEADER                    = 0x1\n\tETHTOOL_A_DEBUG_MSGMASK                   = 0x2\n\tETHTOOL_A_DEBUG_MAX                       = 0x2\n\tETHTOOL_A_WOL_UNSPEC                      = 0x0\n\tETHTOOL_A_WOL_HEADER                      = 0x1\n\tETHTOOL_A_WOL_MODES                       = 0x2\n\tETHTOOL_A_WOL_SOPASS                      = 0x3\n\tETHTOOL_A_WOL_MAX                         = 0x3\n\tETHTOOL_A_FEATURES_UNSPEC                 = 0x0\n\tETHTOOL_A_FEATURES_HEADER                 = 0x1\n\tETHTOOL_A_FEATURES_HW                     = 0x2\n\tETHTOOL_A_FEATURES_WANTED                 = 0x3\n\tETHTOOL_A_FEATURES_ACTIVE                 = 0x4\n\tETHTOOL_A_FEATURES_NOCHANGE               = 0x5\n\tETHTOOL_A_FEATURES_MAX                    = 0x5\n\tETHTOOL_A_PRIVFLAGS_UNSPEC                = 0x0\n\tETHTOOL_A_PRIVFLAGS_HEADER                = 0x1\n\tETHTOOL_A_PRIVFLAGS_FLAGS                 = 0x2\n\tETHTOOL_A_PRIVFLAGS_MAX                   = 0x2\n\tETHTOOL_A_RINGS_UNSPEC                    = 0x0\n\tETHTOOL_A_RINGS_HEADER                    = 0x1\n\tETHTOOL_A_RINGS_RX_MAX                    = 0x2\n\tETHTOOL_A_RINGS_RX_MINI_MAX               = 0x3\n\tETHTOOL_A_RINGS_RX_JUMBO_MAX              = 0x4\n\tETHTOOL_A_RINGS_TX_MAX                    = 0x5\n\tETHTOOL_A_RINGS_RX                        = 0x6\n\tETHTOOL_A_RINGS_RX_MINI                   = 0x7\n\tETHTOOL_A_RINGS_RX_JUMBO                  = 0x8\n\tETHTOOL_A_RINGS_TX                        = 0x9\n\tETHTOOL_A_RINGS_RX_BUF_LEN                = 0xa\n\tETHTOOL_A_RINGS_TCP_DATA_SPLIT            = 0xb\n\tETHTOOL_A_RINGS_CQE_SIZE                  = 0xc\n\tETHTOOL_A_RINGS_TX_PUSH                   = 0xd\n\tETHTOOL_A_RINGS_MAX                       = 0x10\n\tETHTOOL_A_CHANNELS_UNSPEC                 = 0x0\n\tETHTOOL_A_CHANNELS_HEADER                 = 0x1\n\tETHTOOL_A_CHANNELS_RX_MAX                 = 0x2\n\tETHTOOL_A_CHANNELS_TX_MAX                 = 0x3\n\tETHTOOL_A_CHANNELS_OTHER_MAX              = 0x4\n\tETHTOOL_A_CHANNELS_COMBINED_MAX           = 0x5\n\tETHTOOL_A_CHANNELS_RX_COUNT               = 0x6\n\tETHTOOL_A_CHANNELS_TX_COUNT               = 0x7\n\tETHTOOL_A_CHANNELS_OTHER_COUNT            = 0x8\n\tETHTOOL_A_CHANNELS_COMBINED_COUNT         = 0x9\n\tETHTOOL_A_CHANNELS_MAX                    = 0x9\n\tETHTOOL_A_COALESCE_UNSPEC                 = 0x0\n\tETHTOOL_A_COALESCE_HEADER                 = 0x1\n\tETHTOOL_A_COALESCE_RX_USECS               = 0x2\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES          = 0x3\n\tETHTOOL_A_COALESCE_RX_USECS_IRQ           = 0x4\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_IRQ      = 0x5\n\tETHTOOL_A_COALESCE_TX_USECS               = 0x6\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES          = 0x7\n\tETHTOOL_A_COALESCE_TX_USECS_IRQ           = 0x8\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_IRQ      = 0x9\n\tETHTOOL_A_COALESCE_STATS_BLOCK_USECS      = 0xa\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_RX        = 0xb\n\tETHTOOL_A_COALESCE_USE_ADAPTIVE_TX        = 0xc\n\tETHTOOL_A_COALESCE_PKT_RATE_LOW           = 0xd\n\tETHTOOL_A_COALESCE_RX_USECS_LOW           = 0xe\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_LOW      = 0xf\n\tETHTOOL_A_COALESCE_TX_USECS_LOW           = 0x10\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_LOW      = 0x11\n\tETHTOOL_A_COALESCE_PKT_RATE_HIGH          = 0x12\n\tETHTOOL_A_COALESCE_RX_USECS_HIGH          = 0x13\n\tETHTOOL_A_COALESCE_RX_MAX_FRAMES_HIGH     = 0x14\n\tETHTOOL_A_COALESCE_TX_USECS_HIGH          = 0x15\n\tETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH     = 0x16\n\tETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL   = 0x17\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_TX        = 0x18\n\tETHTOOL_A_COALESCE_USE_CQE_MODE_RX        = 0x19\n\tETHTOOL_A_COALESCE_MAX                    = 0x1c\n\tETHTOOL_A_PAUSE_UNSPEC                    = 0x0\n\tETHTOOL_A_PAUSE_HEADER                    = 0x1\n\tETHTOOL_A_PAUSE_AUTONEG                   = 0x2\n\tETHTOOL_A_PAUSE_RX                        = 0x3\n\tETHTOOL_A_PAUSE_TX                        = 0x4\n\tETHTOOL_A_PAUSE_STATS                     = 0x5\n\tETHTOOL_A_PAUSE_MAX                       = 0x6\n\tETHTOOL_A_PAUSE_STAT_UNSPEC               = 0x0\n\tETHTOOL_A_PAUSE_STAT_PAD                  = 0x1\n\tETHTOOL_A_PAUSE_STAT_TX_FRAMES            = 0x2\n\tETHTOOL_A_PAUSE_STAT_RX_FRAMES            = 0x3\n\tETHTOOL_A_PAUSE_STAT_MAX                  = 0x3\n\tETHTOOL_A_EEE_UNSPEC                      = 0x0\n\tETHTOOL_A_EEE_HEADER                      = 0x1\n\tETHTOOL_A_EEE_MODES_OURS                  = 0x2\n\tETHTOOL_A_EEE_MODES_PEER                  = 0x3\n\tETHTOOL_A_EEE_ACTIVE                      = 0x4\n\tETHTOOL_A_EEE_ENABLED                     = 0x5\n\tETHTOOL_A_EEE_TX_LPI_ENABLED              = 0x6\n\tETHTOOL_A_EEE_TX_LPI_TIMER                = 0x7\n\tETHTOOL_A_EEE_MAX                         = 0x7\n\tETHTOOL_A_TSINFO_UNSPEC                   = 0x0\n\tETHTOOL_A_TSINFO_HEADER                   = 0x1\n\tETHTOOL_A_TSINFO_TIMESTAMPING             = 0x2\n\tETHTOOL_A_TSINFO_TX_TYPES                 = 0x3\n\tETHTOOL_A_TSINFO_RX_FILTERS               = 0x4\n\tETHTOOL_A_TSINFO_PHC_INDEX                = 0x5\n\tETHTOOL_A_TSINFO_MAX                      = 0x5\n\tETHTOOL_A_CABLE_TEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_TEST_HEADER               = 0x1\n\tETHTOOL_A_CABLE_TEST_MAX                  = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_UNSPEC        = 0x0\n\tETHTOOL_A_CABLE_RESULT_CODE_OK            = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE_OPEN          = 0x2\n\tETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT    = 0x3\n\tETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT   = 0x4\n\tETHTOOL_A_CABLE_PAIR_A                    = 0x0\n\tETHTOOL_A_CABLE_PAIR_B                    = 0x1\n\tETHTOOL_A_CABLE_PAIR_C                    = 0x2\n\tETHTOOL_A_CABLE_PAIR_D                    = 0x3\n\tETHTOOL_A_CABLE_RESULT_UNSPEC             = 0x0\n\tETHTOOL_A_CABLE_RESULT_PAIR               = 0x1\n\tETHTOOL_A_CABLE_RESULT_CODE               = 0x2\n\tETHTOOL_A_CABLE_RESULT_MAX                = 0x2\n\tETHTOOL_A_CABLE_FAULT_LENGTH_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_FAULT_LENGTH_PAIR         = 0x1\n\tETHTOOL_A_CABLE_FAULT_LENGTH_CM           = 0x2\n\tETHTOOL_A_CABLE_FAULT_LENGTH_MAX          = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_UNSPEC    = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_STARTED   = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS_COMPLETED = 0x2\n\tETHTOOL_A_CABLE_NEST_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_NEST_RESULT               = 0x1\n\tETHTOOL_A_CABLE_NEST_FAULT_LENGTH         = 0x2\n\tETHTOOL_A_CABLE_NEST_MAX                  = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_NTF_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_NTF_STATUS           = 0x2\n\tETHTOOL_A_CABLE_TEST_NTF_NEST             = 0x3\n\tETHTOOL_A_CABLE_TEST_NTF_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_FIRST        = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_LAST         = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_STEP         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_PAIR         = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_CFG_MAX          = 0x4\n\tETHTOOL_A_CABLE_TEST_TDR_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_HEADER           = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_CFG              = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_MAX              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_UNSPEC          = 0x0\n\tETHTOOL_A_CABLE_AMPLITUDE_PAIR            = 0x1\n\tETHTOOL_A_CABLE_AMPLITUDE_mV              = 0x2\n\tETHTOOL_A_CABLE_AMPLITUDE_MAX             = 0x2\n\tETHTOOL_A_CABLE_PULSE_UNSPEC              = 0x0\n\tETHTOOL_A_CABLE_PULSE_mV                  = 0x1\n\tETHTOOL_A_CABLE_PULSE_MAX                 = 0x1\n\tETHTOOL_A_CABLE_STEP_UNSPEC               = 0x0\n\tETHTOOL_A_CABLE_STEP_FIRST_DISTANCE       = 0x1\n\tETHTOOL_A_CABLE_STEP_LAST_DISTANCE        = 0x2\n\tETHTOOL_A_CABLE_STEP_STEP_DISTANCE        = 0x3\n\tETHTOOL_A_CABLE_STEP_MAX                  = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_UNSPEC           = 0x0\n\tETHTOOL_A_CABLE_TDR_NEST_STEP             = 0x1\n\tETHTOOL_A_CABLE_TDR_NEST_AMPLITUDE        = 0x2\n\tETHTOOL_A_CABLE_TDR_NEST_PULSE            = 0x3\n\tETHTOOL_A_CABLE_TDR_NEST_MAX              = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_UNSPEC       = 0x0\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_HEADER       = 0x1\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_STATUS       = 0x2\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_NEST         = 0x3\n\tETHTOOL_A_CABLE_TEST_TDR_NTF_MAX          = 0x3\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN             = 0x0\n\tETHTOOL_UDP_TUNNEL_TYPE_GENEVE            = 0x1\n\tETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE         = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_PORT           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE           = 0x2\n\tETHTOOL_A_TUNNEL_UDP_ENTRY_MAX            = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_UNSPEC         = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE_SIZE           = 0x1\n\tETHTOOL_A_TUNNEL_UDP_TABLE_TYPES          = 0x2\n\tETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY          = 0x3\n\tETHTOOL_A_TUNNEL_UDP_TABLE_MAX            = 0x3\n\tETHTOOL_A_TUNNEL_UDP_UNSPEC               = 0x0\n\tETHTOOL_A_TUNNEL_UDP_TABLE                = 0x1\n\tETHTOOL_A_TUNNEL_UDP_MAX                  = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UNSPEC              = 0x0\n\tETHTOOL_A_TUNNEL_INFO_HEADER              = 0x1\n\tETHTOOL_A_TUNNEL_INFO_UDP_PORTS           = 0x2\n\tETHTOOL_A_TUNNEL_INFO_MAX                 = 0x2\n)\n\nconst SPEED_UNKNOWN = -0x1\n\ntype EthtoolDrvinfo struct {\n\tCmd          uint32\n\tDriver       [32]byte\n\tVersion      [32]byte\n\tFw_version   [32]byte\n\tBus_info     [32]byte\n\tErom_version [32]byte\n\tReserved2    [12]byte\n\tN_priv_flags uint32\n\tN_stats      uint32\n\tTestinfo_len uint32\n\tEedump_len   uint32\n\tRegdump_len  uint32\n}\n\ntype (\n\tHIDRawReportDescriptor struct {\n\t\tSize  uint32\n\t\tValue [4096]uint8\n\t}\n\tHIDRawDevInfo struct {\n\t\tBustype uint32\n\t\tVendor  int16\n\t\tProduct int16\n\t}\n)\n\nconst (\n\tCLOSE_RANGE_UNSHARE = 0x2\n\tCLOSE_RANGE_CLOEXEC = 0x4\n)\n\nconst (\n\tNLMSGERR_ATTR_MSG    = 0x1\n\tNLMSGERR_ATTR_OFFS   = 0x2\n\tNLMSGERR_ATTR_COOKIE = 0x3\n)\n\ntype (\n\tEraseInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t}\n\tEraseInfo64 struct {\n\t\tStart  uint64\n\t\tLength uint64\n\t}\n\tMtdOobBuf struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tPtr    *uint8\n\t}\n\tMtdOobBuf64 struct {\n\t\tStart  uint64\n\t\tPad    uint32\n\t\tLength uint32\n\t\tPtr    uint64\n\t}\n\tMtdWriteReq struct {\n\t\tStart  uint64\n\t\tLen    uint64\n\t\tOoblen uint64\n\t\tData   uint64\n\t\tOob    uint64\n\t\tMode   uint8\n\t\t_      [7]uint8\n\t}\n\tMtdInfo struct {\n\t\tType      uint8\n\t\tFlags     uint32\n\t\tSize      uint32\n\t\tErasesize uint32\n\t\tWritesize uint32\n\t\tOobsize   uint32\n\t\t_         uint64\n\t}\n\tRegionInfo struct {\n\t\tOffset      uint32\n\t\tErasesize   uint32\n\t\tNumblocks   uint32\n\t\tRegionindex uint32\n\t}\n\tOtpInfo struct {\n\t\tStart  uint32\n\t\tLength uint32\n\t\tLocked uint32\n\t}\n\tNandOobinfo struct {\n\t\tUseecc   uint32\n\t\tEccbytes uint32\n\t\tOobfree  [8][2]uint32\n\t\tEccpos   [32]uint32\n\t}\n\tNandOobfree struct {\n\t\tOffset uint32\n\t\tLength uint32\n\t}\n\tNandEcclayout struct {\n\t\tEccbytes uint32\n\t\tEccpos   [64]uint32\n\t\tOobavail uint32\n\t\tOobfree  [8]NandOobfree\n\t}\n\tMtdEccStats struct {\n\t\tCorrected uint32\n\t\tFailed    uint32\n\t\tBadblocks uint32\n\t\tBbtblocks uint32\n\t}\n)\n\nconst (\n\tMTD_OPS_PLACE_OOB = 0x0\n\tMTD_OPS_AUTO_OOB  = 0x1\n\tMTD_OPS_RAW       = 0x2\n)\n\nconst (\n\tMTD_FILE_MODE_NORMAL      = 0x0\n\tMTD_FILE_MODE_OTP_FACTORY = 0x1\n\tMTD_FILE_MODE_OTP_USER    = 0x2\n\tMTD_FILE_MODE_RAW         = 0x3\n)\n\nconst (\n\tNFC_CMD_UNSPEC                    = 0x0\n\tNFC_CMD_GET_DEVICE                = 0x1\n\tNFC_CMD_DEV_UP                    = 0x2\n\tNFC_CMD_DEV_DOWN                  = 0x3\n\tNFC_CMD_DEP_LINK_UP               = 0x4\n\tNFC_CMD_DEP_LINK_DOWN             = 0x5\n\tNFC_CMD_START_POLL                = 0x6\n\tNFC_CMD_STOP_POLL                 = 0x7\n\tNFC_CMD_GET_TARGET                = 0x8\n\tNFC_EVENT_TARGETS_FOUND           = 0x9\n\tNFC_EVENT_DEVICE_ADDED            = 0xa\n\tNFC_EVENT_DEVICE_REMOVED          = 0xb\n\tNFC_EVENT_TARGET_LOST             = 0xc\n\tNFC_EVENT_TM_ACTIVATED            = 0xd\n\tNFC_EVENT_TM_DEACTIVATED          = 0xe\n\tNFC_CMD_LLC_GET_PARAMS            = 0xf\n\tNFC_CMD_LLC_SET_PARAMS            = 0x10\n\tNFC_CMD_ENABLE_SE                 = 0x11\n\tNFC_CMD_DISABLE_SE                = 0x12\n\tNFC_CMD_LLC_SDREQ                 = 0x13\n\tNFC_EVENT_LLC_SDRES               = 0x14\n\tNFC_CMD_FW_DOWNLOAD               = 0x15\n\tNFC_EVENT_SE_ADDED                = 0x16\n\tNFC_EVENT_SE_REMOVED              = 0x17\n\tNFC_EVENT_SE_CONNECTIVITY         = 0x18\n\tNFC_EVENT_SE_TRANSACTION          = 0x19\n\tNFC_CMD_GET_SE                    = 0x1a\n\tNFC_CMD_SE_IO                     = 0x1b\n\tNFC_CMD_ACTIVATE_TARGET           = 0x1c\n\tNFC_CMD_VENDOR                    = 0x1d\n\tNFC_CMD_DEACTIVATE_TARGET         = 0x1e\n\tNFC_ATTR_UNSPEC                   = 0x0\n\tNFC_ATTR_DEVICE_INDEX             = 0x1\n\tNFC_ATTR_DEVICE_NAME              = 0x2\n\tNFC_ATTR_PROTOCOLS                = 0x3\n\tNFC_ATTR_TARGET_INDEX             = 0x4\n\tNFC_ATTR_TARGET_SENS_RES          = 0x5\n\tNFC_ATTR_TARGET_SEL_RES           = 0x6\n\tNFC_ATTR_TARGET_NFCID1            = 0x7\n\tNFC_ATTR_TARGET_SENSB_RES         = 0x8\n\tNFC_ATTR_TARGET_SENSF_RES         = 0x9\n\tNFC_ATTR_COMM_MODE                = 0xa\n\tNFC_ATTR_RF_MODE                  = 0xb\n\tNFC_ATTR_DEVICE_POWERED           = 0xc\n\tNFC_ATTR_IM_PROTOCOLS             = 0xd\n\tNFC_ATTR_TM_PROTOCOLS             = 0xe\n\tNFC_ATTR_LLC_PARAM_LTO            = 0xf\n\tNFC_ATTR_LLC_PARAM_RW             = 0x10\n\tNFC_ATTR_LLC_PARAM_MIUX           = 0x11\n\tNFC_ATTR_SE                       = 0x12\n\tNFC_ATTR_LLC_SDP                  = 0x13\n\tNFC_ATTR_FIRMWARE_NAME            = 0x14\n\tNFC_ATTR_SE_INDEX                 = 0x15\n\tNFC_ATTR_SE_TYPE                  = 0x16\n\tNFC_ATTR_SE_AID                   = 0x17\n\tNFC_ATTR_FIRMWARE_DOWNLOAD_STATUS = 0x18\n\tNFC_ATTR_SE_APDU                  = 0x19\n\tNFC_ATTR_TARGET_ISO15693_DSFID    = 0x1a\n\tNFC_ATTR_TARGET_ISO15693_UID      = 0x1b\n\tNFC_ATTR_SE_PARAMS                = 0x1c\n\tNFC_ATTR_VENDOR_ID                = 0x1d\n\tNFC_ATTR_VENDOR_SUBCMD            = 0x1e\n\tNFC_ATTR_VENDOR_DATA              = 0x1f\n\tNFC_SDP_ATTR_UNSPEC               = 0x0\n\tNFC_SDP_ATTR_URI                  = 0x1\n\tNFC_SDP_ATTR_SAP                  = 0x2\n)\n\ntype LandlockRulesetAttr struct {\n\tAccess_fs  uint64\n\tAccess_net uint64\n}\n\ntype LandlockPathBeneathAttr struct {\n\tAllowed_access uint64\n\tParent_fd      int32\n}\n\nconst (\n\tLANDLOCK_RULE_PATH_BENEATH = 0x1\n)\n\nconst (\n\tIPC_CREAT   = 0x200\n\tIPC_EXCL    = 0x400\n\tIPC_NOWAIT  = 0x800\n\tIPC_PRIVATE = 0x0\n\n\tipc_64 = 0x100\n)\n\nconst (\n\tIPC_RMID = 0x0\n\tIPC_SET  = 0x1\n\tIPC_STAT = 0x2\n)\n\nconst (\n\tSHM_RDONLY = 0x1000\n\tSHM_RND    = 0x2000\n)\n\ntype MountAttr struct {\n\tAttr_set    uint64\n\tAttr_clr    uint64\n\tPropagation uint64\n\tUserns_fd   uint64\n}\n\nconst (\n\tWG_CMD_GET_DEVICE                      = 0x0\n\tWG_CMD_SET_DEVICE                      = 0x1\n\tWGDEVICE_F_REPLACE_PEERS               = 0x1\n\tWGDEVICE_A_UNSPEC                      = 0x0\n\tWGDEVICE_A_IFINDEX                     = 0x1\n\tWGDEVICE_A_IFNAME                      = 0x2\n\tWGDEVICE_A_PRIVATE_KEY                 = 0x3\n\tWGDEVICE_A_PUBLIC_KEY                  = 0x4\n\tWGDEVICE_A_FLAGS                       = 0x5\n\tWGDEVICE_A_LISTEN_PORT                 = 0x6\n\tWGDEVICE_A_FWMARK                      = 0x7\n\tWGDEVICE_A_PEERS                       = 0x8\n\tWGPEER_F_REMOVE_ME                     = 0x1\n\tWGPEER_F_REPLACE_ALLOWEDIPS            = 0x2\n\tWGPEER_F_UPDATE_ONLY                   = 0x4\n\tWGPEER_A_UNSPEC                        = 0x0\n\tWGPEER_A_PUBLIC_KEY                    = 0x1\n\tWGPEER_A_PRESHARED_KEY                 = 0x2\n\tWGPEER_A_FLAGS                         = 0x3\n\tWGPEER_A_ENDPOINT                      = 0x4\n\tWGPEER_A_PERSISTENT_KEEPALIVE_INTERVAL = 0x5\n\tWGPEER_A_LAST_HANDSHAKE_TIME           = 0x6\n\tWGPEER_A_RX_BYTES                      = 0x7\n\tWGPEER_A_TX_BYTES                      = 0x8\n\tWGPEER_A_ALLOWEDIPS                    = 0x9\n\tWGPEER_A_PROTOCOL_VERSION              = 0xa\n\tWGALLOWEDIP_A_UNSPEC                   = 0x0\n\tWGALLOWEDIP_A_FAMILY                   = 0x1\n\tWGALLOWEDIP_A_IPADDR                   = 0x2\n\tWGALLOWEDIP_A_CIDR_MASK                = 0x3\n)\n\nconst (\n\tNL_ATTR_TYPE_INVALID      = 0x0\n\tNL_ATTR_TYPE_FLAG         = 0x1\n\tNL_ATTR_TYPE_U8           = 0x2\n\tNL_ATTR_TYPE_U16          = 0x3\n\tNL_ATTR_TYPE_U32          = 0x4\n\tNL_ATTR_TYPE_U64          = 0x5\n\tNL_ATTR_TYPE_S8           = 0x6\n\tNL_ATTR_TYPE_S16          = 0x7\n\tNL_ATTR_TYPE_S32          = 0x8\n\tNL_ATTR_TYPE_S64          = 0x9\n\tNL_ATTR_TYPE_BINARY       = 0xa\n\tNL_ATTR_TYPE_STRING       = 0xb\n\tNL_ATTR_TYPE_NUL_STRING   = 0xc\n\tNL_ATTR_TYPE_NESTED       = 0xd\n\tNL_ATTR_TYPE_NESTED_ARRAY = 0xe\n\tNL_ATTR_TYPE_BITFIELD32   = 0xf\n\n\tNL_POLICY_TYPE_ATTR_UNSPEC          = 0x0\n\tNL_POLICY_TYPE_ATTR_TYPE            = 0x1\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_S     = 0x2\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_S     = 0x3\n\tNL_POLICY_TYPE_ATTR_MIN_VALUE_U     = 0x4\n\tNL_POLICY_TYPE_ATTR_MAX_VALUE_U     = 0x5\n\tNL_POLICY_TYPE_ATTR_MIN_LENGTH      = 0x6\n\tNL_POLICY_TYPE_ATTR_MAX_LENGTH      = 0x7\n\tNL_POLICY_TYPE_ATTR_POLICY_IDX      = 0x8\n\tNL_POLICY_TYPE_ATTR_POLICY_MAXTYPE  = 0x9\n\tNL_POLICY_TYPE_ATTR_BITFIELD32_MASK = 0xa\n\tNL_POLICY_TYPE_ATTR_PAD             = 0xb\n\tNL_POLICY_TYPE_ATTR_MASK            = 0xc\n\tNL_POLICY_TYPE_ATTR_MAX             = 0xc\n)\n\ntype CANBitTiming struct {\n\tBitrate      uint32\n\tSample_point uint32\n\tTq           uint32\n\tProp_seg     uint32\n\tPhase_seg1   uint32\n\tPhase_seg2   uint32\n\tSjw          uint32\n\tBrp          uint32\n}\n\ntype CANBitTimingConst struct {\n\tName      [16]uint8\n\tTseg1_min uint32\n\tTseg1_max uint32\n\tTseg2_min uint32\n\tTseg2_max uint32\n\tSjw_max   uint32\n\tBrp_min   uint32\n\tBrp_max   uint32\n\tBrp_inc   uint32\n}\n\ntype CANClock struct {\n\tFreq uint32\n}\n\ntype CANBusErrorCounters struct {\n\tTxerr uint16\n\tRxerr uint16\n}\n\ntype CANCtrlMode struct {\n\tMask  uint32\n\tFlags uint32\n}\n\ntype CANDeviceStats struct {\n\tBus_error        uint32\n\tError_warning    uint32\n\tError_passive    uint32\n\tBus_off          uint32\n\tArbitration_lost uint32\n\tRestarts         uint32\n}\n\nconst (\n\tCAN_STATE_ERROR_ACTIVE  = 0x0\n\tCAN_STATE_ERROR_WARNING = 0x1\n\tCAN_STATE_ERROR_PASSIVE = 0x2\n\tCAN_STATE_BUS_OFF       = 0x3\n\tCAN_STATE_STOPPED       = 0x4\n\tCAN_STATE_SLEEPING      = 0x5\n\tCAN_STATE_MAX           = 0x6\n)\n\nconst (\n\tIFLA_CAN_UNSPEC               = 0x0\n\tIFLA_CAN_BITTIMING            = 0x1\n\tIFLA_CAN_BITTIMING_CONST      = 0x2\n\tIFLA_CAN_CLOCK                = 0x3\n\tIFLA_CAN_STATE                = 0x4\n\tIFLA_CAN_CTRLMODE             = 0x5\n\tIFLA_CAN_RESTART_MS           = 0x6\n\tIFLA_CAN_RESTART              = 0x7\n\tIFLA_CAN_BERR_COUNTER         = 0x8\n\tIFLA_CAN_DATA_BITTIMING       = 0x9\n\tIFLA_CAN_DATA_BITTIMING_CONST = 0xa\n\tIFLA_CAN_TERMINATION          = 0xb\n\tIFLA_CAN_TERMINATION_CONST    = 0xc\n\tIFLA_CAN_BITRATE_CONST        = 0xd\n\tIFLA_CAN_DATA_BITRATE_CONST   = 0xe\n\tIFLA_CAN_BITRATE_MAX          = 0xf\n)\n\ntype KCMAttach struct {\n\tFd     int32\n\tBpf_fd int32\n}\n\ntype KCMUnattach struct {\n\tFd int32\n}\n\ntype KCMClone struct {\n\tFd int32\n}\n\nconst (\n\tNL80211_AC_BE                                           = 0x2\n\tNL80211_AC_BK                                           = 0x3\n\tNL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED                 = 0x0\n\tNL80211_ACL_POLICY_DENY_UNLESS_LISTED                   = 0x1\n\tNL80211_AC_VI                                           = 0x1\n\tNL80211_AC_VO                                           = 0x0\n\tNL80211_AP_SETTINGS_EXTERNAL_AUTH_SUPPORT               = 0x1\n\tNL80211_AP_SETTINGS_SA_QUERY_OFFLOAD_SUPPORT            = 0x2\n\tNL80211_AP_SME_SA_QUERY_OFFLOAD                         = 0x1\n\tNL80211_ATTR_4ADDR                                      = 0x53\n\tNL80211_ATTR_ACK                                        = 0x5c\n\tNL80211_ATTR_ACK_SIGNAL                                 = 0x107\n\tNL80211_ATTR_ACL_POLICY                                 = 0xa5\n\tNL80211_ATTR_ADMITTED_TIME                              = 0xd4\n\tNL80211_ATTR_AIRTIME_WEIGHT                             = 0x112\n\tNL80211_ATTR_AKM_SUITES                                 = 0x4c\n\tNL80211_ATTR_AP_ISOLATE                                 = 0x60\n\tNL80211_ATTR_AP_SETTINGS_FLAGS                          = 0x135\n\tNL80211_ATTR_AUTH_DATA                                  = 0x9c\n\tNL80211_ATTR_AUTH_TYPE                                  = 0x35\n\tNL80211_ATTR_BANDS                                      = 0xef\n\tNL80211_ATTR_BEACON_HEAD                                = 0xe\n\tNL80211_ATTR_BEACON_INTERVAL                            = 0xc\n\tNL80211_ATTR_BEACON_TAIL                                = 0xf\n\tNL80211_ATTR_BG_SCAN_PERIOD                             = 0x98\n\tNL80211_ATTR_BSS_BASIC_RATES                            = 0x24\n\tNL80211_ATTR_BSS                                        = 0x2f\n\tNL80211_ATTR_BSS_CTS_PROT                               = 0x1c\n\tNL80211_ATTR_BSS_HT_OPMODE                              = 0x6d\n\tNL80211_ATTR_BSSID                                      = 0xf5\n\tNL80211_ATTR_BSS_SELECT                                 = 0xe3\n\tNL80211_ATTR_BSS_SHORT_PREAMBLE                         = 0x1d\n\tNL80211_ATTR_BSS_SHORT_SLOT_TIME                        = 0x1e\n\tNL80211_ATTR_CENTER_FREQ1                               = 0xa0\n\tNL80211_ATTR_CENTER_FREQ1_OFFSET                        = 0x123\n\tNL80211_ATTR_CENTER_FREQ2                               = 0xa1\n\tNL80211_ATTR_CHANNEL_WIDTH                              = 0x9f\n\tNL80211_ATTR_CH_SWITCH_BLOCK_TX                         = 0xb8\n\tNL80211_ATTR_CH_SWITCH_COUNT                            = 0xb7\n\tNL80211_ATTR_CIPHER_SUITE_GROUP                         = 0x4a\n\tNL80211_ATTR_CIPHER_SUITES                              = 0x39\n\tNL80211_ATTR_CIPHER_SUITES_PAIRWISE                     = 0x49\n\tNL80211_ATTR_CNTDWN_OFFS_BEACON                         = 0xba\n\tNL80211_ATTR_CNTDWN_OFFS_PRESP                          = 0xbb\n\tNL80211_ATTR_COALESCE_RULE                              = 0xb6\n\tNL80211_ATTR_COALESCE_RULE_CONDITION                    = 0x2\n\tNL80211_ATTR_COALESCE_RULE_DELAY                        = 0x1\n\tNL80211_ATTR_COALESCE_RULE_MAX                          = 0x3\n\tNL80211_ATTR_COALESCE_RULE_PKT_PATTERN                  = 0x3\n\tNL80211_ATTR_COLOR_CHANGE_COLOR                         = 0x130\n\tNL80211_ATTR_COLOR_CHANGE_COUNT                         = 0x12f\n\tNL80211_ATTR_COLOR_CHANGE_ELEMS                         = 0x131\n\tNL80211_ATTR_CONN_FAILED_REASON                         = 0x9b\n\tNL80211_ATTR_CONTROL_PORT                               = 0x44\n\tNL80211_ATTR_CONTROL_PORT_ETHERTYPE                     = 0x66\n\tNL80211_ATTR_CONTROL_PORT_NO_ENCRYPT                    = 0x67\n\tNL80211_ATTR_CONTROL_PORT_NO_PREAUTH                    = 0x11e\n\tNL80211_ATTR_CONTROL_PORT_OVER_NL80211                  = 0x108\n\tNL80211_ATTR_COOKIE                                     = 0x58\n\tNL80211_ATTR_CQM_BEACON_LOSS_EVENT                      = 0x8\n\tNL80211_ATTR_CQM                                        = 0x5e\n\tNL80211_ATTR_CQM_MAX                                    = 0x9\n\tNL80211_ATTR_CQM_PKT_LOSS_EVENT                         = 0x4\n\tNL80211_ATTR_CQM_RSSI_HYST                              = 0x2\n\tNL80211_ATTR_CQM_RSSI_LEVEL                             = 0x9\n\tNL80211_ATTR_CQM_RSSI_THOLD                             = 0x1\n\tNL80211_ATTR_CQM_RSSI_THRESHOLD_EVENT                   = 0x3\n\tNL80211_ATTR_CQM_TXE_INTVL                              = 0x7\n\tNL80211_ATTR_CQM_TXE_PKTS                               = 0x6\n\tNL80211_ATTR_CQM_TXE_RATE                               = 0x5\n\tNL80211_ATTR_CRIT_PROT_ID                               = 0xb3\n\tNL80211_ATTR_CSA_C_OFF_BEACON                           = 0xba\n\tNL80211_ATTR_CSA_C_OFF_PRESP                            = 0xbb\n\tNL80211_ATTR_CSA_C_OFFSETS_TX                           = 0xcd\n\tNL80211_ATTR_CSA_IES                                    = 0xb9\n\tNL80211_ATTR_DEVICE_AP_SME                              = 0x8d\n\tNL80211_ATTR_DFS_CAC_TIME                               = 0x7\n\tNL80211_ATTR_DFS_REGION                                 = 0x92\n\tNL80211_ATTR_DISABLE_EHT                                = 0x137\n\tNL80211_ATTR_DISABLE_HE                                 = 0x12d\n\tNL80211_ATTR_DISABLE_HT                                 = 0x93\n\tNL80211_ATTR_DISABLE_VHT                                = 0xaf\n\tNL80211_ATTR_DISCONNECTED_BY_AP                         = 0x47\n\tNL80211_ATTR_DONT_WAIT_FOR_ACK                          = 0x8e\n\tNL80211_ATTR_DTIM_PERIOD                                = 0xd\n\tNL80211_ATTR_DURATION                                   = 0x57\n\tNL80211_ATTR_EHT_CAPABILITY                             = 0x136\n\tNL80211_ATTR_EML_CAPABILITY                             = 0x13d\n\tNL80211_ATTR_EXT_CAPA                                   = 0xa9\n\tNL80211_ATTR_EXT_CAPA_MASK                              = 0xaa\n\tNL80211_ATTR_EXTERNAL_AUTH_ACTION                       = 0x104\n\tNL80211_ATTR_EXTERNAL_AUTH_SUPPORT                      = 0x105\n\tNL80211_ATTR_EXT_FEATURES                               = 0xd9\n\tNL80211_ATTR_FEATURE_FLAGS                              = 0x8f\n\tNL80211_ATTR_FILS_CACHE_ID                              = 0xfd\n\tNL80211_ATTR_FILS_DISCOVERY                             = 0x126\n\tNL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM                      = 0xfb\n\tNL80211_ATTR_FILS_ERP_REALM                             = 0xfa\n\tNL80211_ATTR_FILS_ERP_RRK                               = 0xfc\n\tNL80211_ATTR_FILS_ERP_USERNAME                          = 0xf9\n\tNL80211_ATTR_FILS_KEK                                   = 0xf2\n\tNL80211_ATTR_FILS_NONCES                                = 0xf3\n\tNL80211_ATTR_FRAME                                      = 0x33\n\tNL80211_ATTR_FRAME_MATCH                                = 0x5b\n\tNL80211_ATTR_FRAME_TYPE                                 = 0x65\n\tNL80211_ATTR_FREQ_AFTER                                 = 0x3b\n\tNL80211_ATTR_FREQ_BEFORE                                = 0x3a\n\tNL80211_ATTR_FREQ_FIXED                                 = 0x3c\n\tNL80211_ATTR_FREQ_RANGE_END                             = 0x3\n\tNL80211_ATTR_FREQ_RANGE_MAX_BW                          = 0x4\n\tNL80211_ATTR_FREQ_RANGE_START                           = 0x2\n\tNL80211_ATTR_FTM_RESPONDER                              = 0x10e\n\tNL80211_ATTR_FTM_RESPONDER_STATS                        = 0x10f\n\tNL80211_ATTR_GENERATION                                 = 0x2e\n\tNL80211_ATTR_HANDLE_DFS                                 = 0xbf\n\tNL80211_ATTR_HE_6GHZ_CAPABILITY                         = 0x125\n\tNL80211_ATTR_HE_BSS_COLOR                               = 0x11b\n\tNL80211_ATTR_HE_CAPABILITY                              = 0x10d\n\tNL80211_ATTR_HE_OBSS_PD                                 = 0x117\n\tNL80211_ATTR_HIDDEN_SSID                                = 0x7e\n\tNL80211_ATTR_HT_CAPABILITY                              = 0x1f\n\tNL80211_ATTR_HT_CAPABILITY_MASK                         = 0x94\n\tNL80211_ATTR_IE_ASSOC_RESP                              = 0x80\n\tNL80211_ATTR_IE                                         = 0x2a\n\tNL80211_ATTR_IE_PROBE_RESP                              = 0x7f\n\tNL80211_ATTR_IE_RIC                                     = 0xb2\n\tNL80211_ATTR_IFACE_SOCKET_OWNER                         = 0xcc\n\tNL80211_ATTR_IFINDEX                                    = 0x3\n\tNL80211_ATTR_IFNAME                                     = 0x4\n\tNL80211_ATTR_IFTYPE_AKM_SUITES                          = 0x11c\n\tNL80211_ATTR_IFTYPE                                     = 0x5\n\tNL80211_ATTR_IFTYPE_EXT_CAPA                            = 0xe6\n\tNL80211_ATTR_INACTIVITY_TIMEOUT                         = 0x96\n\tNL80211_ATTR_INTERFACE_COMBINATIONS                     = 0x78\n\tNL80211_ATTR_KEY_CIPHER                                 = 0x9\n\tNL80211_ATTR_KEY                                        = 0x50\n\tNL80211_ATTR_KEY_DATA                                   = 0x7\n\tNL80211_ATTR_KEY_DEFAULT                                = 0xb\n\tNL80211_ATTR_KEY_DEFAULT_MGMT                           = 0x28\n\tNL80211_ATTR_KEY_DEFAULT_TYPES                          = 0x6e\n\tNL80211_ATTR_KEY_IDX                                    = 0x8\n\tNL80211_ATTR_KEYS                                       = 0x51\n\tNL80211_ATTR_KEY_SEQ                                    = 0xa\n\tNL80211_ATTR_KEY_TYPE                                   = 0x37\n\tNL80211_ATTR_LOCAL_MESH_POWER_MODE                      = 0xa4\n\tNL80211_ATTR_LOCAL_STATE_CHANGE                         = 0x5f\n\tNL80211_ATTR_MAC_ACL_MAX                                = 0xa7\n\tNL80211_ATTR_MAC_ADDRS                                  = 0xa6\n\tNL80211_ATTR_MAC                                        = 0x6\n\tNL80211_ATTR_MAC_HINT                                   = 0xc8\n\tNL80211_ATTR_MAC_MASK                                   = 0xd7\n\tNL80211_ATTR_MAX_AP_ASSOC_STA                           = 0xca\n\tNL80211_ATTR_MAX                                        = 0x146\n\tNL80211_ATTR_MAX_CRIT_PROT_DURATION                     = 0xb4\n\tNL80211_ATTR_MAX_CSA_COUNTERS                           = 0xce\n\tNL80211_ATTR_MAX_MATCH_SETS                             = 0x85\n\tNL80211_ATTR_MAX_NUM_AKM_SUITES                         = 0x13c\n\tNL80211_ATTR_MAX_NUM_PMKIDS                             = 0x56\n\tNL80211_ATTR_MAX_NUM_SCAN_SSIDS                         = 0x2b\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_PLANS                   = 0xde\n\tNL80211_ATTR_MAX_NUM_SCHED_SCAN_SSIDS                   = 0x7b\n\tNL80211_ATTR_MAX_REMAIN_ON_CHANNEL_DURATION             = 0x6f\n\tNL80211_ATTR_MAX_SCAN_IE_LEN                            = 0x38\n\tNL80211_ATTR_MAX_SCAN_PLAN_INTERVAL                     = 0xdf\n\tNL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS                   = 0xe0\n\tNL80211_ATTR_MAX_SCHED_SCAN_IE_LEN                      = 0x7c\n\tNL80211_ATTR_MBSSID_CONFIG                              = 0x132\n\tNL80211_ATTR_MBSSID_ELEMS                               = 0x133\n\tNL80211_ATTR_MCAST_RATE                                 = 0x6b\n\tNL80211_ATTR_MDID                                       = 0xb1\n\tNL80211_ATTR_MEASUREMENT_DURATION                       = 0xeb\n\tNL80211_ATTR_MEASUREMENT_DURATION_MANDATORY             = 0xec\n\tNL80211_ATTR_MESH_CONFIG                                = 0x23\n\tNL80211_ATTR_MESH_ID                                    = 0x18\n\tNL80211_ATTR_MESH_PEER_AID                              = 0xed\n\tNL80211_ATTR_MESH_SETUP                                 = 0x70\n\tNL80211_ATTR_MGMT_SUBTYPE                               = 0x29\n\tNL80211_ATTR_MLD_ADDR                                   = 0x13a\n\tNL80211_ATTR_MLD_CAPA_AND_OPS                           = 0x13e\n\tNL80211_ATTR_MLO_LINK_ID                                = 0x139\n\tNL80211_ATTR_MLO_LINKS                                  = 0x138\n\tNL80211_ATTR_MLO_SUPPORT                                = 0x13b\n\tNL80211_ATTR_MNTR_FLAGS                                 = 0x17\n\tNL80211_ATTR_MPATH_INFO                                 = 0x1b\n\tNL80211_ATTR_MPATH_NEXT_HOP                             = 0x1a\n\tNL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED               = 0xf4\n\tNL80211_ATTR_MU_MIMO_FOLLOW_MAC_ADDR                    = 0xe8\n\tNL80211_ATTR_MU_MIMO_GROUP_DATA                         = 0xe7\n\tNL80211_ATTR_NAN_FUNC                                   = 0xf0\n\tNL80211_ATTR_NAN_MASTER_PREF                            = 0xee\n\tNL80211_ATTR_NAN_MATCH                                  = 0xf1\n\tNL80211_ATTR_NETNS_FD                                   = 0xdb\n\tNL80211_ATTR_NOACK_MAP                                  = 0x95\n\tNL80211_ATTR_NSS                                        = 0x106\n\tNL80211_ATTR_OBSS_COLOR_BITMAP                          = 0x12e\n\tNL80211_ATTR_OFFCHANNEL_TX_OK                           = 0x6c\n\tNL80211_ATTR_OPER_CLASS                                 = 0xd6\n\tNL80211_ATTR_OPMODE_NOTIF                               = 0xc2\n\tNL80211_ATTR_P2P_CTWINDOW                               = 0xa2\n\tNL80211_ATTR_P2P_OPPPS                                  = 0xa3\n\tNL80211_ATTR_PAD                                        = 0xe5\n\tNL80211_ATTR_PBSS                                       = 0xe2\n\tNL80211_ATTR_PEER_AID                                   = 0xb5\n\tNL80211_ATTR_PEER_MEASUREMENTS                          = 0x111\n\tNL80211_ATTR_PID                                        = 0x52\n\tNL80211_ATTR_PMK                                        = 0xfe\n\tNL80211_ATTR_PMKID                                      = 0x55\n\tNL80211_ATTR_PMK_LIFETIME                               = 0x11f\n\tNL80211_ATTR_PMKR0_NAME                                 = 0x102\n\tNL80211_ATTR_PMK_REAUTH_THRESHOLD                       = 0x120\n\tNL80211_ATTR_PMKSA_CANDIDATE                            = 0x86\n\tNL80211_ATTR_PORT_AUTHORIZED                            = 0x103\n\tNL80211_ATTR_POWER_RULE_MAX_ANT_GAIN                    = 0x5\n\tNL80211_ATTR_POWER_RULE_MAX_EIRP                        = 0x6\n\tNL80211_ATTR_PREV_BSSID                                 = 0x4f\n\tNL80211_ATTR_PRIVACY                                    = 0x46\n\tNL80211_ATTR_PROBE_RESP                                 = 0x91\n\tNL80211_ATTR_PROBE_RESP_OFFLOAD                         = 0x90\n\tNL80211_ATTR_PROTOCOL_FEATURES                          = 0xad\n\tNL80211_ATTR_PS_STATE                                   = 0x5d\n\tNL80211_ATTR_QOS_MAP                                    = 0xc7\n\tNL80211_ATTR_RADAR_BACKGROUND                           = 0x134\n\tNL80211_ATTR_RADAR_EVENT                                = 0xa8\n\tNL80211_ATTR_REASON_CODE                                = 0x36\n\tNL80211_ATTR_RECEIVE_MULTICAST                          = 0x121\n\tNL80211_ATTR_RECONNECT_REQUESTED                        = 0x12b\n\tNL80211_ATTR_REG_ALPHA2                                 = 0x21\n\tNL80211_ATTR_REG_INDOOR                                 = 0xdd\n\tNL80211_ATTR_REG_INITIATOR                              = 0x30\n\tNL80211_ATTR_REG_RULE_FLAGS                             = 0x1\n\tNL80211_ATTR_REG_RULES                                  = 0x22\n\tNL80211_ATTR_REG_TYPE                                   = 0x31\n\tNL80211_ATTR_REKEY_DATA                                 = 0x7a\n\tNL80211_ATTR_REQ_IE                                     = 0x4d\n\tNL80211_ATTR_RESP_IE                                    = 0x4e\n\tNL80211_ATTR_ROAM_SUPPORT                               = 0x83\n\tNL80211_ATTR_RX_FRAME_TYPES                             = 0x64\n\tNL80211_ATTR_RX_HW_TIMESTAMP                            = 0x140\n\tNL80211_ATTR_RXMGMT_FLAGS                               = 0xbc\n\tNL80211_ATTR_RX_SIGNAL_DBM                              = 0x97\n\tNL80211_ATTR_S1G_CAPABILITY                             = 0x128\n\tNL80211_ATTR_S1G_CAPABILITY_MASK                        = 0x129\n\tNL80211_ATTR_SAE_DATA                                   = 0x9c\n\tNL80211_ATTR_SAE_PASSWORD                               = 0x115\n\tNL80211_ATTR_SAE_PWE                                    = 0x12a\n\tNL80211_ATTR_SAR_SPEC                                   = 0x12c\n\tNL80211_ATTR_SCAN_FLAGS                                 = 0x9e\n\tNL80211_ATTR_SCAN_FREQ_KHZ                              = 0x124\n\tNL80211_ATTR_SCAN_FREQUENCIES                           = 0x2c\n\tNL80211_ATTR_SCAN_GENERATION                            = 0x2e\n\tNL80211_ATTR_SCAN_SSIDS                                 = 0x2d\n\tNL80211_ATTR_SCAN_START_TIME_TSF_BSSID                  = 0xea\n\tNL80211_ATTR_SCAN_START_TIME_TSF                        = 0xe9\n\tNL80211_ATTR_SCAN_SUPP_RATES                            = 0x7d\n\tNL80211_ATTR_SCHED_SCAN_DELAY                           = 0xdc\n\tNL80211_ATTR_SCHED_SCAN_INTERVAL                        = 0x77\n\tNL80211_ATTR_SCHED_SCAN_MATCH                           = 0x84\n\tNL80211_ATTR_SCHED_SCAN_MATCH_SSID                      = 0x1\n\tNL80211_ATTR_SCHED_SCAN_MAX_REQS                        = 0x100\n\tNL80211_ATTR_SCHED_SCAN_MULTI                           = 0xff\n\tNL80211_ATTR_SCHED_SCAN_PLANS                           = 0xe1\n\tNL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI                   = 0xf6\n\tNL80211_ATTR_SCHED_SCAN_RSSI_ADJUST                     = 0xf7\n\tNL80211_ATTR_SMPS_MODE                                  = 0xd5\n\tNL80211_ATTR_SOCKET_OWNER                               = 0xcc\n\tNL80211_ATTR_SOFTWARE_IFTYPES                           = 0x79\n\tNL80211_ATTR_SPLIT_WIPHY_DUMP                           = 0xae\n\tNL80211_ATTR_SSID                                       = 0x34\n\tNL80211_ATTR_STA_AID                                    = 0x10\n\tNL80211_ATTR_STA_CAPABILITY                             = 0xab\n\tNL80211_ATTR_STA_EXT_CAPABILITY                         = 0xac\n\tNL80211_ATTR_STA_FLAGS2                                 = 0x43\n\tNL80211_ATTR_STA_FLAGS                                  = 0x11\n\tNL80211_ATTR_STA_INFO                                   = 0x15\n\tNL80211_ATTR_STA_LISTEN_INTERVAL                        = 0x12\n\tNL80211_ATTR_STA_PLINK_ACTION                           = 0x19\n\tNL80211_ATTR_STA_PLINK_STATE                            = 0x74\n\tNL80211_ATTR_STA_SUPPORTED_CHANNELS                     = 0xbd\n\tNL80211_ATTR_STA_SUPPORTED_OPER_CLASSES                 = 0xbe\n\tNL80211_ATTR_STA_SUPPORTED_RATES                        = 0x13\n\tNL80211_ATTR_STA_SUPPORT_P2P_PS                         = 0xe4\n\tNL80211_ATTR_STATUS_CODE                                = 0x48\n\tNL80211_ATTR_STA_TX_POWER                               = 0x114\n\tNL80211_ATTR_STA_TX_POWER_SETTING                       = 0x113\n\tNL80211_ATTR_STA_VLAN                                   = 0x14\n\tNL80211_ATTR_STA_WME                                    = 0x81\n\tNL80211_ATTR_SUPPORT_10_MHZ                             = 0xc1\n\tNL80211_ATTR_SUPPORT_5_MHZ                              = 0xc0\n\tNL80211_ATTR_SUPPORT_AP_UAPSD                           = 0x82\n\tNL80211_ATTR_SUPPORTED_COMMANDS                         = 0x32\n\tNL80211_ATTR_SUPPORTED_IFTYPES                          = 0x20\n\tNL80211_ATTR_SUPPORT_IBSS_RSN                           = 0x68\n\tNL80211_ATTR_SUPPORT_MESH_AUTH                          = 0x73\n\tNL80211_ATTR_SURVEY_INFO                                = 0x54\n\tNL80211_ATTR_SURVEY_RADIO_STATS                         = 0xda\n\tNL80211_ATTR_TD_BITMAP                                  = 0x141\n\tNL80211_ATTR_TDLS_ACTION                                = 0x88\n\tNL80211_ATTR_TDLS_DIALOG_TOKEN                          = 0x89\n\tNL80211_ATTR_TDLS_EXTERNAL_SETUP                        = 0x8c\n\tNL80211_ATTR_TDLS_INITIATOR                             = 0xcf\n\tNL80211_ATTR_TDLS_OPERATION                             = 0x8a\n\tNL80211_ATTR_TDLS_PEER_CAPABILITY                       = 0xcb\n\tNL80211_ATTR_TDLS_SUPPORT                               = 0x8b\n\tNL80211_ATTR_TESTDATA                                   = 0x45\n\tNL80211_ATTR_TID_CONFIG                                 = 0x11d\n\tNL80211_ATTR_TIMED_OUT                                  = 0x41\n\tNL80211_ATTR_TIMEOUT                                    = 0x110\n\tNL80211_ATTR_TIMEOUT_REASON                             = 0xf8\n\tNL80211_ATTR_TSID                                       = 0xd2\n\tNL80211_ATTR_TWT_RESPONDER                              = 0x116\n\tNL80211_ATTR_TX_FRAME_TYPES                             = 0x63\n\tNL80211_ATTR_TX_HW_TIMESTAMP                            = 0x13f\n\tNL80211_ATTR_TX_NO_CCK_RATE                             = 0x87\n\tNL80211_ATTR_TXQ_LIMIT                                  = 0x10a\n\tNL80211_ATTR_TXQ_MEMORY_LIMIT                           = 0x10b\n\tNL80211_ATTR_TXQ_QUANTUM                                = 0x10c\n\tNL80211_ATTR_TXQ_STATS                                  = 0x109\n\tNL80211_ATTR_TX_RATES                                   = 0x5a\n\tNL80211_ATTR_UNSOL_BCAST_PROBE_RESP                     = 0x127\n\tNL80211_ATTR_UNSPEC                                     = 0x0\n\tNL80211_ATTR_USE_MFP                                    = 0x42\n\tNL80211_ATTR_USER_PRIO                                  = 0xd3\n\tNL80211_ATTR_USER_REG_HINT_TYPE                         = 0x9a\n\tNL80211_ATTR_USE_RRM                                    = 0xd0\n\tNL80211_ATTR_VENDOR_DATA                                = 0xc5\n\tNL80211_ATTR_VENDOR_EVENTS                              = 0xc6\n\tNL80211_ATTR_VENDOR_ID                                  = 0xc3\n\tNL80211_ATTR_VENDOR_SUBCMD                              = 0xc4\n\tNL80211_ATTR_VHT_CAPABILITY                             = 0x9d\n\tNL80211_ATTR_VHT_CAPABILITY_MASK                        = 0xb0\n\tNL80211_ATTR_VLAN_ID                                    = 0x11a\n\tNL80211_ATTR_WANT_1X_4WAY_HS                            = 0x101\n\tNL80211_ATTR_WDEV                                       = 0x99\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_RX                     = 0x72\n\tNL80211_ATTR_WIPHY_ANTENNA_AVAIL_TX                     = 0x71\n\tNL80211_ATTR_WIPHY_ANTENNA_RX                           = 0x6a\n\tNL80211_ATTR_WIPHY_ANTENNA_TX                           = 0x69\n\tNL80211_ATTR_WIPHY_BANDS                                = 0x16\n\tNL80211_ATTR_WIPHY_CHANNEL_TYPE                         = 0x27\n\tNL80211_ATTR_WIPHY                                      = 0x1\n\tNL80211_ATTR_WIPHY_COVERAGE_CLASS                       = 0x59\n\tNL80211_ATTR_WIPHY_DYN_ACK                              = 0xd1\n\tNL80211_ATTR_WIPHY_EDMG_BW_CONFIG                       = 0x119\n\tNL80211_ATTR_WIPHY_EDMG_CHANNELS                        = 0x118\n\tNL80211_ATTR_WIPHY_FRAG_THRESHOLD                       = 0x3f\n\tNL80211_ATTR_WIPHY_FREQ                                 = 0x26\n\tNL80211_ATTR_WIPHY_FREQ_HINT                            = 0xc9\n\tNL80211_ATTR_WIPHY_FREQ_OFFSET                          = 0x122\n\tNL80211_ATTR_WIPHY_NAME                                 = 0x2\n\tNL80211_ATTR_WIPHY_RETRY_LONG                           = 0x3e\n\tNL80211_ATTR_WIPHY_RETRY_SHORT                          = 0x3d\n\tNL80211_ATTR_WIPHY_RTS_THRESHOLD                        = 0x40\n\tNL80211_ATTR_WIPHY_SELF_MANAGED_REG                     = 0xd8\n\tNL80211_ATTR_WIPHY_TX_POWER_LEVEL                       = 0x62\n\tNL80211_ATTR_WIPHY_TX_POWER_SETTING                     = 0x61\n\tNL80211_ATTR_WIPHY_TXQ_PARAMS                           = 0x25\n\tNL80211_ATTR_WOWLAN_TRIGGERS                            = 0x75\n\tNL80211_ATTR_WOWLAN_TRIGGERS_SUPPORTED                  = 0x76\n\tNL80211_ATTR_WPA_VERSIONS                               = 0x4b\n\tNL80211_AUTHTYPE_AUTOMATIC                              = 0x8\n\tNL80211_AUTHTYPE_FILS_PK                                = 0x7\n\tNL80211_AUTHTYPE_FILS_SK                                = 0x5\n\tNL80211_AUTHTYPE_FILS_SK_PFS                            = 0x6\n\tNL80211_AUTHTYPE_FT                                     = 0x2\n\tNL80211_AUTHTYPE_MAX                                    = 0x7\n\tNL80211_AUTHTYPE_NETWORK_EAP                            = 0x3\n\tNL80211_AUTHTYPE_OPEN_SYSTEM                            = 0x0\n\tNL80211_AUTHTYPE_SAE                                    = 0x4\n\tNL80211_AUTHTYPE_SHARED_KEY                             = 0x1\n\tNL80211_BAND_2GHZ                                       = 0x0\n\tNL80211_BAND_5GHZ                                       = 0x1\n\tNL80211_BAND_60GHZ                                      = 0x2\n\tNL80211_BAND_6GHZ                                       = 0x3\n\tNL80211_BAND_ATTR_EDMG_BW_CONFIG                        = 0xb\n\tNL80211_BAND_ATTR_EDMG_CHANNELS                         = 0xa\n\tNL80211_BAND_ATTR_FREQS                                 = 0x1\n\tNL80211_BAND_ATTR_HT_AMPDU_DENSITY                      = 0x6\n\tNL80211_BAND_ATTR_HT_AMPDU_FACTOR                       = 0x5\n\tNL80211_BAND_ATTR_HT_CAPA                               = 0x4\n\tNL80211_BAND_ATTR_HT_MCS_SET                            = 0x3\n\tNL80211_BAND_ATTR_IFTYPE_DATA                           = 0x9\n\tNL80211_BAND_ATTR_MAX                                   = 0xd\n\tNL80211_BAND_ATTR_RATES                                 = 0x2\n\tNL80211_BAND_ATTR_VHT_CAPA                              = 0x8\n\tNL80211_BAND_ATTR_VHT_MCS_SET                           = 0x7\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC                    = 0x8\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET                = 0xa\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY                    = 0x9\n\tNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE                    = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA                   = 0x6\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC                     = 0x2\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET                 = 0x4\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY                     = 0x3\n\tNL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE                     = 0x5\n\tNL80211_BAND_IFTYPE_ATTR_IFTYPES                        = 0x1\n\tNL80211_BAND_IFTYPE_ATTR_MAX                            = 0xb\n\tNL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS                   = 0x7\n\tNL80211_BAND_LC                                         = 0x5\n\tNL80211_BAND_S1GHZ                                      = 0x4\n\tNL80211_BITRATE_ATTR_2GHZ_SHORTPREAMBLE                 = 0x2\n\tNL80211_BITRATE_ATTR_MAX                                = 0x2\n\tNL80211_BITRATE_ATTR_RATE                               = 0x1\n\tNL80211_BSS_BEACON_IES                                  = 0xb\n\tNL80211_BSS_BEACON_INTERVAL                             = 0x4\n\tNL80211_BSS_BEACON_TSF                                  = 0xd\n\tNL80211_BSS_BSSID                                       = 0x1\n\tNL80211_BSS_CAPABILITY                                  = 0x5\n\tNL80211_BSS_CHAIN_SIGNAL                                = 0x13\n\tNL80211_BSS_CHAN_WIDTH_10                               = 0x1\n\tNL80211_BSS_CHAN_WIDTH_1                                = 0x3\n\tNL80211_BSS_CHAN_WIDTH_20                               = 0x0\n\tNL80211_BSS_CHAN_WIDTH_2                                = 0x4\n\tNL80211_BSS_CHAN_WIDTH_5                                = 0x2\n\tNL80211_BSS_CHAN_WIDTH                                  = 0xc\n\tNL80211_BSS_FREQUENCY                                   = 0x2\n\tNL80211_BSS_FREQUENCY_OFFSET                            = 0x14\n\tNL80211_BSS_INFORMATION_ELEMENTS                        = 0x6\n\tNL80211_BSS_LAST_SEEN_BOOTTIME                          = 0xf\n\tNL80211_BSS_MAX                                         = 0x16\n\tNL80211_BSS_MLD_ADDR                                    = 0x16\n\tNL80211_BSS_MLO_LINK_ID                                 = 0x15\n\tNL80211_BSS_PAD                                         = 0x10\n\tNL80211_BSS_PARENT_BSSID                                = 0x12\n\tNL80211_BSS_PARENT_TSF                                  = 0x11\n\tNL80211_BSS_PRESP_DATA                                  = 0xe\n\tNL80211_BSS_SEEN_MS_AGO                                 = 0xa\n\tNL80211_BSS_SELECT_ATTR_BAND_PREF                       = 0x2\n\tNL80211_BSS_SELECT_ATTR_MAX                             = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI_ADJUST                     = 0x3\n\tNL80211_BSS_SELECT_ATTR_RSSI                            = 0x1\n\tNL80211_BSS_SIGNAL_MBM                                  = 0x7\n\tNL80211_BSS_SIGNAL_UNSPEC                               = 0x8\n\tNL80211_BSS_STATUS_ASSOCIATED                           = 0x1\n\tNL80211_BSS_STATUS_AUTHENTICATED                        = 0x0\n\tNL80211_BSS_STATUS                                      = 0x9\n\tNL80211_BSS_STATUS_IBSS_JOINED                          = 0x2\n\tNL80211_BSS_TSF                                         = 0x3\n\tNL80211_CHAN_HT20                                       = 0x1\n\tNL80211_CHAN_HT40MINUS                                  = 0x2\n\tNL80211_CHAN_HT40PLUS                                   = 0x3\n\tNL80211_CHAN_NO_HT                                      = 0x0\n\tNL80211_CHAN_WIDTH_10                                   = 0x7\n\tNL80211_CHAN_WIDTH_160                                  = 0x5\n\tNL80211_CHAN_WIDTH_16                                   = 0xc\n\tNL80211_CHAN_WIDTH_1                                    = 0x8\n\tNL80211_CHAN_WIDTH_20                                   = 0x1\n\tNL80211_CHAN_WIDTH_20_NOHT                              = 0x0\n\tNL80211_CHAN_WIDTH_2                                    = 0x9\n\tNL80211_CHAN_WIDTH_320                                  = 0xd\n\tNL80211_CHAN_WIDTH_40                                   = 0x2\n\tNL80211_CHAN_WIDTH_4                                    = 0xa\n\tNL80211_CHAN_WIDTH_5                                    = 0x6\n\tNL80211_CHAN_WIDTH_80                                   = 0x3\n\tNL80211_CHAN_WIDTH_80P80                                = 0x4\n\tNL80211_CHAN_WIDTH_8                                    = 0xb\n\tNL80211_CMD_ABORT_SCAN                                  = 0x72\n\tNL80211_CMD_ACTION                                      = 0x3b\n\tNL80211_CMD_ACTION_TX_STATUS                            = 0x3c\n\tNL80211_CMD_ADD_LINK                                    = 0x94\n\tNL80211_CMD_ADD_LINK_STA                                = 0x96\n\tNL80211_CMD_ADD_NAN_FUNCTION                            = 0x75\n\tNL80211_CMD_ADD_TX_TS                                   = 0x69\n\tNL80211_CMD_ASSOC_COMEBACK                              = 0x93\n\tNL80211_CMD_ASSOCIATE                                   = 0x26\n\tNL80211_CMD_AUTHENTICATE                                = 0x25\n\tNL80211_CMD_CANCEL_REMAIN_ON_CHANNEL                    = 0x38\n\tNL80211_CMD_CHANGE_NAN_CONFIG                           = 0x77\n\tNL80211_CMD_CHANNEL_SWITCH                              = 0x66\n\tNL80211_CMD_CH_SWITCH_NOTIFY                            = 0x58\n\tNL80211_CMD_CH_SWITCH_STARTED_NOTIFY                    = 0x6e\n\tNL80211_CMD_COLOR_CHANGE_ABORTED                        = 0x90\n\tNL80211_CMD_COLOR_CHANGE_COMPLETED                      = 0x91\n\tNL80211_CMD_COLOR_CHANGE_REQUEST                        = 0x8e\n\tNL80211_CMD_COLOR_CHANGE_STARTED                        = 0x8f\n\tNL80211_CMD_CONNECT                                     = 0x2e\n\tNL80211_CMD_CONN_FAILED                                 = 0x5b\n\tNL80211_CMD_CONTROL_PORT_FRAME                          = 0x81\n\tNL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS                = 0x8b\n\tNL80211_CMD_CRIT_PROTOCOL_START                         = 0x62\n\tNL80211_CMD_CRIT_PROTOCOL_STOP                          = 0x63\n\tNL80211_CMD_DEAUTHENTICATE                              = 0x27\n\tNL80211_CMD_DEL_BEACON                                  = 0x10\n\tNL80211_CMD_DEL_INTERFACE                               = 0x8\n\tNL80211_CMD_DEL_KEY                                     = 0xc\n\tNL80211_CMD_DEL_MPATH                                   = 0x18\n\tNL80211_CMD_DEL_NAN_FUNCTION                            = 0x76\n\tNL80211_CMD_DEL_PMK                                     = 0x7c\n\tNL80211_CMD_DEL_PMKSA                                   = 0x35\n\tNL80211_CMD_DEL_STATION                                 = 0x14\n\tNL80211_CMD_DEL_TX_TS                                   = 0x6a\n\tNL80211_CMD_DEL_WIPHY                                   = 0x4\n\tNL80211_CMD_DISASSOCIATE                                = 0x28\n\tNL80211_CMD_DISCONNECT                                  = 0x30\n\tNL80211_CMD_EXTERNAL_AUTH                               = 0x7f\n\tNL80211_CMD_FLUSH_PMKSA                                 = 0x36\n\tNL80211_CMD_FRAME                                       = 0x3b\n\tNL80211_CMD_FRAME_TX_STATUS                             = 0x3c\n\tNL80211_CMD_FRAME_WAIT_CANCEL                           = 0x43\n\tNL80211_CMD_FT_EVENT                                    = 0x61\n\tNL80211_CMD_GET_BEACON                                  = 0xd\n\tNL80211_CMD_GET_COALESCE                                = 0x64\n\tNL80211_CMD_GET_FTM_RESPONDER_STATS                     = 0x82\n\tNL80211_CMD_GET_INTERFACE                               = 0x5\n\tNL80211_CMD_GET_KEY                                     = 0x9\n\tNL80211_CMD_GET_MESH_CONFIG                             = 0x1c\n\tNL80211_CMD_GET_MESH_PARAMS                             = 0x1c\n\tNL80211_CMD_GET_MPATH                                   = 0x15\n\tNL80211_CMD_GET_MPP                                     = 0x6b\n\tNL80211_CMD_GET_POWER_SAVE                              = 0x3e\n\tNL80211_CMD_GET_PROTOCOL_FEATURES                       = 0x5f\n\tNL80211_CMD_GET_REG                                     = 0x1f\n\tNL80211_CMD_GET_SCAN                                    = 0x20\n\tNL80211_CMD_GET_STATION                                 = 0x11\n\tNL80211_CMD_GET_SURVEY                                  = 0x32\n\tNL80211_CMD_GET_WIPHY                                   = 0x1\n\tNL80211_CMD_GET_WOWLAN                                  = 0x49\n\tNL80211_CMD_JOIN_IBSS                                   = 0x2b\n\tNL80211_CMD_JOIN_MESH                                   = 0x44\n\tNL80211_CMD_JOIN_OCB                                    = 0x6c\n\tNL80211_CMD_LEAVE_IBSS                                  = 0x2c\n\tNL80211_CMD_LEAVE_MESH                                  = 0x45\n\tNL80211_CMD_LEAVE_OCB                                   = 0x6d\n\tNL80211_CMD_MAX                                         = 0x9a\n\tNL80211_CMD_MICHAEL_MIC_FAILURE                         = 0x29\n\tNL80211_CMD_MODIFY_LINK_STA                             = 0x97\n\tNL80211_CMD_NAN_MATCH                                   = 0x78\n\tNL80211_CMD_NEW_BEACON                                  = 0xf\n\tNL80211_CMD_NEW_INTERFACE                               = 0x7\n\tNL80211_CMD_NEW_KEY                                     = 0xb\n\tNL80211_CMD_NEW_MPATH                                   = 0x17\n\tNL80211_CMD_NEW_PEER_CANDIDATE                          = 0x48\n\tNL80211_CMD_NEW_SCAN_RESULTS                            = 0x22\n\tNL80211_CMD_NEW_STATION                                 = 0x13\n\tNL80211_CMD_NEW_SURVEY_RESULTS                          = 0x33\n\tNL80211_CMD_NEW_WIPHY                                   = 0x3\n\tNL80211_CMD_NOTIFY_CQM                                  = 0x40\n\tNL80211_CMD_NOTIFY_RADAR                                = 0x86\n\tNL80211_CMD_OBSS_COLOR_COLLISION                        = 0x8d\n\tNL80211_CMD_PEER_MEASUREMENT_COMPLETE                   = 0x85\n\tNL80211_CMD_PEER_MEASUREMENT_RESULT                     = 0x84\n\tNL80211_CMD_PEER_MEASUREMENT_START                      = 0x83\n\tNL80211_CMD_PMKSA_CANDIDATE                             = 0x50\n\tNL80211_CMD_PORT_AUTHORIZED                             = 0x7d\n\tNL80211_CMD_PROBE_CLIENT                                = 0x54\n\tNL80211_CMD_PROBE_MESH_LINK                             = 0x88\n\tNL80211_CMD_RADAR_DETECT                                = 0x5e\n\tNL80211_CMD_REG_BEACON_HINT                             = 0x2a\n\tNL80211_CMD_REG_CHANGE                                  = 0x24\n\tNL80211_CMD_REGISTER_ACTION                             = 0x3a\n\tNL80211_CMD_REGISTER_BEACONS                            = 0x55\n\tNL80211_CMD_REGISTER_FRAME                              = 0x3a\n\tNL80211_CMD_RELOAD_REGDB                                = 0x7e\n\tNL80211_CMD_REMAIN_ON_CHANNEL                           = 0x37\n\tNL80211_CMD_REMOVE_LINK                                 = 0x95\n\tNL80211_CMD_REMOVE_LINK_STA                             = 0x98\n\tNL80211_CMD_REQ_SET_REG                                 = 0x1b\n\tNL80211_CMD_ROAM                                        = 0x2f\n\tNL80211_CMD_SCAN_ABORTED                                = 0x23\n\tNL80211_CMD_SCHED_SCAN_RESULTS                          = 0x4d\n\tNL80211_CMD_SCHED_SCAN_STOPPED                          = 0x4e\n\tNL80211_CMD_SET_BEACON                                  = 0xe\n\tNL80211_CMD_SET_BSS                                     = 0x19\n\tNL80211_CMD_SET_CHANNEL                                 = 0x41\n\tNL80211_CMD_SET_COALESCE                                = 0x65\n\tNL80211_CMD_SET_CQM                                     = 0x3f\n\tNL80211_CMD_SET_FILS_AAD                                = 0x92\n\tNL80211_CMD_SET_INTERFACE                               = 0x6\n\tNL80211_CMD_SET_KEY                                     = 0xa\n\tNL80211_CMD_SET_MAC_ACL                                 = 0x5d\n\tNL80211_CMD_SET_MCAST_RATE                              = 0x5c\n\tNL80211_CMD_SET_MESH_CONFIG                             = 0x1d\n\tNL80211_CMD_SET_MESH_PARAMS                             = 0x1d\n\tNL80211_CMD_SET_MGMT_EXTRA_IE                           = 0x1e\n\tNL80211_CMD_SET_MPATH                                   = 0x16\n\tNL80211_CMD_SET_MULTICAST_TO_UNICAST                    = 0x79\n\tNL80211_CMD_SET_NOACK_MAP                               = 0x57\n\tNL80211_CMD_SET_PMK                                     = 0x7b\n\tNL80211_CMD_SET_PMKSA                                   = 0x34\n\tNL80211_CMD_SET_POWER_SAVE                              = 0x3d\n\tNL80211_CMD_SET_QOS_MAP                                 = 0x68\n\tNL80211_CMD_SET_REG                                     = 0x1a\n\tNL80211_CMD_SET_REKEY_OFFLOAD                           = 0x4f\n\tNL80211_CMD_SET_SAR_SPECS                               = 0x8c\n\tNL80211_CMD_SET_STATION                                 = 0x12\n\tNL80211_CMD_SET_TID_CONFIG                              = 0x89\n\tNL80211_CMD_SET_TX_BITRATE_MASK                         = 0x39\n\tNL80211_CMD_SET_WDS_PEER                                = 0x42\n\tNL80211_CMD_SET_WIPHY                                   = 0x2\n\tNL80211_CMD_SET_WIPHY_NETNS                             = 0x31\n\tNL80211_CMD_SET_WOWLAN                                  = 0x4a\n\tNL80211_CMD_STA_OPMODE_CHANGED                          = 0x80\n\tNL80211_CMD_START_AP                                    = 0xf\n\tNL80211_CMD_START_NAN                                   = 0x73\n\tNL80211_CMD_START_P2P_DEVICE                            = 0x59\n\tNL80211_CMD_START_SCHED_SCAN                            = 0x4b\n\tNL80211_CMD_STOP_AP                                     = 0x10\n\tNL80211_CMD_STOP_NAN                                    = 0x74\n\tNL80211_CMD_STOP_P2P_DEVICE                             = 0x5a\n\tNL80211_CMD_STOP_SCHED_SCAN                             = 0x4c\n\tNL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH                  = 0x70\n\tNL80211_CMD_TDLS_CHANNEL_SWITCH                         = 0x6f\n\tNL80211_CMD_TDLS_MGMT                                   = 0x52\n\tNL80211_CMD_TDLS_OPER                                   = 0x51\n\tNL80211_CMD_TESTMODE                                    = 0x2d\n\tNL80211_CMD_TRIGGER_SCAN                                = 0x21\n\tNL80211_CMD_UNEXPECTED_4ADDR_FRAME                      = 0x56\n\tNL80211_CMD_UNEXPECTED_FRAME                            = 0x53\n\tNL80211_CMD_UNPROT_BEACON                               = 0x8a\n\tNL80211_CMD_UNPROT_DEAUTHENTICATE                       = 0x46\n\tNL80211_CMD_UNPROT_DISASSOCIATE                         = 0x47\n\tNL80211_CMD_UNSPEC                                      = 0x0\n\tNL80211_CMD_UPDATE_CONNECT_PARAMS                       = 0x7a\n\tNL80211_CMD_UPDATE_FT_IES                               = 0x60\n\tNL80211_CMD_UPDATE_OWE_INFO                             = 0x87\n\tNL80211_CMD_VENDOR                                      = 0x67\n\tNL80211_CMD_WIPHY_REG_CHANGE                            = 0x71\n\tNL80211_COALESCE_CONDITION_MATCH                        = 0x0\n\tNL80211_COALESCE_CONDITION_NO_MATCH                     = 0x1\n\tNL80211_CONN_FAIL_BLOCKED_CLIENT                        = 0x1\n\tNL80211_CONN_FAIL_MAX_CLIENTS                           = 0x0\n\tNL80211_CQM_RSSI_BEACON_LOSS_EVENT                      = 0x2\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH                   = 0x1\n\tNL80211_CQM_RSSI_THRESHOLD_EVENT_LOW                    = 0x0\n\tNL80211_CQM_TXE_MAX_INTVL                               = 0x708\n\tNL80211_CRIT_PROTO_APIPA                                = 0x3\n\tNL80211_CRIT_PROTO_DHCP                                 = 0x1\n\tNL80211_CRIT_PROTO_EAPOL                                = 0x2\n\tNL80211_CRIT_PROTO_MAX_DURATION                         = 0x1388\n\tNL80211_CRIT_PROTO_UNSPEC                               = 0x0\n\tNL80211_DFS_AVAILABLE                                   = 0x2\n\tNL80211_DFS_ETSI                                        = 0x2\n\tNL80211_DFS_FCC                                         = 0x1\n\tNL80211_DFS_JP                                          = 0x3\n\tNL80211_DFS_UNAVAILABLE                                 = 0x1\n\tNL80211_DFS_UNSET                                       = 0x0\n\tNL80211_DFS_USABLE                                      = 0x0\n\tNL80211_EDMG_BW_CONFIG_MAX                              = 0xf\n\tNL80211_EDMG_BW_CONFIG_MIN                              = 0x4\n\tNL80211_EDMG_CHANNELS_MAX                               = 0x3c\n\tNL80211_EDMG_CHANNELS_MIN                               = 0x1\n\tNL80211_EHT_MAX_CAPABILITY_LEN                          = 0x33\n\tNL80211_EHT_MIN_CAPABILITY_LEN                          = 0xd\n\tNL80211_EXTERNAL_AUTH_ABORT                             = 0x1\n\tNL80211_EXTERNAL_AUTH_START                             = 0x0\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_AP_PSK               = 0x32\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_1X               = 0x10\n\tNL80211_EXT_FEATURE_4WAY_HANDSHAKE_STA_PSK              = 0xf\n\tNL80211_EXT_FEATURE_ACCEPT_BCAST_PROBE_RESP             = 0x12\n\tNL80211_EXT_FEATURE_ACK_SIGNAL_SUPPORT                  = 0x1b\n\tNL80211_EXT_FEATURE_AIRTIME_FAIRNESS                    = 0x21\n\tNL80211_EXT_FEATURE_AP_PMKSA_CACHING                    = 0x22\n\tNL80211_EXT_FEATURE_AQL                                 = 0x28\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION_CLIENT            = 0x2e\n\tNL80211_EXT_FEATURE_BEACON_PROTECTION                   = 0x29\n\tNL80211_EXT_FEATURE_BEACON_RATE_HE                      = 0x36\n\tNL80211_EXT_FEATURE_BEACON_RATE_HT                      = 0x7\n\tNL80211_EXT_FEATURE_BEACON_RATE_LEGACY                  = 0x6\n\tNL80211_EXT_FEATURE_BEACON_RATE_VHT                     = 0x8\n\tNL80211_EXT_FEATURE_BSS_COLOR                           = 0x3a\n\tNL80211_EXT_FEATURE_BSS_PARENT_TSF                      = 0x4\n\tNL80211_EXT_FEATURE_CAN_REPLACE_PTK0                    = 0x1f\n\tNL80211_EXT_FEATURE_CONTROL_PORT_NO_PREAUTH             = 0x2a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211           = 0x1a\n\tNL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211_TX_STATUS = 0x30\n\tNL80211_EXT_FEATURE_CQM_RSSI_LIST                       = 0xd\n\tNL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT             = 0x1b\n\tNL80211_EXT_FEATURE_DEL_IBSS_STA                        = 0x2c\n\tNL80211_EXT_FEATURE_DFS_OFFLOAD                         = 0x19\n\tNL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER                = 0x20\n\tNL80211_EXT_FEATURE_EXT_KEY_ID                          = 0x24\n\tNL80211_EXT_FEATURE_FILS_CRYPTO_OFFLOAD                 = 0x3b\n\tNL80211_EXT_FEATURE_FILS_DISCOVERY                      = 0x34\n\tNL80211_EXT_FEATURE_FILS_MAX_CHANNEL_TIME               = 0x11\n\tNL80211_EXT_FEATURE_FILS_SK_OFFLOAD                     = 0xe\n\tNL80211_EXT_FEATURE_FILS_STA                            = 0x9\n\tNL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN                  = 0x18\n\tNL80211_EXT_FEATURE_LOW_POWER_SCAN                      = 0x17\n\tNL80211_EXT_FEATURE_LOW_SPAN_SCAN                       = 0x16\n\tNL80211_EXT_FEATURE_MFP_OPTIONAL                        = 0x15\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA                   = 0xa\n\tNL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED         = 0xb\n\tNL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS             = 0x2d\n\tNL80211_EXT_FEATURE_MU_MIMO_AIR_SNIFFER                 = 0x2\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION  = 0x14\n\tNL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE          = 0x13\n\tNL80211_EXT_FEATURE_OPERATING_CHANNEL_VALIDATION        = 0x31\n\tNL80211_EXT_FEATURE_POWERED_ADDR_CHANGE                 = 0x3d\n\tNL80211_EXT_FEATURE_PROTECTED_TWT                       = 0x2b\n\tNL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE         = 0x39\n\tNL80211_EXT_FEATURE_RADAR_BACKGROUND                    = 0x3c\n\tNL80211_EXT_FEATURE_RRM                                 = 0x1\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD_AP                      = 0x33\n\tNL80211_EXT_FEATURE_SAE_OFFLOAD                         = 0x26\n\tNL80211_EXT_FEATURE_SCAN_FREQ_KHZ                       = 0x2f\n\tNL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT               = 0x1e\n\tNL80211_EXT_FEATURE_SCAN_RANDOM_SN                      = 0x1d\n\tNL80211_EXT_FEATURE_SCAN_START_TIME                     = 0x3\n\tNL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD = 0x23\n\tNL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI            = 0xc\n\tNL80211_EXT_FEATURE_SECURE_LTF                          = 0x37\n\tNL80211_EXT_FEATURE_SECURE_RTT                          = 0x38\n\tNL80211_EXT_FEATURE_SET_SCAN_DWELL                      = 0x5\n\tNL80211_EXT_FEATURE_STA_TX_PWR                          = 0x25\n\tNL80211_EXT_FEATURE_TXQS                                = 0x1c\n\tNL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP              = 0x35\n\tNL80211_EXT_FEATURE_VHT_IBSS                            = 0x0\n\tNL80211_EXT_FEATURE_VLAN_OFFLOAD                        = 0x27\n\tNL80211_FEATURE_ACKTO_ESTIMATION                        = 0x800000\n\tNL80211_FEATURE_ACTIVE_MONITOR                          = 0x20000\n\tNL80211_FEATURE_ADVERTISE_CHAN_LIMITS                   = 0x4000\n\tNL80211_FEATURE_AP_MODE_CHAN_WIDTH_CHANGE               = 0x40000\n\tNL80211_FEATURE_AP_SCAN                                 = 0x100\n\tNL80211_FEATURE_CELL_BASE_REG_HINTS                     = 0x8\n\tNL80211_FEATURE_DS_PARAM_SET_IE_IN_PROBES               = 0x80000\n\tNL80211_FEATURE_DYNAMIC_SMPS                            = 0x2000000\n\tNL80211_FEATURE_FULL_AP_CLIENT_STATE                    = 0x8000\n\tNL80211_FEATURE_HT_IBSS                                 = 0x2\n\tNL80211_FEATURE_INACTIVITY_TIMER                        = 0x4\n\tNL80211_FEATURE_LOW_PRIORITY_SCAN                       = 0x40\n\tNL80211_FEATURE_MAC_ON_CREATE                           = 0x8000000\n\tNL80211_FEATURE_ND_RANDOM_MAC_ADDR                      = 0x80000000\n\tNL80211_FEATURE_NEED_OBSS_SCAN                          = 0x400\n\tNL80211_FEATURE_P2P_DEVICE_NEEDS_CHANNEL                = 0x10\n\tNL80211_FEATURE_P2P_GO_CTWIN                            = 0x800\n\tNL80211_FEATURE_P2P_GO_OPPPS                            = 0x1000\n\tNL80211_FEATURE_QUIET                                   = 0x200000\n\tNL80211_FEATURE_SAE                                     = 0x20\n\tNL80211_FEATURE_SCAN_FLUSH                              = 0x80\n\tNL80211_FEATURE_SCAN_RANDOM_MAC_ADDR                    = 0x20000000\n\tNL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR              = 0x40000000\n\tNL80211_FEATURE_SK_TX_STATUS                            = 0x1\n\tNL80211_FEATURE_STATIC_SMPS                             = 0x1000000\n\tNL80211_FEATURE_SUPPORTS_WMM_ADMISSION                  = 0x4000000\n\tNL80211_FEATURE_TDLS_CHANNEL_SWITCH                     = 0x10000000\n\tNL80211_FEATURE_TX_POWER_INSERTION                      = 0x400000\n\tNL80211_FEATURE_USERSPACE_MPM                           = 0x10000\n\tNL80211_FEATURE_VIF_TXPOWER                             = 0x200\n\tNL80211_FEATURE_WFA_TPC_IE_IN_PROBES                    = 0x100000\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MAX                     = 0x2\n\tNL80211_FILS_DISCOVERY_ATTR_INT_MIN                     = 0x1\n\tNL80211_FILS_DISCOVERY_ATTR_MAX                         = 0x3\n\tNL80211_FILS_DISCOVERY_ATTR_TMPL                        = 0x3\n\tNL80211_FILS_DISCOVERY_TMPL_MIN_LEN                     = 0x2a\n\tNL80211_FREQUENCY_ATTR_16MHZ                            = 0x19\n\tNL80211_FREQUENCY_ATTR_1MHZ                             = 0x15\n\tNL80211_FREQUENCY_ATTR_2MHZ                             = 0x16\n\tNL80211_FREQUENCY_ATTR_4MHZ                             = 0x17\n\tNL80211_FREQUENCY_ATTR_8MHZ                             = 0x18\n\tNL80211_FREQUENCY_ATTR_DFS_CAC_TIME                     = 0xd\n\tNL80211_FREQUENCY_ATTR_DFS_STATE                        = 0x7\n\tNL80211_FREQUENCY_ATTR_DFS_TIME                         = 0x8\n\tNL80211_FREQUENCY_ATTR_DISABLED                         = 0x2\n\tNL80211_FREQUENCY_ATTR_FREQ                             = 0x1\n\tNL80211_FREQUENCY_ATTR_GO_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_INDOOR_ONLY                      = 0xe\n\tNL80211_FREQUENCY_ATTR_IR_CONCURRENT                    = 0xf\n\tNL80211_FREQUENCY_ATTR_MAX                              = 0x1c\n\tNL80211_FREQUENCY_ATTR_MAX_TX_POWER                     = 0x6\n\tNL80211_FREQUENCY_ATTR_NO_10MHZ                         = 0x11\n\tNL80211_FREQUENCY_ATTR_NO_160MHZ                        = 0xc\n\tNL80211_FREQUENCY_ATTR_NO_20MHZ                         = 0x10\n\tNL80211_FREQUENCY_ATTR_NO_320MHZ                        = 0x1a\n\tNL80211_FREQUENCY_ATTR_NO_80MHZ                         = 0xb\n\tNL80211_FREQUENCY_ATTR_NO_EHT                           = 0x1b\n\tNL80211_FREQUENCY_ATTR_NO_HE                            = 0x13\n\tNL80211_FREQUENCY_ATTR_NO_HT40_MINUS                    = 0x9\n\tNL80211_FREQUENCY_ATTR_NO_HT40_PLUS                     = 0xa\n\tNL80211_FREQUENCY_ATTR_NO_IBSS                          = 0x3\n\tNL80211_FREQUENCY_ATTR_NO_IR                            = 0x3\n\tNL80211_FREQUENCY_ATTR_OFFSET                           = 0x14\n\tNL80211_FREQUENCY_ATTR_PASSIVE_SCAN                     = 0x3\n\tNL80211_FREQUENCY_ATTR_RADAR                            = 0x5\n\tNL80211_FREQUENCY_ATTR_WMM                              = 0x12\n\tNL80211_FTM_RESP_ATTR_CIVICLOC                          = 0x3\n\tNL80211_FTM_RESP_ATTR_ENABLED                           = 0x1\n\tNL80211_FTM_RESP_ATTR_LCI                               = 0x2\n\tNL80211_FTM_RESP_ATTR_MAX                               = 0x3\n\tNL80211_FTM_STATS_ASAP_NUM                              = 0x4\n\tNL80211_FTM_STATS_FAILED_NUM                            = 0x3\n\tNL80211_FTM_STATS_MAX                                   = 0xa\n\tNL80211_FTM_STATS_NON_ASAP_NUM                          = 0x5\n\tNL80211_FTM_STATS_OUT_OF_WINDOW_TRIGGERS_NUM            = 0x9\n\tNL80211_FTM_STATS_PAD                                   = 0xa\n\tNL80211_FTM_STATS_PARTIAL_NUM                           = 0x2\n\tNL80211_FTM_STATS_RESCHEDULE_REQUESTS_NUM               = 0x8\n\tNL80211_FTM_STATS_SUCCESS_NUM                           = 0x1\n\tNL80211_FTM_STATS_TOTAL_DURATION_MSEC                   = 0x6\n\tNL80211_FTM_STATS_UNKNOWN_TRIGGERS_NUM                  = 0x7\n\tNL80211_GENL_NAME                                       = \"nl80211\"\n\tNL80211_HE_BSS_COLOR_ATTR_COLOR                         = 0x1\n\tNL80211_HE_BSS_COLOR_ATTR_DISABLED                      = 0x2\n\tNL80211_HE_BSS_COLOR_ATTR_MAX                           = 0x3\n\tNL80211_HE_BSS_COLOR_ATTR_PARTIAL                       = 0x3\n\tNL80211_HE_MAX_CAPABILITY_LEN                           = 0x36\n\tNL80211_HE_MIN_CAPABILITY_LEN                           = 0x10\n\tNL80211_HE_NSS_MAX                                      = 0x8\n\tNL80211_HE_OBSS_PD_ATTR_BSS_COLOR_BITMAP                = 0x4\n\tNL80211_HE_OBSS_PD_ATTR_MAX                             = 0x6\n\tNL80211_HE_OBSS_PD_ATTR_MAX_OFFSET                      = 0x2\n\tNL80211_HE_OBSS_PD_ATTR_MIN_OFFSET                      = 0x1\n\tNL80211_HE_OBSS_PD_ATTR_NON_SRG_MAX_OFFSET              = 0x3\n\tNL80211_HE_OBSS_PD_ATTR_PARTIAL_BSSID_BITMAP            = 0x5\n\tNL80211_HE_OBSS_PD_ATTR_SR_CTRL                         = 0x6\n\tNL80211_HIDDEN_SSID_NOT_IN_USE                          = 0x0\n\tNL80211_HIDDEN_SSID_ZERO_CONTENTS                       = 0x2\n\tNL80211_HIDDEN_SSID_ZERO_LEN                            = 0x1\n\tNL80211_HT_CAPABILITY_LEN                               = 0x1a\n\tNL80211_IFACE_COMB_BI_MIN_GCD                           = 0x7\n\tNL80211_IFACE_COMB_LIMITS                               = 0x1\n\tNL80211_IFACE_COMB_MAXNUM                               = 0x2\n\tNL80211_IFACE_COMB_NUM_CHANNELS                         = 0x4\n\tNL80211_IFACE_COMB_RADAR_DETECT_REGIONS                 = 0x6\n\tNL80211_IFACE_COMB_RADAR_DETECT_WIDTHS                  = 0x5\n\tNL80211_IFACE_COMB_STA_AP_BI_MATCH                      = 0x3\n\tNL80211_IFACE_COMB_UNSPEC                               = 0x0\n\tNL80211_IFACE_LIMIT_MAX                                 = 0x1\n\tNL80211_IFACE_LIMIT_TYPES                               = 0x2\n\tNL80211_IFACE_LIMIT_UNSPEC                              = 0x0\n\tNL80211_IFTYPE_ADHOC                                    = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_IFTYPES                         = 0x1\n\tNL80211_IFTYPE_AKM_ATTR_MAX                             = 0x2\n\tNL80211_IFTYPE_AKM_ATTR_SUITES                          = 0x2\n\tNL80211_IFTYPE_AP                                       = 0x3\n\tNL80211_IFTYPE_AP_VLAN                                  = 0x4\n\tNL80211_IFTYPE_MAX                                      = 0xc\n\tNL80211_IFTYPE_MESH_POINT                               = 0x7\n\tNL80211_IFTYPE_MONITOR                                  = 0x6\n\tNL80211_IFTYPE_NAN                                      = 0xc\n\tNL80211_IFTYPE_OCB                                      = 0xb\n\tNL80211_IFTYPE_P2P_CLIENT                               = 0x8\n\tNL80211_IFTYPE_P2P_DEVICE                               = 0xa\n\tNL80211_IFTYPE_P2P_GO                                   = 0x9\n\tNL80211_IFTYPE_STATION                                  = 0x2\n\tNL80211_IFTYPE_UNSPECIFIED                              = 0x0\n\tNL80211_IFTYPE_WDS                                      = 0x5\n\tNL80211_KCK_EXT_LEN                                     = 0x18\n\tNL80211_KCK_LEN                                         = 0x10\n\tNL80211_KEK_EXT_LEN                                     = 0x20\n\tNL80211_KEK_LEN                                         = 0x10\n\tNL80211_KEY_CIPHER                                      = 0x3\n\tNL80211_KEY_DATA                                        = 0x1\n\tNL80211_KEY_DEFAULT_BEACON                              = 0xa\n\tNL80211_KEY_DEFAULT                                     = 0x5\n\tNL80211_KEY_DEFAULT_MGMT                                = 0x6\n\tNL80211_KEY_DEFAULT_TYPE_MULTICAST                      = 0x2\n\tNL80211_KEY_DEFAULT_TYPES                               = 0x8\n\tNL80211_KEY_DEFAULT_TYPE_UNICAST                        = 0x1\n\tNL80211_KEY_IDX                                         = 0x2\n\tNL80211_KEY_MAX                                         = 0xa\n\tNL80211_KEY_MODE                                        = 0x9\n\tNL80211_KEY_NO_TX                                       = 0x1\n\tNL80211_KEY_RX_TX                                       = 0x0\n\tNL80211_KEY_SEQ                                         = 0x4\n\tNL80211_KEY_SET_TX                                      = 0x2\n\tNL80211_KEY_TYPE                                        = 0x7\n\tNL80211_KEYTYPE_GROUP                                   = 0x0\n\tNL80211_KEYTYPE_PAIRWISE                                = 0x1\n\tNL80211_KEYTYPE_PEERKEY                                 = 0x2\n\tNL80211_MAX_NR_AKM_SUITES                               = 0x2\n\tNL80211_MAX_NR_CIPHER_SUITES                            = 0x5\n\tNL80211_MAX_SUPP_HT_RATES                               = 0x4d\n\tNL80211_MAX_SUPP_RATES                                  = 0x20\n\tNL80211_MAX_SUPP_REG_RULES                              = 0x80\n\tNL80211_MBSSID_CONFIG_ATTR_EMA                          = 0x5\n\tNL80211_MBSSID_CONFIG_ATTR_INDEX                        = 0x3\n\tNL80211_MBSSID_CONFIG_ATTR_MAX                          = 0x5\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_EMA_PROFILE_PERIODICITY  = 0x2\n\tNL80211_MBSSID_CONFIG_ATTR_MAX_INTERFACES               = 0x1\n\tNL80211_MBSSID_CONFIG_ATTR_TX_IFINDEX                   = 0x4\n\tNL80211_MESHCONF_ATTR_MAX                               = 0x1f\n\tNL80211_MESHCONF_AUTO_OPEN_PLINKS                       = 0x7\n\tNL80211_MESHCONF_AWAKE_WINDOW                           = 0x1b\n\tNL80211_MESHCONF_CONFIRM_TIMEOUT                        = 0x2\n\tNL80211_MESHCONF_CONNECTED_TO_AS                        = 0x1f\n\tNL80211_MESHCONF_CONNECTED_TO_GATE                      = 0x1d\n\tNL80211_MESHCONF_ELEMENT_TTL                            = 0xf\n\tNL80211_MESHCONF_FORWARDING                             = 0x13\n\tNL80211_MESHCONF_GATE_ANNOUNCEMENTS                     = 0x11\n\tNL80211_MESHCONF_HOLDING_TIMEOUT                        = 0x3\n\tNL80211_MESHCONF_HT_OPMODE                              = 0x16\n\tNL80211_MESHCONF_HWMP_ACTIVE_PATH_TIMEOUT               = 0xb\n\tNL80211_MESHCONF_HWMP_CONFIRMATION_INTERVAL             = 0x19\n\tNL80211_MESHCONF_HWMP_MAX_PREQ_RETRIES                  = 0x8\n\tNL80211_MESHCONF_HWMP_NET_DIAM_TRVS_TIME                = 0xd\n\tNL80211_MESHCONF_HWMP_PATH_TO_ROOT_TIMEOUT              = 0x17\n\tNL80211_MESHCONF_HWMP_PERR_MIN_INTERVAL                 = 0x12\n\tNL80211_MESHCONF_HWMP_PREQ_MIN_INTERVAL                 = 0xc\n\tNL80211_MESHCONF_HWMP_RANN_INTERVAL                     = 0x10\n\tNL80211_MESHCONF_HWMP_ROOT_INTERVAL                     = 0x18\n\tNL80211_MESHCONF_HWMP_ROOTMODE                          = 0xe\n\tNL80211_MESHCONF_MAX_PEER_LINKS                         = 0x4\n\tNL80211_MESHCONF_MAX_RETRIES                            = 0x5\n\tNL80211_MESHCONF_MIN_DISCOVERY_TIMEOUT                  = 0xa\n\tNL80211_MESHCONF_NOLEARN                                = 0x1e\n\tNL80211_MESHCONF_PATH_REFRESH_TIME                      = 0x9\n\tNL80211_MESHCONF_PLINK_TIMEOUT                          = 0x1c\n\tNL80211_MESHCONF_POWER_MODE                             = 0x1a\n\tNL80211_MESHCONF_RETRY_TIMEOUT                          = 0x1\n\tNL80211_MESHCONF_RSSI_THRESHOLD                         = 0x14\n\tNL80211_MESHCONF_SYNC_OFFSET_MAX_NEIGHBOR               = 0x15\n\tNL80211_MESHCONF_TTL                                    = 0x6\n\tNL80211_MESH_POWER_ACTIVE                               = 0x1\n\tNL80211_MESH_POWER_DEEP_SLEEP                           = 0x3\n\tNL80211_MESH_POWER_LIGHT_SLEEP                          = 0x2\n\tNL80211_MESH_POWER_MAX                                  = 0x3\n\tNL80211_MESH_POWER_UNKNOWN                              = 0x0\n\tNL80211_MESH_SETUP_ATTR_MAX                             = 0x8\n\tNL80211_MESH_SETUP_AUTH_PROTOCOL                        = 0x8\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_METRIC                 = 0x2\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_PATH_SEL               = 0x1\n\tNL80211_MESH_SETUP_ENABLE_VENDOR_SYNC                   = 0x6\n\tNL80211_MESH_SETUP_IE                                   = 0x3\n\tNL80211_MESH_SETUP_USERSPACE_AMPE                       = 0x5\n\tNL80211_MESH_SETUP_USERSPACE_AUTH                       = 0x4\n\tNL80211_MESH_SETUP_USERSPACE_MPM                        = 0x7\n\tNL80211_MESH_SETUP_VENDOR_PATH_SEL_IE                   = 0x3\n\tNL80211_MFP_NO                                          = 0x0\n\tNL80211_MFP_OPTIONAL                                    = 0x2\n\tNL80211_MFP_REQUIRED                                    = 0x1\n\tNL80211_MIN_REMAIN_ON_CHANNEL_TIME                      = 0xa\n\tNL80211_MNTR_FLAG_ACTIVE                                = 0x6\n\tNL80211_MNTR_FLAG_CONTROL                               = 0x3\n\tNL80211_MNTR_FLAG_COOK_FRAMES                           = 0x5\n\tNL80211_MNTR_FLAG_FCSFAIL                               = 0x1\n\tNL80211_MNTR_FLAG_MAX                                   = 0x6\n\tNL80211_MNTR_FLAG_OTHER_BSS                             = 0x4\n\tNL80211_MNTR_FLAG_PLCPFAIL                              = 0x2\n\tNL80211_MPATH_FLAG_ACTIVE                               = 0x1\n\tNL80211_MPATH_FLAG_FIXED                                = 0x8\n\tNL80211_MPATH_FLAG_RESOLVED                             = 0x10\n\tNL80211_MPATH_FLAG_RESOLVING                            = 0x2\n\tNL80211_MPATH_FLAG_SN_VALID                             = 0x4\n\tNL80211_MPATH_INFO_DISCOVERY_RETRIES                    = 0x7\n\tNL80211_MPATH_INFO_DISCOVERY_TIMEOUT                    = 0x6\n\tNL80211_MPATH_INFO_EXPTIME                              = 0x4\n\tNL80211_MPATH_INFO_FLAGS                                = 0x5\n\tNL80211_MPATH_INFO_FRAME_QLEN                           = 0x1\n\tNL80211_MPATH_INFO_HOP_COUNT                            = 0x8\n\tNL80211_MPATH_INFO_MAX                                  = 0x9\n\tNL80211_MPATH_INFO_METRIC                               = 0x3\n\tNL80211_MPATH_INFO_PATH_CHANGE                          = 0x9\n\tNL80211_MPATH_INFO_SN                                   = 0x2\n\tNL80211_MULTICAST_GROUP_CONFIG                          = \"config\"\n\tNL80211_MULTICAST_GROUP_MLME                            = \"mlme\"\n\tNL80211_MULTICAST_GROUP_NAN                             = \"nan\"\n\tNL80211_MULTICAST_GROUP_REG                             = \"regulatory\"\n\tNL80211_MULTICAST_GROUP_SCAN                            = \"scan\"\n\tNL80211_MULTICAST_GROUP_TESTMODE                        = \"testmode\"\n\tNL80211_MULTICAST_GROUP_VENDOR                          = \"vendor\"\n\tNL80211_NAN_FUNC_ATTR_MAX                               = 0x10\n\tNL80211_NAN_FUNC_CLOSE_RANGE                            = 0x9\n\tNL80211_NAN_FUNC_FOLLOW_UP                              = 0x2\n\tNL80211_NAN_FUNC_FOLLOW_UP_DEST                         = 0x8\n\tNL80211_NAN_FUNC_FOLLOW_UP_ID                           = 0x6\n\tNL80211_NAN_FUNC_FOLLOW_UP_REQ_ID                       = 0x7\n\tNL80211_NAN_FUNC_INSTANCE_ID                            = 0xf\n\tNL80211_NAN_FUNC_MAX_TYPE                               = 0x2\n\tNL80211_NAN_FUNC_PUBLISH_BCAST                          = 0x4\n\tNL80211_NAN_FUNC_PUBLISH                                = 0x0\n\tNL80211_NAN_FUNC_PUBLISH_TYPE                           = 0x3\n\tNL80211_NAN_FUNC_RX_MATCH_FILTER                        = 0xd\n\tNL80211_NAN_FUNC_SERVICE_ID                             = 0x2\n\tNL80211_NAN_FUNC_SERVICE_ID_LEN                         = 0x6\n\tNL80211_NAN_FUNC_SERVICE_INFO                           = 0xb\n\tNL80211_NAN_FUNC_SERVICE_SPEC_INFO_MAX_LEN              = 0xff\n\tNL80211_NAN_FUNC_SRF                                    = 0xc\n\tNL80211_NAN_FUNC_SRF_MAX_LEN                            = 0xff\n\tNL80211_NAN_FUNC_SUBSCRIBE_ACTIVE                       = 0x5\n\tNL80211_NAN_FUNC_SUBSCRIBE                              = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON                            = 0x10\n\tNL80211_NAN_FUNC_TERM_REASON_ERROR                      = 0x2\n\tNL80211_NAN_FUNC_TERM_REASON_TTL_EXPIRED                = 0x1\n\tNL80211_NAN_FUNC_TERM_REASON_USER_REQUEST               = 0x0\n\tNL80211_NAN_FUNC_TTL                                    = 0xa\n\tNL80211_NAN_FUNC_TX_MATCH_FILTER                        = 0xe\n\tNL80211_NAN_FUNC_TYPE                                   = 0x1\n\tNL80211_NAN_MATCH_ATTR_MAX                              = 0x2\n\tNL80211_NAN_MATCH_FUNC_LOCAL                            = 0x1\n\tNL80211_NAN_MATCH_FUNC_PEER                             = 0x2\n\tNL80211_NAN_SOLICITED_PUBLISH                           = 0x1\n\tNL80211_NAN_SRF_ATTR_MAX                                = 0x4\n\tNL80211_NAN_SRF_BF                                      = 0x2\n\tNL80211_NAN_SRF_BF_IDX                                  = 0x3\n\tNL80211_NAN_SRF_INCLUDE                                 = 0x1\n\tNL80211_NAN_SRF_MAC_ADDRS                               = 0x4\n\tNL80211_NAN_UNSOLICITED_PUBLISH                         = 0x2\n\tNL80211_NUM_ACS                                         = 0x4\n\tNL80211_P2P_PS_SUPPORTED                                = 0x1\n\tNL80211_P2P_PS_UNSUPPORTED                              = 0x0\n\tNL80211_PKTPAT_MASK                                     = 0x1\n\tNL80211_PKTPAT_OFFSET                                   = 0x3\n\tNL80211_PKTPAT_PATTERN                                  = 0x2\n\tNL80211_PLINK_ACTION_BLOCK                              = 0x2\n\tNL80211_PLINK_ACTION_NO_ACTION                          = 0x0\n\tNL80211_PLINK_ACTION_OPEN                               = 0x1\n\tNL80211_PLINK_BLOCKED                                   = 0x6\n\tNL80211_PLINK_CNF_RCVD                                  = 0x3\n\tNL80211_PLINK_ESTAB                                     = 0x4\n\tNL80211_PLINK_HOLDING                                   = 0x5\n\tNL80211_PLINK_LISTEN                                    = 0x0\n\tNL80211_PLINK_OPN_RCVD                                  = 0x2\n\tNL80211_PLINK_OPN_SNT                                   = 0x1\n\tNL80211_PMKSA_CANDIDATE_BSSID                           = 0x2\n\tNL80211_PMKSA_CANDIDATE_INDEX                           = 0x1\n\tNL80211_PMKSA_CANDIDATE_PREAUTH                         = 0x3\n\tNL80211_PMSR_ATTR_MAX                                   = 0x5\n\tNL80211_PMSR_ATTR_MAX_PEERS                             = 0x1\n\tNL80211_PMSR_ATTR_PEERS                                 = 0x5\n\tNL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR                    = 0x3\n\tNL80211_PMSR_ATTR_REPORT_AP_TSF                         = 0x2\n\tNL80211_PMSR_ATTR_TYPE_CAPA                             = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_ASAP                         = 0x1\n\tNL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS                   = 0x6\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT          = 0x7\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX                          = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST           = 0x8\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP                     = 0x2\n\tNL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED            = 0xa\n\tNL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES                    = 0x5\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC                 = 0x4\n\tNL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI                      = 0x3\n\tNL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED                = 0x9\n\tNL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS             = 0x7\n\tNL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP              = 0x5\n\tNL80211_PMSR_FTM_FAILURE_NO_RESPONSE                    = 0x1\n\tNL80211_PMSR_FTM_FAILURE_PEER_BUSY                      = 0x6\n\tNL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE               = 0x4\n\tNL80211_PMSR_FTM_FAILURE_REJECTED                       = 0x2\n\tNL80211_PMSR_FTM_FAILURE_UNSPECIFIED                    = 0x0\n\tNL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL                  = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_ASAP                          = 0x1\n\tNL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR                     = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION                = 0x5\n\tNL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD                  = 0x4\n\tNL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST                = 0x6\n\tNL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK                  = 0xc\n\tNL80211_PMSR_FTM_REQ_ATTR_MAX                           = 0xd\n\tNL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED             = 0xb\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP                = 0x3\n\tNL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES              = 0x7\n\tNL80211_PMSR_FTM_REQ_ATTR_PREAMBLE                      = 0x2\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC              = 0x9\n\tNL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI                   = 0x8\n\tNL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED                 = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION               = 0x7\n\tNL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX                  = 0x2\n\tNL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME              = 0x5\n\tNL80211_PMSR_FTM_RESP_ATTR_CIVICLOC                     = 0x14\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_AVG                     = 0x10\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD                  = 0x12\n\tNL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE                = 0x11\n\tNL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON                  = 0x1\n\tNL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST               = 0x8\n\tNL80211_PMSR_FTM_RESP_ATTR_LCI                          = 0x13\n\tNL80211_PMSR_FTM_RESP_ATTR_MAX                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP               = 0x6\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS            = 0x3\n\tNL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES           = 0x4\n\tNL80211_PMSR_FTM_RESP_ATTR_PAD                          = 0x15\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG                     = 0x9\n\tNL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD                  = 0xa\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_AVG                      = 0xd\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD                   = 0xf\n\tNL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE                 = 0xe\n\tNL80211_PMSR_FTM_RESP_ATTR_RX_RATE                      = 0xc\n\tNL80211_PMSR_FTM_RESP_ATTR_TX_RATE                      = 0xb\n\tNL80211_PMSR_PEER_ATTR_ADDR                             = 0x1\n\tNL80211_PMSR_PEER_ATTR_CHAN                             = 0x2\n\tNL80211_PMSR_PEER_ATTR_MAX                              = 0x4\n\tNL80211_PMSR_PEER_ATTR_REQ                              = 0x3\n\tNL80211_PMSR_PEER_ATTR_RESP                             = 0x4\n\tNL80211_PMSR_REQ_ATTR_DATA                              = 0x1\n\tNL80211_PMSR_REQ_ATTR_GET_AP_TSF                        = 0x2\n\tNL80211_PMSR_REQ_ATTR_MAX                               = 0x2\n\tNL80211_PMSR_RESP_ATTR_AP_TSF                           = 0x4\n\tNL80211_PMSR_RESP_ATTR_DATA                             = 0x1\n\tNL80211_PMSR_RESP_ATTR_FINAL                            = 0x5\n\tNL80211_PMSR_RESP_ATTR_HOST_TIME                        = 0x3\n\tNL80211_PMSR_RESP_ATTR_MAX                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_PAD                              = 0x6\n\tNL80211_PMSR_RESP_ATTR_STATUS                           = 0x2\n\tNL80211_PMSR_STATUS_FAILURE                             = 0x3\n\tNL80211_PMSR_STATUS_REFUSED                             = 0x1\n\tNL80211_PMSR_STATUS_SUCCESS                             = 0x0\n\tNL80211_PMSR_STATUS_TIMEOUT                             = 0x2\n\tNL80211_PMSR_TYPE_FTM                                   = 0x1\n\tNL80211_PMSR_TYPE_INVALID                               = 0x0\n\tNL80211_PMSR_TYPE_MAX                                   = 0x1\n\tNL80211_PREAMBLE_DMG                                    = 0x3\n\tNL80211_PREAMBLE_HE                                     = 0x4\n\tNL80211_PREAMBLE_HT                                     = 0x1\n\tNL80211_PREAMBLE_LEGACY                                 = 0x0\n\tNL80211_PREAMBLE_VHT                                    = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_80211U               = 0x8\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_P2P                  = 0x4\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS2                 = 0x2\n\tNL80211_PROBE_RESP_OFFLOAD_SUPPORT_WPS                  = 0x1\n\tNL80211_PROTOCOL_FEATURE_SPLIT_WIPHY_DUMP               = 0x1\n\tNL80211_PS_DISABLED                                     = 0x0\n\tNL80211_PS_ENABLED                                      = 0x1\n\tNL80211_RADAR_CAC_ABORTED                               = 0x2\n\tNL80211_RADAR_CAC_FINISHED                              = 0x1\n\tNL80211_RADAR_CAC_STARTED                               = 0x5\n\tNL80211_RADAR_DETECTED                                  = 0x0\n\tNL80211_RADAR_NOP_FINISHED                              = 0x3\n\tNL80211_RADAR_PRE_CAC_EXPIRED                           = 0x4\n\tNL80211_RATE_INFO_10_MHZ_WIDTH                          = 0xb\n\tNL80211_RATE_INFO_160_MHZ_WIDTH                         = 0xa\n\tNL80211_RATE_INFO_320_MHZ_WIDTH                         = 0x12\n\tNL80211_RATE_INFO_40_MHZ_WIDTH                          = 0x3\n\tNL80211_RATE_INFO_5_MHZ_WIDTH                           = 0xc\n\tNL80211_RATE_INFO_80_MHZ_WIDTH                          = 0x8\n\tNL80211_RATE_INFO_80P80_MHZ_WIDTH                       = 0x9\n\tNL80211_RATE_INFO_BITRATE32                             = 0x5\n\tNL80211_RATE_INFO_BITRATE                               = 0x1\n\tNL80211_RATE_INFO_EHT_GI_0_8                            = 0x0\n\tNL80211_RATE_INFO_EHT_GI_1_6                            = 0x1\n\tNL80211_RATE_INFO_EHT_GI_3_2                            = 0x2\n\tNL80211_RATE_INFO_EHT_GI                                = 0x15\n\tNL80211_RATE_INFO_EHT_MCS                               = 0x13\n\tNL80211_RATE_INFO_EHT_NSS                               = 0x14\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106                      = 0x3\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_106P26                   = 0x4\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_242                      = 0x5\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_26                       = 0x0\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996                    = 0xb\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484                = 0xc\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996                    = 0xd\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484                = 0xe\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484                      = 0x6\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_484P242                  = 0x7\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_4x996                    = 0xf\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52                       = 0x1\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_52P26                    = 0x2\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996                      = 0x8\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484                  = 0x9\n\tNL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242              = 0xa\n\tNL80211_RATE_INFO_EHT_RU_ALLOC                          = 0x16\n\tNL80211_RATE_INFO_HE_1XLTF                              = 0x0\n\tNL80211_RATE_INFO_HE_2XLTF                              = 0x1\n\tNL80211_RATE_INFO_HE_4XLTF                              = 0x2\n\tNL80211_RATE_INFO_HE_DCM                                = 0x10\n\tNL80211_RATE_INFO_HE_GI_0_8                             = 0x0\n\tNL80211_RATE_INFO_HE_GI_1_6                             = 0x1\n\tNL80211_RATE_INFO_HE_GI_3_2                             = 0x2\n\tNL80211_RATE_INFO_HE_GI                                 = 0xf\n\tNL80211_RATE_INFO_HE_MCS                                = 0xd\n\tNL80211_RATE_INFO_HE_NSS                                = 0xe\n\tNL80211_RATE_INFO_HE_RU_ALLOC_106                       = 0x2\n\tNL80211_RATE_INFO_HE_RU_ALLOC_242                       = 0x3\n\tNL80211_RATE_INFO_HE_RU_ALLOC_26                        = 0x0\n\tNL80211_RATE_INFO_HE_RU_ALLOC_2x996                     = 0x6\n\tNL80211_RATE_INFO_HE_RU_ALLOC_484                       = 0x4\n\tNL80211_RATE_INFO_HE_RU_ALLOC_52                        = 0x1\n\tNL80211_RATE_INFO_HE_RU_ALLOC_996                       = 0x5\n\tNL80211_RATE_INFO_HE_RU_ALLOC                           = 0x11\n\tNL80211_RATE_INFO_MAX                                   = 0x1d\n\tNL80211_RATE_INFO_MCS                                   = 0x2\n\tNL80211_RATE_INFO_SHORT_GI                              = 0x4\n\tNL80211_RATE_INFO_VHT_MCS                               = 0x6\n\tNL80211_RATE_INFO_VHT_NSS                               = 0x7\n\tNL80211_REGDOM_SET_BY_CORE                              = 0x0\n\tNL80211_REGDOM_SET_BY_COUNTRY_IE                        = 0x3\n\tNL80211_REGDOM_SET_BY_DRIVER                            = 0x2\n\tNL80211_REGDOM_SET_BY_USER                              = 0x1\n\tNL80211_REGDOM_TYPE_COUNTRY                             = 0x0\n\tNL80211_REGDOM_TYPE_CUSTOM_WORLD                        = 0x2\n\tNL80211_REGDOM_TYPE_INTERSECTION                        = 0x3\n\tNL80211_REGDOM_TYPE_WORLD                               = 0x1\n\tNL80211_REG_RULE_ATTR_MAX                               = 0x8\n\tNL80211_REKEY_DATA_AKM                                  = 0x4\n\tNL80211_REKEY_DATA_KCK                                  = 0x2\n\tNL80211_REKEY_DATA_KEK                                  = 0x1\n\tNL80211_REKEY_DATA_REPLAY_CTR                           = 0x3\n\tNL80211_REPLAY_CTR_LEN                                  = 0x8\n\tNL80211_RRF_AUTO_BW                                     = 0x800\n\tNL80211_RRF_DFS                                         = 0x10\n\tNL80211_RRF_GO_CONCURRENT                               = 0x1000\n\tNL80211_RRF_IR_CONCURRENT                               = 0x1000\n\tNL80211_RRF_NO_160MHZ                                   = 0x10000\n\tNL80211_RRF_NO_320MHZ                                   = 0x40000\n\tNL80211_RRF_NO_80MHZ                                    = 0x8000\n\tNL80211_RRF_NO_CCK                                      = 0x2\n\tNL80211_RRF_NO_HE                                       = 0x20000\n\tNL80211_RRF_NO_HT40                                     = 0x6000\n\tNL80211_RRF_NO_HT40MINUS                                = 0x2000\n\tNL80211_RRF_NO_HT40PLUS                                 = 0x4000\n\tNL80211_RRF_NO_IBSS                                     = 0x80\n\tNL80211_RRF_NO_INDOOR                                   = 0x4\n\tNL80211_RRF_NO_IR_ALL                                   = 0x180\n\tNL80211_RRF_NO_IR                                       = 0x80\n\tNL80211_RRF_NO_OFDM                                     = 0x1\n\tNL80211_RRF_NO_OUTDOOR                                  = 0x8\n\tNL80211_RRF_PASSIVE_SCAN                                = 0x80\n\tNL80211_RRF_PTMP_ONLY                                   = 0x40\n\tNL80211_RRF_PTP_ONLY                                    = 0x20\n\tNL80211_RXMGMT_FLAG_ANSWERED                            = 0x1\n\tNL80211_RXMGMT_FLAG_EXTERNAL_AUTH                       = 0x2\n\tNL80211_SAE_PWE_BOTH                                    = 0x3\n\tNL80211_SAE_PWE_HASH_TO_ELEMENT                         = 0x2\n\tNL80211_SAE_PWE_HUNT_AND_PECK                           = 0x1\n\tNL80211_SAE_PWE_UNSPECIFIED                             = 0x0\n\tNL80211_SAR_ATTR_MAX                                    = 0x2\n\tNL80211_SAR_ATTR_SPECS                                  = 0x2\n\tNL80211_SAR_ATTR_SPECS_END_FREQ                         = 0x4\n\tNL80211_SAR_ATTR_SPECS_MAX                              = 0x4\n\tNL80211_SAR_ATTR_SPECS_POWER                            = 0x1\n\tNL80211_SAR_ATTR_SPECS_RANGE_INDEX                      = 0x2\n\tNL80211_SAR_ATTR_SPECS_START_FREQ                       = 0x3\n\tNL80211_SAR_ATTR_TYPE                                   = 0x1\n\tNL80211_SAR_TYPE_POWER                                  = 0x0\n\tNL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP               = 0x20\n\tNL80211_SCAN_FLAG_AP                                    = 0x4\n\tNL80211_SCAN_FLAG_COLOCATED_6GHZ                        = 0x4000\n\tNL80211_SCAN_FLAG_FILS_MAX_CHANNEL_TIME                 = 0x10\n\tNL80211_SCAN_FLAG_FLUSH                                 = 0x2\n\tNL80211_SCAN_FLAG_FREQ_KHZ                              = 0x2000\n\tNL80211_SCAN_FLAG_HIGH_ACCURACY                         = 0x400\n\tNL80211_SCAN_FLAG_LOW_POWER                             = 0x200\n\tNL80211_SCAN_FLAG_LOW_PRIORITY                          = 0x1\n\tNL80211_SCAN_FLAG_LOW_SPAN                              = 0x100\n\tNL80211_SCAN_FLAG_MIN_PREQ_CONTENT                      = 0x1000\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION    = 0x80\n\tNL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE            = 0x40\n\tNL80211_SCAN_FLAG_RANDOM_ADDR                           = 0x8\n\tNL80211_SCAN_FLAG_RANDOM_SN                             = 0x800\n\tNL80211_SCAN_RSSI_THOLD_OFF                             = -0x12c\n\tNL80211_SCHED_SCAN_MATCH_ATTR_BSSID                     = 0x5\n\tNL80211_SCHED_SCAN_MATCH_ATTR_MAX                       = 0x6\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI             = 0x3\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST               = 0x4\n\tNL80211_SCHED_SCAN_MATCH_ATTR_RSSI                      = 0x2\n\tNL80211_SCHED_SCAN_MATCH_ATTR_SSID                      = 0x1\n\tNL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI                  = 0x6\n\tNL80211_SCHED_SCAN_PLAN_INTERVAL                        = 0x1\n\tNL80211_SCHED_SCAN_PLAN_ITERATIONS                      = 0x2\n\tNL80211_SCHED_SCAN_PLAN_MAX                             = 0x2\n\tNL80211_SMPS_DYNAMIC                                    = 0x2\n\tNL80211_SMPS_MAX                                        = 0x2\n\tNL80211_SMPS_OFF                                        = 0x0\n\tNL80211_SMPS_STATIC                                     = 0x1\n\tNL80211_STA_BSS_PARAM_BEACON_INTERVAL                   = 0x5\n\tNL80211_STA_BSS_PARAM_CTS_PROT                          = 0x1\n\tNL80211_STA_BSS_PARAM_DTIM_PERIOD                       = 0x4\n\tNL80211_STA_BSS_PARAM_MAX                               = 0x5\n\tNL80211_STA_BSS_PARAM_SHORT_PREAMBLE                    = 0x2\n\tNL80211_STA_BSS_PARAM_SHORT_SLOT_TIME                   = 0x3\n\tNL80211_STA_FLAG_ASSOCIATED                             = 0x7\n\tNL80211_STA_FLAG_AUTHENTICATED                          = 0x5\n\tNL80211_STA_FLAG_AUTHORIZED                             = 0x1\n\tNL80211_STA_FLAG_MAX                                    = 0x7\n\tNL80211_STA_FLAG_MAX_OLD_API                            = 0x6\n\tNL80211_STA_FLAG_MFP                                    = 0x4\n\tNL80211_STA_FLAG_SHORT_PREAMBLE                         = 0x2\n\tNL80211_STA_FLAG_TDLS_PEER                              = 0x6\n\tNL80211_STA_FLAG_WME                                    = 0x3\n\tNL80211_STA_INFO_ACK_SIGNAL_AVG                         = 0x23\n\tNL80211_STA_INFO_ACK_SIGNAL                             = 0x22\n\tNL80211_STA_INFO_AIRTIME_LINK_METRIC                    = 0x29\n\tNL80211_STA_INFO_AIRTIME_WEIGHT                         = 0x28\n\tNL80211_STA_INFO_ASSOC_AT_BOOTTIME                      = 0x2a\n\tNL80211_STA_INFO_BEACON_LOSS                            = 0x12\n\tNL80211_STA_INFO_BEACON_RX                              = 0x1d\n\tNL80211_STA_INFO_BEACON_SIGNAL_AVG                      = 0x1e\n\tNL80211_STA_INFO_BSS_PARAM                              = 0xf\n\tNL80211_STA_INFO_CHAIN_SIGNAL_AVG                       = 0x1a\n\tNL80211_STA_INFO_CHAIN_SIGNAL                           = 0x19\n\tNL80211_STA_INFO_CONNECTED_TIME                         = 0x10\n\tNL80211_STA_INFO_CONNECTED_TO_AS                        = 0x2b\n\tNL80211_STA_INFO_CONNECTED_TO_GATE                      = 0x26\n\tNL80211_STA_INFO_DATA_ACK_SIGNAL_AVG                    = 0x23\n\tNL80211_STA_INFO_EXPECTED_THROUGHPUT                    = 0x1b\n\tNL80211_STA_INFO_FCS_ERROR_COUNT                        = 0x25\n\tNL80211_STA_INFO_INACTIVE_TIME                          = 0x1\n\tNL80211_STA_INFO_LLID                                   = 0x4\n\tNL80211_STA_INFO_LOCAL_PM                               = 0x14\n\tNL80211_STA_INFO_MAX                                    = 0x2b\n\tNL80211_STA_INFO_NONPEER_PM                             = 0x16\n\tNL80211_STA_INFO_PAD                                    = 0x21\n\tNL80211_STA_INFO_PEER_PM                                = 0x15\n\tNL80211_STA_INFO_PLID                                   = 0x5\n\tNL80211_STA_INFO_PLINK_STATE                            = 0x6\n\tNL80211_STA_INFO_RX_BITRATE                             = 0xe\n\tNL80211_STA_INFO_RX_BYTES64                             = 0x17\n\tNL80211_STA_INFO_RX_BYTES                               = 0x2\n\tNL80211_STA_INFO_RX_DROP_MISC                           = 0x1c\n\tNL80211_STA_INFO_RX_DURATION                            = 0x20\n\tNL80211_STA_INFO_RX_MPDUS                               = 0x24\n\tNL80211_STA_INFO_RX_PACKETS                             = 0x9\n\tNL80211_STA_INFO_SIGNAL_AVG                             = 0xd\n\tNL80211_STA_INFO_SIGNAL                                 = 0x7\n\tNL80211_STA_INFO_STA_FLAGS                              = 0x11\n\tNL80211_STA_INFO_TID_STATS                              = 0x1f\n\tNL80211_STA_INFO_T_OFFSET                               = 0x13\n\tNL80211_STA_INFO_TX_BITRATE                             = 0x8\n\tNL80211_STA_INFO_TX_BYTES64                             = 0x18\n\tNL80211_STA_INFO_TX_BYTES                               = 0x3\n\tNL80211_STA_INFO_TX_DURATION                            = 0x27\n\tNL80211_STA_INFO_TX_FAILED                              = 0xc\n\tNL80211_STA_INFO_TX_PACKETS                             = 0xa\n\tNL80211_STA_INFO_TX_RETRIES                             = 0xb\n\tNL80211_STA_WME_MAX                                     = 0x2\n\tNL80211_STA_WME_MAX_SP                                  = 0x2\n\tNL80211_STA_WME_UAPSD_QUEUES                            = 0x1\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_BUSY                   = 0x5\n\tNL80211_SURVEY_INFO_CHANNEL_TIME                        = 0x4\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_EXT_BUSY               = 0x6\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_RX                     = 0x7\n\tNL80211_SURVEY_INFO_CHANNEL_TIME_TX                     = 0x8\n\tNL80211_SURVEY_INFO_FREQUENCY                           = 0x1\n\tNL80211_SURVEY_INFO_FREQUENCY_OFFSET                    = 0xc\n\tNL80211_SURVEY_INFO_IN_USE                              = 0x3\n\tNL80211_SURVEY_INFO_MAX                                 = 0xc\n\tNL80211_SURVEY_INFO_NOISE                               = 0x2\n\tNL80211_SURVEY_INFO_PAD                                 = 0xa\n\tNL80211_SURVEY_INFO_TIME_BSS_RX                         = 0xb\n\tNL80211_SURVEY_INFO_TIME_BUSY                           = 0x5\n\tNL80211_SURVEY_INFO_TIME                                = 0x4\n\tNL80211_SURVEY_INFO_TIME_EXT_BUSY                       = 0x6\n\tNL80211_SURVEY_INFO_TIME_RX                             = 0x7\n\tNL80211_SURVEY_INFO_TIME_SCAN                           = 0x9\n\tNL80211_SURVEY_INFO_TIME_TX                             = 0x8\n\tNL80211_TDLS_DISABLE_LINK                               = 0x4\n\tNL80211_TDLS_DISCOVERY_REQ                              = 0x0\n\tNL80211_TDLS_ENABLE_LINK                                = 0x3\n\tNL80211_TDLS_PEER_HE                                    = 0x8\n\tNL80211_TDLS_PEER_HT                                    = 0x1\n\tNL80211_TDLS_PEER_VHT                                   = 0x2\n\tNL80211_TDLS_PEER_WMM                                   = 0x4\n\tNL80211_TDLS_SETUP                                      = 0x1\n\tNL80211_TDLS_TEARDOWN                                   = 0x2\n\tNL80211_TID_CONFIG_ATTR_AMPDU_CTRL                      = 0x9\n\tNL80211_TID_CONFIG_ATTR_AMSDU_CTRL                      = 0xb\n\tNL80211_TID_CONFIG_ATTR_MAX                             = 0xd\n\tNL80211_TID_CONFIG_ATTR_NOACK                           = 0x6\n\tNL80211_TID_CONFIG_ATTR_OVERRIDE                        = 0x4\n\tNL80211_TID_CONFIG_ATTR_PAD                             = 0x1\n\tNL80211_TID_CONFIG_ATTR_PEER_SUPP                       = 0x3\n\tNL80211_TID_CONFIG_ATTR_RETRY_LONG                      = 0x8\n\tNL80211_TID_CONFIG_ATTR_RETRY_SHORT                     = 0x7\n\tNL80211_TID_CONFIG_ATTR_RTSCTS_CTRL                     = 0xa\n\tNL80211_TID_CONFIG_ATTR_TIDS                            = 0x5\n\tNL80211_TID_CONFIG_ATTR_TX_RATE                         = 0xd\n\tNL80211_TID_CONFIG_ATTR_TX_RATE_TYPE                    = 0xc\n\tNL80211_TID_CONFIG_ATTR_VIF_SUPP                        = 0x2\n\tNL80211_TID_CONFIG_DISABLE                              = 0x1\n\tNL80211_TID_CONFIG_ENABLE                               = 0x0\n\tNL80211_TID_STATS_MAX                                   = 0x6\n\tNL80211_TID_STATS_PAD                                   = 0x5\n\tNL80211_TID_STATS_RX_MSDU                               = 0x1\n\tNL80211_TID_STATS_TX_MSDU                               = 0x2\n\tNL80211_TID_STATS_TX_MSDU_FAILED                        = 0x4\n\tNL80211_TID_STATS_TX_MSDU_RETRIES                       = 0x3\n\tNL80211_TID_STATS_TXQ_STATS                             = 0x6\n\tNL80211_TIMEOUT_ASSOC                                   = 0x3\n\tNL80211_TIMEOUT_AUTH                                    = 0x2\n\tNL80211_TIMEOUT_SCAN                                    = 0x1\n\tNL80211_TIMEOUT_UNSPECIFIED                             = 0x0\n\tNL80211_TKIP_DATA_OFFSET_ENCR_KEY                       = 0x0\n\tNL80211_TKIP_DATA_OFFSET_RX_MIC_KEY                     = 0x18\n\tNL80211_TKIP_DATA_OFFSET_TX_MIC_KEY                     = 0x10\n\tNL80211_TX_POWER_AUTOMATIC                              = 0x0\n\tNL80211_TX_POWER_FIXED                                  = 0x2\n\tNL80211_TX_POWER_LIMITED                                = 0x1\n\tNL80211_TXQ_ATTR_AC                                     = 0x1\n\tNL80211_TXQ_ATTR_AIFS                                   = 0x5\n\tNL80211_TXQ_ATTR_CWMAX                                  = 0x4\n\tNL80211_TXQ_ATTR_CWMIN                                  = 0x3\n\tNL80211_TXQ_ATTR_MAX                                    = 0x5\n\tNL80211_TXQ_ATTR_QUEUE                                  = 0x1\n\tNL80211_TXQ_ATTR_TXOP                                   = 0x2\n\tNL80211_TXQ_Q_BE                                        = 0x2\n\tNL80211_TXQ_Q_BK                                        = 0x3\n\tNL80211_TXQ_Q_VI                                        = 0x1\n\tNL80211_TXQ_Q_VO                                        = 0x0\n\tNL80211_TXQ_STATS_BACKLOG_BYTES                         = 0x1\n\tNL80211_TXQ_STATS_BACKLOG_PACKETS                       = 0x2\n\tNL80211_TXQ_STATS_COLLISIONS                            = 0x8\n\tNL80211_TXQ_STATS_DROPS                                 = 0x4\n\tNL80211_TXQ_STATS_ECN_MARKS                             = 0x5\n\tNL80211_TXQ_STATS_FLOWS                                 = 0x3\n\tNL80211_TXQ_STATS_MAX                                   = 0xb\n\tNL80211_TXQ_STATS_MAX_FLOWS                             = 0xb\n\tNL80211_TXQ_STATS_OVERLIMIT                             = 0x6\n\tNL80211_TXQ_STATS_OVERMEMORY                            = 0x7\n\tNL80211_TXQ_STATS_TX_BYTES                              = 0x9\n\tNL80211_TXQ_STATS_TX_PACKETS                            = 0xa\n\tNL80211_TX_RATE_AUTOMATIC                               = 0x0\n\tNL80211_TXRATE_DEFAULT_GI                               = 0x0\n\tNL80211_TX_RATE_FIXED                                   = 0x2\n\tNL80211_TXRATE_FORCE_LGI                                = 0x2\n\tNL80211_TXRATE_FORCE_SGI                                = 0x1\n\tNL80211_TXRATE_GI                                       = 0x4\n\tNL80211_TXRATE_HE                                       = 0x5\n\tNL80211_TXRATE_HE_GI                                    = 0x6\n\tNL80211_TXRATE_HE_LTF                                   = 0x7\n\tNL80211_TXRATE_HT                                       = 0x2\n\tNL80211_TXRATE_LEGACY                                   = 0x1\n\tNL80211_TX_RATE_LIMITED                                 = 0x1\n\tNL80211_TXRATE_MAX                                      = 0x7\n\tNL80211_TXRATE_MCS                                      = 0x2\n\tNL80211_TXRATE_VHT                                      = 0x3\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_INT                 = 0x1\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX                 = 0x2\n\tNL80211_UNSOL_BCAST_PROBE_RESP_ATTR_TMPL                = 0x2\n\tNL80211_USER_REG_HINT_CELL_BASE                         = 0x1\n\tNL80211_USER_REG_HINT_INDOOR                            = 0x2\n\tNL80211_USER_REG_HINT_USER                              = 0x0\n\tNL80211_VENDOR_ID_IS_LINUX                              = 0x80000000\n\tNL80211_VHT_CAPABILITY_LEN                              = 0xc\n\tNL80211_VHT_NSS_MAX                                     = 0x8\n\tNL80211_WIPHY_NAME_MAXLEN                               = 0x40\n\tNL80211_WMMR_AIFSN                                      = 0x3\n\tNL80211_WMMR_CW_MAX                                     = 0x2\n\tNL80211_WMMR_CW_MIN                                     = 0x1\n\tNL80211_WMMR_MAX                                        = 0x4\n\tNL80211_WMMR_TXOP                                       = 0x4\n\tNL80211_WOWLAN_PKTPAT_MASK                              = 0x1\n\tNL80211_WOWLAN_PKTPAT_OFFSET                            = 0x3\n\tNL80211_WOWLAN_PKTPAT_PATTERN                           = 0x2\n\tNL80211_WOWLAN_TCP_DATA_INTERVAL                        = 0x9\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD                         = 0x6\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_SEQ                     = 0x7\n\tNL80211_WOWLAN_TCP_DATA_PAYLOAD_TOKEN                   = 0x8\n\tNL80211_WOWLAN_TCP_DST_IPV4                             = 0x2\n\tNL80211_WOWLAN_TCP_DST_MAC                              = 0x3\n\tNL80211_WOWLAN_TCP_DST_PORT                             = 0x5\n\tNL80211_WOWLAN_TCP_SRC_IPV4                             = 0x1\n\tNL80211_WOWLAN_TCP_SRC_PORT                             = 0x4\n\tNL80211_WOWLAN_TCP_WAKE_MASK                            = 0xb\n\tNL80211_WOWLAN_TCP_WAKE_PAYLOAD                         = 0xa\n\tNL80211_WOWLAN_TRIG_4WAY_HANDSHAKE                      = 0x8\n\tNL80211_WOWLAN_TRIG_ANY                                 = 0x1\n\tNL80211_WOWLAN_TRIG_DISCONNECT                          = 0x2\n\tNL80211_WOWLAN_TRIG_EAP_IDENT_REQUEST                   = 0x7\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_FAILURE                   = 0x6\n\tNL80211_WOWLAN_TRIG_GTK_REKEY_SUPPORTED                 = 0x5\n\tNL80211_WOWLAN_TRIG_MAGIC_PKT                           = 0x3\n\tNL80211_WOWLAN_TRIG_NET_DETECT                          = 0x12\n\tNL80211_WOWLAN_TRIG_NET_DETECT_RESULTS                  = 0x13\n\tNL80211_WOWLAN_TRIG_PKT_PATTERN                         = 0x4\n\tNL80211_WOWLAN_TRIG_RFKILL_RELEASE                      = 0x9\n\tNL80211_WOWLAN_TRIG_TCP_CONNECTION                      = 0xe\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211                    = 0xa\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_80211_LEN                = 0xb\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023                     = 0xc\n\tNL80211_WOWLAN_TRIG_WAKEUP_PKT_8023_LEN                 = 0xd\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST                 = 0x10\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH                    = 0xf\n\tNL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS             = 0x11\n\tNL80211_WPA_VERSION_1                                   = 0x1\n\tNL80211_WPA_VERSION_2                                   = 0x2\n\tNL80211_WPA_VERSION_3                                   = 0x4\n)\n\nconst (\n\tFRA_UNSPEC             = 0x0\n\tFRA_DST                = 0x1\n\tFRA_SRC                = 0x2\n\tFRA_IIFNAME            = 0x3\n\tFRA_GOTO               = 0x4\n\tFRA_UNUSED2            = 0x5\n\tFRA_PRIORITY           = 0x6\n\tFRA_UNUSED3            = 0x7\n\tFRA_UNUSED4            = 0x8\n\tFRA_UNUSED5            = 0x9\n\tFRA_FWMARK             = 0xa\n\tFRA_FLOW               = 0xb\n\tFRA_TUN_ID             = 0xc\n\tFRA_SUPPRESS_IFGROUP   = 0xd\n\tFRA_SUPPRESS_PREFIXLEN = 0xe\n\tFRA_TABLE              = 0xf\n\tFRA_FWMASK             = 0x10\n\tFRA_OIFNAME            = 0x11\n\tFRA_PAD                = 0x12\n\tFRA_L3MDEV             = 0x13\n\tFRA_UID_RANGE          = 0x14\n\tFRA_PROTOCOL           = 0x15\n\tFRA_IP_PROTO           = 0x16\n\tFRA_SPORT_RANGE        = 0x17\n\tFRA_DPORT_RANGE        = 0x18\n\tFR_ACT_UNSPEC          = 0x0\n\tFR_ACT_TO_TBL          = 0x1\n\tFR_ACT_GOTO            = 0x2\n\tFR_ACT_NOP             = 0x3\n\tFR_ACT_RES3            = 0x4\n\tFR_ACT_RES4            = 0x5\n\tFR_ACT_BLACKHOLE       = 0x6\n\tFR_ACT_UNREACHABLE     = 0x7\n\tFR_ACT_PROHIBIT        = 0x8\n)\n\nconst (\n\tAUDIT_NLGRP_NONE    = 0x0\n\tAUDIT_NLGRP_READLOG = 0x1\n)\n\nconst (\n\tTUN_F_CSUM    = 0x1\n\tTUN_F_TSO4    = 0x2\n\tTUN_F_TSO6    = 0x4\n\tTUN_F_TSO_ECN = 0x8\n\tTUN_F_UFO     = 0x10\n\tTUN_F_USO4    = 0x20\n\tTUN_F_USO6    = 0x40\n)\n\nconst (\n\tVIRTIO_NET_HDR_F_NEEDS_CSUM = 0x1\n\tVIRTIO_NET_HDR_F_DATA_VALID = 0x2\n\tVIRTIO_NET_HDR_F_RSC_INFO   = 0x4\n)\n\nconst (\n\tVIRTIO_NET_HDR_GSO_NONE   = 0x0\n\tVIRTIO_NET_HDR_GSO_TCPV4  = 0x1\n\tVIRTIO_NET_HDR_GSO_UDP    = 0x3\n\tVIRTIO_NET_HDR_GSO_TCPV6  = 0x4\n\tVIRTIO_NET_HDR_GSO_UDP_L4 = 0x5\n\tVIRTIO_NET_HDR_GSO_ECN    = 0x80\n)\n\ntype SchedAttr struct {\n\tSize     uint32\n\tPolicy   uint32\n\tFlags    uint64\n\tNice     int32\n\tPriority uint32\n\tRuntime  uint64\n\tDeadline uint64\n\tPeriod   uint64\n\tUtil_min uint32\n\tUtil_max uint32\n}\n\nconst SizeofSchedAttr = 0x38\n\ntype Cachestat_t struct {\n\tCache            uint64\n\tDirty            uint64\n\tWriteback        uint64\n\tEvicted          uint64\n\tRecently_evicted uint64\n}\ntype CachestatRange struct {\n\tOff uint64\n\tLen uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_386.go",
    "content": "// cgo -godefs -objdir=/tmp/386/cgo -- -Wall -Werror -static -I/tmp/386/include -m32 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tIno     uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [1]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tEbx      int32\n\tEcx      int32\n\tEdx      int32\n\tEsi      int32\n\tEdi      int32\n\tEbp      int32\n\tEax      int32\n\tXds      int32\n\tXes      int32\n\tXfs      int32\n\tXgs      int32\n\tOrig_eax int32\n\tEip      int32\n\tXcs      int32\n\tEflags   int32\n\tEsp      int32\n\tXss      int32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_amd64.go",
    "content": "// cgo -godefs -objdir=/tmp/amd64/cgo -- -Wall -Werror -static -I/tmp/amd64/include -m64 linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tR15      uint64\n\tR14      uint64\n\tR13      uint64\n\tR12      uint64\n\tRbp      uint64\n\tRbx      uint64\n\tR11      uint64\n\tR10      uint64\n\tR9       uint64\n\tR8       uint64\n\tRax      uint64\n\tRcx      uint64\n\tRdx      uint64\n\tRsi      uint64\n\tRdi      uint64\n\tOrig_rax uint64\n\tRip      uint64\n\tCs       uint64\n\tEflags   uint64\n\tRsp      uint64\n\tSs       uint64\n\tFs_base  uint64\n\tGs_base  uint64\n\tDs       uint64\n\tEs       uint64\n\tFs       uint64\n\tGs       uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_arm.go",
    "content": "// cgo -godefs -objdir=/tmp/arm/cgo -- -Wall -Werror -static -I/tmp/arm/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\t_       uint32\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [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\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tUregs [18]uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800470a1\n\tPPS_SETPARAMS = 0x400470a2\n\tPPS_GETCAP    = 0x800470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint16\n\t_    [2]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tAtime_high uint32\n\tDtime      uint32\n\tDtime_high uint32\n\tCtime      uint32\n\tCtime_high uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_arm64.go",
    "content": "// cgo -godefs -objdir=/tmp/arm64/cgo -- -Wall -Werror -static -I/tmp/arm64/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [31]uint64\n\tSp     uint64\n\tPc     uint64\n\tPstate uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_loong64.go",
    "content": "// cgo -godefs -objdir=/tmp/loong64/cgo -- -Wall -Werror -static -I/tmp/loong64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build loong64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tOrig_a0  uint64\n\tEra      uint64\n\tBadv     uint64\n\tReserved [10]uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_mips.go",
    "content": "// cgo -godefs -objdir=/tmp/mips/cgo -- -Wall -Werror -static -I/tmp/mips/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_mips64.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64/cgo -- -Wall -Werror -static -I/tmp/mips64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_mips64le.go",
    "content": "// cgo -godefs -objdir=/tmp/mips64le/cgo -- -Wall -Werror -static -I/tmp/mips64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]uint32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]uint32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize uint32\n\tPad4    uint32\n\tBlocks  int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tFrsize  int64\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFlags   int64\n\tSpare   [5]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_mipsle.go",
    "content": "// cgo -godefs -objdir=/tmp/mipsle/cgo -- -Wall -Werror -static -I/tmp/mipsle/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mipsle && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint32\n\tPad1    [3]int32\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint32\n\tPad2    [3]int32\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tPad4    int32\n\tBlocks  int64\n\tPad5    [14]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tRegs     [32]uint64\n\tLo       uint64\n\tHi       uint64\n\tEpc      uint64\n\tBadvaddr uint64\n\tStatus   uint64\n\tCause    uint64\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]int8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]int8\n\tFpack  [6]int8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\tPadFd  int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x80\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x3\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tCode  int32\n\tErrno int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [23]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tFrsize  int32\n\t_       [4]byte\n\tBlocks  uint64\n\tBfree   uint64\n\tFiles   uint64\n\tFfree   uint64\n\tBavail  uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFlags   int32\n\tSpare   [5]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x80\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint32\n\t_    uint32\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tSegsz      uint32\n\tAtime      uint32\n\tDtime      uint32\n\tCtime      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\tAtime_high uint16\n\tDtime_high uint16\n\tCtime_high uint16\n\t_          uint16\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_ppc.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc/cgo -- -Wall -Werror -static -I/tmp/ppc/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x4\n\tSizeofLong = 0x4\n)\n\ntype (\n\t_C_long int32\n)\n\ntype Timespec struct {\n\tSec  int32\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int32\n\tFreq      int32\n\tMaxerror  int32\n\tEsterror  int32\n\tStatus    int32\n\tConstant  int32\n\tPrecision int32\n\tTolerance int32\n\tTime      Timeval\n\tTick      int32\n\tPpsfreq   int32\n\tJitter    int32\n\tShift     int32\n\tStabil    int32\n\tJitcnt    int32\n\tCalcnt    int32\n\tErrcnt    int32\n\tStbcnt    int32\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int32\n\ntype Tms struct {\n\tUtime  int32\n\tStime  int32\n\tCutime int32\n\tCstime int32\n}\n\ntype Utimbuf struct {\n\tActime  int32\n\tModtime int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\t_       [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\t_       uint32\n\t_       uint32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\t_      [4]byte\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint32\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [16]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x58\n\tSizeofIovec           = 0x8\n\tSizeofMsghdr          = 0x1c\n\tSizeofCmsghdr         = 0xc\n)\n\nconst (\n\tSizeofSockFprog = 0x8\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint32\n\tNip       uint32\n\tMsr       uint32\n\tOrig_gpr3 uint32\n\tCtr       uint32\n\tLink      uint32\n\tXer       uint32\n\tCcr       uint32\n\tMq        uint32\n\tTrap      uint32\n\tDar       uint32\n\tDsisr     uint32\n\tResult    uint32\n}\n\ntype FdSet struct {\n\tBits [32]int32\n}\n\ntype Sysinfo_t struct {\n\tUptime    int32\n\tLoads     [3]uint32\n\tTotalram  uint32\n\tFreeram   uint32\n\tSharedram uint32\n\tBufferram uint32\n\tTotalswap uint32\n\tFreeswap  uint32\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint32\n\tFreehigh  uint32\n\tUnit      uint32\n\t_         [8]uint8\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint32\n\tFname  [6]uint8\n\tFpack  [6]uint8\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [32]uint32\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     [116]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\t_                         [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\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\t_                         [4]byte\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint32\n\nconst (\n\t_NCPUBITS = 0x20\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [122]byte\n\t_      uint32\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint32\n}\n\ntype Statfs_t struct {\n\tType    int32\n\tBsize   int32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int32\n\tFrsize  int32\n\tFlags   int32\n\tSpare   [4]int32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint32\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n}\n\nconst (\n\tSizeofTpacketHdr = 0x18\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int32\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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            uint32\n\tRdevice          uint32\n\tOffset           int32\n\tEncrypt_type     int32\n\tEncrypt_key_size int32\n\tFlags            int32\n\tName             [64]uint8\n\tEncrypt_key      [32]uint8\n\tInit             [2]uint32\n\tReserved         [4]uint8\n}\n\ntype TIPCSubscr struct {\n\tSeq     TIPCServiceRange\n\tTimeout uint32\n\tFilter  uint32\n\tHandle  [8]uint8\n}\n\ntype TIPCSIOCLNReq struct {\n\tPeer     uint32\n\tId       uint32\n\tLinkname [68]uint8\n}\n\ntype TIPCSIOCNodeIDReq struct {\n\tPeer uint32\n\tId   [16]uint8\n}\n\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400470a1\n\tPPS_SETPARAMS = 0x800470a2\n\tPPS_GETCAP    = 0x400470a3\n\tPPS_FETCH     = 0xc00470a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm       SysvIpcPerm\n\tAtime_high uint32\n\tAtime      uint32\n\tDtime_high uint32\n\tDtime      uint32\n\tCtime_high uint32\n\tCtime      uint32\n\t_          uint32\n\tSegsz      uint32\n\tCpid       int32\n\tLpid       int32\n\tNattch     uint32\n\t_          uint32\n\t_          uint32\n\t_          [4]byte\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_ppc64.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64/cgo -- -Wall -Werror -static -I/tmp/ppc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_ppc64le.go",
    "content": "// cgo -godefs -objdir=/tmp/ppc64le/cgo -- -Wall -Werror -static -I/tmp/ppc64le/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64le && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tGpr       [32]uint64\n\tNip       uint64\n\tMsr       uint64\n\tOrig_gpr3 uint64\n\tCtr       uint64\n\tLink      uint64\n\tXer       uint64\n\tCcr       uint64\n\tSofte     uint64\n\tTrap      uint64\n\tDar       uint64\n\tDsisr     uint64\n\tResult    uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [19]uint8\n\tLine   uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\tSeq  uint32\n\t_    uint32\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_riscv64.go",
    "content": "// cgo -godefs -objdir=/tmp/riscv64/cgo -- -Wall -Werror -static -I/tmp/riscv64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint64\n\tSize    int64\n\tBlksize int32\n\t_       int32\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       [2]int32\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]uint8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPc  uint64\n\tRa  uint64\n\tSp  uint64\n\tGp  uint64\n\tTp  uint64\n\tT0  uint64\n\tT1  uint64\n\tT2  uint64\n\tS0  uint64\n\tS1  uint64\n\tA0  uint64\n\tA1  uint64\n\tA2  uint64\n\tA3  uint64\n\tA4  uint64\n\tA5  uint64\n\tA6  uint64\n\tA7  uint64\n\tS2  uint64\n\tS3  uint64\n\tS4  uint64\n\tS5  uint64\n\tS6  uint64\n\tS7  uint64\n\tS8  uint64\n\tS9  uint64\n\tS10 uint64\n\tS11 uint64\n\tT3  uint64\n\tT4  uint64\n\tT5  uint64\n\tT6  uint64\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]uint8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]uint8\n\tFpack  [6]uint8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]uint8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x1\n\tCBitFieldMaskBit1  = 0x2\n\tCBitFieldMaskBit2  = 0x4\n\tCBitFieldMaskBit3  = 0x8\n\tCBitFieldMaskBit4  = 0x10\n\tCBitFieldMaskBit5  = 0x20\n\tCBitFieldMaskBit6  = 0x40\n\tCBitFieldMaskBit7  = 0x80\n\tCBitFieldMaskBit8  = 0x100\n\tCBitFieldMaskBit9  = 0x200\n\tCBitFieldMaskBit10 = 0x400\n\tCBitFieldMaskBit11 = 0x800\n\tCBitFieldMaskBit12 = 0x1000\n\tCBitFieldMaskBit13 = 0x2000\n\tCBitFieldMaskBit14 = 0x4000\n\tCBitFieldMaskBit15 = 0x8000\n\tCBitFieldMaskBit16 = 0x10000\n\tCBitFieldMaskBit17 = 0x20000\n\tCBitFieldMaskBit18 = 0x40000\n\tCBitFieldMaskBit19 = 0x80000\n\tCBitFieldMaskBit20 = 0x100000\n\tCBitFieldMaskBit21 = 0x200000\n\tCBitFieldMaskBit22 = 0x400000\n\tCBitFieldMaskBit23 = 0x800000\n\tCBitFieldMaskBit24 = 0x1000000\n\tCBitFieldMaskBit25 = 0x2000000\n\tCBitFieldMaskBit26 = 0x4000000\n\tCBitFieldMaskBit27 = 0x8000000\n\tCBitFieldMaskBit28 = 0x10000000\n\tCBitFieldMaskBit29 = 0x20000000\n\tCBitFieldMaskBit30 = 0x40000000\n\tCBitFieldMaskBit31 = 0x80000000\n\tCBitFieldMaskBit32 = 0x100000000\n\tCBitFieldMaskBit33 = 0x200000000\n\tCBitFieldMaskBit34 = 0x400000000\n\tCBitFieldMaskBit35 = 0x800000000\n\tCBitFieldMaskBit36 = 0x1000000000\n\tCBitFieldMaskBit37 = 0x2000000000\n\tCBitFieldMaskBit38 = 0x4000000000\n\tCBitFieldMaskBit39 = 0x8000000000\n\tCBitFieldMaskBit40 = 0x10000000000\n\tCBitFieldMaskBit41 = 0x20000000000\n\tCBitFieldMaskBit42 = 0x40000000000\n\tCBitFieldMaskBit43 = 0x80000000000\n\tCBitFieldMaskBit44 = 0x100000000000\n\tCBitFieldMaskBit45 = 0x200000000000\n\tCBitFieldMaskBit46 = 0x400000000000\n\tCBitFieldMaskBit47 = 0x800000000000\n\tCBitFieldMaskBit48 = 0x1000000000000\n\tCBitFieldMaskBit49 = 0x2000000000000\n\tCBitFieldMaskBit50 = 0x4000000000000\n\tCBitFieldMaskBit51 = 0x8000000000000\n\tCBitFieldMaskBit52 = 0x10000000000000\n\tCBitFieldMaskBit53 = 0x20000000000000\n\tCBitFieldMaskBit54 = 0x40000000000000\n\tCBitFieldMaskBit55 = 0x80000000000000\n\tCBitFieldMaskBit56 = 0x100000000000000\n\tCBitFieldMaskBit57 = 0x200000000000000\n\tCBitFieldMaskBit58 = 0x400000000000000\n\tCBitFieldMaskBit59 = 0x800000000000000\n\tCBitFieldMaskBit60 = 0x1000000000000000\n\tCBitFieldMaskBit61 = 0x2000000000000000\n\tCBitFieldMaskBit62 = 0x4000000000000000\n\tCBitFieldMaskBit63 = 0x8000000000000000\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    [0]uint8\n\tSeq  uint16\n\t_    uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n\ntype RISCVHWProbePairs struct {\n\tKey   int64\n\tValue uint64\n}\n\nconst (\n\tRISCV_HWPROBE_KEY_MVENDORID          = 0x0\n\tRISCV_HWPROBE_KEY_MARCHID            = 0x1\n\tRISCV_HWPROBE_KEY_MIMPID             = 0x2\n\tRISCV_HWPROBE_KEY_BASE_BEHAVIOR      = 0x3\n\tRISCV_HWPROBE_BASE_BEHAVIOR_IMA      = 0x1\n\tRISCV_HWPROBE_KEY_IMA_EXT_0          = 0x4\n\tRISCV_HWPROBE_IMA_FD                 = 0x1\n\tRISCV_HWPROBE_IMA_C                  = 0x2\n\tRISCV_HWPROBE_IMA_V                  = 0x4\n\tRISCV_HWPROBE_EXT_ZBA                = 0x8\n\tRISCV_HWPROBE_EXT_ZBB                = 0x10\n\tRISCV_HWPROBE_EXT_ZBS                = 0x20\n\tRISCV_HWPROBE_KEY_CPUPERF_0          = 0x5\n\tRISCV_HWPROBE_MISALIGNED_UNKNOWN     = 0x0\n\tRISCV_HWPROBE_MISALIGNED_EMULATED    = 0x1\n\tRISCV_HWPROBE_MISALIGNED_SLOW        = 0x2\n\tRISCV_HWPROBE_MISALIGNED_FAST        = 0x3\n\tRISCV_HWPROBE_MISALIGNED_UNSUPPORTED = 0x4\n\tRISCV_HWPROBE_MISALIGNED_MASK        = 0x7\n)\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_s390x.go",
    "content": "// cgo -godefs -objdir=/tmp/s390x/cgo -- -Wall -Werror -static -I/tmp/s390x/include -fsigned-char linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build s390x && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      [4]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x6\n\tFADV_NOREUSE  = 0x7\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tPsw                      PtracePsw\n\tGprs                     [16]uint64\n\tAcrs                     [16]uint32\n\tOrig_gpr2                uint64\n\tFp_regs                  PtraceFpregs\n\tPer_info                 PtracePer\n\tIeee_instruction_pointer uint64\n}\n\ntype PtracePsw struct {\n\tMask uint64\n\tAddr uint64\n}\n\ntype PtraceFpregs struct {\n\tFpc  uint32\n\tFprs [16]float64\n}\n\ntype PtracePer struct {\n\tControl_regs  [3]uint64\n\t_             [8]byte\n\tStarting_addr uint64\n\tEnding_addr   uint64\n\tPerc_atmid    uint16\n\tAddress       uint64\n\tAccess_id     uint8\n\t_             [7]byte\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x80000\n)\n\nconst (\n\tPOLLRDHUP = 0x2000\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x0\n\tSIG_UNBLOCK = 0x1\n\tSIG_SETMASK = 0x2\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint32\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen uint32\n\tFrsize  uint32\n\tFlags   uint32\n\tSpare   [4]uint32\n\t_       [4]byte\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x1269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x800870a1\n\tPPS_SETPARAMS = 0x400870a2\n\tPPS_GETCAP    = 0x800870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x800\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tSegsz  uint64\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_linux_sparc64.go",
    "content": "// cgo -godefs -objdir=/tmp/sparc64/cgo -- -Wall -Werror -static -I/tmp/sparc64/include linux/types.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build sparc64 && linux\n\npackage unix\n\nconst (\n\tSizeofPtr  = 0x8\n\tSizeofLong = 0x8\n)\n\ntype (\n\t_C_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Timex struct {\n\tModes     uint32\n\tOffset    int64\n\tFreq      int64\n\tMaxerror  int64\n\tEsterror  int64\n\tStatus    int32\n\tConstant  int64\n\tPrecision int64\n\tTolerance int64\n\tTime      Timeval\n\tTick      int64\n\tPpsfreq   int64\n\tJitter    int64\n\tShift     int32\n\tStabil    int64\n\tJitcnt    int64\n\tCalcnt    int64\n\tErrcnt    int64\n\tStbcnt    int64\n\tTai       int32\n\t_         [44]byte\n}\n\ntype Time_t int64\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Stat_t struct {\n\tDev     uint64\n\t_       uint16\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\t_       uint16\n\tSize    int64\n\tBlksize int64\n\tBlocks  int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\t_       uint64\n\t_       uint64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]int8\n\t_      [5]byte\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\t_      int16\n\t_      [2]byte\n}\n\ntype DmNameList struct {\n\tDev  uint64\n\tNext uint32\n\tName [0]byte\n\t_    [4]byte\n}\n\nconst (\n\tFADV_DONTNEED = 0x4\n\tFADV_NOREUSE  = 0x5\n)\n\ntype RawSockaddrNFCLLCP struct {\n\tSa_family        uint16\n\tDev_idx          uint32\n\tTarget_idx       uint32\n\tNfc_protocol     uint32\n\tDsap             uint8\n\tSsap             uint8\n\tService_name     [63]uint8\n\tService_name_len uint64\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [96]int8\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint64\n\tControl    *byte\n\tControllen uint64\n\tFlags      int32\n\t_          [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint64\n\tLevel int32\n\tType  int32\n}\n\ntype ifreq struct {\n\tIfrn [16]byte\n\tIfru [24]byte\n}\n\nconst (\n\tSizeofSockaddrNFCLLCP = 0x60\n\tSizeofIovec           = 0x10\n\tSizeofMsghdr          = 0x38\n\tSizeofCmsghdr         = 0x10\n)\n\nconst (\n\tSizeofSockFprog = 0x10\n)\n\ntype PtraceRegs struct {\n\tRegs   [16]uint64\n\tTstate uint64\n\tTpc    uint64\n\tTnpc   uint64\n\tY      uint32\n\tMagic  uint32\n}\n\ntype FdSet struct {\n\tBits [16]int64\n}\n\ntype Sysinfo_t struct {\n\tUptime    int64\n\tLoads     [3]uint64\n\tTotalram  uint64\n\tFreeram   uint64\n\tSharedram uint64\n\tBufferram uint64\n\tTotalswap uint64\n\tFreeswap  uint64\n\tProcs     uint16\n\tPad       uint16\n\tTotalhigh uint64\n\tFreehigh  uint64\n\tUnit      uint32\n\t_         [0]int8\n\t_         [4]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int32\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\ntype EpollEvent struct {\n\tEvents uint32\n\t_      int32\n\tFd     int32\n\tPad    int32\n}\n\nconst (\n\tOPEN_TREE_CLOEXEC = 0x400000\n)\n\nconst (\n\tPOLLRDHUP = 0x800\n)\n\ntype Sigset_t struct {\n\tVal [16]uint64\n}\n\nconst _C__NSIG = 0x41\n\nconst (\n\tSIG_BLOCK   = 0x1\n\tSIG_UNBLOCK = 0x2\n\tSIG_SETMASK = 0x4\n)\n\ntype Siginfo struct {\n\tSigno int32\n\tErrno int32\n\tCode  int32\n\t_     int32\n\t_     [112]byte\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tLine   uint8\n\tCc     [19]uint8\n\tIspeed uint32\n\tOspeed uint32\n}\n\ntype Taskstats struct {\n\tVersion                   uint16\n\tAc_exitcode               uint32\n\tAc_flag                   uint8\n\tAc_nice                   uint8\n\tCpu_count                 uint64\n\tCpu_delay_total           uint64\n\tBlkio_count               uint64\n\tBlkio_delay_total         uint64\n\tSwapin_count              uint64\n\tSwapin_delay_total        uint64\n\tCpu_run_real_total        uint64\n\tCpu_run_virtual_total     uint64\n\tAc_comm                   [32]int8\n\tAc_sched                  uint8\n\tAc_pad                    [3]uint8\n\t_                         [4]byte\n\tAc_uid                    uint32\n\tAc_gid                    uint32\n\tAc_pid                    uint32\n\tAc_ppid                   uint32\n\tAc_btime                  uint32\n\tAc_etime                  uint64\n\tAc_utime                  uint64\n\tAc_stime                  uint64\n\tAc_minflt                 uint64\n\tAc_majflt                 uint64\n\tCoremem                   uint64\n\tVirtmem                   uint64\n\tHiwater_rss               uint64\n\tHiwater_vm                uint64\n\tRead_char                 uint64\n\tWrite_char                uint64\n\tRead_syscalls             uint64\n\tWrite_syscalls            uint64\n\tRead_bytes                uint64\n\tWrite_bytes               uint64\n\tCancelled_write_bytes     uint64\n\tNvcsw                     uint64\n\tNivcsw                    uint64\n\tAc_utimescaled            uint64\n\tAc_stimescaled            uint64\n\tCpu_scaled_run_real_total uint64\n\tFreepages_count           uint64\n\tFreepages_delay_total     uint64\n\tThrashing_count           uint64\n\tThrashing_delay_total     uint64\n\tAc_btime64                uint64\n\tCompact_count             uint64\n\tCompact_delay_total       uint64\n\tAc_tgid                   uint32\n\tAc_tgetime                uint64\n\tAc_exe_dev                uint64\n\tAc_exe_inode              uint64\n\tWpcopy_count              uint64\n\tWpcopy_delay_total        uint64\n\tIrq_count                 uint64\n\tIrq_delay_total           uint64\n}\n\ntype cpuMask uint64\n\nconst (\n\t_NCPUBITS = 0x40\n)\n\nconst (\n\tCBitFieldMaskBit0  = 0x8000000000000000\n\tCBitFieldMaskBit1  = 0x4000000000000000\n\tCBitFieldMaskBit2  = 0x2000000000000000\n\tCBitFieldMaskBit3  = 0x1000000000000000\n\tCBitFieldMaskBit4  = 0x800000000000000\n\tCBitFieldMaskBit5  = 0x400000000000000\n\tCBitFieldMaskBit6  = 0x200000000000000\n\tCBitFieldMaskBit7  = 0x100000000000000\n\tCBitFieldMaskBit8  = 0x80000000000000\n\tCBitFieldMaskBit9  = 0x40000000000000\n\tCBitFieldMaskBit10 = 0x20000000000000\n\tCBitFieldMaskBit11 = 0x10000000000000\n\tCBitFieldMaskBit12 = 0x8000000000000\n\tCBitFieldMaskBit13 = 0x4000000000000\n\tCBitFieldMaskBit14 = 0x2000000000000\n\tCBitFieldMaskBit15 = 0x1000000000000\n\tCBitFieldMaskBit16 = 0x800000000000\n\tCBitFieldMaskBit17 = 0x400000000000\n\tCBitFieldMaskBit18 = 0x200000000000\n\tCBitFieldMaskBit19 = 0x100000000000\n\tCBitFieldMaskBit20 = 0x80000000000\n\tCBitFieldMaskBit21 = 0x40000000000\n\tCBitFieldMaskBit22 = 0x20000000000\n\tCBitFieldMaskBit23 = 0x10000000000\n\tCBitFieldMaskBit24 = 0x8000000000\n\tCBitFieldMaskBit25 = 0x4000000000\n\tCBitFieldMaskBit26 = 0x2000000000\n\tCBitFieldMaskBit27 = 0x1000000000\n\tCBitFieldMaskBit28 = 0x800000000\n\tCBitFieldMaskBit29 = 0x400000000\n\tCBitFieldMaskBit30 = 0x200000000\n\tCBitFieldMaskBit31 = 0x100000000\n\tCBitFieldMaskBit32 = 0x80000000\n\tCBitFieldMaskBit33 = 0x40000000\n\tCBitFieldMaskBit34 = 0x20000000\n\tCBitFieldMaskBit35 = 0x10000000\n\tCBitFieldMaskBit36 = 0x8000000\n\tCBitFieldMaskBit37 = 0x4000000\n\tCBitFieldMaskBit38 = 0x2000000\n\tCBitFieldMaskBit39 = 0x1000000\n\tCBitFieldMaskBit40 = 0x800000\n\tCBitFieldMaskBit41 = 0x400000\n\tCBitFieldMaskBit42 = 0x200000\n\tCBitFieldMaskBit43 = 0x100000\n\tCBitFieldMaskBit44 = 0x80000\n\tCBitFieldMaskBit45 = 0x40000\n\tCBitFieldMaskBit46 = 0x20000\n\tCBitFieldMaskBit47 = 0x10000\n\tCBitFieldMaskBit48 = 0x8000\n\tCBitFieldMaskBit49 = 0x4000\n\tCBitFieldMaskBit50 = 0x2000\n\tCBitFieldMaskBit51 = 0x1000\n\tCBitFieldMaskBit52 = 0x800\n\tCBitFieldMaskBit53 = 0x400\n\tCBitFieldMaskBit54 = 0x200\n\tCBitFieldMaskBit55 = 0x100\n\tCBitFieldMaskBit56 = 0x80\n\tCBitFieldMaskBit57 = 0x40\n\tCBitFieldMaskBit58 = 0x20\n\tCBitFieldMaskBit59 = 0x10\n\tCBitFieldMaskBit60 = 0x8\n\tCBitFieldMaskBit61 = 0x4\n\tCBitFieldMaskBit62 = 0x2\n\tCBitFieldMaskBit63 = 0x1\n)\n\ntype SockaddrStorage struct {\n\tFamily uint16\n\tData   [118]byte\n\t_      uint64\n}\n\ntype HDGeometry struct {\n\tHeads     uint8\n\tSectors   uint8\n\tCylinders uint16\n\tStart     uint64\n}\n\ntype Statfs_t struct {\n\tType    int64\n\tBsize   int64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint64\n\tFfree   uint64\n\tFsid    Fsid\n\tNamelen int64\n\tFrsize  int64\n\tFlags   int64\n\tSpare   [4]int64\n}\n\ntype TpacketHdr struct {\n\tStatus  uint64\n\tLen     uint32\n\tSnaplen uint32\n\tMac     uint16\n\tNet     uint16\n\tSec     uint32\n\tUsec    uint32\n\t_       [4]byte\n}\n\nconst (\n\tSizeofTpacketHdr = 0x20\n)\n\ntype RTCPLLInfo struct {\n\tCtrl    int32\n\tValue   int32\n\tMax     int32\n\tMin     int32\n\tPosmult int32\n\tNegmult int32\n\tClock   int64\n}\n\ntype BlkpgPartition struct {\n\tStart   int64\n\tLength  int64\n\tPno     int32\n\tDevname [64]uint8\n\tVolname [64]uint8\n\t_       [4]byte\n}\n\nconst (\n\tBLKPG = 0x20001269\n)\n\ntype 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\ntype PPSKInfo struct {\n\tAssert_sequence uint32\n\tClear_sequence  uint32\n\tAssert_tu       PPSKTime\n\tClear_tu        PPSKTime\n\tCurrent_mode    int32\n\t_               [4]byte\n}\n\nconst (\n\tPPS_GETPARAMS = 0x400870a1\n\tPPS_SETPARAMS = 0x800870a2\n\tPPS_GETCAP    = 0x400870a3\n\tPPS_FETCH     = 0xc00870a4\n)\n\nconst (\n\tPIDFD_NONBLOCK = 0x4000\n)\n\ntype SysvIpcPerm struct {\n\tKey  int32\n\tUid  uint32\n\tGid  uint32\n\tCuid uint32\n\tCgid uint32\n\tMode uint32\n\t_    uint16\n\tSeq  uint16\n\t_    uint64\n\t_    uint64\n}\ntype SysvShmDesc struct {\n\tPerm   SysvIpcPerm\n\tAtime  int64\n\tDtime  int64\n\tCtime  int64\n\tSegsz  uint64\n\tCpid   int32\n\tLpid   int32\n\tNattch uint64\n\t_      uint64\n\t_      uint64\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_netbsd_386.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter uint32\n\tFlags  uint32\n\tFflags uint32\n\tData   int64\n\tUdata  int32\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x84\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n\tPad_cgo_1 [4]byte\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_netbsd_amd64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_netbsd_arm.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec       int64\n\tNsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint32\n\tBsize       uint32\n\tFrsize      uint32\n\tIosize      uint32\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint32\n\tNamemax     uint32\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     int32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint32\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tData      int64\n\tUdata     int32\n\tPad_cgo_0 [4]byte\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [2]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_netbsd_arm64.go",
    "content": "// cgo -godefs types_netbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && netbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec       int64\n\tUsec      int32\n\tPad_cgo_0 [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tMode    uint32\n\t_       [4]byte\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\t_       [4]byte\n\tRdev    uint64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize uint32\n\tFlags   uint32\n\tGen     uint32\n\tSpare   [2]uint32\n\t_       [4]byte\n}\n\ntype Statfs_t [0]byte\n\ntype Statvfs_t struct {\n\tFlag        uint64\n\tBsize       uint64\n\tFrsize      uint64\n\tIosize      uint64\n\tBlocks      uint64\n\tBfree       uint64\n\tBavail      uint64\n\tBresvd      uint64\n\tFiles       uint64\n\tFfree       uint64\n\tFavail      uint64\n\tFresvd      uint64\n\tSyncreads   uint64\n\tSyncwrites  uint64\n\tAsyncreads  uint64\n\tAsyncwrites uint64\n\tFsidx       Fsid\n\tFsid        uint64\n\tNamemax     uint64\n\tOwner       uint32\n\tSpare       [4]uint32\n\tFstypename  [32]byte\n\tMntonname   [1024]byte\n\tMntfromname [1024]byte\n\t_           [4]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno    uint64\n\tReclen    uint16\n\tNamlen    uint16\n\tType      uint8\n\tName      [512]int8\n\tPad_cgo_0 [3]byte\n}\n\ntype Fsid struct {\n\tX__fsid_val [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\nconst (\n\tST_WAIT   = 0x1\n\tST_NOWAIT = 0x2\n)\n\nconst (\n\tFADV_NORMAL     = 0x0\n\tFADV_RANDOM     = 0x1\n\tFADV_SEQUENTIAL = 0x2\n\tFADV_WILLNEED   = 0x3\n\tFADV_DONTNEED   = 0x4\n\tFADV_NOREUSE    = 0x5\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [12]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tPad_cgo_0  [4]byte\n\tIov        *Iovec\n\tIovlen     int32\n\tPad_cgo_1  [4]byte\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x14\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent     uint64\n\tFilter    uint32\n\tFlags     uint32\n\tFflags    uint32\n\tPad_cgo_0 [4]byte\n\tData      int64\n\tUdata     int64\n}\n\ntype FdSet struct {\n\tBits [8]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0x98\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x18\n\tSizeofRtMsghdr         = 0x78\n\tSizeofRtMetrics        = 0x50\n)\n\ntype IfMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tData      IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tPad_cgo_0  [1]byte\n\tLink_state int32\n\tMtu        uint64\n\tMetric     uint64\n\tBaudrate   uint64\n\tIpackets   uint64\n\tIerrors    uint64\n\tOpackets   uint64\n\tOerrors    uint64\n\tCollisions uint64\n\tIbytes     uint64\n\tObytes     uint64\n\tImcasts    uint64\n\tOmcasts    uint64\n\tIqdrops    uint64\n\tNoproto    uint64\n\tLastchange Timespec\n}\n\ntype IfaMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tAddrs     int32\n\tFlags     int32\n\tMetric    int32\n\tIndex     uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tName    [16]int8\n\tWhat    uint16\n}\n\ntype RtMsghdr struct {\n\tMsglen    uint16\n\tVersion   uint8\n\tType      uint8\n\tIndex     uint16\n\tPad_cgo_0 [2]byte\n\tFlags     int32\n\tAddrs     int32\n\tPid       int32\n\tSeq       int32\n\tErrno     int32\n\tUse       int32\n\tInits     int32\n\tPad_cgo_1 [4]byte\n\tRmx       RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint64\n\tMtu      uint64\n\tHopcount uint64\n\tRecvpipe uint64\n\tSendpipe uint64\n\tSsthresh uint64\n\tRtt      uint64\n\tRttvar   uint64\n\tExpire   int64\n\tPksent   int64\n}\n\ntype Mclpool [0]byte\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x20\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv    uint64\n\tDrop    uint64\n\tCapt    uint64\n\tPadding [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen       uint32\n\tPad_cgo_0 [4]byte\n\tInsns     *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp    BpfTimeval\n\tCaplen    uint32\n\tDatalen   uint32\n\tHdrlen    uint16\n\tPad_cgo_0 [6]byte\n}\n\ntype BpfTimeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype Ptmget struct {\n\tCfd int32\n\tSfd int32\n\tCn  [1024]byte\n\tSn  [1024]byte\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x100\n\tAT_SYMLINK_NOFOLLOW = 0x200\n\tAT_SYMLINK_FOLLOW   = 0x400\n\tAT_REMOVEDIR        = 0x800\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sysctlnode struct {\n\tFlags           uint32\n\tNum             int32\n\tName            [32]int8\n\tVer             uint32\n\tX__rsvd         uint32\n\tUn              [16]byte\n\tX_sysctl_size   [8]byte\n\tX_sysctl_func   [8]byte\n\tX_sysctl_parent [8]byte\n\tX_sysctl_desc   [8]byte\n}\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x278\n\ntype Uvmexp struct {\n\tPagesize           int64\n\tPagemask           int64\n\tPageshift          int64\n\tNpages             int64\n\tFree               int64\n\tActive             int64\n\tInactive           int64\n\tPaging             int64\n\tWired              int64\n\tZeropages          int64\n\tReserve_pagedaemon int64\n\tReserve_kernel     int64\n\tFreemin            int64\n\tFreetarg           int64\n\tInactarg           int64\n\tWiredmax           int64\n\tNswapdev           int64\n\tSwpages            int64\n\tSwpginuse          int64\n\tSwpgonly           int64\n\tNswget             int64\n\tUnused1            int64\n\tCpuhit             int64\n\tCpumiss            int64\n\tFaults             int64\n\tTraps              int64\n\tIntrs              int64\n\tSwtch              int64\n\tSofts              int64\n\tSyscalls           int64\n\tPageins            int64\n\tSwapins            int64\n\tSwapouts           int64\n\tPgswapin           int64\n\tPgswapout          int64\n\tForks              int64\n\tForks_ppwait       int64\n\tForks_sharevm      int64\n\tPga_zerohit        int64\n\tPga_zeromiss       int64\n\tZeroaborts         int64\n\tFltnoram           int64\n\tFltnoanon          int64\n\tFltpgwait          int64\n\tFltpgrele          int64\n\tFltrelck           int64\n\tFltrelckok         int64\n\tFltanget           int64\n\tFltanretry         int64\n\tFltamcopy          int64\n\tFltnamap           int64\n\tFltnomap           int64\n\tFltlget            int64\n\tFltget             int64\n\tFlt_anon           int64\n\tFlt_acow           int64\n\tFlt_obj            int64\n\tFlt_prcopy         int64\n\tFlt_przero         int64\n\tPdwoke             int64\n\tPdrevs             int64\n\tUnused4            int64\n\tPdfreed            int64\n\tPdscans            int64\n\tPdanscan           int64\n\tPdobscan           int64\n\tPdreact            int64\n\tPdbusy             int64\n\tPdpageouts         int64\n\tPdpending          int64\n\tPddeact            int64\n\tAnonpages          int64\n\tFilepages          int64\n\tExecpages          int64\n\tColorhit           int64\n\tColormiss          int64\n\tNcolors            int64\n\tBootpages          int64\n\tPoolpages          int64\n}\n\nconst SizeofClockinfo = 0x14\n\ntype Clockinfo struct {\n\tHz      int32\n\tTick    int32\n\tTickadj int32\n\tStathz  int32\n\tProfhz  int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_386.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build 386 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa0\n\tSizeofIfData           = 0x88\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_amd64.go",
    "content": "// cgo -godefs types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_arm.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x4\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x4\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int32\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int32\n\t_    [4]byte\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int32\n\t_    [4]byte\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int32\n\tIxrss    int32\n\tIdrss    int32\n\tIsrss    int32\n\tMinflt   int32\n\tMajflt   int32\n\tNswap    int32\n\tInblock  int32\n\tOublock  int32\n\tMsgsnd   int32\n\tMsgrcv   int32\n\tNsignals int32\n\tNvcsw    int32\n\tNivcsw   int32\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       [4]byte\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\t_             [4]byte\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint32\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x8\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x1c\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint32\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\t_      [4]byte\n\tData   int64\n\tUdata  *byte\n\t_      [4]byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\t_            [4]byte\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x8\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_arm64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build arm64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_mips64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build mips64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_ppc64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build ppc64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_openbsd_riscv64.go",
    "content": "// cgo -godefs -- -fsigned-char types_openbsd.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build riscv64 && openbsd\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tMode    uint32\n\tDev     int32\n\tIno     uint64\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    int32\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tSize    int64\n\tBlocks  int64\n\tBlksize int32\n\tFlags   uint32\n\tGen     uint32\n\t_       Timespec\n}\n\ntype Statfs_t struct {\n\tF_flags       uint32\n\tF_bsize       uint32\n\tF_iosize      uint32\n\tF_blocks      uint64\n\tF_bfree       uint64\n\tF_bavail      int64\n\tF_files       uint64\n\tF_ffree       uint64\n\tF_favail      int64\n\tF_syncwrites  uint64\n\tF_syncreads   uint64\n\tF_asyncwrites uint64\n\tF_asyncreads  uint64\n\tF_fsid        Fsid\n\tF_namemax     uint32\n\tF_owner       uint32\n\tF_ctime       uint64\n\tF_fstypename  [16]byte\n\tF_mntonname   [90]byte\n\tF_mntfromname [90]byte\n\tF_mntfromspec [90]byte\n\t_             [2]byte\n\tMount_info    [160]byte\n}\n\ntype Flock_t struct {\n\tStart  int64\n\tLen    int64\n\tPid    int32\n\tType   int16\n\tWhence int16\n}\n\ntype Dirent struct {\n\tFileno uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tNamlen uint8\n\t_      [4]uint8\n\tName   [256]int8\n}\n\ntype Fsid struct {\n\tVal [2]int32\n}\n\nconst (\n\tPathMax = 0x400\n)\n\ntype RawSockaddrInet4 struct {\n\tLen    uint8\n\tFamily uint8\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tLen      uint8\n\tFamily   uint8\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n}\n\ntype RawSockaddrUnix struct {\n\tLen    uint8\n\tFamily uint8\n\tPath   [104]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tLen    uint8\n\tFamily uint8\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [24]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [92]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tNamelen    uint32\n\tIov        *Iovec\n\tIovlen     uint32\n\tControl    *byte\n\tControllen uint32\n\tFlags      int32\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x1c\n\tSizeofSockaddrAny      = 0x6c\n\tSizeofSockaddrUnix     = 0x6a\n\tSizeofSockaddrDatalink = 0x20\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x20\n\tSizeofICMPv6Filter     = 0x20\n)\n\nconst (\n\tPTRACE_TRACEME = 0x0\n\tPTRACE_CONT    = 0x7\n\tPTRACE_KILL    = 0x8\n)\n\ntype Kevent_t struct {\n\tIdent  uint64\n\tFilter int16\n\tFlags  uint16\n\tFflags uint32\n\tData   int64\n\tUdata  *byte\n}\n\ntype FdSet struct {\n\tBits [32]uint32\n}\n\nconst (\n\tSizeofIfMsghdr         = 0xa8\n\tSizeofIfData           = 0x90\n\tSizeofIfaMsghdr        = 0x18\n\tSizeofIfAnnounceMsghdr = 0x1a\n\tSizeofRtMsghdr         = 0x60\n\tSizeofRtMetrics        = 0x38\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tXflags  int32\n\tData    IfData\n}\n\ntype IfData struct {\n\tType         uint8\n\tAddrlen      uint8\n\tHdrlen       uint8\n\tLink_state   uint8\n\tMtu          uint32\n\tMetric       uint32\n\tRdomain      uint32\n\tBaudrate     uint64\n\tIpackets     uint64\n\tIerrors      uint64\n\tOpackets     uint64\n\tOerrors      uint64\n\tCollisions   uint64\n\tIbytes       uint64\n\tObytes       uint64\n\tImcasts      uint64\n\tOmcasts      uint64\n\tIqdrops      uint64\n\tOqdrops      uint64\n\tNoproto      uint64\n\tCapabilities uint32\n\tLastchange   Timeval\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tTableid uint16\n\tPad1    uint8\n\tPad2    uint8\n\tAddrs   int32\n\tFlags   int32\n\tMetric  int32\n}\n\ntype IfAnnounceMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tHdrlen  uint16\n\tIndex   uint16\n\tWhat    uint16\n\tName    [16]int8\n}\n\ntype RtMsghdr struct {\n\tMsglen   uint16\n\tVersion  uint8\n\tType     uint8\n\tHdrlen   uint16\n\tIndex    uint16\n\tTableid  uint16\n\tPriority uint8\n\tMpls     uint8\n\tAddrs    int32\n\tFlags    int32\n\tFmask    int32\n\tPid      int32\n\tSeq      int32\n\tErrno    int32\n\tInits    uint32\n\tRmx      RtMetrics\n}\n\ntype RtMetrics struct {\n\tPksent   uint64\n\tExpire   int64\n\tLocks    uint32\n\tMtu      uint32\n\tRefcnt   uint32\n\tHopcount uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPad      uint32\n}\n\ntype Mclpool struct{}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x8\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x18\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint32\n\tDrop uint32\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\tIfidx   uint16\n\tFlowid  uint16\n\tFlags   uint8\n\tDrops   uint8\n}\n\ntype BpfTimeval struct {\n\tSec  uint32\n\tUsec uint32\n}\n\ntype Termios struct {\n\tIflag  uint32\n\tOflag  uint32\n\tCflag  uint32\n\tLflag  uint32\n\tCc     [20]uint8\n\tIspeed int32\n\tOspeed int32\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\nconst (\n\tAT_FDCWD            = -0x64\n\tAT_EACCESS          = 0x1\n\tAT_SYMLINK_NOFOLLOW = 0x2\n\tAT_SYMLINK_FOLLOW   = 0x4\n\tAT_REMOVEDIR        = 0x8\n)\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype Sigset_t uint32\n\ntype Utsname struct {\n\tSysname  [256]byte\n\tNodename [256]byte\n\tRelease  [256]byte\n\tVersion  [256]byte\n\tMachine  [256]byte\n}\n\nconst SizeofUvmexp = 0x158\n\ntype Uvmexp struct {\n\tPagesize           int32\n\tPagemask           int32\n\tPageshift          int32\n\tNpages             int32\n\tFree               int32\n\tActive             int32\n\tInactive           int32\n\tPaging             int32\n\tWired              int32\n\tZeropages          int32\n\tReserve_pagedaemon int32\n\tReserve_kernel     int32\n\tUnused01           int32\n\tVnodepages         int32\n\tVtextpages         int32\n\tFreemin            int32\n\tFreetarg           int32\n\tInactarg           int32\n\tWiredmax           int32\n\tAnonmin            int32\n\tVtextmin           int32\n\tVnodemin           int32\n\tAnonminpct         int32\n\tVtextminpct        int32\n\tVnodeminpct        int32\n\tNswapdev           int32\n\tSwpages            int32\n\tSwpginuse          int32\n\tSwpgonly           int32\n\tNswget             int32\n\tNanon              int32\n\tUnused05           int32\n\tUnused06           int32\n\tFaults             int32\n\tTraps              int32\n\tIntrs              int32\n\tSwtch              int32\n\tSofts              int32\n\tSyscalls           int32\n\tPageins            int32\n\tUnused07           int32\n\tUnused08           int32\n\tPgswapin           int32\n\tPgswapout          int32\n\tForks              int32\n\tForks_ppwait       int32\n\tForks_sharevm      int32\n\tPga_zerohit        int32\n\tPga_zeromiss       int32\n\tUnused09           int32\n\tFltnoram           int32\n\tFltnoanon          int32\n\tFltnoamap          int32\n\tFltpgwait          int32\n\tFltpgrele          int32\n\tFltrelck           int32\n\tFltrelckok         int32\n\tFltanget           int32\n\tFltanretry         int32\n\tFltamcopy          int32\n\tFltnamap           int32\n\tFltnomap           int32\n\tFltlget            int32\n\tFltget             int32\n\tFlt_anon           int32\n\tFlt_acow           int32\n\tFlt_obj            int32\n\tFlt_prcopy         int32\n\tFlt_przero         int32\n\tPdwoke             int32\n\tPdrevs             int32\n\tPdswout            int32\n\tPdfreed            int32\n\tPdscans            int32\n\tPdanscan           int32\n\tPdobscan           int32\n\tPdreact            int32\n\tPdbusy             int32\n\tPdpageouts         int32\n\tPdpending          int32\n\tPddeact            int32\n\tUnused11           int32\n\tUnused12           int32\n\tUnused13           int32\n\tFpswtch            int32\n\tKmapent            int32\n}\n\nconst SizeofClockinfo = 0x10\n\ntype Clockinfo struct {\n\tHz     int32\n\tTick   int32\n\tStathz int32\n\tProfhz int32\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_solaris_amd64.go",
    "content": "// cgo -godefs types_solaris.go | go run mkpost.go\n// Code generated by the command above; see README.md. DO NOT EDIT.\n\n//go:build amd64 && solaris\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x400\n\tMaxHostNameLen = 0x100\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype Timeval32 struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype Tms struct {\n\tUtime  int64\n\tStime  int64\n\tCutime int64\n\tCstime int64\n}\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\ntype _Gid_t uint32\n\ntype Stat_t struct {\n\tDev     uint64\n\tIno     uint64\n\tMode    uint32\n\tNlink   uint32\n\tUid     uint32\n\tGid     uint32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int32\n\tBlocks  int64\n\tFstype  [16]int8\n}\n\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tSysid  int32\n\tPid    int32\n\tPad    [4]int64\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tName   [1]int8\n\t_      [5]byte\n}\n\ntype _Fsblkcnt_t uint64\n\ntype Statvfs_t struct {\n\tBsize    uint64\n\tFrsize   uint64\n\tBlocks   uint64\n\tBfree    uint64\n\tBavail   uint64\n\tFiles    uint64\n\tFfree    uint64\n\tFavail   uint64\n\tFsid     uint64\n\tBasetype [16]int8\n\tFlag     uint64\n\tNamemax  uint64\n\tFstr     [32]int8\n}\n\ntype RawSockaddrInet4 struct {\n\tFamily uint16\n\tPort   uint16\n\tAddr   [4]byte /* in_addr */\n\tZero   [8]int8\n}\n\ntype RawSockaddrInet6 struct {\n\tFamily   uint16\n\tPort     uint16\n\tFlowinfo uint32\n\tAddr     [16]byte /* in6_addr */\n\tScope_id uint32\n\t_        uint32\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [108]int8\n}\n\ntype RawSockaddrDatalink struct {\n\tFamily uint16\n\tIndex  uint16\n\tType   uint8\n\tNlen   uint8\n\tAlen   uint8\n\tSlen   uint8\n\tData   [244]int8\n}\n\ntype RawSockaddr struct {\n\tFamily uint16\n\tData   [14]int8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\tPad  [236]int8\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName         *byte\n\tNamelen      uint32\n\tIov          *Iovec\n\tIovlen       int32\n\tAccrights    *int8\n\tAccrightslen int32\n\t_            [4]byte\n}\n\ntype Cmsghdr struct {\n\tLen   uint32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tIfindex  uint32\n\tSpec_dst [4]byte /* in_addr */\n\tAddr     [4]byte /* in_addr */\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tFilt [8]uint32\n}\n\nconst (\n\tSizeofSockaddrInet4    = 0x10\n\tSizeofSockaddrInet6    = 0x20\n\tSizeofSockaddrAny      = 0xfc\n\tSizeofSockaddrUnix     = 0x6e\n\tSizeofSockaddrDatalink = 0xfc\n\tSizeofLinger           = 0x8\n\tSizeofIovec            = 0x10\n\tSizeofIPMreq           = 0x8\n\tSizeofIPv6Mreq         = 0x14\n\tSizeofMsghdr           = 0x30\n\tSizeofCmsghdr          = 0xc\n\tSizeofInet4Pktinfo     = 0xc\n\tSizeofInet6Pktinfo     = 0x14\n\tSizeofIPv6MTUInfo      = 0x24\n\tSizeofICMPv6Filter     = 0x20\n)\n\ntype FdSet struct {\n\tBits [1024]int64\n}\n\ntype Utsname struct {\n\tSysname  [257]byte\n\tNodename [257]byte\n\tRelease  [257]byte\n\tVersion  [257]byte\n\tMachine  [257]byte\n}\n\ntype Ustat_t struct {\n\tTfree  int64\n\tTinode uint64\n\tFname  [6]int8\n\tFpack  [6]int8\n\t_      [4]byte\n}\n\nconst (\n\tAT_FDCWD            = 0xffd19553\n\tAT_SYMLINK_NOFOLLOW = 0x1000\n\tAT_SYMLINK_FOLLOW   = 0x2000\n\tAT_REMOVEDIR        = 0x1\n\tAT_EACCESS          = 0x4\n)\n\nconst (\n\tSizeofIfMsghdr  = 0x54\n\tSizeofIfData    = 0x44\n\tSizeofIfaMsghdr = 0x14\n\tSizeofRtMsghdr  = 0x4c\n\tSizeofRtMetrics = 0x28\n)\n\ntype IfMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tData    IfData\n}\n\ntype IfData struct {\n\tType       uint8\n\tAddrlen    uint8\n\tHdrlen     uint8\n\tMtu        uint32\n\tMetric     uint32\n\tBaudrate   uint32\n\tIpackets   uint32\n\tIerrors    uint32\n\tOpackets   uint32\n\tOerrors    uint32\n\tCollisions uint32\n\tIbytes     uint32\n\tObytes     uint32\n\tImcasts    uint32\n\tOmcasts    uint32\n\tIqdrops    uint32\n\tNoproto    uint32\n\tLastchange Timeval32\n}\n\ntype IfaMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tAddrs   int32\n\tFlags   int32\n\tIndex   uint16\n\tMetric  int32\n}\n\ntype RtMsghdr struct {\n\tMsglen  uint16\n\tVersion uint8\n\tType    uint8\n\tIndex   uint16\n\tFlags   int32\n\tAddrs   int32\n\tPid     int32\n\tSeq     int32\n\tErrno   int32\n\tUse     int32\n\tInits   uint32\n\tRmx     RtMetrics\n}\n\ntype RtMetrics struct {\n\tLocks    uint32\n\tMtu      uint32\n\tHopcount uint32\n\tExpire   uint32\n\tRecvpipe uint32\n\tSendpipe uint32\n\tSsthresh uint32\n\tRtt      uint32\n\tRttvar   uint32\n\tPksent   uint32\n}\n\nconst (\n\tSizeofBpfVersion = 0x4\n\tSizeofBpfStat    = 0x80\n\tSizeofBpfProgram = 0x10\n\tSizeofBpfInsn    = 0x8\n\tSizeofBpfHdr     = 0x14\n)\n\ntype BpfVersion struct {\n\tMajor uint16\n\tMinor uint16\n}\n\ntype BpfStat struct {\n\tRecv uint64\n\tDrop uint64\n\tCapt uint64\n\t_    [13]uint64\n}\n\ntype BpfProgram struct {\n\tLen   uint32\n\tInsns *BpfInsn\n}\n\ntype BpfInsn struct {\n\tCode uint16\n\tJt   uint8\n\tJf   uint8\n\tK    uint32\n}\n\ntype BpfTimeval struct {\n\tSec  int32\n\tUsec int32\n}\n\ntype BpfHdr struct {\n\tTstamp  BpfTimeval\n\tCaplen  uint32\n\tDatalen uint32\n\tHdrlen  uint16\n\t_       [2]byte\n}\n\ntype Termios struct {\n\tIflag uint32\n\tOflag uint32\n\tCflag uint32\n\tLflag uint32\n\tCc    [19]uint8\n\t_     [1]byte\n}\n\ntype Termio struct {\n\tIflag uint16\n\tOflag uint16\n\tCflag uint16\n\tLflag uint16\n\tLine  int8\n\tCc    [8]uint8\n\t_     [1]byte\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\nconst (\n\tPOLLERR    = 0x8\n\tPOLLHUP    = 0x10\n\tPOLLIN     = 0x1\n\tPOLLNVAL   = 0x20\n\tPOLLOUT    = 0x4\n\tPOLLPRI    = 0x2\n\tPOLLRDBAND = 0x80\n\tPOLLRDNORM = 0x40\n\tPOLLWRBAND = 0x100\n\tPOLLWRNORM = 0x4\n)\n\ntype fileObj struct {\n\tAtim Timespec\n\tMtim Timespec\n\tCtim Timespec\n\tPad  [3]uint64\n\tName *int8\n}\n\ntype portEvent struct {\n\tEvents int32\n\tSource uint16\n\tPad    uint16\n\tObject uint64\n\tUser   *byte\n}\n\nconst (\n\tPORT_SOURCE_AIO    = 0x1\n\tPORT_SOURCE_TIMER  = 0x2\n\tPORT_SOURCE_USER   = 0x3\n\tPORT_SOURCE_FD     = 0x4\n\tPORT_SOURCE_ALERT  = 0x5\n\tPORT_SOURCE_MQ     = 0x6\n\tPORT_SOURCE_FILE   = 0x7\n\tPORT_ALERT_SET     = 0x1\n\tPORT_ALERT_UPDATE  = 0x2\n\tPORT_ALERT_INVALID = 0x3\n\tFILE_ACCESS        = 0x1\n\tFILE_MODIFIED      = 0x2\n\tFILE_ATTRIB        = 0x4\n\tFILE_TRUNC         = 0x100000\n\tFILE_NOFOLLOW      = 0x10000000\n\tFILE_DELETE        = 0x10\n\tFILE_RENAME_TO     = 0x20\n\tFILE_RENAME_FROM   = 0x40\n\tUNMOUNTED          = 0x20000000\n\tMOUNTEDOVER        = 0x40000000\n\tFILE_EXCEPTION     = 0x60000070\n)\n\nconst (\n\tTUNNEWPPA = 0x540001\n\tTUNSETPPA = 0x540002\n\n\tI_STR     = 0x5308\n\tI_POP     = 0x5303\n\tI_PUSH    = 0x5302\n\tI_LINK    = 0x530c\n\tI_UNLINK  = 0x530d\n\tI_PLINK   = 0x5316\n\tI_PUNLINK = 0x5317\n\n\tIF_UNITSEL = -0x7ffb8cca\n)\n\ntype strbuf struct {\n\tMaxlen int32\n\tLen    int32\n\tBuf    *int8\n}\n\ntype Strioctl struct {\n\tCmd    int32\n\tTimout int32\n\tLen    int32\n\tDp     *int8\n}\n\ntype Lifreq struct {\n\tName   [32]int8\n\tLifru1 [4]byte\n\tType   uint32\n\tLifru  [336]byte\n}\n"
  },
  {
    "path": "gossh/sys/unix/ztypes_zos_s390x.go",
    "content": "// Copyright 2020 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build zos && s390x\n\n// Hand edited based on ztypes_linux_s390x.go\n// TODO: auto-generate.\n\npackage unix\n\nconst (\n\tSizeofPtr      = 0x8\n\tSizeofShort    = 0x2\n\tSizeofInt      = 0x4\n\tSizeofLong     = 0x8\n\tSizeofLongLong = 0x8\n\tPathMax        = 0x1000\n)\n\nconst (\n\tSizeofSockaddrAny   = 128\n\tSizeofCmsghdr       = 12\n\tSizeofIPMreq        = 8\n\tSizeofIPv6Mreq      = 20\n\tSizeofICMPv6Filter  = 32\n\tSizeofIPv6MTUInfo   = 32\n\tSizeofLinger        = 8\n\tSizeofSockaddrInet4 = 16\n\tSizeofSockaddrInet6 = 28\n\tSizeofTCPInfo       = 0x68\n)\n\ntype (\n\t_C_short     int16\n\t_C_int       int32\n\t_C_long      int64\n\t_C_long_long int64\n)\n\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\ntype Timeval struct {\n\tSec  int64\n\tUsec int64\n}\n\ntype timeval_zos struct { //correct (with padding and all)\n\tSec  int64\n\t_    [4]byte // pad\n\tUsec int32\n}\n\ntype Tms struct { //clock_t is 4-byte unsigned int in zos\n\tUtime  uint32\n\tStime  uint32\n\tCutime uint32\n\tCstime uint32\n}\n\ntype Time_t int64\n\ntype Utimbuf struct {\n\tActime  int64\n\tModtime int64\n}\n\ntype Utsname struct {\n\tSysname    [65]byte\n\tNodename   [65]byte\n\tRelease    [65]byte\n\tVersion    [65]byte\n\tMachine    [65]byte\n\tDomainname [65]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   [108]int8\n}\n\ntype RawSockaddr struct {\n\tLen    uint8\n\tFamily uint8\n\tData   [14]uint8\n}\n\ntype RawSockaddrAny struct {\n\tAddr RawSockaddr\n\t_    [112]uint8 // pad\n}\n\ntype _Socklen uint32\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype Iovec struct {\n\tBase *byte\n\tLen  uint64\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\ntype Msghdr struct {\n\tName       *byte\n\tIov        *Iovec\n\tControl    *byte\n\tFlags      int32\n\tNamelen    int32\n\tIovlen     int32\n\tControllen int32\n}\n\ntype Cmsghdr struct {\n\tLen   int32\n\tLevel int32\n\tType  int32\n}\n\ntype Inet4Pktinfo struct {\n\tAddr    [4]byte /* in_addr */\n\tIfindex uint32\n}\n\ntype Inet6Pktinfo struct {\n\tAddr    [16]byte /* in6_addr */\n\tIfindex uint32\n}\n\ntype IPv6MTUInfo struct {\n\tAddr RawSockaddrInet6\n\tMtu  uint32\n}\n\ntype ICMPv6Filter struct {\n\tData [8]uint32\n}\n\ntype TCPInfo struct {\n\tState          uint8\n\tCa_state       uint8\n\tRetransmits    uint8\n\tProbes         uint8\n\tBackoff        uint8\n\tOptions        uint8\n\tRto            uint32\n\tAto            uint32\n\tSnd_mss        uint32\n\tRcv_mss        uint32\n\tUnacked        uint32\n\tSacked         uint32\n\tLost           uint32\n\tRetrans        uint32\n\tFackets        uint32\n\tLast_data_sent uint32\n\tLast_ack_sent  uint32\n\tLast_data_recv uint32\n\tLast_ack_recv  uint32\n\tPmtu           uint32\n\tRcv_ssthresh   uint32\n\tRtt            uint32\n\tRttvar         uint32\n\tSnd_ssthresh   uint32\n\tSnd_cwnd       uint32\n\tAdvmss         uint32\n\tReordering     uint32\n\tRcv_rtt        uint32\n\tRcv_space      uint32\n\tTotal_retrans  uint32\n}\n\ntype _Gid_t uint32\n\ntype rusage_zos struct {\n\tUtime timeval_zos\n\tStime timeval_zos\n}\n\ntype Rusage struct {\n\tUtime    Timeval\n\tStime    Timeval\n\tMaxrss   int64\n\tIxrss    int64\n\tIdrss    int64\n\tIsrss    int64\n\tMinflt   int64\n\tMajflt   int64\n\tNswap    int64\n\tInblock  int64\n\tOublock  int64\n\tMsgsnd   int64\n\tMsgrcv   int64\n\tNsignals int64\n\tNvcsw    int64\n\tNivcsw   int64\n}\n\ntype Rlimit struct {\n\tCur uint64\n\tMax uint64\n}\n\n// { int, short, short } in poll.h\ntype PollFd struct {\n\tFd      int32\n\tEvents  int16\n\tRevents int16\n}\n\ntype Stat_t struct { //Linux Definition\n\tDev     uint64\n\tIno     uint64\n\tNlink   uint64\n\tMode    uint32\n\tUid     uint32\n\tGid     uint32\n\t_       int32\n\tRdev    uint64\n\tSize    int64\n\tAtim    Timespec\n\tMtim    Timespec\n\tCtim    Timespec\n\tBlksize int64\n\tBlocks  int64\n\t_       [3]int64\n}\n\ntype Stat_LE_t struct {\n\t_            [4]byte // eye catcher\n\tLength       uint16\n\tVersion      uint16\n\tMode         int32\n\tIno          uint32\n\tDev          uint32\n\tNlink        int32\n\tUid          int32\n\tGid          int32\n\tSize         int64\n\tAtim31       [4]byte\n\tMtim31       [4]byte\n\tCtim31       [4]byte\n\tRdev         uint32\n\tAuditoraudit uint32\n\tUseraudit    uint32\n\tBlksize      int32\n\tCreatim31    [4]byte\n\tAuditID      [16]byte\n\t_            [4]byte // rsrvd1\n\tFile_tag     struct {\n\t\tCcsid   uint16\n\t\tTxtflag uint16 // aggregating Txflag:1 deferred:1 rsvflags:14\n\t}\n\tCharsetID [8]byte\n\tBlocks    int64\n\tGenvalue  uint32\n\tReftim31  [4]byte\n\tFid       [8]byte\n\tFilefmt   byte\n\tFspflag2  byte\n\t_         [2]byte // rsrvd2\n\tCtimemsec int32\n\tSeclabel  [8]byte\n\t_         [4]byte // rsrvd3\n\t_         [4]byte // rsrvd4\n\tAtim      Time_t\n\tMtim      Time_t\n\tCtim      Time_t\n\tCreatim   Time_t\n\tReftim    Time_t\n\t_         [24]byte // rsrvd5\n}\n\ntype Statvfs_t struct {\n\tID          [4]byte\n\tLen         int32\n\tBsize       uint64\n\tBlocks      uint64\n\tUsedspace   uint64\n\tBavail      uint64\n\tFlag        uint64\n\tMaxfilesize int64\n\t_           [16]byte\n\tFrsize      uint64\n\tBfree       uint64\n\tFiles       uint32\n\tFfree       uint32\n\tFavail      uint32\n\tNamemax31   uint32\n\tInvarsec    uint32\n\t_           [4]byte\n\tFsid        uint64\n\tNamemax     uint64\n}\n\ntype Statfs_t struct {\n\tType    uint32\n\tBsize   uint64\n\tBlocks  uint64\n\tBfree   uint64\n\tBavail  uint64\n\tFiles   uint32\n\tFfree   uint32\n\tFsid    uint64\n\tNamelen uint64\n\tFrsize  uint64\n\tFlags   uint64\n}\n\ntype direntLE struct {\n\tReclen uint16\n\tNamlen uint16\n\tIno    uint32\n\tExtra  uintptr\n\tName   [256]byte\n}\n\ntype Dirent struct {\n\tIno    uint64\n\tOff    int64\n\tReclen uint16\n\tType   uint8\n\tName   [256]uint8\n\t_      [5]byte\n}\n\ntype FdSet struct {\n\tBits [64]int32\n}\n\n// This struct is packed on z/OS so it can't be used directly.\ntype Flock_t struct {\n\tType   int16\n\tWhence int16\n\tStart  int64\n\tLen    int64\n\tPid    int32\n}\n\ntype Termios struct {\n\tCflag uint32\n\tIflag uint32\n\tLflag uint32\n\tOflag uint32\n\tCc    [11]uint8\n}\n\ntype Winsize struct {\n\tRow    uint16\n\tCol    uint16\n\tXpixel uint16\n\tYpixel uint16\n}\n\ntype W_Mnth struct {\n\tHid   [4]byte\n\tSize  int32\n\tCur1  int32 //32bit pointer\n\tCur2  int32 //^\n\tDevno uint32\n\t_     [4]byte\n}\n\ntype W_Mntent struct {\n\tFstype       uint32\n\tMode         uint32\n\tDev          uint32\n\tParentdev    uint32\n\tRootino      uint32\n\tStatus       byte\n\tDdname       [9]byte\n\tFstname      [9]byte\n\tFsname       [45]byte\n\tPathlen      uint32\n\tMountpoint   [1024]byte\n\tJobname      [8]byte\n\tPID          int32\n\tParmoffset   int32\n\tParmlen      int16\n\tOwner        [8]byte\n\tQuiesceowner [8]byte\n\t_            [38]byte\n}\n"
  },
  {
    "path": "gossh/sys/websocket/client.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 websocket\n\nimport (\n\t\"bufio\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n)\n\n// DialError is an error that occurs while dialling a websocket server.\ntype DialError struct {\n\t*Config\n\tErr error\n}\n\nfunc (e *DialError) Error() string {\n\treturn \"websocket.Dial \" + e.Config.Location.String() + \": \" + e.Err.Error()\n}\n\n// NewConfig creates a new WebSocket config for client connection.\nfunc NewConfig(server, origin string) (config *Config, err error) {\n\tconfig = new(Config)\n\tconfig.Version = ProtocolVersionHybi13\n\tconfig.Location, err = url.ParseRequestURI(server)\n\tif err != nil {\n\t\treturn\n\t}\n\tconfig.Origin, err = url.ParseRequestURI(origin)\n\tif err != nil {\n\t\treturn\n\t}\n\tconfig.Header = http.Header(make(map[string][]string))\n\treturn\n}\n\n// NewClient creates a new WebSocket client connection over rwc.\nfunc NewClient(config *Config, rwc io.ReadWriteCloser) (ws *Conn, err error) {\n\tbr := bufio.NewReader(rwc)\n\tbw := bufio.NewWriter(rwc)\n\terr = hybiClientHandshake(config, br, bw)\n\tif err != nil {\n\t\treturn\n\t}\n\tbuf := bufio.NewReadWriter(br, bw)\n\tws = newHybiClientConn(config, buf, rwc)\n\treturn\n}\n\n// Dial opens a new client connection to a WebSocket.\nfunc Dial(url_, protocol, origin string) (ws *Conn, err error) {\n\tconfig, err := NewConfig(url_, origin)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif protocol != \"\" {\n\t\tconfig.Protocol = []string{protocol}\n\t}\n\treturn DialConfig(config)\n}\n\nvar portMap = map[string]string{\n\t\"ws\":  \"80\",\n\t\"wss\": \"443\",\n}\n\nfunc parseAuthority(location *url.URL) string {\n\tif _, ok := portMap[location.Scheme]; ok {\n\t\tif _, _, err := net.SplitHostPort(location.Host); err != nil {\n\t\t\treturn net.JoinHostPort(location.Host, portMap[location.Scheme])\n\t\t}\n\t}\n\treturn location.Host\n}\n\n// DialConfig opens a new client connection to a WebSocket with a config.\nfunc DialConfig(config *Config) (ws *Conn, err error) {\n\tvar client net.Conn\n\tif config.Location == nil {\n\t\treturn nil, &DialError{config, ErrBadWebSocketLocation}\n\t}\n\tif config.Origin == nil {\n\t\treturn nil, &DialError{config, ErrBadWebSocketOrigin}\n\t}\n\tdialer := config.Dialer\n\tif dialer == nil {\n\t\tdialer = &net.Dialer{}\n\t}\n\tclient, err = dialWithDialer(dialer, config)\n\tif err != nil {\n\t\tgoto Error\n\t}\n\tws, err = NewClient(config, client)\n\tif err != nil {\n\t\tclient.Close()\n\t\tgoto Error\n\t}\n\treturn\n\nError:\n\treturn nil, &DialError{config, err}\n}\n"
  },
  {
    "path": "gossh/sys/websocket/dial.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 websocket\n\nimport (\n\t\"crypto/tls\"\n\t\"net\"\n)\n\nfunc dialWithDialer(dialer *net.Dialer, config *Config) (conn net.Conn, err error) {\n\tswitch config.Location.Scheme {\n\tcase \"ws\":\n\t\tconn, err = dialer.Dial(\"tcp\", parseAuthority(config.Location))\n\n\tcase \"wss\":\n\t\tconn, err = tls.DialWithDialer(dialer, \"tcp\", parseAuthority(config.Location), config.TlsConfig)\n\n\tdefault:\n\t\terr = ErrBadScheme\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/sys/websocket/hybi.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 websocket\n\n// This file implements a protocol of hybi draft.\n// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"crypto/rand\"\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"encoding/binary\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n)\n\nconst (\n\twebsocketGUID = \"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\"\n\n\tcloseStatusNormal            = 1000\n\tcloseStatusGoingAway         = 1001\n\tcloseStatusProtocolError     = 1002\n\tcloseStatusUnsupportedData   = 1003\n\tcloseStatusFrameTooLarge     = 1004\n\tcloseStatusNoStatusRcvd      = 1005\n\tcloseStatusAbnormalClosure   = 1006\n\tcloseStatusBadMessageData    = 1007\n\tcloseStatusPolicyViolation   = 1008\n\tcloseStatusTooBigData        = 1009\n\tcloseStatusExtensionMismatch = 1010\n\n\tmaxControlFramePayloadLength = 125\n)\n\nvar (\n\tErrBadMaskingKey         = &ProtocolError{\"bad masking key\"}\n\tErrBadPongMessage        = &ProtocolError{\"bad pong message\"}\n\tErrBadClosingStatus      = &ProtocolError{\"bad closing status\"}\n\tErrUnsupportedExtensions = &ProtocolError{\"unsupported extensions\"}\n\tErrNotImplemented        = &ProtocolError{\"not implemented\"}\n\n\thandshakeHeader = map[string]bool{\n\t\t\"Host\":                   true,\n\t\t\"Upgrade\":                true,\n\t\t\"Connection\":             true,\n\t\t\"Sec-Websocket-Key\":      true,\n\t\t\"Sec-Websocket-Origin\":   true,\n\t\t\"Sec-Websocket-Version\":  true,\n\t\t\"Sec-Websocket-Protocol\": true,\n\t\t\"Sec-Websocket-Accept\":   true,\n\t}\n)\n\n// A hybiFrameHeader is a frame header as defined in hybi draft.\ntype hybiFrameHeader struct {\n\tFin        bool\n\tRsv        [3]bool\n\tOpCode     byte\n\tLength     int64\n\tMaskingKey []byte\n\n\tdata *bytes.Buffer\n}\n\n// A hybiFrameReader is a reader for hybi frame.\ntype hybiFrameReader struct {\n\treader io.Reader\n\n\theader hybiFrameHeader\n\tpos    int64\n\tlength int\n}\n\nfunc (frame *hybiFrameReader) Read(msg []byte) (n int, err error) {\n\tn, err = frame.reader.Read(msg)\n\tif frame.header.MaskingKey != nil {\n\t\tfor i := 0; i < n; i++ {\n\t\t\tmsg[i] = msg[i] ^ frame.header.MaskingKey[frame.pos%4]\n\t\t\tframe.pos++\n\t\t}\n\t}\n\treturn n, err\n}\n\nfunc (frame *hybiFrameReader) PayloadType() byte { return frame.header.OpCode }\n\nfunc (frame *hybiFrameReader) HeaderReader() io.Reader {\n\tif frame.header.data == nil {\n\t\treturn nil\n\t}\n\tif frame.header.data.Len() == 0 {\n\t\treturn nil\n\t}\n\treturn frame.header.data\n}\n\nfunc (frame *hybiFrameReader) TrailerReader() io.Reader { return nil }\n\nfunc (frame *hybiFrameReader) Len() (n int) { return frame.length }\n\n// A hybiFrameReaderFactory creates new frame reader based on its frame type.\ntype hybiFrameReaderFactory struct {\n\t*bufio.Reader\n}\n\n// NewFrameReader reads a frame header from the connection, and creates new reader for the frame.\n// See Section 5.2 Base Framing protocol for detail.\n// http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-17#section-5.2\nfunc (buf hybiFrameReaderFactory) NewFrameReader() (frame frameReader, err error) {\n\thybiFrame := new(hybiFrameReader)\n\tframe = hybiFrame\n\tvar header []byte\n\tvar b byte\n\t// First byte. FIN/RSV1/RSV2/RSV3/OpCode(4bits)\n\tb, err = buf.ReadByte()\n\tif err != nil {\n\t\treturn\n\t}\n\theader = append(header, b)\n\thybiFrame.header.Fin = ((header[0] >> 7) & 1) != 0\n\tfor i := 0; i < 3; i++ {\n\t\tj := uint(6 - i)\n\t\thybiFrame.header.Rsv[i] = ((header[0] >> j) & 1) != 0\n\t}\n\thybiFrame.header.OpCode = header[0] & 0x0f\n\n\t// Second byte. Mask/Payload len(7bits)\n\tb, err = buf.ReadByte()\n\tif err != nil {\n\t\treturn\n\t}\n\theader = append(header, b)\n\tmask := (b & 0x80) != 0\n\tb &= 0x7f\n\tlengthFields := 0\n\tswitch {\n\tcase b <= 125: // Payload length 7bits.\n\t\thybiFrame.header.Length = int64(b)\n\tcase b == 126: // Payload length 7+16bits\n\t\tlengthFields = 2\n\tcase b == 127: // Payload length 7+64bits\n\t\tlengthFields = 8\n\t}\n\tfor i := 0; i < lengthFields; i++ {\n\t\tb, err = buf.ReadByte()\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tif lengthFields == 8 && i == 0 { // MSB must be zero when 7+64 bits\n\t\t\tb &= 0x7f\n\t\t}\n\t\theader = append(header, b)\n\t\thybiFrame.header.Length = hybiFrame.header.Length*256 + int64(b)\n\t}\n\tif mask {\n\t\t// Masking key. 4 bytes.\n\t\tfor i := 0; i < 4; i++ {\n\t\t\tb, err = buf.ReadByte()\n\t\t\tif err != nil {\n\t\t\t\treturn\n\t\t\t}\n\t\t\theader = append(header, b)\n\t\t\thybiFrame.header.MaskingKey = append(hybiFrame.header.MaskingKey, b)\n\t\t}\n\t}\n\thybiFrame.reader = io.LimitReader(buf.Reader, hybiFrame.header.Length)\n\thybiFrame.header.data = bytes.NewBuffer(header)\n\thybiFrame.length = len(header) + int(hybiFrame.header.Length)\n\treturn\n}\n\n// A HybiFrameWriter is a writer for hybi frame.\ntype hybiFrameWriter struct {\n\twriter *bufio.Writer\n\n\theader *hybiFrameHeader\n}\n\nfunc (frame *hybiFrameWriter) Write(msg []byte) (n int, err error) {\n\tvar header []byte\n\tvar b byte\n\tif frame.header.Fin {\n\t\tb |= 0x80\n\t}\n\tfor i := 0; i < 3; i++ {\n\t\tif frame.header.Rsv[i] {\n\t\t\tj := uint(6 - i)\n\t\t\tb |= 1 << j\n\t\t}\n\t}\n\tb |= frame.header.OpCode\n\theader = append(header, b)\n\tif frame.header.MaskingKey != nil {\n\t\tb = 0x80\n\t} else {\n\t\tb = 0\n\t}\n\tlengthFields := 0\n\tlength := len(msg)\n\tswitch {\n\tcase length <= 125:\n\t\tb |= byte(length)\n\tcase length < 65536:\n\t\tb |= 126\n\t\tlengthFields = 2\n\tdefault:\n\t\tb |= 127\n\t\tlengthFields = 8\n\t}\n\theader = append(header, b)\n\tfor i := 0; i < lengthFields; i++ {\n\t\tj := uint((lengthFields - i - 1) * 8)\n\t\tb = byte((length >> j) & 0xff)\n\t\theader = append(header, b)\n\t}\n\tif frame.header.MaskingKey != nil {\n\t\tif len(frame.header.MaskingKey) != 4 {\n\t\t\treturn 0, ErrBadMaskingKey\n\t\t}\n\t\theader = append(header, frame.header.MaskingKey...)\n\t\tframe.writer.Write(header)\n\t\tdata := make([]byte, length)\n\t\tfor i := range data {\n\t\t\tdata[i] = msg[i] ^ frame.header.MaskingKey[i%4]\n\t\t}\n\t\tframe.writer.Write(data)\n\t\terr = frame.writer.Flush()\n\t\treturn length, err\n\t}\n\tframe.writer.Write(header)\n\tframe.writer.Write(msg)\n\terr = frame.writer.Flush()\n\treturn length, err\n}\n\nfunc (frame *hybiFrameWriter) Close() error { return nil }\n\ntype hybiFrameWriterFactory struct {\n\t*bufio.Writer\n\tneedMaskingKey bool\n}\n\nfunc (buf hybiFrameWriterFactory) NewFrameWriter(payloadType byte) (frame frameWriter, err error) {\n\tframeHeader := &hybiFrameHeader{Fin: true, OpCode: payloadType}\n\tif buf.needMaskingKey {\n\t\tframeHeader.MaskingKey, err = generateMaskingKey()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &hybiFrameWriter{writer: buf.Writer, header: frameHeader}, nil\n}\n\ntype hybiFrameHandler struct {\n\tconn        *Conn\n\tpayloadType byte\n}\n\nfunc (handler *hybiFrameHandler) HandleFrame(frame frameReader) (frameReader, error) {\n\tif handler.conn.IsServerConn() {\n\t\t// The client MUST mask all frames sent to the server.\n\t\tif frame.(*hybiFrameReader).header.MaskingKey == nil {\n\t\t\thandler.WriteClose(closeStatusProtocolError)\n\t\t\treturn nil, io.EOF\n\t\t}\n\t} else {\n\t\t// The server MUST NOT mask all frames.\n\t\tif frame.(*hybiFrameReader).header.MaskingKey != nil {\n\t\t\thandler.WriteClose(closeStatusProtocolError)\n\t\t\treturn nil, io.EOF\n\t\t}\n\t}\n\tif header := frame.HeaderReader(); header != nil {\n\t\tio.Copy(ioutil.Discard, header)\n\t}\n\tswitch frame.PayloadType() {\n\tcase ContinuationFrame:\n\t\tframe.(*hybiFrameReader).header.OpCode = handler.payloadType\n\tcase TextFrame, BinaryFrame:\n\t\thandler.payloadType = frame.PayloadType()\n\tcase CloseFrame:\n\t\treturn nil, io.EOF\n\tcase PingFrame, PongFrame:\n\t\tb := make([]byte, maxControlFramePayloadLength)\n\t\tn, err := io.ReadFull(frame, b)\n\t\tif err != nil && err != io.EOF && err != io.ErrUnexpectedEOF {\n\t\t\treturn nil, err\n\t\t}\n\t\tio.Copy(ioutil.Discard, frame)\n\t\tif frame.PayloadType() == PingFrame {\n\t\t\tif _, err := handler.WritePong(b[:n]); err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn nil, nil\n\t}\n\treturn frame, nil\n}\n\nfunc (handler *hybiFrameHandler) WriteClose(status int) (err error) {\n\thandler.conn.wio.Lock()\n\tdefer handler.conn.wio.Unlock()\n\tw, err := handler.conn.frameWriterFactory.NewFrameWriter(CloseFrame)\n\tif err != nil {\n\t\treturn err\n\t}\n\tmsg := make([]byte, 2)\n\tbinary.BigEndian.PutUint16(msg, uint16(status))\n\t_, err = w.Write(msg)\n\tw.Close()\n\treturn err\n}\n\nfunc (handler *hybiFrameHandler) WritePong(msg []byte) (n int, err error) {\n\thandler.conn.wio.Lock()\n\tdefer handler.conn.wio.Unlock()\n\tw, err := handler.conn.frameWriterFactory.NewFrameWriter(PongFrame)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err = w.Write(msg)\n\tw.Close()\n\treturn n, err\n}\n\n// newHybiConn creates a new WebSocket connection speaking hybi draft protocol.\nfunc newHybiConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn {\n\tif buf == nil {\n\t\tbr := bufio.NewReader(rwc)\n\t\tbw := bufio.NewWriter(rwc)\n\t\tbuf = bufio.NewReadWriter(br, bw)\n\t}\n\tws := &Conn{config: config, request: request, buf: buf, rwc: rwc,\n\t\tframeReaderFactory: hybiFrameReaderFactory{buf.Reader},\n\t\tframeWriterFactory: hybiFrameWriterFactory{\n\t\t\tbuf.Writer, request == nil},\n\t\tPayloadType:        TextFrame,\n\t\tdefaultCloseStatus: closeStatusNormal}\n\tws.frameHandler = &hybiFrameHandler{conn: ws}\n\treturn ws\n}\n\n// generateMaskingKey generates a masking key for a frame.\nfunc generateMaskingKey() (maskingKey []byte, err error) {\n\tmaskingKey = make([]byte, 4)\n\tif _, err = io.ReadFull(rand.Reader, maskingKey); err != nil {\n\t\treturn\n\t}\n\treturn\n}\n\n// generateNonce generates a nonce consisting of a randomly selected 16-byte\n// value that has been base64-encoded.\nfunc generateNonce() (nonce []byte) {\n\tkey := make([]byte, 16)\n\tif _, err := io.ReadFull(rand.Reader, key); err != nil {\n\t\tpanic(err)\n\t}\n\tnonce = make([]byte, 24)\n\tbase64.StdEncoding.Encode(nonce, key)\n\treturn\n}\n\n// removeZone removes IPv6 zone identifier from host.\n// E.g., \"[fe80::1%en0]:8080\" to \"[fe80::1]:8080\"\nfunc removeZone(host string) string {\n\tif !strings.HasPrefix(host, \"[\") {\n\t\treturn host\n\t}\n\ti := strings.LastIndex(host, \"]\")\n\tif i < 0 {\n\t\treturn host\n\t}\n\tj := strings.LastIndex(host[:i], \"%\")\n\tif j < 0 {\n\t\treturn host\n\t}\n\treturn host[:j] + host[i:]\n}\n\n// getNonceAccept computes the base64-encoded SHA-1 of the concatenation of\n// the nonce (\"Sec-WebSocket-Key\" value) with the websocket GUID string.\nfunc getNonceAccept(nonce []byte) (expected []byte, err error) {\n\th := sha1.New()\n\tif _, err = h.Write(nonce); err != nil {\n\t\treturn\n\t}\n\tif _, err = h.Write([]byte(websocketGUID)); err != nil {\n\t\treturn\n\t}\n\texpected = make([]byte, 28)\n\tbase64.StdEncoding.Encode(expected, h.Sum(nil))\n\treturn\n}\n\n// Client handshake described in draft-ietf-hybi-thewebsocket-protocol-17\nfunc hybiClientHandshake(config *Config, br *bufio.Reader, bw *bufio.Writer) (err error) {\n\tbw.WriteString(\"GET \" + config.Location.RequestURI() + \" HTTP/1.1\\r\\n\")\n\n\t// According to RFC 6874, an HTTP client, proxy, or other\n\t// intermediary must remove any IPv6 zone identifier attached\n\t// to an outgoing URI.\n\tbw.WriteString(\"Host: \" + removeZone(config.Location.Host) + \"\\r\\n\")\n\tbw.WriteString(\"Upgrade: websocket\\r\\n\")\n\tbw.WriteString(\"Connection: Upgrade\\r\\n\")\n\tnonce := generateNonce()\n\tif config.handshakeData != nil {\n\t\tnonce = []byte(config.handshakeData[\"key\"])\n\t}\n\tbw.WriteString(\"Sec-WebSocket-Key: \" + string(nonce) + \"\\r\\n\")\n\tbw.WriteString(\"Origin: \" + strings.ToLower(config.Origin.String()) + \"\\r\\n\")\n\n\tif config.Version != ProtocolVersionHybi13 {\n\t\treturn ErrBadProtocolVersion\n\t}\n\n\tbw.WriteString(\"Sec-WebSocket-Version: \" + fmt.Sprintf(\"%d\", config.Version) + \"\\r\\n\")\n\tif len(config.Protocol) > 0 {\n\t\tbw.WriteString(\"Sec-WebSocket-Protocol: \" + strings.Join(config.Protocol, \", \") + \"\\r\\n\")\n\t}\n\t// TODO(ukai): send Sec-WebSocket-Extensions.\n\terr = config.Header.WriteSubset(bw, handshakeHeader)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tbw.WriteString(\"\\r\\n\")\n\tif err = bw.Flush(); err != nil {\n\t\treturn err\n\t}\n\n\tresp, err := http.ReadResponse(br, &http.Request{Method: \"GET\"})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif resp.StatusCode != 101 {\n\t\treturn ErrBadStatus\n\t}\n\tif strings.ToLower(resp.Header.Get(\"Upgrade\")) != \"websocket\" ||\n\t\tstrings.ToLower(resp.Header.Get(\"Connection\")) != \"upgrade\" {\n\t\treturn ErrBadUpgrade\n\t}\n\texpectedAccept, err := getNonceAccept(nonce)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif resp.Header.Get(\"Sec-WebSocket-Accept\") != string(expectedAccept) {\n\t\treturn ErrChallengeResponse\n\t}\n\tif resp.Header.Get(\"Sec-WebSocket-Extensions\") != \"\" {\n\t\treturn ErrUnsupportedExtensions\n\t}\n\tofferedProtocol := resp.Header.Get(\"Sec-WebSocket-Protocol\")\n\tif offeredProtocol != \"\" {\n\t\tprotocolMatched := false\n\t\tfor i := 0; i < len(config.Protocol); i++ {\n\t\t\tif config.Protocol[i] == offeredProtocol {\n\t\t\t\tprotocolMatched = true\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tif !protocolMatched {\n\t\t\treturn ErrBadWebSocketProtocol\n\t\t}\n\t\tconfig.Protocol = []string{offeredProtocol}\n\t}\n\n\treturn nil\n}\n\n// newHybiClientConn creates a client WebSocket connection after handshake.\nfunc newHybiClientConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser) *Conn {\n\treturn newHybiConn(config, buf, rwc, nil)\n}\n\n// A HybiServerHandshaker performs a server handshake using hybi draft protocol.\ntype hybiServerHandshaker struct {\n\t*Config\n\taccept []byte\n}\n\nfunc (c *hybiServerHandshaker) ReadHandshake(buf *bufio.Reader, req *http.Request) (code int, err error) {\n\tc.Version = ProtocolVersionHybi13\n\tif req.Method != \"GET\" {\n\t\treturn http.StatusMethodNotAllowed, ErrBadRequestMethod\n\t}\n\t// HTTP version can be safely ignored.\n\n\tif strings.ToLower(req.Header.Get(\"Upgrade\")) != \"websocket\" ||\n\t\t!strings.Contains(strings.ToLower(req.Header.Get(\"Connection\")), \"upgrade\") {\n\t\treturn http.StatusBadRequest, ErrNotWebSocket\n\t}\n\n\tkey := req.Header.Get(\"Sec-Websocket-Key\")\n\tif key == \"\" {\n\t\treturn http.StatusBadRequest, ErrChallengeResponse\n\t}\n\tversion := req.Header.Get(\"Sec-Websocket-Version\")\n\tswitch version {\n\tcase \"13\":\n\t\tc.Version = ProtocolVersionHybi13\n\tdefault:\n\t\treturn http.StatusBadRequest, ErrBadWebSocketVersion\n\t}\n\tvar scheme string\n\tif req.TLS != nil {\n\t\tscheme = \"wss\"\n\t} else {\n\t\tscheme = \"ws\"\n\t}\n\tc.Location, err = url.ParseRequestURI(scheme + \"://\" + req.Host + req.URL.RequestURI())\n\tif err != nil {\n\t\treturn http.StatusBadRequest, err\n\t}\n\tprotocol := strings.TrimSpace(req.Header.Get(\"Sec-Websocket-Protocol\"))\n\tif protocol != \"\" {\n\t\tprotocols := strings.Split(protocol, \",\")\n\t\tfor i := 0; i < len(protocols); i++ {\n\t\t\tc.Protocol = append(c.Protocol, strings.TrimSpace(protocols[i]))\n\t\t}\n\t}\n\tc.accept, err = getNonceAccept([]byte(key))\n\tif err != nil {\n\t\treturn http.StatusInternalServerError, err\n\t}\n\treturn http.StatusSwitchingProtocols, nil\n}\n\n// Origin parses the Origin header in req.\n// If the Origin header is not set, it returns nil and nil.\nfunc Origin(config *Config, req *http.Request) (*url.URL, error) {\n\tvar origin string\n\tswitch config.Version {\n\tcase ProtocolVersionHybi13:\n\t\torigin = req.Header.Get(\"Origin\")\n\t}\n\tif origin == \"\" {\n\t\treturn nil, nil\n\t}\n\treturn url.ParseRequestURI(origin)\n}\n\nfunc (c *hybiServerHandshaker) AcceptHandshake(buf *bufio.Writer) (err error) {\n\tif len(c.Protocol) > 0 {\n\t\tif len(c.Protocol) != 1 {\n\t\t\t// You need choose a Protocol in Handshake func in Server.\n\t\t\treturn ErrBadWebSocketProtocol\n\t\t}\n\t}\n\tbuf.WriteString(\"HTTP/1.1 101 Switching Protocols\\r\\n\")\n\tbuf.WriteString(\"Upgrade: websocket\\r\\n\")\n\tbuf.WriteString(\"Connection: Upgrade\\r\\n\")\n\tbuf.WriteString(\"Sec-WebSocket-Accept: \" + string(c.accept) + \"\\r\\n\")\n\tif len(c.Protocol) > 0 {\n\t\tbuf.WriteString(\"Sec-WebSocket-Protocol: \" + c.Protocol[0] + \"\\r\\n\")\n\t}\n\t// TODO(ukai): send Sec-WebSocket-Extensions.\n\tif c.Header != nil {\n\t\terr := c.Header.WriteSubset(buf, handshakeHeader)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\tbuf.WriteString(\"\\r\\n\")\n\treturn buf.Flush()\n}\n\nfunc (c *hybiServerHandshaker) NewServerConn(buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn {\n\treturn newHybiServerConn(c.Config, buf, rwc, request)\n}\n\n// newHybiServerConn returns a new WebSocket connection speaking hybi draft protocol.\nfunc newHybiServerConn(config *Config, buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) *Conn {\n\treturn newHybiConn(config, buf, rwc, request)\n}\n"
  },
  {
    "path": "gossh/sys/websocket/server.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 websocket\n\nimport (\n\t\"bufio\"\n\t\"fmt\"\n\t\"io\"\n\t\"net/http\"\n)\n\nfunc newServerConn(rwc io.ReadWriteCloser, buf *bufio.ReadWriter, req *http.Request, config *Config, handshake func(*Config, *http.Request) error) (conn *Conn, err error) {\n\tvar hs serverHandshaker = &hybiServerHandshaker{Config: config}\n\tcode, err := hs.ReadHandshake(buf.Reader, req)\n\tif err == ErrBadWebSocketVersion {\n\t\tfmt.Fprintf(buf, \"HTTP/1.1 %03d %s\\r\\n\", code, http.StatusText(code))\n\t\tfmt.Fprintf(buf, \"Sec-WebSocket-Version: %s\\r\\n\", SupportedProtocolVersion)\n\t\tbuf.WriteString(\"\\r\\n\")\n\t\tbuf.WriteString(err.Error())\n\t\tbuf.Flush()\n\t\treturn\n\t}\n\tif err != nil {\n\t\tfmt.Fprintf(buf, \"HTTP/1.1 %03d %s\\r\\n\", code, http.StatusText(code))\n\t\tbuf.WriteString(\"\\r\\n\")\n\t\tbuf.WriteString(err.Error())\n\t\tbuf.Flush()\n\t\treturn\n\t}\n\tif handshake != nil {\n\t\terr = handshake(config, req)\n\t\tif err != nil {\n\t\t\tcode = http.StatusForbidden\n\t\t\tfmt.Fprintf(buf, \"HTTP/1.1 %03d %s\\r\\n\", code, http.StatusText(code))\n\t\t\tbuf.WriteString(\"\\r\\n\")\n\t\t\tbuf.Flush()\n\t\t\treturn\n\t\t}\n\t}\n\terr = hs.AcceptHandshake(buf.Writer)\n\tif err != nil {\n\t\tcode = http.StatusBadRequest\n\t\tfmt.Fprintf(buf, \"HTTP/1.1 %03d %s\\r\\n\", code, http.StatusText(code))\n\t\tbuf.WriteString(\"\\r\\n\")\n\t\tbuf.Flush()\n\t\treturn\n\t}\n\tconn = hs.NewServerConn(buf, rwc, req)\n\treturn\n}\n\n// Server represents a server of a WebSocket.\ntype Server struct {\n\t// Config is a WebSocket configuration for new WebSocket connection.\n\tConfig\n\n\t// Handshake is an optional function in WebSocket handshake.\n\t// For example, you can check, or don't check Origin header.\n\t// Another example, you can select config.Protocol.\n\tHandshake func(*Config, *http.Request) error\n\n\t// Handler handles a WebSocket connection.\n\tHandler\n}\n\n// ServeHTTP implements the http.Handler interface for a WebSocket\nfunc (s Server) ServeHTTP(w http.ResponseWriter, req *http.Request) {\n\ts.serveWebSocket(w, req)\n}\n\nfunc (s Server) serveWebSocket(w http.ResponseWriter, req *http.Request) {\n\trwc, buf, err := w.(http.Hijacker).Hijack()\n\tif err != nil {\n\t\tpanic(\"Hijack failed: \" + err.Error())\n\t}\n\t// The server should abort the WebSocket connection if it finds\n\t// the client did not send a handshake that matches with protocol\n\t// specification.\n\tdefer rwc.Close()\n\tconn, err := newServerConn(rwc, buf, req, &s.Config, s.Handshake)\n\tif err != nil {\n\t\treturn\n\t}\n\tif conn == nil {\n\t\tpanic(\"unexpected nil conn\")\n\t}\n\ts.Handler(conn)\n}\n\n// Handler is a simple interface to a WebSocket browser client.\n// It checks if Origin header is valid URL by default.\n// You might want to verify websocket.Conn.Config().Origin in the func.\n// If you use Server instead of Handler, you could call websocket.Origin and\n// check the origin in your Handshake func. So, if you want to accept\n// non-browser clients, which do not send an Origin header, set a\n// Server.Handshake that does not check the origin.\ntype Handler func(*Conn)\n\nfunc checkOrigin(config *Config, req *http.Request) (err error) {\n\tconfig.Origin, err = Origin(config, req)\n\tif err == nil && config.Origin == nil {\n\t\treturn fmt.Errorf(\"null origin\")\n\t}\n\treturn err\n}\n\n// ServeHTTP implements the http.Handler interface for a WebSocket\nfunc (h Handler) ServeHTTP(w http.ResponseWriter, req *http.Request) {\n\ts := Server{Handler: h, Handshake: checkOrigin}\n\ts.serveWebSocket(w, req)\n}\n"
  },
  {
    "path": "gossh/sys/websocket/websocket.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 websocket implements a client and server for the WebSocket protocol\n// as specified in RFC 6455.\n//\n// This package currently lacks some features found in an alternative\n// and more actively maintained WebSocket package:\n//\n//\thttps://pkg.go.dev/nhooyr.io/websocket\npackage websocket // import \"golang.org/x/net/websocket\"\n\nimport (\n\t\"bufio\"\n\t\"crypto/tls\"\n\t\"encoding/json\"\n\t\"errors\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"sync\"\n\t\"time\"\n)\n\nconst (\n\tProtocolVersionHybi13    = 13\n\tProtocolVersionHybi      = ProtocolVersionHybi13\n\tSupportedProtocolVersion = \"13\"\n\n\tContinuationFrame = 0\n\tTextFrame         = 1\n\tBinaryFrame       = 2\n\tCloseFrame        = 8\n\tPingFrame         = 9\n\tPongFrame         = 10\n\tUnknownFrame      = 255\n\n\tDefaultMaxPayloadBytes = 32 << 20 // 32MB\n)\n\n// ProtocolError represents WebSocket protocol errors.\ntype ProtocolError struct {\n\tErrorString string\n}\n\nfunc (err *ProtocolError) Error() string { return err.ErrorString }\n\nvar (\n\tErrBadProtocolVersion   = &ProtocolError{\"bad protocol version\"}\n\tErrBadScheme            = &ProtocolError{\"bad scheme\"}\n\tErrBadStatus            = &ProtocolError{\"bad status\"}\n\tErrBadUpgrade           = &ProtocolError{\"missing or bad upgrade\"}\n\tErrBadWebSocketOrigin   = &ProtocolError{\"missing or bad WebSocket-Origin\"}\n\tErrBadWebSocketLocation = &ProtocolError{\"missing or bad WebSocket-Location\"}\n\tErrBadWebSocketProtocol = &ProtocolError{\"missing or bad WebSocket-Protocol\"}\n\tErrBadWebSocketVersion  = &ProtocolError{\"missing or bad WebSocket Version\"}\n\tErrChallengeResponse    = &ProtocolError{\"mismatch challenge/response\"}\n\tErrBadFrame             = &ProtocolError{\"bad frame\"}\n\tErrBadFrameBoundary     = &ProtocolError{\"not on frame boundary\"}\n\tErrNotWebSocket         = &ProtocolError{\"not websocket protocol\"}\n\tErrBadRequestMethod     = &ProtocolError{\"bad method\"}\n\tErrNotSupported         = &ProtocolError{\"not supported\"}\n)\n\n// ErrFrameTooLarge is returned by Codec's Receive method if payload size\n// exceeds limit set by Conn.MaxPayloadBytes\nvar ErrFrameTooLarge = errors.New(\"websocket: frame payload size exceeds limit\")\n\n// Addr is an implementation of net.Addr for WebSocket.\ntype Addr struct {\n\t*url.URL\n}\n\n// Network returns the network type for a WebSocket, \"websocket\".\nfunc (addr *Addr) Network() string { return \"websocket\" }\n\n// Config is a WebSocket configuration\ntype Config struct {\n\t// A WebSocket server address.\n\tLocation *url.URL\n\n\t// A Websocket client origin.\n\tOrigin *url.URL\n\n\t// WebSocket subprotocols.\n\tProtocol []string\n\n\t// WebSocket protocol version.\n\tVersion int\n\n\t// TLS config for secure WebSocket (wss).\n\tTlsConfig *tls.Config\n\n\t// Additional header fields to be sent in WebSocket opening handshake.\n\tHeader http.Header\n\n\t// Dialer used when opening websocket connections.\n\tDialer *net.Dialer\n\n\thandshakeData map[string]string\n}\n\n// serverHandshaker is an interface to handle WebSocket server side handshake.\ntype serverHandshaker interface {\n\t// ReadHandshake reads handshake request message from client.\n\t// Returns http response code and error if any.\n\tReadHandshake(buf *bufio.Reader, req *http.Request) (code int, err error)\n\n\t// AcceptHandshake accepts the client handshake request and sends\n\t// handshake response back to client.\n\tAcceptHandshake(buf *bufio.Writer) (err error)\n\n\t// NewServerConn creates a new WebSocket connection.\n\tNewServerConn(buf *bufio.ReadWriter, rwc io.ReadWriteCloser, request *http.Request) (conn *Conn)\n}\n\n// frameReader is an interface to read a WebSocket frame.\ntype frameReader interface {\n\t// Reader is to read payload of the frame.\n\tio.Reader\n\n\t// PayloadType returns payload type.\n\tPayloadType() byte\n\n\t// HeaderReader returns a reader to read header of the frame.\n\tHeaderReader() io.Reader\n\n\t// TrailerReader returns a reader to read trailer of the frame.\n\t// If it returns nil, there is no trailer in the frame.\n\tTrailerReader() io.Reader\n\n\t// Len returns total length of the frame, including header and trailer.\n\tLen() int\n}\n\n// frameReaderFactory is an interface to creates new frame reader.\ntype frameReaderFactory interface {\n\tNewFrameReader() (r frameReader, err error)\n}\n\n// frameWriter is an interface to write a WebSocket frame.\ntype frameWriter interface {\n\t// Writer is to write payload of the frame.\n\tio.WriteCloser\n}\n\n// frameWriterFactory is an interface to create new frame writer.\ntype frameWriterFactory interface {\n\tNewFrameWriter(payloadType byte) (w frameWriter, err error)\n}\n\ntype frameHandler interface {\n\tHandleFrame(frame frameReader) (r frameReader, err error)\n\tWriteClose(status int) (err error)\n}\n\n// Conn represents a WebSocket connection.\n//\n// Multiple goroutines may invoke methods on a Conn simultaneously.\ntype Conn struct {\n\tconfig  *Config\n\trequest *http.Request\n\n\tbuf *bufio.ReadWriter\n\trwc io.ReadWriteCloser\n\n\trio sync.Mutex\n\tframeReaderFactory\n\tframeReader\n\n\twio sync.Mutex\n\tframeWriterFactory\n\n\tframeHandler\n\tPayloadType        byte\n\tdefaultCloseStatus int\n\n\t// MaxPayloadBytes limits the size of frame payload received over Conn\n\t// by Codec's Receive method. If zero, DefaultMaxPayloadBytes is used.\n\tMaxPayloadBytes int\n}\n\n// Read implements the io.Reader interface:\n// it reads data of a frame from the WebSocket connection.\n// if msg is not large enough for the frame data, it fills the msg and next Read\n// will read the rest of the frame data.\n// it reads Text frame or Binary frame.\nfunc (ws *Conn) Read(msg []byte) (n int, err error) {\n\tws.rio.Lock()\n\tdefer ws.rio.Unlock()\nagain:\n\tif ws.frameReader == nil {\n\t\tframe, err := ws.frameReaderFactory.NewFrameReader()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tws.frameReader, err = ws.frameHandler.HandleFrame(frame)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif ws.frameReader == nil {\n\t\t\tgoto again\n\t\t}\n\t}\n\tn, err = ws.frameReader.Read(msg)\n\tif err == io.EOF {\n\t\tif trailer := ws.frameReader.TrailerReader(); trailer != nil {\n\t\t\tio.Copy(ioutil.Discard, trailer)\n\t\t}\n\t\tws.frameReader = nil\n\t\tgoto again\n\t}\n\treturn n, err\n}\n\n// Write implements the io.Writer interface:\n// it writes data as a frame to the WebSocket connection.\nfunc (ws *Conn) Write(msg []byte) (n int, err error) {\n\tws.wio.Lock()\n\tdefer ws.wio.Unlock()\n\tw, err := ws.frameWriterFactory.NewFrameWriter(ws.PayloadType)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tn, err = w.Write(msg)\n\tw.Close()\n\treturn n, err\n}\n\n// Close implements the io.Closer interface.\nfunc (ws *Conn) Close() error {\n\terr := ws.frameHandler.WriteClose(ws.defaultCloseStatus)\n\terr1 := ws.rwc.Close()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn err1\n}\n\n// IsClientConn reports whether ws is a client-side connection.\nfunc (ws *Conn) IsClientConn() bool { return ws.request == nil }\n\n// IsServerConn reports whether ws is a server-side connection.\nfunc (ws *Conn) IsServerConn() bool { return ws.request != nil }\n\n// LocalAddr returns the WebSocket Origin for the connection for client, or\n// the WebSocket location for server.\nfunc (ws *Conn) LocalAddr() net.Addr {\n\tif ws.IsClientConn() {\n\t\treturn &Addr{ws.config.Origin}\n\t}\n\treturn &Addr{ws.config.Location}\n}\n\n// RemoteAddr returns the WebSocket location for the connection for client, or\n// the Websocket Origin for server.\nfunc (ws *Conn) RemoteAddr() net.Addr {\n\tif ws.IsClientConn() {\n\t\treturn &Addr{ws.config.Location}\n\t}\n\treturn &Addr{ws.config.Origin}\n}\n\nvar errSetDeadline = errors.New(\"websocket: cannot set deadline: not using a net.Conn\")\n\n// SetDeadline sets the connection's network read & write deadlines.\nfunc (ws *Conn) SetDeadline(t time.Time) error {\n\tif conn, ok := ws.rwc.(net.Conn); ok {\n\t\treturn conn.SetDeadline(t)\n\t}\n\treturn errSetDeadline\n}\n\n// SetReadDeadline sets the connection's network read deadline.\nfunc (ws *Conn) SetReadDeadline(t time.Time) error {\n\tif conn, ok := ws.rwc.(net.Conn); ok {\n\t\treturn conn.SetReadDeadline(t)\n\t}\n\treturn errSetDeadline\n}\n\n// SetWriteDeadline sets the connection's network write deadline.\nfunc (ws *Conn) SetWriteDeadline(t time.Time) error {\n\tif conn, ok := ws.rwc.(net.Conn); ok {\n\t\treturn conn.SetWriteDeadline(t)\n\t}\n\treturn errSetDeadline\n}\n\n// Config returns the WebSocket config.\nfunc (ws *Conn) Config() *Config { return ws.config }\n\n// Request returns the http request upgraded to the WebSocket.\n// It is nil for client side.\nfunc (ws *Conn) Request() *http.Request { return ws.request }\n\n// Codec represents a symmetric pair of functions that implement a codec.\ntype Codec struct {\n\tMarshal   func(v any) (data []byte, payloadType byte, err error)\n\tUnmarshal func(data []byte, payloadType byte, v any) (err error)\n}\n\n// Send sends v marshaled by cd.Marshal as single frame to ws.\nfunc (cd Codec) Send(ws *Conn, v any) (err error) {\n\tdata, payloadType, err := cd.Marshal(v)\n\tif err != nil {\n\t\treturn err\n\t}\n\tws.wio.Lock()\n\tdefer ws.wio.Unlock()\n\tw, err := ws.frameWriterFactory.NewFrameWriter(payloadType)\n\tif err != nil {\n\t\treturn err\n\t}\n\t_, err = w.Write(data)\n\tw.Close()\n\treturn err\n}\n\n// Receive receives single frame from ws, unmarshaled by cd.Unmarshal and stores\n// in v. The whole frame payload is read to an in-memory buffer; max size of\n// payload is defined by ws.MaxPayloadBytes. If frame payload size exceeds\n// limit, ErrFrameTooLarge is returned; in this case frame is not read off wire\n// completely. The next call to Receive would read and discard leftover data of\n// previous oversized frame before processing next frame.\nfunc (cd Codec) Receive(ws *Conn, v any) (err error) {\n\tws.rio.Lock()\n\tdefer ws.rio.Unlock()\n\tif ws.frameReader != nil {\n\t\t_, err = io.Copy(ioutil.Discard, ws.frameReader)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tws.frameReader = nil\n\t}\nagain:\n\tframe, err := ws.frameReaderFactory.NewFrameReader()\n\tif err != nil {\n\t\treturn err\n\t}\n\tframe, err = ws.frameHandler.HandleFrame(frame)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif frame == nil {\n\t\tgoto again\n\t}\n\tmaxPayloadBytes := ws.MaxPayloadBytes\n\tif maxPayloadBytes == 0 {\n\t\tmaxPayloadBytes = DefaultMaxPayloadBytes\n\t}\n\tif hf, ok := frame.(*hybiFrameReader); ok && hf.header.Length > int64(maxPayloadBytes) {\n\t\t// payload size exceeds limit, no need to call Unmarshal\n\t\t//\n\t\t// set frameReader to current oversized frame so that\n\t\t// the next call to this function can drain leftover\n\t\t// data before processing the next frame\n\t\tws.frameReader = frame\n\t\treturn ErrFrameTooLarge\n\t}\n\tpayloadType := frame.PayloadType()\n\tdata, err := ioutil.ReadAll(frame)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn cd.Unmarshal(data, payloadType, v)\n}\n\nfunc marshal(v any) (msg []byte, payloadType byte, err error) {\n\tswitch data := v.(type) {\n\tcase string:\n\t\treturn []byte(data), TextFrame, nil\n\tcase []byte:\n\t\treturn data, BinaryFrame, nil\n\t}\n\treturn nil, UnknownFrame, ErrNotSupported\n}\n\nfunc unmarshal(msg []byte, payloadType byte, v any) (err error) {\n\tswitch data := v.(type) {\n\tcase *string:\n\t\t*data = string(msg)\n\t\treturn nil\n\tcase *[]byte:\n\t\t*data = msg\n\t\treturn nil\n\t}\n\treturn ErrNotSupported\n}\n\n/*\nMessage is a codec to send/receive text/binary data in a frame on WebSocket connection.\nTo send/receive text frame, use string type.\nTo send/receive binary frame, use []byte type.\n\nTrivial usage:\n\n\timport \"websocket\"\n\n\t// receive text frame\n\tvar message string\n\twebsocket.Message.Receive(ws, &message)\n\n\t// send text frame\n\tmessage = \"hello\"\n\twebsocket.Message.Send(ws, message)\n\n\t// receive binary frame\n\tvar data []byte\n\twebsocket.Message.Receive(ws, &data)\n\n\t// send binary frame\n\tdata = []byte{0, 1, 2}\n\twebsocket.Message.Send(ws, data)\n*/\nvar Message = Codec{marshal, unmarshal}\n\nfunc jsonMarshal(v any) (msg []byte, payloadType byte, err error) {\n\tmsg, err = json.Marshal(v)\n\treturn msg, TextFrame, err\n}\n\nfunc jsonUnmarshal(msg []byte, payloadType byte, v any) (err error) {\n\treturn json.Unmarshal(msg, v)\n}\n\n/*\nJSON is a codec to send/receive JSON data in a frame from a WebSocket connection.\n\nTrivial usage:\n\n\timport \"websocket\"\n\n\ttype T struct {\n\t\tMsg string\n\t\tCount int\n\t}\n\n\t// receive JSON type T\n\tvar data T\n\twebsocket.JSON.Receive(ws, &data)\n\n\t// send JSON type T\n\twebsocket.JSON.Send(ws, data)\n*/\nvar JSON = Codec{jsonMarshal, jsonUnmarshal}\n"
  },
  {
    "path": "gossh/sys/windows/aliases.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && go1.9\n\npackage windows\n\nimport \"syscall\"\n\ntype Errno = syscall.Errno\ntype SysProcAttr = syscall.SysProcAttr\n"
  },
  {
    "path": "gossh/sys/windows/dll_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"sync\"\n\t\"sync/atomic\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// We need to use LoadLibrary and GetProcAddress from the Go runtime, because\n// the these symbols are loaded by the system linker and are required to\n// dynamically load additional symbols. Note that in the Go runtime, these\n// return syscall.Handle and syscall.Errno, but these are the same, in fact,\n// as windows.Handle and windows.Errno, and we intend to keep these the same.\n\n//go:linkname syscall_loadlibrary syscall.loadlibrary\nfunc syscall_loadlibrary(filename *uint16) (handle Handle, err Errno)\n\n//go:linkname syscall_getprocaddress syscall.getprocaddress\nfunc syscall_getprocaddress(handle Handle, procname *uint8) (proc uintptr, err Errno)\n\n// DLLError describes reasons for DLL load failures.\ntype DLLError struct {\n\tErr     error\n\tObjName string\n\tMsg     string\n}\n\nfunc (e *DLLError) Error() string { return e.Msg }\n\nfunc (e *DLLError) Unwrap() error { return e.Err }\n\n// A DLL implements access to a single DLL.\ntype DLL struct {\n\tName   string\n\tHandle Handle\n}\n\n// LoadDLL loads DLL file into memory.\n//\n// Warning: using LoadDLL without an absolute path name is subject to\n// DLL preloading attacks. To safely load a system DLL, use 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// FindProcByOrdinal searches DLL d for procedure by ordinal and returns *Proc\n// if found. It returns an error if search fails.\nfunc (d *DLL) FindProcByOrdinal(ordinal uintptr) (proc *Proc, err error) {\n\ta, e := GetProcAddressByOrdinal(d.Handle, ordinal)\n\tname := \"#\" + itoa(int(ordinal))\n\tif e != nil {\n\t\treturn nil, &DLLError{\n\t\t\tErr:     e,\n\t\t\tObjName: name,\n\t\t\tMsg:     \"Failed to find \" + name + \" procedure in \" + d.Name + \": \" + e.Error(),\n\t\t}\n\t}\n\tp := &Proc{\n\t\tDll:  d,\n\t\tName: name,\n\t\taddr: a,\n\t}\n\treturn p, nil\n}\n\n// MustFindProcByOrdinal is like FindProcByOrdinal but panics if search fails.\nfunc (d *DLL) MustFindProcByOrdinal(ordinal uintptr) *Proc {\n\tp, e := d.FindProcByOrdinal(ordinal)\n\tif e != nil {\n\t\tpanic(e)\n\t}\n\treturn p\n}\n\n// Release unloads DLL d from memory.\nfunc (d *DLL) Release() (err error) {\n\treturn FreeLibrary(d.Handle)\n}\n\n// A Proc implements access to a procedure inside a DLL.\ntype Proc struct {\n\tDll  *DLL\n\tName string\n\taddr uintptr\n}\n\n// Addr returns the address of the procedure represented by p.\n// The return value can be passed to Syscall to run the procedure.\nfunc (p *Proc) Addr() uintptr {\n\treturn p.addr\n}\n\n//go:uintptrescapes\n\n// Call executes procedure p with arguments a. It will panic, if more than 15 arguments\n// are supplied.\n//\n// The returned error is always non-nil, constructed from the result of GetLastError.\n// Callers must inspect the primary return value to decide whether an error occurred\n// (according to the semantics of the specific function being called) before consulting\n// the error. The error will be guaranteed to contain windows.Errno.\nfunc (p *Proc) Call(a ...uintptr) (r1, r2 uintptr, lastErr error) {\n\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\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": "gossh/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//go: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": "gossh/sys/windows/env_windows.go",
    "content": "// Copyright 2010 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows environment variables.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nfunc Getenv(key string) (value string, found bool) {\n\treturn syscall.Getenv(key)\n}\n\nfunc Setenv(key, value string) error {\n\treturn syscall.Setenv(key, value)\n}\n\nfunc Clearenv() {\n\tsyscall.Clearenv()\n}\n\nfunc Environ() []string {\n\treturn syscall.Environ()\n}\n\n// Returns a default environment associated with the token, rather than the current\n// process. If inheritExisting is true, then this environment also inherits the\n// environment of the current process.\nfunc (token Token) Environ(inheritExisting bool) (env []string, err error) {\n\tvar block *uint16\n\terr = CreateEnvironmentBlock(&block, token, inheritExisting)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer DestroyEnvironmentBlock(block)\n\tsize := unsafe.Sizeof(*block)\n\tfor *block != 0 {\n\t\t// find NUL terminator\n\t\tend := unsafe.Pointer(block)\n\t\tfor *(*uint16)(end) != 0 {\n\t\t\tend = unsafe.Add(end, size)\n\t\t}\n\n\t\tentry := unsafe.Slice(block, (uintptr(end)-uintptr(unsafe.Pointer(block)))/size)\n\t\tenv = append(env, UTF16ToString(entry))\n\t\tblock = (*uint16)(unsafe.Add(end, size))\n\t}\n\treturn env, nil\n}\n\nfunc Unsetenv(key string) error {\n\treturn syscall.Unsetenv(key)\n}\n"
  },
  {
    "path": "gossh/sys/windows/eventlog.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tEVENTLOG_SUCCESS          = 0\n\tEVENTLOG_ERROR_TYPE       = 1\n\tEVENTLOG_WARNING_TYPE     = 2\n\tEVENTLOG_INFORMATION_TYPE = 4\n\tEVENTLOG_AUDIT_SUCCESS    = 8\n\tEVENTLOG_AUDIT_FAILURE    = 16\n)\n\n//sys\tRegisterEventSource(uncServerName *uint16, sourceName *uint16) (handle Handle, err error) [failretval==0] = advapi32.RegisterEventSourceW\n//sys\tDeregisterEventSource(handle Handle) (err error) = advapi32.DeregisterEventSource\n//sys\tReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) = advapi32.ReportEventW\n"
  },
  {
    "path": "gossh/sys/windows/exec_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Fork, exec, wait, etc.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"unsafe\"\n)\n\n// EscapeArg rewrites command line argument s as prescribed\n// in http://msdn.microsoft.com/en-us/library/ms880421.\n// This function returns \"\" (2 double quotes) if s is empty.\n// Alternatively, these transformations are done:\n//   - every back slash (\\) is doubled, but only if immediately\n//     followed by double quote (\");\n//   - every double quote (\") is escaped by back slash (\\);\n//   - finally, s is wrapped with double quotes (arg -> \"arg\"),\n//     but only if there is space or tab inside s.\nfunc EscapeArg(s string) string {\n\tif len(s) == 0 {\n\t\treturn `\"\"`\n\t}\n\tn := len(s)\n\thasSpace := false\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tcase '\"', '\\\\':\n\t\t\tn++\n\t\tcase ' ', '\\t':\n\t\t\thasSpace = true\n\t\t}\n\t}\n\tif hasSpace {\n\t\tn += 2 // Reserve space for quotes.\n\t}\n\tif n == len(s) {\n\t\treturn s\n\t}\n\n\tqs := make([]byte, n)\n\tj := 0\n\tif hasSpace {\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\tslashes := 0\n\tfor i := 0; i < len(s); i++ {\n\t\tswitch s[i] {\n\t\tdefault:\n\t\t\tslashes = 0\n\t\t\tqs[j] = s[i]\n\t\tcase '\\\\':\n\t\t\tslashes++\n\t\t\tqs[j] = s[i]\n\t\tcase '\"':\n\t\t\tfor ; slashes > 0; slashes-- {\n\t\t\t\tqs[j] = '\\\\'\n\t\t\t\tj++\n\t\t\t}\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t\tqs[j] = s[i]\n\t\t}\n\t\tj++\n\t}\n\tif hasSpace {\n\t\tfor ; slashes > 0; slashes-- {\n\t\t\tqs[j] = '\\\\'\n\t\t\tj++\n\t\t}\n\t\tqs[j] = '\"'\n\t\tj++\n\t}\n\treturn string(qs[:j])\n}\n\n// ComposeCommandLine escapes and joins the given arguments suitable for use as a Windows command line,\n// in CreateProcess's CommandLine argument, CreateService/ChangeServiceConfig's BinaryPathName argument,\n// or any program that uses CommandLineToArgv.\nfunc ComposeCommandLine(args []string) string {\n\tif len(args) == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Per https://learn.microsoft.com/en-us/windows/win32/api/shellapi/nf-shellapi-commandlinetoargvw:\n\t// “This function accepts command lines that contain a program name; the\n\t// program name can be enclosed in quotation marks or not.”\n\t//\n\t// Unfortunately, it provides no means of escaping interior quotation marks\n\t// within that program name, and we have no way to report them here.\n\tprog := args[0]\n\tmustQuote := len(prog) == 0\n\tfor i := 0; i < len(prog); i++ {\n\t\tc := prog[i]\n\t\tif c <= ' ' || (c == '\"' && i == 0) {\n\t\t\t// Force quotes for not only the ASCII space and tab as described in the\n\t\t\t// MSDN article, but also ASCII control characters.\n\t\t\t// The documentation for CommandLineToArgvW doesn't say what happens when\n\t\t\t// the first argument is not a valid program name, but it empirically\n\t\t\t// seems to drop unquoted control characters.\n\t\t\tmustQuote = true\n\t\t\tbreak\n\t\t}\n\t}\n\tvar commandLine []byte\n\tif mustQuote {\n\t\tcommandLine = make([]byte, 0, len(prog)+2)\n\t\tcommandLine = append(commandLine, '\"')\n\t\tfor i := 0; i < len(prog); i++ {\n\t\t\tc := prog[i]\n\t\t\tif c == '\"' {\n\t\t\t\t// This quote would interfere with our surrounding quotes.\n\t\t\t\t// We have no way to report an error, so just strip out\n\t\t\t\t// the offending character instead.\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcommandLine = append(commandLine, c)\n\t\t}\n\t\tcommandLine = append(commandLine, '\"')\n\t} else {\n\t\tif len(args) == 1 {\n\t\t\t// args[0] is a valid command line representing itself.\n\t\t\t// No need to allocate a new slice or string for it.\n\t\t\treturn prog\n\t\t}\n\t\tcommandLine = []byte(prog)\n\t}\n\n\tfor _, arg := range args[1:] {\n\t\tcommandLine = append(commandLine, ' ')\n\t\t// TODO(bcmills): since we're already appending to a slice, it would be nice\n\t\t// to avoid the intermediate allocations of EscapeArg.\n\t\t// Perhaps we can factor out an appendEscapedArg function.\n\t\tcommandLine = append(commandLine, EscapeArg(arg)...)\n\t}\n\treturn string(commandLine)\n}\n\n// DecomposeCommandLine breaks apart its argument command line into unescaped parts using CommandLineToArgv,\n// as gathered from GetCommandLine, QUERY_SERVICE_CONFIG's BinaryPathName argument, or elsewhere that\n// command lines are passed around.\n// DecomposeCommandLine returns an error if commandLine contains NUL.\nfunc DecomposeCommandLine(commandLine string) ([]string, error) {\n\tif len(commandLine) == 0 {\n\t\treturn []string{}, nil\n\t}\n\tutf16CommandLine, err := UTF16FromString(commandLine)\n\tif err != nil {\n\t\treturn nil, errorspkg.New(\"string with NUL passed to DecomposeCommandLine\")\n\t}\n\tvar argc int32\n\targv, err := commandLineToArgv(&utf16CommandLine[0], &argc)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(argv)))\n\n\tvar args []string\n\tfor _, p := range unsafe.Slice(argv, argc) {\n\t\targs = append(args, UTF16PtrToString(p))\n\t}\n\treturn args, nil\n}\n\n// CommandLineToArgv parses a Unicode command line string and sets\n// argc to the number of parsed arguments.\n//\n// The returned memory should be freed using a single call to LocalFree.\n//\n// Note that although the return type of CommandLineToArgv indicates 8192\n// entries of up to 8192 characters each, the actual count of parsed arguments\n// may exceed 8192, and the documentation for CommandLineToArgvW does not mention\n// any bound on the lengths of the individual argument strings.\n// (See https://go.dev/issue/63236.)\nfunc CommandLineToArgv(cmd *uint16, argc *int32) (argv *[8192]*[8192]uint16, err error) {\n\targp, err := commandLineToArgv(cmd, argc)\n\targv = (*[8192]*[8192]uint16)(unsafe.Pointer(argp))\n\treturn argv, err\n}\n\nfunc CloseOnExec(fd Handle) {\n\tSetHandleInformation(Handle(fd), HANDLE_FLAG_INHERIT, 0)\n}\n\n// FullPath retrieves the full path of the specified file.\nfunc FullPath(name string) (path string, err error) {\n\tp, err := UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tn := uint32(100)\n\tfor {\n\t\tbuf := make([]uint16, n)\n\t\tn, err = GetFullPathName(p, uint32(len(buf)), &buf[0], nil)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn UTF16ToString(buf[:n]), nil\n\t\t}\n\t}\n}\n\n// NewProcThreadAttributeList allocates a new ProcThreadAttributeListContainer, with the requested maximum number of attributes.\nfunc NewProcThreadAttributeList(maxAttrCount uint32) (*ProcThreadAttributeListContainer, error) {\n\tvar size uintptr\n\terr := initializeProcThreadAttributeList(nil, maxAttrCount, 0, &size)\n\tif err != ERROR_INSUFFICIENT_BUFFER {\n\t\tif err == nil {\n\t\t\treturn nil, errorspkg.New(\"unable to query buffer size from InitializeProcThreadAttributeList\")\n\t\t}\n\t\treturn nil, err\n\t}\n\talloc, err := LocalAlloc(LMEM_FIXED, uint32(size))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// size is guaranteed to be ≥1 by InitializeProcThreadAttributeList.\n\tal := &ProcThreadAttributeListContainer{data: (*ProcThreadAttributeList)(unsafe.Pointer(alloc))}\n\terr = initializeProcThreadAttributeList(al.data, maxAttrCount, 0, &size)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn al, err\n}\n\n// Update modifies the ProcThreadAttributeList using UpdateProcThreadAttribute.\nfunc (al *ProcThreadAttributeListContainer) Update(attribute uintptr, value unsafe.Pointer, size uintptr) error {\n\tal.pointers = append(al.pointers, value)\n\treturn updateProcThreadAttribute(al.data, 0, attribute, value, size, nil, nil)\n}\n\n// Delete frees ProcThreadAttributeList's resources.\nfunc (al *ProcThreadAttributeListContainer) Delete() {\n\tdeleteProcThreadAttributeList(al.data)\n\tLocalFree(Handle(unsafe.Pointer(al.data)))\n\tal.data = nil\n\tal.pointers = nil\n}\n\n// List returns the actual ProcThreadAttributeList to be passed to StartupInfoEx.\nfunc (al *ProcThreadAttributeListContainer) List() *ProcThreadAttributeList {\n\treturn al.data\n}\n"
  },
  {
    "path": "gossh/sys/windows/memory_windows.go",
    "content": "// Copyright 2017 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nconst (\n\tMEM_COMMIT      = 0x00001000\n\tMEM_RESERVE     = 0x00002000\n\tMEM_DECOMMIT    = 0x00004000\n\tMEM_RELEASE     = 0x00008000\n\tMEM_RESET       = 0x00080000\n\tMEM_TOP_DOWN    = 0x00100000\n\tMEM_WRITE_WATCH = 0x00200000\n\tMEM_PHYSICAL    = 0x00400000\n\tMEM_RESET_UNDO  = 0x01000000\n\tMEM_LARGE_PAGES = 0x20000000\n\n\tPAGE_NOACCESS          = 0x00000001\n\tPAGE_READONLY          = 0x00000002\n\tPAGE_READWRITE         = 0x00000004\n\tPAGE_WRITECOPY         = 0x00000008\n\tPAGE_EXECUTE           = 0x00000010\n\tPAGE_EXECUTE_READ      = 0x00000020\n\tPAGE_EXECUTE_READWRITE = 0x00000040\n\tPAGE_EXECUTE_WRITECOPY = 0x00000080\n\tPAGE_GUARD             = 0x00000100\n\tPAGE_NOCACHE           = 0x00000200\n\tPAGE_WRITECOMBINE      = 0x00000400\n\tPAGE_TARGETS_INVALID   = 0x40000000\n\tPAGE_TARGETS_NO_UPDATE = 0x40000000\n\n\tQUOTA_LIMITS_HARDWS_MIN_DISABLE = 0x00000002\n\tQUOTA_LIMITS_HARDWS_MIN_ENABLE  = 0x00000001\n\tQUOTA_LIMITS_HARDWS_MAX_DISABLE = 0x00000008\n\tQUOTA_LIMITS_HARDWS_MAX_ENABLE  = 0x00000004\n)\n\ntype MemoryBasicInformation struct {\n\tBaseAddress       uintptr\n\tAllocationBase    uintptr\n\tAllocationProtect uint32\n\tPartitionId       uint16\n\tRegionSize        uintptr\n\tState             uint32\n\tProtect           uint32\n\tType              uint32\n}\n"
  },
  {
    "path": "gossh/sys/windows/mkerrors.bash",
    "content": "#!/bin/bash\n\n# Copyright 2019 The Go Authors. All rights reserved.\n# Use of this source code is governed by a BSD-style\n# license that can be found in the LICENSE file.\n\nset -e\nshopt -s nullglob\n\nwinerror=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/winerror.h | sort -Vr | head -n 1)\"\n[[ -n $winerror ]] || { echo \"Unable to find winerror.h\" >&2; exit 1; }\nntstatus=\"$(printf '%s\\n' \"/mnt/c/Program Files (x86)/Windows Kits/\"/*/Include/*/shared/ntstatus.h | sort -Vr | head -n 1)\"\n[[ -n $ntstatus ]] || { echo \"Unable to find ntstatus.h\" >&2; exit 1; }\n\ndeclare -A errors\n\n{\n\techo \"// Code generated by 'mkerrors.bash'; DO NOT EDIT.\"\n\techo\n\techo \"package windows\"\n\techo \"import \\\"syscall\\\"\"\n\techo \"const (\"\n\n\twhile read -r line; do\n\t\tunset vtype\n\t\tif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?([A-Z][A-Z0-9_]+k?)\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +([A-Z0-9_]+\\()?((0x)?[0-9A-Fa-f]+)L?\\)? ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telif [[ $line =~ ^#define\\ +([A-Z0-9_]+k?)\\ +\\(\\(([A-Z]+)\\)((0x)?[0-9A-Fa-f]+)L?\\) ]]; then\n\t\t\tkey=\"${BASH_REMATCH[1]}\"\n\t\t\tvalue=\"${BASH_REMATCH[3]}\"\n\t\t\tvtype=\"${BASH_REMATCH[2]}\"\n\t\telse\n\t\t\tcontinue\n\t\tfi\n\t\t[[ -n $key && -n $value ]] || continue\n\t\t[[ -z ${errors[\"$key\"]} ]] || continue\n\t\terrors[\"$key\"]=\"$value\"\n\t\tif [[ -v vtype ]]; then\n\t\t\tif [[ $key == FACILITY_* || $key == NO_ERROR ]]; then\n\t\t\t\tvtype=\"\"\n\t\t\telif [[ $vtype == *HANDLE* || $vtype == *HRESULT* ]]; then\n\t\t\t\tvtype=\"Handle\"\n\t\t\telse\n\t\t\t\tvtype=\"syscall.Errno\"\n\t\t\tfi\n\t\t\tlast_vtype=\"$vtype\"\n\t\telse\n\t\t\tvtype=\"\"\n\t\t\tif [[ $last_vtype == Handle && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"S_OK\"\n\t\t\telif [[ $last_vtype == syscall.Errno && $value == NO_ERROR ]]; then\n\t\t\t\tvalue=\"ERROR_SUCCESS\"\n\t\t\tfi\n\t\tfi\n\n\t\techo \"$key $vtype = $value\"\n\tdone < \"$winerror\"\n\n\twhile read -r line; do\n\t\t[[ $line =~ ^#define\\ (STATUS_[^\\s]+)\\ +\\(\\(NTSTATUS\\)((0x)?[0-9a-fA-F]+)L?\\) ]] || continue\n\t\techo \"${BASH_REMATCH[1]} NTStatus = ${BASH_REMATCH[2]}\"\n\tdone < \"$ntstatus\"\n\n\techo \")\"\n} | gofmt > \"zerrors_windows.go\"\n"
  },
  {
    "path": "gossh/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": "gossh/sys/windows/mksyscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage windows\n\n//go:generate go run gossh/sys/windows/mkwinsyscall -output zsyscall_windows.go eventlog.go service.go syscall_windows.go security_windows.go setupapi_windows.go\n"
  },
  {
    "path": "gossh/sys/windows/mkwinsyscall/mkwinsyscall.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/*\nmkwinsyscall generates windows system call bodies\n\nIt parses all files specified on command line containing function\nprototypes (like syscall_windows.go) and prints system call bodies\nto standard output.\n\nThe prototypes are marked by lines beginning with \"//sys\" and read\nlike func declarations if //sys is replaced by func, but:\n\n  - The parameter lists must give a name for each argument. This\n    includes return parameters.\n\n  - The parameter lists must give a type for each argument:\n    the (x, y, z int) shorthand is not allowed.\n\n  - If the return parameter is an error number, it must be named err.\n\n  - If go func name needs to be different from its winapi dll name,\n    the winapi name could be specified at the end, after \"=\" sign, like\n    //sys LoadLibrary(libname string) (handle uint32, err error) = LoadLibraryA\n\n  - Each function that returns err needs to supply a condition, that\n    return value of winapi will be tested against to detect failure.\n    This would set err to windows \"last-error\", otherwise it will be nil.\n    The value can be provided at end of //sys declaration, like\n    //sys LoadLibrary(libname string) (handle uint32, err error) [failretval==-1] = LoadLibraryA\n    and is [failretval==0] by default.\n\n  - If the function name ends in a \"?\", then the function not existing is non-\n    fatal, and an error will be returned instead of panicking.\n\nUsage:\n\n\tmkwinsyscall [flags] [path ...]\n\nThe flags are:\n\n\t-output\n\t\tSpecify output file name (outputs to console if blank).\n\t-trace\n\t\tGenerate print statement after every syscall.\n*/\npackage main\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"go/format\"\n\t\"go/parser\"\n\t\"go/token\"\n\t\"io\"\n\t\"log\"\n\t\"os\"\n\t\"path/filepath\"\n\t\"runtime\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"text/template\"\n)\n\nvar (\n\tfilename       = flag.String(\"output\", \"\", \"output file name (standard output if omitted)\")\n\tprintTraceFlag = flag.Bool(\"trace\", false, \"generate print statement after every syscall\")\n\tsystemDLL      = flag.Bool(\"systemdll\", true, \"whether all DLLs should be loaded from the Windows system directory\")\n)\n\nfunc trim(s string) string {\n\treturn strings.Trim(s, \" \\t\")\n}\n\nvar packageName string\n\nfunc packagename() string {\n\treturn packageName\n}\n\nfunc windowsdot() string {\n\tif packageName == \"windows\" {\n\t\treturn \"\"\n\t}\n\treturn \"windows.\"\n}\n\nfunc syscalldot() string {\n\tif packageName == \"syscall\" {\n\t\treturn \"\"\n\t}\n\treturn \"syscall.\"\n}\n\n// Param is function parameter\ntype Param struct {\n\tName      string\n\tType      string\n\tfn        *Fn\n\ttmpVarIdx int\n}\n\n// tmpVar returns temp variable name that will be used to represent p during syscall.\nfunc (p *Param) tmpVar() string {\n\tif p.tmpVarIdx < 0 {\n\t\tp.tmpVarIdx = p.fn.curTmpVarIdx\n\t\tp.fn.curTmpVarIdx++\n\t}\n\treturn fmt.Sprintf(\"_p%d\", p.tmpVarIdx)\n}\n\n// BoolTmpVarCode returns source code for bool temp variable.\nfunc (p *Param) BoolTmpVarCode() string {\n\tconst code = `var %[1]s uint32\n\tif %[2]s {\n\t\t%[1]s = 1\n\t}`\n\treturn fmt.Sprintf(code, p.tmpVar(), p.Name)\n}\n\n// BoolPointerTmpVarCode returns source code for bool temp variable.\nfunc (p *Param) BoolPointerTmpVarCode() string {\n\tconst code = `var %[1]s uint32\n\tif *%[2]s {\n\t\t%[1]s = 1\n\t}`\n\treturn fmt.Sprintf(code, p.tmpVar(), p.Name)\n}\n\n// SliceTmpVarCode returns source code for slice temp variable.\nfunc (p *Param) SliceTmpVarCode() string {\n\tconst code = `var %s *%s\n\tif len(%s) > 0 {\n\t\t%s = &%s[0]\n\t}`\n\ttmp := p.tmpVar()\n\treturn fmt.Sprintf(code, tmp, p.Type[2:], p.Name, tmp, p.Name)\n}\n\n// StringTmpVarCode returns source code for string temp variable.\nfunc (p *Param) StringTmpVarCode() string {\n\terrvar := p.fn.Rets.ErrorVarName()\n\tif errvar == \"\" {\n\t\terrvar = \"_\"\n\t}\n\ttmp := p.tmpVar()\n\tconst code = `var %s %s\n\t%s, %s = %s(%s)`\n\ts := fmt.Sprintf(code, tmp, p.fn.StrconvType(), tmp, errvar, p.fn.StrconvFunc(), p.Name)\n\tif errvar == \"-\" {\n\t\treturn s\n\t}\n\tconst morecode = `\n\tif %s != nil {\n\t\treturn\n\t}`\n\treturn s + fmt.Sprintf(morecode, errvar)\n}\n\n// TmpVarCode returns source code for temp variable.\nfunc (p *Param) TmpVarCode() string {\n\tswitch {\n\tcase p.Type == \"bool\":\n\t\treturn p.BoolTmpVarCode()\n\tcase p.Type == \"*bool\":\n\t\treturn p.BoolPointerTmpVarCode()\n\tcase strings.HasPrefix(p.Type, \"[]\"):\n\t\treturn p.SliceTmpVarCode()\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// TmpVarReadbackCode returns source code for reading back the temp variable into the original variable.\nfunc (p *Param) TmpVarReadbackCode() string {\n\tswitch {\n\tcase p.Type == \"*bool\":\n\t\treturn fmt.Sprintf(\"*%s = %s != 0\", p.Name, p.tmpVar())\n\tdefault:\n\t\treturn \"\"\n\t}\n}\n\n// TmpVarHelperCode returns source code for helper's temp variable.\nfunc (p *Param) TmpVarHelperCode() string {\n\tif p.Type != \"string\" {\n\t\treturn \"\"\n\t}\n\treturn p.StringTmpVarCode()\n}\n\n// SyscallArgList returns source code fragments representing p parameter\n// in syscall. Slices are translated into 2 syscall parameters: pointer to\n// the first element and length.\nfunc (p *Param) SyscallArgList() []string {\n\tt := p.HelperType()\n\tvar s string\n\tswitch {\n\tcase t == \"*bool\":\n\t\ts = fmt.Sprintf(\"unsafe.Pointer(&%s)\", p.tmpVar())\n\tcase t[0] == '*':\n\t\ts = fmt.Sprintf(\"unsafe.Pointer(%s)\", p.Name)\n\tcase t == \"bool\":\n\t\ts = p.tmpVar()\n\tcase strings.HasPrefix(t, \"[]\"):\n\t\treturn []string{\n\t\t\tfmt.Sprintf(\"uintptr(unsafe.Pointer(%s))\", p.tmpVar()),\n\t\t\tfmt.Sprintf(\"uintptr(len(%s))\", p.Name),\n\t\t}\n\tdefault:\n\t\ts = p.Name\n\t}\n\treturn []string{fmt.Sprintf(\"uintptr(%s)\", s)}\n}\n\n// IsError determines if p parameter is used to return error.\nfunc (p *Param) IsError() bool {\n\treturn p.Name == \"err\" && p.Type == \"error\"\n}\n\n// HelperType returns type of parameter p used in helper function.\nfunc (p *Param) HelperType() string {\n\tif p.Type == \"string\" {\n\t\treturn p.fn.StrconvType()\n\t}\n\treturn p.Type\n}\n\n// join concatenates parameters ps into a string with sep separator.\n// Each parameter is converted into string by applying fn to it\n// before conversion.\nfunc join(ps []*Param, fn func(*Param) string, sep string) string {\n\tif len(ps) == 0 {\n\t\treturn \"\"\n\t}\n\ta := make([]string, 0)\n\tfor _, p := range ps {\n\t\ta = append(a, fn(p))\n\t}\n\treturn strings.Join(a, sep)\n}\n\n// Rets describes function return parameters.\ntype Rets struct {\n\tName          string\n\tType          string\n\tReturnsError  bool\n\tFailCond      string\n\tfnMaybeAbsent bool\n}\n\n// ErrorVarName returns error variable name for r.\nfunc (r *Rets) ErrorVarName() string {\n\tif r.ReturnsError {\n\t\treturn \"err\"\n\t}\n\tif r.Type == \"error\" {\n\t\treturn r.Name\n\t}\n\treturn \"\"\n}\n\n// ToParams converts r into slice of *Param.\nfunc (r *Rets) ToParams() []*Param {\n\tps := make([]*Param, 0)\n\tif len(r.Name) > 0 {\n\t\tps = append(ps, &Param{Name: r.Name, Type: r.Type})\n\t}\n\tif r.ReturnsError {\n\t\tps = append(ps, &Param{Name: \"err\", Type: \"error\"})\n\t}\n\treturn ps\n}\n\n// List returns source code of syscall return parameters.\nfunc (r *Rets) List() string {\n\ts := join(r.ToParams(), func(p *Param) string { return p.Name + \" \" + p.Type }, \", \")\n\tif len(s) > 0 {\n\t\ts = \"(\" + s + \")\"\n\t} else if r.fnMaybeAbsent {\n\t\ts = \"(err error)\"\n\t}\n\treturn s\n}\n\n// PrintList returns source code of trace printing part correspondent\n// to syscall return values.\nfunc (r *Rets) PrintList() string {\n\treturn join(r.ToParams(), func(p *Param) string { return fmt.Sprintf(`\"%s=\", %s, `, p.Name, p.Name) }, `\", \", `)\n}\n\n// SetReturnValuesCode returns source code that accepts syscall return values.\nfunc (r *Rets) SetReturnValuesCode() string {\n\tif r.Name == \"\" && !r.ReturnsError {\n\t\treturn \"\"\n\t}\n\tretvar := \"r0\"\n\tif r.Name == \"\" {\n\t\tretvar = \"r1\"\n\t}\n\terrvar := \"_\"\n\tif r.ReturnsError {\n\t\terrvar = \"e1\"\n\t}\n\treturn fmt.Sprintf(\"%s, _, %s := \", retvar, errvar)\n}\n\nfunc (r *Rets) useLongHandleErrorCode(retvar string) string {\n\tconst code = `if %s {\n\t\terr = errnoErr(e1)\n\t}`\n\tcond := retvar + \" == 0\"\n\tif r.FailCond != \"\" {\n\t\tcond = strings.Replace(r.FailCond, \"failretval\", retvar, 1)\n\t}\n\treturn fmt.Sprintf(code, cond)\n}\n\n// SetErrorCode returns source code that sets return parameters.\nfunc (r *Rets) SetErrorCode() string {\n\tconst code = `if r0 != 0 {\n\t\t%s = %sErrno(r0)\n\t}`\n\tconst ntstatus = `if r0 != 0 {\n\t\tntstatus = %sNTStatus(r0)\n\t}`\n\tif r.Name == \"\" && !r.ReturnsError {\n\t\treturn \"\"\n\t}\n\tif r.Name == \"\" {\n\t\treturn r.useLongHandleErrorCode(\"r1\")\n\t}\n\tif r.Type == \"error\" && r.Name == \"ntstatus\" {\n\t\treturn fmt.Sprintf(ntstatus, windowsdot())\n\t}\n\tif r.Type == \"error\" {\n\t\treturn fmt.Sprintf(code, r.Name, syscalldot())\n\t}\n\ts := \"\"\n\tswitch {\n\tcase r.Type[0] == '*':\n\t\ts = fmt.Sprintf(\"%s = (%s)(unsafe.Pointer(r0))\", r.Name, r.Type)\n\tcase r.Type == \"bool\":\n\t\ts = fmt.Sprintf(\"%s = r0 != 0\", r.Name)\n\tdefault:\n\t\ts = fmt.Sprintf(\"%s = %s(r0)\", r.Name, r.Type)\n\t}\n\tif !r.ReturnsError {\n\t\treturn s\n\t}\n\treturn s + \"\\n\\t\" + r.useLongHandleErrorCode(r.Name)\n}\n\n// Fn describes syscall function.\ntype Fn struct {\n\tName        string\n\tParams      []*Param\n\tRets        *Rets\n\tPrintTrace  bool\n\tdllname     string\n\tdllfuncname string\n\tsrc         string\n\t// TODO: get rid of this field and just use parameter index instead\n\tcurTmpVarIdx int // insure tmp variables have uniq names\n}\n\n// extractParams parses s to extract function parameters.\nfunc extractParams(s string, f *Fn) ([]*Param, error) {\n\ts = trim(s)\n\tif s == \"\" {\n\t\treturn nil, nil\n\t}\n\ta := strings.Split(s, \",\")\n\tps := make([]*Param, len(a))\n\tfor i := range ps {\n\t\ts2 := trim(a[i])\n\t\tb := strings.Split(s2, \" \")\n\t\tif len(b) != 2 {\n\t\t\tb = strings.Split(s2, \"\\t\")\n\t\t\tif len(b) != 2 {\n\t\t\t\treturn nil, errors.New(\"Could not extract function parameter from \\\"\" + s2 + \"\\\"\")\n\t\t\t}\n\t\t}\n\t\tps[i] = &Param{\n\t\t\tName:      trim(b[0]),\n\t\t\tType:      trim(b[1]),\n\t\t\tfn:        f,\n\t\t\ttmpVarIdx: -1,\n\t\t}\n\t}\n\treturn ps, nil\n}\n\n// extractSection extracts text out of string s starting after start\n// and ending just before end. found return value will indicate success,\n// and prefix, body and suffix will contain correspondent parts of string s.\nfunc extractSection(s string, start, end rune) (prefix, body, suffix string, found bool) {\n\ts = trim(s)\n\tif strings.HasPrefix(s, string(start)) {\n\t\t// no prefix\n\t\tbody = s[1:]\n\t} else {\n\t\ta := strings.SplitN(s, string(start), 2)\n\t\tif len(a) != 2 {\n\t\t\treturn \"\", \"\", s, false\n\t\t}\n\t\tprefix = a[0]\n\t\tbody = a[1]\n\t}\n\ta := strings.SplitN(body, string(end), 2)\n\tif len(a) != 2 {\n\t\treturn \"\", \"\", \"\", false\n\t}\n\treturn prefix, a[0], a[1], true\n}\n\n// newFn parses string s and return created function Fn.\nfunc newFn(s string) (*Fn, error) {\n\ts = trim(s)\n\tf := &Fn{\n\t\tRets:       &Rets{},\n\t\tsrc:        s,\n\t\tPrintTrace: *printTraceFlag,\n\t}\n\t// function name and args\n\tprefix, body, s, found := extractSection(s, '(', ')')\n\tif !found || prefix == \"\" {\n\t\treturn nil, errors.New(\"Could not extract function name and parameters from \\\"\" + f.src + \"\\\"\")\n\t}\n\tf.Name = prefix\n\tvar err error\n\tf.Params, err = extractParams(body, f)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\t// return values\n\t_, body, s, found = extractSection(s, '(', ')')\n\tif found {\n\t\tr, err := extractParams(body, f)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tswitch len(r) {\n\t\tcase 0:\n\t\tcase 1:\n\t\t\tif r[0].IsError() {\n\t\t\t\tf.Rets.ReturnsError = true\n\t\t\t} else {\n\t\t\t\tf.Rets.Name = r[0].Name\n\t\t\t\tf.Rets.Type = r[0].Type\n\t\t\t}\n\t\tcase 2:\n\t\t\tif !r[1].IsError() {\n\t\t\t\treturn nil, errors.New(\"Only last windows error is allowed as second return value in \\\"\" + f.src + \"\\\"\")\n\t\t\t}\n\t\t\tf.Rets.ReturnsError = true\n\t\t\tf.Rets.Name = r[0].Name\n\t\t\tf.Rets.Type = r[0].Type\n\t\tdefault:\n\t\t\treturn nil, errors.New(\"Too many return values in \\\"\" + f.src + \"\\\"\")\n\t\t}\n\t}\n\t// fail condition\n\t_, body, s, found = extractSection(s, '[', ']')\n\tif found {\n\t\tf.Rets.FailCond = body\n\t}\n\t// dll and dll function names\n\ts = trim(s)\n\tif s == \"\" {\n\t\treturn f, nil\n\t}\n\tif !strings.HasPrefix(s, \"=\") {\n\t\treturn nil, errors.New(\"Could not extract dll name from \\\"\" + f.src + \"\\\"\")\n\t}\n\ts = trim(s[1:])\n\tif i := strings.LastIndex(s, \".\"); i >= 0 {\n\t\tf.dllname = s[:i]\n\t\tf.dllfuncname = s[i+1:]\n\t} else {\n\t\tf.dllfuncname = s\n\t}\n\tif f.dllfuncname == \"\" {\n\t\treturn nil, fmt.Errorf(\"function name is not specified in %q\", s)\n\t}\n\tif n := f.dllfuncname; strings.HasSuffix(n, \"?\") {\n\t\tf.dllfuncname = n[:len(n)-1]\n\t\tf.Rets.fnMaybeAbsent = true\n\t}\n\treturn f, nil\n}\n\n// DLLName returns DLL name for function f.\nfunc (f *Fn) DLLName() string {\n\tif f.dllname == \"\" {\n\t\treturn \"kernel32\"\n\t}\n\treturn f.dllname\n}\n\n// DLLVar returns a valid Go identifier that represents DLLName.\nfunc (f *Fn) DLLVar() string {\n\tid := strings.Map(func(r rune) rune {\n\t\tswitch r {\n\t\tcase '.', '-':\n\t\t\treturn '_'\n\t\tdefault:\n\t\t\treturn r\n\t\t}\n\t}, f.DLLName())\n\tif !token.IsIdentifier(id) {\n\t\tpanic(fmt.Errorf(\"could not create Go identifier for DLLName %q\", f.DLLName()))\n\t}\n\treturn id\n}\n\n// DLLFuncName returns DLL function name for function f.\nfunc (f *Fn) DLLFuncName() string {\n\tif f.dllfuncname == \"\" {\n\t\treturn f.Name\n\t}\n\treturn f.dllfuncname\n}\n\n// ParamList returns source code for function f parameters.\nfunc (f *Fn) ParamList() string {\n\treturn join(f.Params, func(p *Param) string { return p.Name + \" \" + p.Type }, \", \")\n}\n\n// HelperParamList returns source code for helper function f parameters.\nfunc (f *Fn) HelperParamList() string {\n\treturn join(f.Params, func(p *Param) string { return p.Name + \" \" + p.HelperType() }, \", \")\n}\n\n// ParamPrintList returns source code of trace printing part correspondent\n// to syscall input parameters.\nfunc (f *Fn) ParamPrintList() string {\n\treturn join(f.Params, func(p *Param) string { return fmt.Sprintf(`\"%s=\", %s, `, p.Name, p.Name) }, `\", \", `)\n}\n\n// ParamCount return number of syscall parameters for function f.\nfunc (f *Fn) ParamCount() int {\n\tn := 0\n\tfor _, p := range f.Params {\n\t\tn += len(p.SyscallArgList())\n\t}\n\treturn n\n}\n\n// SyscallParamCount determines which version of Syscall/Syscall6/Syscall9/...\n// to use. It returns parameter count for correspondent SyscallX function.\nfunc (f *Fn) SyscallParamCount() int {\n\tn := f.ParamCount()\n\tswitch {\n\tcase n <= 3:\n\t\treturn 3\n\tcase n <= 6:\n\t\treturn 6\n\tcase n <= 9:\n\t\treturn 9\n\tcase n <= 12:\n\t\treturn 12\n\tcase n <= 15:\n\t\treturn 15\n\tcase n <= 42: // current SyscallN limit\n\t\treturn n\n\tdefault:\n\t\tpanic(\"too many arguments to system call\")\n\t}\n}\n\n// Syscall determines which SyscallX function to use for function f.\nfunc (f *Fn) Syscall() string {\n\tc := f.SyscallParamCount()\n\tif c == 3 {\n\t\treturn syscalldot() + \"Syscall\"\n\t}\n\tif c > 15 {\n\t\treturn syscalldot() + \"SyscallN\"\n\t}\n\treturn syscalldot() + \"Syscall\" + strconv.Itoa(c)\n}\n\n// SyscallParamList returns source code for SyscallX parameters for function f.\nfunc (f *Fn) SyscallParamList() string {\n\ta := make([]string, 0)\n\tfor _, p := range f.Params {\n\t\ta = append(a, p.SyscallArgList()...)\n\t}\n\tfor len(a) < f.SyscallParamCount() {\n\t\ta = append(a, \"0\")\n\t}\n\treturn strings.Join(a, \", \")\n}\n\n// HelperCallParamList returns source code of call into function f helper.\nfunc (f *Fn) HelperCallParamList() string {\n\ta := make([]string, 0, len(f.Params))\n\tfor _, p := range f.Params {\n\t\ts := p.Name\n\t\tif p.Type == \"string\" {\n\t\t\ts = p.tmpVar()\n\t\t}\n\t\ta = append(a, s)\n\t}\n\treturn strings.Join(a, \", \")\n}\n\n// MaybeAbsent returns source code for handling functions that are possibly unavailable.\nfunc (p *Fn) MaybeAbsent() string {\n\tif !p.Rets.fnMaybeAbsent {\n\t\treturn \"\"\n\t}\n\tconst code = `%[1]s = proc%[2]s.Find()\n\tif %[1]s != nil {\n\t\treturn\n\t}`\n\terrorVar := p.Rets.ErrorVarName()\n\tif errorVar == \"\" {\n\t\terrorVar = \"err\"\n\t}\n\treturn fmt.Sprintf(code, errorVar, p.DLLFuncName())\n}\n\n// IsUTF16 is true, if f is W (utf16) function. It is false\n// for all A (ascii) functions.\nfunc (f *Fn) IsUTF16() bool {\n\ts := f.DLLFuncName()\n\treturn s[len(s)-1] == 'W'\n}\n\n// StrconvFunc returns name of Go string to OS string function for f.\nfunc (f *Fn) StrconvFunc() string {\n\tif f.IsUTF16() {\n\t\treturn syscalldot() + \"UTF16PtrFromString\"\n\t}\n\treturn syscalldot() + \"BytePtrFromString\"\n}\n\n// StrconvType returns Go type name used for OS string for f.\nfunc (f *Fn) StrconvType() string {\n\tif f.IsUTF16() {\n\t\treturn \"*uint16\"\n\t}\n\treturn \"*byte\"\n}\n\n// HasStringParam is true, if f has at least one string parameter.\n// Otherwise it is false.\nfunc (f *Fn) HasStringParam() bool {\n\tfor _, p := range f.Params {\n\t\tif p.Type == \"string\" {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// HelperName returns name of function f helper.\nfunc (f *Fn) HelperName() string {\n\tif !f.HasStringParam() {\n\t\treturn f.Name\n\t}\n\treturn \"_\" + f.Name\n}\n\n// DLL is a DLL's filename and a string that is valid in a Go identifier that should be used when\n// naming a variable that refers to the DLL.\ntype DLL struct {\n\tName string\n\tVar  string\n}\n\n// Source files and functions.\ntype Source struct {\n\tFuncs           []*Fn\n\tDLLFuncNames    []*Fn\n\tFiles           []string\n\tStdLibImports   []string\n\tExternalImports []string\n}\n\nfunc (src *Source) Import(pkg string) {\n\tsrc.StdLibImports = append(src.StdLibImports, pkg)\n\tsort.Strings(src.StdLibImports)\n}\n\nfunc (src *Source) ExternalImport(pkg string) {\n\tsrc.ExternalImports = append(src.ExternalImports, pkg)\n\tsort.Strings(src.ExternalImports)\n}\n\n// ParseFiles parses files listed in sftpfs and extracts all syscall\n// functions listed in sys comments. It returns source files\n// and functions collection *Source if successful.\nfunc ParseFiles(fs []string) (*Source, error) {\n\tsrc := &Source{\n\t\tFuncs: make([]*Fn, 0),\n\t\tFiles: make([]string, 0),\n\t\tStdLibImports: []string{\n\t\t\t\"unsafe\",\n\t\t},\n\t\tExternalImports: make([]string, 0),\n\t}\n\tfor _, file := range fs {\n\t\tif err := src.ParseFile(file); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tsrc.DLLFuncNames = make([]*Fn, 0, len(src.Funcs))\n\tuniq := make(map[string]bool, len(src.Funcs))\n\tfor _, fn := range src.Funcs {\n\t\tname := fn.DLLFuncName()\n\t\tif !uniq[name] {\n\t\t\tsrc.DLLFuncNames = append(src.DLLFuncNames, fn)\n\t\t\tuniq[name] = true\n\t\t}\n\t}\n\treturn src, nil\n}\n\n// DLLs return dll names for a source set src.\nfunc (src *Source) DLLs() []DLL {\n\tuniq := make(map[string]bool)\n\tr := make([]DLL, 0)\n\tfor _, f := range src.Funcs {\n\t\tid := f.DLLVar()\n\t\tif _, found := uniq[id]; !found {\n\t\t\tuniq[id] = true\n\t\t\tr = append(r, DLL{f.DLLName(), id})\n\t\t}\n\t}\n\tsort.Slice(r, func(i, j int) bool {\n\t\treturn r[i].Var < r[j].Var\n\t})\n\treturn r\n}\n\n// ParseFile adds additional file path to a source set src.\nfunc (src *Source) ParseFile(path string) error {\n\tfile, err := os.Open(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer file.Close()\n\n\ts := bufio.NewScanner(file)\n\tfor s.Scan() {\n\t\tt := trim(s.Text())\n\t\tif len(t) < 7 {\n\t\t\tcontinue\n\t\t}\n\t\tif !strings.HasPrefix(t, \"//sys\") {\n\t\t\tcontinue\n\t\t}\n\t\tt = t[5:]\n\t\tif !(t[0] == ' ' || t[0] == '\\t') {\n\t\t\tcontinue\n\t\t}\n\t\tf, err := newFn(t[1:])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tsrc.Funcs = append(src.Funcs, f)\n\t}\n\tif err := s.Err(); err != nil {\n\t\treturn err\n\t}\n\tsrc.Files = append(src.Files, path)\n\tsort.Slice(src.Funcs, func(i, j int) bool {\n\t\tfi, fj := src.Funcs[i], src.Funcs[j]\n\t\tif fi.DLLName() == fj.DLLName() {\n\t\t\treturn fi.DLLFuncName() < fj.DLLFuncName()\n\t\t}\n\t\treturn fi.DLLName() < fj.DLLName()\n\t})\n\n\t// get package name\n\tfset := token.NewFileSet()\n\t_, err = file.Seek(0, 0)\n\tif err != nil {\n\t\treturn err\n\t}\n\tpkg, err := parser.ParseFile(fset, \"\", file, parser.PackageClauseOnly)\n\tif err != nil {\n\t\treturn err\n\t}\n\tpackageName = pkg.Name.Name\n\n\treturn nil\n}\n\n// IsStdRepo reports whether src is part of standard library.\nfunc (src *Source) IsStdRepo() (bool, error) {\n\tif len(src.Files) == 0 {\n\t\treturn false, errors.New(\"no input files provided\")\n\t}\n\tabspath, err := filepath.Abs(src.Files[0])\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tgoroot := runtime.GOROOT()\n\tif runtime.GOOS == \"windows\" {\n\t\tabspath = strings.ToLower(abspath)\n\t\tgoroot = strings.ToLower(goroot)\n\t}\n\tsep := string(os.PathSeparator)\n\tif !strings.HasSuffix(goroot, sep) {\n\t\tgoroot += sep\n\t}\n\treturn strings.HasPrefix(abspath, goroot), nil\n}\n\n// Generate output source file from a source set src.\nfunc (src *Source) Generate(w io.Writer) error {\n\tconst (\n\t\tpkgStd         = iota // any package in std library\n\t\tpkgXSysWindows        // x/sys/windows package\n\t\tpkgOther\n\t)\n\tisStdRepo, err := src.IsStdRepo()\n\tif err != nil {\n\t\treturn err\n\t}\n\tvar pkgtype int\n\tswitch {\n\tcase isStdRepo:\n\t\tpkgtype = pkgStd\n\tcase packageName == \"windows\":\n\t\t// TODO: this needs better logic than just using package name\n\t\tpkgtype = pkgXSysWindows\n\tdefault:\n\t\tpkgtype = pkgOther\n\t}\n\tif *systemDLL {\n\t\tswitch pkgtype {\n\t\tcase pkgStd:\n\t\t\tsrc.Import(\"internal/syscall/windows/sysdll\")\n\t\tcase pkgXSysWindows:\n\t\tdefault:\n\t\t\tsrc.ExternalImport(\"gossh/sys/windows\")\n\t\t}\n\t}\n\tif packageName != \"syscall\" {\n\t\tsrc.Import(\"syscall\")\n\t}\n\tfuncMap := template.FuncMap{\n\t\t\"packagename\": packagename,\n\t\t\"syscalldot\":  syscalldot,\n\t\t\"newlazydll\": func(dll string) string {\n\t\t\targ := \"\\\"\" + dll + \".dll\\\"\"\n\t\t\tif !*systemDLL {\n\t\t\t\treturn syscalldot() + \"NewLazyDLL(\" + arg + \")\"\n\t\t\t}\n\t\t\tswitch pkgtype {\n\t\t\tcase pkgStd:\n\t\t\t\treturn syscalldot() + \"NewLazyDLL(sysdll.Add(\" + arg + \"))\"\n\t\t\tcase pkgXSysWindows:\n\t\t\t\treturn \"NewLazySystemDLL(\" + arg + \")\"\n\t\t\tdefault:\n\t\t\t\treturn \"windows.NewLazySystemDLL(\" + arg + \")\"\n\t\t\t}\n\t\t},\n\t}\n\tt := template.Must(template.New(\"main\").Funcs(funcMap).Parse(srcTemplate))\n\terr = t.Execute(w, src)\n\tif err != nil {\n\t\treturn errors.New(\"Failed to execute template: \" + err.Error())\n\t}\n\treturn nil\n}\n\nfunc writeTempSourceFile(data []byte) (string, error) {\n\tf, err := os.CreateTemp(\"\", \"mkwinsyscall-generated-*.go\")\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\t_, err = f.Write(data)\n\tif closeErr := f.Close(); err == nil {\n\t\terr = closeErr\n\t}\n\tif err != nil {\n\t\tos.Remove(f.Name()) // best effort\n\t\treturn \"\", err\n\t}\n\treturn f.Name(), nil\n}\n\nfunc usage() {\n\tfmt.Fprintf(os.Stderr, \"usage: mkwinsyscall [flags] [path ...]\\n\")\n\tflag.PrintDefaults()\n\tos.Exit(1)\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\tsrc, err := ParseFiles(flag.Args())\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tvar buf bytes.Buffer\n\tif err := src.Generate(&buf); err != nil {\n\t\tlog.Fatal(err)\n\t}\n\n\tdata, err := format.Source(buf.Bytes())\n\tif err != nil {\n\t\tlog.Printf(\"failed to format source: %v\", err)\n\t\tf, err := writeTempSourceFile(buf.Bytes())\n\t\tif err != nil {\n\t\t\tlog.Fatalf(\"failed to write unformatted source to file: %v\", err)\n\t\t}\n\t\tlog.Fatalf(\"for diagnosis, wrote unformatted source to %v\", f)\n\t}\n\tif *filename == \"\" {\n\t\t_, err = os.Stdout.Write(data)\n\t} else {\n\t\terr = os.WriteFile(*filename, data, 0644)\n\t}\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n\n// TODO: use println instead to print in the following template\nconst srcTemplate = `\n\n{{define \"main\"}}// Code generated by 'go generate'; DO NOT EDIT.\n\npackage {{packagename}}\n\nimport (\n{{range .StdLibImports}}\"{{.}}\"\n{{end}}\n\n{{range .ExternalImports}}\"{{.}}\"\n{{end}}\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 = {{syscalldot}}Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL error     = {{syscalldot}}EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e {{syscalldot}}Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n{{template \"dlls\" .}}\n{{template \"funcnames\" .}})\n{{range .Funcs}}{{if .HasStringParam}}{{template \"helperbody\" .}}{{end}}{{template \"funcbody\" .}}{{end}}\n{{end}}\n\n{{/* help functions */}}\n\n{{define \"dlls\"}}{{range .DLLs}}\tmod{{.Var}} = {{newlazydll .Name}}\n{{end}}{{end}}\n\n{{define \"funcnames\"}}{{range .DLLFuncNames}}\tproc{{.DLLFuncName}} = mod{{.DLLVar}}.NewProc(\"{{.DLLFuncName}}\")\n{{end}}{{end}}\n\n{{define \"helperbody\"}}\nfunc {{.Name}}({{.ParamList}}) {{template \"results\" .}}{\n{{template \"helpertmpvars\" .}}\treturn {{.HelperName}}({{.HelperCallParamList}})\n}\n{{end}}\n\n{{define \"funcbody\"}}\nfunc {{.HelperName}}({{.HelperParamList}}) {{template \"results\" .}}{\n{{template \"maybeabsent\" .}}\t{{template \"tmpvars\" .}}\t{{template \"syscall\" .}}\t{{template \"tmpvarsreadback\" .}}\n{{template \"seterror\" .}}{{template \"printtrace\" .}}\treturn\n}\n{{end}}\n\n{{define \"helpertmpvars\"}}{{range .Params}}{{if .TmpVarHelperCode}}\t{{.TmpVarHelperCode}}\n{{end}}{{end}}{{end}}\n\n{{define \"maybeabsent\"}}{{if .MaybeAbsent}}{{.MaybeAbsent}}\n{{end}}{{end}}\n\n{{define \"tmpvars\"}}{{range .Params}}{{if .TmpVarCode}}\t{{.TmpVarCode}}\n{{end}}{{end}}{{end}}\n\n{{define \"results\"}}{{if .Rets.List}}{{.Rets.List}} {{end}}{{end}}\n\n{{define \"syscall\"}}{{.Rets.SetReturnValuesCode}}{{.Syscall}}(proc{{.DLLFuncName}}.Addr(),{{if le .ParamCount 15}} {{.ParamCount}},{{end}} {{.SyscallParamList}}){{end}}\n\n{{define \"tmpvarsreadback\"}}{{range .Params}}{{if .TmpVarReadbackCode}}\n{{.TmpVarReadbackCode}}{{end}}{{end}}{{end}}\n\n{{define \"seterror\"}}{{if .Rets.SetErrorCode}}\t{{.Rets.SetErrorCode}}\n{{end}}{{end}}\n\n{{define \"printtrace\"}}{{if .PrintTrace}}\tprint(\"SYSCALL: {{.Name}}(\", {{.ParamPrintList}}\") (\", {{.Rets.PrintList}}\")\\n\")\n{{end}}{{end}}\n\n`\n"
  },
  {
    "path": "gossh/sys/windows/race.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && race\n\npackage windows\n\nimport (\n\t\"runtime\"\n\t\"unsafe\"\n)\n\nconst raceenabled = true\n\nfunc raceAcquire(addr unsafe.Pointer) {\n\truntime.RaceAcquire(addr)\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n\truntime.RaceReleaseMerge(addr)\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n\truntime.RaceReadRange(addr, len)\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n\truntime.RaceWriteRange(addr, len)\n}\n"
  },
  {
    "path": "gossh/sys/windows/race0.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows && !race\n\npackage windows\n\nimport (\n\t\"unsafe\"\n)\n\nconst raceenabled = false\n\nfunc raceAcquire(addr unsafe.Pointer) {\n}\n\nfunc raceReleaseMerge(addr unsafe.Pointer) {\n}\n\nfunc raceReadRange(addr unsafe.Pointer, len int) {\n}\n\nfunc raceWriteRange(addr unsafe.Pointer, len int) {\n}\n"
  },
  {
    "path": "gossh/sys/windows/registry/key.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package registry provides access to the Windows registry.\n//\n// Here is a simple example, opening a registry key and reading a string value from it.\n//\n//\tk, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion`, registry.QUERY_VALUE)\n//\tif err != nil {\n//\t\tlog.Fatal(err)\n//\t}\n//\tdefer k.Close()\n//\n//\ts, _, err := k.GetStringValue(\"SystemRoot\")\n//\tif err != nil {\n//\t\tlog.Fatal(err)\n//\t}\n//\tfmt.Printf(\"Windows system root is %q\\n\", s)\npackage registry\n\nimport (\n\t\"io\"\n\t\"runtime\"\n\t\"syscall\"\n\t\"time\"\n)\n\nconst (\n\t// Registry key security and access rights.\n\t// See https://msdn.microsoft.com/en-us/library/windows/desktop/ms724878.aspx\n\t// for details.\n\tALL_ACCESS         = 0xf003f\n\tCREATE_LINK        = 0x00020\n\tCREATE_SUB_KEY     = 0x00004\n\tENUMERATE_SUB_KEYS = 0x00008\n\tEXECUTE            = 0x20019\n\tNOTIFY             = 0x00010\n\tQUERY_VALUE        = 0x00001\n\tREAD               = 0x20019\n\tSET_VALUE          = 0x00002\n\tWOW64_32KEY        = 0x00200\n\tWOW64_64KEY        = 0x00100\n\tWRITE              = 0x20006\n)\n\n// Key is a handle to an open Windows registry key.\n// Keys can be obtained by calling OpenKey; there are\n// also some predefined root keys such as CURRENT_USER.\n// Keys can be used directly in the Windows API.\ntype Key syscall.Handle\n\nconst (\n\t// Windows defines some predefined root keys that are always open.\n\t// An application can use these keys as entry points to the registry.\n\t// Normally these keys are used in OpenKey to open new keys,\n\t// but they can also be used anywhere a Key is required.\n\tCLASSES_ROOT     = Key(syscall.HKEY_CLASSES_ROOT)\n\tCURRENT_USER     = Key(syscall.HKEY_CURRENT_USER)\n\tLOCAL_MACHINE    = Key(syscall.HKEY_LOCAL_MACHINE)\n\tUSERS            = Key(syscall.HKEY_USERS)\n\tCURRENT_CONFIG   = Key(syscall.HKEY_CURRENT_CONFIG)\n\tPERFORMANCE_DATA = Key(syscall.HKEY_PERFORMANCE_DATA)\n)\n\n// Close closes open key k.\nfunc (k Key) Close() error {\n\treturn syscall.RegCloseKey(syscall.Handle(k))\n}\n\n// OpenKey opens a new key with path name relative to key k.\n// It accepts any open key, including CURRENT_USER and others,\n// and returns the new key and an error.\n// The access parameter specifies desired access rights to the\n// key to be opened.\nfunc OpenKey(k Key, path string, access uint32) (Key, error) {\n\tp, err := syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tvar subkey syscall.Handle\n\terr = syscall.RegOpenKeyEx(syscall.Handle(k), p, 0, access, &subkey)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn Key(subkey), nil\n}\n\n// OpenRemoteKey opens a predefined registry key on another\n// computer pcname. The key to be opened is specified by k, but\n// can only be one of LOCAL_MACHINE, PERFORMANCE_DATA or USERS.\n// If pcname is \"\", OpenRemoteKey returns local computer key.\nfunc OpenRemoteKey(pcname string, k Key) (Key, error) {\n\tvar err error\n\tvar p *uint16\n\tif pcname != \"\" {\n\t\tp, err = syscall.UTF16PtrFromString(`\\\\` + pcname)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t}\n\tvar remoteKey syscall.Handle\n\terr = regConnectRegistry(p, syscall.Handle(k), &remoteKey)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treturn Key(remoteKey), nil\n}\n\n// ReadSubKeyNames returns the names of subkeys of key k.\n// The parameter n controls the number of returned names,\n// analogous to the way os.File.Readdirnames works.\nfunc (k Key) ReadSubKeyNames(n int) ([]string, error) {\n\t// RegEnumKeyEx must be called repeatedly and to completion.\n\t// During this time, this goroutine cannot migrate away from\n\t// its current thread. See https://golang.org/issue/49320 and\n\t// https://golang.org/issue/49466.\n\truntime.LockOSThread()\n\tdefer runtime.UnlockOSThread()\n\n\tnames := make([]string, 0)\n\t// Registry key size limit is 255 bytes and described there:\n\t// https://msdn.microsoft.com/library/windows/desktop/ms724872.aspx\n\tbuf := make([]uint16, 256) //plus extra room for terminating zero byte\nloopItems:\n\tfor i := uint32(0); ; i++ {\n\t\tif n > 0 {\n\t\t\tif len(names) == n {\n\t\t\t\treturn names, nil\n\t\t\t}\n\t\t}\n\t\tl := uint32(len(buf))\n\t\tfor {\n\t\t\terr := syscall.RegEnumKeyEx(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif err == syscall.ERROR_MORE_DATA {\n\t\t\t\t// Double buffer size and try again.\n\t\t\t\tl = uint32(2 * len(buf))\n\t\t\t\tbuf = make([]uint16, l)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err == _ERROR_NO_MORE_ITEMS {\n\t\t\t\tbreak loopItems\n\t\t\t}\n\t\t\treturn names, err\n\t\t}\n\t\tnames = append(names, syscall.UTF16ToString(buf[:l]))\n\t}\n\tif n > len(names) {\n\t\treturn names, io.EOF\n\t}\n\treturn names, nil\n}\n\n// CreateKey creates a key named path under open key k.\n// CreateKey returns the new key and a boolean flag that reports\n// whether the key already existed.\n// The access parameter specifies the access rights for the key\n// to be created.\nfunc CreateKey(k Key, path string, access uint32) (newk Key, openedExisting bool, err error) {\n\tvar h syscall.Handle\n\tvar d uint32\n\terr = regCreateKeyEx(syscall.Handle(k), syscall.StringToUTF16Ptr(path),\n\t\t0, nil, _REG_OPTION_NON_VOLATILE, access, nil, &h, &d)\n\tif err != nil {\n\t\treturn 0, false, err\n\t}\n\treturn Key(h), d == _REG_OPENED_EXISTING_KEY, nil\n}\n\n// DeleteKey deletes the subkey path of key k and its values.\nfunc DeleteKey(k Key, path string) error {\n\treturn regDeleteKey(syscall.Handle(k), syscall.StringToUTF16Ptr(path))\n}\n\n// A KeyInfo describes the statistics of a key. It is returned by Stat.\ntype KeyInfo struct {\n\tSubKeyCount     uint32\n\tMaxSubKeyLen    uint32 // size of the key's subkey with the longest name, in Unicode characters, not including the terminating zero byte\n\tValueCount      uint32\n\tMaxValueNameLen uint32 // size of the key's longest value name, in Unicode characters, not including the terminating zero byte\n\tMaxValueLen     uint32 // longest data component among the key's values, in bytes\n\tlastWriteTime   syscall.Filetime\n}\n\n// ModTime returns the key's last write time.\nfunc (ki *KeyInfo) ModTime() time.Time {\n\treturn time.Unix(0, ki.lastWriteTime.Nanoseconds())\n}\n\n// Stat retrieves information about the open key k.\nfunc (k Key) Stat() (*KeyInfo, error) {\n\tvar ki KeyInfo\n\terr := syscall.RegQueryInfoKey(syscall.Handle(k), nil, nil, nil,\n\t\t&ki.SubKeyCount, &ki.MaxSubKeyLen, nil, &ki.ValueCount,\n\t\t&ki.MaxValueNameLen, &ki.MaxValueLen, nil, &ki.lastWriteTime)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &ki, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/registry/mksyscall.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build generate\n\npackage registry\n\n//go:generate go run gossh/sys/windows/mkwinsyscall -output zsyscall_windows.go syscall.go\n"
  },
  {
    "path": "gossh/sys/windows/registry/syscall.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage registry\n\nimport \"syscall\"\n\nconst (\n\t_REG_OPTION_NON_VOLATILE = 0\n\n\t_REG_CREATED_NEW_KEY     = 1\n\t_REG_OPENED_EXISTING_KEY = 2\n\n\t_ERROR_NO_MORE_ITEMS syscall.Errno = 259\n)\n\nfunc LoadRegLoadMUIString() error {\n\treturn procRegLoadMUIStringW.Find()\n}\n\n//sys\tregCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) = advapi32.RegCreateKeyExW\n//sys\tregDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) = advapi32.RegDeleteKeyW\n//sys\tregSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) = advapi32.RegSetValueExW\n//sys\tregEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegEnumValueW\n//sys\tregDeleteValue(key syscall.Handle, name *uint16) (regerrno error) = advapi32.RegDeleteValueW\n//sys   regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) = advapi32.RegLoadMUIStringW\n//sys\tregConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) = advapi32.RegConnectRegistryW\n\n//sys\texpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW\n"
  },
  {
    "path": "gossh/sys/windows/registry/value.go",
    "content": "// Copyright 2015 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage registry\n\nimport (\n\t\"errors\"\n\t\"io\"\n\t\"syscall\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\nconst (\n\t// Registry value types.\n\tNONE                       = 0\n\tSZ                         = 1\n\tEXPAND_SZ                  = 2\n\tBINARY                     = 3\n\tDWORD                      = 4\n\tDWORD_BIG_ENDIAN           = 5\n\tLINK                       = 6\n\tMULTI_SZ                   = 7\n\tRESOURCE_LIST              = 8\n\tFULL_RESOURCE_DESCRIPTOR   = 9\n\tRESOURCE_REQUIREMENTS_LIST = 10\n\tQWORD                      = 11\n)\n\nvar (\n\t// ErrShortBuffer is returned when the buffer was too short for the operation.\n\tErrShortBuffer = syscall.ERROR_MORE_DATA\n\n\t// ErrNotExist is returned when a registry key or value does not exist.\n\tErrNotExist = syscall.ERROR_FILE_NOT_FOUND\n\n\t// ErrUnexpectedType is returned by Get*Value when the value's type was unexpected.\n\tErrUnexpectedType = errors.New(\"unexpected key value type\")\n)\n\n// GetValue retrieves the type and data for the specified value associated\n// with an open key k. It fills up buffer buf and returns the retrieved\n// byte count n. If buf is too small to fit the stored value it returns\n// ErrShortBuffer error along with the required buffer size n.\n// If no buffer is provided, it returns true and actual buffer size n.\n// If no buffer is provided, GetValue returns the value's type only.\n// If the value does not exist, the error returned is ErrNotExist.\n//\n// GetValue is a low level function. If value's type is known, use the appropriate\n// Get*Value function instead.\nfunc (k Key) GetValue(name string, buf []byte) (n int, valtype uint32, err error) {\n\tpname, err := syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\tvar pbuf *byte\n\tif len(buf) > 0 {\n\t\tpbuf = (*byte)(unsafe.Pointer(&buf[0]))\n\t}\n\tl := uint32(len(buf))\n\terr = syscall.RegQueryValueEx(syscall.Handle(k), pname, nil, &valtype, pbuf, &l)\n\tif err != nil {\n\t\treturn int(l), valtype, err\n\t}\n\treturn int(l), valtype, nil\n}\n\nfunc (k Key) getValue(name string, buf []byte) (data []byte, valtype uint32, err error) {\n\tp, err := syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn nil, 0, err\n\t}\n\tvar t uint32\n\tn := uint32(len(buf))\n\tfor {\n\t\terr = syscall.RegQueryValueEx(syscall.Handle(k), p, nil, &t, (*byte)(unsafe.Pointer(&buf[0])), &n)\n\t\tif err == nil {\n\t\t\treturn buf[:n], t, nil\n\t\t}\n\t\tif err != syscall.ERROR_MORE_DATA {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tif n <= uint32(len(buf)) {\n\t\t\treturn nil, 0, err\n\t\t}\n\t\tbuf = make([]byte, n)\n\t}\n}\n\n// GetStringValue retrieves the string value for the specified\n// value name associated with an open key k. It also returns the value's type.\n// If value does not exist, GetStringValue returns ErrNotExist.\n// If value is not SZ or EXPAND_SZ, it will return the correct value\n// type and ErrUnexpectedType.\nfunc (k Key) GetStringValue(name string) (val string, valtype uint32, err error) {\n\tdata, typ, err2 := k.getValue(name, make([]byte, 64))\n\tif err2 != nil {\n\t\treturn \"\", typ, err2\n\t}\n\tswitch typ {\n\tcase SZ, EXPAND_SZ:\n\tdefault:\n\t\treturn \"\", typ, ErrUnexpectedType\n\t}\n\tif len(data) == 0 {\n\t\treturn \"\", typ, nil\n\t}\n\tu := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]\n\treturn syscall.UTF16ToString(u), typ, nil\n}\n\n// GetMUIStringValue retrieves the localized string value for\n// the specified value name associated with an open key k.\n// If the value name doesn't exist or the localized string value\n// can't be resolved, GetMUIStringValue returns ErrNotExist.\n// GetMUIStringValue panics if the system doesn't support\n// regLoadMUIString; use LoadRegLoadMUIString to check if\n// regLoadMUIString is supported before calling this function.\nfunc (k Key) GetMUIStringValue(name string) (string, error) {\n\tpname, err := syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\tbuf := make([]uint16, 1024)\n\tvar buflen uint32\n\tvar pdir *uint16\n\n\terr = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)\n\tif err == syscall.ERROR_FILE_NOT_FOUND { // Try fallback path\n\n\t\t// Try to resolve the string value using the system directory as\n\t\t// a DLL search path; this assumes the string value is of the form\n\t\t// @[path]\\dllname,-strID but with no path given, e.g. @tzres.dll,-320.\n\n\t\t// This approach works with tzres.dll but may have to be revised\n\t\t// in the future to allow callers to provide custom search paths.\n\n\t\tvar s string\n\t\ts, err = ExpandString(\"%SystemRoot%\\\\system32\\\\\")\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tpdir, err = syscall.UTF16PtrFromString(s)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\n\t\terr = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)\n\t}\n\n\tfor err == syscall.ERROR_MORE_DATA { // Grow buffer if needed\n\t\tif buflen <= uint32(len(buf)) {\n\t\t\tbreak // Buffer not growing, assume race; break\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\terr = regLoadMUIString(syscall.Handle(k), pname, &buf[0], uint32(len(buf)), &buflen, 0, pdir)\n\t}\n\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\n\treturn syscall.UTF16ToString(buf), nil\n}\n\n// ExpandString expands environment-variable strings and replaces\n// them with the values defined for the current user.\n// Use ExpandString to expand EXPAND_SZ strings.\nfunc ExpandString(value string) (string, error) {\n\tif value == \"\" {\n\t\treturn \"\", nil\n\t}\n\tp, err := syscall.UTF16PtrFromString(value)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tr := make([]uint16, 100)\n\tfor {\n\t\tn, err := expandEnvironmentStrings(p, &r[0], uint32(len(r)))\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tif n <= uint32(len(r)) {\n\t\t\treturn syscall.UTF16ToString(r[:n]), nil\n\t\t}\n\t\tr = make([]uint16, n)\n\t}\n}\n\n// GetStringsValue retrieves the []string value for the specified\n// value name associated with an open key k. It also returns the value's type.\n// If value does not exist, GetStringsValue returns ErrNotExist.\n// If value is not MULTI_SZ, it will return the correct value\n// type and ErrUnexpectedType.\nfunc (k Key) GetStringsValue(name string) (val []string, valtype uint32, err error) {\n\tdata, typ, err2 := k.getValue(name, make([]byte, 64))\n\tif err2 != nil {\n\t\treturn nil, typ, err2\n\t}\n\tif typ != MULTI_SZ {\n\t\treturn nil, typ, ErrUnexpectedType\n\t}\n\tif len(data) == 0 {\n\t\treturn nil, typ, nil\n\t}\n\tp := (*[1 << 29]uint16)(unsafe.Pointer(&data[0]))[: len(data)/2 : len(data)/2]\n\tif len(p) == 0 {\n\t\treturn nil, typ, nil\n\t}\n\tif p[len(p)-1] == 0 {\n\t\tp = p[:len(p)-1] // remove terminating null\n\t}\n\tval = make([]string, 0, 5)\n\tfrom := 0\n\tfor i, c := range p {\n\t\tif c == 0 {\n\t\t\tval = append(val, string(utf16.Decode(p[from:i])))\n\t\t\tfrom = i + 1\n\t\t}\n\t}\n\treturn val, typ, nil\n}\n\n// GetIntegerValue retrieves the integer value for the specified\n// value name associated with an open key k. It also returns the value's type.\n// If value does not exist, GetIntegerValue returns ErrNotExist.\n// If value is not DWORD or QWORD, it will return the correct value\n// type and ErrUnexpectedType.\nfunc (k Key) GetIntegerValue(name string) (val uint64, valtype uint32, err error) {\n\tdata, typ, err2 := k.getValue(name, make([]byte, 8))\n\tif err2 != nil {\n\t\treturn 0, typ, err2\n\t}\n\tswitch typ {\n\tcase DWORD:\n\t\tif len(data) != 4 {\n\t\t\treturn 0, typ, errors.New(\"DWORD value is not 4 bytes long\")\n\t\t}\n\t\tvar val32 uint32\n\t\tcopy((*[4]byte)(unsafe.Pointer(&val32))[:], data)\n\t\treturn uint64(val32), DWORD, nil\n\tcase QWORD:\n\t\tif len(data) != 8 {\n\t\t\treturn 0, typ, errors.New(\"QWORD value is not 8 bytes long\")\n\t\t}\n\t\tcopy((*[8]byte)(unsafe.Pointer(&val))[:], data)\n\t\treturn val, QWORD, nil\n\tdefault:\n\t\treturn 0, typ, ErrUnexpectedType\n\t}\n}\n\n// GetBinaryValue retrieves the binary value for the specified\n// value name associated with an open key k. It also returns the value's type.\n// If value does not exist, GetBinaryValue returns ErrNotExist.\n// If value is not BINARY, it will return the correct value\n// type and ErrUnexpectedType.\nfunc (k Key) GetBinaryValue(name string) (val []byte, valtype uint32, err error) {\n\tdata, typ, err2 := k.getValue(name, make([]byte, 64))\n\tif err2 != nil {\n\t\treturn nil, typ, err2\n\t}\n\tif typ != BINARY {\n\t\treturn nil, typ, ErrUnexpectedType\n\t}\n\treturn data, typ, nil\n}\n\nfunc (k Key) setValue(name string, valtype uint32, data []byte) error {\n\tp, err := syscall.UTF16PtrFromString(name)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif len(data) == 0 {\n\t\treturn regSetValueEx(syscall.Handle(k), p, 0, valtype, nil, 0)\n\t}\n\treturn regSetValueEx(syscall.Handle(k), p, 0, valtype, &data[0], uint32(len(data)))\n}\n\n// SetDWordValue sets the data and type of a name value\n// under key k to value and DWORD.\nfunc (k Key) SetDWordValue(name string, value uint32) error {\n\treturn k.setValue(name, DWORD, (*[4]byte)(unsafe.Pointer(&value))[:])\n}\n\n// SetQWordValue sets the data and type of a name value\n// under key k to value and QWORD.\nfunc (k Key) SetQWordValue(name string, value uint64) error {\n\treturn k.setValue(name, QWORD, (*[8]byte)(unsafe.Pointer(&value))[:])\n}\n\nfunc (k Key) setStringValue(name string, valtype uint32, value string) error {\n\tv, err := syscall.UTF16FromString(value)\n\tif err != nil {\n\t\treturn err\n\t}\n\tbuf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]\n\treturn k.setValue(name, valtype, buf)\n}\n\n// SetStringValue sets the data and type of a name value\n// under key k to value and SZ. The value must not contain a zero byte.\nfunc (k Key) SetStringValue(name, value string) error {\n\treturn k.setStringValue(name, SZ, value)\n}\n\n// SetExpandStringValue sets the data and type of a name value\n// under key k to value and EXPAND_SZ. The value must not contain a zero byte.\nfunc (k Key) SetExpandStringValue(name, value string) error {\n\treturn k.setStringValue(name, EXPAND_SZ, value)\n}\n\n// SetStringsValue sets the data and type of a name value\n// under key k to value and MULTI_SZ. The value strings\n// must not contain a zero byte.\nfunc (k Key) SetStringsValue(name string, value []string) error {\n\tss := \"\"\n\tfor _, s := range value {\n\t\tfor i := 0; i < len(s); i++ {\n\t\t\tif s[i] == 0 {\n\t\t\t\treturn errors.New(\"string cannot have 0 inside\")\n\t\t\t}\n\t\t}\n\t\tss += s + \"\\x00\"\n\t}\n\tv := utf16.Encode([]rune(ss + \"\\x00\"))\n\tbuf := (*[1 << 29]byte)(unsafe.Pointer(&v[0]))[: len(v)*2 : len(v)*2]\n\treturn k.setValue(name, MULTI_SZ, buf)\n}\n\n// SetBinaryValue sets the data and type of a name value\n// under key k to value and BINARY.\nfunc (k Key) SetBinaryValue(name string, value []byte) error {\n\treturn k.setValue(name, BINARY, value)\n}\n\n// DeleteValue removes a named value from the key k.\nfunc (k Key) DeleteValue(name string) error {\n\treturn regDeleteValue(syscall.Handle(k), syscall.StringToUTF16Ptr(name))\n}\n\n// ReadValueNames returns the value names of key k.\n// The parameter n controls the number of returned names,\n// analogous to the way os.File.Readdirnames works.\nfunc (k Key) ReadValueNames(n int) ([]string, error) {\n\tki, err := k.Stat()\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tnames := make([]string, 0, ki.ValueCount)\n\tbuf := make([]uint16, ki.MaxValueNameLen+1) // extra room for terminating null character\nloopItems:\n\tfor i := uint32(0); ; i++ {\n\t\tif n > 0 {\n\t\t\tif len(names) == n {\n\t\t\t\treturn names, nil\n\t\t\t}\n\t\t}\n\t\tl := uint32(len(buf))\n\t\tfor {\n\t\t\terr := regEnumValue(syscall.Handle(k), i, &buf[0], &l, nil, nil, nil, nil)\n\t\t\tif err == nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tif err == syscall.ERROR_MORE_DATA {\n\t\t\t\t// Double buffer size and try again.\n\t\t\t\tl = uint32(2 * len(buf))\n\t\t\t\tbuf = make([]uint16, l)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif err == _ERROR_NO_MORE_ITEMS {\n\t\t\t\tbreak loopItems\n\t\t\t}\n\t\t\treturn names, err\n\t\t}\n\t\tnames = append(names, syscall.UTF16ToString(buf[:l]))\n\t}\n\tif n > len(names) {\n\t\treturn names, io.EOF\n\t}\n\treturn names, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/registry/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage registry\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodadvapi32 = windows.NewLazySystemDLL(\"advapi32.dll\")\n\tmodkernel32 = windows.NewLazySystemDLL(\"kernel32.dll\")\n\n\tprocRegConnectRegistryW       = modadvapi32.NewProc(\"RegConnectRegistryW\")\n\tprocRegCreateKeyExW           = modadvapi32.NewProc(\"RegCreateKeyExW\")\n\tprocRegDeleteKeyW             = modadvapi32.NewProc(\"RegDeleteKeyW\")\n\tprocRegDeleteValueW           = modadvapi32.NewProc(\"RegDeleteValueW\")\n\tprocRegEnumValueW             = modadvapi32.NewProc(\"RegEnumValueW\")\n\tprocRegLoadMUIStringW         = modadvapi32.NewProc(\"RegLoadMUIStringW\")\n\tprocRegSetValueExW            = modadvapi32.NewProc(\"RegSetValueExW\")\n\tprocExpandEnvironmentStringsW = modkernel32.NewProc(\"ExpandEnvironmentStringsW\")\n)\n\nfunc regConnectRegistry(machinename *uint16, key syscall.Handle, result *syscall.Handle) (regerrno error) {\n\tr0, _, _ := syscall.Syscall(procRegConnectRegistryW.Addr(), 3, uintptr(unsafe.Pointer(machinename)), uintptr(key), uintptr(unsafe.Pointer(result)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regCreateKeyEx(key syscall.Handle, subkey *uint16, reserved uint32, class *uint16, options uint32, desired uint32, sa *syscall.SecurityAttributes, result *syscall.Handle, disposition *uint32) (regerrno error) {\n\tr0, _, _ := syscall.Syscall9(procRegCreateKeyExW.Addr(), 9, uintptr(key), uintptr(unsafe.Pointer(subkey)), uintptr(reserved), uintptr(unsafe.Pointer(class)), uintptr(options), uintptr(desired), uintptr(unsafe.Pointer(sa)), uintptr(unsafe.Pointer(result)), uintptr(unsafe.Pointer(disposition)))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regDeleteKey(key syscall.Handle, subkey *uint16) (regerrno error) {\n\tr0, _, _ := syscall.Syscall(procRegDeleteKeyW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(subkey)), 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regDeleteValue(key syscall.Handle, name *uint16) (regerrno error) {\n\tr0, _, _ := syscall.Syscall(procRegDeleteValueW.Addr(), 2, uintptr(key), uintptr(unsafe.Pointer(name)), 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regEnumValue(key syscall.Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) {\n\tr0, _, _ := syscall.Syscall9(procRegEnumValueW.Addr(), 8, uintptr(key), uintptr(index), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(nameLen)), uintptr(unsafe.Pointer(reserved)), uintptr(unsafe.Pointer(valtype)), uintptr(unsafe.Pointer(buf)), uintptr(unsafe.Pointer(buflen)), 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regLoadMUIString(key syscall.Handle, name *uint16, buf *uint16, buflen uint32, buflenCopied *uint32, flags uint32, dir *uint16) (regerrno error) {\n\tr0, _, _ := syscall.Syscall9(procRegLoadMUIStringW.Addr(), 7, uintptr(key), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buf)), uintptr(buflen), uintptr(unsafe.Pointer(buflenCopied)), uintptr(flags), uintptr(unsafe.Pointer(dir)), 0, 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc regSetValueEx(key syscall.Handle, valueName *uint16, reserved uint32, vtype uint32, buf *byte, bufsize uint32) (regerrno error) {\n\tr0, _, _ := syscall.Syscall6(procRegSetValueExW.Addr(), 6, uintptr(key), uintptr(unsafe.Pointer(valueName)), uintptr(reserved), uintptr(vtype), uintptr(unsafe.Pointer(buf)), uintptr(bufsize))\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc expandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/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\tisTokenRestricted(tokenHandle Token) (ret bool, err error) [!failretval] = advapi32.IsTokenRestricted\n//sys\tOpenProcessToken(process Handle, access uint32, token *Token) (err error) = advapi32.OpenProcessToken\n//sys\tOpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) = advapi32.OpenThreadToken\n//sys\tImpersonateSelf(impersonationlevel uint32) (err error) = advapi32.ImpersonateSelf\n//sys\tRevertToSelf() (err error) = advapi32.RevertToSelf\n//sys\tSetThreadToken(thread *Handle, token Token) (err error) = advapi32.SetThreadToken\n//sys\tLookupPrivilegeValue(systemname *uint16, name *uint16, luid *LUID) (err error) = advapi32.LookupPrivilegeValueW\n//sys\tAdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) = advapi32.AdjustTokenPrivileges\n//sys\tAdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) = advapi32.AdjustTokenGroups\n//sys\tGetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32, returnedLen *uint32) (err error) = advapi32.GetTokenInformation\n//sys\tSetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) = advapi32.SetTokenInformation\n//sys\tDuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) = advapi32.DuplicateTokenEx\n//sys\tGetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) = userenv.GetUserProfileDirectoryW\n//sys\tgetSystemDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemDirectoryW\n//sys\tgetWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetWindowsDirectoryW\n//sys\tgetSystemWindowsDirectory(dir *uint16, dirLen uint32) (len uint32, err error) = kernel32.GetSystemWindowsDirectoryW\n\n// An access token contains the security information for a logon session.\n// The system creates an access token when a user logs on, and every\n// process executed on behalf of the user has a copy of the token.\n// The token identifies the user, the user's groups, and the user's\n// privileges. The system uses the token to control access to securable\n// objects and to control the ability of the user to perform various\n// system-related operations on the local computer.\ntype Token Handle\n\n// OpenCurrentProcessToken opens an access token associated with current\n// process with TOKEN_QUERY access. It is a real token that needs to be closed.\n//\n// Deprecated: Explicitly call OpenProcessToken(CurrentProcess(), ...)\n// with the desired access instead, or use GetCurrentProcessToken for a\n// TOKEN_QUERY token.\nfunc OpenCurrentProcessToken() (Token, error) {\n\tvar token Token\n\terr := OpenProcessToken(CurrentProcess(), TOKEN_QUERY, &token)\n\treturn token, err\n}\n\n// GetCurrentProcessToken returns the access token associated with\n// the current process. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentProcessToken() Token {\n\treturn Token(^uintptr(4 - 1))\n}\n\n// GetCurrentThreadToken return the access token associated with\n// the current thread. It is a pseudo token that does not need\n// to be closed.\nfunc GetCurrentThreadToken() Token {\n\treturn Token(^uintptr(5 - 1))\n}\n\n// GetCurrentThreadEffectiveToken returns the effective access token\n// associated with the current thread. It is a pseudo token that does\n// not need to be closed.\nfunc GetCurrentThreadEffectiveToken() Token {\n\treturn Token(^uintptr(6 - 1))\n}\n\n// Close releases access to access token.\nfunc (t Token) Close() error {\n\treturn CloseHandle(Handle(t))\n}\n\n// getInfo retrieves a specified type of information about an access token.\nfunc (t Token) getInfo(class uint32, initSize int) (unsafe.Pointer, error) {\n\tn := uint32(initSize)\n\tfor {\n\t\tb := make([]byte, n)\n\t\te := GetTokenInformation(t, class, &b[0], uint32(len(b)), &n)\n\t\tif e == nil {\n\t\t\treturn unsafe.Pointer(&b[0]), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn nil, e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn nil, e\n\t\t}\n\t}\n}\n\n// GetTokenUser retrieves access token t user account information.\nfunc (t Token) GetTokenUser() (*Tokenuser, error) {\n\ti, e := t.getInfo(TokenUser, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenuser)(i), nil\n}\n\n// GetTokenGroups retrieves group accounts associated with access token t.\nfunc (t Token) GetTokenGroups() (*Tokengroups, error) {\n\ti, e := t.getInfo(TokenGroups, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokengroups)(i), nil\n}\n\n// GetTokenPrimaryGroup retrieves access token t primary group information.\n// A pointer to a SID structure representing a group that will become\n// the primary group of any objects created by a process using this access token.\nfunc (t Token) GetTokenPrimaryGroup() (*Tokenprimarygroup, error) {\n\ti, e := t.getInfo(TokenPrimaryGroup, 50)\n\tif e != nil {\n\t\treturn nil, e\n\t}\n\treturn (*Tokenprimarygroup)(i), nil\n}\n\n// GetUserProfileDirectory retrieves path to the\n// root directory of the access token t user's profile.\nfunc (t Token) GetUserProfileDirectory() (string, error) {\n\tn := uint32(100)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\te := GetUserProfileDirectory(t, &b[0], &n)\n\t\tif e == nil {\n\t\t\treturn UTF16ToString(b), nil\n\t\t}\n\t\tif e != ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn \"\", e\n\t\t}\n\t}\n}\n\n// IsElevated returns whether the current token is elevated from a UAC perspective.\nfunc (token Token) IsElevated() bool {\n\tvar isElevated uint32\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenElevation, (*byte)(unsafe.Pointer(&isElevated)), uint32(unsafe.Sizeof(isElevated)), &outLen)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn outLen == uint32(unsafe.Sizeof(isElevated)) && isElevated != 0\n}\n\n// GetLinkedToken returns the linked token, which may be an elevated UAC token.\nfunc (token Token) GetLinkedToken() (Token, error) {\n\tvar linkedToken Token\n\tvar outLen uint32\n\terr := GetTokenInformation(token, TokenLinkedToken, (*byte)(unsafe.Pointer(&linkedToken)), uint32(unsafe.Sizeof(linkedToken)), &outLen)\n\tif err != nil {\n\t\treturn Token(0), err\n\t}\n\treturn linkedToken, nil\n}\n\n// GetSystemDirectory retrieves the path to current location of the system\n// directory, which is typically, though not always, `C:\\Windows\\System32`.\nfunc GetSystemDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetWindowsDirectory retrieves the path to current location of the Windows\n// directory, which is typically, though not always, `C:\\Windows`. This may\n// be a private user directory in the case that the application is running\n// under a terminal server.\nfunc GetWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// GetSystemWindowsDirectory retrieves the path to current location of the\n// Windows directory, which is typically, though not always, `C:\\Windows`.\nfunc GetSystemWindowsDirectory() (string, error) {\n\tn := uint32(MAX_PATH)\n\tfor {\n\t\tb := make([]uint16, n)\n\t\tl, e := getSystemWindowsDirectory(&b[0], n)\n\t\tif e != nil {\n\t\t\treturn \"\", e\n\t\t}\n\t\tif l <= n {\n\t\t\treturn UTF16ToString(b[:l]), nil\n\t\t}\n\t\tn = l\n\t}\n}\n\n// IsMember reports whether the access token t is a member of the provided SID.\nfunc (t Token) IsMember(sid *SID) (bool, error) {\n\tvar b int32\n\tif e := checkTokenMembership(t, sid, &b); e != nil {\n\t\treturn false, e\n\t}\n\treturn b != 0, nil\n}\n\n// IsRestricted reports whether the access token t is a restricted token.\nfunc (t Token) IsRestricted() (isRestricted bool, err error) {\n\tisRestricted, err = isTokenRestricted(t)\n\tif !isRestricted && err == syscall.EINVAL {\n\t\t// If err is EINVAL, this returned ERROR_SUCCESS indicating a non-restricted token.\n\t\terr = nil\n\t}\n\treturn\n}\n\nconst (\n\tWTS_CONSOLE_CONNECT        = 0x1\n\tWTS_CONSOLE_DISCONNECT     = 0x2\n\tWTS_REMOTE_CONNECT         = 0x3\n\tWTS_REMOTE_DISCONNECT      = 0x4\n\tWTS_SESSION_LOGON          = 0x5\n\tWTS_SESSION_LOGOFF         = 0x6\n\tWTS_SESSION_LOCK           = 0x7\n\tWTS_SESSION_UNLOCK         = 0x8\n\tWTS_SESSION_REMOTE_CONTROL = 0x9\n\tWTS_SESSION_CREATE         = 0xa\n\tWTS_SESSION_TERMINATE      = 0xb\n)\n\nconst (\n\tWTSActive       = 0\n\tWTSConnected    = 1\n\tWTSConnectQuery = 2\n\tWTSShadow       = 3\n\tWTSDisconnected = 4\n\tWTSIdle         = 5\n\tWTSListen       = 6\n\tWTSReset        = 7\n\tWTSDown         = 8\n\tWTSInit         = 9\n)\n\ntype WTSSESSION_NOTIFICATION struct {\n\tSize      uint32\n\tSessionID uint32\n}\n\ntype WTS_SESSION_INFO struct {\n\tSessionID         uint32\n\tWindowStationName *uint16\n\tState             uint32\n}\n\n//sys WTSQueryUserToken(session uint32, token *Token) (err error) = wtsapi32.WTSQueryUserToken\n//sys WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) = wtsapi32.WTSEnumerateSessionsW\n//sys WTSFreeMemory(ptr uintptr) = wtsapi32.WTSFreeMemory\n//sys WTSGetActiveConsoleSessionId() (sessionID uint32)\n\ntype ACL struct {\n\taclRevision byte\n\tsbz1        byte\n\taclSize     uint16\n\taceCount    uint16\n\tsbz2        uint16\n}\n\ntype SECURITY_DESCRIPTOR struct {\n\trevision byte\n\tsbz1     byte\n\tcontrol  SECURITY_DESCRIPTOR_CONTROL\n\towner    *SID\n\tgroup    *SID\n\tsacl     *ACL\n\tdacl     *ACL\n}\n\ntype SECURITY_QUALITY_OF_SERVICE struct {\n\tLength              uint32\n\tImpersonationLevel  uint32\n\tContextTrackingMode byte\n\tEffectiveOnly       byte\n}\n\n// Constants for the ContextTrackingMode field of SECURITY_QUALITY_OF_SERVICE.\nconst (\n\tSECURITY_STATIC_TRACKING  = 0\n\tSECURITY_DYNAMIC_TRACKING = 1\n)\n\ntype SecurityAttributes struct {\n\tLength             uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tInheritHandle      uint32\n}\n\ntype SE_OBJECT_TYPE uint32\n\n// Constants for type SE_OBJECT_TYPE\nconst (\n\tSE_UNKNOWN_OBJECT_TYPE     = 0\n\tSE_FILE_OBJECT             = 1\n\tSE_SERVICE                 = 2\n\tSE_PRINTER                 = 3\n\tSE_REGISTRY_KEY            = 4\n\tSE_LMSHARE                 = 5\n\tSE_KERNEL_OBJECT           = 6\n\tSE_WINDOW_OBJECT           = 7\n\tSE_DS_OBJECT               = 8\n\tSE_DS_OBJECT_ALL           = 9\n\tSE_PROVIDER_DEFINED_OBJECT = 10\n\tSE_WMIGUID_OBJECT          = 11\n\tSE_REGISTRY_WOW64_32KEY    = 12\n\tSE_REGISTRY_WOW64_64KEY    = 13\n)\n\ntype SECURITY_INFORMATION uint32\n\n// Constants for type SECURITY_INFORMATION\nconst (\n\tOWNER_SECURITY_INFORMATION            = 0x00000001\n\tGROUP_SECURITY_INFORMATION            = 0x00000002\n\tDACL_SECURITY_INFORMATION             = 0x00000004\n\tSACL_SECURITY_INFORMATION             = 0x00000008\n\tLABEL_SECURITY_INFORMATION            = 0x00000010\n\tATTRIBUTE_SECURITY_INFORMATION        = 0x00000020\n\tSCOPE_SECURITY_INFORMATION            = 0x00000040\n\tBACKUP_SECURITY_INFORMATION           = 0x00010000\n\tPROTECTED_DACL_SECURITY_INFORMATION   = 0x80000000\n\tPROTECTED_SACL_SECURITY_INFORMATION   = 0x40000000\n\tUNPROTECTED_DACL_SECURITY_INFORMATION = 0x20000000\n\tUNPROTECTED_SACL_SECURITY_INFORMATION = 0x10000000\n)\n\ntype SECURITY_DESCRIPTOR_CONTROL uint16\n\n// Constants for type SECURITY_DESCRIPTOR_CONTROL\nconst (\n\tSE_OWNER_DEFAULTED       = 0x0001\n\tSE_GROUP_DEFAULTED       = 0x0002\n\tSE_DACL_PRESENT          = 0x0004\n\tSE_DACL_DEFAULTED        = 0x0008\n\tSE_SACL_PRESENT          = 0x0010\n\tSE_SACL_DEFAULTED        = 0x0020\n\tSE_DACL_AUTO_INHERIT_REQ = 0x0100\n\tSE_SACL_AUTO_INHERIT_REQ = 0x0200\n\tSE_DACL_AUTO_INHERITED   = 0x0400\n\tSE_SACL_AUTO_INHERITED   = 0x0800\n\tSE_DACL_PROTECTED        = 0x1000\n\tSE_SACL_PROTECTED        = 0x2000\n\tSE_RM_CONTROL_VALID      = 0x4000\n\tSE_SELF_RELATIVE         = 0x8000\n)\n\ntype ACCESS_MASK uint32\n\n// Constants for type ACCESS_MASK\nconst (\n\tDELETE                   = 0x00010000\n\tREAD_CONTROL             = 0x00020000\n\tWRITE_DAC                = 0x00040000\n\tWRITE_OWNER              = 0x00080000\n\tSYNCHRONIZE              = 0x00100000\n\tSTANDARD_RIGHTS_REQUIRED = 0x000F0000\n\tSTANDARD_RIGHTS_READ     = READ_CONTROL\n\tSTANDARD_RIGHTS_WRITE    = READ_CONTROL\n\tSTANDARD_RIGHTS_EXECUTE  = READ_CONTROL\n\tSTANDARD_RIGHTS_ALL      = 0x001F0000\n\tSPECIFIC_RIGHTS_ALL      = 0x0000FFFF\n\tACCESS_SYSTEM_SECURITY   = 0x01000000\n\tMAXIMUM_ALLOWED          = 0x02000000\n\tGENERIC_READ             = 0x80000000\n\tGENERIC_WRITE            = 0x40000000\n\tGENERIC_EXECUTE          = 0x20000000\n\tGENERIC_ALL              = 0x10000000\n)\n\ntype ACCESS_MODE uint32\n\n// Constants for type ACCESS_MODE\nconst (\n\tNOT_USED_ACCESS   = 0\n\tGRANT_ACCESS      = 1\n\tSET_ACCESS        = 2\n\tDENY_ACCESS       = 3\n\tREVOKE_ACCESS     = 4\n\tSET_AUDIT_SUCCESS = 5\n\tSET_AUDIT_FAILURE = 6\n)\n\n// Constants for AceFlags and Inheritance fields\nconst (\n\tNO_INHERITANCE                     = 0x0\n\tSUB_OBJECTS_ONLY_INHERIT           = 0x1\n\tSUB_CONTAINERS_ONLY_INHERIT        = 0x2\n\tSUB_CONTAINERS_AND_OBJECTS_INHERIT = 0x3\n\tINHERIT_NO_PROPAGATE               = 0x4\n\tINHERIT_ONLY                       = 0x8\n\tINHERITED_ACCESS_ENTRY             = 0x10\n\tINHERITED_PARENT                   = 0x10000000\n\tINHERITED_GRANDPARENT              = 0x20000000\n\tOBJECT_INHERIT_ACE                 = 0x1\n\tCONTAINER_INHERIT_ACE              = 0x2\n\tNO_PROPAGATE_INHERIT_ACE           = 0x4\n\tINHERIT_ONLY_ACE                   = 0x8\n\tINHERITED_ACE                      = 0x10\n\tVALID_INHERIT_FLAGS                = 0x1F\n)\n\ntype MULTIPLE_TRUSTEE_OPERATION uint32\n\n// Constants for MULTIPLE_TRUSTEE_OPERATION\nconst (\n\tNO_MULTIPLE_TRUSTEE    = 0\n\tTRUSTEE_IS_IMPERSONATE = 1\n)\n\ntype TRUSTEE_FORM uint32\n\n// Constants for TRUSTEE_FORM\nconst (\n\tTRUSTEE_IS_SID              = 0\n\tTRUSTEE_IS_NAME             = 1\n\tTRUSTEE_BAD_FORM            = 2\n\tTRUSTEE_IS_OBJECTS_AND_SID  = 3\n\tTRUSTEE_IS_OBJECTS_AND_NAME = 4\n)\n\ntype TRUSTEE_TYPE uint32\n\n// Constants for TRUSTEE_TYPE\nconst (\n\tTRUSTEE_IS_UNKNOWN          = 0\n\tTRUSTEE_IS_USER             = 1\n\tTRUSTEE_IS_GROUP            = 2\n\tTRUSTEE_IS_DOMAIN           = 3\n\tTRUSTEE_IS_ALIAS            = 4\n\tTRUSTEE_IS_WELL_KNOWN_GROUP = 5\n\tTRUSTEE_IS_DELETED          = 6\n\tTRUSTEE_IS_INVALID          = 7\n\tTRUSTEE_IS_COMPUTER         = 8\n)\n\n// Constants for ObjectsPresent field\nconst (\n\tACE_OBJECT_TYPE_PRESENT           = 0x1\n\tACE_INHERITED_OBJECT_TYPE_PRESENT = 0x2\n)\n\ntype EXPLICIT_ACCESS struct {\n\tAccessPermissions ACCESS_MASK\n\tAccessMode        ACCESS_MODE\n\tInheritance       uint32\n\tTrustee           TRUSTEE\n}\n\n// This type is the union inside of TRUSTEE and must be created using one of the TrusteeValueFrom* functions.\ntype TrusteeValue uintptr\n\nfunc TrusteeValueFromString(str string) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(StringToUTF16Ptr(str)))\n}\nfunc TrusteeValueFromSID(sid *SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(sid))\n}\nfunc TrusteeValueFromObjectsAndSid(objectsAndSid *OBJECTS_AND_SID) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndSid))\n}\nfunc TrusteeValueFromObjectsAndName(objectsAndName *OBJECTS_AND_NAME) TrusteeValue {\n\treturn TrusteeValue(unsafe.Pointer(objectsAndName))\n}\n\ntype TRUSTEE struct {\n\tMultipleTrustee          *TRUSTEE\n\tMultipleTrusteeOperation MULTIPLE_TRUSTEE_OPERATION\n\tTrusteeForm              TRUSTEE_FORM\n\tTrusteeType              TRUSTEE_TYPE\n\tTrusteeValue             TrusteeValue\n}\n\ntype OBJECTS_AND_SID struct {\n\tObjectsPresent          uint32\n\tObjectTypeGuid          GUID\n\tInheritedObjectTypeGuid GUID\n\tSid                     *SID\n}\n\ntype OBJECTS_AND_NAME struct {\n\tObjectsPresent          uint32\n\tObjectType              SE_OBJECT_TYPE\n\tObjectTypeName          *uint16\n\tInheritedObjectTypeName *uint16\n\tName                    *uint16\n}\n\n//sys\tgetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetSecurityInfo\n//sys\tSetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetSecurityInfo\n//sys\tgetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) = advapi32.GetNamedSecurityInfoW\n//sys\tSetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) = advapi32.SetNamedSecurityInfoW\n//sys\tSetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) = advapi32.SetKernelObjectSecurity\n\n//sys\tbuildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) = advapi32.BuildSecurityDescriptorW\n//sys\tinitializeSecurityDescriptor(absoluteSD *SECURITY_DESCRIPTOR, revision uint32) (err error) = advapi32.InitializeSecurityDescriptor\n\n//sys\tgetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, control *SECURITY_DESCRIPTOR_CONTROL, revision *uint32) (err error) = advapi32.GetSecurityDescriptorControl\n//sys\tgetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorDacl\n//sys\tgetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorSacl\n//sys\tgetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorOwner\n//sys\tgetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) = advapi32.GetSecurityDescriptorGroup\n//sys\tgetSecurityDescriptorLength(sd *SECURITY_DESCRIPTOR) (len uint32) = advapi32.GetSecurityDescriptorLength\n//sys\tgetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) (ret error) [failretval!=0] = advapi32.GetSecurityDescriptorRMControl\n//sys\tisValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) = advapi32.IsValidSecurityDescriptor\n\n//sys\tsetSecurityDescriptorControl(sd *SECURITY_DESCRIPTOR, controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) (err error) = advapi32.SetSecurityDescriptorControl\n//sys\tsetSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorDacl\n//sys\tsetSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) = advapi32.SetSecurityDescriptorSacl\n//sys\tsetSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) = advapi32.SetSecurityDescriptorOwner\n//sys\tsetSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) = advapi32.SetSecurityDescriptorGroup\n//sys\tsetSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) = advapi32.SetSecurityDescriptorRMControl\n\n//sys\tconvertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) = advapi32.ConvertStringSecurityDescriptorToSecurityDescriptorW\n//sys\tconvertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) = advapi32.ConvertSecurityDescriptorToStringSecurityDescriptorW\n\n//sys\tmakeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) = advapi32.MakeAbsoluteSD\n//sys\tmakeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) = advapi32.MakeSelfRelativeSD\n\n//sys\tsetEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) = advapi32.SetEntriesInAclW\n\n// Control returns the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) Control() (control SECURITY_DESCRIPTOR_CONTROL, revision uint32, err error) {\n\terr = getSecurityDescriptorControl(sd, &control, &revision)\n\treturn\n}\n\n// SetControl sets the security descriptor control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetControl(controlBitsOfInterest SECURITY_DESCRIPTOR_CONTROL, controlBitsToSet SECURITY_DESCRIPTOR_CONTROL) error {\n\treturn setSecurityDescriptorControl(sd, controlBitsOfInterest, controlBitsToSet)\n}\n\n// RMControl returns the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) RMControl() (control uint8, err error) {\n\terr = getSecurityDescriptorRMControl(sd, &control)\n\treturn\n}\n\n// SetRMControl sets the security descriptor resource manager control bits.\nfunc (sd *SECURITY_DESCRIPTOR) SetRMControl(rmControl uint8) {\n\tsetSecurityDescriptorRMControl(sd, &rmControl)\n}\n\n// DACL returns the security descriptor DACL and whether it was defaulted. The dacl return value may be nil\n// if a DACL exists but is an \"empty DACL\", meaning fully permissive. If the DACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) DACL() (dacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorDacl(sd, &present, &dacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetDACL sets the absolute security descriptor DACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetDACL(dacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorDacl(absoluteSD, present, dacl, defaulted)\n}\n\n// SACL returns the security descriptor SACL and whether it was defaulted. The sacl return value may be nil\n// if a SACL exists but is an \"empty SACL\", meaning fully permissive. If the SACL does not exist, err returns\n// ERROR_OBJECT_NOT_FOUND.\nfunc (sd *SECURITY_DESCRIPTOR) SACL() (sacl *ACL, defaulted bool, err error) {\n\tvar present bool\n\terr = getSecurityDescriptorSacl(sd, &present, &sacl, &defaulted)\n\tif !present {\n\t\terr = ERROR_OBJECT_NOT_FOUND\n\t}\n\treturn\n}\n\n// SetSACL sets the absolute security descriptor SACL.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetSACL(sacl *ACL, present, defaulted bool) error {\n\treturn setSecurityDescriptorSacl(absoluteSD, present, sacl, defaulted)\n}\n\n// Owner returns the security descriptor owner and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Owner() (owner *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorOwner(sd, &owner, &defaulted)\n\treturn\n}\n\n// SetOwner sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetOwner(owner *SID, defaulted bool) error {\n\treturn setSecurityDescriptorOwner(absoluteSD, owner, defaulted)\n}\n\n// Group returns the security descriptor group and whether it was defaulted.\nfunc (sd *SECURITY_DESCRIPTOR) Group() (group *SID, defaulted bool, err error) {\n\terr = getSecurityDescriptorGroup(sd, &group, &defaulted)\n\treturn\n}\n\n// SetGroup sets the absolute security descriptor owner.\nfunc (absoluteSD *SECURITY_DESCRIPTOR) SetGroup(group *SID, defaulted bool) error {\n\treturn setSecurityDescriptorGroup(absoluteSD, group, defaulted)\n}\n\n// Length returns the length of the security descriptor.\nfunc (sd *SECURITY_DESCRIPTOR) Length() uint32 {\n\treturn getSecurityDescriptorLength(sd)\n}\n\n// IsValid returns whether the security descriptor is valid.\nfunc (sd *SECURITY_DESCRIPTOR) IsValid() bool {\n\treturn isValidSecurityDescriptor(sd)\n}\n\n// String returns the SDDL form of the security descriptor, with a function signature that can be\n// used with %v formatting directives.\nfunc (sd *SECURITY_DESCRIPTOR) String() string {\n\tvar sddl *uint16\n\terr := convertSecurityDescriptorToStringSecurityDescriptor(sd, 1, 0xff, &sddl, nil)\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(sddl)))\n\treturn UTF16PtrToString(sddl)\n}\n\n// ToAbsolute converts a self-relative security descriptor into an absolute one.\nfunc (selfRelativeSD *SECURITY_DESCRIPTOR) ToAbsolute() (absoluteSD *SECURITY_DESCRIPTOR, err error) {\n\tcontrol, _, err := selfRelativeSD.Control()\n\tif err != nil {\n\t\treturn\n\t}\n\tif control&SE_SELF_RELATIVE == 0 {\n\t\terr = ERROR_INVALID_PARAMETER\n\t\treturn\n\t}\n\tvar absoluteSDSize, daclSize, saclSize, ownerSize, groupSize uint32\n\terr = makeAbsoluteSD(selfRelativeSD, nil, &absoluteSDSize,\n\t\tnil, &daclSize, nil, &saclSize, nil, &ownerSize, nil, &groupSize)\n\tswitch err {\n\tcase ERROR_INSUFFICIENT_BUFFER:\n\tcase nil:\n\t\t// makeAbsoluteSD is expected to fail, but it succeeds.\n\t\treturn nil, ERROR_INTERNAL_ERROR\n\tdefault:\n\t\treturn nil, err\n\t}\n\tif absoluteSDSize > 0 {\n\t\tabsoluteSD = (*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\tsdLen := int(selfRelativeSD.Length())\n\tconst min = int(unsafe.Sizeof(SECURITY_DESCRIPTOR{}))\n\tif sdLen < min {\n\t\tsdLen = min\n\t}\n\n\tsrc := unsafe.Slice((*byte)(unsafe.Pointer(selfRelativeSD)), sdLen)\n\t// SECURITY_DESCRIPTOR has pointers in it, which means checkptr expects for it to\n\t// be aligned properly. When we're copying a Windows-allocated struct to a\n\t// Go-allocated one, make sure that the Go allocation is aligned to the\n\t// pointer size.\n\tconst psize = int(unsafe.Sizeof(uintptr(0)))\n\talloc := make([]uintptr, (sdLen+psize-1)/psize)\n\tdst := unsafe.Slice((*byte)(unsafe.Pointer(&alloc[0])), sdLen)\n\tcopy(dst, src)\n\treturn (*SECURITY_DESCRIPTOR)(unsafe.Pointer(&dst[0]))\n}\n\n// SecurityDescriptorFromString converts an SDDL string describing a security descriptor into a\n// self-relative security descriptor object allocated on the Go heap.\nfunc SecurityDescriptorFromString(sddl string) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = convertStringSecurityDescriptorToSecurityDescriptor(sddl, 1, &winHeapSD, nil)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetSecurityInfo queries the security information for a given handle and returns the self-relative security\n// descriptor result on the Go heap.\nfunc GetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION) (sd *SECURITY_DESCRIPTOR, err error) {\n\tvar winHeapSD *SECURITY_DESCRIPTOR\n\terr = getSecurityInfo(handle, objectType, securityInformation, nil, nil, nil, nil, &winHeapSD)\n\tif err != nil {\n\t\treturn\n\t}\n\tdefer LocalFree(Handle(unsafe.Pointer(winHeapSD)))\n\treturn winHeapSD.copySelfRelativeSecurityDescriptor(), nil\n}\n\n// GetNamedSecurityInfo queries the security information for a given named object and returns the self-relative security\n// descriptor result on the Go heap.\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):len(aclBytes)])\n\treturn (*ACL)(unsafe.Pointer(&aclBytes[0])), nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nconst (\n\tSC_MANAGER_CONNECT            = 1\n\tSC_MANAGER_CREATE_SERVICE     = 2\n\tSC_MANAGER_ENUMERATE_SERVICE  = 4\n\tSC_MANAGER_LOCK               = 8\n\tSC_MANAGER_QUERY_LOCK_STATUS  = 16\n\tSC_MANAGER_MODIFY_BOOT_CONFIG = 32\n\tSC_MANAGER_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\tSERVICE_KERNEL_DRIVER       = 1\n\tSERVICE_FILE_SYSTEM_DRIVER  = 2\n\tSERVICE_ADAPTER             = 4\n\tSERVICE_RECOGNIZER_DRIVER   = 8\n\tSERVICE_WIN32_OWN_PROCESS   = 16\n\tSERVICE_WIN32_SHARE_PROCESS = 32\n\tSERVICE_WIN32               = SERVICE_WIN32_OWN_PROCESS | SERVICE_WIN32_SHARE_PROCESS\n\tSERVICE_INTERACTIVE_PROCESS = 256\n\tSERVICE_DRIVER              = SERVICE_KERNEL_DRIVER | SERVICE_FILE_SYSTEM_DRIVER | SERVICE_RECOGNIZER_DRIVER\n\tSERVICE_TYPE_ALL            = SERVICE_WIN32 | SERVICE_ADAPTER | SERVICE_DRIVER | SERVICE_INTERACTIVE_PROCESS\n\n\tSERVICE_BOOT_START   = 0\n\tSERVICE_SYSTEM_START = 1\n\tSERVICE_AUTO_START   = 2\n\tSERVICE_DEMAND_START = 3\n\tSERVICE_DISABLED     = 4\n\n\tSERVICE_ERROR_IGNORE   = 0\n\tSERVICE_ERROR_NORMAL   = 1\n\tSERVICE_ERROR_SEVERE   = 2\n\tSERVICE_ERROR_CRITICAL = 3\n\n\tSC_STATUS_PROCESS_INFO = 0\n\n\tSC_ACTION_NONE        = 0\n\tSC_ACTION_RESTART     = 1\n\tSC_ACTION_REBOOT      = 2\n\tSC_ACTION_RUN_COMMAND = 3\n\n\tSERVICE_STOPPED          = 1\n\tSERVICE_START_PENDING    = 2\n\tSERVICE_STOP_PENDING     = 3\n\tSERVICE_RUNNING          = 4\n\tSERVICE_CONTINUE_PENDING = 5\n\tSERVICE_PAUSE_PENDING    = 6\n\tSERVICE_PAUSED           = 7\n\tSERVICE_NO_CHANGE        = 0xffffffff\n\n\tSERVICE_ACCEPT_STOP                  = 1\n\tSERVICE_ACCEPT_PAUSE_CONTINUE        = 2\n\tSERVICE_ACCEPT_SHUTDOWN              = 4\n\tSERVICE_ACCEPT_PARAMCHANGE           = 8\n\tSERVICE_ACCEPT_NETBINDCHANGE         = 16\n\tSERVICE_ACCEPT_HARDWAREPROFILECHANGE = 32\n\tSERVICE_ACCEPT_POWEREVENT            = 64\n\tSERVICE_ACCEPT_SESSIONCHANGE         = 128\n\tSERVICE_ACCEPT_PRESHUTDOWN           = 256\n\n\tSERVICE_CONTROL_STOP                  = 1\n\tSERVICE_CONTROL_PAUSE                 = 2\n\tSERVICE_CONTROL_CONTINUE              = 3\n\tSERVICE_CONTROL_INTERROGATE           = 4\n\tSERVICE_CONTROL_SHUTDOWN              = 5\n\tSERVICE_CONTROL_PARAMCHANGE           = 6\n\tSERVICE_CONTROL_NETBINDADD            = 7\n\tSERVICE_CONTROL_NETBINDREMOVE         = 8\n\tSERVICE_CONTROL_NETBINDENABLE         = 9\n\tSERVICE_CONTROL_NETBINDDISABLE        = 10\n\tSERVICE_CONTROL_DEVICEEVENT           = 11\n\tSERVICE_CONTROL_HARDWAREPROFILECHANGE = 12\n\tSERVICE_CONTROL_POWEREVENT            = 13\n\tSERVICE_CONTROL_SESSIONCHANGE         = 14\n\tSERVICE_CONTROL_PRESHUTDOWN           = 15\n\n\tSERVICE_ACTIVE    = 1\n\tSERVICE_INACTIVE  = 2\n\tSERVICE_STATE_ALL = 3\n\n\tSERVICE_QUERY_CONFIG         = 1\n\tSERVICE_CHANGE_CONFIG        = 2\n\tSERVICE_QUERY_STATUS         = 4\n\tSERVICE_ENUMERATE_DEPENDENTS = 8\n\tSERVICE_START                = 16\n\tSERVICE_STOP                 = 32\n\tSERVICE_PAUSE_CONTINUE       = 64\n\tSERVICE_INTERROGATE          = 128\n\tSERVICE_USER_DEFINED_CONTROL = 256\n\tSERVICE_ALL_ACCESS           = STANDARD_RIGHTS_REQUIRED | SERVICE_QUERY_CONFIG | SERVICE_CHANGE_CONFIG | SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS | SERVICE_START | SERVICE_STOP | SERVICE_PAUSE_CONTINUE | SERVICE_INTERROGATE | SERVICE_USER_DEFINED_CONTROL\n\n\tSERVICE_RUNS_IN_SYSTEM_PROCESS = 1\n\n\tSERVICE_CONFIG_DESCRIPTION              = 1\n\tSERVICE_CONFIG_FAILURE_ACTIONS          = 2\n\tSERVICE_CONFIG_DELAYED_AUTO_START_INFO  = 3\n\tSERVICE_CONFIG_FAILURE_ACTIONS_FLAG     = 4\n\tSERVICE_CONFIG_SERVICE_SID_INFO         = 5\n\tSERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO = 6\n\tSERVICE_CONFIG_PRESHUTDOWN_INFO         = 7\n\tSERVICE_CONFIG_TRIGGER_INFO             = 8\n\tSERVICE_CONFIG_PREFERRED_NODE           = 9\n\tSERVICE_CONFIG_LAUNCH_PROTECTED         = 12\n\n\tSERVICE_SID_TYPE_NONE         = 0\n\tSERVICE_SID_TYPE_UNRESTRICTED = 1\n\tSERVICE_SID_TYPE_RESTRICTED   = 2 | SERVICE_SID_TYPE_UNRESTRICTED\n\n\tSC_ENUM_PROCESS_INFO = 0\n\n\tSERVICE_NOTIFY_STATUS_CHANGE    = 2\n\tSERVICE_NOTIFY_STOPPED          = 0x00000001\n\tSERVICE_NOTIFY_START_PENDING    = 0x00000002\n\tSERVICE_NOTIFY_STOP_PENDING     = 0x00000004\n\tSERVICE_NOTIFY_RUNNING          = 0x00000008\n\tSERVICE_NOTIFY_CONTINUE_PENDING = 0x00000010\n\tSERVICE_NOTIFY_PAUSE_PENDING    = 0x00000020\n\tSERVICE_NOTIFY_PAUSED           = 0x00000040\n\tSERVICE_NOTIFY_CREATED          = 0x00000080\n\tSERVICE_NOTIFY_DELETED          = 0x00000100\n\tSERVICE_NOTIFY_DELETE_PENDING   = 0x00000200\n\n\tSC_EVENT_DATABASE_CHANGE = 0\n\tSC_EVENT_PROPERTY_CHANGE = 1\n\tSC_EVENT_STATUS_CHANGE   = 2\n\n\tSERVICE_START_REASON_DEMAND             = 0x00000001\n\tSERVICE_START_REASON_AUTO               = 0x00000002\n\tSERVICE_START_REASON_TRIGGER            = 0x00000004\n\tSERVICE_START_REASON_RESTART_ON_FAILURE = 0x00000008\n\tSERVICE_START_REASON_DELAYEDAUTO        = 0x00000010\n\n\tSERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON = 1\n)\n\ntype ENUM_SERVICE_STATUS struct {\n\tServiceName   *uint16\n\tDisplayName   *uint16\n\tServiceStatus SERVICE_STATUS\n}\n\ntype SERVICE_STATUS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n}\n\ntype SERVICE_TABLE_ENTRY struct {\n\tServiceName *uint16\n\tServiceProc uintptr\n}\n\ntype QUERY_SERVICE_CONFIG struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   *uint16\n\tLoadOrderGroup   *uint16\n\tTagId            uint32\n\tDependencies     *uint16\n\tServiceStartName *uint16\n\tDisplayName      *uint16\n}\n\ntype SERVICE_DESCRIPTION struct {\n\tDescription *uint16\n}\n\ntype SERVICE_DELAYED_AUTO_START_INFO struct {\n\tIsDelayedAutoStartUp uint32\n}\n\ntype SERVICE_STATUS_PROCESS struct {\n\tServiceType             uint32\n\tCurrentState            uint32\n\tControlsAccepted        uint32\n\tWin32ExitCode           uint32\n\tServiceSpecificExitCode uint32\n\tCheckPoint              uint32\n\tWaitHint                uint32\n\tProcessId               uint32\n\tServiceFlags            uint32\n}\n\ntype ENUM_SERVICE_STATUS_PROCESS struct {\n\tServiceName          *uint16\n\tDisplayName          *uint16\n\tServiceStatusProcess SERVICE_STATUS_PROCESS\n}\n\ntype SERVICE_NOTIFY struct {\n\tVersion               uint32\n\tNotifyCallback        uintptr\n\tContext               uintptr\n\tNotificationStatus    uint32\n\tServiceStatus         SERVICE_STATUS_PROCESS\n\tNotificationTriggered uint32\n\tServiceNames          *uint16\n}\n\ntype SERVICE_FAILURE_ACTIONS struct {\n\tResetPeriod  uint32\n\tRebootMsg    *uint16\n\tCommand      *uint16\n\tActionsCount uint32\n\tActions      *SC_ACTION\n}\n\ntype SERVICE_FAILURE_ACTIONS_FLAG struct {\n\tFailureActionsOnNonCrashFailures int32\n}\n\ntype SC_ACTION struct {\n\tType  uint32\n\tDelay uint32\n}\n\ntype QUERY_SERVICE_LOCK_STATUS struct {\n\tIsLocked     uint32\n\tLockOwner    *uint16\n\tLockDuration uint32\n}\n\n//sys\tOpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenSCManagerW\n//sys\tCloseServiceHandle(handle Handle) (err error) = advapi32.CloseServiceHandle\n//sys\tCreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) [failretval==0] = advapi32.CreateServiceW\n//sys\tOpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) [failretval==0] = advapi32.OpenServiceW\n//sys\tDeleteService(service Handle) (err error) = advapi32.DeleteService\n//sys\tStartService(service Handle, numArgs uint32, argVectors **uint16) (err error) = advapi32.StartServiceW\n//sys\tQueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) = advapi32.QueryServiceStatus\n//sys\tQueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceLockStatusW\n//sys\tControlService(service Handle, control uint32, status *SERVICE_STATUS) (err error) = advapi32.ControlService\n//sys\tStartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) = advapi32.StartServiceCtrlDispatcherW\n//sys\tSetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) = advapi32.SetServiceStatus\n//sys\tChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) = advapi32.ChangeServiceConfigW\n//sys\tQueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfigW\n//sys\tChangeServiceConfig2(service Handle, infoLevel uint32, info *byte) (err error) = advapi32.ChangeServiceConfig2W\n//sys\tQueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceConfig2W\n//sys\tEnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) = advapi32.EnumServicesStatusExW\n//sys\tQueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) = advapi32.QueryServiceStatusEx\n//sys\tNotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) = advapi32.NotifyServiceStatusChangeW\n//sys\tSubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) = sechost.SubscribeServiceChangeNotifications?\n//sys\tUnsubscribeServiceChangeNotifications(subscription uintptr) = sechost.UnsubscribeServiceChangeNotifications?\n//sys\tRegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) = advapi32.RegisterServiceCtrlHandlerExW\n//sys\tQueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) = advapi32.QueryServiceDynamicInformation?\n//sys\tEnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) = advapi32.EnumDependentServicesW\n"
  },
  {
    "path": "gossh/sys/windows/setupapi_windows.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// This file contains functions that wrap SetupAPI.dll and CfgMgr32.dll,\n// core system functions for managing hardware devices, drivers, and the PnP tree.\n// Information about these APIs can be found at:\n//     https://docs.microsoft.com/en-us/windows-hardware/drivers/install/setupapi\n//     https://docs.microsoft.com/en-us/windows/win32/devinst/cfgmgr32-\n\nconst (\n\tERROR_EXPECTED_SECTION_NAME                  Errno = 0x20000000 | 0xC0000000 | 0\n\tERROR_BAD_SECTION_NAME_LINE                  Errno = 0x20000000 | 0xC0000000 | 1\n\tERROR_SECTION_NAME_TOO_LONG                  Errno = 0x20000000 | 0xC0000000 | 2\n\tERROR_GENERAL_SYNTAX                         Errno = 0x20000000 | 0xC0000000 | 3\n\tERROR_WRONG_INF_STYLE                        Errno = 0x20000000 | 0xC0000000 | 0x100\n\tERROR_SECTION_NOT_FOUND                      Errno = 0x20000000 | 0xC0000000 | 0x101\n\tERROR_LINE_NOT_FOUND                         Errno = 0x20000000 | 0xC0000000 | 0x102\n\tERROR_NO_BACKUP                              Errno = 0x20000000 | 0xC0000000 | 0x103\n\tERROR_NO_ASSOCIATED_CLASS                    Errno = 0x20000000 | 0xC0000000 | 0x200\n\tERROR_CLASS_MISMATCH                         Errno = 0x20000000 | 0xC0000000 | 0x201\n\tERROR_DUPLICATE_FOUND                        Errno = 0x20000000 | 0xC0000000 | 0x202\n\tERROR_NO_DRIVER_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x203\n\tERROR_KEY_DOES_NOT_EXIST                     Errno = 0x20000000 | 0xC0000000 | 0x204\n\tERROR_INVALID_DEVINST_NAME                   Errno = 0x20000000 | 0xC0000000 | 0x205\n\tERROR_INVALID_CLASS                          Errno = 0x20000000 | 0xC0000000 | 0x206\n\tERROR_DEVINST_ALREADY_EXISTS                 Errno = 0x20000000 | 0xC0000000 | 0x207\n\tERROR_DEVINFO_NOT_REGISTERED                 Errno = 0x20000000 | 0xC0000000 | 0x208\n\tERROR_INVALID_REG_PROPERTY                   Errno = 0x20000000 | 0xC0000000 | 0x209\n\tERROR_NO_INF                                 Errno = 0x20000000 | 0xC0000000 | 0x20A\n\tERROR_NO_SUCH_DEVINST                        Errno = 0x20000000 | 0xC0000000 | 0x20B\n\tERROR_CANT_LOAD_CLASS_ICON                   Errno = 0x20000000 | 0xC0000000 | 0x20C\n\tERROR_INVALID_CLASS_INSTALLER                Errno = 0x20000000 | 0xC0000000 | 0x20D\n\tERROR_DI_DO_DEFAULT                          Errno = 0x20000000 | 0xC0000000 | 0x20E\n\tERROR_DI_NOFILECOPY                          Errno = 0x20000000 | 0xC0000000 | 0x20F\n\tERROR_INVALID_HWPROFILE                      Errno = 0x20000000 | 0xC0000000 | 0x210\n\tERROR_NO_DEVICE_SELECTED                     Errno = 0x20000000 | 0xC0000000 | 0x211\n\tERROR_DEVINFO_LIST_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x212\n\tERROR_DEVINFO_DATA_LOCKED                    Errno = 0x20000000 | 0xC0000000 | 0x213\n\tERROR_DI_BAD_PATH                            Errno = 0x20000000 | 0xC0000000 | 0x214\n\tERROR_NO_CLASSINSTALL_PARAMS                 Errno = 0x20000000 | 0xC0000000 | 0x215\n\tERROR_FILEQUEUE_LOCKED                       Errno = 0x20000000 | 0xC0000000 | 0x216\n\tERROR_BAD_SERVICE_INSTALLSECT                Errno = 0x20000000 | 0xC0000000 | 0x217\n\tERROR_NO_CLASS_DRIVER_LIST                   Errno = 0x20000000 | 0xC0000000 | 0x218\n\tERROR_NO_ASSOCIATED_SERVICE                  Errno = 0x20000000 | 0xC0000000 | 0x219\n\tERROR_NO_DEFAULT_DEVICE_INTERFACE            Errno = 0x20000000 | 0xC0000000 | 0x21A\n\tERROR_DEVICE_INTERFACE_ACTIVE                Errno = 0x20000000 | 0xC0000000 | 0x21B\n\tERROR_DEVICE_INTERFACE_REMOVED               Errno = 0x20000000 | 0xC0000000 | 0x21C\n\tERROR_BAD_INTERFACE_INSTALLSECT              Errno = 0x20000000 | 0xC0000000 | 0x21D\n\tERROR_NO_SUCH_INTERFACE_CLASS                Errno = 0x20000000 | 0xC0000000 | 0x21E\n\tERROR_INVALID_REFERENCE_STRING               Errno = 0x20000000 | 0xC0000000 | 0x21F\n\tERROR_INVALID_MACHINENAME                    Errno = 0x20000000 | 0xC0000000 | 0x220\n\tERROR_REMOTE_COMM_FAILURE                    Errno = 0x20000000 | 0xC0000000 | 0x221\n\tERROR_MACHINE_UNAVAILABLE                    Errno = 0x20000000 | 0xC0000000 | 0x222\n\tERROR_NO_CONFIGMGR_SERVICES                  Errno = 0x20000000 | 0xC0000000 | 0x223\n\tERROR_INVALID_PROPPAGE_PROVIDER              Errno = 0x20000000 | 0xC0000000 | 0x224\n\tERROR_NO_SUCH_DEVICE_INTERFACE               Errno = 0x20000000 | 0xC0000000 | 0x225\n\tERROR_DI_POSTPROCESSING_REQUIRED             Errno = 0x20000000 | 0xC0000000 | 0x226\n\tERROR_INVALID_COINSTALLER                    Errno = 0x20000000 | 0xC0000000 | 0x227\n\tERROR_NO_COMPAT_DRIVERS                      Errno = 0x20000000 | 0xC0000000 | 0x228\n\tERROR_NO_DEVICE_ICON                         Errno = 0x20000000 | 0xC0000000 | 0x229\n\tERROR_INVALID_INF_LOGCONFIG                  Errno = 0x20000000 | 0xC0000000 | 0x22A\n\tERROR_DI_DONT_INSTALL                        Errno = 0x20000000 | 0xC0000000 | 0x22B\n\tERROR_INVALID_FILTER_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22C\n\tERROR_NON_WINDOWS_NT_DRIVER                  Errno = 0x20000000 | 0xC0000000 | 0x22D\n\tERROR_NON_WINDOWS_DRIVER                     Errno = 0x20000000 | 0xC0000000 | 0x22E\n\tERROR_NO_CATALOG_FOR_OEM_INF                 Errno = 0x20000000 | 0xC0000000 | 0x22F\n\tERROR_DEVINSTALL_QUEUE_NONNATIVE             Errno = 0x20000000 | 0xC0000000 | 0x230\n\tERROR_NOT_DISABLEABLE                        Errno = 0x20000000 | 0xC0000000 | 0x231\n\tERROR_CANT_REMOVE_DEVINST                    Errno = 0x20000000 | 0xC0000000 | 0x232\n\tERROR_INVALID_TARGET                         Errno = 0x20000000 | 0xC0000000 | 0x233\n\tERROR_DRIVER_NONNATIVE                       Errno = 0x20000000 | 0xC0000000 | 0x234\n\tERROR_IN_WOW64                               Errno = 0x20000000 | 0xC0000000 | 0x235\n\tERROR_SET_SYSTEM_RESTORE_POINT               Errno = 0x20000000 | 0xC0000000 | 0x236\n\tERROR_SCE_DISABLED                           Errno = 0x20000000 | 0xC0000000 | 0x238\n\tERROR_UNKNOWN_EXCEPTION                      Errno = 0x20000000 | 0xC0000000 | 0x239\n\tERROR_PNP_REGISTRY_ERROR                     Errno = 0x20000000 | 0xC0000000 | 0x23A\n\tERROR_REMOTE_REQUEST_UNSUPPORTED             Errno = 0x20000000 | 0xC0000000 | 0x23B\n\tERROR_NOT_AN_INSTALLED_OEM_INF               Errno = 0x20000000 | 0xC0000000 | 0x23C\n\tERROR_INF_IN_USE_BY_DEVICES                  Errno = 0x20000000 | 0xC0000000 | 0x23D\n\tERROR_DI_FUNCTION_OBSOLETE                   Errno = 0x20000000 | 0xC0000000 | 0x23E\n\tERROR_NO_AUTHENTICODE_CATALOG                Errno = 0x20000000 | 0xC0000000 | 0x23F\n\tERROR_AUTHENTICODE_DISALLOWED                Errno = 0x20000000 | 0xC0000000 | 0x240\n\tERROR_AUTHENTICODE_TRUSTED_PUBLISHER         Errno = 0x20000000 | 0xC0000000 | 0x241\n\tERROR_AUTHENTICODE_TRUST_NOT_ESTABLISHED     Errno = 0x20000000 | 0xC0000000 | 0x242\n\tERROR_AUTHENTICODE_PUBLISHER_NOT_TRUSTED     Errno = 0x20000000 | 0xC0000000 | 0x243\n\tERROR_SIGNATURE_OSATTRIBUTE_MISMATCH         Errno = 0x20000000 | 0xC0000000 | 0x244\n\tERROR_ONLY_VALIDATE_VIA_AUTHENTICODE         Errno = 0x20000000 | 0xC0000000 | 0x245\n\tERROR_DEVICE_INSTALLER_NOT_READY             Errno = 0x20000000 | 0xC0000000 | 0x246\n\tERROR_DRIVER_STORE_ADD_FAILED                Errno = 0x20000000 | 0xC0000000 | 0x247\n\tERROR_DEVICE_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x248\n\tERROR_DRIVER_INSTALL_BLOCKED                 Errno = 0x20000000 | 0xC0000000 | 0x249\n\tERROR_WRONG_INF_TYPE                         Errno = 0x20000000 | 0xC0000000 | 0x24A\n\tERROR_FILE_HASH_NOT_IN_CATALOG               Errno = 0x20000000 | 0xC0000000 | 0x24B\n\tERROR_DRIVER_STORE_DELETE_FAILED             Errno = 0x20000000 | 0xC0000000 | 0x24C\n\tERROR_UNRECOVERABLE_STACK_OVERFLOW           Errno = 0x20000000 | 0xC0000000 | 0x300\n\tEXCEPTION_SPAPI_UNRECOVERABLE_STACK_OVERFLOW Errno = ERROR_UNRECOVERABLE_STACK_OVERFLOW\n\tERROR_NO_DEFAULT_INTERFACE_DEVICE            Errno = ERROR_NO_DEFAULT_DEVICE_INTERFACE\n\tERROR_INTERFACE_DEVICE_ACTIVE                Errno = ERROR_DEVICE_INTERFACE_ACTIVE\n\tERROR_INTERFACE_DEVICE_REMOVED               Errno = ERROR_DEVICE_INTERFACE_REMOVED\n\tERROR_NO_SUCH_INTERFACE_DEVICE               Errno = ERROR_NO_SUCH_DEVICE_INTERFACE\n)\n\nconst (\n\tMAX_DEVICE_ID_LEN   = 200\n\tMAX_DEVNODE_ID_LEN  = MAX_DEVICE_ID_LEN\n\tMAX_GUID_STRING_LEN = 39 // 38 chars + terminator null\n\tMAX_CLASS_NAME_LEN  = 32\n\tMAX_PROFILE_LEN     = 80\n\tMAX_CONFIG_VALUE    = 9999\n\tMAX_INSTANCE_VALUE  = 9999\n\tCONFIGMG_VERSION    = 0x0400\n)\n\n// Maximum string length constants\nconst (\n\tLINE_LEN                    = 256  // Windows 9x-compatible maximum for displayable strings coming from a device INF.\n\tMAX_INF_STRING_LENGTH       = 4096 // Actual maximum size of an INF string (including string substitutions).\n\tMAX_INF_SECTION_NAME_LENGTH = 255  // For Windows 9x compatibility, INF section names should be constrained to 32 characters.\n\tMAX_TITLE_LEN               = 60\n\tMAX_INSTRUCTION_LEN         = 256\n\tMAX_LABEL_LEN               = 30\n\tMAX_SERVICE_NAME_LEN        = 256\n\tMAX_SUBTITLE_LEN            = 256\n)\n\nconst (\n\t// SP_MAX_MACHINENAME_LENGTH defines maximum length of a machine name in the format expected by ConfigMgr32 CM_Connect_Machine (i.e., \"\\\\\\\\MachineName\\0\").\n\tSP_MAX_MACHINENAME_LENGTH = MAX_PATH + 3\n)\n\n// HSPFILEQ is type for setup file queue\ntype HSPFILEQ uintptr\n\n// DevInfo holds reference to device information set\ntype DevInfo Handle\n\n// DEVINST is a handle usually recognized by cfgmgr32 APIs\ntype DEVINST uint32\n\n// DevInfoData is a device information structure (references a device instance that is a member of a device information set)\ntype DevInfoData struct {\n\tsize      uint32\n\tClassGUID GUID\n\tDevInst   DEVINST\n\t_         uintptr\n}\n\n// DevInfoListDetailData is a structure for detailed information on a device information set (used for SetupDiGetDeviceInfoListDetail which supersedes the functionality of SetupDiGetDeviceInfoListClass).\ntype DevInfoListDetailData struct {\n\tsize                uint32 // Use unsafeSizeOf method\n\tClassGUID           GUID\n\tRemoteMachineHandle Handle\n\tremoteMachineName   [SP_MAX_MACHINENAME_LENGTH]uint16\n}\n\nfunc (*DevInfoListDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DevInfoListDetailData{}.remoteMachineName) + unsafe.Sizeof(DevInfoListDetailData{}.remoteMachineName))\n\t}\n\treturn uint32(unsafe.Sizeof(DevInfoListDetailData{}))\n}\n\nfunc (data *DevInfoListDetailData) RemoteMachineName() string {\n\treturn UTF16ToString(data.remoteMachineName[:])\n}\n\nfunc (data *DevInfoListDetailData) SetRemoteMachineName(remoteMachineName string) error {\n\tstr, err := UTF16FromString(remoteMachineName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.remoteMachineName[:], str)\n\treturn nil\n}\n\n// DI_FUNCTION is function type for device installer\ntype DI_FUNCTION uint32\n\nconst (\n\tDIF_SELECTDEVICE                   DI_FUNCTION = 0x00000001\n\tDIF_INSTALLDEVICE                  DI_FUNCTION = 0x00000002\n\tDIF_ASSIGNRESOURCES                DI_FUNCTION = 0x00000003\n\tDIF_PROPERTIES                     DI_FUNCTION = 0x00000004\n\tDIF_REMOVE                         DI_FUNCTION = 0x00000005\n\tDIF_FIRSTTIMESETUP                 DI_FUNCTION = 0x00000006\n\tDIF_FOUNDDEVICE                    DI_FUNCTION = 0x00000007\n\tDIF_SELECTCLASSDRIVERS             DI_FUNCTION = 0x00000008\n\tDIF_VALIDATECLASSDRIVERS           DI_FUNCTION = 0x00000009\n\tDIF_INSTALLCLASSDRIVERS            DI_FUNCTION = 0x0000000A\n\tDIF_CALCDISKSPACE                  DI_FUNCTION = 0x0000000B\n\tDIF_DESTROYPRIVATEDATA             DI_FUNCTION = 0x0000000C\n\tDIF_VALIDATEDRIVER                 DI_FUNCTION = 0x0000000D\n\tDIF_DETECT                         DI_FUNCTION = 0x0000000F\n\tDIF_INSTALLWIZARD                  DI_FUNCTION = 0x00000010\n\tDIF_DESTROYWIZARDDATA              DI_FUNCTION = 0x00000011\n\tDIF_PROPERTYCHANGE                 DI_FUNCTION = 0x00000012\n\tDIF_ENABLECLASS                    DI_FUNCTION = 0x00000013\n\tDIF_DETECTVERIFY                   DI_FUNCTION = 0x00000014\n\tDIF_INSTALLDEVICEFILES             DI_FUNCTION = 0x00000015\n\tDIF_UNREMOVE                       DI_FUNCTION = 0x00000016\n\tDIF_SELECTBESTCOMPATDRV            DI_FUNCTION = 0x00000017\n\tDIF_ALLOW_INSTALL                  DI_FUNCTION = 0x00000018\n\tDIF_REGISTERDEVICE                 DI_FUNCTION = 0x00000019\n\tDIF_NEWDEVICEWIZARD_PRESELECT      DI_FUNCTION = 0x0000001A\n\tDIF_NEWDEVICEWIZARD_SELECT         DI_FUNCTION = 0x0000001B\n\tDIF_NEWDEVICEWIZARD_PREANALYZE     DI_FUNCTION = 0x0000001C\n\tDIF_NEWDEVICEWIZARD_POSTANALYZE    DI_FUNCTION = 0x0000001D\n\tDIF_NEWDEVICEWIZARD_FINISHINSTALL  DI_FUNCTION = 0x0000001E\n\tDIF_INSTALLINTERFACES              DI_FUNCTION = 0x00000020\n\tDIF_DETECTCANCEL                   DI_FUNCTION = 0x00000021\n\tDIF_REGISTER_COINSTALLERS          DI_FUNCTION = 0x00000022\n\tDIF_ADDPROPERTYPAGE_ADVANCED       DI_FUNCTION = 0x00000023\n\tDIF_ADDPROPERTYPAGE_BASIC          DI_FUNCTION = 0x00000024\n\tDIF_TROUBLESHOOTER                 DI_FUNCTION = 0x00000026\n\tDIF_POWERMESSAGEWAKE               DI_FUNCTION = 0x00000027\n\tDIF_ADDREMOTEPROPERTYPAGE_ADVANCED DI_FUNCTION = 0x00000028\n\tDIF_UPDATEDRIVER_UI                DI_FUNCTION = 0x00000029\n\tDIF_FINISHINSTALL_ACTION           DI_FUNCTION = 0x0000002A\n)\n\n// DevInstallParams is device installation parameters structure (associated with a particular device information element, or globally with a device information set)\ntype DevInstallParams struct {\n\tsize                     uint32\n\tFlags                    DI_FLAGS\n\tFlagsEx                  DI_FLAGSEX\n\thwndParent               uintptr\n\tInstallMsgHandler        uintptr\n\tInstallMsgHandlerContext uintptr\n\tFileQueue                HSPFILEQ\n\t_                        uintptr\n\t_                        uint32\n\tdriverPath               [MAX_PATH]uint16\n}\n\nfunc (params *DevInstallParams) DriverPath() string {\n\treturn UTF16ToString(params.driverPath[:])\n}\n\nfunc (params *DevInstallParams) SetDriverPath(driverPath string) error {\n\tstr, err := UTF16FromString(driverPath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(params.driverPath[:], str)\n\treturn nil\n}\n\n// DI_FLAGS is SP_DEVINSTALL_PARAMS.Flags values\ntype DI_FLAGS uint32\n\nconst (\n\t// Flags for choosing a device\n\tDI_SHOWOEM       DI_FLAGS = 0x00000001 // support Other... button\n\tDI_SHOWCOMPAT    DI_FLAGS = 0x00000002 // show compatibility list\n\tDI_SHOWCLASS     DI_FLAGS = 0x00000004 // show class list\n\tDI_SHOWALL       DI_FLAGS = 0x00000007 // both class & compat list shown\n\tDI_NOVCP         DI_FLAGS = 0x00000008 // don't create a new copy queue--use caller-supplied FileQueue\n\tDI_DIDCOMPAT     DI_FLAGS = 0x00000010 // Searched for compatible devices\n\tDI_DIDCLASS      DI_FLAGS = 0x00000020 // Searched for class devices\n\tDI_AUTOASSIGNRES DI_FLAGS = 0x00000040 // No UI for resources if possible\n\n\t// Flags returned by DiInstallDevice to indicate need to reboot/restart\n\tDI_NEEDRESTART DI_FLAGS = 0x00000080 // Reboot required to take effect\n\tDI_NEEDREBOOT  DI_FLAGS = 0x00000100 // \"\"\n\n\t// Flags for device installation\n\tDI_NOBROWSE DI_FLAGS = 0x00000200 // no Browse... in InsertDisk\n\n\t// Flags set by DiBuildDriverInfoList\n\tDI_MULTMFGS DI_FLAGS = 0x00000400 // Set if multiple manufacturers in class driver list\n\n\t// Flag indicates that device is disabled\n\tDI_DISABLED DI_FLAGS = 0x00000800 // Set if device disabled\n\n\t// Flags for Device/Class Properties\n\tDI_GENERALPAGE_ADDED  DI_FLAGS = 0x00001000\n\tDI_RESOURCEPAGE_ADDED DI_FLAGS = 0x00002000\n\n\t// Flag to indicate the setting properties for this Device (or class) caused a change so the Dev Mgr UI probably needs to be updated.\n\tDI_PROPERTIES_CHANGE DI_FLAGS = 0x00004000\n\n\t// Flag to indicate that the sorting from the INF file should be used.\n\tDI_INF_IS_SORTED DI_FLAGS = 0x00008000\n\n\t// Flag to indicate that only the INF specified by SP_DEVINSTALL_PARAMS.DriverPath should be searched.\n\tDI_ENUMSINGLEINF DI_FLAGS = 0x00010000\n\n\t// Flag that prevents ConfigMgr from removing/re-enumerating devices during device\n\t// registration, installation, and deletion.\n\tDI_DONOTCALLCONFIGMG DI_FLAGS = 0x00020000\n\n\t// The following flag can be used to install a device disabled\n\tDI_INSTALLDISABLED DI_FLAGS = 0x00040000\n\n\t// Flag that causes SetupDiBuildDriverInfoList to build a device's compatible driver\n\t// list from its existing class driver list, instead of the normal INF search.\n\tDI_COMPAT_FROM_CLASS DI_FLAGS = 0x00080000\n\n\t// This flag is set if the Class Install params should be used.\n\tDI_CLASSINSTALLPARAMS DI_FLAGS = 0x00100000\n\n\t// This flag is set if the caller of DiCallClassInstaller does NOT want the internal default action performed if the Class installer returns ERROR_DI_DO_DEFAULT.\n\tDI_NODI_DEFAULTACTION DI_FLAGS = 0x00200000\n\n\t// Flags for device installation\n\tDI_QUIETINSTALL        DI_FLAGS = 0x00800000 // don't confuse the user with questions or excess info\n\tDI_NOFILECOPY          DI_FLAGS = 0x01000000 // No file Copy necessary\n\tDI_FORCECOPY           DI_FLAGS = 0x02000000 // Force files to be copied from install path\n\tDI_DRIVERPAGE_ADDED    DI_FLAGS = 0x04000000 // Prop provider added Driver page.\n\tDI_USECI_SELECTSTRINGS DI_FLAGS = 0x08000000 // Use Class Installer Provided strings in the Select Device Dlg\n\tDI_OVERRIDE_INFFLAGS   DI_FLAGS = 0x10000000 // Override INF flags\n\tDI_PROPS_NOCHANGEUSAGE DI_FLAGS = 0x20000000 // No Enable/Disable in General Props\n\n\tDI_NOSELECTICONS DI_FLAGS = 0x40000000 // No small icons in select device dialogs\n\n\tDI_NOWRITE_IDS DI_FLAGS = 0x80000000 // Don't write HW & Compat IDs on install\n)\n\n// DI_FLAGSEX is SP_DEVINSTALL_PARAMS.FlagsEx values\ntype DI_FLAGSEX uint32\n\nconst (\n\tDI_FLAGSEX_CI_FAILED                DI_FLAGSEX = 0x00000004 // Failed to Load/Call class installer\n\tDI_FLAGSEX_FINISHINSTALL_ACTION     DI_FLAGSEX = 0x00000008 // Class/co-installer wants to get a DIF_FINISH_INSTALL action in client context.\n\tDI_FLAGSEX_DIDINFOLIST              DI_FLAGSEX = 0x00000010 // Did the Class Info List\n\tDI_FLAGSEX_DIDCOMPATINFO            DI_FLAGSEX = 0x00000020 // Did the Compat Info List\n\tDI_FLAGSEX_FILTERCLASSES            DI_FLAGSEX = 0x00000040\n\tDI_FLAGSEX_SETFAILEDINSTALL         DI_FLAGSEX = 0x00000080\n\tDI_FLAGSEX_DEVICECHANGE             DI_FLAGSEX = 0x00000100\n\tDI_FLAGSEX_ALWAYSWRITEIDS           DI_FLAGSEX = 0x00000200\n\tDI_FLAGSEX_PROPCHANGE_PENDING       DI_FLAGSEX = 0x00000400 // One or more device property sheets have had changes made to them, and need to have a DIF_PROPERTYCHANGE occur.\n\tDI_FLAGSEX_ALLOWEXCLUDEDDRVS        DI_FLAGSEX = 0x00000800\n\tDI_FLAGSEX_NOUIONQUERYREMOVE        DI_FLAGSEX = 0x00001000\n\tDI_FLAGSEX_USECLASSFORCOMPAT        DI_FLAGSEX = 0x00002000 // Use the device's class when building compat drv list. (Ignored if DI_COMPAT_FROM_CLASS flag is specified.)\n\tDI_FLAGSEX_NO_DRVREG_MODIFY         DI_FLAGSEX = 0x00008000 // Don't run AddReg and DelReg for device's software (driver) key.\n\tDI_FLAGSEX_IN_SYSTEM_SETUP          DI_FLAGSEX = 0x00010000 // Installation is occurring during initial system setup.\n\tDI_FLAGSEX_INET_DRIVER              DI_FLAGSEX = 0x00020000 // Driver came from Windows Update\n\tDI_FLAGSEX_APPENDDRIVERLIST         DI_FLAGSEX = 0x00040000 // Cause SetupDiBuildDriverInfoList to append a new driver list to an existing list.\n\tDI_FLAGSEX_PREINSTALLBACKUP         DI_FLAGSEX = 0x00080000 // not used\n\tDI_FLAGSEX_BACKUPONREPLACE          DI_FLAGSEX = 0x00100000 // not used\n\tDI_FLAGSEX_DRIVERLIST_FROM_URL      DI_FLAGSEX = 0x00200000 // build driver list from INF(s) retrieved from URL specified in SP_DEVINSTALL_PARAMS.DriverPath (empty string means Windows Update website)\n\tDI_FLAGSEX_EXCLUDE_OLD_INET_DRIVERS DI_FLAGSEX = 0x00800000 // Don't include old Internet drivers when building a driver list. Ignored on Windows Vista and later.\n\tDI_FLAGSEX_POWERPAGE_ADDED          DI_FLAGSEX = 0x01000000 // class installer added their own power page\n\tDI_FLAGSEX_FILTERSIMILARDRIVERS     DI_FLAGSEX = 0x02000000 // only include similar drivers in class list\n\tDI_FLAGSEX_INSTALLEDDRIVER          DI_FLAGSEX = 0x04000000 // only add the installed driver to the class or compat driver list.  Used in calls to SetupDiBuildDriverInfoList\n\tDI_FLAGSEX_NO_CLASSLIST_NODE_MERGE  DI_FLAGSEX = 0x08000000 // Don't remove identical driver nodes from the class list\n\tDI_FLAGSEX_ALTPLATFORM_DRVSEARCH    DI_FLAGSEX = 0x10000000 // Build driver list based on alternate platform information specified in associated file queue\n\tDI_FLAGSEX_RESTART_DEVICE_ONLY      DI_FLAGSEX = 0x20000000 // only restart the device drivers are being installed on as opposed to restarting all devices using those drivers.\n\tDI_FLAGSEX_RECURSIVESEARCH          DI_FLAGSEX = 0x40000000 // Tell SetupDiBuildDriverInfoList to do a recursive search\n\tDI_FLAGSEX_SEARCH_PUBLISHED_INFS    DI_FLAGSEX = 0x80000000 // Tell SetupDiBuildDriverInfoList to do a \"published INF\" search\n)\n\n// ClassInstallHeader is the first member of any class install parameters structure. It contains the device installation request code that defines the format of the rest of the install parameters structure.\ntype ClassInstallHeader struct {\n\tsize            uint32\n\tInstallFunction DI_FUNCTION\n}\n\nfunc MakeClassInstallHeader(installFunction DI_FUNCTION) *ClassInstallHeader {\n\thdr := &ClassInstallHeader{InstallFunction: installFunction}\n\thdr.size = uint32(unsafe.Sizeof(*hdr))\n\treturn hdr\n}\n\n// DICS_STATE specifies values indicating a change in a device's state\ntype DICS_STATE uint32\n\nconst (\n\tDICS_ENABLE     DICS_STATE = 0x00000001 // The device is being enabled.\n\tDICS_DISABLE    DICS_STATE = 0x00000002 // The device is being disabled.\n\tDICS_PROPCHANGE DICS_STATE = 0x00000003 // The properties of the device have changed.\n\tDICS_START      DICS_STATE = 0x00000004 // The device is being started (if the request is for the currently active hardware profile).\n\tDICS_STOP       DICS_STATE = 0x00000005 // The device is being stopped. The driver stack will be unloaded and the CSCONFIGFLAG_DO_NOT_START flag will be set for the device.\n)\n\n// DICS_FLAG specifies the scope of a device property change\ntype DICS_FLAG uint32\n\nconst (\n\tDICS_FLAG_GLOBAL         DICS_FLAG = 0x00000001 // make change in all hardware profiles\n\tDICS_FLAG_CONFIGSPECIFIC DICS_FLAG = 0x00000002 // make change in specified profile only\n\tDICS_FLAG_CONFIGGENERAL  DICS_FLAG = 0x00000004 // 1 or more hardware profile-specific changes to follow (obsolete)\n)\n\n// PropChangeParams is a structure corresponding to a DIF_PROPERTYCHANGE install function.\ntype PropChangeParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tStateChange        DICS_STATE\n\tScope              DICS_FLAG\n\tHwProfile          uint32\n}\n\n// DI_REMOVEDEVICE specifies the scope of the device removal\ntype DI_REMOVEDEVICE uint32\n\nconst (\n\tDI_REMOVEDEVICE_GLOBAL         DI_REMOVEDEVICE = 0x00000001 // Make this change in all hardware profiles. Remove information about the device from the registry.\n\tDI_REMOVEDEVICE_CONFIGSPECIFIC DI_REMOVEDEVICE = 0x00000002 // Make this change to only the hardware profile specified by HwProfile. this flag only applies to root-enumerated devices. When Windows removes the device from the last hardware profile in which it was configured, Windows performs a global removal.\n)\n\n// RemoveDeviceParams is a structure corresponding to a DIF_REMOVE install function.\ntype RemoveDeviceParams struct {\n\tClassInstallHeader ClassInstallHeader\n\tScope              DI_REMOVEDEVICE\n\tHwProfile          uint32\n}\n\n// DrvInfoData is driver information structure (member of a driver info list that may be associated with a particular device instance, or (globally) with a device information set)\ntype DrvInfoData struct {\n\tsize          uint32\n\tDriverType    uint32\n\t_             uintptr\n\tdescription   [LINE_LEN]uint16\n\tmfgName       [LINE_LEN]uint16\n\tproviderName  [LINE_LEN]uint16\n\tDriverDate    Filetime\n\tDriverVersion uint64\n}\n\nfunc (data *DrvInfoData) Description() string {\n\treturn UTF16ToString(data.description[:])\n}\n\nfunc (data *DrvInfoData) SetDescription(description string) error {\n\tstr, err := UTF16FromString(description)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.description[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) MfgName() string {\n\treturn UTF16ToString(data.mfgName[:])\n}\n\nfunc (data *DrvInfoData) SetMfgName(mfgName string) error {\n\tstr, err := UTF16FromString(mfgName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.mfgName[:], str)\n\treturn nil\n}\n\nfunc (data *DrvInfoData) ProviderName() string {\n\treturn UTF16ToString(data.providerName[:])\n}\n\nfunc (data *DrvInfoData) SetProviderName(providerName string) error {\n\tstr, err := UTF16FromString(providerName)\n\tif err != nil {\n\t\treturn err\n\t}\n\tcopy(data.providerName[:], str)\n\treturn nil\n}\n\n// IsNewer method returns true if DrvInfoData date and version is newer than supplied parameters.\nfunc (data *DrvInfoData) IsNewer(driverDate Filetime, driverVersion uint64) bool {\n\tif data.DriverDate.HighDateTime > driverDate.HighDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.HighDateTime < driverDate.HighDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverDate.LowDateTime > driverDate.LowDateTime {\n\t\treturn true\n\t}\n\tif data.DriverDate.LowDateTime < driverDate.LowDateTime {\n\t\treturn false\n\t}\n\n\tif data.DriverVersion > driverVersion {\n\t\treturn true\n\t}\n\tif data.DriverVersion < driverVersion {\n\t\treturn false\n\t}\n\n\treturn false\n}\n\n// DrvInfoDetailData is driver information details structure (provides detailed information about a particular driver information structure)\ntype DrvInfoDetailData struct {\n\tsize            uint32 // Use unsafeSizeOf method\n\tInfDate         Filetime\n\tcompatIDsOffset uint32\n\tcompatIDsLength uint32\n\t_               uintptr\n\tsectionName     [LINE_LEN]uint16\n\tinfFileName     [MAX_PATH]uint16\n\tdrvDescription  [LINE_LEN]uint16\n\thardwareID      [1]uint16\n}\n\nfunc (*DrvInfoDetailData) unsafeSizeOf() uint32 {\n\tif unsafe.Sizeof(uintptr(0)) == 4 {\n\t\t// Windows declares this with pshpack1.h\n\t\treturn uint32(unsafe.Offsetof(DrvInfoDetailData{}.hardwareID) + unsafe.Sizeof(DrvInfoDetailData{}.hardwareID))\n\t}\n\treturn uint32(unsafe.Sizeof(DrvInfoDetailData{}))\n}\n\nfunc (data *DrvInfoDetailData) SectionName() string {\n\treturn UTF16ToString(data.sectionName[:])\n}\n\nfunc (data *DrvInfoDetailData) InfFileName() string {\n\treturn UTF16ToString(data.infFileName[:])\n}\n\nfunc (data *DrvInfoDetailData) DrvDescription() string {\n\treturn UTF16ToString(data.drvDescription[:])\n}\n\nfunc (data *DrvInfoDetailData) HardwareID() string {\n\tif data.compatIDsOffset > 1 {\n\t\tbufW := data.getBuf()\n\t\treturn UTF16ToString(bufW[:wcslen(bufW)])\n\t}\n\n\treturn \"\"\n}\n\nfunc (data *DrvInfoDetailData) CompatIDs() []string {\n\ta := make([]string, 0)\n\n\tif data.compatIDsLength > 0 {\n\t\tbufW := data.getBuf()\n\t\tbufW = bufW[data.compatIDsOffset : data.compatIDsOffset+data.compatIDsLength]\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t}\n\n\treturn a\n}\n\nfunc (data *DrvInfoDetailData) getBuf() []uint16 {\n\tlen := (data.size - uint32(unsafe.Offsetof(data.hardwareID))) / 2\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{&data.hardwareID[0], int(len), int(len)}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// IsCompatible method tests if given hardware ID matches the driver or is listed on the compatible ID list.\nfunc (data *DrvInfoDetailData) IsCompatible(hwid string) bool {\n\thwidLC := strings.ToLower(hwid)\n\tif strings.ToLower(data.HardwareID()) == hwidLC {\n\t\treturn true\n\t}\n\ta := data.CompatIDs()\n\tfor i := range a {\n\t\tif strings.ToLower(a[i]) == hwidLC {\n\t\t\treturn true\n\t\t}\n\t}\n\n\treturn false\n}\n\n// DICD flags control SetupDiCreateDeviceInfo\ntype DICD uint32\n\nconst (\n\tDICD_GENERATE_ID       DICD = 0x00000001\n\tDICD_INHERIT_CLASSDRVS DICD = 0x00000002\n)\n\n// SUOI flags control SetupUninstallOEMInf\ntype SUOI uint32\n\nconst (\n\tSUOI_FORCEDELETE SUOI = 0x0001\n)\n\n// SPDIT flags to distinguish between class drivers and\n// device drivers. (Passed in 'DriverType' parameter of\n// driver information list APIs)\ntype SPDIT uint32\n\nconst (\n\tSPDIT_NODRIVER     SPDIT = 0x00000000\n\tSPDIT_CLASSDRIVER  SPDIT = 0x00000001\n\tSPDIT_COMPATDRIVER SPDIT = 0x00000002\n)\n\n// DIGCF flags control what is included in the device information set built by SetupDiGetClassDevs\ntype DIGCF uint32\n\nconst (\n\tDIGCF_DEFAULT         DIGCF = 0x00000001 // only valid with DIGCF_DEVICEINTERFACE\n\tDIGCF_PRESENT         DIGCF = 0x00000002\n\tDIGCF_ALLCLASSES      DIGCF = 0x00000004\n\tDIGCF_PROFILE         DIGCF = 0x00000008\n\tDIGCF_DEVICEINTERFACE DIGCF = 0x00000010\n)\n\n// DIREG specifies values for SetupDiCreateDevRegKey, SetupDiOpenDevRegKey, and SetupDiDeleteDevRegKey.\ntype DIREG uint32\n\nconst (\n\tDIREG_DEV  DIREG = 0x00000001 // Open/Create/Delete device key\n\tDIREG_DRV  DIREG = 0x00000002 // Open/Create/Delete driver key\n\tDIREG_BOTH DIREG = 0x00000004 // Delete both driver and Device key\n)\n\n// SPDRP specifies device registry property codes\n// (Codes marked as read-only (R) may only be used for\n// SetupDiGetDeviceRegistryProperty)\n//\n// These values should cover the same set of registry properties\n// as defined by the CM_DRP codes in cfgmgr32.h.\n//\n// Note that SPDRP codes are zero based while CM_DRP codes are one based!\ntype SPDRP uint32\n\nconst (\n\tSPDRP_DEVICEDESC                  SPDRP = 0x00000000 // DeviceDesc (R/W)\n\tSPDRP_HARDWAREID                  SPDRP = 0x00000001 // HardwareID (R/W)\n\tSPDRP_COMPATIBLEIDS               SPDRP = 0x00000002 // CompatibleIDs (R/W)\n\tSPDRP_SERVICE                     SPDRP = 0x00000004 // Service (R/W)\n\tSPDRP_CLASS                       SPDRP = 0x00000007 // Class (R--tied to ClassGUID)\n\tSPDRP_CLASSGUID                   SPDRP = 0x00000008 // ClassGUID (R/W)\n\tSPDRP_DRIVER                      SPDRP = 0x00000009 // Driver (R/W)\n\tSPDRP_CONFIGFLAGS                 SPDRP = 0x0000000A // ConfigFlags (R/W)\n\tSPDRP_MFG                         SPDRP = 0x0000000B // Mfg (R/W)\n\tSPDRP_FRIENDLYNAME                SPDRP = 0x0000000C // FriendlyName (R/W)\n\tSPDRP_LOCATION_INFORMATION        SPDRP = 0x0000000D // LocationInformation (R/W)\n\tSPDRP_PHYSICAL_DEVICE_OBJECT_NAME SPDRP = 0x0000000E // PhysicalDeviceObjectName (R)\n\tSPDRP_CAPABILITIES                SPDRP = 0x0000000F // Capabilities (R)\n\tSPDRP_UI_NUMBER                   SPDRP = 0x00000010 // UiNumber (R)\n\tSPDRP_UPPERFILTERS                SPDRP = 0x00000011 // UpperFilters (R/W)\n\tSPDRP_LOWERFILTERS                SPDRP = 0x00000012 // LowerFilters (R/W)\n\tSPDRP_BUSTYPEGUID                 SPDRP = 0x00000013 // BusTypeGUID (R)\n\tSPDRP_LEGACYBUSTYPE               SPDRP = 0x00000014 // LegacyBusType (R)\n\tSPDRP_BUSNUMBER                   SPDRP = 0x00000015 // BusNumber (R)\n\tSPDRP_ENUMERATOR_NAME             SPDRP = 0x00000016 // Enumerator Name (R)\n\tSPDRP_SECURITY                    SPDRP = 0x00000017 // Security (R/W, binary form)\n\tSPDRP_SECURITY_SDS                SPDRP = 0x00000018 // Security (W, SDS form)\n\tSPDRP_DEVTYPE                     SPDRP = 0x00000019 // Device Type (R/W)\n\tSPDRP_EXCLUSIVE                   SPDRP = 0x0000001A // Device is exclusive-access (R/W)\n\tSPDRP_CHARACTERISTICS             SPDRP = 0x0000001B // Device Characteristics (R/W)\n\tSPDRP_ADDRESS                     SPDRP = 0x0000001C // Device Address (R)\n\tSPDRP_UI_NUMBER_DESC_FORMAT       SPDRP = 0x0000001D // UiNumberDescFormat (R/W)\n\tSPDRP_DEVICE_POWER_DATA           SPDRP = 0x0000001E // Device Power Data (R)\n\tSPDRP_REMOVAL_POLICY              SPDRP = 0x0000001F // Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_HW_DEFAULT   SPDRP = 0x00000020 // Hardware Removal Policy (R)\n\tSPDRP_REMOVAL_POLICY_OVERRIDE     SPDRP = 0x00000021 // Removal Policy Override (RW)\n\tSPDRP_INSTALL_STATE               SPDRP = 0x00000022 // Device Install State (R)\n\tSPDRP_LOCATION_PATHS              SPDRP = 0x00000023 // Device Location Paths (R)\n\tSPDRP_BASE_CONTAINERID            SPDRP = 0x00000024 // Base ContainerID (R)\n\n\tSPDRP_MAXIMUM_PROPERTY SPDRP = 0x00000025 // Upper bound on ordinals\n)\n\n// DEVPROPTYPE represents the property-data-type identifier that specifies the\n// data type of a device property value in the unified device property model.\ntype DEVPROPTYPE uint32\n\nconst (\n\tDEVPROP_TYPEMOD_ARRAY DEVPROPTYPE = 0x00001000\n\tDEVPROP_TYPEMOD_LIST  DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_TYPE_EMPTY                      DEVPROPTYPE = 0x00000000\n\tDEVPROP_TYPE_NULL                       DEVPROPTYPE = 0x00000001\n\tDEVPROP_TYPE_SBYTE                      DEVPROPTYPE = 0x00000002\n\tDEVPROP_TYPE_BYTE                       DEVPROPTYPE = 0x00000003\n\tDEVPROP_TYPE_INT16                      DEVPROPTYPE = 0x00000004\n\tDEVPROP_TYPE_UINT16                     DEVPROPTYPE = 0x00000005\n\tDEVPROP_TYPE_INT32                      DEVPROPTYPE = 0x00000006\n\tDEVPROP_TYPE_UINT32                     DEVPROPTYPE = 0x00000007\n\tDEVPROP_TYPE_INT64                      DEVPROPTYPE = 0x00000008\n\tDEVPROP_TYPE_UINT64                     DEVPROPTYPE = 0x00000009\n\tDEVPROP_TYPE_FLOAT                      DEVPROPTYPE = 0x0000000A\n\tDEVPROP_TYPE_DOUBLE                     DEVPROPTYPE = 0x0000000B\n\tDEVPROP_TYPE_DECIMAL                    DEVPROPTYPE = 0x0000000C\n\tDEVPROP_TYPE_GUID                       DEVPROPTYPE = 0x0000000D\n\tDEVPROP_TYPE_CURRENCY                   DEVPROPTYPE = 0x0000000E\n\tDEVPROP_TYPE_DATE                       DEVPROPTYPE = 0x0000000F\n\tDEVPROP_TYPE_FILETIME                   DEVPROPTYPE = 0x00000010\n\tDEVPROP_TYPE_BOOLEAN                    DEVPROPTYPE = 0x00000011\n\tDEVPROP_TYPE_STRING                     DEVPROPTYPE = 0x00000012\n\tDEVPROP_TYPE_STRING_LIST                DEVPROPTYPE = DEVPROP_TYPE_STRING | DEVPROP_TYPEMOD_LIST\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR        DEVPROPTYPE = 0x00000013\n\tDEVPROP_TYPE_SECURITY_DESCRIPTOR_STRING DEVPROPTYPE = 0x00000014\n\tDEVPROP_TYPE_DEVPROPKEY                 DEVPROPTYPE = 0x00000015\n\tDEVPROP_TYPE_DEVPROPTYPE                DEVPROPTYPE = 0x00000016\n\tDEVPROP_TYPE_BINARY                     DEVPROPTYPE = DEVPROP_TYPE_BYTE | DEVPROP_TYPEMOD_ARRAY\n\tDEVPROP_TYPE_ERROR                      DEVPROPTYPE = 0x00000017\n\tDEVPROP_TYPE_NTSTATUS                   DEVPROPTYPE = 0x00000018\n\tDEVPROP_TYPE_STRING_INDIRECT            DEVPROPTYPE = 0x00000019\n\n\tMAX_DEVPROP_TYPE    DEVPROPTYPE = 0x00000019\n\tMAX_DEVPROP_TYPEMOD DEVPROPTYPE = 0x00002000\n\n\tDEVPROP_MASK_TYPE    DEVPROPTYPE = 0x00000FFF\n\tDEVPROP_MASK_TYPEMOD DEVPROPTYPE = 0x0000F000\n)\n\n// DEVPROPGUID specifies a property category.\ntype DEVPROPGUID GUID\n\n// DEVPROPID uniquely identifies the property within the property category.\ntype DEVPROPID uint32\n\nconst DEVPROPID_FIRST_USABLE DEVPROPID = 2\n\n// DEVPROPKEY represents a device property key for a device property in the\n// unified device property model.\ntype DEVPROPKEY struct {\n\tFmtID DEVPROPGUID\n\tPID   DEVPROPID\n}\n\n// CONFIGRET is a return value or error code from cfgmgr32 APIs\ntype CONFIGRET uint32\n\nfunc (ret CONFIGRET) Error() string {\n\tif win32Error, ok := ret.Unwrap().(Errno); ok {\n\t\treturn fmt.Sprintf(\"%s (CfgMgr error: 0x%08x)\", win32Error.Error(), uint32(ret))\n\t}\n\treturn fmt.Sprintf(\"CfgMgr error: 0x%08x\", uint32(ret))\n}\n\nfunc (ret CONFIGRET) Win32Error(defaultError Errno) Errno {\n\treturn cm_MapCrToWin32Err(ret, defaultError)\n}\n\nfunc (ret CONFIGRET) Unwrap() error {\n\tconst noMatch = Errno(^uintptr(0))\n\twin32Error := ret.Win32Error(noMatch)\n\tif win32Error == noMatch {\n\t\treturn nil\n\t}\n\treturn win32Error\n}\n\nconst (\n\tCR_SUCCESS                  CONFIGRET = 0x00000000\n\tCR_DEFAULT                  CONFIGRET = 0x00000001\n\tCR_OUT_OF_MEMORY            CONFIGRET = 0x00000002\n\tCR_INVALID_POINTER          CONFIGRET = 0x00000003\n\tCR_INVALID_FLAG             CONFIGRET = 0x00000004\n\tCR_INVALID_DEVNODE          CONFIGRET = 0x00000005\n\tCR_INVALID_DEVINST                    = CR_INVALID_DEVNODE\n\tCR_INVALID_RES_DES          CONFIGRET = 0x00000006\n\tCR_INVALID_LOG_CONF         CONFIGRET = 0x00000007\n\tCR_INVALID_ARBITRATOR       CONFIGRET = 0x00000008\n\tCR_INVALID_NODELIST         CONFIGRET = 0x00000009\n\tCR_DEVNODE_HAS_REQS         CONFIGRET = 0x0000000A\n\tCR_DEVINST_HAS_REQS                   = CR_DEVNODE_HAS_REQS\n\tCR_INVALID_RESOURCEID       CONFIGRET = 0x0000000B\n\tCR_DLVXD_NOT_FOUND          CONFIGRET = 0x0000000C\n\tCR_NO_SUCH_DEVNODE          CONFIGRET = 0x0000000D\n\tCR_NO_SUCH_DEVINST                    = CR_NO_SUCH_DEVNODE\n\tCR_NO_MORE_LOG_CONF         CONFIGRET = 0x0000000E\n\tCR_NO_MORE_RES_DES          CONFIGRET = 0x0000000F\n\tCR_ALREADY_SUCH_DEVNODE     CONFIGRET = 0x00000010\n\tCR_ALREADY_SUCH_DEVINST               = CR_ALREADY_SUCH_DEVNODE\n\tCR_INVALID_RANGE_LIST       CONFIGRET = 0x00000011\n\tCR_INVALID_RANGE            CONFIGRET = 0x00000012\n\tCR_FAILURE                  CONFIGRET = 0x00000013\n\tCR_NO_SUCH_LOGICAL_DEV      CONFIGRET = 0x00000014\n\tCR_CREATE_BLOCKED           CONFIGRET = 0x00000015\n\tCR_NOT_SYSTEM_VM            CONFIGRET = 0x00000016\n\tCR_REMOVE_VETOED            CONFIGRET = 0x00000017\n\tCR_APM_VETOED               CONFIGRET = 0x00000018\n\tCR_INVALID_LOAD_TYPE        CONFIGRET = 0x00000019\n\tCR_BUFFER_SMALL             CONFIGRET = 0x0000001A\n\tCR_NO_ARBITRATOR            CONFIGRET = 0x0000001B\n\tCR_NO_REGISTRY_HANDLE       CONFIGRET = 0x0000001C\n\tCR_REGISTRY_ERROR           CONFIGRET = 0x0000001D\n\tCR_INVALID_DEVICE_ID        CONFIGRET = 0x0000001E\n\tCR_INVALID_DATA             CONFIGRET = 0x0000001F\n\tCR_INVALID_API              CONFIGRET = 0x00000020\n\tCR_DEVLOADER_NOT_READY      CONFIGRET = 0x00000021\n\tCR_NEED_RESTART             CONFIGRET = 0x00000022\n\tCR_NO_MORE_HW_PROFILES      CONFIGRET = 0x00000023\n\tCR_DEVICE_NOT_THERE         CONFIGRET = 0x00000024\n\tCR_NO_SUCH_VALUE            CONFIGRET = 0x00000025\n\tCR_WRONG_TYPE               CONFIGRET = 0x00000026\n\tCR_INVALID_PRIORITY         CONFIGRET = 0x00000027\n\tCR_NOT_DISABLEABLE          CONFIGRET = 0x00000028\n\tCR_FREE_RESOURCES           CONFIGRET = 0x00000029\n\tCR_QUERY_VETOED             CONFIGRET = 0x0000002A\n\tCR_CANT_SHARE_IRQ           CONFIGRET = 0x0000002B\n\tCR_NO_DEPENDENT             CONFIGRET = 0x0000002C\n\tCR_SAME_RESOURCES           CONFIGRET = 0x0000002D\n\tCR_NO_SUCH_REGISTRY_KEY     CONFIGRET = 0x0000002E\n\tCR_INVALID_MACHINENAME      CONFIGRET = 0x0000002F\n\tCR_REMOTE_COMM_FAILURE      CONFIGRET = 0x00000030\n\tCR_MACHINE_UNAVAILABLE      CONFIGRET = 0x00000031\n\tCR_NO_CM_SERVICES           CONFIGRET = 0x00000032\n\tCR_ACCESS_DENIED            CONFIGRET = 0x00000033\n\tCR_CALL_NOT_IMPLEMENTED     CONFIGRET = 0x00000034\n\tCR_INVALID_PROPERTY         CONFIGRET = 0x00000035\n\tCR_DEVICE_INTERFACE_ACTIVE  CONFIGRET = 0x00000036\n\tCR_NO_SUCH_DEVICE_INTERFACE CONFIGRET = 0x00000037\n\tCR_INVALID_REFERENCE_STRING CONFIGRET = 0x00000038\n\tCR_INVALID_CONFLICT_LIST    CONFIGRET = 0x00000039\n\tCR_INVALID_INDEX            CONFIGRET = 0x0000003A\n\tCR_INVALID_STRUCTURE_SIZE   CONFIGRET = 0x0000003B\n\tNUM_CR_RESULTS              CONFIGRET = 0x0000003C\n)\n\nconst (\n\tCM_GET_DEVICE_INTERFACE_LIST_PRESENT     = 0 // only currently 'live' device interfaces\n\tCM_GET_DEVICE_INTERFACE_LIST_ALL_DEVICES = 1 // all registered device interfaces, live or not\n)\n\nconst (\n\tDN_ROOT_ENUMERATED       = 0x00000001        // Was enumerated by ROOT\n\tDN_DRIVER_LOADED         = 0x00000002        // Has Register_Device_Driver\n\tDN_ENUM_LOADED           = 0x00000004        // Has Register_Enumerator\n\tDN_STARTED               = 0x00000008        // Is currently configured\n\tDN_MANUAL                = 0x00000010        // Manually installed\n\tDN_NEED_TO_ENUM          = 0x00000020        // May need reenumeration\n\tDN_NOT_FIRST_TIME        = 0x00000040        // Has received a config\n\tDN_HARDWARE_ENUM         = 0x00000080        // Enum generates hardware ID\n\tDN_LIAR                  = 0x00000100        // Lied about can reconfig once\n\tDN_HAS_MARK              = 0x00000200        // Not CM_Create_DevInst lately\n\tDN_HAS_PROBLEM           = 0x00000400        // Need device installer\n\tDN_FILTERED              = 0x00000800        // Is filtered\n\tDN_MOVED                 = 0x00001000        // Has been moved\n\tDN_DISABLEABLE           = 0x00002000        // Can be disabled\n\tDN_REMOVABLE             = 0x00004000        // Can be removed\n\tDN_PRIVATE_PROBLEM       = 0x00008000        // Has a private problem\n\tDN_MF_PARENT             = 0x00010000        // Multi function parent\n\tDN_MF_CHILD              = 0x00020000        // Multi function child\n\tDN_WILL_BE_REMOVED       = 0x00040000        // DevInst is being removed\n\tDN_NOT_FIRST_TIMEE       = 0x00080000        // Has received a config enumerate\n\tDN_STOP_FREE_RES         = 0x00100000        // When child is stopped, free resources\n\tDN_REBAL_CANDIDATE       = 0x00200000        // Don't skip during rebalance\n\tDN_BAD_PARTIAL           = 0x00400000        // This devnode's log_confs do not have same resources\n\tDN_NT_ENUMERATOR         = 0x00800000        // This devnode's is an NT enumerator\n\tDN_NT_DRIVER             = 0x01000000        // This devnode's is an NT driver\n\tDN_NEEDS_LOCKING         = 0x02000000        // Devnode need lock resume processing\n\tDN_ARM_WAKEUP            = 0x04000000        // Devnode can be the wakeup device\n\tDN_APM_ENUMERATOR        = 0x08000000        // APM aware enumerator\n\tDN_APM_DRIVER            = 0x10000000        // APM aware driver\n\tDN_SILENT_INSTALL        = 0x20000000        // Silent install\n\tDN_NO_SHOW_IN_DM         = 0x40000000        // No show in device manager\n\tDN_BOOT_LOG_PROB         = 0x80000000        // Had a problem during preassignment of boot log conf\n\tDN_NEED_RESTART          = DN_LIAR           // System needs to be restarted for this Devnode to work properly\n\tDN_DRIVER_BLOCKED        = DN_NOT_FIRST_TIME // One or more drivers are blocked from loading for this Devnode\n\tDN_LEGACY_DRIVER         = DN_MOVED          // This device is using a legacy driver\n\tDN_CHILD_WITH_INVALID_ID = DN_HAS_MARK       // One or more children have invalid IDs\n\tDN_DEVICE_DISCONNECTED   = DN_NEEDS_LOCKING  // The function driver for a device reported that the device is not connected.  Typically this means a wireless device is out of range.\n\tDN_QUERY_REMOVE_PENDING  = DN_MF_PARENT      // Device is part of a set of related devices collectively pending query-removal\n\tDN_QUERY_REMOVE_ACTIVE   = DN_MF_CHILD       // Device is actively engaged in a query-remove IRP\n\tDN_CHANGEABLE_FLAGS      = DN_NOT_FIRST_TIME | DN_HARDWARE_ENUM | DN_HAS_MARK | DN_DISABLEABLE | DN_REMOVABLE | DN_MF_CHILD | DN_MF_PARENT | DN_NOT_FIRST_TIMEE | DN_STOP_FREE_RES | DN_REBAL_CANDIDATE | DN_NT_ENUMERATOR | DN_NT_DRIVER | DN_SILENT_INSTALL | DN_NO_SHOW_IN_DM\n)\n\n//sys\tsetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiCreateDeviceInfoListExW\n\n// SetupDiCreateDeviceInfoListEx function creates an empty device information set on a remote or a local computer and optionally associates the set with a device setup class.\nfunc SetupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName string) (deviceInfoSet DevInfo, err error) {\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiCreateDeviceInfoListEx(classGUID, hwndParent, machineNameUTF16, 0)\n}\n\n//sys\tsetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) = setupapi.SetupDiGetDeviceInfoListDetailW\n\n// SetupDiGetDeviceInfoListDetail function retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc SetupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo) (deviceInfoSetDetailData *DevInfoListDetailData, err error) {\n\tdata := &DevInfoListDetailData{}\n\tdata.size = data.unsafeSizeOf()\n\n\treturn data, setupDiGetDeviceInfoListDetail(deviceInfoSet, data)\n}\n\n// DeviceInfoListDetail method retrieves information associated with a device information set including the class GUID, remote computer handle, and remote computer name.\nfunc (deviceInfoSet DevInfo) DeviceInfoListDetail() (*DevInfoListDetailData, error) {\n\treturn SetupDiGetDeviceInfoListDetail(deviceInfoSet)\n}\n\n//sys\tsetupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCreateDeviceInfoW\n\n// SetupDiCreateDeviceInfo function creates a new device information element and adds it as a new member to the specified device information set.\nfunc SetupDiCreateDeviceInfo(deviceInfoSet DevInfo, deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (deviceInfoData *DevInfoData, err error) {\n\tdeviceNameUTF16, err := UTF16PtrFromString(deviceName)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tvar deviceDescriptionUTF16 *uint16\n\tif deviceDescription != \"\" {\n\t\tdeviceDescriptionUTF16, err = UTF16PtrFromString(deviceDescription)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiCreateDeviceInfo(deviceInfoSet, deviceNameUTF16, classGUID, deviceDescriptionUTF16, hwndParent, creationFlags, data)\n}\n\n// CreateDeviceInfo method creates a new device information element and adds it as a new member to the specified device information set.\nfunc (deviceInfoSet DevInfo) CreateDeviceInfo(deviceName string, classGUID *GUID, deviceDescription string, hwndParent uintptr, creationFlags DICD) (*DevInfoData, error) {\n\treturn SetupDiCreateDeviceInfo(deviceInfoSet, deviceName, classGUID, deviceDescription, hwndParent, creationFlags)\n}\n\n//sys\tsetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiEnumDeviceInfo\n\n// SetupDiEnumDeviceInfo function returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc SetupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex int) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDeviceInfo(deviceInfoSet, uint32(memberIndex), data)\n}\n\n// EnumDeviceInfo method returns a DevInfoData structure that specifies a device information element in a device information set.\nfunc (deviceInfoSet DevInfo) EnumDeviceInfo(memberIndex int) (*DevInfoData, error) {\n\treturn SetupDiEnumDeviceInfo(deviceInfoSet, memberIndex)\n}\n\n// SetupDiDestroyDeviceInfoList function deletes a device information set and frees all associated memory.\n//sys\tSetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiDestroyDeviceInfoList\n\n// Close method deletes a device information set and frees all associated memory.\nfunc (deviceInfoSet DevInfo) Close() error {\n\treturn SetupDiDestroyDeviceInfoList(deviceInfoSet)\n}\n\n//sys\tSetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiBuildDriverInfoList\n\n// BuildDriverInfoList method builds a list of drivers that is associated with a specific device or with the global class driver list for a device information set.\nfunc (deviceInfoSet DevInfo) BuildDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiBuildDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tSetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) = setupapi.SetupDiCancelDriverInfoSearch\n\n// CancelDriverInfoSearch method cancels a driver list search that is currently in progress in a different thread.\nfunc (deviceInfoSet DevInfo) CancelDriverInfoSearch() error {\n\treturn SetupDiCancelDriverInfoSearch(deviceInfoSet)\n}\n\n//sys\tsetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiEnumDriverInfoW\n\n// SetupDiEnumDriverInfo function enumerates the members of a driver list.\nfunc SetupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, uint32(memberIndex), data)\n}\n\n// EnumDriverInfo method enumerates the members of a driver list.\nfunc (deviceInfoSet DevInfo) EnumDriverInfo(deviceInfoData *DevInfoData, driverType SPDIT, memberIndex int) (*DrvInfoData, error) {\n\treturn SetupDiEnumDriverInfo(deviceInfoSet, deviceInfoData, driverType, memberIndex)\n}\n\n//sys\tsetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiGetSelectedDriverW\n\n// SetupDiGetSelectedDriver function retrieves the selected driver for a device information set or a particular device information element.\nfunc SetupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\tdata := &DrvInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDriver(deviceInfoSet, deviceInfoData, data)\n}\n\n// SelectedDriver method retrieves the selected driver for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SelectedDriver(deviceInfoData *DevInfoData) (*DrvInfoData, error) {\n\treturn SetupDiGetSelectedDriver(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tSetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) = setupapi.SetupDiSetSelectedDriverW\n\n// SetSelectedDriver method sets, or resets, the selected driver for a device information element or the selected class driver for a device information set.\nfunc (deviceInfoSet DevInfo) SetSelectedDriver(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) error {\n\treturn SetupDiSetSelectedDriver(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tsetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDriverInfoDetailW\n\n// SetupDiGetDriverInfoDetail function retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc SetupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treqSize := uint32(2048)\n\tfor {\n\t\tbuf := make([]byte, reqSize)\n\t\tdata := (*DrvInfoDetailData)(unsafe.Pointer(&buf[0]))\n\t\tdata.size = data.unsafeSizeOf()\n\t\terr := setupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData, data, uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdata.size = reqSize\n\t\treturn data, nil\n\t}\n}\n\n// DriverInfoDetail method retrieves driver information detail for a device information set or a particular device information element in the device information set.\nfunc (deviceInfoSet DevInfo) DriverInfoDetail(deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (*DrvInfoDetailData, error) {\n\treturn SetupDiGetDriverInfoDetail(deviceInfoSet, deviceInfoData, driverInfoData)\n}\n\n//sys\tSetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) = setupapi.SetupDiDestroyDriverInfoList\n\n// DestroyDriverInfoList method deletes a driver list.\nfunc (deviceInfoSet DevInfo) DestroyDriverInfoList(deviceInfoData *DevInfoData, driverType SPDIT) error {\n\treturn SetupDiDestroyDriverInfoList(deviceInfoSet, deviceInfoData, driverType)\n}\n\n//sys\tsetupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) [failretval==DevInfo(InvalidHandle)] = setupapi.SetupDiGetClassDevsExW\n\n// SetupDiGetClassDevsEx function returns a handle to a device information set that contains requested device information elements for a local or a remote computer.\nfunc SetupDiGetClassDevsEx(classGUID *GUID, enumerator string, hwndParent uintptr, flags DIGCF, deviceInfoSet DevInfo, machineName string) (handle DevInfo, err error) {\n\tvar enumeratorUTF16 *uint16\n\tif enumerator != \"\" {\n\t\tenumeratorUTF16, err = UTF16PtrFromString(enumerator)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\treturn setupDiGetClassDevsEx(classGUID, enumeratorUTF16, hwndParent, flags, deviceInfoSet, machineNameUTF16, 0)\n}\n\n// SetupDiCallClassInstaller function calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\n//sys\tSetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiCallClassInstaller\n\n// CallClassInstaller member calls the appropriate class installer, and any registered co-installers, with the specified installation request (DIF code).\nfunc (deviceInfoSet DevInfo) CallClassInstaller(installFunction DI_FUNCTION, deviceInfoData *DevInfoData) error {\n\treturn SetupDiCallClassInstaller(installFunction, deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiOpenDevRegKey function opens a registry key for device-specific configuration information.\n//sys\tSetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) [failretval==InvalidHandle] = setupapi.SetupDiOpenDevRegKey\n\n// OpenDevRegKey method opens a registry key for device-specific configuration information.\nfunc (deviceInfoSet DevInfo) OpenDevRegKey(DeviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (Handle, error) {\n\treturn SetupDiOpenDevRegKey(deviceInfoSet, DeviceInfoData, Scope, HwProfile, KeyType, samDesired)\n}\n\n//sys\tsetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) = setupapi.SetupDiGetDevicePropertyW\n\n// SetupDiGetDeviceProperty function retrieves a specified device instance property.\nfunc SetupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY) (value any, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType DEVPROPTYPE\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, &dataType, &buf[0], uint32(len(buf)), &reqSize, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\tswitch dataType {\n\t\tcase DEVPROP_TYPE_STRING:\n\t\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\t\truntime.KeepAlive(buf)\n\t\t\treturn ret, nil\n\t\t}\n\t\treturn nil, errors.New(\"unimplemented property type\")\n\t}\n}\n\n//sys\tsetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceRegistryPropertyW\n\n// SetupDiGetDeviceRegistryProperty function retrieves a specified Plug and Play device property.\nfunc SetupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP) (value any, err error) {\n\treqSize := uint32(256)\n\tfor {\n\t\tvar dataType uint32\n\t\tbuf := make([]byte, reqSize)\n\t\terr = setupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &dataType, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t\treturn getRegistryValue(buf[:reqSize], dataType)\n\t}\n}\n\nfunc getRegistryValue(buf []byte, dataType uint32) (any, error) {\n\tswitch dataType {\n\tcase REG_SZ:\n\t\tret := UTF16ToString(bufToUTF16(buf))\n\t\truntime.KeepAlive(buf)\n\t\treturn ret, nil\n\tcase REG_EXPAND_SZ:\n\t\tvalue := UTF16ToString(bufToUTF16(buf))\n\t\tif value == \"\" {\n\t\t\treturn \"\", nil\n\t\t}\n\t\tp, err := syscall.UTF16PtrFromString(value)\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\tret := make([]uint16, 100)\n\t\tfor {\n\t\t\tn, err := ExpandEnvironmentStrings(p, &ret[0], uint32(len(ret)))\n\t\t\tif err != nil {\n\t\t\t\treturn \"\", err\n\t\t\t}\n\t\t\tif n <= uint32(len(ret)) {\n\t\t\t\treturn UTF16ToString(ret[:n]), nil\n\t\t\t}\n\t\t\tret = make([]uint16, n)\n\t\t}\n\tcase REG_BINARY:\n\t\treturn buf, nil\n\tcase REG_DWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint32(buf), nil\n\tcase REG_DWORD_BIG_ENDIAN:\n\t\treturn binary.BigEndian.Uint32(buf), nil\n\tcase REG_MULTI_SZ:\n\t\tbufW := bufToUTF16(buf)\n\t\ta := []string{}\n\t\tfor i := 0; i < len(bufW); {\n\t\t\tj := i + wcslen(bufW[i:])\n\t\t\tif i < j {\n\t\t\t\ta = append(a, UTF16ToString(bufW[i:j]))\n\t\t\t}\n\t\t\ti = j + 1\n\t\t}\n\t\truntime.KeepAlive(buf)\n\t\treturn a, nil\n\tcase REG_QWORD_LITTLE_ENDIAN:\n\t\treturn binary.LittleEndian.Uint64(buf), nil\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"Unsupported registry value type: %v\", dataType)\n\t}\n}\n\n// bufToUTF16 function reinterprets []byte buffer as []uint16\nfunc bufToUTF16(buf []byte) []uint16 {\n\tsl := struct {\n\t\taddr *uint16\n\t\tlen  int\n\t\tcap  int\n\t}{(*uint16)(unsafe.Pointer(&buf[0])), len(buf) / 2, cap(buf) / 2}\n\treturn *(*[]uint16)(unsafe.Pointer(&sl))\n}\n\n// utf16ToBuf function reinterprets []uint16 as []byte\nfunc utf16ToBuf(buf []uint16) []byte {\n\tsl := struct {\n\t\taddr *byte\n\t\tlen  int\n\t\tcap  int\n\t}{(*byte)(unsafe.Pointer(&buf[0])), len(buf) * 2, cap(buf) * 2}\n\treturn *(*[]byte)(unsafe.Pointer(&sl))\n}\n\nfunc wcslen(str []uint16) int {\n\tfor i := 0; i < len(str); i++ {\n\t\tif str[i] == 0 {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn len(str)\n}\n\n// DeviceRegistryProperty method retrieves a specified Plug and Play device property.\nfunc (deviceInfoSet DevInfo) DeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP) (any, error) {\n\treturn SetupDiGetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property)\n}\n\n//sys\tsetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) = setupapi.SetupDiSetDeviceRegistryPropertyW\n\n// SetupDiSetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc SetupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn setupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, &propertyBuffers[0], uint32(len(propertyBuffers)))\n}\n\n// SetDeviceRegistryProperty function sets a Plug and Play device property for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryProperty(deviceInfoData *DevInfoData, property SPDRP, propertyBuffers []byte) error {\n\treturn SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, propertyBuffers)\n}\n\n// SetDeviceRegistryPropertyString method sets a Plug and Play device property string for a device.\nfunc (deviceInfoSet DevInfo) SetDeviceRegistryPropertyString(deviceInfoData *DevInfoData, property SPDRP, str string) error {\n\tstr16, err := UTF16FromString(str)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = SetupDiSetDeviceRegistryProperty(deviceInfoSet, deviceInfoData, property, utf16ToBuf(append(str16, 0)))\n\truntime.KeepAlive(str16)\n\treturn err\n}\n\n//sys\tsetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiGetDeviceInstallParamsW\n\n// SetupDiGetDeviceInstallParams function retrieves device installation parameters for a device information set or a particular device information element.\nfunc SetupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\tparams := &DevInstallParams{}\n\tparams.size = uint32(unsafe.Sizeof(*params))\n\n\treturn params, setupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData, params)\n}\n\n// DeviceInstallParams method retrieves device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) DeviceInstallParams(deviceInfoData *DevInfoData) (*DevInstallParams, error) {\n\treturn SetupDiGetDeviceInstallParams(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) = setupapi.SetupDiGetDeviceInstanceIdW\n\n// SetupDiGetDeviceInstanceId function retrieves the instance ID of the device.\nfunc SetupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (string, error) {\n\treqSize := uint32(1024)\n\tfor {\n\t\tbuf := make([]uint16, reqSize)\n\t\terr := setupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData, &buf[0], uint32(len(buf)), &reqSize)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn \"\", err\n\t\t}\n\t\treturn UTF16ToString(buf), nil\n\t}\n}\n\n// DeviceInstanceID method retrieves the instance ID of the device.\nfunc (deviceInfoSet DevInfo) DeviceInstanceID(deviceInfoData *DevInfoData) (string, error) {\n\treturn SetupDiGetDeviceInstanceId(deviceInfoSet, deviceInfoData)\n}\n\n// SetupDiGetClassInstallParams function retrieves class installation parameters for a device information set or a particular device information element.\n//sys\tSetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) = setupapi.SetupDiGetClassInstallParamsW\n\n// ClassInstallParams method retrieves class installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) ClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) error {\n\treturn SetupDiGetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize, requiredSize)\n}\n\n//sys\tSetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) = setupapi.SetupDiSetDeviceInstallParamsW\n\n// SetDeviceInstallParams member sets device installation parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetDeviceInstallParams(deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) error {\n\treturn SetupDiSetDeviceInstallParams(deviceInfoSet, deviceInfoData, deviceInstallParams)\n}\n\n// SetupDiSetClassInstallParams function sets or clears class install parameters for a device information set or a particular device information element.\n//sys\tSetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) = setupapi.SetupDiSetClassInstallParamsW\n\n// SetClassInstallParams method sets or clears class install parameters for a device information set or a particular device information element.\nfunc (deviceInfoSet DevInfo) SetClassInstallParams(deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) error {\n\treturn SetupDiSetClassInstallParams(deviceInfoSet, deviceInfoData, classInstallParams, classInstallParamsSize)\n}\n\n//sys\tsetupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassNameFromGuidExW\n\n// SetupDiClassNameFromGuidEx function retrieves the class name associated with a class GUID. The class can be installed on a local or remote computer.\nfunc SetupDiClassNameFromGuidEx(classGUID *GUID, machineName string) (className string, err error) {\n\tvar classNameUTF16 [MAX_CLASS_NAME_LEN]uint16\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn\n\t\t}\n\t}\n\n\terr = setupDiClassNameFromGuidEx(classGUID, &classNameUTF16[0], MAX_CLASS_NAME_LEN, nil, machineNameUTF16, 0)\n\tif err != nil {\n\t\treturn\n\t}\n\n\tclassName = UTF16ToString(classNameUTF16[:])\n\treturn\n}\n\n//sys\tsetupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) = setupapi.SetupDiClassGuidsFromNameExW\n\n// SetupDiClassGuidsFromNameEx function retrieves the GUIDs associated with the specified class name. This resulting list contains the classes currently installed on a local or remote computer.\nfunc SetupDiClassGuidsFromNameEx(className string, machineName string) ([]GUID, error) {\n\tclassNameUTF16, err := UTF16PtrFromString(className)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tvar machineNameUTF16 *uint16\n\tif machineName != \"\" {\n\t\tmachineNameUTF16, err = UTF16PtrFromString(machineName)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treqSize := uint32(4)\n\tfor {\n\t\tbuf := make([]GUID, reqSize)\n\t\terr = setupDiClassGuidsFromNameEx(classNameUTF16, &buf[0], uint32(len(buf)), &reqSize, machineNameUTF16, 0)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\treturn buf[:reqSize], nil\n\t}\n}\n\n//sys\tsetupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiGetSelectedDevice\n\n// SetupDiGetSelectedDevice function retrieves the selected device information element in a device information set.\nfunc SetupDiGetSelectedDevice(deviceInfoSet DevInfo) (*DevInfoData, error) {\n\tdata := &DevInfoData{}\n\tdata.size = uint32(unsafe.Sizeof(*data))\n\n\treturn data, setupDiGetSelectedDevice(deviceInfoSet, data)\n}\n\n// SelectedDevice method retrieves the selected device information element in a device information set.\nfunc (deviceInfoSet DevInfo) SelectedDevice() (*DevInfoData, error) {\n\treturn SetupDiGetSelectedDevice(deviceInfoSet)\n}\n\n// SetupDiSetSelectedDevice function sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\n//sys\tSetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) = setupapi.SetupDiSetSelectedDevice\n\n// SetSelectedDevice method sets a device information element as the selected member of a device information set. This function is typically used by an installation wizard.\nfunc (deviceInfoSet DevInfo) SetSelectedDevice(deviceInfoData *DevInfoData) error {\n\treturn SetupDiSetSelectedDevice(deviceInfoSet, deviceInfoData)\n}\n\n//sys\tsetupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) = setupapi.SetupUninstallOEMInfW\n\n// SetupUninstallOEMInf uninstalls the specified driver.\nfunc SetupUninstallOEMInf(infFileName string, flags SUOI) error {\n\tinfFileName16, err := UTF16PtrFromString(infFileName)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn setupUninstallOEMInf(infFileName16, flags, 0)\n}\n\n//sys cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) = CfgMgr32.CM_MapCrToWin32Err\n\n//sys cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_List_SizeW\n//sys cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_Device_Interface_ListW\n\nfunc CM_Get_Device_Interface_List(deviceID string, interfaceClass *GUID, flags uint32) ([]string, error) {\n\tdeviceID16, err := UTF16PtrFromString(deviceID)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tvar buf []uint16\n\tvar buflen uint32\n\tfor {\n\t\tif ret := cm_Get_Device_Interface_List_Size(&buflen, interfaceClass, deviceID16, flags); ret != CR_SUCCESS {\n\t\t\treturn nil, ret\n\t\t}\n\t\tbuf = make([]uint16, buflen)\n\t\tif ret := cm_Get_Device_Interface_List(interfaceClass, deviceID16, &buf[0], buflen, flags); ret == CR_SUCCESS {\n\t\t\tbreak\n\t\t} else if ret != CR_BUFFER_SMALL {\n\t\t\treturn nil, ret\n\t\t}\n\t}\n\tvar interfaces []string\n\tfor i := 0; i < len(buf); {\n\t\tj := i + wcslen(buf[i:])\n\t\tif i < j {\n\t\t\tinterfaces = append(interfaces, UTF16ToString(buf[i:j]))\n\t\t}\n\t\ti = j + 1\n\t}\n\tif interfaces == nil {\n\t\treturn nil, ERROR_NO_SUCH_DEVICE_INTERFACE\n\t}\n\treturn interfaces, nil\n}\n\n//sys cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) = CfgMgr32.CM_Get_DevNode_Status\n\nfunc CM_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) error {\n\tret := cm_Get_DevNode_Status(status, problemNumber, devInst, flags)\n\tif ret == CR_SUCCESS {\n\t\treturn nil\n\t}\n\treturn ret\n}\n"
  },
  {
    "path": "gossh/sys/windows/str.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage windows\n\nfunc itoa(val int) string { // do it here rather than with fmt to avoid dependency\n\tif val < 0 {\n\t\treturn \"-\" + itoa(-val)\n\t}\n\tvar buf [32]byte // big enough for int64\n\ti := len(buf) - 1\n\tfor val >= 10 {\n\t\tbuf[i] = byte(val%10 + '0')\n\t\ti--\n\t\tval /= 10\n\t}\n\tbuf[i] = byte(val + '0')\n\treturn string(buf[i:])\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/debug/log.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage debug\n\nimport (\n\t\"os\"\n\t\"strconv\"\n)\n\n// Log interface allows different log implementations to be used.\ntype Log interface {\n\tClose() error\n\tInfo(eid uint32, msg string) error\n\tWarning(eid uint32, msg string) error\n\tError(eid uint32, msg string) error\n}\n\n// ConsoleLog provides access to the console.\ntype ConsoleLog struct {\n\tName string\n}\n\n// New creates new ConsoleLog.\nfunc New(source string) *ConsoleLog {\n\treturn &ConsoleLog{Name: source}\n}\n\n// Close closes console log l.\nfunc (l *ConsoleLog) Close() error {\n\treturn nil\n}\n\nfunc (l *ConsoleLog) report(kind string, eid uint32, msg string) error {\n\ts := l.Name + \".\" + kind + \"(\" + strconv.Itoa(int(eid)) + \"): \" + msg + \"\\n\"\n\t_, err := os.Stdout.Write([]byte(s))\n\treturn err\n}\n\n// Info writes an information event msg with event id eid to the console l.\nfunc (l *ConsoleLog) Info(eid uint32, msg string) error {\n\treturn l.report(\"info\", eid, msg)\n}\n\n// Warning writes an warning event msg with event id eid to the console l.\nfunc (l *ConsoleLog) Warning(eid uint32, msg string) error {\n\treturn l.report(\"warn\", eid, msg)\n}\n\n// Error writes an error event msg with event id eid to the console l.\nfunc (l *ConsoleLog) Error(eid uint32, msg string) error {\n\treturn l.report(\"error\", eid, msg)\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/debug/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package debug provides facilities to execute svc.Handler on console.\npackage debug\n\nimport (\n\t\"os\"\n\t\"os/signal\"\n\t\"syscall\"\n\n\t\"gossh/sys/windows/svc\"\n)\n\n// Run executes service name by calling appropriate handler function.\n// The process is running on console, unlike real service. Use Ctrl+C to\n// send \"Stop\" command to your service.\nfunc Run(name string, handler svc.Handler) error {\n\tcmds := make(chan svc.ChangeRequest)\n\tchanges := make(chan svc.Status)\n\n\tsig := make(chan os.Signal, 1)\n\tsignal.Notify(sig)\n\n\tgo func() {\n\t\tstatus := svc.Status{State: svc.Stopped}\n\t\tfor {\n\t\t\tselect {\n\t\t\tcase <-sig:\n\t\t\t\tcmds <- svc.ChangeRequest{Cmd: svc.Stop, CurrentStatus: status}\n\t\t\tcase status = <-changes:\n\t\t\t}\n\t\t}\n\t}()\n\n\t_, errno := handler.Execute([]string{name}, cmds, changes)\n\tif errno != 0 {\n\t\treturn syscall.Errno(errno)\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/eventlog/install.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage eventlog\n\nimport (\n\t\"errors\"\n\n\t\"gossh/sys/windows\"\n\t\"gossh/sys/windows/registry\"\n)\n\nconst (\n\t// Log levels.\n\tInfo    = windows.EVENTLOG_INFORMATION_TYPE\n\tWarning = windows.EVENTLOG_WARNING_TYPE\n\tError   = windows.EVENTLOG_ERROR_TYPE\n)\n\nconst addKeyName = `SYSTEM\\CurrentControlSet\\Services\\EventLog\\Application`\n\n// Install modifies PC registry to allow logging with an event source src.\n// It adds all required keys and values to the event log registry key.\n// Install uses msgFile as the event message file. If useExpandKey is true,\n// the event message file is installed as REG_EXPAND_SZ value,\n// otherwise as REG_SZ. Use bitwise of log.Error, log.Warning and\n// log.Info to specify events supported by the new event source.\nfunc Install(src, msgFile string, useExpandKey bool, eventsSupported uint32) error {\n\tappkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.CREATE_SUB_KEY)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer appkey.Close()\n\n\tsk, alreadyExist, err := registry.CreateKey(appkey, src, registry.SET_VALUE)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer sk.Close()\n\tif alreadyExist {\n\t\treturn errors.New(addKeyName + `\\` + src + \" registry key already exists\")\n\t}\n\n\terr = sk.SetDWordValue(\"CustomSource\", 1)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif useExpandKey {\n\t\terr = sk.SetExpandStringValue(\"EventMessageFile\", msgFile)\n\t} else {\n\t\terr = sk.SetStringValue(\"EventMessageFile\", msgFile)\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = sk.SetDWordValue(\"TypesSupported\", eventsSupported)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn nil\n}\n\n// InstallAsEventCreate is the same as Install, but uses\n// %SystemRoot%\\System32\\EventCreate.exe as the event message file.\nfunc InstallAsEventCreate(src string, eventsSupported uint32) error {\n\treturn Install(src, \"%SystemRoot%\\\\System32\\\\EventCreate.exe\", true, eventsSupported)\n}\n\n// Remove deletes all registry elements installed by the correspondent Install.\nfunc Remove(src string) error {\n\tappkey, err := registry.OpenKey(registry.LOCAL_MACHINE, addKeyName, registry.SET_VALUE)\n\tif err != nil {\n\t\treturn err\n\t}\n\tdefer appkey.Close()\n\treturn registry.DeleteKey(appkey, src)\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/eventlog/log.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package eventlog implements access to Windows event log.\npackage eventlog\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n\n\t\"gossh/sys/windows\"\n)\n\n// Log provides access to the system log.\ntype Log struct {\n\tHandle windows.Handle\n}\n\n// Open retrieves a handle to the specified event log.\nfunc Open(source string) (*Log, error) {\n\treturn OpenRemote(\"\", source)\n}\n\n// OpenRemote does the same as Open, but on different computer host.\nfunc OpenRemote(host, source string) (*Log, error) {\n\tif source == \"\" {\n\t\treturn nil, errors.New(\"Specify event log source\")\n\t}\n\tvar s *uint16\n\tif host != \"\" {\n\t\ts = syscall.StringToUTF16Ptr(host)\n\t}\n\th, err := windows.RegisterEventSource(s, syscall.StringToUTF16Ptr(source))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Log{Handle: h}, nil\n}\n\n// Close closes event log l.\nfunc (l *Log) Close() error {\n\treturn windows.DeregisterEventSource(l.Handle)\n}\n\nfunc (l *Log) report(etype uint16, eid uint32, msg string) error {\n\tss := []*uint16{syscall.StringToUTF16Ptr(msg)}\n\treturn windows.ReportEvent(l.Handle, etype, 0, eid, 0, 1, 0, &ss[0], nil)\n}\n\n// Info writes an information event msg with event id eid to the end of event log l.\n// When EventCreate.exe is used, eid must be between 1 and 1000.\nfunc (l *Log) Info(eid uint32, msg string) error {\n\treturn l.report(windows.EVENTLOG_INFORMATION_TYPE, eid, msg)\n}\n\n// Warning writes an warning event msg with event id eid to the end of event log l.\n// When EventCreate.exe is used, eid must be between 1 and 1000.\nfunc (l *Log) Warning(eid uint32, msg string) error {\n\treturn l.report(windows.EVENTLOG_WARNING_TYPE, eid, msg)\n}\n\n// Error writes an error event msg with event id eid to the end of event log l.\n// When EventCreate.exe is used, eid must be between 1 and 1000.\nfunc (l *Log) Error(eid uint32, msg string) error {\n\treturn l.report(windows.EVENTLOG_ERROR_TYPE, eid, msg)\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/mgr/config.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage mgr\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\nconst (\n\t// Service start types.\n\tStartManual    = windows.SERVICE_DEMAND_START // the service must be started manually\n\tStartAutomatic = windows.SERVICE_AUTO_START   // the service will start by itself whenever the computer reboots\n\tStartDisabled  = windows.SERVICE_DISABLED     // the service cannot be started\n\n\t// The severity of the error, and action taken,\n\t// if this service fails to start.\n\tErrorCritical = windows.SERVICE_ERROR_CRITICAL\n\tErrorIgnore   = windows.SERVICE_ERROR_IGNORE\n\tErrorNormal   = windows.SERVICE_ERROR_NORMAL\n\tErrorSevere   = windows.SERVICE_ERROR_SEVERE\n)\n\n// TODO(brainman): Password is not returned by windows.QueryServiceConfig, not sure how to get it.\n\ntype Config struct {\n\tServiceType      uint32\n\tStartType        uint32\n\tErrorControl     uint32\n\tBinaryPathName   string // fully qualified path to the service binary file, can also include arguments for an auto-start service\n\tLoadOrderGroup   string\n\tTagId            uint32\n\tDependencies     []string\n\tServiceStartName string // name of the account under which the service should run\n\tDisplayName      string\n\tPassword         string\n\tDescription      string\n\tSidType          uint32 // one of SERVICE_SID_TYPE, the type of sid to use for the service\n\tDelayedAutoStart bool   // the service is started after other auto-start services are started plus a short delay\n}\n\nfunc toStringSlice(ps *uint16) []string {\n\tr := make([]string, 0)\n\tp := unsafe.Pointer(ps)\n\n\tfor {\n\t\ts := windows.UTF16PtrToString((*uint16)(p))\n\t\tif len(s) == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tr = append(r, s)\n\t\toffset := unsafe.Sizeof(uint16(0)) * (uintptr)(len(s)+1)\n\t\tp = unsafe.Pointer(uintptr(p) + offset)\n\t}\n\n\treturn r\n}\n\n// Config retrieves service s configuration paramteres.\nfunc (s *Service) Config() (Config, error) {\n\tvar p *windows.QUERY_SERVICE_CONFIG\n\tn := uint32(1024)\n\tfor {\n\t\tb := make([]byte, n)\n\t\tp = (*windows.QUERY_SERVICE_CONFIG)(unsafe.Pointer(&b[0]))\n\t\terr := windows.QueryServiceConfig(s.Handle, p, n, &n)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif err.(syscall.Errno) != syscall.ERROR_INSUFFICIENT_BUFFER {\n\t\t\treturn Config{}, err\n\t\t}\n\t\tif n <= uint32(len(b)) {\n\t\t\treturn Config{}, err\n\t\t}\n\t}\n\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_DESCRIPTION)\n\tif err != nil {\n\t\treturn Config{}, err\n\t}\n\tp2 := (*windows.SERVICE_DESCRIPTION)(unsafe.Pointer(&b[0]))\n\n\tb, err = s.queryServiceConfig2(windows.SERVICE_CONFIG_DELAYED_AUTO_START_INFO)\n\tif err != nil {\n\t\treturn Config{}, err\n\t}\n\tp3 := (*windows.SERVICE_DELAYED_AUTO_START_INFO)(unsafe.Pointer(&b[0]))\n\tdelayedStart := false\n\tif p3.IsDelayedAutoStartUp != 0 {\n\t\tdelayedStart = true\n\t}\n\n\tb, err = s.queryServiceConfig2(windows.SERVICE_CONFIG_SERVICE_SID_INFO)\n\tif err != nil {\n\t\treturn Config{}, err\n\t}\n\tsidType := *(*uint32)(unsafe.Pointer(&b[0]))\n\n\treturn Config{\n\t\tServiceType:      p.ServiceType,\n\t\tStartType:        p.StartType,\n\t\tErrorControl:     p.ErrorControl,\n\t\tBinaryPathName:   windows.UTF16PtrToString(p.BinaryPathName),\n\t\tLoadOrderGroup:   windows.UTF16PtrToString(p.LoadOrderGroup),\n\t\tTagId:            p.TagId,\n\t\tDependencies:     toStringSlice(p.Dependencies),\n\t\tServiceStartName: windows.UTF16PtrToString(p.ServiceStartName),\n\t\tDisplayName:      windows.UTF16PtrToString(p.DisplayName),\n\t\tDescription:      windows.UTF16PtrToString(p2.Description),\n\t\tDelayedAutoStart: delayedStart,\n\t\tSidType:          sidType,\n\t}, nil\n}\n\nfunc updateDescription(handle windows.Handle, desc string) error {\n\td := windows.SERVICE_DESCRIPTION{Description: toPtr(desc)}\n\treturn windows.ChangeServiceConfig2(handle,\n\t\twindows.SERVICE_CONFIG_DESCRIPTION, (*byte)(unsafe.Pointer(&d)))\n}\n\nfunc updateSidType(handle windows.Handle, sidType uint32) error {\n\treturn windows.ChangeServiceConfig2(handle, windows.SERVICE_CONFIG_SERVICE_SID_INFO, (*byte)(unsafe.Pointer(&sidType)))\n}\n\nfunc updateStartUp(handle windows.Handle, isDelayed bool) error {\n\tvar d windows.SERVICE_DELAYED_AUTO_START_INFO\n\tif isDelayed {\n\t\td.IsDelayedAutoStartUp = 1\n\t}\n\treturn windows.ChangeServiceConfig2(handle,\n\t\twindows.SERVICE_CONFIG_DELAYED_AUTO_START_INFO, (*byte)(unsafe.Pointer(&d)))\n}\n\n// UpdateConfig updates service s configuration parameters.\nfunc (s *Service) UpdateConfig(c Config) error {\n\terr := windows.ChangeServiceConfig(s.Handle, c.ServiceType, c.StartType,\n\t\tc.ErrorControl, toPtr(c.BinaryPathName), toPtr(c.LoadOrderGroup),\n\t\tnil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName),\n\t\ttoPtr(c.Password), toPtr(c.DisplayName))\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = updateSidType(s.Handle, c.SidType)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\terr = updateStartUp(s.Handle, c.DelayedAutoStart)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn updateDescription(s.Handle, c.Description)\n}\n\n// queryServiceConfig2 calls Windows QueryServiceConfig2 with infoLevel parameter and returns retrieved service configuration information.\nfunc (s *Service) queryServiceConfig2(infoLevel uint32) ([]byte, error) {\n\tn := uint32(1024)\n\tfor {\n\t\tb := make([]byte, n)\n\t\terr := windows.QueryServiceConfig2(s.Handle, infoLevel, &b[0], n, &n)\n\t\tif err == nil {\n\t\t\treturn b, nil\n\t\t}\n\t\tif err.(syscall.Errno) != syscall.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"
  },
  {
    "path": "gossh/sys/windows/svc/mgr/mgr.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package mgr can be used to manage Windows service programs.\n// It can be used to install and remove them. It can also start,\n// stop and pause them. The package can query / change current\n// service state and config parameters.\npackage mgr\n\nimport (\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\n// Mgr is used to manage Windows service.\ntype Mgr struct {\n\tHandle windows.Handle\n}\n\n// Connect establishes a connection to the service control manager.\nfunc Connect() (*Mgr, error) {\n\treturn ConnectRemote(\"\")\n}\n\n// ConnectRemote establishes a connection to the\n// service control manager on computer named host.\nfunc ConnectRemote(host string) (*Mgr, error) {\n\tvar s *uint16\n\tif host != \"\" {\n\t\ts = syscall.StringToUTF16Ptr(host)\n\t}\n\th, err := windows.OpenSCManager(s, nil, windows.SC_MANAGER_ALL_ACCESS)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Mgr{Handle: h}, nil\n}\n\n// Disconnect closes connection to the service control manager m.\nfunc (m *Mgr) Disconnect() error {\n\treturn windows.CloseServiceHandle(m.Handle)\n}\n\ntype LockStatus struct {\n\tIsLocked bool          // Whether the SCM has been locked.\n\tAge      time.Duration // For how long the SCM has been locked.\n\tOwner    string        // The name of the user who has locked the SCM.\n}\n\n// LockStatus returns whether the service control manager is locked by\n// the system, for how long, and by whom. A locked SCM indicates that\n// most service actions will block until the system unlocks the SCM.\nfunc (m *Mgr) LockStatus() (*LockStatus, error) {\n\tbytesNeeded := uint32(unsafe.Sizeof(windows.QUERY_SERVICE_LOCK_STATUS{}) + 1024)\n\tfor {\n\t\tbytes := make([]byte, bytesNeeded)\n\t\tlockStatus := (*windows.QUERY_SERVICE_LOCK_STATUS)(unsafe.Pointer(&bytes[0]))\n\t\terr := windows.QueryServiceLockStatus(m.Handle, lockStatus, uint32(len(bytes)), &bytesNeeded)\n\t\tif err == windows.ERROR_INSUFFICIENT_BUFFER && bytesNeeded >= uint32(unsafe.Sizeof(windows.QUERY_SERVICE_LOCK_STATUS{})) {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tstatus := &LockStatus{\n\t\t\tIsLocked: lockStatus.IsLocked != 0,\n\t\t\tAge:      time.Duration(lockStatus.LockDuration) * time.Second,\n\t\t\tOwner:    windows.UTF16PtrToString(lockStatus.LockOwner),\n\t\t}\n\t\treturn status, nil\n\t}\n}\n\nfunc toPtr(s string) *uint16 {\n\tif len(s) == 0 {\n\t\treturn nil\n\t}\n\treturn syscall.StringToUTF16Ptr(s)\n}\n\n// toStringBlock terminates strings in ss with 0, and then\n// concatenates them together. It also adds extra 0 at the end.\nfunc toStringBlock(ss []string) *uint16 {\n\tif len(ss) == 0 {\n\t\treturn nil\n\t}\n\tt := \"\"\n\tfor _, s := range ss {\n\t\tif s != \"\" {\n\t\t\tt += s + \"\\x00\"\n\t\t}\n\t}\n\tif t == \"\" {\n\t\treturn nil\n\t}\n\tt += \"\\x00\"\n\treturn &utf16.Encode([]rune(t))[0]\n}\n\n// CreateService installs new service name on the system.\n// The service will be executed by running exepath binary.\n// Use config c to specify service parameters.\n// Any args will be passed as command-line arguments when\n// the service is started; these arguments are distinct from\n// the arguments passed to Service.Start or via the \"Start\n// parameters\" field in the service's Properties dialog box.\nfunc (m *Mgr) CreateService(name, exepath string, c Config, args ...string) (*Service, error) {\n\tif c.StartType == 0 {\n\t\tc.StartType = StartManual\n\t}\n\tif c.ServiceType == 0 {\n\t\tc.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS\n\t}\n\ts := syscall.EscapeArg(exepath)\n\tfor _, v := range args {\n\t\ts += \" \" + syscall.EscapeArg(v)\n\t}\n\th, err := windows.CreateService(m.Handle, toPtr(name), toPtr(c.DisplayName),\n\t\twindows.SERVICE_ALL_ACCESS, c.ServiceType,\n\t\tc.StartType, c.ErrorControl, toPtr(s), toPtr(c.LoadOrderGroup),\n\t\tnil, toStringBlock(c.Dependencies), toPtr(c.ServiceStartName), toPtr(c.Password))\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tif c.SidType != windows.SERVICE_SID_TYPE_NONE {\n\t\terr = updateSidType(h, c.SidType)\n\t\tif err != nil {\n\t\t\twindows.DeleteService(h)\n\t\t\twindows.CloseServiceHandle(h)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif c.Description != \"\" {\n\t\terr = updateDescription(h, c.Description)\n\t\tif err != nil {\n\t\t\twindows.DeleteService(h)\n\t\t\twindows.CloseServiceHandle(h)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\tif c.DelayedAutoStart {\n\t\terr = updateStartUp(h, c.DelayedAutoStart)\n\t\tif err != nil {\n\t\t\twindows.DeleteService(h)\n\t\t\twindows.CloseServiceHandle(h)\n\t\t\treturn nil, err\n\t\t}\n\t}\n\treturn &Service{Name: name, Handle: h}, nil\n}\n\n// OpenService retrieves access to service name, so it can\n// be interrogated and controlled.\nfunc (m *Mgr) OpenService(name string) (*Service, error) {\n\th, err := windows.OpenService(m.Handle, syscall.StringToUTF16Ptr(name), windows.SERVICE_ALL_ACCESS)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &Service{Name: name, Handle: h}, nil\n}\n\n// ListServices enumerates services in the specified\n// service control manager database m.\n// If the caller does not have the SERVICE_QUERY_STATUS\n// access right to a service, the service is silently\n// omitted from the list of services returned.\nfunc (m *Mgr) ListServices() ([]string, error) {\n\tvar err error\n\tvar bytesNeeded, servicesReturned uint32\n\tvar buf []byte\n\tfor {\n\t\tvar p *byte\n\t\tif len(buf) > 0 {\n\t\t\tp = &buf[0]\n\t\t}\n\t\terr = windows.EnumServicesStatusEx(m.Handle, windows.SC_ENUM_PROCESS_INFO,\n\t\t\twindows.SERVICE_WIN32, windows.SERVICE_STATE_ALL,\n\t\t\tp, uint32(len(buf)), &bytesNeeded, &servicesReturned, nil, nil)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif err != syscall.ERROR_MORE_DATA {\n\t\t\treturn nil, err\n\t\t}\n\t\tif bytesNeeded <= uint32(len(buf)) {\n\t\t\treturn nil, err\n\t\t}\n\t\tbuf = make([]byte, bytesNeeded)\n\t}\n\tif servicesReturned == 0 {\n\t\treturn nil, nil\n\t}\n\tservices := unsafe.Slice((*windows.ENUM_SERVICE_STATUS_PROCESS)(unsafe.Pointer(&buf[0])), int(servicesReturned))\n\n\tvar names []string\n\tfor _, s := range services {\n\t\tname := windows.UTF16PtrToString(s.ServiceName)\n\t\tnames = append(names, name)\n\t}\n\treturn names, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/mgr/recovery.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage mgr\n\nimport (\n\t\"errors\"\n\t\"syscall\"\n\t\"time\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\nconst (\n\t// Possible recovery actions that the service control manager can perform.\n\tNoAction       = windows.SC_ACTION_NONE        // no action\n\tComputerReboot = windows.SC_ACTION_REBOOT      // reboot the computer\n\tServiceRestart = windows.SC_ACTION_RESTART     // restart the service\n\tRunCommand     = windows.SC_ACTION_RUN_COMMAND // run a command\n)\n\n// RecoveryAction represents an action that the service control manager can perform when service fails.\n// A service is considered failed when it terminates without reporting a status of SERVICE_STOPPED to the service controller.\ntype RecoveryAction struct {\n\tType  int           // one of NoAction, ComputerReboot, ServiceRestart or RunCommand\n\tDelay time.Duration // the time to wait before performing the specified action\n}\n\n// SetRecoveryActions sets actions that service controller performs when service fails and\n// the time after which to reset the service failure count to zero if there are no failures, in seconds.\n// Specify INFINITE to indicate that service failure count should never be reset.\nfunc (s *Service) SetRecoveryActions(recoveryActions []RecoveryAction, resetPeriod uint32) error {\n\tif recoveryActions == nil {\n\t\treturn errors.New(\"recoveryActions cannot be nil\")\n\t}\n\tactions := []windows.SC_ACTION{}\n\tfor _, a := range recoveryActions {\n\t\taction := windows.SC_ACTION{\n\t\t\tType:  uint32(a.Type),\n\t\t\tDelay: uint32(a.Delay.Nanoseconds() / 1000000),\n\t\t}\n\t\tactions = append(actions, action)\n\t}\n\trActions := windows.SERVICE_FAILURE_ACTIONS{\n\t\tActionsCount: uint32(len(actions)),\n\t\tActions:      &actions[0],\n\t\tResetPeriod:  resetPeriod,\n\t}\n\treturn windows.ChangeServiceConfig2(s.Handle, windows.SERVICE_CONFIG_FAILURE_ACTIONS, (*byte)(unsafe.Pointer(&rActions)))\n}\n\n// RecoveryActions returns actions that service controller performs when service fails.\n// The service control manager counts the number of times service s has failed since the system booted.\n// The count is reset to 0 if the service has not failed for ResetPeriod seconds.\n// When the service fails for the Nth time, the service controller performs the action specified in element [N-1] of returned slice.\n// If N is greater than slice length, the service controller repeats the last action in the slice.\nfunc (s *Service) RecoveryActions() ([]RecoveryAction, error) {\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_FAILURE_ACTIONS)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tp := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))\n\tif p.Actions == nil {\n\t\treturn nil, err\n\t}\n\n\tactions := unsafe.Slice(p.Actions, int(p.ActionsCount))\n\tvar recoveryActions []RecoveryAction\n\tfor _, action := range actions {\n\t\trecoveryActions = append(recoveryActions, RecoveryAction{Type: int(action.Type), Delay: time.Duration(action.Delay) * time.Millisecond})\n\t}\n\treturn recoveryActions, nil\n}\n\n// ResetRecoveryActions deletes both reset period and array of failure actions.\nfunc (s *Service) ResetRecoveryActions() error {\n\tactions := make([]windows.SC_ACTION, 1)\n\trActions := windows.SERVICE_FAILURE_ACTIONS{\n\t\tActions: &actions[0],\n\t}\n\treturn windows.ChangeServiceConfig2(s.Handle, windows.SERVICE_CONFIG_FAILURE_ACTIONS, (*byte)(unsafe.Pointer(&rActions)))\n}\n\n// ResetPeriod is the time after which to reset the service failure\n// count to zero if there are no failures, in seconds.\nfunc (s *Service) ResetPeriod() (uint32, error) {\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_FAILURE_ACTIONS)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tp := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))\n\treturn p.ResetPeriod, nil\n}\n\n// SetRebootMessage sets service s reboot message.\n// If msg is \"\", the reboot message is deleted and no message is broadcast.\nfunc (s *Service) SetRebootMessage(msg string) error {\n\trActions := windows.SERVICE_FAILURE_ACTIONS{\n\t\tRebootMsg: syscall.StringToUTF16Ptr(msg),\n\t}\n\treturn windows.ChangeServiceConfig2(s.Handle, windows.SERVICE_CONFIG_FAILURE_ACTIONS, (*byte)(unsafe.Pointer(&rActions)))\n}\n\n// RebootMessage is broadcast to server users before rebooting in response to the ComputerReboot service controller action.\nfunc (s *Service) RebootMessage() (string, error) {\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_FAILURE_ACTIONS)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tp := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))\n\treturn windows.UTF16PtrToString(p.RebootMsg), nil\n}\n\n// SetRecoveryCommand sets the command line of the process to execute in response to the RunCommand service controller action.\n// If cmd is \"\", the command is deleted and no program is run when the service fails.\nfunc (s *Service) SetRecoveryCommand(cmd string) error {\n\trActions := windows.SERVICE_FAILURE_ACTIONS{\n\t\tCommand: syscall.StringToUTF16Ptr(cmd),\n\t}\n\treturn windows.ChangeServiceConfig2(s.Handle, windows.SERVICE_CONFIG_FAILURE_ACTIONS, (*byte)(unsafe.Pointer(&rActions)))\n}\n\n// RecoveryCommand is the command line of the process to execute in response to the RunCommand service controller action. This process runs under the same account as the service.\nfunc (s *Service) RecoveryCommand() (string, error) {\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_FAILURE_ACTIONS)\n\tif err != nil {\n\t\treturn \"\", err\n\t}\n\tp := (*windows.SERVICE_FAILURE_ACTIONS)(unsafe.Pointer(&b[0]))\n\treturn windows.UTF16PtrToString(p.Command), nil\n}\n\n// SetRecoveryActionsOnNonCrashFailures sets the failure actions flag. If the\n// flag is set to false, recovery actions will only be performed if the service\n// terminates without reporting a status of SERVICE_STOPPED. If the flag is set\n// to true, recovery actions are also perfomed if the service stops with a\n// nonzero exit code.\nfunc (s *Service) SetRecoveryActionsOnNonCrashFailures(flag bool) error {\n\tvar setting windows.SERVICE_FAILURE_ACTIONS_FLAG\n\tif flag {\n\t\tsetting.FailureActionsOnNonCrashFailures = 1\n\t}\n\treturn windows.ChangeServiceConfig2(s.Handle, windows.SERVICE_CONFIG_FAILURE_ACTIONS_FLAG, (*byte)(unsafe.Pointer(&setting)))\n}\n\n// RecoveryActionsOnNonCrashFailures returns the current value of the failure\n// actions flag. If the flag is set to false, recovery actions will only be\n// performed if the service terminates without reporting a status of\n// SERVICE_STOPPED. If the flag is set to true, recovery actions are also\n// perfomed if the service stops with a nonzero exit code.\nfunc (s *Service) RecoveryActionsOnNonCrashFailures() (bool, error) {\n\tb, err := s.queryServiceConfig2(windows.SERVICE_CONFIG_FAILURE_ACTIONS_FLAG)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tp := (*windows.SERVICE_FAILURE_ACTIONS_FLAG)(unsafe.Pointer(&b[0]))\n\treturn p.FailureActionsOnNonCrashFailures != 0, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/mgr/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage mgr\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n\t\"gossh/sys/windows/svc\"\n)\n\n// Service is used to access Windows service.\ntype Service struct {\n\tName   string\n\tHandle windows.Handle\n}\n\n// Delete marks service s for deletion from the service control manager database.\nfunc (s *Service) Delete() error {\n\treturn windows.DeleteService(s.Handle)\n}\n\n// Close relinquish access to the service s.\nfunc (s *Service) Close() error {\n\treturn windows.CloseServiceHandle(s.Handle)\n}\n\n// Start starts service s.\n// args will be passed to svc.Handler.Execute.\nfunc (s *Service) Start(args ...string) error {\n\tvar p **uint16\n\tif len(args) > 0 {\n\t\tvs := make([]*uint16, len(args))\n\t\tfor i := range vs {\n\t\t\tvs[i] = syscall.StringToUTF16Ptr(args[i])\n\t\t}\n\t\tp = &vs[0]\n\t}\n\treturn windows.StartService(s.Handle, uint32(len(args)), p)\n}\n\n// Control sends state change request c to the service s. It returns the most\n// recent status the service reported to the service control manager, and an\n// error if the state change request was not accepted.\n// Note that the returned service status is only set if the status change\n// request succeeded, or if it failed with error ERROR_INVALID_SERVICE_CONTROL,\n// ERROR_SERVICE_CANNOT_ACCEPT_CTRL, or ERROR_SERVICE_NOT_ACTIVE.\nfunc (s *Service) Control(c svc.Cmd) (svc.Status, error) {\n\tvar t windows.SERVICE_STATUS\n\terr := windows.ControlService(s.Handle, uint32(c), &t)\n\tif err != nil &&\n\t\terr != windows.ERROR_INVALID_SERVICE_CONTROL &&\n\t\terr != windows.ERROR_SERVICE_CANNOT_ACCEPT_CTRL &&\n\t\terr != windows.ERROR_SERVICE_NOT_ACTIVE {\n\t\treturn svc.Status{}, err\n\t}\n\treturn svc.Status{\n\t\tState:   svc.State(t.CurrentState),\n\t\tAccepts: svc.Accepted(t.ControlsAccepted),\n\t}, err\n}\n\n// Query returns current status of service s.\nfunc (s *Service) Query() (svc.Status, error) {\n\tvar t windows.SERVICE_STATUS_PROCESS\n\tvar needed uint32\n\terr := windows.QueryServiceStatusEx(s.Handle, windows.SC_STATUS_PROCESS_INFO, (*byte)(unsafe.Pointer(&t)), uint32(unsafe.Sizeof(t)), &needed)\n\tif err != nil {\n\t\treturn svc.Status{}, err\n\t}\n\treturn svc.Status{\n\t\tState:                   svc.State(t.CurrentState),\n\t\tAccepts:                 svc.Accepted(t.ControlsAccepted),\n\t\tProcessId:               t.ProcessId,\n\t\tWin32ExitCode:           t.Win32ExitCode,\n\t\tServiceSpecificExitCode: t.ServiceSpecificExitCode,\n\t}, nil\n}\n\n// ListDependentServices returns the names of the services dependent on service s, which match the given status.\nfunc (s *Service) ListDependentServices(status svc.ActivityStatus) ([]string, error) {\n\tvar bytesNeeded, returnedServiceCount uint32\n\tvar services []windows.ENUM_SERVICE_STATUS\n\tfor {\n\t\tvar servicesPtr *windows.ENUM_SERVICE_STATUS\n\t\tif len(services) > 0 {\n\t\t\tservicesPtr = &services[0]\n\t\t}\n\t\tallocatedBytes := uint32(len(services)) * uint32(unsafe.Sizeof(windows.ENUM_SERVICE_STATUS{}))\n\t\terr := windows.EnumDependentServices(s.Handle, uint32(status), servicesPtr, allocatedBytes, &bytesNeeded,\n\t\t\t&returnedServiceCount)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t}\n\t\tif err != syscall.ERROR_MORE_DATA {\n\t\t\treturn nil, err\n\t\t}\n\t\tif bytesNeeded <= allocatedBytes {\n\t\t\treturn nil, err\n\t\t}\n\t\t// ERROR_MORE_DATA indicates the provided buffer was too small, run the call again after resizing the buffer\n\t\trequiredSliceLen := bytesNeeded / uint32(unsafe.Sizeof(windows.ENUM_SERVICE_STATUS{}))\n\t\tif bytesNeeded%uint32(unsafe.Sizeof(windows.ENUM_SERVICE_STATUS{})) != 0 {\n\t\t\trequiredSliceLen += 1\n\t\t}\n\t\tservices = make([]windows.ENUM_SERVICE_STATUS, requiredSliceLen)\n\t}\n\tif returnedServiceCount == 0 {\n\t\treturn nil, nil\n\t}\n\n\t// The slice mutated by EnumDependentServices may have a length greater than returnedServiceCount, any elements\n\t// past that should be ignored.\n\tvar dependents []string\n\tfor i := 0; i < int(returnedServiceCount); i++ {\n\t\tdependents = append(dependents, windows.UTF16PtrToString(services[i].ServiceName))\n\t}\n\treturn dependents, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/security.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\npackage svc\n\nimport (\n\t\"strings\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\nfunc allocSid(subAuth0 uint32) (*windows.SID, error) {\n\tvar sid *windows.SID\n\terr := windows.AllocateAndInitializeSid(&windows.SECURITY_NT_AUTHORITY,\n\t\t1, subAuth0, 0, 0, 0, 0, 0, 0, 0, &sid)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn sid, nil\n}\n\n// IsAnInteractiveSession determines if calling process is running interactively.\n// It queries the process token for membership in the Interactive group.\n// http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s\n//\n// Deprecated: Use IsWindowsService instead.\nfunc IsAnInteractiveSession() (bool, error) {\n\tinterSid, err := allocSid(windows.SECURITY_INTERACTIVE_RID)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer windows.FreeSid(interSid)\n\n\tserviceSid, err := allocSid(windows.SECURITY_SERVICE_RID)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer windows.FreeSid(serviceSid)\n\n\tt, err := windows.OpenCurrentProcessToken()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tdefer t.Close()\n\n\tgs, err := t.GetTokenGroups()\n\tif err != nil {\n\t\treturn false, err\n\t}\n\n\tfor _, g := range gs.AllGroups() {\n\t\tif windows.EqualSid(g.Sid, interSid) {\n\t\t\treturn true, nil\n\t\t}\n\t\tif windows.EqualSid(g.Sid, serviceSid) {\n\t\t\treturn false, nil\n\t\t}\n\t}\n\treturn false, nil\n}\n\n// IsWindowsService reports whether the process is currently executing\n// as a Windows service.\nfunc IsWindowsService() (bool, error) {\n\t// The below technique looks a bit hairy, but it's actually\n\t// exactly what the .NET framework does for the similarly named function:\n\t// https://github.com/dotnet/extensions/blob/f4066026ca06984b07e90e61a6390ac38152ba93/src/Hosting/WindowsServices/src/WindowsServiceHelpers.cs#L26-L31\n\t// Specifically, it looks up whether the parent process has session ID zero\n\t// and is called \"services\".\n\n\tvar currentProcess windows.PROCESS_BASIC_INFORMATION\n\tinfoSize := uint32(unsafe.Sizeof(currentProcess))\n\terr := windows.NtQueryInformationProcess(windows.CurrentProcess(), windows.ProcessBasicInformation, unsafe.Pointer(&currentProcess), infoSize, &infoSize)\n\tif err != nil {\n\t\treturn false, err\n\t}\n\tvar parentProcess *windows.SYSTEM_PROCESS_INFORMATION\n\tfor infoSize = uint32((unsafe.Sizeof(*parentProcess) + unsafe.Sizeof(uintptr(0))) * 1024); ; {\n\t\tparentProcess = (*windows.SYSTEM_PROCESS_INFORMATION)(unsafe.Pointer(&make([]byte, infoSize)[0]))\n\t\terr = windows.NtQuerySystemInformation(windows.SystemProcessInformation, unsafe.Pointer(parentProcess), infoSize, &infoSize)\n\t\tif err == nil {\n\t\t\tbreak\n\t\t} else if err != windows.STATUS_INFO_LENGTH_MISMATCH {\n\t\t\treturn false, err\n\t\t}\n\t}\n\tfor ; ; parentProcess = (*windows.SYSTEM_PROCESS_INFORMATION)(unsafe.Pointer(uintptr(unsafe.Pointer(parentProcess)) + uintptr(parentProcess.NextEntryOffset))) {\n\t\tif parentProcess.UniqueProcessID == currentProcess.InheritedFromUniqueProcessId {\n\t\t\treturn parentProcess.SessionID == 0 && strings.EqualFold(\"services.exe\", parentProcess.ImageName.String()), nil\n\t\t}\n\t\tif parentProcess.NextEntryOffset == 0 {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn false, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/svc/service.go",
    "content": "// Copyright 2012 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package svc provides everything required to build Windows service.\npackage svc\n\nimport (\n\t\"errors\"\n\t\"sync\"\n\t\"unsafe\"\n\n\t\"gossh/sys/windows\"\n)\n\n// State describes service execution state (Stopped, Running and so on).\ntype State uint32\n\nconst (\n\tStopped         = State(windows.SERVICE_STOPPED)\n\tStartPending    = State(windows.SERVICE_START_PENDING)\n\tStopPending     = State(windows.SERVICE_STOP_PENDING)\n\tRunning         = State(windows.SERVICE_RUNNING)\n\tContinuePending = State(windows.SERVICE_CONTINUE_PENDING)\n\tPausePending    = State(windows.SERVICE_PAUSE_PENDING)\n\tPaused          = State(windows.SERVICE_PAUSED)\n)\n\n// Cmd represents service state change request. It is sent to a service\n// by the service manager, and should be actioned upon by the service.\ntype Cmd uint32\n\nconst (\n\tStop                  = Cmd(windows.SERVICE_CONTROL_STOP)\n\tPause                 = Cmd(windows.SERVICE_CONTROL_PAUSE)\n\tContinue              = Cmd(windows.SERVICE_CONTROL_CONTINUE)\n\tInterrogate           = Cmd(windows.SERVICE_CONTROL_INTERROGATE)\n\tShutdown              = Cmd(windows.SERVICE_CONTROL_SHUTDOWN)\n\tParamChange           = Cmd(windows.SERVICE_CONTROL_PARAMCHANGE)\n\tNetBindAdd            = Cmd(windows.SERVICE_CONTROL_NETBINDADD)\n\tNetBindRemove         = Cmd(windows.SERVICE_CONTROL_NETBINDREMOVE)\n\tNetBindEnable         = Cmd(windows.SERVICE_CONTROL_NETBINDENABLE)\n\tNetBindDisable        = Cmd(windows.SERVICE_CONTROL_NETBINDDISABLE)\n\tDeviceEvent           = Cmd(windows.SERVICE_CONTROL_DEVICEEVENT)\n\tHardwareProfileChange = Cmd(windows.SERVICE_CONTROL_HARDWAREPROFILECHANGE)\n\tPowerEvent            = Cmd(windows.SERVICE_CONTROL_POWEREVENT)\n\tSessionChange         = Cmd(windows.SERVICE_CONTROL_SESSIONCHANGE)\n\tPreShutdown           = Cmd(windows.SERVICE_CONTROL_PRESHUTDOWN)\n)\n\n// Accepted is used to describe commands accepted by the service.\n// Note that Interrogate is always accepted.\ntype Accepted uint32\n\nconst (\n\tAcceptStop                  = Accepted(windows.SERVICE_ACCEPT_STOP)\n\tAcceptShutdown              = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN)\n\tAcceptPauseAndContinue      = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE)\n\tAcceptParamChange           = Accepted(windows.SERVICE_ACCEPT_PARAMCHANGE)\n\tAcceptNetBindChange         = Accepted(windows.SERVICE_ACCEPT_NETBINDCHANGE)\n\tAcceptHardwareProfileChange = Accepted(windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE)\n\tAcceptPowerEvent            = Accepted(windows.SERVICE_ACCEPT_POWEREVENT)\n\tAcceptSessionChange         = Accepted(windows.SERVICE_ACCEPT_SESSIONCHANGE)\n\tAcceptPreShutdown           = Accepted(windows.SERVICE_ACCEPT_PRESHUTDOWN)\n)\n\n// ActivityStatus allows for services to be selected based on active and inactive categories of service state.\ntype ActivityStatus uint32\n\nconst (\n\tActive      = ActivityStatus(windows.SERVICE_ACTIVE)\n\tInactive    = ActivityStatus(windows.SERVICE_INACTIVE)\n\tAnyActivity = ActivityStatus(windows.SERVICE_STATE_ALL)\n)\n\n// Status combines State and Accepted commands to fully describe running service.\ntype Status struct {\n\tState                   State\n\tAccepts                 Accepted\n\tCheckPoint              uint32 // used to report progress during a lengthy operation\n\tWaitHint                uint32 // estimated time required for a pending operation, in milliseconds\n\tProcessId               uint32 // if the service is running, the process identifier of it, and otherwise zero\n\tWin32ExitCode           uint32 // set if the service has exited with a win32 exit code\n\tServiceSpecificExitCode uint32 // set if the service has exited with a service-specific exit code\n}\n\n// StartReason is the reason that the service was started.\ntype StartReason uint32\n\nconst (\n\tStartReasonDemand           = StartReason(windows.SERVICE_START_REASON_DEMAND)\n\tStartReasonAuto             = StartReason(windows.SERVICE_START_REASON_AUTO)\n\tStartReasonTrigger          = StartReason(windows.SERVICE_START_REASON_TRIGGER)\n\tStartReasonRestartOnFailure = StartReason(windows.SERVICE_START_REASON_RESTART_ON_FAILURE)\n\tStartReasonDelayedAuto      = StartReason(windows.SERVICE_START_REASON_DELAYEDAUTO)\n)\n\n// ChangeRequest is sent to the service Handler to request service status change.\ntype ChangeRequest struct {\n\tCmd           Cmd\n\tEventType     uint32\n\tEventData     uintptr\n\tCurrentStatus Status\n\tContext       uintptr\n}\n\n// Handler is the interface that must be implemented to build Windows service.\ntype Handler interface {\n\t// Execute will be called by the package code at the start of\n\t// the service, and the service will exit once Execute completes.\n\t// Inside Execute you must read service change requests from r and\n\t// act accordingly. You must keep service control manager up to date\n\t// about state of your service by writing into s as required.\n\t// args contains service name followed by argument strings passed\n\t// to the service.\n\t// You can provide service exit code in exitCode return parameter,\n\t// with 0 being \"no error\". You can also indicate if exit code,\n\t// if any, is service specific or not by using svcSpecificEC\n\t// parameter.\n\tExecute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32)\n}\n\ntype ctlEvent struct {\n\tcmd       Cmd\n\teventType uint32\n\teventData uintptr\n\tcontext   uintptr\n\terrno     uint32\n}\n\n// service provides access to windows service api.\ntype service struct {\n\tname    string\n\th       windows.Handle\n\tc       chan ctlEvent\n\thandler Handler\n}\n\ntype exitCode struct {\n\tisSvcSpecific bool\n\terrno         uint32\n}\n\nfunc (s *service) updateStatus(status *Status, ec *exitCode) error {\n\tif s.h == 0 {\n\t\treturn errors.New(\"updateStatus with no service status handle\")\n\t}\n\tvar t windows.SERVICE_STATUS\n\tt.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS\n\tt.CurrentState = uint32(status.State)\n\tif status.Accepts&AcceptStop != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_STOP\n\t}\n\tif status.Accepts&AcceptShutdown != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_SHUTDOWN\n\t}\n\tif status.Accepts&AcceptPauseAndContinue != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE\n\t}\n\tif status.Accepts&AcceptParamChange != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_PARAMCHANGE\n\t}\n\tif status.Accepts&AcceptNetBindChange != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_NETBINDCHANGE\n\t}\n\tif status.Accepts&AcceptHardwareProfileChange != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE\n\t}\n\tif status.Accepts&AcceptPowerEvent != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_POWEREVENT\n\t}\n\tif status.Accepts&AcceptSessionChange != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_SESSIONCHANGE\n\t}\n\tif status.Accepts&AcceptPreShutdown != 0 {\n\t\tt.ControlsAccepted |= windows.SERVICE_ACCEPT_PRESHUTDOWN\n\t}\n\tif ec.errno == 0 {\n\t\tt.Win32ExitCode = windows.NO_ERROR\n\t\tt.ServiceSpecificExitCode = windows.NO_ERROR\n\t} else if ec.isSvcSpecific {\n\t\tt.Win32ExitCode = uint32(windows.ERROR_SERVICE_SPECIFIC_ERROR)\n\t\tt.ServiceSpecificExitCode = ec.errno\n\t} else {\n\t\tt.Win32ExitCode = ec.errno\n\t\tt.ServiceSpecificExitCode = windows.NO_ERROR\n\t}\n\tt.CheckPoint = status.CheckPoint\n\tt.WaitHint = status.WaitHint\n\treturn windows.SetServiceStatus(s.h, &t)\n}\n\nvar (\n\tinitCallbacks       sync.Once\n\tctlHandlerCallback  uintptr\n\tserviceMainCallback uintptr\n)\n\nfunc ctlHandler(ctl, evtype, evdata, context uintptr) uintptr {\n\ts := (*service)(unsafe.Pointer(context))\n\te := ctlEvent{cmd: Cmd(ctl), eventType: uint32(evtype), eventData: evdata, context: 123456} // Set context to 123456 to test issue #25660.\n\ts.c <- e\n\treturn 0\n}\n\nvar theService service // This is, unfortunately, a global, which means only one service per process.\n\n// serviceMain is the entry point called by the service manager, registered earlier by\n// the call to StartServiceCtrlDispatcher.\nfunc serviceMain(argc uint32, argv **uint16) uintptr {\n\thandle, err := windows.RegisterServiceCtrlHandlerEx(windows.StringToUTF16Ptr(theService.name), ctlHandlerCallback, uintptr(unsafe.Pointer(&theService)))\n\tif sysErr, ok := err.(windows.Errno); ok {\n\t\treturn uintptr(sysErr)\n\t} else if err != nil {\n\t\treturn uintptr(windows.ERROR_UNKNOWN_EXCEPTION)\n\t}\n\ttheService.h = handle\n\tdefer func() {\n\t\ttheService.h = 0\n\t}()\n\targs16 := unsafe.Slice(argv, int(argc))\n\n\targs := make([]string, len(args16))\n\tfor i, a := range args16 {\n\t\targs[i] = windows.UTF16PtrToString(a)\n\t}\n\n\tcmdsToHandler := make(chan ChangeRequest)\n\tchangesFromHandler := make(chan Status)\n\texitFromHandler := make(chan exitCode)\n\n\tgo func() {\n\t\tss, errno := theService.handler.Execute(args, cmdsToHandler, changesFromHandler)\n\t\texitFromHandler <- exitCode{ss, errno}\n\t}()\n\n\tec := exitCode{isSvcSpecific: true, errno: 0}\n\toutcr := ChangeRequest{\n\t\tCurrentStatus: Status{State: Stopped},\n\t}\n\tvar outch chan ChangeRequest\n\tinch := theService.c\nloop:\n\tfor {\n\t\tselect {\n\t\tcase r := <-inch:\n\t\t\tif r.errno != 0 {\n\t\t\t\tec.errno = r.errno\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\tinch = nil\n\t\t\toutch = cmdsToHandler\n\t\t\toutcr.Cmd = r.cmd\n\t\t\toutcr.EventType = r.eventType\n\t\t\toutcr.EventData = r.eventData\n\t\t\toutcr.Context = r.context\n\t\tcase outch <- outcr:\n\t\t\tinch = theService.c\n\t\t\toutch = nil\n\t\tcase c := <-changesFromHandler:\n\t\t\terr := theService.updateStatus(&c, &ec)\n\t\t\tif err != nil {\n\t\t\t\tec.errno = uint32(windows.ERROR_EXCEPTION_IN_SERVICE)\n\t\t\t\tif err2, ok := err.(windows.Errno); ok {\n\t\t\t\t\tec.errno = uint32(err2)\n\t\t\t\t}\n\t\t\t\tbreak loop\n\t\t\t}\n\t\t\toutcr.CurrentStatus = c\n\t\tcase ec = <-exitFromHandler:\n\t\t\tbreak loop\n\t\t}\n\t}\n\n\ttheService.updateStatus(&Status{State: Stopped}, &ec)\n\n\treturn windows.NO_ERROR\n}\n\n// Run executes service name by calling appropriate handler function.\nfunc Run(name string, handler Handler) error {\n\tinitCallbacks.Do(func() {\n\t\tctlHandlerCallback = windows.NewCallback(ctlHandler)\n\t\tserviceMainCallback = windows.NewCallback(serviceMain)\n\t})\n\ttheService.name = name\n\ttheService.handler = handler\n\ttheService.c = make(chan ctlEvent)\n\tt := []windows.SERVICE_TABLE_ENTRY{\n\t\t{ServiceName: windows.StringToUTF16Ptr(theService.name), ServiceProc: serviceMainCallback},\n\t\t{ServiceName: nil, ServiceProc: 0},\n\t}\n\treturn windows.StartServiceCtrlDispatcher(&t[0])\n}\n\n// StatusHandle returns service status handle. It is safe to call this function\n// from inside the Handler.Execute because then it is guaranteed to be set.\nfunc StatusHandle() windows.Handle {\n\treturn theService.h\n}\n\n// DynamicStartReason returns the reason why the service was started. It is safe\n// to call this function from inside the Handler.Execute because then it is\n// guaranteed to be set.\nfunc DynamicStartReason() (StartReason, error) {\n\tvar allocReason *uint32\n\terr := windows.QueryServiceDynamicInformation(theService.h, windows.SERVICE_DYNAMIC_INFORMATION_LEVEL_START_REASON, unsafe.Pointer(&allocReason))\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\treason := StartReason(*allocReason)\n\twindows.LocalFree(windows.Handle(unsafe.Pointer(allocReason)))\n\treturn reason, nil\n}\n"
  },
  {
    "path": "gossh/sys/windows/syscall.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build windows\n\n// Package windows contains an interface to the low-level operating system\n// primitives. OS details vary depending on the underlying system, and\n// by default, godoc will display the OS-specific documentation for the current\n// system. If you want godoc to display syscall documentation for another\n// system, set $GOOS and $GOARCH to the desired system. For example, if\n// you want to view documentation for freebsd/arm on linux/amd64, set $GOOS\n// to freebsd and $GOARCH to arm.\n//\n// The primary use of this package is inside other packages that provide a more\n// portable interface to the system, such as \"os\", \"time\" and \"net\".  Use\n// those packages rather than this one if you can.\n//\n// For details of the functions and data types in this package consult\n// the manuals for the appropriate operating system.\n//\n// These calls return err == nil to indicate success; otherwise\n// err represents an operating system error describing the failure and\n// holds a value of type syscall.Errno.\npackage windows // import \"gossh/sys/windows\"\n\nimport (\n\t\"bytes\"\n\t\"strings\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// ByteSliceFromString returns a NUL-terminated slice of bytes\n// containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc ByteSliceFromString(s string) ([]byte, error) {\n\tif strings.IndexByte(s, 0) != -1 {\n\t\treturn nil, syscall.EINVAL\n\t}\n\ta := make([]byte, len(s)+1)\n\tcopy(a, s)\n\treturn a, nil\n}\n\n// BytePtrFromString returns a pointer to a NUL-terminated array of\n// bytes containing the text of s. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc BytePtrFromString(s string) (*byte, error) {\n\ta, err := ByteSliceFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// ByteSliceToString returns a string form of the text represented by the slice s, with a terminating NUL and any\n// bytes after the NUL removed.\nfunc ByteSliceToString(s []byte) string {\n\tif i := bytes.IndexByte(s, 0); i != -1 {\n\t\ts = s[:i]\n\t}\n\treturn string(s)\n}\n\n// BytePtrToString takes a pointer to a sequence of text and returns the corresponding string.\n// If the pointer is nil, it returns the empty string. It assumes that the text sequence is terminated\n// at a zero byte; if the zero byte is not present, the program may crash.\nfunc BytePtrToString(p *byte) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*byte)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + 1)\n\t}\n\n\treturn string(unsafe.Slice(p, n))\n}\n\n// Single-word zero for use when we need a valid pointer to 0 bytes.\n// See mksyscall.pl.\nvar _zero uintptr\n\nfunc (ts *Timespec) Unix() (sec int64, nsec int64) {\n\treturn int64(ts.Sec), int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Unix() (sec int64, nsec int64) {\n\treturn int64(tv.Sec), int64(tv.Usec) * 1000\n}\n\nfunc (ts *Timespec) Nano() int64 {\n\treturn int64(ts.Sec)*1e9 + int64(ts.Nsec)\n}\n\nfunc (tv *Timeval) Nano() int64 {\n\treturn int64(tv.Sec)*1e9 + int64(tv.Usec)*1000\n}\n"
  },
  {
    "path": "gossh/sys/windows/syscall_windows.go",
    "content": "// Copyright 2009 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Windows system calls.\n\npackage windows\n\nimport (\n\terrorspkg \"errors\"\n\t\"fmt\"\n\t\"runtime\"\n\t\"sync\"\n\t\"syscall\"\n\t\"time\"\n\t\"unicode/utf16\"\n\t\"unsafe\"\n)\n\ntype Handle uintptr\ntype HWND uintptr\n\nconst (\n\tInvalidHandle = ^Handle(0)\n\tInvalidHWND   = ^HWND(0)\n\n\t// Flags for DefineDosDevice.\n\tDDD_EXACT_MATCH_ON_REMOVE = 0x00000004\n\tDDD_NO_BROADCAST_SYSTEM   = 0x00000008\n\tDDD_RAW_TARGET_PATH       = 0x00000001\n\tDDD_REMOVE_DEFINITION     = 0x00000002\n\n\t// Return values for GetDriveType.\n\tDRIVE_UNKNOWN     = 0\n\tDRIVE_NO_ROOT_DIR = 1\n\tDRIVE_REMOVABLE   = 2\n\tDRIVE_FIXED       = 3\n\tDRIVE_REMOTE      = 4\n\tDRIVE_CDROM       = 5\n\tDRIVE_RAMDISK     = 6\n\n\t// File system flags from GetVolumeInformation and GetVolumeInformationByHandle.\n\tFILE_CASE_SENSITIVE_SEARCH        = 0x00000001\n\tFILE_CASE_PRESERVED_NAMES         = 0x00000002\n\tFILE_FILE_COMPRESSION             = 0x00000010\n\tFILE_DAX_VOLUME                   = 0x20000000\n\tFILE_NAMED_STREAMS                = 0x00040000\n\tFILE_PERSISTENT_ACLS              = 0x00000008\n\tFILE_READ_ONLY_VOLUME             = 0x00080000\n\tFILE_SEQUENTIAL_WRITE_ONCE        = 0x00100000\n\tFILE_SUPPORTS_ENCRYPTION          = 0x00020000\n\tFILE_SUPPORTS_EXTENDED_ATTRIBUTES = 0x00800000\n\tFILE_SUPPORTS_HARD_LINKS          = 0x00400000\n\tFILE_SUPPORTS_OBJECT_IDS          = 0x00010000\n\tFILE_SUPPORTS_OPEN_BY_FILE_ID     = 0x01000000\n\tFILE_SUPPORTS_REPARSE_POINTS      = 0x00000080\n\tFILE_SUPPORTS_SPARSE_FILES        = 0x00000040\n\tFILE_SUPPORTS_TRANSACTIONS        = 0x00200000\n\tFILE_SUPPORTS_USN_JOURNAL         = 0x02000000\n\tFILE_UNICODE_ON_DISK              = 0x00000004\n\tFILE_VOLUME_IS_COMPRESSED         = 0x00008000\n\tFILE_VOLUME_QUOTAS                = 0x00000020\n\n\t// Flags for LockFileEx.\n\tLOCKFILE_FAIL_IMMEDIATELY = 0x00000001\n\tLOCKFILE_EXCLUSIVE_LOCK   = 0x00000002\n\n\t// Return value of SleepEx and other APC functions\n\tWAIT_IO_COMPLETION = 0x000000C0\n)\n\n// StringToUTF16 is deprecated. Use UTF16FromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16(s string) []uint16 {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\tpanic(\"windows: string with NUL passed to StringToUTF16\")\n\t}\n\treturn a\n}\n\n// UTF16FromString returns the UTF-16 encoding of the UTF-8 string\n// s, with a terminating NUL added. If s contains a NUL byte at any\n// location, it returns (nil, syscall.EINVAL).\nfunc UTF16FromString(s string) ([]uint16, error) {\n\treturn syscall.UTF16FromString(s)\n}\n\n// UTF16ToString returns the UTF-8 encoding of the UTF-16 sequence s,\n// with a terminating NUL and any bytes after the NUL removed.\nfunc UTF16ToString(s []uint16) string {\n\treturn syscall.UTF16ToString(s)\n}\n\n// StringToUTF16Ptr is deprecated. Use UTF16PtrFromString instead.\n// If s contains a NUL byte this function panics instead of\n// returning an error.\nfunc StringToUTF16Ptr(s string) *uint16 { return &StringToUTF16(s)[0] }\n\n// UTF16PtrFromString returns pointer to the UTF-16 encoding of\n// the UTF-8 string s, with a terminating NUL added. If s\n// contains a NUL byte at any location, it returns (nil, syscall.EINVAL).\nfunc UTF16PtrFromString(s string) (*uint16, error) {\n\ta, err := UTF16FromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\treturn &a[0], nil\n}\n\n// UTF16PtrToString takes a pointer to a UTF-16 sequence and returns the corresponding UTF-8 encoded string.\n// If the pointer is nil, it returns the empty string. It assumes that the UTF-16 sequence is terminated\n// at a zero word; if the zero word is not present, the program may crash.\nfunc UTF16PtrToString(p *uint16) string {\n\tif p == nil {\n\t\treturn \"\"\n\t}\n\tif *p == 0 {\n\t\treturn \"\"\n\t}\n\n\t// Find NUL terminator.\n\tn := 0\n\tfor ptr := unsafe.Pointer(p); *(*uint16)(ptr) != 0; n++ {\n\t\tptr = unsafe.Pointer(uintptr(ptr) + unsafe.Sizeof(*p))\n\t}\n\treturn UTF16ToString(unsafe.Slice(p, n))\n}\n\nfunc Getpagesize() int { return 4096 }\n\n// NewCallback converts a Go function to a function pointer conforming to the stdcall calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallback(fn any) uintptr {\n\treturn syscall.NewCallback(fn)\n}\n\n// NewCallbackCDecl converts a Go function to a function pointer conforming to the cdecl calling convention.\n// This is useful when interoperating with Windows code requiring callbacks.\n// The argument is expected to be a function with one uintptr-sized result. The function must not have arguments with size larger than the size of uintptr.\nfunc NewCallbackCDecl(fn any) uintptr {\n\treturn syscall.NewCallbackCDecl(fn)\n}\n\n// windows api calls\n\n//sys\tGetLastError() (lasterr error)\n//sys\tLoadLibrary(libname string) (handle Handle, err error) = LoadLibraryW\n//sys\tLoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) = LoadLibraryExW\n//sys\tFreeLibrary(handle Handle) (err error)\n//sys\tGetProcAddress(module Handle, procname string) (proc uintptr, err error)\n//sys\tGetModuleFileName(module Handle, filename *uint16, size uint32) (n uint32, err error) = kernel32.GetModuleFileNameW\n//sys\tGetModuleHandleEx(flags uint32, moduleName *uint16, module *Handle) (err error) = kernel32.GetModuleHandleExW\n//sys\tSetDefaultDllDirectories(directoryFlags uint32) (err error)\n//sys\tAddDllDirectory(path *uint16) (cookie uintptr, err error) = kernel32.AddDllDirectory\n//sys\tRemoveDllDirectory(cookie uintptr) (err error) = kernel32.RemoveDllDirectory\n//sys\tSetDllDirectory(path string) (err error) = kernel32.SetDllDirectoryW\n//sys\tGetVersion() (ver uint32, err error)\n//sys\tFormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) = FormatMessageW\n//sys\tExitProcess(exitcode uint32)\n//sys\tIsWow64Process(handle Handle, isWow64 *bool) (err error) = IsWow64Process\n//sys\tIsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) = IsWow64Process2?\n//sys\tCreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) [failretval==InvalidHandle] = CreateFileW\n//sys\tCreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error)  [failretval==InvalidHandle] = CreateNamedPipeW\n//sys\tConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error)\n//sys\tGetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error)\n//sys\tGetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) = GetNamedPipeHandleStateW\n//sys\tSetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) = SetNamedPipeHandleState\n//sys\treadFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = ReadFile\n//sys\twriteFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) = WriteFile\n//sys\tGetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error)\n//sys\tSetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) [failretval==0xffffffff]\n//sys\tCloseHandle(handle Handle) (err error)\n//sys\tGetStdHandle(stdhandle uint32) (handle Handle, err error) [failretval==InvalidHandle]\n//sys\tSetStdHandle(stdhandle uint32, handle Handle) (err error)\n//sys\tfindFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstFileW\n//sys\tfindNextFile1(handle Handle, data *win32finddata1) (err error) = FindNextFileW\n//sys\tFindClose(handle Handle) (err error)\n//sys\tGetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error)\n//sys\tGetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error)\n//sys\tSetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error)\n//sys\tGetCurrentDirectory(buflen uint32, buf *uint16) (n uint32, err error) = GetCurrentDirectoryW\n//sys\tSetCurrentDirectory(path *uint16) (err error) = SetCurrentDirectoryW\n//sys\tCreateDirectory(path *uint16, sa *SecurityAttributes) (err error) = CreateDirectoryW\n//sys\tRemoveDirectory(path *uint16) (err error) = RemoveDirectoryW\n//sys\tDeleteFile(path *uint16) (err error) = DeleteFileW\n//sys\tMoveFile(from *uint16, to *uint16) (err error) = MoveFileW\n//sys\tMoveFileEx(from *uint16, to *uint16, flags uint32) (err error) = MoveFileExW\n//sys\tLockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tUnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error)\n//sys\tGetComputerName(buf *uint16, n *uint32) (err error) = GetComputerNameW\n//sys\tGetComputerNameEx(nametype uint32, buf *uint16, n *uint32) (err error) = GetComputerNameExW\n//sys\tSetEndOfFile(handle Handle) (err error)\n//sys\tSetFileValidData(handle Handle, validDataLength int64) (err error)\n//sys\tGetSystemTimeAsFileTime(time *Filetime)\n//sys\tGetSystemTimePreciseAsFileTime(time *Filetime)\n//sys\tGetTimeZoneInformation(tzi *Timezoneinformation) (rc uint32, err error) [failretval==0xffffffff]\n//sys\tCreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error)\n//sys\tGetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, overlapped **Overlapped, timeout uint32) (err error)\n//sys\tPostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error)\n//sys\tCancelIo(s Handle) (err error)\n//sys\tCancelIoEx(s Handle, o *Overlapped) (err error)\n//sys\tCreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = CreateProcessW\n//sys\tCreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) = advapi32.CreateProcessAsUserW\n//sys   initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) = InitializeProcThreadAttributeList\n//sys   deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) = DeleteProcThreadAttributeList\n//sys   updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) = UpdateProcThreadAttribute\n//sys\tOpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error)\n//sys\tShellExecute(hwnd Handle, verb *uint16, file *uint16, args *uint16, cwd *uint16, showCmd int32) (err error) [failretval<=32] = shell32.ShellExecuteW\n//sys\tGetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) = user32.GetWindowThreadProcessId\n//sys\tGetShellWindow() (shellWindow HWND) = user32.GetShellWindow\n//sys\tMessageBox(hwnd HWND, text *uint16, caption *uint16, boxtype uint32) (ret int32, err error) [failretval==0] = user32.MessageBoxW\n//sys\tExitWindowsEx(flags uint32, reason uint32) (err error) = user32.ExitWindowsEx\n//sys\tshGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) = shell32.SHGetKnownFolderPath\n//sys\tTerminateProcess(handle Handle, exitcode uint32) (err error)\n//sys\tGetExitCodeProcess(handle Handle, exitcode *uint32) (err error)\n//sys\tgetStartupInfo(startupInfo *StartupInfo) = GetStartupInfoW\n//sys\tGetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error)\n//sys\tDuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error)\n//sys\tWaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff]\n//sys\twaitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) [failretval==0xffffffff] = WaitForMultipleObjects\n//sys\tGetTempPath(buflen uint32, buf *uint16) (n uint32, err error) = GetTempPathW\n//sys\tCreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error)\n//sys\tGetFileType(filehandle Handle) (n uint32, err error)\n//sys\tCryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) = advapi32.CryptAcquireContextW\n//sys\tCryptReleaseContext(provhandle Handle, flags uint32) (err error) = advapi32.CryptReleaseContext\n//sys\tCryptGenRandom(provhandle Handle, buflen uint32, buf *byte) (err error) = advapi32.CryptGenRandom\n//sys\tGetEnvironmentStrings() (envs *uint16, err error) [failretval==nil] = kernel32.GetEnvironmentStringsW\n//sys\tFreeEnvironmentStrings(envs *uint16) (err error) = kernel32.FreeEnvironmentStringsW\n//sys\tGetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) = kernel32.GetEnvironmentVariableW\n//sys\tSetEnvironmentVariable(name *uint16, value *uint16) (err error) = kernel32.SetEnvironmentVariableW\n//sys\tExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) = kernel32.ExpandEnvironmentStringsW\n//sys\tCreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) = userenv.CreateEnvironmentBlock\n//sys\tDestroyEnvironmentBlock(block *uint16) (err error) = userenv.DestroyEnvironmentBlock\n//sys\tgetTickCount64() (ms uint64) = kernel32.GetTickCount64\n//sys   GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tSetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error)\n//sys\tGetFileAttributes(name *uint16) (attrs uint32, err error) [failretval==INVALID_FILE_ATTRIBUTES] = kernel32.GetFileAttributesW\n//sys\tSetFileAttributes(name *uint16, attrs uint32) (err error) = kernel32.SetFileAttributesW\n//sys\tGetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) = kernel32.GetFileAttributesExW\n//sys\tGetCommandLine() (cmd *uint16) = kernel32.GetCommandLineW\n//sys\tcommandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) [failretval==nil] = shell32.CommandLineToArgvW\n//sys\tLocalFree(hmem Handle) (handle Handle, err error) [failretval!=0]\n//sys\tLocalAlloc(flags uint32, length uint32) (ptr uintptr, err error)\n//sys\tSetHandleInformation(handle Handle, mask uint32, flags uint32) (err error)\n//sys\tFlushFileBuffers(handle Handle) (err error)\n//sys\tGetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) = kernel32.GetFullPathNameW\n//sys\tGetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) = kernel32.GetLongPathNameW\n//sys\tGetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) = kernel32.GetShortPathNameW\n//sys\tGetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) = kernel32.GetFinalPathNameByHandleW\n//sys\tCreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateFileMappingW\n//sys\tMapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error)\n//sys\tUnmapViewOfFile(addr uintptr) (err error)\n//sys\tFlushViewOfFile(addr uintptr, length uintptr) (err error)\n//sys\tVirtualLock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualUnlock(addr uintptr, length uintptr) (err error)\n//sys\tVirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) = kernel32.VirtualAlloc\n//sys\tVirtualFree(address uintptr, size uintptr, freetype uint32) (err error) = kernel32.VirtualFree\n//sys\tVirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) = kernel32.VirtualProtect\n//sys\tVirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) = kernel32.VirtualProtectEx\n//sys\tVirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQuery\n//sys\tVirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) = kernel32.VirtualQueryEx\n//sys\tReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) = kernel32.ReadProcessMemory\n//sys\tWriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) = kernel32.WriteProcessMemory\n//sys\tTransmitFile(s Handle, handle Handle, bytesToWrite uint32, bytsPerSend uint32, overlapped *Overlapped, transmitFileBuf *TransmitFileBuffers, flags uint32) (err error) = mswsock.TransmitFile\n//sys\tReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) = kernel32.ReadDirectoryChangesW\n//sys\tFindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.FindFirstChangeNotificationW\n//sys\tFindNextChangeNotification(handle Handle) (err error)\n//sys\tFindCloseChangeNotification(handle Handle) (err error)\n//sys\tCertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) = crypt32.CertOpenSystemStoreW\n//sys\tCertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) = crypt32.CertOpenStore\n//sys\tCertEnumCertificatesInStore(store Handle, prevContext *CertContext) (context *CertContext, err error) [failretval==nil] = crypt32.CertEnumCertificatesInStore\n//sys\tCertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) = crypt32.CertAddCertificateContextToStore\n//sys\tCertCloseStore(store Handle, flags uint32) (err error) = crypt32.CertCloseStore\n//sys\tCertDeleteCertificateFromStore(certContext *CertContext) (err error) = crypt32.CertDeleteCertificateFromStore\n//sys\tCertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) = crypt32.CertDuplicateCertificateContext\n//sys\tPFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) = crypt32.PFXImportCertStore\n//sys\tCertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) = crypt32.CertGetCertificateChain\n//sys\tCertFreeCertificateChain(ctx *CertChainContext) = crypt32.CertFreeCertificateChain\n//sys\tCertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) [failretval==nil] = crypt32.CertCreateCertificateContext\n//sys\tCertFreeCertificateContext(ctx *CertContext) (err error) = crypt32.CertFreeCertificateContext\n//sys\tCertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) = crypt32.CertVerifyCertificateChainPolicy\n//sys\tCertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) = crypt32.CertGetNameStringW\n//sys\tCertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) = crypt32.CertFindExtension\n//sys   CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) [failretval==nil] = crypt32.CertFindCertificateInStore\n//sys   CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) [failretval==nil] = crypt32.CertFindChainInStore\n//sys   CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) = crypt32.CryptAcquireCertificatePrivateKey\n//sys\tCryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) = crypt32.CryptQueryObject\n//sys\tCryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) = crypt32.CryptDecodeObject\n//sys\tCryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptProtectData\n//sys\tCryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) = crypt32.CryptUnprotectData\n//sys\tWinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) = wintrust.WinVerifyTrustEx\n//sys\tRegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) = advapi32.RegOpenKeyExW\n//sys\tRegCloseKey(key Handle) (regerrno error) = advapi32.RegCloseKey\n//sys\tRegQueryInfoKey(key Handle, class *uint16, classLen *uint32, reserved *uint32, subkeysLen *uint32, maxSubkeyLen *uint32, maxClassLen *uint32, valuesLen *uint32, maxValueNameLen *uint32, maxValueLen *uint32, saLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegQueryInfoKeyW\n//sys\tRegEnumKeyEx(key Handle, index uint32, name *uint16, nameLen *uint32, reserved *uint32, class *uint16, classLen *uint32, lastWriteTime *Filetime) (regerrno error) = advapi32.RegEnumKeyExW\n//sys\tRegQueryValueEx(key Handle, name *uint16, reserved *uint32, valtype *uint32, buf *byte, buflen *uint32) (regerrno error) = advapi32.RegQueryValueExW\n//sys\tRegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) = advapi32.RegNotifyChangeKeyValue\n//sys\tGetCurrentProcessId() (pid uint32) = kernel32.GetCurrentProcessId\n//sys\tProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) = kernel32.ProcessIdToSessionId\n//sys\tClosePseudoConsole(console Handle) = kernel32.ClosePseudoConsole\n//sys\tcreatePseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) = kernel32.CreatePseudoConsole\n//sys\tGetConsoleMode(console Handle, mode *uint32) (err error) = kernel32.GetConsoleMode\n//sys\tSetConsoleMode(console Handle, mode uint32) (err error) = kernel32.SetConsoleMode\n//sys\tGetConsoleScreenBufferInfo(console Handle, info *ConsoleScreenBufferInfo) (err error) = kernel32.GetConsoleScreenBufferInfo\n//sys\tsetConsoleCursorPosition(console Handle, position uint32) (err error) = kernel32.SetConsoleCursorPosition\n//sys\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\tresizePseudoConsole(pconsole Handle, size uint32) (hr error) = kernel32.ResizePseudoConsole\n//sys\tCreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) [failretval==InvalidHandle] = kernel32.CreateToolhelp32Snapshot\n//sys\tModule32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32FirstW\n//sys\tModule32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) = kernel32.Module32NextW\n//sys\tProcess32First(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32FirstW\n//sys\tProcess32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) = kernel32.Process32NextW\n//sys\tThread32First(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tThread32Next(snapshot Handle, threadEntry *ThreadEntry32) (err error)\n//sys\tDeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error)\n// This function returns 1 byte BOOLEAN rather than the 4 byte BOOL.\n//sys\tCreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) [failretval&0xff==0] = CreateSymbolicLinkW\n//sys\tCreateHardLink(filename *uint16, existingfilename *uint16, reserved uintptr) (err error) [failretval&0xff==0] = CreateHardLinkW\n//sys\tGetCurrentThreadId() (id uint32)\n//sys\tCreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventW\n//sys\tCreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateEventExW\n//sys\tOpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenEventW\n//sys\tSetEvent(event Handle) (err error) = kernel32.SetEvent\n//sys\tResetEvent(event Handle) (err error) = kernel32.ResetEvent\n//sys\tPulseEvent(event Handle) (err error) = kernel32.PulseEvent\n//sys\tCreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexW\n//sys\tCreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) [failretval == 0 || e1 == ERROR_ALREADY_EXISTS] = kernel32.CreateMutexExW\n//sys\tOpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) = kernel32.OpenMutexW\n//sys\tReleaseMutex(mutex Handle) (err error) = kernel32.ReleaseMutex\n//sys\tSleepEx(milliseconds uint32, alertable bool) (ret uint32) = kernel32.SleepEx\n//sys\tCreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) = kernel32.CreateJobObjectW\n//sys\tAssignProcessToJobObject(job Handle, process Handle) (err error) = kernel32.AssignProcessToJobObject\n//sys\tTerminateJobObject(job Handle, exitCode uint32) (err error) = kernel32.TerminateJobObject\n//sys\tSetErrorMode(mode uint32) (ret uint32) = kernel32.SetErrorMode\n//sys\tResumeThread(thread Handle) (ret uint32, err error) [failretval==0xffffffff] = kernel32.ResumeThread\n//sys\tSetPriorityClass(process Handle, priorityClass uint32) (err error) = kernel32.SetPriorityClass\n//sys\tGetPriorityClass(process Handle) (ret uint32, err error) = kernel32.GetPriorityClass\n//sys\tQueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) = kernel32.QueryInformationJobObject\n//sys\tSetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error)\n//sys\tGenerateConsoleCtrlEvent(ctrlEvent uint32, processGroupID uint32) (err error)\n//sys\tGetProcessId(process Handle) (id uint32, err error)\n//sys\tQueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) = kernel32.QueryFullProcessImageNameW\n//sys\tOpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error)\n//sys\tSetProcessPriorityBoost(process Handle, disable bool) (err error) = kernel32.SetProcessPriorityBoost\n//sys\tGetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32)\n//sys\tSetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error)\n//sys\tGetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tSetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error)\n//sys\tGetActiveProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tGetMaximumProcessorCount(groupNumber uint16) (ret uint32)\n//sys\tEnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) = user32.EnumWindows\n//sys\tEnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) = user32.EnumChildWindows\n//sys\tGetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) = user32.GetClassNameW\n//sys\tGetDesktopWindow() (hwnd HWND) = user32.GetDesktopWindow\n//sys\tGetForegroundWindow() (hwnd HWND) = user32.GetForegroundWindow\n//sys\tIsWindow(hwnd HWND) (isWindow bool) = user32.IsWindow\n//sys\tIsWindowUnicode(hwnd HWND) (isUnicode bool) = user32.IsWindowUnicode\n//sys\tIsWindowVisible(hwnd HWND) (isVisible bool) = user32.IsWindowVisible\n//sys\tGetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) = user32.GetGUIThreadInfo\n//sys\tGetLargePageMinimum() (size uintptr)\n\n// Volume Management Functions\n//sys\tDefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) = DefineDosDeviceW\n//sys\tDeleteVolumeMountPoint(volumeMountPoint *uint16) (err error) = DeleteVolumeMountPointW\n//sys\tFindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeW\n//sys\tFindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) [failretval==InvalidHandle] = FindFirstVolumeMountPointW\n//sys\tFindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) = FindNextVolumeW\n//sys\tFindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) = FindNextVolumeMountPointW\n//sys\tFindVolumeClose(findVolume Handle) (err error)\n//sys\tFindVolumeMountPointClose(findVolumeMountPoint Handle) (err error)\n//sys\tGetDiskFreeSpaceEx(directoryName *uint16, freeBytesAvailableToCaller *uint64, totalNumberOfBytes *uint64, totalNumberOfFreeBytes *uint64) (err error) = GetDiskFreeSpaceExW\n//sys\tGetDriveType(rootPathName *uint16) (driveType uint32) = GetDriveTypeW\n//sys\tGetLogicalDrives() (drivesBitMask uint32, err error) [failretval==0]\n//sys\tGetLogicalDriveStrings(bufferLength uint32, buffer *uint16) (n uint32, err error) [failretval==0] = GetLogicalDriveStringsW\n//sys\tGetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationW\n//sys\tGetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) = GetVolumeInformationByHandleW\n//sys\tGetVolumeNameForVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16, bufferlength uint32) (err error) = GetVolumeNameForVolumeMountPointW\n//sys\tGetVolumePathName(fileName *uint16, volumePathName *uint16, bufferLength uint32) (err error) = GetVolumePathNameW\n//sys\tGetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) = GetVolumePathNamesForVolumeNameW\n//sys\tQueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) [failretval==0] = QueryDosDeviceW\n//sys\tSetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) = SetVolumeLabelW\n//sys\tSetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) = SetVolumeMountPointW\n//sys\tInitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) = advapi32.InitiateSystemShutdownExW\n//sys\tSetProcessShutdownParameters(level uint32, flags uint32) (err error) = kernel32.SetProcessShutdownParameters\n//sys\tGetProcessShutdownParameters(level *uint32, flags *uint32) (err error) = kernel32.GetProcessShutdownParameters\n//sys\tclsidFromString(lpsz *uint16, pclsid *GUID) (ret error) = ole32.CLSIDFromString\n//sys\tstringFromGUID2(rguid *GUID, lpsz *uint16, cchMax int32) (chars int32) = ole32.StringFromGUID2\n//sys\tcoCreateGuid(pguid *GUID) (ret error) = ole32.CoCreateGuid\n//sys\tCoTaskMemFree(address unsafe.Pointer) = ole32.CoTaskMemFree\n//sys\tCoInitializeEx(reserved uintptr, coInit uint32) (ret error) = ole32.CoInitializeEx\n//sys\tCoUninitialize() = ole32.CoUninitialize\n//sys\tCoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) = ole32.CoGetObject\n//sys\tgetProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetProcessPreferredUILanguages\n//sys\tgetThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetThreadPreferredUILanguages\n//sys\tgetUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetUserPreferredUILanguages\n//sys\tgetSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) = kernel32.GetSystemPreferredUILanguages\n//sys\tfindResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) = kernel32.FindResourceW\n//sys\tSizeofResource(module Handle, resInfo Handle) (size uint32, err error) = kernel32.SizeofResource\n//sys\tLoadResource(module Handle, resInfo Handle) (resData Handle, err error) = kernel32.LoadResource\n//sys\tLockResource(resData Handle) (addr uintptr, err error) = kernel32.LockResource\n\n// Version APIs\n//sys\tGetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) = version.GetFileVersionInfoSizeW\n//sys\tGetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) = version.GetFileVersionInfoW\n//sys\tVerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) = version.VerQueryValueW\n\n// Process Status API (PSAPI)\n//sys\tenumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) = psapi.EnumProcesses\n//sys\tEnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) = psapi.EnumProcessModules\n//sys\tEnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) = psapi.EnumProcessModulesEx\n//sys\tGetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) = psapi.GetModuleInformation\n//sys\tGetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) = psapi.GetModuleFileNameExW\n//sys\tGetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) = psapi.GetModuleBaseNameW\n//sys   QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) = psapi.QueryWorkingSetEx\n\n// NT Native APIs\n//sys\trtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) = ntdll.RtlNtStatusToDosErrorNoTeb\n//sys\trtlGetVersion(info *OsVersionInfoEx) (ntstatus error) = ntdll.RtlGetVersion\n//sys\trtlGetNtVersionNumbers(majorVersion *uint32, minorVersion *uint32, buildNumber *uint32) = ntdll.RtlGetNtVersionNumbers\n//sys\tRtlGetCurrentPeb() (peb *PEB) = ntdll.RtlGetCurrentPeb\n//sys\tRtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) = ntdll.RtlInitUnicodeString\n//sys\tRtlInitString(destinationString *NTString, sourceString *byte) = ntdll.RtlInitString\n//sys\tNtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) = ntdll.NtCreateFile\n//sys\tNtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) = ntdll.NtCreateNamedPipeFile\n//sys\tNtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) = ntdll.NtSetInformationFile\n//sys\tRtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToNtPathName_U_WithStatus\n//sys\tRtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) = ntdll.RtlDosPathNameToRelativeNtPathName_U_WithStatus\n//sys\tRtlDefaultNpAcl(acl **ACL) (ntstatus error) = ntdll.RtlDefaultNpAcl\n//sys\tNtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQueryInformationProcess\n//sys\tNtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) = ntdll.NtSetInformationProcess\n//sys\tNtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) = ntdll.NtQuerySystemInformation\n//sys\tNtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) = ntdll.NtSetSystemInformation\n//sys\tRtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) = ntdll.RtlAddFunctionTable\n//sys\tRtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) = ntdll.RtlDeleteFunctionTable\n\n// Desktop Window Manager API (Dwmapi)\n//sys\tDwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmGetWindowAttribute\n//sys\tDwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) = dwmapi.DwmSetWindowAttribute\n\n// Windows Multimedia API\n//sys TimeBeginPeriod (period uint32) (err error) [failretval != 0] = winmm.timeBeginPeriod\n//sys TimeEndPeriod (period uint32) (err error) [failretval != 0] = winmm.timeEndPeriod\n\n// syscall interface implementation for other packages\n\n// GetCurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentProcess for the same Handle without the nil\n// error.\nfunc GetCurrentProcess() (Handle, error) {\n\treturn CurrentProcess(), nil\n}\n\n// CurrentProcess returns the handle for the current process.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentProcess() Handle { return Handle(^uintptr(1 - 1)) }\n\n// GetCurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\n// The returned error is always nil.\n//\n// Deprecated: use CurrentThread for the same Handle without the nil\n// error.\nfunc GetCurrentThread() (Handle, error) {\n\treturn CurrentThread(), nil\n}\n\n// CurrentThread returns the handle for the current thread.\n// It is a pseudo handle that does not need to be closed.\nfunc CurrentThread() Handle { return Handle(^uintptr(2 - 1)) }\n\n// GetProcAddressByOrdinal retrieves the address of the exported\n// function from module by ordinal.\nfunc GetProcAddressByOrdinal(module Handle, ordinal uintptr) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), ordinal, 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Exit(code int) { ExitProcess(uint32(code)) }\n\nfunc makeInheritSa() *SecurityAttributes {\n\tvar sa SecurityAttributes\n\tsa.Length = uint32(unsafe.Sizeof(sa))\n\tsa.InheritHandle = 1\n\treturn &sa\n}\n\nfunc Open(path string, mode int, perm uint32) (fd Handle, err error) {\n\tif len(path) == 0 {\n\t\treturn InvalidHandle, ERROR_FILE_NOT_FOUND\n\t}\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn InvalidHandle, err\n\t}\n\tvar access uint32\n\tswitch mode & (O_RDONLY | O_WRONLY | O_RDWR) {\n\tcase O_RDONLY:\n\t\taccess = GENERIC_READ\n\tcase O_WRONLY:\n\t\taccess = GENERIC_WRITE\n\tcase O_RDWR:\n\t\taccess = GENERIC_READ | GENERIC_WRITE\n\t}\n\tif mode&O_CREAT != 0 {\n\t\taccess |= GENERIC_WRITE\n\t}\n\tif mode&O_APPEND != 0 {\n\t\taccess &^= GENERIC_WRITE\n\t\taccess |= FILE_APPEND_DATA\n\t}\n\tsharemode := uint32(FILE_SHARE_READ | FILE_SHARE_WRITE)\n\tvar sa *SecurityAttributes\n\tif mode&O_CLOEXEC == 0 {\n\t\tsa = makeInheritSa()\n\t}\n\tvar createmode uint32\n\tswitch {\n\tcase mode&(O_CREAT|O_EXCL) == (O_CREAT | O_EXCL):\n\t\tcreatemode = CREATE_NEW\n\tcase mode&(O_CREAT|O_TRUNC) == (O_CREAT | O_TRUNC):\n\t\tcreatemode = CREATE_ALWAYS\n\tcase mode&O_CREAT == O_CREAT:\n\t\tcreatemode = OPEN_ALWAYS\n\tcase mode&O_TRUNC == O_TRUNC:\n\t\tcreatemode = TRUNCATE_EXISTING\n\tdefault:\n\t\tcreatemode = OPEN_EXISTING\n\t}\n\tvar attrs uint32 = FILE_ATTRIBUTE_NORMAL\n\tif perm&S_IWRITE == 0 {\n\t\tattrs = FILE_ATTRIBUTE_READONLY\n\t}\n\th, e := CreateFile(pathp, access, sharemode, sa, createmode, attrs, 0)\n\treturn h, e\n}\n\nfunc Read(fd Handle, p []byte) (n int, err error) {\n\tvar done uint32\n\te := ReadFile(fd, p, &done, nil)\n\tif e != nil {\n\t\tif e == ERROR_BROKEN_PIPE {\n\t\t\t// NOTE(brainman): work around ERROR_BROKEN_PIPE is returned on reading EOF from stdin\n\t\t\treturn 0, nil\n\t\t}\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc Write(fd Handle, p []byte) (n int, err error) {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\tvar done uint32\n\te := WriteFile(fd, p, &done, nil)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int(done), nil\n}\n\nfunc ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\terr := readFile(fd, p, done, overlapped)\n\tif raceenabled {\n\t\tif *done > 0 {\n\t\t\traceWriteRange(unsafe.Pointer(&p[0]), int(*done))\n\t\t}\n\t\traceAcquire(unsafe.Pointer(&ioSync))\n\t}\n\treturn err\n}\n\nfunc WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {\n\tif raceenabled {\n\t\traceReleaseMerge(unsafe.Pointer(&ioSync))\n\t}\n\terr := writeFile(fd, p, done, overlapped)\n\tif raceenabled && *done > 0 {\n\t\traceReadRange(unsafe.Pointer(&p[0]), int(*done))\n\t}\n\treturn err\n}\n\nvar ioSync int64\n\nfunc Seek(fd Handle, offset int64, whence int) (newoffset int64, err error) {\n\tvar w uint32\n\tswitch whence {\n\tcase 0:\n\t\tw = FILE_BEGIN\n\tcase 1:\n\t\tw = FILE_CURRENT\n\tcase 2:\n\t\tw = FILE_END\n\t}\n\thi := int32(offset >> 32)\n\tlo := int32(offset)\n\t// use GetFileType to check pipe, pipe can't do seek\n\tft, _ := GetFileType(fd)\n\tif ft == FILE_TYPE_PIPE {\n\t\treturn 0, syscall.EPIPE\n\t}\n\trlo, e := SetFilePointer(fd, lo, &hi, w)\n\tif e != nil {\n\t\treturn 0, e\n\t}\n\treturn int64(hi)<<32 + int64(rlo), nil\n}\n\nfunc Close(fd Handle) (err error) {\n\treturn CloseHandle(fd)\n}\n\nvar (\n\tStdin  = getStdHandle(STD_INPUT_HANDLE)\n\tStdout = getStdHandle(STD_OUTPUT_HANDLE)\n\tStderr = getStdHandle(STD_ERROR_HANDLE)\n)\n\nfunc getStdHandle(stdhandle uint32) (fd Handle) {\n\tr, _ := GetStdHandle(stdhandle)\n\treturn r\n}\n\nconst ImplementsGetwd = true\n\nfunc Getwd() (wd string, err error) {\n\tb := make([]uint16, 300)\n\tn, e := GetCurrentDirectory(uint32(len(b)), &b[0])\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc Chdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn SetCurrentDirectory(pathp)\n}\n\nfunc Mkdir(path string, mode uint32) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn CreateDirectory(pathp, nil)\n}\n\nfunc Rmdir(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn RemoveDirectory(pathp)\n}\n\nfunc Unlink(path string) (err error) {\n\tpathp, err := UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn DeleteFile(pathp)\n}\n\nfunc Rename(oldpath, newpath string) (err error) {\n\tfrom, err := UTF16PtrFromString(oldpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\tto, err := UTF16PtrFromString(newpath)\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn MoveFileEx(from, to, MOVEFILE_REPLACE_EXISTING)\n}\n\nfunc ComputerName() (name string, err error) {\n\tvar n uint32 = MAX_COMPUTERNAME_LENGTH + 1\n\tb := make([]uint16, n)\n\te := GetComputerName(&b[0], &n)\n\tif e != nil {\n\t\treturn \"\", e\n\t}\n\treturn string(utf16.Decode(b[0:n])), nil\n}\n\nfunc DurationSinceBoot() time.Duration {\n\treturn time.Duration(getTickCount64()) * time.Millisecond\n}\n\nfunc Ftruncate(fd Handle, length int64) (err error) {\n\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 CloseHandle(h)\n\ta := NsecToFiletime(tv[0].Nanoseconds())\n\tw := NsecToFiletime(tv[1].Nanoseconds())\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc UtimesNano(path string, ts []Timespec) (err error) {\n\tif len(ts) != 2 {\n\t\treturn syscall.EINVAL\n\t}\n\tpathp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\th, e := CreateFile(pathp,\n\t\tFILE_WRITE_ATTRIBUTES, FILE_SHARE_WRITE, nil,\n\t\tOPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0)\n\tif e != nil {\n\t\treturn e\n\t}\n\tdefer CloseHandle(h)\n\ta := NsecToFiletime(TimespecToNsec(ts[0]))\n\tw := NsecToFiletime(TimespecToNsec(ts[1]))\n\treturn SetFileTime(h, nil, &a, &w)\n}\n\nfunc Fsync(fd Handle) (err error) {\n\treturn FlushFileBuffers(fd)\n}\n\nfunc Chmod(path string, mode uint32) (err error) {\n\tp, e := UTF16PtrFromString(path)\n\tif e != nil {\n\t\treturn e\n\t}\n\tattrs, e := GetFileAttributes(p)\n\tif e != nil {\n\t\treturn e\n\t}\n\tif mode&S_IWRITE != 0 {\n\t\tattrs &^= FILE_ATTRIBUTE_READONLY\n\t} else {\n\t\tattrs |= FILE_ATTRIBUTE_READONLY\n\t}\n\treturn SetFileAttributes(p, attrs)\n}\n\nfunc LoadGetSystemTimePreciseAsFileTime() error {\n\treturn procGetSystemTimePreciseAsFileTime.Find()\n}\n\nfunc LoadCancelIoEx() error {\n\treturn procCancelIoEx.Find()\n}\n\nfunc LoadSetFileCompletionNotificationModes() error {\n\treturn procSetFileCompletionNotificationModes.Find()\n}\n\nfunc WaitForMultipleObjects(handles []Handle, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\t// Every other win32 array API takes arguments as \"pointer, count\", except for this function. So we\n\t// can't declare it as a usual [] type, because mksyscall will use the opposite order. We therefore\n\t// trivially stub this ourselves.\n\n\tvar handlePtr *Handle\n\tif len(handles) > 0 {\n\t\thandlePtr = &handles[0]\n\t}\n\treturn waitForMultipleObjects(uint32(len(handles)), uintptr(unsafe.Pointer(handlePtr)), waitAll, waitMilliseconds)\n}\n\n// net api calls\n\nconst socket_error = uintptr(^uint32(0))\n\n//sys\tWSAStartup(verreq uint32, data *WSAData) (sockerr error) = ws2_32.WSAStartup\n//sys\tWSACleanup() (err error) [failretval==socket_error] = ws2_32.WSACleanup\n//sys\tWSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) [failretval==socket_error] = ws2_32.WSAIoctl\n//sys\tWSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceBeginW\n//sys\tWSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceNextW\n//sys\tWSALookupServiceEnd(handle Handle) (err error) [failretval==socket_error] = ws2_32.WSALookupServiceEnd\n//sys\tsocket(af int32, typ int32, protocol int32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.socket\n//sys\tsendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) [failretval==socket_error] = ws2_32.sendto\n//sys\trecvfrom(s Handle, buf []byte, flags int32, from *RawSockaddrAny, fromlen *int32) (n int32, err error) [failretval==-1] = ws2_32.recvfrom\n//sys\tSetsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) [failretval==socket_error] = ws2_32.setsockopt\n//sys\tGetsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockopt\n//sys\tbind(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.bind\n//sys\tconnect(s Handle, name unsafe.Pointer, namelen int32) (err error) [failretval==socket_error] = ws2_32.connect\n//sys\tgetsockname(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getsockname\n//sys\tgetpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) [failretval==socket_error] = ws2_32.getpeername\n//sys\tlisten(s Handle, backlog int32) (err error) [failretval==socket_error] = ws2_32.listen\n//sys\tshutdown(s Handle, how int32) (err error) [failretval==socket_error] = ws2_32.shutdown\n//sys\tClosesocket(s Handle) (err error) [failretval==socket_error] = ws2_32.closesocket\n//sys\tAcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) = mswsock.AcceptEx\n//sys\tGetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) = mswsock.GetAcceptExSockaddrs\n//sys\tWSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecv\n//sys\tWSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASend\n//sys\tWSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32,  from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSARecvFrom\n//sys\tWSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32,  overlapped *Overlapped, croutine *byte) (err error) [failretval==socket_error] = ws2_32.WSASendTo\n//sys\tWSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) [failretval==InvalidHandle] = ws2_32.WSASocketW\n//sys\tGetHostByName(name string) (h *Hostent, err error) [failretval==nil] = ws2_32.gethostbyname\n//sys\tGetServByName(name string, proto string) (s *Servent, err error) [failretval==nil] = ws2_32.getservbyname\n//sys\tNtohs(netshort uint16) (u uint16) = ws2_32.ntohs\n//sys\tGetProtoByName(name string) (p *Protoent, err error) [failretval==nil] = ws2_32.getprotobyname\n//sys\tDnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) = dnsapi.DnsQuery_W\n//sys\tDnsRecordListFree(rl *DNSRecord, freetype uint32) = dnsapi.DnsRecordListFree\n//sys\tDnsNameCompare(name1 *uint16, name2 *uint16) (same bool) = dnsapi.DnsNameCompare_W\n//sys\tGetAddrInfoW(nodename *uint16, servicename *uint16, hints *AddrinfoW, result **AddrinfoW) (sockerr error) = ws2_32.GetAddrInfoW\n//sys\tFreeAddrInfoW(addrinfo *AddrinfoW) = ws2_32.FreeAddrInfoW\n//sys\tGetIfEntry(pIfRow *MibIfRow) (errcode error) = iphlpapi.GetIfEntry\n//sys\tGetAdaptersInfo(ai *IpAdapterInfo, ol *uint32) (errcode error) = iphlpapi.GetAdaptersInfo\n//sys\tSetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) = kernel32.SetFileCompletionNotificationModes\n//sys\tWSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) [failretval==-1] = ws2_32.WSAEnumProtocolsW\n//sys\tWSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) = ws2_32.WSAGetOverlappedResult\n//sys\tGetAdaptersAddresses(family uint32, flags uint32, reserved uintptr, adapterAddresses *IpAdapterAddresses, sizePointer *uint32) (errcode error) = iphlpapi.GetAdaptersAddresses\n//sys\tGetACP() (acp uint32) = kernel32.GetACP\n//sys\tMultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) = kernel32.MultiByteToWideChar\n//sys\tgetBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) = iphlpapi.GetBestInterfaceEx\n\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\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype SockaddrInet6 struct {\n\tPort   int\n\tZoneId uint32\n\tAddr   [16]byte\n\traw    RawSockaddrInet6\n}\n\nfunc (sa *SockaddrInet6) sockaddr() (unsafe.Pointer, int32, error) {\n\tif sa.Port < 0 || sa.Port > 0xFFFF {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_INET6\n\tp := (*[2]byte)(unsafe.Pointer(&sa.raw.Port))\n\tp[0] = byte(sa.Port >> 8)\n\tp[1] = byte(sa.Port)\n\tsa.raw.Scope_id = sa.ZoneId\n\tsa.raw.Addr = sa.Addr\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\ntype RawSockaddrUnix struct {\n\tFamily uint16\n\tPath   [UNIX_PATH_MAX]int8\n}\n\ntype SockaddrUnix struct {\n\tName string\n\traw  RawSockaddrUnix\n}\n\nfunc (sa *SockaddrUnix) sockaddr() (unsafe.Pointer, int32, error) {\n\tname := sa.Name\n\tn := len(name)\n\tif n > len(sa.raw.Path) {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tif n == len(sa.raw.Path) && name[0] != '@' {\n\t\treturn nil, 0, syscall.EINVAL\n\t}\n\tsa.raw.Family = AF_UNIX\n\tfor i := 0; i < n; i++ {\n\t\tsa.raw.Path[i] = int8(name[i])\n\t}\n\t// length is family (uint16), name, NUL.\n\tsl := int32(2)\n\tif n > 0 {\n\t\tsl += int32(n) + 1\n\t}\n\tif sa.raw.Path[0] == '@' || (sa.raw.Path[0] == 0 && sl > 3) {\n\t\t// Check sl > 3 so we don't change unnamed socket behavior.\n\t\tsa.raw.Path[0] = 0\n\t\t// Don't count trailing NUL for abstract address.\n\t\tsl--\n\t}\n\n\treturn unsafe.Pointer(&sa.raw), sl, nil\n}\n\ntype RawSockaddrBth struct {\n\tAddressFamily  [2]byte\n\tBtAddr         [8]byte\n\tServiceClassId [16]byte\n\tPort           [4]byte\n}\n\ntype SockaddrBth struct {\n\tBtAddr         uint64\n\tServiceClassId GUID\n\tPort           uint32\n\n\traw RawSockaddrBth\n}\n\nfunc (sa *SockaddrBth) sockaddr() (unsafe.Pointer, int32, error) {\n\tfamily := AF_BTH\n\tsa.raw = RawSockaddrBth{\n\t\tAddressFamily:  *(*[2]byte)(unsafe.Pointer(&family)),\n\t\tBtAddr:         *(*[8]byte)(unsafe.Pointer(&sa.BtAddr)),\n\t\tPort:           *(*[4]byte)(unsafe.Pointer(&sa.Port)),\n\t\tServiceClassId: *(*[16]byte)(unsafe.Pointer(&sa.ServiceClassId)),\n\t}\n\treturn unsafe.Pointer(&sa.raw), int32(unsafe.Sizeof(sa.raw)), nil\n}\n\nfunc (rsa *RawSockaddrAny) Sockaddr() (Sockaddr, error) {\n\tswitch rsa.Addr.Family {\n\tcase AF_UNIX:\n\t\tpp := (*RawSockaddrUnix)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrUnix)\n\t\tif pp.Path[0] == 0 {\n\t\t\t// \"Abstract\" Unix domain socket.\n\t\t\t// Rewrite leading NUL as @ for textual display.\n\t\t\t// (This is the standard convention.)\n\t\t\t// Not friendly to overwrite in place,\n\t\t\t// but the callers below don't care.\n\t\t\tpp.Path[0] = '@'\n\t\t}\n\n\t\t// Assume path ends at NUL.\n\t\t// This is not technically the Linux semantics for\n\t\t// abstract Unix domain sockets--they are supposed\n\t\t// to be uninterpreted fixed-size binary blobs--but\n\t\t// everyone uses this convention.\n\t\tn := 0\n\t\tfor n < len(pp.Path) && pp.Path[n] != 0 {\n\t\t\tn++\n\t\t}\n\t\tsa.Name = string(unsafe.Slice((*byte)(unsafe.Pointer(&pp.Path[0])), n))\n\t\treturn sa, nil\n\n\tcase AF_INET:\n\t\tpp := (*RawSockaddrInet4)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet4)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\n\tcase AF_INET6:\n\t\tpp := (*RawSockaddrInet6)(unsafe.Pointer(rsa))\n\t\tsa := new(SockaddrInet6)\n\t\tp := (*[2]byte)(unsafe.Pointer(&pp.Port))\n\t\tsa.Port = int(p[0])<<8 + int(p[1])\n\t\tsa.ZoneId = pp.Scope_id\n\t\tsa.Addr = pp.Addr\n\t\treturn sa, nil\n\t}\n\treturn nil, syscall.EAFNOSUPPORT\n}\n\nfunc Socket(domain, typ, proto int) (fd Handle, err error) {\n\tif domain == AF_INET6 && SocketDisableIPv6 {\n\t\treturn InvalidHandle, syscall.EAFNOSUPPORT\n\t}\n\treturn socket(int32(domain), int32(typ), int32(proto))\n}\n\nfunc SetsockoptInt(fd Handle, level, opt int, value int) (err error) {\n\tv := int32(value)\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), int32(unsafe.Sizeof(v)))\n}\n\nfunc Bind(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn bind(fd, ptr, n)\n}\n\nfunc Connect(fd Handle, sa Sockaddr) (err error) {\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connect(fd, ptr, n)\n}\n\nfunc GetBestInterfaceEx(sa Sockaddr, pdwBestIfIndex *uint32) (err error) {\n\tptr, _, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn getBestInterfaceEx(ptr, pdwBestIfIndex)\n}\n\nfunc Getsockname(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getsockname(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Getpeername(fd Handle) (sa Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tif err = getpeername(fd, &rsa, &l); err != nil {\n\t\treturn\n\t}\n\treturn rsa.Sockaddr()\n}\n\nfunc Listen(s Handle, n int) (err error) {\n\treturn listen(s, int32(n))\n}\n\nfunc Shutdown(fd Handle, how int) (err error) {\n\treturn shutdown(fd, int32(how))\n}\n\nfunc WSASendto(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to Sockaddr, overlapped *Overlapped, croutine *byte) (err error) {\n\tvar rsa unsafe.Pointer\n\tvar l int32\n\tif to != nil {\n\t\trsa, l, err = to.sockaddr()\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn WSASendTo(s, bufs, bufcnt, sent, flags, (*RawSockaddrAny)(unsafe.Pointer(rsa)), l, overlapped, croutine)\n}\n\nfunc LoadGetAddrInfo() error {\n\treturn procGetAddrInfoW.Find()\n}\n\nvar connectExFunc struct {\n\tonce sync.Once\n\taddr uintptr\n\terr  error\n}\n\nfunc LoadConnectEx() error {\n\tconnectExFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, connectExFunc.err = Socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)\n\t\tif connectExFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tconnectExFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_CONNECTEX)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_CONNECTEX)),\n\t\t\t(*byte)(unsafe.Pointer(&connectExFunc.addr)),\n\t\t\tuint32(unsafe.Sizeof(connectExFunc.addr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn connectExFunc.err\n}\n\nfunc connectEx(s Handle, name unsafe.Pointer, namelen int32, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall9(connectExFunc.addr, 7, uintptr(s), uintptr(name), uintptr(namelen), uintptr(unsafe.Pointer(sendBuf)), uintptr(sendDataLen), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\tif e1 != 0 {\n\t\t\terr = error(e1)\n\t\t} else {\n\t\t\terr = syscall.EINVAL\n\t\t}\n\t}\n\treturn\n}\n\nfunc ConnectEx(fd Handle, sa Sockaddr, sendBuf *byte, sendDataLen uint32, bytesSent *uint32, overlapped *Overlapped) error {\n\terr := LoadConnectEx()\n\tif err != nil {\n\t\treturn errorspkg.New(\"failed to find ConnectEx: \" + err.Error())\n\t}\n\tptr, n, err := sa.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn connectEx(fd, ptr, n, sendBuf, sendDataLen, bytesSent, overlapped)\n}\n\nvar sendRecvMsgFunc struct {\n\tonce     sync.Once\n\tsendAddr uintptr\n\trecvAddr uintptr\n\terr      error\n}\n\nfunc loadWSASendRecvMsg() error {\n\tsendRecvMsgFunc.once.Do(func() {\n\t\tvar s Handle\n\t\ts, sendRecvMsgFunc.err = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tdefer CloseHandle(s)\n\t\tvar n uint32\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSARECVMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSARECVMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.recvAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.recvAddr)),\n\t\t\t&n, nil, 0)\n\t\tif sendRecvMsgFunc.err != nil {\n\t\t\treturn\n\t\t}\n\t\tsendRecvMsgFunc.err = WSAIoctl(s,\n\t\t\tSIO_GET_EXTENSION_FUNCTION_POINTER,\n\t\t\t(*byte)(unsafe.Pointer(&WSAID_WSASENDMSG)),\n\t\t\tuint32(unsafe.Sizeof(WSAID_WSASENDMSG)),\n\t\t\t(*byte)(unsafe.Pointer(&sendRecvMsgFunc.sendAddr)),\n\t\t\tuint32(unsafe.Sizeof(sendRecvMsgFunc.sendAddr)),\n\t\t\t&n, nil, 0)\n\t})\n\treturn sendRecvMsgFunc.err\n}\n\nfunc WSASendMsg(fd Handle, msg *WSAMsg, flags uint32, bytesSent *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.sendAddr, 6, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(flags), uintptr(unsafe.Pointer(bytesSent)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\nfunc WSARecvMsg(fd Handle, msg *WSAMsg, bytesReceived *uint32, overlapped *Overlapped, croutine *byte) error {\n\terr := loadWSASendRecvMsg()\n\tif err != nil {\n\t\treturn err\n\t}\n\tr1, _, e1 := syscall.Syscall6(sendRecvMsgFunc.recvAddr, 5, uintptr(fd), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(bytesReceived)), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(croutine)), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn err\n}\n\n// Invented structures to support what package os expects.\ntype Rusage struct {\n\tCreationTime Filetime\n\tExitTime     Filetime\n\tKernelTime   Filetime\n\tUserTime     Filetime\n}\n\ntype WaitStatus struct {\n\tExitCode uint32\n}\n\nfunc (w WaitStatus) Exited() bool { return true }\n\nfunc (w WaitStatus) ExitStatus() int { return int(w.ExitCode) }\n\nfunc (w WaitStatus) Signal() Signal { return -1 }\n\nfunc (w WaitStatus) CoreDump() bool { return false }\n\nfunc (w WaitStatus) Stopped() bool { return false }\n\nfunc (w WaitStatus) Continued() bool { return false }\n\nfunc (w WaitStatus) StopSignal() Signal { return -1 }\n\nfunc (w WaitStatus) Signaled() bool { return false }\n\nfunc (w WaitStatus) TrapCause() int { return -1 }\n\n// Timespec is an invented structure on Windows, but here for\n// consistency with the corresponding package for other operating systems.\ntype Timespec struct {\n\tSec  int64\n\tNsec int64\n}\n\nfunc TimespecToNsec(ts Timespec) int64 { return int64(ts.Sec)*1e9 + int64(ts.Nsec) }\n\nfunc NsecToTimespec(nsec int64) (ts Timespec) {\n\tts.Sec = nsec / 1e9\n\tts.Nsec = nsec % 1e9\n\treturn\n}\n\n// TODO(brainman): fix all needed for net\n\nfunc Accept(fd Handle) (nfd Handle, sa Sockaddr, err error) { return 0, nil, syscall.EWINDOWS }\n\nfunc Recvfrom(fd Handle, p []byte, flags int) (n int, from Sockaddr, err error) {\n\tvar rsa RawSockaddrAny\n\tl := int32(unsafe.Sizeof(rsa))\n\tn32, err := recvfrom(fd, p, int32(flags), &rsa, &l)\n\tn = int(n32)\n\tif err != nil {\n\t\treturn\n\t}\n\tfrom, err = rsa.Sockaddr()\n\treturn\n}\n\nfunc Sendto(fd Handle, p []byte, flags int, to Sockaddr) (err error) {\n\tptr, l, err := to.sockaddr()\n\tif err != nil {\n\t\treturn err\n\t}\n\treturn sendto(fd, p, int32(flags), ptr, l)\n}\n\nfunc SetsockoptTimeval(fd Handle, level, opt int, tv *Timeval) (err error) { return syscall.EWINDOWS }\n\n// The Linger struct is wrong but we only noticed after Go 1.\n// sysLinger is the real system call structure.\n\n// BUG(brainman): The definition of Linger is not appropriate for direct use\n// with Setsockopt and Getsockopt.\n// Use SetsockoptLinger instead.\n\ntype Linger struct {\n\tOnoff  int32\n\tLinger int32\n}\n\ntype sysLinger struct {\n\tOnoff  uint16\n\tLinger uint16\n}\n\ntype IPMreq struct {\n\tMultiaddr [4]byte /* in_addr */\n\tInterface [4]byte /* in_addr */\n}\n\ntype IPv6Mreq struct {\n\tMultiaddr [16]byte /* in6_addr */\n\tInterface uint32\n}\n\nfunc GetsockoptInt(fd Handle, level, opt int) (int, error) {\n\tv := int32(0)\n\tl := int32(unsafe.Sizeof(v))\n\terr := Getsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&v)), &l)\n\treturn int(v), err\n}\n\nfunc SetsockoptLinger(fd Handle, level, opt int, l *Linger) (err error) {\n\tsys := sysLinger{Onoff: uint16(l.Onoff), Linger: uint16(l.Linger)}\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&sys)), int32(unsafe.Sizeof(sys)))\n}\n\nfunc SetsockoptInet4Addr(fd Handle, level, opt int, value [4]byte) (err error) {\n\treturn Setsockopt(fd, int32(level), int32(opt), (*byte)(unsafe.Pointer(&value[0])), 4)\n}\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 EnumProcesses(processIds []uint32, bytesReturned *uint32) error {\n\t// EnumProcesses syscall expects the size parameter to be in bytes, but the code generated with mksyscall uses\n\t// the length of the processIds slice instead. Hence, this wrapper function is added to fix the discrepancy.\n\tvar p *uint32\n\tif len(processIds) > 0 {\n\t\tp = &processIds[0]\n\t}\n\tsize := uint32(len(processIds) * 4)\n\treturn enumProcesses(p, size, bytesReturned)\n}\n\nfunc Getpid() (pid int) { return int(GetCurrentProcessId()) }\n\nfunc FindFirstFile(name *uint16, data *Win32finddata) (handle Handle, err error) {\n\t// NOTE(rsc): The Win32finddata struct is wrong for the system call:\n\t// the two paths are each one uint16 short. Use the correct struct,\n\t// a win32finddata1, and then copy the results out.\n\t// There is no loss of expressivity here, because the final\n\t// uint16, if it is used, is supposed to be a NUL, and Go doesn't need that.\n\t// For Go 1.1, we might avoid the allocation of win32finddata1 here\n\t// by adding a final Bug [2]uint16 field to the struct and then\n\t// adjusting the fields in the result directly.\n\tvar data1 win32finddata1\n\thandle, err = findFirstFile1(name, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc FindNextFile(handle Handle, data *Win32finddata) (err error) {\n\tvar data1 win32finddata1\n\terr = findNextFile1(handle, &data1)\n\tif err == nil {\n\t\tcopyFindData(data, &data1)\n\t}\n\treturn\n}\n\nfunc getProcessEntry(pid int) (*ProcessEntry32, error) {\n\tsnapshot, err := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tdefer CloseHandle(snapshot)\n\tvar procEntry ProcessEntry32\n\tprocEntry.Size = uint32(unsafe.Sizeof(procEntry))\n\tif err = Process32First(snapshot, &procEntry); err != nil {\n\t\treturn nil, err\n\t}\n\tfor {\n\t\tif procEntry.ProcessID == uint32(pid) {\n\t\t\treturn &procEntry, nil\n\t\t}\n\t\terr = Process32Next(snapshot, &procEntry)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n}\n\nfunc Getppid() (ppid int) {\n\tpe, err := getProcessEntry(Getpid())\n\tif err != nil {\n\t\treturn -1\n\t}\n\treturn int(pe.ParentProcessID)\n}\n\n// TODO(brainman): fix all needed for os\nfunc Fchdir(fd Handle) (err error)             { return syscall.EWINDOWS }\nfunc Link(oldpath, newpath string) (err error) { return syscall.EWINDOWS }\nfunc Symlink(path, link string) (err error)    { return syscall.EWINDOWS }\n\nfunc Fchmod(fd Handle, mode uint32) (err error)        { return syscall.EWINDOWS }\nfunc Chown(path string, uid int, gid int) (err error)  { return syscall.EWINDOWS }\nfunc Lchown(path string, uid int, gid int) (err error) { return syscall.EWINDOWS }\nfunc Fchown(fd Handle, uid int, gid int) (err error)   { return syscall.EWINDOWS }\n\nfunc Getuid() (uid int)                  { return -1 }\nfunc Geteuid() (euid int)                { return -1 }\nfunc Getgid() (gid int)                  { return -1 }\nfunc Getegid() (egid int)                { return -1 }\nfunc Getgroups() (gids []int, err error) { return nil, syscall.EWINDOWS }\n\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 UTF16PtrToString(p), nil\n}\n\n// RtlGetVersion returns the version of the underlying operating system, ignoring\n// manifest semantics but is affected by the application compatibility layer.\nfunc RtlGetVersion() *OsVersionInfoEx {\n\tinfo := &OsVersionInfoEx{}\n\tinfo.osVersionInfoSize = uint32(unsafe.Sizeof(*info))\n\t// According to documentation, this function always succeeds.\n\t// The function doesn't even check the validity of the\n\t// osVersionInfoSize member. Disassembling ntdll.dll indicates\n\t// that the documentation is indeed correct about that.\n\t_ = rtlGetVersion(info)\n\treturn info\n}\n\n// RtlGetNtVersionNumbers returns the version of the underlying operating system,\n// ignoring manifest semantics and the application compatibility layer.\nfunc RtlGetNtVersionNumbers() (majorVersion, minorVersion, buildNumber uint32) {\n\trtlGetNtVersionNumbers(&majorVersion, &minorVersion, &buildNumber)\n\tbuildNumber &= 0xffff\n\treturn\n}\n\n// GetProcessPreferredUILanguages retrieves the process preferred UI languages.\nfunc GetProcessPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getProcessPreferredUILanguages)\n}\n\n// GetThreadPreferredUILanguages retrieves the thread preferred UI languages for the current thread.\nfunc GetThreadPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getThreadPreferredUILanguages)\n}\n\n// GetUserPreferredUILanguages retrieves information about the user preferred UI languages.\nfunc GetUserPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getUserPreferredUILanguages)\n}\n\n// GetSystemPreferredUILanguages retrieves the system preferred UI languages.\nfunc GetSystemPreferredUILanguages(flags uint32) ([]string, error) {\n\treturn getUILanguages(flags, getSystemPreferredUILanguages)\n}\n\nfunc getUILanguages(flags uint32, f func(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) error) ([]string, error) {\n\tsize := uint32(128)\n\tfor {\n\t\tvar numLanguages uint32\n\t\tbuf := make([]uint16, size)\n\t\terr := f(flags, &numLanguages, &buf[0], &size)\n\t\tif err == ERROR_INSUFFICIENT_BUFFER {\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tbuf = buf[:size]\n\t\tif numLanguages == 0 || len(buf) == 0 { // GetProcessPreferredUILanguages may return numLanguages==0 with \"\\0\\0\"\n\t\t\treturn []string{}, nil\n\t\t}\n\t\tif buf[len(buf)-1] == 0 {\n\t\t\tbuf = buf[:len(buf)-1] // remove terminating null\n\t\t}\n\t\tlanguages := make([]string, 0, numLanguages)\n\t\tfrom := 0\n\t\tfor i, c := range buf {\n\t\t\tif c == 0 {\n\t\t\t\tlanguages = append(languages, string(utf16.Decode(buf[from:i])))\n\t\t\t\tfrom = i + 1\n\t\t\t}\n\t\t}\n\t\treturn languages, nil\n\t}\n}\n\nfunc SetConsoleCursorPosition(console Handle, position Coord) error {\n\treturn setConsoleCursorPosition(console, *((*uint32)(unsafe.Pointer(&position))))\n}\n\nfunc GetStartupInfo(startupInfo *StartupInfo) error {\n\tgetStartupInfo(startupInfo)\n\treturn nil\n}\n\nfunc (s NTStatus) Errno() syscall.Errno {\n\treturn rtlNtStatusToDosErrorNoTeb(s)\n}\n\nfunc langID(pri, sub uint16) uint32 { return uint32(sub)<<10 | uint32(pri) }\n\nfunc (s NTStatus) Error() string {\n\tb := make([]uint16, 300)\n\tn, err := FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_FROM_HMODULE|FORMAT_MESSAGE_ARGUMENT_ARRAY, modntdll.Handle(), uint32(s), langID(LANG_ENGLISH, SUBLANG_ENGLISH_US), b, nil)\n\tif err != nil {\n\t\treturn fmt.Sprintf(\"NTSTATUS 0x%08x\", uint32(s))\n\t}\n\t// trim terminating \\r and \\n\n\tfor ; n > 0 && (b[n-1] == '\\n' || b[n-1] == '\\r'); n-- {\n\t}\n\treturn string(utf16.Decode(b[:n]))\n}\n\n// NewNTUnicodeString returns a new NTUnicodeString structure for use with native\n// NT APIs that work over the NTUnicodeString type. Note that most Windows APIs\n// do not use NTUnicodeString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTUnicodeString(s string) (*NTUnicodeString, error) {\n\tvar u NTUnicodeString\n\ts16, err := UTF16PtrFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tRtlInitUnicodeString(&u, s16)\n\treturn &u, nil\n}\n\n// Slice returns a uint16 slice that aliases the data in the NTUnicodeString.\nfunc (s *NTUnicodeString) Slice() []uint16 {\n\tslice := unsafe.Slice(s.Buffer, s.MaximumLength)\n\treturn slice[:s.Length]\n}\n\nfunc (s *NTUnicodeString) String() string {\n\treturn UTF16ToString(s.Slice())\n}\n\n// NewNTString returns a new NTString structure for use with native\n// NT APIs that work over the NTString type. Note that most Windows APIs\n// do not use NTString, and instead UTF16PtrFromString should be used for\n// the more common *uint16 string type.\nfunc NewNTString(s string) (*NTString, error) {\n\tvar nts NTString\n\ts8, err := BytePtrFromString(s)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\tRtlInitString(&nts, s8)\n\treturn &nts, nil\n}\n\n// Slice returns a byte slice that aliases the data in the NTString.\nfunc (s *NTString) Slice() []byte {\n\tslice := unsafe.Slice(s.Buffer, s.MaximumLength)\n\treturn slice[:s.Length]\n}\n\nfunc (s *NTString) String() string {\n\treturn ByteSliceToString(s.Slice())\n}\n\n// FindResource resolves a resource of the given name and resource type.\nfunc FindResource(module Handle, name, resType ResourceIDOrString) (Handle, error) {\n\tvar namePtr, resTypePtr uintptr\n\tvar name16, resType16 *uint16\n\tvar err error\n\tresolvePtr := func(i any, keep **uint16) (uintptr, error) {\n\t\tswitch v := i.(type) {\n\t\tcase string:\n\t\t\t*keep, err = UTF16PtrFromString(v)\n\t\t\tif err != nil {\n\t\t\t\treturn 0, err\n\t\t\t}\n\t\t\treturn uintptr(unsafe.Pointer(*keep)), nil\n\t\tcase ResourceID:\n\t\t\treturn uintptr(v), nil\n\t\t}\n\t\treturn 0, errorspkg.New(\"parameter must be a ResourceID or a string\")\n\t}\n\tnamePtr, err = resolvePtr(name, &name16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresTypePtr, err = resolvePtr(resType, &resType16)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\tresInfo, err := findResource(module, namePtr, resTypePtr)\n\truntime.KeepAlive(name16)\n\truntime.KeepAlive(resType16)\n\treturn resInfo, err\n}\n\nfunc LoadResourceData(module, resInfo Handle) (data []byte, err error) {\n\tsize, err := SizeofResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tresData, err := LoadResource(module, resInfo)\n\tif err != nil {\n\t\treturn\n\t}\n\tptr, err := LockResource(resData)\n\tif err != nil {\n\t\treturn\n\t}\n\tdata = unsafe.Slice((*byte)(unsafe.Pointer(ptr)), size)\n\treturn\n}\n\n// PSAPI_WORKING_SET_EX_BLOCK contains extended working set information for a page.\ntype PSAPI_WORKING_SET_EX_BLOCK uint64\n\n// Valid returns the validity of this page.\n// If this bit is 1, the subsequent members are valid; otherwise they should be ignored.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Valid() bool {\n\treturn (b & 1) == 1\n}\n\n// ShareCount is the number of processes that share this page. The maximum value of this member is 7.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) ShareCount() uint64 {\n\treturn b.intField(1, 3)\n}\n\n// Win32Protection is the memory protection attributes of the page. For a list of values, see\n// https://docs.microsoft.com/en-us/windows/win32/memory/memory-protection-constants\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Win32Protection() uint64 {\n\treturn b.intField(4, 11)\n}\n\n// Shared returns the shared status of this page.\n// If this bit is 1, the page can be shared.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Shared() bool {\n\treturn (b & (1 << 15)) == 1\n}\n\n// Node is the NUMA node. The maximum value of this member is 63.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Node() uint64 {\n\treturn b.intField(16, 6)\n}\n\n// Locked returns the locked status of this page.\n// If this bit is 1, the virtual page is locked in physical memory.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Locked() bool {\n\treturn (b & (1 << 22)) == 1\n}\n\n// LargePage returns the large page status of this page.\n// If this bit is 1, the page is a large page.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) LargePage() bool {\n\treturn (b & (1 << 23)) == 1\n}\n\n// Bad returns the bad status of this page.\n// If this bit is 1, the page is has been reported as bad.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) Bad() bool {\n\treturn (b & (1 << 31)) == 1\n}\n\n// intField extracts an integer field in the PSAPI_WORKING_SET_EX_BLOCK union.\nfunc (b PSAPI_WORKING_SET_EX_BLOCK) intField(start, length int) uint64 {\n\tvar mask PSAPI_WORKING_SET_EX_BLOCK\n\tfor pos := start; pos < start+length; pos++ {\n\t\tmask |= (1 << pos)\n\t}\n\n\tmasked := b & mask\n\treturn uint64(masked >> start)\n}\n\n// PSAPI_WORKING_SET_EX_INFORMATION contains extended working set information for a process.\ntype PSAPI_WORKING_SET_EX_INFORMATION struct {\n\t// The virtual address.\n\tVirtualAddress Pointer\n\t// A PSAPI_WORKING_SET_EX_BLOCK union that indicates the attributes of the page at VirtualAddress.\n\tVirtualAttributes PSAPI_WORKING_SET_EX_BLOCK\n}\n\n// CreatePseudoConsole creates a windows pseudo console.\nfunc CreatePseudoConsole(size Coord, in Handle, out Handle, flags uint32, pconsole *Handle) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn createPseudoConsole(*((*uint32)(unsafe.Pointer(&size))), in, out, flags, pconsole)\n}\n\n// ResizePseudoConsole resizes the internal buffers of the pseudo console to the width and height specified in `size`.\nfunc ResizePseudoConsole(pconsole Handle, size Coord) error {\n\t// We need this wrapper to manually cast Coord to uint32. The autogenerated wrappers only\n\t// accept arguments that can be casted to uintptr, and Coord can't.\n\treturn resizePseudoConsole(pconsole, *((*uint32)(unsafe.Pointer(&size))))\n}\n"
  },
  {
    "path": "gossh/sys/windows/types_windows.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\nimport (\n\t\"net\"\n\t\"syscall\"\n\t\"unsafe\"\n)\n\n// NTStatus corresponds with NTSTATUS, error values returned by ntdll.dll and\n// other native functions.\ntype NTStatus uint32\n\nconst (\n\t// Invented values to support what package os expects.\n\tO_RDONLY   = 0x00000\n\tO_WRONLY   = 0x00001\n\tO_RDWR     = 0x00002\n\tO_CREAT    = 0x00040\n\tO_EXCL     = 0x00080\n\tO_NOCTTY   = 0x00100\n\tO_TRUNC    = 0x00200\n\tO_NONBLOCK = 0x00800\n\tO_APPEND   = 0x00400\n\tO_SYNC     = 0x01000\n\tO_ASYNC    = 0x02000\n\tO_CLOEXEC  = 0x80000\n)\n\nconst (\n\t// More invented values for signals\n\tSIGHUP  = Signal(0x1)\n\tSIGINT  = Signal(0x2)\n\tSIGQUIT = Signal(0x3)\n\tSIGILL  = Signal(0x4)\n\tSIGTRAP = Signal(0x5)\n\tSIGABRT = Signal(0x6)\n\tSIGBUS  = Signal(0x7)\n\tSIGFPE  = Signal(0x8)\n\tSIGKILL = Signal(0x9)\n\tSIGSEGV = Signal(0xb)\n\tSIGPIPE = Signal(0xd)\n\tSIGALRM = Signal(0xe)\n\tSIGTERM = Signal(0xf)\n)\n\nvar signals = [...]string{\n\t1:  \"hangup\",\n\t2:  \"interrupt\",\n\t3:  \"quit\",\n\t4:  \"illegal instruction\",\n\t5:  \"trace/breakpoint trap\",\n\t6:  \"aborted\",\n\t7:  \"bus error\",\n\t8:  \"floating point exception\",\n\t9:  \"killed\",\n\t10: \"user defined signal 1\",\n\t11: \"segmentation fault\",\n\t12: \"user defined signal 2\",\n\t13: \"broken pipe\",\n\t14: \"alarm clock\",\n\t15: \"terminated\",\n}\n\nconst (\n\tFILE_READ_DATA        = 0x00000001\n\tFILE_READ_ATTRIBUTES  = 0x00000080\n\tFILE_READ_EA          = 0x00000008\n\tFILE_WRITE_DATA       = 0x00000002\n\tFILE_WRITE_ATTRIBUTES = 0x00000100\n\tFILE_WRITE_EA         = 0x00000010\n\tFILE_APPEND_DATA      = 0x00000004\n\tFILE_EXECUTE          = 0x00000020\n\n\tFILE_GENERIC_READ    = STANDARD_RIGHTS_READ | FILE_READ_DATA | FILE_READ_ATTRIBUTES | FILE_READ_EA | SYNCHRONIZE\n\tFILE_GENERIC_WRITE   = STANDARD_RIGHTS_WRITE | FILE_WRITE_DATA | FILE_WRITE_ATTRIBUTES | FILE_WRITE_EA | FILE_APPEND_DATA | SYNCHRONIZE\n\tFILE_GENERIC_EXECUTE = STANDARD_RIGHTS_EXECUTE | FILE_READ_ATTRIBUTES | FILE_EXECUTE | SYNCHRONIZE\n\n\tFILE_LIST_DIRECTORY = 0x00000001\n\tFILE_TRAVERSE       = 0x00000020\n\n\tFILE_SHARE_READ   = 0x00000001\n\tFILE_SHARE_WRITE  = 0x00000002\n\tFILE_SHARE_DELETE = 0x00000004\n\n\tFILE_ATTRIBUTE_READONLY              = 0x00000001\n\tFILE_ATTRIBUTE_HIDDEN                = 0x00000002\n\tFILE_ATTRIBUTE_SYSTEM                = 0x00000004\n\tFILE_ATTRIBUTE_DIRECTORY             = 0x00000010\n\tFILE_ATTRIBUTE_ARCHIVE               = 0x00000020\n\tFILE_ATTRIBUTE_DEVICE                = 0x00000040\n\tFILE_ATTRIBUTE_NORMAL                = 0x00000080\n\tFILE_ATTRIBUTE_TEMPORARY             = 0x00000100\n\tFILE_ATTRIBUTE_SPARSE_FILE           = 0x00000200\n\tFILE_ATTRIBUTE_REPARSE_POINT         = 0x00000400\n\tFILE_ATTRIBUTE_COMPRESSED            = 0x00000800\n\tFILE_ATTRIBUTE_OFFLINE               = 0x00001000\n\tFILE_ATTRIBUTE_NOT_CONTENT_INDEXED   = 0x00002000\n\tFILE_ATTRIBUTE_ENCRYPTED             = 0x00004000\n\tFILE_ATTRIBUTE_INTEGRITY_STREAM      = 0x00008000\n\tFILE_ATTRIBUTE_VIRTUAL               = 0x00010000\n\tFILE_ATTRIBUTE_NO_SCRUB_DATA         = 0x00020000\n\tFILE_ATTRIBUTE_RECALL_ON_OPEN        = 0x00040000\n\tFILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000\n\n\tINVALID_FILE_ATTRIBUTES = 0xffffffff\n\n\tCREATE_NEW        = 1\n\tCREATE_ALWAYS     = 2\n\tOPEN_EXISTING     = 3\n\tOPEN_ALWAYS       = 4\n\tTRUNCATE_EXISTING = 5\n\n\tFILE_FLAG_OPEN_REQUIRING_OPLOCK = 0x00040000\n\tFILE_FLAG_FIRST_PIPE_INSTANCE   = 0x00080000\n\tFILE_FLAG_OPEN_NO_RECALL        = 0x00100000\n\tFILE_FLAG_OPEN_REPARSE_POINT    = 0x00200000\n\tFILE_FLAG_SESSION_AWARE         = 0x00800000\n\tFILE_FLAG_POSIX_SEMANTICS       = 0x01000000\n\tFILE_FLAG_BACKUP_SEMANTICS      = 0x02000000\n\tFILE_FLAG_DELETE_ON_CLOSE       = 0x04000000\n\tFILE_FLAG_SEQUENTIAL_SCAN       = 0x08000000\n\tFILE_FLAG_RANDOM_ACCESS         = 0x10000000\n\tFILE_FLAG_NO_BUFFERING          = 0x20000000\n\tFILE_FLAG_OVERLAPPED            = 0x40000000\n\tFILE_FLAG_WRITE_THROUGH         = 0x80000000\n\n\tHANDLE_FLAG_INHERIT    = 0x00000001\n\tSTARTF_USESTDHANDLES   = 0x00000100\n\tSTARTF_USESHOWWINDOW   = 0x00000001\n\tDUPLICATE_CLOSE_SOURCE = 0x00000001\n\tDUPLICATE_SAME_ACCESS  = 0x00000002\n\n\tSTD_INPUT_HANDLE  = -10 & (1<<32 - 1)\n\tSTD_OUTPUT_HANDLE = -11 & (1<<32 - 1)\n\tSTD_ERROR_HANDLE  = -12 & (1<<32 - 1)\n\n\tFILE_BEGIN   = 0\n\tFILE_CURRENT = 1\n\tFILE_END     = 2\n\n\tLANG_ENGLISH       = 0x09\n\tSUBLANG_ENGLISH_US = 0x01\n\n\tFORMAT_MESSAGE_ALLOCATE_BUFFER = 256\n\tFORMAT_MESSAGE_IGNORE_INSERTS  = 512\n\tFORMAT_MESSAGE_FROM_STRING     = 1024\n\tFORMAT_MESSAGE_FROM_HMODULE    = 2048\n\tFORMAT_MESSAGE_FROM_SYSTEM     = 4096\n\tFORMAT_MESSAGE_ARGUMENT_ARRAY  = 8192\n\tFORMAT_MESSAGE_MAX_WIDTH_MASK  = 255\n\n\tMAX_PATH      = 260\n\tMAX_LONG_PATH = 32768\n\n\tMAX_MODULE_NAME32 = 255\n\n\tMAX_COMPUTERNAME_LENGTH = 15\n\n\tMAX_DHCPV6_DUID_LENGTH = 130\n\n\tMAX_DNS_SUFFIX_STRING_LENGTH = 256\n\n\tTIME_ZONE_ID_UNKNOWN  = 0\n\tTIME_ZONE_ID_STANDARD = 1\n\n\tTIME_ZONE_ID_DAYLIGHT = 2\n\tIGNORE                = 0\n\tINFINITE              = 0xffffffff\n\n\tWAIT_ABANDONED = 0x00000080\n\tWAIT_OBJECT_0  = 0x00000000\n\tWAIT_FAILED    = 0xFFFFFFFF\n\n\t// Access rights for process.\n\tPROCESS_CREATE_PROCESS            = 0x0080\n\tPROCESS_CREATE_THREAD             = 0x0002\n\tPROCESS_DUP_HANDLE                = 0x0040\n\tPROCESS_QUERY_INFORMATION         = 0x0400\n\tPROCESS_QUERY_LIMITED_INFORMATION = 0x1000\n\tPROCESS_SET_INFORMATION           = 0x0200\n\tPROCESS_SET_QUOTA                 = 0x0100\n\tPROCESS_SUSPEND_RESUME            = 0x0800\n\tPROCESS_TERMINATE                 = 0x0001\n\tPROCESS_VM_OPERATION              = 0x0008\n\tPROCESS_VM_READ                   = 0x0010\n\tPROCESS_VM_WRITE                  = 0x0020\n\n\t// Access rights for thread.\n\tTHREAD_DIRECT_IMPERSONATION      = 0x0200\n\tTHREAD_GET_CONTEXT               = 0x0008\n\tTHREAD_IMPERSONATE               = 0x0100\n\tTHREAD_QUERY_INFORMATION         = 0x0040\n\tTHREAD_QUERY_LIMITED_INFORMATION = 0x0800\n\tTHREAD_SET_CONTEXT               = 0x0010\n\tTHREAD_SET_INFORMATION           = 0x0020\n\tTHREAD_SET_LIMITED_INFORMATION   = 0x0400\n\tTHREAD_SET_THREAD_TOKEN          = 0x0080\n\tTHREAD_SUSPEND_RESUME            = 0x0002\n\tTHREAD_TERMINATE                 = 0x0001\n\n\tFILE_MAP_COPY    = 0x01\n\tFILE_MAP_WRITE   = 0x02\n\tFILE_MAP_READ    = 0x04\n\tFILE_MAP_EXECUTE = 0x20\n\n\tCTRL_C_EVENT        = 0\n\tCTRL_BREAK_EVENT    = 1\n\tCTRL_CLOSE_EVENT    = 2\n\tCTRL_LOGOFF_EVENT   = 5\n\tCTRL_SHUTDOWN_EVENT = 6\n\n\t// Windows reserves errors >= 1<<29 for application use.\n\tAPPLICATION_ERROR = 1 << 29\n)\n\nconst (\n\t// Process creation flags.\n\tCREATE_BREAKAWAY_FROM_JOB        = 0x01000000\n\tCREATE_DEFAULT_ERROR_MODE        = 0x04000000\n\tCREATE_NEW_CONSOLE               = 0x00000010\n\tCREATE_NEW_PROCESS_GROUP         = 0x00000200\n\tCREATE_NO_WINDOW                 = 0x08000000\n\tCREATE_PROTECTED_PROCESS         = 0x00040000\n\tCREATE_PRESERVE_CODE_AUTHZ_LEVEL = 0x02000000\n\tCREATE_SEPARATE_WOW_VDM          = 0x00000800\n\tCREATE_SHARED_WOW_VDM            = 0x00001000\n\tCREATE_SUSPENDED                 = 0x00000004\n\tCREATE_UNICODE_ENVIRONMENT       = 0x00000400\n\tDEBUG_ONLY_THIS_PROCESS          = 0x00000002\n\tDEBUG_PROCESS                    = 0x00000001\n\tDETACHED_PROCESS                 = 0x00000008\n\tEXTENDED_STARTUPINFO_PRESENT     = 0x00080000\n\tINHERIT_PARENT_AFFINITY          = 0x00010000\n)\n\nconst (\n\t// attributes for ProcThreadAttributeList\n\tPROC_THREAD_ATTRIBUTE_PARENT_PROCESS    = 0x00020000\n\tPROC_THREAD_ATTRIBUTE_HANDLE_LIST       = 0x00020002\n\tPROC_THREAD_ATTRIBUTE_GROUP_AFFINITY    = 0x00030003\n\tPROC_THREAD_ATTRIBUTE_PREFERRED_NODE    = 0x00020004\n\tPROC_THREAD_ATTRIBUTE_IDEAL_PROCESSOR   = 0x00030005\n\tPROC_THREAD_ATTRIBUTE_MITIGATION_POLICY = 0x00020007\n\tPROC_THREAD_ATTRIBUTE_UMS_THREAD        = 0x00030006\n\tPROC_THREAD_ATTRIBUTE_PROTECTION_LEVEL  = 0x0002000b\n\tPROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE     = 0x00020016\n)\n\nconst (\n\t// flags for CreateToolhelp32Snapshot\n\tTH32CS_SNAPHEAPLIST = 0x01\n\tTH32CS_SNAPPROCESS  = 0x02\n\tTH32CS_SNAPTHREAD   = 0x04\n\tTH32CS_SNAPMODULE   = 0x08\n\tTH32CS_SNAPMODULE32 = 0x10\n\tTH32CS_SNAPALL      = TH32CS_SNAPHEAPLIST | TH32CS_SNAPMODULE | TH32CS_SNAPPROCESS | TH32CS_SNAPTHREAD\n\tTH32CS_INHERIT      = 0x80000000\n)\n\nconst (\n\t// flags for EnumProcessModulesEx\n\tLIST_MODULES_32BIT   = 0x01\n\tLIST_MODULES_64BIT   = 0x02\n\tLIST_MODULES_ALL     = 0x03\n\tLIST_MODULES_DEFAULT = 0x00\n)\n\nconst (\n\t// filters for ReadDirectoryChangesW and FindFirstChangeNotificationW\n\tFILE_NOTIFY_CHANGE_FILE_NAME   = 0x001\n\tFILE_NOTIFY_CHANGE_DIR_NAME    = 0x002\n\tFILE_NOTIFY_CHANGE_ATTRIBUTES  = 0x004\n\tFILE_NOTIFY_CHANGE_SIZE        = 0x008\n\tFILE_NOTIFY_CHANGE_LAST_WRITE  = 0x010\n\tFILE_NOTIFY_CHANGE_LAST_ACCESS = 0x020\n\tFILE_NOTIFY_CHANGE_CREATION    = 0x040\n\tFILE_NOTIFY_CHANGE_SECURITY    = 0x100\n)\n\nconst (\n\t// do not reorder\n\tFILE_ACTION_ADDED = iota + 1\n\tFILE_ACTION_REMOVED\n\tFILE_ACTION_MODIFIED\n\tFILE_ACTION_RENAMED_OLD_NAME\n\tFILE_ACTION_RENAMED_NEW_NAME\n)\n\nconst (\n\t// wincrypt.h\n\t/* certenrolld_begin -- PROV_RSA_*/\n\tPROV_RSA_FULL      = 1\n\tPROV_RSA_SIG       = 2\n\tPROV_DSS           = 3\n\tPROV_FORTEZZA      = 4\n\tPROV_MS_EXCHANGE   = 5\n\tPROV_SSL           = 6\n\tPROV_RSA_SCHANNEL  = 12\n\tPROV_DSS_DH        = 13\n\tPROV_EC_ECDSA_SIG  = 14\n\tPROV_EC_ECNRA_SIG  = 15\n\tPROV_EC_ECDSA_FULL = 16\n\tPROV_EC_ECNRA_FULL = 17\n\tPROV_DH_SCHANNEL   = 18\n\tPROV_SPYRUS_LYNKS  = 20\n\tPROV_RNG           = 21\n\tPROV_INTEL_SEC     = 22\n\tPROV_REPLACE_OWF   = 23\n\tPROV_RSA_AES       = 24\n\n\t/* dwFlags definitions for CryptAcquireContext */\n\tCRYPT_VERIFYCONTEXT              = 0xF0000000\n\tCRYPT_NEWKEYSET                  = 0x00000008\n\tCRYPT_DELETEKEYSET               = 0x00000010\n\tCRYPT_MACHINE_KEYSET             = 0x00000020\n\tCRYPT_SILENT                     = 0x00000040\n\tCRYPT_DEFAULT_CONTAINER_OPTIONAL = 0x00000080\n\n\t/* Flags for PFXImportCertStore */\n\tCRYPT_EXPORTABLE                   = 0x00000001\n\tCRYPT_USER_PROTECTED               = 0x00000002\n\tCRYPT_USER_KEYSET                  = 0x00001000\n\tPKCS12_PREFER_CNG_KSP              = 0x00000100\n\tPKCS12_ALWAYS_CNG_KSP              = 0x00000200\n\tPKCS12_ALLOW_OVERWRITE_KEY         = 0x00004000\n\tPKCS12_NO_PERSIST_KEY              = 0x00008000\n\tPKCS12_INCLUDE_EXTENDED_PROPERTIES = 0x00000010\n\n\t/* Flags for CryptAcquireCertificatePrivateKey */\n\tCRYPT_ACQUIRE_CACHE_FLAG             = 0x00000001\n\tCRYPT_ACQUIRE_USE_PROV_INFO_FLAG     = 0x00000002\n\tCRYPT_ACQUIRE_COMPARE_KEY_FLAG       = 0x00000004\n\tCRYPT_ACQUIRE_NO_HEALING             = 0x00000008\n\tCRYPT_ACQUIRE_SILENT_FLAG            = 0x00000040\n\tCRYPT_ACQUIRE_WINDOW_HANDLE_FLAG     = 0x00000080\n\tCRYPT_ACQUIRE_NCRYPT_KEY_FLAGS_MASK  = 0x00070000\n\tCRYPT_ACQUIRE_ALLOW_NCRYPT_KEY_FLAG  = 0x00010000\n\tCRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG = 0x00020000\n\tCRYPT_ACQUIRE_ONLY_NCRYPT_KEY_FLAG   = 0x00040000\n\n\t/* pdwKeySpec for CryptAcquireCertificatePrivateKey */\n\tAT_KEYEXCHANGE       = 1\n\tAT_SIGNATURE         = 2\n\tCERT_NCRYPT_KEY_SPEC = 0xFFFFFFFF\n\n\t/* Default usage match type is AND with value zero */\n\tUSAGE_MATCH_TYPE_AND = 0\n\tUSAGE_MATCH_TYPE_OR  = 1\n\n\t/* msgAndCertEncodingType values for CertOpenStore function */\n\tX509_ASN_ENCODING   = 0x00000001\n\tPKCS_7_ASN_ENCODING = 0x00010000\n\n\t/* storeProvider values for CertOpenStore function */\n\tCERT_STORE_PROV_MSG               = 1\n\tCERT_STORE_PROV_MEMORY            = 2\n\tCERT_STORE_PROV_FILE              = 3\n\tCERT_STORE_PROV_REG               = 4\n\tCERT_STORE_PROV_PKCS7             = 5\n\tCERT_STORE_PROV_SERIALIZED        = 6\n\tCERT_STORE_PROV_FILENAME_A        = 7\n\tCERT_STORE_PROV_FILENAME_W        = 8\n\tCERT_STORE_PROV_FILENAME          = CERT_STORE_PROV_FILENAME_W\n\tCERT_STORE_PROV_SYSTEM_A          = 9\n\tCERT_STORE_PROV_SYSTEM_W          = 10\n\tCERT_STORE_PROV_SYSTEM            = CERT_STORE_PROV_SYSTEM_W\n\tCERT_STORE_PROV_COLLECTION        = 11\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_A = 12\n\tCERT_STORE_PROV_SYSTEM_REGISTRY_W = 13\n\tCERT_STORE_PROV_SYSTEM_REGISTRY   = CERT_STORE_PROV_SYSTEM_REGISTRY_W\n\tCERT_STORE_PROV_PHYSICAL_W        = 14\n\tCERT_STORE_PROV_PHYSICAL          = CERT_STORE_PROV_PHYSICAL_W\n\tCERT_STORE_PROV_SMART_CARD_W      = 15\n\tCERT_STORE_PROV_SMART_CARD        = CERT_STORE_PROV_SMART_CARD_W\n\tCERT_STORE_PROV_LDAP_W            = 16\n\tCERT_STORE_PROV_LDAP              = CERT_STORE_PROV_LDAP_W\n\tCERT_STORE_PROV_PKCS12            = 17\n\n\t/* store characteristics (low WORD of flag) for CertOpenStore function */\n\tCERT_STORE_NO_CRYPT_RELEASE_FLAG            = 0x00000001\n\tCERT_STORE_SET_LOCALIZED_NAME_FLAG          = 0x00000002\n\tCERT_STORE_DEFER_CLOSE_UNTIL_LAST_FREE_FLAG = 0x00000004\n\tCERT_STORE_DELETE_FLAG                      = 0x00000010\n\tCERT_STORE_UNSAFE_PHYSICAL_FLAG             = 0x00000020\n\tCERT_STORE_SHARE_STORE_FLAG                 = 0x00000040\n\tCERT_STORE_SHARE_CONTEXT_FLAG               = 0x00000080\n\tCERT_STORE_MANIFOLD_FLAG                    = 0x00000100\n\tCERT_STORE_ENUM_ARCHIVED_FLAG               = 0x00000200\n\tCERT_STORE_UPDATE_KEYID_FLAG                = 0x00000400\n\tCERT_STORE_BACKUP_RESTORE_FLAG              = 0x00000800\n\tCERT_STORE_MAXIMUM_ALLOWED_FLAG             = 0x00001000\n\tCERT_STORE_CREATE_NEW_FLAG                  = 0x00002000\n\tCERT_STORE_OPEN_EXISTING_FLAG               = 0x00004000\n\tCERT_STORE_READONLY_FLAG                    = 0x00008000\n\n\t/* store locations (high WORD of flag) for CertOpenStore function */\n\tCERT_SYSTEM_STORE_CURRENT_USER               = 0x00010000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE              = 0x00020000\n\tCERT_SYSTEM_STORE_CURRENT_SERVICE            = 0x00040000\n\tCERT_SYSTEM_STORE_SERVICES                   = 0x00050000\n\tCERT_SYSTEM_STORE_USERS                      = 0x00060000\n\tCERT_SYSTEM_STORE_CURRENT_USER_GROUP_POLICY  = 0x00070000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_GROUP_POLICY = 0x00080000\n\tCERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE   = 0x00090000\n\tCERT_SYSTEM_STORE_UNPROTECTED_FLAG           = 0x40000000\n\tCERT_SYSTEM_STORE_RELOCATE_FLAG              = 0x80000000\n\n\t/* Miscellaneous high-WORD flags for CertOpenStore function */\n\tCERT_REGISTRY_STORE_REMOTE_FLAG      = 0x00010000\n\tCERT_REGISTRY_STORE_SERIALIZED_FLAG  = 0x00020000\n\tCERT_REGISTRY_STORE_ROAMING_FLAG     = 0x00040000\n\tCERT_REGISTRY_STORE_MY_IE_DIRTY_FLAG = 0x00080000\n\tCERT_REGISTRY_STORE_LM_GPT_FLAG      = 0x01000000\n\tCERT_REGISTRY_STORE_CLIENT_GPT_FLAG  = 0x80000000\n\tCERT_FILE_STORE_COMMIT_ENABLE_FLAG   = 0x00010000\n\tCERT_LDAP_STORE_SIGN_FLAG            = 0x00010000\n\tCERT_LDAP_STORE_AREC_EXCLUSIVE_FLAG  = 0x00020000\n\tCERT_LDAP_STORE_OPENED_FLAG          = 0x00040000\n\tCERT_LDAP_STORE_UNBIND_FLAG          = 0x00080000\n\n\t/* addDisposition values for CertAddCertificateContextToStore function */\n\tCERT_STORE_ADD_NEW                                 = 1\n\tCERT_STORE_ADD_USE_EXISTING                        = 2\n\tCERT_STORE_ADD_REPLACE_EXISTING                    = 3\n\tCERT_STORE_ADD_ALWAYS                              = 4\n\tCERT_STORE_ADD_REPLACE_EXISTING_INHERIT_PROPERTIES = 5\n\tCERT_STORE_ADD_NEWER                               = 6\n\tCERT_STORE_ADD_NEWER_INHERIT_PROPERTIES            = 7\n\n\t/* ErrorStatus values for CertTrustStatus struct */\n\tCERT_TRUST_NO_ERROR                          = 0x00000000\n\tCERT_TRUST_IS_NOT_TIME_VALID                 = 0x00000001\n\tCERT_TRUST_IS_REVOKED                        = 0x00000004\n\tCERT_TRUST_IS_NOT_SIGNATURE_VALID            = 0x00000008\n\tCERT_TRUST_IS_NOT_VALID_FOR_USAGE            = 0x00000010\n\tCERT_TRUST_IS_UNTRUSTED_ROOT                 = 0x00000020\n\tCERT_TRUST_REVOCATION_STATUS_UNKNOWN         = 0x00000040\n\tCERT_TRUST_IS_CYCLIC                         = 0x00000080\n\tCERT_TRUST_INVALID_EXTENSION                 = 0x00000100\n\tCERT_TRUST_INVALID_POLICY_CONSTRAINTS        = 0x00000200\n\tCERT_TRUST_INVALID_BASIC_CONSTRAINTS         = 0x00000400\n\tCERT_TRUST_INVALID_NAME_CONSTRAINTS          = 0x00000800\n\tCERT_TRUST_HAS_NOT_SUPPORTED_NAME_CONSTRAINT = 0x00001000\n\tCERT_TRUST_HAS_NOT_DEFINED_NAME_CONSTRAINT   = 0x00002000\n\tCERT_TRUST_HAS_NOT_PERMITTED_NAME_CONSTRAINT = 0x00004000\n\tCERT_TRUST_HAS_EXCLUDED_NAME_CONSTRAINT      = 0x00008000\n\tCERT_TRUST_IS_PARTIAL_CHAIN                  = 0x00010000\n\tCERT_TRUST_CTL_IS_NOT_TIME_VALID             = 0x00020000\n\tCERT_TRUST_CTL_IS_NOT_SIGNATURE_VALID        = 0x00040000\n\tCERT_TRUST_CTL_IS_NOT_VALID_FOR_USAGE        = 0x00080000\n\tCERT_TRUST_HAS_WEAK_SIGNATURE                = 0x00100000\n\tCERT_TRUST_IS_OFFLINE_REVOCATION             = 0x01000000\n\tCERT_TRUST_NO_ISSUANCE_CHAIN_POLICY          = 0x02000000\n\tCERT_TRUST_IS_EXPLICIT_DISTRUST              = 0x04000000\n\tCERT_TRUST_HAS_NOT_SUPPORTED_CRITICAL_EXT    = 0x08000000\n\n\t/* InfoStatus values for CertTrustStatus struct */\n\tCERT_TRUST_HAS_EXACT_MATCH_ISSUER        = 0x00000001\n\tCERT_TRUST_HAS_KEY_MATCH_ISSUER          = 0x00000002\n\tCERT_TRUST_HAS_NAME_MATCH_ISSUER         = 0x00000004\n\tCERT_TRUST_IS_SELF_SIGNED                = 0x00000008\n\tCERT_TRUST_HAS_PREFERRED_ISSUER          = 0x00000100\n\tCERT_TRUST_HAS_ISSUANCE_CHAIN_POLICY     = 0x00000400\n\tCERT_TRUST_HAS_VALID_NAME_CONSTRAINTS    = 0x00000400\n\tCERT_TRUST_IS_PEER_TRUSTED               = 0x00000800\n\tCERT_TRUST_HAS_CRL_VALIDITY_EXTENDED     = 0x00001000\n\tCERT_TRUST_IS_FROM_EXCLUSIVE_TRUST_STORE = 0x00002000\n\tCERT_TRUST_IS_CA_TRUSTED                 = 0x00004000\n\tCERT_TRUST_IS_COMPLEX_CHAIN              = 0x00010000\n\n\t/* Certificate Information Flags */\n\tCERT_INFO_VERSION_FLAG                 = 1\n\tCERT_INFO_SERIAL_NUMBER_FLAG           = 2\n\tCERT_INFO_SIGNATURE_ALGORITHM_FLAG     = 3\n\tCERT_INFO_ISSUER_FLAG                  = 4\n\tCERT_INFO_NOT_BEFORE_FLAG              = 5\n\tCERT_INFO_NOT_AFTER_FLAG               = 6\n\tCERT_INFO_SUBJECT_FLAG                 = 7\n\tCERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8\n\tCERT_INFO_ISSUER_UNIQUE_ID_FLAG        = 9\n\tCERT_INFO_SUBJECT_UNIQUE_ID_FLAG       = 10\n\tCERT_INFO_EXTENSION_FLAG               = 11\n\n\t/* dwFindType for CertFindCertificateInStore  */\n\tCERT_COMPARE_MASK                     = 0xFFFF\n\tCERT_COMPARE_SHIFT                    = 16\n\tCERT_COMPARE_ANY                      = 0\n\tCERT_COMPARE_SHA1_HASH                = 1\n\tCERT_COMPARE_NAME                     = 2\n\tCERT_COMPARE_ATTR                     = 3\n\tCERT_COMPARE_MD5_HASH                 = 4\n\tCERT_COMPARE_PROPERTY                 = 5\n\tCERT_COMPARE_PUBLIC_KEY               = 6\n\tCERT_COMPARE_HASH                     = CERT_COMPARE_SHA1_HASH\n\tCERT_COMPARE_NAME_STR_A               = 7\n\tCERT_COMPARE_NAME_STR_W               = 8\n\tCERT_COMPARE_KEY_SPEC                 = 9\n\tCERT_COMPARE_ENHKEY_USAGE             = 10\n\tCERT_COMPARE_CTL_USAGE                = CERT_COMPARE_ENHKEY_USAGE\n\tCERT_COMPARE_SUBJECT_CERT             = 11\n\tCERT_COMPARE_ISSUER_OF                = 12\n\tCERT_COMPARE_EXISTING                 = 13\n\tCERT_COMPARE_SIGNATURE_HASH           = 14\n\tCERT_COMPARE_KEY_IDENTIFIER           = 15\n\tCERT_COMPARE_CERT_ID                  = 16\n\tCERT_COMPARE_CROSS_CERT_DIST_POINTS   = 17\n\tCERT_COMPARE_PUBKEY_MD5_HASH          = 18\n\tCERT_COMPARE_SUBJECT_INFO_ACCESS      = 19\n\tCERT_COMPARE_HASH_STR                 = 20\n\tCERT_COMPARE_HAS_PRIVATE_KEY          = 21\n\tCERT_FIND_ANY                         = (CERT_COMPARE_ANY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SHA1_HASH                   = (CERT_COMPARE_SHA1_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_MD5_HASH                    = (CERT_COMPARE_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SIGNATURE_HASH              = (CERT_COMPARE_SIGNATURE_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_KEY_IDENTIFIER              = (CERT_COMPARE_KEY_IDENTIFIER << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH                        = CERT_FIND_SHA1_HASH\n\tCERT_FIND_PROPERTY                    = (CERT_COMPARE_PROPERTY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBLIC_KEY                  = (CERT_COMPARE_PUBLIC_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_NAME                = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_ATTR                = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_ISSUER_NAME                 = (CERT_COMPARE_NAME<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_ATTR                 = (CERT_COMPARE_ATTR<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_SUBJECT_STR_A               = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR_W               = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_SUBJECT_FLAG)\n\tCERT_FIND_SUBJECT_STR                 = CERT_FIND_SUBJECT_STR_W\n\tCERT_FIND_ISSUER_STR_A                = (CERT_COMPARE_NAME_STR_A<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR_W                = (CERT_COMPARE_NAME_STR_W<<CERT_COMPARE_SHIFT | CERT_INFO_ISSUER_FLAG)\n\tCERT_FIND_ISSUER_STR                  = CERT_FIND_ISSUER_STR_W\n\tCERT_FIND_KEY_SPEC                    = (CERT_COMPARE_KEY_SPEC << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ENHKEY_USAGE                = (CERT_COMPARE_ENHKEY_USAGE << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CTL_USAGE                   = CERT_FIND_ENHKEY_USAGE\n\tCERT_FIND_SUBJECT_CERT                = (CERT_COMPARE_SUBJECT_CERT << CERT_COMPARE_SHIFT)\n\tCERT_FIND_ISSUER_OF                   = (CERT_COMPARE_ISSUER_OF << CERT_COMPARE_SHIFT)\n\tCERT_FIND_EXISTING                    = (CERT_COMPARE_EXISTING << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CERT_ID                     = (CERT_COMPARE_CERT_ID << CERT_COMPARE_SHIFT)\n\tCERT_FIND_CROSS_CERT_DIST_POINTS      = (CERT_COMPARE_CROSS_CERT_DIST_POINTS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_PUBKEY_MD5_HASH             = (CERT_COMPARE_PUBKEY_MD5_HASH << CERT_COMPARE_SHIFT)\n\tCERT_FIND_SUBJECT_INFO_ACCESS         = (CERT_COMPARE_SUBJECT_INFO_ACCESS << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HASH_STR                    = (CERT_COMPARE_HASH_STR << CERT_COMPARE_SHIFT)\n\tCERT_FIND_HAS_PRIVATE_KEY             = (CERT_COMPARE_HAS_PRIVATE_KEY << CERT_COMPARE_SHIFT)\n\tCERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG  = 0x1\n\tCERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG  = 0x2\n\tCERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = 0x4\n\tCERT_FIND_NO_ENHKEY_USAGE_FLAG        = 0x8\n\tCERT_FIND_OR_ENHKEY_USAGE_FLAG        = 0x10\n\tCERT_FIND_VALID_ENHKEY_USAGE_FLAG     = 0x20\n\tCERT_FIND_OPTIONAL_CTL_USAGE_FLAG     = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG\n\tCERT_FIND_EXT_ONLY_CTL_USAGE_FLAG     = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_PROP_ONLY_CTL_USAGE_FLAG    = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG\n\tCERT_FIND_NO_CTL_USAGE_FLAG           = CERT_FIND_NO_ENHKEY_USAGE_FLAG\n\tCERT_FIND_OR_CTL_USAGE_FLAG           = CERT_FIND_OR_ENHKEY_USAGE_FLAG\n\tCERT_FIND_VALID_CTL_USAGE_FLAG        = CERT_FIND_VALID_ENHKEY_USAGE_FLAG\n\n\t/* policyOID values for CertVerifyCertificateChainPolicy function */\n\tCERT_CHAIN_POLICY_BASE              = 1\n\tCERT_CHAIN_POLICY_AUTHENTICODE      = 2\n\tCERT_CHAIN_POLICY_AUTHENTICODE_TS   = 3\n\tCERT_CHAIN_POLICY_SSL               = 4\n\tCERT_CHAIN_POLICY_BASIC_CONSTRAINTS = 5\n\tCERT_CHAIN_POLICY_NT_AUTH           = 6\n\tCERT_CHAIN_POLICY_MICROSOFT_ROOT    = 7\n\tCERT_CHAIN_POLICY_EV                = 8\n\tCERT_CHAIN_POLICY_SSL_F12           = 9\n\n\t/* flag for dwFindType CertFindChainInStore  */\n\tCERT_CHAIN_FIND_BY_ISSUER = 1\n\n\t/* dwFindFlags for CertFindChainInStore when dwFindType == CERT_CHAIN_FIND_BY_ISSUER */\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPARE_KEY_FLAG    = 0x0001\n\tCERT_CHAIN_FIND_BY_ISSUER_COMPLEX_CHAIN_FLAG  = 0x0002\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_URL_FLAG = 0x0004\n\tCERT_CHAIN_FIND_BY_ISSUER_LOCAL_MACHINE_FLAG  = 0x0008\n\tCERT_CHAIN_FIND_BY_ISSUER_NO_KEY_FLAG         = 0x4000\n\tCERT_CHAIN_FIND_BY_ISSUER_CACHE_ONLY_FLAG     = 0x8000\n\n\t/* Certificate Store close flags */\n\tCERT_CLOSE_STORE_FORCE_FLAG = 0x00000001\n\tCERT_CLOSE_STORE_CHECK_FLAG = 0x00000002\n\n\t/* CryptQueryObject object type */\n\tCERT_QUERY_OBJECT_FILE = 1\n\tCERT_QUERY_OBJECT_BLOB = 2\n\n\t/* CryptQueryObject content type flags */\n\tCERT_QUERY_CONTENT_CERT                    = 1\n\tCERT_QUERY_CONTENT_CTL                     = 2\n\tCERT_QUERY_CONTENT_CRL                     = 3\n\tCERT_QUERY_CONTENT_SERIALIZED_STORE        = 4\n\tCERT_QUERY_CONTENT_SERIALIZED_CERT         = 5\n\tCERT_QUERY_CONTENT_SERIALIZED_CTL          = 6\n\tCERT_QUERY_CONTENT_SERIALIZED_CRL          = 7\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED            = 8\n\tCERT_QUERY_CONTENT_PKCS7_UNSIGNED          = 9\n\tCERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED      = 10\n\tCERT_QUERY_CONTENT_PKCS10                  = 11\n\tCERT_QUERY_CONTENT_PFX                     = 12\n\tCERT_QUERY_CONTENT_CERT_PAIR               = 13\n\tCERT_QUERY_CONTENT_PFX_AND_LOAD            = 14\n\tCERT_QUERY_CONTENT_FLAG_CERT               = (1 << CERT_QUERY_CONTENT_CERT)\n\tCERT_QUERY_CONTENT_FLAG_CTL                = (1 << CERT_QUERY_CONTENT_CTL)\n\tCERT_QUERY_CONTENT_FLAG_CRL                = (1 << CERT_QUERY_CONTENT_CRL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE   = (1 << CERT_QUERY_CONTENT_SERIALIZED_STORE)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT    = (1 << CERT_QUERY_CONTENT_SERIALIZED_CERT)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CTL)\n\tCERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL     = (1 << CERT_QUERY_CONTENT_SERIALIZED_CRL)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED       = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED     = (1 << CERT_QUERY_CONTENT_PKCS7_UNSIGNED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED = (1 << CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED)\n\tCERT_QUERY_CONTENT_FLAG_PKCS10             = (1 << CERT_QUERY_CONTENT_PKCS10)\n\tCERT_QUERY_CONTENT_FLAG_PFX                = (1 << CERT_QUERY_CONTENT_PFX)\n\tCERT_QUERY_CONTENT_FLAG_CERT_PAIR          = (1 << CERT_QUERY_CONTENT_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_PFX_AND_LOAD       = (1 << CERT_QUERY_CONTENT_PFX_AND_LOAD)\n\tCERT_QUERY_CONTENT_FLAG_ALL                = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_CTL | CERT_QUERY_CONTENT_FLAG_CRL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CTL | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CRL | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED_EMBED | CERT_QUERY_CONTENT_FLAG_PKCS10 | CERT_QUERY_CONTENT_FLAG_PFX | CERT_QUERY_CONTENT_FLAG_CERT_PAIR)\n\tCERT_QUERY_CONTENT_FLAG_ALL_ISSUER_CERT    = (CERT_QUERY_CONTENT_FLAG_CERT | CERT_QUERY_CONTENT_FLAG_SERIALIZED_STORE | CERT_QUERY_CONTENT_FLAG_SERIALIZED_CERT | CERT_QUERY_CONTENT_FLAG_PKCS7_SIGNED | CERT_QUERY_CONTENT_FLAG_PKCS7_UNSIGNED)\n\n\t/* CryptQueryObject format type flags */\n\tCERT_QUERY_FORMAT_BINARY                     = 1\n\tCERT_QUERY_FORMAT_BASE64_ENCODED             = 2\n\tCERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED      = 3\n\tCERT_QUERY_FORMAT_FLAG_BINARY                = (1 << CERT_QUERY_FORMAT_BINARY)\n\tCERT_QUERY_FORMAT_FLAG_BASE64_ENCODED        = (1 << CERT_QUERY_FORMAT_BASE64_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED = (1 << CERT_QUERY_FORMAT_ASN_ASCII_HEX_ENCODED)\n\tCERT_QUERY_FORMAT_FLAG_ALL                   = (CERT_QUERY_FORMAT_FLAG_BINARY | CERT_QUERY_FORMAT_FLAG_BASE64_ENCODED | CERT_QUERY_FORMAT_FLAG_ASN_ASCII_HEX_ENCODED)\n\n\t/* CertGetNameString name types */\n\tCERT_NAME_EMAIL_TYPE            = 1\n\tCERT_NAME_RDN_TYPE              = 2\n\tCERT_NAME_ATTR_TYPE             = 3\n\tCERT_NAME_SIMPLE_DISPLAY_TYPE   = 4\n\tCERT_NAME_FRIENDLY_DISPLAY_TYPE = 5\n\tCERT_NAME_DNS_TYPE              = 6\n\tCERT_NAME_URL_TYPE              = 7\n\tCERT_NAME_UPN_TYPE              = 8\n\n\t/* CertGetNameString flags */\n\tCERT_NAME_ISSUER_FLAG              = 0x1\n\tCERT_NAME_DISABLE_IE4_UTF8_FLAG    = 0x10000\n\tCERT_NAME_SEARCH_ALL_NAMES_FLAG    = 0x2\n\tCERT_NAME_STR_ENABLE_PUNYCODE_FLAG = 0x00200000\n\n\t/* AuthType values for SSLExtraCertChainPolicyPara struct */\n\tAUTHTYPE_CLIENT = 1\n\tAUTHTYPE_SERVER = 2\n\n\t/* Checks values for SSLExtraCertChainPolicyPara struct */\n\tSECURITY_FLAG_IGNORE_REVOCATION        = 0x00000080\n\tSECURITY_FLAG_IGNORE_UNKNOWN_CA        = 0x00000100\n\tSECURITY_FLAG_IGNORE_WRONG_USAGE       = 0x00000200\n\tSECURITY_FLAG_IGNORE_CERT_CN_INVALID   = 0x00001000\n\tSECURITY_FLAG_IGNORE_CERT_DATE_INVALID = 0x00002000\n\n\t/* Flags for Crypt[Un]ProtectData */\n\tCRYPTPROTECT_UI_FORBIDDEN      = 0x1\n\tCRYPTPROTECT_LOCAL_MACHINE     = 0x4\n\tCRYPTPROTECT_CRED_SYNC         = 0x8\n\tCRYPTPROTECT_AUDIT             = 0x10\n\tCRYPTPROTECT_NO_RECOVERY       = 0x20\n\tCRYPTPROTECT_VERIFY_PROTECTION = 0x40\n\tCRYPTPROTECT_CRED_REGENERATE   = 0x80\n\n\t/* Flags for CryptProtectPromptStruct */\n\tCRYPTPROTECT_PROMPT_ON_UNPROTECT   = 1\n\tCRYPTPROTECT_PROMPT_ON_PROTECT     = 2\n\tCRYPTPROTECT_PROMPT_RESERVED       = 4\n\tCRYPTPROTECT_PROMPT_STRONG         = 8\n\tCRYPTPROTECT_PROMPT_REQUIRE_STRONG = 16\n)\n\nconst (\n\t// flags for SetErrorMode\n\tSEM_FAILCRITICALERRORS     = 0x0001\n\tSEM_NOALIGNMENTFAULTEXCEPT = 0x0004\n\tSEM_NOGPFAULTERRORBOX      = 0x0002\n\tSEM_NOOPENFILEERRORBOX     = 0x8000\n)\n\nconst (\n\t// Priority class.\n\tABOVE_NORMAL_PRIORITY_CLASS   = 0x00008000\n\tBELOW_NORMAL_PRIORITY_CLASS   = 0x00004000\n\tHIGH_PRIORITY_CLASS           = 0x00000080\n\tIDLE_PRIORITY_CLASS           = 0x00000040\n\tNORMAL_PRIORITY_CLASS         = 0x00000020\n\tPROCESS_MODE_BACKGROUND_BEGIN = 0x00100000\n\tPROCESS_MODE_BACKGROUND_END   = 0x00200000\n\tREALTIME_PRIORITY_CLASS       = 0x00000100\n)\n\n/* wintrust.h constants for WinVerifyTrustEx */\nconst (\n\tWTD_UI_ALL    = 1\n\tWTD_UI_NONE   = 2\n\tWTD_UI_NOBAD  = 3\n\tWTD_UI_NOGOOD = 4\n\n\tWTD_REVOKE_NONE       = 0\n\tWTD_REVOKE_WHOLECHAIN = 1\n\n\tWTD_CHOICE_FILE    = 1\n\tWTD_CHOICE_CATALOG = 2\n\tWTD_CHOICE_BLOB    = 3\n\tWTD_CHOICE_SIGNER  = 4\n\tWTD_CHOICE_CERT    = 5\n\n\tWTD_STATEACTION_IGNORE           = 0x00000000\n\tWTD_STATEACTION_VERIFY           = 0x00000001\n\tWTD_STATEACTION_CLOSE            = 0x00000002\n\tWTD_STATEACTION_AUTO_CACHE       = 0x00000003\n\tWTD_STATEACTION_AUTO_CACHE_FLUSH = 0x00000004\n\n\tWTD_USE_IE4_TRUST_FLAG                  = 0x1\n\tWTD_NO_IE4_CHAIN_FLAG                   = 0x2\n\tWTD_NO_POLICY_USAGE_FLAG                = 0x4\n\tWTD_REVOCATION_CHECK_NONE               = 0x10\n\tWTD_REVOCATION_CHECK_END_CERT           = 0x20\n\tWTD_REVOCATION_CHECK_CHAIN              = 0x40\n\tWTD_REVOCATION_CHECK_CHAIN_EXCLUDE_ROOT = 0x80\n\tWTD_SAFER_FLAG                          = 0x100\n\tWTD_HASH_ONLY_FLAG                      = 0x200\n\tWTD_USE_DEFAULT_OSVER_CHECK             = 0x400\n\tWTD_LIFETIME_SIGNING_FLAG               = 0x800\n\tWTD_CACHE_ONLY_URL_RETRIEVAL            = 0x1000\n\tWTD_DISABLE_MD2_MD4                     = 0x2000\n\tWTD_MOTW                                = 0x4000\n\n\tWTD_UICONTEXT_EXECUTE = 0\n\tWTD_UICONTEXT_INSTALL = 1\n)\n\nvar (\n\tOID_PKIX_KP_SERVER_AUTH = []byte(\"1.3.6.1.5.5.7.3.1\\x00\")\n\tOID_SERVER_GATED_CRYPTO = []byte(\"1.3.6.1.4.1.311.10.3.3\\x00\")\n\tOID_SGC_NETSCAPE        = []byte(\"2.16.840.1.113730.4.1\\x00\")\n\n\tWINTRUST_ACTION_GENERIC_VERIFY_V2 = GUID{\n\t\tData1: 0xaac56b,\n\t\tData2: 0xcd44,\n\t\tData3: 0x11d0,\n\t\tData4: [8]byte{0x8c, 0xc2, 0x0, 0xc0, 0x4f, 0xc2, 0x95, 0xee},\n\t}\n)\n\n// Pointer represents a pointer to an arbitrary Windows type.\n//\n// Pointer-typed fields may point to one of many different types. It's\n// up to the caller to provide a pointer to the appropriate type, cast\n// to Pointer. The caller must obey the unsafe.Pointer rules while\n// doing so.\ntype Pointer *struct{}\n\n// Invented values to support what package os expects.\ntype Timeval struct {\n\tSec  int32\n\tUsec int32\n}\n\nfunc (tv *Timeval) Nanoseconds() int64 {\n\treturn (int64(tv.Sec)*1e6 + int64(tv.Usec)) * 1e3\n}\n\nfunc NsecToTimeval(nsec int64) (tv Timeval) {\n\ttv.Sec = int32(nsec / 1e9)\n\ttv.Usec = int32(nsec % 1e9 / 1e3)\n\treturn\n}\n\ntype Overlapped struct {\n\tInternal     uintptr\n\tInternalHigh uintptr\n\tOffset       uint32\n\tOffsetHigh   uint32\n\tHEvent       Handle\n}\n\ntype FileNotifyInformation struct {\n\tNextEntryOffset uint32\n\tAction          uint32\n\tFileNameLength  uint32\n\tFileName        uint16\n}\n\ntype Filetime struct {\n\tLowDateTime  uint32\n\tHighDateTime uint32\n}\n\n// Nanoseconds returns Filetime ft in nanoseconds\n// since Epoch (00:00:00 UTC, January 1, 1970).\nfunc (ft *Filetime) Nanoseconds() int64 {\n\t// 100-nanosecond intervals since January 1, 1601\n\tnsec := int64(ft.HighDateTime)<<32 + int64(ft.LowDateTime)\n\t// change starting time to the Epoch (00:00:00 UTC, January 1, 1970)\n\tnsec -= 116444736000000000\n\t// convert into nanoseconds\n\tnsec *= 100\n\treturn nsec\n}\n\nfunc NsecToFiletime(nsec int64) (ft Filetime) {\n\t// convert into 100-nanosecond\n\tnsec /= 100\n\t// change starting time to January 1, 1601\n\tnsec += 116444736000000000\n\t// split into high / low\n\tft.LowDateTime = uint32(nsec & 0xffffffff)\n\tft.HighDateTime = uint32(nsec >> 32 & 0xffffffff)\n\treturn ft\n}\n\ntype Win32finddata struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH - 1]uint16\n\tAlternateFileName [13]uint16\n}\n\n// This is the actual system call structure.\n// Win32finddata is what we committed to in Go 1.\ntype win32finddata1 struct {\n\tFileAttributes    uint32\n\tCreationTime      Filetime\n\tLastAccessTime    Filetime\n\tLastWriteTime     Filetime\n\tFileSizeHigh      uint32\n\tFileSizeLow       uint32\n\tReserved0         uint32\n\tReserved1         uint32\n\tFileName          [MAX_PATH]uint16\n\tAlternateFileName [14]uint16\n\n\t// The Microsoft documentation for this struct¹ describes three additional\n\t// fields: dwFileType, dwCreatorType, and wFinderFlags. However, those fields\n\t// are empirically only present in the macOS port of the Win32 API,² and thus\n\t// not needed for binaries built for Windows.\n\t//\n\t// ¹ https://docs.microsoft.com/en-us/windows/win32/api/minwinbase/ns-minwinbase-win32_find_dataw describe\n\t// ² https://golang.org/issue/42637#issuecomment-760715755.\n}\n\nfunc copyFindData(dst *Win32finddata, src *win32finddata1) {\n\tdst.FileAttributes = src.FileAttributes\n\tdst.CreationTime = src.CreationTime\n\tdst.LastAccessTime = src.LastAccessTime\n\tdst.LastWriteTime = src.LastWriteTime\n\tdst.FileSizeHigh = src.FileSizeHigh\n\tdst.FileSizeLow = src.FileSizeLow\n\tdst.Reserved0 = src.Reserved0\n\tdst.Reserved1 = src.Reserved1\n\n\t// The src is 1 element bigger than dst, but it must be NUL.\n\tcopy(dst.FileName[:], src.FileName[:])\n\tcopy(dst.AlternateFileName[:], src.AlternateFileName[:])\n}\n\ntype ByHandleFileInformation struct {\n\tFileAttributes     uint32\n\tCreationTime       Filetime\n\tLastAccessTime     Filetime\n\tLastWriteTime      Filetime\n\tVolumeSerialNumber uint32\n\tFileSizeHigh       uint32\n\tFileSizeLow        uint32\n\tNumberOfLinks      uint32\n\tFileIndexHigh      uint32\n\tFileIndexLow       uint32\n}\n\nconst (\n\tGetFileExInfoStandard = 0\n\tGetFileExMaxInfoLevel = 1\n)\n\ntype Win32FileAttributeData struct {\n\tFileAttributes uint32\n\tCreationTime   Filetime\n\tLastAccessTime Filetime\n\tLastWriteTime  Filetime\n\tFileSizeHigh   uint32\n\tFileSizeLow    uint32\n}\n\n// ShowWindow constants\nconst (\n\t// winuser.h\n\tSW_HIDE            = 0\n\tSW_NORMAL          = 1\n\tSW_SHOWNORMAL      = 1\n\tSW_SHOWMINIMIZED   = 2\n\tSW_SHOWMAXIMIZED   = 3\n\tSW_MAXIMIZE        = 3\n\tSW_SHOWNOACTIVATE  = 4\n\tSW_SHOW            = 5\n\tSW_MINIMIZE        = 6\n\tSW_SHOWMINNOACTIVE = 7\n\tSW_SHOWNA          = 8\n\tSW_RESTORE         = 9\n\tSW_SHOWDEFAULT     = 10\n\tSW_FORCEMINIMIZE   = 11\n)\n\ntype StartupInfo struct {\n\tCb            uint32\n\t_             *uint16\n\tDesktop       *uint16\n\tTitle         *uint16\n\tX             uint32\n\tY             uint32\n\tXSize         uint32\n\tYSize         uint32\n\tXCountChars   uint32\n\tYCountChars   uint32\n\tFillAttribute uint32\n\tFlags         uint32\n\tShowWindow    uint16\n\t_             uint16\n\t_             *byte\n\tStdInput      Handle\n\tStdOutput     Handle\n\tStdErr        Handle\n}\n\ntype StartupInfoEx struct {\n\tStartupInfo\n\tProcThreadAttributeList *ProcThreadAttributeList\n}\n\n// ProcThreadAttributeList is a placeholder type to represent a PROC_THREAD_ATTRIBUTE_LIST.\n//\n// To create a *ProcThreadAttributeList, use NewProcThreadAttributeList, update\n// it with ProcThreadAttributeListContainer.Update, free its memory using\n// ProcThreadAttributeListContainer.Delete, and access the list itself using\n// ProcThreadAttributeListContainer.List.\ntype ProcThreadAttributeList struct{}\n\ntype ProcThreadAttributeListContainer struct {\n\tdata     *ProcThreadAttributeList\n\tpointers []unsafe.Pointer\n}\n\ntype ProcessInformation struct {\n\tProcess   Handle\n\tThread    Handle\n\tProcessId uint32\n\tThreadId  uint32\n}\n\ntype ProcessEntry32 struct {\n\tSize            uint32\n\tUsage           uint32\n\tProcessID       uint32\n\tDefaultHeapID   uintptr\n\tModuleID        uint32\n\tThreads         uint32\n\tParentProcessID uint32\n\tPriClassBase    int32\n\tFlags           uint32\n\tExeFile         [MAX_PATH]uint16\n}\n\ntype ThreadEntry32 struct {\n\tSize           uint32\n\tUsage          uint32\n\tThreadID       uint32\n\tOwnerProcessID uint32\n\tBasePri        int32\n\tDeltaPri       int32\n\tFlags          uint32\n}\n\ntype ModuleEntry32 struct {\n\tSize         uint32\n\tModuleID     uint32\n\tProcessID    uint32\n\tGlblcntUsage uint32\n\tProccntUsage uint32\n\tModBaseAddr  uintptr\n\tModBaseSize  uint32\n\tModuleHandle Handle\n\tModule       [MAX_MODULE_NAME32 + 1]uint16\n\tExePath      [MAX_PATH]uint16\n}\n\nconst SizeofModuleEntry32 = unsafe.Sizeof(ModuleEntry32{})\n\ntype Systemtime struct {\n\tYear         uint16\n\tMonth        uint16\n\tDayOfWeek    uint16\n\tDay          uint16\n\tHour         uint16\n\tMinute       uint16\n\tSecond       uint16\n\tMilliseconds uint16\n}\n\ntype Timezoneinformation struct {\n\tBias         int32\n\tStandardName [32]uint16\n\tStandardDate Systemtime\n\tStandardBias int32\n\tDaylightName [32]uint16\n\tDaylightDate Systemtime\n\tDaylightBias int32\n}\n\n// Socket related.\n\nconst (\n\tAF_UNSPEC  = 0\n\tAF_UNIX    = 1\n\tAF_INET    = 2\n\tAF_NETBIOS = 17\n\tAF_INET6   = 23\n\tAF_IRDA    = 26\n\tAF_BTH     = 32\n\n\tSOCK_STREAM    = 1\n\tSOCK_DGRAM     = 2\n\tSOCK_RAW       = 3\n\tSOCK_RDM       = 4\n\tSOCK_SEQPACKET = 5\n\n\tIPPROTO_IP      = 0\n\tIPPROTO_ICMP    = 1\n\tIPPROTO_IGMP    = 2\n\tBTHPROTO_RFCOMM = 3\n\tIPPROTO_TCP     = 6\n\tIPPROTO_UDP     = 17\n\tIPPROTO_IPV6    = 41\n\tIPPROTO_ICMPV6  = 58\n\tIPPROTO_RM      = 113\n\n\tSOL_SOCKET                = 0xffff\n\tSO_REUSEADDR              = 4\n\tSO_KEEPALIVE              = 8\n\tSO_DONTROUTE              = 16\n\tSO_BROADCAST              = 32\n\tSO_LINGER                 = 128\n\tSO_RCVBUF                 = 0x1002\n\tSO_RCVTIMEO               = 0x1006\n\tSO_SNDBUF                 = 0x1001\n\tSO_UPDATE_ACCEPT_CONTEXT  = 0x700b\n\tSO_UPDATE_CONNECT_CONTEXT = 0x7010\n\n\tIOC_OUT                            = 0x40000000\n\tIOC_IN                             = 0x80000000\n\tIOC_VENDOR                         = 0x18000000\n\tIOC_INOUT                          = IOC_IN | IOC_OUT\n\tIOC_WS2                            = 0x08000000\n\tSIO_GET_EXTENSION_FUNCTION_POINTER = IOC_INOUT | IOC_WS2 | 6\n\tSIO_KEEPALIVE_VALS                 = IOC_IN | IOC_VENDOR | 4\n\tSIO_UDP_CONNRESET                  = IOC_IN | IOC_VENDOR | 12\n\n\t// cf. http://support.microsoft.com/default.aspx?scid=kb;en-us;257460\n\n\tIP_HDRINCL         = 0x2\n\tIP_TOS             = 0x3\n\tIP_TTL             = 0x4\n\tIP_MULTICAST_IF    = 0x9\n\tIP_MULTICAST_TTL   = 0xa\n\tIP_MULTICAST_LOOP  = 0xb\n\tIP_ADD_MEMBERSHIP  = 0xc\n\tIP_DROP_MEMBERSHIP = 0xd\n\tIP_PKTINFO         = 0x13\n\n\tIPV6_V6ONLY         = 0x1b\n\tIPV6_UNICAST_HOPS   = 0x4\n\tIPV6_MULTICAST_IF   = 0x9\n\tIPV6_MULTICAST_HOPS = 0xa\n\tIPV6_MULTICAST_LOOP = 0xb\n\tIPV6_JOIN_GROUP     = 0xc\n\tIPV6_LEAVE_GROUP    = 0xd\n\tIPV6_PKTINFO        = 0x13\n\n\tMSG_OOB       = 0x1\n\tMSG_PEEK      = 0x2\n\tMSG_DONTROUTE = 0x4\n\tMSG_WAITALL   = 0x8\n\n\tMSG_TRUNC  = 0x0100\n\tMSG_CTRUNC = 0x0200\n\tMSG_BCAST  = 0x0400\n\tMSG_MCAST  = 0x0800\n\n\tSOMAXCONN = 0x7fffffff\n\n\tTCP_NODELAY                    = 1\n\tTCP_EXPEDITED_1122             = 2\n\tTCP_KEEPALIVE                  = 3\n\tTCP_MAXSEG                     = 4\n\tTCP_MAXRT                      = 5\n\tTCP_STDURG                     = 6\n\tTCP_NOURG                      = 7\n\tTCP_ATMARK                     = 8\n\tTCP_NOSYNRETRIES               = 9\n\tTCP_TIMESTAMPS                 = 10\n\tTCP_OFFLOAD_PREFERENCE         = 11\n\tTCP_CONGESTION_ALGORITHM       = 12\n\tTCP_DELAY_FIN_ACK              = 13\n\tTCP_MAXRTMS                    = 14\n\tTCP_FASTOPEN                   = 15\n\tTCP_KEEPCNT                    = 16\n\tTCP_KEEPIDLE                   = TCP_KEEPALIVE\n\tTCP_KEEPINTVL                  = 17\n\tTCP_FAIL_CONNECT_ON_ICMP_ERROR = 18\n\tTCP_ICMP_ERROR_INFO            = 19\n\n\tUDP_NOCHECKSUM              = 1\n\tUDP_SEND_MSG_SIZE           = 2\n\tUDP_RECV_MAX_COALESCED_SIZE = 3\n\tUDP_CHECKSUM_COVERAGE       = 20\n\n\tUDP_COALESCED_INFO = 3\n\n\tSHUT_RD   = 0\n\tSHUT_WR   = 1\n\tSHUT_RDWR = 2\n\n\tWSADESCRIPTION_LEN = 256\n\tWSASYS_STATUS_LEN  = 128\n)\n\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// Flags for WSASocket\nconst (\n\tWSA_FLAG_OVERLAPPED             = 0x01\n\tWSA_FLAG_MULTIPOINT_C_ROOT      = 0x02\n\tWSA_FLAG_MULTIPOINT_C_LEAF      = 0x04\n\tWSA_FLAG_MULTIPOINT_D_ROOT      = 0x08\n\tWSA_FLAG_MULTIPOINT_D_LEAF      = 0x10\n\tWSA_FLAG_ACCESS_SYSTEM_SECURITY = 0x40\n\tWSA_FLAG_NO_HANDLE_INHERIT      = 0x80\n\tWSA_FLAG_REGISTERED_IO          = 0x100\n)\n\n// Invented values to support what package os expects.\nconst (\n\tS_IFMT   = 0x1f000\n\tS_IFIFO  = 0x1000\n\tS_IFCHR  = 0x2000\n\tS_IFDIR  = 0x4000\n\tS_IFBLK  = 0x6000\n\tS_IFREG  = 0x8000\n\tS_IFLNK  = 0xa000\n\tS_IFSOCK = 0xc000\n\tS_ISUID  = 0x800\n\tS_ISGID  = 0x400\n\tS_ISVTX  = 0x200\n\tS_IRUSR  = 0x100\n\tS_IWRITE = 0x80\n\tS_IWUSR  = 0x80\n\tS_IXUSR  = 0x40\n)\n\nconst (\n\tFILE_TYPE_CHAR    = 0x0002\n\tFILE_TYPE_DISK    = 0x0001\n\tFILE_TYPE_PIPE    = 0x0003\n\tFILE_TYPE_REMOTE  = 0x8000\n\tFILE_TYPE_UNKNOWN = 0x0000\n)\n\ntype Hostent struct {\n\tName     *byte\n\tAliases  **byte\n\tAddrType uint16\n\tLength   uint16\n\tAddrList **byte\n}\n\ntype Protoent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   uint16\n}\n\nconst (\n\tDNS_TYPE_A       = 0x0001\n\tDNS_TYPE_NS      = 0x0002\n\tDNS_TYPE_MD      = 0x0003\n\tDNS_TYPE_MF      = 0x0004\n\tDNS_TYPE_CNAME   = 0x0005\n\tDNS_TYPE_SOA     = 0x0006\n\tDNS_TYPE_MB      = 0x0007\n\tDNS_TYPE_MG      = 0x0008\n\tDNS_TYPE_MR      = 0x0009\n\tDNS_TYPE_NULL    = 0x000a\n\tDNS_TYPE_WKS     = 0x000b\n\tDNS_TYPE_PTR     = 0x000c\n\tDNS_TYPE_HINFO   = 0x000d\n\tDNS_TYPE_MINFO   = 0x000e\n\tDNS_TYPE_MX      = 0x000f\n\tDNS_TYPE_TEXT    = 0x0010\n\tDNS_TYPE_RP      = 0x0011\n\tDNS_TYPE_AFSDB   = 0x0012\n\tDNS_TYPE_X25     = 0x0013\n\tDNS_TYPE_ISDN    = 0x0014\n\tDNS_TYPE_RT      = 0x0015\n\tDNS_TYPE_NSAP    = 0x0016\n\tDNS_TYPE_NSAPPTR = 0x0017\n\tDNS_TYPE_SIG     = 0x0018\n\tDNS_TYPE_KEY     = 0x0019\n\tDNS_TYPE_PX      = 0x001a\n\tDNS_TYPE_GPOS    = 0x001b\n\tDNS_TYPE_AAAA    = 0x001c\n\tDNS_TYPE_LOC     = 0x001d\n\tDNS_TYPE_NXT     = 0x001e\n\tDNS_TYPE_EID     = 0x001f\n\tDNS_TYPE_NIMLOC  = 0x0020\n\tDNS_TYPE_SRV     = 0x0021\n\tDNS_TYPE_ATMA    = 0x0022\n\tDNS_TYPE_NAPTR   = 0x0023\n\tDNS_TYPE_KX      = 0x0024\n\tDNS_TYPE_CERT    = 0x0025\n\tDNS_TYPE_A6      = 0x0026\n\tDNS_TYPE_DNAME   = 0x0027\n\tDNS_TYPE_SINK    = 0x0028\n\tDNS_TYPE_OPT     = 0x0029\n\tDNS_TYPE_DS      = 0x002B\n\tDNS_TYPE_RRSIG   = 0x002E\n\tDNS_TYPE_NSEC    = 0x002F\n\tDNS_TYPE_DNSKEY  = 0x0030\n\tDNS_TYPE_DHCID   = 0x0031\n\tDNS_TYPE_UINFO   = 0x0064\n\tDNS_TYPE_UID     = 0x0065\n\tDNS_TYPE_GID     = 0x0066\n\tDNS_TYPE_UNSPEC  = 0x0067\n\tDNS_TYPE_ADDRS   = 0x00f8\n\tDNS_TYPE_TKEY    = 0x00f9\n\tDNS_TYPE_TSIG    = 0x00fa\n\tDNS_TYPE_IXFR    = 0x00fb\n\tDNS_TYPE_AXFR    = 0x00fc\n\tDNS_TYPE_MAILB   = 0x00fd\n\tDNS_TYPE_MAILA   = 0x00fe\n\tDNS_TYPE_ALL     = 0x00ff\n\tDNS_TYPE_ANY     = 0x00ff\n\tDNS_TYPE_WINS    = 0xff01\n\tDNS_TYPE_WINSR   = 0xff02\n\tDNS_TYPE_NBSTAT  = 0xff01\n)\n\nconst (\n\t// flags inside DNSRecord.Dw\n\tDnsSectionQuestion   = 0x0000\n\tDnsSectionAnswer     = 0x0001\n\tDnsSectionAuthority  = 0x0002\n\tDnsSectionAdditional = 0x0003\n)\n\nconst (\n\t// flags of WSALookupService\n\tLUP_DEEP                = 0x0001\n\tLUP_CONTAINERS          = 0x0002\n\tLUP_NOCONTAINERS        = 0x0004\n\tLUP_NEAREST             = 0x0008\n\tLUP_RETURN_NAME         = 0x0010\n\tLUP_RETURN_TYPE         = 0x0020\n\tLUP_RETURN_VERSION      = 0x0040\n\tLUP_RETURN_COMMENT      = 0x0080\n\tLUP_RETURN_ADDR         = 0x0100\n\tLUP_RETURN_BLOB         = 0x0200\n\tLUP_RETURN_ALIASES      = 0x0400\n\tLUP_RETURN_QUERY_STRING = 0x0800\n\tLUP_RETURN_ALL          = 0x0FF0\n\tLUP_RES_SERVICE         = 0x8000\n\n\tLUP_FLUSHCACHE    = 0x1000\n\tLUP_FLUSHPREVIOUS = 0x2000\n\n\tLUP_NON_AUTHORITATIVE      = 0x4000\n\tLUP_SECURE                 = 0x8000\n\tLUP_RETURN_PREFERRED_NAMES = 0x10000\n\tLUP_DNS_ONLY               = 0x20000\n\n\tLUP_ADDRCONFIG           = 0x100000\n\tLUP_DUAL_ADDR            = 0x200000\n\tLUP_FILESERVER           = 0x400000\n\tLUP_DISABLE_IDN_ENCODING = 0x00800000\n\tLUP_API_ANSI             = 0x01000000\n\n\tLUP_RESOLUTION_HANDLE = 0x80000000\n)\n\nconst (\n\t// values of WSAQUERYSET's namespace\n\tNS_ALL       = 0\n\tNS_DNS       = 12\n\tNS_NLA       = 15\n\tNS_BTH       = 16\n\tNS_EMAIL     = 37\n\tNS_PNRPNAME  = 38\n\tNS_PNRPCLOUD = 39\n)\n\ntype DNSSRVData struct {\n\tTarget   *uint16\n\tPriority uint16\n\tWeight   uint16\n\tPort     uint16\n\tPad      uint16\n}\n\ntype DNSPTRData struct {\n\tHost *uint16\n}\n\ntype DNSMXData struct {\n\tNameExchange *uint16\n\tPreference   uint16\n\tPad          uint16\n}\n\ntype DNSTXTData struct {\n\tStringCount uint16\n\tStringArray [1]*uint16\n}\n\ntype DNSRecord struct {\n\tNext     *DNSRecord\n\tName     *uint16\n\tType     uint16\n\tLength   uint16\n\tDw       uint32\n\tTtl      uint32\n\tReserved uint32\n\tData     [40]byte\n}\n\nconst (\n\tTF_DISCONNECT         = 1\n\tTF_REUSE_SOCKET       = 2\n\tTF_WRITE_BEHIND       = 4\n\tTF_USE_DEFAULT_WORKER = 0\n\tTF_USE_SYSTEM_THREAD  = 16\n\tTF_USE_KERNEL_APC     = 32\n)\n\ntype TransmitFileBuffers struct {\n\tHead       uintptr\n\tHeadLength uint32\n\tTail       uintptr\n\tTailLength uint32\n}\n\nconst (\n\tIFF_UP           = 1\n\tIFF_BROADCAST    = 2\n\tIFF_LOOPBACK     = 4\n\tIFF_POINTTOPOINT = 8\n\tIFF_MULTICAST    = 16\n)\n\nconst SIO_GET_INTERFACE_LIST = 0x4004747F\n\n// TODO(mattn): SockaddrGen is union of sockaddr/sockaddr_in/sockaddr_in6_old.\n// will be fixed to change variable type as suitable.\n\ntype SockaddrGen [24]byte\n\ntype InterfaceInfo struct {\n\tFlags            uint32\n\tAddress          SockaddrGen\n\tBroadcastAddress SockaddrGen\n\tNetmask          SockaddrGen\n}\n\ntype IpAddressString struct {\n\tString [16]byte\n}\n\ntype IpMaskString IpAddressString\n\ntype IpAddrString struct {\n\tNext      *IpAddrString\n\tIpAddress IpAddressString\n\tIpMask    IpMaskString\n\tContext   uint32\n}\n\nconst MAX_ADAPTER_NAME_LENGTH = 256\nconst MAX_ADAPTER_DESCRIPTION_LENGTH = 128\nconst MAX_ADAPTER_ADDRESS_LENGTH = 8\n\ntype IpAdapterInfo struct {\n\tNext                *IpAdapterInfo\n\tComboIndex          uint32\n\tAdapterName         [MAX_ADAPTER_NAME_LENGTH + 4]byte\n\tDescription         [MAX_ADAPTER_DESCRIPTION_LENGTH + 4]byte\n\tAddressLength       uint32\n\tAddress             [MAX_ADAPTER_ADDRESS_LENGTH]byte\n\tIndex               uint32\n\tType                uint32\n\tDhcpEnabled         uint32\n\tCurrentIpAddress    *IpAddrString\n\tIpAddressList       IpAddrString\n\tGatewayList         IpAddrString\n\tDhcpServer          IpAddrString\n\tHaveWins            bool\n\tPrimaryWinsServer   IpAddrString\n\tSecondaryWinsServer IpAddrString\n\tLeaseObtained       int64\n\tLeaseExpires        int64\n}\n\nconst MAXLEN_PHYSADDR = 8\nconst MAX_INTERFACE_NAME_LEN = 256\nconst MAXLEN_IFDESCR = 256\n\ntype MibIfRow struct {\n\tName            [MAX_INTERFACE_NAME_LEN]uint16\n\tIndex           uint32\n\tType            uint32\n\tMtu             uint32\n\tSpeed           uint32\n\tPhysAddrLen     uint32\n\tPhysAddr        [MAXLEN_PHYSADDR]byte\n\tAdminStatus     uint32\n\tOperStatus      uint32\n\tLastChange      uint32\n\tInOctets        uint32\n\tInUcastPkts     uint32\n\tInNUcastPkts    uint32\n\tInDiscards      uint32\n\tInErrors        uint32\n\tInUnknownProtos uint32\n\tOutOctets       uint32\n\tOutUcastPkts    uint32\n\tOutNUcastPkts   uint32\n\tOutDiscards     uint32\n\tOutErrors       uint32\n\tOutQLen         uint32\n\tDescrLen        uint32\n\tDescr           [MAXLEN_IFDESCR]byte\n}\n\ntype CertInfo struct {\n\tVersion              uint32\n\tSerialNumber         CryptIntegerBlob\n\tSignatureAlgorithm   CryptAlgorithmIdentifier\n\tIssuer               CertNameBlob\n\tNotBefore            Filetime\n\tNotAfter             Filetime\n\tSubject              CertNameBlob\n\tSubjectPublicKeyInfo CertPublicKeyInfo\n\tIssuerUniqueId       CryptBitBlob\n\tSubjectUniqueId      CryptBitBlob\n\tCountExtensions      uint32\n\tExtensions           *CertExtension\n}\n\ntype CertExtension struct {\n\tObjId    *byte\n\tCritical int32\n\tValue    CryptObjidBlob\n}\n\ntype CryptAlgorithmIdentifier struct {\n\tObjId      *byte\n\tParameters CryptObjidBlob\n}\n\ntype CertPublicKeyInfo struct {\n\tAlgorithm CryptAlgorithmIdentifier\n\tPublicKey CryptBitBlob\n}\n\ntype DataBlob struct {\n\tSize uint32\n\tData *byte\n}\ntype CryptIntegerBlob DataBlob\ntype CryptUintBlob DataBlob\ntype CryptObjidBlob DataBlob\ntype CertNameBlob DataBlob\ntype CertRdnValueBlob DataBlob\ntype CertBlob DataBlob\ntype CrlBlob DataBlob\ntype CryptDataBlob DataBlob\ntype CryptHashBlob DataBlob\ntype CryptDigestBlob DataBlob\ntype CryptDerBlob DataBlob\ntype CryptAttrBlob DataBlob\n\ntype CryptBitBlob struct {\n\tSize       uint32\n\tData       *byte\n\tUnusedBits uint32\n}\n\ntype CertContext struct {\n\tEncodingType uint32\n\tEncodedCert  *byte\n\tLength       uint32\n\tCertInfo     *CertInfo\n\tStore        Handle\n}\n\ntype CertChainContext struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tChainCount                 uint32\n\tChains                     **CertSimpleChain\n\tLowerQualityChainCount     uint32\n\tLowerQualityChains         **CertChainContext\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertTrustListInfo struct {\n\t// Not implemented\n}\n\ntype CertSimpleChain struct {\n\tSize                       uint32\n\tTrustStatus                CertTrustStatus\n\tNumElements                uint32\n\tElements                   **CertChainElement\n\tTrustListInfo              *CertTrustListInfo\n\tHasRevocationFreshnessTime uint32\n\tRevocationFreshnessTime    uint32\n}\n\ntype CertChainElement struct {\n\tSize              uint32\n\tCertContext       *CertContext\n\tTrustStatus       CertTrustStatus\n\tRevocationInfo    *CertRevocationInfo\n\tIssuanceUsage     *CertEnhKeyUsage\n\tApplicationUsage  *CertEnhKeyUsage\n\tExtendedErrorInfo *uint16\n}\n\ntype CertRevocationCrlInfo struct {\n\t// Not implemented\n}\n\ntype CertRevocationInfo struct {\n\tSize             uint32\n\tRevocationResult uint32\n\tRevocationOid    *byte\n\tOidSpecificInfo  Pointer\n\tHasFreshnessTime uint32\n\tFreshnessTime    uint32\n\tCrlInfo          *CertRevocationCrlInfo\n}\n\ntype CertTrustStatus struct {\n\tErrorStatus uint32\n\tInfoStatus  uint32\n}\n\ntype CertUsageMatch struct {\n\tType  uint32\n\tUsage CertEnhKeyUsage\n}\n\ntype CertEnhKeyUsage struct {\n\tLength           uint32\n\tUsageIdentifiers **byte\n}\n\ntype CertChainPara struct {\n\tSize                         uint32\n\tRequestedUsage               CertUsageMatch\n\tRequstedIssuancePolicy       CertUsageMatch\n\tURLRetrievalTimeout          uint32\n\tCheckRevocationFreshnessTime uint32\n\tRevocationFreshnessTime      uint32\n\tCacheResync                  *Filetime\n}\n\ntype CertChainPolicyPara struct {\n\tSize            uint32\n\tFlags           uint32\n\tExtraPolicyPara Pointer\n}\n\ntype SSLExtraCertChainPolicyPara struct {\n\tSize       uint32\n\tAuthType   uint32\n\tChecks     uint32\n\tServerName *uint16\n}\n\ntype CertChainPolicyStatus struct {\n\tSize              uint32\n\tError             uint32\n\tChainIndex        uint32\n\tElementIndex      uint32\n\tExtraPolicyStatus Pointer\n}\n\ntype CertPolicyInfo struct {\n\tIdentifier      *byte\n\tCountQualifiers uint32\n\tQualifiers      *CertPolicyQualifierInfo\n}\n\ntype CertPoliciesInfo struct {\n\tCount       uint32\n\tPolicyInfos *CertPolicyInfo\n}\n\ntype CertPolicyQualifierInfo struct {\n\t// Not implemented\n}\n\ntype CertStrongSignPara struct {\n\tSize                      uint32\n\tInfoChoice                uint32\n\tInfoOrSerializedInfoOrOID unsafe.Pointer\n}\n\ntype CryptProtectPromptStruct struct {\n\tSize        uint32\n\tPromptFlags uint32\n\tApp         HWND\n\tPrompt      *uint16\n}\n\ntype CertChainFindByIssuerPara struct {\n\tSize                   uint32\n\tUsageIdentifier        *byte\n\tKeySpec                uint32\n\tAcquirePrivateKeyFlags uint32\n\tIssuerCount            uint32\n\tIssuer                 Pointer\n\tFindCallback           Pointer\n\tFindArg                Pointer\n\tIssuerChainIndex       *uint32\n\tIssuerElementIndex     *uint32\n}\n\ntype WinTrustData struct {\n\tSize                            uint32\n\tPolicyCallbackData              uintptr\n\tSIPClientData                   uintptr\n\tUIChoice                        uint32\n\tRevocationChecks                uint32\n\tUnionChoice                     uint32\n\tFileOrCatalogOrBlobOrSgnrOrCert unsafe.Pointer\n\tStateAction                     uint32\n\tStateData                       Handle\n\tURLReference                    *uint16\n\tProvFlags                       uint32\n\tUIContext                       uint32\n\tSignatureSettings               *WinTrustSignatureSettings\n}\n\ntype WinTrustFileInfo struct {\n\tSize         uint32\n\tFilePath     *uint16\n\tFile         Handle\n\tKnownSubject *GUID\n}\n\ntype WinTrustSignatureSettings struct {\n\tSize             uint32\n\tIndex            uint32\n\tFlags            uint32\n\tSecondarySigs    uint32\n\tVerifiedSigIndex uint32\n\tCryptoPolicy     *CertStrongSignPara\n}\n\nconst (\n\t// do not reorder\n\tHKEY_CLASSES_ROOT = 0x80000000 + iota\n\tHKEY_CURRENT_USER\n\tHKEY_LOCAL_MACHINE\n\tHKEY_USERS\n\tHKEY_PERFORMANCE_DATA\n\tHKEY_CURRENT_CONFIG\n\tHKEY_DYN_DATA\n\n\tKEY_QUERY_VALUE        = 1\n\tKEY_SET_VALUE          = 2\n\tKEY_CREATE_SUB_KEY     = 4\n\tKEY_ENUMERATE_SUB_KEYS = 8\n\tKEY_NOTIFY             = 16\n\tKEY_CREATE_LINK        = 32\n\tKEY_WRITE              = 0x20006\n\tKEY_EXECUTE            = 0x20019\n\tKEY_READ               = 0x20019\n\tKEY_WOW64_64KEY        = 0x0100\n\tKEY_WOW64_32KEY        = 0x0200\n\tKEY_ALL_ACCESS         = 0xf003f\n)\n\nconst (\n\t// do not reorder\n\tREG_NONE = iota\n\tREG_SZ\n\tREG_EXPAND_SZ\n\tREG_BINARY\n\tREG_DWORD_LITTLE_ENDIAN\n\tREG_DWORD_BIG_ENDIAN\n\tREG_LINK\n\tREG_MULTI_SZ\n\tREG_RESOURCE_LIST\n\tREG_FULL_RESOURCE_DESCRIPTOR\n\tREG_RESOURCE_REQUIREMENTS_LIST\n\tREG_QWORD_LITTLE_ENDIAN\n\tREG_DWORD = REG_DWORD_LITTLE_ENDIAN\n\tREG_QWORD = REG_QWORD_LITTLE_ENDIAN\n)\n\nconst (\n\tEVENT_MODIFY_STATE = 0x0002\n\tEVENT_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tMUTANT_QUERY_STATE = 0x0001\n\tMUTANT_ALL_ACCESS  = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | MUTANT_QUERY_STATE\n\n\tSEMAPHORE_MODIFY_STATE = 0x0002\n\tSEMAPHORE_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x3\n\n\tTIMER_QUERY_STATE  = 0x0001\n\tTIMER_MODIFY_STATE = 0x0002\n\tTIMER_ALL_ACCESS   = STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | TIMER_QUERY_STATE | TIMER_MODIFY_STATE\n\n\tMUTEX_MODIFY_STATE = MUTANT_QUERY_STATE\n\tMUTEX_ALL_ACCESS   = MUTANT_ALL_ACCESS\n\n\tCREATE_EVENT_MANUAL_RESET  = 0x1\n\tCREATE_EVENT_INITIAL_SET   = 0x2\n\tCREATE_MUTEX_INITIAL_OWNER = 0x1\n)\n\ntype AddrinfoW struct {\n\tFlags     int32\n\tFamily    int32\n\tSocktype  int32\n\tProtocol  int32\n\tAddrlen   uintptr\n\tCanonname *uint16\n\tAddr      uintptr\n\tNext      *AddrinfoW\n}\n\nconst (\n\tAI_PASSIVE     = 1\n\tAI_CANONNAME   = 2\n\tAI_NUMERICHOST = 4\n)\n\ntype GUID struct {\n\tData1 uint32\n\tData2 uint16\n\tData3 uint16\n\tData4 [8]byte\n}\n\nvar WSAID_CONNECTEX = GUID{\n\t0x25a207b9,\n\t0xddf3,\n\t0x4660,\n\t[8]byte{0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e},\n}\n\nvar WSAID_WSASENDMSG = GUID{\n\t0xa441e712,\n\t0x754f,\n\t0x43ca,\n\t[8]byte{0x84, 0xa7, 0x0d, 0xee, 0x44, 0xcf, 0x60, 0x6d},\n}\n\nvar WSAID_WSARECVMSG = GUID{\n\t0xf689d7c8,\n\t0x6f1f,\n\t0x436b,\n\t[8]byte{0x8a, 0x53, 0xe5, 0x4f, 0xe3, 0x51, 0xc3, 0x22},\n}\n\nconst (\n\tFILE_SKIP_COMPLETION_PORT_ON_SUCCESS = 1\n\tFILE_SKIP_SET_EVENT_ON_HANDLE        = 2\n)\n\nconst (\n\tWSAPROTOCOL_LEN    = 255\n\tMAX_PROTOCOL_CHAIN = 7\n\tBASE_PROTOCOL      = 1\n\tLAYERED_PROTOCOL   = 0\n\n\tXP1_CONNECTIONLESS           = 0x00000001\n\tXP1_GUARANTEED_DELIVERY      = 0x00000002\n\tXP1_GUARANTEED_ORDER         = 0x00000004\n\tXP1_MESSAGE_ORIENTED         = 0x00000008\n\tXP1_PSEUDO_STREAM            = 0x00000010\n\tXP1_GRACEFUL_CLOSE           = 0x00000020\n\tXP1_EXPEDITED_DATA           = 0x00000040\n\tXP1_CONNECT_DATA             = 0x00000080\n\tXP1_DISCONNECT_DATA          = 0x00000100\n\tXP1_SUPPORT_BROADCAST        = 0x00000200\n\tXP1_SUPPORT_MULTIPOINT       = 0x00000400\n\tXP1_MULTIPOINT_CONTROL_PLANE = 0x00000800\n\tXP1_MULTIPOINT_DATA_PLANE    = 0x00001000\n\tXP1_QOS_SUPPORTED            = 0x00002000\n\tXP1_UNI_SEND                 = 0x00008000\n\tXP1_UNI_RECV                 = 0x00010000\n\tXP1_IFS_HANDLES              = 0x00020000\n\tXP1_PARTIAL_MESSAGE          = 0x00040000\n\tXP1_SAN_SUPPORT_SDP          = 0x00080000\n\n\tPFL_MULTIPLE_PROTO_ENTRIES  = 0x00000001\n\tPFL_RECOMMENDED_PROTO_ENTRY = 0x00000002\n\tPFL_HIDDEN                  = 0x00000004\n\tPFL_MATCHES_PROTOCOL_ZERO   = 0x00000008\n\tPFL_NETWORKDIRECT_PROVIDER  = 0x00000010\n)\n\ntype WSAProtocolInfo struct {\n\tServiceFlags1     uint32\n\tServiceFlags2     uint32\n\tServiceFlags3     uint32\n\tServiceFlags4     uint32\n\tProviderFlags     uint32\n\tProviderId        GUID\n\tCatalogEntryId    uint32\n\tProtocolChain     WSAProtocolChain\n\tVersion           int32\n\tAddressFamily     int32\n\tMaxSockAddr       int32\n\tMinSockAddr       int32\n\tSocketType        int32\n\tProtocol          int32\n\tProtocolMaxOffset int32\n\tNetworkByteOrder  int32\n\tSecurityScheme    int32\n\tMessageSize       uint32\n\tProviderReserved  uint32\n\tProtocolName      [WSAPROTOCOL_LEN + 1]uint16\n}\n\ntype WSAProtocolChain struct {\n\tChainLen     int32\n\tChainEntries [MAX_PROTOCOL_CHAIN]uint32\n}\n\ntype TCPKeepalive struct {\n\tOnOff    uint32\n\tTime     uint32\n\tInterval uint32\n}\n\ntype symbolicLinkReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tFlags                uint32\n\tPathBuffer           [1]uint16\n}\n\ntype mountPointReparseBuffer struct {\n\tSubstituteNameOffset uint16\n\tSubstituteNameLength uint16\n\tPrintNameOffset      uint16\n\tPrintNameLength      uint16\n\tPathBuffer           [1]uint16\n}\n\ntype reparseDataBuffer struct {\n\tReparseTag        uint32\n\tReparseDataLength uint16\n\tReserved          uint16\n\n\t// GenericReparseBuffer\n\treparseBuffer byte\n}\n\nconst (\n\tFSCTL_CREATE_OR_GET_OBJECT_ID             = 0x0900C0\n\tFSCTL_DELETE_OBJECT_ID                    = 0x0900A0\n\tFSCTL_DELETE_REPARSE_POINT                = 0x0900AC\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE           = 0x098344\n\tFSCTL_DUPLICATE_EXTENTS_TO_FILE_EX        = 0x0983E8\n\tFSCTL_FILESYSTEM_GET_STATISTICS           = 0x090060\n\tFSCTL_FILE_LEVEL_TRIM                     = 0x098208\n\tFSCTL_FIND_FILES_BY_SID                   = 0x09008F\n\tFSCTL_GET_COMPRESSION                     = 0x09003C\n\tFSCTL_GET_INTEGRITY_INFORMATION           = 0x09027C\n\tFSCTL_GET_NTFS_VOLUME_DATA                = 0x090064\n\tFSCTL_GET_REFS_VOLUME_DATA                = 0x0902D8\n\tFSCTL_GET_OBJECT_ID                       = 0x09009C\n\tFSCTL_GET_REPARSE_POINT                   = 0x0900A8\n\tFSCTL_GET_RETRIEVAL_POINTER_COUNT         = 0x09042B\n\tFSCTL_GET_RETRIEVAL_POINTERS              = 0x090073\n\tFSCTL_GET_RETRIEVAL_POINTERS_AND_REFCOUNT = 0x0903D3\n\tFSCTL_IS_PATHNAME_VALID                   = 0x09002C\n\tFSCTL_LMR_SET_LINK_TRACKING_INFORMATION   = 0x1400EC\n\tFSCTL_MARK_HANDLE                         = 0x0900FC\n\tFSCTL_OFFLOAD_READ                        = 0x094264\n\tFSCTL_OFFLOAD_WRITE                       = 0x098268\n\tFSCTL_PIPE_PEEK                           = 0x11400C\n\tFSCTL_PIPE_TRANSCEIVE                     = 0x11C017\n\tFSCTL_PIPE_WAIT                           = 0x110018\n\tFSCTL_QUERY_ALLOCATED_RANGES              = 0x0940CF\n\tFSCTL_QUERY_FAT_BPB                       = 0x090058\n\tFSCTL_QUERY_FILE_REGIONS                  = 0x090284\n\tFSCTL_QUERY_ON_DISK_VOLUME_INFO           = 0x09013C\n\tFSCTL_QUERY_SPARING_INFO                  = 0x090138\n\tFSCTL_READ_FILE_USN_DATA                  = 0x0900EB\n\tFSCTL_RECALL_FILE                         = 0x090117\n\tFSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT     = 0x090440\n\tFSCTL_SET_COMPRESSION                     = 0x09C040\n\tFSCTL_SET_DEFECT_MANAGEMENT               = 0x098134\n\tFSCTL_SET_ENCRYPTION                      = 0x0900D7\n\tFSCTL_SET_INTEGRITY_INFORMATION           = 0x09C280\n\tFSCTL_SET_INTEGRITY_INFORMATION_EX        = 0x090380\n\tFSCTL_SET_OBJECT_ID                       = 0x090098\n\tFSCTL_SET_OBJECT_ID_EXTENDED              = 0x0900BC\n\tFSCTL_SET_REPARSE_POINT                   = 0x0900A4\n\tFSCTL_SET_SPARSE                          = 0x0900C4\n\tFSCTL_SET_ZERO_DATA                       = 0x0980C8\n\tFSCTL_SET_ZERO_ON_DEALLOCATION            = 0x090194\n\tFSCTL_SIS_COPYFILE                        = 0x090100\n\tFSCTL_WRITE_USN_CLOSE_RECORD              = 0x0900EF\n\n\tMAXIMUM_REPARSE_DATA_BUFFER_SIZE = 16 * 1024\n\tIO_REPARSE_TAG_MOUNT_POINT       = 0xA0000003\n\tIO_REPARSE_TAG_SYMLINK           = 0xA000000C\n\tSYMBOLIC_LINK_FLAG_DIRECTORY     = 0x1\n)\n\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\tTransmitLinkSpeed      uint64\n\tReceiveLinkSpeed       uint64\n\tFirstWinsServerAddress *IpAdapterWinsServerAddress\n\tFirstGatewayAddress    *IpAdapterGatewayAddress\n\tIpv4Metric             uint32\n\tIpv6Metric             uint32\n\tLuid                   uint64\n\tDhcpv4Server           SocketAddress\n\tCompartmentId          uint32\n\tNetworkGuid            GUID\n\tConnectionType         uint32\n\tTunnelType             uint32\n\tDhcpv6Server           SocketAddress\n\tDhcpv6ClientDuid       [MAX_DHCPV6_DUID_LENGTH]byte\n\tDhcpv6ClientDuidLength uint32\n\tDhcpv6Iaid             uint32\n\tFirstDnsSuffix         *IpAdapterDNSSuffix\n}\n\ntype IpAdapterWinsServerAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterWinsServerAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterGatewayAddress struct {\n\tLength   uint32\n\tReserved uint32\n\tNext     *IpAdapterGatewayAddress\n\tAddress  SocketAddress\n}\n\ntype IpAdapterDNSSuffix struct {\n\tNext   *IpAdapterDNSSuffix\n\tString [MAX_DNS_SUFFIX_STRING_LENGTH]uint16\n}\n\nconst (\n\tIfOperStatusUp             = 1\n\tIfOperStatusDown           = 2\n\tIfOperStatusTesting        = 3\n\tIfOperStatusUnknown        = 4\n\tIfOperStatusDormant        = 5\n\tIfOperStatusNotPresent     = 6\n\tIfOperStatusLowerLayerDown = 7\n)\n\n// Console related constants used for the mode parameter to SetConsoleMode. See\n// https://docs.microsoft.com/en-us/windows/console/setconsolemode for details.\n\nconst (\n\tENABLE_PROCESSED_INPUT        = 0x1\n\tENABLE_LINE_INPUT             = 0x2\n\tENABLE_ECHO_INPUT             = 0x4\n\tENABLE_WINDOW_INPUT           = 0x8\n\tENABLE_MOUSE_INPUT            = 0x10\n\tENABLE_INSERT_MODE            = 0x20\n\tENABLE_QUICK_EDIT_MODE        = 0x40\n\tENABLE_EXTENDED_FLAGS         = 0x80\n\tENABLE_AUTO_POSITION          = 0x100\n\tENABLE_VIRTUAL_TERMINAL_INPUT = 0x200\n\n\tENABLE_PROCESSED_OUTPUT            = 0x1\n\tENABLE_WRAP_AT_EOL_OUTPUT          = 0x2\n\tENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x4\n\tDISABLE_NEWLINE_AUTO_RETURN        = 0x8\n\tENABLE_LVB_GRID_WORLDWIDE          = 0x10\n)\n\n// Pseudo console related constants used for the flags parameter to\n// CreatePseudoConsole. See: https://learn.microsoft.com/en-us/windows/console/createpseudoconsole\nconst (\n\tPSEUDOCONSOLE_INHERIT_CURSOR = 0x1\n)\n\ntype Coord struct {\n\tX int16\n\tY int16\n}\n\ntype SmallRect struct {\n\tLeft   int16\n\tTop    int16\n\tRight  int16\n\tBottom int16\n}\n\n// Used with GetConsoleScreenBuffer to retrieve information about a console\n// screen buffer. See\n// https://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str\n// for details.\n\ntype ConsoleScreenBufferInfo struct {\n\tSize              Coord\n\tCursorPosition    Coord\n\tAttributes        uint16\n\tWindow            SmallRect\n\tMaximumWindowSize Coord\n}\n\nconst UNIX_PATH_MAX = 108 // defined in afunix.h\n\nconst (\n\t// flags for JOBOBJECT_BASIC_LIMIT_INFORMATION.LimitFlags\n\tJOB_OBJECT_LIMIT_ACTIVE_PROCESS             = 0x00000008\n\tJOB_OBJECT_LIMIT_AFFINITY                   = 0x00000010\n\tJOB_OBJECT_LIMIT_BREAKAWAY_OK               = 0x00000800\n\tJOB_OBJECT_LIMIT_DIE_ON_UNHANDLED_EXCEPTION = 0x00000400\n\tJOB_OBJECT_LIMIT_JOB_MEMORY                 = 0x00000200\n\tJOB_OBJECT_LIMIT_JOB_TIME                   = 0x00000004\n\tJOB_OBJECT_LIMIT_KILL_ON_JOB_CLOSE          = 0x00002000\n\tJOB_OBJECT_LIMIT_PRESERVE_JOB_TIME          = 0x00000040\n\tJOB_OBJECT_LIMIT_PRIORITY_CLASS             = 0x00000020\n\tJOB_OBJECT_LIMIT_PROCESS_MEMORY             = 0x00000100\n\tJOB_OBJECT_LIMIT_PROCESS_TIME               = 0x00000002\n\tJOB_OBJECT_LIMIT_SCHEDULING_CLASS           = 0x00000080\n\tJOB_OBJECT_LIMIT_SILENT_BREAKAWAY_OK        = 0x00001000\n\tJOB_OBJECT_LIMIT_SUBSET_AFFINITY            = 0x00004000\n\tJOB_OBJECT_LIMIT_WORKINGSET                 = 0x00000001\n)\n\ntype IO_COUNTERS struct {\n\tReadOperationCount  uint64\n\tWriteOperationCount uint64\n\tOtherOperationCount uint64\n\tReadTransferCount   uint64\n\tWriteTransferCount  uint64\n\tOtherTransferCount  uint64\n}\n\ntype JOBOBJECT_EXTENDED_LIMIT_INFORMATION struct {\n\tBasicLimitInformation JOBOBJECT_BASIC_LIMIT_INFORMATION\n\tIoInfo                IO_COUNTERS\n\tProcessMemoryLimit    uintptr\n\tJobMemoryLimit        uintptr\n\tPeakProcessMemoryUsed uintptr\n\tPeakJobMemoryUsed     uintptr\n}\n\nconst (\n\t// UIRestrictionsClass\n\tJOB_OBJECT_UILIMIT_DESKTOP          = 0x00000040\n\tJOB_OBJECT_UILIMIT_DISPLAYSETTINGS  = 0x00000010\n\tJOB_OBJECT_UILIMIT_EXITWINDOWS      = 0x00000080\n\tJOB_OBJECT_UILIMIT_GLOBALATOMS      = 0x00000020\n\tJOB_OBJECT_UILIMIT_HANDLES          = 0x00000001\n\tJOB_OBJECT_UILIMIT_READCLIPBOARD    = 0x00000002\n\tJOB_OBJECT_UILIMIT_SYSTEMPARAMETERS = 0x00000008\n\tJOB_OBJECT_UILIMIT_WRITECLIPBOARD   = 0x00000004\n)\n\ntype JOBOBJECT_BASIC_UI_RESTRICTIONS struct {\n\tUIRestrictionsClass uint32\n}\n\nconst (\n\t// JobObjectInformationClass for QueryInformationJobObject and SetInformationJobObject\n\tJobObjectAssociateCompletionPortInformation = 7\n\tJobObjectBasicAccountingInformation         = 1\n\tJobObjectBasicAndIoAccountingInformation    = 8\n\tJobObjectBasicLimitInformation              = 2\n\tJobObjectBasicProcessIdList                 = 3\n\tJobObjectBasicUIRestrictions                = 4\n\tJobObjectCpuRateControlInformation          = 15\n\tJobObjectEndOfJobTimeInformation            = 6\n\tJobObjectExtendedLimitInformation           = 9\n\tJobObjectGroupInformation                   = 11\n\tJobObjectGroupInformationEx                 = 14\n\tJobObjectLimitViolationInformation          = 13\n\tJobObjectLimitViolationInformation2         = 34\n\tJobObjectNetRateControlInformation          = 32\n\tJobObjectNotificationLimitInformation       = 12\n\tJobObjectNotificationLimitInformation2      = 33\n\tJobObjectSecurityLimitInformation           = 5\n)\n\nconst (\n\tKF_FLAG_DEFAULT                          = 0x00000000\n\tKF_FLAG_FORCE_APP_DATA_REDIRECTION       = 0x00080000\n\tKF_FLAG_RETURN_FILTER_REDIRECTION_TARGET = 0x00040000\n\tKF_FLAG_FORCE_PACKAGE_REDIRECTION        = 0x00020000\n\tKF_FLAG_NO_PACKAGE_REDIRECTION           = 0x00010000\n\tKF_FLAG_FORCE_APPCONTAINER_REDIRECTION   = 0x00020000\n\tKF_FLAG_NO_APPCONTAINER_REDIRECTION      = 0x00010000\n\tKF_FLAG_CREATE                           = 0x00008000\n\tKF_FLAG_DONT_VERIFY                      = 0x00004000\n\tKF_FLAG_DONT_UNEXPAND                    = 0x00002000\n\tKF_FLAG_NO_ALIAS                         = 0x00001000\n\tKF_FLAG_INIT                             = 0x00000800\n\tKF_FLAG_DEFAULT_PATH                     = 0x00000400\n\tKF_FLAG_NOT_PARENT_RELATIVE              = 0x00000200\n\tKF_FLAG_SIMPLE_IDLIST                    = 0x00000100\n\tKF_FLAG_ALIAS_ONLY                       = 0x80000000\n)\n\ntype OsVersionInfoEx struct {\n\tosVersionInfoSize uint32\n\tMajorVersion      uint32\n\tMinorVersion      uint32\n\tBuildNumber       uint32\n\tPlatformId        uint32\n\tCsdVersion        [128]uint16\n\tServicePackMajor  uint16\n\tServicePackMinor  uint16\n\tSuiteMask         uint16\n\tProductType       byte\n\t_                 byte\n}\n\nconst (\n\tEWX_LOGOFF          = 0x00000000\n\tEWX_SHUTDOWN        = 0x00000001\n\tEWX_REBOOT          = 0x00000002\n\tEWX_FORCE           = 0x00000004\n\tEWX_POWEROFF        = 0x00000008\n\tEWX_FORCEIFHUNG     = 0x00000010\n\tEWX_QUICKRESOLVE    = 0x00000020\n\tEWX_RESTARTAPPS     = 0x00000040\n\tEWX_HYBRID_SHUTDOWN = 0x00400000\n\tEWX_BOOTOPTIONS     = 0x01000000\n\n\tSHTDN_REASON_FLAG_COMMENT_REQUIRED          = 0x01000000\n\tSHTDN_REASON_FLAG_DIRTY_PROBLEM_ID_REQUIRED = 0x02000000\n\tSHTDN_REASON_FLAG_CLEAN_UI                  = 0x04000000\n\tSHTDN_REASON_FLAG_DIRTY_UI                  = 0x08000000\n\tSHTDN_REASON_FLAG_USER_DEFINED              = 0x40000000\n\tSHTDN_REASON_FLAG_PLANNED                   = 0x80000000\n\tSHTDN_REASON_MAJOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MAJOR_NONE                     = 0x00000000\n\tSHTDN_REASON_MAJOR_HARDWARE                 = 0x00010000\n\tSHTDN_REASON_MAJOR_OPERATINGSYSTEM          = 0x00020000\n\tSHTDN_REASON_MAJOR_SOFTWARE                 = 0x00030000\n\tSHTDN_REASON_MAJOR_APPLICATION              = 0x00040000\n\tSHTDN_REASON_MAJOR_SYSTEM                   = 0x00050000\n\tSHTDN_REASON_MAJOR_POWER                    = 0x00060000\n\tSHTDN_REASON_MAJOR_LEGACY_API               = 0x00070000\n\tSHTDN_REASON_MINOR_OTHER                    = 0x00000000\n\tSHTDN_REASON_MINOR_NONE                     = 0x000000ff\n\tSHTDN_REASON_MINOR_MAINTENANCE              = 0x00000001\n\tSHTDN_REASON_MINOR_INSTALLATION             = 0x00000002\n\tSHTDN_REASON_MINOR_UPGRADE                  = 0x00000003\n\tSHTDN_REASON_MINOR_RECONFIG                 = 0x00000004\n\tSHTDN_REASON_MINOR_HUNG                     = 0x00000005\n\tSHTDN_REASON_MINOR_UNSTABLE                 = 0x00000006\n\tSHTDN_REASON_MINOR_DISK                     = 0x00000007\n\tSHTDN_REASON_MINOR_PROCESSOR                = 0x00000008\n\tSHTDN_REASON_MINOR_NETWORKCARD              = 0x00000009\n\tSHTDN_REASON_MINOR_POWER_SUPPLY             = 0x0000000a\n\tSHTDN_REASON_MINOR_CORDUNPLUGGED            = 0x0000000b\n\tSHTDN_REASON_MINOR_ENVIRONMENT              = 0x0000000c\n\tSHTDN_REASON_MINOR_HARDWARE_DRIVER          = 0x0000000d\n\tSHTDN_REASON_MINOR_OTHERDRIVER              = 0x0000000e\n\tSHTDN_REASON_MINOR_BLUESCREEN               = 0x0000000F\n\tSHTDN_REASON_MINOR_SERVICEPACK              = 0x00000010\n\tSHTDN_REASON_MINOR_HOTFIX                   = 0x00000011\n\tSHTDN_REASON_MINOR_SECURITYFIX              = 0x00000012\n\tSHTDN_REASON_MINOR_SECURITY                 = 0x00000013\n\tSHTDN_REASON_MINOR_NETWORK_CONNECTIVITY     = 0x00000014\n\tSHTDN_REASON_MINOR_WMI                      = 0x00000015\n\tSHTDN_REASON_MINOR_SERVICEPACK_UNINSTALL    = 0x00000016\n\tSHTDN_REASON_MINOR_HOTFIX_UNINSTALL         = 0x00000017\n\tSHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL    = 0x00000018\n\tSHTDN_REASON_MINOR_MMC                      = 0x00000019\n\tSHTDN_REASON_MINOR_SYSTEMRESTORE            = 0x0000001a\n\tSHTDN_REASON_MINOR_TERMSRV                  = 0x00000020\n\tSHTDN_REASON_MINOR_DC_PROMOTION             = 0x00000021\n\tSHTDN_REASON_MINOR_DC_DEMOTION              = 0x00000022\n\tSHTDN_REASON_UNKNOWN                        = SHTDN_REASON_MINOR_NONE\n\tSHTDN_REASON_LEGACY_API                     = SHTDN_REASON_MAJOR_LEGACY_API | SHTDN_REASON_FLAG_PLANNED\n\tSHTDN_REASON_VALID_BIT_MASK                 = 0xc0ffffff\n\n\tSHUTDOWN_NORETRY = 0x1\n)\n\n// Flags used for GetModuleHandleEx\nconst (\n\tGET_MODULE_HANDLE_EX_FLAG_PIN                = 1\n\tGET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT = 2\n\tGET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS       = 4\n)\n\n// MUI function flag values\nconst (\n\tMUI_LANGUAGE_ID                    = 0x4\n\tMUI_LANGUAGE_NAME                  = 0x8\n\tMUI_MERGE_SYSTEM_FALLBACK          = 0x10\n\tMUI_MERGE_USER_FALLBACK            = 0x20\n\tMUI_UI_FALLBACK                    = MUI_MERGE_SYSTEM_FALLBACK | MUI_MERGE_USER_FALLBACK\n\tMUI_THREAD_LANGUAGES               = 0x40\n\tMUI_CONSOLE_FILTER                 = 0x100\n\tMUI_COMPLEX_SCRIPT_FILTER          = 0x200\n\tMUI_RESET_FILTERS                  = 0x001\n\tMUI_USER_PREFERRED_UI_LANGUAGES    = 0x10\n\tMUI_USE_INSTALLED_LANGUAGES        = 0x20\n\tMUI_USE_SEARCH_ALL_LANGUAGES       = 0x40\n\tMUI_LANG_NEUTRAL_PE_FILE           = 0x100\n\tMUI_NON_LANG_NEUTRAL_FILE          = 0x200\n\tMUI_MACHINE_LANGUAGE_SETTINGS      = 0x400\n\tMUI_FILETYPE_NOT_LANGUAGE_NEUTRAL  = 0x001\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN = 0x002\n\tMUI_FILETYPE_LANGUAGE_NEUTRAL_MUI  = 0x004\n\tMUI_QUERY_TYPE                     = 0x001\n\tMUI_QUERY_CHECKSUM                 = 0x002\n\tMUI_QUERY_LANGUAGE_NAME            = 0x004\n\tMUI_QUERY_RESOURCE_TYPES           = 0x008\n\tMUI_FILEINFO_VERSION               = 0x001\n\n\tMUI_FULL_LANGUAGE      = 0x01\n\tMUI_PARTIAL_LANGUAGE   = 0x02\n\tMUI_LIP_LANGUAGE       = 0x04\n\tMUI_LANGUAGE_INSTALLED = 0x20\n\tMUI_LANGUAGE_LICENSED  = 0x40\n)\n\n// FILE_INFO_BY_HANDLE_CLASS constants for SetFileInformationByHandle/GetFileInformationByHandleEx\nconst (\n\tFileBasicInfo                  = 0\n\tFileStandardInfo               = 1\n\tFileNameInfo                   = 2\n\tFileRenameInfo                 = 3\n\tFileDispositionInfo            = 4\n\tFileAllocationInfo             = 5\n\tFileEndOfFileInfo              = 6\n\tFileStreamInfo                 = 7\n\tFileCompressionInfo            = 8\n\tFileAttributeTagInfo           = 9\n\tFileIdBothDirectoryInfo        = 10\n\tFileIdBothDirectoryRestartInfo = 11\n\tFileIoPriorityHintInfo         = 12\n\tFileRemoteProtocolInfo         = 13\n\tFileFullDirectoryInfo          = 14\n\tFileFullDirectoryRestartInfo   = 15\n\tFileStorageInfo                = 16\n\tFileAlignmentInfo              = 17\n\tFileIdInfo                     = 18\n\tFileIdExtdDirectoryInfo        = 19\n\tFileIdExtdDirectoryRestartInfo = 20\n\tFileDispositionInfoEx          = 21\n\tFileRenameInfoEx               = 22\n\tFileCaseSensitiveInfo          = 23\n\tFileNormalizedNameInfo         = 24\n)\n\n// LoadLibrary flags for determining from where to search for a DLL\nconst (\n\tDONT_RESOLVE_DLL_REFERENCES               = 0x1\n\tLOAD_LIBRARY_AS_DATAFILE                  = 0x2\n\tLOAD_WITH_ALTERED_SEARCH_PATH             = 0x8\n\tLOAD_IGNORE_CODE_AUTHZ_LEVEL              = 0x10\n\tLOAD_LIBRARY_AS_IMAGE_RESOURCE            = 0x20\n\tLOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE        = 0x40\n\tLOAD_LIBRARY_REQUIRE_SIGNED_TARGET        = 0x80\n\tLOAD_LIBRARY_SEARCH_DLL_LOAD_DIR          = 0x100\n\tLOAD_LIBRARY_SEARCH_APPLICATION_DIR       = 0x200\n\tLOAD_LIBRARY_SEARCH_USER_DIRS             = 0x400\n\tLOAD_LIBRARY_SEARCH_SYSTEM32              = 0x800\n\tLOAD_LIBRARY_SEARCH_DEFAULT_DIRS          = 0x1000\n\tLOAD_LIBRARY_SAFE_CURRENT_DIRS            = 0x00002000\n\tLOAD_LIBRARY_SEARCH_SYSTEM32_NO_FORWARDER = 0x00004000\n\tLOAD_LIBRARY_OS_INTEGRITY_CONTINUITY      = 0x00008000\n)\n\n// RegNotifyChangeKeyValue notifyFilter flags.\nconst (\n\t// REG_NOTIFY_CHANGE_NAME notifies the caller if a subkey is added or deleted.\n\tREG_NOTIFY_CHANGE_NAME = 0x00000001\n\n\t// REG_NOTIFY_CHANGE_ATTRIBUTES notifies the caller of changes to the attributes of the key, such as the security descriptor information.\n\tREG_NOTIFY_CHANGE_ATTRIBUTES = 0x00000002\n\n\t// REG_NOTIFY_CHANGE_LAST_SET notifies the caller of changes to a value of the key. This can include adding or deleting a value, or changing an existing value.\n\tREG_NOTIFY_CHANGE_LAST_SET = 0x00000004\n\n\t// REG_NOTIFY_CHANGE_SECURITY notifies the caller of changes to the security descriptor of the key.\n\tREG_NOTIFY_CHANGE_SECURITY = 0x00000008\n\n\t// REG_NOTIFY_THREAD_AGNOSTIC indicates that the lifetime of the registration must not be tied to the lifetime of the thread issuing the RegNotifyChangeKeyValue call. Note: This flag value is only supported in Windows 8 and later.\n\tREG_NOTIFY_THREAD_AGNOSTIC = 0x10000000\n)\n\ntype CommTimeouts struct {\n\tReadIntervalTimeout         uint32\n\tReadTotalTimeoutMultiplier  uint32\n\tReadTotalTimeoutConstant    uint32\n\tWriteTotalTimeoutMultiplier uint32\n\tWriteTotalTimeoutConstant   uint32\n}\n\n// NTUnicodeString is a UTF-16 string for NT native APIs, corresponding to UNICODE_STRING.\ntype NTUnicodeString struct {\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *uint16\n}\n\n// NTString is an ANSI string for NT native APIs, corresponding to STRING.\ntype NTString struct {\n\tLength        uint16\n\tMaximumLength uint16\n\tBuffer        *byte\n}\n\ntype LIST_ENTRY struct {\n\tFlink *LIST_ENTRY\n\tBlink *LIST_ENTRY\n}\n\ntype RUNTIME_FUNCTION struct {\n\tBeginAddress uint32\n\tEndAddress   uint32\n\tUnwindData   uint32\n}\n\ntype LDR_DATA_TABLE_ENTRY struct {\n\treserved1          [2]uintptr\n\tInMemoryOrderLinks LIST_ENTRY\n\treserved2          [2]uintptr\n\tDllBase            uintptr\n\treserved3          [2]uintptr\n\tFullDllName        NTUnicodeString\n\treserved4          [8]byte\n\treserved5          [3]uintptr\n\treserved6          uintptr\n\tTimeDateStamp      uint32\n}\n\ntype PEB_LDR_DATA struct {\n\treserved1               [8]byte\n\treserved2               [3]uintptr\n\tInMemoryOrderModuleList LIST_ENTRY\n}\n\ntype CURDIR struct {\n\tDosPath NTUnicodeString\n\tHandle  Handle\n}\n\ntype RTL_DRIVE_LETTER_CURDIR struct {\n\tFlags     uint16\n\tLength    uint16\n\tTimeStamp uint32\n\tDosPath   NTString\n}\n\ntype RTL_USER_PROCESS_PARAMETERS struct {\n\tMaximumLength, Length uint32\n\n\tFlags, DebugFlags uint32\n\n\tConsoleHandle                                Handle\n\tConsoleFlags                                 uint32\n\tStandardInput, StandardOutput, StandardError Handle\n\n\tCurrentDirectory CURDIR\n\tDllPath          NTUnicodeString\n\tImagePathName    NTUnicodeString\n\tCommandLine      NTUnicodeString\n\tEnvironment      unsafe.Pointer\n\n\tStartingX, StartingY, CountX, CountY, CountCharsX, CountCharsY, FillAttribute uint32\n\n\tWindowFlags, ShowWindowFlags                     uint32\n\tWindowTitle, DesktopInfo, ShellInfo, RuntimeData NTUnicodeString\n\tCurrentDirectories                               [32]RTL_DRIVE_LETTER_CURDIR\n\n\tEnvironmentSize, EnvironmentVersion uintptr\n\n\tPackageDependencyData unsafe.Pointer\n\tProcessGroupId        uint32\n\tLoaderThreads         uint32\n\n\tRedirectionDllName               NTUnicodeString\n\tHeapPartitionName                NTUnicodeString\n\tDefaultThreadpoolCpuSetMasks     uintptr\n\tDefaultThreadpoolCpuSetMaskCount uint32\n}\n\ntype PEB struct {\n\treserved1              [2]byte\n\tBeingDebugged          byte\n\tBitField               byte\n\treserved3              uintptr\n\tImageBaseAddress       uintptr\n\tLdr                    *PEB_LDR_DATA\n\tProcessParameters      *RTL_USER_PROCESS_PARAMETERS\n\treserved4              [3]uintptr\n\tAtlThunkSListPtr       uintptr\n\treserved5              uintptr\n\treserved6              uint32\n\treserved7              uintptr\n\treserved8              uint32\n\tAtlThunkSListPtr32     uint32\n\treserved9              [45]uintptr\n\treserved10             [96]byte\n\tPostProcessInitRoutine uintptr\n\treserved11             [128]byte\n\treserved12             [1]uintptr\n\tSessionId              uint32\n}\n\ntype OBJECT_ATTRIBUTES struct {\n\tLength             uint32\n\tRootDirectory      Handle\n\tObjectName         *NTUnicodeString\n\tAttributes         uint32\n\tSecurityDescriptor *SECURITY_DESCRIPTOR\n\tSecurityQoS        *SECURITY_QUALITY_OF_SERVICE\n}\n\n// Values for the Attributes member of OBJECT_ATTRIBUTES.\nconst (\n\tOBJ_INHERIT                       = 0x00000002\n\tOBJ_PERMANENT                     = 0x00000010\n\tOBJ_EXCLUSIVE                     = 0x00000020\n\tOBJ_CASE_INSENSITIVE              = 0x00000040\n\tOBJ_OPENIF                        = 0x00000080\n\tOBJ_OPENLINK                      = 0x00000100\n\tOBJ_KERNEL_HANDLE                 = 0x00000200\n\tOBJ_FORCE_ACCESS_CHECK            = 0x00000400\n\tOBJ_IGNORE_IMPERSONATED_DEVICEMAP = 0x00000800\n\tOBJ_DONT_REPARSE                  = 0x00001000\n\tOBJ_VALID_ATTRIBUTES              = 0x00001FF2\n)\n\ntype IO_STATUS_BLOCK struct {\n\tStatus      NTStatus\n\tInformation uintptr\n}\n\ntype RTLP_CURDIR_REF struct {\n\tRefCount int32\n\tHandle   Handle\n}\n\ntype RTL_RELATIVE_NAME struct {\n\tRelativeName        NTUnicodeString\n\tContainingDirectory Handle\n\tCurDirRef           *RTLP_CURDIR_REF\n}\n\nconst (\n\t// CreateDisposition flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_SUPERSEDE           = 0x00000000\n\tFILE_OPEN                = 0x00000001\n\tFILE_CREATE              = 0x00000002\n\tFILE_OPEN_IF             = 0x00000003\n\tFILE_OVERWRITE           = 0x00000004\n\tFILE_OVERWRITE_IF        = 0x00000005\n\tFILE_MAXIMUM_DISPOSITION = 0x00000005\n\n\t// CreateOptions flags for NtCreateFile and NtCreateNamedPipeFile.\n\tFILE_DIRECTORY_FILE            = 0x00000001\n\tFILE_WRITE_THROUGH             = 0x00000002\n\tFILE_SEQUENTIAL_ONLY           = 0x00000004\n\tFILE_NO_INTERMEDIATE_BUFFERING = 0x00000008\n\tFILE_SYNCHRONOUS_IO_ALERT      = 0x00000010\n\tFILE_SYNCHRONOUS_IO_NONALERT   = 0x00000020\n\tFILE_NON_DIRECTORY_FILE        = 0x00000040\n\tFILE_CREATE_TREE_CONNECTION    = 0x00000080\n\tFILE_COMPLETE_IF_OPLOCKED      = 0x00000100\n\tFILE_NO_EA_KNOWLEDGE           = 0x00000200\n\tFILE_OPEN_REMOTE_INSTANCE      = 0x00000400\n\tFILE_RANDOM_ACCESS             = 0x00000800\n\tFILE_DELETE_ON_CLOSE           = 0x00001000\n\tFILE_OPEN_BY_FILE_ID           = 0x00002000\n\tFILE_OPEN_FOR_BACKUP_INTENT    = 0x00004000\n\tFILE_NO_COMPRESSION            = 0x00008000\n\tFILE_OPEN_REQUIRING_OPLOCK     = 0x00010000\n\tFILE_DISALLOW_EXCLUSIVE        = 0x00020000\n\tFILE_RESERVE_OPFILTER          = 0x00100000\n\tFILE_OPEN_REPARSE_POINT        = 0x00200000\n\tFILE_OPEN_NO_RECALL            = 0x00400000\n\tFILE_OPEN_FOR_FREE_SPACE_QUERY = 0x00800000\n\n\t// Parameter constants for NtCreateNamedPipeFile.\n\n\tFILE_PIPE_BYTE_STREAM_TYPE = 0x00000000\n\tFILE_PIPE_MESSAGE_TYPE     = 0x00000001\n\n\tFILE_PIPE_ACCEPT_REMOTE_CLIENTS = 0x00000000\n\tFILE_PIPE_REJECT_REMOTE_CLIENTS = 0x00000002\n\n\tFILE_PIPE_TYPE_VALID_MASK = 0x00000003\n\n\tFILE_PIPE_BYTE_STREAM_MODE = 0x00000000\n\tFILE_PIPE_MESSAGE_MODE     = 0x00000001\n\n\tFILE_PIPE_QUEUE_OPERATION    = 0x00000000\n\tFILE_PIPE_COMPLETE_OPERATION = 0x00000001\n\n\tFILE_PIPE_INBOUND     = 0x00000000\n\tFILE_PIPE_OUTBOUND    = 0x00000001\n\tFILE_PIPE_FULL_DUPLEX = 0x00000002\n\n\tFILE_PIPE_DISCONNECTED_STATE = 0x00000001\n\tFILE_PIPE_LISTENING_STATE    = 0x00000002\n\tFILE_PIPE_CONNECTED_STATE    = 0x00000003\n\tFILE_PIPE_CLOSING_STATE      = 0x00000004\n\n\tFILE_PIPE_CLIENT_END = 0x00000000\n\tFILE_PIPE_SERVER_END = 0x00000001\n)\n\nconst (\n\t// FileInformationClass for NtSetInformationFile\n\tFileBasicInformation                         = 4\n\tFileRenameInformation                        = 10\n\tFileDispositionInformation                   = 13\n\tFilePositionInformation                      = 14\n\tFileEndOfFileInformation                     = 20\n\tFileValidDataLengthInformation               = 39\n\tFileShortNameInformation                     = 40\n\tFileIoPriorityHintInformation                = 43\n\tFileReplaceCompletionInformation             = 61\n\tFileDispositionInformationEx                 = 64\n\tFileCaseSensitiveInformation                 = 71\n\tFileLinkInformation                          = 72\n\tFileCaseSensitiveInformationForceAccessCheck = 75\n\tFileKnownFolderInformation                   = 76\n\n\t// Flags for FILE_RENAME_INFORMATION\n\tFILE_RENAME_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_RENAME_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE       = 0x00000004\n\tFILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_RENAME_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_RENAME_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_RENAME_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_RENAME_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_RENAME_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_RENAME_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_RENAME_FORCE_RESIZE_SR                      = 0x00000180\n\n\t// Flags for FILE_DISPOSITION_INFORMATION_EX\n\tFILE_DISPOSITION_DO_NOT_DELETE             = 0x00000000\n\tFILE_DISPOSITION_DELETE                    = 0x00000001\n\tFILE_DISPOSITION_POSIX_SEMANTICS           = 0x00000002\n\tFILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK = 0x00000004\n\tFILE_DISPOSITION_ON_CLOSE                  = 0x00000008\n\tFILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE = 0x00000010\n\n\t// Flags for FILE_CASE_SENSITIVE_INFORMATION\n\tFILE_CS_FLAG_CASE_SENSITIVE_DIR = 0x00000001\n\n\t// Flags for FILE_LINK_INFORMATION\n\tFILE_LINK_REPLACE_IF_EXISTS                    = 0x00000001\n\tFILE_LINK_POSIX_SEMANTICS                      = 0x00000002\n\tFILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE = 0x00000008\n\tFILE_LINK_NO_INCREASE_AVAILABLE_SPACE          = 0x00000010\n\tFILE_LINK_NO_DECREASE_AVAILABLE_SPACE          = 0x00000020\n\tFILE_LINK_PRESERVE_AVAILABLE_SPACE             = 0x00000030\n\tFILE_LINK_IGNORE_READONLY_ATTRIBUTE            = 0x00000040\n\tFILE_LINK_FORCE_RESIZE_TARGET_SR               = 0x00000080\n\tFILE_LINK_FORCE_RESIZE_SOURCE_SR               = 0x00000100\n\tFILE_LINK_FORCE_RESIZE_SR                      = 0x00000180\n)\n\n// ProcessInformationClasses for NtQueryInformationProcess and NtSetInformationProcess.\nconst (\n\tProcessBasicInformation = iota\n\tProcessQuotaLimits\n\tProcessIoCounters\n\tProcessVmCounters\n\tProcessTimes\n\tProcessBasePriority\n\tProcessRaisePriority\n\tProcessDebugPort\n\tProcessExceptionPort\n\tProcessAccessToken\n\tProcessLdtInformation\n\tProcessLdtSize\n\tProcessDefaultHardErrorMode\n\tProcessIoPortHandlers\n\tProcessPooledUsageAndLimits\n\tProcessWorkingSetWatch\n\tProcessUserModeIOPL\n\tProcessEnableAlignmentFaultFixup\n\tProcessPriorityClass\n\tProcessWx86Information\n\tProcessHandleCount\n\tProcessAffinityMask\n\tProcessPriorityBoost\n\tProcessDeviceMap\n\tProcessSessionInformation\n\tProcessForegroundInformation\n\tProcessWow64Information\n\tProcessImageFileName\n\tProcessLUIDDeviceMapsEnabled\n\tProcessBreakOnTermination\n\tProcessDebugObjectHandle\n\tProcessDebugFlags\n\tProcessHandleTracing\n\tProcessIoPriority\n\tProcessExecuteFlags\n\tProcessTlsInformation\n\tProcessCookie\n\tProcessImageInformation\n\tProcessCycleTime\n\tProcessPagePriority\n\tProcessInstrumentationCallback\n\tProcessThreadStackAllocation\n\tProcessWorkingSetWatchEx\n\tProcessImageFileNameWin32\n\tProcessImageFileMapping\n\tProcessAffinityUpdateMode\n\tProcessMemoryAllocationMode\n\tProcessGroupInformation\n\tProcessTokenVirtualizationEnabled\n\tProcessConsoleHostProcess\n\tProcessWindowInformation\n\tProcessHandleInformation\n\tProcessMitigationPolicy\n\tProcessDynamicFunctionTableInformation\n\tProcessHandleCheckingMode\n\tProcessKeepAliveCount\n\tProcessRevokeFileHandles\n\tProcessWorkingSetControl\n\tProcessHandleTable\n\tProcessCheckStackExtentsMode\n\tProcessCommandLineInformation\n\tProcessProtectionInformation\n\tProcessMemoryExhaustion\n\tProcessFaultInformation\n\tProcessTelemetryIdInformation\n\tProcessCommitReleaseInformation\n\tProcessDefaultCpuSetsInformation\n\tProcessAllowedCpuSetsInformation\n\tProcessSubsystemProcess\n\tProcessJobMemoryInformation\n\tProcessInPrivate\n\tProcessRaiseUMExceptionOnInvalidHandleClose\n\tProcessIumChallengeResponse\n\tProcessChildProcessInformation\n\tProcessHighGraphicsPriorityInformation\n\tProcessSubsystemInformation\n\tProcessEnergyValues\n\tProcessActivityThrottleState\n\tProcessActivityThrottlePolicy\n\tProcessWin32kSyscallFilterInformation\n\tProcessDisableSystemAllowedCpuSets\n\tProcessWakeInformation\n\tProcessEnergyTrackingState\n\tProcessManageWritesToExecutableMemory\n\tProcessCaptureTrustletLiveDump\n\tProcessTelemetryCoverage\n\tProcessEnclaveInformation\n\tProcessEnableReadWriteVmLogging\n\tProcessUptimeInformation\n\tProcessImageSection\n\tProcessDebugAuthInformation\n\tProcessSystemResourceManagement\n\tProcessSequenceNumber\n\tProcessLoaderDetour\n\tProcessSecurityDomainInformation\n\tProcessCombineSecurityDomainsInformation\n\tProcessEnableLogging\n\tProcessLeapSecondInformation\n\tProcessFiberShadowStackAllocation\n\tProcessFreeFiberShadowStackAllocation\n\tProcessAltSystemCallInformation\n\tProcessDynamicEHContinuationTargets\n\tProcessDynamicEnforcedCetCompatibleRanges\n)\n\ntype PROCESS_BASIC_INFORMATION struct {\n\tExitStatus                   NTStatus\n\tPebBaseAddress               *PEB\n\tAffinityMask                 uintptr\n\tBasePriority                 int32\n\tUniqueProcessId              uintptr\n\tInheritedFromUniqueProcessId uintptr\n}\n\ntype SYSTEM_PROCESS_INFORMATION struct {\n\tNextEntryOffset              uint32\n\tNumberOfThreads              uint32\n\tWorkingSetPrivateSize        int64\n\tHardFaultCount               uint32\n\tNumberOfThreadsHighWatermark uint32\n\tCycleTime                    uint64\n\tCreateTime                   int64\n\tUserTime                     int64\n\tKernelTime                   int64\n\tImageName                    NTUnicodeString\n\tBasePriority                 int32\n\tUniqueProcessID              uintptr\n\tInheritedFromUniqueProcessID uintptr\n\tHandleCount                  uint32\n\tSessionID                    uint32\n\tUniqueProcessKey             *uint32\n\tPeakVirtualSize              uintptr\n\tVirtualSize                  uintptr\n\tPageFaultCount               uint32\n\tPeakWorkingSetSize           uintptr\n\tWorkingSetSize               uintptr\n\tQuotaPeakPagedPoolUsage      uintptr\n\tQuotaPagedPoolUsage          uintptr\n\tQuotaPeakNonPagedPoolUsage   uintptr\n\tQuotaNonPagedPoolUsage       uintptr\n\tPagefileUsage                uintptr\n\tPeakPagefileUsage            uintptr\n\tPrivatePageCount             uintptr\n\tReadOperationCount           int64\n\tWriteOperationCount          int64\n\tOtherOperationCount          int64\n\tReadTransferCount            int64\n\tWriteTransferCount           int64\n\tOtherTransferCount           int64\n}\n\n// SystemInformationClasses for NtQuerySystemInformation and NtSetSystemInformation\nconst (\n\tSystemBasicInformation = iota\n\tSystemProcessorInformation\n\tSystemPerformanceInformation\n\tSystemTimeOfDayInformation\n\tSystemPathInformation\n\tSystemProcessInformation\n\tSystemCallCountInformation\n\tSystemDeviceInformation\n\tSystemProcessorPerformanceInformation\n\tSystemFlagsInformation\n\tSystemCallTimeInformation\n\tSystemModuleInformation\n\tSystemLocksInformation\n\tSystemStackTraceInformation\n\tSystemPagedPoolInformation\n\tSystemNonPagedPoolInformation\n\tSystemHandleInformation\n\tSystemObjectInformation\n\tSystemPageFileInformation\n\tSystemVdmInstemulInformation\n\tSystemVdmBopInformation\n\tSystemFileCacheInformation\n\tSystemPoolTagInformation\n\tSystemInterruptInformation\n\tSystemDpcBehaviorInformation\n\tSystemFullMemoryInformation\n\tSystemLoadGdiDriverInformation\n\tSystemUnloadGdiDriverInformation\n\tSystemTimeAdjustmentInformation\n\tSystemSummaryMemoryInformation\n\tSystemMirrorMemoryInformation\n\tSystemPerformanceTraceInformation\n\tsystemObsolete0\n\tSystemExceptionInformation\n\tSystemCrashDumpStateInformation\n\tSystemKernelDebuggerInformation\n\tSystemContextSwitchInformation\n\tSystemRegistryQuotaInformation\n\tSystemExtendServiceTableInformation\n\tSystemPrioritySeperation\n\tSystemVerifierAddDriverInformation\n\tSystemVerifierRemoveDriverInformation\n\tSystemProcessorIdleInformation\n\tSystemLegacyDriverInformation\n\tSystemCurrentTimeZoneInformation\n\tSystemLookasideInformation\n\tSystemTimeSlipNotification\n\tSystemSessionCreate\n\tSystemSessionDetach\n\tSystemSessionInformation\n\tSystemRangeStartInformation\n\tSystemVerifierInformation\n\tSystemVerifierThunkExtend\n\tSystemSessionProcessInformation\n\tSystemLoadGdiDriverInSystemSpace\n\tSystemNumaProcessorMap\n\tSystemPrefetcherInformation\n\tSystemExtendedProcessInformation\n\tSystemRecommendedSharedDataAlignment\n\tSystemComPlusPackage\n\tSystemNumaAvailableMemory\n\tSystemProcessorPowerInformation\n\tSystemEmulationBasicInformation\n\tSystemEmulationProcessorInformation\n\tSystemExtendedHandleInformation\n\tSystemLostDelayedWriteInformation\n\tSystemBigPoolInformation\n\tSystemSessionPoolTagInformation\n\tSystemSessionMappedViewInformation\n\tSystemHotpatchInformation\n\tSystemObjectSecurityMode\n\tSystemWatchdogTimerHandler\n\tSystemWatchdogTimerInformation\n\tSystemLogicalProcessorInformation\n\tSystemWow64SharedInformationObsolete\n\tSystemRegisterFirmwareTableInformationHandler\n\tSystemFirmwareTableInformation\n\tSystemModuleInformationEx\n\tSystemVerifierTriageInformation\n\tSystemSuperfetchInformation\n\tSystemMemoryListInformation\n\tSystemFileCacheInformationEx\n\tSystemThreadPriorityClientIdInformation\n\tSystemProcessorIdleCycleTimeInformation\n\tSystemVerifierCancellationInformation\n\tSystemProcessorPowerInformationEx\n\tSystemRefTraceInformation\n\tSystemSpecialPoolInformation\n\tSystemProcessIdInformation\n\tSystemErrorPortInformation\n\tSystemBootEnvironmentInformation\n\tSystemHypervisorInformation\n\tSystemVerifierInformationEx\n\tSystemTimeZoneInformation\n\tSystemImageFileExecutionOptionsInformation\n\tSystemCoverageInformation\n\tSystemPrefetchPatchInformation\n\tSystemVerifierFaultsInformation\n\tSystemSystemPartitionInformation\n\tSystemSystemDiskInformation\n\tSystemProcessorPerformanceDistribution\n\tSystemNumaProximityNodeInformation\n\tSystemDynamicTimeZoneInformation\n\tSystemCodeIntegrityInformation\n\tSystemProcessorMicrocodeUpdateInformation\n\tSystemProcessorBrandString\n\tSystemVirtualAddressInformation\n\tSystemLogicalProcessorAndGroupInformation\n\tSystemProcessorCycleTimeInformation\n\tSystemStoreInformation\n\tSystemRegistryAppendString\n\tSystemAitSamplingValue\n\tSystemVhdBootInformation\n\tSystemCpuQuotaInformation\n\tSystemNativeBasicInformation\n\tsystemSpare1\n\tSystemLowPriorityIoInformation\n\tSystemTpmBootEntropyInformation\n\tSystemVerifierCountersInformation\n\tSystemPagedPoolInformationEx\n\tSystemSystemPtesInformationEx\n\tSystemNodeDistanceInformation\n\tSystemAcpiAuditInformation\n\tSystemBasicPerformanceInformation\n\tSystemQueryPerformanceCounterInformation\n\tSystemSessionBigPoolInformation\n\tSystemBootGraphicsInformation\n\tSystemScrubPhysicalMemoryInformation\n\tSystemBadPageInformation\n\tSystemProcessorProfileControlArea\n\tSystemCombinePhysicalMemoryInformation\n\tSystemEntropyInterruptTimingCallback\n\tSystemConsoleInformation\n\tSystemPlatformBinaryInformation\n\tSystemThrottleNotificationInformation\n\tSystemHypervisorProcessorCountInformation\n\tSystemDeviceDataInformation\n\tSystemDeviceDataEnumerationInformation\n\tSystemMemoryTopologyInformation\n\tSystemMemoryChannelInformation\n\tSystemBootLogoInformation\n\tSystemProcessorPerformanceInformationEx\n\tsystemSpare0\n\tSystemSecureBootPolicyInformation\n\tSystemPageFileInformationEx\n\tSystemSecureBootInformation\n\tSystemEntropyInterruptTimingRawInformation\n\tSystemPortableWorkspaceEfiLauncherInformation\n\tSystemFullProcessInformation\n\tSystemKernelDebuggerInformationEx\n\tSystemBootMetadataInformation\n\tSystemSoftRebootInformation\n\tSystemElamCertificateInformation\n\tSystemOfflineDumpConfigInformation\n\tSystemProcessorFeaturesInformation\n\tSystemRegistryReconciliationInformation\n\tSystemEdidInformation\n\tSystemManufacturingInformation\n\tSystemEnergyEstimationConfigInformation\n\tSystemHypervisorDetailInformation\n\tSystemProcessorCycleStatsInformation\n\tSystemVmGenerationCountInformation\n\tSystemTrustedPlatformModuleInformation\n\tSystemKernelDebuggerFlags\n\tSystemCodeIntegrityPolicyInformation\n\tSystemIsolatedUserModeInformation\n\tSystemHardwareSecurityTestInterfaceResultsInformation\n\tSystemSingleModuleInformation\n\tSystemAllowedCpuSetsInformation\n\tSystemDmaProtectionInformation\n\tSystemInterruptCpuSetsInformation\n\tSystemSecureBootPolicyFullInformation\n\tSystemCodeIntegrityPolicyFullInformation\n\tSystemAffinitizedInterruptProcessorInformation\n\tSystemRootSiloInformation\n)\n\ntype RTL_PROCESS_MODULE_INFORMATION struct {\n\tSection          Handle\n\tMappedBase       uintptr\n\tImageBase        uintptr\n\tImageSize        uint32\n\tFlags            uint32\n\tLoadOrderIndex   uint16\n\tInitOrderIndex   uint16\n\tLoadCount        uint16\n\tOffsetToFileName uint16\n\tFullPathName     [256]byte\n}\n\ntype RTL_PROCESS_MODULES struct {\n\tNumberOfModules uint32\n\tModules         [1]RTL_PROCESS_MODULE_INFORMATION\n}\n\n// Constants for LocalAlloc flags.\nconst (\n\tLMEM_FIXED          = 0x0\n\tLMEM_MOVEABLE       = 0x2\n\tLMEM_NOCOMPACT      = 0x10\n\tLMEM_NODISCARD      = 0x20\n\tLMEM_ZEROINIT       = 0x40\n\tLMEM_MODIFY         = 0x80\n\tLMEM_DISCARDABLE    = 0xf00\n\tLMEM_VALID_FLAGS    = 0xf72\n\tLMEM_INVALID_HANDLE = 0x8000\n\tLHND                = LMEM_MOVEABLE | LMEM_ZEROINIT\n\tLPTR                = LMEM_FIXED | LMEM_ZEROINIT\n\tNONZEROLHND         = LMEM_MOVEABLE\n\tNONZEROLPTR         = LMEM_FIXED\n)\n\n// Constants for the CreateNamedPipe-family of functions.\nconst (\n\tPIPE_ACCESS_INBOUND  = 0x1\n\tPIPE_ACCESS_OUTBOUND = 0x2\n\tPIPE_ACCESS_DUPLEX   = 0x3\n\n\tPIPE_CLIENT_END = 0x0\n\tPIPE_SERVER_END = 0x1\n\n\tPIPE_WAIT                  = 0x0\n\tPIPE_NOWAIT                = 0x1\n\tPIPE_READMODE_BYTE         = 0x0\n\tPIPE_READMODE_MESSAGE      = 0x2\n\tPIPE_TYPE_BYTE             = 0x0\n\tPIPE_TYPE_MESSAGE          = 0x4\n\tPIPE_ACCEPT_REMOTE_CLIENTS = 0x0\n\tPIPE_REJECT_REMOTE_CLIENTS = 0x8\n\n\tPIPE_UNLIMITED_INSTANCES = 255\n)\n\n// Constants for security attributes when opening named pipes.\nconst (\n\tSECURITY_ANONYMOUS      = SecurityAnonymous << 16\n\tSECURITY_IDENTIFICATION = SecurityIdentification << 16\n\tSECURITY_IMPERSONATION  = SecurityImpersonation << 16\n\tSECURITY_DELEGATION     = SecurityDelegation << 16\n\n\tSECURITY_CONTEXT_TRACKING = 0x40000\n\tSECURITY_EFFECTIVE_ONLY   = 0x80000\n\n\tSECURITY_SQOS_PRESENT     = 0x100000\n\tSECURITY_VALID_SQOS_FLAGS = 0x1f0000\n)\n\n// ResourceID represents a 16-bit resource identifier, traditionally created with the MAKEINTRESOURCE macro.\ntype ResourceID uint16\n\n// ResourceIDOrString must be either a ResourceID, to specify a resource or resource type by ID,\n// or a string, to specify a resource or resource type by name.\ntype ResourceIDOrString any\n\n// Predefined resource names and types.\nvar (\n\t// Predefined names.\n\tCREATEPROCESS_MANIFEST_RESOURCE_ID                 ResourceID = 1\n\tISOLATIONAWARE_MANIFEST_RESOURCE_ID                ResourceID = 2\n\tISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID ResourceID = 3\n\tISOLATIONPOLICY_MANIFEST_RESOURCE_ID               ResourceID = 4\n\tISOLATIONPOLICY_BROWSER_MANIFEST_RESOURCE_ID       ResourceID = 5\n\tMINIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 1  // inclusive\n\tMAXIMUM_RESERVED_MANIFEST_RESOURCE_ID              ResourceID = 16 // inclusive\n\n\t// Predefined types.\n\tRT_CURSOR       ResourceID = 1\n\tRT_BITMAP       ResourceID = 2\n\tRT_ICON         ResourceID = 3\n\tRT_MENU         ResourceID = 4\n\tRT_DIALOG       ResourceID = 5\n\tRT_STRING       ResourceID = 6\n\tRT_FONTDIR      ResourceID = 7\n\tRT_FONT         ResourceID = 8\n\tRT_ACCELERATOR  ResourceID = 9\n\tRT_RCDATA       ResourceID = 10\n\tRT_MESSAGETABLE ResourceID = 11\n\tRT_GROUP_CURSOR ResourceID = 12\n\tRT_GROUP_ICON   ResourceID = 14\n\tRT_VERSION      ResourceID = 16\n\tRT_DLGINCLUDE   ResourceID = 17\n\tRT_PLUGPLAY     ResourceID = 19\n\tRT_VXD          ResourceID = 20\n\tRT_ANICURSOR    ResourceID = 21\n\tRT_ANIICON      ResourceID = 22\n\tRT_HTML         ResourceID = 23\n\tRT_MANIFEST     ResourceID = 24\n)\n\ntype VS_FIXEDFILEINFO struct {\n\tSignature        uint32\n\tStrucVersion     uint32\n\tFileVersionMS    uint32\n\tFileVersionLS    uint32\n\tProductVersionMS uint32\n\tProductVersionLS uint32\n\tFileFlagsMask    uint32\n\tFileFlags        uint32\n\tFileOS           uint32\n\tFileType         uint32\n\tFileSubtype      uint32\n\tFileDateMS       uint32\n\tFileDateLS       uint32\n}\n\ntype COAUTHIDENTITY struct {\n\tUser           *uint16\n\tUserLength     uint32\n\tDomain         *uint16\n\tDomainLength   uint32\n\tPassword       *uint16\n\tPasswordLength uint32\n\tFlags          uint32\n}\n\ntype COAUTHINFO struct {\n\tAuthnSvc           uint32\n\tAuthzSvc           uint32\n\tServerPrincName    *uint16\n\tAuthnLevel         uint32\n\tImpersonationLevel uint32\n\tAuthIdentityData   *COAUTHIDENTITY\n\tCapabilities       uint32\n}\n\ntype COSERVERINFO struct {\n\tReserved1 uint32\n\tAame      *uint16\n\tAuthInfo  *COAUTHINFO\n\tReserved2 uint32\n}\n\ntype BIND_OPTS3 struct {\n\tCbStruct          uint32\n\tFlags             uint32\n\tMode              uint32\n\tTickCountDeadline uint32\n\tTrackFlags        uint32\n\tClassContext      uint32\n\tLocale            uint32\n\tServerInfo        *COSERVERINFO\n\tHwnd              HWND\n}\n\nconst (\n\tCLSCTX_INPROC_SERVER          = 0x1\n\tCLSCTX_INPROC_HANDLER         = 0x2\n\tCLSCTX_LOCAL_SERVER           = 0x4\n\tCLSCTX_INPROC_SERVER16        = 0x8\n\tCLSCTX_REMOTE_SERVER          = 0x10\n\tCLSCTX_INPROC_HANDLER16       = 0x20\n\tCLSCTX_RESERVED1              = 0x40\n\tCLSCTX_RESERVED2              = 0x80\n\tCLSCTX_RESERVED3              = 0x100\n\tCLSCTX_RESERVED4              = 0x200\n\tCLSCTX_NO_CODE_DOWNLOAD       = 0x400\n\tCLSCTX_RESERVED5              = 0x800\n\tCLSCTX_NO_CUSTOM_MARSHAL      = 0x1000\n\tCLSCTX_ENABLE_CODE_DOWNLOAD   = 0x2000\n\tCLSCTX_NO_FAILURE_LOG         = 0x4000\n\tCLSCTX_DISABLE_AAA            = 0x8000\n\tCLSCTX_ENABLE_AAA             = 0x10000\n\tCLSCTX_FROM_DEFAULT_CONTEXT   = 0x20000\n\tCLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000\n\tCLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000\n\tCLSCTX_ENABLE_CLOAKING        = 0x100000\n\tCLSCTX_APPCONTAINER           = 0x400000\n\tCLSCTX_ACTIVATE_AAA_AS_IU     = 0x800000\n\tCLSCTX_PS_DLL                 = 0x80000000\n\n\tCOINIT_MULTITHREADED     = 0x0\n\tCOINIT_APARTMENTTHREADED = 0x2\n\tCOINIT_DISABLE_OLE1DDE   = 0x4\n\tCOINIT_SPEED_OVER_MEMORY = 0x8\n)\n\n// Flag for QueryFullProcessImageName.\nconst PROCESS_NAME_NATIVE = 1\n\ntype ModuleInfo struct {\n\tBaseOfDll   uintptr\n\tSizeOfImage uint32\n\tEntryPoint  uintptr\n}\n\nconst ALL_PROCESSOR_GROUPS = 0xFFFF\n\ntype Rect struct {\n\tLeft   int32\n\tTop    int32\n\tRight  int32\n\tBottom int32\n}\n\ntype GUIThreadInfo struct {\n\tSize        uint32\n\tFlags       uint32\n\tActive      HWND\n\tFocus       HWND\n\tCapture     HWND\n\tMenuOwner   HWND\n\tMoveSize    HWND\n\tCaretHandle HWND\n\tCaretRect   Rect\n}\n\nconst (\n\tDWMWA_NCRENDERING_ENABLED            = 1\n\tDWMWA_NCRENDERING_POLICY             = 2\n\tDWMWA_TRANSITIONS_FORCEDISABLED      = 3\n\tDWMWA_ALLOW_NCPAINT                  = 4\n\tDWMWA_CAPTION_BUTTON_BOUNDS          = 5\n\tDWMWA_NONCLIENT_RTL_LAYOUT           = 6\n\tDWMWA_FORCE_ICONIC_REPRESENTATION    = 7\n\tDWMWA_FLIP3D_POLICY                  = 8\n\tDWMWA_EXTENDED_FRAME_BOUNDS          = 9\n\tDWMWA_HAS_ICONIC_BITMAP              = 10\n\tDWMWA_DISALLOW_PEEK                  = 11\n\tDWMWA_EXCLUDED_FROM_PEEK             = 12\n\tDWMWA_CLOAK                          = 13\n\tDWMWA_CLOAKED                        = 14\n\tDWMWA_FREEZE_REPRESENTATION          = 15\n\tDWMWA_PASSIVE_UPDATE_MODE            = 16\n\tDWMWA_USE_HOSTBACKDROPBRUSH          = 17\n\tDWMWA_USE_IMMERSIVE_DARK_MODE        = 20\n\tDWMWA_WINDOW_CORNER_PREFERENCE       = 33\n\tDWMWA_BORDER_COLOR                   = 34\n\tDWMWA_CAPTION_COLOR                  = 35\n\tDWMWA_TEXT_COLOR                     = 36\n\tDWMWA_VISIBLE_FRAME_BORDER_THICKNESS = 37\n)\n\ntype WSAQUERYSET struct {\n\tSize                uint32\n\tServiceInstanceName *uint16\n\tServiceClassId      *GUID\n\tVersion             *WSAVersion\n\tComment             *uint16\n\tNameSpace           uint32\n\tNSProviderId        *GUID\n\tContext             *uint16\n\tNumberOfProtocols   uint32\n\tAfpProtocols        *AFProtocols\n\tQueryString         *uint16\n\tNumberOfCsAddrs     uint32\n\tSaBuffer            *CSAddrInfo\n\tOutputFlags         uint32\n\tBlob                *BLOB\n}\n\ntype WSAVersion struct {\n\tVersion                 uint32\n\tEnumerationOfComparison int32\n}\n\ntype AFProtocols struct {\n\tAddressFamily int32\n\tProtocol      int32\n}\n\ntype CSAddrInfo struct {\n\tLocalAddr  SocketAddress\n\tRemoteAddr SocketAddress\n\tSocketType int32\n\tProtocol   int32\n}\n\ntype BLOB struct {\n\tSize     uint32\n\tBlobData *byte\n}\n"
  },
  {
    "path": "gossh/sys/windows/types_windows_386.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "gossh/sys/windows/types_windows_amd64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "gossh/sys/windows/types_windows_arm.go",
    "content": "// Copyright 2018 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tPort    uint16\n\tProto   *byte\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n\t_                       uint32 // pad to 8 byte boundary\n}\n"
  },
  {
    "path": "gossh/sys/windows/types_windows_arm64.go",
    "content": "// Copyright 2011 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\npackage windows\n\ntype WSAData struct {\n\tVersion      uint16\n\tHighVersion  uint16\n\tMaxSockets   uint16\n\tMaxUdpDg     uint16\n\tVendorInfo   *byte\n\tDescription  [WSADESCRIPTION_LEN + 1]byte\n\tSystemStatus [WSASYS_STATUS_LEN + 1]byte\n}\n\ntype Servent struct {\n\tName    *byte\n\tAliases **byte\n\tProto   *byte\n\tPort    uint16\n}\n\ntype JOBOBJECT_BASIC_LIMIT_INFORMATION struct {\n\tPerProcessUserTimeLimit int64\n\tPerJobUserTimeLimit     int64\n\tLimitFlags              uint32\n\tMinimumWorkingSetSize   uintptr\n\tMaximumWorkingSetSize   uintptr\n\tActiveProcessLimit      uint32\n\tAffinity                uintptr\n\tPriorityClass           uint32\n\tSchedulingClass         uint32\n}\n"
  },
  {
    "path": "gossh/sys/windows/zerrors_windows.go",
    "content": "// Code generated by 'mkerrors.bash'; DO NOT EDIT.\n\npackage windows\n\nimport \"syscall\"\n\nconst (\n\tFACILITY_NULL                                                                           = 0\n\tFACILITY_RPC                                                                            = 1\n\tFACILITY_DISPATCH                                                                       = 2\n\tFACILITY_STORAGE                                                                        = 3\n\tFACILITY_ITF                                                                            = 4\n\tFACILITY_WIN32                                                                          = 7\n\tFACILITY_WINDOWS                                                                        = 8\n\tFACILITY_SSPI                                                                           = 9\n\tFACILITY_SECURITY                                                                       = 9\n\tFACILITY_CONTROL                                                                        = 10\n\tFACILITY_CERT                                                                           = 11\n\tFACILITY_INTERNET                                                                       = 12\n\tFACILITY_MEDIASERVER                                                                    = 13\n\tFACILITY_MSMQ                                                                           = 14\n\tFACILITY_SETUPAPI                                                                       = 15\n\tFACILITY_SCARD                                                                          = 16\n\tFACILITY_COMPLUS                                                                        = 17\n\tFACILITY_AAF                                                                            = 18\n\tFACILITY_URT                                                                            = 19\n\tFACILITY_ACS                                                                            = 20\n\tFACILITY_DPLAY                                                                          = 21\n\tFACILITY_UMI                                                                            = 22\n\tFACILITY_SXS                                                                            = 23\n\tFACILITY_WINDOWS_CE                                                                     = 24\n\tFACILITY_HTTP                                                                           = 25\n\tFACILITY_USERMODE_COMMONLOG                                                             = 26\n\tFACILITY_WER                                                                            = 27\n\tFACILITY_USERMODE_FILTER_MANAGER                                                        = 31\n\tFACILITY_BACKGROUNDCOPY                                                                 = 32\n\tFACILITY_CONFIGURATION                                                                  = 33\n\tFACILITY_WIA                                                                            = 33\n\tFACILITY_STATE_MANAGEMENT                                                               = 34\n\tFACILITY_METADIRECTORY                                                                  = 35\n\tFACILITY_WINDOWSUPDATE                                                                  = 36\n\tFACILITY_DIRECTORYSERVICE                                                               = 37\n\tFACILITY_GRAPHICS                                                                       = 38\n\tFACILITY_SHELL                                                                          = 39\n\tFACILITY_NAP                                                                            = 39\n\tFACILITY_TPM_SERVICES                                                                   = 40\n\tFACILITY_TPM_SOFTWARE                                                                   = 41\n\tFACILITY_UI                                                                             = 42\n\tFACILITY_XAML                                                                           = 43\n\tFACILITY_ACTION_QUEUE                                                                   = 44\n\tFACILITY_PLA                                                                            = 48\n\tFACILITY_WINDOWS_SETUP                                                                  = 48\n\tFACILITY_FVE                                                                            = 49\n\tFACILITY_FWP                                                                            = 50\n\tFACILITY_WINRM                                                                          = 51\n\tFACILITY_NDIS                                                                           = 52\n\tFACILITY_USERMODE_HYPERVISOR                                                            = 53\n\tFACILITY_CMI                                                                            = 54\n\tFACILITY_USERMODE_VIRTUALIZATION                                                        = 55\n\tFACILITY_USERMODE_VOLMGR                                                                = 56\n\tFACILITY_BCD                                                                            = 57\n\tFACILITY_USERMODE_VHD                                                                   = 58\n\tFACILITY_USERMODE_HNS                                                                   = 59\n\tFACILITY_SDIAG                                                                          = 60\n\tFACILITY_WEBSERVICES                                                                    = 61\n\tFACILITY_WINPE                                                                          = 61\n\tFACILITY_WPN                                                                            = 62\n\tFACILITY_WINDOWS_STORE                                                                  = 63\n\tFACILITY_INPUT                                                                          = 64\n\tFACILITY_EAP                                                                            = 66\n\tFACILITY_WINDOWS_DEFENDER                                                               = 80\n\tFACILITY_OPC                                                                            = 81\n\tFACILITY_XPS                                                                            = 82\n\tFACILITY_MBN                                                                            = 84\n\tFACILITY_POWERSHELL                                                                     = 84\n\tFACILITY_RAS                                                                            = 83\n\tFACILITY_P2P_INT                                                                        = 98\n\tFACILITY_P2P                                                                            = 99\n\tFACILITY_DAF                                                                            = 100\n\tFACILITY_BLUETOOTH_ATT                                                                  = 101\n\tFACILITY_AUDIO                                                                          = 102\n\tFACILITY_STATEREPOSITORY                                                                = 103\n\tFACILITY_VISUALCPP                                                                      = 109\n\tFACILITY_SCRIPT                                                                         = 112\n\tFACILITY_PARSE                                                                          = 113\n\tFACILITY_BLB                                                                            = 120\n\tFACILITY_BLB_CLI                                                                        = 121\n\tFACILITY_WSBAPP                                                                         = 122\n\tFACILITY_BLBUI                                                                          = 128\n\tFACILITY_USN                                                                            = 129\n\tFACILITY_USERMODE_VOLSNAP                                                               = 130\n\tFACILITY_TIERING                                                                        = 131\n\tFACILITY_WSB_ONLINE                                                                     = 133\n\tFACILITY_ONLINE_ID                                                                      = 134\n\tFACILITY_DEVICE_UPDATE_AGENT                                                            = 135\n\tFACILITY_DRVSERVICING                                                                   = 136\n\tFACILITY_DLS                                                                            = 153\n\tFACILITY_DELIVERY_OPTIMIZATION                                                          = 208\n\tFACILITY_USERMODE_SPACES                                                                = 231\n\tFACILITY_USER_MODE_SECURITY_CORE                                                        = 232\n\tFACILITY_USERMODE_LICENSING                                                             = 234\n\tFACILITY_SOS                                                                            = 160\n\tFACILITY_DEBUGGERS                                                                      = 176\n\tFACILITY_SPP                                                                            = 256\n\tFACILITY_RESTORE                                                                        = 256\n\tFACILITY_DMSERVER                                                                       = 256\n\tFACILITY_DEPLOYMENT_SERVICES_SERVER                                                     = 257\n\tFACILITY_DEPLOYMENT_SERVICES_IMAGING                                                    = 258\n\tFACILITY_DEPLOYMENT_SERVICES_MANAGEMENT                                                 = 259\n\tFACILITY_DEPLOYMENT_SERVICES_UTIL                                                       = 260\n\tFACILITY_DEPLOYMENT_SERVICES_BINLSVC                                                    = 261\n\tFACILITY_DEPLOYMENT_SERVICES_PXE                                                        = 263\n\tFACILITY_DEPLOYMENT_SERVICES_TFTP                                                       = 264\n\tFACILITY_DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT                                       = 272\n\tFACILITY_DEPLOYMENT_SERVICES_DRIVER_PROVISIONING                                        = 278\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_SERVER                                           = 289\n\tFACILITY_DEPLOYMENT_SERVICES_MULTICAST_CLIENT                                           = 290\n\tFACILITY_DEPLOYMENT_SERVICES_CONTENT_PROVIDER                                           = 293\n\tFACILITY_LINGUISTIC_SERVICES                                                            = 305\n\tFACILITY_AUDIOSTREAMING                                                                 = 1094\n\tFACILITY_ACCELERATOR                                                                    = 1536\n\tFACILITY_WMAAECMA                                                                       = 1996\n\tFACILITY_DIRECTMUSIC                                                                    = 2168\n\tFACILITY_DIRECT3D10                                                                     = 2169\n\tFACILITY_DXGI                                                                           = 2170\n\tFACILITY_DXGI_DDI                                                                       = 2171\n\tFACILITY_DIRECT3D11                                                                     = 2172\n\tFACILITY_DIRECT3D11_DEBUG                                                               = 2173\n\tFACILITY_DIRECT3D12                                                                     = 2174\n\tFACILITY_DIRECT3D12_DEBUG                                                               = 2175\n\tFACILITY_LEAP                                                                           = 2184\n\tFACILITY_AUDCLNT                                                                        = 2185\n\tFACILITY_WINCODEC_DWRITE_DWM                                                            = 2200\n\tFACILITY_WINML                                                                          = 2192\n\tFACILITY_DIRECT2D                                                                       = 2201\n\tFACILITY_DEFRAG                                                                         = 2304\n\tFACILITY_USERMODE_SDBUS                                                                 = 2305\n\tFACILITY_JSCRIPT                                                                        = 2306\n\tFACILITY_PIDGENX                                                                        = 2561\n\tFACILITY_EAS                                                                            = 85\n\tFACILITY_WEB                                                                            = 885\n\tFACILITY_WEB_SOCKET                                                                     = 886\n\tFACILITY_MOBILE                                                                         = 1793\n\tFACILITY_SQLITE                                                                         = 1967\n\tFACILITY_UTC                                                                            = 1989\n\tFACILITY_WEP                                                                            = 2049\n\tFACILITY_SYNCENGINE                                                                     = 2050\n\tFACILITY_XBOX                                                                           = 2339\n\tFACILITY_GAME                                                                           = 2340\n\tFACILITY_PIX                                                                            = 2748\n\tERROR_SUCCESS                                                             syscall.Errno = 0\n\tNO_ERROR                                                                                = 0\n\tSEC_E_OK                                                                  Handle        = 0x00000000\n\tERROR_INVALID_FUNCTION                                                    syscall.Errno = 1\n\tERROR_FILE_NOT_FOUND                                                      syscall.Errno = 2\n\tERROR_PATH_NOT_FOUND                                                      syscall.Errno = 3\n\tERROR_TOO_MANY_OPEN_FILES                                                 syscall.Errno = 4\n\tERROR_ACCESS_DENIED                                                       syscall.Errno = 5\n\tERROR_INVALID_HANDLE                                                      syscall.Errno = 6\n\tERROR_ARENA_TRASHED                                                       syscall.Errno = 7\n\tERROR_NOT_ENOUGH_MEMORY                                                   syscall.Errno = 8\n\tERROR_INVALID_BLOCK                                                       syscall.Errno = 9\n\tERROR_BAD_ENVIRONMENT                                                     syscall.Errno = 10\n\tERROR_BAD_FORMAT                                                          syscall.Errno = 11\n\tERROR_INVALID_ACCESS                                                      syscall.Errno = 12\n\tERROR_INVALID_DATA                                                        syscall.Errno = 13\n\tERROR_OUTOFMEMORY                                                         syscall.Errno = 14\n\tERROR_INVALID_DRIVE                                                       syscall.Errno = 15\n\tERROR_CURRENT_DIRECTORY                                                   syscall.Errno = 16\n\tERROR_NOT_SAME_DEVICE                                                     syscall.Errno = 17\n\tERROR_NO_MORE_FILES                                                       syscall.Errno = 18\n\tERROR_WRITE_PROTECT                                                       syscall.Errno = 19\n\tERROR_BAD_UNIT                                                            syscall.Errno = 20\n\tERROR_NOT_READY                                                           syscall.Errno = 21\n\tERROR_BAD_COMMAND                                                         syscall.Errno = 22\n\tERROR_CRC                                                                 syscall.Errno = 23\n\tERROR_BAD_LENGTH                                                          syscall.Errno = 24\n\tERROR_SEEK                                                                syscall.Errno = 25\n\tERROR_NOT_DOS_DISK                                                        syscall.Errno = 26\n\tERROR_SECTOR_NOT_FOUND                                                    syscall.Errno = 27\n\tERROR_OUT_OF_PAPER                                                        syscall.Errno = 28\n\tERROR_WRITE_FAULT                                                         syscall.Errno = 29\n\tERROR_READ_FAULT                                                          syscall.Errno = 30\n\tERROR_GEN_FAILURE                                                         syscall.Errno = 31\n\tERROR_SHARING_VIOLATION                                                   syscall.Errno = 32\n\tERROR_LOCK_VIOLATION                                                      syscall.Errno = 33\n\tERROR_WRONG_DISK                                                          syscall.Errno = 34\n\tERROR_SHARING_BUFFER_EXCEEDED                                             syscall.Errno = 36\n\tERROR_HANDLE_EOF                                                          syscall.Errno = 38\n\tERROR_HANDLE_DISK_FULL                                                    syscall.Errno = 39\n\tERROR_NOT_SUPPORTED                                                       syscall.Errno = 50\n\tERROR_REM_NOT_LIST                                                        syscall.Errno = 51\n\tERROR_DUP_NAME                                                            syscall.Errno = 52\n\tERROR_BAD_NETPATH                                                         syscall.Errno = 53\n\tERROR_NETWORK_BUSY                                                        syscall.Errno = 54\n\tERROR_DEV_NOT_EXIST                                                       syscall.Errno = 55\n\tERROR_TOO_MANY_CMDS                                                       syscall.Errno = 56\n\tERROR_ADAP_HDW_ERR                                                        syscall.Errno = 57\n\tERROR_BAD_NET_RESP                                                        syscall.Errno = 58\n\tERROR_UNEXP_NET_ERR                                                       syscall.Errno = 59\n\tERROR_BAD_REM_ADAP                                                        syscall.Errno = 60\n\tERROR_PRINTQ_FULL                                                         syscall.Errno = 61\n\tERROR_NO_SPOOL_SPACE                                                      syscall.Errno = 62\n\tERROR_PRINT_CANCELLED                                                     syscall.Errno = 63\n\tERROR_NETNAME_DELETED                                                     syscall.Errno = 64\n\tERROR_NETWORK_ACCESS_DENIED                                               syscall.Errno = 65\n\tERROR_BAD_DEV_TYPE                                                        syscall.Errno = 66\n\tERROR_BAD_NET_NAME                                                        syscall.Errno = 67\n\tERROR_TOO_MANY_NAMES                                                      syscall.Errno = 68\n\tERROR_TOO_MANY_SESS                                                       syscall.Errno = 69\n\tERROR_SHARING_PAUSED                                                      syscall.Errno = 70\n\tERROR_REQ_NOT_ACCEP                                                       syscall.Errno = 71\n\tERROR_REDIR_PAUSED                                                        syscall.Errno = 72\n\tERROR_FILE_EXISTS                                                         syscall.Errno = 80\n\tERROR_CANNOT_MAKE                                                         syscall.Errno = 82\n\tERROR_FAIL_I24                                                            syscall.Errno = 83\n\tERROR_OUT_OF_STRUCTURES                                                   syscall.Errno = 84\n\tERROR_ALREADY_ASSIGNED                                                    syscall.Errno = 85\n\tERROR_INVALID_PASSWORD                                                    syscall.Errno = 86\n\tERROR_INVALID_PARAMETER                                                   syscall.Errno = 87\n\tERROR_NET_WRITE_FAULT                                                     syscall.Errno = 88\n\tERROR_NO_PROC_SLOTS                                                       syscall.Errno = 89\n\tERROR_TOO_MANY_SEMAPHORES                                                 syscall.Errno = 100\n\tERROR_EXCL_SEM_ALREADY_OWNED                                              syscall.Errno = 101\n\tERROR_SEM_IS_SET                                                          syscall.Errno = 102\n\tERROR_TOO_MANY_SEM_REQUESTS                                               syscall.Errno = 103\n\tERROR_INVALID_AT_INTERRUPT_TIME                                           syscall.Errno = 104\n\tERROR_SEM_OWNER_DIED                                                      syscall.Errno = 105\n\tERROR_SEM_USER_LIMIT                                                      syscall.Errno = 106\n\tERROR_DISK_CHANGE                                                         syscall.Errno = 107\n\tERROR_DRIVE_LOCKED                                                        syscall.Errno = 108\n\tERROR_BROKEN_PIPE                                                         syscall.Errno = 109\n\tERROR_OPEN_FAILED                                                         syscall.Errno = 110\n\tERROR_BUFFER_OVERFLOW                                                     syscall.Errno = 111\n\tERROR_DISK_FULL                                                           syscall.Errno = 112\n\tERROR_NO_MORE_SEARCH_HANDLES                                              syscall.Errno = 113\n\tERROR_INVALID_TARGET_HANDLE                                               syscall.Errno = 114\n\tERROR_INVALID_CATEGORY                                                    syscall.Errno = 117\n\tERROR_INVALID_VERIFY_SWITCH                                               syscall.Errno = 118\n\tERROR_BAD_DRIVER_LEVEL                                                    syscall.Errno = 119\n\tERROR_CALL_NOT_IMPLEMENTED                                                syscall.Errno = 120\n\tERROR_SEM_TIMEOUT                                                         syscall.Errno = 121\n\tERROR_INSUFFICIENT_BUFFER                                                 syscall.Errno = 122\n\tERROR_INVALID_NAME                                                        syscall.Errno = 123\n\tERROR_INVALID_LEVEL                                                       syscall.Errno = 124\n\tERROR_NO_VOLUME_LABEL                                                     syscall.Errno = 125\n\tERROR_MOD_NOT_FOUND                                                       syscall.Errno = 126\n\tERROR_PROC_NOT_FOUND                                                      syscall.Errno = 127\n\tERROR_WAIT_NO_CHILDREN                                                    syscall.Errno = 128\n\tERROR_CHILD_NOT_COMPLETE                                                  syscall.Errno = 129\n\tERROR_DIRECT_ACCESS_HANDLE                                                syscall.Errno = 130\n\tERROR_NEGATIVE_SEEK                                                       syscall.Errno = 131\n\tERROR_SEEK_ON_DEVICE                                                      syscall.Errno = 132\n\tERROR_IS_JOIN_TARGET                                                      syscall.Errno = 133\n\tERROR_IS_JOINED                                                           syscall.Errno = 134\n\tERROR_IS_SUBSTED                                                          syscall.Errno = 135\n\tERROR_NOT_JOINED                                                          syscall.Errno = 136\n\tERROR_NOT_SUBSTED                                                         syscall.Errno = 137\n\tERROR_JOIN_TO_JOIN                                                        syscall.Errno = 138\n\tERROR_SUBST_TO_SUBST                                                      syscall.Errno = 139\n\tERROR_JOIN_TO_SUBST                                                       syscall.Errno = 140\n\tERROR_SUBST_TO_JOIN                                                       syscall.Errno = 141\n\tERROR_BUSY_DRIVE                                                          syscall.Errno = 142\n\tERROR_SAME_DRIVE                                                          syscall.Errno = 143\n\tERROR_DIR_NOT_ROOT                                                        syscall.Errno = 144\n\tERROR_DIR_NOT_EMPTY                                                       syscall.Errno = 145\n\tERROR_IS_SUBST_PATH                                                       syscall.Errno = 146\n\tERROR_IS_JOIN_PATH                                                        syscall.Errno = 147\n\tERROR_PATH_BUSY                                                           syscall.Errno = 148\n\tERROR_IS_SUBST_TARGET                                                     syscall.Errno = 149\n\tERROR_SYSTEM_TRACE                                                        syscall.Errno = 150\n\tERROR_INVALID_EVENT_COUNT                                                 syscall.Errno = 151\n\tERROR_TOO_MANY_MUXWAITERS                                                 syscall.Errno = 152\n\tERROR_INVALID_LIST_FORMAT                                                 syscall.Errno = 153\n\tERROR_LABEL_TOO_LONG                                                      syscall.Errno = 154\n\tERROR_TOO_MANY_TCBS                                                       syscall.Errno = 155\n\tERROR_SIGNAL_REFUSED                                                      syscall.Errno = 156\n\tERROR_DISCARDED                                                           syscall.Errno = 157\n\tERROR_NOT_LOCKED                                                          syscall.Errno = 158\n\tERROR_BAD_THREADID_ADDR                                                   syscall.Errno = 159\n\tERROR_BAD_ARGUMENTS                                                       syscall.Errno = 160\n\tERROR_BAD_PATHNAME                                                        syscall.Errno = 161\n\tERROR_SIGNAL_PENDING                                                      syscall.Errno = 162\n\tERROR_MAX_THRDS_REACHED                                                   syscall.Errno = 164\n\tERROR_LOCK_FAILED                                                         syscall.Errno = 167\n\tERROR_BUSY                                                                syscall.Errno = 170\n\tERROR_DEVICE_SUPPORT_IN_PROGRESS                                          syscall.Errno = 171\n\tERROR_CANCEL_VIOLATION                                                    syscall.Errno = 173\n\tERROR_ATOMIC_LOCKS_NOT_SUPPORTED                                          syscall.Errno = 174\n\tERROR_INVALID_SEGMENT_NUMBER                                              syscall.Errno = 180\n\tERROR_INVALID_ORDINAL                                                     syscall.Errno = 182\n\tERROR_ALREADY_EXISTS                                                      syscall.Errno = 183\n\tERROR_INVALID_FLAG_NUMBER                                                 syscall.Errno = 186\n\tERROR_SEM_NOT_FOUND                                                       syscall.Errno = 187\n\tERROR_INVALID_STARTING_CODESEG                                            syscall.Errno = 188\n\tERROR_INVALID_STACKSEG                                                    syscall.Errno = 189\n\tERROR_INVALID_MODULETYPE                                                  syscall.Errno = 190\n\tERROR_INVALID_EXE_SIGNATURE                                               syscall.Errno = 191\n\tERROR_EXE_MARKED_INVALID                                                  syscall.Errno = 192\n\tERROR_BAD_EXE_FORMAT                                                      syscall.Errno = 193\n\tERROR_ITERATED_DATA_EXCEEDS_64k                                           syscall.Errno = 194\n\tERROR_INVALID_MINALLOCSIZE                                                syscall.Errno = 195\n\tERROR_DYNLINK_FROM_INVALID_RING                                           syscall.Errno = 196\n\tERROR_IOPL_NOT_ENABLED                                                    syscall.Errno = 197\n\tERROR_INVALID_SEGDPL                                                      syscall.Errno = 198\n\tERROR_AUTODATASEG_EXCEEDS_64k                                             syscall.Errno = 199\n\tERROR_RING2SEG_MUST_BE_MOVABLE                                            syscall.Errno = 200\n\tERROR_RELOC_CHAIN_XEEDS_SEGLIM                                            syscall.Errno = 201\n\tERROR_INFLOOP_IN_RELOC_CHAIN                                              syscall.Errno = 202\n\tERROR_ENVVAR_NOT_FOUND                                                    syscall.Errno = 203\n\tERROR_NO_SIGNAL_SENT                                                      syscall.Errno = 205\n\tERROR_FILENAME_EXCED_RANGE                                                syscall.Errno = 206\n\tERROR_RING2_STACK_IN_USE                                                  syscall.Errno = 207\n\tERROR_META_EXPANSION_TOO_LONG                                             syscall.Errno = 208\n\tERROR_INVALID_SIGNAL_NUMBER                                               syscall.Errno = 209\n\tERROR_THREAD_1_INACTIVE                                                   syscall.Errno = 210\n\tERROR_LOCKED                                                              syscall.Errno = 212\n\tERROR_TOO_MANY_MODULES                                                    syscall.Errno = 214\n\tERROR_NESTING_NOT_ALLOWED                                                 syscall.Errno = 215\n\tERROR_EXE_MACHINE_TYPE_MISMATCH                                           syscall.Errno = 216\n\tERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY                                     syscall.Errno = 217\n\tERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY                              syscall.Errno = 218\n\tERROR_FILE_CHECKED_OUT                                                    syscall.Errno = 220\n\tERROR_CHECKOUT_REQUIRED                                                   syscall.Errno = 221\n\tERROR_BAD_FILE_TYPE                                                       syscall.Errno = 222\n\tERROR_FILE_TOO_LARGE                                                      syscall.Errno = 223\n\tERROR_FORMS_AUTH_REQUIRED                                                 syscall.Errno = 224\n\tERROR_VIRUS_INFECTED                                                      syscall.Errno = 225\n\tERROR_VIRUS_DELETED                                                       syscall.Errno = 226\n\tERROR_PIPE_LOCAL                                                          syscall.Errno = 229\n\tERROR_BAD_PIPE                                                            syscall.Errno = 230\n\tERROR_PIPE_BUSY                                                           syscall.Errno = 231\n\tERROR_NO_DATA                                                             syscall.Errno = 232\n\tERROR_PIPE_NOT_CONNECTED                                                  syscall.Errno = 233\n\tERROR_MORE_DATA                                                           syscall.Errno = 234\n\tERROR_NO_WORK_DONE                                                        syscall.Errno = 235\n\tERROR_VC_DISCONNECTED                                                     syscall.Errno = 240\n\tERROR_INVALID_EA_NAME                                                     syscall.Errno = 254\n\tERROR_EA_LIST_INCONSISTENT                                                syscall.Errno = 255\n\tWAIT_TIMEOUT                                                              syscall.Errno = 258\n\tERROR_NO_MORE_ITEMS                                                       syscall.Errno = 259\n\tERROR_CANNOT_COPY                                                         syscall.Errno = 266\n\tERROR_DIRECTORY                                                           syscall.Errno = 267\n\tERROR_EAS_DIDNT_FIT                                                       syscall.Errno = 275\n\tERROR_EA_FILE_CORRUPT                                                     syscall.Errno = 276\n\tERROR_EA_TABLE_FULL                                                       syscall.Errno = 277\n\tERROR_INVALID_EA_HANDLE                                                   syscall.Errno = 278\n\tERROR_EAS_NOT_SUPPORTED                                                   syscall.Errno = 282\n\tERROR_NOT_OWNER                                                           syscall.Errno = 288\n\tERROR_TOO_MANY_POSTS                                                      syscall.Errno = 298\n\tERROR_PARTIAL_COPY                                                        syscall.Errno = 299\n\tERROR_OPLOCK_NOT_GRANTED                                                  syscall.Errno = 300\n\tERROR_INVALID_OPLOCK_PROTOCOL                                             syscall.Errno = 301\n\tERROR_DISK_TOO_FRAGMENTED                                                 syscall.Errno = 302\n\tERROR_DELETE_PENDING                                                      syscall.Errno = 303\n\tERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING                syscall.Errno = 304\n\tERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                   syscall.Errno = 305\n\tERROR_SECURITY_STREAM_IS_INCONSISTENT                                     syscall.Errno = 306\n\tERROR_INVALID_LOCK_RANGE                                                  syscall.Errno = 307\n\tERROR_IMAGE_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 308\n\tERROR_NOTIFICATION_GUID_ALREADY_DEFINED                                   syscall.Errno = 309\n\tERROR_INVALID_EXCEPTION_HANDLER                                           syscall.Errno = 310\n\tERROR_DUPLICATE_PRIVILEGES                                                syscall.Errno = 311\n\tERROR_NO_RANGES_PROCESSED                                                 syscall.Errno = 312\n\tERROR_NOT_ALLOWED_ON_SYSTEM_FILE                                          syscall.Errno = 313\n\tERROR_DISK_RESOURCES_EXHAUSTED                                            syscall.Errno = 314\n\tERROR_INVALID_TOKEN                                                       syscall.Errno = 315\n\tERROR_DEVICE_FEATURE_NOT_SUPPORTED                                        syscall.Errno = 316\n\tERROR_MR_MID_NOT_FOUND                                                    syscall.Errno = 317\n\tERROR_SCOPE_NOT_FOUND                                                     syscall.Errno = 318\n\tERROR_UNDEFINED_SCOPE                                                     syscall.Errno = 319\n\tERROR_INVALID_CAP                                                         syscall.Errno = 320\n\tERROR_DEVICE_UNREACHABLE                                                  syscall.Errno = 321\n\tERROR_DEVICE_NO_RESOURCES                                                 syscall.Errno = 322\n\tERROR_DATA_CHECKSUM_ERROR                                                 syscall.Errno = 323\n\tERROR_INTERMIXED_KERNEL_EA_OPERATION                                      syscall.Errno = 324\n\tERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED                                       syscall.Errno = 326\n\tERROR_OFFSET_ALIGNMENT_VIOLATION                                          syscall.Errno = 327\n\tERROR_INVALID_FIELD_IN_PARAMETER_LIST                                     syscall.Errno = 328\n\tERROR_OPERATION_IN_PROGRESS                                               syscall.Errno = 329\n\tERROR_BAD_DEVICE_PATH                                                     syscall.Errno = 330\n\tERROR_TOO_MANY_DESCRIPTORS                                                syscall.Errno = 331\n\tERROR_SCRUB_DATA_DISABLED                                                 syscall.Errno = 332\n\tERROR_NOT_REDUNDANT_STORAGE                                               syscall.Errno = 333\n\tERROR_RESIDENT_FILE_NOT_SUPPORTED                                         syscall.Errno = 334\n\tERROR_COMPRESSED_FILE_NOT_SUPPORTED                                       syscall.Errno = 335\n\tERROR_DIRECTORY_NOT_SUPPORTED                                             syscall.Errno = 336\n\tERROR_NOT_READ_FROM_COPY                                                  syscall.Errno = 337\n\tERROR_FT_WRITE_FAILURE                                                    syscall.Errno = 338\n\tERROR_FT_DI_SCAN_REQUIRED                                                 syscall.Errno = 339\n\tERROR_INVALID_KERNEL_INFO_VERSION                                         syscall.Errno = 340\n\tERROR_INVALID_PEP_INFO_VERSION                                            syscall.Errno = 341\n\tERROR_OBJECT_NOT_EXTERNALLY_BACKED                                        syscall.Errno = 342\n\tERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                   syscall.Errno = 343\n\tERROR_COMPRESSION_NOT_BENEFICIAL                                          syscall.Errno = 344\n\tERROR_STORAGE_TOPOLOGY_ID_MISMATCH                                        syscall.Errno = 345\n\tERROR_BLOCKED_BY_PARENTAL_CONTROLS                                        syscall.Errno = 346\n\tERROR_BLOCK_TOO_MANY_REFERENCES                                           syscall.Errno = 347\n\tERROR_MARKED_TO_DISALLOW_WRITES                                           syscall.Errno = 348\n\tERROR_ENCLAVE_FAILURE                                                     syscall.Errno = 349\n\tERROR_FAIL_NOACTION_REBOOT                                                syscall.Errno = 350\n\tERROR_FAIL_SHUTDOWN                                                       syscall.Errno = 351\n\tERROR_FAIL_RESTART                                                        syscall.Errno = 352\n\tERROR_MAX_SESSIONS_REACHED                                                syscall.Errno = 353\n\tERROR_NETWORK_ACCESS_DENIED_EDP                                           syscall.Errno = 354\n\tERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                   syscall.Errno = 355\n\tERROR_EDP_POLICY_DENIES_OPERATION                                         syscall.Errno = 356\n\tERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED                                    syscall.Errno = 357\n\tERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                               syscall.Errno = 358\n\tERROR_DEVICE_IN_MAINTENANCE                                               syscall.Errno = 359\n\tERROR_NOT_SUPPORTED_ON_DAX                                                syscall.Errno = 360\n\tERROR_DAX_MAPPING_EXISTS                                                  syscall.Errno = 361\n\tERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING                                     syscall.Errno = 362\n\tERROR_CLOUD_FILE_METADATA_CORRUPT                                         syscall.Errno = 363\n\tERROR_CLOUD_FILE_METADATA_TOO_LARGE                                       syscall.Errno = 364\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                  syscall.Errno = 365\n\tERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                          syscall.Errno = 366\n\tERROR_CHILD_PROCESS_BLOCKED                                               syscall.Errno = 367\n\tERROR_STORAGE_LOST_DATA_PERSISTENCE                                       syscall.Errno = 368\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                              syscall.Errno = 369\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                         syscall.Errno = 370\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY                                     syscall.Errno = 371\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                         syscall.Errno = 372\n\tERROR_GDI_HANDLE_LEAK                                                     syscall.Errno = 373\n\tERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                  syscall.Errno = 374\n\tERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                           syscall.Errno = 375\n\tERROR_NOT_A_CLOUD_FILE                                                    syscall.Errno = 376\n\tERROR_CLOUD_FILE_NOT_IN_SYNC                                              syscall.Errno = 377\n\tERROR_CLOUD_FILE_ALREADY_CONNECTED                                        syscall.Errno = 378\n\tERROR_CLOUD_FILE_NOT_SUPPORTED                                            syscall.Errno = 379\n\tERROR_CLOUD_FILE_INVALID_REQUEST                                          syscall.Errno = 380\n\tERROR_CLOUD_FILE_READ_ONLY_VOLUME                                         syscall.Errno = 381\n\tERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                  syscall.Errno = 382\n\tERROR_CLOUD_FILE_VALIDATION_FAILED                                        syscall.Errno = 383\n\tERROR_SMB1_NOT_AVAILABLE                                                  syscall.Errno = 384\n\tERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                        syscall.Errno = 385\n\tERROR_CLOUD_FILE_AUTHENTICATION_FAILED                                    syscall.Errno = 386\n\tERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES                                   syscall.Errno = 387\n\tERROR_CLOUD_FILE_NETWORK_UNAVAILABLE                                      syscall.Errno = 388\n\tERROR_CLOUD_FILE_UNSUCCESSFUL                                             syscall.Errno = 389\n\tERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                      syscall.Errno = 390\n\tERROR_CLOUD_FILE_IN_USE                                                   syscall.Errno = 391\n\tERROR_CLOUD_FILE_PINNED                                                   syscall.Errno = 392\n\tERROR_CLOUD_FILE_REQUEST_ABORTED                                          syscall.Errno = 393\n\tERROR_CLOUD_FILE_PROPERTY_CORRUPT                                         syscall.Errno = 394\n\tERROR_CLOUD_FILE_ACCESS_DENIED                                            syscall.Errno = 395\n\tERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                   syscall.Errno = 396\n\tERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                   syscall.Errno = 397\n\tERROR_CLOUD_FILE_REQUEST_CANCELED                                         syscall.Errno = 398\n\tERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED                                       syscall.Errno = 399\n\tERROR_THREAD_MODE_ALREADY_BACKGROUND                                      syscall.Errno = 400\n\tERROR_THREAD_MODE_NOT_BACKGROUND                                          syscall.Errno = 401\n\tERROR_PROCESS_MODE_ALREADY_BACKGROUND                                     syscall.Errno = 402\n\tERROR_PROCESS_MODE_NOT_BACKGROUND                                         syscall.Errno = 403\n\tERROR_CLOUD_FILE_PROVIDER_TERMINATED                                      syscall.Errno = 404\n\tERROR_NOT_A_CLOUD_SYNC_ROOT                                               syscall.Errno = 405\n\tERROR_FILE_PROTECTED_UNDER_DPL                                            syscall.Errno = 406\n\tERROR_VOLUME_NOT_CLUSTER_ALIGNED                                          syscall.Errno = 407\n\tERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                              syscall.Errno = 408\n\tERROR_APPX_FILE_NOT_ENCRYPTED                                             syscall.Errno = 409\n\tERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                  syscall.Errno = 410\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                        syscall.Errno = 411\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                         syscall.Errno = 412\n\tERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                         syscall.Errno = 413\n\tERROR_LINUX_SUBSYSTEM_NOT_PRESENT                                         syscall.Errno = 414\n\tERROR_FT_READ_FAILURE                                                     syscall.Errno = 415\n\tERROR_STORAGE_RESERVE_ID_INVALID                                          syscall.Errno = 416\n\tERROR_STORAGE_RESERVE_DOES_NOT_EXIST                                      syscall.Errno = 417\n\tERROR_STORAGE_RESERVE_ALREADY_EXISTS                                      syscall.Errno = 418\n\tERROR_STORAGE_RESERVE_NOT_EMPTY                                           syscall.Errno = 419\n\tERROR_NOT_A_DAX_VOLUME                                                    syscall.Errno = 420\n\tERROR_NOT_DAX_MAPPABLE                                                    syscall.Errno = 421\n\tERROR_TIME_SENSITIVE_THREAD                                               syscall.Errno = 422\n\tERROR_DPL_NOT_SUPPORTED_FOR_USER                                          syscall.Errno = 423\n\tERROR_CASE_DIFFERING_NAMES_IN_DIR                                         syscall.Errno = 424\n\tERROR_FILE_NOT_SUPPORTED                                                  syscall.Errno = 425\n\tERROR_CLOUD_FILE_REQUEST_TIMEOUT                                          syscall.Errno = 426\n\tERROR_NO_TASK_QUEUE                                                       syscall.Errno = 427\n\tERROR_SRC_SRV_DLL_LOAD_FAILED                                             syscall.Errno = 428\n\tERROR_NOT_SUPPORTED_WITH_BTT                                              syscall.Errno = 429\n\tERROR_ENCRYPTION_DISABLED                                                 syscall.Errno = 430\n\tERROR_ENCRYPTING_METADATA_DISALLOWED                                      syscall.Errno = 431\n\tERROR_CANT_CLEAR_ENCRYPTION_FLAG                                          syscall.Errno = 432\n\tERROR_NO_SUCH_DEVICE                                                      syscall.Errno = 433\n\tERROR_CAPAUTHZ_NOT_DEVUNLOCKED                                            syscall.Errno = 450\n\tERROR_CAPAUTHZ_CHANGE_TYPE                                                syscall.Errno = 451\n\tERROR_CAPAUTHZ_NOT_PROVISIONED                                            syscall.Errno = 452\n\tERROR_CAPAUTHZ_NOT_AUTHORIZED                                             syscall.Errno = 453\n\tERROR_CAPAUTHZ_NO_POLICY                                                  syscall.Errno = 454\n\tERROR_CAPAUTHZ_DB_CORRUPTED                                               syscall.Errno = 455\n\tERROR_CAPAUTHZ_SCCD_INVALID_CATALOG                                       syscall.Errno = 456\n\tERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY                                        syscall.Errno = 457\n\tERROR_CAPAUTHZ_SCCD_PARSE_ERROR                                           syscall.Errno = 458\n\tERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED                                     syscall.Errno = 459\n\tERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH                                   syscall.Errno = 460\n\tERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT                                     syscall.Errno = 480\n\tERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT                             syscall.Errno = 481\n\tERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT                           syscall.Errno = 482\n\tERROR_DEVICE_HARDWARE_ERROR                                               syscall.Errno = 483\n\tERROR_INVALID_ADDRESS                                                     syscall.Errno = 487\n\tERROR_VRF_CFG_ENABLED                                                     syscall.Errno = 1183\n\tERROR_PARTITION_TERMINATING                                               syscall.Errno = 1184\n\tERROR_USER_PROFILE_LOAD                                                   syscall.Errno = 500\n\tERROR_ARITHMETIC_OVERFLOW                                                 syscall.Errno = 534\n\tERROR_PIPE_CONNECTED                                                      syscall.Errno = 535\n\tERROR_PIPE_LISTENING                                                      syscall.Errno = 536\n\tERROR_VERIFIER_STOP                                                       syscall.Errno = 537\n\tERROR_ABIOS_ERROR                                                         syscall.Errno = 538\n\tERROR_WX86_WARNING                                                        syscall.Errno = 539\n\tERROR_WX86_ERROR                                                          syscall.Errno = 540\n\tERROR_TIMER_NOT_CANCELED                                                  syscall.Errno = 541\n\tERROR_UNWIND                                                              syscall.Errno = 542\n\tERROR_BAD_STACK                                                           syscall.Errno = 543\n\tERROR_INVALID_UNWIND_TARGET                                               syscall.Errno = 544\n\tERROR_INVALID_PORT_ATTRIBUTES                                             syscall.Errno = 545\n\tERROR_PORT_MESSAGE_TOO_LONG                                               syscall.Errno = 546\n\tERROR_INVALID_QUOTA_LOWER                                                 syscall.Errno = 547\n\tERROR_DEVICE_ALREADY_ATTACHED                                             syscall.Errno = 548\n\tERROR_INSTRUCTION_MISALIGNMENT                                            syscall.Errno = 549\n\tERROR_PROFILING_NOT_STARTED                                               syscall.Errno = 550\n\tERROR_PROFILING_NOT_STOPPED                                               syscall.Errno = 551\n\tERROR_COULD_NOT_INTERPRET                                                 syscall.Errno = 552\n\tERROR_PROFILING_AT_LIMIT                                                  syscall.Errno = 553\n\tERROR_CANT_WAIT                                                           syscall.Errno = 554\n\tERROR_CANT_TERMINATE_SELF                                                 syscall.Errno = 555\n\tERROR_UNEXPECTED_MM_CREATE_ERR                                            syscall.Errno = 556\n\tERROR_UNEXPECTED_MM_MAP_ERROR                                             syscall.Errno = 557\n\tERROR_UNEXPECTED_MM_EXTEND_ERR                                            syscall.Errno = 558\n\tERROR_BAD_FUNCTION_TABLE                                                  syscall.Errno = 559\n\tERROR_NO_GUID_TRANSLATION                                                 syscall.Errno = 560\n\tERROR_INVALID_LDT_SIZE                                                    syscall.Errno = 561\n\tERROR_INVALID_LDT_OFFSET                                                  syscall.Errno = 563\n\tERROR_INVALID_LDT_DESCRIPTOR                                              syscall.Errno = 564\n\tERROR_TOO_MANY_THREADS                                                    syscall.Errno = 565\n\tERROR_THREAD_NOT_IN_PROCESS                                               syscall.Errno = 566\n\tERROR_PAGEFILE_QUOTA_EXCEEDED                                             syscall.Errno = 567\n\tERROR_LOGON_SERVER_CONFLICT                                               syscall.Errno = 568\n\tERROR_SYNCHRONIZATION_REQUIRED                                            syscall.Errno = 569\n\tERROR_NET_OPEN_FAILED                                                     syscall.Errno = 570\n\tERROR_IO_PRIVILEGE_FAILED                                                 syscall.Errno = 571\n\tERROR_CONTROL_C_EXIT                                                      syscall.Errno = 572\n\tERROR_MISSING_SYSTEMFILE                                                  syscall.Errno = 573\n\tERROR_UNHANDLED_EXCEPTION                                                 syscall.Errno = 574\n\tERROR_APP_INIT_FAILURE                                                    syscall.Errno = 575\n\tERROR_PAGEFILE_CREATE_FAILED                                              syscall.Errno = 576\n\tERROR_INVALID_IMAGE_HASH                                                  syscall.Errno = 577\n\tERROR_NO_PAGEFILE                                                         syscall.Errno = 578\n\tERROR_ILLEGAL_FLOAT_CONTEXT                                               syscall.Errno = 579\n\tERROR_NO_EVENT_PAIR                                                       syscall.Errno = 580\n\tERROR_DOMAIN_CTRLR_CONFIG_ERROR                                           syscall.Errno = 581\n\tERROR_ILLEGAL_CHARACTER                                                   syscall.Errno = 582\n\tERROR_UNDEFINED_CHARACTER                                                 syscall.Errno = 583\n\tERROR_FLOPPY_VOLUME                                                       syscall.Errno = 584\n\tERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT                                    syscall.Errno = 585\n\tERROR_BACKUP_CONTROLLER                                                   syscall.Errno = 586\n\tERROR_MUTANT_LIMIT_EXCEEDED                                               syscall.Errno = 587\n\tERROR_FS_DRIVER_REQUIRED                                                  syscall.Errno = 588\n\tERROR_CANNOT_LOAD_REGISTRY_FILE                                           syscall.Errno = 589\n\tERROR_DEBUG_ATTACH_FAILED                                                 syscall.Errno = 590\n\tERROR_SYSTEM_PROCESS_TERMINATED                                           syscall.Errno = 591\n\tERROR_DATA_NOT_ACCEPTED                                                   syscall.Errno = 592\n\tERROR_VDM_HARD_ERROR                                                      syscall.Errno = 593\n\tERROR_DRIVER_CANCEL_TIMEOUT                                               syscall.Errno = 594\n\tERROR_REPLY_MESSAGE_MISMATCH                                              syscall.Errno = 595\n\tERROR_LOST_WRITEBEHIND_DATA                                               syscall.Errno = 596\n\tERROR_CLIENT_SERVER_PARAMETERS_INVALID                                    syscall.Errno = 597\n\tERROR_NOT_TINY_STREAM                                                     syscall.Errno = 598\n\tERROR_STACK_OVERFLOW_READ                                                 syscall.Errno = 599\n\tERROR_CONVERT_TO_LARGE                                                    syscall.Errno = 600\n\tERROR_FOUND_OUT_OF_SCOPE                                                  syscall.Errno = 601\n\tERROR_ALLOCATE_BUCKET                                                     syscall.Errno = 602\n\tERROR_MARSHALL_OVERFLOW                                                   syscall.Errno = 603\n\tERROR_INVALID_VARIANT                                                     syscall.Errno = 604\n\tERROR_BAD_COMPRESSION_BUFFER                                              syscall.Errno = 605\n\tERROR_AUDIT_FAILED                                                        syscall.Errno = 606\n\tERROR_TIMER_RESOLUTION_NOT_SET                                            syscall.Errno = 607\n\tERROR_INSUFFICIENT_LOGON_INFO                                             syscall.Errno = 608\n\tERROR_BAD_DLL_ENTRYPOINT                                                  syscall.Errno = 609\n\tERROR_BAD_SERVICE_ENTRYPOINT                                              syscall.Errno = 610\n\tERROR_IP_ADDRESS_CONFLICT1                                                syscall.Errno = 611\n\tERROR_IP_ADDRESS_CONFLICT2                                                syscall.Errno = 612\n\tERROR_REGISTRY_QUOTA_LIMIT                                                syscall.Errno = 613\n\tERROR_NO_CALLBACK_ACTIVE                                                  syscall.Errno = 614\n\tERROR_PWD_TOO_SHORT                                                       syscall.Errno = 615\n\tERROR_PWD_TOO_RECENT                                                      syscall.Errno = 616\n\tERROR_PWD_HISTORY_CONFLICT                                                syscall.Errno = 617\n\tERROR_UNSUPPORTED_COMPRESSION                                             syscall.Errno = 618\n\tERROR_INVALID_HW_PROFILE                                                  syscall.Errno = 619\n\tERROR_INVALID_PLUGPLAY_DEVICE_PATH                                        syscall.Errno = 620\n\tERROR_QUOTA_LIST_INCONSISTENT                                             syscall.Errno = 621\n\tERROR_EVALUATION_EXPIRATION                                               syscall.Errno = 622\n\tERROR_ILLEGAL_DLL_RELOCATION                                              syscall.Errno = 623\n\tERROR_DLL_INIT_FAILED_LOGOFF                                              syscall.Errno = 624\n\tERROR_VALIDATE_CONTINUE                                                   syscall.Errno = 625\n\tERROR_NO_MORE_MATCHES                                                     syscall.Errno = 626\n\tERROR_RANGE_LIST_CONFLICT                                                 syscall.Errno = 627\n\tERROR_SERVER_SID_MISMATCH                                                 syscall.Errno = 628\n\tERROR_CANT_ENABLE_DENY_ONLY                                               syscall.Errno = 629\n\tERROR_FLOAT_MULTIPLE_FAULTS                                               syscall.Errno = 630\n\tERROR_FLOAT_MULTIPLE_TRAPS                                                syscall.Errno = 631\n\tERROR_NOINTERFACE                                                         syscall.Errno = 632\n\tERROR_DRIVER_FAILED_SLEEP                                                 syscall.Errno = 633\n\tERROR_CORRUPT_SYSTEM_FILE                                                 syscall.Errno = 634\n\tERROR_COMMITMENT_MINIMUM                                                  syscall.Errno = 635\n\tERROR_PNP_RESTART_ENUMERATION                                             syscall.Errno = 636\n\tERROR_SYSTEM_IMAGE_BAD_SIGNATURE                                          syscall.Errno = 637\n\tERROR_PNP_REBOOT_REQUIRED                                                 syscall.Errno = 638\n\tERROR_INSUFFICIENT_POWER                                                  syscall.Errno = 639\n\tERROR_MULTIPLE_FAULT_VIOLATION                                            syscall.Errno = 640\n\tERROR_SYSTEM_SHUTDOWN                                                     syscall.Errno = 641\n\tERROR_PORT_NOT_SET                                                        syscall.Errno = 642\n\tERROR_DS_VERSION_CHECK_FAILURE                                            syscall.Errno = 643\n\tERROR_RANGE_NOT_FOUND                                                     syscall.Errno = 644\n\tERROR_NOT_SAFE_MODE_DRIVER                                                syscall.Errno = 646\n\tERROR_FAILED_DRIVER_ENTRY                                                 syscall.Errno = 647\n\tERROR_DEVICE_ENUMERATION_ERROR                                            syscall.Errno = 648\n\tERROR_MOUNT_POINT_NOT_RESOLVED                                            syscall.Errno = 649\n\tERROR_INVALID_DEVICE_OBJECT_PARAMETER                                     syscall.Errno = 650\n\tERROR_MCA_OCCURED                                                         syscall.Errno = 651\n\tERROR_DRIVER_DATABASE_ERROR                                               syscall.Errno = 652\n\tERROR_SYSTEM_HIVE_TOO_LARGE                                               syscall.Errno = 653\n\tERROR_DRIVER_FAILED_PRIOR_UNLOAD                                          syscall.Errno = 654\n\tERROR_VOLSNAP_PREPARE_HIBERNATE                                           syscall.Errno = 655\n\tERROR_HIBERNATION_FAILURE                                                 syscall.Errno = 656\n\tERROR_PWD_TOO_LONG                                                        syscall.Errno = 657\n\tERROR_FILE_SYSTEM_LIMITATION                                              syscall.Errno = 665\n\tERROR_ASSERTION_FAILURE                                                   syscall.Errno = 668\n\tERROR_ACPI_ERROR                                                          syscall.Errno = 669\n\tERROR_WOW_ASSERTION                                                       syscall.Errno = 670\n\tERROR_PNP_BAD_MPS_TABLE                                                   syscall.Errno = 671\n\tERROR_PNP_TRANSLATION_FAILED                                              syscall.Errno = 672\n\tERROR_PNP_IRQ_TRANSLATION_FAILED                                          syscall.Errno = 673\n\tERROR_PNP_INVALID_ID                                                      syscall.Errno = 674\n\tERROR_WAKE_SYSTEM_DEBUGGER                                                syscall.Errno = 675\n\tERROR_HANDLES_CLOSED                                                      syscall.Errno = 676\n\tERROR_EXTRANEOUS_INFORMATION                                              syscall.Errno = 677\n\tERROR_RXACT_COMMIT_NECESSARY                                              syscall.Errno = 678\n\tERROR_MEDIA_CHECK                                                         syscall.Errno = 679\n\tERROR_GUID_SUBSTITUTION_MADE                                              syscall.Errno = 680\n\tERROR_STOPPED_ON_SYMLINK                                                  syscall.Errno = 681\n\tERROR_LONGJUMP                                                            syscall.Errno = 682\n\tERROR_PLUGPLAY_QUERY_VETOED                                               syscall.Errno = 683\n\tERROR_UNWIND_CONSOLIDATE                                                  syscall.Errno = 684\n\tERROR_REGISTRY_HIVE_RECOVERED                                             syscall.Errno = 685\n\tERROR_DLL_MIGHT_BE_INSECURE                                               syscall.Errno = 686\n\tERROR_DLL_MIGHT_BE_INCOMPATIBLE                                           syscall.Errno = 687\n\tERROR_DBG_EXCEPTION_NOT_HANDLED                                           syscall.Errno = 688\n\tERROR_DBG_REPLY_LATER                                                     syscall.Errno = 689\n\tERROR_DBG_UNABLE_TO_PROVIDE_HANDLE                                        syscall.Errno = 690\n\tERROR_DBG_TERMINATE_THREAD                                                syscall.Errno = 691\n\tERROR_DBG_TERMINATE_PROCESS                                               syscall.Errno = 692\n\tERROR_DBG_CONTROL_C                                                       syscall.Errno = 693\n\tERROR_DBG_PRINTEXCEPTION_C                                                syscall.Errno = 694\n\tERROR_DBG_RIPEXCEPTION                                                    syscall.Errno = 695\n\tERROR_DBG_CONTROL_BREAK                                                   syscall.Errno = 696\n\tERROR_DBG_COMMAND_EXCEPTION                                               syscall.Errno = 697\n\tERROR_OBJECT_NAME_EXISTS                                                  syscall.Errno = 698\n\tERROR_THREAD_WAS_SUSPENDED                                                syscall.Errno = 699\n\tERROR_IMAGE_NOT_AT_BASE                                                   syscall.Errno = 700\n\tERROR_RXACT_STATE_CREATED                                                 syscall.Errno = 701\n\tERROR_SEGMENT_NOTIFICATION                                                syscall.Errno = 702\n\tERROR_BAD_CURRENT_DIRECTORY                                               syscall.Errno = 703\n\tERROR_FT_READ_RECOVERY_FROM_BACKUP                                        syscall.Errno = 704\n\tERROR_FT_WRITE_RECOVERY                                                   syscall.Errno = 705\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH                                         syscall.Errno = 706\n\tERROR_RECEIVE_PARTIAL                                                     syscall.Errno = 707\n\tERROR_RECEIVE_EXPEDITED                                                   syscall.Errno = 708\n\tERROR_RECEIVE_PARTIAL_EXPEDITED                                           syscall.Errno = 709\n\tERROR_EVENT_DONE                                                          syscall.Errno = 710\n\tERROR_EVENT_PENDING                                                       syscall.Errno = 711\n\tERROR_CHECKING_FILE_SYSTEM                                                syscall.Errno = 712\n\tERROR_FATAL_APP_EXIT                                                      syscall.Errno = 713\n\tERROR_PREDEFINED_HANDLE                                                   syscall.Errno = 714\n\tERROR_WAS_UNLOCKED                                                        syscall.Errno = 715\n\tERROR_SERVICE_NOTIFICATION                                                syscall.Errno = 716\n\tERROR_WAS_LOCKED                                                          syscall.Errno = 717\n\tERROR_LOG_HARD_ERROR                                                      syscall.Errno = 718\n\tERROR_ALREADY_WIN32                                                       syscall.Errno = 719\n\tERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                     syscall.Errno = 720\n\tERROR_NO_YIELD_PERFORMED                                                  syscall.Errno = 721\n\tERROR_TIMER_RESUME_IGNORED                                                syscall.Errno = 722\n\tERROR_ARBITRATION_UNHANDLED                                               syscall.Errno = 723\n\tERROR_CARDBUS_NOT_SUPPORTED                                               syscall.Errno = 724\n\tERROR_MP_PROCESSOR_MISMATCH                                               syscall.Errno = 725\n\tERROR_HIBERNATED                                                          syscall.Errno = 726\n\tERROR_RESUME_HIBERNATION                                                  syscall.Errno = 727\n\tERROR_FIRMWARE_UPDATED                                                    syscall.Errno = 728\n\tERROR_DRIVERS_LEAKING_LOCKED_PAGES                                        syscall.Errno = 729\n\tERROR_WAKE_SYSTEM                                                         syscall.Errno = 730\n\tERROR_WAIT_1                                                              syscall.Errno = 731\n\tERROR_WAIT_2                                                              syscall.Errno = 732\n\tERROR_WAIT_3                                                              syscall.Errno = 733\n\tERROR_WAIT_63                                                             syscall.Errno = 734\n\tERROR_ABANDONED_WAIT_0                                                    syscall.Errno = 735\n\tERROR_ABANDONED_WAIT_63                                                   syscall.Errno = 736\n\tERROR_USER_APC                                                            syscall.Errno = 737\n\tERROR_KERNEL_APC                                                          syscall.Errno = 738\n\tERROR_ALERTED                                                             syscall.Errno = 739\n\tERROR_ELEVATION_REQUIRED                                                  syscall.Errno = 740\n\tERROR_REPARSE                                                             syscall.Errno = 741\n\tERROR_OPLOCK_BREAK_IN_PROGRESS                                            syscall.Errno = 742\n\tERROR_VOLUME_MOUNTED                                                      syscall.Errno = 743\n\tERROR_RXACT_COMMITTED                                                     syscall.Errno = 744\n\tERROR_NOTIFY_CLEANUP                                                      syscall.Errno = 745\n\tERROR_PRIMARY_TRANSPORT_CONNECT_FAILED                                    syscall.Errno = 746\n\tERROR_PAGE_FAULT_TRANSITION                                               syscall.Errno = 747\n\tERROR_PAGE_FAULT_DEMAND_ZERO                                              syscall.Errno = 748\n\tERROR_PAGE_FAULT_COPY_ON_WRITE                                            syscall.Errno = 749\n\tERROR_PAGE_FAULT_GUARD_PAGE                                               syscall.Errno = 750\n\tERROR_PAGE_FAULT_PAGING_FILE                                              syscall.Errno = 751\n\tERROR_CACHE_PAGE_LOCKED                                                   syscall.Errno = 752\n\tERROR_CRASH_DUMP                                                          syscall.Errno = 753\n\tERROR_BUFFER_ALL_ZEROS                                                    syscall.Errno = 754\n\tERROR_REPARSE_OBJECT                                                      syscall.Errno = 755\n\tERROR_RESOURCE_REQUIREMENTS_CHANGED                                       syscall.Errno = 756\n\tERROR_TRANSLATION_COMPLETE                                                syscall.Errno = 757\n\tERROR_NOTHING_TO_TERMINATE                                                syscall.Errno = 758\n\tERROR_PROCESS_NOT_IN_JOB                                                  syscall.Errno = 759\n\tERROR_PROCESS_IN_JOB                                                      syscall.Errno = 760\n\tERROR_VOLSNAP_HIBERNATE_READY                                             syscall.Errno = 761\n\tERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                  syscall.Errno = 762\n\tERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED                                  syscall.Errno = 763\n\tERROR_INTERRUPT_STILL_CONNECTED                                           syscall.Errno = 764\n\tERROR_WAIT_FOR_OPLOCK                                                     syscall.Errno = 765\n\tERROR_DBG_EXCEPTION_HANDLED                                               syscall.Errno = 766\n\tERROR_DBG_CONTINUE                                                        syscall.Errno = 767\n\tERROR_CALLBACK_POP_STACK                                                  syscall.Errno = 768\n\tERROR_COMPRESSION_DISABLED                                                syscall.Errno = 769\n\tERROR_CANTFETCHBACKWARDS                                                  syscall.Errno = 770\n\tERROR_CANTSCROLLBACKWARDS                                                 syscall.Errno = 771\n\tERROR_ROWSNOTRELEASED                                                     syscall.Errno = 772\n\tERROR_BAD_ACCESSOR_FLAGS                                                  syscall.Errno = 773\n\tERROR_ERRORS_ENCOUNTERED                                                  syscall.Errno = 774\n\tERROR_NOT_CAPABLE                                                         syscall.Errno = 775\n\tERROR_REQUEST_OUT_OF_SEQUENCE                                             syscall.Errno = 776\n\tERROR_VERSION_PARSE_ERROR                                                 syscall.Errno = 777\n\tERROR_BADSTARTPOSITION                                                    syscall.Errno = 778\n\tERROR_MEMORY_HARDWARE                                                     syscall.Errno = 779\n\tERROR_DISK_REPAIR_DISABLED                                                syscall.Errno = 780\n\tERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE             syscall.Errno = 781\n\tERROR_SYSTEM_POWERSTATE_TRANSITION                                        syscall.Errno = 782\n\tERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                                syscall.Errno = 783\n\tERROR_MCA_EXCEPTION                                                       syscall.Errno = 784\n\tERROR_ACCESS_AUDIT_BY_POLICY                                              syscall.Errno = 785\n\tERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                               syscall.Errno = 786\n\tERROR_ABANDON_HIBERFILE                                                   syscall.Errno = 787\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                          syscall.Errno = 788\n\tERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                          syscall.Errno = 789\n\tERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                              syscall.Errno = 790\n\tERROR_BAD_MCFG_TABLE                                                      syscall.Errno = 791\n\tERROR_DISK_REPAIR_REDIRECTED                                              syscall.Errno = 792\n\tERROR_DISK_REPAIR_UNSUCCESSFUL                                            syscall.Errno = 793\n\tERROR_CORRUPT_LOG_OVERFULL                                                syscall.Errno = 794\n\tERROR_CORRUPT_LOG_CORRUPTED                                               syscall.Errno = 795\n\tERROR_CORRUPT_LOG_UNAVAILABLE                                             syscall.Errno = 796\n\tERROR_CORRUPT_LOG_DELETED_FULL                                            syscall.Errno = 797\n\tERROR_CORRUPT_LOG_CLEARED                                                 syscall.Errno = 798\n\tERROR_ORPHAN_NAME_EXHAUSTED                                               syscall.Errno = 799\n\tERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE                                       syscall.Errno = 800\n\tERROR_CANNOT_GRANT_REQUESTED_OPLOCK                                       syscall.Errno = 801\n\tERROR_CANNOT_BREAK_OPLOCK                                                 syscall.Errno = 802\n\tERROR_OPLOCK_HANDLE_CLOSED                                                syscall.Errno = 803\n\tERROR_NO_ACE_CONDITION                                                    syscall.Errno = 804\n\tERROR_INVALID_ACE_CONDITION                                               syscall.Errno = 805\n\tERROR_FILE_HANDLE_REVOKED                                                 syscall.Errno = 806\n\tERROR_IMAGE_AT_DIFFERENT_BASE                                             syscall.Errno = 807\n\tERROR_ENCRYPTED_IO_NOT_POSSIBLE                                           syscall.Errno = 808\n\tERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                              syscall.Errno = 809\n\tERROR_QUOTA_ACTIVITY                                                      syscall.Errno = 810\n\tERROR_HANDLE_REVOKED                                                      syscall.Errno = 811\n\tERROR_CALLBACK_INVOKE_INLINE                                              syscall.Errno = 812\n\tERROR_CPU_SET_INVALID                                                     syscall.Errno = 813\n\tERROR_ENCLAVE_NOT_TERMINATED                                              syscall.Errno = 814\n\tERROR_ENCLAVE_VIOLATION                                                   syscall.Errno = 815\n\tERROR_EA_ACCESS_DENIED                                                    syscall.Errno = 994\n\tERROR_OPERATION_ABORTED                                                   syscall.Errno = 995\n\tERROR_IO_INCOMPLETE                                                       syscall.Errno = 996\n\tERROR_IO_PENDING                                                          syscall.Errno = 997\n\tERROR_NOACCESS                                                            syscall.Errno = 998\n\tERROR_SWAPERROR                                                           syscall.Errno = 999\n\tERROR_STACK_OVERFLOW                                                      syscall.Errno = 1001\n\tERROR_INVALID_MESSAGE                                                     syscall.Errno = 1002\n\tERROR_CAN_NOT_COMPLETE                                                    syscall.Errno = 1003\n\tERROR_INVALID_FLAGS                                                       syscall.Errno = 1004\n\tERROR_UNRECOGNIZED_VOLUME                                                 syscall.Errno = 1005\n\tERROR_FILE_INVALID                                                        syscall.Errno = 1006\n\tERROR_FULLSCREEN_MODE                                                     syscall.Errno = 1007\n\tERROR_NO_TOKEN                                                            syscall.Errno = 1008\n\tERROR_BADDB                                                               syscall.Errno = 1009\n\tERROR_BADKEY                                                              syscall.Errno = 1010\n\tERROR_CANTOPEN                                                            syscall.Errno = 1011\n\tERROR_CANTREAD                                                            syscall.Errno = 1012\n\tERROR_CANTWRITE                                                           syscall.Errno = 1013\n\tERROR_REGISTRY_RECOVERED                                                  syscall.Errno = 1014\n\tERROR_REGISTRY_CORRUPT                                                    syscall.Errno = 1015\n\tERROR_REGISTRY_IO_FAILED                                                  syscall.Errno = 1016\n\tERROR_NOT_REGISTRY_FILE                                                   syscall.Errno = 1017\n\tERROR_KEY_DELETED                                                         syscall.Errno = 1018\n\tERROR_NO_LOG_SPACE                                                        syscall.Errno = 1019\n\tERROR_KEY_HAS_CHILDREN                                                    syscall.Errno = 1020\n\tERROR_CHILD_MUST_BE_VOLATILE                                              syscall.Errno = 1021\n\tERROR_NOTIFY_ENUM_DIR                                                     syscall.Errno = 1022\n\tERROR_DEPENDENT_SERVICES_RUNNING                                          syscall.Errno = 1051\n\tERROR_INVALID_SERVICE_CONTROL                                             syscall.Errno = 1052\n\tERROR_SERVICE_REQUEST_TIMEOUT                                             syscall.Errno = 1053\n\tERROR_SERVICE_NO_THREAD                                                   syscall.Errno = 1054\n\tERROR_SERVICE_DATABASE_LOCKED                                             syscall.Errno = 1055\n\tERROR_SERVICE_ALREADY_RUNNING                                             syscall.Errno = 1056\n\tERROR_INVALID_SERVICE_ACCOUNT                                             syscall.Errno = 1057\n\tERROR_SERVICE_DISABLED                                                    syscall.Errno = 1058\n\tERROR_CIRCULAR_DEPENDENCY                                                 syscall.Errno = 1059\n\tERROR_SERVICE_DOES_NOT_EXIST                                              syscall.Errno = 1060\n\tERROR_SERVICE_CANNOT_ACCEPT_CTRL                                          syscall.Errno = 1061\n\tERROR_SERVICE_NOT_ACTIVE                                                  syscall.Errno = 1062\n\tERROR_FAILED_SERVICE_CONTROLLER_CONNECT                                   syscall.Errno = 1063\n\tERROR_EXCEPTION_IN_SERVICE                                                syscall.Errno = 1064\n\tERROR_DATABASE_DOES_NOT_EXIST                                             syscall.Errno = 1065\n\tERROR_SERVICE_SPECIFIC_ERROR                                              syscall.Errno = 1066\n\tERROR_PROCESS_ABORTED                                                     syscall.Errno = 1067\n\tERROR_SERVICE_DEPENDENCY_FAIL                                             syscall.Errno = 1068\n\tERROR_SERVICE_LOGON_FAILED                                                syscall.Errno = 1069\n\tERROR_SERVICE_START_HANG                                                  syscall.Errno = 1070\n\tERROR_INVALID_SERVICE_LOCK                                                syscall.Errno = 1071\n\tERROR_SERVICE_MARKED_FOR_DELETE                                           syscall.Errno = 1072\n\tERROR_SERVICE_EXISTS                                                      syscall.Errno = 1073\n\tERROR_ALREADY_RUNNING_LKG                                                 syscall.Errno = 1074\n\tERROR_SERVICE_DEPENDENCY_DELETED                                          syscall.Errno = 1075\n\tERROR_BOOT_ALREADY_ACCEPTED                                               syscall.Errno = 1076\n\tERROR_SERVICE_NEVER_STARTED                                               syscall.Errno = 1077\n\tERROR_DUPLICATE_SERVICE_NAME                                              syscall.Errno = 1078\n\tERROR_DIFFERENT_SERVICE_ACCOUNT                                           syscall.Errno = 1079\n\tERROR_CANNOT_DETECT_DRIVER_FAILURE                                        syscall.Errno = 1080\n\tERROR_CANNOT_DETECT_PROCESS_ABORT                                         syscall.Errno = 1081\n\tERROR_NO_RECOVERY_PROGRAM                                                 syscall.Errno = 1082\n\tERROR_SERVICE_NOT_IN_EXE                                                  syscall.Errno = 1083\n\tERROR_NOT_SAFEBOOT_SERVICE                                                syscall.Errno = 1084\n\tERROR_END_OF_MEDIA                                                        syscall.Errno = 1100\n\tERROR_FILEMARK_DETECTED                                                   syscall.Errno = 1101\n\tERROR_BEGINNING_OF_MEDIA                                                  syscall.Errno = 1102\n\tERROR_SETMARK_DETECTED                                                    syscall.Errno = 1103\n\tERROR_NO_DATA_DETECTED                                                    syscall.Errno = 1104\n\tERROR_PARTITION_FAILURE                                                   syscall.Errno = 1105\n\tERROR_INVALID_BLOCK_LENGTH                                                syscall.Errno = 1106\n\tERROR_DEVICE_NOT_PARTITIONED                                              syscall.Errno = 1107\n\tERROR_UNABLE_TO_LOCK_MEDIA                                                syscall.Errno = 1108\n\tERROR_UNABLE_TO_UNLOAD_MEDIA                                              syscall.Errno = 1109\n\tERROR_MEDIA_CHANGED                                                       syscall.Errno = 1110\n\tERROR_BUS_RESET                                                           syscall.Errno = 1111\n\tERROR_NO_MEDIA_IN_DRIVE                                                   syscall.Errno = 1112\n\tERROR_NO_UNICODE_TRANSLATION                                              syscall.Errno = 1113\n\tERROR_DLL_INIT_FAILED                                                     syscall.Errno = 1114\n\tERROR_SHUTDOWN_IN_PROGRESS                                                syscall.Errno = 1115\n\tERROR_NO_SHUTDOWN_IN_PROGRESS                                             syscall.Errno = 1116\n\tERROR_IO_DEVICE                                                           syscall.Errno = 1117\n\tERROR_SERIAL_NO_DEVICE                                                    syscall.Errno = 1118\n\tERROR_IRQ_BUSY                                                            syscall.Errno = 1119\n\tERROR_MORE_WRITES                                                         syscall.Errno = 1120\n\tERROR_COUNTER_TIMEOUT                                                     syscall.Errno = 1121\n\tERROR_FLOPPY_ID_MARK_NOT_FOUND                                            syscall.Errno = 1122\n\tERROR_FLOPPY_WRONG_CYLINDER                                               syscall.Errno = 1123\n\tERROR_FLOPPY_UNKNOWN_ERROR                                                syscall.Errno = 1124\n\tERROR_FLOPPY_BAD_REGISTERS                                                syscall.Errno = 1125\n\tERROR_DISK_RECALIBRATE_FAILED                                             syscall.Errno = 1126\n\tERROR_DISK_OPERATION_FAILED                                               syscall.Errno = 1127\n\tERROR_DISK_RESET_FAILED                                                   syscall.Errno = 1128\n\tERROR_EOM_OVERFLOW                                                        syscall.Errno = 1129\n\tERROR_NOT_ENOUGH_SERVER_MEMORY                                            syscall.Errno = 1130\n\tERROR_POSSIBLE_DEADLOCK                                                   syscall.Errno = 1131\n\tERROR_MAPPED_ALIGNMENT                                                    syscall.Errno = 1132\n\tERROR_SET_POWER_STATE_VETOED                                              syscall.Errno = 1140\n\tERROR_SET_POWER_STATE_FAILED                                              syscall.Errno = 1141\n\tERROR_TOO_MANY_LINKS                                                      syscall.Errno = 1142\n\tERROR_OLD_WIN_VERSION                                                     syscall.Errno = 1150\n\tERROR_APP_WRONG_OS                                                        syscall.Errno = 1151\n\tERROR_SINGLE_INSTANCE_APP                                                 syscall.Errno = 1152\n\tERROR_RMODE_APP                                                           syscall.Errno = 1153\n\tERROR_INVALID_DLL                                                         syscall.Errno = 1154\n\tERROR_NO_ASSOCIATION                                                      syscall.Errno = 1155\n\tERROR_DDE_FAIL                                                            syscall.Errno = 1156\n\tERROR_DLL_NOT_FOUND                                                       syscall.Errno = 1157\n\tERROR_NO_MORE_USER_HANDLES                                                syscall.Errno = 1158\n\tERROR_MESSAGE_SYNC_ONLY                                                   syscall.Errno = 1159\n\tERROR_SOURCE_ELEMENT_EMPTY                                                syscall.Errno = 1160\n\tERROR_DESTINATION_ELEMENT_FULL                                            syscall.Errno = 1161\n\tERROR_ILLEGAL_ELEMENT_ADDRESS                                             syscall.Errno = 1162\n\tERROR_MAGAZINE_NOT_PRESENT                                                syscall.Errno = 1163\n\tERROR_DEVICE_REINITIALIZATION_NEEDED                                      syscall.Errno = 1164\n\tERROR_DEVICE_REQUIRES_CLEANING                                            syscall.Errno = 1165\n\tERROR_DEVICE_DOOR_OPEN                                                    syscall.Errno = 1166\n\tERROR_DEVICE_NOT_CONNECTED                                                syscall.Errno = 1167\n\tERROR_NOT_FOUND                                                           syscall.Errno = 1168\n\tERROR_NO_MATCH                                                            syscall.Errno = 1169\n\tERROR_SET_NOT_FOUND                                                       syscall.Errno = 1170\n\tERROR_POINT_NOT_FOUND                                                     syscall.Errno = 1171\n\tERROR_NO_TRACKING_SERVICE                                                 syscall.Errno = 1172\n\tERROR_NO_VOLUME_ID                                                        syscall.Errno = 1173\n\tERROR_UNABLE_TO_REMOVE_REPLACED                                           syscall.Errno = 1175\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT                                          syscall.Errno = 1176\n\tERROR_UNABLE_TO_MOVE_REPLACEMENT_2                                        syscall.Errno = 1177\n\tERROR_JOURNAL_DELETE_IN_PROGRESS                                          syscall.Errno = 1178\n\tERROR_JOURNAL_NOT_ACTIVE                                                  syscall.Errno = 1179\n\tERROR_POTENTIAL_FILE_FOUND                                                syscall.Errno = 1180\n\tERROR_JOURNAL_ENTRY_DELETED                                               syscall.Errno = 1181\n\tERROR_SHUTDOWN_IS_SCHEDULED                                               syscall.Errno = 1190\n\tERROR_SHUTDOWN_USERS_LOGGED_ON                                            syscall.Errno = 1191\n\tERROR_BAD_DEVICE                                                          syscall.Errno = 1200\n\tERROR_CONNECTION_UNAVAIL                                                  syscall.Errno = 1201\n\tERROR_DEVICE_ALREADY_REMEMBERED                                           syscall.Errno = 1202\n\tERROR_NO_NET_OR_BAD_PATH                                                  syscall.Errno = 1203\n\tERROR_BAD_PROVIDER                                                        syscall.Errno = 1204\n\tERROR_CANNOT_OPEN_PROFILE                                                 syscall.Errno = 1205\n\tERROR_BAD_PROFILE                                                         syscall.Errno = 1206\n\tERROR_NOT_CONTAINER                                                       syscall.Errno = 1207\n\tERROR_EXTENDED_ERROR                                                      syscall.Errno = 1208\n\tERROR_INVALID_GROUPNAME                                                   syscall.Errno = 1209\n\tERROR_INVALID_COMPUTERNAME                                                syscall.Errno = 1210\n\tERROR_INVALID_EVENTNAME                                                   syscall.Errno = 1211\n\tERROR_INVALID_DOMAINNAME                                                  syscall.Errno = 1212\n\tERROR_INVALID_SERVICENAME                                                 syscall.Errno = 1213\n\tERROR_INVALID_NETNAME                                                     syscall.Errno = 1214\n\tERROR_INVALID_SHARENAME                                                   syscall.Errno = 1215\n\tERROR_INVALID_PASSWORDNAME                                                syscall.Errno = 1216\n\tERROR_INVALID_MESSAGENAME                                                 syscall.Errno = 1217\n\tERROR_INVALID_MESSAGEDEST                                                 syscall.Errno = 1218\n\tERROR_SESSION_CREDENTIAL_CONFLICT                                         syscall.Errno = 1219\n\tERROR_REMOTE_SESSION_LIMIT_EXCEEDED                                       syscall.Errno = 1220\n\tERROR_DUP_DOMAINNAME                                                      syscall.Errno = 1221\n\tERROR_NO_NETWORK                                                          syscall.Errno = 1222\n\tERROR_CANCELLED                                                           syscall.Errno = 1223\n\tERROR_USER_MAPPED_FILE                                                    syscall.Errno = 1224\n\tERROR_CONNECTION_REFUSED                                                  syscall.Errno = 1225\n\tERROR_GRACEFUL_DISCONNECT                                                 syscall.Errno = 1226\n\tERROR_ADDRESS_ALREADY_ASSOCIATED                                          syscall.Errno = 1227\n\tERROR_ADDRESS_NOT_ASSOCIATED                                              syscall.Errno = 1228\n\tERROR_CONNECTION_INVALID                                                  syscall.Errno = 1229\n\tERROR_CONNECTION_ACTIVE                                                   syscall.Errno = 1230\n\tERROR_NETWORK_UNREACHABLE                                                 syscall.Errno = 1231\n\tERROR_HOST_UNREACHABLE                                                    syscall.Errno = 1232\n\tERROR_PROTOCOL_UNREACHABLE                                                syscall.Errno = 1233\n\tERROR_PORT_UNREACHABLE                                                    syscall.Errno = 1234\n\tERROR_REQUEST_ABORTED                                                     syscall.Errno = 1235\n\tERROR_CONNECTION_ABORTED                                                  syscall.Errno = 1236\n\tERROR_RETRY                                                               syscall.Errno = 1237\n\tERROR_CONNECTION_COUNT_LIMIT                                              syscall.Errno = 1238\n\tERROR_LOGIN_TIME_RESTRICTION                                              syscall.Errno = 1239\n\tERROR_LOGIN_WKSTA_RESTRICTION                                             syscall.Errno = 1240\n\tERROR_INCORRECT_ADDRESS                                                   syscall.Errno = 1241\n\tERROR_ALREADY_REGISTERED                                                  syscall.Errno = 1242\n\tERROR_SERVICE_NOT_FOUND                                                   syscall.Errno = 1243\n\tERROR_NOT_AUTHENTICATED                                                   syscall.Errno = 1244\n\tERROR_NOT_LOGGED_ON                                                       syscall.Errno = 1245\n\tERROR_CONTINUE                                                            syscall.Errno = 1246\n\tERROR_ALREADY_INITIALIZED                                                 syscall.Errno = 1247\n\tERROR_NO_MORE_DEVICES                                                     syscall.Errno = 1248\n\tERROR_NO_SUCH_SITE                                                        syscall.Errno = 1249\n\tERROR_DOMAIN_CONTROLLER_EXISTS                                            syscall.Errno = 1250\n\tERROR_ONLY_IF_CONNECTED                                                   syscall.Errno = 1251\n\tERROR_OVERRIDE_NOCHANGES                                                  syscall.Errno = 1252\n\tERROR_BAD_USER_PROFILE                                                    syscall.Errno = 1253\n\tERROR_NOT_SUPPORTED_ON_SBS                                                syscall.Errno = 1254\n\tERROR_SERVER_SHUTDOWN_IN_PROGRESS                                         syscall.Errno = 1255\n\tERROR_HOST_DOWN                                                           syscall.Errno = 1256\n\tERROR_NON_ACCOUNT_SID                                                     syscall.Errno = 1257\n\tERROR_NON_DOMAIN_SID                                                      syscall.Errno = 1258\n\tERROR_APPHELP_BLOCK                                                       syscall.Errno = 1259\n\tERROR_ACCESS_DISABLED_BY_POLICY                                           syscall.Errno = 1260\n\tERROR_REG_NAT_CONSUMPTION                                                 syscall.Errno = 1261\n\tERROR_CSCSHARE_OFFLINE                                                    syscall.Errno = 1262\n\tERROR_PKINIT_FAILURE                                                      syscall.Errno = 1263\n\tERROR_SMARTCARD_SUBSYSTEM_FAILURE                                         syscall.Errno = 1264\n\tERROR_DOWNGRADE_DETECTED                                                  syscall.Errno = 1265\n\tERROR_MACHINE_LOCKED                                                      syscall.Errno = 1271\n\tERROR_SMB_GUEST_LOGON_BLOCKED                                             syscall.Errno = 1272\n\tERROR_CALLBACK_SUPPLIED_INVALID_DATA                                      syscall.Errno = 1273\n\tERROR_SYNC_FOREGROUND_REFRESH_REQUIRED                                    syscall.Errno = 1274\n\tERROR_DRIVER_BLOCKED                                                      syscall.Errno = 1275\n\tERROR_INVALID_IMPORT_OF_NON_DLL                                           syscall.Errno = 1276\n\tERROR_ACCESS_DISABLED_WEBBLADE                                            syscall.Errno = 1277\n\tERROR_ACCESS_DISABLED_WEBBLADE_TAMPER                                     syscall.Errno = 1278\n\tERROR_RECOVERY_FAILURE                                                    syscall.Errno = 1279\n\tERROR_ALREADY_FIBER                                                       syscall.Errno = 1280\n\tERROR_ALREADY_THREAD                                                      syscall.Errno = 1281\n\tERROR_STACK_BUFFER_OVERRUN                                                syscall.Errno = 1282\n\tERROR_PARAMETER_QUOTA_EXCEEDED                                            syscall.Errno = 1283\n\tERROR_DEBUGGER_INACTIVE                                                   syscall.Errno = 1284\n\tERROR_DELAY_LOAD_FAILED                                                   syscall.Errno = 1285\n\tERROR_VDM_DISALLOWED                                                      syscall.Errno = 1286\n\tERROR_UNIDENTIFIED_ERROR                                                  syscall.Errno = 1287\n\tERROR_INVALID_CRUNTIME_PARAMETER                                          syscall.Errno = 1288\n\tERROR_BEYOND_VDL                                                          syscall.Errno = 1289\n\tERROR_INCOMPATIBLE_SERVICE_SID_TYPE                                       syscall.Errno = 1290\n\tERROR_DRIVER_PROCESS_TERMINATED                                           syscall.Errno = 1291\n\tERROR_IMPLEMENTATION_LIMIT                                                syscall.Errno = 1292\n\tERROR_PROCESS_IS_PROTECTED                                                syscall.Errno = 1293\n\tERROR_SERVICE_NOTIFY_CLIENT_LAGGING                                       syscall.Errno = 1294\n\tERROR_DISK_QUOTA_EXCEEDED                                                 syscall.Errno = 1295\n\tERROR_CONTENT_BLOCKED                                                     syscall.Errno = 1296\n\tERROR_INCOMPATIBLE_SERVICE_PRIVILEGE                                      syscall.Errno = 1297\n\tERROR_APP_HANG                                                            syscall.Errno = 1298\n\tERROR_INVALID_LABEL                                                       syscall.Errno = 1299\n\tERROR_NOT_ALL_ASSIGNED                                                    syscall.Errno = 1300\n\tERROR_SOME_NOT_MAPPED                                                     syscall.Errno = 1301\n\tERROR_NO_QUOTAS_FOR_ACCOUNT                                               syscall.Errno = 1302\n\tERROR_LOCAL_USER_SESSION_KEY                                              syscall.Errno = 1303\n\tERROR_NULL_LM_PASSWORD                                                    syscall.Errno = 1304\n\tERROR_UNKNOWN_REVISION                                                    syscall.Errno = 1305\n\tERROR_REVISION_MISMATCH                                                   syscall.Errno = 1306\n\tERROR_INVALID_OWNER                                                       syscall.Errno = 1307\n\tERROR_INVALID_PRIMARY_GROUP                                               syscall.Errno = 1308\n\tERROR_NO_IMPERSONATION_TOKEN                                              syscall.Errno = 1309\n\tERROR_CANT_DISABLE_MANDATORY                                              syscall.Errno = 1310\n\tERROR_NO_LOGON_SERVERS                                                    syscall.Errno = 1311\n\tERROR_NO_SUCH_LOGON_SESSION                                               syscall.Errno = 1312\n\tERROR_NO_SUCH_PRIVILEGE                                                   syscall.Errno = 1313\n\tERROR_PRIVILEGE_NOT_HELD                                                  syscall.Errno = 1314\n\tERROR_INVALID_ACCOUNT_NAME                                                syscall.Errno = 1315\n\tERROR_USER_EXISTS                                                         syscall.Errno = 1316\n\tERROR_NO_SUCH_USER                                                        syscall.Errno = 1317\n\tERROR_GROUP_EXISTS                                                        syscall.Errno = 1318\n\tERROR_NO_SUCH_GROUP                                                       syscall.Errno = 1319\n\tERROR_MEMBER_IN_GROUP                                                     syscall.Errno = 1320\n\tERROR_MEMBER_NOT_IN_GROUP                                                 syscall.Errno = 1321\n\tERROR_LAST_ADMIN                                                          syscall.Errno = 1322\n\tERROR_WRONG_PASSWORD                                                      syscall.Errno = 1323\n\tERROR_ILL_FORMED_PASSWORD                                                 syscall.Errno = 1324\n\tERROR_PASSWORD_RESTRICTION                                                syscall.Errno = 1325\n\tERROR_LOGON_FAILURE                                                       syscall.Errno = 1326\n\tERROR_ACCOUNT_RESTRICTION                                                 syscall.Errno = 1327\n\tERROR_INVALID_LOGON_HOURS                                                 syscall.Errno = 1328\n\tERROR_INVALID_WORKSTATION                                                 syscall.Errno = 1329\n\tERROR_PASSWORD_EXPIRED                                                    syscall.Errno = 1330\n\tERROR_ACCOUNT_DISABLED                                                    syscall.Errno = 1331\n\tERROR_NONE_MAPPED                                                         syscall.Errno = 1332\n\tERROR_TOO_MANY_LUIDS_REQUESTED                                            syscall.Errno = 1333\n\tERROR_LUIDS_EXHAUSTED                                                     syscall.Errno = 1334\n\tERROR_INVALID_SUB_AUTHORITY                                               syscall.Errno = 1335\n\tERROR_INVALID_ACL                                                         syscall.Errno = 1336\n\tERROR_INVALID_SID                                                         syscall.Errno = 1337\n\tERROR_INVALID_SECURITY_DESCR                                              syscall.Errno = 1338\n\tERROR_BAD_INHERITANCE_ACL                                                 syscall.Errno = 1340\n\tERROR_SERVER_DISABLED                                                     syscall.Errno = 1341\n\tERROR_SERVER_NOT_DISABLED                                                 syscall.Errno = 1342\n\tERROR_INVALID_ID_AUTHORITY                                                syscall.Errno = 1343\n\tERROR_ALLOTTED_SPACE_EXCEEDED                                             syscall.Errno = 1344\n\tERROR_INVALID_GROUP_ATTRIBUTES                                            syscall.Errno = 1345\n\tERROR_BAD_IMPERSONATION_LEVEL                                             syscall.Errno = 1346\n\tERROR_CANT_OPEN_ANONYMOUS                                                 syscall.Errno = 1347\n\tERROR_BAD_VALIDATION_CLASS                                                syscall.Errno = 1348\n\tERROR_BAD_TOKEN_TYPE                                                      syscall.Errno = 1349\n\tERROR_NO_SECURITY_ON_OBJECT                                               syscall.Errno = 1350\n\tERROR_CANT_ACCESS_DOMAIN_INFO                                             syscall.Errno = 1351\n\tERROR_INVALID_SERVER_STATE                                                syscall.Errno = 1352\n\tERROR_INVALID_DOMAIN_STATE                                                syscall.Errno = 1353\n\tERROR_INVALID_DOMAIN_ROLE                                                 syscall.Errno = 1354\n\tERROR_NO_SUCH_DOMAIN                                                      syscall.Errno = 1355\n\tERROR_DOMAIN_EXISTS                                                       syscall.Errno = 1356\n\tERROR_DOMAIN_LIMIT_EXCEEDED                                               syscall.Errno = 1357\n\tERROR_INTERNAL_DB_CORRUPTION                                              syscall.Errno = 1358\n\tERROR_INTERNAL_ERROR                                                      syscall.Errno = 1359\n\tERROR_GENERIC_NOT_MAPPED                                                  syscall.Errno = 1360\n\tERROR_BAD_DESCRIPTOR_FORMAT                                               syscall.Errno = 1361\n\tERROR_NOT_LOGON_PROCESS                                                   syscall.Errno = 1362\n\tERROR_LOGON_SESSION_EXISTS                                                syscall.Errno = 1363\n\tERROR_NO_SUCH_PACKAGE                                                     syscall.Errno = 1364\n\tERROR_BAD_LOGON_SESSION_STATE                                             syscall.Errno = 1365\n\tERROR_LOGON_SESSION_COLLISION                                             syscall.Errno = 1366\n\tERROR_INVALID_LOGON_TYPE                                                  syscall.Errno = 1367\n\tERROR_CANNOT_IMPERSONATE                                                  syscall.Errno = 1368\n\tERROR_RXACT_INVALID_STATE                                                 syscall.Errno = 1369\n\tERROR_RXACT_COMMIT_FAILURE                                                syscall.Errno = 1370\n\tERROR_SPECIAL_ACCOUNT                                                     syscall.Errno = 1371\n\tERROR_SPECIAL_GROUP                                                       syscall.Errno = 1372\n\tERROR_SPECIAL_USER                                                        syscall.Errno = 1373\n\tERROR_MEMBERS_PRIMARY_GROUP                                               syscall.Errno = 1374\n\tERROR_TOKEN_ALREADY_IN_USE                                                syscall.Errno = 1375\n\tERROR_NO_SUCH_ALIAS                                                       syscall.Errno = 1376\n\tERROR_MEMBER_NOT_IN_ALIAS                                                 syscall.Errno = 1377\n\tERROR_MEMBER_IN_ALIAS                                                     syscall.Errno = 1378\n\tERROR_ALIAS_EXISTS                                                        syscall.Errno = 1379\n\tERROR_LOGON_NOT_GRANTED                                                   syscall.Errno = 1380\n\tERROR_TOO_MANY_SECRETS                                                    syscall.Errno = 1381\n\tERROR_SECRET_TOO_LONG                                                     syscall.Errno = 1382\n\tERROR_INTERNAL_DB_ERROR                                                   syscall.Errno = 1383\n\tERROR_TOO_MANY_CONTEXT_IDS                                                syscall.Errno = 1384\n\tERROR_LOGON_TYPE_NOT_GRANTED                                              syscall.Errno = 1385\n\tERROR_NT_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1386\n\tERROR_NO_SUCH_MEMBER                                                      syscall.Errno = 1387\n\tERROR_INVALID_MEMBER                                                      syscall.Errno = 1388\n\tERROR_TOO_MANY_SIDS                                                       syscall.Errno = 1389\n\tERROR_LM_CROSS_ENCRYPTION_REQUIRED                                        syscall.Errno = 1390\n\tERROR_NO_INHERITANCE                                                      syscall.Errno = 1391\n\tERROR_FILE_CORRUPT                                                        syscall.Errno = 1392\n\tERROR_DISK_CORRUPT                                                        syscall.Errno = 1393\n\tERROR_NO_USER_SESSION_KEY                                                 syscall.Errno = 1394\n\tERROR_LICENSE_QUOTA_EXCEEDED                                              syscall.Errno = 1395\n\tERROR_WRONG_TARGET_NAME                                                   syscall.Errno = 1396\n\tERROR_MUTUAL_AUTH_FAILED                                                  syscall.Errno = 1397\n\tERROR_TIME_SKEW                                                           syscall.Errno = 1398\n\tERROR_CURRENT_DOMAIN_NOT_ALLOWED                                          syscall.Errno = 1399\n\tERROR_INVALID_WINDOW_HANDLE                                               syscall.Errno = 1400\n\tERROR_INVALID_MENU_HANDLE                                                 syscall.Errno = 1401\n\tERROR_INVALID_CURSOR_HANDLE                                               syscall.Errno = 1402\n\tERROR_INVALID_ACCEL_HANDLE                                                syscall.Errno = 1403\n\tERROR_INVALID_HOOK_HANDLE                                                 syscall.Errno = 1404\n\tERROR_INVALID_DWP_HANDLE                                                  syscall.Errno = 1405\n\tERROR_TLW_WITH_WSCHILD                                                    syscall.Errno = 1406\n\tERROR_CANNOT_FIND_WND_CLASS                                               syscall.Errno = 1407\n\tERROR_WINDOW_OF_OTHER_THREAD                                              syscall.Errno = 1408\n\tERROR_HOTKEY_ALREADY_REGISTERED                                           syscall.Errno = 1409\n\tERROR_CLASS_ALREADY_EXISTS                                                syscall.Errno = 1410\n\tERROR_CLASS_DOES_NOT_EXIST                                                syscall.Errno = 1411\n\tERROR_CLASS_HAS_WINDOWS                                                   syscall.Errno = 1412\n\tERROR_INVALID_INDEX                                                       syscall.Errno = 1413\n\tERROR_INVALID_ICON_HANDLE                                                 syscall.Errno = 1414\n\tERROR_PRIVATE_DIALOG_INDEX                                                syscall.Errno = 1415\n\tERROR_LISTBOX_ID_NOT_FOUND                                                syscall.Errno = 1416\n\tERROR_NO_WILDCARD_CHARACTERS                                              syscall.Errno = 1417\n\tERROR_CLIPBOARD_NOT_OPEN                                                  syscall.Errno = 1418\n\tERROR_HOTKEY_NOT_REGISTERED                                               syscall.Errno = 1419\n\tERROR_WINDOW_NOT_DIALOG                                                   syscall.Errno = 1420\n\tERROR_CONTROL_ID_NOT_FOUND                                                syscall.Errno = 1421\n\tERROR_INVALID_COMBOBOX_MESSAGE                                            syscall.Errno = 1422\n\tERROR_WINDOW_NOT_COMBOBOX                                                 syscall.Errno = 1423\n\tERROR_INVALID_EDIT_HEIGHT                                                 syscall.Errno = 1424\n\tERROR_DC_NOT_FOUND                                                        syscall.Errno = 1425\n\tERROR_INVALID_HOOK_FILTER                                                 syscall.Errno = 1426\n\tERROR_INVALID_FILTER_PROC                                                 syscall.Errno = 1427\n\tERROR_HOOK_NEEDS_HMOD                                                     syscall.Errno = 1428\n\tERROR_GLOBAL_ONLY_HOOK                                                    syscall.Errno = 1429\n\tERROR_JOURNAL_HOOK_SET                                                    syscall.Errno = 1430\n\tERROR_HOOK_NOT_INSTALLED                                                  syscall.Errno = 1431\n\tERROR_INVALID_LB_MESSAGE                                                  syscall.Errno = 1432\n\tERROR_SETCOUNT_ON_BAD_LB                                                  syscall.Errno = 1433\n\tERROR_LB_WITHOUT_TABSTOPS                                                 syscall.Errno = 1434\n\tERROR_DESTROY_OBJECT_OF_OTHER_THREAD                                      syscall.Errno = 1435\n\tERROR_CHILD_WINDOW_MENU                                                   syscall.Errno = 1436\n\tERROR_NO_SYSTEM_MENU                                                      syscall.Errno = 1437\n\tERROR_INVALID_MSGBOX_STYLE                                                syscall.Errno = 1438\n\tERROR_INVALID_SPI_VALUE                                                   syscall.Errno = 1439\n\tERROR_SCREEN_ALREADY_LOCKED                                               syscall.Errno = 1440\n\tERROR_HWNDS_HAVE_DIFF_PARENT                                              syscall.Errno = 1441\n\tERROR_NOT_CHILD_WINDOW                                                    syscall.Errno = 1442\n\tERROR_INVALID_GW_COMMAND                                                  syscall.Errno = 1443\n\tERROR_INVALID_THREAD_ID                                                   syscall.Errno = 1444\n\tERROR_NON_MDICHILD_WINDOW                                                 syscall.Errno = 1445\n\tERROR_POPUP_ALREADY_ACTIVE                                                syscall.Errno = 1446\n\tERROR_NO_SCROLLBARS                                                       syscall.Errno = 1447\n\tERROR_INVALID_SCROLLBAR_RANGE                                             syscall.Errno = 1448\n\tERROR_INVALID_SHOWWIN_COMMAND                                             syscall.Errno = 1449\n\tERROR_NO_SYSTEM_RESOURCES                                                 syscall.Errno = 1450\n\tERROR_NONPAGED_SYSTEM_RESOURCES                                           syscall.Errno = 1451\n\tERROR_PAGED_SYSTEM_RESOURCES                                              syscall.Errno = 1452\n\tERROR_WORKING_SET_QUOTA                                                   syscall.Errno = 1453\n\tERROR_PAGEFILE_QUOTA                                                      syscall.Errno = 1454\n\tERROR_COMMITMENT_LIMIT                                                    syscall.Errno = 1455\n\tERROR_MENU_ITEM_NOT_FOUND                                                 syscall.Errno = 1456\n\tERROR_INVALID_KEYBOARD_HANDLE                                             syscall.Errno = 1457\n\tERROR_HOOK_TYPE_NOT_ALLOWED                                               syscall.Errno = 1458\n\tERROR_REQUIRES_INTERACTIVE_WINDOWSTATION                                  syscall.Errno = 1459\n\tERROR_TIMEOUT                                                             syscall.Errno = 1460\n\tERROR_INVALID_MONITOR_HANDLE                                              syscall.Errno = 1461\n\tERROR_INCORRECT_SIZE                                                      syscall.Errno = 1462\n\tERROR_SYMLINK_CLASS_DISABLED                                              syscall.Errno = 1463\n\tERROR_SYMLINK_NOT_SUPPORTED                                               syscall.Errno = 1464\n\tERROR_XML_PARSE_ERROR                                                     syscall.Errno = 1465\n\tERROR_XMLDSIG_ERROR                                                       syscall.Errno = 1466\n\tERROR_RESTART_APPLICATION                                                 syscall.Errno = 1467\n\tERROR_WRONG_COMPARTMENT                                                   syscall.Errno = 1468\n\tERROR_AUTHIP_FAILURE                                                      syscall.Errno = 1469\n\tERROR_NO_NVRAM_RESOURCES                                                  syscall.Errno = 1470\n\tERROR_NOT_GUI_PROCESS                                                     syscall.Errno = 1471\n\tERROR_EVENTLOG_FILE_CORRUPT                                               syscall.Errno = 1500\n\tERROR_EVENTLOG_CANT_START                                                 syscall.Errno = 1501\n\tERROR_LOG_FILE_FULL                                                       syscall.Errno = 1502\n\tERROR_EVENTLOG_FILE_CHANGED                                               syscall.Errno = 1503\n\tERROR_CONTAINER_ASSIGNED                                                  syscall.Errno = 1504\n\tERROR_JOB_NO_CONTAINER                                                    syscall.Errno = 1505\n\tERROR_INVALID_TASK_NAME                                                   syscall.Errno = 1550\n\tERROR_INVALID_TASK_INDEX                                                  syscall.Errno = 1551\n\tERROR_THREAD_ALREADY_IN_TASK                                              syscall.Errno = 1552\n\tERROR_INSTALL_SERVICE_FAILURE                                             syscall.Errno = 1601\n\tERROR_INSTALL_USEREXIT                                                    syscall.Errno = 1602\n\tERROR_INSTALL_FAILURE                                                     syscall.Errno = 1603\n\tERROR_INSTALL_SUSPEND                                                     syscall.Errno = 1604\n\tERROR_UNKNOWN_PRODUCT                                                     syscall.Errno = 1605\n\tERROR_UNKNOWN_FEATURE                                                     syscall.Errno = 1606\n\tERROR_UNKNOWN_COMPONENT                                                   syscall.Errno = 1607\n\tERROR_UNKNOWN_PROPERTY                                                    syscall.Errno = 1608\n\tERROR_INVALID_HANDLE_STATE                                                syscall.Errno = 1609\n\tERROR_BAD_CONFIGURATION                                                   syscall.Errno = 1610\n\tERROR_INDEX_ABSENT                                                        syscall.Errno = 1611\n\tERROR_INSTALL_SOURCE_ABSENT                                               syscall.Errno = 1612\n\tERROR_INSTALL_PACKAGE_VERSION                                             syscall.Errno = 1613\n\tERROR_PRODUCT_UNINSTALLED                                                 syscall.Errno = 1614\n\tERROR_BAD_QUERY_SYNTAX                                                    syscall.Errno = 1615\n\tERROR_INVALID_FIELD                                                       syscall.Errno = 1616\n\tERROR_DEVICE_REMOVED                                                      syscall.Errno = 1617\n\tERROR_INSTALL_ALREADY_RUNNING                                             syscall.Errno = 1618\n\tERROR_INSTALL_PACKAGE_OPEN_FAILED                                         syscall.Errno = 1619\n\tERROR_INSTALL_PACKAGE_INVALID                                             syscall.Errno = 1620\n\tERROR_INSTALL_UI_FAILURE                                                  syscall.Errno = 1621\n\tERROR_INSTALL_LOG_FAILURE                                                 syscall.Errno = 1622\n\tERROR_INSTALL_LANGUAGE_UNSUPPORTED                                        syscall.Errno = 1623\n\tERROR_INSTALL_TRANSFORM_FAILURE                                           syscall.Errno = 1624\n\tERROR_INSTALL_PACKAGE_REJECTED                                            syscall.Errno = 1625\n\tERROR_FUNCTION_NOT_CALLED                                                 syscall.Errno = 1626\n\tERROR_FUNCTION_FAILED                                                     syscall.Errno = 1627\n\tERROR_INVALID_TABLE                                                       syscall.Errno = 1628\n\tERROR_DATATYPE_MISMATCH                                                   syscall.Errno = 1629\n\tERROR_UNSUPPORTED_TYPE                                                    syscall.Errno = 1630\n\tERROR_CREATE_FAILED                                                       syscall.Errno = 1631\n\tERROR_INSTALL_TEMP_UNWRITABLE                                             syscall.Errno = 1632\n\tERROR_INSTALL_PLATFORM_UNSUPPORTED                                        syscall.Errno = 1633\n\tERROR_INSTALL_NOTUSED                                                     syscall.Errno = 1634\n\tERROR_PATCH_PACKAGE_OPEN_FAILED                                           syscall.Errno = 1635\n\tERROR_PATCH_PACKAGE_INVALID                                               syscall.Errno = 1636\n\tERROR_PATCH_PACKAGE_UNSUPPORTED                                           syscall.Errno = 1637\n\tERROR_PRODUCT_VERSION                                                     syscall.Errno = 1638\n\tERROR_INVALID_COMMAND_LINE                                                syscall.Errno = 1639\n\tERROR_INSTALL_REMOTE_DISALLOWED                                           syscall.Errno = 1640\n\tERROR_SUCCESS_REBOOT_INITIATED                                            syscall.Errno = 1641\n\tERROR_PATCH_TARGET_NOT_FOUND                                              syscall.Errno = 1642\n\tERROR_PATCH_PACKAGE_REJECTED                                              syscall.Errno = 1643\n\tERROR_INSTALL_TRANSFORM_REJECTED                                          syscall.Errno = 1644\n\tERROR_INSTALL_REMOTE_PROHIBITED                                           syscall.Errno = 1645\n\tERROR_PATCH_REMOVAL_UNSUPPORTED                                           syscall.Errno = 1646\n\tERROR_UNKNOWN_PATCH                                                       syscall.Errno = 1647\n\tERROR_PATCH_NO_SEQUENCE                                                   syscall.Errno = 1648\n\tERROR_PATCH_REMOVAL_DISALLOWED                                            syscall.Errno = 1649\n\tERROR_INVALID_PATCH_XML                                                   syscall.Errno = 1650\n\tERROR_PATCH_MANAGED_ADVERTISED_PRODUCT                                    syscall.Errno = 1651\n\tERROR_INSTALL_SERVICE_SAFEBOOT                                            syscall.Errno = 1652\n\tERROR_FAIL_FAST_EXCEPTION                                                 syscall.Errno = 1653\n\tERROR_INSTALL_REJECTED                                                    syscall.Errno = 1654\n\tERROR_DYNAMIC_CODE_BLOCKED                                                syscall.Errno = 1655\n\tERROR_NOT_SAME_OBJECT                                                     syscall.Errno = 1656\n\tERROR_STRICT_CFG_VIOLATION                                                syscall.Errno = 1657\n\tERROR_SET_CONTEXT_DENIED                                                  syscall.Errno = 1660\n\tERROR_CROSS_PARTITION_VIOLATION                                           syscall.Errno = 1661\n\tRPC_S_INVALID_STRING_BINDING                                              syscall.Errno = 1700\n\tRPC_S_WRONG_KIND_OF_BINDING                                               syscall.Errno = 1701\n\tRPC_S_INVALID_BINDING                                                     syscall.Errno = 1702\n\tRPC_S_PROTSEQ_NOT_SUPPORTED                                               syscall.Errno = 1703\n\tRPC_S_INVALID_RPC_PROTSEQ                                                 syscall.Errno = 1704\n\tRPC_S_INVALID_STRING_UUID                                                 syscall.Errno = 1705\n\tRPC_S_INVALID_ENDPOINT_FORMAT                                             syscall.Errno = 1706\n\tRPC_S_INVALID_NET_ADDR                                                    syscall.Errno = 1707\n\tRPC_S_NO_ENDPOINT_FOUND                                                   syscall.Errno = 1708\n\tRPC_S_INVALID_TIMEOUT                                                     syscall.Errno = 1709\n\tRPC_S_OBJECT_NOT_FOUND                                                    syscall.Errno = 1710\n\tRPC_S_ALREADY_REGISTERED                                                  syscall.Errno = 1711\n\tRPC_S_TYPE_ALREADY_REGISTERED                                             syscall.Errno = 1712\n\tRPC_S_ALREADY_LISTENING                                                   syscall.Errno = 1713\n\tRPC_S_NO_PROTSEQS_REGISTERED                                              syscall.Errno = 1714\n\tRPC_S_NOT_LISTENING                                                       syscall.Errno = 1715\n\tRPC_S_UNKNOWN_MGR_TYPE                                                    syscall.Errno = 1716\n\tRPC_S_UNKNOWN_IF                                                          syscall.Errno = 1717\n\tRPC_S_NO_BINDINGS                                                         syscall.Errno = 1718\n\tRPC_S_NO_PROTSEQS                                                         syscall.Errno = 1719\n\tRPC_S_CANT_CREATE_ENDPOINT                                                syscall.Errno = 1720\n\tRPC_S_OUT_OF_RESOURCES                                                    syscall.Errno = 1721\n\tRPC_S_SERVER_UNAVAILABLE                                                  syscall.Errno = 1722\n\tRPC_S_SERVER_TOO_BUSY                                                     syscall.Errno = 1723\n\tRPC_S_INVALID_NETWORK_OPTIONS                                             syscall.Errno = 1724\n\tRPC_S_NO_CALL_ACTIVE                                                      syscall.Errno = 1725\n\tRPC_S_CALL_FAILED                                                         syscall.Errno = 1726\n\tRPC_S_CALL_FAILED_DNE                                                     syscall.Errno = 1727\n\tRPC_S_PROTOCOL_ERROR                                                      syscall.Errno = 1728\n\tRPC_S_PROXY_ACCESS_DENIED                                                 syscall.Errno = 1729\n\tRPC_S_UNSUPPORTED_TRANS_SYN                                               syscall.Errno = 1730\n\tRPC_S_UNSUPPORTED_TYPE                                                    syscall.Errno = 1732\n\tRPC_S_INVALID_TAG                                                         syscall.Errno = 1733\n\tRPC_S_INVALID_BOUND                                                       syscall.Errno = 1734\n\tRPC_S_NO_ENTRY_NAME                                                       syscall.Errno = 1735\n\tRPC_S_INVALID_NAME_SYNTAX                                                 syscall.Errno = 1736\n\tRPC_S_UNSUPPORTED_NAME_SYNTAX                                             syscall.Errno = 1737\n\tRPC_S_UUID_NO_ADDRESS                                                     syscall.Errno = 1739\n\tRPC_S_DUPLICATE_ENDPOINT                                                  syscall.Errno = 1740\n\tRPC_S_UNKNOWN_AUTHN_TYPE                                                  syscall.Errno = 1741\n\tRPC_S_MAX_CALLS_TOO_SMALL                                                 syscall.Errno = 1742\n\tRPC_S_STRING_TOO_LONG                                                     syscall.Errno = 1743\n\tRPC_S_PROTSEQ_NOT_FOUND                                                   syscall.Errno = 1744\n\tRPC_S_PROCNUM_OUT_OF_RANGE                                                syscall.Errno = 1745\n\tRPC_S_BINDING_HAS_NO_AUTH                                                 syscall.Errno = 1746\n\tRPC_S_UNKNOWN_AUTHN_SERVICE                                               syscall.Errno = 1747\n\tRPC_S_UNKNOWN_AUTHN_LEVEL                                                 syscall.Errno = 1748\n\tRPC_S_INVALID_AUTH_IDENTITY                                               syscall.Errno = 1749\n\tRPC_S_UNKNOWN_AUTHZ_SERVICE                                               syscall.Errno = 1750\n\tEPT_S_INVALID_ENTRY                                                       syscall.Errno = 1751\n\tEPT_S_CANT_PERFORM_OP                                                     syscall.Errno = 1752\n\tEPT_S_NOT_REGISTERED                                                      syscall.Errno = 1753\n\tRPC_S_NOTHING_TO_EXPORT                                                   syscall.Errno = 1754\n\tRPC_S_INCOMPLETE_NAME                                                     syscall.Errno = 1755\n\tRPC_S_INVALID_VERS_OPTION                                                 syscall.Errno = 1756\n\tRPC_S_NO_MORE_MEMBERS                                                     syscall.Errno = 1757\n\tRPC_S_NOT_ALL_OBJS_UNEXPORTED                                             syscall.Errno = 1758\n\tRPC_S_INTERFACE_NOT_FOUND                                                 syscall.Errno = 1759\n\tRPC_S_ENTRY_ALREADY_EXISTS                                                syscall.Errno = 1760\n\tRPC_S_ENTRY_NOT_FOUND                                                     syscall.Errno = 1761\n\tRPC_S_NAME_SERVICE_UNAVAILABLE                                            syscall.Errno = 1762\n\tRPC_S_INVALID_NAF_ID                                                      syscall.Errno = 1763\n\tRPC_S_CANNOT_SUPPORT                                                      syscall.Errno = 1764\n\tRPC_S_NO_CONTEXT_AVAILABLE                                                syscall.Errno = 1765\n\tRPC_S_INTERNAL_ERROR                                                      syscall.Errno = 1766\n\tRPC_S_ZERO_DIVIDE                                                         syscall.Errno = 1767\n\tRPC_S_ADDRESS_ERROR                                                       syscall.Errno = 1768\n\tRPC_S_FP_DIV_ZERO                                                         syscall.Errno = 1769\n\tRPC_S_FP_UNDERFLOW                                                        syscall.Errno = 1770\n\tRPC_S_FP_OVERFLOW                                                         syscall.Errno = 1771\n\tRPC_X_NO_MORE_ENTRIES                                                     syscall.Errno = 1772\n\tRPC_X_SS_CHAR_TRANS_OPEN_FAIL                                             syscall.Errno = 1773\n\tRPC_X_SS_CHAR_TRANS_SHORT_FILE                                            syscall.Errno = 1774\n\tRPC_X_SS_IN_NULL_CONTEXT                                                  syscall.Errno = 1775\n\tRPC_X_SS_CONTEXT_DAMAGED                                                  syscall.Errno = 1777\n\tRPC_X_SS_HANDLES_MISMATCH                                                 syscall.Errno = 1778\n\tRPC_X_SS_CANNOT_GET_CALL_HANDLE                                           syscall.Errno = 1779\n\tRPC_X_NULL_REF_POINTER                                                    syscall.Errno = 1780\n\tRPC_X_ENUM_VALUE_OUT_OF_RANGE                                             syscall.Errno = 1781\n\tRPC_X_BYTE_COUNT_TOO_SMALL                                                syscall.Errno = 1782\n\tRPC_X_BAD_STUB_DATA                                                       syscall.Errno = 1783\n\tERROR_INVALID_USER_BUFFER                                                 syscall.Errno = 1784\n\tERROR_UNRECOGNIZED_MEDIA                                                  syscall.Errno = 1785\n\tERROR_NO_TRUST_LSA_SECRET                                                 syscall.Errno = 1786\n\tERROR_NO_TRUST_SAM_ACCOUNT                                                syscall.Errno = 1787\n\tERROR_TRUSTED_DOMAIN_FAILURE                                              syscall.Errno = 1788\n\tERROR_TRUSTED_RELATIONSHIP_FAILURE                                        syscall.Errno = 1789\n\tERROR_TRUST_FAILURE                                                       syscall.Errno = 1790\n\tRPC_S_CALL_IN_PROGRESS                                                    syscall.Errno = 1791\n\tERROR_NETLOGON_NOT_STARTED                                                syscall.Errno = 1792\n\tERROR_ACCOUNT_EXPIRED                                                     syscall.Errno = 1793\n\tERROR_REDIRECTOR_HAS_OPEN_HANDLES                                         syscall.Errno = 1794\n\tERROR_PRINTER_DRIVER_ALREADY_INSTALLED                                    syscall.Errno = 1795\n\tERROR_UNKNOWN_PORT                                                        syscall.Errno = 1796\n\tERROR_UNKNOWN_PRINTER_DRIVER                                              syscall.Errno = 1797\n\tERROR_UNKNOWN_PRINTPROCESSOR                                              syscall.Errno = 1798\n\tERROR_INVALID_SEPARATOR_FILE                                              syscall.Errno = 1799\n\tERROR_INVALID_PRIORITY                                                    syscall.Errno = 1800\n\tERROR_INVALID_PRINTER_NAME                                                syscall.Errno = 1801\n\tERROR_PRINTER_ALREADY_EXISTS                                              syscall.Errno = 1802\n\tERROR_INVALID_PRINTER_COMMAND                                             syscall.Errno = 1803\n\tERROR_INVALID_DATATYPE                                                    syscall.Errno = 1804\n\tERROR_INVALID_ENVIRONMENT                                                 syscall.Errno = 1805\n\tRPC_S_NO_MORE_BINDINGS                                                    syscall.Errno = 1806\n\tERROR_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                   syscall.Errno = 1807\n\tERROR_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                   syscall.Errno = 1808\n\tERROR_NOLOGON_SERVER_TRUST_ACCOUNT                                        syscall.Errno = 1809\n\tERROR_DOMAIN_TRUST_INCONSISTENT                                           syscall.Errno = 1810\n\tERROR_SERVER_HAS_OPEN_HANDLES                                             syscall.Errno = 1811\n\tERROR_RESOURCE_DATA_NOT_FOUND                                             syscall.Errno = 1812\n\tERROR_RESOURCE_TYPE_NOT_FOUND                                             syscall.Errno = 1813\n\tERROR_RESOURCE_NAME_NOT_FOUND                                             syscall.Errno = 1814\n\tERROR_RESOURCE_LANG_NOT_FOUND                                             syscall.Errno = 1815\n\tERROR_NOT_ENOUGH_QUOTA                                                    syscall.Errno = 1816\n\tRPC_S_NO_INTERFACES                                                       syscall.Errno = 1817\n\tRPC_S_CALL_CANCELLED                                                      syscall.Errno = 1818\n\tRPC_S_BINDING_INCOMPLETE                                                  syscall.Errno = 1819\n\tRPC_S_COMM_FAILURE                                                        syscall.Errno = 1820\n\tRPC_S_UNSUPPORTED_AUTHN_LEVEL                                             syscall.Errno = 1821\n\tRPC_S_NO_PRINC_NAME                                                       syscall.Errno = 1822\n\tRPC_S_NOT_RPC_ERROR                                                       syscall.Errno = 1823\n\tRPC_S_UUID_LOCAL_ONLY                                                     syscall.Errno = 1824\n\tRPC_S_SEC_PKG_ERROR                                                       syscall.Errno = 1825\n\tRPC_S_NOT_CANCELLED                                                       syscall.Errno = 1826\n\tRPC_X_INVALID_ES_ACTION                                                   syscall.Errno = 1827\n\tRPC_X_WRONG_ES_VERSION                                                    syscall.Errno = 1828\n\tRPC_X_WRONG_STUB_VERSION                                                  syscall.Errno = 1829\n\tRPC_X_INVALID_PIPE_OBJECT                                                 syscall.Errno = 1830\n\tRPC_X_WRONG_PIPE_ORDER                                                    syscall.Errno = 1831\n\tRPC_X_WRONG_PIPE_VERSION                                                  syscall.Errno = 1832\n\tRPC_S_COOKIE_AUTH_FAILED                                                  syscall.Errno = 1833\n\tRPC_S_DO_NOT_DISTURB                                                      syscall.Errno = 1834\n\tRPC_S_SYSTEM_HANDLE_COUNT_EXCEEDED                                        syscall.Errno = 1835\n\tRPC_S_SYSTEM_HANDLE_TYPE_MISMATCH                                         syscall.Errno = 1836\n\tRPC_S_GROUP_MEMBER_NOT_FOUND                                              syscall.Errno = 1898\n\tEPT_S_CANT_CREATE                                                         syscall.Errno = 1899\n\tRPC_S_INVALID_OBJECT                                                      syscall.Errno = 1900\n\tERROR_INVALID_TIME                                                        syscall.Errno = 1901\n\tERROR_INVALID_FORM_NAME                                                   syscall.Errno = 1902\n\tERROR_INVALID_FORM_SIZE                                                   syscall.Errno = 1903\n\tERROR_ALREADY_WAITING                                                     syscall.Errno = 1904\n\tERROR_PRINTER_DELETED                                                     syscall.Errno = 1905\n\tERROR_INVALID_PRINTER_STATE                                               syscall.Errno = 1906\n\tERROR_PASSWORD_MUST_CHANGE                                                syscall.Errno = 1907\n\tERROR_DOMAIN_CONTROLLER_NOT_FOUND                                         syscall.Errno = 1908\n\tERROR_ACCOUNT_LOCKED_OUT                                                  syscall.Errno = 1909\n\tOR_INVALID_OXID                                                           syscall.Errno = 1910\n\tOR_INVALID_OID                                                            syscall.Errno = 1911\n\tOR_INVALID_SET                                                            syscall.Errno = 1912\n\tRPC_S_SEND_INCOMPLETE                                                     syscall.Errno = 1913\n\tRPC_S_INVALID_ASYNC_HANDLE                                                syscall.Errno = 1914\n\tRPC_S_INVALID_ASYNC_CALL                                                  syscall.Errno = 1915\n\tRPC_X_PIPE_CLOSED                                                         syscall.Errno = 1916\n\tRPC_X_PIPE_DISCIPLINE_ERROR                                               syscall.Errno = 1917\n\tRPC_X_PIPE_EMPTY                                                          syscall.Errno = 1918\n\tERROR_NO_SITENAME                                                         syscall.Errno = 1919\n\tERROR_CANT_ACCESS_FILE                                                    syscall.Errno = 1920\n\tERROR_CANT_RESOLVE_FILENAME                                               syscall.Errno = 1921\n\tRPC_S_ENTRY_TYPE_MISMATCH                                                 syscall.Errno = 1922\n\tRPC_S_NOT_ALL_OBJS_EXPORTED                                               syscall.Errno = 1923\n\tRPC_S_INTERFACE_NOT_EXPORTED                                              syscall.Errno = 1924\n\tRPC_S_PROFILE_NOT_ADDED                                                   syscall.Errno = 1925\n\tRPC_S_PRF_ELT_NOT_ADDED                                                   syscall.Errno = 1926\n\tRPC_S_PRF_ELT_NOT_REMOVED                                                 syscall.Errno = 1927\n\tRPC_S_GRP_ELT_NOT_ADDED                                                   syscall.Errno = 1928\n\tRPC_S_GRP_ELT_NOT_REMOVED                                                 syscall.Errno = 1929\n\tERROR_KM_DRIVER_BLOCKED                                                   syscall.Errno = 1930\n\tERROR_CONTEXT_EXPIRED                                                     syscall.Errno = 1931\n\tERROR_PER_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1932\n\tERROR_ALL_USER_TRUST_QUOTA_EXCEEDED                                       syscall.Errno = 1933\n\tERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED                                    syscall.Errno = 1934\n\tERROR_AUTHENTICATION_FIREWALL_FAILED                                      syscall.Errno = 1935\n\tERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED                                    syscall.Errno = 1936\n\tERROR_NTLM_BLOCKED                                                        syscall.Errno = 1937\n\tERROR_PASSWORD_CHANGE_REQUIRED                                            syscall.Errno = 1938\n\tERROR_LOST_MODE_LOGON_RESTRICTION                                         syscall.Errno = 1939\n\tERROR_INVALID_PIXEL_FORMAT                                                syscall.Errno = 2000\n\tERROR_BAD_DRIVER                                                          syscall.Errno = 2001\n\tERROR_INVALID_WINDOW_STYLE                                                syscall.Errno = 2002\n\tERROR_METAFILE_NOT_SUPPORTED                                              syscall.Errno = 2003\n\tERROR_TRANSFORM_NOT_SUPPORTED                                             syscall.Errno = 2004\n\tERROR_CLIPPING_NOT_SUPPORTED                                              syscall.Errno = 2005\n\tERROR_INVALID_CMM                                                         syscall.Errno = 2010\n\tERROR_INVALID_PROFILE                                                     syscall.Errno = 2011\n\tERROR_TAG_NOT_FOUND                                                       syscall.Errno = 2012\n\tERROR_TAG_NOT_PRESENT                                                     syscall.Errno = 2013\n\tERROR_DUPLICATE_TAG                                                       syscall.Errno = 2014\n\tERROR_PROFILE_NOT_ASSOCIATED_WITH_DEVICE                                  syscall.Errno = 2015\n\tERROR_PROFILE_NOT_FOUND                                                   syscall.Errno = 2016\n\tERROR_INVALID_COLORSPACE                                                  syscall.Errno = 2017\n\tERROR_ICM_NOT_ENABLED                                                     syscall.Errno = 2018\n\tERROR_DELETING_ICM_XFORM                                                  syscall.Errno = 2019\n\tERROR_INVALID_TRANSFORM                                                   syscall.Errno = 2020\n\tERROR_COLORSPACE_MISMATCH                                                 syscall.Errno = 2021\n\tERROR_INVALID_COLORINDEX                                                  syscall.Errno = 2022\n\tERROR_PROFILE_DOES_NOT_MATCH_DEVICE                                       syscall.Errno = 2023\n\tERROR_CONNECTED_OTHER_PASSWORD                                            syscall.Errno = 2108\n\tERROR_CONNECTED_OTHER_PASSWORD_DEFAULT                                    syscall.Errno = 2109\n\tERROR_BAD_USERNAME                                                        syscall.Errno = 2202\n\tERROR_NOT_CONNECTED                                                       syscall.Errno = 2250\n\tERROR_OPEN_FILES                                                          syscall.Errno = 2401\n\tERROR_ACTIVE_CONNECTIONS                                                  syscall.Errno = 2402\n\tERROR_DEVICE_IN_USE                                                       syscall.Errno = 2404\n\tERROR_UNKNOWN_PRINT_MONITOR                                               syscall.Errno = 3000\n\tERROR_PRINTER_DRIVER_IN_USE                                               syscall.Errno = 3001\n\tERROR_SPOOL_FILE_NOT_FOUND                                                syscall.Errno = 3002\n\tERROR_SPL_NO_STARTDOC                                                     syscall.Errno = 3003\n\tERROR_SPL_NO_ADDJOB                                                       syscall.Errno = 3004\n\tERROR_PRINT_PROCESSOR_ALREADY_INSTALLED                                   syscall.Errno = 3005\n\tERROR_PRINT_MONITOR_ALREADY_INSTALLED                                     syscall.Errno = 3006\n\tERROR_INVALID_PRINT_MONITOR                                               syscall.Errno = 3007\n\tERROR_PRINT_MONITOR_IN_USE                                                syscall.Errno = 3008\n\tERROR_PRINTER_HAS_JOBS_QUEUED                                             syscall.Errno = 3009\n\tERROR_SUCCESS_REBOOT_REQUIRED                                             syscall.Errno = 3010\n\tERROR_SUCCESS_RESTART_REQUIRED                                            syscall.Errno = 3011\n\tERROR_PRINTER_NOT_FOUND                                                   syscall.Errno = 3012\n\tERROR_PRINTER_DRIVER_WARNED                                               syscall.Errno = 3013\n\tERROR_PRINTER_DRIVER_BLOCKED                                              syscall.Errno = 3014\n\tERROR_PRINTER_DRIVER_PACKAGE_IN_USE                                       syscall.Errno = 3015\n\tERROR_CORE_DRIVER_PACKAGE_NOT_FOUND                                       syscall.Errno = 3016\n\tERROR_FAIL_REBOOT_REQUIRED                                                syscall.Errno = 3017\n\tERROR_FAIL_REBOOT_INITIATED                                               syscall.Errno = 3018\n\tERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED                                      syscall.Errno = 3019\n\tERROR_PRINT_JOB_RESTART_REQUIRED                                          syscall.Errno = 3020\n\tERROR_INVALID_PRINTER_DRIVER_MANIFEST                                     syscall.Errno = 3021\n\tERROR_PRINTER_NOT_SHAREABLE                                               syscall.Errno = 3022\n\tERROR_REQUEST_PAUSED                                                      syscall.Errno = 3050\n\tERROR_APPEXEC_CONDITION_NOT_SATISFIED                                     syscall.Errno = 3060\n\tERROR_APPEXEC_HANDLE_INVALIDATED                                          syscall.Errno = 3061\n\tERROR_APPEXEC_INVALID_HOST_GENERATION                                     syscall.Errno = 3062\n\tERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                             syscall.Errno = 3063\n\tERROR_APPEXEC_INVALID_HOST_STATE                                          syscall.Errno = 3064\n\tERROR_APPEXEC_NO_DONOR                                                    syscall.Errno = 3065\n\tERROR_APPEXEC_HOST_ID_MISMATCH                                            syscall.Errno = 3066\n\tERROR_APPEXEC_UNKNOWN_USER                                                syscall.Errno = 3067\n\tERROR_IO_REISSUE_AS_CACHED                                                syscall.Errno = 3950\n\tERROR_WINS_INTERNAL                                                       syscall.Errno = 4000\n\tERROR_CAN_NOT_DEL_LOCAL_WINS                                              syscall.Errno = 4001\n\tERROR_STATIC_INIT                                                         syscall.Errno = 4002\n\tERROR_INC_BACKUP                                                          syscall.Errno = 4003\n\tERROR_FULL_BACKUP                                                         syscall.Errno = 4004\n\tERROR_REC_NON_EXISTENT                                                    syscall.Errno = 4005\n\tERROR_RPL_NOT_ALLOWED                                                     syscall.Errno = 4006\n\tPEERDIST_ERROR_CONTENTINFO_VERSION_UNSUPPORTED                            syscall.Errno = 4050\n\tPEERDIST_ERROR_CANNOT_PARSE_CONTENTINFO                                   syscall.Errno = 4051\n\tPEERDIST_ERROR_MISSING_DATA                                               syscall.Errno = 4052\n\tPEERDIST_ERROR_NO_MORE                                                    syscall.Errno = 4053\n\tPEERDIST_ERROR_NOT_INITIALIZED                                            syscall.Errno = 4054\n\tPEERDIST_ERROR_ALREADY_INITIALIZED                                        syscall.Errno = 4055\n\tPEERDIST_ERROR_SHUTDOWN_IN_PROGRESS                                       syscall.Errno = 4056\n\tPEERDIST_ERROR_INVALIDATED                                                syscall.Errno = 4057\n\tPEERDIST_ERROR_ALREADY_EXISTS                                             syscall.Errno = 4058\n\tPEERDIST_ERROR_OPERATION_NOTFOUND                                         syscall.Errno = 4059\n\tPEERDIST_ERROR_ALREADY_COMPLETED                                          syscall.Errno = 4060\n\tPEERDIST_ERROR_OUT_OF_BOUNDS                                              syscall.Errno = 4061\n\tPEERDIST_ERROR_VERSION_UNSUPPORTED                                        syscall.Errno = 4062\n\tPEERDIST_ERROR_INVALID_CONFIGURATION                                      syscall.Errno = 4063\n\tPEERDIST_ERROR_NOT_LICENSED                                               syscall.Errno = 4064\n\tPEERDIST_ERROR_SERVICE_UNAVAILABLE                                        syscall.Errno = 4065\n\tPEERDIST_ERROR_TRUST_FAILURE                                              syscall.Errno = 4066\n\tERROR_DHCP_ADDRESS_CONFLICT                                               syscall.Errno = 4100\n\tERROR_WMI_GUID_NOT_FOUND                                                  syscall.Errno = 4200\n\tERROR_WMI_INSTANCE_NOT_FOUND                                              syscall.Errno = 4201\n\tERROR_WMI_ITEMID_NOT_FOUND                                                syscall.Errno = 4202\n\tERROR_WMI_TRY_AGAIN                                                       syscall.Errno = 4203\n\tERROR_WMI_DP_NOT_FOUND                                                    syscall.Errno = 4204\n\tERROR_WMI_UNRESOLVED_INSTANCE_REF                                         syscall.Errno = 4205\n\tERROR_WMI_ALREADY_ENABLED                                                 syscall.Errno = 4206\n\tERROR_WMI_GUID_DISCONNECTED                                               syscall.Errno = 4207\n\tERROR_WMI_SERVER_UNAVAILABLE                                              syscall.Errno = 4208\n\tERROR_WMI_DP_FAILED                                                       syscall.Errno = 4209\n\tERROR_WMI_INVALID_MOF                                                     syscall.Errno = 4210\n\tERROR_WMI_INVALID_REGINFO                                                 syscall.Errno = 4211\n\tERROR_WMI_ALREADY_DISABLED                                                syscall.Errno = 4212\n\tERROR_WMI_READ_ONLY                                                       syscall.Errno = 4213\n\tERROR_WMI_SET_FAILURE                                                     syscall.Errno = 4214\n\tERROR_NOT_APPCONTAINER                                                    syscall.Errno = 4250\n\tERROR_APPCONTAINER_REQUIRED                                               syscall.Errno = 4251\n\tERROR_NOT_SUPPORTED_IN_APPCONTAINER                                       syscall.Errno = 4252\n\tERROR_INVALID_PACKAGE_SID_LENGTH                                          syscall.Errno = 4253\n\tERROR_INVALID_MEDIA                                                       syscall.Errno = 4300\n\tERROR_INVALID_LIBRARY                                                     syscall.Errno = 4301\n\tERROR_INVALID_MEDIA_POOL                                                  syscall.Errno = 4302\n\tERROR_DRIVE_MEDIA_MISMATCH                                                syscall.Errno = 4303\n\tERROR_MEDIA_OFFLINE                                                       syscall.Errno = 4304\n\tERROR_LIBRARY_OFFLINE                                                     syscall.Errno = 4305\n\tERROR_EMPTY                                                               syscall.Errno = 4306\n\tERROR_NOT_EMPTY                                                           syscall.Errno = 4307\n\tERROR_MEDIA_UNAVAILABLE                                                   syscall.Errno = 4308\n\tERROR_RESOURCE_DISABLED                                                   syscall.Errno = 4309\n\tERROR_INVALID_CLEANER                                                     syscall.Errno = 4310\n\tERROR_UNABLE_TO_CLEAN                                                     syscall.Errno = 4311\n\tERROR_OBJECT_NOT_FOUND                                                    syscall.Errno = 4312\n\tERROR_DATABASE_FAILURE                                                    syscall.Errno = 4313\n\tERROR_DATABASE_FULL                                                       syscall.Errno = 4314\n\tERROR_MEDIA_INCOMPATIBLE                                                  syscall.Errno = 4315\n\tERROR_RESOURCE_NOT_PRESENT                                                syscall.Errno = 4316\n\tERROR_INVALID_OPERATION                                                   syscall.Errno = 4317\n\tERROR_MEDIA_NOT_AVAILABLE                                                 syscall.Errno = 4318\n\tERROR_DEVICE_NOT_AVAILABLE                                                syscall.Errno = 4319\n\tERROR_REQUEST_REFUSED                                                     syscall.Errno = 4320\n\tERROR_INVALID_DRIVE_OBJECT                                                syscall.Errno = 4321\n\tERROR_LIBRARY_FULL                                                        syscall.Errno = 4322\n\tERROR_MEDIUM_NOT_ACCESSIBLE                                               syscall.Errno = 4323\n\tERROR_UNABLE_TO_LOAD_MEDIUM                                               syscall.Errno = 4324\n\tERROR_UNABLE_TO_INVENTORY_DRIVE                                           syscall.Errno = 4325\n\tERROR_UNABLE_TO_INVENTORY_SLOT                                            syscall.Errno = 4326\n\tERROR_UNABLE_TO_INVENTORY_TRANSPORT                                       syscall.Errno = 4327\n\tERROR_TRANSPORT_FULL                                                      syscall.Errno = 4328\n\tERROR_CONTROLLING_IEPORT                                                  syscall.Errno = 4329\n\tERROR_UNABLE_TO_EJECT_MOUNTED_MEDIA                                       syscall.Errno = 4330\n\tERROR_CLEANER_SLOT_SET                                                    syscall.Errno = 4331\n\tERROR_CLEANER_SLOT_NOT_SET                                                syscall.Errno = 4332\n\tERROR_CLEANER_CARTRIDGE_SPENT                                             syscall.Errno = 4333\n\tERROR_UNEXPECTED_OMID                                                     syscall.Errno = 4334\n\tERROR_CANT_DELETE_LAST_ITEM                                               syscall.Errno = 4335\n\tERROR_MESSAGE_EXCEEDS_MAX_SIZE                                            syscall.Errno = 4336\n\tERROR_VOLUME_CONTAINS_SYS_FILES                                           syscall.Errno = 4337\n\tERROR_INDIGENOUS_TYPE                                                     syscall.Errno = 4338\n\tERROR_NO_SUPPORTING_DRIVES                                                syscall.Errno = 4339\n\tERROR_CLEANER_CARTRIDGE_INSTALLED                                         syscall.Errno = 4340\n\tERROR_IEPORT_FULL                                                         syscall.Errno = 4341\n\tERROR_FILE_OFFLINE                                                        syscall.Errno = 4350\n\tERROR_REMOTE_STORAGE_NOT_ACTIVE                                           syscall.Errno = 4351\n\tERROR_REMOTE_STORAGE_MEDIA_ERROR                                          syscall.Errno = 4352\n\tERROR_NOT_A_REPARSE_POINT                                                 syscall.Errno = 4390\n\tERROR_REPARSE_ATTRIBUTE_CONFLICT                                          syscall.Errno = 4391\n\tERROR_INVALID_REPARSE_DATA                                                syscall.Errno = 4392\n\tERROR_REPARSE_TAG_INVALID                                                 syscall.Errno = 4393\n\tERROR_REPARSE_TAG_MISMATCH                                                syscall.Errno = 4394\n\tERROR_REPARSE_POINT_ENCOUNTERED                                           syscall.Errno = 4395\n\tERROR_APP_DATA_NOT_FOUND                                                  syscall.Errno = 4400\n\tERROR_APP_DATA_EXPIRED                                                    syscall.Errno = 4401\n\tERROR_APP_DATA_CORRUPT                                                    syscall.Errno = 4402\n\tERROR_APP_DATA_LIMIT_EXCEEDED                                             syscall.Errno = 4403\n\tERROR_APP_DATA_REBOOT_REQUIRED                                            syscall.Errno = 4404\n\tERROR_SECUREBOOT_ROLLBACK_DETECTED                                        syscall.Errno = 4420\n\tERROR_SECUREBOOT_POLICY_VIOLATION                                         syscall.Errno = 4421\n\tERROR_SECUREBOOT_INVALID_POLICY                                           syscall.Errno = 4422\n\tERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                               syscall.Errno = 4423\n\tERROR_SECUREBOOT_POLICY_NOT_SIGNED                                        syscall.Errno = 4424\n\tERROR_SECUREBOOT_NOT_ENABLED                                              syscall.Errno = 4425\n\tERROR_SECUREBOOT_FILE_REPLACED                                            syscall.Errno = 4426\n\tERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED                                    syscall.Errno = 4427\n\tERROR_SECUREBOOT_POLICY_UNKNOWN                                           syscall.Errno = 4428\n\tERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                       syscall.Errno = 4429\n\tERROR_SECUREBOOT_PLATFORM_ID_MISMATCH                                     syscall.Errno = 4430\n\tERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                 syscall.Errno = 4431\n\tERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                  syscall.Errno = 4432\n\tERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                             syscall.Errno = 4433\n\tERROR_SECUREBOOT_NOT_BASE_POLICY                                          syscall.Errno = 4434\n\tERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                  syscall.Errno = 4435\n\tERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED                                      syscall.Errno = 4440\n\tERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                     syscall.Errno = 4441\n\tERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED                                     syscall.Errno = 4442\n\tERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                    syscall.Errno = 4443\n\tERROR_ALREADY_HAS_STREAM_ID                                               syscall.Errno = 4444\n\tERROR_SMR_GARBAGE_COLLECTION_REQUIRED                                     syscall.Errno = 4445\n\tERROR_WOF_WIM_HEADER_CORRUPT                                              syscall.Errno = 4446\n\tERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT                                      syscall.Errno = 4447\n\tERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT                                     syscall.Errno = 4448\n\tERROR_VOLUME_NOT_SIS_ENABLED                                              syscall.Errno = 4500\n\tERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                  syscall.Errno = 4550\n\tERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION                                   syscall.Errno = 4551\n\tERROR_SYSTEM_INTEGRITY_INVALID_POLICY                                     syscall.Errno = 4552\n\tERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                  syscall.Errno = 4553\n\tERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                  syscall.Errno = 4554\n\tERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                 syscall.Errno = 4555\n\tERROR_VSM_NOT_INITIALIZED                                                 syscall.Errno = 4560\n\tERROR_VSM_DMA_PROTECTION_NOT_IN_USE                                       syscall.Errno = 4561\n\tERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED                                    syscall.Errno = 4570\n\tERROR_PLATFORM_MANIFEST_INVALID                                           syscall.Errno = 4571\n\tERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                               syscall.Errno = 4572\n\tERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                            syscall.Errno = 4573\n\tERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                               syscall.Errno = 4574\n\tERROR_PLATFORM_MANIFEST_NOT_ACTIVE                                        syscall.Errno = 4575\n\tERROR_PLATFORM_MANIFEST_NOT_SIGNED                                        syscall.Errno = 4576\n\tERROR_DEPENDENT_RESOURCE_EXISTS                                           syscall.Errno = 5001\n\tERROR_DEPENDENCY_NOT_FOUND                                                syscall.Errno = 5002\n\tERROR_DEPENDENCY_ALREADY_EXISTS                                           syscall.Errno = 5003\n\tERROR_RESOURCE_NOT_ONLINE                                                 syscall.Errno = 5004\n\tERROR_HOST_NODE_NOT_AVAILABLE                                             syscall.Errno = 5005\n\tERROR_RESOURCE_NOT_AVAILABLE                                              syscall.Errno = 5006\n\tERROR_RESOURCE_NOT_FOUND                                                  syscall.Errno = 5007\n\tERROR_SHUTDOWN_CLUSTER                                                    syscall.Errno = 5008\n\tERROR_CANT_EVICT_ACTIVE_NODE                                              syscall.Errno = 5009\n\tERROR_OBJECT_ALREADY_EXISTS                                               syscall.Errno = 5010\n\tERROR_OBJECT_IN_LIST                                                      syscall.Errno = 5011\n\tERROR_GROUP_NOT_AVAILABLE                                                 syscall.Errno = 5012\n\tERROR_GROUP_NOT_FOUND                                                     syscall.Errno = 5013\n\tERROR_GROUP_NOT_ONLINE                                                    syscall.Errno = 5014\n\tERROR_HOST_NODE_NOT_RESOURCE_OWNER                                        syscall.Errno = 5015\n\tERROR_HOST_NODE_NOT_GROUP_OWNER                                           syscall.Errno = 5016\n\tERROR_RESMON_CREATE_FAILED                                                syscall.Errno = 5017\n\tERROR_RESMON_ONLINE_FAILED                                                syscall.Errno = 5018\n\tERROR_RESOURCE_ONLINE                                                     syscall.Errno = 5019\n\tERROR_QUORUM_RESOURCE                                                     syscall.Errno = 5020\n\tERROR_NOT_QUORUM_CAPABLE                                                  syscall.Errno = 5021\n\tERROR_CLUSTER_SHUTTING_DOWN                                               syscall.Errno = 5022\n\tERROR_INVALID_STATE                                                       syscall.Errno = 5023\n\tERROR_RESOURCE_PROPERTIES_STORED                                          syscall.Errno = 5024\n\tERROR_NOT_QUORUM_CLASS                                                    syscall.Errno = 5025\n\tERROR_CORE_RESOURCE                                                       syscall.Errno = 5026\n\tERROR_QUORUM_RESOURCE_ONLINE_FAILED                                       syscall.Errno = 5027\n\tERROR_QUORUMLOG_OPEN_FAILED                                               syscall.Errno = 5028\n\tERROR_CLUSTERLOG_CORRUPT                                                  syscall.Errno = 5029\n\tERROR_CLUSTERLOG_RECORD_EXCEEDS_MAXSIZE                                   syscall.Errno = 5030\n\tERROR_CLUSTERLOG_EXCEEDS_MAXSIZE                                          syscall.Errno = 5031\n\tERROR_CLUSTERLOG_CHKPOINT_NOT_FOUND                                       syscall.Errno = 5032\n\tERROR_CLUSTERLOG_NOT_ENOUGH_SPACE                                         syscall.Errno = 5033\n\tERROR_QUORUM_OWNER_ALIVE                                                  syscall.Errno = 5034\n\tERROR_NETWORK_NOT_AVAILABLE                                               syscall.Errno = 5035\n\tERROR_NODE_NOT_AVAILABLE                                                  syscall.Errno = 5036\n\tERROR_ALL_NODES_NOT_AVAILABLE                                             syscall.Errno = 5037\n\tERROR_RESOURCE_FAILED                                                     syscall.Errno = 5038\n\tERROR_CLUSTER_INVALID_NODE                                                syscall.Errno = 5039\n\tERROR_CLUSTER_NODE_EXISTS                                                 syscall.Errno = 5040\n\tERROR_CLUSTER_JOIN_IN_PROGRESS                                            syscall.Errno = 5041\n\tERROR_CLUSTER_NODE_NOT_FOUND                                              syscall.Errno = 5042\n\tERROR_CLUSTER_LOCAL_NODE_NOT_FOUND                                        syscall.Errno = 5043\n\tERROR_CLUSTER_NETWORK_EXISTS                                              syscall.Errno = 5044\n\tERROR_CLUSTER_NETWORK_NOT_FOUND                                           syscall.Errno = 5045\n\tERROR_CLUSTER_NETINTERFACE_EXISTS                                         syscall.Errno = 5046\n\tERROR_CLUSTER_NETINTERFACE_NOT_FOUND                                      syscall.Errno = 5047\n\tERROR_CLUSTER_INVALID_REQUEST                                             syscall.Errno = 5048\n\tERROR_CLUSTER_INVALID_NETWORK_PROVIDER                                    syscall.Errno = 5049\n\tERROR_CLUSTER_NODE_DOWN                                                   syscall.Errno = 5050\n\tERROR_CLUSTER_NODE_UNREACHABLE                                            syscall.Errno = 5051\n\tERROR_CLUSTER_NODE_NOT_MEMBER                                             syscall.Errno = 5052\n\tERROR_CLUSTER_JOIN_NOT_IN_PROGRESS                                        syscall.Errno = 5053\n\tERROR_CLUSTER_INVALID_NETWORK                                             syscall.Errno = 5054\n\tERROR_CLUSTER_NODE_UP                                                     syscall.Errno = 5056\n\tERROR_CLUSTER_IPADDR_IN_USE                                               syscall.Errno = 5057\n\tERROR_CLUSTER_NODE_NOT_PAUSED                                             syscall.Errno = 5058\n\tERROR_CLUSTER_NO_SECURITY_CONTEXT                                         syscall.Errno = 5059\n\tERROR_CLUSTER_NETWORK_NOT_INTERNAL                                        syscall.Errno = 5060\n\tERROR_CLUSTER_NODE_ALREADY_UP                                             syscall.Errno = 5061\n\tERROR_CLUSTER_NODE_ALREADY_DOWN                                           syscall.Errno = 5062\n\tERROR_CLUSTER_NETWORK_ALREADY_ONLINE                                      syscall.Errno = 5063\n\tERROR_CLUSTER_NETWORK_ALREADY_OFFLINE                                     syscall.Errno = 5064\n\tERROR_CLUSTER_NODE_ALREADY_MEMBER                                         syscall.Errno = 5065\n\tERROR_CLUSTER_LAST_INTERNAL_NETWORK                                       syscall.Errno = 5066\n\tERROR_CLUSTER_NETWORK_HAS_DEPENDENTS                                      syscall.Errno = 5067\n\tERROR_INVALID_OPERATION_ON_QUORUM                                         syscall.Errno = 5068\n\tERROR_DEPENDENCY_NOT_ALLOWED                                              syscall.Errno = 5069\n\tERROR_CLUSTER_NODE_PAUSED                                                 syscall.Errno = 5070\n\tERROR_NODE_CANT_HOST_RESOURCE                                             syscall.Errno = 5071\n\tERROR_CLUSTER_NODE_NOT_READY                                              syscall.Errno = 5072\n\tERROR_CLUSTER_NODE_SHUTTING_DOWN                                          syscall.Errno = 5073\n\tERROR_CLUSTER_JOIN_ABORTED                                                syscall.Errno = 5074\n\tERROR_CLUSTER_INCOMPATIBLE_VERSIONS                                       syscall.Errno = 5075\n\tERROR_CLUSTER_MAXNUM_OF_RESOURCES_EXCEEDED                                syscall.Errno = 5076\n\tERROR_CLUSTER_SYSTEM_CONFIG_CHANGED                                       syscall.Errno = 5077\n\tERROR_CLUSTER_RESOURCE_TYPE_NOT_FOUND                                     syscall.Errno = 5078\n\tERROR_CLUSTER_RESTYPE_NOT_SUPPORTED                                       syscall.Errno = 5079\n\tERROR_CLUSTER_RESNAME_NOT_FOUND                                           syscall.Errno = 5080\n\tERROR_CLUSTER_NO_RPC_PACKAGES_REGISTERED                                  syscall.Errno = 5081\n\tERROR_CLUSTER_OWNER_NOT_IN_PREFLIST                                       syscall.Errno = 5082\n\tERROR_CLUSTER_DATABASE_SEQMISMATCH                                        syscall.Errno = 5083\n\tERROR_RESMON_INVALID_STATE                                                syscall.Errno = 5084\n\tERROR_CLUSTER_GUM_NOT_LOCKER                                              syscall.Errno = 5085\n\tERROR_QUORUM_DISK_NOT_FOUND                                               syscall.Errno = 5086\n\tERROR_DATABASE_BACKUP_CORRUPT                                             syscall.Errno = 5087\n\tERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT                                   syscall.Errno = 5088\n\tERROR_RESOURCE_PROPERTY_UNCHANGEABLE                                      syscall.Errno = 5089\n\tERROR_NO_ADMIN_ACCESS_POINT                                               syscall.Errno = 5090\n\tERROR_CLUSTER_MEMBERSHIP_INVALID_STATE                                    syscall.Errno = 5890\n\tERROR_CLUSTER_QUORUMLOG_NOT_FOUND                                         syscall.Errno = 5891\n\tERROR_CLUSTER_MEMBERSHIP_HALT                                             syscall.Errno = 5892\n\tERROR_CLUSTER_INSTANCE_ID_MISMATCH                                        syscall.Errno = 5893\n\tERROR_CLUSTER_NETWORK_NOT_FOUND_FOR_IP                                    syscall.Errno = 5894\n\tERROR_CLUSTER_PROPERTY_DATA_TYPE_MISMATCH                                 syscall.Errno = 5895\n\tERROR_CLUSTER_EVICT_WITHOUT_CLEANUP                                       syscall.Errno = 5896\n\tERROR_CLUSTER_PARAMETER_MISMATCH                                          syscall.Errno = 5897\n\tERROR_NODE_CANNOT_BE_CLUSTERED                                            syscall.Errno = 5898\n\tERROR_CLUSTER_WRONG_OS_VERSION                                            syscall.Errno = 5899\n\tERROR_CLUSTER_CANT_CREATE_DUP_CLUSTER_NAME                                syscall.Errno = 5900\n\tERROR_CLUSCFG_ALREADY_COMMITTED                                           syscall.Errno = 5901\n\tERROR_CLUSCFG_ROLLBACK_FAILED                                             syscall.Errno = 5902\n\tERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT                           syscall.Errno = 5903\n\tERROR_CLUSTER_OLD_VERSION                                                 syscall.Errno = 5904\n\tERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME                               syscall.Errno = 5905\n\tERROR_CLUSTER_NO_NET_ADAPTERS                                             syscall.Errno = 5906\n\tERROR_CLUSTER_POISONED                                                    syscall.Errno = 5907\n\tERROR_CLUSTER_GROUP_MOVING                                                syscall.Errno = 5908\n\tERROR_CLUSTER_RESOURCE_TYPE_BUSY                                          syscall.Errno = 5909\n\tERROR_RESOURCE_CALL_TIMED_OUT                                             syscall.Errno = 5910\n\tERROR_INVALID_CLUSTER_IPV6_ADDRESS                                        syscall.Errno = 5911\n\tERROR_CLUSTER_INTERNAL_INVALID_FUNCTION                                   syscall.Errno = 5912\n\tERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS                                     syscall.Errno = 5913\n\tERROR_CLUSTER_PARTIAL_SEND                                                syscall.Errno = 5914\n\tERROR_CLUSTER_REGISTRY_INVALID_FUNCTION                                   syscall.Errno = 5915\n\tERROR_CLUSTER_INVALID_STRING_TERMINATION                                  syscall.Errno = 5916\n\tERROR_CLUSTER_INVALID_STRING_FORMAT                                       syscall.Errno = 5917\n\tERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS                            syscall.Errno = 5918\n\tERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS                        syscall.Errno = 5919\n\tERROR_CLUSTER_NULL_DATA                                                   syscall.Errno = 5920\n\tERROR_CLUSTER_PARTIAL_READ                                                syscall.Errno = 5921\n\tERROR_CLUSTER_PARTIAL_WRITE                                               syscall.Errno = 5922\n\tERROR_CLUSTER_CANT_DESERIALIZE_DATA                                       syscall.Errno = 5923\n\tERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT                                syscall.Errno = 5924\n\tERROR_CLUSTER_NO_QUORUM                                                   syscall.Errno = 5925\n\tERROR_CLUSTER_INVALID_IPV6_NETWORK                                        syscall.Errno = 5926\n\tERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK                                 syscall.Errno = 5927\n\tERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP                                    syscall.Errno = 5928\n\tERROR_DEPENDENCY_TREE_TOO_COMPLEX                                         syscall.Errno = 5929\n\tERROR_EXCEPTION_IN_RESOURCE_CALL                                          syscall.Errno = 5930\n\tERROR_CLUSTER_RHS_FAILED_INITIALIZATION                                   syscall.Errno = 5931\n\tERROR_CLUSTER_NOT_INSTALLED                                               syscall.Errno = 5932\n\tERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE                   syscall.Errno = 5933\n\tERROR_CLUSTER_MAX_NODES_IN_CLUSTER                                        syscall.Errno = 5934\n\tERROR_CLUSTER_TOO_MANY_NODES                                              syscall.Errno = 5935\n\tERROR_CLUSTER_OBJECT_ALREADY_USED                                         syscall.Errno = 5936\n\tERROR_NONCORE_GROUPS_FOUND                                                syscall.Errno = 5937\n\tERROR_FILE_SHARE_RESOURCE_CONFLICT                                        syscall.Errno = 5938\n\tERROR_CLUSTER_EVICT_INVALID_REQUEST                                       syscall.Errno = 5939\n\tERROR_CLUSTER_SINGLETON_RESOURCE                                          syscall.Errno = 5940\n\tERROR_CLUSTER_GROUP_SINGLETON_RESOURCE                                    syscall.Errno = 5941\n\tERROR_CLUSTER_RESOURCE_PROVIDER_FAILED                                    syscall.Errno = 5942\n\tERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR                                syscall.Errno = 5943\n\tERROR_CLUSTER_GROUP_BUSY                                                  syscall.Errno = 5944\n\tERROR_CLUSTER_NOT_SHARED_VOLUME                                           syscall.Errno = 5945\n\tERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR                                 syscall.Errno = 5946\n\tERROR_CLUSTER_SHARED_VOLUMES_IN_USE                                       syscall.Errno = 5947\n\tERROR_CLUSTER_USE_SHARED_VOLUMES_API                                      syscall.Errno = 5948\n\tERROR_CLUSTER_BACKUP_IN_PROGRESS                                          syscall.Errno = 5949\n\tERROR_NON_CSV_PATH                                                        syscall.Errno = 5950\n\tERROR_CSV_VOLUME_NOT_LOCAL                                                syscall.Errno = 5951\n\tERROR_CLUSTER_WATCHDOG_TERMINATING                                        syscall.Errno = 5952\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES                     syscall.Errno = 5953\n\tERROR_CLUSTER_INVALID_NODE_WEIGHT                                         syscall.Errno = 5954\n\tERROR_CLUSTER_RESOURCE_VETOED_CALL                                        syscall.Errno = 5955\n\tERROR_RESMON_SYSTEM_RESOURCES_LACKING                                     syscall.Errno = 5956\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION    syscall.Errno = 5957\n\tERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE         syscall.Errno = 5958\n\tERROR_CLUSTER_GROUP_QUEUED                                                syscall.Errno = 5959\n\tERROR_CLUSTER_RESOURCE_LOCKED_STATUS                                      syscall.Errno = 5960\n\tERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED                          syscall.Errno = 5961\n\tERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS                                      syscall.Errno = 5962\n\tERROR_CLUSTER_DISK_NOT_CONNECTED                                          syscall.Errno = 5963\n\tERROR_DISK_NOT_CSV_CAPABLE                                                syscall.Errno = 5964\n\tERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE                                   syscall.Errno = 5965\n\tERROR_CLUSTER_SHARED_VOLUME_REDIRECTED                                    syscall.Errno = 5966\n\tERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED                                syscall.Errno = 5967\n\tERROR_CLUSTER_CANNOT_RETURN_PROPERTIES                                    syscall.Errno = 5968\n\tERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES  syscall.Errno = 5969\n\tERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE                             syscall.Errno = 5970\n\tERROR_CLUSTER_AFFINITY_CONFLICT                                           syscall.Errno = 5971\n\tERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE                         syscall.Errno = 5972\n\tERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS                               syscall.Errno = 5973\n\tERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED                            syscall.Errno = 5974\n\tERROR_CLUSTER_UPGRADE_RESTART_REQUIRED                                    syscall.Errno = 5975\n\tERROR_CLUSTER_UPGRADE_IN_PROGRESS                                         syscall.Errno = 5976\n\tERROR_CLUSTER_UPGRADE_INCOMPLETE                                          syscall.Errno = 5977\n\tERROR_CLUSTER_NODE_IN_GRACE_PERIOD                                        syscall.Errno = 5978\n\tERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT                                        syscall.Errno = 5979\n\tERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER                                      syscall.Errno = 5980\n\tERROR_CLUSTER_RESOURCE_NOT_MONITORED                                      syscall.Errno = 5981\n\tERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED                       syscall.Errno = 5982\n\tERROR_CLUSTER_RESOURCE_IS_REPLICATED                                      syscall.Errno = 5983\n\tERROR_CLUSTER_NODE_ISOLATED                                               syscall.Errno = 5984\n\tERROR_CLUSTER_NODE_QUARANTINED                                            syscall.Errno = 5985\n\tERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED                            syscall.Errno = 5986\n\tERROR_CLUSTER_SPACE_DEGRADED                                              syscall.Errno = 5987\n\tERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED                              syscall.Errno = 5988\n\tERROR_CLUSTER_CSV_INVALID_HANDLE                                          syscall.Errno = 5989\n\tERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                           syscall.Errno = 5990\n\tERROR_GROUPSET_NOT_AVAILABLE                                              syscall.Errno = 5991\n\tERROR_GROUPSET_NOT_FOUND                                                  syscall.Errno = 5992\n\tERROR_GROUPSET_CANT_PROVIDE                                               syscall.Errno = 5993\n\tERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND                               syscall.Errno = 5994\n\tERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY                              syscall.Errno = 5995\n\tERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION                          syscall.Errno = 5996\n\tERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS                          syscall.Errno = 5997\n\tERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME                      syscall.Errno = 5998\n\tERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE                           syscall.Errno = 5999\n\tERROR_ENCRYPTION_FAILED                                                   syscall.Errno = 6000\n\tERROR_DECRYPTION_FAILED                                                   syscall.Errno = 6001\n\tERROR_FILE_ENCRYPTED                                                      syscall.Errno = 6002\n\tERROR_NO_RECOVERY_POLICY                                                  syscall.Errno = 6003\n\tERROR_NO_EFS                                                              syscall.Errno = 6004\n\tERROR_WRONG_EFS                                                           syscall.Errno = 6005\n\tERROR_NO_USER_KEYS                                                        syscall.Errno = 6006\n\tERROR_FILE_NOT_ENCRYPTED                                                  syscall.Errno = 6007\n\tERROR_NOT_EXPORT_FORMAT                                                   syscall.Errno = 6008\n\tERROR_FILE_READ_ONLY                                                      syscall.Errno = 6009\n\tERROR_DIR_EFS_DISALLOWED                                                  syscall.Errno = 6010\n\tERROR_EFS_SERVER_NOT_TRUSTED                                              syscall.Errno = 6011\n\tERROR_BAD_RECOVERY_POLICY                                                 syscall.Errno = 6012\n\tERROR_EFS_ALG_BLOB_TOO_BIG                                                syscall.Errno = 6013\n\tERROR_VOLUME_NOT_SUPPORT_EFS                                              syscall.Errno = 6014\n\tERROR_EFS_DISABLED                                                        syscall.Errno = 6015\n\tERROR_EFS_VERSION_NOT_SUPPORT                                             syscall.Errno = 6016\n\tERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                               syscall.Errno = 6017\n\tERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER                                    syscall.Errno = 6018\n\tERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                               syscall.Errno = 6019\n\tERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                    syscall.Errno = 6020\n\tERROR_CS_ENCRYPTION_FILE_NOT_CSE                                          syscall.Errno = 6021\n\tERROR_ENCRYPTION_POLICY_DENIES_OPERATION                                  syscall.Errno = 6022\n\tERROR_WIP_ENCRYPTION_FAILED                                               syscall.Errno = 6023\n\tERROR_NO_BROWSER_SERVERS_FOUND                                            syscall.Errno = 6118\n\tSCHED_E_SERVICE_NOT_LOCALSYSTEM                                           syscall.Errno = 6200\n\tERROR_LOG_SECTOR_INVALID                                                  syscall.Errno = 6600\n\tERROR_LOG_SECTOR_PARITY_INVALID                                           syscall.Errno = 6601\n\tERROR_LOG_SECTOR_REMAPPED                                                 syscall.Errno = 6602\n\tERROR_LOG_BLOCK_INCOMPLETE                                                syscall.Errno = 6603\n\tERROR_LOG_INVALID_RANGE                                                   syscall.Errno = 6604\n\tERROR_LOG_BLOCKS_EXHAUSTED                                                syscall.Errno = 6605\n\tERROR_LOG_READ_CONTEXT_INVALID                                            syscall.Errno = 6606\n\tERROR_LOG_RESTART_INVALID                                                 syscall.Errno = 6607\n\tERROR_LOG_BLOCK_VERSION                                                   syscall.Errno = 6608\n\tERROR_LOG_BLOCK_INVALID                                                   syscall.Errno = 6609\n\tERROR_LOG_READ_MODE_INVALID                                               syscall.Errno = 6610\n\tERROR_LOG_NO_RESTART                                                      syscall.Errno = 6611\n\tERROR_LOG_METADATA_CORRUPT                                                syscall.Errno = 6612\n\tERROR_LOG_METADATA_INVALID                                                syscall.Errno = 6613\n\tERROR_LOG_METADATA_INCONSISTENT                                           syscall.Errno = 6614\n\tERROR_LOG_RESERVATION_INVALID                                             syscall.Errno = 6615\n\tERROR_LOG_CANT_DELETE                                                     syscall.Errno = 6616\n\tERROR_LOG_CONTAINER_LIMIT_EXCEEDED                                        syscall.Errno = 6617\n\tERROR_LOG_START_OF_LOG                                                    syscall.Errno = 6618\n\tERROR_LOG_POLICY_ALREADY_INSTALLED                                        syscall.Errno = 6619\n\tERROR_LOG_POLICY_NOT_INSTALLED                                            syscall.Errno = 6620\n\tERROR_LOG_POLICY_INVALID                                                  syscall.Errno = 6621\n\tERROR_LOG_POLICY_CONFLICT                                                 syscall.Errno = 6622\n\tERROR_LOG_PINNED_ARCHIVE_TAIL                                             syscall.Errno = 6623\n\tERROR_LOG_RECORD_NONEXISTENT                                              syscall.Errno = 6624\n\tERROR_LOG_RECORDS_RESERVED_INVALID                                        syscall.Errno = 6625\n\tERROR_LOG_SPACE_RESERVED_INVALID                                          syscall.Errno = 6626\n\tERROR_LOG_TAIL_INVALID                                                    syscall.Errno = 6627\n\tERROR_LOG_FULL                                                            syscall.Errno = 6628\n\tERROR_COULD_NOT_RESIZE_LOG                                                syscall.Errno = 6629\n\tERROR_LOG_MULTIPLEXED                                                     syscall.Errno = 6630\n\tERROR_LOG_DEDICATED                                                       syscall.Errno = 6631\n\tERROR_LOG_ARCHIVE_NOT_IN_PROGRESS                                         syscall.Errno = 6632\n\tERROR_LOG_ARCHIVE_IN_PROGRESS                                             syscall.Errno = 6633\n\tERROR_LOG_EPHEMERAL                                                       syscall.Errno = 6634\n\tERROR_LOG_NOT_ENOUGH_CONTAINERS                                           syscall.Errno = 6635\n\tERROR_LOG_CLIENT_ALREADY_REGISTERED                                       syscall.Errno = 6636\n\tERROR_LOG_CLIENT_NOT_REGISTERED                                           syscall.Errno = 6637\n\tERROR_LOG_FULL_HANDLER_IN_PROGRESS                                        syscall.Errno = 6638\n\tERROR_LOG_CONTAINER_READ_FAILED                                           syscall.Errno = 6639\n\tERROR_LOG_CONTAINER_WRITE_FAILED                                          syscall.Errno = 6640\n\tERROR_LOG_CONTAINER_OPEN_FAILED                                           syscall.Errno = 6641\n\tERROR_LOG_CONTAINER_STATE_INVALID                                         syscall.Errno = 6642\n\tERROR_LOG_STATE_INVALID                                                   syscall.Errno = 6643\n\tERROR_LOG_PINNED                                                          syscall.Errno = 6644\n\tERROR_LOG_METADATA_FLUSH_FAILED                                           syscall.Errno = 6645\n\tERROR_LOG_INCONSISTENT_SECURITY                                           syscall.Errno = 6646\n\tERROR_LOG_APPENDED_FLUSH_FAILED                                           syscall.Errno = 6647\n\tERROR_LOG_PINNED_RESERVATION                                              syscall.Errno = 6648\n\tERROR_INVALID_TRANSACTION                                                 syscall.Errno = 6700\n\tERROR_TRANSACTION_NOT_ACTIVE                                              syscall.Errno = 6701\n\tERROR_TRANSACTION_REQUEST_NOT_VALID                                       syscall.Errno = 6702\n\tERROR_TRANSACTION_NOT_REQUESTED                                           syscall.Errno = 6703\n\tERROR_TRANSACTION_ALREADY_ABORTED                                         syscall.Errno = 6704\n\tERROR_TRANSACTION_ALREADY_COMMITTED                                       syscall.Errno = 6705\n\tERROR_TM_INITIALIZATION_FAILED                                            syscall.Errno = 6706\n\tERROR_RESOURCEMANAGER_READ_ONLY                                           syscall.Errno = 6707\n\tERROR_TRANSACTION_NOT_JOINED                                              syscall.Errno = 6708\n\tERROR_TRANSACTION_SUPERIOR_EXISTS                                         syscall.Errno = 6709\n\tERROR_CRM_PROTOCOL_ALREADY_EXISTS                                         syscall.Errno = 6710\n\tERROR_TRANSACTION_PROPAGATION_FAILED                                      syscall.Errno = 6711\n\tERROR_CRM_PROTOCOL_NOT_FOUND                                              syscall.Errno = 6712\n\tERROR_TRANSACTION_INVALID_MARSHALL_BUFFER                                 syscall.Errno = 6713\n\tERROR_CURRENT_TRANSACTION_NOT_VALID                                       syscall.Errno = 6714\n\tERROR_TRANSACTION_NOT_FOUND                                               syscall.Errno = 6715\n\tERROR_RESOURCEMANAGER_NOT_FOUND                                           syscall.Errno = 6716\n\tERROR_ENLISTMENT_NOT_FOUND                                                syscall.Errno = 6717\n\tERROR_TRANSACTIONMANAGER_NOT_FOUND                                        syscall.Errno = 6718\n\tERROR_TRANSACTIONMANAGER_NOT_ONLINE                                       syscall.Errno = 6719\n\tERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                          syscall.Errno = 6720\n\tERROR_TRANSACTION_NOT_ROOT                                                syscall.Errno = 6721\n\tERROR_TRANSACTION_OBJECT_EXPIRED                                          syscall.Errno = 6722\n\tERROR_TRANSACTION_RESPONSE_NOT_ENLISTED                                   syscall.Errno = 6723\n\tERROR_TRANSACTION_RECORD_TOO_LONG                                         syscall.Errno = 6724\n\tERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED                                  syscall.Errno = 6725\n\tERROR_TRANSACTION_INTEGRITY_VIOLATED                                      syscall.Errno = 6726\n\tERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH                                syscall.Errno = 6727\n\tERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                    syscall.Errno = 6728\n\tERROR_TRANSACTION_MUST_WRITETHROUGH                                       syscall.Errno = 6729\n\tERROR_TRANSACTION_NO_SUPERIOR                                             syscall.Errno = 6730\n\tERROR_HEURISTIC_DAMAGE_POSSIBLE                                           syscall.Errno = 6731\n\tERROR_TRANSACTIONAL_CONFLICT                                              syscall.Errno = 6800\n\tERROR_RM_NOT_ACTIVE                                                       syscall.Errno = 6801\n\tERROR_RM_METADATA_CORRUPT                                                 syscall.Errno = 6802\n\tERROR_DIRECTORY_NOT_RM                                                    syscall.Errno = 6803\n\tERROR_TRANSACTIONS_UNSUPPORTED_REMOTE                                     syscall.Errno = 6805\n\tERROR_LOG_RESIZE_INVALID_SIZE                                             syscall.Errno = 6806\n\tERROR_OBJECT_NO_LONGER_EXISTS                                             syscall.Errno = 6807\n\tERROR_STREAM_MINIVERSION_NOT_FOUND                                        syscall.Errno = 6808\n\tERROR_STREAM_MINIVERSION_NOT_VALID                                        syscall.Errno = 6809\n\tERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                 syscall.Errno = 6810\n\tERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                            syscall.Errno = 6811\n\tERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS                                syscall.Errno = 6812\n\tERROR_REMOTE_FILE_VERSION_MISMATCH                                        syscall.Errno = 6814\n\tERROR_HANDLE_NO_LONGER_VALID                                              syscall.Errno = 6815\n\tERROR_NO_TXF_METADATA                                                     syscall.Errno = 6816\n\tERROR_LOG_CORRUPTION_DETECTED                                             syscall.Errno = 6817\n\tERROR_CANT_RECOVER_WITH_HANDLE_OPEN                                       syscall.Errno = 6818\n\tERROR_RM_DISCONNECTED                                                     syscall.Errno = 6819\n\tERROR_ENLISTMENT_NOT_SUPERIOR                                             syscall.Errno = 6820\n\tERROR_RECOVERY_NOT_NEEDED                                                 syscall.Errno = 6821\n\tERROR_RM_ALREADY_STARTED                                                  syscall.Errno = 6822\n\tERROR_FILE_IDENTITY_NOT_PERSISTENT                                        syscall.Errno = 6823\n\tERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                 syscall.Errno = 6824\n\tERROR_CANT_CROSS_RM_BOUNDARY                                              syscall.Errno = 6825\n\tERROR_TXF_DIR_NOT_EMPTY                                                   syscall.Errno = 6826\n\tERROR_INDOUBT_TRANSACTIONS_EXIST                                          syscall.Errno = 6827\n\tERROR_TM_VOLATILE                                                         syscall.Errno = 6828\n\tERROR_ROLLBACK_TIMER_EXPIRED                                              syscall.Errno = 6829\n\tERROR_TXF_ATTRIBUTE_CORRUPT                                               syscall.Errno = 6830\n\tERROR_EFS_NOT_ALLOWED_IN_TRANSACTION                                      syscall.Errno = 6831\n\tERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED                                      syscall.Errno = 6832\n\tERROR_LOG_GROWTH_FAILED                                                   syscall.Errno = 6833\n\tERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                               syscall.Errno = 6834\n\tERROR_TXF_METADATA_ALREADY_PRESENT                                        syscall.Errno = 6835\n\tERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                 syscall.Errno = 6836\n\tERROR_TRANSACTION_REQUIRED_PROMOTION                                      syscall.Errno = 6837\n\tERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                  syscall.Errno = 6838\n\tERROR_TRANSACTIONS_NOT_FROZEN                                             syscall.Errno = 6839\n\tERROR_TRANSACTION_FREEZE_IN_PROGRESS                                      syscall.Errno = 6840\n\tERROR_NOT_SNAPSHOT_VOLUME                                                 syscall.Errno = 6841\n\tERROR_NO_SAVEPOINT_WITH_OPEN_FILES                                        syscall.Errno = 6842\n\tERROR_DATA_LOST_REPAIR                                                    syscall.Errno = 6843\n\tERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                   syscall.Errno = 6844\n\tERROR_TM_IDENTITY_MISMATCH                                                syscall.Errno = 6845\n\tERROR_FLOATED_SECTION                                                     syscall.Errno = 6846\n\tERROR_CANNOT_ACCEPT_TRANSACTED_WORK                                       syscall.Errno = 6847\n\tERROR_CANNOT_ABORT_TRANSACTIONS                                           syscall.Errno = 6848\n\tERROR_BAD_CLUSTERS                                                        syscall.Errno = 6849\n\tERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                              syscall.Errno = 6850\n\tERROR_VOLUME_DIRTY                                                        syscall.Errno = 6851\n\tERROR_NO_LINK_TRACKING_IN_TRANSACTION                                     syscall.Errno = 6852\n\tERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                              syscall.Errno = 6853\n\tERROR_EXPIRED_HANDLE                                                      syscall.Errno = 6854\n\tERROR_TRANSACTION_NOT_ENLISTED                                            syscall.Errno = 6855\n\tERROR_CTX_WINSTATION_NAME_INVALID                                         syscall.Errno = 7001\n\tERROR_CTX_INVALID_PD                                                      syscall.Errno = 7002\n\tERROR_CTX_PD_NOT_FOUND                                                    syscall.Errno = 7003\n\tERROR_CTX_WD_NOT_FOUND                                                    syscall.Errno = 7004\n\tERROR_CTX_CANNOT_MAKE_EVENTLOG_ENTRY                                      syscall.Errno = 7005\n\tERROR_CTX_SERVICE_NAME_COLLISION                                          syscall.Errno = 7006\n\tERROR_CTX_CLOSE_PENDING                                                   syscall.Errno = 7007\n\tERROR_CTX_NO_OUTBUF                                                       syscall.Errno = 7008\n\tERROR_CTX_MODEM_INF_NOT_FOUND                                             syscall.Errno = 7009\n\tERROR_CTX_INVALID_MODEMNAME                                               syscall.Errno = 7010\n\tERROR_CTX_MODEM_RESPONSE_ERROR                                            syscall.Errno = 7011\n\tERROR_CTX_MODEM_RESPONSE_TIMEOUT                                          syscall.Errno = 7012\n\tERROR_CTX_MODEM_RESPONSE_NO_CARRIER                                       syscall.Errno = 7013\n\tERROR_CTX_MODEM_RESPONSE_NO_DIALTONE                                      syscall.Errno = 7014\n\tERROR_CTX_MODEM_RESPONSE_BUSY                                             syscall.Errno = 7015\n\tERROR_CTX_MODEM_RESPONSE_VOICE                                            syscall.Errno = 7016\n\tERROR_CTX_TD_ERROR                                                        syscall.Errno = 7017\n\tERROR_CTX_WINSTATION_NOT_FOUND                                            syscall.Errno = 7022\n\tERROR_CTX_WINSTATION_ALREADY_EXISTS                                       syscall.Errno = 7023\n\tERROR_CTX_WINSTATION_BUSY                                                 syscall.Errno = 7024\n\tERROR_CTX_BAD_VIDEO_MODE                                                  syscall.Errno = 7025\n\tERROR_CTX_GRAPHICS_INVALID                                                syscall.Errno = 7035\n\tERROR_CTX_LOGON_DISABLED                                                  syscall.Errno = 7037\n\tERROR_CTX_NOT_CONSOLE                                                     syscall.Errno = 7038\n\tERROR_CTX_CLIENT_QUERY_TIMEOUT                                            syscall.Errno = 7040\n\tERROR_CTX_CONSOLE_DISCONNECT                                              syscall.Errno = 7041\n\tERROR_CTX_CONSOLE_CONNECT                                                 syscall.Errno = 7042\n\tERROR_CTX_SHADOW_DENIED                                                   syscall.Errno = 7044\n\tERROR_CTX_WINSTATION_ACCESS_DENIED                                        syscall.Errno = 7045\n\tERROR_CTX_INVALID_WD                                                      syscall.Errno = 7049\n\tERROR_CTX_SHADOW_INVALID                                                  syscall.Errno = 7050\n\tERROR_CTX_SHADOW_DISABLED                                                 syscall.Errno = 7051\n\tERROR_CTX_CLIENT_LICENSE_IN_USE                                           syscall.Errno = 7052\n\tERROR_CTX_CLIENT_LICENSE_NOT_SET                                          syscall.Errno = 7053\n\tERROR_CTX_LICENSE_NOT_AVAILABLE                                           syscall.Errno = 7054\n\tERROR_CTX_LICENSE_CLIENT_INVALID                                          syscall.Errno = 7055\n\tERROR_CTX_LICENSE_EXPIRED                                                 syscall.Errno = 7056\n\tERROR_CTX_SHADOW_NOT_RUNNING                                              syscall.Errno = 7057\n\tERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                     syscall.Errno = 7058\n\tERROR_ACTIVATION_COUNT_EXCEEDED                                           syscall.Errno = 7059\n\tERROR_CTX_WINSTATIONS_DISABLED                                            syscall.Errno = 7060\n\tERROR_CTX_ENCRYPTION_LEVEL_REQUIRED                                       syscall.Errno = 7061\n\tERROR_CTX_SESSION_IN_USE                                                  syscall.Errno = 7062\n\tERROR_CTX_NO_FORCE_LOGOFF                                                 syscall.Errno = 7063\n\tERROR_CTX_ACCOUNT_RESTRICTION                                             syscall.Errno = 7064\n\tERROR_RDP_PROTOCOL_ERROR                                                  syscall.Errno = 7065\n\tERROR_CTX_CDM_CONNECT                                                     syscall.Errno = 7066\n\tERROR_CTX_CDM_DISCONNECT                                                  syscall.Errno = 7067\n\tERROR_CTX_SECURITY_LAYER_ERROR                                            syscall.Errno = 7068\n\tERROR_TS_INCOMPATIBLE_SESSIONS                                            syscall.Errno = 7069\n\tERROR_TS_VIDEO_SUBSYSTEM_ERROR                                            syscall.Errno = 7070\n\tFRS_ERR_INVALID_API_SEQUENCE                                              syscall.Errno = 8001\n\tFRS_ERR_STARTING_SERVICE                                                  syscall.Errno = 8002\n\tFRS_ERR_STOPPING_SERVICE                                                  syscall.Errno = 8003\n\tFRS_ERR_INTERNAL_API                                                      syscall.Errno = 8004\n\tFRS_ERR_INTERNAL                                                          syscall.Errno = 8005\n\tFRS_ERR_SERVICE_COMM                                                      syscall.Errno = 8006\n\tFRS_ERR_INSUFFICIENT_PRIV                                                 syscall.Errno = 8007\n\tFRS_ERR_AUTHENTICATION                                                    syscall.Errno = 8008\n\tFRS_ERR_PARENT_INSUFFICIENT_PRIV                                          syscall.Errno = 8009\n\tFRS_ERR_PARENT_AUTHENTICATION                                             syscall.Errno = 8010\n\tFRS_ERR_CHILD_TO_PARENT_COMM                                              syscall.Errno = 8011\n\tFRS_ERR_PARENT_TO_CHILD_COMM                                              syscall.Errno = 8012\n\tFRS_ERR_SYSVOL_POPULATE                                                   syscall.Errno = 8013\n\tFRS_ERR_SYSVOL_POPULATE_TIMEOUT                                           syscall.Errno = 8014\n\tFRS_ERR_SYSVOL_IS_BUSY                                                    syscall.Errno = 8015\n\tFRS_ERR_SYSVOL_DEMOTE                                                     syscall.Errno = 8016\n\tFRS_ERR_INVALID_SERVICE_PARAMETER                                         syscall.Errno = 8017\n\tDS_S_SUCCESS                                                                            = ERROR_SUCCESS\n\tERROR_DS_NOT_INSTALLED                                                    syscall.Errno = 8200\n\tERROR_DS_MEMBERSHIP_EVALUATED_LOCALLY                                     syscall.Errno = 8201\n\tERROR_DS_NO_ATTRIBUTE_OR_VALUE                                            syscall.Errno = 8202\n\tERROR_DS_INVALID_ATTRIBUTE_SYNTAX                                         syscall.Errno = 8203\n\tERROR_DS_ATTRIBUTE_TYPE_UNDEFINED                                         syscall.Errno = 8204\n\tERROR_DS_ATTRIBUTE_OR_VALUE_EXISTS                                        syscall.Errno = 8205\n\tERROR_DS_BUSY                                                             syscall.Errno = 8206\n\tERROR_DS_UNAVAILABLE                                                      syscall.Errno = 8207\n\tERROR_DS_NO_RIDS_ALLOCATED                                                syscall.Errno = 8208\n\tERROR_DS_NO_MORE_RIDS                                                     syscall.Errno = 8209\n\tERROR_DS_INCORRECT_ROLE_OWNER                                             syscall.Errno = 8210\n\tERROR_DS_RIDMGR_INIT_ERROR                                                syscall.Errno = 8211\n\tERROR_DS_OBJ_CLASS_VIOLATION                                              syscall.Errno = 8212\n\tERROR_DS_CANT_ON_NON_LEAF                                                 syscall.Errno = 8213\n\tERROR_DS_CANT_ON_RDN                                                      syscall.Errno = 8214\n\tERROR_DS_CANT_MOD_OBJ_CLASS                                               syscall.Errno = 8215\n\tERROR_DS_CROSS_DOM_MOVE_ERROR                                             syscall.Errno = 8216\n\tERROR_DS_GC_NOT_AVAILABLE                                                 syscall.Errno = 8217\n\tERROR_SHARED_POLICY                                                       syscall.Errno = 8218\n\tERROR_POLICY_OBJECT_NOT_FOUND                                             syscall.Errno = 8219\n\tERROR_POLICY_ONLY_IN_DS                                                   syscall.Errno = 8220\n\tERROR_PROMOTION_ACTIVE                                                    syscall.Errno = 8221\n\tERROR_NO_PROMOTION_ACTIVE                                                 syscall.Errno = 8222\n\tERROR_DS_OPERATIONS_ERROR                                                 syscall.Errno = 8224\n\tERROR_DS_PROTOCOL_ERROR                                                   syscall.Errno = 8225\n\tERROR_DS_TIMELIMIT_EXCEEDED                                               syscall.Errno = 8226\n\tERROR_DS_SIZELIMIT_EXCEEDED                                               syscall.Errno = 8227\n\tERROR_DS_ADMIN_LIMIT_EXCEEDED                                             syscall.Errno = 8228\n\tERROR_DS_COMPARE_FALSE                                                    syscall.Errno = 8229\n\tERROR_DS_COMPARE_TRUE                                                     syscall.Errno = 8230\n\tERROR_DS_AUTH_METHOD_NOT_SUPPORTED                                        syscall.Errno = 8231\n\tERROR_DS_STRONG_AUTH_REQUIRED                                             syscall.Errno = 8232\n\tERROR_DS_INAPPROPRIATE_AUTH                                               syscall.Errno = 8233\n\tERROR_DS_AUTH_UNKNOWN                                                     syscall.Errno = 8234\n\tERROR_DS_REFERRAL                                                         syscall.Errno = 8235\n\tERROR_DS_UNAVAILABLE_CRIT_EXTENSION                                       syscall.Errno = 8236\n\tERROR_DS_CONFIDENTIALITY_REQUIRED                                         syscall.Errno = 8237\n\tERROR_DS_INAPPROPRIATE_MATCHING                                           syscall.Errno = 8238\n\tERROR_DS_CONSTRAINT_VIOLATION                                             syscall.Errno = 8239\n\tERROR_DS_NO_SUCH_OBJECT                                                   syscall.Errno = 8240\n\tERROR_DS_ALIAS_PROBLEM                                                    syscall.Errno = 8241\n\tERROR_DS_INVALID_DN_SYNTAX                                                syscall.Errno = 8242\n\tERROR_DS_IS_LEAF                                                          syscall.Errno = 8243\n\tERROR_DS_ALIAS_DEREF_PROBLEM                                              syscall.Errno = 8244\n\tERROR_DS_UNWILLING_TO_PERFORM                                             syscall.Errno = 8245\n\tERROR_DS_LOOP_DETECT                                                      syscall.Errno = 8246\n\tERROR_DS_NAMING_VIOLATION                                                 syscall.Errno = 8247\n\tERROR_DS_OBJECT_RESULTS_TOO_LARGE                                         syscall.Errno = 8248\n\tERROR_DS_AFFECTS_MULTIPLE_DSAS                                            syscall.Errno = 8249\n\tERROR_DS_SERVER_DOWN                                                      syscall.Errno = 8250\n\tERROR_DS_LOCAL_ERROR                                                      syscall.Errno = 8251\n\tERROR_DS_ENCODING_ERROR                                                   syscall.Errno = 8252\n\tERROR_DS_DECODING_ERROR                                                   syscall.Errno = 8253\n\tERROR_DS_FILTER_UNKNOWN                                                   syscall.Errno = 8254\n\tERROR_DS_PARAM_ERROR                                                      syscall.Errno = 8255\n\tERROR_DS_NOT_SUPPORTED                                                    syscall.Errno = 8256\n\tERROR_DS_NO_RESULTS_RETURNED                                              syscall.Errno = 8257\n\tERROR_DS_CONTROL_NOT_FOUND                                                syscall.Errno = 8258\n\tERROR_DS_CLIENT_LOOP                                                      syscall.Errno = 8259\n\tERROR_DS_REFERRAL_LIMIT_EXCEEDED                                          syscall.Errno = 8260\n\tERROR_DS_SORT_CONTROL_MISSING                                             syscall.Errno = 8261\n\tERROR_DS_OFFSET_RANGE_ERROR                                               syscall.Errno = 8262\n\tERROR_DS_RIDMGR_DISABLED                                                  syscall.Errno = 8263\n\tERROR_DS_ROOT_MUST_BE_NC                                                  syscall.Errno = 8301\n\tERROR_DS_ADD_REPLICA_INHIBITED                                            syscall.Errno = 8302\n\tERROR_DS_ATT_NOT_DEF_IN_SCHEMA                                            syscall.Errno = 8303\n\tERROR_DS_MAX_OBJ_SIZE_EXCEEDED                                            syscall.Errno = 8304\n\tERROR_DS_OBJ_STRING_NAME_EXISTS                                           syscall.Errno = 8305\n\tERROR_DS_NO_RDN_DEFINED_IN_SCHEMA                                         syscall.Errno = 8306\n\tERROR_DS_RDN_DOESNT_MATCH_SCHEMA                                          syscall.Errno = 8307\n\tERROR_DS_NO_REQUESTED_ATTS_FOUND                                          syscall.Errno = 8308\n\tERROR_DS_USER_BUFFER_TO_SMALL                                             syscall.Errno = 8309\n\tERROR_DS_ATT_IS_NOT_ON_OBJ                                                syscall.Errno = 8310\n\tERROR_DS_ILLEGAL_MOD_OPERATION                                            syscall.Errno = 8311\n\tERROR_DS_OBJ_TOO_LARGE                                                    syscall.Errno = 8312\n\tERROR_DS_BAD_INSTANCE_TYPE                                                syscall.Errno = 8313\n\tERROR_DS_MASTERDSA_REQUIRED                                               syscall.Errno = 8314\n\tERROR_DS_OBJECT_CLASS_REQUIRED                                            syscall.Errno = 8315\n\tERROR_DS_MISSING_REQUIRED_ATT                                             syscall.Errno = 8316\n\tERROR_DS_ATT_NOT_DEF_FOR_CLASS                                            syscall.Errno = 8317\n\tERROR_DS_ATT_ALREADY_EXISTS                                               syscall.Errno = 8318\n\tERROR_DS_CANT_ADD_ATT_VALUES                                              syscall.Errno = 8320\n\tERROR_DS_SINGLE_VALUE_CONSTRAINT                                          syscall.Errno = 8321\n\tERROR_DS_RANGE_CONSTRAINT                                                 syscall.Errno = 8322\n\tERROR_DS_ATT_VAL_ALREADY_EXISTS                                           syscall.Errno = 8323\n\tERROR_DS_CANT_REM_MISSING_ATT                                             syscall.Errno = 8324\n\tERROR_DS_CANT_REM_MISSING_ATT_VAL                                         syscall.Errno = 8325\n\tERROR_DS_ROOT_CANT_BE_SUBREF                                              syscall.Errno = 8326\n\tERROR_DS_NO_CHAINING                                                      syscall.Errno = 8327\n\tERROR_DS_NO_CHAINED_EVAL                                                  syscall.Errno = 8328\n\tERROR_DS_NO_PARENT_OBJECT                                                 syscall.Errno = 8329\n\tERROR_DS_PARENT_IS_AN_ALIAS                                               syscall.Errno = 8330\n\tERROR_DS_CANT_MIX_MASTER_AND_REPS                                         syscall.Errno = 8331\n\tERROR_DS_CHILDREN_EXIST                                                   syscall.Errno = 8332\n\tERROR_DS_OBJ_NOT_FOUND                                                    syscall.Errno = 8333\n\tERROR_DS_ALIASED_OBJ_MISSING                                              syscall.Errno = 8334\n\tERROR_DS_BAD_NAME_SYNTAX                                                  syscall.Errno = 8335\n\tERROR_DS_ALIAS_POINTS_TO_ALIAS                                            syscall.Errno = 8336\n\tERROR_DS_CANT_DEREF_ALIAS                                                 syscall.Errno = 8337\n\tERROR_DS_OUT_OF_SCOPE                                                     syscall.Errno = 8338\n\tERROR_DS_OBJECT_BEING_REMOVED                                             syscall.Errno = 8339\n\tERROR_DS_CANT_DELETE_DSA_OBJ                                              syscall.Errno = 8340\n\tERROR_DS_GENERIC_ERROR                                                    syscall.Errno = 8341\n\tERROR_DS_DSA_MUST_BE_INT_MASTER                                           syscall.Errno = 8342\n\tERROR_DS_CLASS_NOT_DSA                                                    syscall.Errno = 8343\n\tERROR_DS_INSUFF_ACCESS_RIGHTS                                             syscall.Errno = 8344\n\tERROR_DS_ILLEGAL_SUPERIOR                                                 syscall.Errno = 8345\n\tERROR_DS_ATTRIBUTE_OWNED_BY_SAM                                           syscall.Errno = 8346\n\tERROR_DS_NAME_TOO_MANY_PARTS                                              syscall.Errno = 8347\n\tERROR_DS_NAME_TOO_LONG                                                    syscall.Errno = 8348\n\tERROR_DS_NAME_VALUE_TOO_LONG                                              syscall.Errno = 8349\n\tERROR_DS_NAME_UNPARSEABLE                                                 syscall.Errno = 8350\n\tERROR_DS_NAME_TYPE_UNKNOWN                                                syscall.Errno = 8351\n\tERROR_DS_NOT_AN_OBJECT                                                    syscall.Errno = 8352\n\tERROR_DS_SEC_DESC_TOO_SHORT                                               syscall.Errno = 8353\n\tERROR_DS_SEC_DESC_INVALID                                                 syscall.Errno = 8354\n\tERROR_DS_NO_DELETED_NAME                                                  syscall.Errno = 8355\n\tERROR_DS_SUBREF_MUST_HAVE_PARENT                                          syscall.Errno = 8356\n\tERROR_DS_NCNAME_MUST_BE_NC                                                syscall.Errno = 8357\n\tERROR_DS_CANT_ADD_SYSTEM_ONLY                                             syscall.Errno = 8358\n\tERROR_DS_CLASS_MUST_BE_CONCRETE                                           syscall.Errno = 8359\n\tERROR_DS_INVALID_DMD                                                      syscall.Errno = 8360\n\tERROR_DS_OBJ_GUID_EXISTS                                                  syscall.Errno = 8361\n\tERROR_DS_NOT_ON_BACKLINK                                                  syscall.Errno = 8362\n\tERROR_DS_NO_CROSSREF_FOR_NC                                               syscall.Errno = 8363\n\tERROR_DS_SHUTTING_DOWN                                                    syscall.Errno = 8364\n\tERROR_DS_UNKNOWN_OPERATION                                                syscall.Errno = 8365\n\tERROR_DS_INVALID_ROLE_OWNER                                               syscall.Errno = 8366\n\tERROR_DS_COULDNT_CONTACT_FSMO                                             syscall.Errno = 8367\n\tERROR_DS_CROSS_NC_DN_RENAME                                               syscall.Errno = 8368\n\tERROR_DS_CANT_MOD_SYSTEM_ONLY                                             syscall.Errno = 8369\n\tERROR_DS_REPLICATOR_ONLY                                                  syscall.Errno = 8370\n\tERROR_DS_OBJ_CLASS_NOT_DEFINED                                            syscall.Errno = 8371\n\tERROR_DS_OBJ_CLASS_NOT_SUBCLASS                                           syscall.Errno = 8372\n\tERROR_DS_NAME_REFERENCE_INVALID                                           syscall.Errno = 8373\n\tERROR_DS_CROSS_REF_EXISTS                                                 syscall.Errno = 8374\n\tERROR_DS_CANT_DEL_MASTER_CROSSREF                                         syscall.Errno = 8375\n\tERROR_DS_SUBTREE_NOTIFY_NOT_NC_HEAD                                       syscall.Errno = 8376\n\tERROR_DS_NOTIFY_FILTER_TOO_COMPLEX                                        syscall.Errno = 8377\n\tERROR_DS_DUP_RDN                                                          syscall.Errno = 8378\n\tERROR_DS_DUP_OID                                                          syscall.Errno = 8379\n\tERROR_DS_DUP_MAPI_ID                                                      syscall.Errno = 8380\n\tERROR_DS_DUP_SCHEMA_ID_GUID                                               syscall.Errno = 8381\n\tERROR_DS_DUP_LDAP_DISPLAY_NAME                                            syscall.Errno = 8382\n\tERROR_DS_SEMANTIC_ATT_TEST                                                syscall.Errno = 8383\n\tERROR_DS_SYNTAX_MISMATCH                                                  syscall.Errno = 8384\n\tERROR_DS_EXISTS_IN_MUST_HAVE                                              syscall.Errno = 8385\n\tERROR_DS_EXISTS_IN_MAY_HAVE                                               syscall.Errno = 8386\n\tERROR_DS_NONEXISTENT_MAY_HAVE                                             syscall.Errno = 8387\n\tERROR_DS_NONEXISTENT_MUST_HAVE                                            syscall.Errno = 8388\n\tERROR_DS_AUX_CLS_TEST_FAIL                                                syscall.Errno = 8389\n\tERROR_DS_NONEXISTENT_POSS_SUP                                             syscall.Errno = 8390\n\tERROR_DS_SUB_CLS_TEST_FAIL                                                syscall.Errno = 8391\n\tERROR_DS_BAD_RDN_ATT_ID_SYNTAX                                            syscall.Errno = 8392\n\tERROR_DS_EXISTS_IN_AUX_CLS                                                syscall.Errno = 8393\n\tERROR_DS_EXISTS_IN_SUB_CLS                                                syscall.Errno = 8394\n\tERROR_DS_EXISTS_IN_POSS_SUP                                               syscall.Errno = 8395\n\tERROR_DS_RECALCSCHEMA_FAILED                                              syscall.Errno = 8396\n\tERROR_DS_TREE_DELETE_NOT_FINISHED                                         syscall.Errno = 8397\n\tERROR_DS_CANT_DELETE                                                      syscall.Errno = 8398\n\tERROR_DS_ATT_SCHEMA_REQ_ID                                                syscall.Errno = 8399\n\tERROR_DS_BAD_ATT_SCHEMA_SYNTAX                                            syscall.Errno = 8400\n\tERROR_DS_CANT_CACHE_ATT                                                   syscall.Errno = 8401\n\tERROR_DS_CANT_CACHE_CLASS                                                 syscall.Errno = 8402\n\tERROR_DS_CANT_REMOVE_ATT_CACHE                                            syscall.Errno = 8403\n\tERROR_DS_CANT_REMOVE_CLASS_CACHE                                          syscall.Errno = 8404\n\tERROR_DS_CANT_RETRIEVE_DN                                                 syscall.Errno = 8405\n\tERROR_DS_MISSING_SUPREF                                                   syscall.Errno = 8406\n\tERROR_DS_CANT_RETRIEVE_INSTANCE                                           syscall.Errno = 8407\n\tERROR_DS_CODE_INCONSISTENCY                                               syscall.Errno = 8408\n\tERROR_DS_DATABASE_ERROR                                                   syscall.Errno = 8409\n\tERROR_DS_GOVERNSID_MISSING                                                syscall.Errno = 8410\n\tERROR_DS_MISSING_EXPECTED_ATT                                             syscall.Errno = 8411\n\tERROR_DS_NCNAME_MISSING_CR_REF                                            syscall.Errno = 8412\n\tERROR_DS_SECURITY_CHECKING_ERROR                                          syscall.Errno = 8413\n\tERROR_DS_SCHEMA_NOT_LOADED                                                syscall.Errno = 8414\n\tERROR_DS_SCHEMA_ALLOC_FAILED                                              syscall.Errno = 8415\n\tERROR_DS_ATT_SCHEMA_REQ_SYNTAX                                            syscall.Errno = 8416\n\tERROR_DS_GCVERIFY_ERROR                                                   syscall.Errno = 8417\n\tERROR_DS_DRA_SCHEMA_MISMATCH                                              syscall.Errno = 8418\n\tERROR_DS_CANT_FIND_DSA_OBJ                                                syscall.Errno = 8419\n\tERROR_DS_CANT_FIND_EXPECTED_NC                                            syscall.Errno = 8420\n\tERROR_DS_CANT_FIND_NC_IN_CACHE                                            syscall.Errno = 8421\n\tERROR_DS_CANT_RETRIEVE_CHILD                                              syscall.Errno = 8422\n\tERROR_DS_SECURITY_ILLEGAL_MODIFY                                          syscall.Errno = 8423\n\tERROR_DS_CANT_REPLACE_HIDDEN_REC                                          syscall.Errno = 8424\n\tERROR_DS_BAD_HIERARCHY_FILE                                               syscall.Errno = 8425\n\tERROR_DS_BUILD_HIERARCHY_TABLE_FAILED                                     syscall.Errno = 8426\n\tERROR_DS_CONFIG_PARAM_MISSING                                             syscall.Errno = 8427\n\tERROR_DS_COUNTING_AB_INDICES_FAILED                                       syscall.Errno = 8428\n\tERROR_DS_HIERARCHY_TABLE_MALLOC_FAILED                                    syscall.Errno = 8429\n\tERROR_DS_INTERNAL_FAILURE                                                 syscall.Errno = 8430\n\tERROR_DS_UNKNOWN_ERROR                                                    syscall.Errno = 8431\n\tERROR_DS_ROOT_REQUIRES_CLASS_TOP                                          syscall.Errno = 8432\n\tERROR_DS_REFUSING_FSMO_ROLES                                              syscall.Errno = 8433\n\tERROR_DS_MISSING_FSMO_SETTINGS                                            syscall.Errno = 8434\n\tERROR_DS_UNABLE_TO_SURRENDER_ROLES                                        syscall.Errno = 8435\n\tERROR_DS_DRA_GENERIC                                                      syscall.Errno = 8436\n\tERROR_DS_DRA_INVALID_PARAMETER                                            syscall.Errno = 8437\n\tERROR_DS_DRA_BUSY                                                         syscall.Errno = 8438\n\tERROR_DS_DRA_BAD_DN                                                       syscall.Errno = 8439\n\tERROR_DS_DRA_BAD_NC                                                       syscall.Errno = 8440\n\tERROR_DS_DRA_DN_EXISTS                                                    syscall.Errno = 8441\n\tERROR_DS_DRA_INTERNAL_ERROR                                               syscall.Errno = 8442\n\tERROR_DS_DRA_INCONSISTENT_DIT                                             syscall.Errno = 8443\n\tERROR_DS_DRA_CONNECTION_FAILED                                            syscall.Errno = 8444\n\tERROR_DS_DRA_BAD_INSTANCE_TYPE                                            syscall.Errno = 8445\n\tERROR_DS_DRA_OUT_OF_MEM                                                   syscall.Errno = 8446\n\tERROR_DS_DRA_MAIL_PROBLEM                                                 syscall.Errno = 8447\n\tERROR_DS_DRA_REF_ALREADY_EXISTS                                           syscall.Errno = 8448\n\tERROR_DS_DRA_REF_NOT_FOUND                                                syscall.Errno = 8449\n\tERROR_DS_DRA_OBJ_IS_REP_SOURCE                                            syscall.Errno = 8450\n\tERROR_DS_DRA_DB_ERROR                                                     syscall.Errno = 8451\n\tERROR_DS_DRA_NO_REPLICA                                                   syscall.Errno = 8452\n\tERROR_DS_DRA_ACCESS_DENIED                                                syscall.Errno = 8453\n\tERROR_DS_DRA_NOT_SUPPORTED                                                syscall.Errno = 8454\n\tERROR_DS_DRA_RPC_CANCELLED                                                syscall.Errno = 8455\n\tERROR_DS_DRA_SOURCE_DISABLED                                              syscall.Errno = 8456\n\tERROR_DS_DRA_SINK_DISABLED                                                syscall.Errno = 8457\n\tERROR_DS_DRA_NAME_COLLISION                                               syscall.Errno = 8458\n\tERROR_DS_DRA_SOURCE_REINSTALLED                                           syscall.Errno = 8459\n\tERROR_DS_DRA_MISSING_PARENT                                               syscall.Errno = 8460\n\tERROR_DS_DRA_PREEMPTED                                                    syscall.Errno = 8461\n\tERROR_DS_DRA_ABANDON_SYNC                                                 syscall.Errno = 8462\n\tERROR_DS_DRA_SHUTDOWN                                                     syscall.Errno = 8463\n\tERROR_DS_DRA_INCOMPATIBLE_PARTIAL_SET                                     syscall.Errno = 8464\n\tERROR_DS_DRA_SOURCE_IS_PARTIAL_REPLICA                                    syscall.Errno = 8465\n\tERROR_DS_DRA_EXTN_CONNECTION_FAILED                                       syscall.Errno = 8466\n\tERROR_DS_INSTALL_SCHEMA_MISMATCH                                          syscall.Errno = 8467\n\tERROR_DS_DUP_LINK_ID                                                      syscall.Errno = 8468\n\tERROR_DS_NAME_ERROR_RESOLVING                                             syscall.Errno = 8469\n\tERROR_DS_NAME_ERROR_NOT_FOUND                                             syscall.Errno = 8470\n\tERROR_DS_NAME_ERROR_NOT_UNIQUE                                            syscall.Errno = 8471\n\tERROR_DS_NAME_ERROR_NO_MAPPING                                            syscall.Errno = 8472\n\tERROR_DS_NAME_ERROR_DOMAIN_ONLY                                           syscall.Errno = 8473\n\tERROR_DS_NAME_ERROR_NO_SYNTACTICAL_MAPPING                                syscall.Errno = 8474\n\tERROR_DS_CONSTRUCTED_ATT_MOD                                              syscall.Errno = 8475\n\tERROR_DS_WRONG_OM_OBJ_CLASS                                               syscall.Errno = 8476\n\tERROR_DS_DRA_REPL_PENDING                                                 syscall.Errno = 8477\n\tERROR_DS_DS_REQUIRED                                                      syscall.Errno = 8478\n\tERROR_DS_INVALID_LDAP_DISPLAY_NAME                                        syscall.Errno = 8479\n\tERROR_DS_NON_BASE_SEARCH                                                  syscall.Errno = 8480\n\tERROR_DS_CANT_RETRIEVE_ATTS                                               syscall.Errno = 8481\n\tERROR_DS_BACKLINK_WITHOUT_LINK                                            syscall.Errno = 8482\n\tERROR_DS_EPOCH_MISMATCH                                                   syscall.Errno = 8483\n\tERROR_DS_SRC_NAME_MISMATCH                                                syscall.Errno = 8484\n\tERROR_DS_SRC_AND_DST_NC_IDENTICAL                                         syscall.Errno = 8485\n\tERROR_DS_DST_NC_MISMATCH                                                  syscall.Errno = 8486\n\tERROR_DS_NOT_AUTHORITIVE_FOR_DST_NC                                       syscall.Errno = 8487\n\tERROR_DS_SRC_GUID_MISMATCH                                                syscall.Errno = 8488\n\tERROR_DS_CANT_MOVE_DELETED_OBJECT                                         syscall.Errno = 8489\n\tERROR_DS_PDC_OPERATION_IN_PROGRESS                                        syscall.Errno = 8490\n\tERROR_DS_CROSS_DOMAIN_CLEANUP_REQD                                        syscall.Errno = 8491\n\tERROR_DS_ILLEGAL_XDOM_MOVE_OPERATION                                      syscall.Errno = 8492\n\tERROR_DS_CANT_WITH_ACCT_GROUP_MEMBERSHPS                                  syscall.Errno = 8493\n\tERROR_DS_NC_MUST_HAVE_NC_PARENT                                           syscall.Errno = 8494\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE                                        syscall.Errno = 8495\n\tERROR_DS_DST_DOMAIN_NOT_NATIVE                                            syscall.Errno = 8496\n\tERROR_DS_MISSING_INFRASTRUCTURE_CONTAINER                                 syscall.Errno = 8497\n\tERROR_DS_CANT_MOVE_ACCOUNT_GROUP                                          syscall.Errno = 8498\n\tERROR_DS_CANT_MOVE_RESOURCE_GROUP                                         syscall.Errno = 8499\n\tERROR_DS_INVALID_SEARCH_FLAG                                              syscall.Errno = 8500\n\tERROR_DS_NO_TREE_DELETE_ABOVE_NC                                          syscall.Errno = 8501\n\tERROR_DS_COULDNT_LOCK_TREE_FOR_DELETE                                     syscall.Errno = 8502\n\tERROR_DS_COULDNT_IDENTIFY_OBJECTS_FOR_TREE_DELETE                         syscall.Errno = 8503\n\tERROR_DS_SAM_INIT_FAILURE                                                 syscall.Errno = 8504\n\tERROR_DS_SENSITIVE_GROUP_VIOLATION                                        syscall.Errno = 8505\n\tERROR_DS_CANT_MOD_PRIMARYGROUPID                                          syscall.Errno = 8506\n\tERROR_DS_ILLEGAL_BASE_SCHEMA_MOD                                          syscall.Errno = 8507\n\tERROR_DS_NONSAFE_SCHEMA_CHANGE                                            syscall.Errno = 8508\n\tERROR_DS_SCHEMA_UPDATE_DISALLOWED                                         syscall.Errno = 8509\n\tERROR_DS_CANT_CREATE_UNDER_SCHEMA                                         syscall.Errno = 8510\n\tERROR_DS_INSTALL_NO_SRC_SCH_VERSION                                       syscall.Errno = 8511\n\tERROR_DS_INSTALL_NO_SCH_VERSION_IN_INIFILE                                syscall.Errno = 8512\n\tERROR_DS_INVALID_GROUP_TYPE                                               syscall.Errno = 8513\n\tERROR_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                               syscall.Errno = 8514\n\tERROR_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                                syscall.Errno = 8515\n\tERROR_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                    syscall.Errno = 8516\n\tERROR_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                                syscall.Errno = 8517\n\tERROR_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                 syscall.Errno = 8518\n\tERROR_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                              syscall.Errno = 8519\n\tERROR_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                         syscall.Errno = 8520\n\tERROR_DS_HAVE_PRIMARY_MEMBERS                                             syscall.Errno = 8521\n\tERROR_DS_STRING_SD_CONVERSION_FAILED                                      syscall.Errno = 8522\n\tERROR_DS_NAMING_MASTER_GC                                                 syscall.Errno = 8523\n\tERROR_DS_DNS_LOOKUP_FAILURE                                               syscall.Errno = 8524\n\tERROR_DS_COULDNT_UPDATE_SPNS                                              syscall.Errno = 8525\n\tERROR_DS_CANT_RETRIEVE_SD                                                 syscall.Errno = 8526\n\tERROR_DS_KEY_NOT_UNIQUE                                                   syscall.Errno = 8527\n\tERROR_DS_WRONG_LINKED_ATT_SYNTAX                                          syscall.Errno = 8528\n\tERROR_DS_SAM_NEED_BOOTKEY_PASSWORD                                        syscall.Errno = 8529\n\tERROR_DS_SAM_NEED_BOOTKEY_FLOPPY                                          syscall.Errno = 8530\n\tERROR_DS_CANT_START                                                       syscall.Errno = 8531\n\tERROR_DS_INIT_FAILURE                                                     syscall.Errno = 8532\n\tERROR_DS_NO_PKT_PRIVACY_ON_CONNECTION                                     syscall.Errno = 8533\n\tERROR_DS_SOURCE_DOMAIN_IN_FOREST                                          syscall.Errno = 8534\n\tERROR_DS_DESTINATION_DOMAIN_NOT_IN_FOREST                                 syscall.Errno = 8535\n\tERROR_DS_DESTINATION_AUDITING_NOT_ENABLED                                 syscall.Errno = 8536\n\tERROR_DS_CANT_FIND_DC_FOR_SRC_DOMAIN                                      syscall.Errno = 8537\n\tERROR_DS_SRC_OBJ_NOT_GROUP_OR_USER                                        syscall.Errno = 8538\n\tERROR_DS_SRC_SID_EXISTS_IN_FOREST                                         syscall.Errno = 8539\n\tERROR_DS_SRC_AND_DST_OBJECT_CLASS_MISMATCH                                syscall.Errno = 8540\n\tERROR_SAM_INIT_FAILURE                                                    syscall.Errno = 8541\n\tERROR_DS_DRA_SCHEMA_INFO_SHIP                                             syscall.Errno = 8542\n\tERROR_DS_DRA_SCHEMA_CONFLICT                                              syscall.Errno = 8543\n\tERROR_DS_DRA_EARLIER_SCHEMA_CONFLICT                                      syscall.Errno = 8544\n\tERROR_DS_DRA_OBJ_NC_MISMATCH                                              syscall.Errno = 8545\n\tERROR_DS_NC_STILL_HAS_DSAS                                                syscall.Errno = 8546\n\tERROR_DS_GC_REQUIRED                                                      syscall.Errno = 8547\n\tERROR_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                       syscall.Errno = 8548\n\tERROR_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                       syscall.Errno = 8549\n\tERROR_DS_CANT_ADD_TO_GC                                                   syscall.Errno = 8550\n\tERROR_DS_NO_CHECKPOINT_WITH_PDC                                           syscall.Errno = 8551\n\tERROR_DS_SOURCE_AUDITING_NOT_ENABLED                                      syscall.Errno = 8552\n\tERROR_DS_CANT_CREATE_IN_NONDOMAIN_NC                                      syscall.Errno = 8553\n\tERROR_DS_INVALID_NAME_FOR_SPN                                             syscall.Errno = 8554\n\tERROR_DS_FILTER_USES_CONTRUCTED_ATTRS                                     syscall.Errno = 8555\n\tERROR_DS_UNICODEPWD_NOT_IN_QUOTES                                         syscall.Errno = 8556\n\tERROR_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                   syscall.Errno = 8557\n\tERROR_DS_MUST_BE_RUN_ON_DST_DC                                            syscall.Errno = 8558\n\tERROR_DS_SRC_DC_MUST_BE_SP4_OR_GREATER                                    syscall.Errno = 8559\n\tERROR_DS_CANT_TREE_DELETE_CRITICAL_OBJ                                    syscall.Errno = 8560\n\tERROR_DS_INIT_FAILURE_CONSOLE                                             syscall.Errno = 8561\n\tERROR_DS_SAM_INIT_FAILURE_CONSOLE                                         syscall.Errno = 8562\n\tERROR_DS_FOREST_VERSION_TOO_HIGH                                          syscall.Errno = 8563\n\tERROR_DS_DOMAIN_VERSION_TOO_HIGH                                          syscall.Errno = 8564\n\tERROR_DS_FOREST_VERSION_TOO_LOW                                           syscall.Errno = 8565\n\tERROR_DS_DOMAIN_VERSION_TOO_LOW                                           syscall.Errno = 8566\n\tERROR_DS_INCOMPATIBLE_VERSION                                             syscall.Errno = 8567\n\tERROR_DS_LOW_DSA_VERSION                                                  syscall.Errno = 8568\n\tERROR_DS_NO_BEHAVIOR_VERSION_IN_MIXEDDOMAIN                               syscall.Errno = 8569\n\tERROR_DS_NOT_SUPPORTED_SORT_ORDER                                         syscall.Errno = 8570\n\tERROR_DS_NAME_NOT_UNIQUE                                                  syscall.Errno = 8571\n\tERROR_DS_MACHINE_ACCOUNT_CREATED_PRENT4                                   syscall.Errno = 8572\n\tERROR_DS_OUT_OF_VERSION_STORE                                             syscall.Errno = 8573\n\tERROR_DS_INCOMPATIBLE_CONTROLS_USED                                       syscall.Errno = 8574\n\tERROR_DS_NO_REF_DOMAIN                                                    syscall.Errno = 8575\n\tERROR_DS_RESERVED_LINK_ID                                                 syscall.Errno = 8576\n\tERROR_DS_LINK_ID_NOT_AVAILABLE                                            syscall.Errno = 8577\n\tERROR_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                    syscall.Errno = 8578\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE                             syscall.Errno = 8579\n\tERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC                                      syscall.Errno = 8580\n\tERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG                                      syscall.Errno = 8581\n\tERROR_DS_MODIFYDN_WRONG_GRANDPARENT                                       syscall.Errno = 8582\n\tERROR_DS_NAME_ERROR_TRUST_REFERRAL                                        syscall.Errno = 8583\n\tERROR_NOT_SUPPORTED_ON_STANDARD_SERVER                                    syscall.Errno = 8584\n\tERROR_DS_CANT_ACCESS_REMOTE_PART_OF_AD                                    syscall.Errno = 8585\n\tERROR_DS_CR_IMPOSSIBLE_TO_VALIDATE_V2                                     syscall.Errno = 8586\n\tERROR_DS_THREAD_LIMIT_EXCEEDED                                            syscall.Errno = 8587\n\tERROR_DS_NOT_CLOSEST                                                      syscall.Errno = 8588\n\tERROR_DS_CANT_DERIVE_SPN_WITHOUT_SERVER_REF                               syscall.Errno = 8589\n\tERROR_DS_SINGLE_USER_MODE_FAILED                                          syscall.Errno = 8590\n\tERROR_DS_NTDSCRIPT_SYNTAX_ERROR                                           syscall.Errno = 8591\n\tERROR_DS_NTDSCRIPT_PROCESS_ERROR                                          syscall.Errno = 8592\n\tERROR_DS_DIFFERENT_REPL_EPOCHS                                            syscall.Errno = 8593\n\tERROR_DS_DRS_EXTENSIONS_CHANGED                                           syscall.Errno = 8594\n\tERROR_DS_REPLICA_SET_CHANGE_NOT_ALLOWED_ON_DISABLED_CR                    syscall.Errno = 8595\n\tERROR_DS_NO_MSDS_INTID                                                    syscall.Errno = 8596\n\tERROR_DS_DUP_MSDS_INTID                                                   syscall.Errno = 8597\n\tERROR_DS_EXISTS_IN_RDNATTID                                               syscall.Errno = 8598\n\tERROR_DS_AUTHORIZATION_FAILED                                             syscall.Errno = 8599\n\tERROR_DS_INVALID_SCRIPT                                                   syscall.Errno = 8600\n\tERROR_DS_REMOTE_CROSSREF_OP_FAILED                                        syscall.Errno = 8601\n\tERROR_DS_CROSS_REF_BUSY                                                   syscall.Errno = 8602\n\tERROR_DS_CANT_DERIVE_SPN_FOR_DELETED_DOMAIN                               syscall.Errno = 8603\n\tERROR_DS_CANT_DEMOTE_WITH_WRITEABLE_NC                                    syscall.Errno = 8604\n\tERROR_DS_DUPLICATE_ID_FOUND                                               syscall.Errno = 8605\n\tERROR_DS_INSUFFICIENT_ATTR_TO_CREATE_OBJECT                               syscall.Errno = 8606\n\tERROR_DS_GROUP_CONVERSION_ERROR                                           syscall.Errno = 8607\n\tERROR_DS_CANT_MOVE_APP_BASIC_GROUP                                        syscall.Errno = 8608\n\tERROR_DS_CANT_MOVE_APP_QUERY_GROUP                                        syscall.Errno = 8609\n\tERROR_DS_ROLE_NOT_VERIFIED                                                syscall.Errno = 8610\n\tERROR_DS_WKO_CONTAINER_CANNOT_BE_SPECIAL                                  syscall.Errno = 8611\n\tERROR_DS_DOMAIN_RENAME_IN_PROGRESS                                        syscall.Errno = 8612\n\tERROR_DS_EXISTING_AD_CHILD_NC                                             syscall.Errno = 8613\n\tERROR_DS_REPL_LIFETIME_EXCEEDED                                           syscall.Errno = 8614\n\tERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER                                   syscall.Errno = 8615\n\tERROR_DS_LDAP_SEND_QUEUE_FULL                                             syscall.Errno = 8616\n\tERROR_DS_DRA_OUT_SCHEDULE_WINDOW                                          syscall.Errno = 8617\n\tERROR_DS_POLICY_NOT_KNOWN                                                 syscall.Errno = 8618\n\tERROR_NO_SITE_SETTINGS_OBJECT                                             syscall.Errno = 8619\n\tERROR_NO_SECRETS                                                          syscall.Errno = 8620\n\tERROR_NO_WRITABLE_DC_FOUND                                                syscall.Errno = 8621\n\tERROR_DS_NO_SERVER_OBJECT                                                 syscall.Errno = 8622\n\tERROR_DS_NO_NTDSA_OBJECT                                                  syscall.Errno = 8623\n\tERROR_DS_NON_ASQ_SEARCH                                                   syscall.Errno = 8624\n\tERROR_DS_AUDIT_FAILURE                                                    syscall.Errno = 8625\n\tERROR_DS_INVALID_SEARCH_FLAG_SUBTREE                                      syscall.Errno = 8626\n\tERROR_DS_INVALID_SEARCH_FLAG_TUPLE                                        syscall.Errno = 8627\n\tERROR_DS_HIERARCHY_TABLE_TOO_DEEP                                         syscall.Errno = 8628\n\tERROR_DS_DRA_CORRUPT_UTD_VECTOR                                           syscall.Errno = 8629\n\tERROR_DS_DRA_SECRETS_DENIED                                               syscall.Errno = 8630\n\tERROR_DS_RESERVED_MAPI_ID                                                 syscall.Errno = 8631\n\tERROR_DS_MAPI_ID_NOT_AVAILABLE                                            syscall.Errno = 8632\n\tERROR_DS_DRA_MISSING_KRBTGT_SECRET                                        syscall.Errno = 8633\n\tERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                     syscall.Errno = 8634\n\tERROR_DS_FLAT_NAME_EXISTS_IN_FOREST                                       syscall.Errno = 8635\n\tERROR_INVALID_USER_PRINCIPAL_NAME                                         syscall.Errno = 8636\n\tERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                               syscall.Errno = 8637\n\tERROR_DS_OID_NOT_FOUND                                                    syscall.Errno = 8638\n\tERROR_DS_DRA_RECYCLED_TARGET                                              syscall.Errno = 8639\n\tERROR_DS_DISALLOWED_NC_REDIRECT                                           syscall.Errno = 8640\n\tERROR_DS_HIGH_ADLDS_FFL                                                   syscall.Errno = 8641\n\tERROR_DS_HIGH_DSA_VERSION                                                 syscall.Errno = 8642\n\tERROR_DS_LOW_ADLDS_FFL                                                    syscall.Errno = 8643\n\tERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION                                syscall.Errno = 8644\n\tERROR_DS_UNDELETE_SAM_VALIDATION_FAILED                                   syscall.Errno = 8645\n\tERROR_INCORRECT_ACCOUNT_TYPE                                              syscall.Errno = 8646\n\tERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8647\n\tERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST                                   syscall.Errno = 8648\n\tERROR_DS_MISSING_FOREST_TRUST                                             syscall.Errno = 8649\n\tERROR_DS_VALUE_KEY_NOT_UNIQUE                                             syscall.Errno = 8650\n\tDNS_ERROR_RESPONSE_CODES_BASE                                             syscall.Errno = 9000\n\tDNS_ERROR_RCODE_NO_ERROR                                                                = ERROR_SUCCESS\n\tDNS_ERROR_MASK                                                            syscall.Errno = 0x00002328\n\tDNS_ERROR_RCODE_FORMAT_ERROR                                              syscall.Errno = 9001\n\tDNS_ERROR_RCODE_SERVER_FAILURE                                            syscall.Errno = 9002\n\tDNS_ERROR_RCODE_NAME_ERROR                                                syscall.Errno = 9003\n\tDNS_ERROR_RCODE_NOT_IMPLEMENTED                                           syscall.Errno = 9004\n\tDNS_ERROR_RCODE_REFUSED                                                   syscall.Errno = 9005\n\tDNS_ERROR_RCODE_YXDOMAIN                                                  syscall.Errno = 9006\n\tDNS_ERROR_RCODE_YXRRSET                                                   syscall.Errno = 9007\n\tDNS_ERROR_RCODE_NXRRSET                                                   syscall.Errno = 9008\n\tDNS_ERROR_RCODE_NOTAUTH                                                   syscall.Errno = 9009\n\tDNS_ERROR_RCODE_NOTZONE                                                   syscall.Errno = 9010\n\tDNS_ERROR_RCODE_BADSIG                                                    syscall.Errno = 9016\n\tDNS_ERROR_RCODE_BADKEY                                                    syscall.Errno = 9017\n\tDNS_ERROR_RCODE_BADTIME                                                   syscall.Errno = 9018\n\tDNS_ERROR_RCODE_LAST                                                                    = DNS_ERROR_RCODE_BADTIME\n\tDNS_ERROR_DNSSEC_BASE                                                     syscall.Errno = 9100\n\tDNS_ERROR_KEYMASTER_REQUIRED                                              syscall.Errno = 9101\n\tDNS_ERROR_NOT_ALLOWED_ON_SIGNED_ZONE                                      syscall.Errno = 9102\n\tDNS_ERROR_NSEC3_INCOMPATIBLE_WITH_RSA_SHA1                                syscall.Errno = 9103\n\tDNS_ERROR_NOT_ENOUGH_SIGNING_KEY_DESCRIPTORS                              syscall.Errno = 9104\n\tDNS_ERROR_UNSUPPORTED_ALGORITHM                                           syscall.Errno = 9105\n\tDNS_ERROR_INVALID_KEY_SIZE                                                syscall.Errno = 9106\n\tDNS_ERROR_SIGNING_KEY_NOT_ACCESSIBLE                                      syscall.Errno = 9107\n\tDNS_ERROR_KSP_DOES_NOT_SUPPORT_PROTECTION                                 syscall.Errno = 9108\n\tDNS_ERROR_UNEXPECTED_DATA_PROTECTION_ERROR                                syscall.Errno = 9109\n\tDNS_ERROR_UNEXPECTED_CNG_ERROR                                            syscall.Errno = 9110\n\tDNS_ERROR_UNKNOWN_SIGNING_PARAMETER_VERSION                               syscall.Errno = 9111\n\tDNS_ERROR_KSP_NOT_ACCESSIBLE                                              syscall.Errno = 9112\n\tDNS_ERROR_TOO_MANY_SKDS                                                   syscall.Errno = 9113\n\tDNS_ERROR_INVALID_ROLLOVER_PERIOD                                         syscall.Errno = 9114\n\tDNS_ERROR_INVALID_INITIAL_ROLLOVER_OFFSET                                 syscall.Errno = 9115\n\tDNS_ERROR_ROLLOVER_IN_PROGRESS                                            syscall.Errno = 9116\n\tDNS_ERROR_STANDBY_KEY_NOT_PRESENT                                         syscall.Errno = 9117\n\tDNS_ERROR_NOT_ALLOWED_ON_ZSK                                              syscall.Errno = 9118\n\tDNS_ERROR_NOT_ALLOWED_ON_ACTIVE_SKD                                       syscall.Errno = 9119\n\tDNS_ERROR_ROLLOVER_ALREADY_QUEUED                                         syscall.Errno = 9120\n\tDNS_ERROR_NOT_ALLOWED_ON_UNSIGNED_ZONE                                    syscall.Errno = 9121\n\tDNS_ERROR_BAD_KEYMASTER                                                   syscall.Errno = 9122\n\tDNS_ERROR_INVALID_SIGNATURE_VALIDITY_PERIOD                               syscall.Errno = 9123\n\tDNS_ERROR_INVALID_NSEC3_ITERATION_COUNT                                   syscall.Errno = 9124\n\tDNS_ERROR_DNSSEC_IS_DISABLED                                              syscall.Errno = 9125\n\tDNS_ERROR_INVALID_XML                                                     syscall.Errno = 9126\n\tDNS_ERROR_NO_VALID_TRUST_ANCHORS                                          syscall.Errno = 9127\n\tDNS_ERROR_ROLLOVER_NOT_POKEABLE                                           syscall.Errno = 9128\n\tDNS_ERROR_NSEC3_NAME_COLLISION                                            syscall.Errno = 9129\n\tDNS_ERROR_NSEC_INCOMPATIBLE_WITH_NSEC3_RSA_SHA1                           syscall.Errno = 9130\n\tDNS_ERROR_PACKET_FMT_BASE                                                 syscall.Errno = 9500\n\tDNS_INFO_NO_RECORDS                                                       syscall.Errno = 9501\n\tDNS_ERROR_BAD_PACKET                                                      syscall.Errno = 9502\n\tDNS_ERROR_NO_PACKET                                                       syscall.Errno = 9503\n\tDNS_ERROR_RCODE                                                           syscall.Errno = 9504\n\tDNS_ERROR_UNSECURE_PACKET                                                 syscall.Errno = 9505\n\tDNS_STATUS_PACKET_UNSECURE                                                              = DNS_ERROR_UNSECURE_PACKET\n\tDNS_REQUEST_PENDING                                                       syscall.Errno = 9506\n\tDNS_ERROR_NO_MEMORY                                                                     = ERROR_OUTOFMEMORY\n\tDNS_ERROR_INVALID_NAME                                                                  = ERROR_INVALID_NAME\n\tDNS_ERROR_INVALID_DATA                                                                  = ERROR_INVALID_DATA\n\tDNS_ERROR_GENERAL_API_BASE                                                syscall.Errno = 9550\n\tDNS_ERROR_INVALID_TYPE                                                    syscall.Errno = 9551\n\tDNS_ERROR_INVALID_IP_ADDRESS                                              syscall.Errno = 9552\n\tDNS_ERROR_INVALID_PROPERTY                                                syscall.Errno = 9553\n\tDNS_ERROR_TRY_AGAIN_LATER                                                 syscall.Errno = 9554\n\tDNS_ERROR_NOT_UNIQUE                                                      syscall.Errno = 9555\n\tDNS_ERROR_NON_RFC_NAME                                                    syscall.Errno = 9556\n\tDNS_STATUS_FQDN                                                           syscall.Errno = 9557\n\tDNS_STATUS_DOTTED_NAME                                                    syscall.Errno = 9558\n\tDNS_STATUS_SINGLE_PART_NAME                                               syscall.Errno = 9559\n\tDNS_ERROR_INVALID_NAME_CHAR                                               syscall.Errno = 9560\n\tDNS_ERROR_NUMERIC_NAME                                                    syscall.Errno = 9561\n\tDNS_ERROR_NOT_ALLOWED_ON_ROOT_SERVER                                      syscall.Errno = 9562\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DELEGATION                                    syscall.Errno = 9563\n\tDNS_ERROR_CANNOT_FIND_ROOT_HINTS                                          syscall.Errno = 9564\n\tDNS_ERROR_INCONSISTENT_ROOT_HINTS                                         syscall.Errno = 9565\n\tDNS_ERROR_DWORD_VALUE_TOO_SMALL                                           syscall.Errno = 9566\n\tDNS_ERROR_DWORD_VALUE_TOO_LARGE                                           syscall.Errno = 9567\n\tDNS_ERROR_BACKGROUND_LOADING                                              syscall.Errno = 9568\n\tDNS_ERROR_NOT_ALLOWED_ON_RODC                                             syscall.Errno = 9569\n\tDNS_ERROR_NOT_ALLOWED_UNDER_DNAME                                         syscall.Errno = 9570\n\tDNS_ERROR_DELEGATION_REQUIRED                                             syscall.Errno = 9571\n\tDNS_ERROR_INVALID_POLICY_TABLE                                            syscall.Errno = 9572\n\tDNS_ERROR_ADDRESS_REQUIRED                                                syscall.Errno = 9573\n\tDNS_ERROR_ZONE_BASE                                                       syscall.Errno = 9600\n\tDNS_ERROR_ZONE_DOES_NOT_EXIST                                             syscall.Errno = 9601\n\tDNS_ERROR_NO_ZONE_INFO                                                    syscall.Errno = 9602\n\tDNS_ERROR_INVALID_ZONE_OPERATION                                          syscall.Errno = 9603\n\tDNS_ERROR_ZONE_CONFIGURATION_ERROR                                        syscall.Errno = 9604\n\tDNS_ERROR_ZONE_HAS_NO_SOA_RECORD                                          syscall.Errno = 9605\n\tDNS_ERROR_ZONE_HAS_NO_NS_RECORDS                                          syscall.Errno = 9606\n\tDNS_ERROR_ZONE_LOCKED                                                     syscall.Errno = 9607\n\tDNS_ERROR_ZONE_CREATION_FAILED                                            syscall.Errno = 9608\n\tDNS_ERROR_ZONE_ALREADY_EXISTS                                             syscall.Errno = 9609\n\tDNS_ERROR_AUTOZONE_ALREADY_EXISTS                                         syscall.Errno = 9610\n\tDNS_ERROR_INVALID_ZONE_TYPE                                               syscall.Errno = 9611\n\tDNS_ERROR_SECONDARY_REQUIRES_MASTER_IP                                    syscall.Errno = 9612\n\tDNS_ERROR_ZONE_NOT_SECONDARY                                              syscall.Errno = 9613\n\tDNS_ERROR_NEED_SECONDARY_ADDRESSES                                        syscall.Errno = 9614\n\tDNS_ERROR_WINS_INIT_FAILED                                                syscall.Errno = 9615\n\tDNS_ERROR_NEED_WINS_SERVERS                                               syscall.Errno = 9616\n\tDNS_ERROR_NBSTAT_INIT_FAILED                                              syscall.Errno = 9617\n\tDNS_ERROR_SOA_DELETE_INVALID                                              syscall.Errno = 9618\n\tDNS_ERROR_FORWARDER_ALREADY_EXISTS                                        syscall.Errno = 9619\n\tDNS_ERROR_ZONE_REQUIRES_MASTER_IP                                         syscall.Errno = 9620\n\tDNS_ERROR_ZONE_IS_SHUTDOWN                                                syscall.Errno = 9621\n\tDNS_ERROR_ZONE_LOCKED_FOR_SIGNING                                         syscall.Errno = 9622\n\tDNS_ERROR_DATAFILE_BASE                                                   syscall.Errno = 9650\n\tDNS_ERROR_PRIMARY_REQUIRES_DATAFILE                                       syscall.Errno = 9651\n\tDNS_ERROR_INVALID_DATAFILE_NAME                                           syscall.Errno = 9652\n\tDNS_ERROR_DATAFILE_OPEN_FAILURE                                           syscall.Errno = 9653\n\tDNS_ERROR_FILE_WRITEBACK_FAILED                                           syscall.Errno = 9654\n\tDNS_ERROR_DATAFILE_PARSING                                                syscall.Errno = 9655\n\tDNS_ERROR_DATABASE_BASE                                                   syscall.Errno = 9700\n\tDNS_ERROR_RECORD_DOES_NOT_EXIST                                           syscall.Errno = 9701\n\tDNS_ERROR_RECORD_FORMAT                                                   syscall.Errno = 9702\n\tDNS_ERROR_NODE_CREATION_FAILED                                            syscall.Errno = 9703\n\tDNS_ERROR_UNKNOWN_RECORD_TYPE                                             syscall.Errno = 9704\n\tDNS_ERROR_RECORD_TIMED_OUT                                                syscall.Errno = 9705\n\tDNS_ERROR_NAME_NOT_IN_ZONE                                                syscall.Errno = 9706\n\tDNS_ERROR_CNAME_LOOP                                                      syscall.Errno = 9707\n\tDNS_ERROR_NODE_IS_CNAME                                                   syscall.Errno = 9708\n\tDNS_ERROR_CNAME_COLLISION                                                 syscall.Errno = 9709\n\tDNS_ERROR_RECORD_ONLY_AT_ZONE_ROOT                                        syscall.Errno = 9710\n\tDNS_ERROR_RECORD_ALREADY_EXISTS                                           syscall.Errno = 9711\n\tDNS_ERROR_SECONDARY_DATA                                                  syscall.Errno = 9712\n\tDNS_ERROR_NO_CREATE_CACHE_DATA                                            syscall.Errno = 9713\n\tDNS_ERROR_NAME_DOES_NOT_EXIST                                             syscall.Errno = 9714\n\tDNS_WARNING_PTR_CREATE_FAILED                                             syscall.Errno = 9715\n\tDNS_WARNING_DOMAIN_UNDELETED                                              syscall.Errno = 9716\n\tDNS_ERROR_DS_UNAVAILABLE                                                  syscall.Errno = 9717\n\tDNS_ERROR_DS_ZONE_ALREADY_EXISTS                                          syscall.Errno = 9718\n\tDNS_ERROR_NO_BOOTFILE_IF_DS_ZONE                                          syscall.Errno = 9719\n\tDNS_ERROR_NODE_IS_DNAME                                                   syscall.Errno = 9720\n\tDNS_ERROR_DNAME_COLLISION                                                 syscall.Errno = 9721\n\tDNS_ERROR_ALIAS_LOOP                                                      syscall.Errno = 9722\n\tDNS_ERROR_OPERATION_BASE                                                  syscall.Errno = 9750\n\tDNS_INFO_AXFR_COMPLETE                                                    syscall.Errno = 9751\n\tDNS_ERROR_AXFR                                                            syscall.Errno = 9752\n\tDNS_INFO_ADDED_LOCAL_WINS                                                 syscall.Errno = 9753\n\tDNS_ERROR_SECURE_BASE                                                     syscall.Errno = 9800\n\tDNS_STATUS_CONTINUE_NEEDED                                                syscall.Errno = 9801\n\tDNS_ERROR_SETUP_BASE                                                      syscall.Errno = 9850\n\tDNS_ERROR_NO_TCPIP                                                        syscall.Errno = 9851\n\tDNS_ERROR_NO_DNS_SERVERS                                                  syscall.Errno = 9852\n\tDNS_ERROR_DP_BASE                                                         syscall.Errno = 9900\n\tDNS_ERROR_DP_DOES_NOT_EXIST                                               syscall.Errno = 9901\n\tDNS_ERROR_DP_ALREADY_EXISTS                                               syscall.Errno = 9902\n\tDNS_ERROR_DP_NOT_ENLISTED                                                 syscall.Errno = 9903\n\tDNS_ERROR_DP_ALREADY_ENLISTED                                             syscall.Errno = 9904\n\tDNS_ERROR_DP_NOT_AVAILABLE                                                syscall.Errno = 9905\n\tDNS_ERROR_DP_FSMO_ERROR                                                   syscall.Errno = 9906\n\tDNS_ERROR_RRL_NOT_ENABLED                                                 syscall.Errno = 9911\n\tDNS_ERROR_RRL_INVALID_WINDOW_SIZE                                         syscall.Errno = 9912\n\tDNS_ERROR_RRL_INVALID_IPV4_PREFIX                                         syscall.Errno = 9913\n\tDNS_ERROR_RRL_INVALID_IPV6_PREFIX                                         syscall.Errno = 9914\n\tDNS_ERROR_RRL_INVALID_TC_RATE                                             syscall.Errno = 9915\n\tDNS_ERROR_RRL_INVALID_LEAK_RATE                                           syscall.Errno = 9916\n\tDNS_ERROR_RRL_LEAK_RATE_LESSTHAN_TC_RATE                                  syscall.Errno = 9917\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_ALREADY_EXISTS                          syscall.Errno = 9921\n\tDNS_ERROR_VIRTUALIZATION_INSTANCE_DOES_NOT_EXIST                          syscall.Errno = 9922\n\tDNS_ERROR_VIRTUALIZATION_TREE_LOCKED                                      syscall.Errno = 9923\n\tDNS_ERROR_INVAILD_VIRTUALIZATION_INSTANCE_NAME                            syscall.Errno = 9924\n\tDNS_ERROR_DEFAULT_VIRTUALIZATION_INSTANCE                                 syscall.Errno = 9925\n\tDNS_ERROR_ZONESCOPE_ALREADY_EXISTS                                        syscall.Errno = 9951\n\tDNS_ERROR_ZONESCOPE_DOES_NOT_EXIST                                        syscall.Errno = 9952\n\tDNS_ERROR_DEFAULT_ZONESCOPE                                               syscall.Errno = 9953\n\tDNS_ERROR_INVALID_ZONESCOPE_NAME                                          syscall.Errno = 9954\n\tDNS_ERROR_NOT_ALLOWED_WITH_ZONESCOPES                                     syscall.Errno = 9955\n\tDNS_ERROR_LOAD_ZONESCOPE_FAILED                                           syscall.Errno = 9956\n\tDNS_ERROR_ZONESCOPE_FILE_WRITEBACK_FAILED                                 syscall.Errno = 9957\n\tDNS_ERROR_INVALID_SCOPE_NAME                                              syscall.Errno = 9958\n\tDNS_ERROR_SCOPE_DOES_NOT_EXIST                                            syscall.Errno = 9959\n\tDNS_ERROR_DEFAULT_SCOPE                                                   syscall.Errno = 9960\n\tDNS_ERROR_INVALID_SCOPE_OPERATION                                         syscall.Errno = 9961\n\tDNS_ERROR_SCOPE_LOCKED                                                    syscall.Errno = 9962\n\tDNS_ERROR_SCOPE_ALREADY_EXISTS                                            syscall.Errno = 9963\n\tDNS_ERROR_POLICY_ALREADY_EXISTS                                           syscall.Errno = 9971\n\tDNS_ERROR_POLICY_DOES_NOT_EXIST                                           syscall.Errno = 9972\n\tDNS_ERROR_POLICY_INVALID_CRITERIA                                         syscall.Errno = 9973\n\tDNS_ERROR_POLICY_INVALID_SETTINGS                                         syscall.Errno = 9974\n\tDNS_ERROR_CLIENT_SUBNET_IS_ACCESSED                                       syscall.Errno = 9975\n\tDNS_ERROR_CLIENT_SUBNET_DOES_NOT_EXIST                                    syscall.Errno = 9976\n\tDNS_ERROR_CLIENT_SUBNET_ALREADY_EXISTS                                    syscall.Errno = 9977\n\tDNS_ERROR_SUBNET_DOES_NOT_EXIST                                           syscall.Errno = 9978\n\tDNS_ERROR_SUBNET_ALREADY_EXISTS                                           syscall.Errno = 9979\n\tDNS_ERROR_POLICY_LOCKED                                                   syscall.Errno = 9980\n\tDNS_ERROR_POLICY_INVALID_WEIGHT                                           syscall.Errno = 9981\n\tDNS_ERROR_POLICY_INVALID_NAME                                             syscall.Errno = 9982\n\tDNS_ERROR_POLICY_MISSING_CRITERIA                                         syscall.Errno = 9983\n\tDNS_ERROR_INVALID_CLIENT_SUBNET_NAME                                      syscall.Errno = 9984\n\tDNS_ERROR_POLICY_PROCESSING_ORDER_INVALID                                 syscall.Errno = 9985\n\tDNS_ERROR_POLICY_SCOPE_MISSING                                            syscall.Errno = 9986\n\tDNS_ERROR_POLICY_SCOPE_NOT_ALLOWED                                        syscall.Errno = 9987\n\tDNS_ERROR_SERVERSCOPE_IS_REFERENCED                                       syscall.Errno = 9988\n\tDNS_ERROR_ZONESCOPE_IS_REFERENCED                                         syscall.Errno = 9989\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_CLIENT_SUBNET                           syscall.Errno = 9990\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TRANSPORT_PROTOCOL                      syscall.Errno = 9991\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_NETWORK_PROTOCOL                        syscall.Errno = 9992\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_INTERFACE                               syscall.Errno = 9993\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_FQDN                                    syscall.Errno = 9994\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_QUERY_TYPE                              syscall.Errno = 9995\n\tDNS_ERROR_POLICY_INVALID_CRITERIA_TIME_OF_DAY                             syscall.Errno = 9996\n\tWSABASEERR                                                                syscall.Errno = 10000\n\tWSAEINTR                                                                  syscall.Errno = 10004\n\tWSAEBADF                                                                  syscall.Errno = 10009\n\tWSAEACCES                                                                 syscall.Errno = 10013\n\tWSAEFAULT                                                                 syscall.Errno = 10014\n\tWSAEINVAL                                                                 syscall.Errno = 10022\n\tWSAEMFILE                                                                 syscall.Errno = 10024\n\tWSAEWOULDBLOCK                                                            syscall.Errno = 10035\n\tWSAEINPROGRESS                                                            syscall.Errno = 10036\n\tWSAEALREADY                                                               syscall.Errno = 10037\n\tWSAENOTSOCK                                                               syscall.Errno = 10038\n\tWSAEDESTADDRREQ                                                           syscall.Errno = 10039\n\tWSAEMSGSIZE                                                               syscall.Errno = 10040\n\tWSAEPROTOTYPE                                                             syscall.Errno = 10041\n\tWSAENOPROTOOPT                                                            syscall.Errno = 10042\n\tWSAEPROTONOSUPPORT                                                        syscall.Errno = 10043\n\tWSAESOCKTNOSUPPORT                                                        syscall.Errno = 10044\n\tWSAEOPNOTSUPP                                                             syscall.Errno = 10045\n\tWSAEPFNOSUPPORT                                                           syscall.Errno = 10046\n\tWSAEAFNOSUPPORT                                                           syscall.Errno = 10047\n\tWSAEADDRINUSE                                                             syscall.Errno = 10048\n\tWSAEADDRNOTAVAIL                                                          syscall.Errno = 10049\n\tWSAENETDOWN                                                               syscall.Errno = 10050\n\tWSAENETUNREACH                                                            syscall.Errno = 10051\n\tWSAENETRESET                                                              syscall.Errno = 10052\n\tWSAECONNABORTED                                                           syscall.Errno = 10053\n\tWSAECONNRESET                                                             syscall.Errno = 10054\n\tWSAENOBUFS                                                                syscall.Errno = 10055\n\tWSAEISCONN                                                                syscall.Errno = 10056\n\tWSAENOTCONN                                                               syscall.Errno = 10057\n\tWSAESHUTDOWN                                                              syscall.Errno = 10058\n\tWSAETOOMANYREFS                                                           syscall.Errno = 10059\n\tWSAETIMEDOUT                                                              syscall.Errno = 10060\n\tWSAECONNREFUSED                                                           syscall.Errno = 10061\n\tWSAELOOP                                                                  syscall.Errno = 10062\n\tWSAENAMETOOLONG                                                           syscall.Errno = 10063\n\tWSAEHOSTDOWN                                                              syscall.Errno = 10064\n\tWSAEHOSTUNREACH                                                           syscall.Errno = 10065\n\tWSAENOTEMPTY                                                              syscall.Errno = 10066\n\tWSAEPROCLIM                                                               syscall.Errno = 10067\n\tWSAEUSERS                                                                 syscall.Errno = 10068\n\tWSAEDQUOT                                                                 syscall.Errno = 10069\n\tWSAESTALE                                                                 syscall.Errno = 10070\n\tWSAEREMOTE                                                                syscall.Errno = 10071\n\tWSASYSNOTREADY                                                            syscall.Errno = 10091\n\tWSAVERNOTSUPPORTED                                                        syscall.Errno = 10092\n\tWSANOTINITIALISED                                                         syscall.Errno = 10093\n\tWSAEDISCON                                                                syscall.Errno = 10101\n\tWSAENOMORE                                                                syscall.Errno = 10102\n\tWSAECANCELLED                                                             syscall.Errno = 10103\n\tWSAEINVALIDPROCTABLE                                                      syscall.Errno = 10104\n\tWSAEINVALIDPROVIDER                                                       syscall.Errno = 10105\n\tWSAEPROVIDERFAILEDINIT                                                    syscall.Errno = 10106\n\tWSASYSCALLFAILURE                                                         syscall.Errno = 10107\n\tWSASERVICE_NOT_FOUND                                                      syscall.Errno = 10108\n\tWSATYPE_NOT_FOUND                                                         syscall.Errno = 10109\n\tWSA_E_NO_MORE                                                             syscall.Errno = 10110\n\tWSA_E_CANCELLED                                                           syscall.Errno = 10111\n\tWSAEREFUSED                                                               syscall.Errno = 10112\n\tWSAHOST_NOT_FOUND                                                         syscall.Errno = 11001\n\tWSATRY_AGAIN                                                              syscall.Errno = 11002\n\tWSANO_RECOVERY                                                            syscall.Errno = 11003\n\tWSANO_DATA                                                                syscall.Errno = 11004\n\tWSA_QOS_RECEIVERS                                                         syscall.Errno = 11005\n\tWSA_QOS_SENDERS                                                           syscall.Errno = 11006\n\tWSA_QOS_NO_SENDERS                                                        syscall.Errno = 11007\n\tWSA_QOS_NO_RECEIVERS                                                      syscall.Errno = 11008\n\tWSA_QOS_REQUEST_CONFIRMED                                                 syscall.Errno = 11009\n\tWSA_QOS_ADMISSION_FAILURE                                                 syscall.Errno = 11010\n\tWSA_QOS_POLICY_FAILURE                                                    syscall.Errno = 11011\n\tWSA_QOS_BAD_STYLE                                                         syscall.Errno = 11012\n\tWSA_QOS_BAD_OBJECT                                                        syscall.Errno = 11013\n\tWSA_QOS_TRAFFIC_CTRL_ERROR                                                syscall.Errno = 11014\n\tWSA_QOS_GENERIC_ERROR                                                     syscall.Errno = 11015\n\tWSA_QOS_ESERVICETYPE                                                      syscall.Errno = 11016\n\tWSA_QOS_EFLOWSPEC                                                         syscall.Errno = 11017\n\tWSA_QOS_EPROVSPECBUF                                                      syscall.Errno = 11018\n\tWSA_QOS_EFILTERSTYLE                                                      syscall.Errno = 11019\n\tWSA_QOS_EFILTERTYPE                                                       syscall.Errno = 11020\n\tWSA_QOS_EFILTERCOUNT                                                      syscall.Errno = 11021\n\tWSA_QOS_EOBJLENGTH                                                        syscall.Errno = 11022\n\tWSA_QOS_EFLOWCOUNT                                                        syscall.Errno = 11023\n\tWSA_QOS_EUNKOWNPSOBJ                                                      syscall.Errno = 11024\n\tWSA_QOS_EPOLICYOBJ                                                        syscall.Errno = 11025\n\tWSA_QOS_EFLOWDESC                                                         syscall.Errno = 11026\n\tWSA_QOS_EPSFLOWSPEC                                                       syscall.Errno = 11027\n\tWSA_QOS_EPSFILTERSPEC                                                     syscall.Errno = 11028\n\tWSA_QOS_ESDMODEOBJ                                                        syscall.Errno = 11029\n\tWSA_QOS_ESHAPERATEOBJ                                                     syscall.Errno = 11030\n\tWSA_QOS_RESERVED_PETYPE                                                   syscall.Errno = 11031\n\tWSA_SECURE_HOST_NOT_FOUND                                                 syscall.Errno = 11032\n\tWSA_IPSEC_NAME_POLICY_ERROR                                               syscall.Errno = 11033\n\tERROR_IPSEC_QM_POLICY_EXISTS                                              syscall.Errno = 13000\n\tERROR_IPSEC_QM_POLICY_NOT_FOUND                                           syscall.Errno = 13001\n\tERROR_IPSEC_QM_POLICY_IN_USE                                              syscall.Errno = 13002\n\tERROR_IPSEC_MM_POLICY_EXISTS                                              syscall.Errno = 13003\n\tERROR_IPSEC_MM_POLICY_NOT_FOUND                                           syscall.Errno = 13004\n\tERROR_IPSEC_MM_POLICY_IN_USE                                              syscall.Errno = 13005\n\tERROR_IPSEC_MM_FILTER_EXISTS                                              syscall.Errno = 13006\n\tERROR_IPSEC_MM_FILTER_NOT_FOUND                                           syscall.Errno = 13007\n\tERROR_IPSEC_TRANSPORT_FILTER_EXISTS                                       syscall.Errno = 13008\n\tERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND                                    syscall.Errno = 13009\n\tERROR_IPSEC_MM_AUTH_EXISTS                                                syscall.Errno = 13010\n\tERROR_IPSEC_MM_AUTH_NOT_FOUND                                             syscall.Errno = 13011\n\tERROR_IPSEC_MM_AUTH_IN_USE                                                syscall.Errno = 13012\n\tERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND                                   syscall.Errno = 13013\n\tERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND                                     syscall.Errno = 13014\n\tERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND                                   syscall.Errno = 13015\n\tERROR_IPSEC_TUNNEL_FILTER_EXISTS                                          syscall.Errno = 13016\n\tERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND                                       syscall.Errno = 13017\n\tERROR_IPSEC_MM_FILTER_PENDING_DELETION                                    syscall.Errno = 13018\n\tERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION                             syscall.Errno = 13019\n\tERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION                                syscall.Errno = 13020\n\tERROR_IPSEC_MM_POLICY_PENDING_DELETION                                    syscall.Errno = 13021\n\tERROR_IPSEC_MM_AUTH_PENDING_DELETION                                      syscall.Errno = 13022\n\tERROR_IPSEC_QM_POLICY_PENDING_DELETION                                    syscall.Errno = 13023\n\tWARNING_IPSEC_MM_POLICY_PRUNED                                            syscall.Errno = 13024\n\tWARNING_IPSEC_QM_POLICY_PRUNED                                            syscall.Errno = 13025\n\tERROR_IPSEC_IKE_NEG_STATUS_BEGIN                                          syscall.Errno = 13800\n\tERROR_IPSEC_IKE_AUTH_FAIL                                                 syscall.Errno = 13801\n\tERROR_IPSEC_IKE_ATTRIB_FAIL                                               syscall.Errno = 13802\n\tERROR_IPSEC_IKE_NEGOTIATION_PENDING                                       syscall.Errno = 13803\n\tERROR_IPSEC_IKE_GENERAL_PROCESSING_ERROR                                  syscall.Errno = 13804\n\tERROR_IPSEC_IKE_TIMED_OUT                                                 syscall.Errno = 13805\n\tERROR_IPSEC_IKE_NO_CERT                                                   syscall.Errno = 13806\n\tERROR_IPSEC_IKE_SA_DELETED                                                syscall.Errno = 13807\n\tERROR_IPSEC_IKE_SA_REAPED                                                 syscall.Errno = 13808\n\tERROR_IPSEC_IKE_MM_ACQUIRE_DROP                                           syscall.Errno = 13809\n\tERROR_IPSEC_IKE_QM_ACQUIRE_DROP                                           syscall.Errno = 13810\n\tERROR_IPSEC_IKE_QUEUE_DROP_MM                                             syscall.Errno = 13811\n\tERROR_IPSEC_IKE_QUEUE_DROP_NO_MM                                          syscall.Errno = 13812\n\tERROR_IPSEC_IKE_DROP_NO_RESPONSE                                          syscall.Errno = 13813\n\tERROR_IPSEC_IKE_MM_DELAY_DROP                                             syscall.Errno = 13814\n\tERROR_IPSEC_IKE_QM_DELAY_DROP                                             syscall.Errno = 13815\n\tERROR_IPSEC_IKE_ERROR                                                     syscall.Errno = 13816\n\tERROR_IPSEC_IKE_CRL_FAILED                                                syscall.Errno = 13817\n\tERROR_IPSEC_IKE_INVALID_KEY_USAGE                                         syscall.Errno = 13818\n\tERROR_IPSEC_IKE_INVALID_CERT_TYPE                                         syscall.Errno = 13819\n\tERROR_IPSEC_IKE_NO_PRIVATE_KEY                                            syscall.Errno = 13820\n\tERROR_IPSEC_IKE_SIMULTANEOUS_REKEY                                        syscall.Errno = 13821\n\tERROR_IPSEC_IKE_DH_FAIL                                                   syscall.Errno = 13822\n\tERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED                           syscall.Errno = 13823\n\tERROR_IPSEC_IKE_INVALID_HEADER                                            syscall.Errno = 13824\n\tERROR_IPSEC_IKE_NO_POLICY                                                 syscall.Errno = 13825\n\tERROR_IPSEC_IKE_INVALID_SIGNATURE                                         syscall.Errno = 13826\n\tERROR_IPSEC_IKE_KERBEROS_ERROR                                            syscall.Errno = 13827\n\tERROR_IPSEC_IKE_NO_PUBLIC_KEY                                             syscall.Errno = 13828\n\tERROR_IPSEC_IKE_PROCESS_ERR                                               syscall.Errno = 13829\n\tERROR_IPSEC_IKE_PROCESS_ERR_SA                                            syscall.Errno = 13830\n\tERROR_IPSEC_IKE_PROCESS_ERR_PROP                                          syscall.Errno = 13831\n\tERROR_IPSEC_IKE_PROCESS_ERR_TRANS                                         syscall.Errno = 13832\n\tERROR_IPSEC_IKE_PROCESS_ERR_KE                                            syscall.Errno = 13833\n\tERROR_IPSEC_IKE_PROCESS_ERR_ID                                            syscall.Errno = 13834\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT                                          syscall.Errno = 13835\n\tERROR_IPSEC_IKE_PROCESS_ERR_CERT_REQ                                      syscall.Errno = 13836\n\tERROR_IPSEC_IKE_PROCESS_ERR_HASH                                          syscall.Errno = 13837\n\tERROR_IPSEC_IKE_PROCESS_ERR_SIG                                           syscall.Errno = 13838\n\tERROR_IPSEC_IKE_PROCESS_ERR_NONCE                                         syscall.Errno = 13839\n\tERROR_IPSEC_IKE_PROCESS_ERR_NOTIFY                                        syscall.Errno = 13840\n\tERROR_IPSEC_IKE_PROCESS_ERR_DELETE                                        syscall.Errno = 13841\n\tERROR_IPSEC_IKE_PROCESS_ERR_VENDOR                                        syscall.Errno = 13842\n\tERROR_IPSEC_IKE_INVALID_PAYLOAD                                           syscall.Errno = 13843\n\tERROR_IPSEC_IKE_LOAD_SOFT_SA                                              syscall.Errno = 13844\n\tERROR_IPSEC_IKE_SOFT_SA_TORN_DOWN                                         syscall.Errno = 13845\n\tERROR_IPSEC_IKE_INVALID_COOKIE                                            syscall.Errno = 13846\n\tERROR_IPSEC_IKE_NO_PEER_CERT                                              syscall.Errno = 13847\n\tERROR_IPSEC_IKE_PEER_CRL_FAILED                                           syscall.Errno = 13848\n\tERROR_IPSEC_IKE_POLICY_CHANGE                                             syscall.Errno = 13849\n\tERROR_IPSEC_IKE_NO_MM_POLICY                                              syscall.Errno = 13850\n\tERROR_IPSEC_IKE_NOTCBPRIV                                                 syscall.Errno = 13851\n\tERROR_IPSEC_IKE_SECLOADFAIL                                               syscall.Errno = 13852\n\tERROR_IPSEC_IKE_FAILSSPINIT                                               syscall.Errno = 13853\n\tERROR_IPSEC_IKE_FAILQUERYSSP                                              syscall.Errno = 13854\n\tERROR_IPSEC_IKE_SRVACQFAIL                                                syscall.Errno = 13855\n\tERROR_IPSEC_IKE_SRVQUERYCRED                                              syscall.Errno = 13856\n\tERROR_IPSEC_IKE_GETSPIFAIL                                                syscall.Errno = 13857\n\tERROR_IPSEC_IKE_INVALID_FILTER                                            syscall.Errno = 13858\n\tERROR_IPSEC_IKE_OUT_OF_MEMORY                                             syscall.Errno = 13859\n\tERROR_IPSEC_IKE_ADD_UPDATE_KEY_FAILED                                     syscall.Errno = 13860\n\tERROR_IPSEC_IKE_INVALID_POLICY                                            syscall.Errno = 13861\n\tERROR_IPSEC_IKE_UNKNOWN_DOI                                               syscall.Errno = 13862\n\tERROR_IPSEC_IKE_INVALID_SITUATION                                         syscall.Errno = 13863\n\tERROR_IPSEC_IKE_DH_FAILURE                                                syscall.Errno = 13864\n\tERROR_IPSEC_IKE_INVALID_GROUP                                             syscall.Errno = 13865\n\tERROR_IPSEC_IKE_ENCRYPT                                                   syscall.Errno = 13866\n\tERROR_IPSEC_IKE_DECRYPT                                                   syscall.Errno = 13867\n\tERROR_IPSEC_IKE_POLICY_MATCH                                              syscall.Errno = 13868\n\tERROR_IPSEC_IKE_UNSUPPORTED_ID                                            syscall.Errno = 13869\n\tERROR_IPSEC_IKE_INVALID_HASH                                              syscall.Errno = 13870\n\tERROR_IPSEC_IKE_INVALID_HASH_ALG                                          syscall.Errno = 13871\n\tERROR_IPSEC_IKE_INVALID_HASH_SIZE                                         syscall.Errno = 13872\n\tERROR_IPSEC_IKE_INVALID_ENCRYPT_ALG                                       syscall.Errno = 13873\n\tERROR_IPSEC_IKE_INVALID_AUTH_ALG                                          syscall.Errno = 13874\n\tERROR_IPSEC_IKE_INVALID_SIG                                               syscall.Errno = 13875\n\tERROR_IPSEC_IKE_LOAD_FAILED                                               syscall.Errno = 13876\n\tERROR_IPSEC_IKE_RPC_DELETE                                                syscall.Errno = 13877\n\tERROR_IPSEC_IKE_BENIGN_REINIT                                             syscall.Errno = 13878\n\tERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY                         syscall.Errno = 13879\n\tERROR_IPSEC_IKE_INVALID_MAJOR_VERSION                                     syscall.Errno = 13880\n\tERROR_IPSEC_IKE_INVALID_CERT_KEYLEN                                       syscall.Errno = 13881\n\tERROR_IPSEC_IKE_MM_LIMIT                                                  syscall.Errno = 13882\n\tERROR_IPSEC_IKE_NEGOTIATION_DISABLED                                      syscall.Errno = 13883\n\tERROR_IPSEC_IKE_QM_LIMIT                                                  syscall.Errno = 13884\n\tERROR_IPSEC_IKE_MM_EXPIRED                                                syscall.Errno = 13885\n\tERROR_IPSEC_IKE_PEER_MM_ASSUMED_INVALID                                   syscall.Errno = 13886\n\tERROR_IPSEC_IKE_CERT_CHAIN_POLICY_MISMATCH                                syscall.Errno = 13887\n\tERROR_IPSEC_IKE_UNEXPECTED_MESSAGE_ID                                     syscall.Errno = 13888\n\tERROR_IPSEC_IKE_INVALID_AUTH_PAYLOAD                                      syscall.Errno = 13889\n\tERROR_IPSEC_IKE_DOS_COOKIE_SENT                                           syscall.Errno = 13890\n\tERROR_IPSEC_IKE_SHUTTING_DOWN                                             syscall.Errno = 13891\n\tERROR_IPSEC_IKE_CGA_AUTH_FAILED                                           syscall.Errno = 13892\n\tERROR_IPSEC_IKE_PROCESS_ERR_NATOA                                         syscall.Errno = 13893\n\tERROR_IPSEC_IKE_INVALID_MM_FOR_QM                                         syscall.Errno = 13894\n\tERROR_IPSEC_IKE_QM_EXPIRED                                                syscall.Errno = 13895\n\tERROR_IPSEC_IKE_TOO_MANY_FILTERS                                          syscall.Errno = 13896\n\tERROR_IPSEC_IKE_NEG_STATUS_END                                            syscall.Errno = 13897\n\tERROR_IPSEC_IKE_KILL_DUMMY_NAP_TUNNEL                                     syscall.Errno = 13898\n\tERROR_IPSEC_IKE_INNER_IP_ASSIGNMENT_FAILURE                               syscall.Errno = 13899\n\tERROR_IPSEC_IKE_REQUIRE_CP_PAYLOAD_MISSING                                syscall.Errno = 13900\n\tERROR_IPSEC_KEY_MODULE_IMPERSONATION_NEGOTIATION_PENDING                  syscall.Errno = 13901\n\tERROR_IPSEC_IKE_COEXISTENCE_SUPPRESS                                      syscall.Errno = 13902\n\tERROR_IPSEC_IKE_RATELIMIT_DROP                                            syscall.Errno = 13903\n\tERROR_IPSEC_IKE_PEER_DOESNT_SUPPORT_MOBIKE                                syscall.Errno = 13904\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE                                     syscall.Errno = 13905\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_FAILURE                         syscall.Errno = 13906\n\tERROR_IPSEC_IKE_AUTHORIZATION_FAILURE_WITH_OPTIONAL_RETRY                 syscall.Errno = 13907\n\tERROR_IPSEC_IKE_STRONG_CRED_AUTHORIZATION_AND_CERTMAP_FAILURE             syscall.Errno = 13908\n\tERROR_IPSEC_IKE_NEG_STATUS_EXTENDED_END                                   syscall.Errno = 13909\n\tERROR_IPSEC_BAD_SPI                                                       syscall.Errno = 13910\n\tERROR_IPSEC_SA_LIFETIME_EXPIRED                                           syscall.Errno = 13911\n\tERROR_IPSEC_WRONG_SA                                                      syscall.Errno = 13912\n\tERROR_IPSEC_REPLAY_CHECK_FAILED                                           syscall.Errno = 13913\n\tERROR_IPSEC_INVALID_PACKET                                                syscall.Errno = 13914\n\tERROR_IPSEC_INTEGRITY_CHECK_FAILED                                        syscall.Errno = 13915\n\tERROR_IPSEC_CLEAR_TEXT_DROP                                               syscall.Errno = 13916\n\tERROR_IPSEC_AUTH_FIREWALL_DROP                                            syscall.Errno = 13917\n\tERROR_IPSEC_THROTTLE_DROP                                                 syscall.Errno = 13918\n\tERROR_IPSEC_DOSP_BLOCK                                                    syscall.Errno = 13925\n\tERROR_IPSEC_DOSP_RECEIVED_MULTICAST                                       syscall.Errno = 13926\n\tERROR_IPSEC_DOSP_INVALID_PACKET                                           syscall.Errno = 13927\n\tERROR_IPSEC_DOSP_STATE_LOOKUP_FAILED                                      syscall.Errno = 13928\n\tERROR_IPSEC_DOSP_MAX_ENTRIES                                              syscall.Errno = 13929\n\tERROR_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                       syscall.Errno = 13930\n\tERROR_IPSEC_DOSP_NOT_INSTALLED                                            syscall.Errno = 13931\n\tERROR_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                              syscall.Errno = 13932\n\tERROR_SXS_SECTION_NOT_FOUND                                               syscall.Errno = 14000\n\tERROR_SXS_CANT_GEN_ACTCTX                                                 syscall.Errno = 14001\n\tERROR_SXS_INVALID_ACTCTXDATA_FORMAT                                       syscall.Errno = 14002\n\tERROR_SXS_ASSEMBLY_NOT_FOUND                                              syscall.Errno = 14003\n\tERROR_SXS_MANIFEST_FORMAT_ERROR                                           syscall.Errno = 14004\n\tERROR_SXS_MANIFEST_PARSE_ERROR                                            syscall.Errno = 14005\n\tERROR_SXS_ACTIVATION_CONTEXT_DISABLED                                     syscall.Errno = 14006\n\tERROR_SXS_KEY_NOT_FOUND                                                   syscall.Errno = 14007\n\tERROR_SXS_VERSION_CONFLICT                                                syscall.Errno = 14008\n\tERROR_SXS_WRONG_SECTION_TYPE                                              syscall.Errno = 14009\n\tERROR_SXS_THREAD_QUERIES_DISABLED                                         syscall.Errno = 14010\n\tERROR_SXS_PROCESS_DEFAULT_ALREADY_SET                                     syscall.Errno = 14011\n\tERROR_SXS_UNKNOWN_ENCODING_GROUP                                          syscall.Errno = 14012\n\tERROR_SXS_UNKNOWN_ENCODING                                                syscall.Errno = 14013\n\tERROR_SXS_INVALID_XML_NAMESPACE_URI                                       syscall.Errno = 14014\n\tERROR_SXS_ROOT_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14015\n\tERROR_SXS_LEAF_MANIFEST_DEPENDENCY_NOT_INSTALLED                          syscall.Errno = 14016\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14017\n\tERROR_SXS_MANIFEST_MISSING_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14018\n\tERROR_SXS_MANIFEST_INVALID_REQUIRED_DEFAULT_NAMESPACE                     syscall.Errno = 14019\n\tERROR_SXS_PRIVATE_MANIFEST_CROSS_PATH_WITH_REPARSE_POINT                  syscall.Errno = 14020\n\tERROR_SXS_DUPLICATE_DLL_NAME                                              syscall.Errno = 14021\n\tERROR_SXS_DUPLICATE_WINDOWCLASS_NAME                                      syscall.Errno = 14022\n\tERROR_SXS_DUPLICATE_CLSID                                                 syscall.Errno = 14023\n\tERROR_SXS_DUPLICATE_IID                                                   syscall.Errno = 14024\n\tERROR_SXS_DUPLICATE_TLBID                                                 syscall.Errno = 14025\n\tERROR_SXS_DUPLICATE_PROGID                                                syscall.Errno = 14026\n\tERROR_SXS_DUPLICATE_ASSEMBLY_NAME                                         syscall.Errno = 14027\n\tERROR_SXS_FILE_HASH_MISMATCH                                              syscall.Errno = 14028\n\tERROR_SXS_POLICY_PARSE_ERROR                                              syscall.Errno = 14029\n\tERROR_SXS_XML_E_MISSINGQUOTE                                              syscall.Errno = 14030\n\tERROR_SXS_XML_E_COMMENTSYNTAX                                             syscall.Errno = 14031\n\tERROR_SXS_XML_E_BADSTARTNAMECHAR                                          syscall.Errno = 14032\n\tERROR_SXS_XML_E_BADNAMECHAR                                               syscall.Errno = 14033\n\tERROR_SXS_XML_E_BADCHARINSTRING                                           syscall.Errno = 14034\n\tERROR_SXS_XML_E_XMLDECLSYNTAX                                             syscall.Errno = 14035\n\tERROR_SXS_XML_E_BADCHARDATA                                               syscall.Errno = 14036\n\tERROR_SXS_XML_E_MISSINGWHITESPACE                                         syscall.Errno = 14037\n\tERROR_SXS_XML_E_EXPECTINGTAGEND                                           syscall.Errno = 14038\n\tERROR_SXS_XML_E_MISSINGSEMICOLON                                          syscall.Errno = 14039\n\tERROR_SXS_XML_E_UNBALANCEDPAREN                                           syscall.Errno = 14040\n\tERROR_SXS_XML_E_INTERNALERROR                                             syscall.Errno = 14041\n\tERROR_SXS_XML_E_UNEXPECTED_WHITESPACE                                     syscall.Errno = 14042\n\tERROR_SXS_XML_E_INCOMPLETE_ENCODING                                       syscall.Errno = 14043\n\tERROR_SXS_XML_E_MISSING_PAREN                                             syscall.Errno = 14044\n\tERROR_SXS_XML_E_EXPECTINGCLOSEQUOTE                                       syscall.Errno = 14045\n\tERROR_SXS_XML_E_MULTIPLE_COLONS                                           syscall.Errno = 14046\n\tERROR_SXS_XML_E_INVALID_DECIMAL                                           syscall.Errno = 14047\n\tERROR_SXS_XML_E_INVALID_HEXIDECIMAL                                       syscall.Errno = 14048\n\tERROR_SXS_XML_E_INVALID_UNICODE                                           syscall.Errno = 14049\n\tERROR_SXS_XML_E_WHITESPACEORQUESTIONMARK                                  syscall.Errno = 14050\n\tERROR_SXS_XML_E_UNEXPECTEDENDTAG                                          syscall.Errno = 14051\n\tERROR_SXS_XML_E_UNCLOSEDTAG                                               syscall.Errno = 14052\n\tERROR_SXS_XML_E_DUPLICATEATTRIBUTE                                        syscall.Errno = 14053\n\tERROR_SXS_XML_E_MULTIPLEROOTS                                             syscall.Errno = 14054\n\tERROR_SXS_XML_E_INVALIDATROOTLEVEL                                        syscall.Errno = 14055\n\tERROR_SXS_XML_E_BADXMLDECL                                                syscall.Errno = 14056\n\tERROR_SXS_XML_E_MISSINGROOT                                               syscall.Errno = 14057\n\tERROR_SXS_XML_E_UNEXPECTEDEOF                                             syscall.Errno = 14058\n\tERROR_SXS_XML_E_BADPEREFINSUBSET                                          syscall.Errno = 14059\n\tERROR_SXS_XML_E_UNCLOSEDSTARTTAG                                          syscall.Errno = 14060\n\tERROR_SXS_XML_E_UNCLOSEDENDTAG                                            syscall.Errno = 14061\n\tERROR_SXS_XML_E_UNCLOSEDSTRING                                            syscall.Errno = 14062\n\tERROR_SXS_XML_E_UNCLOSEDCOMMENT                                           syscall.Errno = 14063\n\tERROR_SXS_XML_E_UNCLOSEDDECL                                              syscall.Errno = 14064\n\tERROR_SXS_XML_E_UNCLOSEDCDATA                                             syscall.Errno = 14065\n\tERROR_SXS_XML_E_RESERVEDNAMESPACE                                         syscall.Errno = 14066\n\tERROR_SXS_XML_E_INVALIDENCODING                                           syscall.Errno = 14067\n\tERROR_SXS_XML_E_INVALIDSWITCH                                             syscall.Errno = 14068\n\tERROR_SXS_XML_E_BADXMLCASE                                                syscall.Errno = 14069\n\tERROR_SXS_XML_E_INVALID_STANDALONE                                        syscall.Errno = 14070\n\tERROR_SXS_XML_E_UNEXPECTED_STANDALONE                                     syscall.Errno = 14071\n\tERROR_SXS_XML_E_INVALID_VERSION                                           syscall.Errno = 14072\n\tERROR_SXS_XML_E_MISSINGEQUALS                                             syscall.Errno = 14073\n\tERROR_SXS_PROTECTION_RECOVERY_FAILED                                      syscall.Errno = 14074\n\tERROR_SXS_PROTECTION_PUBLIC_KEY_TOO_SHORT                                 syscall.Errno = 14075\n\tERROR_SXS_PROTECTION_CATALOG_NOT_VALID                                    syscall.Errno = 14076\n\tERROR_SXS_UNTRANSLATABLE_HRESULT                                          syscall.Errno = 14077\n\tERROR_SXS_PROTECTION_CATALOG_FILE_MISSING                                 syscall.Errno = 14078\n\tERROR_SXS_MISSING_ASSEMBLY_IDENTITY_ATTRIBUTE                             syscall.Errno = 14079\n\tERROR_SXS_INVALID_ASSEMBLY_IDENTITY_ATTRIBUTE_NAME                        syscall.Errno = 14080\n\tERROR_SXS_ASSEMBLY_MISSING                                                syscall.Errno = 14081\n\tERROR_SXS_CORRUPT_ACTIVATION_STACK                                        syscall.Errno = 14082\n\tERROR_SXS_CORRUPTION                                                      syscall.Errno = 14083\n\tERROR_SXS_EARLY_DEACTIVATION                                              syscall.Errno = 14084\n\tERROR_SXS_INVALID_DEACTIVATION                                            syscall.Errno = 14085\n\tERROR_SXS_MULTIPLE_DEACTIVATION                                           syscall.Errno = 14086\n\tERROR_SXS_PROCESS_TERMINATION_REQUESTED                                   syscall.Errno = 14087\n\tERROR_SXS_RELEASE_ACTIVATION_CONTEXT                                      syscall.Errno = 14088\n\tERROR_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                         syscall.Errno = 14089\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                                syscall.Errno = 14090\n\tERROR_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                 syscall.Errno = 14091\n\tERROR_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                    syscall.Errno = 14092\n\tERROR_SXS_IDENTITY_PARSE_ERROR                                            syscall.Errno = 14093\n\tERROR_MALFORMED_SUBSTITUTION_STRING                                       syscall.Errno = 14094\n\tERROR_SXS_INCORRECT_PUBLIC_KEY_TOKEN                                      syscall.Errno = 14095\n\tERROR_UNMAPPED_SUBSTITUTION_STRING                                        syscall.Errno = 14096\n\tERROR_SXS_ASSEMBLY_NOT_LOCKED                                             syscall.Errno = 14097\n\tERROR_SXS_COMPONENT_STORE_CORRUPT                                         syscall.Errno = 14098\n\tERROR_ADVANCED_INSTALLER_FAILED                                           syscall.Errno = 14099\n\tERROR_XML_ENCODING_MISMATCH                                               syscall.Errno = 14100\n\tERROR_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                   syscall.Errno = 14101\n\tERROR_SXS_IDENTITIES_DIFFERENT                                            syscall.Errno = 14102\n\tERROR_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                    syscall.Errno = 14103\n\tERROR_SXS_FILE_NOT_PART_OF_ASSEMBLY                                       syscall.Errno = 14104\n\tERROR_SXS_MANIFEST_TOO_BIG                                                syscall.Errno = 14105\n\tERROR_SXS_SETTING_NOT_REGISTERED                                          syscall.Errno = 14106\n\tERROR_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                  syscall.Errno = 14107\n\tERROR_SMI_PRIMITIVE_INSTALLER_FAILED                                      syscall.Errno = 14108\n\tERROR_GENERIC_COMMAND_FAILED                                              syscall.Errno = 14109\n\tERROR_SXS_FILE_HASH_MISSING                                               syscall.Errno = 14110\n\tERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS                                     syscall.Errno = 14111\n\tERROR_EVT_INVALID_CHANNEL_PATH                                            syscall.Errno = 15000\n\tERROR_EVT_INVALID_QUERY                                                   syscall.Errno = 15001\n\tERROR_EVT_PUBLISHER_METADATA_NOT_FOUND                                    syscall.Errno = 15002\n\tERROR_EVT_EVENT_TEMPLATE_NOT_FOUND                                        syscall.Errno = 15003\n\tERROR_EVT_INVALID_PUBLISHER_NAME                                          syscall.Errno = 15004\n\tERROR_EVT_INVALID_EVENT_DATA                                              syscall.Errno = 15005\n\tERROR_EVT_CHANNEL_NOT_FOUND                                               syscall.Errno = 15007\n\tERROR_EVT_MALFORMED_XML_TEXT                                              syscall.Errno = 15008\n\tERROR_EVT_SUBSCRIPTION_TO_DIRECT_CHANNEL                                  syscall.Errno = 15009\n\tERROR_EVT_CONFIGURATION_ERROR                                             syscall.Errno = 15010\n\tERROR_EVT_QUERY_RESULT_STALE                                              syscall.Errno = 15011\n\tERROR_EVT_QUERY_RESULT_INVALID_POSITION                                   syscall.Errno = 15012\n\tERROR_EVT_NON_VALIDATING_MSXML                                            syscall.Errno = 15013\n\tERROR_EVT_FILTER_ALREADYSCOPED                                            syscall.Errno = 15014\n\tERROR_EVT_FILTER_NOTELTSET                                                syscall.Errno = 15015\n\tERROR_EVT_FILTER_INVARG                                                   syscall.Errno = 15016\n\tERROR_EVT_FILTER_INVTEST                                                  syscall.Errno = 15017\n\tERROR_EVT_FILTER_INVTYPE                                                  syscall.Errno = 15018\n\tERROR_EVT_FILTER_PARSEERR                                                 syscall.Errno = 15019\n\tERROR_EVT_FILTER_UNSUPPORTEDOP                                            syscall.Errno = 15020\n\tERROR_EVT_FILTER_UNEXPECTEDTOKEN                                          syscall.Errno = 15021\n\tERROR_EVT_INVALID_OPERATION_OVER_ENABLED_DIRECT_CHANNEL                   syscall.Errno = 15022\n\tERROR_EVT_INVALID_CHANNEL_PROPERTY_VALUE                                  syscall.Errno = 15023\n\tERROR_EVT_INVALID_PUBLISHER_PROPERTY_VALUE                                syscall.Errno = 15024\n\tERROR_EVT_CHANNEL_CANNOT_ACTIVATE                                         syscall.Errno = 15025\n\tERROR_EVT_FILTER_TOO_COMPLEX                                              syscall.Errno = 15026\n\tERROR_EVT_MESSAGE_NOT_FOUND                                               syscall.Errno = 15027\n\tERROR_EVT_MESSAGE_ID_NOT_FOUND                                            syscall.Errno = 15028\n\tERROR_EVT_UNRESOLVED_VALUE_INSERT                                         syscall.Errno = 15029\n\tERROR_EVT_UNRESOLVED_PARAMETER_INSERT                                     syscall.Errno = 15030\n\tERROR_EVT_MAX_INSERTS_REACHED                                             syscall.Errno = 15031\n\tERROR_EVT_EVENT_DEFINITION_NOT_FOUND                                      syscall.Errno = 15032\n\tERROR_EVT_MESSAGE_LOCALE_NOT_FOUND                                        syscall.Errno = 15033\n\tERROR_EVT_VERSION_TOO_OLD                                                 syscall.Errno = 15034\n\tERROR_EVT_VERSION_TOO_NEW                                                 syscall.Errno = 15035\n\tERROR_EVT_CANNOT_OPEN_CHANNEL_OF_QUERY                                    syscall.Errno = 15036\n\tERROR_EVT_PUBLISHER_DISABLED                                              syscall.Errno = 15037\n\tERROR_EVT_FILTER_OUT_OF_RANGE                                             syscall.Errno = 15038\n\tERROR_EC_SUBSCRIPTION_CANNOT_ACTIVATE                                     syscall.Errno = 15080\n\tERROR_EC_LOG_DISABLED                                                     syscall.Errno = 15081\n\tERROR_EC_CIRCULAR_FORWARDING                                              syscall.Errno = 15082\n\tERROR_EC_CREDSTORE_FULL                                                   syscall.Errno = 15083\n\tERROR_EC_CRED_NOT_FOUND                                                   syscall.Errno = 15084\n\tERROR_EC_NO_ACTIVE_CHANNEL                                                syscall.Errno = 15085\n\tERROR_MUI_FILE_NOT_FOUND                                                  syscall.Errno = 15100\n\tERROR_MUI_INVALID_FILE                                                    syscall.Errno = 15101\n\tERROR_MUI_INVALID_RC_CONFIG                                               syscall.Errno = 15102\n\tERROR_MUI_INVALID_LOCALE_NAME                                             syscall.Errno = 15103\n\tERROR_MUI_INVALID_ULTIMATEFALLBACK_NAME                                   syscall.Errno = 15104\n\tERROR_MUI_FILE_NOT_LOADED                                                 syscall.Errno = 15105\n\tERROR_RESOURCE_ENUM_USER_STOP                                             syscall.Errno = 15106\n\tERROR_MUI_INTLSETTINGS_UILANG_NOT_INSTALLED                               syscall.Errno = 15107\n\tERROR_MUI_INTLSETTINGS_INVALID_LOCALE_NAME                                syscall.Errno = 15108\n\tERROR_MRM_RUNTIME_NO_DEFAULT_OR_NEUTRAL_RESOURCE                          syscall.Errno = 15110\n\tERROR_MRM_INVALID_PRICONFIG                                               syscall.Errno = 15111\n\tERROR_MRM_INVALID_FILE_TYPE                                               syscall.Errno = 15112\n\tERROR_MRM_UNKNOWN_QUALIFIER                                               syscall.Errno = 15113\n\tERROR_MRM_INVALID_QUALIFIER_VALUE                                         syscall.Errno = 15114\n\tERROR_MRM_NO_CANDIDATE                                                    syscall.Errno = 15115\n\tERROR_MRM_NO_MATCH_OR_DEFAULT_CANDIDATE                                   syscall.Errno = 15116\n\tERROR_MRM_RESOURCE_TYPE_MISMATCH                                          syscall.Errno = 15117\n\tERROR_MRM_DUPLICATE_MAP_NAME                                              syscall.Errno = 15118\n\tERROR_MRM_DUPLICATE_ENTRY                                                 syscall.Errno = 15119\n\tERROR_MRM_INVALID_RESOURCE_IDENTIFIER                                     syscall.Errno = 15120\n\tERROR_MRM_FILEPATH_TOO_LONG                                               syscall.Errno = 15121\n\tERROR_MRM_UNSUPPORTED_DIRECTORY_TYPE                                      syscall.Errno = 15122\n\tERROR_MRM_INVALID_PRI_FILE                                                syscall.Errno = 15126\n\tERROR_MRM_NAMED_RESOURCE_NOT_FOUND                                        syscall.Errno = 15127\n\tERROR_MRM_MAP_NOT_FOUND                                                   syscall.Errno = 15135\n\tERROR_MRM_UNSUPPORTED_PROFILE_TYPE                                        syscall.Errno = 15136\n\tERROR_MRM_INVALID_QUALIFIER_OPERATOR                                      syscall.Errno = 15137\n\tERROR_MRM_INDETERMINATE_QUALIFIER_VALUE                                   syscall.Errno = 15138\n\tERROR_MRM_AUTOMERGE_ENABLED                                               syscall.Errno = 15139\n\tERROR_MRM_TOO_MANY_RESOURCES                                              syscall.Errno = 15140\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE                                 syscall.Errno = 15141\n\tERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE                  syscall.Errno = 15142\n\tERROR_MRM_NO_CURRENT_VIEW_ON_THREAD                                       syscall.Errno = 15143\n\tERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST                            syscall.Errno = 15144\n\tERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT                         syscall.Errno = 15145\n\tERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE                              syscall.Errno = 15146\n\tERROR_MRM_GENERATION_COUNT_MISMATCH                                       syscall.Errno = 15147\n\tERROR_PRI_MERGE_VERSION_MISMATCH                                          syscall.Errno = 15148\n\tERROR_PRI_MERGE_MISSING_SCHEMA                                            syscall.Errno = 15149\n\tERROR_PRI_MERGE_LOAD_FILE_FAILED                                          syscall.Errno = 15150\n\tERROR_PRI_MERGE_ADD_FILE_FAILED                                           syscall.Errno = 15151\n\tERROR_PRI_MERGE_WRITE_FILE_FAILED                                         syscall.Errno = 15152\n\tERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED                     syscall.Errno = 15153\n\tERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED                        syscall.Errno = 15154\n\tERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED                               syscall.Errno = 15155\n\tERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED                                     syscall.Errno = 15156\n\tERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED                                 syscall.Errno = 15157\n\tERROR_PRI_MERGE_INVALID_FILE_NAME                                         syscall.Errno = 15158\n\tERROR_MRM_PACKAGE_NOT_FOUND                                               syscall.Errno = 15159\n\tERROR_MRM_MISSING_DEFAULT_LANGUAGE                                        syscall.Errno = 15160\n\tERROR_MCA_INVALID_CAPABILITIES_STRING                                     syscall.Errno = 15200\n\tERROR_MCA_INVALID_VCP_VERSION                                             syscall.Errno = 15201\n\tERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                             syscall.Errno = 15202\n\tERROR_MCA_MCCS_VERSION_MISMATCH                                           syscall.Errno = 15203\n\tERROR_MCA_UNSUPPORTED_MCCS_VERSION                                        syscall.Errno = 15204\n\tERROR_MCA_INTERNAL_ERROR                                                  syscall.Errno = 15205\n\tERROR_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                                syscall.Errno = 15206\n\tERROR_MCA_UNSUPPORTED_COLOR_TEMPERATURE                                   syscall.Errno = 15207\n\tERROR_AMBIGUOUS_SYSTEM_DEVICE                                             syscall.Errno = 15250\n\tERROR_SYSTEM_DEVICE_NOT_FOUND                                             syscall.Errno = 15299\n\tERROR_HASH_NOT_SUPPORTED                                                  syscall.Errno = 15300\n\tERROR_HASH_NOT_PRESENT                                                    syscall.Errno = 15301\n\tERROR_SECONDARY_IC_PROVIDER_NOT_REGISTERED                                syscall.Errno = 15321\n\tERROR_GPIO_CLIENT_INFORMATION_INVALID                                     syscall.Errno = 15322\n\tERROR_GPIO_VERSION_NOT_SUPPORTED                                          syscall.Errno = 15323\n\tERROR_GPIO_INVALID_REGISTRATION_PACKET                                    syscall.Errno = 15324\n\tERROR_GPIO_OPERATION_DENIED                                               syscall.Errno = 15325\n\tERROR_GPIO_INCOMPATIBLE_CONNECT_MODE                                      syscall.Errno = 15326\n\tERROR_GPIO_INTERRUPT_ALREADY_UNMASKED                                     syscall.Errno = 15327\n\tERROR_CANNOT_SWITCH_RUNLEVEL                                              syscall.Errno = 15400\n\tERROR_INVALID_RUNLEVEL_SETTING                                            syscall.Errno = 15401\n\tERROR_RUNLEVEL_SWITCH_TIMEOUT                                             syscall.Errno = 15402\n\tERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                       syscall.Errno = 15403\n\tERROR_RUNLEVEL_SWITCH_IN_PROGRESS                                         syscall.Errno = 15404\n\tERROR_SERVICES_FAILED_AUTOSTART                                           syscall.Errno = 15405\n\tERROR_COM_TASK_STOP_PENDING                                               syscall.Errno = 15501\n\tERROR_INSTALL_OPEN_PACKAGE_FAILED                                         syscall.Errno = 15600\n\tERROR_INSTALL_PACKAGE_NOT_FOUND                                           syscall.Errno = 15601\n\tERROR_INSTALL_INVALID_PACKAGE                                             syscall.Errno = 15602\n\tERROR_INSTALL_RESOLVE_DEPENDENCY_FAILED                                   syscall.Errno = 15603\n\tERROR_INSTALL_OUT_OF_DISK_SPACE                                           syscall.Errno = 15604\n\tERROR_INSTALL_NETWORK_FAILURE                                             syscall.Errno = 15605\n\tERROR_INSTALL_REGISTRATION_FAILURE                                        syscall.Errno = 15606\n\tERROR_INSTALL_DEREGISTRATION_FAILURE                                      syscall.Errno = 15607\n\tERROR_INSTALL_CANCEL                                                      syscall.Errno = 15608\n\tERROR_INSTALL_FAILED                                                      syscall.Errno = 15609\n\tERROR_REMOVE_FAILED                                                       syscall.Errno = 15610\n\tERROR_PACKAGE_ALREADY_EXISTS                                              syscall.Errno = 15611\n\tERROR_NEEDS_REMEDIATION                                                   syscall.Errno = 15612\n\tERROR_INSTALL_PREREQUISITE_FAILED                                         syscall.Errno = 15613\n\tERROR_PACKAGE_REPOSITORY_CORRUPTED                                        syscall.Errno = 15614\n\tERROR_INSTALL_POLICY_FAILURE                                              syscall.Errno = 15615\n\tERROR_PACKAGE_UPDATING                                                    syscall.Errno = 15616\n\tERROR_DEPLOYMENT_BLOCKED_BY_POLICY                                        syscall.Errno = 15617\n\tERROR_PACKAGES_IN_USE                                                     syscall.Errno = 15618\n\tERROR_RECOVERY_FILE_CORRUPT                                               syscall.Errno = 15619\n\tERROR_INVALID_STAGED_SIGNATURE                                            syscall.Errno = 15620\n\tERROR_DELETING_EXISTING_APPLICATIONDATA_STORE_FAILED                      syscall.Errno = 15621\n\tERROR_INSTALL_PACKAGE_DOWNGRADE                                           syscall.Errno = 15622\n\tERROR_SYSTEM_NEEDS_REMEDIATION                                            syscall.Errno = 15623\n\tERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN                                     syscall.Errno = 15624\n\tERROR_RESILIENCY_FILE_CORRUPT                                             syscall.Errno = 15625\n\tERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING                                syscall.Errno = 15626\n\tERROR_PACKAGE_MOVE_FAILED                                                 syscall.Errno = 15627\n\tERROR_INSTALL_VOLUME_NOT_EMPTY                                            syscall.Errno = 15628\n\tERROR_INSTALL_VOLUME_OFFLINE                                              syscall.Errno = 15629\n\tERROR_INSTALL_VOLUME_CORRUPT                                              syscall.Errno = 15630\n\tERROR_NEEDS_REGISTRATION                                                  syscall.Errno = 15631\n\tERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE                                syscall.Errno = 15632\n\tERROR_DEV_SIDELOAD_LIMIT_EXCEEDED                                         syscall.Errno = 15633\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE                      syscall.Errno = 15634\n\tERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM                                 syscall.Errno = 15635\n\tERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING                                   syscall.Errno = 15636\n\tERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE                   syscall.Errno = 15637\n\tERROR_PACKAGE_STAGING_ONHOLD                                              syscall.Errno = 15638\n\tERROR_INSTALL_INVALID_RELATED_SET_UPDATE                                  syscall.Errno = 15639\n\tERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY syscall.Errno = 15640\n\tERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF                                  syscall.Errno = 15641\n\tERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED        syscall.Errno = 15642\n\tERROR_PACKAGES_REPUTATION_CHECK_FAILED                                    syscall.Errno = 15643\n\tERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT                                  syscall.Errno = 15644\n\tERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED                                     syscall.Errno = 15645\n\tERROR_APPINSTALLER_ACTIVATION_BLOCKED                                     syscall.Errno = 15646\n\tERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED                        syscall.Errno = 15647\n\tERROR_APPX_RAW_DATA_WRITE_FAILED                                          syscall.Errno = 15648\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE                         syscall.Errno = 15649\n\tERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE                         syscall.Errno = 15650\n\tERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY                                syscall.Errno = 15651\n\tERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY             syscall.Errno = 15652\n\tERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER                         syscall.Errno = 15653\n\tERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED                     syscall.Errno = 15654\n\tERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE                              syscall.Errno = 15655\n\tERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES                          syscall.Errno = 15656\n\tAPPMODEL_ERROR_NO_PACKAGE                                                 syscall.Errno = 15700\n\tAPPMODEL_ERROR_PACKAGE_RUNTIME_CORRUPT                                    syscall.Errno = 15701\n\tAPPMODEL_ERROR_PACKAGE_IDENTITY_CORRUPT                                   syscall.Errno = 15702\n\tAPPMODEL_ERROR_NO_APPLICATION                                             syscall.Errno = 15703\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_READ_FAILED                               syscall.Errno = 15704\n\tAPPMODEL_ERROR_DYNAMIC_PROPERTY_INVALID                                   syscall.Errno = 15705\n\tAPPMODEL_ERROR_PACKAGE_NOT_AVAILABLE                                      syscall.Errno = 15706\n\tAPPMODEL_ERROR_NO_MUTABLE_DIRECTORY                                       syscall.Errno = 15707\n\tERROR_STATE_LOAD_STORE_FAILED                                             syscall.Errno = 15800\n\tERROR_STATE_GET_VERSION_FAILED                                            syscall.Errno = 15801\n\tERROR_STATE_SET_VERSION_FAILED                                            syscall.Errno = 15802\n\tERROR_STATE_STRUCTURED_RESET_FAILED                                       syscall.Errno = 15803\n\tERROR_STATE_OPEN_CONTAINER_FAILED                                         syscall.Errno = 15804\n\tERROR_STATE_CREATE_CONTAINER_FAILED                                       syscall.Errno = 15805\n\tERROR_STATE_DELETE_CONTAINER_FAILED                                       syscall.Errno = 15806\n\tERROR_STATE_READ_SETTING_FAILED                                           syscall.Errno = 15807\n\tERROR_STATE_WRITE_SETTING_FAILED                                          syscall.Errno = 15808\n\tERROR_STATE_DELETE_SETTING_FAILED                                         syscall.Errno = 15809\n\tERROR_STATE_QUERY_SETTING_FAILED                                          syscall.Errno = 15810\n\tERROR_STATE_READ_COMPOSITE_SETTING_FAILED                                 syscall.Errno = 15811\n\tERROR_STATE_WRITE_COMPOSITE_SETTING_FAILED                                syscall.Errno = 15812\n\tERROR_STATE_ENUMERATE_CONTAINER_FAILED                                    syscall.Errno = 15813\n\tERROR_STATE_ENUMERATE_SETTINGS_FAILED                                     syscall.Errno = 15814\n\tERROR_STATE_COMPOSITE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                   syscall.Errno = 15815\n\tERROR_STATE_SETTING_VALUE_SIZE_LIMIT_EXCEEDED                             syscall.Errno = 15816\n\tERROR_STATE_SETTING_NAME_SIZE_LIMIT_EXCEEDED                              syscall.Errno = 15817\n\tERROR_STATE_CONTAINER_NAME_SIZE_LIMIT_EXCEEDED                            syscall.Errno = 15818\n\tERROR_API_UNAVAILABLE                                                     syscall.Errno = 15841\n\tSTORE_ERROR_UNLICENSED                                                    syscall.Errno = 15861\n\tSTORE_ERROR_UNLICENSED_USER                                               syscall.Errno = 15862\n\tSTORE_ERROR_PENDING_COM_TRANSACTION                                       syscall.Errno = 15863\n\tSTORE_ERROR_LICENSE_REVOKED                                               syscall.Errno = 15864\n\tSEVERITY_SUCCESS                                                          syscall.Errno = 0\n\tSEVERITY_ERROR                                                            syscall.Errno = 1\n\tFACILITY_NT_BIT                                                                         = 0x10000000\n\tE_NOT_SET                                                                               = ERROR_NOT_FOUND\n\tE_NOT_VALID_STATE                                                                       = ERROR_INVALID_STATE\n\tE_NOT_SUFFICIENT_BUFFER                                                                 = ERROR_INSUFFICIENT_BUFFER\n\tE_TIME_SENSITIVE_THREAD                                                                 = ERROR_TIME_SENSITIVE_THREAD\n\tE_NO_TASK_QUEUE                                                                         = ERROR_NO_TASK_QUEUE\n\tNOERROR                                                                   syscall.Errno = 0\n\tE_UNEXPECTED                                                              Handle        = 0x8000FFFF\n\tE_NOTIMPL                                                                 Handle        = 0x80004001\n\tE_OUTOFMEMORY                                                             Handle        = 0x8007000E\n\tE_INVALIDARG                                                              Handle        = 0x80070057\n\tE_NOINTERFACE                                                             Handle        = 0x80004002\n\tE_POINTER                                                                 Handle        = 0x80004003\n\tE_HANDLE                                                                  Handle        = 0x80070006\n\tE_ABORT                                                                   Handle        = 0x80004004\n\tE_FAIL                                                                    Handle        = 0x80004005\n\tE_ACCESSDENIED                                                            Handle        = 0x80070005\n\tE_PENDING                                                                 Handle        = 0x8000000A\n\tE_BOUNDS                                                                  Handle        = 0x8000000B\n\tE_CHANGED_STATE                                                           Handle        = 0x8000000C\n\tE_ILLEGAL_STATE_CHANGE                                                    Handle        = 0x8000000D\n\tE_ILLEGAL_METHOD_CALL                                                     Handle        = 0x8000000E\n\tRO_E_METADATA_NAME_NOT_FOUND                                              Handle        = 0x8000000F\n\tRO_E_METADATA_NAME_IS_NAMESPACE                                           Handle        = 0x80000010\n\tRO_E_METADATA_INVALID_TYPE_FORMAT                                         Handle        = 0x80000011\n\tRO_E_INVALID_METADATA_FILE                                                Handle        = 0x80000012\n\tRO_E_CLOSED                                                               Handle        = 0x80000013\n\tRO_E_EXCLUSIVE_WRITE                                                      Handle        = 0x80000014\n\tRO_E_CHANGE_NOTIFICATION_IN_PROGRESS                                      Handle        = 0x80000015\n\tRO_E_ERROR_STRING_NOT_FOUND                                               Handle        = 0x80000016\n\tE_STRING_NOT_NULL_TERMINATED                                              Handle        = 0x80000017\n\tE_ILLEGAL_DELEGATE_ASSIGNMENT                                             Handle        = 0x80000018\n\tE_ASYNC_OPERATION_NOT_STARTED                                             Handle        = 0x80000019\n\tE_APPLICATION_EXITING                                                     Handle        = 0x8000001A\n\tE_APPLICATION_VIEW_EXITING                                                Handle        = 0x8000001B\n\tRO_E_MUST_BE_AGILE                                                        Handle        = 0x8000001C\n\tRO_E_UNSUPPORTED_FROM_MTA                                                 Handle        = 0x8000001D\n\tRO_E_COMMITTED                                                            Handle        = 0x8000001E\n\tRO_E_BLOCKED_CROSS_ASTA_CALL                                              Handle        = 0x8000001F\n\tRO_E_CANNOT_ACTIVATE_FULL_TRUST_SERVER                                    Handle        = 0x80000020\n\tRO_E_CANNOT_ACTIVATE_UNIVERSAL_APPLICATION_SERVER                         Handle        = 0x80000021\n\tCO_E_INIT_TLS                                                             Handle        = 0x80004006\n\tCO_E_INIT_SHARED_ALLOCATOR                                                Handle        = 0x80004007\n\tCO_E_INIT_MEMORY_ALLOCATOR                                                Handle        = 0x80004008\n\tCO_E_INIT_CLASS_CACHE                                                     Handle        = 0x80004009\n\tCO_E_INIT_RPC_CHANNEL                                                     Handle        = 0x8000400A\n\tCO_E_INIT_TLS_SET_CHANNEL_CONTROL                                         Handle        = 0x8000400B\n\tCO_E_INIT_TLS_CHANNEL_CONTROL                                             Handle        = 0x8000400C\n\tCO_E_INIT_UNACCEPTED_USER_ALLOCATOR                                       Handle        = 0x8000400D\n\tCO_E_INIT_SCM_MUTEX_EXISTS                                                Handle        = 0x8000400E\n\tCO_E_INIT_SCM_FILE_MAPPING_EXISTS                                         Handle        = 0x8000400F\n\tCO_E_INIT_SCM_MAP_VIEW_OF_FILE                                            Handle        = 0x80004010\n\tCO_E_INIT_SCM_EXEC_FAILURE                                                Handle        = 0x80004011\n\tCO_E_INIT_ONLY_SINGLE_THREADED                                            Handle        = 0x80004012\n\tCO_E_CANT_REMOTE                                                          Handle        = 0x80004013\n\tCO_E_BAD_SERVER_NAME                                                      Handle        = 0x80004014\n\tCO_E_WRONG_SERVER_IDENTITY                                                Handle        = 0x80004015\n\tCO_E_OLE1DDE_DISABLED                                                     Handle        = 0x80004016\n\tCO_E_RUNAS_SYNTAX                                                         Handle        = 0x80004017\n\tCO_E_CREATEPROCESS_FAILURE                                                Handle        = 0x80004018\n\tCO_E_RUNAS_CREATEPROCESS_FAILURE                                          Handle        = 0x80004019\n\tCO_E_RUNAS_LOGON_FAILURE                                                  Handle        = 0x8000401A\n\tCO_E_LAUNCH_PERMSSION_DENIED                                              Handle        = 0x8000401B\n\tCO_E_START_SERVICE_FAILURE                                                Handle        = 0x8000401C\n\tCO_E_REMOTE_COMMUNICATION_FAILURE                                         Handle        = 0x8000401D\n\tCO_E_SERVER_START_TIMEOUT                                                 Handle        = 0x8000401E\n\tCO_E_CLSREG_INCONSISTENT                                                  Handle        = 0x8000401F\n\tCO_E_IIDREG_INCONSISTENT                                                  Handle        = 0x80004020\n\tCO_E_NOT_SUPPORTED                                                        Handle        = 0x80004021\n\tCO_E_RELOAD_DLL                                                           Handle        = 0x80004022\n\tCO_E_MSI_ERROR                                                            Handle        = 0x80004023\n\tCO_E_ATTEMPT_TO_CREATE_OUTSIDE_CLIENT_CONTEXT                             Handle        = 0x80004024\n\tCO_E_SERVER_PAUSED                                                        Handle        = 0x80004025\n\tCO_E_SERVER_NOT_PAUSED                                                    Handle        = 0x80004026\n\tCO_E_CLASS_DISABLED                                                       Handle        = 0x80004027\n\tCO_E_CLRNOTAVAILABLE                                                      Handle        = 0x80004028\n\tCO_E_ASYNC_WORK_REJECTED                                                  Handle        = 0x80004029\n\tCO_E_SERVER_INIT_TIMEOUT                                                  Handle        = 0x8000402A\n\tCO_E_NO_SECCTX_IN_ACTIVATE                                                Handle        = 0x8000402B\n\tCO_E_TRACKER_CONFIG                                                       Handle        = 0x80004030\n\tCO_E_THREADPOOL_CONFIG                                                    Handle        = 0x80004031\n\tCO_E_SXS_CONFIG                                                           Handle        = 0x80004032\n\tCO_E_MALFORMED_SPN                                                        Handle        = 0x80004033\n\tCO_E_UNREVOKED_REGISTRATION_ON_APARTMENT_SHUTDOWN                         Handle        = 0x80004034\n\tCO_E_PREMATURE_STUB_RUNDOWN                                               Handle        = 0x80004035\n\tS_OK                                                                      Handle        = 0\n\tS_FALSE                                                                   Handle        = 1\n\tOLE_E_FIRST                                                               Handle        = 0x80040000\n\tOLE_E_LAST                                                                Handle        = 0x800400FF\n\tOLE_S_FIRST                                                               Handle        = 0x00040000\n\tOLE_S_LAST                                                                Handle        = 0x000400FF\n\tOLE_E_OLEVERB                                                             Handle        = 0x80040000\n\tOLE_E_ADVF                                                                Handle        = 0x80040001\n\tOLE_E_ENUM_NOMORE                                                         Handle        = 0x80040002\n\tOLE_E_ADVISENOTSUPPORTED                                                  Handle        = 0x80040003\n\tOLE_E_NOCONNECTION                                                        Handle        = 0x80040004\n\tOLE_E_NOTRUNNING                                                          Handle        = 0x80040005\n\tOLE_E_NOCACHE                                                             Handle        = 0x80040006\n\tOLE_E_BLANK                                                               Handle        = 0x80040007\n\tOLE_E_CLASSDIFF                                                           Handle        = 0x80040008\n\tOLE_E_CANT_GETMONIKER                                                     Handle        = 0x80040009\n\tOLE_E_CANT_BINDTOSOURCE                                                   Handle        = 0x8004000A\n\tOLE_E_STATIC                                                              Handle        = 0x8004000B\n\tOLE_E_PROMPTSAVECANCELLED                                                 Handle        = 0x8004000C\n\tOLE_E_INVALIDRECT                                                         Handle        = 0x8004000D\n\tOLE_E_WRONGCOMPOBJ                                                        Handle        = 0x8004000E\n\tOLE_E_INVALIDHWND                                                         Handle        = 0x8004000F\n\tOLE_E_NOT_INPLACEACTIVE                                                   Handle        = 0x80040010\n\tOLE_E_CANTCONVERT                                                         Handle        = 0x80040011\n\tOLE_E_NOSTORAGE                                                           Handle        = 0x80040012\n\tDV_E_FORMATETC                                                            Handle        = 0x80040064\n\tDV_E_DVTARGETDEVICE                                                       Handle        = 0x80040065\n\tDV_E_STGMEDIUM                                                            Handle        = 0x80040066\n\tDV_E_STATDATA                                                             Handle        = 0x80040067\n\tDV_E_LINDEX                                                               Handle        = 0x80040068\n\tDV_E_TYMED                                                                Handle        = 0x80040069\n\tDV_E_CLIPFORMAT                                                           Handle        = 0x8004006A\n\tDV_E_DVASPECT                                                             Handle        = 0x8004006B\n\tDV_E_DVTARGETDEVICE_SIZE                                                  Handle        = 0x8004006C\n\tDV_E_NOIVIEWOBJECT                                                        Handle        = 0x8004006D\n\tDRAGDROP_E_FIRST                                                          syscall.Errno = 0x80040100\n\tDRAGDROP_E_LAST                                                           syscall.Errno = 0x8004010F\n\tDRAGDROP_S_FIRST                                                          syscall.Errno = 0x00040100\n\tDRAGDROP_S_LAST                                                           syscall.Errno = 0x0004010F\n\tDRAGDROP_E_NOTREGISTERED                                                  Handle        = 0x80040100\n\tDRAGDROP_E_ALREADYREGISTERED                                              Handle        = 0x80040101\n\tDRAGDROP_E_INVALIDHWND                                                    Handle        = 0x80040102\n\tDRAGDROP_E_CONCURRENT_DRAG_ATTEMPTED                                      Handle        = 0x80040103\n\tCLASSFACTORY_E_FIRST                                                      syscall.Errno = 0x80040110\n\tCLASSFACTORY_E_LAST                                                       syscall.Errno = 0x8004011F\n\tCLASSFACTORY_S_FIRST                                                      syscall.Errno = 0x00040110\n\tCLASSFACTORY_S_LAST                                                       syscall.Errno = 0x0004011F\n\tCLASS_E_NOAGGREGATION                                                     Handle        = 0x80040110\n\tCLASS_E_CLASSNOTAVAILABLE                                                 Handle        = 0x80040111\n\tCLASS_E_NOTLICENSED                                                       Handle        = 0x80040112\n\tMARSHAL_E_FIRST                                                           syscall.Errno = 0x80040120\n\tMARSHAL_E_LAST                                                            syscall.Errno = 0x8004012F\n\tMARSHAL_S_FIRST                                                           syscall.Errno = 0x00040120\n\tMARSHAL_S_LAST                                                            syscall.Errno = 0x0004012F\n\tDATA_E_FIRST                                                              syscall.Errno = 0x80040130\n\tDATA_E_LAST                                                               syscall.Errno = 0x8004013F\n\tDATA_S_FIRST                                                              syscall.Errno = 0x00040130\n\tDATA_S_LAST                                                               syscall.Errno = 0x0004013F\n\tVIEW_E_FIRST                                                              syscall.Errno = 0x80040140\n\tVIEW_E_LAST                                                               syscall.Errno = 0x8004014F\n\tVIEW_S_FIRST                                                              syscall.Errno = 0x00040140\n\tVIEW_S_LAST                                                               syscall.Errno = 0x0004014F\n\tVIEW_E_DRAW                                                               Handle        = 0x80040140\n\tREGDB_E_FIRST                                                             syscall.Errno = 0x80040150\n\tREGDB_E_LAST                                                              syscall.Errno = 0x8004015F\n\tREGDB_S_FIRST                                                             syscall.Errno = 0x00040150\n\tREGDB_S_LAST                                                              syscall.Errno = 0x0004015F\n\tREGDB_E_READREGDB                                                         Handle        = 0x80040150\n\tREGDB_E_WRITEREGDB                                                        Handle        = 0x80040151\n\tREGDB_E_KEYMISSING                                                        Handle        = 0x80040152\n\tREGDB_E_INVALIDVALUE                                                      Handle        = 0x80040153\n\tREGDB_E_CLASSNOTREG                                                       Handle        = 0x80040154\n\tREGDB_E_IIDNOTREG                                                         Handle        = 0x80040155\n\tREGDB_E_BADTHREADINGMODEL                                                 Handle        = 0x80040156\n\tREGDB_E_PACKAGEPOLICYVIOLATION                                            Handle        = 0x80040157\n\tCAT_E_FIRST                                                               syscall.Errno = 0x80040160\n\tCAT_E_LAST                                                                syscall.Errno = 0x80040161\n\tCAT_E_CATIDNOEXIST                                                        Handle        = 0x80040160\n\tCAT_E_NODESCRIPTION                                                       Handle        = 0x80040161\n\tCS_E_FIRST                                                                syscall.Errno = 0x80040164\n\tCS_E_LAST                                                                 syscall.Errno = 0x8004016F\n\tCS_E_PACKAGE_NOTFOUND                                                     Handle        = 0x80040164\n\tCS_E_NOT_DELETABLE                                                        Handle        = 0x80040165\n\tCS_E_CLASS_NOTFOUND                                                       Handle        = 0x80040166\n\tCS_E_INVALID_VERSION                                                      Handle        = 0x80040167\n\tCS_E_NO_CLASSSTORE                                                        Handle        = 0x80040168\n\tCS_E_OBJECT_NOTFOUND                                                      Handle        = 0x80040169\n\tCS_E_OBJECT_ALREADY_EXISTS                                                Handle        = 0x8004016A\n\tCS_E_INVALID_PATH                                                         Handle        = 0x8004016B\n\tCS_E_NETWORK_ERROR                                                        Handle        = 0x8004016C\n\tCS_E_ADMIN_LIMIT_EXCEEDED                                                 Handle        = 0x8004016D\n\tCS_E_SCHEMA_MISMATCH                                                      Handle        = 0x8004016E\n\tCS_E_INTERNAL_ERROR                                                       Handle        = 0x8004016F\n\tCACHE_E_FIRST                                                             syscall.Errno = 0x80040170\n\tCACHE_E_LAST                                                              syscall.Errno = 0x8004017F\n\tCACHE_S_FIRST                                                             syscall.Errno = 0x00040170\n\tCACHE_S_LAST                                                              syscall.Errno = 0x0004017F\n\tCACHE_E_NOCACHE_UPDATED                                                   Handle        = 0x80040170\n\tOLEOBJ_E_FIRST                                                            syscall.Errno = 0x80040180\n\tOLEOBJ_E_LAST                                                             syscall.Errno = 0x8004018F\n\tOLEOBJ_S_FIRST                                                            syscall.Errno = 0x00040180\n\tOLEOBJ_S_LAST                                                             syscall.Errno = 0x0004018F\n\tOLEOBJ_E_NOVERBS                                                          Handle        = 0x80040180\n\tOLEOBJ_E_INVALIDVERB                                                      Handle        = 0x80040181\n\tCLIENTSITE_E_FIRST                                                        syscall.Errno = 0x80040190\n\tCLIENTSITE_E_LAST                                                         syscall.Errno = 0x8004019F\n\tCLIENTSITE_S_FIRST                                                        syscall.Errno = 0x00040190\n\tCLIENTSITE_S_LAST                                                         syscall.Errno = 0x0004019F\n\tINPLACE_E_NOTUNDOABLE                                                     Handle        = 0x800401A0\n\tINPLACE_E_NOTOOLSPACE                                                     Handle        = 0x800401A1\n\tINPLACE_E_FIRST                                                           syscall.Errno = 0x800401A0\n\tINPLACE_E_LAST                                                            syscall.Errno = 0x800401AF\n\tINPLACE_S_FIRST                                                           syscall.Errno = 0x000401A0\n\tINPLACE_S_LAST                                                            syscall.Errno = 0x000401AF\n\tENUM_E_FIRST                                                              syscall.Errno = 0x800401B0\n\tENUM_E_LAST                                                               syscall.Errno = 0x800401BF\n\tENUM_S_FIRST                                                              syscall.Errno = 0x000401B0\n\tENUM_S_LAST                                                               syscall.Errno = 0x000401BF\n\tCONVERT10_E_FIRST                                                         syscall.Errno = 0x800401C0\n\tCONVERT10_E_LAST                                                          syscall.Errno = 0x800401CF\n\tCONVERT10_S_FIRST                                                         syscall.Errno = 0x000401C0\n\tCONVERT10_S_LAST                                                          syscall.Errno = 0x000401CF\n\tCONVERT10_E_OLESTREAM_GET                                                 Handle        = 0x800401C0\n\tCONVERT10_E_OLESTREAM_PUT                                                 Handle        = 0x800401C1\n\tCONVERT10_E_OLESTREAM_FMT                                                 Handle        = 0x800401C2\n\tCONVERT10_E_OLESTREAM_BITMAP_TO_DIB                                       Handle        = 0x800401C3\n\tCONVERT10_E_STG_FMT                                                       Handle        = 0x800401C4\n\tCONVERT10_E_STG_NO_STD_STREAM                                             Handle        = 0x800401C5\n\tCONVERT10_E_STG_DIB_TO_BITMAP                                             Handle        = 0x800401C6\n\tCLIPBRD_E_FIRST                                                           syscall.Errno = 0x800401D0\n\tCLIPBRD_E_LAST                                                            syscall.Errno = 0x800401DF\n\tCLIPBRD_S_FIRST                                                           syscall.Errno = 0x000401D0\n\tCLIPBRD_S_LAST                                                            syscall.Errno = 0x000401DF\n\tCLIPBRD_E_CANT_OPEN                                                       Handle        = 0x800401D0\n\tCLIPBRD_E_CANT_EMPTY                                                      Handle        = 0x800401D1\n\tCLIPBRD_E_CANT_SET                                                        Handle        = 0x800401D2\n\tCLIPBRD_E_BAD_DATA                                                        Handle        = 0x800401D3\n\tCLIPBRD_E_CANT_CLOSE                                                      Handle        = 0x800401D4\n\tMK_E_FIRST                                                                syscall.Errno = 0x800401E0\n\tMK_E_LAST                                                                 syscall.Errno = 0x800401EF\n\tMK_S_FIRST                                                                syscall.Errno = 0x000401E0\n\tMK_S_LAST                                                                 syscall.Errno = 0x000401EF\n\tMK_E_CONNECTMANUALLY                                                      Handle        = 0x800401E0\n\tMK_E_EXCEEDEDDEADLINE                                                     Handle        = 0x800401E1\n\tMK_E_NEEDGENERIC                                                          Handle        = 0x800401E2\n\tMK_E_UNAVAILABLE                                                          Handle        = 0x800401E3\n\tMK_E_SYNTAX                                                               Handle        = 0x800401E4\n\tMK_E_NOOBJECT                                                             Handle        = 0x800401E5\n\tMK_E_INVALIDEXTENSION                                                     Handle        = 0x800401E6\n\tMK_E_INTERMEDIATEINTERFACENOTSUPPORTED                                    Handle        = 0x800401E7\n\tMK_E_NOTBINDABLE                                                          Handle        = 0x800401E8\n\tMK_E_NOTBOUND                                                             Handle        = 0x800401E9\n\tMK_E_CANTOPENFILE                                                         Handle        = 0x800401EA\n\tMK_E_MUSTBOTHERUSER                                                       Handle        = 0x800401EB\n\tMK_E_NOINVERSE                                                            Handle        = 0x800401EC\n\tMK_E_NOSTORAGE                                                            Handle        = 0x800401ED\n\tMK_E_NOPREFIX                                                             Handle        = 0x800401EE\n\tMK_E_ENUMERATION_FAILED                                                   Handle        = 0x800401EF\n\tCO_E_FIRST                                                                syscall.Errno = 0x800401F0\n\tCO_E_LAST                                                                 syscall.Errno = 0x800401FF\n\tCO_S_FIRST                                                                syscall.Errno = 0x000401F0\n\tCO_S_LAST                                                                 syscall.Errno = 0x000401FF\n\tCO_E_NOTINITIALIZED                                                       Handle        = 0x800401F0\n\tCO_E_ALREADYINITIALIZED                                                   Handle        = 0x800401F1\n\tCO_E_CANTDETERMINECLASS                                                   Handle        = 0x800401F2\n\tCO_E_CLASSSTRING                                                          Handle        = 0x800401F3\n\tCO_E_IIDSTRING                                                            Handle        = 0x800401F4\n\tCO_E_APPNOTFOUND                                                          Handle        = 0x800401F5\n\tCO_E_APPSINGLEUSE                                                         Handle        = 0x800401F6\n\tCO_E_ERRORINAPP                                                           Handle        = 0x800401F7\n\tCO_E_DLLNOTFOUND                                                          Handle        = 0x800401F8\n\tCO_E_ERRORINDLL                                                           Handle        = 0x800401F9\n\tCO_E_WRONGOSFORAPP                                                        Handle        = 0x800401FA\n\tCO_E_OBJNOTREG                                                            Handle        = 0x800401FB\n\tCO_E_OBJISREG                                                             Handle        = 0x800401FC\n\tCO_E_OBJNOTCONNECTED                                                      Handle        = 0x800401FD\n\tCO_E_APPDIDNTREG                                                          Handle        = 0x800401FE\n\tCO_E_RELEASED                                                             Handle        = 0x800401FF\n\tEVENT_E_FIRST                                                             syscall.Errno = 0x80040200\n\tEVENT_E_LAST                                                              syscall.Errno = 0x8004021F\n\tEVENT_S_FIRST                                                             syscall.Errno = 0x00040200\n\tEVENT_S_LAST                                                              syscall.Errno = 0x0004021F\n\tEVENT_S_SOME_SUBSCRIBERS_FAILED                                           Handle        = 0x00040200\n\tEVENT_E_ALL_SUBSCRIBERS_FAILED                                            Handle        = 0x80040201\n\tEVENT_S_NOSUBSCRIBERS                                                     Handle        = 0x00040202\n\tEVENT_E_QUERYSYNTAX                                                       Handle        = 0x80040203\n\tEVENT_E_QUERYFIELD                                                        Handle        = 0x80040204\n\tEVENT_E_INTERNALEXCEPTION                                                 Handle        = 0x80040205\n\tEVENT_E_INTERNALERROR                                                     Handle        = 0x80040206\n\tEVENT_E_INVALID_PER_USER_SID                                              Handle        = 0x80040207\n\tEVENT_E_USER_EXCEPTION                                                    Handle        = 0x80040208\n\tEVENT_E_TOO_MANY_METHODS                                                  Handle        = 0x80040209\n\tEVENT_E_MISSING_EVENTCLASS                                                Handle        = 0x8004020A\n\tEVENT_E_NOT_ALL_REMOVED                                                   Handle        = 0x8004020B\n\tEVENT_E_COMPLUS_NOT_INSTALLED                                             Handle        = 0x8004020C\n\tEVENT_E_CANT_MODIFY_OR_DELETE_UNCONFIGURED_OBJECT                         Handle        = 0x8004020D\n\tEVENT_E_CANT_MODIFY_OR_DELETE_CONFIGURED_OBJECT                           Handle        = 0x8004020E\n\tEVENT_E_INVALID_EVENT_CLASS_PARTITION                                     Handle        = 0x8004020F\n\tEVENT_E_PER_USER_SID_NOT_LOGGED_ON                                        Handle        = 0x80040210\n\tTPC_E_INVALID_PROPERTY                                                    Handle        = 0x80040241\n\tTPC_E_NO_DEFAULT_TABLET                                                   Handle        = 0x80040212\n\tTPC_E_UNKNOWN_PROPERTY                                                    Handle        = 0x8004021B\n\tTPC_E_INVALID_INPUT_RECT                                                  Handle        = 0x80040219\n\tTPC_E_INVALID_STROKE                                                      Handle        = 0x80040222\n\tTPC_E_INITIALIZE_FAIL                                                     Handle        = 0x80040223\n\tTPC_E_NOT_RELEVANT                                                        Handle        = 0x80040232\n\tTPC_E_INVALID_PACKET_DESCRIPTION                                          Handle        = 0x80040233\n\tTPC_E_RECOGNIZER_NOT_REGISTERED                                           Handle        = 0x80040235\n\tTPC_E_INVALID_RIGHTS                                                      Handle        = 0x80040236\n\tTPC_E_OUT_OF_ORDER_CALL                                                   Handle        = 0x80040237\n\tTPC_E_QUEUE_FULL                                                          Handle        = 0x80040238\n\tTPC_E_INVALID_CONFIGURATION                                               Handle        = 0x80040239\n\tTPC_E_INVALID_DATA_FROM_RECOGNIZER                                        Handle        = 0x8004023A\n\tTPC_S_TRUNCATED                                                           Handle        = 0x00040252\n\tTPC_S_INTERRUPTED                                                         Handle        = 0x00040253\n\tTPC_S_NO_DATA_TO_PROCESS                                                  Handle        = 0x00040254\n\tXACT_E_FIRST                                                              syscall.Errno = 0x8004D000\n\tXACT_E_LAST                                                               syscall.Errno = 0x8004D02B\n\tXACT_S_FIRST                                                              syscall.Errno = 0x0004D000\n\tXACT_S_LAST                                                               syscall.Errno = 0x0004D010\n\tXACT_E_ALREADYOTHERSINGLEPHASE                                            Handle        = 0x8004D000\n\tXACT_E_CANTRETAIN                                                         Handle        = 0x8004D001\n\tXACT_E_COMMITFAILED                                                       Handle        = 0x8004D002\n\tXACT_E_COMMITPREVENTED                                                    Handle        = 0x8004D003\n\tXACT_E_HEURISTICABORT                                                     Handle        = 0x8004D004\n\tXACT_E_HEURISTICCOMMIT                                                    Handle        = 0x8004D005\n\tXACT_E_HEURISTICDAMAGE                                                    Handle        = 0x8004D006\n\tXACT_E_HEURISTICDANGER                                                    Handle        = 0x8004D007\n\tXACT_E_ISOLATIONLEVEL                                                     Handle        = 0x8004D008\n\tXACT_E_NOASYNC                                                            Handle        = 0x8004D009\n\tXACT_E_NOENLIST                                                           Handle        = 0x8004D00A\n\tXACT_E_NOISORETAIN                                                        Handle        = 0x8004D00B\n\tXACT_E_NORESOURCE                                                         Handle        = 0x8004D00C\n\tXACT_E_NOTCURRENT                                                         Handle        = 0x8004D00D\n\tXACT_E_NOTRANSACTION                                                      Handle        = 0x8004D00E\n\tXACT_E_NOTSUPPORTED                                                       Handle        = 0x8004D00F\n\tXACT_E_UNKNOWNRMGRID                                                      Handle        = 0x8004D010\n\tXACT_E_WRONGSTATE                                                         Handle        = 0x8004D011\n\tXACT_E_WRONGUOW                                                           Handle        = 0x8004D012\n\tXACT_E_XTIONEXISTS                                                        Handle        = 0x8004D013\n\tXACT_E_NOIMPORTOBJECT                                                     Handle        = 0x8004D014\n\tXACT_E_INVALIDCOOKIE                                                      Handle        = 0x8004D015\n\tXACT_E_INDOUBT                                                            Handle        = 0x8004D016\n\tXACT_E_NOTIMEOUT                                                          Handle        = 0x8004D017\n\tXACT_E_ALREADYINPROGRESS                                                  Handle        = 0x8004D018\n\tXACT_E_ABORTED                                                            Handle        = 0x8004D019\n\tXACT_E_LOGFULL                                                            Handle        = 0x8004D01A\n\tXACT_E_TMNOTAVAILABLE                                                     Handle        = 0x8004D01B\n\tXACT_E_CONNECTION_DOWN                                                    Handle        = 0x8004D01C\n\tXACT_E_CONNECTION_DENIED                                                  Handle        = 0x8004D01D\n\tXACT_E_REENLISTTIMEOUT                                                    Handle        = 0x8004D01E\n\tXACT_E_TIP_CONNECT_FAILED                                                 Handle        = 0x8004D01F\n\tXACT_E_TIP_PROTOCOL_ERROR                                                 Handle        = 0x8004D020\n\tXACT_E_TIP_PULL_FAILED                                                    Handle        = 0x8004D021\n\tXACT_E_DEST_TMNOTAVAILABLE                                                Handle        = 0x8004D022\n\tXACT_E_TIP_DISABLED                                                       Handle        = 0x8004D023\n\tXACT_E_NETWORK_TX_DISABLED                                                Handle        = 0x8004D024\n\tXACT_E_PARTNER_NETWORK_TX_DISABLED                                        Handle        = 0x8004D025\n\tXACT_E_XA_TX_DISABLED                                                     Handle        = 0x8004D026\n\tXACT_E_UNABLE_TO_READ_DTC_CONFIG                                          Handle        = 0x8004D027\n\tXACT_E_UNABLE_TO_LOAD_DTC_PROXY                                           Handle        = 0x8004D028\n\tXACT_E_ABORTING                                                           Handle        = 0x8004D029\n\tXACT_E_PUSH_COMM_FAILURE                                                  Handle        = 0x8004D02A\n\tXACT_E_PULL_COMM_FAILURE                                                  Handle        = 0x8004D02B\n\tXACT_E_LU_TX_DISABLED                                                     Handle        = 0x8004D02C\n\tXACT_E_CLERKNOTFOUND                                                      Handle        = 0x8004D080\n\tXACT_E_CLERKEXISTS                                                        Handle        = 0x8004D081\n\tXACT_E_RECOVERYINPROGRESS                                                 Handle        = 0x8004D082\n\tXACT_E_TRANSACTIONCLOSED                                                  Handle        = 0x8004D083\n\tXACT_E_INVALIDLSN                                                         Handle        = 0x8004D084\n\tXACT_E_REPLAYREQUEST                                                      Handle        = 0x8004D085\n\tXACT_S_ASYNC                                                              Handle        = 0x0004D000\n\tXACT_S_DEFECT                                                             Handle        = 0x0004D001\n\tXACT_S_READONLY                                                           Handle        = 0x0004D002\n\tXACT_S_SOMENORETAIN                                                       Handle        = 0x0004D003\n\tXACT_S_OKINFORM                                                           Handle        = 0x0004D004\n\tXACT_S_MADECHANGESCONTENT                                                 Handle        = 0x0004D005\n\tXACT_S_MADECHANGESINFORM                                                  Handle        = 0x0004D006\n\tXACT_S_ALLNORETAIN                                                        Handle        = 0x0004D007\n\tXACT_S_ABORTING                                                           Handle        = 0x0004D008\n\tXACT_S_SINGLEPHASE                                                        Handle        = 0x0004D009\n\tXACT_S_LOCALLY_OK                                                         Handle        = 0x0004D00A\n\tXACT_S_LASTRESOURCEMANAGER                                                Handle        = 0x0004D010\n\tCONTEXT_E_FIRST                                                           syscall.Errno = 0x8004E000\n\tCONTEXT_E_LAST                                                            syscall.Errno = 0x8004E02F\n\tCONTEXT_S_FIRST                                                           syscall.Errno = 0x0004E000\n\tCONTEXT_S_LAST                                                            syscall.Errno = 0x0004E02F\n\tCONTEXT_E_ABORTED                                                         Handle        = 0x8004E002\n\tCONTEXT_E_ABORTING                                                        Handle        = 0x8004E003\n\tCONTEXT_E_NOCONTEXT                                                       Handle        = 0x8004E004\n\tCONTEXT_E_WOULD_DEADLOCK                                                  Handle        = 0x8004E005\n\tCONTEXT_E_SYNCH_TIMEOUT                                                   Handle        = 0x8004E006\n\tCONTEXT_E_OLDREF                                                          Handle        = 0x8004E007\n\tCONTEXT_E_ROLENOTFOUND                                                    Handle        = 0x8004E00C\n\tCONTEXT_E_TMNOTAVAILABLE                                                  Handle        = 0x8004E00F\n\tCO_E_ACTIVATIONFAILED                                                     Handle        = 0x8004E021\n\tCO_E_ACTIVATIONFAILED_EVENTLOGGED                                         Handle        = 0x8004E022\n\tCO_E_ACTIVATIONFAILED_CATALOGERROR                                        Handle        = 0x8004E023\n\tCO_E_ACTIVATIONFAILED_TIMEOUT                                             Handle        = 0x8004E024\n\tCO_E_INITIALIZATIONFAILED                                                 Handle        = 0x8004E025\n\tCONTEXT_E_NOJIT                                                           Handle        = 0x8004E026\n\tCONTEXT_E_NOTRANSACTION                                                   Handle        = 0x8004E027\n\tCO_E_THREADINGMODEL_CHANGED                                               Handle        = 0x8004E028\n\tCO_E_NOIISINTRINSICS                                                      Handle        = 0x8004E029\n\tCO_E_NOCOOKIES                                                            Handle        = 0x8004E02A\n\tCO_E_DBERROR                                                              Handle        = 0x8004E02B\n\tCO_E_NOTPOOLED                                                            Handle        = 0x8004E02C\n\tCO_E_NOTCONSTRUCTED                                                       Handle        = 0x8004E02D\n\tCO_E_NOSYNCHRONIZATION                                                    Handle        = 0x8004E02E\n\tCO_E_ISOLEVELMISMATCH                                                     Handle        = 0x8004E02F\n\tCO_E_CALL_OUT_OF_TX_SCOPE_NOT_ALLOWED                                     Handle        = 0x8004E030\n\tCO_E_EXIT_TRANSACTION_SCOPE_NOT_CALLED                                    Handle        = 0x8004E031\n\tOLE_S_USEREG                                                              Handle        = 0x00040000\n\tOLE_S_STATIC                                                              Handle        = 0x00040001\n\tOLE_S_MAC_CLIPFORMAT                                                      Handle        = 0x00040002\n\tDRAGDROP_S_DROP                                                           Handle        = 0x00040100\n\tDRAGDROP_S_CANCEL                                                         Handle        = 0x00040101\n\tDRAGDROP_S_USEDEFAULTCURSORS                                              Handle        = 0x00040102\n\tDATA_S_SAMEFORMATETC                                                      Handle        = 0x00040130\n\tVIEW_S_ALREADY_FROZEN                                                     Handle        = 0x00040140\n\tCACHE_S_FORMATETC_NOTSUPPORTED                                            Handle        = 0x00040170\n\tCACHE_S_SAMECACHE                                                         Handle        = 0x00040171\n\tCACHE_S_SOMECACHES_NOTUPDATED                                             Handle        = 0x00040172\n\tOLEOBJ_S_INVALIDVERB                                                      Handle        = 0x00040180\n\tOLEOBJ_S_CANNOT_DOVERB_NOW                                                Handle        = 0x00040181\n\tOLEOBJ_S_INVALIDHWND                                                      Handle        = 0x00040182\n\tINPLACE_S_TRUNCATED                                                       Handle        = 0x000401A0\n\tCONVERT10_S_NO_PRESENTATION                                               Handle        = 0x000401C0\n\tMK_S_REDUCED_TO_SELF                                                      Handle        = 0x000401E2\n\tMK_S_ME                                                                   Handle        = 0x000401E4\n\tMK_S_HIM                                                                  Handle        = 0x000401E5\n\tMK_S_US                                                                   Handle        = 0x000401E6\n\tMK_S_MONIKERALREADYREGISTERED                                             Handle        = 0x000401E7\n\tSCHED_S_TASK_READY                                                        Handle        = 0x00041300\n\tSCHED_S_TASK_RUNNING                                                      Handle        = 0x00041301\n\tSCHED_S_TASK_DISABLED                                                     Handle        = 0x00041302\n\tSCHED_S_TASK_HAS_NOT_RUN                                                  Handle        = 0x00041303\n\tSCHED_S_TASK_NO_MORE_RUNS                                                 Handle        = 0x00041304\n\tSCHED_S_TASK_NOT_SCHEDULED                                                Handle        = 0x00041305\n\tSCHED_S_TASK_TERMINATED                                                   Handle        = 0x00041306\n\tSCHED_S_TASK_NO_VALID_TRIGGERS                                            Handle        = 0x00041307\n\tSCHED_S_EVENT_TRIGGER                                                     Handle        = 0x00041308\n\tSCHED_E_TRIGGER_NOT_FOUND                                                 Handle        = 0x80041309\n\tSCHED_E_TASK_NOT_READY                                                    Handle        = 0x8004130A\n\tSCHED_E_TASK_NOT_RUNNING                                                  Handle        = 0x8004130B\n\tSCHED_E_SERVICE_NOT_INSTALLED                                             Handle        = 0x8004130C\n\tSCHED_E_CANNOT_OPEN_TASK                                                  Handle        = 0x8004130D\n\tSCHED_E_INVALID_TASK                                                      Handle        = 0x8004130E\n\tSCHED_E_ACCOUNT_INFORMATION_NOT_SET                                       Handle        = 0x8004130F\n\tSCHED_E_ACCOUNT_NAME_NOT_FOUND                                            Handle        = 0x80041310\n\tSCHED_E_ACCOUNT_DBASE_CORRUPT                                             Handle        = 0x80041311\n\tSCHED_E_NO_SECURITY_SERVICES                                              Handle        = 0x80041312\n\tSCHED_E_UNKNOWN_OBJECT_VERSION                                            Handle        = 0x80041313\n\tSCHED_E_UNSUPPORTED_ACCOUNT_OPTION                                        Handle        = 0x80041314\n\tSCHED_E_SERVICE_NOT_RUNNING                                               Handle        = 0x80041315\n\tSCHED_E_UNEXPECTEDNODE                                                    Handle        = 0x80041316\n\tSCHED_E_NAMESPACE                                                         Handle        = 0x80041317\n\tSCHED_E_INVALIDVALUE                                                      Handle        = 0x80041318\n\tSCHED_E_MISSINGNODE                                                       Handle        = 0x80041319\n\tSCHED_E_MALFORMEDXML                                                      Handle        = 0x8004131A\n\tSCHED_S_SOME_TRIGGERS_FAILED                                              Handle        = 0x0004131B\n\tSCHED_S_BATCH_LOGON_PROBLEM                                               Handle        = 0x0004131C\n\tSCHED_E_TOO_MANY_NODES                                                    Handle        = 0x8004131D\n\tSCHED_E_PAST_END_BOUNDARY                                                 Handle        = 0x8004131E\n\tSCHED_E_ALREADY_RUNNING                                                   Handle        = 0x8004131F\n\tSCHED_E_USER_NOT_LOGGED_ON                                                Handle        = 0x80041320\n\tSCHED_E_INVALID_TASK_HASH                                                 Handle        = 0x80041321\n\tSCHED_E_SERVICE_NOT_AVAILABLE                                             Handle        = 0x80041322\n\tSCHED_E_SERVICE_TOO_BUSY                                                  Handle        = 0x80041323\n\tSCHED_E_TASK_ATTEMPTED                                                    Handle        = 0x80041324\n\tSCHED_S_TASK_QUEUED                                                       Handle        = 0x00041325\n\tSCHED_E_TASK_DISABLED                                                     Handle        = 0x80041326\n\tSCHED_E_TASK_NOT_V1_COMPAT                                                Handle        = 0x80041327\n\tSCHED_E_START_ON_DEMAND                                                   Handle        = 0x80041328\n\tSCHED_E_TASK_NOT_UBPM_COMPAT                                              Handle        = 0x80041329\n\tSCHED_E_DEPRECATED_FEATURE_USED                                           Handle        = 0x80041330\n\tCO_E_CLASS_CREATE_FAILED                                                  Handle        = 0x80080001\n\tCO_E_SCM_ERROR                                                            Handle        = 0x80080002\n\tCO_E_SCM_RPC_FAILURE                                                      Handle        = 0x80080003\n\tCO_E_BAD_PATH                                                             Handle        = 0x80080004\n\tCO_E_SERVER_EXEC_FAILURE                                                  Handle        = 0x80080005\n\tCO_E_OBJSRV_RPC_FAILURE                                                   Handle        = 0x80080006\n\tMK_E_NO_NORMALIZED                                                        Handle        = 0x80080007\n\tCO_E_SERVER_STOPPING                                                      Handle        = 0x80080008\n\tMEM_E_INVALID_ROOT                                                        Handle        = 0x80080009\n\tMEM_E_INVALID_LINK                                                        Handle        = 0x80080010\n\tMEM_E_INVALID_SIZE                                                        Handle        = 0x80080011\n\tCO_S_NOTALLINTERFACES                                                     Handle        = 0x00080012\n\tCO_S_MACHINENAMENOTFOUND                                                  Handle        = 0x00080013\n\tCO_E_MISSING_DISPLAYNAME                                                  Handle        = 0x80080015\n\tCO_E_RUNAS_VALUE_MUST_BE_AAA                                              Handle        = 0x80080016\n\tCO_E_ELEVATION_DISABLED                                                   Handle        = 0x80080017\n\tAPPX_E_PACKAGING_INTERNAL                                                 Handle        = 0x80080200\n\tAPPX_E_INTERLEAVING_NOT_ALLOWED                                           Handle        = 0x80080201\n\tAPPX_E_RELATIONSHIPS_NOT_ALLOWED                                          Handle        = 0x80080202\n\tAPPX_E_MISSING_REQUIRED_FILE                                              Handle        = 0x80080203\n\tAPPX_E_INVALID_MANIFEST                                                   Handle        = 0x80080204\n\tAPPX_E_INVALID_BLOCKMAP                                                   Handle        = 0x80080205\n\tAPPX_E_CORRUPT_CONTENT                                                    Handle        = 0x80080206\n\tAPPX_E_BLOCK_HASH_INVALID                                                 Handle        = 0x80080207\n\tAPPX_E_REQUESTED_RANGE_TOO_LARGE                                          Handle        = 0x80080208\n\tAPPX_E_INVALID_SIP_CLIENT_DATA                                            Handle        = 0x80080209\n\tAPPX_E_INVALID_KEY_INFO                                                   Handle        = 0x8008020A\n\tAPPX_E_INVALID_CONTENTGROUPMAP                                            Handle        = 0x8008020B\n\tAPPX_E_INVALID_APPINSTALLER                                               Handle        = 0x8008020C\n\tAPPX_E_DELTA_BASELINE_VERSION_MISMATCH                                    Handle        = 0x8008020D\n\tAPPX_E_DELTA_PACKAGE_MISSING_FILE                                         Handle        = 0x8008020E\n\tAPPX_E_INVALID_DELTA_PACKAGE                                              Handle        = 0x8008020F\n\tAPPX_E_DELTA_APPENDED_PACKAGE_NOT_ALLOWED                                 Handle        = 0x80080210\n\tAPPX_E_INVALID_PACKAGING_LAYOUT                                           Handle        = 0x80080211\n\tAPPX_E_INVALID_PACKAGESIGNCONFIG                                          Handle        = 0x80080212\n\tAPPX_E_RESOURCESPRI_NOT_ALLOWED                                           Handle        = 0x80080213\n\tAPPX_E_FILE_COMPRESSION_MISMATCH                                          Handle        = 0x80080214\n\tAPPX_E_INVALID_PAYLOAD_PACKAGE_EXTENSION                                  Handle        = 0x80080215\n\tAPPX_E_INVALID_ENCRYPTION_EXCLUSION_FILE_LIST                             Handle        = 0x80080216\n\tBT_E_SPURIOUS_ACTIVATION                                                  Handle        = 0x80080300\n\tDISP_E_UNKNOWNINTERFACE                                                   Handle        = 0x80020001\n\tDISP_E_MEMBERNOTFOUND                                                     Handle        = 0x80020003\n\tDISP_E_PARAMNOTFOUND                                                      Handle        = 0x80020004\n\tDISP_E_TYPEMISMATCH                                                       Handle        = 0x80020005\n\tDISP_E_UNKNOWNNAME                                                        Handle        = 0x80020006\n\tDISP_E_NONAMEDARGS                                                        Handle        = 0x80020007\n\tDISP_E_BADVARTYPE                                                         Handle        = 0x80020008\n\tDISP_E_EXCEPTION                                                          Handle        = 0x80020009\n\tDISP_E_OVERFLOW                                                           Handle        = 0x8002000A\n\tDISP_E_BADINDEX                                                           Handle        = 0x8002000B\n\tDISP_E_UNKNOWNLCID                                                        Handle        = 0x8002000C\n\tDISP_E_ARRAYISLOCKED                                                      Handle        = 0x8002000D\n\tDISP_E_BADPARAMCOUNT                                                      Handle        = 0x8002000E\n\tDISP_E_PARAMNOTOPTIONAL                                                   Handle        = 0x8002000F\n\tDISP_E_BADCALLEE                                                          Handle        = 0x80020010\n\tDISP_E_NOTACOLLECTION                                                     Handle        = 0x80020011\n\tDISP_E_DIVBYZERO                                                          Handle        = 0x80020012\n\tDISP_E_BUFFERTOOSMALL                                                     Handle        = 0x80020013\n\tTYPE_E_BUFFERTOOSMALL                                                     Handle        = 0x80028016\n\tTYPE_E_FIELDNOTFOUND                                                      Handle        = 0x80028017\n\tTYPE_E_INVDATAREAD                                                        Handle        = 0x80028018\n\tTYPE_E_UNSUPFORMAT                                                        Handle        = 0x80028019\n\tTYPE_E_REGISTRYACCESS                                                     Handle        = 0x8002801C\n\tTYPE_E_LIBNOTREGISTERED                                                   Handle        = 0x8002801D\n\tTYPE_E_UNDEFINEDTYPE                                                      Handle        = 0x80028027\n\tTYPE_E_QUALIFIEDNAMEDISALLOWED                                            Handle        = 0x80028028\n\tTYPE_E_INVALIDSTATE                                                       Handle        = 0x80028029\n\tTYPE_E_WRONGTYPEKIND                                                      Handle        = 0x8002802A\n\tTYPE_E_ELEMENTNOTFOUND                                                    Handle        = 0x8002802B\n\tTYPE_E_AMBIGUOUSNAME                                                      Handle        = 0x8002802C\n\tTYPE_E_NAMECONFLICT                                                       Handle        = 0x8002802D\n\tTYPE_E_UNKNOWNLCID                                                        Handle        = 0x8002802E\n\tTYPE_E_DLLFUNCTIONNOTFOUND                                                Handle        = 0x8002802F\n\tTYPE_E_BADMODULEKIND                                                      Handle        = 0x800288BD\n\tTYPE_E_SIZETOOBIG                                                         Handle        = 0x800288C5\n\tTYPE_E_DUPLICATEID                                                        Handle        = 0x800288C6\n\tTYPE_E_INVALIDID                                                          Handle        = 0x800288CF\n\tTYPE_E_TYPEMISMATCH                                                       Handle        = 0x80028CA0\n\tTYPE_E_OUTOFBOUNDS                                                        Handle        = 0x80028CA1\n\tTYPE_E_IOERROR                                                            Handle        = 0x80028CA2\n\tTYPE_E_CANTCREATETMPFILE                                                  Handle        = 0x80028CA3\n\tTYPE_E_CANTLOADLIBRARY                                                    Handle        = 0x80029C4A\n\tTYPE_E_INCONSISTENTPROPFUNCS                                              Handle        = 0x80029C83\n\tTYPE_E_CIRCULARTYPE                                                       Handle        = 0x80029C84\n\tSTG_E_INVALIDFUNCTION                                                     Handle        = 0x80030001\n\tSTG_E_FILENOTFOUND                                                        Handle        = 0x80030002\n\tSTG_E_PATHNOTFOUND                                                        Handle        = 0x80030003\n\tSTG_E_TOOMANYOPENFILES                                                    Handle        = 0x80030004\n\tSTG_E_ACCESSDENIED                                                        Handle        = 0x80030005\n\tSTG_E_INVALIDHANDLE                                                       Handle        = 0x80030006\n\tSTG_E_INSUFFICIENTMEMORY                                                  Handle        = 0x80030008\n\tSTG_E_INVALIDPOINTER                                                      Handle        = 0x80030009\n\tSTG_E_NOMOREFILES                                                         Handle        = 0x80030012\n\tSTG_E_DISKISWRITEPROTECTED                                                Handle        = 0x80030013\n\tSTG_E_SEEKERROR                                                           Handle        = 0x80030019\n\tSTG_E_WRITEFAULT                                                          Handle        = 0x8003001D\n\tSTG_E_READFAULT                                                           Handle        = 0x8003001E\n\tSTG_E_SHAREVIOLATION                                                      Handle        = 0x80030020\n\tSTG_E_LOCKVIOLATION                                                       Handle        = 0x80030021\n\tSTG_E_FILEALREADYEXISTS                                                   Handle        = 0x80030050\n\tSTG_E_INVALIDPARAMETER                                                    Handle        = 0x80030057\n\tSTG_E_MEDIUMFULL                                                          Handle        = 0x80030070\n\tSTG_E_PROPSETMISMATCHED                                                   Handle        = 0x800300F0\n\tSTG_E_ABNORMALAPIEXIT                                                     Handle        = 0x800300FA\n\tSTG_E_INVALIDHEADER                                                       Handle        = 0x800300FB\n\tSTG_E_INVALIDNAME                                                         Handle        = 0x800300FC\n\tSTG_E_UNKNOWN                                                             Handle        = 0x800300FD\n\tSTG_E_UNIMPLEMENTEDFUNCTION                                               Handle        = 0x800300FE\n\tSTG_E_INVALIDFLAG                                                         Handle        = 0x800300FF\n\tSTG_E_INUSE                                                               Handle        = 0x80030100\n\tSTG_E_NOTCURRENT                                                          Handle        = 0x80030101\n\tSTG_E_REVERTED                                                            Handle        = 0x80030102\n\tSTG_E_CANTSAVE                                                            Handle        = 0x80030103\n\tSTG_E_OLDFORMAT                                                           Handle        = 0x80030104\n\tSTG_E_OLDDLL                                                              Handle        = 0x80030105\n\tSTG_E_SHAREREQUIRED                                                       Handle        = 0x80030106\n\tSTG_E_NOTFILEBASEDSTORAGE                                                 Handle        = 0x80030107\n\tSTG_E_EXTANTMARSHALLINGS                                                  Handle        = 0x80030108\n\tSTG_E_DOCFILECORRUPT                                                      Handle        = 0x80030109\n\tSTG_E_BADBASEADDRESS                                                      Handle        = 0x80030110\n\tSTG_E_DOCFILETOOLARGE                                                     Handle        = 0x80030111\n\tSTG_E_NOTSIMPLEFORMAT                                                     Handle        = 0x80030112\n\tSTG_E_INCOMPLETE                                                          Handle        = 0x80030201\n\tSTG_E_TERMINATED                                                          Handle        = 0x80030202\n\tSTG_S_CONVERTED                                                           Handle        = 0x00030200\n\tSTG_S_BLOCK                                                               Handle        = 0x00030201\n\tSTG_S_RETRYNOW                                                            Handle        = 0x00030202\n\tSTG_S_MONITORING                                                          Handle        = 0x00030203\n\tSTG_S_MULTIPLEOPENS                                                       Handle        = 0x00030204\n\tSTG_S_CONSOLIDATIONFAILED                                                 Handle        = 0x00030205\n\tSTG_S_CANNOTCONSOLIDATE                                                   Handle        = 0x00030206\n\tSTG_S_POWER_CYCLE_REQUIRED                                                Handle        = 0x00030207\n\tSTG_E_FIRMWARE_SLOT_INVALID                                               Handle        = 0x80030208\n\tSTG_E_FIRMWARE_IMAGE_INVALID                                              Handle        = 0x80030209\n\tSTG_E_DEVICE_UNRESPONSIVE                                                 Handle        = 0x8003020A\n\tSTG_E_STATUS_COPY_PROTECTION_FAILURE                                      Handle        = 0x80030305\n\tSTG_E_CSS_AUTHENTICATION_FAILURE                                          Handle        = 0x80030306\n\tSTG_E_CSS_KEY_NOT_PRESENT                                                 Handle        = 0x80030307\n\tSTG_E_CSS_KEY_NOT_ESTABLISHED                                             Handle        = 0x80030308\n\tSTG_E_CSS_SCRAMBLED_SECTOR                                                Handle        = 0x80030309\n\tSTG_E_CSS_REGION_MISMATCH                                                 Handle        = 0x8003030A\n\tSTG_E_RESETS_EXHAUSTED                                                    Handle        = 0x8003030B\n\tRPC_E_CALL_REJECTED                                                       Handle        = 0x80010001\n\tRPC_E_CALL_CANCELED                                                       Handle        = 0x80010002\n\tRPC_E_CANTPOST_INSENDCALL                                                 Handle        = 0x80010003\n\tRPC_E_CANTCALLOUT_INASYNCCALL                                             Handle        = 0x80010004\n\tRPC_E_CANTCALLOUT_INEXTERNALCALL                                          Handle        = 0x80010005\n\tRPC_E_CONNECTION_TERMINATED                                               Handle        = 0x80010006\n\tRPC_E_SERVER_DIED                                                         Handle        = 0x80010007\n\tRPC_E_CLIENT_DIED                                                         Handle        = 0x80010008\n\tRPC_E_INVALID_DATAPACKET                                                  Handle        = 0x80010009\n\tRPC_E_CANTTRANSMIT_CALL                                                   Handle        = 0x8001000A\n\tRPC_E_CLIENT_CANTMARSHAL_DATA                                             Handle        = 0x8001000B\n\tRPC_E_CLIENT_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000C\n\tRPC_E_SERVER_CANTMARSHAL_DATA                                             Handle        = 0x8001000D\n\tRPC_E_SERVER_CANTUNMARSHAL_DATA                                           Handle        = 0x8001000E\n\tRPC_E_INVALID_DATA                                                        Handle        = 0x8001000F\n\tRPC_E_INVALID_PARAMETER                                                   Handle        = 0x80010010\n\tRPC_E_CANTCALLOUT_AGAIN                                                   Handle        = 0x80010011\n\tRPC_E_SERVER_DIED_DNE                                                     Handle        = 0x80010012\n\tRPC_E_SYS_CALL_FAILED                                                     Handle        = 0x80010100\n\tRPC_E_OUT_OF_RESOURCES                                                    Handle        = 0x80010101\n\tRPC_E_ATTEMPTED_MULTITHREAD                                               Handle        = 0x80010102\n\tRPC_E_NOT_REGISTERED                                                      Handle        = 0x80010103\n\tRPC_E_FAULT                                                               Handle        = 0x80010104\n\tRPC_E_SERVERFAULT                                                         Handle        = 0x80010105\n\tRPC_E_CHANGED_MODE                                                        Handle        = 0x80010106\n\tRPC_E_INVALIDMETHOD                                                       Handle        = 0x80010107\n\tRPC_E_DISCONNECTED                                                        Handle        = 0x80010108\n\tRPC_E_RETRY                                                               Handle        = 0x80010109\n\tRPC_E_SERVERCALL_RETRYLATER                                               Handle        = 0x8001010A\n\tRPC_E_SERVERCALL_REJECTED                                                 Handle        = 0x8001010B\n\tRPC_E_INVALID_CALLDATA                                                    Handle        = 0x8001010C\n\tRPC_E_CANTCALLOUT_ININPUTSYNCCALL                                         Handle        = 0x8001010D\n\tRPC_E_WRONG_THREAD                                                        Handle        = 0x8001010E\n\tRPC_E_THREAD_NOT_INIT                                                     Handle        = 0x8001010F\n\tRPC_E_VERSION_MISMATCH                                                    Handle        = 0x80010110\n\tRPC_E_INVALID_HEADER                                                      Handle        = 0x80010111\n\tRPC_E_INVALID_EXTENSION                                                   Handle        = 0x80010112\n\tRPC_E_INVALID_IPID                                                        Handle        = 0x80010113\n\tRPC_E_INVALID_OBJECT                                                      Handle        = 0x80010114\n\tRPC_S_CALLPENDING                                                         Handle        = 0x80010115\n\tRPC_S_WAITONTIMER                                                         Handle        = 0x80010116\n\tRPC_E_CALL_COMPLETE                                                       Handle        = 0x80010117\n\tRPC_E_UNSECURE_CALL                                                       Handle        = 0x80010118\n\tRPC_E_TOO_LATE                                                            Handle        = 0x80010119\n\tRPC_E_NO_GOOD_SECURITY_PACKAGES                                           Handle        = 0x8001011A\n\tRPC_E_ACCESS_DENIED                                                       Handle        = 0x8001011B\n\tRPC_E_REMOTE_DISABLED                                                     Handle        = 0x8001011C\n\tRPC_E_INVALID_OBJREF                                                      Handle        = 0x8001011D\n\tRPC_E_NO_CONTEXT                                                          Handle        = 0x8001011E\n\tRPC_E_TIMEOUT                                                             Handle        = 0x8001011F\n\tRPC_E_NO_SYNC                                                             Handle        = 0x80010120\n\tRPC_E_FULLSIC_REQUIRED                                                    Handle        = 0x80010121\n\tRPC_E_INVALID_STD_NAME                                                    Handle        = 0x80010122\n\tCO_E_FAILEDTOIMPERSONATE                                                  Handle        = 0x80010123\n\tCO_E_FAILEDTOGETSECCTX                                                    Handle        = 0x80010124\n\tCO_E_FAILEDTOOPENTHREADTOKEN                                              Handle        = 0x80010125\n\tCO_E_FAILEDTOGETTOKENINFO                                                 Handle        = 0x80010126\n\tCO_E_TRUSTEEDOESNTMATCHCLIENT                                             Handle        = 0x80010127\n\tCO_E_FAILEDTOQUERYCLIENTBLANKET                                           Handle        = 0x80010128\n\tCO_E_FAILEDTOSETDACL                                                      Handle        = 0x80010129\n\tCO_E_ACCESSCHECKFAILED                                                    Handle        = 0x8001012A\n\tCO_E_NETACCESSAPIFAILED                                                   Handle        = 0x8001012B\n\tCO_E_WRONGTRUSTEENAMESYNTAX                                               Handle        = 0x8001012C\n\tCO_E_INVALIDSID                                                           Handle        = 0x8001012D\n\tCO_E_CONVERSIONFAILED                                                     Handle        = 0x8001012E\n\tCO_E_NOMATCHINGSIDFOUND                                                   Handle        = 0x8001012F\n\tCO_E_LOOKUPACCSIDFAILED                                                   Handle        = 0x80010130\n\tCO_E_NOMATCHINGNAMEFOUND                                                  Handle        = 0x80010131\n\tCO_E_LOOKUPACCNAMEFAILED                                                  Handle        = 0x80010132\n\tCO_E_SETSERLHNDLFAILED                                                    Handle        = 0x80010133\n\tCO_E_FAILEDTOGETWINDIR                                                    Handle        = 0x80010134\n\tCO_E_PATHTOOLONG                                                          Handle        = 0x80010135\n\tCO_E_FAILEDTOGENUUID                                                      Handle        = 0x80010136\n\tCO_E_FAILEDTOCREATEFILE                                                   Handle        = 0x80010137\n\tCO_E_FAILEDTOCLOSEHANDLE                                                  Handle        = 0x80010138\n\tCO_E_EXCEEDSYSACLLIMIT                                                    Handle        = 0x80010139\n\tCO_E_ACESINWRONGORDER                                                     Handle        = 0x8001013A\n\tCO_E_INCOMPATIBLESTREAMVERSION                                            Handle        = 0x8001013B\n\tCO_E_FAILEDTOOPENPROCESSTOKEN                                             Handle        = 0x8001013C\n\tCO_E_DECODEFAILED                                                         Handle        = 0x8001013D\n\tCO_E_ACNOTINITIALIZED                                                     Handle        = 0x8001013F\n\tCO_E_CANCEL_DISABLED                                                      Handle        = 0x80010140\n\tRPC_E_UNEXPECTED                                                          Handle        = 0x8001FFFF\n\tERROR_AUDITING_DISABLED                                                   Handle        = 0xC0090001\n\tERROR_ALL_SIDS_FILTERED                                                   Handle        = 0xC0090002\n\tERROR_BIZRULES_NOT_ENABLED                                                Handle        = 0xC0090003\n\tNTE_BAD_UID                                                               Handle        = 0x80090001\n\tNTE_BAD_HASH                                                              Handle        = 0x80090002\n\tNTE_BAD_KEY                                                               Handle        = 0x80090003\n\tNTE_BAD_LEN                                                               Handle        = 0x80090004\n\tNTE_BAD_DATA                                                              Handle        = 0x80090005\n\tNTE_BAD_SIGNATURE                                                         Handle        = 0x80090006\n\tNTE_BAD_VER                                                               Handle        = 0x80090007\n\tNTE_BAD_ALGID                                                             Handle        = 0x80090008\n\tNTE_BAD_FLAGS                                                             Handle        = 0x80090009\n\tNTE_BAD_TYPE                                                              Handle        = 0x8009000A\n\tNTE_BAD_KEY_STATE                                                         Handle        = 0x8009000B\n\tNTE_BAD_HASH_STATE                                                        Handle        = 0x8009000C\n\tNTE_NO_KEY                                                                Handle        = 0x8009000D\n\tNTE_NO_MEMORY                                                             Handle        = 0x8009000E\n\tNTE_EXISTS                                                                Handle        = 0x8009000F\n\tNTE_PERM                                                                  Handle        = 0x80090010\n\tNTE_NOT_FOUND                                                             Handle        = 0x80090011\n\tNTE_DOUBLE_ENCRYPT                                                        Handle        = 0x80090012\n\tNTE_BAD_PROVIDER                                                          Handle        = 0x80090013\n\tNTE_BAD_PROV_TYPE                                                         Handle        = 0x80090014\n\tNTE_BAD_PUBLIC_KEY                                                        Handle        = 0x80090015\n\tNTE_BAD_KEYSET                                                            Handle        = 0x80090016\n\tNTE_PROV_TYPE_NOT_DEF                                                     Handle        = 0x80090017\n\tNTE_PROV_TYPE_ENTRY_BAD                                                   Handle        = 0x80090018\n\tNTE_KEYSET_NOT_DEF                                                        Handle        = 0x80090019\n\tNTE_KEYSET_ENTRY_BAD                                                      Handle        = 0x8009001A\n\tNTE_PROV_TYPE_NO_MATCH                                                    Handle        = 0x8009001B\n\tNTE_SIGNATURE_FILE_BAD                                                    Handle        = 0x8009001C\n\tNTE_PROVIDER_DLL_FAIL                                                     Handle        = 0x8009001D\n\tNTE_PROV_DLL_NOT_FOUND                                                    Handle        = 0x8009001E\n\tNTE_BAD_KEYSET_PARAM                                                      Handle        = 0x8009001F\n\tNTE_FAIL                                                                  Handle        = 0x80090020\n\tNTE_SYS_ERR                                                               Handle        = 0x80090021\n\tNTE_SILENT_CONTEXT                                                        Handle        = 0x80090022\n\tNTE_TOKEN_KEYSET_STORAGE_FULL                                             Handle        = 0x80090023\n\tNTE_TEMPORARY_PROFILE                                                     Handle        = 0x80090024\n\tNTE_FIXEDPARAMETER                                                        Handle        = 0x80090025\n\tNTE_INVALID_HANDLE                                                        Handle        = 0x80090026\n\tNTE_INVALID_PARAMETER                                                     Handle        = 0x80090027\n\tNTE_BUFFER_TOO_SMALL                                                      Handle        = 0x80090028\n\tNTE_NOT_SUPPORTED                                                         Handle        = 0x80090029\n\tNTE_NO_MORE_ITEMS                                                         Handle        = 0x8009002A\n\tNTE_BUFFERS_OVERLAP                                                       Handle        = 0x8009002B\n\tNTE_DECRYPTION_FAILURE                                                    Handle        = 0x8009002C\n\tNTE_INTERNAL_ERROR                                                        Handle        = 0x8009002D\n\tNTE_UI_REQUIRED                                                           Handle        = 0x8009002E\n\tNTE_HMAC_NOT_SUPPORTED                                                    Handle        = 0x8009002F\n\tNTE_DEVICE_NOT_READY                                                      Handle        = 0x80090030\n\tNTE_AUTHENTICATION_IGNORED                                                Handle        = 0x80090031\n\tNTE_VALIDATION_FAILED                                                     Handle        = 0x80090032\n\tNTE_INCORRECT_PASSWORD                                                    Handle        = 0x80090033\n\tNTE_ENCRYPTION_FAILURE                                                    Handle        = 0x80090034\n\tNTE_DEVICE_NOT_FOUND                                                      Handle        = 0x80090035\n\tNTE_USER_CANCELLED                                                        Handle        = 0x80090036\n\tNTE_PASSWORD_CHANGE_REQUIRED                                              Handle        = 0x80090037\n\tNTE_NOT_ACTIVE_CONSOLE                                                    Handle        = 0x80090038\n\tSEC_E_INSUFFICIENT_MEMORY                                                 Handle        = 0x80090300\n\tSEC_E_INVALID_HANDLE                                                      Handle        = 0x80090301\n\tSEC_E_UNSUPPORTED_FUNCTION                                                Handle        = 0x80090302\n\tSEC_E_TARGET_UNKNOWN                                                      Handle        = 0x80090303\n\tSEC_E_INTERNAL_ERROR                                                      Handle        = 0x80090304\n\tSEC_E_SECPKG_NOT_FOUND                                                    Handle        = 0x80090305\n\tSEC_E_NOT_OWNER                                                           Handle        = 0x80090306\n\tSEC_E_CANNOT_INSTALL                                                      Handle        = 0x80090307\n\tSEC_E_INVALID_TOKEN                                                       Handle        = 0x80090308\n\tSEC_E_CANNOT_PACK                                                         Handle        = 0x80090309\n\tSEC_E_QOP_NOT_SUPPORTED                                                   Handle        = 0x8009030A\n\tSEC_E_NO_IMPERSONATION                                                    Handle        = 0x8009030B\n\tSEC_E_LOGON_DENIED                                                        Handle        = 0x8009030C\n\tSEC_E_UNKNOWN_CREDENTIALS                                                 Handle        = 0x8009030D\n\tSEC_E_NO_CREDENTIALS                                                      Handle        = 0x8009030E\n\tSEC_E_MESSAGE_ALTERED                                                     Handle        = 0x8009030F\n\tSEC_E_OUT_OF_SEQUENCE                                                     Handle        = 0x80090310\n\tSEC_E_NO_AUTHENTICATING_AUTHORITY                                         Handle        = 0x80090311\n\tSEC_I_CONTINUE_NEEDED                                                     Handle        = 0x00090312\n\tSEC_I_COMPLETE_NEEDED                                                     Handle        = 0x00090313\n\tSEC_I_COMPLETE_AND_CONTINUE                                               Handle        = 0x00090314\n\tSEC_I_LOCAL_LOGON                                                         Handle        = 0x00090315\n\tSEC_I_GENERIC_EXTENSION_RECEIVED                                          Handle        = 0x00090316\n\tSEC_E_BAD_PKGID                                                           Handle        = 0x80090316\n\tSEC_E_CONTEXT_EXPIRED                                                     Handle        = 0x80090317\n\tSEC_I_CONTEXT_EXPIRED                                                     Handle        = 0x00090317\n\tSEC_E_INCOMPLETE_MESSAGE                                                  Handle        = 0x80090318\n\tSEC_E_INCOMPLETE_CREDENTIALS                                              Handle        = 0x80090320\n\tSEC_E_BUFFER_TOO_SMALL                                                    Handle        = 0x80090321\n\tSEC_I_INCOMPLETE_CREDENTIALS                                              Handle        = 0x00090320\n\tSEC_I_RENEGOTIATE                                                         Handle        = 0x00090321\n\tSEC_E_WRONG_PRINCIPAL                                                     Handle        = 0x80090322\n\tSEC_I_NO_LSA_CONTEXT                                                      Handle        = 0x00090323\n\tSEC_E_TIME_SKEW                                                           Handle        = 0x80090324\n\tSEC_E_UNTRUSTED_ROOT                                                      Handle        = 0x80090325\n\tSEC_E_ILLEGAL_MESSAGE                                                     Handle        = 0x80090326\n\tSEC_E_CERT_UNKNOWN                                                        Handle        = 0x80090327\n\tSEC_E_CERT_EXPIRED                                                        Handle        = 0x80090328\n\tSEC_E_ENCRYPT_FAILURE                                                     Handle        = 0x80090329\n\tSEC_E_DECRYPT_FAILURE                                                     Handle        = 0x80090330\n\tSEC_E_ALGORITHM_MISMATCH                                                  Handle        = 0x80090331\n\tSEC_E_SECURITY_QOS_FAILED                                                 Handle        = 0x80090332\n\tSEC_E_UNFINISHED_CONTEXT_DELETED                                          Handle        = 0x80090333\n\tSEC_E_NO_TGT_REPLY                                                        Handle        = 0x80090334\n\tSEC_E_NO_IP_ADDRESSES                                                     Handle        = 0x80090335\n\tSEC_E_WRONG_CREDENTIAL_HANDLE                                             Handle        = 0x80090336\n\tSEC_E_CRYPTO_SYSTEM_INVALID                                               Handle        = 0x80090337\n\tSEC_E_MAX_REFERRALS_EXCEEDED                                              Handle        = 0x80090338\n\tSEC_E_MUST_BE_KDC                                                         Handle        = 0x80090339\n\tSEC_E_STRONG_CRYPTO_NOT_SUPPORTED                                         Handle        = 0x8009033A\n\tSEC_E_TOO_MANY_PRINCIPALS                                                 Handle        = 0x8009033B\n\tSEC_E_NO_PA_DATA                                                          Handle        = 0x8009033C\n\tSEC_E_PKINIT_NAME_MISMATCH                                                Handle        = 0x8009033D\n\tSEC_E_SMARTCARD_LOGON_REQUIRED                                            Handle        = 0x8009033E\n\tSEC_E_SHUTDOWN_IN_PROGRESS                                                Handle        = 0x8009033F\n\tSEC_E_KDC_INVALID_REQUEST                                                 Handle        = 0x80090340\n\tSEC_E_KDC_UNABLE_TO_REFER                                                 Handle        = 0x80090341\n\tSEC_E_KDC_UNKNOWN_ETYPE                                                   Handle        = 0x80090342\n\tSEC_E_UNSUPPORTED_PREAUTH                                                 Handle        = 0x80090343\n\tSEC_E_DELEGATION_REQUIRED                                                 Handle        = 0x80090345\n\tSEC_E_BAD_BINDINGS                                                        Handle        = 0x80090346\n\tSEC_E_MULTIPLE_ACCOUNTS                                                   Handle        = 0x80090347\n\tSEC_E_NO_KERB_KEY                                                         Handle        = 0x80090348\n\tSEC_E_CERT_WRONG_USAGE                                                    Handle        = 0x80090349\n\tSEC_E_DOWNGRADE_DETECTED                                                  Handle        = 0x80090350\n\tSEC_E_SMARTCARD_CERT_REVOKED                                              Handle        = 0x80090351\n\tSEC_E_ISSUING_CA_UNTRUSTED                                                Handle        = 0x80090352\n\tSEC_E_REVOCATION_OFFLINE_C                                                Handle        = 0x80090353\n\tSEC_E_PKINIT_CLIENT_FAILURE                                               Handle        = 0x80090354\n\tSEC_E_SMARTCARD_CERT_EXPIRED                                              Handle        = 0x80090355\n\tSEC_E_NO_S4U_PROT_SUPPORT                                                 Handle        = 0x80090356\n\tSEC_E_CROSSREALM_DELEGATION_FAILURE                                       Handle        = 0x80090357\n\tSEC_E_REVOCATION_OFFLINE_KDC                                              Handle        = 0x80090358\n\tSEC_E_ISSUING_CA_UNTRUSTED_KDC                                            Handle        = 0x80090359\n\tSEC_E_KDC_CERT_EXPIRED                                                    Handle        = 0x8009035A\n\tSEC_E_KDC_CERT_REVOKED                                                    Handle        = 0x8009035B\n\tSEC_I_SIGNATURE_NEEDED                                                    Handle        = 0x0009035C\n\tSEC_E_INVALID_PARAMETER                                                   Handle        = 0x8009035D\n\tSEC_E_DELEGATION_POLICY                                                   Handle        = 0x8009035E\n\tSEC_E_POLICY_NLTM_ONLY                                                    Handle        = 0x8009035F\n\tSEC_I_NO_RENEGOTIATION                                                    Handle        = 0x00090360\n\tSEC_E_NO_CONTEXT                                                          Handle        = 0x80090361\n\tSEC_E_PKU2U_CERT_FAILURE                                                  Handle        = 0x80090362\n\tSEC_E_MUTUAL_AUTH_FAILED                                                  Handle        = 0x80090363\n\tSEC_I_MESSAGE_FRAGMENT                                                    Handle        = 0x00090364\n\tSEC_E_ONLY_HTTPS_ALLOWED                                                  Handle        = 0x80090365\n\tSEC_I_CONTINUE_NEEDED_MESSAGE_OK                                          Handle        = 0x00090366\n\tSEC_E_APPLICATION_PROTOCOL_MISMATCH                                       Handle        = 0x80090367\n\tSEC_I_ASYNC_CALL_PENDING                                                  Handle        = 0x00090368\n\tSEC_E_INVALID_UPN_NAME                                                    Handle        = 0x80090369\n\tSEC_E_EXT_BUFFER_TOO_SMALL                                                Handle        = 0x8009036A\n\tSEC_E_INSUFFICIENT_BUFFERS                                                Handle        = 0x8009036B\n\tSEC_E_NO_SPM                                                                            = SEC_E_INTERNAL_ERROR\n\tSEC_E_NOT_SUPPORTED                                                                     = SEC_E_UNSUPPORTED_FUNCTION\n\tCRYPT_E_MSG_ERROR                                                         Handle        = 0x80091001\n\tCRYPT_E_UNKNOWN_ALGO                                                      Handle        = 0x80091002\n\tCRYPT_E_OID_FORMAT                                                        Handle        = 0x80091003\n\tCRYPT_E_INVALID_MSG_TYPE                                                  Handle        = 0x80091004\n\tCRYPT_E_UNEXPECTED_ENCODING                                               Handle        = 0x80091005\n\tCRYPT_E_AUTH_ATTR_MISSING                                                 Handle        = 0x80091006\n\tCRYPT_E_HASH_VALUE                                                        Handle        = 0x80091007\n\tCRYPT_E_INVALID_INDEX                                                     Handle        = 0x80091008\n\tCRYPT_E_ALREADY_DECRYPTED                                                 Handle        = 0x80091009\n\tCRYPT_E_NOT_DECRYPTED                                                     Handle        = 0x8009100A\n\tCRYPT_E_RECIPIENT_NOT_FOUND                                               Handle        = 0x8009100B\n\tCRYPT_E_CONTROL_TYPE                                                      Handle        = 0x8009100C\n\tCRYPT_E_ISSUER_SERIALNUMBER                                               Handle        = 0x8009100D\n\tCRYPT_E_SIGNER_NOT_FOUND                                                  Handle        = 0x8009100E\n\tCRYPT_E_ATTRIBUTES_MISSING                                                Handle        = 0x8009100F\n\tCRYPT_E_STREAM_MSG_NOT_READY                                              Handle        = 0x80091010\n\tCRYPT_E_STREAM_INSUFFICIENT_DATA                                          Handle        = 0x80091011\n\tCRYPT_I_NEW_PROTECTION_REQUIRED                                           Handle        = 0x00091012\n\tCRYPT_E_BAD_LEN                                                           Handle        = 0x80092001\n\tCRYPT_E_BAD_ENCODE                                                        Handle        = 0x80092002\n\tCRYPT_E_FILE_ERROR                                                        Handle        = 0x80092003\n\tCRYPT_E_NOT_FOUND                                                         Handle        = 0x80092004\n\tCRYPT_E_EXISTS                                                            Handle        = 0x80092005\n\tCRYPT_E_NO_PROVIDER                                                       Handle        = 0x80092006\n\tCRYPT_E_SELF_SIGNED                                                       Handle        = 0x80092007\n\tCRYPT_E_DELETED_PREV                                                      Handle        = 0x80092008\n\tCRYPT_E_NO_MATCH                                                          Handle        = 0x80092009\n\tCRYPT_E_UNEXPECTED_MSG_TYPE                                               Handle        = 0x8009200A\n\tCRYPT_E_NO_KEY_PROPERTY                                                   Handle        = 0x8009200B\n\tCRYPT_E_NO_DECRYPT_CERT                                                   Handle        = 0x8009200C\n\tCRYPT_E_BAD_MSG                                                           Handle        = 0x8009200D\n\tCRYPT_E_NO_SIGNER                                                         Handle        = 0x8009200E\n\tCRYPT_E_PENDING_CLOSE                                                     Handle        = 0x8009200F\n\tCRYPT_E_REVOKED                                                           Handle        = 0x80092010\n\tCRYPT_E_NO_REVOCATION_DLL                                                 Handle        = 0x80092011\n\tCRYPT_E_NO_REVOCATION_CHECK                                               Handle        = 0x80092012\n\tCRYPT_E_REVOCATION_OFFLINE                                                Handle        = 0x80092013\n\tCRYPT_E_NOT_IN_REVOCATION_DATABASE                                        Handle        = 0x80092014\n\tCRYPT_E_INVALID_NUMERIC_STRING                                            Handle        = 0x80092020\n\tCRYPT_E_INVALID_PRINTABLE_STRING                                          Handle        = 0x80092021\n\tCRYPT_E_INVALID_IA5_STRING                                                Handle        = 0x80092022\n\tCRYPT_E_INVALID_X500_STRING                                               Handle        = 0x80092023\n\tCRYPT_E_NOT_CHAR_STRING                                                   Handle        = 0x80092024\n\tCRYPT_E_FILERESIZED                                                       Handle        = 0x80092025\n\tCRYPT_E_SECURITY_SETTINGS                                                 Handle        = 0x80092026\n\tCRYPT_E_NO_VERIFY_USAGE_DLL                                               Handle        = 0x80092027\n\tCRYPT_E_NO_VERIFY_USAGE_CHECK                                             Handle        = 0x80092028\n\tCRYPT_E_VERIFY_USAGE_OFFLINE                                              Handle        = 0x80092029\n\tCRYPT_E_NOT_IN_CTL                                                        Handle        = 0x8009202A\n\tCRYPT_E_NO_TRUSTED_SIGNER                                                 Handle        = 0x8009202B\n\tCRYPT_E_MISSING_PUBKEY_PARA                                               Handle        = 0x8009202C\n\tCRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND                                   Handle        = 0x8009202D\n\tCRYPT_E_OSS_ERROR                                                         Handle        = 0x80093000\n\tOSS_MORE_BUF                                                              Handle        = 0x80093001\n\tOSS_NEGATIVE_UINTEGER                                                     Handle        = 0x80093002\n\tOSS_PDU_RANGE                                                             Handle        = 0x80093003\n\tOSS_MORE_INPUT                                                            Handle        = 0x80093004\n\tOSS_DATA_ERROR                                                            Handle        = 0x80093005\n\tOSS_BAD_ARG                                                               Handle        = 0x80093006\n\tOSS_BAD_VERSION                                                           Handle        = 0x80093007\n\tOSS_OUT_MEMORY                                                            Handle        = 0x80093008\n\tOSS_PDU_MISMATCH                                                          Handle        = 0x80093009\n\tOSS_LIMITED                                                               Handle        = 0x8009300A\n\tOSS_BAD_PTR                                                               Handle        = 0x8009300B\n\tOSS_BAD_TIME                                                              Handle        = 0x8009300C\n\tOSS_INDEFINITE_NOT_SUPPORTED                                              Handle        = 0x8009300D\n\tOSS_MEM_ERROR                                                             Handle        = 0x8009300E\n\tOSS_BAD_TABLE                                                             Handle        = 0x8009300F\n\tOSS_TOO_LONG                                                              Handle        = 0x80093010\n\tOSS_CONSTRAINT_VIOLATED                                                   Handle        = 0x80093011\n\tOSS_FATAL_ERROR                                                           Handle        = 0x80093012\n\tOSS_ACCESS_SERIALIZATION_ERROR                                            Handle        = 0x80093013\n\tOSS_NULL_TBL                                                              Handle        = 0x80093014\n\tOSS_NULL_FCN                                                              Handle        = 0x80093015\n\tOSS_BAD_ENCRULES                                                          Handle        = 0x80093016\n\tOSS_UNAVAIL_ENCRULES                                                      Handle        = 0x80093017\n\tOSS_CANT_OPEN_TRACE_WINDOW                                                Handle        = 0x80093018\n\tOSS_UNIMPLEMENTED                                                         Handle        = 0x80093019\n\tOSS_OID_DLL_NOT_LINKED                                                    Handle        = 0x8009301A\n\tOSS_CANT_OPEN_TRACE_FILE                                                  Handle        = 0x8009301B\n\tOSS_TRACE_FILE_ALREADY_OPEN                                               Handle        = 0x8009301C\n\tOSS_TABLE_MISMATCH                                                        Handle        = 0x8009301D\n\tOSS_TYPE_NOT_SUPPORTED                                                    Handle        = 0x8009301E\n\tOSS_REAL_DLL_NOT_LINKED                                                   Handle        = 0x8009301F\n\tOSS_REAL_CODE_NOT_LINKED                                                  Handle        = 0x80093020\n\tOSS_OUT_OF_RANGE                                                          Handle        = 0x80093021\n\tOSS_COPIER_DLL_NOT_LINKED                                                 Handle        = 0x80093022\n\tOSS_CONSTRAINT_DLL_NOT_LINKED                                             Handle        = 0x80093023\n\tOSS_COMPARATOR_DLL_NOT_LINKED                                             Handle        = 0x80093024\n\tOSS_COMPARATOR_CODE_NOT_LINKED                                            Handle        = 0x80093025\n\tOSS_MEM_MGR_DLL_NOT_LINKED                                                Handle        = 0x80093026\n\tOSS_PDV_DLL_NOT_LINKED                                                    Handle        = 0x80093027\n\tOSS_PDV_CODE_NOT_LINKED                                                   Handle        = 0x80093028\n\tOSS_API_DLL_NOT_LINKED                                                    Handle        = 0x80093029\n\tOSS_BERDER_DLL_NOT_LINKED                                                 Handle        = 0x8009302A\n\tOSS_PER_DLL_NOT_LINKED                                                    Handle        = 0x8009302B\n\tOSS_OPEN_TYPE_ERROR                                                       Handle        = 0x8009302C\n\tOSS_MUTEX_NOT_CREATED                                                     Handle        = 0x8009302D\n\tOSS_CANT_CLOSE_TRACE_FILE                                                 Handle        = 0x8009302E\n\tCRYPT_E_ASN1_ERROR                                                        Handle        = 0x80093100\n\tCRYPT_E_ASN1_INTERNAL                                                     Handle        = 0x80093101\n\tCRYPT_E_ASN1_EOD                                                          Handle        = 0x80093102\n\tCRYPT_E_ASN1_CORRUPT                                                      Handle        = 0x80093103\n\tCRYPT_E_ASN1_LARGE                                                        Handle        = 0x80093104\n\tCRYPT_E_ASN1_CONSTRAINT                                                   Handle        = 0x80093105\n\tCRYPT_E_ASN1_MEMORY                                                       Handle        = 0x80093106\n\tCRYPT_E_ASN1_OVERFLOW                                                     Handle        = 0x80093107\n\tCRYPT_E_ASN1_BADPDU                                                       Handle        = 0x80093108\n\tCRYPT_E_ASN1_BADARGS                                                      Handle        = 0x80093109\n\tCRYPT_E_ASN1_BADREAL                                                      Handle        = 0x8009310A\n\tCRYPT_E_ASN1_BADTAG                                                       Handle        = 0x8009310B\n\tCRYPT_E_ASN1_CHOICE                                                       Handle        = 0x8009310C\n\tCRYPT_E_ASN1_RULE                                                         Handle        = 0x8009310D\n\tCRYPT_E_ASN1_UTF8                                                         Handle        = 0x8009310E\n\tCRYPT_E_ASN1_PDU_TYPE                                                     Handle        = 0x80093133\n\tCRYPT_E_ASN1_NYI                                                          Handle        = 0x80093134\n\tCRYPT_E_ASN1_EXTENDED                                                     Handle        = 0x80093201\n\tCRYPT_E_ASN1_NOEOD                                                        Handle        = 0x80093202\n\tCERTSRV_E_BAD_REQUESTSUBJECT                                              Handle        = 0x80094001\n\tCERTSRV_E_NO_REQUEST                                                      Handle        = 0x80094002\n\tCERTSRV_E_BAD_REQUESTSTATUS                                               Handle        = 0x80094003\n\tCERTSRV_E_PROPERTY_EMPTY                                                  Handle        = 0x80094004\n\tCERTSRV_E_INVALID_CA_CERTIFICATE                                          Handle        = 0x80094005\n\tCERTSRV_E_SERVER_SUSPENDED                                                Handle        = 0x80094006\n\tCERTSRV_E_ENCODING_LENGTH                                                 Handle        = 0x80094007\n\tCERTSRV_E_ROLECONFLICT                                                    Handle        = 0x80094008\n\tCERTSRV_E_RESTRICTEDOFFICER                                               Handle        = 0x80094009\n\tCERTSRV_E_KEY_ARCHIVAL_NOT_CONFIGURED                                     Handle        = 0x8009400A\n\tCERTSRV_E_NO_VALID_KRA                                                    Handle        = 0x8009400B\n\tCERTSRV_E_BAD_REQUEST_KEY_ARCHIVAL                                        Handle        = 0x8009400C\n\tCERTSRV_E_NO_CAADMIN_DEFINED                                              Handle        = 0x8009400D\n\tCERTSRV_E_BAD_RENEWAL_CERT_ATTRIBUTE                                      Handle        = 0x8009400E\n\tCERTSRV_E_NO_DB_SESSIONS                                                  Handle        = 0x8009400F\n\tCERTSRV_E_ALIGNMENT_FAULT                                                 Handle        = 0x80094010\n\tCERTSRV_E_ENROLL_DENIED                                                   Handle        = 0x80094011\n\tCERTSRV_E_TEMPLATE_DENIED                                                 Handle        = 0x80094012\n\tCERTSRV_E_DOWNLEVEL_DC_SSL_OR_UPGRADE                                     Handle        = 0x80094013\n\tCERTSRV_E_ADMIN_DENIED_REQUEST                                            Handle        = 0x80094014\n\tCERTSRV_E_NO_POLICY_SERVER                                                Handle        = 0x80094015\n\tCERTSRV_E_WEAK_SIGNATURE_OR_KEY                                           Handle        = 0x80094016\n\tCERTSRV_E_KEY_ATTESTATION_NOT_SUPPORTED                                   Handle        = 0x80094017\n\tCERTSRV_E_ENCRYPTION_CERT_REQUIRED                                        Handle        = 0x80094018\n\tCERTSRV_E_UNSUPPORTED_CERT_TYPE                                           Handle        = 0x80094800\n\tCERTSRV_E_NO_CERT_TYPE                                                    Handle        = 0x80094801\n\tCERTSRV_E_TEMPLATE_CONFLICT                                               Handle        = 0x80094802\n\tCERTSRV_E_SUBJECT_ALT_NAME_REQUIRED                                       Handle        = 0x80094803\n\tCERTSRV_E_ARCHIVED_KEY_REQUIRED                                           Handle        = 0x80094804\n\tCERTSRV_E_SMIME_REQUIRED                                                  Handle        = 0x80094805\n\tCERTSRV_E_BAD_RENEWAL_SUBJECT                                             Handle        = 0x80094806\n\tCERTSRV_E_BAD_TEMPLATE_VERSION                                            Handle        = 0x80094807\n\tCERTSRV_E_TEMPLATE_POLICY_REQUIRED                                        Handle        = 0x80094808\n\tCERTSRV_E_SIGNATURE_POLICY_REQUIRED                                       Handle        = 0x80094809\n\tCERTSRV_E_SIGNATURE_COUNT                                                 Handle        = 0x8009480A\n\tCERTSRV_E_SIGNATURE_REJECTED                                              Handle        = 0x8009480B\n\tCERTSRV_E_ISSUANCE_POLICY_REQUIRED                                        Handle        = 0x8009480C\n\tCERTSRV_E_SUBJECT_UPN_REQUIRED                                            Handle        = 0x8009480D\n\tCERTSRV_E_SUBJECT_DIRECTORY_GUID_REQUIRED                                 Handle        = 0x8009480E\n\tCERTSRV_E_SUBJECT_DNS_REQUIRED                                            Handle        = 0x8009480F\n\tCERTSRV_E_ARCHIVED_KEY_UNEXPECTED                                         Handle        = 0x80094810\n\tCERTSRV_E_KEY_LENGTH                                                      Handle        = 0x80094811\n\tCERTSRV_E_SUBJECT_EMAIL_REQUIRED                                          Handle        = 0x80094812\n\tCERTSRV_E_UNKNOWN_CERT_TYPE                                               Handle        = 0x80094813\n\tCERTSRV_E_CERT_TYPE_OVERLAP                                               Handle        = 0x80094814\n\tCERTSRV_E_TOO_MANY_SIGNATURES                                             Handle        = 0x80094815\n\tCERTSRV_E_RENEWAL_BAD_PUBLIC_KEY                                          Handle        = 0x80094816\n\tCERTSRV_E_INVALID_EK                                                      Handle        = 0x80094817\n\tCERTSRV_E_INVALID_IDBINDING                                               Handle        = 0x80094818\n\tCERTSRV_E_INVALID_ATTESTATION                                             Handle        = 0x80094819\n\tCERTSRV_E_KEY_ATTESTATION                                                 Handle        = 0x8009481A\n\tCERTSRV_E_CORRUPT_KEY_ATTESTATION                                         Handle        = 0x8009481B\n\tCERTSRV_E_EXPIRED_CHALLENGE                                               Handle        = 0x8009481C\n\tCERTSRV_E_INVALID_RESPONSE                                                Handle        = 0x8009481D\n\tCERTSRV_E_INVALID_REQUESTID                                               Handle        = 0x8009481E\n\tCERTSRV_E_REQUEST_PRECERTIFICATE_MISMATCH                                 Handle        = 0x8009481F\n\tCERTSRV_E_PENDING_CLIENT_RESPONSE                                         Handle        = 0x80094820\n\tXENROLL_E_KEY_NOT_EXPORTABLE                                              Handle        = 0x80095000\n\tXENROLL_E_CANNOT_ADD_ROOT_CERT                                            Handle        = 0x80095001\n\tXENROLL_E_RESPONSE_KA_HASH_NOT_FOUND                                      Handle        = 0x80095002\n\tXENROLL_E_RESPONSE_UNEXPECTED_KA_HASH                                     Handle        = 0x80095003\n\tXENROLL_E_RESPONSE_KA_HASH_MISMATCH                                       Handle        = 0x80095004\n\tXENROLL_E_KEYSPEC_SMIME_MISMATCH                                          Handle        = 0x80095005\n\tTRUST_E_SYSTEM_ERROR                                                      Handle        = 0x80096001\n\tTRUST_E_NO_SIGNER_CERT                                                    Handle        = 0x80096002\n\tTRUST_E_COUNTER_SIGNER                                                    Handle        = 0x80096003\n\tTRUST_E_CERT_SIGNATURE                                                    Handle        = 0x80096004\n\tTRUST_E_TIME_STAMP                                                        Handle        = 0x80096005\n\tTRUST_E_BAD_DIGEST                                                        Handle        = 0x80096010\n\tTRUST_E_MALFORMED_SIGNATURE                                               Handle        = 0x80096011\n\tTRUST_E_BASIC_CONSTRAINTS                                                 Handle        = 0x80096019\n\tTRUST_E_FINANCIAL_CRITERIA                                                Handle        = 0x8009601E\n\tMSSIPOTF_E_OUTOFMEMRANGE                                                  Handle        = 0x80097001\n\tMSSIPOTF_E_CANTGETOBJECT                                                  Handle        = 0x80097002\n\tMSSIPOTF_E_NOHEADTABLE                                                    Handle        = 0x80097003\n\tMSSIPOTF_E_BAD_MAGICNUMBER                                                Handle        = 0x80097004\n\tMSSIPOTF_E_BAD_OFFSET_TABLE                                               Handle        = 0x80097005\n\tMSSIPOTF_E_TABLE_TAGORDER                                                 Handle        = 0x80097006\n\tMSSIPOTF_E_TABLE_LONGWORD                                                 Handle        = 0x80097007\n\tMSSIPOTF_E_BAD_FIRST_TABLE_PLACEMENT                                      Handle        = 0x80097008\n\tMSSIPOTF_E_TABLES_OVERLAP                                                 Handle        = 0x80097009\n\tMSSIPOTF_E_TABLE_PADBYTES                                                 Handle        = 0x8009700A\n\tMSSIPOTF_E_FILETOOSMALL                                                   Handle        = 0x8009700B\n\tMSSIPOTF_E_TABLE_CHECKSUM                                                 Handle        = 0x8009700C\n\tMSSIPOTF_E_FILE_CHECKSUM                                                  Handle        = 0x8009700D\n\tMSSIPOTF_E_FAILED_POLICY                                                  Handle        = 0x80097010\n\tMSSIPOTF_E_FAILED_HINTS_CHECK                                             Handle        = 0x80097011\n\tMSSIPOTF_E_NOT_OPENTYPE                                                   Handle        = 0x80097012\n\tMSSIPOTF_E_FILE                                                           Handle        = 0x80097013\n\tMSSIPOTF_E_CRYPT                                                          Handle        = 0x80097014\n\tMSSIPOTF_E_BADVERSION                                                     Handle        = 0x80097015\n\tMSSIPOTF_E_DSIG_STRUCTURE                                                 Handle        = 0x80097016\n\tMSSIPOTF_E_PCONST_CHECK                                                   Handle        = 0x80097017\n\tMSSIPOTF_E_STRUCTURE                                                      Handle        = 0x80097018\n\tERROR_CRED_REQUIRES_CONFIRMATION                                          Handle        = 0x80097019\n\tNTE_OP_OK                                                                 syscall.Errno = 0\n\tTRUST_E_PROVIDER_UNKNOWN                                                  Handle        = 0x800B0001\n\tTRUST_E_ACTION_UNKNOWN                                                    Handle        = 0x800B0002\n\tTRUST_E_SUBJECT_FORM_UNKNOWN                                              Handle        = 0x800B0003\n\tTRUST_E_SUBJECT_NOT_TRUSTED                                               Handle        = 0x800B0004\n\tDIGSIG_E_ENCODE                                                           Handle        = 0x800B0005\n\tDIGSIG_E_DECODE                                                           Handle        = 0x800B0006\n\tDIGSIG_E_EXTENSIBILITY                                                    Handle        = 0x800B0007\n\tDIGSIG_E_CRYPTO                                                           Handle        = 0x800B0008\n\tPERSIST_E_SIZEDEFINITE                                                    Handle        = 0x800B0009\n\tPERSIST_E_SIZEINDEFINITE                                                  Handle        = 0x800B000A\n\tPERSIST_E_NOTSELFSIZING                                                   Handle        = 0x800B000B\n\tTRUST_E_NOSIGNATURE                                                       Handle        = 0x800B0100\n\tCERT_E_EXPIRED                                                            Handle        = 0x800B0101\n\tCERT_E_VALIDITYPERIODNESTING                                              Handle        = 0x800B0102\n\tCERT_E_ROLE                                                               Handle        = 0x800B0103\n\tCERT_E_PATHLENCONST                                                       Handle        = 0x800B0104\n\tCERT_E_CRITICAL                                                           Handle        = 0x800B0105\n\tCERT_E_PURPOSE                                                            Handle        = 0x800B0106\n\tCERT_E_ISSUERCHAINING                                                     Handle        = 0x800B0107\n\tCERT_E_MALFORMED                                                          Handle        = 0x800B0108\n\tCERT_E_UNTRUSTEDROOT                                                      Handle        = 0x800B0109\n\tCERT_E_CHAINING                                                           Handle        = 0x800B010A\n\tTRUST_E_FAIL                                                              Handle        = 0x800B010B\n\tCERT_E_REVOKED                                                            Handle        = 0x800B010C\n\tCERT_E_UNTRUSTEDTESTROOT                                                  Handle        = 0x800B010D\n\tCERT_E_REVOCATION_FAILURE                                                 Handle        = 0x800B010E\n\tCERT_E_CN_NO_MATCH                                                        Handle        = 0x800B010F\n\tCERT_E_WRONG_USAGE                                                        Handle        = 0x800B0110\n\tTRUST_E_EXPLICIT_DISTRUST                                                 Handle        = 0x800B0111\n\tCERT_E_UNTRUSTEDCA                                                        Handle        = 0x800B0112\n\tCERT_E_INVALID_POLICY                                                     Handle        = 0x800B0113\n\tCERT_E_INVALID_NAME                                                       Handle        = 0x800B0114\n\tSPAPI_E_EXPECTED_SECTION_NAME                                             Handle        = 0x800F0000\n\tSPAPI_E_BAD_SECTION_NAME_LINE                                             Handle        = 0x800F0001\n\tSPAPI_E_SECTION_NAME_TOO_LONG                                             Handle        = 0x800F0002\n\tSPAPI_E_GENERAL_SYNTAX                                                    Handle        = 0x800F0003\n\tSPAPI_E_WRONG_INF_STYLE                                                   Handle        = 0x800F0100\n\tSPAPI_E_SECTION_NOT_FOUND                                                 Handle        = 0x800F0101\n\tSPAPI_E_LINE_NOT_FOUND                                                    Handle        = 0x800F0102\n\tSPAPI_E_NO_BACKUP                                                         Handle        = 0x800F0103\n\tSPAPI_E_NO_ASSOCIATED_CLASS                                               Handle        = 0x800F0200\n\tSPAPI_E_CLASS_MISMATCH                                                    Handle        = 0x800F0201\n\tSPAPI_E_DUPLICATE_FOUND                                                   Handle        = 0x800F0202\n\tSPAPI_E_NO_DRIVER_SELECTED                                                Handle        = 0x800F0203\n\tSPAPI_E_KEY_DOES_NOT_EXIST                                                Handle        = 0x800F0204\n\tSPAPI_E_INVALID_DEVINST_NAME                                              Handle        = 0x800F0205\n\tSPAPI_E_INVALID_CLASS                                                     Handle        = 0x800F0206\n\tSPAPI_E_DEVINST_ALREADY_EXISTS                                            Handle        = 0x800F0207\n\tSPAPI_E_DEVINFO_NOT_REGISTERED                                            Handle        = 0x800F0208\n\tSPAPI_E_INVALID_REG_PROPERTY                                              Handle        = 0x800F0209\n\tSPAPI_E_NO_INF                                                            Handle        = 0x800F020A\n\tSPAPI_E_NO_SUCH_DEVINST                                                   Handle        = 0x800F020B\n\tSPAPI_E_CANT_LOAD_CLASS_ICON                                              Handle        = 0x800F020C\n\tSPAPI_E_INVALID_CLASS_INSTALLER                                           Handle        = 0x800F020D\n\tSPAPI_E_DI_DO_DEFAULT                                                     Handle        = 0x800F020E\n\tSPAPI_E_DI_NOFILECOPY                                                     Handle        = 0x800F020F\n\tSPAPI_E_INVALID_HWPROFILE                                                 Handle        = 0x800F0210\n\tSPAPI_E_NO_DEVICE_SELECTED                                                Handle        = 0x800F0211\n\tSPAPI_E_DEVINFO_LIST_LOCKED                                               Handle        = 0x800F0212\n\tSPAPI_E_DEVINFO_DATA_LOCKED                                               Handle        = 0x800F0213\n\tSPAPI_E_DI_BAD_PATH                                                       Handle        = 0x800F0214\n\tSPAPI_E_NO_CLASSINSTALL_PARAMS                                            Handle        = 0x800F0215\n\tSPAPI_E_FILEQUEUE_LOCKED                                                  Handle        = 0x800F0216\n\tSPAPI_E_BAD_SERVICE_INSTALLSECT                                           Handle        = 0x800F0217\n\tSPAPI_E_NO_CLASS_DRIVER_LIST                                              Handle        = 0x800F0218\n\tSPAPI_E_NO_ASSOCIATED_SERVICE                                             Handle        = 0x800F0219\n\tSPAPI_E_NO_DEFAULT_DEVICE_INTERFACE                                       Handle        = 0x800F021A\n\tSPAPI_E_DEVICE_INTERFACE_ACTIVE                                           Handle        = 0x800F021B\n\tSPAPI_E_DEVICE_INTERFACE_REMOVED                                          Handle        = 0x800F021C\n\tSPAPI_E_BAD_INTERFACE_INSTALLSECT                                         Handle        = 0x800F021D\n\tSPAPI_E_NO_SUCH_INTERFACE_CLASS                                           Handle        = 0x800F021E\n\tSPAPI_E_INVALID_REFERENCE_STRING                                          Handle        = 0x800F021F\n\tSPAPI_E_INVALID_MACHINENAME                                               Handle        = 0x800F0220\n\tSPAPI_E_REMOTE_COMM_FAILURE                                               Handle        = 0x800F0221\n\tSPAPI_E_MACHINE_UNAVAILABLE                                               Handle        = 0x800F0222\n\tSPAPI_E_NO_CONFIGMGR_SERVICES                                             Handle        = 0x800F0223\n\tSPAPI_E_INVALID_PROPPAGE_PROVIDER                                         Handle        = 0x800F0224\n\tSPAPI_E_NO_SUCH_DEVICE_INTERFACE                                          Handle        = 0x800F0225\n\tSPAPI_E_DI_POSTPROCESSING_REQUIRED                                        Handle        = 0x800F0226\n\tSPAPI_E_INVALID_COINSTALLER                                               Handle        = 0x800F0227\n\tSPAPI_E_NO_COMPAT_DRIVERS                                                 Handle        = 0x800F0228\n\tSPAPI_E_NO_DEVICE_ICON                                                    Handle        = 0x800F0229\n\tSPAPI_E_INVALID_INF_LOGCONFIG                                             Handle        = 0x800F022A\n\tSPAPI_E_DI_DONT_INSTALL                                                   Handle        = 0x800F022B\n\tSPAPI_E_INVALID_FILTER_DRIVER                                             Handle        = 0x800F022C\n\tSPAPI_E_NON_WINDOWS_NT_DRIVER                                             Handle        = 0x800F022D\n\tSPAPI_E_NON_WINDOWS_DRIVER                                                Handle        = 0x800F022E\n\tSPAPI_E_NO_CATALOG_FOR_OEM_INF                                            Handle        = 0x800F022F\n\tSPAPI_E_DEVINSTALL_QUEUE_NONNATIVE                                        Handle        = 0x800F0230\n\tSPAPI_E_NOT_DISABLEABLE                                                   Handle        = 0x800F0231\n\tSPAPI_E_CANT_REMOVE_DEVINST                                               Handle        = 0x800F0232\n\tSPAPI_E_INVALID_TARGET                                                    Handle        = 0x800F0233\n\tSPAPI_E_DRIVER_NONNATIVE                                                  Handle        = 0x800F0234\n\tSPAPI_E_IN_WOW64                                                          Handle        = 0x800F0235\n\tSPAPI_E_SET_SYSTEM_RESTORE_POINT                                          Handle        = 0x800F0236\n\tSPAPI_E_INCORRECTLY_COPIED_INF                                            Handle        = 0x800F0237\n\tSPAPI_E_SCE_DISABLED                                                      Handle        = 0x800F0238\n\tSPAPI_E_UNKNOWN_EXCEPTION                                                 Handle        = 0x800F0239\n\tSPAPI_E_PNP_REGISTRY_ERROR                                                Handle        = 0x800F023A\n\tSPAPI_E_REMOTE_REQUEST_UNSUPPORTED                                        Handle        = 0x800F023B\n\tSPAPI_E_NOT_AN_INSTALLED_OEM_INF                                          Handle        = 0x800F023C\n\tSPAPI_E_INF_IN_USE_BY_DEVICES                                             Handle        = 0x800F023D\n\tSPAPI_E_DI_FUNCTION_OBSOLETE                                              Handle        = 0x800F023E\n\tSPAPI_E_NO_AUTHENTICODE_CATALOG                                           Handle        = 0x800F023F\n\tSPAPI_E_AUTHENTICODE_DISALLOWED                                           Handle        = 0x800F0240\n\tSPAPI_E_AUTHENTICODE_TRUSTED_PUBLISHER                                    Handle        = 0x800F0241\n\tSPAPI_E_AUTHENTICODE_TRUST_NOT_ESTABLISHED                                Handle        = 0x800F0242\n\tSPAPI_E_AUTHENTICODE_PUBLISHER_NOT_TRUSTED                                Handle        = 0x800F0243\n\tSPAPI_E_SIGNATURE_OSATTRIBUTE_MISMATCH                                    Handle        = 0x800F0244\n\tSPAPI_E_ONLY_VALIDATE_VIA_AUTHENTICODE                                    Handle        = 0x800F0245\n\tSPAPI_E_DEVICE_INSTALLER_NOT_READY                                        Handle        = 0x800F0246\n\tSPAPI_E_DRIVER_STORE_ADD_FAILED                                           Handle        = 0x800F0247\n\tSPAPI_E_DEVICE_INSTALL_BLOCKED                                            Handle        = 0x800F0248\n\tSPAPI_E_DRIVER_INSTALL_BLOCKED                                            Handle        = 0x800F0249\n\tSPAPI_E_WRONG_INF_TYPE                                                    Handle        = 0x800F024A\n\tSPAPI_E_FILE_HASH_NOT_IN_CATALOG                                          Handle        = 0x800F024B\n\tSPAPI_E_DRIVER_STORE_DELETE_FAILED                                        Handle        = 0x800F024C\n\tSPAPI_E_UNRECOVERABLE_STACK_OVERFLOW                                      Handle        = 0x800F0300\n\tSPAPI_E_ERROR_NOT_INSTALLED                                               Handle        = 0x800F1000\n\tSCARD_S_SUCCESS                                                                         = S_OK\n\tSCARD_F_INTERNAL_ERROR                                                    Handle        = 0x80100001\n\tSCARD_E_CANCELLED                                                         Handle        = 0x80100002\n\tSCARD_E_INVALID_HANDLE                                                    Handle        = 0x80100003\n\tSCARD_E_INVALID_PARAMETER                                                 Handle        = 0x80100004\n\tSCARD_E_INVALID_TARGET                                                    Handle        = 0x80100005\n\tSCARD_E_NO_MEMORY                                                         Handle        = 0x80100006\n\tSCARD_F_WAITED_TOO_LONG                                                   Handle        = 0x80100007\n\tSCARD_E_INSUFFICIENT_BUFFER                                               Handle        = 0x80100008\n\tSCARD_E_UNKNOWN_READER                                                    Handle        = 0x80100009\n\tSCARD_E_TIMEOUT                                                           Handle        = 0x8010000A\n\tSCARD_E_SHARING_VIOLATION                                                 Handle        = 0x8010000B\n\tSCARD_E_NO_SMARTCARD                                                      Handle        = 0x8010000C\n\tSCARD_E_UNKNOWN_CARD                                                      Handle        = 0x8010000D\n\tSCARD_E_CANT_DISPOSE                                                      Handle        = 0x8010000E\n\tSCARD_E_PROTO_MISMATCH                                                    Handle        = 0x8010000F\n\tSCARD_E_NOT_READY                                                         Handle        = 0x80100010\n\tSCARD_E_INVALID_VALUE                                                     Handle        = 0x80100011\n\tSCARD_E_SYSTEM_CANCELLED                                                  Handle        = 0x80100012\n\tSCARD_F_COMM_ERROR                                                        Handle        = 0x80100013\n\tSCARD_F_UNKNOWN_ERROR                                                     Handle        = 0x80100014\n\tSCARD_E_INVALID_ATR                                                       Handle        = 0x80100015\n\tSCARD_E_NOT_TRANSACTED                                                    Handle        = 0x80100016\n\tSCARD_E_READER_UNAVAILABLE                                                Handle        = 0x80100017\n\tSCARD_P_SHUTDOWN                                                          Handle        = 0x80100018\n\tSCARD_E_PCI_TOO_SMALL                                                     Handle        = 0x80100019\n\tSCARD_E_READER_UNSUPPORTED                                                Handle        = 0x8010001A\n\tSCARD_E_DUPLICATE_READER                                                  Handle        = 0x8010001B\n\tSCARD_E_CARD_UNSUPPORTED                                                  Handle        = 0x8010001C\n\tSCARD_E_NO_SERVICE                                                        Handle        = 0x8010001D\n\tSCARD_E_SERVICE_STOPPED                                                   Handle        = 0x8010001E\n\tSCARD_E_UNEXPECTED                                                        Handle        = 0x8010001F\n\tSCARD_E_ICC_INSTALLATION                                                  Handle        = 0x80100020\n\tSCARD_E_ICC_CREATEORDER                                                   Handle        = 0x80100021\n\tSCARD_E_UNSUPPORTED_FEATURE                                               Handle        = 0x80100022\n\tSCARD_E_DIR_NOT_FOUND                                                     Handle        = 0x80100023\n\tSCARD_E_FILE_NOT_FOUND                                                    Handle        = 0x80100024\n\tSCARD_E_NO_DIR                                                            Handle        = 0x80100025\n\tSCARD_E_NO_FILE                                                           Handle        = 0x80100026\n\tSCARD_E_NO_ACCESS                                                         Handle        = 0x80100027\n\tSCARD_E_WRITE_TOO_MANY                                                    Handle        = 0x80100028\n\tSCARD_E_BAD_SEEK                                                          Handle        = 0x80100029\n\tSCARD_E_INVALID_CHV                                                       Handle        = 0x8010002A\n\tSCARD_E_UNKNOWN_RES_MNG                                                   Handle        = 0x8010002B\n\tSCARD_E_NO_SUCH_CERTIFICATE                                               Handle        = 0x8010002C\n\tSCARD_E_CERTIFICATE_UNAVAILABLE                                           Handle        = 0x8010002D\n\tSCARD_E_NO_READERS_AVAILABLE                                              Handle        = 0x8010002E\n\tSCARD_E_COMM_DATA_LOST                                                    Handle        = 0x8010002F\n\tSCARD_E_NO_KEY_CONTAINER                                                  Handle        = 0x80100030\n\tSCARD_E_SERVER_TOO_BUSY                                                   Handle        = 0x80100031\n\tSCARD_E_PIN_CACHE_EXPIRED                                                 Handle        = 0x80100032\n\tSCARD_E_NO_PIN_CACHE                                                      Handle        = 0x80100033\n\tSCARD_E_READ_ONLY_CARD                                                    Handle        = 0x80100034\n\tSCARD_W_UNSUPPORTED_CARD                                                  Handle        = 0x80100065\n\tSCARD_W_UNRESPONSIVE_CARD                                                 Handle        = 0x80100066\n\tSCARD_W_UNPOWERED_CARD                                                    Handle        = 0x80100067\n\tSCARD_W_RESET_CARD                                                        Handle        = 0x80100068\n\tSCARD_W_REMOVED_CARD                                                      Handle        = 0x80100069\n\tSCARD_W_SECURITY_VIOLATION                                                Handle        = 0x8010006A\n\tSCARD_W_WRONG_CHV                                                         Handle        = 0x8010006B\n\tSCARD_W_CHV_BLOCKED                                                       Handle        = 0x8010006C\n\tSCARD_W_EOF                                                               Handle        = 0x8010006D\n\tSCARD_W_CANCELLED_BY_USER                                                 Handle        = 0x8010006E\n\tSCARD_W_CARD_NOT_AUTHENTICATED                                            Handle        = 0x8010006F\n\tSCARD_W_CACHE_ITEM_NOT_FOUND                                              Handle        = 0x80100070\n\tSCARD_W_CACHE_ITEM_STALE                                                  Handle        = 0x80100071\n\tSCARD_W_CACHE_ITEM_TOO_BIG                                                Handle        = 0x80100072\n\tCOMADMIN_E_OBJECTERRORS                                                   Handle        = 0x80110401\n\tCOMADMIN_E_OBJECTINVALID                                                  Handle        = 0x80110402\n\tCOMADMIN_E_KEYMISSING                                                     Handle        = 0x80110403\n\tCOMADMIN_E_ALREADYINSTALLED                                               Handle        = 0x80110404\n\tCOMADMIN_E_APP_FILE_WRITEFAIL                                             Handle        = 0x80110407\n\tCOMADMIN_E_APP_FILE_READFAIL                                              Handle        = 0x80110408\n\tCOMADMIN_E_APP_FILE_VERSION                                               Handle        = 0x80110409\n\tCOMADMIN_E_BADPATH                                                        Handle        = 0x8011040A\n\tCOMADMIN_E_APPLICATIONEXISTS                                              Handle        = 0x8011040B\n\tCOMADMIN_E_ROLEEXISTS                                                     Handle        = 0x8011040C\n\tCOMADMIN_E_CANTCOPYFILE                                                   Handle        = 0x8011040D\n\tCOMADMIN_E_NOUSER                                                         Handle        = 0x8011040F\n\tCOMADMIN_E_INVALIDUSERIDS                                                 Handle        = 0x80110410\n\tCOMADMIN_E_NOREGISTRYCLSID                                                Handle        = 0x80110411\n\tCOMADMIN_E_BADREGISTRYPROGID                                              Handle        = 0x80110412\n\tCOMADMIN_E_AUTHENTICATIONLEVEL                                            Handle        = 0x80110413\n\tCOMADMIN_E_USERPASSWDNOTVALID                                             Handle        = 0x80110414\n\tCOMADMIN_E_CLSIDORIIDMISMATCH                                             Handle        = 0x80110418\n\tCOMADMIN_E_REMOTEINTERFACE                                                Handle        = 0x80110419\n\tCOMADMIN_E_DLLREGISTERSERVER                                              Handle        = 0x8011041A\n\tCOMADMIN_E_NOSERVERSHARE                                                  Handle        = 0x8011041B\n\tCOMADMIN_E_DLLLOADFAILED                                                  Handle        = 0x8011041D\n\tCOMADMIN_E_BADREGISTRYLIBID                                               Handle        = 0x8011041E\n\tCOMADMIN_E_APPDIRNOTFOUND                                                 Handle        = 0x8011041F\n\tCOMADMIN_E_REGISTRARFAILED                                                Handle        = 0x80110423\n\tCOMADMIN_E_COMPFILE_DOESNOTEXIST                                          Handle        = 0x80110424\n\tCOMADMIN_E_COMPFILE_LOADDLLFAIL                                           Handle        = 0x80110425\n\tCOMADMIN_E_COMPFILE_GETCLASSOBJ                                           Handle        = 0x80110426\n\tCOMADMIN_E_COMPFILE_CLASSNOTAVAIL                                         Handle        = 0x80110427\n\tCOMADMIN_E_COMPFILE_BADTLB                                                Handle        = 0x80110428\n\tCOMADMIN_E_COMPFILE_NOTINSTALLABLE                                        Handle        = 0x80110429\n\tCOMADMIN_E_NOTCHANGEABLE                                                  Handle        = 0x8011042A\n\tCOMADMIN_E_NOTDELETEABLE                                                  Handle        = 0x8011042B\n\tCOMADMIN_E_SESSION                                                        Handle        = 0x8011042C\n\tCOMADMIN_E_COMP_MOVE_LOCKED                                               Handle        = 0x8011042D\n\tCOMADMIN_E_COMP_MOVE_BAD_DEST                                             Handle        = 0x8011042E\n\tCOMADMIN_E_REGISTERTLB                                                    Handle        = 0x80110430\n\tCOMADMIN_E_SYSTEMAPP                                                      Handle        = 0x80110433\n\tCOMADMIN_E_COMPFILE_NOREGISTRAR                                           Handle        = 0x80110434\n\tCOMADMIN_E_COREQCOMPINSTALLED                                             Handle        = 0x80110435\n\tCOMADMIN_E_SERVICENOTINSTALLED                                            Handle        = 0x80110436\n\tCOMADMIN_E_PROPERTYSAVEFAILED                                             Handle        = 0x80110437\n\tCOMADMIN_E_OBJECTEXISTS                                                   Handle        = 0x80110438\n\tCOMADMIN_E_COMPONENTEXISTS                                                Handle        = 0x80110439\n\tCOMADMIN_E_REGFILE_CORRUPT                                                Handle        = 0x8011043B\n\tCOMADMIN_E_PROPERTY_OVERFLOW                                              Handle        = 0x8011043C\n\tCOMADMIN_E_NOTINREGISTRY                                                  Handle        = 0x8011043E\n\tCOMADMIN_E_OBJECTNOTPOOLABLE                                              Handle        = 0x8011043F\n\tCOMADMIN_E_APPLID_MATCHES_CLSID                                           Handle        = 0x80110446\n\tCOMADMIN_E_ROLE_DOES_NOT_EXIST                                            Handle        = 0x80110447\n\tCOMADMIN_E_START_APP_NEEDS_COMPONENTS                                     Handle        = 0x80110448\n\tCOMADMIN_E_REQUIRES_DIFFERENT_PLATFORM                                    Handle        = 0x80110449\n\tCOMADMIN_E_CAN_NOT_EXPORT_APP_PROXY                                       Handle        = 0x8011044A\n\tCOMADMIN_E_CAN_NOT_START_APP                                              Handle        = 0x8011044B\n\tCOMADMIN_E_CAN_NOT_EXPORT_SYS_APP                                         Handle        = 0x8011044C\n\tCOMADMIN_E_CANT_SUBSCRIBE_TO_COMPONENT                                    Handle        = 0x8011044D\n\tCOMADMIN_E_EVENTCLASS_CANT_BE_SUBSCRIBER                                  Handle        = 0x8011044E\n\tCOMADMIN_E_LIB_APP_PROXY_INCOMPATIBLE                                     Handle        = 0x8011044F\n\tCOMADMIN_E_BASE_PARTITION_ONLY                                            Handle        = 0x80110450\n\tCOMADMIN_E_START_APP_DISABLED                                             Handle        = 0x80110451\n\tCOMADMIN_E_CAT_DUPLICATE_PARTITION_NAME                                   Handle        = 0x80110457\n\tCOMADMIN_E_CAT_INVALID_PARTITION_NAME                                     Handle        = 0x80110458\n\tCOMADMIN_E_CAT_PARTITION_IN_USE                                           Handle        = 0x80110459\n\tCOMADMIN_E_FILE_PARTITION_DUPLICATE_FILES                                 Handle        = 0x8011045A\n\tCOMADMIN_E_CAT_IMPORTED_COMPONENTS_NOT_ALLOWED                            Handle        = 0x8011045B\n\tCOMADMIN_E_AMBIGUOUS_APPLICATION_NAME                                     Handle        = 0x8011045C\n\tCOMADMIN_E_AMBIGUOUS_PARTITION_NAME                                       Handle        = 0x8011045D\n\tCOMADMIN_E_REGDB_NOTINITIALIZED                                           Handle        = 0x80110472\n\tCOMADMIN_E_REGDB_NOTOPEN                                                  Handle        = 0x80110473\n\tCOMADMIN_E_REGDB_SYSTEMERR                                                Handle        = 0x80110474\n\tCOMADMIN_E_REGDB_ALREADYRUNNING                                           Handle        = 0x80110475\n\tCOMADMIN_E_MIG_VERSIONNOTSUPPORTED                                        Handle        = 0x80110480\n\tCOMADMIN_E_MIG_SCHEMANOTFOUND                                             Handle        = 0x80110481\n\tCOMADMIN_E_CAT_BITNESSMISMATCH                                            Handle        = 0x80110482\n\tCOMADMIN_E_CAT_UNACCEPTABLEBITNESS                                        Handle        = 0x80110483\n\tCOMADMIN_E_CAT_WRONGAPPBITNESS                                            Handle        = 0x80110484\n\tCOMADMIN_E_CAT_PAUSE_RESUME_NOT_SUPPORTED                                 Handle        = 0x80110485\n\tCOMADMIN_E_CAT_SERVERFAULT                                                Handle        = 0x80110486\n\tCOMQC_E_APPLICATION_NOT_QUEUED                                            Handle        = 0x80110600\n\tCOMQC_E_NO_QUEUEABLE_INTERFACES                                           Handle        = 0x80110601\n\tCOMQC_E_QUEUING_SERVICE_NOT_AVAILABLE                                     Handle        = 0x80110602\n\tCOMQC_E_NO_IPERSISTSTREAM                                                 Handle        = 0x80110603\n\tCOMQC_E_BAD_MESSAGE                                                       Handle        = 0x80110604\n\tCOMQC_E_UNAUTHENTICATED                                                   Handle        = 0x80110605\n\tCOMQC_E_UNTRUSTED_ENQUEUER                                                Handle        = 0x80110606\n\tMSDTC_E_DUPLICATE_RESOURCE                                                Handle        = 0x80110701\n\tCOMADMIN_E_OBJECT_PARENT_MISSING                                          Handle        = 0x80110808\n\tCOMADMIN_E_OBJECT_DOES_NOT_EXIST                                          Handle        = 0x80110809\n\tCOMADMIN_E_APP_NOT_RUNNING                                                Handle        = 0x8011080A\n\tCOMADMIN_E_INVALID_PARTITION                                              Handle        = 0x8011080B\n\tCOMADMIN_E_SVCAPP_NOT_POOLABLE_OR_RECYCLABLE                              Handle        = 0x8011080D\n\tCOMADMIN_E_USER_IN_SET                                                    Handle        = 0x8011080E\n\tCOMADMIN_E_CANTRECYCLELIBRARYAPPS                                         Handle        = 0x8011080F\n\tCOMADMIN_E_CANTRECYCLESERVICEAPPS                                         Handle        = 0x80110811\n\tCOMADMIN_E_PROCESSALREADYRECYCLED                                         Handle        = 0x80110812\n\tCOMADMIN_E_PAUSEDPROCESSMAYNOTBERECYCLED                                  Handle        = 0x80110813\n\tCOMADMIN_E_CANTMAKEINPROCSERVICE                                          Handle        = 0x80110814\n\tCOMADMIN_E_PROGIDINUSEBYCLSID                                             Handle        = 0x80110815\n\tCOMADMIN_E_DEFAULT_PARTITION_NOT_IN_SET                                   Handle        = 0x80110816\n\tCOMADMIN_E_RECYCLEDPROCESSMAYNOTBEPAUSED                                  Handle        = 0x80110817\n\tCOMADMIN_E_PARTITION_ACCESSDENIED                                         Handle        = 0x80110818\n\tCOMADMIN_E_PARTITION_MSI_ONLY                                             Handle        = 0x80110819\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_1_0_FORMAT                          Handle        = 0x8011081A\n\tCOMADMIN_E_LEGACYCOMPS_NOT_ALLOWED_IN_NONBASE_PARTITIONS                  Handle        = 0x8011081B\n\tCOMADMIN_E_COMP_MOVE_SOURCE                                               Handle        = 0x8011081C\n\tCOMADMIN_E_COMP_MOVE_DEST                                                 Handle        = 0x8011081D\n\tCOMADMIN_E_COMP_MOVE_PRIVATE                                              Handle        = 0x8011081E\n\tCOMADMIN_E_BASEPARTITION_REQUIRED_IN_SET                                  Handle        = 0x8011081F\n\tCOMADMIN_E_CANNOT_ALIAS_EVENTCLASS                                        Handle        = 0x80110820\n\tCOMADMIN_E_PRIVATE_ACCESSDENIED                                           Handle        = 0x80110821\n\tCOMADMIN_E_SAFERINVALID                                                   Handle        = 0x80110822\n\tCOMADMIN_E_REGISTRY_ACCESSDENIED                                          Handle        = 0x80110823\n\tCOMADMIN_E_PARTITIONS_DISABLED                                            Handle        = 0x80110824\n\tWER_S_REPORT_DEBUG                                                        Handle        = 0x001B0000\n\tWER_S_REPORT_UPLOADED                                                     Handle        = 0x001B0001\n\tWER_S_REPORT_QUEUED                                                       Handle        = 0x001B0002\n\tWER_S_DISABLED                                                            Handle        = 0x001B0003\n\tWER_S_SUSPENDED_UPLOAD                                                    Handle        = 0x001B0004\n\tWER_S_DISABLED_QUEUE                                                      Handle        = 0x001B0005\n\tWER_S_DISABLED_ARCHIVE                                                    Handle        = 0x001B0006\n\tWER_S_REPORT_ASYNC                                                        Handle        = 0x001B0007\n\tWER_S_IGNORE_ASSERT_INSTANCE                                              Handle        = 0x001B0008\n\tWER_S_IGNORE_ALL_ASSERTS                                                  Handle        = 0x001B0009\n\tWER_S_ASSERT_CONTINUE                                                     Handle        = 0x001B000A\n\tWER_S_THROTTLED                                                           Handle        = 0x001B000B\n\tWER_S_REPORT_UPLOADED_CAB                                                 Handle        = 0x001B000C\n\tWER_E_CRASH_FAILURE                                                       Handle        = 0x801B8000\n\tWER_E_CANCELED                                                            Handle        = 0x801B8001\n\tWER_E_NETWORK_FAILURE                                                     Handle        = 0x801B8002\n\tWER_E_NOT_INITIALIZED                                                     Handle        = 0x801B8003\n\tWER_E_ALREADY_REPORTING                                                   Handle        = 0x801B8004\n\tWER_E_DUMP_THROTTLED                                                      Handle        = 0x801B8005\n\tWER_E_INSUFFICIENT_CONSENT                                                Handle        = 0x801B8006\n\tWER_E_TOO_HEAVY                                                           Handle        = 0x801B8007\n\tERROR_FLT_IO_COMPLETE                                                     Handle        = 0x001F0001\n\tERROR_FLT_NO_HANDLER_DEFINED                                              Handle        = 0x801F0001\n\tERROR_FLT_CONTEXT_ALREADY_DEFINED                                         Handle        = 0x801F0002\n\tERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST                                    Handle        = 0x801F0003\n\tERROR_FLT_DISALLOW_FAST_IO                                                Handle        = 0x801F0004\n\tERROR_FLT_INVALID_NAME_REQUEST                                            Handle        = 0x801F0005\n\tERROR_FLT_NOT_SAFE_TO_POST_OPERATION                                      Handle        = 0x801F0006\n\tERROR_FLT_NOT_INITIALIZED                                                 Handle        = 0x801F0007\n\tERROR_FLT_FILTER_NOT_READY                                                Handle        = 0x801F0008\n\tERROR_FLT_POST_OPERATION_CLEANUP                                          Handle        = 0x801F0009\n\tERROR_FLT_INTERNAL_ERROR                                                  Handle        = 0x801F000A\n\tERROR_FLT_DELETING_OBJECT                                                 Handle        = 0x801F000B\n\tERROR_FLT_MUST_BE_NONPAGED_POOL                                           Handle        = 0x801F000C\n\tERROR_FLT_DUPLICATE_ENTRY                                                 Handle        = 0x801F000D\n\tERROR_FLT_CBDQ_DISABLED                                                   Handle        = 0x801F000E\n\tERROR_FLT_DO_NOT_ATTACH                                                   Handle        = 0x801F000F\n\tERROR_FLT_DO_NOT_DETACH                                                   Handle        = 0x801F0010\n\tERROR_FLT_INSTANCE_ALTITUDE_COLLISION                                     Handle        = 0x801F0011\n\tERROR_FLT_INSTANCE_NAME_COLLISION                                         Handle        = 0x801F0012\n\tERROR_FLT_FILTER_NOT_FOUND                                                Handle        = 0x801F0013\n\tERROR_FLT_VOLUME_NOT_FOUND                                                Handle        = 0x801F0014\n\tERROR_FLT_INSTANCE_NOT_FOUND                                              Handle        = 0x801F0015\n\tERROR_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                    Handle        = 0x801F0016\n\tERROR_FLT_INVALID_CONTEXT_REGISTRATION                                    Handle        = 0x801F0017\n\tERROR_FLT_NAME_CACHE_MISS                                                 Handle        = 0x801F0018\n\tERROR_FLT_NO_DEVICE_OBJECT                                                Handle        = 0x801F0019\n\tERROR_FLT_VOLUME_ALREADY_MOUNTED                                          Handle        = 0x801F001A\n\tERROR_FLT_ALREADY_ENLISTED                                                Handle        = 0x801F001B\n\tERROR_FLT_CONTEXT_ALREADY_LINKED                                          Handle        = 0x801F001C\n\tERROR_FLT_NO_WAITER_FOR_REPLY                                             Handle        = 0x801F0020\n\tERROR_FLT_REGISTRATION_BUSY                                               Handle        = 0x801F0023\n\tERROR_HUNG_DISPLAY_DRIVER_THREAD                                          Handle        = 0x80260001\n\tDWM_E_COMPOSITIONDISABLED                                                 Handle        = 0x80263001\n\tDWM_E_REMOTING_NOT_SUPPORTED                                              Handle        = 0x80263002\n\tDWM_E_NO_REDIRECTION_SURFACE_AVAILABLE                                    Handle        = 0x80263003\n\tDWM_E_NOT_QUEUING_PRESENTS                                                Handle        = 0x80263004\n\tDWM_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x80263005\n\tDWM_S_GDI_REDIRECTION_SURFACE                                             Handle        = 0x00263005\n\tDWM_E_TEXTURE_TOO_LARGE                                                   Handle        = 0x80263007\n\tDWM_S_GDI_REDIRECTION_SURFACE_BLT_VIA_GDI                                 Handle        = 0x00263008\n\tERROR_MONITOR_NO_DESCRIPTOR                                               Handle        = 0x00261001\n\tERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                   Handle        = 0x00261002\n\tERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                 Handle        = 0xC0261003\n\tERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK                               Handle        = 0xC0261004\n\tERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                           Handle        = 0xC0261005\n\tERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                          Handle        = 0xC0261006\n\tERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                          Handle        = 0xC0261007\n\tERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA                                     Handle        = 0xC0261008\n\tERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK                               Handle        = 0xC0261009\n\tERROR_MONITOR_INVALID_MANUFACTURE_DATE                                    Handle        = 0xC026100A\n\tERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                   Handle        = 0xC0262000\n\tERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                    Handle        = 0xC0262001\n\tERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER                                    Handle        = 0xC0262002\n\tERROR_GRAPHICS_ADAPTER_WAS_RESET                                          Handle        = 0xC0262003\n\tERROR_GRAPHICS_INVALID_DRIVER_MODEL                                       Handle        = 0xC0262004\n\tERROR_GRAPHICS_PRESENT_MODE_CHANGED                                       Handle        = 0xC0262005\n\tERROR_GRAPHICS_PRESENT_OCCLUDED                                           Handle        = 0xC0262006\n\tERROR_GRAPHICS_PRESENT_DENIED                                             Handle        = 0xC0262007\n\tERROR_GRAPHICS_CANNOTCOLORCONVERT                                         Handle        = 0xC0262008\n\tERROR_GRAPHICS_DRIVER_MISMATCH                                            Handle        = 0xC0262009\n\tERROR_GRAPHICS_PARTIAL_DATA_POPULATED                                     Handle        = 0x4026200A\n\tERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED                               Handle        = 0xC026200B\n\tERROR_GRAPHICS_PRESENT_UNOCCLUDED                                         Handle        = 0xC026200C\n\tERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                     Handle        = 0xC026200D\n\tERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                                Handle        = 0xC026200E\n\tERROR_GRAPHICS_PRESENT_INVALID_WINDOW                                     Handle        = 0xC026200F\n\tERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                   Handle        = 0xC0262010\n\tERROR_GRAPHICS_VAIL_STATE_CHANGED                                         Handle        = 0xC0262011\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                         Handle        = 0xC0262012\n\tERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                            Handle        = 0xC0262013\n\tERROR_GRAPHICS_NO_VIDEO_MEMORY                                            Handle        = 0xC0262100\n\tERROR_GRAPHICS_CANT_LOCK_MEMORY                                           Handle        = 0xC0262101\n\tERROR_GRAPHICS_ALLOCATION_BUSY                                            Handle        = 0xC0262102\n\tERROR_GRAPHICS_TOO_MANY_REFERENCES                                        Handle        = 0xC0262103\n\tERROR_GRAPHICS_TRY_AGAIN_LATER                                            Handle        = 0xC0262104\n\tERROR_GRAPHICS_TRY_AGAIN_NOW                                              Handle        = 0xC0262105\n\tERROR_GRAPHICS_ALLOCATION_INVALID                                         Handle        = 0xC0262106\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                           Handle        = 0xC0262107\n\tERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                           Handle        = 0xC0262108\n\tERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                               Handle        = 0xC0262109\n\tERROR_GRAPHICS_INVALID_ALLOCATION_USAGE                                   Handle        = 0xC0262110\n\tERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                              Handle        = 0xC0262111\n\tERROR_GRAPHICS_ALLOCATION_CLOSED                                          Handle        = 0xC0262112\n\tERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE                                Handle        = 0xC0262113\n\tERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE                                  Handle        = 0xC0262114\n\tERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE                                    Handle        = 0xC0262115\n\tERROR_GRAPHICS_ALLOCATION_CONTENT_LOST                                    Handle        = 0xC0262116\n\tERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                    Handle        = 0xC0262200\n\tERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION                                Handle        = 0x40262201\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                     Handle        = 0xC0262300\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                               Handle        = 0xC0262301\n\tERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                     Handle        = 0xC0262302\n\tERROR_GRAPHICS_INVALID_VIDPN                                              Handle        = 0xC0262303\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                               Handle        = 0xC0262304\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                               Handle        = 0xC0262305\n\tERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                               Handle        = 0xC0262306\n\tERROR_GRAPHICS_MODE_NOT_PINNED                                            Handle        = 0x00262307\n\tERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                                Handle        = 0xC0262308\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET                                Handle        = 0xC0262309\n\tERROR_GRAPHICS_INVALID_FREQUENCY                                          Handle        = 0xC026230A\n\tERROR_GRAPHICS_INVALID_ACTIVE_REGION                                      Handle        = 0xC026230B\n\tERROR_GRAPHICS_INVALID_TOTAL_REGION                                       Handle        = 0xC026230C\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                          Handle        = 0xC0262310\n\tERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                          Handle        = 0xC0262311\n\tERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                             Handle        = 0xC0262312\n\tERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                   Handle        = 0xC0262313\n\tERROR_GRAPHICS_MODE_ALREADY_IN_MODESET                                    Handle        = 0xC0262314\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                              Handle        = 0xC0262315\n\tERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                              Handle        = 0xC0262316\n\tERROR_GRAPHICS_SOURCE_ALREADY_IN_SET                                      Handle        = 0xC0262317\n\tERROR_GRAPHICS_TARGET_ALREADY_IN_SET                                      Handle        = 0xC0262318\n\tERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                 Handle        = 0xC0262319\n\tERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                              Handle        = 0xC026231A\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                          Handle        = 0xC026231B\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                             Handle        = 0xC026231C\n\tERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                  Handle        = 0xC026231D\n\tERROR_GRAPHICS_NO_PREFERRED_MODE                                          Handle        = 0x0026231E\n\tERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                              Handle        = 0xC026231F\n\tERROR_GRAPHICS_STALE_MODESET                                              Handle        = 0xC0262320\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                              Handle        = 0xC0262321\n\tERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                                Handle        = 0xC0262322\n\tERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                            Handle        = 0xC0262323\n\tERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                     Handle        = 0xC0262324\n\tERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION            Handle        = 0xC0262325\n\tERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                    Handle        = 0xC0262326\n\tERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                       Handle        = 0xC0262327\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                      Handle        = 0xC0262328\n\tERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                      Handle        = 0xC0262329\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET                               Handle        = 0xC026232A\n\tERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR                                  Handle        = 0xC026232B\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                               Handle        = 0xC026232C\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                           Handle        = 0xC026232D\n\tERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                        Handle        = 0xC026232E\n\tERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                           Handle        = 0xC026232F\n\tERROR_GRAPHICS_RESOURCES_NOT_RELATED                                      Handle        = 0xC0262330\n\tERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262331\n\tERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                   Handle        = 0xC0262332\n\tERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                  Handle        = 0xC0262333\n\tERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER               Handle        = 0xC0262334\n\tERROR_GRAPHICS_NO_VIDPNMGR                                                Handle        = 0xC0262335\n\tERROR_GRAPHICS_NO_ACTIVE_VIDPN                                            Handle        = 0xC0262336\n\tERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY                                       Handle        = 0xC0262337\n\tERROR_GRAPHICS_MONITOR_NOT_CONNECTED                                      Handle        = 0xC0262338\n\tERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262339\n\tERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                                Handle        = 0xC026233A\n\tERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                 Handle        = 0xC026233B\n\tERROR_GRAPHICS_INVALID_STRIDE                                             Handle        = 0xC026233C\n\tERROR_GRAPHICS_INVALID_PIXELFORMAT                                        Handle        = 0xC026233D\n\tERROR_GRAPHICS_INVALID_COLORBASIS                                         Handle        = 0xC026233E\n\tERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                               Handle        = 0xC026233F\n\tERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                     Handle        = 0xC0262340\n\tERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                         Handle        = 0xC0262341\n\tERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                        Handle        = 0xC0262342\n\tERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                   Handle        = 0xC0262343\n\tERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                            Handle        = 0xC0262344\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION               Handle        = 0xC0262345\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED         Handle        = 0xC0262346\n\tERROR_GRAPHICS_INVALID_GAMMA_RAMP                                         Handle        = 0xC0262347\n\tERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                   Handle        = 0xC0262348\n\tERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                                Handle        = 0xC0262349\n\tERROR_GRAPHICS_MODE_NOT_IN_MODESET                                        Handle        = 0xC026234A\n\tERROR_GRAPHICS_DATASET_IS_EMPTY                                           Handle        = 0x0026234B\n\tERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                                Handle        = 0x0026234C\n\tERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON               Handle        = 0xC026234D\n\tERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                  Handle        = 0xC026234E\n\tERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE                                Handle        = 0xC026234F\n\tERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                          Handle        = 0xC0262350\n\tERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED            Handle        = 0x00262351\n\tERROR_GRAPHICS_INVALID_SCANLINE_ORDERING                                  Handle        = 0xC0262352\n\tERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                               Handle        = 0xC0262353\n\tERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                           Handle        = 0xC0262354\n\tERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                                Handle        = 0xC0262355\n\tERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                             Handle        = 0xC0262356\n\tERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                          Handle        = 0xC0262357\n\tERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                  Handle        = 0xC0262358\n\tERROR_GRAPHICS_MAX_NUM_PATHS_REACHED                                      Handle        = 0xC0262359\n\tERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                         Handle        = 0xC026235A\n\tERROR_GRAPHICS_INVALID_CLIENT_TYPE                                        Handle        = 0xC026235B\n\tERROR_GRAPHICS_CLIENTVIDPN_NOT_SET                                        Handle        = 0xC026235C\n\tERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                          Handle        = 0xC0262400\n\tERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                             Handle        = 0xC0262401\n\tERROR_GRAPHICS_UNKNOWN_CHILD_STATUS                                       Handle        = 0x4026242F\n\tERROR_GRAPHICS_NOT_A_LINKED_ADAPTER                                       Handle        = 0xC0262430\n\tERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED                                    Handle        = 0xC0262431\n\tERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                  Handle        = 0xC0262432\n\tERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                    Handle        = 0xC0262433\n\tERROR_GRAPHICS_CHAINLINKS_NOT_STARTED                                     Handle        = 0xC0262434\n\tERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                  Handle        = 0xC0262435\n\tERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                             Handle        = 0xC0262436\n\tERROR_GRAPHICS_LEADLINK_START_DEFERRED                                    Handle        = 0x40262437\n\tERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER                                     Handle        = 0xC0262438\n\tERROR_GRAPHICS_POLLING_TOO_FREQUENTLY                                     Handle        = 0x40262439\n\tERROR_GRAPHICS_START_DEFERRED                                             Handle        = 0x4026243A\n\tERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                                Handle        = 0xC026243B\n\tERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS                                    Handle        = 0x4026243C\n\tERROR_GRAPHICS_OPM_NOT_SUPPORTED                                          Handle        = 0xC0262500\n\tERROR_GRAPHICS_COPP_NOT_SUPPORTED                                         Handle        = 0xC0262501\n\tERROR_GRAPHICS_UAB_NOT_SUPPORTED                                          Handle        = 0xC0262502\n\tERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                           Handle        = 0xC0262503\n\tERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST                                 Handle        = 0xC0262505\n\tERROR_GRAPHICS_OPM_INTERNAL_ERROR                                         Handle        = 0xC026250B\n\tERROR_GRAPHICS_OPM_INVALID_HANDLE                                         Handle        = 0xC026250C\n\tERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                             Handle        = 0xC026250E\n\tERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                  Handle        = 0xC026250F\n\tERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED                                   Handle        = 0xC0262510\n\tERROR_GRAPHICS_PVP_HFS_FAILED                                             Handle        = 0xC0262511\n\tERROR_GRAPHICS_OPM_INVALID_SRM                                            Handle        = 0xC0262512\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                           Handle        = 0xC0262513\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                            Handle        = 0xC0262514\n\tERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                          Handle        = 0xC0262515\n\tERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                     Handle        = 0xC0262516\n\tERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                    Handle        = 0xC0262517\n\tERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                       Handle        = 0xC0262518\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS                          Handle        = 0xC026251A\n\tERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS                        Handle        = 0xC026251B\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS              Handle        = 0xC026251C\n\tERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                            Handle        = 0xC026251D\n\tERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                  Handle        = 0xC026251E\n\tERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS               Handle        = 0xC026251F\n\tERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                                Handle        = 0xC0262520\n\tERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                          Handle        = 0xC0262521\n\tERROR_GRAPHICS_I2C_NOT_SUPPORTED                                          Handle        = 0xC0262580\n\tERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                  Handle        = 0xC0262581\n\tERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                                Handle        = 0xC0262582\n\tERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                   Handle        = 0xC0262583\n\tERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                    Handle        = 0xC0262584\n\tERROR_GRAPHICS_DDCCI_INVALID_DATA                                         Handle        = 0xC0262585\n\tERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE          Handle        = 0xC0262586\n\tERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING                            Handle        = 0xC0262587\n\tERROR_GRAPHICS_MCA_INTERNAL_ERROR                                         Handle        = 0xC0262588\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                              Handle        = 0xC0262589\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                               Handle        = 0xC026258A\n\tERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                             Handle        = 0xC026258B\n\tERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                            Handle        = 0xC026258C\n\tERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                   Handle        = 0xC026258D\n\tERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE     Handle        = 0xC02625D8\n\tERROR_GRAPHICS_MCA_INVALID_VCP_VERSION                                    Handle        = 0xC02625D9\n\tERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION                    Handle        = 0xC02625DA\n\tERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH                                  Handle        = 0xC02625DB\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION                               Handle        = 0xC02625DC\n\tERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED                       Handle        = 0xC02625DE\n\tERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE                          Handle        = 0xC02625DF\n\tERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                             Handle        = 0xC02625E0\n\tERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                      Handle        = 0xC02625E1\n\tERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                     Handle        = 0xC02625E2\n\tERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                            Handle        = 0xC02625E3\n\tERROR_GRAPHICS_INVALID_POINTER                                            Handle        = 0xC02625E4\n\tERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                   Handle        = 0xC02625E5\n\tERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                  Handle        = 0xC02625E6\n\tERROR_GRAPHICS_INTERNAL_ERROR                                             Handle        = 0xC02625E7\n\tERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                            Handle        = 0xC02605E8\n\tNAP_E_INVALID_PACKET                                                      Handle        = 0x80270001\n\tNAP_E_MISSING_SOH                                                         Handle        = 0x80270002\n\tNAP_E_CONFLICTING_ID                                                      Handle        = 0x80270003\n\tNAP_E_NO_CACHED_SOH                                                       Handle        = 0x80270004\n\tNAP_E_STILL_BOUND                                                         Handle        = 0x80270005\n\tNAP_E_NOT_REGISTERED                                                      Handle        = 0x80270006\n\tNAP_E_NOT_INITIALIZED                                                     Handle        = 0x80270007\n\tNAP_E_MISMATCHED_ID                                                       Handle        = 0x80270008\n\tNAP_E_NOT_PENDING                                                         Handle        = 0x80270009\n\tNAP_E_ID_NOT_FOUND                                                        Handle        = 0x8027000A\n\tNAP_E_MAXSIZE_TOO_SMALL                                                   Handle        = 0x8027000B\n\tNAP_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x8027000C\n\tNAP_S_CERT_ALREADY_PRESENT                                                Handle        = 0x0027000D\n\tNAP_E_ENTITY_DISABLED                                                     Handle        = 0x8027000E\n\tNAP_E_NETSH_GROUPPOLICY_ERROR                                             Handle        = 0x8027000F\n\tNAP_E_TOO_MANY_CALLS                                                      Handle        = 0x80270010\n\tNAP_E_SHV_CONFIG_EXISTED                                                  Handle        = 0x80270011\n\tNAP_E_SHV_CONFIG_NOT_FOUND                                                Handle        = 0x80270012\n\tNAP_E_SHV_TIMEOUT                                                         Handle        = 0x80270013\n\tTPM_E_ERROR_MASK                                                          Handle        = 0x80280000\n\tTPM_E_AUTHFAIL                                                            Handle        = 0x80280001\n\tTPM_E_BADINDEX                                                            Handle        = 0x80280002\n\tTPM_E_BAD_PARAMETER                                                       Handle        = 0x80280003\n\tTPM_E_AUDITFAILURE                                                        Handle        = 0x80280004\n\tTPM_E_CLEAR_DISABLED                                                      Handle        = 0x80280005\n\tTPM_E_DEACTIVATED                                                         Handle        = 0x80280006\n\tTPM_E_DISABLED                                                            Handle        = 0x80280007\n\tTPM_E_DISABLED_CMD                                                        Handle        = 0x80280008\n\tTPM_E_FAIL                                                                Handle        = 0x80280009\n\tTPM_E_BAD_ORDINAL                                                         Handle        = 0x8028000A\n\tTPM_E_INSTALL_DISABLED                                                    Handle        = 0x8028000B\n\tTPM_E_INVALID_KEYHANDLE                                                   Handle        = 0x8028000C\n\tTPM_E_KEYNOTFOUND                                                         Handle        = 0x8028000D\n\tTPM_E_INAPPROPRIATE_ENC                                                   Handle        = 0x8028000E\n\tTPM_E_MIGRATEFAIL                                                         Handle        = 0x8028000F\n\tTPM_E_INVALID_PCR_INFO                                                    Handle        = 0x80280010\n\tTPM_E_NOSPACE                                                             Handle        = 0x80280011\n\tTPM_E_NOSRK                                                               Handle        = 0x80280012\n\tTPM_E_NOTSEALED_BLOB                                                      Handle        = 0x80280013\n\tTPM_E_OWNER_SET                                                           Handle        = 0x80280014\n\tTPM_E_RESOURCES                                                           Handle        = 0x80280015\n\tTPM_E_SHORTRANDOM                                                         Handle        = 0x80280016\n\tTPM_E_SIZE                                                                Handle        = 0x80280017\n\tTPM_E_WRONGPCRVAL                                                         Handle        = 0x80280018\n\tTPM_E_BAD_PARAM_SIZE                                                      Handle        = 0x80280019\n\tTPM_E_SHA_THREAD                                                          Handle        = 0x8028001A\n\tTPM_E_SHA_ERROR                                                           Handle        = 0x8028001B\n\tTPM_E_FAILEDSELFTEST                                                      Handle        = 0x8028001C\n\tTPM_E_AUTH2FAIL                                                           Handle        = 0x8028001D\n\tTPM_E_BADTAG                                                              Handle        = 0x8028001E\n\tTPM_E_IOERROR                                                             Handle        = 0x8028001F\n\tTPM_E_ENCRYPT_ERROR                                                       Handle        = 0x80280020\n\tTPM_E_DECRYPT_ERROR                                                       Handle        = 0x80280021\n\tTPM_E_INVALID_AUTHHANDLE                                                  Handle        = 0x80280022\n\tTPM_E_NO_ENDORSEMENT                                                      Handle        = 0x80280023\n\tTPM_E_INVALID_KEYUSAGE                                                    Handle        = 0x80280024\n\tTPM_E_WRONG_ENTITYTYPE                                                    Handle        = 0x80280025\n\tTPM_E_INVALID_POSTINIT                                                    Handle        = 0x80280026\n\tTPM_E_INAPPROPRIATE_SIG                                                   Handle        = 0x80280027\n\tTPM_E_BAD_KEY_PROPERTY                                                    Handle        = 0x80280028\n\tTPM_E_BAD_MIGRATION                                                       Handle        = 0x80280029\n\tTPM_E_BAD_SCHEME                                                          Handle        = 0x8028002A\n\tTPM_E_BAD_DATASIZE                                                        Handle        = 0x8028002B\n\tTPM_E_BAD_MODE                                                            Handle        = 0x8028002C\n\tTPM_E_BAD_PRESENCE                                                        Handle        = 0x8028002D\n\tTPM_E_BAD_VERSION                                                         Handle        = 0x8028002E\n\tTPM_E_NO_WRAP_TRANSPORT                                                   Handle        = 0x8028002F\n\tTPM_E_AUDITFAIL_UNSUCCESSFUL                                              Handle        = 0x80280030\n\tTPM_E_AUDITFAIL_SUCCESSFUL                                                Handle        = 0x80280031\n\tTPM_E_NOTRESETABLE                                                        Handle        = 0x80280032\n\tTPM_E_NOTLOCAL                                                            Handle        = 0x80280033\n\tTPM_E_BAD_TYPE                                                            Handle        = 0x80280034\n\tTPM_E_INVALID_RESOURCE                                                    Handle        = 0x80280035\n\tTPM_E_NOTFIPS                                                             Handle        = 0x80280036\n\tTPM_E_INVALID_FAMILY                                                      Handle        = 0x80280037\n\tTPM_E_NO_NV_PERMISSION                                                    Handle        = 0x80280038\n\tTPM_E_REQUIRES_SIGN                                                       Handle        = 0x80280039\n\tTPM_E_KEY_NOTSUPPORTED                                                    Handle        = 0x8028003A\n\tTPM_E_AUTH_CONFLICT                                                       Handle        = 0x8028003B\n\tTPM_E_AREA_LOCKED                                                         Handle        = 0x8028003C\n\tTPM_E_BAD_LOCALITY                                                        Handle        = 0x8028003D\n\tTPM_E_READ_ONLY                                                           Handle        = 0x8028003E\n\tTPM_E_PER_NOWRITE                                                         Handle        = 0x8028003F\n\tTPM_E_FAMILYCOUNT                                                         Handle        = 0x80280040\n\tTPM_E_WRITE_LOCKED                                                        Handle        = 0x80280041\n\tTPM_E_BAD_ATTRIBUTES                                                      Handle        = 0x80280042\n\tTPM_E_INVALID_STRUCTURE                                                   Handle        = 0x80280043\n\tTPM_E_KEY_OWNER_CONTROL                                                   Handle        = 0x80280044\n\tTPM_E_BAD_COUNTER                                                         Handle        = 0x80280045\n\tTPM_E_NOT_FULLWRITE                                                       Handle        = 0x80280046\n\tTPM_E_CONTEXT_GAP                                                         Handle        = 0x80280047\n\tTPM_E_MAXNVWRITES                                                         Handle        = 0x80280048\n\tTPM_E_NOOPERATOR                                                          Handle        = 0x80280049\n\tTPM_E_RESOURCEMISSING                                                     Handle        = 0x8028004A\n\tTPM_E_DELEGATE_LOCK                                                       Handle        = 0x8028004B\n\tTPM_E_DELEGATE_FAMILY                                                     Handle        = 0x8028004C\n\tTPM_E_DELEGATE_ADMIN                                                      Handle        = 0x8028004D\n\tTPM_E_TRANSPORT_NOTEXCLUSIVE                                              Handle        = 0x8028004E\n\tTPM_E_OWNER_CONTROL                                                       Handle        = 0x8028004F\n\tTPM_E_DAA_RESOURCES                                                       Handle        = 0x80280050\n\tTPM_E_DAA_INPUT_DATA0                                                     Handle        = 0x80280051\n\tTPM_E_DAA_INPUT_DATA1                                                     Handle        = 0x80280052\n\tTPM_E_DAA_ISSUER_SETTINGS                                                 Handle        = 0x80280053\n\tTPM_E_DAA_TPM_SETTINGS                                                    Handle        = 0x80280054\n\tTPM_E_DAA_STAGE                                                           Handle        = 0x80280055\n\tTPM_E_DAA_ISSUER_VALIDITY                                                 Handle        = 0x80280056\n\tTPM_E_DAA_WRONG_W                                                         Handle        = 0x80280057\n\tTPM_E_BAD_HANDLE                                                          Handle        = 0x80280058\n\tTPM_E_BAD_DELEGATE                                                        Handle        = 0x80280059\n\tTPM_E_BADCONTEXT                                                          Handle        = 0x8028005A\n\tTPM_E_TOOMANYCONTEXTS                                                     Handle        = 0x8028005B\n\tTPM_E_MA_TICKET_SIGNATURE                                                 Handle        = 0x8028005C\n\tTPM_E_MA_DESTINATION                                                      Handle        = 0x8028005D\n\tTPM_E_MA_SOURCE                                                           Handle        = 0x8028005E\n\tTPM_E_MA_AUTHORITY                                                        Handle        = 0x8028005F\n\tTPM_E_PERMANENTEK                                                         Handle        = 0x80280061\n\tTPM_E_BAD_SIGNATURE                                                       Handle        = 0x80280062\n\tTPM_E_NOCONTEXTSPACE                                                      Handle        = 0x80280063\n\tTPM_20_E_ASYMMETRIC                                                       Handle        = 0x80280081\n\tTPM_20_E_ATTRIBUTES                                                       Handle        = 0x80280082\n\tTPM_20_E_HASH                                                             Handle        = 0x80280083\n\tTPM_20_E_VALUE                                                            Handle        = 0x80280084\n\tTPM_20_E_HIERARCHY                                                        Handle        = 0x80280085\n\tTPM_20_E_KEY_SIZE                                                         Handle        = 0x80280087\n\tTPM_20_E_MGF                                                              Handle        = 0x80280088\n\tTPM_20_E_MODE                                                             Handle        = 0x80280089\n\tTPM_20_E_TYPE                                                             Handle        = 0x8028008A\n\tTPM_20_E_HANDLE                                                           Handle        = 0x8028008B\n\tTPM_20_E_KDF                                                              Handle        = 0x8028008C\n\tTPM_20_E_RANGE                                                            Handle        = 0x8028008D\n\tTPM_20_E_AUTH_FAIL                                                        Handle        = 0x8028008E\n\tTPM_20_E_NONCE                                                            Handle        = 0x8028008F\n\tTPM_20_E_PP                                                               Handle        = 0x80280090\n\tTPM_20_E_SCHEME                                                           Handle        = 0x80280092\n\tTPM_20_E_SIZE                                                             Handle        = 0x80280095\n\tTPM_20_E_SYMMETRIC                                                        Handle        = 0x80280096\n\tTPM_20_E_TAG                                                              Handle        = 0x80280097\n\tTPM_20_E_SELECTOR                                                         Handle        = 0x80280098\n\tTPM_20_E_INSUFFICIENT                                                     Handle        = 0x8028009A\n\tTPM_20_E_SIGNATURE                                                        Handle        = 0x8028009B\n\tTPM_20_E_KEY                                                              Handle        = 0x8028009C\n\tTPM_20_E_POLICY_FAIL                                                      Handle        = 0x8028009D\n\tTPM_20_E_INTEGRITY                                                        Handle        = 0x8028009F\n\tTPM_20_E_TICKET                                                           Handle        = 0x802800A0\n\tTPM_20_E_RESERVED_BITS                                                    Handle        = 0x802800A1\n\tTPM_20_E_BAD_AUTH                                                         Handle        = 0x802800A2\n\tTPM_20_E_EXPIRED                                                          Handle        = 0x802800A3\n\tTPM_20_E_POLICY_CC                                                        Handle        = 0x802800A4\n\tTPM_20_E_BINDING                                                          Handle        = 0x802800A5\n\tTPM_20_E_CURVE                                                            Handle        = 0x802800A6\n\tTPM_20_E_ECC_POINT                                                        Handle        = 0x802800A7\n\tTPM_20_E_INITIALIZE                                                       Handle        = 0x80280100\n\tTPM_20_E_FAILURE                                                          Handle        = 0x80280101\n\tTPM_20_E_SEQUENCE                                                         Handle        = 0x80280103\n\tTPM_20_E_PRIVATE                                                          Handle        = 0x8028010B\n\tTPM_20_E_HMAC                                                             Handle        = 0x80280119\n\tTPM_20_E_DISABLED                                                         Handle        = 0x80280120\n\tTPM_20_E_EXCLUSIVE                                                        Handle        = 0x80280121\n\tTPM_20_E_ECC_CURVE                                                        Handle        = 0x80280123\n\tTPM_20_E_AUTH_TYPE                                                        Handle        = 0x80280124\n\tTPM_20_E_AUTH_MISSING                                                     Handle        = 0x80280125\n\tTPM_20_E_POLICY                                                           Handle        = 0x80280126\n\tTPM_20_E_PCR                                                              Handle        = 0x80280127\n\tTPM_20_E_PCR_CHANGED                                                      Handle        = 0x80280128\n\tTPM_20_E_UPGRADE                                                          Handle        = 0x8028012D\n\tTPM_20_E_TOO_MANY_CONTEXTS                                                Handle        = 0x8028012E\n\tTPM_20_E_AUTH_UNAVAILABLE                                                 Handle        = 0x8028012F\n\tTPM_20_E_REBOOT                                                           Handle        = 0x80280130\n\tTPM_20_E_UNBALANCED                                                       Handle        = 0x80280131\n\tTPM_20_E_COMMAND_SIZE                                                     Handle        = 0x80280142\n\tTPM_20_E_COMMAND_CODE                                                     Handle        = 0x80280143\n\tTPM_20_E_AUTHSIZE                                                         Handle        = 0x80280144\n\tTPM_20_E_AUTH_CONTEXT                                                     Handle        = 0x80280145\n\tTPM_20_E_NV_RANGE                                                         Handle        = 0x80280146\n\tTPM_20_E_NV_SIZE                                                          Handle        = 0x80280147\n\tTPM_20_E_NV_LOCKED                                                        Handle        = 0x80280148\n\tTPM_20_E_NV_AUTHORIZATION                                                 Handle        = 0x80280149\n\tTPM_20_E_NV_UNINITIALIZED                                                 Handle        = 0x8028014A\n\tTPM_20_E_NV_SPACE                                                         Handle        = 0x8028014B\n\tTPM_20_E_NV_DEFINED                                                       Handle        = 0x8028014C\n\tTPM_20_E_BAD_CONTEXT                                                      Handle        = 0x80280150\n\tTPM_20_E_CPHASH                                                           Handle        = 0x80280151\n\tTPM_20_E_PARENT                                                           Handle        = 0x80280152\n\tTPM_20_E_NEEDS_TEST                                                       Handle        = 0x80280153\n\tTPM_20_E_NO_RESULT                                                        Handle        = 0x80280154\n\tTPM_20_E_SENSITIVE                                                        Handle        = 0x80280155\n\tTPM_E_COMMAND_BLOCKED                                                     Handle        = 0x80280400\n\tTPM_E_INVALID_HANDLE                                                      Handle        = 0x80280401\n\tTPM_E_DUPLICATE_VHANDLE                                                   Handle        = 0x80280402\n\tTPM_E_EMBEDDED_COMMAND_BLOCKED                                            Handle        = 0x80280403\n\tTPM_E_EMBEDDED_COMMAND_UNSUPPORTED                                        Handle        = 0x80280404\n\tTPM_E_RETRY                                                               Handle        = 0x80280800\n\tTPM_E_NEEDS_SELFTEST                                                      Handle        = 0x80280801\n\tTPM_E_DOING_SELFTEST                                                      Handle        = 0x80280802\n\tTPM_E_DEFEND_LOCK_RUNNING                                                 Handle        = 0x80280803\n\tTPM_20_E_CONTEXT_GAP                                                      Handle        = 0x80280901\n\tTPM_20_E_OBJECT_MEMORY                                                    Handle        = 0x80280902\n\tTPM_20_E_SESSION_MEMORY                                                   Handle        = 0x80280903\n\tTPM_20_E_MEMORY                                                           Handle        = 0x80280904\n\tTPM_20_E_SESSION_HANDLES                                                  Handle        = 0x80280905\n\tTPM_20_E_OBJECT_HANDLES                                                   Handle        = 0x80280906\n\tTPM_20_E_LOCALITY                                                         Handle        = 0x80280907\n\tTPM_20_E_YIELDED                                                          Handle        = 0x80280908\n\tTPM_20_E_CANCELED                                                         Handle        = 0x80280909\n\tTPM_20_E_TESTING                                                          Handle        = 0x8028090A\n\tTPM_20_E_NV_RATE                                                          Handle        = 0x80280920\n\tTPM_20_E_LOCKOUT                                                          Handle        = 0x80280921\n\tTPM_20_E_RETRY                                                            Handle        = 0x80280922\n\tTPM_20_E_NV_UNAVAILABLE                                                   Handle        = 0x80280923\n\tTBS_E_INTERNAL_ERROR                                                      Handle        = 0x80284001\n\tTBS_E_BAD_PARAMETER                                                       Handle        = 0x80284002\n\tTBS_E_INVALID_OUTPUT_POINTER                                              Handle        = 0x80284003\n\tTBS_E_INVALID_CONTEXT                                                     Handle        = 0x80284004\n\tTBS_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80284005\n\tTBS_E_IOERROR                                                             Handle        = 0x80284006\n\tTBS_E_INVALID_CONTEXT_PARAM                                               Handle        = 0x80284007\n\tTBS_E_SERVICE_NOT_RUNNING                                                 Handle        = 0x80284008\n\tTBS_E_TOO_MANY_TBS_CONTEXTS                                               Handle        = 0x80284009\n\tTBS_E_TOO_MANY_RESOURCES                                                  Handle        = 0x8028400A\n\tTBS_E_SERVICE_START_PENDING                                               Handle        = 0x8028400B\n\tTBS_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x8028400C\n\tTBS_E_COMMAND_CANCELED                                                    Handle        = 0x8028400D\n\tTBS_E_BUFFER_TOO_LARGE                                                    Handle        = 0x8028400E\n\tTBS_E_TPM_NOT_FOUND                                                       Handle        = 0x8028400F\n\tTBS_E_SERVICE_DISABLED                                                    Handle        = 0x80284010\n\tTBS_E_NO_EVENT_LOG                                                        Handle        = 0x80284011\n\tTBS_E_ACCESS_DENIED                                                       Handle        = 0x80284012\n\tTBS_E_PROVISIONING_NOT_ALLOWED                                            Handle        = 0x80284013\n\tTBS_E_PPI_FUNCTION_UNSUPPORTED                                            Handle        = 0x80284014\n\tTBS_E_OWNERAUTH_NOT_FOUND                                                 Handle        = 0x80284015\n\tTBS_E_PROVISIONING_INCOMPLETE                                             Handle        = 0x80284016\n\tTPMAPI_E_INVALID_STATE                                                    Handle        = 0x80290100\n\tTPMAPI_E_NOT_ENOUGH_DATA                                                  Handle        = 0x80290101\n\tTPMAPI_E_TOO_MUCH_DATA                                                    Handle        = 0x80290102\n\tTPMAPI_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290103\n\tTPMAPI_E_INVALID_PARAMETER                                                Handle        = 0x80290104\n\tTPMAPI_E_OUT_OF_MEMORY                                                    Handle        = 0x80290105\n\tTPMAPI_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290106\n\tTPMAPI_E_INTERNAL_ERROR                                                   Handle        = 0x80290107\n\tTPMAPI_E_ACCESS_DENIED                                                    Handle        = 0x80290108\n\tTPMAPI_E_AUTHORIZATION_FAILED                                             Handle        = 0x80290109\n\tTPMAPI_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x8029010A\n\tTPMAPI_E_TBS_COMMUNICATION_ERROR                                          Handle        = 0x8029010B\n\tTPMAPI_E_TPM_COMMAND_ERROR                                                Handle        = 0x8029010C\n\tTPMAPI_E_MESSAGE_TOO_LARGE                                                Handle        = 0x8029010D\n\tTPMAPI_E_INVALID_ENCODING                                                 Handle        = 0x8029010E\n\tTPMAPI_E_INVALID_KEY_SIZE                                                 Handle        = 0x8029010F\n\tTPMAPI_E_ENCRYPTION_FAILED                                                Handle        = 0x80290110\n\tTPMAPI_E_INVALID_KEY_PARAMS                                               Handle        = 0x80290111\n\tTPMAPI_E_INVALID_MIGRATION_AUTHORIZATION_BLOB                             Handle        = 0x80290112\n\tTPMAPI_E_INVALID_PCR_INDEX                                                Handle        = 0x80290113\n\tTPMAPI_E_INVALID_DELEGATE_BLOB                                            Handle        = 0x80290114\n\tTPMAPI_E_INVALID_CONTEXT_PARAMS                                           Handle        = 0x80290115\n\tTPMAPI_E_INVALID_KEY_BLOB                                                 Handle        = 0x80290116\n\tTPMAPI_E_INVALID_PCR_DATA                                                 Handle        = 0x80290117\n\tTPMAPI_E_INVALID_OWNER_AUTH                                               Handle        = 0x80290118\n\tTPMAPI_E_FIPS_RNG_CHECK_FAILED                                            Handle        = 0x80290119\n\tTPMAPI_E_EMPTY_TCG_LOG                                                    Handle        = 0x8029011A\n\tTPMAPI_E_INVALID_TCG_LOG_ENTRY                                            Handle        = 0x8029011B\n\tTPMAPI_E_TCG_SEPARATOR_ABSENT                                             Handle        = 0x8029011C\n\tTPMAPI_E_TCG_INVALID_DIGEST_ENTRY                                         Handle        = 0x8029011D\n\tTPMAPI_E_POLICY_DENIES_OPERATION                                          Handle        = 0x8029011E\n\tTPMAPI_E_NV_BITS_NOT_DEFINED                                              Handle        = 0x8029011F\n\tTPMAPI_E_NV_BITS_NOT_READY                                                Handle        = 0x80290120\n\tTPMAPI_E_SEALING_KEY_NOT_AVAILABLE                                        Handle        = 0x80290121\n\tTPMAPI_E_NO_AUTHORIZATION_CHAIN_FOUND                                     Handle        = 0x80290122\n\tTPMAPI_E_SVN_COUNTER_NOT_AVAILABLE                                        Handle        = 0x80290123\n\tTPMAPI_E_OWNER_AUTH_NOT_NULL                                              Handle        = 0x80290124\n\tTPMAPI_E_ENDORSEMENT_AUTH_NOT_NULL                                        Handle        = 0x80290125\n\tTPMAPI_E_AUTHORIZATION_REVOKED                                            Handle        = 0x80290126\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_KEY                                      Handle        = 0x80290127\n\tTPMAPI_E_AUTHORIZING_KEY_NOT_SUPPORTED                                    Handle        = 0x80290128\n\tTPMAPI_E_INVALID_AUTHORIZATION_SIGNATURE                                  Handle        = 0x80290129\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_POLICY                                   Handle        = 0x8029012A\n\tTPMAPI_E_MALFORMED_AUTHORIZATION_OTHER                                    Handle        = 0x8029012B\n\tTPMAPI_E_SEALING_KEY_CHANGED                                              Handle        = 0x8029012C\n\tTBSIMP_E_BUFFER_TOO_SMALL                                                 Handle        = 0x80290200\n\tTBSIMP_E_CLEANUP_FAILED                                                   Handle        = 0x80290201\n\tTBSIMP_E_INVALID_CONTEXT_HANDLE                                           Handle        = 0x80290202\n\tTBSIMP_E_INVALID_CONTEXT_PARAM                                            Handle        = 0x80290203\n\tTBSIMP_E_TPM_ERROR                                                        Handle        = 0x80290204\n\tTBSIMP_E_HASH_BAD_KEY                                                     Handle        = 0x80290205\n\tTBSIMP_E_DUPLICATE_VHANDLE                                                Handle        = 0x80290206\n\tTBSIMP_E_INVALID_OUTPUT_POINTER                                           Handle        = 0x80290207\n\tTBSIMP_E_INVALID_PARAMETER                                                Handle        = 0x80290208\n\tTBSIMP_E_RPC_INIT_FAILED                                                  Handle        = 0x80290209\n\tTBSIMP_E_SCHEDULER_NOT_RUNNING                                            Handle        = 0x8029020A\n\tTBSIMP_E_COMMAND_CANCELED                                                 Handle        = 0x8029020B\n\tTBSIMP_E_OUT_OF_MEMORY                                                    Handle        = 0x8029020C\n\tTBSIMP_E_LIST_NO_MORE_ITEMS                                               Handle        = 0x8029020D\n\tTBSIMP_E_LIST_NOT_FOUND                                                   Handle        = 0x8029020E\n\tTBSIMP_E_NOT_ENOUGH_SPACE                                                 Handle        = 0x8029020F\n\tTBSIMP_E_NOT_ENOUGH_TPM_CONTEXTS                                          Handle        = 0x80290210\n\tTBSIMP_E_COMMAND_FAILED                                                   Handle        = 0x80290211\n\tTBSIMP_E_UNKNOWN_ORDINAL                                                  Handle        = 0x80290212\n\tTBSIMP_E_RESOURCE_EXPIRED                                                 Handle        = 0x80290213\n\tTBSIMP_E_INVALID_RESOURCE                                                 Handle        = 0x80290214\n\tTBSIMP_E_NOTHING_TO_UNLOAD                                                Handle        = 0x80290215\n\tTBSIMP_E_HASH_TABLE_FULL                                                  Handle        = 0x80290216\n\tTBSIMP_E_TOO_MANY_TBS_CONTEXTS                                            Handle        = 0x80290217\n\tTBSIMP_E_TOO_MANY_RESOURCES                                               Handle        = 0x80290218\n\tTBSIMP_E_PPI_NOT_SUPPORTED                                                Handle        = 0x80290219\n\tTBSIMP_E_TPM_INCOMPATIBLE                                                 Handle        = 0x8029021A\n\tTBSIMP_E_NO_EVENT_LOG                                                     Handle        = 0x8029021B\n\tTPM_E_PPI_ACPI_FAILURE                                                    Handle        = 0x80290300\n\tTPM_E_PPI_USER_ABORT                                                      Handle        = 0x80290301\n\tTPM_E_PPI_BIOS_FAILURE                                                    Handle        = 0x80290302\n\tTPM_E_PPI_NOT_SUPPORTED                                                   Handle        = 0x80290303\n\tTPM_E_PPI_BLOCKED_IN_BIOS                                                 Handle        = 0x80290304\n\tTPM_E_PCP_ERROR_MASK                                                      Handle        = 0x80290400\n\tTPM_E_PCP_DEVICE_NOT_READY                                                Handle        = 0x80290401\n\tTPM_E_PCP_INVALID_HANDLE                                                  Handle        = 0x80290402\n\tTPM_E_PCP_INVALID_PARAMETER                                               Handle        = 0x80290403\n\tTPM_E_PCP_FLAG_NOT_SUPPORTED                                              Handle        = 0x80290404\n\tTPM_E_PCP_NOT_SUPPORTED                                                   Handle        = 0x80290405\n\tTPM_E_PCP_BUFFER_TOO_SMALL                                                Handle        = 0x80290406\n\tTPM_E_PCP_INTERNAL_ERROR                                                  Handle        = 0x80290407\n\tTPM_E_PCP_AUTHENTICATION_FAILED                                           Handle        = 0x80290408\n\tTPM_E_PCP_AUTHENTICATION_IGNORED                                          Handle        = 0x80290409\n\tTPM_E_PCP_POLICY_NOT_FOUND                                                Handle        = 0x8029040A\n\tTPM_E_PCP_PROFILE_NOT_FOUND                                               Handle        = 0x8029040B\n\tTPM_E_PCP_VALIDATION_FAILED                                               Handle        = 0x8029040C\n\tTPM_E_PCP_WRONG_PARENT                                                    Handle        = 0x8029040E\n\tTPM_E_KEY_NOT_LOADED                                                      Handle        = 0x8029040F\n\tTPM_E_NO_KEY_CERTIFICATION                                                Handle        = 0x80290410\n\tTPM_E_KEY_NOT_FINALIZED                                                   Handle        = 0x80290411\n\tTPM_E_ATTESTATION_CHALLENGE_NOT_SET                                       Handle        = 0x80290412\n\tTPM_E_NOT_PCR_BOUND                                                       Handle        = 0x80290413\n\tTPM_E_KEY_ALREADY_FINALIZED                                               Handle        = 0x80290414\n\tTPM_E_KEY_USAGE_POLICY_NOT_SUPPORTED                                      Handle        = 0x80290415\n\tTPM_E_KEY_USAGE_POLICY_INVALID                                            Handle        = 0x80290416\n\tTPM_E_SOFT_KEY_ERROR                                                      Handle        = 0x80290417\n\tTPM_E_KEY_NOT_AUTHENTICATED                                               Handle        = 0x80290418\n\tTPM_E_PCP_KEY_NOT_AIK                                                     Handle        = 0x80290419\n\tTPM_E_KEY_NOT_SIGNING_KEY                                                 Handle        = 0x8029041A\n\tTPM_E_LOCKED_OUT                                                          Handle        = 0x8029041B\n\tTPM_E_CLAIM_TYPE_NOT_SUPPORTED                                            Handle        = 0x8029041C\n\tTPM_E_VERSION_NOT_SUPPORTED                                               Handle        = 0x8029041D\n\tTPM_E_BUFFER_LENGTH_MISMATCH                                              Handle        = 0x8029041E\n\tTPM_E_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                    Handle        = 0x8029041F\n\tTPM_E_PCP_TICKET_MISSING                                                  Handle        = 0x80290420\n\tTPM_E_PCP_RAW_POLICY_NOT_SUPPORTED                                        Handle        = 0x80290421\n\tTPM_E_PCP_KEY_HANDLE_INVALIDATED                                          Handle        = 0x80290422\n\tTPM_E_PCP_UNSUPPORTED_PSS_SALT                                            Handle        = 0x40290423\n\tTPM_E_ZERO_EXHAUST_ENABLED                                                Handle        = 0x80290500\n\tPLA_E_DCS_NOT_FOUND                                                       Handle        = 0x80300002\n\tPLA_E_DCS_IN_USE                                                          Handle        = 0x803000AA\n\tPLA_E_TOO_MANY_FOLDERS                                                    Handle        = 0x80300045\n\tPLA_E_NO_MIN_DISK                                                         Handle        = 0x80300070\n\tPLA_E_DCS_ALREADY_EXISTS                                                  Handle        = 0x803000B7\n\tPLA_S_PROPERTY_IGNORED                                                    Handle        = 0x00300100\n\tPLA_E_PROPERTY_CONFLICT                                                   Handle        = 0x80300101\n\tPLA_E_DCS_SINGLETON_REQUIRED                                              Handle        = 0x80300102\n\tPLA_E_CREDENTIALS_REQUIRED                                                Handle        = 0x80300103\n\tPLA_E_DCS_NOT_RUNNING                                                     Handle        = 0x80300104\n\tPLA_E_CONFLICT_INCL_EXCL_API                                              Handle        = 0x80300105\n\tPLA_E_NETWORK_EXE_NOT_VALID                                               Handle        = 0x80300106\n\tPLA_E_EXE_ALREADY_CONFIGURED                                              Handle        = 0x80300107\n\tPLA_E_EXE_PATH_NOT_VALID                                                  Handle        = 0x80300108\n\tPLA_E_DC_ALREADY_EXISTS                                                   Handle        = 0x80300109\n\tPLA_E_DCS_START_WAIT_TIMEOUT                                              Handle        = 0x8030010A\n\tPLA_E_DC_START_WAIT_TIMEOUT                                               Handle        = 0x8030010B\n\tPLA_E_REPORT_WAIT_TIMEOUT                                                 Handle        = 0x8030010C\n\tPLA_E_NO_DUPLICATES                                                       Handle        = 0x8030010D\n\tPLA_E_EXE_FULL_PATH_REQUIRED                                              Handle        = 0x8030010E\n\tPLA_E_INVALID_SESSION_NAME                                                Handle        = 0x8030010F\n\tPLA_E_PLA_CHANNEL_NOT_ENABLED                                             Handle        = 0x80300110\n\tPLA_E_TASKSCHED_CHANNEL_NOT_ENABLED                                       Handle        = 0x80300111\n\tPLA_E_RULES_MANAGER_FAILED                                                Handle        = 0x80300112\n\tPLA_E_CABAPI_FAILURE                                                      Handle        = 0x80300113\n\tFVE_E_LOCKED_VOLUME                                                       Handle        = 0x80310000\n\tFVE_E_NOT_ENCRYPTED                                                       Handle        = 0x80310001\n\tFVE_E_NO_TPM_BIOS                                                         Handle        = 0x80310002\n\tFVE_E_NO_MBR_METRIC                                                       Handle        = 0x80310003\n\tFVE_E_NO_BOOTSECTOR_METRIC                                                Handle        = 0x80310004\n\tFVE_E_NO_BOOTMGR_METRIC                                                   Handle        = 0x80310005\n\tFVE_E_WRONG_BOOTMGR                                                       Handle        = 0x80310006\n\tFVE_E_SECURE_KEY_REQUIRED                                                 Handle        = 0x80310007\n\tFVE_E_NOT_ACTIVATED                                                       Handle        = 0x80310008\n\tFVE_E_ACTION_NOT_ALLOWED                                                  Handle        = 0x80310009\n\tFVE_E_AD_SCHEMA_NOT_INSTALLED                                             Handle        = 0x8031000A\n\tFVE_E_AD_INVALID_DATATYPE                                                 Handle        = 0x8031000B\n\tFVE_E_AD_INVALID_DATASIZE                                                 Handle        = 0x8031000C\n\tFVE_E_AD_NO_VALUES                                                        Handle        = 0x8031000D\n\tFVE_E_AD_ATTR_NOT_SET                                                     Handle        = 0x8031000E\n\tFVE_E_AD_GUID_NOT_FOUND                                                   Handle        = 0x8031000F\n\tFVE_E_BAD_INFORMATION                                                     Handle        = 0x80310010\n\tFVE_E_TOO_SMALL                                                           Handle        = 0x80310011\n\tFVE_E_SYSTEM_VOLUME                                                       Handle        = 0x80310012\n\tFVE_E_FAILED_WRONG_FS                                                     Handle        = 0x80310013\n\tFVE_E_BAD_PARTITION_SIZE                                                  Handle        = 0x80310014\n\tFVE_E_NOT_SUPPORTED                                                       Handle        = 0x80310015\n\tFVE_E_BAD_DATA                                                            Handle        = 0x80310016\n\tFVE_E_VOLUME_NOT_BOUND                                                    Handle        = 0x80310017\n\tFVE_E_TPM_NOT_OWNED                                                       Handle        = 0x80310018\n\tFVE_E_NOT_DATA_VOLUME                                                     Handle        = 0x80310019\n\tFVE_E_AD_INSUFFICIENT_BUFFER                                              Handle        = 0x8031001A\n\tFVE_E_CONV_READ                                                           Handle        = 0x8031001B\n\tFVE_E_CONV_WRITE                                                          Handle        = 0x8031001C\n\tFVE_E_KEY_REQUIRED                                                        Handle        = 0x8031001D\n\tFVE_E_CLUSTERING_NOT_SUPPORTED                                            Handle        = 0x8031001E\n\tFVE_E_VOLUME_BOUND_ALREADY                                                Handle        = 0x8031001F\n\tFVE_E_OS_NOT_PROTECTED                                                    Handle        = 0x80310020\n\tFVE_E_PROTECTION_DISABLED                                                 Handle        = 0x80310021\n\tFVE_E_RECOVERY_KEY_REQUIRED                                               Handle        = 0x80310022\n\tFVE_E_FOREIGN_VOLUME                                                      Handle        = 0x80310023\n\tFVE_E_OVERLAPPED_UPDATE                                                   Handle        = 0x80310024\n\tFVE_E_TPM_SRK_AUTH_NOT_ZERO                                               Handle        = 0x80310025\n\tFVE_E_FAILED_SECTOR_SIZE                                                  Handle        = 0x80310026\n\tFVE_E_FAILED_AUTHENTICATION                                               Handle        = 0x80310027\n\tFVE_E_NOT_OS_VOLUME                                                       Handle        = 0x80310028\n\tFVE_E_AUTOUNLOCK_ENABLED                                                  Handle        = 0x80310029\n\tFVE_E_WRONG_BOOTSECTOR                                                    Handle        = 0x8031002A\n\tFVE_E_WRONG_SYSTEM_FS                                                     Handle        = 0x8031002B\n\tFVE_E_POLICY_PASSWORD_REQUIRED                                            Handle        = 0x8031002C\n\tFVE_E_CANNOT_SET_FVEK_ENCRYPTED                                           Handle        = 0x8031002D\n\tFVE_E_CANNOT_ENCRYPT_NO_KEY                                               Handle        = 0x8031002E\n\tFVE_E_BOOTABLE_CDDVD                                                      Handle        = 0x80310030\n\tFVE_E_PROTECTOR_EXISTS                                                    Handle        = 0x80310031\n\tFVE_E_RELATIVE_PATH                                                       Handle        = 0x80310032\n\tFVE_E_PROTECTOR_NOT_FOUND                                                 Handle        = 0x80310033\n\tFVE_E_INVALID_KEY_FORMAT                                                  Handle        = 0x80310034\n\tFVE_E_INVALID_PASSWORD_FORMAT                                             Handle        = 0x80310035\n\tFVE_E_FIPS_RNG_CHECK_FAILED                                               Handle        = 0x80310036\n\tFVE_E_FIPS_PREVENTS_RECOVERY_PASSWORD                                     Handle        = 0x80310037\n\tFVE_E_FIPS_PREVENTS_EXTERNAL_KEY_EXPORT                                   Handle        = 0x80310038\n\tFVE_E_NOT_DECRYPTED                                                       Handle        = 0x80310039\n\tFVE_E_INVALID_PROTECTOR_TYPE                                              Handle        = 0x8031003A\n\tFVE_E_NO_PROTECTORS_TO_TEST                                               Handle        = 0x8031003B\n\tFVE_E_KEYFILE_NOT_FOUND                                                   Handle        = 0x8031003C\n\tFVE_E_KEYFILE_INVALID                                                     Handle        = 0x8031003D\n\tFVE_E_KEYFILE_NO_VMK                                                      Handle        = 0x8031003E\n\tFVE_E_TPM_DISABLED                                                        Handle        = 0x8031003F\n\tFVE_E_NOT_ALLOWED_IN_SAFE_MODE                                            Handle        = 0x80310040\n\tFVE_E_TPM_INVALID_PCR                                                     Handle        = 0x80310041\n\tFVE_E_TPM_NO_VMK                                                          Handle        = 0x80310042\n\tFVE_E_PIN_INVALID                                                         Handle        = 0x80310043\n\tFVE_E_AUTH_INVALID_APPLICATION                                            Handle        = 0x80310044\n\tFVE_E_AUTH_INVALID_CONFIG                                                 Handle        = 0x80310045\n\tFVE_E_FIPS_DISABLE_PROTECTION_NOT_ALLOWED                                 Handle        = 0x80310046\n\tFVE_E_FS_NOT_EXTENDED                                                     Handle        = 0x80310047\n\tFVE_E_FIRMWARE_TYPE_NOT_SUPPORTED                                         Handle        = 0x80310048\n\tFVE_E_NO_LICENSE                                                          Handle        = 0x80310049\n\tFVE_E_NOT_ON_STACK                                                        Handle        = 0x8031004A\n\tFVE_E_FS_MOUNTED                                                          Handle        = 0x8031004B\n\tFVE_E_TOKEN_NOT_IMPERSONATED                                              Handle        = 0x8031004C\n\tFVE_E_DRY_RUN_FAILED                                                      Handle        = 0x8031004D\n\tFVE_E_REBOOT_REQUIRED                                                     Handle        = 0x8031004E\n\tFVE_E_DEBUGGER_ENABLED                                                    Handle        = 0x8031004F\n\tFVE_E_RAW_ACCESS                                                          Handle        = 0x80310050\n\tFVE_E_RAW_BLOCKED                                                         Handle        = 0x80310051\n\tFVE_E_BCD_APPLICATIONS_PATH_INCORRECT                                     Handle        = 0x80310052\n\tFVE_E_NOT_ALLOWED_IN_VERSION                                              Handle        = 0x80310053\n\tFVE_E_NO_AUTOUNLOCK_MASTER_KEY                                            Handle        = 0x80310054\n\tFVE_E_MOR_FAILED                                                          Handle        = 0x80310055\n\tFVE_E_HIDDEN_VOLUME                                                       Handle        = 0x80310056\n\tFVE_E_TRANSIENT_STATE                                                     Handle        = 0x80310057\n\tFVE_E_PUBKEY_NOT_ALLOWED                                                  Handle        = 0x80310058\n\tFVE_E_VOLUME_HANDLE_OPEN                                                  Handle        = 0x80310059\n\tFVE_E_NO_FEATURE_LICENSE                                                  Handle        = 0x8031005A\n\tFVE_E_INVALID_STARTUP_OPTIONS                                             Handle        = 0x8031005B\n\tFVE_E_POLICY_RECOVERY_PASSWORD_NOT_ALLOWED                                Handle        = 0x8031005C\n\tFVE_E_POLICY_RECOVERY_PASSWORD_REQUIRED                                   Handle        = 0x8031005D\n\tFVE_E_POLICY_RECOVERY_KEY_NOT_ALLOWED                                     Handle        = 0x8031005E\n\tFVE_E_POLICY_RECOVERY_KEY_REQUIRED                                        Handle        = 0x8031005F\n\tFVE_E_POLICY_STARTUP_PIN_NOT_ALLOWED                                      Handle        = 0x80310060\n\tFVE_E_POLICY_STARTUP_PIN_REQUIRED                                         Handle        = 0x80310061\n\tFVE_E_POLICY_STARTUP_KEY_NOT_ALLOWED                                      Handle        = 0x80310062\n\tFVE_E_POLICY_STARTUP_KEY_REQUIRED                                         Handle        = 0x80310063\n\tFVE_E_POLICY_STARTUP_PIN_KEY_NOT_ALLOWED                                  Handle        = 0x80310064\n\tFVE_E_POLICY_STARTUP_PIN_KEY_REQUIRED                                     Handle        = 0x80310065\n\tFVE_E_POLICY_STARTUP_TPM_NOT_ALLOWED                                      Handle        = 0x80310066\n\tFVE_E_POLICY_STARTUP_TPM_REQUIRED                                         Handle        = 0x80310067\n\tFVE_E_POLICY_INVALID_PIN_LENGTH                                           Handle        = 0x80310068\n\tFVE_E_KEY_PROTECTOR_NOT_SUPPORTED                                         Handle        = 0x80310069\n\tFVE_E_POLICY_PASSPHRASE_NOT_ALLOWED                                       Handle        = 0x8031006A\n\tFVE_E_POLICY_PASSPHRASE_REQUIRED                                          Handle        = 0x8031006B\n\tFVE_E_FIPS_PREVENTS_PASSPHRASE                                            Handle        = 0x8031006C\n\tFVE_E_OS_VOLUME_PASSPHRASE_NOT_ALLOWED                                    Handle        = 0x8031006D\n\tFVE_E_INVALID_BITLOCKER_OID                                               Handle        = 0x8031006E\n\tFVE_E_VOLUME_TOO_SMALL                                                    Handle        = 0x8031006F\n\tFVE_E_DV_NOT_SUPPORTED_ON_FS                                              Handle        = 0x80310070\n\tFVE_E_DV_NOT_ALLOWED_BY_GP                                                Handle        = 0x80310071\n\tFVE_E_POLICY_USER_CERTIFICATE_NOT_ALLOWED                                 Handle        = 0x80310072\n\tFVE_E_POLICY_USER_CERTIFICATE_REQUIRED                                    Handle        = 0x80310073\n\tFVE_E_POLICY_USER_CERT_MUST_BE_HW                                         Handle        = 0x80310074\n\tFVE_E_POLICY_USER_CONFIGURE_FDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310075\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_AUTOUNLOCK_NOT_ALLOWED                    Handle        = 0x80310076\n\tFVE_E_POLICY_USER_CONFIGURE_RDV_NOT_ALLOWED                               Handle        = 0x80310077\n\tFVE_E_POLICY_USER_ENABLE_RDV_NOT_ALLOWED                                  Handle        = 0x80310078\n\tFVE_E_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                                 Handle        = 0x80310079\n\tFVE_E_POLICY_INVALID_PASSPHRASE_LENGTH                                    Handle        = 0x80310080\n\tFVE_E_POLICY_PASSPHRASE_TOO_SIMPLE                                        Handle        = 0x80310081\n\tFVE_E_RECOVERY_PARTITION                                                  Handle        = 0x80310082\n\tFVE_E_POLICY_CONFLICT_FDV_RK_OFF_AUK_ON                                   Handle        = 0x80310083\n\tFVE_E_POLICY_CONFLICT_RDV_RK_OFF_AUK_ON                                   Handle        = 0x80310084\n\tFVE_E_NON_BITLOCKER_OID                                                   Handle        = 0x80310085\n\tFVE_E_POLICY_PROHIBITS_SELFSIGNED                                         Handle        = 0x80310086\n\tFVE_E_POLICY_CONFLICT_RO_AND_STARTUP_KEY_REQUIRED                         Handle        = 0x80310087\n\tFVE_E_CONV_RECOVERY_FAILED                                                Handle        = 0x80310088\n\tFVE_E_VIRTUALIZED_SPACE_TOO_BIG                                           Handle        = 0x80310089\n\tFVE_E_POLICY_CONFLICT_OSV_RP_OFF_ADB_ON                                   Handle        = 0x80310090\n\tFVE_E_POLICY_CONFLICT_FDV_RP_OFF_ADB_ON                                   Handle        = 0x80310091\n\tFVE_E_POLICY_CONFLICT_RDV_RP_OFF_ADB_ON                                   Handle        = 0x80310092\n\tFVE_E_NON_BITLOCKER_KU                                                    Handle        = 0x80310093\n\tFVE_E_PRIVATEKEY_AUTH_FAILED                                              Handle        = 0x80310094\n\tFVE_E_REMOVAL_OF_DRA_FAILED                                               Handle        = 0x80310095\n\tFVE_E_OPERATION_NOT_SUPPORTED_ON_VISTA_VOLUME                             Handle        = 0x80310096\n\tFVE_E_CANT_LOCK_AUTOUNLOCK_ENABLED_VOLUME                                 Handle        = 0x80310097\n\tFVE_E_FIPS_HASH_KDF_NOT_ALLOWED                                           Handle        = 0x80310098\n\tFVE_E_ENH_PIN_INVALID                                                     Handle        = 0x80310099\n\tFVE_E_INVALID_PIN_CHARS                                                   Handle        = 0x8031009A\n\tFVE_E_INVALID_DATUM_TYPE                                                  Handle        = 0x8031009B\n\tFVE_E_EFI_ONLY                                                            Handle        = 0x8031009C\n\tFVE_E_MULTIPLE_NKP_CERTS                                                  Handle        = 0x8031009D\n\tFVE_E_REMOVAL_OF_NKP_FAILED                                               Handle        = 0x8031009E\n\tFVE_E_INVALID_NKP_CERT                                                    Handle        = 0x8031009F\n\tFVE_E_NO_EXISTING_PIN                                                     Handle        = 0x803100A0\n\tFVE_E_PROTECTOR_CHANGE_PIN_MISMATCH                                       Handle        = 0x803100A1\n\tFVE_E_PIN_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                         Handle        = 0x803100A2\n\tFVE_E_PROTECTOR_CHANGE_MAX_PIN_CHANGE_ATTEMPTS_REACHED                    Handle        = 0x803100A3\n\tFVE_E_POLICY_PASSPHRASE_REQUIRES_ASCII                                    Handle        = 0x803100A4\n\tFVE_E_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                           Handle        = 0x803100A5\n\tFVE_E_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                      Handle        = 0x803100A6\n\tFVE_E_KEY_LENGTH_NOT_SUPPORTED_BY_EDRIVE                                  Handle        = 0x803100A7\n\tFVE_E_NO_EXISTING_PASSPHRASE                                              Handle        = 0x803100A8\n\tFVE_E_PROTECTOR_CHANGE_PASSPHRASE_MISMATCH                                Handle        = 0x803100A9\n\tFVE_E_PASSPHRASE_TOO_LONG                                                 Handle        = 0x803100AA\n\tFVE_E_NO_PASSPHRASE_WITH_TPM                                              Handle        = 0x803100AB\n\tFVE_E_NO_TPM_WITH_PASSPHRASE                                              Handle        = 0x803100AC\n\tFVE_E_NOT_ALLOWED_ON_CSV_STACK                                            Handle        = 0x803100AD\n\tFVE_E_NOT_ALLOWED_ON_CLUSTER                                              Handle        = 0x803100AE\n\tFVE_E_EDRIVE_NO_FAILOVER_TO_SW                                            Handle        = 0x803100AF\n\tFVE_E_EDRIVE_BAND_IN_USE                                                  Handle        = 0x803100B0\n\tFVE_E_EDRIVE_DISALLOWED_BY_GP                                             Handle        = 0x803100B1\n\tFVE_E_EDRIVE_INCOMPATIBLE_VOLUME                                          Handle        = 0x803100B2\n\tFVE_E_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                             Handle        = 0x803100B3\n\tFVE_E_EDRIVE_DV_NOT_SUPPORTED                                             Handle        = 0x803100B4\n\tFVE_E_NO_PREBOOT_KEYBOARD_DETECTED                                        Handle        = 0x803100B5\n\tFVE_E_NO_PREBOOT_KEYBOARD_OR_WINRE_DETECTED                               Handle        = 0x803100B6\n\tFVE_E_POLICY_REQUIRES_STARTUP_PIN_ON_TOUCH_DEVICE                         Handle        = 0x803100B7\n\tFVE_E_POLICY_REQUIRES_RECOVERY_PASSWORD_ON_TOUCH_DEVICE                   Handle        = 0x803100B8\n\tFVE_E_WIPE_CANCEL_NOT_APPLICABLE                                          Handle        = 0x803100B9\n\tFVE_E_SECUREBOOT_DISABLED                                                 Handle        = 0x803100BA\n\tFVE_E_SECUREBOOT_CONFIGURATION_INVALID                                    Handle        = 0x803100BB\n\tFVE_E_EDRIVE_DRY_RUN_FAILED                                               Handle        = 0x803100BC\n\tFVE_E_SHADOW_COPY_PRESENT                                                 Handle        = 0x803100BD\n\tFVE_E_POLICY_INVALID_ENHANCED_BCD_SETTINGS                                Handle        = 0x803100BE\n\tFVE_E_EDRIVE_INCOMPATIBLE_FIRMWARE                                        Handle        = 0x803100BF\n\tFVE_E_PROTECTOR_CHANGE_MAX_PASSPHRASE_CHANGE_ATTEMPTS_REACHED             Handle        = 0x803100C0\n\tFVE_E_PASSPHRASE_PROTECTOR_CHANGE_BY_STD_USER_DISALLOWED                  Handle        = 0x803100C1\n\tFVE_E_LIVEID_ACCOUNT_SUSPENDED                                            Handle        = 0x803100C2\n\tFVE_E_LIVEID_ACCOUNT_BLOCKED                                              Handle        = 0x803100C3\n\tFVE_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x803100C4\n\tFVE_E_DE_FIXED_DATA_NOT_SUPPORTED                                         Handle        = 0x803100C5\n\tFVE_E_DE_HARDWARE_NOT_COMPLIANT                                           Handle        = 0x803100C6\n\tFVE_E_DE_WINRE_NOT_CONFIGURED                                             Handle        = 0x803100C7\n\tFVE_E_DE_PROTECTION_SUSPENDED                                             Handle        = 0x803100C8\n\tFVE_E_DE_OS_VOLUME_NOT_PROTECTED                                          Handle        = 0x803100C9\n\tFVE_E_DE_DEVICE_LOCKEDOUT                                                 Handle        = 0x803100CA\n\tFVE_E_DE_PROTECTION_NOT_YET_ENABLED                                       Handle        = 0x803100CB\n\tFVE_E_INVALID_PIN_CHARS_DETAILED                                          Handle        = 0x803100CC\n\tFVE_E_DEVICE_LOCKOUT_COUNTER_UNAVAILABLE                                  Handle        = 0x803100CD\n\tFVE_E_DEVICELOCKOUT_COUNTER_MISMATCH                                      Handle        = 0x803100CE\n\tFVE_E_BUFFER_TOO_LARGE                                                    Handle        = 0x803100CF\n\tFVE_E_NO_SUCH_CAPABILITY_ON_TARGET                                        Handle        = 0x803100D0\n\tFVE_E_DE_PREVENTED_FOR_OS                                                 Handle        = 0x803100D1\n\tFVE_E_DE_VOLUME_OPTED_OUT                                                 Handle        = 0x803100D2\n\tFVE_E_DE_VOLUME_NOT_SUPPORTED                                             Handle        = 0x803100D3\n\tFVE_E_EOW_NOT_SUPPORTED_IN_VERSION                                        Handle        = 0x803100D4\n\tFVE_E_ADBACKUP_NOT_ENABLED                                                Handle        = 0x803100D5\n\tFVE_E_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                                  Handle        = 0x803100D6\n\tFVE_E_NOT_DE_VOLUME                                                       Handle        = 0x803100D7\n\tFVE_E_PROTECTION_CANNOT_BE_DISABLED                                       Handle        = 0x803100D8\n\tFVE_E_OSV_KSR_NOT_ALLOWED                                                 Handle        = 0x803100D9\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_OS_DRIVE                          Handle        = 0x803100DA\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_FIXED_DRIVE                       Handle        = 0x803100DB\n\tFVE_E_AD_BACKUP_REQUIRED_POLICY_NOT_SET_REMOVABLE_DRIVE                   Handle        = 0x803100DC\n\tFVE_E_KEY_ROTATION_NOT_SUPPORTED                                          Handle        = 0x803100DD\n\tFVE_E_EXECUTE_REQUEST_SENT_TOO_SOON                                       Handle        = 0x803100DE\n\tFVE_E_KEY_ROTATION_NOT_ENABLED                                            Handle        = 0x803100DF\n\tFVE_E_DEVICE_NOT_JOINED                                                   Handle        = 0x803100E0\n\tFWP_E_CALLOUT_NOT_FOUND                                                   Handle        = 0x80320001\n\tFWP_E_CONDITION_NOT_FOUND                                                 Handle        = 0x80320002\n\tFWP_E_FILTER_NOT_FOUND                                                    Handle        = 0x80320003\n\tFWP_E_LAYER_NOT_FOUND                                                     Handle        = 0x80320004\n\tFWP_E_PROVIDER_NOT_FOUND                                                  Handle        = 0x80320005\n\tFWP_E_PROVIDER_CONTEXT_NOT_FOUND                                          Handle        = 0x80320006\n\tFWP_E_SUBLAYER_NOT_FOUND                                                  Handle        = 0x80320007\n\tFWP_E_NOT_FOUND                                                           Handle        = 0x80320008\n\tFWP_E_ALREADY_EXISTS                                                      Handle        = 0x80320009\n\tFWP_E_IN_USE                                                              Handle        = 0x8032000A\n\tFWP_E_DYNAMIC_SESSION_IN_PROGRESS                                         Handle        = 0x8032000B\n\tFWP_E_WRONG_SESSION                                                       Handle        = 0x8032000C\n\tFWP_E_NO_TXN_IN_PROGRESS                                                  Handle        = 0x8032000D\n\tFWP_E_TXN_IN_PROGRESS                                                     Handle        = 0x8032000E\n\tFWP_E_TXN_ABORTED                                                         Handle        = 0x8032000F\n\tFWP_E_SESSION_ABORTED                                                     Handle        = 0x80320010\n\tFWP_E_INCOMPATIBLE_TXN                                                    Handle        = 0x80320011\n\tFWP_E_TIMEOUT                                                             Handle        = 0x80320012\n\tFWP_E_NET_EVENTS_DISABLED                                                 Handle        = 0x80320013\n\tFWP_E_INCOMPATIBLE_LAYER                                                  Handle        = 0x80320014\n\tFWP_E_KM_CLIENTS_ONLY                                                     Handle        = 0x80320015\n\tFWP_E_LIFETIME_MISMATCH                                                   Handle        = 0x80320016\n\tFWP_E_BUILTIN_OBJECT                                                      Handle        = 0x80320017\n\tFWP_E_TOO_MANY_CALLOUTS                                                   Handle        = 0x80320018\n\tFWP_E_NOTIFICATION_DROPPED                                                Handle        = 0x80320019\n\tFWP_E_TRAFFIC_MISMATCH                                                    Handle        = 0x8032001A\n\tFWP_E_INCOMPATIBLE_SA_STATE                                               Handle        = 0x8032001B\n\tFWP_E_NULL_POINTER                                                        Handle        = 0x8032001C\n\tFWP_E_INVALID_ENUMERATOR                                                  Handle        = 0x8032001D\n\tFWP_E_INVALID_FLAGS                                                       Handle        = 0x8032001E\n\tFWP_E_INVALID_NET_MASK                                                    Handle        = 0x8032001F\n\tFWP_E_INVALID_RANGE                                                       Handle        = 0x80320020\n\tFWP_E_INVALID_INTERVAL                                                    Handle        = 0x80320021\n\tFWP_E_ZERO_LENGTH_ARRAY                                                   Handle        = 0x80320022\n\tFWP_E_NULL_DISPLAY_NAME                                                   Handle        = 0x80320023\n\tFWP_E_INVALID_ACTION_TYPE                                                 Handle        = 0x80320024\n\tFWP_E_INVALID_WEIGHT                                                      Handle        = 0x80320025\n\tFWP_E_MATCH_TYPE_MISMATCH                                                 Handle        = 0x80320026\n\tFWP_E_TYPE_MISMATCH                                                       Handle        = 0x80320027\n\tFWP_E_OUT_OF_BOUNDS                                                       Handle        = 0x80320028\n\tFWP_E_RESERVED                                                            Handle        = 0x80320029\n\tFWP_E_DUPLICATE_CONDITION                                                 Handle        = 0x8032002A\n\tFWP_E_DUPLICATE_KEYMOD                                                    Handle        = 0x8032002B\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_LAYER                                      Handle        = 0x8032002C\n\tFWP_E_ACTION_INCOMPATIBLE_WITH_SUBLAYER                                   Handle        = 0x8032002D\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_LAYER                                     Handle        = 0x8032002E\n\tFWP_E_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                                   Handle        = 0x8032002F\n\tFWP_E_INCOMPATIBLE_AUTH_METHOD                                            Handle        = 0x80320030\n\tFWP_E_INCOMPATIBLE_DH_GROUP                                               Handle        = 0x80320031\n\tFWP_E_EM_NOT_SUPPORTED                                                    Handle        = 0x80320032\n\tFWP_E_NEVER_MATCH                                                         Handle        = 0x80320033\n\tFWP_E_PROVIDER_CONTEXT_MISMATCH                                           Handle        = 0x80320034\n\tFWP_E_INVALID_PARAMETER                                                   Handle        = 0x80320035\n\tFWP_E_TOO_MANY_SUBLAYERS                                                  Handle        = 0x80320036\n\tFWP_E_CALLOUT_NOTIFICATION_FAILED                                         Handle        = 0x80320037\n\tFWP_E_INVALID_AUTH_TRANSFORM                                              Handle        = 0x80320038\n\tFWP_E_INVALID_CIPHER_TRANSFORM                                            Handle        = 0x80320039\n\tFWP_E_INCOMPATIBLE_CIPHER_TRANSFORM                                       Handle        = 0x8032003A\n\tFWP_E_INVALID_TRANSFORM_COMBINATION                                       Handle        = 0x8032003B\n\tFWP_E_DUPLICATE_AUTH_METHOD                                               Handle        = 0x8032003C\n\tFWP_E_INVALID_TUNNEL_ENDPOINT                                             Handle        = 0x8032003D\n\tFWP_E_L2_DRIVER_NOT_READY                                                 Handle        = 0x8032003E\n\tFWP_E_KEY_DICTATOR_ALREADY_REGISTERED                                     Handle        = 0x8032003F\n\tFWP_E_KEY_DICTATION_INVALID_KEYING_MATERIAL                               Handle        = 0x80320040\n\tFWP_E_CONNECTIONS_DISABLED                                                Handle        = 0x80320041\n\tFWP_E_INVALID_DNS_NAME                                                    Handle        = 0x80320042\n\tFWP_E_STILL_ON                                                            Handle        = 0x80320043\n\tFWP_E_IKEEXT_NOT_RUNNING                                                  Handle        = 0x80320044\n\tFWP_E_DROP_NOICMP                                                         Handle        = 0x80320104\n\tWS_S_ASYNC                                                                Handle        = 0x003D0000\n\tWS_S_END                                                                  Handle        = 0x003D0001\n\tWS_E_INVALID_FORMAT                                                       Handle        = 0x803D0000\n\tWS_E_OBJECT_FAULTED                                                       Handle        = 0x803D0001\n\tWS_E_NUMERIC_OVERFLOW                                                     Handle        = 0x803D0002\n\tWS_E_INVALID_OPERATION                                                    Handle        = 0x803D0003\n\tWS_E_OPERATION_ABORTED                                                    Handle        = 0x803D0004\n\tWS_E_ENDPOINT_ACCESS_DENIED                                               Handle        = 0x803D0005\n\tWS_E_OPERATION_TIMED_OUT                                                  Handle        = 0x803D0006\n\tWS_E_OPERATION_ABANDONED                                                  Handle        = 0x803D0007\n\tWS_E_QUOTA_EXCEEDED                                                       Handle        = 0x803D0008\n\tWS_E_NO_TRANSLATION_AVAILABLE                                             Handle        = 0x803D0009\n\tWS_E_SECURITY_VERIFICATION_FAILURE                                        Handle        = 0x803D000A\n\tWS_E_ADDRESS_IN_USE                                                       Handle        = 0x803D000B\n\tWS_E_ADDRESS_NOT_AVAILABLE                                                Handle        = 0x803D000C\n\tWS_E_ENDPOINT_NOT_FOUND                                                   Handle        = 0x803D000D\n\tWS_E_ENDPOINT_NOT_AVAILABLE                                               Handle        = 0x803D000E\n\tWS_E_ENDPOINT_FAILURE                                                     Handle        = 0x803D000F\n\tWS_E_ENDPOINT_UNREACHABLE                                                 Handle        = 0x803D0010\n\tWS_E_ENDPOINT_ACTION_NOT_SUPPORTED                                        Handle        = 0x803D0011\n\tWS_E_ENDPOINT_TOO_BUSY                                                    Handle        = 0x803D0012\n\tWS_E_ENDPOINT_FAULT_RECEIVED                                              Handle        = 0x803D0013\n\tWS_E_ENDPOINT_DISCONNECTED                                                Handle        = 0x803D0014\n\tWS_E_PROXY_FAILURE                                                        Handle        = 0x803D0015\n\tWS_E_PROXY_ACCESS_DENIED                                                  Handle        = 0x803D0016\n\tWS_E_NOT_SUPPORTED                                                        Handle        = 0x803D0017\n\tWS_E_PROXY_REQUIRES_BASIC_AUTH                                            Handle        = 0x803D0018\n\tWS_E_PROXY_REQUIRES_DIGEST_AUTH                                           Handle        = 0x803D0019\n\tWS_E_PROXY_REQUIRES_NTLM_AUTH                                             Handle        = 0x803D001A\n\tWS_E_PROXY_REQUIRES_NEGOTIATE_AUTH                                        Handle        = 0x803D001B\n\tWS_E_SERVER_REQUIRES_BASIC_AUTH                                           Handle        = 0x803D001C\n\tWS_E_SERVER_REQUIRES_DIGEST_AUTH                                          Handle        = 0x803D001D\n\tWS_E_SERVER_REQUIRES_NTLM_AUTH                                            Handle        = 0x803D001E\n\tWS_E_SERVER_REQUIRES_NEGOTIATE_AUTH                                       Handle        = 0x803D001F\n\tWS_E_INVALID_ENDPOINT_URL                                                 Handle        = 0x803D0020\n\tWS_E_OTHER                                                                Handle        = 0x803D0021\n\tWS_E_SECURITY_TOKEN_EXPIRED                                               Handle        = 0x803D0022\n\tWS_E_SECURITY_SYSTEM_FAILURE                                              Handle        = 0x803D0023\n\tERROR_NDIS_INTERFACE_CLOSING                                              syscall.Errno = 0x80340002\n\tERROR_NDIS_BAD_VERSION                                                    syscall.Errno = 0x80340004\n\tERROR_NDIS_BAD_CHARACTERISTICS                                            syscall.Errno = 0x80340005\n\tERROR_NDIS_ADAPTER_NOT_FOUND                                              syscall.Errno = 0x80340006\n\tERROR_NDIS_OPEN_FAILED                                                    syscall.Errno = 0x80340007\n\tERROR_NDIS_DEVICE_FAILED                                                  syscall.Errno = 0x80340008\n\tERROR_NDIS_MULTICAST_FULL                                                 syscall.Errno = 0x80340009\n\tERROR_NDIS_MULTICAST_EXISTS                                               syscall.Errno = 0x8034000A\n\tERROR_NDIS_MULTICAST_NOT_FOUND                                            syscall.Errno = 0x8034000B\n\tERROR_NDIS_REQUEST_ABORTED                                                syscall.Errno = 0x8034000C\n\tERROR_NDIS_RESET_IN_PROGRESS                                              syscall.Errno = 0x8034000D\n\tERROR_NDIS_NOT_SUPPORTED                                                  syscall.Errno = 0x803400BB\n\tERROR_NDIS_INVALID_PACKET                                                 syscall.Errno = 0x8034000F\n\tERROR_NDIS_ADAPTER_NOT_READY                                              syscall.Errno = 0x80340011\n\tERROR_NDIS_INVALID_LENGTH                                                 syscall.Errno = 0x80340014\n\tERROR_NDIS_INVALID_DATA                                                   syscall.Errno = 0x80340015\n\tERROR_NDIS_BUFFER_TOO_SHORT                                               syscall.Errno = 0x80340016\n\tERROR_NDIS_INVALID_OID                                                    syscall.Errno = 0x80340017\n\tERROR_NDIS_ADAPTER_REMOVED                                                syscall.Errno = 0x80340018\n\tERROR_NDIS_UNSUPPORTED_MEDIA                                              syscall.Errno = 0x80340019\n\tERROR_NDIS_GROUP_ADDRESS_IN_USE                                           syscall.Errno = 0x8034001A\n\tERROR_NDIS_FILE_NOT_FOUND                                                 syscall.Errno = 0x8034001B\n\tERROR_NDIS_ERROR_READING_FILE                                             syscall.Errno = 0x8034001C\n\tERROR_NDIS_ALREADY_MAPPED                                                 syscall.Errno = 0x8034001D\n\tERROR_NDIS_RESOURCE_CONFLICT                                              syscall.Errno = 0x8034001E\n\tERROR_NDIS_MEDIA_DISCONNECTED                                             syscall.Errno = 0x8034001F\n\tERROR_NDIS_INVALID_ADDRESS                                                syscall.Errno = 0x80340022\n\tERROR_NDIS_INVALID_DEVICE_REQUEST                                         syscall.Errno = 0x80340010\n\tERROR_NDIS_PAUSED                                                         syscall.Errno = 0x8034002A\n\tERROR_NDIS_INTERFACE_NOT_FOUND                                            syscall.Errno = 0x8034002B\n\tERROR_NDIS_UNSUPPORTED_REVISION                                           syscall.Errno = 0x8034002C\n\tERROR_NDIS_INVALID_PORT                                                   syscall.Errno = 0x8034002D\n\tERROR_NDIS_INVALID_PORT_STATE                                             syscall.Errno = 0x8034002E\n\tERROR_NDIS_LOW_POWER_STATE                                                syscall.Errno = 0x8034002F\n\tERROR_NDIS_REINIT_REQUIRED                                                syscall.Errno = 0x80340030\n\tERROR_NDIS_NO_QUEUES                                                      syscall.Errno = 0x80340031\n\tERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED                                      syscall.Errno = 0x80342000\n\tERROR_NDIS_DOT11_MEDIA_IN_USE                                             syscall.Errno = 0x80342001\n\tERROR_NDIS_DOT11_POWER_STATE_INVALID                                      syscall.Errno = 0x80342002\n\tERROR_NDIS_PM_WOL_PATTERN_LIST_FULL                                       syscall.Errno = 0x80342003\n\tERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                  syscall.Errno = 0x80342004\n\tERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                       syscall.Errno = 0x80342005\n\tERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                          syscall.Errno = 0x80342006\n\tERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                   syscall.Errno = 0x80342007\n\tERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                      syscall.Errno = 0x80342008\n\tERROR_NDIS_INDICATION_REQUIRED                                            syscall.Errno = 0x00340001\n\tERROR_NDIS_OFFLOAD_POLICY                                                 syscall.Errno = 0xC034100F\n\tERROR_NDIS_OFFLOAD_CONNECTION_REJECTED                                    syscall.Errno = 0xC0341012\n\tERROR_NDIS_OFFLOAD_PATH_REJECTED                                          syscall.Errno = 0xC0341013\n\tERROR_HV_INVALID_HYPERCALL_CODE                                           syscall.Errno = 0xC0350002\n\tERROR_HV_INVALID_HYPERCALL_INPUT                                          syscall.Errno = 0xC0350003\n\tERROR_HV_INVALID_ALIGNMENT                                                syscall.Errno = 0xC0350004\n\tERROR_HV_INVALID_PARAMETER                                                syscall.Errno = 0xC0350005\n\tERROR_HV_ACCESS_DENIED                                                    syscall.Errno = 0xC0350006\n\tERROR_HV_INVALID_PARTITION_STATE                                          syscall.Errno = 0xC0350007\n\tERROR_HV_OPERATION_DENIED                                                 syscall.Errno = 0xC0350008\n\tERROR_HV_UNKNOWN_PROPERTY                                                 syscall.Errno = 0xC0350009\n\tERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE                                      syscall.Errno = 0xC035000A\n\tERROR_HV_INSUFFICIENT_MEMORY                                              syscall.Errno = 0xC035000B\n\tERROR_HV_PARTITION_TOO_DEEP                                               syscall.Errno = 0xC035000C\n\tERROR_HV_INVALID_PARTITION_ID                                             syscall.Errno = 0xC035000D\n\tERROR_HV_INVALID_VP_INDEX                                                 syscall.Errno = 0xC035000E\n\tERROR_HV_INVALID_PORT_ID                                                  syscall.Errno = 0xC0350011\n\tERROR_HV_INVALID_CONNECTION_ID                                            syscall.Errno = 0xC0350012\n\tERROR_HV_INSUFFICIENT_BUFFERS                                             syscall.Errno = 0xC0350013\n\tERROR_HV_NOT_ACKNOWLEDGED                                                 syscall.Errno = 0xC0350014\n\tERROR_HV_INVALID_VP_STATE                                                 syscall.Errno = 0xC0350015\n\tERROR_HV_ACKNOWLEDGED                                                     syscall.Errno = 0xC0350016\n\tERROR_HV_INVALID_SAVE_RESTORE_STATE                                       syscall.Errno = 0xC0350017\n\tERROR_HV_INVALID_SYNIC_STATE                                              syscall.Errno = 0xC0350018\n\tERROR_HV_OBJECT_IN_USE                                                    syscall.Errno = 0xC0350019\n\tERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO                                    syscall.Errno = 0xC035001A\n\tERROR_HV_NO_DATA                                                          syscall.Errno = 0xC035001B\n\tERROR_HV_INACTIVE                                                         syscall.Errno = 0xC035001C\n\tERROR_HV_NO_RESOURCES                                                     syscall.Errno = 0xC035001D\n\tERROR_HV_FEATURE_UNAVAILABLE                                              syscall.Errno = 0xC035001E\n\tERROR_HV_INSUFFICIENT_BUFFER                                              syscall.Errno = 0xC0350033\n\tERROR_HV_INSUFFICIENT_DEVICE_DOMAINS                                      syscall.Errno = 0xC0350038\n\tERROR_HV_CPUID_FEATURE_VALIDATION                                         syscall.Errno = 0xC035003C\n\tERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION                                   syscall.Errno = 0xC035003D\n\tERROR_HV_PROCESSOR_STARTUP_TIMEOUT                                        syscall.Errno = 0xC035003E\n\tERROR_HV_SMX_ENABLED                                                      syscall.Errno = 0xC035003F\n\tERROR_HV_INVALID_LP_INDEX                                                 syscall.Errno = 0xC0350041\n\tERROR_HV_INVALID_REGISTER_VALUE                                           syscall.Errno = 0xC0350050\n\tERROR_HV_INVALID_VTL_STATE                                                syscall.Errno = 0xC0350051\n\tERROR_HV_NX_NOT_DETECTED                                                  syscall.Errno = 0xC0350055\n\tERROR_HV_INVALID_DEVICE_ID                                                syscall.Errno = 0xC0350057\n\tERROR_HV_INVALID_DEVICE_STATE                                             syscall.Errno = 0xC0350058\n\tERROR_HV_PENDING_PAGE_REQUESTS                                            syscall.Errno = 0x00350059\n\tERROR_HV_PAGE_REQUEST_INVALID                                             syscall.Errno = 0xC0350060\n\tERROR_HV_INVALID_CPU_GROUP_ID                                             syscall.Errno = 0xC035006F\n\tERROR_HV_INVALID_CPU_GROUP_STATE                                          syscall.Errno = 0xC0350070\n\tERROR_HV_OPERATION_FAILED                                                 syscall.Errno = 0xC0350071\n\tERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                              syscall.Errno = 0xC0350072\n\tERROR_HV_INSUFFICIENT_ROOT_MEMORY                                         syscall.Errno = 0xC0350073\n\tERROR_HV_NOT_PRESENT                                                      syscall.Errno = 0xC0351000\n\tERROR_VID_DUPLICATE_HANDLER                                               syscall.Errno = 0xC0370001\n\tERROR_VID_TOO_MANY_HANDLERS                                               syscall.Errno = 0xC0370002\n\tERROR_VID_QUEUE_FULL                                                      syscall.Errno = 0xC0370003\n\tERROR_VID_HANDLER_NOT_PRESENT                                             syscall.Errno = 0xC0370004\n\tERROR_VID_INVALID_OBJECT_NAME                                             syscall.Errno = 0xC0370005\n\tERROR_VID_PARTITION_NAME_TOO_LONG                                         syscall.Errno = 0xC0370006\n\tERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                     syscall.Errno = 0xC0370007\n\tERROR_VID_PARTITION_ALREADY_EXISTS                                        syscall.Errno = 0xC0370008\n\tERROR_VID_PARTITION_DOES_NOT_EXIST                                        syscall.Errno = 0xC0370009\n\tERROR_VID_PARTITION_NAME_NOT_FOUND                                        syscall.Errno = 0xC037000A\n\tERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                    syscall.Errno = 0xC037000B\n\tERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                    syscall.Errno = 0xC037000C\n\tERROR_VID_MB_STILL_REFERENCED                                             syscall.Errno = 0xC037000D\n\tERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                    syscall.Errno = 0xC037000E\n\tERROR_VID_INVALID_NUMA_SETTINGS                                           syscall.Errno = 0xC037000F\n\tERROR_VID_INVALID_NUMA_NODE_INDEX                                         syscall.Errno = 0xC0370010\n\tERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                           syscall.Errno = 0xC0370011\n\tERROR_VID_INVALID_MEMORY_BLOCK_HANDLE                                     syscall.Errno = 0xC0370012\n\tERROR_VID_PAGE_RANGE_OVERFLOW                                             syscall.Errno = 0xC0370013\n\tERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE                                    syscall.Errno = 0xC0370014\n\tERROR_VID_INVALID_GPA_RANGE_HANDLE                                        syscall.Errno = 0xC0370015\n\tERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                              syscall.Errno = 0xC0370016\n\tERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                                syscall.Errno = 0xC0370017\n\tERROR_VID_INVALID_PPM_HANDLE                                              syscall.Errno = 0xC0370018\n\tERROR_VID_MBPS_ARE_LOCKED                                                 syscall.Errno = 0xC0370019\n\tERROR_VID_MESSAGE_QUEUE_CLOSED                                            syscall.Errno = 0xC037001A\n\tERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                                syscall.Errno = 0xC037001B\n\tERROR_VID_STOP_PENDING                                                    syscall.Errno = 0xC037001C\n\tERROR_VID_INVALID_PROCESSOR_STATE                                         syscall.Errno = 0xC037001D\n\tERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                 syscall.Errno = 0xC037001E\n\tERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED                                syscall.Errno = 0xC037001F\n\tERROR_VID_MB_PROPERTY_ALREADY_SET_RESET                                   syscall.Errno = 0xC0370020\n\tERROR_VID_MMIO_RANGE_DESTROYED                                            syscall.Errno = 0xC0370021\n\tERROR_VID_INVALID_CHILD_GPA_PAGE_SET                                      syscall.Errno = 0xC0370022\n\tERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED                                  syscall.Errno = 0xC0370023\n\tERROR_VID_RESERVE_PAGE_SET_TOO_SMALL                                      syscall.Errno = 0xC0370024\n\tERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                          syscall.Errno = 0xC0370025\n\tERROR_VID_MBP_COUNT_EXCEEDED_LIMIT                                        syscall.Errno = 0xC0370026\n\tERROR_VID_SAVED_STATE_CORRUPT                                             syscall.Errno = 0xC0370027\n\tERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                   syscall.Errno = 0xC0370028\n\tERROR_VID_SAVED_STATE_INCOMPATIBLE                                        syscall.Errno = 0xC0370029\n\tERROR_VID_VTL_ACCESS_DENIED                                               syscall.Errno = 0xC037002A\n\tERROR_VMCOMPUTE_TERMINATED_DURING_START                                   syscall.Errno = 0xC0370100\n\tERROR_VMCOMPUTE_IMAGE_MISMATCH                                            syscall.Errno = 0xC0370101\n\tERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED                                      syscall.Errno = 0xC0370102\n\tERROR_VMCOMPUTE_OPERATION_PENDING                                         syscall.Errno = 0xC0370103\n\tERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS                                    syscall.Errno = 0xC0370104\n\tERROR_VMCOMPUTE_INVALID_STATE                                             syscall.Errno = 0xC0370105\n\tERROR_VMCOMPUTE_UNEXPECTED_EXIT                                           syscall.Errno = 0xC0370106\n\tERROR_VMCOMPUTE_TERMINATED                                                syscall.Errno = 0xC0370107\n\tERROR_VMCOMPUTE_CONNECT_FAILED                                            syscall.Errno = 0xC0370108\n\tERROR_VMCOMPUTE_TIMEOUT                                                   syscall.Errno = 0xC0370109\n\tERROR_VMCOMPUTE_CONNECTION_CLOSED                                         syscall.Errno = 0xC037010A\n\tERROR_VMCOMPUTE_UNKNOWN_MESSAGE                                           syscall.Errno = 0xC037010B\n\tERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION                              syscall.Errno = 0xC037010C\n\tERROR_VMCOMPUTE_INVALID_JSON                                              syscall.Errno = 0xC037010D\n\tERROR_VMCOMPUTE_SYSTEM_NOT_FOUND                                          syscall.Errno = 0xC037010E\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS                                     syscall.Errno = 0xC037010F\n\tERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED                                    syscall.Errno = 0xC0370110\n\tERROR_VMCOMPUTE_PROTOCOL_ERROR                                            syscall.Errno = 0xC0370111\n\tERROR_VMCOMPUTE_INVALID_LAYER                                             syscall.Errno = 0xC0370112\n\tERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED                                  syscall.Errno = 0xC0370113\n\tHCS_E_TERMINATED_DURING_START                                             Handle        = 0x80370100\n\tHCS_E_IMAGE_MISMATCH                                                      Handle        = 0x80370101\n\tHCS_E_HYPERV_NOT_INSTALLED                                                Handle        = 0x80370102\n\tHCS_E_INVALID_STATE                                                       Handle        = 0x80370105\n\tHCS_E_UNEXPECTED_EXIT                                                     Handle        = 0x80370106\n\tHCS_E_TERMINATED                                                          Handle        = 0x80370107\n\tHCS_E_CONNECT_FAILED                                                      Handle        = 0x80370108\n\tHCS_E_CONNECTION_TIMEOUT                                                  Handle        = 0x80370109\n\tHCS_E_CONNECTION_CLOSED                                                   Handle        = 0x8037010A\n\tHCS_E_UNKNOWN_MESSAGE                                                     Handle        = 0x8037010B\n\tHCS_E_UNSUPPORTED_PROTOCOL_VERSION                                        Handle        = 0x8037010C\n\tHCS_E_INVALID_JSON                                                        Handle        = 0x8037010D\n\tHCS_E_SYSTEM_NOT_FOUND                                                    Handle        = 0x8037010E\n\tHCS_E_SYSTEM_ALREADY_EXISTS                                               Handle        = 0x8037010F\n\tHCS_E_SYSTEM_ALREADY_STOPPED                                              Handle        = 0x80370110\n\tHCS_E_PROTOCOL_ERROR                                                      Handle        = 0x80370111\n\tHCS_E_INVALID_LAYER                                                       Handle        = 0x80370112\n\tHCS_E_WINDOWS_INSIDER_REQUIRED                                            Handle        = 0x80370113\n\tHCS_E_SERVICE_NOT_AVAILABLE                                               Handle        = 0x80370114\n\tHCS_E_OPERATION_NOT_STARTED                                               Handle        = 0x80370115\n\tHCS_E_OPERATION_ALREADY_STARTED                                           Handle        = 0x80370116\n\tHCS_E_OPERATION_PENDING                                                   Handle        = 0x80370117\n\tHCS_E_OPERATION_TIMEOUT                                                   Handle        = 0x80370118\n\tHCS_E_OPERATION_SYSTEM_CALLBACK_ALREADY_SET                               Handle        = 0x80370119\n\tHCS_E_OPERATION_RESULT_ALLOCATION_FAILED                                  Handle        = 0x8037011A\n\tHCS_E_ACCESS_DENIED                                                       Handle        = 0x8037011B\n\tHCS_E_GUEST_CRITICAL_ERROR                                                Handle        = 0x8037011C\n\tERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND                                  syscall.Errno = 0xC0370200\n\tERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                               syscall.Errno = 0x80370001\n\tWHV_E_UNKNOWN_CAPABILITY                                                  Handle        = 0x80370300\n\tWHV_E_INSUFFICIENT_BUFFER                                                 Handle        = 0x80370301\n\tWHV_E_UNKNOWN_PROPERTY                                                    Handle        = 0x80370302\n\tWHV_E_UNSUPPORTED_HYPERVISOR_CONFIG                                       Handle        = 0x80370303\n\tWHV_E_INVALID_PARTITION_CONFIG                                            Handle        = 0x80370304\n\tWHV_E_GPA_RANGE_NOT_FOUND                                                 Handle        = 0x80370305\n\tWHV_E_VP_ALREADY_EXISTS                                                   Handle        = 0x80370306\n\tWHV_E_VP_DOES_NOT_EXIST                                                   Handle        = 0x80370307\n\tWHV_E_INVALID_VP_STATE                                                    Handle        = 0x80370308\n\tWHV_E_INVALID_VP_REGISTER_NAME                                            Handle        = 0x80370309\n\tERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND                                     syscall.Errno = 0xC0370400\n\tERROR_VSMB_SAVED_STATE_CORRUPT                                            syscall.Errno = 0xC0370401\n\tERROR_VOLMGR_INCOMPLETE_REGENERATION                                      syscall.Errno = 0x80380001\n\tERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION                                    syscall.Errno = 0x80380002\n\tERROR_VOLMGR_DATABASE_FULL                                                syscall.Errno = 0xC0380001\n\tERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                 syscall.Errno = 0xC0380002\n\tERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                               syscall.Errno = 0xC0380003\n\tERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                    syscall.Errno = 0xC0380004\n\tERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                              syscall.Errno = 0xC0380005\n\tERROR_VOLMGR_DISK_DUPLICATE                                               syscall.Errno = 0xC0380006\n\tERROR_VOLMGR_DISK_DYNAMIC                                                 syscall.Errno = 0xC0380007\n\tERROR_VOLMGR_DISK_ID_INVALID                                              syscall.Errno = 0xC0380008\n\tERROR_VOLMGR_DISK_INVALID                                                 syscall.Errno = 0xC0380009\n\tERROR_VOLMGR_DISK_LAST_VOTER                                              syscall.Errno = 0xC038000A\n\tERROR_VOLMGR_DISK_LAYOUT_INVALID                                          syscall.Errno = 0xC038000B\n\tERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS               syscall.Errno = 0xC038000C\n\tERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                             syscall.Errno = 0xC038000D\n\tERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                             syscall.Errno = 0xC038000E\n\tERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS               syscall.Errno = 0xC038000F\n\tERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                              syscall.Errno = 0xC0380010\n\tERROR_VOLMGR_DISK_MISSING                                                 syscall.Errno = 0xC0380011\n\tERROR_VOLMGR_DISK_NOT_EMPTY                                               syscall.Errno = 0xC0380012\n\tERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE                                        syscall.Errno = 0xC0380013\n\tERROR_VOLMGR_DISK_REVECTORING_FAILED                                      syscall.Errno = 0xC0380014\n\tERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID                                     syscall.Errno = 0xC0380015\n\tERROR_VOLMGR_DISK_SET_NOT_CONTAINED                                       syscall.Errno = 0xC0380016\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                                syscall.Errno = 0xC0380017\n\tERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                 syscall.Errno = 0xC0380018\n\tERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                   syscall.Errno = 0xC0380019\n\tERROR_VOLMGR_EXTENT_ALREADY_USED                                          syscall.Errno = 0xC038001A\n\tERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS                                        syscall.Errno = 0xC038001B\n\tERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                  syscall.Errno = 0xC038001C\n\tERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                    syscall.Errno = 0xC038001D\n\tERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                                syscall.Errno = 0xC038001E\n\tERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                           syscall.Errno = 0xC038001F\n\tERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                 syscall.Errno = 0xC0380020\n\tERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID                                    syscall.Errno = 0xC0380021\n\tERROR_VOLMGR_MAXIMUM_REGISTERED_USERS                                     syscall.Errno = 0xC0380022\n\tERROR_VOLMGR_MEMBER_IN_SYNC                                               syscall.Errno = 0xC0380023\n\tERROR_VOLMGR_MEMBER_INDEX_DUPLICATE                                       syscall.Errno = 0xC0380024\n\tERROR_VOLMGR_MEMBER_INDEX_INVALID                                         syscall.Errno = 0xC0380025\n\tERROR_VOLMGR_MEMBER_MISSING                                               syscall.Errno = 0xC0380026\n\tERROR_VOLMGR_MEMBER_NOT_DETACHED                                          syscall.Errno = 0xC0380027\n\tERROR_VOLMGR_MEMBER_REGENERATING                                          syscall.Errno = 0xC0380028\n\tERROR_VOLMGR_ALL_DISKS_FAILED                                             syscall.Errno = 0xC0380029\n\tERROR_VOLMGR_NO_REGISTERED_USERS                                          syscall.Errno = 0xC038002A\n\tERROR_VOLMGR_NO_SUCH_USER                                                 syscall.Errno = 0xC038002B\n\tERROR_VOLMGR_NOTIFICATION_RESET                                           syscall.Errno = 0xC038002C\n\tERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                    syscall.Errno = 0xC038002D\n\tERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID                                     syscall.Errno = 0xC038002E\n\tERROR_VOLMGR_PACK_DUPLICATE                                               syscall.Errno = 0xC038002F\n\tERROR_VOLMGR_PACK_ID_INVALID                                              syscall.Errno = 0xC0380030\n\tERROR_VOLMGR_PACK_INVALID                                                 syscall.Errno = 0xC0380031\n\tERROR_VOLMGR_PACK_NAME_INVALID                                            syscall.Errno = 0xC0380032\n\tERROR_VOLMGR_PACK_OFFLINE                                                 syscall.Errno = 0xC0380033\n\tERROR_VOLMGR_PACK_HAS_QUORUM                                              syscall.Errno = 0xC0380034\n\tERROR_VOLMGR_PACK_WITHOUT_QUORUM                                          syscall.Errno = 0xC0380035\n\tERROR_VOLMGR_PARTITION_STYLE_INVALID                                      syscall.Errno = 0xC0380036\n\tERROR_VOLMGR_PARTITION_UPDATE_FAILED                                      syscall.Errno = 0xC0380037\n\tERROR_VOLMGR_PLEX_IN_SYNC                                                 syscall.Errno = 0xC0380038\n\tERROR_VOLMGR_PLEX_INDEX_DUPLICATE                                         syscall.Errno = 0xC0380039\n\tERROR_VOLMGR_PLEX_INDEX_INVALID                                           syscall.Errno = 0xC038003A\n\tERROR_VOLMGR_PLEX_LAST_ACTIVE                                             syscall.Errno = 0xC038003B\n\tERROR_VOLMGR_PLEX_MISSING                                                 syscall.Errno = 0xC038003C\n\tERROR_VOLMGR_PLEX_REGENERATING                                            syscall.Errno = 0xC038003D\n\tERROR_VOLMGR_PLEX_TYPE_INVALID                                            syscall.Errno = 0xC038003E\n\tERROR_VOLMGR_PLEX_NOT_RAID5                                               syscall.Errno = 0xC038003F\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE                                              syscall.Errno = 0xC0380040\n\tERROR_VOLMGR_STRUCTURE_SIZE_INVALID                                       syscall.Errno = 0xC0380041\n\tERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                               syscall.Errno = 0xC0380042\n\tERROR_VOLMGR_TRANSACTION_IN_PROGRESS                                      syscall.Errno = 0xC0380043\n\tERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                                syscall.Errno = 0xC0380044\n\tERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                 syscall.Errno = 0xC0380045\n\tERROR_VOLMGR_VOLUME_ID_INVALID                                            syscall.Errno = 0xC0380046\n\tERROR_VOLMGR_VOLUME_LENGTH_INVALID                                        syscall.Errno = 0xC0380047\n\tERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                       syscall.Errno = 0xC0380048\n\tERROR_VOLMGR_VOLUME_NOT_MIRRORED                                          syscall.Errno = 0xC0380049\n\tERROR_VOLMGR_VOLUME_NOT_RETAINED                                          syscall.Errno = 0xC038004A\n\tERROR_VOLMGR_VOLUME_OFFLINE                                               syscall.Errno = 0xC038004B\n\tERROR_VOLMGR_VOLUME_RETAINED                                              syscall.Errno = 0xC038004C\n\tERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                    syscall.Errno = 0xC038004D\n\tERROR_VOLMGR_DIFFERENT_SECTOR_SIZE                                        syscall.Errno = 0xC038004E\n\tERROR_VOLMGR_BAD_BOOT_DISK                                                syscall.Errno = 0xC038004F\n\tERROR_VOLMGR_PACK_CONFIG_OFFLINE                                          syscall.Errno = 0xC0380050\n\tERROR_VOLMGR_PACK_CONFIG_ONLINE                                           syscall.Errno = 0xC0380051\n\tERROR_VOLMGR_NOT_PRIMARY_PACK                                             syscall.Errno = 0xC0380052\n\tERROR_VOLMGR_PACK_LOG_UPDATE_FAILED                                       syscall.Errno = 0xC0380053\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                              syscall.Errno = 0xC0380054\n\tERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                            syscall.Errno = 0xC0380055\n\tERROR_VOLMGR_VOLUME_MIRRORED                                              syscall.Errno = 0xC0380056\n\tERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                      syscall.Errno = 0xC0380057\n\tERROR_VOLMGR_NO_VALID_LOG_COPIES                                          syscall.Errno = 0xC0380058\n\tERROR_VOLMGR_PRIMARY_PACK_PRESENT                                         syscall.Errno = 0xC0380059\n\tERROR_VOLMGR_NUMBER_OF_DISKS_INVALID                                      syscall.Errno = 0xC038005A\n\tERROR_VOLMGR_MIRROR_NOT_SUPPORTED                                         syscall.Errno = 0xC038005B\n\tERROR_VOLMGR_RAID5_NOT_SUPPORTED                                          syscall.Errno = 0xC038005C\n\tERROR_BCD_NOT_ALL_ENTRIES_IMPORTED                                        syscall.Errno = 0x80390001\n\tERROR_BCD_TOO_MANY_ELEMENTS                                               syscall.Errno = 0xC0390002\n\tERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                    syscall.Errno = 0x80390003\n\tERROR_VHD_DRIVE_FOOTER_MISSING                                            syscall.Errno = 0xC03A0001\n\tERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                  syscall.Errno = 0xC03A0002\n\tERROR_VHD_DRIVE_FOOTER_CORRUPT                                            syscall.Errno = 0xC03A0003\n\tERROR_VHD_FORMAT_UNKNOWN                                                  syscall.Errno = 0xC03A0004\n\tERROR_VHD_FORMAT_UNSUPPORTED_VERSION                                      syscall.Errno = 0xC03A0005\n\tERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                 syscall.Errno = 0xC03A0006\n\tERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                               syscall.Errno = 0xC03A0007\n\tERROR_VHD_SPARSE_HEADER_CORRUPT                                           syscall.Errno = 0xC03A0008\n\tERROR_VHD_BLOCK_ALLOCATION_FAILURE                                        syscall.Errno = 0xC03A0009\n\tERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                  syscall.Errno = 0xC03A000A\n\tERROR_VHD_INVALID_BLOCK_SIZE                                              syscall.Errno = 0xC03A000B\n\tERROR_VHD_BITMAP_MISMATCH                                                 syscall.Errno = 0xC03A000C\n\tERROR_VHD_PARENT_VHD_NOT_FOUND                                            syscall.Errno = 0xC03A000D\n\tERROR_VHD_CHILD_PARENT_ID_MISMATCH                                        syscall.Errno = 0xC03A000E\n\tERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                 syscall.Errno = 0xC03A000F\n\tERROR_VHD_METADATA_READ_FAILURE                                           syscall.Errno = 0xC03A0010\n\tERROR_VHD_METADATA_WRITE_FAILURE                                          syscall.Errno = 0xC03A0011\n\tERROR_VHD_INVALID_SIZE                                                    syscall.Errno = 0xC03A0012\n\tERROR_VHD_INVALID_FILE_SIZE                                               syscall.Errno = 0xC03A0013\n\tERROR_VIRTDISK_PROVIDER_NOT_FOUND                                         syscall.Errno = 0xC03A0014\n\tERROR_VIRTDISK_NOT_VIRTUAL_DISK                                           syscall.Errno = 0xC03A0015\n\tERROR_VHD_PARENT_VHD_ACCESS_DENIED                                        syscall.Errno = 0xC03A0016\n\tERROR_VHD_CHILD_PARENT_SIZE_MISMATCH                                      syscall.Errno = 0xC03A0017\n\tERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                               syscall.Errno = 0xC03A0018\n\tERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                              syscall.Errno = 0xC03A0019\n\tERROR_VIRTUAL_DISK_LIMITATION                                             syscall.Errno = 0xC03A001A\n\tERROR_VHD_INVALID_TYPE                                                    syscall.Errno = 0xC03A001B\n\tERROR_VHD_INVALID_STATE                                                   syscall.Errno = 0xC03A001C\n\tERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                               syscall.Errno = 0xC03A001D\n\tERROR_VIRTDISK_DISK_ALREADY_OWNED                                         syscall.Errno = 0xC03A001E\n\tERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                   syscall.Errno = 0xC03A001F\n\tERROR_CTLOG_TRACKING_NOT_INITIALIZED                                      syscall.Errno = 0xC03A0020\n\tERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                 syscall.Errno = 0xC03A0021\n\tERROR_CTLOG_VHD_CHANGED_OFFLINE                                           syscall.Errno = 0xC03A0022\n\tERROR_CTLOG_INVALID_TRACKING_STATE                                        syscall.Errno = 0xC03A0023\n\tERROR_CTLOG_INCONSISTENT_TRACKING_FILE                                    syscall.Errno = 0xC03A0024\n\tERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA                                      syscall.Errno = 0xC03A0025\n\tERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                          syscall.Errno = 0xC03A0026\n\tERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                        syscall.Errno = 0xC03A0027\n\tERROR_VHD_METADATA_FULL                                                   syscall.Errno = 0xC03A0028\n\tERROR_VHD_INVALID_CHANGE_TRACKING_ID                                      syscall.Errno = 0xC03A0029\n\tERROR_VHD_CHANGE_TRACKING_DISABLED                                        syscall.Errno = 0xC03A002A\n\tERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION                             syscall.Errno = 0xC03A0030\n\tERROR_QUERY_STORAGE_ERROR                                                 syscall.Errno = 0x803A0001\n\tHCN_E_NETWORK_NOT_FOUND                                                   Handle        = 0x803B0001\n\tHCN_E_ENDPOINT_NOT_FOUND                                                  Handle        = 0x803B0002\n\tHCN_E_LAYER_NOT_FOUND                                                     Handle        = 0x803B0003\n\tHCN_E_SWITCH_NOT_FOUND                                                    Handle        = 0x803B0004\n\tHCN_E_SUBNET_NOT_FOUND                                                    Handle        = 0x803B0005\n\tHCN_E_ADAPTER_NOT_FOUND                                                   Handle        = 0x803B0006\n\tHCN_E_PORT_NOT_FOUND                                                      Handle        = 0x803B0007\n\tHCN_E_POLICY_NOT_FOUND                                                    Handle        = 0x803B0008\n\tHCN_E_VFP_PORTSETTING_NOT_FOUND                                           Handle        = 0x803B0009\n\tHCN_E_INVALID_NETWORK                                                     Handle        = 0x803B000A\n\tHCN_E_INVALID_NETWORK_TYPE                                                Handle        = 0x803B000B\n\tHCN_E_INVALID_ENDPOINT                                                    Handle        = 0x803B000C\n\tHCN_E_INVALID_POLICY                                                      Handle        = 0x803B000D\n\tHCN_E_INVALID_POLICY_TYPE                                                 Handle        = 0x803B000E\n\tHCN_E_INVALID_REMOTE_ENDPOINT_OPERATION                                   Handle        = 0x803B000F\n\tHCN_E_NETWORK_ALREADY_EXISTS                                              Handle        = 0x803B0010\n\tHCN_E_LAYER_ALREADY_EXISTS                                                Handle        = 0x803B0011\n\tHCN_E_POLICY_ALREADY_EXISTS                                               Handle        = 0x803B0012\n\tHCN_E_PORT_ALREADY_EXISTS                                                 Handle        = 0x803B0013\n\tHCN_E_ENDPOINT_ALREADY_ATTACHED                                           Handle        = 0x803B0014\n\tHCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0015\n\tHCN_E_MAPPING_NOT_SUPPORTED                                               Handle        = 0x803B0016\n\tHCN_E_DEGRADED_OPERATION                                                  Handle        = 0x803B0017\n\tHCN_E_SHARED_SWITCH_MODIFICATION                                          Handle        = 0x803B0018\n\tHCN_E_GUID_CONVERSION_FAILURE                                             Handle        = 0x803B0019\n\tHCN_E_REGKEY_FAILURE                                                      Handle        = 0x803B001A\n\tHCN_E_INVALID_JSON                                                        Handle        = 0x803B001B\n\tHCN_E_INVALID_JSON_REFERENCE                                              Handle        = 0x803B001C\n\tHCN_E_ENDPOINT_SHARING_DISABLED                                           Handle        = 0x803B001D\n\tHCN_E_INVALID_IP                                                          Handle        = 0x803B001E\n\tHCN_E_SWITCH_EXTENSION_NOT_FOUND                                          Handle        = 0x803B001F\n\tHCN_E_MANAGER_STOPPED                                                     Handle        = 0x803B0020\n\tGCN_E_MODULE_NOT_FOUND                                                    Handle        = 0x803B0021\n\tGCN_E_NO_REQUEST_HANDLERS                                                 Handle        = 0x803B0022\n\tGCN_E_REQUEST_UNSUPPORTED                                                 Handle        = 0x803B0023\n\tGCN_E_RUNTIMEKEYS_FAILED                                                  Handle        = 0x803B0024\n\tGCN_E_NETADAPTER_TIMEOUT                                                  Handle        = 0x803B0025\n\tGCN_E_NETADAPTER_NOT_FOUND                                                Handle        = 0x803B0026\n\tGCN_E_NETCOMPARTMENT_NOT_FOUND                                            Handle        = 0x803B0027\n\tGCN_E_NETINTERFACE_NOT_FOUND                                              Handle        = 0x803B0028\n\tGCN_E_DEFAULTNAMESPACE_EXISTS                                             Handle        = 0x803B0029\n\tHCN_E_ICS_DISABLED                                                        Handle        = 0x803B002A\n\tHCN_E_ENDPOINT_NAMESPACE_ALREADY_EXISTS                                   Handle        = 0x803B002B\n\tHCN_E_ENTITY_HAS_REFERENCES                                               Handle        = 0x803B002C\n\tHCN_E_INVALID_INTERNAL_PORT                                               Handle        = 0x803B002D\n\tHCN_E_NAMESPACE_ATTACH_FAILED                                             Handle        = 0x803B002E\n\tHCN_E_ADDR_INVALID_OR_RESERVED                                            Handle        = 0x803B002F\n\tSDIAG_E_CANCELLED                                                         syscall.Errno = 0x803C0100\n\tSDIAG_E_SCRIPT                                                            syscall.Errno = 0x803C0101\n\tSDIAG_E_POWERSHELL                                                        syscall.Errno = 0x803C0102\n\tSDIAG_E_MANAGEDHOST                                                       syscall.Errno = 0x803C0103\n\tSDIAG_E_NOVERIFIER                                                        syscall.Errno = 0x803C0104\n\tSDIAG_S_CANNOTRUN                                                         syscall.Errno = 0x003C0105\n\tSDIAG_E_DISABLED                                                          syscall.Errno = 0x803C0106\n\tSDIAG_E_TRUST                                                             syscall.Errno = 0x803C0107\n\tSDIAG_E_CANNOTRUN                                                         syscall.Errno = 0x803C0108\n\tSDIAG_E_VERSION                                                           syscall.Errno = 0x803C0109\n\tSDIAG_E_RESOURCE                                                          syscall.Errno = 0x803C010A\n\tSDIAG_E_ROOTCAUSE                                                         syscall.Errno = 0x803C010B\n\tWPN_E_CHANNEL_CLOSED                                                      Handle        = 0x803E0100\n\tWPN_E_CHANNEL_REQUEST_NOT_COMPLETE                                        Handle        = 0x803E0101\n\tWPN_E_INVALID_APP                                                         Handle        = 0x803E0102\n\tWPN_E_OUTSTANDING_CHANNEL_REQUEST                                         Handle        = 0x803E0103\n\tWPN_E_DUPLICATE_CHANNEL                                                   Handle        = 0x803E0104\n\tWPN_E_PLATFORM_UNAVAILABLE                                                Handle        = 0x803E0105\n\tWPN_E_NOTIFICATION_POSTED                                                 Handle        = 0x803E0106\n\tWPN_E_NOTIFICATION_HIDDEN                                                 Handle        = 0x803E0107\n\tWPN_E_NOTIFICATION_NOT_POSTED                                             Handle        = 0x803E0108\n\tWPN_E_CLOUD_DISABLED                                                      Handle        = 0x803E0109\n\tWPN_E_CLOUD_INCAPABLE                                                     Handle        = 0x803E0110\n\tWPN_E_CLOUD_AUTH_UNAVAILABLE                                              Handle        = 0x803E011A\n\tWPN_E_CLOUD_SERVICE_UNAVAILABLE                                           Handle        = 0x803E011B\n\tWPN_E_FAILED_LOCK_SCREEN_UPDATE_INTIALIZATION                             Handle        = 0x803E011C\n\tWPN_E_NOTIFICATION_DISABLED                                               Handle        = 0x803E0111\n\tWPN_E_NOTIFICATION_INCAPABLE                                              Handle        = 0x803E0112\n\tWPN_E_INTERNET_INCAPABLE                                                  Handle        = 0x803E0113\n\tWPN_E_NOTIFICATION_TYPE_DISABLED                                          Handle        = 0x803E0114\n\tWPN_E_NOTIFICATION_SIZE                                                   Handle        = 0x803E0115\n\tWPN_E_TAG_SIZE                                                            Handle        = 0x803E0116\n\tWPN_E_ACCESS_DENIED                                                       Handle        = 0x803E0117\n\tWPN_E_DUPLICATE_REGISTRATION                                              Handle        = 0x803E0118\n\tWPN_E_PUSH_NOTIFICATION_INCAPABLE                                         Handle        = 0x803E0119\n\tWPN_E_DEV_ID_SIZE                                                         Handle        = 0x803E0120\n\tWPN_E_TAG_ALPHANUMERIC                                                    Handle        = 0x803E012A\n\tWPN_E_INVALID_HTTP_STATUS_CODE                                            Handle        = 0x803E012B\n\tWPN_E_OUT_OF_SESSION                                                      Handle        = 0x803E0200\n\tWPN_E_POWER_SAVE                                                          Handle        = 0x803E0201\n\tWPN_E_IMAGE_NOT_FOUND_IN_CACHE                                            Handle        = 0x803E0202\n\tWPN_E_ALL_URL_NOT_COMPLETED                                               Handle        = 0x803E0203\n\tWPN_E_INVALID_CLOUD_IMAGE                                                 Handle        = 0x803E0204\n\tWPN_E_NOTIFICATION_ID_MATCHED                                             Handle        = 0x803E0205\n\tWPN_E_CALLBACK_ALREADY_REGISTERED                                         Handle        = 0x803E0206\n\tWPN_E_TOAST_NOTIFICATION_DROPPED                                          Handle        = 0x803E0207\n\tWPN_E_STORAGE_LOCKED                                                      Handle        = 0x803E0208\n\tWPN_E_GROUP_SIZE                                                          Handle        = 0x803E0209\n\tWPN_E_GROUP_ALPHANUMERIC                                                  Handle        = 0x803E020A\n\tWPN_E_CLOUD_DISABLED_FOR_APP                                              Handle        = 0x803E020B\n\tE_MBN_CONTEXT_NOT_ACTIVATED                                               Handle        = 0x80548201\n\tE_MBN_BAD_SIM                                                             Handle        = 0x80548202\n\tE_MBN_DATA_CLASS_NOT_AVAILABLE                                            Handle        = 0x80548203\n\tE_MBN_INVALID_ACCESS_STRING                                               Handle        = 0x80548204\n\tE_MBN_MAX_ACTIVATED_CONTEXTS                                              Handle        = 0x80548205\n\tE_MBN_PACKET_SVC_DETACHED                                                 Handle        = 0x80548206\n\tE_MBN_PROVIDER_NOT_VISIBLE                                                Handle        = 0x80548207\n\tE_MBN_RADIO_POWER_OFF                                                     Handle        = 0x80548208\n\tE_MBN_SERVICE_NOT_ACTIVATED                                               Handle        = 0x80548209\n\tE_MBN_SIM_NOT_INSERTED                                                    Handle        = 0x8054820A\n\tE_MBN_VOICE_CALL_IN_PROGRESS                                              Handle        = 0x8054820B\n\tE_MBN_INVALID_CACHE                                                       Handle        = 0x8054820C\n\tE_MBN_NOT_REGISTERED                                                      Handle        = 0x8054820D\n\tE_MBN_PROVIDERS_NOT_FOUND                                                 Handle        = 0x8054820E\n\tE_MBN_PIN_NOT_SUPPORTED                                                   Handle        = 0x8054820F\n\tE_MBN_PIN_REQUIRED                                                        Handle        = 0x80548210\n\tE_MBN_PIN_DISABLED                                                        Handle        = 0x80548211\n\tE_MBN_FAILURE                                                             Handle        = 0x80548212\n\tE_MBN_INVALID_PROFILE                                                     Handle        = 0x80548218\n\tE_MBN_DEFAULT_PROFILE_EXIST                                               Handle        = 0x80548219\n\tE_MBN_SMS_ENCODING_NOT_SUPPORTED                                          Handle        = 0x80548220\n\tE_MBN_SMS_FILTER_NOT_SUPPORTED                                            Handle        = 0x80548221\n\tE_MBN_SMS_INVALID_MEMORY_INDEX                                            Handle        = 0x80548222\n\tE_MBN_SMS_LANG_NOT_SUPPORTED                                              Handle        = 0x80548223\n\tE_MBN_SMS_MEMORY_FAILURE                                                  Handle        = 0x80548224\n\tE_MBN_SMS_NETWORK_TIMEOUT                                                 Handle        = 0x80548225\n\tE_MBN_SMS_UNKNOWN_SMSC_ADDRESS                                            Handle        = 0x80548226\n\tE_MBN_SMS_FORMAT_NOT_SUPPORTED                                            Handle        = 0x80548227\n\tE_MBN_SMS_OPERATION_NOT_ALLOWED                                           Handle        = 0x80548228\n\tE_MBN_SMS_MEMORY_FULL                                                     Handle        = 0x80548229\n\tPEER_E_IPV6_NOT_INSTALLED                                                 Handle        = 0x80630001\n\tPEER_E_NOT_INITIALIZED                                                    Handle        = 0x80630002\n\tPEER_E_CANNOT_START_SERVICE                                               Handle        = 0x80630003\n\tPEER_E_NOT_LICENSED                                                       Handle        = 0x80630004\n\tPEER_E_INVALID_GRAPH                                                      Handle        = 0x80630010\n\tPEER_E_DBNAME_CHANGED                                                     Handle        = 0x80630011\n\tPEER_E_DUPLICATE_GRAPH                                                    Handle        = 0x80630012\n\tPEER_E_GRAPH_NOT_READY                                                    Handle        = 0x80630013\n\tPEER_E_GRAPH_SHUTTING_DOWN                                                Handle        = 0x80630014\n\tPEER_E_GRAPH_IN_USE                                                       Handle        = 0x80630015\n\tPEER_E_INVALID_DATABASE                                                   Handle        = 0x80630016\n\tPEER_E_TOO_MANY_ATTRIBUTES                                                Handle        = 0x80630017\n\tPEER_E_CONNECTION_NOT_FOUND                                               Handle        = 0x80630103\n\tPEER_E_CONNECT_SELF                                                       Handle        = 0x80630106\n\tPEER_E_ALREADY_LISTENING                                                  Handle        = 0x80630107\n\tPEER_E_NODE_NOT_FOUND                                                     Handle        = 0x80630108\n\tPEER_E_CONNECTION_FAILED                                                  Handle        = 0x80630109\n\tPEER_E_CONNECTION_NOT_AUTHENTICATED                                       Handle        = 0x8063010A\n\tPEER_E_CONNECTION_REFUSED                                                 Handle        = 0x8063010B\n\tPEER_E_CLASSIFIER_TOO_LONG                                                Handle        = 0x80630201\n\tPEER_E_TOO_MANY_IDENTITIES                                                Handle        = 0x80630202\n\tPEER_E_NO_KEY_ACCESS                                                      Handle        = 0x80630203\n\tPEER_E_GROUPS_EXIST                                                       Handle        = 0x80630204\n\tPEER_E_RECORD_NOT_FOUND                                                   Handle        = 0x80630301\n\tPEER_E_DATABASE_ACCESSDENIED                                              Handle        = 0x80630302\n\tPEER_E_DBINITIALIZATION_FAILED                                            Handle        = 0x80630303\n\tPEER_E_MAX_RECORD_SIZE_EXCEEDED                                           Handle        = 0x80630304\n\tPEER_E_DATABASE_ALREADY_PRESENT                                           Handle        = 0x80630305\n\tPEER_E_DATABASE_NOT_PRESENT                                               Handle        = 0x80630306\n\tPEER_E_IDENTITY_NOT_FOUND                                                 Handle        = 0x80630401\n\tPEER_E_EVENT_HANDLE_NOT_FOUND                                             Handle        = 0x80630501\n\tPEER_E_INVALID_SEARCH                                                     Handle        = 0x80630601\n\tPEER_E_INVALID_ATTRIBUTES                                                 Handle        = 0x80630602\n\tPEER_E_INVITATION_NOT_TRUSTED                                             Handle        = 0x80630701\n\tPEER_E_CHAIN_TOO_LONG                                                     Handle        = 0x80630703\n\tPEER_E_INVALID_TIME_PERIOD                                                Handle        = 0x80630705\n\tPEER_E_CIRCULAR_CHAIN_DETECTED                                            Handle        = 0x80630706\n\tPEER_E_CERT_STORE_CORRUPTED                                               Handle        = 0x80630801\n\tPEER_E_NO_CLOUD                                                           Handle        = 0x80631001\n\tPEER_E_CLOUD_NAME_AMBIGUOUS                                               Handle        = 0x80631005\n\tPEER_E_INVALID_RECORD                                                     Handle        = 0x80632010\n\tPEER_E_NOT_AUTHORIZED                                                     Handle        = 0x80632020\n\tPEER_E_PASSWORD_DOES_NOT_MEET_POLICY                                      Handle        = 0x80632021\n\tPEER_E_DEFERRED_VALIDATION                                                Handle        = 0x80632030\n\tPEER_E_INVALID_GROUP_PROPERTIES                                           Handle        = 0x80632040\n\tPEER_E_INVALID_PEER_NAME                                                  Handle        = 0x80632050\n\tPEER_E_INVALID_CLASSIFIER                                                 Handle        = 0x80632060\n\tPEER_E_INVALID_FRIENDLY_NAME                                              Handle        = 0x80632070\n\tPEER_E_INVALID_ROLE_PROPERTY                                              Handle        = 0x80632071\n\tPEER_E_INVALID_CLASSIFIER_PROPERTY                                        Handle        = 0x80632072\n\tPEER_E_INVALID_RECORD_EXPIRATION                                          Handle        = 0x80632080\n\tPEER_E_INVALID_CREDENTIAL_INFO                                            Handle        = 0x80632081\n\tPEER_E_INVALID_CREDENTIAL                                                 Handle        = 0x80632082\n\tPEER_E_INVALID_RECORD_SIZE                                                Handle        = 0x80632083\n\tPEER_E_UNSUPPORTED_VERSION                                                Handle        = 0x80632090\n\tPEER_E_GROUP_NOT_READY                                                    Handle        = 0x80632091\n\tPEER_E_GROUP_IN_USE                                                       Handle        = 0x80632092\n\tPEER_E_INVALID_GROUP                                                      Handle        = 0x80632093\n\tPEER_E_NO_MEMBERS_FOUND                                                   Handle        = 0x80632094\n\tPEER_E_NO_MEMBER_CONNECTIONS                                              Handle        = 0x80632095\n\tPEER_E_UNABLE_TO_LISTEN                                                   Handle        = 0x80632096\n\tPEER_E_IDENTITY_DELETED                                                   Handle        = 0x806320A0\n\tPEER_E_SERVICE_NOT_AVAILABLE                                              Handle        = 0x806320A1\n\tPEER_E_CONTACT_NOT_FOUND                                                  Handle        = 0x80636001\n\tPEER_S_GRAPH_DATA_CREATED                                                 Handle        = 0x00630001\n\tPEER_S_NO_EVENT_DATA                                                      Handle        = 0x00630002\n\tPEER_S_ALREADY_CONNECTED                                                  Handle        = 0x00632000\n\tPEER_S_SUBSCRIPTION_EXISTS                                                Handle        = 0x00636000\n\tPEER_S_NO_CONNECTIVITY                                                    Handle        = 0x00630005\n\tPEER_S_ALREADY_A_MEMBER                                                   Handle        = 0x00630006\n\tPEER_E_CANNOT_CONVERT_PEER_NAME                                           Handle        = 0x80634001\n\tPEER_E_INVALID_PEER_HOST_NAME                                             Handle        = 0x80634002\n\tPEER_E_NO_MORE                                                            Handle        = 0x80634003\n\tPEER_E_PNRP_DUPLICATE_PEER_NAME                                           Handle        = 0x80634005\n\tPEER_E_INVITE_CANCELLED                                                   Handle        = 0x80637000\n\tPEER_E_INVITE_RESPONSE_NOT_AVAILABLE                                      Handle        = 0x80637001\n\tPEER_E_NOT_SIGNED_IN                                                      Handle        = 0x80637003\n\tPEER_E_PRIVACY_DECLINED                                                   Handle        = 0x80637004\n\tPEER_E_TIMEOUT                                                            Handle        = 0x80637005\n\tPEER_E_INVALID_ADDRESS                                                    Handle        = 0x80637007\n\tPEER_E_FW_EXCEPTION_DISABLED                                              Handle        = 0x80637008\n\tPEER_E_FW_BLOCKED_BY_POLICY                                               Handle        = 0x80637009\n\tPEER_E_FW_BLOCKED_BY_SHIELDS_UP                                           Handle        = 0x8063700A\n\tPEER_E_FW_DECLINED                                                        Handle        = 0x8063700B\n\tUI_E_CREATE_FAILED                                                        Handle        = 0x802A0001\n\tUI_E_SHUTDOWN_CALLED                                                      Handle        = 0x802A0002\n\tUI_E_ILLEGAL_REENTRANCY                                                   Handle        = 0x802A0003\n\tUI_E_OBJECT_SEALED                                                        Handle        = 0x802A0004\n\tUI_E_VALUE_NOT_SET                                                        Handle        = 0x802A0005\n\tUI_E_VALUE_NOT_DETERMINED                                                 Handle        = 0x802A0006\n\tUI_E_INVALID_OUTPUT                                                       Handle        = 0x802A0007\n\tUI_E_BOOLEAN_EXPECTED                                                     Handle        = 0x802A0008\n\tUI_E_DIFFERENT_OWNER                                                      Handle        = 0x802A0009\n\tUI_E_AMBIGUOUS_MATCH                                                      Handle        = 0x802A000A\n\tUI_E_FP_OVERFLOW                                                          Handle        = 0x802A000B\n\tUI_E_WRONG_THREAD                                                         Handle        = 0x802A000C\n\tUI_E_STORYBOARD_ACTIVE                                                    Handle        = 0x802A0101\n\tUI_E_STORYBOARD_NOT_PLAYING                                               Handle        = 0x802A0102\n\tUI_E_START_KEYFRAME_AFTER_END                                             Handle        = 0x802A0103\n\tUI_E_END_KEYFRAME_NOT_DETERMINED                                          Handle        = 0x802A0104\n\tUI_E_LOOPS_OVERLAP                                                        Handle        = 0x802A0105\n\tUI_E_TRANSITION_ALREADY_USED                                              Handle        = 0x802A0106\n\tUI_E_TRANSITION_NOT_IN_STORYBOARD                                         Handle        = 0x802A0107\n\tUI_E_TRANSITION_ECLIPSED                                                  Handle        = 0x802A0108\n\tUI_E_TIME_BEFORE_LAST_UPDATE                                              Handle        = 0x802A0109\n\tUI_E_TIMER_CLIENT_ALREADY_CONNECTED                                       Handle        = 0x802A010A\n\tUI_E_INVALID_DIMENSION                                                    Handle        = 0x802A010B\n\tUI_E_PRIMITIVE_OUT_OF_BOUNDS                                              Handle        = 0x802A010C\n\tUI_E_WINDOW_CLOSED                                                        Handle        = 0x802A0201\n\tE_BLUETOOTH_ATT_INVALID_HANDLE                                            Handle        = 0x80650001\n\tE_BLUETOOTH_ATT_READ_NOT_PERMITTED                                        Handle        = 0x80650002\n\tE_BLUETOOTH_ATT_WRITE_NOT_PERMITTED                                       Handle        = 0x80650003\n\tE_BLUETOOTH_ATT_INVALID_PDU                                               Handle        = 0x80650004\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION                               Handle        = 0x80650005\n\tE_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED                                     Handle        = 0x80650006\n\tE_BLUETOOTH_ATT_INVALID_OFFSET                                            Handle        = 0x80650007\n\tE_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION                                Handle        = 0x80650008\n\tE_BLUETOOTH_ATT_PREPARE_QUEUE_FULL                                        Handle        = 0x80650009\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND                                       Handle        = 0x8065000A\n\tE_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG                                        Handle        = 0x8065000B\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                          Handle        = 0x8065000C\n\tE_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                            Handle        = 0x8065000D\n\tE_BLUETOOTH_ATT_UNLIKELY                                                  Handle        = 0x8065000E\n\tE_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION                                   Handle        = 0x8065000F\n\tE_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE                                    Handle        = 0x80650010\n\tE_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES                                    Handle        = 0x80650011\n\tE_BLUETOOTH_ATT_UNKNOWN_ERROR                                             Handle        = 0x80651000\n\tE_AUDIO_ENGINE_NODE_NOT_FOUND                                             Handle        = 0x80660001\n\tE_HDAUDIO_EMPTY_CONNECTION_LIST                                           Handle        = 0x80660002\n\tE_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                                   Handle        = 0x80660003\n\tE_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                      Handle        = 0x80660004\n\tE_HDAUDIO_NULL_LINKED_LIST_ENTRY                                          Handle        = 0x80660005\n\tSTATEREPOSITORY_E_CONCURRENCY_LOCKING_FAILURE                             Handle        = 0x80670001\n\tSTATEREPOSITORY_E_STATEMENT_INPROGRESS                                    Handle        = 0x80670002\n\tSTATEREPOSITORY_E_CONFIGURATION_INVALID                                   Handle        = 0x80670003\n\tSTATEREPOSITORY_E_UNKNOWN_SCHEMA_VERSION                                  Handle        = 0x80670004\n\tSTATEREPOSITORY_ERROR_DICTIONARY_CORRUPTED                                Handle        = 0x80670005\n\tSTATEREPOSITORY_E_BLOCKED                                                 Handle        = 0x80670006\n\tSTATEREPOSITORY_E_BUSY_RETRY                                              Handle        = 0x80670007\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_RETRY                                     Handle        = 0x80670008\n\tSTATEREPOSITORY_E_LOCKED_RETRY                                            Handle        = 0x80670009\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_RETRY                                Handle        = 0x8067000A\n\tSTATEREPOSITORY_E_TRANSACTION_REQUIRED                                    Handle        = 0x8067000B\n\tSTATEREPOSITORY_E_BUSY_TIMEOUT_EXCEEDED                                   Handle        = 0x8067000C\n\tSTATEREPOSITORY_E_BUSY_RECOVERY_TIMEOUT_EXCEEDED                          Handle        = 0x8067000D\n\tSTATEREPOSITORY_E_LOCKED_TIMEOUT_EXCEEDED                                 Handle        = 0x8067000E\n\tSTATEREPOSITORY_E_LOCKED_SHAREDCACHE_TIMEOUT_EXCEEDED                     Handle        = 0x8067000F\n\tSTATEREPOSITORY_E_SERVICE_STOP_IN_PROGRESS                                Handle        = 0x80670010\n\tSTATEREPOSTORY_E_NESTED_TRANSACTION_NOT_SUPPORTED                         Handle        = 0x80670011\n\tSTATEREPOSITORY_ERROR_CACHE_CORRUPTED                                     Handle        = 0x80670012\n\tSTATEREPOSITORY_TRANSACTION_CALLER_ID_CHANGED                             Handle        = 0x00670013\n\tSTATEREPOSITORY_TRANSACTION_IN_PROGRESS                                   Handle        = 0x00670014\n\tERROR_SPACES_POOL_WAS_DELETED                                             Handle        = 0x00E70001\n\tERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID                                    Handle        = 0x80E70001\n\tERROR_SPACES_INTERNAL_ERROR                                               Handle        = 0x80E70002\n\tERROR_SPACES_RESILIENCY_TYPE_INVALID                                      Handle        = 0x80E70003\n\tERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID                                    Handle        = 0x80E70004\n\tERROR_SPACES_DRIVE_REDUNDANCY_INVALID                                     Handle        = 0x80E70006\n\tERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID                                Handle        = 0x80E70007\n\tERROR_SPACES_PARITY_LAYOUT_INVALID                                        Handle        = 0x80E70008\n\tERROR_SPACES_INTERLEAVE_LENGTH_INVALID                                    Handle        = 0x80E70009\n\tERROR_SPACES_NUMBER_OF_COLUMNS_INVALID                                    Handle        = 0x80E7000A\n\tERROR_SPACES_NOT_ENOUGH_DRIVES                                            Handle        = 0x80E7000B\n\tERROR_SPACES_EXTENDED_ERROR                                               Handle        = 0x80E7000C\n\tERROR_SPACES_PROVISIONING_TYPE_INVALID                                    Handle        = 0x80E7000D\n\tERROR_SPACES_ALLOCATION_SIZE_INVALID                                      Handle        = 0x80E7000E\n\tERROR_SPACES_ENCLOSURE_AWARE_INVALID                                      Handle        = 0x80E7000F\n\tERROR_SPACES_WRITE_CACHE_SIZE_INVALID                                     Handle        = 0x80E70010\n\tERROR_SPACES_NUMBER_OF_GROUPS_INVALID                                     Handle        = 0x80E70011\n\tERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                              Handle        = 0x80E70012\n\tERROR_SPACES_ENTRY_INCOMPLETE                                             Handle        = 0x80E70013\n\tERROR_SPACES_ENTRY_INVALID                                                Handle        = 0x80E70014\n\tERROR_VOLSNAP_BOOTFILE_NOT_VALID                                          Handle        = 0x80820001\n\tERROR_VOLSNAP_ACTIVATION_TIMEOUT                                          Handle        = 0x80820002\n\tERROR_TIERING_NOT_SUPPORTED_ON_VOLUME                                     Handle        = 0x80830001\n\tERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS                                 Handle        = 0x80830002\n\tERROR_TIERING_STORAGE_TIER_NOT_FOUND                                      Handle        = 0x80830003\n\tERROR_TIERING_INVALID_FILE_ID                                             Handle        = 0x80830004\n\tERROR_TIERING_WRONG_CLUSTER_NODE                                          Handle        = 0x80830005\n\tERROR_TIERING_ALREADY_PROCESSING                                          Handle        = 0x80830006\n\tERROR_TIERING_CANNOT_PIN_OBJECT                                           Handle        = 0x80830007\n\tERROR_TIERING_FILE_IS_NOT_PINNED                                          Handle        = 0x80830008\n\tERROR_NOT_A_TIERED_VOLUME                                                 Handle        = 0x80830009\n\tERROR_ATTRIBUTE_NOT_PRESENT                                               Handle        = 0x8083000A\n\tERROR_SECCORE_INVALID_COMMAND                                             Handle        = 0xC0E80000\n\tERROR_NO_APPLICABLE_APP_LICENSES_FOUND                                    Handle        = 0xC0EA0001\n\tERROR_CLIP_LICENSE_NOT_FOUND                                              Handle        = 0xC0EA0002\n\tERROR_CLIP_DEVICE_LICENSE_MISSING                                         Handle        = 0xC0EA0003\n\tERROR_CLIP_LICENSE_INVALID_SIGNATURE                                      Handle        = 0xC0EA0004\n\tERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                           Handle        = 0xC0EA0005\n\tERROR_CLIP_LICENSE_EXPIRED                                                Handle        = 0xC0EA0006\n\tERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                               Handle        = 0xC0EA0007\n\tERROR_CLIP_LICENSE_NOT_SIGNED                                             Handle        = 0xC0EA0008\n\tERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                           Handle        = 0xC0EA0009\n\tERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH                                     Handle        = 0xC0EA000A\n\tDXGI_STATUS_OCCLUDED                                                      Handle        = 0x087A0001\n\tDXGI_STATUS_CLIPPED                                                       Handle        = 0x087A0002\n\tDXGI_STATUS_NO_REDIRECTION                                                Handle        = 0x087A0004\n\tDXGI_STATUS_NO_DESKTOP_ACCESS                                             Handle        = 0x087A0005\n\tDXGI_STATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                  Handle        = 0x087A0006\n\tDXGI_STATUS_MODE_CHANGED                                                  Handle        = 0x087A0007\n\tDXGI_STATUS_MODE_CHANGE_IN_PROGRESS                                       Handle        = 0x087A0008\n\tDXGI_ERROR_INVALID_CALL                                                   Handle        = 0x887A0001\n\tDXGI_ERROR_NOT_FOUND                                                      Handle        = 0x887A0002\n\tDXGI_ERROR_MORE_DATA                                                      Handle        = 0x887A0003\n\tDXGI_ERROR_UNSUPPORTED                                                    Handle        = 0x887A0004\n\tDXGI_ERROR_DEVICE_REMOVED                                                 Handle        = 0x887A0005\n\tDXGI_ERROR_DEVICE_HUNG                                                    Handle        = 0x887A0006\n\tDXGI_ERROR_DEVICE_RESET                                                   Handle        = 0x887A0007\n\tDXGI_ERROR_WAS_STILL_DRAWING                                              Handle        = 0x887A000A\n\tDXGI_ERROR_FRAME_STATISTICS_DISJOINT                                      Handle        = 0x887A000B\n\tDXGI_ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE                                   Handle        = 0x887A000C\n\tDXGI_ERROR_DRIVER_INTERNAL_ERROR                                          Handle        = 0x887A0020\n\tDXGI_ERROR_NONEXCLUSIVE                                                   Handle        = 0x887A0021\n\tDXGI_ERROR_NOT_CURRENTLY_AVAILABLE                                        Handle        = 0x887A0022\n\tDXGI_ERROR_REMOTE_CLIENT_DISCONNECTED                                     Handle        = 0x887A0023\n\tDXGI_ERROR_REMOTE_OUTOFMEMORY                                             Handle        = 0x887A0024\n\tDXGI_ERROR_ACCESS_LOST                                                    Handle        = 0x887A0026\n\tDXGI_ERROR_WAIT_TIMEOUT                                                   Handle        = 0x887A0027\n\tDXGI_ERROR_SESSION_DISCONNECTED                                           Handle        = 0x887A0028\n\tDXGI_ERROR_RESTRICT_TO_OUTPUT_STALE                                       Handle        = 0x887A0029\n\tDXGI_ERROR_CANNOT_PROTECT_CONTENT                                         Handle        = 0x887A002A\n\tDXGI_ERROR_ACCESS_DENIED                                                  Handle        = 0x887A002B\n\tDXGI_ERROR_NAME_ALREADY_EXISTS                                            Handle        = 0x887A002C\n\tDXGI_ERROR_SDK_COMPONENT_MISSING                                          Handle        = 0x887A002D\n\tDXGI_ERROR_NOT_CURRENT                                                    Handle        = 0x887A002E\n\tDXGI_ERROR_HW_PROTECTION_OUTOFMEMORY                                      Handle        = 0x887A0030\n\tDXGI_ERROR_DYNAMIC_CODE_POLICY_VIOLATION                                  Handle        = 0x887A0031\n\tDXGI_ERROR_NON_COMPOSITED_UI                                              Handle        = 0x887A0032\n\tDXGI_STATUS_UNOCCLUDED                                                    Handle        = 0x087A0009\n\tDXGI_STATUS_DDA_WAS_STILL_DRAWING                                         Handle        = 0x087A000A\n\tDXGI_ERROR_MODE_CHANGE_IN_PROGRESS                                        Handle        = 0x887A0025\n\tDXGI_STATUS_PRESENT_REQUIRED                                              Handle        = 0x087A002F\n\tDXGI_ERROR_CACHE_CORRUPT                                                  Handle        = 0x887A0033\n\tDXGI_ERROR_CACHE_FULL                                                     Handle        = 0x887A0034\n\tDXGI_ERROR_CACHE_HASH_COLLISION                                           Handle        = 0x887A0035\n\tDXGI_ERROR_ALREADY_EXISTS                                                 Handle        = 0x887A0036\n\tDXGI_DDI_ERR_WASSTILLDRAWING                                              Handle        = 0x887B0001\n\tDXGI_DDI_ERR_UNSUPPORTED                                                  Handle        = 0x887B0002\n\tDXGI_DDI_ERR_NONEXCLUSIVE                                                 Handle        = 0x887B0003\n\tD3D10_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x88790001\n\tD3D10_ERROR_FILE_NOT_FOUND                                                Handle        = 0x88790002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_STATE_OBJECTS                                 Handle        = 0x887C0001\n\tD3D11_ERROR_FILE_NOT_FOUND                                                Handle        = 0x887C0002\n\tD3D11_ERROR_TOO_MANY_UNIQUE_VIEW_OBJECTS                                  Handle        = 0x887C0003\n\tD3D11_ERROR_DEFERRED_CONTEXT_MAP_WITHOUT_INITIAL_DISCARD                  Handle        = 0x887C0004\n\tD3D12_ERROR_ADAPTER_NOT_FOUND                                             Handle        = 0x887E0001\n\tD3D12_ERROR_DRIVER_VERSION_MISMATCH                                       Handle        = 0x887E0002\n\tD2DERR_WRONG_STATE                                                        Handle        = 0x88990001\n\tD2DERR_NOT_INITIALIZED                                                    Handle        = 0x88990002\n\tD2DERR_UNSUPPORTED_OPERATION                                              Handle        = 0x88990003\n\tD2DERR_SCANNER_FAILED                                                     Handle        = 0x88990004\n\tD2DERR_SCREEN_ACCESS_DENIED                                               Handle        = 0x88990005\n\tD2DERR_DISPLAY_STATE_INVALID                                              Handle        = 0x88990006\n\tD2DERR_ZERO_VECTOR                                                        Handle        = 0x88990007\n\tD2DERR_INTERNAL_ERROR                                                     Handle        = 0x88990008\n\tD2DERR_DISPLAY_FORMAT_NOT_SUPPORTED                                       Handle        = 0x88990009\n\tD2DERR_INVALID_CALL                                                       Handle        = 0x8899000A\n\tD2DERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8899000B\n\tD2DERR_RECREATE_TARGET                                                    Handle        = 0x8899000C\n\tD2DERR_TOO_MANY_SHADER_ELEMENTS                                           Handle        = 0x8899000D\n\tD2DERR_SHADER_COMPILE_FAILED                                              Handle        = 0x8899000E\n\tD2DERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8899000F\n\tD2DERR_UNSUPPORTED_VERSION                                                Handle        = 0x88990010\n\tD2DERR_BAD_NUMBER                                                         Handle        = 0x88990011\n\tD2DERR_WRONG_FACTORY                                                      Handle        = 0x88990012\n\tD2DERR_LAYER_ALREADY_IN_USE                                               Handle        = 0x88990013\n\tD2DERR_POP_CALL_DID_NOT_MATCH_PUSH                                        Handle        = 0x88990014\n\tD2DERR_WRONG_RESOURCE_DOMAIN                                              Handle        = 0x88990015\n\tD2DERR_PUSH_POP_UNBALANCED                                                Handle        = 0x88990016\n\tD2DERR_RENDER_TARGET_HAS_LAYER_OR_CLIPRECT                                Handle        = 0x88990017\n\tD2DERR_INCOMPATIBLE_BRUSH_TYPES                                           Handle        = 0x88990018\n\tD2DERR_WIN32_ERROR                                                        Handle        = 0x88990019\n\tD2DERR_TARGET_NOT_GDI_COMPATIBLE                                          Handle        = 0x8899001A\n\tD2DERR_TEXT_EFFECT_IS_WRONG_TYPE                                          Handle        = 0x8899001B\n\tD2DERR_TEXT_RENDERER_NOT_RELEASED                                         Handle        = 0x8899001C\n\tD2DERR_EXCEEDS_MAX_BITMAP_SIZE                                            Handle        = 0x8899001D\n\tD2DERR_INVALID_GRAPH_CONFIGURATION                                        Handle        = 0x8899001E\n\tD2DERR_INVALID_INTERNAL_GRAPH_CONFIGURATION                               Handle        = 0x8899001F\n\tD2DERR_CYCLIC_GRAPH                                                       Handle        = 0x88990020\n\tD2DERR_BITMAP_CANNOT_DRAW                                                 Handle        = 0x88990021\n\tD2DERR_OUTSTANDING_BITMAP_REFERENCES                                      Handle        = 0x88990022\n\tD2DERR_ORIGINAL_TARGET_NOT_BOUND                                          Handle        = 0x88990023\n\tD2DERR_INVALID_TARGET                                                     Handle        = 0x88990024\n\tD2DERR_BITMAP_BOUND_AS_TARGET                                             Handle        = 0x88990025\n\tD2DERR_INSUFFICIENT_DEVICE_CAPABILITIES                                   Handle        = 0x88990026\n\tD2DERR_INTERMEDIATE_TOO_LARGE                                             Handle        = 0x88990027\n\tD2DERR_EFFECT_IS_NOT_REGISTERED                                           Handle        = 0x88990028\n\tD2DERR_INVALID_PROPERTY                                                   Handle        = 0x88990029\n\tD2DERR_NO_SUBPROPERTIES                                                   Handle        = 0x8899002A\n\tD2DERR_PRINT_JOB_CLOSED                                                   Handle        = 0x8899002B\n\tD2DERR_PRINT_FORMAT_NOT_SUPPORTED                                         Handle        = 0x8899002C\n\tD2DERR_TOO_MANY_TRANSFORM_INPUTS                                          Handle        = 0x8899002D\n\tD2DERR_INVALID_GLYPH_IMAGE                                                Handle        = 0x8899002E\n\tDWRITE_E_FILEFORMAT                                                       Handle        = 0x88985000\n\tDWRITE_E_UNEXPECTED                                                       Handle        = 0x88985001\n\tDWRITE_E_NOFONT                                                           Handle        = 0x88985002\n\tDWRITE_E_FILENOTFOUND                                                     Handle        = 0x88985003\n\tDWRITE_E_FILEACCESS                                                       Handle        = 0x88985004\n\tDWRITE_E_FONTCOLLECTIONOBSOLETE                                           Handle        = 0x88985005\n\tDWRITE_E_ALREADYREGISTERED                                                Handle        = 0x88985006\n\tDWRITE_E_CACHEFORMAT                                                      Handle        = 0x88985007\n\tDWRITE_E_CACHEVERSION                                                     Handle        = 0x88985008\n\tDWRITE_E_UNSUPPORTEDOPERATION                                             Handle        = 0x88985009\n\tDWRITE_E_TEXTRENDERERINCOMPATIBLE                                         Handle        = 0x8898500A\n\tDWRITE_E_FLOWDIRECTIONCONFLICTS                                           Handle        = 0x8898500B\n\tDWRITE_E_NOCOLOR                                                          Handle        = 0x8898500C\n\tDWRITE_E_REMOTEFONT                                                       Handle        = 0x8898500D\n\tDWRITE_E_DOWNLOADCANCELLED                                                Handle        = 0x8898500E\n\tDWRITE_E_DOWNLOADFAILED                                                   Handle        = 0x8898500F\n\tDWRITE_E_TOOMANYDOWNLOADS                                                 Handle        = 0x88985010\n\tWINCODEC_ERR_WRONGSTATE                                                   Handle        = 0x88982F04\n\tWINCODEC_ERR_VALUEOUTOFRANGE                                              Handle        = 0x88982F05\n\tWINCODEC_ERR_UNKNOWNIMAGEFORMAT                                           Handle        = 0x88982F07\n\tWINCODEC_ERR_UNSUPPORTEDVERSION                                           Handle        = 0x88982F0B\n\tWINCODEC_ERR_NOTINITIALIZED                                               Handle        = 0x88982F0C\n\tWINCODEC_ERR_ALREADYLOCKED                                                Handle        = 0x88982F0D\n\tWINCODEC_ERR_PROPERTYNOTFOUND                                             Handle        = 0x88982F40\n\tWINCODEC_ERR_PROPERTYNOTSUPPORTED                                         Handle        = 0x88982F41\n\tWINCODEC_ERR_PROPERTYSIZE                                                 Handle        = 0x88982F42\n\tWINCODEC_ERR_CODECPRESENT                                                 Handle        = 0x88982F43\n\tWINCODEC_ERR_CODECNOTHUMBNAIL                                             Handle        = 0x88982F44\n\tWINCODEC_ERR_PALETTEUNAVAILABLE                                           Handle        = 0x88982F45\n\tWINCODEC_ERR_CODECTOOMANYSCANLINES                                        Handle        = 0x88982F46\n\tWINCODEC_ERR_INTERNALERROR                                                Handle        = 0x88982F48\n\tWINCODEC_ERR_SOURCERECTDOESNOTMATCHDIMENSIONS                             Handle        = 0x88982F49\n\tWINCODEC_ERR_COMPONENTNOTFOUND                                            Handle        = 0x88982F50\n\tWINCODEC_ERR_IMAGESIZEOUTOFRANGE                                          Handle        = 0x88982F51\n\tWINCODEC_ERR_TOOMUCHMETADATA                                              Handle        = 0x88982F52\n\tWINCODEC_ERR_BADIMAGE                                                     Handle        = 0x88982F60\n\tWINCODEC_ERR_BADHEADER                                                    Handle        = 0x88982F61\n\tWINCODEC_ERR_FRAMEMISSING                                                 Handle        = 0x88982F62\n\tWINCODEC_ERR_BADMETADATAHEADER                                            Handle        = 0x88982F63\n\tWINCODEC_ERR_BADSTREAMDATA                                                Handle        = 0x88982F70\n\tWINCODEC_ERR_STREAMWRITE                                                  Handle        = 0x88982F71\n\tWINCODEC_ERR_STREAMREAD                                                   Handle        = 0x88982F72\n\tWINCODEC_ERR_STREAMNOTAVAILABLE                                           Handle        = 0x88982F73\n\tWINCODEC_ERR_UNSUPPORTEDPIXELFORMAT                                       Handle        = 0x88982F80\n\tWINCODEC_ERR_UNSUPPORTEDOPERATION                                         Handle        = 0x88982F81\n\tWINCODEC_ERR_INVALIDREGISTRATION                                          Handle        = 0x88982F8A\n\tWINCODEC_ERR_COMPONENTINITIALIZEFAILURE                                   Handle        = 0x88982F8B\n\tWINCODEC_ERR_INSUFFICIENTBUFFER                                           Handle        = 0x88982F8C\n\tWINCODEC_ERR_DUPLICATEMETADATAPRESENT                                     Handle        = 0x88982F8D\n\tWINCODEC_ERR_PROPERTYUNEXPECTEDTYPE                                       Handle        = 0x88982F8E\n\tWINCODEC_ERR_UNEXPECTEDSIZE                                               Handle        = 0x88982F8F\n\tWINCODEC_ERR_INVALIDQUERYREQUEST                                          Handle        = 0x88982F90\n\tWINCODEC_ERR_UNEXPECTEDMETADATATYPE                                       Handle        = 0x88982F91\n\tWINCODEC_ERR_REQUESTONLYVALIDATMETADATAROOT                               Handle        = 0x88982F92\n\tWINCODEC_ERR_INVALIDQUERYCHARACTER                                        Handle        = 0x88982F93\n\tWINCODEC_ERR_WIN32ERROR                                                   Handle        = 0x88982F94\n\tWINCODEC_ERR_INVALIDPROGRESSIVELEVEL                                      Handle        = 0x88982F95\n\tWINCODEC_ERR_INVALIDJPEGSCANINDEX                                         Handle        = 0x88982F96\n\tMILERR_OBJECTBUSY                                                         Handle        = 0x88980001\n\tMILERR_INSUFFICIENTBUFFER                                                 Handle        = 0x88980002\n\tMILERR_WIN32ERROR                                                         Handle        = 0x88980003\n\tMILERR_SCANNER_FAILED                                                     Handle        = 0x88980004\n\tMILERR_SCREENACCESSDENIED                                                 Handle        = 0x88980005\n\tMILERR_DISPLAYSTATEINVALID                                                Handle        = 0x88980006\n\tMILERR_NONINVERTIBLEMATRIX                                                Handle        = 0x88980007\n\tMILERR_ZEROVECTOR                                                         Handle        = 0x88980008\n\tMILERR_TERMINATED                                                         Handle        = 0x88980009\n\tMILERR_BADNUMBER                                                          Handle        = 0x8898000A\n\tMILERR_INTERNALERROR                                                      Handle        = 0x88980080\n\tMILERR_DISPLAYFORMATNOTSUPPORTED                                          Handle        = 0x88980084\n\tMILERR_INVALIDCALL                                                        Handle        = 0x88980085\n\tMILERR_ALREADYLOCKED                                                      Handle        = 0x88980086\n\tMILERR_NOTLOCKED                                                          Handle        = 0x88980087\n\tMILERR_DEVICECANNOTRENDERTEXT                                             Handle        = 0x88980088\n\tMILERR_GLYPHBITMAPMISSED                                                  Handle        = 0x88980089\n\tMILERR_MALFORMEDGLYPHCACHE                                                Handle        = 0x8898008A\n\tMILERR_GENERIC_IGNORE                                                     Handle        = 0x8898008B\n\tMILERR_MALFORMED_GUIDELINE_DATA                                           Handle        = 0x8898008C\n\tMILERR_NO_HARDWARE_DEVICE                                                 Handle        = 0x8898008D\n\tMILERR_NEED_RECREATE_AND_PRESENT                                          Handle        = 0x8898008E\n\tMILERR_ALREADY_INITIALIZED                                                Handle        = 0x8898008F\n\tMILERR_MISMATCHED_SIZE                                                    Handle        = 0x88980090\n\tMILERR_NO_REDIRECTION_SURFACE_AVAILABLE                                   Handle        = 0x88980091\n\tMILERR_REMOTING_NOT_SUPPORTED                                             Handle        = 0x88980092\n\tMILERR_QUEUED_PRESENT_NOT_SUPPORTED                                       Handle        = 0x88980093\n\tMILERR_NOT_QUEUING_PRESENTS                                               Handle        = 0x88980094\n\tMILERR_NO_REDIRECTION_SURFACE_RETRY_LATER                                 Handle        = 0x88980095\n\tMILERR_TOOMANYSHADERELEMNTS                                               Handle        = 0x88980096\n\tMILERR_MROW_READLOCK_FAILED                                               Handle        = 0x88980097\n\tMILERR_MROW_UPDATE_FAILED                                                 Handle        = 0x88980098\n\tMILERR_SHADER_COMPILE_FAILED                                              Handle        = 0x88980099\n\tMILERR_MAX_TEXTURE_SIZE_EXCEEDED                                          Handle        = 0x8898009A\n\tMILERR_QPC_TIME_WENT_BACKWARD                                             Handle        = 0x8898009B\n\tMILERR_DXGI_ENUMERATION_OUT_OF_SYNC                                       Handle        = 0x8898009D\n\tMILERR_ADAPTER_NOT_FOUND                                                  Handle        = 0x8898009E\n\tMILERR_COLORSPACE_NOT_SUPPORTED                                           Handle        = 0x8898009F\n\tMILERR_PREFILTER_NOT_SUPPORTED                                            Handle        = 0x889800A0\n\tMILERR_DISPLAYID_ACCESS_DENIED                                            Handle        = 0x889800A1\n\tUCEERR_INVALIDPACKETHEADER                                                Handle        = 0x88980400\n\tUCEERR_UNKNOWNPACKET                                                      Handle        = 0x88980401\n\tUCEERR_ILLEGALPACKET                                                      Handle        = 0x88980402\n\tUCEERR_MALFORMEDPACKET                                                    Handle        = 0x88980403\n\tUCEERR_ILLEGALHANDLE                                                      Handle        = 0x88980404\n\tUCEERR_HANDLELOOKUPFAILED                                                 Handle        = 0x88980405\n\tUCEERR_RENDERTHREADFAILURE                                                Handle        = 0x88980406\n\tUCEERR_CTXSTACKFRSTTARGETNULL                                             Handle        = 0x88980407\n\tUCEERR_CONNECTIONIDLOOKUPFAILED                                           Handle        = 0x88980408\n\tUCEERR_BLOCKSFULL                                                         Handle        = 0x88980409\n\tUCEERR_MEMORYFAILURE                                                      Handle        = 0x8898040A\n\tUCEERR_PACKETRECORDOUTOFRANGE                                             Handle        = 0x8898040B\n\tUCEERR_ILLEGALRECORDTYPE                                                  Handle        = 0x8898040C\n\tUCEERR_OUTOFHANDLES                                                       Handle        = 0x8898040D\n\tUCEERR_UNCHANGABLE_UPDATE_ATTEMPTED                                       Handle        = 0x8898040E\n\tUCEERR_NO_MULTIPLE_WORKER_THREADS                                         Handle        = 0x8898040F\n\tUCEERR_REMOTINGNOTSUPPORTED                                               Handle        = 0x88980410\n\tUCEERR_MISSINGENDCOMMAND                                                  Handle        = 0x88980411\n\tUCEERR_MISSINGBEGINCOMMAND                                                Handle        = 0x88980412\n\tUCEERR_CHANNELSYNCTIMEDOUT                                                Handle        = 0x88980413\n\tUCEERR_CHANNELSYNCABANDONED                                               Handle        = 0x88980414\n\tUCEERR_UNSUPPORTEDTRANSPORTVERSION                                        Handle        = 0x88980415\n\tUCEERR_TRANSPORTUNAVAILABLE                                               Handle        = 0x88980416\n\tUCEERR_FEEDBACK_UNSUPPORTED                                               Handle        = 0x88980417\n\tUCEERR_COMMANDTRANSPORTDENIED                                             Handle        = 0x88980418\n\tUCEERR_GRAPHICSSTREAMUNAVAILABLE                                          Handle        = 0x88980419\n\tUCEERR_GRAPHICSSTREAMALREADYOPEN                                          Handle        = 0x88980420\n\tUCEERR_TRANSPORTDISCONNECTED                                              Handle        = 0x88980421\n\tUCEERR_TRANSPORTOVERLOADED                                                Handle        = 0x88980422\n\tUCEERR_PARTITION_ZOMBIED                                                  Handle        = 0x88980423\n\tMILAVERR_NOCLOCK                                                          Handle        = 0x88980500\n\tMILAVERR_NOMEDIATYPE                                                      Handle        = 0x88980501\n\tMILAVERR_NOVIDEOMIXER                                                     Handle        = 0x88980502\n\tMILAVERR_NOVIDEOPRESENTER                                                 Handle        = 0x88980503\n\tMILAVERR_NOREADYFRAMES                                                    Handle        = 0x88980504\n\tMILAVERR_MODULENOTLOADED                                                  Handle        = 0x88980505\n\tMILAVERR_WMPFACTORYNOTREGISTERED                                          Handle        = 0x88980506\n\tMILAVERR_INVALIDWMPVERSION                                                Handle        = 0x88980507\n\tMILAVERR_INSUFFICIENTVIDEORESOURCES                                       Handle        = 0x88980508\n\tMILAVERR_VIDEOACCELERATIONNOTAVAILABLE                                    Handle        = 0x88980509\n\tMILAVERR_REQUESTEDTEXTURETOOBIG                                           Handle        = 0x8898050A\n\tMILAVERR_SEEKFAILED                                                       Handle        = 0x8898050B\n\tMILAVERR_UNEXPECTEDWMPFAILURE                                             Handle        = 0x8898050C\n\tMILAVERR_MEDIAPLAYERCLOSED                                                Handle        = 0x8898050D\n\tMILAVERR_UNKNOWNHARDWAREERROR                                             Handle        = 0x8898050E\n\tMILEFFECTSERR_UNKNOWNPROPERTY                                             Handle        = 0x8898060E\n\tMILEFFECTSERR_EFFECTNOTPARTOFGROUP                                        Handle        = 0x8898060F\n\tMILEFFECTSERR_NOINPUTSOURCEATTACHED                                       Handle        = 0x88980610\n\tMILEFFECTSERR_CONNECTORNOTCONNECTED                                       Handle        = 0x88980611\n\tMILEFFECTSERR_CONNECTORNOTASSOCIATEDWITHEFFECT                            Handle        = 0x88980612\n\tMILEFFECTSERR_RESERVED                                                    Handle        = 0x88980613\n\tMILEFFECTSERR_CYCLEDETECTED                                               Handle        = 0x88980614\n\tMILEFFECTSERR_EFFECTINMORETHANONEGRAPH                                    Handle        = 0x88980615\n\tMILEFFECTSERR_EFFECTALREADYINAGRAPH                                       Handle        = 0x88980616\n\tMILEFFECTSERR_EFFECTHASNOCHILDREN                                         Handle        = 0x88980617\n\tMILEFFECTSERR_ALREADYATTACHEDTOLISTENER                                   Handle        = 0x88980618\n\tMILEFFECTSERR_NOTAFFINETRANSFORM                                          Handle        = 0x88980619\n\tMILEFFECTSERR_EMPTYBOUNDS                                                 Handle        = 0x8898061A\n\tMILEFFECTSERR_OUTPUTSIZETOOLARGE                                          Handle        = 0x8898061B\n\tDWMERR_STATE_TRANSITION_FAILED                                            Handle        = 0x88980700\n\tDWMERR_THEME_FAILED                                                       Handle        = 0x88980701\n\tDWMERR_CATASTROPHIC_FAILURE                                               Handle        = 0x88980702\n\tDCOMPOSITION_ERROR_WINDOW_ALREADY_COMPOSED                                Handle        = 0x88980800\n\tDCOMPOSITION_ERROR_SURFACE_BEING_RENDERED                                 Handle        = 0x88980801\n\tDCOMPOSITION_ERROR_SURFACE_NOT_BEING_RENDERED                             Handle        = 0x88980802\n\tONL_E_INVALID_AUTHENTICATION_TARGET                                       Handle        = 0x80860001\n\tONL_E_ACCESS_DENIED_BY_TOU                                                Handle        = 0x80860002\n\tONL_E_INVALID_APPLICATION                                                 Handle        = 0x80860003\n\tONL_E_PASSWORD_UPDATE_REQUIRED                                            Handle        = 0x80860004\n\tONL_E_ACCOUNT_UPDATE_REQUIRED                                             Handle        = 0x80860005\n\tONL_E_FORCESIGNIN                                                         Handle        = 0x80860006\n\tONL_E_ACCOUNT_LOCKED                                                      Handle        = 0x80860007\n\tONL_E_PARENTAL_CONSENT_REQUIRED                                           Handle        = 0x80860008\n\tONL_E_EMAIL_VERIFICATION_REQUIRED                                         Handle        = 0x80860009\n\tONL_E_ACCOUNT_SUSPENDED_COMPROIMISE                                       Handle        = 0x8086000A\n\tONL_E_ACCOUNT_SUSPENDED_ABUSE                                             Handle        = 0x8086000B\n\tONL_E_ACTION_REQUIRED                                                     Handle        = 0x8086000C\n\tONL_CONNECTION_COUNT_LIMIT                                                Handle        = 0x8086000D\n\tONL_E_CONNECTED_ACCOUNT_CAN_NOT_SIGNOUT                                   Handle        = 0x8086000E\n\tONL_E_USER_AUTHENTICATION_REQUIRED                                        Handle        = 0x8086000F\n\tONL_E_REQUEST_THROTTLED                                                   Handle        = 0x80860010\n\tFA_E_MAX_PERSISTED_ITEMS_REACHED                                          Handle        = 0x80270220\n\tFA_E_HOMEGROUP_NOT_AVAILABLE                                              Handle        = 0x80270222\n\tE_MONITOR_RESOLUTION_TOO_LOW                                              Handle        = 0x80270250\n\tE_ELEVATED_ACTIVATION_NOT_SUPPORTED                                       Handle        = 0x80270251\n\tE_UAC_DISABLED                                                            Handle        = 0x80270252\n\tE_FULL_ADMIN_NOT_SUPPORTED                                                Handle        = 0x80270253\n\tE_APPLICATION_NOT_REGISTERED                                              Handle        = 0x80270254\n\tE_MULTIPLE_EXTENSIONS_FOR_APPLICATION                                     Handle        = 0x80270255\n\tE_MULTIPLE_PACKAGES_FOR_FAMILY                                            Handle        = 0x80270256\n\tE_APPLICATION_MANAGER_NOT_RUNNING                                         Handle        = 0x80270257\n\tS_STORE_LAUNCHED_FOR_REMEDIATION                                          Handle        = 0x00270258\n\tS_APPLICATION_ACTIVATION_ERROR_HANDLED_BY_DIALOG                          Handle        = 0x00270259\n\tE_APPLICATION_ACTIVATION_TIMED_OUT                                        Handle        = 0x8027025A\n\tE_APPLICATION_ACTIVATION_EXEC_FAILURE                                     Handle        = 0x8027025B\n\tE_APPLICATION_TEMPORARY_LICENSE_ERROR                                     Handle        = 0x8027025C\n\tE_APPLICATION_TRIAL_LICENSE_EXPIRED                                       Handle        = 0x8027025D\n\tE_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED                          Handle        = 0x80270260\n\tE_SKYDRIVE_ROOT_TARGET_OVERLAP                                            Handle        = 0x80270261\n\tE_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX                                       Handle        = 0x80270262\n\tE_SKYDRIVE_FILE_NOT_UPLOADED                                              Handle        = 0x80270263\n\tE_SKYDRIVE_UPDATE_AVAILABILITY_FAIL                                       Handle        = 0x80270264\n\tE_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED                          Handle        = 0x80270265\n\tE_SYNCENGINE_FILE_SIZE_OVER_LIMIT                                         Handle        = 0x8802B001\n\tE_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA                            Handle        = 0x8802B002\n\tE_SYNCENGINE_UNSUPPORTED_FILE_NAME                                        Handle        = 0x8802B003\n\tE_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED                             Handle        = 0x8802B004\n\tE_SYNCENGINE_FILE_SYNC_PARTNER_ERROR                                      Handle        = 0x8802B005\n\tE_SYNCENGINE_SYNC_PAUSED_BY_SERVICE                                       Handle        = 0x8802B006\n\tE_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN                                      Handle        = 0x8802C002\n\tE_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED                                Handle        = 0x8802C003\n\tE_SYNCENGINE_UNKNOWN_SERVICE_ERROR                                        Handle        = 0x8802C004\n\tE_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE                             Handle        = 0x8802C005\n\tE_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE                                   Handle        = 0x8802C006\n\tE_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR                          Handle        = 0x8802C007\n\tE_SYNCENGINE_FOLDER_INACCESSIBLE                                          Handle        = 0x8802D001\n\tE_SYNCENGINE_UNSUPPORTED_FOLDER_NAME                                      Handle        = 0x8802D002\n\tE_SYNCENGINE_UNSUPPORTED_MARKET                                           Handle        = 0x8802D003\n\tE_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED                                   Handle        = 0x8802D004\n\tE_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED                            Handle        = 0x8802D005\n\tE_SYNCENGINE_CLIENT_UPDATE_NEEDED                                         Handle        = 0x8802D006\n\tE_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED                                Handle        = 0x8802D007\n\tE_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED                          Handle        = 0x8802D008\n\tE_SYNCENGINE_UNSUPPORTED_REPARSE_POINT                                    Handle        = 0x8802D009\n\tE_SYNCENGINE_STORAGE_SERVICE_BLOCKED                                      Handle        = 0x8802D00A\n\tE_SYNCENGINE_FOLDER_IN_REDIRECTION                                        Handle        = 0x8802D00B\n\tEAS_E_POLICY_NOT_MANAGED_BY_OS                                            Handle        = 0x80550001\n\tEAS_E_POLICY_COMPLIANT_WITH_ACTIONS                                       Handle        = 0x80550002\n\tEAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE                                    Handle        = 0x80550003\n\tEAS_E_CURRENT_USER_HAS_BLANK_PASSWORD                                     Handle        = 0x80550004\n\tEAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE                   Handle        = 0x80550005\n\tEAS_E_USER_CANNOT_CHANGE_PASSWORD                                         Handle        = 0x80550006\n\tEAS_E_ADMINS_HAVE_BLANK_PASSWORD                                          Handle        = 0x80550007\n\tEAS_E_ADMINS_CANNOT_CHANGE_PASSWORD                                       Handle        = 0x80550008\n\tEAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD                       Handle        = 0x80550009\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS                Handle        = 0x8055000A\n\tEAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD                            Handle        = 0x8055000B\n\tEAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER          Handle        = 0x8055000C\n\tEAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD                      Handle        = 0x8055000D\n\tWEB_E_UNSUPPORTED_FORMAT                                                  Handle        = 0x83750001\n\tWEB_E_INVALID_XML                                                         Handle        = 0x83750002\n\tWEB_E_MISSING_REQUIRED_ELEMENT                                            Handle        = 0x83750003\n\tWEB_E_MISSING_REQUIRED_ATTRIBUTE                                          Handle        = 0x83750004\n\tWEB_E_UNEXPECTED_CONTENT                                                  Handle        = 0x83750005\n\tWEB_E_RESOURCE_TOO_LARGE                                                  Handle        = 0x83750006\n\tWEB_E_INVALID_JSON_STRING                                                 Handle        = 0x83750007\n\tWEB_E_INVALID_JSON_NUMBER                                                 Handle        = 0x83750008\n\tWEB_E_JSON_VALUE_NOT_FOUND                                                Handle        = 0x83750009\n\tHTTP_E_STATUS_UNEXPECTED                                                  Handle        = 0x80190001\n\tHTTP_E_STATUS_UNEXPECTED_REDIRECTION                                      Handle        = 0x80190003\n\tHTTP_E_STATUS_UNEXPECTED_CLIENT_ERROR                                     Handle        = 0x80190004\n\tHTTP_E_STATUS_UNEXPECTED_SERVER_ERROR                                     Handle        = 0x80190005\n\tHTTP_E_STATUS_AMBIGUOUS                                                   Handle        = 0x8019012C\n\tHTTP_E_STATUS_MOVED                                                       Handle        = 0x8019012D\n\tHTTP_E_STATUS_REDIRECT                                                    Handle        = 0x8019012E\n\tHTTP_E_STATUS_REDIRECT_METHOD                                             Handle        = 0x8019012F\n\tHTTP_E_STATUS_NOT_MODIFIED                                                Handle        = 0x80190130\n\tHTTP_E_STATUS_USE_PROXY                                                   Handle        = 0x80190131\n\tHTTP_E_STATUS_REDIRECT_KEEP_VERB                                          Handle        = 0x80190133\n\tHTTP_E_STATUS_BAD_REQUEST                                                 Handle        = 0x80190190\n\tHTTP_E_STATUS_DENIED                                                      Handle        = 0x80190191\n\tHTTP_E_STATUS_PAYMENT_REQ                                                 Handle        = 0x80190192\n\tHTTP_E_STATUS_FORBIDDEN                                                   Handle        = 0x80190193\n\tHTTP_E_STATUS_NOT_FOUND                                                   Handle        = 0x80190194\n\tHTTP_E_STATUS_BAD_METHOD                                                  Handle        = 0x80190195\n\tHTTP_E_STATUS_NONE_ACCEPTABLE                                             Handle        = 0x80190196\n\tHTTP_E_STATUS_PROXY_AUTH_REQ                                              Handle        = 0x80190197\n\tHTTP_E_STATUS_REQUEST_TIMEOUT                                             Handle        = 0x80190198\n\tHTTP_E_STATUS_CONFLICT                                                    Handle        = 0x80190199\n\tHTTP_E_STATUS_GONE                                                        Handle        = 0x8019019A\n\tHTTP_E_STATUS_LENGTH_REQUIRED                                             Handle        = 0x8019019B\n\tHTTP_E_STATUS_PRECOND_FAILED                                              Handle        = 0x8019019C\n\tHTTP_E_STATUS_REQUEST_TOO_LARGE                                           Handle        = 0x8019019D\n\tHTTP_E_STATUS_URI_TOO_LONG                                                Handle        = 0x8019019E\n\tHTTP_E_STATUS_UNSUPPORTED_MEDIA                                           Handle        = 0x8019019F\n\tHTTP_E_STATUS_RANGE_NOT_SATISFIABLE                                       Handle        = 0x801901A0\n\tHTTP_E_STATUS_EXPECTATION_FAILED                                          Handle        = 0x801901A1\n\tHTTP_E_STATUS_SERVER_ERROR                                                Handle        = 0x801901F4\n\tHTTP_E_STATUS_NOT_SUPPORTED                                               Handle        = 0x801901F5\n\tHTTP_E_STATUS_BAD_GATEWAY                                                 Handle        = 0x801901F6\n\tHTTP_E_STATUS_SERVICE_UNAVAIL                                             Handle        = 0x801901F7\n\tHTTP_E_STATUS_GATEWAY_TIMEOUT                                             Handle        = 0x801901F8\n\tHTTP_E_STATUS_VERSION_NOT_SUP                                             Handle        = 0x801901F9\n\tE_INVALID_PROTOCOL_OPERATION                                              Handle        = 0x83760001\n\tE_INVALID_PROTOCOL_FORMAT                                                 Handle        = 0x83760002\n\tE_PROTOCOL_EXTENSIONS_NOT_SUPPORTED                                       Handle        = 0x83760003\n\tE_SUBPROTOCOL_NOT_SUPPORTED                                               Handle        = 0x83760004\n\tE_PROTOCOL_VERSION_NOT_SUPPORTED                                          Handle        = 0x83760005\n\tINPUT_E_OUT_OF_ORDER                                                      Handle        = 0x80400000\n\tINPUT_E_REENTRANCY                                                        Handle        = 0x80400001\n\tINPUT_E_MULTIMODAL                                                        Handle        = 0x80400002\n\tINPUT_E_PACKET                                                            Handle        = 0x80400003\n\tINPUT_E_FRAME                                                             Handle        = 0x80400004\n\tINPUT_E_HISTORY                                                           Handle        = 0x80400005\n\tINPUT_E_DEVICE_INFO                                                       Handle        = 0x80400006\n\tINPUT_E_TRANSFORM                                                         Handle        = 0x80400007\n\tINPUT_E_DEVICE_PROPERTY                                                   Handle        = 0x80400008\n\tINET_E_INVALID_URL                                                        Handle        = 0x800C0002\n\tINET_E_NO_SESSION                                                         Handle        = 0x800C0003\n\tINET_E_CANNOT_CONNECT                                                     Handle        = 0x800C0004\n\tINET_E_RESOURCE_NOT_FOUND                                                 Handle        = 0x800C0005\n\tINET_E_OBJECT_NOT_FOUND                                                   Handle        = 0x800C0006\n\tINET_E_DATA_NOT_AVAILABLE                                                 Handle        = 0x800C0007\n\tINET_E_DOWNLOAD_FAILURE                                                   Handle        = 0x800C0008\n\tINET_E_AUTHENTICATION_REQUIRED                                            Handle        = 0x800C0009\n\tINET_E_NO_VALID_MEDIA                                                     Handle        = 0x800C000A\n\tINET_E_CONNECTION_TIMEOUT                                                 Handle        = 0x800C000B\n\tINET_E_INVALID_REQUEST                                                    Handle        = 0x800C000C\n\tINET_E_UNKNOWN_PROTOCOL                                                   Handle        = 0x800C000D\n\tINET_E_SECURITY_PROBLEM                                                   Handle        = 0x800C000E\n\tINET_E_CANNOT_LOAD_DATA                                                   Handle        = 0x800C000F\n\tINET_E_CANNOT_INSTANTIATE_OBJECT                                          Handle        = 0x800C0010\n\tINET_E_INVALID_CERTIFICATE                                                Handle        = 0x800C0019\n\tINET_E_REDIRECT_FAILED                                                    Handle        = 0x800C0014\n\tINET_E_REDIRECT_TO_DIR                                                    Handle        = 0x800C0015\n\tERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00001\n\tERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN                                 Handle        = 0x80B00002\n\tERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN                                 Handle        = 0x80B00003\n\tERROR_DBG_START_SERVER_FAILURE_LOCKDOWN                                   Handle        = 0x80B00004\n\tERROR_IO_PREEMPTED                                                        Handle        = 0x89010001\n\tJSCRIPT_E_CANTEXECUTE                                                     Handle        = 0x89020001\n\tWEP_E_NOT_PROVISIONED_ON_ALL_VOLUMES                                      Handle        = 0x88010001\n\tWEP_E_FIXED_DATA_NOT_SUPPORTED                                            Handle        = 0x88010002\n\tWEP_E_HARDWARE_NOT_COMPLIANT                                              Handle        = 0x88010003\n\tWEP_E_LOCK_NOT_CONFIGURED                                                 Handle        = 0x88010004\n\tWEP_E_PROTECTION_SUSPENDED                                                Handle        = 0x88010005\n\tWEP_E_NO_LICENSE                                                          Handle        = 0x88010006\n\tWEP_E_OS_NOT_PROTECTED                                                    Handle        = 0x88010007\n\tWEP_E_UNEXPECTED_FAIL                                                     Handle        = 0x88010008\n\tWEP_E_BUFFER_TOO_LARGE                                                    Handle        = 0x88010009\n\tERROR_SVHDX_ERROR_STORED                                                  Handle        = 0xC05C0000\n\tERROR_SVHDX_ERROR_NOT_AVAILABLE                                           Handle        = 0xC05CFF00\n\tERROR_SVHDX_UNIT_ATTENTION_AVAILABLE                                      Handle        = 0xC05CFF01\n\tERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                          Handle        = 0xC05CFF02\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                         Handle        = 0xC05CFF03\n\tERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                          Handle        = 0xC05CFF04\n\tERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                        Handle        = 0xC05CFF05\n\tERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                   Handle        = 0xC05CFF06\n\tERROR_SVHDX_RESERVATION_CONFLICT                                          Handle        = 0xC05CFF07\n\tERROR_SVHDX_WRONG_FILE_TYPE                                               Handle        = 0xC05CFF08\n\tERROR_SVHDX_VERSION_MISMATCH                                              Handle        = 0xC05CFF09\n\tERROR_VHD_SHARED                                                          Handle        = 0xC05CFF0A\n\tERROR_SVHDX_NO_INITIATOR                                                  Handle        = 0xC05CFF0B\n\tERROR_VHDSET_BACKING_STORAGE_NOT_FOUND                                    Handle        = 0xC05CFF0C\n\tERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                               Handle        = 0xC05D0000\n\tERROR_SMB_BAD_CLUSTER_DIALECT                                             Handle        = 0xC05D0001\n\tWININET_E_OUT_OF_HANDLES                                                  Handle        = 0x80072EE1\n\tWININET_E_TIMEOUT                                                         Handle        = 0x80072EE2\n\tWININET_E_EXTENDED_ERROR                                                  Handle        = 0x80072EE3\n\tWININET_E_INTERNAL_ERROR                                                  Handle        = 0x80072EE4\n\tWININET_E_INVALID_URL                                                     Handle        = 0x80072EE5\n\tWININET_E_UNRECOGNIZED_SCHEME                                             Handle        = 0x80072EE6\n\tWININET_E_NAME_NOT_RESOLVED                                               Handle        = 0x80072EE7\n\tWININET_E_PROTOCOL_NOT_FOUND                                              Handle        = 0x80072EE8\n\tWININET_E_INVALID_OPTION                                                  Handle        = 0x80072EE9\n\tWININET_E_BAD_OPTION_LENGTH                                               Handle        = 0x80072EEA\n\tWININET_E_OPTION_NOT_SETTABLE                                             Handle        = 0x80072EEB\n\tWININET_E_SHUTDOWN                                                        Handle        = 0x80072EEC\n\tWININET_E_INCORRECT_USER_NAME                                             Handle        = 0x80072EED\n\tWININET_E_INCORRECT_PASSWORD                                              Handle        = 0x80072EEE\n\tWININET_E_LOGIN_FAILURE                                                   Handle        = 0x80072EEF\n\tWININET_E_INVALID_OPERATION                                               Handle        = 0x80072EF0\n\tWININET_E_OPERATION_CANCELLED                                             Handle        = 0x80072EF1\n\tWININET_E_INCORRECT_HANDLE_TYPE                                           Handle        = 0x80072EF2\n\tWININET_E_INCORRECT_HANDLE_STATE                                          Handle        = 0x80072EF3\n\tWININET_E_NOT_PROXY_REQUEST                                               Handle        = 0x80072EF4\n\tWININET_E_REGISTRY_VALUE_NOT_FOUND                                        Handle        = 0x80072EF5\n\tWININET_E_BAD_REGISTRY_PARAMETER                                          Handle        = 0x80072EF6\n\tWININET_E_NO_DIRECT_ACCESS                                                Handle        = 0x80072EF7\n\tWININET_E_NO_CONTEXT                                                      Handle        = 0x80072EF8\n\tWININET_E_NO_CALLBACK                                                     Handle        = 0x80072EF9\n\tWININET_E_REQUEST_PENDING                                                 Handle        = 0x80072EFA\n\tWININET_E_INCORRECT_FORMAT                                                Handle        = 0x80072EFB\n\tWININET_E_ITEM_NOT_FOUND                                                  Handle        = 0x80072EFC\n\tWININET_E_CANNOT_CONNECT                                                  Handle        = 0x80072EFD\n\tWININET_E_CONNECTION_ABORTED                                              Handle        = 0x80072EFE\n\tWININET_E_CONNECTION_RESET                                                Handle        = 0x80072EFF\n\tWININET_E_FORCE_RETRY                                                     Handle        = 0x80072F00\n\tWININET_E_INVALID_PROXY_REQUEST                                           Handle        = 0x80072F01\n\tWININET_E_NEED_UI                                                         Handle        = 0x80072F02\n\tWININET_E_HANDLE_EXISTS                                                   Handle        = 0x80072F04\n\tWININET_E_SEC_CERT_DATE_INVALID                                           Handle        = 0x80072F05\n\tWININET_E_SEC_CERT_CN_INVALID                                             Handle        = 0x80072F06\n\tWININET_E_HTTP_TO_HTTPS_ON_REDIR                                          Handle        = 0x80072F07\n\tWININET_E_HTTPS_TO_HTTP_ON_REDIR                                          Handle        = 0x80072F08\n\tWININET_E_MIXED_SECURITY                                                  Handle        = 0x80072F09\n\tWININET_E_CHG_POST_IS_NON_SECURE                                          Handle        = 0x80072F0A\n\tWININET_E_POST_IS_NON_SECURE                                              Handle        = 0x80072F0B\n\tWININET_E_CLIENT_AUTH_CERT_NEEDED                                         Handle        = 0x80072F0C\n\tWININET_E_INVALID_CA                                                      Handle        = 0x80072F0D\n\tWININET_E_CLIENT_AUTH_NOT_SETUP                                           Handle        = 0x80072F0E\n\tWININET_E_ASYNC_THREAD_FAILED                                             Handle        = 0x80072F0F\n\tWININET_E_REDIRECT_SCHEME_CHANGE                                          Handle        = 0x80072F10\n\tWININET_E_DIALOG_PENDING                                                  Handle        = 0x80072F11\n\tWININET_E_RETRY_DIALOG                                                    Handle        = 0x80072F12\n\tWININET_E_NO_NEW_CONTAINERS                                               Handle        = 0x80072F13\n\tWININET_E_HTTPS_HTTP_SUBMIT_REDIR                                         Handle        = 0x80072F14\n\tWININET_E_SEC_CERT_ERRORS                                                 Handle        = 0x80072F17\n\tWININET_E_SEC_CERT_REV_FAILED                                             Handle        = 0x80072F19\n\tWININET_E_HEADER_NOT_FOUND                                                Handle        = 0x80072F76\n\tWININET_E_DOWNLEVEL_SERVER                                                Handle        = 0x80072F77\n\tWININET_E_INVALID_SERVER_RESPONSE                                         Handle        = 0x80072F78\n\tWININET_E_INVALID_HEADER                                                  Handle        = 0x80072F79\n\tWININET_E_INVALID_QUERY_REQUEST                                           Handle        = 0x80072F7A\n\tWININET_E_HEADER_ALREADY_EXISTS                                           Handle        = 0x80072F7B\n\tWININET_E_REDIRECT_FAILED                                                 Handle        = 0x80072F7C\n\tWININET_E_SECURITY_CHANNEL_ERROR                                          Handle        = 0x80072F7D\n\tWININET_E_UNABLE_TO_CACHE_FILE                                            Handle        = 0x80072F7E\n\tWININET_E_TCPIP_NOT_INSTALLED                                             Handle        = 0x80072F7F\n\tWININET_E_DISCONNECTED                                                    Handle        = 0x80072F83\n\tWININET_E_SERVER_UNREACHABLE                                              Handle        = 0x80072F84\n\tWININET_E_PROXY_SERVER_UNREACHABLE                                        Handle        = 0x80072F85\n\tWININET_E_BAD_AUTO_PROXY_SCRIPT                                           Handle        = 0x80072F86\n\tWININET_E_UNABLE_TO_DOWNLOAD_SCRIPT                                       Handle        = 0x80072F87\n\tWININET_E_SEC_INVALID_CERT                                                Handle        = 0x80072F89\n\tWININET_E_SEC_CERT_REVOKED                                                Handle        = 0x80072F8A\n\tWININET_E_FAILED_DUETOSECURITYCHECK                                       Handle        = 0x80072F8B\n\tWININET_E_NOT_INITIALIZED                                                 Handle        = 0x80072F8C\n\tWININET_E_LOGIN_FAILURE_DISPLAY_ENTITY_BODY                               Handle        = 0x80072F8E\n\tWININET_E_DECODING_FAILED                                                 Handle        = 0x80072F8F\n\tWININET_E_NOT_REDIRECTED                                                  Handle        = 0x80072F80\n\tWININET_E_COOKIE_NEEDS_CONFIRMATION                                       Handle        = 0x80072F81\n\tWININET_E_COOKIE_DECLINED                                                 Handle        = 0x80072F82\n\tWININET_E_REDIRECT_NEEDS_CONFIRMATION                                     Handle        = 0x80072F88\n\tSQLITE_E_ERROR                                                            Handle        = 0x87AF0001\n\tSQLITE_E_INTERNAL                                                         Handle        = 0x87AF0002\n\tSQLITE_E_PERM                                                             Handle        = 0x87AF0003\n\tSQLITE_E_ABORT                                                            Handle        = 0x87AF0004\n\tSQLITE_E_BUSY                                                             Handle        = 0x87AF0005\n\tSQLITE_E_LOCKED                                                           Handle        = 0x87AF0006\n\tSQLITE_E_NOMEM                                                            Handle        = 0x87AF0007\n\tSQLITE_E_READONLY                                                         Handle        = 0x87AF0008\n\tSQLITE_E_INTERRUPT                                                        Handle        = 0x87AF0009\n\tSQLITE_E_IOERR                                                            Handle        = 0x87AF000A\n\tSQLITE_E_CORRUPT                                                          Handle        = 0x87AF000B\n\tSQLITE_E_NOTFOUND                                                         Handle        = 0x87AF000C\n\tSQLITE_E_FULL                                                             Handle        = 0x87AF000D\n\tSQLITE_E_CANTOPEN                                                         Handle        = 0x87AF000E\n\tSQLITE_E_PROTOCOL                                                         Handle        = 0x87AF000F\n\tSQLITE_E_EMPTY                                                            Handle        = 0x87AF0010\n\tSQLITE_E_SCHEMA                                                           Handle        = 0x87AF0011\n\tSQLITE_E_TOOBIG                                                           Handle        = 0x87AF0012\n\tSQLITE_E_CONSTRAINT                                                       Handle        = 0x87AF0013\n\tSQLITE_E_MISMATCH                                                         Handle        = 0x87AF0014\n\tSQLITE_E_MISUSE                                                           Handle        = 0x87AF0015\n\tSQLITE_E_NOLFS                                                            Handle        = 0x87AF0016\n\tSQLITE_E_AUTH                                                             Handle        = 0x87AF0017\n\tSQLITE_E_FORMAT                                                           Handle        = 0x87AF0018\n\tSQLITE_E_RANGE                                                            Handle        = 0x87AF0019\n\tSQLITE_E_NOTADB                                                           Handle        = 0x87AF001A\n\tSQLITE_E_NOTICE                                                           Handle        = 0x87AF001B\n\tSQLITE_E_WARNING                                                          Handle        = 0x87AF001C\n\tSQLITE_E_ROW                                                              Handle        = 0x87AF0064\n\tSQLITE_E_DONE                                                             Handle        = 0x87AF0065\n\tSQLITE_E_IOERR_READ                                                       Handle        = 0x87AF010A\n\tSQLITE_E_IOERR_SHORT_READ                                                 Handle        = 0x87AF020A\n\tSQLITE_E_IOERR_WRITE                                                      Handle        = 0x87AF030A\n\tSQLITE_E_IOERR_FSYNC                                                      Handle        = 0x87AF040A\n\tSQLITE_E_IOERR_DIR_FSYNC                                                  Handle        = 0x87AF050A\n\tSQLITE_E_IOERR_TRUNCATE                                                   Handle        = 0x87AF060A\n\tSQLITE_E_IOERR_FSTAT                                                      Handle        = 0x87AF070A\n\tSQLITE_E_IOERR_UNLOCK                                                     Handle        = 0x87AF080A\n\tSQLITE_E_IOERR_RDLOCK                                                     Handle        = 0x87AF090A\n\tSQLITE_E_IOERR_DELETE                                                     Handle        = 0x87AF0A0A\n\tSQLITE_E_IOERR_BLOCKED                                                    Handle        = 0x87AF0B0A\n\tSQLITE_E_IOERR_NOMEM                                                      Handle        = 0x87AF0C0A\n\tSQLITE_E_IOERR_ACCESS                                                     Handle        = 0x87AF0D0A\n\tSQLITE_E_IOERR_CHECKRESERVEDLOCK                                          Handle        = 0x87AF0E0A\n\tSQLITE_E_IOERR_LOCK                                                       Handle        = 0x87AF0F0A\n\tSQLITE_E_IOERR_CLOSE                                                      Handle        = 0x87AF100A\n\tSQLITE_E_IOERR_DIR_CLOSE                                                  Handle        = 0x87AF110A\n\tSQLITE_E_IOERR_SHMOPEN                                                    Handle        = 0x87AF120A\n\tSQLITE_E_IOERR_SHMSIZE                                                    Handle        = 0x87AF130A\n\tSQLITE_E_IOERR_SHMLOCK                                                    Handle        = 0x87AF140A\n\tSQLITE_E_IOERR_SHMMAP                                                     Handle        = 0x87AF150A\n\tSQLITE_E_IOERR_SEEK                                                       Handle        = 0x87AF160A\n\tSQLITE_E_IOERR_DELETE_NOENT                                               Handle        = 0x87AF170A\n\tSQLITE_E_IOERR_MMAP                                                       Handle        = 0x87AF180A\n\tSQLITE_E_IOERR_GETTEMPPATH                                                Handle        = 0x87AF190A\n\tSQLITE_E_IOERR_CONVPATH                                                   Handle        = 0x87AF1A0A\n\tSQLITE_E_IOERR_VNODE                                                      Handle        = 0x87AF1A02\n\tSQLITE_E_IOERR_AUTH                                                       Handle        = 0x87AF1A03\n\tSQLITE_E_LOCKED_SHAREDCACHE                                               Handle        = 0x87AF0106\n\tSQLITE_E_BUSY_RECOVERY                                                    Handle        = 0x87AF0105\n\tSQLITE_E_BUSY_SNAPSHOT                                                    Handle        = 0x87AF0205\n\tSQLITE_E_CANTOPEN_NOTEMPDIR                                               Handle        = 0x87AF010E\n\tSQLITE_E_CANTOPEN_ISDIR                                                   Handle        = 0x87AF020E\n\tSQLITE_E_CANTOPEN_FULLPATH                                                Handle        = 0x87AF030E\n\tSQLITE_E_CANTOPEN_CONVPATH                                                Handle        = 0x87AF040E\n\tSQLITE_E_CORRUPT_VTAB                                                     Handle        = 0x87AF010B\n\tSQLITE_E_READONLY_RECOVERY                                                Handle        = 0x87AF0108\n\tSQLITE_E_READONLY_CANTLOCK                                                Handle        = 0x87AF0208\n\tSQLITE_E_READONLY_ROLLBACK                                                Handle        = 0x87AF0308\n\tSQLITE_E_READONLY_DBMOVED                                                 Handle        = 0x87AF0408\n\tSQLITE_E_ABORT_ROLLBACK                                                   Handle        = 0x87AF0204\n\tSQLITE_E_CONSTRAINT_CHECK                                                 Handle        = 0x87AF0113\n\tSQLITE_E_CONSTRAINT_COMMITHOOK                                            Handle        = 0x87AF0213\n\tSQLITE_E_CONSTRAINT_FOREIGNKEY                                            Handle        = 0x87AF0313\n\tSQLITE_E_CONSTRAINT_FUNCTION                                              Handle        = 0x87AF0413\n\tSQLITE_E_CONSTRAINT_NOTNULL                                               Handle        = 0x87AF0513\n\tSQLITE_E_CONSTRAINT_PRIMARYKEY                                            Handle        = 0x87AF0613\n\tSQLITE_E_CONSTRAINT_TRIGGER                                               Handle        = 0x87AF0713\n\tSQLITE_E_CONSTRAINT_UNIQUE                                                Handle        = 0x87AF0813\n\tSQLITE_E_CONSTRAINT_VTAB                                                  Handle        = 0x87AF0913\n\tSQLITE_E_CONSTRAINT_ROWID                                                 Handle        = 0x87AF0A13\n\tSQLITE_E_NOTICE_RECOVER_WAL                                               Handle        = 0x87AF011B\n\tSQLITE_E_NOTICE_RECOVER_ROLLBACK                                          Handle        = 0x87AF021B\n\tSQLITE_E_WARNING_AUTOINDEX                                                Handle        = 0x87AF011C\n\tUTC_E_TOGGLE_TRACE_STARTED                                                Handle        = 0x87C51001\n\tUTC_E_ALTERNATIVE_TRACE_CANNOT_PREEMPT                                    Handle        = 0x87C51002\n\tUTC_E_AOT_NOT_RUNNING                                                     Handle        = 0x87C51003\n\tUTC_E_SCRIPT_TYPE_INVALID                                                 Handle        = 0x87C51004\n\tUTC_E_SCENARIODEF_NOT_FOUND                                               Handle        = 0x87C51005\n\tUTC_E_TRACEPROFILE_NOT_FOUND                                              Handle        = 0x87C51006\n\tUTC_E_FORWARDER_ALREADY_ENABLED                                           Handle        = 0x87C51007\n\tUTC_E_FORWARDER_ALREADY_DISABLED                                          Handle        = 0x87C51008\n\tUTC_E_EVENTLOG_ENTRY_MALFORMED                                            Handle        = 0x87C51009\n\tUTC_E_DIAGRULES_SCHEMAVERSION_MISMATCH                                    Handle        = 0x87C5100A\n\tUTC_E_SCRIPT_TERMINATED                                                   Handle        = 0x87C5100B\n\tUTC_E_INVALID_CUSTOM_FILTER                                               Handle        = 0x87C5100C\n\tUTC_E_TRACE_NOT_RUNNING                                                   Handle        = 0x87C5100D\n\tUTC_E_REESCALATED_TOO_QUICKLY                                             Handle        = 0x87C5100E\n\tUTC_E_ESCALATION_ALREADY_RUNNING                                          Handle        = 0x87C5100F\n\tUTC_E_PERFTRACK_ALREADY_TRACING                                           Handle        = 0x87C51010\n\tUTC_E_REACHED_MAX_ESCALATIONS                                             Handle        = 0x87C51011\n\tUTC_E_FORWARDER_PRODUCER_MISMATCH                                         Handle        = 0x87C51012\n\tUTC_E_INTENTIONAL_SCRIPT_FAILURE                                          Handle        = 0x87C51013\n\tUTC_E_SQM_INIT_FAILED                                                     Handle        = 0x87C51014\n\tUTC_E_NO_WER_LOGGER_SUPPORTED                                             Handle        = 0x87C51015\n\tUTC_E_TRACERS_DONT_EXIST                                                  Handle        = 0x87C51016\n\tUTC_E_WINRT_INIT_FAILED                                                   Handle        = 0x87C51017\n\tUTC_E_SCENARIODEF_SCHEMAVERSION_MISMATCH                                  Handle        = 0x87C51018\n\tUTC_E_INVALID_FILTER                                                      Handle        = 0x87C51019\n\tUTC_E_EXE_TERMINATED                                                      Handle        = 0x87C5101A\n\tUTC_E_ESCALATION_NOT_AUTHORIZED                                           Handle        = 0x87C5101B\n\tUTC_E_SETUP_NOT_AUTHORIZED                                                Handle        = 0x87C5101C\n\tUTC_E_CHILD_PROCESS_FAILED                                                Handle        = 0x87C5101D\n\tUTC_E_COMMAND_LINE_NOT_AUTHORIZED                                         Handle        = 0x87C5101E\n\tUTC_E_CANNOT_LOAD_SCENARIO_EDITOR_XML                                     Handle        = 0x87C5101F\n\tUTC_E_ESCALATION_TIMED_OUT                                                Handle        = 0x87C51020\n\tUTC_E_SETUP_TIMED_OUT                                                     Handle        = 0x87C51021\n\tUTC_E_TRIGGER_MISMATCH                                                    Handle        = 0x87C51022\n\tUTC_E_TRIGGER_NOT_FOUND                                                   Handle        = 0x87C51023\n\tUTC_E_SIF_NOT_SUPPORTED                                                   Handle        = 0x87C51024\n\tUTC_E_DELAY_TERMINATED                                                    Handle        = 0x87C51025\n\tUTC_E_DEVICE_TICKET_ERROR                                                 Handle        = 0x87C51026\n\tUTC_E_TRACE_BUFFER_LIMIT_EXCEEDED                                         Handle        = 0x87C51027\n\tUTC_E_API_RESULT_UNAVAILABLE                                              Handle        = 0x87C51028\n\tUTC_E_RPC_TIMEOUT                                                         Handle        = 0x87C51029\n\tUTC_E_RPC_WAIT_FAILED                                                     Handle        = 0x87C5102A\n\tUTC_E_API_BUSY                                                            Handle        = 0x87C5102B\n\tUTC_E_TRACE_MIN_DURATION_REQUIREMENT_NOT_MET                              Handle        = 0x87C5102C\n\tUTC_E_EXCLUSIVITY_NOT_AVAILABLE                                           Handle        = 0x87C5102D\n\tUTC_E_GETFILE_FILE_PATH_NOT_APPROVED                                      Handle        = 0x87C5102E\n\tUTC_E_ESCALATION_DIRECTORY_ALREADY_EXISTS                                 Handle        = 0x87C5102F\n\tUTC_E_TIME_TRIGGER_ON_START_INVALID                                       Handle        = 0x87C51030\n\tUTC_E_TIME_TRIGGER_ONLY_VALID_ON_SINGLE_TRANSITION                        Handle        = 0x87C51031\n\tUTC_E_TIME_TRIGGER_INVALID_TIME_RANGE                                     Handle        = 0x87C51032\n\tUTC_E_MULTIPLE_TIME_TRIGGER_ON_SINGLE_STATE                               Handle        = 0x87C51033\n\tUTC_E_BINARY_MISSING                                                      Handle        = 0x87C51034\n\tUTC_E_NETWORK_CAPTURE_NOT_ALLOWED                                         Handle        = 0x87C51035\n\tUTC_E_FAILED_TO_RESOLVE_CONTAINER_ID                                      Handle        = 0x87C51036\n\tUTC_E_UNABLE_TO_RESOLVE_SESSION                                           Handle        = 0x87C51037\n\tUTC_E_THROTTLED                                                           Handle        = 0x87C51038\n\tUTC_E_UNAPPROVED_SCRIPT                                                   Handle        = 0x87C51039\n\tUTC_E_SCRIPT_MISSING                                                      Handle        = 0x87C5103A\n\tUTC_E_SCENARIO_THROTTLED                                                  Handle        = 0x87C5103B\n\tUTC_E_API_NOT_SUPPORTED                                                   Handle        = 0x87C5103C\n\tUTC_E_GETFILE_EXTERNAL_PATH_NOT_APPROVED                                  Handle        = 0x87C5103D\n\tUTC_E_TRY_GET_SCENARIO_TIMEOUT_EXCEEDED                                   Handle        = 0x87C5103E\n\tUTC_E_CERT_REV_FAILED                                                     Handle        = 0x87C5103F\n\tUTC_E_FAILED_TO_START_NDISCAP                                             Handle        = 0x87C51040\n\tUTC_E_KERNELDUMP_LIMIT_REACHED                                            Handle        = 0x87C51041\n\tUTC_E_MISSING_AGGREGATE_EVENT_TAG                                         Handle        = 0x87C51042\n\tUTC_E_INVALID_AGGREGATION_STRUCT                                          Handle        = 0x87C51043\n\tUTC_E_ACTION_NOT_SUPPORTED_IN_DESTINATION                                 Handle        = 0x87C51044\n\tUTC_E_FILTER_MISSING_ATTRIBUTE                                            Handle        = 0x87C51045\n\tUTC_E_FILTER_INVALID_TYPE                                                 Handle        = 0x87C51046\n\tUTC_E_FILTER_VARIABLE_NOT_FOUND                                           Handle        = 0x87C51047\n\tUTC_E_FILTER_FUNCTION_RESTRICTED                                          Handle        = 0x87C51048\n\tUTC_E_FILTER_VERSION_MISMATCH                                             Handle        = 0x87C51049\n\tUTC_E_FILTER_INVALID_FUNCTION                                             Handle        = 0x87C51050\n\tUTC_E_FILTER_INVALID_FUNCTION_PARAMS                                      Handle        = 0x87C51051\n\tUTC_E_FILTER_INVALID_COMMAND                                              Handle        = 0x87C51052\n\tUTC_E_FILTER_ILLEGAL_EVAL                                                 Handle        = 0x87C51053\n\tUTC_E_TTTRACER_RETURNED_ERROR                                             Handle        = 0x87C51054\n\tUTC_E_AGENT_DIAGNOSTICS_TOO_LARGE                                         Handle        = 0x87C51055\n\tUTC_E_FAILED_TO_RECEIVE_AGENT_DIAGNOSTICS                                 Handle        = 0x87C51056\n\tUTC_E_SCENARIO_HAS_NO_ACTIONS                                             Handle        = 0x87C51057\n\tUTC_E_TTTRACER_STORAGE_FULL                                               Handle        = 0x87C51058\n\tUTC_E_INSUFFICIENT_SPACE_TO_START_TRACE                                   Handle        = 0x87C51059\n\tUTC_E_ESCALATION_CANCELLED_AT_SHUTDOWN                                    Handle        = 0x87C5105A\n\tUTC_E_GETFILEINFOACTION_FILE_NOT_APPROVED                                 Handle        = 0x87C5105B\n\tUTC_E_SETREGKEYACTION_TYPE_NOT_APPROVED                                   Handle        = 0x87C5105C\n\tWINML_ERR_INVALID_DEVICE                                                  Handle        = 0x88900001\n\tWINML_ERR_INVALID_BINDING                                                 Handle        = 0x88900002\n\tWINML_ERR_VALUE_NOTFOUND                                                  Handle        = 0x88900003\n\tWINML_ERR_SIZE_MISMATCH                                                   Handle        = 0x88900004\n\tSTATUS_WAIT_0                                                             NTStatus      = 0x00000000\n\tSTATUS_SUCCESS                                                            NTStatus      = 0x00000000\n\tSTATUS_WAIT_1                                                             NTStatus      = 0x00000001\n\tSTATUS_WAIT_2                                                             NTStatus      = 0x00000002\n\tSTATUS_WAIT_3                                                             NTStatus      = 0x00000003\n\tSTATUS_WAIT_63                                                            NTStatus      = 0x0000003F\n\tSTATUS_ABANDONED                                                          NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_0                                                   NTStatus      = 0x00000080\n\tSTATUS_ABANDONED_WAIT_63                                                  NTStatus      = 0x000000BF\n\tSTATUS_USER_APC                                                           NTStatus      = 0x000000C0\n\tSTATUS_ALREADY_COMPLETE                                                   NTStatus      = 0x000000FF\n\tSTATUS_KERNEL_APC                                                         NTStatus      = 0x00000100\n\tSTATUS_ALERTED                                                            NTStatus      = 0x00000101\n\tSTATUS_TIMEOUT                                                            NTStatus      = 0x00000102\n\tSTATUS_PENDING                                                            NTStatus      = 0x00000103\n\tSTATUS_REPARSE                                                            NTStatus      = 0x00000104\n\tSTATUS_MORE_ENTRIES                                                       NTStatus      = 0x00000105\n\tSTATUS_NOT_ALL_ASSIGNED                                                   NTStatus      = 0x00000106\n\tSTATUS_SOME_NOT_MAPPED                                                    NTStatus      = 0x00000107\n\tSTATUS_OPLOCK_BREAK_IN_PROGRESS                                           NTStatus      = 0x00000108\n\tSTATUS_VOLUME_MOUNTED                                                     NTStatus      = 0x00000109\n\tSTATUS_RXACT_COMMITTED                                                    NTStatus      = 0x0000010A\n\tSTATUS_NOTIFY_CLEANUP                                                     NTStatus      = 0x0000010B\n\tSTATUS_NOTIFY_ENUM_DIR                                                    NTStatus      = 0x0000010C\n\tSTATUS_NO_QUOTAS_FOR_ACCOUNT                                              NTStatus      = 0x0000010D\n\tSTATUS_PRIMARY_TRANSPORT_CONNECT_FAILED                                   NTStatus      = 0x0000010E\n\tSTATUS_PAGE_FAULT_TRANSITION                                              NTStatus      = 0x00000110\n\tSTATUS_PAGE_FAULT_DEMAND_ZERO                                             NTStatus      = 0x00000111\n\tSTATUS_PAGE_FAULT_COPY_ON_WRITE                                           NTStatus      = 0x00000112\n\tSTATUS_PAGE_FAULT_GUARD_PAGE                                              NTStatus      = 0x00000113\n\tSTATUS_PAGE_FAULT_PAGING_FILE                                             NTStatus      = 0x00000114\n\tSTATUS_CACHE_PAGE_LOCKED                                                  NTStatus      = 0x00000115\n\tSTATUS_CRASH_DUMP                                                         NTStatus      = 0x00000116\n\tSTATUS_BUFFER_ALL_ZEROS                                                   NTStatus      = 0x00000117\n\tSTATUS_REPARSE_OBJECT                                                     NTStatus      = 0x00000118\n\tSTATUS_RESOURCE_REQUIREMENTS_CHANGED                                      NTStatus      = 0x00000119\n\tSTATUS_TRANSLATION_COMPLETE                                               NTStatus      = 0x00000120\n\tSTATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY                                    NTStatus      = 0x00000121\n\tSTATUS_NOTHING_TO_TERMINATE                                               NTStatus      = 0x00000122\n\tSTATUS_PROCESS_NOT_IN_JOB                                                 NTStatus      = 0x00000123\n\tSTATUS_PROCESS_IN_JOB                                                     NTStatus      = 0x00000124\n\tSTATUS_VOLSNAP_HIBERNATE_READY                                            NTStatus      = 0x00000125\n\tSTATUS_FSFILTER_OP_COMPLETED_SUCCESSFULLY                                 NTStatus      = 0x00000126\n\tSTATUS_INTERRUPT_VECTOR_ALREADY_CONNECTED                                 NTStatus      = 0x00000127\n\tSTATUS_INTERRUPT_STILL_CONNECTED                                          NTStatus      = 0x00000128\n\tSTATUS_PROCESS_CLONED                                                     NTStatus      = 0x00000129\n\tSTATUS_FILE_LOCKED_WITH_ONLY_READERS                                      NTStatus      = 0x0000012A\n\tSTATUS_FILE_LOCKED_WITH_WRITERS                                           NTStatus      = 0x0000012B\n\tSTATUS_VALID_IMAGE_HASH                                                   NTStatus      = 0x0000012C\n\tSTATUS_VALID_CATALOG_HASH                                                 NTStatus      = 0x0000012D\n\tSTATUS_VALID_STRONG_CODE_HASH                                             NTStatus      = 0x0000012E\n\tSTATUS_GHOSTED                                                            NTStatus      = 0x0000012F\n\tSTATUS_DATA_OVERWRITTEN                                                   NTStatus      = 0x00000130\n\tSTATUS_RESOURCEMANAGER_READ_ONLY                                          NTStatus      = 0x00000202\n\tSTATUS_RING_PREVIOUSLY_EMPTY                                              NTStatus      = 0x00000210\n\tSTATUS_RING_PREVIOUSLY_FULL                                               NTStatus      = 0x00000211\n\tSTATUS_RING_PREVIOUSLY_ABOVE_QUOTA                                        NTStatus      = 0x00000212\n\tSTATUS_RING_NEWLY_EMPTY                                                   NTStatus      = 0x00000213\n\tSTATUS_RING_SIGNAL_OPPOSITE_ENDPOINT                                      NTStatus      = 0x00000214\n\tSTATUS_OPLOCK_SWITCHED_TO_NEW_HANDLE                                      NTStatus      = 0x00000215\n\tSTATUS_OPLOCK_HANDLE_CLOSED                                               NTStatus      = 0x00000216\n\tSTATUS_WAIT_FOR_OPLOCK                                                    NTStatus      = 0x00000367\n\tSTATUS_REPARSE_GLOBAL                                                     NTStatus      = 0x00000368\n\tSTATUS_FLT_IO_COMPLETE                                                    NTStatus      = 0x001C0001\n\tSTATUS_OBJECT_NAME_EXISTS                                                 NTStatus      = 0x40000000\n\tSTATUS_THREAD_WAS_SUSPENDED                                               NTStatus      = 0x40000001\n\tSTATUS_WORKING_SET_LIMIT_RANGE                                            NTStatus      = 0x40000002\n\tSTATUS_IMAGE_NOT_AT_BASE                                                  NTStatus      = 0x40000003\n\tSTATUS_RXACT_STATE_CREATED                                                NTStatus      = 0x40000004\n\tSTATUS_SEGMENT_NOTIFICATION                                               NTStatus      = 0x40000005\n\tSTATUS_LOCAL_USER_SESSION_KEY                                             NTStatus      = 0x40000006\n\tSTATUS_BAD_CURRENT_DIRECTORY                                              NTStatus      = 0x40000007\n\tSTATUS_SERIAL_MORE_WRITES                                                 NTStatus      = 0x40000008\n\tSTATUS_REGISTRY_RECOVERED                                                 NTStatus      = 0x40000009\n\tSTATUS_FT_READ_RECOVERY_FROM_BACKUP                                       NTStatus      = 0x4000000A\n\tSTATUS_FT_WRITE_RECOVERY                                                  NTStatus      = 0x4000000B\n\tSTATUS_SERIAL_COUNTER_TIMEOUT                                             NTStatus      = 0x4000000C\n\tSTATUS_NULL_LM_PASSWORD                                                   NTStatus      = 0x4000000D\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH                                        NTStatus      = 0x4000000E\n\tSTATUS_RECEIVE_PARTIAL                                                    NTStatus      = 0x4000000F\n\tSTATUS_RECEIVE_EXPEDITED                                                  NTStatus      = 0x40000010\n\tSTATUS_RECEIVE_PARTIAL_EXPEDITED                                          NTStatus      = 0x40000011\n\tSTATUS_EVENT_DONE                                                         NTStatus      = 0x40000012\n\tSTATUS_EVENT_PENDING                                                      NTStatus      = 0x40000013\n\tSTATUS_CHECKING_FILE_SYSTEM                                               NTStatus      = 0x40000014\n\tSTATUS_FATAL_APP_EXIT                                                     NTStatus      = 0x40000015\n\tSTATUS_PREDEFINED_HANDLE                                                  NTStatus      = 0x40000016\n\tSTATUS_WAS_UNLOCKED                                                       NTStatus      = 0x40000017\n\tSTATUS_SERVICE_NOTIFICATION                                               NTStatus      = 0x40000018\n\tSTATUS_WAS_LOCKED                                                         NTStatus      = 0x40000019\n\tSTATUS_LOG_HARD_ERROR                                                     NTStatus      = 0x4000001A\n\tSTATUS_ALREADY_WIN32                                                      NTStatus      = 0x4000001B\n\tSTATUS_WX86_UNSIMULATE                                                    NTStatus      = 0x4000001C\n\tSTATUS_WX86_CONTINUE                                                      NTStatus      = 0x4000001D\n\tSTATUS_WX86_SINGLE_STEP                                                   NTStatus      = 0x4000001E\n\tSTATUS_WX86_BREAKPOINT                                                    NTStatus      = 0x4000001F\n\tSTATUS_WX86_EXCEPTION_CONTINUE                                            NTStatus      = 0x40000020\n\tSTATUS_WX86_EXCEPTION_LASTCHANCE                                          NTStatus      = 0x40000021\n\tSTATUS_WX86_EXCEPTION_CHAIN                                               NTStatus      = 0x40000022\n\tSTATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE                                    NTStatus      = 0x40000023\n\tSTATUS_NO_YIELD_PERFORMED                                                 NTStatus      = 0x40000024\n\tSTATUS_TIMER_RESUME_IGNORED                                               NTStatus      = 0x40000025\n\tSTATUS_ARBITRATION_UNHANDLED                                              NTStatus      = 0x40000026\n\tSTATUS_CARDBUS_NOT_SUPPORTED                                              NTStatus      = 0x40000027\n\tSTATUS_WX86_CREATEWX86TIB                                                 NTStatus      = 0x40000028\n\tSTATUS_MP_PROCESSOR_MISMATCH                                              NTStatus      = 0x40000029\n\tSTATUS_HIBERNATED                                                         NTStatus      = 0x4000002A\n\tSTATUS_RESUME_HIBERNATION                                                 NTStatus      = 0x4000002B\n\tSTATUS_FIRMWARE_UPDATED                                                   NTStatus      = 0x4000002C\n\tSTATUS_DRIVERS_LEAKING_LOCKED_PAGES                                       NTStatus      = 0x4000002D\n\tSTATUS_MESSAGE_RETRIEVED                                                  NTStatus      = 0x4000002E\n\tSTATUS_SYSTEM_POWERSTATE_TRANSITION                                       NTStatus      = 0x4000002F\n\tSTATUS_ALPC_CHECK_COMPLETION_LIST                                         NTStatus      = 0x40000030\n\tSTATUS_SYSTEM_POWERSTATE_COMPLEX_TRANSITION                               NTStatus      = 0x40000031\n\tSTATUS_ACCESS_AUDIT_BY_POLICY                                             NTStatus      = 0x40000032\n\tSTATUS_ABANDON_HIBERFILE                                                  NTStatus      = 0x40000033\n\tSTATUS_BIZRULES_NOT_ENABLED                                               NTStatus      = 0x40000034\n\tSTATUS_FT_READ_FROM_COPY                                                  NTStatus      = 0x40000035\n\tSTATUS_IMAGE_AT_DIFFERENT_BASE                                            NTStatus      = 0x40000036\n\tSTATUS_PATCH_DEFERRED                                                     NTStatus      = 0x40000037\n\tSTATUS_HEURISTIC_DAMAGE_POSSIBLE                                          NTStatus      = 0x40190001\n\tSTATUS_GUARD_PAGE_VIOLATION                                               NTStatus      = 0x80000001\n\tSTATUS_DATATYPE_MISALIGNMENT                                              NTStatus      = 0x80000002\n\tSTATUS_BREAKPOINT                                                         NTStatus      = 0x80000003\n\tSTATUS_SINGLE_STEP                                                        NTStatus      = 0x80000004\n\tSTATUS_BUFFER_OVERFLOW                                                    NTStatus      = 0x80000005\n\tSTATUS_NO_MORE_FILES                                                      NTStatus      = 0x80000006\n\tSTATUS_WAKE_SYSTEM_DEBUGGER                                               NTStatus      = 0x80000007\n\tSTATUS_HANDLES_CLOSED                                                     NTStatus      = 0x8000000A\n\tSTATUS_NO_INHERITANCE                                                     NTStatus      = 0x8000000B\n\tSTATUS_GUID_SUBSTITUTION_MADE                                             NTStatus      = 0x8000000C\n\tSTATUS_PARTIAL_COPY                                                       NTStatus      = 0x8000000D\n\tSTATUS_DEVICE_PAPER_EMPTY                                                 NTStatus      = 0x8000000E\n\tSTATUS_DEVICE_POWERED_OFF                                                 NTStatus      = 0x8000000F\n\tSTATUS_DEVICE_OFF_LINE                                                    NTStatus      = 0x80000010\n\tSTATUS_DEVICE_BUSY                                                        NTStatus      = 0x80000011\n\tSTATUS_NO_MORE_EAS                                                        NTStatus      = 0x80000012\n\tSTATUS_INVALID_EA_NAME                                                    NTStatus      = 0x80000013\n\tSTATUS_EA_LIST_INCONSISTENT                                               NTStatus      = 0x80000014\n\tSTATUS_INVALID_EA_FLAG                                                    NTStatus      = 0x80000015\n\tSTATUS_VERIFY_REQUIRED                                                    NTStatus      = 0x80000016\n\tSTATUS_EXTRANEOUS_INFORMATION                                             NTStatus      = 0x80000017\n\tSTATUS_RXACT_COMMIT_NECESSARY                                             NTStatus      = 0x80000018\n\tSTATUS_NO_MORE_ENTRIES                                                    NTStatus      = 0x8000001A\n\tSTATUS_FILEMARK_DETECTED                                                  NTStatus      = 0x8000001B\n\tSTATUS_MEDIA_CHANGED                                                      NTStatus      = 0x8000001C\n\tSTATUS_BUS_RESET                                                          NTStatus      = 0x8000001D\n\tSTATUS_END_OF_MEDIA                                                       NTStatus      = 0x8000001E\n\tSTATUS_BEGINNING_OF_MEDIA                                                 NTStatus      = 0x8000001F\n\tSTATUS_MEDIA_CHECK                                                        NTStatus      = 0x80000020\n\tSTATUS_SETMARK_DETECTED                                                   NTStatus      = 0x80000021\n\tSTATUS_NO_DATA_DETECTED                                                   NTStatus      = 0x80000022\n\tSTATUS_REDIRECTOR_HAS_OPEN_HANDLES                                        NTStatus      = 0x80000023\n\tSTATUS_SERVER_HAS_OPEN_HANDLES                                            NTStatus      = 0x80000024\n\tSTATUS_ALREADY_DISCONNECTED                                               NTStatus      = 0x80000025\n\tSTATUS_LONGJUMP                                                           NTStatus      = 0x80000026\n\tSTATUS_CLEANER_CARTRIDGE_INSTALLED                                        NTStatus      = 0x80000027\n\tSTATUS_PLUGPLAY_QUERY_VETOED                                              NTStatus      = 0x80000028\n\tSTATUS_UNWIND_CONSOLIDATE                                                 NTStatus      = 0x80000029\n\tSTATUS_REGISTRY_HIVE_RECOVERED                                            NTStatus      = 0x8000002A\n\tSTATUS_DLL_MIGHT_BE_INSECURE                                              NTStatus      = 0x8000002B\n\tSTATUS_DLL_MIGHT_BE_INCOMPATIBLE                                          NTStatus      = 0x8000002C\n\tSTATUS_STOPPED_ON_SYMLINK                                                 NTStatus      = 0x8000002D\n\tSTATUS_CANNOT_GRANT_REQUESTED_OPLOCK                                      NTStatus      = 0x8000002E\n\tSTATUS_NO_ACE_CONDITION                                                   NTStatus      = 0x8000002F\n\tSTATUS_DEVICE_SUPPORT_IN_PROGRESS                                         NTStatus      = 0x80000030\n\tSTATUS_DEVICE_POWER_CYCLE_REQUIRED                                        NTStatus      = 0x80000031\n\tSTATUS_NO_WORK_DONE                                                       NTStatus      = 0x80000032\n\tSTATUS_CLUSTER_NODE_ALREADY_UP                                            NTStatus      = 0x80130001\n\tSTATUS_CLUSTER_NODE_ALREADY_DOWN                                          NTStatus      = 0x80130002\n\tSTATUS_CLUSTER_NETWORK_ALREADY_ONLINE                                     NTStatus      = 0x80130003\n\tSTATUS_CLUSTER_NETWORK_ALREADY_OFFLINE                                    NTStatus      = 0x80130004\n\tSTATUS_CLUSTER_NODE_ALREADY_MEMBER                                        NTStatus      = 0x80130005\n\tSTATUS_FLT_BUFFER_TOO_SMALL                                               NTStatus      = 0x801C0001\n\tSTATUS_FVE_PARTIAL_METADATA                                               NTStatus      = 0x80210001\n\tSTATUS_FVE_TRANSIENT_STATE                                                NTStatus      = 0x80210002\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH                         NTStatus      = 0x8000CF00\n\tSTATUS_UNSUCCESSFUL                                                       NTStatus      = 0xC0000001\n\tSTATUS_NOT_IMPLEMENTED                                                    NTStatus      = 0xC0000002\n\tSTATUS_INVALID_INFO_CLASS                                                 NTStatus      = 0xC0000003\n\tSTATUS_INFO_LENGTH_MISMATCH                                               NTStatus      = 0xC0000004\n\tSTATUS_ACCESS_VIOLATION                                                   NTStatus      = 0xC0000005\n\tSTATUS_IN_PAGE_ERROR                                                      NTStatus      = 0xC0000006\n\tSTATUS_PAGEFILE_QUOTA                                                     NTStatus      = 0xC0000007\n\tSTATUS_INVALID_HANDLE                                                     NTStatus      = 0xC0000008\n\tSTATUS_BAD_INITIAL_STACK                                                  NTStatus      = 0xC0000009\n\tSTATUS_BAD_INITIAL_PC                                                     NTStatus      = 0xC000000A\n\tSTATUS_INVALID_CID                                                        NTStatus      = 0xC000000B\n\tSTATUS_TIMER_NOT_CANCELED                                                 NTStatus      = 0xC000000C\n\tSTATUS_INVALID_PARAMETER                                                  NTStatus      = 0xC000000D\n\tSTATUS_NO_SUCH_DEVICE                                                     NTStatus      = 0xC000000E\n\tSTATUS_NO_SUCH_FILE                                                       NTStatus      = 0xC000000F\n\tSTATUS_INVALID_DEVICE_REQUEST                                             NTStatus      = 0xC0000010\n\tSTATUS_END_OF_FILE                                                        NTStatus      = 0xC0000011\n\tSTATUS_WRONG_VOLUME                                                       NTStatus      = 0xC0000012\n\tSTATUS_NO_MEDIA_IN_DEVICE                                                 NTStatus      = 0xC0000013\n\tSTATUS_UNRECOGNIZED_MEDIA                                                 NTStatus      = 0xC0000014\n\tSTATUS_NONEXISTENT_SECTOR                                                 NTStatus      = 0xC0000015\n\tSTATUS_MORE_PROCESSING_REQUIRED                                           NTStatus      = 0xC0000016\n\tSTATUS_NO_MEMORY                                                          NTStatus      = 0xC0000017\n\tSTATUS_CONFLICTING_ADDRESSES                                              NTStatus      = 0xC0000018\n\tSTATUS_NOT_MAPPED_VIEW                                                    NTStatus      = 0xC0000019\n\tSTATUS_UNABLE_TO_FREE_VM                                                  NTStatus      = 0xC000001A\n\tSTATUS_UNABLE_TO_DELETE_SECTION                                           NTStatus      = 0xC000001B\n\tSTATUS_INVALID_SYSTEM_SERVICE                                             NTStatus      = 0xC000001C\n\tSTATUS_ILLEGAL_INSTRUCTION                                                NTStatus      = 0xC000001D\n\tSTATUS_INVALID_LOCK_SEQUENCE                                              NTStatus      = 0xC000001E\n\tSTATUS_INVALID_VIEW_SIZE                                                  NTStatus      = 0xC000001F\n\tSTATUS_INVALID_FILE_FOR_SECTION                                           NTStatus      = 0xC0000020\n\tSTATUS_ALREADY_COMMITTED                                                  NTStatus      = 0xC0000021\n\tSTATUS_ACCESS_DENIED                                                      NTStatus      = 0xC0000022\n\tSTATUS_BUFFER_TOO_SMALL                                                   NTStatus      = 0xC0000023\n\tSTATUS_OBJECT_TYPE_MISMATCH                                               NTStatus      = 0xC0000024\n\tSTATUS_NONCONTINUABLE_EXCEPTION                                           NTStatus      = 0xC0000025\n\tSTATUS_INVALID_DISPOSITION                                                NTStatus      = 0xC0000026\n\tSTATUS_UNWIND                                                             NTStatus      = 0xC0000027\n\tSTATUS_BAD_STACK                                                          NTStatus      = 0xC0000028\n\tSTATUS_INVALID_UNWIND_TARGET                                              NTStatus      = 0xC0000029\n\tSTATUS_NOT_LOCKED                                                         NTStatus      = 0xC000002A\n\tSTATUS_PARITY_ERROR                                                       NTStatus      = 0xC000002B\n\tSTATUS_UNABLE_TO_DECOMMIT_VM                                              NTStatus      = 0xC000002C\n\tSTATUS_NOT_COMMITTED                                                      NTStatus      = 0xC000002D\n\tSTATUS_INVALID_PORT_ATTRIBUTES                                            NTStatus      = 0xC000002E\n\tSTATUS_PORT_MESSAGE_TOO_LONG                                              NTStatus      = 0xC000002F\n\tSTATUS_INVALID_PARAMETER_MIX                                              NTStatus      = 0xC0000030\n\tSTATUS_INVALID_QUOTA_LOWER                                                NTStatus      = 0xC0000031\n\tSTATUS_DISK_CORRUPT_ERROR                                                 NTStatus      = 0xC0000032\n\tSTATUS_OBJECT_NAME_INVALID                                                NTStatus      = 0xC0000033\n\tSTATUS_OBJECT_NAME_NOT_FOUND                                              NTStatus      = 0xC0000034\n\tSTATUS_OBJECT_NAME_COLLISION                                              NTStatus      = 0xC0000035\n\tSTATUS_PORT_DO_NOT_DISTURB                                                NTStatus      = 0xC0000036\n\tSTATUS_PORT_DISCONNECTED                                                  NTStatus      = 0xC0000037\n\tSTATUS_DEVICE_ALREADY_ATTACHED                                            NTStatus      = 0xC0000038\n\tSTATUS_OBJECT_PATH_INVALID                                                NTStatus      = 0xC0000039\n\tSTATUS_OBJECT_PATH_NOT_FOUND                                              NTStatus      = 0xC000003A\n\tSTATUS_OBJECT_PATH_SYNTAX_BAD                                             NTStatus      = 0xC000003B\n\tSTATUS_DATA_OVERRUN                                                       NTStatus      = 0xC000003C\n\tSTATUS_DATA_LATE_ERROR                                                    NTStatus      = 0xC000003D\n\tSTATUS_DATA_ERROR                                                         NTStatus      = 0xC000003E\n\tSTATUS_CRC_ERROR                                                          NTStatus      = 0xC000003F\n\tSTATUS_SECTION_TOO_BIG                                                    NTStatus      = 0xC0000040\n\tSTATUS_PORT_CONNECTION_REFUSED                                            NTStatus      = 0xC0000041\n\tSTATUS_INVALID_PORT_HANDLE                                                NTStatus      = 0xC0000042\n\tSTATUS_SHARING_VIOLATION                                                  NTStatus      = 0xC0000043\n\tSTATUS_QUOTA_EXCEEDED                                                     NTStatus      = 0xC0000044\n\tSTATUS_INVALID_PAGE_PROTECTION                                            NTStatus      = 0xC0000045\n\tSTATUS_MUTANT_NOT_OWNED                                                   NTStatus      = 0xC0000046\n\tSTATUS_SEMAPHORE_LIMIT_EXCEEDED                                           NTStatus      = 0xC0000047\n\tSTATUS_PORT_ALREADY_SET                                                   NTStatus      = 0xC0000048\n\tSTATUS_SECTION_NOT_IMAGE                                                  NTStatus      = 0xC0000049\n\tSTATUS_SUSPEND_COUNT_EXCEEDED                                             NTStatus      = 0xC000004A\n\tSTATUS_THREAD_IS_TERMINATING                                              NTStatus      = 0xC000004B\n\tSTATUS_BAD_WORKING_SET_LIMIT                                              NTStatus      = 0xC000004C\n\tSTATUS_INCOMPATIBLE_FILE_MAP                                              NTStatus      = 0xC000004D\n\tSTATUS_SECTION_PROTECTION                                                 NTStatus      = 0xC000004E\n\tSTATUS_EAS_NOT_SUPPORTED                                                  NTStatus      = 0xC000004F\n\tSTATUS_EA_TOO_LARGE                                                       NTStatus      = 0xC0000050\n\tSTATUS_NONEXISTENT_EA_ENTRY                                               NTStatus      = 0xC0000051\n\tSTATUS_NO_EAS_ON_FILE                                                     NTStatus      = 0xC0000052\n\tSTATUS_EA_CORRUPT_ERROR                                                   NTStatus      = 0xC0000053\n\tSTATUS_FILE_LOCK_CONFLICT                                                 NTStatus      = 0xC0000054\n\tSTATUS_LOCK_NOT_GRANTED                                                   NTStatus      = 0xC0000055\n\tSTATUS_DELETE_PENDING                                                     NTStatus      = 0xC0000056\n\tSTATUS_CTL_FILE_NOT_SUPPORTED                                             NTStatus      = 0xC0000057\n\tSTATUS_UNKNOWN_REVISION                                                   NTStatus      = 0xC0000058\n\tSTATUS_REVISION_MISMATCH                                                  NTStatus      = 0xC0000059\n\tSTATUS_INVALID_OWNER                                                      NTStatus      = 0xC000005A\n\tSTATUS_INVALID_PRIMARY_GROUP                                              NTStatus      = 0xC000005B\n\tSTATUS_NO_IMPERSONATION_TOKEN                                             NTStatus      = 0xC000005C\n\tSTATUS_CANT_DISABLE_MANDATORY                                             NTStatus      = 0xC000005D\n\tSTATUS_NO_LOGON_SERVERS                                                   NTStatus      = 0xC000005E\n\tSTATUS_NO_SUCH_LOGON_SESSION                                              NTStatus      = 0xC000005F\n\tSTATUS_NO_SUCH_PRIVILEGE                                                  NTStatus      = 0xC0000060\n\tSTATUS_PRIVILEGE_NOT_HELD                                                 NTStatus      = 0xC0000061\n\tSTATUS_INVALID_ACCOUNT_NAME                                               NTStatus      = 0xC0000062\n\tSTATUS_USER_EXISTS                                                        NTStatus      = 0xC0000063\n\tSTATUS_NO_SUCH_USER                                                       NTStatus      = 0xC0000064\n\tSTATUS_GROUP_EXISTS                                                       NTStatus      = 0xC0000065\n\tSTATUS_NO_SUCH_GROUP                                                      NTStatus      = 0xC0000066\n\tSTATUS_MEMBER_IN_GROUP                                                    NTStatus      = 0xC0000067\n\tSTATUS_MEMBER_NOT_IN_GROUP                                                NTStatus      = 0xC0000068\n\tSTATUS_LAST_ADMIN                                                         NTStatus      = 0xC0000069\n\tSTATUS_WRONG_PASSWORD                                                     NTStatus      = 0xC000006A\n\tSTATUS_ILL_FORMED_PASSWORD                                                NTStatus      = 0xC000006B\n\tSTATUS_PASSWORD_RESTRICTION                                               NTStatus      = 0xC000006C\n\tSTATUS_LOGON_FAILURE                                                      NTStatus      = 0xC000006D\n\tSTATUS_ACCOUNT_RESTRICTION                                                NTStatus      = 0xC000006E\n\tSTATUS_INVALID_LOGON_HOURS                                                NTStatus      = 0xC000006F\n\tSTATUS_INVALID_WORKSTATION                                                NTStatus      = 0xC0000070\n\tSTATUS_PASSWORD_EXPIRED                                                   NTStatus      = 0xC0000071\n\tSTATUS_ACCOUNT_DISABLED                                                   NTStatus      = 0xC0000072\n\tSTATUS_NONE_MAPPED                                                        NTStatus      = 0xC0000073\n\tSTATUS_TOO_MANY_LUIDS_REQUESTED                                           NTStatus      = 0xC0000074\n\tSTATUS_LUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000075\n\tSTATUS_INVALID_SUB_AUTHORITY                                              NTStatus      = 0xC0000076\n\tSTATUS_INVALID_ACL                                                        NTStatus      = 0xC0000077\n\tSTATUS_INVALID_SID                                                        NTStatus      = 0xC0000078\n\tSTATUS_INVALID_SECURITY_DESCR                                             NTStatus      = 0xC0000079\n\tSTATUS_PROCEDURE_NOT_FOUND                                                NTStatus      = 0xC000007A\n\tSTATUS_INVALID_IMAGE_FORMAT                                               NTStatus      = 0xC000007B\n\tSTATUS_NO_TOKEN                                                           NTStatus      = 0xC000007C\n\tSTATUS_BAD_INHERITANCE_ACL                                                NTStatus      = 0xC000007D\n\tSTATUS_RANGE_NOT_LOCKED                                                   NTStatus      = 0xC000007E\n\tSTATUS_DISK_FULL                                                          NTStatus      = 0xC000007F\n\tSTATUS_SERVER_DISABLED                                                    NTStatus      = 0xC0000080\n\tSTATUS_SERVER_NOT_DISABLED                                                NTStatus      = 0xC0000081\n\tSTATUS_TOO_MANY_GUIDS_REQUESTED                                           NTStatus      = 0xC0000082\n\tSTATUS_GUIDS_EXHAUSTED                                                    NTStatus      = 0xC0000083\n\tSTATUS_INVALID_ID_AUTHORITY                                               NTStatus      = 0xC0000084\n\tSTATUS_AGENTS_EXHAUSTED                                                   NTStatus      = 0xC0000085\n\tSTATUS_INVALID_VOLUME_LABEL                                               NTStatus      = 0xC0000086\n\tSTATUS_SECTION_NOT_EXTENDED                                               NTStatus      = 0xC0000087\n\tSTATUS_NOT_MAPPED_DATA                                                    NTStatus      = 0xC0000088\n\tSTATUS_RESOURCE_DATA_NOT_FOUND                                            NTStatus      = 0xC0000089\n\tSTATUS_RESOURCE_TYPE_NOT_FOUND                                            NTStatus      = 0xC000008A\n\tSTATUS_RESOURCE_NAME_NOT_FOUND                                            NTStatus      = 0xC000008B\n\tSTATUS_ARRAY_BOUNDS_EXCEEDED                                              NTStatus      = 0xC000008C\n\tSTATUS_FLOAT_DENORMAL_OPERAND                                             NTStatus      = 0xC000008D\n\tSTATUS_FLOAT_DIVIDE_BY_ZERO                                               NTStatus      = 0xC000008E\n\tSTATUS_FLOAT_INEXACT_RESULT                                               NTStatus      = 0xC000008F\n\tSTATUS_FLOAT_INVALID_OPERATION                                            NTStatus      = 0xC0000090\n\tSTATUS_FLOAT_OVERFLOW                                                     NTStatus      = 0xC0000091\n\tSTATUS_FLOAT_STACK_CHECK                                                  NTStatus      = 0xC0000092\n\tSTATUS_FLOAT_UNDERFLOW                                                    NTStatus      = 0xC0000093\n\tSTATUS_INTEGER_DIVIDE_BY_ZERO                                             NTStatus      = 0xC0000094\n\tSTATUS_INTEGER_OVERFLOW                                                   NTStatus      = 0xC0000095\n\tSTATUS_PRIVILEGED_INSTRUCTION                                             NTStatus      = 0xC0000096\n\tSTATUS_TOO_MANY_PAGING_FILES                                              NTStatus      = 0xC0000097\n\tSTATUS_FILE_INVALID                                                       NTStatus      = 0xC0000098\n\tSTATUS_ALLOTTED_SPACE_EXCEEDED                                            NTStatus      = 0xC0000099\n\tSTATUS_INSUFFICIENT_RESOURCES                                             NTStatus      = 0xC000009A\n\tSTATUS_DFS_EXIT_PATH_FOUND                                                NTStatus      = 0xC000009B\n\tSTATUS_DEVICE_DATA_ERROR                                                  NTStatus      = 0xC000009C\n\tSTATUS_DEVICE_NOT_CONNECTED                                               NTStatus      = 0xC000009D\n\tSTATUS_DEVICE_POWER_FAILURE                                               NTStatus      = 0xC000009E\n\tSTATUS_FREE_VM_NOT_AT_BASE                                                NTStatus      = 0xC000009F\n\tSTATUS_MEMORY_NOT_ALLOCATED                                               NTStatus      = 0xC00000A0\n\tSTATUS_WORKING_SET_QUOTA                                                  NTStatus      = 0xC00000A1\n\tSTATUS_MEDIA_WRITE_PROTECTED                                              NTStatus      = 0xC00000A2\n\tSTATUS_DEVICE_NOT_READY                                                   NTStatus      = 0xC00000A3\n\tSTATUS_INVALID_GROUP_ATTRIBUTES                                           NTStatus      = 0xC00000A4\n\tSTATUS_BAD_IMPERSONATION_LEVEL                                            NTStatus      = 0xC00000A5\n\tSTATUS_CANT_OPEN_ANONYMOUS                                                NTStatus      = 0xC00000A6\n\tSTATUS_BAD_VALIDATION_CLASS                                               NTStatus      = 0xC00000A7\n\tSTATUS_BAD_TOKEN_TYPE                                                     NTStatus      = 0xC00000A8\n\tSTATUS_BAD_MASTER_BOOT_RECORD                                             NTStatus      = 0xC00000A9\n\tSTATUS_INSTRUCTION_MISALIGNMENT                                           NTStatus      = 0xC00000AA\n\tSTATUS_INSTANCE_NOT_AVAILABLE                                             NTStatus      = 0xC00000AB\n\tSTATUS_PIPE_NOT_AVAILABLE                                                 NTStatus      = 0xC00000AC\n\tSTATUS_INVALID_PIPE_STATE                                                 NTStatus      = 0xC00000AD\n\tSTATUS_PIPE_BUSY                                                          NTStatus      = 0xC00000AE\n\tSTATUS_ILLEGAL_FUNCTION                                                   NTStatus      = 0xC00000AF\n\tSTATUS_PIPE_DISCONNECTED                                                  NTStatus      = 0xC00000B0\n\tSTATUS_PIPE_CLOSING                                                       NTStatus      = 0xC00000B1\n\tSTATUS_PIPE_CONNECTED                                                     NTStatus      = 0xC00000B2\n\tSTATUS_PIPE_LISTENING                                                     NTStatus      = 0xC00000B3\n\tSTATUS_INVALID_READ_MODE                                                  NTStatus      = 0xC00000B4\n\tSTATUS_IO_TIMEOUT                                                         NTStatus      = 0xC00000B5\n\tSTATUS_FILE_FORCED_CLOSED                                                 NTStatus      = 0xC00000B6\n\tSTATUS_PROFILING_NOT_STARTED                                              NTStatus      = 0xC00000B7\n\tSTATUS_PROFILING_NOT_STOPPED                                              NTStatus      = 0xC00000B8\n\tSTATUS_COULD_NOT_INTERPRET                                                NTStatus      = 0xC00000B9\n\tSTATUS_FILE_IS_A_DIRECTORY                                                NTStatus      = 0xC00000BA\n\tSTATUS_NOT_SUPPORTED                                                      NTStatus      = 0xC00000BB\n\tSTATUS_REMOTE_NOT_LISTENING                                               NTStatus      = 0xC00000BC\n\tSTATUS_DUPLICATE_NAME                                                     NTStatus      = 0xC00000BD\n\tSTATUS_BAD_NETWORK_PATH                                                   NTStatus      = 0xC00000BE\n\tSTATUS_NETWORK_BUSY                                                       NTStatus      = 0xC00000BF\n\tSTATUS_DEVICE_DOES_NOT_EXIST                                              NTStatus      = 0xC00000C0\n\tSTATUS_TOO_MANY_COMMANDS                                                  NTStatus      = 0xC00000C1\n\tSTATUS_ADAPTER_HARDWARE_ERROR                                             NTStatus      = 0xC00000C2\n\tSTATUS_INVALID_NETWORK_RESPONSE                                           NTStatus      = 0xC00000C3\n\tSTATUS_UNEXPECTED_NETWORK_ERROR                                           NTStatus      = 0xC00000C4\n\tSTATUS_BAD_REMOTE_ADAPTER                                                 NTStatus      = 0xC00000C5\n\tSTATUS_PRINT_QUEUE_FULL                                                   NTStatus      = 0xC00000C6\n\tSTATUS_NO_SPOOL_SPACE                                                     NTStatus      = 0xC00000C7\n\tSTATUS_PRINT_CANCELLED                                                    NTStatus      = 0xC00000C8\n\tSTATUS_NETWORK_NAME_DELETED                                               NTStatus      = 0xC00000C9\n\tSTATUS_NETWORK_ACCESS_DENIED                                              NTStatus      = 0xC00000CA\n\tSTATUS_BAD_DEVICE_TYPE                                                    NTStatus      = 0xC00000CB\n\tSTATUS_BAD_NETWORK_NAME                                                   NTStatus      = 0xC00000CC\n\tSTATUS_TOO_MANY_NAMES                                                     NTStatus      = 0xC00000CD\n\tSTATUS_TOO_MANY_SESSIONS                                                  NTStatus      = 0xC00000CE\n\tSTATUS_SHARING_PAUSED                                                     NTStatus      = 0xC00000CF\n\tSTATUS_REQUEST_NOT_ACCEPTED                                               NTStatus      = 0xC00000D0\n\tSTATUS_REDIRECTOR_PAUSED                                                  NTStatus      = 0xC00000D1\n\tSTATUS_NET_WRITE_FAULT                                                    NTStatus      = 0xC00000D2\n\tSTATUS_PROFILING_AT_LIMIT                                                 NTStatus      = 0xC00000D3\n\tSTATUS_NOT_SAME_DEVICE                                                    NTStatus      = 0xC00000D4\n\tSTATUS_FILE_RENAMED                                                       NTStatus      = 0xC00000D5\n\tSTATUS_VIRTUAL_CIRCUIT_CLOSED                                             NTStatus      = 0xC00000D6\n\tSTATUS_NO_SECURITY_ON_OBJECT                                              NTStatus      = 0xC00000D7\n\tSTATUS_CANT_WAIT                                                          NTStatus      = 0xC00000D8\n\tSTATUS_PIPE_EMPTY                                                         NTStatus      = 0xC00000D9\n\tSTATUS_CANT_ACCESS_DOMAIN_INFO                                            NTStatus      = 0xC00000DA\n\tSTATUS_CANT_TERMINATE_SELF                                                NTStatus      = 0xC00000DB\n\tSTATUS_INVALID_SERVER_STATE                                               NTStatus      = 0xC00000DC\n\tSTATUS_INVALID_DOMAIN_STATE                                               NTStatus      = 0xC00000DD\n\tSTATUS_INVALID_DOMAIN_ROLE                                                NTStatus      = 0xC00000DE\n\tSTATUS_NO_SUCH_DOMAIN                                                     NTStatus      = 0xC00000DF\n\tSTATUS_DOMAIN_EXISTS                                                      NTStatus      = 0xC00000E0\n\tSTATUS_DOMAIN_LIMIT_EXCEEDED                                              NTStatus      = 0xC00000E1\n\tSTATUS_OPLOCK_NOT_GRANTED                                                 NTStatus      = 0xC00000E2\n\tSTATUS_INVALID_OPLOCK_PROTOCOL                                            NTStatus      = 0xC00000E3\n\tSTATUS_INTERNAL_DB_CORRUPTION                                             NTStatus      = 0xC00000E4\n\tSTATUS_INTERNAL_ERROR                                                     NTStatus      = 0xC00000E5\n\tSTATUS_GENERIC_NOT_MAPPED                                                 NTStatus      = 0xC00000E6\n\tSTATUS_BAD_DESCRIPTOR_FORMAT                                              NTStatus      = 0xC00000E7\n\tSTATUS_INVALID_USER_BUFFER                                                NTStatus      = 0xC00000E8\n\tSTATUS_UNEXPECTED_IO_ERROR                                                NTStatus      = 0xC00000E9\n\tSTATUS_UNEXPECTED_MM_CREATE_ERR                                           NTStatus      = 0xC00000EA\n\tSTATUS_UNEXPECTED_MM_MAP_ERROR                                            NTStatus      = 0xC00000EB\n\tSTATUS_UNEXPECTED_MM_EXTEND_ERR                                           NTStatus      = 0xC00000EC\n\tSTATUS_NOT_LOGON_PROCESS                                                  NTStatus      = 0xC00000ED\n\tSTATUS_LOGON_SESSION_EXISTS                                               NTStatus      = 0xC00000EE\n\tSTATUS_INVALID_PARAMETER_1                                                NTStatus      = 0xC00000EF\n\tSTATUS_INVALID_PARAMETER_2                                                NTStatus      = 0xC00000F0\n\tSTATUS_INVALID_PARAMETER_3                                                NTStatus      = 0xC00000F1\n\tSTATUS_INVALID_PARAMETER_4                                                NTStatus      = 0xC00000F2\n\tSTATUS_INVALID_PARAMETER_5                                                NTStatus      = 0xC00000F3\n\tSTATUS_INVALID_PARAMETER_6                                                NTStatus      = 0xC00000F4\n\tSTATUS_INVALID_PARAMETER_7                                                NTStatus      = 0xC00000F5\n\tSTATUS_INVALID_PARAMETER_8                                                NTStatus      = 0xC00000F6\n\tSTATUS_INVALID_PARAMETER_9                                                NTStatus      = 0xC00000F7\n\tSTATUS_INVALID_PARAMETER_10                                               NTStatus      = 0xC00000F8\n\tSTATUS_INVALID_PARAMETER_11                                               NTStatus      = 0xC00000F9\n\tSTATUS_INVALID_PARAMETER_12                                               NTStatus      = 0xC00000FA\n\tSTATUS_REDIRECTOR_NOT_STARTED                                             NTStatus      = 0xC00000FB\n\tSTATUS_REDIRECTOR_STARTED                                                 NTStatus      = 0xC00000FC\n\tSTATUS_STACK_OVERFLOW                                                     NTStatus      = 0xC00000FD\n\tSTATUS_NO_SUCH_PACKAGE                                                    NTStatus      = 0xC00000FE\n\tSTATUS_BAD_FUNCTION_TABLE                                                 NTStatus      = 0xC00000FF\n\tSTATUS_VARIABLE_NOT_FOUND                                                 NTStatus      = 0xC0000100\n\tSTATUS_DIRECTORY_NOT_EMPTY                                                NTStatus      = 0xC0000101\n\tSTATUS_FILE_CORRUPT_ERROR                                                 NTStatus      = 0xC0000102\n\tSTATUS_NOT_A_DIRECTORY                                                    NTStatus      = 0xC0000103\n\tSTATUS_BAD_LOGON_SESSION_STATE                                            NTStatus      = 0xC0000104\n\tSTATUS_LOGON_SESSION_COLLISION                                            NTStatus      = 0xC0000105\n\tSTATUS_NAME_TOO_LONG                                                      NTStatus      = 0xC0000106\n\tSTATUS_FILES_OPEN                                                         NTStatus      = 0xC0000107\n\tSTATUS_CONNECTION_IN_USE                                                  NTStatus      = 0xC0000108\n\tSTATUS_MESSAGE_NOT_FOUND                                                  NTStatus      = 0xC0000109\n\tSTATUS_PROCESS_IS_TERMINATING                                             NTStatus      = 0xC000010A\n\tSTATUS_INVALID_LOGON_TYPE                                                 NTStatus      = 0xC000010B\n\tSTATUS_NO_GUID_TRANSLATION                                                NTStatus      = 0xC000010C\n\tSTATUS_CANNOT_IMPERSONATE                                                 NTStatus      = 0xC000010D\n\tSTATUS_IMAGE_ALREADY_LOADED                                               NTStatus      = 0xC000010E\n\tSTATUS_ABIOS_NOT_PRESENT                                                  NTStatus      = 0xC000010F\n\tSTATUS_ABIOS_LID_NOT_EXIST                                                NTStatus      = 0xC0000110\n\tSTATUS_ABIOS_LID_ALREADY_OWNED                                            NTStatus      = 0xC0000111\n\tSTATUS_ABIOS_NOT_LID_OWNER                                                NTStatus      = 0xC0000112\n\tSTATUS_ABIOS_INVALID_COMMAND                                              NTStatus      = 0xC0000113\n\tSTATUS_ABIOS_INVALID_LID                                                  NTStatus      = 0xC0000114\n\tSTATUS_ABIOS_SELECTOR_NOT_AVAILABLE                                       NTStatus      = 0xC0000115\n\tSTATUS_ABIOS_INVALID_SELECTOR                                             NTStatus      = 0xC0000116\n\tSTATUS_NO_LDT                                                             NTStatus      = 0xC0000117\n\tSTATUS_INVALID_LDT_SIZE                                                   NTStatus      = 0xC0000118\n\tSTATUS_INVALID_LDT_OFFSET                                                 NTStatus      = 0xC0000119\n\tSTATUS_INVALID_LDT_DESCRIPTOR                                             NTStatus      = 0xC000011A\n\tSTATUS_INVALID_IMAGE_NE_FORMAT                                            NTStatus      = 0xC000011B\n\tSTATUS_RXACT_INVALID_STATE                                                NTStatus      = 0xC000011C\n\tSTATUS_RXACT_COMMIT_FAILURE                                               NTStatus      = 0xC000011D\n\tSTATUS_MAPPED_FILE_SIZE_ZERO                                              NTStatus      = 0xC000011E\n\tSTATUS_TOO_MANY_OPENED_FILES                                              NTStatus      = 0xC000011F\n\tSTATUS_CANCELLED                                                          NTStatus      = 0xC0000120\n\tSTATUS_CANNOT_DELETE                                                      NTStatus      = 0xC0000121\n\tSTATUS_INVALID_COMPUTER_NAME                                              NTStatus      = 0xC0000122\n\tSTATUS_FILE_DELETED                                                       NTStatus      = 0xC0000123\n\tSTATUS_SPECIAL_ACCOUNT                                                    NTStatus      = 0xC0000124\n\tSTATUS_SPECIAL_GROUP                                                      NTStatus      = 0xC0000125\n\tSTATUS_SPECIAL_USER                                                       NTStatus      = 0xC0000126\n\tSTATUS_MEMBERS_PRIMARY_GROUP                                              NTStatus      = 0xC0000127\n\tSTATUS_FILE_CLOSED                                                        NTStatus      = 0xC0000128\n\tSTATUS_TOO_MANY_THREADS                                                   NTStatus      = 0xC0000129\n\tSTATUS_THREAD_NOT_IN_PROCESS                                              NTStatus      = 0xC000012A\n\tSTATUS_TOKEN_ALREADY_IN_USE                                               NTStatus      = 0xC000012B\n\tSTATUS_PAGEFILE_QUOTA_EXCEEDED                                            NTStatus      = 0xC000012C\n\tSTATUS_COMMITMENT_LIMIT                                                   NTStatus      = 0xC000012D\n\tSTATUS_INVALID_IMAGE_LE_FORMAT                                            NTStatus      = 0xC000012E\n\tSTATUS_INVALID_IMAGE_NOT_MZ                                               NTStatus      = 0xC000012F\n\tSTATUS_INVALID_IMAGE_PROTECT                                              NTStatus      = 0xC0000130\n\tSTATUS_INVALID_IMAGE_WIN_16                                               NTStatus      = 0xC0000131\n\tSTATUS_LOGON_SERVER_CONFLICT                                              NTStatus      = 0xC0000132\n\tSTATUS_TIME_DIFFERENCE_AT_DC                                              NTStatus      = 0xC0000133\n\tSTATUS_SYNCHRONIZATION_REQUIRED                                           NTStatus      = 0xC0000134\n\tSTATUS_DLL_NOT_FOUND                                                      NTStatus      = 0xC0000135\n\tSTATUS_OPEN_FAILED                                                        NTStatus      = 0xC0000136\n\tSTATUS_IO_PRIVILEGE_FAILED                                                NTStatus      = 0xC0000137\n\tSTATUS_ORDINAL_NOT_FOUND                                                  NTStatus      = 0xC0000138\n\tSTATUS_ENTRYPOINT_NOT_FOUND                                               NTStatus      = 0xC0000139\n\tSTATUS_CONTROL_C_EXIT                                                     NTStatus      = 0xC000013A\n\tSTATUS_LOCAL_DISCONNECT                                                   NTStatus      = 0xC000013B\n\tSTATUS_REMOTE_DISCONNECT                                                  NTStatus      = 0xC000013C\n\tSTATUS_REMOTE_RESOURCES                                                   NTStatus      = 0xC000013D\n\tSTATUS_LINK_FAILED                                                        NTStatus      = 0xC000013E\n\tSTATUS_LINK_TIMEOUT                                                       NTStatus      = 0xC000013F\n\tSTATUS_INVALID_CONNECTION                                                 NTStatus      = 0xC0000140\n\tSTATUS_INVALID_ADDRESS                                                    NTStatus      = 0xC0000141\n\tSTATUS_DLL_INIT_FAILED                                                    NTStatus      = 0xC0000142\n\tSTATUS_MISSING_SYSTEMFILE                                                 NTStatus      = 0xC0000143\n\tSTATUS_UNHANDLED_EXCEPTION                                                NTStatus      = 0xC0000144\n\tSTATUS_APP_INIT_FAILURE                                                   NTStatus      = 0xC0000145\n\tSTATUS_PAGEFILE_CREATE_FAILED                                             NTStatus      = 0xC0000146\n\tSTATUS_NO_PAGEFILE                                                        NTStatus      = 0xC0000147\n\tSTATUS_INVALID_LEVEL                                                      NTStatus      = 0xC0000148\n\tSTATUS_WRONG_PASSWORD_CORE                                                NTStatus      = 0xC0000149\n\tSTATUS_ILLEGAL_FLOAT_CONTEXT                                              NTStatus      = 0xC000014A\n\tSTATUS_PIPE_BROKEN                                                        NTStatus      = 0xC000014B\n\tSTATUS_REGISTRY_CORRUPT                                                   NTStatus      = 0xC000014C\n\tSTATUS_REGISTRY_IO_FAILED                                                 NTStatus      = 0xC000014D\n\tSTATUS_NO_EVENT_PAIR                                                      NTStatus      = 0xC000014E\n\tSTATUS_UNRECOGNIZED_VOLUME                                                NTStatus      = 0xC000014F\n\tSTATUS_SERIAL_NO_DEVICE_INITED                                            NTStatus      = 0xC0000150\n\tSTATUS_NO_SUCH_ALIAS                                                      NTStatus      = 0xC0000151\n\tSTATUS_MEMBER_NOT_IN_ALIAS                                                NTStatus      = 0xC0000152\n\tSTATUS_MEMBER_IN_ALIAS                                                    NTStatus      = 0xC0000153\n\tSTATUS_ALIAS_EXISTS                                                       NTStatus      = 0xC0000154\n\tSTATUS_LOGON_NOT_GRANTED                                                  NTStatus      = 0xC0000155\n\tSTATUS_TOO_MANY_SECRETS                                                   NTStatus      = 0xC0000156\n\tSTATUS_SECRET_TOO_LONG                                                    NTStatus      = 0xC0000157\n\tSTATUS_INTERNAL_DB_ERROR                                                  NTStatus      = 0xC0000158\n\tSTATUS_FULLSCREEN_MODE                                                    NTStatus      = 0xC0000159\n\tSTATUS_TOO_MANY_CONTEXT_IDS                                               NTStatus      = 0xC000015A\n\tSTATUS_LOGON_TYPE_NOT_GRANTED                                             NTStatus      = 0xC000015B\n\tSTATUS_NOT_REGISTRY_FILE                                                  NTStatus      = 0xC000015C\n\tSTATUS_NT_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000015D\n\tSTATUS_DOMAIN_CTRLR_CONFIG_ERROR                                          NTStatus      = 0xC000015E\n\tSTATUS_FT_MISSING_MEMBER                                                  NTStatus      = 0xC000015F\n\tSTATUS_ILL_FORMED_SERVICE_ENTRY                                           NTStatus      = 0xC0000160\n\tSTATUS_ILLEGAL_CHARACTER                                                  NTStatus      = 0xC0000161\n\tSTATUS_UNMAPPABLE_CHARACTER                                               NTStatus      = 0xC0000162\n\tSTATUS_UNDEFINED_CHARACTER                                                NTStatus      = 0xC0000163\n\tSTATUS_FLOPPY_VOLUME                                                      NTStatus      = 0xC0000164\n\tSTATUS_FLOPPY_ID_MARK_NOT_FOUND                                           NTStatus      = 0xC0000165\n\tSTATUS_FLOPPY_WRONG_CYLINDER                                              NTStatus      = 0xC0000166\n\tSTATUS_FLOPPY_UNKNOWN_ERROR                                               NTStatus      = 0xC0000167\n\tSTATUS_FLOPPY_BAD_REGISTERS                                               NTStatus      = 0xC0000168\n\tSTATUS_DISK_RECALIBRATE_FAILED                                            NTStatus      = 0xC0000169\n\tSTATUS_DISK_OPERATION_FAILED                                              NTStatus      = 0xC000016A\n\tSTATUS_DISK_RESET_FAILED                                                  NTStatus      = 0xC000016B\n\tSTATUS_SHARED_IRQ_BUSY                                                    NTStatus      = 0xC000016C\n\tSTATUS_FT_ORPHANING                                                       NTStatus      = 0xC000016D\n\tSTATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT                                   NTStatus      = 0xC000016E\n\tSTATUS_PARTITION_FAILURE                                                  NTStatus      = 0xC0000172\n\tSTATUS_INVALID_BLOCK_LENGTH                                               NTStatus      = 0xC0000173\n\tSTATUS_DEVICE_NOT_PARTITIONED                                             NTStatus      = 0xC0000174\n\tSTATUS_UNABLE_TO_LOCK_MEDIA                                               NTStatus      = 0xC0000175\n\tSTATUS_UNABLE_TO_UNLOAD_MEDIA                                             NTStatus      = 0xC0000176\n\tSTATUS_EOM_OVERFLOW                                                       NTStatus      = 0xC0000177\n\tSTATUS_NO_MEDIA                                                           NTStatus      = 0xC0000178\n\tSTATUS_NO_SUCH_MEMBER                                                     NTStatus      = 0xC000017A\n\tSTATUS_INVALID_MEMBER                                                     NTStatus      = 0xC000017B\n\tSTATUS_KEY_DELETED                                                        NTStatus      = 0xC000017C\n\tSTATUS_NO_LOG_SPACE                                                       NTStatus      = 0xC000017D\n\tSTATUS_TOO_MANY_SIDS                                                      NTStatus      = 0xC000017E\n\tSTATUS_LM_CROSS_ENCRYPTION_REQUIRED                                       NTStatus      = 0xC000017F\n\tSTATUS_KEY_HAS_CHILDREN                                                   NTStatus      = 0xC0000180\n\tSTATUS_CHILD_MUST_BE_VOLATILE                                             NTStatus      = 0xC0000181\n\tSTATUS_DEVICE_CONFIGURATION_ERROR                                         NTStatus      = 0xC0000182\n\tSTATUS_DRIVER_INTERNAL_ERROR                                              NTStatus      = 0xC0000183\n\tSTATUS_INVALID_DEVICE_STATE                                               NTStatus      = 0xC0000184\n\tSTATUS_IO_DEVICE_ERROR                                                    NTStatus      = 0xC0000185\n\tSTATUS_DEVICE_PROTOCOL_ERROR                                              NTStatus      = 0xC0000186\n\tSTATUS_BACKUP_CONTROLLER                                                  NTStatus      = 0xC0000187\n\tSTATUS_LOG_FILE_FULL                                                      NTStatus      = 0xC0000188\n\tSTATUS_TOO_LATE                                                           NTStatus      = 0xC0000189\n\tSTATUS_NO_TRUST_LSA_SECRET                                                NTStatus      = 0xC000018A\n\tSTATUS_NO_TRUST_SAM_ACCOUNT                                               NTStatus      = 0xC000018B\n\tSTATUS_TRUSTED_DOMAIN_FAILURE                                             NTStatus      = 0xC000018C\n\tSTATUS_TRUSTED_RELATIONSHIP_FAILURE                                       NTStatus      = 0xC000018D\n\tSTATUS_EVENTLOG_FILE_CORRUPT                                              NTStatus      = 0xC000018E\n\tSTATUS_EVENTLOG_CANT_START                                                NTStatus      = 0xC000018F\n\tSTATUS_TRUST_FAILURE                                                      NTStatus      = 0xC0000190\n\tSTATUS_MUTANT_LIMIT_EXCEEDED                                              NTStatus      = 0xC0000191\n\tSTATUS_NETLOGON_NOT_STARTED                                               NTStatus      = 0xC0000192\n\tSTATUS_ACCOUNT_EXPIRED                                                    NTStatus      = 0xC0000193\n\tSTATUS_POSSIBLE_DEADLOCK                                                  NTStatus      = 0xC0000194\n\tSTATUS_NETWORK_CREDENTIAL_CONFLICT                                        NTStatus      = 0xC0000195\n\tSTATUS_REMOTE_SESSION_LIMIT                                               NTStatus      = 0xC0000196\n\tSTATUS_EVENTLOG_FILE_CHANGED                                              NTStatus      = 0xC0000197\n\tSTATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT                                  NTStatus      = 0xC0000198\n\tSTATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT                                  NTStatus      = 0xC0000199\n\tSTATUS_NOLOGON_SERVER_TRUST_ACCOUNT                                       NTStatus      = 0xC000019A\n\tSTATUS_DOMAIN_TRUST_INCONSISTENT                                          NTStatus      = 0xC000019B\n\tSTATUS_FS_DRIVER_REQUIRED                                                 NTStatus      = 0xC000019C\n\tSTATUS_IMAGE_ALREADY_LOADED_AS_DLL                                        NTStatus      = 0xC000019D\n\tSTATUS_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING               NTStatus      = 0xC000019E\n\tSTATUS_SHORT_NAMES_NOT_ENABLED_ON_VOLUME                                  NTStatus      = 0xC000019F\n\tSTATUS_SECURITY_STREAM_IS_INCONSISTENT                                    NTStatus      = 0xC00001A0\n\tSTATUS_INVALID_LOCK_RANGE                                                 NTStatus      = 0xC00001A1\n\tSTATUS_INVALID_ACE_CONDITION                                              NTStatus      = 0xC00001A2\n\tSTATUS_IMAGE_SUBSYSTEM_NOT_PRESENT                                        NTStatus      = 0xC00001A3\n\tSTATUS_NOTIFICATION_GUID_ALREADY_DEFINED                                  NTStatus      = 0xC00001A4\n\tSTATUS_INVALID_EXCEPTION_HANDLER                                          NTStatus      = 0xC00001A5\n\tSTATUS_DUPLICATE_PRIVILEGES                                               NTStatus      = 0xC00001A6\n\tSTATUS_NOT_ALLOWED_ON_SYSTEM_FILE                                         NTStatus      = 0xC00001A7\n\tSTATUS_REPAIR_NEEDED                                                      NTStatus      = 0xC00001A8\n\tSTATUS_QUOTA_NOT_ENABLED                                                  NTStatus      = 0xC00001A9\n\tSTATUS_NO_APPLICATION_PACKAGE                                             NTStatus      = 0xC00001AA\n\tSTATUS_FILE_METADATA_OPTIMIZATION_IN_PROGRESS                             NTStatus      = 0xC00001AB\n\tSTATUS_NOT_SAME_OBJECT                                                    NTStatus      = 0xC00001AC\n\tSTATUS_FATAL_MEMORY_EXHAUSTION                                            NTStatus      = 0xC00001AD\n\tSTATUS_ERROR_PROCESS_NOT_IN_JOB                                           NTStatus      = 0xC00001AE\n\tSTATUS_CPU_SET_INVALID                                                    NTStatus      = 0xC00001AF\n\tSTATUS_IO_DEVICE_INVALID_DATA                                             NTStatus      = 0xC00001B0\n\tSTATUS_IO_UNALIGNED_WRITE                                                 NTStatus      = 0xC00001B1\n\tSTATUS_NETWORK_OPEN_RESTRICTION                                           NTStatus      = 0xC0000201\n\tSTATUS_NO_USER_SESSION_KEY                                                NTStatus      = 0xC0000202\n\tSTATUS_USER_SESSION_DELETED                                               NTStatus      = 0xC0000203\n\tSTATUS_RESOURCE_LANG_NOT_FOUND                                            NTStatus      = 0xC0000204\n\tSTATUS_INSUFF_SERVER_RESOURCES                                            NTStatus      = 0xC0000205\n\tSTATUS_INVALID_BUFFER_SIZE                                                NTStatus      = 0xC0000206\n\tSTATUS_INVALID_ADDRESS_COMPONENT                                          NTStatus      = 0xC0000207\n\tSTATUS_INVALID_ADDRESS_WILDCARD                                           NTStatus      = 0xC0000208\n\tSTATUS_TOO_MANY_ADDRESSES                                                 NTStatus      = 0xC0000209\n\tSTATUS_ADDRESS_ALREADY_EXISTS                                             NTStatus      = 0xC000020A\n\tSTATUS_ADDRESS_CLOSED                                                     NTStatus      = 0xC000020B\n\tSTATUS_CONNECTION_DISCONNECTED                                            NTStatus      = 0xC000020C\n\tSTATUS_CONNECTION_RESET                                                   NTStatus      = 0xC000020D\n\tSTATUS_TOO_MANY_NODES                                                     NTStatus      = 0xC000020E\n\tSTATUS_TRANSACTION_ABORTED                                                NTStatus      = 0xC000020F\n\tSTATUS_TRANSACTION_TIMED_OUT                                              NTStatus      = 0xC0000210\n\tSTATUS_TRANSACTION_NO_RELEASE                                             NTStatus      = 0xC0000211\n\tSTATUS_TRANSACTION_NO_MATCH                                               NTStatus      = 0xC0000212\n\tSTATUS_TRANSACTION_RESPONDED                                              NTStatus      = 0xC0000213\n\tSTATUS_TRANSACTION_INVALID_ID                                             NTStatus      = 0xC0000214\n\tSTATUS_TRANSACTION_INVALID_TYPE                                           NTStatus      = 0xC0000215\n\tSTATUS_NOT_SERVER_SESSION                                                 NTStatus      = 0xC0000216\n\tSTATUS_NOT_CLIENT_SESSION                                                 NTStatus      = 0xC0000217\n\tSTATUS_CANNOT_LOAD_REGISTRY_FILE                                          NTStatus      = 0xC0000218\n\tSTATUS_DEBUG_ATTACH_FAILED                                                NTStatus      = 0xC0000219\n\tSTATUS_SYSTEM_PROCESS_TERMINATED                                          NTStatus      = 0xC000021A\n\tSTATUS_DATA_NOT_ACCEPTED                                                  NTStatus      = 0xC000021B\n\tSTATUS_NO_BROWSER_SERVERS_FOUND                                           NTStatus      = 0xC000021C\n\tSTATUS_VDM_HARD_ERROR                                                     NTStatus      = 0xC000021D\n\tSTATUS_DRIVER_CANCEL_TIMEOUT                                              NTStatus      = 0xC000021E\n\tSTATUS_REPLY_MESSAGE_MISMATCH                                             NTStatus      = 0xC000021F\n\tSTATUS_MAPPED_ALIGNMENT                                                   NTStatus      = 0xC0000220\n\tSTATUS_IMAGE_CHECKSUM_MISMATCH                                            NTStatus      = 0xC0000221\n\tSTATUS_LOST_WRITEBEHIND_DATA                                              NTStatus      = 0xC0000222\n\tSTATUS_CLIENT_SERVER_PARAMETERS_INVALID                                   NTStatus      = 0xC0000223\n\tSTATUS_PASSWORD_MUST_CHANGE                                               NTStatus      = 0xC0000224\n\tSTATUS_NOT_FOUND                                                          NTStatus      = 0xC0000225\n\tSTATUS_NOT_TINY_STREAM                                                    NTStatus      = 0xC0000226\n\tSTATUS_RECOVERY_FAILURE                                                   NTStatus      = 0xC0000227\n\tSTATUS_STACK_OVERFLOW_READ                                                NTStatus      = 0xC0000228\n\tSTATUS_FAIL_CHECK                                                         NTStatus      = 0xC0000229\n\tSTATUS_DUPLICATE_OBJECTID                                                 NTStatus      = 0xC000022A\n\tSTATUS_OBJECTID_EXISTS                                                    NTStatus      = 0xC000022B\n\tSTATUS_CONVERT_TO_LARGE                                                   NTStatus      = 0xC000022C\n\tSTATUS_RETRY                                                              NTStatus      = 0xC000022D\n\tSTATUS_FOUND_OUT_OF_SCOPE                                                 NTStatus      = 0xC000022E\n\tSTATUS_ALLOCATE_BUCKET                                                    NTStatus      = 0xC000022F\n\tSTATUS_PROPSET_NOT_FOUND                                                  NTStatus      = 0xC0000230\n\tSTATUS_MARSHALL_OVERFLOW                                                  NTStatus      = 0xC0000231\n\tSTATUS_INVALID_VARIANT                                                    NTStatus      = 0xC0000232\n\tSTATUS_DOMAIN_CONTROLLER_NOT_FOUND                                        NTStatus      = 0xC0000233\n\tSTATUS_ACCOUNT_LOCKED_OUT                                                 NTStatus      = 0xC0000234\n\tSTATUS_HANDLE_NOT_CLOSABLE                                                NTStatus      = 0xC0000235\n\tSTATUS_CONNECTION_REFUSED                                                 NTStatus      = 0xC0000236\n\tSTATUS_GRACEFUL_DISCONNECT                                                NTStatus      = 0xC0000237\n\tSTATUS_ADDRESS_ALREADY_ASSOCIATED                                         NTStatus      = 0xC0000238\n\tSTATUS_ADDRESS_NOT_ASSOCIATED                                             NTStatus      = 0xC0000239\n\tSTATUS_CONNECTION_INVALID                                                 NTStatus      = 0xC000023A\n\tSTATUS_CONNECTION_ACTIVE                                                  NTStatus      = 0xC000023B\n\tSTATUS_NETWORK_UNREACHABLE                                                NTStatus      = 0xC000023C\n\tSTATUS_HOST_UNREACHABLE                                                   NTStatus      = 0xC000023D\n\tSTATUS_PROTOCOL_UNREACHABLE                                               NTStatus      = 0xC000023E\n\tSTATUS_PORT_UNREACHABLE                                                   NTStatus      = 0xC000023F\n\tSTATUS_REQUEST_ABORTED                                                    NTStatus      = 0xC0000240\n\tSTATUS_CONNECTION_ABORTED                                                 NTStatus      = 0xC0000241\n\tSTATUS_BAD_COMPRESSION_BUFFER                                             NTStatus      = 0xC0000242\n\tSTATUS_USER_MAPPED_FILE                                                   NTStatus      = 0xC0000243\n\tSTATUS_AUDIT_FAILED                                                       NTStatus      = 0xC0000244\n\tSTATUS_TIMER_RESOLUTION_NOT_SET                                           NTStatus      = 0xC0000245\n\tSTATUS_CONNECTION_COUNT_LIMIT                                             NTStatus      = 0xC0000246\n\tSTATUS_LOGIN_TIME_RESTRICTION                                             NTStatus      = 0xC0000247\n\tSTATUS_LOGIN_WKSTA_RESTRICTION                                            NTStatus      = 0xC0000248\n\tSTATUS_IMAGE_MP_UP_MISMATCH                                               NTStatus      = 0xC0000249\n\tSTATUS_INSUFFICIENT_LOGON_INFO                                            NTStatus      = 0xC0000250\n\tSTATUS_BAD_DLL_ENTRYPOINT                                                 NTStatus      = 0xC0000251\n\tSTATUS_BAD_SERVICE_ENTRYPOINT                                             NTStatus      = 0xC0000252\n\tSTATUS_LPC_REPLY_LOST                                                     NTStatus      = 0xC0000253\n\tSTATUS_IP_ADDRESS_CONFLICT1                                               NTStatus      = 0xC0000254\n\tSTATUS_IP_ADDRESS_CONFLICT2                                               NTStatus      = 0xC0000255\n\tSTATUS_REGISTRY_QUOTA_LIMIT                                               NTStatus      = 0xC0000256\n\tSTATUS_PATH_NOT_COVERED                                                   NTStatus      = 0xC0000257\n\tSTATUS_NO_CALLBACK_ACTIVE                                                 NTStatus      = 0xC0000258\n\tSTATUS_LICENSE_QUOTA_EXCEEDED                                             NTStatus      = 0xC0000259\n\tSTATUS_PWD_TOO_SHORT                                                      NTStatus      = 0xC000025A\n\tSTATUS_PWD_TOO_RECENT                                                     NTStatus      = 0xC000025B\n\tSTATUS_PWD_HISTORY_CONFLICT                                               NTStatus      = 0xC000025C\n\tSTATUS_PLUGPLAY_NO_DEVICE                                                 NTStatus      = 0xC000025E\n\tSTATUS_UNSUPPORTED_COMPRESSION                                            NTStatus      = 0xC000025F\n\tSTATUS_INVALID_HW_PROFILE                                                 NTStatus      = 0xC0000260\n\tSTATUS_INVALID_PLUGPLAY_DEVICE_PATH                                       NTStatus      = 0xC0000261\n\tSTATUS_DRIVER_ORDINAL_NOT_FOUND                                           NTStatus      = 0xC0000262\n\tSTATUS_DRIVER_ENTRYPOINT_NOT_FOUND                                        NTStatus      = 0xC0000263\n\tSTATUS_RESOURCE_NOT_OWNED                                                 NTStatus      = 0xC0000264\n\tSTATUS_TOO_MANY_LINKS                                                     NTStatus      = 0xC0000265\n\tSTATUS_QUOTA_LIST_INCONSISTENT                                            NTStatus      = 0xC0000266\n\tSTATUS_FILE_IS_OFFLINE                                                    NTStatus      = 0xC0000267\n\tSTATUS_EVALUATION_EXPIRATION                                              NTStatus      = 0xC0000268\n\tSTATUS_ILLEGAL_DLL_RELOCATION                                             NTStatus      = 0xC0000269\n\tSTATUS_LICENSE_VIOLATION                                                  NTStatus      = 0xC000026A\n\tSTATUS_DLL_INIT_FAILED_LOGOFF                                             NTStatus      = 0xC000026B\n\tSTATUS_DRIVER_UNABLE_TO_LOAD                                              NTStatus      = 0xC000026C\n\tSTATUS_DFS_UNAVAILABLE                                                    NTStatus      = 0xC000026D\n\tSTATUS_VOLUME_DISMOUNTED                                                  NTStatus      = 0xC000026E\n\tSTATUS_WX86_INTERNAL_ERROR                                                NTStatus      = 0xC000026F\n\tSTATUS_WX86_FLOAT_STACK_CHECK                                             NTStatus      = 0xC0000270\n\tSTATUS_VALIDATE_CONTINUE                                                  NTStatus      = 0xC0000271\n\tSTATUS_NO_MATCH                                                           NTStatus      = 0xC0000272\n\tSTATUS_NO_MORE_MATCHES                                                    NTStatus      = 0xC0000273\n\tSTATUS_NOT_A_REPARSE_POINT                                                NTStatus      = 0xC0000275\n\tSTATUS_IO_REPARSE_TAG_INVALID                                             NTStatus      = 0xC0000276\n\tSTATUS_IO_REPARSE_TAG_MISMATCH                                            NTStatus      = 0xC0000277\n\tSTATUS_IO_REPARSE_DATA_INVALID                                            NTStatus      = 0xC0000278\n\tSTATUS_IO_REPARSE_TAG_NOT_HANDLED                                         NTStatus      = 0xC0000279\n\tSTATUS_PWD_TOO_LONG                                                       NTStatus      = 0xC000027A\n\tSTATUS_STOWED_EXCEPTION                                                   NTStatus      = 0xC000027B\n\tSTATUS_CONTEXT_STOWED_EXCEPTION                                           NTStatus      = 0xC000027C\n\tSTATUS_REPARSE_POINT_NOT_RESOLVED                                         NTStatus      = 0xC0000280\n\tSTATUS_DIRECTORY_IS_A_REPARSE_POINT                                       NTStatus      = 0xC0000281\n\tSTATUS_RANGE_LIST_CONFLICT                                                NTStatus      = 0xC0000282\n\tSTATUS_SOURCE_ELEMENT_EMPTY                                               NTStatus      = 0xC0000283\n\tSTATUS_DESTINATION_ELEMENT_FULL                                           NTStatus      = 0xC0000284\n\tSTATUS_ILLEGAL_ELEMENT_ADDRESS                                            NTStatus      = 0xC0000285\n\tSTATUS_MAGAZINE_NOT_PRESENT                                               NTStatus      = 0xC0000286\n\tSTATUS_REINITIALIZATION_NEEDED                                            NTStatus      = 0xC0000287\n\tSTATUS_DEVICE_REQUIRES_CLEANING                                           NTStatus      = 0x80000288\n\tSTATUS_DEVICE_DOOR_OPEN                                                   NTStatus      = 0x80000289\n\tSTATUS_ENCRYPTION_FAILED                                                  NTStatus      = 0xC000028A\n\tSTATUS_DECRYPTION_FAILED                                                  NTStatus      = 0xC000028B\n\tSTATUS_RANGE_NOT_FOUND                                                    NTStatus      = 0xC000028C\n\tSTATUS_NO_RECOVERY_POLICY                                                 NTStatus      = 0xC000028D\n\tSTATUS_NO_EFS                                                             NTStatus      = 0xC000028E\n\tSTATUS_WRONG_EFS                                                          NTStatus      = 0xC000028F\n\tSTATUS_NO_USER_KEYS                                                       NTStatus      = 0xC0000290\n\tSTATUS_FILE_NOT_ENCRYPTED                                                 NTStatus      = 0xC0000291\n\tSTATUS_NOT_EXPORT_FORMAT                                                  NTStatus      = 0xC0000292\n\tSTATUS_FILE_ENCRYPTED                                                     NTStatus      = 0xC0000293\n\tSTATUS_WAKE_SYSTEM                                                        NTStatus      = 0x40000294\n\tSTATUS_WMI_GUID_NOT_FOUND                                                 NTStatus      = 0xC0000295\n\tSTATUS_WMI_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC0000296\n\tSTATUS_WMI_ITEMID_NOT_FOUND                                               NTStatus      = 0xC0000297\n\tSTATUS_WMI_TRY_AGAIN                                                      NTStatus      = 0xC0000298\n\tSTATUS_SHARED_POLICY                                                      NTStatus      = 0xC0000299\n\tSTATUS_POLICY_OBJECT_NOT_FOUND                                            NTStatus      = 0xC000029A\n\tSTATUS_POLICY_ONLY_IN_DS                                                  NTStatus      = 0xC000029B\n\tSTATUS_VOLUME_NOT_UPGRADED                                                NTStatus      = 0xC000029C\n\tSTATUS_REMOTE_STORAGE_NOT_ACTIVE                                          NTStatus      = 0xC000029D\n\tSTATUS_REMOTE_STORAGE_MEDIA_ERROR                                         NTStatus      = 0xC000029E\n\tSTATUS_NO_TRACKING_SERVICE                                                NTStatus      = 0xC000029F\n\tSTATUS_SERVER_SID_MISMATCH                                                NTStatus      = 0xC00002A0\n\tSTATUS_DS_NO_ATTRIBUTE_OR_VALUE                                           NTStatus      = 0xC00002A1\n\tSTATUS_DS_INVALID_ATTRIBUTE_SYNTAX                                        NTStatus      = 0xC00002A2\n\tSTATUS_DS_ATTRIBUTE_TYPE_UNDEFINED                                        NTStatus      = 0xC00002A3\n\tSTATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS                                       NTStatus      = 0xC00002A4\n\tSTATUS_DS_BUSY                                                            NTStatus      = 0xC00002A5\n\tSTATUS_DS_UNAVAILABLE                                                     NTStatus      = 0xC00002A6\n\tSTATUS_DS_NO_RIDS_ALLOCATED                                               NTStatus      = 0xC00002A7\n\tSTATUS_DS_NO_MORE_RIDS                                                    NTStatus      = 0xC00002A8\n\tSTATUS_DS_INCORRECT_ROLE_OWNER                                            NTStatus      = 0xC00002A9\n\tSTATUS_DS_RIDMGR_INIT_ERROR                                               NTStatus      = 0xC00002AA\n\tSTATUS_DS_OBJ_CLASS_VIOLATION                                             NTStatus      = 0xC00002AB\n\tSTATUS_DS_CANT_ON_NON_LEAF                                                NTStatus      = 0xC00002AC\n\tSTATUS_DS_CANT_ON_RDN                                                     NTStatus      = 0xC00002AD\n\tSTATUS_DS_CANT_MOD_OBJ_CLASS                                              NTStatus      = 0xC00002AE\n\tSTATUS_DS_CROSS_DOM_MOVE_FAILED                                           NTStatus      = 0xC00002AF\n\tSTATUS_DS_GC_NOT_AVAILABLE                                                NTStatus      = 0xC00002B0\n\tSTATUS_DIRECTORY_SERVICE_REQUIRED                                         NTStatus      = 0xC00002B1\n\tSTATUS_REPARSE_ATTRIBUTE_CONFLICT                                         NTStatus      = 0xC00002B2\n\tSTATUS_CANT_ENABLE_DENY_ONLY                                              NTStatus      = 0xC00002B3\n\tSTATUS_FLOAT_MULTIPLE_FAULTS                                              NTStatus      = 0xC00002B4\n\tSTATUS_FLOAT_MULTIPLE_TRAPS                                               NTStatus      = 0xC00002B5\n\tSTATUS_DEVICE_REMOVED                                                     NTStatus      = 0xC00002B6\n\tSTATUS_JOURNAL_DELETE_IN_PROGRESS                                         NTStatus      = 0xC00002B7\n\tSTATUS_JOURNAL_NOT_ACTIVE                                                 NTStatus      = 0xC00002B8\n\tSTATUS_NOINTERFACE                                                        NTStatus      = 0xC00002B9\n\tSTATUS_DS_RIDMGR_DISABLED                                                 NTStatus      = 0xC00002BA\n\tSTATUS_DS_ADMIN_LIMIT_EXCEEDED                                            NTStatus      = 0xC00002C1\n\tSTATUS_DRIVER_FAILED_SLEEP                                                NTStatus      = 0xC00002C2\n\tSTATUS_MUTUAL_AUTHENTICATION_FAILED                                       NTStatus      = 0xC00002C3\n\tSTATUS_CORRUPT_SYSTEM_FILE                                                NTStatus      = 0xC00002C4\n\tSTATUS_DATATYPE_MISALIGNMENT_ERROR                                        NTStatus      = 0xC00002C5\n\tSTATUS_WMI_READ_ONLY                                                      NTStatus      = 0xC00002C6\n\tSTATUS_WMI_SET_FAILURE                                                    NTStatus      = 0xC00002C7\n\tSTATUS_COMMITMENT_MINIMUM                                                 NTStatus      = 0xC00002C8\n\tSTATUS_REG_NAT_CONSUMPTION                                                NTStatus      = 0xC00002C9\n\tSTATUS_TRANSPORT_FULL                                                     NTStatus      = 0xC00002CA\n\tSTATUS_DS_SAM_INIT_FAILURE                                                NTStatus      = 0xC00002CB\n\tSTATUS_ONLY_IF_CONNECTED                                                  NTStatus      = 0xC00002CC\n\tSTATUS_DS_SENSITIVE_GROUP_VIOLATION                                       NTStatus      = 0xC00002CD\n\tSTATUS_PNP_RESTART_ENUMERATION                                            NTStatus      = 0xC00002CE\n\tSTATUS_JOURNAL_ENTRY_DELETED                                              NTStatus      = 0xC00002CF\n\tSTATUS_DS_CANT_MOD_PRIMARYGROUPID                                         NTStatus      = 0xC00002D0\n\tSTATUS_SYSTEM_IMAGE_BAD_SIGNATURE                                         NTStatus      = 0xC00002D1\n\tSTATUS_PNP_REBOOT_REQUIRED                                                NTStatus      = 0xC00002D2\n\tSTATUS_POWER_STATE_INVALID                                                NTStatus      = 0xC00002D3\n\tSTATUS_DS_INVALID_GROUP_TYPE                                              NTStatus      = 0xC00002D4\n\tSTATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN                              NTStatus      = 0xC00002D5\n\tSTATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN                               NTStatus      = 0xC00002D6\n\tSTATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER                                   NTStatus      = 0xC00002D7\n\tSTATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER                               NTStatus      = 0xC00002D8\n\tSTATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER                                NTStatus      = 0xC00002D9\n\tSTATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER                             NTStatus      = 0xC00002DA\n\tSTATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER                        NTStatus      = 0xC00002DB\n\tSTATUS_DS_HAVE_PRIMARY_MEMBERS                                            NTStatus      = 0xC00002DC\n\tSTATUS_WMI_NOT_SUPPORTED                                                  NTStatus      = 0xC00002DD\n\tSTATUS_INSUFFICIENT_POWER                                                 NTStatus      = 0xC00002DE\n\tSTATUS_SAM_NEED_BOOTKEY_PASSWORD                                          NTStatus      = 0xC00002DF\n\tSTATUS_SAM_NEED_BOOTKEY_FLOPPY                                            NTStatus      = 0xC00002E0\n\tSTATUS_DS_CANT_START                                                      NTStatus      = 0xC00002E1\n\tSTATUS_DS_INIT_FAILURE                                                    NTStatus      = 0xC00002E2\n\tSTATUS_SAM_INIT_FAILURE                                                   NTStatus      = 0xC00002E3\n\tSTATUS_DS_GC_REQUIRED                                                     NTStatus      = 0xC00002E4\n\tSTATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY                                      NTStatus      = 0xC00002E5\n\tSTATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS                                      NTStatus      = 0xC00002E6\n\tSTATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED                                  NTStatus      = 0xC00002E7\n\tSTATUS_MULTIPLE_FAULT_VIOLATION                                           NTStatus      = 0xC00002E8\n\tSTATUS_CURRENT_DOMAIN_NOT_ALLOWED                                         NTStatus      = 0xC00002E9\n\tSTATUS_CANNOT_MAKE                                                        NTStatus      = 0xC00002EA\n\tSTATUS_SYSTEM_SHUTDOWN                                                    NTStatus      = 0xC00002EB\n\tSTATUS_DS_INIT_FAILURE_CONSOLE                                            NTStatus      = 0xC00002EC\n\tSTATUS_DS_SAM_INIT_FAILURE_CONSOLE                                        NTStatus      = 0xC00002ED\n\tSTATUS_UNFINISHED_CONTEXT_DELETED                                         NTStatus      = 0xC00002EE\n\tSTATUS_NO_TGT_REPLY                                                       NTStatus      = 0xC00002EF\n\tSTATUS_OBJECTID_NOT_FOUND                                                 NTStatus      = 0xC00002F0\n\tSTATUS_NO_IP_ADDRESSES                                                    NTStatus      = 0xC00002F1\n\tSTATUS_WRONG_CREDENTIAL_HANDLE                                            NTStatus      = 0xC00002F2\n\tSTATUS_CRYPTO_SYSTEM_INVALID                                              NTStatus      = 0xC00002F3\n\tSTATUS_MAX_REFERRALS_EXCEEDED                                             NTStatus      = 0xC00002F4\n\tSTATUS_MUST_BE_KDC                                                        NTStatus      = 0xC00002F5\n\tSTATUS_STRONG_CRYPTO_NOT_SUPPORTED                                        NTStatus      = 0xC00002F6\n\tSTATUS_TOO_MANY_PRINCIPALS                                                NTStatus      = 0xC00002F7\n\tSTATUS_NO_PA_DATA                                                         NTStatus      = 0xC00002F8\n\tSTATUS_PKINIT_NAME_MISMATCH                                               NTStatus      = 0xC00002F9\n\tSTATUS_SMARTCARD_LOGON_REQUIRED                                           NTStatus      = 0xC00002FA\n\tSTATUS_KDC_INVALID_REQUEST                                                NTStatus      = 0xC00002FB\n\tSTATUS_KDC_UNABLE_TO_REFER                                                NTStatus      = 0xC00002FC\n\tSTATUS_KDC_UNKNOWN_ETYPE                                                  NTStatus      = 0xC00002FD\n\tSTATUS_SHUTDOWN_IN_PROGRESS                                               NTStatus      = 0xC00002FE\n\tSTATUS_SERVER_SHUTDOWN_IN_PROGRESS                                        NTStatus      = 0xC00002FF\n\tSTATUS_NOT_SUPPORTED_ON_SBS                                               NTStatus      = 0xC0000300\n\tSTATUS_WMI_GUID_DISCONNECTED                                              NTStatus      = 0xC0000301\n\tSTATUS_WMI_ALREADY_DISABLED                                               NTStatus      = 0xC0000302\n\tSTATUS_WMI_ALREADY_ENABLED                                                NTStatus      = 0xC0000303\n\tSTATUS_MFT_TOO_FRAGMENTED                                                 NTStatus      = 0xC0000304\n\tSTATUS_COPY_PROTECTION_FAILURE                                            NTStatus      = 0xC0000305\n\tSTATUS_CSS_AUTHENTICATION_FAILURE                                         NTStatus      = 0xC0000306\n\tSTATUS_CSS_KEY_NOT_PRESENT                                                NTStatus      = 0xC0000307\n\tSTATUS_CSS_KEY_NOT_ESTABLISHED                                            NTStatus      = 0xC0000308\n\tSTATUS_CSS_SCRAMBLED_SECTOR                                               NTStatus      = 0xC0000309\n\tSTATUS_CSS_REGION_MISMATCH                                                NTStatus      = 0xC000030A\n\tSTATUS_CSS_RESETS_EXHAUSTED                                               NTStatus      = 0xC000030B\n\tSTATUS_PASSWORD_CHANGE_REQUIRED                                           NTStatus      = 0xC000030C\n\tSTATUS_LOST_MODE_LOGON_RESTRICTION                                        NTStatus      = 0xC000030D\n\tSTATUS_PKINIT_FAILURE                                                     NTStatus      = 0xC0000320\n\tSTATUS_SMARTCARD_SUBSYSTEM_FAILURE                                        NTStatus      = 0xC0000321\n\tSTATUS_NO_KERB_KEY                                                        NTStatus      = 0xC0000322\n\tSTATUS_HOST_DOWN                                                          NTStatus      = 0xC0000350\n\tSTATUS_UNSUPPORTED_PREAUTH                                                NTStatus      = 0xC0000351\n\tSTATUS_EFS_ALG_BLOB_TOO_BIG                                               NTStatus      = 0xC0000352\n\tSTATUS_PORT_NOT_SET                                                       NTStatus      = 0xC0000353\n\tSTATUS_DEBUGGER_INACTIVE                                                  NTStatus      = 0xC0000354\n\tSTATUS_DS_VERSION_CHECK_FAILURE                                           NTStatus      = 0xC0000355\n\tSTATUS_AUDITING_DISABLED                                                  NTStatus      = 0xC0000356\n\tSTATUS_PRENT4_MACHINE_ACCOUNT                                             NTStatus      = 0xC0000357\n\tSTATUS_DS_AG_CANT_HAVE_UNIVERSAL_MEMBER                                   NTStatus      = 0xC0000358\n\tSTATUS_INVALID_IMAGE_WIN_32                                               NTStatus      = 0xC0000359\n\tSTATUS_INVALID_IMAGE_WIN_64                                               NTStatus      = 0xC000035A\n\tSTATUS_BAD_BINDINGS                                                       NTStatus      = 0xC000035B\n\tSTATUS_NETWORK_SESSION_EXPIRED                                            NTStatus      = 0xC000035C\n\tSTATUS_APPHELP_BLOCK                                                      NTStatus      = 0xC000035D\n\tSTATUS_ALL_SIDS_FILTERED                                                  NTStatus      = 0xC000035E\n\tSTATUS_NOT_SAFE_MODE_DRIVER                                               NTStatus      = 0xC000035F\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_DEFAULT                                  NTStatus      = 0xC0000361\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PATH                                     NTStatus      = 0xC0000362\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_PUBLISHER                                NTStatus      = 0xC0000363\n\tSTATUS_ACCESS_DISABLED_BY_POLICY_OTHER                                    NTStatus      = 0xC0000364\n\tSTATUS_FAILED_DRIVER_ENTRY                                                NTStatus      = 0xC0000365\n\tSTATUS_DEVICE_ENUMERATION_ERROR                                           NTStatus      = 0xC0000366\n\tSTATUS_MOUNT_POINT_NOT_RESOLVED                                           NTStatus      = 0xC0000368\n\tSTATUS_INVALID_DEVICE_OBJECT_PARAMETER                                    NTStatus      = 0xC0000369\n\tSTATUS_MCA_OCCURED                                                        NTStatus      = 0xC000036A\n\tSTATUS_DRIVER_BLOCKED_CRITICAL                                            NTStatus      = 0xC000036B\n\tSTATUS_DRIVER_BLOCKED                                                     NTStatus      = 0xC000036C\n\tSTATUS_DRIVER_DATABASE_ERROR                                              NTStatus      = 0xC000036D\n\tSTATUS_SYSTEM_HIVE_TOO_LARGE                                              NTStatus      = 0xC000036E\n\tSTATUS_INVALID_IMPORT_OF_NON_DLL                                          NTStatus      = 0xC000036F\n\tSTATUS_DS_SHUTTING_DOWN                                                   NTStatus      = 0x40000370\n\tSTATUS_NO_SECRETS                                                         NTStatus      = 0xC0000371\n\tSTATUS_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY                              NTStatus      = 0xC0000372\n\tSTATUS_FAILED_STACK_SWITCH                                                NTStatus      = 0xC0000373\n\tSTATUS_HEAP_CORRUPTION                                                    NTStatus      = 0xC0000374\n\tSTATUS_SMARTCARD_WRONG_PIN                                                NTStatus      = 0xC0000380\n\tSTATUS_SMARTCARD_CARD_BLOCKED                                             NTStatus      = 0xC0000381\n\tSTATUS_SMARTCARD_CARD_NOT_AUTHENTICATED                                   NTStatus      = 0xC0000382\n\tSTATUS_SMARTCARD_NO_CARD                                                  NTStatus      = 0xC0000383\n\tSTATUS_SMARTCARD_NO_KEY_CONTAINER                                         NTStatus      = 0xC0000384\n\tSTATUS_SMARTCARD_NO_CERTIFICATE                                           NTStatus      = 0xC0000385\n\tSTATUS_SMARTCARD_NO_KEYSET                                                NTStatus      = 0xC0000386\n\tSTATUS_SMARTCARD_IO_ERROR                                                 NTStatus      = 0xC0000387\n\tSTATUS_DOWNGRADE_DETECTED                                                 NTStatus      = 0xC0000388\n\tSTATUS_SMARTCARD_CERT_REVOKED                                             NTStatus      = 0xC0000389\n\tSTATUS_ISSUING_CA_UNTRUSTED                                               NTStatus      = 0xC000038A\n\tSTATUS_REVOCATION_OFFLINE_C                                               NTStatus      = 0xC000038B\n\tSTATUS_PKINIT_CLIENT_FAILURE                                              NTStatus      = 0xC000038C\n\tSTATUS_SMARTCARD_CERT_EXPIRED                                             NTStatus      = 0xC000038D\n\tSTATUS_DRIVER_FAILED_PRIOR_UNLOAD                                         NTStatus      = 0xC000038E\n\tSTATUS_SMARTCARD_SILENT_CONTEXT                                           NTStatus      = 0xC000038F\n\tSTATUS_PER_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000401\n\tSTATUS_ALL_USER_TRUST_QUOTA_EXCEEDED                                      NTStatus      = 0xC0000402\n\tSTATUS_USER_DELETE_TRUST_QUOTA_EXCEEDED                                   NTStatus      = 0xC0000403\n\tSTATUS_DS_NAME_NOT_UNIQUE                                                 NTStatus      = 0xC0000404\n\tSTATUS_DS_DUPLICATE_ID_FOUND                                              NTStatus      = 0xC0000405\n\tSTATUS_DS_GROUP_CONVERSION_ERROR                                          NTStatus      = 0xC0000406\n\tSTATUS_VOLSNAP_PREPARE_HIBERNATE                                          NTStatus      = 0xC0000407\n\tSTATUS_USER2USER_REQUIRED                                                 NTStatus      = 0xC0000408\n\tSTATUS_STACK_BUFFER_OVERRUN                                               NTStatus      = 0xC0000409\n\tSTATUS_NO_S4U_PROT_SUPPORT                                                NTStatus      = 0xC000040A\n\tSTATUS_CROSSREALM_DELEGATION_FAILURE                                      NTStatus      = 0xC000040B\n\tSTATUS_REVOCATION_OFFLINE_KDC                                             NTStatus      = 0xC000040C\n\tSTATUS_ISSUING_CA_UNTRUSTED_KDC                                           NTStatus      = 0xC000040D\n\tSTATUS_KDC_CERT_EXPIRED                                                   NTStatus      = 0xC000040E\n\tSTATUS_KDC_CERT_REVOKED                                                   NTStatus      = 0xC000040F\n\tSTATUS_PARAMETER_QUOTA_EXCEEDED                                           NTStatus      = 0xC0000410\n\tSTATUS_HIBERNATION_FAILURE                                                NTStatus      = 0xC0000411\n\tSTATUS_DELAY_LOAD_FAILED                                                  NTStatus      = 0xC0000412\n\tSTATUS_AUTHENTICATION_FIREWALL_FAILED                                     NTStatus      = 0xC0000413\n\tSTATUS_VDM_DISALLOWED                                                     NTStatus      = 0xC0000414\n\tSTATUS_HUNG_DISPLAY_DRIVER_THREAD                                         NTStatus      = 0xC0000415\n\tSTATUS_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE            NTStatus      = 0xC0000416\n\tSTATUS_INVALID_CRUNTIME_PARAMETER                                         NTStatus      = 0xC0000417\n\tSTATUS_NTLM_BLOCKED                                                       NTStatus      = 0xC0000418\n\tSTATUS_DS_SRC_SID_EXISTS_IN_FOREST                                        NTStatus      = 0xC0000419\n\tSTATUS_DS_DOMAIN_NAME_EXISTS_IN_FOREST                                    NTStatus      = 0xC000041A\n\tSTATUS_DS_FLAT_NAME_EXISTS_IN_FOREST                                      NTStatus      = 0xC000041B\n\tSTATUS_INVALID_USER_PRINCIPAL_NAME                                        NTStatus      = 0xC000041C\n\tSTATUS_FATAL_USER_CALLBACK_EXCEPTION                                      NTStatus      = 0xC000041D\n\tSTATUS_ASSERTION_FAILURE                                                  NTStatus      = 0xC0000420\n\tSTATUS_VERIFIER_STOP                                                      NTStatus      = 0xC0000421\n\tSTATUS_CALLBACK_POP_STACK                                                 NTStatus      = 0xC0000423\n\tSTATUS_INCOMPATIBLE_DRIVER_BLOCKED                                        NTStatus      = 0xC0000424\n\tSTATUS_HIVE_UNLOADED                                                      NTStatus      = 0xC0000425\n\tSTATUS_COMPRESSION_DISABLED                                               NTStatus      = 0xC0000426\n\tSTATUS_FILE_SYSTEM_LIMITATION                                             NTStatus      = 0xC0000427\n\tSTATUS_INVALID_IMAGE_HASH                                                 NTStatus      = 0xC0000428\n\tSTATUS_NOT_CAPABLE                                                        NTStatus      = 0xC0000429\n\tSTATUS_REQUEST_OUT_OF_SEQUENCE                                            NTStatus      = 0xC000042A\n\tSTATUS_IMPLEMENTATION_LIMIT                                               NTStatus      = 0xC000042B\n\tSTATUS_ELEVATION_REQUIRED                                                 NTStatus      = 0xC000042C\n\tSTATUS_NO_SECURITY_CONTEXT                                                NTStatus      = 0xC000042D\n\tSTATUS_PKU2U_CERT_FAILURE                                                 NTStatus      = 0xC000042F\n\tSTATUS_BEYOND_VDL                                                         NTStatus      = 0xC0000432\n\tSTATUS_ENCOUNTERED_WRITE_IN_PROGRESS                                      NTStatus      = 0xC0000433\n\tSTATUS_PTE_CHANGED                                                        NTStatus      = 0xC0000434\n\tSTATUS_PURGE_FAILED                                                       NTStatus      = 0xC0000435\n\tSTATUS_CRED_REQUIRES_CONFIRMATION                                         NTStatus      = 0xC0000440\n\tSTATUS_CS_ENCRYPTION_INVALID_SERVER_RESPONSE                              NTStatus      = 0xC0000441\n\tSTATUS_CS_ENCRYPTION_UNSUPPORTED_SERVER                                   NTStatus      = 0xC0000442\n\tSTATUS_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE                              NTStatus      = 0xC0000443\n\tSTATUS_CS_ENCRYPTION_NEW_ENCRYPTED_FILE                                   NTStatus      = 0xC0000444\n\tSTATUS_CS_ENCRYPTION_FILE_NOT_CSE                                         NTStatus      = 0xC0000445\n\tSTATUS_INVALID_LABEL                                                      NTStatus      = 0xC0000446\n\tSTATUS_DRIVER_PROCESS_TERMINATED                                          NTStatus      = 0xC0000450\n\tSTATUS_AMBIGUOUS_SYSTEM_DEVICE                                            NTStatus      = 0xC0000451\n\tSTATUS_SYSTEM_DEVICE_NOT_FOUND                                            NTStatus      = 0xC0000452\n\tSTATUS_RESTART_BOOT_APPLICATION                                           NTStatus      = 0xC0000453\n\tSTATUS_INSUFFICIENT_NVRAM_RESOURCES                                       NTStatus      = 0xC0000454\n\tSTATUS_INVALID_SESSION                                                    NTStatus      = 0xC0000455\n\tSTATUS_THREAD_ALREADY_IN_SESSION                                          NTStatus      = 0xC0000456\n\tSTATUS_THREAD_NOT_IN_SESSION                                              NTStatus      = 0xC0000457\n\tSTATUS_INVALID_WEIGHT                                                     NTStatus      = 0xC0000458\n\tSTATUS_REQUEST_PAUSED                                                     NTStatus      = 0xC0000459\n\tSTATUS_NO_RANGES_PROCESSED                                                NTStatus      = 0xC0000460\n\tSTATUS_DISK_RESOURCES_EXHAUSTED                                           NTStatus      = 0xC0000461\n\tSTATUS_NEEDS_REMEDIATION                                                  NTStatus      = 0xC0000462\n\tSTATUS_DEVICE_FEATURE_NOT_SUPPORTED                                       NTStatus      = 0xC0000463\n\tSTATUS_DEVICE_UNREACHABLE                                                 NTStatus      = 0xC0000464\n\tSTATUS_INVALID_TOKEN                                                      NTStatus      = 0xC0000465\n\tSTATUS_SERVER_UNAVAILABLE                                                 NTStatus      = 0xC0000466\n\tSTATUS_FILE_NOT_AVAILABLE                                                 NTStatus      = 0xC0000467\n\tSTATUS_DEVICE_INSUFFICIENT_RESOURCES                                      NTStatus      = 0xC0000468\n\tSTATUS_PACKAGE_UPDATING                                                   NTStatus      = 0xC0000469\n\tSTATUS_NOT_READ_FROM_COPY                                                 NTStatus      = 0xC000046A\n\tSTATUS_FT_WRITE_FAILURE                                                   NTStatus      = 0xC000046B\n\tSTATUS_FT_DI_SCAN_REQUIRED                                                NTStatus      = 0xC000046C\n\tSTATUS_OBJECT_NOT_EXTERNALLY_BACKED                                       NTStatus      = 0xC000046D\n\tSTATUS_EXTERNAL_BACKING_PROVIDER_UNKNOWN                                  NTStatus      = 0xC000046E\n\tSTATUS_COMPRESSION_NOT_BENEFICIAL                                         NTStatus      = 0xC000046F\n\tSTATUS_DATA_CHECKSUM_ERROR                                                NTStatus      = 0xC0000470\n\tSTATUS_INTERMIXED_KERNEL_EA_OPERATION                                     NTStatus      = 0xC0000471\n\tSTATUS_TRIM_READ_ZERO_NOT_SUPPORTED                                       NTStatus      = 0xC0000472\n\tSTATUS_TOO_MANY_SEGMENT_DESCRIPTORS                                       NTStatus      = 0xC0000473\n\tSTATUS_INVALID_OFFSET_ALIGNMENT                                           NTStatus      = 0xC0000474\n\tSTATUS_INVALID_FIELD_IN_PARAMETER_LIST                                    NTStatus      = 0xC0000475\n\tSTATUS_OPERATION_IN_PROGRESS                                              NTStatus      = 0xC0000476\n\tSTATUS_INVALID_INITIATOR_TARGET_PATH                                      NTStatus      = 0xC0000477\n\tSTATUS_SCRUB_DATA_DISABLED                                                NTStatus      = 0xC0000478\n\tSTATUS_NOT_REDUNDANT_STORAGE                                              NTStatus      = 0xC0000479\n\tSTATUS_RESIDENT_FILE_NOT_SUPPORTED                                        NTStatus      = 0xC000047A\n\tSTATUS_COMPRESSED_FILE_NOT_SUPPORTED                                      NTStatus      = 0xC000047B\n\tSTATUS_DIRECTORY_NOT_SUPPORTED                                            NTStatus      = 0xC000047C\n\tSTATUS_IO_OPERATION_TIMEOUT                                               NTStatus      = 0xC000047D\n\tSTATUS_SYSTEM_NEEDS_REMEDIATION                                           NTStatus      = 0xC000047E\n\tSTATUS_APPX_INTEGRITY_FAILURE_CLR_NGEN                                    NTStatus      = 0xC000047F\n\tSTATUS_SHARE_UNAVAILABLE                                                  NTStatus      = 0xC0000480\n\tSTATUS_APISET_NOT_HOSTED                                                  NTStatus      = 0xC0000481\n\tSTATUS_APISET_NOT_PRESENT                                                 NTStatus      = 0xC0000482\n\tSTATUS_DEVICE_HARDWARE_ERROR                                              NTStatus      = 0xC0000483\n\tSTATUS_FIRMWARE_SLOT_INVALID                                              NTStatus      = 0xC0000484\n\tSTATUS_FIRMWARE_IMAGE_INVALID                                             NTStatus      = 0xC0000485\n\tSTATUS_STORAGE_TOPOLOGY_ID_MISMATCH                                       NTStatus      = 0xC0000486\n\tSTATUS_WIM_NOT_BOOTABLE                                                   NTStatus      = 0xC0000487\n\tSTATUS_BLOCKED_BY_PARENTAL_CONTROLS                                       NTStatus      = 0xC0000488\n\tSTATUS_NEEDS_REGISTRATION                                                 NTStatus      = 0xC0000489\n\tSTATUS_QUOTA_ACTIVITY                                                     NTStatus      = 0xC000048A\n\tSTATUS_CALLBACK_INVOKE_INLINE                                             NTStatus      = 0xC000048B\n\tSTATUS_BLOCK_TOO_MANY_REFERENCES                                          NTStatus      = 0xC000048C\n\tSTATUS_MARKED_TO_DISALLOW_WRITES                                          NTStatus      = 0xC000048D\n\tSTATUS_NETWORK_ACCESS_DENIED_EDP                                          NTStatus      = 0xC000048E\n\tSTATUS_ENCLAVE_FAILURE                                                    NTStatus      = 0xC000048F\n\tSTATUS_PNP_NO_COMPAT_DRIVERS                                              NTStatus      = 0xC0000490\n\tSTATUS_PNP_DRIVER_PACKAGE_NOT_FOUND                                       NTStatus      = 0xC0000491\n\tSTATUS_PNP_DRIVER_CONFIGURATION_NOT_FOUND                                 NTStatus      = 0xC0000492\n\tSTATUS_PNP_DRIVER_CONFIGURATION_INCOMPLETE                                NTStatus      = 0xC0000493\n\tSTATUS_PNP_FUNCTION_DRIVER_REQUIRED                                       NTStatus      = 0xC0000494\n\tSTATUS_PNP_DEVICE_CONFIGURATION_PENDING                                   NTStatus      = 0xC0000495\n\tSTATUS_DEVICE_HINT_NAME_BUFFER_TOO_SMALL                                  NTStatus      = 0xC0000496\n\tSTATUS_PACKAGE_NOT_AVAILABLE                                              NTStatus      = 0xC0000497\n\tSTATUS_DEVICE_IN_MAINTENANCE                                              NTStatus      = 0xC0000499\n\tSTATUS_NOT_SUPPORTED_ON_DAX                                               NTStatus      = 0xC000049A\n\tSTATUS_FREE_SPACE_TOO_FRAGMENTED                                          NTStatus      = 0xC000049B\n\tSTATUS_DAX_MAPPING_EXISTS                                                 NTStatus      = 0xC000049C\n\tSTATUS_CHILD_PROCESS_BLOCKED                                              NTStatus      = 0xC000049D\n\tSTATUS_STORAGE_LOST_DATA_PERSISTENCE                                      NTStatus      = 0xC000049E\n\tSTATUS_VRF_CFG_ENABLED                                                    NTStatus      = 0xC000049F\n\tSTATUS_PARTITION_TERMINATING                                              NTStatus      = 0xC00004A0\n\tSTATUS_EXTERNAL_SYSKEY_NOT_SUPPORTED                                      NTStatus      = 0xC00004A1\n\tSTATUS_ENCLAVE_VIOLATION                                                  NTStatus      = 0xC00004A2\n\tSTATUS_FILE_PROTECTED_UNDER_DPL                                           NTStatus      = 0xC00004A3\n\tSTATUS_VOLUME_NOT_CLUSTER_ALIGNED                                         NTStatus      = 0xC00004A4\n\tSTATUS_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND                             NTStatus      = 0xC00004A5\n\tSTATUS_APPX_FILE_NOT_ENCRYPTED                                            NTStatus      = 0xC00004A6\n\tSTATUS_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED                                 NTStatus      = 0xC00004A7\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET                       NTStatus      = 0xC00004A8\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE                        NTStatus      = 0xC00004A9\n\tSTATUS_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER                        NTStatus      = 0xC00004AA\n\tSTATUS_FT_READ_FAILURE                                                    NTStatus      = 0xC00004AB\n\tSTATUS_PATCH_CONFLICT                                                     NTStatus      = 0xC00004AC\n\tSTATUS_STORAGE_RESERVE_ID_INVALID                                         NTStatus      = 0xC00004AD\n\tSTATUS_STORAGE_RESERVE_DOES_NOT_EXIST                                     NTStatus      = 0xC00004AE\n\tSTATUS_STORAGE_RESERVE_ALREADY_EXISTS                                     NTStatus      = 0xC00004AF\n\tSTATUS_STORAGE_RESERVE_NOT_EMPTY                                          NTStatus      = 0xC00004B0\n\tSTATUS_NOT_A_DAX_VOLUME                                                   NTStatus      = 0xC00004B1\n\tSTATUS_NOT_DAX_MAPPABLE                                                   NTStatus      = 0xC00004B2\n\tSTATUS_CASE_DIFFERING_NAMES_IN_DIR                                        NTStatus      = 0xC00004B3\n\tSTATUS_FILE_NOT_SUPPORTED                                                 NTStatus      = 0xC00004B4\n\tSTATUS_NOT_SUPPORTED_WITH_BTT                                             NTStatus      = 0xC00004B5\n\tSTATUS_ENCRYPTION_DISABLED                                                NTStatus      = 0xC00004B6\n\tSTATUS_ENCRYPTING_METADATA_DISALLOWED                                     NTStatus      = 0xC00004B7\n\tSTATUS_CANT_CLEAR_ENCRYPTION_FLAG                                         NTStatus      = 0xC00004B8\n\tSTATUS_INVALID_TASK_NAME                                                  NTStatus      = 0xC0000500\n\tSTATUS_INVALID_TASK_INDEX                                                 NTStatus      = 0xC0000501\n\tSTATUS_THREAD_ALREADY_IN_TASK                                             NTStatus      = 0xC0000502\n\tSTATUS_CALLBACK_BYPASS                                                    NTStatus      = 0xC0000503\n\tSTATUS_UNDEFINED_SCOPE                                                    NTStatus      = 0xC0000504\n\tSTATUS_INVALID_CAP                                                        NTStatus      = 0xC0000505\n\tSTATUS_NOT_GUI_PROCESS                                                    NTStatus      = 0xC0000506\n\tSTATUS_DEVICE_HUNG                                                        NTStatus      = 0xC0000507\n\tSTATUS_CONTAINER_ASSIGNED                                                 NTStatus      = 0xC0000508\n\tSTATUS_JOB_NO_CONTAINER                                                   NTStatus      = 0xC0000509\n\tSTATUS_DEVICE_UNRESPONSIVE                                                NTStatus      = 0xC000050A\n\tSTATUS_REPARSE_POINT_ENCOUNTERED                                          NTStatus      = 0xC000050B\n\tSTATUS_ATTRIBUTE_NOT_PRESENT                                              NTStatus      = 0xC000050C\n\tSTATUS_NOT_A_TIERED_VOLUME                                                NTStatus      = 0xC000050D\n\tSTATUS_ALREADY_HAS_STREAM_ID                                              NTStatus      = 0xC000050E\n\tSTATUS_JOB_NOT_EMPTY                                                      NTStatus      = 0xC000050F\n\tSTATUS_ALREADY_INITIALIZED                                                NTStatus      = 0xC0000510\n\tSTATUS_ENCLAVE_NOT_TERMINATED                                             NTStatus      = 0xC0000511\n\tSTATUS_ENCLAVE_IS_TERMINATING                                             NTStatus      = 0xC0000512\n\tSTATUS_SMB1_NOT_AVAILABLE                                                 NTStatus      = 0xC0000513\n\tSTATUS_SMR_GARBAGE_COLLECTION_REQUIRED                                    NTStatus      = 0xC0000514\n\tSTATUS_INTERRUPTED                                                        NTStatus      = 0xC0000515\n\tSTATUS_THREAD_NOT_RUNNING                                                 NTStatus      = 0xC0000516\n\tSTATUS_FAIL_FAST_EXCEPTION                                                NTStatus      = 0xC0000602\n\tSTATUS_IMAGE_CERT_REVOKED                                                 NTStatus      = 0xC0000603\n\tSTATUS_DYNAMIC_CODE_BLOCKED                                               NTStatus      = 0xC0000604\n\tSTATUS_IMAGE_CERT_EXPIRED                                                 NTStatus      = 0xC0000605\n\tSTATUS_STRICT_CFG_VIOLATION                                               NTStatus      = 0xC0000606\n\tSTATUS_SET_CONTEXT_DENIED                                                 NTStatus      = 0xC000060A\n\tSTATUS_CROSS_PARTITION_VIOLATION                                          NTStatus      = 0xC000060B\n\tSTATUS_PORT_CLOSED                                                        NTStatus      = 0xC0000700\n\tSTATUS_MESSAGE_LOST                                                       NTStatus      = 0xC0000701\n\tSTATUS_INVALID_MESSAGE                                                    NTStatus      = 0xC0000702\n\tSTATUS_REQUEST_CANCELED                                                   NTStatus      = 0xC0000703\n\tSTATUS_RECURSIVE_DISPATCH                                                 NTStatus      = 0xC0000704\n\tSTATUS_LPC_RECEIVE_BUFFER_EXPECTED                                        NTStatus      = 0xC0000705\n\tSTATUS_LPC_INVALID_CONNECTION_USAGE                                       NTStatus      = 0xC0000706\n\tSTATUS_LPC_REQUESTS_NOT_ALLOWED                                           NTStatus      = 0xC0000707\n\tSTATUS_RESOURCE_IN_USE                                                    NTStatus      = 0xC0000708\n\tSTATUS_HARDWARE_MEMORY_ERROR                                              NTStatus      = 0xC0000709\n\tSTATUS_THREADPOOL_HANDLE_EXCEPTION                                        NTStatus      = 0xC000070A\n\tSTATUS_THREADPOOL_SET_EVENT_ON_COMPLETION_FAILED                          NTStatus      = 0xC000070B\n\tSTATUS_THREADPOOL_RELEASE_SEMAPHORE_ON_COMPLETION_FAILED                  NTStatus      = 0xC000070C\n\tSTATUS_THREADPOOL_RELEASE_MUTEX_ON_COMPLETION_FAILED                      NTStatus      = 0xC000070D\n\tSTATUS_THREADPOOL_FREE_LIBRARY_ON_COMPLETION_FAILED                       NTStatus      = 0xC000070E\n\tSTATUS_THREADPOOL_RELEASED_DURING_OPERATION                               NTStatus      = 0xC000070F\n\tSTATUS_CALLBACK_RETURNED_WHILE_IMPERSONATING                              NTStatus      = 0xC0000710\n\tSTATUS_APC_RETURNED_WHILE_IMPERSONATING                                   NTStatus      = 0xC0000711\n\tSTATUS_PROCESS_IS_PROTECTED                                               NTStatus      = 0xC0000712\n\tSTATUS_MCA_EXCEPTION                                                      NTStatus      = 0xC0000713\n\tSTATUS_CERTIFICATE_MAPPING_NOT_UNIQUE                                     NTStatus      = 0xC0000714\n\tSTATUS_SYMLINK_CLASS_DISABLED                                             NTStatus      = 0xC0000715\n\tSTATUS_INVALID_IDN_NORMALIZATION                                          NTStatus      = 0xC0000716\n\tSTATUS_NO_UNICODE_TRANSLATION                                             NTStatus      = 0xC0000717\n\tSTATUS_ALREADY_REGISTERED                                                 NTStatus      = 0xC0000718\n\tSTATUS_CONTEXT_MISMATCH                                                   NTStatus      = 0xC0000719\n\tSTATUS_PORT_ALREADY_HAS_COMPLETION_LIST                                   NTStatus      = 0xC000071A\n\tSTATUS_CALLBACK_RETURNED_THREAD_PRIORITY                                  NTStatus      = 0xC000071B\n\tSTATUS_INVALID_THREAD                                                     NTStatus      = 0xC000071C\n\tSTATUS_CALLBACK_RETURNED_TRANSACTION                                      NTStatus      = 0xC000071D\n\tSTATUS_CALLBACK_RETURNED_LDR_LOCK                                         NTStatus      = 0xC000071E\n\tSTATUS_CALLBACK_RETURNED_LANG                                             NTStatus      = 0xC000071F\n\tSTATUS_CALLBACK_RETURNED_PRI_BACK                                         NTStatus      = 0xC0000720\n\tSTATUS_CALLBACK_RETURNED_THREAD_AFFINITY                                  NTStatus      = 0xC0000721\n\tSTATUS_LPC_HANDLE_COUNT_EXCEEDED                                          NTStatus      = 0xC0000722\n\tSTATUS_EXECUTABLE_MEMORY_WRITE                                            NTStatus      = 0xC0000723\n\tSTATUS_KERNEL_EXECUTABLE_MEMORY_WRITE                                     NTStatus      = 0xC0000724\n\tSTATUS_ATTACHED_EXECUTABLE_MEMORY_WRITE                                   NTStatus      = 0xC0000725\n\tSTATUS_TRIGGERED_EXECUTABLE_MEMORY_WRITE                                  NTStatus      = 0xC0000726\n\tSTATUS_DISK_REPAIR_DISABLED                                               NTStatus      = 0xC0000800\n\tSTATUS_DS_DOMAIN_RENAME_IN_PROGRESS                                       NTStatus      = 0xC0000801\n\tSTATUS_DISK_QUOTA_EXCEEDED                                                NTStatus      = 0xC0000802\n\tSTATUS_DATA_LOST_REPAIR                                                   NTStatus      = 0x80000803\n\tSTATUS_CONTENT_BLOCKED                                                    NTStatus      = 0xC0000804\n\tSTATUS_BAD_CLUSTERS                                                       NTStatus      = 0xC0000805\n\tSTATUS_VOLUME_DIRTY                                                       NTStatus      = 0xC0000806\n\tSTATUS_DISK_REPAIR_REDIRECTED                                             NTStatus      = 0x40000807\n\tSTATUS_DISK_REPAIR_UNSUCCESSFUL                                           NTStatus      = 0xC0000808\n\tSTATUS_CORRUPT_LOG_OVERFULL                                               NTStatus      = 0xC0000809\n\tSTATUS_CORRUPT_LOG_CORRUPTED                                              NTStatus      = 0xC000080A\n\tSTATUS_CORRUPT_LOG_UNAVAILABLE                                            NTStatus      = 0xC000080B\n\tSTATUS_CORRUPT_LOG_DELETED_FULL                                           NTStatus      = 0xC000080C\n\tSTATUS_CORRUPT_LOG_CLEARED                                                NTStatus      = 0xC000080D\n\tSTATUS_ORPHAN_NAME_EXHAUSTED                                              NTStatus      = 0xC000080E\n\tSTATUS_PROACTIVE_SCAN_IN_PROGRESS                                         NTStatus      = 0xC000080F\n\tSTATUS_ENCRYPTED_IO_NOT_POSSIBLE                                          NTStatus      = 0xC0000810\n\tSTATUS_CORRUPT_LOG_UPLEVEL_RECORDS                                        NTStatus      = 0xC0000811\n\tSTATUS_FILE_CHECKED_OUT                                                   NTStatus      = 0xC0000901\n\tSTATUS_CHECKOUT_REQUIRED                                                  NTStatus      = 0xC0000902\n\tSTATUS_BAD_FILE_TYPE                                                      NTStatus      = 0xC0000903\n\tSTATUS_FILE_TOO_LARGE                                                     NTStatus      = 0xC0000904\n\tSTATUS_FORMS_AUTH_REQUIRED                                                NTStatus      = 0xC0000905\n\tSTATUS_VIRUS_INFECTED                                                     NTStatus      = 0xC0000906\n\tSTATUS_VIRUS_DELETED                                                      NTStatus      = 0xC0000907\n\tSTATUS_BAD_MCFG_TABLE                                                     NTStatus      = 0xC0000908\n\tSTATUS_CANNOT_BREAK_OPLOCK                                                NTStatus      = 0xC0000909\n\tSTATUS_BAD_KEY                                                            NTStatus      = 0xC000090A\n\tSTATUS_BAD_DATA                                                           NTStatus      = 0xC000090B\n\tSTATUS_NO_KEY                                                             NTStatus      = 0xC000090C\n\tSTATUS_FILE_HANDLE_REVOKED                                                NTStatus      = 0xC0000910\n\tSTATUS_WOW_ASSERTION                                                      NTStatus      = 0xC0009898\n\tSTATUS_INVALID_SIGNATURE                                                  NTStatus      = 0xC000A000\n\tSTATUS_HMAC_NOT_SUPPORTED                                                 NTStatus      = 0xC000A001\n\tSTATUS_AUTH_TAG_MISMATCH                                                  NTStatus      = 0xC000A002\n\tSTATUS_INVALID_STATE_TRANSITION                                           NTStatus      = 0xC000A003\n\tSTATUS_INVALID_KERNEL_INFO_VERSION                                        NTStatus      = 0xC000A004\n\tSTATUS_INVALID_PEP_INFO_VERSION                                           NTStatus      = 0xC000A005\n\tSTATUS_HANDLE_REVOKED                                                     NTStatus      = 0xC000A006\n\tSTATUS_EOF_ON_GHOSTED_RANGE                                               NTStatus      = 0xC000A007\n\tSTATUS_IPSEC_QUEUE_OVERFLOW                                               NTStatus      = 0xC000A010\n\tSTATUS_ND_QUEUE_OVERFLOW                                                  NTStatus      = 0xC000A011\n\tSTATUS_HOPLIMIT_EXCEEDED                                                  NTStatus      = 0xC000A012\n\tSTATUS_PROTOCOL_NOT_SUPPORTED                                             NTStatus      = 0xC000A013\n\tSTATUS_FASTPATH_REJECTED                                                  NTStatus      = 0xC000A014\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED                         NTStatus      = 0xC000A080\n\tSTATUS_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR                         NTStatus      = 0xC000A081\n\tSTATUS_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR                             NTStatus      = 0xC000A082\n\tSTATUS_XML_PARSE_ERROR                                                    NTStatus      = 0xC000A083\n\tSTATUS_XMLDSIG_ERROR                                                      NTStatus      = 0xC000A084\n\tSTATUS_WRONG_COMPARTMENT                                                  NTStatus      = 0xC000A085\n\tSTATUS_AUTHIP_FAILURE                                                     NTStatus      = 0xC000A086\n\tSTATUS_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS                              NTStatus      = 0xC000A087\n\tSTATUS_DS_OID_NOT_FOUND                                                   NTStatus      = 0xC000A088\n\tSTATUS_INCORRECT_ACCOUNT_TYPE                                             NTStatus      = 0xC000A089\n\tSTATUS_HASH_NOT_SUPPORTED                                                 NTStatus      = 0xC000A100\n\tSTATUS_HASH_NOT_PRESENT                                                   NTStatus      = 0xC000A101\n\tSTATUS_SECONDARY_IC_PROVIDER_NOT_REGISTERED                               NTStatus      = 0xC000A121\n\tSTATUS_GPIO_CLIENT_INFORMATION_INVALID                                    NTStatus      = 0xC000A122\n\tSTATUS_GPIO_VERSION_NOT_SUPPORTED                                         NTStatus      = 0xC000A123\n\tSTATUS_GPIO_INVALID_REGISTRATION_PACKET                                   NTStatus      = 0xC000A124\n\tSTATUS_GPIO_OPERATION_DENIED                                              NTStatus      = 0xC000A125\n\tSTATUS_GPIO_INCOMPATIBLE_CONNECT_MODE                                     NTStatus      = 0xC000A126\n\tSTATUS_GPIO_INTERRUPT_ALREADY_UNMASKED                                    NTStatus      = 0x8000A127\n\tSTATUS_CANNOT_SWITCH_RUNLEVEL                                             NTStatus      = 0xC000A141\n\tSTATUS_INVALID_RUNLEVEL_SETTING                                           NTStatus      = 0xC000A142\n\tSTATUS_RUNLEVEL_SWITCH_TIMEOUT                                            NTStatus      = 0xC000A143\n\tSTATUS_SERVICES_FAILED_AUTOSTART                                          NTStatus      = 0x4000A144\n\tSTATUS_RUNLEVEL_SWITCH_AGENT_TIMEOUT                                      NTStatus      = 0xC000A145\n\tSTATUS_RUNLEVEL_SWITCH_IN_PROGRESS                                        NTStatus      = 0xC000A146\n\tSTATUS_NOT_APPCONTAINER                                                   NTStatus      = 0xC000A200\n\tSTATUS_NOT_SUPPORTED_IN_APPCONTAINER                                      NTStatus      = 0xC000A201\n\tSTATUS_INVALID_PACKAGE_SID_LENGTH                                         NTStatus      = 0xC000A202\n\tSTATUS_LPAC_ACCESS_DENIED                                                 NTStatus      = 0xC000A203\n\tSTATUS_ADMINLESS_ACCESS_DENIED                                            NTStatus      = 0xC000A204\n\tSTATUS_APP_DATA_NOT_FOUND                                                 NTStatus      = 0xC000A281\n\tSTATUS_APP_DATA_EXPIRED                                                   NTStatus      = 0xC000A282\n\tSTATUS_APP_DATA_CORRUPT                                                   NTStatus      = 0xC000A283\n\tSTATUS_APP_DATA_LIMIT_EXCEEDED                                            NTStatus      = 0xC000A284\n\tSTATUS_APP_DATA_REBOOT_REQUIRED                                           NTStatus      = 0xC000A285\n\tSTATUS_OFFLOAD_READ_FLT_NOT_SUPPORTED                                     NTStatus      = 0xC000A2A1\n\tSTATUS_OFFLOAD_WRITE_FLT_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A2\n\tSTATUS_OFFLOAD_READ_FILE_NOT_SUPPORTED                                    NTStatus      = 0xC000A2A3\n\tSTATUS_OFFLOAD_WRITE_FILE_NOT_SUPPORTED                                   NTStatus      = 0xC000A2A4\n\tSTATUS_WOF_WIM_HEADER_CORRUPT                                             NTStatus      = 0xC000A2A5\n\tSTATUS_WOF_WIM_RESOURCE_TABLE_CORRUPT                                     NTStatus      = 0xC000A2A6\n\tSTATUS_WOF_FILE_RESOURCE_TABLE_CORRUPT                                    NTStatus      = 0xC000A2A7\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE                             NTStatus      = 0xC000CE01\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT                        NTStatus      = 0xC000CE02\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_BUSY                                    NTStatus      = 0xC000CE03\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN                        NTStatus      = 0xC000CE04\n\tSTATUS_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION                       NTStatus      = 0xC000CE05\n\tSTATUS_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT                              NTStatus      = 0xC000CF00\n\tSTATUS_CLOUD_FILE_PROVIDER_NOT_RUNNING                                    NTStatus      = 0xC000CF01\n\tSTATUS_CLOUD_FILE_METADATA_CORRUPT                                        NTStatus      = 0xC000CF02\n\tSTATUS_CLOUD_FILE_METADATA_TOO_LARGE                                      NTStatus      = 0xC000CF03\n\tSTATUS_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE                                 NTStatus      = 0x8000CF04\n\tSTATUS_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS                                 NTStatus      = 0x8000CF05\n\tSTATUS_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED                          NTStatus      = 0xC000CF06\n\tSTATUS_NOT_A_CLOUD_FILE                                                   NTStatus      = 0xC000CF07\n\tSTATUS_CLOUD_FILE_NOT_IN_SYNC                                             NTStatus      = 0xC000CF08\n\tSTATUS_CLOUD_FILE_ALREADY_CONNECTED                                       NTStatus      = 0xC000CF09\n\tSTATUS_CLOUD_FILE_NOT_SUPPORTED                                           NTStatus      = 0xC000CF0A\n\tSTATUS_CLOUD_FILE_INVALID_REQUEST                                         NTStatus      = 0xC000CF0B\n\tSTATUS_CLOUD_FILE_READ_ONLY_VOLUME                                        NTStatus      = 0xC000CF0C\n\tSTATUS_CLOUD_FILE_CONNECTED_PROVIDER_ONLY                                 NTStatus      = 0xC000CF0D\n\tSTATUS_CLOUD_FILE_VALIDATION_FAILED                                       NTStatus      = 0xC000CF0E\n\tSTATUS_CLOUD_FILE_AUTHENTICATION_FAILED                                   NTStatus      = 0xC000CF0F\n\tSTATUS_CLOUD_FILE_INSUFFICIENT_RESOURCES                                  NTStatus      = 0xC000CF10\n\tSTATUS_CLOUD_FILE_NETWORK_UNAVAILABLE                                     NTStatus      = 0xC000CF11\n\tSTATUS_CLOUD_FILE_UNSUCCESSFUL                                            NTStatus      = 0xC000CF12\n\tSTATUS_CLOUD_FILE_NOT_UNDER_SYNC_ROOT                                     NTStatus      = 0xC000CF13\n\tSTATUS_CLOUD_FILE_IN_USE                                                  NTStatus      = 0xC000CF14\n\tSTATUS_CLOUD_FILE_PINNED                                                  NTStatus      = 0xC000CF15\n\tSTATUS_CLOUD_FILE_REQUEST_ABORTED                                         NTStatus      = 0xC000CF16\n\tSTATUS_CLOUD_FILE_PROPERTY_CORRUPT                                        NTStatus      = 0xC000CF17\n\tSTATUS_CLOUD_FILE_ACCESS_DENIED                                           NTStatus      = 0xC000CF18\n\tSTATUS_CLOUD_FILE_INCOMPATIBLE_HARDLINKS                                  NTStatus      = 0xC000CF19\n\tSTATUS_CLOUD_FILE_PROPERTY_LOCK_CONFLICT                                  NTStatus      = 0xC000CF1A\n\tSTATUS_CLOUD_FILE_REQUEST_CANCELED                                        NTStatus      = 0xC000CF1B\n\tSTATUS_CLOUD_FILE_PROVIDER_TERMINATED                                     NTStatus      = 0xC000CF1D\n\tSTATUS_NOT_A_CLOUD_SYNC_ROOT                                              NTStatus      = 0xC000CF1E\n\tSTATUS_CLOUD_FILE_REQUEST_TIMEOUT                                         NTStatus      = 0xC000CF1F\n\tSTATUS_ACPI_INVALID_OPCODE                                                NTStatus      = 0xC0140001\n\tSTATUS_ACPI_STACK_OVERFLOW                                                NTStatus      = 0xC0140002\n\tSTATUS_ACPI_ASSERT_FAILED                                                 NTStatus      = 0xC0140003\n\tSTATUS_ACPI_INVALID_INDEX                                                 NTStatus      = 0xC0140004\n\tSTATUS_ACPI_INVALID_ARGUMENT                                              NTStatus      = 0xC0140005\n\tSTATUS_ACPI_FATAL                                                         NTStatus      = 0xC0140006\n\tSTATUS_ACPI_INVALID_SUPERNAME                                             NTStatus      = 0xC0140007\n\tSTATUS_ACPI_INVALID_ARGTYPE                                               NTStatus      = 0xC0140008\n\tSTATUS_ACPI_INVALID_OBJTYPE                                               NTStatus      = 0xC0140009\n\tSTATUS_ACPI_INVALID_TARGETTYPE                                            NTStatus      = 0xC014000A\n\tSTATUS_ACPI_INCORRECT_ARGUMENT_COUNT                                      NTStatus      = 0xC014000B\n\tSTATUS_ACPI_ADDRESS_NOT_MAPPED                                            NTStatus      = 0xC014000C\n\tSTATUS_ACPI_INVALID_EVENTTYPE                                             NTStatus      = 0xC014000D\n\tSTATUS_ACPI_HANDLER_COLLISION                                             NTStatus      = 0xC014000E\n\tSTATUS_ACPI_INVALID_DATA                                                  NTStatus      = 0xC014000F\n\tSTATUS_ACPI_INVALID_REGION                                                NTStatus      = 0xC0140010\n\tSTATUS_ACPI_INVALID_ACCESS_SIZE                                           NTStatus      = 0xC0140011\n\tSTATUS_ACPI_ACQUIRE_GLOBAL_LOCK                                           NTStatus      = 0xC0140012\n\tSTATUS_ACPI_ALREADY_INITIALIZED                                           NTStatus      = 0xC0140013\n\tSTATUS_ACPI_NOT_INITIALIZED                                               NTStatus      = 0xC0140014\n\tSTATUS_ACPI_INVALID_MUTEX_LEVEL                                           NTStatus      = 0xC0140015\n\tSTATUS_ACPI_MUTEX_NOT_OWNED                                               NTStatus      = 0xC0140016\n\tSTATUS_ACPI_MUTEX_NOT_OWNER                                               NTStatus      = 0xC0140017\n\tSTATUS_ACPI_RS_ACCESS                                                     NTStatus      = 0xC0140018\n\tSTATUS_ACPI_INVALID_TABLE                                                 NTStatus      = 0xC0140019\n\tSTATUS_ACPI_REG_HANDLER_FAILED                                            NTStatus      = 0xC0140020\n\tSTATUS_ACPI_POWER_REQUEST_FAILED                                          NTStatus      = 0xC0140021\n\tSTATUS_CTX_WINSTATION_NAME_INVALID                                        NTStatus      = 0xC00A0001\n\tSTATUS_CTX_INVALID_PD                                                     NTStatus      = 0xC00A0002\n\tSTATUS_CTX_PD_NOT_FOUND                                                   NTStatus      = 0xC00A0003\n\tSTATUS_CTX_CDM_CONNECT                                                    NTStatus      = 0x400A0004\n\tSTATUS_CTX_CDM_DISCONNECT                                                 NTStatus      = 0x400A0005\n\tSTATUS_CTX_CLOSE_PENDING                                                  NTStatus      = 0xC00A0006\n\tSTATUS_CTX_NO_OUTBUF                                                      NTStatus      = 0xC00A0007\n\tSTATUS_CTX_MODEM_INF_NOT_FOUND                                            NTStatus      = 0xC00A0008\n\tSTATUS_CTX_INVALID_MODEMNAME                                              NTStatus      = 0xC00A0009\n\tSTATUS_CTX_RESPONSE_ERROR                                                 NTStatus      = 0xC00A000A\n\tSTATUS_CTX_MODEM_RESPONSE_TIMEOUT                                         NTStatus      = 0xC00A000B\n\tSTATUS_CTX_MODEM_RESPONSE_NO_CARRIER                                      NTStatus      = 0xC00A000C\n\tSTATUS_CTX_MODEM_RESPONSE_NO_DIALTONE                                     NTStatus      = 0xC00A000D\n\tSTATUS_CTX_MODEM_RESPONSE_BUSY                                            NTStatus      = 0xC00A000E\n\tSTATUS_CTX_MODEM_RESPONSE_VOICE                                           NTStatus      = 0xC00A000F\n\tSTATUS_CTX_TD_ERROR                                                       NTStatus      = 0xC00A0010\n\tSTATUS_CTX_LICENSE_CLIENT_INVALID                                         NTStatus      = 0xC00A0012\n\tSTATUS_CTX_LICENSE_NOT_AVAILABLE                                          NTStatus      = 0xC00A0013\n\tSTATUS_CTX_LICENSE_EXPIRED                                                NTStatus      = 0xC00A0014\n\tSTATUS_CTX_WINSTATION_NOT_FOUND                                           NTStatus      = 0xC00A0015\n\tSTATUS_CTX_WINSTATION_NAME_COLLISION                                      NTStatus      = 0xC00A0016\n\tSTATUS_CTX_WINSTATION_BUSY                                                NTStatus      = 0xC00A0017\n\tSTATUS_CTX_BAD_VIDEO_MODE                                                 NTStatus      = 0xC00A0018\n\tSTATUS_CTX_GRAPHICS_INVALID                                               NTStatus      = 0xC00A0022\n\tSTATUS_CTX_NOT_CONSOLE                                                    NTStatus      = 0xC00A0024\n\tSTATUS_CTX_CLIENT_QUERY_TIMEOUT                                           NTStatus      = 0xC00A0026\n\tSTATUS_CTX_CONSOLE_DISCONNECT                                             NTStatus      = 0xC00A0027\n\tSTATUS_CTX_CONSOLE_CONNECT                                                NTStatus      = 0xC00A0028\n\tSTATUS_CTX_SHADOW_DENIED                                                  NTStatus      = 0xC00A002A\n\tSTATUS_CTX_WINSTATION_ACCESS_DENIED                                       NTStatus      = 0xC00A002B\n\tSTATUS_CTX_INVALID_WD                                                     NTStatus      = 0xC00A002E\n\tSTATUS_CTX_WD_NOT_FOUND                                                   NTStatus      = 0xC00A002F\n\tSTATUS_CTX_SHADOW_INVALID                                                 NTStatus      = 0xC00A0030\n\tSTATUS_CTX_SHADOW_DISABLED                                                NTStatus      = 0xC00A0031\n\tSTATUS_RDP_PROTOCOL_ERROR                                                 NTStatus      = 0xC00A0032\n\tSTATUS_CTX_CLIENT_LICENSE_NOT_SET                                         NTStatus      = 0xC00A0033\n\tSTATUS_CTX_CLIENT_LICENSE_IN_USE                                          NTStatus      = 0xC00A0034\n\tSTATUS_CTX_SHADOW_ENDED_BY_MODE_CHANGE                                    NTStatus      = 0xC00A0035\n\tSTATUS_CTX_SHADOW_NOT_RUNNING                                             NTStatus      = 0xC00A0036\n\tSTATUS_CTX_LOGON_DISABLED                                                 NTStatus      = 0xC00A0037\n\tSTATUS_CTX_SECURITY_LAYER_ERROR                                           NTStatus      = 0xC00A0038\n\tSTATUS_TS_INCOMPATIBLE_SESSIONS                                           NTStatus      = 0xC00A0039\n\tSTATUS_TS_VIDEO_SUBSYSTEM_ERROR                                           NTStatus      = 0xC00A003A\n\tSTATUS_PNP_BAD_MPS_TABLE                                                  NTStatus      = 0xC0040035\n\tSTATUS_PNP_TRANSLATION_FAILED                                             NTStatus      = 0xC0040036\n\tSTATUS_PNP_IRQ_TRANSLATION_FAILED                                         NTStatus      = 0xC0040037\n\tSTATUS_PNP_INVALID_ID                                                     NTStatus      = 0xC0040038\n\tSTATUS_IO_REISSUE_AS_CACHED                                               NTStatus      = 0xC0040039\n\tSTATUS_MUI_FILE_NOT_FOUND                                                 NTStatus      = 0xC00B0001\n\tSTATUS_MUI_INVALID_FILE                                                   NTStatus      = 0xC00B0002\n\tSTATUS_MUI_INVALID_RC_CONFIG                                              NTStatus      = 0xC00B0003\n\tSTATUS_MUI_INVALID_LOCALE_NAME                                            NTStatus      = 0xC00B0004\n\tSTATUS_MUI_INVALID_ULTIMATEFALLBACK_NAME                                  NTStatus      = 0xC00B0005\n\tSTATUS_MUI_FILE_NOT_LOADED                                                NTStatus      = 0xC00B0006\n\tSTATUS_RESOURCE_ENUM_USER_STOP                                            NTStatus      = 0xC00B0007\n\tSTATUS_FLT_NO_HANDLER_DEFINED                                             NTStatus      = 0xC01C0001\n\tSTATUS_FLT_CONTEXT_ALREADY_DEFINED                                        NTStatus      = 0xC01C0002\n\tSTATUS_FLT_INVALID_ASYNCHRONOUS_REQUEST                                   NTStatus      = 0xC01C0003\n\tSTATUS_FLT_DISALLOW_FAST_IO                                               NTStatus      = 0xC01C0004\n\tSTATUS_FLT_INVALID_NAME_REQUEST                                           NTStatus      = 0xC01C0005\n\tSTATUS_FLT_NOT_SAFE_TO_POST_OPERATION                                     NTStatus      = 0xC01C0006\n\tSTATUS_FLT_NOT_INITIALIZED                                                NTStatus      = 0xC01C0007\n\tSTATUS_FLT_FILTER_NOT_READY                                               NTStatus      = 0xC01C0008\n\tSTATUS_FLT_POST_OPERATION_CLEANUP                                         NTStatus      = 0xC01C0009\n\tSTATUS_FLT_INTERNAL_ERROR                                                 NTStatus      = 0xC01C000A\n\tSTATUS_FLT_DELETING_OBJECT                                                NTStatus      = 0xC01C000B\n\tSTATUS_FLT_MUST_BE_NONPAGED_POOL                                          NTStatus      = 0xC01C000C\n\tSTATUS_FLT_DUPLICATE_ENTRY                                                NTStatus      = 0xC01C000D\n\tSTATUS_FLT_CBDQ_DISABLED                                                  NTStatus      = 0xC01C000E\n\tSTATUS_FLT_DO_NOT_ATTACH                                                  NTStatus      = 0xC01C000F\n\tSTATUS_FLT_DO_NOT_DETACH                                                  NTStatus      = 0xC01C0010\n\tSTATUS_FLT_INSTANCE_ALTITUDE_COLLISION                                    NTStatus      = 0xC01C0011\n\tSTATUS_FLT_INSTANCE_NAME_COLLISION                                        NTStatus      = 0xC01C0012\n\tSTATUS_FLT_FILTER_NOT_FOUND                                               NTStatus      = 0xC01C0013\n\tSTATUS_FLT_VOLUME_NOT_FOUND                                               NTStatus      = 0xC01C0014\n\tSTATUS_FLT_INSTANCE_NOT_FOUND                                             NTStatus      = 0xC01C0015\n\tSTATUS_FLT_CONTEXT_ALLOCATION_NOT_FOUND                                   NTStatus      = 0xC01C0016\n\tSTATUS_FLT_INVALID_CONTEXT_REGISTRATION                                   NTStatus      = 0xC01C0017\n\tSTATUS_FLT_NAME_CACHE_MISS                                                NTStatus      = 0xC01C0018\n\tSTATUS_FLT_NO_DEVICE_OBJECT                                               NTStatus      = 0xC01C0019\n\tSTATUS_FLT_VOLUME_ALREADY_MOUNTED                                         NTStatus      = 0xC01C001A\n\tSTATUS_FLT_ALREADY_ENLISTED                                               NTStatus      = 0xC01C001B\n\tSTATUS_FLT_CONTEXT_ALREADY_LINKED                                         NTStatus      = 0xC01C001C\n\tSTATUS_FLT_NO_WAITER_FOR_REPLY                                            NTStatus      = 0xC01C0020\n\tSTATUS_FLT_REGISTRATION_BUSY                                              NTStatus      = 0xC01C0023\n\tSTATUS_SXS_SECTION_NOT_FOUND                                              NTStatus      = 0xC0150001\n\tSTATUS_SXS_CANT_GEN_ACTCTX                                                NTStatus      = 0xC0150002\n\tSTATUS_SXS_INVALID_ACTCTXDATA_FORMAT                                      NTStatus      = 0xC0150003\n\tSTATUS_SXS_ASSEMBLY_NOT_FOUND                                             NTStatus      = 0xC0150004\n\tSTATUS_SXS_MANIFEST_FORMAT_ERROR                                          NTStatus      = 0xC0150005\n\tSTATUS_SXS_MANIFEST_PARSE_ERROR                                           NTStatus      = 0xC0150006\n\tSTATUS_SXS_ACTIVATION_CONTEXT_DISABLED                                    NTStatus      = 0xC0150007\n\tSTATUS_SXS_KEY_NOT_FOUND                                                  NTStatus      = 0xC0150008\n\tSTATUS_SXS_VERSION_CONFLICT                                               NTStatus      = 0xC0150009\n\tSTATUS_SXS_WRONG_SECTION_TYPE                                             NTStatus      = 0xC015000A\n\tSTATUS_SXS_THREAD_QUERIES_DISABLED                                        NTStatus      = 0xC015000B\n\tSTATUS_SXS_ASSEMBLY_MISSING                                               NTStatus      = 0xC015000C\n\tSTATUS_SXS_RELEASE_ACTIVATION_CONTEXT                                     NTStatus      = 0x4015000D\n\tSTATUS_SXS_PROCESS_DEFAULT_ALREADY_SET                                    NTStatus      = 0xC015000E\n\tSTATUS_SXS_EARLY_DEACTIVATION                                             NTStatus      = 0xC015000F\n\tSTATUS_SXS_INVALID_DEACTIVATION                                           NTStatus      = 0xC0150010\n\tSTATUS_SXS_MULTIPLE_DEACTIVATION                                          NTStatus      = 0xC0150011\n\tSTATUS_SXS_SYSTEM_DEFAULT_ACTIVATION_CONTEXT_EMPTY                        NTStatus      = 0xC0150012\n\tSTATUS_SXS_PROCESS_TERMINATION_REQUESTED                                  NTStatus      = 0xC0150013\n\tSTATUS_SXS_CORRUPT_ACTIVATION_STACK                                       NTStatus      = 0xC0150014\n\tSTATUS_SXS_CORRUPTION                                                     NTStatus      = 0xC0150015\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_VALUE                               NTStatus      = 0xC0150016\n\tSTATUS_SXS_INVALID_IDENTITY_ATTRIBUTE_NAME                                NTStatus      = 0xC0150017\n\tSTATUS_SXS_IDENTITY_DUPLICATE_ATTRIBUTE                                   NTStatus      = 0xC0150018\n\tSTATUS_SXS_IDENTITY_PARSE_ERROR                                           NTStatus      = 0xC0150019\n\tSTATUS_SXS_COMPONENT_STORE_CORRUPT                                        NTStatus      = 0xC015001A\n\tSTATUS_SXS_FILE_HASH_MISMATCH                                             NTStatus      = 0xC015001B\n\tSTATUS_SXS_MANIFEST_IDENTITY_SAME_BUT_CONTENTS_DIFFERENT                  NTStatus      = 0xC015001C\n\tSTATUS_SXS_IDENTITIES_DIFFERENT                                           NTStatus      = 0xC015001D\n\tSTATUS_SXS_ASSEMBLY_IS_NOT_A_DEPLOYMENT                                   NTStatus      = 0xC015001E\n\tSTATUS_SXS_FILE_NOT_PART_OF_ASSEMBLY                                      NTStatus      = 0xC015001F\n\tSTATUS_ADVANCED_INSTALLER_FAILED                                          NTStatus      = 0xC0150020\n\tSTATUS_XML_ENCODING_MISMATCH                                              NTStatus      = 0xC0150021\n\tSTATUS_SXS_MANIFEST_TOO_BIG                                               NTStatus      = 0xC0150022\n\tSTATUS_SXS_SETTING_NOT_REGISTERED                                         NTStatus      = 0xC0150023\n\tSTATUS_SXS_TRANSACTION_CLOSURE_INCOMPLETE                                 NTStatus      = 0xC0150024\n\tSTATUS_SMI_PRIMITIVE_INSTALLER_FAILED                                     NTStatus      = 0xC0150025\n\tSTATUS_GENERIC_COMMAND_FAILED                                             NTStatus      = 0xC0150026\n\tSTATUS_SXS_FILE_HASH_MISSING                                              NTStatus      = 0xC0150027\n\tSTATUS_CLUSTER_INVALID_NODE                                               NTStatus      = 0xC0130001\n\tSTATUS_CLUSTER_NODE_EXISTS                                                NTStatus      = 0xC0130002\n\tSTATUS_CLUSTER_JOIN_IN_PROGRESS                                           NTStatus      = 0xC0130003\n\tSTATUS_CLUSTER_NODE_NOT_FOUND                                             NTStatus      = 0xC0130004\n\tSTATUS_CLUSTER_LOCAL_NODE_NOT_FOUND                                       NTStatus      = 0xC0130005\n\tSTATUS_CLUSTER_NETWORK_EXISTS                                             NTStatus      = 0xC0130006\n\tSTATUS_CLUSTER_NETWORK_NOT_FOUND                                          NTStatus      = 0xC0130007\n\tSTATUS_CLUSTER_NETINTERFACE_EXISTS                                        NTStatus      = 0xC0130008\n\tSTATUS_CLUSTER_NETINTERFACE_NOT_FOUND                                     NTStatus      = 0xC0130009\n\tSTATUS_CLUSTER_INVALID_REQUEST                                            NTStatus      = 0xC013000A\n\tSTATUS_CLUSTER_INVALID_NETWORK_PROVIDER                                   NTStatus      = 0xC013000B\n\tSTATUS_CLUSTER_NODE_DOWN                                                  NTStatus      = 0xC013000C\n\tSTATUS_CLUSTER_NODE_UNREACHABLE                                           NTStatus      = 0xC013000D\n\tSTATUS_CLUSTER_NODE_NOT_MEMBER                                            NTStatus      = 0xC013000E\n\tSTATUS_CLUSTER_JOIN_NOT_IN_PROGRESS                                       NTStatus      = 0xC013000F\n\tSTATUS_CLUSTER_INVALID_NETWORK                                            NTStatus      = 0xC0130010\n\tSTATUS_CLUSTER_NO_NET_ADAPTERS                                            NTStatus      = 0xC0130011\n\tSTATUS_CLUSTER_NODE_UP                                                    NTStatus      = 0xC0130012\n\tSTATUS_CLUSTER_NODE_PAUSED                                                NTStatus      = 0xC0130013\n\tSTATUS_CLUSTER_NODE_NOT_PAUSED                                            NTStatus      = 0xC0130014\n\tSTATUS_CLUSTER_NO_SECURITY_CONTEXT                                        NTStatus      = 0xC0130015\n\tSTATUS_CLUSTER_NETWORK_NOT_INTERNAL                                       NTStatus      = 0xC0130016\n\tSTATUS_CLUSTER_POISONED                                                   NTStatus      = 0xC0130017\n\tSTATUS_CLUSTER_NON_CSV_PATH                                               NTStatus      = 0xC0130018\n\tSTATUS_CLUSTER_CSV_VOLUME_NOT_LOCAL                                       NTStatus      = 0xC0130019\n\tSTATUS_CLUSTER_CSV_READ_OPLOCK_BREAK_IN_PROGRESS                          NTStatus      = 0xC0130020\n\tSTATUS_CLUSTER_CSV_AUTO_PAUSE_ERROR                                       NTStatus      = 0xC0130021\n\tSTATUS_CLUSTER_CSV_REDIRECTED                                             NTStatus      = 0xC0130022\n\tSTATUS_CLUSTER_CSV_NOT_REDIRECTED                                         NTStatus      = 0xC0130023\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING                                        NTStatus      = 0xC0130024\n\tSTATUS_CLUSTER_CSV_SNAPSHOT_CREATION_IN_PROGRESS                          NTStatus      = 0xC0130025\n\tSTATUS_CLUSTER_CSV_VOLUME_DRAINING_SUCCEEDED_DOWNLEVEL                    NTStatus      = 0xC0130026\n\tSTATUS_CLUSTER_CSV_NO_SNAPSHOTS                                           NTStatus      = 0xC0130027\n\tSTATUS_CSV_IO_PAUSE_TIMEOUT                                               NTStatus      = 0xC0130028\n\tSTATUS_CLUSTER_CSV_INVALID_HANDLE                                         NTStatus      = 0xC0130029\n\tSTATUS_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR                          NTStatus      = 0xC0130030\n\tSTATUS_CLUSTER_CAM_TICKET_REPLAY_DETECTED                                 NTStatus      = 0xC0130031\n\tSTATUS_TRANSACTIONAL_CONFLICT                                             NTStatus      = 0xC0190001\n\tSTATUS_INVALID_TRANSACTION                                                NTStatus      = 0xC0190002\n\tSTATUS_TRANSACTION_NOT_ACTIVE                                             NTStatus      = 0xC0190003\n\tSTATUS_TM_INITIALIZATION_FAILED                                           NTStatus      = 0xC0190004\n\tSTATUS_RM_NOT_ACTIVE                                                      NTStatus      = 0xC0190005\n\tSTATUS_RM_METADATA_CORRUPT                                                NTStatus      = 0xC0190006\n\tSTATUS_TRANSACTION_NOT_JOINED                                             NTStatus      = 0xC0190007\n\tSTATUS_DIRECTORY_NOT_RM                                                   NTStatus      = 0xC0190008\n\tSTATUS_COULD_NOT_RESIZE_LOG                                               NTStatus      = 0x80190009\n\tSTATUS_TRANSACTIONS_UNSUPPORTED_REMOTE                                    NTStatus      = 0xC019000A\n\tSTATUS_LOG_RESIZE_INVALID_SIZE                                            NTStatus      = 0xC019000B\n\tSTATUS_REMOTE_FILE_VERSION_MISMATCH                                       NTStatus      = 0xC019000C\n\tSTATUS_CRM_PROTOCOL_ALREADY_EXISTS                                        NTStatus      = 0xC019000F\n\tSTATUS_TRANSACTION_PROPAGATION_FAILED                                     NTStatus      = 0xC0190010\n\tSTATUS_CRM_PROTOCOL_NOT_FOUND                                             NTStatus      = 0xC0190011\n\tSTATUS_TRANSACTION_SUPERIOR_EXISTS                                        NTStatus      = 0xC0190012\n\tSTATUS_TRANSACTION_REQUEST_NOT_VALID                                      NTStatus      = 0xC0190013\n\tSTATUS_TRANSACTION_NOT_REQUESTED                                          NTStatus      = 0xC0190014\n\tSTATUS_TRANSACTION_ALREADY_ABORTED                                        NTStatus      = 0xC0190015\n\tSTATUS_TRANSACTION_ALREADY_COMMITTED                                      NTStatus      = 0xC0190016\n\tSTATUS_TRANSACTION_INVALID_MARSHALL_BUFFER                                NTStatus      = 0xC0190017\n\tSTATUS_CURRENT_TRANSACTION_NOT_VALID                                      NTStatus      = 0xC0190018\n\tSTATUS_LOG_GROWTH_FAILED                                                  NTStatus      = 0xC0190019\n\tSTATUS_OBJECT_NO_LONGER_EXISTS                                            NTStatus      = 0xC0190021\n\tSTATUS_STREAM_MINIVERSION_NOT_FOUND                                       NTStatus      = 0xC0190022\n\tSTATUS_STREAM_MINIVERSION_NOT_VALID                                       NTStatus      = 0xC0190023\n\tSTATUS_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION                NTStatus      = 0xC0190024\n\tSTATUS_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT                           NTStatus      = 0xC0190025\n\tSTATUS_CANT_CREATE_MORE_STREAM_MINIVERSIONS                               NTStatus      = 0xC0190026\n\tSTATUS_HANDLE_NO_LONGER_VALID                                             NTStatus      = 0xC0190028\n\tSTATUS_NO_TXF_METADATA                                                    NTStatus      = 0x80190029\n\tSTATUS_LOG_CORRUPTION_DETECTED                                            NTStatus      = 0xC0190030\n\tSTATUS_CANT_RECOVER_WITH_HANDLE_OPEN                                      NTStatus      = 0x80190031\n\tSTATUS_RM_DISCONNECTED                                                    NTStatus      = 0xC0190032\n\tSTATUS_ENLISTMENT_NOT_SUPERIOR                                            NTStatus      = 0xC0190033\n\tSTATUS_RECOVERY_NOT_NEEDED                                                NTStatus      = 0x40190034\n\tSTATUS_RM_ALREADY_STARTED                                                 NTStatus      = 0x40190035\n\tSTATUS_FILE_IDENTITY_NOT_PERSISTENT                                       NTStatus      = 0xC0190036\n\tSTATUS_CANT_BREAK_TRANSACTIONAL_DEPENDENCY                                NTStatus      = 0xC0190037\n\tSTATUS_CANT_CROSS_RM_BOUNDARY                                             NTStatus      = 0xC0190038\n\tSTATUS_TXF_DIR_NOT_EMPTY                                                  NTStatus      = 0xC0190039\n\tSTATUS_INDOUBT_TRANSACTIONS_EXIST                                         NTStatus      = 0xC019003A\n\tSTATUS_TM_VOLATILE                                                        NTStatus      = 0xC019003B\n\tSTATUS_ROLLBACK_TIMER_EXPIRED                                             NTStatus      = 0xC019003C\n\tSTATUS_TXF_ATTRIBUTE_CORRUPT                                              NTStatus      = 0xC019003D\n\tSTATUS_EFS_NOT_ALLOWED_IN_TRANSACTION                                     NTStatus      = 0xC019003E\n\tSTATUS_TRANSACTIONAL_OPEN_NOT_ALLOWED                                     NTStatus      = 0xC019003F\n\tSTATUS_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE                              NTStatus      = 0xC0190040\n\tSTATUS_TXF_METADATA_ALREADY_PRESENT                                       NTStatus      = 0x80190041\n\tSTATUS_TRANSACTION_SCOPE_CALLBACKS_NOT_SET                                NTStatus      = 0x80190042\n\tSTATUS_TRANSACTION_REQUIRED_PROMOTION                                     NTStatus      = 0xC0190043\n\tSTATUS_CANNOT_EXECUTE_FILE_IN_TRANSACTION                                 NTStatus      = 0xC0190044\n\tSTATUS_TRANSACTIONS_NOT_FROZEN                                            NTStatus      = 0xC0190045\n\tSTATUS_TRANSACTION_FREEZE_IN_PROGRESS                                     NTStatus      = 0xC0190046\n\tSTATUS_NOT_SNAPSHOT_VOLUME                                                NTStatus      = 0xC0190047\n\tSTATUS_NO_SAVEPOINT_WITH_OPEN_FILES                                       NTStatus      = 0xC0190048\n\tSTATUS_SPARSE_NOT_ALLOWED_IN_TRANSACTION                                  NTStatus      = 0xC0190049\n\tSTATUS_TM_IDENTITY_MISMATCH                                               NTStatus      = 0xC019004A\n\tSTATUS_FLOATED_SECTION                                                    NTStatus      = 0xC019004B\n\tSTATUS_CANNOT_ACCEPT_TRANSACTED_WORK                                      NTStatus      = 0xC019004C\n\tSTATUS_CANNOT_ABORT_TRANSACTIONS                                          NTStatus      = 0xC019004D\n\tSTATUS_TRANSACTION_NOT_FOUND                                              NTStatus      = 0xC019004E\n\tSTATUS_RESOURCEMANAGER_NOT_FOUND                                          NTStatus      = 0xC019004F\n\tSTATUS_ENLISTMENT_NOT_FOUND                                               NTStatus      = 0xC0190050\n\tSTATUS_TRANSACTIONMANAGER_NOT_FOUND                                       NTStatus      = 0xC0190051\n\tSTATUS_TRANSACTIONMANAGER_NOT_ONLINE                                      NTStatus      = 0xC0190052\n\tSTATUS_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION                         NTStatus      = 0xC0190053\n\tSTATUS_TRANSACTION_NOT_ROOT                                               NTStatus      = 0xC0190054\n\tSTATUS_TRANSACTION_OBJECT_EXPIRED                                         NTStatus      = 0xC0190055\n\tSTATUS_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION                             NTStatus      = 0xC0190056\n\tSTATUS_TRANSACTION_RESPONSE_NOT_ENLISTED                                  NTStatus      = 0xC0190057\n\tSTATUS_TRANSACTION_RECORD_TOO_LONG                                        NTStatus      = 0xC0190058\n\tSTATUS_NO_LINK_TRACKING_IN_TRANSACTION                                    NTStatus      = 0xC0190059\n\tSTATUS_OPERATION_NOT_SUPPORTED_IN_TRANSACTION                             NTStatus      = 0xC019005A\n\tSTATUS_TRANSACTION_INTEGRITY_VIOLATED                                     NTStatus      = 0xC019005B\n\tSTATUS_TRANSACTIONMANAGER_IDENTITY_MISMATCH                               NTStatus      = 0xC019005C\n\tSTATUS_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT                                   NTStatus      = 0xC019005D\n\tSTATUS_TRANSACTION_MUST_WRITETHROUGH                                      NTStatus      = 0xC019005E\n\tSTATUS_TRANSACTION_NO_SUPERIOR                                            NTStatus      = 0xC019005F\n\tSTATUS_EXPIRED_HANDLE                                                     NTStatus      = 0xC0190060\n\tSTATUS_TRANSACTION_NOT_ENLISTED                                           NTStatus      = 0xC0190061\n\tSTATUS_LOG_SECTOR_INVALID                                                 NTStatus      = 0xC01A0001\n\tSTATUS_LOG_SECTOR_PARITY_INVALID                                          NTStatus      = 0xC01A0002\n\tSTATUS_LOG_SECTOR_REMAPPED                                                NTStatus      = 0xC01A0003\n\tSTATUS_LOG_BLOCK_INCOMPLETE                                               NTStatus      = 0xC01A0004\n\tSTATUS_LOG_INVALID_RANGE                                                  NTStatus      = 0xC01A0005\n\tSTATUS_LOG_BLOCKS_EXHAUSTED                                               NTStatus      = 0xC01A0006\n\tSTATUS_LOG_READ_CONTEXT_INVALID                                           NTStatus      = 0xC01A0007\n\tSTATUS_LOG_RESTART_INVALID                                                NTStatus      = 0xC01A0008\n\tSTATUS_LOG_BLOCK_VERSION                                                  NTStatus      = 0xC01A0009\n\tSTATUS_LOG_BLOCK_INVALID                                                  NTStatus      = 0xC01A000A\n\tSTATUS_LOG_READ_MODE_INVALID                                              NTStatus      = 0xC01A000B\n\tSTATUS_LOG_NO_RESTART                                                     NTStatus      = 0x401A000C\n\tSTATUS_LOG_METADATA_CORRUPT                                               NTStatus      = 0xC01A000D\n\tSTATUS_LOG_METADATA_INVALID                                               NTStatus      = 0xC01A000E\n\tSTATUS_LOG_METADATA_INCONSISTENT                                          NTStatus      = 0xC01A000F\n\tSTATUS_LOG_RESERVATION_INVALID                                            NTStatus      = 0xC01A0010\n\tSTATUS_LOG_CANT_DELETE                                                    NTStatus      = 0xC01A0011\n\tSTATUS_LOG_CONTAINER_LIMIT_EXCEEDED                                       NTStatus      = 0xC01A0012\n\tSTATUS_LOG_START_OF_LOG                                                   NTStatus      = 0xC01A0013\n\tSTATUS_LOG_POLICY_ALREADY_INSTALLED                                       NTStatus      = 0xC01A0014\n\tSTATUS_LOG_POLICY_NOT_INSTALLED                                           NTStatus      = 0xC01A0015\n\tSTATUS_LOG_POLICY_INVALID                                                 NTStatus      = 0xC01A0016\n\tSTATUS_LOG_POLICY_CONFLICT                                                NTStatus      = 0xC01A0017\n\tSTATUS_LOG_PINNED_ARCHIVE_TAIL                                            NTStatus      = 0xC01A0018\n\tSTATUS_LOG_RECORD_NONEXISTENT                                             NTStatus      = 0xC01A0019\n\tSTATUS_LOG_RECORDS_RESERVED_INVALID                                       NTStatus      = 0xC01A001A\n\tSTATUS_LOG_SPACE_RESERVED_INVALID                                         NTStatus      = 0xC01A001B\n\tSTATUS_LOG_TAIL_INVALID                                                   NTStatus      = 0xC01A001C\n\tSTATUS_LOG_FULL                                                           NTStatus      = 0xC01A001D\n\tSTATUS_LOG_MULTIPLEXED                                                    NTStatus      = 0xC01A001E\n\tSTATUS_LOG_DEDICATED                                                      NTStatus      = 0xC01A001F\n\tSTATUS_LOG_ARCHIVE_NOT_IN_PROGRESS                                        NTStatus      = 0xC01A0020\n\tSTATUS_LOG_ARCHIVE_IN_PROGRESS                                            NTStatus      = 0xC01A0021\n\tSTATUS_LOG_EPHEMERAL                                                      NTStatus      = 0xC01A0022\n\tSTATUS_LOG_NOT_ENOUGH_CONTAINERS                                          NTStatus      = 0xC01A0023\n\tSTATUS_LOG_CLIENT_ALREADY_REGISTERED                                      NTStatus      = 0xC01A0024\n\tSTATUS_LOG_CLIENT_NOT_REGISTERED                                          NTStatus      = 0xC01A0025\n\tSTATUS_LOG_FULL_HANDLER_IN_PROGRESS                                       NTStatus      = 0xC01A0026\n\tSTATUS_LOG_CONTAINER_READ_FAILED                                          NTStatus      = 0xC01A0027\n\tSTATUS_LOG_CONTAINER_WRITE_FAILED                                         NTStatus      = 0xC01A0028\n\tSTATUS_LOG_CONTAINER_OPEN_FAILED                                          NTStatus      = 0xC01A0029\n\tSTATUS_LOG_CONTAINER_STATE_INVALID                                        NTStatus      = 0xC01A002A\n\tSTATUS_LOG_STATE_INVALID                                                  NTStatus      = 0xC01A002B\n\tSTATUS_LOG_PINNED                                                         NTStatus      = 0xC01A002C\n\tSTATUS_LOG_METADATA_FLUSH_FAILED                                          NTStatus      = 0xC01A002D\n\tSTATUS_LOG_INCONSISTENT_SECURITY                                          NTStatus      = 0xC01A002E\n\tSTATUS_LOG_APPENDED_FLUSH_FAILED                                          NTStatus      = 0xC01A002F\n\tSTATUS_LOG_PINNED_RESERVATION                                             NTStatus      = 0xC01A0030\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD                                   NTStatus      = 0xC01B00EA\n\tSTATUS_VIDEO_HUNG_DISPLAY_DRIVER_THREAD_RECOVERED                         NTStatus      = 0x801B00EB\n\tSTATUS_VIDEO_DRIVER_DEBUG_REPORT_REQUEST                                  NTStatus      = 0x401B00EC\n\tSTATUS_MONITOR_NO_DESCRIPTOR                                              NTStatus      = 0xC01D0001\n\tSTATUS_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT                                  NTStatus      = 0xC01D0002\n\tSTATUS_MONITOR_INVALID_DESCRIPTOR_CHECKSUM                                NTStatus      = 0xC01D0003\n\tSTATUS_MONITOR_INVALID_STANDARD_TIMING_BLOCK                              NTStatus      = 0xC01D0004\n\tSTATUS_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED                          NTStatus      = 0xC01D0005\n\tSTATUS_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK                         NTStatus      = 0xC01D0006\n\tSTATUS_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK                         NTStatus      = 0xC01D0007\n\tSTATUS_MONITOR_NO_MORE_DESCRIPTOR_DATA                                    NTStatus      = 0xC01D0008\n\tSTATUS_MONITOR_INVALID_DETAILED_TIMING_BLOCK                              NTStatus      = 0xC01D0009\n\tSTATUS_MONITOR_INVALID_MANUFACTURE_DATE                                   NTStatus      = 0xC01D000A\n\tSTATUS_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER                                  NTStatus      = 0xC01E0000\n\tSTATUS_GRAPHICS_INSUFFICIENT_DMA_BUFFER                                   NTStatus      = 0xC01E0001\n\tSTATUS_GRAPHICS_INVALID_DISPLAY_ADAPTER                                   NTStatus      = 0xC01E0002\n\tSTATUS_GRAPHICS_ADAPTER_WAS_RESET                                         NTStatus      = 0xC01E0003\n\tSTATUS_GRAPHICS_INVALID_DRIVER_MODEL                                      NTStatus      = 0xC01E0004\n\tSTATUS_GRAPHICS_PRESENT_MODE_CHANGED                                      NTStatus      = 0xC01E0005\n\tSTATUS_GRAPHICS_PRESENT_OCCLUDED                                          NTStatus      = 0xC01E0006\n\tSTATUS_GRAPHICS_PRESENT_DENIED                                            NTStatus      = 0xC01E0007\n\tSTATUS_GRAPHICS_CANNOTCOLORCONVERT                                        NTStatus      = 0xC01E0008\n\tSTATUS_GRAPHICS_DRIVER_MISMATCH                                           NTStatus      = 0xC01E0009\n\tSTATUS_GRAPHICS_PARTIAL_DATA_POPULATED                                    NTStatus      = 0x401E000A\n\tSTATUS_GRAPHICS_PRESENT_REDIRECTION_DISABLED                              NTStatus      = 0xC01E000B\n\tSTATUS_GRAPHICS_PRESENT_UNOCCLUDED                                        NTStatus      = 0xC01E000C\n\tSTATUS_GRAPHICS_WINDOWDC_NOT_AVAILABLE                                    NTStatus      = 0xC01E000D\n\tSTATUS_GRAPHICS_WINDOWLESS_PRESENT_DISABLED                               NTStatus      = 0xC01E000E\n\tSTATUS_GRAPHICS_PRESENT_INVALID_WINDOW                                    NTStatus      = 0xC01E000F\n\tSTATUS_GRAPHICS_PRESENT_BUFFER_NOT_BOUND                                  NTStatus      = 0xC01E0010\n\tSTATUS_GRAPHICS_VAIL_STATE_CHANGED                                        NTStatus      = 0xC01E0011\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN                        NTStatus      = 0xC01E0012\n\tSTATUS_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED                           NTStatus      = 0xC01E0013\n\tSTATUS_GRAPHICS_NO_VIDEO_MEMORY                                           NTStatus      = 0xC01E0100\n\tSTATUS_GRAPHICS_CANT_LOCK_MEMORY                                          NTStatus      = 0xC01E0101\n\tSTATUS_GRAPHICS_ALLOCATION_BUSY                                           NTStatus      = 0xC01E0102\n\tSTATUS_GRAPHICS_TOO_MANY_REFERENCES                                       NTStatus      = 0xC01E0103\n\tSTATUS_GRAPHICS_TRY_AGAIN_LATER                                           NTStatus      = 0xC01E0104\n\tSTATUS_GRAPHICS_TRY_AGAIN_NOW                                             NTStatus      = 0xC01E0105\n\tSTATUS_GRAPHICS_ALLOCATION_INVALID                                        NTStatus      = 0xC01E0106\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE                          NTStatus      = 0xC01E0107\n\tSTATUS_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED                          NTStatus      = 0xC01E0108\n\tSTATUS_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION                              NTStatus      = 0xC01E0109\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_USAGE                                  NTStatus      = 0xC01E0110\n\tSTATUS_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION                             NTStatus      = 0xC01E0111\n\tSTATUS_GRAPHICS_ALLOCATION_CLOSED                                         NTStatus      = 0xC01E0112\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_INSTANCE                               NTStatus      = 0xC01E0113\n\tSTATUS_GRAPHICS_INVALID_ALLOCATION_HANDLE                                 NTStatus      = 0xC01E0114\n\tSTATUS_GRAPHICS_WRONG_ALLOCATION_DEVICE                                   NTStatus      = 0xC01E0115\n\tSTATUS_GRAPHICS_ALLOCATION_CONTENT_LOST                                   NTStatus      = 0xC01E0116\n\tSTATUS_GRAPHICS_GPU_EXCEPTION_ON_DEVICE                                   NTStatus      = 0xC01E0200\n\tSTATUS_GRAPHICS_SKIP_ALLOCATION_PREPARATION                               NTStatus      = 0x401E0201\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY                                    NTStatus      = 0xC01E0300\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED                              NTStatus      = 0xC01E0301\n\tSTATUS_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED                    NTStatus      = 0xC01E0302\n\tSTATUS_GRAPHICS_INVALID_VIDPN                                             NTStatus      = 0xC01E0303\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE                              NTStatus      = 0xC01E0304\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET                              NTStatus      = 0xC01E0305\n\tSTATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED                              NTStatus      = 0xC01E0306\n\tSTATUS_GRAPHICS_MODE_NOT_PINNED                                           NTStatus      = 0x401E0307\n\tSTATUS_GRAPHICS_INVALID_VIDPN_SOURCEMODESET                               NTStatus      = 0xC01E0308\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGETMODESET                               NTStatus      = 0xC01E0309\n\tSTATUS_GRAPHICS_INVALID_FREQUENCY                                         NTStatus      = 0xC01E030A\n\tSTATUS_GRAPHICS_INVALID_ACTIVE_REGION                                     NTStatus      = 0xC01E030B\n\tSTATUS_GRAPHICS_INVALID_TOTAL_REGION                                      NTStatus      = 0xC01E030C\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE                         NTStatus      = 0xC01E0310\n\tSTATUS_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE                         NTStatus      = 0xC01E0311\n\tSTATUS_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET                            NTStatus      = 0xC01E0312\n\tSTATUS_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY                                  NTStatus      = 0xC01E0313\n\tSTATUS_GRAPHICS_MODE_ALREADY_IN_MODESET                                   NTStatus      = 0xC01E0314\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET                             NTStatus      = 0xC01E0315\n\tSTATUS_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET                             NTStatus      = 0xC01E0316\n\tSTATUS_GRAPHICS_SOURCE_ALREADY_IN_SET                                     NTStatus      = 0xC01E0317\n\tSTATUS_GRAPHICS_TARGET_ALREADY_IN_SET                                     NTStatus      = 0xC01E0318\n\tSTATUS_GRAPHICS_INVALID_VIDPN_PRESENT_PATH                                NTStatus      = 0xC01E0319\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY                             NTStatus      = 0xC01E031A\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET                         NTStatus      = 0xC01E031B\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE                            NTStatus      = 0xC01E031C\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET                                 NTStatus      = 0xC01E031D\n\tSTATUS_GRAPHICS_NO_PREFERRED_MODE                                         NTStatus      = 0x401E031E\n\tSTATUS_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET                             NTStatus      = 0xC01E031F\n\tSTATUS_GRAPHICS_STALE_MODESET                                             NTStatus      = 0xC01E0320\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCEMODESET                             NTStatus      = 0xC01E0321\n\tSTATUS_GRAPHICS_INVALID_MONITOR_SOURCE_MODE                               NTStatus      = 0xC01E0322\n\tSTATUS_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN                           NTStatus      = 0xC01E0323\n\tSTATUS_GRAPHICS_MODE_ID_MUST_BE_UNIQUE                                    NTStatus      = 0xC01E0324\n\tSTATUS_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION           NTStatus      = 0xC01E0325\n\tSTATUS_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES                   NTStatus      = 0xC01E0326\n\tSTATUS_GRAPHICS_PATH_NOT_IN_TOPOLOGY                                      NTStatus      = 0xC01E0327\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE                     NTStatus      = 0xC01E0328\n\tSTATUS_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET                     NTStatus      = 0xC01E0329\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTORSET                              NTStatus      = 0xC01E032A\n\tSTATUS_GRAPHICS_INVALID_MONITORDESCRIPTOR                                 NTStatus      = 0xC01E032B\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET                              NTStatus      = 0xC01E032C\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET                          NTStatus      = 0xC01E032D\n\tSTATUS_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE                       NTStatus      = 0xC01E032E\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE                          NTStatus      = 0xC01E032F\n\tSTATUS_GRAPHICS_RESOURCES_NOT_RELATED                                     NTStatus      = 0xC01E0330\n\tSTATUS_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0331\n\tSTATUS_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE                                  NTStatus      = 0xC01E0332\n\tSTATUS_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET                                 NTStatus      = 0xC01E0333\n\tSTATUS_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER              NTStatus      = 0xC01E0334\n\tSTATUS_GRAPHICS_NO_VIDPNMGR                                               NTStatus      = 0xC01E0335\n\tSTATUS_GRAPHICS_NO_ACTIVE_VIDPN                                           NTStatus      = 0xC01E0336\n\tSTATUS_GRAPHICS_STALE_VIDPN_TOPOLOGY                                      NTStatus      = 0xC01E0337\n\tSTATUS_GRAPHICS_MONITOR_NOT_CONNECTED                                     NTStatus      = 0xC01E0338\n\tSTATUS_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0339\n\tSTATUS_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE                               NTStatus      = 0xC01E033A\n\tSTATUS_GRAPHICS_INVALID_VISIBLEREGION_SIZE                                NTStatus      = 0xC01E033B\n\tSTATUS_GRAPHICS_INVALID_STRIDE                                            NTStatus      = 0xC01E033C\n\tSTATUS_GRAPHICS_INVALID_PIXELFORMAT                                       NTStatus      = 0xC01E033D\n\tSTATUS_GRAPHICS_INVALID_COLORBASIS                                        NTStatus      = 0xC01E033E\n\tSTATUS_GRAPHICS_INVALID_PIXELVALUEACCESSMODE                              NTStatus      = 0xC01E033F\n\tSTATUS_GRAPHICS_TARGET_NOT_IN_TOPOLOGY                                    NTStatus      = 0xC01E0340\n\tSTATUS_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT                        NTStatus      = 0xC01E0341\n\tSTATUS_GRAPHICS_VIDPN_SOURCE_IN_USE                                       NTStatus      = 0xC01E0342\n\tSTATUS_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN                                  NTStatus      = 0xC01E0343\n\tSTATUS_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL                           NTStatus      = 0xC01E0344\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION              NTStatus      = 0xC01E0345\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED        NTStatus      = 0xC01E0346\n\tSTATUS_GRAPHICS_INVALID_GAMMA_RAMP                                        NTStatus      = 0xC01E0347\n\tSTATUS_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED                                  NTStatus      = 0xC01E0348\n\tSTATUS_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED                               NTStatus      = 0xC01E0349\n\tSTATUS_GRAPHICS_MODE_NOT_IN_MODESET                                       NTStatus      = 0xC01E034A\n\tSTATUS_GRAPHICS_DATASET_IS_EMPTY                                          NTStatus      = 0x401E034B\n\tSTATUS_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET                               NTStatus      = 0x401E034C\n\tSTATUS_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON              NTStatus      = 0xC01E034D\n\tSTATUS_GRAPHICS_INVALID_PATH_CONTENT_TYPE                                 NTStatus      = 0xC01E034E\n\tSTATUS_GRAPHICS_INVALID_COPYPROTECTION_TYPE                               NTStatus      = 0xC01E034F\n\tSTATUS_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS                         NTStatus      = 0xC01E0350\n\tSTATUS_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED           NTStatus      = 0x401E0351\n\tSTATUS_GRAPHICS_INVALID_SCANLINE_ORDERING                                 NTStatus      = 0xC01E0352\n\tSTATUS_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED                              NTStatus      = 0xC01E0353\n\tSTATUS_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS                          NTStatus      = 0xC01E0354\n\tSTATUS_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT                               NTStatus      = 0xC01E0355\n\tSTATUS_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM                            NTStatus      = 0xC01E0356\n\tSTATUS_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN                         NTStatus      = 0xC01E0357\n\tSTATUS_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT                 NTStatus      = 0xC01E0358\n\tSTATUS_GRAPHICS_MAX_NUM_PATHS_REACHED                                     NTStatus      = 0xC01E0359\n\tSTATUS_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION                        NTStatus      = 0xC01E035A\n\tSTATUS_GRAPHICS_INVALID_CLIENT_TYPE                                       NTStatus      = 0xC01E035B\n\tSTATUS_GRAPHICS_CLIENTVIDPN_NOT_SET                                       NTStatus      = 0xC01E035C\n\tSTATUS_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED                         NTStatus      = 0xC01E0400\n\tSTATUS_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED                            NTStatus      = 0xC01E0401\n\tSTATUS_GRAPHICS_UNKNOWN_CHILD_STATUS                                      NTStatus      = 0x401E042F\n\tSTATUS_GRAPHICS_NOT_A_LINKED_ADAPTER                                      NTStatus      = 0xC01E0430\n\tSTATUS_GRAPHICS_LEADLINK_NOT_ENUMERATED                                   NTStatus      = 0xC01E0431\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_ENUMERATED                                 NTStatus      = 0xC01E0432\n\tSTATUS_GRAPHICS_ADAPTER_CHAIN_NOT_READY                                   NTStatus      = 0xC01E0433\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_STARTED                                    NTStatus      = 0xC01E0434\n\tSTATUS_GRAPHICS_CHAINLINKS_NOT_POWERED_ON                                 NTStatus      = 0xC01E0435\n\tSTATUS_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE                            NTStatus      = 0xC01E0436\n\tSTATUS_GRAPHICS_LEADLINK_START_DEFERRED                                   NTStatus      = 0x401E0437\n\tSTATUS_GRAPHICS_NOT_POST_DEVICE_DRIVER                                    NTStatus      = 0xC01E0438\n\tSTATUS_GRAPHICS_POLLING_TOO_FREQUENTLY                                    NTStatus      = 0x401E0439\n\tSTATUS_GRAPHICS_START_DEFERRED                                            NTStatus      = 0x401E043A\n\tSTATUS_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED                               NTStatus      = 0xC01E043B\n\tSTATUS_GRAPHICS_DEPENDABLE_CHILD_STATUS                                   NTStatus      = 0x401E043C\n\tSTATUS_GRAPHICS_OPM_NOT_SUPPORTED                                         NTStatus      = 0xC01E0500\n\tSTATUS_GRAPHICS_COPP_NOT_SUPPORTED                                        NTStatus      = 0xC01E0501\n\tSTATUS_GRAPHICS_UAB_NOT_SUPPORTED                                         NTStatus      = 0xC01E0502\n\tSTATUS_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS                          NTStatus      = 0xC01E0503\n\tSTATUS_GRAPHICS_OPM_NO_PROTECTED_OUTPUTS_EXIST                            NTStatus      = 0xC01E0505\n\tSTATUS_GRAPHICS_OPM_INTERNAL_ERROR                                        NTStatus      = 0xC01E050B\n\tSTATUS_GRAPHICS_OPM_INVALID_HANDLE                                        NTStatus      = 0xC01E050C\n\tSTATUS_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH                            NTStatus      = 0xC01E050E\n\tSTATUS_GRAPHICS_OPM_SPANNING_MODE_ENABLED                                 NTStatus      = 0xC01E050F\n\tSTATUS_GRAPHICS_OPM_THEATER_MODE_ENABLED                                  NTStatus      = 0xC01E0510\n\tSTATUS_GRAPHICS_PVP_HFS_FAILED                                            NTStatus      = 0xC01E0511\n\tSTATUS_GRAPHICS_OPM_INVALID_SRM                                           NTStatus      = 0xC01E0512\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP                          NTStatus      = 0xC01E0513\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP                           NTStatus      = 0xC01E0514\n\tSTATUS_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA                         NTStatus      = 0xC01E0515\n\tSTATUS_GRAPHICS_OPM_HDCP_SRM_NEVER_SET                                    NTStatus      = 0xC01E0516\n\tSTATUS_GRAPHICS_OPM_RESOLUTION_TOO_HIGH                                   NTStatus      = 0xC01E0517\n\tSTATUS_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE                      NTStatus      = 0xC01E0518\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_NO_LONGER_EXISTS                     NTStatus      = 0xC01E051A\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS         NTStatus      = 0xC01E051C\n\tSTATUS_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST                           NTStatus      = 0xC01E051D\n\tSTATUS_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR                                 NTStatus      = 0xC01E051E\n\tSTATUS_GRAPHICS_OPM_PROTECTED_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS          NTStatus      = 0xC01E051F\n\tSTATUS_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED                               NTStatus      = 0xC01E0520\n\tSTATUS_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST                         NTStatus      = 0xC01E0521\n\tSTATUS_GRAPHICS_I2C_NOT_SUPPORTED                                         NTStatus      = 0xC01E0580\n\tSTATUS_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST                                 NTStatus      = 0xC01E0581\n\tSTATUS_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA                               NTStatus      = 0xC01E0582\n\tSTATUS_GRAPHICS_I2C_ERROR_RECEIVING_DATA                                  NTStatus      = 0xC01E0583\n\tSTATUS_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED                                   NTStatus      = 0xC01E0584\n\tSTATUS_GRAPHICS_DDCCI_INVALID_DATA                                        NTStatus      = 0xC01E0585\n\tSTATUS_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE         NTStatus      = 0xC01E0586\n\tSTATUS_GRAPHICS_DDCCI_INVALID_CAPABILITIES_STRING                         NTStatus      = 0xC01E0587\n\tSTATUS_GRAPHICS_MCA_INTERNAL_ERROR                                        NTStatus      = 0xC01E0588\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND                             NTStatus      = 0xC01E0589\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH                              NTStatus      = 0xC01E058A\n\tSTATUS_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM                            NTStatus      = 0xC01E058B\n\tSTATUS_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE                           NTStatus      = 0xC01E058C\n\tSTATUS_GRAPHICS_MONITOR_NO_LONGER_EXISTS                                  NTStatus      = 0xC01E058D\n\tSTATUS_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED                            NTStatus      = 0xC01E05E0\n\tSTATUS_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME                     NTStatus      = 0xC01E05E1\n\tSTATUS_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP                    NTStatus      = 0xC01E05E2\n\tSTATUS_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED                           NTStatus      = 0xC01E05E3\n\tSTATUS_GRAPHICS_INVALID_POINTER                                           NTStatus      = 0xC01E05E4\n\tSTATUS_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE                  NTStatus      = 0xC01E05E5\n\tSTATUS_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL                                 NTStatus      = 0xC01E05E6\n\tSTATUS_GRAPHICS_INTERNAL_ERROR                                            NTStatus      = 0xC01E05E7\n\tSTATUS_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS                           NTStatus      = 0xC01E05E8\n\tSTATUS_FVE_LOCKED_VOLUME                                                  NTStatus      = 0xC0210000\n\tSTATUS_FVE_NOT_ENCRYPTED                                                  NTStatus      = 0xC0210001\n\tSTATUS_FVE_BAD_INFORMATION                                                NTStatus      = 0xC0210002\n\tSTATUS_FVE_TOO_SMALL                                                      NTStatus      = 0xC0210003\n\tSTATUS_FVE_FAILED_WRONG_FS                                                NTStatus      = 0xC0210004\n\tSTATUS_FVE_BAD_PARTITION_SIZE                                             NTStatus      = 0xC0210005\n\tSTATUS_FVE_FS_NOT_EXTENDED                                                NTStatus      = 0xC0210006\n\tSTATUS_FVE_FS_MOUNTED                                                     NTStatus      = 0xC0210007\n\tSTATUS_FVE_NO_LICENSE                                                     NTStatus      = 0xC0210008\n\tSTATUS_FVE_ACTION_NOT_ALLOWED                                             NTStatus      = 0xC0210009\n\tSTATUS_FVE_BAD_DATA                                                       NTStatus      = 0xC021000A\n\tSTATUS_FVE_VOLUME_NOT_BOUND                                               NTStatus      = 0xC021000B\n\tSTATUS_FVE_NOT_DATA_VOLUME                                                NTStatus      = 0xC021000C\n\tSTATUS_FVE_CONV_READ_ERROR                                                NTStatus      = 0xC021000D\n\tSTATUS_FVE_CONV_WRITE_ERROR                                               NTStatus      = 0xC021000E\n\tSTATUS_FVE_OVERLAPPED_UPDATE                                              NTStatus      = 0xC021000F\n\tSTATUS_FVE_FAILED_SECTOR_SIZE                                             NTStatus      = 0xC0210010\n\tSTATUS_FVE_FAILED_AUTHENTICATION                                          NTStatus      = 0xC0210011\n\tSTATUS_FVE_NOT_OS_VOLUME                                                  NTStatus      = 0xC0210012\n\tSTATUS_FVE_KEYFILE_NOT_FOUND                                              NTStatus      = 0xC0210013\n\tSTATUS_FVE_KEYFILE_INVALID                                                NTStatus      = 0xC0210014\n\tSTATUS_FVE_KEYFILE_NO_VMK                                                 NTStatus      = 0xC0210015\n\tSTATUS_FVE_TPM_DISABLED                                                   NTStatus      = 0xC0210016\n\tSTATUS_FVE_TPM_SRK_AUTH_NOT_ZERO                                          NTStatus      = 0xC0210017\n\tSTATUS_FVE_TPM_INVALID_PCR                                                NTStatus      = 0xC0210018\n\tSTATUS_FVE_TPM_NO_VMK                                                     NTStatus      = 0xC0210019\n\tSTATUS_FVE_PIN_INVALID                                                    NTStatus      = 0xC021001A\n\tSTATUS_FVE_AUTH_INVALID_APPLICATION                                       NTStatus      = 0xC021001B\n\tSTATUS_FVE_AUTH_INVALID_CONFIG                                            NTStatus      = 0xC021001C\n\tSTATUS_FVE_DEBUGGER_ENABLED                                               NTStatus      = 0xC021001D\n\tSTATUS_FVE_DRY_RUN_FAILED                                                 NTStatus      = 0xC021001E\n\tSTATUS_FVE_BAD_METADATA_POINTER                                           NTStatus      = 0xC021001F\n\tSTATUS_FVE_OLD_METADATA_COPY                                              NTStatus      = 0xC0210020\n\tSTATUS_FVE_REBOOT_REQUIRED                                                NTStatus      = 0xC0210021\n\tSTATUS_FVE_RAW_ACCESS                                                     NTStatus      = 0xC0210022\n\tSTATUS_FVE_RAW_BLOCKED                                                    NTStatus      = 0xC0210023\n\tSTATUS_FVE_NO_AUTOUNLOCK_MASTER_KEY                                       NTStatus      = 0xC0210024\n\tSTATUS_FVE_MOR_FAILED                                                     NTStatus      = 0xC0210025\n\tSTATUS_FVE_NO_FEATURE_LICENSE                                             NTStatus      = 0xC0210026\n\tSTATUS_FVE_POLICY_USER_DISABLE_RDV_NOT_ALLOWED                            NTStatus      = 0xC0210027\n\tSTATUS_FVE_CONV_RECOVERY_FAILED                                           NTStatus      = 0xC0210028\n\tSTATUS_FVE_VIRTUALIZED_SPACE_TOO_BIG                                      NTStatus      = 0xC0210029\n\tSTATUS_FVE_INVALID_DATUM_TYPE                                             NTStatus      = 0xC021002A\n\tSTATUS_FVE_VOLUME_TOO_SMALL                                               NTStatus      = 0xC0210030\n\tSTATUS_FVE_ENH_PIN_INVALID                                                NTStatus      = 0xC0210031\n\tSTATUS_FVE_FULL_ENCRYPTION_NOT_ALLOWED_ON_TP_STORAGE                      NTStatus      = 0xC0210032\n\tSTATUS_FVE_WIPE_NOT_ALLOWED_ON_TP_STORAGE                                 NTStatus      = 0xC0210033\n\tSTATUS_FVE_NOT_ALLOWED_ON_CSV_STACK                                       NTStatus      = 0xC0210034\n\tSTATUS_FVE_NOT_ALLOWED_ON_CLUSTER                                         NTStatus      = 0xC0210035\n\tSTATUS_FVE_NOT_ALLOWED_TO_UPGRADE_WHILE_CONVERTING                        NTStatus      = 0xC0210036\n\tSTATUS_FVE_WIPE_CANCEL_NOT_APPLICABLE                                     NTStatus      = 0xC0210037\n\tSTATUS_FVE_EDRIVE_DRY_RUN_FAILED                                          NTStatus      = 0xC0210038\n\tSTATUS_FVE_SECUREBOOT_DISABLED                                            NTStatus      = 0xC0210039\n\tSTATUS_FVE_SECUREBOOT_CONFIG_CHANGE                                       NTStatus      = 0xC021003A\n\tSTATUS_FVE_DEVICE_LOCKEDOUT                                               NTStatus      = 0xC021003B\n\tSTATUS_FVE_VOLUME_EXTEND_PREVENTS_EOW_DECRYPT                             NTStatus      = 0xC021003C\n\tSTATUS_FVE_NOT_DE_VOLUME                                                  NTStatus      = 0xC021003D\n\tSTATUS_FVE_PROTECTION_DISABLED                                            NTStatus      = 0xC021003E\n\tSTATUS_FVE_PROTECTION_CANNOT_BE_DISABLED                                  NTStatus      = 0xC021003F\n\tSTATUS_FVE_OSV_KSR_NOT_ALLOWED                                            NTStatus      = 0xC0210040\n\tSTATUS_FWP_CALLOUT_NOT_FOUND                                              NTStatus      = 0xC0220001\n\tSTATUS_FWP_CONDITION_NOT_FOUND                                            NTStatus      = 0xC0220002\n\tSTATUS_FWP_FILTER_NOT_FOUND                                               NTStatus      = 0xC0220003\n\tSTATUS_FWP_LAYER_NOT_FOUND                                                NTStatus      = 0xC0220004\n\tSTATUS_FWP_PROVIDER_NOT_FOUND                                             NTStatus      = 0xC0220005\n\tSTATUS_FWP_PROVIDER_CONTEXT_NOT_FOUND                                     NTStatus      = 0xC0220006\n\tSTATUS_FWP_SUBLAYER_NOT_FOUND                                             NTStatus      = 0xC0220007\n\tSTATUS_FWP_NOT_FOUND                                                      NTStatus      = 0xC0220008\n\tSTATUS_FWP_ALREADY_EXISTS                                                 NTStatus      = 0xC0220009\n\tSTATUS_FWP_IN_USE                                                         NTStatus      = 0xC022000A\n\tSTATUS_FWP_DYNAMIC_SESSION_IN_PROGRESS                                    NTStatus      = 0xC022000B\n\tSTATUS_FWP_WRONG_SESSION                                                  NTStatus      = 0xC022000C\n\tSTATUS_FWP_NO_TXN_IN_PROGRESS                                             NTStatus      = 0xC022000D\n\tSTATUS_FWP_TXN_IN_PROGRESS                                                NTStatus      = 0xC022000E\n\tSTATUS_FWP_TXN_ABORTED                                                    NTStatus      = 0xC022000F\n\tSTATUS_FWP_SESSION_ABORTED                                                NTStatus      = 0xC0220010\n\tSTATUS_FWP_INCOMPATIBLE_TXN                                               NTStatus      = 0xC0220011\n\tSTATUS_FWP_TIMEOUT                                                        NTStatus      = 0xC0220012\n\tSTATUS_FWP_NET_EVENTS_DISABLED                                            NTStatus      = 0xC0220013\n\tSTATUS_FWP_INCOMPATIBLE_LAYER                                             NTStatus      = 0xC0220014\n\tSTATUS_FWP_KM_CLIENTS_ONLY                                                NTStatus      = 0xC0220015\n\tSTATUS_FWP_LIFETIME_MISMATCH                                              NTStatus      = 0xC0220016\n\tSTATUS_FWP_BUILTIN_OBJECT                                                 NTStatus      = 0xC0220017\n\tSTATUS_FWP_TOO_MANY_CALLOUTS                                              NTStatus      = 0xC0220018\n\tSTATUS_FWP_NOTIFICATION_DROPPED                                           NTStatus      = 0xC0220019\n\tSTATUS_FWP_TRAFFIC_MISMATCH                                               NTStatus      = 0xC022001A\n\tSTATUS_FWP_INCOMPATIBLE_SA_STATE                                          NTStatus      = 0xC022001B\n\tSTATUS_FWP_NULL_POINTER                                                   NTStatus      = 0xC022001C\n\tSTATUS_FWP_INVALID_ENUMERATOR                                             NTStatus      = 0xC022001D\n\tSTATUS_FWP_INVALID_FLAGS                                                  NTStatus      = 0xC022001E\n\tSTATUS_FWP_INVALID_NET_MASK                                               NTStatus      = 0xC022001F\n\tSTATUS_FWP_INVALID_RANGE                                                  NTStatus      = 0xC0220020\n\tSTATUS_FWP_INVALID_INTERVAL                                               NTStatus      = 0xC0220021\n\tSTATUS_FWP_ZERO_LENGTH_ARRAY                                              NTStatus      = 0xC0220022\n\tSTATUS_FWP_NULL_DISPLAY_NAME                                              NTStatus      = 0xC0220023\n\tSTATUS_FWP_INVALID_ACTION_TYPE                                            NTStatus      = 0xC0220024\n\tSTATUS_FWP_INVALID_WEIGHT                                                 NTStatus      = 0xC0220025\n\tSTATUS_FWP_MATCH_TYPE_MISMATCH                                            NTStatus      = 0xC0220026\n\tSTATUS_FWP_TYPE_MISMATCH                                                  NTStatus      = 0xC0220027\n\tSTATUS_FWP_OUT_OF_BOUNDS                                                  NTStatus      = 0xC0220028\n\tSTATUS_FWP_RESERVED                                                       NTStatus      = 0xC0220029\n\tSTATUS_FWP_DUPLICATE_CONDITION                                            NTStatus      = 0xC022002A\n\tSTATUS_FWP_DUPLICATE_KEYMOD                                               NTStatus      = 0xC022002B\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_LAYER                                 NTStatus      = 0xC022002C\n\tSTATUS_FWP_ACTION_INCOMPATIBLE_WITH_SUBLAYER                              NTStatus      = 0xC022002D\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_LAYER                                NTStatus      = 0xC022002E\n\tSTATUS_FWP_CONTEXT_INCOMPATIBLE_WITH_CALLOUT                              NTStatus      = 0xC022002F\n\tSTATUS_FWP_INCOMPATIBLE_AUTH_METHOD                                       NTStatus      = 0xC0220030\n\tSTATUS_FWP_INCOMPATIBLE_DH_GROUP                                          NTStatus      = 0xC0220031\n\tSTATUS_FWP_EM_NOT_SUPPORTED                                               NTStatus      = 0xC0220032\n\tSTATUS_FWP_NEVER_MATCH                                                    NTStatus      = 0xC0220033\n\tSTATUS_FWP_PROVIDER_CONTEXT_MISMATCH                                      NTStatus      = 0xC0220034\n\tSTATUS_FWP_INVALID_PARAMETER                                              NTStatus      = 0xC0220035\n\tSTATUS_FWP_TOO_MANY_SUBLAYERS                                             NTStatus      = 0xC0220036\n\tSTATUS_FWP_CALLOUT_NOTIFICATION_FAILED                                    NTStatus      = 0xC0220037\n\tSTATUS_FWP_INVALID_AUTH_TRANSFORM                                         NTStatus      = 0xC0220038\n\tSTATUS_FWP_INVALID_CIPHER_TRANSFORM                                       NTStatus      = 0xC0220039\n\tSTATUS_FWP_INCOMPATIBLE_CIPHER_TRANSFORM                                  NTStatus      = 0xC022003A\n\tSTATUS_FWP_INVALID_TRANSFORM_COMBINATION                                  NTStatus      = 0xC022003B\n\tSTATUS_FWP_DUPLICATE_AUTH_METHOD                                          NTStatus      = 0xC022003C\n\tSTATUS_FWP_INVALID_TUNNEL_ENDPOINT                                        NTStatus      = 0xC022003D\n\tSTATUS_FWP_L2_DRIVER_NOT_READY                                            NTStatus      = 0xC022003E\n\tSTATUS_FWP_KEY_DICTATOR_ALREADY_REGISTERED                                NTStatus      = 0xC022003F\n\tSTATUS_FWP_KEY_DICTATION_INVALID_KEYING_MATERIAL                          NTStatus      = 0xC0220040\n\tSTATUS_FWP_CONNECTIONS_DISABLED                                           NTStatus      = 0xC0220041\n\tSTATUS_FWP_INVALID_DNS_NAME                                               NTStatus      = 0xC0220042\n\tSTATUS_FWP_STILL_ON                                                       NTStatus      = 0xC0220043\n\tSTATUS_FWP_IKEEXT_NOT_RUNNING                                             NTStatus      = 0xC0220044\n\tSTATUS_FWP_TCPIP_NOT_READY                                                NTStatus      = 0xC0220100\n\tSTATUS_FWP_INJECT_HANDLE_CLOSING                                          NTStatus      = 0xC0220101\n\tSTATUS_FWP_INJECT_HANDLE_STALE                                            NTStatus      = 0xC0220102\n\tSTATUS_FWP_CANNOT_PEND                                                    NTStatus      = 0xC0220103\n\tSTATUS_FWP_DROP_NOICMP                                                    NTStatus      = 0xC0220104\n\tSTATUS_NDIS_CLOSING                                                       NTStatus      = 0xC0230002\n\tSTATUS_NDIS_BAD_VERSION                                                   NTStatus      = 0xC0230004\n\tSTATUS_NDIS_BAD_CHARACTERISTICS                                           NTStatus      = 0xC0230005\n\tSTATUS_NDIS_ADAPTER_NOT_FOUND                                             NTStatus      = 0xC0230006\n\tSTATUS_NDIS_OPEN_FAILED                                                   NTStatus      = 0xC0230007\n\tSTATUS_NDIS_DEVICE_FAILED                                                 NTStatus      = 0xC0230008\n\tSTATUS_NDIS_MULTICAST_FULL                                                NTStatus      = 0xC0230009\n\tSTATUS_NDIS_MULTICAST_EXISTS                                              NTStatus      = 0xC023000A\n\tSTATUS_NDIS_MULTICAST_NOT_FOUND                                           NTStatus      = 0xC023000B\n\tSTATUS_NDIS_REQUEST_ABORTED                                               NTStatus      = 0xC023000C\n\tSTATUS_NDIS_RESET_IN_PROGRESS                                             NTStatus      = 0xC023000D\n\tSTATUS_NDIS_NOT_SUPPORTED                                                 NTStatus      = 0xC02300BB\n\tSTATUS_NDIS_INVALID_PACKET                                                NTStatus      = 0xC023000F\n\tSTATUS_NDIS_ADAPTER_NOT_READY                                             NTStatus      = 0xC0230011\n\tSTATUS_NDIS_INVALID_LENGTH                                                NTStatus      = 0xC0230014\n\tSTATUS_NDIS_INVALID_DATA                                                  NTStatus      = 0xC0230015\n\tSTATUS_NDIS_BUFFER_TOO_SHORT                                              NTStatus      = 0xC0230016\n\tSTATUS_NDIS_INVALID_OID                                                   NTStatus      = 0xC0230017\n\tSTATUS_NDIS_ADAPTER_REMOVED                                               NTStatus      = 0xC0230018\n\tSTATUS_NDIS_UNSUPPORTED_MEDIA                                             NTStatus      = 0xC0230019\n\tSTATUS_NDIS_GROUP_ADDRESS_IN_USE                                          NTStatus      = 0xC023001A\n\tSTATUS_NDIS_FILE_NOT_FOUND                                                NTStatus      = 0xC023001B\n\tSTATUS_NDIS_ERROR_READING_FILE                                            NTStatus      = 0xC023001C\n\tSTATUS_NDIS_ALREADY_MAPPED                                                NTStatus      = 0xC023001D\n\tSTATUS_NDIS_RESOURCE_CONFLICT                                             NTStatus      = 0xC023001E\n\tSTATUS_NDIS_MEDIA_DISCONNECTED                                            NTStatus      = 0xC023001F\n\tSTATUS_NDIS_INVALID_ADDRESS                                               NTStatus      = 0xC0230022\n\tSTATUS_NDIS_INVALID_DEVICE_REQUEST                                        NTStatus      = 0xC0230010\n\tSTATUS_NDIS_PAUSED                                                        NTStatus      = 0xC023002A\n\tSTATUS_NDIS_INTERFACE_NOT_FOUND                                           NTStatus      = 0xC023002B\n\tSTATUS_NDIS_UNSUPPORTED_REVISION                                          NTStatus      = 0xC023002C\n\tSTATUS_NDIS_INVALID_PORT                                                  NTStatus      = 0xC023002D\n\tSTATUS_NDIS_INVALID_PORT_STATE                                            NTStatus      = 0xC023002E\n\tSTATUS_NDIS_LOW_POWER_STATE                                               NTStatus      = 0xC023002F\n\tSTATUS_NDIS_REINIT_REQUIRED                                               NTStatus      = 0xC0230030\n\tSTATUS_NDIS_NO_QUEUES                                                     NTStatus      = 0xC0230031\n\tSTATUS_NDIS_DOT11_AUTO_CONFIG_ENABLED                                     NTStatus      = 0xC0232000\n\tSTATUS_NDIS_DOT11_MEDIA_IN_USE                                            NTStatus      = 0xC0232001\n\tSTATUS_NDIS_DOT11_POWER_STATE_INVALID                                     NTStatus      = 0xC0232002\n\tSTATUS_NDIS_PM_WOL_PATTERN_LIST_FULL                                      NTStatus      = 0xC0232003\n\tSTATUS_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL                                 NTStatus      = 0xC0232004\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE                      NTStatus      = 0xC0232005\n\tSTATUS_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE                         NTStatus      = 0xC0232006\n\tSTATUS_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED                                  NTStatus      = 0xC0232007\n\tSTATUS_NDIS_DOT11_AP_BAND_NOT_ALLOWED                                     NTStatus      = 0xC0232008\n\tSTATUS_NDIS_INDICATION_REQUIRED                                           NTStatus      = 0x40230001\n\tSTATUS_NDIS_OFFLOAD_POLICY                                                NTStatus      = 0xC023100F\n\tSTATUS_NDIS_OFFLOAD_CONNECTION_REJECTED                                   NTStatus      = 0xC0231012\n\tSTATUS_NDIS_OFFLOAD_PATH_REJECTED                                         NTStatus      = 0xC0231013\n\tSTATUS_TPM_ERROR_MASK                                                     NTStatus      = 0xC0290000\n\tSTATUS_TPM_AUTHFAIL                                                       NTStatus      = 0xC0290001\n\tSTATUS_TPM_BADINDEX                                                       NTStatus      = 0xC0290002\n\tSTATUS_TPM_BAD_PARAMETER                                                  NTStatus      = 0xC0290003\n\tSTATUS_TPM_AUDITFAILURE                                                   NTStatus      = 0xC0290004\n\tSTATUS_TPM_CLEAR_DISABLED                                                 NTStatus      = 0xC0290005\n\tSTATUS_TPM_DEACTIVATED                                                    NTStatus      = 0xC0290006\n\tSTATUS_TPM_DISABLED                                                       NTStatus      = 0xC0290007\n\tSTATUS_TPM_DISABLED_CMD                                                   NTStatus      = 0xC0290008\n\tSTATUS_TPM_FAIL                                                           NTStatus      = 0xC0290009\n\tSTATUS_TPM_BAD_ORDINAL                                                    NTStatus      = 0xC029000A\n\tSTATUS_TPM_INSTALL_DISABLED                                               NTStatus      = 0xC029000B\n\tSTATUS_TPM_INVALID_KEYHANDLE                                              NTStatus      = 0xC029000C\n\tSTATUS_TPM_KEYNOTFOUND                                                    NTStatus      = 0xC029000D\n\tSTATUS_TPM_INAPPROPRIATE_ENC                                              NTStatus      = 0xC029000E\n\tSTATUS_TPM_MIGRATEFAIL                                                    NTStatus      = 0xC029000F\n\tSTATUS_TPM_INVALID_PCR_INFO                                               NTStatus      = 0xC0290010\n\tSTATUS_TPM_NOSPACE                                                        NTStatus      = 0xC0290011\n\tSTATUS_TPM_NOSRK                                                          NTStatus      = 0xC0290012\n\tSTATUS_TPM_NOTSEALED_BLOB                                                 NTStatus      = 0xC0290013\n\tSTATUS_TPM_OWNER_SET                                                      NTStatus      = 0xC0290014\n\tSTATUS_TPM_RESOURCES                                                      NTStatus      = 0xC0290015\n\tSTATUS_TPM_SHORTRANDOM                                                    NTStatus      = 0xC0290016\n\tSTATUS_TPM_SIZE                                                           NTStatus      = 0xC0290017\n\tSTATUS_TPM_WRONGPCRVAL                                                    NTStatus      = 0xC0290018\n\tSTATUS_TPM_BAD_PARAM_SIZE                                                 NTStatus      = 0xC0290019\n\tSTATUS_TPM_SHA_THREAD                                                     NTStatus      = 0xC029001A\n\tSTATUS_TPM_SHA_ERROR                                                      NTStatus      = 0xC029001B\n\tSTATUS_TPM_FAILEDSELFTEST                                                 NTStatus      = 0xC029001C\n\tSTATUS_TPM_AUTH2FAIL                                                      NTStatus      = 0xC029001D\n\tSTATUS_TPM_BADTAG                                                         NTStatus      = 0xC029001E\n\tSTATUS_TPM_IOERROR                                                        NTStatus      = 0xC029001F\n\tSTATUS_TPM_ENCRYPT_ERROR                                                  NTStatus      = 0xC0290020\n\tSTATUS_TPM_DECRYPT_ERROR                                                  NTStatus      = 0xC0290021\n\tSTATUS_TPM_INVALID_AUTHHANDLE                                             NTStatus      = 0xC0290022\n\tSTATUS_TPM_NO_ENDORSEMENT                                                 NTStatus      = 0xC0290023\n\tSTATUS_TPM_INVALID_KEYUSAGE                                               NTStatus      = 0xC0290024\n\tSTATUS_TPM_WRONG_ENTITYTYPE                                               NTStatus      = 0xC0290025\n\tSTATUS_TPM_INVALID_POSTINIT                                               NTStatus      = 0xC0290026\n\tSTATUS_TPM_INAPPROPRIATE_SIG                                              NTStatus      = 0xC0290027\n\tSTATUS_TPM_BAD_KEY_PROPERTY                                               NTStatus      = 0xC0290028\n\tSTATUS_TPM_BAD_MIGRATION                                                  NTStatus      = 0xC0290029\n\tSTATUS_TPM_BAD_SCHEME                                                     NTStatus      = 0xC029002A\n\tSTATUS_TPM_BAD_DATASIZE                                                   NTStatus      = 0xC029002B\n\tSTATUS_TPM_BAD_MODE                                                       NTStatus      = 0xC029002C\n\tSTATUS_TPM_BAD_PRESENCE                                                   NTStatus      = 0xC029002D\n\tSTATUS_TPM_BAD_VERSION                                                    NTStatus      = 0xC029002E\n\tSTATUS_TPM_NO_WRAP_TRANSPORT                                              NTStatus      = 0xC029002F\n\tSTATUS_TPM_AUDITFAIL_UNSUCCESSFUL                                         NTStatus      = 0xC0290030\n\tSTATUS_TPM_AUDITFAIL_SUCCESSFUL                                           NTStatus      = 0xC0290031\n\tSTATUS_TPM_NOTRESETABLE                                                   NTStatus      = 0xC0290032\n\tSTATUS_TPM_NOTLOCAL                                                       NTStatus      = 0xC0290033\n\tSTATUS_TPM_BAD_TYPE                                                       NTStatus      = 0xC0290034\n\tSTATUS_TPM_INVALID_RESOURCE                                               NTStatus      = 0xC0290035\n\tSTATUS_TPM_NOTFIPS                                                        NTStatus      = 0xC0290036\n\tSTATUS_TPM_INVALID_FAMILY                                                 NTStatus      = 0xC0290037\n\tSTATUS_TPM_NO_NV_PERMISSION                                               NTStatus      = 0xC0290038\n\tSTATUS_TPM_REQUIRES_SIGN                                                  NTStatus      = 0xC0290039\n\tSTATUS_TPM_KEY_NOTSUPPORTED                                               NTStatus      = 0xC029003A\n\tSTATUS_TPM_AUTH_CONFLICT                                                  NTStatus      = 0xC029003B\n\tSTATUS_TPM_AREA_LOCKED                                                    NTStatus      = 0xC029003C\n\tSTATUS_TPM_BAD_LOCALITY                                                   NTStatus      = 0xC029003D\n\tSTATUS_TPM_READ_ONLY                                                      NTStatus      = 0xC029003E\n\tSTATUS_TPM_PER_NOWRITE                                                    NTStatus      = 0xC029003F\n\tSTATUS_TPM_FAMILYCOUNT                                                    NTStatus      = 0xC0290040\n\tSTATUS_TPM_WRITE_LOCKED                                                   NTStatus      = 0xC0290041\n\tSTATUS_TPM_BAD_ATTRIBUTES                                                 NTStatus      = 0xC0290042\n\tSTATUS_TPM_INVALID_STRUCTURE                                              NTStatus      = 0xC0290043\n\tSTATUS_TPM_KEY_OWNER_CONTROL                                              NTStatus      = 0xC0290044\n\tSTATUS_TPM_BAD_COUNTER                                                    NTStatus      = 0xC0290045\n\tSTATUS_TPM_NOT_FULLWRITE                                                  NTStatus      = 0xC0290046\n\tSTATUS_TPM_CONTEXT_GAP                                                    NTStatus      = 0xC0290047\n\tSTATUS_TPM_MAXNVWRITES                                                    NTStatus      = 0xC0290048\n\tSTATUS_TPM_NOOPERATOR                                                     NTStatus      = 0xC0290049\n\tSTATUS_TPM_RESOURCEMISSING                                                NTStatus      = 0xC029004A\n\tSTATUS_TPM_DELEGATE_LOCK                                                  NTStatus      = 0xC029004B\n\tSTATUS_TPM_DELEGATE_FAMILY                                                NTStatus      = 0xC029004C\n\tSTATUS_TPM_DELEGATE_ADMIN                                                 NTStatus      = 0xC029004D\n\tSTATUS_TPM_TRANSPORT_NOTEXCLUSIVE                                         NTStatus      = 0xC029004E\n\tSTATUS_TPM_OWNER_CONTROL                                                  NTStatus      = 0xC029004F\n\tSTATUS_TPM_DAA_RESOURCES                                                  NTStatus      = 0xC0290050\n\tSTATUS_TPM_DAA_INPUT_DATA0                                                NTStatus      = 0xC0290051\n\tSTATUS_TPM_DAA_INPUT_DATA1                                                NTStatus      = 0xC0290052\n\tSTATUS_TPM_DAA_ISSUER_SETTINGS                                            NTStatus      = 0xC0290053\n\tSTATUS_TPM_DAA_TPM_SETTINGS                                               NTStatus      = 0xC0290054\n\tSTATUS_TPM_DAA_STAGE                                                      NTStatus      = 0xC0290055\n\tSTATUS_TPM_DAA_ISSUER_VALIDITY                                            NTStatus      = 0xC0290056\n\tSTATUS_TPM_DAA_WRONG_W                                                    NTStatus      = 0xC0290057\n\tSTATUS_TPM_BAD_HANDLE                                                     NTStatus      = 0xC0290058\n\tSTATUS_TPM_BAD_DELEGATE                                                   NTStatus      = 0xC0290059\n\tSTATUS_TPM_BADCONTEXT                                                     NTStatus      = 0xC029005A\n\tSTATUS_TPM_TOOMANYCONTEXTS                                                NTStatus      = 0xC029005B\n\tSTATUS_TPM_MA_TICKET_SIGNATURE                                            NTStatus      = 0xC029005C\n\tSTATUS_TPM_MA_DESTINATION                                                 NTStatus      = 0xC029005D\n\tSTATUS_TPM_MA_SOURCE                                                      NTStatus      = 0xC029005E\n\tSTATUS_TPM_MA_AUTHORITY                                                   NTStatus      = 0xC029005F\n\tSTATUS_TPM_PERMANENTEK                                                    NTStatus      = 0xC0290061\n\tSTATUS_TPM_BAD_SIGNATURE                                                  NTStatus      = 0xC0290062\n\tSTATUS_TPM_NOCONTEXTSPACE                                                 NTStatus      = 0xC0290063\n\tSTATUS_TPM_20_E_ASYMMETRIC                                                NTStatus      = 0xC0290081\n\tSTATUS_TPM_20_E_ATTRIBUTES                                                NTStatus      = 0xC0290082\n\tSTATUS_TPM_20_E_HASH                                                      NTStatus      = 0xC0290083\n\tSTATUS_TPM_20_E_VALUE                                                     NTStatus      = 0xC0290084\n\tSTATUS_TPM_20_E_HIERARCHY                                                 NTStatus      = 0xC0290085\n\tSTATUS_TPM_20_E_KEY_SIZE                                                  NTStatus      = 0xC0290087\n\tSTATUS_TPM_20_E_MGF                                                       NTStatus      = 0xC0290088\n\tSTATUS_TPM_20_E_MODE                                                      NTStatus      = 0xC0290089\n\tSTATUS_TPM_20_E_TYPE                                                      NTStatus      = 0xC029008A\n\tSTATUS_TPM_20_E_HANDLE                                                    NTStatus      = 0xC029008B\n\tSTATUS_TPM_20_E_KDF                                                       NTStatus      = 0xC029008C\n\tSTATUS_TPM_20_E_RANGE                                                     NTStatus      = 0xC029008D\n\tSTATUS_TPM_20_E_AUTH_FAIL                                                 NTStatus      = 0xC029008E\n\tSTATUS_TPM_20_E_NONCE                                                     NTStatus      = 0xC029008F\n\tSTATUS_TPM_20_E_PP                                                        NTStatus      = 0xC0290090\n\tSTATUS_TPM_20_E_SCHEME                                                    NTStatus      = 0xC0290092\n\tSTATUS_TPM_20_E_SIZE                                                      NTStatus      = 0xC0290095\n\tSTATUS_TPM_20_E_SYMMETRIC                                                 NTStatus      = 0xC0290096\n\tSTATUS_TPM_20_E_TAG                                                       NTStatus      = 0xC0290097\n\tSTATUS_TPM_20_E_SELECTOR                                                  NTStatus      = 0xC0290098\n\tSTATUS_TPM_20_E_INSUFFICIENT                                              NTStatus      = 0xC029009A\n\tSTATUS_TPM_20_E_SIGNATURE                                                 NTStatus      = 0xC029009B\n\tSTATUS_TPM_20_E_KEY                                                       NTStatus      = 0xC029009C\n\tSTATUS_TPM_20_E_POLICY_FAIL                                               NTStatus      = 0xC029009D\n\tSTATUS_TPM_20_E_INTEGRITY                                                 NTStatus      = 0xC029009F\n\tSTATUS_TPM_20_E_TICKET                                                    NTStatus      = 0xC02900A0\n\tSTATUS_TPM_20_E_RESERVED_BITS                                             NTStatus      = 0xC02900A1\n\tSTATUS_TPM_20_E_BAD_AUTH                                                  NTStatus      = 0xC02900A2\n\tSTATUS_TPM_20_E_EXPIRED                                                   NTStatus      = 0xC02900A3\n\tSTATUS_TPM_20_E_POLICY_CC                                                 NTStatus      = 0xC02900A4\n\tSTATUS_TPM_20_E_BINDING                                                   NTStatus      = 0xC02900A5\n\tSTATUS_TPM_20_E_CURVE                                                     NTStatus      = 0xC02900A6\n\tSTATUS_TPM_20_E_ECC_POINT                                                 NTStatus      = 0xC02900A7\n\tSTATUS_TPM_20_E_INITIALIZE                                                NTStatus      = 0xC0290100\n\tSTATUS_TPM_20_E_FAILURE                                                   NTStatus      = 0xC0290101\n\tSTATUS_TPM_20_E_SEQUENCE                                                  NTStatus      = 0xC0290103\n\tSTATUS_TPM_20_E_PRIVATE                                                   NTStatus      = 0xC029010B\n\tSTATUS_TPM_20_E_HMAC                                                      NTStatus      = 0xC0290119\n\tSTATUS_TPM_20_E_DISABLED                                                  NTStatus      = 0xC0290120\n\tSTATUS_TPM_20_E_EXCLUSIVE                                                 NTStatus      = 0xC0290121\n\tSTATUS_TPM_20_E_ECC_CURVE                                                 NTStatus      = 0xC0290123\n\tSTATUS_TPM_20_E_AUTH_TYPE                                                 NTStatus      = 0xC0290124\n\tSTATUS_TPM_20_E_AUTH_MISSING                                              NTStatus      = 0xC0290125\n\tSTATUS_TPM_20_E_POLICY                                                    NTStatus      = 0xC0290126\n\tSTATUS_TPM_20_E_PCR                                                       NTStatus      = 0xC0290127\n\tSTATUS_TPM_20_E_PCR_CHANGED                                               NTStatus      = 0xC0290128\n\tSTATUS_TPM_20_E_UPGRADE                                                   NTStatus      = 0xC029012D\n\tSTATUS_TPM_20_E_TOO_MANY_CONTEXTS                                         NTStatus      = 0xC029012E\n\tSTATUS_TPM_20_E_AUTH_UNAVAILABLE                                          NTStatus      = 0xC029012F\n\tSTATUS_TPM_20_E_REBOOT                                                    NTStatus      = 0xC0290130\n\tSTATUS_TPM_20_E_UNBALANCED                                                NTStatus      = 0xC0290131\n\tSTATUS_TPM_20_E_COMMAND_SIZE                                              NTStatus      = 0xC0290142\n\tSTATUS_TPM_20_E_COMMAND_CODE                                              NTStatus      = 0xC0290143\n\tSTATUS_TPM_20_E_AUTHSIZE                                                  NTStatus      = 0xC0290144\n\tSTATUS_TPM_20_E_AUTH_CONTEXT                                              NTStatus      = 0xC0290145\n\tSTATUS_TPM_20_E_NV_RANGE                                                  NTStatus      = 0xC0290146\n\tSTATUS_TPM_20_E_NV_SIZE                                                   NTStatus      = 0xC0290147\n\tSTATUS_TPM_20_E_NV_LOCKED                                                 NTStatus      = 0xC0290148\n\tSTATUS_TPM_20_E_NV_AUTHORIZATION                                          NTStatus      = 0xC0290149\n\tSTATUS_TPM_20_E_NV_UNINITIALIZED                                          NTStatus      = 0xC029014A\n\tSTATUS_TPM_20_E_NV_SPACE                                                  NTStatus      = 0xC029014B\n\tSTATUS_TPM_20_E_NV_DEFINED                                                NTStatus      = 0xC029014C\n\tSTATUS_TPM_20_E_BAD_CONTEXT                                               NTStatus      = 0xC0290150\n\tSTATUS_TPM_20_E_CPHASH                                                    NTStatus      = 0xC0290151\n\tSTATUS_TPM_20_E_PARENT                                                    NTStatus      = 0xC0290152\n\tSTATUS_TPM_20_E_NEEDS_TEST                                                NTStatus      = 0xC0290153\n\tSTATUS_TPM_20_E_NO_RESULT                                                 NTStatus      = 0xC0290154\n\tSTATUS_TPM_20_E_SENSITIVE                                                 NTStatus      = 0xC0290155\n\tSTATUS_TPM_COMMAND_BLOCKED                                                NTStatus      = 0xC0290400\n\tSTATUS_TPM_INVALID_HANDLE                                                 NTStatus      = 0xC0290401\n\tSTATUS_TPM_DUPLICATE_VHANDLE                                              NTStatus      = 0xC0290402\n\tSTATUS_TPM_EMBEDDED_COMMAND_BLOCKED                                       NTStatus      = 0xC0290403\n\tSTATUS_TPM_EMBEDDED_COMMAND_UNSUPPORTED                                   NTStatus      = 0xC0290404\n\tSTATUS_TPM_RETRY                                                          NTStatus      = 0xC0290800\n\tSTATUS_TPM_NEEDS_SELFTEST                                                 NTStatus      = 0xC0290801\n\tSTATUS_TPM_DOING_SELFTEST                                                 NTStatus      = 0xC0290802\n\tSTATUS_TPM_DEFEND_LOCK_RUNNING                                            NTStatus      = 0xC0290803\n\tSTATUS_TPM_COMMAND_CANCELED                                               NTStatus      = 0xC0291001\n\tSTATUS_TPM_TOO_MANY_CONTEXTS                                              NTStatus      = 0xC0291002\n\tSTATUS_TPM_NOT_FOUND                                                      NTStatus      = 0xC0291003\n\tSTATUS_TPM_ACCESS_DENIED                                                  NTStatus      = 0xC0291004\n\tSTATUS_TPM_INSUFFICIENT_BUFFER                                            NTStatus      = 0xC0291005\n\tSTATUS_TPM_PPI_FUNCTION_UNSUPPORTED                                       NTStatus      = 0xC0291006\n\tSTATUS_PCP_ERROR_MASK                                                     NTStatus      = 0xC0292000\n\tSTATUS_PCP_DEVICE_NOT_READY                                               NTStatus      = 0xC0292001\n\tSTATUS_PCP_INVALID_HANDLE                                                 NTStatus      = 0xC0292002\n\tSTATUS_PCP_INVALID_PARAMETER                                              NTStatus      = 0xC0292003\n\tSTATUS_PCP_FLAG_NOT_SUPPORTED                                             NTStatus      = 0xC0292004\n\tSTATUS_PCP_NOT_SUPPORTED                                                  NTStatus      = 0xC0292005\n\tSTATUS_PCP_BUFFER_TOO_SMALL                                               NTStatus      = 0xC0292006\n\tSTATUS_PCP_INTERNAL_ERROR                                                 NTStatus      = 0xC0292007\n\tSTATUS_PCP_AUTHENTICATION_FAILED                                          NTStatus      = 0xC0292008\n\tSTATUS_PCP_AUTHENTICATION_IGNORED                                         NTStatus      = 0xC0292009\n\tSTATUS_PCP_POLICY_NOT_FOUND                                               NTStatus      = 0xC029200A\n\tSTATUS_PCP_PROFILE_NOT_FOUND                                              NTStatus      = 0xC029200B\n\tSTATUS_PCP_VALIDATION_FAILED                                              NTStatus      = 0xC029200C\n\tSTATUS_PCP_DEVICE_NOT_FOUND                                               NTStatus      = 0xC029200D\n\tSTATUS_PCP_WRONG_PARENT                                                   NTStatus      = 0xC029200E\n\tSTATUS_PCP_KEY_NOT_LOADED                                                 NTStatus      = 0xC029200F\n\tSTATUS_PCP_NO_KEY_CERTIFICATION                                           NTStatus      = 0xC0292010\n\tSTATUS_PCP_KEY_NOT_FINALIZED                                              NTStatus      = 0xC0292011\n\tSTATUS_PCP_ATTESTATION_CHALLENGE_NOT_SET                                  NTStatus      = 0xC0292012\n\tSTATUS_PCP_NOT_PCR_BOUND                                                  NTStatus      = 0xC0292013\n\tSTATUS_PCP_KEY_ALREADY_FINALIZED                                          NTStatus      = 0xC0292014\n\tSTATUS_PCP_KEY_USAGE_POLICY_NOT_SUPPORTED                                 NTStatus      = 0xC0292015\n\tSTATUS_PCP_KEY_USAGE_POLICY_INVALID                                       NTStatus      = 0xC0292016\n\tSTATUS_PCP_SOFT_KEY_ERROR                                                 NTStatus      = 0xC0292017\n\tSTATUS_PCP_KEY_NOT_AUTHENTICATED                                          NTStatus      = 0xC0292018\n\tSTATUS_PCP_KEY_NOT_AIK                                                    NTStatus      = 0xC0292019\n\tSTATUS_PCP_KEY_NOT_SIGNING_KEY                                            NTStatus      = 0xC029201A\n\tSTATUS_PCP_LOCKED_OUT                                                     NTStatus      = 0xC029201B\n\tSTATUS_PCP_CLAIM_TYPE_NOT_SUPPORTED                                       NTStatus      = 0xC029201C\n\tSTATUS_PCP_TPM_VERSION_NOT_SUPPORTED                                      NTStatus      = 0xC029201D\n\tSTATUS_PCP_BUFFER_LENGTH_MISMATCH                                         NTStatus      = 0xC029201E\n\tSTATUS_PCP_IFX_RSA_KEY_CREATION_BLOCKED                                   NTStatus      = 0xC029201F\n\tSTATUS_PCP_TICKET_MISSING                                                 NTStatus      = 0xC0292020\n\tSTATUS_PCP_RAW_POLICY_NOT_SUPPORTED                                       NTStatus      = 0xC0292021\n\tSTATUS_PCP_KEY_HANDLE_INVALIDATED                                         NTStatus      = 0xC0292022\n\tSTATUS_PCP_UNSUPPORTED_PSS_SALT                                           NTStatus      = 0x40292023\n\tSTATUS_RTPM_CONTEXT_CONTINUE                                              NTStatus      = 0x00293000\n\tSTATUS_RTPM_CONTEXT_COMPLETE                                              NTStatus      = 0x00293001\n\tSTATUS_RTPM_NO_RESULT                                                     NTStatus      = 0xC0293002\n\tSTATUS_RTPM_PCR_READ_INCOMPLETE                                           NTStatus      = 0xC0293003\n\tSTATUS_RTPM_INVALID_CONTEXT                                               NTStatus      = 0xC0293004\n\tSTATUS_RTPM_UNSUPPORTED_CMD                                               NTStatus      = 0xC0293005\n\tSTATUS_TPM_ZERO_EXHAUST_ENABLED                                           NTStatus      = 0xC0294000\n\tSTATUS_HV_INVALID_HYPERCALL_CODE                                          NTStatus      = 0xC0350002\n\tSTATUS_HV_INVALID_HYPERCALL_INPUT                                         NTStatus      = 0xC0350003\n\tSTATUS_HV_INVALID_ALIGNMENT                                               NTStatus      = 0xC0350004\n\tSTATUS_HV_INVALID_PARAMETER                                               NTStatus      = 0xC0350005\n\tSTATUS_HV_ACCESS_DENIED                                                   NTStatus      = 0xC0350006\n\tSTATUS_HV_INVALID_PARTITION_STATE                                         NTStatus      = 0xC0350007\n\tSTATUS_HV_OPERATION_DENIED                                                NTStatus      = 0xC0350008\n\tSTATUS_HV_UNKNOWN_PROPERTY                                                NTStatus      = 0xC0350009\n\tSTATUS_HV_PROPERTY_VALUE_OUT_OF_RANGE                                     NTStatus      = 0xC035000A\n\tSTATUS_HV_INSUFFICIENT_MEMORY                                             NTStatus      = 0xC035000B\n\tSTATUS_HV_PARTITION_TOO_DEEP                                              NTStatus      = 0xC035000C\n\tSTATUS_HV_INVALID_PARTITION_ID                                            NTStatus      = 0xC035000D\n\tSTATUS_HV_INVALID_VP_INDEX                                                NTStatus      = 0xC035000E\n\tSTATUS_HV_INVALID_PORT_ID                                                 NTStatus      = 0xC0350011\n\tSTATUS_HV_INVALID_CONNECTION_ID                                           NTStatus      = 0xC0350012\n\tSTATUS_HV_INSUFFICIENT_BUFFERS                                            NTStatus      = 0xC0350013\n\tSTATUS_HV_NOT_ACKNOWLEDGED                                                NTStatus      = 0xC0350014\n\tSTATUS_HV_INVALID_VP_STATE                                                NTStatus      = 0xC0350015\n\tSTATUS_HV_ACKNOWLEDGED                                                    NTStatus      = 0xC0350016\n\tSTATUS_HV_INVALID_SAVE_RESTORE_STATE                                      NTStatus      = 0xC0350017\n\tSTATUS_HV_INVALID_SYNIC_STATE                                             NTStatus      = 0xC0350018\n\tSTATUS_HV_OBJECT_IN_USE                                                   NTStatus      = 0xC0350019\n\tSTATUS_HV_INVALID_PROXIMITY_DOMAIN_INFO                                   NTStatus      = 0xC035001A\n\tSTATUS_HV_NO_DATA                                                         NTStatus      = 0xC035001B\n\tSTATUS_HV_INACTIVE                                                        NTStatus      = 0xC035001C\n\tSTATUS_HV_NO_RESOURCES                                                    NTStatus      = 0xC035001D\n\tSTATUS_HV_FEATURE_UNAVAILABLE                                             NTStatus      = 0xC035001E\n\tSTATUS_HV_INSUFFICIENT_BUFFER                                             NTStatus      = 0xC0350033\n\tSTATUS_HV_INSUFFICIENT_DEVICE_DOMAINS                                     NTStatus      = 0xC0350038\n\tSTATUS_HV_CPUID_FEATURE_VALIDATION_ERROR                                  NTStatus      = 0xC035003C\n\tSTATUS_HV_CPUID_XSAVE_FEATURE_VALIDATION_ERROR                            NTStatus      = 0xC035003D\n\tSTATUS_HV_PROCESSOR_STARTUP_TIMEOUT                                       NTStatus      = 0xC035003E\n\tSTATUS_HV_SMX_ENABLED                                                     NTStatus      = 0xC035003F\n\tSTATUS_HV_INVALID_LP_INDEX                                                NTStatus      = 0xC0350041\n\tSTATUS_HV_INVALID_REGISTER_VALUE                                          NTStatus      = 0xC0350050\n\tSTATUS_HV_INVALID_VTL_STATE                                               NTStatus      = 0xC0350051\n\tSTATUS_HV_NX_NOT_DETECTED                                                 NTStatus      = 0xC0350055\n\tSTATUS_HV_INVALID_DEVICE_ID                                               NTStatus      = 0xC0350057\n\tSTATUS_HV_INVALID_DEVICE_STATE                                            NTStatus      = 0xC0350058\n\tSTATUS_HV_PENDING_PAGE_REQUESTS                                           NTStatus      = 0x00350059\n\tSTATUS_HV_PAGE_REQUEST_INVALID                                            NTStatus      = 0xC0350060\n\tSTATUS_HV_INVALID_CPU_GROUP_ID                                            NTStatus      = 0xC035006F\n\tSTATUS_HV_INVALID_CPU_GROUP_STATE                                         NTStatus      = 0xC0350070\n\tSTATUS_HV_OPERATION_FAILED                                                NTStatus      = 0xC0350071\n\tSTATUS_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE                             NTStatus      = 0xC0350072\n\tSTATUS_HV_INSUFFICIENT_ROOT_MEMORY                                        NTStatus      = 0xC0350073\n\tSTATUS_HV_NOT_PRESENT                                                     NTStatus      = 0xC0351000\n\tSTATUS_VID_DUPLICATE_HANDLER                                              NTStatus      = 0xC0370001\n\tSTATUS_VID_TOO_MANY_HANDLERS                                              NTStatus      = 0xC0370002\n\tSTATUS_VID_QUEUE_FULL                                                     NTStatus      = 0xC0370003\n\tSTATUS_VID_HANDLER_NOT_PRESENT                                            NTStatus      = 0xC0370004\n\tSTATUS_VID_INVALID_OBJECT_NAME                                            NTStatus      = 0xC0370005\n\tSTATUS_VID_PARTITION_NAME_TOO_LONG                                        NTStatus      = 0xC0370006\n\tSTATUS_VID_MESSAGE_QUEUE_NAME_TOO_LONG                                    NTStatus      = 0xC0370007\n\tSTATUS_VID_PARTITION_ALREADY_EXISTS                                       NTStatus      = 0xC0370008\n\tSTATUS_VID_PARTITION_DOES_NOT_EXIST                                       NTStatus      = 0xC0370009\n\tSTATUS_VID_PARTITION_NAME_NOT_FOUND                                       NTStatus      = 0xC037000A\n\tSTATUS_VID_MESSAGE_QUEUE_ALREADY_EXISTS                                   NTStatus      = 0xC037000B\n\tSTATUS_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT                                   NTStatus      = 0xC037000C\n\tSTATUS_VID_MB_STILL_REFERENCED                                            NTStatus      = 0xC037000D\n\tSTATUS_VID_CHILD_GPA_PAGE_SET_CORRUPTED                                   NTStatus      = 0xC037000E\n\tSTATUS_VID_INVALID_NUMA_SETTINGS                                          NTStatus      = 0xC037000F\n\tSTATUS_VID_INVALID_NUMA_NODE_INDEX                                        NTStatus      = 0xC0370010\n\tSTATUS_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED                          NTStatus      = 0xC0370011\n\tSTATUS_VID_INVALID_MEMORY_BLOCK_HANDLE                                    NTStatus      = 0xC0370012\n\tSTATUS_VID_PAGE_RANGE_OVERFLOW                                            NTStatus      = 0xC0370013\n\tSTATUS_VID_INVALID_MESSAGE_QUEUE_HANDLE                                   NTStatus      = 0xC0370014\n\tSTATUS_VID_INVALID_GPA_RANGE_HANDLE                                       NTStatus      = 0xC0370015\n\tSTATUS_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE                             NTStatus      = 0xC0370016\n\tSTATUS_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED                               NTStatus      = 0xC0370017\n\tSTATUS_VID_INVALID_PPM_HANDLE                                             NTStatus      = 0xC0370018\n\tSTATUS_VID_MBPS_ARE_LOCKED                                                NTStatus      = 0xC0370019\n\tSTATUS_VID_MESSAGE_QUEUE_CLOSED                                           NTStatus      = 0xC037001A\n\tSTATUS_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED                               NTStatus      = 0xC037001B\n\tSTATUS_VID_STOP_PENDING                                                   NTStatus      = 0xC037001C\n\tSTATUS_VID_INVALID_PROCESSOR_STATE                                        NTStatus      = 0xC037001D\n\tSTATUS_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT                                NTStatus      = 0xC037001E\n\tSTATUS_VID_KM_INTERFACE_ALREADY_INITIALIZED                               NTStatus      = 0xC037001F\n\tSTATUS_VID_MB_PROPERTY_ALREADY_SET_RESET                                  NTStatus      = 0xC0370020\n\tSTATUS_VID_MMIO_RANGE_DESTROYED                                           NTStatus      = 0xC0370021\n\tSTATUS_VID_INVALID_CHILD_GPA_PAGE_SET                                     NTStatus      = 0xC0370022\n\tSTATUS_VID_RESERVE_PAGE_SET_IS_BEING_USED                                 NTStatus      = 0xC0370023\n\tSTATUS_VID_RESERVE_PAGE_SET_TOO_SMALL                                     NTStatus      = 0xC0370024\n\tSTATUS_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE                         NTStatus      = 0xC0370025\n\tSTATUS_VID_MBP_COUNT_EXCEEDED_LIMIT                                       NTStatus      = 0xC0370026\n\tSTATUS_VID_SAVED_STATE_CORRUPT                                            NTStatus      = 0xC0370027\n\tSTATUS_VID_SAVED_STATE_UNRECOGNIZED_ITEM                                  NTStatus      = 0xC0370028\n\tSTATUS_VID_SAVED_STATE_INCOMPATIBLE                                       NTStatus      = 0xC0370029\n\tSTATUS_VID_VTL_ACCESS_DENIED                                              NTStatus      = 0xC037002A\n\tSTATUS_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED                              NTStatus      = 0x80370001\n\tSTATUS_IPSEC_BAD_SPI                                                      NTStatus      = 0xC0360001\n\tSTATUS_IPSEC_SA_LIFETIME_EXPIRED                                          NTStatus      = 0xC0360002\n\tSTATUS_IPSEC_WRONG_SA                                                     NTStatus      = 0xC0360003\n\tSTATUS_IPSEC_REPLAY_CHECK_FAILED                                          NTStatus      = 0xC0360004\n\tSTATUS_IPSEC_INVALID_PACKET                                               NTStatus      = 0xC0360005\n\tSTATUS_IPSEC_INTEGRITY_CHECK_FAILED                                       NTStatus      = 0xC0360006\n\tSTATUS_IPSEC_CLEAR_TEXT_DROP                                              NTStatus      = 0xC0360007\n\tSTATUS_IPSEC_AUTH_FIREWALL_DROP                                           NTStatus      = 0xC0360008\n\tSTATUS_IPSEC_THROTTLE_DROP                                                NTStatus      = 0xC0360009\n\tSTATUS_IPSEC_DOSP_BLOCK                                                   NTStatus      = 0xC0368000\n\tSTATUS_IPSEC_DOSP_RECEIVED_MULTICAST                                      NTStatus      = 0xC0368001\n\tSTATUS_IPSEC_DOSP_INVALID_PACKET                                          NTStatus      = 0xC0368002\n\tSTATUS_IPSEC_DOSP_STATE_LOOKUP_FAILED                                     NTStatus      = 0xC0368003\n\tSTATUS_IPSEC_DOSP_MAX_ENTRIES                                             NTStatus      = 0xC0368004\n\tSTATUS_IPSEC_DOSP_KEYMOD_NOT_ALLOWED                                      NTStatus      = 0xC0368005\n\tSTATUS_IPSEC_DOSP_MAX_PER_IP_RATELIMIT_QUEUES                             NTStatus      = 0xC0368006\n\tSTATUS_VOLMGR_INCOMPLETE_REGENERATION                                     NTStatus      = 0x80380001\n\tSTATUS_VOLMGR_INCOMPLETE_DISK_MIGRATION                                   NTStatus      = 0x80380002\n\tSTATUS_VOLMGR_DATABASE_FULL                                               NTStatus      = 0xC0380001\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_CORRUPTED                                NTStatus      = 0xC0380002\n\tSTATUS_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC                              NTStatus      = 0xC0380003\n\tSTATUS_VOLMGR_PACK_CONFIG_UPDATE_FAILED                                   NTStatus      = 0xC0380004\n\tSTATUS_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME                             NTStatus      = 0xC0380005\n\tSTATUS_VOLMGR_DISK_DUPLICATE                                              NTStatus      = 0xC0380006\n\tSTATUS_VOLMGR_DISK_DYNAMIC                                                NTStatus      = 0xC0380007\n\tSTATUS_VOLMGR_DISK_ID_INVALID                                             NTStatus      = 0xC0380008\n\tSTATUS_VOLMGR_DISK_INVALID                                                NTStatus      = 0xC0380009\n\tSTATUS_VOLMGR_DISK_LAST_VOTER                                             NTStatus      = 0xC038000A\n\tSTATUS_VOLMGR_DISK_LAYOUT_INVALID                                         NTStatus      = 0xC038000B\n\tSTATUS_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS              NTStatus      = 0xC038000C\n\tSTATUS_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED                            NTStatus      = 0xC038000D\n\tSTATUS_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL                            NTStatus      = 0xC038000E\n\tSTATUS_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS              NTStatus      = 0xC038000F\n\tSTATUS_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS                             NTStatus      = 0xC0380010\n\tSTATUS_VOLMGR_DISK_MISSING                                                NTStatus      = 0xC0380011\n\tSTATUS_VOLMGR_DISK_NOT_EMPTY                                              NTStatus      = 0xC0380012\n\tSTATUS_VOLMGR_DISK_NOT_ENOUGH_SPACE                                       NTStatus      = 0xC0380013\n\tSTATUS_VOLMGR_DISK_REVECTORING_FAILED                                     NTStatus      = 0xC0380014\n\tSTATUS_VOLMGR_DISK_SECTOR_SIZE_INVALID                                    NTStatus      = 0xC0380015\n\tSTATUS_VOLMGR_DISK_SET_NOT_CONTAINED                                      NTStatus      = 0xC0380016\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS                               NTStatus      = 0xC0380017\n\tSTATUS_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES                                NTStatus      = 0xC0380018\n\tSTATUS_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED                                  NTStatus      = 0xC0380019\n\tSTATUS_VOLMGR_EXTENT_ALREADY_USED                                         NTStatus      = 0xC038001A\n\tSTATUS_VOLMGR_EXTENT_NOT_CONTIGUOUS                                       NTStatus      = 0xC038001B\n\tSTATUS_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION                                 NTStatus      = 0xC038001C\n\tSTATUS_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED                                   NTStatus      = 0xC038001D\n\tSTATUS_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION                               NTStatus      = 0xC038001E\n\tSTATUS_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH                          NTStatus      = 0xC038001F\n\tSTATUS_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED                                NTStatus      = 0xC0380020\n\tSTATUS_VOLMGR_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0380021\n\tSTATUS_VOLMGR_MAXIMUM_REGISTERED_USERS                                    NTStatus      = 0xC0380022\n\tSTATUS_VOLMGR_MEMBER_IN_SYNC                                              NTStatus      = 0xC0380023\n\tSTATUS_VOLMGR_MEMBER_INDEX_DUPLICATE                                      NTStatus      = 0xC0380024\n\tSTATUS_VOLMGR_MEMBER_INDEX_INVALID                                        NTStatus      = 0xC0380025\n\tSTATUS_VOLMGR_MEMBER_MISSING                                              NTStatus      = 0xC0380026\n\tSTATUS_VOLMGR_MEMBER_NOT_DETACHED                                         NTStatus      = 0xC0380027\n\tSTATUS_VOLMGR_MEMBER_REGENERATING                                         NTStatus      = 0xC0380028\n\tSTATUS_VOLMGR_ALL_DISKS_FAILED                                            NTStatus      = 0xC0380029\n\tSTATUS_VOLMGR_NO_REGISTERED_USERS                                         NTStatus      = 0xC038002A\n\tSTATUS_VOLMGR_NO_SUCH_USER                                                NTStatus      = 0xC038002B\n\tSTATUS_VOLMGR_NOTIFICATION_RESET                                          NTStatus      = 0xC038002C\n\tSTATUS_VOLMGR_NUMBER_OF_MEMBERS_INVALID                                   NTStatus      = 0xC038002D\n\tSTATUS_VOLMGR_NUMBER_OF_PLEXES_INVALID                                    NTStatus      = 0xC038002E\n\tSTATUS_VOLMGR_PACK_DUPLICATE                                              NTStatus      = 0xC038002F\n\tSTATUS_VOLMGR_PACK_ID_INVALID                                             NTStatus      = 0xC0380030\n\tSTATUS_VOLMGR_PACK_INVALID                                                NTStatus      = 0xC0380031\n\tSTATUS_VOLMGR_PACK_NAME_INVALID                                           NTStatus      = 0xC0380032\n\tSTATUS_VOLMGR_PACK_OFFLINE                                                NTStatus      = 0xC0380033\n\tSTATUS_VOLMGR_PACK_HAS_QUORUM                                             NTStatus      = 0xC0380034\n\tSTATUS_VOLMGR_PACK_WITHOUT_QUORUM                                         NTStatus      = 0xC0380035\n\tSTATUS_VOLMGR_PARTITION_STYLE_INVALID                                     NTStatus      = 0xC0380036\n\tSTATUS_VOLMGR_PARTITION_UPDATE_FAILED                                     NTStatus      = 0xC0380037\n\tSTATUS_VOLMGR_PLEX_IN_SYNC                                                NTStatus      = 0xC0380038\n\tSTATUS_VOLMGR_PLEX_INDEX_DUPLICATE                                        NTStatus      = 0xC0380039\n\tSTATUS_VOLMGR_PLEX_INDEX_INVALID                                          NTStatus      = 0xC038003A\n\tSTATUS_VOLMGR_PLEX_LAST_ACTIVE                                            NTStatus      = 0xC038003B\n\tSTATUS_VOLMGR_PLEX_MISSING                                                NTStatus      = 0xC038003C\n\tSTATUS_VOLMGR_PLEX_REGENERATING                                           NTStatus      = 0xC038003D\n\tSTATUS_VOLMGR_PLEX_TYPE_INVALID                                           NTStatus      = 0xC038003E\n\tSTATUS_VOLMGR_PLEX_NOT_RAID5                                              NTStatus      = 0xC038003F\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE                                             NTStatus      = 0xC0380040\n\tSTATUS_VOLMGR_STRUCTURE_SIZE_INVALID                                      NTStatus      = 0xC0380041\n\tSTATUS_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS                              NTStatus      = 0xC0380042\n\tSTATUS_VOLMGR_TRANSACTION_IN_PROGRESS                                     NTStatus      = 0xC0380043\n\tSTATUS_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE                               NTStatus      = 0xC0380044\n\tSTATUS_VOLMGR_VOLUME_CONTAINS_MISSING_DISK                                NTStatus      = 0xC0380045\n\tSTATUS_VOLMGR_VOLUME_ID_INVALID                                           NTStatus      = 0xC0380046\n\tSTATUS_VOLMGR_VOLUME_LENGTH_INVALID                                       NTStatus      = 0xC0380047\n\tSTATUS_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE                      NTStatus      = 0xC0380048\n\tSTATUS_VOLMGR_VOLUME_NOT_MIRRORED                                         NTStatus      = 0xC0380049\n\tSTATUS_VOLMGR_VOLUME_NOT_RETAINED                                         NTStatus      = 0xC038004A\n\tSTATUS_VOLMGR_VOLUME_OFFLINE                                              NTStatus      = 0xC038004B\n\tSTATUS_VOLMGR_VOLUME_RETAINED                                             NTStatus      = 0xC038004C\n\tSTATUS_VOLMGR_NUMBER_OF_EXTENTS_INVALID                                   NTStatus      = 0xC038004D\n\tSTATUS_VOLMGR_DIFFERENT_SECTOR_SIZE                                       NTStatus      = 0xC038004E\n\tSTATUS_VOLMGR_BAD_BOOT_DISK                                               NTStatus      = 0xC038004F\n\tSTATUS_VOLMGR_PACK_CONFIG_OFFLINE                                         NTStatus      = 0xC0380050\n\tSTATUS_VOLMGR_PACK_CONFIG_ONLINE                                          NTStatus      = 0xC0380051\n\tSTATUS_VOLMGR_NOT_PRIMARY_PACK                                            NTStatus      = 0xC0380052\n\tSTATUS_VOLMGR_PACK_LOG_UPDATE_FAILED                                      NTStatus      = 0xC0380053\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID                             NTStatus      = 0xC0380054\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID                           NTStatus      = 0xC0380055\n\tSTATUS_VOLMGR_VOLUME_MIRRORED                                             NTStatus      = 0xC0380056\n\tSTATUS_VOLMGR_PLEX_NOT_SIMPLE_SPANNED                                     NTStatus      = 0xC0380057\n\tSTATUS_VOLMGR_NO_VALID_LOG_COPIES                                         NTStatus      = 0xC0380058\n\tSTATUS_VOLMGR_PRIMARY_PACK_PRESENT                                        NTStatus      = 0xC0380059\n\tSTATUS_VOLMGR_NUMBER_OF_DISKS_INVALID                                     NTStatus      = 0xC038005A\n\tSTATUS_VOLMGR_MIRROR_NOT_SUPPORTED                                        NTStatus      = 0xC038005B\n\tSTATUS_VOLMGR_RAID5_NOT_SUPPORTED                                         NTStatus      = 0xC038005C\n\tSTATUS_BCD_NOT_ALL_ENTRIES_IMPORTED                                       NTStatus      = 0x80390001\n\tSTATUS_BCD_TOO_MANY_ELEMENTS                                              NTStatus      = 0xC0390002\n\tSTATUS_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED                                   NTStatus      = 0x80390003\n\tSTATUS_VHD_DRIVE_FOOTER_MISSING                                           NTStatus      = 0xC03A0001\n\tSTATUS_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH                                 NTStatus      = 0xC03A0002\n\tSTATUS_VHD_DRIVE_FOOTER_CORRUPT                                           NTStatus      = 0xC03A0003\n\tSTATUS_VHD_FORMAT_UNKNOWN                                                 NTStatus      = 0xC03A0004\n\tSTATUS_VHD_FORMAT_UNSUPPORTED_VERSION                                     NTStatus      = 0xC03A0005\n\tSTATUS_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH                                NTStatus      = 0xC03A0006\n\tSTATUS_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION                              NTStatus      = 0xC03A0007\n\tSTATUS_VHD_SPARSE_HEADER_CORRUPT                                          NTStatus      = 0xC03A0008\n\tSTATUS_VHD_BLOCK_ALLOCATION_FAILURE                                       NTStatus      = 0xC03A0009\n\tSTATUS_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT                                 NTStatus      = 0xC03A000A\n\tSTATUS_VHD_INVALID_BLOCK_SIZE                                             NTStatus      = 0xC03A000B\n\tSTATUS_VHD_BITMAP_MISMATCH                                                NTStatus      = 0xC03A000C\n\tSTATUS_VHD_PARENT_VHD_NOT_FOUND                                           NTStatus      = 0xC03A000D\n\tSTATUS_VHD_CHILD_PARENT_ID_MISMATCH                                       NTStatus      = 0xC03A000E\n\tSTATUS_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH                                NTStatus      = 0xC03A000F\n\tSTATUS_VHD_METADATA_READ_FAILURE                                          NTStatus      = 0xC03A0010\n\tSTATUS_VHD_METADATA_WRITE_FAILURE                                         NTStatus      = 0xC03A0011\n\tSTATUS_VHD_INVALID_SIZE                                                   NTStatus      = 0xC03A0012\n\tSTATUS_VHD_INVALID_FILE_SIZE                                              NTStatus      = 0xC03A0013\n\tSTATUS_VIRTDISK_PROVIDER_NOT_FOUND                                        NTStatus      = 0xC03A0014\n\tSTATUS_VIRTDISK_NOT_VIRTUAL_DISK                                          NTStatus      = 0xC03A0015\n\tSTATUS_VHD_PARENT_VHD_ACCESS_DENIED                                       NTStatus      = 0xC03A0016\n\tSTATUS_VHD_CHILD_PARENT_SIZE_MISMATCH                                     NTStatus      = 0xC03A0017\n\tSTATUS_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED                              NTStatus      = 0xC03A0018\n\tSTATUS_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT                             NTStatus      = 0xC03A0019\n\tSTATUS_VIRTUAL_DISK_LIMITATION                                            NTStatus      = 0xC03A001A\n\tSTATUS_VHD_INVALID_TYPE                                                   NTStatus      = 0xC03A001B\n\tSTATUS_VHD_INVALID_STATE                                                  NTStatus      = 0xC03A001C\n\tSTATUS_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE                              NTStatus      = 0xC03A001D\n\tSTATUS_VIRTDISK_DISK_ALREADY_OWNED                                        NTStatus      = 0xC03A001E\n\tSTATUS_VIRTDISK_DISK_ONLINE_AND_WRITABLE                                  NTStatus      = 0xC03A001F\n\tSTATUS_CTLOG_TRACKING_NOT_INITIALIZED                                     NTStatus      = 0xC03A0020\n\tSTATUS_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE                                NTStatus      = 0xC03A0021\n\tSTATUS_CTLOG_VHD_CHANGED_OFFLINE                                          NTStatus      = 0xC03A0022\n\tSTATUS_CTLOG_INVALID_TRACKING_STATE                                       NTStatus      = 0xC03A0023\n\tSTATUS_CTLOG_INCONSISTENT_TRACKING_FILE                                   NTStatus      = 0xC03A0024\n\tSTATUS_VHD_METADATA_FULL                                                  NTStatus      = 0xC03A0028\n\tSTATUS_VHD_INVALID_CHANGE_TRACKING_ID                                     NTStatus      = 0xC03A0029\n\tSTATUS_VHD_CHANGE_TRACKING_DISABLED                                       NTStatus      = 0xC03A002A\n\tSTATUS_VHD_MISSING_CHANGE_TRACKING_INFORMATION                            NTStatus      = 0xC03A0030\n\tSTATUS_VHD_RESIZE_WOULD_TRUNCATE_DATA                                     NTStatus      = 0xC03A0031\n\tSTATUS_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE                         NTStatus      = 0xC03A0032\n\tSTATUS_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE                       NTStatus      = 0xC03A0033\n\tSTATUS_QUERY_STORAGE_ERROR                                                NTStatus      = 0x803A0001\n\tSTATUS_GDI_HANDLE_LEAK                                                    NTStatus      = 0x803F0001\n\tSTATUS_RKF_KEY_NOT_FOUND                                                  NTStatus      = 0xC0400001\n\tSTATUS_RKF_DUPLICATE_KEY                                                  NTStatus      = 0xC0400002\n\tSTATUS_RKF_BLOB_FULL                                                      NTStatus      = 0xC0400003\n\tSTATUS_RKF_STORE_FULL                                                     NTStatus      = 0xC0400004\n\tSTATUS_RKF_FILE_BLOCKED                                                   NTStatus      = 0xC0400005\n\tSTATUS_RKF_ACTIVE_KEY                                                     NTStatus      = 0xC0400006\n\tSTATUS_RDBSS_RESTART_OPERATION                                            NTStatus      = 0xC0410001\n\tSTATUS_RDBSS_CONTINUE_OPERATION                                           NTStatus      = 0xC0410002\n\tSTATUS_RDBSS_POST_OPERATION                                               NTStatus      = 0xC0410003\n\tSTATUS_RDBSS_RETRY_LOOKUP                                                 NTStatus      = 0xC0410004\n\tSTATUS_BTH_ATT_INVALID_HANDLE                                             NTStatus      = 0xC0420001\n\tSTATUS_BTH_ATT_READ_NOT_PERMITTED                                         NTStatus      = 0xC0420002\n\tSTATUS_BTH_ATT_WRITE_NOT_PERMITTED                                        NTStatus      = 0xC0420003\n\tSTATUS_BTH_ATT_INVALID_PDU                                                NTStatus      = 0xC0420004\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHENTICATION                                NTStatus      = 0xC0420005\n\tSTATUS_BTH_ATT_REQUEST_NOT_SUPPORTED                                      NTStatus      = 0xC0420006\n\tSTATUS_BTH_ATT_INVALID_OFFSET                                             NTStatus      = 0xC0420007\n\tSTATUS_BTH_ATT_INSUFFICIENT_AUTHORIZATION                                 NTStatus      = 0xC0420008\n\tSTATUS_BTH_ATT_PREPARE_QUEUE_FULL                                         NTStatus      = 0xC0420009\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_FOUND                                        NTStatus      = 0xC042000A\n\tSTATUS_BTH_ATT_ATTRIBUTE_NOT_LONG                                         NTStatus      = 0xC042000B\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE                           NTStatus      = 0xC042000C\n\tSTATUS_BTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH                             NTStatus      = 0xC042000D\n\tSTATUS_BTH_ATT_UNLIKELY                                                   NTStatus      = 0xC042000E\n\tSTATUS_BTH_ATT_INSUFFICIENT_ENCRYPTION                                    NTStatus      = 0xC042000F\n\tSTATUS_BTH_ATT_UNSUPPORTED_GROUP_TYPE                                     NTStatus      = 0xC0420010\n\tSTATUS_BTH_ATT_INSUFFICIENT_RESOURCES                                     NTStatus      = 0xC0420011\n\tSTATUS_BTH_ATT_UNKNOWN_ERROR                                              NTStatus      = 0xC0421000\n\tSTATUS_SECUREBOOT_ROLLBACK_DETECTED                                       NTStatus      = 0xC0430001\n\tSTATUS_SECUREBOOT_POLICY_VIOLATION                                        NTStatus      = 0xC0430002\n\tSTATUS_SECUREBOOT_INVALID_POLICY                                          NTStatus      = 0xC0430003\n\tSTATUS_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND                              NTStatus      = 0xC0430004\n\tSTATUS_SECUREBOOT_POLICY_NOT_SIGNED                                       NTStatus      = 0xC0430005\n\tSTATUS_SECUREBOOT_NOT_ENABLED                                             NTStatus      = 0x80430006\n\tSTATUS_SECUREBOOT_FILE_REPLACED                                           NTStatus      = 0xC0430007\n\tSTATUS_SECUREBOOT_POLICY_NOT_AUTHORIZED                                   NTStatus      = 0xC0430008\n\tSTATUS_SECUREBOOT_POLICY_UNKNOWN                                          NTStatus      = 0xC0430009\n\tSTATUS_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION                      NTStatus      = 0xC043000A\n\tSTATUS_SECUREBOOT_PLATFORM_ID_MISMATCH                                    NTStatus      = 0xC043000B\n\tSTATUS_SECUREBOOT_POLICY_ROLLBACK_DETECTED                                NTStatus      = 0xC043000C\n\tSTATUS_SECUREBOOT_POLICY_UPGRADE_MISMATCH                                 NTStatus      = 0xC043000D\n\tSTATUS_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING                            NTStatus      = 0xC043000E\n\tSTATUS_SECUREBOOT_NOT_BASE_POLICY                                         NTStatus      = 0xC043000F\n\tSTATUS_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY                                 NTStatus      = 0xC0430010\n\tSTATUS_PLATFORM_MANIFEST_NOT_AUTHORIZED                                   NTStatus      = 0xC0EB0001\n\tSTATUS_PLATFORM_MANIFEST_INVALID                                          NTStatus      = 0xC0EB0002\n\tSTATUS_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED                              NTStatus      = 0xC0EB0003\n\tSTATUS_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED                           NTStatus      = 0xC0EB0004\n\tSTATUS_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND                              NTStatus      = 0xC0EB0005\n\tSTATUS_PLATFORM_MANIFEST_NOT_ACTIVE                                       NTStatus      = 0xC0EB0006\n\tSTATUS_PLATFORM_MANIFEST_NOT_SIGNED                                       NTStatus      = 0xC0EB0007\n\tSTATUS_SYSTEM_INTEGRITY_ROLLBACK_DETECTED                                 NTStatus      = 0xC0E90001\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_VIOLATION                                  NTStatus      = 0xC0E90002\n\tSTATUS_SYSTEM_INTEGRITY_INVALID_POLICY                                    NTStatus      = 0xC0E90003\n\tSTATUS_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED                                 NTStatus      = 0xC0E90004\n\tSTATUS_SYSTEM_INTEGRITY_TOO_MANY_POLICIES                                 NTStatus      = 0xC0E90005\n\tSTATUS_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED                NTStatus      = 0xC0E90006\n\tSTATUS_NO_APPLICABLE_APP_LICENSES_FOUND                                   NTStatus      = 0xC0EA0001\n\tSTATUS_CLIP_LICENSE_NOT_FOUND                                             NTStatus      = 0xC0EA0002\n\tSTATUS_CLIP_DEVICE_LICENSE_MISSING                                        NTStatus      = 0xC0EA0003\n\tSTATUS_CLIP_LICENSE_INVALID_SIGNATURE                                     NTStatus      = 0xC0EA0004\n\tSTATUS_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID                          NTStatus      = 0xC0EA0005\n\tSTATUS_CLIP_LICENSE_EXPIRED                                               NTStatus      = 0xC0EA0006\n\tSTATUS_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE                              NTStatus      = 0xC0EA0007\n\tSTATUS_CLIP_LICENSE_NOT_SIGNED                                            NTStatus      = 0xC0EA0008\n\tSTATUS_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE                          NTStatus      = 0xC0EA0009\n\tSTATUS_CLIP_LICENSE_DEVICE_ID_MISMATCH                                    NTStatus      = 0xC0EA000A\n\tSTATUS_AUDIO_ENGINE_NODE_NOT_FOUND                                        NTStatus      = 0xC0440001\n\tSTATUS_HDAUDIO_EMPTY_CONNECTION_LIST                                      NTStatus      = 0xC0440002\n\tSTATUS_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED                              NTStatus      = 0xC0440003\n\tSTATUS_HDAUDIO_NO_LOGICAL_DEVICES_CREATED                                 NTStatus      = 0xC0440004\n\tSTATUS_HDAUDIO_NULL_LINKED_LIST_ENTRY                                     NTStatus      = 0xC0440005\n\tSTATUS_SPACES_REPAIRED                                                    NTStatus      = 0x00E70000\n\tSTATUS_SPACES_PAUSE                                                       NTStatus      = 0x00E70001\n\tSTATUS_SPACES_COMPLETE                                                    NTStatus      = 0x00E70002\n\tSTATUS_SPACES_REDIRECT                                                    NTStatus      = 0x00E70003\n\tSTATUS_SPACES_FAULT_DOMAIN_TYPE_INVALID                                   NTStatus      = 0xC0E70001\n\tSTATUS_SPACES_RESILIENCY_TYPE_INVALID                                     NTStatus      = 0xC0E70003\n\tSTATUS_SPACES_DRIVE_SECTOR_SIZE_INVALID                                   NTStatus      = 0xC0E70004\n\tSTATUS_SPACES_DRIVE_REDUNDANCY_INVALID                                    NTStatus      = 0xC0E70006\n\tSTATUS_SPACES_NUMBER_OF_DATA_COPIES_INVALID                               NTStatus      = 0xC0E70007\n\tSTATUS_SPACES_INTERLEAVE_LENGTH_INVALID                                   NTStatus      = 0xC0E70009\n\tSTATUS_SPACES_NUMBER_OF_COLUMNS_INVALID                                   NTStatus      = 0xC0E7000A\n\tSTATUS_SPACES_NOT_ENOUGH_DRIVES                                           NTStatus      = 0xC0E7000B\n\tSTATUS_SPACES_EXTENDED_ERROR                                              NTStatus      = 0xC0E7000C\n\tSTATUS_SPACES_PROVISIONING_TYPE_INVALID                                   NTStatus      = 0xC0E7000D\n\tSTATUS_SPACES_ALLOCATION_SIZE_INVALID                                     NTStatus      = 0xC0E7000E\n\tSTATUS_SPACES_ENCLOSURE_AWARE_INVALID                                     NTStatus      = 0xC0E7000F\n\tSTATUS_SPACES_WRITE_CACHE_SIZE_INVALID                                    NTStatus      = 0xC0E70010\n\tSTATUS_SPACES_NUMBER_OF_GROUPS_INVALID                                    NTStatus      = 0xC0E70011\n\tSTATUS_SPACES_DRIVE_OPERATIONAL_STATE_INVALID                             NTStatus      = 0xC0E70012\n\tSTATUS_SPACES_UPDATE_COLUMN_STATE                                         NTStatus      = 0xC0E70013\n\tSTATUS_SPACES_MAP_REQUIRED                                                NTStatus      = 0xC0E70014\n\tSTATUS_SPACES_UNSUPPORTED_VERSION                                         NTStatus      = 0xC0E70015\n\tSTATUS_SPACES_CORRUPT_METADATA                                            NTStatus      = 0xC0E70016\n\tSTATUS_SPACES_DRT_FULL                                                    NTStatus      = 0xC0E70017\n\tSTATUS_SPACES_INCONSISTENCY                                               NTStatus      = 0xC0E70018\n\tSTATUS_SPACES_LOG_NOT_READY                                               NTStatus      = 0xC0E70019\n\tSTATUS_SPACES_NO_REDUNDANCY                                               NTStatus      = 0xC0E7001A\n\tSTATUS_SPACES_DRIVE_NOT_READY                                             NTStatus      = 0xC0E7001B\n\tSTATUS_SPACES_DRIVE_SPLIT                                                 NTStatus      = 0xC0E7001C\n\tSTATUS_SPACES_DRIVE_LOST_DATA                                             NTStatus      = 0xC0E7001D\n\tSTATUS_SPACES_ENTRY_INCOMPLETE                                            NTStatus      = 0xC0E7001E\n\tSTATUS_SPACES_ENTRY_INVALID                                               NTStatus      = 0xC0E7001F\n\tSTATUS_SPACES_MARK_DIRTY                                                  NTStatus      = 0xC0E70020\n\tSTATUS_VOLSNAP_BOOTFILE_NOT_VALID                                         NTStatus      = 0xC0500003\n\tSTATUS_VOLSNAP_ACTIVATION_TIMEOUT                                         NTStatus      = 0xC0500004\n\tSTATUS_IO_PREEMPTED                                                       NTStatus      = 0xC0510001\n\tSTATUS_SVHDX_ERROR_STORED                                                 NTStatus      = 0xC05C0000\n\tSTATUS_SVHDX_ERROR_NOT_AVAILABLE                                          NTStatus      = 0xC05CFF00\n\tSTATUS_SVHDX_UNIT_ATTENTION_AVAILABLE                                     NTStatus      = 0xC05CFF01\n\tSTATUS_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED                         NTStatus      = 0xC05CFF02\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED                        NTStatus      = 0xC05CFF03\n\tSTATUS_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED                         NTStatus      = 0xC05CFF04\n\tSTATUS_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED                       NTStatus      = 0xC05CFF05\n\tSTATUS_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED                  NTStatus      = 0xC05CFF06\n\tSTATUS_SVHDX_RESERVATION_CONFLICT                                         NTStatus      = 0xC05CFF07\n\tSTATUS_SVHDX_WRONG_FILE_TYPE                                              NTStatus      = 0xC05CFF08\n\tSTATUS_SVHDX_VERSION_MISMATCH                                             NTStatus      = 0xC05CFF09\n\tSTATUS_VHD_SHARED                                                         NTStatus      = 0xC05CFF0A\n\tSTATUS_SVHDX_NO_INITIATOR                                                 NTStatus      = 0xC05CFF0B\n\tSTATUS_VHDSET_BACKING_STORAGE_NOT_FOUND                                   NTStatus      = 0xC05CFF0C\n\tSTATUS_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP                              NTStatus      = 0xC05D0000\n\tSTATUS_SMB_BAD_CLUSTER_DIALECT                                            NTStatus      = 0xC05D0001\n\tSTATUS_SMB_GUEST_LOGON_BLOCKED                                            NTStatus      = 0xC05D0002\n\tSTATUS_SECCORE_INVALID_COMMAND                                            NTStatus      = 0xC0E80000\n\tSTATUS_VSM_NOT_INITIALIZED                                                NTStatus      = 0xC0450000\n\tSTATUS_VSM_DMA_PROTECTION_NOT_IN_USE                                      NTStatus      = 0xC0450001\n\tSTATUS_APPEXEC_CONDITION_NOT_SATISFIED                                    NTStatus      = 0xC0EC0000\n\tSTATUS_APPEXEC_HANDLE_INVALIDATED                                         NTStatus      = 0xC0EC0001\n\tSTATUS_APPEXEC_INVALID_HOST_GENERATION                                    NTStatus      = 0xC0EC0002\n\tSTATUS_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION                            NTStatus      = 0xC0EC0003\n\tSTATUS_APPEXEC_INVALID_HOST_STATE                                         NTStatus      = 0xC0EC0004\n\tSTATUS_APPEXEC_NO_DONOR                                                   NTStatus      = 0xC0EC0005\n\tSTATUS_APPEXEC_HOST_ID_MISMATCH                                           NTStatus      = 0xC0EC0006\n\tSTATUS_APPEXEC_UNKNOWN_USER                                               NTStatus      = 0xC0EC0007\n)\n"
  },
  {
    "path": "gossh/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": "gossh/sys/windows/zsyscall_windows.go",
    "content": "// Code generated by 'go generate'; DO NOT EDIT.\n\npackage windows\n\nimport (\n\t\"syscall\"\n\t\"unsafe\"\n)\n\nvar _ unsafe.Pointer\n\n// Do the interface allocations only once for common\n// Errno values.\nconst (\n\terrnoERROR_IO_PENDING = 997\n)\n\nvar (\n\terrERROR_IO_PENDING error = syscall.Errno(errnoERROR_IO_PENDING)\n\terrERROR_EINVAL     error = syscall.EINVAL\n)\n\n// errnoErr returns common boxed Errno values, to prevent\n// allocations at runtime.\nfunc errnoErr(e syscall.Errno) error {\n\tswitch e {\n\tcase 0:\n\t\treturn errERROR_EINVAL\n\tcase errnoERROR_IO_PENDING:\n\t\treturn errERROR_IO_PENDING\n\t}\n\t// TODO: add more here, after collecting data on the common\n\t// error values see on Windows. (perhaps when running\n\t// all.bat?)\n\treturn e\n}\n\nvar (\n\tmodCfgMgr32 = NewLazySystemDLL(\"CfgMgr32.dll\")\n\tmodadvapi32 = NewLazySystemDLL(\"advapi32.dll\")\n\tmodcrypt32  = NewLazySystemDLL(\"crypt32.dll\")\n\tmoddnsapi   = NewLazySystemDLL(\"dnsapi.dll\")\n\tmoddwmapi   = NewLazySystemDLL(\"dwmapi.dll\")\n\tmodiphlpapi = NewLazySystemDLL(\"iphlpapi.dll\")\n\tmodkernel32 = NewLazySystemDLL(\"kernel32.dll\")\n\tmodmswsock  = NewLazySystemDLL(\"mswsock.dll\")\n\tmodnetapi32 = NewLazySystemDLL(\"netapi32.dll\")\n\tmodntdll    = NewLazySystemDLL(\"ntdll.dll\")\n\tmodole32    = NewLazySystemDLL(\"ole32.dll\")\n\tmodpsapi    = NewLazySystemDLL(\"psapi.dll\")\n\tmodsechost  = NewLazySystemDLL(\"sechost.dll\")\n\tmodsecur32  = NewLazySystemDLL(\"secur32.dll\")\n\tmodsetupapi = NewLazySystemDLL(\"setupapi.dll\")\n\tmodshell32  = NewLazySystemDLL(\"shell32.dll\")\n\tmoduser32   = NewLazySystemDLL(\"user32.dll\")\n\tmoduserenv  = NewLazySystemDLL(\"userenv.dll\")\n\tmodversion  = NewLazySystemDLL(\"version.dll\")\n\tmodwinmm    = NewLazySystemDLL(\"winmm.dll\")\n\tmodwintrust = NewLazySystemDLL(\"wintrust.dll\")\n\tmodws2_32   = NewLazySystemDLL(\"ws2_32.dll\")\n\tmodwtsapi32 = NewLazySystemDLL(\"wtsapi32.dll\")\n\n\tprocCM_Get_DevNode_Status                                = modCfgMgr32.NewProc(\"CM_Get_DevNode_Status\")\n\tprocCM_Get_Device_Interface_ListW                        = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_ListW\")\n\tprocCM_Get_Device_Interface_List_SizeW                   = modCfgMgr32.NewProc(\"CM_Get_Device_Interface_List_SizeW\")\n\tprocCM_MapCrToWin32Err                                   = modCfgMgr32.NewProc(\"CM_MapCrToWin32Err\")\n\tprocAdjustTokenGroups                                    = modadvapi32.NewProc(\"AdjustTokenGroups\")\n\tprocAdjustTokenPrivileges                                = modadvapi32.NewProc(\"AdjustTokenPrivileges\")\n\tprocAllocateAndInitializeSid                             = modadvapi32.NewProc(\"AllocateAndInitializeSid\")\n\tprocBuildSecurityDescriptorW                             = modadvapi32.NewProc(\"BuildSecurityDescriptorW\")\n\tprocChangeServiceConfig2W                                = modadvapi32.NewProc(\"ChangeServiceConfig2W\")\n\tprocChangeServiceConfigW                                 = modadvapi32.NewProc(\"ChangeServiceConfigW\")\n\tprocCheckTokenMembership                                 = modadvapi32.NewProc(\"CheckTokenMembership\")\n\tprocCloseServiceHandle                                   = modadvapi32.NewProc(\"CloseServiceHandle\")\n\tprocControlService                                       = modadvapi32.NewProc(\"ControlService\")\n\tprocConvertSecurityDescriptorToStringSecurityDescriptorW = modadvapi32.NewProc(\"ConvertSecurityDescriptorToStringSecurityDescriptorW\")\n\tprocConvertSidToStringSidW                               = modadvapi32.NewProc(\"ConvertSidToStringSidW\")\n\tprocConvertStringSecurityDescriptorToSecurityDescriptorW = modadvapi32.NewProc(\"ConvertStringSecurityDescriptorToSecurityDescriptorW\")\n\tprocConvertStringSidToSidW                               = modadvapi32.NewProc(\"ConvertStringSidToSidW\")\n\tprocCopySid                                              = modadvapi32.NewProc(\"CopySid\")\n\tprocCreateProcessAsUserW                                 = modadvapi32.NewProc(\"CreateProcessAsUserW\")\n\tprocCreateServiceW                                       = modadvapi32.NewProc(\"CreateServiceW\")\n\tprocCreateWellKnownSid                                   = modadvapi32.NewProc(\"CreateWellKnownSid\")\n\tprocCryptAcquireContextW                                 = modadvapi32.NewProc(\"CryptAcquireContextW\")\n\tprocCryptGenRandom                                       = modadvapi32.NewProc(\"CryptGenRandom\")\n\tprocCryptReleaseContext                                  = modadvapi32.NewProc(\"CryptReleaseContext\")\n\tprocDeleteService                                        = modadvapi32.NewProc(\"DeleteService\")\n\tprocDeregisterEventSource                                = modadvapi32.NewProc(\"DeregisterEventSource\")\n\tprocDuplicateTokenEx                                     = modadvapi32.NewProc(\"DuplicateTokenEx\")\n\tprocEnumDependentServicesW                               = modadvapi32.NewProc(\"EnumDependentServicesW\")\n\tprocEnumServicesStatusExW                                = modadvapi32.NewProc(\"EnumServicesStatusExW\")\n\tprocEqualSid                                             = modadvapi32.NewProc(\"EqualSid\")\n\tprocFreeSid                                              = modadvapi32.NewProc(\"FreeSid\")\n\tprocGetLengthSid                                         = modadvapi32.NewProc(\"GetLengthSid\")\n\tprocGetNamedSecurityInfoW                                = modadvapi32.NewProc(\"GetNamedSecurityInfoW\")\n\tprocGetSecurityDescriptorControl                         = modadvapi32.NewProc(\"GetSecurityDescriptorControl\")\n\tprocGetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorDacl\")\n\tprocGetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"GetSecurityDescriptorGroup\")\n\tprocGetSecurityDescriptorLength                          = modadvapi32.NewProc(\"GetSecurityDescriptorLength\")\n\tprocGetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"GetSecurityDescriptorOwner\")\n\tprocGetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"GetSecurityDescriptorRMControl\")\n\tprocGetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"GetSecurityDescriptorSacl\")\n\tprocGetSecurityInfo                                      = modadvapi32.NewProc(\"GetSecurityInfo\")\n\tprocGetSidIdentifierAuthority                            = modadvapi32.NewProc(\"GetSidIdentifierAuthority\")\n\tprocGetSidSubAuthority                                   = modadvapi32.NewProc(\"GetSidSubAuthority\")\n\tprocGetSidSubAuthorityCount                              = modadvapi32.NewProc(\"GetSidSubAuthorityCount\")\n\tprocGetTokenInformation                                  = modadvapi32.NewProc(\"GetTokenInformation\")\n\tprocImpersonateSelf                                      = modadvapi32.NewProc(\"ImpersonateSelf\")\n\tprocInitializeSecurityDescriptor                         = modadvapi32.NewProc(\"InitializeSecurityDescriptor\")\n\tprocInitiateSystemShutdownExW                            = modadvapi32.NewProc(\"InitiateSystemShutdownExW\")\n\tprocIsTokenRestricted                                    = modadvapi32.NewProc(\"IsTokenRestricted\")\n\tprocIsValidSecurityDescriptor                            = modadvapi32.NewProc(\"IsValidSecurityDescriptor\")\n\tprocIsValidSid                                           = modadvapi32.NewProc(\"IsValidSid\")\n\tprocIsWellKnownSid                                       = modadvapi32.NewProc(\"IsWellKnownSid\")\n\tprocLookupAccountNameW                                   = modadvapi32.NewProc(\"LookupAccountNameW\")\n\tprocLookupAccountSidW                                    = modadvapi32.NewProc(\"LookupAccountSidW\")\n\tprocLookupPrivilegeValueW                                = modadvapi32.NewProc(\"LookupPrivilegeValueW\")\n\tprocMakeAbsoluteSD                                       = modadvapi32.NewProc(\"MakeAbsoluteSD\")\n\tprocMakeSelfRelativeSD                                   = modadvapi32.NewProc(\"MakeSelfRelativeSD\")\n\tprocNotifyServiceStatusChangeW                           = modadvapi32.NewProc(\"NotifyServiceStatusChangeW\")\n\tprocOpenProcessToken                                     = modadvapi32.NewProc(\"OpenProcessToken\")\n\tprocOpenSCManagerW                                       = modadvapi32.NewProc(\"OpenSCManagerW\")\n\tprocOpenServiceW                                         = modadvapi32.NewProc(\"OpenServiceW\")\n\tprocOpenThreadToken                                      = modadvapi32.NewProc(\"OpenThreadToken\")\n\tprocQueryServiceConfig2W                                 = modadvapi32.NewProc(\"QueryServiceConfig2W\")\n\tprocQueryServiceConfigW                                  = modadvapi32.NewProc(\"QueryServiceConfigW\")\n\tprocQueryServiceDynamicInformation                       = modadvapi32.NewProc(\"QueryServiceDynamicInformation\")\n\tprocQueryServiceLockStatusW                              = modadvapi32.NewProc(\"QueryServiceLockStatusW\")\n\tprocQueryServiceStatus                                   = modadvapi32.NewProc(\"QueryServiceStatus\")\n\tprocQueryServiceStatusEx                                 = modadvapi32.NewProc(\"QueryServiceStatusEx\")\n\tprocRegCloseKey                                          = modadvapi32.NewProc(\"RegCloseKey\")\n\tprocRegEnumKeyExW                                        = modadvapi32.NewProc(\"RegEnumKeyExW\")\n\tprocRegNotifyChangeKeyValue                              = modadvapi32.NewProc(\"RegNotifyChangeKeyValue\")\n\tprocRegOpenKeyExW                                        = modadvapi32.NewProc(\"RegOpenKeyExW\")\n\tprocRegQueryInfoKeyW                                     = modadvapi32.NewProc(\"RegQueryInfoKeyW\")\n\tprocRegQueryValueExW                                     = modadvapi32.NewProc(\"RegQueryValueExW\")\n\tprocRegisterEventSourceW                                 = modadvapi32.NewProc(\"RegisterEventSourceW\")\n\tprocRegisterServiceCtrlHandlerExW                        = modadvapi32.NewProc(\"RegisterServiceCtrlHandlerExW\")\n\tprocReportEventW                                         = modadvapi32.NewProc(\"ReportEventW\")\n\tprocRevertToSelf                                         = modadvapi32.NewProc(\"RevertToSelf\")\n\tprocSetEntriesInAclW                                     = modadvapi32.NewProc(\"SetEntriesInAclW\")\n\tprocSetKernelObjectSecurity                              = modadvapi32.NewProc(\"SetKernelObjectSecurity\")\n\tprocSetNamedSecurityInfoW                                = modadvapi32.NewProc(\"SetNamedSecurityInfoW\")\n\tprocSetSecurityDescriptorControl                         = modadvapi32.NewProc(\"SetSecurityDescriptorControl\")\n\tprocSetSecurityDescriptorDacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorDacl\")\n\tprocSetSecurityDescriptorGroup                           = modadvapi32.NewProc(\"SetSecurityDescriptorGroup\")\n\tprocSetSecurityDescriptorOwner                           = modadvapi32.NewProc(\"SetSecurityDescriptorOwner\")\n\tprocSetSecurityDescriptorRMControl                       = modadvapi32.NewProc(\"SetSecurityDescriptorRMControl\")\n\tprocSetSecurityDescriptorSacl                            = modadvapi32.NewProc(\"SetSecurityDescriptorSacl\")\n\tprocSetSecurityInfo                                      = modadvapi32.NewProc(\"SetSecurityInfo\")\n\tprocSetServiceStatus                                     = modadvapi32.NewProc(\"SetServiceStatus\")\n\tprocSetThreadToken                                       = modadvapi32.NewProc(\"SetThreadToken\")\n\tprocSetTokenInformation                                  = modadvapi32.NewProc(\"SetTokenInformation\")\n\tprocStartServiceCtrlDispatcherW                          = modadvapi32.NewProc(\"StartServiceCtrlDispatcherW\")\n\tprocStartServiceW                                        = modadvapi32.NewProc(\"StartServiceW\")\n\tprocCertAddCertificateContextToStore                     = modcrypt32.NewProc(\"CertAddCertificateContextToStore\")\n\tprocCertCloseStore                                       = modcrypt32.NewProc(\"CertCloseStore\")\n\tprocCertCreateCertificateContext                         = modcrypt32.NewProc(\"CertCreateCertificateContext\")\n\tprocCertDeleteCertificateFromStore                       = modcrypt32.NewProc(\"CertDeleteCertificateFromStore\")\n\tprocCertDuplicateCertificateContext                      = modcrypt32.NewProc(\"CertDuplicateCertificateContext\")\n\tprocCertEnumCertificatesInStore                          = modcrypt32.NewProc(\"CertEnumCertificatesInStore\")\n\tprocCertFindCertificateInStore                           = modcrypt32.NewProc(\"CertFindCertificateInStore\")\n\tprocCertFindChainInStore                                 = modcrypt32.NewProc(\"CertFindChainInStore\")\n\tprocCertFindExtension                                    = modcrypt32.NewProc(\"CertFindExtension\")\n\tprocCertFreeCertificateChain                             = modcrypt32.NewProc(\"CertFreeCertificateChain\")\n\tprocCertFreeCertificateContext                           = modcrypt32.NewProc(\"CertFreeCertificateContext\")\n\tprocCertGetCertificateChain                              = modcrypt32.NewProc(\"CertGetCertificateChain\")\n\tprocCertGetNameStringW                                   = modcrypt32.NewProc(\"CertGetNameStringW\")\n\tprocCertOpenStore                                        = modcrypt32.NewProc(\"CertOpenStore\")\n\tprocCertOpenSystemStoreW                                 = modcrypt32.NewProc(\"CertOpenSystemStoreW\")\n\tprocCertVerifyCertificateChainPolicy                     = modcrypt32.NewProc(\"CertVerifyCertificateChainPolicy\")\n\tprocCryptAcquireCertificatePrivateKey                    = modcrypt32.NewProc(\"CryptAcquireCertificatePrivateKey\")\n\tprocCryptDecodeObject                                    = modcrypt32.NewProc(\"CryptDecodeObject\")\n\tprocCryptProtectData                                     = modcrypt32.NewProc(\"CryptProtectData\")\n\tprocCryptQueryObject                                     = modcrypt32.NewProc(\"CryptQueryObject\")\n\tprocCryptUnprotectData                                   = modcrypt32.NewProc(\"CryptUnprotectData\")\n\tprocPFXImportCertStore                                   = modcrypt32.NewProc(\"PFXImportCertStore\")\n\tprocDnsNameCompare_W                                     = moddnsapi.NewProc(\"DnsNameCompare_W\")\n\tprocDnsQuery_W                                           = moddnsapi.NewProc(\"DnsQuery_W\")\n\tprocDnsRecordListFree                                    = moddnsapi.NewProc(\"DnsRecordListFree\")\n\tprocDwmGetWindowAttribute                                = moddwmapi.NewProc(\"DwmGetWindowAttribute\")\n\tprocDwmSetWindowAttribute                                = moddwmapi.NewProc(\"DwmSetWindowAttribute\")\n\tprocGetAdaptersAddresses                                 = modiphlpapi.NewProc(\"GetAdaptersAddresses\")\n\tprocGetAdaptersInfo                                      = modiphlpapi.NewProc(\"GetAdaptersInfo\")\n\tprocGetBestInterfaceEx                                   = modiphlpapi.NewProc(\"GetBestInterfaceEx\")\n\tprocGetIfEntry                                           = modiphlpapi.NewProc(\"GetIfEntry\")\n\tprocAddDllDirectory                                      = modkernel32.NewProc(\"AddDllDirectory\")\n\tprocAssignProcessToJobObject                             = modkernel32.NewProc(\"AssignProcessToJobObject\")\n\tprocCancelIo                                             = modkernel32.NewProc(\"CancelIo\")\n\tprocCancelIoEx                                           = modkernel32.NewProc(\"CancelIoEx\")\n\tprocCloseHandle                                          = modkernel32.NewProc(\"CloseHandle\")\n\tprocClosePseudoConsole                                   = modkernel32.NewProc(\"ClosePseudoConsole\")\n\tprocConnectNamedPipe                                     = modkernel32.NewProc(\"ConnectNamedPipe\")\n\tprocCreateDirectoryW                                     = modkernel32.NewProc(\"CreateDirectoryW\")\n\tprocCreateEventExW                                       = modkernel32.NewProc(\"CreateEventExW\")\n\tprocCreateEventW                                         = modkernel32.NewProc(\"CreateEventW\")\n\tprocCreateFileMappingW                                   = modkernel32.NewProc(\"CreateFileMappingW\")\n\tprocCreateFileW                                          = modkernel32.NewProc(\"CreateFileW\")\n\tprocCreateHardLinkW                                      = modkernel32.NewProc(\"CreateHardLinkW\")\n\tprocCreateIoCompletionPort                               = modkernel32.NewProc(\"CreateIoCompletionPort\")\n\tprocCreateJobObjectW                                     = modkernel32.NewProc(\"CreateJobObjectW\")\n\tprocCreateMutexExW                                       = modkernel32.NewProc(\"CreateMutexExW\")\n\tprocCreateMutexW                                         = modkernel32.NewProc(\"CreateMutexW\")\n\tprocCreateNamedPipeW                                     = modkernel32.NewProc(\"CreateNamedPipeW\")\n\tprocCreatePipe                                           = modkernel32.NewProc(\"CreatePipe\")\n\tprocCreateProcessW                                       = modkernel32.NewProc(\"CreateProcessW\")\n\tprocCreatePseudoConsole                                  = modkernel32.NewProc(\"CreatePseudoConsole\")\n\tprocCreateSymbolicLinkW                                  = modkernel32.NewProc(\"CreateSymbolicLinkW\")\n\tprocCreateToolhelp32Snapshot                             = modkernel32.NewProc(\"CreateToolhelp32Snapshot\")\n\tprocDefineDosDeviceW                                     = modkernel32.NewProc(\"DefineDosDeviceW\")\n\tprocDeleteFileW                                          = modkernel32.NewProc(\"DeleteFileW\")\n\tprocDeleteProcThreadAttributeList                        = modkernel32.NewProc(\"DeleteProcThreadAttributeList\")\n\tprocDeleteVolumeMountPointW                              = modkernel32.NewProc(\"DeleteVolumeMountPointW\")\n\tprocDeviceIoControl                                      = modkernel32.NewProc(\"DeviceIoControl\")\n\tprocDuplicateHandle                                      = modkernel32.NewProc(\"DuplicateHandle\")\n\tprocExitProcess                                          = modkernel32.NewProc(\"ExitProcess\")\n\tprocExpandEnvironmentStringsW                            = modkernel32.NewProc(\"ExpandEnvironmentStringsW\")\n\tprocFindClose                                            = modkernel32.NewProc(\"FindClose\")\n\tprocFindCloseChangeNotification                          = modkernel32.NewProc(\"FindCloseChangeNotification\")\n\tprocFindFirstChangeNotificationW                         = modkernel32.NewProc(\"FindFirstChangeNotificationW\")\n\tprocFindFirstFileW                                       = modkernel32.NewProc(\"FindFirstFileW\")\n\tprocFindFirstVolumeMountPointW                           = modkernel32.NewProc(\"FindFirstVolumeMountPointW\")\n\tprocFindFirstVolumeW                                     = modkernel32.NewProc(\"FindFirstVolumeW\")\n\tprocFindNextChangeNotification                           = modkernel32.NewProc(\"FindNextChangeNotification\")\n\tprocFindNextFileW                                        = modkernel32.NewProc(\"FindNextFileW\")\n\tprocFindNextVolumeMountPointW                            = modkernel32.NewProc(\"FindNextVolumeMountPointW\")\n\tprocFindNextVolumeW                                      = modkernel32.NewProc(\"FindNextVolumeW\")\n\tprocFindResourceW                                        = modkernel32.NewProc(\"FindResourceW\")\n\tprocFindVolumeClose                                      = modkernel32.NewProc(\"FindVolumeClose\")\n\tprocFindVolumeMountPointClose                            = modkernel32.NewProc(\"FindVolumeMountPointClose\")\n\tprocFlushFileBuffers                                     = modkernel32.NewProc(\"FlushFileBuffers\")\n\tprocFlushViewOfFile                                      = modkernel32.NewProc(\"FlushViewOfFile\")\n\tprocFormatMessageW                                       = modkernel32.NewProc(\"FormatMessageW\")\n\tprocFreeEnvironmentStringsW                              = modkernel32.NewProc(\"FreeEnvironmentStringsW\")\n\tprocFreeLibrary                                          = modkernel32.NewProc(\"FreeLibrary\")\n\tprocGenerateConsoleCtrlEvent                             = modkernel32.NewProc(\"GenerateConsoleCtrlEvent\")\n\tprocGetACP                                               = modkernel32.NewProc(\"GetACP\")\n\tprocGetActiveProcessorCount                              = modkernel32.NewProc(\"GetActiveProcessorCount\")\n\tprocGetCommTimeouts                                      = modkernel32.NewProc(\"GetCommTimeouts\")\n\tprocGetCommandLineW                                      = modkernel32.NewProc(\"GetCommandLineW\")\n\tprocGetComputerNameExW                                   = modkernel32.NewProc(\"GetComputerNameExW\")\n\tprocGetComputerNameW                                     = modkernel32.NewProc(\"GetComputerNameW\")\n\tprocGetConsoleMode                                       = modkernel32.NewProc(\"GetConsoleMode\")\n\tprocGetConsoleScreenBufferInfo                           = modkernel32.NewProc(\"GetConsoleScreenBufferInfo\")\n\tprocGetCurrentDirectoryW                                 = modkernel32.NewProc(\"GetCurrentDirectoryW\")\n\tprocGetCurrentProcessId                                  = modkernel32.NewProc(\"GetCurrentProcessId\")\n\tprocGetCurrentThreadId                                   = modkernel32.NewProc(\"GetCurrentThreadId\")\n\tprocGetDiskFreeSpaceExW                                  = modkernel32.NewProc(\"GetDiskFreeSpaceExW\")\n\tprocGetDriveTypeW                                        = modkernel32.NewProc(\"GetDriveTypeW\")\n\tprocGetEnvironmentStringsW                               = modkernel32.NewProc(\"GetEnvironmentStringsW\")\n\tprocGetEnvironmentVariableW                              = modkernel32.NewProc(\"GetEnvironmentVariableW\")\n\tprocGetExitCodeProcess                                   = modkernel32.NewProc(\"GetExitCodeProcess\")\n\tprocGetFileAttributesExW                                 = modkernel32.NewProc(\"GetFileAttributesExW\")\n\tprocGetFileAttributesW                                   = modkernel32.NewProc(\"GetFileAttributesW\")\n\tprocGetFileInformationByHandle                           = modkernel32.NewProc(\"GetFileInformationByHandle\")\n\tprocGetFileInformationByHandleEx                         = modkernel32.NewProc(\"GetFileInformationByHandleEx\")\n\tprocGetFileTime                                          = modkernel32.NewProc(\"GetFileTime\")\n\tprocGetFileType                                          = modkernel32.NewProc(\"GetFileType\")\n\tprocGetFinalPathNameByHandleW                            = modkernel32.NewProc(\"GetFinalPathNameByHandleW\")\n\tprocGetFullPathNameW                                     = modkernel32.NewProc(\"GetFullPathNameW\")\n\tprocGetLargePageMinimum                                  = modkernel32.NewProc(\"GetLargePageMinimum\")\n\tprocGetLastError                                         = modkernel32.NewProc(\"GetLastError\")\n\tprocGetLogicalDriveStringsW                              = modkernel32.NewProc(\"GetLogicalDriveStringsW\")\n\tprocGetLogicalDrives                                     = modkernel32.NewProc(\"GetLogicalDrives\")\n\tprocGetLongPathNameW                                     = modkernel32.NewProc(\"GetLongPathNameW\")\n\tprocGetMaximumProcessorCount                             = modkernel32.NewProc(\"GetMaximumProcessorCount\")\n\tprocGetModuleFileNameW                                   = modkernel32.NewProc(\"GetModuleFileNameW\")\n\tprocGetModuleHandleExW                                   = modkernel32.NewProc(\"GetModuleHandleExW\")\n\tprocGetNamedPipeHandleStateW                             = modkernel32.NewProc(\"GetNamedPipeHandleStateW\")\n\tprocGetNamedPipeInfo                                     = modkernel32.NewProc(\"GetNamedPipeInfo\")\n\tprocGetOverlappedResult                                  = modkernel32.NewProc(\"GetOverlappedResult\")\n\tprocGetPriorityClass                                     = modkernel32.NewProc(\"GetPriorityClass\")\n\tprocGetProcAddress                                       = modkernel32.NewProc(\"GetProcAddress\")\n\tprocGetProcessId                                         = modkernel32.NewProc(\"GetProcessId\")\n\tprocGetProcessPreferredUILanguages                       = modkernel32.NewProc(\"GetProcessPreferredUILanguages\")\n\tprocGetProcessShutdownParameters                         = modkernel32.NewProc(\"GetProcessShutdownParameters\")\n\tprocGetProcessTimes                                      = modkernel32.NewProc(\"GetProcessTimes\")\n\tprocGetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"GetProcessWorkingSetSizeEx\")\n\tprocGetQueuedCompletionStatus                            = modkernel32.NewProc(\"GetQueuedCompletionStatus\")\n\tprocGetShortPathNameW                                    = modkernel32.NewProc(\"GetShortPathNameW\")\n\tprocGetStartupInfoW                                      = modkernel32.NewProc(\"GetStartupInfoW\")\n\tprocGetStdHandle                                         = modkernel32.NewProc(\"GetStdHandle\")\n\tprocGetSystemDirectoryW                                  = modkernel32.NewProc(\"GetSystemDirectoryW\")\n\tprocGetSystemPreferredUILanguages                        = modkernel32.NewProc(\"GetSystemPreferredUILanguages\")\n\tprocGetSystemTimeAsFileTime                              = modkernel32.NewProc(\"GetSystemTimeAsFileTime\")\n\tprocGetSystemTimePreciseAsFileTime                       = modkernel32.NewProc(\"GetSystemTimePreciseAsFileTime\")\n\tprocGetSystemWindowsDirectoryW                           = modkernel32.NewProc(\"GetSystemWindowsDirectoryW\")\n\tprocGetTempPathW                                         = modkernel32.NewProc(\"GetTempPathW\")\n\tprocGetThreadPreferredUILanguages                        = modkernel32.NewProc(\"GetThreadPreferredUILanguages\")\n\tprocGetTickCount64                                       = modkernel32.NewProc(\"GetTickCount64\")\n\tprocGetTimeZoneInformation                               = modkernel32.NewProc(\"GetTimeZoneInformation\")\n\tprocGetUserPreferredUILanguages                          = modkernel32.NewProc(\"GetUserPreferredUILanguages\")\n\tprocGetVersion                                           = modkernel32.NewProc(\"GetVersion\")\n\tprocGetVolumeInformationByHandleW                        = modkernel32.NewProc(\"GetVolumeInformationByHandleW\")\n\tprocGetVolumeInformationW                                = modkernel32.NewProc(\"GetVolumeInformationW\")\n\tprocGetVolumeNameForVolumeMountPointW                    = modkernel32.NewProc(\"GetVolumeNameForVolumeMountPointW\")\n\tprocGetVolumePathNameW                                   = modkernel32.NewProc(\"GetVolumePathNameW\")\n\tprocGetVolumePathNamesForVolumeNameW                     = modkernel32.NewProc(\"GetVolumePathNamesForVolumeNameW\")\n\tprocGetWindowsDirectoryW                                 = modkernel32.NewProc(\"GetWindowsDirectoryW\")\n\tprocInitializeProcThreadAttributeList                    = modkernel32.NewProc(\"InitializeProcThreadAttributeList\")\n\tprocIsWow64Process                                       = modkernel32.NewProc(\"IsWow64Process\")\n\tprocIsWow64Process2                                      = modkernel32.NewProc(\"IsWow64Process2\")\n\tprocLoadLibraryExW                                       = modkernel32.NewProc(\"LoadLibraryExW\")\n\tprocLoadLibraryW                                         = modkernel32.NewProc(\"LoadLibraryW\")\n\tprocLoadResource                                         = modkernel32.NewProc(\"LoadResource\")\n\tprocLocalAlloc                                           = modkernel32.NewProc(\"LocalAlloc\")\n\tprocLocalFree                                            = modkernel32.NewProc(\"LocalFree\")\n\tprocLockFileEx                                           = modkernel32.NewProc(\"LockFileEx\")\n\tprocLockResource                                         = modkernel32.NewProc(\"LockResource\")\n\tprocMapViewOfFile                                        = modkernel32.NewProc(\"MapViewOfFile\")\n\tprocModule32FirstW                                       = modkernel32.NewProc(\"Module32FirstW\")\n\tprocModule32NextW                                        = modkernel32.NewProc(\"Module32NextW\")\n\tprocMoveFileExW                                          = modkernel32.NewProc(\"MoveFileExW\")\n\tprocMoveFileW                                            = modkernel32.NewProc(\"MoveFileW\")\n\tprocMultiByteToWideChar                                  = modkernel32.NewProc(\"MultiByteToWideChar\")\n\tprocOpenEventW                                           = modkernel32.NewProc(\"OpenEventW\")\n\tprocOpenMutexW                                           = modkernel32.NewProc(\"OpenMutexW\")\n\tprocOpenProcess                                          = modkernel32.NewProc(\"OpenProcess\")\n\tprocOpenThread                                           = modkernel32.NewProc(\"OpenThread\")\n\tprocPostQueuedCompletionStatus                           = modkernel32.NewProc(\"PostQueuedCompletionStatus\")\n\tprocProcess32FirstW                                      = modkernel32.NewProc(\"Process32FirstW\")\n\tprocProcess32NextW                                       = modkernel32.NewProc(\"Process32NextW\")\n\tprocProcessIdToSessionId                                 = modkernel32.NewProc(\"ProcessIdToSessionId\")\n\tprocPulseEvent                                           = modkernel32.NewProc(\"PulseEvent\")\n\tprocQueryDosDeviceW                                      = modkernel32.NewProc(\"QueryDosDeviceW\")\n\tprocQueryFullProcessImageNameW                           = modkernel32.NewProc(\"QueryFullProcessImageNameW\")\n\tprocQueryInformationJobObject                            = modkernel32.NewProc(\"QueryInformationJobObject\")\n\tprocReadConsoleW                                         = modkernel32.NewProc(\"ReadConsoleW\")\n\tprocReadDirectoryChangesW                                = modkernel32.NewProc(\"ReadDirectoryChangesW\")\n\tprocReadFile                                             = modkernel32.NewProc(\"ReadFile\")\n\tprocReadProcessMemory                                    = modkernel32.NewProc(\"ReadProcessMemory\")\n\tprocReleaseMutex                                         = modkernel32.NewProc(\"ReleaseMutex\")\n\tprocRemoveDirectoryW                                     = modkernel32.NewProc(\"RemoveDirectoryW\")\n\tprocRemoveDllDirectory                                   = modkernel32.NewProc(\"RemoveDllDirectory\")\n\tprocResetEvent                                           = modkernel32.NewProc(\"ResetEvent\")\n\tprocResizePseudoConsole                                  = modkernel32.NewProc(\"ResizePseudoConsole\")\n\tprocResumeThread                                         = modkernel32.NewProc(\"ResumeThread\")\n\tprocSetCommTimeouts                                      = modkernel32.NewProc(\"SetCommTimeouts\")\n\tprocSetConsoleCursorPosition                             = modkernel32.NewProc(\"SetConsoleCursorPosition\")\n\tprocSetConsoleMode                                       = modkernel32.NewProc(\"SetConsoleMode\")\n\tprocSetCurrentDirectoryW                                 = modkernel32.NewProc(\"SetCurrentDirectoryW\")\n\tprocSetDefaultDllDirectories                             = modkernel32.NewProc(\"SetDefaultDllDirectories\")\n\tprocSetDllDirectoryW                                     = modkernel32.NewProc(\"SetDllDirectoryW\")\n\tprocSetEndOfFile                                         = modkernel32.NewProc(\"SetEndOfFile\")\n\tprocSetFileValidData                                     = modkernel32.NewProc(\"SetFileValidData\")\n\tprocSetEnvironmentVariableW                              = modkernel32.NewProc(\"SetEnvironmentVariableW\")\n\tprocSetErrorMode                                         = modkernel32.NewProc(\"SetErrorMode\")\n\tprocSetEvent                                             = modkernel32.NewProc(\"SetEvent\")\n\tprocSetFileAttributesW                                   = modkernel32.NewProc(\"SetFileAttributesW\")\n\tprocSetFileCompletionNotificationModes                   = modkernel32.NewProc(\"SetFileCompletionNotificationModes\")\n\tprocSetFileInformationByHandle                           = modkernel32.NewProc(\"SetFileInformationByHandle\")\n\tprocSetFilePointer                                       = modkernel32.NewProc(\"SetFilePointer\")\n\tprocSetFileTime                                          = modkernel32.NewProc(\"SetFileTime\")\n\tprocSetHandleInformation                                 = modkernel32.NewProc(\"SetHandleInformation\")\n\tprocSetInformationJobObject                              = modkernel32.NewProc(\"SetInformationJobObject\")\n\tprocSetNamedPipeHandleState                              = modkernel32.NewProc(\"SetNamedPipeHandleState\")\n\tprocSetPriorityClass                                     = modkernel32.NewProc(\"SetPriorityClass\")\n\tprocSetProcessPriorityBoost                              = modkernel32.NewProc(\"SetProcessPriorityBoost\")\n\tprocSetProcessShutdownParameters                         = modkernel32.NewProc(\"SetProcessShutdownParameters\")\n\tprocSetProcessWorkingSetSizeEx                           = modkernel32.NewProc(\"SetProcessWorkingSetSizeEx\")\n\tprocSetStdHandle                                         = modkernel32.NewProc(\"SetStdHandle\")\n\tprocSetVolumeLabelW                                      = modkernel32.NewProc(\"SetVolumeLabelW\")\n\tprocSetVolumeMountPointW                                 = modkernel32.NewProc(\"SetVolumeMountPointW\")\n\tprocSizeofResource                                       = modkernel32.NewProc(\"SizeofResource\")\n\tprocSleepEx                                              = modkernel32.NewProc(\"SleepEx\")\n\tprocTerminateJobObject                                   = modkernel32.NewProc(\"TerminateJobObject\")\n\tprocTerminateProcess                                     = modkernel32.NewProc(\"TerminateProcess\")\n\tprocThread32First                                        = modkernel32.NewProc(\"Thread32First\")\n\tprocThread32Next                                         = modkernel32.NewProc(\"Thread32Next\")\n\tprocUnlockFileEx                                         = modkernel32.NewProc(\"UnlockFileEx\")\n\tprocUnmapViewOfFile                                      = modkernel32.NewProc(\"UnmapViewOfFile\")\n\tprocUpdateProcThreadAttribute                            = modkernel32.NewProc(\"UpdateProcThreadAttribute\")\n\tprocVirtualAlloc                                         = modkernel32.NewProc(\"VirtualAlloc\")\n\tprocVirtualFree                                          = modkernel32.NewProc(\"VirtualFree\")\n\tprocVirtualLock                                          = modkernel32.NewProc(\"VirtualLock\")\n\tprocVirtualProtect                                       = modkernel32.NewProc(\"VirtualProtect\")\n\tprocVirtualProtectEx                                     = modkernel32.NewProc(\"VirtualProtectEx\")\n\tprocVirtualQuery                                         = modkernel32.NewProc(\"VirtualQuery\")\n\tprocVirtualQueryEx                                       = modkernel32.NewProc(\"VirtualQueryEx\")\n\tprocVirtualUnlock                                        = modkernel32.NewProc(\"VirtualUnlock\")\n\tprocWTSGetActiveConsoleSessionId                         = modkernel32.NewProc(\"WTSGetActiveConsoleSessionId\")\n\tprocWaitForMultipleObjects                               = modkernel32.NewProc(\"WaitForMultipleObjects\")\n\tprocWaitForSingleObject                                  = modkernel32.NewProc(\"WaitForSingleObject\")\n\tprocWriteConsoleW                                        = modkernel32.NewProc(\"WriteConsoleW\")\n\tprocWriteFile                                            = modkernel32.NewProc(\"WriteFile\")\n\tprocWriteProcessMemory                                   = modkernel32.NewProc(\"WriteProcessMemory\")\n\tprocAcceptEx                                             = modmswsock.NewProc(\"AcceptEx\")\n\tprocGetAcceptExSockaddrs                                 = modmswsock.NewProc(\"GetAcceptExSockaddrs\")\n\tprocTransmitFile                                         = modmswsock.NewProc(\"TransmitFile\")\n\tprocNetApiBufferFree                                     = modnetapi32.NewProc(\"NetApiBufferFree\")\n\tprocNetGetJoinInformation                                = modnetapi32.NewProc(\"NetGetJoinInformation\")\n\tprocNetUserGetInfo                                       = modnetapi32.NewProc(\"NetUserGetInfo\")\n\tprocNtCreateFile                                         = modntdll.NewProc(\"NtCreateFile\")\n\tprocNtCreateNamedPipeFile                                = modntdll.NewProc(\"NtCreateNamedPipeFile\")\n\tprocNtQueryInformationProcess                            = modntdll.NewProc(\"NtQueryInformationProcess\")\n\tprocNtQuerySystemInformation                             = modntdll.NewProc(\"NtQuerySystemInformation\")\n\tprocNtSetInformationFile                                 = modntdll.NewProc(\"NtSetInformationFile\")\n\tprocNtSetInformationProcess                              = modntdll.NewProc(\"NtSetInformationProcess\")\n\tprocNtSetSystemInformation                               = modntdll.NewProc(\"NtSetSystemInformation\")\n\tprocRtlAddFunctionTable                                  = modntdll.NewProc(\"RtlAddFunctionTable\")\n\tprocRtlDefaultNpAcl                                      = modntdll.NewProc(\"RtlDefaultNpAcl\")\n\tprocRtlDeleteFunctionTable                               = modntdll.NewProc(\"RtlDeleteFunctionTable\")\n\tprocRtlDosPathNameToNtPathName_U_WithStatus              = modntdll.NewProc(\"RtlDosPathNameToNtPathName_U_WithStatus\")\n\tprocRtlDosPathNameToRelativeNtPathName_U_WithStatus      = modntdll.NewProc(\"RtlDosPathNameToRelativeNtPathName_U_WithStatus\")\n\tprocRtlGetCurrentPeb                                     = modntdll.NewProc(\"RtlGetCurrentPeb\")\n\tprocRtlGetNtVersionNumbers                               = modntdll.NewProc(\"RtlGetNtVersionNumbers\")\n\tprocRtlGetVersion                                        = modntdll.NewProc(\"RtlGetVersion\")\n\tprocRtlInitString                                        = modntdll.NewProc(\"RtlInitString\")\n\tprocRtlInitUnicodeString                                 = modntdll.NewProc(\"RtlInitUnicodeString\")\n\tprocRtlNtStatusToDosErrorNoTeb                           = modntdll.NewProc(\"RtlNtStatusToDosErrorNoTeb\")\n\tprocCLSIDFromString                                      = modole32.NewProc(\"CLSIDFromString\")\n\tprocCoCreateGuid                                         = modole32.NewProc(\"CoCreateGuid\")\n\tprocCoGetObject                                          = modole32.NewProc(\"CoGetObject\")\n\tprocCoInitializeEx                                       = modole32.NewProc(\"CoInitializeEx\")\n\tprocCoTaskMemFree                                        = modole32.NewProc(\"CoTaskMemFree\")\n\tprocCoUninitialize                                       = modole32.NewProc(\"CoUninitialize\")\n\tprocStringFromGUID2                                      = modole32.NewProc(\"StringFromGUID2\")\n\tprocEnumProcessModules                                   = modpsapi.NewProc(\"EnumProcessModules\")\n\tprocEnumProcessModulesEx                                 = modpsapi.NewProc(\"EnumProcessModulesEx\")\n\tprocEnumProcesses                                        = modpsapi.NewProc(\"EnumProcesses\")\n\tprocGetModuleBaseNameW                                   = modpsapi.NewProc(\"GetModuleBaseNameW\")\n\tprocGetModuleFileNameExW                                 = modpsapi.NewProc(\"GetModuleFileNameExW\")\n\tprocGetModuleInformation                                 = modpsapi.NewProc(\"GetModuleInformation\")\n\tprocQueryWorkingSetEx                                    = modpsapi.NewProc(\"QueryWorkingSetEx\")\n\tprocSubscribeServiceChangeNotifications                  = modsechost.NewProc(\"SubscribeServiceChangeNotifications\")\n\tprocUnsubscribeServiceChangeNotifications                = modsechost.NewProc(\"UnsubscribeServiceChangeNotifications\")\n\tprocGetUserNameExW                                       = modsecur32.NewProc(\"GetUserNameExW\")\n\tprocTranslateNameW                                       = modsecur32.NewProc(\"TranslateNameW\")\n\tprocSetupDiBuildDriverInfoList                           = modsetupapi.NewProc(\"SetupDiBuildDriverInfoList\")\n\tprocSetupDiCallClassInstaller                            = modsetupapi.NewProc(\"SetupDiCallClassInstaller\")\n\tprocSetupDiCancelDriverInfoSearch                        = modsetupapi.NewProc(\"SetupDiCancelDriverInfoSearch\")\n\tprocSetupDiClassGuidsFromNameExW                         = modsetupapi.NewProc(\"SetupDiClassGuidsFromNameExW\")\n\tprocSetupDiClassNameFromGuidExW                          = modsetupapi.NewProc(\"SetupDiClassNameFromGuidExW\")\n\tprocSetupDiCreateDeviceInfoListExW                       = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoListExW\")\n\tprocSetupDiCreateDeviceInfoW                             = modsetupapi.NewProc(\"SetupDiCreateDeviceInfoW\")\n\tprocSetupDiDestroyDeviceInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDeviceInfoList\")\n\tprocSetupDiDestroyDriverInfoList                         = modsetupapi.NewProc(\"SetupDiDestroyDriverInfoList\")\n\tprocSetupDiEnumDeviceInfo                                = modsetupapi.NewProc(\"SetupDiEnumDeviceInfo\")\n\tprocSetupDiEnumDriverInfoW                               = modsetupapi.NewProc(\"SetupDiEnumDriverInfoW\")\n\tprocSetupDiGetClassDevsExW                               = modsetupapi.NewProc(\"SetupDiGetClassDevsExW\")\n\tprocSetupDiGetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiGetClassInstallParamsW\")\n\tprocSetupDiGetDeviceInfoListDetailW                      = modsetupapi.NewProc(\"SetupDiGetDeviceInfoListDetailW\")\n\tprocSetupDiGetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiGetDeviceInstallParamsW\")\n\tprocSetupDiGetDeviceInstanceIdW                          = modsetupapi.NewProc(\"SetupDiGetDeviceInstanceIdW\")\n\tprocSetupDiGetDevicePropertyW                            = modsetupapi.NewProc(\"SetupDiGetDevicePropertyW\")\n\tprocSetupDiGetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiGetDeviceRegistryPropertyW\")\n\tprocSetupDiGetDriverInfoDetailW                          = modsetupapi.NewProc(\"SetupDiGetDriverInfoDetailW\")\n\tprocSetupDiGetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiGetSelectedDevice\")\n\tprocSetupDiGetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiGetSelectedDriverW\")\n\tprocSetupDiOpenDevRegKey                                 = modsetupapi.NewProc(\"SetupDiOpenDevRegKey\")\n\tprocSetupDiSetClassInstallParamsW                        = modsetupapi.NewProc(\"SetupDiSetClassInstallParamsW\")\n\tprocSetupDiSetDeviceInstallParamsW                       = modsetupapi.NewProc(\"SetupDiSetDeviceInstallParamsW\")\n\tprocSetupDiSetDeviceRegistryPropertyW                    = modsetupapi.NewProc(\"SetupDiSetDeviceRegistryPropertyW\")\n\tprocSetupDiSetSelectedDevice                             = modsetupapi.NewProc(\"SetupDiSetSelectedDevice\")\n\tprocSetupDiSetSelectedDriverW                            = modsetupapi.NewProc(\"SetupDiSetSelectedDriverW\")\n\tprocSetupUninstallOEMInfW                                = modsetupapi.NewProc(\"SetupUninstallOEMInfW\")\n\tprocCommandLineToArgvW                                   = modshell32.NewProc(\"CommandLineToArgvW\")\n\tprocSHGetKnownFolderPath                                 = modshell32.NewProc(\"SHGetKnownFolderPath\")\n\tprocShellExecuteW                                        = modshell32.NewProc(\"ShellExecuteW\")\n\tprocEnumChildWindows                                     = moduser32.NewProc(\"EnumChildWindows\")\n\tprocEnumWindows                                          = moduser32.NewProc(\"EnumWindows\")\n\tprocExitWindowsEx                                        = moduser32.NewProc(\"ExitWindowsEx\")\n\tprocGetClassNameW                                        = moduser32.NewProc(\"GetClassNameW\")\n\tprocGetDesktopWindow                                     = moduser32.NewProc(\"GetDesktopWindow\")\n\tprocGetForegroundWindow                                  = moduser32.NewProc(\"GetForegroundWindow\")\n\tprocGetGUIThreadInfo                                     = moduser32.NewProc(\"GetGUIThreadInfo\")\n\tprocGetShellWindow                                       = moduser32.NewProc(\"GetShellWindow\")\n\tprocGetWindowThreadProcessId                             = moduser32.NewProc(\"GetWindowThreadProcessId\")\n\tprocIsWindow                                             = moduser32.NewProc(\"IsWindow\")\n\tprocIsWindowUnicode                                      = moduser32.NewProc(\"IsWindowUnicode\")\n\tprocIsWindowVisible                                      = moduser32.NewProc(\"IsWindowVisible\")\n\tprocMessageBoxW                                          = moduser32.NewProc(\"MessageBoxW\")\n\tprocCreateEnvironmentBlock                               = moduserenv.NewProc(\"CreateEnvironmentBlock\")\n\tprocDestroyEnvironmentBlock                              = moduserenv.NewProc(\"DestroyEnvironmentBlock\")\n\tprocGetUserProfileDirectoryW                             = moduserenv.NewProc(\"GetUserProfileDirectoryW\")\n\tprocGetFileVersionInfoSizeW                              = modversion.NewProc(\"GetFileVersionInfoSizeW\")\n\tprocGetFileVersionInfoW                                  = modversion.NewProc(\"GetFileVersionInfoW\")\n\tprocVerQueryValueW                                       = modversion.NewProc(\"VerQueryValueW\")\n\tproctimeBeginPeriod                                      = modwinmm.NewProc(\"timeBeginPeriod\")\n\tproctimeEndPeriod                                        = modwinmm.NewProc(\"timeEndPeriod\")\n\tprocWinVerifyTrustEx                                     = modwintrust.NewProc(\"WinVerifyTrustEx\")\n\tprocFreeAddrInfoW                                        = modws2_32.NewProc(\"FreeAddrInfoW\")\n\tprocGetAddrInfoW                                         = modws2_32.NewProc(\"GetAddrInfoW\")\n\tprocWSACleanup                                           = modws2_32.NewProc(\"WSACleanup\")\n\tprocWSAEnumProtocolsW                                    = modws2_32.NewProc(\"WSAEnumProtocolsW\")\n\tprocWSAGetOverlappedResult                               = modws2_32.NewProc(\"WSAGetOverlappedResult\")\n\tprocWSAIoctl                                             = modws2_32.NewProc(\"WSAIoctl\")\n\tprocWSALookupServiceBeginW                               = modws2_32.NewProc(\"WSALookupServiceBeginW\")\n\tprocWSALookupServiceEnd                                  = modws2_32.NewProc(\"WSALookupServiceEnd\")\n\tprocWSALookupServiceNextW                                = modws2_32.NewProc(\"WSALookupServiceNextW\")\n\tprocWSARecv                                              = modws2_32.NewProc(\"WSARecv\")\n\tprocWSARecvFrom                                          = modws2_32.NewProc(\"WSARecvFrom\")\n\tprocWSASend                                              = modws2_32.NewProc(\"WSASend\")\n\tprocWSASendTo                                            = modws2_32.NewProc(\"WSASendTo\")\n\tprocWSASocketW                                           = modws2_32.NewProc(\"WSASocketW\")\n\tprocWSAStartup                                           = modws2_32.NewProc(\"WSAStartup\")\n\tprocbind                                                 = modws2_32.NewProc(\"bind\")\n\tprocclosesocket                                          = modws2_32.NewProc(\"closesocket\")\n\tprocconnect                                              = modws2_32.NewProc(\"connect\")\n\tprocgethostbyname                                        = modws2_32.NewProc(\"gethostbyname\")\n\tprocgetpeername                                          = modws2_32.NewProc(\"getpeername\")\n\tprocgetprotobyname                                       = modws2_32.NewProc(\"getprotobyname\")\n\tprocgetservbyname                                        = modws2_32.NewProc(\"getservbyname\")\n\tprocgetsockname                                          = modws2_32.NewProc(\"getsockname\")\n\tprocgetsockopt                                           = modws2_32.NewProc(\"getsockopt\")\n\tproclisten                                               = modws2_32.NewProc(\"listen\")\n\tprocntohs                                                = modws2_32.NewProc(\"ntohs\")\n\tprocrecvfrom                                             = modws2_32.NewProc(\"recvfrom\")\n\tprocsendto                                               = modws2_32.NewProc(\"sendto\")\n\tprocsetsockopt                                           = modws2_32.NewProc(\"setsockopt\")\n\tprocshutdown                                             = modws2_32.NewProc(\"shutdown\")\n\tprocsocket                                               = modws2_32.NewProc(\"socket\")\n\tprocWTSEnumerateSessionsW                                = modwtsapi32.NewProc(\"WTSEnumerateSessionsW\")\n\tprocWTSFreeMemory                                        = modwtsapi32.NewProc(\"WTSFreeMemory\")\n\tprocWTSQueryUserToken                                    = modwtsapi32.NewProc(\"WTSQueryUserToken\")\n)\n\nfunc cm_Get_DevNode_Status(status *uint32, problemNumber *uint32, devInst DEVINST, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.Syscall6(procCM_Get_DevNode_Status.Addr(), 4, uintptr(unsafe.Pointer(status)), uintptr(unsafe.Pointer(problemNumber)), uintptr(devInst), uintptr(flags), 0, 0)\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List(interfaceClass *GUID, deviceID *uint16, buffer *uint16, bufferLen uint32, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_ListW.Addr(), 5, uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(unsafe.Pointer(buffer)), uintptr(bufferLen), uintptr(flags), 0)\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_Get_Device_Interface_List_Size(len *uint32, interfaceClass *GUID, deviceID *uint16, flags uint32) (ret CONFIGRET) {\n\tr0, _, _ := syscall.Syscall6(procCM_Get_Device_Interface_List_SizeW.Addr(), 4, uintptr(unsafe.Pointer(len)), uintptr(unsafe.Pointer(interfaceClass)), uintptr(unsafe.Pointer(deviceID)), uintptr(flags), 0, 0)\n\tret = CONFIGRET(r0)\n\treturn\n}\n\nfunc cm_MapCrToWin32Err(configRet CONFIGRET, defaultWin32Error Errno) (ret Errno) {\n\tr0, _, _ := syscall.Syscall(procCM_MapCrToWin32Err.Addr(), 2, uintptr(configRet), uintptr(defaultWin32Error), 0)\n\tret = Errno(r0)\n\treturn\n}\n\nfunc AdjustTokenGroups(token Token, resetToDefault bool, newstate *Tokengroups, buflen uint32, prevstate *Tokengroups, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif resetToDefault {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AdjustTokenPrivileges(token Token, disableAllPrivileges bool, newstate *Tokenprivileges, buflen uint32, prevstate *Tokenprivileges, returnlen *uint32) (err error) {\n\tvar _p0 uint32\n\tif disableAllPrivileges {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AllocateAndInitializeSid(identAuth *SidIdentifierAuthority, subAuth byte, subAuth0 uint32, subAuth1 uint32, subAuth2 uint32, subAuth3 uint32, subAuth4 uint32, subAuth5 uint32, subAuth6 uint32, subAuth7 uint32, sid **SID) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc buildSecurityDescriptor(owner *TRUSTEE, group *TRUSTEE, countAccessEntries uint32, accessEntries *EXPLICIT_ACCESS, countAuditEntries uint32, auditEntries *EXPLICIT_ACCESS, oldSecurityDescriptor *SECURITY_DESCRIPTOR, sizeNewSecurityDescriptor *uint32, newSecurityDescriptor **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ChangeServiceConfig(service Handle, serviceType uint32, startType uint32, errorControl uint32, binaryPathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16, displayName *uint16) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertSecurityDescriptorToStringSecurityDescriptor(sd *SECURITY_DESCRIPTOR, revision uint32, securityInformation SECURITY_INFORMATION, str **uint16, strLen *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc convertStringSecurityDescriptorToSecurityDescriptor(str string, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(str)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _convertStringSecurityDescriptorToSecurityDescriptor(_p0, revision, sd, size)\n}\n\nfunc _convertStringSecurityDescriptorToSecurityDescriptor(str *uint16, revision uint32, sd **SECURITY_DESCRIPTOR, size *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcessAsUser(token Token, appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall12(procCreateProcessAsUserW.Addr(), 11, uintptr(token), uintptr(unsafe.Pointer(appName)), uintptr(unsafe.Pointer(commandLine)), uintptr(unsafe.Pointer(procSecurity)), uintptr(unsafe.Pointer(threadSecurity)), uintptr(_p0), uintptr(creationFlags), uintptr(unsafe.Pointer(env)), uintptr(unsafe.Pointer(currentDir)), uintptr(unsafe.Pointer(startupInfo)), uintptr(unsafe.Pointer(outProcInfo)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateService(mgr Handle, serviceName *uint16, displayName *uint16, access uint32, srvType uint32, startType uint32, errCtl uint32, pathName *uint16, loadOrderGroup *uint16, tagId *uint32, dependencies *uint16, serviceStartName *uint16, password *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createWellKnownSid(sidType WELL_KNOWN_SID_TYPE, domainSid *SID, sid *SID, sizeSid *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireContext(provhandle *Handle, container *uint16, provider *uint16, provtype uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateTokenEx(existingToken Token, desiredAccess uint32, tokenAttributes *SecurityAttributes, impersonationLevel uint32, tokenType uint32, newToken *Token) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumDependentServices(service Handle, activityState uint32, services *ENUM_SERVICE_STATUS, buffSize uint32, bytesNeeded *uint32, servicesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procEnumDependentServicesW.Addr(), 6, uintptr(service), uintptr(activityState), uintptr(unsafe.Pointer(services)), uintptr(buffSize), uintptr(unsafe.Pointer(bytesNeeded)), uintptr(unsafe.Pointer(servicesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumServicesStatusEx(mgr Handle, infoLevel uint32, serviceType uint32, serviceState uint32, services *byte, bufSize uint32, bytesNeeded *uint32, servicesReturned *uint32, resumeHandle *uint32, groupName *uint16) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\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 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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent *bool, dacl **ACL, daclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group **SID, groupDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 getSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner **SID, ownerDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\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 getSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent *bool, sacl **ACL, saclDefaulted *bool) (err error) {\n\tvar _p0 uint32\n\tif *saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif *saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner **SID, group **SID, dacl **ACL, sacl **ACL, sd **SECURITY_DESCRIPTOR) (ret error) {\n\tr0, _, _ := syscall.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 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 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 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 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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc InitiateSystemShutdownEx(machineName *uint16, message *uint16, timeout uint32, forceAppsClosed bool, rebootAfterShutdown bool, reason uint32) (err error) {\n\tvar _p0 uint32\n\tif forceAppsClosed {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif rebootAfterShutdown {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isTokenRestricted(tokenHandle Token) (ret bool, err error) {\n\tr0, _, e1 := syscall.Syscall(procIsTokenRestricted.Addr(), 1, uintptr(tokenHandle), 0, 0)\n\tret = r0 != 0\n\tif !ret {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc isValidSecurityDescriptor(sd *SECURITY_DESCRIPTOR) (isValid bool) {\n\tr0, _, _ := syscall.Syscall(procIsValidSecurityDescriptor.Addr(), 1, uintptr(unsafe.Pointer(sd)), 0, 0)\n\tisValid = r0 != 0\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 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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LookupAccountSid(systemName *uint16, sid *SID, name *uint16, nameLen *uint32, refdDomainName *uint16, refdDomainNameLen *uint32, use *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeAbsoluteSD(selfRelativeSD *SECURITY_DESCRIPTOR, absoluteSD *SECURITY_DESCRIPTOR, absoluteSDSize *uint32, dacl *ACL, daclSize *uint32, sacl *ACL, saclSize *uint32, owner *SID, ownerSize *uint32, group *SID, groupSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc makeSelfRelativeSD(absoluteSD *SECURITY_DESCRIPTOR, selfRelativeSD *SECURITY_DESCRIPTOR, selfRelativeSDSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMakeSelfRelativeSD.Addr(), 3, uintptr(unsafe.Pointer(absoluteSD)), uintptr(unsafe.Pointer(selfRelativeSD)), uintptr(unsafe.Pointer(selfRelativeSDSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc NotifyServiceStatusChange(service Handle, notifyMask uint32, notifier *SERVICE_NOTIFY) (ret error) {\n\tr0, _, _ := syscall.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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenSCManager(machineName *uint16, databaseName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procOpenSCManagerW.Addr(), 3, uintptr(unsafe.Pointer(machineName)), uintptr(unsafe.Pointer(databaseName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenService(mgr Handle, serviceName *uint16, access uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procOpenServiceW.Addr(), 3, uintptr(mgr), uintptr(unsafe.Pointer(serviceName)), uintptr(access))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThreadToken(thread Handle, access uint32, openAsSelf bool, token *Token) (err error) {\n\tvar _p0 uint32\n\tif openAsSelf {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procOpenThreadToken.Addr(), 4, uintptr(thread), uintptr(access), uintptr(_p0), uintptr(unsafe.Pointer(token)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig2(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceConfig(service Handle, serviceConfig *QUERY_SERVICE_CONFIG, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryServiceConfigW.Addr(), 4, uintptr(service), uintptr(unsafe.Pointer(serviceConfig)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceDynamicInformation(service Handle, infoLevel uint32, dynamicInfo unsafe.Pointer) (err error) {\n\terr = procQueryServiceDynamicInformation.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.Syscall(procQueryServiceDynamicInformation.Addr(), 3, uintptr(service), uintptr(infoLevel), uintptr(dynamicInfo))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceLockStatus(mgr Handle, lockStatus *QUERY_SERVICE_LOCK_STATUS, bufSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryServiceLockStatusW.Addr(), 4, uintptr(mgr), uintptr(unsafe.Pointer(lockStatus)), uintptr(bufSize), uintptr(unsafe.Pointer(bytesNeeded)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatus(service Handle, status *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.Syscall(procQueryServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(status)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryServiceStatusEx(service Handle, infoLevel uint32, buff *byte, buffSize uint32, bytesNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 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 RegNotifyChangeKeyValue(key Handle, watchSubtree bool, notifyFilter uint32, event Handle, asynchronous bool) (regerrno error) {\n\tvar _p0 uint32\n\tif watchSubtree {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif asynchronous {\n\t\t_p1 = 1\n\t}\n\tr0, _, _ := syscall.Syscall6(procRegNotifyChangeKeyValue.Addr(), 5, uintptr(key), uintptr(_p0), uintptr(notifyFilter), uintptr(event), uintptr(_p1), 0)\n\tif r0 != 0 {\n\t\tregerrno = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc RegOpenKeyEx(key Handle, subkey *uint16, options uint32, desiredAccess uint32, result *Handle) (regerrno error) {\n\tr0, _, _ := syscall.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 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 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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RegisterServiceCtrlHandlerEx(serviceName *uint16, handlerProc uintptr, context uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procRegisterServiceCtrlHandlerExW.Addr(), 3, uintptr(unsafe.Pointer(serviceName)), uintptr(handlerProc), uintptr(context))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReportEvent(log Handle, etype uint16, category uint16, eventId uint32, usrSId uintptr, numStrings uint16, dataSize uint32, strings **uint16, rawData *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setEntriesInAcl(countExplicitEntries uint32, explicitEntries *EXPLICIT_ACCESS, oldACL *ACL, newACL **ACL) (ret error) {\n\tr0, _, _ := syscall.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\nfunc SetKernelObjectSecurity(handle Handle, securityInformation SECURITY_INFORMATION, securityDescriptor *SECURITY_DESCRIPTOR) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetKernelObjectSecurity.Addr(), 3, uintptr(handle), uintptr(securityInformation), uintptr(unsafe.Pointer(securityDescriptor)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedSecurityInfo(objectName string, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tvar _p0 *uint16\n\t_p0, ret = syscall.UTF16PtrFromString(objectName)\n\tif ret != nil {\n\t\treturn\n\t}\n\treturn _SetNamedSecurityInfo(_p0, objectType, securityInformation, owner, group, dacl, sacl)\n}\n\nfunc _SetNamedSecurityInfo(objectName *uint16, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorDacl(sd *SECURITY_DESCRIPTOR, daclPresent bool, dacl *ACL, daclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif daclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif daclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorDacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(dacl)), uintptr(_p1), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorGroup(sd *SECURITY_DESCRIPTOR, group *SID, groupDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif groupDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetSecurityDescriptorGroup.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(group)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorOwner(sd *SECURITY_DESCRIPTOR, owner *SID, ownerDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif ownerDefaulted {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetSecurityDescriptorOwner.Addr(), 3, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(owner)), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setSecurityDescriptorRMControl(sd *SECURITY_DESCRIPTOR, rmControl *uint8) {\n\tsyscall.Syscall(procSetSecurityDescriptorRMControl.Addr(), 2, uintptr(unsafe.Pointer(sd)), uintptr(unsafe.Pointer(rmControl)), 0)\n\treturn\n}\n\nfunc setSecurityDescriptorSacl(sd *SECURITY_DESCRIPTOR, saclPresent bool, sacl *ACL, saclDefaulted bool) (err error) {\n\tvar _p0 uint32\n\tif saclPresent {\n\t\t_p0 = 1\n\t}\n\tvar _p1 uint32\n\tif saclDefaulted {\n\t\t_p1 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procSetSecurityDescriptorSacl.Addr(), 4, uintptr(unsafe.Pointer(sd)), uintptr(_p0), uintptr(unsafe.Pointer(sacl)), uintptr(_p1), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetSecurityInfo(handle Handle, objectType SE_OBJECT_TYPE, securityInformation SECURITY_INFORMATION, owner *SID, group *SID, dacl *ACL, sacl *ACL) (ret error) {\n\tr0, _, _ := syscall.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\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc SetServiceStatus(service Handle, serviceStatus *SERVICE_STATUS) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetServiceStatus.Addr(), 2, uintptr(service), uintptr(unsafe.Pointer(serviceStatus)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetThreadToken(thread *Handle, token Token) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetThreadToken.Addr(), 2, uintptr(unsafe.Pointer(thread)), uintptr(token), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetTokenInformation(token Token, infoClass uint32, info *byte, infoLen uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetTokenInformation.Addr(), 4, uintptr(token), uintptr(infoClass), uintptr(unsafe.Pointer(info)), uintptr(infoLen), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartServiceCtrlDispatcher(serviceTable *SERVICE_TABLE_ENTRY) (err error) {\n\tr1, _, e1 := syscall.Syscall(procStartServiceCtrlDispatcherW.Addr(), 1, uintptr(unsafe.Pointer(serviceTable)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc StartService(service Handle, numArgs uint32, argVectors **uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procStartServiceW.Addr(), 3, uintptr(service), uintptr(numArgs), uintptr(unsafe.Pointer(argVectors)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertAddCertificateContextToStore(store Handle, certContext *CertContext, addDisposition uint32, storeContext **CertContext) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procCertAddCertificateContextToStore.Addr(), 4, uintptr(store), uintptr(unsafe.Pointer(certContext)), uintptr(addDisposition), uintptr(unsafe.Pointer(storeContext)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCloseStore(store Handle, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCertCloseStore.Addr(), 2, uintptr(store), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertCreateCertificateContext(certEncodingType uint32, certEncoded *byte, encodedLen uint32) (context *CertContext, err error) {\n\tr0, _, e1 := syscall.Syscall(procCertCreateCertificateContext.Addr(), 3, uintptr(certEncodingType), uintptr(unsafe.Pointer(certEncoded)), uintptr(encodedLen))\n\tcontext = (*CertContext)(unsafe.Pointer(r0))\n\tif context == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDeleteCertificateFromStore(certContext *CertContext) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCertDeleteCertificateFromStore.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertDuplicateCertificateContext(certContext *CertContext) (dupContext *CertContext) {\n\tr0, _, _ := syscall.Syscall(procCertDuplicateCertificateContext.Addr(), 1, uintptr(unsafe.Pointer(certContext)), 0, 0)\n\tdupContext = (*CertContext)(unsafe.Pointer(r0))\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindCertificateInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevCertContext *CertContext) (cert *CertContext, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCertFindCertificateInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevCertContext)))\n\tcert = (*CertContext)(unsafe.Pointer(r0))\n\tif cert == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindChainInStore(store Handle, certEncodingType uint32, findFlags uint32, findType uint32, findPara unsafe.Pointer, prevChainContext *CertChainContext) (certchain *CertChainContext, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCertFindChainInStore.Addr(), 6, uintptr(store), uintptr(certEncodingType), uintptr(findFlags), uintptr(findType), uintptr(findPara), uintptr(unsafe.Pointer(prevChainContext)))\n\tcertchain = (*CertChainContext)(unsafe.Pointer(r0))\n\tif certchain == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertFindExtension(objId *byte, countExtensions uint32, extensions *CertExtension) (ret *CertExtension) {\n\tr0, _, _ := syscall.Syscall(procCertFindExtension.Addr(), 3, uintptr(unsafe.Pointer(objId)), uintptr(countExtensions), uintptr(unsafe.Pointer(extensions)))\n\tret = (*CertExtension)(unsafe.Pointer(r0))\n\treturn\n}\n\nfunc CertFreeCertificateChain(ctx *CertChainContext) {\n\tsyscall.Syscall(procCertFreeCertificateChain.Addr(), 1, uintptr(unsafe.Pointer(ctx)), 0, 0)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetCertificateChain(engine Handle, leaf *CertContext, time *Filetime, additionalStore Handle, para *CertChainPara, flags uint32, reserved uintptr, chainCtx **CertChainContext) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertGetNameString(certContext *CertContext, nameType uint32, flags uint32, typePara unsafe.Pointer, name *uint16, size uint32) (chars uint32) {\n\tr0, _, _ := syscall.Syscall6(procCertGetNameStringW.Addr(), 6, uintptr(unsafe.Pointer(certContext)), uintptr(nameType), uintptr(flags), uintptr(typePara), uintptr(unsafe.Pointer(name)), uintptr(size))\n\tchars = uint32(r0)\n\treturn\n}\n\nfunc CertOpenStore(storeProvider uintptr, msgAndCertEncodingType uint32, cryptProv uintptr, flags uint32, para uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCertOpenStore.Addr(), 5, uintptr(storeProvider), uintptr(msgAndCertEncodingType), uintptr(cryptProv), uintptr(flags), uintptr(para), 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertOpenSystemStore(hprov Handle, name *uint16) (store Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCertOpenSystemStoreW.Addr(), 2, uintptr(hprov), uintptr(unsafe.Pointer(name)), 0)\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CertVerifyCertificateChainPolicy(policyOID uintptr, chain *CertChainContext, para *CertChainPolicyPara, status *CertChainPolicyStatus) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptAcquireCertificatePrivateKey(cert *CertContext, flags uint32, parameters unsafe.Pointer, cryptProvOrNCryptKey *Handle, keySpec *uint32, callerFreeProvOrNCryptKey *bool) (err error) {\n\tvar _p0 uint32\n\tif *callerFreeProvOrNCryptKey {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procCryptAcquireCertificatePrivateKey.Addr(), 6, uintptr(unsafe.Pointer(cert)), uintptr(flags), uintptr(parameters), uintptr(unsafe.Pointer(cryptProvOrNCryptKey)), uintptr(unsafe.Pointer(keySpec)), uintptr(unsafe.Pointer(&_p0)))\n\t*callerFreeProvOrNCryptKey = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptDecodeObject(encodingType uint32, structType *byte, encodedBytes *byte, lenEncodedBytes uint32, flags uint32, decoded unsafe.Pointer, decodedLen *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procCryptDecodeObject.Addr(), 7, uintptr(encodingType), uintptr(unsafe.Pointer(structType)), uintptr(unsafe.Pointer(encodedBytes)), uintptr(lenEncodedBytes), uintptr(flags), uintptr(decoded), uintptr(unsafe.Pointer(decodedLen)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptProtectData(dataIn *DataBlob, name *uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procCryptProtectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptQueryObject(objectType uint32, object unsafe.Pointer, expectedContentTypeFlags uint32, expectedFormatTypeFlags uint32, flags uint32, msgAndCertEncodingType *uint32, contentType *uint32, formatType *uint32, certStore *Handle, msg *Handle, context *unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.Syscall12(procCryptQueryObject.Addr(), 11, uintptr(objectType), uintptr(object), uintptr(expectedContentTypeFlags), uintptr(expectedFormatTypeFlags), uintptr(flags), uintptr(unsafe.Pointer(msgAndCertEncodingType)), uintptr(unsafe.Pointer(contentType)), uintptr(unsafe.Pointer(formatType)), uintptr(unsafe.Pointer(certStore)), uintptr(unsafe.Pointer(msg)), uintptr(unsafe.Pointer(context)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CryptUnprotectData(dataIn *DataBlob, name **uint16, optionalEntropy *DataBlob, reserved uintptr, promptStruct *CryptProtectPromptStruct, flags uint32, dataOut *DataBlob) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procCryptUnprotectData.Addr(), 7, uintptr(unsafe.Pointer(dataIn)), uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(optionalEntropy)), uintptr(reserved), uintptr(unsafe.Pointer(promptStruct)), uintptr(flags), uintptr(unsafe.Pointer(dataOut)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PFXImportCertStore(pfx *CryptDataBlob, password *uint16, flags uint32) (store Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procPFXImportCertStore.Addr(), 3, uintptr(unsafe.Pointer(pfx)), uintptr(unsafe.Pointer(password)), uintptr(flags))\n\tstore = Handle(r0)\n\tif store == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DnsNameCompare(name1 *uint16, name2 *uint16) (same bool) {\n\tr0, _, _ := syscall.Syscall(procDnsNameCompare_W.Addr(), 2, uintptr(unsafe.Pointer(name1)), uintptr(unsafe.Pointer(name2)), 0)\n\tsame = r0 != 0\n\treturn\n}\n\nfunc DnsQuery(name string, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tvar _p0 *uint16\n\t_p0, status = syscall.UTF16PtrFromString(name)\n\tif status != nil {\n\t\treturn\n\t}\n\treturn _DnsQuery(_p0, qtype, options, extra, qrs, pr)\n}\n\nfunc _DnsQuery(name *uint16, qtype uint16, options uint32, extra *byte, qrs **DNSRecord, pr *byte) (status error) {\n\tr0, _, _ := syscall.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 DwmGetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.Syscall6(procDwmGetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc DwmSetWindowAttribute(hwnd HWND, attribute uint32, value unsafe.Pointer, size uint32) (ret error) {\n\tr0, _, _ := syscall.Syscall6(procDwmSetWindowAttribute.Addr(), 4, uintptr(hwnd), uintptr(attribute), uintptr(value), uintptr(size), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\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 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 getBestInterfaceEx(sockaddr unsafe.Pointer, pdwBestIfIndex *uint32) (errcode error) {\n\tr0, _, _ := syscall.Syscall(procGetBestInterfaceEx.Addr(), 2, uintptr(sockaddr), uintptr(unsafe.Pointer(pdwBestIfIndex)), 0)\n\tif r0 != 0 {\n\t\terrcode = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc GetIfEntry(pIfRow *MibIfRow) (errcode error) {\n\tr0, _, _ := syscall.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 AddDllDirectory(path *uint16) (cookie uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procAddDllDirectory.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tcookie = uintptr(r0)\n\tif cookie == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AssignProcessToJobObject(job Handle, process Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procAssignProcessToJobObject.Addr(), 2, uintptr(job), uintptr(process), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIo(s Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCancelIo.Addr(), 1, uintptr(s), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CancelIoEx(s Handle, o *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCancelIoEx.Addr(), 2, uintptr(s), uintptr(unsafe.Pointer(o)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CloseHandle(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCloseHandle.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ClosePseudoConsole(console Handle) {\n\tsyscall.Syscall(procClosePseudoConsole.Addr(), 1, uintptr(console), 0, 0)\n\treturn\n}\n\nfunc ConnectNamedPipe(pipe Handle, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall(procConnectNamedPipe.Addr(), 2, uintptr(pipe), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateDirectory(path *uint16, sa *SecurityAttributes) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCreateDirectoryW.Addr(), 2, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(sa)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEventEx(eventAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEvent(eventAttrs *SecurityAttributes, manualReset uint32, initialState uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFileMapping(fhandle Handle, sa *SecurityAttributes, prot uint32, maxSizeHigh uint32, maxSizeLow uint32, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateFile(name *uint16, access uint32, mode uint32, sa *SecurityAttributes, createmode uint32, attrs uint32, templatefile Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateIoCompletionPort(filehandle Handle, cphandle Handle, key uintptr, threadcnt uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procCreateIoCompletionPort.Addr(), 4, uintptr(filehandle), uintptr(cphandle), uintptr(key), uintptr(threadcnt), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateJobObject(jobAttr *SecurityAttributes, name *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCreateJobObjectW.Addr(), 2, uintptr(unsafe.Pointer(jobAttr)), uintptr(unsafe.Pointer(name)), 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutexEx(mutexAttrs *SecurityAttributes, name *uint16, flags uint32, desiredAccess uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateMutex(mutexAttrs *SecurityAttributes, initialOwner bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif initialOwner {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procCreateMutexW.Addr(), 3, uintptr(unsafe.Pointer(mutexAttrs)), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 || e1 == ERROR_ALREADY_EXISTS {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateNamedPipe(name *uint16, flags uint32, pipeMode uint32, maxInstances uint32, outSize uint32, inSize uint32, defaultTimeout uint32, sa *SecurityAttributes) (handle Handle, err error) {\n\tr0, _, e1 := syscall.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 = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreatePipe(readhandle *Handle, writehandle *Handle, sa *SecurityAttributes, size uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateProcess(appName *uint16, commandLine *uint16, procSecurity *SecurityAttributes, threadSecurity *SecurityAttributes, inheritHandles bool, creationFlags uint32, env *uint16, currentDir *uint16, startupInfo *StartupInfo, outProcInfo *ProcessInformation) (err error) {\n\tvar _p0 uint32\n\tif inheritHandles {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc createPseudoConsole(size uint32, in Handle, out Handle, flags uint32, pconsole *Handle) (hr error) {\n\tr0, _, _ := syscall.Syscall6(procCreatePseudoConsole.Addr(), 5, uintptr(size), uintptr(in), uintptr(out), uintptr(flags), uintptr(unsafe.Pointer(pconsole)), 0)\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CreateSymbolicLink(symlinkfilename *uint16, targetfilename *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procCreateSymbolicLinkW.Addr(), 3, uintptr(unsafe.Pointer(symlinkfilename)), uintptr(unsafe.Pointer(targetfilename)), uintptr(flags))\n\tif r1&0xff == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateToolhelp32Snapshot(flags uint32, processId uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procCreateToolhelp32Snapshot.Addr(), 2, uintptr(flags), uintptr(processId), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DefineDosDevice(flags uint32, deviceName *uint16, targetPath *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDefineDosDeviceW.Addr(), 3, uintptr(flags), uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeleteFile(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDeleteFileW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc deleteProcThreadAttributeList(attrlist *ProcThreadAttributeList) {\n\tsyscall.Syscall(procDeleteProcThreadAttributeList.Addr(), 1, uintptr(unsafe.Pointer(attrlist)), 0, 0)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DeviceIoControl(handle Handle, ioControlCode uint32, inBuffer *byte, inBufferSize uint32, outBuffer *byte, outBufferSize uint32, bytesReturned *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DuplicateHandle(hSourceProcessHandle Handle, hSourceHandle Handle, hTargetProcessHandle Handle, lpTargetHandle *Handle, dwDesiredAccess uint32, bInheritHandle bool, dwOptions uint32) (err error) {\n\tvar _p0 uint32\n\tif bInheritHandle {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 ExpandEnvironmentStrings(src *uint16, dst *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procExpandEnvironmentStringsW.Addr(), 3, uintptr(unsafe.Pointer(src)), uintptr(unsafe.Pointer(dst)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindClose(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindClose.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindCloseChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindCloseChangeNotification.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstChangeNotification(path string, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _FindFirstChangeNotification(_p0, watchSubtree, notifyFilter)\n}\n\nfunc _FindFirstChangeNotification(path *uint16, watchSubtree bool, notifyFilter uint32) (handle Handle, err error) {\n\tvar _p1 uint32\n\tif watchSubtree {\n\t\t_p1 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procFindFirstChangeNotificationW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(_p1), uintptr(notifyFilter))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findFirstFile1(name *uint16, data *win32finddata1) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstFileW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(data)), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolumeMountPoint(rootPathName *uint16, volumeMountPoint *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstVolumeMountPointW.Addr(), 3, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindFirstVolume(volumeName *uint16, bufferLength uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindFirstVolumeW.Addr(), 2, uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength), 0)\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextChangeNotification(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextChangeNotification.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findNextFile1(handle Handle, data *win32finddata1) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextFileW.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolumeMountPoint(findVolumeMountPoint Handle, volumeMountPoint *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextVolumeMountPointW.Addr(), 3, uintptr(findVolumeMountPoint), uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindNextVolume(findVolume Handle, volumeName *uint16, bufferLength uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindNextVolumeW.Addr(), 3, uintptr(findVolume), uintptr(unsafe.Pointer(volumeName)), uintptr(bufferLength))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc findResource(module Handle, name uintptr, resType uintptr) (resInfo Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procFindResourceW.Addr(), 3, uintptr(module), uintptr(name), uintptr(resType))\n\tresInfo = Handle(r0)\n\tif resInfo == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeClose(findVolume Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindVolumeClose.Addr(), 1, uintptr(findVolume), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FindVolumeMountPointClose(findVolumeMountPoint Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFindVolumeMountPointClose.Addr(), 1, uintptr(findVolumeMountPoint), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushFileBuffers(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFlushFileBuffers.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FlushViewOfFile(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procFlushViewOfFile.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc FormatMessage(flags uint32, msgsrc uintptr, msgid uint32, langid uint32, buf []uint16, args *byte) (n uint32, err error) {\n\tvar _p0 *uint16\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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 GetActiveProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.Syscall(procGetActiveProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)\n\tret = uint32(r0)\n\treturn\n}\n\nfunc GetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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 GetCurrentThreadId() (id uint32) {\n\tr0, _, _ := syscall.Syscall(procGetCurrentThreadId.Addr(), 0, 0, 0, 0)\n\tid = uint32(r0)\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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetEnvironmentVariable(name *uint16, buffer *uint16, size uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetEnvironmentVariableW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(buffer)), uintptr(size))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetExitCodeProcess(handle Handle, exitcode *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetExitCodeProcess.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(exitcode)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributesEx(name *uint16, level uint32, info *byte) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetFileAttributesExW.Addr(), 3, uintptr(unsafe.Pointer(name)), uintptr(level), uintptr(unsafe.Pointer(info)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileAttributes(name *uint16) (attrs uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetFileAttributesW.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\tattrs = uint32(r0)\n\tif attrs == INVALID_FILE_ATTRIBUTES {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandle(handle Handle, data *ByHandleFileInformation) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetFileInformationByHandle.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(data)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileInformationByHandleEx(handle Handle, class uint32, outBuffer *byte, outBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetFileInformationByHandleEx.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(outBuffer)), uintptr(outBufferLen), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetFileTime.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(ctime)), uintptr(unsafe.Pointer(atime)), uintptr(unsafe.Pointer(wtime)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileType(filehandle Handle) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetFileType.Addr(), 1, uintptr(filehandle), 0, 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFinalPathNameByHandle(file Handle, filePath *uint16, filePathSize uint32, flags uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall6(procGetFinalPathNameByHandleW.Addr(), 4, uintptr(file), uintptr(unsafe.Pointer(filePath)), uintptr(filePathSize), uintptr(flags), 0, 0)\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFullPathName(path *uint16, buflen uint32, buf *uint16, fname **uint16) (n uint32, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLargePageMinimum() (size uintptr) {\n\tr0, _, _ := syscall.Syscall(procGetLargePageMinimum.Addr(), 0, 0, 0, 0)\n\tsize = uintptr(r0)\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 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\terr = errnoErr(e1)\n\t}\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetLongPathName(path *uint16, buf *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetLongPathNameW.Addr(), 3, uintptr(unsafe.Pointer(path)), uintptr(unsafe.Pointer(buf)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetMaximumProcessorCount(groupNumber uint16) (ret uint32) {\n\tr0, _, _ := syscall.Syscall(procGetMaximumProcessorCount.Addr(), 1, uintptr(groupNumber), 0, 0)\n\tret = uint32(r0)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeHandleState(pipe Handle, state *uint32, curInstances *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32, userName *uint16, maxUserNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetNamedPipeInfo(pipe Handle, flags *uint32, outSize *uint32, inSize *uint32, maxInstances *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetOverlappedResult(handle Handle, overlapped *Overlapped, done *uint32, wait bool) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procGetOverlappedResult.Addr(), 4, uintptr(handle), uintptr(unsafe.Pointer(overlapped)), uintptr(unsafe.Pointer(done)), uintptr(_p0), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetPriorityClass(process Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetPriorityClass.Addr(), 1, uintptr(process), 0, 0)\n\tret = uint32(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcAddress(module Handle, procname string) (proc uintptr, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(procname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProcAddress(module, _p0)\n}\n\nfunc _GetProcAddress(module Handle, procname *byte) (proc uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcAddress.Addr(), 2, uintptr(module), uintptr(unsafe.Pointer(procname)), 0)\n\tproc = uintptr(r0)\n\tif proc == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessId(process Handle) (id uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetProcessId.Addr(), 1, uintptr(process), 0, 0)\n\tid = uint32(r0)\n\tif id == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getProcessPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessTimes(handle Handle, creationTime *Filetime, exitTime *Filetime, kernelTime *Filetime, userTime *Filetime) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProcessWorkingSetSizeEx(hProcess Handle, lpMinimumWorkingSetSize *uintptr, lpMaximumWorkingSetSize *uintptr, flags *uint32) {\n\tsyscall.Syscall6(procGetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(unsafe.Pointer(lpMinimumWorkingSetSize)), uintptr(unsafe.Pointer(lpMaximumWorkingSetSize)), uintptr(unsafe.Pointer(flags)), 0, 0)\n\treturn\n}\n\nfunc GetQueuedCompletionStatus(cphandle Handle, qty *uint32, key *uintptr, 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetShortPathName(longpath *uint16, shortpath *uint16, buflen uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetShortPathNameW.Addr(), 3, uintptr(unsafe.Pointer(longpath)), uintptr(unsafe.Pointer(shortpath)), uintptr(buflen))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getStartupInfo(startupInfo *StartupInfo) {\n\tsyscall.Syscall(procGetStartupInfoW.Addr(), 1, uintptr(unsafe.Pointer(startupInfo)), 0, 0)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getSystemPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getThreadPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getUserPreferredUILanguages(flags uint32, numLanguages *uint32, buf *uint16, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformationByHandle(file Handle, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumeInformation(rootPathName *uint16, volumeNameBuffer *uint16, volumeNameSize uint32, volumeNameSerialNumber *uint32, maximumComponentLength *uint32, fileSystemFlags *uint32, fileSystemNameBuffer *uint16, fileSystemNameSize uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetVolumePathNamesForVolumeName(volumeName *uint16, volumePathNames *uint16, bufferLength uint32, returnLength *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc initializeProcThreadAttributeList(attrlist *ProcThreadAttributeList, attrcount uint32, flags uint32, size *uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procInitializeProcThreadAttributeList.Addr(), 4, uintptr(unsafe.Pointer(attrlist)), uintptr(attrcount), uintptr(flags), uintptr(unsafe.Pointer(size)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWow64Process(handle Handle, isWow64 *bool) (err error) {\n\tvar _p0 uint32\n\tif *isWow64 {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall(procIsWow64Process.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(&_p0)), 0)\n\t*isWow64 = _p0 != 0\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWow64Process2(handle Handle, processMachine *uint16, nativeMachine *uint16) (err error) {\n\terr = procIsWow64Process2.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tr1, _, e1 := syscall.Syscall(procIsWow64Process2.Addr(), 3, uintptr(handle), uintptr(unsafe.Pointer(processMachine)), uintptr(unsafe.Pointer(nativeMachine)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibraryEx(libname string, zero Handle, flags uintptr) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibraryEx(_p0, zero, flags)\n}\n\nfunc _LoadLibraryEx(libname *uint16, zero Handle, flags uintptr) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procLoadLibraryExW.Addr(), 3, uintptr(unsafe.Pointer(libname)), uintptr(zero), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadLibrary(libname string) (handle Handle, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(libname)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _LoadLibrary(_p0)\n}\n\nfunc _LoadLibrary(libname *uint16) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procLoadLibraryW.Addr(), 1, uintptr(unsafe.Pointer(libname)), 0, 0)\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LoadResource(module Handle, resInfo Handle) (resData Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procLoadResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0)\n\tresData = Handle(r0)\n\tif resData == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalAlloc(flags uint32, length uint32) (ptr uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procLocalAlloc.Addr(), 2, uintptr(flags), uintptr(length), 0)\n\tptr = uintptr(r0)\n\tif ptr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LocalFree(hmem Handle) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procLocalFree.Addr(), 1, uintptr(hmem), 0, 0)\n\thandle = Handle(r0)\n\tif handle != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockFileEx(file Handle, flags uint32, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procLockFileEx.Addr(), 6, uintptr(file), uintptr(flags), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc LockResource(resData Handle) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall(procLockResource.Addr(), 1, uintptr(resData), 0, 0)\n\taddr = uintptr(r0)\n\tif addr == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MapViewOfFile(handle Handle, access uint32, offsetHigh uint32, offsetLow uint32, length uintptr) (addr uintptr, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32First(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procModule32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Module32Next(snapshot Handle, moduleEntry *ModuleEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procModule32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(moduleEntry)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFileEx(from *uint16, to *uint16, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMoveFileExW.Addr(), 3, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), uintptr(flags))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MoveFile(from *uint16, to *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procMoveFileW.Addr(), 2, uintptr(unsafe.Pointer(from)), uintptr(unsafe.Pointer(to)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc MultiByteToWideChar(codePage uint32, dwFlags uint32, str *byte, nstr int32, wchar *uint16, nwchar int32) (nwrite int32, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenEvent(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenEventW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenMutex(desiredAccess uint32, inheritHandle bool, name *uint16) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenMutexW.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(unsafe.Pointer(name)))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenProcess(desiredAccess uint32, inheritHandle bool, processId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenProcess.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(processId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc OpenThread(desiredAccess uint32, inheritHandle bool, threadId uint32) (handle Handle, err error) {\n\tvar _p0 uint32\n\tif inheritHandle {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall(procOpenThread.Addr(), 3, uintptr(desiredAccess), uintptr(_p0), uintptr(threadId))\n\thandle = Handle(r0)\n\tif handle == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PostQueuedCompletionStatus(cphandle Handle, qty uint32, key uintptr, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procPostQueuedCompletionStatus.Addr(), 4, uintptr(cphandle), uintptr(qty), uintptr(key), uintptr(unsafe.Pointer(overlapped)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32First(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procProcess32FirstW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Process32Next(snapshot Handle, procEntry *ProcessEntry32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procProcess32NextW.Addr(), 2, uintptr(snapshot), uintptr(unsafe.Pointer(procEntry)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ProcessIdToSessionId(pid uint32, sessionid *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procProcessIdToSessionId.Addr(), 2, uintptr(pid), uintptr(unsafe.Pointer(sessionid)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc PulseEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procPulseEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryDosDevice(deviceName *uint16, targetPath *uint16, max uint32) (n uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procQueryDosDeviceW.Addr(), 3, uintptr(unsafe.Pointer(deviceName)), uintptr(unsafe.Pointer(targetPath)), uintptr(max))\n\tn = uint32(r0)\n\tif n == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryFullProcessImageName(proc Handle, flags uint32, exeName *uint16, size *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryFullProcessImageNameW.Addr(), 4, uintptr(proc), uintptr(flags), uintptr(unsafe.Pointer(exeName)), uintptr(unsafe.Pointer(size)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryInformationJobObject(job Handle, JobObjectInformationClass int32, JobObjectInformation uintptr, JobObjectInformationLength uint32, retlen *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procQueryInformationJobObject.Addr(), 5, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), uintptr(unsafe.Pointer(retlen)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadConsole(console Handle, buf *uint16, toread uint32, read *uint32, inputControl *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadDirectoryChanges(handle Handle, buf *byte, buflen uint32, watchSubTree bool, mask uint32, retlen *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tvar _p0 uint32\n\tif watchSubTree {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc readFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReadProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesRead *uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procReadProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesRead)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ReleaseMutex(mutex Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procReleaseMutex.Addr(), 1, uintptr(mutex), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procRemoveDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc RemoveDllDirectory(cookie uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procRemoveDllDirectory.Addr(), 1, uintptr(cookie), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ResetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procResetEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc resizePseudoConsole(pconsole Handle, size uint32) (hr error) {\n\tr0, _, _ := syscall.Syscall(procResizePseudoConsole.Addr(), 2, uintptr(pconsole), uintptr(size), 0)\n\tif r0 != 0 {\n\t\thr = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc ResumeThread(thread Handle) (ret uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procResumeThread.Addr(), 1, uintptr(thread), 0, 0)\n\tret = uint32(r0)\n\tif ret == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCommTimeouts(handle Handle, timeouts *CommTimeouts) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetCommTimeouts.Addr(), 2, uintptr(handle), uintptr(unsafe.Pointer(timeouts)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setConsoleCursorPosition(console Handle, position uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetConsoleCursorPosition.Addr(), 2, uintptr(console), uintptr(position), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetConsoleMode(console Handle, mode uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetConsoleMode.Addr(), 2, uintptr(console), uintptr(mode), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetCurrentDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetCurrentDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDefaultDllDirectories(directoryFlags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetDefaultDllDirectories.Addr(), 1, uintptr(directoryFlags), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetDllDirectory(path string) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(path)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _SetDllDirectory(_p0)\n}\n\nfunc _SetDllDirectory(path *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetDllDirectoryW.Addr(), 1, uintptr(unsafe.Pointer(path)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEndOfFile(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEndOfFile.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileValidData(handle Handle, validDataLength int64) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileValidData.Addr(), 2, uintptr(handle), uintptr(validDataLength), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetEnvironmentVariable(name *uint16, value *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEnvironmentVariableW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(value)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\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 SetEvent(event Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetEvent.Addr(), 1, uintptr(event), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileAttributes(name *uint16, attrs uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileAttributesW.Addr(), 2, uintptr(unsafe.Pointer(name)), uintptr(attrs), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileCompletionNotificationModes(handle Handle, flags uint8) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetFileCompletionNotificationModes.Addr(), 2, uintptr(handle), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileInformationByHandle(handle Handle, class uint32, inBuffer *byte, inBufferLen uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetFileInformationByHandle.Addr(), 4, uintptr(handle), uintptr(class), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFilePointer(handle Handle, lowoffset int32, highoffsetptr *int32, whence uint32) (newlowoffset uint32, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetFileTime(handle Handle, ctime *Filetime, atime *Filetime, wtime *Filetime) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetInformationJobObject(job Handle, JobObjectInformationClass uint32, JobObjectInformation uintptr, JobObjectInformationLength uint32) (ret int, err error) {\n\tr0, _, e1 := syscall.Syscall6(procSetInformationJobObject.Addr(), 4, uintptr(job), uintptr(JobObjectInformationClass), uintptr(JobObjectInformation), uintptr(JobObjectInformationLength), 0, 0)\n\tret = int(r0)\n\tif ret == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetNamedPipeHandleState(pipe Handle, state *uint32, maxCollectionCount *uint32, collectDataTimeout *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetNamedPipeHandleState.Addr(), 4, uintptr(pipe), uintptr(unsafe.Pointer(state)), uintptr(unsafe.Pointer(maxCollectionCount)), uintptr(unsafe.Pointer(collectDataTimeout)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetPriorityClass(process Handle, priorityClass uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetPriorityClass.Addr(), 2, uintptr(process), uintptr(priorityClass), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessPriorityBoost(process Handle, disable bool) (err error) {\n\tvar _p0 uint32\n\tif disable {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall(procSetProcessPriorityBoost.Addr(), 2, uintptr(process), uintptr(_p0), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessShutdownParameters(level uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetProcessShutdownParameters.Addr(), 2, uintptr(level), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetProcessWorkingSetSizeEx(hProcess Handle, dwMinimumWorkingSetSize uintptr, dwMaximumWorkingSetSize uintptr, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetProcessWorkingSetSizeEx.Addr(), 4, uintptr(hProcess), uintptr(dwMinimumWorkingSetSize), uintptr(dwMaximumWorkingSetSize), uintptr(flags), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetStdHandle(stdhandle uint32, handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeLabel(rootPathName *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetVolumeLabelW.Addr(), 2, uintptr(unsafe.Pointer(rootPathName)), uintptr(unsafe.Pointer(volumeName)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetVolumeMountPoint(volumeMountPoint *uint16, volumeName *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetVolumeMountPointW.Addr(), 2, uintptr(unsafe.Pointer(volumeMountPoint)), uintptr(unsafe.Pointer(volumeName)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SizeofResource(module Handle, resInfo Handle) (size uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procSizeofResource.Addr(), 2, uintptr(module), uintptr(resInfo), 0)\n\tsize = uint32(r0)\n\tif size == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SleepEx(milliseconds uint32, alertable bool) (ret uint32) {\n\tvar _p0 uint32\n\tif alertable {\n\t\t_p0 = 1\n\t}\n\tr0, _, _ := syscall.Syscall(procSleepEx.Addr(), 2, uintptr(milliseconds), uintptr(_p0), 0)\n\tret = uint32(r0)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnlockFileEx(file Handle, reserved uint32, bytesLow uint32, bytesHigh uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procUnlockFileEx.Addr(), 5, uintptr(file), uintptr(reserved), uintptr(bytesLow), uintptr(bytesHigh), uintptr(unsafe.Pointer(overlapped)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc UnmapViewOfFile(addr uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procUnmapViewOfFile.Addr(), 1, uintptr(addr), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc updateProcThreadAttribute(attrlist *ProcThreadAttributeList, flags uint32, attr uintptr, value unsafe.Pointer, size uintptr, prevvalue unsafe.Pointer, returnedsize *uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procUpdateProcThreadAttribute.Addr(), 7, uintptr(unsafe.Pointer(attrlist)), uintptr(flags), uintptr(attr), uintptr(value), uintptr(size), uintptr(prevvalue), uintptr(unsafe.Pointer(returnedsize)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualAlloc(address uintptr, size uintptr, alloctype uint32, protect uint32) (value uintptr, err error) {\n\tr0, _, e1 := syscall.Syscall6(procVirtualAlloc.Addr(), 4, uintptr(address), uintptr(size), uintptr(alloctype), uintptr(protect), 0, 0)\n\tvalue = uintptr(r0)\n\tif value == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualFree(address uintptr, size uintptr, freetype uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualFree.Addr(), 3, uintptr(address), uintptr(size), uintptr(freetype))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualLock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualLock.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtect(address uintptr, size uintptr, newprotect uint32, oldprotect *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procVirtualProtect.Addr(), 4, uintptr(address), uintptr(size), uintptr(newprotect), uintptr(unsafe.Pointer(oldprotect)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualProtectEx(process Handle, address uintptr, size uintptr, newProtect uint32, oldProtect *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procVirtualProtectEx.Addr(), 5, uintptr(process), uintptr(address), uintptr(size), uintptr(newProtect), uintptr(unsafe.Pointer(oldProtect)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQuery(address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualQuery.Addr(), 3, uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualQueryEx(process Handle, address uintptr, buffer *MemoryBasicInformation, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procVirtualQueryEx.Addr(), 4, uintptr(process), uintptr(address), uintptr(unsafe.Pointer(buffer)), uintptr(length), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VirtualUnlock(addr uintptr, length uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procVirtualUnlock.Addr(), 2, uintptr(addr), uintptr(length), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSGetActiveConsoleSessionId() (sessionID uint32) {\n\tr0, _, _ := syscall.Syscall(procWTSGetActiveConsoleSessionId.Addr(), 0, 0, 0, 0)\n\tsessionID = uint32(r0)\n\treturn\n}\n\nfunc waitForMultipleObjects(count uint32, handles uintptr, waitAll bool, waitMilliseconds uint32) (event uint32, err error) {\n\tvar _p0 uint32\n\tif waitAll {\n\t\t_p0 = 1\n\t}\n\tr0, _, e1 := syscall.Syscall6(procWaitForMultipleObjects.Addr(), 4, uintptr(count), uintptr(handles), uintptr(_p0), uintptr(waitMilliseconds), 0, 0)\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WaitForSingleObject(handle Handle, waitMilliseconds uint32) (event uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procWaitForSingleObject.Addr(), 2, uintptr(handle), uintptr(waitMilliseconds), 0)\n\tevent = uint32(r0)\n\tif event == 0xffffffff {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteConsole(console Handle, buf *uint16, towrite uint32, written *uint32, reserved *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc writeFile(handle Handle, buf []byte, done *uint32, overlapped *Overlapped) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WriteProcessMemory(process Handle, baseAddress uintptr, buffer *byte, size uintptr, numberOfBytesWritten *uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procWriteProcessMemory.Addr(), 5, uintptr(process), uintptr(baseAddress), uintptr(unsafe.Pointer(buffer)), uintptr(size), uintptr(unsafe.Pointer(numberOfBytesWritten)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc AcceptEx(ls Handle, as Handle, buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, recvd *uint32, overlapped *Overlapped) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetAcceptExSockaddrs(buf *byte, rxdatalen uint32, laddrlen uint32, raddrlen uint32, lrsa **RawSockaddrAny, lrsalen *int32, rrsa **RawSockaddrAny, rrsalen *int32) {\n\tsyscall.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 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\terr = errnoErr(e1)\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 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 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 NtCreateFile(handle *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, allocationSize *int64, attributes uint32, share uint32, disposition uint32, options uint32, eabuffer uintptr, ealength uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall12(procNtCreateFile.Addr(), 11, uintptr(unsafe.Pointer(handle)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(allocationSize)), uintptr(attributes), uintptr(share), uintptr(disposition), uintptr(options), uintptr(eabuffer), uintptr(ealength), 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtCreateNamedPipeFile(pipe *Handle, access uint32, oa *OBJECT_ATTRIBUTES, iosb *IO_STATUS_BLOCK, share uint32, disposition uint32, options uint32, typ uint32, readMode uint32, completionMode uint32, maxInstances uint32, inboundQuota uint32, outputQuota uint32, timeout *int64) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall15(procNtCreateNamedPipeFile.Addr(), 14, uintptr(unsafe.Pointer(pipe)), uintptr(access), uintptr(unsafe.Pointer(oa)), uintptr(unsafe.Pointer(iosb)), uintptr(share), uintptr(disposition), uintptr(options), uintptr(typ), uintptr(readMode), uintptr(completionMode), uintptr(maxInstances), uintptr(inboundQuota), uintptr(outputQuota), uintptr(unsafe.Pointer(timeout)), 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQueryInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procNtQueryInformationProcess.Addr(), 5, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), uintptr(unsafe.Pointer(retLen)), 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtQuerySystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32, retLen *uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procNtQuerySystemInformation.Addr(), 4, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen), uintptr(unsafe.Pointer(retLen)), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationFile(handle Handle, iosb *IO_STATUS_BLOCK, inBuffer *byte, inBufferLen uint32, class uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procNtSetInformationFile.Addr(), 5, uintptr(handle), uintptr(unsafe.Pointer(iosb)), uintptr(unsafe.Pointer(inBuffer)), uintptr(inBufferLen), uintptr(class), 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetInformationProcess(proc Handle, procInfoClass int32, procInfo unsafe.Pointer, procInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procNtSetInformationProcess.Addr(), 4, uintptr(proc), uintptr(procInfoClass), uintptr(procInfo), uintptr(procInfoLen), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc NtSetSystemInformation(sysInfoClass int32, sysInfo unsafe.Pointer, sysInfoLen uint32) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall(procNtSetSystemInformation.Addr(), 3, uintptr(sysInfoClass), uintptr(sysInfo), uintptr(sysInfoLen))\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlAddFunctionTable(functionTable *RUNTIME_FUNCTION, entryCount uint32, baseAddress uintptr) (ret bool) {\n\tr0, _, _ := syscall.Syscall(procRtlAddFunctionTable.Addr(), 3, uintptr(unsafe.Pointer(functionTable)), uintptr(entryCount), uintptr(baseAddress))\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDefaultNpAcl(acl **ACL) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall(procRtlDefaultNpAcl.Addr(), 1, uintptr(unsafe.Pointer(acl)), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDeleteFunctionTable(functionTable *RUNTIME_FUNCTION) (ret bool) {\n\tr0, _, _ := syscall.Syscall(procRtlDeleteFunctionTable.Addr(), 1, uintptr(unsafe.Pointer(functionTable)), 0, 0)\n\tret = r0 != 0\n\treturn\n}\n\nfunc RtlDosPathNameToNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procRtlDosPathNameToNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlDosPathNameToRelativeNtPathName(dosName *uint16, ntName *NTUnicodeString, ntFileNamePart *uint16, relativeName *RTL_RELATIVE_NAME) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall6(procRtlDosPathNameToRelativeNtPathName_U_WithStatus.Addr(), 4, uintptr(unsafe.Pointer(dosName)), uintptr(unsafe.Pointer(ntName)), uintptr(unsafe.Pointer(ntFileNamePart)), uintptr(unsafe.Pointer(relativeName)), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlGetCurrentPeb() (peb *PEB) {\n\tr0, _, _ := syscall.Syscall(procRtlGetCurrentPeb.Addr(), 0, 0, 0, 0)\n\tpeb = (*PEB)(unsafe.Pointer(r0))\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 rtlGetVersion(info *OsVersionInfoEx) (ntstatus error) {\n\tr0, _, _ := syscall.Syscall(procRtlGetVersion.Addr(), 1, uintptr(unsafe.Pointer(info)), 0, 0)\n\tif r0 != 0 {\n\t\tntstatus = NTStatus(r0)\n\t}\n\treturn\n}\n\nfunc RtlInitString(destinationString *NTString, sourceString *byte) {\n\tsyscall.Syscall(procRtlInitString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0)\n\treturn\n}\n\nfunc RtlInitUnicodeString(destinationString *NTUnicodeString, sourceString *uint16) {\n\tsyscall.Syscall(procRtlInitUnicodeString.Addr(), 2, uintptr(unsafe.Pointer(destinationString)), uintptr(unsafe.Pointer(sourceString)), 0)\n\treturn\n}\n\nfunc rtlNtStatusToDosErrorNoTeb(ntstatus NTStatus) (ret syscall.Errno) {\n\tr0, _, _ := syscall.Syscall(procRtlNtStatusToDosErrorNoTeb.Addr(), 1, uintptr(ntstatus), 0, 0)\n\tret = syscall.Errno(r0)\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 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 CoGetObject(name *uint16, bindOpts *BIND_OPTS3, guid *GUID, functionTable **uintptr) (ret error) {\n\tr0, _, _ := syscall.Syscall6(procCoGetObject.Addr(), 4, uintptr(unsafe.Pointer(name)), uintptr(unsafe.Pointer(bindOpts)), uintptr(unsafe.Pointer(guid)), uintptr(unsafe.Pointer(functionTable)), 0, 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc CoInitializeEx(reserved uintptr, coInit uint32) (ret error) {\n\tr0, _, _ := syscall.Syscall(procCoInitializeEx.Addr(), 2, uintptr(reserved), uintptr(coInit), 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 CoUninitialize() {\n\tsyscall.Syscall(procCoUninitialize.Addr(), 0, 0, 0, 0)\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 EnumProcessModules(process Handle, module *Handle, cb uint32, cbNeeded *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procEnumProcessModules.Addr(), 4, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumProcessModulesEx(process Handle, module *Handle, cb uint32, cbNeeded *uint32, filterFlag uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procEnumProcessModulesEx.Addr(), 5, uintptr(process), uintptr(unsafe.Pointer(module)), uintptr(cb), uintptr(unsafe.Pointer(cbNeeded)), uintptr(filterFlag), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc enumProcesses(processIds *uint32, nSize uint32, bytesReturned *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procEnumProcesses.Addr(), 3, uintptr(unsafe.Pointer(processIds)), uintptr(nSize), uintptr(unsafe.Pointer(bytesReturned)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleBaseName(process Handle, module Handle, baseName *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetModuleBaseNameW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(baseName)), uintptr(size), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleFileNameEx(process Handle, module Handle, filename *uint16, size uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetModuleFileNameExW.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(filename)), uintptr(size), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetModuleInformation(process Handle, module Handle, modinfo *ModuleInfo, cb uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetModuleInformation.Addr(), 4, uintptr(process), uintptr(module), uintptr(unsafe.Pointer(modinfo)), uintptr(cb), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc QueryWorkingSetEx(process Handle, pv uintptr, cb uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procQueryWorkingSetEx.Addr(), 3, uintptr(process), uintptr(pv), uintptr(cb))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SubscribeServiceChangeNotifications(service Handle, eventType uint32, callback uintptr, callbackCtx uintptr, subscription *uintptr) (ret error) {\n\tret = procSubscribeServiceChangeNotifications.Find()\n\tif ret != nil {\n\t\treturn\n\t}\n\tr0, _, _ := syscall.Syscall6(procSubscribeServiceChangeNotifications.Addr(), 5, uintptr(service), uintptr(eventType), uintptr(callback), uintptr(callbackCtx), uintptr(unsafe.Pointer(subscription)), 0)\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc UnsubscribeServiceChangeNotifications(subscription uintptr) (err error) {\n\terr = procUnsubscribeServiceChangeNotifications.Find()\n\tif err != nil {\n\t\treturn\n\t}\n\tsyscall.Syscall(procUnsubscribeServiceChangeNotifications.Addr(), 1, uintptr(subscription), 0, 0)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TranslateName(accName *uint16, accNameFormat uint32, desiredNameFormat uint32, translatedName *uint16, nSize *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiBuildDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiBuildDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCallClassInstaller(installFunction DI_FUNCTION, deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiCallClassInstaller.Addr(), 3, uintptr(installFunction), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiCancelDriverInfoSearch(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiCancelDriverInfoSearch.Addr(), 1, uintptr(deviceInfoSet), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassGuidsFromNameEx(className *uint16, classGuidList *GUID, classGuidListSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiClassGuidsFromNameExW.Addr(), 6, uintptr(unsafe.Pointer(className)), uintptr(unsafe.Pointer(classGuidList)), uintptr(classGuidListSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiClassNameFromGuidEx(classGUID *GUID, className *uint16, classNameSize uint32, requiredSize *uint32, machineName *uint16, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiClassNameFromGuidExW.Addr(), 6, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(className)), uintptr(classNameSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(unsafe.Pointer(machineName)), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfoListEx(classGUID *GUID, hwndParent uintptr, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.Syscall6(procSetupDiCreateDeviceInfoListExW.Addr(), 4, uintptr(unsafe.Pointer(classGUID)), uintptr(hwndParent), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiCreateDeviceInfo(deviceInfoSet DevInfo, DeviceName *uint16, classGUID *GUID, DeviceDescription *uint16, hwndParent uintptr, CreationFlags DICD, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procSetupDiCreateDeviceInfoW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(DeviceName)), uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(DeviceDescription)), uintptr(hwndParent), uintptr(CreationFlags), uintptr(unsafe.Pointer(deviceInfoData)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDeviceInfoList(deviceInfoSet DevInfo) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiDestroyDeviceInfoList.Addr(), 1, uintptr(deviceInfoSet), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiDestroyDriverInfoList(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiDestroyDriverInfoList.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDeviceInfo(deviceInfoSet DevInfo, memberIndex uint32, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiEnumDeviceInfo.Addr(), 3, uintptr(deviceInfoSet), uintptr(memberIndex), uintptr(unsafe.Pointer(deviceInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiEnumDriverInfo(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverType SPDIT, memberIndex uint32, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiEnumDriverInfoW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(driverType), uintptr(memberIndex), uintptr(unsafe.Pointer(driverInfoData)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetClassDevsEx(classGUID *GUID, Enumerator *uint16, hwndParent uintptr, Flags DIGCF, deviceInfoSet DevInfo, machineName *uint16, reserved uintptr) (handle DevInfo, err error) {\n\tr0, _, e1 := syscall.Syscall9(procSetupDiGetClassDevsExW.Addr(), 7, uintptr(unsafe.Pointer(classGUID)), uintptr(unsafe.Pointer(Enumerator)), uintptr(hwndParent), uintptr(Flags), uintptr(deviceInfoSet), uintptr(unsafe.Pointer(machineName)), uintptr(reserved), 0, 0)\n\thandle = DevInfo(r0)\n\tif handle == DevInfo(InvalidHandle) {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiGetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiGetClassInstallParamsW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), uintptr(unsafe.Pointer(requiredSize)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInfoListDetail(deviceInfoSet DevInfo, deviceInfoSetDetailData *DevInfoListDetailData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInfoListDetailW.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoSetDetailData)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiGetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceInstanceId(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, instanceId *uint16, instanceIdSize uint32, instanceIdRequiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiGetDeviceInstanceIdW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(instanceId)), uintptr(instanceIdSize), uintptr(unsafe.Pointer(instanceIdRequiredSize)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, propertyKey *DEVPROPKEY, propertyType *DEVPROPTYPE, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32, flags uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procSetupDiGetDevicePropertyW.Addr(), 8, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(propertyKey)), uintptr(unsafe.Pointer(propertyType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), uintptr(flags), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyRegDataType *uint32, propertyBuffer *byte, propertyBufferSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall9(procSetupDiGetDeviceRegistryPropertyW.Addr(), 7, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyRegDataType)), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), uintptr(unsafe.Pointer(requiredSize)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetDriverInfoDetail(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData, driverInfoDetailData *DrvInfoDetailData, driverInfoDetailDataSize uint32, requiredSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiGetDriverInfoDetailW.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)), uintptr(unsafe.Pointer(driverInfoDetailData)), uintptr(driverInfoDetailDataSize), uintptr(unsafe.Pointer(requiredSize)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiGetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiGetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiOpenDevRegKey(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, Scope DICS_FLAG, HwProfile uint32, KeyType DIREG, samDesired uint32) (key Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procSetupDiOpenDevRegKey.Addr(), 6, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(Scope), uintptr(HwProfile), uintptr(KeyType), uintptr(samDesired))\n\tkey = Handle(r0)\n\tif key == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetClassInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, classInstallParams *ClassInstallHeader, classInstallParamsSize uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiSetClassInstallParamsW.Addr(), 4, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(classInstallParams)), uintptr(classInstallParamsSize), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetDeviceInstallParams(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, deviceInstallParams *DevInstallParams) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiSetDeviceInstallParamsW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(deviceInstallParams)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupDiSetDeviceRegistryProperty(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, property SPDRP, propertyBuffer *byte, propertyBufferSize uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procSetupDiSetDeviceRegistryPropertyW.Addr(), 5, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(property), uintptr(unsafe.Pointer(propertyBuffer)), uintptr(propertyBufferSize), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDevice(deviceInfoSet DevInfo, deviceInfoData *DevInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDevice.Addr(), 2, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc SetupDiSetSelectedDriver(deviceInfoSet DevInfo, deviceInfoData *DevInfoData, driverInfoData *DrvInfoData) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupDiSetSelectedDriverW.Addr(), 3, uintptr(deviceInfoSet), uintptr(unsafe.Pointer(deviceInfoData)), uintptr(unsafe.Pointer(driverInfoData)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc setupUninstallOEMInf(infFileName *uint16, flags SUOI, reserved uintptr) (err error) {\n\tr1, _, e1 := syscall.Syscall(procSetupUninstallOEMInfW.Addr(), 3, uintptr(unsafe.Pointer(infFileName)), uintptr(flags), uintptr(reserved))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc commandLineToArgv(cmd *uint16, argc *int32) (argv **uint16, err error) {\n\tr0, _, e1 := syscall.Syscall(procCommandLineToArgvW.Addr(), 2, uintptr(unsafe.Pointer(cmd)), uintptr(unsafe.Pointer(argc)), 0)\n\targv = (**uint16)(unsafe.Pointer(r0))\n\tif argv == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shGetKnownFolderPath(id *KNOWNFOLDERID, flags uint32, token Token, path **uint16) (ret error) {\n\tr0, _, _ := syscall.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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc EnumChildWindows(hwnd HWND, enumFunc uintptr, param unsafe.Pointer) {\n\tsyscall.Syscall(procEnumChildWindows.Addr(), 3, uintptr(hwnd), uintptr(enumFunc), uintptr(param))\n\treturn\n}\n\nfunc EnumWindows(enumFunc uintptr, param unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.Syscall(procEnumWindows.Addr(), 2, uintptr(enumFunc), uintptr(param), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc ExitWindowsEx(flags uint32, reason uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procExitWindowsEx.Addr(), 2, uintptr(flags), uintptr(reason), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetClassName(hwnd HWND, className *uint16, maxCount int32) (copied int32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetClassNameW.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(className)), uintptr(maxCount))\n\tcopied = int32(r0)\n\tif copied == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetDesktopWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.Syscall(procGetDesktopWindow.Addr(), 0, 0, 0, 0)\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetForegroundWindow() (hwnd HWND) {\n\tr0, _, _ := syscall.Syscall(procGetForegroundWindow.Addr(), 0, 0, 0, 0)\n\thwnd = HWND(r0)\n\treturn\n}\n\nfunc GetGUIThreadInfo(thread uint32, info *GUIThreadInfo) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetGUIThreadInfo.Addr(), 2, uintptr(thread), uintptr(unsafe.Pointer(info)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetShellWindow() (shellWindow HWND) {\n\tr0, _, _ := syscall.Syscall(procGetShellWindow.Addr(), 0, 0, 0, 0)\n\tshellWindow = HWND(r0)\n\treturn\n}\n\nfunc GetWindowThreadProcessId(hwnd HWND, pid *uint32) (tid uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetWindowThreadProcessId.Addr(), 2, uintptr(hwnd), uintptr(unsafe.Pointer(pid)), 0)\n\ttid = uint32(r0)\n\tif tid == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc IsWindow(hwnd HWND) (isWindow bool) {\n\tr0, _, _ := syscall.Syscall(procIsWindow.Addr(), 1, uintptr(hwnd), 0, 0)\n\tisWindow = r0 != 0\n\treturn\n}\n\nfunc IsWindowUnicode(hwnd HWND) (isUnicode bool) {\n\tr0, _, _ := syscall.Syscall(procIsWindowUnicode.Addr(), 1, uintptr(hwnd), 0, 0)\n\tisUnicode = r0 != 0\n\treturn\n}\n\nfunc IsWindowVisible(hwnd HWND) (isVisible bool) {\n\tr0, _, _ := syscall.Syscall(procIsWindowVisible.Addr(), 1, uintptr(hwnd), 0, 0)\n\tisVisible = r0 != 0\n\treturn\n}\n\nfunc MessageBox(hwnd HWND, 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc CreateEnvironmentBlock(block **uint16, token Token, inheritExisting bool) (err error) {\n\tvar _p0 uint32\n\tif inheritExisting {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall(procCreateEnvironmentBlock.Addr(), 3, uintptr(unsafe.Pointer(block)), uintptr(token), uintptr(_p0))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc DestroyEnvironmentBlock(block *uint16) (err error) {\n\tr1, _, e1 := syscall.Syscall(procDestroyEnvironmentBlock.Addr(), 1, uintptr(unsafe.Pointer(block)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetUserProfileDirectory(t Token, dir *uint16, dirLen *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procGetUserProfileDirectoryW.Addr(), 3, uintptr(t), uintptr(unsafe.Pointer(dir)), uintptr(unsafe.Pointer(dirLen)))\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfoSize(filename string, zeroHandle *Handle) (bufSize uint32, err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfoSize(_p0, zeroHandle)\n}\n\nfunc _GetFileVersionInfoSize(filename *uint16, zeroHandle *Handle) (bufSize uint32, err error) {\n\tr0, _, e1 := syscall.Syscall(procGetFileVersionInfoSizeW.Addr(), 2, uintptr(unsafe.Pointer(filename)), uintptr(unsafe.Pointer(zeroHandle)), 0)\n\tbufSize = uint32(r0)\n\tif bufSize == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetFileVersionInfo(filename string, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(filename)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetFileVersionInfo(_p0, handle, bufSize, buffer)\n}\n\nfunc _GetFileVersionInfo(filename *uint16, handle uint32, bufSize uint32, buffer unsafe.Pointer) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procGetFileVersionInfoW.Addr(), 4, uintptr(unsafe.Pointer(filename)), uintptr(handle), uintptr(bufSize), uintptr(buffer), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc VerQueryValue(block unsafe.Pointer, subBlock string, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tvar _p0 *uint16\n\t_p0, err = syscall.UTF16PtrFromString(subBlock)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _VerQueryValue(block, _p0, pointerToBufferPointer, bufSize)\n}\n\nfunc _VerQueryValue(block unsafe.Pointer, subBlock *uint16, pointerToBufferPointer unsafe.Pointer, bufSize *uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procVerQueryValueW.Addr(), 4, uintptr(block), uintptr(unsafe.Pointer(subBlock)), uintptr(pointerToBufferPointer), uintptr(unsafe.Pointer(bufSize)), 0, 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeBeginPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(proctimeBeginPeriod.Addr(), 1, uintptr(period), 0, 0)\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc TimeEndPeriod(period uint32) (err error) {\n\tr1, _, e1 := syscall.Syscall(proctimeEndPeriod.Addr(), 1, uintptr(period), 0, 0)\n\tif r1 != 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WinVerifyTrustEx(hwnd HWND, actionId *GUID, data *WinTrustData) (ret error) {\n\tr0, _, _ := syscall.Syscall(procWinVerifyTrustEx.Addr(), 3, uintptr(hwnd), uintptr(unsafe.Pointer(actionId)), uintptr(unsafe.Pointer(data)))\n\tif r0 != 0 {\n\t\tret = syscall.Errno(r0)\n\t}\n\treturn\n}\n\nfunc FreeAddrInfoW(addrinfo *AddrinfoW) {\n\tsyscall.Syscall(procFreeAddrInfoW.Addr(), 1, uintptr(unsafe.Pointer(addrinfo)), 0, 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 WSACleanup() (err error) {\n\tr1, _, e1 := syscall.Syscall(procWSACleanup.Addr(), 0, 0, 0, 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAEnumProtocols(protocols *int32, protocolBuffer *WSAProtocolInfo, bufferLength *uint32) (n int32, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAGetOverlappedResult(h Handle, o *Overlapped, bytes *uint32, wait bool, flags *uint32) (err error) {\n\tvar _p0 uint32\n\tif wait {\n\t\t_p0 = 1\n\t}\n\tr1, _, e1 := syscall.Syscall6(procWSAGetOverlappedResult.Addr(), 5, uintptr(h), uintptr(unsafe.Pointer(o)), uintptr(unsafe.Pointer(bytes)), uintptr(_p0), uintptr(unsafe.Pointer(flags)), 0)\n\tif r1 == 0 {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAIoctl(s Handle, iocc uint32, inbuf *byte, cbif uint32, outbuf *byte, cbob uint32, cbbr *uint32, overlapped *Overlapped, completionRoutine uintptr) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceBegin(querySet *WSAQUERYSET, flags uint32, handle *Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procWSALookupServiceBeginW.Addr(), 3, uintptr(unsafe.Pointer(querySet)), uintptr(flags), uintptr(unsafe.Pointer(handle)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceEnd(handle Handle) (err error) {\n\tr1, _, e1 := syscall.Syscall(procWSALookupServiceEnd.Addr(), 1, uintptr(handle), 0, 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSALookupServiceNext(handle Handle, flags uint32, size *int32, querySet *WSAQUERYSET) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procWSALookupServiceNextW.Addr(), 4, uintptr(handle), uintptr(flags), uintptr(unsafe.Pointer(size)), uintptr(unsafe.Pointer(querySet)), 0, 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecv(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSARecvFrom(s Handle, bufs *WSABuf, bufcnt uint32, recvd *uint32, flags *uint32, from *RawSockaddrAny, fromlen *int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASend(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASendTo(s Handle, bufs *WSABuf, bufcnt uint32, sent *uint32, flags uint32, to *RawSockaddrAny, tolen int32, overlapped *Overlapped, croutine *byte) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSASocket(af int32, typ int32, protocol int32, protoInfo *WSAProtocolInfo, group uint32, flags uint32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall6(procWSASocketW.Addr(), 6, uintptr(af), uintptr(typ), uintptr(protocol), uintptr(unsafe.Pointer(protoInfo)), uintptr(group), uintptr(flags))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WSAStartup(verreq uint32, data *WSAData) (sockerr error) {\n\tr0, _, _ := syscall.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 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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetHostByName(name string) (h *Hostent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetHostByName(_p0)\n}\n\nfunc _GetHostByName(name *byte) (h *Hostent, err error) {\n\tr0, _, e1 := syscall.Syscall(procgethostbyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\th = (*Hostent)(unsafe.Pointer(r0))\n\tif h == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc getpeername(s Handle, rsa *RawSockaddrAny, addrlen *int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procgetpeername.Addr(), 3, uintptr(s), uintptr(unsafe.Pointer(rsa)), uintptr(unsafe.Pointer(addrlen)))\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetProtoByName(name string) (p *Protoent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetProtoByName(_p0)\n}\n\nfunc _GetProtoByName(name *byte) (p *Protoent, err error) {\n\tr0, _, e1 := syscall.Syscall(procgetprotobyname.Addr(), 1, uintptr(unsafe.Pointer(name)), 0, 0)\n\tp = (*Protoent)(unsafe.Pointer(r0))\n\tif p == nil {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc GetServByName(name string, proto string) (s *Servent, err error) {\n\tvar _p0 *byte\n\t_p0, err = syscall.BytePtrFromString(name)\n\tif err != nil {\n\t\treturn\n\t}\n\tvar _p1 *byte\n\t_p1, err = syscall.BytePtrFromString(proto)\n\tif err != nil {\n\t\treturn\n\t}\n\treturn _GetServByName(_p0, _p1)\n}\n\nfunc _GetServByName(name *byte, proto *byte) (s *Servent, err error) {\n\tr0, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Getsockopt(s Handle, level int32, optname int32, optval *byte, optlen *int32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc sendto(s Handle, buf []byte, flags int32, to unsafe.Pointer, tolen int32) (err error) {\n\tvar _p0 *byte\n\tif len(buf) > 0 {\n\t\t_p0 = &buf[0]\n\t}\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc Setsockopt(s Handle, level int32, optname int32, optval *byte, optlen int32) (err error) {\n\tr1, _, e1 := syscall.Syscall6(procsetsockopt.Addr(), 5, uintptr(s), uintptr(level), uintptr(optname), uintptr(unsafe.Pointer(optval)), uintptr(optlen), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc shutdown(s Handle, how int32) (err error) {\n\tr1, _, e1 := syscall.Syscall(procshutdown.Addr(), 2, uintptr(s), uintptr(how), 0)\n\tif r1 == socket_error {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc socket(af int32, typ int32, protocol int32) (handle Handle, err error) {\n\tr0, _, e1 := syscall.Syscall(procsocket.Addr(), 3, uintptr(af), uintptr(typ), uintptr(protocol))\n\thandle = Handle(r0)\n\tif handle == InvalidHandle {\n\t\terr = errnoErr(e1)\n\t}\n\treturn\n}\n\nfunc WTSEnumerateSessions(handle Handle, reserved uint32, version uint32, sessions **WTS_SESSION_INFO, count *uint32) (err error) {\n\tr1, _, e1 := syscall.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\terr = errnoErr(e1)\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 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\terr = errnoErr(e1)\n\t}\n\treturn\n}\n"
  },
  {
    "path": "gossh/term/term.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n// Package term 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 := term.MakeRaw(int(os.Stdin.Fd()))\n//\tif err != nil {\n//\t        panic(err)\n//\t}\n//\tdefer term.Restore(int(os.Stdin.Fd()), oldState)\n//\n// Note that on non-Unix systems os.Stdin.Fd() may not be 0.\npackage term\n\n// State contains the state of a terminal.\ntype State struct {\n\tstate\n}\n\n// IsTerminal returns whether the given file descriptor is a terminal.\nfunc IsTerminal(fd int) bool {\n\treturn isTerminal(fd)\n}\n\n// MakeRaw puts 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\treturn makeRaw(fd)\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\treturn getState(fd)\n}\n\n// Restore restores the terminal connected to the given file descriptor to a\n// previous state.\nfunc Restore(fd int, oldState *State) error {\n\treturn restore(fd, oldState)\n}\n\n// GetSize returns the visible dimensions of the given terminal.\n//\n// These dimensions don't include any scrollback buffer height.\nfunc GetSize(fd int) (width, height int, err error) {\n\treturn getSize(fd)\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\treturn readPassword(fd)\n}\n"
  },
  {
    "path": "gossh/term/term_plan9.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 term\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n\n\t\"gossh/sys/plan9\"\n)\n\ntype state struct{}\n\nfunc isTerminal(fd int) bool {\n\tpath, err := plan9.Fd2path(fd)\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn path == \"/dev/cons\" || path == \"/mnt/term/dev/cons\"\n}\n\nfunc makeRaw(fd int) (*State, error) {\n\treturn nil, fmt.Errorf(\"terminal: MakeRaw not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc getState(fd int) (*State, error) {\n\treturn nil, fmt.Errorf(\"terminal: GetState not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc restore(fd int, state *State) error {\n\treturn fmt.Errorf(\"terminal: Restore not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc getSize(fd int) (width, height int, err error) {\n\treturn 0, 0, fmt.Errorf(\"terminal: GetSize not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc readPassword(fd int) ([]byte, error) {\n\treturn nil, fmt.Errorf(\"terminal: ReadPassword not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n"
  },
  {
    "path": "gossh/term/term_unix.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos\n\npackage term\n\nimport (\n\t\"gossh/sys/unix\"\n)\n\ntype state struct {\n\ttermios unix.Termios\n}\n\nfunc isTerminal(fd int) bool {\n\t_, err := unix.IoctlGetTermios(fd, ioctlReadTermios)\n\treturn err == nil\n}\n\nfunc makeRaw(fd int) (*State, error) {\n\ttermios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\toldState := State{state{termios: *termios}}\n\n\t// This attempts to replicate the behaviour documented for cfmakeraw in\n\t// the termios(3) manpage.\n\ttermios.Iflag &^= unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON\n\ttermios.Oflag &^= unix.OPOST\n\ttermios.Lflag &^= unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN\n\ttermios.Cflag &^= unix.CSIZE | unix.PARENB\n\ttermios.Cflag |= unix.CS8\n\ttermios.Cc[unix.VMIN] = 1\n\ttermios.Cc[unix.VTIME] = 0\n\tif err := unix.IoctlSetTermios(fd, ioctlWriteTermios, termios); err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &oldState, nil\n}\n\nfunc getState(fd int) (*State, error) {\n\ttermios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn &State{state{termios: *termios}}, nil\n}\n\nfunc restore(fd int, state *State) error {\n\treturn unix.IoctlSetTermios(fd, ioctlWriteTermios, &state.termios)\n}\n\nfunc getSize(fd int) (width, height int, err error) {\n\tws, err := unix.IoctlGetWinsize(fd, unix.TIOCGWINSZ)\n\tif err != nil {\n\t\treturn 0, 0, err\n\t}\n\treturn int(ws.Col), int(ws.Row), nil\n}\n\n// passwordReader is an io.Reader that reads from a specific file descriptor.\ntype passwordReader int\n\nfunc (r passwordReader) Read(buf []byte) (int, error) {\n\treturn unix.Read(int(r), buf)\n}\n\nfunc readPassword(fd int) ([]byte, error) {\n\ttermios, err := unix.IoctlGetTermios(fd, ioctlReadTermios)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tnewState := *termios\n\tnewState.Lflag &^= unix.ECHO\n\tnewState.Lflag |= unix.ICANON | unix.ISIG\n\tnewState.Iflag |= unix.ICRNL\n\tif err := unix.IoctlSetTermios(fd, ioctlWriteTermios, &newState); err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer unix.IoctlSetTermios(fd, ioctlWriteTermios, termios)\n\n\treturn readPasswordLine(passwordReader(fd))\n}\n"
  },
  {
    "path": "gossh/term/term_unix_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//go:build darwin || dragonfly || freebsd || netbsd || openbsd\n\npackage term\n\nimport \"gossh/sys/unix\"\n\nconst ioctlReadTermios = unix.TIOCGETA\nconst ioctlWriteTermios = unix.TIOCSETA\n"
  },
  {
    "path": "gossh/term/term_unix_other.go",
    "content": "// Copyright 2021 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build aix || linux || solaris || zos\n\npackage term\n\nimport \"gossh/sys/unix\"\n\nconst ioctlReadTermios = unix.TCGETS\nconst ioctlWriteTermios = unix.TCSETS\n"
  },
  {
    "path": "gossh/term/term_unsupported.go",
    "content": "// Copyright 2019 The Go Authors. All rights reserved.\n// Use of this source code is governed by a BSD-style\n// license that can be found in the LICENSE file.\n\n//go:build !aix && !darwin && !dragonfly && !freebsd && !linux && !netbsd && !openbsd && !zos && !windows && !solaris && !plan9\n\npackage term\n\nimport (\n\t\"fmt\"\n\t\"runtime\"\n)\n\ntype state struct{}\n\nfunc isTerminal(fd int) bool {\n\treturn false\n}\n\nfunc makeRaw(fd int) (*State, error) {\n\treturn nil, fmt.Errorf(\"terminal: MakeRaw not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc getState(fd int) (*State, error) {\n\treturn nil, fmt.Errorf(\"terminal: GetState not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc restore(fd int, state *State) error {\n\treturn fmt.Errorf(\"terminal: Restore not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc getSize(fd int) (width, height int, err error) {\n\treturn 0, 0, fmt.Errorf(\"terminal: GetSize not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n\nfunc readPassword(fd int) ([]byte, error) {\n\treturn nil, fmt.Errorf(\"terminal: ReadPassword not implemented on %s/%s\", runtime.GOOS, runtime.GOARCH)\n}\n"
  },
  {
    "path": "gossh/term/term_windows.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 term\n\nimport (\n\t\"os\"\n\n\t\"gossh/sys/windows\"\n)\n\ntype state struct {\n\tmode uint32\n}\n\nfunc isTerminal(fd int) bool {\n\tvar st uint32\n\terr := windows.GetConsoleMode(windows.Handle(fd), &st)\n\treturn err == nil\n}\n\nfunc makeRaw(fd int) (*State, error) {\n\tvar st uint32\n\tif err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {\n\t\treturn nil, err\n\t}\n\traw := st &^ (windows.ENABLE_ECHO_INPUT | windows.ENABLE_PROCESSED_INPUT | windows.ENABLE_LINE_INPUT | windows.ENABLE_PROCESSED_OUTPUT)\n\tif err := windows.SetConsoleMode(windows.Handle(fd), raw); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &State{state{st}}, nil\n}\n\nfunc getState(fd int) (*State, error) {\n\tvar st uint32\n\tif err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {\n\t\treturn nil, err\n\t}\n\treturn &State{state{st}}, nil\n}\n\nfunc restore(fd int, state *State) error {\n\treturn windows.SetConsoleMode(windows.Handle(fd), state.mode)\n}\n\nfunc getSize(fd int) (width, height int, err error) {\n\tvar info windows.ConsoleScreenBufferInfo\n\tif err := windows.GetConsoleScreenBufferInfo(windows.Handle(fd), &info); err != nil {\n\t\treturn 0, 0, err\n\t}\n\treturn int(info.Window.Right - info.Window.Left + 1), int(info.Window.Bottom - info.Window.Top + 1), nil\n}\n\nfunc readPassword(fd int) ([]byte, error) {\n\tvar st uint32\n\tif err := windows.GetConsoleMode(windows.Handle(fd), &st); err != nil {\n\t\treturn nil, err\n\t}\n\told := st\n\n\tst &^= (windows.ENABLE_ECHO_INPUT | windows.ENABLE_LINE_INPUT)\n\tst |= (windows.ENABLE_PROCESSED_OUTPUT | windows.ENABLE_PROCESSED_INPUT)\n\tif err := windows.SetConsoleMode(windows.Handle(fd), st); err != nil {\n\t\treturn nil, err\n\t}\n\n\tdefer windows.SetConsoleMode(windows.Handle(fd), old)\n\n\tvar h windows.Handle\n\tp, _ := windows.GetCurrentProcess()\n\tif err := windows.DuplicateHandle(p, windows.Handle(fd), p, &h, 0, false, windows.DUPLICATE_SAME_ACCESS); err != nil {\n\t\treturn nil, err\n\t}\n\n\tf := os.NewFile(uintptr(h), \"stdin\")\n\tdefer f.Close()\n\treturn readPasswordLine(f)\n}\n"
  },
  {
    "path": "gossh/term/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 term\n\nimport (\n\t\"bytes\"\n\t\"io\"\n\t\"runtime\"\n\t\"strconv\"\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\tkeyCtrlC     = 3\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 (\n\tcrlf       = []byte{'\\r', '\\n'}\n\tpasteStart = []byte{keyEscape, '[', '2', '0', '0', '~'}\n\tpasteEnd   = []byte{keyEscape, '[', '2', '0', '1', '~'}\n)\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 2: // ^B\n\t\t\treturn keyLeft, b[1:]\n\t\tcase 5: // ^E\n\t\t\treturn keyEnd, b[1:]\n\t\tcase 6: // ^F\n\t\t\treturn keyRight, 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\tcase 14: // ^N\n\t\t\treturn keyDown, b[1:]\n\t\tcase 16: // ^P\n\t\t\treturn keyUp, 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 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\tm := []rune{}\n\n\t// 1 unit up can be expressed as ^[[A or ^[A\n\t// 5 units up can be expressed as ^[[5A\n\n\tif up == 1 {\n\t\tm = append(m, keyEscape, '[', 'A')\n\t} else if up > 1 {\n\t\tm = append(m, keyEscape, '[')\n\t\tm = append(m, []rune(strconv.Itoa(up))...)\n\t\tm = append(m, 'A')\n\t}\n\n\tif down == 1 {\n\t\tm = append(m, keyEscape, '[', 'B')\n\t} else if down > 1 {\n\t\tm = append(m, keyEscape, '[')\n\t\tm = append(m, []rune(strconv.Itoa(down))...)\n\t\tm = append(m, 'B')\n\t}\n\n\tif right == 1 {\n\t\tm = append(m, keyEscape, '[', 'C')\n\t} else if right > 1 {\n\t\tm = append(m, keyEscape, '[')\n\t\tm = append(m, []rune(strconv.Itoa(right))...)\n\t\tm = append(m, 'C')\n\t}\n\n\tif left == 1 {\n\t\tm = append(m, keyEscape, '[', 'D')\n\t} else if left > 1 {\n\t\tm = append(m, keyEscape, '[')\n\t\tm = append(m, []rune(strconv.Itoa(left))...)\n\t\tm = append(m, 'D')\n\t}\n\n\tt.queue(m)\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, '\\r', '\\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\n// writeWithCRLF writes buf to w but replaces all occurrences of \\n with \\r\\n.\nfunc writeWithCRLF(w io.Writer, buf []byte) (n int, err error) {\n\tfor len(buf) > 0 {\n\t\ti := bytes.IndexByte(buf, '\\n')\n\t\ttodo := len(buf)\n\t\tif i >= 0 {\n\t\t\ttodo = i\n\t\t}\n\n\t\tvar nn int\n\t\tnn, err = w.Write(buf[:todo])\n\t\tn += nn\n\t\tif err != nil {\n\t\t\treturn n, err\n\t\t}\n\t\tbuf = buf[todo:]\n\n\t\tif i >= 0 {\n\t\t\tif _, err = w.Write(crlf); err != nil {\n\t\t\t\treturn n, err\n\t\t\t}\n\t\t\tn++\n\t\t\tbuf = buf[1:]\n\t\t}\n\t}\n\n\treturn n, nil\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 writeWithCRLF(t.c, 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 = writeWithCRLF(t.c, 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 == keyCtrlC {\n\t\t\t\t\treturn \"\", io.EOF\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\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 < 0 || 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\n// readPasswordLine reads from reader until it finds \\n or io.EOF.\n// The slice returned does not include the \\n.\n// readPasswordLine also ignores any \\r it finds.\n// Windows uses \\r as end of line. So, on Windows, readPasswordLine\n// reads until it finds \\r and ignores any \\n it finds during processing.\nfunc readPasswordLine(reader io.Reader) ([]byte, error) {\n\tvar buf [1]byte\n\tvar ret []byte\n\n\tfor {\n\t\tn, err := reader.Read(buf[:])\n\t\tif n > 0 {\n\t\t\tswitch buf[0] {\n\t\t\tcase '\\b':\n\t\t\t\tif len(ret) > 0 {\n\t\t\t\t\tret = ret[:len(ret)-1]\n\t\t\t\t}\n\t\t\tcase '\\n':\n\t\t\t\tif runtime.GOOS != \"windows\" {\n\t\t\t\t\treturn ret, nil\n\t\t\t\t}\n\t\t\t\t// otherwise ignore \\n\n\t\t\tcase '\\r':\n\t\t\t\tif runtime.GOOS == \"windows\" {\n\t\t\t\t\treturn ret, nil\n\t\t\t\t}\n\t\t\t\t// otherwise ignore \\r\n\t\t\tdefault:\n\t\t\t\tret = append(ret, buf[0])\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\t\tif err != nil {\n\t\t\tif err == io.EOF && len(ret) > 0 {\n\t\t\t\treturn ret, nil\n\t\t\t}\n\t\t\treturn ret, err\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "gossh/toml/README.md",
    "content": "# go-toml v2\n\nGo library for the [TOML](https://toml.io/en/) format.\n\nThis library supports [TOML v1.0.0](https://toml.io/en/v1.0.0).\n\n[🐞 Bug Reports](https://github.com/pelletier/go-toml/issues)\n\n[💬 Anything else](https://github.com/pelletier/go-toml/discussions)\n\n## Documentation\n\nFull API, examples, and implementation notes are available in the Go\ndocumentation.\n\n[![Go Reference](https://pkg.go.dev/badge/github.com/pelletier/go-toml/v2.svg)](https://pkg.go.dev/github.com/pelletier/go-toml/v2)\n\n## Import\n\n```go\nimport \"github.com/pelletier/go-toml/v2\"\n```\n\nSee [Modules](#Modules).\n\n## Features\n\n### Stdlib behavior\n\nAs much as possible, this library is designed to behave similarly as the\nstandard library's `encoding/json`.\n\n### Performance\n\nWhile go-toml favors usability, it is written with performance in mind. Most\noperations should not be shockingly slow. See [benchmarks](#benchmarks).\n\n### Strict mode\n\n`Decoder` can be set to \"strict mode\", which makes it error when some parts of\nthe TOML document was not present in the target structure. This is a great way\nto check for typos. [See example in the documentation][strict].\n\n[strict]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#example-Decoder.DisallowUnknownFields\n\n### Contextualized errors\n\nWhen most decoding errors occur, go-toml returns [`DecodeError`][decode-err],\nwhich contains a human readable contextualized version of the error. For\nexample:\n\n```\n1| [server]\n2| path = 100\n |        ~~~ cannot decode TOML integer into struct field toml_test.Server.Path of type string\n3| port = 50\n```\n\n[decode-err]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#DecodeError\n\n### Local date and time support\n\nTOML supports native [local date/times][ldt]. It allows to represent a given\ndate, time, or date-time without relation to a timezone or offset. To support\nthis use-case, go-toml provides [`LocalDate`][tld], [`LocalTime`][tlt], and\n[`LocalDateTime`][tldt]. Those types can be transformed to and from `time.Time`,\nmaking them convenient yet unambiguous structures for their respective TOML\nrepresentation.\n\n[ldt]: https://toml.io/en/v1.0.0#local-date-time\n[tld]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalDate\n[tlt]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalTime\n[tldt]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#LocalDateTime\n\n### Commented config\n\nSince TOML is often used for configuration files, go-toml can emit documents\nannotated with [comments and commented-out values][comments-example]. For\nexample, it can generate the following file:\n\n```toml\n# Host IP to connect to.\nhost = '127.0.0.1'\n# Port of the remote server.\nport = 4242\n\n# Encryption parameters (optional)\n# [TLS]\n# cipher = 'AEAD-AES128-GCM-SHA256'\n# version = 'TLS 1.3'\n```\n\n[comments-example]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#example-Marshal-Commented\n\n## Getting started\n\nGiven the following struct, let's see how to read it and write it as TOML:\n\n```go\ntype MyConfig struct {\n\tVersion int\n\tName    string\n\tTags    []string\n}\n```\n\n### Unmarshaling\n\n[`Unmarshal`][unmarshal] reads a TOML document and fills a Go structure with its\ncontent. For example:\n\n```go\ndoc := `\nversion = 2\nname = \"go-toml\"\ntags = [\"go\", \"toml\"]\n`\n\nvar cfg MyConfig\nerr := toml.Unmarshal([]byte(doc), &cfg)\nif err != nil {\n\tpanic(err)\n}\nfmt.Println(\"version:\", cfg.Version)\nfmt.Println(\"name:\", cfg.Name)\nfmt.Println(\"tags:\", cfg.Tags)\n\n// Output:\n// version: 2\n// name: go-toml\n// tags: [go toml]\n```\n\n[unmarshal]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Unmarshal\n\n### Marshaling\n\n[`Marshal`][marshal] is the opposite of Unmarshal: it represents a Go structure\nas a TOML document:\n\n```go\ncfg := MyConfig{\n\tVersion: 2,\n\tName:    \"go-toml\",\n\tTags:    []string{\"go\", \"toml\"},\n}\n\nb, err := toml.Marshal(cfg)\nif err != nil {\n\tpanic(err)\n}\nfmt.Println(string(b))\n\n// Output:\n// Version = 2\n// Name = 'go-toml'\n// Tags = ['go', 'toml']\n```\n\n[marshal]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Marshal\n\n## Unstable API\n\nThis API does not yet follow the backward compatibility guarantees of this\nlibrary. They provide early access to features that may have rough edges or an\nAPI subject to change.\n\n### Parser\n\nParser is the unstable API that allows iterative parsing of a TOML document at\nthe AST level. See https://pkg.go.dev/github.com/pelletier/go-toml/v2/unstable.\n\n## Benchmarks\n\nExecution time speedup compared to other Go TOML libraries:\n\n<table>\n\t<thead>\n\t\t<tr><th>Benchmark</th><th>go-toml v1</th><th>BurntSushi/toml</th></tr>\n\t</thead>\n\t<tbody>\n\t\t<tr><td>Marshal/HugoFrontMatter-2</td><td>1.9x</td><td>2.2x</td></tr>\n\t\t<tr><td>Marshal/ReferenceFile/map-2</td><td>1.7x</td><td>2.1x</td></tr>\n\t\t<tr><td>Marshal/ReferenceFile/struct-2</td><td>2.2x</td><td>3.0x</td></tr>\n\t\t<tr><td>Unmarshal/HugoFrontMatter-2</td><td>2.9x</td><td>2.7x</td></tr>\n\t\t<tr><td>Unmarshal/ReferenceFile/map-2</td><td>2.6x</td><td>2.7x</td></tr>\n\t\t<tr><td>Unmarshal/ReferenceFile/struct-2</td><td>4.6x</td><td>5.1x</td></tr>\n\t </tbody>\n</table>\n<details><summary>See more</summary>\n<p>The table above has the results of the most common use-cases. The table below\ncontains the results of all benchmarks, including unrealistic ones. It is\nprovided for completeness.</p>\n\n<table>\n\t<thead>\n\t\t<tr><th>Benchmark</th><th>go-toml v1</th><th>BurntSushi/toml</th></tr>\n\t</thead>\n\t<tbody>\n\t\t<tr><td>Marshal/SimpleDocument/map-2</td><td>1.8x</td><td>2.7x</td></tr>\n\t\t<tr><td>Marshal/SimpleDocument/struct-2</td><td>2.7x</td><td>3.8x</td></tr>\n\t\t<tr><td>Unmarshal/SimpleDocument/map-2</td><td>3.8x</td><td>3.0x</td></tr>\n\t\t<tr><td>Unmarshal/SimpleDocument/struct-2</td><td>5.6x</td><td>4.1x</td></tr>\n\t\t<tr><td>UnmarshalDataset/example-2</td><td>3.0x</td><td>3.2x</td></tr>\n\t\t<tr><td>UnmarshalDataset/code-2</td><td>2.3x</td><td>2.9x</td></tr>\n\t\t<tr><td>UnmarshalDataset/twitter-2</td><td>2.6x</td><td>2.7x</td></tr>\n\t\t<tr><td>UnmarshalDataset/citm_catalog-2</td><td>2.2x</td><td>2.3x</td></tr>\n\t\t<tr><td>UnmarshalDataset/canada-2</td><td>1.8x</td><td>1.5x</td></tr>\n\t\t<tr><td>UnmarshalDataset/config-2</td><td>4.1x</td><td>2.9x</td></tr>\n\t\t<tr><td>geomean</td><td>2.7x</td><td>2.8x</td></tr>\n\t </tbody>\n</table>\n<p>This table can be generated with <code>./ci.sh benchmark -a -html</code>.</p>\n</details>\n\n## Modules\n\ngo-toml uses Go's standard modules system.\n\nInstallation instructions:\n\n- Go ≥ 1.16: Nothing to do. Use the import in your code. The `go` command deals\n  with it automatically.\n- Go ≥ 1.13: `GO111MODULE=on go get github.com/pelletier/go-toml/v2`.\n\nIn case of trouble: [Go Modules FAQ][mod-faq].\n\n[mod-faq]: https://github.com/golang/go/wiki/Modules#why-does-installing-a-tool-via-go-get-fail-with-error-cannot-find-main-module\n\n## Tools\n\nGo-toml provides three handy command line tools:\n\n * `tomljson`: Reads a TOML file and outputs its JSON representation.\n\n\t```\n\t$ go install github.com/pelletier/go-toml/v2/cmd/tomljson@latest\n\t$ tomljson --help\n\t```\n\n * `jsontoml`: Reads a JSON file and outputs a TOML representation.\n\n\t```\n\t$ go install github.com/pelletier/go-toml/v2/cmd/jsontoml@latest\n\t$ jsontoml --help\n\t```\n\n * `tomll`: Lints and reformats a TOML file.\n\n\t```\n\t$ go install github.com/pelletier/go-toml/v2/cmd/tomll@latest\n\t$ tomll --help\n\t```\n\n### Docker image\n\nThose tools are also available as a [Docker image][docker]. For example, to use\n`tomljson`:\n\n```\ndocker run -i ghcr.io/pelletier/go-toml:v2 tomljson < example.toml\n```\n\nMultiple versions are available on [ghcr.io][docker].\n\n[docker]: https://github.com/pelletier/go-toml/pkgs/container/go-toml\n\n## Migrating from v1\n\nThis section describes the differences between v1 and v2, with some pointers on\nhow to get the original behavior when possible.\n\n### Decoding / Unmarshal\n\n#### Automatic field name guessing\n\nWhen unmarshaling to a struct, if a key in the TOML document does not exactly\nmatch the name of a struct field or any of the `toml`-tagged field, v1 tries\nmultiple variations of the key ([code][v1-keys]).\n\nV2 instead does a case-insensitive matching, like `encoding/json`.\n\nThis could impact you if you are relying on casing to differentiate two fields,\nand one of them is a not using the `toml` struct tag. The recommended solution\nis to be specific about tag names for those fields using the `toml` struct tag.\n\n[v1-keys]: https://github.com/pelletier/go-toml/blob/a2e52561804c6cd9392ebf0048ca64fe4af67a43/marshal.go#L775-L781\n\n#### Ignore preexisting value in interface\n\nWhen decoding into a non-nil `interface{}`, go-toml v1 uses the type of the\nelement in the interface to decode the object. For example:\n\n```go\ntype inner struct {\n\tB interface{}\n}\ntype doc struct {\n\tA interface{}\n}\n\nd := doc{\n\tA: inner{\n\t\tB: \"Before\",\n\t},\n}\n\ndata := `\n[A]\nB = \"After\"\n`\n\ntoml.Unmarshal([]byte(data), &d)\nfmt.Printf(\"toml v1: %#v\\n\", d)\n\n// toml v1: main.doc{A:main.inner{B:\"After\"}}\n```\n\nIn this case, field `A` is of type `interface{}`, containing a `inner` struct.\nV1 sees that type and uses it when decoding the object.\n\nWhen decoding an object into an `interface{}`, V2 instead disregards whatever\nvalue the `interface{}` may contain and replaces it with a\n`map[string]interface{}`. With the same data structure as above, here is what\nthe result looks like:\n\n```go\ntoml.Unmarshal([]byte(data), &d)\nfmt.Printf(\"toml v2: %#v\\n\", d)\n\n// toml v2: main.doc{A:map[string]interface {}{\"B\":\"After\"}}\n```\n\nThis is to match `encoding/json`'s behavior. There is no way to make the v2\ndecoder behave like v1.\n\n#### Values out of array bounds ignored\n\nWhen decoding into an array, v1 returns an error when the number of elements\ncontained in the doc is superior to the capacity of the array. For example:\n\n```go\ntype doc struct {\n\tA [2]string\n}\nd := doc{}\nerr := toml.Unmarshal([]byte(`A = [\"one\", \"two\", \"many\"]`), &d)\nfmt.Println(err)\n\n// (1, 1): unmarshal: TOML array length (3) exceeds destination array length (2)\n```\n\nIn the same situation, v2 ignores the last value:\n\n```go\nerr := toml.Unmarshal([]byte(`A = [\"one\", \"two\", \"many\"]`), &d)\nfmt.Println(\"err:\", err, \"d:\", d)\n// err: <nil> d: {[one two]}\n```\n\nThis is to match `encoding/json`'s behavior. There is no way to make the v2\ndecoder behave like v1.\n\n#### Support for `toml.Unmarshaler` has been dropped\n\nThis method was not widely used, poorly defined, and added a lot of complexity.\nA similar effect can be achieved by implementing the `encoding.TextUnmarshaler`\ninterface and use strings.\n\n#### Support for `default` struct tag has been dropped\n\nThis feature adds complexity and a poorly defined API for an effect that can be\naccomplished outside of the library.\n\nIt does not seem like other format parsers in Go support that feature (the\nproject referenced in the original ticket #202 has not been updated since 2017).\nGiven that go-toml v2 should not touch values not in the document, the same\neffect can be achieved by pre-filling the struct with defaults (libraries like\n[go-defaults][go-defaults] can help). Also, string representation is not well\ndefined for all types: it creates issues like #278.\n\nThe recommended replacement is pre-filling the struct before unmarshaling.\n\n[go-defaults]: https://github.com/mcuadros/go-defaults\n\n#### `toml.Tree` replacement\n\nThis structure was the initial attempt at providing a document model for\ngo-toml. It allows manipulating the structure of any document, encoding and\ndecoding from their TOML representation. While a more robust feature was\ninitially planned in go-toml v2, this has been ultimately [removed from\nscope][nodoc] of this library, with no plan to add it back at the moment. The\nclosest equivalent at the moment would be to unmarshal into an `interface{}` and\nuse type assertions and/or reflection to manipulate the arbitrary\nstructure. However this would fall short of providing all of the TOML features\nsuch as adding comments and be specific about whitespace.\n\n\n#### `toml.Position` are not retrievable anymore\n\nThe API for retrieving the position (line, column) of a specific TOML element do\nnot exist anymore. This was done to minimize the amount of concepts introduced\nby the library (query path), and avoid the performance hit related to storing\npositions in the absence of a document model, for a feature that seemed to have\nlittle use. Errors however have gained more detailed position\ninformation. Position retrieval seems better fitted for a document model, which\nhas been [removed from the scope][nodoc] of go-toml v2 at the moment.\n\n### Encoding / Marshal\n\n#### Default struct fields order\n\nV1 emits struct fields order alphabetically by default. V2 struct fields are\nemitted in order they are defined. For example:\n\n```go\ntype S struct {\n\tB string\n\tA string\n}\n\ndata := S{\n\tB: \"B\",\n\tA: \"A\",\n}\n\nb, _ := tomlv1.Marshal(data)\nfmt.Println(\"v1:\\n\" + string(b))\n\nb, _ = tomlv2.Marshal(data)\nfmt.Println(\"v2:\\n\" + string(b))\n\n// Output:\n// v1:\n// A = \"A\"\n// B = \"B\"\n\n// v2:\n// B = 'B'\n// A = 'A'\n```\n\nThere is no way to make v2 encoder behave like v1. A workaround could be to\nmanually sort the fields alphabetically in the struct definition, or generate\nstruct types using `reflect.StructOf`.\n\n#### No indentation by default\n\nV1 automatically indents content of tables by default. V2 does not. However the\nsame behavior can be obtained using [`Encoder.SetIndentTables`][sit]. For example:\n\n```go\ndata := map[string]interface{}{\n\t\"table\": map[string]string{\n\t\t\"key\": \"value\",\n\t},\n}\n\nb, _ := tomlv1.Marshal(data)\nfmt.Println(\"v1:\\n\" + string(b))\n\nb, _ = tomlv2.Marshal(data)\nfmt.Println(\"v2:\\n\" + string(b))\n\nbuf := bytes.Buffer{}\nenc := tomlv2.NewEncoder(&buf)\nenc.SetIndentTables(true)\nenc.Encode(data)\nfmt.Println(\"v2 Encoder:\\n\" + string(buf.Bytes()))\n\n// Output:\n// v1:\n//\n// [table]\n//   key = \"value\"\n//\n// v2:\n// [table]\n// key = 'value'\n//\n//\n// v2 Encoder:\n// [table]\n//   key = 'value'\n```\n\n[sit]: https://pkg.go.dev/github.com/pelletier/go-toml/v2#Encoder.SetIndentTables\n\n#### Keys and strings are single quoted\n\nV1 always uses double quotes (`\"`) around strings and keys that cannot be\nrepresented bare (unquoted). V2 uses single quotes instead by default (`'`),\nunless a character cannot be represented, then falls back to double quotes. As a\nresult of this change, `Encoder.QuoteMapKeys` has been removed, as it is not\nuseful anymore.\n\nThere is no way to make v2 encoder behave like v1.\n\n#### `TextMarshaler` emits as a string, not TOML\n\nTypes that implement [`encoding.TextMarshaler`][tm] can emit arbitrary TOML in\nv1. The encoder would append the result to the output directly. In v2 the result\nis wrapped in a string. As a result, this interface cannot be implemented by the\nroot object.\n\nThere is no way to make v2 encoder behave like v1.\n\n[tm]: https://golang.org/pkg/encoding/#TextMarshaler\n\n#### `Encoder.CompactComments` has been removed\n\nEmitting compact comments is now the default behavior of go-toml. This option\nis not necessary anymore.\n\n#### Struct tags have been merged\n\nV1 used to provide multiple struct tags: `comment`, `commented`, `multiline`,\n`toml`, and `omitempty`. To behave more like the standard library, v2 has merged\n`toml`, `multiline`, `commented`, and `omitempty`. For example:\n\n```go\ntype doc struct {\n\t// v1\n\tF string `toml:\"field\" multiline:\"true\" omitempty:\"true\" commented:\"true\"`\n\t// v2\n\tF string `toml:\"field,multiline,omitempty,commented\"`\n}\n```\n\nHas a result, the `Encoder.SetTag*` methods have been removed, as there is just\none tag now.\n\n#### `Encoder.ArraysWithOneElementPerLine` has been renamed\n\nThe new name is `Encoder.SetArraysMultiline`. The behavior should be the same.\n\n#### `Encoder.Indentation` has been renamed\n\nThe new name is `Encoder.SetIndentSymbol`. The behavior should be the same.\n\n\n#### Embedded structs behave like stdlib\n\nV1 defaults to merging embedded struct fields into the embedding struct. This\nbehavior was unexpected because it does not follow the standard library. To\navoid breaking backward compatibility, the `Encoder.PromoteAnonymous` method was\nadded to make the encoder behave correctly. Given backward compatibility is not\na problem anymore, v2 does the right thing by default: it follows the behavior\nof `encoding/json`. `Encoder.PromoteAnonymous` has been removed.\n\n[nodoc]: https://github.com/pelletier/go-toml/discussions/506#discussioncomment-1526038\n\n### `query`\n\ngo-toml v1 provided the [`go-toml/query`][query] package. It allowed to run\nJSONPath-style queries on TOML files. This feature is not available in v2. For a\nreplacement, check out [dasel][dasel].\n\nThis package has been removed because it was essentially not supported anymore\n(last commit May 2020), increased the complexity of the code base, and more\ncomplete solutions exist out there.\n\n[query]: https://github.com/pelletier/go-toml/tree/f99d6bbca119636aeafcf351ee52b3d202782627/query\n[dasel]: https://github.com/TomWright/dasel\n\n## Versioning\n\nExpect for parts explicitely marked otherwise, go-toml follows [Semantic\nVersioning](https://semver.org). The supported version of\n[TOML](https://github.com/toml-lang/toml) is indicated at the beginning of this\ndocument. The last two major versions of Go are supported (see [Go Release\nPolicy](https://golang.org/doc/devel/release.html#policy)).\n\n## License\n\nThe MIT License (MIT). Read [LICENSE](LICENSE).\n"
  },
  {
    "path": "gossh/toml/decode.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"gossh/toml/unstable\"\n)\n\nfunc parseInteger(b []byte) (int64, error) {\n\tif len(b) > 2 && b[0] == '0' {\n\t\tswitch b[1] {\n\t\tcase 'x':\n\t\t\treturn parseIntHex(b)\n\t\tcase 'b':\n\t\t\treturn parseIntBin(b)\n\t\tcase 'o':\n\t\t\treturn parseIntOct(b)\n\t\tdefault:\n\t\t\tpanic(fmt.Errorf(\"invalid base '%c', should have been checked by scanIntOrFloat\", b[1]))\n\t\t}\n\t}\n\n\treturn parseIntDec(b)\n}\n\nfunc parseLocalDate(b []byte) (LocalDate, error) {\n\t// full-date      = date-fullyear \"-\" date-month \"-\" date-mday\n\t// date-fullyear  = 4DIGIT\n\t// date-month     = 2DIGIT  ; 01-12\n\t// date-mday      = 2DIGIT  ; 01-28, 01-29, 01-30, 01-31 based on month/year\n\tvar date LocalDate\n\n\tif len(b) != 10 || b[4] != '-' || b[7] != '-' {\n\t\treturn date, unstable.NewParserError(b, \"dates are expected to have the format YYYY-MM-DD\")\n\t}\n\n\tvar err error\n\n\tdate.Year, err = parseDecimalDigits(b[0:4])\n\tif err != nil {\n\t\treturn LocalDate{}, err\n\t}\n\n\tdate.Month, err = parseDecimalDigits(b[5:7])\n\tif err != nil {\n\t\treturn LocalDate{}, err\n\t}\n\n\tdate.Day, err = parseDecimalDigits(b[8:10])\n\tif err != nil {\n\t\treturn LocalDate{}, err\n\t}\n\n\tif !isValidDate(date.Year, date.Month, date.Day) {\n\t\treturn LocalDate{}, unstable.NewParserError(b, \"impossible date\")\n\t}\n\n\treturn date, nil\n}\n\nfunc parseDecimalDigits(b []byte) (int, error) {\n\tv := 0\n\n\tfor i, c := range b {\n\t\tif c < '0' || c > '9' {\n\t\t\treturn 0, unstable.NewParserError(b[i:i+1], \"expected digit (0-9)\")\n\t\t}\n\t\tv *= 10\n\t\tv += int(c - '0')\n\t}\n\n\treturn v, nil\n}\n\nfunc parseDateTime(b []byte) (time.Time, error) {\n\t// offset-date-time = full-date time-delim full-time\n\t// full-time      = partial-time time-offset\n\t// time-offset    = \"Z\" / time-numoffset\n\t// time-numoffset = ( \"+\" / \"-\" ) time-hour \":\" time-minute\n\n\tdt, b, err := parseLocalDateTime(b)\n\tif err != nil {\n\t\treturn time.Time{}, err\n\t}\n\n\tvar zone *time.Location\n\n\tif len(b) == 0 {\n\t\t// parser should have checked that when assigning the date time node\n\t\tpanic(\"date time should have a timezone\")\n\t}\n\n\tif b[0] == 'Z' || b[0] == 'z' {\n\t\tb = b[1:]\n\t\tzone = time.UTC\n\t} else {\n\t\tconst dateTimeByteLen = 6\n\t\tif len(b) != dateTimeByteLen {\n\t\t\treturn time.Time{}, unstable.NewParserError(b, \"invalid date-time timezone\")\n\t\t}\n\t\tvar direction int\n\t\tswitch b[0] {\n\t\tcase '-':\n\t\t\tdirection = -1\n\t\tcase '+':\n\t\t\tdirection = +1\n\t\tdefault:\n\t\t\treturn time.Time{}, unstable.NewParserError(b[:1], \"invalid timezone offset character\")\n\t\t}\n\n\t\tif b[3] != ':' {\n\t\t\treturn time.Time{}, unstable.NewParserError(b[3:4], \"expected a : separator\")\n\t\t}\n\n\t\thours, err := parseDecimalDigits(b[1:3])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif hours > 23 {\n\t\t\treturn time.Time{}, unstable.NewParserError(b[:1], \"invalid timezone offset hours\")\n\t\t}\n\n\t\tminutes, err := parseDecimalDigits(b[4:6])\n\t\tif err != nil {\n\t\t\treturn time.Time{}, err\n\t\t}\n\t\tif minutes > 59 {\n\t\t\treturn time.Time{}, unstable.NewParserError(b[:1], \"invalid timezone offset minutes\")\n\t\t}\n\n\t\tseconds := direction * (hours*3600 + minutes*60)\n\t\tif seconds == 0 {\n\t\t\tzone = time.UTC\n\t\t} else {\n\t\t\tzone = time.FixedZone(\"\", seconds)\n\t\t}\n\t\tb = b[dateTimeByteLen:]\n\t}\n\n\tif len(b) > 0 {\n\t\treturn time.Time{}, unstable.NewParserError(b, \"extra bytes at the end of the timezone\")\n\t}\n\n\tt := time.Date(\n\t\tdt.Year,\n\t\ttime.Month(dt.Month),\n\t\tdt.Day,\n\t\tdt.Hour,\n\t\tdt.Minute,\n\t\tdt.Second,\n\t\tdt.Nanosecond,\n\t\tzone)\n\n\treturn t, nil\n}\n\nfunc parseLocalDateTime(b []byte) (LocalDateTime, []byte, error) {\n\tvar dt LocalDateTime\n\n\tconst localDateTimeByteMinLen = 11\n\tif len(b) < localDateTimeByteMinLen {\n\t\treturn dt, nil, unstable.NewParserError(b, \"local datetimes are expected to have the format YYYY-MM-DDTHH:MM:SS[.NNNNNNNNN]\")\n\t}\n\n\tdate, err := parseLocalDate(b[:10])\n\tif err != nil {\n\t\treturn dt, nil, err\n\t}\n\tdt.LocalDate = date\n\n\tsep := b[10]\n\tif sep != 'T' && sep != ' ' && sep != 't' {\n\t\treturn dt, nil, unstable.NewParserError(b[10:11], \"datetime separator is expected to be T or a space\")\n\t}\n\n\tt, rest, err := parseLocalTime(b[11:])\n\tif err != nil {\n\t\treturn dt, nil, err\n\t}\n\tdt.LocalTime = t\n\n\treturn dt, rest, nil\n}\n\n// parseLocalTime is a bit different because it also returns the remaining\n// []byte that is didn't need. This is to allow parseDateTime to parse those\n// remaining bytes as a timezone.\nfunc parseLocalTime(b []byte) (LocalTime, []byte, error) {\n\tvar (\n\t\tnspow = [10]int{0, 1e8, 1e7, 1e6, 1e5, 1e4, 1e3, 1e2, 1e1, 1e0}\n\t\tt     LocalTime\n\t)\n\n\t// check if b matches to have expected format HH:MM:SS[.NNNNNN]\n\tconst localTimeByteLen = 8\n\tif len(b) < localTimeByteLen {\n\t\treturn t, nil, unstable.NewParserError(b, \"times are expected to have the format HH:MM:SS[.NNNNNN]\")\n\t}\n\n\tvar err error\n\n\tt.Hour, err = parseDecimalDigits(b[0:2])\n\tif err != nil {\n\t\treturn t, nil, err\n\t}\n\n\tif t.Hour > 23 {\n\t\treturn t, nil, unstable.NewParserError(b[0:2], \"hour cannot be greater 23\")\n\t}\n\tif b[2] != ':' {\n\t\treturn t, nil, unstable.NewParserError(b[2:3], \"expecting colon between hours and minutes\")\n\t}\n\n\tt.Minute, err = parseDecimalDigits(b[3:5])\n\tif err != nil {\n\t\treturn t, nil, err\n\t}\n\tif t.Minute > 59 {\n\t\treturn t, nil, unstable.NewParserError(b[3:5], \"minutes cannot be greater 59\")\n\t}\n\tif b[5] != ':' {\n\t\treturn t, nil, unstable.NewParserError(b[5:6], \"expecting colon between minutes and seconds\")\n\t}\n\n\tt.Second, err = parseDecimalDigits(b[6:8])\n\tif err != nil {\n\t\treturn t, nil, err\n\t}\n\n\tif t.Second > 60 {\n\t\treturn t, nil, unstable.NewParserError(b[6:8], \"seconds cannot be greater 60\")\n\t}\n\n\tb = b[8:]\n\n\tif len(b) >= 1 && b[0] == '.' {\n\t\tfrac := 0\n\t\tprecision := 0\n\t\tdigits := 0\n\n\t\tfor i, c := range b[1:] {\n\t\t\tif !isDigit(c) {\n\t\t\t\tif i == 0 {\n\t\t\t\t\treturn t, nil, unstable.NewParserError(b[0:1], \"need at least one digit after fraction point\")\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tdigits++\n\n\t\t\tconst maxFracPrecision = 9\n\t\t\tif i >= maxFracPrecision {\n\t\t\t\t// go-toml allows decoding fractional seconds\n\t\t\t\t// beyond the supported precision of 9\n\t\t\t\t// digits. It truncates the fractional component\n\t\t\t\t// to the supported precision and ignores the\n\t\t\t\t// remaining digits.\n\t\t\t\t//\n\t\t\t\t// https://github.com/pelletier/go-toml/discussions/707\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tfrac *= 10\n\t\t\tfrac += int(c - '0')\n\t\t\tprecision++\n\t\t}\n\n\t\tif precision == 0 {\n\t\t\treturn t, nil, unstable.NewParserError(b[:1], \"nanoseconds need at least one digit\")\n\t\t}\n\n\t\tt.Nanosecond = frac * nspow[precision]\n\t\tt.Precision = precision\n\n\t\treturn t, b[1+digits:], nil\n\t}\n\treturn t, b, nil\n}\n\n//nolint:cyclop\nfunc parseFloat(b []byte) (float64, error) {\n\tif len(b) == 4 && (b[0] == '+' || b[0] == '-') && b[1] == 'n' && b[2] == 'a' && b[3] == 'n' {\n\t\treturn math.NaN(), nil\n\t}\n\n\tcleaned, err := checkAndRemoveUnderscoresFloats(b)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tif cleaned[0] == '.' {\n\t\treturn 0, unstable.NewParserError(b, \"float cannot start with a dot\")\n\t}\n\n\tif cleaned[len(cleaned)-1] == '.' {\n\t\treturn 0, unstable.NewParserError(b, \"float cannot end with a dot\")\n\t}\n\n\tdotAlreadySeen := false\n\tfor i, c := range cleaned {\n\t\tif c == '.' {\n\t\t\tif dotAlreadySeen {\n\t\t\t\treturn 0, unstable.NewParserError(b[i:i+1], \"float can have at most one decimal point\")\n\t\t\t}\n\t\t\tif !isDigit(cleaned[i-1]) {\n\t\t\t\treturn 0, unstable.NewParserError(b[i-1:i+1], \"float decimal point must be preceded by a digit\")\n\t\t\t}\n\t\t\tif !isDigit(cleaned[i+1]) {\n\t\t\t\treturn 0, unstable.NewParserError(b[i:i+2], \"float decimal point must be followed by a digit\")\n\t\t\t}\n\t\t\tdotAlreadySeen = true\n\t\t}\n\t}\n\n\tstart := 0\n\tif cleaned[0] == '+' || cleaned[0] == '-' {\n\t\tstart = 1\n\t}\n\tif cleaned[start] == '0' && len(cleaned) > start+1 && isDigit(cleaned[start+1]) {\n\t\treturn 0, unstable.NewParserError(b, \"float integer part cannot have leading zeroes\")\n\t}\n\n\tf, err := strconv.ParseFloat(string(cleaned), 64)\n\tif err != nil {\n\t\treturn 0, unstable.NewParserError(b, \"unable to parse float: %w\", err)\n\t}\n\n\treturn f, nil\n}\n\nfunc parseIntHex(b []byte) (int64, error) {\n\tcleaned, err := checkAndRemoveUnderscoresIntegers(b[2:])\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\ti, err := strconv.ParseInt(string(cleaned), 16, 64)\n\tif err != nil {\n\t\treturn 0, unstable.NewParserError(b, \"couldn't parse hexadecimal number: %w\", err)\n\t}\n\n\treturn i, nil\n}\n\nfunc parseIntOct(b []byte) (int64, error) {\n\tcleaned, err := checkAndRemoveUnderscoresIntegers(b[2:])\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\ti, err := strconv.ParseInt(string(cleaned), 8, 64)\n\tif err != nil {\n\t\treturn 0, unstable.NewParserError(b, \"couldn't parse octal number: %w\", err)\n\t}\n\n\treturn i, nil\n}\n\nfunc parseIntBin(b []byte) (int64, error) {\n\tcleaned, err := checkAndRemoveUnderscoresIntegers(b[2:])\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\ti, err := strconv.ParseInt(string(cleaned), 2, 64)\n\tif err != nil {\n\t\treturn 0, unstable.NewParserError(b, \"couldn't parse binary number: %w\", err)\n\t}\n\n\treturn i, nil\n}\n\nfunc isSign(b byte) bool {\n\treturn b == '+' || b == '-'\n}\n\nfunc parseIntDec(b []byte) (int64, error) {\n\tcleaned, err := checkAndRemoveUnderscoresIntegers(b)\n\tif err != nil {\n\t\treturn 0, err\n\t}\n\n\tstartIdx := 0\n\n\tif isSign(cleaned[0]) {\n\t\tstartIdx++\n\t}\n\n\tif len(cleaned) > startIdx+1 && cleaned[startIdx] == '0' {\n\t\treturn 0, unstable.NewParserError(b, \"leading zero not allowed on decimal number\")\n\t}\n\n\ti, err := strconv.ParseInt(string(cleaned), 10, 64)\n\tif err != nil {\n\t\treturn 0, unstable.NewParserError(b, \"couldn't parse decimal number: %w\", err)\n\t}\n\n\treturn i, nil\n}\n\nfunc checkAndRemoveUnderscoresIntegers(b []byte) ([]byte, error) {\n\tstart := 0\n\tif b[start] == '+' || b[start] == '-' {\n\t\tstart++\n\t}\n\n\tif len(b) == start {\n\t\treturn b, nil\n\t}\n\n\tif b[start] == '_' {\n\t\treturn nil, unstable.NewParserError(b[start:start+1], \"number cannot start with underscore\")\n\t}\n\n\tif b[len(b)-1] == '_' {\n\t\treturn nil, unstable.NewParserError(b[len(b)-1:], \"number cannot end with underscore\")\n\t}\n\n\t// fast path\n\ti := 0\n\tfor ; i < len(b); i++ {\n\t\tif b[i] == '_' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i == len(b) {\n\t\treturn b, nil\n\t}\n\n\tbefore := false\n\tcleaned := make([]byte, i, len(b))\n\tcopy(cleaned, b)\n\n\tfor i++; i < len(b); i++ {\n\t\tc := b[i]\n\t\tif c == '_' {\n\t\t\tif !before {\n\t\t\t\treturn nil, unstable.NewParserError(b[i-1:i+1], \"number must have at least one digit between underscores\")\n\t\t\t}\n\t\t\tbefore = false\n\t\t} else {\n\t\t\tbefore = true\n\t\t\tcleaned = append(cleaned, c)\n\t\t}\n\t}\n\n\treturn cleaned, nil\n}\n\nfunc checkAndRemoveUnderscoresFloats(b []byte) ([]byte, error) {\n\tif b[0] == '_' {\n\t\treturn nil, unstable.NewParserError(b[0:1], \"number cannot start with underscore\")\n\t}\n\n\tif b[len(b)-1] == '_' {\n\t\treturn nil, unstable.NewParserError(b[len(b)-1:], \"number cannot end with underscore\")\n\t}\n\n\t// fast path\n\ti := 0\n\tfor ; i < len(b); i++ {\n\t\tif b[i] == '_' {\n\t\t\tbreak\n\t\t}\n\t}\n\tif i == len(b) {\n\t\treturn b, nil\n\t}\n\n\tbefore := false\n\tcleaned := make([]byte, 0, len(b))\n\n\tfor i := 0; i < len(b); i++ {\n\t\tc := b[i]\n\n\t\tswitch c {\n\t\tcase '_':\n\t\t\tif !before {\n\t\t\t\treturn nil, unstable.NewParserError(b[i-1:i+1], \"number must have at least one digit between underscores\")\n\t\t\t}\n\t\t\tif i < len(b)-1 && (b[i+1] == 'e' || b[i+1] == 'E') {\n\t\t\t\treturn nil, unstable.NewParserError(b[i+1:i+2], \"cannot have underscore before exponent\")\n\t\t\t}\n\t\t\tbefore = false\n\t\tcase '+', '-':\n\t\t\t// signed exponents\n\t\t\tcleaned = append(cleaned, c)\n\t\t\tbefore = false\n\t\tcase 'e', 'E':\n\t\t\tif i < len(b)-1 && b[i+1] == '_' {\n\t\t\t\treturn nil, unstable.NewParserError(b[i+1:i+2], \"cannot have underscore after exponent\")\n\t\t\t}\n\t\t\tcleaned = append(cleaned, c)\n\t\tcase '.':\n\t\t\tif i < len(b)-1 && b[i+1] == '_' {\n\t\t\t\treturn nil, unstable.NewParserError(b[i+1:i+2], \"cannot have underscore after decimal point\")\n\t\t\t}\n\t\t\tif i > 0 && b[i-1] == '_' {\n\t\t\t\treturn nil, unstable.NewParserError(b[i-1:i], \"cannot have underscore before decimal point\")\n\t\t\t}\n\t\t\tcleaned = append(cleaned, c)\n\t\tdefault:\n\t\t\tbefore = true\n\t\t\tcleaned = append(cleaned, c)\n\t\t}\n\t}\n\n\treturn cleaned, nil\n}\n\n// isValidDate checks if a provided date is a date that exists.\nfunc isValidDate(year int, month int, day int) bool {\n\treturn month > 0 && month < 13 && day > 0 && day <= daysIn(month, year)\n}\n\n// daysBefore[m] counts the number of days in a non-leap year\n// before month m begins. There is an entry for m=12, counting\n// the number of days before January of next year (365).\nvar daysBefore = [...]int32{\n\t0,\n\t31,\n\t31 + 28,\n\t31 + 28 + 31,\n\t31 + 28 + 31 + 30,\n\t31 + 28 + 31 + 30 + 31,\n\t31 + 28 + 31 + 30 + 31 + 30,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,\n\t31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31,\n}\n\nfunc daysIn(m int, year int) int {\n\tif m == 2 && isLeap(year) {\n\t\treturn 29\n\t}\n\treturn int(daysBefore[m] - daysBefore[m-1])\n}\n\nfunc isLeap(year int) bool {\n\treturn year%4 == 0 && (year%100 != 0 || year%400 == 0)\n}\n\nfunc isDigit(r byte) bool {\n\treturn r >= '0' && r <= '9'\n}\n"
  },
  {
    "path": "gossh/toml/errors.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\n\t\"gossh/toml/internal/danger\"\n\t\"gossh/toml/unstable\"\n)\n\n// DecodeError represents an error encountered during the parsing or decoding\n// of a TOML document.\n//\n// In addition to the error message, it contains the position in the document\n// where it happened, as well as a human-readable representation that shows\n// where the error occurred in the document.\ntype DecodeError struct {\n\tmessage string\n\tline    int\n\tcolumn  int\n\tkey     Key\n\n\thuman string\n}\n\n// StrictMissingError occurs in a TOML document that does not have a\n// corresponding field in the target value. It contains all the missing fields\n// in Errors.\n//\n// Emitted by Decoder when DisallowUnknownFields() was called.\ntype StrictMissingError struct {\n\t// One error per field that could not be found.\n\tErrors []DecodeError\n}\n\n// Error returns the canonical string for this error.\nfunc (s *StrictMissingError) Error() string {\n\treturn \"strict mode: fields in the document are missing in the target struct\"\n}\n\n// String returns a human readable description of all errors.\nfunc (s *StrictMissingError) String() string {\n\tvar buf strings.Builder\n\n\tfor i, e := range s.Errors {\n\t\tif i > 0 {\n\t\t\tbuf.WriteString(\"\\n---\\n\")\n\t\t}\n\n\t\tbuf.WriteString(e.String())\n\t}\n\n\treturn buf.String()\n}\n\ntype Key []string\n\n// Error returns the error message contained in the DecodeError.\nfunc (e *DecodeError) Error() string {\n\treturn \"toml: \" + e.message\n}\n\n// String returns the human-readable contextualized error. This string is multi-line.\nfunc (e *DecodeError) String() string {\n\treturn e.human\n}\n\n// Position returns the (line, column) pair indicating where the error\n// occurred in the document. Positions are 1-indexed.\nfunc (e *DecodeError) Position() (row int, column int) {\n\treturn e.line, e.column\n}\n\n// Key that was being processed when the error occurred. The key is present only\n// if this DecodeError is part of a StrictMissingError.\nfunc (e *DecodeError) Key() Key {\n\treturn e.key\n}\n\n// decodeErrorFromHighlight creates a DecodeError referencing a highlighted\n// range of bytes from document.\n//\n// highlight needs to be a sub-slice of document, or this function panics.\n//\n// The function copies all bytes used in DecodeError, so that document and\n// highlight can be freely deallocated.\n//\n//nolint:funlen\nfunc wrapDecodeError(document []byte, de *unstable.ParserError) *DecodeError {\n\toffset := danger.SubsliceOffset(document, de.Highlight)\n\n\terrMessage := de.Error()\n\terrLine, errColumn := positionAtEnd(document[:offset])\n\tbefore, after := linesOfContext(document, de.Highlight, offset, 3)\n\n\tvar buf strings.Builder\n\n\tmaxLine := errLine + len(after) - 1\n\tlineColumnWidth := len(strconv.Itoa(maxLine))\n\n\t// Write the lines of context strictly before the error.\n\tfor i := len(before) - 1; i > 0; i-- {\n\t\tline := errLine - i\n\t\tbuf.WriteString(formatLineNumber(line, lineColumnWidth))\n\t\tbuf.WriteString(\"|\")\n\n\t\tif len(before[i]) > 0 {\n\t\t\tbuf.WriteString(\" \")\n\t\t\tbuf.Write(before[i])\n\t\t}\n\n\t\tbuf.WriteRune('\\n')\n\t}\n\n\t// Write the document line that contains the error.\n\n\tbuf.WriteString(formatLineNumber(errLine, lineColumnWidth))\n\tbuf.WriteString(\"| \")\n\n\tif len(before) > 0 {\n\t\tbuf.Write(before[0])\n\t}\n\n\tbuf.Write(de.Highlight)\n\n\tif len(after) > 0 {\n\t\tbuf.Write(after[0])\n\t}\n\n\tbuf.WriteRune('\\n')\n\n\t// Write the line with the error message itself (so it does not have a line\n\t// number).\n\n\tbuf.WriteString(strings.Repeat(\" \", lineColumnWidth))\n\tbuf.WriteString(\"| \")\n\n\tif len(before) > 0 {\n\t\tbuf.WriteString(strings.Repeat(\" \", len(before[0])))\n\t}\n\n\tbuf.WriteString(strings.Repeat(\"~\", len(de.Highlight)))\n\n\tif len(errMessage) > 0 {\n\t\tbuf.WriteString(\" \")\n\t\tbuf.WriteString(errMessage)\n\t}\n\n\t// Write the lines of context strictly after the error.\n\n\tfor i := 1; i < len(after); i++ {\n\t\tbuf.WriteRune('\\n')\n\t\tline := errLine + i\n\t\tbuf.WriteString(formatLineNumber(line, lineColumnWidth))\n\t\tbuf.WriteString(\"|\")\n\n\t\tif len(after[i]) > 0 {\n\t\t\tbuf.WriteString(\" \")\n\t\t\tbuf.Write(after[i])\n\t\t}\n\t}\n\n\treturn &DecodeError{\n\t\tmessage: errMessage,\n\t\tline:    errLine,\n\t\tcolumn:  errColumn,\n\t\tkey:     de.Key,\n\t\thuman:   buf.String(),\n\t}\n}\n\nfunc formatLineNumber(line int, width int) string {\n\tformat := \"%\" + strconv.Itoa(width) + \"d\"\n\n\treturn fmt.Sprintf(format, line)\n}\n\nfunc linesOfContext(document []byte, highlight []byte, offset int, linesAround int) ([][]byte, [][]byte) {\n\treturn beforeLines(document, offset, linesAround), afterLines(document, highlight, offset, linesAround)\n}\n\nfunc beforeLines(document []byte, offset int, linesAround int) [][]byte {\n\tvar beforeLines [][]byte\n\n\t// Walk the document backward from the highlight to find previous lines\n\t// of context.\n\trest := document[:offset]\nbackward:\n\tfor o := len(rest) - 1; o >= 0 && len(beforeLines) <= linesAround && len(rest) > 0; {\n\t\tswitch {\n\t\tcase rest[o] == '\\n':\n\t\t\t// handle individual lines\n\t\t\tbeforeLines = append(beforeLines, rest[o+1:])\n\t\t\trest = rest[:o]\n\t\t\to = len(rest) - 1\n\t\tcase o == 0:\n\t\t\t// add the first line only if it's non-empty\n\t\t\tbeforeLines = append(beforeLines, rest)\n\n\t\t\tbreak backward\n\t\tdefault:\n\t\t\to--\n\t\t}\n\t}\n\n\treturn beforeLines\n}\n\nfunc afterLines(document []byte, highlight []byte, offset int, linesAround int) [][]byte {\n\tvar afterLines [][]byte\n\n\t// Walk the document forward from the highlight to find the following\n\t// lines of context.\n\trest := document[offset+len(highlight):]\nforward:\n\tfor o := 0; o < len(rest) && len(afterLines) <= linesAround; {\n\t\tswitch {\n\t\tcase rest[o] == '\\n':\n\t\t\t// handle individual lines\n\t\t\tafterLines = append(afterLines, rest[:o])\n\t\t\trest = rest[o+1:]\n\t\t\to = 0\n\n\t\tcase o == len(rest)-1:\n\t\t\t// add last line only if it's non-empty\n\t\t\tafterLines = append(afterLines, rest)\n\n\t\t\tbreak forward\n\t\tdefault:\n\t\t\to++\n\t\t}\n\t}\n\n\treturn afterLines\n}\n\nfunc positionAtEnd(b []byte) (row int, column int) {\n\trow = 1\n\tcolumn = 1\n\n\tfor _, c := range b {\n\t\tif c == '\\n' {\n\t\t\trow++\n\t\t\tcolumn = 1\n\t\t} else {\n\t\t\tcolumn++\n\t\t}\n\t}\n\n\treturn\n}\n"
  },
  {
    "path": "gossh/toml/internal/characters/ascii.go",
    "content": "package characters\n\nvar invalidAsciiTable = [256]bool{\n\t0x00: true,\n\t0x01: true,\n\t0x02: true,\n\t0x03: true,\n\t0x04: true,\n\t0x05: true,\n\t0x06: true,\n\t0x07: true,\n\t0x08: true,\n\t// 0x09 TAB\n\t// 0x0A LF\n\t0x0B: true,\n\t0x0C: true,\n\t// 0x0D CR\n\t0x0E: true,\n\t0x0F: true,\n\t0x10: true,\n\t0x11: true,\n\t0x12: true,\n\t0x13: true,\n\t0x14: true,\n\t0x15: true,\n\t0x16: true,\n\t0x17: true,\n\t0x18: true,\n\t0x19: true,\n\t0x1A: true,\n\t0x1B: true,\n\t0x1C: true,\n\t0x1D: true,\n\t0x1E: true,\n\t0x1F: true,\n\t// 0x20 - 0x7E Printable ASCII characters\n\t0x7F: true,\n}\n\nfunc InvalidAscii(b byte) bool {\n\treturn invalidAsciiTable[b]\n}\n"
  },
  {
    "path": "gossh/toml/internal/characters/utf8.go",
    "content": "package characters\n\nimport (\n\t\"unicode/utf8\"\n)\n\ntype utf8Err struct {\n\tIndex int\n\tSize  int\n}\n\nfunc (u utf8Err) Zero() bool {\n\treturn u.Size == 0\n}\n\n// Verified that a given string is only made of valid UTF-8 characters allowed\n// by the TOML spec:\n//\n// Any Unicode character may be used except those that must be escaped:\n// quotation mark, backslash, and the control characters other than tab (U+0000\n// to U+0008, U+000A to U+001F, U+007F).\n//\n// It is a copy of the Go 1.17 utf8.Valid implementation, tweaked to exit early\n// when a character is not allowed.\n//\n// The returned utf8Err is Zero() if the string is valid, or contains the byte\n// index and size of the invalid character.\n//\n// quotation mark => already checked\n// backslash => already checked\n// 0-0x8 => invalid\n// 0x9 => tab, ok\n// 0xA - 0x1F => invalid\n// 0x7F => invalid\nfunc Utf8TomlValidAlreadyEscaped(p []byte) (err utf8Err) {\n\t// Fast path. Check for and skip 8 bytes of ASCII characters per iteration.\n\toffset := 0\n\tfor len(p) >= 8 {\n\t\t// Combining two 32 bit loads allows the same code to be used\n\t\t// for 32 and 64 bit platforms.\n\t\t// The compiler can generate a 32bit load for first32 and second32\n\t\t// on many platforms. See test/codegen/memcombine.go.\n\t\tfirst32 := uint32(p[0]) | uint32(p[1])<<8 | uint32(p[2])<<16 | uint32(p[3])<<24\n\t\tsecond32 := uint32(p[4]) | uint32(p[5])<<8 | uint32(p[6])<<16 | uint32(p[7])<<24\n\t\tif (first32|second32)&0x80808080 != 0 {\n\t\t\t// Found a non ASCII byte (>= RuneSelf).\n\t\t\tbreak\n\t\t}\n\n\t\tfor i, b := range p[:8] {\n\t\t\tif InvalidAscii(b) {\n\t\t\t\terr.Index = offset + i\n\t\t\t\terr.Size = 1\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tp = p[8:]\n\t\toffset += 8\n\t}\n\tn := len(p)\n\tfor i := 0; i < n; {\n\t\tpi := p[i]\n\t\tif pi < utf8.RuneSelf {\n\t\t\tif InvalidAscii(pi) {\n\t\t\t\terr.Index = offset + i\n\t\t\t\terr.Size = 1\n\t\t\t\treturn\n\t\t\t}\n\t\t\ti++\n\t\t\tcontinue\n\t\t}\n\t\tx := first[pi]\n\t\tif x == xx {\n\t\t\t// Illegal starter byte.\n\t\t\terr.Index = offset + i\n\t\t\terr.Size = 1\n\t\t\treturn\n\t\t}\n\t\tsize := int(x & 7)\n\t\tif i+size > n {\n\t\t\t// Short or invalid.\n\t\t\terr.Index = offset + i\n\t\t\terr.Size = n - i\n\t\t\treturn\n\t\t}\n\t\taccept := acceptRanges[x>>4]\n\t\tif c := p[i+1]; c < accept.lo || accept.hi < c {\n\t\t\terr.Index = offset + i\n\t\t\terr.Size = 2\n\t\t\treturn\n\t\t} else if size == 2 {\n\t\t} else if c := p[i+2]; c < locb || hicb < c {\n\t\t\terr.Index = offset + i\n\t\t\terr.Size = 3\n\t\t\treturn\n\t\t} else if size == 3 {\n\t\t} else if c := p[i+3]; c < locb || hicb < c {\n\t\t\terr.Index = offset + i\n\t\t\terr.Size = 4\n\t\t\treturn\n\t\t}\n\t\ti += size\n\t}\n\treturn\n}\n\n// Return the size of the next rune if valid, 0 otherwise.\nfunc Utf8ValidNext(p []byte) int {\n\tc := p[0]\n\n\tif c < utf8.RuneSelf {\n\t\tif InvalidAscii(c) {\n\t\t\treturn 0\n\t\t}\n\t\treturn 1\n\t}\n\n\tx := first[c]\n\tif x == xx {\n\t\t// Illegal starter byte.\n\t\treturn 0\n\t}\n\tsize := int(x & 7)\n\tif size > len(p) {\n\t\t// Short or invalid.\n\t\treturn 0\n\t}\n\taccept := acceptRanges[x>>4]\n\tif c := p[1]; c < accept.lo || accept.hi < c {\n\t\treturn 0\n\t} else if size == 2 {\n\t} else if c := p[2]; c < locb || hicb < c {\n\t\treturn 0\n\t} else if size == 3 {\n\t} else if c := p[3]; c < locb || hicb < c {\n\t\treturn 0\n\t}\n\n\treturn size\n}\n\n// acceptRange gives the range of valid values for the second byte in a UTF-8\n// sequence.\ntype acceptRange struct {\n\tlo uint8 // lowest value for second byte.\n\thi uint8 // highest value for second byte.\n}\n\n// acceptRanges has size 16 to avoid bounds checks in the code that uses it.\nvar acceptRanges = [16]acceptRange{\n\t0: {locb, hicb},\n\t1: {0xA0, hicb},\n\t2: {locb, 0x9F},\n\t3: {0x90, hicb},\n\t4: {locb, 0x8F},\n}\n\n// first is information about the first byte in a UTF-8 sequence.\nvar first = [256]uint8{\n\t//   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x00-0x0F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x10-0x1F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x20-0x2F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x30-0x3F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x40-0x4F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x50-0x5F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x60-0x6F\n\tas, as, as, as, as, as, as, as, as, as, as, as, as, as, as, as, // 0x70-0x7F\n\t//   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x80-0x8F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0x90-0x9F\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xA0-0xAF\n\txx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xB0-0xBF\n\txx, xx, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xC0-0xCF\n\ts1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, s1, // 0xD0-0xDF\n\ts2, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s3, s4, s3, s3, // 0xE0-0xEF\n\ts5, s6, s6, s6, s7, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, // 0xF0-0xFF\n}\n\nconst (\n\t// The default lowest and highest continuation byte.\n\tlocb = 0b10000000\n\thicb = 0b10111111\n\n\t// These names of these constants are chosen to give nice alignment in the\n\t// table below. The first nibble is an index into acceptRanges or F for\n\t// special one-byte cases. The second nibble is the Rune length or the\n\t// Status for the special one-byte case.\n\txx = 0xF1 // invalid: size 1\n\tas = 0xF0 // ASCII: size 1\n\ts1 = 0x02 // accept 0, size 2\n\ts2 = 0x13 // accept 1, size 3\n\ts3 = 0x03 // accept 0, size 3\n\ts4 = 0x23 // accept 2, size 3\n\ts5 = 0x34 // accept 3, size 4\n\ts6 = 0x04 // accept 0, size 4\n\ts7 = 0x44 // accept 4, size 4\n)\n"
  },
  {
    "path": "gossh/toml/internal/cli/cli.go",
    "content": "package cli\n\nimport (\n\t\"bytes\"\n\t\"errors\"\n\t\"flag\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"os\"\n\n\t\"gossh/toml\"\n)\n\ntype ConvertFn func(r io.Reader, w io.Writer) error\n\ntype Program struct {\n\tUsage string\n\tFn    ConvertFn\n\t// Inplace allows the command to take more than one file as argument and\n\t// perform conversion in place on each provided file.\n\tInplace bool\n}\n\nfunc (p *Program) Execute() {\n\tflag.Usage = func() { fmt.Fprintf(os.Stderr, p.Usage) }\n\tflag.Parse()\n\tos.Exit(p.main(flag.Args(), os.Stdin, os.Stdout, os.Stderr))\n}\n\nfunc (p *Program) main(files []string, input io.Reader, output, error io.Writer) int {\n\terr := p.run(files, input, output)\n\tif err != nil {\n\n\t\tvar derr *toml.DecodeError\n\t\tif errors.As(err, &derr) {\n\t\t\tfmt.Fprintln(error, derr.String())\n\t\t\trow, col := derr.Position()\n\t\t\tfmt.Fprintln(error, \"error occurred at row\", row, \"column\", col)\n\t\t} else {\n\t\t\tfmt.Fprintln(error, err.Error())\n\t\t}\n\n\t\treturn -1\n\t}\n\treturn 0\n}\n\nfunc (p *Program) run(files []string, input io.Reader, output io.Writer) error {\n\tif len(files) > 0 {\n\t\tif p.Inplace {\n\t\t\treturn p.runAllFilesInPlace(files)\n\t\t}\n\t\tf, err := os.Open(files[0])\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tdefer f.Close()\n\t\tinput = f\n\t}\n\treturn p.Fn(input, output)\n}\n\nfunc (p *Program) runAllFilesInPlace(files []string) error {\n\tfor _, path := range files {\n\t\terr := p.runFileInPlace(path)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n\nfunc (p *Program) runFileInPlace(path string) error {\n\tin, err := ioutil.ReadFile(path)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tout := new(bytes.Buffer)\n\n\terr = p.Fn(bytes.NewReader(in), out)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\treturn ioutil.WriteFile(path, out.Bytes(), 0600)\n}\n"
  },
  {
    "path": "gossh/toml/internal/danger/danger.go",
    "content": "package danger\n\nimport (\n\t\"fmt\"\n\t\"reflect\"\n\t\"unsafe\"\n)\n\nconst maxInt = uintptr(int(^uint(0) >> 1))\n\nfunc SubsliceOffset(data []byte, subslice []byte) int {\n\tdatap := (*reflect.SliceHeader)(unsafe.Pointer(&data))\n\thlp := (*reflect.SliceHeader)(unsafe.Pointer(&subslice))\n\n\tif hlp.Data < datap.Data {\n\t\tpanic(fmt.Errorf(\"subslice address (%d) is before data address (%d)\", hlp.Data, datap.Data))\n\t}\n\toffset := hlp.Data - datap.Data\n\n\tif offset > maxInt {\n\t\tpanic(fmt.Errorf(\"slice offset larger than int (%d)\", offset))\n\t}\n\n\tintoffset := int(offset)\n\n\tif intoffset > datap.Len {\n\t\tpanic(fmt.Errorf(\"slice offset (%d) is farther than data length (%d)\", intoffset, datap.Len))\n\t}\n\n\tif intoffset+hlp.Len > datap.Len {\n\t\tpanic(fmt.Errorf(\"slice ends (%d+%d) is farther than data length (%d)\", intoffset, hlp.Len, datap.Len))\n\t}\n\n\treturn intoffset\n}\n\nfunc BytesRange(start []byte, end []byte) []byte {\n\tif start == nil || end == nil {\n\t\tpanic(\"cannot call BytesRange with nil\")\n\t}\n\tstartp := (*reflect.SliceHeader)(unsafe.Pointer(&start))\n\tendp := (*reflect.SliceHeader)(unsafe.Pointer(&end))\n\n\tif startp.Data > endp.Data {\n\t\tpanic(fmt.Errorf(\"start pointer address (%d) is after end pointer address (%d)\", startp.Data, endp.Data))\n\t}\n\n\tl := startp.Len\n\tendLen := int(endp.Data-startp.Data) + endp.Len\n\tif endLen > l {\n\t\tl = endLen\n\t}\n\n\tif l > startp.Cap {\n\t\tpanic(fmt.Errorf(\"range length is larger than capacity\"))\n\t}\n\n\treturn start[:l]\n}\n\nfunc Stride(ptr unsafe.Pointer, size uintptr, offset int) unsafe.Pointer {\n\t// TODO: replace with unsafe.Add when Go 1.17 is released\n\t//   https://github.com/golang/go/issues/40481\n\treturn unsafe.Pointer(uintptr(ptr) + uintptr(int(size)*offset))\n}\n"
  },
  {
    "path": "gossh/toml/internal/danger/typeid.go",
    "content": "package danger\n\nimport (\n\t\"reflect\"\n\t\"unsafe\"\n)\n\n// typeID is used as key in encoder and decoder caches to enable using\n// the optimize runtime.mapaccess2_fast64 function instead of the more\n// expensive lookup if we were to use reflect.Type as map key.\n//\n// typeID holds the pointer to the reflect.Type value, which is unique\n// in the program.\n//\n// https://github.com/segmentio/encoding/blob/master/json/codec.go#L59-L61\ntype TypeID unsafe.Pointer\n\nfunc MakeTypeID(t reflect.Type) TypeID {\n\t// reflect.Type has the fields:\n\t// typ unsafe.Pointer\n\t// ptr unsafe.Pointer\n\treturn TypeID((*[2]unsafe.Pointer)(unsafe.Pointer(&t))[1])\n}\n"
  },
  {
    "path": "gossh/toml/internal/testsuite/add.go",
    "content": "package testsuite\n\nimport (\n\t\"fmt\"\n\t\"math\"\n\t\"time\"\n\n\t\"gossh/toml\"\n)\n\n// addTag adds JSON tags to a data structure as expected by toml-test.\nfunc addTag(key string, tomlData any) any {\n\t// Switch on the data type.\n\tswitch orig := tomlData.(type) {\n\tdefault:\n\t\t//return map[string]interface{}{}\n\t\tpanic(fmt.Sprintf(\"Unknown type: %T\", tomlData))\n\n\t// A table: we don't need to add any tags, just recurse for every table\n\t// entry.\n\tcase map[string]any:\n\t\ttyped := make(map[string]any, len(orig))\n\t\tfor k, v := range orig {\n\t\t\ttyped[k] = addTag(k, v)\n\t\t}\n\t\treturn typed\n\n\t// An array: we don't need to add any tags, just recurse for every table\n\t// entry.\n\tcase []map[string]any:\n\t\ttyped := make([]map[string]any, len(orig))\n\t\tfor i, v := range orig {\n\t\t\ttyped[i] = addTag(\"\", v).(map[string]any)\n\t\t}\n\t\treturn typed\n\tcase []any:\n\t\ttyped := make([]any, len(orig))\n\t\tfor i, v := range orig {\n\t\t\ttyped[i] = addTag(\"\", v)\n\t\t}\n\t\treturn typed\n\n\t// Datetime: tag as datetime.\n\tcase toml.LocalTime:\n\t\treturn tag(\"time-local\", orig.String())\n\tcase toml.LocalDate:\n\t\treturn tag(\"date-local\", orig.String())\n\tcase toml.LocalDateTime:\n\t\treturn tag(\"datetime-local\", orig.String())\n\tcase time.Time:\n\t\treturn tag(\"datetime\", orig.Format(\"2006-01-02T15:04:05.999999999Z07:00\"))\n\n\t// Tag primitive values: bool, string, int, and float64.\n\tcase bool:\n\t\treturn tag(\"bool\", fmt.Sprintf(\"%v\", orig))\n\tcase string:\n\t\treturn tag(\"string\", orig)\n\tcase int64:\n\t\treturn tag(\"integer\", fmt.Sprintf(\"%d\", orig))\n\tcase float64:\n\t\t// Special case for nan since NaN == NaN is false.\n\t\tif math.IsNaN(orig) {\n\t\t\treturn tag(\"float\", \"nan\")\n\t\t}\n\t\treturn tag(\"float\", fmt.Sprintf(\"%v\", orig))\n\t}\n}\n\nfunc tag(typeName string, data any) map[string]any {\n\treturn map[string]any{\n\t\t\"type\":  typeName,\n\t\t\"value\": data,\n\t}\n}\n"
  },
  {
    "path": "gossh/toml/internal/testsuite/json.go",
    "content": "package testsuite\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"strings\"\n\t\"testing\"\n\t\"time\"\n)\n\nfunc CmpJSON(t *testing.T, key string, want, have any) {\n\tswitch w := want.(type) {\n\tcase map[string]any:\n\t\tcmpJSONMaps(t, key, w, have)\n\tcase []any:\n\t\tcmpJSONArrays(t, key, w, have)\n\tdefault:\n\t\tt.Errorf(\n\t\t\t\"Key '%s' in expected output should be a map or a list of maps, but it's a %T\",\n\t\t\tkey, want)\n\t}\n}\n\nfunc cmpJSONMaps(t *testing.T, key string, want map[string]any, have any) {\n\thaveMap, ok := have.(map[string]any)\n\tif !ok {\n\t\tmismatch(t, key, \"table\", want, haveMap)\n\t\treturn\n\t}\n\n\t// Check to make sure both or neither are values.\n\tif isValue(want) && !isValue(haveMap) {\n\t\tt.Fatalf(\"Key '%s' is supposed to be a value, but the parser reports it as a table\", key)\n\t}\n\tif !isValue(want) && isValue(haveMap) {\n\t\tt.Fatalf(\"Key '%s' is supposed to be a table, but the parser reports it as a value\", key)\n\t}\n\tif isValue(want) && isValue(haveMap) {\n\t\tcmpJSONValues(t, key, want, haveMap)\n\t\treturn\n\t}\n\n\t// Check that the keys of each map are equivalent.\n\tfor k := range want {\n\t\tif _, ok := haveMap[k]; !ok {\n\t\t\tbunk := kjoin(key, k)\n\t\t\tt.Fatalf(\"Could not find key '%s' in parser output.\", bunk)\n\t\t}\n\t}\n\tfor k := range haveMap {\n\t\tif _, ok := want[k]; !ok {\n\t\t\tbunk := kjoin(key, k)\n\t\t\tt.Fatalf(\"Could not find key '%s' in expected output.\", bunk)\n\t\t}\n\t}\n\n\t// Okay, now make sure that each value is equivalent.\n\tfor k := range want {\n\t\tCmpJSON(t, kjoin(key, k), want[k], haveMap[k])\n\t}\n}\n\nfunc cmpJSONArrays(t *testing.T, key string, want, have any) {\n\twantSlice, ok := want.([]any)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"'value' should be a JSON array when 'type=array', but it is a %T\", want))\n\t}\n\n\thaveSlice, ok := have.([]any)\n\tif !ok {\n\t\tt.Fatalf(\"Malformed output from your encoder: 'value' is not a JSON array: %T\", have)\n\t}\n\n\tif len(wantSlice) != len(haveSlice) {\n\t\tt.Fatalf(\"Array lengths differ for key '%s':\\n\"+\n\t\t\t\"  Expected:     %d\\n\"+\n\t\t\t\"  Your encoder: %d\",\n\t\t\tkey, len(wantSlice), len(haveSlice))\n\t}\n\tfor i := 0; i < len(wantSlice); i++ {\n\t\tCmpJSON(t, key, wantSlice[i], haveSlice[i])\n\t}\n}\n\nfunc cmpJSONValues(t *testing.T, key string, want, have map[string]any) {\n\twantType, ok := want[\"type\"].(string)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"'type' should be a string, but it is a %T\", want[\"type\"]))\n\t}\n\n\thaveType, ok := have[\"type\"].(string)\n\tif !ok {\n\t\tt.Fatalf(\"Malformed output from your encoder: 'type' is not a string: %T\", have[\"type\"])\n\t}\n\n\tif wantType != haveType {\n\t\tvalMismatch(t, key, wantType, haveType, want, have)\n\t}\n\n\t// If this is an array, then we've got to do some work to check equality.\n\tif wantType == \"array\" {\n\t\tcmpJSONArrays(t, key, want, have)\n\t\treturn\n\t}\n\n\t// Atomic values are always strings\n\twantVal, ok := want[\"value\"].(string)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"'value' %v should be a string, but it is a %[1]T\", want[\"value\"]))\n\t}\n\n\thaveVal, ok := have[\"value\"].(string)\n\tif !ok {\n\t\tpanic(fmt.Sprintf(\"Malformed output from your encoder: %T is not a string\", have[\"value\"]))\n\t}\n\n\t// Excepting floats and datetimes, other values can be compared as strings.\n\tswitch wantType {\n\tcase \"float\":\n\t\tcmpFloats(t, key, wantVal, haveVal)\n\tcase \"datetime\", \"datetime-local\", \"date-local\", \"time-local\":\n\t\tcmpAsDatetimes(t, key, wantType, wantVal, haveVal)\n\tdefault:\n\t\tcmpAsStrings(t, key, wantVal, haveVal)\n\t}\n}\n\nfunc cmpAsStrings(t *testing.T, key string, want, have string) {\n\tif want != have {\n\t\tt.Fatalf(\"Values for key '%s' don't match:\\n\"+\n\t\t\t\"  Expected:     %s\\n\"+\n\t\t\t\"  Your encoder: %s\",\n\t\t\tkey, want, have)\n\t}\n}\n\nfunc cmpFloats(t *testing.T, key string, want, have string) {\n\t// Special case for NaN, since NaN != NaN.\n\tif strings.HasSuffix(want, \"nan\") || strings.HasSuffix(have, \"nan\") {\n\t\tif want != have {\n\t\t\tt.Fatalf(\"Values for key '%s' don't match:\\n\"+\n\t\t\t\t\"  Expected:     %v\\n\"+\n\t\t\t\t\"  Your encoder: %v\",\n\t\t\t\tkey, want, have)\n\t\t}\n\t\treturn\n\t}\n\n\twantF, err := strconv.ParseFloat(want, 64)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Could not read '%s' as a float value for key '%s'\", want, key))\n\t}\n\n\thaveF, err := strconv.ParseFloat(have, 64)\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Malformed output from your encoder: key '%s' is not a float: '%s'\", key, have))\n\t}\n\n\tif wantF != haveF {\n\t\tt.Fatalf(\"Values for key '%s' don't match:\\n\"+\n\t\t\t\"  Expected:     %v\\n\"+\n\t\t\t\"  Your encoder: %v\",\n\t\t\tkey, wantF, haveF)\n\t}\n}\n\nvar datetimeRepl = strings.NewReplacer(\n\t\" \", \"T\",\n\t\"t\", \"T\",\n\t\"z\", \"Z\")\n\nvar layouts = map[string]string{\n\t\"datetime\":       time.RFC3339Nano,\n\t\"datetime-local\": \"2006-01-02T15:04:05.999999999\",\n\t\"date-local\":     \"2006-01-02\",\n\t\"time-local\":     \"15:04:05\",\n}\n\nfunc cmpAsDatetimes(t *testing.T, key string, kind, want, have string) {\n\tlayout, ok := layouts[kind]\n\tif !ok {\n\t\tpanic(\"should never happen\")\n\t}\n\n\twantT, err := time.Parse(layout, datetimeRepl.Replace(want))\n\tif err != nil {\n\t\tpanic(fmt.Sprintf(\"Could not read '%s' as a datetime value for key '%s'\", want, key))\n\t}\n\n\thaveT, err := time.Parse(layout, datetimeRepl.Replace(want))\n\tif err != nil {\n\t\tt.Fatalf(\"Malformed output from your encoder: key '%s' is not a datetime: '%s'\", key, have)\n\t\treturn\n\t}\n\tif !wantT.Equal(haveT) {\n\t\tt.Fatalf(\"Values for key '%s' don't match:\\n\"+\n\t\t\t\"  Expected:     %v\\n\"+\n\t\t\t\"  Your encoder: %v\",\n\t\t\tkey, wantT, haveT)\n\t}\n}\n\nfunc cmpAsDatetimesLocal(t *testing.T, key string, want, have string) {\n\tif datetimeRepl.Replace(want) != datetimeRepl.Replace(have) {\n\t\tt.Fatalf(\"Values for key '%s' don't match:\\n\"+\n\t\t\t\"  Expected:     %v\\n\"+\n\t\t\t\"  Your encoder: %v\",\n\t\t\tkey, want, have)\n\t}\n}\n\nfunc kjoin(old, key string) string {\n\tif len(old) == 0 {\n\t\treturn key\n\t}\n\treturn old + \".\" + key\n}\n\nfunc isValue(m map[string]any) bool {\n\tif len(m) != 2 {\n\t\treturn false\n\t}\n\tif _, ok := m[\"type\"]; !ok {\n\t\treturn false\n\t}\n\tif _, ok := m[\"value\"]; !ok {\n\t\treturn false\n\t}\n\treturn true\n}\n\nfunc mismatch(t *testing.T, key string, wantType string, want, have any) {\n\tt.Fatalf(\"Key '%s' is not an %s but %[4]T:\\n\"+\n\t\t\"  Expected:     %#[3]v\\n\"+\n\t\t\"  Your encoder: %#[4]v\",\n\t\tkey, wantType, want, have)\n}\n\nfunc valMismatch(t *testing.T, key string, wantType, haveType string, want, have any) {\n\tt.Fatalf(\"Key '%s' is not an %s but %s:\\n\"+\n\t\t\"  Expected:     %#[3]v\\n\"+\n\t\t\"  Your encoder: %#[4]v\",\n\t\tkey, wantType, want, have)\n}\n"
  },
  {
    "path": "gossh/toml/internal/testsuite/parser.go",
    "content": "package testsuite\n\nimport (\n\t\"bytes\"\n\t\"encoding/json\"\n\t\"fmt\"\n\n\t\"gossh/toml\"\n)\n\ntype parser struct{}\n\nfunc (p parser) Decode(input string) (output string, outputIsError bool, retErr error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tswitch rr := r.(type) {\n\t\t\tcase error:\n\t\t\t\tretErr = rr\n\t\t\tdefault:\n\t\t\t\tretErr = fmt.Errorf(\"%s\", rr)\n\t\t\t}\n\t\t}\n\t}()\n\n\tvar v any\n\n\tif err := toml.Unmarshal([]byte(input), &v); err != nil {\n\t\treturn err.Error(), true, nil\n\t}\n\n\tj, err := json.MarshalIndent(addTag(\"\", v), \"\", \"  \")\n\tif err != nil {\n\t\treturn \"\", false, retErr\n\t}\n\n\treturn string(j), false, retErr\n}\n\nfunc (p parser) Encode(input string) (output string, outputIsError bool, retErr error) {\n\tdefer func() {\n\t\tif r := recover(); r != nil {\n\t\t\tswitch rr := r.(type) {\n\t\t\tcase error:\n\t\t\t\tretErr = rr\n\t\t\tdefault:\n\t\t\t\tretErr = fmt.Errorf(\"%s\", rr)\n\t\t\t}\n\t\t}\n\t}()\n\n\tvar tmp any\n\terr := json.Unmarshal([]byte(input), &tmp)\n\tif err != nil {\n\t\treturn \"\", false, err\n\t}\n\n\trm, err := rmTag(tmp)\n\tif err != nil {\n\t\treturn err.Error(), true, retErr\n\t}\n\n\tbuf := new(bytes.Buffer)\n\terr = toml.NewEncoder(buf).Encode(rm)\n\tif err != nil {\n\t\treturn err.Error(), true, retErr\n\t}\n\n\treturn buf.String(), false, retErr\n}\n"
  },
  {
    "path": "gossh/toml/internal/testsuite/rm.go",
    "content": "package testsuite\n\nimport (\n\t\"fmt\"\n\t\"strconv\"\n\t\"time\"\n\n\t\"gossh/toml\"\n)\n\n// Remove JSON tags to a data structure as returned by toml-test.\nfunc rmTag(typedJson any) (any, error) {\n\t// Check if key is in the table m.\n\tin := func(key string, m map[string]any) bool {\n\t\t_, ok := m[key]\n\t\treturn ok\n\t}\n\n\t// Switch on the data type.\n\tswitch v := typedJson.(type) {\n\n\t// Object: this can either be a TOML table or a primitive with tags.\n\tcase map[string]any:\n\t\t// This value represents a primitive: remove the tags and return just\n\t\t// the primitive value.\n\t\tif len(v) == 2 && in(\"type\", v) && in(\"value\", v) {\n\t\t\tut, err := untag(v)\n\t\t\tif err != nil {\n\t\t\t\treturn ut, fmt.Errorf(\"tag.Remove: %w\", err)\n\t\t\t}\n\t\t\treturn ut, nil\n\t\t}\n\n\t\t// Table: remove tags on all children.\n\t\tm := make(map[string]any, len(v))\n\t\tfor k, v2 := range v {\n\t\t\tvar err error\n\t\t\tm[k], err = rmTag(v2)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn m, nil\n\n\t// Array: remove tags from all itenm.\n\tcase []any:\n\t\ta := make([]any, len(v))\n\t\tfor i := range v {\n\t\t\tvar err error\n\t\t\ta[i], err = rmTag(v[i])\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t}\n\t\treturn a, nil\n\t}\n\n\t// The top level must be an object or array.\n\treturn nil, fmt.Errorf(\"unrecognized JSON format '%T'\", typedJson)\n}\n\n// Return a primitive: read the \"type\" and convert the \"value\" to that.\nfunc untag(typed map[string]any) (any, error) {\n\tt := typed[\"type\"].(string)\n\tv := typed[\"value\"].(string)\n\tswitch t {\n\tcase \"string\":\n\t\treturn v, nil\n\tcase \"integer\":\n\t\tn, err := strconv.ParseInt(v, 10, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"untag: %w\", err)\n\t\t}\n\t\treturn n, nil\n\tcase \"float\":\n\t\tf, err := strconv.ParseFloat(v, 64)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"untag: %w\", err)\n\t\t}\n\t\treturn f, nil\n\n\t\t//toml.LocalDate{Year:2020, Month:12, Day:12}\n\tcase \"datetime\":\n\t\treturn time.Parse(\"2006-01-02T15:04:05.999999999Z07:00\", v)\n\tcase \"datetime-local\":\n\t\tvar t toml.LocalDateTime\n\t\terr := t.UnmarshalText([]byte(v))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"untag: %w\", err)\n\t\t}\n\t\treturn t, nil\n\tcase \"date-local\":\n\t\tvar t toml.LocalDate\n\t\terr := t.UnmarshalText([]byte(v))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"untag: %w\", err)\n\t\t}\n\t\treturn t, nil\n\tcase \"time-local\":\n\t\tvar t toml.LocalTime\n\t\terr := t.UnmarshalText([]byte(v))\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"untag: %w\", err)\n\t\t}\n\t\treturn t, nil\n\tcase \"bool\":\n\t\tswitch v {\n\t\tcase \"true\":\n\t\t\treturn true, nil\n\t\tcase \"false\":\n\t\t\treturn false, nil\n\t\t}\n\t\treturn nil, fmt.Errorf(\"untag: could not parse %q as a boolean\", v)\n\t}\n\n\treturn nil, fmt.Errorf(\"untag: unrecognized tag type %q\", t)\n}\n\nfunc parseTime(v, format string, local bool) (t time.Time, err error) {\n\tif local {\n\t\tt, err = time.ParseInLocation(format, v, time.Local)\n\t} else {\n\t\tt, err = time.Parse(format, v)\n\t}\n\tif err != nil {\n\t\treturn time.Time{}, fmt.Errorf(\"Could not parse %q as a datetime: %w\", v, err)\n\t}\n\treturn t, nil\n}\n"
  },
  {
    "path": "gossh/toml/internal/testsuite/testsuite.go",
    "content": "// Package testsuite provides helper functions for interoperating with the\n// language-agnostic TOML test suite at github.com/BurntSushi/toml-test.\npackage testsuite\n\nimport (\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"os\"\n\n\t\"gossh/toml\"\n)\n\n// Marshal is a helpfer function for calling toml.Marshal\n//\n// Only needed to avoid package import loops.\nfunc Marshal(v any) ([]byte, error) {\n\treturn toml.Marshal(v)\n}\n\n// Unmarshal is a helper function for calling toml.Unmarshal.\n//\n// Only needed to avoid package import loops.\nfunc Unmarshal(data []byte, v any) error {\n\treturn toml.Unmarshal(data, v)\n}\n\n// ValueToTaggedJSON takes a data structure and returns the tagged JSON\n// representation.\nfunc ValueToTaggedJSON(doc any) ([]byte, error) {\n\treturn json.MarshalIndent(addTag(\"\", doc), \"\", \"  \")\n}\n\n// DecodeStdin is a helper function for the toml-test binary interface.  TOML input\n// is read from STDIN and a resulting tagged JSON representation is written to\n// STDOUT.\nfunc DecodeStdin() error {\n\tvar decoded map[string]any\n\n\tif err := toml.NewDecoder(os.Stdin).Decode(&decoded); err != nil {\n\t\treturn fmt.Errorf(\"Error decoding TOML: %s\", err)\n\t}\n\n\tj := json.NewEncoder(os.Stdout)\n\tj.SetIndent(\"\", \"  \")\n\tif err := j.Encode(addTag(\"\", decoded)); err != nil {\n\t\treturn fmt.Errorf(\"Error encoding JSON: %s\", err)\n\t}\n\n\treturn nil\n}\n\n// EncodeStdin is a helper function for the toml-test binary interface.  Tagged\n// JSON is read from STDIN and a resulting TOML representation is written to\n// STDOUT.\nfunc EncodeStdin() error {\n\tvar j any\n\terr := json.NewDecoder(os.Stdin).Decode(&j)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\trm, err := rmTag(j)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"removing tags: %w\", err)\n\t}\n\n\treturn toml.NewEncoder(os.Stdout).Encode(rm)\n}\n"
  },
  {
    "path": "gossh/toml/internal/tracker/key.go",
    "content": "package tracker\n\nimport \"gossh/toml/unstable\"\n\n// KeyTracker is a tracker that keeps track of the current Key as the AST is\n// walked.\ntype KeyTracker struct {\n\tk []string\n}\n\n// UpdateTable sets the state of the tracker with the AST table node.\nfunc (t *KeyTracker) UpdateTable(node *unstable.Node) {\n\tt.reset()\n\tt.Push(node)\n}\n\n// UpdateArrayTable sets the state of the tracker with the AST array table node.\nfunc (t *KeyTracker) UpdateArrayTable(node *unstable.Node) {\n\tt.reset()\n\tt.Push(node)\n}\n\n// Push the given key on the stack.\nfunc (t *KeyTracker) Push(node *unstable.Node) {\n\tit := node.Key()\n\tfor it.Next() {\n\t\tt.k = append(t.k, string(it.Node().Data))\n\t}\n}\n\n// Pop key from stack.\nfunc (t *KeyTracker) Pop(node *unstable.Node) {\n\tit := node.Key()\n\tfor it.Next() {\n\t\tt.k = t.k[:len(t.k)-1]\n\t}\n}\n\n// Key returns the current key\nfunc (t *KeyTracker) Key() []string {\n\tk := make([]string, len(t.k))\n\tcopy(k, t.k)\n\treturn k\n}\n\nfunc (t *KeyTracker) reset() {\n\tt.k = t.k[:0]\n}\n"
  },
  {
    "path": "gossh/toml/internal/tracker/seen.go",
    "content": "package tracker\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"sync\"\n\n\t\"gossh/toml/unstable\"\n)\n\ntype keyKind uint8\n\nconst (\n\tinvalidKind keyKind = iota\n\tvalueKind\n\ttableKind\n\tarrayTableKind\n)\n\nfunc (k keyKind) String() string {\n\tswitch k {\n\tcase invalidKind:\n\t\treturn \"invalid\"\n\tcase valueKind:\n\t\treturn \"value\"\n\tcase tableKind:\n\t\treturn \"table\"\n\tcase arrayTableKind:\n\t\treturn \"array table\"\n\t}\n\tpanic(\"missing keyKind string mapping\")\n}\n\n// SeenTracker tracks which keys have been seen with which TOML type to flag\n// duplicates and mismatches according to the spec.\n//\n// Each node in the visited tree is represented by an entry. Each entry has an\n// identifier, which is provided by a counter. Entries are stored in the array\n// entries. As new nodes are discovered (referenced for the first time in the\n// TOML document), entries are created and appended to the array. An entry\n// points to its parent using its id.\n//\n// To find whether a given key (sequence of []byte) has already been visited,\n// the entries are linearly searched, looking for one with the right name and\n// parent id.\n//\n// Given that all keys appear in the document after their parent, it is\n// guaranteed that all descendants of a node are stored after the node, this\n// speeds up the search process.\n//\n// When encountering [[array tables]], the descendants of that node are removed\n// to allow that branch of the tree to be \"rediscovered\". To maintain the\n// invariant above, the deletion process needs to keep the order of entries.\n// This results in more copies in that case.\ntype SeenTracker struct {\n\tentries    []entry\n\tcurrentIdx int\n}\n\nvar pool sync.Pool\n\nfunc (s *SeenTracker) reset() {\n\t// Always contains a root element at index 0.\n\ts.currentIdx = 0\n\tif len(s.entries) == 0 {\n\t\ts.entries = make([]entry, 1, 2)\n\t} else {\n\t\ts.entries = s.entries[:1]\n\t}\n\ts.entries[0].child = -1\n\ts.entries[0].next = -1\n}\n\ntype entry struct {\n\t// Use -1 to indicate no child or no sibling.\n\tchild int\n\tnext  int\n\n\tname     []byte\n\tkind     keyKind\n\texplicit bool\n\tkv       bool\n}\n\n// Find the index of the child of parentIdx with key k. Returns -1 if\n// it does not exist.\nfunc (s *SeenTracker) find(parentIdx int, k []byte) int {\n\tfor i := s.entries[parentIdx].child; i >= 0; i = s.entries[i].next {\n\t\tif bytes.Equal(s.entries[i].name, k) {\n\t\t\treturn i\n\t\t}\n\t}\n\treturn -1\n}\n\n// Remove all descendants of node at position idx.\nfunc (s *SeenTracker) clear(idx int) {\n\tif idx >= len(s.entries) {\n\t\treturn\n\t}\n\n\tfor i := s.entries[idx].child; i >= 0; {\n\t\tnext := s.entries[i].next\n\t\tn := s.entries[0].next\n\t\ts.entries[0].next = i\n\t\ts.entries[i].next = n\n\t\ts.entries[i].name = nil\n\t\ts.clear(i)\n\t\ti = next\n\t}\n\n\ts.entries[idx].child = -1\n}\n\nfunc (s *SeenTracker) create(parentIdx int, name []byte, kind keyKind, explicit bool, kv bool) int {\n\te := entry{\n\t\tchild: -1,\n\t\tnext:  s.entries[parentIdx].child,\n\n\t\tname:     name,\n\t\tkind:     kind,\n\t\texplicit: explicit,\n\t\tkv:       kv,\n\t}\n\tvar idx int\n\tif s.entries[0].next >= 0 {\n\t\tidx = s.entries[0].next\n\t\ts.entries[0].next = s.entries[idx].next\n\t\ts.entries[idx] = e\n\t} else {\n\t\tidx = len(s.entries)\n\t\ts.entries = append(s.entries, e)\n\t}\n\n\ts.entries[parentIdx].child = idx\n\n\treturn idx\n}\n\nfunc (s *SeenTracker) setExplicitFlag(parentIdx int) {\n\tfor i := s.entries[parentIdx].child; i >= 0; i = s.entries[i].next {\n\t\tif s.entries[i].kv {\n\t\t\ts.entries[i].explicit = true\n\t\t\ts.entries[i].kv = false\n\t\t}\n\t\ts.setExplicitFlag(i)\n\t}\n}\n\n// CheckExpression takes a top-level node and checks that it does not contain\n// keys that have been seen in previous calls, and validates that types are\n// consistent. It returns true if it is the first time this node's key is seen.\n// Useful to clear array tables on first use.\nfunc (s *SeenTracker) CheckExpression(node *unstable.Node) (bool, error) {\n\tif s.entries == nil {\n\t\ts.reset()\n\t}\n\tswitch node.Kind {\n\tcase unstable.KeyValue:\n\t\treturn s.checkKeyValue(node)\n\tcase unstable.Table:\n\t\treturn s.checkTable(node)\n\tcase unstable.ArrayTable:\n\t\treturn s.checkArrayTable(node)\n\tdefault:\n\t\tpanic(fmt.Errorf(\"this should not be a top level node type: %s\", node.Kind))\n\t}\n}\n\nfunc (s *SeenTracker) checkTable(node *unstable.Node) (bool, error) {\n\tif s.currentIdx >= 0 {\n\t\ts.setExplicitFlag(s.currentIdx)\n\t}\n\n\tit := node.Key()\n\n\tparentIdx := 0\n\n\t// This code is duplicated in checkArrayTable. This is because factoring\n\t// it in a function requires to copy the iterator, or allocate it to the\n\t// heap, which is not cheap.\n\tfor it.Next() {\n\t\tif it.IsLast() {\n\t\t\tbreak\n\t\t}\n\n\t\tk := it.Node().Data\n\n\t\tidx := s.find(parentIdx, k)\n\n\t\tif idx < 0 {\n\t\t\tidx = s.create(parentIdx, k, tableKind, false, false)\n\t\t} else {\n\t\t\tentry := s.entries[idx]\n\t\t\tif entry.kind == valueKind {\n\t\t\t\treturn false, fmt.Errorf(\"toml: expected %s to be a table, not a %s\", string(k), entry.kind)\n\t\t\t}\n\t\t}\n\t\tparentIdx = idx\n\t}\n\n\tk := it.Node().Data\n\tidx := s.find(parentIdx, k)\n\n\tfirst := false\n\tif idx >= 0 {\n\t\tkind := s.entries[idx].kind\n\t\tif kind != tableKind {\n\t\t\treturn false, fmt.Errorf(\"toml: key %s should be a table, not a %s\", string(k), kind)\n\t\t}\n\t\tif s.entries[idx].explicit {\n\t\t\treturn false, fmt.Errorf(\"toml: table %s already exists\", string(k))\n\t\t}\n\t\ts.entries[idx].explicit = true\n\t} else {\n\t\tidx = s.create(parentIdx, k, tableKind, true, false)\n\t\tfirst = true\n\t}\n\n\ts.currentIdx = idx\n\n\treturn first, nil\n}\n\nfunc (s *SeenTracker) checkArrayTable(node *unstable.Node) (bool, error) {\n\tif s.currentIdx >= 0 {\n\t\ts.setExplicitFlag(s.currentIdx)\n\t}\n\n\tit := node.Key()\n\n\tparentIdx := 0\n\n\tfor it.Next() {\n\t\tif it.IsLast() {\n\t\t\tbreak\n\t\t}\n\n\t\tk := it.Node().Data\n\n\t\tidx := s.find(parentIdx, k)\n\n\t\tif idx < 0 {\n\t\t\tidx = s.create(parentIdx, k, tableKind, false, false)\n\t\t} else {\n\t\t\tentry := s.entries[idx]\n\t\t\tif entry.kind == valueKind {\n\t\t\t\treturn false, fmt.Errorf(\"toml: expected %s to be a table, not a %s\", string(k), entry.kind)\n\t\t\t}\n\t\t}\n\n\t\tparentIdx = idx\n\t}\n\n\tk := it.Node().Data\n\tidx := s.find(parentIdx, k)\n\n\tfirstTime := idx < 0\n\tif firstTime {\n\t\tidx = s.create(parentIdx, k, arrayTableKind, true, false)\n\t} else {\n\t\tkind := s.entries[idx].kind\n\t\tif kind != arrayTableKind {\n\t\t\treturn false, fmt.Errorf(\"toml: key %s already exists as a %s,  but should be an array table\", kind, string(k))\n\t\t}\n\t\ts.clear(idx)\n\t}\n\n\ts.currentIdx = idx\n\n\treturn firstTime, nil\n}\n\nfunc (s *SeenTracker) checkKeyValue(node *unstable.Node) (bool, error) {\n\tparentIdx := s.currentIdx\n\tit := node.Key()\n\n\tfor it.Next() {\n\t\tk := it.Node().Data\n\n\t\tidx := s.find(parentIdx, k)\n\n\t\tif idx < 0 {\n\t\t\tidx = s.create(parentIdx, k, tableKind, false, true)\n\t\t} else {\n\t\t\tentry := s.entries[idx]\n\t\t\tif it.IsLast() {\n\t\t\t\treturn false, fmt.Errorf(\"toml: key %s is already defined\", string(k))\n\t\t\t} else if entry.kind != tableKind {\n\t\t\t\treturn false, fmt.Errorf(\"toml: expected %s to be a table, not a %s\", string(k), entry.kind)\n\t\t\t} else if entry.explicit {\n\t\t\t\treturn false, fmt.Errorf(\"toml: cannot redefine table %s that has already been explicitly defined\", string(k))\n\t\t\t}\n\t\t}\n\n\t\tparentIdx = idx\n\t}\n\n\ts.entries[parentIdx].kind = valueKind\n\n\tvalue := node.Value()\n\n\tswitch value.Kind {\n\tcase unstable.InlineTable:\n\t\treturn s.checkInlineTable(value)\n\tcase unstable.Array:\n\t\treturn s.checkArray(value)\n\t}\n\n\treturn false, nil\n}\n\nfunc (s *SeenTracker) checkArray(node *unstable.Node) (first bool, err error) {\n\tit := node.Children()\n\tfor it.Next() {\n\t\tn := it.Node()\n\t\tswitch n.Kind {\n\t\tcase unstable.InlineTable:\n\t\t\tfirst, err = s.checkInlineTable(n)\n\t\t\tif err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\tcase unstable.Array:\n\t\t\tfirst, err = s.checkArray(n)\n\t\t\tif err != nil {\n\t\t\t\treturn false, err\n\t\t\t}\n\t\t}\n\t}\n\treturn first, nil\n}\n\nfunc (s *SeenTracker) checkInlineTable(node *unstable.Node) (first bool, err error) {\n\tif pool.New == nil {\n\t\tpool.New = func() any {\n\t\t\treturn &SeenTracker{}\n\t\t}\n\t}\n\n\ts = pool.Get().(*SeenTracker)\n\ts.reset()\n\n\tit := node.Children()\n\tfor it.Next() {\n\t\tn := it.Node()\n\t\tfirst, err = s.checkKeyValue(n)\n\t\tif err != nil {\n\t\t\treturn false, err\n\t\t}\n\t}\n\n\t// As inline tables are self-contained, the tracker does not\n\t// need to retain the details of what they contain. The\n\t// keyValue element that creates the inline table is kept to\n\t// mark the presence of the inline table and prevent\n\t// redefinition of its keys: check* functions cannot walk into\n\t// a value.\n\tpool.Put(s)\n\treturn first, nil\n}\n"
  },
  {
    "path": "gossh/toml/internal/tracker/tracker.go",
    "content": "package tracker\n"
  },
  {
    "path": "gossh/toml/localtime.go",
    "content": "package toml\n\nimport (\n\t\"fmt\"\n\t\"strings\"\n\t\"time\"\n\n\t\"gossh/toml/unstable\"\n)\n\n// LocalDate represents a calendar day in no specific timezone.\ntype LocalDate struct {\n\tYear  int\n\tMonth int\n\tDay   int\n}\n\n// AsTime converts d into a specific time instance at midnight in zone.\nfunc (d LocalDate) AsTime(zone *time.Location) time.Time {\n\treturn time.Date(d.Year, time.Month(d.Month), d.Day, 0, 0, 0, 0, zone)\n}\n\n// String returns RFC 3339 representation of d.\nfunc (d LocalDate) String() string {\n\treturn fmt.Sprintf(\"%04d-%02d-%02d\", d.Year, d.Month, d.Day)\n}\n\n// MarshalText returns RFC 3339 representation of d.\nfunc (d LocalDate) MarshalText() ([]byte, error) {\n\treturn []byte(d.String()), nil\n}\n\n// UnmarshalText parses b using RFC 3339 to fill d.\nfunc (d *LocalDate) UnmarshalText(b []byte) error {\n\tres, err := parseLocalDate(b)\n\tif err != nil {\n\t\treturn err\n\t}\n\t*d = res\n\treturn nil\n}\n\n// LocalTime represents a time of day of no specific day in no specific\n// timezone.\ntype LocalTime struct {\n\tHour       int // Hour of the day: [0; 24[\n\tMinute     int // Minute of the hour: [0; 60[\n\tSecond     int // Second of the minute: [0; 60[\n\tNanosecond int // Nanoseconds within the second:  [0, 1000000000[\n\tPrecision  int // Number of digits to display for Nanosecond.\n}\n\n// String returns RFC 3339 representation of d.\n// If d.Nanosecond and d.Precision are zero, the time won't have a nanosecond\n// component. If d.Nanosecond > 0 but d.Precision = 0, then the minimum number\n// of digits for nanoseconds is provided.\nfunc (d LocalTime) String() string {\n\ts := fmt.Sprintf(\"%02d:%02d:%02d\", d.Hour, d.Minute, d.Second)\n\n\tif d.Precision > 0 {\n\t\ts += fmt.Sprintf(\".%09d\", d.Nanosecond)[:d.Precision+1]\n\t} else if d.Nanosecond > 0 {\n\t\t// Nanoseconds are specified, but precision is not provided. Use the\n\t\t// minimum.\n\t\ts += strings.Trim(fmt.Sprintf(\".%09d\", d.Nanosecond), \"0\")\n\t}\n\n\treturn s\n}\n\n// MarshalText returns RFC 3339 representation of d.\nfunc (d LocalTime) MarshalText() ([]byte, error) {\n\treturn []byte(d.String()), nil\n}\n\n// UnmarshalText parses b using RFC 3339 to fill d.\nfunc (d *LocalTime) UnmarshalText(b []byte) error {\n\tres, left, err := parseLocalTime(b)\n\tif err == nil && len(left) != 0 {\n\t\terr = unstable.NewParserError(left, \"extra characters\")\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\t*d = res\n\treturn nil\n}\n\n// LocalDateTime represents a time of a specific day in no specific timezone.\ntype LocalDateTime struct {\n\tLocalDate\n\tLocalTime\n}\n\n// AsTime converts d into a specific time instance in zone.\nfunc (d LocalDateTime) AsTime(zone *time.Location) time.Time {\n\treturn time.Date(d.Year, time.Month(d.Month), d.Day, d.Hour, d.Minute, d.Second, d.Nanosecond, zone)\n}\n\n// String returns RFC 3339 representation of d.\nfunc (d LocalDateTime) String() string {\n\treturn d.LocalDate.String() + \"T\" + d.LocalTime.String()\n}\n\n// MarshalText returns RFC 3339 representation of d.\nfunc (d LocalDateTime) MarshalText() ([]byte, error) {\n\treturn []byte(d.String()), nil\n}\n\n// UnmarshalText parses b using RFC 3339 to fill d.\nfunc (d *LocalDateTime) UnmarshalText(data []byte) error {\n\tres, left, err := parseLocalDateTime(data)\n\tif err == nil && len(left) != 0 {\n\t\terr = unstable.NewParserError(left, \"extra characters\")\n\t}\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t*d = res\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/toml/marshaler.go",
    "content": "package toml\n\nimport (\n\t\"bytes\"\n\t\"encoding\"\n\t\"encoding/json\"\n\t\"fmt\"\n\t\"io\"\n\t\"math\"\n\t\"reflect\"\n\t\"sort\"\n\t\"strconv\"\n\t\"strings\"\n\t\"time\"\n\t\"unicode\"\n\n\t\"gossh/toml/internal/characters\"\n)\n\n// Marshal serializes a Go value as a TOML document.\n//\n// It is a shortcut for Encoder.Encode() with the default options.\nfunc Marshal(v any) ([]byte, error) {\n\tvar buf bytes.Buffer\n\tenc := NewEncoder(&buf)\n\n\terr := enc.Encode(v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn buf.Bytes(), nil\n}\n\n// Encoder writes a TOML document to an output stream.\ntype Encoder struct {\n\t// output\n\tw io.Writer\n\n\t// global settings\n\ttablesInline       bool\n\tarraysMultiline    bool\n\tindentSymbol       string\n\tindentTables       bool\n\tmarshalJsonNumbers bool\n}\n\n// NewEncoder returns a new Encoder that writes to w.\nfunc NewEncoder(w io.Writer) *Encoder {\n\treturn &Encoder{\n\t\tw:            w,\n\t\tindentSymbol: \"  \",\n\t}\n}\n\n// SetTablesInline forces the encoder to emit all tables inline.\n//\n// This behavior can be controlled on an individual struct field basis with the\n// inline tag:\n//\n//\tMyField `toml:\",inline\"`\nfunc (enc *Encoder) SetTablesInline(inline bool) *Encoder {\n\tenc.tablesInline = inline\n\treturn enc\n}\n\n// SetArraysMultiline forces the encoder to emit all arrays with one element per\n// line.\n//\n// This behavior can be controlled on an individual struct field basis with the multiline tag:\n//\n//\tMyField `multiline:\"true\"`\nfunc (enc *Encoder) SetArraysMultiline(multiline bool) *Encoder {\n\tenc.arraysMultiline = multiline\n\treturn enc\n}\n\n// SetIndentSymbol defines the string that should be used for indentation. The\n// provided string is repeated for each indentation level. Defaults to two\n// spaces.\nfunc (enc *Encoder) SetIndentSymbol(s string) *Encoder {\n\tenc.indentSymbol = s\n\treturn enc\n}\n\n// SetIndentTables forces the encoder to intent tables and array tables.\nfunc (enc *Encoder) SetIndentTables(indent bool) *Encoder {\n\tenc.indentTables = indent\n\treturn enc\n}\n\n// SetMarshalJsonNumbers forces the encoder to serialize `json.Number` as a\n// float or integer instead of relying on TextMarshaler to emit a string.\n//\n// *Unstable:* This method does not follow the compatibility guarantees of\n// semver. It can be changed or removed without a new major version being\n// issued.\nfunc (enc *Encoder) SetMarshalJsonNumbers(indent bool) *Encoder {\n\tenc.marshalJsonNumbers = indent\n\treturn enc\n}\n\n// Encode writes a TOML representation of v to the stream.\n//\n// If v cannot be represented to TOML it returns an error.\n//\n// # Encoding rules\n//\n// A top level slice containing only maps or structs is encoded as [[table\n// array]].\n//\n// All slices not matching rule 1 are encoded as [array]. As a result, any map\n// or struct they contain is encoded as an {inline table}.\n//\n// Nil interfaces and nil pointers are not supported.\n//\n// Keys in key-values always have one part.\n//\n// Intermediate tables are always printed.\n//\n// By default, strings are encoded as literal string, unless they contain either\n// a newline character or a single quote. In that case they are emitted as\n// quoted strings.\n//\n// Unsigned integers larger than math.MaxInt64 cannot be encoded. Doing so\n// results in an error. This rule exists because the TOML specification only\n// requires parsers to support at least the 64 bits integer range. Allowing\n// larger numbers would create non-standard TOML documents, which may not be\n// readable (at best) by other implementations. To encode such numbers, a\n// solution is a custom type that implements encoding.TextMarshaler.\n//\n// When encoding structs, fields are encoded in order of definition, with their\n// exact name.\n//\n// Tables and array tables are separated by empty lines. However, consecutive\n// subtables definitions are not. For example:\n//\n//\t[top1]\n//\n//\t[top2]\n//\t[top2.child1]\n//\n//\t[[array]]\n//\n//\t[[array]]\n//\t[array.child2]\n//\n// # Struct tags\n//\n// The encoding of each public struct field can be customized by the format\n// string in the \"toml\" key of the struct field's tag. This follows\n// encoding/json's convention. The format string starts with the name of the\n// field, optionally followed by a comma-separated list of options. The name may\n// be empty in order to provide options without overriding the default name.\n//\n// The \"multiline\" option emits strings as quoted multi-line TOML strings. It\n// has no effect on fields that would not be encoded as strings.\n//\n// The \"inline\" option turns fields that would be emitted as tables into inline\n// tables instead. It has no effect on other fields.\n//\n// The \"omitempty\" option prevents empty values or groups from being emitted.\n//\n// The \"commented\" option prefixes the value and all its children with a comment\n// symbol.\n//\n// In addition to the \"toml\" tag struct tag, a \"comment\" tag can be used to emit\n// a TOML comment before the value being annotated. Comments are ignored inside\n// inline tables. For array tables, the comment is only present before the first\n// element of the array.\nfunc (enc *Encoder) Encode(v any) error {\n\tvar (\n\t\tb   []byte\n\t\tctx encoderCtx\n\t)\n\n\tctx.inline = enc.tablesInline\n\n\tif v == nil {\n\t\treturn fmt.Errorf(\"toml: cannot encode a nil interface\")\n\t}\n\n\tb, err := enc.encode(b, ctx, reflect.ValueOf(v))\n\tif err != nil {\n\t\treturn err\n\t}\n\n\t_, err = enc.w.Write(b)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"toml: cannot write: %w\", err)\n\t}\n\n\treturn nil\n}\n\ntype valueOptions struct {\n\tmultiline bool\n\tomitempty bool\n\tcommented bool\n\tcomment   string\n}\n\ntype encoderCtx struct {\n\t// Current top-level key.\n\tparentKey []string\n\n\t// Key that should be used for a KV.\n\tkey string\n\t// Extra flag to account for the empty string\n\thasKey bool\n\n\t// Set to true to indicate that the encoder is inside a KV, so that all\n\t// tables need to be inlined.\n\tinsideKv bool\n\n\t// Set to true to skip the first table header in an array table.\n\tskipTableHeader bool\n\n\t// Should the next table be encoded as inline\n\tinline bool\n\n\t// Indentation level\n\tindent int\n\n\t// Prefix the current value with a comment.\n\tcommented bool\n\n\t// Options coming from struct tags\n\toptions valueOptions\n}\n\nfunc (ctx *encoderCtx) shiftKey() {\n\tif ctx.hasKey {\n\t\tctx.parentKey = append(ctx.parentKey, ctx.key)\n\t\tctx.clearKey()\n\t}\n}\n\nfunc (ctx *encoderCtx) setKey(k string) {\n\tctx.key = k\n\tctx.hasKey = true\n}\n\nfunc (ctx *encoderCtx) clearKey() {\n\tctx.key = \"\"\n\tctx.hasKey = false\n}\n\nfunc (ctx *encoderCtx) isRoot() bool {\n\treturn len(ctx.parentKey) == 0 && !ctx.hasKey\n}\n\nfunc (enc *Encoder) encode(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\ti := v.Interface()\n\n\tswitch x := i.(type) {\n\tcase time.Time:\n\t\tif x.Nanosecond() > 0 {\n\t\t\treturn x.AppendFormat(b, time.RFC3339Nano), nil\n\t\t}\n\t\treturn x.AppendFormat(b, time.RFC3339), nil\n\tcase LocalTime:\n\t\treturn append(b, x.String()...), nil\n\tcase LocalDate:\n\t\treturn append(b, x.String()...), nil\n\tcase LocalDateTime:\n\t\treturn append(b, x.String()...), nil\n\tcase json.Number:\n\t\tif enc.marshalJsonNumbers {\n\t\t\tif x == \"\" { /// Useful zero value.\n\t\t\t\treturn append(b, \"0\"...), nil\n\t\t\t} else if v, err := x.Int64(); err == nil {\n\t\t\t\treturn enc.encode(b, ctx, reflect.ValueOf(v))\n\t\t\t} else if f, err := x.Float64(); err == nil {\n\t\t\t\treturn enc.encode(b, ctx, reflect.ValueOf(f))\n\t\t\t} else {\n\t\t\t\treturn nil, fmt.Errorf(\"toml: unable to convert %q to int64 or float64\", x)\n\t\t\t}\n\t\t}\n\t}\n\n\thasTextMarshaler := v.Type().Implements(textMarshalerType)\n\tif hasTextMarshaler || (v.CanAddr() && reflect.PtrTo(v.Type()).Implements(textMarshalerType)) {\n\t\tif !hasTextMarshaler {\n\t\t\tv = v.Addr()\n\t\t}\n\n\t\tif ctx.isRoot() {\n\t\t\treturn nil, fmt.Errorf(\"toml: type %s implementing the TextMarshaler interface cannot be a root element\", v.Type())\n\t\t}\n\n\t\ttext, err := v.Interface().(encoding.TextMarshaler).MarshalText()\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tb = enc.encodeString(b, string(text), ctx.options)\n\n\t\treturn b, nil\n\t}\n\n\tswitch v.Kind() {\n\t// containers\n\tcase reflect.Map:\n\t\treturn enc.encodeMap(b, ctx, v)\n\tcase reflect.Struct:\n\t\treturn enc.encodeStruct(b, ctx, v)\n\tcase reflect.Slice, reflect.Array:\n\t\treturn enc.encodeSlice(b, ctx, v)\n\tcase reflect.Interface:\n\t\tif v.IsNil() {\n\t\t\treturn nil, fmt.Errorf(\"toml: encoding a nil interface is not supported\")\n\t\t}\n\n\t\treturn enc.encode(b, ctx, v.Elem())\n\tcase reflect.Ptr:\n\t\tif v.IsNil() {\n\t\t\treturn enc.encode(b, ctx, reflect.Zero(v.Type().Elem()))\n\t\t}\n\n\t\treturn enc.encode(b, ctx, v.Elem())\n\n\t// values\n\tcase reflect.String:\n\t\tb = enc.encodeString(b, v.String(), ctx.options)\n\tcase reflect.Float32:\n\t\tf := v.Float()\n\n\t\tif math.IsNaN(f) {\n\t\t\tb = append(b, \"nan\"...)\n\t\t} else if f > math.MaxFloat32 {\n\t\t\tb = append(b, \"inf\"...)\n\t\t} else if f < -math.MaxFloat32 {\n\t\t\tb = append(b, \"-inf\"...)\n\t\t} else if math.Trunc(f) == f {\n\t\t\tb = strconv.AppendFloat(b, f, 'f', 1, 32)\n\t\t} else {\n\t\t\tb = strconv.AppendFloat(b, f, 'f', -1, 32)\n\t\t}\n\tcase reflect.Float64:\n\t\tf := v.Float()\n\t\tif math.IsNaN(f) {\n\t\t\tb = append(b, \"nan\"...)\n\t\t} else if f > math.MaxFloat64 {\n\t\t\tb = append(b, \"inf\"...)\n\t\t} else if f < -math.MaxFloat64 {\n\t\t\tb = append(b, \"-inf\"...)\n\t\t} else if math.Trunc(f) == f {\n\t\t\tb = strconv.AppendFloat(b, f, 'f', 1, 64)\n\t\t} else {\n\t\t\tb = strconv.AppendFloat(b, f, 'f', -1, 64)\n\t\t}\n\tcase reflect.Bool:\n\t\tif v.Bool() {\n\t\t\tb = append(b, \"true\"...)\n\t\t} else {\n\t\t\tb = append(b, \"false\"...)\n\t\t}\n\tcase reflect.Uint64, reflect.Uint32, reflect.Uint16, reflect.Uint8, reflect.Uint:\n\t\tx := v.Uint()\n\t\tif x > uint64(math.MaxInt64) {\n\t\t\treturn nil, fmt.Errorf(\"toml: not encoding uint (%d) greater than max int64 (%d)\", x, int64(math.MaxInt64))\n\t\t}\n\t\tb = strconv.AppendUint(b, x, 10)\n\tcase reflect.Int64, reflect.Int32, reflect.Int16, reflect.Int8, reflect.Int:\n\t\tb = strconv.AppendInt(b, v.Int(), 10)\n\tdefault:\n\t\treturn nil, fmt.Errorf(\"toml: cannot encode value of type %s\", v.Kind())\n\t}\n\n\treturn b, nil\n}\n\nfunc isNil(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Ptr, reflect.Interface, reflect.Map:\n\t\treturn v.IsNil()\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc shouldOmitEmpty(options valueOptions, v reflect.Value) bool {\n\treturn options.omitempty && isEmptyValue(v)\n}\n\nfunc (enc *Encoder) encodeKv(b []byte, ctx encoderCtx, options valueOptions, v reflect.Value) ([]byte, error) {\n\tvar err error\n\n\tif !ctx.inline {\n\t\tb = enc.encodeComment(ctx.indent, options.comment, b)\n\t\tb = enc.commented(ctx.commented, b)\n\t\tb = enc.indent(ctx.indent, b)\n\t}\n\n\tb = enc.encodeKey(b, ctx.key)\n\tb = append(b, \" = \"...)\n\n\t// create a copy of the context because the value of a KV shouldn't\n\t// modify the global context.\n\tsubctx := ctx\n\tsubctx.insideKv = true\n\tsubctx.shiftKey()\n\tsubctx.options = options\n\n\tb, err = enc.encode(b, subctx, v)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\treturn b, nil\n}\n\nfunc (enc *Encoder) commented(commented bool, b []byte) []byte {\n\tif commented {\n\t\treturn append(b, \"# \"...)\n\t}\n\treturn b\n}\n\nfunc isEmptyValue(v reflect.Value) bool {\n\tswitch v.Kind() {\n\tcase reflect.Struct:\n\t\treturn isEmptyStruct(v)\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 isEmptyStruct(v reflect.Value) bool {\n\t// TODO: merge with walkStruct and cache.\n\ttyp := v.Type()\n\tfor i := 0; i < typ.NumField(); i++ {\n\t\tfieldType := typ.Field(i)\n\n\t\t// only consider exported fields\n\t\tif fieldType.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\ttag := fieldType.Tag.Get(\"toml\")\n\n\t\t// special field name to skip field\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tf := v.Field(i)\n\n\t\tif !isEmptyValue(f) {\n\t\t\treturn false\n\t\t}\n\t}\n\n\treturn true\n}\n\nconst literalQuote = '\\''\n\nfunc (enc *Encoder) encodeString(b []byte, v string, options valueOptions) []byte {\n\tif needsQuoting(v) {\n\t\treturn enc.encodeQuotedString(options.multiline, b, v)\n\t}\n\n\treturn enc.encodeLiteralString(b, v)\n}\n\nfunc needsQuoting(v string) bool {\n\t// TODO: vectorize\n\tfor _, b := range []byte(v) {\n\t\tif b == '\\'' || b == '\\r' || b == '\\n' || characters.InvalidAscii(b) {\n\t\t\treturn true\n\t\t}\n\t}\n\treturn false\n}\n\n// caller should have checked that the string does not contain new lines or ' .\nfunc (enc *Encoder) encodeLiteralString(b []byte, v string) []byte {\n\tb = append(b, literalQuote)\n\tb = append(b, v...)\n\tb = append(b, literalQuote)\n\n\treturn b\n}\n\nfunc (enc *Encoder) encodeQuotedString(multiline bool, b []byte, v string) []byte {\n\tstringQuote := `\"`\n\n\tif multiline {\n\t\tstringQuote = `\"\"\"`\n\t}\n\n\tb = append(b, stringQuote...)\n\tif multiline {\n\t\tb = append(b, '\\n')\n\t}\n\n\tconst (\n\t\thextable = \"0123456789ABCDEF\"\n\t\t// U+0000 to U+0008, U+000A to U+001F, U+007F\n\t\tnul = 0x0\n\t\tbs  = 0x8\n\t\tlf  = 0xa\n\t\tus  = 0x1f\n\t\tdel = 0x7f\n\t)\n\n\tfor _, r := range []byte(v) {\n\t\tswitch r {\n\t\tcase '\\\\':\n\t\t\tb = append(b, `\\\\`...)\n\t\tcase '\"':\n\t\t\tb = append(b, `\\\"`...)\n\t\tcase '\\b':\n\t\t\tb = append(b, `\\b`...)\n\t\tcase '\\f':\n\t\t\tb = append(b, `\\f`...)\n\t\tcase '\\n':\n\t\t\tif multiline {\n\t\t\t\tb = append(b, r)\n\t\t\t} else {\n\t\t\t\tb = append(b, `\\n`...)\n\t\t\t}\n\t\tcase '\\r':\n\t\t\tb = append(b, `\\r`...)\n\t\tcase '\\t':\n\t\t\tb = append(b, `\\t`...)\n\t\tdefault:\n\t\t\tswitch {\n\t\t\tcase r >= nul && r <= bs, r >= lf && r <= us, r == del:\n\t\t\t\tb = append(b, `\\u00`...)\n\t\t\t\tb = append(b, hextable[r>>4])\n\t\t\t\tb = append(b, hextable[r&0x0f])\n\t\t\tdefault:\n\t\t\t\tb = append(b, r)\n\t\t\t}\n\t\t}\n\t}\n\n\tb = append(b, stringQuote...)\n\n\treturn b\n}\n\n// caller should have checked that the string is in A-Z / a-z / 0-9 / - / _ .\nfunc (enc *Encoder) encodeUnquotedKey(b []byte, v string) []byte {\n\treturn append(b, v...)\n}\n\nfunc (enc *Encoder) encodeTableHeader(ctx encoderCtx, b []byte) ([]byte, error) {\n\tif len(ctx.parentKey) == 0 {\n\t\treturn b, nil\n\t}\n\n\tb = enc.encodeComment(ctx.indent, ctx.options.comment, b)\n\n\tb = enc.commented(ctx.commented, b)\n\n\tb = enc.indent(ctx.indent, b)\n\n\tb = append(b, '[')\n\n\tb = enc.encodeKey(b, ctx.parentKey[0])\n\n\tfor _, k := range ctx.parentKey[1:] {\n\t\tb = append(b, '.')\n\t\tb = enc.encodeKey(b, k)\n\t}\n\n\tb = append(b, \"]\\n\"...)\n\n\treturn b, nil\n}\n\n//nolint:cyclop\nfunc (enc *Encoder) encodeKey(b []byte, k string) []byte {\n\tneedsQuotation := false\n\tcannotUseLiteral := false\n\n\tif len(k) == 0 {\n\t\treturn append(b, \"''\"...)\n\t}\n\n\tfor _, c := range k {\n\t\tif (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '-' || c == '_' {\n\t\t\tcontinue\n\t\t}\n\n\t\tif c == literalQuote {\n\t\t\tcannotUseLiteral = true\n\t\t}\n\n\t\tneedsQuotation = true\n\t}\n\n\tif needsQuotation && needsQuoting(k) {\n\t\tcannotUseLiteral = true\n\t}\n\n\tswitch {\n\tcase cannotUseLiteral:\n\t\treturn enc.encodeQuotedString(false, b, k)\n\tcase needsQuotation:\n\t\treturn enc.encodeLiteralString(b, k)\n\tdefault:\n\t\treturn enc.encodeUnquotedKey(b, k)\n\t}\n}\n\nfunc (enc *Encoder) keyToString(k reflect.Value) (string, error) {\n\tkeyType := k.Type()\n\tswitch {\n\tcase keyType.Kind() == reflect.String:\n\t\treturn k.String(), nil\n\n\tcase keyType.Implements(textMarshalerType):\n\t\tkeyB, err := k.Interface().(encoding.TextMarshaler).MarshalText()\n\t\tif err != nil {\n\t\t\treturn \"\", fmt.Errorf(\"toml: error marshalling key %v from text: %w\", k, err)\n\t\t}\n\t\treturn string(keyB), nil\n\t}\n\treturn \"\", fmt.Errorf(\"toml: type %s is not supported as a map key\", keyType.Kind())\n}\n\nfunc (enc *Encoder) encodeMap(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\tvar (\n\t\tt                 table\n\t\temptyValueOptions valueOptions\n\t)\n\n\titer := v.MapRange()\n\tfor iter.Next() {\n\t\tv := iter.Value()\n\n\t\tif isNil(v) {\n\t\t\tcontinue\n\t\t}\n\n\t\tk, err := enc.keyToString(iter.Key())\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif willConvertToTableOrArrayTable(ctx, v) {\n\t\t\tt.pushTable(k, v, emptyValueOptions)\n\t\t} else {\n\t\t\tt.pushKV(k, v, emptyValueOptions)\n\t\t}\n\t}\n\n\tsortEntriesByKey(t.kvs)\n\tsortEntriesByKey(t.tables)\n\n\treturn enc.encodeTable(b, ctx, t)\n}\n\nfunc sortEntriesByKey(e []entry) {\n\tsort.Slice(e, func(i, j int) bool {\n\t\treturn e[i].Key < e[j].Key\n\t})\n}\n\ntype entry struct {\n\tKey     string\n\tValue   reflect.Value\n\tOptions valueOptions\n}\n\ntype table struct {\n\tkvs    []entry\n\ttables []entry\n}\n\nfunc (t *table) pushKV(k string, v reflect.Value, options valueOptions) {\n\tfor _, e := range t.kvs {\n\t\tif e.Key == k {\n\t\t\treturn\n\t\t}\n\t}\n\n\tt.kvs = append(t.kvs, entry{Key: k, Value: v, Options: options})\n}\n\nfunc (t *table) pushTable(k string, v reflect.Value, options valueOptions) {\n\tfor _, e := range t.tables {\n\t\tif e.Key == k {\n\t\t\treturn\n\t\t}\n\t}\n\tt.tables = append(t.tables, entry{Key: k, Value: v, Options: options})\n}\n\nfunc walkStruct(ctx encoderCtx, t *table, v reflect.Value) {\n\t// TODO: cache this\n\ttyp := v.Type()\n\tfor i := 0; i < typ.NumField(); i++ {\n\t\tfieldType := typ.Field(i)\n\n\t\t// only consider exported fields\n\t\tif fieldType.PkgPath != \"\" {\n\t\t\tcontinue\n\t\t}\n\n\t\ttag := fieldType.Tag.Get(\"toml\")\n\n\t\t// special field name to skip field\n\t\tif tag == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tk, opts := parseTag(tag)\n\t\tif !isValidName(k) {\n\t\t\tk = \"\"\n\t\t}\n\n\t\tf := v.Field(i)\n\n\t\tif k == \"\" {\n\t\t\tif fieldType.Anonymous {\n\t\t\t\tif fieldType.Type.Kind() == reflect.Struct {\n\t\t\t\t\twalkStruct(ctx, t, f)\n\t\t\t\t} else if fieldType.Type.Kind() == reflect.Pointer && !f.IsNil() && f.Elem().Kind() == reflect.Struct {\n\t\t\t\t\twalkStruct(ctx, t, f.Elem())\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t} else {\n\t\t\t\tk = fieldType.Name\n\t\t\t}\n\t\t}\n\n\t\tif isNil(f) {\n\t\t\tcontinue\n\t\t}\n\n\t\toptions := valueOptions{\n\t\t\tmultiline: opts.multiline,\n\t\t\tomitempty: opts.omitempty,\n\t\t\tcommented: opts.commented,\n\t\t\tcomment:   fieldType.Tag.Get(\"comment\"),\n\t\t}\n\n\t\tif opts.inline || !willConvertToTableOrArrayTable(ctx, f) {\n\t\t\tt.pushKV(k, f, options)\n\t\t} else {\n\t\t\tt.pushTable(k, f, options)\n\t\t}\n\t}\n}\n\nfunc (enc *Encoder) encodeStruct(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\tvar t table\n\n\twalkStruct(ctx, &t, v)\n\n\treturn enc.encodeTable(b, ctx, t)\n}\n\nfunc (enc *Encoder) encodeComment(indent int, comment string, b []byte) []byte {\n\tfor len(comment) > 0 {\n\t\tvar line string\n\t\tidx := strings.IndexByte(comment, '\\n')\n\t\tif idx >= 0 {\n\t\t\tline = comment[:idx]\n\t\t\tcomment = comment[idx+1:]\n\t\t} else {\n\t\t\tline = comment\n\t\t\tcomment = \"\"\n\t\t}\n\t\tb = enc.indent(indent, b)\n\t\tb = append(b, \"# \"...)\n\t\tb = append(b, line...)\n\t\tb = append(b, '\\n')\n\t}\n\treturn b\n}\n\nfunc isValidName(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\tcase !unicode.IsLetter(c) && !unicode.IsDigit(c):\n\t\t\treturn false\n\t\t}\n\t}\n\treturn true\n}\n\ntype tagOptions struct {\n\tmultiline bool\n\tinline    bool\n\tomitempty bool\n\tcommented bool\n}\n\nfunc parseTag(tag string) (string, tagOptions) {\n\topts := tagOptions{}\n\n\tidx := strings.Index(tag, \",\")\n\tif idx == -1 {\n\t\treturn tag, opts\n\t}\n\n\traw := tag[idx+1:]\n\ttag = string(tag[:idx])\n\tfor raw != \"\" {\n\t\tvar o string\n\t\ti := strings.Index(raw, \",\")\n\t\tif i >= 0 {\n\t\t\to, raw = raw[:i], raw[i+1:]\n\t\t} else {\n\t\t\to, raw = raw, \"\"\n\t\t}\n\t\tswitch o {\n\t\tcase \"multiline\":\n\t\t\topts.multiline = true\n\t\tcase \"inline\":\n\t\t\topts.inline = true\n\t\tcase \"omitempty\":\n\t\t\topts.omitempty = true\n\t\tcase \"commented\":\n\t\t\topts.commented = true\n\t\t}\n\t}\n\n\treturn tag, opts\n}\n\nfunc (enc *Encoder) encodeTable(b []byte, ctx encoderCtx, t table) ([]byte, error) {\n\tvar err error\n\n\tctx.shiftKey()\n\n\tif ctx.insideKv || (ctx.inline && !ctx.isRoot()) {\n\t\treturn enc.encodeTableInline(b, ctx, t)\n\t}\n\n\tif !ctx.skipTableHeader {\n\t\tb, err = enc.encodeTableHeader(ctx, b)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tif enc.indentTables && len(ctx.parentKey) > 0 {\n\t\t\tctx.indent++\n\t\t}\n\t}\n\tctx.skipTableHeader = false\n\n\thasNonEmptyKV := false\n\tfor _, kv := range t.kvs {\n\t\tif shouldOmitEmpty(kv.Options, kv.Value) {\n\t\t\tcontinue\n\t\t}\n\t\thasNonEmptyKV = true\n\n\t\tctx.setKey(kv.Key)\n\t\tctx2 := ctx\n\t\tctx2.commented = kv.Options.commented || ctx2.commented\n\n\t\tb, err = enc.encodeKv(b, ctx2, kv.Options, kv.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\n\t\tb = append(b, '\\n')\n\t}\n\n\tfirst := true\n\tfor _, table := range t.tables {\n\t\tif shouldOmitEmpty(table.Options, table.Value) {\n\t\t\tcontinue\n\t\t}\n\t\tif first {\n\t\t\tfirst = false\n\t\t\tif hasNonEmptyKV {\n\t\t\t\tb = append(b, '\\n')\n\t\t\t}\n\t\t} else {\n\t\t\tb = append(b, \"\\n\"...)\n\t\t}\n\n\t\tctx.setKey(table.Key)\n\n\t\tctx.options = table.Options\n\t\tctx2 := ctx\n\t\tctx2.commented = ctx2.commented || ctx.options.commented\n\n\t\tb, err = enc.encode(b, ctx2, table.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn b, nil\n}\n\nfunc (enc *Encoder) encodeTableInline(b []byte, ctx encoderCtx, t table) ([]byte, error) {\n\tvar err error\n\n\tb = append(b, '{')\n\n\tfirst := true\n\tfor _, kv := range t.kvs {\n\t\tif shouldOmitEmpty(kv.Options, kv.Value) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tb = append(b, `, `...)\n\t\t}\n\n\t\tctx.setKey(kv.Key)\n\n\t\tb, err = enc.encodeKv(b, ctx, kv.Options, kv.Value)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif len(t.tables) > 0 {\n\t\tpanic(\"inline table cannot contain nested tables, only key-values\")\n\t}\n\n\tb = append(b, \"}\"...)\n\n\treturn b, nil\n}\n\nfunc willConvertToTable(ctx encoderCtx, v reflect.Value) bool {\n\tif !v.IsValid() {\n\t\treturn false\n\t}\n\tif v.Type() == timeType || v.Type().Implements(textMarshalerType) || (v.Kind() != reflect.Ptr && v.CanAddr() && reflect.PtrTo(v.Type()).Implements(textMarshalerType)) {\n\t\treturn false\n\t}\n\n\tt := v.Type()\n\tswitch t.Kind() {\n\tcase reflect.Map, reflect.Struct:\n\t\treturn !ctx.inline\n\tcase reflect.Interface:\n\t\treturn willConvertToTable(ctx, v.Elem())\n\tcase reflect.Ptr:\n\t\tif v.IsNil() {\n\t\t\treturn false\n\t\t}\n\n\t\treturn willConvertToTable(ctx, v.Elem())\n\tdefault:\n\t\treturn false\n\t}\n}\n\nfunc willConvertToTableOrArrayTable(ctx encoderCtx, v reflect.Value) bool {\n\tif ctx.insideKv {\n\t\treturn false\n\t}\n\tt := v.Type()\n\n\tif t.Kind() == reflect.Interface {\n\t\treturn willConvertToTableOrArrayTable(ctx, v.Elem())\n\t}\n\n\tif t.Kind() == reflect.Slice || t.Kind() == reflect.Array {\n\t\tif v.Len() == 0 {\n\t\t\t// An empty slice should be a kv = [].\n\t\t\treturn false\n\t\t}\n\n\t\tfor i := 0; i < v.Len(); i++ {\n\t\t\tt := willConvertToTable(ctx, v.Index(i))\n\n\t\t\tif !t {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\n\t\treturn true\n\t}\n\n\treturn willConvertToTable(ctx, v)\n}\n\nfunc (enc *Encoder) encodeSlice(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\tif v.Len() == 0 {\n\t\tb = append(b, \"[]\"...)\n\n\t\treturn b, nil\n\t}\n\n\tif willConvertToTableOrArrayTable(ctx, v) {\n\t\treturn enc.encodeSliceAsArrayTable(b, ctx, v)\n\t}\n\n\treturn enc.encodeSliceAsArray(b, ctx, v)\n}\n\n// caller should have checked that v is a slice that only contains values that\n// encode into tables.\nfunc (enc *Encoder) encodeSliceAsArrayTable(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\tctx.shiftKey()\n\n\tscratch := make([]byte, 0, 64)\n\n\tscratch = enc.commented(ctx.commented, scratch)\n\n\tscratch = append(scratch, \"[[\"...)\n\n\tfor i, k := range ctx.parentKey {\n\t\tif i > 0 {\n\t\t\tscratch = append(scratch, '.')\n\t\t}\n\n\t\tscratch = enc.encodeKey(scratch, k)\n\t}\n\n\tscratch = append(scratch, \"]]\\n\"...)\n\tctx.skipTableHeader = true\n\n\tb = enc.encodeComment(ctx.indent, ctx.options.comment, b)\n\n\tif enc.indentTables {\n\t\tctx.indent++\n\t}\n\n\tfor i := 0; i < v.Len(); i++ {\n\t\tif i != 0 {\n\t\t\tb = append(b, \"\\n\"...)\n\t\t}\n\n\t\tb = append(b, scratch...)\n\n\t\tvar err error\n\t\tb, err = enc.encode(b, ctx, v.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\treturn b, nil\n}\n\nfunc (enc *Encoder) encodeSliceAsArray(b []byte, ctx encoderCtx, v reflect.Value) ([]byte, error) {\n\tmultiline := ctx.options.multiline || enc.arraysMultiline\n\tseparator := \", \"\n\n\tb = append(b, '[')\n\n\tsubCtx := ctx\n\tsubCtx.options = valueOptions{}\n\n\tif multiline {\n\t\tseparator = \",\\n\"\n\n\t\tb = append(b, '\\n')\n\n\t\tsubCtx.indent++\n\t}\n\n\tvar err error\n\tfirst := true\n\n\tfor i := 0; i < v.Len(); i++ {\n\t\tif first {\n\t\t\tfirst = false\n\t\t} else {\n\t\t\tb = append(b, separator...)\n\t\t}\n\n\t\tif multiline {\n\t\t\tb = enc.indent(subCtx.indent, b)\n\t\t}\n\n\t\tb, err = enc.encode(b, subCtx, v.Index(i))\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif multiline {\n\t\tb = append(b, '\\n')\n\t\tb = enc.indent(ctx.indent, b)\n\t}\n\n\tb = append(b, ']')\n\n\treturn b, nil\n}\n\nfunc (enc *Encoder) indent(level int, b []byte) []byte {\n\tfor i := 0; i < level; i++ {\n\t\tb = append(b, enc.indentSymbol...)\n\t}\n\n\treturn b\n}\n"
  },
  {
    "path": "gossh/toml/strict.go",
    "content": "package toml\n\nimport (\n\t\"gossh/toml/internal/danger\"\n\t\"gossh/toml/internal/tracker\"\n\t\"gossh/toml/unstable\"\n)\n\ntype strict struct {\n\tEnabled bool\n\n\t// Tracks the current key being processed.\n\tkey tracker.KeyTracker\n\n\tmissing []unstable.ParserError\n}\n\nfunc (s *strict) EnterTable(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.key.UpdateTable(node)\n}\n\nfunc (s *strict) EnterArrayTable(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.key.UpdateArrayTable(node)\n}\n\nfunc (s *strict) EnterKeyValue(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.key.Push(node)\n}\n\nfunc (s *strict) ExitKeyValue(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.key.Pop(node)\n}\n\nfunc (s *strict) MissingTable(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.missing = append(s.missing, unstable.ParserError{\n\t\tHighlight: keyLocation(node),\n\t\tMessage:   \"missing table\",\n\t\tKey:       s.key.Key(),\n\t})\n}\n\nfunc (s *strict) MissingField(node *unstable.Node) {\n\tif !s.Enabled {\n\t\treturn\n\t}\n\n\ts.missing = append(s.missing, unstable.ParserError{\n\t\tHighlight: keyLocation(node),\n\t\tMessage:   \"missing field\",\n\t\tKey:       s.key.Key(),\n\t})\n}\n\nfunc (s *strict) Error(doc []byte) error {\n\tif !s.Enabled || len(s.missing) == 0 {\n\t\treturn nil\n\t}\n\n\terr := &StrictMissingError{\n\t\tErrors: make([]DecodeError, 0, len(s.missing)),\n\t}\n\n\tfor _, derr := range s.missing {\n\t\tderr := derr\n\t\terr.Errors = append(err.Errors, *wrapDecodeError(doc, &derr))\n\t}\n\n\treturn err\n}\n\nfunc keyLocation(node *unstable.Node) []byte {\n\tk := node.Key()\n\n\thasOne := k.Next()\n\tif !hasOne {\n\t\tpanic(\"should not be called with empty key\")\n\t}\n\n\tstart := k.Node().Data\n\tend := k.Node().Data\n\n\tfor k.Next() {\n\t\tend = k.Node().Data\n\t}\n\n\treturn danger.BytesRange(start, end)\n}\n"
  },
  {
    "path": "gossh/toml/types.go",
    "content": "package toml\n\nimport (\n\t\"encoding\"\n\t\"reflect\"\n\t\"time\"\n)\n\nvar timeType = reflect.TypeOf((*time.Time)(nil)).Elem()\nvar textMarshalerType = reflect.TypeOf((*encoding.TextMarshaler)(nil)).Elem()\nvar textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()\nvar mapStringInterfaceType = reflect.TypeOf(map[string]any(nil))\nvar sliceInterfaceType = reflect.TypeOf([]any(nil))\nvar stringType = reflect.TypeOf(\"\")\n"
  },
  {
    "path": "gossh/toml/unmarshaler.go",
    "content": "package toml\n\nimport (\n\t\"encoding\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"io/ioutil\"\n\t\"math\"\n\t\"reflect\"\n\t\"strings\"\n\t\"sync/atomic\"\n\t\"time\"\n\n\t\"gossh/toml/internal/danger\"\n\t\"gossh/toml/internal/tracker\"\n\t\"gossh/toml/unstable\"\n)\n\n// Unmarshal deserializes a TOML document into a Go value.\n//\n// It is a shortcut for Decoder.Decode() with the default options.\nfunc Unmarshal(data []byte, v any) error {\n\tp := unstable.Parser{}\n\tp.Reset(data)\n\td := decoder{p: &p}\n\n\treturn d.FromParser(v)\n}\n\n// Decoder reads and decode a TOML document from an input stream.\ntype Decoder struct {\n\t// input\n\tr io.Reader\n\n\t// global settings\n\tstrict bool\n\n\t// toggles unmarshaler interface\n\tunmarshalerInterface bool\n}\n\n// NewDecoder creates a new Decoder that will read from r.\nfunc NewDecoder(r io.Reader) *Decoder {\n\treturn &Decoder{r: r}\n}\n\n// DisallowUnknownFields causes the Decoder to return an error when the\n// destination is a struct and the input contains a key that does not match a\n// non-ignored field.\n//\n// In that case, the Decoder returns a StrictMissingError that can be used to\n// retrieve the individual errors as well as generate a human readable\n// description of the missing fields.\nfunc (d *Decoder) DisallowUnknownFields() *Decoder {\n\td.strict = true\n\treturn d\n}\n\n// EnableUnmarshalerInterface allows to enable unmarshaler interface.\n//\n// With this feature enabled, types implementing the unstable/Unmarshaler\n// interface can be decoded from any structure of the document. It allows types\n// that don't have a straightfoward TOML representation to provide their own\n// decoding logic.\n//\n// Currently, types can only decode from a single value. Tables and array tables\n// are not supported.\n//\n// *Unstable:* This method does not follow the compatibility guarantees of\n// semver. It can be changed or removed without a new major version being\n// issued.\nfunc (d *Decoder) EnableUnmarshalerInterface() *Decoder {\n\td.unmarshalerInterface = true\n\treturn d\n}\n\n// Decode the whole content of r into v.\n//\n// By default, values in the document that don't exist in the target Go value\n// are ignored. See Decoder.DisallowUnknownFields() to change this behavior.\n//\n// When a TOML local date, time, or date-time is decoded into a time.Time, its\n// value is represented in time.Local timezone. Otherwise the appropriate Local*\n// structure is used. For time values, precision up to the nanosecond is\n// supported by truncating extra digits.\n//\n// Empty tables decoded in an interface{} create an empty initialized\n// map[string]interface{}.\n//\n// Types implementing the encoding.TextUnmarshaler interface are decoded from a\n// TOML string.\n//\n// When decoding a number, go-toml will return an error if the number is out of\n// bounds for the target type (which includes negative numbers when decoding\n// into an unsigned int).\n//\n// If an error occurs while decoding the content of the document, this function\n// returns a toml.DecodeError, providing context about the issue. When using\n// strict mode and a field is missing, a `toml.StrictMissingError` is\n// returned. In any other case, this function returns a standard Go error.\n//\n// # Type mapping\n//\n// List of supported TOML types and their associated accepted Go types:\n//\n//\tString           -> string\n//\tInteger          -> uint*, int*, depending on size\n//\tFloat            -> float*, depending on size\n//\tBoolean          -> bool\n//\tOffset Date-Time -> time.Time\n//\tLocal Date-time  -> LocalDateTime, time.Time\n//\tLocal Date       -> LocalDate, time.Time\n//\tLocal Time       -> LocalTime, time.Time\n//\tArray            -> slice and array, depending on elements types\n//\tTable            -> map and struct\n//\tInline Table     -> same as Table\n//\tArray of Tables  -> same as Array and Table\nfunc (d *Decoder) Decode(v any) error {\n\tb, err := ioutil.ReadAll(d.r)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"toml: %w\", err)\n\t}\n\n\tp := unstable.Parser{}\n\tp.Reset(b)\n\tdec := decoder{\n\t\tp: &p,\n\t\tstrict: strict{\n\t\t\tEnabled: d.strict,\n\t\t},\n\t\tunmarshalerInterface: d.unmarshalerInterface,\n\t}\n\n\treturn dec.FromParser(v)\n}\n\ntype decoder struct {\n\t// Which parser instance in use for this decoding session.\n\tp *unstable.Parser\n\n\t// Flag indicating that the current expression is stashed.\n\t// If set to true, calling nextExpr will not actually pull a new expression\n\t// but turn off the flag instead.\n\tstashedExpr bool\n\n\t// Skip expressions until a table is found. This is set to true when a\n\t// table could not be created (missing field in map), so all KV expressions\n\t// need to be skipped.\n\tskipUntilTable bool\n\n\t// Flag indicating that the current array/slice table should be cleared because\n\t// it is the first encounter of an array table.\n\tclearArrayTable bool\n\n\t// Tracks position in Go arrays.\n\t// This is used when decoding [[array tables]] into Go arrays. Given array\n\t// tables are separate TOML expression, we need to keep track of where we\n\t// are at in the Go array, as we can't just introspect its size.\n\tarrayIndexes map[reflect.Value]int\n\n\t// Tracks keys that have been seen, with which type.\n\tseen tracker.SeenTracker\n\n\t// Strict mode\n\tstrict strict\n\n\t// Flag that enables/disables unmarshaler interface.\n\tunmarshalerInterface bool\n\n\t// Current context for the error.\n\terrorContext *errorContext\n}\n\ntype errorContext struct {\n\tStruct reflect.Type\n\tField  []int\n}\n\nfunc (d *decoder) typeMismatchError(toml string, target reflect.Type) error {\n\treturn fmt.Errorf(\"toml: %s\", d.typeMismatchString(toml, target))\n}\n\nfunc (d *decoder) typeMismatchString(toml string, target reflect.Type) string {\n\tif d.errorContext != nil && d.errorContext.Struct != nil {\n\t\tctx := d.errorContext\n\t\tf := ctx.Struct.FieldByIndex(ctx.Field)\n\t\treturn fmt.Sprintf(\"cannot decode TOML %s into struct field %s.%s of type %s\", toml, ctx.Struct, f.Name, f.Type)\n\t}\n\treturn fmt.Sprintf(\"cannot decode TOML %s into a Go value of type %s\", toml, target)\n}\n\nfunc (d *decoder) expr() *unstable.Node {\n\treturn d.p.Expression()\n}\n\nfunc (d *decoder) nextExpr() bool {\n\tif d.stashedExpr {\n\t\td.stashedExpr = false\n\t\treturn true\n\t}\n\treturn d.p.NextExpression()\n}\n\nfunc (d *decoder) stashExpr() {\n\td.stashedExpr = true\n}\n\nfunc (d *decoder) arrayIndex(shouldAppend bool, v reflect.Value) int {\n\tif d.arrayIndexes == nil {\n\t\td.arrayIndexes = make(map[reflect.Value]int, 1)\n\t}\n\n\tidx, ok := d.arrayIndexes[v]\n\n\tif !ok {\n\t\td.arrayIndexes[v] = 0\n\t} else if shouldAppend {\n\t\tidx++\n\t\td.arrayIndexes[v] = idx\n\t}\n\n\treturn idx\n}\n\nfunc (d *decoder) FromParser(v any) error {\n\tr := reflect.ValueOf(v)\n\tif r.Kind() != reflect.Ptr {\n\t\treturn fmt.Errorf(\"toml: decoding can only be performed into a pointer, not %s\", r.Kind())\n\t}\n\n\tif r.IsNil() {\n\t\treturn fmt.Errorf(\"toml: decoding pointer target cannot be nil\")\n\t}\n\n\tr = r.Elem()\n\tif r.Kind() == reflect.Interface && r.IsNil() {\n\t\tnewMap := map[string]any{}\n\t\tr.Set(reflect.ValueOf(newMap))\n\t}\n\n\terr := d.fromParser(r)\n\tif err == nil {\n\t\treturn d.strict.Error(d.p.Data())\n\t}\n\n\tvar e *unstable.ParserError\n\tif errors.As(err, &e) {\n\t\treturn wrapDecodeError(d.p.Data(), e)\n\t}\n\n\treturn err\n}\n\nfunc (d *decoder) fromParser(root reflect.Value) error {\n\tfor d.nextExpr() {\n\t\terr := d.handleRootExpression(d.expr(), root)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn d.p.Error()\n}\n\n/*\nRules for the unmarshal code:\n\n- The stack is used to keep track of which values need to be set where.\n- handle* functions <=> switch on a given unstable.Kind.\n- unmarshalX* functions need to unmarshal a node of kind X.\n- An \"object\" is either a struct or a map.\n*/\n\nfunc (d *decoder) handleRootExpression(expr *unstable.Node, v reflect.Value) error {\n\tvar x reflect.Value\n\tvar err error\n\tvar first bool // used for to clear array tables on first use\n\n\tif !(d.skipUntilTable && expr.Kind == unstable.KeyValue) {\n\t\tfirst, err = d.seen.CheckExpression(expr)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\tswitch expr.Kind {\n\tcase unstable.KeyValue:\n\t\tif d.skipUntilTable {\n\t\t\treturn nil\n\t\t}\n\t\tx, err = d.handleKeyValue(expr, v)\n\tcase unstable.Table:\n\t\td.skipUntilTable = false\n\t\td.strict.EnterTable(expr)\n\t\tx, err = d.handleTable(expr.Key(), v)\n\tcase unstable.ArrayTable:\n\t\td.skipUntilTable = false\n\t\td.strict.EnterArrayTable(expr)\n\t\td.clearArrayTable = first\n\t\tx, err = d.handleArrayTable(expr.Key(), v)\n\tdefault:\n\t\tpanic(fmt.Errorf(\"parser should not permit expression of kind %s at document root\", expr.Kind))\n\t}\n\n\tif d.skipUntilTable {\n\t\tif expr.Kind == unstable.Table || expr.Kind == unstable.ArrayTable {\n\t\t\td.strict.MissingTable(expr)\n\t\t}\n\t} else if err == nil && x.IsValid() {\n\t\tv.Set(x)\n\t}\n\n\treturn err\n}\n\nfunc (d *decoder) handleArrayTable(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\tif key.Next() {\n\t\treturn d.handleArrayTablePart(key, v)\n\t}\n\treturn d.handleKeyValues(v)\n}\n\nfunc (d *decoder) handleArrayTableCollectionLast(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\tswitch v.Kind() {\n\tcase reflect.Interface:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\telem = reflect.New(sliceInterfaceType).Elem()\n\t\t\telem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16))\n\t\t} else if elem.Kind() == reflect.Slice {\n\t\t\tif elem.Type() != sliceInterfaceType {\n\t\t\t\telem = reflect.New(sliceInterfaceType).Elem()\n\t\t\t\telem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16))\n\t\t\t} else if !elem.CanSet() {\n\t\t\t\tnelem := reflect.New(sliceInterfaceType).Elem()\n\t\t\t\tnelem.Set(reflect.MakeSlice(sliceInterfaceType, elem.Len(), elem.Cap()))\n\t\t\t\treflect.Copy(nelem, elem)\n\t\t\t\telem = nelem\n\t\t\t}\n\t\t\tif d.clearArrayTable && elem.Len() > 0 {\n\t\t\t\telem.SetLen(0)\n\t\t\t\td.clearArrayTable = false\n\t\t\t}\n\t\t}\n\t\treturn d.handleArrayTableCollectionLast(key, elem)\n\tcase reflect.Ptr:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\tptr := reflect.New(v.Type().Elem())\n\t\t\tv.Set(ptr)\n\t\t\telem = ptr.Elem()\n\t\t}\n\n\t\telem, err := d.handleArrayTableCollectionLast(key, elem)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tv.Elem().Set(elem)\n\n\t\treturn v, nil\n\tcase reflect.Slice:\n\t\tif d.clearArrayTable && v.Len() > 0 {\n\t\t\tv.SetLen(0)\n\t\t\td.clearArrayTable = false\n\t\t}\n\t\telemType := v.Type().Elem()\n\t\tvar elem reflect.Value\n\t\tif elemType.Kind() == reflect.Interface {\n\t\t\telem = makeMapStringInterface()\n\t\t} else {\n\t\t\telem = reflect.New(elemType).Elem()\n\t\t}\n\t\telem2, err := d.handleArrayTable(key, elem)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif elem2.IsValid() {\n\t\t\telem = elem2\n\t\t}\n\t\treturn reflect.Append(v, elem), nil\n\tcase reflect.Array:\n\t\tidx := d.arrayIndex(true, v)\n\t\tif idx >= v.Len() {\n\t\t\treturn v, fmt.Errorf(\"%s at position %d\", d.typeMismatchError(\"array table\", v.Type()), idx)\n\t\t}\n\t\telem := v.Index(idx)\n\t\t_, err := d.handleArrayTable(key, elem)\n\t\treturn v, err\n\tdefault:\n\t\treturn reflect.Value{}, d.typeMismatchError(\"array table\", v.Type())\n\t}\n}\n\n// When parsing an array table expression, each part of the key needs to be\n// evaluated like a normal key, but if it returns a collection, it also needs to\n// point to the last element of the collection. Unless it is the last part of\n// the key, then it needs to create a new element at the end.\nfunc (d *decoder) handleArrayTableCollection(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\tif key.IsLast() {\n\t\treturn d.handleArrayTableCollectionLast(key, v)\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Ptr:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\tptr := reflect.New(v.Type().Elem())\n\t\t\tv.Set(ptr)\n\t\t\telem = ptr.Elem()\n\t\t}\n\n\t\telem, err := d.handleArrayTableCollection(key, elem)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif elem.IsValid() {\n\t\t\tv.Elem().Set(elem)\n\t\t}\n\n\t\treturn v, nil\n\tcase reflect.Slice:\n\t\telem := v.Index(v.Len() - 1)\n\t\tx, err := d.handleArrayTable(key, elem)\n\t\tif err != nil || d.skipUntilTable {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\telem.Set(x)\n\t\t}\n\n\t\treturn v, err\n\tcase reflect.Array:\n\t\tidx := d.arrayIndex(false, v)\n\t\tif idx >= v.Len() {\n\t\t\treturn v, fmt.Errorf(\"%s at position %d\", d.typeMismatchError(\"array table\", v.Type()), idx)\n\t\t}\n\t\telem := v.Index(idx)\n\t\t_, err := d.handleArrayTable(key, elem)\n\t\treturn v, err\n\t}\n\n\treturn d.handleArrayTable(key, v)\n}\n\nfunc (d *decoder) handleKeyPart(key unstable.Iterator, v reflect.Value, nextFn handlerFn, makeFn valueMakerFn) (reflect.Value, error) {\n\tvar rv reflect.Value\n\n\t// First, dispatch over v to make sure it is a valid object.\n\t// There is no guarantee over what it could be.\n\tswitch v.Kind() {\n\tcase reflect.Ptr:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t}\n\t\telem = v.Elem()\n\t\treturn d.handleKeyPart(key, elem, nextFn, makeFn)\n\tcase reflect.Map:\n\t\tvt := v.Type()\n\n\t\t// Create the key for the map element. Convert to key type.\n\t\tmk, err := d.keyFromData(vt.Key(), key.Node().Data)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\n\t\t// If the map does not exist, create it.\n\t\tif v.IsNil() {\n\t\t\tvt := v.Type()\n\t\t\tv = reflect.MakeMap(vt)\n\t\t\trv = v\n\t\t}\n\n\t\tmv := v.MapIndex(mk)\n\t\tset := false\n\t\tif !mv.IsValid() {\n\t\t\t// If there is no value in the map, create a new one according to\n\t\t\t// the map type. If the element type is interface, create either a\n\t\t\t// map[string]interface{} or a []interface{} depending on whether\n\t\t\t// this is the last part of the array table key.\n\n\t\t\tt := vt.Elem()\n\t\t\tif t.Kind() == reflect.Interface {\n\t\t\t\tmv = makeFn()\n\t\t\t} else {\n\t\t\t\tmv = reflect.New(t).Elem()\n\t\t\t}\n\t\t\tset = true\n\t\t} else if mv.Kind() == reflect.Interface {\n\t\t\tmv = mv.Elem()\n\t\t\tif !mv.IsValid() {\n\t\t\t\tmv = makeFn()\n\t\t\t}\n\t\t\tset = true\n\t\t} else if !mv.CanAddr() {\n\t\t\tvt := v.Type()\n\t\t\tt := vt.Elem()\n\t\t\toldmv := mv\n\t\t\tmv = reflect.New(t).Elem()\n\t\t\tmv.Set(oldmv)\n\t\t\tset = true\n\t\t}\n\n\t\tx, err := nextFn(key, mv)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\n\t\tif x.IsValid() {\n\t\t\tmv = x\n\t\t\tset = true\n\t\t}\n\n\t\tif set {\n\t\t\tv.SetMapIndex(mk, mv)\n\t\t}\n\tcase reflect.Struct:\n\t\tpath, found := structFieldPath(v, string(key.Node().Data))\n\t\tif !found {\n\t\t\td.skipUntilTable = true\n\t\t\treturn reflect.Value{}, nil\n\t\t}\n\n\t\tif d.errorContext == nil {\n\t\t\td.errorContext = new(errorContext)\n\t\t}\n\t\tt := v.Type()\n\t\td.errorContext.Struct = t\n\t\td.errorContext.Field = path\n\n\t\tf := fieldByIndex(v, path)\n\t\tx, err := nextFn(key, f)\n\t\tif err != nil || d.skipUntilTable {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\tf.Set(x)\n\t\t}\n\t\td.errorContext.Field = nil\n\t\td.errorContext.Struct = nil\n\tcase reflect.Interface:\n\t\tif v.Elem().IsValid() {\n\t\t\tv = v.Elem()\n\t\t} else {\n\t\t\tv = makeMapStringInterface()\n\t\t}\n\n\t\tx, err := d.handleKeyPart(key, v, nextFn, makeFn)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\tv = x\n\t\t}\n\t\trv = v\n\tdefault:\n\t\tpanic(fmt.Errorf(\"unhandled part: %s\", v.Kind()))\n\t}\n\n\treturn rv, nil\n}\n\n// HandleArrayTablePart navigates the Go structure v using the key v. It is\n// only used for the prefix (non-last) parts of an array-table. When\n// encountering a collection, it should go to the last element.\nfunc (d *decoder) handleArrayTablePart(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\tvar makeFn valueMakerFn\n\tif key.IsLast() {\n\t\tmakeFn = makeSliceInterface\n\t} else {\n\t\tmakeFn = makeMapStringInterface\n\t}\n\treturn d.handleKeyPart(key, v, d.handleArrayTableCollection, makeFn)\n}\n\n// HandleTable returns a reference when it has checked the next expression but\n// cannot handle it.\nfunc (d *decoder) handleTable(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\tif v.Kind() == reflect.Slice {\n\t\tif v.Len() == 0 {\n\t\t\treturn reflect.Value{}, unstable.NewParserError(key.Node().Data, \"cannot store a table in a slice\")\n\t\t}\n\t\telem := v.Index(v.Len() - 1)\n\t\tx, err := d.handleTable(key, elem)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\telem.Set(x)\n\t\t}\n\t\treturn reflect.Value{}, nil\n\t}\n\tif key.Next() {\n\t\t// Still scoping the key\n\t\treturn d.handleTablePart(key, v)\n\t}\n\t// Done scoping the key.\n\t// Now handle all the key-value expressions in this table.\n\treturn d.handleKeyValues(v)\n}\n\n// Handle root expressions until the end of the document or the next\n// non-key-value.\nfunc (d *decoder) handleKeyValues(v reflect.Value) (reflect.Value, error) {\n\tvar rv reflect.Value\n\tfor d.nextExpr() {\n\t\texpr := d.expr()\n\t\tif expr.Kind != unstable.KeyValue {\n\t\t\t// Stash the expression so that fromParser can just loop and use\n\t\t\t// the right handler.\n\t\t\t// We could just recurse ourselves here, but at least this gives a\n\t\t\t// chance to pop the stack a bit.\n\t\t\td.stashExpr()\n\t\t\tbreak\n\t\t}\n\n\t\t_, err := d.seen.CheckExpression(expr)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\n\t\tx, err := d.handleKeyValue(expr, v)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\tv = x\n\t\t\trv = x\n\t\t}\n\t}\n\treturn rv, nil\n}\n\ntype (\n\thandlerFn    func(key unstable.Iterator, v reflect.Value) (reflect.Value, error)\n\tvalueMakerFn func() reflect.Value\n)\n\nfunc makeMapStringInterface() reflect.Value {\n\treturn reflect.MakeMap(mapStringInterfaceType)\n}\n\nfunc makeSliceInterface() reflect.Value {\n\treturn reflect.MakeSlice(sliceInterfaceType, 0, 16)\n}\n\nfunc (d *decoder) handleTablePart(key unstable.Iterator, v reflect.Value) (reflect.Value, error) {\n\treturn d.handleKeyPart(key, v, d.handleTable, makeMapStringInterface)\n}\n\nfunc (d *decoder) tryTextUnmarshaler(node *unstable.Node, v reflect.Value) (bool, error) {\n\t// Special case for time, because we allow to unmarshal to it from\n\t// different kind of AST nodes.\n\tif v.Type() == timeType {\n\t\treturn false, nil\n\t}\n\n\tif v.CanAddr() && v.Addr().Type().Implements(textUnmarshalerType) {\n\t\terr := v.Addr().Interface().(encoding.TextUnmarshaler).UnmarshalText(node.Data)\n\t\tif err != nil {\n\t\t\treturn false, unstable.NewParserError(d.p.Raw(node.Raw), \"%w\", err)\n\t\t}\n\n\t\treturn true, nil\n\t}\n\n\treturn false, nil\n}\n\nfunc (d *decoder) handleValue(value *unstable.Node, v reflect.Value) error {\n\tfor v.Kind() == reflect.Ptr {\n\t\tv = initAndDereferencePointer(v)\n\t}\n\n\tif d.unmarshalerInterface {\n\t\tif v.CanAddr() && v.Addr().CanInterface() {\n\t\t\tif outi, ok := v.Addr().Interface().(unstable.Unmarshaler); ok {\n\t\t\t\treturn outi.UnmarshalTOML(value)\n\t\t\t}\n\t\t}\n\t}\n\n\tok, err := d.tryTextUnmarshaler(value, v)\n\tif ok || err != nil {\n\t\treturn err\n\t}\n\n\tswitch value.Kind {\n\tcase unstable.String:\n\t\treturn d.unmarshalString(value, v)\n\tcase unstable.Integer:\n\t\treturn d.unmarshalInteger(value, v)\n\tcase unstable.Float:\n\t\treturn d.unmarshalFloat(value, v)\n\tcase unstable.Bool:\n\t\treturn d.unmarshalBool(value, v)\n\tcase unstable.DateTime:\n\t\treturn d.unmarshalDateTime(value, v)\n\tcase unstable.LocalDate:\n\t\treturn d.unmarshalLocalDate(value, v)\n\tcase unstable.LocalTime:\n\t\treturn d.unmarshalLocalTime(value, v)\n\tcase unstable.LocalDateTime:\n\t\treturn d.unmarshalLocalDateTime(value, v)\n\tcase unstable.InlineTable:\n\t\treturn d.unmarshalInlineTable(value, v)\n\tcase unstable.Array:\n\t\treturn d.unmarshalArray(value, v)\n\tdefault:\n\t\tpanic(fmt.Errorf(\"handleValue not implemented for %s\", value.Kind))\n\t}\n}\n\nfunc (d *decoder) unmarshalArray(array *unstable.Node, v reflect.Value) error {\n\tswitch v.Kind() {\n\tcase reflect.Slice:\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.MakeSlice(v.Type(), 0, 16))\n\t\t} else {\n\t\t\tv.SetLen(0)\n\t\t}\n\tcase reflect.Array:\n\t\t// arrays are always initialized\n\tcase reflect.Interface:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\telem = reflect.New(sliceInterfaceType).Elem()\n\t\t\telem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16))\n\t\t} else if elem.Kind() == reflect.Slice {\n\t\t\tif elem.Type() != sliceInterfaceType {\n\t\t\t\telem = reflect.New(sliceInterfaceType).Elem()\n\t\t\t\telem.Set(reflect.MakeSlice(sliceInterfaceType, 0, 16))\n\t\t\t} else if !elem.CanSet() {\n\t\t\t\tnelem := reflect.New(sliceInterfaceType).Elem()\n\t\t\t\tnelem.Set(reflect.MakeSlice(sliceInterfaceType, elem.Len(), elem.Cap()))\n\t\t\t\treflect.Copy(nelem, elem)\n\t\t\t\telem = nelem\n\t\t\t}\n\t\t}\n\t\terr := d.unmarshalArray(array, elem)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tv.Set(elem)\n\t\treturn nil\n\tdefault:\n\t\t// TODO: use newDecodeError, but first the parser needs to fill\n\t\t//   array.Data.\n\t\treturn d.typeMismatchError(\"array\", v.Type())\n\t}\n\n\telemType := v.Type().Elem()\n\n\tit := array.Children()\n\tidx := 0\n\tfor it.Next() {\n\t\tn := it.Node()\n\n\t\t// TODO: optimize\n\t\tif v.Kind() == reflect.Slice {\n\t\t\telem := reflect.New(elemType).Elem()\n\n\t\t\terr := d.handleValue(n, elem)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\n\t\t\tv.Set(reflect.Append(v, elem))\n\t\t} else { // array\n\t\t\tif idx >= v.Len() {\n\t\t\t\treturn nil\n\t\t\t}\n\t\t\telem := v.Index(idx)\n\t\t\terr := d.handleValue(n, elem)\n\t\t\tif err != nil {\n\t\t\t\treturn err\n\t\t\t}\n\t\t\tidx++\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalInlineTable(itable *unstable.Node, v reflect.Value) error {\n\t// Make sure v is an initialized object.\n\tswitch v.Kind() {\n\tcase reflect.Map:\n\t\tif v.IsNil() {\n\t\t\tv.Set(reflect.MakeMap(v.Type()))\n\t\t}\n\tcase reflect.Struct:\n\t// structs are always initialized.\n\tcase reflect.Interface:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\telem = makeMapStringInterface()\n\t\t\tv.Set(elem)\n\t\t}\n\t\treturn d.unmarshalInlineTable(itable, elem)\n\tdefault:\n\t\treturn unstable.NewParserError(d.p.Raw(itable.Raw), \"cannot store inline table in Go type %s\", v.Kind())\n\t}\n\n\tit := itable.Children()\n\tfor it.Next() {\n\t\tn := it.Node()\n\n\t\tx, err := d.handleKeyValue(n, v)\n\t\tif err != nil {\n\t\t\treturn err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\tv = x\n\t\t}\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalDateTime(value *unstable.Node, v reflect.Value) error {\n\tdt, err := parseDateTime(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tv.Set(reflect.ValueOf(dt))\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalLocalDate(value *unstable.Node, v reflect.Value) error {\n\tld, err := parseLocalDate(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif v.Type() == timeType {\n\t\tcast := ld.AsTime(time.Local)\n\t\tv.Set(reflect.ValueOf(cast))\n\t\treturn nil\n\t}\n\n\tv.Set(reflect.ValueOf(ld))\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalLocalTime(value *unstable.Node, v reflect.Value) error {\n\tlt, rest, err := parseLocalTime(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(rest) > 0 {\n\t\treturn unstable.NewParserError(rest, \"extra characters at the end of a local time\")\n\t}\n\n\tv.Set(reflect.ValueOf(lt))\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalLocalDateTime(value *unstable.Node, v reflect.Value) error {\n\tldt, rest, err := parseLocalDateTime(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif len(rest) > 0 {\n\t\treturn unstable.NewParserError(rest, \"extra characters at the end of a local date time\")\n\t}\n\n\tif v.Type() == timeType {\n\t\tcast := ldt.AsTime(time.Local)\n\n\t\tv.Set(reflect.ValueOf(cast))\n\t\treturn nil\n\t}\n\n\tv.Set(reflect.ValueOf(ldt))\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalBool(value *unstable.Node, v reflect.Value) error {\n\tb := value.Data[0] == 't'\n\n\tswitch v.Kind() {\n\tcase reflect.Bool:\n\t\tv.SetBool(b)\n\tcase reflect.Interface:\n\t\tv.Set(reflect.ValueOf(b))\n\tdefault:\n\t\treturn unstable.NewParserError(value.Data, \"cannot assign boolean to a %t\", b)\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalFloat(value *unstable.Node, v reflect.Value) error {\n\tf, err := parseFloat(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tswitch v.Kind() {\n\tcase reflect.Float64:\n\t\tv.SetFloat(f)\n\tcase reflect.Float32:\n\t\tif f > math.MaxFloat32 {\n\t\t\treturn unstable.NewParserError(value.Data, \"number %f does not fit in a float32\", f)\n\t\t}\n\t\tv.SetFloat(f)\n\tcase reflect.Interface:\n\t\tv.Set(reflect.ValueOf(f))\n\tdefault:\n\t\treturn unstable.NewParserError(value.Data, \"float cannot be assigned to %s\", v.Kind())\n\t}\n\n\treturn nil\n}\n\nconst (\n\tmaxInt = int64(^uint(0) >> 1)\n\tminInt = -maxInt - 1\n)\n\n// Maximum value of uint for decoding. Currently the decoder parses the integer\n// into an int64. As a result, on architectures where uint is 64 bits, the\n// effective maximum uint we can decode is the maximum of int64. On\n// architectures where uint is 32 bits, the maximum value we can decode is\n// lower: the maximum of uint32. I didn't find a way to figure out this value at\n// compile time, so it is computed during initialization.\nvar maxUint int64 = math.MaxInt64\n\nfunc init() {\n\tm := uint64(^uint(0))\n\tif m < uint64(maxUint) {\n\t\tmaxUint = int64(m)\n\t}\n}\n\nfunc (d *decoder) unmarshalInteger(value *unstable.Node, v reflect.Value) error {\n\tkind := v.Kind()\n\tif kind == reflect.Float32 || kind == reflect.Float64 {\n\t\treturn d.unmarshalFloat(value, v)\n\t}\n\n\ti, err := parseInteger(value.Data)\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tvar r reflect.Value\n\n\tswitch kind {\n\tcase reflect.Int64:\n\t\tv.SetInt(i)\n\t\treturn nil\n\tcase reflect.Int32:\n\t\tif i < math.MinInt32 || i > math.MaxInt32 {\n\t\t\treturn fmt.Errorf(\"toml: number %d does not fit in an int32\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(int32(i))\n\tcase reflect.Int16:\n\t\tif i < math.MinInt16 || i > math.MaxInt16 {\n\t\t\treturn fmt.Errorf(\"toml: number %d does not fit in an int16\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(int16(i))\n\tcase reflect.Int8:\n\t\tif i < math.MinInt8 || i > math.MaxInt8 {\n\t\t\treturn fmt.Errorf(\"toml: number %d does not fit in an int8\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(int8(i))\n\tcase reflect.Int:\n\t\tif i < minInt || i > maxInt {\n\t\t\treturn fmt.Errorf(\"toml: number %d does not fit in an int\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(int(i))\n\tcase reflect.Uint64:\n\t\tif i < 0 {\n\t\t\treturn fmt.Errorf(\"toml: negative number %d does not fit in an uint64\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(uint64(i))\n\tcase reflect.Uint32:\n\t\tif i < 0 || i > math.MaxUint32 {\n\t\t\treturn fmt.Errorf(\"toml: negative number %d does not fit in an uint32\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(uint32(i))\n\tcase reflect.Uint16:\n\t\tif i < 0 || i > math.MaxUint16 {\n\t\t\treturn fmt.Errorf(\"toml: negative number %d does not fit in an uint16\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(uint16(i))\n\tcase reflect.Uint8:\n\t\tif i < 0 || i > math.MaxUint8 {\n\t\t\treturn fmt.Errorf(\"toml: negative number %d does not fit in an uint8\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(uint8(i))\n\tcase reflect.Uint:\n\t\tif i < 0 || i > maxUint {\n\t\t\treturn fmt.Errorf(\"toml: negative number %d does not fit in an uint\", i)\n\t\t}\n\n\t\tr = reflect.ValueOf(uint(i))\n\tcase reflect.Interface:\n\t\tr = reflect.ValueOf(i)\n\tdefault:\n\t\treturn unstable.NewParserError(d.p.Raw(value.Raw), d.typeMismatchString(\"integer\", v.Type()))\n\t}\n\n\tif !r.Type().AssignableTo(v.Type()) {\n\t\tr = r.Convert(v.Type())\n\t}\n\n\tv.Set(r)\n\n\treturn nil\n}\n\nfunc (d *decoder) unmarshalString(value *unstable.Node, v reflect.Value) error {\n\tswitch v.Kind() {\n\tcase reflect.String:\n\t\tv.SetString(string(value.Data))\n\tcase reflect.Interface:\n\t\tv.Set(reflect.ValueOf(string(value.Data)))\n\tdefault:\n\t\treturn unstable.NewParserError(d.p.Raw(value.Raw), d.typeMismatchString(\"string\", v.Type()))\n\t}\n\n\treturn nil\n}\n\nfunc (d *decoder) handleKeyValue(expr *unstable.Node, v reflect.Value) (reflect.Value, error) {\n\td.strict.EnterKeyValue(expr)\n\n\tv, err := d.handleKeyValueInner(expr.Key(), expr.Value(), v)\n\tif d.skipUntilTable {\n\t\td.strict.MissingField(expr)\n\t\td.skipUntilTable = false\n\t}\n\n\td.strict.ExitKeyValue(expr)\n\n\treturn v, err\n}\n\nfunc (d *decoder) handleKeyValueInner(key unstable.Iterator, value *unstable.Node, v reflect.Value) (reflect.Value, error) {\n\tif key.Next() {\n\t\t// Still scoping the key\n\t\treturn d.handleKeyValuePart(key, value, v)\n\t}\n\t// Done scoping the key.\n\t// v is whatever Go value we need to fill.\n\treturn reflect.Value{}, d.handleValue(value, v)\n}\n\nfunc (d *decoder) keyFromData(keyType reflect.Type, data []byte) (reflect.Value, error) {\n\tswitch {\n\tcase stringType.AssignableTo(keyType):\n\t\treturn reflect.ValueOf(string(data)), nil\n\n\tcase stringType.ConvertibleTo(keyType):\n\t\treturn reflect.ValueOf(string(data)).Convert(keyType), nil\n\n\tcase keyType.Implements(textUnmarshalerType):\n\t\tmk := reflect.New(keyType.Elem())\n\t\tif err := mk.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil {\n\t\t\treturn reflect.Value{}, fmt.Errorf(\"toml: error unmarshalling key type %s from text: %w\", stringType, err)\n\t\t}\n\t\treturn mk, nil\n\n\tcase reflect.PtrTo(keyType).Implements(textUnmarshalerType):\n\t\tmk := reflect.New(keyType)\n\t\tif err := mk.Interface().(encoding.TextUnmarshaler).UnmarshalText(data); err != nil {\n\t\t\treturn reflect.Value{}, fmt.Errorf(\"toml: error unmarshalling key type %s from text: %w\", stringType, err)\n\t\t}\n\t\treturn mk.Elem(), nil\n\t}\n\treturn reflect.Value{}, fmt.Errorf(\"toml: cannot convert map key of type %s to expected type %s\", stringType, keyType)\n}\n\nfunc (d *decoder) handleKeyValuePart(key unstable.Iterator, value *unstable.Node, v reflect.Value) (reflect.Value, error) {\n\t// contains the replacement for v\n\tvar rv reflect.Value\n\n\t// First, dispatch over v to make sure it is a valid object.\n\t// There is no guarantee over what it could be.\n\tswitch v.Kind() {\n\tcase reflect.Map:\n\t\tvt := v.Type()\n\n\t\tmk, err := d.keyFromData(vt.Key(), key.Node().Data)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\n\t\t// If the map does not exist, create it.\n\t\tif v.IsNil() {\n\t\t\tv = reflect.MakeMap(vt)\n\t\t\trv = v\n\t\t}\n\n\t\tmv := v.MapIndex(mk)\n\t\tset := false\n\t\tif !mv.IsValid() || key.IsLast() {\n\t\t\tset = true\n\t\t\tmv = reflect.New(v.Type().Elem()).Elem()\n\t\t}\n\n\t\tnv, err := d.handleKeyValueInner(key, value, mv)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif nv.IsValid() {\n\t\t\tmv = nv\n\t\t\tset = true\n\t\t}\n\n\t\tif set {\n\t\t\tv.SetMapIndex(mk, mv)\n\t\t}\n\tcase reflect.Struct:\n\t\tpath, found := structFieldPath(v, string(key.Node().Data))\n\t\tif !found {\n\t\t\td.skipUntilTable = true\n\t\t\tbreak\n\t\t}\n\n\t\tif d.errorContext == nil {\n\t\t\td.errorContext = new(errorContext)\n\t\t}\n\t\tt := v.Type()\n\t\td.errorContext.Struct = t\n\t\td.errorContext.Field = path\n\n\t\tf := fieldByIndex(v, path)\n\n\t\tif !f.CanAddr() {\n\t\t\t// If the field is not addressable, need to take a slower path and\n\t\t\t// make a copy of the struct itself to a new location.\n\t\t\tnvp := reflect.New(v.Type())\n\t\t\tnvp.Elem().Set(v)\n\t\t\tv = nvp.Elem()\n\t\t\t_, err := d.handleKeyValuePart(key, value, v)\n\t\t\tif err != nil {\n\t\t\t\treturn reflect.Value{}, err\n\t\t\t}\n\t\t\treturn nvp.Elem(), nil\n\t\t}\n\t\tx, err := d.handleKeyValueInner(key, value, f)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\n\t\tif x.IsValid() {\n\t\t\tf.Set(x)\n\t\t}\n\t\td.errorContext.Struct = nil\n\t\td.errorContext.Field = nil\n\tcase reflect.Interface:\n\t\tv = v.Elem()\n\n\t\t// Following encoding/json: decoding an object into an\n\t\t// interface{}, it needs to always hold a\n\t\t// map[string]interface{}. This is for the types to be\n\t\t// consistent whether a previous value was set or not.\n\t\tif !v.IsValid() || v.Type() != mapStringInterfaceType {\n\t\t\tv = makeMapStringInterface()\n\t\t}\n\n\t\tx, err := d.handleKeyValuePart(key, value, v)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif x.IsValid() {\n\t\t\tv = x\n\t\t}\n\t\trv = v\n\tcase reflect.Ptr:\n\t\telem := v.Elem()\n\t\tif !elem.IsValid() {\n\t\t\tptr := reflect.New(v.Type().Elem())\n\t\t\tv.Set(ptr)\n\t\t\trv = v\n\t\t\telem = ptr.Elem()\n\t\t}\n\n\t\telem2, err := d.handleKeyValuePart(key, value, elem)\n\t\tif err != nil {\n\t\t\treturn reflect.Value{}, err\n\t\t}\n\t\tif elem2.IsValid() {\n\t\t\telem = elem2\n\t\t}\n\t\tv.Elem().Set(elem)\n\tdefault:\n\t\treturn reflect.Value{}, fmt.Errorf(\"unhandled kv part: %s\", v.Kind())\n\t}\n\n\treturn rv, nil\n}\n\nfunc initAndDereferencePointer(v reflect.Value) reflect.Value {\n\tvar elem reflect.Value\n\tif v.IsNil() {\n\t\tptr := reflect.New(v.Type().Elem())\n\t\tv.Set(ptr)\n\t}\n\telem = v.Elem()\n\treturn elem\n}\n\n// Same as reflect.Value.FieldByIndex, but creates pointers if needed.\nfunc fieldByIndex(v reflect.Value, path []int) reflect.Value {\n\tfor _, x := range path {\n\t\tv = v.Field(x)\n\n\t\tif v.Kind() == reflect.Ptr {\n\t\t\tif v.IsNil() {\n\t\t\t\tv.Set(reflect.New(v.Type().Elem()))\n\t\t\t}\n\t\t\tv = v.Elem()\n\t\t}\n\t}\n\treturn v\n}\n\ntype fieldPathsMap = map[string][]int\n\nvar globalFieldPathsCache atomic.Value // map[danger.TypeID]fieldPathsMap\n\nfunc structFieldPath(v reflect.Value, name string) ([]int, bool) {\n\tt := v.Type()\n\n\tcache, _ := globalFieldPathsCache.Load().(map[danger.TypeID]fieldPathsMap)\n\tfieldPaths, ok := cache[danger.MakeTypeID(t)]\n\n\tif !ok {\n\t\tfieldPaths = map[string][]int{}\n\n\t\tforEachField(t, nil, func(name string, path []int) {\n\t\t\tfieldPaths[name] = path\n\t\t\t// extra copy for the case-insensitive match\n\t\t\tfieldPaths[strings.ToLower(name)] = path\n\t\t})\n\n\t\tnewCache := make(map[danger.TypeID]fieldPathsMap, len(cache)+1)\n\t\tnewCache[danger.MakeTypeID(t)] = fieldPaths\n\t\tfor k, v := range cache {\n\t\t\tnewCache[k] = v\n\t\t}\n\t\tglobalFieldPathsCache.Store(newCache)\n\t}\n\n\tpath, ok := fieldPaths[name]\n\tif !ok {\n\t\tpath, ok = fieldPaths[strings.ToLower(name)]\n\t}\n\treturn path, ok\n}\n\nfunc forEachField(t reflect.Type, path []int, do func(name string, path []int)) {\n\tn := t.NumField()\n\tfor i := 0; i < n; i++ {\n\t\tf := t.Field(i)\n\n\t\tif !f.Anonymous && f.PkgPath != \"\" {\n\t\t\t// only consider exported fields.\n\t\t\tcontinue\n\t\t}\n\n\t\tfieldPath := append(path, i)\n\t\tfieldPath = fieldPath[:len(fieldPath):len(fieldPath)]\n\n\t\tname := f.Tag.Get(\"toml\")\n\t\tif name == \"-\" {\n\t\t\tcontinue\n\t\t}\n\n\t\tif i := strings.IndexByte(name, ','); i >= 0 {\n\t\t\tname = name[:i]\n\t\t}\n\n\t\tif f.Anonymous && name == \"\" {\n\t\t\tt2 := f.Type\n\t\t\tif t2.Kind() == reflect.Ptr {\n\t\t\t\tt2 = t2.Elem()\n\t\t\t}\n\n\t\t\tif t2.Kind() == reflect.Struct {\n\t\t\t\tforEachField(t2, fieldPath, do)\n\t\t\t}\n\t\t\tcontinue\n\t\t}\n\n\t\tif name == \"\" {\n\t\t\tname = f.Name\n\t\t}\n\n\t\tdo(name, fieldPath)\n\t}\n}\n"
  },
  {
    "path": "gossh/toml/unstable/ast.go",
    "content": "package unstable\n\nimport (\n\t\"fmt\"\n\t\"unsafe\"\n\n\t\"gossh/toml/internal/danger\"\n)\n\n// Iterator over a sequence of nodes.\n//\n// Starts uninitialized, you need to call Next() first.\n//\n// For example:\n//\n//\tit := n.Children()\n//\tfor it.Next() {\n//\t\tn := it.Node()\n//\t\t// do something with n\n//\t}\ntype Iterator struct {\n\tstarted bool\n\tnode    *Node\n}\n\n// Next moves the iterator forward and returns true if points to a\n// node, false otherwise.\nfunc (c *Iterator) Next() bool {\n\tif !c.started {\n\t\tc.started = true\n\t} else if c.node.Valid() {\n\t\tc.node = c.node.Next()\n\t}\n\treturn c.node.Valid()\n}\n\n// IsLast returns true if the current node of the iterator is the last\n// one.  Subsequent calls to Next() will return false.\nfunc (c *Iterator) IsLast() bool {\n\treturn c.node.next == 0\n}\n\n// Node returns a pointer to the node pointed at by the iterator.\nfunc (c *Iterator) Node() *Node {\n\treturn c.node\n}\n\n// Node in a TOML expression AST.\n//\n// Depending on Kind, its sequence of children should be interpreted\n// differently.\n//\n//   - Array have one child per element in the array.\n//   - InlineTable have one child per key-value in the table (each of kind\n//     InlineTable).\n//   - KeyValue have at least two children. The first one is the value. The rest\n//     make a potentially dotted key.\n//   - Table and ArrayTable's children represent a dotted key (same as\n//     KeyValue, but without the first node being the value).\n//\n// When relevant, Raw describes the range of bytes this node is referring to in\n// the input document. Use Parser.Raw() to retrieve the actual bytes.\ntype Node struct {\n\tKind Kind\n\tRaw  Range  // Raw bytes from the input.\n\tData []byte // Node value (either allocated or referencing the input).\n\n\t// References to other nodes, as offsets in the backing array\n\t// from this node. References can go backward, so those can be\n\t// negative.\n\tnext  int // 0 if last element\n\tchild int // 0 if no child\n}\n\n// Range of bytes in the document.\ntype Range struct {\n\tOffset uint32\n\tLength uint32\n}\n\n// Next returns a pointer to the next node, or nil if there is no next node.\nfunc (n *Node) Next() *Node {\n\tif n.next == 0 {\n\t\treturn nil\n\t}\n\tptr := unsafe.Pointer(n)\n\tsize := unsafe.Sizeof(Node{})\n\treturn (*Node)(danger.Stride(ptr, size, n.next))\n}\n\n// Child returns a pointer to the first child node of this node. Other children\n// can be accessed calling Next on the first child.  Returns an nil if this Node\n// has no child.\nfunc (n *Node) Child() *Node {\n\tif n.child == 0 {\n\t\treturn nil\n\t}\n\tptr := unsafe.Pointer(n)\n\tsize := unsafe.Sizeof(Node{})\n\treturn (*Node)(danger.Stride(ptr, size, n.child))\n}\n\n// Valid returns true if the node's kind is set (not to Invalid).\nfunc (n *Node) Valid() bool {\n\treturn n != nil\n}\n\n// Key returns the children nodes making the Key on a supported node. Panics\n// otherwise.  They are guaranteed to be all be of the Kind Key. A simple key\n// would return just one element.\nfunc (n *Node) Key() Iterator {\n\tswitch n.Kind {\n\tcase KeyValue:\n\t\tvalue := n.Child()\n\t\tif !value.Valid() {\n\t\t\tpanic(fmt.Errorf(\"KeyValue should have at least two children\"))\n\t\t}\n\t\treturn Iterator{node: value.Next()}\n\tcase Table, ArrayTable:\n\t\treturn Iterator{node: n.Child()}\n\tdefault:\n\t\tpanic(fmt.Errorf(\"Key() is not supported on a %s\", n.Kind))\n\t}\n}\n\n// Value returns a pointer to the value node of a KeyValue.\n// Guaranteed to be non-nil.  Panics if not called on a KeyValue node,\n// or if the Children are malformed.\nfunc (n *Node) Value() *Node {\n\treturn n.Child()\n}\n\n// Children returns an iterator over a node's children.\nfunc (n *Node) Children() Iterator {\n\treturn Iterator{node: n.Child()}\n}\n"
  },
  {
    "path": "gossh/toml/unstable/builder.go",
    "content": "package unstable\n\n// root contains a full AST.\n//\n// It is immutable once constructed with Builder.\ntype root struct {\n\tnodes []Node\n}\n\n// Iterator over the top level nodes.\nfunc (r *root) Iterator() Iterator {\n\tit := Iterator{}\n\tif len(r.nodes) > 0 {\n\t\tit.node = &r.nodes[0]\n\t}\n\treturn it\n}\n\nfunc (r *root) at(idx reference) *Node {\n\treturn &r.nodes[idx]\n}\n\ntype reference int\n\nconst invalidReference reference = -1\n\nfunc (r reference) Valid() bool {\n\treturn r != invalidReference\n}\n\ntype builder struct {\n\ttree    root\n\tlastIdx int\n}\n\nfunc (b *builder) Tree() *root {\n\treturn &b.tree\n}\n\nfunc (b *builder) NodeAt(ref reference) *Node {\n\treturn b.tree.at(ref)\n}\n\nfunc (b *builder) Reset() {\n\tb.tree.nodes = b.tree.nodes[:0]\n\tb.lastIdx = 0\n}\n\nfunc (b *builder) Push(n Node) reference {\n\tb.lastIdx = len(b.tree.nodes)\n\tb.tree.nodes = append(b.tree.nodes, n)\n\treturn reference(b.lastIdx)\n}\n\nfunc (b *builder) PushAndChain(n Node) reference {\n\tnewIdx := len(b.tree.nodes)\n\tb.tree.nodes = append(b.tree.nodes, n)\n\tif b.lastIdx >= 0 {\n\t\tb.tree.nodes[b.lastIdx].next = newIdx - b.lastIdx\n\t}\n\tb.lastIdx = newIdx\n\treturn reference(b.lastIdx)\n}\n\nfunc (b *builder) AttachChild(parent reference, child reference) {\n\tb.tree.nodes[parent].child = int(child) - int(parent)\n}\n\nfunc (b *builder) Chain(from reference, to reference) {\n\tb.tree.nodes[from].next = int(to) - int(from)\n}\n"
  },
  {
    "path": "gossh/toml/unstable/doc.go",
    "content": "// Package unstable provides APIs that do not meet the backward compatibility\n// guarantees yet.\npackage unstable\n"
  },
  {
    "path": "gossh/toml/unstable/kind.go",
    "content": "package unstable\n\nimport \"fmt\"\n\n// Kind represents the type of TOML structure contained in a given Node.\ntype Kind int\n\nconst (\n\t// Meta\n\tInvalid Kind = iota\n\tComment\n\tKey\n\n\t// Top level structures\n\tTable\n\tArrayTable\n\tKeyValue\n\n\t// Containers values\n\tArray\n\tInlineTable\n\n\t// Values\n\tString\n\tBool\n\tFloat\n\tInteger\n\tLocalDate\n\tLocalTime\n\tLocalDateTime\n\tDateTime\n)\n\n// String implementation of fmt.Stringer.\nfunc (k Kind) String() string {\n\tswitch k {\n\tcase Invalid:\n\t\treturn \"Invalid\"\n\tcase Comment:\n\t\treturn \"Comment\"\n\tcase Key:\n\t\treturn \"Key\"\n\tcase Table:\n\t\treturn \"Table\"\n\tcase ArrayTable:\n\t\treturn \"ArrayTable\"\n\tcase KeyValue:\n\t\treturn \"KeyValue\"\n\tcase Array:\n\t\treturn \"Array\"\n\tcase InlineTable:\n\t\treturn \"InlineTable\"\n\tcase String:\n\t\treturn \"String\"\n\tcase Bool:\n\t\treturn \"Bool\"\n\tcase Float:\n\t\treturn \"Float\"\n\tcase Integer:\n\t\treturn \"Integer\"\n\tcase LocalDate:\n\t\treturn \"LocalDate\"\n\tcase LocalTime:\n\t\treturn \"LocalTime\"\n\tcase LocalDateTime:\n\t\treturn \"LocalDateTime\"\n\tcase DateTime:\n\t\treturn \"DateTime\"\n\t}\n\tpanic(fmt.Errorf(\"Kind.String() not implemented for '%d'\", k))\n}\n"
  },
  {
    "path": "gossh/toml/unstable/parser.go",
    "content": "package unstable\n\nimport (\n\t\"bytes\"\n\t\"fmt\"\n\t\"unicode\"\n\n\t\"gossh/toml/internal/characters\"\n\t\"gossh/toml/internal/danger\"\n)\n\n// ParserError describes an error relative to the content of the document.\n//\n// It cannot outlive the instance of Parser it refers to, and may cause panics\n// if the parser is reset.\ntype ParserError struct {\n\tHighlight []byte\n\tMessage   string\n\tKey       []string // optional\n}\n\n// Error is the implementation of the error interface.\nfunc (e *ParserError) Error() string {\n\treturn e.Message\n}\n\n// NewParserError is a convenience function to create a ParserError\n//\n// Warning: Highlight needs to be a subslice of Parser.data, so only slices\n// returned by Parser.Raw are valid candidates.\nfunc NewParserError(highlight []byte, format string, args ...any) error {\n\treturn &ParserError{\n\t\tHighlight: highlight,\n\t\tMessage:   fmt.Errorf(format, args...).Error(),\n\t}\n}\n\n// Parser scans over a TOML-encoded document and generates an iterative AST.\n//\n// To prime the Parser, first reset it with the contents of a TOML document.\n// Then, process all top-level expressions sequentially. See Example.\n//\n// Don't forget to check Error() after you're done parsing.\n//\n// Each top-level expression needs to be fully processed before calling\n// NextExpression() again. Otherwise, calls to various Node methods may panic if\n// the parser has moved on the next expression.\n//\n// For performance reasons, go-toml doesn't make a copy of the input bytes to\n// the parser. Make sure to copy all the bytes you need to outlive the slice\n// given to the parser.\ntype Parser struct {\n\tdata    []byte\n\tbuilder builder\n\tref     reference\n\tleft    []byte\n\terr     error\n\tfirst   bool\n\n\tKeepComments bool\n}\n\n// Data returns the slice provided to the last call to Reset.\nfunc (p *Parser) Data() []byte {\n\treturn p.data\n}\n\n// Range returns a range description that corresponds to a given slice of the\n// input. If the argument is not a subslice of the parser input, this function\n// panics.\nfunc (p *Parser) Range(b []byte) Range {\n\treturn Range{\n\t\tOffset: uint32(danger.SubsliceOffset(p.data, b)),\n\t\tLength: uint32(len(b)),\n\t}\n}\n\n// Raw returns the slice corresponding to the bytes in the given range.\nfunc (p *Parser) Raw(raw Range) []byte {\n\treturn p.data[raw.Offset : raw.Offset+raw.Length]\n}\n\n// Reset brings the parser to its initial state for a given input. It wipes an\n// reuses internal storage to reduce allocation.\nfunc (p *Parser) Reset(b []byte) {\n\tp.builder.Reset()\n\tp.ref = invalidReference\n\tp.data = b\n\tp.left = b\n\tp.err = nil\n\tp.first = true\n}\n\n// NextExpression parses the next top-level expression. If an expression was\n// successfully parsed, it returns true. If the parser is at the end of the\n// document or an error occurred, it returns false.\n//\n// Retrieve the parsed expression with Expression().\nfunc (p *Parser) NextExpression() bool {\n\tif len(p.left) == 0 || p.err != nil {\n\t\treturn false\n\t}\n\n\tp.builder.Reset()\n\tp.ref = invalidReference\n\n\tfor {\n\t\tif len(p.left) == 0 || p.err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\tif !p.first {\n\t\t\tp.left, p.err = p.parseNewline(p.left)\n\t\t}\n\n\t\tif len(p.left) == 0 || p.err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\tp.ref, p.left, p.err = p.parseExpression(p.left)\n\n\t\tif p.err != nil {\n\t\t\treturn false\n\t\t}\n\n\t\tp.first = false\n\n\t\tif p.ref.Valid() {\n\t\t\treturn true\n\t\t}\n\t}\n}\n\n// Expression returns a pointer to the node representing the last successfully\n// parsed expression.\nfunc (p *Parser) Expression() *Node {\n\treturn p.builder.NodeAt(p.ref)\n}\n\n// Error returns any error that has occurred during parsing.\nfunc (p *Parser) Error() error {\n\treturn p.err\n}\n\n// Position describes a position in the input.\ntype Position struct {\n\t// Number of bytes from the beginning of the input.\n\tOffset int\n\t// Line number, starting at 1.\n\tLine int\n\t// Column number, starting at 1.\n\tColumn int\n}\n\n// Shape describes the position of a range in the input.\ntype Shape struct {\n\tStart Position\n\tEnd   Position\n}\n\nfunc (p *Parser) position(b []byte) Position {\n\toffset := danger.SubsliceOffset(p.data, b)\n\n\tlead := p.data[:offset]\n\n\treturn Position{\n\t\tOffset: offset,\n\t\tLine:   bytes.Count(lead, []byte{'\\n'}) + 1,\n\t\tColumn: len(lead) - bytes.LastIndex(lead, []byte{'\\n'}),\n\t}\n}\n\n// Shape returns the shape of the given range in the input.  Will\n// panic if the range is not a subslice of the input.\nfunc (p *Parser) Shape(r Range) Shape {\n\traw := p.Raw(r)\n\treturn Shape{\n\t\tStart: p.position(raw),\n\t\tEnd:   p.position(raw[r.Length:]),\n\t}\n}\n\nfunc (p *Parser) parseNewline(b []byte) ([]byte, error) {\n\tif b[0] == '\\n' {\n\t\treturn b[1:], nil\n\t}\n\n\tif b[0] == '\\r' {\n\t\t_, rest, err := scanWindowsNewline(b)\n\t\treturn rest, err\n\t}\n\n\treturn nil, NewParserError(b[0:1], \"expected newline but got %#U\", b[0])\n}\n\nfunc (p *Parser) parseComment(b []byte) (reference, []byte, error) {\n\tref := invalidReference\n\tdata, rest, err := scanComment(b)\n\tif p.KeepComments && err == nil {\n\t\tref = p.builder.Push(Node{\n\t\t\tKind: Comment,\n\t\t\tRaw:  p.Range(data),\n\t\t\tData: data,\n\t\t})\n\t}\n\treturn ref, rest, err\n}\n\nfunc (p *Parser) parseExpression(b []byte) (reference, []byte, error) {\n\t// expression =  ws [ comment ]\n\t// expression =/ ws keyval ws [ comment ]\n\t// expression =/ ws table ws [ comment ]\n\tref := invalidReference\n\n\tb = p.parseWhitespace(b)\n\n\tif len(b) == 0 {\n\t\treturn ref, b, nil\n\t}\n\n\tif b[0] == '#' {\n\t\tref, rest, err := p.parseComment(b)\n\t\treturn ref, rest, err\n\t}\n\n\tif b[0] == '\\n' || b[0] == '\\r' {\n\t\treturn ref, b, nil\n\t}\n\n\tvar err error\n\tif b[0] == '[' {\n\t\tref, b, err = p.parseTable(b)\n\t} else {\n\t\tref, b, err = p.parseKeyval(b)\n\t}\n\n\tif err != nil {\n\t\treturn ref, nil, err\n\t}\n\n\tb = p.parseWhitespace(b)\n\n\tif len(b) > 0 && b[0] == '#' {\n\t\tcref, rest, err := p.parseComment(b)\n\t\tif cref != invalidReference {\n\t\t\tp.builder.Chain(ref, cref)\n\t\t}\n\t\treturn ref, rest, err\n\t}\n\n\treturn ref, b, nil\n}\n\nfunc (p *Parser) parseTable(b []byte) (reference, []byte, error) {\n\t// table = std-table / array-table\n\tif len(b) > 1 && b[1] == '[' {\n\t\treturn p.parseArrayTable(b)\n\t}\n\n\treturn p.parseStdTable(b)\n}\n\nfunc (p *Parser) parseArrayTable(b []byte) (reference, []byte, error) {\n\t// array-table = array-table-open key array-table-close\n\t// array-table-open  = %x5B.5B ws  ; [[ Double left square bracket\n\t// array-table-close = ws %x5D.5D  ; ]] Double right square bracket\n\tref := p.builder.Push(Node{\n\t\tKind: ArrayTable,\n\t})\n\n\tb = b[2:]\n\tb = p.parseWhitespace(b)\n\n\tk, b, err := p.parseKey(b)\n\tif err != nil {\n\t\treturn ref, nil, err\n\t}\n\n\tp.builder.AttachChild(ref, k)\n\tb = p.parseWhitespace(b)\n\n\tb, err = expect(']', b)\n\tif err != nil {\n\t\treturn ref, nil, err\n\t}\n\n\tb, err = expect(']', b)\n\n\treturn ref, b, err\n}\n\nfunc (p *Parser) parseStdTable(b []byte) (reference, []byte, error) {\n\t// std-table = std-table-open key std-table-close\n\t// std-table-open  = %x5B ws     ; [ Left square bracket\n\t// std-table-close = ws %x5D     ; ] Right square bracket\n\tref := p.builder.Push(Node{\n\t\tKind: Table,\n\t})\n\n\tb = b[1:]\n\tb = p.parseWhitespace(b)\n\n\tkey, b, err := p.parseKey(b)\n\tif err != nil {\n\t\treturn ref, nil, err\n\t}\n\n\tp.builder.AttachChild(ref, key)\n\n\tb = p.parseWhitespace(b)\n\n\tb, err = expect(']', b)\n\n\treturn ref, b, err\n}\n\nfunc (p *Parser) parseKeyval(b []byte) (reference, []byte, error) {\n\t// keyval = key keyval-sep val\n\tref := p.builder.Push(Node{\n\t\tKind: KeyValue,\n\t})\n\n\tkey, b, err := p.parseKey(b)\n\tif err != nil {\n\t\treturn invalidReference, nil, err\n\t}\n\n\t// keyval-sep = ws %x3D ws ; =\n\n\tb = p.parseWhitespace(b)\n\n\tif len(b) == 0 {\n\t\treturn invalidReference, nil, NewParserError(b, \"expected = after a key, but the document ends there\")\n\t}\n\n\tb, err = expect('=', b)\n\tif err != nil {\n\t\treturn invalidReference, nil, err\n\t}\n\n\tb = p.parseWhitespace(b)\n\n\tvalRef, b, err := p.parseVal(b)\n\tif err != nil {\n\t\treturn ref, b, err\n\t}\n\n\tp.builder.Chain(valRef, key)\n\tp.builder.AttachChild(ref, valRef)\n\n\treturn ref, b, err\n}\n\n//nolint:cyclop,funlen\nfunc (p *Parser) parseVal(b []byte) (reference, []byte, error) {\n\t// val = string / boolean / array / inline-table / date-time / float / integer\n\tref := invalidReference\n\n\tif len(b) == 0 {\n\t\treturn ref, nil, NewParserError(b, \"expected value, not eof\")\n\t}\n\n\tvar err error\n\tc := b[0]\n\n\tswitch c {\n\tcase '\"':\n\t\tvar raw []byte\n\t\tvar v []byte\n\t\tif scanFollowsMultilineBasicStringDelimiter(b) {\n\t\t\traw, v, b, err = p.parseMultilineBasicString(b)\n\t\t} else {\n\t\t\traw, v, b, err = p.parseBasicString(b)\n\t\t}\n\n\t\tif err == nil {\n\t\t\tref = p.builder.Push(Node{\n\t\t\t\tKind: String,\n\t\t\t\tRaw:  p.Range(raw),\n\t\t\t\tData: v,\n\t\t\t})\n\t\t}\n\n\t\treturn ref, b, err\n\tcase '\\'':\n\t\tvar raw []byte\n\t\tvar v []byte\n\t\tif scanFollowsMultilineLiteralStringDelimiter(b) {\n\t\t\traw, v, b, err = p.parseMultilineLiteralString(b)\n\t\t} else {\n\t\t\traw, v, b, err = p.parseLiteralString(b)\n\t\t}\n\n\t\tif err == nil {\n\t\t\tref = p.builder.Push(Node{\n\t\t\t\tKind: String,\n\t\t\t\tRaw:  p.Range(raw),\n\t\t\t\tData: v,\n\t\t\t})\n\t\t}\n\n\t\treturn ref, b, err\n\tcase 't':\n\t\tif !scanFollowsTrue(b) {\n\t\t\treturn ref, nil, NewParserError(atmost(b, 4), \"expected 'true'\")\n\t\t}\n\n\t\tref = p.builder.Push(Node{\n\t\t\tKind: Bool,\n\t\t\tData: b[:4],\n\t\t})\n\n\t\treturn ref, b[4:], nil\n\tcase 'f':\n\t\tif !scanFollowsFalse(b) {\n\t\t\treturn ref, nil, NewParserError(atmost(b, 5), \"expected 'false'\")\n\t\t}\n\n\t\tref = p.builder.Push(Node{\n\t\t\tKind: Bool,\n\t\t\tData: b[:5],\n\t\t})\n\n\t\treturn ref, b[5:], nil\n\tcase '[':\n\t\treturn p.parseValArray(b)\n\tcase '{':\n\t\treturn p.parseInlineTable(b)\n\tdefault:\n\t\treturn p.parseIntOrFloatOrDateTime(b)\n\t}\n}\n\nfunc atmost(b []byte, n int) []byte {\n\tif n >= len(b) {\n\t\treturn b\n\t}\n\n\treturn b[:n]\n}\n\nfunc (p *Parser) parseLiteralString(b []byte) ([]byte, []byte, []byte, error) {\n\tv, rest, err := scanLiteralString(b)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\treturn v, v[1 : len(v)-1], rest, nil\n}\n\nfunc (p *Parser) parseInlineTable(b []byte) (reference, []byte, error) {\n\t// inline-table = inline-table-open [ inline-table-keyvals ] inline-table-close\n\t// inline-table-open  = %x7B ws     ; {\n\t// inline-table-close = ws %x7D     ; }\n\t// inline-table-sep   = ws %x2C ws  ; , Comma\n\t// inline-table-keyvals = keyval [ inline-table-sep inline-table-keyvals ]\n\tparent := p.builder.Push(Node{\n\t\tKind: InlineTable,\n\t\tRaw:  p.Range(b[:1]),\n\t})\n\n\tfirst := true\n\n\tvar child reference\n\n\tb = b[1:]\n\n\tvar err error\n\n\tfor len(b) > 0 {\n\t\tpreviousB := b\n\t\tb = p.parseWhitespace(b)\n\n\t\tif len(b) == 0 {\n\t\t\treturn parent, nil, NewParserError(previousB[:1], \"inline table is incomplete\")\n\t\t}\n\n\t\tif b[0] == '}' {\n\t\t\tbreak\n\t\t}\n\n\t\tif !first {\n\t\t\tb, err = expect(',', b)\n\t\t\tif err != nil {\n\t\t\t\treturn parent, nil, err\n\t\t\t}\n\t\t\tb = p.parseWhitespace(b)\n\t\t}\n\n\t\tvar kv reference\n\n\t\tkv, b, err = p.parseKeyval(b)\n\t\tif err != nil {\n\t\t\treturn parent, nil, err\n\t\t}\n\n\t\tif first {\n\t\t\tp.builder.AttachChild(parent, kv)\n\t\t} else {\n\t\t\tp.builder.Chain(child, kv)\n\t\t}\n\t\tchild = kv\n\n\t\tfirst = false\n\t}\n\n\trest, err := expect('}', b)\n\n\treturn parent, rest, err\n}\n\n//nolint:funlen,cyclop\nfunc (p *Parser) parseValArray(b []byte) (reference, []byte, error) {\n\t// array = array-open [ array-values ] ws-comment-newline array-close\n\t// array-open =  %x5B ; [\n\t// array-close = %x5D ; ]\n\t// array-values =  ws-comment-newline val ws-comment-newline array-sep array-values\n\t// array-values =/ ws-comment-newline val ws-comment-newline [ array-sep ]\n\t// array-sep = %x2C  ; , Comma\n\t// ws-comment-newline = *( wschar / [ comment ] newline )\n\tarrayStart := b\n\tb = b[1:]\n\n\tparent := p.builder.Push(Node{\n\t\tKind: Array,\n\t})\n\n\t// First indicates whether the parser is looking for the first element\n\t// (non-comment) of the array.\n\tfirst := true\n\n\tlastChild := invalidReference\n\n\taddChild := func(valueRef reference) {\n\t\tif lastChild == invalidReference {\n\t\t\tp.builder.AttachChild(parent, valueRef)\n\t\t} else {\n\t\t\tp.builder.Chain(lastChild, valueRef)\n\t\t}\n\t\tlastChild = valueRef\n\t}\n\n\tvar err error\n\tfor len(b) > 0 {\n\t\tcref := invalidReference\n\t\tcref, b, err = p.parseOptionalWhitespaceCommentNewline(b)\n\t\tif err != nil {\n\t\t\treturn parent, nil, err\n\t\t}\n\n\t\tif cref != invalidReference {\n\t\t\taddChild(cref)\n\t\t}\n\n\t\tif len(b) == 0 {\n\t\t\treturn parent, nil, NewParserError(arrayStart[:1], \"array is incomplete\")\n\t\t}\n\n\t\tif b[0] == ']' {\n\t\t\tbreak\n\t\t}\n\n\t\tif b[0] == ',' {\n\t\t\tif first {\n\t\t\t\treturn parent, nil, NewParserError(b[0:1], \"array cannot start with comma\")\n\t\t\t}\n\t\t\tb = b[1:]\n\n\t\t\tcref, b, err = p.parseOptionalWhitespaceCommentNewline(b)\n\t\t\tif err != nil {\n\t\t\t\treturn parent, nil, err\n\t\t\t}\n\t\t\tif cref != invalidReference {\n\t\t\t\taddChild(cref)\n\t\t\t}\n\t\t} else if !first {\n\t\t\treturn parent, nil, NewParserError(b[0:1], \"array elements must be separated by commas\")\n\t\t}\n\n\t\t// TOML allows trailing commas in arrays.\n\t\tif len(b) > 0 && b[0] == ']' {\n\t\t\tbreak\n\t\t}\n\n\t\tvar valueRef reference\n\t\tvalueRef, b, err = p.parseVal(b)\n\t\tif err != nil {\n\t\t\treturn parent, nil, err\n\t\t}\n\n\t\taddChild(valueRef)\n\n\t\tcref, b, err = p.parseOptionalWhitespaceCommentNewline(b)\n\t\tif err != nil {\n\t\t\treturn parent, nil, err\n\t\t}\n\t\tif cref != invalidReference {\n\t\t\taddChild(cref)\n\t\t}\n\n\t\tfirst = false\n\t}\n\n\trest, err := expect(']', b)\n\n\treturn parent, rest, err\n}\n\nfunc (p *Parser) parseOptionalWhitespaceCommentNewline(b []byte) (reference, []byte, error) {\n\trootCommentRef := invalidReference\n\tlatestCommentRef := invalidReference\n\n\taddComment := func(ref reference) {\n\t\tif rootCommentRef == invalidReference {\n\t\t\trootCommentRef = ref\n\t\t} else if latestCommentRef == invalidReference {\n\t\t\tp.builder.AttachChild(rootCommentRef, ref)\n\t\t\tlatestCommentRef = ref\n\t\t} else {\n\t\t\tp.builder.Chain(latestCommentRef, ref)\n\t\t\tlatestCommentRef = ref\n\t\t}\n\t}\n\n\tfor len(b) > 0 {\n\t\tvar err error\n\t\tb = p.parseWhitespace(b)\n\n\t\tif len(b) > 0 && b[0] == '#' {\n\t\t\tvar ref reference\n\t\t\tref, b, err = p.parseComment(b)\n\t\t\tif err != nil {\n\t\t\t\treturn invalidReference, nil, err\n\t\t\t}\n\t\t\tif ref != invalidReference {\n\t\t\t\taddComment(ref)\n\t\t\t}\n\t\t}\n\n\t\tif len(b) == 0 {\n\t\t\tbreak\n\t\t}\n\n\t\tif b[0] == '\\n' || b[0] == '\\r' {\n\t\t\tb, err = p.parseNewline(b)\n\t\t\tif err != nil {\n\t\t\t\treturn invalidReference, nil, err\n\t\t\t}\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn rootCommentRef, b, nil\n}\n\nfunc (p *Parser) parseMultilineLiteralString(b []byte) ([]byte, []byte, []byte, error) {\n\ttoken, rest, err := scanMultilineLiteralString(b)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\ti := 3\n\n\t// skip the immediate new line\n\tif token[i] == '\\n' {\n\t\ti++\n\t} else if token[i] == '\\r' && token[i+1] == '\\n' {\n\t\ti += 2\n\t}\n\n\treturn token, token[i : len(token)-3], rest, err\n}\n\n//nolint:funlen,gocognit,cyclop\nfunc (p *Parser) parseMultilineBasicString(b []byte) ([]byte, []byte, []byte, error) {\n\t// ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body\n\t// ml-basic-string-delim\n\t// ml-basic-string-delim = 3quotation-mark\n\t// ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ]\n\t//\n\t// mlb-content = mlb-char / newline / mlb-escaped-nl\n\t// mlb-char = mlb-unescaped / escaped\n\t// mlb-quotes = 1*2quotation-mark\n\t// mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii\n\t// mlb-escaped-nl = escape ws newline *( wschar / newline )\n\ttoken, escaped, rest, err := scanMultilineBasicString(b)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\ti := 3\n\n\t// skip the immediate new line\n\tif token[i] == '\\n' {\n\t\ti++\n\t} else if token[i] == '\\r' && token[i+1] == '\\n' {\n\t\ti += 2\n\t}\n\n\t// fast path\n\tstartIdx := i\n\tendIdx := len(token) - len(`\"\"\"`)\n\n\tif !escaped {\n\t\tstr := token[startIdx:endIdx]\n\t\tverr := characters.Utf8TomlValidAlreadyEscaped(str)\n\t\tif verr.Zero() {\n\t\t\treturn token, str, rest, nil\n\t\t}\n\t\treturn nil, nil, nil, NewParserError(str[verr.Index:verr.Index+verr.Size], \"invalid UTF-8\")\n\t}\n\n\tvar builder bytes.Buffer\n\n\t// The scanner ensures that the token starts and ends with quotes and that\n\t// escapes are balanced.\n\tfor i < len(token)-3 {\n\t\tc := token[i]\n\n\t\t//nolint:nestif\n\t\tif c == '\\\\' {\n\t\t\t// When the last non-whitespace character on a line is an unescaped \\,\n\t\t\t// it will be trimmed along with all whitespace (including newlines) up\n\t\t\t// to the next non-whitespace character or closing delimiter.\n\n\t\t\tisLastNonWhitespaceOnLine := false\n\t\t\tj := 1\n\t\tfindEOLLoop:\n\t\t\tfor ; j < len(token)-3-i; j++ {\n\t\t\t\tswitch token[i+j] {\n\t\t\t\tcase ' ', '\\t':\n\t\t\t\t\tcontinue\n\t\t\t\tcase '\\r':\n\t\t\t\t\tif token[i+j+1] == '\\n' {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\tcase '\\n':\n\t\t\t\t\tisLastNonWhitespaceOnLine = true\n\t\t\t\t}\n\t\t\t\tbreak findEOLLoop\n\t\t\t}\n\t\t\tif isLastNonWhitespaceOnLine {\n\t\t\t\ti += j\n\t\t\t\tfor ; i < len(token)-3; i++ {\n\t\t\t\t\tc := token[i]\n\t\t\t\t\tif !(c == '\\n' || c == '\\r' || c == ' ' || c == '\\t') {\n\t\t\t\t\t\ti--\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ti++\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// handle escaping\n\t\t\ti++\n\t\t\tc = token[i]\n\n\t\t\tswitch c {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tbuilder.WriteByte(c)\n\t\t\tcase 'b':\n\t\t\t\tbuilder.WriteByte('\\b')\n\t\t\tcase 'f':\n\t\t\t\tbuilder.WriteByte('\\f')\n\t\t\tcase 'n':\n\t\t\t\tbuilder.WriteByte('\\n')\n\t\t\tcase 'r':\n\t\t\t\tbuilder.WriteByte('\\r')\n\t\t\tcase 't':\n\t\t\t\tbuilder.WriteByte('\\t')\n\t\t\tcase 'e':\n\t\t\t\tbuilder.WriteByte(0x1B)\n\t\t\tcase 'u':\n\t\t\t\tx, err := hexToRune(atmost(token[i+1:], 4), 4)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\t\t\t\tbuilder.WriteRune(x)\n\t\t\t\ti += 4\n\t\t\tcase 'U':\n\t\t\t\tx, err := hexToRune(atmost(token[i+1:], 8), 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\n\t\t\t\tbuilder.WriteRune(x)\n\t\t\t\ti += 8\n\t\t\tdefault:\n\t\t\t\treturn nil, nil, nil, NewParserError(token[i:i+1], \"invalid escaped character %#U\", c)\n\t\t\t}\n\t\t\ti++\n\t\t} else {\n\t\t\tsize := characters.Utf8ValidNext(token[i:])\n\t\t\tif size == 0 {\n\t\t\t\treturn nil, nil, nil, NewParserError(token[i:i+1], \"invalid character %#U\", c)\n\t\t\t}\n\t\t\tbuilder.Write(token[i : i+size])\n\t\t\ti += size\n\t\t}\n\t}\n\n\treturn token, builder.Bytes(), rest, nil\n}\n\nfunc (p *Parser) parseKey(b []byte) (reference, []byte, error) {\n\t// key = simple-key / dotted-key\n\t// simple-key = quoted-key / unquoted-key\n\t//\n\t// unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _\n\t// quoted-key = basic-string / literal-string\n\t// dotted-key = simple-key 1*( dot-sep simple-key )\n\t//\n\t// dot-sep   = ws %x2E ws  ; . Period\n\traw, key, b, err := p.parseSimpleKey(b)\n\tif err != nil {\n\t\treturn invalidReference, nil, err\n\t}\n\n\tref := p.builder.Push(Node{\n\t\tKind: Key,\n\t\tRaw:  p.Range(raw),\n\t\tData: key,\n\t})\n\n\tfor {\n\t\tb = p.parseWhitespace(b)\n\t\tif len(b) > 0 && b[0] == '.' {\n\t\t\tb = p.parseWhitespace(b[1:])\n\n\t\t\traw, key, b, err = p.parseSimpleKey(b)\n\t\t\tif err != nil {\n\t\t\t\treturn ref, nil, err\n\t\t\t}\n\n\t\t\tp.builder.PushAndChain(Node{\n\t\t\t\tKind: Key,\n\t\t\t\tRaw:  p.Range(raw),\n\t\t\t\tData: key,\n\t\t\t})\n\t\t} else {\n\t\t\tbreak\n\t\t}\n\t}\n\n\treturn ref, b, nil\n}\n\nfunc (p *Parser) parseSimpleKey(b []byte) (raw, key, rest []byte, err error) {\n\tif len(b) == 0 {\n\t\treturn nil, nil, nil, NewParserError(b, \"expected key but found none\")\n\t}\n\n\t// simple-key = quoted-key / unquoted-key\n\t// unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _\n\t// quoted-key = basic-string / literal-string\n\tswitch {\n\tcase b[0] == '\\'':\n\t\treturn p.parseLiteralString(b)\n\tcase b[0] == '\"':\n\t\treturn p.parseBasicString(b)\n\tcase isUnquotedKeyChar(b[0]):\n\t\tkey, rest = scanUnquotedKey(b)\n\t\treturn key, key, rest, nil\n\tdefault:\n\t\treturn nil, nil, nil, NewParserError(b[0:1], \"invalid character at start of key: %c\", b[0])\n\t}\n}\n\n//nolint:funlen,cyclop\nfunc (p *Parser) parseBasicString(b []byte) ([]byte, []byte, []byte, error) {\n\t// basic-string = quotation-mark *basic-char quotation-mark\n\t// quotation-mark = %x22            ; \"\n\t// basic-char = basic-unescaped / escaped\n\t// basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii\n\t// escaped = escape escape-seq-char\n\t// escape-seq-char =  %x22         ; \"    quotation mark  U+0022\n\t// escape-seq-char =/ %x5C         ; \\    reverse solidus U+005C\n\t// escape-seq-char =/ %x62         ; b    backspace       U+0008\n\t// escape-seq-char =/ %x66         ; f    form feed       U+000C\n\t// escape-seq-char =/ %x6E         ; n    line feed       U+000A\n\t// escape-seq-char =/ %x72         ; r    carriage return U+000D\n\t// escape-seq-char =/ %x74         ; t    tab             U+0009\n\t// escape-seq-char =/ %x75 4HEXDIG ; uXXXX                U+XXXX\n\t// escape-seq-char =/ %x55 8HEXDIG ; UXXXXXXXX            U+XXXXXXXX\n\ttoken, escaped, rest, err := scanBasicString(b)\n\tif err != nil {\n\t\treturn nil, nil, nil, err\n\t}\n\n\tstartIdx := len(`\"`)\n\tendIdx := len(token) - len(`\"`)\n\n\t// Fast path. If there is no escape sequence, the string should just be\n\t// an UTF-8 encoded string, which is the same as Go. In that case,\n\t// validate the string and return a direct reference to the buffer.\n\tif !escaped {\n\t\tstr := token[startIdx:endIdx]\n\t\tverr := characters.Utf8TomlValidAlreadyEscaped(str)\n\t\tif verr.Zero() {\n\t\t\treturn token, str, rest, nil\n\t\t}\n\t\treturn nil, nil, nil, NewParserError(str[verr.Index:verr.Index+verr.Size], \"invalid UTF-8\")\n\t}\n\n\ti := startIdx\n\n\tvar builder bytes.Buffer\n\n\t// The scanner ensures that the token starts and ends with quotes and that\n\t// escapes are balanced.\n\tfor i < len(token)-1 {\n\t\tc := token[i]\n\t\tif c == '\\\\' {\n\t\t\ti++\n\t\t\tc = token[i]\n\n\t\t\tswitch c {\n\t\t\tcase '\"', '\\\\':\n\t\t\t\tbuilder.WriteByte(c)\n\t\t\tcase 'b':\n\t\t\t\tbuilder.WriteByte('\\b')\n\t\t\tcase 'f':\n\t\t\t\tbuilder.WriteByte('\\f')\n\t\t\tcase 'n':\n\t\t\t\tbuilder.WriteByte('\\n')\n\t\t\tcase 'r':\n\t\t\t\tbuilder.WriteByte('\\r')\n\t\t\tcase 't':\n\t\t\t\tbuilder.WriteByte('\\t')\n\t\t\tcase 'e':\n\t\t\t\tbuilder.WriteByte(0x1B)\n\t\t\tcase 'u':\n\t\t\t\tx, err := hexToRune(token[i+1:len(token)-1], 4)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\n\t\t\t\tbuilder.WriteRune(x)\n\t\t\t\ti += 4\n\t\t\tcase 'U':\n\t\t\t\tx, err := hexToRune(token[i+1:len(token)-1], 8)\n\t\t\t\tif err != nil {\n\t\t\t\t\treturn nil, nil, nil, err\n\t\t\t\t}\n\n\t\t\t\tbuilder.WriteRune(x)\n\t\t\t\ti += 8\n\t\t\tdefault:\n\t\t\t\treturn nil, nil, nil, NewParserError(token[i:i+1], \"invalid escaped character %#U\", c)\n\t\t\t}\n\t\t\ti++\n\t\t} else {\n\t\t\tsize := characters.Utf8ValidNext(token[i:])\n\t\t\tif size == 0 {\n\t\t\t\treturn nil, nil, nil, NewParserError(token[i:i+1], \"invalid character %#U\", c)\n\t\t\t}\n\t\t\tbuilder.Write(token[i : i+size])\n\t\t\ti += size\n\t\t}\n\t}\n\n\treturn token, builder.Bytes(), rest, nil\n}\n\nfunc hexToRune(b []byte, length int) (rune, error) {\n\tif len(b) < length {\n\t\treturn -1, NewParserError(b, \"unicode point needs %d character, not %d\", length, len(b))\n\t}\n\tb = b[:length]\n\n\tvar r uint32\n\tfor i, c := range b {\n\t\td := uint32(0)\n\t\tswitch {\n\t\tcase '0' <= c && c <= '9':\n\t\t\td = uint32(c - '0')\n\t\tcase 'a' <= c && c <= 'f':\n\t\t\td = uint32(c - 'a' + 10)\n\t\tcase 'A' <= c && c <= 'F':\n\t\t\td = uint32(c - 'A' + 10)\n\t\tdefault:\n\t\t\treturn -1, NewParserError(b[i:i+1], \"non-hex character\")\n\t\t}\n\t\tr = r*16 + d\n\t}\n\n\tif r > unicode.MaxRune || 0xD800 <= r && r < 0xE000 {\n\t\treturn -1, NewParserError(b, \"escape sequence is invalid Unicode code point\")\n\t}\n\n\treturn rune(r), nil\n}\n\nfunc (p *Parser) parseWhitespace(b []byte) []byte {\n\t// ws = *wschar\n\t// wschar =  %x20  ; Space\n\t// wschar =/ %x09  ; Horizontal tab\n\t_, rest := scanWhitespace(b)\n\n\treturn rest\n}\n\n//nolint:cyclop\nfunc (p *Parser) parseIntOrFloatOrDateTime(b []byte) (reference, []byte, error) {\n\tswitch b[0] {\n\tcase 'i':\n\t\tif !scanFollowsInf(b) {\n\t\t\treturn invalidReference, nil, NewParserError(atmost(b, 3), \"expected 'inf'\")\n\t\t}\n\n\t\treturn p.builder.Push(Node{\n\t\t\tKind: Float,\n\t\t\tData: b[:3],\n\t\t\tRaw:  p.Range(b[:3]),\n\t\t}), b[3:], nil\n\tcase 'n':\n\t\tif !scanFollowsNan(b) {\n\t\t\treturn invalidReference, nil, NewParserError(atmost(b, 3), \"expected 'nan'\")\n\t\t}\n\n\t\treturn p.builder.Push(Node{\n\t\t\tKind: Float,\n\t\t\tData: b[:3],\n\t\t\tRaw:  p.Range(b[:3]),\n\t\t}), b[3:], nil\n\tcase '+', '-':\n\t\treturn p.scanIntOrFloat(b)\n\t}\n\n\tif len(b) < 3 {\n\t\treturn p.scanIntOrFloat(b)\n\t}\n\n\ts := 5\n\tif len(b) < s {\n\t\ts = len(b)\n\t}\n\n\tfor idx, c := range b[:s] {\n\t\tif isDigit(c) {\n\t\t\tcontinue\n\t\t}\n\n\t\tif idx == 2 && c == ':' || (idx == 4 && c == '-') {\n\t\t\treturn p.scanDateTime(b)\n\t\t}\n\n\t\tbreak\n\t}\n\n\treturn p.scanIntOrFloat(b)\n}\n\nfunc (p *Parser) scanDateTime(b []byte) (reference, []byte, error) {\n\t// scans for contiguous characters in [0-9T:Z.+-], and up to one space if\n\t// followed by a digit.\n\thasDate := false\n\thasTime := false\n\thasTz := false\n\tseenSpace := false\n\n\ti := 0\nbyteLoop:\n\tfor ; i < len(b); i++ {\n\t\tc := b[i]\n\n\t\tswitch {\n\t\tcase isDigit(c):\n\t\tcase c == '-':\n\t\t\thasDate = true\n\t\t\tconst minOffsetOfTz = 8\n\t\t\tif i >= minOffsetOfTz {\n\t\t\t\thasTz = true\n\t\t\t}\n\t\tcase c == 'T' || c == 't' || c == ':' || c == '.':\n\t\t\thasTime = true\n\t\tcase c == '+' || c == '-' || c == 'Z' || c == 'z':\n\t\t\thasTz = true\n\t\tcase c == ' ':\n\t\t\tif !seenSpace && i+1 < len(b) && isDigit(b[i+1]) {\n\t\t\t\ti += 2\n\t\t\t\t// Avoid reaching past the end of the document in case the time\n\t\t\t\t// is malformed. See TestIssue585.\n\t\t\t\tif i >= len(b) {\n\t\t\t\t\ti--\n\t\t\t\t}\n\t\t\t\tseenSpace = true\n\t\t\t\thasTime = true\n\t\t\t} else {\n\t\t\t\tbreak byteLoop\n\t\t\t}\n\t\tdefault:\n\t\t\tbreak byteLoop\n\t\t}\n\t}\n\n\tvar kind Kind\n\n\tif hasTime {\n\t\tif hasDate {\n\t\t\tif hasTz {\n\t\t\t\tkind = DateTime\n\t\t\t} else {\n\t\t\t\tkind = LocalDateTime\n\t\t\t}\n\t\t} else {\n\t\t\tkind = LocalTime\n\t\t}\n\t} else {\n\t\tkind = LocalDate\n\t}\n\n\treturn p.builder.Push(Node{\n\t\tKind: kind,\n\t\tData: b[:i],\n\t}), b[i:], nil\n}\n\n//nolint:funlen,gocognit,cyclop\nfunc (p *Parser) scanIntOrFloat(b []byte) (reference, []byte, error) {\n\ti := 0\n\n\tif len(b) > 2 && b[0] == '0' && b[1] != '.' && b[1] != 'e' && b[1] != 'E' {\n\t\tvar isValidRune validRuneFn\n\n\t\tswitch b[1] {\n\t\tcase 'x':\n\t\t\tisValidRune = isValidHexRune\n\t\tcase 'o':\n\t\t\tisValidRune = isValidOctalRune\n\t\tcase 'b':\n\t\t\tisValidRune = isValidBinaryRune\n\t\tdefault:\n\t\t\ti++\n\t\t}\n\n\t\tif isValidRune != nil {\n\t\t\ti += 2\n\t\t\tfor ; i < len(b); i++ {\n\t\t\t\tif !isValidRune(b[i]) {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn p.builder.Push(Node{\n\t\t\tKind: Integer,\n\t\t\tData: b[:i],\n\t\t\tRaw:  p.Range(b[:i]),\n\t\t}), b[i:], nil\n\t}\n\n\tisFloat := false\n\n\tfor ; i < len(b); i++ {\n\t\tc := b[i]\n\n\t\tif c >= '0' && c <= '9' || c == '+' || c == '-' || c == '_' {\n\t\t\tcontinue\n\t\t}\n\n\t\tif c == '.' || c == 'e' || c == 'E' {\n\t\t\tisFloat = true\n\n\t\t\tcontinue\n\t\t}\n\n\t\tif c == 'i' {\n\t\t\tif scanFollowsInf(b[i:]) {\n\t\t\t\treturn p.builder.Push(Node{\n\t\t\t\t\tKind: Float,\n\t\t\t\t\tData: b[:i+3],\n\t\t\t\t\tRaw:  p.Range(b[:i+3]),\n\t\t\t\t}), b[i+3:], nil\n\t\t\t}\n\n\t\t\treturn invalidReference, nil, NewParserError(b[i:i+1], \"unexpected character 'i' while scanning for a number\")\n\t\t}\n\n\t\tif c == 'n' {\n\t\t\tif scanFollowsNan(b[i:]) {\n\t\t\t\treturn p.builder.Push(Node{\n\t\t\t\t\tKind: Float,\n\t\t\t\t\tData: b[:i+3],\n\t\t\t\t\tRaw:  p.Range(b[:i+3]),\n\t\t\t\t}), b[i+3:], nil\n\t\t\t}\n\n\t\t\treturn invalidReference, nil, NewParserError(b[i:i+1], \"unexpected character 'n' while scanning for a number\")\n\t\t}\n\n\t\tbreak\n\t}\n\n\tif i == 0 {\n\t\treturn invalidReference, b, NewParserError(b, \"incomplete number\")\n\t}\n\n\tkind := Integer\n\n\tif isFloat {\n\t\tkind = Float\n\t}\n\n\treturn p.builder.Push(Node{\n\t\tKind: kind,\n\t\tData: b[:i],\n\t\tRaw:  p.Range(b[:i]),\n\t}), b[i:], nil\n}\n\nfunc isDigit(r byte) bool {\n\treturn r >= '0' && r <= '9'\n}\n\ntype validRuneFn func(r byte) bool\n\nfunc isValidHexRune(r byte) bool {\n\treturn r >= 'a' && r <= 'f' ||\n\t\tr >= 'A' && r <= 'F' ||\n\t\tr >= '0' && r <= '9' ||\n\t\tr == '_'\n}\n\nfunc isValidOctalRune(r byte) bool {\n\treturn r >= '0' && r <= '7' || r == '_'\n}\n\nfunc isValidBinaryRune(r byte) bool {\n\treturn r == '0' || r == '1' || r == '_'\n}\n\nfunc expect(x byte, b []byte) ([]byte, error) {\n\tif len(b) == 0 {\n\t\treturn nil, NewParserError(b, \"expected character %c but the document ended here\", x)\n\t}\n\n\tif b[0] != x {\n\t\treturn nil, NewParserError(b[0:1], \"expected character %c\", x)\n\t}\n\n\treturn b[1:], nil\n}\n"
  },
  {
    "path": "gossh/toml/unstable/scanner.go",
    "content": "package unstable\n\nimport \"gossh/toml/internal/characters\"\n\nfunc scanFollows(b []byte, pattern string) bool {\n\tn := len(pattern)\n\n\treturn len(b) >= n && string(b[:n]) == pattern\n}\n\nfunc scanFollowsMultilineBasicStringDelimiter(b []byte) bool {\n\treturn scanFollows(b, `\"\"\"`)\n}\n\nfunc scanFollowsMultilineLiteralStringDelimiter(b []byte) bool {\n\treturn scanFollows(b, `'''`)\n}\n\nfunc scanFollowsTrue(b []byte) bool {\n\treturn scanFollows(b, `true`)\n}\n\nfunc scanFollowsFalse(b []byte) bool {\n\treturn scanFollows(b, `false`)\n}\n\nfunc scanFollowsInf(b []byte) bool {\n\treturn scanFollows(b, `inf`)\n}\n\nfunc scanFollowsNan(b []byte) bool {\n\treturn scanFollows(b, `nan`)\n}\n\nfunc scanUnquotedKey(b []byte) ([]byte, []byte) {\n\t// unquoted-key = 1*( ALPHA / DIGIT / %x2D / %x5F ) ; A-Z / a-z / 0-9 / - / _\n\tfor i := 0; i < len(b); i++ {\n\t\tif !isUnquotedKeyChar(b[i]) {\n\t\t\treturn b[:i], b[i:]\n\t\t}\n\t}\n\n\treturn b, b[len(b):]\n}\n\nfunc isUnquotedKeyChar(r byte) bool {\n\treturn (r >= 'A' && r <= 'Z') || (r >= 'a' && r <= 'z') || (r >= '0' && r <= '9') || r == '-' || r == '_'\n}\n\nfunc scanLiteralString(b []byte) ([]byte, []byte, error) {\n\t// literal-string = apostrophe *literal-char apostrophe\n\t// apostrophe = %x27 ; ' apostrophe\n\t// literal-char = %x09 / %x20-26 / %x28-7E / non-ascii\n\tfor i := 1; i < len(b); {\n\t\tswitch b[i] {\n\t\tcase '\\'':\n\t\t\treturn b[:i+1], b[i+1:], nil\n\t\tcase '\\n', '\\r':\n\t\t\treturn nil, nil, NewParserError(b[i:i+1], \"literal strings cannot have new lines\")\n\t\t}\n\t\tsize := characters.Utf8ValidNext(b[i:])\n\t\tif size == 0 {\n\t\t\treturn nil, nil, NewParserError(b[i:i+1], \"invalid character\")\n\t\t}\n\t\ti += size\n\t}\n\n\treturn nil, nil, NewParserError(b[len(b):], \"unterminated literal string\")\n}\n\nfunc scanMultilineLiteralString(b []byte) ([]byte, []byte, error) {\n\t// ml-literal-string = ml-literal-string-delim [ newline ] ml-literal-body\n\t// ml-literal-string-delim\n\t// ml-literal-string-delim = 3apostrophe\n\t// ml-literal-body = *mll-content *( mll-quotes 1*mll-content ) [ mll-quotes ]\n\t//\n\t// mll-content = mll-char / newline\n\t// mll-char = %x09 / %x20-26 / %x28-7E / non-ascii\n\t// mll-quotes = 1*2apostrophe\n\tfor i := 3; i < len(b); {\n\t\tswitch b[i] {\n\t\tcase '\\'':\n\t\t\tif scanFollowsMultilineLiteralStringDelimiter(b[i:]) {\n\t\t\t\ti += 3\n\n\t\t\t\t// At that point we found 3 apostrophe, and i is the\n\t\t\t\t// index of the byte after the third one. The scanner\n\t\t\t\t// needs to be eager, because there can be an extra 2\n\t\t\t\t// apostrophe that can be accepted at the end of the\n\t\t\t\t// string.\n\n\t\t\t\tif i >= len(b) || b[i] != '\\'' {\n\t\t\t\t\treturn b[:i], b[i:], nil\n\t\t\t\t}\n\t\t\t\ti++\n\n\t\t\t\tif i >= len(b) || b[i] != '\\'' {\n\t\t\t\t\treturn b[:i], b[i:], nil\n\t\t\t\t}\n\t\t\t\ti++\n\n\t\t\t\tif i < len(b) && b[i] == '\\'' {\n\t\t\t\t\treturn nil, nil, NewParserError(b[i-3:i+1], \"''' not allowed in multiline literal string\")\n\t\t\t\t}\n\n\t\t\t\treturn b[:i], b[i:], nil\n\t\t\t}\n\t\tcase '\\r':\n\t\t\tif len(b) < i+2 {\n\t\t\t\treturn nil, nil, NewParserError(b[len(b):], `need a \\n after \\r`)\n\t\t\t}\n\t\t\tif b[i+1] != '\\n' {\n\t\t\t\treturn nil, nil, NewParserError(b[i:i+2], `need a \\n after \\r`)\n\t\t\t}\n\t\t\ti += 2 // skip the \\n\n\t\t\tcontinue\n\t\t}\n\t\tsize := characters.Utf8ValidNext(b[i:])\n\t\tif size == 0 {\n\t\t\treturn nil, nil, NewParserError(b[i:i+1], \"invalid character\")\n\t\t}\n\t\ti += size\n\t}\n\n\treturn nil, nil, NewParserError(b[len(b):], `multiline literal string not terminated by '''`)\n}\n\nfunc scanWindowsNewline(b []byte) ([]byte, []byte, error) {\n\tconst lenCRLF = 2\n\tif len(b) < lenCRLF {\n\t\treturn nil, nil, NewParserError(b, \"windows new line expected\")\n\t}\n\n\tif b[1] != '\\n' {\n\t\treturn nil, nil, NewParserError(b, `windows new line should be \\r\\n`)\n\t}\n\n\treturn b[:lenCRLF], b[lenCRLF:], nil\n}\n\nfunc scanWhitespace(b []byte) ([]byte, []byte) {\n\tfor i := 0; i < len(b); i++ {\n\t\tswitch b[i] {\n\t\tcase ' ', '\\t':\n\t\t\tcontinue\n\t\tdefault:\n\t\t\treturn b[:i], b[i:]\n\t\t}\n\t}\n\n\treturn b, b[len(b):]\n}\n\nfunc scanComment(b []byte) ([]byte, []byte, error) {\n\t// comment-start-symbol = %x23 ; #\n\t// non-ascii = %x80-D7FF / %xE000-10FFFF\n\t// non-eol = %x09 / %x20-7F / non-ascii\n\t//\n\t// comment = comment-start-symbol *non-eol\n\n\tfor i := 1; i < len(b); {\n\t\tif b[i] == '\\n' {\n\t\t\treturn b[:i], b[i:], nil\n\t\t}\n\t\tif b[i] == '\\r' {\n\t\t\tif i+1 < len(b) && b[i+1] == '\\n' {\n\t\t\t\treturn b[:i+1], b[i+1:], nil\n\t\t\t}\n\t\t\treturn nil, nil, NewParserError(b[i:i+1], \"invalid character in comment\")\n\t\t}\n\t\tsize := characters.Utf8ValidNext(b[i:])\n\t\tif size == 0 {\n\t\t\treturn nil, nil, NewParserError(b[i:i+1], \"invalid character in comment\")\n\t\t}\n\n\t\ti += size\n\t}\n\n\treturn b, b[len(b):], nil\n}\n\nfunc scanBasicString(b []byte) ([]byte, bool, []byte, error) {\n\t// basic-string = quotation-mark *basic-char quotation-mark\n\t// quotation-mark = %x22            ; \"\n\t// basic-char = basic-unescaped / escaped\n\t// basic-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii\n\t// escaped = escape escape-seq-char\n\tescaped := false\n\ti := 1\n\n\tfor ; i < len(b); i++ {\n\t\tswitch b[i] {\n\t\tcase '\"':\n\t\t\treturn b[:i+1], escaped, b[i+1:], nil\n\t\tcase '\\n', '\\r':\n\t\t\treturn nil, escaped, nil, NewParserError(b[i:i+1], \"basic strings cannot have new lines\")\n\t\tcase '\\\\':\n\t\t\tif len(b) < i+2 {\n\t\t\t\treturn nil, escaped, nil, NewParserError(b[i:i+1], \"need a character after \\\\\")\n\t\t\t}\n\t\t\tescaped = true\n\t\t\ti++ // skip the next character\n\t\t}\n\t}\n\n\treturn nil, escaped, nil, NewParserError(b[len(b):], `basic string not terminated by \"`)\n}\n\nfunc scanMultilineBasicString(b []byte) ([]byte, bool, []byte, error) {\n\t// ml-basic-string = ml-basic-string-delim [ newline ] ml-basic-body\n\t// ml-basic-string-delim\n\t// ml-basic-string-delim = 3quotation-mark\n\t// ml-basic-body = *mlb-content *( mlb-quotes 1*mlb-content ) [ mlb-quotes ]\n\t//\n\t// mlb-content = mlb-char / newline / mlb-escaped-nl\n\t// mlb-char = mlb-unescaped / escaped\n\t// mlb-quotes = 1*2quotation-mark\n\t// mlb-unescaped = wschar / %x21 / %x23-5B / %x5D-7E / non-ascii\n\t// mlb-escaped-nl = escape ws newline *( wschar / newline )\n\n\tescaped := false\n\ti := 3\n\n\tfor ; i < len(b); i++ {\n\t\tswitch b[i] {\n\t\tcase '\"':\n\t\t\tif scanFollowsMultilineBasicStringDelimiter(b[i:]) {\n\t\t\t\ti += 3\n\n\t\t\t\t// At that point we found 3 apostrophe, and i is the\n\t\t\t\t// index of the byte after the third one. The scanner\n\t\t\t\t// needs to be eager, because there can be an extra 2\n\t\t\t\t// apostrophe that can be accepted at the end of the\n\t\t\t\t// string.\n\n\t\t\t\tif i >= len(b) || b[i] != '\"' {\n\t\t\t\t\treturn b[:i], escaped, b[i:], nil\n\t\t\t\t}\n\t\t\t\ti++\n\n\t\t\t\tif i >= len(b) || b[i] != '\"' {\n\t\t\t\t\treturn b[:i], escaped, b[i:], nil\n\t\t\t\t}\n\t\t\t\ti++\n\n\t\t\t\tif i < len(b) && b[i] == '\"' {\n\t\t\t\t\treturn nil, escaped, nil, NewParserError(b[i-3:i+1], `\"\"\" not allowed in multiline basic string`)\n\t\t\t\t}\n\n\t\t\t\treturn b[:i], escaped, b[i:], nil\n\t\t\t}\n\t\tcase '\\\\':\n\t\t\tif len(b) < i+2 {\n\t\t\t\treturn nil, escaped, nil, NewParserError(b[len(b):], \"need a character after \\\\\")\n\t\t\t}\n\t\t\tescaped = true\n\t\t\ti++ // skip the next character\n\t\tcase '\\r':\n\t\t\tif len(b) < i+2 {\n\t\t\t\treturn nil, escaped, nil, NewParserError(b[len(b):], `need a \\n after \\r`)\n\t\t\t}\n\t\t\tif b[i+1] != '\\n' {\n\t\t\t\treturn nil, escaped, nil, NewParserError(b[i:i+2], `need a \\n after \\r`)\n\t\t\t}\n\t\t\ti++ // skip the \\n\n\t\t}\n\t}\n\n\treturn nil, escaped, nil, NewParserError(b[len(b):], `multiline basic string not terminated by \"\"\"`)\n}\n"
  },
  {
    "path": "gossh/toml/unstable/unmarshaler.go",
    "content": "package unstable\n\n// The Unmarshaler interface may be implemented by types to customize their\n// behavior when being unmarshaled from a TOML document.\ntype Unmarshaler interface {\n\tUnmarshalTOML(value *Node) error\n}\n"
  },
  {
    "path": "gossh/webroot/assets/About-BpAaEtx1.js",
    "content": "import{_ as r,C as a,b as o,w as n,W as i,a as u,f as e,e as _,X as b}from\"./index-jH42E5tC.js\";const d={},p={style:{position:\"absolute\",width:\"100%\",height:\"100%\",\"text-align\":\"center\"}};function f(m,t){const l=b,s=i;return u(),a(\"div\",p,[o(s,{icon:\"error\",title:\"about\",subTitle:\"兄弟,这是我的信息\"},{extra:n(()=>[t[1]||(t[1]=e(\"h1\",null,\"GoWebSSH\",-1)),t[2]||(t[2]=e(\"br\",null,null,-1)),t[3]||(t[3]=e(\"br\",null,null,-1)),o(l,{type:\"primary\",href:\"https://github.com/o8oo8o/\",target:\"_blank\"},{default:n(()=>t[0]||(t[0]=[_(\"GitHub\")])),_:1})]),_:1})])}const x=r(d,[[\"render\",f]]);export{x as default};\n"
  },
  {
    "path": "gossh/webroot/assets/About-CLFeE-IU.css",
    "content": ".el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}\n"
  },
  {
    "path": "gossh/webroot/assets/Manage-BTEK3ejV.css",
    "content": ".el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:\"\";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:\"\";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{background-color:var(--el-bg-color-overlay);border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#fff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:\"\";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.manage-container[data-v-7344cd3d]{background-color:#fff}\n"
  },
  {
    "path": "gossh/webroot/assets/Manage-D_HsZWaT.js",
    "content": "import{d as L,r as I,o as z,a as E,c as A,w as l,b as e,u as n,e as r,f as W,g as C,E as V,h,i as q,j as le,k as O,l as j,m as G,n as K,p as Q,q as X,s as Z,t as ee,v as oe,x as ne,y as J,z as P,A as R,B as be,C as te,D as ye,F as ge,G as ie,H as de,I as we,J as ve,K as xe,L as Ve,M as Ce,N as ke,O as Ue,_ as Ye}from\"./index-jH42E5tC.js\";/* empty css                */const $e={class:\"dialog-footer\"},De=L({__name:\"Account\",setup(F){let i=I({mode:0,user_dialog_visible:!1,active_name:\"accoutManage\",user_list:Array(),is_admin:!0}),t=I({id:0,name:\"\",pwd:\"\",desc_info:\"\",is_admin:\"N\",is_enable:\"Y\",is_root:\"N\",expiry_at:new Date(2050,0,0,0,0,0)});function w(d=0,o=1e4){C.get(`/api/user?offset=${d}&limit=${o}`).then(m=>{m.data.code===0?i.user_list=m.data.data:V.error(\"获取用户列表错误\")})}function v(){t.id=0,t.name=\"\",t.pwd=\"\",t.desc_info=\"\",t.is_admin=\"N\",t.is_enable=\"Y\",t.is_root=\"N\",t.expiry_at=new Date(2050,0,0,0,0,0),i.user_dialog_visible=!0}function f(d){t.id=d.id,t.name=d.name,t.pwd=d.pwd,t.desc_info=d.desc_info,t.is_admin=d.is_admin,t.is_enable=d.is_enable,t.is_root=d.is_root,t.expiry_at=d.expiry_at,i.user_dialog_visible=!0}function u(){return{id:t.id,name:t.name,pwd:t.pwd,desc_info:t.desc_info,is_admin:t.is_admin,is_enable:t.is_enable,is_root:t.is_root,expiry_at:P(t.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\")}}function Y(){C.put(\"/api/user\",u()).then(d=>{d.data.code===0?i.user_list=d.data.data:V.error(\"更新用户错误,请检查输入\")})}function _(d){C.delete(`/api/user/${d}`).then(o=>{o.data.code===0?i.user_list=o.data.data:V.error(\"删除用户错误\")})}function $(){C.post(\"/api/user\",u()).then(d=>{d.data.code===0?i.user_list=d.data.data:V.error(\"创建用户错误,请检查输入\")})}function B(){t.id===0?$():Y(),t.id=0,t.name=\"\",t.pwd=\"\",t.desc_info=\"\",t.is_admin=\"N\",t.is_enable=\"Y\",t.is_root=\"N\",t.expiry_at=new Date(2050,0,0,0,0,0),i.user_dialog_visible=!1}return z(()=>{w()}),(d,o)=>{const m=h,c=q,T=le,p=O,a=j,k=G,U=K,b=Q,x=X,D=Z,y=ee,H=oe,N=ne,S=J;return E(),A(S,{label:\"Web账号配置\",name:\"accoutManage\"},{default:l(()=>[e(k,null,{default:l(()=>[e(a,null,{default:l(()=>[e(p,{data:n(i).user_list,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(m,{fixed:\"\",sortable:\"\",prop:\"name\",label:\"用户名\"}),e(m,{sortable:\"\",prop:\"desc_info\",label:\"备注信息\",width:\"200\"}),e(m,{sortable:\"\",prop:\"is_admin\",label:\"是否管理员\"}),e(m,{sortable:\"\",prop:\"is_enable\",label:\"是否启用\"}),e(m,{sortable:\"\",prop:\"expiry_at\",label:\"过期时间\",width:\"180\"}),e(m,{fixed:\"right\",label:\"操作\"},{header:l(()=>[e(c,{type:\"primary\",onClick:v},{default:l(()=>o[9]||(o[9]=[r(\"新增\")])),_:1}),e(c,{type:\"primary\",onClick:o[0]||(o[0]=s=>w(0,1e4))},{default:l(()=>o[10]||(o[10]=[r(\"刷新\")])),_:1})]),default:l(s=>[e(c,{type:\"success\",onClick:M=>f(s.row)},{default:l(()=>o[11]||(o[11]=[r(\"编辑\")])),_:2},1032,[\"onClick\"]),e(T,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:M=>_(s.row.id)},{reference:l(()=>[e(c,{type:\"danger\"},{default:l(()=>o[12]||(o[12]=[r(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"])]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1}),e(N,{title:\"用户信息\",modelValue:n(i).user_dialog_visible,\"onUpdate:modelValue\":o[8]||(o[8]=s=>n(i).user_dialog_visible=s),width:\"60%\"},{footer:l(()=>[W(\"span\",$e,[e(c,{onClick:o[7]||(o[7]=s=>n(i).user_dialog_visible=!1)},{default:l(()=>o[17]||(o[17]=[r(\"取消\")])),_:1}),e(c,{type:\"success\",onClick:B},{default:l(()=>o[18]||(o[18]=[r(\"保存\")])),_:1})])]),default:l(()=>[e(H,{\"label-width\":\"80px\"},{default:l(()=>[e(b,{label:\"备注名\",prop:\"desc_info\"},{default:l(()=>[e(U,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).desc_info,\"onUpdate:modelValue\":o[1]||(o[1]=s=>n(t).desc_info=s),modelModifiers:{trim:!0},\"show-word-limit\":\"\",placeholder:\"请输入备注\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"用户名\",prop:\"name\"},{default:l(()=>[e(U,{modelValue:n(t).name,\"onUpdate:modelValue\":o[2]||(o[2]=s=>n(t).name=s),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"30\",\"show-word-limit\":\"\",placeholder:\"请输入用户名\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"密码\",prop:\"pwd\"},{default:l(()=>[e(U,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).pwd,\"onUpdate:modelValue\":o[3]||(o[3]=s=>n(t).pwd=s),modelModifiers:{trim:!0},type:\"passrowd\",\"show-password\":\"\",\"show-word-limit\":\"\",placeholder:\"用户密码\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"管理员\",prop:\"is_admin\"},{default:l(()=>[e(D,{modelValue:n(t).is_admin,\"onUpdate:modelValue\":o[4]||(o[4]=s=>n(t).is_admin=s),id:\"is_admin\"},{default:l(()=>[e(x,{value:\"Y\"},{default:l(()=>o[13]||(o[13]=[r(\"是\")])),_:1}),e(x,{value:\"N\"},{default:l(()=>o[14]||(o[14]=[r(\"否\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),e(b,{label:\"启用\",prop:\"is_enable\"},{default:l(()=>[e(D,{modelValue:n(t).is_enable,\"onUpdate:modelValue\":o[5]||(o[5]=s=>n(t).is_enable=s),id:\"is_enable\"},{default:l(()=>[e(x,{value:\"Y\"},{default:l(()=>o[15]||(o[15]=[r(\"是\")])),_:1}),e(x,{value:\"N\"},{default:l(()=>o[16]||(o[16]=[r(\"否\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),e(b,{label:\"过期时间\"},{default:l(()=>[e(y,{modelValue:n(t).expiry_at,\"onUpdate:modelValue\":o[6]||(o[6]=s=>n(t).expiry_at=s),type:\"datetime\",placeholder:\"选择账号过期时间\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1})}}}),Ne=L({__name:\"Connect\",setup(F){let i=I({host_list:Array(),is_admin:!0});function t(v,f){try{C.post(`/api/ssh/disconnect?session_id=${f.session_id}`)}catch(u){console.log(u)}}function w(){if(i.is_admin){var v=new EventSource(`/api/conn_manage/online_client/?Authorization=${localStorage.getItem(\"token\")}`);v.onmessage=function(f){let u=JSON.parse(f.data);u.code===0&&(i.is_admin=!0,i.host_list=u.data)}}}return z(()=>{w()}),(v,f)=>{const u=h,Y=q,_=O,$=j,B=G,d=J;return E(),A(d,{label:\"连接状态\",name:\"connectInfo\"},{default:l(()=>[e(B,null,{default:l(()=>[e($,null,{default:l(()=>[e(_,{data:n(i).host_list,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(u,{fixed:\"\",prop:\"name\",label:\"名称\"}),e(u,{fixed:\"\",prop:\"address\",label:\"服务器地址\",width:\"150\"}),e(u,{prop:\"port\",label:\"端口\",width:\"60\"}),e(u,{prop:\"user\",label:\"用户名\"}),e(u,{prop:\"client_ip\",label:\"客户端IP\"}),e(u,{prop:\"session_id\",label:\"会话ID\",width:\"180\"}),e(u,{prop:\"last_active_time\",label:\"最后活跃时间\",width:\"165\"}),e(u,{prop:\"start_time\",label:\"连接创建时间\",width:\"165\"}),e(u,{fixed:\"right\",label:\"操作\"},{default:l(o=>[e(Y,{type:\"danger\",onClick:m=>t(o.$index,o.row)},{default:l(()=>f[0]||(f[0]=[r(\"断开\")])),_:2},1032,[\"onClick\"])]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1})]),_:1})}}}),Me={key:0},Be={key:1},Ee={class:\"dialog-footer\"},Ie=L({__name:\"NetFilter\",setup(F){let i=I({mode:0,net_filter_dialog_visible:!1,net_filter_list:Array(),policy_conf:\"N\"}),t=I({id:0,name:\"\",cidr:\"\",net_policy:\"N\",policy_no:32768,expiry_at:new Date(2050,0,0,0,0,0)});const w=R(\"\"),v=R(\"ALL\"),f=be(()=>i.net_filter_list.filter(p=>v.value===\"ALL\"?!w.value||p.name.toLowerCase().includes(w.value.toLowerCase()):p.net_policy===v.value&&p.name.toLowerCase().includes(w.value.toLowerCase())));function u(p=0,a=1e4){C.get(`/api/net_filter?offset=${p}&limit=${a}`).then(k=>{k.data.code===0?i.net_filter_list=k.data.data:V.error(\"获取策略列表错误\")})}function Y(){t.id=0,t.name=\"\",t.cidr=\"\",t.net_policy=\"Y\",t.policy_no=32768,t.expiry_at=new Date(2050,0,0,0,0,0),i.net_filter_dialog_visible=!0}function _(p){t.id=p.id,t.name=p.name,t.cidr=p.cidr,t.net_policy=p.net_policy,t.policy_no=p.policy_no,t.expiry_at=p.expiry_at,i.net_filter_dialog_visible=!0}function $(){return{id:t.id,name:t.name,cidr:t.cidr,net_policy:t.net_policy,policy_no:t.policy_no,expiry_at:P(t.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\")}}function B(){C.put(\"/api/net_filter\",$()).then(p=>{p.data.code===0?i.net_filter_list=p.data.data:V.error(\"更新策略错误,请检查输入\")})}function d(p){C.delete(`/api/net_filter/${p}`).then(a=>{a.data.code===0?i.net_filter_list=a.data.data:V.error(\"删除策略错误\")})}function o(){C.post(\"/api/net_filter\",$()).then(p=>{p.data.code===0?i.net_filter_list=p.data.data:V.error(\"创建策略错误,请检查输入\")})}function m(){t.id===0?o():B(),t.id=0,t.name=\"\",t.cidr=\"\",t.net_policy=\"Y\",t.policy_no=32768,t.expiry_at=new Date(2050,0,0,0,0,0),i.net_filter_dialog_visible=!1}function c(){C.get(\"/api/policy_conf/1\").then(p=>{p.data.code===0?i.policy_conf=p.data.data.net_policy:V.error(\"获取策略配置错误\")})}function T(){C.put(\"/api/policy_conf\",{id:1,net_policy:i.policy_conf}).then(p=>{p.data.code===0?(i.policy_conf=p.data.data.net_policy,V.success(\"更新策略成功\")):V.error(\"更新策略失败\")})}return z(()=>{c(),u()}),(p,a)=>{const k=ye,U=ge,b=K,x=Q,D=ie,y=X,H=Z,N=q,S=le,s=j,M=h,ae=de,se=O,re=G,_e=we,pe=ee,ue=oe,me=ne,fe=J;return E(),A(fe,{label:\"访问控制\",name:\"netFilter\"},{default:l(()=>[e(re,null,{default:l(()=>[e(s,null,{default:l(()=>[e(D,{span:8,style:{\"text-align\":\"right\",height:\"24px\"}},{default:l(()=>[e(x,{label:\"搜索:\"},{default:l(()=>[e(b,{modelValue:w.value,\"onUpdate:modelValue\":a[1]||(a[1]=g=>w.value=g),style:{\"max-width\":\"400px\"},placeholder:\"请输入策略名称\",class:\"input-with-select\"},{prepend:l(()=>[e(U,{modelValue:v.value,\"onUpdate:modelValue\":a[0]||(a[0]=g=>v.value=g),placeholder:\"选择策略\",style:{width:\"115px\"}},{default:l(()=>[e(k,{label:\"全部\",value:\"ALL\"}),e(k,{label:\"允许\",value:\"Y\"}),e(k,{label:\"拒绝\",value:\"N\"})]),_:1},8,[\"modelValue\"])]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),e(D,{span:2}),e(D,{span:6,style:{height:\"24px\"}},{default:l(()=>[e(x,{label:\"默认策略\"},{default:l(()=>[e(H,{modelValue:n(i).policy_conf,\"onUpdate:modelValue\":a[2]||(a[2]=g=>n(i).policy_conf=g)},{default:l(()=>[e(y,{value:\"N\"},{default:l(()=>a[11]||(a[11]=[r(\"拒绝\")])),_:1}),e(y,{value:\"Y\"},{default:l(()=>a[12]||(a[12]=[r(\"允许\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),e(D,{span:2,style:{height:\"24px\"}},{default:l(()=>[e(x,{label:\"\"},{default:l(()=>[e(S,{confirmButtonText:\"确定\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定修改策略,修改后可能导致不能连接?\",onConfirm:T},{reference:l(()=>[e(N,{type:\"danger\"},{default:l(()=>a[13]||(a[13]=[r(\"保存策略\")])),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),e(s,{style:{\"margin-top\":\"20px\"}},{default:l(()=>[e(se,{data:f.value,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(M,{fixed:\"\",sortable:\"\",prop:\"name\",label:\"名称\",width:\"200\"}),e(M,{sortable:\"\",prop:\"cidr\",label:\"CIDR\"}),e(M,{sortable:\"\",prop:\"net_policy\",label:\"策略\"},{default:l(g=>[g.row.net_policy===\"Y\"?(E(),te(\"div\",Me,[e(ae,{type:\"success\"},{default:l(()=>a[14]||(a[14]=[r(\"允许\")])),_:1})])):(E(),te(\"div\",Be,[e(ae,{type:\"danger\"},{default:l(()=>a[15]||(a[15]=[r(\"拒绝\")])),_:1})]))]),_:1}),e(M,{sortable:\"\",prop:\"policy_no\",label:\"策略编号\",width:\"120\"}),e(M,{sortable:\"\",prop:\"expiry_at\",label:\"过期时间\",width:\"180\"}),e(M,{fixed:\"right\",label:\"操作\"},{header:l(()=>[e(N,{type:\"primary\",onClick:Y},{default:l(()=>a[16]||(a[16]=[r(\"新增\")])),_:1}),e(N,{type:\"primary\",onClick:a[3]||(a[3]=g=>u(0,1e4))},{default:l(()=>a[17]||(a[17]=[r(\"刷新\")])),_:1})]),default:l(g=>[e(N,{type:\"success\",onClick:ce=>_(g.row)},{default:l(()=>a[18]||(a[18]=[r(\"编辑\")])),_:2},1032,[\"onClick\"]),e(S,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:ce=>d(g.row.id)},{reference:l(()=>[e(N,{type:\"danger\"},{default:l(()=>a[19]||(a[19]=[r(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"])]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1}),e(me,{title:\"策略配置\",modelValue:n(i).net_filter_dialog_visible,\"onUpdate:modelValue\":a[10]||(a[10]=g=>n(i).net_filter_dialog_visible=g),width:\"60%\"},{footer:l(()=>[W(\"span\",Ee,[e(N,{onClick:a[9]||(a[9]=g=>n(i).net_filter_dialog_visible=!1)},{default:l(()=>a[22]||(a[22]=[r(\"取消\")])),_:1}),e(N,{type:\"success\",onClick:m},{default:l(()=>a[23]||(a[23]=[r(\"保存\")])),_:1})])]),default:l(()=>[e(ue,{\"label-width\":\"80px\"},{default:l(()=>[e(x,{label:\"名称\",prop:\"name\"},{default:l(()=>[e(b,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).name,\"onUpdate:modelValue\":a[4]||(a[4]=g=>n(t).name=g),modelModifiers:{trim:!0},\"show-word-limit\":\"\",placeholder:\"请输入名称\"},null,8,[\"modelValue\"])]),_:1}),e(x,{label:\"CIDR\",prop:\"cidr\"},{default:l(()=>[e(b,{modelValue:n(t).cidr,\"onUpdate:modelValue\":a[5]||(a[5]=g=>n(t).cidr=g),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"90\",\"show-word-limit\":\"\",placeholder:\"请输入CIDR,举例:192.168.1.0/24 或 fe80::acbc:1234:5678::/64\"},null,8,[\"modelValue\"])]),_:1}),e(x,{label:\"策略\"},{default:l(()=>[e(H,{modelValue:n(t).net_policy,\"onUpdate:modelValue\":a[6]||(a[6]=g=>n(t).net_policy=g)},{default:l(()=>[e(y,{value:\"Y\"},{default:l(()=>a[20]||(a[20]=[r(\"允许\")])),_:1}),e(y,{value:\"N\"},{default:l(()=>a[21]||(a[21]=[r(\"拒绝\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),e(x,{label:\"策略编号\"},{default:l(()=>[e(_e,{modelValue:n(t).policy_no,\"onUpdate:modelValue\":a[7]||(a[7]=g=>n(t).policy_no=g),min:1,max:65535},null,8,[\"modelValue\"])]),_:1}),e(x,{label:\"过期时间\"},{default:l(()=>[e(pe,{modelValue:n(t).expiry_at,\"onUpdate:modelValue\":a[8]||(a[8]=g=>n(t).expiry_at=g),type:\"datetime\",placeholder:\"选择策略过期时间\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1})}}}),Te={key:0},He={key:1},Se=L({__name:\"LoginAudit\",setup(F){const i=R(1),t=R(10),w=R(0),v=R([new Date(2020,1,1,0,0,0),new Date(2049,12,31,0,0,0)]);let f=I({login_audit_list:Array(),is_success:\"N\",client_ip:\"\",name:\"\"});function u(){let Y={occur_begin:P(v.value[0]).format(\"YYYY-MM-DD HH:mm:ss\"),occur_end:P(v.value[1]).format(\"YYYY-MM-DD HH:mm:ss\"),name:f.name,is_success:f.is_success,client_ip:f.client_ip,offset:i.value*t.value-t.value,limit:t.value};C.post(\"/api/login_audit\",Y).then(_=>{_.data.code===0?(f.login_audit_list=_.data.data,w.value=_.data.count):V.error(\"获取登录审计信息错误\")})}return z(()=>{u()}),(Y,_)=>{const $=X,B=Z,d=Q,o=ie,m=ee,c=K,T=q,p=j,a=h,k=de,U=O,b=ve,x=G,D=J;return E(),A(D,{label:\"Web登录审计\",name:\"loginAudit\"},{default:l(()=>[e(x,null,{default:l(()=>[e(p,null,{default:l(()=>[e(o,{span:4,style:{height:\"24px\"}},{default:l(()=>[e(d,{label:\"登录状态\"},{default:l(()=>[e(B,{modelValue:n(f).is_success,\"onUpdate:modelValue\":_[0]||(_[0]=y=>n(f).is_success=y)},{default:l(()=>[e($,{value:\"N\"},{default:l(()=>_[6]||(_[6]=[r(\"失败\")])),_:1}),e($,{value:\"Y\"},{default:l(()=>_[7]||(_[7]=[r(\"成功\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),_[9]||(_[9]=r(\"      \")),e(o,{span:8,style:{height:\"24px\"}},{default:l(()=>[e(d,{label:\"时间范围\"},{default:l(()=>[e(m,{modelValue:v.value,\"onUpdate:modelValue\":_[1]||(_[1]=y=>v.value=y),type:\"datetimerange\",\"range-separator\":\"To\",\"start-placeholder\":\"起始时间\",\"end-placeholder\":\"结束时间\"},null,8,[\"modelValue\"])]),_:1})]),_:1}),_[10]||(_[10]=r(\"      \")),e(o,{span:4,style:{height:\"24px\"}},{default:l(()=>[e(d,{label:\"用户名\"},{default:l(()=>[e(c,{modelValue:n(f).name,\"onUpdate:modelValue\":_[2]||(_[2]=y=>n(f).name=y)},null,8,[\"modelValue\"])]),_:1})]),_:1}),_[11]||(_[11]=r(\"      \")),e(o,{span:4,style:{\"text-align\":\"right\",height:\"24px\"}},{default:l(()=>[e(d,{label:\"客户端IP\"},{default:l(()=>[e(c,{modelValue:n(f).client_ip,\"onUpdate:modelValue\":_[3]||(_[3]=y=>n(f).client_ip=y)},null,8,[\"modelValue\"])]),_:1})]),_:1}),e(o,{span:2,style:{\"text-align\":\"right\",height:\"24px\"}},{default:l(()=>[e(T,{type:\"primary\",onClick:u},{default:l(()=>_[8]||(_[8]=[r(\"搜索\")])),_:1})]),_:1})]),_:1}),e(p,{style:{\"margin-top\":\"20px\"}},{default:l(()=>[e(U,{data:n(f).login_audit_list,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(a,{sortable:\"\",prop:\"id\",label:\"ID\",width:\"150\"}),e(a,{sortable:\"\",prop:\"name\",label:\"用户名\"}),e(a,{sortable:\"\",prop:\"pwd\",label:\"密码\"}),e(a,{sortable:\"\",prop:\"client_ip\",label:\"客户端\"}),e(a,{sortable:\"\",prop:\"user_agent\",label:\"userAgent\"}),e(a,{sortable:\"\",prop:\"err_msg\",label:\"错误信息\"}),e(a,{sortable:\"\",prop:\"is_success\",label:\"状态\"},{default:l(y=>[y.row.is_success===\"Y\"?(E(),te(\"div\",Te,[e(k,{type:\"success\"},{default:l(()=>_[12]||(_[12]=[r(\"成功\")])),_:1})])):(E(),te(\"div\",He,[e(k,{type:\"danger\"},{default:l(()=>_[13]||(_[13]=[r(\"失败\")])),_:1})]))]),_:1}),e(a,{sortable:\"\",prop:\"occur_at\",label:\"发生时间\"})]),_:1},8,[\"data\"])]),_:1}),e(p,{style:{\"margin-top\":\"20px\"}},{default:l(()=>[e(b,{\"current-page\":i.value,\"onUpdate:currentPage\":_[4]||(_[4]=y=>i.value=y),\"page-size\":t.value,\"onUpdate:pageSize\":_[5]||(_[5]=y=>t.value=y),\"page-sizes\":[10,20,50,100],background:!0,layout:\"total, sizes, prev, pager, next, jumper\",total:w.value,onSizeChange:u,onCurrentChange:u},null,8,[\"current-page\",\"page-size\",\"total\"])]),_:1})]),_:1})]),_:1})}}}),Le={class:\"dialog-footer\"},Ae=L({__name:\"SshdUser\",setup(F){let i=I({mode:0,user_dialog_visible:!1,active_name:\"sshdUser\",user_list:Array(),is_admin:!0}),t=I({id:0,name:\"\",pwd:\"\",desc_info:\"\",is_enable:\"Y\",expiry_at:new Date(2050,0,0,0,0,0)});function w(d=0,o=1e4){C.get(`/api/sshd_user?offset=${d}&limit=${o}`).then(m=>{m.data.code===0?i.user_list=m.data.data:V.error(\"获取sshd用户列表错误\")})}function v(){t.id=0,t.name=\"\",t.pwd=\"\",t.desc_info=\"\",t.is_enable=\"Y\",t.expiry_at=new Date(2050,0,0,0,0,0),i.user_dialog_visible=!0}function f(d){t.id=d.id,t.name=d.name,t.pwd=d.pwd,t.desc_info=d.desc_info,t.is_enable=d.is_enable,t.expiry_at=d.expiry_at,i.user_dialog_visible=!0}function u(){return{id:t.id,name:t.name,pwd:t.pwd,desc_info:t.desc_info,is_enable:t.is_enable,expiry_at:P(t.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\")}}function Y(){C.put(\"/api/sshd_user\",u()).then(d=>{d.data.code===0?i.user_list=d.data.data:V.error(\"更新sshd用户错误,请检查输入\")})}function _(d){C.delete(`/api/sshd_user/${d}`).then(o=>{o.data.code===0?i.user_list=o.data.data:V.error(\"删除sshd用户错误\")})}function $(){C.post(\"/api/sshd_user\",u()).then(d=>{d.data.code===0?i.user_list=d.data.data:V.error(\"创建sshd用户错误,请检查输入\")})}function B(){t.id===0?$():Y(),t.id=0,t.name=\"\",t.pwd=\"\",t.desc_info=\"\",t.is_enable=\"Y\",t.expiry_at=new Date(2050,0,0,0,0,0),i.user_dialog_visible=!1}return z(()=>{w()}),(d,o)=>{const m=h,c=q,T=le,p=O,a=j,k=G,U=K,b=Q,x=X,D=Z,y=ee,H=oe,N=ne,S=J;return E(),A(S,{label:\"SSHD账号管理\",name:\"sshdUser\"},{default:l(()=>[e(k,null,{default:l(()=>[e(a,null,{default:l(()=>[e(p,{data:n(i).user_list,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(m,{fixed:\"\",sortable:\"\",prop:\"name\",label:\"用户名\"}),e(m,{sortable:\"\",prop:\"desc_info\",label:\"备注信息\",width:\"200\"}),e(m,{sortable:\"\",prop:\"is_enable\",label:\"是否启用\"}),e(m,{sortable:\"\",prop:\"expiry_at\",label:\"过期时间\",width:\"180\"}),e(m,{fixed:\"right\",label:\"操作\"},{header:l(()=>[e(c,{type:\"primary\",onClick:v},{default:l(()=>o[8]||(o[8]=[r(\"新增\")])),_:1}),e(c,{type:\"primary\",onClick:o[0]||(o[0]=s=>w(0,1e4))},{default:l(()=>o[9]||(o[9]=[r(\"刷新\")])),_:1})]),default:l(s=>[e(c,{type:\"success\",onClick:M=>f(s.row)},{default:l(()=>o[10]||(o[10]=[r(\"编辑\")])),_:2},1032,[\"onClick\"]),e(T,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:M=>_(s.row.id)},{reference:l(()=>[e(c,{type:\"danger\"},{default:l(()=>o[11]||(o[11]=[r(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"])]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1}),e(N,{title:\"SSHD账号信息\",modelValue:n(i).user_dialog_visible,\"onUpdate:modelValue\":o[7]||(o[7]=s=>n(i).user_dialog_visible=s),width:\"60%\"},{footer:l(()=>[W(\"span\",Le,[e(c,{onClick:o[6]||(o[6]=s=>n(i).user_dialog_visible=!1)},{default:l(()=>o[14]||(o[14]=[r(\"取消\")])),_:1}),e(c,{type:\"success\",onClick:B},{default:l(()=>o[15]||(o[15]=[r(\"保存\")])),_:1})])]),default:l(()=>[e(H,{\"label-width\":\"80px\"},{default:l(()=>[e(b,{label:\"备注名\",prop:\"desc_info\"},{default:l(()=>[e(U,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).desc_info,\"onUpdate:modelValue\":o[1]||(o[1]=s=>n(t).desc_info=s),modelModifiers:{trim:!0},\"show-word-limit\":\"\",placeholder:\"请输入备注\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"用户名\",prop:\"name\"},{default:l(()=>[e(U,{modelValue:n(t).name,\"onUpdate:modelValue\":o[2]||(o[2]=s=>n(t).name=s),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"30\",\"show-word-limit\":\"\",placeholder:\"请输入用户名\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"密码\",prop:\"pwd\"},{default:l(()=>[e(U,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).pwd,\"onUpdate:modelValue\":o[3]||(o[3]=s=>n(t).pwd=s),modelModifiers:{trim:!0},type:\"passrowd\",\"show-password\":\"\",\"show-word-limit\":\"\",placeholder:\"用户密码\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"启用\",prop:\"is_enable\"},{default:l(()=>[e(D,{modelValue:n(t).is_enable,\"onUpdate:modelValue\":o[4]||(o[4]=s=>n(t).is_enable=s),id:\"is_enable\"},{default:l(()=>[e(x,{value:\"Y\"},{default:l(()=>o[12]||(o[12]=[r(\"是\")])),_:1}),e(x,{value:\"N\"},{default:l(()=>o[13]||(o[13]=[r(\"否\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),e(b,{label:\"过期时间\"},{default:l(()=>[e(y,{modelValue:n(t).expiry_at,\"onUpdate:modelValue\":o[5]||(o[5]=s=>n(t).expiry_at=s),type:\"datetime\",placeholder:\"选择账号过期时间\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1})}}}),Fe={class:\"dialog-footer\"},Re=L({__name:\"SshdCert\",setup(F){let i=I({mode:0,cert_dialog_visible:!1,active_name:\"sshdCert\",cert_list:Array(),is_admin:!0}),t=I({id:0,name:\"\",pub_key:\"\",desc_info:\"\",is_enable:\"Y\",expiry_at:new Date(2050,0,0,0,0,0)});function w(d=0,o=1e4){C.get(`/api/sshd_cert?offset=${d}&limit=${o}`).then(m=>{m.data.code===0?i.cert_list=m.data.data:V.error(\"获取sshd证书列表错误\")})}function v(){t.id=0,t.name=\"\",t.pub_key=\"\",t.desc_info=\"\",t.is_enable=\"Y\",t.expiry_at=new Date(2050,0,0,0,0,0),i.cert_dialog_visible=!0}function f(d){t.id=d.id,t.name=d.name,t.pub_key=d.pub_key,t.desc_info=d.desc_info,t.is_enable=d.is_enable,t.expiry_at=d.expiry_at,i.cert_dialog_visible=!0}function u(){return{id:t.id,name:t.name,pub_key:t.pub_key,desc_info:t.desc_info,is_enable:t.is_enable,expiry_at:P(t.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\")}}function Y(){C.put(\"/api/sshd_cert\",u()).then(d=>{d.data.code===0?i.cert_list=d.data.data:V.error(\"更新sshd证书错误,请检查输入\")})}function _(d){C.delete(`/api/sshd_cert/${d}`).then(o=>{o.data.code===0?i.cert_list=o.data.data:V.error(\"删除sshd证书错误\")})}function $(){C.post(\"/api/sshd_cert\",u()).then(d=>{d.data.code===0?i.cert_list=d.data.data:V.error(\"创建sshd证书错误,请检查输入\")})}function B(){t.id===0?$():Y(),t.id=0,t.name=\"\",t.pub_key=\"\",t.desc_info=\"\",t.is_enable=\"Y\",t.expiry_at=new Date(2050,0,0,0,0,0),i.cert_dialog_visible=!1}return z(()=>{w()}),(d,o)=>{const m=h,c=q,T=le,p=O,a=j,k=G,U=K,b=Q,x=X,D=Z,y=ee,H=oe,N=ne,S=J;return E(),A(S,{label:\"SSHD证书管理\",name:\"sshdCert\"},{default:l(()=>[e(k,null,{default:l(()=>[e(a,null,{default:l(()=>[e(p,{data:n(i).cert_list,style:{width:\"100%\"},\"show-overflow-tooltip\":!0},{default:l(()=>[e(m,{fixed:\"\",sortable:\"\",prop:\"name\",label:\"标题\"}),e(m,{sortable:\"\",prop:\"desc_info\",label:\"备注\",width:\"200\"}),e(m,{sortable:\"\",prop:\"is_enable\",label:\"是否启用\"}),e(m,{sortable:\"\",prop:\"expiry_at\",label:\"过期时间\",width:\"180\"}),e(m,{fixed:\"right\",label:\"操作\"},{header:l(()=>[e(c,{type:\"primary\",onClick:v},{default:l(()=>o[8]||(o[8]=[r(\"新增\")])),_:1}),e(c,{type:\"primary\",onClick:o[0]||(o[0]=s=>w(0,1e4))},{default:l(()=>o[9]||(o[9]=[r(\"刷新\")])),_:1})]),default:l(s=>[e(c,{type:\"success\",onClick:M=>f(s.row)},{default:l(()=>o[10]||(o[10]=[r(\"编辑\")])),_:2},1032,[\"onClick\"]),e(T,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:M=>_(s.row.id)},{reference:l(()=>[e(c,{type:\"danger\"},{default:l(()=>o[11]||(o[11]=[r(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"])]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1}),e(N,{title:\"SSHD证书信息\",modelValue:n(i).cert_dialog_visible,\"onUpdate:modelValue\":o[7]||(o[7]=s=>n(i).cert_dialog_visible=s),width:\"80%\"},{footer:l(()=>[W(\"span\",Fe,[e(c,{onClick:o[6]||(o[6]=s=>n(i).cert_dialog_visible=!1)},{default:l(()=>o[14]||(o[14]=[r(\"取消\")])),_:1}),e(c,{type:\"success\",onClick:B},{default:l(()=>o[15]||(o[15]=[r(\"保存\")])),_:1})])]),default:l(()=>[e(H,{\"label-width\":\"80px\"},{default:l(()=>[e(b,{label:\"备注\",prop:\"desc_info\"},{default:l(()=>[e(U,{minlength:\"1\",maxlength:\"60\",modelValue:n(t).desc_info,\"onUpdate:modelValue\":o[1]||(o[1]=s=>n(t).desc_info=s),modelModifiers:{trim:!0},\"show-word-limit\":\"\",placeholder:\"请输入备注\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"标题\",prop:\"name\"},{default:l(()=>[e(U,{modelValue:n(t).name,\"onUpdate:modelValue\":o[2]||(o[2]=s=>n(t).name=s),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"30\",\"show-word-limit\":\"\",placeholder:\"请输入标题\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"公钥\",prop:\"pub_key\"},{default:l(()=>[e(U,{modelValue:n(t).pub_key,\"onUpdate:modelValue\":o[3]||(o[3]=s=>n(t).pub_key=s),modelModifiers:{trim:!0},type:\"textarea\",row:3,minlength:\"16\",placeholder:\"支持以 'ssh-rsa', 'ssh-ed25519' 开头\"},null,8,[\"modelValue\"])]),_:1}),e(b,{label:\"启用\",prop:\"is_enable\"},{default:l(()=>[e(D,{modelValue:n(t).is_enable,\"onUpdate:modelValue\":o[4]||(o[4]=s=>n(t).is_enable=s),id:\"is_enable\"},{default:l(()=>[e(x,{value:\"Y\"},{default:l(()=>o[12]||(o[12]=[r(\"是\")])),_:1}),e(x,{value:\"N\"},{default:l(()=>o[13]||(o[13]=[r(\"否\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),e(b,{label:\"过期时间\"},{default:l(()=>[e(y,{modelValue:n(t).expiry_at,\"onUpdate:modelValue\":o[5]||(o[5]=s=>n(t).expiry_at=s),type:\"datetime\",placeholder:\"选择证书过期时间\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1})}}}),Pe=L({__name:\"Manage\",setup(F){Ve(),xe();let i=I({active_name:\"connectInfo\"});return(t,w)=>{const v=Ce,f=ke,u=Ue;return E(),A(u,{class:\"manage-container\"},{default:l(()=>[e(f,null,{default:l(()=>[W(\"div\",null,[e(v,{modelValue:n(i).active_name,\"onUpdate:modelValue\":w[0]||(w[0]=Y=>n(i).active_name=Y),type:\"card\"},{default:l(()=>[e(Ne),e(De),e(Ie),e(Se),e(Ae),e(Re)]),_:1},8,[\"modelValue\"])])]),_:1})]),_:1})}}}),qe=Ye(Pe,[[\"__scopeId\",\"data-v-7344cd3d\"]]);export{qe as default};\n"
  },
  {
    "path": "gossh/webroot/assets/NotFound-Ts0Rt7lc.js",
    "content": "import{d as o,L as t}from\"./index-jH42E5tC.js\";const a=o({__name:\"NotFound\",setup(n){let e=t();return console.log(\"404 Page\"),e.push({name:\"Home\"}),(r,s)=>null}});export{a as default};\n"
  },
  {
    "path": "gossh/webroot/assets/SysInit-Lho0-Z3X.css",
    "content": ".el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-color:inherit;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:inherit;position:absolute}.el-step__line-inner{border:1px solid;border-color:inherit;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:\"\";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}\n"
  },
  {
    "path": "gossh/webroot/assets/SysInit-UcmoR0-x.js",
    "content": "import{d as O,K,r as z,B as L,A as J,P as X,a,C as h,b as t,w as s,f as o,e as m,c as y,Q as i,R as _,u as H,L as Y,E as p,g as U,S as Z,G as $,T as ee,U as le,V as te,q as se,s as oe,p as ne,n as de,m as ae,I as re,D as ue,F as ie,i as pe,j as me,v as _e,l as fe,N as be,O as ye}from\"./index-jH42E5tC.js\";/* empty css                */const he={key:0},ge={key:1},ce={key:2},we={key:3},ve={key:4},ke=O({__name:\"SysInit\",setup(Se){let q=K(),k=Y();const l=z({sqlite_dbdsn:\"gowebssh.db\",mysql_dbdsn:\"\",pgsql_dbdsn:\"\",db_type:\"sqlite\",name:\"\",pwd:\"\",sshd_host:\"0.0.0.0\",sshd_port:22622,sshd_user:\"\",sshd_pwd:\"\"});let S=L(()=>l.db_type==\"mysql\"?l.mysql_dbdsn:l.db_type==\"pgsql\"?l.pgsql_dbdsn:l.db_type==\"sqlite\"?l.sqlite_dbdsn:\"\"),B=L(()=>l.db_type==\"mysql\"?\"MySQL\":l.db_type==\"pgsql\"?\"PostgreSQL\":l.db_type==\"sqlite\"?\"SQLite\":\"\");const d=J(0),Q=()=>{d.value--<0&&(d.value=0)},I=()=>{d.value++>2&&(d.value=0)};function M(){let r=S.value.trim();if(r.length<2){p.error(\"请输入正确配置\");return}U.post(\"/api/sys/db_conn_check\",{db_type:l.db_type,db_dsn:r}).then(e=>{e.data.code===0?p.success(\"连接数据库成功\"):p.error(\"连接数据库错误:\"+e.data.msg)}).catch(e=>{p.error(\"连接数据库错误异常\")})}function E(r){let e=\"\";const c=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\",w=c.length;for(let f=0;f<r;f++)e+=c.charAt(Math.floor(Math.random()*w));return e}function x(){let r={db_type:l.db_type,db_dsn:S.value.trim(),jwt_secret:E(64),session_secret:E(64),username:l.name.trim(),password:l.pwd.trim(),sshd_host:l.sshd_host.trim(),sshd_port:l.sshd_port,sshd_user:l.sshd_user.trim(),sshd_pwd:l.sshd_pwd.trim()};if(r.db_dsn.length<5){p.error(\"系统初始化错误:请输入正确的数据库连接\");return}if(r.username.length<2){p.error(\"系统初始化错误:Web登录账号至少两个字符\");return}if(r.password.length<2){p.error(\"系统初始化错误:Web登录密码至少两个字符\");return}if(r.sshd_user.length<2){p.error(\"系统初始化错误:SSH服务器登录账号至少两个字符\");return}if(r.sshd_pwd.length<2){p.error(\"系统初始化错误:SSH服务器登录密码至少两个字符\");return}U.post(\"/api/sys/init\",r).then(e=>{e.data.code===0?(p.success(\"系统初始化成功\"),q.isInit=!0,k.push({name:\"Login\"})):p.error(\"系统初始化错误:\"+e.data.msg)}).catch(e=>{console.log(e),p.error(\"系统初始化错误异常\")})}return X(()=>{q.isInit&&k.push({name:\"Login\"})}),(r,e)=>{const c=Z,w=$,f=ee,N=le,W=te,V=se,P=oe,u=ne,b=de,v=ae,T=re,C=ue,D=ie,g=pe,R=me,F=_e,G=fe,j=be,A=ye;return a(),h(\"div\",null,[t(A,null,{default:s(()=>[t(c,null,{default:s(()=>e[10]||(e[10]=[o(\"h1\",{style:{\"text-align\":\"center\"}},\"系统初始化\",-1)])),_:1}),t(j,null,{default:s(()=>[t(G,null,{default:s(()=>[t(w,{span:4}),t(w,{span:16},{default:s(()=>[o(\"div\",null,[t(N,{active:d.value,\"finish-status\":\"success\"},{default:s(()=>[t(f,{title:\"数据库选择\"}),t(f,{title:\"Web账号配置\"}),t(f,{title:\"SSH服务器配置\"}),t(f,{title:\"完成\"})]),_:1},8,[\"active\"]),t(W),t(F,{model:l},{default:s(()=>[d.value===0?(a(),h(\"div\",he,[t(u,{label:\"数据库\"},{default:s(()=>[t(P,{modelValue:l.db_type,\"onUpdate:modelValue\":e[0]||(e[0]=n=>l.db_type=n)},{default:s(()=>[t(V,{value:\"sqlite\"},{default:s(()=>e[11]||(e[11]=[m(\"SQLite\")])),_:1}),t(V,{value:\"mysql\"},{default:s(()=>e[12]||(e[12]=[m(\"MySQL\")])),_:1}),t(V,{value:\"pgsql\"},{default:s(()=>e[13]||(e[13]=[m(\"PostgresSQL\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),l.db_type===\"sqlite\"?(a(),y(u,{key:0},{default:s(()=>[t(v,{style:{width:\"100%\"}},{header:s(()=>e[14]||(e[14]=[o(\"div\",{class:\"card-header\"},[o(\"span\",null,\"样例:  gowebssh.db\")],-1)])),default:s(()=>[t(b,{modelValue:l.sqlite_dbdsn,\"onUpdate:modelValue\":e[1]||(e[1]=n=>l.sqlite_dbdsn=n),minlength:\"10\",maxlength:\"65535\",\"show-word-limit\":\"\",clearable:\"\",placeholder:\"请输入Sqlite数据库连接配置,参考上面的样例\"},null,8,[\"modelValue\"])]),_:1})]),_:1})):i(\"\",!0),l.db_type===\"mysql\"?(a(),y(u,{key:1},{default:s(()=>[t(v,{style:{width:\"100%\"}},{header:s(()=>e[15]||(e[15]=[o(\"div\",{class:\"card-header\"},[o(\"span\",null,\"样例:  root:mypwd@tcp(192.168.150.200:3306)/mydb?charset=utf8mb4&parseTime=True&loc=Local\")],-1)])),default:s(()=>[t(b,{modelValue:l.mysql_dbdsn,\"onUpdate:modelValue\":e[2]||(e[2]=n=>l.mysql_dbdsn=n),minlength:\"10\",maxlength:\"65535\",\"show-word-limit\":\"\",clearable:\"\",placeholder:\"请输入MySQL数据库连接配置,参考上面的样例\"},null,8,[\"modelValue\"])]),_:1})]),_:1})):i(\"\",!0),l.db_type===\"pgsql\"?(a(),y(u,{key:2},{default:s(()=>[t(v,{style:{width:\"100%\"}},{header:s(()=>e[16]||(e[16]=[o(\"div\",{class:\"card-header\"},[o(\"span\",null,\"样例:  host=192.168.150.200 port=5432 user=postgres dbname=mydb sslmode=disable password=mypwd\")],-1)])),default:s(()=>[t(b,{modelValue:l.pgsql_dbdsn,\"onUpdate:modelValue\":e[3]||(e[3]=n=>l.pgsql_dbdsn=n),minlength:\"10\",maxlength:\"65535\",\"show-word-limit\":\"\",clearable:\"\",placeholder:\"请输入PostgresSQL数据库连接配置,参考上面的样例\"},null,8,[\"modelValue\"])]),_:1})]),_:1})):i(\"\",!0)])):i(\"\",!0),d.value===1?(a(),h(\"div\",ge,[o(\"div\",null,[t(u,{label:\"Web登录账号:\"},{default:s(()=>[t(b,{modelValue:l.name,\"onUpdate:modelValue\":e[4]||(e[4]=n=>l.name=n),trim:\"\",minlength:\"1\",maxlength:\"64\",\"show-word-limit\":\"\",clearable:\"\",placeholder:\"请输入用户名\"},null,8,[\"modelValue\"])]),_:1}),t(u,{label:\"Web登录密码:\"},{default:s(()=>[t(b,{modelValue:l.pwd,\"onUpdate:modelValue\":e[5]||(e[5]=n=>l.pwd=n),trim:\"\",type:\"password\",minlength:\"3\",maxlength:\"64\",\"show-word-limit\":\"\",\"show-password\":\"\",clearable:\"\",placeholder:\"请输入密码\"},null,8,[\"modelValue\"])]),_:1})])])):i(\"\",!0),d.value===2?(a(),h(\"div\",ce,[o(\"div\",null,[t(u,{label:\"SSH服务器登录账号:\"},{default:s(()=>[t(b,{modelValue:l.sshd_user,\"onUpdate:modelValue\":e[6]||(e[6]=n=>l.sshd_user=n),trim:\"\",minlength:\"1\",maxlength:\"64\",\"show-word-limit\":\"\",clearable:\"\",placeholder:\"请输入账号\"},null,8,[\"modelValue\"])]),_:1}),t(u,{label:\"SSH服务器登录密码:\"},{default:s(()=>[t(b,{modelValue:l.sshd_pwd,\"onUpdate:modelValue\":e[7]||(e[7]=n=>l.sshd_pwd=n),trim:\"\",type:\"password\",minlength:\"3\",maxlength:\"64\",\"show-word-limit\":\"\",\"show-password\":\"\",clearable:\"\",placeholder:\"请输入密码\"},null,8,[\"modelValue\"])]),_:1}),t(u,{label:\"SSH服务器监听端口:\"},{default:s(()=>[t(T,{modelValue:l.sshd_port,\"onUpdate:modelValue\":e[8]||(e[8]=n=>l.sshd_port=n),min:1,max:65535},null,8,[\"modelValue\"])]),_:1}),t(u,{label:\"SSH服务器监听地址:\"},{default:s(()=>[t(D,{modelValue:l.sshd_host,\"onUpdate:modelValue\":e[9]||(e[9]=n=>l.sshd_host=n),placeholder:\"选择监听地址\"},{default:s(()=>[t(C,{label:\"0.0.0.0\",value:\"0.0.0.0\"}),t(C,{label:\"127.0.0.1\",value:\"127.0.0.1\"})]),_:1},8,[\"modelValue\"])]),_:1})])])):i(\"\",!0),d.value===3?(a(),h(\"div\",we,[t(u,null,{default:s(()=>[t(v,{style:{width:\"100%\"}},{header:s(()=>e[17]||(e[17]=[o(\"div\",{class:\"card-header\"},[o(\"span\",{style:{color:\"red\"}},\"配置确认,请妥善保存密码\")],-1)])),default:s(()=>[o(\"p\",null,\"数据库类型:  \"+_(H(B)),1),o(\"p\",null,\"数据库DSN:  \"+_(H(S)),1),o(\"p\",null,\"Web登录账号:  \"+_(l.name),1),o(\"p\",null,\"Web登录密码:  \"+_(l.pwd),1),o(\"p\",null,\"SSH服务器登录账号:  \"+_(l.sshd_user),1),o(\"p\",null,\"SSH服务器登录密码:  \"+_(l.sshd_pwd),1),o(\"p\",null,\"SSH服务器监听端口:  \"+_(l.sshd_port),1),o(\"p\",null,\"SSH服务器监听地址:  \"+_(l.sshd_host),1)]),_:1})]),_:1})])):i(\"\",!0),o(\"div\",null,[t(u,null,{default:s(()=>[d.value===0?(a(),y(g,{key:0,type:\"success\",onClick:M},{default:s(()=>e[18]||(e[18]=[m(\"测试连接\")])),_:1})):i(\"\",!0),d.value>0?(a(),y(g,{key:1,type:\"primary\",onClick:Q},{default:s(()=>e[19]||(e[19]=[m(\"上一步\")])),_:1})):i(\"\",!0),d.value<3?(a(),y(g,{key:2,type:\"primary\",onClick:I},{default:s(()=>e[20]||(e[20]=[m(\"下一步\")])),_:1})):i(\"\",!0),d.value===3?(a(),y(g,{key:3,type:\"success\",onClick:x},{default:s(()=>e[21]||(e[21]=[m(\"完成\")])),_:1})):i(\"\",!0),e[24]||(e[24]=m(\"                    \")),d.value===3?(a(),h(\"div\",ve,[t(R,{confirmButtonText:\"确定\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定初始化\",onConfirm:x},{reference:s(()=>[e[23]||(e[23]=m(\"   \")),t(g,{type:\"success\"},{default:s(()=>e[22]||(e[22]=[m(\"完成\")])),_:1})]),_:1})])):i(\"\",!0)]),_:1})])]),_:1},8,[\"model\"])])]),_:1})]),_:1})]),_:1})]),_:1})])}}});export{ke as default};\n"
  },
  {
    "path": "gossh/webroot/assets/el-card-fwQOLwdi.css",
    "content": ".el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}\n"
  },
  {
    "path": "gossh/webroot/assets/index-D6GWZ696.css",
    "content": "@charset \"UTF-8\";.el-header,.el-footer{background-color:#2b75d6}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:\"\";height:12px;mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;mask-size:100% 100%;-webkit-mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:\"\";height:12px;mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;mask-size:100% 100%;-webkit-mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}/**\n* Copyright (c) 2014 The xterm.js authors. All rights reserved.\n* Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)\n* https://github.com/chjj/term.js\n* @license MIT\n*\n* Permission is hereby granted, free of charge, to any person obtaining a copy\n* of this software and associated documentation files (the \"Software\"), to deal\n* in the Software without restriction, including without limitation the rights\n* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n* copies of the Software, and to permit persons to whom the Software is\n* furnished to do so, subject to the following conditions:\n*\n* The above copyright notice and this permission notice shall be included in\n* all copies or substantial portions of the Software.\n*\n* THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n* THE SOFTWARE.\n*\n* Originally forked from (with the author's permission):\n*   Fabrice Bellard's javascript vt100 for jslinux:\n*   http://bellard.org/jslinux/\n*   Copyright (c) 2011 Fabrice Bellard\n*   The original design remains. The terminal itself\n*   has been extended to include xterm CSI codes, among\n*   other features.\n*/.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm .xterm-scroll-area{visibility:hidden}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{-webkit-user-select:text;user-select:text;white-space:pre}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.container[data-v-83d2d7ef]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 100px);width:100%;perspective:1000px;position:relative;gap:100px}.github-links[data-v-83d2d7ef]{display:flex;justify-content:center;align-items:center;padding:20px;z-index:2;position:relative;margin-top:50px}.github-link[data-v-83d2d7ef]{display:flex;align-items:center;gap:12px;padding:12px 24px;border-radius:8px;transition:all .3s ease;font-size:18px;background-color:#409eff0d}.github-link[data-v-83d2d7ef]:hover{background-color:#409eff26;transform:translateY(-2px)}.github-icon[data-v-83d2d7ef]{display:flex;align-items:center;color:#409eff}.github-text[data-v-83d2d7ef]{font-weight:500;letter-spacing:.5px}.text3d-container[data-v-83d2d7ef]{position:relative;z-index:1;margin-top:20px;text-align:center}.text3d[data-v-83d2d7ef]{font-size:5em;font-weight:700;font-family:Arial,sans-serif;color:#409eff;display:flex;justify-content:center}.text3d span[data-v-83d2d7ef]{display:inline-block;text-shadow:0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 0 #b9b9b9,0 5px 0 #aaa,0 6px 1px rgba(0,0,0,.1),0 0 5px rgba(0,0,0,.1),0 1px 3px rgba(0,0,0,.3),0 3px 5px rgba(0,0,0,.2),0 5px 10px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.2),0 20px 20px rgba(0,0,0,.15);animation:popUp-83d2d7ef 2s ease-in-out infinite}.text3d span[data-v-83d2d7ef]:nth-child(1){animation-delay:0s}.text3d span[data-v-83d2d7ef]:nth-child(2){animation-delay:.2s}.text3d span[data-v-83d2d7ef]:nth-child(3){animation-delay:.4s}.text3d span[data-v-83d2d7ef]:nth-child(4){animation-delay:.6s}.text3d span[data-v-83d2d7ef]:nth-child(5){animation-delay:.8s}.text3d span[data-v-83d2d7ef]:nth-child(6){animation-delay:1s}@keyframes popUp-83d2d7ef{0%{transform:translateY(0) scale(1)}25%{transform:translateY(-20px) scale(1.1)}50%{transform:translateY(0) scale(1)}75%{transform:translateY(10px) scale(.9)}to{transform:translateY(0) scale(1)}}.text3d span[data-v-83d2d7ef]:hover{animation-play-state:paused;color:#66b1ff}@media screen and (max-width: 768px){.container[data-v-83d2d7ef]{gap:50px}.github-links[data-v-83d2d7ef]{margin-top:30px}.text3d[data-v-83d2d7ef]{font-size:3em}}@media screen and (max-width: 480px){.container[data-v-83d2d7ef]{gap:30px}.github-links[data-v-83d2d7ef]{margin-top:20px}.text3d[data-v-83d2d7ef]{font-size:2em}.text3d span[data-v-83d2d7ef]{text-shadow:0 1px 0 #ccc,0 2px 0 #c9c9c9,0 3px 0 #bbb,0 4px 5px rgba(0,0,0,.15)}}@media (prefers-color-scheme: dark){.github-link[data-v-83d2d7ef]{background-color:#409eff1a}.github-link[data-v-83d2d7ef]:hover{background-color:#409eff33}.text3d[data-v-83d2d7ef]{color:#60aeff}}.file-dialog[data-v-5fa8db59]{margin-top:0}[data-v-5fa8db59] .el-tabs__header.is-top{margin:0;border-bottom:none}[data-v-5fa8db59] .el-tabs{height:calc(100vh - 32px)}[data-v-5fa8db59] .el-tabs__content{flex:1;margin-top:1px;overflow:hidden}[data-v-5fa8db59] .el-tab-pane{height:100%}[data-v-5fa8db59] .el-tab-pane>div{height:100%}[data-v-5fa8db59] .el-tabs__content,[data-v-5fa8db59] .el-tab-pane,[data-v-5fa8db59] .el-tab-pane>div>#term-data{background-color:var(--700850ea)}.login-container[data-v-f15d6b48]{min-height:100vh;height:100vh;background:linear-gradient(135deg,#1a365d,#2d3748);display:flex;justify-content:center;align-items:flex-start;padding:20px;overflow:hidden;box-sizing:border-box}.login-box[data-v-f15d6b48]{width:100%;max-width:420px;background:#fffffffa;border-radius:20px;box-shadow:0 10px 40px #0003;padding:40px 30px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);margin-top:10vh}.login-header[data-v-f15d6b48]{text-align:center;margin-bottom:25px}.login-header h1[data-v-f15d6b48]{color:#2d3748;font-size:clamp(1.8em,4vw,2.2em);font-weight:600;margin:0 0 10px}.login-header p[data-v-f15d6b48]{color:#718096;font-size:clamp(.9em,2vw,1.1em);margin:0}.login-form[data-v-f15d6b48]{display:flex;flex-direction:column;gap:20px}.form-item[data-v-f15d6b48]{width:100%}[data-v-f15d6b48] .el-input__wrapper{background-color:#f8fafc;border:2px solid transparent;border-radius:12px;transition:all .3s ease;box-shadow:none!important;padding:0 15px;height:45px}[data-v-f15d6b48] .el-input__wrapper:hover,[data-v-f15d6b48] .el-input__wrapper.is-focus{border-color:#4c51bf;background-color:#fff}[data-v-f15d6b48] .el-input__inner{height:45px;font-size:16px;color:#2d3748}[data-v-f15d6b48] .el-input__prefix{font-size:1.2em;margin-right:10px;color:#718096}[data-v-f15d6b48] .el-input__inner::placeholder{color:#a0aec0;opacity:1}[data-v-f15d6b48] .el-input__inner::-webkit-input-placeholder{color:#a0aec0}[data-v-f15d6b48] .el-input__inner::-moz-placeholder{color:#a0aec0}[data-v-f15d6b48] .el-input__inner:-ms-input-placeholder{color:#a0aec0}.login-button[data-v-f15d6b48]{width:100%;height:45px;font-size:16px;font-weight:500;letter-spacing:2px;background:-webkit-gradient(linear,left top,right top,from(#4c51bf),to(#667eea));background:-o-linear-gradient(left,#4c51bf,#667eea);background:linear-gradient(to right,#4c51bf,#667eea);border:none;border-radius:12px;-webkit-transition:all .3s ease;-o-transition:all .3s ease;transition:all .3s ease;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.login-button[data-v-f15d6b48]:hover{-webkit-transform:translateY(-2px);-ms-transform:translateY(-2px);transform:translateY(-2px);-webkit-box-shadow:0 6px 20px rgba(76,81,191,.3);box-shadow:0 6px 20px #4c51bf4d}.login-button[data-v-f15d6b48]:active{-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}@media screen and (max-width: 768px){.login-container[data-v-f15d6b48]{padding:15px}.login-box[data-v-f15d6b48]{padding:25px 20px;width:90%;margin-top:8vh}[data-v-f15d6b48] .el-input__wrapper{height:40px}.login-button[data-v-f15d6b48]{height:40px;font-size:15px}}@media screen and (min-width: 768px) and (max-width: 1024px){.login-box[data-v-f15d6b48]{max-width:480px;padding:35px 25px}}@media screen and (max-height: 480px){.login-container[data-v-f15d6b48]{align-items:flex-start;padding:10px}.login-box[data-v-f15d6b48]{padding:20px 15px;margin-top:5vh}.login-header[data-v-f15d6b48]{margin-bottom:20px}.login-form[data-v-f15d6b48]{gap:15px}}@media screen and (max-height: 600px){.login-box[data-v-f15d6b48]{margin-top:5vh;padding:20px 15px}}@media (prefers-color-scheme: dark){.login-box[data-v-f15d6b48]{background:#fffffff2}[data-v-f15d6b48] .el-input__wrapper{background-color:#f8fafcf2}.login-header h1[data-v-f15d6b48]{color:#1a202c}.login-header p[data-v-f15d6b48]{color:#4a5568}}@supports not (gap: 25px){.login-form[data-v-f15d6b48]{margin:-12.5px 0}.login-form[data-v-f15d6b48]>*{margin:12.5px 0}}@supports not (backdrop-filter: blur(10px)){.login-box[data-v-f15d6b48]{background:#fffffffa}}:root{--el-color-white:#ffffff;--el-color-black:#000000;--el-color-primary-rgb:64,158,255;--el-color-success-rgb:103,194,58;--el-color-warning-rgb:230,162,60;--el-color-danger-rgb:245,108,108;--el-color-error-rgb:245,108,108;--el-color-info-rgb:144,147,153;--el-font-size-extra-large:20px;--el-font-size-large:18px;--el-font-size-medium:16px;--el-font-size-base:14px;--el-font-size-small:13px;--el-font-size-extra-small:12px;--el-font-family:\"Helvetica Neue\",Helvetica,\"PingFang SC\",\"Hiragino Sans GB\",\"Microsoft YaHei\",\"微软雅黑\",Arial,sans-serif;--el-font-weight-primary:500;--el-font-line-height-primary:24px;--el-index-normal:1;--el-index-top:1000;--el-index-popper:2000;--el-border-radius-base:4px;--el-border-radius-small:2px;--el-border-radius-round:20px;--el-border-radius-circle:100%;--el-transition-duration:.3s;--el-transition-duration-fast:.2s;--el-transition-function-ease-in-out-bezier:cubic-bezier(.645,.045,.355,1);--el-transition-function-fast-bezier:cubic-bezier(.23,1,.32,1);--el-transition-all:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);--el-transition-fade:opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-md-fade:transform var(--el-transition-duration) var(--el-transition-function-fast-bezier),opacity var(--el-transition-duration) var(--el-transition-function-fast-bezier);--el-transition-fade-linear:opacity var(--el-transition-duration-fast) linear;--el-transition-border:border-color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-box-shadow:box-shadow var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-transition-color:color var(--el-transition-duration-fast) var(--el-transition-function-ease-in-out-bezier);--el-component-size-large:40px;--el-component-size:32px;--el-component-size-small:24px;color-scheme:light;--el-color-primary:#409eff;--el-color-primary-light-3:rgb(121.3,187.1,255);--el-color-primary-light-5:rgb(159.5,206.5,255);--el-color-primary-light-7:rgb(197.7,225.9,255);--el-color-primary-light-8:rgb(216.8,235.6,255);--el-color-primary-light-9:rgb(235.9,245.3,255);--el-color-primary-dark-2:rgb(51.2,126.4,204);--el-color-success:#67c23a;--el-color-success-light-3:rgb(148.6,212.3,117.1);--el-color-success-light-5:rgb(179,224.5,156.5);--el-color-success-light-7:rgb(209.4,236.7,195.9);--el-color-success-light-8:rgb(224.6,242.8,215.6);--el-color-success-light-9:rgb(239.8,248.9,235.3);--el-color-success-dark-2:rgb(82.4,155.2,46.4);--el-color-warning:#e6a23c;--el-color-warning-light-3:rgb(237.5,189.9,118.5);--el-color-warning-light-5:rgb(242.5,208.5,157.5);--el-color-warning-light-7:rgb(247.5,227.1,196.5);--el-color-warning-light-8:rgb(250,236.4,216);--el-color-warning-light-9:rgb(252.5,245.7,235.5);--el-color-warning-dark-2:rgb(184,129.6,48);--el-color-danger:#f56c6c;--el-color-danger-light-3:rgb(248,152.1,152.1);--el-color-danger-light-5:rgb(250,181.5,181.5);--el-color-danger-light-7:rgb(252,210.9,210.9);--el-color-danger-light-8:rgb(253,225.6,225.6);--el-color-danger-light-9:rgb(254,240.3,240.3);--el-color-danger-dark-2:rgb(196,86.4,86.4);--el-color-error:#f56c6c;--el-color-error-light-3:rgb(248,152.1,152.1);--el-color-error-light-5:rgb(250,181.5,181.5);--el-color-error-light-7:rgb(252,210.9,210.9);--el-color-error-light-8:rgb(253,225.6,225.6);--el-color-error-light-9:rgb(254,240.3,240.3);--el-color-error-dark-2:rgb(196,86.4,86.4);--el-color-info:#909399;--el-color-info-light-3:rgb(177.3,179.4,183.6);--el-color-info-light-5:rgb(199.5,201,204);--el-color-info-light-7:rgb(221.7,222.6,224.4);--el-color-info-light-8:rgb(232.8,233.4,234.6);--el-color-info-light-9:rgb(243.9,244.2,244.8);--el-color-info-dark-2:rgb(115.2,117.6,122.4);--el-bg-color:#ffffff;--el-bg-color-page:#f2f3f5;--el-bg-color-overlay:#ffffff;--el-text-color-primary:#303133;--el-text-color-regular:#606266;--el-text-color-secondary:#909399;--el-text-color-placeholder:#a8abb2;--el-text-color-disabled:#c0c4cc;--el-border-color:#dcdfe6;--el-border-color-light:#e4e7ed;--el-border-color-lighter:#ebeef5;--el-border-color-extra-light:#f2f6fc;--el-border-color-dark:#d4d7de;--el-border-color-darker:#cdd0d6;--el-fill-color:#f0f2f5;--el-fill-color-light:#f5f7fa;--el-fill-color-lighter:#fafafa;--el-fill-color-extra-light:#fafcff;--el-fill-color-dark:#ebedf0;--el-fill-color-darker:#e6e8eb;--el-fill-color-blank:#ffffff;--el-box-shadow:0px 12px 32px 4px rgba(0,0,0,.04),0px 8px 20px rgba(0,0,0,.08);--el-box-shadow-light:0px 0px 12px rgba(0,0,0,.12);--el-box-shadow-lighter:0px 0px 6px rgba(0,0,0,.12);--el-box-shadow-dark:0px 16px 48px 16px rgba(0,0,0,.08),0px 12px 32px rgba(0,0,0,.12),0px 8px 16px -8px rgba(0,0,0,.16);--el-disabled-bg-color:var(--el-fill-color-light);--el-disabled-text-color:var(--el-text-color-placeholder);--el-disabled-border-color:var(--el-border-color-light);--el-overlay-color:rgba(0,0,0,.8);--el-overlay-color-light:rgba(0,0,0,.7);--el-overlay-color-lighter:rgba(0,0,0,.5);--el-mask-color:rgba(255,255,255,.9);--el-mask-color-extra-light:rgba(255,255,255,.3);--el-border-width:1px;--el-border-style:solid;--el-border-color-hover:var(--el-text-color-disabled);--el-border:var(--el-border-width) var(--el-border-style) var(--el-border-color);--el-svg-monochrome-grey:var(--el-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.el-fade-in-linear-enter-active,.el-fade-in-linear-leave-active{transition:var(--el-transition-fade-linear)}.el-fade-in-linear-enter-from,.el-fade-in-linear-leave-to{opacity:0}.el-fade-in-enter-active,.el-fade-in-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-fade-in-enter-from,.el-fade-in-leave-active{opacity:0}.el-zoom-in-center-enter-active,.el-zoom-in-center-leave-active{transition:all var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-zoom-in-center-enter-from,.el-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.el-zoom-in-top-enter-active,.el-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transform-origin:center top;transition:var(--el-transition-md-fade)}.el-zoom-in-top-enter-active[data-popper-placement^=top],.el-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.el-zoom-in-top-enter-from,.el-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-bottom-enter-active,.el-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transform-origin:center bottom;transition:var(--el-transition-md-fade)}.el-zoom-in-bottom-enter-from,.el-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.el-zoom-in-left-enter-active,.el-zoom-in-left-leave-active{opacity:1;transform:scale(1);transform-origin:top left;transition:var(--el-transition-md-fade)}.el-zoom-in-left-enter-from,.el-zoom-in-left-leave-active{opacity:0;transform:scale(.45)}.collapse-transition{transition:var(--el-transition-duration) height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.el-collapse-transition-enter-active,.el-collapse-transition-leave-active{transition:var(--el-transition-duration) max-height ease-in-out,var(--el-transition-duration) padding-top ease-in-out,var(--el-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--el-transition-duration) width ease-in-out,var(--el-transition-duration) padding-left ease-in-out,var(--el-transition-duration) padding-right ease-in-out}.el-list-enter-active,.el-list-leave-active{transition:all 1s}.el-list-enter-from,.el-list-leave-to{opacity:0;transform:translateY(-30px)}.el-list-leave-active{position:absolute!important}.el-opacity-transition{transition:opacity var(--el-transition-duration) cubic-bezier(.55,0,.1,1)}.el-icon-loading{animation:rotating 2s linear infinite}.el-icon--right{margin-left:5px}.el-icon--left{margin-right:5px}@keyframes rotating{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.el-icon{--color:inherit;align-items:center;display:inline-flex;height:1em;justify-content:center;line-height:1em;position:relative;width:1em;fill:currentColor;color:var(--color);font-size:inherit}.el-icon.is-loading{animation:rotating 2s linear infinite}.el-icon svg{height:1em;width:1em}.el-affix--fixed{position:fixed}.el-alert{--el-alert-padding:8px 16px;--el-alert-border-radius-base:var(--el-border-radius-base);--el-alert-title-font-size:14px;--el-alert-title-with-description-font-size:16px;--el-alert-description-font-size:14px;--el-alert-close-font-size:16px;--el-alert-close-customed-font-size:14px;--el-alert-icon-size:16px;--el-alert-icon-large-size:28px;align-items:center;background-color:var(--el-color-white);border-radius:var(--el-alert-border-radius-base);box-sizing:border-box;display:flex;margin:0;opacity:1;overflow:hidden;padding:var(--el-alert-padding);position:relative;transition:opacity var(--el-transition-duration-fast);width:100%}.el-alert.is-light .el-alert__close-btn{color:var(--el-text-color-placeholder)}.el-alert.is-dark .el-alert__close-btn,.el-alert.is-dark .el-alert__description{color:var(--el-color-white)}.el-alert.is-center{justify-content:center}.el-alert--success{--el-alert-bg-color:var(--el-color-success-light-9)}.el-alert--success.is-light{background-color:var(--el-alert-bg-color)}.el-alert--success.is-light,.el-alert--success.is-light .el-alert__description{color:var(--el-color-success)}.el-alert--success.is-dark{background-color:var(--el-color-success);color:var(--el-color-white)}.el-alert--info{--el-alert-bg-color:var(--el-color-info-light-9)}.el-alert--info.is-light{background-color:var(--el-alert-bg-color)}.el-alert--info.is-light,.el-alert--info.is-light .el-alert__description{color:var(--el-color-info)}.el-alert--info.is-dark{background-color:var(--el-color-info);color:var(--el-color-white)}.el-alert--warning{--el-alert-bg-color:var(--el-color-warning-light-9)}.el-alert--warning.is-light{background-color:var(--el-alert-bg-color)}.el-alert--warning.is-light,.el-alert--warning.is-light .el-alert__description{color:var(--el-color-warning)}.el-alert--warning.is-dark{background-color:var(--el-color-warning);color:var(--el-color-white)}.el-alert--error{--el-alert-bg-color:var(--el-color-error-light-9)}.el-alert--error.is-light{background-color:var(--el-alert-bg-color)}.el-alert--error.is-light,.el-alert--error.is-light .el-alert__description{color:var(--el-color-error)}.el-alert--error.is-dark{background-color:var(--el-color-error);color:var(--el-color-white)}.el-alert__content{display:flex;flex-direction:column;gap:4px}.el-alert .el-alert__icon{font-size:var(--el-alert-icon-size);margin-right:8px;width:var(--el-alert-icon-size)}.el-alert .el-alert__icon.is-big{font-size:var(--el-alert-icon-large-size);margin-right:12px;width:var(--el-alert-icon-large-size)}.el-alert__title{font-size:var(--el-alert-title-font-size);line-height:24px}.el-alert__title.with-description{font-size:var(--el-alert-title-with-description-font-size)}.el-alert .el-alert__description{font-size:var(--el-alert-description-font-size);margin:0}.el-alert .el-alert__close-btn{cursor:pointer;font-size:var(--el-alert-close-font-size);opacity:1;position:absolute;right:16px;top:12px}.el-alert .el-alert__close-btn.is-customed{font-size:var(--el-alert-close-customed-font-size);font-style:normal;line-height:24px;top:8px}.el-alert-fade-enter-from,.el-alert-fade-leave-active{opacity:0}.el-aside{box-sizing:border-box;flex-shrink:0;overflow:auto;width:var(--el-aside-width,300px)}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{color:var(--el-text-color-secondary);font-size:20px;height:100px;line-height:100px;text-align:center}.el-autocomplete-suggestion.is-loading li:after{content:\"\";display:inline-block;height:100%;vertical-align:middle}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.el-autocomplete-suggestion.is-loading .el-icon-loading{vertical-align:middle}.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;align-items:center;background:var(--el-avatar-bg-color);box-sizing:border-box;color:var(--el-avatar-text-color);display:inline-flex;font-size:var(--el-avatar-text-size);height:var(--el-avatar-size);justify-content:center;outline:none;overflow:hidden;text-align:center;width:var(--el-avatar-size)}.el-avatar>img{display:block;height:100%;width:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}.el-backtop{--el-backtop-bg-color:var(--el-bg-color-overlay);--el-backtop-text-color:var(--el-color-primary);--el-backtop-hover-bg-color:var(--el-border-color-extra-light);align-items:center;background-color:var(--el-backtop-bg-color);border-radius:50%;box-shadow:var(--el-box-shadow-lighter);color:var(--el-backtop-text-color);cursor:pointer;display:flex;font-size:20px;height:40px;justify-content:center;position:fixed;width:40px;z-index:5}.el-backtop:hover{background-color:var(--el-backtop-hover-bg-color)}.el-backtop__icon{font-size:20px}.el-badge{--el-badge-bg-color:var(--el-color-danger);--el-badge-radius:10px;--el-badge-font-size:12px;--el-badge-padding:6px;--el-badge-size:18px;display:inline-block;position:relative;vertical-align:middle;width:-moz-fit-content;width:fit-content}.el-badge__content{align-items:center;background-color:var(--el-badge-bg-color);border:1px solid var(--el-bg-color);border-radius:var(--el-badge-radius);color:var(--el-color-white);display:inline-flex;font-size:var(--el-badge-font-size);height:var(--el-badge-size);justify-content:center;padding:0 var(--el-badge-padding);white-space:nowrap}.el-badge__content.is-fixed{position:absolute;right:calc(1px + var(--el-badge-size)/2);top:0;transform:translateY(-50%) translate(100%);z-index:var(--el-index-normal)}.el-badge__content.is-fixed.is-dot{right:5px}.el-badge__content.is-dot{border-radius:50%;height:8px;padding:0;right:0;width:8px}.el-badge__content.is-hide-zero{display:none}.el-badge__content--primary{background-color:var(--el-color-primary)}.el-badge__content--success{background-color:var(--el-color-success)}.el-badge__content--warning{background-color:var(--el-color-warning)}.el-badge__content--info{background-color:var(--el-color-info)}.el-badge__content--danger{background-color:var(--el-color-danger)}.el-breadcrumb{font-size:14px;line-height:1}.el-breadcrumb:after,.el-breadcrumb:before{content:\"\";display:table}.el-breadcrumb:after{clear:both}.el-breadcrumb__separator{color:var(--el-text-color-placeholder);font-weight:700;margin:0 9px}.el-breadcrumb__separator.el-icon{font-weight:400;margin:0 6px}.el-breadcrumb__separator.el-icon svg{vertical-align:middle}.el-breadcrumb__item{align-items:center;display:inline-flex;float:left}.el-breadcrumb__inner{color:var(--el-text-color-regular)}.el-breadcrumb__inner a,.el-breadcrumb__inner.is-link{color:var(--el-text-color-primary);font-weight:700;text-decoration:none;transition:var(--el-transition-color)}.el-breadcrumb__inner a:hover,.el-breadcrumb__inner.is-link:hover{color:var(--el-color-primary);cursor:pointer}.el-breadcrumb__item:last-child .el-breadcrumb__inner,.el-breadcrumb__item:last-child .el-breadcrumb__inner a,.el-breadcrumb__item:last-child .el-breadcrumb__inner a:hover,.el-breadcrumb__item:last-child .el-breadcrumb__inner:hover{color:var(--el-text-color-regular);cursor:text;font-weight:400}.el-breadcrumb__item:last-child .el-breadcrumb__separator{display:none}.el-button-group{display:inline-block;vertical-align:middle}.el-button-group:after,.el-button-group:before{content:\"\";display:table}.el-button-group:after{clear:both}.el-button-group>.el-button{float:left;position:relative}.el-button-group>.el-button+.el-button{margin-left:0}.el-button-group>.el-button:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.el-button-group>.el-button:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.el-button-group>.el-button:first-child:last-child{border-bottom-left-radius:var(--el-border-radius-base);border-bottom-right-radius:var(--el-border-radius-base);border-top-left-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-button-group>.el-button:first-child:last-child.is-round{border-radius:var(--el-border-radius-round)}.el-button-group>.el-button:first-child:last-child.is-circle{border-radius:50%}.el-button-group>.el-button:not(:first-child):not(:last-child){border-radius:0}.el-button-group>.el-button:not(:last-child){margin-right:-1px}.el-button-group>.el-button.is-active,.el-button-group>.el-button:active,.el-button-group>.el-button:focus,.el-button-group>.el-button:hover{z-index:1}.el-button-group>.el-dropdown>.el-button{border-bottom-left-radius:0;border-left-color:var(--el-button-divide-border-color);border-top-left-radius:0}.el-button-group .el-button--primary:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--primary:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--success:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--warning:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--danger:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:first-child{border-right-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:last-child{border-left-color:var(--el-button-divide-border-color)}.el-button-group .el-button--info:not(:first-child):not(:last-child){border-left-color:var(--el-button-divide-border-color);border-right-color:var(--el-button-divide-border-color)}.el-button{--el-button-font-weight:var(--el-font-weight-primary);--el-button-border-color:var(--el-border-color);--el-button-bg-color:var(--el-fill-color-blank);--el-button-text-color:var(--el-text-color-regular);--el-button-disabled-text-color:var(--el-disabled-text-color);--el-button-disabled-bg-color:var(--el-fill-color-blank);--el-button-disabled-border-color:var(--el-border-color-light);--el-button-divide-border-color:rgba(255,255,255,.5);--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-color-primary-light-9);--el-button-hover-border-color:var(--el-color-primary-light-7);--el-button-active-text-color:var(--el-button-hover-text-color);--el-button-active-border-color:var(--el-color-primary);--el-button-active-bg-color:var(--el-button-hover-bg-color);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-hover-link-text-color:var(--el-text-color-secondary);--el-button-active-color:var(--el-text-color-primary);align-items:center;-webkit-appearance:none;background-color:var(--el-button-bg-color);border:var(--el-border);border-color:var(--el-button-border-color);box-sizing:border-box;color:var(--el-button-text-color);cursor:pointer;display:inline-flex;font-weight:var(--el-button-font-weight);height:32px;justify-content:center;line-height:1;outline:none;text-align:center;transition:.1s;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-button:hover{background-color:var(--el-button-hover-bg-color);border-color:var(--el-button-hover-border-color);color:var(--el-button-hover-text-color);outline:none}.el-button:active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button:focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button>span{align-items:center;display:inline-flex}.el-button+.el-button{margin-left:12px}.el-button{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base)}.el-button,.el-button.is-round{padding:8px 15px}.el-button::-moz-focus-inner{border:0}.el-button [class*=el-icon]+span{margin-left:6px}.el-button [class*=el-icon] svg{vertical-align:bottom}.el-button.is-plain{--el-button-hover-text-color:var(--el-color-primary);--el-button-hover-bg-color:var(--el-fill-color-blank);--el-button-hover-border-color:var(--el-color-primary)}.el-button.is-active{background-color:var(--el-button-active-bg-color);border-color:var(--el-button-active-border-color);color:var(--el-button-active-text-color);outline:none}.el-button.is-disabled,.el-button.is-disabled:hover{background-color:var(--el-button-disabled-bg-color);background-image:none;border-color:var(--el-button-disabled-border-color);color:var(--el-button-disabled-text-color);cursor:not-allowed}.el-button.is-loading{pointer-events:none;position:relative}.el-button.is-loading:before{background-color:var(--el-mask-color-extra-light);border-radius:inherit;bottom:-1px;content:\"\";left:-1px;pointer-events:none;position:absolute;right:-1px;top:-1px;z-index:1}.el-button.is-round{border-radius:var(--el-border-radius-round)}.el-button.is-circle{border-radius:50%;padding:8px;width:32px}.el-button.is-text{background-color:transparent;border:0 solid transparent;color:var(--el-button-text-color)}.el-button.is-text.is-disabled{background-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-text:not(.is-disabled):hover{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled):focus-visible{outline:2px solid var(--el-button-outline-color);outline-offset:1px;transition:outline-offset 0s,outline 0s}.el-button.is-text:not(.is-disabled):active{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg{background-color:var(--el-fill-color-light)}.el-button.is-text:not(.is-disabled).is-has-bg:hover{background-color:var(--el-fill-color)}.el-button.is-text:not(.is-disabled).is-has-bg:active{background-color:var(--el-fill-color-dark)}.el-button__text--expand{letter-spacing:.3em;margin-right:-.3em}.el-button.is-link{background:transparent;border-color:transparent;color:var(--el-button-text-color);height:auto;padding:2px}.el-button.is-link:hover{color:var(--el-button-hover-link-text-color)}.el-button.is-link.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button.is-link:not(.is-disabled):active,.el-button.is-link:not(.is-disabled):hover{background-color:transparent;border-color:transparent}.el-button.is-link:not(.is-disabled):active{color:var(--el-button-active-color)}.el-button--text{background:transparent;border-color:transparent;color:var(--el-color-primary);padding-left:0;padding-right:0}.el-button--text.is-disabled{background-color:transparent!important;border-color:transparent!important;color:var(--el-button-disabled-text-color)}.el-button--text:not(.is-disabled):hover{background-color:transparent;border-color:transparent;color:var(--el-color-primary-light-3)}.el-button--text:not(.is-disabled):active{background-color:transparent;border-color:transparent;color:var(--el-color-primary-dark-2)}.el-button__link--expand{letter-spacing:.3em;margin-right:-.3em}.el-button--primary{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-primary);--el-button-border-color:var(--el-color-primary);--el-button-outline-color:var(--el-color-primary-light-5);--el-button-active-color:var(--el-color-primary-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-primary-light-5);--el-button-hover-bg-color:var(--el-color-primary-light-3);--el-button-hover-border-color:var(--el-color-primary-light-3);--el-button-active-bg-color:var(--el-color-primary-dark-2);--el-button-active-border-color:var(--el-color-primary-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-primary-light-5);--el-button-disabled-border-color:var(--el-color-primary-light-5)}.el-button--primary.is-link,.el-button--primary.is-plain,.el-button--primary.is-text{--el-button-text-color:var(--el-color-primary);--el-button-bg-color:var(--el-color-primary-light-9);--el-button-border-color:var(--el-color-primary-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-primary);--el-button-hover-border-color:var(--el-color-primary);--el-button-active-text-color:var(--el-color-white)}.el-button--primary.is-link.is-disabled,.el-button--primary.is-link.is-disabled:active,.el-button--primary.is-link.is-disabled:focus,.el-button--primary.is-link.is-disabled:hover,.el-button--primary.is-plain.is-disabled,.el-button--primary.is-plain.is-disabled:active,.el-button--primary.is-plain.is-disabled:focus,.el-button--primary.is-plain.is-disabled:hover,.el-button--primary.is-text.is-disabled,.el-button--primary.is-text.is-disabled:active,.el-button--primary.is-text.is-disabled:focus,.el-button--primary.is-text.is-disabled:hover{background-color:var(--el-color-primary-light-9);border-color:var(--el-color-primary-light-8);color:var(--el-color-primary-light-5)}.el-button--success{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-success);--el-button-border-color:var(--el-color-success);--el-button-outline-color:var(--el-color-success-light-5);--el-button-active-color:var(--el-color-success-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-success-light-5);--el-button-hover-bg-color:var(--el-color-success-light-3);--el-button-hover-border-color:var(--el-color-success-light-3);--el-button-active-bg-color:var(--el-color-success-dark-2);--el-button-active-border-color:var(--el-color-success-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-success-light-5);--el-button-disabled-border-color:var(--el-color-success-light-5)}.el-button--success.is-link,.el-button--success.is-plain,.el-button--success.is-text{--el-button-text-color:var(--el-color-success);--el-button-bg-color:var(--el-color-success-light-9);--el-button-border-color:var(--el-color-success-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-success);--el-button-hover-border-color:var(--el-color-success);--el-button-active-text-color:var(--el-color-white)}.el-button--success.is-link.is-disabled,.el-button--success.is-link.is-disabled:active,.el-button--success.is-link.is-disabled:focus,.el-button--success.is-link.is-disabled:hover,.el-button--success.is-plain.is-disabled,.el-button--success.is-plain.is-disabled:active,.el-button--success.is-plain.is-disabled:focus,.el-button--success.is-plain.is-disabled:hover,.el-button--success.is-text.is-disabled,.el-button--success.is-text.is-disabled:active,.el-button--success.is-text.is-disabled:focus,.el-button--success.is-text.is-disabled:hover{background-color:var(--el-color-success-light-9);border-color:var(--el-color-success-light-8);color:var(--el-color-success-light-5)}.el-button--warning{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-warning);--el-button-border-color:var(--el-color-warning);--el-button-outline-color:var(--el-color-warning-light-5);--el-button-active-color:var(--el-color-warning-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-warning-light-5);--el-button-hover-bg-color:var(--el-color-warning-light-3);--el-button-hover-border-color:var(--el-color-warning-light-3);--el-button-active-bg-color:var(--el-color-warning-dark-2);--el-button-active-border-color:var(--el-color-warning-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-warning-light-5);--el-button-disabled-border-color:var(--el-color-warning-light-5)}.el-button--warning.is-link,.el-button--warning.is-plain,.el-button--warning.is-text{--el-button-text-color:var(--el-color-warning);--el-button-bg-color:var(--el-color-warning-light-9);--el-button-border-color:var(--el-color-warning-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-warning);--el-button-hover-border-color:var(--el-color-warning);--el-button-active-text-color:var(--el-color-white)}.el-button--warning.is-link.is-disabled,.el-button--warning.is-link.is-disabled:active,.el-button--warning.is-link.is-disabled:focus,.el-button--warning.is-link.is-disabled:hover,.el-button--warning.is-plain.is-disabled,.el-button--warning.is-plain.is-disabled:active,.el-button--warning.is-plain.is-disabled:focus,.el-button--warning.is-plain.is-disabled:hover,.el-button--warning.is-text.is-disabled,.el-button--warning.is-text.is-disabled:active,.el-button--warning.is-text.is-disabled:focus,.el-button--warning.is-text.is-disabled:hover{background-color:var(--el-color-warning-light-9);border-color:var(--el-color-warning-light-8);color:var(--el-color-warning-light-5)}.el-button--danger{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-danger);--el-button-border-color:var(--el-color-danger);--el-button-outline-color:var(--el-color-danger-light-5);--el-button-active-color:var(--el-color-danger-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-danger-light-5);--el-button-hover-bg-color:var(--el-color-danger-light-3);--el-button-hover-border-color:var(--el-color-danger-light-3);--el-button-active-bg-color:var(--el-color-danger-dark-2);--el-button-active-border-color:var(--el-color-danger-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-danger-light-5);--el-button-disabled-border-color:var(--el-color-danger-light-5)}.el-button--danger.is-link,.el-button--danger.is-plain,.el-button--danger.is-text{--el-button-text-color:var(--el-color-danger);--el-button-bg-color:var(--el-color-danger-light-9);--el-button-border-color:var(--el-color-danger-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-danger);--el-button-hover-border-color:var(--el-color-danger);--el-button-active-text-color:var(--el-color-white)}.el-button--danger.is-link.is-disabled,.el-button--danger.is-link.is-disabled:active,.el-button--danger.is-link.is-disabled:focus,.el-button--danger.is-link.is-disabled:hover,.el-button--danger.is-plain.is-disabled,.el-button--danger.is-plain.is-disabled:active,.el-button--danger.is-plain.is-disabled:focus,.el-button--danger.is-plain.is-disabled:hover,.el-button--danger.is-text.is-disabled,.el-button--danger.is-text.is-disabled:active,.el-button--danger.is-text.is-disabled:focus,.el-button--danger.is-text.is-disabled:hover{background-color:var(--el-color-danger-light-9);border-color:var(--el-color-danger-light-8);color:var(--el-color-danger-light-5)}.el-button--info{--el-button-text-color:var(--el-color-white);--el-button-bg-color:var(--el-color-info);--el-button-border-color:var(--el-color-info);--el-button-outline-color:var(--el-color-info-light-5);--el-button-active-color:var(--el-color-info-dark-2);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-link-text-color:var(--el-color-info-light-5);--el-button-hover-bg-color:var(--el-color-info-light-3);--el-button-hover-border-color:var(--el-color-info-light-3);--el-button-active-bg-color:var(--el-color-info-dark-2);--el-button-active-border-color:var(--el-color-info-dark-2);--el-button-disabled-text-color:var(--el-color-white);--el-button-disabled-bg-color:var(--el-color-info-light-5);--el-button-disabled-border-color:var(--el-color-info-light-5)}.el-button--info.is-link,.el-button--info.is-plain,.el-button--info.is-text{--el-button-text-color:var(--el-color-info);--el-button-bg-color:var(--el-color-info-light-9);--el-button-border-color:var(--el-color-info-light-5);--el-button-hover-text-color:var(--el-color-white);--el-button-hover-bg-color:var(--el-color-info);--el-button-hover-border-color:var(--el-color-info);--el-button-active-text-color:var(--el-color-white)}.el-button--info.is-link.is-disabled,.el-button--info.is-link.is-disabled:active,.el-button--info.is-link.is-disabled:focus,.el-button--info.is-link.is-disabled:hover,.el-button--info.is-plain.is-disabled,.el-button--info.is-plain.is-disabled:active,.el-button--info.is-plain.is-disabled:focus,.el-button--info.is-plain.is-disabled:hover,.el-button--info.is-text.is-disabled,.el-button--info.is-text.is-disabled:active,.el-button--info.is-text.is-disabled:focus,.el-button--info.is-text.is-disabled:hover{background-color:var(--el-color-info-light-9);border-color:var(--el-color-info-light-8);color:var(--el-color-info-light-5)}.el-button--large{--el-button-size:40px;height:var(--el-button-size)}.el-button--large [class*=el-icon]+span{margin-left:8px}.el-button--large{border-radius:var(--el-border-radius-base);font-size:var(--el-font-size-base);padding:12px 19px}.el-button--large.is-round{padding:12px 19px}.el-button--large.is-circle{padding:12px;width:var(--el-button-size)}.el-button--small{--el-button-size:24px;height:var(--el-button-size)}.el-button--small [class*=el-icon]+span{margin-left:4px}.el-button--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:12px;padding:5px 11px}.el-button--small.is-round{padding:5px 11px}.el-button--small.is-circle{padding:5px;width:var(--el-button-size)}.el-calendar{--el-calendar-border:var(--el-table-border,1px solid var(--el-border-color-lighter));--el-calendar-header-border-bottom:var(--el-calendar-border);--el-calendar-selected-bg-color:var(--el-color-primary-light-9);--el-calendar-cell-width:85px;background-color:var(--el-fill-color-blank)}.el-calendar__header{border-bottom:var(--el-calendar-header-border-bottom);display:flex;justify-content:space-between;padding:12px 20px}.el-calendar__title{align-self:center;color:var(--el-text-color)}.el-calendar__body{padding:12px 20px 35px}.el-calendar-table{table-layout:fixed;width:100%}.el-calendar-table thead th{color:var(--el-text-color-regular);font-weight:400;padding:12px 0}.el-calendar-table:not(.is-range) td.next,.el-calendar-table:not(.is-range) td.prev{color:var(--el-text-color-placeholder)}.el-calendar-table td{border-bottom:var(--el-calendar-border);border-right:var(--el-calendar-border);transition:background-color var(--el-transition-duration-fast) ease;vertical-align:top}.el-calendar-table td.is-selected{background-color:var(--el-calendar-selected-bg-color)}.el-calendar-table td.is-today{color:var(--el-color-primary)}.el-calendar-table tr:first-child td{border-top:var(--el-calendar-border)}.el-calendar-table tr td:first-child{border-left:var(--el-calendar-border)}.el-calendar-table tr.el-calendar-table__row--hide-border td{border-top:none}.el-calendar-table .el-calendar-day{box-sizing:border-box;height:var(--el-calendar-cell-width);padding:8px}.el-calendar-table .el-calendar-day:hover{background-color:var(--el-calendar-selected-bg-color);cursor:pointer}.el-card{--el-card-border-color:var(--el-border-color-light);--el-card-border-radius:4px;--el-card-padding:20px;--el-card-bg-color:var(--el-fill-color-blank);background-color:var(--el-card-bg-color);border:1px solid var(--el-card-border-color);border-radius:var(--el-card-border-radius);color:var(--el-text-color-primary);overflow:hidden;transition:var(--el-transition-duration)}.el-card.is-always-shadow,.el-card.is-hover-shadow:focus,.el-card.is-hover-shadow:hover{box-shadow:var(--el-box-shadow-light)}.el-card__header{border-bottom:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-card__body{padding:var(--el-card-padding)}.el-card__footer{border-top:1px solid var(--el-card-border-color);box-sizing:border-box;padding:calc(var(--el-card-padding) - 2px) var(--el-card-padding)}.el-carousel__item{display:inline-block;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%}.el-carousel__item,.el-carousel__item.is-active{z-index:calc(var(--el-index-normal) - 1)}.el-carousel__item--card,.el-carousel__item.is-animating{transition:transform .4s ease-in-out}.el-carousel__item--card{width:50%}.el-carousel__item--card.is-in-stage{cursor:pointer;z-index:var(--el-index-normal)}.el-carousel__item--card.is-in-stage.is-hover .el-carousel__mask,.el-carousel__item--card.is-in-stage:hover .el-carousel__mask{opacity:.12}.el-carousel__item--card.is-active{z-index:calc(var(--el-index-normal) + 1)}.el-carousel__item--card-vertical{height:50%;width:100%}.el-carousel__mask{background-color:var(--el-color-white);height:100%;left:0;opacity:.24;position:absolute;top:0;transition:var(--el-transition-duration-fast);width:100%}.el-carousel{--el-carousel-arrow-font-size:12px;--el-carousel-arrow-size:36px;--el-carousel-arrow-background:rgba(31,45,61,.11);--el-carousel-arrow-hover-background:rgba(31,45,61,.23);--el-carousel-indicator-width:30px;--el-carousel-indicator-height:2px;--el-carousel-indicator-padding-horizontal:4px;--el-carousel-indicator-padding-vertical:12px;--el-carousel-indicator-out-color:var(--el-border-color-hover);position:relative}.el-carousel--horizontal,.el-carousel--vertical{overflow:hidden}.el-carousel__container{height:300px;position:relative}.el-carousel__arrow{align-items:center;background-color:var(--el-carousel-arrow-background);border:none;border-radius:50%;color:#fff;cursor:pointer;display:inline-flex;font-size:var(--el-carousel-arrow-font-size);height:var(--el-carousel-arrow-size);justify-content:center;margin:0;outline:none;padding:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);transition:var(--el-transition-duration);width:var(--el-carousel-arrow-size);z-index:10}.el-carousel__arrow--left{left:16px}.el-carousel__arrow--right{right:16px}.el-carousel__arrow:hover{background-color:var(--el-carousel-arrow-hover-background)}.el-carousel__arrow i{cursor:pointer}.el-carousel__indicators{list-style:none;margin:0;padding:0;position:absolute;z-index:calc(var(--el-index-normal) + 1)}.el-carousel__indicators--horizontal{bottom:0;left:50%;transform:translate(-50%)}.el-carousel__indicators--vertical{right:0;top:50%;transform:translateY(-50%)}.el-carousel__indicators--outside{bottom:calc(var(--el-carousel-indicator-height) + var(--el-carousel-indicator-padding-vertical)*2);position:static;text-align:center;transform:none}.el-carousel__indicators--outside .el-carousel__indicator:hover button{opacity:.64}.el-carousel__indicators--outside button{background-color:var(--el-carousel-indicator-out-color);opacity:.24}.el-carousel__indicators--right{right:0}.el-carousel__indicators--labels{left:0;right:0;text-align:center;transform:none}.el-carousel__indicators--labels .el-carousel__button{color:#000;font-size:12px;height:auto;padding:2px 18px;width:auto}.el-carousel__indicators--labels .el-carousel__indicator{padding:6px 4px}.el-carousel__indicator{background-color:transparent;cursor:pointer}.el-carousel__indicator:hover button{opacity:.72}.el-carousel__indicator--horizontal{display:inline-block;padding:var(--el-carousel-indicator-padding-vertical) var(--el-carousel-indicator-padding-horizontal)}.el-carousel__indicator--vertical{padding:var(--el-carousel-indicator-padding-horizontal) var(--el-carousel-indicator-padding-vertical)}.el-carousel__indicator--vertical .el-carousel__button{height:calc(var(--el-carousel-indicator-width)/2);width:var(--el-carousel-indicator-height)}.el-carousel__indicator.is-active button{opacity:1}.el-carousel__button{background-color:#fff;border:none;cursor:pointer;display:block;height:var(--el-carousel-indicator-height);margin:0;opacity:.48;outline:none;padding:0;transition:var(--el-transition-duration);width:var(--el-carousel-indicator-width)}.carousel-arrow-left-enter-from,.carousel-arrow-left-leave-active{opacity:0;transform:translateY(-50%) translate(-10px)}.carousel-arrow-right-enter-from,.carousel-arrow-right-leave-active{opacity:0;transform:translateY(-50%) translate(10px)}.el-transitioning{filter:url(#elCarouselHorizontal)}.el-transitioning-vertical{filter:url(#elCarouselVertical)}.el-cascader-panel{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);display:flex;font-size:var(--el-cascader-menu-font-size)}.el-cascader-panel.is-bordered{border:var(--el-cascader-menu-border);border-radius:var(--el-cascader-menu-radius)}.el-cascader-menu{border-right:var(--el-cascader-menu-border);box-sizing:border-box;color:var(--el-cascader-menu-text-color);min-width:180px}.el-cascader-menu:last-child{border-right:none}.el-cascader-menu:last-child .el-cascader-node{padding-right:20px}.el-cascader-menu__wrap.el-scrollbar__wrap{height:204px}.el-cascader-menu__list{box-sizing:border-box;list-style:none;margin:0;min-height:100%;padding:6px 0;position:relative}.el-cascader-menu__hover-zone{height:100%;left:0;pointer-events:none;position:absolute;top:0;width:100%}.el-cascader-menu__empty-text{align-items:center;color:var(--el-cascader-color-empty);display:flex;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-cascader-menu__empty-text .is-loading{margin-right:2px}.el-cascader-node{align-items:center;display:flex;height:34px;line-height:34px;outline:none;padding:0 30px 0 20px;position:relative}.el-cascader-node.is-selectable.in-active-path{color:var(--el-cascader-menu-text-color)}.el-cascader-node.in-active-path,.el-cascader-node.is-active,.el-cascader-node.is-selectable.in-checked-path{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader-node:not(.is-disabled){cursor:pointer}.el-cascader-node:not(.is-disabled):focus,.el-cascader-node:not(.is-disabled):hover{background:var(--el-cascader-node-background-hover)}.el-cascader-node.is-disabled{color:var(--el-cascader-node-color-disabled);cursor:not-allowed}.el-cascader-node__prefix{left:10px;position:absolute}.el-cascader-node__postfix{position:absolute;right:10px}.el-cascader-node__label{flex:1;overflow:hidden;padding:0 8px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-cascader-node>.el-checkbox,.el-cascader-node>.el-radio{margin-right:0}.el-cascader-node>.el-radio .el-radio__label{padding-left:0}.el-cascader{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);display:inline-block;font-size:var(--el-font-size-base);line-height:32px;outline:none;position:relative;vertical-align:middle}.el-cascader:not(.is-disabled):hover .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset;cursor:pointer}.el-cascader .el-input{cursor:pointer;display:flex}.el-cascader .el-input .el-input__inner{cursor:pointer;text-overflow:ellipsis}.el-cascader .el-input .el-input__suffix-inner .el-icon{height:calc(100% - 2px)}.el-cascader .el-input .el-input__suffix-inner .el-icon svg{vertical-align:middle}.el-cascader .el-input .icon-arrow-down{font-size:14px;transition:transform var(--el-transition-duration)}.el-cascader .el-input .icon-arrow-down.is-reverse{transform:rotate(180deg)}.el-cascader .el-input .icon-circle-close:hover{color:var(--el-input-clear-hover-color,var(--el-text-color-secondary))}.el-cascader .el-input.is-focus .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-cascader--large{font-size:14px;line-height:40px}.el-cascader--large .el-cascader__tags{gap:6px;padding:8px}.el-cascader--large .el-cascader__search-input{height:24px;margin-left:7px}.el-cascader--small{font-size:12px;line-height:24px}.el-cascader--small .el-cascader__tags{gap:4px;padding:2px}.el-cascader--small .el-cascader__search-input{height:20px;margin-left:5px}.el-cascader.is-disabled .el-cascader__label{color:var(--el-disabled-text-color);z-index:calc(var(--el-index-normal) + 1)}.el-cascader__dropdown{--el-cascader-menu-text-color:var(--el-text-color-regular);--el-cascader-menu-selected-text-color:var(--el-color-primary);--el-cascader-menu-fill:var(--el-bg-color-overlay);--el-cascader-menu-font-size:var(--el-font-size-base);--el-cascader-menu-radius:var(--el-border-radius-base);--el-cascader-menu-border:solid 1px var(--el-border-color-light);--el-cascader-menu-shadow:var(--el-box-shadow-light);--el-cascader-node-background-hover:var(--el-fill-color-light);--el-cascader-node-color-disabled:var(--el-text-color-placeholder);--el-cascader-color-empty:var(--el-text-color-placeholder);--el-cascader-tag-background:var(--el-fill-color);border-radius:var(--el-cascader-menu-radius);font-size:var(--el-cascader-menu-font-size)}.el-cascader__dropdown.el-popper{background:var(--el-cascader-menu-fill)}.el-cascader__dropdown.el-popper,.el-cascader__dropdown.el-popper .el-popper__arrow:before{border:var(--el-cascader-menu-border)}.el-cascader__dropdown.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-cascader__dropdown.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-cascader__dropdown.el-popper{box-shadow:var(--el-cascader-menu-shadow)}.el-cascader__tags{box-sizing:border-box;display:flex;flex-wrap:wrap;gap:6px;left:0;line-height:normal;padding:4px;position:absolute;right:30px;text-align:left;top:50%;transform:translateY(-50%)}.el-cascader__tags .el-tag{align-items:center;background:var(--el-cascader-tag-background);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__tags .el-tag.el-tag--dark,.el-cascader__tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__tags .el-tag+input{margin-left:0}.el-cascader__tags.is-validate{right:55px}.el-cascader__collapse-tags{white-space:normal;z-index:var(--el-index-normal)}.el-cascader__collapse-tags .el-tag{align-items:center;background:var(--el-fill-color);display:inline-flex;max-width:100%;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag.el-tag--dark,.el-cascader__collapse-tags .el-tag.el-tag--plain{background-color:var(--el-tag-bg-color)}.el-cascader__collapse-tags .el-tag:not(.is-hit){border-color:transparent}.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--dark,.el-cascader__collapse-tags .el-tag:not(.is-hit).el-tag--plain{border-color:var(--el-tag-border-color)}.el-cascader__collapse-tags .el-tag>span{flex:1;overflow:hidden;text-overflow:ellipsis}.el-cascader__collapse-tags .el-tag .el-icon-close{background-color:var(--el-text-color-placeholder);color:var(--el-color-white);flex:none}.el-cascader__collapse-tags .el-tag .el-icon-close:hover{background-color:var(--el-text-color-secondary)}.el-cascader__collapse-tags .el-tag+input{margin-left:0}.el-cascader__suggestion-panel{border-radius:var(--el-cascader-menu-radius)}.el-cascader__suggestion-list{color:var(--el-cascader-menu-text-color);font-size:var(--el-font-size-base);margin:0;max-height:204px;padding:6px 0;text-align:center}.el-cascader__suggestion-item{align-items:center;cursor:pointer;display:flex;height:34px;justify-content:space-between;outline:none;padding:0 15px;text-align:left}.el-cascader__suggestion-item:focus,.el-cascader__suggestion-item:hover{background:var(--el-cascader-node-background-hover)}.el-cascader__suggestion-item.is-checked{color:var(--el-cascader-menu-selected-text-color);font-weight:700}.el-cascader__suggestion-item>span{margin-right:10px}.el-cascader__empty-text{color:var(--el-cascader-color-empty);margin:10px 0}.el-cascader__search-input{background:transparent;border:none;box-sizing:border-box;color:var(--el-cascader-menu-text-color);flex:1;height:24px;margin-left:7px;min-width:60px;outline:none;padding:0}.el-cascader__search-input::-moz-placeholder{color:transparent}.el-cascader__search-input::placeholder{color:transparent}.el-check-tag{background-color:var(--el-color-info-light-9);border-radius:var(--el-border-radius-base);color:var(--el-color-info);cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:700;line-height:var(--el-font-size-base);padding:7px 15px;transition:var(--el-transition-all)}.el-check-tag:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--primary.is-checked{background-color:var(--el-color-primary-light-8);color:var(--el-color-primary)}.el-check-tag.el-check-tag--primary.is-checked:hover{background-color:var(--el-color-primary-light-7)}.el-check-tag.el-check-tag--primary.is-checked.is-disabled{background-color:var(--el-color-primary-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-checked.is-disabled:hover{background-color:var(--el-color-primary-light-8)}.el-check-tag.el-check-tag--primary.is-disabled{background-color:var(--el-color-info-light-9);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--primary.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-check-tag.el-check-tag--success.is-checked{background-color:var(--el-color-success-light-8);color:var(--el-color-success)}.el-check-tag.el-check-tag--success.is-checked:hover{background-color:var(--el-color-success-light-7)}.el-check-tag.el-check-tag--success.is-checked.is-disabled{background-color:var(--el-color-success-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-checked.is-disabled:hover{background-color:var(--el-color-success-light-8)}.el-check-tag.el-check-tag--success.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--success.is-disabled,.el-check-tag.el-check-tag--success.is-disabled:hover{background-color:var(--el-color-success-light-9)}.el-check-tag.el-check-tag--warning.is-checked{background-color:var(--el-color-warning-light-8);color:var(--el-color-warning)}.el-check-tag.el-check-tag--warning.is-checked:hover{background-color:var(--el-color-warning-light-7)}.el-check-tag.el-check-tag--warning.is-checked.is-disabled{background-color:var(--el-color-warning-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-checked.is-disabled:hover{background-color:var(--el-color-warning-light-8)}.el-check-tag.el-check-tag--warning.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--warning.is-disabled,.el-check-tag.el-check-tag--warning.is-disabled:hover{background-color:var(--el-color-warning-light-9)}.el-check-tag.el-check-tag--danger.is-checked{background-color:var(--el-color-danger-light-8);color:var(--el-color-danger)}.el-check-tag.el-check-tag--danger.is-checked:hover{background-color:var(--el-color-danger-light-7)}.el-check-tag.el-check-tag--danger.is-checked.is-disabled{background-color:var(--el-color-danger-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-checked.is-disabled:hover{background-color:var(--el-color-danger-light-8)}.el-check-tag.el-check-tag--danger.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--danger.is-disabled,.el-check-tag.el-check-tag--danger.is-disabled:hover{background-color:var(--el-color-danger-light-9)}.el-check-tag.el-check-tag--error.is-checked{background-color:var(--el-color-error-light-8);color:var(--el-color-error)}.el-check-tag.el-check-tag--error.is-checked:hover{background-color:var(--el-color-error-light-7)}.el-check-tag.el-check-tag--error.is-checked.is-disabled{background-color:var(--el-color-error-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-checked.is-disabled:hover{background-color:var(--el-color-error-light-8)}.el-check-tag.el-check-tag--error.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--error.is-disabled,.el-check-tag.el-check-tag--error.is-disabled:hover{background-color:var(--el-color-error-light-9)}.el-check-tag.el-check-tag--info.is-checked{background-color:var(--el-color-info-light-8);color:var(--el-color-info)}.el-check-tag.el-check-tag--info.is-checked:hover{background-color:var(--el-color-info-light-7)}.el-check-tag.el-check-tag--info.is-checked.is-disabled{background-color:var(--el-color-info-light-8);color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-checked.is-disabled:hover{background-color:var(--el-color-info-light-8)}.el-check-tag.el-check-tag--info.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-check-tag.el-check-tag--info.is-disabled,.el-check-tag.el-check-tag--info.is-disabled:hover{background-color:var(--el-color-info-light-9)}.el-checkbox-button{--el-checkbox-button-checked-bg-color:var(--el-color-primary);--el-checkbox-button-checked-text-color:var(--el-color-white);--el-checkbox-button-checked-border-color:var(--el-color-primary);display:inline-block;position:relative}.el-checkbox-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left-color:transparent;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);line-height:1;margin:0;outline:none;padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-checkbox-button__inner.is-round{padding:8px 15px}.el-checkbox-button__inner:hover{color:var(--el-color-primary)}.el-checkbox-button__inner [class*=el-icon-]{line-height:.9}.el-checkbox-button__inner [class*=el-icon-]+span{margin-left:5px}.el-checkbox-button__original{margin:0;opacity:0;outline:none;position:absolute;z-index:-1}.el-checkbox-button.is-checked .el-checkbox-button__inner{background-color:var(--el-checkbox-button-checked-bg-color);border-color:var(--el-checkbox-button-checked-border-color);box-shadow:-1px 0 0 0 var(--el-color-primary-light-7);color:var(--el-checkbox-button-checked-text-color)}.el-checkbox-button.is-checked:first-child .el-checkbox-button__inner{border-left-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button.is-disabled .el-checkbox-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox-button.is-disabled:first-child .el-checkbox-button__inner{border-left-color:var(--el-button-disabled-border-color,var(--el-border-color-light))}.el-checkbox-button:first-child .el-checkbox-button__inner{border-bottom-left-radius:var(--el-border-radius-base);border-left:var(--el-border);border-top-left-radius:var(--el-border-radius-base);box-shadow:none!important}.el-checkbox-button.is-focus .el-checkbox-button__inner{border-color:var(--el-checkbox-button-checked-border-color)}.el-checkbox-button:last-child .el-checkbox-button__inner{border-bottom-right-radius:var(--el-border-radius-base);border-top-right-radius:var(--el-border-radius-base)}.el-checkbox-button--large .el-checkbox-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-checkbox-button--large .el-checkbox-button__inner.is-round{padding:12px 19px}.el-checkbox-button--small .el-checkbox-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-checkbox-button--small .el-checkbox-button__inner.is-round{padding:5px 11px}.el-checkbox-group{font-size:0;line-height:0}.el-checkbox{--el-checkbox-font-size:14px;--el-checkbox-font-weight:var(--el-font-weight-primary);--el-checkbox-text-color:var(--el-text-color-regular);--el-checkbox-input-height:14px;--el-checkbox-input-width:14px;--el-checkbox-border-radius:var(--el-border-radius-small);--el-checkbox-bg-color:var(--el-fill-color-blank);--el-checkbox-input-border:var(--el-border);--el-checkbox-disabled-border-color:var(--el-border-color);--el-checkbox-disabled-input-fill:var(--el-fill-color-light);--el-checkbox-disabled-icon-color:var(--el-text-color-placeholder);--el-checkbox-disabled-checked-input-fill:var(--el-border-color-extra-light);--el-checkbox-disabled-checked-input-border-color:var(--el-border-color);--el-checkbox-disabled-checked-icon-color:var(--el-text-color-placeholder);--el-checkbox-checked-text-color:var(--el-color-primary);--el-checkbox-checked-input-border-color:var(--el-color-primary);--el-checkbox-checked-bg-color:var(--el-color-primary);--el-checkbox-checked-icon-color:var(--el-color-white);--el-checkbox-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-checkbox-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-checkbox-font-weight);height:var(--el-checkbox-height,32px);margin-right:30px;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-checkbox.is-disabled{cursor:not-allowed}.el-checkbox.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-checkbox.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-checkbox.is-bordered.is-disabled{border-color:var(--el-border-color-lighter)}.el-checkbox.is-bordered.el-checkbox--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__label{font-size:var(--el-font-size-base)}.el-checkbox.is-bordered.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.is-bordered.el-checkbox--small{border-radius:calc(var(--el-border-radius-base) - 1px);padding:0 11px 0 7px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.is-bordered.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox input:focus-visible+.el-checkbox__inner{border-radius:var(--el-checkbox-border-radius);outline:2px solid var(--el-checkbox-input-border-color-hover);outline-offset:1px}.el-checkbox__input{cursor:pointer;display:inline-flex;outline:none;position:relative;white-space:nowrap}.el-checkbox__input.is-disabled .el-checkbox__inner{background-color:var(--el-checkbox-disabled-input-fill);border-color:var(--el-checkbox-disabled-border-color);cursor:not-allowed}.el-checkbox__input.is-disabled .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-icon-color);cursor:not-allowed}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-disabled-checked-input-fill);border-color:var(--el-checkbox-disabled-checked-input-border-color)}.el-checkbox__input.is-disabled.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-disabled-checked-icon-color);border-color:var(--el-checkbox-disabled-checked-icon-color)}.el-checkbox__input.is-disabled+span.el-checkbox__label{color:var(--el-disabled-text-color);cursor:not-allowed}.el-checkbox__input.is-checked .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-checked .el-checkbox__inner:after{border-color:var(--el-checkbox-checked-icon-color);transform:rotate(45deg) scaleY(1)}.el-checkbox__input.is-checked+.el-checkbox__label{color:var(--el-checkbox-checked-text-color)}.el-checkbox__input.is-focus:not(.is-checked) .el-checkbox__original:not(:focus-visible){border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__input.is-indeterminate .el-checkbox__inner{background-color:var(--el-checkbox-checked-bg-color);border-color:var(--el-checkbox-checked-input-border-color)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:before{background-color:var(--el-checkbox-checked-icon-color);content:\"\";display:block;height:2px;left:0;position:absolute;right:0;top:5px;transform:scale(.5)}.el-checkbox__input.is-indeterminate .el-checkbox__inner:after{display:none}.el-checkbox__inner{background-color:var(--el-checkbox-bg-color);border:var(--el-checkbox-input-border);border-radius:var(--el-checkbox-border-radius);box-sizing:border-box;display:inline-block;height:var(--el-checkbox-input-height);position:relative;transition:border-color .25s cubic-bezier(.71,-.46,.29,1.46),background-color .25s cubic-bezier(.71,-.46,.29,1.46),outline .25s cubic-bezier(.71,-.46,.29,1.46);width:var(--el-checkbox-input-width);z-index:var(--el-index-normal)}.el-checkbox__inner:hover{border-color:var(--el-checkbox-input-border-color-hover)}.el-checkbox__inner:after{border:1px solid transparent;border-left:0;border-top:0;box-sizing:content-box;content:\"\";height:7px;left:4px;position:absolute;top:1px;transform:rotate(45deg) scaleY(0);transform-origin:center;transition:transform .15s ease-in .05s;width:3px}.el-checkbox__original{height:0;margin:0;opacity:0;outline:none;position:absolute;width:0;z-index:-1}.el-checkbox__label{display:inline-block;font-size:var(--el-checkbox-font-size);line-height:1;padding-left:8px}.el-checkbox.el-checkbox--large{height:40px}.el-checkbox.el-checkbox--large .el-checkbox__label{font-size:14px}.el-checkbox.el-checkbox--large .el-checkbox__inner{height:14px;width:14px}.el-checkbox.el-checkbox--small{height:24px}.el-checkbox.el-checkbox--small .el-checkbox__label{font-size:12px}.el-checkbox.el-checkbox--small .el-checkbox__inner{height:12px;width:12px}.el-checkbox.el-checkbox--small .el-checkbox__input.is-indeterminate .el-checkbox__inner:before{top:4px}.el-checkbox.el-checkbox--small .el-checkbox__inner:after{height:6px;width:2px}.el-checkbox:last-of-type{margin-right:0}[class*=el-col-]{box-sizing:border-box}[class*=el-col-].is-guttered{display:block;min-height:1px}.el-col-0{flex:0 0 0%;max-width:0}.el-col-0,.el-col-0.is-guttered{display:none}.el-col-offset-0{margin-left:0}.el-col-pull-0{position:relative;right:0}.el-col-push-0{left:0;position:relative}.el-col-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-1,.el-col-1.is-guttered{display:block}.el-col-offset-1{margin-left:4.1666666667%}.el-col-pull-1{position:relative;right:4.1666666667%}.el-col-push-1{left:4.1666666667%;position:relative}.el-col-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-2,.el-col-2.is-guttered{display:block}.el-col-offset-2{margin-left:8.3333333333%}.el-col-pull-2{position:relative;right:8.3333333333%}.el-col-push-2{left:8.3333333333%;position:relative}.el-col-3{flex:0 0 12.5%;max-width:12.5%}.el-col-3,.el-col-3.is-guttered{display:block}.el-col-offset-3{margin-left:12.5%}.el-col-pull-3{position:relative;right:12.5%}.el-col-push-3{left:12.5%;position:relative}.el-col-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-4,.el-col-4.is-guttered{display:block}.el-col-offset-4{margin-left:16.6666666667%}.el-col-pull-4{position:relative;right:16.6666666667%}.el-col-push-4{left:16.6666666667%;position:relative}.el-col-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-5,.el-col-5.is-guttered{display:block}.el-col-offset-5{margin-left:20.8333333333%}.el-col-pull-5{position:relative;right:20.8333333333%}.el-col-push-5{left:20.8333333333%;position:relative}.el-col-6{flex:0 0 25%;max-width:25%}.el-col-6,.el-col-6.is-guttered{display:block}.el-col-offset-6{margin-left:25%}.el-col-pull-6{position:relative;right:25%}.el-col-push-6{left:25%;position:relative}.el-col-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-7,.el-col-7.is-guttered{display:block}.el-col-offset-7{margin-left:29.1666666667%}.el-col-pull-7{position:relative;right:29.1666666667%}.el-col-push-7{left:29.1666666667%;position:relative}.el-col-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-8,.el-col-8.is-guttered{display:block}.el-col-offset-8{margin-left:33.3333333333%}.el-col-pull-8{position:relative;right:33.3333333333%}.el-col-push-8{left:33.3333333333%;position:relative}.el-col-9{flex:0 0 37.5%;max-width:37.5%}.el-col-9,.el-col-9.is-guttered{display:block}.el-col-offset-9{margin-left:37.5%}.el-col-pull-9{position:relative;right:37.5%}.el-col-push-9{left:37.5%;position:relative}.el-col-10{flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-10,.el-col-10.is-guttered{display:block}.el-col-offset-10{margin-left:41.6666666667%}.el-col-pull-10{position:relative;right:41.6666666667%}.el-col-push-10{left:41.6666666667%;position:relative}.el-col-11{flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-11,.el-col-11.is-guttered{display:block}.el-col-offset-11{margin-left:45.8333333333%}.el-col-pull-11{position:relative;right:45.8333333333%}.el-col-push-11{left:45.8333333333%;position:relative}.el-col-12{flex:0 0 50%;max-width:50%}.el-col-12,.el-col-12.is-guttered{display:block}.el-col-offset-12{margin-left:50%}.el-col-pull-12{position:relative;right:50%}.el-col-push-12{left:50%;position:relative}.el-col-13{flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-13,.el-col-13.is-guttered{display:block}.el-col-offset-13{margin-left:54.1666666667%}.el-col-pull-13{position:relative;right:54.1666666667%}.el-col-push-13{left:54.1666666667%;position:relative}.el-col-14{flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-14,.el-col-14.is-guttered{display:block}.el-col-offset-14{margin-left:58.3333333333%}.el-col-pull-14{position:relative;right:58.3333333333%}.el-col-push-14{left:58.3333333333%;position:relative}.el-col-15{flex:0 0 62.5%;max-width:62.5%}.el-col-15,.el-col-15.is-guttered{display:block}.el-col-offset-15{margin-left:62.5%}.el-col-pull-15{position:relative;right:62.5%}.el-col-push-15{left:62.5%;position:relative}.el-col-16{flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-16,.el-col-16.is-guttered{display:block}.el-col-offset-16{margin-left:66.6666666667%}.el-col-pull-16{position:relative;right:66.6666666667%}.el-col-push-16{left:66.6666666667%;position:relative}.el-col-17{flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-17,.el-col-17.is-guttered{display:block}.el-col-offset-17{margin-left:70.8333333333%}.el-col-pull-17{position:relative;right:70.8333333333%}.el-col-push-17{left:70.8333333333%;position:relative}.el-col-18{flex:0 0 75%;max-width:75%}.el-col-18,.el-col-18.is-guttered{display:block}.el-col-offset-18{margin-left:75%}.el-col-pull-18{position:relative;right:75%}.el-col-push-18{left:75%;position:relative}.el-col-19{flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-19,.el-col-19.is-guttered{display:block}.el-col-offset-19{margin-left:79.1666666667%}.el-col-pull-19{position:relative;right:79.1666666667%}.el-col-push-19{left:79.1666666667%;position:relative}.el-col-20{flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-20,.el-col-20.is-guttered{display:block}.el-col-offset-20{margin-left:83.3333333333%}.el-col-pull-20{position:relative;right:83.3333333333%}.el-col-push-20{left:83.3333333333%;position:relative}.el-col-21{flex:0 0 87.5%;max-width:87.5%}.el-col-21,.el-col-21.is-guttered{display:block}.el-col-offset-21{margin-left:87.5%}.el-col-pull-21{position:relative;right:87.5%}.el-col-push-21{left:87.5%;position:relative}.el-col-22{flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-22,.el-col-22.is-guttered{display:block}.el-col-offset-22{margin-left:91.6666666667%}.el-col-pull-22{position:relative;right:91.6666666667%}.el-col-push-22{left:91.6666666667%;position:relative}.el-col-23{flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-23,.el-col-23.is-guttered{display:block}.el-col-offset-23{margin-left:95.8333333333%}.el-col-pull-23{position:relative;right:95.8333333333%}.el-col-push-23{left:95.8333333333%;position:relative}.el-col-24{flex:0 0 100%;max-width:100%}.el-col-24,.el-col-24.is-guttered{display:block}.el-col-offset-24{margin-left:100%}.el-col-pull-24{position:relative;right:100%}.el-col-push-24{left:100%;position:relative}@media only screen and (max-width:767px){.el-col-xs-0{display:none;flex:0 0 0%;max-width:0}.el-col-xs-0.is-guttered{display:none}.el-col-xs-offset-0{margin-left:0}.el-col-xs-pull-0{position:relative;right:0}.el-col-xs-push-0{left:0;position:relative}.el-col-xs-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xs-1,.el-col-xs-1.is-guttered{display:block}.el-col-xs-offset-1{margin-left:4.1666666667%}.el-col-xs-pull-1{position:relative;right:4.1666666667%}.el-col-xs-push-1{left:4.1666666667%;position:relative}.el-col-xs-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xs-2,.el-col-xs-2.is-guttered{display:block}.el-col-xs-offset-2{margin-left:8.3333333333%}.el-col-xs-pull-2{position:relative;right:8.3333333333%}.el-col-xs-push-2{left:8.3333333333%;position:relative}.el-col-xs-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xs-3,.el-col-xs-3.is-guttered{display:block}.el-col-xs-offset-3{margin-left:12.5%}.el-col-xs-pull-3{position:relative;right:12.5%}.el-col-xs-push-3{left:12.5%;position:relative}.el-col-xs-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xs-4,.el-col-xs-4.is-guttered{display:block}.el-col-xs-offset-4{margin-left:16.6666666667%}.el-col-xs-pull-4{position:relative;right:16.6666666667%}.el-col-xs-push-4{left:16.6666666667%;position:relative}.el-col-xs-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xs-5,.el-col-xs-5.is-guttered{display:block}.el-col-xs-offset-5{margin-left:20.8333333333%}.el-col-xs-pull-5{position:relative;right:20.8333333333%}.el-col-xs-push-5{left:20.8333333333%;position:relative}.el-col-xs-6{flex:0 0 25%;max-width:25%}.el-col-xs-6,.el-col-xs-6.is-guttered{display:block}.el-col-xs-offset-6{margin-left:25%}.el-col-xs-pull-6{position:relative;right:25%}.el-col-xs-push-6{left:25%;position:relative}.el-col-xs-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xs-7,.el-col-xs-7.is-guttered{display:block}.el-col-xs-offset-7{margin-left:29.1666666667%}.el-col-xs-pull-7{position:relative;right:29.1666666667%}.el-col-xs-push-7{left:29.1666666667%;position:relative}.el-col-xs-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xs-8,.el-col-xs-8.is-guttered{display:block}.el-col-xs-offset-8{margin-left:33.3333333333%}.el-col-xs-pull-8{position:relative;right:33.3333333333%}.el-col-xs-push-8{left:33.3333333333%;position:relative}.el-col-xs-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xs-9,.el-col-xs-9.is-guttered{display:block}.el-col-xs-offset-9{margin-left:37.5%}.el-col-xs-pull-9{position:relative;right:37.5%}.el-col-xs-push-9{left:37.5%;position:relative}.el-col-xs-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xs-10.is-guttered{display:block}.el-col-xs-offset-10{margin-left:41.6666666667%}.el-col-xs-pull-10{position:relative;right:41.6666666667%}.el-col-xs-push-10{left:41.6666666667%;position:relative}.el-col-xs-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xs-11.is-guttered{display:block}.el-col-xs-offset-11{margin-left:45.8333333333%}.el-col-xs-pull-11{position:relative;right:45.8333333333%}.el-col-xs-push-11{left:45.8333333333%;position:relative}.el-col-xs-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xs-12.is-guttered{display:block}.el-col-xs-offset-12{margin-left:50%}.el-col-xs-pull-12{position:relative;right:50%}.el-col-xs-push-12{left:50%;position:relative}.el-col-xs-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xs-13.is-guttered{display:block}.el-col-xs-offset-13{margin-left:54.1666666667%}.el-col-xs-pull-13{position:relative;right:54.1666666667%}.el-col-xs-push-13{left:54.1666666667%;position:relative}.el-col-xs-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xs-14.is-guttered{display:block}.el-col-xs-offset-14{margin-left:58.3333333333%}.el-col-xs-pull-14{position:relative;right:58.3333333333%}.el-col-xs-push-14{left:58.3333333333%;position:relative}.el-col-xs-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xs-15.is-guttered{display:block}.el-col-xs-offset-15{margin-left:62.5%}.el-col-xs-pull-15{position:relative;right:62.5%}.el-col-xs-push-15{left:62.5%;position:relative}.el-col-xs-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xs-16.is-guttered{display:block}.el-col-xs-offset-16{margin-left:66.6666666667%}.el-col-xs-pull-16{position:relative;right:66.6666666667%}.el-col-xs-push-16{left:66.6666666667%;position:relative}.el-col-xs-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xs-17.is-guttered{display:block}.el-col-xs-offset-17{margin-left:70.8333333333%}.el-col-xs-pull-17{position:relative;right:70.8333333333%}.el-col-xs-push-17{left:70.8333333333%;position:relative}.el-col-xs-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xs-18.is-guttered{display:block}.el-col-xs-offset-18{margin-left:75%}.el-col-xs-pull-18{position:relative;right:75%}.el-col-xs-push-18{left:75%;position:relative}.el-col-xs-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xs-19.is-guttered{display:block}.el-col-xs-offset-19{margin-left:79.1666666667%}.el-col-xs-pull-19{position:relative;right:79.1666666667%}.el-col-xs-push-19{left:79.1666666667%;position:relative}.el-col-xs-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xs-20.is-guttered{display:block}.el-col-xs-offset-20{margin-left:83.3333333333%}.el-col-xs-pull-20{position:relative;right:83.3333333333%}.el-col-xs-push-20{left:83.3333333333%;position:relative}.el-col-xs-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xs-21.is-guttered{display:block}.el-col-xs-offset-21{margin-left:87.5%}.el-col-xs-pull-21{position:relative;right:87.5%}.el-col-xs-push-21{left:87.5%;position:relative}.el-col-xs-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xs-22.is-guttered{display:block}.el-col-xs-offset-22{margin-left:91.6666666667%}.el-col-xs-pull-22{position:relative;right:91.6666666667%}.el-col-xs-push-22{left:91.6666666667%;position:relative}.el-col-xs-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xs-23.is-guttered{display:block}.el-col-xs-offset-23{margin-left:95.8333333333%}.el-col-xs-pull-23{position:relative;right:95.8333333333%}.el-col-xs-push-23{left:95.8333333333%;position:relative}.el-col-xs-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xs-24.is-guttered{display:block}.el-col-xs-offset-24{margin-left:100%}.el-col-xs-pull-24{position:relative;right:100%}.el-col-xs-push-24{left:100%;position:relative}}@media only screen and (min-width:768px){.el-col-sm-0{display:none;flex:0 0 0%;max-width:0}.el-col-sm-0.is-guttered{display:none}.el-col-sm-offset-0{margin-left:0}.el-col-sm-pull-0{position:relative;right:0}.el-col-sm-push-0{left:0;position:relative}.el-col-sm-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-sm-1,.el-col-sm-1.is-guttered{display:block}.el-col-sm-offset-1{margin-left:4.1666666667%}.el-col-sm-pull-1{position:relative;right:4.1666666667%}.el-col-sm-push-1{left:4.1666666667%;position:relative}.el-col-sm-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-sm-2,.el-col-sm-2.is-guttered{display:block}.el-col-sm-offset-2{margin-left:8.3333333333%}.el-col-sm-pull-2{position:relative;right:8.3333333333%}.el-col-sm-push-2{left:8.3333333333%;position:relative}.el-col-sm-3{flex:0 0 12.5%;max-width:12.5%}.el-col-sm-3,.el-col-sm-3.is-guttered{display:block}.el-col-sm-offset-3{margin-left:12.5%}.el-col-sm-pull-3{position:relative;right:12.5%}.el-col-sm-push-3{left:12.5%;position:relative}.el-col-sm-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-sm-4,.el-col-sm-4.is-guttered{display:block}.el-col-sm-offset-4{margin-left:16.6666666667%}.el-col-sm-pull-4{position:relative;right:16.6666666667%}.el-col-sm-push-4{left:16.6666666667%;position:relative}.el-col-sm-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-sm-5,.el-col-sm-5.is-guttered{display:block}.el-col-sm-offset-5{margin-left:20.8333333333%}.el-col-sm-pull-5{position:relative;right:20.8333333333%}.el-col-sm-push-5{left:20.8333333333%;position:relative}.el-col-sm-6{flex:0 0 25%;max-width:25%}.el-col-sm-6,.el-col-sm-6.is-guttered{display:block}.el-col-sm-offset-6{margin-left:25%}.el-col-sm-pull-6{position:relative;right:25%}.el-col-sm-push-6{left:25%;position:relative}.el-col-sm-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-sm-7,.el-col-sm-7.is-guttered{display:block}.el-col-sm-offset-7{margin-left:29.1666666667%}.el-col-sm-pull-7{position:relative;right:29.1666666667%}.el-col-sm-push-7{left:29.1666666667%;position:relative}.el-col-sm-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-sm-8,.el-col-sm-8.is-guttered{display:block}.el-col-sm-offset-8{margin-left:33.3333333333%}.el-col-sm-pull-8{position:relative;right:33.3333333333%}.el-col-sm-push-8{left:33.3333333333%;position:relative}.el-col-sm-9{flex:0 0 37.5%;max-width:37.5%}.el-col-sm-9,.el-col-sm-9.is-guttered{display:block}.el-col-sm-offset-9{margin-left:37.5%}.el-col-sm-pull-9{position:relative;right:37.5%}.el-col-sm-push-9{left:37.5%;position:relative}.el-col-sm-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-sm-10.is-guttered{display:block}.el-col-sm-offset-10{margin-left:41.6666666667%}.el-col-sm-pull-10{position:relative;right:41.6666666667%}.el-col-sm-push-10{left:41.6666666667%;position:relative}.el-col-sm-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-sm-11.is-guttered{display:block}.el-col-sm-offset-11{margin-left:45.8333333333%}.el-col-sm-pull-11{position:relative;right:45.8333333333%}.el-col-sm-push-11{left:45.8333333333%;position:relative}.el-col-sm-12{display:block;flex:0 0 50%;max-width:50%}.el-col-sm-12.is-guttered{display:block}.el-col-sm-offset-12{margin-left:50%}.el-col-sm-pull-12{position:relative;right:50%}.el-col-sm-push-12{left:50%;position:relative}.el-col-sm-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-sm-13.is-guttered{display:block}.el-col-sm-offset-13{margin-left:54.1666666667%}.el-col-sm-pull-13{position:relative;right:54.1666666667%}.el-col-sm-push-13{left:54.1666666667%;position:relative}.el-col-sm-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-sm-14.is-guttered{display:block}.el-col-sm-offset-14{margin-left:58.3333333333%}.el-col-sm-pull-14{position:relative;right:58.3333333333%}.el-col-sm-push-14{left:58.3333333333%;position:relative}.el-col-sm-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-sm-15.is-guttered{display:block}.el-col-sm-offset-15{margin-left:62.5%}.el-col-sm-pull-15{position:relative;right:62.5%}.el-col-sm-push-15{left:62.5%;position:relative}.el-col-sm-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-sm-16.is-guttered{display:block}.el-col-sm-offset-16{margin-left:66.6666666667%}.el-col-sm-pull-16{position:relative;right:66.6666666667%}.el-col-sm-push-16{left:66.6666666667%;position:relative}.el-col-sm-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-sm-17.is-guttered{display:block}.el-col-sm-offset-17{margin-left:70.8333333333%}.el-col-sm-pull-17{position:relative;right:70.8333333333%}.el-col-sm-push-17{left:70.8333333333%;position:relative}.el-col-sm-18{display:block;flex:0 0 75%;max-width:75%}.el-col-sm-18.is-guttered{display:block}.el-col-sm-offset-18{margin-left:75%}.el-col-sm-pull-18{position:relative;right:75%}.el-col-sm-push-18{left:75%;position:relative}.el-col-sm-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-sm-19.is-guttered{display:block}.el-col-sm-offset-19{margin-left:79.1666666667%}.el-col-sm-pull-19{position:relative;right:79.1666666667%}.el-col-sm-push-19{left:79.1666666667%;position:relative}.el-col-sm-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-sm-20.is-guttered{display:block}.el-col-sm-offset-20{margin-left:83.3333333333%}.el-col-sm-pull-20{position:relative;right:83.3333333333%}.el-col-sm-push-20{left:83.3333333333%;position:relative}.el-col-sm-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-sm-21.is-guttered{display:block}.el-col-sm-offset-21{margin-left:87.5%}.el-col-sm-pull-21{position:relative;right:87.5%}.el-col-sm-push-21{left:87.5%;position:relative}.el-col-sm-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-sm-22.is-guttered{display:block}.el-col-sm-offset-22{margin-left:91.6666666667%}.el-col-sm-pull-22{position:relative;right:91.6666666667%}.el-col-sm-push-22{left:91.6666666667%;position:relative}.el-col-sm-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-sm-23.is-guttered{display:block}.el-col-sm-offset-23{margin-left:95.8333333333%}.el-col-sm-pull-23{position:relative;right:95.8333333333%}.el-col-sm-push-23{left:95.8333333333%;position:relative}.el-col-sm-24{display:block;flex:0 0 100%;max-width:100%}.el-col-sm-24.is-guttered{display:block}.el-col-sm-offset-24{margin-left:100%}.el-col-sm-pull-24{position:relative;right:100%}.el-col-sm-push-24{left:100%;position:relative}}@media only screen and (min-width:992px){.el-col-md-0{display:none;flex:0 0 0%;max-width:0}.el-col-md-0.is-guttered{display:none}.el-col-md-offset-0{margin-left:0}.el-col-md-pull-0{position:relative;right:0}.el-col-md-push-0{left:0;position:relative}.el-col-md-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-md-1,.el-col-md-1.is-guttered{display:block}.el-col-md-offset-1{margin-left:4.1666666667%}.el-col-md-pull-1{position:relative;right:4.1666666667%}.el-col-md-push-1{left:4.1666666667%;position:relative}.el-col-md-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-md-2,.el-col-md-2.is-guttered{display:block}.el-col-md-offset-2{margin-left:8.3333333333%}.el-col-md-pull-2{position:relative;right:8.3333333333%}.el-col-md-push-2{left:8.3333333333%;position:relative}.el-col-md-3{flex:0 0 12.5%;max-width:12.5%}.el-col-md-3,.el-col-md-3.is-guttered{display:block}.el-col-md-offset-3{margin-left:12.5%}.el-col-md-pull-3{position:relative;right:12.5%}.el-col-md-push-3{left:12.5%;position:relative}.el-col-md-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-md-4,.el-col-md-4.is-guttered{display:block}.el-col-md-offset-4{margin-left:16.6666666667%}.el-col-md-pull-4{position:relative;right:16.6666666667%}.el-col-md-push-4{left:16.6666666667%;position:relative}.el-col-md-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-md-5,.el-col-md-5.is-guttered{display:block}.el-col-md-offset-5{margin-left:20.8333333333%}.el-col-md-pull-5{position:relative;right:20.8333333333%}.el-col-md-push-5{left:20.8333333333%;position:relative}.el-col-md-6{flex:0 0 25%;max-width:25%}.el-col-md-6,.el-col-md-6.is-guttered{display:block}.el-col-md-offset-6{margin-left:25%}.el-col-md-pull-6{position:relative;right:25%}.el-col-md-push-6{left:25%;position:relative}.el-col-md-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-md-7,.el-col-md-7.is-guttered{display:block}.el-col-md-offset-7{margin-left:29.1666666667%}.el-col-md-pull-7{position:relative;right:29.1666666667%}.el-col-md-push-7{left:29.1666666667%;position:relative}.el-col-md-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-md-8,.el-col-md-8.is-guttered{display:block}.el-col-md-offset-8{margin-left:33.3333333333%}.el-col-md-pull-8{position:relative;right:33.3333333333%}.el-col-md-push-8{left:33.3333333333%;position:relative}.el-col-md-9{flex:0 0 37.5%;max-width:37.5%}.el-col-md-9,.el-col-md-9.is-guttered{display:block}.el-col-md-offset-9{margin-left:37.5%}.el-col-md-pull-9{position:relative;right:37.5%}.el-col-md-push-9{left:37.5%;position:relative}.el-col-md-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-md-10.is-guttered{display:block}.el-col-md-offset-10{margin-left:41.6666666667%}.el-col-md-pull-10{position:relative;right:41.6666666667%}.el-col-md-push-10{left:41.6666666667%;position:relative}.el-col-md-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-md-11.is-guttered{display:block}.el-col-md-offset-11{margin-left:45.8333333333%}.el-col-md-pull-11{position:relative;right:45.8333333333%}.el-col-md-push-11{left:45.8333333333%;position:relative}.el-col-md-12{display:block;flex:0 0 50%;max-width:50%}.el-col-md-12.is-guttered{display:block}.el-col-md-offset-12{margin-left:50%}.el-col-md-pull-12{position:relative;right:50%}.el-col-md-push-12{left:50%;position:relative}.el-col-md-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-md-13.is-guttered{display:block}.el-col-md-offset-13{margin-left:54.1666666667%}.el-col-md-pull-13{position:relative;right:54.1666666667%}.el-col-md-push-13{left:54.1666666667%;position:relative}.el-col-md-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-md-14.is-guttered{display:block}.el-col-md-offset-14{margin-left:58.3333333333%}.el-col-md-pull-14{position:relative;right:58.3333333333%}.el-col-md-push-14{left:58.3333333333%;position:relative}.el-col-md-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-md-15.is-guttered{display:block}.el-col-md-offset-15{margin-left:62.5%}.el-col-md-pull-15{position:relative;right:62.5%}.el-col-md-push-15{left:62.5%;position:relative}.el-col-md-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-md-16.is-guttered{display:block}.el-col-md-offset-16{margin-left:66.6666666667%}.el-col-md-pull-16{position:relative;right:66.6666666667%}.el-col-md-push-16{left:66.6666666667%;position:relative}.el-col-md-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-md-17.is-guttered{display:block}.el-col-md-offset-17{margin-left:70.8333333333%}.el-col-md-pull-17{position:relative;right:70.8333333333%}.el-col-md-push-17{left:70.8333333333%;position:relative}.el-col-md-18{display:block;flex:0 0 75%;max-width:75%}.el-col-md-18.is-guttered{display:block}.el-col-md-offset-18{margin-left:75%}.el-col-md-pull-18{position:relative;right:75%}.el-col-md-push-18{left:75%;position:relative}.el-col-md-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-md-19.is-guttered{display:block}.el-col-md-offset-19{margin-left:79.1666666667%}.el-col-md-pull-19{position:relative;right:79.1666666667%}.el-col-md-push-19{left:79.1666666667%;position:relative}.el-col-md-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-md-20.is-guttered{display:block}.el-col-md-offset-20{margin-left:83.3333333333%}.el-col-md-pull-20{position:relative;right:83.3333333333%}.el-col-md-push-20{left:83.3333333333%;position:relative}.el-col-md-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-md-21.is-guttered{display:block}.el-col-md-offset-21{margin-left:87.5%}.el-col-md-pull-21{position:relative;right:87.5%}.el-col-md-push-21{left:87.5%;position:relative}.el-col-md-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-md-22.is-guttered{display:block}.el-col-md-offset-22{margin-left:91.6666666667%}.el-col-md-pull-22{position:relative;right:91.6666666667%}.el-col-md-push-22{left:91.6666666667%;position:relative}.el-col-md-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-md-23.is-guttered{display:block}.el-col-md-offset-23{margin-left:95.8333333333%}.el-col-md-pull-23{position:relative;right:95.8333333333%}.el-col-md-push-23{left:95.8333333333%;position:relative}.el-col-md-24{display:block;flex:0 0 100%;max-width:100%}.el-col-md-24.is-guttered{display:block}.el-col-md-offset-24{margin-left:100%}.el-col-md-pull-24{position:relative;right:100%}.el-col-md-push-24{left:100%;position:relative}}@media only screen and (min-width:1200px){.el-col-lg-0{display:none;flex:0 0 0%;max-width:0}.el-col-lg-0.is-guttered{display:none}.el-col-lg-offset-0{margin-left:0}.el-col-lg-pull-0{position:relative;right:0}.el-col-lg-push-0{left:0;position:relative}.el-col-lg-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-lg-1,.el-col-lg-1.is-guttered{display:block}.el-col-lg-offset-1{margin-left:4.1666666667%}.el-col-lg-pull-1{position:relative;right:4.1666666667%}.el-col-lg-push-1{left:4.1666666667%;position:relative}.el-col-lg-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-lg-2,.el-col-lg-2.is-guttered{display:block}.el-col-lg-offset-2{margin-left:8.3333333333%}.el-col-lg-pull-2{position:relative;right:8.3333333333%}.el-col-lg-push-2{left:8.3333333333%;position:relative}.el-col-lg-3{flex:0 0 12.5%;max-width:12.5%}.el-col-lg-3,.el-col-lg-3.is-guttered{display:block}.el-col-lg-offset-3{margin-left:12.5%}.el-col-lg-pull-3{position:relative;right:12.5%}.el-col-lg-push-3{left:12.5%;position:relative}.el-col-lg-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-lg-4,.el-col-lg-4.is-guttered{display:block}.el-col-lg-offset-4{margin-left:16.6666666667%}.el-col-lg-pull-4{position:relative;right:16.6666666667%}.el-col-lg-push-4{left:16.6666666667%;position:relative}.el-col-lg-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-lg-5,.el-col-lg-5.is-guttered{display:block}.el-col-lg-offset-5{margin-left:20.8333333333%}.el-col-lg-pull-5{position:relative;right:20.8333333333%}.el-col-lg-push-5{left:20.8333333333%;position:relative}.el-col-lg-6{flex:0 0 25%;max-width:25%}.el-col-lg-6,.el-col-lg-6.is-guttered{display:block}.el-col-lg-offset-6{margin-left:25%}.el-col-lg-pull-6{position:relative;right:25%}.el-col-lg-push-6{left:25%;position:relative}.el-col-lg-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-lg-7,.el-col-lg-7.is-guttered{display:block}.el-col-lg-offset-7{margin-left:29.1666666667%}.el-col-lg-pull-7{position:relative;right:29.1666666667%}.el-col-lg-push-7{left:29.1666666667%;position:relative}.el-col-lg-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-lg-8,.el-col-lg-8.is-guttered{display:block}.el-col-lg-offset-8{margin-left:33.3333333333%}.el-col-lg-pull-8{position:relative;right:33.3333333333%}.el-col-lg-push-8{left:33.3333333333%;position:relative}.el-col-lg-9{flex:0 0 37.5%;max-width:37.5%}.el-col-lg-9,.el-col-lg-9.is-guttered{display:block}.el-col-lg-offset-9{margin-left:37.5%}.el-col-lg-pull-9{position:relative;right:37.5%}.el-col-lg-push-9{left:37.5%;position:relative}.el-col-lg-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-lg-10.is-guttered{display:block}.el-col-lg-offset-10{margin-left:41.6666666667%}.el-col-lg-pull-10{position:relative;right:41.6666666667%}.el-col-lg-push-10{left:41.6666666667%;position:relative}.el-col-lg-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-lg-11.is-guttered{display:block}.el-col-lg-offset-11{margin-left:45.8333333333%}.el-col-lg-pull-11{position:relative;right:45.8333333333%}.el-col-lg-push-11{left:45.8333333333%;position:relative}.el-col-lg-12{display:block;flex:0 0 50%;max-width:50%}.el-col-lg-12.is-guttered{display:block}.el-col-lg-offset-12{margin-left:50%}.el-col-lg-pull-12{position:relative;right:50%}.el-col-lg-push-12{left:50%;position:relative}.el-col-lg-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-lg-13.is-guttered{display:block}.el-col-lg-offset-13{margin-left:54.1666666667%}.el-col-lg-pull-13{position:relative;right:54.1666666667%}.el-col-lg-push-13{left:54.1666666667%;position:relative}.el-col-lg-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-lg-14.is-guttered{display:block}.el-col-lg-offset-14{margin-left:58.3333333333%}.el-col-lg-pull-14{position:relative;right:58.3333333333%}.el-col-lg-push-14{left:58.3333333333%;position:relative}.el-col-lg-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-lg-15.is-guttered{display:block}.el-col-lg-offset-15{margin-left:62.5%}.el-col-lg-pull-15{position:relative;right:62.5%}.el-col-lg-push-15{left:62.5%;position:relative}.el-col-lg-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-lg-16.is-guttered{display:block}.el-col-lg-offset-16{margin-left:66.6666666667%}.el-col-lg-pull-16{position:relative;right:66.6666666667%}.el-col-lg-push-16{left:66.6666666667%;position:relative}.el-col-lg-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-lg-17.is-guttered{display:block}.el-col-lg-offset-17{margin-left:70.8333333333%}.el-col-lg-pull-17{position:relative;right:70.8333333333%}.el-col-lg-push-17{left:70.8333333333%;position:relative}.el-col-lg-18{display:block;flex:0 0 75%;max-width:75%}.el-col-lg-18.is-guttered{display:block}.el-col-lg-offset-18{margin-left:75%}.el-col-lg-pull-18{position:relative;right:75%}.el-col-lg-push-18{left:75%;position:relative}.el-col-lg-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-lg-19.is-guttered{display:block}.el-col-lg-offset-19{margin-left:79.1666666667%}.el-col-lg-pull-19{position:relative;right:79.1666666667%}.el-col-lg-push-19{left:79.1666666667%;position:relative}.el-col-lg-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-lg-20.is-guttered{display:block}.el-col-lg-offset-20{margin-left:83.3333333333%}.el-col-lg-pull-20{position:relative;right:83.3333333333%}.el-col-lg-push-20{left:83.3333333333%;position:relative}.el-col-lg-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-lg-21.is-guttered{display:block}.el-col-lg-offset-21{margin-left:87.5%}.el-col-lg-pull-21{position:relative;right:87.5%}.el-col-lg-push-21{left:87.5%;position:relative}.el-col-lg-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-lg-22.is-guttered{display:block}.el-col-lg-offset-22{margin-left:91.6666666667%}.el-col-lg-pull-22{position:relative;right:91.6666666667%}.el-col-lg-push-22{left:91.6666666667%;position:relative}.el-col-lg-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-lg-23.is-guttered{display:block}.el-col-lg-offset-23{margin-left:95.8333333333%}.el-col-lg-pull-23{position:relative;right:95.8333333333%}.el-col-lg-push-23{left:95.8333333333%;position:relative}.el-col-lg-24{display:block;flex:0 0 100%;max-width:100%}.el-col-lg-24.is-guttered{display:block}.el-col-lg-offset-24{margin-left:100%}.el-col-lg-pull-24{position:relative;right:100%}.el-col-lg-push-24{left:100%;position:relative}}@media only screen and (min-width:1920px){.el-col-xl-0{display:none;flex:0 0 0%;max-width:0}.el-col-xl-0.is-guttered{display:none}.el-col-xl-offset-0{margin-left:0}.el-col-xl-pull-0{position:relative;right:0}.el-col-xl-push-0{left:0;position:relative}.el-col-xl-1{flex:0 0 4.1666666667%;max-width:4.1666666667%}.el-col-xl-1,.el-col-xl-1.is-guttered{display:block}.el-col-xl-offset-1{margin-left:4.1666666667%}.el-col-xl-pull-1{position:relative;right:4.1666666667%}.el-col-xl-push-1{left:4.1666666667%;position:relative}.el-col-xl-2{flex:0 0 8.3333333333%;max-width:8.3333333333%}.el-col-xl-2,.el-col-xl-2.is-guttered{display:block}.el-col-xl-offset-2{margin-left:8.3333333333%}.el-col-xl-pull-2{position:relative;right:8.3333333333%}.el-col-xl-push-2{left:8.3333333333%;position:relative}.el-col-xl-3{flex:0 0 12.5%;max-width:12.5%}.el-col-xl-3,.el-col-xl-3.is-guttered{display:block}.el-col-xl-offset-3{margin-left:12.5%}.el-col-xl-pull-3{position:relative;right:12.5%}.el-col-xl-push-3{left:12.5%;position:relative}.el-col-xl-4{flex:0 0 16.6666666667%;max-width:16.6666666667%}.el-col-xl-4,.el-col-xl-4.is-guttered{display:block}.el-col-xl-offset-4{margin-left:16.6666666667%}.el-col-xl-pull-4{position:relative;right:16.6666666667%}.el-col-xl-push-4{left:16.6666666667%;position:relative}.el-col-xl-5{flex:0 0 20.8333333333%;max-width:20.8333333333%}.el-col-xl-5,.el-col-xl-5.is-guttered{display:block}.el-col-xl-offset-5{margin-left:20.8333333333%}.el-col-xl-pull-5{position:relative;right:20.8333333333%}.el-col-xl-push-5{left:20.8333333333%;position:relative}.el-col-xl-6{flex:0 0 25%;max-width:25%}.el-col-xl-6,.el-col-xl-6.is-guttered{display:block}.el-col-xl-offset-6{margin-left:25%}.el-col-xl-pull-6{position:relative;right:25%}.el-col-xl-push-6{left:25%;position:relative}.el-col-xl-7{flex:0 0 29.1666666667%;max-width:29.1666666667%}.el-col-xl-7,.el-col-xl-7.is-guttered{display:block}.el-col-xl-offset-7{margin-left:29.1666666667%}.el-col-xl-pull-7{position:relative;right:29.1666666667%}.el-col-xl-push-7{left:29.1666666667%;position:relative}.el-col-xl-8{flex:0 0 33.3333333333%;max-width:33.3333333333%}.el-col-xl-8,.el-col-xl-8.is-guttered{display:block}.el-col-xl-offset-8{margin-left:33.3333333333%}.el-col-xl-pull-8{position:relative;right:33.3333333333%}.el-col-xl-push-8{left:33.3333333333%;position:relative}.el-col-xl-9{flex:0 0 37.5%;max-width:37.5%}.el-col-xl-9,.el-col-xl-9.is-guttered{display:block}.el-col-xl-offset-9{margin-left:37.5%}.el-col-xl-pull-9{position:relative;right:37.5%}.el-col-xl-push-9{left:37.5%;position:relative}.el-col-xl-10{display:block;flex:0 0 41.6666666667%;max-width:41.6666666667%}.el-col-xl-10.is-guttered{display:block}.el-col-xl-offset-10{margin-left:41.6666666667%}.el-col-xl-pull-10{position:relative;right:41.6666666667%}.el-col-xl-push-10{left:41.6666666667%;position:relative}.el-col-xl-11{display:block;flex:0 0 45.8333333333%;max-width:45.8333333333%}.el-col-xl-11.is-guttered{display:block}.el-col-xl-offset-11{margin-left:45.8333333333%}.el-col-xl-pull-11{position:relative;right:45.8333333333%}.el-col-xl-push-11{left:45.8333333333%;position:relative}.el-col-xl-12{display:block;flex:0 0 50%;max-width:50%}.el-col-xl-12.is-guttered{display:block}.el-col-xl-offset-12{margin-left:50%}.el-col-xl-pull-12{position:relative;right:50%}.el-col-xl-push-12{left:50%;position:relative}.el-col-xl-13{display:block;flex:0 0 54.1666666667%;max-width:54.1666666667%}.el-col-xl-13.is-guttered{display:block}.el-col-xl-offset-13{margin-left:54.1666666667%}.el-col-xl-pull-13{position:relative;right:54.1666666667%}.el-col-xl-push-13{left:54.1666666667%;position:relative}.el-col-xl-14{display:block;flex:0 0 58.3333333333%;max-width:58.3333333333%}.el-col-xl-14.is-guttered{display:block}.el-col-xl-offset-14{margin-left:58.3333333333%}.el-col-xl-pull-14{position:relative;right:58.3333333333%}.el-col-xl-push-14{left:58.3333333333%;position:relative}.el-col-xl-15{display:block;flex:0 0 62.5%;max-width:62.5%}.el-col-xl-15.is-guttered{display:block}.el-col-xl-offset-15{margin-left:62.5%}.el-col-xl-pull-15{position:relative;right:62.5%}.el-col-xl-push-15{left:62.5%;position:relative}.el-col-xl-16{display:block;flex:0 0 66.6666666667%;max-width:66.6666666667%}.el-col-xl-16.is-guttered{display:block}.el-col-xl-offset-16{margin-left:66.6666666667%}.el-col-xl-pull-16{position:relative;right:66.6666666667%}.el-col-xl-push-16{left:66.6666666667%;position:relative}.el-col-xl-17{display:block;flex:0 0 70.8333333333%;max-width:70.8333333333%}.el-col-xl-17.is-guttered{display:block}.el-col-xl-offset-17{margin-left:70.8333333333%}.el-col-xl-pull-17{position:relative;right:70.8333333333%}.el-col-xl-push-17{left:70.8333333333%;position:relative}.el-col-xl-18{display:block;flex:0 0 75%;max-width:75%}.el-col-xl-18.is-guttered{display:block}.el-col-xl-offset-18{margin-left:75%}.el-col-xl-pull-18{position:relative;right:75%}.el-col-xl-push-18{left:75%;position:relative}.el-col-xl-19{display:block;flex:0 0 79.1666666667%;max-width:79.1666666667%}.el-col-xl-19.is-guttered{display:block}.el-col-xl-offset-19{margin-left:79.1666666667%}.el-col-xl-pull-19{position:relative;right:79.1666666667%}.el-col-xl-push-19{left:79.1666666667%;position:relative}.el-col-xl-20{display:block;flex:0 0 83.3333333333%;max-width:83.3333333333%}.el-col-xl-20.is-guttered{display:block}.el-col-xl-offset-20{margin-left:83.3333333333%}.el-col-xl-pull-20{position:relative;right:83.3333333333%}.el-col-xl-push-20{left:83.3333333333%;position:relative}.el-col-xl-21{display:block;flex:0 0 87.5%;max-width:87.5%}.el-col-xl-21.is-guttered{display:block}.el-col-xl-offset-21{margin-left:87.5%}.el-col-xl-pull-21{position:relative;right:87.5%}.el-col-xl-push-21{left:87.5%;position:relative}.el-col-xl-22{display:block;flex:0 0 91.6666666667%;max-width:91.6666666667%}.el-col-xl-22.is-guttered{display:block}.el-col-xl-offset-22{margin-left:91.6666666667%}.el-col-xl-pull-22{position:relative;right:91.6666666667%}.el-col-xl-push-22{left:91.6666666667%;position:relative}.el-col-xl-23{display:block;flex:0 0 95.8333333333%;max-width:95.8333333333%}.el-col-xl-23.is-guttered{display:block}.el-col-xl-offset-23{margin-left:95.8333333333%}.el-col-xl-pull-23{position:relative;right:95.8333333333%}.el-col-xl-push-23{left:95.8333333333%;position:relative}.el-col-xl-24{display:block;flex:0 0 100%;max-width:100%}.el-col-xl-24.is-guttered{display:block}.el-col-xl-offset-24{margin-left:100%}.el-col-xl-pull-24{position:relative;right:100%}.el-col-xl-push-24{left:100%;position:relative}}.el-collapse{--el-collapse-border-color:var(--el-border-color-lighter);--el-collapse-header-height:48px;--el-collapse-header-bg-color:var(--el-fill-color-blank);--el-collapse-header-text-color:var(--el-text-color-primary);--el-collapse-header-font-size:13px;--el-collapse-content-bg-color:var(--el-fill-color-blank);--el-collapse-content-font-size:13px;--el-collapse-content-text-color:var(--el-text-color-primary);border-bottom:1px solid var(--el-collapse-border-color);border-top:1px solid var(--el-collapse-border-color)}.el-collapse-item.is-disabled .el-collapse-item__header{color:var(--el-text-color-disabled);cursor:not-allowed}.el-collapse-item__header{align-items:center;background-color:var(--el-collapse-header-bg-color);border:none;border-bottom:1px solid var(--el-collapse-border-color);color:var(--el-collapse-header-text-color);cursor:pointer;display:flex;font-size:var(--el-collapse-header-font-size);font-weight:500;height:var(--el-collapse-header-height);line-height:var(--el-collapse-header-height);outline:none;padding:0;transition:border-bottom-color var(--el-transition-duration);width:100%}.el-collapse-item__arrow{font-weight:300;margin:0 8px 0 auto;transition:transform var(--el-transition-duration)}.el-collapse-item__arrow.is-active{transform:rotate(90deg)}.el-collapse-item__header.focusing:focus:not(:hover){color:var(--el-color-primary)}.el-collapse-item__header.is-active{border-bottom-color:transparent}.el-collapse-item__wrap{background-color:var(--el-collapse-content-bg-color);border-bottom:1px solid var(--el-collapse-border-color);box-sizing:border-box;overflow:hidden;will-change:height}.el-collapse-item__content{color:var(--el-collapse-content-text-color);font-size:var(--el-collapse-content-font-size);line-height:1.7692307692;padding-bottom:25px}.el-collapse-item:last-child{margin-bottom:-1px}.el-color-predefine{display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:flex;flex:1;flex-wrap:wrap}.el-color-predefine__color-selector{border-radius:4px;cursor:pointer;height:20px;margin:0 0 8px 8px;width:20px}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{box-shadow:0 0 3px 2px var(--el-color-primary)}.el-color-predefine__color-selector>div{border-radius:3px;display:flex;height:100%}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{background-color:red;box-sizing:border-box;float:right;height:12px;padding:0 2px;position:relative;width:280px}.el-color-hue-slider__bar{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red);height:100%;position:relative}.el-color-hue-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-hue-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-hue-slider.is-vertical{height:180px;padding:2px 0;width:12px}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:linear-gradient(180deg,red 0,#ff0 17%,#0f0 33%,#0ff,#00f 67%,#f0f 83%,red)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-svpanel{height:180px;position:relative;width:280px}.el-color-svpanel__black,.el-color-svpanel__white{bottom:0;left:0;position:absolute;right:0;top:0}.el-color-svpanel__white{background:linear-gradient(90deg,#fff,#fff0)}.el-color-svpanel__black{background:linear-gradient(0deg,#000,#0000)}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{border-radius:50%;box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px #0000004d,0 0 1px 2px #0006;cursor:head;height:4px;transform:translate(-2px,-2px);width:4px}.el-color-alpha-slider{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px;box-sizing:border-box;height:12px;position:relative;width:280px}.el-color-alpha-slider__bar{background:linear-gradient(to right,rgba(255,255,255,0) 0,var(--el-bg-color) 100%);height:100%;position:relative}.el-color-alpha-slider__thumb{background:#fff;border:1px solid var(--el-border-color-lighter);border-radius:1px;box-shadow:0 0 2px #0009;box-sizing:border-box;cursor:pointer;height:100%;left:0;position:absolute;top:0;width:4px;z-index:1}.el-color-alpha-slider__thumb:focus-visible{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-alpha-slider.is-vertical{height:180px;width:20px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:linear-gradient(180deg,#fff0 0,#fff)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{height:4px;left:0;top:0;width:100%}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper:after{clear:both;content:\"\";display:table}.el-color-dropdown__btns{margin-top:12px;text-align:right}.el-color-dropdown__value{color:#000;float:left;font-size:12px;line-height:26px;width:160px}.el-color-picker{display:inline-block;line-height:normal;outline:none;position:relative}.el-color-picker:hover:not(.is-disabled,.is-focused) .el-color-picker__trigger{border-color:var(--el-border-color-hover)}.el-color-picker:focus-visible:not(.is-disabled) .el-color-picker__trigger{outline:2px solid var(--el-color-primary);outline-offset:1px}.el-color-picker.is-focused .el-color-picker__trigger{border-color:var(--el-color-primary)}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--large{height:40px}.el-color-picker--large .el-color-picker__trigger{height:40px;width:40px}.el-color-picker--large .el-color-picker__mask{height:38px;width:38px}.el-color-picker--small{height:24px}.el-color-picker--small .el-color-picker__trigger{height:24px;width:24px}.el-color-picker--small .el-color-picker__mask{height:22px;width:22px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{transform:scale(.8)}.el-color-picker__mask{background-color:#ffffffb3;border-radius:4px;cursor:not-allowed;height:30px;left:1px;position:absolute;top:1px;width:30px;z-index:1}.el-color-picker__trigger{align-items:center;border:1px solid var(--el-border-color);border-radius:4px;box-sizing:border-box;cursor:pointer;display:inline-flex;font-size:0;height:32px;justify-content:center;padding:4px;position:relative;width:32px}.el-color-picker__color{border:1px solid var(--el-text-color-secondary);border-radius:var(--el-border-radius-small);box-sizing:border-box;display:block;height:100%;position:relative;text-align:center;width:100%}.el-color-picker__color.is-alpha{background-image:linear-gradient(45deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-a) 25%,var(--el-color-picker-alpha-bg-b) 25%),linear-gradient(45deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%),linear-gradient(135deg,var(--el-color-picker-alpha-bg-b) 75%,var(--el-color-picker-alpha-bg-a) 75%);background-position:0 0,6px 0,6px -6px,0 6px;background-size:12px 12px}.el-color-picker__color-inner{align-items:center;display:inline-flex;height:100%;justify-content:center;width:100%}.el-color-picker .el-color-picker__empty{color:var(--el-text-color-secondary);font-size:12px}.el-color-picker .el-color-picker__icon{align-items:center;color:#fff;display:inline-flex;font-size:12px;justify-content:center}.el-color-picker__panel{background-color:#fff;border-radius:var(--el-border-radius-base);box-shadow:var(--el-box-shadow-light);box-sizing:content-box;padding:6px;position:absolute;z-index:10}.el-color-picker__panel.el-popper{border:1px solid var(--el-border-color-lighter)}.el-color-picker,.el-color-picker__panel{--el-color-picker-alpha-bg-a:#ccc;--el-color-picker-alpha-bg-b:transparent}.dark .el-color-picker,.dark .el-color-picker__panel{--el-color-picker-alpha-bg-a:#333333}.el-container{box-sizing:border-box;display:flex;flex:1;flex-basis:auto;flex-direction:row;min-width:0}.el-container.is-vertical{flex-direction:column}.el-date-table{font-size:12px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-date-table.is-week-mode .el-date-table__row:hover .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table.is-week-mode .el-date-table__row:hover td.available:hover{color:var(--el-datepicker-text-color)}.el-date-table.is-week-mode .el-date-table__row:hover td:first-child .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table.is-week-mode .el-date-table__row:hover td:last-child .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table.is-week-mode .el-date-table__row.current .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td{box-sizing:border-box;cursor:pointer;height:30px;padding:4px 0;position:relative;text-align:center;width:32px}.el-date-table td .el-date-table-cell{box-sizing:border-box;height:30px;padding:3px 0}.el-date-table td .el-date-table-cell .el-date-table-cell__text{border-radius:50%;display:block;height:24px;left:50%;line-height:24px;margin:0 auto;position:absolute;transform:translate(-50%);width:24px}.el-date-table td.next-month,.el-date-table td.prev-month{color:var(--el-datepicker-off-text-color)}.el-date-table td.today{position:relative}.el-date-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-date-table td.today.end-date .el-date-table-cell__text,.el-date-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-date-table td.available:hover{color:var(--el-datepicker-hover-text-color)}.el-date-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-date-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-date-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-date-table td.current:not(.disabled):focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-date-table td.end-date .el-date-table-cell,.el-date-table td.start-date .el-date-table-cell{color:#fff}.el-date-table td.end-date .el-date-table-cell__text,.el-date-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color)}.el-date-table td.start-date .el-date-table-cell{border-bottom-left-radius:15px;border-top-left-radius:15px;margin-left:5px}.el-date-table td.end-date .el-date-table-cell{border-bottom-right-radius:15px;border-top-right-radius:15px;margin-right:5px}.el-date-table td.disabled .el-date-table-cell{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed;opacity:1}.el-date-table td.selected .el-date-table-cell{border-radius:15px;margin-left:5px;margin-right:5px}.el-date-table td.selected .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);border-radius:15px;color:#fff}.el-date-table td.week{color:var(--el-datepicker-header-text-color);font-size:80%}.el-date-table td:focus{outline:none}.el-date-table th{border-bottom:1px solid var(--el-border-color-lighter);color:var(--el-datepicker-header-text-color);font-weight:400;padding:5px}.el-month-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-month-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-month-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-month-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-month-table td.today.end-date .el-date-table-cell__text,.el-month-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-month-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-month-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-month-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:54px}.el-month-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-month-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-month-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-month-table td.end-date .el-date-table-cell,.el-month-table td.start-date .el-date-table-cell{color:#fff}.el-month-table td.end-date .el-date-table-cell__text,.el-month-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px;margin-left:3px}.el-month-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell{border-radius:24px;margin-left:3px;margin-right:3px}.el-month-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-month-table td:focus-visible{outline:none}.el-month-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-year-table{border-collapse:collapse;font-size:12px;margin:-1px}.el-year-table .el-icon{color:var(--el-datepicker-icon-color)}.el-year-table td{cursor:pointer;padding:8px 0;position:relative;text-align:center;width:68px}.el-year-table td .el-date-table-cell{box-sizing:border-box;height:48px;padding:6px 0}.el-year-table td.today .el-date-table-cell__text{color:var(--el-color-primary);font-weight:700}.el-year-table td.today.end-date .el-date-table-cell__text,.el-year-table td.today.start-date .el-date-table-cell__text{color:#fff}.el-year-table td.disabled .el-date-table-cell__text{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-year-table td.disabled .el-date-table-cell__text:hover{color:var(--el-text-color-placeholder)}.el-year-table td .el-date-table-cell__text{border-radius:18px;color:var(--el-datepicker-text-color);display:block;height:36px;left:50%;line-height:36px;margin:0 auto;position:absolute;transform:translate(-50%);width:60px}.el-year-table td .el-date-table-cell__text:hover{color:var(--el-datepicker-hover-text-color)}.el-year-table td.in-range .el-date-table-cell{background-color:var(--el-datepicker-inrange-bg-color)}.el-year-table td.in-range .el-date-table-cell:hover{background-color:var(--el-datepicker-inrange-hover-bg-color)}.el-year-table td.end-date .el-date-table-cell,.el-year-table td.start-date .el-date-table-cell{color:#fff}.el-year-table td.end-date .el-date-table-cell__text,.el-year-table td.start-date .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td.start-date .el-date-table-cell{border-bottom-left-radius:24px;border-top-left-radius:24px}.el-year-table td.end-date .el-date-table-cell{border-bottom-right-radius:24px;border-top-right-radius:24px}.el-year-table td.current:not(.disabled) .el-date-table-cell__text{background-color:var(--el-datepicker-active-color);color:#fff}.el-year-table td:focus-visible{outline:none}.el-year-table td:focus-visible .el-date-table-cell__text{outline:2px solid var(--el-datepicker-active-color);outline-offset:1px}.el-time-spinner.has-seconds .el-time-spinner__wrapper{width:33.3%}.el-time-spinner__wrapper{display:inline-block;max-height:192px;overflow:auto;position:relative;vertical-align:top;width:50%}.el-time-spinner__wrapper.el-scrollbar__wrap:not(.el-scrollbar__wrap--hidden-default){padding-bottom:15px}.el-time-spinner__wrapper.is-arrow{box-sizing:border-box;overflow:hidden;text-align:center}.el-time-spinner__wrapper.is-arrow .el-time-spinner__list{transform:translateY(-32px)}.el-time-spinner__wrapper.is-arrow .el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:default}.el-time-spinner__arrow{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;width:100%;z-index:var(--el-index-normal)}.el-time-spinner__arrow:hover{color:var(--el-color-primary)}.el-time-spinner__arrow.arrow-up{top:10px}.el-time-spinner__arrow.arrow-down{bottom:10px}.el-time-spinner__input.el-input{width:70%}.el-time-spinner__input.el-input .el-input__inner,.el-time-spinner__list{padding:0;text-align:center}.el-time-spinner__list{list-style:none;margin:0}.el-time-spinner__list:after,.el-time-spinner__list:before{content:\"\";display:block;height:80px;width:100%}.el-time-spinner__item{color:var(--el-text-color-regular);font-size:12px;height:32px;line-height:32px}.el-time-spinner__item:hover:not(.is-disabled):not(.is-active){background:var(--el-fill-color-light);cursor:pointer}.el-time-spinner__item.is-active:not(.is-disabled){color:var(--el-text-color-primary);font-weight:700}.el-time-spinner__item.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-picker__popper{--el-datepicker-border-color:var(--el-disabled-border-color)}.el-picker__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-picker__popper.el-popper,.el-picker__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-datepicker-border-color)}.el-picker__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-picker__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-date-editor{--el-date-editor-width:220px;--el-date-editor-monthrange-width:300px;--el-date-editor-daterange-width:350px;--el-date-editor-datetimerange-width:400px;--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;position:relative;text-align:left;vertical-align:middle}.el-date-editor.el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset}.el-date-editor.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-date-editor.el-input,.el-date-editor.el-input__wrapper{height:var(--el-input-height,var(--el-component-size));width:var(--el-date-editor-width)}.el-date-editor--monthrange{--el-date-editor-width:var(--el-date-editor-monthrange-width)}.el-date-editor--daterange,.el-date-editor--timerange{--el-date-editor-width:var(--el-date-editor-daterange-width)}.el-date-editor--datetimerange{--el-date-editor-width:var(--el-date-editor-datetimerange-width)}.el-date-editor--dates .el-input__wrapper{text-overflow:ellipsis;white-space:nowrap}.el-date-editor .clear-icon,.el-date-editor .close-icon{cursor:pointer}.el-date-editor .clear-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__icon{color:var(--el-text-color-placeholder);float:left;font-size:14px;height:inherit}.el-date-editor .el-range__icon svg{vertical-align:middle}.el-date-editor .el-range-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-text-color-regular);display:inline-block;font-size:var(--el-font-size-base);height:30px;line-height:30px;margin:0;outline:none;padding:0;text-align:center;width:39%}.el-date-editor .el-range-input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-input::placeholder{color:var(--el-text-color-placeholder)}.el-date-editor .el-range-separator{align-items:center;color:var(--el-text-color-primary);display:inline-flex;flex:1;font-size:14px;height:100%;justify-content:center;margin:0;overflow-wrap:break-word;padding:0 5px}.el-date-editor .el-range__close-icon{color:var(--el-text-color-placeholder);cursor:pointer;font-size:14px;height:inherit;width:unset}.el-date-editor .el-range__close-icon:hover{color:var(--el-text-color-secondary)}.el-date-editor .el-range__close-icon svg{vertical-align:middle}.el-date-editor .el-range__close-icon--hidden{opacity:0;visibility:hidden}.el-range-editor.el-input__wrapper{align-items:center;display:inline-flex;padding:0 10px;vertical-align:middle}.el-range-editor.is-active,.el-range-editor.is-active:hover{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-range-editor--large{line-height:var(--el-component-size-large)}.el-range-editor--large.el-input__wrapper{height:var(--el-component-size-large)}.el-range-editor--large .el-range-separator{font-size:14px;line-height:40px}.el-range-editor--large .el-range-input{font-size:14px;height:38px;line-height:38px}.el-range-editor--small{line-height:var(--el-component-size-small)}.el-range-editor--small.el-input__wrapper{height:var(--el-component-size-small)}.el-range-editor--small .el-range-separator{font-size:12px;line-height:24px}.el-range-editor--small .el-range-input{font-size:12px;height:22px;line-height:22px}.el-range-editor.is-disabled{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled,.el-range-editor.is-disabled:focus,.el-range-editor.is-disabled:hover{border-color:var(--el-disabled-border-color)}.el-range-editor.is-disabled input{background-color:var(--el-disabled-bg-color);color:var(--el-disabled-text-color);cursor:not-allowed}.el-range-editor.is-disabled input::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled input::placeholder{color:var(--el-text-color-placeholder)}.el-range-editor.is-disabled .el-range-separator{color:var(--el-disabled-text-color)}.el-picker-panel{background:var(--el-bg-color-overlay);border-radius:var(--el-border-radius-base);color:var(--el-text-color-regular);line-height:30px}.el-picker-panel .el-time-panel{background-color:var(--el-bg-color-overlay);border:1px solid var(--el-datepicker-border-color);box-shadow:var(--el-box-shadow-light);margin:5px 0}.el-picker-panel__body-wrapper:after,.el-picker-panel__body:after{clear:both;content:\"\";display:table}.el-picker-panel__content{margin:15px;position:relative}.el-picker-panel__footer{background-color:var(--el-bg-color-overlay);border-top:1px solid var(--el-datepicker-inner-border-color);font-size:0;padding:4px 12px;position:relative;text-align:right}.el-picker-panel__shortcut{background-color:transparent;border:0;color:var(--el-datepicker-text-color);cursor:pointer;display:block;font-size:14px;line-height:28px;outline:none;padding-left:12px;text-align:left;width:100%}.el-picker-panel__shortcut:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__shortcut.active{background-color:#e6f1fe;color:var(--el-datepicker-active-color)}.el-picker-panel__btn{background-color:transparent;border:1px solid var(--el-fill-color-darker);border-radius:2px;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:24px;outline:none;padding:0 20px}.el-picker-panel__btn[disabled]{color:var(--el-text-color-disabled);cursor:not-allowed}.el-picker-panel__icon-btn{background:transparent;border:0;color:var(--el-datepicker-icon-color);cursor:pointer;font-size:12px;margin-top:8px;outline:none}.el-picker-panel__icon-btn:hover{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn:focus-visible{color:var(--el-datepicker-hover-text-color)}.el-picker-panel__icon-btn.is-disabled{color:var(--el-text-color-disabled)}.el-picker-panel__icon-btn.is-disabled:hover{cursor:not-allowed}.el-picker-panel__icon-btn .el-icon{cursor:pointer;font-size:inherit}.el-picker-panel__link-btn{vertical-align:middle}.el-picker-panel [slot=sidebar],.el-picker-panel__sidebar{background-color:var(--el-bg-color-overlay);border-right:1px solid var(--el-datepicker-inner-border-color);bottom:0;box-sizing:border-box;overflow:auto;padding-top:6px;position:absolute;top:0;width:110px}.el-picker-panel [slot=sidebar]+.el-picker-panel__body,.el-picker-panel__sidebar+.el-picker-panel__body{margin-left:110px}.el-date-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:322px}.el-date-picker.has-sidebar.has-time{width:434px}.el-date-picker.has-sidebar{width:438px}.el-date-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-picker .el-picker-panel__content{width:292px}.el-date-picker table{table-layout:fixed;width:100%}.el-date-picker__editor-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-picker__header{padding:12px 12px 0;text-align:center}.el-date-picker__header--bordered{border-bottom:1px solid var(--el-border-color-lighter);margin-bottom:0;padding-bottom:12px}.el-date-picker__header--bordered+.el-picker-panel__content{margin-top:0}.el-date-picker__header-label{color:var(--el-text-color-regular);cursor:pointer;font-size:16px;font-weight:500;line-height:22px;padding:0 5px;text-align:center}.el-date-picker__header-label:hover{color:var(--el-datepicker-hover-text-color)}.el-date-picker__header-label:focus-visible{color:var(--el-datepicker-hover-text-color);outline:none}.el-date-picker__header-label.active{color:var(--el-datepicker-active-color)}.el-date-picker__prev-btn{float:left}.el-date-picker__next-btn{float:right}.el-date-picker__time-wrap{padding:10px;text-align:center}.el-date-picker__time-label{cursor:pointer;float:left;line-height:30px;margin-left:10px}.el-date-picker .el-time-panel{position:absolute}.el-date-range-picker{--el-datepicker-text-color:var(--el-text-color-regular);--el-datepicker-off-text-color:var(--el-text-color-placeholder);--el-datepicker-header-text-color:var(--el-text-color-regular);--el-datepicker-icon-color:var(--el-text-color-primary);--el-datepicker-border-color:var(--el-disabled-border-color);--el-datepicker-inner-border-color:var(--el-border-color-light);--el-datepicker-inrange-bg-color:var(--el-border-color-extra-light);--el-datepicker-inrange-hover-bg-color:var(--el-border-color-extra-light);--el-datepicker-active-color:var(--el-color-primary);--el-datepicker-hover-text-color:var(--el-color-primary);width:646px}.el-date-range-picker.has-sidebar{width:756px}.el-date-range-picker.has-time .el-picker-panel__body-wrapper{position:relative}.el-date-range-picker table{table-layout:fixed;width:100%}.el-date-range-picker .el-picker-panel__body{min-width:513px}.el-date-range-picker .el-picker-panel__content{margin:0}.el-date-range-picker__header{height:28px;position:relative;text-align:center}.el-date-range-picker__header [class*=arrow-left]{float:left}.el-date-range-picker__header [class*=arrow-right]{float:right}.el-date-range-picker__header div{font-size:16px;font-weight:500;margin-right:50px}.el-date-range-picker__content{box-sizing:border-box;float:left;margin:0;padding:16px;width:50%}.el-date-range-picker__content.is-left{border-right:1px solid var(--el-datepicker-inner-border-color)}.el-date-range-picker__content .el-date-range-picker__header div{margin-left:50px;margin-right:50px}.el-date-range-picker__editors-wrap{box-sizing:border-box;display:table-cell}.el-date-range-picker__editors-wrap.is-right{text-align:right}.el-date-range-picker__time-header{border-bottom:1px solid var(--el-datepicker-inner-border-color);box-sizing:border-box;display:table;font-size:12px;padding:8px 5px 5px;position:relative;width:100%}.el-date-range-picker__time-header>.el-icon-arrow-right{color:var(--el-datepicker-icon-color);display:table-cell;font-size:20px;vertical-align:middle}.el-date-range-picker__time-picker-wrap{display:table-cell;padding:0 5px;position:relative}.el-date-range-picker__time-picker-wrap .el-picker-panel{background:#fff;position:absolute;right:0;top:13px;z-index:1}.el-date-range-picker__time-picker-wrap .el-time-panel{position:absolute}.el-time-range-picker{overflow:visible;width:354px}.el-time-range-picker__content{padding:10px;position:relative;text-align:center;z-index:1}.el-time-range-picker__cell{box-sizing:border-box;display:inline-block;margin:0;padding:4px 7px 7px;width:50%}.el-time-range-picker__header{font-size:14px;margin-bottom:5px;text-align:center}.el-time-range-picker__body{border:1px solid var(--el-datepicker-border-color);border-radius:2px}.el-time-panel{border-radius:2px;box-sizing:content-box;left:0;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:180px;z-index:var(--el-index-top)}.el-time-panel__content{font-size:0;overflow:hidden;position:relative}.el-time-panel__content:after,.el-time-panel__content:before{box-sizing:border-box;content:\"\";height:32px;left:0;margin-top:-16px;padding-top:6px;position:absolute;right:0;text-align:left;top:50%;z-index:-1}.el-time-panel__content:after{left:50%;margin-left:12%;margin-right:12%}.el-time-panel__content:before{border-bottom:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);margin-left:12%;margin-right:12%;padding-left:50%}.el-time-panel__content.has-seconds:after{left:66.6666666667%}.el-time-panel__content.has-seconds:before{padding-left:33.3333333333%}.el-time-panel__footer{border-top:1px solid var(--el-timepicker-inner-border-color,var(--el-border-color-light));box-sizing:border-box;height:36px;line-height:25px;padding:4px;text-align:right}.el-time-panel__btn{background-color:transparent;border:none;color:var(--el-text-color-primary);cursor:pointer;font-size:12px;line-height:28px;margin:0 5px;outline:none;padding:0 5px}.el-time-panel__btn.confirm{color:var(--el-timepicker-active-color,var(--el-color-primary));font-weight:800}.el-descriptions{--el-descriptions-table-border:1px solid var(--el-border-color-lighter);--el-descriptions-item-bordered-label-background:var(--el-fill-color-light);box-sizing:border-box;color:var(--el-text-color-primary);font-size:var(--el-font-size-base)}.el-descriptions__header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.el-descriptions__title{color:var(--el-text-color-primary);font-size:16px;font-weight:700}.el-descriptions__body{background-color:var(--el-fill-color-blank)}.el-descriptions__body .el-descriptions__table{border-collapse:collapse;width:100%}.el-descriptions__body .el-descriptions__table .el-descriptions__cell{box-sizing:border-box;font-size:14px;font-weight:400;line-height:23px;text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-left{text-align:left}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-center{text-align:center}.el-descriptions__body .el-descriptions__table .el-descriptions__cell.is-right{text-align:right}.el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{border:var(--el-descriptions-table-border);padding:8px 11px}.el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:12px}.el-descriptions--large{font-size:14px}.el-descriptions--large .el-descriptions__header{margin-bottom:20px}.el-descriptions--large .el-descriptions__header .el-descriptions__title{font-size:16px}.el-descriptions--large .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:14px}.el-descriptions--large .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:12px 15px}.el-descriptions--large .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:16px}.el-descriptions--small{font-size:12px}.el-descriptions--small .el-descriptions__header{margin-bottom:12px}.el-descriptions--small .el-descriptions__header .el-descriptions__title{font-size:14px}.el-descriptions--small .el-descriptions__body .el-descriptions__table .el-descriptions__cell{font-size:12px}.el-descriptions--small .el-descriptions__body .el-descriptions__table.is-bordered .el-descriptions__cell{padding:4px 7px}.el-descriptions--small .el-descriptions__body .el-descriptions__table:not(.is-bordered) .el-descriptions__cell{padding-bottom:8px}.el-descriptions__label.el-descriptions__cell.is-bordered-label{background:var(--el-descriptions-item-bordered-label-background);color:var(--el-text-color-regular);font-weight:700}.el-descriptions__label:not(.is-bordered-label){color:var(--el-text-color-primary);margin-right:16px}.el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:6px}.el-descriptions__content.el-descriptions__cell.is-bordered-content{color:var(--el-text-color-primary)}.el-descriptions__content:not(.is-bordered-label){color:var(--el-text-color-regular)}.el-descriptions--large .el-descriptions__label:not(.is-bordered-label){margin-right:16px}.el-descriptions--large .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:8px}.el-descriptions--small .el-descriptions__label:not(.is-bordered-label){margin-right:12px}.el-descriptions--small .el-descriptions__label.el-descriptions__cell:not(.is-bordered-label).is-vertical-label{padding-bottom:4px}:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{background:var(--el-popup-modal-bg-color);height:100%;left:0;opacity:var(--el-popup-modal-opacity);position:fixed;top:0;width:100%}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:16px;--el-dialog-border-radius:var(--el-border-radius-base);background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;margin:var(--el-dialog-margin-top,15vh) auto 50px;overflow-wrap:break-word;padding:var(--el-dialog-padding-primary);position:relative;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:none!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;height:100%;margin-bottom:0;overflow:auto}.el-dialog__wrapper{bottom:0;left:0;margin:0;overflow:auto;position:fixed;right:0;top:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-dialog__header{padding-bottom:var(--el-dialog-padding-primary)}.el-dialog__header.show-close{padding-right:calc(var(--el-dialog-padding-primary) + var(--el-message-close-size, 16px))}.el-dialog__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:48px;outline:none;padding:0;position:absolute;right:0;top:0;width:48px}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{color:var(--el-text-color-primary);font-size:var(--el-dialog-title-font-size);line-height:var(--el-dialog-font-line-height)}.el-dialog__body{color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{box-sizing:border-box;padding-top:var(--el-dialog-padding-primary);text-align:right}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{bottom:0;left:0;overflow:auto;position:fixed;right:0;top:0}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes dialog-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}.el-divider{position:relative}.el-divider--horizontal{border-top:1px var(--el-border-color) var(--el-border-style);display:block;height:1px;margin:24px 0;width:100%}.el-divider--vertical{border-left:1px var(--el-border-color) var(--el-border-style);display:inline-block;height:1em;margin:0 8px;position:relative;vertical-align:middle;width:1px}.el-divider__text{background-color:var(--el-bg-color);color:var(--el-text-color-primary);font-size:14px;font-weight:500;padding:0 20px;position:absolute}.el-divider__text.is-left{left:20px;transform:translateY(-50%)}.el-divider__text.is-center{left:50%;transform:translate(-50%) translateY(-50%)}.el-divider__text.is-right{right:20px;transform:translateY(-50%)}.el-drawer{--el-drawer-bg-color:var(--el-dialog-bg-color,var(--el-bg-color));--el-drawer-padding-primary:var(--el-dialog-padding-primary,20px);background-color:var(--el-drawer-bg-color);box-shadow:var(--el-box-shadow-dark);box-sizing:border-box;display:flex;flex-direction:column;overflow:hidden;position:absolute;transition:all var(--el-transition-duration)}.el-drawer .btt,.el-drawer .ltr,.el-drawer .rtl,.el-drawer .ttb{transform:translate(0)}.el-drawer__sr-focus:focus{outline:none!important}.el-drawer__header{align-items:center;color:#72767b;display:flex;margin-bottom:32px;padding:var(--el-drawer-padding-primary);padding-bottom:0}.el-drawer__header>:first-child{flex:1}.el-drawer__title{flex:1;font-size:16px;line-height:inherit;margin:0}.el-drawer__footer{padding:var(--el-drawer-padding-primary);padding-top:10px;text-align:right}.el-drawer__close-btn{background-color:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;font-size:var(--el-font-size-extra-large);outline:none}.el-drawer__close-btn:focus i,.el-drawer__close-btn:hover i{color:var(--el-color-primary)}.el-drawer__body{flex:1;overflow:auto;padding:var(--el-drawer-padding-primary)}.el-drawer__body>*{box-sizing:border-box}.el-drawer.ltr,.el-drawer.rtl{bottom:0;height:100%;top:0}.el-drawer.btt,.el-drawer.ttb{left:0;right:0;width:100%}.el-drawer.ltr{left:0}.el-drawer.rtl{right:0}.el-drawer.ttb{top:0}.el-drawer.btt{bottom:0}.el-drawer-fade-enter-active,.el-drawer-fade-leave-active{transition:all var(--el-transition-duration)}.el-drawer-fade-enter-active,.el-drawer-fade-enter-from,.el-drawer-fade-enter-to,.el-drawer-fade-leave-active,.el-drawer-fade-leave-from,.el-drawer-fade-leave-to{overflow:hidden!important}.el-drawer-fade-enter-from,.el-drawer-fade-leave-to{background-color:transparent!important}.el-drawer-fade-enter-from .rtl,.el-drawer-fade-leave-to .rtl{transform:translate(100%)}.el-drawer-fade-enter-from .ltr,.el-drawer-fade-leave-to .ltr{transform:translate(-100%)}.el-drawer-fade-enter-from .ttb,.el-drawer-fade-leave-to .ttb{transform:translateY(-100%)}.el-drawer-fade-enter-from .btt,.el-drawer-fade-leave-to .btt{transform:translateY(100%)}.el-dropdown{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);line-height:1;position:relative;vertical-align:top}.el-dropdown.is-disabled{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-dropdown__popper{--el-dropdown-menu-box-shadow:var(--el-box-shadow-light);--el-dropdown-menuItem-hover-fill:var(--el-color-primary-light-9);--el-dropdown-menuItem-hover-color:var(--el-color-primary);--el-dropdown-menu-index:10}.el-dropdown__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-dropdown-menu-box-shadow)}.el-dropdown__popper.el-popper,.el-dropdown__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-dropdown__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-dropdown__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-dropdown__popper .el-dropdown-menu{border:none}.el-dropdown__popper .el-dropdown__popper-selfdefine{outline:none}.el-dropdown__popper .el-scrollbar__bar{z-index:calc(var(--el-dropdown-menu-index) + 1)}.el-dropdown__popper .el-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:0}.el-dropdown .el-dropdown__caret-button{align-items:center;border-left:none;display:inline-flex;justify-content:center;padding-left:0;padding-right:0;width:32px}.el-dropdown .el-dropdown__caret-button>span{display:inline-flex}.el-dropdown .el-dropdown__caret-button:before{background:var(--el-overlay-color-lighter);bottom:-1px;content:\"\";display:block;left:0;position:absolute;top:-1px;width:1px}.el-dropdown .el-dropdown__caret-button.el-button:before{background:var(--el-border-color);opacity:.5}.el-dropdown .el-dropdown__caret-button .el-dropdown__icon{font-size:inherit;padding-left:0}.el-dropdown .el-dropdown-selfdefine{outline:none}.el-dropdown--large .el-dropdown__caret-button{width:40px}.el-dropdown--small .el-dropdown__caret-button{width:24px}.el-dropdown-menu{background-color:var(--el-bg-color-overlay);border:none;border-radius:var(--el-border-radius-base);box-shadow:none;left:0;list-style:none;margin:0;padding:5px 0;position:relative;top:0;z-index:var(--el-dropdown-menu-index)}.el-dropdown-menu__item{align-items:center;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:var(--el-font-size-base);line-height:22px;list-style:none;margin:0;outline:none;padding:5px 16px;white-space:nowrap}.el-dropdown-menu__item:not(.is-disabled):focus,.el-dropdown-menu__item:not(.is-disabled):hover{background-color:var(--el-dropdown-menuItem-hover-fill);color:var(--el-dropdown-menuItem-hover-color)}.el-dropdown-menu__item i{margin-right:5px}.el-dropdown-menu__item--divided{border-top:1px solid var(--el-border-color-lighter);margin:6px 0}.el-dropdown-menu__item.is-disabled{color:var(--el-text-color-disabled);cursor:not-allowed}.el-dropdown-menu--large{padding:7px 0}.el-dropdown-menu--large .el-dropdown-menu__item{font-size:14px;line-height:22px;padding:7px 20px}.el-dropdown-menu--large .el-dropdown-menu__item--divided{margin:8px 0}.el-dropdown-menu--small{padding:3px 0}.el-dropdown-menu--small .el-dropdown-menu__item{font-size:12px;line-height:20px;padding:2px 12px}.el-dropdown-menu--small .el-dropdown-menu__item--divided{margin:4px 0}.el-empty{--el-empty-padding:40px 0;--el-empty-image-width:160px;--el-empty-description-margin-top:20px;--el-empty-bottom-margin-top:20px;--el-empty-fill-color-0:var(--el-color-white);--el-empty-fill-color-1:#fcfcfd;--el-empty-fill-color-2:#f8f9fb;--el-empty-fill-color-3:#f7f8fc;--el-empty-fill-color-4:#eeeff3;--el-empty-fill-color-5:#edeef2;--el-empty-fill-color-6:#e9ebef;--el-empty-fill-color-7:#e5e7e9;--el-empty-fill-color-8:#e0e3e9;--el-empty-fill-color-9:#d5d7de;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-empty-padding);text-align:center}.el-empty__image{width:var(--el-empty-image-width)}.el-empty__image img{height:100%;-o-object-fit:contain;object-fit:contain;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:top;width:100%}.el-empty__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:100%;vertical-align:top;width:100%}.el-empty__description{margin-top:var(--el-empty-description-margin-top)}.el-empty__description p{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);margin:0}.el-empty__bottom{margin-top:var(--el-empty-bottom-margin-top)}.el-footer{--el-footer-padding:0 20px;--el-footer-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-footer-height);padding:var(--el-footer-padding)}.el-form{--el-form-label-font-size:var(--el-font-size-base);--el-form-inline-content-width:220px}.el-form--inline .el-form-item{display:inline-flex;margin-right:32px;vertical-align:middle}.el-form--inline.el-form--label-top{display:flex;flex-wrap:wrap}.el-form--inline.el-form--label-top .el-form-item{display:block}.el-form-item{display:flex;--font-size:14px;margin-bottom:18px}.el-form-item .el-form-item{margin-bottom:0}.el-form-item .el-input__validateIcon{display:none}.el-form-item--large{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:22px}.el-form-item--large .el-form-item__label{height:40px;line-height:40px}.el-form-item--large .el-form-item__content{line-height:40px}.el-form-item--large .el-form-item__error{padding-top:4px}.el-form-item--default{--font-size:14px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--default .el-form-item__label{height:32px;line-height:32px}.el-form-item--default .el-form-item__content{line-height:32px}.el-form-item--default .el-form-item__error{padding-top:2px}.el-form-item--small{--font-size:12px;--el-form-label-font-size:var(--font-size);margin-bottom:18px}.el-form-item--small .el-form-item__label{height:24px;line-height:24px}.el-form-item--small .el-form-item__content{line-height:24px}.el-form-item--small .el-form-item__error{padding-top:2px}.el-form-item--label-left .el-form-item__label{justify-content:flex-start}.el-form-item--label-top{display:block}.el-form-item--label-top .el-form-item__label{display:inline-block;height:auto;line-height:22px;margin-bottom:8px;text-align:left;vertical-align:middle}.el-form-item__label-wrap{display:flex}.el-form-item__label{align-items:flex-start;box-sizing:border-box;color:var(--el-text-color-regular);display:inline-flex;flex:0 0 auto;font-size:var(--el-form-label-font-size);height:32px;justify-content:flex-end;line-height:32px;padding:0 12px 0 0}.el-form-item__content{align-items:center;display:flex;flex:1;flex-wrap:wrap;font-size:var(--font-size);line-height:32px;min-width:0;position:relative}.el-form-item__content .el-input-group{vertical-align:top}.el-form-item__error{color:var(--el-color-danger);font-size:12px;left:0;line-height:1;padding-top:2px;position:absolute;top:100%}.el-form-item__error--inline{display:inline-block;left:auto;margin-left:10px;position:relative;top:auto}.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label-wrap>.el-form-item__label:before,.el-form-item.is-required:not(.is-no-asterisk).asterisk-left>.el-form-item__label:before{color:var(--el-color-danger);content:\"*\";margin-right:4px}.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label-wrap>.el-form-item__label:after,.el-form-item.is-required:not(.is-no-asterisk).asterisk-right>.el-form-item__label:after{color:var(--el-color-danger);content:\"*\";margin-left:4px}.el-form-item.is-error .el-input-tag__wrapper,.el-form-item.is-error .el-input-tag__wrapper.is-focus,.el-form-item.is-error .el-input-tag__wrapper:focus,.el-form-item.is-error .el-input-tag__wrapper:hover,.el-form-item.is-error .el-input__wrapper,.el-form-item.is-error .el-input__wrapper.is-focus,.el-form-item.is-error .el-input__wrapper:focus,.el-form-item.is-error .el-input__wrapper:hover,.el-form-item.is-error .el-select__wrapper,.el-form-item.is-error .el-select__wrapper.is-focus,.el-form-item.is-error .el-select__wrapper:focus,.el-form-item.is-error .el-select__wrapper:hover,.el-form-item.is-error .el-textarea__inner,.el-form-item.is-error .el-textarea__inner.is-focus,.el-form-item.is-error .el-textarea__inner:focus,.el-form-item.is-error .el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-form-item.is-error .el-input-group__append .el-input__wrapper,.el-form-item.is-error .el-input-group__prepend .el-input__wrapper{box-shadow:inset 0 0 0 1px transparent}.el-form-item.is-error .el-input-group__append .el-input__validateIcon,.el-form-item.is-error .el-input-group__prepend .el-input__validateIcon{display:none}.el-form-item.is-error .el-input__validateIcon{color:var(--el-color-danger)}.el-form-item--feedback .el-input__validateIcon{display:inline-flex}.el-header{--el-header-padding:0 20px;--el-header-height:60px;box-sizing:border-box;flex-shrink:0;height:var(--el-header-height);padding:var(--el-header-padding)}.el-image-viewer__wrapper{bottom:0;left:0;position:fixed;right:0;top:0}.el-image-viewer__wrapper:focus{outline:none!important}.el-image-viewer__btn{align-items:center;border-radius:50%;box-sizing:border-box;cursor:pointer;display:flex;justify-content:center;opacity:.8;position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:1}.el-image-viewer__btn .el-icon{cursor:pointer;font-size:inherit}.el-image-viewer__close{font-size:40px;height:40px;right:40px;top:40px;width:40px}.el-image-viewer__canvas{align-items:center;display:flex;height:100%;justify-content:center;position:static;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.el-image-viewer__actions{background-color:var(--el-text-color-regular);border-color:#fff;border-radius:22px;bottom:30px;height:44px;left:50%;padding:0 23px;transform:translate(-50%);width:282px}.el-image-viewer__actions__inner{align-items:center;color:#fff;cursor:default;display:flex;font-size:23px;height:100%;justify-content:space-around;width:100%}.el-image-viewer__prev{left:40px}.el-image-viewer__next,.el-image-viewer__prev{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;top:50%;transform:translateY(-50%);width:44px}.el-image-viewer__next{right:40px;text-indent:2px}.el-image-viewer__close{background-color:var(--el-text-color-regular);border-color:#fff;color:#fff;font-size:24px;height:44px;width:44px}.el-image-viewer__mask{background:#000;height:100%;left:0;opacity:.5;position:absolute;top:0;width:100%}.viewer-fade-enter-active{animation:viewer-fade-in var(--el-transition-duration)}.viewer-fade-leave-active{animation:viewer-fade-out var(--el-transition-duration)}@keyframes viewer-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}@keyframes viewer-fade-out{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,-20px,0)}}.el-image__error,.el-image__inner,.el-image__placeholder,.el-image__wrapper{height:100%;width:100%}.el-image{display:inline-block;overflow:hidden;position:relative}.el-image__inner{opacity:1;vertical-align:top}.el-image__inner.is-loading{opacity:0}.el-image__wrapper{left:0;position:absolute;top:0}.el-image__error,.el-image__placeholder{background:var(--el-fill-color-light)}.el-image__error{align-items:center;color:var(--el-text-color-placeholder);display:flex;font-size:14px;justify-content:center;vertical-align:middle}.el-image__preview{cursor:pointer}.el-textarea{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;font-size:var(--el-font-size-base);position:relative;vertical-align:bottom;width:100%}.el-textarea__inner{-webkit-appearance:none;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));display:block;font-family:inherit;font-size:inherit;line-height:1.5;padding:5px 11px;position:relative;resize:vertical;transition:var(--el-transition-box-shadow);width:100%}.el-textarea__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-textarea__inner:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-textarea__inner:focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset;outline:none}.el-textarea .el-input__count{background:var(--el-fill-color-blank);bottom:5px;color:var(--el-color-info);font-size:12px;line-height:14px;position:absolute;right:10px}.el-textarea.is-disabled .el-textarea__inner{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;color:var(--el-disabled-text-color);cursor:not-allowed}.el-textarea.is-disabled .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-disabled .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder)}.el-textarea.is-exceed .el-textarea__inner{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-textarea.is-exceed .el-input__count{color:var(--el-color-danger)}.el-input{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;--el-input-height:var(--el-component-size);box-sizing:border-box;display:inline-flex;font-size:var(--el-font-size-base);line-height:var(--el-input-height);position:relative;vertical-align:middle;width:var(--el-input-width)}.el-input::-webkit-scrollbar{width:6px;z-index:11}.el-input::-webkit-scrollbar:horizontal{height:6px}.el-input::-webkit-scrollbar-thumb{background:var(--el-text-color-disabled);border-radius:5px;width:6px}.el-input::-webkit-scrollbar-corner,.el-input::-webkit-scrollbar-track{background:var(--el-fill-color-blank)}.el-input::-webkit-scrollbar-track-piece{background:var(--el-fill-color-blank);width:6px}.el-input .el-input__clear,.el-input .el-input__password{color:var(--el-input-icon-color);cursor:pointer;font-size:14px}.el-input .el-input__clear:hover,.el-input .el-input__password:hover{color:var(--el-input-clear-hover-color)}.el-input .el-input__count{align-items:center;color:var(--el-color-info);display:inline-flex;font-size:12px;height:100%}.el-input .el-input__count .el-input__count-inner{background:var(--el-fill-color-blank);display:inline-block;line-height:normal;padding-left:8px}.el-input__wrapper{align-items:center;background-color:var(--el-input-bg-color,var(--el-fill-color-blank));background-image:none;border-radius:var(--el-input-border-radius,var(--el-border-radius-base));box-shadow:0 0 0 1px var(--el-input-border-color,var(--el-border-color)) inset;cursor:text;display:inline-flex;flex-grow:1;justify-content:center;padding:1px 11px;transform:translateZ(0);transition:var(--el-transition-box-shadow)}.el-input__wrapper:hover{box-shadow:0 0 0 1px var(--el-input-hover-border-color) inset}.el-input__wrapper.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 32px) - 2px);-webkit-appearance:none;background:none;border:none;box-sizing:border-box;color:var(--el-input-text-color,var(--el-text-color-regular));flex-grow:1;font-size:inherit;height:var(--el-input-inner-height);line-height:var(--el-input-inner-height);outline:none;padding:0;width:100%}.el-input__inner:focus{outline:none}.el-input__inner::-moz-placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner::placeholder{color:var(--el-input-placeholder-color,var(--el-text-color-placeholder))}.el-input__inner[type=password]::-ms-reveal{display:none}.el-input__inner[type=number]{line-height:1}.el-input__prefix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__prefix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__prefix-inner>:last-child{margin-right:8px}.el-input__prefix-inner>:first-child,.el-input__prefix-inner>:first-child.el-input__icon{margin-left:0}.el-input__suffix{color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:inline-flex;flex-shrink:0;flex-wrap:nowrap;height:100%;pointer-events:none;text-align:center;transition:all var(--el-transition-duration);white-space:nowrap}.el-input__suffix-inner{align-items:center;display:inline-flex;justify-content:center;pointer-events:all}.el-input__suffix-inner>:first-child{margin-left:8px}.el-input .el-input__icon{align-items:center;display:flex;height:inherit;justify-content:center;line-height:inherit;margin-left:8px;transition:all var(--el-transition-duration)}.el-input__validateIcon{pointer-events:none}.el-input.is-active .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-color, ) inset}.el-input.is-disabled{cursor:not-allowed}.el-input.is-disabled .el-input__wrapper{background-color:var(--el-disabled-bg-color);box-shadow:0 0 0 1px var(--el-disabled-border-color) inset;cursor:not-allowed}.el-input.is-disabled .el-input__inner{color:var(--el-disabled-text-color);-webkit-text-fill-color:var(--el-disabled-text-color);cursor:not-allowed}.el-input.is-disabled .el-input__inner::-moz-placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__inner::placeholder{color:var(--el-text-color-placeholder)}.el-input.is-disabled .el-input__icon{cursor:not-allowed}.el-input.is-exceed .el-input__wrapper{box-shadow:0 0 0 1px var(--el-color-danger) inset}.el-input.is-exceed .el-input__suffix .el-input__count{color:var(--el-color-danger)}.el-input--large{--el-input-height:var(--el-component-size-large);font-size:14px}.el-input--large .el-input__wrapper{padding:1px 15px}.el-input--large .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 40px) - 2px)}.el-input--small{--el-input-height:var(--el-component-size-small);font-size:12px}.el-input--small .el-input__wrapper{padding:1px 7px}.el-input--small .el-input__inner{--el-input-inner-height:calc(var(--el-input-height, 24px) - 2px)}.el-input-group{align-items:stretch;display:inline-flex;width:100%}.el-input-group__append,.el-input-group__prepend{align-items:center;background-color:var(--el-fill-color-light);border-radius:var(--el-input-border-radius);color:var(--el-color-info);display:inline-flex;justify-content:center;min-height:100%;padding:0 20px;position:relative;white-space:nowrap}.el-input-group__append:focus,.el-input-group__prepend:focus{outline:none}.el-input-group__append .el-button,.el-input-group__append .el-select,.el-input-group__prepend .el-button,.el-input-group__prepend .el-select{display:inline-block;margin:0 -20px}.el-input-group__append button.el-button,.el-input-group__append button.el-button:hover,.el-input-group__append div.el-select .el-select__wrapper,.el-input-group__append div.el-select:hover .el-select__wrapper,.el-input-group__prepend button.el-button,.el-input-group__prepend button.el-button:hover,.el-input-group__prepend div.el-select .el-select__wrapper,.el-input-group__prepend div.el-select:hover .el-select__wrapper{background-color:transparent;border-color:transparent;color:inherit}.el-input-group__append .el-button,.el-input-group__append .el-input,.el-input-group__prepend .el-button,.el-input-group__prepend .el-input{font-size:inherit}.el-input-group__prepend{border-bottom-right-radius:0;border-right:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group__append{border-left:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-group--prepend>.el-input__wrapper,.el-input-group__append{border-bottom-left-radius:0;border-top-left-radius:0}.el-input-group--prepend .el-input-group__prepend .el-select .el-select__wrapper{border-bottom-right-radius:0;border-top-right-radius:0;box-shadow:1px 0 0 0 var(--el-input-border-color) inset,0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset}.el-input-group--append>.el-input__wrapper{border-bottom-right-radius:0;border-top-right-radius:0}.el-input-group--append .el-input-group__append .el-select .el-select__wrapper{border-bottom-left-radius:0;border-top-left-radius:0;box-shadow:0 1px 0 0 var(--el-input-border-color) inset,0 -1px 0 0 var(--el-input-border-color) inset,-1px 0 0 0 var(--el-input-border-color) inset}.el-input-hidden{display:none!important}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-input-tag{--el-input-tag-border-color-hover:var(--el-border-color-hover);--el-input-tag-disabled-color:var(--el-disabled-text-color);--el-input-tag-disabled-border:var(--el-disabled-border-color);--el-input-tag-font-size:var(--el-font-size-base);--el-input-tag-close-hover-color:var(--el-text-color-secondary);--el-input-tag-text-color:var(--el-text-color-regular);--el-input-tag-input-focus-border-color:var(--el-color-primary);--el-input-tag-width:100%;--el-input-tag-mini-height:var(--el-component-size);--el-input-tag-gap:6px;--el-input-tag-padding:4px;--el-input-tag-inner-padding:8px;--el-input-tag-line-height:24px;align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:var(--el-input-tag-font-size);line-height:var(--el-input-tag-line-height);min-height:var(--el-input-tag-mini-height);padding:var(--el-input-tag-padding);transform:translateZ(0);transition:var(--el-transition-duration);width:var(--el-input-tag-width)}.el-input-tag.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-input-tag.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-input-tag.is-disabled{background-color:var(--el-fill-color-light);cursor:not-allowed}.el-input-tag.is-disabled,.el-input-tag.is-disabled:hover{box-shadow:0 0 0 1px var(--el-input-tag-disabled-border) inset}.el-input-tag.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-input-tag.is-disabled .el-input-tag__inner .el-input-tag__input,.el-input-tag.is-disabled .el-input-tag__inner .el-tag{cursor:not-allowed}.el-input-tag__prefix,.el-input-tag__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;padding:0 var(--el-input-tag-inner-padding)}.el-input-tag__suffix{gap:8px}.el-input-tag__inner{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:var(--el-input-tag-gap);max-width:100%;min-width:0;position:relative}.el-input-tag__inner.is-left-space{margin-left:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-right-space{margin-right:var(--el-input-tag-inner-padding)}.el-input-tag__inner.is-draggable .el-tag{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-input-tag__drop-indicator{background-color:var(--el-color-primary);height:var(--el-input-tag-line-height);position:absolute;top:0;width:1px}.el-input-tag__inner .el-tag{border-color:transparent;cursor:pointer;max-width:100%}.el-input-tag__inner .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-input-tag__inner .el-tag .el-tag__content{line-height:normal;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-input-tag__input-wrapper{flex:1}.el-input-tag__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-input-tag-text-color);font-family:inherit;font-size:inherit;line-height:inherit;outline:none;padding:0;width:100%}.el-input-tag__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-input-tag--large{--el-input-tag-gap:6px;--el-input-tag-padding:8px;--el-input-tag-padding-left:8px;--el-input-tag-font-size:14px}.el-input-tag--small{--el-input-tag-gap:4px;--el-input-tag-padding:2px;--el-input-tag-padding-left:6px;--el-input-tag-font-size:12px;--el-input-tag-line-height:20px;--el-input-tag-mini-height:var(--el-component-size-small)}.el-link{--el-link-font-size:var(--el-font-size-base);--el-link-font-weight:var(--el-font-weight-primary);--el-link-text-color:var(--el-text-color-regular);--el-link-hover-text-color:var(--el-color-primary);--el-link-disabled-text-color:var(--el-text-color-placeholder);align-items:center;color:var(--el-link-text-color);cursor:pointer;display:inline-flex;flex-direction:row;font-size:var(--el-link-font-size);font-weight:var(--el-link-font-weight);justify-content:center;outline:none;padding:0;position:relative;text-decoration:none;vertical-align:middle}.el-link:hover{color:var(--el-link-hover-text-color)}.el-link.is-underline:hover:after{border-bottom:1px solid var(--el-link-hover-text-color);bottom:0;content:\"\";height:0;left:0;position:absolute;right:0}.el-link.is-disabled{color:var(--el-link-disabled-text-color);cursor:not-allowed}.el-link [class*=el-icon-]+span{margin-left:5px}.el-link.el-link--default:after{border-color:var(--el-link-hover-text-color)}.el-link__inner{align-items:center;display:inline-flex;justify-content:center}.el-link.el-link--primary{--el-link-text-color:var(--el-color-primary);--el-link-hover-text-color:var(--el-color-primary-light-3);--el-link-disabled-text-color:var(--el-color-primary-light-5)}.el-link.el-link--primary.is-underline:hover:after,.el-link.el-link--primary:after{border-color:var(--el-link-text-color)}.el-link.el-link--success{--el-link-text-color:var(--el-color-success);--el-link-hover-text-color:var(--el-color-success-light-3);--el-link-disabled-text-color:var(--el-color-success-light-5)}.el-link.el-link--success.is-underline:hover:after,.el-link.el-link--success:after{border-color:var(--el-link-text-color)}.el-link.el-link--warning{--el-link-text-color:var(--el-color-warning);--el-link-hover-text-color:var(--el-color-warning-light-3);--el-link-disabled-text-color:var(--el-color-warning-light-5)}.el-link.el-link--warning.is-underline:hover:after,.el-link.el-link--warning:after{border-color:var(--el-link-text-color)}.el-link.el-link--danger{--el-link-text-color:var(--el-color-danger);--el-link-hover-text-color:var(--el-color-danger-light-3);--el-link-disabled-text-color:var(--el-color-danger-light-5)}.el-link.el-link--danger.is-underline:hover:after,.el-link.el-link--danger:after{border-color:var(--el-link-text-color)}.el-link.el-link--error{--el-link-text-color:var(--el-color-error);--el-link-hover-text-color:var(--el-color-error-light-3);--el-link-disabled-text-color:var(--el-color-error-light-5)}.el-link.el-link--error.is-underline:hover:after,.el-link.el-link--error:after{border-color:var(--el-link-text-color)}.el-link.el-link--info{--el-link-text-color:var(--el-color-info);--el-link-hover-text-color:var(--el-color-info-light-3);--el-link-disabled-text-color:var(--el-color-info-light-5)}.el-link.el-link--info.is-underline:hover:after,.el-link.el-link--info:after{border-color:var(--el-link-text-color)}:root{--el-loading-spinner-size:42px;--el-loading-fullscreen-spinner-size:50px}.el-loading-parent--relative{position:relative!important}.el-loading-parent--hidden{overflow:hidden!important}.el-loading-mask{background-color:var(--el-mask-color);bottom:0;left:0;margin:0;position:absolute;right:0;top:0;transition:opacity var(--el-transition-duration);z-index:2000}.el-loading-mask.is-fullscreen{position:fixed}.el-loading-mask.is-fullscreen .el-loading-spinner{margin-top:calc((0px - var(--el-loading-fullscreen-spinner-size))/2)}.el-loading-mask.is-fullscreen .el-loading-spinner .circular{height:var(--el-loading-fullscreen-spinner-size);width:var(--el-loading-fullscreen-spinner-size)}.el-loading-spinner{margin-top:calc((0px - var(--el-loading-spinner-size))/2);position:absolute;text-align:center;top:50%;width:100%}.el-loading-spinner .el-loading-text{color:var(--el-color-primary);font-size:14px;margin:3px 0}.el-loading-spinner .circular{animation:loading-rotate 2s linear infinite;display:inline;height:var(--el-loading-spinner-size);width:var(--el-loading-spinner-size)}.el-loading-spinner .path{animation:loading-dash 1.5s ease-in-out infinite;stroke-dasharray:90,150;stroke-dashoffset:0;stroke-width:2;stroke:var(--el-color-primary);stroke-linecap:round}.el-loading-spinner i{color:var(--el-color-primary)}.el-loading-fade-enter-from,.el-loading-fade-leave-to{opacity:0}@keyframes loading-rotate{to{transform:rotate(1turn)}}@keyframes loading-dash{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-40px}to{stroke-dasharray:90,150;stroke-dashoffset:-120px}}.el-main{--el-main-padding:20px;box-sizing:border-box;display:block;flex:1;flex-basis:auto;overflow:auto;padding:var(--el-main-padding)}:root{--el-menu-active-color:var(--el-color-primary);--el-menu-text-color:var(--el-text-color-primary);--el-menu-hover-text-color:var(--el-color-primary);--el-menu-bg-color:var(--el-fill-color-blank);--el-menu-hover-bg-color:var(--el-color-primary-light-9);--el-menu-item-height:56px;--el-menu-sub-item-height:calc(var(--el-menu-item-height) - 6px);--el-menu-horizontal-height:60px;--el-menu-horizontal-sub-item-height:36px;--el-menu-item-font-size:var(--el-font-size-base);--el-menu-item-hover-fill:var(--el-color-primary-light-9);--el-menu-border-color:var(--el-border-color);--el-menu-base-level-padding:20px;--el-menu-level-padding:20px;--el-menu-icon-width:24px}.el-menu{background-color:var(--el-menu-bg-color);border-right:1px solid var(--el-menu-border-color);box-sizing:border-box;list-style:none;margin:0;padding-left:0;position:relative}.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-menu-item-group__title,.el-menu--vertical:not(.el-menu--collapse):not(.el-menu--popup-container) .el-sub-menu__title{padding-left:calc(var(--el-menu-base-level-padding) + var(--el-menu-level)*var(--el-menu-level-padding));white-space:nowrap}.el-menu:not(.el-menu--collapse) .el-sub-menu__title{padding-right:calc(var(--el-menu-base-level-padding) + var(--el-menu-icon-width))}.el-menu--horizontal{border-right:none;display:flex;flex-wrap:nowrap;height:var(--el-menu-horizontal-height)}.el-menu--horizontal.el-menu--popup-container{height:unset}.el-menu--horizontal.el-menu{border-bottom:1px solid var(--el-menu-border-color)}.el-menu--horizontal>.el-menu-item{align-items:center;border-bottom:2px solid transparent;color:var(--el-menu-text-color);display:inline-flex;height:100%;justify-content:center;margin:0}.el-menu--horizontal>.el-menu-item a,.el-menu--horizontal>.el-menu-item a:hover{color:inherit}.el-menu--horizontal>.el-sub-menu:focus,.el-menu--horizontal>.el-sub-menu:hover{outline:none}.el-menu--horizontal>.el-sub-menu:hover .el-sub-menu__title{color:var(--el-menu-hover-text-color)}.el-menu--horizontal>.el-sub-menu.is-active .el-sub-menu__title{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title{border-bottom:2px solid transparent;color:var(--el-menu-text-color);height:100%}.el-menu--horizontal>.el-sub-menu .el-sub-menu__title:hover{background-color:var(--el-menu-bg-color)}.el-menu--horizontal .el-menu .el-menu-item,.el-menu--horizontal .el-menu .el-sub-menu__title{align-items:center;background-color:var(--el-menu-bg-color);color:var(--el-menu-text-color);display:flex;height:var(--el-menu-horizontal-sub-item-height);line-height:var(--el-menu-horizontal-sub-item-height);padding:0 10px}.el-menu--horizontal .el-menu .el-sub-menu__title{padding-right:40px}.el-menu--horizontal .el-menu .el-menu-item.is-active,.el-menu--horizontal .el-menu .el-sub-menu.is-active>.el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--horizontal .el-menu-item:not(.is-disabled):focus,.el-menu--horizontal .el-menu-item:not(.is-disabled):hover{background-color:var(--el-menu-hover-bg-color);color:var(--el-menu-hover-text-color);outline:none}.el-menu--horizontal>.el-menu-item.is-active{border-bottom:2px solid var(--el-menu-active-color);color:var(--el-menu-active-color)!important}.el-menu--collapse{width:calc(var(--el-menu-icon-width) + var(--el-menu-base-level-padding)*2)}.el-menu--collapse>.el-menu-item [class^=el-icon],.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title [class^=el-icon],.el-menu--collapse>.el-sub-menu>.el-sub-menu__title [class^=el-icon]{margin:0;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu--collapse>.el-menu-item .el-sub-menu__icon-arrow,.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title .el-sub-menu__icon-arrow{display:none}.el-menu--collapse>.el-menu-item-group>ul>.el-sub-menu>.el-sub-menu__title>span,.el-menu--collapse>.el-menu-item>span,.el-menu--collapse>.el-sub-menu>.el-sub-menu__title>span{display:inline-block;height:0;overflow:hidden;visibility:hidden;width:0}.el-menu--collapse>.el-menu-item.is-active i{color:inherit}.el-menu--collapse .el-menu .el-sub-menu{min-width:200px}.el-menu--collapse .el-sub-menu.is-active .el-sub-menu__title{color:var(--el-menu-active-color)}.el-menu--popup{border:none;border-radius:var(--el-border-radius-small);box-shadow:var(--el-box-shadow-light);min-width:200px;padding:5px 0;z-index:100}.el-menu .el-icon{flex-shrink:0}.el-menu-item{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-menu-item *{vertical-align:bottom}.el-menu-item i{color:inherit}.el-menu-item:focus,.el-menu-item:hover{outline:none}.el-menu-item:hover{background-color:var(--el-menu-hover-bg-color)}.el-menu-item.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-menu-item [class^=el-icon]{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-menu-item.is-active{color:var(--el-menu-active-color)}.el-menu-item.is-active i{color:inherit}.el-menu-item .el-menu-tooltip__trigger{align-items:center;box-sizing:border-box;display:inline-flex;height:100%;left:0;padding:0 var(--el-menu-base-level-padding);position:absolute;top:0;width:100%}.el-sub-menu{list-style:none;margin:0;padding-left:0}.el-sub-menu__title{align-items:center;box-sizing:border-box;color:var(--el-menu-text-color);cursor:pointer;display:flex;font-size:var(--el-menu-item-font-size);height:var(--el-menu-item-height);line-height:var(--el-menu-item-height);list-style:none;padding:0 var(--el-menu-base-level-padding);position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration),color var(--el-transition-duration);white-space:nowrap}.el-sub-menu__title *{vertical-align:bottom}.el-sub-menu__title i{color:inherit}.el-sub-menu__title:focus,.el-sub-menu__title:hover{outline:none}.el-sub-menu__title.is-disabled{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu__title:hover{background-color:var(--el-menu-hover-bg-color)}.el-sub-menu .el-menu{border:none}.el-sub-menu .el-menu-item{height:var(--el-menu-sub-item-height);line-height:var(--el-menu-sub-item-height)}.el-sub-menu__hide-arrow .el-sub-menu__icon-arrow{display:none!important}.el-sub-menu.is-active .el-sub-menu__title{border-bottom-color:var(--el-menu-active-color)}.el-sub-menu.is-disabled .el-menu-item,.el-sub-menu.is-disabled .el-sub-menu__title{background:none!important;cursor:not-allowed;opacity:.25}.el-sub-menu .el-icon{font-size:18px;margin-right:5px;text-align:center;vertical-align:middle;width:var(--el-menu-icon-width)}.el-sub-menu .el-icon.el-sub-menu__icon-more{margin-right:0!important}.el-sub-menu .el-sub-menu__icon-arrow{font-size:12px;margin-right:0;margin-top:-6px;position:absolute;right:var(--el-menu-base-level-padding);top:50%;transition:transform var(--el-transition-duration);width:inherit}.el-menu-item-group>ul{padding:0}.el-menu-item-group__title{color:var(--el-text-color-secondary);font-size:12px;line-height:normal;padding:7px 0 7px var(--el-menu-base-level-padding)}.horizontal-collapse-transition .el-sub-menu__title .el-sub-menu__icon-arrow{opacity:0;transition:var(--el-transition-duration-fast)}.el-message-box{--el-messagebox-title-color:var(--el-text-color-primary);--el-messagebox-width:420px;--el-messagebox-border-radius:4px;--el-messagebox-box-shadow:var(--el-box-shadow);--el-messagebox-font-size:var(--el-font-size-large);--el-messagebox-content-font-size:var(--el-font-size-base);--el-messagebox-content-color:var(--el-text-color-regular);--el-messagebox-error-font-size:12px;--el-messagebox-padding-primary:12px;--el-messagebox-font-line-height:var(--el-font-line-height-primary);backface-visibility:hidden;background-color:var(--el-bg-color);border-radius:var(--el-messagebox-border-radius);box-shadow:var(--el-messagebox-box-shadow);box-sizing:border-box;display:inline-block;font-size:var(--el-messagebox-font-size);max-width:var(--el-messagebox-width);overflow:hidden;overflow-wrap:break-word;padding:var(--el-messagebox-padding-primary);position:relative;text-align:left;vertical-align:middle;width:100%}.el-message-box:focus{outline:none!important}.el-overlay.is-message-box .el-overlay-message-box{bottom:0;left:0;overflow:auto;padding:16px;position:fixed;right:0;text-align:center;top:0}.el-overlay.is-message-box .el-overlay-message-box:after{content:\"\";display:inline-block;height:100%;vertical-align:middle;width:0}.el-message-box.is-draggable .el-message-box__header{cursor:move;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-message-box__header{padding-bottom:var(--el-messagebox-padding-primary)}.el-message-box__header.show-close{padding-right:calc(var(--el-messagebox-padding-primary) + var(--el-message-close-size, 16px))}.el-message-box__title{color:var(--el-messagebox-title-color);font-size:var(--el-messagebox-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__headerbtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-message-box__headerbtn .el-message-box__close{color:var(--el-color-info);font-size:inherit}.el-message-box__headerbtn:focus .el-message-box__close,.el-message-box__headerbtn:hover .el-message-box__close{color:var(--el-color-primary)}.el-message-box__content{color:var(--el-messagebox-content-color);font-size:var(--el-messagebox-content-font-size)}.el-message-box__container{align-items:center;display:flex;gap:12px}.el-message-box__input{padding-top:12px}.el-message-box__input div.invalid>input,.el-message-box__input div.invalid>input:focus{border-color:var(--el-color-error)}.el-message-box__status{font-size:24px}.el-message-box__status.el-message-box-icon--success{--el-messagebox-color:var(--el-color-success);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--info{--el-messagebox-color:var(--el-color-info);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--warning{--el-messagebox-color:var(--el-color-warning);color:var(--el-messagebox-color)}.el-message-box__status.el-message-box-icon--error{--el-messagebox-color:var(--el-color-error);color:var(--el-messagebox-color)}.el-message-box__message{margin:0}.el-message-box__message p{line-height:var(--el-messagebox-font-line-height);margin:0}.el-message-box__errormsg{color:var(--el-color-error);font-size:var(--el-messagebox-error-font-size);line-height:var(--el-messagebox-font-line-height)}.el-message-box__btns{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end;padding-top:var(--el-messagebox-padding-primary)}.el-message-box--center .el-message-box__title{align-items:center;display:flex;gap:6px;justify-content:center}.el-message-box--center .el-message-box__status{font-size:inherit}.el-message-box--center .el-message-box__btns,.el-message-box--center .el-message-box__container{justify-content:center}.fade-in-linear-enter-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration)}.fade-in-linear-leave-active .el-overlay-message-box{animation:msgbox-fade-in var(--el-transition-duration) reverse}@keyframes msgbox-fade-in{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.el-message{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-border-color-lighter);--el-message-padding:11px 15px;--el-message-close-size:16px;--el-message-close-icon-color:var(--el-text-color-placeholder);--el-message-close-hover-color:var(--el-text-color-secondary);align-items:center;background-color:var(--el-message-bg-color);border-color:var(--el-message-border-color);border-radius:var(--el-border-radius-base);border-style:var(--el-border-style);border-width:var(--el-border-width);box-sizing:border-box;display:flex;gap:8px;left:50%;max-width:calc(100% - 32px);padding:var(--el-message-padding);position:fixed;top:20px;transform:translate(-50%);transition:opacity var(--el-transition-duration),transform .4s,top .4s;width:-moz-fit-content;width:fit-content}.el-message.is-center{justify-content:center}.el-message.is-plain{background-color:var(--el-bg-color-overlay);border-color:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-message p{margin:0}.el-message--success{--el-message-bg-color:var(--el-color-success-light-9);--el-message-border-color:var(--el-color-success-light-8);--el-message-text-color:var(--el-color-success)}.el-message--success .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--success{color:var(--el-message-text-color)}.el-message--info{--el-message-bg-color:var(--el-color-info-light-9);--el-message-border-color:var(--el-color-info-light-8);--el-message-text-color:var(--el-color-info)}.el-message--info .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--info{color:var(--el-message-text-color)}.el-message--warning{--el-message-bg-color:var(--el-color-warning-light-9);--el-message-border-color:var(--el-color-warning-light-8);--el-message-text-color:var(--el-color-warning)}.el-message--warning .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--warning{color:var(--el-message-text-color)}.el-message--error{--el-message-bg-color:var(--el-color-error-light-9);--el-message-border-color:var(--el-color-error-light-8);--el-message-text-color:var(--el-color-error)}.el-message--error .el-message__content{color:var(--el-message-text-color);overflow-wrap:break-word}.el-message .el-message-icon--error{color:var(--el-message-text-color)}.el-message .el-message__badge{position:absolute;right:-8px;top:-8px}.el-message__content{font-size:14px;line-height:1;padding:0}.el-message__content:focus{outline-width:0}.el-message .el-message__closeBtn{color:var(--el-message-close-icon-color);cursor:pointer;font-size:var(--el-message-close-size)}.el-message .el-message__closeBtn:focus{outline-width:0}.el-message .el-message__closeBtn:hover{color:var(--el-message-close-hover-color)}.el-message-fade-enter-from,.el-message-fade-leave-to{opacity:0;transform:translate(-50%,-100%)}.el-notification{--el-notification-width:330px;--el-notification-padding:14px 26px 14px 13px;--el-notification-radius:8px;--el-notification-shadow:var(--el-box-shadow-light);--el-notification-border-color:var(--el-border-color-lighter);--el-notification-icon-size:24px;--el-notification-close-font-size:var(--el-message-close-size,16px);--el-notification-group-margin-left:13px;--el-notification-group-margin-right:8px;--el-notification-content-font-size:var(--el-font-size-base);--el-notification-content-color:var(--el-text-color-regular);--el-notification-title-font-size:16px;--el-notification-title-color:var(--el-text-color-primary);--el-notification-close-color:var(--el-text-color-secondary);--el-notification-close-hover-color:var(--el-text-color-regular);background-color:var(--el-bg-color-overlay);border:1px solid var(--el-notification-border-color);border-radius:var(--el-notification-radius);box-shadow:var(--el-notification-shadow);box-sizing:border-box;display:flex;overflow:hidden;overflow-wrap:break-word;padding:var(--el-notification-padding);position:fixed;transition:opacity var(--el-transition-duration),transform var(--el-transition-duration),left var(--el-transition-duration),right var(--el-transition-duration),top .4s,bottom var(--el-transition-duration);width:var(--el-notification-width);z-index:9999}.el-notification.right{right:16px}.el-notification.left{left:16px}.el-notification__group{margin-left:var(--el-notification-group-margin-left);margin-right:var(--el-notification-group-margin-right)}.el-notification__title{color:var(--el-notification-title-color);font-size:var(--el-notification-title-font-size);font-weight:700;line-height:var(--el-notification-icon-size);margin:0}.el-notification__content{color:var(--el-notification-content-color);font-size:var(--el-notification-content-font-size);line-height:24px;margin:6px 0 0}.el-notification__content p{margin:0}.el-notification .el-notification__icon{font-size:var(--el-notification-icon-size);height:var(--el-notification-icon-size);width:var(--el-notification-icon-size)}.el-notification .el-notification__closeBtn{color:var(--el-notification-close-color);cursor:pointer;font-size:var(--el-notification-close-font-size);position:absolute;right:15px;top:18px}.el-notification .el-notification__closeBtn:hover{color:var(--el-notification-close-hover-color)}.el-notification .el-notification--success{--el-notification-icon-color:var(--el-color-success);color:var(--el-notification-icon-color)}.el-notification .el-notification--info{--el-notification-icon-color:var(--el-color-info);color:var(--el-notification-icon-color)}.el-notification .el-notification--warning{--el-notification-icon-color:var(--el-color-warning);color:var(--el-notification-icon-color)}.el-notification .el-notification--error{--el-notification-icon-color:var(--el-color-error);color:var(--el-notification-icon-color)}.el-notification-fade-enter-from.right{right:0;transform:translate(100%)}.el-notification-fade-enter-from.left{left:0;transform:translate(-100%)}.el-notification-fade-leave-to{opacity:0}.el-overlay{background-color:var(--el-overlay-color-lighter);bottom:0;height:100%;left:0;overflow:auto;position:fixed;right:0;top:0;z-index:2000}.el-overlay .el-overlay-root{height:0}.el-page-header.is-contentful .el-page-header__main{border-top:1px solid var(--el-border-color-light);margin-top:16px}.el-page-header__header{align-items:center;display:flex;justify-content:space-between;line-height:24px}.el-page-header__left{align-items:center;display:flex;margin-right:40px;position:relative}.el-page-header__back{align-items:center;cursor:pointer;display:flex}.el-page-header__left .el-divider--vertical{margin:0 16px}.el-page-header__icon{align-items:center;display:flex;font-size:16px;margin-right:10px}.el-page-header__icon .el-icon{font-size:inherit}.el-page-header__title{font-size:14px;font-weight:500}.el-page-header__content{color:var(--el-text-color-primary);font-size:18px}.el-page-header__breadcrumb{margin-bottom:16px}.el-pagination{--el-pagination-font-size:14px;--el-pagination-bg-color:var(--el-fill-color-blank);--el-pagination-text-color:var(--el-text-color-primary);--el-pagination-border-radius:2px;--el-pagination-button-color:var(--el-text-color-primary);--el-pagination-button-width:32px;--el-pagination-button-height:32px;--el-pagination-button-disabled-color:var(--el-text-color-placeholder);--el-pagination-button-disabled-bg-color:var(--el-fill-color-blank);--el-pagination-button-bg-color:var(--el-fill-color);--el-pagination-hover-color:var(--el-color-primary);--el-pagination-font-size-small:12px;--el-pagination-button-width-small:24px;--el-pagination-button-height-small:24px;--el-pagination-button-width-large:40px;--el-pagination-button-height-large:40px;--el-pagination-item-gap:16px;align-items:center;color:var(--el-pagination-text-color);display:flex;font-size:var(--el-pagination-font-size);font-weight:400;white-space:nowrap}.el-pagination .el-input__inner{-moz-appearance:textfield;text-align:center}.el-pagination .el-select{width:128px}.el-pagination button{align-items:center;background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;display:flex;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pagination button *{pointer-events:none}.el-pagination button:focus{outline:none}.el-pagination button.is-active,.el-pagination button:hover{color:var(--el-pagination-hover-color)}.el-pagination button.is-active{cursor:default;font-weight:700}.el-pagination button.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pagination button.is-disabled,.el-pagination button:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pagination button:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-pagination .btn-next .el-icon,.el-pagination .btn-prev .el-icon{display:block;font-size:12px;font-weight:700;width:inherit}.el-pagination>.is-first{margin-left:0!important}.el-pagination>.is-last{margin-right:0!important}.el-pagination .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination__sizes,.el-pagination__total{color:var(--el-text-color-regular);font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__total[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__jump{align-items:center;color:var(--el-text-color-regular);display:flex;font-weight:400;margin-left:var(--el-pagination-item-gap)}.el-pagination__jump[disabled=true]{color:var(--el-text-color-placeholder)}.el-pagination__goto{margin-right:8px}.el-pagination__editor{box-sizing:border-box;text-align:center}.el-pagination__editor.el-input{width:56px}.el-pagination__editor .el-input__inner::-webkit-inner-spin-button,.el-pagination__editor .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-pagination__classifier{margin-left:8px}.el-pagination__rightwrapper{align-items:center;display:flex;flex:1;justify-content:flex-end}.el-pagination.is-background .btn-next,.el-pagination.is-background .btn-prev,.el-pagination.is-background .el-pager li{background-color:var(--el-pagination-button-bg-color);margin:0 4px}.el-pagination.is-background .btn-next.is-active,.el-pagination.is-background .btn-prev.is-active,.el-pagination.is-background .el-pager li.is-active{background-color:var(--el-color-primary);color:var(--el-color-white)}.el-pagination.is-background .btn-next.is-disabled,.el-pagination.is-background .btn-next:disabled,.el-pagination.is-background .btn-prev.is-disabled,.el-pagination.is-background .btn-prev:disabled,.el-pagination.is-background .el-pager li.is-disabled,.el-pagination.is-background .el-pager li:disabled{background-color:var(--el-disabled-bg-color);color:var(--el-text-color-placeholder)}.el-pagination.is-background .btn-next.is-disabled.is-active,.el-pagination.is-background .btn-next:disabled.is-active,.el-pagination.is-background .btn-prev.is-disabled.is-active,.el-pagination.is-background .btn-prev:disabled.is-active,.el-pagination.is-background .el-pager li.is-disabled.is-active,.el-pagination.is-background .el-pager li:disabled.is-active{background-color:var(--el-fill-color-dark);color:var(--el-text-color-secondary)}.el-pagination.is-background .btn-prev{margin-left:var(--el-pagination-item-gap)}.el-pagination--small .btn-next,.el-pagination--small .btn-prev,.el-pagination--small .el-pager li{font-size:var(--el-pagination-font-size-small);height:var(--el-pagination-button-height-small);line-height:var(--el-pagination-button-height-small);min-width:var(--el-pagination-button-width-small)}.el-pagination--small button,.el-pagination--small span:not([class*=suffix]){font-size:var(--el-pagination-font-size-small)}.el-pagination--small .el-select{width:100px}.el-pagination--large .btn-next,.el-pagination--large .btn-prev,.el-pagination--large .el-pager li{height:var(--el-pagination-button-height-large);line-height:var(--el-pagination-button-height-large);min-width:var(--el-pagination-button-width-large)}.el-pagination--large .el-select .el-input{width:160px}.el-pager{font-size:0;list-style:none;margin:0;padding:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-pager,.el-pager li{align-items:center;display:flex}.el-pager li{background:var(--el-pagination-bg-color);border:none;border-radius:var(--el-pagination-border-radius);box-sizing:border-box;color:var(--el-pagination-button-color);cursor:pointer;font-size:var(--el-pagination-font-size);height:var(--el-pagination-button-height);justify-content:center;line-height:var(--el-pagination-button-height);min-width:var(--el-pagination-button-width);padding:0 4px;text-align:center}.el-pager li *{pointer-events:none}.el-pager li:focus{outline:none}.el-pager li.is-active,.el-pager li:hover{color:var(--el-pagination-hover-color)}.el-pager li.is-active{cursor:default;font-weight:700}.el-pager li.is-active.is-disabled{color:var(--el-text-color-secondary);font-weight:700}.el-pager li.is-disabled,.el-pager li:disabled{background-color:var(--el-pagination-button-disabled-bg-color);color:var(--el-pagination-button-disabled-color);cursor:not-allowed}.el-pager li:focus-visible{outline:1px solid var(--el-pagination-hover-color);outline-offset:-1px}.el-popconfirm__main{align-items:center;display:flex}.el-popconfirm__icon{margin-right:5px}.el-popconfirm__action{margin-top:8px;text-align:right}.el-popover{--el-popover-bg-color:var(--el-bg-color-overlay);--el-popover-font-size:var(--el-font-size-base);--el-popover-border-color:var(--el-border-color-lighter);--el-popover-padding:12px;--el-popover-padding-large:18px 20px;--el-popover-title-font-size:16px;--el-popover-title-text-color:var(--el-text-color-primary);--el-popover-border-radius:4px}.el-popover.el-popper{background:var(--el-popover-bg-color);border:1px solid var(--el-popover-border-color);border-radius:var(--el-popover-border-radius);box-shadow:var(--el-box-shadow-light);box-sizing:border-box;color:var(--el-text-color-regular);font-size:var(--el-popover-font-size);line-height:1.4;min-width:150px;overflow-wrap:break-word;padding:var(--el-popover-padding);z-index:var(--el-index-popper)}.el-popover.el-popper--plain{padding:var(--el-popover-padding-large)}.el-popover__title{color:var(--el-popover-title-text-color);font-size:var(--el-popover-title-font-size);line-height:1;margin-bottom:12px}.el-popover__reference:focus:hover,.el-popover__reference:focus:not(.focusing){outline-width:0}.el-popover.el-popper.is-dark{--el-popover-bg-color:var(--el-text-color-primary);--el-popover-border-color:var(--el-text-color-primary);--el-popover-title-text-color:var(--el-bg-color);color:var(--el-bg-color)}.el-popover.el-popper:focus,.el-popover.el-popper:focus:active{outline-width:0}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:\"\";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light)}.el-radio-button,.el-radio-button__inner{display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border:var(--el-border);border-left:0;border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;padding:8px 15px;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-left:var(--el-border);border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-radio-group{align-items:center;display:inline-flex;flex-wrap:wrap;font-size:0}.el-radio{--el-radio-font-size:var(--el-font-size-base);--el-radio-text-color:var(--el-text-color-regular);--el-radio-font-weight:var(--el-font-weight-primary);--el-radio-input-height:14px;--el-radio-input-width:14px;--el-radio-input-border-radius:var(--el-border-radius-circle);--el-radio-input-bg-color:var(--el-fill-color-blank);--el-radio-input-border:var(--el-border);--el-radio-input-border-color:var(--el-border-color);--el-radio-input-border-color-hover:var(--el-color-primary);align-items:center;color:var(--el-radio-text-color);cursor:pointer;display:inline-flex;font-size:var(--el-font-size-base);font-weight:var(--el-radio-font-weight);height:32px;margin-right:30px;outline:none;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-radio.el-radio--large{height:40px}.el-radio.el-radio--small{height:24px}.el-radio.is-bordered{border:var(--el-border);border-radius:var(--el-border-radius-base);box-sizing:border-box;padding:0 15px 0 9px}.el-radio.is-bordered.is-checked{border-color:var(--el-color-primary)}.el-radio.is-bordered.is-disabled{border-color:var(--el-border-color-lighter);cursor:not-allowed}.el-radio.is-bordered.el-radio--large{border-radius:var(--el-border-radius-base);padding:0 19px 0 11px}.el-radio.is-bordered.el-radio--large .el-radio__label{font-size:var(--el-font-size-base)}.el-radio.is-bordered.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.is-bordered.el-radio--small{border-radius:var(--el-border-radius-base);padding:0 11px 0 7px}.el-radio.is-bordered.el-radio--small .el-radio__label{font-size:12px}.el-radio.is-bordered.el-radio--small .el-radio__inner{height:12px;width:12px}.el-radio:last-child{margin-right:0}.el-radio__input{cursor:pointer;display:inline-flex;outline:none;position:relative;vertical-align:middle;white-space:nowrap}.el-radio__input.is-disabled .el-radio__inner{border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled .el-radio__inner,.el-radio__input.is-disabled .el-radio__inner:after{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-radio__input.is-disabled .el-radio__inner+.el-radio__label{cursor:not-allowed}.el-radio__input.is-disabled.is-checked .el-radio__inner{background-color:var(--el-disabled-bg-color);border-color:var(--el-disabled-border-color)}.el-radio__input.is-disabled.is-checked .el-radio__inner:after{background-color:var(--el-text-color-placeholder)}.el-radio__input.is-disabled+span.el-radio__label{color:var(--el-text-color-placeholder);cursor:not-allowed}.el-radio__input.is-checked .el-radio__inner{background:var(--el-color-primary);border-color:var(--el-color-primary)}.el-radio__input.is-checked .el-radio__inner:after{transform:translate(-50%,-50%) scale(1)}.el-radio__input.is-checked+.el-radio__label{color:var(--el-color-primary)}.el-radio__input.is-focus .el-radio__inner{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner{background-color:var(--el-radio-input-bg-color);border:var(--el-radio-input-border);border-radius:var(--el-radio-input-border-radius);box-sizing:border-box;cursor:pointer;display:inline-block;height:var(--el-radio-input-height);position:relative;width:var(--el-radio-input-width)}.el-radio__inner:hover{border-color:var(--el-radio-input-border-color-hover)}.el-radio__inner:after{background-color:var(--el-color-white);border-radius:var(--el-radio-input-border-radius);content:\"\";height:4px;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:transform .15s ease-in;width:4px}.el-radio__original{bottom:0;left:0;margin:0;opacity:0;outline:none;position:absolute;right:0;top:0;z-index:-1}.el-radio__original:focus-visible+.el-radio__inner{border-radius:var(--el-radio-input-border-radius);outline:2px solid var(--el-radio-input-border-color-hover);outline-offset:1px}.el-radio:focus:not(:focus-visible):not(.is-focus):not(:active):not(.is-disabled) .el-radio__inner{box-shadow:0 0 2px 2px var(--el-radio-input-border-color-hover)}.el-radio__label{font-size:var(--el-radio-font-size);padding-left:8px}.el-radio.el-radio--large .el-radio__label{font-size:14px}.el-radio.el-radio--large .el-radio__inner{height:14px;width:14px}.el-radio.el-radio--small .el-radio__label{font-size:12px}.el-radio.el-radio--small .el-radio__inner{height:12px;width:12px}.el-rate{--el-rate-height:20px;--el-rate-font-size:var(--el-font-size-base);--el-rate-icon-size:18px;--el-rate-icon-margin:6px;--el-rate-void-color:var(--el-border-color-darker);--el-rate-fill-color:#f7ba2a;--el-rate-disabled-void-color:var(--el-fill-color);--el-rate-text-color:var(--el-text-color-primary);align-items:center;display:inline-flex;height:32px}.el-rate:active,.el-rate:focus{outline:none}.el-rate__item{color:var(--el-rate-void-color);cursor:pointer;display:inline-block;font-size:0;line-height:normal;position:relative;vertical-align:middle}.el-rate .el-rate__icon{display:inline-block;font-size:var(--el-rate-icon-size);margin-right:var(--el-rate-icon-margin);position:relative;transition:var(--el-transition-duration)}.el-rate .el-rate__icon.hover{transform:scale(1.15)}.el-rate .el-rate__icon .path2{left:0;position:absolute;top:0}.el-rate .el-rate__icon.is-active{color:var(--el-rate-fill-color)}.el-rate__decimal{color:var(--el-rate-fill-color);display:inline-block;overflow:hidden}.el-rate__decimal,.el-rate__decimal--box{left:0;position:absolute;top:0}.el-rate__text{color:var(--el-rate-text-color);font-size:var(--el-rate-font-size);vertical-align:middle}.el-rate--large{height:40px}.el-rate--small{height:24px}.el-rate--small .el-rate__icon{font-size:14px}.el-rate.is-disabled .el-rate__item{color:var(--el-rate-disabled-void-color);cursor:auto}.el-result{--el-result-padding:40px 30px;--el-result-icon-font-size:64px;--el-result-title-font-size:20px;--el-result-title-margin-top:20px;--el-result-subtitle-margin-top:10px;--el-result-extra-margin-top:30px;align-items:center;box-sizing:border-box;display:flex;flex-direction:column;justify-content:center;padding:var(--el-result-padding);text-align:center}.el-result__icon svg{height:var(--el-result-icon-font-size);width:var(--el-result-icon-font-size)}.el-result__title{margin-top:var(--el-result-title-margin-top)}.el-result__title p{color:var(--el-text-color-primary);font-size:var(--el-result-title-font-size);line-height:1.3;margin:0}.el-result__subtitle{margin-top:var(--el-result-subtitle-margin-top)}.el-result__subtitle p{color:var(--el-text-color-regular);font-size:var(--el-font-size-base);line-height:1.3;margin:0}.el-result__extra{margin-top:var(--el-result-extra-margin-top)}.el-result .icon-primary{--el-result-color:var(--el-color-primary);color:var(--el-result-color)}.el-result .icon-success{--el-result-color:var(--el-color-success);color:var(--el-result-color)}.el-result .icon-warning{--el-result-color:var(--el-color-warning);color:var(--el-result-color)}.el-result .icon-danger{--el-result-color:var(--el-color-danger);color:var(--el-result-color)}.el-result .icon-error{--el-result-color:var(--el-color-error);color:var(--el-result-color)}.el-result .icon-info{--el-result-color:var(--el-color-info);color:var(--el-result-color)}.el-row{box-sizing:border-box;display:flex;flex-wrap:wrap;position:relative}.el-row.is-justify-center{justify-content:center}.el-row.is-justify-end{justify-content:flex-end}.el-row.is-justify-space-between{justify-content:space-between}.el-row.is-justify-space-around{justify-content:space-around}.el-row.is-justify-space-evenly{justify-content:space-evenly}.el-row.is-align-top{align-items:flex-start}.el-row.is-align-middle{align-items:center}.el-row.is-align-bottom{align-items:flex-end}.el-scrollbar{--el-scrollbar-opacity:.3;--el-scrollbar-bg-color:var(--el-text-color-secondary);--el-scrollbar-hover-opacity:.5;--el-scrollbar-hover-bg-color:var(--el-text-color-secondary);height:100%;overflow:hidden;position:relative}.el-scrollbar__wrap{height:100%;overflow:auto}.el-scrollbar__wrap--hidden-default{scrollbar-width:none}.el-scrollbar__wrap--hidden-default::-webkit-scrollbar{display:none}.el-scrollbar__thumb{background-color:var(--el-scrollbar-bg-color,var(--el-text-color-secondary));border-radius:inherit;cursor:pointer;display:block;height:0;opacity:var(--el-scrollbar-opacity,.3);position:relative;transition:var(--el-transition-duration) background-color;width:0}.el-scrollbar__thumb:hover{background-color:var(--el-scrollbar-hover-bg-color,var(--el-text-color-secondary));opacity:var(--el-scrollbar-hover-opacity,.5)}.el-scrollbar__bar{border-radius:4px;bottom:2px;position:absolute;right:2px;z-index:1}.el-scrollbar__bar.is-vertical{top:2px;width:6px}.el-scrollbar__bar.is-vertical>div{width:100%}.el-scrollbar__bar.is-horizontal{height:6px;left:2px}.el-scrollbar__bar.is-horizontal>div{height:100%}.el-scrollbar-fade-enter-active{transition:opacity .34s ease-out}.el-scrollbar-fade-leave-active{transition:opacity .12s ease-out}.el-scrollbar-fade-enter-from,.el-scrollbar-fade-leave-active{opacity:0}.el-select-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-select-dropdown .el-scrollbar.is-empty .el-select-dropdown__list{padding:0}.el-select-dropdown__empty,.el-select-dropdown__loading{color:var(--el-text-color-secondary);font-size:var(--el-select-font-size);margin:0;padding:10px 0;text-align:center}.el-select-dropdown__wrap{max-height:274px}.el-select-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:6px 0}.el-select-dropdown__list.el-vl__window{margin:6px 0;padding:0}.el-select-dropdown__header{border-bottom:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__footer{border-top:1px solid var(--el-border-color-light);padding:10px}.el-select-dropdown__item{box-sizing:border-box;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);height:34px;line-height:34px;overflow:hidden;padding:0 32px 0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-select-dropdown__item.is-hovering{background-color:var(--el-fill-color-light)}.el-select-dropdown__item.is-selected{color:var(--el-color-primary);font-weight:700}.el-select-dropdown__item.is-disabled{background-color:unset;color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-selected:after{background-color:var(--el-color-primary);background-position:50%;background-repeat:no-repeat;border-right:none;border-top:none;content:\"\";height:12px;mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;mask-size:100% 100%;-webkit-mask:url(\"data:image/svg+xml;utf8,%3Csvg class='icon' width='200' height='200' viewBox='0 0 1024 1024' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='currentColor' d='M406.656 706.944L195.84 496.256a32 32 0 10-45.248 45.248l256 256 512-512a32 32 0 00-45.248-45.248L406.592 706.944z'%3E%3C/path%3E%3C/svg%3E\") no-repeat;-webkit-mask-size:100% 100%;position:absolute;right:20px;top:50%;transform:translateY(-50%);width:12px}.el-select-dropdown.is-multiple .el-select-dropdown__item.is-disabled:after{background-color:var(--el-text-color-placeholder)}.el-select-group{margin:0;padding:0}.el-select-group__wrap{list-style:none;margin:0;padding:0;position:relative}.el-select-group__title{box-sizing:border-box;color:var(--el-color-info);font-size:12px;line-height:34px;overflow:hidden;padding:0 20px;text-overflow:ellipsis;white-space:nowrap}.el-select-group .el-select-dropdown__item{padding-left:20px}.el-select{--el-select-border-color-hover:var(--el-border-color-hover);--el-select-disabled-color:var(--el-disabled-text-color);--el-select-disabled-border:var(--el-disabled-border-color);--el-select-font-size:var(--el-font-size-base);--el-select-close-hover-color:var(--el-text-color-secondary);--el-select-input-color:var(--el-text-color-placeholder);--el-select-multiple-input-color:var(--el-text-color-regular);--el-select-input-focus-border-color:var(--el-color-primary);--el-select-input-font-size:14px;--el-select-width:100%;display:inline-block;position:relative;vertical-align:middle;width:var(--el-select-width)}.el-select__wrapper{align-items:center;background-color:var(--el-fill-color-blank);border-radius:var(--el-border-radius-base);box-shadow:0 0 0 1px var(--el-border-color) inset;box-sizing:border-box;cursor:pointer;display:flex;font-size:14px;gap:6px;line-height:24px;min-height:32px;padding:4px 12px;position:relative;text-align:left;transform:translateZ(0);transition:var(--el-transition-duration)}.el-select__wrapper.is-filterable{cursor:text}.el-select__wrapper.is-focused{box-shadow:0 0 0 1px var(--el-color-primary) inset}.el-select__wrapper.is-hovering:not(.is-focused){box-shadow:0 0 0 1px var(--el-border-color-hover) inset}.el-select__wrapper.is-disabled{background-color:var(--el-fill-color-light);color:var(--el-text-color-placeholder);cursor:not-allowed}.el-select__wrapper.is-disabled,.el-select__wrapper.is-disabled:hover{box-shadow:0 0 0 1px var(--el-select-disabled-border) inset}.el-select__wrapper.is-disabled.is-focus{box-shadow:0 0 0 1px var(--el-input-focus-border-color) inset}.el-select__wrapper.is-disabled .el-select__selected-item{color:var(--el-select-disabled-color)}.el-select__wrapper.is-disabled .el-select__caret,.el-select__wrapper.is-disabled .el-tag{cursor:not-allowed}.el-select__prefix,.el-select__suffix{align-items:center;color:var(--el-input-icon-color,var(--el-text-color-placeholder));display:flex;flex-shrink:0;gap:6px}.el-select__caret{color:var(--el-select-input-color);cursor:pointer;font-size:var(--el-select-input-font-size);transform:rotate(0);transition:var(--el-transition-duration)}.el-select__caret.is-reverse{transform:rotate(180deg)}.el-select__selection{align-items:center;display:flex;flex:1;flex-wrap:wrap;gap:6px;min-width:0;position:relative}.el-select__selection.is-near{margin-left:-8px}.el-select__selection .el-tag{border-color:transparent;cursor:pointer}.el-select__selection .el-tag.el-tag--plain{border-color:var(--el-tag-border-color)}.el-select__selection .el-tag .el-tag__content{min-width:0}.el-select__selected-item{display:flex;flex-wrap:wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__tags-text{line-height:normal}.el-select__placeholder,.el-select__tags-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-select__placeholder{color:var(--el-input-text-color,var(--el-text-color-regular));position:absolute;top:50%;transform:translateY(-50%);width:100%}.el-select__placeholder.is-transparent{color:var(--el-text-color-placeholder);-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-select__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-select__popper.el-popper,.el-select__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-select__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-select__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-select__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-select__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-select__input-wrapper{max-width:100%}.el-select__input-wrapper.is-hidden{opacity:0;position:absolute}.el-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:transparent;border:none;color:var(--el-select-multiple-input-color);font-family:inherit;font-size:inherit;height:24px;max-width:100%;outline:none;padding:0}.el-select__input.is-disabled{cursor:not-allowed}.el-select__input-calculator{left:0;max-width:100%;overflow:hidden;position:absolute;top:0;visibility:hidden;white-space:pre}.el-select--large .el-select__wrapper{font-size:14px;gap:6px;line-height:24px;min-height:40px;padding:8px 16px}.el-select--large .el-select__selection{gap:6px}.el-select--large .el-select__selection.is-near{margin-left:-8px}.el-select--large .el-select__prefix,.el-select--large .el-select__suffix{gap:6px}.el-select--large .el-select__input{height:24px}.el-select--small .el-select__wrapper{font-size:12px;gap:4px;line-height:20px;min-height:24px;padding:2px 8px}.el-select--small .el-select__selection{gap:4px}.el-select--small .el-select__selection.is-near{margin-left:-6px}.el-select--small .el-select__prefix,.el-select--small .el-select__suffix{gap:4px}.el-select--small .el-select__input{height:20px}.el-skeleton{--el-skeleton-circle-size:var(--el-avatar-size)}.el-skeleton__item{background:var(--el-skeleton-color);border-radius:var(--el-border-radius-base);display:inline-block;height:16px;width:100%}.el-skeleton__circle{border-radius:50%;height:var(--el-skeleton-circle-size);line-height:var(--el-skeleton-circle-size);width:var(--el-skeleton-circle-size)}.el-skeleton__button{border-radius:4px;height:40px;width:64px}.el-skeleton__p{width:100%}.el-skeleton__p.is-last{width:61%}.el-skeleton__p.is-first{width:33%}.el-skeleton__text{height:var(--el-font-size-small);width:100%}.el-skeleton__caption{height:var(--el-font-size-extra-small)}.el-skeleton__h1{height:var(--el-font-size-extra-large)}.el-skeleton__h3{height:var(--el-font-size-large)}.el-skeleton__h5{height:var(--el-font-size-medium)}.el-skeleton__image{align-items:center;border-radius:0;display:flex;justify-content:center;width:unset}.el-skeleton__image svg{color:var(--el-svg-monochrome-grey);fill:currentColor;height:22%;width:22%}.el-skeleton{--el-skeleton-color:var(--el-fill-color);--el-skeleton-to-color:var(--el-fill-color-darker)}@keyframes el-skeleton-loading{0%{background-position:100% 50%}to{background-position:0 50%}}.el-skeleton{width:100%}.el-skeleton__first-line,.el-skeleton__paragraph{background:var(--el-skeleton-color);height:16px;margin-top:16px}.el-skeleton.is-animated .el-skeleton__item{animation:el-skeleton-loading 1.4s ease infinite;background:linear-gradient(90deg,var(--el-skeleton-color) 25%,var(--el-skeleton-to-color) 37%,var(--el-skeleton-color) 63%);background-size:400% 100%}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translate(-50%);-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:\"\";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translate(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translate(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-space{display:inline-flex;vertical-align:top}.el-space__item{display:flex;flex-wrap:wrap}.el-space__item>*{flex:1}.el-space--vertical{flex-direction:column}.el-time-spinner{white-space:nowrap;width:100%}.el-spinner{display:inline-block;vertical-align:middle}.el-spinner-inner{animation:rotate 2s linear infinite;height:50px;width:50px}.el-spinner-inner .path{stroke:var(--el-border-color-lighter);stroke-linecap:round;animation:dash 1.5s ease-in-out infinite}@keyframes rotate{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.el-step{flex-shrink:1;position:relative}.el-step:last-of-type .el-step__line{display:none}.el-step:last-of-type.is-flex{flex-basis:auto!important;flex-grow:0;flex-shrink:0}.el-step:last-of-type .el-step__description,.el-step:last-of-type .el-step__main{padding-right:0}.el-step__head{position:relative;width:100%}.el-step__head.is-process{border-color:var(--el-text-color-primary);color:var(--el-text-color-primary)}.el-step__head.is-wait{border-color:var(--el-text-color-placeholder);color:var(--el-text-color-placeholder)}.el-step__head.is-success{border-color:var(--el-color-success);color:var(--el-color-success)}.el-step__head.is-error{border-color:var(--el-color-danger);color:var(--el-color-danger)}.el-step__head.is-finish{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-step__icon{align-items:center;background:var(--el-bg-color);box-sizing:border-box;display:inline-flex;font-size:14px;height:24px;justify-content:center;position:relative;transition:.15s ease-out;width:24px;z-index:1}.el-step__icon.is-text{border:2px solid;border-color:inherit;border-radius:50%}.el-step__icon.is-icon{width:40px}.el-step__icon-inner{color:inherit;display:inline-block;font-weight:700;line-height:1;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:25px;font-weight:400}.el-step__icon-inner.is-status{transform:translateY(1px)}.el-step__line{background-color:var(--el-text-color-placeholder);border-color:inherit;position:absolute}.el-step__line-inner{border:1px solid;border-color:inherit;box-sizing:border-box;display:block;height:0;transition:.15s ease-out;width:0}.el-step__main{text-align:left;white-space:normal}.el-step__title{font-size:16px;line-height:38px}.el-step__title.is-process{color:var(--el-text-color-primary);font-weight:700}.el-step__title.is-wait{color:var(--el-text-color-placeholder)}.el-step__title.is-success{color:var(--el-color-success)}.el-step__title.is-error{color:var(--el-color-danger)}.el-step__title.is-finish{color:var(--el-color-primary)}.el-step__description{font-size:12px;font-weight:400;line-height:20px;margin-top:-5px;padding-right:10%}.el-step__description.is-process{color:var(--el-text-color-primary)}.el-step__description.is-wait{color:var(--el-text-color-placeholder)}.el-step__description.is-success{color:var(--el-color-success)}.el-step__description.is-error{color:var(--el-color-danger)}.el-step__description.is-finish{color:var(--el-color-primary)}.el-step.is-horizontal{display:inline-block}.el-step.is-horizontal .el-step__line{height:2px;left:0;right:0;top:11px}.el-step.is-vertical{display:flex}.el-step.is-vertical .el-step__head{flex-grow:0;width:24px}.el-step.is-vertical .el-step__main{flex-grow:1;padding-left:10px}.el-step.is-vertical .el-step__title{line-height:24px;padding-bottom:8px}.el-step.is-vertical .el-step__line{bottom:0;left:11px;top:0;width:2px}.el-step.is-vertical .el-step__icon.is-icon{width:24px}.el-step.is-center .el-step__head,.el-step.is-center .el-step__main{text-align:center}.el-step.is-center .el-step__description{padding-left:20%;padding-right:20%}.el-step.is-center .el-step__line{left:50%;right:-50%}.el-step.is-simple{align-items:center;display:flex}.el-step.is-simple .el-step__head{font-size:0;padding-right:10px;width:auto}.el-step.is-simple .el-step__icon{background:transparent;font-size:12px;height:16px;width:16px}.el-step.is-simple .el-step__icon-inner[class*=el-icon]:not(.is-status){font-size:18px}.el-step.is-simple .el-step__icon-inner.is-status{transform:scale(.8) translateY(1px)}.el-step.is-simple .el-step__main{align-items:stretch;display:flex;flex-grow:1;position:relative}.el-step.is-simple .el-step__title{font-size:16px;line-height:20px}.el-step.is-simple:not(:last-of-type) .el-step__title{max-width:50%;overflow-wrap:break-word}.el-step.is-simple .el-step__arrow{align-items:center;display:flex;flex-grow:1;justify-content:center}.el-step.is-simple .el-step__arrow:after,.el-step.is-simple .el-step__arrow:before{background:var(--el-text-color-placeholder);content:\"\";display:inline-block;height:15px;position:absolute;width:1px}.el-step.is-simple .el-step__arrow:before{transform:rotate(-45deg) translateY(-4px);transform-origin:0 0}.el-step.is-simple .el-step__arrow:after{transform:rotate(45deg) translateY(4px);transform-origin:100% 100%}.el-step.is-simple:last-of-type .el-step__arrow{display:none}.el-steps{display:flex}.el-steps--simple{background:var(--el-fill-color-light);border-radius:4px;padding:13px 8%}.el-steps--horizontal{white-space:nowrap}.el-steps--vertical{flex-flow:column;height:100%}.el-switch{--el-switch-on-color:var(--el-color-primary);--el-switch-off-color:var(--el-border-color);align-items:center;display:inline-flex;font-size:14px;height:32px;line-height:20px;position:relative;vertical-align:middle}.el-switch.is-disabled .el-switch__core,.el-switch.is-disabled .el-switch__label{cursor:not-allowed}.el-switch__label{color:var(--el-text-color-primary);cursor:pointer;display:inline-block;font-size:14px;font-weight:500;height:20px;transition:var(--el-transition-duration-fast);vertical-align:middle}.el-switch__label.is-active{color:var(--el-color-primary)}.el-switch__label--left{margin-right:10px}.el-switch__label--right{margin-left:10px}.el-switch__label *{display:inline-block;font-size:14px;line-height:1}.el-switch__label .el-icon{height:inherit}.el-switch__label .el-icon svg{vertical-align:middle}.el-switch__input{height:0;margin:0;opacity:0;position:absolute;width:0}.el-switch__input:focus-visible~.el-switch__core{outline:2px solid var(--el-switch-on-color);outline-offset:1px}.el-switch__core{align-items:center;background:var(--el-switch-off-color);border:1px solid var(--el-switch-border-color,var(--el-switch-off-color));border-radius:10px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:20px;min-width:40px;outline:none;position:relative;transition:border-color var(--el-transition-duration),background-color var(--el-transition-duration)}.el-switch__core .el-switch__inner{align-items:center;display:flex;height:16px;justify-content:center;overflow:hidden;padding:0 4px 0 18px;transition:all var(--el-transition-duration);width:100%}.el-switch__core .el-switch__inner .is-icon,.el-switch__core .el-switch__inner .is-text{color:var(--el-color-white);font-size:12px;overflow:hidden;text-overflow:ellipsis;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap}.el-switch__core .el-switch__action{align-items:center;background-color:var(--el-color-white);border-radius:var(--el-border-radius-circle);color:var(--el-switch-off-color);display:flex;height:16px;justify-content:center;left:1px;position:absolute;transition:all var(--el-transition-duration);width:16px}.el-switch.is-checked .el-switch__core{background-color:var(--el-switch-on-color);border-color:var(--el-switch-border-color,var(--el-switch-on-color))}.el-switch.is-checked .el-switch__core .el-switch__action{color:var(--el-switch-on-color);left:calc(100% - 17px)}.el-switch.is-checked .el-switch__core .el-switch__inner{padding:0 18px 0 4px}.el-switch.is-disabled{opacity:.6}.el-switch--wide .el-switch__label.el-switch__label--left span{left:10px}.el-switch--wide .el-switch__label.el-switch__label--right span{right:10px}.el-switch .label-fade-enter-from,.el-switch .label-fade-leave-active{opacity:0}.el-switch--large{font-size:14px;height:40px;line-height:24px}.el-switch--large .el-switch__label{font-size:14px;height:24px}.el-switch--large .el-switch__label *{font-size:14px}.el-switch--large .el-switch__core{border-radius:12px;height:24px;min-width:50px}.el-switch--large .el-switch__core .el-switch__inner{height:20px;padding:0 6px 0 22px}.el-switch--large .el-switch__core .el-switch__action{height:20px;width:20px}.el-switch--large.is-checked .el-switch__core .el-switch__action{left:calc(100% - 21px)}.el-switch--large.is-checked .el-switch__core .el-switch__inner{padding:0 22px 0 6px}.el-switch--small{font-size:12px;height:24px;line-height:16px}.el-switch--small .el-switch__label{font-size:12px;height:16px}.el-switch--small .el-switch__label *{font-size:12px}.el-switch--small .el-switch__core{border-radius:8px;height:16px;min-width:30px}.el-switch--small .el-switch__core .el-switch__inner{height:12px;padding:0 2px 0 14px}.el-switch--small .el-switch__core .el-switch__action{height:12px;width:12px}.el-switch--small.is-checked .el-switch__core .el-switch__action{left:calc(100% - 13px)}.el-switch--small.is-checked .el-switch__core .el-switch__inner{padding:0 14px 0 2px}.el-table-column--selection .cell{padding-left:14px;padding-right:14px}.el-table-filter{background-color:#fff;border:1px solid var(--el-border-color-lighter);border-radius:2px;box-shadow:var(--el-box-shadow-light);box-sizing:border-box}.el-table-filter__list{list-style:none;margin:0;min-width:100px;padding:5px 0}.el-table-filter__list-item{cursor:pointer;font-size:var(--el-font-size-base);line-height:36px;padding:0 10px}.el-table-filter__list-item:hover{background-color:var(--el-color-primary-light-9);color:var(--el-color-primary)}.el-table-filter__list-item.is-active{background-color:var(--el-color-primary);color:#fff}.el-table-filter__content{min-width:100px}.el-table-filter__bottom{border-top:1px solid var(--el-border-color-lighter);padding:8px}.el-table-filter__bottom button{background:transparent;border:none;color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-small);padding:0 3px}.el-table-filter__bottom button:hover{color:var(--el-color-primary)}.el-table-filter__bottom button:focus{outline:none}.el-table-filter__bottom button.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-table-filter__wrap{max-height:280px}.el-table-filter__checkbox-group{padding:10px}.el-table-filter__checkbox-group label.el-checkbox{align-items:center;display:flex;height:unset;margin-bottom:12px;margin-left:5px;margin-right:5px}.el-table-filter__checkbox-group .el-checkbox:last-child{margin-bottom:0}.el-table{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);background-color:var(--el-table-bg-color);box-sizing:border-box;color:var(--el-table-text-color);font-size:var(--el-font-size-base);height:-moz-fit-content;height:fit-content;max-width:100%;overflow:hidden;position:relative;width:100%}.el-table__inner-wrapper{display:flex;flex-direction:column;height:100%;position:relative}.el-table__inner-wrapper:before{bottom:0;height:1px;left:0}.el-table tbody:focus-visible{outline:none}.el-table.has-footer.el-table--fluid-height tr:last-child td.el-table__cell,.el-table.has-footer.el-table--scrollable-y tr:last-child td.el-table__cell{border-bottom-color:transparent}.el-table__empty-block{align-items:center;display:flex;justify-content:center;left:0;min-height:60px;position:sticky;text-align:center;width:100%}.el-table__empty-text{color:var(--el-text-color-secondary);line-height:60px;width:50%}.el-table__expand-column .cell{padding:0;text-align:center;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table__expand-icon{color:var(--el-text-color-regular);cursor:pointer;font-size:12px;height:20px;position:relative;transition:transform var(--el-transition-duration-fast) ease-in-out}.el-table__expand-icon--expanded{transform:rotate(90deg)}.el-table__expand-icon>.el-icon{font-size:12px}.el-table__expanded-cell{background-color:var(--el-table-expanded-cell-bg-color)}.el-table__expanded-cell[class*=cell]{padding:20px 50px}.el-table__expanded-cell:hover{background-color:transparent!important}.el-table__placeholder{display:inline-block;width:20px}.el-table__append-wrapper{overflow:hidden}.el-table--fit{border-bottom:0;border-right:0}.el-table--fit .el-table__cell.gutter{border-right-width:1px}.el-table--fit .el-table__inner-wrapper:before{width:100%}.el-table thead{color:var(--el-table-header-text-color)}.el-table thead th{font-weight:600}.el-table thead.is-group th.el-table__cell{background:var(--el-fill-color-light)}.el-table .el-table__cell{box-sizing:border-box;min-width:0;padding:8px 0;position:relative;text-align:left;text-overflow:ellipsis;vertical-align:middle;z-index:var(--el-table-index)}.el-table .el-table__cell.is-center{text-align:center}.el-table .el-table__cell.is-right{text-align:right}.el-table .el-table__cell.gutter{border-bottom-width:0;border-right-width:0;padding:0;width:15px}.el-table .el-table__cell.is-hidden>*{visibility:hidden}.el-table .cell{box-sizing:border-box;line-height:23px;overflow:hidden;overflow-wrap:break-word;padding:0 12px;text-overflow:ellipsis;white-space:normal}.el-table .cell.el-tooltip{min-width:50px;white-space:nowrap}.el-table--large{font-size:var(--el-font-size-base)}.el-table--large .el-table__cell{padding:12px 0}.el-table--large .cell{padding:0 16px}.el-table--default{font-size:var(--el-font-size-base)}.el-table--default .el-table__cell{padding:8px 0}.el-table--default .cell{padding:0 12px}.el-table--small{font-size:var(--el-font-size-extra-small)}.el-table--small .el-table__cell{padding:4px 0}.el-table--small .cell{padding:0 8px}.el-table tr{background-color:var(--el-table-tr-bg-color)}.el-table tr input[type=checkbox]{margin:0}.el-table td.el-table__cell,.el-table th.el-table__cell.is-leaf{border-bottom:var(--el-table-border)}.el-table th.el-table__cell.is-sortable{cursor:pointer}.el-table th.el-table__cell{background-color:var(--el-table-header-bg-color)}.el-table th.el-table__cell>.cell.highlight{color:var(--el-color-primary)}.el-table th.el-table__cell.required>div:before{background:#ff4d51;border-radius:50%;content:\"\";display:inline-block;height:8px;margin-right:5px;vertical-align:middle;width:8px}.el-table td.el-table__cell div{box-sizing:border-box}.el-table td.el-table__cell.gutter{width:0}.el-table--border .el-table__inner-wrapper:after,.el-table--border:after,.el-table--border:before,.el-table__inner-wrapper:before{background-color:var(--el-table-border-color);content:\"\";position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table--border .el-table__inner-wrapper:after{height:1px;left:0;top:0;width:100%;z-index:calc(var(--el-table-index) + 2)}.el-table--border:before{height:100%;left:0;top:-1px;width:1px}.el-table--border:after{height:100%;right:0;top:-1px;width:1px}.el-table--border .el-table__inner-wrapper{border-bottom:none;border-right:none}.el-table--border .el-table__footer-wrapper{flex-shrink:0;position:relative}.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table--border th.el-table__cell.gutter:last-of-type{border-bottom:var(--el-table-border);border-bottom-width:1px}.el-table--border th.el-table__cell{border-bottom:var(--el-table-border)}.el-table--hidden{visibility:hidden}.el-table__body-wrapper,.el-table__footer-wrapper,.el-table__header-wrapper{width:100%}.el-table__body-wrapper tr td.el-table-fixed-column--left,.el-table__body-wrapper tr td.el-table-fixed-column--right,.el-table__body-wrapper tr th.el-table-fixed-column--left,.el-table__body-wrapper tr th.el-table-fixed-column--right,.el-table__footer-wrapper tr td.el-table-fixed-column--left,.el-table__footer-wrapper tr td.el-table-fixed-column--right,.el-table__footer-wrapper tr th.el-table-fixed-column--left,.el-table__footer-wrapper tr th.el-table-fixed-column--right,.el-table__header-wrapper tr td.el-table-fixed-column--left,.el-table__header-wrapper tr td.el-table-fixed-column--right,.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background:inherit;position:sticky!important;z-index:calc(var(--el-table-index) + 1)}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{bottom:-1px;box-shadow:none;content:\"\";overflow-x:hidden;overflow-y:hidden;pointer-events:none;position:absolute;top:0;touch-action:none;width:10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-first-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-first-column:before{left:-10px}.el-table__body-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__body-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__footer-wrapper tr th.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr td.el-table-fixed-column--right.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--left.is-last-column:before,.el-table__header-wrapper tr th.el-table-fixed-column--right.is-last-column:before{box-shadow:none;right:-10px}.el-table__body-wrapper tr td.el-table__fixed-right-patch,.el-table__body-wrapper tr th.el-table__fixed-right-patch,.el-table__footer-wrapper tr td.el-table__fixed-right-patch,.el-table__footer-wrapper tr th.el-table__fixed-right-patch,.el-table__header-wrapper tr td.el-table__fixed-right-patch,.el-table__header-wrapper tr th.el-table__fixed-right-patch{background:#fff;position:sticky!important;right:0;z-index:calc(var(--el-table-index) + 1)}.el-table__header-wrapper{flex-shrink:0}.el-table__header-wrapper tr th.el-table-fixed-column--left,.el-table__header-wrapper tr th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body,.el-table__footer,.el-table__header{border-collapse:separate;table-layout:fixed}.el-table__header-wrapper{overflow:hidden}.el-table__header-wrapper tbody td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__footer-wrapper{flex-shrink:0;overflow:hidden}.el-table__footer-wrapper tfoot td.el-table__cell{background-color:var(--el-table-row-hover-bg-color);color:var(--el-table-text-color)}.el-table__body-wrapper .el-table-column--selection>.cell,.el-table__header-wrapper .el-table-column--selection>.cell{align-items:center;display:inline-flex;height:23px}.el-table__body-wrapper .el-table-column--selection .el-checkbox,.el-table__header-wrapper .el-table-column--selection .el-checkbox{height:unset}.el-table.is-scrolling-left .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-left.el-table--border .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:var(--el-table-border)}.el-table.is-scrolling-left th.el-table-fixed-column--left{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-right th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell{border-right:none}.el-table.is-scrolling-middle .el-table-fixed-column--right.is-first-column:before{box-shadow:var(--el-table-fixed-right-column)}.el-table.is-scrolling-middle .el-table-fixed-column--left.is-last-column:before{box-shadow:var(--el-table-fixed-left-column)}.el-table.is-scrolling-none .el-table-fixed-column--left.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--left.is-last-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-first-column:before,.el-table.is-scrolling-none .el-table-fixed-column--right.is-last-column:before{box-shadow:none}.el-table.is-scrolling-none th.el-table-fixed-column--left,.el-table.is-scrolling-none th.el-table-fixed-column--right{background-color:var(--el-table-header-bg-color)}.el-table__body-wrapper{flex:1;overflow:hidden;position:relative}.el-table__body-wrapper .el-scrollbar__bar{z-index:calc(var(--el-table-index) + 2)}.el-table .caret-wrapper{align-items:center;cursor:pointer;display:inline-flex;flex-direction:column;height:14px;overflow:initial;position:relative;vertical-align:middle;width:24px}.el-table .sort-caret{border:5px solid transparent;height:0;left:7px;position:absolute;width:0}.el-table .sort-caret.ascending{border-bottom-color:var(--el-text-color-placeholder);top:-5px}.el-table .sort-caret.descending{border-top-color:var(--el-text-color-placeholder);bottom:-3px}.el-table .ascending .sort-caret.ascending{border-bottom-color:var(--el-color-primary)}.el-table .descending .sort-caret.descending{border-top-color:var(--el-color-primary)}.el-table .hidden-columns{position:absolute;visibility:hidden;z-index:-1}.el-table--striped .el-table__body tr.el-table__row--striped td.el-table__cell{background:var(--el-fill-color-lighter)}.el-table--striped .el-table__body tr.el-table__row--striped.current-row td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table__body tr.hover-row.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped.current-row>td.el-table__cell,.el-table__body tr.hover-row.el-table__row--striped>td.el-table__cell,.el-table__body tr.hover-row>td.el-table__cell,.el-table__body tr>td.hover-cell{background-color:var(--el-table-row-hover-bg-color)}.el-table__body tr.current-row>td.el-table__cell{background-color:var(--el-table-current-row-bg-color)}.el-table.el-table--scrollable-y .el-table__body-header{position:sticky;top:0;z-index:calc(var(--el-table-index) + 2)}.el-table.el-table--scrollable-y .el-table__body-footer{bottom:0;position:sticky;z-index:calc(var(--el-table-index) + 2)}.el-table__column-resize-proxy{border-left:var(--el-table-border);bottom:0;left:200px;position:absolute;top:0;width:0;z-index:calc(var(--el-table-index) + 9)}.el-table__column-filter-trigger{cursor:pointer;display:inline-block}.el-table__column-filter-trigger i{color:var(--el-color-info);font-size:14px;vertical-align:middle}.el-table__border-left-patch{height:100%;top:0;width:1px}.el-table__border-bottom-patch,.el-table__border-left-patch{background-color:var(--el-table-border-color);left:0;position:absolute;z-index:calc(var(--el-table-index) + 2)}.el-table__border-bottom-patch{height:1px}.el-table__border-right-patch{background-color:var(--el-table-border-color);height:100%;position:absolute;top:0;width:1px;z-index:calc(var(--el-table-index) + 2)}.el-table--enable-row-transition .el-table__body td.el-table__cell{transition:background-color .25s ease}.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell{background-color:var(--el-table-row-hover-bg-color)}.el-table [class*=el-table__row--level] .el-table__expand-icon{display:inline-block;height:12px;line-height:12px;margin-right:8px;text-align:center;width:12px}.el-table .el-table.el-table--border .el-table__cell{border-right:var(--el-table-border)}.el-table:not(.el-table--border) .el-table__cell{border-right:none}.el-table:not(.el-table--border)>.el-table__inner-wrapper:after{content:none}.el-table-v2{--el-table-border-color:var(--el-border-color-lighter);--el-table-border:1px solid var(--el-table-border-color);--el-table-text-color:var(--el-text-color-regular);--el-table-header-text-color:var(--el-text-color-secondary);--el-table-row-hover-bg-color:var(--el-fill-color-light);--el-table-current-row-bg-color:var(--el-color-primary-light-9);--el-table-header-bg-color:var(--el-bg-color);--el-table-fixed-box-shadow:var(--el-box-shadow-light);--el-table-bg-color:var(--el-fill-color-blank);--el-table-tr-bg-color:var(--el-bg-color);--el-table-expanded-cell-bg-color:var(--el-fill-color-blank);--el-table-fixed-left-column:inset 10px 0 10px -10px rgba(0,0,0,.15);--el-table-fixed-right-column:inset -10px 0 10px -10px rgba(0,0,0,.15);--el-table-index:var(--el-index-normal);font-size:var(--el-font-size-base)}.el-table-v2 *{box-sizing:border-box}.el-table-v2__root{position:relative}.el-table-v2__root:hover .el-table-v2__main .el-virtual-scrollbar{opacity:1}.el-table-v2__main{background-color:var(--el-bg-color);display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__main .el-vl__horizontal,.el-table-v2__main .el-vl__vertical{z-index:2}.el-table-v2__left{background-color:var(--el-bg-color);box-shadow:2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;left:0;overflow:hidden;position:absolute;top:0}.el-table-v2__left .el-virtual-scrollbar{opacity:0}.el-table-v2__left .el-vl__horizontal,.el-table-v2__left .el-vl__vertical{z-index:-1}.el-table-v2__right{background-color:var(--el-bg-color);box-shadow:-2px 0 4px #0000000f;display:flex;flex-direction:column-reverse;overflow:hidden;position:absolute;right:0;top:0}.el-table-v2__right .el-virtual-scrollbar{opacity:0}.el-table-v2__right .el-vl__horizontal,.el-table-v2__right .el-vl__vertical{z-index:-1}.el-table-v2__header-row,.el-table-v2__row{padding-inline-end:var(--el-table-scrollbar-size)}.el-table-v2__header-wrapper{overflow:hidden}.el-table-v2__header{overflow:hidden;position:relative}.el-table-v2__header .el-checkbox{z-index:0}.el-table-v2__footer{bottom:0;overflow:hidden;right:0}.el-table-v2__empty,.el-table-v2__footer,.el-table-v2__overlay{left:0;position:absolute}.el-table-v2__overlay{bottom:0;right:0;top:0;z-index:9999}.el-table-v2__header-row{border-bottom:var(--el-table-border);display:flex}.el-table-v2__header-cell{align-items:center;background-color:var(--el-table-header-bg-color);color:var(--el-table-header-text-color);display:flex;font-weight:700;height:100%;overflow:hidden;padding:0 8px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__header-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__header-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__header-cell.is-sortable{cursor:pointer}.el-table-v2__header-cell:hover .el-icon{display:block}.el-table-v2__sort-icon{display:none;opacity:.6;transition:opacity,display var(--el-transition-duration)}.el-table-v2__sort-icon.is-sorting{display:block;opacity:1}.el-table-v2__row{align-items:center;border-bottom:var(--el-table-border);display:flex;transition:background-color var(--el-transition-duration)}.el-table-v2__row.is-hovered,.el-table-v2__row:hover{background-color:var(--el-table-row-hover-bg-color)}.el-table-v2__row-cell{align-items:center;display:flex;height:100%;overflow:hidden;padding:0 8px}.el-table-v2__row-cell.is-align-center{justify-content:center;text-align:center}.el-table-v2__row-cell.is-align-right{justify-content:flex-end;text-align:right}.el-table-v2__expand-icon{cursor:pointer;margin:0 4px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.el-table-v2__expand-icon svg{transition:transform var(--el-transition-duration)}.el-table-v2__expand-icon.is-expanded svg{transform:rotate(90deg)}.el-table-v2:not(.is-dynamic) .el-table-v2__cell-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-table-v2.is-dynamic .el-table-v2__row{align-items:stretch;overflow:hidden}.el-table-v2.is-dynamic .el-table-v2__row .el-table-v2__row-cell{overflow-wrap:break-word}.el-tabs{--el-tabs-header-height:40px;display:flex}.el-tabs__header{align-items:center;display:flex;justify-content:space-between;margin:0 0 15px;padding:0;position:relative}.el-tabs__header-vertical{flex-direction:column}.el-tabs__active-bar{background-color:var(--el-color-primary);bottom:0;height:2px;left:0;list-style:none;position:absolute;transition:width var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),transform var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier);z-index:1}.el-tabs__new-tab{align-items:center;border:1px solid var(--el-border-color);border-radius:3px;color:var(--el-text-color-primary);cursor:pointer;display:flex;font-size:12px;height:20px;justify-content:center;line-height:20px;margin:10px 0 10px 10px;text-align:center;transition:all .15s;width:20px}.el-tabs__new-tab .is-icon-plus{height:inherit;transform:scale(.8);width:inherit}.el-tabs__new-tab .is-icon-plus svg{vertical-align:middle}.el-tabs__new-tab:hover{color:var(--el-color-primary)}.el-tabs__new-tab-vertical{margin-left:0}.el-tabs__nav-wrap{flex:1 auto;margin-bottom:-1px;overflow:hidden;position:relative}.el-tabs__nav-wrap:after{background-color:var(--el-border-color-light);bottom:0;content:\"\";height:2px;left:0;position:absolute;width:100%;z-index:var(--el-index-normal)}.el-tabs__nav-wrap.is-scrollable{box-sizing:border-box;padding:0 20px}.el-tabs__nav-scroll{overflow:hidden}.el-tabs__nav-next,.el-tabs__nav-prev{color:var(--el-text-color-secondary);cursor:pointer;font-size:12px;line-height:44px;position:absolute;text-align:center;width:20px}.el-tabs__nav-next{right:0}.el-tabs__nav-prev{left:0}.el-tabs__nav{display:flex;float:left;position:relative;transition:transform var(--el-transition-duration);white-space:nowrap;z-index:calc(var(--el-index-normal) + 1)}.el-tabs__nav.is-stretch{display:flex;min-width:100%}.el-tabs__nav.is-stretch>*{flex:1;text-align:center}.el-tabs__item{align-items:center;box-sizing:border-box;color:var(--el-text-color-primary);display:flex;font-size:var(--el-font-size-base);font-weight:500;height:var(--el-tabs-header-height);justify-content:center;list-style:none;padding:0 20px;position:relative}.el-tabs__item:focus,.el-tabs__item:focus:active{outline:none}.el-tabs__item:focus-visible{border-radius:3px;box-shadow:0 0 2px 2px var(--el-color-primary) inset}.el-tabs__item .is-icon-close{border-radius:50%;margin-left:5px;text-align:center;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs__item .is-icon-close:before{display:inline-block;transform:scale(.9)}.el-tabs__item .is-icon-close:hover{background-color:var(--el-text-color-placeholder);color:#fff}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--el-color-primary)}.el-tabs__item:hover{cursor:pointer}.el-tabs__item.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-tabs__content{flex-grow:1;overflow:hidden;position:relative}.el-tabs--bottom>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:0}.el-tabs--bottom>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top>.el-tabs__header .el-tabs__item:last-child{padding-right:0}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:nth-child(2),.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:nth-child(2){padding-left:20px}.el-tabs--bottom.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--bottom.el-tabs--card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--border-card>.el-tabs__header .el-tabs__item:last-child,.el-tabs--top.el-tabs--card>.el-tabs__header .el-tabs__item:last-child{padding-right:20px}.el-tabs--card>.el-tabs__header{border-bottom:1px solid var(--el-border-color-light);height:var(--el-tabs-header-height)}.el-tabs--card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--card>.el-tabs__header .el-tabs__nav{border:1px solid var(--el-border-color-light);border-bottom:none;border-radius:4px 4px 0 0;box-sizing:border-box}.el-tabs--card>.el-tabs__header .el-tabs__active-bar{display:none}.el-tabs--card>.el-tabs__header .el-tabs__item .is-icon-close{font-size:12px;height:14px;overflow:hidden;position:relative;right:-2px;transform-origin:100% 50%;width:0}.el-tabs--card>.el-tabs__header .el-tabs__item{border-bottom:1px solid transparent;border-left:1px solid var(--el-border-color-light);transition:color var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier),padding var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--card>.el-tabs__header .el-tabs__item:first-child{border-left:none}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover{padding-left:13px;padding-right:13px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-closable:hover .is-icon-close{width:14px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active{border-bottom-color:var(--el-bg-color)}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable{padding-left:20px;padding-right:20px}.el-tabs--card>.el-tabs__header .el-tabs__item.is-active.is-closable .is-icon-close{width:14px}.el-tabs--border-card{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color)}.el-tabs--border-card>.el-tabs__content{padding:15px}.el-tabs--border-card>.el-tabs__header{background-color:var(--el-fill-color-light);border-bottom:1px solid var(--el-border-color-light);margin:0}.el-tabs--border-card>.el-tabs__header .el-tabs__nav-wrap:after{content:none}.el-tabs--border-card>.el-tabs__header .el-tabs__item{border:1px solid transparent;color:var(--el-text-color-secondary);margin-top:-1px;transition:all var(--el-transition-duration) var(--el-transition-function-ease-in-out-bezier)}.el-tabs--border-card>.el-tabs__header .el-tabs__item+.el-tabs__item,.el-tabs--border-card>.el-tabs__header .el-tabs__item:first-child{margin-left:-1px}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active{background-color:var(--el-bg-color-overlay);border-left-color:var(--el-border-color);border-right-color:var(--el-border-color);color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item:not(.is-disabled):hover{color:var(--el-color-primary)}.el-tabs--border-card>.el-tabs__header .el-tabs__item.is-disabled{color:var(--el-disabled-text-color)}.el-tabs--border-card>.el-tabs__header .is-scrollable .el-tabs__item:first-child{margin-left:0}.el-tabs--bottom{flex-direction:column}.el-tabs--bottom .el-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.el-tabs--bottom.el-tabs--border-card .el-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--el-border-color)}.el-tabs--bottom.el-tabs--border-card .el-tabs__nav-wrap.is-bottom{margin-bottom:0;margin-top:-1px}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.el-tabs--bottom.el-tabs--border-card .el-tabs__item.is-bottom{margin:0 -1px -1px}.el-tabs--left,.el-tabs--right{overflow:hidden}.el-tabs--left .el-tabs__header.is-left,.el-tabs--left .el-tabs__header.is-right,.el-tabs--left .el-tabs__nav-scroll,.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__header.is-left,.el-tabs--right .el-tabs__header.is-right,.el-tabs--right .el-tabs__nav-scroll,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{height:100%}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__active-bar.is-right,.el-tabs--right .el-tabs__active-bar.is-left,.el-tabs--right .el-tabs__active-bar.is-right{bottom:auto;height:auto;top:0;width:2px}.el-tabs--left .el-tabs__nav-wrap.is-left,.el-tabs--left .el-tabs__nav-wrap.is-right,.el-tabs--right .el-tabs__nav-wrap.is-left,.el-tabs--right .el-tabs__nav-wrap.is-right{margin-bottom:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{cursor:pointer;height:30px;line-height:30px;text-align:center;width:100%}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next i,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev i{transform:rotate(90deg)}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-prev,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-prev{left:auto;top:0}.el-tabs--left .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--left .el-tabs__nav-wrap.is-right>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-left>.el-tabs__nav-next,.el-tabs--right .el-tabs__nav-wrap.is-right>.el-tabs__nav-next{bottom:0;right:auto}.el-tabs--left .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--left .el-tabs__nav-wrap.is-right.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-left.is-scrollable,.el-tabs--right .el-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.el-tabs--left .el-tabs__nav-wrap.is-left:after,.el-tabs--left .el-tabs__nav-wrap.is-right:after,.el-tabs--right .el-tabs__nav-wrap.is-left:after,.el-tabs--right .el-tabs__nav-wrap.is-right:after{bottom:auto;height:100%;top:0;width:2px}.el-tabs--left .el-tabs__nav.is-left,.el-tabs--left .el-tabs__nav.is-right,.el-tabs--right .el-tabs__nav.is-left,.el-tabs--right .el-tabs__nav.is-right{flex-direction:column}.el-tabs--left .el-tabs__item.is-left,.el-tabs--right .el-tabs__item.is-left{justify-content:flex-end}.el-tabs--left .el-tabs__item.is-right,.el-tabs--right .el-tabs__item.is-right{justify-content:flex-start}.el-tabs--left{flex-direction:row-reverse}.el-tabs--left .el-tabs__header.is-left{margin-bottom:0;margin-right:10px}.el-tabs--left .el-tabs__nav-wrap.is-left{margin-right:-1px}.el-tabs--left .el-tabs__active-bar.is-left,.el-tabs--left .el-tabs__nav-wrap.is-left:after{left:auto;right:0}.el-tabs--left .el-tabs__item.is-left{text-align:right}.el-tabs--left.el-tabs--card .el-tabs__active-bar.is-left{display:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left{border-bottom:none;border-left:none;border-right:1px solid var(--el-border-color-light);border-top:1px solid var(--el-border-color-light);text-align:left}.el-tabs--left.el-tabs--card .el-tabs__item.is-left:first-child{border-right:1px solid var(--el-border-color-light);border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:none;border-right:1px solid #fff}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:first-child{border-top:none}.el-tabs--left.el-tabs--card .el-tabs__item.is-left.is-active:last-child{border-bottom:none}.el-tabs--left.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-radius:4px 0 0 4px;border-right:none}.el-tabs--left.el-tabs--card .el-tabs__new-tab{float:none}.el-tabs--left.el-tabs--border-card .el-tabs__header.is-left{border-right:1px solid var(--el-border-color)}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.el-tabs--left.el-tabs--border-card .el-tabs__item.is-left.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--right .el-tabs__header.is-right{margin-bottom:0;margin-left:10px}.el-tabs--right .el-tabs__nav-wrap.is-right{margin-left:-1px}.el-tabs--right .el-tabs__nav-wrap.is-right:after{left:0;right:auto}.el-tabs--right .el-tabs__active-bar.is-right{left:0}.el-tabs--right.el-tabs--card .el-tabs__active-bar.is-right{display:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--el-border-color-light)}.el-tabs--right.el-tabs--card .el-tabs__item.is-right:first-child{border-left:1px solid var(--el-border-color-light);border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active{border:1px solid var(--el-border-color-light);border-bottom:none;border-left:1px solid #fff;border-right:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:first-child{border-top:none}.el-tabs--right.el-tabs--card .el-tabs__item.is-right.is-active:last-child{border-bottom:none}.el-tabs--right.el-tabs--card .el-tabs__nav{border-bottom:1px solid var(--el-border-color-light);border-left:none;border-radius:0 4px 4px 0}.el-tabs--right.el-tabs--border-card .el-tabs__header.is-right{border-left:1px solid var(--el-border-color)}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.el-tabs--right.el-tabs--border-card .el-tabs__item.is-right.is-active{border-color:rgb(209,219,229) transparent}.el-tabs--top{flex-direction:column-reverse}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--el-transition-duration)}.slideInRight-leave{animation:slideInRight-leave var(--el-transition-duration);left:0;position:absolute;right:0}.slideInLeft-enter{animation:slideInLeft-enter var(--el-transition-duration)}.slideInLeft-leave{animation:slideInLeft-leave var(--el-transition-duration);left:0;position:absolute;right:0}@keyframes slideInRight-enter{0%{opacity:0;transform:translate(100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInRight-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(100%);transform-origin:0 0}}@keyframes slideInLeft-enter{0%{opacity:0;transform:translate(-100%);transform-origin:0 0}to{opacity:1;transform:translate(0);transform-origin:0 0}}@keyframes slideInLeft-leave{0%{opacity:1;transform:translate(0);transform-origin:0 0}to{opacity:0;transform:translate(-100%);transform-origin:0 0}}.el-tag{--el-tag-font-size:12px;--el-tag-border-radius:4px;--el-tag-border-radius-rounded:9999px;align-items:center;background-color:var(--el-tag-bg-color);border-color:var(--el-tag-border-color);border-radius:var(--el-tag-border-radius);border-style:solid;border-width:1px;box-sizing:border-box;color:var(--el-tag-text-color);display:inline-flex;font-size:var(--el-tag-font-size);height:24px;justify-content:center;line-height:1;padding:0 9px;vertical-align:middle;white-space:nowrap;--el-icon-size:14px}.el-tag,.el-tag.el-tag--primary{--el-tag-bg-color:var(--el-color-primary-light-9);--el-tag-border-color:var(--el-color-primary-light-8);--el-tag-hover-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-bg-color:var(--el-color-success-light-9);--el-tag-border-color:var(--el-color-success-light-8);--el-tag-hover-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-bg-color:var(--el-color-warning-light-9);--el-tag-border-color:var(--el-color-warning-light-8);--el-tag-hover-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-bg-color:var(--el-color-danger-light-9);--el-tag-border-color:var(--el-color-danger-light-8);--el-tag-hover-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-bg-color:var(--el-color-error-light-9);--el-tag-border-color:var(--el-color-error-light-8);--el-tag-hover-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-bg-color:var(--el-color-info-light-9);--el-tag-border-color:var(--el-color-info-light-8);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-hit{border-color:var(--el-color-primary)}.el-tag.is-round{border-radius:var(--el-tag-border-radius-rounded)}.el-tag .el-tag__close{color:var(--el-tag-text-color);flex-shrink:0}.el-tag .el-tag__close:hover{background-color:var(--el-tag-hover-color);color:var(--el-color-white)}.el-tag.el-tag--primary{--el-tag-text-color:var(--el-color-primary)}.el-tag.el-tag--success{--el-tag-text-color:var(--el-color-success)}.el-tag.el-tag--warning{--el-tag-text-color:var(--el-color-warning)}.el-tag.el-tag--danger{--el-tag-text-color:var(--el-color-danger)}.el-tag.el-tag--error{--el-tag-text-color:var(--el-color-error)}.el-tag.el-tag--info{--el-tag-text-color:var(--el-color-info)}.el-tag .el-icon{border-radius:50%;cursor:pointer;font-size:calc(var(--el-icon-size) - 2px);height:var(--el-icon-size);width:var(--el-icon-size)}.el-tag .el-tag__close{margin-left:6px}.el-tag--dark{--el-tag-text-color:var(--el-color-white)}.el-tag--dark,.el-tag--dark.el-tag--primary{--el-tag-bg-color:var(--el-color-primary);--el-tag-border-color:var(--el-color-primary);--el-tag-hover-color:var(--el-color-primary-light-3)}.el-tag--dark.el-tag--success{--el-tag-bg-color:var(--el-color-success);--el-tag-border-color:var(--el-color-success);--el-tag-hover-color:var(--el-color-success-light-3)}.el-tag--dark.el-tag--warning{--el-tag-bg-color:var(--el-color-warning);--el-tag-border-color:var(--el-color-warning);--el-tag-hover-color:var(--el-color-warning-light-3)}.el-tag--dark.el-tag--danger{--el-tag-bg-color:var(--el-color-danger);--el-tag-border-color:var(--el-color-danger);--el-tag-hover-color:var(--el-color-danger-light-3)}.el-tag--dark.el-tag--error{--el-tag-bg-color:var(--el-color-error);--el-tag-border-color:var(--el-color-error);--el-tag-hover-color:var(--el-color-error-light-3)}.el-tag--dark.el-tag--info{--el-tag-bg-color:var(--el-color-info);--el-tag-border-color:var(--el-color-info);--el-tag-hover-color:var(--el-color-info-light-3)}.el-tag--dark.el-tag--danger,.el-tag--dark.el-tag--error,.el-tag--dark.el-tag--info,.el-tag--dark.el-tag--primary,.el-tag--dark.el-tag--success,.el-tag--dark.el-tag--warning{--el-tag-text-color:var(--el-color-white)}.el-tag--plain,.el-tag--plain.el-tag--primary{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-primary-light-5);--el-tag-hover-color:var(--el-color-primary)}.el-tag--plain.el-tag--success{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-success-light-5);--el-tag-hover-color:var(--el-color-success)}.el-tag--plain.el-tag--warning{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-warning-light-5);--el-tag-hover-color:var(--el-color-warning)}.el-tag--plain.el-tag--danger{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-danger-light-5);--el-tag-hover-color:var(--el-color-danger)}.el-tag--plain.el-tag--error{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-error-light-5);--el-tag-hover-color:var(--el-color-error)}.el-tag--plain.el-tag--info{--el-tag-bg-color:var(--el-fill-color-blank);--el-tag-border-color:var(--el-color-info-light-5);--el-tag-hover-color:var(--el-color-info)}.el-tag.is-closable{padding-right:5px}.el-tag--large{height:32px;padding:0 11px;--el-icon-size:16px}.el-tag--large .el-tag__close{margin-left:8px}.el-tag--large.is-closable{padding-right:7px}.el-tag--small{height:20px;padding:0 7px;--el-icon-size:12px}.el-tag--small .el-tag__close{margin-left:4px}.el-tag--small.is-closable{padding-right:3px}.el-tag--small .el-icon-close{transform:scale(.8)}.el-tag.el-tag--primary.is-hit{border-color:var(--el-color-primary)}.el-tag.el-tag--success.is-hit{border-color:var(--el-color-success)}.el-tag.el-tag--warning.is-hit{border-color:var(--el-color-warning)}.el-tag.el-tag--danger.is-hit{border-color:var(--el-color-danger)}.el-tag.el-tag--error.is-hit{border-color:var(--el-color-error)}.el-tag.el-tag--info.is-hit{border-color:var(--el-color-info)}.el-text{--el-text-font-size:var(--el-font-size-base);--el-text-color:var(--el-text-color-regular);align-self:center;color:var(--el-text-color);font-size:var(--el-text-font-size);margin:0;overflow-wrap:break-word;padding:0}.el-text.is-truncated{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-text.is-line-clamp{display:-webkit-inline-box;-webkit-box-orient:vertical;overflow:hidden}.el-text--large{--el-text-font-size:var(--el-font-size-medium)}.el-text--default{--el-text-font-size:var(--el-font-size-base)}.el-text--small{--el-text-font-size:var(--el-font-size-extra-small)}.el-text.el-text--primary{--el-text-color:var(--el-color-primary)}.el-text.el-text--success{--el-text-color:var(--el-color-success)}.el-text.el-text--warning{--el-text-color:var(--el-color-warning)}.el-text.el-text--danger{--el-text-color:var(--el-color-danger)}.el-text.el-text--error{--el-text-color:var(--el-color-error)}.el-text.el-text--info{--el-text-color:var(--el-color-info)}.el-text>.el-icon{vertical-align:-2px}.time-select{margin:5px 0;min-width:0}.time-select .el-picker-panel__content{margin:0;max-height:200px}.time-select-item{font-size:14px;line-height:20px;padding:8px 10px}.time-select-item.disabled{color:var(--el-datepicker-border-color);cursor:not-allowed}.time-select-item:hover{background-color:var(--el-fill-color-light);cursor:pointer;font-weight:700}.time-select .time-select-item.selected:not(.disabled){color:var(--el-color-primary);font-weight:700}.el-timeline-item{padding-bottom:20px;position:relative}.el-timeline-item__wrapper{padding-left:28px;position:relative;top:-3px}.el-timeline-item__tail{border-left:2px solid var(--el-timeline-node-color);height:100%;left:4px;position:absolute}.el-timeline-item .el-timeline-item__icon{color:var(--el-color-white);font-size:var(--el-font-size-small)}.el-timeline-item__node{align-items:center;background-color:var(--el-timeline-node-color);border-color:var(--el-timeline-node-color);border-radius:50%;box-sizing:border-box;display:flex;justify-content:center;position:absolute}.el-timeline-item__node--normal{height:var(--el-timeline-node-size-normal);left:-1px;width:var(--el-timeline-node-size-normal)}.el-timeline-item__node--large{height:var(--el-timeline-node-size-large);left:-2px;width:var(--el-timeline-node-size-large)}.el-timeline-item__node.is-hollow{background:var(--el-color-white);border-style:solid;border-width:2px}.el-timeline-item__node--primary{background-color:var(--el-color-primary);border-color:var(--el-color-primary)}.el-timeline-item__node--success{background-color:var(--el-color-success);border-color:var(--el-color-success)}.el-timeline-item__node--warning{background-color:var(--el-color-warning);border-color:var(--el-color-warning)}.el-timeline-item__node--danger{background-color:var(--el-color-danger);border-color:var(--el-color-danger)}.el-timeline-item__node--info{background-color:var(--el-color-info);border-color:var(--el-color-info)}.el-timeline-item__dot{align-items:center;display:flex;justify-content:center;position:absolute}.el-timeline-item__content{color:var(--el-text-color-primary)}.el-timeline-item__timestamp{color:var(--el-text-color-secondary);font-size:var(--el-font-size-small);line-height:1}.el-timeline-item__timestamp.is-top{margin-bottom:8px;padding-top:4px}.el-timeline-item__timestamp.is-bottom{margin-top:8px}.el-timeline{--el-timeline-node-size-normal:12px;--el-timeline-node-size-large:14px;--el-timeline-node-color:var(--el-border-color-light);font-size:var(--el-font-size-base);list-style:none;margin:0}.el-timeline .el-timeline-item:last-child .el-timeline-item__tail{display:none}.el-timeline .el-timeline-item__center{align-items:center;display:flex}.el-timeline .el-timeline-item__center .el-timeline-item__wrapper{width:100%}.el-timeline .el-timeline-item__center .el-timeline-item__tail{top:0}.el-timeline .el-timeline-item__center:first-child .el-timeline-item__tail{height:calc(50% + 10px);top:calc(50% - 10px)}.el-timeline .el-timeline-item__center:last-child .el-timeline-item__tail{display:block;height:calc(50% - 10px)}.el-tooltip-v2__content{--el-tooltip-v2-padding:5px 10px;--el-tooltip-v2-border-radius:4px;--el-tooltip-v2-border-color:var(--el-border-color);background-color:var(--el-color-white);border:1px solid var(--el-border-color);border-radius:var(--el-tooltip-v2-border-radius);color:var(--el-color-black);padding:var(--el-tooltip-v2-padding)}.el-tooltip-v2__arrow{color:var(--el-color-white);height:var(--el-tooltip-v2-arrow-height);left:var(--el-tooltip-v2-arrow-x);pointer-events:none;position:absolute;top:var(--el-tooltip-v2-arrow-y);width:var(--el-tooltip-v2-arrow-width)}.el-tooltip-v2__arrow:after,.el-tooltip-v2__arrow:before{border:var(--el-tooltip-v2-arrow-border-width) solid transparent;content:\"\";height:0;position:absolute;width:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow{bottom:0}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:before{border-bottom:0;border-top-color:var(--el-color-white);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=top] .el-tooltip-v2__arrow:after{border-bottom:0;border-top-color:var(--el-border-color);border-top-width:var(--el-tooltip-v2-arrow-border-width);top:100%;z-index:-1}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow{top:0}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:before{border-bottom-color:var(--el-color-white);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=bottom] .el-tooltip-v2__arrow:after{border-bottom-color:var(--el-border-color);border-bottom-width:var(--el-tooltip-v2-arrow-border-width);border-top:0;bottom:100%;z-index:-1}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow{right:0}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:before{border-left-color:var(--el-color-white);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=left] .el-tooltip-v2__arrow:after{border-left-color:var(--el-border-color);border-left-width:var(--el-tooltip-v2-arrow-border-width);border-right:0;left:100%;z-index:-1}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow{left:0}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:before{border-left:0;border-right-color:var(--el-color-white);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:calc(100% - 1px)}.el-tooltip-v2__content[data-side^=right] .el-tooltip-v2__arrow:after{border-left:0;border-right-color:var(--el-border-color);border-right-width:var(--el-tooltip-v2-arrow-border-width);right:100%;z-index:-1}.el-tooltip-v2__content.is-dark{--el-tooltip-v2-border-color:transparent;color:var(--el-color-white)}.el-tooltip-v2__content.is-dark,.el-tooltip-v2__content.is-dark .el-tooltip-v2__arrow{background-color:var(--el-color-black);border-color:transparent}.el-transfer{--el-transfer-border-color:var(--el-border-color-lighter);--el-transfer-border-radius:var(--el-border-radius-base);--el-transfer-panel-width:200px;--el-transfer-panel-header-height:40px;--el-transfer-panel-header-bg-color:var(--el-fill-color-light);--el-transfer-panel-footer-height:40px;--el-transfer-panel-body-height:278px;--el-transfer-item-height:30px;--el-transfer-filter-height:32px;font-size:var(--el-font-size-base)}.el-transfer__buttons{display:inline-block;padding:0 30px;vertical-align:middle}.el-transfer__button{vertical-align:top}.el-transfer__button:nth-child(2){margin:0 0 0 10px}.el-transfer__button i,.el-transfer__button span{font-size:14px}.el-transfer__button .el-icon+span{margin-left:0}.el-transfer-panel{background:var(--el-bg-color-overlay);box-sizing:border-box;display:inline-block;max-height:100%;overflow:hidden;position:relative;text-align:left;vertical-align:middle;width:var(--el-transfer-panel-width)}.el-transfer-panel__body{border-bottom:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);border-left:1px solid var(--el-transfer-border-color);border-right:1px solid var(--el-transfer-border-color);height:var(--el-transfer-panel-body-height);overflow:hidden}.el-transfer-panel__body.is-with-footer{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.el-transfer-panel__list{box-sizing:border-box;height:var(--el-transfer-panel-body-height);list-style:none;margin:0;overflow:auto;padding:6px 0}.el-transfer-panel__list.is-filterable{height:calc(100% - var(--el-transfer-filter-height) - 30px);padding-top:0}.el-transfer-panel__item{display:block!important;height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);padding-left:15px}.el-transfer-panel__item+.el-transfer-panel__item{margin-left:0}.el-transfer-panel__item.el-checkbox{color:var(--el-text-color-regular)}.el-transfer-panel__item:hover{color:var(--el-color-primary)}.el-transfer-panel__item.el-checkbox .el-checkbox__label{box-sizing:border-box;display:block;line-height:var(--el-transfer-item-height);overflow:hidden;padding-left:22px;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-transfer-panel__item .el-checkbox__input{position:absolute;top:8px}.el-transfer-panel__filter{box-sizing:border-box;padding:15px;text-align:center}.el-transfer-panel__filter .el-input__inner{box-sizing:border-box;display:inline-block;font-size:12px;height:var(--el-transfer-filter-height);width:100%}.el-transfer-panel__filter .el-icon-circle-close{cursor:pointer}.el-transfer-panel .el-transfer-panel__header{align-items:center;background:var(--el-transfer-panel-header-bg-color);border:1px solid var(--el-transfer-border-color);border-top-left-radius:var(--el-transfer-border-radius);border-top-right-radius:var(--el-transfer-border-radius);box-sizing:border-box;color:var(--el-color-black);display:flex;height:var(--el-transfer-panel-header-height);margin:0;padding-left:15px}.el-transfer-panel .el-transfer-panel__header .el-checkbox{align-items:center;display:flex;position:relative;width:100%}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label{color:var(--el-text-color-primary);font-size:16px;font-weight:400}.el-transfer-panel .el-transfer-panel__header .el-checkbox .el-checkbox__label span{color:var(--el-text-color-secondary);font-size:12px;font-weight:400;position:absolute;right:15px;top:50%;transform:translate3d(0,-50%,0)}.el-transfer-panel .el-transfer-panel__footer{background:var(--el-bg-color-overlay);border:1px solid var(--el-transfer-border-color);border-bottom-left-radius:var(--el-transfer-border-radius);border-bottom-right-radius:var(--el-transfer-border-radius);height:var(--el-transfer-panel-footer-height);margin:0;padding:0}.el-transfer-panel .el-transfer-panel__footer:after{content:\"\";display:inline-block;height:100%;vertical-align:middle}.el-transfer-panel .el-transfer-panel__footer .el-checkbox{color:var(--el-text-color-regular);padding-left:20px}.el-transfer-panel .el-transfer-panel__empty{color:var(--el-text-color-secondary);height:var(--el-transfer-item-height);line-height:var(--el-transfer-item-height);margin:0;padding:6px 15px 0;text-align:center}.el-transfer-panel .el-checkbox__label{padding-left:8px}.el-transfer-panel .el-checkbox__inner{border-radius:3px;height:14px;width:14px}.el-transfer-panel .el-checkbox__inner:after{height:6px;left:4px;width:3px}.el-tree{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder);background:var(--el-fill-color-blank);color:var(--el-tree-text-color);cursor:default;font-size:var(--el-font-size-base);position:relative}.el-tree__empty-block{height:100%;min-height:60px;position:relative;text-align:center;width:100%}.el-tree__empty-text{color:var(--el-text-color-secondary);font-size:var(--el-font-size-base);left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.el-tree__drop-indicator{background-color:var(--el-color-primary);height:1px;left:0;position:absolute;right:0}.el-tree-node{outline:none;white-space:nowrap}.el-tree-node:focus>.el-tree-node__content{background-color:var(--el-tree-node-hover-bg-color)}.el-tree-node.is-drop-inner>.el-tree-node__content .el-tree-node__label{background-color:var(--el-color-primary);color:#fff}.el-tree-node__content{--el-checkbox-height:var(--el-tree-node-content-height);align-items:center;cursor:pointer;display:flex;height:var(--el-tree-node-content-height)}.el-tree-node__content>.el-tree-node__expand-icon{box-sizing:content-box;padding:6px}.el-tree-node__content>label.el-checkbox{margin-right:8px}.el-tree-node__content:hover{background-color:var(--el-tree-node-hover-bg-color)}.el-tree.is-dragging .el-tree-node__content{cursor:move}.el-tree.is-dragging .el-tree-node__content *{pointer-events:none}.el-tree.is-dragging.is-drop-not-allow .el-tree-node__content{cursor:not-allowed}.el-tree-node__expand-icon{color:var(--el-tree-expand-icon-color);cursor:pointer;font-size:12px;transform:rotate(0);transition:transform var(--el-transition-duration) ease-in-out}.el-tree-node__expand-icon.expanded{transform:rotate(90deg)}.el-tree-node__expand-icon.is-leaf{color:transparent;cursor:default;visibility:hidden}.el-tree-node__expand-icon.is-hidden{visibility:hidden}.el-tree-node__loading-icon{color:var(--el-tree-expand-icon-color);font-size:var(--el-font-size-base);margin-right:8px}.el-tree-node>.el-tree-node__children{background-color:transparent;overflow:hidden}.el-tree-node.is-expanded>.el-tree-node__children{display:block}.el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content{background-color:var(--el-color-primary-light-9)}.el-tree-select{--el-tree-node-content-height:26px;--el-tree-node-hover-bg-color:var(--el-fill-color-light);--el-tree-text-color:var(--el-text-color-regular);--el-tree-expand-icon-color:var(--el-text-color-placeholder)}.el-tree-select__popper .el-tree-node__expand-icon{margin-left:8px}.el-tree-select__popper .el-tree-node.is-checked>.el-tree-node__content .el-select-dropdown__item.selected:after{content:none}.el-tree-select__popper .el-select-dropdown__list>.el-select-dropdown__item{padding-left:32px}.el-tree-select__popper .el-select-dropdown__item{background:transparent!important;flex:1;height:20px;line-height:20px;padding-left:0}.el-upload{--el-upload-dragger-padding-horizontal:40px;--el-upload-dragger-padding-vertical:10px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{--el-upload-picture-card-size:148px;align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-horizontal) var(--el-upload-dragger-padding-vertical);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-horizontal) - 1px) calc(var(--el-upload-dragger-padding-vertical) - 1px)}.el-upload-list{list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{--el-upload-list-picture-card-size:148px;display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;-o-object-fit:contain;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;-o-object-fit:contain;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:\"\";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}.el-vl__wrapper{position:relative}.el-vl__wrapper.always-on .el-virtual-scrollbar,.el-vl__wrapper:hover .el-virtual-scrollbar{opacity:1}.el-vl__window{scrollbar-width:none}.el-vl__window::-webkit-scrollbar{display:none}.el-virtual-scrollbar{opacity:0;transition:opacity .34s ease-out}.el-virtual-scrollbar.always-on{opacity:1}.el-vg__wrapper{position:relative}.el-popper{--el-popper-border-radius:var(--el-popover-border-radius,4px);border-radius:var(--el-popper-border-radius);font-size:12px;line-height:20px;min-width:10px;overflow-wrap:break-word;padding:5px 11px;position:absolute;visibility:visible;z-index:2000}.el-popper.is-dark{color:var(--el-bg-color)}.el-popper.is-dark,.el-popper.is-dark>.el-popper__arrow:before{background:var(--el-text-color-primary);border:1px solid var(--el-text-color-primary)}.el-popper.is-dark>.el-popper__arrow:before{right:0}.el-popper.is-light,.el-popper.is-light>.el-popper__arrow:before{background:var(--el-bg-color-overlay);border:1px solid var(--el-border-color-light)}.el-popper.is-light>.el-popper__arrow:before{right:0}.el-popper.is-pure{padding:0}.el-popper__arrow,.el-popper__arrow:before{height:10px;position:absolute;width:10px;z-index:-1}.el-popper__arrow:before{background:var(--el-text-color-primary);box-sizing:border-box;content:\" \";transform:rotate(45deg)}.el-popper[data-popper-placement^=top]>.el-popper__arrow{bottom:-5px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-bottom-right-radius:2px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow{top:-5px}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-top-left-radius:2px}.el-popper[data-popper-placement^=left]>.el-popper__arrow{right:-5px}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-top-right-radius:2px}.el-popper[data-popper-placement^=right]>.el-popper__arrow{left:-5px}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-bottom-left-radius:2px}.el-popper[data-popper-placement^=top]>.el-popper__arrow:before{border-left-color:transparent!important;border-top-color:transparent!important}.el-popper[data-popper-placement^=bottom]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-right-color:transparent!important}.el-popper[data-popper-placement^=left]>.el-popper__arrow:before{border-bottom-color:transparent!important;border-left-color:transparent!important}.el-popper[data-popper-placement^=right]>.el-popper__arrow:before{border-right-color:transparent!important;border-top-color:transparent!important}.el-statistic{--el-statistic-title-font-weight:400;--el-statistic-title-font-size:var(--el-font-size-extra-small);--el-statistic-title-color:var(--el-text-color-regular);--el-statistic-content-font-weight:400;--el-statistic-content-font-size:var(--el-font-size-extra-large);--el-statistic-content-color:var(--el-text-color-primary)}.el-statistic__head{color:var(--el-statistic-title-color);font-size:var(--el-statistic-title-font-size);font-weight:var(--el-statistic-title-font-weight);line-height:20px;margin-bottom:4px}.el-statistic__content{color:var(--el-statistic-content-color);font-size:var(--el-statistic-content-font-size);font-weight:var(--el-statistic-content-font-weight)}.el-statistic__value{display:inline-block}.el-statistic__prefix{display:inline-block;margin-right:4px}.el-statistic__suffix{display:inline-block;margin-left:4px}.el-tour{--el-tour-width:520px;--el-tour-padding-primary:12px;--el-tour-font-line-height:var(--el-font-line-height-primary);--el-tour-title-font-size:16px;--el-tour-title-text-color:var(--el-text-color-primary);--el-tour-title-font-weight:400;--el-tour-close-color:var(--el-color-info);--el-tour-font-size:14px;--el-tour-color:var(--el-text-color-primary);--el-tour-bg-color:var(--el-bg-color);--el-tour-border-radius:4px}.el-tour__hollow{transition:all var(--el-transition-duration) ease}.el-tour__content{border-radius:var(--el-tour-border-radius);box-shadow:var(--el-box-shadow-light);outline:none;overflow-wrap:break-word;padding:var(--el-tour-padding-primary);width:var(--el-tour-width)}.el-tour__arrow,.el-tour__content{background:var(--el-tour-bg-color);box-sizing:border-box}.el-tour__arrow{height:10px;pointer-events:none;position:absolute;transform:rotate(45deg);width:10px}.el-tour__content[data-side^=top] .el-tour__arrow{border-left-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=bottom] .el-tour__arrow{border-bottom-color:transparent;border-right-color:transparent}.el-tour__content[data-side^=left] .el-tour__arrow{border-bottom-color:transparent;border-left-color:transparent}.el-tour__content[data-side^=right] .el-tour__arrow{border-right-color:transparent;border-top-color:transparent}.el-tour__content[data-side^=top] .el-tour__arrow{bottom:-5px}.el-tour__content[data-side^=bottom] .el-tour__arrow{top:-5px}.el-tour__content[data-side^=left] .el-tour__arrow{right:-5px}.el-tour__content[data-side^=right] .el-tour__arrow{left:-5px}.el-tour__closebtn{background:transparent;border:none;cursor:pointer;font-size:var(--el-message-close-size,16px);height:40px;outline:none;padding:0;position:absolute;right:0;top:0;width:40px}.el-tour__closebtn .el-tour__close{color:var(--el-tour-close-color);font-size:inherit}.el-tour__closebtn:focus .el-tour__close,.el-tour__closebtn:hover .el-tour__close{color:var(--el-color-primary)}.el-tour__header{padding-bottom:var(--el-tour-padding-primary)}.el-tour__header.show-close{padding-right:calc(var(--el-tour-padding-primary) + var(--el-message-close-size, 16px))}.el-tour__title{color:var(--el-tour-title-text-color);font-size:var(--el-tour-title-font-size);font-weight:var(--el-tour-title-font-weight);line-height:var(--el-tour-font-line-height)}.el-tour__body{color:var(--el-tour-text-color);font-size:var(--el-tour-font-size)}.el-tour__body img,.el-tour__body video{max-width:100%}.el-tour__footer{box-sizing:border-box;display:flex;justify-content:space-between;padding-top:var(--el-tour-padding-primary)}.el-tour__content .el-tour-indicators{display:inline-block;flex:1}.el-tour__content .el-tour-indicator{background:var(--el-color-info-light-9);border-radius:50%;display:inline-block;height:6px;margin-right:6px;width:6px}.el-tour__content .el-tour-indicator.is-active{background:var(--el-color-primary)}.el-tour.el-tour--primary{--el-tour-title-text-color:#fff;--el-tour-text-color:#fff;--el-tour-bg-color:var(--el-color-primary);--el-tour-close-color:#fff}.el-tour.el-tour--primary .el-tour__closebtn:focus .el-tour__close,.el-tour.el-tour--primary .el-tour__closebtn:hover .el-tour__close{color:var(--el-tour-title-text-color)}.el-tour.el-tour--primary .el-button--default{background:#fff;border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-tour.el-tour--primary .el-button--primary{border-color:#fff}.el-tour.el-tour--primary .el-tour-indicator{background:#ffffff26}.el-tour.el-tour--primary .el-tour-indicator.is-active{background:#fff}.el-tour-parent--hidden{overflow:hidden}.el-anchor{--el-anchor-bg-color:var(--el-bg-color);--el-anchor-padding-indent:14px;--el-anchor-line-height:22px;--el-anchor-font-size:12px;--el-anchor-color:var(--el-text-color-secondary);--el-anchor-active-color:var(--el-color-primary);--el-anchor-marker-bg-color:var(--el-color-primary);background-color:var(--el-anchor-bg-color);position:relative}.el-anchor__marker{background-color:var(--el-anchor-marker-bg-color);border-radius:4px;opacity:0;position:absolute;z-index:0}.el-anchor.el-anchor--vertical .el-anchor__marker{height:14px;left:0;top:8px;transition:top .25s ease-in-out,opacity .25s;width:4px}.el-anchor.el-anchor--vertical .el-anchor__list{padding-left:var(--el-anchor-padding-indent)}.el-anchor.el-anchor--vertical.el-anchor--underline:before{background-color:#0505050f;content:\"\";height:100%;left:0;position:absolute;width:2px}.el-anchor.el-anchor--vertical.el-anchor--underline .el-anchor__marker{border-radius:unset;width:2px}.el-anchor.el-anchor--horizontal .el-anchor__marker{bottom:0;height:2px;transition:left .25s ease-in-out,opacity .25s,width .25s;width:20px}.el-anchor.el-anchor--horizontal .el-anchor__list{display:flex;padding-bottom:4px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item{padding-left:16px}.el-anchor.el-anchor--horizontal .el-anchor__list .el-anchor__item:first-child{padding-left:0}.el-anchor.el-anchor--horizontal.el-anchor--underline:before{background-color:#0505050f;bottom:0;content:\"\";height:2px;position:absolute;width:100%}.el-anchor.el-anchor--horizontal.el-anchor--underline .el-anchor__marker{border-radius:unset;height:2px}.el-anchor__item{display:flex;flex-direction:column;overflow:hidden}.el-anchor__link{cursor:pointer;font-size:var(--el-anchor-font-size);line-height:var(--el-anchor-line-height);max-width:100%;outline:none;overflow:hidden;padding:4px 0;text-decoration:none;text-overflow:ellipsis;transition:color var(--el-transition-duration);white-space:nowrap}.el-anchor__link,.el-anchor__link:focus,.el-anchor__link:hover{color:var(--el-anchor-color)}.el-anchor__link.is-active{color:var(--el-anchor-active-color)}.el-anchor .el-anchor__list .el-anchor__item a{display:inline-block}.el-segmented--vertical{flex-direction:column}.el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented{--el-segmented-color:var(--el-text-color-regular);--el-segmented-bg-color:var(--el-fill-color-light);--el-segmented-padding:2px;--el-segmented-item-selected-color:var(--el-color-white);--el-segmented-item-selected-bg-color:var(--el-color-primary);--el-segmented-item-selected-disabled-bg-color:var(--el-color-primary-light-5);--el-segmented-item-hover-color:var(--el-text-color-primary);--el-segmented-item-hover-bg-color:var(--el-fill-color-dark);--el-segmented-item-active-bg-color:var(--el-fill-color-darker);--el-segmented-item-disabled-color:var(--el-text-color-placeholder);align-items:stretch;background:var(--el-segmented-bg-color);border-radius:var(--el-border-radius-base);box-sizing:border-box;color:var(--el-segmented-color);display:inline-flex;font-size:14px;min-height:32px;padding:var(--el-segmented-padding)}.el-segmented__group{align-items:stretch;display:flex;position:relative;width:100%}.el-segmented__item-selected{background:var(--el-segmented-item-selected-bg-color);border-radius:calc(var(--el-border-radius-base) - 2px);height:100%;left:0;pointer-events:none;position:absolute;top:0;transition:all .3s;width:10px}.el-segmented__item-selected.is-disabled{background:var(--el-segmented-item-selected-disabled-bg-color)}.el-segmented__item-selected.is-focus-visible:before{border-radius:inherit;content:\"\";top:0;right:0;bottom:0;left:0;outline:2px solid var(--el-segmented-item-selected-bg-color);outline-offset:1px;position:absolute}.el-segmented__item{align-items:center;border-radius:calc(var(--el-border-radius-base) - 2px);cursor:pointer;display:flex;flex:1;padding:0 11px}.el-segmented__item:not(.is-disabled):not(.is-selected):hover{background:var(--el-segmented-item-hover-bg-color);color:var(--el-segmented-item-hover-color)}.el-segmented__item:not(.is-disabled):not(.is-selected):active{background:var(--el-segmented-item-active-bg-color)}.el-segmented__item.is-selected,.el-segmented__item.is-selected.is-disabled{color:var(--el-segmented-item-selected-color)}.el-segmented__item.is-disabled{color:var(--el-segmented-item-disabled-color);cursor:not-allowed}.el-segmented__item-input{height:0;margin:0;opacity:0;pointer-events:none;position:absolute;width:0}.el-segmented__item-label{flex:1;line-height:normal;overflow:hidden;text-align:center;text-overflow:ellipsis;transition:color .3s;white-space:nowrap;z-index:1}.el-segmented.is-block{display:flex}.el-segmented.is-block .el-segmented__item{min-width:0}.el-segmented--large{border-radius:var(--el-border-radius-base);font-size:16px;min-height:40px}.el-segmented--large .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 2px)}.el-segmented--large .el-segmented--vertical .el-segmented__item{padding:11px}.el-segmented--large .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 2px);padding:0 11px}.el-segmented--small{border-radius:calc(var(--el-border-radius-base) - 1px);font-size:14px;min-height:24px}.el-segmented--small .el-segmented__item-selected{border-radius:calc(var(--el-border-radius-base) - 3px)}.el-segmented--small .el-segmented--vertical .el-segmented__item{padding:7px}.el-segmented--small .el-segmented__item{border-radius:calc(var(--el-border-radius-base) - 3px);padding:0 7px}.el-mention{position:relative;width:100%}.el-mention__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-mention__popper.el-popper,.el-mention__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-mention__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-mention__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-mention-dropdown{--el-mention-font-size:var(--el-font-size-base);--el-mention-bg-color:var(--el-bg-color-overlay);--el-mention-shadow:var(--el-box-shadow-light);--el-mention-border:1px solid var(--el-border-color-light);--el-mention-option-color:var(--el-text-color-regular);--el-mention-option-height:34px;--el-mention-option-min-width:100px;--el-mention-option-hover-background:var(--el-fill-color-light);--el-mention-option-selected-color:var(--el-color-primary);--el-mention-option-disabled-color:var(--el-text-color-placeholder);--el-mention-option-loading-color:var(--el-text-color-secondary);--el-mention-option-loading-padding:10px 0;--el-mention-max-height:174px;--el-mention-padding:6px 0;--el-mention-header-padding:10px;--el-mention-footer-padding:10px}.el-mention-dropdown__item{box-sizing:border-box;color:var(--el-mention-option-color);cursor:pointer;font-size:var(--el-mention-font-size);height:var(--el-mention-option-height);line-height:var(--el-mention-option-height);min-width:var(--el-mention-option-min-width);overflow:hidden;padding:0 20px;position:relative;text-overflow:ellipsis;white-space:nowrap}.el-mention-dropdown__item.is-hovering{background-color:var(--el-mention-option-hover-background)}.el-mention-dropdown__item.is-selected{color:var(--el-mention-option-selected-color);font-weight:700}.el-mention-dropdown__item.is-disabled{background-color:unset;color:var(--el-mention-option-disabled-color);cursor:not-allowed}.el-mention-dropdown{border-radius:var(--el-border-radius-base);box-sizing:border-box;z-index:calc(var(--el-index-top) + 1)}.el-mention-dropdown__loading{color:var(--el-mention-option-loading-color);font-size:12px;margin:0;min-width:var(--el-mention-option-min-width);padding:10px 0;text-align:center}.el-mention-dropdown__wrap{max-height:var(--el-mention-max-height)}.el-mention-dropdown__list{box-sizing:border-box;list-style:none;margin:0;padding:var(--el-mention-padding)}.el-mention-dropdown__header{border-bottom:var(--el-mention-border);padding:var(--el-mention-header-padding)}.el-mention-dropdown__footer{border-top:var(--el-mention-border);padding:var(--el-mention-footer-padding)}\n"
  },
  {
    "path": "gossh/webroot/assets/index-jH42E5tC.js",
    "content": "const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[\"./Manage-D_HsZWaT.js\",\"./Manage-BTEK3ejV.css\",\"./el-card-fwQOLwdi.css\",\"./SysInit-UcmoR0-x.js\",\"./SysInit-Lho0-Z3X.css\",\"./About-BpAaEtx1.js\",\"./About-CLFeE-IU.css\"])))=>i.map(i=>d[i]);\n(function(){const t=document.createElement(\"link\").relList;if(t&&t.supports&&t.supports(\"modulepreload\"))return;for(const s of document.querySelectorAll('link[rel=\"modulepreload\"]'))r(s);new MutationObserver(s=>{for(const o of s)if(o.type===\"childList\")for(const a of o.addedNodes)a.tagName===\"LINK\"&&a.rel===\"modulepreload\"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const o={};return s.integrity&&(o.integrity=s.integrity),s.referrerPolicy&&(o.referrerPolicy=s.referrerPolicy),s.crossOrigin===\"use-credentials\"?o.credentials=\"include\":s.crossOrigin===\"anonymous\"?o.credentials=\"omit\":o.credentials=\"same-origin\",o}function r(s){if(s.ep)return;s.ep=!0;const o=n(s);fetch(s.href,o)}})();/**\n* @vue/shared v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**//*! #__NO_SIDE_EFFECTS__ */function $p(e){const t=Object.create(null);for(const n of e.split(\",\"))t[n]=1;return n=>n in t}const Xt={},ki=[],Mt=()=>{},XE=()=>!1,qu=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Lp=e=>e.startsWith(\"onUpdate:\"),un=Object.assign,Ip=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},JE=Object.prototype.hasOwnProperty,kt=(e,t)=>JE.call(e,t),ke=Array.isArray,Ei=e=>Al(e)===\"[object Map]\",Yu=e=>Al(e)===\"[object Set]\",no=e=>Al(e)===\"[object Date]\",Ke=e=>typeof e==\"function\",ze=e=>typeof e==\"string\",Lr=e=>typeof e==\"symbol\",lt=e=>e!==null&&typeof e==\"object\",Qa=e=>(lt(e)||Ke(e))&&Ke(e.then)&&Ke(e.catch),Cy=Object.prototype.toString,Al=e=>Cy.call(e),ZE=e=>Al(e).slice(8,-1),el=e=>Al(e)===\"[object Object]\",Pp=e=>ze(e)&&e!==\"NaN\"&&e[0]!==\"-\"&&\"\"+parseInt(e,10)===e,Da=$p(\",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted\"),Gu=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},QE=/-(\\w)/g,Yn=Gu(e=>e.replace(QE,(t,n)=>n?n.toUpperCase():\"\")),eT=/\\B([A-Z])/g,Ts=Gu(e=>e.replace(eT,\"-$1\").toLowerCase()),$l=Gu(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ba=Gu(e=>e?`on${$l(e)}`:\"\"),Js=(e,t)=>!Object.is(e,t),Ac=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},ky=(e,t,n,r=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:r,value:n})},Gf=e=>{const t=parseFloat(e);return isNaN(t)?e:t},tT=e=>{const t=ze(e)?Number(e):NaN;return isNaN(t)?e:t};let Qm;const Xu=()=>Qm||(Qm=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:typeof global<\"u\"?global:{});function Ue(e){if(ke(e)){const t={};for(let n=0;n<e.length;n++){const r=e[n],s=ze(r)?oT(r):Ue(r);if(s)for(const o in s)t[o]=s[o]}return t}else if(ze(e)||lt(e))return e}const nT=/;(?![^(]*\\))/g,rT=/:([^]+)/,sT=/\\/\\*[^]*?\\*\\//g;function oT(e){const t={};return e.replace(sT,\"\").split(nT).forEach(n=>{if(n){const r=n.split(rT);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function D(e){let t=\"\";if(ze(e))t=e;else if(ke(e))for(let n=0;n<e.length;n++){const r=D(e[n]);r&&(t+=r+\" \")}else if(lt(e))for(const n in e)e[n]&&(t+=n+\" \");return t.trim()}function xr(e){if(!e)return null;let{class:t,style:n}=e;return t&&!ze(t)&&(e.class=D(t)),n&&(e.style=Ue(n)),e}const iT=\"itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly\",aT=$p(iT);function Ey(e){return!!e||e===\"\"}function lT(e,t){if(e.length!==t.length)return!1;let n=!0;for(let r=0;n&&r<e.length;r++)n=Ii(e[r],t[r]);return n}function Ii(e,t){if(e===t)return!0;let n=no(e),r=no(t);if(n||r)return n&&r?e.getTime()===t.getTime():!1;if(n=Lr(e),r=Lr(t),n||r)return e===t;if(n=ke(e),r=ke(t),n||r)return n&&r?lT(e,t):!1;if(n=lt(e),r=lt(t),n||r){if(!n||!r)return!1;const s=Object.keys(e).length,o=Object.keys(t).length;if(s!==o)return!1;for(const a in e){const i=e.hasOwnProperty(a),l=t.hasOwnProperty(a);if(i&&!l||!i&&l||!Ii(e[a],t[a]))return!1}}return String(e)===String(t)}function Ty(e,t){return e.findIndex(n=>Ii(n,t))}const Ry=e=>!!(e&&e.__v_isRef===!0),Ee=e=>ze(e)?e:e==null?\"\":ke(e)||lt(e)&&(e.toString===Cy||!Ke(e.toString))?Ry(e)?Ee(e.value):JSON.stringify(e,xy,2):String(e),xy=(e,t)=>Ry(t)?xy(e,t.value):Ei(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Gd(r,o)+\" =>\"]=s,n),{})}:Yu(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Gd(n))}:Lr(t)?Gd(t):lt(t)&&!ke(t)&&!el(t)?String(t):t,Gd=(e,t=\"\")=>{var n;return Lr(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/**\n* @vue/reactivity v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let Wn;class Oy{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Wn,!t&&Wn&&(this.index=(Wn.scopes||(Wn.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=Wn;try{return Wn=this,t()}finally{Wn=n}}}on(){Wn=this}off(){Wn=this.parent}stop(t){if(this._active){this._active=!1;let n,r;for(n=0,r=this.effects.length;n<r;n++)this.effects[n].stop();for(this.effects.length=0,n=0,r=this.cleanups.length;n<r;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,r=this.scopes.length;n<r;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const s=this.parent.scopes.pop();s&&s!==this&&(this.parent.scopes[this.index]=s,s.index=this.index)}this.parent=void 0}}}function Dp(e){return new Oy(e)}function Bp(){return Wn}function Np(e,t=!1){Wn&&Wn.cleanups.push(e)}let Zt;const Xd=new WeakSet;class My{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Wn&&Wn.active&&Wn.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Xd.has(this)&&(Xd.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||$y(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,eg(this),Ly(this);const t=Zt,n=Ar;Zt=this,Ar=!0;try{return this.fn()}finally{Iy(this),Zt=t,Ar=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Vp(t);this.deps=this.depsTail=void 0,eg(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Xd.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Xf(this)&&this.run()}get dirty(){return Xf(this)}}let Ay=0,Na,Fa;function $y(e,t=!1){if(e.flags|=8,t){e.next=Fa,Fa=e;return}e.next=Na,Na=e}function Fp(){Ay++}function Hp(){if(--Ay>0)return;if(Fa){let t=Fa;for(Fa=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Na;){let t=Na;for(Na=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(r){e||(e=r)}t=n}}if(e)throw e}function Ly(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Iy(e){let t,n=e.depsTail,r=n;for(;r;){const s=r.prevDep;r.version===-1?(r===n&&(n=s),Vp(r),cT(r)):t=r,r.dep.activeLink=r.prevActiveLink,r.prevActiveLink=void 0,r=s}e.deps=t,e.depsTail=n}function Xf(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Py(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Py(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===tl))return;e.globalVersion=tl;const t=e.dep;if(e.flags|=2,t.version>0&&!e.isSSR&&e.deps&&!Xf(e)){e.flags&=-3;return}const n=Zt,r=Ar;Zt=e,Ar=!0;try{Ly(e);const s=e.fn(e._value);(t.version===0||Js(s,e._value))&&(e._value=s,t.version++)}catch(s){throw t.version++,s}finally{Zt=n,Ar=r,Iy(e),e.flags&=-3}}function Vp(e,t=!1){const{dep:n,prevSub:r,nextSub:s}=e;if(r&&(r.nextSub=s,e.prevSub=void 0),s&&(s.prevSub=r,e.nextSub=void 0),n.subs===e&&(n.subs=r,!r&&n.computed)){n.computed.flags&=-5;for(let o=n.computed.deps;o;o=o.nextDep)Vp(o,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function cT(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Ar=!0;const Dy=[];function po(){Dy.push(Ar),Ar=!1}function vo(){const e=Dy.pop();Ar=e===void 0?!0:e}function eg(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=Zt;Zt=void 0;try{t()}finally{Zt=n}}}let tl=0,uT=class{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}};class Ju{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0}track(t){if(!Zt||!Ar||Zt===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==Zt)n=this.activeLink=new uT(Zt,this),Zt.deps?(n.prevDep=Zt.depsTail,Zt.depsTail.nextDep=n,Zt.depsTail=n):Zt.deps=Zt.depsTail=n,By(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const r=n.nextDep;r.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=r),n.prevDep=Zt.depsTail,n.nextDep=void 0,Zt.depsTail.nextDep=n,Zt.depsTail=n,Zt.deps===n&&(Zt.deps=r)}return n}trigger(t){this.version++,tl++,this.notify(t)}notify(t){Fp();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Hp()}}}function By(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let r=t.deps;r;r=r.nextDep)By(r)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const du=new WeakMap,Fo=Symbol(\"\"),Jf=Symbol(\"\"),nl=Symbol(\"\");function $n(e,t,n){if(Ar&&Zt){let r=du.get(e);r||du.set(e,r=new Map);let s=r.get(n);s||(r.set(n,s=new Ju),s.map=r,s.key=n),s.track()}}function gs(e,t,n,r,s,o){const a=du.get(e);if(!a){tl++;return}const i=l=>{l&&l.trigger()};if(Fp(),t===\"clear\")a.forEach(i);else{const l=ke(e),u=l&&Pp(n);if(l&&n===\"length\"){const f=Number(r);a.forEach((d,h)=>{(h===\"length\"||h===nl||!Lr(h)&&h>=f)&&i(d)})}else switch((n!==void 0||a.has(void 0))&&i(a.get(n)),u&&i(a.get(nl)),t){case\"add\":l?u&&i(a.get(\"length\")):(i(a.get(Fo)),Ei(e)&&i(a.get(Jf)));break;case\"delete\":l||(i(a.get(Fo)),Ei(e)&&i(a.get(Jf)));break;case\"set\":Ei(e)&&i(a.get(Fo));break}}Hp()}function dT(e,t){const n=du.get(e);return n&&n.get(t)}function ai(e){const t=Dt(e);return t===e?t:($n(t,\"iterate\",nl),mr(e)?t:t.map(Ln))}function Zu(e){return $n(e=Dt(e),\"iterate\",nl),e}const fT={__proto__:null,[Symbol.iterator](){return Jd(this,Symbol.iterator,Ln)},concat(...e){return ai(this).concat(...e.map(t=>ke(t)?ai(t):t))},entries(){return Jd(this,\"entries\",e=>(e[1]=Ln(e[1]),e))},every(e,t){return fs(this,\"every\",e,t,void 0,arguments)},filter(e,t){return fs(this,\"filter\",e,t,n=>n.map(Ln),arguments)},find(e,t){return fs(this,\"find\",e,t,Ln,arguments)},findIndex(e,t){return fs(this,\"findIndex\",e,t,void 0,arguments)},findLast(e,t){return fs(this,\"findLast\",e,t,Ln,arguments)},findLastIndex(e,t){return fs(this,\"findLastIndex\",e,t,void 0,arguments)},forEach(e,t){return fs(this,\"forEach\",e,t,void 0,arguments)},includes(...e){return Zd(this,\"includes\",e)},indexOf(...e){return Zd(this,\"indexOf\",e)},join(e){return ai(this).join(e)},lastIndexOf(...e){return Zd(this,\"lastIndexOf\",e)},map(e,t){return fs(this,\"map\",e,t,void 0,arguments)},pop(){return wa(this,\"pop\")},push(...e){return wa(this,\"push\",e)},reduce(e,...t){return tg(this,\"reduce\",e,t)},reduceRight(e,...t){return tg(this,\"reduceRight\",e,t)},shift(){return wa(this,\"shift\")},some(e,t){return fs(this,\"some\",e,t,void 0,arguments)},splice(...e){return wa(this,\"splice\",e)},toReversed(){return ai(this).toReversed()},toSorted(e){return ai(this).toSorted(e)},toSpliced(...e){return ai(this).toSpliced(...e)},unshift(...e){return wa(this,\"unshift\",e)},values(){return Jd(this,\"values\",Ln)}};function Jd(e,t,n){const r=Zu(e),s=r[t]();return r!==e&&!mr(e)&&(s._next=s.next,s.next=()=>{const o=s._next();return o.value&&(o.value=n(o.value)),o}),s}const hT=Array.prototype;function fs(e,t,n,r,s,o){const a=Zu(e),i=a!==e&&!mr(e),l=a[t];if(l!==hT[t]){const d=l.apply(e,o);return i?Ln(d):d}let u=n;a!==e&&(i?u=function(d,h){return n.call(this,Ln(d),h,e)}:n.length>2&&(u=function(d,h){return n.call(this,d,h,e)}));const f=l.call(a,u,r);return i&&s?s(f):f}function tg(e,t,n,r){const s=Zu(e);let o=n;return s!==e&&(mr(e)?n.length>3&&(o=function(a,i,l){return n.call(this,a,i,l,e)}):o=function(a,i,l){return n.call(this,a,Ln(i),l,e)}),s[t](o,...r)}function Zd(e,t,n){const r=Dt(e);$n(r,\"iterate\",nl);const s=r[t](...n);return(s===-1||s===!1)&&jp(n[0])?(n[0]=Dt(n[0]),r[t](...n)):s}function wa(e,t,n=[]){po(),Fp();const r=Dt(e)[t].apply(e,n);return Hp(),vo(),r}const pT=$p(\"__proto__,__v_isRef,__isVue\"),Ny=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!==\"arguments\"&&e!==\"caller\").map(e=>Symbol[e]).filter(Lr));function vT(e){Lr(e)||(e=String(e));const t=Dt(this);return $n(t,\"has\",e),t.hasOwnProperty(e)}class Fy{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){if(n===\"__v_skip\")return t.__v_skip;const s=this._isReadonly,o=this._isShallow;if(n===\"__v_isReactive\")return!s;if(n===\"__v_isReadonly\")return s;if(n===\"__v_isShallow\")return o;if(n===\"__v_raw\")return r===(s?o?ET:Wy:o?zy:Vy).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const a=ke(t);if(!s){let l;if(a&&(l=fT[n]))return l;if(n===\"hasOwnProperty\")return vT}const i=Reflect.get(t,n,Ft(t)?t:r);return(Lr(n)?Ny.has(n):pT(n))||(s||$n(t,\"get\",n),o)?i:Ft(i)?a&&Pp(n)?i:i.value:lt(i)?s?ra(i):St(i):i}}class Hy extends Fy{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const l=Uo(o);if(!mr(r)&&!Uo(r)&&(o=Dt(o),r=Dt(r)),!ke(t)&&Ft(o)&&!Ft(r))return l?!1:(o.value=r,!0)}const a=ke(t)&&Pp(n)?Number(n)<t.length:kt(t,n),i=Reflect.set(t,n,r,Ft(t)?t:s);return t===Dt(s)&&(a?Js(r,o)&&gs(t,\"set\",n,r):gs(t,\"add\",n,r)),i}deleteProperty(t,n){const r=kt(t,n);t[n];const s=Reflect.deleteProperty(t,n);return s&&r&&gs(t,\"delete\",n,void 0),s}has(t,n){const r=Reflect.has(t,n);return(!Lr(n)||!Ny.has(n))&&$n(t,\"has\",n),r}ownKeys(t){return $n(t,\"iterate\",ke(t)?\"length\":Fo),Reflect.ownKeys(t)}}class mT extends Fy{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const gT=new Hy,_T=new mT,bT=new Hy(!0);const Zf=e=>e,ac=e=>Reflect.getPrototypeOf(e);function yT(e,t,n){return function(...r){const s=this.__v_raw,o=Dt(s),a=Ei(o),i=e===\"entries\"||e===Symbol.iterator&&a,l=e===\"keys\"&&a,u=s[e](...r),f=n?Zf:t?Qf:Ln;return!t&&$n(o,\"iterate\",l?Jf:Fo),{next(){const{value:d,done:h}=u.next();return h?{value:d,done:h}:{value:i?[f(d[0]),f(d[1])]:f(d),done:h}},[Symbol.iterator](){return this}}}}function lc(e){return function(...t){return e===\"delete\"?!1:e===\"clear\"?void 0:this}}function wT(e,t){const n={get(s){const o=this.__v_raw,a=Dt(o),i=Dt(s);e||(Js(s,i)&&$n(a,\"get\",s),$n(a,\"get\",i));const{has:l}=ac(a),u=t?Zf:e?Qf:Ln;if(l.call(a,s))return u(o.get(s));if(l.call(a,i))return u(o.get(i));o!==a&&o.get(s)},get size(){const s=this.__v_raw;return!e&&$n(Dt(s),\"iterate\",Fo),Reflect.get(s,\"size\",s)},has(s){const o=this.__v_raw,a=Dt(o),i=Dt(s);return e||(Js(s,i)&&$n(a,\"has\",s),$n(a,\"has\",i)),s===i?o.has(s):o.has(s)||o.has(i)},forEach(s,o){const a=this,i=a.__v_raw,l=Dt(i),u=t?Zf:e?Qf:Ln;return!e&&$n(l,\"iterate\",Fo),i.forEach((f,d)=>s.call(o,u(f),u(d),a))}};return un(n,e?{add:lc(\"add\"),set:lc(\"set\"),delete:lc(\"delete\"),clear:lc(\"clear\")}:{add(s){!t&&!mr(s)&&!Uo(s)&&(s=Dt(s));const o=Dt(this);return ac(o).has.call(o,s)||(o.add(s),gs(o,\"add\",s,s)),this},set(s,o){!t&&!mr(o)&&!Uo(o)&&(o=Dt(o));const a=Dt(this),{has:i,get:l}=ac(a);let u=i.call(a,s);u||(s=Dt(s),u=i.call(a,s));const f=l.call(a,s);return a.set(s,o),u?Js(o,f)&&gs(a,\"set\",s,o):gs(a,\"add\",s,o),this},delete(s){const o=Dt(this),{has:a,get:i}=ac(o);let l=a.call(o,s);l||(s=Dt(s),l=a.call(o,s)),i&&i.call(o,s);const u=o.delete(s);return l&&gs(o,\"delete\",s,void 0),u},clear(){const s=Dt(this),o=s.size!==0,a=s.clear();return o&&gs(s,\"clear\",void 0,void 0),a}}),[\"keys\",\"values\",\"entries\",Symbol.iterator].forEach(s=>{n[s]=yT(s,e,t)}),n}function zp(e,t){const n=wT(e,t);return(r,s,o)=>s===\"__v_isReactive\"?!e:s===\"__v_isReadonly\"?e:s===\"__v_raw\"?r:Reflect.get(kt(n,s)&&s in r?n:r,s,o)}const ST={get:zp(!1,!1)},CT={get:zp(!1,!0)},kT={get:zp(!0,!1)};const Vy=new WeakMap,zy=new WeakMap,Wy=new WeakMap,ET=new WeakMap;function TT(e){switch(e){case\"Object\":case\"Array\":return 1;case\"Map\":case\"Set\":case\"WeakMap\":case\"WeakSet\":return 2;default:return 0}}function RT(e){return e.__v_skip||!Object.isExtensible(e)?0:TT(ZE(e))}function St(e){return Uo(e)?e:Kp(e,!1,gT,ST,Vy)}function Wp(e){return Kp(e,!1,bT,CT,zy)}function ra(e){return Kp(e,!0,_T,kT,Wy)}function Kp(e,t,n,r,s){if(!lt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const a=RT(e);if(a===0)return e;const i=new Proxy(e,a===2?r:n);return s.set(e,i),i}function Zs(e){return Uo(e)?Zs(e.__v_raw):!!(e&&e.__v_isReactive)}function Uo(e){return!!(e&&e.__v_isReadonly)}function mr(e){return!!(e&&e.__v_isShallow)}function jp(e){return e?!!e.__v_raw:!1}function Dt(e){const t=e&&e.__v_raw;return t?Dt(t):e}function Jr(e){return!kt(e,\"__v_skip\")&&Object.isExtensible(e)&&ky(e,\"__v_skip\",!0),e}const Ln=e=>lt(e)?St(e):e,Qf=e=>lt(e)?ra(e):e;function Ft(e){return e?e.__v_isRef===!0:!1}function W(e){return Ky(e,!1)}function Wt(e){return Ky(e,!0)}function Ky(e,t){return Ft(e)?e:new xT(e,t)}class xT{constructor(t,n){this.dep=new Ju,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:Dt(t),this._value=n?t:Ln(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,r=this.__v_isShallow||mr(t)||Uo(t);t=r?t:Dt(t),Js(t,n)&&(this._rawValue=t,this._value=r?t:Ln(t),this.dep.trigger())}}function c(e){return Ft(e)?e.value:e}const OT={get:(e,t,n)=>t===\"__v_raw\"?e:c(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return Ft(s)&&!Ft(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function jy(e){return Zs(e)?e:new Proxy(e,OT)}class MT{constructor(t){this.__v_isRef=!0,this._value=void 0;const n=this.dep=new Ju,{get:r,set:s}=t(n.track.bind(n),n.trigger.bind(n));this._get=r,this._set=s}get value(){return this._value=this._get()}set value(t){this._set(t)}}function AT(e){return new MT(e)}function hn(e){const t=ke(e)?new Array(e.length):{};for(const n in e)t[n]=Uy(e,n);return t}class $T{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return dT(Dt(this._object),this._key)}}class LT{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0,this._value=void 0}get value(){return this._value=this._getter()}}function At(e,t,n){return Ft(e)?e:Ke(e)?new LT(e):lt(e)&&arguments.length>1?Uy(e,t,n):W(e)}function Uy(e,t,n){const r=e[t];return Ft(r)?r:new $T(e,t,n)}class IT{constructor(t,n,r){this.fn=t,this.setter=n,this._value=void 0,this.dep=new Ju(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=tl-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=r}notify(){if(this.flags|=16,!(this.flags&8)&&Zt!==this)return $y(this,!0),!0}get value(){const t=this.dep.track();return Py(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function PT(e,t,n=!1){let r,s;return Ke(e)?r=e:(r=e.get,s=e.set),new IT(r,s,n)}const cc={},fu=new WeakMap;let Ro;function DT(e,t=!1,n=Ro){if(n){let r=fu.get(n);r||fu.set(n,r=[]),r.push(e)}}function BT(e,t,n=Xt){const{immediate:r,deep:s,once:o,scheduler:a,augmentJob:i,call:l}=n,u=w=>s?w:mr(w)||s===!1||s===0?_s(w,1):_s(w);let f,d,h,v,b=!1,p=!1;if(Ft(e)?(d=()=>e.value,b=mr(e)):Zs(e)?(d=()=>u(e),b=!0):ke(e)?(p=!0,b=e.some(w=>Zs(w)||mr(w)),d=()=>e.map(w=>{if(Ft(w))return w.value;if(Zs(w))return u(w);if(Ke(w))return l?l(w,2):w()})):Ke(e)?t?d=l?()=>l(e,2):e:d=()=>{if(h){po();try{h()}finally{vo()}}const w=Ro;Ro=f;try{return l?l(e,3,[v]):e(v)}finally{Ro=w}}:d=Mt,t&&s){const w=d,S=s===!0?1/0:s;d=()=>_s(w(),S)}const g=Bp(),m=()=>{f.stop(),g&&g.active&&Ip(g.effects,f)};if(o&&t){const w=t;t=(...S)=>{w(...S),m()}}let y=p?new Array(e.length).fill(cc):cc;const _=w=>{if(!(!(f.flags&1)||!f.dirty&&!w))if(t){const S=f.run();if(s||b||(p?S.some((C,E)=>Js(C,y[E])):Js(S,y))){h&&h();const C=Ro;Ro=f;try{const E=[S,y===cc?void 0:p&&y[0]===cc?[]:y,v];l?l(t,3,E):t(...E),y=S}finally{Ro=C}}}else f.run()};return i&&i(_),f=new My(d),f.scheduler=a?()=>a(_,!1):_,v=w=>DT(w,!1,f),h=f.onStop=()=>{const w=fu.get(f);if(w){if(l)l(w,4);else for(const S of w)S();fu.delete(f)}},t?r?_(!0):y=f.run():a?a(_.bind(null,!0),!0):f.run(),m.pause=f.pause.bind(f),m.resume=f.resume.bind(f),m.stop=m,m}function _s(e,t=1/0,n){if(t<=0||!lt(e)||e.__v_skip||(n=n||new Set,n.has(e)))return e;if(n.add(e),t--,Ft(e))_s(e.value,t,n);else if(ke(e))for(let r=0;r<e.length;r++)_s(e[r],t,n);else if(Yu(e)||Ei(e))e.forEach(r=>{_s(r,t,n)});else if(el(e)){for(const r in e)_s(e[r],t,n);for(const r of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,r)&&_s(e[r],t,n)}return e}/**\n* @vue/runtime-core v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/function Ll(e,t,n,r){try{return r?e(...r):e()}catch(s){Il(s,t,n)}}function Ir(e,t,n,r){if(Ke(e)){const s=Ll(e,t,n,r);return s&&Qa(s)&&s.catch(o=>{Il(o,t,n)}),s}if(ke(e)){const s=[];for(let o=0;o<e.length;o++)s.push(Ir(e[o],t,n,r));return s}}function Il(e,t,n,r=!0){const s=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:a}=t&&t.appContext.config||Xt;if(t){let i=t.parent;const l=t.proxy,u=`https://vuejs.org/error-reference/#runtime-${n}`;for(;i;){const f=i.ec;if(f){for(let d=0;d<f.length;d++)if(f[d](e,l,u)===!1)return}i=i.parent}if(o){po(),Ll(o,null,10,[e,l,u]),vo();return}}NT(e,n,s,r,a)}function NT(e,t,n,r=!0,s=!1){if(s)throw e;console.error(e)}const Kn=[];let qr=-1;const Ti=[];let Ks=null,vi=0;const qy=Promise.resolve();let hu=null;function je(e){const t=hu||qy;return e?t.then(this?e.bind(this):e):t}function FT(e){let t=qr+1,n=Kn.length;for(;t<n;){const r=t+n>>>1,s=Kn[r],o=rl(s);o<e||o===e&&s.flags&2?t=r+1:n=r}return t}function Up(e){if(!(e.flags&1)){const t=rl(e),n=Kn[Kn.length-1];!n||!(e.flags&2)&&t>=rl(n)?Kn.push(e):Kn.splice(FT(t),0,e),e.flags|=1,Yy()}}function Yy(){hu||(hu=qy.then(Jy))}function Gy(e){ke(e)?Ti.push(...e):Ks&&e.id===-1?Ks.splice(vi+1,0,e):e.flags&1||(Ti.push(e),e.flags|=1),Yy()}function ng(e,t,n=qr+1){for(;n<Kn.length;n++){const r=Kn[n];if(r&&r.flags&2){if(e&&r.id!==e.uid)continue;Kn.splice(n,1),n--,r.flags&4&&(r.flags&=-2),r(),r.flags&4||(r.flags&=-2)}}}function Xy(e){if(Ti.length){const t=[...new Set(Ti)].sort((n,r)=>rl(n)-rl(r));if(Ti.length=0,Ks){Ks.push(...t);return}for(Ks=t,vi=0;vi<Ks.length;vi++){const n=Ks[vi];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Ks=null,vi=0}}const rl=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Jy(e){try{for(qr=0;qr<Kn.length;qr++){const t=Kn[qr];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Ll(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;qr<Kn.length;qr++){const t=Kn[qr];t&&(t.flags&=-2)}qr=-1,Kn.length=0,Xy(),hu=null,(Kn.length||Ti.length)&&Jy()}}let gn=null,Zy=null;function pu(e){const t=gn;return gn=e,Zy=e&&e.type.__scopeId||null,t}function q(e,t=gn,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&mg(-1);const o=pu(t);let a;try{a=e(...s)}finally{pu(o),r._d&&mg(1)}return a};return r._n=!0,r._c=!0,r._d=!0,r}function st(e,t){if(gn===null)return e;const n=nd(gn),r=e.dirs||(e.dirs=[]);for(let s=0;s<t.length;s++){let[o,a,i,l=Xt]=t[s];o&&(Ke(o)&&(o={mounted:o,updated:o}),o.deep&&_s(a),r.push({dir:o,instance:n,value:a,oldValue:void 0,arg:i,modifiers:l}))}return e}function So(e,t,n,r){const s=e.dirs,o=t&&t.dirs;for(let a=0;a<s.length;a++){const i=s[a];o&&(i.oldValue=o[a].value);let l=i.dir[r];l&&(po(),Ir(l,n,8,[e.el,i,e,t]),vo())}}const Qy=Symbol(\"_vte\"),e1=e=>e.__isTeleport,Ha=e=>e&&(e.disabled||e.disabled===\"\"),rg=e=>e&&(e.defer||e.defer===\"\"),sg=e=>typeof SVGElement<\"u\"&&e instanceof SVGElement,og=e=>typeof MathMLElement==\"function\"&&e instanceof MathMLElement,eh=(e,t)=>{const n=e&&e.to;return ze(n)?t?t(n):null:n},t1={name:\"Teleport\",__isTeleport:!0,process(e,t,n,r,s,o,a,i,l,u){const{mc:f,pc:d,pbc:h,o:{insert:v,querySelector:b,createText:p,createComment:g}}=u,m=Ha(t.props);let{shapeFlag:y,children:_,dynamicChildren:w}=t;if(e==null){const S=t.el=p(\"\"),C=t.anchor=p(\"\");v(S,n,r),v(C,n,r);const E=(T,x)=>{y&16&&(s&&s.isCE&&(s.ce._teleportTarget=T),f(_,T,x,s,o,a,i,l))},k=()=>{const T=t.target=eh(t.props,b),x=n1(T,t,p,v);T&&(a!==\"svg\"&&sg(T)?a=\"svg\":a!==\"mathml\"&&og(T)&&(a=\"mathml\"),m||(E(T,x),$c(t,!1)))};m&&(E(n,C),$c(t,!0)),rg(t.props)?zn(()=>{k(),t.el.__isMounted=!0},o):k()}else{if(rg(t.props)&&!e.el.__isMounted){zn(()=>{t1.process(e,t,n,r,s,o,a,i,l,u),delete e.el.__isMounted},o);return}t.el=e.el,t.targetStart=e.targetStart;const S=t.anchor=e.anchor,C=t.target=e.target,E=t.targetAnchor=e.targetAnchor,k=Ha(e.props),T=k?n:C,x=k?S:E;if(a===\"svg\"||sg(C)?a=\"svg\":(a===\"mathml\"||og(C))&&(a=\"mathml\"),w?(h(e.dynamicChildren,w,T,s,o,a,i),tv(e,t,!0)):l||d(e,t,T,x,s,o,a,i,!1),m)k?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):uc(t,n,S,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const M=t.target=eh(t.props,b);M&&uc(t,M,null,u,0)}else k&&uc(t,C,E,u,1);$c(t,m)}},remove(e,t,n,{um:r,o:{remove:s}},o){const{shapeFlag:a,children:i,anchor:l,targetStart:u,targetAnchor:f,target:d,props:h}=e;if(d&&(s(u),s(f)),o&&s(l),a&16){const v=o||!Ha(h);for(let b=0;b<i.length;b++){const p=i[b];r(p,t,n,v,!!p.dynamicChildren)}}},move:uc,hydrate:HT};function uc(e,t,n,{o:{insert:r},m:s},o=2){o===0&&r(e.targetAnchor,t,n);const{el:a,anchor:i,shapeFlag:l,children:u,props:f}=e,d=o===2;if(d&&r(a,t,n),(!d||Ha(f))&&l&16)for(let h=0;h<u.length;h++)s(u[h],t,n,2);d&&r(i,t,n)}function HT(e,t,n,r,s,o,{o:{nextSibling:a,parentNode:i,querySelector:l,insert:u,createText:f}},d){const h=t.target=eh(t.props,l);if(h){const v=Ha(t.props),b=h._lpa||h.firstChild;if(t.shapeFlag&16)if(v)t.anchor=d(a(e),t,i(e),n,r,s,o),t.targetStart=b,t.targetAnchor=b&&a(b);else{t.anchor=a(e);let p=b;for(;p;){if(p&&p.nodeType===8){if(p.data===\"teleport start anchor\")t.targetStart=p;else if(p.data===\"teleport anchor\"){t.targetAnchor=p,h._lpa=t.targetAnchor&&a(t.targetAnchor);break}}p=a(p)}t.targetAnchor||n1(h,t,f,u),d(b&&a(b),t,h,n,r,s,o)}$c(t,v)}return t.anchor&&a(t.anchor)}const VT=t1;function $c(e,t){const n=e.ctx;if(n&&n.ut){let r,s;for(t?(r=e.el,s=e.anchor):(r=e.targetStart,s=e.targetAnchor);r&&r!==s;)r.nodeType===1&&r.setAttribute(\"data-v-owner\",n.uid),r=r.nextSibling;n.ut()}}function n1(e,t,n,r){const s=t.targetStart=n(\"\"),o=t.targetAnchor=n(\"\");return s[Qy]=o,e&&(r(s,e),r(o,e)),o}const js=Symbol(\"_leaveCb\"),dc=Symbol(\"_enterCb\");function r1(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return it(()=>{e.isMounted=!0}),Pt(()=>{e.isUnmounting=!0}),e}const ur=[Function,Array],s1={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ur,onEnter:ur,onAfterEnter:ur,onEnterCancelled:ur,onBeforeLeave:ur,onLeave:ur,onAfterLeave:ur,onLeaveCancelled:ur,onBeforeAppear:ur,onAppear:ur,onAfterAppear:ur,onAppearCancelled:ur},o1=e=>{const t=e.subTree;return t.component?o1(t.component):t},zT={name:\"BaseTransition\",props:s1,setup(e,{slots:t}){const n=ct(),r=r1();return()=>{const s=t.default&&qp(t.default(),!0);if(!s||!s.length)return;const o=i1(s),a=Dt(e),{mode:i}=a;if(r.isLeaving)return Qd(o);const l=ig(o);if(!l)return Qd(o);let u=sl(l,a,r,n,d=>u=d);l.type!==vn&&qo(l,u);let f=n.subTree&&ig(n.subTree);if(f&&f.type!==vn&&!Oo(l,f)&&o1(n).type!==vn){let d=sl(f,a,r,n);if(qo(f,d),i===\"out-in\"&&l.type!==vn)return r.isLeaving=!0,d.afterLeave=()=>{r.isLeaving=!1,n.job.flags&8||n.update(),delete d.afterLeave,f=void 0},Qd(o);i===\"in-out\"&&l.type!==vn?d.delayLeave=(h,v,b)=>{const p=a1(r,f);p[String(f.key)]=f,h[js]=()=>{v(),h[js]=void 0,delete u.delayedLeave,f=void 0},u.delayedLeave=()=>{b(),delete u.delayedLeave,f=void 0}}:f=void 0}else f&&(f=void 0);return o}}};function i1(e){let t=e[0];if(e.length>1){for(const n of e)if(n.type!==vn){t=n;break}}return t}const WT=zT;function a1(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function sl(e,t,n,r,s){const{appear:o,mode:a,persisted:i=!1,onBeforeEnter:l,onEnter:u,onAfterEnter:f,onEnterCancelled:d,onBeforeLeave:h,onLeave:v,onAfterLeave:b,onLeaveCancelled:p,onBeforeAppear:g,onAppear:m,onAfterAppear:y,onAppearCancelled:_}=t,w=String(e.key),S=a1(n,e),C=(T,x)=>{T&&Ir(T,r,9,x)},E=(T,x)=>{const M=x[1];C(T,x),ke(T)?T.every(A=>A.length<=1)&&M():T.length<=1&&M()},k={mode:a,persisted:i,beforeEnter(T){let x=l;if(!n.isMounted)if(o)x=g||l;else return;T[js]&&T[js](!0);const M=S[w];M&&Oo(e,M)&&M.el[js]&&M.el[js](),C(x,[T])},enter(T){let x=u,M=f,A=d;if(!n.isMounted)if(o)x=m||u,M=y||f,A=_||d;else return;let P=!1;const G=T[dc]=V=>{P||(P=!0,V?C(A,[T]):C(M,[T]),k.delayedLeave&&k.delayedLeave(),T[dc]=void 0)};x?E(x,[T,G]):G()},leave(T,x){const M=String(e.key);if(T[dc]&&T[dc](!0),n.isUnmounting)return x();C(h,[T]);let A=!1;const P=T[js]=G=>{A||(A=!0,x(),G?C(p,[T]):C(b,[T]),T[js]=void 0,S[M]===e&&delete S[M])};S[M]=e,v?E(v,[T,P]):P()},clone(T){const x=sl(T,t,n,r,s);return s&&s(x),x}};return k}function Qd(e){if(Pl(e))return e=Ss(e),e.children=null,e}function ig(e){if(!Pl(e))return e1(e.type)&&e.children?i1(e.children):e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&Ke(n.default))return n.default()}}function qo(e,t){e.shapeFlag&6&&e.component?(e.transition=t,qo(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function qp(e,t=!1,n){let r=[],s=0;for(let o=0;o<e.length;o++){let a=e[o];const i=n==null?a.key:String(n)+String(a.key!=null?a.key:o);a.type===We?(a.patchFlag&128&&s++,r=r.concat(qp(a.children,t,i))):(t||a.type!==vn)&&r.push(i!=null?Ss(a,{key:i}):a)}if(s>1)for(let o=0;o<r.length;o++)r[o].patchFlag=-2;return r}/*! #__NO_SIDE_EFFECTS__ */function ee(e,t){return Ke(e)?un({name:e.name},t,{setup:e}):e}function Yp(e){e.ids=[e.ids[0]+e.ids[2]+++\"-\",0,0]}function vu(e,t,n,r,s=!1){if(ke(e)){e.forEach((b,p)=>vu(b,t&&(ke(t)?t[p]:t),n,r,s));return}if(Ri(r)&&!s){r.shapeFlag&512&&r.type.__asyncResolved&&r.component.subTree.component&&vu(e,t,n,r.component.subTree);return}const o=r.shapeFlag&4?nd(r.component):r.el,a=s?null:o,{i,r:l}=e,u=t&&t.r,f=i.refs===Xt?i.refs={}:i.refs,d=i.setupState,h=Dt(d),v=d===Xt?()=>!1:b=>kt(h,b);if(u!=null&&u!==l&&(ze(u)?(f[u]=null,v(u)&&(d[u]=null)):Ft(u)&&(u.value=null)),Ke(l))Ll(l,i,12,[a,f]);else{const b=ze(l),p=Ft(l);if(b||p){const g=()=>{if(e.f){const m=b?v(l)?d[l]:f[l]:l.value;s?ke(m)&&Ip(m,o):ke(m)?m.includes(o)||m.push(o):b?(f[l]=[o],v(l)&&(d[l]=f[l])):(l.value=[o],e.k&&(f[e.k]=l.value))}else b?(f[l]=a,v(l)&&(d[l]=a)):p&&(l.value=a,e.k&&(f[e.k]=a))};a?(g.id=-1,zn(g,n)):g()}}}const ag=e=>e.nodeType===8;Xu().requestIdleCallback;Xu().cancelIdleCallback;function KT(e,t){if(ag(e)&&e.data===\"[\"){let n=1,r=e.nextSibling;for(;r;){if(r.nodeType===1){if(t(r)===!1)break}else if(ag(r))if(r.data===\"]\"){if(--n===0)break}else r.data===\"[\"&&n++;r=r.nextSibling}}else t(e)}const Ri=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function jT(e){Ke(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,hydrate:o,timeout:a,suspensible:i=!0,onError:l}=e;let u=null,f,d=0;const h=()=>(d++,u=null,v()),v=()=>{let b;return u||(b=u=t().catch(p=>{if(p=p instanceof Error?p:new Error(String(p)),l)return new Promise((g,m)=>{l(p,()=>g(h()),()=>m(p),d+1)});throw p}).then(p=>b!==u&&u?u:(p&&(p.__esModule||p[Symbol.toStringTag]===\"Module\")&&(p=p.default),f=p,p)))};return ee({name:\"AsyncComponentWrapper\",__asyncLoader:v,__asyncHydrate(b,p,g){const m=o?()=>{const y=o(g,_=>KT(b,_));y&&(p.bum||(p.bum=[])).push(y)}:g;f?m():v().then(()=>!p.isUnmounted&&m())},get __asyncResolved(){return f},setup(){const b=mn;if(Yp(b),f)return()=>ef(f,b);const p=_=>{u=null,Il(_,b,13,!r)};if(i&&b.suspense||Pi)return v().then(_=>()=>ef(_,b)).catch(_=>(p(_),()=>r?H(r,{error:_}):null));const g=W(!1),m=W(),y=W(!!s);return s&&setTimeout(()=>{y.value=!1},s),a!=null&&setTimeout(()=>{if(!g.value&&!m.value){const _=new Error(`Async component timed out after ${a}ms.`);p(_),m.value=_}},a),v().then(()=>{g.value=!0,b.parent&&Pl(b.parent.vnode)&&b.parent.update()}).catch(_=>{p(_),m.value=_}),()=>{if(g.value&&f)return ef(f,b);if(m.value&&r)return H(r,{error:m.value});if(n&&!y.value)return H(n)}}})}function ef(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,a=H(e,r,s);return a.ref=n,a.ce=o,delete t.vnode.ce,a}const Pl=e=>e.type.__isKeepAlive;function Gp(e,t){c1(e,\"a\",t)}function l1(e,t){c1(e,\"da\",t)}function c1(e,t,n=mn){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Qu(t,r,n),n){let s=n.parent;for(;s&&s.parent;)Pl(s.parent.vnode)&&UT(r,t,n,s),s=s.parent}}function UT(e,t,n,r){const s=Qu(t,e,r,!0);xs(()=>{Ip(r[t],s)},n)}function Qu(e,t,n=mn,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...a)=>{po();const i=Bl(n),l=Ir(t,n,e,a);return i(),vo(),l});return r?s.unshift(o):s.push(o),o}}const Rs=e=>(t,n=mn)=>{(!Pi||e===\"sp\")&&Qu(e,(...r)=>t(...r),n)},Dl=Rs(\"bm\"),it=Rs(\"m\"),Xp=Rs(\"bu\"),os=Rs(\"u\"),Pt=Rs(\"bum\"),xs=Rs(\"um\"),qT=Rs(\"sp\"),YT=Rs(\"rtg\"),GT=Rs(\"rtc\");function XT(e,t=mn){Qu(\"ec\",e,t)}const Jp=\"components\",JT=\"directives\";function ut(e,t){return Zp(Jp,e,!0,t)||e}const u1=Symbol.for(\"v-ndc\");function dt(e){return ze(e)?Zp(Jp,e,!1)||e:e||u1}function ed(e){return Zp(JT,e)}function Zp(e,t,n=!0,r=!1){const s=gn||mn;if(s){const o=s.type;if(e===Jp){const i=D3(o,!1);if(i&&(i===t||i===Yn(t)||i===$l(Yn(t))))return o}const a=lg(s[e]||o[e],t)||lg(s.appContext[e],t);return!a&&r?o:a}}function lg(e,t){return e&&(e[t]||e[Yn(t)]||e[$l(Yn(t))])}function vt(e,t,n,r){let s;const o=n,a=ke(e);if(a||ze(e)){const i=a&&Zs(e);let l=!1;i&&(l=!mr(e),e=Zu(e)),s=new Array(e.length);for(let u=0,f=e.length;u<f;u++)s[u]=t(l?Ln(e[u]):e[u],u,void 0,o)}else if(typeof e==\"number\"){s=new Array(e);for(let i=0;i<e;i++)s[i]=t(i+1,i,void 0,o)}else if(lt(e))if(e[Symbol.iterator])s=Array.from(e,(i,l)=>t(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,u=i.length;l<u;l++){const f=i[l];s[l]=t(e[f],f,l,o)}}else s=[];return s}function _r(e,t){for(let n=0;n<t.length;n++){const r=t[n];if(ke(r))for(let s=0;s<r.length;s++)e[r[s].name]=r[s].fn;else r&&(e[r.name]=r.key?(...s)=>{const o=r.fn(...s);return o&&(o.key=r.key),o}:r.fn)}return e}function ue(e,t,n={},r,s){if(gn.ce||gn.parent&&Ri(gn.parent)&&gn.parent.ce)return t!==\"default\"&&(n.name=t),$(),ve(We,null,[H(\"slot\",n,r&&r())],64);let o=e[t];o&&o._c&&(o._d=!1),$();const a=o&&d1(o(n)),i=n.key||a&&a.key,l=ve(We,{key:(i&&!Lr(i)?i:`_${t}`)+(!a&&r?\"_fb\":\"\")},a||(r?r():[]),a&&e._===1?64:-2);return l.scopeId&&(l.slotScopeIds=[l.scopeId+\"-s\"]),o&&o._c&&(o._d=!0),l}function d1(e){return e.some(t=>Ut(t)?!(t.type===vn||t.type===We&&!d1(t.children)):!0)?e:null}function ZT(e,t){const n={};for(const r in e)n[Ba(r)]=e[r];return n}const th=e=>e?M1(e)?nd(e):th(e.parent):null,Va=un(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>th(e.parent),$root:e=>th(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Qp(e),$forceUpdate:e=>e.f||(e.f=()=>{Up(e.update)}),$nextTick:e=>e.n||(e.n=je.bind(e.proxy)),$watch:e=>y3.bind(e)}),tf=(e,t)=>e!==Xt&&!e.__isScriptSetup&&kt(e,t),QT={get({_:e},t){if(t===\"__v_skip\")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:a,type:i,appContext:l}=e;let u;if(t[0]!==\"$\"){const v=a[t];if(v!==void 0)switch(v){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(tf(r,t))return a[t]=1,r[t];if(s!==Xt&&kt(s,t))return a[t]=2,s[t];if((u=e.propsOptions[0])&&kt(u,t))return a[t]=3,o[t];if(n!==Xt&&kt(n,t))return a[t]=4,n[t];nh&&(a[t]=0)}}const f=Va[t];let d,h;if(f)return t===\"$attrs\"&&$n(e.attrs,\"get\",\"\"),f(e);if((d=i.__cssModules)&&(d=d[t]))return d;if(n!==Xt&&kt(n,t))return a[t]=4,n[t];if(h=l.config.globalProperties,kt(h,t))return h[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return tf(s,t)?(s[t]=n,!0):r!==Xt&&kt(r,t)?(r[t]=n,!0):kt(e.props,t)||t[0]===\"$\"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},a){let i;return!!n[a]||e!==Xt&&kt(e,a)||tf(t,a)||(i=o[0])&&kt(i,a)||kt(r,a)||kt(Va,a)||kt(s.config.globalProperties,a)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:kt(n,\"value\")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function an(){return f1().slots}function mo(){return f1().attrs}function f1(){const e=ct();return e.setupContext||(e.setupContext=$1(e))}function cg(e){return ke(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let nh=!0;function e3(e){const t=Qp(e),n=e.proxy,r=e.ctx;nh=!1,t.beforeCreate&&ug(t.beforeCreate,e,\"bc\");const{data:s,computed:o,methods:a,watch:i,provide:l,inject:u,created:f,beforeMount:d,mounted:h,beforeUpdate:v,updated:b,activated:p,deactivated:g,beforeDestroy:m,beforeUnmount:y,destroyed:_,unmounted:w,render:S,renderTracked:C,renderTriggered:E,errorCaptured:k,serverPrefetch:T,expose:x,inheritAttrs:M,components:A,directives:P,filters:G}=t;if(u&&t3(u,r,null),a)for(const j in a){const F=a[j];Ke(F)&&(r[j]=F.bind(n))}if(s){const j=s.call(n,n);lt(j)&&(e.data=St(j))}if(nh=!0,o)for(const j in o){const F=o[j],R=Ke(F)?F.bind(n,n):Ke(F.get)?F.get.bind(n,n):Mt,B=!Ke(F)&&Ke(F.set)?F.set.bind(n):Mt,N=O({get:R,set:B});Object.defineProperty(r,j,{enumerable:!0,configurable:!0,get:()=>N.value,set:U=>N.value=U})}if(i)for(const j in i)h1(i[j],r,n,j);if(l){const j=Ke(l)?l.call(n):l;Reflect.ownKeys(j).forEach(F=>{pt(F,j[F])})}f&&ug(f,e,\"c\");function I(j,F){ke(F)?F.forEach(R=>j(R.bind(n))):F&&j(F.bind(n))}if(I(Dl,d),I(it,h),I(Xp,v),I(os,b),I(Gp,p),I(l1,g),I(XT,k),I(GT,C),I(YT,E),I(Pt,y),I(xs,w),I(qT,T),ke(x))if(x.length){const j=e.exposed||(e.exposed={});x.forEach(F=>{Object.defineProperty(j,F,{get:()=>n[F],set:R=>n[F]=R})})}else e.exposed||(e.exposed={});S&&e.render===Mt&&(e.render=S),M!=null&&(e.inheritAttrs=M),A&&(e.components=A),P&&(e.directives=P),T&&Yp(e)}function t3(e,t,n=Mt){ke(e)&&(e=rh(e));for(const r in e){const s=e[r];let o;lt(s)?\"default\"in s?o=Fe(s.from||r,s.default,!0):o=Fe(s.from||r):o=Fe(s),Ft(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:a=>o.value=a}):t[r]=o}}function ug(e,t,n){Ir(ke(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function h1(e,t,n,r){let s=r.includes(\".\")?E1(n,r):()=>n[r];if(ze(e)){const o=t[e];Ke(o)&&ye(s,o)}else if(Ke(e))ye(s,e.bind(n));else if(lt(e))if(ke(e))e.forEach(o=>h1(o,t,n,r));else{const o=Ke(e.handler)?e.handler.bind(n):t[e.handler];Ke(o)&&ye(s,o,e)}}function Qp(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:a}}=e.appContext,i=o.get(t);let l;return i?l=i:!s.length&&!n&&!r?l=t:(l={},s.length&&s.forEach(u=>mu(l,u,a,!0)),mu(l,t,a)),lt(t)&&o.set(t,l),l}function mu(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&mu(e,o,n,!0),s&&s.forEach(a=>mu(e,a,n,!0));for(const a in t)if(!(r&&a===\"expose\")){const i=n3[a]||n&&n[a];e[a]=i?i(e[a],t[a]):t[a]}return e}const n3={data:dg,props:fg,emits:fg,methods:Aa,computed:Aa,beforeCreate:Vn,created:Vn,beforeMount:Vn,mounted:Vn,beforeUpdate:Vn,updated:Vn,beforeDestroy:Vn,beforeUnmount:Vn,destroyed:Vn,unmounted:Vn,activated:Vn,deactivated:Vn,errorCaptured:Vn,serverPrefetch:Vn,components:Aa,directives:Aa,watch:s3,provide:dg,inject:r3};function dg(e,t){return t?e?function(){return un(Ke(e)?e.call(this,this):e,Ke(t)?t.call(this,this):t)}:t:e}function r3(e,t){return Aa(rh(e),rh(t))}function rh(e){if(ke(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function Vn(e,t){return e?[...new Set([].concat(e,t))]:t}function Aa(e,t){return e?un(Object.create(null),e,t):t}function fg(e,t){return e?ke(e)&&ke(t)?[...new Set([...e,...t])]:un(Object.create(null),cg(e),cg(t??{})):t}function s3(e,t){if(!e)return t;if(!t)return e;const n=un(Object.create(null),e);for(const r in t)n[r]=Vn(e[r],t[r]);return n}function p1(){return{app:null,config:{isNativeTag:XE,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let o3=0;function i3(e,t){return function(r,s=null){Ke(r)||(r=un({},r)),s!=null&&!lt(s)&&(s=null);const o=p1(),a=new WeakSet,i=[];let l=!1;const u=o.app={_uid:o3++,_component:r,_props:s,_container:null,_context:o,_instance:null,version:N3,get config(){return o.config},set config(f){},use(f,...d){return a.has(f)||(f&&Ke(f.install)?(a.add(f),f.install(u,...d)):Ke(f)&&(a.add(f),f(u,...d))),u},mixin(f){return o.mixins.includes(f)||o.mixins.push(f),u},component(f,d){return d?(o.components[f]=d,u):o.components[f]},directive(f,d){return d?(o.directives[f]=d,u):o.directives[f]},mount(f,d,h){if(!l){const v=u._ceVNode||H(r,s);return v.appContext=o,h===!0?h=\"svg\":h===!1&&(h=void 0),d&&t?t(v,f):e(v,f,h),l=!0,u._container=f,f.__vue_app__=u,nd(v.component)}},onUnmount(f){i.push(f)},unmount(){l&&(Ir(i,u._instance,16),e(null,u._container),delete u._container.__vue_app__)},provide(f,d){return o.provides[f]=d,u},runWithContext(f){const d=Ho;Ho=u;try{return f()}finally{Ho=d}}};return u}}let Ho=null;function pt(e,t){if(mn){let n=mn.provides;const r=mn.parent&&mn.parent.provides;r===n&&(n=mn.provides=Object.create(r)),n[e]=t}}function Fe(e,t,n=!1){const r=mn||gn;if(r||Ho){const s=Ho?Ho._context.provides:r?r.parent==null?r.vnode.appContext&&r.vnode.appContext.provides:r.parent.provides:void 0;if(s&&e in s)return s[e];if(arguments.length>1)return n&&Ke(t)?t.call(r&&r.proxy):t}}function a3(){return!!(mn||gn||Ho)}const v1={},m1=()=>Object.create(v1),g1=e=>Object.getPrototypeOf(e)===v1;function l3(e,t,n,r=!1){const s={},o=m1();e.propsDefaults=Object.create(null),_1(e,t,s,o);for(const a in e.propsOptions[0])a in s||(s[a]=void 0);n?e.props=r?s:Wp(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function c3(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:a}}=e,i=Dt(s),[l]=e.propsOptions;let u=!1;if((r||a>0)&&!(a&16)){if(a&8){const f=e.vnode.dynamicProps;for(let d=0;d<f.length;d++){let h=f[d];if(td(e.emitsOptions,h))continue;const v=t[h];if(l)if(kt(o,h))v!==o[h]&&(o[h]=v,u=!0);else{const b=Yn(h);s[b]=sh(l,i,b,v,e,!1)}else v!==o[h]&&(o[h]=v,u=!0)}}}else{_1(e,t,s,o)&&(u=!0);let f;for(const d in i)(!t||!kt(t,d)&&((f=Ts(d))===d||!kt(t,f)))&&(l?n&&(n[d]!==void 0||n[f]!==void 0)&&(s[d]=sh(l,i,d,void 0,e,!0)):delete s[d]);if(o!==i)for(const d in o)(!t||!kt(t,d))&&(delete o[d],u=!0)}u&&gs(e.attrs,\"set\",\"\")}function _1(e,t,n,r){const[s,o]=e.propsOptions;let a=!1,i;if(t)for(let l in t){if(Da(l))continue;const u=t[l];let f;s&&kt(s,f=Yn(l))?!o||!o.includes(f)?n[f]=u:(i||(i={}))[f]=u:td(e.emitsOptions,l)||(!(l in r)||u!==r[l])&&(r[l]=u,a=!0)}if(o){const l=Dt(n),u=i||Xt;for(let f=0;f<o.length;f++){const d=o[f];n[d]=sh(s,l,d,u[d],e,!kt(u,d))}}return a}function sh(e,t,n,r,s,o){const a=e[n];if(a!=null){const i=kt(a,\"default\");if(i&&r===void 0){const l=a.default;if(a.type!==Function&&!a.skipFactory&&Ke(l)){const{propsDefaults:u}=s;if(n in u)r=u[n];else{const f=Bl(s);r=u[n]=l.call(null,t),f()}}else r=l;s.ce&&s.ce._setProp(n,r)}a[0]&&(o&&!i?r=!1:a[1]&&(r===\"\"||r===Ts(n))&&(r=!0))}return r}const u3=new WeakMap;function b1(e,t,n=!1){const r=n?u3:t.propsCache,s=r.get(e);if(s)return s;const o=e.props,a={},i=[];let l=!1;if(!Ke(e)){const f=d=>{l=!0;const[h,v]=b1(d,t,!0);un(a,h),v&&i.push(...v)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!l)return lt(e)&&r.set(e,ki),ki;if(ke(o))for(let f=0;f<o.length;f++){const d=Yn(o[f]);hg(d)&&(a[d]=Xt)}else if(o)for(const f in o){const d=Yn(f);if(hg(d)){const h=o[f],v=a[d]=ke(h)||Ke(h)?{type:h}:un({},h),b=v.type;let p=!1,g=!0;if(ke(b))for(let m=0;m<b.length;++m){const y=b[m],_=Ke(y)&&y.name;if(_===\"Boolean\"){p=!0;break}else _===\"String\"&&(g=!1)}else p=Ke(b)&&b.name===\"Boolean\";v[0]=p,v[1]=g,(p||kt(v,\"default\"))&&i.push(d)}}const u=[a,i];return lt(e)&&r.set(e,u),u}function hg(e){return e[0]!==\"$\"&&!Da(e)}const y1=e=>e[0]===\"_\"||e===\"$stable\",ev=e=>ke(e)?e.map(Yr):[Yr(e)],d3=(e,t,n)=>{if(t._n)return t;const r=q((...s)=>ev(t(...s)),n);return r._c=!1,r},w1=(e,t,n)=>{const r=e._ctx;for(const s in e){if(y1(s))continue;const o=e[s];if(Ke(o))t[s]=d3(s,o,r);else if(o!=null){const a=ev(o);t[s]=()=>a}}},S1=(e,t)=>{const n=ev(t);e.slots.default=()=>n},C1=(e,t,n)=>{for(const r in t)(n||r!==\"_\")&&(e[r]=t[r])},f3=(e,t,n)=>{const r=e.slots=m1();if(e.vnode.shapeFlag&32){const s=t._;s?(C1(r,t,n),n&&ky(r,\"_\",s,!0)):w1(t,r)}else t&&S1(e,t)},h3=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,a=Xt;if(r.shapeFlag&32){const i=t._;i?n&&i===1?o=!1:C1(s,t,n):(o=!t.$stable,w1(t,s)),a=t}else t&&(S1(e,t),a={default:1});if(o)for(const i in s)!y1(i)&&a[i]==null&&delete s[i]},zn=R3;function p3(e){return v3(e)}function v3(e,t){const n=Xu();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:a,createText:i,createComment:l,setText:u,setElementText:f,parentNode:d,nextSibling:h,setScopeId:v=Mt,insertStaticContent:b}=e,p=(L,Q,se,ge=null,ae=null,_e=null,me=void 0,Ce=null,Te=!!Q.dynamicChildren)=>{if(L===Q)return;L&&!Oo(L,Q)&&(ge=K(L),U(L,ae,_e,!0),L=null),Q.patchFlag===-2&&(Te=!1,Q.dynamicChildren=null);const{type:Se,ref:Ie,shapeFlag:be}=Q;switch(Se){case sa:g(L,Q,se,ge);break;case vn:m(L,Q,se,ge);break;case Lc:L==null&&y(Q,se,ge,me);break;case We:A(L,Q,se,ge,ae,_e,me,Ce,Te);break;default:be&1?S(L,Q,se,ge,ae,_e,me,Ce,Te):be&6?P(L,Q,se,ge,ae,_e,me,Ce,Te):(be&64||be&128)&&Se.process(L,Q,se,ge,ae,_e,me,Ce,Te,oe)}Ie!=null&&ae&&vu(Ie,L&&L.ref,_e,Q||L,!Q)},g=(L,Q,se,ge)=>{if(L==null)r(Q.el=i(Q.children),se,ge);else{const ae=Q.el=L.el;Q.children!==L.children&&u(ae,Q.children)}},m=(L,Q,se,ge)=>{L==null?r(Q.el=l(Q.children||\"\"),se,ge):Q.el=L.el},y=(L,Q,se,ge)=>{[L.el,L.anchor]=b(L.children,Q,se,ge,L.el,L.anchor)},_=({el:L,anchor:Q},se,ge)=>{let ae;for(;L&&L!==Q;)ae=h(L),r(L,se,ge),L=ae;r(Q,se,ge)},w=({el:L,anchor:Q})=>{let se;for(;L&&L!==Q;)se=h(L),s(L),L=se;s(Q)},S=(L,Q,se,ge,ae,_e,me,Ce,Te)=>{Q.type===\"svg\"?me=\"svg\":Q.type===\"math\"&&(me=\"mathml\"),L==null?C(Q,se,ge,ae,_e,me,Ce,Te):T(L,Q,ae,_e,me,Ce,Te)},C=(L,Q,se,ge,ae,_e,me,Ce)=>{let Te,Se;const{props:Ie,shapeFlag:be,transition:Ae,dirs:qe}=L;if(Te=L.el=a(L.type,_e,Ie&&Ie.is,Ie),be&8?f(Te,L.children):be&16&&k(L.children,Te,null,ge,ae,nf(L,_e),me,Ce),qe&&So(L,null,ge,\"created\"),E(Te,L,L.scopeId,me,ge),Ie){for(const et in Ie)et!==\"value\"&&!Da(et)&&o(Te,et,null,Ie[et],_e,ge);\"value\"in Ie&&o(Te,\"value\",null,Ie.value,_e),(Se=Ie.onVnodeBeforeMount)&&Kr(Se,ge,L)}qe&&So(L,null,ge,\"beforeMount\");const tt=m3(ae,Ae);tt&&Ae.beforeEnter(Te),r(Te,Q,se),((Se=Ie&&Ie.onVnodeMounted)||tt||qe)&&zn(()=>{Se&&Kr(Se,ge,L),tt&&Ae.enter(Te),qe&&So(L,null,ge,\"mounted\")},ae)},E=(L,Q,se,ge,ae)=>{if(se&&v(L,se),ge)for(let _e=0;_e<ge.length;_e++)v(L,ge[_e]);if(ae){let _e=ae.subTree;if(Q===_e||R1(_e.type)&&(_e.ssContent===Q||_e.ssFallback===Q)){const me=ae.vnode;E(L,me,me.scopeId,me.slotScopeIds,ae.parent)}}},k=(L,Q,se,ge,ae,_e,me,Ce,Te=0)=>{for(let Se=Te;Se<L.length;Se++){const Ie=L[Se]=Ce?Us(L[Se]):Yr(L[Se]);p(null,Ie,Q,se,ge,ae,_e,me,Ce)}},T=(L,Q,se,ge,ae,_e,me)=>{const Ce=Q.el=L.el;let{patchFlag:Te,dynamicChildren:Se,dirs:Ie}=Q;Te|=L.patchFlag&16;const be=L.props||Xt,Ae=Q.props||Xt;let qe;if(se&&Co(se,!1),(qe=Ae.onVnodeBeforeUpdate)&&Kr(qe,se,Q,L),Ie&&So(Q,L,se,\"beforeUpdate\"),se&&Co(se,!0),(be.innerHTML&&Ae.innerHTML==null||be.textContent&&Ae.textContent==null)&&f(Ce,\"\"),Se?x(L.dynamicChildren,Se,Ce,se,ge,nf(Q,ae),_e):me||F(L,Q,Ce,null,se,ge,nf(Q,ae),_e,!1),Te>0){if(Te&16)M(Ce,be,Ae,se,ae);else if(Te&2&&be.class!==Ae.class&&o(Ce,\"class\",null,Ae.class,ae),Te&4&&o(Ce,\"style\",be.style,Ae.style,ae),Te&8){const tt=Q.dynamicProps;for(let et=0;et<tt.length;et++){const at=tt[et],ht=be[at],Ct=Ae[at];(Ct!==ht||at===\"value\")&&o(Ce,at,ht,Ct,ae,se)}}Te&1&&L.children!==Q.children&&f(Ce,Q.children)}else!me&&Se==null&&M(Ce,be,Ae,se,ae);((qe=Ae.onVnodeUpdated)||Ie)&&zn(()=>{qe&&Kr(qe,se,Q,L),Ie&&So(Q,L,se,\"updated\")},ge)},x=(L,Q,se,ge,ae,_e,me)=>{for(let Ce=0;Ce<Q.length;Ce++){const Te=L[Ce],Se=Q[Ce],Ie=Te.el&&(Te.type===We||!Oo(Te,Se)||Te.shapeFlag&70)?d(Te.el):se;p(Te,Se,Ie,null,ge,ae,_e,me,!0)}},M=(L,Q,se,ge,ae)=>{if(Q!==se){if(Q!==Xt)for(const _e in Q)!Da(_e)&&!(_e in se)&&o(L,_e,Q[_e],null,ae,ge);for(const _e in se){if(Da(_e))continue;const me=se[_e],Ce=Q[_e];me!==Ce&&_e!==\"value\"&&o(L,_e,Ce,me,ae,ge)}\"value\"in se&&o(L,\"value\",Q.value,se.value,ae)}},A=(L,Q,se,ge,ae,_e,me,Ce,Te)=>{const Se=Q.el=L?L.el:i(\"\"),Ie=Q.anchor=L?L.anchor:i(\"\");let{patchFlag:be,dynamicChildren:Ae,slotScopeIds:qe}=Q;qe&&(Ce=Ce?Ce.concat(qe):qe),L==null?(r(Se,se,ge),r(Ie,se,ge),k(Q.children||[],se,Ie,ae,_e,me,Ce,Te)):be>0&&be&64&&Ae&&L.dynamicChildren?(x(L.dynamicChildren,Ae,se,ae,_e,me,Ce),(Q.key!=null||ae&&Q===ae.subTree)&&tv(L,Q,!0)):F(L,Q,se,Ie,ae,_e,me,Ce,Te)},P=(L,Q,se,ge,ae,_e,me,Ce,Te)=>{Q.slotScopeIds=Ce,L==null?Q.shapeFlag&512?ae.ctx.activate(Q,se,ge,me,Te):G(Q,se,ge,ae,_e,me,Te):V(L,Q,Te)},G=(L,Q,se,ge,ae,_e,me)=>{const Ce=L.component=$3(L,ge,ae);if(Pl(L)&&(Ce.ctx.renderer=oe),L3(Ce,!1,me),Ce.asyncDep){if(ae&&ae.registerDep(Ce,I,me),!L.el){const Te=Ce.subTree=H(vn);m(null,Te,Q,se)}}else I(Ce,L,Q,se,ae,_e,me)},V=(L,Q,se)=>{const ge=Q.component=L.component;if(E3(L,Q,se))if(ge.asyncDep&&!ge.asyncResolved){j(ge,Q,se);return}else ge.next=Q,ge.update();else Q.el=L.el,ge.vnode=Q},I=(L,Q,se,ge,ae,_e,me)=>{const Ce=()=>{if(L.isMounted){let{next:be,bu:Ae,u:qe,parent:tt,vnode:et}=L;{const $e=k1(L);if($e){be&&(be.el=et.el,j(L,be,me)),$e.asyncDep.then(()=>{L.isUnmounted||Ce()});return}}let at=be,ht;Co(L,!1),be?(be.el=et.el,j(L,be,me)):be=et,Ae&&Ac(Ae),(ht=be.props&&be.props.onVnodeBeforeUpdate)&&Kr(ht,tt,be,et),Co(L,!0);const Ct=rf(L),fe=L.subTree;L.subTree=Ct,p(fe,Ct,d(fe.el),K(fe),L,ae,_e),be.el=Ct.el,at===null&&T3(L,Ct.el),qe&&zn(qe,ae),(ht=be.props&&be.props.onVnodeUpdated)&&zn(()=>Kr(ht,tt,be,et),ae)}else{let be;const{el:Ae,props:qe}=Q,{bm:tt,m:et,parent:at,root:ht,type:Ct}=L,fe=Ri(Q);if(Co(L,!1),tt&&Ac(tt),!fe&&(be=qe&&qe.onVnodeBeforeMount)&&Kr(be,at,Q),Co(L,!0),Ae&&Y){const $e=()=>{L.subTree=rf(L),Y(Ae,L.subTree,L,ae,null)};fe&&Ct.__asyncHydrate?Ct.__asyncHydrate(Ae,L,$e):$e()}else{ht.ce&&ht.ce._injectChildStyle(Ct);const $e=L.subTree=rf(L);p(null,$e,se,ge,L,ae,_e),Q.el=$e.el}if(et&&zn(et,ae),!fe&&(be=qe&&qe.onVnodeMounted)){const $e=Q;zn(()=>Kr(be,at,$e),ae)}(Q.shapeFlag&256||at&&Ri(at.vnode)&&at.vnode.shapeFlag&256)&&L.a&&zn(L.a,ae),L.isMounted=!0,Q=se=ge=null}};L.scope.on();const Te=L.effect=new My(Ce);L.scope.off();const Se=L.update=Te.run.bind(Te),Ie=L.job=Te.runIfDirty.bind(Te);Ie.i=L,Ie.id=L.uid,Te.scheduler=()=>Up(Ie),Co(L,!0),Se()},j=(L,Q,se)=>{Q.component=L;const ge=L.vnode.props;L.vnode=Q,L.next=null,c3(L,Q.props,ge,se),h3(L,Q.children,se),po(),ng(L),vo()},F=(L,Q,se,ge,ae,_e,me,Ce,Te=!1)=>{const Se=L&&L.children,Ie=L?L.shapeFlag:0,be=Q.children,{patchFlag:Ae,shapeFlag:qe}=Q;if(Ae>0){if(Ae&128){B(Se,be,se,ge,ae,_e,me,Ce,Te);return}else if(Ae&256){R(Se,be,se,ge,ae,_e,me,Ce,Te);return}}qe&8?(Ie&16&&pe(Se,ae,_e),be!==Se&&f(se,be)):Ie&16?qe&16?B(Se,be,se,ge,ae,_e,me,Ce,Te):pe(Se,ae,_e,!0):(Ie&8&&f(se,\"\"),qe&16&&k(be,se,ge,ae,_e,me,Ce,Te))},R=(L,Q,se,ge,ae,_e,me,Ce,Te)=>{L=L||ki,Q=Q||ki;const Se=L.length,Ie=Q.length,be=Math.min(Se,Ie);let Ae;for(Ae=0;Ae<be;Ae++){const qe=Q[Ae]=Te?Us(Q[Ae]):Yr(Q[Ae]);p(L[Ae],qe,se,null,ae,_e,me,Ce,Te)}Se>Ie?pe(L,ae,_e,!0,!1,be):k(Q,se,ge,ae,_e,me,Ce,Te,be)},B=(L,Q,se,ge,ae,_e,me,Ce,Te)=>{let Se=0;const Ie=Q.length;let be=L.length-1,Ae=Ie-1;for(;Se<=be&&Se<=Ae;){const qe=L[Se],tt=Q[Se]=Te?Us(Q[Se]):Yr(Q[Se]);if(Oo(qe,tt))p(qe,tt,se,null,ae,_e,me,Ce,Te);else break;Se++}for(;Se<=be&&Se<=Ae;){const qe=L[be],tt=Q[Ae]=Te?Us(Q[Ae]):Yr(Q[Ae]);if(Oo(qe,tt))p(qe,tt,se,null,ae,_e,me,Ce,Te);else break;be--,Ae--}if(Se>be){if(Se<=Ae){const qe=Ae+1,tt=qe<Ie?Q[qe].el:ge;for(;Se<=Ae;)p(null,Q[Se]=Te?Us(Q[Se]):Yr(Q[Se]),se,tt,ae,_e,me,Ce,Te),Se++}}else if(Se>Ae)for(;Se<=be;)U(L[Se],ae,_e,!0),Se++;else{const qe=Se,tt=Se,et=new Map;for(Se=tt;Se<=Ae;Se++){const ne=Q[Se]=Te?Us(Q[Se]):Yr(Q[Se]);ne.key!=null&&et.set(ne.key,Se)}let at,ht=0;const Ct=Ae-tt+1;let fe=!1,$e=0;const ce=new Array(Ct);for(Se=0;Se<Ct;Se++)ce[Se]=0;for(Se=qe;Se<=be;Se++){const ne=L[Se];if(ht>=Ct){U(ne,ae,_e,!0);continue}let Pe;if(ne.key!=null)Pe=et.get(ne.key);else for(at=tt;at<=Ae;at++)if(ce[at-tt]===0&&Oo(ne,Q[at])){Pe=at;break}Pe===void 0?U(ne,ae,_e,!0):(ce[Pe-tt]=Se+1,Pe>=$e?$e=Pe:fe=!0,p(ne,Q[Pe],se,null,ae,_e,me,Ce,Te),ht++)}const Re=fe?g3(ce):ki;for(at=Re.length-1,Se=Ct-1;Se>=0;Se--){const ne=tt+Se,Pe=Q[ne],rt=ne+1<Ie?Q[ne+1].el:ge;ce[Se]===0?p(null,Pe,se,rt,ae,_e,me,Ce,Te):fe&&(at<0||Se!==Re[at]?N(Pe,se,rt,2):at--)}}},N=(L,Q,se,ge,ae=null)=>{const{el:_e,type:me,transition:Ce,children:Te,shapeFlag:Se}=L;if(Se&6){N(L.component.subTree,Q,se,ge);return}if(Se&128){L.suspense.move(Q,se,ge);return}if(Se&64){me.move(L,Q,se,oe);return}if(me===We){r(_e,Q,se);for(let be=0;be<Te.length;be++)N(Te[be],Q,se,ge);r(L.anchor,Q,se);return}if(me===Lc){_(L,Q,se);return}if(ge!==2&&Se&1&&Ce)if(ge===0)Ce.beforeEnter(_e),r(_e,Q,se),zn(()=>Ce.enter(_e),ae);else{const{leave:be,delayLeave:Ae,afterLeave:qe}=Ce,tt=()=>r(_e,Q,se),et=()=>{be(_e,()=>{tt(),qe&&qe()})};Ae?Ae(_e,tt,et):et()}else r(_e,Q,se)},U=(L,Q,se,ge=!1,ae=!1)=>{const{type:_e,props:me,ref:Ce,children:Te,dynamicChildren:Se,shapeFlag:Ie,patchFlag:be,dirs:Ae,cacheIndex:qe}=L;if(be===-2&&(ae=!1),Ce!=null&&vu(Ce,null,se,L,!0),qe!=null&&(Q.renderCache[qe]=void 0),Ie&256){Q.ctx.deactivate(L);return}const tt=Ie&1&&Ae,et=!Ri(L);let at;if(et&&(at=me&&me.onVnodeBeforeUnmount)&&Kr(at,Q,L),Ie&6)le(L.component,se,ge);else{if(Ie&128){L.suspense.unmount(se,ge);return}tt&&So(L,null,Q,\"beforeUnmount\"),Ie&64?L.type.remove(L,Q,se,oe,ge):Se&&!Se.hasOnce&&(_e!==We||be>0&&be&64)?pe(Se,Q,se,!1,!0):(_e===We&&be&384||!ae&&Ie&16)&&pe(Te,Q,se),ge&&J(L)}(et&&(at=me&&me.onVnodeUnmounted)||tt)&&zn(()=>{at&&Kr(at,Q,L),tt&&So(L,null,Q,\"unmounted\")},se)},J=L=>{const{type:Q,el:se,anchor:ge,transition:ae}=L;if(Q===We){re(se,ge);return}if(Q===Lc){w(L);return}const _e=()=>{s(se),ae&&!ae.persisted&&ae.afterLeave&&ae.afterLeave()};if(L.shapeFlag&1&&ae&&!ae.persisted){const{leave:me,delayLeave:Ce}=ae,Te=()=>me(se,_e);Ce?Ce(L.el,_e,Te):Te()}else _e()},re=(L,Q)=>{let se;for(;L!==Q;)se=h(L),s(L),L=se;s(Q)},le=(L,Q,se)=>{const{bum:ge,scope:ae,job:_e,subTree:me,um:Ce,m:Te,a:Se}=L;pg(Te),pg(Se),ge&&Ac(ge),ae.stop(),_e&&(_e.flags|=8,U(me,L,Q,se)),Ce&&zn(Ce,Q),zn(()=>{L.isUnmounted=!0},Q),Q&&Q.pendingBranch&&!Q.isUnmounted&&L.asyncDep&&!L.asyncResolved&&L.suspenseId===Q.pendingId&&(Q.deps--,Q.deps===0&&Q.resolve())},pe=(L,Q,se,ge=!1,ae=!1,_e=0)=>{for(let me=_e;me<L.length;me++)U(L[me],Q,se,ge,ae)},K=L=>{if(L.shapeFlag&6)return K(L.component.subTree);if(L.shapeFlag&128)return L.suspense.next();const Q=h(L.anchor||L.el),se=Q&&Q[Qy];return se?h(se):Q};let z=!1;const te=(L,Q,se)=>{L==null?Q._vnode&&U(Q._vnode,null,null,!0):p(Q._vnode||null,L,Q,null,null,null,se),Q._vnode=L,z||(z=!0,ng(),Xy(),z=!1)},oe={p,um:U,m:N,r:J,mt:G,mc:k,pc:F,pbc:x,n:K,o:e};let he,Y;return{render:te,hydrate:he,createApp:i3(te,he)}}function nf({type:e,props:t},n){return n===\"svg\"&&e===\"foreignObject\"||n===\"mathml\"&&e===\"annotation-xml\"&&t&&t.encoding&&t.encoding.includes(\"html\")?void 0:n}function Co({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function m3(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function tv(e,t,n=!1){const r=e.children,s=t.children;if(ke(r)&&ke(s))for(let o=0;o<r.length;o++){const a=r[o];let i=s[o];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=s[o]=Us(s[o]),i.el=a.el),!n&&i.patchFlag!==-2&&tv(a,i)),i.type===sa&&(i.el=a.el)}}function g3(e){const t=e.slice(),n=[0];let r,s,o,a,i;const l=e.length;for(r=0;r<l;r++){const u=e[r];if(u!==0){if(s=n[n.length-1],e[s]<u){t[r]=s,n.push(r);continue}for(o=0,a=n.length-1;o<a;)i=o+a>>1,e[n[i]]<u?o=i+1:a=i;u<e[n[o]]&&(o>0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,a=n[o-1];o-- >0;)n[o]=a,a=t[a];return n}function k1(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:k1(t)}function pg(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const _3=Symbol.for(\"v-scx\"),b3=()=>Fe(_3);function En(e,t){return nv(e,null,t)}function ye(e,t,n){return nv(e,t,n)}function nv(e,t,n=Xt){const{immediate:r,deep:s,flush:o,once:a}=n,i=un({},n),l=t&&r||!t&&o!==\"post\";let u;if(Pi){if(o===\"sync\"){const v=b3();u=v.__watcherHandles||(v.__watcherHandles=[])}else if(!l){const v=()=>{};return v.stop=Mt,v.resume=Mt,v.pause=Mt,v}}const f=mn;i.call=(v,b,p)=>Ir(v,f,b,p);let d=!1;o===\"post\"?i.scheduler=v=>{zn(v,f&&f.suspense)}:o!==\"sync\"&&(d=!0,i.scheduler=(v,b)=>{b?v():Up(v)}),i.augmentJob=v=>{t&&(v.flags|=4),d&&(v.flags|=2,f&&(v.id=f.uid,v.i=f))};const h=BT(e,t,i);return Pi&&(u?u.push(h):l&&h()),h}function y3(e,t,n){const r=this.proxy,s=ze(e)?e.includes(\".\")?E1(r,e):()=>r[e]:e.bind(r,r);let o;Ke(t)?o=t:(o=t.handler,n=t);const a=Bl(this),i=nv(s,o.bind(r),n);return a(),i}function E1(e,t){const n=t.split(\".\");return()=>{let r=e;for(let s=0;s<n.length&&r;s++)r=r[n[s]];return r}}const w3=(e,t)=>t===\"modelValue\"||t===\"model-value\"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Yn(t)}Modifiers`]||e[`${Ts(t)}Modifiers`];function S3(e,t,...n){if(e.isUnmounted)return;const r=e.vnode.props||Xt;let s=n;const o=t.startsWith(\"update:\"),a=o&&w3(r,t.slice(7));a&&(a.trim&&(s=n.map(f=>ze(f)?f.trim():f)),a.number&&(s=n.map(Gf)));let i,l=r[i=Ba(t)]||r[i=Ba(Yn(t))];!l&&o&&(l=r[i=Ba(Ts(t))]),l&&Ir(l,e,6,s);const u=r[i+\"Once\"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,Ir(u,e,6,s)}}function T1(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let a={},i=!1;if(!Ke(e)){const l=u=>{const f=T1(u,t,!0);f&&(i=!0,un(a,f))};!n&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!o&&!i?(lt(e)&&r.set(e,null),null):(ke(o)?o.forEach(l=>a[l]=null):un(a,o),lt(e)&&r.set(e,a),a)}function td(e,t){return!e||!qu(t)?!1:(t=t.slice(2).replace(/Once$/,\"\"),kt(e,t[0].toLowerCase()+t.slice(1))||kt(e,Ts(t))||kt(e,t))}function rf(e){const{type:t,vnode:n,proxy:r,withProxy:s,propsOptions:[o],slots:a,attrs:i,emit:l,render:u,renderCache:f,props:d,data:h,setupState:v,ctx:b,inheritAttrs:p}=e,g=pu(e);let m,y;try{if(n.shapeFlag&4){const w=s||r,S=w;m=Yr(u.call(S,w,f,d,v,h,b)),y=i}else{const w=t;m=Yr(w.length>1?w(d,{attrs:i,slots:a,emit:l}):w(d,null)),y=t.props?i:C3(i)}}catch(w){za.length=0,Il(w,e,1),m=H(vn)}let _=m;if(y&&p!==!1){const w=Object.keys(y),{shapeFlag:S}=_;w.length&&S&7&&(o&&w.some(Lp)&&(y=k3(y,o)),_=Ss(_,y,!1,!0))}return n.dirs&&(_=Ss(_,null,!1,!0),_.dirs=_.dirs?_.dirs.concat(n.dirs):n.dirs),n.transition&&qo(_,n.transition),m=_,pu(g),m}const C3=e=>{let t;for(const n in e)(n===\"class\"||n===\"style\"||qu(n))&&((t||(t={}))[n]=e[n]);return t},k3=(e,t)=>{const n={};for(const r in e)(!Lp(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function E3(e,t,n){const{props:r,children:s,component:o}=e,{props:a,children:i,patchFlag:l}=t,u=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&l>=0){if(l&1024)return!0;if(l&16)return r?vg(r,a,u):!!a;if(l&8){const f=t.dynamicProps;for(let d=0;d<f.length;d++){const h=f[d];if(a[h]!==r[h]&&!td(u,h))return!0}}}else return(s||i)&&(!i||!i.$stable)?!0:r===a?!1:r?a?vg(r,a,u):!0:!!a;return!1}function vg(e,t,n){const r=Object.keys(t);if(r.length!==Object.keys(e).length)return!0;for(let s=0;s<r.length;s++){const o=r[s];if(t[o]!==e[o]&&!td(n,o))return!0}return!1}function T3({vnode:e,parent:t},n){for(;t;){const r=t.subTree;if(r.suspense&&r.suspense.activeBranch===e&&(r.el=e.el),r===e)(e=t.vnode).el=n,t=t.parent;else break}}const R1=e=>e.__isSuspense;function R3(e,t){t&&t.pendingBranch?ke(e)?t.effects.push(...e):t.effects.push(e):Gy(e)}const We=Symbol.for(\"v-fgt\"),sa=Symbol.for(\"v-txt\"),vn=Symbol.for(\"v-cmt\"),Lc=Symbol.for(\"v-stc\"),za=[];let or=null;function $(e=!1){za.push(or=e?null:[])}function x3(){za.pop(),or=za[za.length-1]||null}let ol=1;function mg(e,t=!1){ol+=e,e<0&&or&&t&&(or.hasOnce=!0)}function x1(e){return e.dynamicChildren=ol>0?or||ki:null,x3(),ol>0&&or&&or.push(e),e}function X(e,t,n,r,s,o){return x1(Z(e,t,n,r,s,o,!0))}function ve(e,t,n,r,s){return x1(H(e,t,n,r,s,!0))}function Ut(e){return e?e.__v_isVNode===!0:!1}function Oo(e,t){return e.type===t.type&&e.key===t.key}const O1=({key:e})=>e??null,Ic=({ref:e,ref_key:t,ref_for:n})=>(typeof e==\"number\"&&(e=\"\"+e),e!=null?ze(e)||Ft(e)||Ke(e)?{i:gn,r:e,k:t,f:!!n}:e:null);function Z(e,t=null,n=null,r=0,s=null,o=e===We?0:1,a=!1,i=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&O1(t),ref:t&&Ic(t),scopeId:Zy,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:gn};return i?(rv(l,n),o&128&&e.normalize(l)):n&&(l.shapeFlag|=ze(n)?8:16),ol>0&&!a&&or&&(l.patchFlag>0||o&6)&&l.patchFlag!==32&&or.push(l),l}const H=O3;function O3(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===u1)&&(e=vn),Ut(e)){const i=Ss(e,t,!0);return n&&rv(i,n),ol>0&&!o&&or&&(i.shapeFlag&6?or[or.indexOf(e)]=i:or.push(i)),i.patchFlag=-2,i}if(B3(e)&&(e=e.__vccOpts),t){t=ro(t);let{class:i,style:l}=t;i&&!ze(i)&&(t.class=D(i)),lt(l)&&(jp(l)&&!ke(l)&&(l=un({},l)),t.style=Ue(l))}const a=ze(e)?1:R1(e)?128:e1(e)?64:lt(e)?4:Ke(e)?2:0;return Z(e,t,n,r,s,a,o,!0)}function ro(e){return e?jp(e)||g1(e)?un({},e):e:null}function Ss(e,t,n=!1,r=!1){const{props:s,ref:o,patchFlag:a,children:i,transition:l}=e,u=t?ft(s||{},t):s,f={__v_isVNode:!0,__v_skip:!0,type:e.type,props:u,key:u&&O1(u),ref:t&&t.ref?n&&o?ke(o)?o.concat(Ic(t)):[o,Ic(t)]:Ic(t):o,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==We?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:l,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Ss(e.ssContent),ssFallback:e.ssFallback&&Ss(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return l&&r&&qo(f,l.clone(f)),f}function Ve(e=\" \",t=0){return H(sa,null,e,t)}function de(e=\"\",t=!1){return t?($(),ve(vn,null,e)):H(vn,null,e)}function Yr(e){return e==null||typeof e==\"boolean\"?H(vn):ke(e)?H(We,null,e.slice()):Ut(e)?Us(e):H(sa,null,String(e))}function Us(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Ss(e)}function rv(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(ke(t))n=16;else if(typeof t==\"object\")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),rv(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!g1(t)?t._ctx=gn:s===3&&gn&&(gn.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ke(t)?(t={default:t,_ctx:gn},n=32):(t=String(t),r&64?(n=16,t=[Ve(t)]):n=8);e.children=t,e.shapeFlag|=n}function ft(...e){const t={};for(let n=0;n<e.length;n++){const r=e[n];for(const s in r)if(s===\"class\")t.class!==r.class&&(t.class=D([t.class,r.class]));else if(s===\"style\")t.style=Ue([t.style,r.style]);else if(qu(s)){const o=t[s],a=r[s];a&&o!==a&&!(ke(o)&&o.includes(a))&&(t[s]=o?[].concat(o,a):a)}else s!==\"\"&&(t[s]=r[s])}return t}function Kr(e,t,n,r=null){Ir(e,t,7,[n,r])}const M3=p1();let A3=0;function $3(e,t,n){const r=e.type,s=(t?t.appContext:e.appContext)||M3,o={uid:A3++,vnode:e,type:r,parent:t,appContext:s,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Oy(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(s.provides),ids:t?t.ids:[\"\",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:b1(r,s),emitsOptions:T1(r,s),emit:null,emitted:null,propsDefaults:Xt,inheritAttrs:r.inheritAttrs,ctx:Xt,data:Xt,props:Xt,attrs:Xt,slots:Xt,refs:Xt,setupState:Xt,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return o.ctx={_:o},o.root=t?t.root:o,o.emit=S3.bind(null,o),e.ce&&e.ce(o),o}let mn=null;const ct=()=>mn||gn;let gu,oh;{const e=Xu(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(a=>a(o)):s[0](o)}};gu=t(\"__VUE_INSTANCE_SETTERS__\",n=>mn=n),oh=t(\"__VUE_SSR_SETTERS__\",n=>Pi=n)}const Bl=e=>{const t=mn;return gu(e),e.scope.on(),()=>{e.scope.off(),gu(t)}},gg=()=>{mn&&mn.scope.off(),gu(null)};function M1(e){return e.vnode.shapeFlag&4}let Pi=!1;function L3(e,t=!1,n=!1){t&&oh(t);const{props:r,children:s}=e.vnode,o=M1(e);l3(e,r,o,t),f3(e,s,n);const a=o?I3(e,t):void 0;return t&&oh(!1),a}function I3(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,QT);const{setup:r}=n;if(r){po();const s=e.setupContext=r.length>1?$1(e):null,o=Bl(e),a=Ll(r,e,0,[e.props,s]),i=Qa(a);if(vo(),o(),(i||e.sp)&&!Ri(e)&&Yp(e),i){if(a.then(gg,gg),t)return a.then(l=>{_g(e,l,t)}).catch(l=>{Il(l,e,0)});e.asyncDep=a}else _g(e,a,t)}else A1(e,t)}function _g(e,t,n){Ke(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:lt(t)&&(e.setupState=jy(t)),A1(e,n)}let bg;function A1(e,t,n){const r=e.type;if(!e.render){if(!t&&bg&&!r.render){const s=r.template||Qp(e).template;if(s){const{isCustomElement:o,compilerOptions:a}=e.appContext.config,{delimiters:i,compilerOptions:l}=r,u=un(un({isCustomElement:o,delimiters:i},a),l);r.render=bg(s,u)}}e.render=r.render||Mt}{const s=Bl(e);po();try{e3(e)}finally{vo(),s()}}}const P3={get(e,t){return $n(e,\"get\",\"\"),e[t]}};function $1(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,P3),slots:e.slots,emit:e.emit,expose:t}}function nd(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(jy(Jr(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Va)return Va[n](e)},has(t,n){return n in t||n in Va}})):e.proxy}function D3(e,t=!0){return Ke(e)?e.displayName||e.name:e.name||t&&e.__name}function B3(e){return Ke(e)&&\"__vccOpts\"in e}const O=(e,t)=>PT(e,t,Pi);function Ye(e,t,n){const r=arguments.length;return r===2?lt(t)&&!ke(t)?Ut(t)?H(e,null,[t]):H(e,t):H(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&Ut(n)&&(n=[n]),H(e,t,n))}const N3=\"3.5.13\",F3=Mt;/**\n* @vue/runtime-dom v3.5.13\n* (c) 2018-present Yuxi (Evan) You and Vue contributors\n* @license MIT\n**/let ih;const yg=typeof window<\"u\"&&window.trustedTypes;if(yg)try{ih=yg.createPolicy(\"vue\",{createHTML:e=>e})}catch{}const L1=ih?e=>ih.createHTML(e):e=>e,H3=\"http://www.w3.org/2000/svg\",V3=\"http://www.w3.org/1998/Math/MathML\",vs=typeof document<\"u\"?document:null,wg=vs&&vs.createElement(\"template\"),z3={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t===\"svg\"?vs.createElementNS(H3,e):t===\"mathml\"?vs.createElementNS(V3,e):n?vs.createElement(e,{is:n}):vs.createElement(e);return e===\"select\"&&r&&r.multiple!=null&&s.setAttribute(\"multiple\",r.multiple),s},createText:e=>vs.createTextNode(e),createComment:e=>vs.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>vs.querySelector(e),setScopeId(e,t){e.setAttribute(t,\"\")},insertStaticContent(e,t,n,r,s,o){const a=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{wg.innerHTML=L1(r===\"svg\"?`<svg>${e}</svg>`:r===\"mathml\"?`<math>${e}</math>`:e);const i=wg.content;if(r===\"svg\"||r===\"mathml\"){const l=i.firstChild;for(;l.firstChild;)i.appendChild(l.firstChild);i.removeChild(l)}t.insertBefore(i,n)}return[a?a.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ds=\"transition\",Sa=\"animation\",Di=Symbol(\"_vtc\"),I1={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},P1=un({},s1,I1),W3=e=>(e.displayName=\"Transition\",e.props=P1,e),_n=W3((e,{slots:t})=>Ye(WT,D1(e),t)),ko=(e,t=[])=>{ke(e)?e.forEach(n=>n(...t)):e&&e(...t)},Sg=e=>e?ke(e)?e.some(t=>t.length>1):e.length>1:!1;function D1(e){const t={};for(const A in e)A in I1||(t[A]=e[A]);if(e.css===!1)return t;const{name:n=\"v\",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:a=`${n}-enter-active`,enterToClass:i=`${n}-enter-to`,appearFromClass:l=o,appearActiveClass:u=a,appearToClass:f=i,leaveFromClass:d=`${n}-leave-from`,leaveActiveClass:h=`${n}-leave-active`,leaveToClass:v=`${n}-leave-to`}=e,b=K3(s),p=b&&b[0],g=b&&b[1],{onBeforeEnter:m,onEnter:y,onEnterCancelled:_,onLeave:w,onLeaveCancelled:S,onBeforeAppear:C=m,onAppear:E=y,onAppearCancelled:k=_}=t,T=(A,P,G,V)=>{A._enterCancelled=V,Fs(A,P?f:i),Fs(A,P?u:a),G&&G()},x=(A,P)=>{A._isLeaving=!1,Fs(A,d),Fs(A,v),Fs(A,h),P&&P()},M=A=>(P,G)=>{const V=A?E:y,I=()=>T(P,A,G);ko(V,[P,I]),Cg(()=>{Fs(P,A?l:o),Ur(P,A?f:i),Sg(V)||kg(P,r,p,I)})};return un(t,{onBeforeEnter(A){ko(m,[A]),Ur(A,o),Ur(A,a)},onBeforeAppear(A){ko(C,[A]),Ur(A,l),Ur(A,u)},onEnter:M(!1),onAppear:M(!0),onLeave(A,P){A._isLeaving=!0;const G=()=>x(A,P);Ur(A,d),A._enterCancelled?(Ur(A,h),ah()):(ah(),Ur(A,h)),Cg(()=>{A._isLeaving&&(Fs(A,d),Ur(A,v),Sg(w)||kg(A,r,g,G))}),ko(w,[A,G])},onEnterCancelled(A){T(A,!1,void 0,!0),ko(_,[A])},onAppearCancelled(A){T(A,!0,void 0,!0),ko(k,[A])},onLeaveCancelled(A){x(A),ko(S,[A])}})}function K3(e){if(e==null)return null;if(lt(e))return[sf(e.enter),sf(e.leave)];{const t=sf(e);return[t,t]}}function sf(e){return tT(e)}function Ur(e,t){t.split(/\\s+/).forEach(n=>n&&e.classList.add(n)),(e[Di]||(e[Di]=new Set)).add(t)}function Fs(e,t){t.split(/\\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[Di];n&&(n.delete(t),n.size||(e[Di]=void 0))}function Cg(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let j3=0;function kg(e,t,n,r){const s=e._endId=++j3,o=()=>{s===e._endId&&r()};if(n!=null)return setTimeout(o,n);const{type:a,timeout:i,propCount:l}=B1(e,t);if(!a)return r();const u=a+\"end\";let f=0;const d=()=>{e.removeEventListener(u,h),o()},h=v=>{v.target===e&&++f>=l&&d()};setTimeout(()=>{f<l&&d()},i+1),e.addEventListener(u,h)}function B1(e,t){const n=window.getComputedStyle(e),r=b=>(n[b]||\"\").split(\", \"),s=r(`${Ds}Delay`),o=r(`${Ds}Duration`),a=Eg(s,o),i=r(`${Sa}Delay`),l=r(`${Sa}Duration`),u=Eg(i,l);let f=null,d=0,h=0;t===Ds?a>0&&(f=Ds,d=a,h=o.length):t===Sa?u>0&&(f=Sa,d=u,h=l.length):(d=Math.max(a,u),f=d>0?a>u?Ds:Sa:null,h=f?f===Ds?o.length:l.length:0);const v=f===Ds&&/\\b(transform|all)(,|$)/.test(r(`${Ds}Property`).toString());return{type:f,timeout:d,propCount:h,hasTransform:v}}function Eg(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((n,r)=>Tg(n)+Tg(e[r])))}function Tg(e){return e===\"auto\"?0:Number(e.slice(0,-1).replace(\",\",\".\"))*1e3}function ah(){return document.body.offsetHeight}function U3(e,t,n){const r=e[Di];r&&(t=(t?[t,...r]:[...r]).join(\" \")),t==null?e.removeAttribute(\"class\"):n?e.setAttribute(\"class\",t):e.className=t}const _u=Symbol(\"_vod\"),N1=Symbol(\"_vsh\"),Et={beforeMount(e,{value:t},{transition:n}){e[_u]=e.style.display===\"none\"?\"\":e.style.display,n&&t?n.beforeEnter(e):Ca(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:r}){!t!=!n&&(r?t?(r.beforeEnter(e),Ca(e,!0),r.enter(e)):r.leave(e,()=>{Ca(e,!1)}):Ca(e,t))},beforeUnmount(e,{value:t}){Ca(e,t)}};function Ca(e,t){e.style.display=t?e[_u]:\"none\",e[N1]=!t}const F1=Symbol(\"\");function q3(e){const t=ct();if(!t)return;const n=t.ut=(s=e(t.proxy))=>{Array.from(document.querySelectorAll(`[data-v-owner=\"${t.uid}\"]`)).forEach(o=>bu(o,s))},r=()=>{const s=e(t.proxy);t.ce?bu(t.ce,s):lh(t.subTree,s),n(s)};Xp(()=>{Gy(r)}),it(()=>{ye(r,Mt,{flush:\"post\"});const s=new MutationObserver(r);s.observe(t.subTree.el.parentNode,{childList:!0}),xs(()=>s.disconnect())})}function lh(e,t){if(e.shapeFlag&128){const n=e.suspense;e=n.activeBranch,n.pendingBranch&&!n.isHydrating&&n.effects.push(()=>{lh(n.activeBranch,t)})}for(;e.component;)e=e.component.subTree;if(e.shapeFlag&1&&e.el)bu(e.el,t);else if(e.type===We)e.children.forEach(n=>lh(n,t));else if(e.type===Lc){let{el:n,anchor:r}=e;for(;n&&(bu(n,t),n!==r);)n=n.nextSibling}}function bu(e,t){if(e.nodeType===1){const n=e.style;let r=\"\";for(const s in t)n.setProperty(`--${s}`,t[s]),r+=`--${s}: ${t[s]};`;n[F1]=r}}const Y3=/(^|;)\\s*display\\s*:/;function G3(e,t,n){const r=e.style,s=ze(n);let o=!1;if(n&&!s){if(t)if(ze(t))for(const a of t.split(\";\")){const i=a.slice(0,a.indexOf(\":\")).trim();n[i]==null&&Pc(r,i,\"\")}else for(const a in t)n[a]==null&&Pc(r,a,\"\");for(const a in n)a===\"display\"&&(o=!0),Pc(r,a,n[a])}else if(s){if(t!==n){const a=r[F1];a&&(n+=\";\"+a),r.cssText=n,o=Y3.test(n)}}else t&&e.removeAttribute(\"style\");_u in e&&(e[_u]=o?r.display:\"\",e[N1]&&(r.display=\"none\"))}const Rg=/\\s*!important$/;function Pc(e,t,n){if(ke(n))n.forEach(r=>Pc(e,t,r));else if(n==null&&(n=\"\"),t.startsWith(\"--\"))e.setProperty(t,n);else{const r=X3(e,t);Rg.test(n)?e.setProperty(Ts(r),n.replace(Rg,\"\"),\"important\"):e[r]=n}}const xg=[\"Webkit\",\"Moz\",\"ms\"],of={};function X3(e,t){const n=of[t];if(n)return n;let r=Yn(t);if(r!==\"filter\"&&r in e)return of[t]=r;r=$l(r);for(let s=0;s<xg.length;s++){const o=xg[s]+r;if(o in e)return of[t]=o}return t}const Og=\"http://www.w3.org/1999/xlink\";function Mg(e,t,n,r,s,o=aT(t)){r&&t.startsWith(\"xlink:\")?n==null?e.removeAttributeNS(Og,t.slice(6,t.length)):e.setAttributeNS(Og,t,n):n==null||o&&!Ey(n)?e.removeAttribute(t):e.setAttribute(t,o?\"\":Lr(n)?String(n):n)}function Ag(e,t,n,r,s){if(t===\"innerHTML\"||t===\"textContent\"){n!=null&&(e[t]=t===\"innerHTML\"?L1(n):n);return}const o=e.tagName;if(t===\"value\"&&o!==\"PROGRESS\"&&!o.includes(\"-\")){const i=o===\"OPTION\"?e.getAttribute(\"value\")||\"\":e.value,l=n==null?e.type===\"checkbox\"?\"on\":\"\":String(n);(i!==l||!(\"_value\"in e))&&(e.value=l),n==null&&e.removeAttribute(t),e._value=n;return}let a=!1;if(n===\"\"||n==null){const i=typeof e[t];i===\"boolean\"?n=Ey(n):n==null&&i===\"string\"?(n=\"\",a=!0):i===\"number\"&&(n=0,a=!0)}try{e[t]=n}catch{}a&&e.removeAttribute(s||t)}function Ys(e,t,n,r){e.addEventListener(t,n,r)}function J3(e,t,n,r){e.removeEventListener(t,n,r)}const $g=Symbol(\"_vei\");function Z3(e,t,n,r,s=null){const o=e[$g]||(e[$g]={}),a=o[t];if(r&&a)a.value=r;else{const[i,l]=Q3(t);if(r){const u=o[t]=nR(r,s);Ys(e,i,u,l)}else a&&(J3(e,i,a,l),o[t]=void 0)}}const Lg=/(?:Once|Passive|Capture)$/;function Q3(e){let t;if(Lg.test(e)){t={};let r;for(;r=e.match(Lg);)e=e.slice(0,e.length-r[0].length),t[r[0].toLowerCase()]=!0}return[e[2]===\":\"?e.slice(3):Ts(e.slice(2)),t]}let af=0;const eR=Promise.resolve(),tR=()=>af||(eR.then(()=>af=0),af=Date.now());function nR(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Ir(rR(r,n.value),t,5,[r])};return n.value=e,n.attached=tR(),n}function rR(e,t){if(ke(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Ig=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,sR=(e,t,n,r,s,o)=>{const a=s===\"svg\";t===\"class\"?U3(e,r,a):t===\"style\"?G3(e,n,r):qu(t)?Lp(t)||Z3(e,t,n,r,o):(t[0]===\".\"?(t=t.slice(1),!0):t[0]===\"^\"?(t=t.slice(1),!1):oR(e,t,r,a))?(Ag(e,t,r),!e.tagName.includes(\"-\")&&(t===\"value\"||t===\"checked\"||t===\"selected\")&&Mg(e,t,r,a,o,t!==\"value\")):e._isVueCE&&(/[A-Z]/.test(t)||!ze(r))?Ag(e,Yn(t),r,o,t):(t===\"true-value\"?e._trueValue=r:t===\"false-value\"&&(e._falseValue=r),Mg(e,t,r,a))};function oR(e,t,n,r){if(r)return!!(t===\"innerHTML\"||t===\"textContent\"||t in e&&Ig(t)&&Ke(n));if(t===\"spellcheck\"||t===\"draggable\"||t===\"translate\"||t===\"form\"||t===\"list\"&&e.tagName===\"INPUT\"||t===\"type\"&&e.tagName===\"TEXTAREA\")return!1;if(t===\"width\"||t===\"height\"){const s=e.tagName;if(s===\"IMG\"||s===\"VIDEO\"||s===\"CANVAS\"||s===\"SOURCE\")return!1}return Ig(t)&&ze(n)?!1:t in e}const H1=new WeakMap,V1=new WeakMap,yu=Symbol(\"_moveCb\"),Pg=Symbol(\"_enterCb\"),iR=e=>(delete e.props.mode,e),aR=iR({name:\"TransitionGroup\",props:un({},P1,{tag:String,moveClass:String}),setup(e,{slots:t}){const n=ct(),r=r1();let s,o;return os(()=>{if(!s.length)return;const a=e.moveClass||`${e.name||\"v\"}-move`;if(!dR(s[0].el,n.vnode.el,a))return;s.forEach(lR),s.forEach(cR);const i=s.filter(uR);ah(),i.forEach(l=>{const u=l.el,f=u.style;Ur(u,a),f.transform=f.webkitTransform=f.transitionDuration=\"\";const d=u[yu]=h=>{h&&h.target!==u||(!h||/transform$/.test(h.propertyName))&&(u.removeEventListener(\"transitionend\",d),u[yu]=null,Fs(u,a))};u.addEventListener(\"transitionend\",d)})}),()=>{const a=Dt(e),i=D1(a);let l=a.tag||We;if(s=[],o)for(let u=0;u<o.length;u++){const f=o[u];f.el&&f.el instanceof Element&&(s.push(f),qo(f,sl(f,i,r,n)),H1.set(f,f.el.getBoundingClientRect()))}o=t.default?qp(t.default()):[];for(let u=0;u<o.length;u++){const f=o[u];f.key!=null&&qo(f,sl(f,i,r,n))}return H(l,null,o)}}}),z1=aR;function lR(e){const t=e.el;t[yu]&&t[yu](),t[Pg]&&t[Pg]()}function cR(e){V1.set(e,e.el.getBoundingClientRect())}function uR(e){const t=H1.get(e),n=V1.get(e),r=t.left-n.left,s=t.top-n.top;if(r||s){const o=e.el.style;return o.transform=o.webkitTransform=`translate(${r}px,${s}px)`,o.transitionDuration=\"0s\",e}}function dR(e,t,n){const r=e.cloneNode(),s=e[Di];s&&s.forEach(i=>{i.split(/\\s+/).forEach(l=>l&&r.classList.remove(l))}),n.split(/\\s+/).forEach(i=>i&&r.classList.add(i)),r.style.display=\"none\";const o=t.nodeType===1?t:t.parentNode;o.appendChild(r);const{hasTransform:a}=B1(r);return o.removeChild(r),a}const Bi=e=>{const t=e.props[\"onUpdate:modelValue\"]||!1;return ke(t)?n=>Ac(t,n):t};function fR(e){e.target.composing=!0}function Dg(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event(\"input\")))}const ws=Symbol(\"_assign\"),rd={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[ws]=Bi(s);const o=r||s.props&&s.props.type===\"number\";Ys(e,t?\"change\":\"input\",a=>{if(a.target.composing)return;let i=e.value;n&&(i=i.trim()),o&&(i=Gf(i)),e[ws](i)}),n&&Ys(e,\"change\",()=>{e.value=e.value.trim()}),t||(Ys(e,\"compositionstart\",fR),Ys(e,\"compositionend\",Dg),Ys(e,\"change\",Dg))},mounted(e,{value:t}){e.value=t??\"\"},beforeUpdate(e,{value:t,oldValue:n,modifiers:{lazy:r,trim:s,number:o}},a){if(e[ws]=Bi(a),e.composing)return;const i=(o||e.type===\"number\")&&!/^0\\d/.test(e.value)?Gf(e.value):e.value,l=t??\"\";i!==l&&(document.activeElement===e&&e.type!==\"range\"&&(r&&t===n||s&&e.value.trim()===l)||(e.value=l))}},wu={deep:!0,created(e,t,n){e[ws]=Bi(n),Ys(e,\"change\",()=>{const r=e._modelValue,s=K1(e),o=e.checked,a=e[ws];if(ke(r)){const i=Ty(r,s),l=i!==-1;if(o&&!l)a(r.concat(s));else if(!o&&l){const u=[...r];u.splice(i,1),a(u)}}else if(Yu(r)){const i=new Set(r);o?i.add(s):i.delete(s),a(i)}else a(j1(e,o))})},mounted:Bg,beforeUpdate(e,t,n){e[ws]=Bi(n),Bg(e,t,n)}};function Bg(e,{value:t,oldValue:n},r){e._modelValue=t;let s;if(ke(t))s=Ty(t,r.props.value)>-1;else if(Yu(t))s=t.has(r.props.value);else{if(t===n)return;s=Ii(t,j1(e,!0))}e.checked!==s&&(e.checked=s)}const W1={created(e,{value:t},n){e.checked=Ii(t,n.props.value),e[ws]=Bi(n),Ys(e,\"change\",()=>{e[ws](K1(e))})},beforeUpdate(e,{value:t,oldValue:n},r){e[ws]=Bi(r),t!==n&&(e.checked=Ii(t,r.props.value))}};function K1(e){return\"_value\"in e?e._value:e.value}function j1(e,t){const n=t?\"_trueValue\":\"_falseValue\";return n in e?e[n]:t}const hR=[\"ctrl\",\"shift\",\"alt\",\"meta\"],pR={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>\"button\"in e&&e.button!==0,middle:e=>\"button\"in e&&e.button!==1,right:e=>\"button\"in e&&e.button!==2,exact:(e,t)=>hR.some(n=>e[`${n}Key`]&&!t.includes(n))},Xe=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(\".\");return n[r]||(n[r]=(s,...o)=>{for(let a=0;a<t.length;a++){const i=pR[t[a]];if(i&&i(s,t))return}return e(s,...o)})},vR={esc:\"escape\",space:\" \",up:\"arrow-up\",left:\"arrow-left\",right:\"arrow-right\",down:\"arrow-down\",delete:\"backspace\"},Ht=(e,t)=>{const n=e._withKeys||(e._withKeys={}),r=t.join(\".\");return n[r]||(n[r]=s=>{if(!(\"key\"in s))return;const o=Ts(s.key);if(t.some(a=>a===o||vR[a]===o))return e(s)})},mR=un({patchProp:sR},z3);let Ng;function U1(){return Ng||(Ng=p3(mR))}const so=(...e)=>{U1().render(...e)},q1=(...e)=>{const t=U1().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=_R(r);if(!s)return;const o=t._component;!Ke(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.nodeType===1&&(s.textContent=\"\");const a=n(s,!1,gR(s));return s instanceof Element&&(s.removeAttribute(\"v-cloak\"),s.setAttribute(\"data-v-app\",\"\")),a},t};function gR(e){if(e instanceof SVGElement)return\"svg\";if(typeof MathMLElement==\"function\"&&e instanceof MathMLElement)return\"mathml\"}function _R(e){return ze(e)?document.querySelector(e):e}var bR=!1;/*!\n * pinia v2.3.0\n * (c) 2024 Eduardo San Martin Morote\n * @license MIT\n */let Y1;const sd=e=>Y1=e,G1=Symbol();function ch(e){return e&&typeof e==\"object\"&&Object.prototype.toString.call(e)===\"[object Object]\"&&typeof e.toJSON!=\"function\"}var Wa;(function(e){e.direct=\"direct\",e.patchObject=\"patch object\",e.patchFunction=\"patch function\"})(Wa||(Wa={}));function yR(){const e=Dp(!0),t=e.run(()=>W({}));let n=[],r=[];const s=Jr({install(o){sd(s),s._a=o,o.provide(G1,s),o.config.globalProperties.$pinia=s,r.forEach(a=>n.push(a)),r=[]},use(o){return!this._a&&!bR?r.push(o):n.push(o),this},_p:n,_a:null,_e:e,_s:new Map,state:t});return s}const X1=()=>{};function Fg(e,t,n,r=X1){e.push(t);const s=()=>{const o=e.indexOf(t);o>-1&&(e.splice(o,1),r())};return!n&&Bp()&&Np(s),s}function li(e,...t){e.slice().forEach(n=>{n(...t)})}const wR=e=>e(),Hg=Symbol(),lf=Symbol();function uh(e,t){e instanceof Map&&t instanceof Map?t.forEach((n,r)=>e.set(r,n)):e instanceof Set&&t instanceof Set&&t.forEach(e.add,e);for(const n in t){if(!t.hasOwnProperty(n))continue;const r=t[n],s=e[n];ch(s)&&ch(r)&&e.hasOwnProperty(n)&&!Ft(r)&&!Zs(r)?e[n]=uh(s,r):e[n]=r}return e}const SR=Symbol();function CR(e){return!ch(e)||!e.hasOwnProperty(SR)}const{assign:Hs}=Object;function kR(e){return!!(Ft(e)&&e.effect)}function ER(e,t,n,r){const{state:s,actions:o,getters:a}=t,i=n.state.value[e];let l;function u(){i||(n.state.value[e]=s?s():{});const f=hn(n.state.value[e]);return Hs(f,o,Object.keys(a||{}).reduce((d,h)=>(d[h]=Jr(O(()=>{sd(n);const v=n._s.get(e);return a[h].call(v,v)})),d),{}))}return l=J1(e,u,t,n,r,!0),l}function J1(e,t,n={},r,s,o){let a;const i=Hs({actions:{}},n),l={deep:!0};let u,f,d=[],h=[],v;const b=r.state.value[e];!o&&!b&&(r.state.value[e]={}),W({});let p;function g(k){let T;u=f=!1,typeof k==\"function\"?(k(r.state.value[e]),T={type:Wa.patchFunction,storeId:e,events:v}):(uh(r.state.value[e],k),T={type:Wa.patchObject,payload:k,storeId:e,events:v});const x=p=Symbol();je().then(()=>{p===x&&(u=!0)}),f=!0,li(d,T,r.state.value[e])}const m=o?function(){const{state:T}=n,x=T?T():{};this.$patch(M=>{Hs(M,x)})}:X1;function y(){a.stop(),d=[],h=[],r._s.delete(e)}const _=(k,T=\"\")=>{if(Hg in k)return k[lf]=T,k;const x=function(){sd(r);const M=Array.from(arguments),A=[],P=[];function G(j){A.push(j)}function V(j){P.push(j)}li(h,{args:M,name:x[lf],store:S,after:G,onError:V});let I;try{I=k.apply(this&&this.$id===e?this:S,M)}catch(j){throw li(P,j),j}return I instanceof Promise?I.then(j=>(li(A,j),j)).catch(j=>(li(P,j),Promise.reject(j))):(li(A,I),I)};return x[Hg]=!0,x[lf]=T,x},w={_p:r,$id:e,$onAction:Fg.bind(null,h),$patch:g,$reset:m,$subscribe(k,T={}){const x=Fg(d,k,T.detached,()=>M()),M=a.run(()=>ye(()=>r.state.value[e],A=>{(T.flush===\"sync\"?f:u)&&k({storeId:e,type:Wa.direct,events:v},A)},Hs({},l,T)));return x},$dispose:y},S=St(w);r._s.set(e,S);const E=(r._a&&r._a.runWithContext||wR)(()=>r._e.run(()=>(a=Dp()).run(()=>t({action:_}))));for(const k in E){const T=E[k];if(Ft(T)&&!kR(T)||Zs(T))o||(b&&CR(T)&&(Ft(T)?T.value=b[k]:uh(T,b[k])),r.state.value[e][k]=T);else if(typeof T==\"function\"){const x=_(T,k);E[k]=x,i.actions[k]=T}}return Hs(S,E),Hs(Dt(S),E),Object.defineProperty(S,\"$state\",{get:()=>r.state.value[e],set:k=>{g(T=>{Hs(T,k)})}}),r._p.forEach(k=>{Hs(S,a.run(()=>k({store:S,app:r._a,pinia:r,options:i})))}),b&&o&&n.hydrate&&n.hydrate(S.$state,b),u=!0,f=!0,S}/*! #__NO_SIDE_EFFECTS__ */function TR(e,t,n){let r,s;const o=typeof t==\"function\";r=e,s=o?n:t;function a(i,l){const u=a3();return i=i||(u?Fe(G1,null):null),i&&sd(i),i=Y1,i._s.has(r)||(o?J1(r,t,s,i):ER(r,s,i)),i._s.get(r)}return a.$id=r,a}/*!\n  * vue-router v4.5.0\n  * (c) 2024 Eduardo San Martin Morote\n  * @license MIT\n  */const mi=typeof document<\"u\";function Z1(e){return typeof e==\"object\"||\"displayName\"in e||\"props\"in e||\"__vccOpts\"in e}function RR(e){return e.__esModule||e[Symbol.toStringTag]===\"Module\"||e.default&&Z1(e.default)}const Kt=Object.assign;function cf(e,t){const n={};for(const r in t){const s=t[r];n[r]=Pr(s)?s.map(e):e(s)}return n}const Ka=()=>{},Pr=Array.isArray,Q1=/#/g,xR=/&/g,OR=/\\//g,MR=/=/g,AR=/\\?/g,ew=/\\+/g,$R=/%5B/g,LR=/%5D/g,tw=/%5E/g,IR=/%60/g,nw=/%7B/g,PR=/%7C/g,rw=/%7D/g,DR=/%20/g;function sv(e){return encodeURI(\"\"+e).replace(PR,\"|\").replace($R,\"[\").replace(LR,\"]\")}function BR(e){return sv(e).replace(nw,\"{\").replace(rw,\"}\").replace(tw,\"^\")}function dh(e){return sv(e).replace(ew,\"%2B\").replace(DR,\"+\").replace(Q1,\"%23\").replace(xR,\"%26\").replace(IR,\"`\").replace(nw,\"{\").replace(rw,\"}\").replace(tw,\"^\")}function NR(e){return dh(e).replace(MR,\"%3D\")}function FR(e){return sv(e).replace(Q1,\"%23\").replace(AR,\"%3F\")}function HR(e){return e==null?\"\":FR(e).replace(OR,\"%2F\")}function il(e){try{return decodeURIComponent(\"\"+e)}catch{}return\"\"+e}const VR=/\\/$/,zR=e=>e.replace(VR,\"\");function uf(e,t,n=\"/\"){let r,s={},o=\"\",a=\"\";const i=t.indexOf(\"#\");let l=t.indexOf(\"?\");return i<l&&i>=0&&(l=-1),l>-1&&(r=t.slice(0,l),o=t.slice(l+1,i>-1?i:t.length),s=e(o)),i>-1&&(r=r||t.slice(0,i),a=t.slice(i,t.length)),r=UR(r??t,n),{fullPath:r+(o&&\"?\")+o+a,path:r,query:s,hash:il(a)}}function WR(e,t){const n=t.query?e(t.query):\"\";return t.path+(n&&\"?\")+n+(t.hash||\"\")}function Vg(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||\"/\"}function KR(e,t,n){const r=t.matched.length-1,s=n.matched.length-1;return r>-1&&r===s&&Ni(t.matched[r],n.matched[s])&&sw(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function Ni(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function sw(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const n in e)if(!jR(e[n],t[n]))return!1;return!0}function jR(e,t){return Pr(e)?zg(e,t):Pr(t)?zg(t,e):e===t}function zg(e,t){return Pr(t)?e.length===t.length&&e.every((n,r)=>n===t[r]):e.length===1&&e[0]===t}function UR(e,t){if(e.startsWith(\"/\"))return e;if(!e)return t;const n=t.split(\"/\"),r=e.split(\"/\"),s=r[r.length-1];(s===\"..\"||s===\".\")&&r.push(\"\");let o=n.length-1,a,i;for(a=0;a<r.length;a++)if(i=r[a],i!==\".\")if(i===\"..\")o>1&&o--;else break;return n.slice(0,o).join(\"/\")+\"/\"+r.slice(a).join(\"/\")}const Bs={path:\"/\",name:void 0,params:{},query:{},hash:\"\",fullPath:\"/\",matched:[],meta:{},redirectedFrom:void 0};var al;(function(e){e.pop=\"pop\",e.push=\"push\"})(al||(al={}));var ja;(function(e){e.back=\"back\",e.forward=\"forward\",e.unknown=\"\"})(ja||(ja={}));function qR(e){if(!e)if(mi){const t=document.querySelector(\"base\");e=t&&t.getAttribute(\"href\")||\"/\",e=e.replace(/^\\w+:\\/\\/[^\\/]+/,\"\")}else e=\"/\";return e[0]!==\"/\"&&e[0]!==\"#\"&&(e=\"/\"+e),zR(e)}const YR=/^[^#]+#/;function GR(e,t){return e.replace(YR,\"#\")+t}function XR(e,t){const n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}const od=()=>({left:window.scrollX,top:window.scrollY});function JR(e){let t;if(\"el\"in e){const n=e.el,r=typeof n==\"string\"&&n.startsWith(\"#\"),s=typeof n==\"string\"?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!s)return;t=XR(s,e)}else t=e;\"scrollBehavior\"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.scrollX,t.top!=null?t.top:window.scrollY)}function Wg(e,t){return(history.state?history.state.position-t:-1)+e}const fh=new Map;function ZR(e,t){fh.set(e,t)}function QR(e){const t=fh.get(e);return fh.delete(e),t}let ex=()=>location.protocol+\"//\"+location.host;function ow(e,t){const{pathname:n,search:r,hash:s}=t,o=e.indexOf(\"#\");if(o>-1){let i=s.includes(e.slice(o))?e.slice(o).length:1,l=s.slice(i);return l[0]!==\"/\"&&(l=\"/\"+l),Vg(l,\"\")}return Vg(n,e)+r+s}function tx(e,t,n,r){let s=[],o=[],a=null;const i=({state:h})=>{const v=ow(e,location),b=n.value,p=t.value;let g=0;if(h){if(n.value=v,t.value=h,a&&a===b){a=null;return}g=p?h.position-p.position:0}else r(v);s.forEach(m=>{m(n.value,b,{delta:g,type:al.pop,direction:g?g>0?ja.forward:ja.back:ja.unknown})})};function l(){a=n.value}function u(h){s.push(h);const v=()=>{const b=s.indexOf(h);b>-1&&s.splice(b,1)};return o.push(v),v}function f(){const{history:h}=window;h.state&&h.replaceState(Kt({},h.state,{scroll:od()}),\"\")}function d(){for(const h of o)h();o=[],window.removeEventListener(\"popstate\",i),window.removeEventListener(\"beforeunload\",f)}return window.addEventListener(\"popstate\",i),window.addEventListener(\"beforeunload\",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:d}}function Kg(e,t,n,r=!1,s=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:s?od():null}}function nx(e){const{history:t,location:n}=window,r={value:ow(e,n)},s={value:t.state};s.value||o(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function o(l,u,f){const d=e.indexOf(\"#\"),h=d>-1?(n.host&&document.querySelector(\"base\")?e:e.slice(d))+l:ex()+e+l;try{t[f?\"replaceState\":\"pushState\"](u,\"\",h),s.value=u}catch(v){console.error(v),n[f?\"replace\":\"assign\"](h)}}function a(l,u){const f=Kt({},t.state,Kg(s.value.back,l,s.value.forward,!0),u,{position:s.value.position});o(l,f,!0),r.value=l}function i(l,u){const f=Kt({},s.value,t.state,{forward:l,scroll:od()});o(f.current,f,!0);const d=Kt({},Kg(r.value,l,null),{position:f.position+1},u);o(l,d,!1),r.value=l}return{location:r,state:s,push:i,replace:a}}function rx(e){e=qR(e);const t=nx(e),n=tx(e,t.state,t.location,t.replace);function r(o,a=!0){a||n.pauseListeners(),history.go(o)}const s=Kt({location:\"\",base:e,go:r,createHref:GR.bind(null,e)},t,n);return Object.defineProperty(s,\"location\",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(s,\"state\",{enumerable:!0,get:()=>t.state.value}),s}function sx(e){return e=location.host?e||location.pathname+location.search:\"\",e.includes(\"#\")||(e+=\"#\"),rx(e)}function ox(e){return typeof e==\"string\"||e&&typeof e==\"object\"}function iw(e){return typeof e==\"string\"||typeof e==\"symbol\"}const aw=Symbol(\"\");var jg;(function(e){e[e.aborted=4]=\"aborted\",e[e.cancelled=8]=\"cancelled\",e[e.duplicated=16]=\"duplicated\"})(jg||(jg={}));function Fi(e,t){return Kt(new Error,{type:e,[aw]:!0},t)}function hs(e,t){return e instanceof Error&&aw in e&&(t==null||!!(e.type&t))}const Ug=\"[^/]+?\",ix={sensitive:!1,strict:!1,start:!0,end:!0},ax=/[.+*?^${}()[\\]/\\\\]/g;function lx(e,t){const n=Kt({},ix,t),r=[];let s=n.start?\"^\":\"\";const o=[];for(const u of e){const f=u.length?[]:[90];n.strict&&!u.length&&(s+=\"/\");for(let d=0;d<u.length;d++){const h=u[d];let v=40+(n.sensitive?.25:0);if(h.type===0)d||(s+=\"/\"),s+=h.value.replace(ax,\"\\\\$&\"),v+=40;else if(h.type===1){const{value:b,repeatable:p,optional:g,regexp:m}=h;o.push({name:b,repeatable:p,optional:g});const y=m||Ug;if(y!==Ug){v+=10;try{new RegExp(`(${y})`)}catch(w){throw new Error(`Invalid custom RegExp for param \"${b}\" (${y}): `+w.message)}}let _=p?`((?:${y})(?:/(?:${y}))*)`:`(${y})`;d||(_=g&&u.length<2?`(?:/${_})`:\"/\"+_),g&&(_+=\"?\"),s+=_,v+=20,g&&(v+=-8),p&&(v+=-20),y===\".*\"&&(v+=-50)}f.push(v)}r.push(f)}if(n.strict&&n.end){const u=r.length-1;r[u][r[u].length-1]+=.7000000000000001}n.strict||(s+=\"/?\"),n.end?s+=\"$\":n.strict&&!s.endsWith(\"/\")&&(s+=\"(?:/|$)\");const a=new RegExp(s,n.sensitive?\"\":\"i\");function i(u){const f=u.match(a),d={};if(!f)return null;for(let h=1;h<f.length;h++){const v=f[h]||\"\",b=o[h-1];d[b.name]=v&&b.repeatable?v.split(\"/\"):v}return d}function l(u){let f=\"\",d=!1;for(const h of e){(!d||!f.endsWith(\"/\"))&&(f+=\"/\"),d=!1;for(const v of h)if(v.type===0)f+=v.value;else if(v.type===1){const{value:b,repeatable:p,optional:g}=v,m=b in u?u[b]:\"\";if(Pr(m)&&!p)throw new Error(`Provided param \"${b}\" is an array but it is not repeatable (* or + modifiers)`);const y=Pr(m)?m.join(\"/\"):m;if(!y)if(g)h.length<2&&(f.endsWith(\"/\")?f=f.slice(0,-1):d=!0);else throw new Error(`Missing required param \"${b}\"`);f+=y}}return f||\"/\"}return{re:a,score:r,keys:o,parse:i,stringify:l}}function cx(e,t){let n=0;for(;n<e.length&&n<t.length;){const r=t[n]-e[n];if(r)return r;n++}return e.length<t.length?e.length===1&&e[0]===80?-1:1:e.length>t.length?t.length===1&&t[0]===80?1:-1:0}function lw(e,t){let n=0;const r=e.score,s=t.score;for(;n<r.length&&n<s.length;){const o=cx(r[n],s[n]);if(o)return o;n++}if(Math.abs(s.length-r.length)===1){if(qg(r))return 1;if(qg(s))return-1}return s.length-r.length}function qg(e){const t=e[e.length-1];return e.length>0&&t[t.length-1]<0}const ux={type:0,value:\"\"},dx=/[a-zA-Z0-9_]/;function fx(e){if(!e)return[[]];if(e===\"/\")return[[ux]];if(!e.startsWith(\"/\"))throw new Error(`Invalid path \"${e}\"`);function t(v){throw new Error(`ERR (${n})/\"${u}\": ${v}`)}let n=0,r=n;const s=[];let o;function a(){o&&s.push(o),o=[]}let i=0,l,u=\"\",f=\"\";function d(){u&&(n===0?o.push({type:0,value:u}):n===1||n===2||n===3?(o.length>1&&(l===\"*\"||l===\"+\")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),o.push({type:1,value:u,regexp:f,repeatable:l===\"*\"||l===\"+\",optional:l===\"*\"||l===\"?\"})):t(\"Invalid state to consume buffer\"),u=\"\")}function h(){u+=l}for(;i<e.length;){if(l=e[i++],l===\"\\\\\"&&n!==2){r=n,n=4;continue}switch(n){case 0:l===\"/\"?(u&&d(),a()):l===\":\"?(d(),n=1):h();break;case 4:h(),n=r;break;case 1:l===\"(\"?n=2:dx.test(l)?h():(d(),n=0,l!==\"*\"&&l!==\"?\"&&l!==\"+\"&&i--);break;case 2:l===\")\"?f[f.length-1]==\"\\\\\"?f=f.slice(0,-1)+l:n=3:f+=l;break;case 3:d(),n=0,l!==\"*\"&&l!==\"?\"&&l!==\"+\"&&i--,f=\"\";break;default:t(\"Unknown state\");break}}return n===2&&t(`Unfinished custom RegExp for param \"${u}\"`),d(),a(),s}function hx(e,t,n){const r=lx(fx(e.path),n),s=Kt(r,{record:e,parent:t,children:[],alias:[]});return t&&!s.record.aliasOf==!t.record.aliasOf&&t.children.push(s),s}function px(e,t){const n=[],r=new Map;t=Jg({strict:!1,end:!0,sensitive:!1},t);function s(d){return r.get(d)}function o(d,h,v){const b=!v,p=Gg(d);p.aliasOf=v&&v.record;const g=Jg(t,d),m=[p];if(\"alias\"in d){const w=typeof d.alias==\"string\"?[d.alias]:d.alias;for(const S of w)m.push(Gg(Kt({},p,{components:v?v.record.components:p.components,path:S,aliasOf:v?v.record:p})))}let y,_;for(const w of m){const{path:S}=w;if(h&&S[0]!==\"/\"){const C=h.record.path,E=C[C.length-1]===\"/\"?\"\":\"/\";w.path=h.record.path+(S&&E+S)}if(y=hx(w,h,g),v?v.alias.push(y):(_=_||y,_!==y&&_.alias.push(y),b&&d.name&&!Xg(y)&&a(d.name)),cw(y)&&l(y),p.children){const C=p.children;for(let E=0;E<C.length;E++)o(C[E],y,v&&v.children[E])}v=v||y}return _?()=>{a(_)}:Ka}function a(d){if(iw(d)){const h=r.get(d);h&&(r.delete(d),n.splice(n.indexOf(h),1),h.children.forEach(a),h.alias.forEach(a))}else{const h=n.indexOf(d);h>-1&&(n.splice(h,1),d.record.name&&r.delete(d.record.name),d.children.forEach(a),d.alias.forEach(a))}}function i(){return n}function l(d){const h=gx(d,n);n.splice(h,0,d),d.record.name&&!Xg(d)&&r.set(d.record.name,d)}function u(d,h){let v,b={},p,g;if(\"name\"in d&&d.name){if(v=r.get(d.name),!v)throw Fi(1,{location:d});g=v.record.name,b=Kt(Yg(h.params,v.keys.filter(_=>!_.optional).concat(v.parent?v.parent.keys.filter(_=>_.optional):[]).map(_=>_.name)),d.params&&Yg(d.params,v.keys.map(_=>_.name))),p=v.stringify(b)}else if(d.path!=null)p=d.path,v=n.find(_=>_.re.test(p)),v&&(b=v.parse(p),g=v.record.name);else{if(v=h.name?r.get(h.name):n.find(_=>_.re.test(h.path)),!v)throw Fi(1,{location:d,currentLocation:h});g=v.record.name,b=Kt({},h.params,d.params),p=v.stringify(b)}const m=[];let y=v;for(;y;)m.unshift(y.record),y=y.parent;return{name:g,path:p,params:b,matched:m,meta:mx(m)}}e.forEach(d=>o(d));function f(){n.length=0,r.clear()}return{addRoute:o,resolve:u,removeRoute:a,clearRoutes:f,getRoutes:i,getRecordMatcher:s}}function Yg(e,t){const n={};for(const r of t)r in e&&(n[r]=e[r]);return n}function Gg(e){const t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:vx(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:\"components\"in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,\"mods\",{value:{}}),t}function vx(e){const t={},n=e.props||!1;if(\"component\"in e)t.default=n;else for(const r in e.components)t[r]=typeof n==\"object\"?n[r]:n;return t}function Xg(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function mx(e){return e.reduce((t,n)=>Kt(t,n.meta),{})}function Jg(e,t){const n={};for(const r in e)n[r]=r in t?t[r]:e[r];return n}function gx(e,t){let n=0,r=t.length;for(;n!==r;){const o=n+r>>1;lw(e,t[o])<0?r=o:n=o+1}const s=_x(e);return s&&(r=t.lastIndexOf(s,r-1)),r}function _x(e){let t=e;for(;t=t.parent;)if(cw(t)&&lw(e,t)===0)return t}function cw({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function bx(e){const t={};if(e===\"\"||e===\"?\")return t;const r=(e[0]===\"?\"?e.slice(1):e).split(\"&\");for(let s=0;s<r.length;++s){const o=r[s].replace(ew,\" \"),a=o.indexOf(\"=\"),i=il(a<0?o:o.slice(0,a)),l=a<0?null:il(o.slice(a+1));if(i in t){let u=t[i];Pr(u)||(u=t[i]=[u]),u.push(l)}else t[i]=l}return t}function Zg(e){let t=\"\";for(let n in e){const r=e[n];if(n=NR(n),r==null){r!==void 0&&(t+=(t.length?\"&\":\"\")+n);continue}(Pr(r)?r.map(o=>o&&dh(o)):[r&&dh(r)]).forEach(o=>{o!==void 0&&(t+=(t.length?\"&\":\"\")+n,o!=null&&(t+=\"=\"+o))})}return t}function yx(e){const t={};for(const n in e){const r=e[n];r!==void 0&&(t[n]=Pr(r)?r.map(s=>s==null?null:\"\"+s):r==null?r:\"\"+r)}return t}const wx=Symbol(\"\"),Qg=Symbol(\"\"),id=Symbol(\"\"),uw=Symbol(\"\"),hh=Symbol(\"\");function ka(){let e=[];function t(r){return e.push(r),()=>{const s=e.indexOf(r);s>-1&&e.splice(s,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function qs(e,t,n,r,s,o=a=>a()){const a=r&&(r.enterCallbacks[s]=r.enterCallbacks[s]||[]);return()=>new Promise((i,l)=>{const u=h=>{h===!1?l(Fi(4,{from:n,to:t})):h instanceof Error?l(h):ox(h)?l(Fi(2,{from:t,to:h})):(a&&r.enterCallbacks[s]===a&&typeof h==\"function\"&&a.push(h),i())},f=o(()=>e.call(r&&r.instances[s],t,n,u));let d=Promise.resolve(f);e.length<3&&(d=d.then(u)),d.catch(h=>l(h))})}function df(e,t,n,r,s=o=>o()){const o=[];for(const a of e)for(const i in a.components){let l=a.components[i];if(!(t!==\"beforeRouteEnter\"&&!a.instances[i]))if(Z1(l)){const f=(l.__vccOpts||l)[t];f&&o.push(qs(f,n,r,a,i,s))}else{let u=l();o.push(()=>u.then(f=>{if(!f)throw new Error(`Couldn't resolve component \"${i}\" at \"${a.path}\"`);const d=RR(f)?f.default:f;a.mods[i]=f,a.components[i]=d;const v=(d.__vccOpts||d)[t];return v&&qs(v,n,r,a,i,s)()}))}}return o}function e0(e){const t=Fe(id),n=Fe(uw),r=O(()=>{const l=c(e.to);return t.resolve(l)}),s=O(()=>{const{matched:l}=r.value,{length:u}=l,f=l[u-1],d=n.matched;if(!f||!d.length)return-1;const h=d.findIndex(Ni.bind(null,f));if(h>-1)return h;const v=t0(l[u-2]);return u>1&&t0(f)===v&&d[d.length-1].path!==v?d.findIndex(Ni.bind(null,l[u-2])):h}),o=O(()=>s.value>-1&&Tx(n.params,r.value.params)),a=O(()=>s.value>-1&&s.value===n.matched.length-1&&sw(n.params,r.value.params));function i(l={}){if(Ex(l)){const u=t[c(e.replace)?\"replace\":\"push\"](c(e.to)).catch(Ka);return e.viewTransition&&typeof document<\"u\"&&\"startViewTransition\"in document&&document.startViewTransition(()=>u),u}return Promise.resolve()}return{route:r,href:O(()=>r.value.href),isActive:o,isExactActive:a,navigate:i}}function Sx(e){return e.length===1?e[0]:e}const Cx=ee({name:\"RouterLink\",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:\"page\"}},useLink:e0,setup(e,{slots:t}){const n=St(e0(e)),{options:r}=Fe(id),s=O(()=>({[n0(e.activeClass,r.linkActiveClass,\"router-link-active\")]:n.isActive,[n0(e.exactActiveClass,r.linkExactActiveClass,\"router-link-exact-active\")]:n.isExactActive}));return()=>{const o=t.default&&Sx(t.default(n));return e.custom?o:Ye(\"a\",{\"aria-current\":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:s.value},o)}}}),kx=Cx;function Ex(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute(\"target\");if(/\\b_blank\\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function Tx(e,t){for(const n in t){const r=t[n],s=e[n];if(typeof r==\"string\"){if(r!==s)return!1}else if(!Pr(s)||s.length!==r.length||r.some((o,a)=>o!==s[a]))return!1}return!0}function t0(e){return e?e.aliasOf?e.aliasOf.path:e.path:\"\"}const n0=(e,t,n)=>e??t??n,Rx=ee({name:\"RouterView\",inheritAttrs:!1,props:{name:{type:String,default:\"default\"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:n}){const r=Fe(hh),s=O(()=>e.route||r.value),o=Fe(Qg,0),a=O(()=>{let u=c(o);const{matched:f}=s.value;let d;for(;(d=f[u])&&!d.components;)u++;return u}),i=O(()=>s.value.matched[a.value]);pt(Qg,O(()=>a.value+1)),pt(wx,i),pt(hh,s);const l=W();return ye(()=>[l.value,i.value,e.name],([u,f,d],[h,v,b])=>{f&&(f.instances[d]=u,v&&v!==f&&u&&u===h&&(f.leaveGuards.size||(f.leaveGuards=v.leaveGuards),f.updateGuards.size||(f.updateGuards=v.updateGuards))),u&&f&&(!v||!Ni(f,v)||!h)&&(f.enterCallbacks[d]||[]).forEach(p=>p(u))},{flush:\"post\"}),()=>{const u=s.value,f=e.name,d=i.value,h=d&&d.components[f];if(!h)return r0(n.default,{Component:h,route:u});const v=d.props[f],b=v?v===!0?u.params:typeof v==\"function\"?v(u):v:null,g=Ye(h,Kt({},b,t,{onVnodeUnmounted:m=>{m.component.isUnmounted&&(d.instances[f]=null)},ref:l}));return r0(n.default,{Component:g,route:u})||g}}});function r0(e,t){if(!e)return null;const n=e(t);return n.length===1?n[0]:n}const xx=Rx;function Ox(e){const t=px(e.routes,e),n=e.parseQuery||bx,r=e.stringifyQuery||Zg,s=e.history,o=ka(),a=ka(),i=ka(),l=Wt(Bs);let u=Bs;mi&&e.scrollBehavior&&\"scrollRestoration\"in history&&(history.scrollRestoration=\"manual\");const f=cf.bind(null,K=>\"\"+K),d=cf.bind(null,HR),h=cf.bind(null,il);function v(K,z){let te,oe;return iw(K)?(te=t.getRecordMatcher(K),oe=z):oe=K,t.addRoute(oe,te)}function b(K){const z=t.getRecordMatcher(K);z&&t.removeRoute(z)}function p(){return t.getRoutes().map(K=>K.record)}function g(K){return!!t.getRecordMatcher(K)}function m(K,z){if(z=Kt({},z||l.value),typeof K==\"string\"){const Q=uf(n,K,z.path),se=t.resolve({path:Q.path},z),ge=s.createHref(Q.fullPath);return Kt(Q,se,{params:h(se.params),hash:il(Q.hash),redirectedFrom:void 0,href:ge})}let te;if(K.path!=null)te=Kt({},K,{path:uf(n,K.path,z.path).path});else{const Q=Kt({},K.params);for(const se in Q)Q[se]==null&&delete Q[se];te=Kt({},K,{params:d(Q)}),z.params=d(z.params)}const oe=t.resolve(te,z),he=K.hash||\"\";oe.params=f(h(oe.params));const Y=WR(r,Kt({},K,{hash:BR(he),path:oe.path})),L=s.createHref(Y);return Kt({fullPath:Y,hash:he,query:r===Zg?yx(K.query):K.query||{}},oe,{redirectedFrom:void 0,href:L})}function y(K){return typeof K==\"string\"?uf(n,K,l.value.path):Kt({},K)}function _(K,z){if(u!==K)return Fi(8,{from:z,to:K})}function w(K){return E(K)}function S(K){return w(Kt(y(K),{replace:!0}))}function C(K){const z=K.matched[K.matched.length-1];if(z&&z.redirect){const{redirect:te}=z;let oe=typeof te==\"function\"?te(K):te;return typeof oe==\"string\"&&(oe=oe.includes(\"?\")||oe.includes(\"#\")?oe=y(oe):{path:oe},oe.params={}),Kt({query:K.query,hash:K.hash,params:oe.path!=null?{}:K.params},oe)}}function E(K,z){const te=u=m(K),oe=l.value,he=K.state,Y=K.force,L=K.replace===!0,Q=C(te);if(Q)return E(Kt(y(Q),{state:typeof Q==\"object\"?Kt({},he,Q.state):he,force:Y,replace:L}),z||te);const se=te;se.redirectedFrom=z;let ge;return!Y&&KR(r,oe,te)&&(ge=Fi(16,{to:se,from:oe}),N(oe,oe,!0,!1)),(ge?Promise.resolve(ge):x(se,oe)).catch(ae=>hs(ae)?hs(ae,2)?ae:B(ae):F(ae,se,oe)).then(ae=>{if(ae){if(hs(ae,2))return E(Kt({replace:L},y(ae.to),{state:typeof ae.to==\"object\"?Kt({},he,ae.to.state):he,force:Y}),z||se)}else ae=A(se,oe,!0,L,he);return M(se,oe,ae),ae})}function k(K,z){const te=_(K,z);return te?Promise.reject(te):Promise.resolve()}function T(K){const z=re.values().next().value;return z&&typeof z.runWithContext==\"function\"?z.runWithContext(K):K()}function x(K,z){let te;const[oe,he,Y]=Mx(K,z);te=df(oe.reverse(),\"beforeRouteLeave\",K,z);for(const Q of oe)Q.leaveGuards.forEach(se=>{te.push(qs(se,K,z))});const L=k.bind(null,K,z);return te.push(L),pe(te).then(()=>{te=[];for(const Q of o.list())te.push(qs(Q,K,z));return te.push(L),pe(te)}).then(()=>{te=df(he,\"beforeRouteUpdate\",K,z);for(const Q of he)Q.updateGuards.forEach(se=>{te.push(qs(se,K,z))});return te.push(L),pe(te)}).then(()=>{te=[];for(const Q of Y)if(Q.beforeEnter)if(Pr(Q.beforeEnter))for(const se of Q.beforeEnter)te.push(qs(se,K,z));else te.push(qs(Q.beforeEnter,K,z));return te.push(L),pe(te)}).then(()=>(K.matched.forEach(Q=>Q.enterCallbacks={}),te=df(Y,\"beforeRouteEnter\",K,z,T),te.push(L),pe(te))).then(()=>{te=[];for(const Q of a.list())te.push(qs(Q,K,z));return te.push(L),pe(te)}).catch(Q=>hs(Q,8)?Q:Promise.reject(Q))}function M(K,z,te){i.list().forEach(oe=>T(()=>oe(K,z,te)))}function A(K,z,te,oe,he){const Y=_(K,z);if(Y)return Y;const L=z===Bs,Q=mi?history.state:{};te&&(oe||L?s.replace(K.fullPath,Kt({scroll:L&&Q&&Q.scroll},he)):s.push(K.fullPath,he)),l.value=K,N(K,z,te,L),B()}let P;function G(){P||(P=s.listen((K,z,te)=>{if(!le.listening)return;const oe=m(K),he=C(oe);if(he){E(Kt(he,{replace:!0,force:!0}),oe).catch(Ka);return}u=oe;const Y=l.value;mi&&ZR(Wg(Y.fullPath,te.delta),od()),x(oe,Y).catch(L=>hs(L,12)?L:hs(L,2)?(E(Kt(y(L.to),{force:!0}),oe).then(Q=>{hs(Q,20)&&!te.delta&&te.type===al.pop&&s.go(-1,!1)}).catch(Ka),Promise.reject()):(te.delta&&s.go(-te.delta,!1),F(L,oe,Y))).then(L=>{L=L||A(oe,Y,!1),L&&(te.delta&&!hs(L,8)?s.go(-te.delta,!1):te.type===al.pop&&hs(L,20)&&s.go(-1,!1)),M(oe,Y,L)}).catch(Ka)}))}let V=ka(),I=ka(),j;function F(K,z,te){B(K);const oe=I.list();return oe.length?oe.forEach(he=>he(K,z,te)):console.error(K),Promise.reject(K)}function R(){return j&&l.value!==Bs?Promise.resolve():new Promise((K,z)=>{V.add([K,z])})}function B(K){return j||(j=!K,G(),V.list().forEach(([z,te])=>K?te(K):z()),V.reset()),K}function N(K,z,te,oe){const{scrollBehavior:he}=e;if(!mi||!he)return Promise.resolve();const Y=!te&&QR(Wg(K.fullPath,0))||(oe||!te)&&history.state&&history.state.scroll||null;return je().then(()=>he(K,z,Y)).then(L=>L&&JR(L)).catch(L=>F(L,K,z))}const U=K=>s.go(K);let J;const re=new Set,le={currentRoute:l,listening:!0,addRoute:v,removeRoute:b,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:p,resolve:m,options:e,push:w,replace:S,go:U,back:()=>U(-1),forward:()=>U(1),beforeEach:o.add,beforeResolve:a.add,afterEach:i.add,onError:I.add,isReady:R,install(K){const z=this;K.component(\"RouterLink\",kx),K.component(\"RouterView\",xx),K.config.globalProperties.$router=z,Object.defineProperty(K.config.globalProperties,\"$route\",{enumerable:!0,get:()=>c(l)}),mi&&!J&&l.value===Bs&&(J=!0,w(s.location).catch(he=>{}));const te={};for(const he in Bs)Object.defineProperty(te,he,{get:()=>l.value[he],enumerable:!0});K.provide(id,z),K.provide(uw,Wp(te)),K.provide(hh,l);const oe=K.unmount;re.add(K),K.unmount=function(){re.delete(K),re.size<1&&(u=Bs,P&&P(),P=null,l.value=Bs,J=!1,j=!1),oe()}}};function pe(K){return K.reduce((z,te)=>z.then(()=>T(te)),Promise.resolve())}return le}function Mx(e,t){const n=[],r=[],s=[],o=Math.max(t.matched.length,e.matched.length);for(let a=0;a<o;a++){const i=t.matched[a];i&&(e.matched.find(u=>Ni(u,i))?r.push(i):n.push(i));const l=e.matched[a];l&&(t.matched.find(u=>Ni(u,l))||s.push(l))}return[n,r,s]}function Su(){return Fe(id)}function dw(e,t){return function(){return e.apply(t,arguments)}}const{toString:Ax}=Object.prototype,{getPrototypeOf:ov}=Object,ad=(e=>t=>{const n=Ax.call(t);return e[n]||(e[n]=n.slice(8,-1).toLowerCase())})(Object.create(null)),Fr=e=>(e=e.toLowerCase(),t=>ad(t)===e),ld=e=>t=>typeof t===e,{isArray:oa}=Array,ll=ld(\"undefined\");function $x(e){return e!==null&&!ll(e)&&e.constructor!==null&&!ll(e.constructor)&&ar(e.constructor.isBuffer)&&e.constructor.isBuffer(e)}const fw=Fr(\"ArrayBuffer\");function Lx(e){let t;return typeof ArrayBuffer<\"u\"&&ArrayBuffer.isView?t=ArrayBuffer.isView(e):t=e&&e.buffer&&fw(e.buffer),t}const Ix=ld(\"string\"),ar=ld(\"function\"),hw=ld(\"number\"),cd=e=>e!==null&&typeof e==\"object\",Px=e=>e===!0||e===!1,Dc=e=>{if(ad(e)!==\"object\")return!1;const t=ov(e);return(t===null||t===Object.prototype||Object.getPrototypeOf(t)===null)&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)},Dx=Fr(\"Date\"),Bx=Fr(\"File\"),Nx=Fr(\"Blob\"),Fx=Fr(\"FileList\"),Hx=e=>cd(e)&&ar(e.pipe),Vx=e=>{let t;return e&&(typeof FormData==\"function\"&&e instanceof FormData||ar(e.append)&&((t=ad(e))===\"formdata\"||t===\"object\"&&ar(e.toString)&&e.toString()===\"[object FormData]\"))},zx=Fr(\"URLSearchParams\"),[Wx,Kx,jx,Ux]=[\"ReadableStream\",\"Request\",\"Response\",\"Headers\"].map(Fr),qx=e=>e.trim?e.trim():e.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\"\");function Nl(e,t,{allOwnKeys:n=!1}={}){if(e===null||typeof e>\"u\")return;let r,s;if(typeof e!=\"object\"&&(e=[e]),oa(e))for(r=0,s=e.length;r<s;r++)t.call(null,e[r],r,e);else{const o=n?Object.getOwnPropertyNames(e):Object.keys(e),a=o.length;let i;for(r=0;r<a;r++)i=o[r],t.call(null,e[i],i,e)}}function pw(e,t){t=t.toLowerCase();const n=Object.keys(e);let r=n.length,s;for(;r-- >0;)if(s=n[r],t===s.toLowerCase())return s;return null}const $o=typeof globalThis<\"u\"?globalThis:typeof self<\"u\"?self:typeof window<\"u\"?window:global,vw=e=>!ll(e)&&e!==$o;function ph(){const{caseless:e}=vw(this)&&this||{},t={},n=(r,s)=>{const o=e&&pw(t,s)||s;Dc(t[o])&&Dc(r)?t[o]=ph(t[o],r):Dc(r)?t[o]=ph({},r):oa(r)?t[o]=r.slice():t[o]=r};for(let r=0,s=arguments.length;r<s;r++)arguments[r]&&Nl(arguments[r],n);return t}const Yx=(e,t,n,{allOwnKeys:r}={})=>(Nl(t,(s,o)=>{n&&ar(s)?e[o]=dw(s,n):e[o]=s},{allOwnKeys:r}),e),Gx=e=>(e.charCodeAt(0)===65279&&(e=e.slice(1)),e),Xx=(e,t,n,r)=>{e.prototype=Object.create(t.prototype,r),e.prototype.constructor=e,Object.defineProperty(e,\"super\",{value:t.prototype}),n&&Object.assign(e.prototype,n)},Jx=(e,t,n,r)=>{let s,o,a;const i={};if(t=t||{},e==null)return t;do{for(s=Object.getOwnPropertyNames(e),o=s.length;o-- >0;)a=s[o],(!r||r(a,e,t))&&!i[a]&&(t[a]=e[a],i[a]=!0);e=n!==!1&&ov(e)}while(e&&(!n||n(e,t))&&e!==Object.prototype);return t},Zx=(e,t,n)=>{e=String(e),(n===void 0||n>e.length)&&(n=e.length),n-=t.length;const r=e.indexOf(t,n);return r!==-1&&r===n},Qx=e=>{if(!e)return null;if(oa(e))return e;let t=e.length;if(!hw(t))return null;const n=new Array(t);for(;t-- >0;)n[t]=e[t];return n},e4=(e=>t=>e&&t instanceof e)(typeof Uint8Array<\"u\"&&ov(Uint8Array)),t4=(e,t)=>{const r=(e&&e[Symbol.iterator]).call(e);let s;for(;(s=r.next())&&!s.done;){const o=s.value;t.call(e,o[0],o[1])}},n4=(e,t)=>{let n;const r=[];for(;(n=e.exec(t))!==null;)r.push(n);return r},r4=Fr(\"HTMLFormElement\"),s4=e=>e.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,function(n,r,s){return r.toUpperCase()+s}),s0=(({hasOwnProperty:e})=>(t,n)=>e.call(t,n))(Object.prototype),o4=Fr(\"RegExp\"),mw=(e,t)=>{const n=Object.getOwnPropertyDescriptors(e),r={};Nl(n,(s,o)=>{let a;(a=t(s,o,e))!==!1&&(r[o]=a||s)}),Object.defineProperties(e,r)},i4=e=>{mw(e,(t,n)=>{if(ar(e)&&[\"arguments\",\"caller\",\"callee\"].indexOf(n)!==-1)return!1;const r=e[n];if(ar(r)){if(t.enumerable=!1,\"writable\"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error(\"Can not rewrite read-only method '\"+n+\"'\")})}})},a4=(e,t)=>{const n={},r=s=>{s.forEach(o=>{n[o]=!0})};return oa(e)?r(e):r(String(e).split(t)),n},l4=()=>{},c4=(e,t)=>e!=null&&Number.isFinite(e=+e)?e:t,ff=\"abcdefghijklmnopqrstuvwxyz\",o0=\"0123456789\",gw={DIGIT:o0,ALPHA:ff,ALPHA_DIGIT:ff+ff.toUpperCase()+o0},u4=(e=16,t=gw.ALPHA_DIGIT)=>{let n=\"\";const{length:r}=t;for(;e--;)n+=t[Math.random()*r|0];return n};function d4(e){return!!(e&&ar(e.append)&&e[Symbol.toStringTag]===\"FormData\"&&e[Symbol.iterator])}const f4=e=>{const t=new Array(10),n=(r,s)=>{if(cd(r)){if(t.indexOf(r)>=0)return;if(!(\"toJSON\"in r)){t[s]=r;const o=oa(r)?[]:{};return Nl(r,(a,i)=>{const l=n(a,s+1);!ll(l)&&(o[i]=l)}),t[s]=void 0,o}}return r};return n(e,0)},h4=Fr(\"AsyncFunction\"),p4=e=>e&&(cd(e)||ar(e))&&ar(e.then)&&ar(e.catch),_w=((e,t)=>e?setImmediate:t?((n,r)=>($o.addEventListener(\"message\",({source:s,data:o})=>{s===$o&&o===n&&r.length&&r.shift()()},!1),s=>{r.push(s),$o.postMessage(n,\"*\")}))(`axios@${Math.random()}`,[]):n=>setTimeout(n))(typeof setImmediate==\"function\",ar($o.postMessage)),v4=typeof queueMicrotask<\"u\"?queueMicrotask.bind($o):typeof process<\"u\"&&process.nextTick||_w,Be={isArray:oa,isArrayBuffer:fw,isBuffer:$x,isFormData:Vx,isArrayBufferView:Lx,isString:Ix,isNumber:hw,isBoolean:Px,isObject:cd,isPlainObject:Dc,isReadableStream:Wx,isRequest:Kx,isResponse:jx,isHeaders:Ux,isUndefined:ll,isDate:Dx,isFile:Bx,isBlob:Nx,isRegExp:o4,isFunction:ar,isStream:Hx,isURLSearchParams:zx,isTypedArray:e4,isFileList:Fx,forEach:Nl,merge:ph,extend:Yx,trim:qx,stripBOM:Gx,inherits:Xx,toFlatObject:Jx,kindOf:ad,kindOfTest:Fr,endsWith:Zx,toArray:Qx,forEachEntry:t4,matchAll:n4,isHTMLForm:r4,hasOwnProperty:s0,hasOwnProp:s0,reduceDescriptors:mw,freezeMethods:i4,toObjectSet:a4,toCamelCase:s4,noop:l4,toFiniteNumber:c4,findKey:pw,global:$o,isContextDefined:vw,ALPHABET:gw,generateString:u4,isSpecCompliantForm:d4,toJSONObject:f4,isAsyncFn:h4,isThenable:p4,setImmediate:_w,asap:v4};function Rt(e,t,n,r,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=e,this.name=\"AxiosError\",t&&(this.code=t),n&&(this.config=n),r&&(this.request=r),s&&(this.response=s,this.status=s.status?s.status:null)}Be.inherits(Rt,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:Be.toJSONObject(this.config),code:this.code,status:this.status}}});const bw=Rt.prototype,yw={};[\"ERR_BAD_OPTION_VALUE\",\"ERR_BAD_OPTION\",\"ECONNABORTED\",\"ETIMEDOUT\",\"ERR_NETWORK\",\"ERR_FR_TOO_MANY_REDIRECTS\",\"ERR_DEPRECATED\",\"ERR_BAD_RESPONSE\",\"ERR_BAD_REQUEST\",\"ERR_CANCELED\",\"ERR_NOT_SUPPORT\",\"ERR_INVALID_URL\"].forEach(e=>{yw[e]={value:e}});Object.defineProperties(Rt,yw);Object.defineProperty(bw,\"isAxiosError\",{value:!0});Rt.from=(e,t,n,r,s,o)=>{const a=Object.create(bw);return Be.toFlatObject(e,a,function(l){return l!==Error.prototype},i=>i!==\"isAxiosError\"),Rt.call(a,e.message,t,n,r,s),a.cause=e,a.name=e.name,o&&Object.assign(a,o),a};const m4=null;function vh(e){return Be.isPlainObject(e)||Be.isArray(e)}function ww(e){return Be.endsWith(e,\"[]\")?e.slice(0,-2):e}function i0(e,t,n){return e?e.concat(t).map(function(s,o){return s=ww(s),!n&&o?\"[\"+s+\"]\":s}).join(n?\".\":\"\"):t}function g4(e){return Be.isArray(e)&&!e.some(vh)}const _4=Be.toFlatObject(Be,{},null,function(t){return/^is[A-Z]/.test(t)});function ud(e,t,n){if(!Be.isObject(e))throw new TypeError(\"target must be an object\");t=t||new FormData,n=Be.toFlatObject(n,{metaTokens:!0,dots:!1,indexes:!1},!1,function(p,g){return!Be.isUndefined(g[p])});const r=n.metaTokens,s=n.visitor||f,o=n.dots,a=n.indexes,l=(n.Blob||typeof Blob<\"u\"&&Blob)&&Be.isSpecCompliantForm(t);if(!Be.isFunction(s))throw new TypeError(\"visitor must be a function\");function u(b){if(b===null)return\"\";if(Be.isDate(b))return b.toISOString();if(!l&&Be.isBlob(b))throw new Rt(\"Blob is not supported. Use a Buffer instead.\");return Be.isArrayBuffer(b)||Be.isTypedArray(b)?l&&typeof Blob==\"function\"?new Blob([b]):Buffer.from(b):b}function f(b,p,g){let m=b;if(b&&!g&&typeof b==\"object\"){if(Be.endsWith(p,\"{}\"))p=r?p:p.slice(0,-2),b=JSON.stringify(b);else if(Be.isArray(b)&&g4(b)||(Be.isFileList(b)||Be.endsWith(p,\"[]\"))&&(m=Be.toArray(b)))return p=ww(p),m.forEach(function(_,w){!(Be.isUndefined(_)||_===null)&&t.append(a===!0?i0([p],w,o):a===null?p:p+\"[]\",u(_))}),!1}return vh(b)?!0:(t.append(i0(g,p,o),u(b)),!1)}const d=[],h=Object.assign(_4,{defaultVisitor:f,convertValue:u,isVisitable:vh});function v(b,p){if(!Be.isUndefined(b)){if(d.indexOf(b)!==-1)throw Error(\"Circular reference detected in \"+p.join(\".\"));d.push(b),Be.forEach(b,function(m,y){(!(Be.isUndefined(m)||m===null)&&s.call(t,m,Be.isString(y)?y.trim():y,p,h))===!0&&v(m,p?p.concat(y):[y])}),d.pop()}}if(!Be.isObject(e))throw new TypeError(\"data must be an object\");return v(e),t}function a0(e){const t={\"!\":\"%21\",\"'\":\"%27\",\"(\":\"%28\",\")\":\"%29\",\"~\":\"%7E\",\"%20\":\"+\",\"%00\":\"\\0\"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(r){return t[r]})}function iv(e,t){this._pairs=[],e&&ud(e,this,t)}const Sw=iv.prototype;Sw.append=function(t,n){this._pairs.push([t,n])};Sw.toString=function(t){const n=t?function(r){return t.call(this,r,a0)}:a0;return this._pairs.map(function(s){return n(s[0])+\"=\"+n(s[1])},\"\").join(\"&\")};function b4(e){return encodeURIComponent(e).replace(/%3A/gi,\":\").replace(/%24/g,\"$\").replace(/%2C/gi,\",\").replace(/%20/g,\"+\").replace(/%5B/gi,\"[\").replace(/%5D/gi,\"]\")}function Cw(e,t,n){if(!t)return e;const r=n&&n.encode||b4;Be.isFunction(n)&&(n={serialize:n});const s=n&&n.serialize;let o;if(s?o=s(t,n):o=Be.isURLSearchParams(t)?t.toString():new iv(t,n).toString(r),o){const a=e.indexOf(\"#\");a!==-1&&(e=e.slice(0,a)),e+=(e.indexOf(\"?\")===-1?\"?\":\"&\")+o}return e}class l0{constructor(){this.handlers=[]}use(t,n,r){return this.handlers.push({fulfilled:t,rejected:n,synchronous:r?r.synchronous:!1,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(t){this.handlers[t]&&(this.handlers[t]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(t){Be.forEach(this.handlers,function(r){r!==null&&t(r)})}}const kw={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},y4=typeof URLSearchParams<\"u\"?URLSearchParams:iv,w4=typeof FormData<\"u\"?FormData:null,S4=typeof Blob<\"u\"?Blob:null,C4={isBrowser:!0,classes:{URLSearchParams:y4,FormData:w4,Blob:S4},protocols:[\"http\",\"https\",\"file\",\"blob\",\"url\",\"data\"]},av=typeof window<\"u\"&&typeof document<\"u\",mh=typeof navigator==\"object\"&&navigator||void 0,k4=av&&(!mh||[\"ReactNative\",\"NativeScript\",\"NS\"].indexOf(mh.product)<0),E4=typeof WorkerGlobalScope<\"u\"&&self instanceof WorkerGlobalScope&&typeof self.importScripts==\"function\",T4=av&&window.location.href||\"http://localhost\",R4=Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:av,hasStandardBrowserEnv:k4,hasStandardBrowserWebWorkerEnv:E4,navigator:mh,origin:T4},Symbol.toStringTag,{value:\"Module\"})),In={...R4,...C4};function x4(e,t){return ud(e,new In.classes.URLSearchParams,Object.assign({visitor:function(n,r,s,o){return In.isNode&&Be.isBuffer(n)?(this.append(r,n.toString(\"base64\")),!1):o.defaultVisitor.apply(this,arguments)}},t))}function O4(e){return Be.matchAll(/\\w+|\\[(\\w*)]/g,e).map(t=>t[0]===\"[]\"?\"\":t[1]||t[0])}function M4(e){const t={},n=Object.keys(e);let r;const s=n.length;let o;for(r=0;r<s;r++)o=n[r],t[o]=e[o];return t}function Ew(e){function t(n,r,s,o){let a=n[o++];if(a===\"__proto__\")return!0;const i=Number.isFinite(+a),l=o>=n.length;return a=!a&&Be.isArray(s)?s.length:a,l?(Be.hasOwnProp(s,a)?s[a]=[s[a],r]:s[a]=r,!i):((!s[a]||!Be.isObject(s[a]))&&(s[a]=[]),t(n,r,s[a],o)&&Be.isArray(s[a])&&(s[a]=M4(s[a])),!i)}if(Be.isFormData(e)&&Be.isFunction(e.entries)){const n={};return Be.forEachEntry(e,(r,s)=>{t(O4(r),s,n,0)}),n}return null}function A4(e,t,n){if(Be.isString(e))try{return(t||JSON.parse)(e),Be.trim(e)}catch(r){if(r.name!==\"SyntaxError\")throw r}return(0,JSON.stringify)(e)}const Fl={transitional:kw,adapter:[\"xhr\",\"http\",\"fetch\"],transformRequest:[function(t,n){const r=n.getContentType()||\"\",s=r.indexOf(\"application/json\")>-1,o=Be.isObject(t);if(o&&Be.isHTMLForm(t)&&(t=new FormData(t)),Be.isFormData(t))return s?JSON.stringify(Ew(t)):t;if(Be.isArrayBuffer(t)||Be.isBuffer(t)||Be.isStream(t)||Be.isFile(t)||Be.isBlob(t)||Be.isReadableStream(t))return t;if(Be.isArrayBufferView(t))return t.buffer;if(Be.isURLSearchParams(t))return n.setContentType(\"application/x-www-form-urlencoded;charset=utf-8\",!1),t.toString();let i;if(o){if(r.indexOf(\"application/x-www-form-urlencoded\")>-1)return x4(t,this.formSerializer).toString();if((i=Be.isFileList(t))||r.indexOf(\"multipart/form-data\")>-1){const l=this.env&&this.env.FormData;return ud(i?{\"files[]\":t}:t,l&&new l,this.formSerializer)}}return o||s?(n.setContentType(\"application/json\",!1),A4(t)):t}],transformResponse:[function(t){const n=this.transitional||Fl.transitional,r=n&&n.forcedJSONParsing,s=this.responseType===\"json\";if(Be.isResponse(t)||Be.isReadableStream(t))return t;if(t&&Be.isString(t)&&(r&&!this.responseType||s)){const a=!(n&&n.silentJSONParsing)&&s;try{return JSON.parse(t)}catch(i){if(a)throw i.name===\"SyntaxError\"?Rt.from(i,Rt.ERR_BAD_RESPONSE,this,null,this.response):i}}return t}],timeout:0,xsrfCookieName:\"XSRF-TOKEN\",xsrfHeaderName:\"X-XSRF-TOKEN\",maxContentLength:-1,maxBodyLength:-1,env:{FormData:In.classes.FormData,Blob:In.classes.Blob},validateStatus:function(t){return t>=200&&t<300},headers:{common:{Accept:\"application/json, text/plain, */*\",\"Content-Type\":void 0}}};Be.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\"],e=>{Fl.headers[e]={}});const $4=Be.toObjectSet([\"age\",\"authorization\",\"content-length\",\"content-type\",\"etag\",\"expires\",\"from\",\"host\",\"if-modified-since\",\"if-unmodified-since\",\"last-modified\",\"location\",\"max-forwards\",\"proxy-authorization\",\"referer\",\"retry-after\",\"user-agent\"]),L4=e=>{const t={};let n,r,s;return e&&e.split(`\n`).forEach(function(a){s=a.indexOf(\":\"),n=a.substring(0,s).trim().toLowerCase(),r=a.substring(s+1).trim(),!(!n||t[n]&&$4[n])&&(n===\"set-cookie\"?t[n]?t[n].push(r):t[n]=[r]:t[n]=t[n]?t[n]+\", \"+r:r)}),t},c0=Symbol(\"internals\");function Ea(e){return e&&String(e).trim().toLowerCase()}function Bc(e){return e===!1||e==null?e:Be.isArray(e)?e.map(Bc):String(e)}function I4(e){const t=Object.create(null),n=/([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;let r;for(;r=n.exec(e);)t[r[1]]=r[2];return t}const P4=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function hf(e,t,n,r,s){if(Be.isFunction(r))return r.call(this,t,n);if(s&&(t=n),!!Be.isString(t)){if(Be.isString(r))return t.indexOf(r)!==-1;if(Be.isRegExp(r))return r.test(t)}}function D4(e){return e.trim().toLowerCase().replace(/([a-z\\d])(\\w*)/g,(t,n,r)=>n.toUpperCase()+r)}function B4(e,t){const n=Be.toCamelCase(\" \"+t);[\"get\",\"set\",\"has\"].forEach(r=>{Object.defineProperty(e,r+n,{value:function(s,o,a){return this[r].call(this,t,s,o,a)},configurable:!0})})}class Qn{constructor(t){t&&this.set(t)}set(t,n,r){const s=this;function o(i,l,u){const f=Ea(l);if(!f)throw new Error(\"header name must be a non-empty string\");const d=Be.findKey(s,f);(!d||s[d]===void 0||u===!0||u===void 0&&s[d]!==!1)&&(s[d||l]=Bc(i))}const a=(i,l)=>Be.forEach(i,(u,f)=>o(u,f,l));if(Be.isPlainObject(t)||t instanceof this.constructor)a(t,n);else if(Be.isString(t)&&(t=t.trim())&&!P4(t))a(L4(t),n);else if(Be.isHeaders(t))for(const[i,l]of t.entries())o(l,i,r);else t!=null&&o(n,t,r);return this}get(t,n){if(t=Ea(t),t){const r=Be.findKey(this,t);if(r){const s=this[r];if(!n)return s;if(n===!0)return I4(s);if(Be.isFunction(n))return n.call(this,s,r);if(Be.isRegExp(n))return n.exec(s);throw new TypeError(\"parser must be boolean|regexp|function\")}}}has(t,n){if(t=Ea(t),t){const r=Be.findKey(this,t);return!!(r&&this[r]!==void 0&&(!n||hf(this,this[r],r,n)))}return!1}delete(t,n){const r=this;let s=!1;function o(a){if(a=Ea(a),a){const i=Be.findKey(r,a);i&&(!n||hf(r,r[i],i,n))&&(delete r[i],s=!0)}}return Be.isArray(t)?t.forEach(o):o(t),s}clear(t){const n=Object.keys(this);let r=n.length,s=!1;for(;r--;){const o=n[r];(!t||hf(this,this[o],o,t,!0))&&(delete this[o],s=!0)}return s}normalize(t){const n=this,r={};return Be.forEach(this,(s,o)=>{const a=Be.findKey(r,o);if(a){n[a]=Bc(s),delete n[o];return}const i=t?D4(o):String(o).trim();i!==o&&delete n[o],n[i]=Bc(s),r[i]=!0}),this}concat(...t){return this.constructor.concat(this,...t)}toJSON(t){const n=Object.create(null);return Be.forEach(this,(r,s)=>{r!=null&&r!==!1&&(n[s]=t&&Be.isArray(r)?r.join(\", \"):r)}),n}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([t,n])=>t+\": \"+n).join(`\n`)}get[Symbol.toStringTag](){return\"AxiosHeaders\"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[c0]=this[c0]={accessors:{}}).accessors,s=this.prototype;function o(a){const i=Ea(a);r[i]||(B4(s,a),r[i]=!0)}return Be.isArray(t)?t.forEach(o):o(t),this}}Qn.accessor([\"Content-Type\",\"Content-Length\",\"Accept\",\"Accept-Encoding\",\"User-Agent\",\"Authorization\"]);Be.reduceDescriptors(Qn.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}});Be.freezeMethods(Qn);function pf(e,t){const n=this||Fl,r=t||n,s=Qn.from(r.headers);let o=r.data;return Be.forEach(e,function(i){o=i.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function Tw(e){return!!(e&&e.__CANCEL__)}function ia(e,t,n){Rt.call(this,e??\"canceled\",Rt.ERR_CANCELED,t,n),this.name=\"CanceledError\"}Be.inherits(ia,Rt,{__CANCEL__:!0});function Rw(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new Rt(\"Request failed with status code \"+n.status,[Rt.ERR_BAD_REQUEST,Rt.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function N4(e){const t=/^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(e);return t&&t[1]||\"\"}function F4(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,a;return t=t!==void 0?t:1e3,function(l){const u=Date.now(),f=r[o];a||(a=u),n[s]=l,r[s]=u;let d=o,h=0;for(;d!==s;)h+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-a<t)return;const v=f&&u-f;return v?Math.round(h*1e3/v):void 0}}function H4(e,t){let n=0,r=1e3/t,s,o;const a=(u,f=Date.now())=>{n=f,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const f=Date.now(),d=f-n;d>=r?a(u,f):(s=u,o||(o=setTimeout(()=>{o=null,a(s)},r-d)))},()=>s&&a(s)]}const Cu=(e,t,n=3)=>{let r=0;const s=F4(50,250);return H4(o=>{const a=o.loaded,i=o.lengthComputable?o.total:void 0,l=a-r,u=s(l),f=a<=i;r=a;const d={loaded:a,total:i,progress:i?a/i:void 0,bytes:l,rate:u||void 0,estimated:u&&i&&f?(i-a)/u:void 0,event:o,lengthComputable:i!=null,[t?\"download\":\"upload\"]:!0};e(d)},n)},u0=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},d0=e=>(...t)=>Be.asap(()=>e(...t)),V4=In.hasStandardBrowserEnv?((e,t)=>n=>(n=new URL(n,In.origin),e.protocol===n.protocol&&e.host===n.host&&(t||e.port===n.port)))(new URL(In.origin),In.navigator&&/(msie|trident)/i.test(In.navigator.userAgent)):()=>!0,z4=In.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const a=[e+\"=\"+encodeURIComponent(t)];Be.isNumber(n)&&a.push(\"expires=\"+new Date(n).toGMTString()),Be.isString(r)&&a.push(\"path=\"+r),Be.isString(s)&&a.push(\"domain=\"+s),o===!0&&a.push(\"secure\"),document.cookie=a.join(\"; \")},read(e){const t=document.cookie.match(new RegExp(\"(^|;\\\\s*)(\"+e+\")=([^;]*)\"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,\"\",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function W4(e){return/^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(e)}function K4(e,t){return t?e.replace(/\\/?\\/$/,\"\")+\"/\"+t.replace(/^\\/+/,\"\"):e}function xw(e,t){return e&&!W4(t)?K4(e,t):t}const f0=e=>e instanceof Qn?{...e}:e;function Yo(e,t){t=t||{};const n={};function r(u,f,d,h){return Be.isPlainObject(u)&&Be.isPlainObject(f)?Be.merge.call({caseless:h},u,f):Be.isPlainObject(f)?Be.merge({},f):Be.isArray(f)?f.slice():f}function s(u,f,d,h){if(Be.isUndefined(f)){if(!Be.isUndefined(u))return r(void 0,u,d,h)}else return r(u,f,d,h)}function o(u,f){if(!Be.isUndefined(f))return r(void 0,f)}function a(u,f){if(Be.isUndefined(f)){if(!Be.isUndefined(u))return r(void 0,u)}else return r(void 0,f)}function i(u,f,d){if(d in t)return r(u,f);if(d in e)return r(void 0,u)}const l={url:o,method:o,data:o,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:i,headers:(u,f,d)=>s(f0(u),f0(f),d,!0)};return Be.forEach(Object.keys(Object.assign({},e,t)),function(f){const d=l[f]||s,h=d(e[f],t[f],f);Be.isUndefined(h)&&d!==i||(n[f]=h)}),n}const Ow=e=>{const t=Yo({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:a,auth:i}=t;t.headers=a=Qn.from(a),t.url=Cw(xw(t.baseURL,t.url),e.params,e.paramsSerializer),i&&a.set(\"Authorization\",\"Basic \"+btoa((i.username||\"\")+\":\"+(i.password?unescape(encodeURIComponent(i.password)):\"\")));let l;if(Be.isFormData(n)){if(In.hasStandardBrowserEnv||In.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if((l=a.getContentType())!==!1){const[u,...f]=l?l.split(\";\").map(d=>d.trim()).filter(Boolean):[];a.setContentType([u||\"multipart/form-data\",...f].join(\"; \"))}}if(In.hasStandardBrowserEnv&&(r&&Be.isFunction(r)&&(r=r(t)),r||r!==!1&&V4(t.url))){const u=s&&o&&z4.read(o);u&&a.set(s,u)}return t},j4=typeof XMLHttpRequest<\"u\",U4=j4&&function(e){return new Promise(function(n,r){const s=Ow(e);let o=s.data;const a=Qn.from(s.headers).normalize();let{responseType:i,onUploadProgress:l,onDownloadProgress:u}=s,f,d,h,v,b;function p(){v&&v(),b&&b(),s.cancelToken&&s.cancelToken.unsubscribe(f),s.signal&&s.signal.removeEventListener(\"abort\",f)}let g=new XMLHttpRequest;g.open(s.method.toUpperCase(),s.url,!0),g.timeout=s.timeout;function m(){if(!g)return;const _=Qn.from(\"getAllResponseHeaders\"in g&&g.getAllResponseHeaders()),S={data:!i||i===\"text\"||i===\"json\"?g.responseText:g.response,status:g.status,statusText:g.statusText,headers:_,config:e,request:g};Rw(function(E){n(E),p()},function(E){r(E),p()},S),g=null}\"onloadend\"in g?g.onloadend=m:g.onreadystatechange=function(){!g||g.readyState!==4||g.status===0&&!(g.responseURL&&g.responseURL.indexOf(\"file:\")===0)||setTimeout(m)},g.onabort=function(){g&&(r(new Rt(\"Request aborted\",Rt.ECONNABORTED,e,g)),g=null)},g.onerror=function(){r(new Rt(\"Network Error\",Rt.ERR_NETWORK,e,g)),g=null},g.ontimeout=function(){let w=s.timeout?\"timeout of \"+s.timeout+\"ms exceeded\":\"timeout exceeded\";const S=s.transitional||kw;s.timeoutErrorMessage&&(w=s.timeoutErrorMessage),r(new Rt(w,S.clarifyTimeoutError?Rt.ETIMEDOUT:Rt.ECONNABORTED,e,g)),g=null},o===void 0&&a.setContentType(null),\"setRequestHeader\"in g&&Be.forEach(a.toJSON(),function(w,S){g.setRequestHeader(S,w)}),Be.isUndefined(s.withCredentials)||(g.withCredentials=!!s.withCredentials),i&&i!==\"json\"&&(g.responseType=s.responseType),u&&([h,b]=Cu(u,!0),g.addEventListener(\"progress\",h)),l&&g.upload&&([d,v]=Cu(l),g.upload.addEventListener(\"progress\",d),g.upload.addEventListener(\"loadend\",v)),(s.cancelToken||s.signal)&&(f=_=>{g&&(r(!_||_.type?new ia(null,e,g):_),g.abort(),g=null)},s.cancelToken&&s.cancelToken.subscribe(f),s.signal&&(s.signal.aborted?f():s.signal.addEventListener(\"abort\",f)));const y=N4(s.url);if(y&&In.protocols.indexOf(y)===-1){r(new Rt(\"Unsupported protocol \"+y+\":\",Rt.ERR_BAD_REQUEST,e));return}g.send(o||null)})},q4=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,i();const f=u instanceof Error?u:this.reason;r.abort(f instanceof Rt?f:new ia(f instanceof Error?f.message:f))}};let a=t&&setTimeout(()=>{a=null,o(new Rt(`timeout ${t} of ms exceeded`,Rt.ETIMEDOUT))},t);const i=()=>{e&&(a&&clearTimeout(a),a=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener(\"abort\",o)}),e=null)};e.forEach(u=>u.addEventListener(\"abort\",o));const{signal:l}=r;return l.unsubscribe=()=>Be.asap(i),l}},Y4=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},G4=async function*(e,t){for await(const n of X4(e))yield*Y4(n,t)},X4=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},h0=(e,t,n,r)=>{const s=G4(e,t);let o=0,a,i=l=>{a||(a=!0,r&&r(l))};return new ReadableStream({async pull(l){try{const{done:u,value:f}=await s.next();if(u){i(),l.close();return}let d=f.byteLength;if(n){let h=o+=d;n(h)}l.enqueue(new Uint8Array(f))}catch(u){throw i(u),u}},cancel(l){return i(l),s.return()}},{highWaterMark:2})},dd=typeof fetch==\"function\"&&typeof Request==\"function\"&&typeof Response==\"function\",Mw=dd&&typeof ReadableStream==\"function\",J4=dd&&(typeof TextEncoder==\"function\"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),Aw=(e,...t)=>{try{return!!e(...t)}catch{return!1}},Z4=Mw&&Aw(()=>{let e=!1;const t=new Request(In.origin,{body:new ReadableStream,method:\"POST\",get duplex(){return e=!0,\"half\"}}).headers.has(\"Content-Type\");return e&&!t}),p0=64*1024,gh=Mw&&Aw(()=>Be.isReadableStream(new Response(\"\").body)),ku={stream:gh&&(e=>e.body)};dd&&(e=>{[\"text\",\"arrayBuffer\",\"blob\",\"formData\",\"stream\"].forEach(t=>{!ku[t]&&(ku[t]=Be.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new Rt(`Response type '${t}' is not supported`,Rt.ERR_NOT_SUPPORT,r)})})})(new Response);const Q4=async e=>{if(e==null)return 0;if(Be.isBlob(e))return e.size;if(Be.isSpecCompliantForm(e))return(await new Request(In.origin,{method:\"POST\",body:e}).arrayBuffer()).byteLength;if(Be.isArrayBufferView(e)||Be.isArrayBuffer(e))return e.byteLength;if(Be.isURLSearchParams(e)&&(e=e+\"\"),Be.isString(e))return(await J4(e)).byteLength},eO=async(e,t)=>{const n=Be.toFiniteNumber(e.getContentLength());return n??Q4(t)},tO=dd&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:a,onDownloadProgress:i,onUploadProgress:l,responseType:u,headers:f,withCredentials:d=\"same-origin\",fetchOptions:h}=Ow(e);u=u?(u+\"\").toLowerCase():\"text\";let v=q4([s,o&&o.toAbortSignal()],a),b;const p=v&&v.unsubscribe&&(()=>{v.unsubscribe()});let g;try{if(l&&Z4&&n!==\"get\"&&n!==\"head\"&&(g=await eO(f,r))!==0){let S=new Request(t,{method:\"POST\",body:r,duplex:\"half\"}),C;if(Be.isFormData(r)&&(C=S.headers.get(\"content-type\"))&&f.setContentType(C),S.body){const[E,k]=u0(g,Cu(d0(l)));r=h0(S.body,p0,E,k)}}Be.isString(d)||(d=d?\"include\":\"omit\");const m=\"credentials\"in Request.prototype;b=new Request(t,{...h,signal:v,method:n.toUpperCase(),headers:f.normalize().toJSON(),body:r,duplex:\"half\",credentials:m?d:void 0});let y=await fetch(b);const _=gh&&(u===\"stream\"||u===\"response\");if(gh&&(i||_&&p)){const S={};[\"status\",\"statusText\",\"headers\"].forEach(T=>{S[T]=y[T]});const C=Be.toFiniteNumber(y.headers.get(\"content-length\")),[E,k]=i&&u0(C,Cu(d0(i),!0))||[];y=new Response(h0(y.body,p0,E,()=>{k&&k(),p&&p()}),S)}u=u||\"text\";let w=await ku[Be.findKey(ku,u)||\"text\"](y,e);return!_&&p&&p(),await new Promise((S,C)=>{Rw(S,C,{data:w,headers:Qn.from(y.headers),status:y.status,statusText:y.statusText,config:e,request:b})})}catch(m){throw p&&p(),m&&m.name===\"TypeError\"&&/fetch/i.test(m.message)?Object.assign(new Rt(\"Network Error\",Rt.ERR_NETWORK,e,b),{cause:m.cause||m}):Rt.from(m,m&&m.code,e,b)}}),_h={http:m4,xhr:U4,fetch:tO};Be.forEach(_h,(e,t)=>{if(e){try{Object.defineProperty(e,\"name\",{value:t})}catch{}Object.defineProperty(e,\"adapterName\",{value:t})}});const v0=e=>`- ${e}`,nO=e=>Be.isFunction(e)||e===null||e===!1,$w={getAdapter:e=>{e=Be.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let a;if(r=n,!nO(n)&&(r=_h[(a=String(n)).toLowerCase()],r===void 0))throw new Rt(`Unknown adapter '${a}'`);if(r)break;s[a||\"#\"+o]=r}if(!r){const o=Object.entries(s).map(([i,l])=>`adapter ${i} `+(l===!1?\"is not supported by the environment\":\"is not available in the build\"));let a=t?o.length>1?`since :\n`+o.map(v0).join(`\n`):\" \"+v0(o[0]):\"as no adapter specified\";throw new Rt(\"There is no suitable adapter to dispatch the request \"+a,\"ERR_NOT_SUPPORT\")}return r},adapters:_h};function vf(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ia(null,e)}function m0(e){return vf(e),e.headers=Qn.from(e.headers),e.data=pf.call(e,e.transformRequest),[\"post\",\"put\",\"patch\"].indexOf(e.method)!==-1&&e.headers.setContentType(\"application/x-www-form-urlencoded\",!1),$w.getAdapter(e.adapter||Fl.adapter)(e).then(function(r){return vf(e),r.data=pf.call(e,e.transformResponse,r),r.headers=Qn.from(r.headers),r},function(r){return Tw(r)||(vf(e),r&&r.response&&(r.response.data=pf.call(e,e.transformResponse,r.response),r.response.headers=Qn.from(r.response.headers))),Promise.reject(r)})}const Lw=\"1.7.9\",fd={};[\"object\",\"boolean\",\"number\",\"function\",\"string\",\"symbol\"].forEach((e,t)=>{fd[e]=function(r){return typeof r===e||\"a\"+(t<1?\"n \":\" \")+e}});const g0={};fd.transitional=function(t,n,r){function s(o,a){return\"[Axios v\"+Lw+\"] Transitional option '\"+o+\"'\"+a+(r?\". \"+r:\"\")}return(o,a,i)=>{if(t===!1)throw new Rt(s(a,\" has been removed\"+(n?\" in \"+n:\"\")),Rt.ERR_DEPRECATED);return n&&!g0[a]&&(g0[a]=!0,console.warn(s(a,\" has been deprecated since v\"+n+\" and will be removed in the near future\"))),t?t(o,a,i):!0}};fd.spelling=function(t){return(n,r)=>(console.warn(`${r} is likely a misspelling of ${t}`),!0)};function rO(e,t,n){if(typeof e!=\"object\")throw new Rt(\"options must be an object\",Rt.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],a=t[o];if(a){const i=e[o],l=i===void 0||a(i,o,e);if(l!==!0)throw new Rt(\"option \"+o+\" must be \"+l,Rt.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new Rt(\"Unknown option \"+o,Rt.ERR_BAD_OPTION)}}const Nc={assertOptions:rO,validators:fd},jr=Nc.validators;class Vo{constructor(t){this.defaults=t,this.interceptors={request:new l0,response:new l0}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const o=s.stack?s.stack.replace(/^.+\\n/,\"\"):\"\";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\\n.+\\n/,\"\"))&&(r.stack+=`\n`+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t==\"string\"?(n=n||{},n.url=t):n=t||{},n=Yo(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Nc.assertOptions(r,{silentJSONParsing:jr.transitional(jr.boolean),forcedJSONParsing:jr.transitional(jr.boolean),clarifyTimeoutError:jr.transitional(jr.boolean)},!1),s!=null&&(Be.isFunction(s)?n.paramsSerializer={serialize:s}:Nc.assertOptions(s,{encode:jr.function,serialize:jr.function},!0)),Nc.assertOptions(n,{baseUrl:jr.spelling(\"baseURL\"),withXsrfToken:jr.spelling(\"withXSRFToken\")},!0),n.method=(n.method||this.defaults.method||\"get\").toLowerCase();let a=o&&Be.merge(o.common,o[n.method]);o&&Be.forEach([\"delete\",\"get\",\"head\",\"post\",\"put\",\"patch\",\"common\"],b=>{delete o[b]}),n.headers=Qn.concat(a,o);const i=[];let l=!0;this.interceptors.request.forEach(function(p){typeof p.runWhen==\"function\"&&p.runWhen(n)===!1||(l=l&&p.synchronous,i.unshift(p.fulfilled,p.rejected))});const u=[];this.interceptors.response.forEach(function(p){u.push(p.fulfilled,p.rejected)});let f,d=0,h;if(!l){const b=[m0.bind(this),void 0];for(b.unshift.apply(b,i),b.push.apply(b,u),h=b.length,f=Promise.resolve(n);d<h;)f=f.then(b[d++],b[d++]);return f}h=i.length;let v=n;for(d=0;d<h;){const b=i[d++],p=i[d++];try{v=b(v)}catch(g){p.call(this,g);break}}try{f=m0.call(this,v)}catch(b){return Promise.reject(b)}for(d=0,h=u.length;d<h;)f=f.then(u[d++],u[d++]);return f}getUri(t){t=Yo(this.defaults,t);const n=xw(t.baseURL,t.url);return Cw(n,t.params,t.paramsSerializer)}}Be.forEach([\"delete\",\"get\",\"head\",\"options\"],function(t){Vo.prototype[t]=function(n,r){return this.request(Yo(r||{},{method:t,url:n,data:(r||{}).data}))}});Be.forEach([\"post\",\"put\",\"patch\"],function(t){function n(r){return function(o,a,i){return this.request(Yo(i||{},{method:t,headers:r?{\"Content-Type\":\"multipart/form-data\"}:{},url:o,data:a}))}}Vo.prototype[t]=n(),Vo.prototype[t+\"Form\"]=n(!0)});class lv{constructor(t){if(typeof t!=\"function\")throw new TypeError(\"executor must be a function.\");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const a=new Promise(i=>{r.subscribe(i),o=i}).then(s);return a.cancel=function(){r.unsubscribe(o)},a},t(function(o,a,i){r.reason||(r.reason=new ia(o,a,i),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new lv(function(s){t=s}),cancel:t}}}function sO(e){return function(n){return e.apply(null,n)}}function oO(e){return Be.isObject(e)&&e.isAxiosError===!0}const bh={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(bh).forEach(([e,t])=>{bh[t]=e});function Iw(e){const t=new Vo(e),n=dw(Vo.prototype.request,t);return Be.extend(n,Vo.prototype,t,{allOwnKeys:!0}),Be.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return Iw(Yo(e,s))},n}const $t=Iw(Fl);$t.Axios=Vo;$t.CanceledError=ia;$t.CancelToken=lv;$t.isCancel=Tw;$t.VERSION=Lw;$t.toFormData=ud;$t.AxiosError=Rt;$t.Cancel=$t.CanceledError;$t.all=function(t){return Promise.all(t)};$t.spread=sO;$t.isAxiosError=oO;$t.mergeConfig=Yo;$t.AxiosHeaders=Qn;$t.formToJSON=e=>Ew(Be.isHTMLForm(e)?new FormData(e):e);$t.getAdapter=$w.getAdapter;$t.HttpStatusCode=bh;$t.default=$t;const hd=TR(\"global\",()=>{const e=W(!1),t=W(!1),n=W(\"N\"),r=W(\"N\"),s=W(\"\"),o=W(\"\"),a=W(\"\");function i(){e.value=!1,t.value=!1,n.value=\"N\",r.value=\"N\",s.value=\"\",o.value=\"\",a.value=\"\"}function l(f,d,h,v,b){t.value=!0,n.value=f,r.value=d,s.value=h,o.value=v,a.value=b}function u(){t.value=!1,n.value=\"N\",r.value=\"N\",s.value=\"\",o.value=\"\",a.value=\"\",localStorage.clear()}return{isInit:e,isLogin:t,isAdmin:n,isRoot:r,userName:s,userDesc:o,userExpiryAt:a,login:l,logout:u,reset:i}},{persist:!0}),iO=ee({__name:\"App\",setup(e){let t=Su(),n=hd();const r=\"wakeLock\"in navigator;let s=null;const o=async()=>{if(r)try{s=await navigator.wakeLock.request(\"screen\")}catch(i){i.name!==\"NotAllowedError\"&&console.error(`WakeLock 错误：${i.message}`)}},a=async()=>{document.visibilityState===\"visible\"&&await o()};return it(()=>{document.addEventListener(\"visibilitychange\",a),document.visibilityState===\"visible\"&&o()}),Dl(async()=>{await $t.get(\"/api/sys/is_init\").then(i=>{if(i.data.code===0&&!i.data.data.is_init){n.isInit=!1,n.logout(),localStorage.clear(),t.push({name:\"SysInit\"});return}}).catch(i=>{console.log(\"获取系统初始化状态异常:\"+i)})}),Pt(()=>{document.removeEventListener(\"visibilitychange\",a),s&&s.release().then(()=>{s=null}).catch(i=>{console.error(`释放 WakeLock 错误：${i}`)})}),(i,l)=>{const u=ut(\"router-view\");return $(),ve(u)}}}),aO=\"modulepreload\",lO=function(e,t){return new URL(e,t).href},_0={},$a=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){const a=document.getElementsByTagName(\"link\"),i=document.querySelector(\"meta[property=csp-nonce]\"),l=(i==null?void 0:i.nonce)||(i==null?void 0:i.getAttribute(\"nonce\"));s=Promise.allSettled(n.map(u=>{if(u=lO(u,r),u in _0)return;_0[u]=!0;const f=u.endsWith(\".css\"),d=f?'[rel=\"stylesheet\"]':\"\";if(!!r)for(let b=a.length-1;b>=0;b--){const p=a[b];if(p.href===u&&(!f||p.rel===\"stylesheet\"))return}else if(document.querySelector(`link[href=\"${u}\"]${d}`))return;const v=document.createElement(\"link\");if(v.rel=f?\"stylesheet\":aO,f||(v.as=\"script\"),v.crossOrigin=\"\",v.href=u,l&&v.setAttribute(\"nonce\",l),document.head.appendChild(v),f)return new Promise((b,p)=>{v.addEventListener(\"load\",b),v.addEventListener(\"error\",()=>p(new Error(`Unable to preload CSS for ${u}`)))})}))}function o(a){const i=new Event(\"vite:preloadError\",{cancelable:!0});if(i.payload=a,window.dispatchEvent(i),!i.defaultPrevented)throw a}return s.then(a=>{for(const i of a||[])i.status===\"rejected\"&&o(i.reason);return t().catch(o)})},cO=\"2.9.1\",b0=Symbol(\"INSTALLED_KEY\"),Pw=Symbol(),Ua=\"el\",uO=\"is-\",Eo=(e,t,n,r,s)=>{let o=`${e}-${t}`;return n&&(o+=`-${n}`),r&&(o+=`__${r}`),s&&(o+=`--${s}`),o},Dw=Symbol(\"namespaceContextKey\"),cv=e=>{const t=e||(ct()?Fe(Dw,W(Ua)):W(Ua));return O(()=>c(t)||Ua)},we=(e,t)=>{const n=cv(t);return{namespace:n,b:(p=\"\")=>Eo(n.value,e,p,\"\",\"\"),e:p=>p?Eo(n.value,e,\"\",p,\"\"):\"\",m:p=>p?Eo(n.value,e,\"\",\"\",p):\"\",be:(p,g)=>p&&g?Eo(n.value,e,p,g,\"\"):\"\",em:(p,g)=>p&&g?Eo(n.value,e,\"\",p,g):\"\",bm:(p,g)=>p&&g?Eo(n.value,e,p,\"\",g):\"\",bem:(p,g,m)=>p&&g&&m?Eo(n.value,e,p,g,m):\"\",is:(p,...g)=>{const m=g.length>=1?g[0]:!0;return p&&m?`${uO}${p}`:\"\"},cssVar:p=>{const g={};for(const m in p)p[m]&&(g[`--${n.value}-${m}`]=p[m]);return g},cssVarName:p=>`--${n.value}-${p}`,cssVarBlock:p=>{const g={};for(const m in p)p[m]&&(g[`--${n.value}-${e}-${m}`]=p[m]);return g},cssVarBlockName:p=>`--${n.value}-${e}-${p}`}};var Bw=typeof global==\"object\"&&global&&global.Object===Object&&global,dO=typeof self==\"object\"&&self&&self.Object===Object&&self,Hr=Bw||dO||Function(\"return this\")(),br=Hr.Symbol,Nw=Object.prototype,fO=Nw.hasOwnProperty,hO=Nw.toString,Ta=br?br.toStringTag:void 0;function pO(e){var t=fO.call(e,Ta),n=e[Ta];try{e[Ta]=void 0;var r=!0}catch{}var s=hO.call(e);return r&&(t?e[Ta]=n:delete e[Ta]),s}var vO=Object.prototype,mO=vO.toString;function gO(e){return mO.call(e)}var _O=\"[object Null]\",bO=\"[object Undefined]\",y0=br?br.toStringTag:void 0;function ni(e){return e==null?e===void 0?bO:_O:y0&&y0 in Object(e)?pO(e):gO(e)}function es(e){return e!=null&&typeof e==\"object\"}var yO=\"[object Symbol]\";function pd(e){return typeof e==\"symbol\"||es(e)&&ni(e)==yO}function uv(e,t){for(var n=-1,r=e==null?0:e.length,s=Array(r);++n<r;)s[n]=t(e[n],n,e);return s}var Gn=Array.isArray,wO=1/0,w0=br?br.prototype:void 0,S0=w0?w0.toString:void 0;function Fw(e){if(typeof e==\"string\")return e;if(Gn(e))return uv(e,Fw)+\"\";if(pd(e))return S0?S0.call(e):\"\";var t=e+\"\";return t==\"0\"&&1/e==-wO?\"-0\":t}var SO=/\\s/;function CO(e){for(var t=e.length;t--&&SO.test(e.charAt(t)););return t}var kO=/^\\s+/;function EO(e){return e&&e.slice(0,CO(e)+1).replace(kO,\"\")}function Xn(e){var t=typeof e;return e!=null&&(t==\"object\"||t==\"function\")}var C0=NaN,TO=/^[-+]0x[0-9a-f]+$/i,RO=/^0b[01]+$/i,xO=/^0o[0-7]+$/i,OO=parseInt;function k0(e){if(typeof e==\"number\")return e;if(pd(e))return C0;if(Xn(e)){var t=typeof e.valueOf==\"function\"?e.valueOf():e;e=Xn(t)?t+\"\":t}if(typeof e!=\"string\")return e===0?e:+e;e=EO(e);var n=RO.test(e);return n||xO.test(e)?OO(e.slice(2),n?2:8):TO.test(e)?C0:+e}function dv(e){return e}var MO=\"[object AsyncFunction]\",AO=\"[object Function]\",$O=\"[object GeneratorFunction]\",LO=\"[object Proxy]\";function fv(e){if(!Xn(e))return!1;var t=ni(e);return t==AO||t==$O||t==MO||t==LO}var mf=Hr[\"__core-js_shared__\"],E0=function(){var e=/[^.]+$/.exec(mf&&mf.keys&&mf.keys.IE_PROTO||\"\");return e?\"Symbol(src)_1.\"+e:\"\"}();function IO(e){return!!E0&&E0 in e}var PO=Function.prototype,DO=PO.toString;function ri(e){if(e!=null){try{return DO.call(e)}catch{}try{return e+\"\"}catch{}}return\"\"}var BO=/[\\\\^$.*+?()[\\]{}|]/g,NO=/^\\[object .+?Constructor\\]$/,FO=Function.prototype,HO=Object.prototype,VO=FO.toString,zO=HO.hasOwnProperty,WO=RegExp(\"^\"+VO.call(zO).replace(BO,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\");function KO(e){if(!Xn(e)||IO(e))return!1;var t=fv(e)?WO:NO;return t.test(ri(e))}function jO(e,t){return e==null?void 0:e[t]}function si(e,t){var n=jO(e,t);return KO(n)?n:void 0}var yh=si(Hr,\"WeakMap\"),T0=Object.create,UO=function(){function e(){}return function(t){if(!Xn(t))return{};if(T0)return T0(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();function qO(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function YO(){}function Hw(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}var GO=800,XO=16,JO=Date.now;function ZO(e){var t=0,n=0;return function(){var r=JO(),s=XO-(r-n);if(n=r,s>0){if(++t>=GO)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function QO(e){return function(){return e}}var Eu=function(){try{var e=si(Object,\"defineProperty\");return e({},\"\",{}),e}catch{}}(),eM=Eu?function(e,t){return Eu(e,\"toString\",{configurable:!0,enumerable:!1,value:QO(t),writable:!0})}:dv,Vw=ZO(eM);function tM(e,t){for(var n=-1,r=e==null?0:e.length;++n<r&&t(e[n],n,e)!==!1;);return e}function zw(e,t,n,r){for(var s=e.length,o=n+(r?1:-1);r?o--:++o<s;)if(t(e[o],o,e))return o;return-1}function nM(e){return e!==e}function rM(e,t,n){for(var r=n-1,s=e.length;++r<s;)if(e[r]===t)return r;return-1}function sM(e,t,n){return t===t?rM(e,t,n):zw(e,nM,n)}function oM(e,t){var n=e==null?0:e.length;return!!n&&sM(e,t,0)>-1}var iM=9007199254740991,aM=/^(?:0|[1-9]\\d*)$/;function vd(e,t){var n=typeof e;return t=t??iM,!!t&&(n==\"number\"||n!=\"symbol\"&&aM.test(e))&&e>-1&&e%1==0&&e<t}function hv(e,t,n){t==\"__proto__\"&&Eu?Eu(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}function Hl(e,t){return e===t||e!==e&&t!==t}var lM=Object.prototype,cM=lM.hasOwnProperty;function pv(e,t,n){var r=e[t];(!(cM.call(e,t)&&Hl(r,n))||n===void 0&&!(t in e))&&hv(e,t,n)}function aa(e,t,n,r){var s=!n;n||(n={});for(var o=-1,a=t.length;++o<a;){var i=t[o],l=void 0;l===void 0&&(l=e[i]),s?hv(n,i,l):pv(n,i,l)}return n}var R0=Math.max;function Ww(e,t,n){return t=R0(t===void 0?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=R0(r.length-t,0),a=Array(o);++s<o;)a[s]=r[t+s];s=-1;for(var i=Array(t+1);++s<t;)i[s]=r[s];return i[t]=n(a),qO(e,this,i)}}function Kw(e,t){return Vw(Ww(e,t,dv),e+\"\")}var uM=9007199254740991;function vv(e){return typeof e==\"number\"&&e>-1&&e%1==0&&e<=uM}function la(e){return e!=null&&vv(e.length)&&!fv(e)}function dM(e,t,n){if(!Xn(n))return!1;var r=typeof t;return(r==\"number\"?la(n)&&vd(t,n.length):r==\"string\"&&t in n)?Hl(n[t],e):!1}function fM(e){return Kw(function(t,n){var r=-1,s=n.length,o=s>1?n[s-1]:void 0,a=s>2?n[2]:void 0;for(o=e.length>3&&typeof o==\"function\"?(s--,o):void 0,a&&dM(n[0],n[1],a)&&(o=s<3?void 0:o,s=1),t=Object(t);++r<s;){var i=n[r];i&&e(t,i,r,o)}return t})}var hM=Object.prototype;function mv(e){var t=e&&e.constructor,n=typeof t==\"function\"&&t.prototype||hM;return e===n}function pM(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}var vM=\"[object Arguments]\";function x0(e){return es(e)&&ni(e)==vM}var jw=Object.prototype,mM=jw.hasOwnProperty,gM=jw.propertyIsEnumerable,cl=x0(function(){return arguments}())?x0:function(e){return es(e)&&mM.call(e,\"callee\")&&!gM.call(e,\"callee\")};function _M(){return!1}var Uw=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,O0=Uw&&typeof module==\"object\"&&module&&!module.nodeType&&module,bM=O0&&O0.exports===Uw,M0=bM?Hr.Buffer:void 0,yM=M0?M0.isBuffer:void 0,ul=yM||_M,wM=\"[object Arguments]\",SM=\"[object Array]\",CM=\"[object Boolean]\",kM=\"[object Date]\",EM=\"[object Error]\",TM=\"[object Function]\",RM=\"[object Map]\",xM=\"[object Number]\",OM=\"[object Object]\",MM=\"[object RegExp]\",AM=\"[object Set]\",$M=\"[object String]\",LM=\"[object WeakMap]\",IM=\"[object ArrayBuffer]\",PM=\"[object DataView]\",DM=\"[object Float32Array]\",BM=\"[object Float64Array]\",NM=\"[object Int8Array]\",FM=\"[object Int16Array]\",HM=\"[object Int32Array]\",VM=\"[object Uint8Array]\",zM=\"[object Uint8ClampedArray]\",WM=\"[object Uint16Array]\",KM=\"[object Uint32Array]\",tn={};tn[DM]=tn[BM]=tn[NM]=tn[FM]=tn[HM]=tn[VM]=tn[zM]=tn[WM]=tn[KM]=!0;tn[wM]=tn[SM]=tn[IM]=tn[CM]=tn[PM]=tn[kM]=tn[EM]=tn[TM]=tn[RM]=tn[xM]=tn[OM]=tn[MM]=tn[AM]=tn[$M]=tn[LM]=!1;function jM(e){return es(e)&&vv(e.length)&&!!tn[ni(e)]}function gv(e){return function(t){return e(t)}}var qw=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,qa=qw&&typeof module==\"object\"&&module&&!module.nodeType&&module,UM=qa&&qa.exports===qw,gf=UM&&Bw.process,Hi=function(){try{var e=qa&&qa.require&&qa.require(\"util\").types;return e||gf&&gf.binding&&gf.binding(\"util\")}catch{}}(),A0=Hi&&Hi.isTypedArray,_v=A0?gv(A0):jM,qM=Object.prototype,YM=qM.hasOwnProperty;function Yw(e,t){var n=Gn(e),r=!n&&cl(e),s=!n&&!r&&ul(e),o=!n&&!r&&!s&&_v(e),a=n||r||s||o,i=a?pM(e.length,String):[],l=i.length;for(var u in e)(t||YM.call(e,u))&&!(a&&(u==\"length\"||s&&(u==\"offset\"||u==\"parent\")||o&&(u==\"buffer\"||u==\"byteLength\"||u==\"byteOffset\")||vd(u,l)))&&i.push(u);return i}function Gw(e,t){return function(n){return e(t(n))}}var GM=Gw(Object.keys,Object),XM=Object.prototype,JM=XM.hasOwnProperty;function ZM(e){if(!mv(e))return GM(e);var t=[];for(var n in Object(e))JM.call(e,n)&&n!=\"constructor\"&&t.push(n);return t}function Vl(e){return la(e)?Yw(e):ZM(e)}function QM(e){var t=[];if(e!=null)for(var n in Object(e))t.push(n);return t}var eA=Object.prototype,tA=eA.hasOwnProperty;function nA(e){if(!Xn(e))return QM(e);var t=mv(e),n=[];for(var r in e)r==\"constructor\"&&(t||!tA.call(e,r))||n.push(r);return n}function zl(e){return la(e)?Yw(e,!0):nA(e)}var rA=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,sA=/^\\w*$/;function bv(e,t){if(Gn(e))return!1;var n=typeof e;return n==\"number\"||n==\"symbol\"||n==\"boolean\"||e==null||pd(e)?!0:sA.test(e)||!rA.test(e)||t!=null&&e in Object(t)}var dl=si(Object,\"create\");function oA(){this.__data__=dl?dl(null):{},this.size=0}function iA(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}var aA=\"__lodash_hash_undefined__\",lA=Object.prototype,cA=lA.hasOwnProperty;function uA(e){var t=this.__data__;if(dl){var n=t[e];return n===aA?void 0:n}return cA.call(t,e)?t[e]:void 0}var dA=Object.prototype,fA=dA.hasOwnProperty;function hA(e){var t=this.__data__;return dl?t[e]!==void 0:fA.call(t,e)}var pA=\"__lodash_hash_undefined__\";function vA(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=dl&&t===void 0?pA:t,this}function Go(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Go.prototype.clear=oA;Go.prototype.delete=iA;Go.prototype.get=uA;Go.prototype.has=hA;Go.prototype.set=vA;function mA(){this.__data__=[],this.size=0}function md(e,t){for(var n=e.length;n--;)if(Hl(e[n][0],t))return n;return-1}var gA=Array.prototype,_A=gA.splice;function bA(e){var t=this.__data__,n=md(t,e);if(n<0)return!1;var r=t.length-1;return n==r?t.pop():_A.call(t,n,1),--this.size,!0}function yA(e){var t=this.__data__,n=md(t,e);return n<0?void 0:t[n][1]}function wA(e){return md(this.__data__,e)>-1}function SA(e,t){var n=this.__data__,r=md(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function Os(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Os.prototype.clear=mA;Os.prototype.delete=bA;Os.prototype.get=yA;Os.prototype.has=wA;Os.prototype.set=SA;var fl=si(Hr,\"Map\");function CA(){this.size=0,this.__data__={hash:new Go,map:new(fl||Os),string:new Go}}function kA(e){var t=typeof e;return t==\"string\"||t==\"number\"||t==\"symbol\"||t==\"boolean\"?e!==\"__proto__\":e===null}function gd(e,t){var n=e.__data__;return kA(t)?n[typeof t==\"string\"?\"string\":\"hash\"]:n.map}function EA(e){var t=gd(this,e).delete(e);return this.size-=t?1:0,t}function TA(e){return gd(this,e).get(e)}function RA(e){return gd(this,e).has(e)}function xA(e,t){var n=gd(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}function Ms(e){var t=-1,n=e==null?0:e.length;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}Ms.prototype.clear=CA;Ms.prototype.delete=EA;Ms.prototype.get=TA;Ms.prototype.has=RA;Ms.prototype.set=xA;var OA=\"Expected a function\";function _d(e,t){if(typeof e!=\"function\"||t!=null&&typeof t!=\"function\")throw new TypeError(OA);var n=function(){var r=arguments,s=t?t.apply(this,r):r[0],o=n.cache;if(o.has(s))return o.get(s);var a=e.apply(this,r);return n.cache=o.set(s,a)||o,a};return n.cache=new(_d.Cache||Ms),n}_d.Cache=Ms;var MA=500;function AA(e){var t=_d(e,function(r){return n.size===MA&&n.clear(),r}),n=t.cache;return t}var $A=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,LA=/\\\\(\\\\)?/g,IA=AA(function(e){var t=[];return e.charCodeAt(0)===46&&t.push(\"\"),e.replace($A,function(n,r,s,o){t.push(s?o.replace(LA,\"$1\"):r||n)}),t});function PA(e){return e==null?\"\":Fw(e)}function ca(e,t){return Gn(e)?e:bv(e,t)?[e]:IA(PA(e))}var DA=1/0;function ua(e){if(typeof e==\"string\"||pd(e))return e;var t=e+\"\";return t==\"0\"&&1/e==-DA?\"-0\":t}function bd(e,t){t=ca(t,e);for(var n=0,r=t.length;e!=null&&n<r;)e=e[ua(t[n++])];return n&&n==r?e:void 0}function rn(e,t,n){var r=e==null?void 0:bd(e,t);return r===void 0?n:r}function yv(e,t){for(var n=-1,r=t.length,s=e.length;++n<r;)e[s+n]=t[n];return e}var $0=br?br.isConcatSpreadable:void 0;function BA(e){return Gn(e)||cl(e)||!!($0&&e&&e[$0])}function Wl(e,t,n,r,s){var o=-1,a=e.length;for(n||(n=BA),s||(s=[]);++o<a;){var i=e[o];t>0&&n(i)?t>1?Wl(i,t-1,n,r,s):yv(s,i):r||(s[s.length]=i)}return s}function Xw(e){var t=e==null?0:e.length;return t?Wl(e,1):[]}function Jw(e){return Vw(Ww(e,void 0,Xw),e+\"\")}var wv=Gw(Object.getPrototypeOf,Object),NA=\"[object Object]\",FA=Function.prototype,HA=Object.prototype,Zw=FA.toString,VA=HA.hasOwnProperty,zA=Zw.call(Object);function Qw(e){if(!es(e)||ni(e)!=NA)return!1;var t=wv(e);if(t===null)return!0;var n=VA.call(t,\"constructor\")&&t.constructor;return typeof n==\"function\"&&n instanceof n&&Zw.call(n)==zA}function WA(e,t,n){var r=-1,s=e.length;t<0&&(t=-t>s?0:s+t),n=n>s?s:n,n<0&&(n+=s),s=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(s);++r<s;)o[r]=e[r+t];return o}function Pn(){if(!arguments.length)return[];var e=arguments[0];return Gn(e)?e:[e]}function KA(){this.__data__=new Os,this.size=0}function jA(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}function UA(e){return this.__data__.get(e)}function qA(e){return this.__data__.has(e)}var YA=200;function GA(e,t){var n=this.__data__;if(n instanceof Os){var r=n.__data__;if(!fl||r.length<YA-1)return r.push([e,t]),this.size=++n.size,this;n=this.__data__=new Ms(r)}return n.set(e,t),this.size=n.size,this}function $r(e){var t=this.__data__=new Os(e);this.size=t.size}$r.prototype.clear=KA;$r.prototype.delete=jA;$r.prototype.get=UA;$r.prototype.has=qA;$r.prototype.set=GA;function XA(e,t){return e&&aa(t,Vl(t),e)}function JA(e,t){return e&&aa(t,zl(t),e)}var eS=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,L0=eS&&typeof module==\"object\"&&module&&!module.nodeType&&module,ZA=L0&&L0.exports===eS,I0=ZA?Hr.Buffer:void 0,P0=I0?I0.allocUnsafe:void 0;function tS(e,t){if(t)return e.slice();var n=e.length,r=P0?P0(n):new e.constructor(n);return e.copy(r),r}function QA(e,t){for(var n=-1,r=e==null?0:e.length,s=0,o=[];++n<r;){var a=e[n];t(a,n,e)&&(o[s++]=a)}return o}function nS(){return[]}var e$=Object.prototype,t$=e$.propertyIsEnumerable,D0=Object.getOwnPropertySymbols,Sv=D0?function(e){return e==null?[]:(e=Object(e),QA(D0(e),function(t){return t$.call(e,t)}))}:nS;function n$(e,t){return aa(e,Sv(e),t)}var r$=Object.getOwnPropertySymbols,rS=r$?function(e){for(var t=[];e;)yv(t,Sv(e)),e=wv(e);return t}:nS;function s$(e,t){return aa(e,rS(e),t)}function sS(e,t,n){var r=t(e);return Gn(e)?r:yv(r,n(e))}function wh(e){return sS(e,Vl,Sv)}function oS(e){return sS(e,zl,rS)}var Sh=si(Hr,\"DataView\"),Ch=si(Hr,\"Promise\"),xi=si(Hr,\"Set\"),B0=\"[object Map]\",o$=\"[object Object]\",N0=\"[object Promise]\",F0=\"[object Set]\",H0=\"[object WeakMap]\",V0=\"[object DataView]\",i$=ri(Sh),a$=ri(fl),l$=ri(Ch),c$=ri(xi),u$=ri(yh),Rr=ni;(Sh&&Rr(new Sh(new ArrayBuffer(1)))!=V0||fl&&Rr(new fl)!=B0||Ch&&Rr(Ch.resolve())!=N0||xi&&Rr(new xi)!=F0||yh&&Rr(new yh)!=H0)&&(Rr=function(e){var t=ni(e),n=t==o$?e.constructor:void 0,r=n?ri(n):\"\";if(r)switch(r){case i$:return V0;case a$:return B0;case l$:return N0;case c$:return F0;case u$:return H0}return t});var d$=Object.prototype,f$=d$.hasOwnProperty;function h$(e){var t=e.length,n=new e.constructor(t);return t&&typeof e[0]==\"string\"&&f$.call(e,\"index\")&&(n.index=e.index,n.input=e.input),n}var Tu=Hr.Uint8Array;function Cv(e){var t=new e.constructor(e.byteLength);return new Tu(t).set(new Tu(e)),t}function p$(e,t){var n=t?Cv(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var v$=/\\w*$/;function m$(e){var t=new e.constructor(e.source,v$.exec(e));return t.lastIndex=e.lastIndex,t}var z0=br?br.prototype:void 0,W0=z0?z0.valueOf:void 0;function g$(e){return W0?Object(W0.call(e)):{}}function iS(e,t){var n=t?Cv(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var _$=\"[object Boolean]\",b$=\"[object Date]\",y$=\"[object Map]\",w$=\"[object Number]\",S$=\"[object RegExp]\",C$=\"[object Set]\",k$=\"[object String]\",E$=\"[object Symbol]\",T$=\"[object ArrayBuffer]\",R$=\"[object DataView]\",x$=\"[object Float32Array]\",O$=\"[object Float64Array]\",M$=\"[object Int8Array]\",A$=\"[object Int16Array]\",$$=\"[object Int32Array]\",L$=\"[object Uint8Array]\",I$=\"[object Uint8ClampedArray]\",P$=\"[object Uint16Array]\",D$=\"[object Uint32Array]\";function B$(e,t,n){var r=e.constructor;switch(t){case T$:return Cv(e);case _$:case b$:return new r(+e);case R$:return p$(e,n);case x$:case O$:case M$:case A$:case $$:case L$:case I$:case P$:case D$:return iS(e,n);case y$:return new r;case w$:case k$:return new r(e);case S$:return m$(e);case C$:return new r;case E$:return g$(e)}}function aS(e){return typeof e.constructor==\"function\"&&!mv(e)?UO(wv(e)):{}}var N$=\"[object Map]\";function F$(e){return es(e)&&Rr(e)==N$}var K0=Hi&&Hi.isMap,H$=K0?gv(K0):F$,V$=\"[object Set]\";function z$(e){return es(e)&&Rr(e)==V$}var j0=Hi&&Hi.isSet,W$=j0?gv(j0):z$,K$=1,j$=2,U$=4,lS=\"[object Arguments]\",q$=\"[object Array]\",Y$=\"[object Boolean]\",G$=\"[object Date]\",X$=\"[object Error]\",cS=\"[object Function]\",J$=\"[object GeneratorFunction]\",Z$=\"[object Map]\",Q$=\"[object Number]\",uS=\"[object Object]\",eL=\"[object RegExp]\",tL=\"[object Set]\",nL=\"[object String]\",rL=\"[object Symbol]\",sL=\"[object WeakMap]\",oL=\"[object ArrayBuffer]\",iL=\"[object DataView]\",aL=\"[object Float32Array]\",lL=\"[object Float64Array]\",cL=\"[object Int8Array]\",uL=\"[object Int16Array]\",dL=\"[object Int32Array]\",fL=\"[object Uint8Array]\",hL=\"[object Uint8ClampedArray]\",pL=\"[object Uint16Array]\",vL=\"[object Uint32Array]\",Jt={};Jt[lS]=Jt[q$]=Jt[oL]=Jt[iL]=Jt[Y$]=Jt[G$]=Jt[aL]=Jt[lL]=Jt[cL]=Jt[uL]=Jt[dL]=Jt[Z$]=Jt[Q$]=Jt[uS]=Jt[eL]=Jt[tL]=Jt[nL]=Jt[rL]=Jt[fL]=Jt[hL]=Jt[pL]=Jt[vL]=!0;Jt[X$]=Jt[cS]=Jt[sL]=!1;function Oi(e,t,n,r,s,o){var a,i=t&K$,l=t&j$,u=t&U$;if(n&&(a=s?n(e,r,s,o):n(e)),a!==void 0)return a;if(!Xn(e))return e;var f=Gn(e);if(f){if(a=h$(e),!i)return Hw(e,a)}else{var d=Rr(e),h=d==cS||d==J$;if(ul(e))return tS(e,i);if(d==uS||d==lS||h&&!s){if(a=l||h?{}:aS(e),!i)return l?s$(e,JA(a,e)):n$(e,XA(a,e))}else{if(!Jt[d])return s?e:{};a=B$(e,d,i)}}o||(o=new $r);var v=o.get(e);if(v)return v;o.set(e,a),W$(e)?e.forEach(function(g){a.add(Oi(g,t,n,g,e,o))}):H$(e)&&e.forEach(function(g,m){a.set(m,Oi(g,t,n,m,e,o))});var b=u?l?oS:wh:l?zl:Vl,p=f?void 0:b(e);return tM(p||e,function(g,m){p&&(m=g,g=e[m]),pv(a,m,Oi(g,t,n,m,e,o))}),a}var mL=4;function U0(e){return Oi(e,mL)}var gL=1,_L=4;function Ru(e){return Oi(e,gL|_L)}var bL=\"__lodash_hash_undefined__\";function yL(e){return this.__data__.set(e,bL),this}function wL(e){return this.__data__.has(e)}function hl(e){var t=-1,n=e==null?0:e.length;for(this.__data__=new Ms;++t<n;)this.add(e[t])}hl.prototype.add=hl.prototype.push=yL;hl.prototype.has=wL;function SL(e,t){for(var n=-1,r=e==null?0:e.length;++n<r;)if(t(e[n],n,e))return!0;return!1}function dS(e,t){return e.has(t)}var CL=1,kL=2;function fS(e,t,n,r,s,o){var a=n&CL,i=e.length,l=t.length;if(i!=l&&!(a&&l>i))return!1;var u=o.get(e),f=o.get(t);if(u&&f)return u==t&&f==e;var d=-1,h=!0,v=n&kL?new hl:void 0;for(o.set(e,t),o.set(t,e);++d<i;){var b=e[d],p=t[d];if(r)var g=a?r(p,b,d,t,e,o):r(b,p,d,e,t,o);if(g!==void 0){if(g)continue;h=!1;break}if(v){if(!SL(t,function(m,y){if(!dS(v,y)&&(b===m||s(b,m,n,r,o)))return v.push(y)})){h=!1;break}}else if(!(b===p||s(b,p,n,r,o))){h=!1;break}}return o.delete(e),o.delete(t),h}function EL(e){var t=-1,n=Array(e.size);return e.forEach(function(r,s){n[++t]=[s,r]}),n}function kv(e){var t=-1,n=Array(e.size);return e.forEach(function(r){n[++t]=r}),n}var TL=1,RL=2,xL=\"[object Boolean]\",OL=\"[object Date]\",ML=\"[object Error]\",AL=\"[object Map]\",$L=\"[object Number]\",LL=\"[object RegExp]\",IL=\"[object Set]\",PL=\"[object String]\",DL=\"[object Symbol]\",BL=\"[object ArrayBuffer]\",NL=\"[object DataView]\",q0=br?br.prototype:void 0,_f=q0?q0.valueOf:void 0;function FL(e,t,n,r,s,o,a){switch(n){case NL:if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case BL:return!(e.byteLength!=t.byteLength||!o(new Tu(e),new Tu(t)));case xL:case OL:case $L:return Hl(+e,+t);case ML:return e.name==t.name&&e.message==t.message;case LL:case PL:return e==t+\"\";case AL:var i=EL;case IL:var l=r&TL;if(i||(i=kv),e.size!=t.size&&!l)return!1;var u=a.get(e);if(u)return u==t;r|=RL,a.set(e,t);var f=fS(i(e),i(t),r,s,o,a);return a.delete(e),f;case DL:if(_f)return _f.call(e)==_f.call(t)}return!1}var HL=1,VL=Object.prototype,zL=VL.hasOwnProperty;function WL(e,t,n,r,s,o){var a=n&HL,i=wh(e),l=i.length,u=wh(t),f=u.length;if(l!=f&&!a)return!1;for(var d=l;d--;){var h=i[d];if(!(a?h in t:zL.call(t,h)))return!1}var v=o.get(e),b=o.get(t);if(v&&b)return v==t&&b==e;var p=!0;o.set(e,t),o.set(t,e);for(var g=a;++d<l;){h=i[d];var m=e[h],y=t[h];if(r)var _=a?r(y,m,h,t,e,o):r(m,y,h,e,t,o);if(!(_===void 0?m===y||s(m,y,n,r,o):_)){p=!1;break}g||(g=h==\"constructor\")}if(p&&!g){var w=e.constructor,S=t.constructor;w!=S&&\"constructor\"in e&&\"constructor\"in t&&!(typeof w==\"function\"&&w instanceof w&&typeof S==\"function\"&&S instanceof S)&&(p=!1)}return o.delete(e),o.delete(t),p}var KL=1,Y0=\"[object Arguments]\",G0=\"[object Array]\",fc=\"[object Object]\",jL=Object.prototype,X0=jL.hasOwnProperty;function UL(e,t,n,r,s,o){var a=Gn(e),i=Gn(t),l=a?G0:Rr(e),u=i?G0:Rr(t);l=l==Y0?fc:l,u=u==Y0?fc:u;var f=l==fc,d=u==fc,h=l==u;if(h&&ul(e)){if(!ul(t))return!1;a=!0,f=!1}if(h&&!f)return o||(o=new $r),a||_v(e)?fS(e,t,n,r,s,o):FL(e,t,l,n,r,s,o);if(!(n&KL)){var v=f&&X0.call(e,\"__wrapped__\"),b=d&&X0.call(t,\"__wrapped__\");if(v||b){var p=v?e.value():e,g=b?t.value():t;return o||(o=new $r),s(p,g,n,r,o)}}return h?(o||(o=new $r),WL(e,t,n,r,s,o)):!1}function yd(e,t,n,r,s){return e===t?!0:e==null||t==null||!es(e)&&!es(t)?e!==e&&t!==t:UL(e,t,n,r,yd,s)}var qL=1,YL=2;function GL(e,t,n,r){var s=n.length,o=s;if(e==null)return!o;for(e=Object(e);s--;){var a=n[s];if(a[2]?a[1]!==e[a[0]]:!(a[0]in e))return!1}for(;++s<o;){a=n[s];var i=a[0],l=e[i],u=a[1];if(a[2]){if(l===void 0&&!(i in e))return!1}else{var f=new $r,d;if(!(d===void 0?yd(u,l,qL|YL,r,f):d))return!1}}return!0}function hS(e){return e===e&&!Xn(e)}function XL(e){for(var t=Vl(e),n=t.length;n--;){var r=t[n],s=e[r];t[n]=[r,s,hS(s)]}return t}function pS(e,t){return function(n){return n==null?!1:n[e]===t&&(t!==void 0||e in Object(n))}}function JL(e){var t=XL(e);return t.length==1&&t[0][2]?pS(t[0][0],t[0][1]):function(n){return n===e||GL(n,e,t)}}function ZL(e,t){return e!=null&&t in Object(e)}function QL(e,t,n){t=ca(t,e);for(var r=-1,s=t.length,o=!1;++r<s;){var a=ua(t[r]);if(!(o=e!=null&&n(e,a)))break;e=e[a]}return o||++r!=s?o:(s=e==null?0:e.length,!!s&&vv(s)&&vd(a,s)&&(Gn(e)||cl(e)))}function vS(e,t){return e!=null&&QL(e,t,ZL)}var eI=1,tI=2;function nI(e,t){return bv(e)&&hS(t)?pS(ua(e),t):function(n){var r=rn(n,e);return r===void 0&&r===t?vS(n,e):yd(t,r,eI|tI)}}function rI(e){return function(t){return t==null?void 0:t[e]}}function sI(e){return function(t){return bd(t,e)}}function oI(e){return bv(e)?rI(ua(e)):sI(e)}function mS(e){return typeof e==\"function\"?e:e==null?dv:typeof e==\"object\"?Gn(e)?nI(e[0],e[1]):JL(e):oI(e)}function iI(e){return function(t,n,r){for(var s=-1,o=Object(t),a=r(t),i=a.length;i--;){var l=a[++s];if(n(o[l],l,o)===!1)break}return t}}var gS=iI();function aI(e,t){return e&&gS(e,t,Vl)}function lI(e,t){return function(n,r){if(n==null)return n;if(!la(n))return e(n,r);for(var s=n.length,o=-1,a=Object(n);++o<s&&r(a[o],o,a)!==!1;);return n}}var cI=lI(aI),bf=function(){return Hr.Date.now()},uI=\"Expected a function\",dI=Math.max,fI=Math.min;function nr(e,t,n){var r,s,o,a,i,l,u=0,f=!1,d=!1,h=!0;if(typeof e!=\"function\")throw new TypeError(uI);t=k0(t)||0,Xn(n)&&(f=!!n.leading,d=\"maxWait\"in n,o=d?dI(k0(n.maxWait)||0,t):o,h=\"trailing\"in n?!!n.trailing:h);function v(C){var E=r,k=s;return r=s=void 0,u=C,a=e.apply(k,E),a}function b(C){return u=C,i=setTimeout(m,t),f?v(C):a}function p(C){var E=C-l,k=C-u,T=t-E;return d?fI(T,o-k):T}function g(C){var E=C-l,k=C-u;return l===void 0||E>=t||E<0||d&&k>=o}function m(){var C=bf();if(g(C))return y(C);i=setTimeout(m,p(C))}function y(C){return i=void 0,h&&r?v(C):(r=s=void 0,a)}function _(){i!==void 0&&clearTimeout(i),u=0,r=l=s=i=void 0}function w(){return i===void 0?a:y(bf())}function S(){var C=bf(),E=g(C);if(r=arguments,s=this,l=C,E){if(i===void 0)return b(l);if(d)return clearTimeout(i),i=setTimeout(m,t),v(l)}return i===void 0&&(i=setTimeout(m,t)),a}return S.cancel=_,S.flush=w,S}function kh(e,t,n){(n!==void 0&&!Hl(e[t],n)||n===void 0&&!(t in e))&&hv(e,t,n)}function _S(e){return es(e)&&la(e)}function Eh(e,t){if(!(t===\"constructor\"&&typeof e[t]==\"function\")&&t!=\"__proto__\")return e[t]}function hI(e){return aa(e,zl(e))}function pI(e,t,n,r,s,o,a){var i=Eh(e,n),l=Eh(t,n),u=a.get(l);if(u){kh(e,n,u);return}var f=o?o(i,l,n+\"\",e,t,a):void 0,d=f===void 0;if(d){var h=Gn(l),v=!h&&ul(l),b=!h&&!v&&_v(l);f=l,h||v||b?Gn(i)?f=i:_S(i)?f=Hw(i):v?(d=!1,f=tS(l,!0)):b?(d=!1,f=iS(l,!0)):f=[]:Qw(l)||cl(l)?(f=i,cl(i)?f=hI(i):(!Xn(i)||fv(i))&&(f=aS(l))):d=!1}d&&(a.set(l,f),s(f,l,r,o,a),a.delete(l)),kh(e,n,f)}function bS(e,t,n,r,s){e!==t&&gS(t,function(o,a){if(s||(s=new $r),Xn(o))pI(e,t,a,n,bS,r,s);else{var i=r?r(Eh(e,a),o,a+\"\",e,t,s):void 0;i===void 0&&(i=o),kh(e,a,i)}},zl)}function vI(e){var t=e==null?0:e.length;return t?e[t-1]:void 0}function yS(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var s=r-1;return zw(e,mS(t),s,!0)}function mI(e,t){var n=-1,r=la(e)?Array(e.length):[];return cI(e,function(s,o,a){r[++n]=t(s,o,a)}),r}function gI(e,t){var n=Gn(e)?uv:mI;return n(e,mS(t))}function _I(e,t){return Wl(gI(e,t),1)}var bI=1/0;function yI(e){var t=e==null?0:e.length;return t?Wl(e,bI):[]}function pl(e){for(var t=-1,n=e==null?0:e.length,r={};++t<n;){var s=e[t];r[s[0]]=s[1]}return r}function wI(e,t){return t.length<2?e:bd(e,WA(t,0,-1))}function wn(e,t){return yd(e,t)}function fn(e){return e==null}function wS(e){return e===void 0}var SS=fM(function(e,t,n){bS(e,t,n)});function SI(e,t){return t=ca(t,e),e=wI(e,t),e==null||delete e[ua(vI(t))]}function CI(e){return Qw(e)?void 0:e}var kI=1,EI=2,TI=4,RI=Jw(function(e,t){var n={};if(e==null)return n;var r=!1;t=uv(t,function(o){return o=ca(o,e),r||(r=o.length>1),o}),aa(e,oS(e),n),r&&(n=Oi(n,kI|EI|TI,CI));for(var s=t.length;s--;)SI(n,t[s]);return n});function CS(e,t,n,r){if(!Xn(e))return e;t=ca(t,e);for(var s=-1,o=t.length,a=o-1,i=e;i!=null&&++s<o;){var l=ua(t[s]),u=n;if(l===\"__proto__\"||l===\"constructor\"||l===\"prototype\")return e;if(s!=a){var f=i[l];u=void 0,u===void 0&&(u=Xn(f)?f:vd(t[s+1])?[]:{})}pv(i,l,u),i=i[l]}return e}function xI(e,t,n){for(var r=-1,s=t.length,o={};++r<s;){var a=t[r],i=bd(e,a);n(i,a)&&CS(o,ca(a,e),i)}return o}function OI(e,t){return xI(e,t,function(n,r){return vS(e,r)})}var Or=Jw(function(e,t){return e==null?{}:OI(e,t)});function MI(e,t,n){return e==null?e:CS(e,t,n)}var AI=\"Expected a function\";function zo(e,t,n){var r=!0,s=!0;if(typeof e!=\"function\")throw new TypeError(AI);return Xn(n)&&(r=\"leading\"in n?!!n.leading:r,s=\"trailing\"in n?!!n.trailing:s),nr(e,t,{leading:r,maxWait:t,trailing:s})}var $I=1/0,LI=xi&&1/kv(new xi([,-0]))[1]==$I?function(e){return new xi(e)}:YO,II=200;function PI(e,t,n){var r=-1,s=oM,o=e.length,a=!0,i=[],l=i;if(o>=II){var u=LI(e);if(u)return kv(u);a=!1,s=dS,l=new hl}else l=i;e:for(;++r<o;){var f=e[r],d=f;if(f=f!==0?f:0,a&&d===d){for(var h=l.length;h--;)if(l[h]===d)continue e;i.push(f)}else s(l,d,n)||(l!==i&&l.push(d),i.push(f))}return i}var yf=Kw(function(e){return PI(Wl(e,1,_S,!0))});const Lt=e=>e===void 0,Vt=e=>typeof e==\"boolean\",Ge=e=>typeof e==\"number\",sr=e=>!e&&e!==0||ke(e)&&e.length===0||lt(e)&&!Object.keys(e).length,lr=e=>typeof Element>\"u\"?!1:e instanceof Element,Xo=e=>fn(e),DI=e=>ze(e)?!Number.isNaN(Number(e)):!1,wd=e=>e===window;var BI=Object.defineProperty,NI=Object.defineProperties,FI=Object.getOwnPropertyDescriptors,J0=Object.getOwnPropertySymbols,HI=Object.prototype.hasOwnProperty,VI=Object.prototype.propertyIsEnumerable,Z0=(e,t,n)=>t in e?BI(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,zI=(e,t)=>{for(var n in t||(t={}))HI.call(t,n)&&Z0(e,n,t[n]);if(J0)for(var n of J0(t))VI.call(t,n)&&Z0(e,n,t[n]);return e},WI=(e,t)=>NI(e,FI(t));function Th(e,t){var n;const r=Wt();return En(()=>{r.value=e()},WI(zI({},t),{flush:(n=void 0)!=null?n:\"sync\"})),ra(r)}var Q0;const bt=typeof window<\"u\",KI=e=>typeof e<\"u\",Rh=e=>typeof e==\"function\",jI=e=>typeof e==\"string\",Vi=()=>{},xh=bt&&((Q0=window==null?void 0:window.navigator)==null?void 0:Q0.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function oo(e){return typeof e==\"function\"?e():c(e)}function kS(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}function UI(e,t={}){let n,r,s=Vi;const o=i=>{clearTimeout(i),s(),s=Vi};return i=>{const l=oo(e),u=oo(t.maxWait);return n&&o(n),l<=0||u!==void 0&&u<=0?(r&&(o(r),r=null),Promise.resolve(i())):new Promise((f,d)=>{s=t.rejectOnCancel?d:f,u&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(i())},u)),n=setTimeout(()=>{r&&o(r),r=null,f(i())},l)})}}function qI(e,t=!0,n=!0,r=!1){let s=0,o,a=!0,i=Vi,l;const u=()=>{o&&(clearTimeout(o),o=void 0,i(),i=Vi)};return d=>{const h=oo(e),v=Date.now()-s,b=()=>l=d();return u(),h<=0?(s=Date.now(),b()):(v>h&&(n||!a)?(s=Date.now(),b()):t&&(l=new Promise((p,g)=>{i=r?g:p,o=setTimeout(()=>{s=Date.now(),a=!0,p(b()),u()},Math.max(0,h-v))})),!n&&!o&&(o=setTimeout(()=>a=!0,h)),a=!1,l)}}function YI(e){return e}function GI(e,t){let n,r,s;const o=W(!0),a=()=>{o.value=!0,s()};ye(e,a,{flush:\"sync\"});const i=Rh(t)?t:t.get,l=Rh(t)?void 0:t.set,u=AT((f,d)=>(r=f,s=d,{get(){return o.value&&(n=i(),o.value=!1),r(),n},set(h){l==null||l(h)}}));return Object.isExtensible(u)&&(u.trigger=a),u}function Kl(e){return Bp()?(Np(e),!0):!1}function XI(e,t=200,n={}){return kS(UI(t,n),e)}function JI(e,t=200,n={}){const r=W(e.value),s=XI(()=>{r.value=e.value},t,n);return ye(e,()=>s()),r}function ES(e,t=200,n=!1,r=!0,s=!1){return kS(qI(t,n,r,s),e)}function Ev(e,t=!0){ct()?it(e):t?e():je(e)}function Jo(e,t,n={}){const{immediate:r=!0}=n,s=W(!1);let o=null;function a(){o&&(clearTimeout(o),o=null)}function i(){s.value=!1,a()}function l(...u){a(),s.value=!0,o=setTimeout(()=>{s.value=!1,o=null,e(...u)},oo(t))}return r&&(s.value=!0,bt&&l()),Kl(i),{isPending:ra(s),start:l,stop:i}}function Un(e){var t;const n=oo(e);return(t=n==null?void 0:n.$el)!=null?t:n}const go=bt?window:void 0,ZI=bt?window.document:void 0;function It(...e){let t,n,r,s;if(jI(e[0])||Array.isArray(e[0])?([n,r,s]=e,t=go):[t,n,r,s]=e,!t)return Vi;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],a=()=>{o.forEach(f=>f()),o.length=0},i=(f,d,h,v)=>(f.addEventListener(d,h,v),()=>f.removeEventListener(d,h,v)),l=ye(()=>[Un(t),oo(s)],([f,d])=>{a(),f&&o.push(...n.flatMap(h=>r.map(v=>i(f,h,v,d))))},{immediate:!0,flush:\"post\"}),u=()=>{l(),a()};return Kl(u),u}let e_=!1;function Tv(e,t,n={}){const{window:r=go,ignore:s=[],capture:o=!0,detectIframe:a=!1}=n;if(!r)return;xh&&!e_&&(e_=!0,Array.from(r.document.body.children).forEach(h=>h.addEventListener(\"click\",Vi)));let i=!0;const l=h=>s.some(v=>{if(typeof v==\"string\")return Array.from(r.document.querySelectorAll(v)).some(b=>b===h.target||h.composedPath().includes(b));{const b=Un(v);return b&&(h.target===b||h.composedPath().includes(b))}}),f=[It(r,\"click\",h=>{const v=Un(e);if(!(!v||v===h.target||h.composedPath().includes(v))){if(h.detail===0&&(i=!l(h)),!i){i=!0;return}t(h)}},{passive:!0,capture:o}),It(r,\"pointerdown\",h=>{const v=Un(e);v&&(i=!h.composedPath().includes(v)&&!l(h))},{passive:!0}),a&&It(r,\"blur\",h=>{var v;const b=Un(e);((v=r.document.activeElement)==null?void 0:v.tagName)===\"IFRAME\"&&!(b!=null&&b.contains(r.document.activeElement))&&t(h)})].filter(Boolean);return()=>f.forEach(h=>h())}function QI(e={}){var t;const{window:n=go}=e,r=(t=e.document)!=null?t:n==null?void 0:n.document,s=GI(()=>null,()=>r==null?void 0:r.activeElement);return n&&(It(n,\"blur\",o=>{o.relatedTarget===null&&s.trigger()},!0),It(n,\"focus\",s.trigger,!0)),s}function TS(e,t=!1){const n=W(),r=()=>n.value=!!e();return r(),Ev(r,t),n}function eP(e){return JSON.parse(JSON.stringify(e))}const t_=typeof globalThis<\"u\"?globalThis:typeof window<\"u\"?window:typeof global<\"u\"?global:typeof self<\"u\"?self:{},n_=\"__vueuse_ssr_handlers__\";t_[n_]=t_[n_]||{};function tP(e,t,{window:n=go,initialValue:r=\"\"}={}){const s=W(r),o=O(()=>{var a;return Un(t)||((a=n==null?void 0:n.document)==null?void 0:a.documentElement)});return ye([o,()=>oo(e)],([a,i])=>{var l;if(a&&n){const u=(l=n.getComputedStyle(a).getPropertyValue(i))==null?void 0:l.trim();s.value=u||r}},{immediate:!0}),ye(s,a=>{var i;(i=o.value)!=null&&i.style&&o.value.style.setProperty(oo(e),a)}),s}function nP({document:e=ZI}={}){if(!e)return W(\"visible\");const t=W(e.visibilityState);return It(e,\"visibilitychange\",()=>{t.value=e.visibilityState}),t}var r_=Object.getOwnPropertySymbols,rP=Object.prototype.hasOwnProperty,sP=Object.prototype.propertyIsEnumerable,oP=(e,t)=>{var n={};for(var r in e)rP.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&r_)for(var r of r_(e))t.indexOf(r)<0&&sP.call(e,r)&&(n[r]=e[r]);return n};function jt(e,t,n={}){const r=n,{window:s=go}=r,o=oP(r,[\"window\"]);let a;const i=TS(()=>s&&\"ResizeObserver\"in s),l=()=>{a&&(a.disconnect(),a=void 0)},u=ye(()=>Un(e),d=>{l(),i.value&&s&&d&&(a=new ResizeObserver(t),a.observe(d,o))},{immediate:!0,flush:\"post\"}),f=()=>{l(),u()};return Kl(f),{isSupported:i,stop:f}}function s_(e,t={}){const{reset:n=!0,windowResize:r=!0,windowScroll:s=!0,immediate:o=!0}=t,a=W(0),i=W(0),l=W(0),u=W(0),f=W(0),d=W(0),h=W(0),v=W(0);function b(){const p=Un(e);if(!p){n&&(a.value=0,i.value=0,l.value=0,u.value=0,f.value=0,d.value=0,h.value=0,v.value=0);return}const g=p.getBoundingClientRect();a.value=g.height,i.value=g.bottom,l.value=g.left,u.value=g.right,f.value=g.top,d.value=g.width,h.value=g.x,v.value=g.y}return jt(e,b),ye(()=>Un(e),p=>!p&&b()),s&&It(\"scroll\",b,{capture:!0,passive:!0}),r&&It(\"resize\",b,{passive:!0}),Ev(()=>{o&&b()}),{height:a,bottom:i,left:l,right:u,top:f,width:d,x:h,y:v,update:b}}var o_=Object.getOwnPropertySymbols,iP=Object.prototype.hasOwnProperty,aP=Object.prototype.propertyIsEnumerable,lP=(e,t)=>{var n={};for(var r in e)iP.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&o_)for(var r of o_(e))t.indexOf(r)<0&&aP.call(e,r)&&(n[r]=e[r]);return n};function RS(e,t,n={}){const r=n,{window:s=go}=r,o=lP(r,[\"window\"]);let a;const i=TS(()=>s&&\"MutationObserver\"in s),l=()=>{a&&(a.disconnect(),a=void 0)},u=ye(()=>Un(e),d=>{l(),i.value&&s&&d&&(a=new MutationObserver(t),a.observe(d,o))},{immediate:!0}),f=()=>{l(),u()};return Kl(f),{isSupported:i,stop:f}}var i_;(function(e){e.UP=\"UP\",e.RIGHT=\"RIGHT\",e.DOWN=\"DOWN\",e.LEFT=\"LEFT\",e.NONE=\"NONE\"})(i_||(i_={}));var cP=Object.defineProperty,a_=Object.getOwnPropertySymbols,uP=Object.prototype.hasOwnProperty,dP=Object.prototype.propertyIsEnumerable,l_=(e,t,n)=>t in e?cP(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,fP=(e,t)=>{for(var n in t||(t={}))uP.call(t,n)&&l_(e,n,t[n]);if(a_)for(var n of a_(t))dP.call(t,n)&&l_(e,n,t[n]);return e};const hP={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};fP({linear:YI},hP);function xS(e,t,n,r={}){var s,o,a;const{clone:i=!1,passive:l=!1,eventName:u,deep:f=!1,defaultValue:d}=r,h=ct(),v=n||(h==null?void 0:h.emit)||((s=h==null?void 0:h.$emit)==null?void 0:s.bind(h))||((a=(o=h==null?void 0:h.proxy)==null?void 0:o.$emit)==null?void 0:a.bind(h==null?void 0:h.proxy));let b=u;t||(t=\"modelValue\"),b=u||b||`update:${t.toString()}`;const p=m=>i?Rh(i)?i(m):eP(m):m,g=()=>KI(e[t])?p(e[t]):d;if(l){const m=g(),y=W(m);return ye(()=>e[t],_=>y.value=p(_)),ye(y,_=>{(_!==e[t]||f)&&v(b,_)},{deep:f}),y}else return O({get(){return g()},set(m){v(b,m)}})}function pP({window:e=go}={}){if(!e)return W(!1);const t=W(e.document.hasFocus());return It(e,\"blur\",()=>{t.value=!1}),It(e,\"focus\",()=>{t.value=!0}),t}function vP(e={}){const{window:t=go,initialWidth:n=1/0,initialHeight:r=1/0,listenOrientation:s=!0,includeScrollbar:o=!0}=e,a=W(n),i=W(r),l=()=>{t&&(o?(a.value=t.innerWidth,i.value=t.innerHeight):(a.value=t.document.documentElement.clientWidth,i.value=t.document.documentElement.clientHeight))};return l(),Ev(l),It(\"resize\",l,{passive:!0}),s&&It(\"orientationchange\",l,{passive:!0}),{width:a,height:i}}class mP extends Error{constructor(t){super(t),this.name=\"ElementPlusError\"}}function dn(e,t){throw new mP(`[${e}] ${t}`)}const c_={current:0},u_=W(0),OS=2e3,d_=Symbol(\"elZIndexContextKey\"),MS=Symbol(\"zIndexContextKey\"),da=e=>{const t=ct()?Fe(d_,c_):c_,n=e||(ct()?Fe(MS,void 0):void 0),r=O(()=>{const a=c(n);return Ge(a)?a:OS}),s=O(()=>r.value+u_.value),o=()=>(t.current++,u_.value=t.current,s.value);return!bt&&Fe(d_),{initialZIndex:r,currentZIndex:s,nextZIndex:o}};var gP={name:\"en\",el:{breadcrumb:{label:\"Breadcrumb\"},colorpicker:{confirm:\"OK\",clear:\"Clear\",defaultLabel:\"color picker\",description:\"current color is {color}. press enter to select a new color.\",alphaLabel:\"pick alpha value\"},datepicker:{now:\"Now\",today:\"Today\",cancel:\"Cancel\",clear:\"Clear\",confirm:\"OK\",dateTablePrompt:\"Use the arrow keys and enter to select the day of the month\",monthTablePrompt:\"Use the arrow keys and enter to select the month\",yearTablePrompt:\"Use the arrow keys and enter to select the year\",selectedDate:\"Selected date\",selectDate:\"Select date\",selectTime:\"Select time\",startDate:\"Start Date\",startTime:\"Start Time\",endDate:\"End Date\",endTime:\"End Time\",prevYear:\"Previous Year\",nextYear:\"Next Year\",prevMonth:\"Previous Month\",nextMonth:\"Next Month\",year:\"\",month1:\"January\",month2:\"February\",month3:\"March\",month4:\"April\",month5:\"May\",month6:\"June\",month7:\"July\",month8:\"August\",month9:\"September\",month10:\"October\",month11:\"November\",month12:\"December\",week:\"week\",weeks:{sun:\"Sun\",mon:\"Mon\",tue:\"Tue\",wed:\"Wed\",thu:\"Thu\",fri:\"Fri\",sat:\"Sat\"},weeksFull:{sun:\"Sunday\",mon:\"Monday\",tue:\"Tuesday\",wed:\"Wednesday\",thu:\"Thursday\",fri:\"Friday\",sat:\"Saturday\"},months:{jan:\"Jan\",feb:\"Feb\",mar:\"Mar\",apr:\"Apr\",may:\"May\",jun:\"Jun\",jul:\"Jul\",aug:\"Aug\",sep:\"Sep\",oct:\"Oct\",nov:\"Nov\",dec:\"Dec\"}},inputNumber:{decrease:\"decrease number\",increase:\"increase number\"},select:{loading:\"Loading\",noMatch:\"No matching data\",noData:\"No data\",placeholder:\"Select\"},mention:{loading:\"Loading\"},dropdown:{toggleDropdown:\"Toggle Dropdown\"},cascader:{noMatch:\"No matching data\",loading:\"Loading\",placeholder:\"Select\",noData:\"No data\"},pagination:{goto:\"Go to\",pagesize:\"/page\",total:\"Total {total}\",pageClassifier:\"\",page:\"Page\",prev:\"Go to previous page\",next:\"Go to next page\",currentPage:\"page {pager}\",prevPages:\"Previous {pager} pages\",nextPages:\"Next {pager} pages\",deprecationWarning:\"Deprecated usages detected, please refer to the el-pagination documentation for more details\"},dialog:{close:\"Close this dialog\"},drawer:{close:\"Close this dialog\"},messagebox:{title:\"Message\",confirm:\"OK\",cancel:\"Cancel\",error:\"Illegal input\",close:\"Close this dialog\"},upload:{deleteTip:\"press delete to remove\",delete:\"Delete\",preview:\"Preview\",continue:\"Continue\"},slider:{defaultLabel:\"slider between {min} and {max}\",defaultRangeStartLabel:\"pick start value\",defaultRangeEndLabel:\"pick end value\"},table:{emptyText:\"No Data\",confirmFilter:\"Confirm\",resetFilter:\"Reset\",clearFilter:\"All\",sumText:\"Sum\"},tour:{next:\"Next\",previous:\"Previous\",finish:\"Finish\"},tree:{emptyText:\"No Data\"},transfer:{noMatch:\"No matching data\",noData:\"No data\",titles:[\"List 1\",\"List 2\"],filterPlaceholder:\"Enter keyword\",noCheckedFormat:\"{total} items\",hasCheckedFormat:\"{checked}/{total} checked\"},image:{error:\"FAILED\"},pageHeader:{title:\"Back\"},popconfirm:{confirmButtonText:\"Yes\",cancelButtonText:\"No\"},carousel:{leftArrow:\"Carousel arrow left\",rightArrow:\"Carousel arrow right\",indicator:\"Carousel switch to index {index}\"}}};const _P=e=>(t,n)=>bP(t,n,c(e)),bP=(e,t,n)=>rn(n,e,e).replace(/\\{(\\w+)\\}/g,(r,s)=>{var o;return`${(o=t==null?void 0:t[s])!=null?o:`{${s}}`}`}),yP=e=>{const t=O(()=>c(e).name),n=Ft(e)?e:W(e);return{lang:t,locale:n,t:_P(e)}},AS=Symbol(\"localeContextKey\"),yt=e=>{const t=e||Fe(AS,W());return yP(O(()=>t.value||gP))},$S=\"__epPropKey\",ie=e=>e,wP=e=>lt(e)&&!!e[$S],Vr=(e,t)=>{if(!lt(e)||wP(e))return e;const{values:n,required:r,default:s,type:o,validator:a}=e,l={type:o,required:!!r,validator:n||a?u=>{let f=!1,d=[];if(n&&(d=Array.from(n),kt(e,\"default\")&&d.push(s),f||(f=d.includes(u))),a&&(f||(f=a(u))),!f&&d.length>0){const h=[...new Set(d)].map(v=>JSON.stringify(v)).join(\", \");F3(`Invalid prop: validation failed${t?` for prop \"${t}\"`:\"\"}. Expected one of [${h}], got value ${JSON.stringify(u)}.`)}return f}:void 0,[$S]:!0};return kt(e,\"default\")&&(l.default=s),l},xe=e=>pl(Object.entries(e).map(([t,n])=>[t,Vr(n,t)])),is=[\"\",\"default\",\"small\",\"large\"],on=Vr({type:String,values:is,required:!1}),LS=Symbol(\"size\"),IS=()=>{const e=Fe(LS,{});return O(()=>c(e.size)||\"\")},PS=Symbol(\"emptyValuesContextKey\"),SP=[\"\",void 0,null],CP=void 0,fa=xe({emptyValues:Array,valueOnClear:{type:[String,Number,Boolean,Function],default:void 0,validator:e=>Ke(e)?!e():!e}}),Sd=(e,t)=>{const n=ct()?Fe(PS,W({})):W({}),r=O(()=>e.emptyValues||n.value.emptyValues||SP),s=O(()=>Ke(e.valueOnClear)?e.valueOnClear():e.valueOnClear!==void 0?e.valueOnClear:Ke(n.value.valueOnClear)?n.value.valueOnClear():n.value.valueOnClear!==void 0?n.value.valueOnClear:t!==void 0?t:CP),o=a=>r.value.includes(a);return r.value.includes(s.value),{emptyValues:r,valueOnClear:s,isEmptyValue:o}},zi=e=>Object.keys(e),DS=e=>Object.entries(e),Fc=(e,t,n)=>({get value(){return rn(e,t,n)},set value(r){MI(e,t,r)}}),xu=W();function Cd(e,t=void 0){const n=ct()?Fe(Pw,xu):xu;return e?O(()=>{var r,s;return(s=(r=n.value)==null?void 0:r[e])!=null?s:t}):n}function kd(e,t){const n=Cd(),r=we(e,O(()=>{var i;return((i=n.value)==null?void 0:i.namespace)||Ua})),s=yt(O(()=>{var i;return(i=n.value)==null?void 0:i.locale})),o=da(O(()=>{var i;return((i=n.value)==null?void 0:i.zIndex)||OS})),a=O(()=>{var i;return c(t)||((i=n.value)==null?void 0:i.size)||\"\"});return Rv(O(()=>c(n)||{})),{ns:r,locale:s,zIndex:o,size:a}}const Rv=(e,t,n=!1)=>{var r;const s=!!ct(),o=s?Cd():void 0,a=(r=t==null?void 0:t.provide)!=null?r:s?pt:void 0;if(!a)return;const i=O(()=>{const l=c(e);return o!=null&&o.value?kP(o.value,l):l});return a(Pw,i),a(AS,O(()=>i.value.locale)),a(Dw,O(()=>i.value.namespace)),a(MS,O(()=>i.value.zIndex)),a(LS,{size:O(()=>i.value.size||\"\")}),a(PS,O(()=>({emptyValues:i.value.emptyValues,valueOnClear:i.value.valueOnClear}))),(n||!xu.value)&&(xu.value=i.value),i},kP=(e,t)=>{const n=[...new Set([...zi(e),...zi(t)])],r={};for(const s of n)r[s]=t[s]!==void 0?t[s]:e[s];return r},EP=(e=[])=>({version:cO,install:(n,r)=>{n[b0]||(n[b0]=!0,e.forEach(s=>n.use(s)),r&&Rv(r,n,!0))}}),ot=\"update:modelValue\",Bt=\"change\",Tn=\"input\",TP=xe({zIndex:{type:ie([Number,String]),default:100},target:{type:String,default:\"\"},offset:{type:Number,default:0},position:{type:String,values:[\"top\",\"bottom\"],default:\"top\"}}),RP={scroll:({scrollTop:e,fixed:t})=>Ge(e)&&Vt(t),[Bt]:e=>Vt(e)};var Oe=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n};function xP(e,t,n,r){const s=n-t;return e/=r/2,e<1?s/2*e*e*e+t:s/2*((e-=2)*e*e+2)+t}const io=e=>bt?window.requestAnimationFrame(e):setTimeout(e,16),Zo=e=>bt?window.cancelAnimationFrame(e):clearTimeout(e),BS=(e=\"\")=>e.split(\" \").filter(t=>!!t.trim()),Zn=(e,t)=>{if(!e||!t)return!1;if(t.includes(\" \"))throw new Error(\"className should not contain space.\");return e.classList.contains(t)},pr=(e,t)=>{!e||!t.trim()||e.classList.add(...BS(t))},Bn=(e,t)=>{!e||!t.trim()||e.classList.remove(...BS(t))},bs=(e,t)=>{var n;if(!bt||!e||!t)return\"\";let r=Yn(t);r===\"float\"&&(r=\"cssFloat\");try{const s=e.style[r];if(s)return s;const o=(n=document.defaultView)==null?void 0:n.getComputedStyle(e,\"\");return o?o[r]:\"\"}catch{return e.style[r]}},NS=(e,t,n)=>{if(!(!e||!t))if(lt(t))DS(t).forEach(([r,s])=>NS(e,r,s));else{const r=Yn(t);e.style[r]=n}};function en(e,t=\"px\"){if(!e)return\"\";if(Ge(e)||DI(e))return`${e}${t}`;if(ze(e))return e}const OP=(e,t)=>{if(!bt)return!1;const n={undefined:\"overflow\",true:\"overflow-y\",false:\"overflow-x\"}[String(t)],r=bs(e,n);return[\"scroll\",\"auto\",\"overlay\"].some(s=>r.includes(s))},xv=(e,t)=>{if(!bt)return;let n=e;for(;n;){if([window,document,document.documentElement].includes(n))return window;if(OP(n,t))return n;n=n.parentNode}return n};let hc;const FS=e=>{var t;if(!bt)return 0;if(hc!==void 0)return hc;const n=document.createElement(\"div\");n.className=`${e}-scrollbar__wrap`,n.style.visibility=\"hidden\",n.style.width=\"100px\",n.style.position=\"absolute\",n.style.top=\"-9999px\",document.body.appendChild(n);const r=n.offsetWidth;n.style.overflow=\"scroll\";const s=document.createElement(\"div\");s.style.width=\"100%\",n.appendChild(s);const o=s.offsetWidth;return(t=n.parentNode)==null||t.removeChild(n),hc=r-o,hc};function Ov(e,t){if(!bt)return;if(!t){e.scrollTop=0;return}const n=[];let r=t.offsetParent;for(;r!==null&&e!==r&&e.contains(r);)n.push(r),r=r.offsetParent;const s=t.offsetTop+n.reduce((l,u)=>l+u.offsetTop,0),o=s+t.offsetHeight,a=e.scrollTop,i=a+e.clientHeight;s<a?e.scrollTop=s:o>i&&(e.scrollTop=o-e.clientHeight)}function MP(e,t,n,r,s){const o=Date.now();let a;const i=()=>{const u=Date.now()-o,f=xP(u>r?r:u,t,n,r);wd(e)?e.scrollTo(window.pageXOffset,f):e.scrollTop=f,u<r?a=io(i):Ke(s)&&s()};return i(),()=>{a&&Zo(a)}}const f_=(e,t)=>wd(t)?e.ownerDocument.documentElement:t,h_=e=>wd(e)?window.scrollY:e.scrollTop,HS=\"ElAffix\",AP=ee({name:HS}),$P=ee({...AP,props:TP,emits:RP,setup(e,{expose:t,emit:n}){const r=e,s=we(\"affix\"),o=Wt(),a=Wt(),i=Wt(),{height:l}=vP(),{height:u,width:f,top:d,bottom:h,update:v}=s_(a,{windowScroll:!1}),b=s_(o),p=W(!1),g=W(0),m=W(0),y=O(()=>({height:p.value?`${u.value}px`:\"\",width:p.value?`${f.value}px`:\"\"})),_=O(()=>{if(!p.value)return{};const C=r.offset?en(r.offset):0;return{height:`${u.value}px`,width:`${f.value}px`,top:r.position===\"top\"?C:\"\",bottom:r.position===\"bottom\"?C:\"\",transform:m.value?`translateY(${m.value}px)`:\"\",zIndex:r.zIndex}}),w=()=>{if(!i.value)return;g.value=i.value instanceof Window?document.documentElement.scrollTop:i.value.scrollTop||0;const{position:C,target:E,offset:k}=r,T=k+u.value;if(C===\"top\")if(E){const x=b.bottom.value-T;p.value=k>d.value&&b.bottom.value>0,m.value=x<0?x:0}else p.value=k>d.value;else if(E){const x=l.value-b.top.value-T;p.value=l.value-k<h.value&&l.value>b.top.value,m.value=x<0?-x:0}else p.value=l.value-k<h.value},S=()=>{v(),n(\"scroll\",{scrollTop:g.value,fixed:p.value})};return ye(p,C=>n(\"change\",C)),it(()=>{var C;r.target?(o.value=(C=document.querySelector(r.target))!=null?C:void 0,o.value||dn(HS,`Target does not exist: ${r.target}`)):o.value=document.documentElement,i.value=xv(a.value,!0),v()}),It(i,\"scroll\",S),En(w),t({update:w,updateRoot:v}),(C,E)=>($(),X(\"div\",{ref_key:\"root\",ref:a,class:D(c(s).b()),style:Ue(c(y))},[Z(\"div\",{class:D({[c(s).m(\"fixed\")]:p.value}),style:Ue(c(_))},[ue(C.$slots,\"default\")],6)],6))}});var LP=Oe($P,[[\"__file\",\"affix.vue\"]]);const Qe=(e,t)=>{if(e.install=n=>{for(const r of[e,...Object.values(t??{})])n.component(r.name,r)},t)for(const[n,r]of Object.entries(t))e[n]=r;return e},VS=(e,t)=>(e.install=n=>{e._context=n._context,n.config.globalProperties[t]=e},e),IP=(e,t)=>(e.install=n=>{n.directive(t,e)},e),Gt=e=>(e.install=Mt,e),PP=Qe(LP),DP=xe({size:{type:ie([Number,String])},color:{type:String}}),BP=ee({name:\"ElIcon\",inheritAttrs:!1}),NP=ee({...BP,props:DP,setup(e){const t=e,n=we(\"icon\"),r=O(()=>{const{size:s,color:o}=t;return!s&&!o?{}:{fontSize:Lt(s)?void 0:en(s),\"--color\":o}});return(s,o)=>($(),X(\"i\",ft({class:c(n).b(),style:c(r)},s.$attrs),[ue(s.$slots,\"default\")],16))}});var FP=Oe(NP,[[\"__file\",\"icon.vue\"]]);const He=Qe(FP);/*! Element Plus Icons Vue v2.3.1 */var HP=ee({name:\"ArrowDown\",__name:\"arrow-down\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z\"})]))}}),As=HP,VP=ee({name:\"ArrowLeft\",__name:\"arrow-left\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M609.408 149.376 277.76 489.6a32 32 0 0 0 0 44.672l331.648 340.352a29.12 29.12 0 0 0 41.728 0 30.592 30.592 0 0 0 0-42.752L339.264 511.936l311.872-319.872a30.592 30.592 0 0 0 0-42.688 29.12 29.12 0 0 0-41.728 0z\"})]))}}),ao=VP,zP=ee({name:\"ArrowRight\",__name:\"arrow-right\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z\"})]))}}),qn=zP,WP=ee({name:\"ArrowUp\",__name:\"arrow-up\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0\"})]))}}),Mv=WP,KP=ee({name:\"Back\",__name:\"back\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64\"}),Z(\"path\",{fill:\"currentColor\",d:\"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z\"})]))}}),jP=KP,UP=ee({name:\"Bottom\",__name:\"bottom\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M544 805.888V168a32 32 0 1 0-64 0v637.888L246.656 557.952a30.72 30.72 0 0 0-45.312 0 35.52 35.52 0 0 0 0 48.064l288 306.048a30.72 30.72 0 0 0 45.312 0l288-306.048a35.52 35.52 0 0 0 0-48 30.72 30.72 0 0 0-45.312 0L544 805.824z\"})]))}}),qP=UP,YP=ee({name:\"Calendar\",__name:\"calendar\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M128 384v512h768V192H768v32a32 32 0 1 1-64 0v-32H320v32a32 32 0 0 1-64 0v-32H128v128h768v64zm192-256h384V96a32 32 0 1 1 64 0v32h160a32 32 0 0 1 32 32v768a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h160V96a32 32 0 0 1 64 0zm-32 384h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 0 1 0 64h-64a32 32 0 0 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m192-192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64m0 192h64a32 32 0 1 1 0 64h-64a32 32 0 1 1 0-64\"})]))}}),GP=YP,XP=ee({name:\"CaretRight\",__name:\"caret-right\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M384 192v640l384-320.064z\"})]))}}),zS=XP,JP=ee({name:\"CaretTop\",__name:\"caret-top\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 320 192 704h639.936z\"})]))}}),ZP=JP,QP=ee({name:\"Check\",__name:\"check\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M406.656 706.944 195.84 496.256a32 32 0 1 0-45.248 45.248l256 256 512-512a32 32 0 0 0-45.248-45.248L406.592 706.944z\"})]))}}),jl=QP,e6=ee({name:\"CircleCheckFilled\",__name:\"circle-check-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"})]))}}),t6=e6,n6=ee({name:\"CircleCheck\",__name:\"circle-check\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"}),Z(\"path\",{fill:\"currentColor\",d:\"M745.344 361.344a32 32 0 0 1 45.312 45.312l-288 288a32 32 0 0 1-45.312 0l-160-160a32 32 0 1 1 45.312-45.312L480 626.752l265.344-265.408z\"})]))}}),Av=n6,r6=ee({name:\"CircleCloseFilled\",__name:\"circle-close-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z\"})]))}}),$v=r6,s6=ee({name:\"CircleClose\",__name:\"circle-close\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m466.752 512-90.496-90.496a32 32 0 0 1 45.248-45.248L512 466.752l90.496-90.496a32 32 0 1 1 45.248 45.248L557.248 512l90.496 90.496a32 32 0 1 1-45.248 45.248L512 557.248l-90.496 90.496a32 32 0 0 1-45.248-45.248z\"}),Z(\"path\",{fill:\"currentColor\",d:\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"})]))}}),as=s6,o6=ee({name:\"CirclePlus\",__name:\"circle-plus\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M352 480h320a32 32 0 1 1 0 64H352a32 32 0 0 1 0-64\"}),Z(\"path\",{fill:\"currentColor\",d:\"M480 672V352a32 32 0 1 1 64 0v320a32 32 0 0 1-64 0\"}),Z(\"path\",{fill:\"currentColor\",d:\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"})]))}}),i6=o6,a6=ee({name:\"Clock\",__name:\"clock\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 896a384 384 0 1 0 0-768 384 384 0 0 0 0 768m0 64a448 448 0 1 1 0-896 448 448 0 0 1 0 896\"}),Z(\"path\",{fill:\"currentColor\",d:\"M480 256a32 32 0 0 1 32 32v256a32 32 0 0 1-64 0V288a32 32 0 0 1 32-32\"}),Z(\"path\",{fill:\"currentColor\",d:\"M480 512h256q32 0 32 32t-32 32H480q-32 0-32-32t32-32\"})]))}}),WS=a6,l6=ee({name:\"Close\",__name:\"close\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z\"})]))}}),Dr=l6,c6=ee({name:\"Coin\",__name:\"coin\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m161.92 580.736 29.888 58.88C171.328 659.776 160 681.728 160 704c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 615.808 928 657.664 928 704c0 129.728-188.544 224-416 224S96 833.728 96 704c0-46.592 24.32-88.576 65.92-123.264z\"}),Z(\"path\",{fill:\"currentColor\",d:\"m161.92 388.736 29.888 58.88C171.328 467.84 160 489.792 160 512c0 82.304 155.328 160 352 160s352-77.696 352-160c0-22.272-11.392-44.16-31.808-64.32l30.464-58.432C903.936 423.808 928 465.664 928 512c0 129.728-188.544 224-416 224S96 641.728 96 512c0-46.592 24.32-88.576 65.92-123.264z\"}),Z(\"path\",{fill:\"currentColor\",d:\"M512 544c-227.456 0-416-94.272-416-224S284.544 96 512 96s416 94.272 416 224-188.544 224-416 224m0-64c196.672 0 352-77.696 352-160S708.672 160 512 160s-352 77.696-352 160 155.328 160 352 160\"})]))}}),u6=c6,d6=ee({name:\"DArrowLeft\",__name:\"d-arrow-left\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M529.408 149.376a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L259.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L197.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224zm256 0a29.12 29.12 0 0 1 41.728 0 30.592 30.592 0 0 1 0 42.688L515.264 511.936l311.872 319.936a30.592 30.592 0 0 1-.512 43.264 29.12 29.12 0 0 1-41.216-.512L453.76 534.272a32 32 0 0 1 0-44.672l331.648-340.224z\"})]))}}),lo=d6,f6=ee({name:\"DArrowRight\",__name:\"d-arrow-right\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M452.864 149.312a29.12 29.12 0 0 1 41.728.064L826.24 489.664a32 32 0 0 1 0 44.672L494.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L764.736 512 452.864 192a30.592 30.592 0 0 1 0-42.688m-256 0a29.12 29.12 0 0 1 41.728.064L570.24 489.664a32 32 0 0 1 0 44.672L238.592 874.624a29.12 29.12 0 0 1-41.728 0 30.592 30.592 0 0 1 0-42.752L508.736 512 196.864 192a30.592 30.592 0 0 1 0-42.688z\"})]))}}),co=f6,h6=ee({name:\"Delete\",__name:\"delete\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M160 256H96a32 32 0 0 1 0-64h256V95.936a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V192h256a32 32 0 1 1 0 64h-64v672a32 32 0 0 1-32 32H192a32 32 0 0 1-32-32zm448-64v-64H416v64zM224 896h576V256H224zm192-128a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32m192 0a32 32 0 0 1-32-32V416a32 32 0 0 1 64 0v320a32 32 0 0 1-32 32\"})]))}}),p6=h6,v6=ee({name:\"Document\",__name:\"document\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M832 384H576V128H192v768h640zm-26.496-64L640 154.496V320zM160 64h480l256 256v608a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V96a32 32 0 0 1 32-32m160 448h384v64H320zm0-192h160v64H320zm0 384h384v64H320z\"})]))}}),m6=v6,g6=ee({name:\"Edit\",__name:\"edit\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M832 512a32 32 0 1 1 64 0v352a32 32 0 0 1-32 32H160a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h352a32 32 0 0 1 0 64H192v640h640z\"}),Z(\"path\",{fill:\"currentColor\",d:\"m469.952 554.24 52.8-7.552L847.104 222.4a32 32 0 1 0-45.248-45.248L477.44 501.44l-7.552 52.8zm422.4-422.4a96 96 0 0 1 0 135.808l-331.84 331.84a32 32 0 0 1-18.112 9.088L436.8 623.68a32 32 0 0 1-36.224-36.224l15.104-105.6a32 32 0 0 1 9.024-18.112l331.904-331.84a96 96 0 0 1 135.744 0z\"})]))}}),_6=g6,b6=ee({name:\"Files\",__name:\"files\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M128 384v448h768V384zm-32-64h832a32 32 0 0 1 32 32v512a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32V352a32 32 0 0 1 32-32m64-128h704v64H160zm96-128h512v64H256z\"})]))}}),y6=b6,w6=ee({name:\"FolderOpened\",__name:\"folder-opened\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M878.08 448H241.92l-96 384h636.16l96-384zM832 384v-64H485.76L357.504 192H128v448l57.92-231.744A32 32 0 0 1 216.96 384zm-24.96 512H96a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h287.872l128.384 128H864a32 32 0 0 1 32 32v96h23.04a32 32 0 0 1 31.04 39.744l-112 448A32 32 0 0 1 807.04 896\"})]))}}),S6=w6,C6=ee({name:\"FullScreen\",__name:\"full-screen\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m160 96.064 192 .192a32 32 0 0 1 0 64l-192-.192V352a32 32 0 0 1-64 0V96h64zm0 831.872V928H96V672a32 32 0 1 1 64 0v191.936l192-.192a32 32 0 1 1 0 64zM864 96.064V96h64v256a32 32 0 1 1-64 0V160.064l-192 .192a32 32 0 1 1 0-64l192-.192zm0 831.872-192-.192a32 32 0 0 1 0-64l192 .192V672a32 32 0 1 1 64 0v256h-64z\"})]))}}),k6=C6,E6=ee({name:\"Hide\",__name:\"hide\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M876.8 156.8c0-9.6-3.2-16-9.6-22.4-6.4-6.4-12.8-9.6-22.4-9.6-9.6 0-16 3.2-22.4 9.6L736 220.8c-64-32-137.6-51.2-224-60.8-160 16-288 73.6-377.6 176C44.8 438.4 0 496 0 512s48 73.6 134.4 176c22.4 25.6 44.8 48 73.6 67.2l-86.4 89.6c-6.4 6.4-9.6 12.8-9.6 22.4 0 9.6 3.2 16 9.6 22.4 6.4 6.4 12.8 9.6 22.4 9.6 9.6 0 16-3.2 22.4-9.6l704-710.4c3.2-6.4 6.4-12.8 6.4-22.4Zm-646.4 528c-76.8-70.4-128-128-153.6-172.8 28.8-48 80-105.6 153.6-172.8C304 272 400 230.4 512 224c64 3.2 124.8 19.2 176 44.8l-54.4 54.4C598.4 300.8 560 288 512 288c-64 0-115.2 22.4-160 64s-64 96-64 160c0 48 12.8 89.6 35.2 124.8L256 707.2c-9.6-6.4-19.2-16-25.6-22.4Zm140.8-96c-12.8-22.4-19.2-48-19.2-76.8 0-44.8 16-83.2 48-112 32-28.8 67.2-48 112-48 28.8 0 54.4 6.4 73.6 19.2zM889.599 336c-12.8-16-28.8-28.8-41.6-41.6l-48 48c73.6 67.2 124.8 124.8 150.4 169.6-28.8 48-80 105.6-153.6 172.8-73.6 67.2-172.8 108.8-284.8 115.2-51.2-3.2-99.2-12.8-140.8-28.8l-48 48c57.6 22.4 118.4 38.4 188.8 44.8 160-16 288-73.6 377.6-176C979.199 585.6 1024 528 1024 512s-48.001-73.6-134.401-176Z\"}),Z(\"path\",{fill:\"currentColor\",d:\"M511.998 672c-12.8 0-25.6-3.2-38.4-6.4l-51.2 51.2c28.8 12.8 57.6 19.2 89.6 19.2 64 0 115.2-22.4 160-64 41.6-41.6 64-96 64-160 0-32-6.4-64-19.2-89.6l-51.2 51.2c3.2 12.8 6.4 25.6 6.4 38.4 0 44.8-16 83.2-48 112-32 28.8-67.2 48-112 48Z\"})]))}}),T6=E6,R6=ee({name:\"InfoFilled\",__name:\"info-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z\"})]))}}),Lv=R6,x6=ee({name:\"Loading\",__name:\"loading\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z\"})]))}}),ts=x6,O6=ee({name:\"Lock\",__name:\"lock\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M224 448a32 32 0 0 0-32 32v384a32 32 0 0 0 32 32h576a32 32 0 0 0 32-32V480a32 32 0 0 0-32-32zm0-64h576a96 96 0 0 1 96 96v384a96 96 0 0 1-96 96H224a96 96 0 0 1-96-96V480a96 96 0 0 1 96-96\"}),Z(\"path\",{fill:\"currentColor\",d:\"M512 544a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V576a32 32 0 0 1 32-32m192-160v-64a192 192 0 1 0-384 0v64zM512 64a256 256 0 0 1 256 256v128H256V320A256 256 0 0 1 512 64\"})]))}}),M6=O6,A6=ee({name:\"Menu\",__name:\"menu\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M160 448a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V160.064a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32V416a32 32 0 0 1-32 32zM160 896a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h256a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32zm448 0a32 32 0 0 1-32-32V608a32 32 0 0 1 32-32h255.936a32 32 0 0 1 32 32v256a32 32 0 0 1-32 32z\"})]))}}),$6=A6,L6=ee({name:\"Minus\",__name:\"minus\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M128 544h768a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64\"})]))}}),I6=L6,P6=ee({name:\"MoreFilled\",__name:\"more-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M176 416a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224m336 0a112 112 0 1 1 0 224 112 112 0 0 1 0-224\"})]))}}),p_=P6,D6=ee({name:\"More\",__name:\"more\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96\"})]))}}),B6=D6,N6=ee({name:\"PictureFilled\",__name:\"picture-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M96 896a32 32 0 0 1-32-32V160a32 32 0 0 1 32-32h832a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32zm315.52-228.48-68.928-68.928a32 32 0 0 0-45.248 0L128 768.064h778.688l-242.112-290.56a32 32 0 0 0-49.216 0L458.752 665.408a32 32 0 0 1-47.232 2.112M256 384a96 96 0 1 0 192.064-.064A96 96 0 0 0 256 384\"})]))}}),F6=N6,H6=ee({name:\"Plus\",__name:\"plus\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M480 480V128a32 32 0 0 1 64 0v352h352a32 32 0 1 1 0 64H544v352a32 32 0 1 1-64 0V544H128a32 32 0 0 1 0-64z\"})]))}}),KS=H6,V6=ee({name:\"QuestionFilled\",__name:\"question-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z\"})]))}}),z6=V6,W6=ee({name:\"RefreshLeft\",__name:\"refresh-left\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M289.088 296.704h92.992a32 32 0 0 1 0 64H232.96a32 32 0 0 1-32-32V179.712a32 32 0 0 1 64 0v50.56a384 384 0 0 1 643.84 282.88 384 384 0 0 1-383.936 384 384 384 0 0 1-384-384h64a320 320 0 1 0 640 0 320 320 0 0 0-555.712-216.448z\"})]))}}),K6=W6,j6=ee({name:\"RefreshRight\",__name:\"refresh-right\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M784.512 230.272v-50.56a32 32 0 1 1 64 0v149.056a32 32 0 0 1-32 32H667.52a32 32 0 1 1 0-64h92.992A320 320 0 1 0 524.8 833.152a320 320 0 0 0 320-320h64a384 384 0 0 1-384 384 384 384 0 0 1-384-384 384 384 0 0 1 643.712-282.88z\"})]))}}),U6=j6,q6=ee({name:\"ScaleToOriginal\",__name:\"scale-to-original\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M813.176 180.706a60.235 60.235 0 0 1 60.236 60.235v481.883a60.235 60.235 0 0 1-60.236 60.235H210.824a60.235 60.235 0 0 1-60.236-60.235V240.94a60.235 60.235 0 0 1 60.236-60.235h602.352zm0-60.235H210.824A120.47 120.47 0 0 0 90.353 240.94v481.883a120.47 120.47 0 0 0 120.47 120.47h602.353a120.47 120.47 0 0 0 120.471-120.47V240.94a120.47 120.47 0 0 0-120.47-120.47zm-120.47 180.705a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 0 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118zm-361.412 0a30.118 30.118 0 0 0-30.118 30.118v301.177a30.118 30.118 0 1 0 60.236 0V331.294a30.118 30.118 0 0 0-30.118-30.118M512 361.412a30.118 30.118 0 0 0-30.118 30.117v30.118a30.118 30.118 0 0 0 60.236 0V391.53A30.118 30.118 0 0 0 512 361.412M512 512a30.118 30.118 0 0 0-30.118 30.118v30.117a30.118 30.118 0 0 0 60.236 0v-30.117A30.118 30.118 0 0 0 512 512\"})]))}}),Y6=q6,G6=ee({name:\"Search\",__name:\"search\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704\"})]))}}),X6=G6,J6=ee({name:\"Setting\",__name:\"setting\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M600.704 64a32 32 0 0 1 30.464 22.208l35.2 109.376c14.784 7.232 28.928 15.36 42.432 24.512l112.384-24.192a32 32 0 0 1 34.432 15.36L944.32 364.8a32 32 0 0 1-4.032 37.504l-77.12 85.12a357.12 357.12 0 0 1 0 49.024l77.12 85.248a32 32 0 0 1 4.032 37.504l-88.704 153.6a32 32 0 0 1-34.432 15.296L708.8 803.904c-13.44 9.088-27.648 17.28-42.368 24.512l-35.264 109.376A32 32 0 0 1 600.704 960H423.296a32 32 0 0 1-30.464-22.208L357.696 828.48a351.616 351.616 0 0 1-42.56-24.64l-112.32 24.256a32 32 0 0 1-34.432-15.36L79.68 659.2a32 32 0 0 1 4.032-37.504l77.12-85.248a357.12 357.12 0 0 1 0-48.896l-77.12-85.248A32 32 0 0 1 79.68 364.8l88.704-153.6a32 32 0 0 1 34.432-15.296l112.32 24.256c13.568-9.152 27.776-17.408 42.56-24.64l35.2-109.312A32 32 0 0 1 423.232 64H600.64zm-23.424 64H446.72l-36.352 113.088-24.512 11.968a294.113 294.113 0 0 0-34.816 20.096l-22.656 15.36-116.224-25.088-65.28 113.152 79.68 88.192-1.92 27.136a293.12 293.12 0 0 0 0 40.192l1.92 27.136-79.808 88.192 65.344 113.152 116.224-25.024 22.656 15.296a294.113 294.113 0 0 0 34.816 20.096l24.512 11.968L446.72 896h130.688l36.48-113.152 24.448-11.904a288.282 288.282 0 0 0 34.752-20.096l22.592-15.296 116.288 25.024 65.28-113.152-79.744-88.192 1.92-27.136a293.12 293.12 0 0 0 0-40.256l-1.92-27.136 79.808-88.128-65.344-113.152-116.288 24.96-22.592-15.232a287.616 287.616 0 0 0-34.752-20.096l-24.448-11.904L577.344 128zM512 320a192 192 0 1 1 0 384 192 192 0 0 1 0-384m0 64a128 128 0 1 0 0 256 128 128 0 0 0 0-256\"})]))}}),Z6=J6,Q6=ee({name:\"SortDown\",__name:\"sort-down\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M576 96v709.568L333.312 562.816A32 32 0 1 0 288 608l297.408 297.344A32 32 0 0 0 640 882.688V96a32 32 0 0 0-64 0\"})]))}}),eD=Q6,tD=ee({name:\"SortUp\",__name:\"sort-up\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M384 141.248V928a32 32 0 1 0 64 0V218.56l242.688 242.688A32 32 0 1 0 736 416L438.592 118.656A32 32 0 0 0 384 141.248\"})]))}}),nD=tD,rD=ee({name:\"Sort\",__name:\"sort\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M384 96a32 32 0 0 1 64 0v786.752a32 32 0 0 1-54.592 22.656L95.936 608a32 32 0 0 1 0-45.312h.128a32 32 0 0 1 45.184 0L384 805.632zm192 45.248a32 32 0 0 1 54.592-22.592L928.064 416a32 32 0 0 1 0 45.312h-.128a32 32 0 0 1-45.184 0L640 218.496V928a32 32 0 1 1-64 0V141.248z\"})]))}}),sD=rD,oD=ee({name:\"StarFilled\",__name:\"star-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M283.84 867.84 512 747.776l228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72z\"})]))}}),pc=oD,iD=ee({name:\"Star\",__name:\"star\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m512 747.84 228.16 119.936a6.4 6.4 0 0 0 9.28-6.72l-43.52-254.08 184.512-179.904a6.4 6.4 0 0 0-3.52-10.88l-255.104-37.12L517.76 147.904a6.4 6.4 0 0 0-11.52 0L392.192 379.072l-255.104 37.12a6.4 6.4 0 0 0-3.52 10.88L318.08 606.976l-43.584 254.08a6.4 6.4 0 0 0 9.28 6.72zM313.6 924.48a70.4 70.4 0 0 1-102.144-74.24l37.888-220.928L88.96 472.96A70.4 70.4 0 0 1 128 352.896l221.76-32.256 99.2-200.96a70.4 70.4 0 0 1 126.208 0l99.2 200.96 221.824 32.256a70.4 70.4 0 0 1 39.04 120.064L774.72 629.376l37.888 220.928a70.4 70.4 0 0 1-102.144 74.24L512 820.096l-198.4 104.32z\"})]))}}),jS=iD,aD=ee({name:\"SuccessFilled\",__name:\"success-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z\"})]))}}),US=aD,lD=ee({name:\"Upload\",__name:\"upload\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-578.304V704h-64V247.296L237.248 490.048 192 444.8 508.8 128l316.8 316.8-45.312 45.248z\"})]))}}),cD=lD,uD=ee({name:\"User\",__name:\"user\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 512a192 192 0 1 0 0-384 192 192 0 0 0 0 384m0 64a256 256 0 1 1 0-512 256 256 0 0 1 0 512m320 320v-96a96 96 0 0 0-96-96H288a96 96 0 0 0-96 96v96a32 32 0 1 1-64 0v-96a160 160 0 0 1 160-160h448a160 160 0 0 1 160 160v96a32 32 0 1 1-64 0\"})]))}}),qS=uD,dD=ee({name:\"View\",__name:\"view\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 160c320 0 512 352 512 352S832 864 512 864 0 512 0 512s192-352 512-352m0 64c-225.28 0-384.128 208.064-436.8 288 52.608 79.872 211.456 288 436.8 288 225.28 0 384.128-208.064 436.8-288-52.608-79.872-211.456-288-436.8-288zm0 64a224 224 0 1 1 0 448 224 224 0 0 1 0-448m0 64a160.192 160.192 0 0 0-160 160c0 88.192 71.744 160 160 160s160-71.808 160-160-71.744-160-160-160\"})]))}}),fD=dD,hD=ee({name:\"WarningFilled\",__name:\"warning-filled\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4\"})]))}}),Ed=hD,pD=ee({name:\"ZoomIn\",__name:\"zoom-in\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704m-32-384v-96a32 32 0 0 1 64 0v96h96a32 32 0 0 1 0 64h-96v96a32 32 0 0 1-64 0v-96h-96a32 32 0 0 1 0-64z\"})]))}}),YS=pD,vD=ee({name:\"ZoomOut\",__name:\"zoom-out\",setup(e){return(t,n)=>($(),X(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",viewBox:\"0 0 1024 1024\"},[Z(\"path\",{fill:\"currentColor\",d:\"m795.904 750.72 124.992 124.928a32 32 0 0 1-45.248 45.248L750.656 795.904a416 416 0 1 1 45.248-45.248zM480 832a352 352 0 1 0 0-704 352 352 0 0 0 0 704M352 448h256a32 32 0 0 1 0 64H352a32 32 0 0 1 0-64\"})]))}}),mD=vD;const Nt=ie([String,Object,Function]),Iv={Close:Dr},Pv={Close:Dr,SuccessFilled:US,InfoFilled:Lv,WarningFilled:Ed,CircleCloseFilled:$v},uo={success:US,warning:Ed,error:$v,info:Lv},Td={validating:ts,success:Av,error:as},gD=[\"light\",\"dark\"],_D=xe({title:{type:String,default:\"\"},description:{type:String,default:\"\"},type:{type:String,values:zi(uo),default:\"info\"},closable:{type:Boolean,default:!0},closeText:{type:String,default:\"\"},showIcon:Boolean,center:Boolean,effect:{type:String,values:gD,default:\"light\"}}),bD={close:e=>e instanceof MouseEvent},yD=ee({name:\"ElAlert\"}),wD=ee({...yD,props:_D,emits:bD,setup(e,{emit:t}){const n=e,{Close:r}=Pv,s=an(),o=we(\"alert\"),a=W(!0),i=O(()=>uo[n.type]),l=O(()=>!!(n.description||s.default)),u=f=>{a.value=!1,t(\"close\",f)};return(f,d)=>($(),ve(_n,{name:c(o).b(\"fade\"),persisted:\"\"},{default:q(()=>[st(Z(\"div\",{class:D([c(o).b(),c(o).m(f.type),c(o).is(\"center\",f.center),c(o).is(f.effect)]),role:\"alert\"},[f.showIcon&&c(i)?($(),ve(c(He),{key:0,class:D([c(o).e(\"icon\"),{[c(o).is(\"big\")]:c(l)}])},{default:q(()=>[($(),ve(dt(c(i))))]),_:1},8,[\"class\"])):de(\"v-if\",!0),Z(\"div\",{class:D(c(o).e(\"content\"))},[f.title||f.$slots.title?($(),X(\"span\",{key:0,class:D([c(o).e(\"title\"),{\"with-description\":c(l)}])},[ue(f.$slots,\"title\",{},()=>[Ve(Ee(f.title),1)])],2)):de(\"v-if\",!0),c(l)?($(),X(\"p\",{key:1,class:D(c(o).e(\"description\"))},[ue(f.$slots,\"default\",{},()=>[Ve(Ee(f.description),1)])],2)):de(\"v-if\",!0),f.closable?($(),X(We,{key:2},[f.closeText?($(),X(\"div\",{key:0,class:D([c(o).e(\"close-btn\"),c(o).is(\"customed\")]),onClick:u},Ee(f.closeText),3)):($(),ve(c(He),{key:1,class:D(c(o).e(\"close-btn\")),onClick:u},{default:q(()=>[H(c(r))]),_:1},8,[\"class\"]))],64)):de(\"v-if\",!0)],2)],2),[[Et,a.value]])]),_:3},8,[\"name\"]))}});var SD=Oe(wD,[[\"__file\",\"alert.vue\"]]);const CD=Qe(SD),Rd=()=>bt&&/firefox/i.test(window.navigator.userAgent);let kr;const kD=`\n  height:0 !important;\n  visibility:hidden !important;\n  ${Rd()?\"\":\"overflow:hidden !important;\"}\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important;\n`,ED=[\"letter-spacing\",\"line-height\",\"padding-top\",\"padding-bottom\",\"font-family\",\"font-weight\",\"font-size\",\"text-rendering\",\"text-transform\",\"width\",\"text-indent\",\"padding-left\",\"padding-right\",\"border-width\",\"box-sizing\"];function TD(e){const t=window.getComputedStyle(e),n=t.getPropertyValue(\"box-sizing\"),r=Number.parseFloat(t.getPropertyValue(\"padding-bottom\"))+Number.parseFloat(t.getPropertyValue(\"padding-top\")),s=Number.parseFloat(t.getPropertyValue(\"border-bottom-width\"))+Number.parseFloat(t.getPropertyValue(\"border-top-width\"));return{contextStyle:ED.map(a=>`${a}:${t.getPropertyValue(a)}`).join(\";\"),paddingSize:r,borderSize:s,boxSizing:n}}function v_(e,t=1,n){var r;kr||(kr=document.createElement(\"textarea\"),document.body.appendChild(kr));const{paddingSize:s,borderSize:o,boxSizing:a,contextStyle:i}=TD(e);kr.setAttribute(\"style\",`${i};${kD}`),kr.value=e.value||e.placeholder||\"\";let l=kr.scrollHeight;const u={};a===\"border-box\"?l=l+o:a===\"content-box\"&&(l=l-s),kr.value=\"\";const f=kr.scrollHeight-s;if(Ge(t)){let d=f*t;a===\"border-box\"&&(d=d+s+o),l=Math.max(d,l),u.minHeight=`${d}px`}if(Ge(n)){let d=f*n;a===\"border-box\"&&(d=d+s+o),l=Math.min(d,l)}return u.height=`${l}px`,(r=kr.parentNode)==null||r.removeChild(kr),kr=void 0,u}const Yt=e=>e,RD=xe({ariaLabel:String,ariaOrientation:{type:String,values:[\"horizontal\",\"vertical\",\"undefined\"]},ariaControls:String}),kn=e=>Or(RD,e),Dv=xe({id:{type:String,default:void 0},size:on,disabled:Boolean,modelValue:{type:ie([String,Number,Object]),default:\"\"},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},type:{type:String,default:\"text\"},resize:{type:String,values:[\"none\",\"both\",\"horizontal\",\"vertical\"]},autosize:{type:ie([Boolean,Object]),default:!1},autocomplete:{type:String,default:\"off\"},formatter:{type:Function},parser:{type:Function},placeholder:{type:String},form:{type:String},readonly:Boolean,clearable:Boolean,showPassword:Boolean,showWordLimit:Boolean,suffixIcon:{type:Nt},prefixIcon:{type:Nt},containerRole:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},validateEvent:{type:Boolean,default:!0},inputStyle:{type:ie([Object,Array,String]),default:()=>Yt({})},autofocus:Boolean,rows:{type:Number,default:2},...kn([\"ariaLabel\"])}),xD={[ot]:e=>ze(e),input:e=>ze(e),change:e=>ze(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,mouseleave:e=>e instanceof MouseEvent,mouseenter:e=>e instanceof MouseEvent,keydown:e=>e instanceof Event,compositionstart:e=>e instanceof CompositionEvent,compositionupdate:e=>e instanceof CompositionEvent,compositionend:e=>e instanceof CompositionEvent},OD=[\"class\",\"style\"],MD=/^on[A-Z]/,Ul=(e={})=>{const{excludeListeners:t=!1,excludeKeys:n}=e,r=O(()=>((n==null?void 0:n.value)||[]).concat(OD)),s=ct();return O(s?()=>{var o;return pl(Object.entries((o=s.proxy)==null?void 0:o.$attrs).filter(([a])=>!r.value.includes(a)&&!(t&&MD.test(a))))}:()=>({}))},oi=Symbol(\"formContextKey\"),ns=Symbol(\"formItemContextKey\"),m_={prefix:Math.floor(Math.random()*1e4),current:0},AD=Symbol(\"elIdInjection\"),Bv=()=>ct()?Fe(AD,m_):m_,Sn=e=>{const t=Bv(),n=cv();return Th(()=>c(e)||`${n.value}-id-${t.prefix}-${t.current++}`)},xn=()=>{const e=Fe(oi,void 0),t=Fe(ns,void 0);return{form:e,formItem:t}},Cr=(e,{formItemContext:t,disableIdGeneration:n,disableIdManagement:r})=>{n||(n=W(!1)),r||(r=W(!1));const s=W();let o;const a=O(()=>{var i;return!!(!(e.label||e.ariaLabel)&&t&&t.inputIds&&((i=t.inputIds)==null?void 0:i.length)<=1)});return it(()=>{o=ye([At(e,\"id\"),n],([i,l])=>{const u=i??(l?void 0:Sn().value);u!==s.value&&(t!=null&&t.removeInputId&&(s.value&&t.removeInputId(s.value),!(r!=null&&r.value)&&!l&&u&&t.addInputId(u)),s.value=u)},{immediate:!0})}),xs(()=>{o&&o(),t!=null&&t.removeInputId&&s.value&&t.removeInputId(s.value)}),{isLabeledByFormItem:a,inputId:s}},GS=e=>{const t=ct();return O(()=>{var n,r;return(r=(n=t==null?void 0:t.proxy)==null?void 0:n.$props)==null?void 0:r[e]})},sn=(e,t={})=>{const n=W(void 0),r=t.prop?n:GS(\"size\"),s=t.global?n:IS(),o=t.form?{size:void 0}:Fe(oi,void 0),a=t.formItem?{size:void 0}:Fe(ns,void 0);return O(()=>r.value||c(e)||(a==null?void 0:a.size)||(o==null?void 0:o.size)||s.value||\"\")},On=e=>{const t=GS(\"disabled\"),n=Fe(oi,void 0);return O(()=>t.value||c(e)||(n==null?void 0:n.disabled)||!1)};function _o(e,{beforeFocus:t,afterFocus:n,beforeBlur:r,afterBlur:s}={}){const o=ct(),{emit:a}=o,i=Wt(),l=W(!1),u=h=>{Ke(t)&&t(h)||l.value||(l.value=!0,a(\"focus\",h),n==null||n())},f=h=>{var v;Ke(r)&&r(h)||h.relatedTarget&&((v=i.value)!=null&&v.contains(h.relatedTarget))||(l.value=!1,a(\"blur\",h),s==null||s())},d=()=>{var h,v;(h=i.value)!=null&&h.contains(document.activeElement)&&i.value!==document.activeElement||(v=e.value)==null||v.focus()};return ye(i,h=>{h&&h.setAttribute(\"tabindex\",\"-1\")}),It(i,\"focus\",u,!0),It(i,\"blur\",f,!0),It(i,\"click\",d,!0),{isFocused:l,wrapperRef:i,handleFocus:u,handleBlur:f}}const $D=e=>/([\\uAC00-\\uD7AF\\u3130-\\u318F])+/gi.test(e);function ql({afterComposition:e,emit:t}){const n=W(!1),r=i=>{t==null||t(\"compositionstart\",i),n.value=!0},s=i=>{var l;t==null||t(\"compositionupdate\",i);const u=(l=i.target)==null?void 0:l.value,f=u[u.length-1]||\"\";n.value=!$D(f)},o=i=>{t==null||t(\"compositionend\",i),n.value&&(n.value=!1,je(()=>e(i)))};return{isComposing:n,handleComposition:i=>{i.type===\"compositionend\"?o(i):s(i)},handleCompositionStart:r,handleCompositionUpdate:s,handleCompositionEnd:o}}function LD(e){let t;function n(){if(e.value==null)return;const{selectionStart:s,selectionEnd:o,value:a}=e.value;if(s==null||o==null)return;const i=a.slice(0,Math.max(0,s)),l=a.slice(Math.max(0,o));t={selectionStart:s,selectionEnd:o,value:a,beforeTxt:i,afterTxt:l}}function r(){if(e.value==null||t==null)return;const{value:s}=e.value,{beforeTxt:o,afterTxt:a,selectionStart:i}=t;if(o==null||a==null||i==null)return;let l=s.length;if(s.endsWith(a))l=s.length-a.length;else if(s.startsWith(o))l=o.length;else{const u=o[i-1],f=s.indexOf(u,i-1);f!==-1&&(l=f+1)}e.value.setSelectionRange(l,l)}return[n,r]}const ID=ee({name:\"ElInput\",inheritAttrs:!1}),PD=ee({...ID,props:Dv,emits:xD,setup(e,{expose:t,emit:n}){const r=e,s=mo(),o=Ul(),a=an(),i=O(()=>[r.type===\"textarea\"?p.b():b.b(),b.m(h.value),b.is(\"disabled\",v.value),b.is(\"exceed\",U.value),{[b.b(\"group\")]:a.prepend||a.append,[b.m(\"prefix\")]:a.prefix||r.prefixIcon,[b.m(\"suffix\")]:a.suffix||r.suffixIcon||r.clearable||r.showPassword,[b.bm(\"suffix\",\"password-clear\")]:F.value&&R.value,[b.b(\"hidden\")]:r.type===\"hidden\"},s.class]),l=O(()=>[b.e(\"wrapper\"),b.is(\"focus\",k.value)]),{form:u,formItem:f}=xn(),{inputId:d}=Cr(r,{formItemContext:f}),h=sn(),v=On(),b=we(\"input\"),p=we(\"textarea\"),g=Wt(),m=Wt(),y=W(!1),_=W(!1),w=W(),S=Wt(r.inputStyle),C=O(()=>g.value||m.value),{wrapperRef:E,isFocused:k,handleFocus:T,handleBlur:x}=_o(C,{beforeFocus(){return v.value},afterBlur(){var be;r.validateEvent&&((be=f==null?void 0:f.validate)==null||be.call(f,\"blur\").catch(Ae=>void 0))}}),M=O(()=>{var be;return(be=u==null?void 0:u.statusIcon)!=null?be:!1}),A=O(()=>(f==null?void 0:f.validateState)||\"\"),P=O(()=>A.value&&Td[A.value]),G=O(()=>_.value?fD:T6),V=O(()=>[s.style]),I=O(()=>[r.inputStyle,S.value,{resize:r.resize}]),j=O(()=>fn(r.modelValue)?\"\":String(r.modelValue)),F=O(()=>r.clearable&&!v.value&&!r.readonly&&!!j.value&&(k.value||y.value)),R=O(()=>r.showPassword&&!v.value&&!!j.value&&(!!j.value||k.value)),B=O(()=>r.showWordLimit&&!!r.maxlength&&(r.type===\"text\"||r.type===\"textarea\")&&!v.value&&!r.readonly&&!r.showPassword),N=O(()=>j.value.length),U=O(()=>!!B.value&&N.value>Number(r.maxlength)),J=O(()=>!!a.suffix||!!r.suffixIcon||F.value||r.showPassword||B.value||!!A.value&&M.value),[re,le]=LD(g);jt(m,be=>{if(z(),!B.value||r.resize!==\"both\")return;const Ae=be[0],{width:qe}=Ae.contentRect;w.value={right:`calc(100% - ${qe+15+6}px)`}});const pe=()=>{const{type:be,autosize:Ae}=r;if(!(!bt||be!==\"textarea\"||!m.value))if(Ae){const qe=lt(Ae)?Ae.minRows:void 0,tt=lt(Ae)?Ae.maxRows:void 0,et=v_(m.value,qe,tt);S.value={overflowY:\"hidden\",...et},je(()=>{m.value.offsetHeight,S.value=et})}else S.value={minHeight:v_(m.value).minHeight}},z=(be=>{let Ae=!1;return()=>{var qe;if(Ae||!r.autosize)return;((qe=m.value)==null?void 0:qe.offsetParent)===null||(be(),Ae=!0)}})(pe),te=()=>{const be=C.value,Ae=r.formatter?r.formatter(j.value):j.value;!be||be.value===Ae||(be.value=Ae)},oe=async be=>{re();let{value:Ae}=be.target;if(r.formatter&&(Ae=r.parser?r.parser(Ae):Ae),!Y.value){if(Ae===j.value){te();return}n(ot,Ae),n(\"input\",Ae),await je(),te(),le()}},he=be=>{n(\"change\",be.target.value)},{isComposing:Y,handleCompositionStart:L,handleCompositionUpdate:Q,handleCompositionEnd:se}=ql({emit:n,afterComposition:oe}),ge=()=>{re(),_.value=!_.value,setTimeout(le)},ae=()=>{var be;return(be=C.value)==null?void 0:be.focus()},_e=()=>{var be;return(be=C.value)==null?void 0:be.blur()},me=be=>{y.value=!1,n(\"mouseleave\",be)},Ce=be=>{y.value=!0,n(\"mouseenter\",be)},Te=be=>{n(\"keydown\",be)},Se=()=>{var be;(be=C.value)==null||be.select()},Ie=()=>{n(ot,\"\"),n(\"change\",\"\"),n(\"clear\"),n(\"input\",\"\")};return ye(()=>r.modelValue,()=>{var be;je(()=>pe()),r.validateEvent&&((be=f==null?void 0:f.validate)==null||be.call(f,\"change\").catch(Ae=>void 0))}),ye(j,()=>te()),ye(()=>r.type,async()=>{await je(),te(),pe()}),it(()=>{!r.formatter&&r.parser,te(),je(pe)}),t({input:g,textarea:m,ref:C,textareaStyle:I,autosize:At(r,\"autosize\"),isComposing:Y,focus:ae,blur:_e,select:Se,clear:Ie,resizeTextarea:pe}),(be,Ae)=>($(),X(\"div\",{class:D([c(i),{[c(b).bm(\"group\",\"append\")]:be.$slots.append,[c(b).bm(\"group\",\"prepend\")]:be.$slots.prepend}]),style:Ue(c(V)),onMouseenter:Ce,onMouseleave:me},[de(\" input \"),be.type!==\"textarea\"?($(),X(We,{key:0},[de(\" prepend slot \"),be.$slots.prepend?($(),X(\"div\",{key:0,class:D(c(b).be(\"group\",\"prepend\"))},[ue(be.$slots,\"prepend\")],2)):de(\"v-if\",!0),Z(\"div\",{ref_key:\"wrapperRef\",ref:E,class:D(c(l))},[de(\" prefix slot \"),be.$slots.prefix||be.prefixIcon?($(),X(\"span\",{key:0,class:D(c(b).e(\"prefix\"))},[Z(\"span\",{class:D(c(b).e(\"prefix-inner\"))},[ue(be.$slots,\"prefix\"),be.prefixIcon?($(),ve(c(He),{key:0,class:D(c(b).e(\"icon\"))},{default:q(()=>[($(),ve(dt(be.prefixIcon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2)],2)):de(\"v-if\",!0),Z(\"input\",ft({id:c(d),ref_key:\"input\",ref:g,class:c(b).e(\"inner\")},c(o),{minlength:be.minlength,maxlength:be.maxlength,type:be.showPassword?_.value?\"text\":\"password\":be.type,disabled:c(v),readonly:be.readonly,autocomplete:be.autocomplete,tabindex:be.tabindex,\"aria-label\":be.ariaLabel,placeholder:be.placeholder,style:be.inputStyle,form:be.form,autofocus:be.autofocus,role:be.containerRole,onCompositionstart:c(L),onCompositionupdate:c(Q),onCompositionend:c(se),onInput:oe,onChange:he,onKeydown:Te}),null,16,[\"id\",\"minlength\",\"maxlength\",\"type\",\"disabled\",\"readonly\",\"autocomplete\",\"tabindex\",\"aria-label\",\"placeholder\",\"form\",\"autofocus\",\"role\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\"]),de(\" suffix slot \"),c(J)?($(),X(\"span\",{key:1,class:D(c(b).e(\"suffix\"))},[Z(\"span\",{class:D(c(b).e(\"suffix-inner\"))},[!c(F)||!c(R)||!c(B)?($(),X(We,{key:0},[ue(be.$slots,\"suffix\"),be.suffixIcon?($(),ve(c(He),{key:0,class:D(c(b).e(\"icon\"))},{default:q(()=>[($(),ve(dt(be.suffixIcon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],64)):de(\"v-if\",!0),c(F)?($(),ve(c(He),{key:1,class:D([c(b).e(\"icon\"),c(b).e(\"clear\")]),onMousedown:Xe(c(Mt),[\"prevent\"]),onClick:Ie},{default:q(()=>[H(c(as))]),_:1},8,[\"class\",\"onMousedown\"])):de(\"v-if\",!0),c(R)?($(),ve(c(He),{key:2,class:D([c(b).e(\"icon\"),c(b).e(\"password\")]),onClick:ge},{default:q(()=>[($(),ve(dt(c(G))))]),_:1},8,[\"class\"])):de(\"v-if\",!0),c(B)?($(),X(\"span\",{key:3,class:D(c(b).e(\"count\"))},[Z(\"span\",{class:D(c(b).e(\"count-inner\"))},Ee(c(N))+\" / \"+Ee(be.maxlength),3)],2)):de(\"v-if\",!0),c(A)&&c(P)&&c(M)?($(),ve(c(He),{key:4,class:D([c(b).e(\"icon\"),c(b).e(\"validateIcon\"),c(b).is(\"loading\",c(A)===\"validating\")])},{default:q(()=>[($(),ve(dt(c(P))))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2)],2)):de(\"v-if\",!0)],2),de(\" append slot \"),be.$slots.append?($(),X(\"div\",{key:1,class:D(c(b).be(\"group\",\"append\"))},[ue(be.$slots,\"append\")],2)):de(\"v-if\",!0)],64)):($(),X(We,{key:1},[de(\" textarea \"),Z(\"textarea\",ft({id:c(d),ref_key:\"textarea\",ref:m,class:[c(p).e(\"inner\"),c(b).is(\"focus\",c(k))]},c(o),{minlength:be.minlength,maxlength:be.maxlength,tabindex:be.tabindex,disabled:c(v),readonly:be.readonly,autocomplete:be.autocomplete,style:c(I),\"aria-label\":be.ariaLabel,placeholder:be.placeholder,form:be.form,autofocus:be.autofocus,rows:be.rows,role:be.containerRole,onCompositionstart:c(L),onCompositionupdate:c(Q),onCompositionend:c(se),onInput:oe,onFocus:c(T),onBlur:c(x),onChange:he,onKeydown:Te}),null,16,[\"id\",\"minlength\",\"maxlength\",\"tabindex\",\"disabled\",\"readonly\",\"autocomplete\",\"aria-label\",\"placeholder\",\"form\",\"autofocus\",\"rows\",\"role\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\",\"onFocus\",\"onBlur\"]),c(B)?($(),X(\"span\",{key:0,style:Ue(w.value),class:D(c(b).e(\"count\"))},Ee(c(N))+\" / \"+Ee(be.maxlength),7)):de(\"v-if\",!0)],64))],38))}});var DD=Oe(PD,[[\"__file\",\"input.vue\"]]);const yn=Qe(DD),ci=4,XS={vertical:{offset:\"offsetHeight\",scroll:\"scrollTop\",scrollSize:\"scrollHeight\",size:\"height\",key:\"vertical\",axis:\"Y\",client:\"clientY\",direction:\"top\"},horizontal:{offset:\"offsetWidth\",scroll:\"scrollLeft\",scrollSize:\"scrollWidth\",size:\"width\",key:\"horizontal\",axis:\"X\",client:\"clientX\",direction:\"left\"}},BD=({move:e,size:t,bar:n})=>({[n.size]:t,transform:`translate${n.axis}(${e}%)`}),Nv=Symbol(\"scrollbarContextKey\"),ND=xe({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),FD=\"Thumb\",HD=ee({__name:\"thumb\",props:ND,setup(e){const t=e,n=Fe(Nv),r=we(\"scrollbar\");n||dn(FD,\"can not inject scrollbar context\");const s=W(),o=W(),a=W({}),i=W(!1);let l=!1,u=!1,f=bt?document.onselectstart:null;const d=O(()=>XS[t.vertical?\"vertical\":\"horizontal\"]),h=O(()=>BD({size:t.size,move:t.move,bar:d.value})),v=O(()=>s.value[d.value.offset]**2/n.wrapElement[d.value.scrollSize]/t.ratio/o.value[d.value.offset]),b=C=>{var E;if(C.stopPropagation(),C.ctrlKey||[1,2].includes(C.button))return;(E=window.getSelection())==null||E.removeAllRanges(),g(C);const k=C.currentTarget;k&&(a.value[d.value.axis]=k[d.value.offset]-(C[d.value.client]-k.getBoundingClientRect()[d.value.direction]))},p=C=>{if(!o.value||!s.value||!n.wrapElement)return;const E=Math.abs(C.target.getBoundingClientRect()[d.value.direction]-C[d.value.client]),k=o.value[d.value.offset]/2,T=(E-k)*100*v.value/s.value[d.value.offset];n.wrapElement[d.value.scroll]=T*n.wrapElement[d.value.scrollSize]/100},g=C=>{C.stopImmediatePropagation(),l=!0,document.addEventListener(\"mousemove\",m),document.addEventListener(\"mouseup\",y),f=document.onselectstart,document.onselectstart=()=>!1},m=C=>{if(!s.value||!o.value||l===!1)return;const E=a.value[d.value.axis];if(!E)return;const k=(s.value.getBoundingClientRect()[d.value.direction]-C[d.value.client])*-1,T=o.value[d.value.offset]-E,x=(k-T)*100*v.value/s.value[d.value.offset];n.wrapElement[d.value.scroll]=x*n.wrapElement[d.value.scrollSize]/100},y=()=>{l=!1,a.value[d.value.axis]=0,document.removeEventListener(\"mousemove\",m),document.removeEventListener(\"mouseup\",y),S(),u&&(i.value=!1)},_=()=>{u=!1,i.value=!!t.size},w=()=>{u=!0,i.value=l};Pt(()=>{S(),document.removeEventListener(\"mouseup\",y)});const S=()=>{document.onselectstart!==f&&(document.onselectstart=f)};return It(At(n,\"scrollbarElement\"),\"mousemove\",_),It(At(n,\"scrollbarElement\"),\"mouseleave\",w),(C,E)=>($(),ve(_n,{name:c(r).b(\"fade\"),persisted:\"\"},{default:q(()=>[st(Z(\"div\",{ref_key:\"instance\",ref:s,class:D([c(r).e(\"bar\"),c(r).is(c(d).key)]),onMousedown:p},[Z(\"div\",{ref_key:\"thumb\",ref:o,class:D(c(r).e(\"thumb\")),style:Ue(c(h)),onMousedown:b},null,38)],34),[[Et,C.always||i.value]])]),_:1},8,[\"name\"]))}});var g_=Oe(HD,[[\"__file\",\"thumb.vue\"]]);const VD=xe({always:{type:Boolean,default:!0},minSize:{type:Number,required:!0}}),zD=ee({__name:\"bar\",props:VD,setup(e,{expose:t}){const n=e,r=Fe(Nv),s=W(0),o=W(0),a=W(\"\"),i=W(\"\"),l=W(1),u=W(1);return t({handleScroll:h=>{if(h){const v=h.offsetHeight-ci,b=h.offsetWidth-ci;o.value=h.scrollTop*100/v*l.value,s.value=h.scrollLeft*100/b*u.value}},update:()=>{const h=r==null?void 0:r.wrapElement;if(!h)return;const v=h.offsetHeight-ci,b=h.offsetWidth-ci,p=v**2/h.scrollHeight,g=b**2/h.scrollWidth,m=Math.max(p,n.minSize),y=Math.max(g,n.minSize);l.value=p/(v-p)/(m/(v-m)),u.value=g/(b-g)/(y/(b-y)),i.value=m+ci<v?`${m}px`:\"\",a.value=y+ci<b?`${y}px`:\"\"}}),(h,v)=>($(),X(We,null,[H(g_,{move:s.value,ratio:u.value,size:a.value,always:h.always},null,8,[\"move\",\"ratio\",\"size\",\"always\"]),H(g_,{move:o.value,ratio:l.value,size:i.value,vertical:\"\",always:h.always},null,8,[\"move\",\"ratio\",\"size\",\"always\"])],64))}});var WD=Oe(zD,[[\"__file\",\"bar.vue\"]]);const KD=xe({height:{type:[String,Number],default:\"\"},maxHeight:{type:[String,Number],default:\"\"},native:{type:Boolean,default:!1},wrapStyle:{type:ie([String,Object,Array]),default:\"\"},wrapClass:{type:[String,Array],default:\"\"},viewClass:{type:[String,Array],default:\"\"},viewStyle:{type:[String,Array,Object],default:\"\"},noresize:Boolean,tag:{type:String,default:\"div\"},always:Boolean,minSize:{type:Number,default:20},tabindex:{type:[String,Number],default:void 0},id:String,role:String,...kn([\"ariaLabel\",\"ariaOrientation\"])}),jD={scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Ge)},UD=\"ElScrollbar\",qD=ee({name:UD}),YD=ee({...qD,props:KD,emits:jD,setup(e,{expose:t,emit:n}){const r=e,s=we(\"scrollbar\");let o,a,i=0,l=0;const u=W(),f=W(),d=W(),h=W(),v=O(()=>{const S={};return r.height&&(S.height=en(r.height)),r.maxHeight&&(S.maxHeight=en(r.maxHeight)),[r.wrapStyle,S]}),b=O(()=>[r.wrapClass,s.e(\"wrap\"),{[s.em(\"wrap\",\"hidden-default\")]:!r.native}]),p=O(()=>[s.e(\"view\"),r.viewClass]),g=()=>{var S;f.value&&((S=h.value)==null||S.handleScroll(f.value),i=f.value.scrollTop,l=f.value.scrollLeft,n(\"scroll\",{scrollTop:f.value.scrollTop,scrollLeft:f.value.scrollLeft}))};function m(S,C){lt(S)?f.value.scrollTo(S):Ge(S)&&Ge(C)&&f.value.scrollTo(S,C)}const y=S=>{Ge(S)&&(f.value.scrollTop=S)},_=S=>{Ge(S)&&(f.value.scrollLeft=S)},w=()=>{var S;(S=h.value)==null||S.update()};return ye(()=>r.noresize,S=>{S?(o==null||o(),a==null||a()):({stop:o}=jt(d,w),a=It(\"resize\",w))},{immediate:!0}),ye(()=>[r.maxHeight,r.height],()=>{r.native||je(()=>{var S;w(),f.value&&((S=h.value)==null||S.handleScroll(f.value))})}),pt(Nv,St({scrollbarElement:u,wrapElement:f})),Gp(()=>{f.value&&(f.value.scrollTop=i,f.value.scrollLeft=l)}),it(()=>{r.native||je(()=>{w()})}),os(()=>w()),t({wrapRef:f,update:w,scrollTo:m,setScrollTop:y,setScrollLeft:_,handleScroll:g}),(S,C)=>($(),X(\"div\",{ref_key:\"scrollbarRef\",ref:u,class:D(c(s).b())},[Z(\"div\",{ref_key:\"wrapRef\",ref:f,class:D(c(b)),style:Ue(c(v)),tabindex:S.tabindex,onScroll:g},[($(),ve(dt(S.tag),{id:S.id,ref_key:\"resizeRef\",ref:d,class:D(c(p)),style:Ue(S.viewStyle),role:S.role,\"aria-label\":S.ariaLabel,\"aria-orientation\":S.ariaOrientation},{default:q(()=>[ue(S.$slots,\"default\")]),_:3},8,[\"id\",\"class\",\"style\",\"role\",\"aria-label\",\"aria-orientation\"]))],46,[\"tabindex\"]),S.native?de(\"v-if\",!0):($(),ve(WD,{key:0,ref_key:\"barRef\",ref:h,always:S.always,\"min-size\":S.minSize},null,8,[\"always\",\"min-size\"]))],2))}});var GD=Oe(YD,[[\"__file\",\"scrollbar.vue\"]]);const ls=Qe(GD),Fv=Symbol(\"popper\"),JS=Symbol(\"popperContent\"),XD=[\"dialog\",\"grid\",\"group\",\"listbox\",\"menu\",\"navigation\",\"tooltip\",\"tree\"],ZS=xe({role:{type:String,values:XD,default:\"tooltip\"}}),JD=ee({name:\"ElPopper\",inheritAttrs:!1}),ZD=ee({...JD,props:ZS,setup(e,{expose:t}){const n=e,r=W(),s=W(),o=W(),a=W(),i=O(()=>n.role),l={triggerRef:r,popperInstanceRef:s,contentRef:o,referenceRef:a,role:i};return t(l),pt(Fv,l),(u,f)=>ue(u.$slots,\"default\")}});var QD=Oe(ZD,[[\"__file\",\"popper.vue\"]]);const QS=xe({arrowOffset:{type:Number,default:5}}),e8=ee({name:\"ElPopperArrow\",inheritAttrs:!1}),t8=ee({...e8,props:QS,setup(e,{expose:t}){const n=e,r=we(\"popper\"),{arrowOffset:s,arrowRef:o,arrowStyle:a}=Fe(JS,void 0);return ye(()=>n.arrowOffset,i=>{s.value=i}),Pt(()=>{o.value=void 0}),t({arrowRef:o}),(i,l)=>($(),X(\"span\",{ref_key:\"arrowRef\",ref:o,class:D(c(r).e(\"arrow\")),style:Ue(c(a)),\"data-popper-arrow\":\"\"},null,6))}});var n8=Oe(t8,[[\"__file\",\"arrow.vue\"]]);const eC=xe({virtualRef:{type:ie(Object)},virtualTriggering:Boolean,onMouseenter:{type:ie(Function)},onMouseleave:{type:ie(Function)},onClick:{type:ie(Function)},onKeydown:{type:ie(Function)},onFocus:{type:ie(Function)},onBlur:{type:ie(Function)},onContextmenu:{type:ie(Function)},id:String,open:Boolean}),tC=Symbol(\"elForwardRef\"),r8=e=>{pt(tC,{setForwardRef:n=>{e.value=n}})},s8=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),o8='a[href],button:not([disabled]),button:not([hidden]),:not([tabindex=\"-1\"]),input:not([disabled]),input:not([type=\"hidden\"]),select:not([disabled]),textarea:not([disabled])',i8=e=>getComputedStyle(e).position===\"fixed\"?!1:e.offsetParent!==null,__=e=>Array.from(e.querySelectorAll(o8)).filter(t=>Oh(t)&&i8(t)),Oh=e=>{if(e.tabIndex>0||e.tabIndex===0&&e.getAttribute(\"tabIndex\")!==null)return!0;if(e.tabIndex<0||e.hasAttribute(\"disabled\")||e.getAttribute(\"aria-disabled\")===\"true\")return!1;switch(e.nodeName){case\"A\":return!!e.href&&e.rel!==\"ignore\";case\"INPUT\":return!(e.type===\"hidden\"||e.type===\"file\");case\"BUTTON\":case\"SELECT\":case\"TEXTAREA\":return!0;default:return!1}},Hc=function(e,t,...n){let r;t.includes(\"mouse\")||t.includes(\"click\")?r=\"MouseEvents\":t.includes(\"key\")?r=\"KeyboardEvent\":r=\"HTMLEvents\";const s=document.createEvent(r);return s.initEvent(t,...n),e.dispatchEvent(s),e},nC=e=>!e.getAttribute(\"aria-owns\"),rC=(e,t,n)=>{const{parentNode:r}=e;if(!r)return null;const s=r.querySelectorAll(n),o=Array.prototype.indexOf.call(s,e);return s[o+t]||null},Vc=e=>{e&&(e.focus(),!nC(e)&&e.click())},a8=\"ElOnlyChild\",sC=ee({name:a8,setup(e,{slots:t,attrs:n}){var r;const s=Fe(tC),o=s8((r=s==null?void 0:s.setForwardRef)!=null?r:Mt);return()=>{var a;const i=(a=t.default)==null?void 0:a.call(t,n);if(!i||i.length>1)return null;const l=oC(i);return l?st(Ss(l,n),[[o]]):null}}});function oC(e){if(!e)return null;const t=e;for(const n of t){if(lt(n))switch(n.type){case vn:continue;case sa:case\"svg\":return b_(n);case We:return oC(n.children);default:return n}return b_(n)}return null}function b_(e){const t=we(\"only-child\");return H(\"span\",{class:t.e(\"content\")},[e])}const l8=ee({name:\"ElPopperTrigger\",inheritAttrs:!1}),c8=ee({...l8,props:eC,setup(e,{expose:t}){const n=e,{role:r,triggerRef:s}=Fe(Fv,void 0);r8(s);const o=O(()=>i.value?n.id:void 0),a=O(()=>{if(r&&r.value===\"tooltip\")return n.open&&n.id?n.id:void 0}),i=O(()=>{if(r&&r.value!==\"tooltip\")return r.value}),l=O(()=>i.value?`${n.open}`:void 0);let u;const f=[\"onMouseenter\",\"onMouseleave\",\"onClick\",\"onKeydown\",\"onFocus\",\"onBlur\",\"onContextmenu\"];return it(()=>{ye(()=>n.virtualRef,d=>{d&&(s.value=Un(d))},{immediate:!0}),ye(s,(d,h)=>{u==null||u(),u=void 0,lr(d)&&(f.forEach(v=>{var b;const p=n[v];p&&(d.addEventListener(v.slice(2).toLowerCase(),p),(b=h==null?void 0:h.removeEventListener)==null||b.call(h,v.slice(2).toLowerCase(),p))}),Oh(d)&&(u=ye([o,a,i,l],v=>{[\"aria-controls\",\"aria-describedby\",\"aria-haspopup\",\"aria-expanded\"].forEach((b,p)=>{fn(v[p])?d.removeAttribute(b):d.setAttribute(b,v[p])})},{immediate:!0}))),lr(h)&&Oh(h)&&[\"aria-controls\",\"aria-describedby\",\"aria-haspopup\",\"aria-expanded\"].forEach(v=>h.removeAttribute(v))},{immediate:!0})}),Pt(()=>{if(u==null||u(),u=void 0,s.value&&lr(s.value)){const d=s.value;f.forEach(h=>{const v=n[h];v&&d.removeEventListener(h.slice(2).toLowerCase(),v)}),s.value=void 0}}),t({triggerRef:s}),(d,h)=>d.virtualTriggering?de(\"v-if\",!0):($(),ve(c(sC),ft({key:0},d.$attrs,{\"aria-controls\":c(o),\"aria-describedby\":c(a),\"aria-expanded\":c(l),\"aria-haspopup\":c(i)}),{default:q(()=>[ue(d.$slots,\"default\")]),_:3},16,[\"aria-controls\",\"aria-describedby\",\"aria-expanded\",\"aria-haspopup\"]))}});var u8=Oe(c8,[[\"__file\",\"trigger.vue\"]]);const wf=\"focus-trap.focus-after-trapped\",Sf=\"focus-trap.focus-after-released\",d8=\"focus-trap.focusout-prevented\",y_={cancelable:!0,bubbles:!1},f8={cancelable:!0,bubbles:!1},w_=\"focusAfterTrapped\",S_=\"focusAfterReleased\",Hv=Symbol(\"elFocusTrap\"),Vv=W(),xd=W(0),zv=W(0);let vc=0;const iC=e=>{const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const s=r.tagName===\"INPUT\"&&r.type===\"hidden\";return r.disabled||r.hidden||s?NodeFilter.FILTER_SKIP:r.tabIndex>=0||r===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t},C_=(e,t)=>{for(const n of e)if(!h8(n,t))return n},h8=(e,t)=>{if(getComputedStyle(e).visibility===\"hidden\")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display===\"none\")return!0;e=e.parentElement}return!1},p8=e=>{const t=iC(e),n=C_(t,e),r=C_(t.reverse(),e);return[n,r]},v8=e=>e instanceof HTMLInputElement&&\"select\"in e,Vs=(e,t)=>{if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),zv.value=window.performance.now(),e!==n&&v8(e)&&t&&e.select()}};function k_(e,t){const n=[...e],r=e.indexOf(t);return r!==-1&&n.splice(r,1),n}const m8=()=>{let e=[];return{push:r=>{const s=e[0];s&&r!==s&&s.pause(),e=k_(e,r),e.unshift(r)},remove:r=>{var s,o;e=k_(e,r),(o=(s=e[0])==null?void 0:s.resume)==null||o.call(s)}}},g8=(e,t=!1)=>{const n=document.activeElement;for(const r of e)if(Vs(r,t),document.activeElement!==n)return},E_=m8(),_8=()=>xd.value>zv.value,mc=()=>{Vv.value=\"pointer\",xd.value=window.performance.now()},T_=()=>{Vv.value=\"keyboard\",xd.value=window.performance.now()},b8=()=>(it(()=>{vc===0&&(document.addEventListener(\"mousedown\",mc),document.addEventListener(\"touchstart\",mc),document.addEventListener(\"keydown\",T_)),vc++}),Pt(()=>{vc--,vc<=0&&(document.removeEventListener(\"mousedown\",mc),document.removeEventListener(\"touchstart\",mc),document.removeEventListener(\"keydown\",T_))}),{focusReason:Vv,lastUserFocusTimestamp:xd,lastAutomatedFocusTimestamp:zv}),gc=e=>new CustomEvent(d8,{...f8,detail:e}),Ne={tab:\"Tab\",enter:\"Enter\",space:\"Space\",left:\"ArrowLeft\",up:\"ArrowUp\",right:\"ArrowRight\",down:\"ArrowDown\",esc:\"Escape\",delete:\"Delete\",backspace:\"Backspace\",numpadEnter:\"NumpadEnter\",pageUp:\"PageUp\",pageDown:\"PageDown\",home:\"Home\",end:\"End\"};let gi=[];const R_=e=>{e.code===Ne.esc&&gi.forEach(t=>t(e))},y8=e=>{it(()=>{gi.length===0&&document.addEventListener(\"keydown\",R_),bt&&gi.push(e)}),Pt(()=>{gi=gi.filter(t=>t!==e),gi.length===0&&bt&&document.removeEventListener(\"keydown\",R_)})},w8=ee({name:\"ElFocusTrap\",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:\"first\"}},emits:[w_,S_,\"focusin\",\"focusout\",\"focusout-prevented\",\"release-requested\"],setup(e,{emit:t}){const n=W();let r,s;const{focusReason:o}=b8();y8(b=>{e.trapped&&!a.paused&&t(\"release-requested\",b)});const a={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},i=b=>{if(!e.loop&&!e.trapped||a.paused)return;const{code:p,altKey:g,ctrlKey:m,metaKey:y,currentTarget:_,shiftKey:w}=b,{loop:S}=e,C=p===Ne.tab&&!g&&!m&&!y,E=document.activeElement;if(C&&E){const k=_,[T,x]=p8(k);if(T&&x){if(!w&&E===x){const A=gc({focusReason:o.value});t(\"focusout-prevented\",A),A.defaultPrevented||(b.preventDefault(),S&&Vs(T,!0))}else if(w&&[T,k].includes(E)){const A=gc({focusReason:o.value});t(\"focusout-prevented\",A),A.defaultPrevented||(b.preventDefault(),S&&Vs(x,!0))}}else if(E===k){const A=gc({focusReason:o.value});t(\"focusout-prevented\",A),A.defaultPrevented||b.preventDefault()}}};pt(Hv,{focusTrapRef:n,onKeydown:i}),ye(()=>e.focusTrapEl,b=>{b&&(n.value=b)},{immediate:!0}),ye([n],([b],[p])=>{b&&(b.addEventListener(\"keydown\",i),b.addEventListener(\"focusin\",f),b.addEventListener(\"focusout\",d)),p&&(p.removeEventListener(\"keydown\",i),p.removeEventListener(\"focusin\",f),p.removeEventListener(\"focusout\",d))});const l=b=>{t(w_,b)},u=b=>t(S_,b),f=b=>{const p=c(n);if(!p)return;const g=b.target,m=b.relatedTarget,y=g&&p.contains(g);e.trapped||m&&p.contains(m)||(r=m),y&&t(\"focusin\",b),!a.paused&&e.trapped&&(y?s=g:Vs(s,!0))},d=b=>{const p=c(n);if(!(a.paused||!p))if(e.trapped){const g=b.relatedTarget;!fn(g)&&!p.contains(g)&&setTimeout(()=>{if(!a.paused&&e.trapped){const m=gc({focusReason:o.value});t(\"focusout-prevented\",m),m.defaultPrevented||Vs(s,!0)}},0)}else{const g=b.target;g&&p.contains(g)||t(\"focusout\",b)}};async function h(){await je();const b=c(n);if(b){E_.push(a);const p=b.contains(document.activeElement)?r:document.activeElement;if(r=p,!b.contains(p)){const m=new Event(wf,y_);b.addEventListener(wf,l),b.dispatchEvent(m),m.defaultPrevented||je(()=>{let y=e.focusStartEl;ze(y)||(Vs(y),document.activeElement!==y&&(y=\"first\")),y===\"first\"&&g8(iC(b),!0),(document.activeElement===p||y===\"container\")&&Vs(b)})}}}function v(){const b=c(n);if(b){b.removeEventListener(wf,l);const p=new CustomEvent(Sf,{...y_,detail:{focusReason:o.value}});b.addEventListener(Sf,u),b.dispatchEvent(p),!p.defaultPrevented&&(o.value==\"keyboard\"||!_8()||b.contains(document.activeElement))&&Vs(r??document.body),b.removeEventListener(Sf,u),E_.remove(a)}}return it(()=>{e.trapped&&h(),ye(()=>e.trapped,b=>{b?h():v()})}),Pt(()=>{e.trapped&&v(),n.value&&(n.value.removeEventListener(\"keydown\",i),n.value.removeEventListener(\"focusin\",f),n.value.removeEventListener(\"focusout\",d),n.value=void 0)}),{onKeydown:i}}});function S8(e,t,n,r,s,o){return ue(e.$slots,\"default\",{handleKeydown:e.onKeydown})}var ha=Oe(w8,[[\"render\",S8],[\"__file\",\"focus-trap.vue\"]]),er=\"top\",yr=\"bottom\",wr=\"right\",tr=\"left\",Wv=\"auto\",Yl=[er,yr,wr,tr],Wi=\"start\",vl=\"end\",C8=\"clippingParents\",aC=\"viewport\",Ra=\"popper\",k8=\"reference\",x_=Yl.reduce(function(e,t){return e.concat([t+\"-\"+Wi,t+\"-\"+vl])},[]),$s=[].concat(Yl,[Wv]).reduce(function(e,t){return e.concat([t,t+\"-\"+Wi,t+\"-\"+vl])},[]),E8=\"beforeRead\",T8=\"read\",R8=\"afterRead\",x8=\"beforeMain\",O8=\"main\",M8=\"afterMain\",A8=\"beforeWrite\",$8=\"write\",L8=\"afterWrite\",I8=[E8,T8,R8,x8,O8,M8,A8,$8,L8];function rs(e){return e?(e.nodeName||\"\").toLowerCase():null}function zr(e){if(e==null)return window;if(e.toString()!==\"[object Window]\"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ki(e){var t=zr(e).Element;return e instanceof t||e instanceof Element}function gr(e){var t=zr(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Kv(e){if(typeof ShadowRoot>\"u\")return!1;var t=zr(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function P8(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},s=t.attributes[n]||{},o=t.elements[n];!gr(o)||!rs(o)||(Object.assign(o.style,r),Object.keys(s).forEach(function(a){var i=s[a];i===!1?o.removeAttribute(a):o.setAttribute(a,i===!0?\"\":i)}))})}function D8(e){var t=e.state,n={popper:{position:t.options.strategy,left:\"0\",top:\"0\",margin:\"0\"},arrow:{position:\"absolute\"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var s=t.elements[r],o=t.attributes[r]||{},a=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),i=a.reduce(function(l,u){return l[u]=\"\",l},{});!gr(s)||!rs(s)||(Object.assign(s.style,i),Object.keys(o).forEach(function(l){s.removeAttribute(l)}))})}}var lC={name:\"applyStyles\",enabled:!0,phase:\"write\",fn:P8,effect:D8,requires:[\"computeStyles\"]};function Zr(e){return e.split(\"-\")[0]}var Wo=Math.max,Ou=Math.min,ji=Math.round;function Ui(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,s=1;if(gr(e)&&t){var o=e.offsetHeight,a=e.offsetWidth;a>0&&(r=ji(n.width)/a||1),o>0&&(s=ji(n.height)/o||1)}return{width:n.width/r,height:n.height/s,top:n.top/s,right:n.right/r,bottom:n.bottom/s,left:n.left/r,x:n.left/r,y:n.top/s}}function jv(e){var t=Ui(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function cC(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&Kv(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Cs(e){return zr(e).getComputedStyle(e)}function B8(e){return[\"table\",\"td\",\"th\"].indexOf(rs(e))>=0}function bo(e){return((Ki(e)?e.ownerDocument:e.document)||window.document).documentElement}function Od(e){return rs(e)===\"html\"?e:e.assignedSlot||e.parentNode||(Kv(e)?e.host:null)||bo(e)}function O_(e){return!gr(e)||Cs(e).position===\"fixed\"?null:e.offsetParent}function N8(e){var t=navigator.userAgent.toLowerCase().indexOf(\"firefox\")!==-1,n=navigator.userAgent.indexOf(\"Trident\")!==-1;if(n&&gr(e)){var r=Cs(e);if(r.position===\"fixed\")return null}var s=Od(e);for(Kv(s)&&(s=s.host);gr(s)&&[\"html\",\"body\"].indexOf(rs(s))<0;){var o=Cs(s);if(o.transform!==\"none\"||o.perspective!==\"none\"||o.contain===\"paint\"||[\"transform\",\"perspective\"].indexOf(o.willChange)!==-1||t&&o.willChange===\"filter\"||t&&o.filter&&o.filter!==\"none\")return s;s=s.parentNode}return null}function Gl(e){for(var t=zr(e),n=O_(e);n&&B8(n)&&Cs(n).position===\"static\";)n=O_(n);return n&&(rs(n)===\"html\"||rs(n)===\"body\"&&Cs(n).position===\"static\")?t:n||N8(e)||t}function Uv(e){return[\"top\",\"bottom\"].indexOf(e)>=0?\"x\":\"y\"}function Ya(e,t,n){return Wo(e,Ou(t,n))}function F8(e,t,n){var r=Ya(e,t,n);return r>n?n:r}function uC(){return{top:0,right:0,bottom:0,left:0}}function dC(e){return Object.assign({},uC(),e)}function fC(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var H8=function(e,t){return e=typeof e==\"function\"?e(Object.assign({},t.rects,{placement:t.placement})):e,dC(typeof e!=\"number\"?e:fC(e,Yl))};function V8(e){var t,n=e.state,r=e.name,s=e.options,o=n.elements.arrow,a=n.modifiersData.popperOffsets,i=Zr(n.placement),l=Uv(i),u=[tr,wr].indexOf(i)>=0,f=u?\"height\":\"width\";if(!(!o||!a)){var d=H8(s.padding,n),h=jv(o),v=l===\"y\"?er:tr,b=l===\"y\"?yr:wr,p=n.rects.reference[f]+n.rects.reference[l]-a[l]-n.rects.popper[f],g=a[l]-n.rects.reference[l],m=Gl(o),y=m?l===\"y\"?m.clientHeight||0:m.clientWidth||0:0,_=p/2-g/2,w=d[v],S=y-h[f]-d[b],C=y/2-h[f]/2+_,E=Ya(w,C,S),k=l;n.modifiersData[r]=(t={},t[k]=E,t.centerOffset=E-C,t)}}function z8(e){var t=e.state,n=e.options,r=n.element,s=r===void 0?\"[data-popper-arrow]\":r;s!=null&&(typeof s==\"string\"&&(s=t.elements.popper.querySelector(s),!s)||!cC(t.elements.popper,s)||(t.elements.arrow=s))}var W8={name:\"arrow\",enabled:!0,phase:\"main\",fn:V8,effect:z8,requires:[\"popperOffsets\"],requiresIfExists:[\"preventOverflow\"]};function qi(e){return e.split(\"-\")[1]}var K8={top:\"auto\",right:\"auto\",bottom:\"auto\",left:\"auto\"};function j8(e){var t=e.x,n=e.y,r=window,s=r.devicePixelRatio||1;return{x:ji(t*s)/s||0,y:ji(n*s)/s||0}}function M_(e){var t,n=e.popper,r=e.popperRect,s=e.placement,o=e.variation,a=e.offsets,i=e.position,l=e.gpuAcceleration,u=e.adaptive,f=e.roundOffsets,d=e.isFixed,h=a.x,v=h===void 0?0:h,b=a.y,p=b===void 0?0:b,g=typeof f==\"function\"?f({x:v,y:p}):{x:v,y:p};v=g.x,p=g.y;var m=a.hasOwnProperty(\"x\"),y=a.hasOwnProperty(\"y\"),_=tr,w=er,S=window;if(u){var C=Gl(n),E=\"clientHeight\",k=\"clientWidth\";if(C===zr(n)&&(C=bo(n),Cs(C).position!==\"static\"&&i===\"absolute\"&&(E=\"scrollHeight\",k=\"scrollWidth\")),C=C,s===er||(s===tr||s===wr)&&o===vl){w=yr;var T=d&&C===S&&S.visualViewport?S.visualViewport.height:C[E];p-=T-r.height,p*=l?1:-1}if(s===tr||(s===er||s===yr)&&o===vl){_=wr;var x=d&&C===S&&S.visualViewport?S.visualViewport.width:C[k];v-=x-r.width,v*=l?1:-1}}var M=Object.assign({position:i},u&&K8),A=f===!0?j8({x:v,y:p}):{x:v,y:p};if(v=A.x,p=A.y,l){var P;return Object.assign({},M,(P={},P[w]=y?\"0\":\"\",P[_]=m?\"0\":\"\",P.transform=(S.devicePixelRatio||1)<=1?\"translate(\"+v+\"px, \"+p+\"px)\":\"translate3d(\"+v+\"px, \"+p+\"px, 0)\",P))}return Object.assign({},M,(t={},t[w]=y?p+\"px\":\"\",t[_]=m?v+\"px\":\"\",t.transform=\"\",t))}function U8(e){var t=e.state,n=e.options,r=n.gpuAcceleration,s=r===void 0?!0:r,o=n.adaptive,a=o===void 0?!0:o,i=n.roundOffsets,l=i===void 0?!0:i,u={placement:Zr(t.placement),variation:qi(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:s,isFixed:t.options.strategy===\"fixed\"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,M_(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:a,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,M_(Object.assign({},u,{offsets:t.modifiersData.arrow,position:\"absolute\",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-placement\":t.placement})}var hC={name:\"computeStyles\",enabled:!0,phase:\"beforeWrite\",fn:U8,data:{}},_c={passive:!0};function q8(e){var t=e.state,n=e.instance,r=e.options,s=r.scroll,o=s===void 0?!0:s,a=r.resize,i=a===void 0?!0:a,l=zr(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&u.forEach(function(f){f.addEventListener(\"scroll\",n.update,_c)}),i&&l.addEventListener(\"resize\",n.update,_c),function(){o&&u.forEach(function(f){f.removeEventListener(\"scroll\",n.update,_c)}),i&&l.removeEventListener(\"resize\",n.update,_c)}}var pC={name:\"eventListeners\",enabled:!0,phase:\"write\",fn:function(){},effect:q8,data:{}},Y8={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function zc(e){return e.replace(/left|right|bottom|top/g,function(t){return Y8[t]})}var G8={start:\"end\",end:\"start\"};function A_(e){return e.replace(/start|end/g,function(t){return G8[t]})}function qv(e){var t=zr(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Yv(e){return Ui(bo(e)).left+qv(e).scrollLeft}function X8(e){var t=zr(e),n=bo(e),r=t.visualViewport,s=n.clientWidth,o=n.clientHeight,a=0,i=0;return r&&(s=r.width,o=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(a=r.offsetLeft,i=r.offsetTop)),{width:s,height:o,x:a+Yv(e),y:i}}function J8(e){var t,n=bo(e),r=qv(e),s=(t=e.ownerDocument)==null?void 0:t.body,o=Wo(n.scrollWidth,n.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),a=Wo(n.scrollHeight,n.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),i=-r.scrollLeft+Yv(e),l=-r.scrollTop;return Cs(s||n).direction===\"rtl\"&&(i+=Wo(n.clientWidth,s?s.clientWidth:0)-o),{width:o,height:a,x:i,y:l}}function Gv(e){var t=Cs(e),n=t.overflow,r=t.overflowX,s=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+s+r)}function vC(e){return[\"html\",\"body\",\"#document\"].indexOf(rs(e))>=0?e.ownerDocument.body:gr(e)&&Gv(e)?e:vC(Od(e))}function Ga(e,t){var n;t===void 0&&(t=[]);var r=vC(e),s=r===((n=e.ownerDocument)==null?void 0:n.body),o=zr(r),a=s?[o].concat(o.visualViewport||[],Gv(r)?r:[]):r,i=t.concat(a);return s?i:i.concat(Ga(Od(a)))}function Mh(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function Z8(e){var t=Ui(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function $_(e,t){return t===aC?Mh(X8(e)):Ki(t)?Z8(t):Mh(J8(bo(e)))}function Q8(e){var t=Ga(Od(e)),n=[\"absolute\",\"fixed\"].indexOf(Cs(e).position)>=0,r=n&&gr(e)?Gl(e):e;return Ki(r)?t.filter(function(s){return Ki(s)&&cC(s,r)&&rs(s)!==\"body\"}):[]}function eB(e,t,n){var r=t===\"clippingParents\"?Q8(e):[].concat(t),s=[].concat(r,[n]),o=s[0],a=s.reduce(function(i,l){var u=$_(e,l);return i.top=Wo(u.top,i.top),i.right=Ou(u.right,i.right),i.bottom=Ou(u.bottom,i.bottom),i.left=Wo(u.left,i.left),i},$_(e,o));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function mC(e){var t=e.reference,n=e.element,r=e.placement,s=r?Zr(r):null,o=r?qi(r):null,a=t.x+t.width/2-n.width/2,i=t.y+t.height/2-n.height/2,l;switch(s){case er:l={x:a,y:t.y-n.height};break;case yr:l={x:a,y:t.y+t.height};break;case wr:l={x:t.x+t.width,y:i};break;case tr:l={x:t.x-n.width,y:i};break;default:l={x:t.x,y:t.y}}var u=s?Uv(s):null;if(u!=null){var f=u===\"y\"?\"height\":\"width\";switch(o){case Wi:l[u]=l[u]-(t[f]/2-n[f]/2);break;case vl:l[u]=l[u]+(t[f]/2-n[f]/2);break}}return l}function ml(e,t){t===void 0&&(t={});var n=t,r=n.placement,s=r===void 0?e.placement:r,o=n.boundary,a=o===void 0?C8:o,i=n.rootBoundary,l=i===void 0?aC:i,u=n.elementContext,f=u===void 0?Ra:u,d=n.altBoundary,h=d===void 0?!1:d,v=n.padding,b=v===void 0?0:v,p=dC(typeof b!=\"number\"?b:fC(b,Yl)),g=f===Ra?k8:Ra,m=e.rects.popper,y=e.elements[h?g:f],_=eB(Ki(y)?y:y.contextElement||bo(e.elements.popper),a,l),w=Ui(e.elements.reference),S=mC({reference:w,element:m,strategy:\"absolute\",placement:s}),C=Mh(Object.assign({},m,S)),E=f===Ra?C:w,k={top:_.top-E.top+p.top,bottom:E.bottom-_.bottom+p.bottom,left:_.left-E.left+p.left,right:E.right-_.right+p.right},T=e.modifiersData.offset;if(f===Ra&&T){var x=T[s];Object.keys(k).forEach(function(M){var A=[wr,yr].indexOf(M)>=0?1:-1,P=[er,yr].indexOf(M)>=0?\"y\":\"x\";k[M]+=x[P]*A})}return k}function tB(e,t){t===void 0&&(t={});var n=t,r=n.placement,s=n.boundary,o=n.rootBoundary,a=n.padding,i=n.flipVariations,l=n.allowedAutoPlacements,u=l===void 0?$s:l,f=qi(r),d=f?i?x_:x_.filter(function(b){return qi(b)===f}):Yl,h=d.filter(function(b){return u.indexOf(b)>=0});h.length===0&&(h=d);var v=h.reduce(function(b,p){return b[p]=ml(e,{placement:p,boundary:s,rootBoundary:o,padding:a})[Zr(p)],b},{});return Object.keys(v).sort(function(b,p){return v[b]-v[p]})}function nB(e){if(Zr(e)===Wv)return[];var t=zc(e);return[A_(e),t,A_(t)]}function rB(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var s=n.mainAxis,o=s===void 0?!0:s,a=n.altAxis,i=a===void 0?!0:a,l=n.fallbackPlacements,u=n.padding,f=n.boundary,d=n.rootBoundary,h=n.altBoundary,v=n.flipVariations,b=v===void 0?!0:v,p=n.allowedAutoPlacements,g=t.options.placement,m=Zr(g),y=m===g,_=l||(y||!b?[zc(g)]:nB(g)),w=[g].concat(_).reduce(function(re,le){return re.concat(Zr(le)===Wv?tB(t,{placement:le,boundary:f,rootBoundary:d,padding:u,flipVariations:b,allowedAutoPlacements:p}):le)},[]),S=t.rects.reference,C=t.rects.popper,E=new Map,k=!0,T=w[0],x=0;x<w.length;x++){var M=w[x],A=Zr(M),P=qi(M)===Wi,G=[er,yr].indexOf(A)>=0,V=G?\"width\":\"height\",I=ml(t,{placement:M,boundary:f,rootBoundary:d,altBoundary:h,padding:u}),j=G?P?wr:tr:P?yr:er;S[V]>C[V]&&(j=zc(j));var F=zc(j),R=[];if(o&&R.push(I[A]<=0),i&&R.push(I[j]<=0,I[F]<=0),R.every(function(re){return re})){T=M,k=!1;break}E.set(M,R)}if(k)for(var B=b?3:1,N=function(re){var le=w.find(function(pe){var K=E.get(pe);if(K)return K.slice(0,re).every(function(z){return z})});if(le)return T=le,\"break\"},U=B;U>0;U--){var J=N(U);if(J===\"break\")break}t.placement!==T&&(t.modifiersData[r]._skip=!0,t.placement=T,t.reset=!0)}}var sB={name:\"flip\",enabled:!0,phase:\"main\",fn:rB,requiresIfExists:[\"offset\"],data:{_skip:!1}};function L_(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function I_(e){return[er,wr,yr,tr].some(function(t){return e[t]>=0})}function oB(e){var t=e.state,n=e.name,r=t.rects.reference,s=t.rects.popper,o=t.modifiersData.preventOverflow,a=ml(t,{elementContext:\"reference\"}),i=ml(t,{altBoundary:!0}),l=L_(a,r),u=L_(i,s,o),f=I_(l),d=I_(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:f,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{\"data-popper-reference-hidden\":f,\"data-popper-escaped\":d})}var iB={name:\"hide\",enabled:!0,phase:\"main\",requiresIfExists:[\"preventOverflow\"],fn:oB};function aB(e,t,n){var r=Zr(e),s=[tr,er].indexOf(r)>=0?-1:1,o=typeof n==\"function\"?n(Object.assign({},t,{placement:e})):n,a=o[0],i=o[1];return a=a||0,i=(i||0)*s,[tr,wr].indexOf(r)>=0?{x:i,y:a}:{x:a,y:i}}function lB(e){var t=e.state,n=e.options,r=e.name,s=n.offset,o=s===void 0?[0,0]:s,a=$s.reduce(function(f,d){return f[d]=aB(d,t.rects,o),f},{}),i=a[t.placement],l=i.x,u=i.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=a}var cB={name:\"offset\",enabled:!0,phase:\"main\",requires:[\"popperOffsets\"],fn:lB};function uB(e){var t=e.state,n=e.name;t.modifiersData[n]=mC({reference:t.rects.reference,element:t.rects.popper,strategy:\"absolute\",placement:t.placement})}var gC={name:\"popperOffsets\",enabled:!0,phase:\"read\",fn:uB,data:{}};function dB(e){return e===\"x\"?\"y\":\"x\"}function fB(e){var t=e.state,n=e.options,r=e.name,s=n.mainAxis,o=s===void 0?!0:s,a=n.altAxis,i=a===void 0?!1:a,l=n.boundary,u=n.rootBoundary,f=n.altBoundary,d=n.padding,h=n.tether,v=h===void 0?!0:h,b=n.tetherOffset,p=b===void 0?0:b,g=ml(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:f}),m=Zr(t.placement),y=qi(t.placement),_=!y,w=Uv(m),S=dB(w),C=t.modifiersData.popperOffsets,E=t.rects.reference,k=t.rects.popper,T=typeof p==\"function\"?p(Object.assign({},t.rects,{placement:t.placement})):p,x=typeof T==\"number\"?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),M=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,A={x:0,y:0};if(C){if(o){var P,G=w===\"y\"?er:tr,V=w===\"y\"?yr:wr,I=w===\"y\"?\"height\":\"width\",j=C[w],F=j+g[G],R=j-g[V],B=v?-k[I]/2:0,N=y===Wi?E[I]:k[I],U=y===Wi?-k[I]:-E[I],J=t.elements.arrow,re=v&&J?jv(J):{width:0,height:0},le=t.modifiersData[\"arrow#persistent\"]?t.modifiersData[\"arrow#persistent\"].padding:uC(),pe=le[G],K=le[V],z=Ya(0,E[I],re[I]),te=_?E[I]/2-B-z-pe-x.mainAxis:N-z-pe-x.mainAxis,oe=_?-E[I]/2+B+z+K+x.mainAxis:U+z+K+x.mainAxis,he=t.elements.arrow&&Gl(t.elements.arrow),Y=he?w===\"y\"?he.clientTop||0:he.clientLeft||0:0,L=(P=M==null?void 0:M[w])!=null?P:0,Q=j+te-L-Y,se=j+oe-L,ge=Ya(v?Ou(F,Q):F,j,v?Wo(R,se):R);C[w]=ge,A[w]=ge-j}if(i){var ae,_e=w===\"x\"?er:tr,me=w===\"x\"?yr:wr,Ce=C[S],Te=S===\"y\"?\"height\":\"width\",Se=Ce+g[_e],Ie=Ce-g[me],be=[er,tr].indexOf(m)!==-1,Ae=(ae=M==null?void 0:M[S])!=null?ae:0,qe=be?Se:Ce-E[Te]-k[Te]-Ae+x.altAxis,tt=be?Ce+E[Te]+k[Te]-Ae-x.altAxis:Ie,et=v&&be?F8(qe,Ce,tt):Ya(v?qe:Se,Ce,v?tt:Ie);C[S]=et,A[S]=et-Ce}t.modifiersData[r]=A}}var hB={name:\"preventOverflow\",enabled:!0,phase:\"main\",fn:fB,requiresIfExists:[\"offset\"]};function pB(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function vB(e){return e===zr(e)||!gr(e)?qv(e):pB(e)}function mB(e){var t=e.getBoundingClientRect(),n=ji(t.width)/e.offsetWidth||1,r=ji(t.height)/e.offsetHeight||1;return n!==1||r!==1}function gB(e,t,n){n===void 0&&(n=!1);var r=gr(t),s=gr(t)&&mB(t),o=bo(t),a=Ui(e,s),i={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&((rs(t)!==\"body\"||Gv(o))&&(i=vB(t)),gr(t)?(l=Ui(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):o&&(l.x=Yv(o))),{x:a.left+i.scrollLeft-l.x,y:a.top+i.scrollTop-l.y,width:a.width,height:a.height}}function _B(e){var t=new Map,n=new Set,r=[];e.forEach(function(o){t.set(o.name,o)});function s(o){n.add(o.name);var a=[].concat(o.requires||[],o.requiresIfExists||[]);a.forEach(function(i){if(!n.has(i)){var l=t.get(i);l&&s(l)}}),r.push(o)}return e.forEach(function(o){n.has(o.name)||s(o)}),r}function bB(e){var t=_B(e);return I8.reduce(function(n,r){return n.concat(t.filter(function(s){return s.phase===r}))},[])}function yB(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function wB(e){var t=e.reduce(function(n,r){var s=n[r.name];return n[r.name]=s?Object.assign({},s,r,{options:Object.assign({},s.options,r.options),data:Object.assign({},s.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var P_={placement:\"bottom\",modifiers:[],strategy:\"absolute\"};function D_(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return!t.some(function(r){return!(r&&typeof r.getBoundingClientRect==\"function\")})}function Xv(e){e===void 0&&(e={});var t=e,n=t.defaultModifiers,r=n===void 0?[]:n,s=t.defaultOptions,o=s===void 0?P_:s;return function(a,i,l){l===void 0&&(l=o);var u={placement:\"bottom\",orderedModifiers:[],options:Object.assign({},P_,o),modifiersData:{},elements:{reference:a,popper:i},attributes:{},styles:{}},f=[],d=!1,h={state:u,setOptions:function(p){var g=typeof p==\"function\"?p(u.options):p;b(),u.options=Object.assign({},o,u.options,g),u.scrollParents={reference:Ki(a)?Ga(a):a.contextElement?Ga(a.contextElement):[],popper:Ga(i)};var m=bB(wB([].concat(r,u.options.modifiers)));return u.orderedModifiers=m.filter(function(y){return y.enabled}),v(),h.update()},forceUpdate:function(){if(!d){var p=u.elements,g=p.reference,m=p.popper;if(D_(g,m)){u.rects={reference:gB(g,Gl(m),u.options.strategy===\"fixed\"),popper:jv(m)},u.reset=!1,u.placement=u.options.placement,u.orderedModifiers.forEach(function(k){return u.modifiersData[k.name]=Object.assign({},k.data)});for(var y=0;y<u.orderedModifiers.length;y++){if(u.reset===!0){u.reset=!1,y=-1;continue}var _=u.orderedModifiers[y],w=_.fn,S=_.options,C=S===void 0?{}:S,E=_.name;typeof w==\"function\"&&(u=w({state:u,options:C,name:E,instance:h})||u)}}}},update:yB(function(){return new Promise(function(p){h.forceUpdate(),p(u)})}),destroy:function(){b(),d=!0}};if(!D_(a,i))return h;h.setOptions(l).then(function(p){!d&&l.onFirstUpdate&&l.onFirstUpdate(p)});function v(){u.orderedModifiers.forEach(function(p){var g=p.name,m=p.options,y=m===void 0?{}:m,_=p.effect;if(typeof _==\"function\"){var w=_({state:u,name:g,instance:h,options:y}),S=function(){};f.push(w||S)}})}function b(){f.forEach(function(p){return p()}),f=[]}return h}}Xv();var SB=[pC,gC,hC,lC];Xv({defaultModifiers:SB});var CB=[pC,gC,hC,lC,cB,sB,hB,W8,iB],kB=Xv({defaultModifiers:CB});const EB=[\"fixed\",\"absolute\"],TB=xe({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:ie(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:$s,default:\"bottom\"},popperOptions:{type:ie(Object),default:()=>({})},strategy:{type:String,values:EB,default:\"absolute\"}}),_C=xe({...TB,id:String,style:{type:ie([String,Array,Object])},className:{type:ie([String,Array,Object])},effect:{type:ie(String),default:\"dark\"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:ie([String,Array,Object])},popperStyle:{type:ie([String,Array,Object])},referenceEl:{type:ie(Object)},triggerTargetEl:{type:ie(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},virtualTriggering:Boolean,zIndex:Number,...kn([\"ariaLabel\"])}),RB={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},xB=(e,t)=>{const n=W(!1),r=W();return{focusStartRef:r,trapped:n,onFocusAfterReleased:u=>{var f;((f=u.detail)==null?void 0:f.focusReason)!==\"pointer\"&&(r.value=\"first\",t(\"blur\"))},onFocusAfterTrapped:()=>{t(\"focus\")},onFocusInTrap:u=>{e.visible&&!n.value&&(u.target&&(r.value=u.target),n.value=!0)},onFocusoutPrevented:u=>{e.trapping||(u.detail.focusReason===\"pointer\"&&u.preventDefault(),n.value=!1)},onReleaseRequested:()=>{n.value=!1,t(\"close\")}}},OB=(e,t=[])=>{const{placement:n,strategy:r,popperOptions:s}=e,o={placement:n,strategy:r,...s,modifiers:[...AB(e),...t]};return $B(o,s==null?void 0:s.modifiers),o},MB=e=>{if(bt)return Un(e)};function AB(e){const{offset:t,gpuAcceleration:n,fallbackPlacements:r}=e;return[{name:\"offset\",options:{offset:[0,t??12]}},{name:\"preventOverflow\",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:\"flip\",options:{padding:5,fallbackPlacements:r}},{name:\"computeStyles\",options:{gpuAcceleration:n}}]}function $B(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const LB=(e,t,n={})=>{const r={name:\"updateState\",enabled:!0,phase:\"write\",fn:({state:l})=>{const u=IB(l);Object.assign(a.value,u)},requires:[\"computeStyles\"]},s=O(()=>{const{onFirstUpdate:l,placement:u,strategy:f,modifiers:d}=c(n);return{onFirstUpdate:l,placement:u||\"bottom\",strategy:f||\"absolute\",modifiers:[...d||[],r,{name:\"applyStyles\",enabled:!1}]}}),o=Wt(),a=W({styles:{popper:{position:c(s).strategy,left:\"0\",top:\"0\"},arrow:{position:\"absolute\"}},attributes:{}}),i=()=>{o.value&&(o.value.destroy(),o.value=void 0)};return ye(s,l=>{const u=c(o);u&&u.setOptions(l)},{deep:!0}),ye([e,t],([l,u])=>{i(),!(!l||!u)&&(o.value=kB(l,u,c(s)))}),Pt(()=>{i()}),{state:O(()=>{var l;return{...((l=c(o))==null?void 0:l.state)||{}}}),styles:O(()=>c(a).styles),attributes:O(()=>c(a).attributes),update:()=>{var l;return(l=c(o))==null?void 0:l.update()},forceUpdate:()=>{var l;return(l=c(o))==null?void 0:l.forceUpdate()},instanceRef:O(()=>c(o))}};function IB(e){const t=Object.keys(e.elements),n=pl(t.map(s=>[s,e.styles[s]||{}])),r=pl(t.map(s=>[s,e.attributes[s]]));return{styles:n,attributes:r}}const PB=0,DB=e=>{const{popperInstanceRef:t,contentRef:n,triggerRef:r,role:s}=Fe(Fv,void 0),o=W(),a=W(),i=O(()=>({name:\"eventListeners\",enabled:!!e.visible})),l=O(()=>{var m;const y=c(o),_=(m=c(a))!=null?m:PB;return{name:\"arrow\",enabled:!wS(y),options:{element:y,padding:_}}}),u=O(()=>({onFirstUpdate:()=>{b()},...OB(e,[c(l),c(i)])})),f=O(()=>MB(e.referenceEl)||c(r)),{attributes:d,state:h,styles:v,update:b,forceUpdate:p,instanceRef:g}=LB(f,n,u);return ye(g,m=>t.value=m),it(()=>{ye(()=>{var m;return(m=c(f))==null?void 0:m.getBoundingClientRect()},()=>{b()})}),{attributes:d,arrowRef:o,contentRef:n,instanceRef:g,state:h,styles:v,role:s,forceUpdate:p,update:b}},BB=(e,{attributes:t,styles:n,role:r})=>{const{nextZIndex:s}=da(),o=we(\"popper\"),a=O(()=>c(t).popper),i=W(Ge(e.zIndex)?e.zIndex:s()),l=O(()=>[o.b(),o.is(\"pure\",e.pure),o.is(e.effect),e.popperClass]),u=O(()=>[{zIndex:c(i)},c(n).popper,e.popperStyle||{}]),f=O(()=>r.value===\"dialog\"?\"false\":void 0),d=O(()=>c(n).arrow||{});return{ariaModal:f,arrowStyle:d,contentAttrs:a,contentClass:l,contentStyle:u,contentZIndex:i,updateZIndex:()=>{i.value=Ge(e.zIndex)?e.zIndex:s()}}},NB=ee({name:\"ElPopperContent\"}),FB=ee({...NB,props:_C,emits:RB,setup(e,{expose:t,emit:n}){const r=e,{focusStartRef:s,trapped:o,onFocusAfterReleased:a,onFocusAfterTrapped:i,onFocusInTrap:l,onFocusoutPrevented:u,onReleaseRequested:f}=xB(r,n),{attributes:d,arrowRef:h,contentRef:v,styles:b,instanceRef:p,role:g,update:m}=DB(r),{ariaModal:y,arrowStyle:_,contentAttrs:w,contentClass:S,contentStyle:C,updateZIndex:E}=BB(r,{styles:b,attributes:d,role:g}),k=Fe(ns,void 0),T=W();pt(JS,{arrowStyle:_,arrowRef:h,arrowOffset:T}),k&&pt(ns,{...k,addInputId:Mt,removeInputId:Mt});let x;const M=(P=!0)=>{m(),P&&E()},A=()=>{M(!1),r.visible&&r.focusOnShow?o.value=!0:r.visible===!1&&(o.value=!1)};return it(()=>{ye(()=>r.triggerTargetEl,(P,G)=>{x==null||x(),x=void 0;const V=c(P||v.value),I=c(G||v.value);lr(V)&&(x=ye([g,()=>r.ariaLabel,y,()=>r.id],j=>{[\"role\",\"aria-label\",\"aria-modal\",\"id\"].forEach((F,R)=>{fn(j[R])?V.removeAttribute(F):V.setAttribute(F,j[R])})},{immediate:!0})),I!==V&&lr(I)&&[\"role\",\"aria-label\",\"aria-modal\",\"id\"].forEach(j=>{I.removeAttribute(j)})},{immediate:!0}),ye(()=>r.visible,A,{immediate:!0})}),Pt(()=>{x==null||x(),x=void 0}),t({popperContentRef:v,popperInstanceRef:p,updatePopper:M,contentStyle:C}),(P,G)=>($(),X(\"div\",ft({ref_key:\"contentRef\",ref:v},c(w),{style:c(C),class:c(S),tabindex:\"-1\",onMouseenter:V=>P.$emit(\"mouseenter\",V),onMouseleave:V=>P.$emit(\"mouseleave\",V)}),[H(c(ha),{trapped:c(o),\"trap-on-focus-in\":!0,\"focus-trap-el\":c(v),\"focus-start-el\":c(s),onFocusAfterTrapped:c(i),onFocusAfterReleased:c(a),onFocusin:c(l),onFocusoutPrevented:c(u),onReleaseRequested:c(f)},{default:q(()=>[ue(P.$slots,\"default\")]),_:3},8,[\"trapped\",\"focus-trap-el\",\"focus-start-el\",\"onFocusAfterTrapped\",\"onFocusAfterReleased\",\"onFocusin\",\"onFocusoutPrevented\",\"onReleaseRequested\"])],16,[\"onMouseenter\",\"onMouseleave\"]))}});var HB=Oe(FB,[[\"__file\",\"content.vue\"]]);const bC=Qe(QD),Md=Symbol(\"elTooltip\");function B_(){let e;const t=(r,s)=>{n(),e=window.setTimeout(r,s)},n=()=>window.clearTimeout(e);return Kl(()=>n()),{registerTimeout:t,cancelTimeout:n}}const VB=xe({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),zB=({showAfter:e,hideAfter:t,autoClose:n,open:r,close:s})=>{const{registerTimeout:o}=B_(),{registerTimeout:a,cancelTimeout:i}=B_();return{onOpen:f=>{o(()=>{r(f);const d=c(n);Ge(d)&&d>0&&a(()=>{s(f)},d)},c(e))},onClose:f=>{i(),o(()=>{s(f)},c(t))}}},pn=xe({...VB,..._C,appendTo:{type:ie([String,Object])},content:{type:String,default:\"\"},rawContent:Boolean,persistent:Boolean,visible:{type:ie(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean,...kn([\"ariaLabel\"])}),gl=xe({...eC,disabled:Boolean,trigger:{type:ie([String,Array]),default:\"hover\"},triggerKeys:{type:ie(Array),default:()=>[Ne.enter,Ne.numpadEnter,Ne.space]}}),WB=Vr({type:ie(Boolean),default:null}),KB=Vr({type:ie(Function)}),jB=e=>{const t=`update:${e}`,n=`onUpdate:${e}`,r=[t],s={[e]:WB,[n]:KB};return{useModelToggle:({indicator:a,toggleReason:i,shouldHideWhenRouteChanges:l,shouldProceed:u,onShow:f,onHide:d})=>{const h=ct(),{emit:v}=h,b=h.props,p=O(()=>Ke(b[n])),g=O(()=>b[e]===null),m=E=>{a.value!==!0&&(a.value=!0,i&&(i.value=E),Ke(f)&&f(E))},y=E=>{a.value!==!1&&(a.value=!1,i&&(i.value=E),Ke(d)&&d(E))},_=E=>{if(b.disabled===!0||Ke(u)&&!u())return;const k=p.value&&bt;k&&v(t,!0),(g.value||!k)&&m(E)},w=E=>{if(b.disabled===!0||!bt)return;const k=p.value&&bt;k&&v(t,!1),(g.value||!k)&&y(E)},S=E=>{Vt(E)&&(b.disabled&&E?p.value&&v(t,!1):a.value!==E&&(E?m():y()))},C=()=>{a.value?w():_()};return ye(()=>b[e],S),l&&h.appContext.config.globalProperties.$route!==void 0&&ye(()=>({...h.proxy.$route}),()=>{l.value&&a.value&&w()}),it(()=>{S(b[e])}),{hide:w,show:_,toggle:C,hasUpdateHandler:p}},useModelToggleProps:s,useModelToggleEmits:r}},{useModelToggleProps:UB,useModelToggleEmits:qB,useModelToggle:YB}=jB(\"visible\"),GB=xe({...ZS,...UB,...pn,...gl,...QS,showArrow:{type:Boolean,default:!0}}),XB=[...qB,\"before-show\",\"before-hide\",\"show\",\"hide\",\"open\",\"close\"],JB=(e,t)=>ke(e)?e.includes(t):e===t,ui=(e,t,n)=>r=>{JB(c(e),t)&&n(r)},Qt=(e,t,{checkForDefaultPrevented:n=!0}={})=>s=>{const o=e==null?void 0:e(s);if(n===!1||!o)return t==null?void 0:t(s)},N_=e=>t=>t.pointerType===\"mouse\"?e(t):void 0,ZB=ee({name:\"ElTooltipTrigger\"}),QB=ee({...ZB,props:gl,setup(e,{expose:t}){const n=e,r=we(\"tooltip\"),{controlled:s,id:o,open:a,onOpen:i,onClose:l,onToggle:u}=Fe(Md,void 0),f=W(null),d=()=>{if(c(s)||n.disabled)return!0},h=At(n,\"trigger\"),v=Qt(d,ui(h,\"hover\",i)),b=Qt(d,ui(h,\"hover\",l)),p=Qt(d,ui(h,\"click\",w=>{w.button===0&&u(w)})),g=Qt(d,ui(h,\"focus\",i)),m=Qt(d,ui(h,\"focus\",l)),y=Qt(d,ui(h,\"contextmenu\",w=>{w.preventDefault(),u(w)})),_=Qt(d,w=>{const{code:S}=w;n.triggerKeys.includes(S)&&(w.preventDefault(),u(w))});return t({triggerRef:f}),(w,S)=>($(),ve(c(u8),{id:c(o),\"virtual-ref\":w.virtualRef,open:c(a),\"virtual-triggering\":w.virtualTriggering,class:D(c(r).e(\"trigger\")),onBlur:c(m),onClick:c(p),onContextmenu:c(y),onFocus:c(g),onMouseenter:c(v),onMouseleave:c(b),onKeydown:c(_)},{default:q(()=>[ue(w.$slots,\"default\")]),_:3},8,[\"id\",\"virtual-ref\",\"open\",\"virtual-triggering\",\"class\",\"onBlur\",\"onClick\",\"onContextmenu\",\"onFocus\",\"onMouseenter\",\"onMouseleave\",\"onKeydown\"]))}});var eN=Oe(QB,[[\"__file\",\"trigger.vue\"]]);const tN=xe({to:{type:ie([String,Object]),required:!0},disabled:Boolean}),nN=ee({__name:\"teleport\",props:tN,setup(e){return(t,n)=>t.disabled?ue(t.$slots,\"default\",{key:0}):($(),ve(VT,{key:1,to:t.to},[ue(t.$slots,\"default\")],8,[\"to\"]))}});var rN=Oe(nN,[[\"__file\",\"teleport.vue\"]]);const pa=Qe(rN),yC=()=>{const e=cv(),t=Bv(),n=O(()=>`${e.value}-popper-container-${t.prefix}`),r=O(()=>`#${n.value}`);return{id:n,selector:r}},sN=e=>{const t=document.createElement(\"div\");return t.id=e,document.body.appendChild(t),t},oN=()=>{const{id:e,selector:t}=yC();return Dl(()=>{bt&&(document.body.querySelector(t.value)||sN(e.value))}),{id:e,selector:t}},iN=ee({name:\"ElTooltipContent\",inheritAttrs:!1}),aN=ee({...iN,props:pn,setup(e,{expose:t}){const n=e,{selector:r}=yC(),s=we(\"tooltip\"),o=W();let a;const{controlled:i,id:l,open:u,trigger:f,onClose:d,onOpen:h,onShow:v,onHide:b,onBeforeShow:p,onBeforeHide:g}=Fe(Md,void 0),m=O(()=>n.transition||`${s.namespace.value}-fade-in-linear`),y=O(()=>n.persistent);Pt(()=>{a==null||a()});const _=O(()=>c(y)?!0:c(u)),w=O(()=>n.disabled?!1:c(u)),S=O(()=>n.appendTo||r.value),C=O(()=>{var I;return(I=n.style)!=null?I:{}}),E=W(!0),k=()=>{b(),E.value=!0},T=()=>{if(c(i))return!0},x=Qt(T,()=>{n.enterable&&c(f)===\"hover\"&&h()}),M=Qt(T,()=>{c(f)===\"hover\"&&d()}),A=()=>{var I,j;(j=(I=o.value)==null?void 0:I.updatePopper)==null||j.call(I),p==null||p()},P=()=>{g==null||g()},G=()=>{v(),a=Tv(O(()=>{var I;return(I=o.value)==null?void 0:I.popperContentRef}),()=>{if(c(i))return;c(f)!==\"hover\"&&d()})},V=()=>{n.virtualTriggering||d()};return ye(()=>c(u),I=>{I?E.value=!1:a==null||a()},{flush:\"post\"}),ye(()=>n.content,()=>{var I,j;(j=(I=o.value)==null?void 0:I.updatePopper)==null||j.call(I)}),t({contentRef:o}),(I,j)=>($(),ve(c(pa),{disabled:!I.teleported,to:c(S)},{default:q(()=>[H(_n,{name:c(m),onAfterLeave:k,onBeforeEnter:A,onAfterEnter:G,onBeforeLeave:P},{default:q(()=>[c(_)?st(($(),ve(c(HB),ft({key:0,id:c(l),ref_key:\"contentRef\",ref:o},I.$attrs,{\"aria-label\":I.ariaLabel,\"aria-hidden\":E.value,\"boundaries-padding\":I.boundariesPadding,\"fallback-placements\":I.fallbackPlacements,\"gpu-acceleration\":I.gpuAcceleration,offset:I.offset,placement:I.placement,\"popper-options\":I.popperOptions,strategy:I.strategy,effect:I.effect,enterable:I.enterable,pure:I.pure,\"popper-class\":I.popperClass,\"popper-style\":[I.popperStyle,c(C)],\"reference-el\":I.referenceEl,\"trigger-target-el\":I.triggerTargetEl,visible:c(w),\"z-index\":I.zIndex,onMouseenter:c(x),onMouseleave:c(M),onBlur:V,onClose:c(d)}),{default:q(()=>[ue(I.$slots,\"default\")]),_:3},16,[\"id\",\"aria-label\",\"aria-hidden\",\"boundaries-padding\",\"fallback-placements\",\"gpu-acceleration\",\"offset\",\"placement\",\"popper-options\",\"strategy\",\"effect\",\"enterable\",\"pure\",\"popper-class\",\"popper-style\",\"reference-el\",\"trigger-target-el\",\"visible\",\"z-index\",\"onMouseenter\",\"onMouseleave\",\"onClose\"])),[[Et,c(w)]]):de(\"v-if\",!0)]),_:3},8,[\"name\"])]),_:3},8,[\"disabled\",\"to\"]))}});var lN=Oe(aN,[[\"__file\",\"content.vue\"]]);const cN=ee({name:\"ElTooltip\"}),uN=ee({...cN,props:GB,emits:XB,setup(e,{expose:t,emit:n}){const r=e;oN();const s=Sn(),o=W(),a=W(),i=()=>{var m;const y=c(o);y&&((m=y.popperInstanceRef)==null||m.update())},l=W(!1),u=W(),{show:f,hide:d,hasUpdateHandler:h}=YB({indicator:l,toggleReason:u}),{onOpen:v,onClose:b}=zB({showAfter:At(r,\"showAfter\"),hideAfter:At(r,\"hideAfter\"),autoClose:At(r,\"autoClose\"),open:f,close:d}),p=O(()=>Vt(r.visible)&&!h.value);pt(Md,{controlled:p,id:s,open:ra(l),trigger:At(r,\"trigger\"),onOpen:m=>{v(m)},onClose:m=>{b(m)},onToggle:m=>{c(l)?b(m):v(m)},onShow:()=>{n(\"show\",u.value)},onHide:()=>{n(\"hide\",u.value)},onBeforeShow:()=>{n(\"before-show\",u.value)},onBeforeHide:()=>{n(\"before-hide\",u.value)},updatePopper:i}),ye(()=>r.disabled,m=>{m&&l.value&&(l.value=!1)});const g=m=>{var y,_;const w=(_=(y=a.value)==null?void 0:y.contentRef)==null?void 0:_.popperContentRef,S=(m==null?void 0:m.relatedTarget)||document.activeElement;return w&&w.contains(S)};return l1(()=>l.value&&d()),t({popperRef:o,contentRef:a,isFocusInsideContent:g,updatePopper:i,onOpen:v,onClose:b,hide:d}),(m,y)=>($(),ve(c(bC),{ref_key:\"popperRef\",ref:o,role:m.role},{default:q(()=>[H(eN,{disabled:m.disabled,trigger:m.trigger,\"trigger-keys\":m.triggerKeys,\"virtual-ref\":m.virtualRef,\"virtual-triggering\":m.virtualTriggering},{default:q(()=>[m.$slots.default?ue(m.$slots,\"default\",{key:0}):de(\"v-if\",!0)]),_:3},8,[\"disabled\",\"trigger\",\"trigger-keys\",\"virtual-ref\",\"virtual-triggering\"]),H(lN,{ref_key:\"contentRef\",ref:a,\"aria-label\":m.ariaLabel,\"boundaries-padding\":m.boundariesPadding,content:m.content,disabled:m.disabled,effect:m.effect,enterable:m.enterable,\"fallback-placements\":m.fallbackPlacements,\"hide-after\":m.hideAfter,\"gpu-acceleration\":m.gpuAcceleration,offset:m.offset,persistent:m.persistent,\"popper-class\":m.popperClass,\"popper-style\":m.popperStyle,placement:m.placement,\"popper-options\":m.popperOptions,pure:m.pure,\"raw-content\":m.rawContent,\"reference-el\":m.referenceEl,\"trigger-target-el\":m.triggerTargetEl,\"show-after\":m.showAfter,strategy:m.strategy,teleported:m.teleported,transition:m.transition,\"virtual-triggering\":m.virtualTriggering,\"z-index\":m.zIndex,\"append-to\":m.appendTo},{default:q(()=>[ue(m.$slots,\"content\",{},()=>[m.rawContent?($(),X(\"span\",{key:0,innerHTML:m.content},null,8,[\"innerHTML\"])):($(),X(\"span\",{key:1},Ee(m.content),1))]),m.showArrow?($(),ve(c(n8),{key:0,\"arrow-offset\":m.arrowOffset},null,8,[\"arrow-offset\"])):de(\"v-if\",!0)]),_:3},8,[\"aria-label\",\"boundaries-padding\",\"content\",\"disabled\",\"effect\",\"enterable\",\"fallback-placements\",\"hide-after\",\"gpu-acceleration\",\"offset\",\"persistent\",\"popper-class\",\"popper-style\",\"placement\",\"popper-options\",\"pure\",\"raw-content\",\"reference-el\",\"trigger-target-el\",\"show-after\",\"strategy\",\"teleported\",\"transition\",\"virtual-triggering\",\"z-index\",\"append-to\"])]),_:3},8,[\"role\"]))}});var dN=Oe(uN,[[\"__file\",\"tooltip.vue\"]]);const Cn=Qe(dN),fN=xe({valueKey:{type:String,default:\"value\"},modelValue:{type:[String,Number],default:\"\"},debounce:{type:Number,default:300},placement:{type:ie(String),values:[\"top\",\"top-start\",\"top-end\",\"bottom\",\"bottom-start\",\"bottom-end\"],default:\"bottom-start\"},fetchSuggestions:{type:ie([Function,Array]),default:Mt},popperClass:{type:String,default:\"\"},triggerOnFocus:{type:Boolean,default:!0},selectWhenUnmatched:{type:Boolean,default:!1},hideLoading:{type:Boolean,default:!1},teleported:pn.teleported,highlightFirstItem:{type:Boolean,default:!1},fitInputWidth:{type:Boolean,default:!1},clearable:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},name:String,...kn([\"ariaLabel\"])}),hN={[ot]:e=>ze(e),[Tn]:e=>ze(e),[Bt]:e=>ze(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,select:e=>lt(e)},wC=\"ElAutocomplete\",pN=ee({name:wC,inheritAttrs:!1}),vN=ee({...pN,props:fN,emits:hN,setup(e,{expose:t,emit:n}){const r=e,s=Ul(),o=mo(),a=On(),i=we(\"autocomplete\"),l=W(),u=W(),f=W(),d=W();let h=!1,v=!1;const b=W([]),p=W(-1),g=W(\"\"),m=W(!1),y=W(!1),_=W(!1),w=Sn(),S=O(()=>o.style),C=O(()=>(b.value.length>0||_.value)&&m.value),E=O(()=>!r.hideLoading&&_.value),k=O(()=>l.value?Array.from(l.value.$el.querySelectorAll(\"input\")):[]),T=()=>{C.value&&(g.value=`${l.value.$el.offsetWidth}px`)},x=()=>{p.value=-1},M=async K=>{if(y.value)return;const z=te=>{_.value=!1,!y.value&&(ke(te)?(b.value=te,p.value=r.highlightFirstItem?0:-1):dn(wC,\"autocomplete suggestions must be an array\"))};if(_.value=!0,ke(r.fetchSuggestions))z(r.fetchSuggestions);else{const te=await r.fetchSuggestions(K,z);ke(te)&&z(te)}},A=nr(M,r.debounce),P=K=>{const z=!!K;if(n(Tn,K),n(ot,K),y.value=!1,m.value||(m.value=z),!r.triggerOnFocus&&!K){y.value=!0,b.value=[];return}A(K)},G=K=>{var z;a.value||(((z=K.target)==null?void 0:z.tagName)!==\"INPUT\"||k.value.includes(document.activeElement))&&(m.value=!0)},V=K=>{n(Bt,K)},I=K=>{v?v=!1:(m.value=!0,n(\"focus\",K),r.triggerOnFocus&&!h&&A(String(r.modelValue)))},j=K=>{setTimeout(()=>{var z;if((z=f.value)!=null&&z.isFocusInsideContent()){v=!0;return}m.value&&N(),n(\"blur\",K)})},F=()=>{m.value=!1,n(ot,\"\"),n(\"clear\")},R=async()=>{C.value&&p.value>=0&&p.value<b.value.length?re(b.value[p.value]):r.selectWhenUnmatched&&(n(\"select\",{value:r.modelValue}),b.value=[],p.value=-1)},B=K=>{C.value&&(K.preventDefault(),K.stopPropagation(),N())},N=()=>{m.value=!1},U=()=>{var K;(K=l.value)==null||K.focus()},J=()=>{var K;(K=l.value)==null||K.blur()},re=async K=>{n(Tn,K[r.valueKey]),n(ot,K[r.valueKey]),n(\"select\",K),b.value=[],p.value=-1},le=K=>{if(!C.value||_.value)return;if(K<0){p.value=-1;return}K>=b.value.length&&(K=b.value.length-1);const z=u.value.querySelector(`.${i.be(\"suggestion\",\"wrap\")}`),oe=z.querySelectorAll(`.${i.be(\"suggestion\",\"list\")} li`)[K],he=z.scrollTop,{offsetTop:Y,scrollHeight:L}=oe;Y+L>he+z.clientHeight&&(z.scrollTop+=L),Y<he&&(z.scrollTop-=L),p.value=K,l.value.ref.setAttribute(\"aria-activedescendant\",`${w.value}-item-${p.value}`)},pe=Tv(d,()=>{C.value&&N()});return Pt(()=>{pe==null||pe()}),it(()=>{l.value.ref.setAttribute(\"role\",\"textbox\"),l.value.ref.setAttribute(\"aria-autocomplete\",\"list\"),l.value.ref.setAttribute(\"aria-controls\",\"id\"),l.value.ref.setAttribute(\"aria-activedescendant\",`${w.value}-item-${p.value}`),h=l.value.ref.hasAttribute(\"readonly\")}),t({highlightedIndex:p,activated:m,loading:_,inputRef:l,popperRef:f,suggestions:b,handleSelect:re,handleKeyEnter:R,focus:U,blur:J,close:N,highlight:le,getData:M}),(K,z)=>($(),ve(c(Cn),{ref_key:\"popperRef\",ref:f,visible:c(C),placement:K.placement,\"fallback-placements\":[\"bottom-start\",\"top-start\"],\"popper-class\":[c(i).e(\"popper\"),K.popperClass],teleported:K.teleported,\"gpu-acceleration\":!1,pure:\"\",\"manual-mode\":\"\",effect:\"light\",trigger:\"click\",transition:`${c(i).namespace.value}-zoom-in-top`,persistent:\"\",role:\"listbox\",onBeforeShow:T,onHide:x},{content:q(()=>[Z(\"div\",{ref_key:\"regionRef\",ref:u,class:D([c(i).b(\"suggestion\"),c(i).is(\"loading\",c(E))]),style:Ue({[K.fitInputWidth?\"width\":\"minWidth\"]:g.value,outline:\"none\"}),role:\"region\"},[H(c(ls),{id:c(w),tag:\"ul\",\"wrap-class\":c(i).be(\"suggestion\",\"wrap\"),\"view-class\":c(i).be(\"suggestion\",\"list\"),role:\"listbox\"},{default:q(()=>[c(E)?($(),X(\"li\",{key:0},[ue(K.$slots,\"loading\",{},()=>[H(c(He),{class:D(c(i).is(\"loading\"))},{default:q(()=>[H(c(ts))]),_:1},8,[\"class\"])])])):($(!0),X(We,{key:1},vt(b.value,(te,oe)=>($(),X(\"li\",{id:`${c(w)}-item-${oe}`,key:oe,class:D({highlighted:p.value===oe}),role:\"option\",\"aria-selected\":p.value===oe,onClick:he=>re(te)},[ue(K.$slots,\"default\",{item:te},()=>[Ve(Ee(te[K.valueKey]),1)])],10,[\"id\",\"aria-selected\",\"onClick\"]))),128))]),_:3},8,[\"id\",\"wrap-class\",\"view-class\"])],6)]),default:q(()=>[Z(\"div\",{ref_key:\"listboxRef\",ref:d,class:D([c(i).b(),K.$attrs.class]),style:Ue(c(S)),role:\"combobox\",\"aria-haspopup\":\"listbox\",\"aria-expanded\":c(C),\"aria-owns\":c(w)},[H(c(yn),ft({ref_key:\"inputRef\",ref:l},c(s),{clearable:K.clearable,disabled:c(a),name:K.name,\"model-value\":K.modelValue,\"aria-label\":K.ariaLabel,onInput:P,onChange:V,onFocus:I,onBlur:j,onClear:F,onKeydown:[Ht(Xe(te=>le(p.value-1),[\"prevent\"]),[\"up\"]),Ht(Xe(te=>le(p.value+1),[\"prevent\"]),[\"down\"]),Ht(R,[\"enter\"]),Ht(N,[\"tab\"]),Ht(B,[\"esc\"])],onMousedown:G}),_r({_:2},[K.$slots.prepend?{name:\"prepend\",fn:q(()=>[ue(K.$slots,\"prepend\")])}:void 0,K.$slots.append?{name:\"append\",fn:q(()=>[ue(K.$slots,\"append\")])}:void 0,K.$slots.prefix?{name:\"prefix\",fn:q(()=>[ue(K.$slots,\"prefix\")])}:void 0,K.$slots.suffix?{name:\"suffix\",fn:q(()=>[ue(K.$slots,\"suffix\")])}:void 0]),1040,[\"clearable\",\"disabled\",\"name\",\"model-value\",\"aria-label\",\"onKeydown\"])],14,[\"aria-expanded\",\"aria-owns\"])]),_:3},8,[\"visible\",\"placement\",\"popper-class\",\"teleported\",\"transition\"]))}});var mN=Oe(vN,[[\"__file\",\"autocomplete.vue\"]]);const gN=Qe(mN),_N=xe({size:{type:[Number,String],values:is,default:\"\",validator:e=>Ge(e)},shape:{type:String,values:[\"circle\",\"square\"],default:\"circle\"},icon:{type:Nt},src:{type:String,default:\"\"},alt:String,srcSet:String,fit:{type:ie(String),default:\"cover\"}}),bN={error:e=>e instanceof Event},yN=ee({name:\"ElAvatar\"}),wN=ee({...yN,props:_N,emits:bN,setup(e,{emit:t}){const n=e,r=we(\"avatar\"),s=W(!1),o=O(()=>{const{size:u,icon:f,shape:d}=n,h=[r.b()];return ze(u)&&h.push(r.m(u)),f&&h.push(r.m(\"icon\")),d&&h.push(r.m(d)),h}),a=O(()=>{const{size:u}=n;return Ge(u)?r.cssVarBlock({size:en(u)||\"\"}):void 0}),i=O(()=>({objectFit:n.fit}));ye(()=>n.src,()=>s.value=!1);function l(u){s.value=!0,t(\"error\",u)}return(u,f)=>($(),X(\"span\",{class:D(c(o)),style:Ue(c(a))},[(u.src||u.srcSet)&&!s.value?($(),X(\"img\",{key:0,src:u.src,alt:u.alt,srcset:u.srcSet,style:Ue(c(i)),onError:l},null,44,[\"src\",\"alt\",\"srcset\"])):u.icon?($(),ve(c(He),{key:1},{default:q(()=>[($(),ve(dt(u.icon)))]),_:1})):ue(u.$slots,\"default\",{key:2})],6))}});var SN=Oe(wN,[[\"__file\",\"avatar.vue\"]]);const CN=Qe(SN),kN={visibilityHeight:{type:Number,default:200},target:{type:String,default:\"\"},right:{type:Number,default:40},bottom:{type:Number,default:40}},EN={click:e=>e instanceof MouseEvent},TN=(e,t,n)=>{const r=Wt(),s=Wt(),o=W(!1),a=()=>{r.value&&(o.value=r.value.scrollTop>=e.visibilityHeight)},i=u=>{var f;(f=r.value)==null||f.scrollTo({top:0,behavior:\"smooth\"}),t(\"click\",u)},l=ES(a,300,!0);return It(s,\"scroll\",l),it(()=>{var u;s.value=document,r.value=document.documentElement,e.target&&(r.value=(u=document.querySelector(e.target))!=null?u:void 0,r.value||dn(n,`target does not exist: ${e.target}`),s.value=r.value),a()}),{visible:o,handleClick:i}},SC=\"ElBacktop\",RN=ee({name:SC}),xN=ee({...RN,props:kN,emits:EN,setup(e,{emit:t}){const n=e,r=we(\"backtop\"),{handleClick:s,visible:o}=TN(n,t,SC),a=O(()=>({right:`${n.right}px`,bottom:`${n.bottom}px`}));return(i,l)=>($(),ve(_n,{name:`${c(r).namespace.value}-fade-in`},{default:q(()=>[c(o)?($(),X(\"div\",{key:0,style:Ue(c(a)),class:D(c(r).b()),onClick:Xe(c(s),[\"stop\"])},[ue(i.$slots,\"default\",{},()=>[H(c(He),{class:D(c(r).e(\"icon\"))},{default:q(()=>[H(c(ZP))]),_:1},8,[\"class\"])])],14,[\"onClick\"])):de(\"v-if\",!0)]),_:3},8,[\"name\"]))}});var ON=Oe(xN,[[\"__file\",\"backtop.vue\"]]);const MN=Qe(ON),AN=xe({value:{type:[String,Number],default:\"\"},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:[\"primary\",\"success\",\"warning\",\"info\",\"danger\"],default:\"danger\"},showZero:{type:Boolean,default:!0},color:String,badgeStyle:{type:ie([String,Object,Array])},offset:{type:ie(Array),default:[0,0]},badgeClass:{type:String}}),$N=ee({name:\"ElBadge\"}),LN=ee({...$N,props:AN,setup(e,{expose:t}){const n=e,r=we(\"badge\"),s=O(()=>n.isDot?\"\":Ge(n.value)&&Ge(n.max)?n.max<n.value?`${n.max}+`:`${n.value}`:`${n.value}`),o=O(()=>{var a,i,l,u,f;return[{backgroundColor:n.color,marginRight:en(-((i=(a=n.offset)==null?void 0:a[0])!=null?i:0)),marginTop:en((u=(l=n.offset)==null?void 0:l[1])!=null?u:0)},(f=n.badgeStyle)!=null?f:{}]});return t({content:s}),(a,i)=>($(),X(\"div\",{class:D(c(r).b())},[ue(a.$slots,\"default\"),H(_n,{name:`${c(r).namespace.value}-zoom-in-center`,persisted:\"\"},{default:q(()=>[st(Z(\"sup\",{class:D([c(r).e(\"content\"),c(r).em(\"content\",a.type),c(r).is(\"fixed\",!!a.$slots.default),c(r).is(\"dot\",a.isDot),c(r).is(\"hide-zero\",!a.showZero&&n.value===0),a.badgeClass]),style:Ue(c(o))},[ue(a.$slots,\"content\",{value:c(s)},()=>[Ve(Ee(c(s)),1)])],6),[[Et,!a.hidden&&(c(s)||a.isDot||a.$slots.content)]])]),_:3},8,[\"name\"])],2))}});var IN=Oe(LN,[[\"__file\",\"badge.vue\"]]);const CC=Qe(IN),kC=Symbol(\"breadcrumbKey\"),PN=xe({separator:{type:String,default:\"/\"},separatorIcon:{type:Nt}}),DN=ee({name:\"ElBreadcrumb\"}),BN=ee({...DN,props:PN,setup(e){const t=e,{t:n}=yt(),r=we(\"breadcrumb\"),s=W();return pt(kC,t),it(()=>{const o=s.value.querySelectorAll(`.${r.e(\"item\")}`);o.length&&o[o.length-1].setAttribute(\"aria-current\",\"page\")}),(o,a)=>($(),X(\"div\",{ref_key:\"breadcrumb\",ref:s,class:D(c(r).b()),\"aria-label\":c(n)(\"el.breadcrumb.label\"),role:\"navigation\"},[ue(o.$slots,\"default\")],10,[\"aria-label\"]))}});var NN=Oe(BN,[[\"__file\",\"breadcrumb.vue\"]]);const FN=xe({to:{type:ie([String,Object]),default:\"\"},replace:Boolean}),HN=ee({name:\"ElBreadcrumbItem\"}),VN=ee({...HN,props:FN,setup(e){const t=e,n=ct(),r=Fe(kC,void 0),s=we(\"breadcrumb\"),o=n.appContext.config.globalProperties.$router,a=W(),i=()=>{!t.to||!o||(t.replace?o.replace(t.to):o.push(t.to))};return(l,u)=>{var f,d;return $(),X(\"span\",{class:D(c(s).e(\"item\"))},[Z(\"span\",{ref_key:\"link\",ref:a,class:D([c(s).e(\"inner\"),c(s).is(\"link\",!!l.to)]),role:\"link\",onClick:i},[ue(l.$slots,\"default\")],2),(f=c(r))!=null&&f.separatorIcon?($(),ve(c(He),{key:0,class:D(c(s).e(\"separator\"))},{default:q(()=>[($(),ve(dt(c(r).separatorIcon)))]),_:1},8,[\"class\"])):($(),X(\"span\",{key:1,class:D(c(s).e(\"separator\")),role:\"presentation\"},Ee((d=c(r))==null?void 0:d.separator),3))],2)}}});var EC=Oe(VN,[[\"__file\",\"breadcrumb-item.vue\"]]);const zN=Qe(NN,{BreadcrumbItem:EC}),WN=Gt(EC),TC=Symbol(\"buttonGroupContextKey\"),Qs=({from:e,replacement:t,scope:n,version:r,ref:s,type:o=\"API\"},a)=>{ye(()=>c(a),i=>{},{immediate:!0})},KN=(e,t)=>{Qs({from:\"type.text\",replacement:\"link\",version:\"3.0.0\",scope:\"props\",ref:\"https://element-plus.org/en-US/component/button.html#button-attributes\"},O(()=>e.type===\"text\"));const n=Fe(TC,void 0),r=Cd(\"button\"),{form:s}=xn(),o=sn(O(()=>n==null?void 0:n.size)),a=On(),i=W(),l=an(),u=O(()=>e.type||(n==null?void 0:n.type)||\"\"),f=O(()=>{var b,p,g;return(g=(p=e.autoInsertSpace)!=null?p:(b=r.value)==null?void 0:b.autoInsertSpace)!=null?g:!1}),d=O(()=>e.tag===\"button\"?{ariaDisabled:a.value||e.loading,disabled:a.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=O(()=>{var b;const p=(b=l.default)==null?void 0:b.call(l);if(f.value&&(p==null?void 0:p.length)===1){const g=p[0];if((g==null?void 0:g.type)===sa){const m=g.children;return new RegExp(\"^\\\\p{Unified_Ideograph}{2}$\",\"u\").test(m.trim())}}return!1});return{_disabled:a,_size:o,_type:u,_ref:i,_props:d,shouldAddSpace:h,handleClick:b=>{if(a.value||e.loading){b.stopPropagation();return}e.nativeType===\"reset\"&&(s==null||s.resetFields()),t(\"click\",b)}}},Ah=[\"default\",\"primary\",\"success\",\"warning\",\"info\",\"danger\",\"text\",\"\"],jN=[\"button\",\"submit\",\"reset\"],$h=xe({size:on,disabled:Boolean,type:{type:String,values:Ah,default:\"\"},icon:{type:Nt},nativeType:{type:String,values:jN,default:\"button\"},loading:Boolean,loadingIcon:{type:Nt,default:()=>ts},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:ie([String,Object]),default:\"button\"}}),UN={click:e=>e instanceof MouseEvent};function Rn(e,t){qN(e)&&(e=\"100%\");var n=YN(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),n&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function bc(e){return Math.min(1,Math.max(0,e))}function qN(e){return typeof e==\"string\"&&e.indexOf(\".\")!==-1&&parseFloat(e)===1}function YN(e){return typeof e==\"string\"&&e.indexOf(\"%\")!==-1}function RC(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function yc(e){return e<=1?\"\".concat(Number(e)*100,\"%\"):e}function Lo(e){return e.length===1?\"0\"+e:String(e)}function GN(e,t,n){return{r:Rn(e,255)*255,g:Rn(t,255)*255,b:Rn(n,255)*255}}function F_(e,t,n){e=Rn(e,255),t=Rn(t,255),n=Rn(n,255);var r=Math.max(e,t,n),s=Math.min(e,t,n),o=0,a=0,i=(r+s)/2;if(r===s)a=0,o=0;else{var l=r-s;switch(a=i>.5?l/(2-r-s):l/(r+s),r){case e:o=(t-n)/l+(t<n?6:0);break;case t:o=(n-e)/l+2;break;case n:o=(e-t)/l+4;break}o/=6}return{h:o,s:a,l:i}}function Cf(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+(t-e)*(6*n):n<1/2?t:n<2/3?e+(t-e)*(2/3-n)*6:e}function XN(e,t,n){var r,s,o;if(e=Rn(e,360),t=Rn(t,100),n=Rn(n,100),t===0)s=n,o=n,r=n;else{var a=n<.5?n*(1+t):n+t-n*t,i=2*n-a;r=Cf(i,a,e+1/3),s=Cf(i,a,e),o=Cf(i,a,e-1/3)}return{r:r*255,g:s*255,b:o*255}}function H_(e,t,n){e=Rn(e,255),t=Rn(t,255),n=Rn(n,255);var r=Math.max(e,t,n),s=Math.min(e,t,n),o=0,a=r,i=r-s,l=r===0?0:i/r;if(r===s)o=0;else{switch(r){case e:o=(t-n)/i+(t<n?6:0);break;case t:o=(n-e)/i+2;break;case n:o=(e-t)/i+4;break}o/=6}return{h:o,s:l,v:a}}function JN(e,t,n){e=Rn(e,360)*6,t=Rn(t,100),n=Rn(n,100);var r=Math.floor(e),s=e-r,o=n*(1-t),a=n*(1-s*t),i=n*(1-(1-s)*t),l=r%6,u=[n,a,o,o,i,n][l],f=[i,n,n,a,o,o][l],d=[o,o,i,n,n,a][l];return{r:u*255,g:f*255,b:d*255}}function V_(e,t,n,r){var s=[Lo(Math.round(e).toString(16)),Lo(Math.round(t).toString(16)),Lo(Math.round(n).toString(16))];return r&&s[0].startsWith(s[0].charAt(1))&&s[1].startsWith(s[1].charAt(1))&&s[2].startsWith(s[2].charAt(1))?s[0].charAt(0)+s[1].charAt(0)+s[2].charAt(0):s.join(\"\")}function ZN(e,t,n,r,s){var o=[Lo(Math.round(e).toString(16)),Lo(Math.round(t).toString(16)),Lo(Math.round(n).toString(16)),Lo(QN(r))];return s&&o[0].startsWith(o[0].charAt(1))&&o[1].startsWith(o[1].charAt(1))&&o[2].startsWith(o[2].charAt(1))&&o[3].startsWith(o[3].charAt(1))?o[0].charAt(0)+o[1].charAt(0)+o[2].charAt(0)+o[3].charAt(0):o.join(\"\")}function QN(e){return Math.round(parseFloat(e)*255).toString(16)}function z_(e){return rr(e)/255}function rr(e){return parseInt(e,16)}function e5(e){return{r:e>>16,g:(e&65280)>>8,b:e&255}}var Lh={aliceblue:\"#f0f8ff\",antiquewhite:\"#faebd7\",aqua:\"#00ffff\",aquamarine:\"#7fffd4\",azure:\"#f0ffff\",beige:\"#f5f5dc\",bisque:\"#ffe4c4\",black:\"#000000\",blanchedalmond:\"#ffebcd\",blue:\"#0000ff\",blueviolet:\"#8a2be2\",brown:\"#a52a2a\",burlywood:\"#deb887\",cadetblue:\"#5f9ea0\",chartreuse:\"#7fff00\",chocolate:\"#d2691e\",coral:\"#ff7f50\",cornflowerblue:\"#6495ed\",cornsilk:\"#fff8dc\",crimson:\"#dc143c\",cyan:\"#00ffff\",darkblue:\"#00008b\",darkcyan:\"#008b8b\",darkgoldenrod:\"#b8860b\",darkgray:\"#a9a9a9\",darkgreen:\"#006400\",darkgrey:\"#a9a9a9\",darkkhaki:\"#bdb76b\",darkmagenta:\"#8b008b\",darkolivegreen:\"#556b2f\",darkorange:\"#ff8c00\",darkorchid:\"#9932cc\",darkred:\"#8b0000\",darksalmon:\"#e9967a\",darkseagreen:\"#8fbc8f\",darkslateblue:\"#483d8b\",darkslategray:\"#2f4f4f\",darkslategrey:\"#2f4f4f\",darkturquoise:\"#00ced1\",darkviolet:\"#9400d3\",deeppink:\"#ff1493\",deepskyblue:\"#00bfff\",dimgray:\"#696969\",dimgrey:\"#696969\",dodgerblue:\"#1e90ff\",firebrick:\"#b22222\",floralwhite:\"#fffaf0\",forestgreen:\"#228b22\",fuchsia:\"#ff00ff\",gainsboro:\"#dcdcdc\",ghostwhite:\"#f8f8ff\",goldenrod:\"#daa520\",gold:\"#ffd700\",gray:\"#808080\",green:\"#008000\",greenyellow:\"#adff2f\",grey:\"#808080\",honeydew:\"#f0fff0\",hotpink:\"#ff69b4\",indianred:\"#cd5c5c\",indigo:\"#4b0082\",ivory:\"#fffff0\",khaki:\"#f0e68c\",lavenderblush:\"#fff0f5\",lavender:\"#e6e6fa\",lawngreen:\"#7cfc00\",lemonchiffon:\"#fffacd\",lightblue:\"#add8e6\",lightcoral:\"#f08080\",lightcyan:\"#e0ffff\",lightgoldenrodyellow:\"#fafad2\",lightgray:\"#d3d3d3\",lightgreen:\"#90ee90\",lightgrey:\"#d3d3d3\",lightpink:\"#ffb6c1\",lightsalmon:\"#ffa07a\",lightseagreen:\"#20b2aa\",lightskyblue:\"#87cefa\",lightslategray:\"#778899\",lightslategrey:\"#778899\",lightsteelblue:\"#b0c4de\",lightyellow:\"#ffffe0\",lime:\"#00ff00\",limegreen:\"#32cd32\",linen:\"#faf0e6\",magenta:\"#ff00ff\",maroon:\"#800000\",mediumaquamarine:\"#66cdaa\",mediumblue:\"#0000cd\",mediumorchid:\"#ba55d3\",mediumpurple:\"#9370db\",mediumseagreen:\"#3cb371\",mediumslateblue:\"#7b68ee\",mediumspringgreen:\"#00fa9a\",mediumturquoise:\"#48d1cc\",mediumvioletred:\"#c71585\",midnightblue:\"#191970\",mintcream:\"#f5fffa\",mistyrose:\"#ffe4e1\",moccasin:\"#ffe4b5\",navajowhite:\"#ffdead\",navy:\"#000080\",oldlace:\"#fdf5e6\",olive:\"#808000\",olivedrab:\"#6b8e23\",orange:\"#ffa500\",orangered:\"#ff4500\",orchid:\"#da70d6\",palegoldenrod:\"#eee8aa\",palegreen:\"#98fb98\",paleturquoise:\"#afeeee\",palevioletred:\"#db7093\",papayawhip:\"#ffefd5\",peachpuff:\"#ffdab9\",peru:\"#cd853f\",pink:\"#ffc0cb\",plum:\"#dda0dd\",powderblue:\"#b0e0e6\",purple:\"#800080\",rebeccapurple:\"#663399\",red:\"#ff0000\",rosybrown:\"#bc8f8f\",royalblue:\"#4169e1\",saddlebrown:\"#8b4513\",salmon:\"#fa8072\",sandybrown:\"#f4a460\",seagreen:\"#2e8b57\",seashell:\"#fff5ee\",sienna:\"#a0522d\",silver:\"#c0c0c0\",skyblue:\"#87ceeb\",slateblue:\"#6a5acd\",slategray:\"#708090\",slategrey:\"#708090\",snow:\"#fffafa\",springgreen:\"#00ff7f\",steelblue:\"#4682b4\",tan:\"#d2b48c\",teal:\"#008080\",thistle:\"#d8bfd8\",tomato:\"#ff6347\",turquoise:\"#40e0d0\",violet:\"#ee82ee\",wheat:\"#f5deb3\",white:\"#ffffff\",whitesmoke:\"#f5f5f5\",yellow:\"#ffff00\",yellowgreen:\"#9acd32\"};function t5(e){var t={r:0,g:0,b:0},n=1,r=null,s=null,o=null,a=!1,i=!1;return typeof e==\"string\"&&(e=s5(e)),typeof e==\"object\"&&(ps(e.r)&&ps(e.g)&&ps(e.b)?(t=GN(e.r,e.g,e.b),a=!0,i=String(e.r).substr(-1)===\"%\"?\"prgb\":\"rgb\"):ps(e.h)&&ps(e.s)&&ps(e.v)?(r=yc(e.s),s=yc(e.v),t=JN(e.h,r,s),a=!0,i=\"hsv\"):ps(e.h)&&ps(e.s)&&ps(e.l)&&(r=yc(e.s),o=yc(e.l),t=XN(e.h,r,o),a=!0,i=\"hsl\"),Object.prototype.hasOwnProperty.call(e,\"a\")&&(n=e.a)),n=RC(n),{ok:a,format:e.format||i,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:n}}var n5=\"[-\\\\+]?\\\\d+%?\",r5=\"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\",Gs=\"(?:\".concat(r5,\")|(?:\").concat(n5,\")\"),kf=\"[\\\\s|\\\\(]+(\".concat(Gs,\")[,|\\\\s]+(\").concat(Gs,\")[,|\\\\s]+(\").concat(Gs,\")\\\\s*\\\\)?\"),Ef=\"[\\\\s|\\\\(]+(\".concat(Gs,\")[,|\\\\s]+(\").concat(Gs,\")[,|\\\\s]+(\").concat(Gs,\")[,|\\\\s]+(\").concat(Gs,\")\\\\s*\\\\)?\"),Er={CSS_UNIT:new RegExp(Gs),rgb:new RegExp(\"rgb\"+kf),rgba:new RegExp(\"rgba\"+Ef),hsl:new RegExp(\"hsl\"+kf),hsla:new RegExp(\"hsla\"+Ef),hsv:new RegExp(\"hsv\"+kf),hsva:new RegExp(\"hsva\"+Ef),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function s5(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(Lh[e])e=Lh[e],t=!0;else if(e===\"transparent\")return{r:0,g:0,b:0,a:0,format:\"name\"};var n=Er.rgb.exec(e);return n?{r:n[1],g:n[2],b:n[3]}:(n=Er.rgba.exec(e),n?{r:n[1],g:n[2],b:n[3],a:n[4]}:(n=Er.hsl.exec(e),n?{h:n[1],s:n[2],l:n[3]}:(n=Er.hsla.exec(e),n?{h:n[1],s:n[2],l:n[3],a:n[4]}:(n=Er.hsv.exec(e),n?{h:n[1],s:n[2],v:n[3]}:(n=Er.hsva.exec(e),n?{h:n[1],s:n[2],v:n[3],a:n[4]}:(n=Er.hex8.exec(e),n?{r:rr(n[1]),g:rr(n[2]),b:rr(n[3]),a:z_(n[4]),format:t?\"name\":\"hex8\"}:(n=Er.hex6.exec(e),n?{r:rr(n[1]),g:rr(n[2]),b:rr(n[3]),format:t?\"name\":\"hex\"}:(n=Er.hex4.exec(e),n?{r:rr(n[1]+n[1]),g:rr(n[2]+n[2]),b:rr(n[3]+n[3]),a:z_(n[4]+n[4]),format:t?\"name\":\"hex8\"}:(n=Er.hex3.exec(e),n?{r:rr(n[1]+n[1]),g:rr(n[2]+n[2]),b:rr(n[3]+n[3]),format:t?\"name\":\"hex\"}:!1)))))))))}function ps(e){return!!Er.CSS_UNIT.exec(String(e))}var xC=function(){function e(t,n){t===void 0&&(t=\"\"),n===void 0&&(n={});var r;if(t instanceof e)return t;typeof t==\"number\"&&(t=e5(t)),this.originalInput=t;var s=t5(t);this.originalInput=t,this.r=s.r,this.g=s.g,this.b=s.b,this.a=s.a,this.roundA=Math.round(100*this.a)/100,this.format=(r=n.format)!==null&&r!==void 0?r:s.format,this.gradientType=n.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=s.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),n,r,s,o=t.r/255,a=t.g/255,i=t.b/255;return o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),i<=.03928?s=i/12.92:s=Math.pow((i+.055)/1.055,2.4),.2126*n+.7152*r+.0722*s},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=RC(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=H_(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=H_(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),s=Math.round(t.v*100);return this.a===1?\"hsv(\".concat(n,\", \").concat(r,\"%, \").concat(s,\"%)\"):\"hsva(\".concat(n,\", \").concat(r,\"%, \").concat(s,\"%, \").concat(this.roundA,\")\")},e.prototype.toHsl=function(){var t=F_(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=F_(this.r,this.g,this.b),n=Math.round(t.h*360),r=Math.round(t.s*100),s=Math.round(t.l*100);return this.a===1?\"hsl(\".concat(n,\", \").concat(r,\"%, \").concat(s,\"%)\"):\"hsla(\".concat(n,\", \").concat(r,\"%, \").concat(s,\"%, \").concat(this.roundA,\")\")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),V_(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),\"#\"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),ZN(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),\"#\"+this.toHex8(t)},e.prototype.toHexShortString=function(t){return t===void 0&&(t=!1),this.a===1?this.toHexString(t):this.toHex8String(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),n=Math.round(this.g),r=Math.round(this.b);return this.a===1?\"rgb(\".concat(t,\", \").concat(n,\", \").concat(r,\")\"):\"rgba(\".concat(t,\", \").concat(n,\", \").concat(r,\", \").concat(this.roundA,\")\")},e.prototype.toPercentageRgb=function(){var t=function(n){return\"\".concat(Math.round(Rn(n,255)*100),\"%\")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(n){return Math.round(Rn(n,255)*100)};return this.a===1?\"rgb(\".concat(t(this.r),\"%, \").concat(t(this.g),\"%, \").concat(t(this.b),\"%)\"):\"rgba(\".concat(t(this.r),\"%, \").concat(t(this.g),\"%, \").concat(t(this.b),\"%, \").concat(this.roundA,\")\")},e.prototype.toName=function(){if(this.a===0)return\"transparent\";if(this.a<1)return!1;for(var t=\"#\"+V_(this.r,this.g,this.b,!1),n=0,r=Object.entries(Lh);n<r.length;n++){var s=r[n],o=s[0],a=s[1];if(t===a)return o}return!1},e.prototype.toString=function(t){var n=!!t;t=t??this.format;var r=!1,s=this.a<1&&this.a>=0,o=!n&&s&&(t.startsWith(\"hex\")||t===\"name\");return o?t===\"name\"&&this.a===0?this.toName():this.toRgbString():(t===\"rgb\"&&(r=this.toRgbString()),t===\"prgb\"&&(r=this.toPercentageRgbString()),(t===\"hex\"||t===\"hex6\")&&(r=this.toHexString()),t===\"hex3\"&&(r=this.toHexString(!0)),t===\"hex4\"&&(r=this.toHex8String(!0)),t===\"hex8\"&&(r=this.toHex8String()),t===\"name\"&&(r=this.toName()),t===\"hsl\"&&(r=this.toHslString()),t===\"hsv\"&&(r=this.toHsvString()),r||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l+=t/100,n.l=bc(n.l),new e(n)},e.prototype.brighten=function(t){t===void 0&&(t=10);var n=this.toRgb();return n.r=Math.max(0,Math.min(255,n.r-Math.round(255*-(t/100)))),n.g=Math.max(0,Math.min(255,n.g-Math.round(255*-(t/100)))),n.b=Math.max(0,Math.min(255,n.b-Math.round(255*-(t/100)))),new e(n)},e.prototype.darken=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.l-=t/100,n.l=bc(n.l),new e(n)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix(\"white\",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix(\"black\",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s-=t/100,n.s=bc(n.s),new e(n)},e.prototype.saturate=function(t){t===void 0&&(t=10);var n=this.toHsl();return n.s+=t/100,n.s=bc(n.s),new e(n)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var n=this.toHsl(),r=(n.h+t)%360;return n.h=r<0?360+r:r,new e(n)},e.prototype.mix=function(t,n){n===void 0&&(n=50);var r=this.toRgb(),s=new e(t).toRgb(),o=n/100,a={r:(s.r-r.r)*o+r.r,g:(s.g-r.g)*o+r.g,b:(s.b-r.b)*o+r.b,a:(s.a-r.a)*o+r.a};return new e(a)},e.prototype.analogous=function(t,n){t===void 0&&(t=6),n===void 0&&(n=30);var r=this.toHsl(),s=360/n,o=[this];for(r.h=(r.h-(s*t>>1)+720)%360;--t;)r.h=(r.h+s)%360,o.push(new e(r));return o},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var n=this.toHsv(),r=n.h,s=n.s,o=n.v,a=[],i=1/t;t--;)a.push(new e({h:r,s,v:o})),o=(o+i)%1;return a},e.prototype.splitcomplement=function(){var t=this.toHsl(),n=t.h;return[this,new e({h:(n+72)%360,s:t.s,l:t.l}),new e({h:(n+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var n=this.toRgb(),r=new e(t).toRgb(),s=n.a+r.a*(1-n.a);return new e({r:(n.r*n.a+r.r*r.a*(1-n.a))/s,g:(n.g*n.a+r.g*r.a*(1-n.a))/s,b:(n.b*n.a+r.b*r.a*(1-n.a))/s,a:s})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var n=this.toHsl(),r=n.h,s=[this],o=360/t,a=1;a<t;a++)s.push(new e({h:(r+a*o)%360,s:n.s,l:n.l}));return s},e.prototype.equals=function(t){return this.toRgbString()===new e(t).toRgbString()},e}();function Ns(e,t=20){return e.mix(\"#141414\",t).toString()}function o5(e){const t=On(),n=we(\"button\");return O(()=>{let r={},s=e.color;if(s){const o=s.match(/var\\((.*?)\\)/);o&&(s=window.getComputedStyle(window.document.documentElement).getPropertyValue(o[1]));const a=new xC(s),i=e.dark?a.tint(20).toString():Ns(a,20);if(e.plain)r=n.cssVarBlock({\"bg-color\":e.dark?Ns(a,90):a.tint(90).toString(),\"text-color\":s,\"border-color\":e.dark?Ns(a,50):a.tint(50).toString(),\"hover-text-color\":`var(${n.cssVarName(\"color-white\")})`,\"hover-bg-color\":s,\"hover-border-color\":s,\"active-bg-color\":i,\"active-text-color\":`var(${n.cssVarName(\"color-white\")})`,\"active-border-color\":i}),t.value&&(r[n.cssVarBlockName(\"disabled-bg-color\")]=e.dark?Ns(a,90):a.tint(90).toString(),r[n.cssVarBlockName(\"disabled-text-color\")]=e.dark?Ns(a,50):a.tint(50).toString(),r[n.cssVarBlockName(\"disabled-border-color\")]=e.dark?Ns(a,80):a.tint(80).toString());else{const l=e.dark?Ns(a,30):a.tint(30).toString(),u=a.isDark()?`var(${n.cssVarName(\"color-white\")})`:`var(${n.cssVarName(\"color-black\")})`;if(r=n.cssVarBlock({\"bg-color\":s,\"text-color\":u,\"border-color\":s,\"hover-bg-color\":l,\"hover-text-color\":u,\"hover-border-color\":l,\"active-bg-color\":i,\"active-border-color\":i}),t.value){const f=e.dark?Ns(a,50):a.tint(50).toString();r[n.cssVarBlockName(\"disabled-bg-color\")]=f,r[n.cssVarBlockName(\"disabled-text-color\")]=e.dark?\"rgba(255, 255, 255, 0.5)\":`var(${n.cssVarName(\"color-white\")})`,r[n.cssVarBlockName(\"disabled-border-color\")]=f}}}return r})}const i5=ee({name:\"ElButton\"}),a5=ee({...i5,props:$h,emits:UN,setup(e,{expose:t,emit:n}){const r=e,s=o5(r),o=we(\"button\"),{_ref:a,_size:i,_type:l,_disabled:u,_props:f,shouldAddSpace:d,handleClick:h}=KN(r,n),v=O(()=>[o.b(),o.m(l.value),o.m(i.value),o.is(\"disabled\",u.value),o.is(\"loading\",r.loading),o.is(\"plain\",r.plain),o.is(\"round\",r.round),o.is(\"circle\",r.circle),o.is(\"text\",r.text),o.is(\"link\",r.link),o.is(\"has-bg\",r.bg)]);return t({ref:a,size:i,type:l,disabled:u,shouldAddSpace:d}),(b,p)=>($(),ve(dt(b.tag),ft({ref_key:\"_ref\",ref:a},c(f),{class:c(v),style:c(s),onClick:c(h)}),{default:q(()=>[b.loading?($(),X(We,{key:0},[b.$slots.loading?ue(b.$slots,\"loading\",{key:0}):($(),ve(c(He),{key:1,class:D(c(o).is(\"loading\"))},{default:q(()=>[($(),ve(dt(b.loadingIcon)))]),_:1},8,[\"class\"]))],64)):b.icon||b.$slots.icon?($(),ve(c(He),{key:1},{default:q(()=>[b.icon?($(),ve(dt(b.icon),{key:0})):ue(b.$slots,\"icon\",{key:1})]),_:3})):de(\"v-if\",!0),b.$slots.default?($(),X(\"span\",{key:2,class:D({[c(o).em(\"text\",\"expand\")]:c(d)})},[ue(b.$slots,\"default\")],2)):de(\"v-if\",!0)]),_:3},16,[\"class\",\"style\",\"onClick\"]))}});var l5=Oe(a5,[[\"__file\",\"button.vue\"]]);const c5={size:$h.size,type:$h.type},u5=ee({name:\"ElButtonGroup\"}),d5=ee({...u5,props:c5,setup(e){const t=e;pt(TC,St({size:At(t,\"size\"),type:At(t,\"type\")}));const n=we(\"button\");return(r,s)=>($(),X(\"div\",{class:D(c(n).b(\"group\"))},[ue(r.$slots,\"default\")],2))}});var OC=Oe(d5,[[\"__file\",\"button-group.vue\"]]);const cn=Qe(l5,{ButtonGroup:OC}),Jv=Gt(OC);function Ls(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\"default\")?e.default:e}var Wc={exports:{}},f5=Wc.exports,W_;function h5(){return W_||(W_=1,function(e,t){(function(n,r){e.exports=r()})(f5,function(){var n=1e3,r=6e4,s=36e5,o=\"millisecond\",a=\"second\",i=\"minute\",l=\"hour\",u=\"day\",f=\"week\",d=\"month\",h=\"quarter\",v=\"year\",b=\"date\",p=\"Invalid Date\",g=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,m=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,y={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(G){var V=[\"th\",\"st\",\"nd\",\"rd\"],I=G%100;return\"[\"+G+(V[(I-20)%10]||V[I]||V[0])+\"]\"}},_=function(G,V,I){var j=String(G);return!j||j.length>=V?G:\"\"+Array(V+1-j.length).join(I)+G},w={s:_,z:function(G){var V=-G.utcOffset(),I=Math.abs(V),j=Math.floor(I/60),F=I%60;return(V<=0?\"+\":\"-\")+_(j,2,\"0\")+\":\"+_(F,2,\"0\")},m:function G(V,I){if(V.date()<I.date())return-G(I,V);var j=12*(I.year()-V.year())+(I.month()-V.month()),F=V.clone().add(j,d),R=I-F<0,B=V.clone().add(j+(R?-1:1),d);return+(-(j+(I-F)/(R?F-B:B-F))||0)},a:function(G){return G<0?Math.ceil(G)||0:Math.floor(G)},p:function(G){return{M:d,y:v,w:f,d:u,D:b,h:l,m:i,s:a,ms:o,Q:h}[G]||String(G||\"\").toLowerCase().replace(/s$/,\"\")},u:function(G){return G===void 0}},S=\"en\",C={};C[S]=y;var E=\"$isDayjsObject\",k=function(G){return G instanceof A||!(!G||!G[E])},T=function G(V,I,j){var F;if(!V)return S;if(typeof V==\"string\"){var R=V.toLowerCase();C[R]&&(F=R),I&&(C[R]=I,F=R);var B=V.split(\"-\");if(!F&&B.length>1)return G(B[0])}else{var N=V.name;C[N]=V,F=N}return!j&&F&&(S=F),F||!j&&S},x=function(G,V){if(k(G))return G.clone();var I=typeof V==\"object\"?V:{};return I.date=G,I.args=arguments,new A(I)},M=w;M.l=T,M.i=k,M.w=function(G,V){return x(G,{locale:V.$L,utc:V.$u,x:V.$x,$offset:V.$offset})};var A=function(){function G(I){this.$L=T(I.locale,null,!0),this.parse(I),this.$x=this.$x||I.x||{},this[E]=!0}var V=G.prototype;return V.parse=function(I){this.$d=function(j){var F=j.date,R=j.utc;if(F===null)return new Date(NaN);if(M.u(F))return new Date;if(F instanceof Date)return new Date(F);if(typeof F==\"string\"&&!/Z$/i.test(F)){var B=F.match(g);if(B){var N=B[2]-1||0,U=(B[7]||\"0\").substring(0,3);return R?new Date(Date.UTC(B[1],N,B[3]||1,B[4]||0,B[5]||0,B[6]||0,U)):new Date(B[1],N,B[3]||1,B[4]||0,B[5]||0,B[6]||0,U)}}return new Date(F)}(I),this.init()},V.init=function(){var I=this.$d;this.$y=I.getFullYear(),this.$M=I.getMonth(),this.$D=I.getDate(),this.$W=I.getDay(),this.$H=I.getHours(),this.$m=I.getMinutes(),this.$s=I.getSeconds(),this.$ms=I.getMilliseconds()},V.$utils=function(){return M},V.isValid=function(){return this.$d.toString()!==p},V.isSame=function(I,j){var F=x(I);return this.startOf(j)<=F&&F<=this.endOf(j)},V.isAfter=function(I,j){return x(I)<this.startOf(j)},V.isBefore=function(I,j){return this.endOf(j)<x(I)},V.$g=function(I,j,F){return M.u(I)?this[j]:this.set(F,I)},V.unix=function(){return Math.floor(this.valueOf()/1e3)},V.valueOf=function(){return this.$d.getTime()},V.startOf=function(I,j){var F=this,R=!!M.u(j)||j,B=M.p(I),N=function(te,oe){var he=M.w(F.$u?Date.UTC(F.$y,oe,te):new Date(F.$y,oe,te),F);return R?he:he.endOf(u)},U=function(te,oe){return M.w(F.toDate()[te].apply(F.toDate(\"s\"),(R?[0,0,0,0]:[23,59,59,999]).slice(oe)),F)},J=this.$W,re=this.$M,le=this.$D,pe=\"set\"+(this.$u?\"UTC\":\"\");switch(B){case v:return R?N(1,0):N(31,11);case d:return R?N(1,re):N(0,re+1);case f:var K=this.$locale().weekStart||0,z=(J<K?J+7:J)-K;return N(R?le-z:le+(6-z),re);case u:case b:return U(pe+\"Hours\",0);case l:return U(pe+\"Minutes\",1);case i:return U(pe+\"Seconds\",2);case a:return U(pe+\"Milliseconds\",3);default:return this.clone()}},V.endOf=function(I){return this.startOf(I,!1)},V.$set=function(I,j){var F,R=M.p(I),B=\"set\"+(this.$u?\"UTC\":\"\"),N=(F={},F[u]=B+\"Date\",F[b]=B+\"Date\",F[d]=B+\"Month\",F[v]=B+\"FullYear\",F[l]=B+\"Hours\",F[i]=B+\"Minutes\",F[a]=B+\"Seconds\",F[o]=B+\"Milliseconds\",F)[R],U=R===u?this.$D+(j-this.$W):j;if(R===d||R===v){var J=this.clone().set(b,1);J.$d[N](U),J.init(),this.$d=J.set(b,Math.min(this.$D,J.daysInMonth())).$d}else N&&this.$d[N](U);return this.init(),this},V.set=function(I,j){return this.clone().$set(I,j)},V.get=function(I){return this[M.p(I)]()},V.add=function(I,j){var F,R=this;I=Number(I);var B=M.p(j),N=function(re){var le=x(R);return M.w(le.date(le.date()+Math.round(re*I)),R)};if(B===d)return this.set(d,this.$M+I);if(B===v)return this.set(v,this.$y+I);if(B===u)return N(1);if(B===f)return N(7);var U=(F={},F[i]=r,F[l]=s,F[a]=n,F)[B]||1,J=this.$d.getTime()+I*U;return M.w(J,this)},V.subtract=function(I,j){return this.add(-1*I,j)},V.format=function(I){var j=this,F=this.$locale();if(!this.isValid())return F.invalidDate||p;var R=I||\"YYYY-MM-DDTHH:mm:ssZ\",B=M.z(this),N=this.$H,U=this.$m,J=this.$M,re=F.weekdays,le=F.months,pe=F.meridiem,K=function(oe,he,Y,L){return oe&&(oe[he]||oe(j,R))||Y[he].slice(0,L)},z=function(oe){return M.s(N%12||12,oe,\"0\")},te=pe||function(oe,he,Y){var L=oe<12?\"AM\":\"PM\";return Y?L.toLowerCase():L};return R.replace(m,function(oe,he){return he||function(Y){switch(Y){case\"YY\":return String(j.$y).slice(-2);case\"YYYY\":return M.s(j.$y,4,\"0\");case\"M\":return J+1;case\"MM\":return M.s(J+1,2,\"0\");case\"MMM\":return K(F.monthsShort,J,le,3);case\"MMMM\":return K(le,J);case\"D\":return j.$D;case\"DD\":return M.s(j.$D,2,\"0\");case\"d\":return String(j.$W);case\"dd\":return K(F.weekdaysMin,j.$W,re,2);case\"ddd\":return K(F.weekdaysShort,j.$W,re,3);case\"dddd\":return re[j.$W];case\"H\":return String(N);case\"HH\":return M.s(N,2,\"0\");case\"h\":return z(1);case\"hh\":return z(2);case\"a\":return te(N,U,!0);case\"A\":return te(N,U,!1);case\"m\":return String(U);case\"mm\":return M.s(U,2,\"0\");case\"s\":return String(j.$s);case\"ss\":return M.s(j.$s,2,\"0\");case\"SSS\":return M.s(j.$ms,3,\"0\");case\"Z\":return B}return null}(oe)||B.replace(\":\",\"\")})},V.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},V.diff=function(I,j,F){var R,B=this,N=M.p(j),U=x(I),J=(U.utcOffset()-this.utcOffset())*r,re=this-U,le=function(){return M.m(B,U)};switch(N){case v:R=le()/12;break;case d:R=le();break;case h:R=le()/3;break;case f:R=(re-J)/6048e5;break;case u:R=(re-J)/864e5;break;case l:R=re/s;break;case i:R=re/r;break;case a:R=re/n;break;default:R=re}return F?R:M.a(R)},V.daysInMonth=function(){return this.endOf(d).$D},V.$locale=function(){return C[this.$L]},V.locale=function(I,j){if(!I)return this.$L;var F=this.clone(),R=T(I,j,!0);return R&&(F.$L=R),F},V.clone=function(){return M.w(this.$d,this)},V.toDate=function(){return new Date(this.valueOf())},V.toJSON=function(){return this.isValid()?this.toISOString():null},V.toISOString=function(){return this.$d.toISOString()},V.toString=function(){return this.$d.toUTCString()},G}(),P=A.prototype;return x.prototype=P,[[\"$ms\",o],[\"$s\",a],[\"$m\",i],[\"$H\",l],[\"$W\",u],[\"$M\",d],[\"$y\",v],[\"$D\",b]].forEach(function(G){P[G[1]]=function(V){return this.$g(V,G[0],G[1])}}),x.extend=function(G,V){return G.$i||(G(V,A,x),G.$i=!0),x},x.locale=T,x.isDayjs=k,x.unix=function(G){return x(1e3*G)},x.en=C[S],x.Ls=C,x.p={},x})}(Wc)),Wc.exports}var p5=h5();const Je=Ls(p5),Tf=(e,t)=>[e>0?e-1:void 0,e,e<t?e+1:void 0],eo=e=>Array.from(Array.from({length:e}).keys()),MC=e=>e.replace(/\\W?m{1,2}|\\W?ZZ/g,\"\").replace(/\\W?h{1,2}|\\W?s{1,3}|\\W?a/gi,\"\").trim(),AC=e=>e.replace(/\\W?D{1,2}|\\W?Do|\\W?d{1,4}|\\W?M{1,4}|\\W?Y{2,4}/g,\"\").trim(),K_=function(e,t){const n=no(e),r=no(t);return n&&r?e.getTime()===t.getTime():!n&&!r?e===t:!1},j_=function(e,t){const n=ke(e),r=ke(t);return n&&r?e.length!==t.length?!1:e.every((s,o)=>K_(s,t[o])):!n&&!r?K_(e,t):!1},U_=function(e,t,n){const r=sr(t)||t===\"x\"?Je(e).locale(n):Je(e,t).locale(n);return r.isValid()?r:void 0},q_=function(e,t,n){return sr(t)?e:t===\"x\"?+e:Je(e).locale(n).format(t)},Rf=(e,t)=>{var n;const r=[],s=t==null?void 0:t();for(let o=0;o<e;o++)r.push((n=s==null?void 0:s.includes(o))!=null?n:!1);return r},wc=e=>ke(e)?e.map(t=>t.toDate()):e.toDate(),v5=(e,t)=>{const n=e.subtract(1,\"month\").endOf(\"month\").date();return eo(t).map((r,s)=>n-(t-s-1))},m5=e=>{const t=e.daysInMonth();return eo(t).map((n,r)=>r+1)},g5=e=>eo(e.length/7).map(t=>{const n=t*7;return e.slice(n,n+7)}),_5=xe({selectedDay:{type:ie(Object)},range:{type:ie(Array)},date:{type:ie(Object),required:!0},hideHeader:{type:Boolean}}),b5={pick:e=>lt(e)};var Kc={exports:{}},y5=Kc.exports,Y_;function w5(){return Y_||(Y_=1,function(e,t){(function(n,r){e.exports=r()})(y5,function(){return function(n,r,s){var o=r.prototype,a=function(d){return d&&(d.indexOf?d:d.s)},i=function(d,h,v,b,p){var g=d.name?d:d.$locale(),m=a(g[h]),y=a(g[v]),_=m||y.map(function(S){return S.slice(0,b)});if(!p)return _;var w=g.weekStart;return _.map(function(S,C){return _[(C+(w||0))%7]})},l=function(){return s.Ls[s.locale()]},u=function(d,h){return d.formats[h]||function(v){return v.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(b,p,g){return p||g.slice(1)})}(d.formats[h.toUpperCase()])},f=function(){var d=this;return{months:function(h){return h?h.format(\"MMMM\"):i(d,\"months\")},monthsShort:function(h){return h?h.format(\"MMM\"):i(d,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return d.$locale().weekStart||0},weekdays:function(h){return h?h.format(\"dddd\"):i(d,\"weekdays\")},weekdaysMin:function(h){return h?h.format(\"dd\"):i(d,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(h){return h?h.format(\"ddd\"):i(d,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(h){return u(d.$locale(),h)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};o.localeData=function(){return f.bind(this)()},s.localeData=function(){var d=l();return{firstDayOfWeek:function(){return d.weekStart||0},weekdays:function(){return s.weekdays()},weekdaysShort:function(){return s.weekdaysShort()},weekdaysMin:function(){return s.weekdaysMin()},months:function(){return s.months()},monthsShort:function(){return s.monthsShort()},longDateFormat:function(h){return u(d,h)},meridiem:d.meridiem,ordinal:d.ordinal}},s.months=function(){return i(l(),\"months\")},s.monthsShort=function(){return i(l(),\"monthsShort\",\"months\",3)},s.weekdays=function(d){return i(l(),\"weekdays\",null,null,d)},s.weekdaysShort=function(d){return i(l(),\"weekdaysShort\",\"weekdays\",3,d)},s.weekdaysMin=function(d){return i(l(),\"weekdaysMin\",\"weekdays\",2,d)}}})}(Kc)),Kc.exports}var S5=w5();const $C=Ls(S5),C5=[\"year\",\"years\",\"month\",\"months\",\"date\",\"dates\",\"week\",\"datetime\",\"datetimerange\",\"daterange\",\"monthrange\",\"yearrange\"],xf=[\"sun\",\"mon\",\"tue\",\"wed\",\"thu\",\"fri\",\"sat\"],k5=(e,t)=>{Je.extend($C);const n=Je.localeData().firstDayOfWeek(),{t:r,lang:s}=yt(),o=Je().locale(s.value),a=O(()=>!!e.range&&!!e.range.length),i=O(()=>{let h=[];if(a.value){const[v,b]=e.range,p=eo(b.date()-v.date()+1).map(y=>({text:v.date()+y,type:\"current\"}));let g=p.length%7;g=g===0?0:7-g;const m=eo(g).map((y,_)=>({text:_+1,type:\"next\"}));h=p.concat(m)}else{const v=e.date.startOf(\"month\").day(),b=v5(e.date,(v-n+7)%7).map(y=>({text:y,type:\"prev\"})),p=m5(e.date).map(y=>({text:y,type:\"current\"}));h=[...b,...p];const g=7-(h.length%7||7),m=eo(g).map((y,_)=>({text:_+1,type:\"next\"}));h=h.concat(m)}return g5(h)}),l=O(()=>{const h=n;return h===0?xf.map(v=>r(`el.datepicker.weeks.${v}`)):xf.slice(h).concat(xf.slice(0,h)).map(v=>r(`el.datepicker.weeks.${v}`))}),u=(h,v)=>{switch(v){case\"prev\":return e.date.startOf(\"month\").subtract(1,\"month\").date(h);case\"next\":return e.date.startOf(\"month\").add(1,\"month\").date(h);case\"current\":return e.date.date(h)}};return{now:o,isInRange:a,rows:i,weekDays:l,getFormattedDate:u,handlePickDay:({text:h,type:v})=>{const b=u(h,v);t(\"pick\",b)},getSlotData:({text:h,type:v})=>{const b=u(h,v);return{isSelected:b.isSame(e.selectedDay),type:`${v}-month`,day:b.format(\"YYYY-MM-DD\"),date:b.toDate()}}}},E5=ee({name:\"DateTable\"}),T5=ee({...E5,props:_5,emits:b5,setup(e,{expose:t,emit:n}){const r=e,{isInRange:s,now:o,rows:a,weekDays:i,getFormattedDate:l,handlePickDay:u,getSlotData:f}=k5(r,n),d=we(\"calendar-table\"),h=we(\"calendar-day\"),v=({text:b,type:p})=>{const g=[p];if(p===\"current\"){const m=l(b,p);m.isSame(r.selectedDay,\"day\")&&g.push(h.is(\"selected\")),m.isSame(o,\"day\")&&g.push(h.is(\"today\"))}return g};return t({getFormattedDate:l}),(b,p)=>($(),X(\"table\",{class:D([c(d).b(),c(d).is(\"range\",c(s))]),cellspacing:\"0\",cellpadding:\"0\"},[b.hideHeader?de(\"v-if\",!0):($(),X(\"thead\",{key:0},[Z(\"tr\",null,[($(!0),X(We,null,vt(c(i),g=>($(),X(\"th\",{key:g,scope:\"col\"},Ee(g),1))),128))])])),Z(\"tbody\",null,[($(!0),X(We,null,vt(c(a),(g,m)=>($(),X(\"tr\",{key:m,class:D({[c(d).e(\"row\")]:!0,[c(d).em(\"row\",\"hide-border\")]:m===0&&b.hideHeader})},[($(!0),X(We,null,vt(g,(y,_)=>($(),X(\"td\",{key:_,class:D(v(y)),onClick:w=>c(u)(y)},[Z(\"div\",{class:D(c(h).b())},[ue(b.$slots,\"date-cell\",{data:c(f)(y)},()=>[Z(\"span\",null,Ee(y.text),1)])],2)],10,[\"onClick\"]))),128))],2))),128))])],2))}});var G_=Oe(T5,[[\"__file\",\"date-table.vue\"]]);const R5=(e,t)=>{const n=e.endOf(\"month\"),r=t.startOf(\"month\"),o=n.isSame(r,\"week\")?r.add(1,\"week\"):r;return[[e,n],[o.startOf(\"week\"),t]]},x5=(e,t)=>{const n=e.endOf(\"month\"),r=e.add(1,\"month\").startOf(\"month\"),s=n.isSame(r,\"week\")?r.add(1,\"week\"):r,o=s.endOf(\"month\"),a=t.startOf(\"month\"),i=o.isSame(a,\"week\")?a.add(1,\"week\"):a;return[[e,n],[s.startOf(\"week\"),o],[i.startOf(\"week\"),t]]},O5=(e,t,n)=>{const{lang:r}=yt(),s=W(),o=Je().locale(r.value),a=O({get(){return e.modelValue?l.value:s.value},set(g){if(!g)return;s.value=g;const m=g.toDate();t(Tn,m),t(ot,m)}}),i=O(()=>{if(!e.range||!ke(e.range)||e.range.length!==2||e.range.some(_=>!no(_)))return[];const g=e.range.map(_=>Je(_).locale(r.value)),[m,y]=g;return m.isAfter(y)?[]:m.isSame(y,\"month\")?v(m,y):m.add(1,\"month\").month()!==y.month()?[]:v(m,y)}),l=O(()=>e.modelValue?Je(e.modelValue).locale(r.value):a.value||(i.value.length?i.value[0][0]:o)),u=O(()=>l.value.subtract(1,\"month\").date(1)),f=O(()=>l.value.add(1,\"month\").date(1)),d=O(()=>l.value.subtract(1,\"year\").date(1)),h=O(()=>l.value.add(1,\"year\").date(1)),v=(g,m)=>{const y=g.startOf(\"week\"),_=m.endOf(\"week\"),w=y.get(\"month\"),S=_.get(\"month\");return w===S?[[y,_]]:(w+1)%12===S?R5(y,_):w+2===S||(w+1)%11===S?x5(y,_):[]},b=g=>{a.value=g};return{calculateValidatedDateRange:v,date:l,realSelectedDay:a,pickDay:b,selectDate:g=>{const y={\"prev-month\":u.value,\"next-month\":f.value,\"prev-year\":d.value,\"next-year\":h.value,today:o}[g];y.isSame(l.value,\"day\")||b(y)},validatedRange:i}},M5=e=>ke(e)&&e.length===2&&e.every(t=>no(t)),A5=xe({modelValue:{type:Date},range:{type:ie(Array),validator:M5}}),$5={[ot]:e=>no(e),[Tn]:e=>no(e)},L5=\"ElCalendar\",I5=ee({name:L5}),P5=ee({...I5,props:A5,emits:$5,setup(e,{expose:t,emit:n}){const r=e,s=we(\"calendar\"),{calculateValidatedDateRange:o,date:a,pickDay:i,realSelectedDay:l,selectDate:u,validatedRange:f}=O5(r,n),{t:d}=yt(),h=O(()=>{const v=`el.datepicker.month${a.value.format(\"M\")}`;return`${a.value.year()} ${d(\"el.datepicker.year\")} ${d(v)}`});return t({selectedDay:l,pickDay:i,selectDate:u,calculateValidatedDateRange:o}),(v,b)=>($(),X(\"div\",{class:D(c(s).b())},[Z(\"div\",{class:D(c(s).e(\"header\"))},[ue(v.$slots,\"header\",{date:c(h)},()=>[Z(\"div\",{class:D(c(s).e(\"title\"))},Ee(c(h)),3),c(f).length===0?($(),X(\"div\",{key:0,class:D(c(s).e(\"button-group\"))},[H(c(Jv),null,{default:q(()=>[H(c(cn),{size:\"small\",onClick:p=>c(u)(\"prev-month\")},{default:q(()=>[Ve(Ee(c(d)(\"el.datepicker.prevMonth\")),1)]),_:1},8,[\"onClick\"]),H(c(cn),{size:\"small\",onClick:p=>c(u)(\"today\")},{default:q(()=>[Ve(Ee(c(d)(\"el.datepicker.today\")),1)]),_:1},8,[\"onClick\"]),H(c(cn),{size:\"small\",onClick:p=>c(u)(\"next-month\")},{default:q(()=>[Ve(Ee(c(d)(\"el.datepicker.nextMonth\")),1)]),_:1},8,[\"onClick\"])]),_:1})],2)):de(\"v-if\",!0)])],2),c(f).length===0?($(),X(\"div\",{key:0,class:D(c(s).e(\"body\"))},[H(G_,{date:c(a),\"selected-day\":c(l),onPick:c(i)},_r({_:2},[v.$slots[\"date-cell\"]?{name:\"date-cell\",fn:q(p=>[ue(v.$slots,\"date-cell\",xr(ro(p)))])}:void 0]),1032,[\"date\",\"selected-day\",\"onPick\"])],2)):($(),X(\"div\",{key:1,class:D(c(s).e(\"body\"))},[($(!0),X(We,null,vt(c(f),(p,g)=>($(),ve(G_,{key:g,date:p[0],\"selected-day\":c(l),range:p,\"hide-header\":g!==0,onPick:c(i)},_r({_:2},[v.$slots[\"date-cell\"]?{name:\"date-cell\",fn:q(m=>[ue(v.$slots,\"date-cell\",xr(ro(m)))])}:void 0]),1032,[\"date\",\"selected-day\",\"range\",\"hide-header\",\"onPick\"]))),128))],2))],2))}});var D5=Oe(P5,[[\"__file\",\"calendar.vue\"]]);const B5=Qe(D5),N5=xe({header:{type:String,default:\"\"},footer:{type:String,default:\"\"},bodyStyle:{type:ie([String,Object,Array]),default:\"\"},bodyClass:String,shadow:{type:String,values:[\"always\",\"hover\",\"never\"],default:\"always\"}}),F5=ee({name:\"ElCard\"}),H5=ee({...F5,props:N5,setup(e){const t=we(\"card\");return(n,r)=>($(),X(\"div\",{class:D([c(t).b(),c(t).is(`${n.shadow}-shadow`)])},[n.$slots.header||n.header?($(),X(\"div\",{key:0,class:D(c(t).e(\"header\"))},[ue(n.$slots,\"header\",{},()=>[Ve(Ee(n.header),1)])],2)):de(\"v-if\",!0),Z(\"div\",{class:D([c(t).e(\"body\"),n.bodyClass]),style:Ue(n.bodyStyle)},[ue(n.$slots,\"default\")],6),n.$slots.footer||n.footer?($(),X(\"div\",{key:1,class:D(c(t).e(\"footer\"))},[ue(n.$slots,\"footer\",{},()=>[Ve(Ee(n.footer),1)])],2)):de(\"v-if\",!0)],2))}});var V5=Oe(H5,[[\"__file\",\"card.vue\"]]);const z5=Qe(V5),W5=xe({initialIndex:{type:Number,default:0},height:{type:String,default:\"\"},trigger:{type:String,values:[\"hover\",\"click\"],default:\"hover\"},autoplay:{type:Boolean,default:!0},interval:{type:Number,default:3e3},indicatorPosition:{type:String,values:[\"\",\"none\",\"outside\"],default:\"\"},arrow:{type:String,values:[\"always\",\"hover\",\"never\"],default:\"hover\"},type:{type:String,values:[\"\",\"card\"],default:\"\"},cardScale:{type:Number,default:.83},loop:{type:Boolean,default:!0},direction:{type:String,values:[\"horizontal\",\"vertical\"],default:\"horizontal\"},pauseOnHover:{type:Boolean,default:!0},motionBlur:Boolean}),K5={change:(e,t)=>[e,t].every(Ge)},LC=Symbol(\"carouselContextKey\"),Ih=\"ElCarouselItem\";var fr=(e=>(e[e.TEXT=1]=\"TEXT\",e[e.CLASS=2]=\"CLASS\",e[e.STYLE=4]=\"STYLE\",e[e.PROPS=8]=\"PROPS\",e[e.FULL_PROPS=16]=\"FULL_PROPS\",e[e.HYDRATE_EVENTS=32]=\"HYDRATE_EVENTS\",e[e.STABLE_FRAGMENT=64]=\"STABLE_FRAGMENT\",e[e.KEYED_FRAGMENT=128]=\"KEYED_FRAGMENT\",e[e.UNKEYED_FRAGMENT=256]=\"UNKEYED_FRAGMENT\",e[e.NEED_PATCH=512]=\"NEED_PATCH\",e[e.DYNAMIC_SLOTS=1024]=\"DYNAMIC_SLOTS\",e[e.HOISTED=-1]=\"HOISTED\",e[e.BAIL=-2]=\"BAIL\",e))(fr||{});function Ph(e){return Ut(e)&&e.type===We}function j5(e){return Ut(e)&&e.type===vn}function U5(e){return Ut(e)&&!Ph(e)&&!j5(e)}const q5=e=>{if(!Ut(e))return{};const t=e.props||{},n=(Ut(e.type)?e.type.props:void 0)||{},r={};return Object.keys(n).forEach(s=>{kt(n[s],\"default\")&&(r[s]=n[s].default)}),Object.keys(t).forEach(s=>{r[Yn(s)]=t[s]}),r},Y5=e=>{if(!ke(e)||e.length>1)throw new Error(\"expect to receive a single Vue element child\");return e[0]},to=e=>{const t=ke(e)?e:[e],n=[];return t.forEach(r=>{var s;ke(r)?n.push(...to(r)):Ut(r)&&((s=r.component)!=null&&s.subTree)?n.push(r,...to(r.component.subTree)):Ut(r)&&ke(r.children)?n.push(...to(r.children)):n.push(r)}),n},G5=(e,t,n)=>to(e.subTree).filter(o=>{var a;return Ut(o)&&((a=o.type)==null?void 0:a.name)===t&&!!o.component}).map(o=>o.component.uid).map(o=>n[o]).filter(o=>!!o),Zv=(e,t)=>{const n={},r=Wt([]);return{children:r,addChild:a=>{n[a.uid]=a,r.value=G5(e,t,n)},removeChild:a=>{delete n[a],r.value=r.value.filter(i=>i.uid!==a)}}},X_=300,X5=(e,t,n)=>{const{children:r,addChild:s,removeChild:o}=Zv(ct(),Ih),a=an(),i=W(-1),l=W(null),u=W(!1),f=W(),d=W(0),h=W(!0),v=W(!0),b=W(!1),p=O(()=>e.arrow!==\"never\"&&!c(y)),g=O(()=>r.value.some(pe=>pe.props.label.toString().length>0)),m=O(()=>e.type===\"card\"),y=O(()=>e.direction===\"vertical\"),_=O(()=>e.height!==\"auto\"?{height:e.height}:{height:`${d.value}px`,overflow:\"hidden\"}),w=zo(pe=>{x(pe)},X_,{trailing:!0}),S=zo(pe=>{R(pe)},X_),C=pe=>h.value?i.value<=1?pe<=1:pe>1:!0;function E(){l.value&&(clearInterval(l.value),l.value=null)}function k(){e.interval<=0||!e.autoplay||l.value||(l.value=setInterval(()=>T(),e.interval))}const T=()=>{v.value||(b.value=!0),v.value=!1,i.value<r.value.length-1?i.value=i.value+1:e.loop?i.value=0:b.value=!1};function x(pe){if(v.value||(b.value=!0),v.value=!1,ze(pe)){const te=r.value.filter(oe=>oe.props.name===pe);te.length>0&&(pe=r.value.indexOf(te[0]))}if(pe=Number(pe),Number.isNaN(pe)||pe!==Math.floor(pe))return;const K=r.value.length,z=i.value;pe<0?i.value=e.loop?K-1:0:pe>=K?i.value=e.loop?0:K-1:i.value=pe,z===i.value&&M(z),U()}function M(pe){r.value.forEach((K,z)=>{K.translateItem(z,i.value,pe)})}function A(pe,K){var z,te,oe,he;const Y=c(r),L=Y.length;if(L===0||!pe.states.inStage)return!1;const Q=K+1,se=K-1,ge=L-1,ae=Y[ge].states.active,_e=Y[0].states.active,me=(te=(z=Y[Q])==null?void 0:z.states)==null?void 0:te.active,Ce=(he=(oe=Y[se])==null?void 0:oe.states)==null?void 0:he.active;return K===ge&&_e||me?\"left\":K===0&&ae||Ce?\"right\":!1}function P(){u.value=!0,e.pauseOnHover&&E()}function G(){u.value=!1,k()}function V(){b.value=!1}function I(pe){c(y)||r.value.forEach((K,z)=>{pe===A(K,z)&&(K.states.hover=!0)})}function j(){c(y)||r.value.forEach(pe=>{pe.states.hover=!1})}function F(pe){pe!==i.value&&(v.value||(b.value=!0)),i.value=pe}function R(pe){e.trigger===\"hover\"&&pe!==i.value&&(i.value=pe,v.value||(b.value=!0))}function B(){x(i.value-1)}function N(){x(i.value+1)}function U(){E(),e.pauseOnHover||k()}function J(pe){e.height===\"auto\"&&(d.value=pe)}function re(){var pe;const K=(pe=a.default)==null?void 0:pe.call(a);if(!K)return null;const te=to(K).filter(oe=>Ut(oe)&&oe.type.name===Ih);return(te==null?void 0:te.length)===2&&e.loop&&!m.value?(h.value=!0,te):(h.value=!1,null)}ye(()=>i.value,(pe,K)=>{M(K),h.value&&(pe=pe%2,K=K%2),K>-1&&t(\"change\",pe,K)}),ye(()=>e.autoplay,pe=>{pe?k():E()}),ye(()=>e.loop,()=>{x(i.value)}),ye(()=>e.interval,()=>{U()});const le=Wt();return it(()=>{ye(()=>r.value,()=>{r.value.length>0&&x(e.initialIndex)},{immediate:!0}),le.value=jt(f.value,()=>{M()}),k()}),Pt(()=>{E(),f.value&&le.value&&le.value.stop()}),pt(LC,{root:f,isCardType:m,isVertical:y,items:r,loop:e.loop,cardScale:e.cardScale,addItem:s,removeItem:o,setActiveItem:x,setContainerHeight:J}),{root:f,activeIndex:i,arrowDisplay:p,hasLabel:g,hover:u,isCardType:m,isTransitioning:b,items:r,isVertical:y,containerStyle:_,isItemsTwoLength:h,handleButtonEnter:I,handleTransitionEnd:V,handleButtonLeave:j,handleIndicatorClick:F,handleMouseEnter:P,handleMouseLeave:G,setActiveItem:x,prev:B,next:N,PlaceholderItem:re,isTwoLengthShow:C,throttledArrowClick:w,throttledIndicatorHover:S}},J5=\"ElCarousel\",Z5=ee({name:J5}),Q5=ee({...Z5,props:W5,emits:K5,setup(e,{expose:t,emit:n}){const r=e,{root:s,activeIndex:o,arrowDisplay:a,hasLabel:i,hover:l,isCardType:u,items:f,isVertical:d,containerStyle:h,handleButtonEnter:v,handleButtonLeave:b,isTransitioning:p,handleIndicatorClick:g,handleMouseEnter:m,handleMouseLeave:y,handleTransitionEnd:_,setActiveItem:w,prev:S,next:C,PlaceholderItem:E,isTwoLengthShow:k,throttledArrowClick:T,throttledIndicatorHover:x}=X5(r,n),M=we(\"carousel\"),{t:A}=yt(),P=O(()=>{const I=[M.b(),M.m(r.direction)];return c(u)&&I.push(M.m(\"card\")),I}),G=O(()=>{const I=[M.e(\"container\")];return r.motionBlur&&c(p)&&f.value.length>1&&I.push(c(d)?`${M.namespace.value}-transitioning-vertical`:`${M.namespace.value}-transitioning`),I}),V=O(()=>{const I=[M.e(\"indicators\"),M.em(\"indicators\",r.direction)];return c(i)&&I.push(M.em(\"indicators\",\"labels\")),r.indicatorPosition===\"outside\"&&I.push(M.em(\"indicators\",\"outside\")),c(d)&&I.push(M.em(\"indicators\",\"right\")),I});return t({activeIndex:o,setActiveItem:w,prev:S,next:C}),(I,j)=>($(),X(\"div\",{ref_key:\"root\",ref:s,class:D(c(P)),onMouseenter:Xe(c(m),[\"stop\"]),onMouseleave:Xe(c(y),[\"stop\"])},[c(a)?($(),ve(_n,{key:0,name:\"carousel-arrow-left\",persisted:\"\"},{default:q(()=>[st(Z(\"button\",{type:\"button\",class:D([c(M).e(\"arrow\"),c(M).em(\"arrow\",\"left\")]),\"aria-label\":c(A)(\"el.carousel.leftArrow\"),onMouseenter:F=>c(v)(\"left\"),onMouseleave:c(b),onClick:Xe(F=>c(T)(c(o)-1),[\"stop\"])},[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1})],42,[\"aria-label\",\"onMouseenter\",\"onMouseleave\",\"onClick\"]),[[Et,(I.arrow===\"always\"||c(l))&&(r.loop||c(o)>0)]])]),_:1})):de(\"v-if\",!0),c(a)?($(),ve(_n,{key:1,name:\"carousel-arrow-right\",persisted:\"\"},{default:q(()=>[st(Z(\"button\",{type:\"button\",class:D([c(M).e(\"arrow\"),c(M).em(\"arrow\",\"right\")]),\"aria-label\":c(A)(\"el.carousel.rightArrow\"),onMouseenter:F=>c(v)(\"right\"),onMouseleave:c(b),onClick:Xe(F=>c(T)(c(o)+1),[\"stop\"])},[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})],42,[\"aria-label\",\"onMouseenter\",\"onMouseleave\",\"onClick\"]),[[Et,(I.arrow===\"always\"||c(l))&&(r.loop||c(o)<c(f).length-1)]])]),_:1})):de(\"v-if\",!0),Z(\"div\",{class:D(c(G)),style:Ue(c(h)),onTransitionend:c(_)},[H(c(E)),ue(I.$slots,\"default\")],46,[\"onTransitionend\"]),I.indicatorPosition!==\"none\"?($(),X(\"ul\",{key:2,class:D(c(V))},[($(!0),X(We,null,vt(c(f),(F,R)=>st(($(),X(\"li\",{key:R,class:D([c(M).e(\"indicator\"),c(M).em(\"indicator\",I.direction),c(M).is(\"active\",R===c(o))]),onMouseenter:B=>c(x)(R),onClick:Xe(B=>c(g)(R),[\"stop\"])},[Z(\"button\",{class:D(c(M).e(\"button\")),\"aria-label\":c(A)(\"el.carousel.indicator\",{index:R+1})},[c(i)?($(),X(\"span\",{key:0},Ee(F.props.label),1)):de(\"v-if\",!0)],10,[\"aria-label\"])],42,[\"onMouseenter\",\"onClick\"])),[[Et,c(k)(R)]])),128))],2)):de(\"v-if\",!0),r.motionBlur?($(),X(\"svg\",{key:3,xmlns:\"http://www.w3.org/2000/svg\",version:\"1.1\",style:{display:\"none\"}},[Z(\"defs\",null,[Z(\"filter\",{id:\"elCarouselHorizontal\"},[Z(\"feGaussianBlur\",{in:\"SourceGraphic\",stdDeviation:\"12,0\"})]),Z(\"filter\",{id:\"elCarouselVertical\"},[Z(\"feGaussianBlur\",{in:\"SourceGraphic\",stdDeviation:\"0,10\"})])])])):de(\"v-if\",!0)],42,[\"onMouseenter\",\"onMouseleave\"]))}});var eF=Oe(Q5,[[\"__file\",\"carousel.vue\"]]);const tF=xe({name:{type:String,default:\"\"},label:{type:[String,Number],default:\"\"}}),nF=e=>{const t=Fe(LC),n=ct(),r=W(),s=W(!1),o=W(0),a=W(1),i=W(!1),l=W(!1),u=W(!1),f=W(!1),{isCardType:d,isVertical:h,cardScale:v}=t;function b(_,w,S){const C=S-1,E=w-1,k=w+1,T=S/2;return w===0&&_===C?-1:w===C&&_===0?S:_<E&&w-_>=T?S+1:_>k&&_-w>=T?-2:_}function p(_,w){var S,C;const E=c(h)?((S=t.root.value)==null?void 0:S.offsetHeight)||0:((C=t.root.value)==null?void 0:C.offsetWidth)||0;return u.value?E*((2-v)*(_-w)+1)/4:_<w?-(1+v)*E/4:(3+v)*E/4}function g(_,w,S){const C=t.root.value;return C?((S?C.offsetHeight:C.offsetWidth)||0)*(_-w):0}const m=(_,w,S)=>{var C;const E=c(d),k=(C=t.items.value.length)!=null?C:Number.NaN,T=_===w;!E&&!Lt(S)&&(f.value=T||_===S),!T&&k>2&&t.loop&&(_=b(_,w,k));const x=c(h);i.value=T,E?(u.value=Math.round(Math.abs(_-w))<=1,o.value=p(_,w),a.value=c(i)?1:v):o.value=g(_,w,x),l.value=!0,T&&r.value&&t.setContainerHeight(r.value.offsetHeight)};function y(){if(t&&c(d)){const _=t.items.value.findIndex(({uid:w})=>w===n.uid);t.setActiveItem(_)}}return it(()=>{t.addItem({props:e,states:St({hover:s,translate:o,scale:a,active:i,ready:l,inStage:u,animating:f}),uid:n.uid,translateItem:m})}),xs(()=>{t.removeItem(n.uid)}),{carouselItemRef:r,active:i,animating:f,hover:s,inStage:u,isVertical:h,translate:o,isCardType:d,scale:a,ready:l,handleItemClick:y}},rF=ee({name:Ih}),sF=ee({...rF,props:tF,setup(e){const t=e,n=we(\"carousel\"),{carouselItemRef:r,active:s,animating:o,hover:a,inStage:i,isVertical:l,translate:u,isCardType:f,scale:d,ready:h,handleItemClick:v}=nF(t),b=O(()=>[n.e(\"item\"),n.is(\"active\",s.value),n.is(\"in-stage\",i.value),n.is(\"hover\",a.value),n.is(\"animating\",o.value),{[n.em(\"item\",\"card\")]:f.value,[n.em(\"item\",\"card-vertical\")]:f.value&&l.value}]),p=O(()=>{const m=`${`translate${c(l)?\"Y\":\"X\"}`}(${c(u)}px)`,y=`scale(${c(d)})`;return{transform:[m,y].join(\" \")}});return(g,m)=>st(($(),X(\"div\",{ref_key:\"carouselItemRef\",ref:r,class:D(c(b)),style:Ue(c(p)),onClick:c(v)},[c(f)?st(($(),X(\"div\",{key:0,class:D(c(n).e(\"mask\"))},null,2)),[[Et,!c(s)]]):de(\"v-if\",!0),ue(g.$slots,\"default\")],14,[\"onClick\"])),[[Et,c(h)]])}});var IC=Oe(sF,[[\"__file\",\"carousel-item.vue\"]]);const oF=Qe(eF,{CarouselItem:IC}),iF=Gt(IC),PC={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},value:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueValue:{type:[String,Number],default:void 0},falseValue:{type:[String,Number],default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},border:Boolean,size:on,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0},...kn([\"ariaControls\"])},DC={[ot]:e=>ze(e)||Ge(e)||Vt(e),change:e=>ze(e)||Ge(e)||Vt(e)},va=Symbol(\"checkboxGroupContextKey\"),aF=({model:e,isChecked:t})=>{const n=Fe(va,void 0),r=O(()=>{var o,a;const i=(o=n==null?void 0:n.max)==null?void 0:o.value,l=(a=n==null?void 0:n.min)==null?void 0:a.value;return!Lt(i)&&e.value.length>=i&&!t.value||!Lt(l)&&e.value.length<=l&&t.value});return{isDisabled:On(O(()=>(n==null?void 0:n.disabled.value)||r.value)),isLimitDisabled:r}},lF=(e,{model:t,isLimitExceeded:n,hasOwnLabel:r,isDisabled:s,isLabeledByFormItem:o})=>{const a=Fe(va,void 0),{formItem:i}=xn(),{emit:l}=ct();function u(b){var p,g,m,y;return[!0,e.trueValue,e.trueLabel].includes(b)?(g=(p=e.trueValue)!=null?p:e.trueLabel)!=null?g:!0:(y=(m=e.falseValue)!=null?m:e.falseLabel)!=null?y:!1}function f(b,p){l(\"change\",u(b),p)}function d(b){if(n.value)return;const p=b.target;l(\"change\",u(p.checked),b)}async function h(b){n.value||!r.value&&!s.value&&o.value&&(b.composedPath().some(m=>m.tagName===\"LABEL\")||(t.value=u([!1,e.falseValue,e.falseLabel].includes(t.value)),await je(),f(t.value,b)))}const v=O(()=>(a==null?void 0:a.validateEvent)||e.validateEvent);return ye(()=>e.modelValue,()=>{v.value&&(i==null||i.validate(\"change\").catch(b=>void 0))}),{handleChange:d,onClickRoot:h}},cF=e=>{const t=W(!1),{emit:n}=ct(),r=Fe(va,void 0),s=O(()=>Lt(r)===!1),o=W(!1),a=O({get(){var i,l;return s.value?(i=r==null?void 0:r.modelValue)==null?void 0:i.value:(l=e.modelValue)!=null?l:t.value},set(i){var l,u;s.value&&ke(i)?(o.value=((l=r==null?void 0:r.max)==null?void 0:l.value)!==void 0&&i.length>(r==null?void 0:r.max.value)&&i.length>a.value.length,o.value===!1&&((u=r==null?void 0:r.changeEvent)==null||u.call(r,i))):(n(ot,i),t.value=i)}});return{model:a,isGroup:s,isLimitExceeded:o}},uF=(e,t,{model:n})=>{const r=Fe(va,void 0),s=W(!1),o=O(()=>Xo(e.value)?e.label:e.value),a=O(()=>{const f=n.value;return Vt(f)?f:ke(f)?lt(o.value)?f.map(Dt).some(d=>wn(d,o.value)):f.map(Dt).includes(o.value):f!=null?f===e.trueValue||f===e.trueLabel:!!f}),i=sn(O(()=>{var f;return(f=r==null?void 0:r.size)==null?void 0:f.value}),{prop:!0}),l=sn(O(()=>{var f;return(f=r==null?void 0:r.size)==null?void 0:f.value})),u=O(()=>!!t.default||!Xo(o.value));return{checkboxButtonSize:i,isChecked:a,isFocused:s,checkboxSize:l,hasOwnLabel:u,actualValue:o}},BC=(e,t)=>{const{formItem:n}=xn(),{model:r,isGroup:s,isLimitExceeded:o}=cF(e),{isFocused:a,isChecked:i,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f,actualValue:d}=uF(e,t,{model:r}),{isDisabled:h}=aF({model:r,isChecked:i}),{inputId:v,isLabeledByFormItem:b}=Cr(e,{formItemContext:n,disableIdGeneration:f,disableIdManagement:s}),{handleChange:p,onClickRoot:g}=lF(e,{model:r,isLimitExceeded:o,hasOwnLabel:f,isDisabled:h,isLabeledByFormItem:b});return(()=>{function y(){var _,w;ke(r.value)&&!r.value.includes(d.value)?r.value.push(d.value):r.value=(w=(_=e.trueValue)!=null?_:e.trueLabel)!=null?w:!0}e.checked&&y()})(),Qs({from:\"label act as value\",replacement:\"value\",version:\"3.0.0\",scope:\"el-checkbox\",ref:\"https://element-plus.org/en-US/component/checkbox.html\"},O(()=>s.value&&Xo(e.value))),Qs({from:\"true-label\",replacement:\"true-value\",version:\"3.0.0\",scope:\"el-checkbox\",ref:\"https://element-plus.org/en-US/component/checkbox.html\"},O(()=>!!e.trueLabel)),Qs({from:\"false-label\",replacement:\"false-value\",version:\"3.0.0\",scope:\"el-checkbox\",ref:\"https://element-plus.org/en-US/component/checkbox.html\"},O(()=>!!e.falseLabel)),{inputId:v,isLabeledByFormItem:b,isChecked:i,isDisabled:h,isFocused:a,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f,model:r,actualValue:d,handleChange:p,onClickRoot:g}},dF=ee({name:\"ElCheckbox\"}),fF=ee({...dF,props:PC,emits:DC,setup(e){const t=e,n=an(),{inputId:r,isLabeledByFormItem:s,isChecked:o,isDisabled:a,isFocused:i,checkboxSize:l,hasOwnLabel:u,model:f,actualValue:d,handleChange:h,onClickRoot:v}=BC(t,n),b=we(\"checkbox\"),p=O(()=>[b.b(),b.m(l.value),b.is(\"disabled\",a.value),b.is(\"bordered\",t.border),b.is(\"checked\",o.value)]),g=O(()=>[b.e(\"input\"),b.is(\"disabled\",a.value),b.is(\"checked\",o.value),b.is(\"indeterminate\",t.indeterminate),b.is(\"focus\",i.value)]);return(m,y)=>($(),ve(dt(!c(u)&&c(s)?\"span\":\"label\"),{class:D(c(p)),\"aria-controls\":m.indeterminate?m.ariaControls:null,onClick:c(v)},{default:q(()=>{var _,w,S,C;return[Z(\"span\",{class:D(c(g))},[m.trueValue||m.falseValue||m.trueLabel||m.falseLabel?st(($(),X(\"input\",{key:0,id:c(r),\"onUpdate:modelValue\":E=>Ft(f)?f.value=E:null,class:D(c(b).e(\"original\")),type:\"checkbox\",indeterminate:m.indeterminate,name:m.name,tabindex:m.tabindex,disabled:c(a),\"true-value\":(w=(_=m.trueValue)!=null?_:m.trueLabel)!=null?w:!0,\"false-value\":(C=(S=m.falseValue)!=null?S:m.falseLabel)!=null?C:!1,onChange:c(h),onFocus:E=>i.value=!0,onBlur:E=>i.value=!1,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"id\",\"onUpdate:modelValue\",\"indeterminate\",\"name\",\"tabindex\",\"disabled\",\"true-value\",\"false-value\",\"onChange\",\"onFocus\",\"onBlur\",\"onClick\"])),[[wu,c(f)]]):st(($(),X(\"input\",{key:1,id:c(r),\"onUpdate:modelValue\":E=>Ft(f)?f.value=E:null,class:D(c(b).e(\"original\")),type:\"checkbox\",indeterminate:m.indeterminate,disabled:c(a),value:c(d),name:m.name,tabindex:m.tabindex,onChange:c(h),onFocus:E=>i.value=!0,onBlur:E=>i.value=!1,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"id\",\"onUpdate:modelValue\",\"indeterminate\",\"disabled\",\"value\",\"name\",\"tabindex\",\"onChange\",\"onFocus\",\"onBlur\",\"onClick\"])),[[wu,c(f)]]),Z(\"span\",{class:D(c(b).e(\"inner\"))},null,2)],2),c(u)?($(),X(\"span\",{key:0,class:D(c(b).e(\"label\"))},[ue(m.$slots,\"default\"),m.$slots.default?de(\"v-if\",!0):($(),X(We,{key:0},[Ve(Ee(m.label),1)],64))],2)):de(\"v-if\",!0)]}),_:3},8,[\"class\",\"aria-controls\",\"onClick\"]))}});var hF=Oe(fF,[[\"__file\",\"checkbox.vue\"]]);const pF=ee({name:\"ElCheckboxButton\"}),vF=ee({...pF,props:PC,emits:DC,setup(e){const t=e,n=an(),{isFocused:r,isChecked:s,isDisabled:o,checkboxButtonSize:a,model:i,actualValue:l,handleChange:u}=BC(t,n),f=Fe(va,void 0),d=we(\"checkbox\"),h=O(()=>{var b,p,g,m;const y=(p=(b=f==null?void 0:f.fill)==null?void 0:b.value)!=null?p:\"\";return{backgroundColor:y,borderColor:y,color:(m=(g=f==null?void 0:f.textColor)==null?void 0:g.value)!=null?m:\"\",boxShadow:y?`-1px 0 0 0 ${y}`:void 0}}),v=O(()=>[d.b(\"button\"),d.bm(\"button\",a.value),d.is(\"disabled\",o.value),d.is(\"checked\",s.value),d.is(\"focus\",r.value)]);return(b,p)=>{var g,m,y,_;return $(),X(\"label\",{class:D(c(v))},[b.trueValue||b.falseValue||b.trueLabel||b.falseLabel?st(($(),X(\"input\",{key:0,\"onUpdate:modelValue\":w=>Ft(i)?i.value=w:null,class:D(c(d).be(\"button\",\"original\")),type:\"checkbox\",name:b.name,tabindex:b.tabindex,disabled:c(o),\"true-value\":(m=(g=b.trueValue)!=null?g:b.trueLabel)!=null?m:!0,\"false-value\":(_=(y=b.falseValue)!=null?y:b.falseLabel)!=null?_:!1,onChange:c(u),onFocus:w=>r.value=!0,onBlur:w=>r.value=!1,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"onUpdate:modelValue\",\"name\",\"tabindex\",\"disabled\",\"true-value\",\"false-value\",\"onChange\",\"onFocus\",\"onBlur\",\"onClick\"])),[[wu,c(i)]]):st(($(),X(\"input\",{key:1,\"onUpdate:modelValue\":w=>Ft(i)?i.value=w:null,class:D(c(d).be(\"button\",\"original\")),type:\"checkbox\",name:b.name,tabindex:b.tabindex,disabled:c(o),value:c(l),onChange:c(u),onFocus:w=>r.value=!0,onBlur:w=>r.value=!1,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"onUpdate:modelValue\",\"name\",\"tabindex\",\"disabled\",\"value\",\"onChange\",\"onFocus\",\"onBlur\",\"onClick\"])),[[wu,c(i)]]),b.$slots.default||b.label?($(),X(\"span\",{key:2,class:D(c(d).be(\"button\",\"inner\")),style:Ue(c(s)?c(h):void 0)},[ue(b.$slots,\"default\",{},()=>[Ve(Ee(b.label),1)])],6)):de(\"v-if\",!0)],2)}}});var NC=Oe(vF,[[\"__file\",\"checkbox-button.vue\"]]);const mF=xe({modelValue:{type:ie(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:on,fill:String,textColor:String,tag:{type:String,default:\"div\"},validateEvent:{type:Boolean,default:!0},...kn([\"ariaLabel\"])}),gF={[ot]:e=>ke(e),change:e=>ke(e)},_F=ee({name:\"ElCheckboxGroup\"}),bF=ee({..._F,props:mF,emits:gF,setup(e,{emit:t}){const n=e,r=we(\"checkbox\"),{formItem:s}=xn(),{inputId:o,isLabeledByFormItem:a}=Cr(n,{formItemContext:s}),i=async u=>{t(ot,u),await je(),t(\"change\",u)},l=O({get(){return n.modelValue},set(u){i(u)}});return pt(va,{...Or(hn(n),[\"size\",\"min\",\"max\",\"disabled\",\"validateEvent\",\"fill\",\"textColor\"]),modelValue:l,changeEvent:i}),ye(()=>n.modelValue,()=>{n.validateEvent&&(s==null||s.validate(\"change\").catch(u=>void 0))}),(u,f)=>{var d;return $(),ve(dt(u.tag),{id:c(o),class:D(c(r).b(\"group\")),role:\"group\",\"aria-label\":c(a)?void 0:u.ariaLabel||\"checkbox-group\",\"aria-labelledby\":c(a)?(d=c(s))==null?void 0:d.labelId:void 0},{default:q(()=>[ue(u.$slots,\"default\")]),_:3},8,[\"id\",\"class\",\"aria-label\",\"aria-labelledby\"])}}});var FC=Oe(bF,[[\"__file\",\"checkbox-group.vue\"]]);const Sr=Qe(hF,{CheckboxButton:NC,CheckboxGroup:FC}),yF=Gt(NC),HC=Gt(FC),VC=xe({modelValue:{type:[String,Number,Boolean],default:void 0},size:on,disabled:Boolean,label:{type:[String,Number,Boolean],default:void 0},value:{type:[String,Number,Boolean],default:void 0},name:{type:String,default:void 0}}),wF=xe({...VC,border:Boolean}),zC={[ot]:e=>ze(e)||Ge(e)||Vt(e),[Bt]:e=>ze(e)||Ge(e)||Vt(e)},WC=Symbol(\"radioGroupKey\"),KC=(e,t)=>{const n=W(),r=Fe(WC,void 0),s=O(()=>!!r),o=O(()=>Xo(e.value)?e.label:e.value),a=O({get(){return s.value?r.modelValue:e.modelValue},set(d){s.value?r.changeEvent(d):t&&t(ot,d),n.value.checked=e.modelValue===o.value}}),i=sn(O(()=>r==null?void 0:r.size)),l=On(O(()=>r==null?void 0:r.disabled)),u=W(!1),f=O(()=>l.value||s.value&&a.value!==o.value?-1:0);return Qs({from:\"label act as value\",replacement:\"value\",version:\"3.0.0\",scope:\"el-radio\",ref:\"https://element-plus.org/en-US/component/radio.html\"},O(()=>s.value&&Xo(e.value))),{radioRef:n,isGroup:s,radioGroup:r,focus:u,size:i,disabled:l,tabIndex:f,modelValue:a,actualValue:o}},SF=ee({name:\"ElRadio\"}),CF=ee({...SF,props:wF,emits:zC,setup(e,{emit:t}){const n=e,r=we(\"radio\"),{radioRef:s,radioGroup:o,focus:a,size:i,disabled:l,modelValue:u,actualValue:f}=KC(n,t);function d(){je(()=>t(\"change\",u.value))}return(h,v)=>{var b;return $(),X(\"label\",{class:D([c(r).b(),c(r).is(\"disabled\",c(l)),c(r).is(\"focus\",c(a)),c(r).is(\"bordered\",h.border),c(r).is(\"checked\",c(u)===c(f)),c(r).m(c(i))])},[Z(\"span\",{class:D([c(r).e(\"input\"),c(r).is(\"disabled\",c(l)),c(r).is(\"checked\",c(u)===c(f))])},[st(Z(\"input\",{ref_key:\"radioRef\",ref:s,\"onUpdate:modelValue\":p=>Ft(u)?u.value=p:null,class:D(c(r).e(\"original\")),value:c(f),name:h.name||((b=c(o))==null?void 0:b.name),disabled:c(l),checked:c(u)===c(f),type:\"radio\",onFocus:p=>a.value=!0,onBlur:p=>a.value=!1,onChange:d,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"onUpdate:modelValue\",\"value\",\"name\",\"disabled\",\"checked\",\"onFocus\",\"onBlur\",\"onClick\"]),[[W1,c(u)]]),Z(\"span\",{class:D(c(r).e(\"inner\"))},null,2)],2),Z(\"span\",{class:D(c(r).e(\"label\")),onKeydown:Xe(()=>{},[\"stop\"])},[ue(h.$slots,\"default\",{},()=>[Ve(Ee(h.label),1)])],42,[\"onKeydown\"])],2)}}});var kF=Oe(CF,[[\"__file\",\"radio.vue\"]]);const EF=xe({...VC}),TF=ee({name:\"ElRadioButton\"}),RF=ee({...TF,props:EF,setup(e){const t=e,n=we(\"radio\"),{radioRef:r,focus:s,size:o,disabled:a,modelValue:i,radioGroup:l,actualValue:u}=KC(t),f=O(()=>({backgroundColor:(l==null?void 0:l.fill)||\"\",borderColor:(l==null?void 0:l.fill)||\"\",boxShadow:l!=null&&l.fill?`-1px 0 0 0 ${l.fill}`:\"\",color:(l==null?void 0:l.textColor)||\"\"}));return(d,h)=>{var v;return $(),X(\"label\",{class:D([c(n).b(\"button\"),c(n).is(\"active\",c(i)===c(u)),c(n).is(\"disabled\",c(a)),c(n).is(\"focus\",c(s)),c(n).bm(\"button\",c(o))])},[st(Z(\"input\",{ref_key:\"radioRef\",ref:r,\"onUpdate:modelValue\":b=>Ft(i)?i.value=b:null,class:D(c(n).be(\"button\",\"original-radio\")),value:c(u),type:\"radio\",name:d.name||((v=c(l))==null?void 0:v.name),disabled:c(a),onFocus:b=>s.value=!0,onBlur:b=>s.value=!1,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"onUpdate:modelValue\",\"value\",\"name\",\"disabled\",\"onFocus\",\"onBlur\",\"onClick\"]),[[W1,c(i)]]),Z(\"span\",{class:D(c(n).be(\"button\",\"inner\")),style:Ue(c(i)===c(u)?c(f):{}),onKeydown:Xe(()=>{},[\"stop\"])},[ue(d.$slots,\"default\",{},()=>[Ve(Ee(d.label),1)])],46,[\"onKeydown\"])],2)}}});var jC=Oe(RF,[[\"__file\",\"radio-button.vue\"]]);const xF=xe({id:{type:String,default:void 0},size:on,disabled:Boolean,modelValue:{type:[String,Number,Boolean],default:void 0},fill:{type:String,default:\"\"},textColor:{type:String,default:\"\"},name:{type:String,default:void 0},validateEvent:{type:Boolean,default:!0},...kn([\"ariaLabel\"])}),OF=zC,MF=ee({name:\"ElRadioGroup\"}),AF=ee({...MF,props:xF,emits:OF,setup(e,{emit:t}){const n=e,r=we(\"radio\"),s=Sn(),o=W(),{formItem:a}=xn(),{inputId:i,isLabeledByFormItem:l}=Cr(n,{formItemContext:a}),u=d=>{t(ot,d),je(()=>t(\"change\",d))};it(()=>{const d=o.value.querySelectorAll(\"[type=radio]\"),h=d[0];!Array.from(d).some(v=>v.checked)&&h&&(h.tabIndex=0)});const f=O(()=>n.name||s.value);return pt(WC,St({...hn(n),changeEvent:u,name:f})),ye(()=>n.modelValue,()=>{n.validateEvent&&(a==null||a.validate(\"change\").catch(d=>void 0))}),(d,h)=>($(),X(\"div\",{id:c(i),ref_key:\"radioGroupRef\",ref:o,class:D(c(r).b(\"group\")),role:\"radiogroup\",\"aria-label\":c(l)?void 0:d.ariaLabel||\"radio-group\",\"aria-labelledby\":c(l)?c(a).labelId:void 0},[ue(d.$slots,\"default\")],10,[\"id\",\"aria-label\",\"aria-labelledby\"]))}});var UC=Oe(AF,[[\"__file\",\"radio-group.vue\"]]);const Qv=Qe(kF,{RadioButton:jC,RadioGroup:UC}),qC=Gt(UC),$F=Gt(jC);var LF=ee({name:\"NodeContent\",setup(){return{ns:we(\"cascader-node\")}},render(){const{ns:e}=this,{node:t,panel:n}=this.$parent,{data:r,label:s}=t,{renderLabelFn:o}=n;return Ye(\"span\",{class:e.e(\"label\")},o?o({node:t,data:r}):s)}});const em=Symbol(),IF=ee({name:\"ElCascaderNode\",components:{ElCheckbox:Sr,ElRadio:Qv,NodeContent:LF,ElIcon:He,Check:jl,Loading:ts,ArrowRight:qn},props:{node:{type:Object,required:!0},menuId:String},emits:[\"expand\"],setup(e,{emit:t}){const n=Fe(em),r=we(\"cascader-node\"),s=O(()=>n.isHoverMenu),o=O(()=>n.config.multiple),a=O(()=>n.config.checkStrictly),i=O(()=>{var C;return(C=n.checkedNodes[0])==null?void 0:C.uid}),l=O(()=>e.node.isDisabled),u=O(()=>e.node.isLeaf),f=O(()=>a.value&&!u.value||!l.value),d=O(()=>v(n.expandingNode)),h=O(()=>a.value&&n.checkedNodes.some(v)),v=C=>{var E;const{level:k,uid:T}=e.node;return((E=C==null?void 0:C.pathNodes[k-1])==null?void 0:E.uid)===T},b=()=>{d.value||n.expandNode(e.node)},p=C=>{const{node:E}=e;C!==E.checked&&n.handleCheckChange(E,C)},g=()=>{n.lazyLoad(e.node,()=>{u.value||b()})},m=C=>{s.value&&(y(),!u.value&&t(\"expand\",C))},y=()=>{const{node:C}=e;!f.value||C.loading||(C.loaded?b():g())},_=()=>{s.value&&!u.value||(u.value&&!l.value&&!a.value&&!o.value?S(!0):y())},w=C=>{a.value?(p(C),e.node.loaded&&b()):S(C)},S=C=>{e.node.loaded?(p(C),!a.value&&b()):g()};return{panel:n,isHoverMenu:s,multiple:o,checkStrictly:a,checkedNodeId:i,isDisabled:l,isLeaf:u,expandable:f,inExpandingPath:d,inCheckedPath:h,ns:r,handleHoverExpand:m,handleExpand:y,handleClick:_,handleCheck:S,handleSelectCheck:w}}});function PF(e,t,n,r,s,o){const a=ut(\"el-checkbox\"),i=ut(\"el-radio\"),l=ut(\"check\"),u=ut(\"el-icon\"),f=ut(\"node-content\"),d=ut(\"loading\"),h=ut(\"arrow-right\");return $(),X(\"li\",{id:`${e.menuId}-${e.node.uid}`,role:\"menuitem\",\"aria-haspopup\":!e.isLeaf,\"aria-owns\":e.isLeaf?null:e.menuId,\"aria-expanded\":e.inExpandingPath,tabindex:e.expandable?-1:void 0,class:D([e.ns.b(),e.ns.is(\"selectable\",e.checkStrictly),e.ns.is(\"active\",e.node.checked),e.ns.is(\"disabled\",!e.expandable),e.inExpandingPath&&\"in-active-path\",e.inCheckedPath&&\"in-checked-path\"]),onMouseenter:e.handleHoverExpand,onFocus:e.handleHoverExpand,onClick:e.handleClick},[de(\" prefix \"),e.multiple?($(),ve(a,{key:0,\"model-value\":e.node.checked,indeterminate:e.node.indeterminate,disabled:e.isDisabled,onClick:Xe(()=>{},[\"stop\"]),\"onUpdate:modelValue\":e.handleSelectCheck},null,8,[\"model-value\",\"indeterminate\",\"disabled\",\"onClick\",\"onUpdate:modelValue\"])):e.checkStrictly?($(),ve(i,{key:1,\"model-value\":e.checkedNodeId,label:e.node.uid,disabled:e.isDisabled,\"onUpdate:modelValue\":e.handleSelectCheck,onClick:Xe(()=>{},[\"stop\"])},{default:q(()=>[de(`\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      `),Z(\"span\")]),_:1},8,[\"model-value\",\"label\",\"disabled\",\"onUpdate:modelValue\",\"onClick\"])):e.isLeaf&&e.node.checked?($(),ve(u,{key:2,class:D(e.ns.e(\"prefix\"))},{default:q(()=>[H(l)]),_:1},8,[\"class\"])):de(\"v-if\",!0),de(\" content \"),H(f),de(\" postfix \"),e.isLeaf?de(\"v-if\",!0):($(),X(We,{key:3},[e.node.loading?($(),ve(u,{key:0,class:D([e.ns.is(\"loading\"),e.ns.e(\"postfix\")])},{default:q(()=>[H(d)]),_:1},8,[\"class\"])):($(),ve(u,{key:1,class:D([\"arrow-right\",e.ns.e(\"postfix\")])},{default:q(()=>[H(h)]),_:1},8,[\"class\"]))],64))],42,[\"id\",\"aria-haspopup\",\"aria-owns\",\"aria-expanded\",\"tabindex\",\"onMouseenter\",\"onFocus\",\"onClick\"])}var DF=Oe(IF,[[\"render\",PF],[\"__file\",\"node.vue\"]]);const BF=ee({name:\"ElCascaderMenu\",components:{Loading:ts,ElIcon:He,ElScrollbar:ls,ElCascaderNode:DF},props:{nodes:{type:Array,required:!0},index:{type:Number,required:!0}},setup(e){const t=ct(),n=we(\"cascader-menu\"),{t:r}=yt(),s=Sn();let o=null,a=null;const i=Fe(em),l=W(null),u=O(()=>!e.nodes.length),f=O(()=>!i.initialLoaded),d=O(()=>`${s.value}-${e.index}`),h=g=>{o=g.target},v=g=>{if(!(!i.isHoverMenu||!o||!l.value))if(o.contains(g.target)){b();const m=t.vnode.el,{left:y}=m.getBoundingClientRect(),{offsetWidth:_,offsetHeight:w}=m,S=g.clientX-y,C=o.offsetTop,E=C+o.offsetHeight;l.value.innerHTML=`\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${S} ${C} L${_} 0 V${C} Z\" />\n          <path style=\"pointer-events: auto;\" fill=\"transparent\" d=\"M${S} ${E} L${_} ${w} V${E} Z\" />\n        `}else a||(a=window.setTimeout(p,i.config.hoverThreshold))},b=()=>{a&&(clearTimeout(a),a=null)},p=()=>{l.value&&(l.value.innerHTML=\"\",b())};return{ns:n,panel:i,hoverZone:l,isEmpty:u,isLoading:f,menuId:d,t:r,handleExpand:h,handleMouseMove:v,clearHoverZone:p}}});function NF(e,t,n,r,s,o){const a=ut(\"el-cascader-node\"),i=ut(\"loading\"),l=ut(\"el-icon\"),u=ut(\"el-scrollbar\");return $(),ve(u,{key:e.menuId,tag:\"ul\",role:\"menu\",class:D(e.ns.b()),\"wrap-class\":e.ns.e(\"wrap\"),\"view-class\":[e.ns.e(\"list\"),e.ns.is(\"empty\",e.isEmpty)],onMousemove:e.handleMouseMove,onMouseleave:e.clearHoverZone},{default:q(()=>{var f;return[($(!0),X(We,null,vt(e.nodes,d=>($(),ve(a,{key:d.uid,node:d,\"menu-id\":e.menuId,onExpand:e.handleExpand},null,8,[\"node\",\"menu-id\",\"onExpand\"]))),128)),e.isLoading?($(),X(\"div\",{key:0,class:D(e.ns.e(\"empty-text\"))},[H(l,{size:\"14\",class:D(e.ns.is(\"loading\"))},{default:q(()=>[H(i)]),_:1},8,[\"class\"]),Ve(\" \"+Ee(e.t(\"el.cascader.loading\")),1)],2)):e.isEmpty?($(),X(\"div\",{key:1,class:D(e.ns.e(\"empty-text\"))},[ue(e.$slots,\"empty\",{},()=>[Ve(Ee(e.t(\"el.cascader.noData\")),1)])],2)):(f=e.panel)!=null&&f.isHoverMenu?($(),X(\"svg\",{key:2,ref:\"hoverZone\",class:D(e.ns.e(\"hover-zone\"))},null,2)):de(\"v-if\",!0)]}),_:3},8,[\"class\",\"wrap-class\",\"view-class\",\"onMousemove\",\"onMouseleave\"])}var FF=Oe(BF,[[\"render\",NF],[\"__file\",\"menu.vue\"]]);const tm=(e=\"\")=>e.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\").replace(/-/g,\"\\\\x2d\"),Gr=e=>$l(e);let HF=0;const VF=e=>{const t=[e];let{parent:n}=e;for(;n;)t.unshift(n),n=n.parent;return t};let Dh=class Bh{constructor(t,n,r,s=!1){this.data=t,this.config=n,this.parent=r,this.root=s,this.uid=HF++,this.checked=!1,this.indeterminate=!1,this.loading=!1;const{value:o,label:a,children:i}=n,l=t[i],u=VF(this);this.level=s?0:r?r.level+1:1,this.value=t[o],this.label=t[a],this.pathNodes=u,this.pathValues=u.map(f=>f.value),this.pathLabels=u.map(f=>f.label),this.childrenData=l,this.children=(l||[]).map(f=>new Bh(f,n,this)),this.loaded=!n.lazy||this.isLeaf||!sr(l)}get isDisabled(){const{data:t,parent:n,config:r}=this,{disabled:s,checkStrictly:o}=r;return(Ke(s)?s(t,this):!!t[s])||!o&&(n==null?void 0:n.isDisabled)}get isLeaf(){const{data:t,config:n,childrenData:r,loaded:s}=this,{lazy:o,leaf:a}=n,i=Ke(a)?a(t,this):t[a];return Lt(i)?o&&!s?!1:!(ke(r)&&r.length):!!i}get valueByOption(){return this.config.emitPath?this.pathValues:this.value}appendChild(t){const{childrenData:n,children:r}=this,s=new Bh(t,this.config,this);return ke(n)?n.push(t):this.childrenData=[t],r.push(s),s}calcText(t,n){const r=t?this.pathLabels.join(n):this.label;return this.text=r,r}broadcast(t,...n){const r=`onParent${Gr(t)}`;this.children.forEach(s=>{s&&(s.broadcast(t,...n),s[r]&&s[r](...n))})}emit(t,...n){const{parent:r}=this,s=`onChild${Gr(t)}`;r&&(r[s]&&r[s](...n),r.emit(t,...n))}onParentCheck(t){this.isDisabled||this.setCheckState(t)}onChildCheck(){const{children:t}=this,n=t.filter(s=>!s.isDisabled),r=n.length?n.every(s=>s.checked):!1;this.setCheckState(r)}setCheckState(t){const n=this.children.length,r=this.children.reduce((s,o)=>{const a=o.checked?1:o.indeterminate?.5:0;return s+a},0);this.checked=this.loaded&&this.children.filter(s=>!s.isDisabled).every(s=>s.loaded&&s.checked)&&t,this.indeterminate=this.loaded&&r!==n&&r>0}doCheck(t){if(this.checked===t)return;const{checkStrictly:n,multiple:r}=this.config;n||!r?this.checked=t:(this.broadcast(\"check\",t),this.setCheckState(t),this.emit(\"check\"))}};const Nh=(e,t)=>e.reduce((n,r)=>(r.isLeaf?n.push(r):(!t&&n.push(r),n=n.concat(Nh(r.children,t))),n),[]);class J_{constructor(t,n){this.config=n;const r=(t||[]).map(s=>new Dh(s,this.config));this.nodes=r,this.allNodes=Nh(r,!1),this.leafNodes=Nh(r,!0)}getNodes(){return this.nodes}getFlattedNodes(t){return t?this.leafNodes:this.allNodes}appendNode(t,n){const r=n?n.appendChild(t):new Dh(t,this.config);n||this.nodes.push(r),this.allNodes.push(r),r.isLeaf&&this.leafNodes.push(r)}appendNodes(t,n){t.forEach(r=>this.appendNode(r,n))}getNodeByValue(t,n=!1){return!t&&t!==0?null:this.getFlattedNodes(n).find(s=>wn(s.value,t)||wn(s.pathValues,t))||null}getSameNode(t){return t&&this.getFlattedNodes(!1).find(({value:r,level:s})=>wn(t.value,r)&&t.level===s)||null}}const YC=xe({modelValue:{type:ie([Number,String,Array])},options:{type:ie(Array),default:()=>[]},props:{type:ie(Object),default:()=>({})}}),zF={expandTrigger:\"click\",multiple:!1,checkStrictly:!1,emitPath:!0,lazy:!1,lazyLoad:Mt,value:\"value\",label:\"label\",children:\"children\",leaf:\"leaf\",disabled:\"disabled\",hoverThreshold:500},WF=e=>O(()=>({...zF,...e.props})),Z_=e=>{if(!e)return 0;const t=e.id.split(\"-\");return Number(t[t.length-2])},KF=e=>{if(!e)return;const t=e.querySelector(\"input\");t?t.click():nC(e)&&e.click()},jF=(e,t)=>{const n=t.slice(0),r=n.map(o=>o.uid),s=e.reduce((o,a)=>{const i=r.indexOf(a.uid);return i>-1&&(o.push(a),n.splice(i,1),r.splice(i,1)),o},[]);return s.push(...n),s},Q_=e=>[...new Set(e)],jn=e=>!e&&e!==0?[]:ke(e)?e:[e],UF=ee({name:\"ElCascaderPanel\",components:{ElCascaderMenu:FF},props:{...YC,border:{type:Boolean,default:!0},renderLabel:Function},emits:[ot,Bt,\"close\",\"expand-change\"],setup(e,{emit:t,slots:n}){let r=!1;const s=we(\"cascader\"),o=WF(e);let a=null;const i=W(!0),l=W([]),u=W(null),f=W([]),d=W(null),h=W([]),v=O(()=>o.value.expandTrigger===\"hover\"),b=O(()=>e.renderLabel||n.default),p=()=>{const{options:A}=e,P=o.value;r=!1,a=new J_(A,P),f.value=[a.getNodes()],P.lazy&&sr(e.options)?(i.value=!1,g(void 0,G=>{G&&(a=new J_(G,P),f.value=[a.getNodes()]),i.value=!0,k(!1,!0)})):k(!1,!0)},g=(A,P)=>{const G=o.value;A=A||new Dh({},G,void 0,!0),A.loading=!0;const V=I=>{const j=A,F=j.root?null:j;I&&(a==null||a.appendNodes(I,F)),j.loading=!1,j.loaded=!0,j.childrenData=j.childrenData||[],P&&P(I)};G.lazyLoad(A,V)},m=(A,P)=>{var G;const{level:V}=A,I=f.value.slice(0,V);let j;A.isLeaf?j=A.pathNodes[V-2]:(j=A,I.push(A.children)),((G=d.value)==null?void 0:G.uid)!==(j==null?void 0:j.uid)&&(d.value=A,f.value=I,!P&&t(\"expand-change\",(A==null?void 0:A.pathValues)||[]))},y=(A,P,G=!0)=>{const{checkStrictly:V,multiple:I}=o.value,j=h.value[0];r=!0,!I&&(j==null||j.doCheck(!1)),A.doCheck(P),E(),G&&!I&&!V&&t(\"close\"),!G&&!I&&!V&&_(A)},_=A=>{A&&(A=A.parent,_(A),A&&m(A))},w=A=>a==null?void 0:a.getFlattedNodes(A),S=A=>{var P;return(P=w(A))==null?void 0:P.filter(G=>G.checked!==!1)},C=()=>{h.value.forEach(A=>A.doCheck(!1)),E(),f.value=f.value.slice(0,1),d.value=null,t(\"expand-change\",[])},E=()=>{var A;const{checkStrictly:P,multiple:G}=o.value,V=h.value,I=S(!P),j=jF(V,I),F=j.map(R=>R.valueByOption);h.value=j,u.value=G?F:(A=F[0])!=null?A:null},k=(A=!1,P=!1)=>{const{modelValue:G}=e,{lazy:V,multiple:I,checkStrictly:j}=o.value,F=!j;if(!(!i.value||r||!P&&wn(G,u.value)))if(V&&!A){const B=Q_(yI(jn(G))).map(N=>a==null?void 0:a.getNodeByValue(N)).filter(N=>!!N&&!N.loaded&&!N.loading);B.length?B.forEach(N=>{g(N,()=>k(!1,P))}):k(!0,P)}else{const R=I?jn(G):[G],B=Q_(R.map(N=>a==null?void 0:a.getNodeByValue(N,F)));T(B,P),u.value=Ru(G)}},T=(A,P=!0)=>{const{checkStrictly:G}=o.value,V=h.value,I=A.filter(R=>!!R&&(G||R.isLeaf)),j=a==null?void 0:a.getSameNode(d.value),F=P&&j||I[0];F?F.pathNodes.forEach(R=>m(R,!0)):d.value=null,V.forEach(R=>R.doCheck(!1)),St(I).forEach(R=>R.doCheck(!0)),h.value=I,je(x)},x=()=>{bt&&l.value.forEach(A=>{const P=A==null?void 0:A.$el;if(P){const G=P.querySelector(`.${s.namespace.value}-scrollbar__wrap`),V=P.querySelector(`.${s.b(\"node\")}.${s.is(\"active\")}`)||P.querySelector(`.${s.b(\"node\")}.in-active-path`);Ov(G,V)}})},M=A=>{const P=A.target,{code:G}=A;switch(G){case Ne.up:case Ne.down:{A.preventDefault();const V=G===Ne.up?-1:1;Vc(rC(P,V,`.${s.b(\"node\")}[tabindex=\"-1\"]`));break}case Ne.left:{A.preventDefault();const V=l.value[Z_(P)-1],I=V==null?void 0:V.$el.querySelector(`.${s.b(\"node\")}[aria-expanded=\"true\"]`);Vc(I);break}case Ne.right:{A.preventDefault();const V=l.value[Z_(P)+1],I=V==null?void 0:V.$el.querySelector(`.${s.b(\"node\")}[tabindex=\"-1\"]`);Vc(I);break}case Ne.enter:case Ne.numpadEnter:KF(P);break}};return pt(em,St({config:o,expandingNode:d,checkedNodes:h,isHoverMenu:v,initialLoaded:i,renderLabelFn:b,lazyLoad:g,expandNode:m,handleCheckChange:y})),ye([o,()=>e.options],p,{deep:!0,immediate:!0}),ye(()=>e.modelValue,()=>{r=!1,k()},{deep:!0}),ye(()=>u.value,A=>{wn(A,e.modelValue)||(t(ot,A),t(Bt,A))}),Xp(()=>l.value=[]),it(()=>!sr(e.modelValue)&&k()),{ns:s,menuList:l,menus:f,checkedNodes:h,handleKeyDown:M,handleCheckChange:y,getFlattedNodes:w,getCheckedNodes:S,clearCheckedNodes:C,calculateCheckedValue:E,scrollToExpandingNode:x}}});function qF(e,t,n,r,s,o){const a=ut(\"el-cascader-menu\");return $(),X(\"div\",{class:D([e.ns.b(\"panel\"),e.ns.is(\"bordered\",e.border)]),onKeydown:e.handleKeyDown},[($(!0),X(We,null,vt(e.menus,(i,l)=>($(),ve(a,{key:l,ref_for:!0,ref:u=>e.menuList[l]=u,index:l,nodes:[...i]},{empty:q(()=>[ue(e.$slots,\"empty\")]),_:2},1032,[\"index\",\"nodes\"]))),128))],42,[\"onKeydown\"])}var YF=Oe(UF,[[\"render\",qF],[\"__file\",\"index.vue\"]]);const GC=Qe(YF),ks=xe({type:{type:String,values:[\"primary\",\"success\",\"info\",\"warning\",\"danger\"],default:\"primary\"},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:String,size:{type:String,values:is},effect:{type:String,values:[\"dark\",\"light\",\"plain\"],default:\"light\"},round:Boolean}),GF={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},XF=ee({name:\"ElTag\"}),JF=ee({...XF,props:ks,emits:GF,setup(e,{emit:t}){const n=e,r=sn(),s=we(\"tag\"),o=O(()=>{const{type:u,hit:f,effect:d,closable:h,round:v}=n;return[s.b(),s.is(\"closable\",h),s.m(u||\"primary\"),s.m(r.value),s.m(d),s.is(\"hit\",f),s.is(\"round\",v)]}),a=u=>{t(\"close\",u)},i=u=>{t(\"click\",u)},l=u=>{var f,d,h;(h=(d=(f=u==null?void 0:u.component)==null?void 0:f.subTree)==null?void 0:d.component)!=null&&h.bum&&(u.component.subTree.component.bum=null)};return(u,f)=>u.disableTransitions?($(),X(\"span\",{key:0,class:D(c(o)),style:Ue({backgroundColor:u.color}),onClick:i},[Z(\"span\",{class:D(c(s).e(\"content\"))},[ue(u.$slots,\"default\")],2),u.closable?($(),ve(c(He),{key:0,class:D(c(s).e(\"close\")),onClick:Xe(a,[\"stop\"])},{default:q(()=>[H(c(Dr))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0)],6)):($(),ve(_n,{key:1,name:`${c(s).namespace.value}-zoom-in-center`,appear:\"\",onVnodeMounted:l},{default:q(()=>[Z(\"span\",{class:D(c(o)),style:Ue({backgroundColor:u.color}),onClick:i},[Z(\"span\",{class:D(c(s).e(\"content\"))},[ue(u.$slots,\"default\")],2),u.closable?($(),ve(c(He),{key:0,class:D(c(s).e(\"close\")),onClick:Xe(a,[\"stop\"])},{default:q(()=>[H(c(Dr))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0)],6)]),_:3},8,[\"name\"]))}});var ZF=Oe(JF,[[\"__file\",\"tag.vue\"]]);const Yi=Qe(ZF),QF=xe({...YC,size:on,placeholder:String,disabled:Boolean,clearable:Boolean,filterable:Boolean,filterMethod:{type:ie(Function),default:(e,t)=>e.text.includes(t)},separator:{type:String,default:\" / \"},showAllLevels:{type:Boolean,default:!0},collapseTags:Boolean,maxCollapseTags:{type:Number,default:1},collapseTagsTooltip:{type:Boolean,default:!1},debounce:{type:Number,default:300},beforeFilter:{type:ie(Function),default:()=>!0},placement:{type:ie(String),values:$s,default:\"bottom-start\"},fallbackPlacements:{type:ie(Array),default:[\"bottom-start\",\"bottom\",\"top-start\",\"top\",\"right\",\"left\"]},popperClass:{type:String,default:\"\"},teleported:pn.teleported,tagType:{...ks.type,default:\"info\"},tagEffect:{...ks.effect,default:\"light\"},validateEvent:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},...fa}),eH={[ot]:e=>!0,[Bt]:e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0,visibleChange:e=>Vt(e),expandChange:e=>!!e,removeTag:e=>!!e},zs=new Map;if(bt){let e;document.addEventListener(\"mousedown\",t=>e=t),document.addEventListener(\"mouseup\",t=>{if(e){for(const n of zs.values())for(const{documentHandler:r}of n)r(t,e);e=void 0}})}function eb(e,t){let n=[];return ke(t.arg)?n=t.arg:lr(t.arg)&&n.push(t.arg),function(r,s){const o=t.instance.popperRef,a=r.target,i=s==null?void 0:s.target,l=!t||!t.instance,u=!a||!i,f=e.contains(a)||e.contains(i),d=e===a,h=n.length&&n.some(b=>b==null?void 0:b.contains(a))||n.length&&n.includes(i),v=o&&(o.contains(a)||o.contains(i));l||u||f||d||h||v||t.value(r,s)}}const Es={beforeMount(e,t){zs.has(e)||zs.set(e,[]),zs.get(e).push({documentHandler:eb(e,t),bindingFn:t.value})},updated(e,t){zs.has(e)||zs.set(e,[]);const n=zs.get(e),r=n.findIndex(o=>o.bindingFn===t.oldValue),s={documentHandler:eb(e,t),bindingFn:t.value};r>=0?n.splice(r,1,s):n.push(s)},unmounted(e){zs.delete(e)}},tH=\"ElCascader\",nH=ee({name:tH}),rH=ee({...nH,props:QF,emits:eH,setup(e,{expose:t,emit:n}){const r=e,s={modifiers:[{name:\"arrowPosition\",enabled:!0,phase:\"main\",fn:({state:ce})=>{const{modifiersData:Re,placement:ne}=ce;[\"right\",\"left\",\"bottom\",\"top\"].includes(ne)||(Re.arrow.x=35)},requires:[\"arrow\"]}]},o=mo();let a=0,i=0;const l=we(\"cascader\"),u=we(\"input\"),{t:f}=yt(),{form:d,formItem:h}=xn(),{valueOnClear:v}=Sd(r),{isComposing:b,handleComposition:p}=ql({afterComposition(ce){var Re;const ne=(Re=ce.target)==null?void 0:Re.value;fe(ne)}}),g=W(null),m=W(null),y=W(null),_=W(null),w=W(null),S=W(!1),C=W(!1),E=W(!1),k=W(!1),T=W(\"\"),x=W(\"\"),M=W([]),A=W([]),P=W([]),G=O(()=>o.style),V=O(()=>r.disabled||(d==null?void 0:d.disabled)),I=O(()=>r.placeholder||f(\"el.cascader.placeholder\")),j=O(()=>x.value||M.value.length>0||b.value?\"\":I.value),F=sn(),R=O(()=>F.value===\"small\"?\"small\":\"default\"),B=O(()=>!!r.props.multiple),N=O(()=>!r.filterable||B.value),U=O(()=>B.value?x.value:T.value),J=O(()=>{var ce;return((ce=_.value)==null?void 0:ce.checkedNodes)||[]}),re=O(()=>!r.clearable||V.value||E.value||!C.value?!1:!!J.value.length),le=O(()=>{const{showAllLevels:ce,separator:Re}=r,ne=J.value;return ne.length?B.value?\"\":ne[0].calcText(ce,Re):\"\"}),pe=O(()=>(h==null?void 0:h.validateState)||\"\"),K=O({get(){return Ru(r.modelValue)},set(ce){const Re=ce??v.value;n(ot,Re),n(Bt,Re),r.validateEvent&&(h==null||h.validate(\"change\").catch(ne=>void 0))}}),z=O(()=>[l.b(),l.m(F.value),l.is(\"disabled\",V.value),o.class]),te=O(()=>[u.e(\"icon\"),\"icon-arrow-down\",l.is(\"reverse\",S.value)]),oe=O(()=>l.is(\"focus\",S.value||k.value)),he=O(()=>{var ce,Re;return(Re=(ce=g.value)==null?void 0:ce.popperRef)==null?void 0:Re.contentRef}),Y=ce=>{var Re,ne,Pe;V.value||(ce=ce??!S.value,ce!==S.value&&(S.value=ce,(ne=(Re=m.value)==null?void 0:Re.input)==null||ne.setAttribute(\"aria-expanded\",`${ce}`),ce?(L(),je((Pe=_.value)==null?void 0:Pe.scrollToExpandingNode)):r.filterable&&Ae(),n(\"visibleChange\",ce)))},L=()=>{je(()=>{var ce;(ce=g.value)==null||ce.updatePopper()})},Q=()=>{E.value=!1},se=ce=>{const{showAllLevels:Re,separator:ne}=r;return{node:ce,key:ce.uid,text:ce.calcText(Re,ne),hitState:!1,closable:!V.value&&!ce.isDisabled,isCollapseTag:!1}},ge=ce=>{var Re;const ne=ce.node;ne.doCheck(!1),(Re=_.value)==null||Re.calculateCheckedValue(),n(\"removeTag\",ne.valueByOption)},ae=()=>{if(!B.value)return;const ce=J.value,Re=[],ne=[];if(ce.forEach(Pe=>ne.push(se(Pe))),A.value=ne,ce.length){ce.slice(0,r.maxCollapseTags).forEach(mt=>Re.push(se(mt)));const Pe=ce.slice(r.maxCollapseTags),rt=Pe.length;rt&&(r.collapseTags?Re.push({key:-1,text:`+ ${rt}`,closable:!1,isCollapseTag:!0}):Pe.forEach(mt=>Re.push(se(mt))))}M.value=Re},_e=()=>{var ce,Re;const{filterMethod:ne,showAllLevels:Pe,separator:rt}=r,mt=(Re=(ce=_.value)==null?void 0:ce.getFlattedNodes(!r.props.checkStrictly))==null?void 0:Re.filter(Me=>Me.isDisabled?!1:(Me.calcText(Pe,rt),ne(Me,U.value)));B.value&&(M.value.forEach(Me=>{Me.hitState=!1}),A.value.forEach(Me=>{Me.hitState=!1})),E.value=!0,P.value=mt,L()},me=()=>{var ce;let Re;E.value&&w.value?Re=w.value.$el.querySelector(`.${l.e(\"suggestion-item\")}`):Re=(ce=_.value)==null?void 0:ce.$el.querySelector(`.${l.b(\"node\")}[tabindex=\"-1\"]`),Re&&(Re.focus(),!E.value&&Re.click())},Ce=()=>{var ce,Re;const ne=(ce=m.value)==null?void 0:ce.input,Pe=y.value,rt=(Re=w.value)==null?void 0:Re.$el;if(!(!bt||!ne)){if(rt){const mt=rt.querySelector(`.${l.e(\"suggestion-list\")}`);mt.style.minWidth=`${ne.offsetWidth}px`}if(Pe){const{offsetHeight:mt}=Pe,Me=M.value.length>0?`${Math.max(mt,a)-2}px`:`${a}px`;ne.style.height=Me,L()}}},Te=ce=>{var Re;return(Re=_.value)==null?void 0:Re.getCheckedNodes(ce)},Se=ce=>{L(),n(\"expandChange\",ce)},Ie=ce=>{if(!b.value)switch(ce.code){case Ne.enter:case Ne.numpadEnter:Y();break;case Ne.down:Y(!0),je(me),ce.preventDefault();break;case Ne.esc:S.value===!0&&(ce.preventDefault(),ce.stopPropagation(),Y(!1));break;case Ne.tab:Y(!1);break}},be=()=>{var ce;(ce=_.value)==null||ce.clearCheckedNodes(),!S.value&&r.filterable&&Ae(),Y(!1),n(\"clear\")},Ae=()=>{const{value:ce}=le;T.value=ce,x.value=ce},qe=ce=>{var Re,ne;const{checked:Pe}=ce;B.value?(Re=_.value)==null||Re.handleCheckChange(ce,!Pe,!1):(!Pe&&((ne=_.value)==null||ne.handleCheckChange(ce,!0,!1)),Y(!1))},tt=ce=>{const Re=ce.target,{code:ne}=ce;switch(ne){case Ne.up:case Ne.down:{const Pe=ne===Ne.up?-1:1;Vc(rC(Re,Pe,`.${l.e(\"suggestion-item\")}[tabindex=\"-1\"]`));break}case Ne.enter:case Ne.numpadEnter:Re.click();break}},et=()=>{const ce=M.value,Re=ce[ce.length-1];i=x.value?0:i+1,!(!Re||!i||r.collapseTags&&ce.length>1)&&(Re.hitState?ge(Re):Re.hitState=!0)},at=ce=>{const Re=ce.target,ne=l.e(\"search-input\");Re.className===ne&&(k.value=!0),n(\"focus\",ce)},ht=ce=>{k.value=!1,n(\"blur\",ce)},Ct=nr(()=>{const{value:ce}=U;if(!ce)return;const Re=r.beforeFilter(ce);Qa(Re)?Re.then(_e).catch(()=>{}):Re!==!1?_e():Q()},r.debounce),fe=(ce,Re)=>{!S.value&&Y(!0),!(Re!=null&&Re.isComposing)&&(ce?Ct():Q())},$e=ce=>Number.parseFloat(tP(u.cssVarName(\"input-height\"),ce).value)-2;return ye(E,L),ye([J,V,()=>r.collapseTags],ae),ye(M,()=>{je(()=>Ce())}),ye(F,async()=>{await je();const ce=m.value.input;a=$e(ce)||a,Ce()}),ye(le,Ae,{immediate:!0}),it(()=>{const ce=m.value.input,Re=$e(ce);a=ce.offsetHeight||Re,jt(ce,Ce)}),t({getCheckedNodes:Te,cascaderPanelRef:_,togglePopperVisible:Y,contentRef:he,presentText:le}),(ce,Re)=>($(),ve(c(Cn),{ref_key:\"tooltipRef\",ref:g,visible:S.value,teleported:ce.teleported,\"popper-class\":[c(l).e(\"dropdown\"),ce.popperClass],\"popper-options\":s,\"fallback-placements\":ce.fallbackPlacements,\"stop-popper-mouse-event\":!1,\"gpu-acceleration\":!1,placement:ce.placement,transition:`${c(l).namespace.value}-zoom-in-top`,effect:\"light\",pure:\"\",persistent:ce.persistent,onHide:Q},{default:q(()=>[st(($(),X(\"div\",{class:D(c(z)),style:Ue(c(G)),onClick:()=>Y(c(N)?void 0:!0),onKeydown:Ie,onMouseenter:ne=>C.value=!0,onMouseleave:ne=>C.value=!1},[H(c(yn),{ref_key:\"input\",ref:m,modelValue:T.value,\"onUpdate:modelValue\":ne=>T.value=ne,placeholder:c(j),readonly:c(N),disabled:c(V),\"validate-event\":!1,size:c(F),class:D(c(oe)),tabindex:c(B)&&ce.filterable&&!c(V)?-1:void 0,onCompositionstart:c(p),onCompositionupdate:c(p),onCompositionend:c(p),onFocus:at,onBlur:ht,onInput:fe},{suffix:q(()=>[c(re)?($(),ve(c(He),{key:\"clear\",class:D([c(u).e(\"icon\"),\"icon-circle-close\"]),onClick:Xe(be,[\"stop\"])},{default:q(()=>[H(c(as))]),_:1},8,[\"class\",\"onClick\"])):($(),ve(c(He),{key:\"arrow-down\",class:D(c(te)),onClick:Xe(ne=>Y(),[\"stop\"])},{default:q(()=>[H(c(As))]),_:1},8,[\"class\",\"onClick\"]))]),_:1},8,[\"modelValue\",\"onUpdate:modelValue\",\"placeholder\",\"readonly\",\"disabled\",\"size\",\"class\",\"tabindex\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\"]),c(B)?($(),X(\"div\",{key:0,ref_key:\"tagWrapper\",ref:y,class:D([c(l).e(\"tags\"),c(l).is(\"validate\",!!c(pe))])},[($(!0),X(We,null,vt(M.value,ne=>($(),ve(c(Yi),{key:ne.key,type:ce.tagType,size:c(R),effect:ce.tagEffect,hit:ne.hitState,closable:ne.closable,\"disable-transitions\":\"\",onClose:Pe=>ge(ne)},{default:q(()=>[ne.isCollapseTag===!1?($(),X(\"span\",{key:0},Ee(ne.text),1)):($(),ve(c(Cn),{key:1,disabled:S.value||!ce.collapseTagsTooltip,\"fallback-placements\":[\"bottom\",\"top\",\"right\",\"left\"],placement:\"bottom\",effect:\"light\"},{default:q(()=>[Z(\"span\",null,Ee(ne.text),1)]),content:q(()=>[Z(\"div\",{class:D(c(l).e(\"collapse-tags\"))},[($(!0),X(We,null,vt(A.value.slice(ce.maxCollapseTags),(Pe,rt)=>($(),X(\"div\",{key:rt,class:D(c(l).e(\"collapse-tag\"))},[($(),ve(c(Yi),{key:Pe.key,class:\"in-tooltip\",type:ce.tagType,size:c(R),effect:ce.tagEffect,hit:Pe.hitState,closable:Pe.closable,\"disable-transitions\":\"\",onClose:mt=>ge(Pe)},{default:q(()=>[Z(\"span\",null,Ee(Pe.text),1)]),_:2},1032,[\"type\",\"size\",\"effect\",\"hit\",\"closable\",\"onClose\"]))],2))),128))],2)]),_:2},1032,[\"disabled\"]))]),_:2},1032,[\"type\",\"size\",\"effect\",\"hit\",\"closable\",\"onClose\"]))),128)),ce.filterable&&!c(V)?st(($(),X(\"input\",{key:0,\"onUpdate:modelValue\":ne=>x.value=ne,type:\"text\",class:D(c(l).e(\"search-input\")),placeholder:c(le)?\"\":c(I),onInput:ne=>fe(x.value,ne),onClick:Xe(ne=>Y(!0),[\"stop\"]),onKeydown:Ht(et,[\"delete\"]),onCompositionstart:c(p),onCompositionupdate:c(p),onCompositionend:c(p),onFocus:at,onBlur:ht},null,42,[\"onUpdate:modelValue\",\"placeholder\",\"onInput\",\"onClick\",\"onKeydown\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\"])),[[rd,x.value]]):de(\"v-if\",!0)],2)):de(\"v-if\",!0)],46,[\"onClick\",\"onMouseenter\",\"onMouseleave\"])),[[c(Es),()=>Y(!1),c(he)]])]),content:q(()=>[st(H(c(GC),{ref_key:\"cascaderPanelRef\",ref:_,modelValue:c(K),\"onUpdate:modelValue\":ne=>Ft(K)?K.value=ne:null,options:ce.options,props:r.props,border:!1,\"render-label\":ce.$slots.default,onExpandChange:Se,onClose:ne=>ce.$nextTick(()=>Y(!1))},{empty:q(()=>[ue(ce.$slots,\"empty\")]),_:3},8,[\"modelValue\",\"onUpdate:modelValue\",\"options\",\"props\",\"render-label\",\"onClose\"]),[[Et,!E.value]]),ce.filterable?st(($(),ve(c(ls),{key:0,ref_key:\"suggestionPanel\",ref:w,tag:\"ul\",class:D(c(l).e(\"suggestion-panel\")),\"view-class\":c(l).e(\"suggestion-list\"),onKeydown:tt},{default:q(()=>[P.value.length?($(!0),X(We,{key:0},vt(P.value,ne=>($(),X(\"li\",{key:ne.uid,class:D([c(l).e(\"suggestion-item\"),c(l).is(\"checked\",ne.checked)]),tabindex:-1,onClick:Pe=>qe(ne)},[Z(\"span\",null,Ee(ne.text),1),ne.checked?($(),ve(c(He),{key:0},{default:q(()=>[H(c(jl))]),_:1})):de(\"v-if\",!0)],10,[\"onClick\"]))),128)):ue(ce.$slots,\"empty\",{key:1},()=>[Z(\"li\",{class:D(c(l).e(\"empty-text\"))},Ee(c(f)(\"el.cascader.noMatch\")),3)])]),_:3},8,[\"class\",\"view-class\"])),[[Et,E.value]]):de(\"v-if\",!0)]),_:3},8,[\"visible\",\"teleported\",\"popper-class\",\"fallback-placements\",\"placement\",\"transition\",\"persistent\"]))}});var sH=Oe(rH,[[\"__file\",\"cascader.vue\"]]);const oH=Qe(sH),iH=xe({checked:Boolean,disabled:Boolean,type:{type:String,values:[\"primary\",\"success\",\"info\",\"warning\",\"danger\"],default:\"primary\"}}),aH={\"update:checked\":e=>Vt(e),[Bt]:e=>Vt(e)},lH=ee({name:\"ElCheckTag\"}),cH=ee({...lH,props:iH,emits:aH,setup(e,{emit:t}){const n=e,r=we(\"check-tag\"),s=O(()=>n.disabled),o=O(()=>[r.b(),r.is(\"checked\",n.checked),r.is(\"disabled\",s.value),r.m(n.type||\"primary\")]),a=()=>{if(s.value)return;const i=!n.checked;t(Bt,i),t(\"update:checked\",i)};return(i,l)=>($(),X(\"span\",{class:D(c(o)),onClick:a},[ue(i.$slots,\"default\")],2))}});var uH=Oe(cH,[[\"__file\",\"check-tag.vue\"]]);const dH=Qe(uH),fH=xe({tag:{type:String,default:\"div\"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:ie([Number,Object]),default:()=>Yt({})},sm:{type:ie([Number,Object]),default:()=>Yt({})},md:{type:ie([Number,Object]),default:()=>Yt({})},lg:{type:ie([Number,Object]),default:()=>Yt({})},xl:{type:ie([Number,Object]),default:()=>Yt({})}}),XC=Symbol(\"rowContextKey\"),hH=ee({name:\"ElCol\"}),pH=ee({...hH,props:fH,setup(e){const t=e,{gutter:n}=Fe(XC,{gutter:O(()=>0)}),r=we(\"col\"),s=O(()=>{const a={};return n.value&&(a.paddingLeft=a.paddingRight=`${n.value/2}px`),a}),o=O(()=>{const a=[];return[\"span\",\"offset\",\"pull\",\"push\"].forEach(u=>{const f=t[u];Ge(f)&&(u===\"span\"?a.push(r.b(`${t[u]}`)):f>0&&a.push(r.b(`${u}-${t[u]}`)))}),[\"xs\",\"sm\",\"md\",\"lg\",\"xl\"].forEach(u=>{Ge(t[u])?a.push(r.b(`${u}-${t[u]}`)):lt(t[u])&&Object.entries(t[u]).forEach(([f,d])=>{a.push(f!==\"span\"?r.b(`${u}-${f}-${d}`):r.b(`${u}-${d}`))})}),n.value&&a.push(r.is(\"guttered\")),[r.b(),a]});return(a,i)=>($(),ve(dt(a.tag),{class:D(c(o)),style:Ue(c(s))},{default:q(()=>[ue(a.$slots,\"default\")]),_:3},8,[\"class\",\"style\"]))}});var vH=Oe(pH,[[\"__file\",\"col.vue\"]]);const JC=Qe(vH),tb=e=>Ge(e)||ze(e)||ke(e),mH=xe({accordion:Boolean,modelValue:{type:ie([Array,String,Number]),default:()=>Yt([])}}),gH={[ot]:tb,[Bt]:tb},ZC=Symbol(\"collapseContextKey\"),_H=(e,t)=>{const n=W(Pn(e.modelValue)),r=o=>{n.value=o;const a=e.accordion?n.value[0]:n.value;t(ot,a),t(Bt,a)},s=o=>{if(e.accordion)r([n.value[0]===o?\"\":o]);else{const a=[...n.value],i=a.indexOf(o);i>-1?a.splice(i,1):a.push(o),r(a)}};return ye(()=>e.modelValue,()=>n.value=Pn(e.modelValue),{deep:!0}),pt(ZC,{activeNames:n,handleItemClick:s}),{activeNames:n,setActiveNames:r}},bH=()=>{const e=we(\"collapse\");return{rootKls:O(()=>e.b())}},yH=ee({name:\"ElCollapse\"}),wH=ee({...yH,props:mH,emits:gH,setup(e,{expose:t,emit:n}){const r=e,{activeNames:s,setActiveNames:o}=_H(r,n),{rootKls:a}=bH();return t({activeNames:s,setActiveNames:o}),(i,l)=>($(),X(\"div\",{class:D(c(a))},[ue(i.$slots,\"default\")],2))}});var SH=Oe(wH,[[\"__file\",\"collapse.vue\"]]);const CH=ee({name:\"ElCollapseTransition\"}),kH=ee({...CH,setup(e){const t=we(\"collapse-transition\"),n=s=>{s.style.maxHeight=\"\",s.style.overflow=s.dataset.oldOverflow,s.style.paddingTop=s.dataset.oldPaddingTop,s.style.paddingBottom=s.dataset.oldPaddingBottom},r={beforeEnter(s){s.dataset||(s.dataset={}),s.dataset.oldPaddingTop=s.style.paddingTop,s.dataset.oldPaddingBottom=s.style.paddingBottom,s.style.height&&(s.dataset.elExistsHeight=s.style.height),s.style.maxHeight=0,s.style.paddingTop=0,s.style.paddingBottom=0},enter(s){requestAnimationFrame(()=>{s.dataset.oldOverflow=s.style.overflow,s.dataset.elExistsHeight?s.style.maxHeight=s.dataset.elExistsHeight:s.scrollHeight!==0?s.style.maxHeight=`${s.scrollHeight}px`:s.style.maxHeight=0,s.style.paddingTop=s.dataset.oldPaddingTop,s.style.paddingBottom=s.dataset.oldPaddingBottom,s.style.overflow=\"hidden\"})},afterEnter(s){s.style.maxHeight=\"\",s.style.overflow=s.dataset.oldOverflow},enterCancelled(s){n(s)},beforeLeave(s){s.dataset||(s.dataset={}),s.dataset.oldPaddingTop=s.style.paddingTop,s.dataset.oldPaddingBottom=s.style.paddingBottom,s.dataset.oldOverflow=s.style.overflow,s.style.maxHeight=`${s.scrollHeight}px`,s.style.overflow=\"hidden\"},leave(s){s.scrollHeight!==0&&(s.style.maxHeight=0,s.style.paddingTop=0,s.style.paddingBottom=0)},afterLeave(s){n(s)},leaveCancelled(s){n(s)}};return(s,o)=>($(),ve(_n,ft({name:c(t).b()},ZT(r)),{default:q(()=>[ue(s.$slots,\"default\")]),_:3},16,[\"name\"]))}});var EH=Oe(kH,[[\"__file\",\"collapse-transition.vue\"]]);const Ad=Qe(EH),TH=xe({title:{type:String,default:\"\"},name:{type:ie([String,Number]),default:void 0},icon:{type:Nt,default:qn},disabled:Boolean}),RH=e=>{const t=Fe(ZC),{namespace:n}=we(\"collapse\"),r=W(!1),s=W(!1),o=Bv(),a=O(()=>o.current++),i=O(()=>{var h;return(h=e.name)!=null?h:`${n.value}-id-${o.prefix}-${c(a)}`}),l=O(()=>t==null?void 0:t.activeNames.value.includes(c(i)));return{focusing:r,id:a,isActive:l,handleFocus:()=>{setTimeout(()=>{s.value?s.value=!1:r.value=!0},50)},handleHeaderClick:()=>{e.disabled||(t==null||t.handleItemClick(c(i)),r.value=!1,s.value=!0)},handleEnterClick:()=>{t==null||t.handleItemClick(c(i))}}},xH=(e,{focusing:t,isActive:n,id:r})=>{const s=we(\"collapse\"),o=O(()=>[s.b(\"item\"),s.is(\"active\",c(n)),s.is(\"disabled\",e.disabled)]),a=O(()=>[s.be(\"item\",\"header\"),s.is(\"active\",c(n)),{focusing:c(t)&&!e.disabled}]),i=O(()=>[s.be(\"item\",\"arrow\"),s.is(\"active\",c(n))]),l=O(()=>s.be(\"item\",\"wrap\")),u=O(()=>s.be(\"item\",\"content\")),f=O(()=>s.b(`content-${c(r)}`)),d=O(()=>s.b(`head-${c(r)}`));return{arrowKls:i,headKls:a,rootKls:o,itemWrapperKls:l,itemContentKls:u,scopedContentId:f,scopedHeadId:d}},OH=ee({name:\"ElCollapseItem\"}),MH=ee({...OH,props:TH,setup(e,{expose:t}){const n=e,{focusing:r,id:s,isActive:o,handleFocus:a,handleHeaderClick:i,handleEnterClick:l}=RH(n),{arrowKls:u,headKls:f,rootKls:d,itemWrapperKls:h,itemContentKls:v,scopedContentId:b,scopedHeadId:p}=xH(n,{focusing:r,isActive:o,id:s});return t({isActive:o}),(g,m)=>($(),X(\"div\",{class:D(c(d))},[Z(\"button\",{id:c(p),class:D(c(f)),\"aria-expanded\":c(o),\"aria-controls\":c(b),\"aria-describedby\":c(b),tabindex:g.disabled?-1:0,type:\"button\",onClick:c(i),onKeydown:Ht(Xe(c(l),[\"stop\",\"prevent\"]),[\"space\",\"enter\"]),onFocus:c(a),onBlur:y=>r.value=!1},[ue(g.$slots,\"title\",{},()=>[Ve(Ee(g.title),1)]),ue(g.$slots,\"icon\",{isActive:c(o)},()=>[H(c(He),{class:D(c(u))},{default:q(()=>[($(),ve(dt(g.icon)))]),_:1},8,[\"class\"])])],42,[\"id\",\"aria-expanded\",\"aria-controls\",\"aria-describedby\",\"tabindex\",\"onClick\",\"onKeydown\",\"onFocus\",\"onBlur\"]),H(c(Ad),null,{default:q(()=>[st(Z(\"div\",{id:c(b),role:\"region\",class:D(c(h)),\"aria-hidden\":!c(o),\"aria-labelledby\":c(p)},[Z(\"div\",{class:D(c(v))},[ue(g.$slots,\"default\")],2)],10,[\"id\",\"aria-hidden\",\"aria-labelledby\"]),[[Et,c(o)]])]),_:3})],2))}});var QC=Oe(MH,[[\"__file\",\"collapse-item.vue\"]]);const e2=Qe(SH,{CollapseItem:QC}),t2=Gt(QC),AH=xe({color:{type:ie(Object),required:!0},vertical:{type:Boolean,default:!1}});let Of=!1;function _l(e,t){if(!bt)return;const n=function(o){var a;(a=t.drag)==null||a.call(t,o)},r=function(o){var a;document.removeEventListener(\"mousemove\",n),document.removeEventListener(\"mouseup\",r),document.removeEventListener(\"touchmove\",n),document.removeEventListener(\"touchend\",r),document.onselectstart=null,document.ondragstart=null,Of=!1,(a=t.end)==null||a.call(t,o)},s=function(o){var a;Of||(o.preventDefault(),document.onselectstart=()=>!1,document.ondragstart=()=>!1,document.addEventListener(\"mousemove\",n),document.addEventListener(\"mouseup\",r),document.addEventListener(\"touchmove\",n),document.addEventListener(\"touchend\",r),Of=!0,(a=t.start)==null||a.call(t,o))};e.addEventListener(\"mousedown\",s),e.addEventListener(\"touchstart\",s,{passive:!1})}const $H=(e,t)=>{if(!bt||!e||!t)return!1;const n=e.getBoundingClientRect();let r;return t instanceof Element?r=t.getBoundingClientRect():r={top:0,right:window.innerWidth,bottom:window.innerHeight,left:0},n.top<r.bottom&&n.bottom>r.top&&n.right>r.left&&n.left<r.right},nb=e=>{let t=0,n=e;for(;n;)t+=n.offsetTop,n=n.offsetParent;return t},Fh=(e,t)=>Math.abs(nb(e)-nb(t)),nm=e=>{let t,n;return e.type===\"touchend\"?(n=e.changedTouches[0].clientY,t=e.changedTouches[0].clientX):e.type.startsWith(\"touch\")?(n=e.touches[0].clientY,t=e.touches[0].clientX):(n=e.clientY,t=e.clientX),{clientX:t,clientY:n}},LH=e=>{const t=ct(),{t:n}=yt(),r=Wt(),s=Wt(),o=O(()=>e.color.get(\"alpha\")),a=O(()=>n(\"el.colorpicker.alphaLabel\"));function i(d){var h;d.target!==r.value&&l(d),(h=r.value)==null||h.focus()}function l(d){if(!s.value||!r.value)return;const v=t.vnode.el.getBoundingClientRect(),{clientX:b,clientY:p}=nm(d);if(e.vertical){let g=p-v.top;g=Math.max(r.value.offsetHeight/2,g),g=Math.min(g,v.height-r.value.offsetHeight/2),e.color.set(\"alpha\",Math.round((g-r.value.offsetHeight/2)/(v.height-r.value.offsetHeight)*100))}else{let g=b-v.left;g=Math.max(r.value.offsetWidth/2,g),g=Math.min(g,v.width-r.value.offsetWidth/2),e.color.set(\"alpha\",Math.round((g-r.value.offsetWidth/2)/(v.width-r.value.offsetWidth)*100))}}function u(d){const{code:h,shiftKey:v}=d,b=v?10:1;switch(h){case Ne.left:case Ne.down:d.preventDefault(),d.stopPropagation(),f(-b);break;case Ne.right:case Ne.up:d.preventDefault(),d.stopPropagation(),f(b);break}}function f(d){let h=o.value+d;h=h<0?0:h>100?100:h,e.color.set(\"alpha\",h)}return{thumb:r,bar:s,alpha:o,alphaLabel:a,handleDrag:l,handleClick:i,handleKeydown:u}},IH=(e,{bar:t,thumb:n,handleDrag:r})=>{const s=ct(),o=we(\"color-alpha-slider\"),a=W(0),i=W(0),l=W();function u(){if(!n.value||e.vertical)return 0;const y=s.vnode.el,_=e.color.get(\"alpha\");return y?Math.round(_*(y.offsetWidth-n.value.offsetWidth/2)/100):0}function f(){if(!n.value)return 0;const y=s.vnode.el;if(!e.vertical)return 0;const _=e.color.get(\"alpha\");return y?Math.round(_*(y.offsetHeight-n.value.offsetHeight/2)/100):0}function d(){if(e.color&&e.color.value){const{r:y,g:_,b:w}=e.color.toRgb();return`linear-gradient(to right, rgba(${y}, ${_}, ${w}, 0) 0%, rgba(${y}, ${_}, ${w}, 1) 100%)`}return\"\"}function h(){a.value=u(),i.value=f(),l.value=d()}it(()=>{if(!t.value||!n.value)return;const y={drag:_=>{r(_)},end:_=>{r(_)}};_l(t.value,y),_l(n.value,y),h()}),ye(()=>e.color.get(\"alpha\"),()=>h()),ye(()=>e.color.value,()=>h());const v=O(()=>[o.b(),o.is(\"vertical\",e.vertical)]),b=O(()=>o.e(\"bar\")),p=O(()=>o.e(\"thumb\")),g=O(()=>({background:l.value})),m=O(()=>({left:en(a.value),top:en(i.value)}));return{rootKls:v,barKls:b,barStyle:g,thumbKls:p,thumbStyle:m,update:h}},PH=\"ElColorAlphaSlider\",DH=ee({name:PH}),BH=ee({...DH,props:AH,setup(e,{expose:t}){const n=e,{alpha:r,alphaLabel:s,bar:o,thumb:a,handleDrag:i,handleClick:l,handleKeydown:u}=LH(n),{rootKls:f,barKls:d,barStyle:h,thumbKls:v,thumbStyle:b,update:p}=IH(n,{bar:o,thumb:a,handleDrag:i});return t({update:p,bar:o,thumb:a}),(g,m)=>($(),X(\"div\",{class:D(c(f))},[Z(\"div\",{ref_key:\"bar\",ref:o,class:D(c(d)),style:Ue(c(h)),onClick:c(l)},null,14,[\"onClick\"]),Z(\"div\",{ref_key:\"thumb\",ref:a,class:D(c(v)),style:Ue(c(b)),\"aria-label\":c(s),\"aria-valuenow\":c(r),\"aria-orientation\":g.vertical?\"vertical\":\"horizontal\",\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\",role:\"slider\",tabindex:\"0\",onKeydown:c(u)},null,46,[\"aria-label\",\"aria-valuenow\",\"aria-orientation\",\"onKeydown\"])],2))}});var NH=Oe(BH,[[\"__file\",\"alpha-slider.vue\"]]);const FH=ee({name:\"ElColorHueSlider\",props:{color:{type:Object,required:!0},vertical:Boolean},setup(e){const t=we(\"color-hue-slider\"),n=ct(),r=W(),s=W(),o=W(0),a=W(0),i=O(()=>e.color.get(\"hue\"));ye(()=>i.value,()=>{h()});function l(v){v.target!==r.value&&u(v)}function u(v){if(!s.value||!r.value)return;const p=n.vnode.el.getBoundingClientRect(),{clientX:g,clientY:m}=nm(v);let y;if(e.vertical){let _=m-p.top;_=Math.min(_,p.height-r.value.offsetHeight/2),_=Math.max(r.value.offsetHeight/2,_),y=Math.round((_-r.value.offsetHeight/2)/(p.height-r.value.offsetHeight)*360)}else{let _=g-p.left;_=Math.min(_,p.width-r.value.offsetWidth/2),_=Math.max(r.value.offsetWidth/2,_),y=Math.round((_-r.value.offsetWidth/2)/(p.width-r.value.offsetWidth)*360)}e.color.set(\"hue\",y)}function f(){if(!r.value)return 0;const v=n.vnode.el;if(e.vertical)return 0;const b=e.color.get(\"hue\");return v?Math.round(b*(v.offsetWidth-r.value.offsetWidth/2)/360):0}function d(){if(!r.value)return 0;const v=n.vnode.el;if(!e.vertical)return 0;const b=e.color.get(\"hue\");return v?Math.round(b*(v.offsetHeight-r.value.offsetHeight/2)/360):0}function h(){o.value=f(),a.value=d()}return it(()=>{if(!s.value||!r.value)return;const v={drag:b=>{u(b)},end:b=>{u(b)}};_l(s.value,v),_l(r.value,v),h()}),{bar:s,thumb:r,thumbLeft:o,thumbTop:a,hueValue:i,handleClick:l,update:h,ns:t}}});function HH(e,t,n,r,s,o){return $(),X(\"div\",{class:D([e.ns.b(),e.ns.is(\"vertical\",e.vertical)])},[Z(\"div\",{ref:\"bar\",class:D(e.ns.e(\"bar\")),onClick:e.handleClick},null,10,[\"onClick\"]),Z(\"div\",{ref:\"thumb\",class:D(e.ns.e(\"thumb\")),style:Ue({left:e.thumbLeft+\"px\",top:e.thumbTop+\"px\"})},null,6)],2)}var VH=Oe(FH,[[\"render\",HH],[\"__file\",\"hue-slider.vue\"]]);const zH=xe({modelValue:String,id:String,showAlpha:Boolean,colorFormat:String,disabled:Boolean,size:on,popperClass:{type:String,default:\"\"},tabindex:{type:[String,Number],default:0},teleported:pn.teleported,predefine:{type:ie(Array)},validateEvent:{type:Boolean,default:!0},...kn([\"ariaLabel\"])}),WH={[ot]:e=>ze(e)||fn(e),[Bt]:e=>ze(e)||fn(e),activeChange:e=>ze(e)||fn(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},n2=Symbol(\"colorPickerContextKey\"),rb=function(e,t,n){return[e,t*n/((e=(2-t)*n)<1?e:2-e)||0,e/2]},KH=function(e){return ze(e)&&e.includes(\".\")&&Number.parseFloat(e)===1},jH=function(e){return ze(e)&&e.includes(\"%\")},Mi=function(e,t){KH(e)&&(e=\"100%\");const n=jH(e);return e=Math.min(t,Math.max(0,Number.parseFloat(`${e}`))),n&&(e=Number.parseInt(`${e*t}`,10)/100),Math.abs(e-t)<1e-6?1:e%t/Number.parseFloat(t)},sb={10:\"A\",11:\"B\",12:\"C\",13:\"D\",14:\"E\",15:\"F\"},jc=e=>{e=Math.min(Math.round(e),255);const t=Math.floor(e/16),n=e%16;return`${sb[t]||t}${sb[n]||n}`},ob=function({r:e,g:t,b:n}){return Number.isNaN(+e)||Number.isNaN(+t)||Number.isNaN(+n)?\"\":`#${jc(e)}${jc(t)}${jc(n)}`},Mf={A:10,B:11,C:12,D:13,E:14,F:15},To=function(e){return e.length===2?(Mf[e[0].toUpperCase()]||+e[0])*16+(Mf[e[1].toUpperCase()]||+e[1]):Mf[e[1].toUpperCase()]||+e[1]},UH=function(e,t,n){t=t/100,n=n/100;let r=t;const s=Math.max(n,.01);n*=2,t*=n<=1?n:2-n,r*=s<=1?s:2-s;const o=(n+t)/2,a=n===0?2*r/(s+r):2*t/(n+t);return{h:e,s:a*100,v:o*100}},ib=(e,t,n)=>{e=Mi(e,255),t=Mi(t,255),n=Mi(n,255);const r=Math.max(e,t,n),s=Math.min(e,t,n);let o;const a=r,i=r-s,l=r===0?0:i/r;if(r===s)o=0;else{switch(r){case e:{o=(t-n)/i+(t<n?6:0);break}case t:{o=(n-e)/i+2;break}case n:{o=(e-t)/i+4;break}}o/=6}return{h:o*360,s:l*100,v:a*100}},xa=function(e,t,n){e=Mi(e,360)*6,t=Mi(t,100),n=Mi(n,100);const r=Math.floor(e),s=e-r,o=n*(1-t),a=n*(1-s*t),i=n*(1-(1-s)*t),l=r%6,u=[n,a,o,o,i,n][l],f=[i,n,n,a,o,o][l],d=[o,o,i,n,n,a][l];return{r:Math.round(u*255),g:Math.round(f*255),b:Math.round(d*255)}};class Xa{constructor(t={}){this._hue=0,this._saturation=100,this._value=100,this._alpha=100,this.enableAlpha=!1,this.format=\"hex\",this.value=\"\";for(const n in t)kt(t,n)&&(this[n]=t[n]);t.value?this.fromString(t.value):this.doOnChange()}set(t,n){if(arguments.length===1&&typeof t==\"object\"){for(const r in t)kt(t,r)&&this.set(r,t[r]);return}this[`_${t}`]=n,this.doOnChange()}get(t){return t===\"alpha\"?Math.floor(this[`_${t}`]):this[`_${t}`]}toRgb(){return xa(this._hue,this._saturation,this._value)}fromString(t){if(!t){this._hue=0,this._saturation=100,this._value=100,this.doOnChange();return}const n=(r,s,o)=>{this._hue=Math.max(0,Math.min(360,r)),this._saturation=Math.max(0,Math.min(100,s)),this._value=Math.max(0,Math.min(100,o)),this.doOnChange()};if(t.includes(\"hsl\")){const r=t.replace(/hsla|hsl|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(s=>s!==\"\").map((s,o)=>o>2?Number.parseFloat(s):Number.parseInt(s,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:s,s:o,v:a}=UH(r[0],r[1],r[2]);n(s,o,a)}}else if(t.includes(\"hsv\")){const r=t.replace(/hsva|hsv|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(s=>s!==\"\").map((s,o)=>o>2?Number.parseFloat(s):Number.parseInt(s,10));r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3&&n(r[0],r[1],r[2])}else if(t.includes(\"rgb\")){const r=t.replace(/rgba|rgb|\\(|\\)/gm,\"\").split(/\\s|,/g).filter(s=>s!==\"\").map((s,o)=>o>2?Number.parseFloat(s):Number.parseInt(s,10));if(r.length===4?this._alpha=Number.parseFloat(r[3])*100:r.length===3&&(this._alpha=100),r.length>=3){const{h:s,s:o,v:a}=ib(r[0],r[1],r[2]);n(s,o,a)}}else if(t.includes(\"#\")){const r=t.replace(\"#\",\"\").trim();if(!/^[0-9a-fA-F]{3}$|^[0-9a-fA-F]{6}$|^[0-9a-fA-F]{8}$/.test(r))return;let s,o,a;r.length===3?(s=To(r[0]+r[0]),o=To(r[1]+r[1]),a=To(r[2]+r[2])):(r.length===6||r.length===8)&&(s=To(r.slice(0,2)),o=To(r.slice(2,4)),a=To(r.slice(4,6))),r.length===8?this._alpha=To(r.slice(6))/255*100:(r.length===3||r.length===6)&&(this._alpha=100);const{h:i,s:l,v:u}=ib(s,o,a);n(i,l,u)}}compare(t){return Math.abs(t._hue-this._hue)<2&&Math.abs(t._saturation-this._saturation)<1&&Math.abs(t._value-this._value)<1&&Math.abs(t._alpha-this._alpha)<1}doOnChange(){const{_hue:t,_saturation:n,_value:r,_alpha:s,format:o}=this;if(this.enableAlpha)switch(o){case\"hsl\":{const a=rb(t,n/100,r/100);this.value=`hsla(${t}, ${Math.round(a[1]*100)}%, ${Math.round(a[2]*100)}%, ${this.get(\"alpha\")/100})`;break}case\"hsv\":{this.value=`hsva(${t}, ${Math.round(n)}%, ${Math.round(r)}%, ${this.get(\"alpha\")/100})`;break}case\"hex\":{this.value=`${ob(xa(t,n,r))}${jc(s*255/100)}`;break}default:{const{r:a,g:i,b:l}=xa(t,n,r);this.value=`rgba(${a}, ${i}, ${l}, ${this.get(\"alpha\")/100})`}}else switch(o){case\"hsl\":{const a=rb(t,n/100,r/100);this.value=`hsl(${t}, ${Math.round(a[1]*100)}%, ${Math.round(a[2]*100)}%)`;break}case\"hsv\":{this.value=`hsv(${t}, ${Math.round(n)}%, ${Math.round(r)}%)`;break}case\"rgb\":{const{r:a,g:i,b:l}=xa(t,n,r);this.value=`rgb(${a}, ${i}, ${l})`;break}default:this.value=ob(xa(t,n,r))}}}const qH=ee({props:{colors:{type:Array,required:!0},color:{type:Object,required:!0},enableAlpha:{type:Boolean,required:!0}},setup(e){const t=we(\"color-predefine\"),{currentColor:n}=Fe(n2),r=W(o(e.colors,e.color));ye(()=>n.value,a=>{const i=new Xa;i.fromString(a),r.value.forEach(l=>{l.selected=i.compare(l)})}),En(()=>{r.value=o(e.colors,e.color)});function s(a){e.color.fromString(e.colors[a])}function o(a,i){return a.map(l=>{const u=new Xa;return u.enableAlpha=e.enableAlpha,u.format=\"rgba\",u.fromString(l),u.selected=u.value===i.value,u})}return{rgbaColors:r,handleSelect:s,ns:t}}});function YH(e,t,n,r,s,o){return $(),X(\"div\",{class:D(e.ns.b())},[Z(\"div\",{class:D(e.ns.e(\"colors\"))},[($(!0),X(We,null,vt(e.rgbaColors,(a,i)=>($(),X(\"div\",{key:e.colors[i],class:D([e.ns.e(\"color-selector\"),e.ns.is(\"alpha\",a._alpha<100),{selected:a.selected}]),onClick:l=>e.handleSelect(i)},[Z(\"div\",{style:Ue({backgroundColor:a.value})},null,4)],10,[\"onClick\"]))),128))],2)],2)}var GH=Oe(qH,[[\"render\",YH],[\"__file\",\"predefine.vue\"]]);const XH=ee({name:\"ElSlPanel\",props:{color:{type:Object,required:!0}},setup(e){const t=we(\"color-svpanel\"),n=ct(),r=W(0),s=W(0),o=W(\"hsl(0, 100%, 50%)\"),a=O(()=>{const u=e.color.get(\"hue\"),f=e.color.get(\"value\");return{hue:u,value:f}});function i(){const u=e.color.get(\"saturation\"),f=e.color.get(\"value\"),d=n.vnode.el,{clientWidth:h,clientHeight:v}=d;s.value=u*h/100,r.value=(100-f)*v/100,o.value=`hsl(${e.color.get(\"hue\")}, 100%, 50%)`}function l(u){const d=n.vnode.el.getBoundingClientRect(),{clientX:h,clientY:v}=nm(u);let b=h-d.left,p=v-d.top;b=Math.max(0,b),b=Math.min(b,d.width),p=Math.max(0,p),p=Math.min(p,d.height),s.value=b,r.value=p,e.color.set({saturation:b/d.width*100,value:100-p/d.height*100})}return ye(()=>a.value,()=>{i()}),it(()=>{_l(n.vnode.el,{drag:u=>{l(u)},end:u=>{l(u)}}),i()}),{cursorTop:r,cursorLeft:s,background:o,colorValue:a,handleDrag:l,update:i,ns:t}}});function JH(e,t,n,r,s,o){return $(),X(\"div\",{class:D(e.ns.b()),style:Ue({backgroundColor:e.background})},[Z(\"div\",{class:D(e.ns.e(\"white\"))},null,2),Z(\"div\",{class:D(e.ns.e(\"black\"))},null,2),Z(\"div\",{class:D(e.ns.e(\"cursor\")),style:Ue({top:e.cursorTop+\"px\",left:e.cursorLeft+\"px\"})},[Z(\"div\")],6)],6)}var ZH=Oe(XH,[[\"render\",JH],[\"__file\",\"sv-panel.vue\"]]);const QH=ee({name:\"ElColorPicker\"}),eV=ee({...QH,props:zH,emits:WH,setup(e,{expose:t,emit:n}){const r=e,{t:s}=yt(),o=we(\"color\"),{formItem:a}=xn(),i=sn(),l=On(),{inputId:u,isLabeledByFormItem:f}=Cr(r,{formItemContext:a}),d=W(),h=W(),v=W(),b=W(),p=W(),g=W(),{isFocused:m,handleFocus:y,handleBlur:_}=_o(p,{beforeFocus(){return l.value},beforeBlur(te){var oe;return(oe=b.value)==null?void 0:oe.isFocusInsideContent(te)},afterBlur(){V(!1),R()}});let w=!0;const S=St(new Xa({enableAlpha:r.showAlpha,format:r.colorFormat||\"\",value:r.modelValue})),C=W(!1),E=W(!1),k=W(\"\"),T=O(()=>!r.modelValue&&!E.value?\"transparent\":G(S,r.showAlpha)),x=O(()=>!r.modelValue&&!E.value?\"\":S.value),M=O(()=>f.value?void 0:r.ariaLabel||s(\"el.colorpicker.defaultLabel\")),A=O(()=>f.value?a==null?void 0:a.labelId:void 0),P=O(()=>[o.b(\"picker\"),o.is(\"disabled\",l.value),o.bm(\"picker\",i.value),o.is(\"focused\",m.value)]);function G(te,oe){if(!(te instanceof Xa))throw new TypeError(\"color should be instance of _color Class\");const{r:he,g:Y,b:L}=te.toRgb();return oe?`rgba(${he}, ${Y}, ${L}, ${te.get(\"alpha\")/100})`:`rgb(${he}, ${Y}, ${L})`}function V(te){C.value=te}const I=nr(V,100,{leading:!0});function j(){l.value||V(!0)}function F(){I(!1),R()}function R(){je(()=>{r.modelValue?S.fromString(r.modelValue):(S.value=\"\",je(()=>{E.value=!1}))})}function B(){l.value||I(!C.value)}function N(){S.fromString(k.value)}function U(){const te=S.value;n(ot,te),n(\"change\",te),r.validateEvent&&(a==null||a.validate(\"change\").catch(oe=>void 0)),I(!1),je(()=>{const oe=new Xa({enableAlpha:r.showAlpha,format:r.colorFormat||\"\",value:r.modelValue});S.compare(oe)||R()})}function J(){I(!1),n(ot,null),n(\"change\",null),r.modelValue!==null&&r.validateEvent&&(a==null||a.validate(\"change\").catch(te=>void 0)),R()}function re(){C.value&&(F(),m.value&&K())}function le(te){te.preventDefault(),te.stopPropagation(),V(!1),R()}function pe(te){switch(te.code){case Ne.enter:case Ne.numpadEnter:case Ne.space:te.preventDefault(),te.stopPropagation(),j(),g.value.focus();break;case Ne.esc:le(te);break}}function K(){p.value.focus()}function z(){p.value.blur()}return it(()=>{r.modelValue&&(k.value=x.value)}),ye(()=>r.modelValue,te=>{te?te&&te!==S.value&&(w=!1,S.fromString(te)):E.value=!1}),ye(()=>[r.colorFormat,r.showAlpha],()=>{S.enableAlpha=r.showAlpha,S.format=r.colorFormat||S.format,S.doOnChange(),n(ot,S.value)}),ye(()=>x.value,te=>{k.value=te,w&&n(\"activeChange\",te),w=!0}),ye(()=>S.value,()=>{!r.modelValue&&!E.value&&(E.value=!0)}),ye(()=>C.value,()=>{je(()=>{var te,oe,he;(te=d.value)==null||te.update(),(oe=h.value)==null||oe.update(),(he=v.value)==null||he.update()})}),pt(n2,{currentColor:x}),t({color:S,show:j,hide:F,focus:K,blur:z}),(te,oe)=>($(),ve(c(Cn),{ref_key:\"popper\",ref:b,visible:C.value,\"show-arrow\":!1,\"fallback-placements\":[\"bottom\",\"top\",\"right\",\"left\"],offset:0,\"gpu-acceleration\":!1,\"popper-class\":[c(o).be(\"picker\",\"panel\"),c(o).b(\"dropdown\"),te.popperClass],\"stop-popper-mouse-event\":!1,effect:\"light\",trigger:\"click\",teleported:te.teleported,transition:`${c(o).namespace.value}-zoom-in-top`,persistent:\"\",onHide:he=>V(!1)},{content:q(()=>[st(($(),X(\"div\",{onKeydown:Ht(le,[\"esc\"])},[Z(\"div\",{class:D(c(o).be(\"dropdown\",\"main-wrapper\"))},[H(VH,{ref_key:\"hue\",ref:d,class:\"hue-slider\",color:c(S),vertical:\"\"},null,8,[\"color\"]),H(ZH,{ref_key:\"sv\",ref:h,color:c(S)},null,8,[\"color\"])],2),te.showAlpha?($(),ve(NH,{key:0,ref_key:\"alpha\",ref:v,color:c(S)},null,8,[\"color\"])):de(\"v-if\",!0),te.predefine?($(),ve(GH,{key:1,ref:\"predefine\",\"enable-alpha\":te.showAlpha,color:c(S),colors:te.predefine},null,8,[\"enable-alpha\",\"color\",\"colors\"])):de(\"v-if\",!0),Z(\"div\",{class:D(c(o).be(\"dropdown\",\"btns\"))},[Z(\"span\",{class:D(c(o).be(\"dropdown\",\"value\"))},[H(c(yn),{ref_key:\"inputRef\",ref:g,modelValue:k.value,\"onUpdate:modelValue\":he=>k.value=he,\"validate-event\":!1,size:\"small\",onKeyup:Ht(N,[\"enter\"]),onBlur:N},null,8,[\"modelValue\",\"onUpdate:modelValue\",\"onKeyup\"])],2),H(c(cn),{class:D(c(o).be(\"dropdown\",\"link-btn\")),text:\"\",size:\"small\",onClick:J},{default:q(()=>[Ve(Ee(c(s)(\"el.colorpicker.clear\")),1)]),_:1},8,[\"class\"]),H(c(cn),{plain:\"\",size:\"small\",class:D(c(o).be(\"dropdown\",\"btn\")),onClick:U},{default:q(()=>[Ve(Ee(c(s)(\"el.colorpicker.confirm\")),1)]),_:1},8,[\"class\"])],2)],40,[\"onKeydown\"])),[[c(Es),re]])]),default:q(()=>[Z(\"div\",ft({id:c(u),ref_key:\"triggerRef\",ref:p},te.$attrs,{class:c(P),role:\"button\",\"aria-label\":c(M),\"aria-labelledby\":c(A),\"aria-description\":c(s)(\"el.colorpicker.description\",{color:te.modelValue||\"\"}),\"aria-disabled\":c(l),tabindex:c(l)?-1:te.tabindex,onKeydown:pe,onFocus:c(y),onBlur:c(_)}),[c(l)?($(),X(\"div\",{key:0,class:D(c(o).be(\"picker\",\"mask\"))},null,2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(o).be(\"picker\",\"trigger\")),onClick:B},[Z(\"span\",{class:D([c(o).be(\"picker\",\"color\"),c(o).is(\"alpha\",te.showAlpha)])},[Z(\"span\",{class:D(c(o).be(\"picker\",\"color-inner\")),style:Ue({backgroundColor:c(T)})},[st(H(c(He),{class:D([c(o).be(\"picker\",\"icon\"),c(o).is(\"icon-arrow-down\")])},{default:q(()=>[H(c(As))]),_:1},8,[\"class\"]),[[Et,te.modelValue||E.value]]),st(H(c(He),{class:D([c(o).be(\"picker\",\"empty\"),c(o).is(\"icon-close\")])},{default:q(()=>[H(c(Dr))]),_:1},8,[\"class\"]),[[Et,!te.modelValue&&!E.value]])],6)],2)],2)],16,[\"id\",\"aria-label\",\"aria-labelledby\",\"aria-description\",\"aria-disabled\",\"tabindex\",\"onFocus\",\"onBlur\"])]),_:1},8,[\"visible\",\"popper-class\",\"teleported\",\"transition\",\"onHide\"]))}});var tV=Oe(eV,[[\"__file\",\"color-picker.vue\"]]);const r2=Qe(tV),nV=xe({a11y:{type:Boolean,default:!0},locale:{type:ie(Object)},size:on,button:{type:ie(Object)},experimentalFeatures:{type:ie(Object)},keyboardNavigation:{type:Boolean,default:!0},message:{type:ie(Object)},zIndex:Number,namespace:{type:String,default:\"el\"},...fa}),Tr={},rV=ee({name:\"ElConfigProvider\",props:nV,setup(e,{slots:t}){ye(()=>e.message,r=>{Object.assign(Tr,r??{})},{immediate:!0,deep:!0});const n=Rv(e);return()=>ue(t,\"default\",{config:n==null?void 0:n.value})}}),sV=Qe(rV),oV=ee({name:\"ElContainer\"}),iV=ee({...oV,props:{direction:{type:String}},setup(e){const t=e,n=an(),r=we(\"container\"),s=O(()=>t.direction===\"vertical\"?!0:t.direction===\"horizontal\"?!1:n&&n.default?n.default().some(a=>{const i=a.type.name;return i===\"ElHeader\"||i===\"ElFooter\"}):!1);return(o,a)=>($(),X(\"section\",{class:D([c(r).b(),c(r).is(\"vertical\",c(s))])},[ue(o.$slots,\"default\")],2))}});var aV=Oe(iV,[[\"__file\",\"container.vue\"]]);const lV=ee({name:\"ElAside\"}),cV=ee({...lV,props:{width:{type:String,default:null}},setup(e){const t=e,n=we(\"aside\"),r=O(()=>t.width?n.cssVarBlock({width:t.width}):{});return(s,o)=>($(),X(\"aside\",{class:D(c(n).b()),style:Ue(c(r))},[ue(s.$slots,\"default\")],6))}});var s2=Oe(cV,[[\"__file\",\"aside.vue\"]]);const uV=ee({name:\"ElFooter\"}),dV=ee({...uV,props:{height:{type:String,default:null}},setup(e){const t=e,n=we(\"footer\"),r=O(()=>t.height?n.cssVarBlock({height:t.height}):{});return(s,o)=>($(),X(\"footer\",{class:D(c(n).b()),style:Ue(c(r))},[ue(s.$slots,\"default\")],6))}});var o2=Oe(dV,[[\"__file\",\"footer.vue\"]]);const fV=ee({name:\"ElHeader\"}),hV=ee({...fV,props:{height:{type:String,default:null}},setup(e){const t=e,n=we(\"header\"),r=O(()=>t.height?n.cssVarBlock({height:t.height}):{});return(s,o)=>($(),X(\"header\",{class:D(c(n).b()),style:Ue(c(r))},[ue(s.$slots,\"default\")],6))}});var i2=Oe(hV,[[\"__file\",\"header.vue\"]]);const pV=ee({name:\"ElMain\"}),vV=ee({...pV,setup(e){const t=we(\"main\");return(n,r)=>($(),X(\"main\",{class:D(c(t).b())},[ue(n.$slots,\"default\")],2))}});var a2=Oe(vV,[[\"__file\",\"main.vue\"]]);const l2=Qe(aV,{Aside:s2,Footer:o2,Header:i2,Main:a2}),mV=Gt(s2),gV=Gt(o2),c2=Gt(i2),_V=Gt(a2);var Uc={exports:{}},bV=Uc.exports,ab;function yV(){return ab||(ab=1,function(e,t){(function(n,r){e.exports=r()})(bV,function(){var n={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},r=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,s=/\\d/,o=/\\d\\d/,a=/\\d\\d?/,i=/\\d*[^-_:/,()\\s\\d]+/,l={},u=function(g){return(g=+g)+(g>68?1900:2e3)},f=function(g){return function(m){this[g]=+m}},d=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(g){(this.zone||(this.zone={})).offset=function(m){if(!m||m===\"Z\")return 0;var y=m.match(/([+-]|\\d\\d)/g),_=60*y[1]+(+y[2]||0);return _===0?0:y[0]===\"+\"?-_:_}(g)}],h=function(g){var m=l[g];return m&&(m.indexOf?m:m.s.concat(m.f))},v=function(g,m){var y,_=l.meridiem;if(_){for(var w=1;w<=24;w+=1)if(g.indexOf(_(w,0,m))>-1){y=w>12;break}}else y=g===(m?\"pm\":\"PM\");return y},b={A:[i,function(g){this.afternoon=v(g,!1)}],a:[i,function(g){this.afternoon=v(g,!0)}],Q:[s,function(g){this.month=3*(g-1)+1}],S:[s,function(g){this.milliseconds=100*+g}],SS:[o,function(g){this.milliseconds=10*+g}],SSS:[/\\d{3}/,function(g){this.milliseconds=+g}],s:[a,f(\"seconds\")],ss:[a,f(\"seconds\")],m:[a,f(\"minutes\")],mm:[a,f(\"minutes\")],H:[a,f(\"hours\")],h:[a,f(\"hours\")],HH:[a,f(\"hours\")],hh:[a,f(\"hours\")],D:[a,f(\"day\")],DD:[o,f(\"day\")],Do:[i,function(g){var m=l.ordinal,y=g.match(/\\d+/);if(this.day=y[0],m)for(var _=1;_<=31;_+=1)m(_).replace(/\\[|\\]/g,\"\")===g&&(this.day=_)}],w:[a,f(\"week\")],ww:[o,f(\"week\")],M:[a,f(\"month\")],MM:[o,f(\"month\")],MMM:[i,function(g){var m=h(\"months\"),y=(h(\"monthsShort\")||m.map(function(_){return _.slice(0,3)})).indexOf(g)+1;if(y<1)throw new Error;this.month=y%12||y}],MMMM:[i,function(g){var m=h(\"months\").indexOf(g)+1;if(m<1)throw new Error;this.month=m%12||m}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[o,function(g){this.year=u(g)}],YYYY:[/\\d{4}/,f(\"year\")],Z:d,ZZ:d};function p(g){var m,y;m=g,y=l&&l.formats;for(var _=(g=m.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,function(x,M,A){var P=A&&A.toUpperCase();return M||y[A]||n[A]||y[P].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,function(G,V,I){return V||I.slice(1)})})).match(r),w=_.length,S=0;S<w;S+=1){var C=_[S],E=b[C],k=E&&E[0],T=E&&E[1];_[S]=T?{regex:k,parser:T}:C.replace(/^\\[|\\]$/g,\"\")}return function(x){for(var M={},A=0,P=0;A<w;A+=1){var G=_[A];if(typeof G==\"string\")P+=G.length;else{var V=G.regex,I=G.parser,j=x.slice(P),F=V.exec(j)[0];I.call(M,F),x=x.replace(F,\"\")}}return function(R){var B=R.afternoon;if(B!==void 0){var N=R.hours;B?N<12&&(R.hours+=12):N===12&&(R.hours=0),delete R.afternoon}}(M),M}}return function(g,m,y){y.p.customParseFormat=!0,g&&g.parseTwoDigitYear&&(u=g.parseTwoDigitYear);var _=m.prototype,w=_.parse;_.parse=function(S){var C=S.date,E=S.utc,k=S.args;this.$u=E;var T=k[1];if(typeof T==\"string\"){var x=k[2]===!0,M=k[3]===!0,A=x||M,P=k[2];M&&(P=k[2]),l=this.$locale(),!x&&P&&(l=y.Ls[P]),this.$d=function(j,F,R,B){try{if([\"x\",\"X\"].indexOf(F)>-1)return new Date((F===\"X\"?1e3:1)*j);var N=p(F)(j),U=N.year,J=N.month,re=N.day,le=N.hours,pe=N.minutes,K=N.seconds,z=N.milliseconds,te=N.zone,oe=N.week,he=new Date,Y=re||(U||J?1:he.getDate()),L=U||he.getFullYear(),Q=0;U&&!J||(Q=J>0?J-1:he.getMonth());var se,ge=le||0,ae=pe||0,_e=K||0,me=z||0;return te?new Date(Date.UTC(L,Q,Y,ge,ae,_e,me+60*te.offset*1e3)):R?new Date(Date.UTC(L,Q,Y,ge,ae,_e,me)):(se=new Date(L,Q,Y,ge,ae,_e,me),oe&&(se=B(se).week(oe).toDate()),se)}catch{return new Date(\"\")}}(C,T,E,y),this.init(),P&&P!==!0&&(this.$L=this.locale(P).$L),A&&C!=this.format(T)&&(this.$d=new Date(\"\")),l={}}else if(T instanceof Array)for(var G=T.length,V=1;V<=G;V+=1){k[1]=T[V-1];var I=y.apply(this,k);if(I.isValid()){this.$d=I.$d,this.$L=I.$L,this.init();break}V===G&&(this.$d=new Date(\"\"))}else w.call(this,S)}}})}(Uc)),Uc.exports}var wV=yV();const rm=Ls(wV);var qc={exports:{}},SV=qc.exports,lb;function CV(){return lb||(lb=1,function(e,t){(function(n,r){e.exports=r()})(SV,function(){return function(n,r){var s=r.prototype,o=s.format;s.format=function(a){var i=this,l=this.$locale();if(!this.isValid())return o.bind(this)(a);var u=this.$utils(),f=(a||\"YYYY-MM-DDTHH:mm:ssZ\").replace(/\\[([^\\]]+)]|Q|wo|ww|w|WW|W|zzz|z|gggg|GGGG|Do|X|x|k{1,2}|S/g,function(d){switch(d){case\"Q\":return Math.ceil((i.$M+1)/3);case\"Do\":return l.ordinal(i.$D);case\"gggg\":return i.weekYear();case\"GGGG\":return i.isoWeekYear();case\"wo\":return l.ordinal(i.week(),\"W\");case\"w\":case\"ww\":return u.s(i.week(),d===\"w\"?1:2,\"0\");case\"W\":case\"WW\":return u.s(i.isoWeek(),d===\"W\"?1:2,\"0\");case\"k\":case\"kk\":return u.s(String(i.$H===0?24:i.$H),d===\"k\"?1:2,\"0\");case\"X\":return Math.floor(i.$d.getTime()/1e3);case\"x\":return i.$d.getTime();case\"z\":return\"[\"+i.offsetName()+\"]\";case\"zzz\":return\"[\"+i.offsetName(\"long\")+\"]\";default:return d}});return o.bind(this)(f)}}})}(qc)),qc.exports}var kV=CV();const EV=Ls(kV);var Yc={exports:{}},TV=Yc.exports,cb;function RV(){return cb||(cb=1,function(e,t){(function(n,r){e.exports=r()})(TV,function(){var n=\"week\",r=\"year\";return function(s,o,a){var i=o.prototype;i.week=function(l){if(l===void 0&&(l=null),l!==null)return this.add(7*(l-this.week()),\"day\");var u=this.$locale().yearStart||1;if(this.month()===11&&this.date()>25){var f=a(this).startOf(r).add(1,r).date(u),d=a(this).endOf(n);if(f.isBefore(d))return 1}var h=a(this).startOf(r).date(u).startOf(n).subtract(1,\"millisecond\"),v=this.diff(h,n,!0);return v<0?a(this).startOf(\"week\").week():Math.ceil(v)},i.weeks=function(l){return l===void 0&&(l=null),this.week(l)}}})}(Yc)),Yc.exports}var xV=RV();const OV=Ls(xV);var Gc={exports:{}},MV=Gc.exports,ub;function AV(){return ub||(ub=1,function(e,t){(function(n,r){e.exports=r()})(MV,function(){return function(n,r){r.prototype.weekYear=function(){var s=this.month(),o=this.week(),a=this.year();return o===1&&s===11?a+1:s===0&&o>=52?a-1:a}}})}(Gc)),Gc.exports}var $V=AV();const LV=Ls($V);var Xc={exports:{}},IV=Xc.exports,db;function PV(){return db||(db=1,function(e,t){(function(n,r){e.exports=r()})(IV,function(){return function(n,r,s){r.prototype.dayOfYear=function(o){var a=Math.round((s(this).startOf(\"day\")-s(this).startOf(\"year\"))/864e5)+1;return o==null?a:this.add(o-a,\"day\")}}})}(Xc)),Xc.exports}var DV=PV();const BV=Ls(DV);var Jc={exports:{}},NV=Jc.exports,fb;function FV(){return fb||(fb=1,function(e,t){(function(n,r){e.exports=r()})(NV,function(){return function(n,r){r.prototype.isSameOrAfter=function(s,o){return this.isSame(s,o)||this.isAfter(s,o)}}})}(Jc)),Jc.exports}var HV=FV();const VV=Ls(HV);var Zc={exports:{}},zV=Zc.exports,hb;function WV(){return hb||(hb=1,function(e,t){(function(n,r){e.exports=r()})(zV,function(){return function(n,r){r.prototype.isSameOrBefore=function(s,o){return this.isSame(s,o)||this.isBefore(s,o)}}})}(Zc)),Zc.exports}var KV=WV();const jV=Ls(KV),pb=[\"hours\",\"minutes\",\"seconds\"],Hh=\"HH:mm:ss\",_i=\"YYYY-MM-DD\",UV={date:_i,dates:_i,week:\"gggg[w]ww\",year:\"YYYY\",years:\"YYYY\",month:\"YYYY-MM\",months:\"YYYY-MM\",datetime:`${_i} ${Hh}`,monthrange:\"YYYY-MM\",yearrange:\"YYYY\",daterange:_i,datetimerange:`${_i} ${Hh}`},u2=xe({disabledHours:{type:ie(Function)},disabledMinutes:{type:ie(Function)},disabledSeconds:{type:ie(Function)}}),d2=xe({visible:Boolean,actualVisible:{type:Boolean,default:void 0},format:{type:String,default:\"\"}}),sm=xe({id:{type:ie([Array,String])},name:{type:ie([Array,String])},popperClass:{type:String,default:\"\"},format:String,valueFormat:String,dateFormat:String,timeFormat:String,type:{type:String,default:\"\"},clearable:{type:Boolean,default:!0},clearIcon:{type:ie([String,Object]),default:as},editable:{type:Boolean,default:!0},prefixIcon:{type:ie([String,Object]),default:\"\"},size:on,readonly:Boolean,disabled:Boolean,placeholder:{type:String,default:\"\"},popperOptions:{type:ie(Object),default:()=>({})},modelValue:{type:ie([Date,Array,String,Number]),default:\"\"},rangeSeparator:{type:String,default:\"-\"},startPlaceholder:String,endPlaceholder:String,defaultValue:{type:ie([Date,Array])},defaultTime:{type:ie([Date,Array])},isRange:Boolean,...u2,disabledDate:{type:Function},cellClassName:{type:Function},shortcuts:{type:Array,default:()=>[]},arrowControl:Boolean,tabindex:{type:ie([String,Number]),default:0},validateEvent:{type:Boolean,default:!0},unlinkPanels:Boolean,placement:{type:ie(String),values:$s,default:\"bottom\"},fallbackPlacements:{type:ie(Array),default:[\"bottom\",\"top\",\"right\",\"left\"]},...fa,...kn([\"ariaLabel\"]),showNow:{type:Boolean,default:!0}}),qV=xe({id:{type:ie(Array)},name:{type:ie(Array)},modelValue:{type:ie([Array,String])},startPlaceholder:String,endPlaceholder:String}),YV=ee({name:\"PickerRangeTrigger\",inheritAttrs:!1}),GV=ee({...YV,props:qV,emits:[\"mouseenter\",\"mouseleave\",\"click\",\"touchstart\",\"focus\",\"blur\",\"startInput\",\"endInput\",\"startChange\",\"endChange\"],setup(e,{expose:t,emit:n}){const r=Ul(),s=we(\"date\"),o=we(\"range\"),a=W(),i=W(),{wrapperRef:l,isFocused:u}=_o(a),f=w=>{n(\"click\",w)},d=w=>{n(\"mouseenter\",w)},h=w=>{n(\"mouseleave\",w)},v=w=>{n(\"mouseenter\",w)},b=w=>{n(\"startInput\",w)},p=w=>{n(\"endInput\",w)},g=w=>{n(\"startChange\",w)},m=w=>{n(\"endChange\",w)};return t({focus:()=>{var w;(w=a.value)==null||w.focus()},blur:()=>{var w,S;(w=a.value)==null||w.blur(),(S=i.value)==null||S.blur()}}),(w,S)=>($(),X(\"div\",{ref_key:\"wrapperRef\",ref:l,class:D([c(s).is(\"active\",c(u)),w.$attrs.class]),style:Ue(w.$attrs.style),onClick:f,onMouseenter:d,onMouseleave:h,onTouchstartPassive:v},[ue(w.$slots,\"prefix\"),Z(\"input\",ft(c(r),{id:w.id&&w.id[0],ref_key:\"inputRef\",ref:a,name:w.name&&w.name[0],placeholder:w.startPlaceholder,value:w.modelValue&&w.modelValue[0],class:c(o).b(\"input\"),onInput:b,onChange:g}),null,16,[\"id\",\"name\",\"placeholder\",\"value\"]),ue(w.$slots,\"range-separator\"),Z(\"input\",ft(c(r),{id:w.id&&w.id[1],ref_key:\"endInputRef\",ref:i,name:w.name&&w.name[1],placeholder:w.endPlaceholder,value:w.modelValue&&w.modelValue[1],class:c(o).b(\"input\"),onInput:p,onChange:m}),null,16,[\"id\",\"name\",\"placeholder\",\"value\"]),ue(w.$slots,\"suffix\")],38))}});var XV=Oe(GV,[[\"__file\",\"picker-range-trigger.vue\"]]);const JV=ee({name:\"Picker\"}),ZV=ee({...JV,props:sm,emits:[\"update:modelValue\",\"change\",\"focus\",\"blur\",\"clear\",\"calendar-change\",\"panel-change\",\"visible-change\",\"keydown\"],setup(e,{expose:t,emit:n}){const r=e,s=mo(),{lang:o}=yt(),a=we(\"date\"),i=we(\"input\"),l=we(\"range\"),{form:u,formItem:f}=xn(),d=Fe(\"ElPopperOptions\",{}),{valueOnClear:h}=Sd(r,null),v=W(),b=W(),p=W(!1),g=W(!1),m=W(null);let y=!1;const{isFocused:_,handleFocus:w,handleBlur:S}=_o(b,{beforeFocus(){return r.readonly||R.value},afterFocus(){p.value=!0},beforeBlur(ne){var Pe;return!y&&((Pe=v.value)==null?void 0:Pe.isFocusInsideContent(ne))},afterBlur(){Ce(),p.value=!1,y=!1,r.validateEvent&&(f==null||f.validate(\"blur\").catch(ne=>void 0))}}),C=O(()=>[a.b(\"editor\"),a.bm(\"editor\",r.type),i.e(\"wrapper\"),a.is(\"disabled\",R.value),a.is(\"active\",p.value),l.b(\"editor\"),ge?l.bm(\"editor\",ge.value):\"\",s.class]),E=O(()=>[i.e(\"icon\"),l.e(\"close-icon\"),z.value?\"\":l.e(\"close-icon--hidden\")]);ye(p,ne=>{ne?je(()=>{ne&&(m.value=r.modelValue)}):(me.value=null,je(()=>{k(r.modelValue)}))});const k=(ne,Pe)=>{(Pe||!j_(ne,m.value))&&(n(\"change\",ne),r.validateEvent&&(f==null||f.validate(\"change\").catch(rt=>void 0)))},T=ne=>{if(!j_(r.modelValue,ne)){let Pe;ke(ne)?Pe=ne.map(rt=>q_(rt,r.valueFormat,o.value)):ne&&(Pe=q_(ne,r.valueFormat,o.value)),n(\"update:modelValue\",ne&&Pe,o.value)}},x=ne=>{n(\"keydown\",ne)},M=O(()=>b.value?Array.from(b.value.$el.querySelectorAll(\"input\")):[]),A=(ne,Pe,rt)=>{const mt=M.value;mt.length&&(!rt||rt===\"min\"?(mt[0].setSelectionRange(ne,Pe),mt[0].focus()):rt===\"max\"&&(mt[1].setSelectionRange(ne,Pe),mt[1].focus()))},P=(ne=\"\",Pe=!1)=>{p.value=Pe;let rt;ke(ne)?rt=ne.map(mt=>mt.toDate()):rt=ne&&ne.toDate(),me.value=null,T(rt)},G=()=>{g.value=!0},V=()=>{n(\"visible-change\",!0)},I=()=>{g.value=!1,p.value=!1,n(\"visible-change\",!1)},j=()=>{p.value=!0},F=()=>{p.value=!1},R=O(()=>r.disabled||(u==null?void 0:u.disabled)),B=O(()=>{let ne;if(oe.value?ht.value.getDefaultValue&&(ne=ht.value.getDefaultValue()):ke(r.modelValue)?ne=r.modelValue.map(Pe=>U_(Pe,r.valueFormat,o.value)):ne=U_(r.modelValue,r.valueFormat,o.value),ht.value.getRangeAvailableTime){const Pe=ht.value.getRangeAvailableTime(ne);wn(Pe,ne)||(ne=Pe,oe.value||T(wc(ne)))}return ke(ne)&&ne.some(Pe=>!Pe)&&(ne=[]),ne}),N=O(()=>{if(!ht.value.panelReady)return\"\";const ne=Se(B.value);return ke(me.value)?[me.value[0]||ne&&ne[0]||\"\",me.value[1]||ne&&ne[1]||\"\"]:me.value!==null?me.value:!J.value&&oe.value||!p.value&&oe.value?\"\":ne?re.value||le.value||pe.value?ne.join(\", \"):ne:\"\"}),U=O(()=>r.type.includes(\"time\")),J=O(()=>r.type.startsWith(\"time\")),re=O(()=>r.type===\"dates\"),le=O(()=>r.type===\"months\"),pe=O(()=>r.type===\"years\"),K=O(()=>r.prefixIcon||(U.value?WS:GP)),z=W(!1),te=ne=>{r.readonly||R.value||(z.value&&(ne.stopPropagation(),ht.value.handleClear?ht.value.handleClear():T(h.value),k(h.value,!0),z.value=!1,I()),n(\"clear\"))},oe=O(()=>{const{modelValue:ne}=r;return!ne||ke(ne)&&!ne.filter(Boolean).length}),he=async ne=>{var Pe;r.readonly||R.value||(((Pe=ne.target)==null?void 0:Pe.tagName)!==\"INPUT\"||_.value)&&(p.value=!0)},Y=()=>{r.readonly||R.value||!oe.value&&r.clearable&&(z.value=!0)},L=()=>{z.value=!1},Q=ne=>{var Pe;r.readonly||R.value||(((Pe=ne.touches[0].target)==null?void 0:Pe.tagName)!==\"INPUT\"||_.value)&&(p.value=!0)},se=O(()=>r.type.includes(\"range\")),ge=sn(),ae=O(()=>{var ne,Pe;return(Pe=(ne=c(v))==null?void 0:ne.popperRef)==null?void 0:Pe.contentRef}),_e=Tv(b,ne=>{const Pe=c(ae),rt=Un(b);Pe&&(ne.target===Pe||ne.composedPath().includes(Pe))||ne.target===rt||rt&&ne.composedPath().includes(rt)||(p.value=!1)});Pt(()=>{_e==null||_e()});const me=W(null),Ce=()=>{if(me.value){const ne=Te(N.value);ne&&Ie(ne)&&(T(wc(ne)),me.value=null)}me.value===\"\"&&(T(h.value),k(h.value),me.value=null)},Te=ne=>ne?ht.value.parseUserInput(ne):null,Se=ne=>ne?ht.value.formatToString(ne):null,Ie=ne=>ht.value.isValidValue(ne),be=async ne=>{if(r.readonly||R.value)return;const{code:Pe}=ne;if(x(ne),Pe===Ne.esc){p.value===!0&&(p.value=!1,ne.preventDefault(),ne.stopPropagation());return}if(Pe===Ne.down&&(ht.value.handleFocusPicker&&(ne.preventDefault(),ne.stopPropagation()),p.value===!1&&(p.value=!0,await je()),ht.value.handleFocusPicker)){ht.value.handleFocusPicker();return}if(Pe===Ne.tab){y=!0;return}if(Pe===Ne.enter||Pe===Ne.numpadEnter){(me.value===null||me.value===\"\"||Ie(Te(N.value)))&&(Ce(),p.value=!1),ne.stopPropagation();return}if(me.value){ne.stopPropagation();return}ht.value.handleKeydownInput&&ht.value.handleKeydownInput(ne)},Ae=ne=>{me.value=ne,p.value||(p.value=!0)},qe=ne=>{const Pe=ne.target;me.value?me.value=[Pe.value,me.value[1]]:me.value=[Pe.value,null]},tt=ne=>{const Pe=ne.target;me.value?me.value=[me.value[0],Pe.value]:me.value=[null,Pe.value]},et=()=>{var ne;const Pe=me.value,rt=Te(Pe&&Pe[0]),mt=c(B);if(rt&&rt.isValid()){me.value=[Se(rt),((ne=N.value)==null?void 0:ne[1])||null];const Me=[rt,mt&&(mt[1]||null)];Ie(Me)&&(T(wc(Me)),me.value=null)}},at=()=>{var ne;const Pe=c(me),rt=Te(Pe&&Pe[1]),mt=c(B);if(rt&&rt.isValid()){me.value=[((ne=c(N))==null?void 0:ne[0])||null,Se(rt)];const Me=[mt&&mt[0],rt];Ie(Me)&&(T(wc(Me)),me.value=null)}},ht=W({}),Ct=ne=>{ht.value[ne[0]]=ne[1],ht.value.panelReady=!0},fe=ne=>{n(\"calendar-change\",ne)},$e=(ne,Pe,rt)=>{n(\"panel-change\",ne,Pe,rt)},ce=()=>{var ne;(ne=b.value)==null||ne.focus()},Re=()=>{var ne;(ne=b.value)==null||ne.blur()};return pt(\"EP_PICKER_BASE\",{props:r}),t({focus:ce,blur:Re,handleOpen:j,handleClose:F,onPick:P}),(ne,Pe)=>($(),ve(c(Cn),ft({ref_key:\"refPopper\",ref:v,visible:p.value,effect:\"light\",pure:\"\",trigger:\"click\"},ne.$attrs,{role:\"dialog\",teleported:\"\",transition:`${c(a).namespace.value}-zoom-in-top`,\"popper-class\":[`${c(a).namespace.value}-picker__popper`,ne.popperClass],\"popper-options\":c(d),\"fallback-placements\":ne.fallbackPlacements,\"gpu-acceleration\":!1,placement:ne.placement,\"stop-popper-mouse-event\":!1,\"hide-after\":0,persistent:\"\",onBeforeShow:G,onShow:V,onHide:I}),{default:q(()=>[c(se)?($(),ve(XV,{key:1,id:ne.id,ref_key:\"inputRef\",ref:b,\"model-value\":c(N),name:ne.name,disabled:c(R),readonly:!ne.editable||ne.readonly,\"start-placeholder\":ne.startPlaceholder,\"end-placeholder\":ne.endPlaceholder,class:D(c(C)),style:Ue(ne.$attrs.style),\"aria-label\":ne.ariaLabel,tabindex:ne.tabindex,autocomplete:\"off\",role:\"combobox\",onClick:he,onFocus:c(w),onBlur:c(S),onStartInput:qe,onStartChange:et,onEndInput:tt,onEndChange:at,onMousedown:he,onMouseenter:Y,onMouseleave:L,onTouchstartPassive:Q,onKeydown:be},{prefix:q(()=>[c(K)?($(),ve(c(He),{key:0,class:D([c(i).e(\"icon\"),c(l).e(\"icon\")])},{default:q(()=>[($(),ve(dt(c(K))))]),_:1},8,[\"class\"])):de(\"v-if\",!0)]),\"range-separator\":q(()=>[ue(ne.$slots,\"range-separator\",{},()=>[Z(\"span\",{class:D(c(l).b(\"separator\"))},Ee(ne.rangeSeparator),3)])]),suffix:q(()=>[ne.clearIcon?($(),ve(c(He),{key:0,class:D(c(E)),onMousedown:Xe(c(Mt),[\"prevent\"]),onClick:te},{default:q(()=>[($(),ve(dt(ne.clearIcon)))]),_:1},8,[\"class\",\"onMousedown\"])):de(\"v-if\",!0)]),_:3},8,[\"id\",\"model-value\",\"name\",\"disabled\",\"readonly\",\"start-placeholder\",\"end-placeholder\",\"class\",\"style\",\"aria-label\",\"tabindex\",\"onFocus\",\"onBlur\"])):($(),ve(c(yn),{key:0,id:ne.id,ref_key:\"inputRef\",ref:b,\"container-role\":\"combobox\",\"model-value\":c(N),name:ne.name,size:c(ge),disabled:c(R),placeholder:ne.placeholder,class:D([c(a).b(\"editor\"),c(a).bm(\"editor\",ne.type),ne.$attrs.class]),style:Ue(ne.$attrs.style),readonly:!ne.editable||ne.readonly||c(re)||c(le)||c(pe)||ne.type===\"week\",\"aria-label\":ne.ariaLabel,tabindex:ne.tabindex,\"validate-event\":!1,onInput:Ae,onFocus:c(w),onBlur:c(S),onKeydown:be,onChange:Ce,onMousedown:he,onMouseenter:Y,onMouseleave:L,onTouchstartPassive:Q,onClick:Xe(()=>{},[\"stop\"])},{prefix:q(()=>[c(K)?($(),ve(c(He),{key:0,class:D(c(i).e(\"icon\")),onMousedown:Xe(he,[\"prevent\"]),onTouchstartPassive:Q},{default:q(()=>[($(),ve(dt(c(K))))]),_:1},8,[\"class\",\"onMousedown\"])):de(\"v-if\",!0)]),suffix:q(()=>[z.value&&ne.clearIcon?($(),ve(c(He),{key:0,class:D(`${c(i).e(\"icon\")} clear-icon`),onMousedown:Xe(c(Mt),[\"prevent\"]),onClick:te},{default:q(()=>[($(),ve(dt(ne.clearIcon)))]),_:1},8,[\"class\",\"onMousedown\"])):de(\"v-if\",!0)]),_:1},8,[\"id\",\"model-value\",\"name\",\"size\",\"disabled\",\"placeholder\",\"class\",\"style\",\"readonly\",\"aria-label\",\"tabindex\",\"onFocus\",\"onBlur\",\"onClick\"]))]),content:q(()=>[ue(ne.$slots,\"default\",{visible:p.value,actualVisible:g.value,parsedValue:c(B),format:ne.format,dateFormat:ne.dateFormat,timeFormat:ne.timeFormat,unlinkPanels:ne.unlinkPanels,type:ne.type,defaultValue:ne.defaultValue,showNow:ne.showNow,onPick:P,onSelectRange:A,onSetPickerOption:Ct,onCalendarChange:fe,onPanelChange:$e,onMousedown:Xe(()=>{},[\"stop\"])})]),_:3},16,[\"visible\",\"transition\",\"popper-class\",\"popper-options\",\"fallback-placements\",\"placement\"]))}});var f2=Oe(ZV,[[\"__file\",\"picker.vue\"]]);const QV=xe({...d2,datetimeRole:String,parsedValue:{type:ie(Object)}}),h2=({getAvailableHours:e,getAvailableMinutes:t,getAvailableSeconds:n})=>{const r=(a,i,l,u)=>{const f={hour:e,minute:t,second:n};let d=a;return[\"hour\",\"minute\",\"second\"].forEach(h=>{if(f[h]){let v;const b=f[h];switch(h){case\"minute\":{v=b(d.hour(),i,u);break}case\"second\":{v=b(d.hour(),d.minute(),i,u);break}default:{v=b(i,u);break}}if(v!=null&&v.length&&!v.includes(d[h]())){const p=l?0:v.length-1;d=d[h](v[p])}}}),d},s={};return{timePickerOptions:s,getAvailableTime:r,onSetOption:([a,i])=>{s[a]=i}}},Af=e=>{const t=(r,s)=>r||s,n=r=>r!==!0;return e.map(t).filter(n)},p2=(e,t,n)=>({getHoursList:(a,i)=>Rf(24,e&&(()=>e==null?void 0:e(a,i))),getMinutesList:(a,i,l)=>Rf(60,t&&(()=>t==null?void 0:t(a,i,l))),getSecondsList:(a,i,l,u)=>Rf(60,n&&(()=>n==null?void 0:n(a,i,l,u)))}),v2=(e,t,n)=>{const{getHoursList:r,getMinutesList:s,getSecondsList:o}=p2(e,t,n);return{getAvailableHours:(u,f)=>Af(r(u,f)),getAvailableMinutes:(u,f,d)=>Af(s(u,f,d)),getAvailableSeconds:(u,f,d,h)=>Af(o(u,f,d,h))}},m2=e=>{const t=W(e.parsedValue);return ye(()=>e.visible,n=>{n||(t.value=e.parsedValue)}),t},e9=xe({role:{type:String,required:!0},spinnerDate:{type:ie(Object),required:!0},showSeconds:{type:Boolean,default:!0},arrowControl:Boolean,amPmMode:{type:ie(String),default:\"\"},...u2}),t9=100,n9=600,Mu={beforeMount(e,t){const n=t.value,{interval:r=t9,delay:s=n9}=Ke(n)?{}:n;let o,a;const i=()=>Ke(n)?n():n.handler(),l=()=>{a&&(clearTimeout(a),a=void 0),o&&(clearInterval(o),o=void 0)};e.addEventListener(\"mousedown\",u=>{u.button===0&&(l(),i(),document.addEventListener(\"mouseup\",()=>l(),{once:!0}),a=setTimeout(()=>{o=setInterval(()=>{i()},r)},s))})}},r9=ee({__name:\"basic-time-spinner\",props:e9,emits:[\"change\",\"select-range\",\"set-option\"],setup(e,{emit:t}){const n=e,r=Fe(\"EP_PICKER_BASE\"),{isRange:s}=r.props,o=we(\"time\"),{getHoursList:a,getMinutesList:i,getSecondsList:l}=p2(n.disabledHours,n.disabledMinutes,n.disabledSeconds);let u=!1;const f=W(),d=W(),h=W(),v=W(),b={hours:d,minutes:h,seconds:v},p=O(()=>n.showSeconds?pb:pb.slice(0,2)),g=O(()=>{const{spinnerDate:N}=n,U=N.hour(),J=N.minute(),re=N.second();return{hours:U,minutes:J,seconds:re}}),m=O(()=>{const{hours:N,minutes:U}=c(g),{role:J,spinnerDate:re}=n,le=s?void 0:re;return{hours:a(J,le),minutes:i(N,J,le),seconds:l(N,U,J,le)}}),y=O(()=>{const{hours:N,minutes:U,seconds:J}=c(g);return{hours:Tf(N,23),minutes:Tf(U,59),seconds:Tf(J,59)}}),_=nr(N=>{u=!1,C(N)},200),w=N=>{if(!!!n.amPmMode)return\"\";const J=n.amPmMode===\"A\";let re=N<12?\" am\":\" pm\";return J&&(re=re.toUpperCase()),re},S=N=>{let U;switch(N){case\"hours\":U=[0,2];break;case\"minutes\":U=[3,5];break;case\"seconds\":U=[6,8];break}const[J,re]=U;t(\"select-range\",J,re),f.value=N},C=N=>{T(N,c(g)[N])},E=()=>{C(\"hours\"),C(\"minutes\"),C(\"seconds\")},k=N=>N.querySelector(`.${o.namespace.value}-scrollbar__wrap`),T=(N,U)=>{if(n.arrowControl)return;const J=c(b[N]);J&&J.$el&&(k(J.$el).scrollTop=Math.max(0,U*x(N)))},x=N=>{const U=c(b[N]),J=U==null?void 0:U.$el.querySelector(\"li\");return J&&Number.parseFloat(bs(J,\"height\"))||0},M=()=>{P(1)},A=()=>{P(-1)},P=N=>{f.value||S(\"hours\");const U=f.value,J=c(g)[U],re=f.value===\"hours\"?24:60,le=G(U,J,N,re);V(U,le),T(U,le),je(()=>S(U))},G=(N,U,J,re)=>{let le=(U+J+re)%re;const pe=c(m)[N];for(;pe[le]&&le!==U;)le=(le+J+re)%re;return le},V=(N,U)=>{if(c(m)[N][U])return;const{hours:le,minutes:pe,seconds:K}=c(g);let z;switch(N){case\"hours\":z=n.spinnerDate.hour(U).minute(pe).second(K);break;case\"minutes\":z=n.spinnerDate.hour(le).minute(U).second(K);break;case\"seconds\":z=n.spinnerDate.hour(le).minute(pe).second(U);break}t(\"change\",z)},I=(N,{value:U,disabled:J})=>{J||(V(N,U),S(N),T(N,U))},j=N=>{const U=c(b[N]);if(!U)return;u=!0,_(N);const J=Math.min(Math.round((k(U.$el).scrollTop-(F(N)*.5-10)/x(N)+3)/x(N)),N===\"hours\"?23:59);V(N,J)},F=N=>c(b[N]).$el.offsetHeight,R=()=>{const N=U=>{const J=c(b[U]);J&&J.$el&&(k(J.$el).onscroll=()=>{j(U)})};N(\"hours\"),N(\"minutes\"),N(\"seconds\")};it(()=>{je(()=>{!n.arrowControl&&R(),E(),n.role===\"start\"&&S(\"hours\")})});const B=(N,U)=>{b[U].value=N??void 0};return t(\"set-option\",[`${n.role}_scrollDown`,P]),t(\"set-option\",[`${n.role}_emitSelectRange`,S]),ye(()=>n.spinnerDate,()=>{u||E()}),(N,U)=>($(),X(\"div\",{class:D([c(o).b(\"spinner\"),{\"has-seconds\":N.showSeconds}])},[N.arrowControl?de(\"v-if\",!0):($(!0),X(We,{key:0},vt(c(p),J=>($(),ve(c(ls),{key:J,ref_for:!0,ref:re=>B(re,J),class:D(c(o).be(\"spinner\",\"wrapper\")),\"wrap-style\":\"max-height: inherit;\",\"view-class\":c(o).be(\"spinner\",\"list\"),noresize:\"\",tag:\"ul\",onMouseenter:re=>S(J),onMousemove:re=>C(J)},{default:q(()=>[($(!0),X(We,null,vt(c(m)[J],(re,le)=>($(),X(\"li\",{key:le,class:D([c(o).be(\"spinner\",\"item\"),c(o).is(\"active\",le===c(g)[J]),c(o).is(\"disabled\",re)]),onClick:pe=>I(J,{value:le,disabled:re})},[J===\"hours\"?($(),X(We,{key:0},[Ve(Ee((\"0\"+(N.amPmMode?le%12||12:le)).slice(-2))+Ee(w(le)),1)],64)):($(),X(We,{key:1},[Ve(Ee((\"0\"+le).slice(-2)),1)],64))],10,[\"onClick\"]))),128))]),_:2},1032,[\"class\",\"view-class\",\"onMouseenter\",\"onMousemove\"]))),128)),N.arrowControl?($(!0),X(We,{key:1},vt(c(p),J=>($(),X(\"div\",{key:J,class:D([c(o).be(\"spinner\",\"wrapper\"),c(o).is(\"arrow\")]),onMouseenter:re=>S(J)},[st(($(),ve(c(He),{class:D([\"arrow-up\",c(o).be(\"spinner\",\"arrow\")])},{default:q(()=>[H(c(Mv))]),_:1},8,[\"class\"])),[[c(Mu),A]]),st(($(),ve(c(He),{class:D([\"arrow-down\",c(o).be(\"spinner\",\"arrow\")])},{default:q(()=>[H(c(As))]),_:1},8,[\"class\"])),[[c(Mu),M]]),Z(\"ul\",{class:D(c(o).be(\"spinner\",\"list\"))},[($(!0),X(We,null,vt(c(y)[J],(re,le)=>($(),X(\"li\",{key:le,class:D([c(o).be(\"spinner\",\"item\"),c(o).is(\"active\",re===c(g)[J]),c(o).is(\"disabled\",c(m)[J][re])])},[c(Ge)(re)?($(),X(We,{key:0},[J===\"hours\"?($(),X(We,{key:0},[Ve(Ee((\"0\"+(N.amPmMode?re%12||12:re)).slice(-2))+Ee(w(re)),1)],64)):($(),X(We,{key:1},[Ve(Ee((\"0\"+re).slice(-2)),1)],64))],64)):de(\"v-if\",!0)],2))),128))],2)],42,[\"onMouseenter\"]))),128)):de(\"v-if\",!0)],2))}});var Vh=Oe(r9,[[\"__file\",\"basic-time-spinner.vue\"]]);const s9=ee({__name:\"panel-time-pick\",props:QV,emits:[\"pick\",\"select-range\",\"set-picker-option\"],setup(e,{emit:t}){const n=e,r=Fe(\"EP_PICKER_BASE\"),{arrowControl:s,disabledHours:o,disabledMinutes:a,disabledSeconds:i,defaultValue:l}=r.props,{getAvailableHours:u,getAvailableMinutes:f,getAvailableSeconds:d}=v2(o,a,i),h=we(\"time\"),{t:v,lang:b}=yt(),p=W([0,2]),g=m2(n),m=O(()=>Lt(n.actualVisible)?`${h.namespace.value}-zoom-in-top`:\"\"),y=O(()=>n.format.includes(\"ss\")),_=O(()=>n.format.includes(\"A\")?\"A\":n.format.includes(\"a\")?\"a\":\"\"),w=F=>{const R=Je(F).locale(b.value),B=G(R);return R.isSame(B)},S=()=>{t(\"pick\",g.value,!1)},C=(F=!1,R=!1)=>{R||t(\"pick\",n.parsedValue,F)},E=F=>{if(!n.visible)return;const R=G(F).millisecond(0);t(\"pick\",R,!0)},k=(F,R)=>{t(\"select-range\",F,R),p.value=[F,R]},T=F=>{const R=[0,3].concat(y.value?[6]:[]),B=[\"hours\",\"minutes\"].concat(y.value?[\"seconds\"]:[]),U=(R.indexOf(p.value[0])+F+R.length)%R.length;M.start_emitSelectRange(B[U])},x=F=>{const R=F.code,{left:B,right:N,up:U,down:J}=Ne;if([B,N].includes(R)){T(R===B?-1:1),F.preventDefault();return}if([U,J].includes(R)){const re=R===U?-1:1;M.start_scrollDown(re),F.preventDefault();return}},{timePickerOptions:M,onSetOption:A,getAvailableTime:P}=h2({getAvailableHours:u,getAvailableMinutes:f,getAvailableSeconds:d}),G=F=>P(F,n.datetimeRole||\"\",!0),V=F=>F?Je(F,n.format).locale(b.value):null,I=F=>F?F.format(n.format):null,j=()=>Je(l).locale(b.value);return t(\"set-picker-option\",[\"isValidValue\",w]),t(\"set-picker-option\",[\"formatToString\",I]),t(\"set-picker-option\",[\"parseUserInput\",V]),t(\"set-picker-option\",[\"handleKeydownInput\",x]),t(\"set-picker-option\",[\"getRangeAvailableTime\",G]),t(\"set-picker-option\",[\"getDefaultValue\",j]),(F,R)=>($(),ve(_n,{name:c(m)},{default:q(()=>[F.actualVisible||F.visible?($(),X(\"div\",{key:0,class:D(c(h).b(\"panel\"))},[Z(\"div\",{class:D([c(h).be(\"panel\",\"content\"),{\"has-seconds\":c(y)}])},[H(Vh,{ref:\"spinner\",role:F.datetimeRole||\"start\",\"arrow-control\":c(s),\"show-seconds\":c(y),\"am-pm-mode\":c(_),\"spinner-date\":F.parsedValue,\"disabled-hours\":c(o),\"disabled-minutes\":c(a),\"disabled-seconds\":c(i),onChange:E,onSetOption:c(A),onSelectRange:k},null,8,[\"role\",\"arrow-control\",\"show-seconds\",\"am-pm-mode\",\"spinner-date\",\"disabled-hours\",\"disabled-minutes\",\"disabled-seconds\",\"onSetOption\"])],2),Z(\"div\",{class:D(c(h).be(\"panel\",\"footer\"))},[Z(\"button\",{type:\"button\",class:D([c(h).be(\"panel\",\"btn\"),\"cancel\"]),onClick:S},Ee(c(v)(\"el.datepicker.cancel\")),3),Z(\"button\",{type:\"button\",class:D([c(h).be(\"panel\",\"btn\"),\"confirm\"]),onClick:B=>C()},Ee(c(v)(\"el.datepicker.confirm\")),11,[\"onClick\"])],2)],2)):de(\"v-if\",!0)]),_:1},8,[\"name\"]))}});var Au=Oe(s9,[[\"__file\",\"panel-time-pick.vue\"]]);const o9=xe({...d2,parsedValue:{type:ie(Array)}}),i9=ee({__name:\"panel-time-range\",props:o9,emits:[\"pick\",\"select-range\",\"set-picker-option\"],setup(e,{emit:t}){const n=e,r=(he,Y)=>{const L=[];for(let Q=he;Q<=Y;Q++)L.push(Q);return L},{t:s,lang:o}=yt(),a=we(\"time\"),i=we(\"picker\"),l=Fe(\"EP_PICKER_BASE\"),{arrowControl:u,disabledHours:f,disabledMinutes:d,disabledSeconds:h,defaultValue:v}=l.props,b=O(()=>[a.be(\"range-picker\",\"body\"),a.be(\"panel\",\"content\"),a.is(\"arrow\",u),w.value?\"has-seconds\":\"\"]),p=O(()=>[a.be(\"range-picker\",\"body\"),a.be(\"panel\",\"content\"),a.is(\"arrow\",u),w.value?\"has-seconds\":\"\"]),g=O(()=>n.parsedValue[0]),m=O(()=>n.parsedValue[1]),y=m2(n),_=()=>{t(\"pick\",y.value,!1)},w=O(()=>n.format.includes(\"ss\")),S=O(()=>n.format.includes(\"A\")?\"A\":n.format.includes(\"a\")?\"a\":\"\"),C=(he=!1)=>{t(\"pick\",[g.value,m.value],he)},E=he=>{x(he.millisecond(0),m.value)},k=he=>{x(g.value,he.millisecond(0))},T=he=>{const Y=he.map(Q=>Je(Q).locale(o.value)),L=N(Y);return Y[0].isSame(L[0])&&Y[1].isSame(L[1])},x=(he,Y)=>{n.visible&&t(\"pick\",[he,Y],!0)},M=O(()=>g.value>m.value),A=W([0,2]),P=(he,Y)=>{t(\"select-range\",he,Y,\"min\"),A.value=[he,Y]},G=O(()=>w.value?11:8),V=(he,Y)=>{t(\"select-range\",he,Y,\"max\");const L=c(G);A.value=[he+L,Y+L]},I=he=>{const Y=w.value?[0,3,6,11,14,17]:[0,3,8,11],L=[\"hours\",\"minutes\"].concat(w.value?[\"seconds\"]:[]),se=(Y.indexOf(A.value[0])+he+Y.length)%Y.length,ge=Y.length/2;se<ge?le.start_emitSelectRange(L[se]):le.end_emitSelectRange(L[se-ge])},j=he=>{const Y=he.code,{left:L,right:Q,up:se,down:ge}=Ne;if([L,Q].includes(Y)){I(Y===L?-1:1),he.preventDefault();return}if([se,ge].includes(Y)){const ae=Y===se?-1:1,_e=A.value[0]<G.value?\"start\":\"end\";le[`${_e}_scrollDown`](ae),he.preventDefault();return}},F=(he,Y)=>{const L=f?f(he):[],Q=he===\"start\",ge=(Y||(Q?m.value:g.value)).hour(),ae=Q?r(ge+1,23):r(0,ge-1);return yf(L,ae)},R=(he,Y,L)=>{const Q=d?d(he,Y):[],se=Y===\"start\",ge=L||(se?m.value:g.value),ae=ge.hour();if(he!==ae)return Q;const _e=ge.minute(),me=se?r(_e+1,59):r(0,_e-1);return yf(Q,me)},B=(he,Y,L,Q)=>{const se=h?h(he,Y,L):[],ge=L===\"start\",ae=Q||(ge?m.value:g.value),_e=ae.hour(),me=ae.minute();if(he!==_e||Y!==me)return se;const Ce=ae.second(),Te=ge?r(Ce+1,59):r(0,Ce-1);return yf(se,Te)},N=([he,Y])=>[pe(he,\"start\",!0,Y),pe(Y,\"end\",!1,he)],{getAvailableHours:U,getAvailableMinutes:J,getAvailableSeconds:re}=v2(F,R,B),{timePickerOptions:le,getAvailableTime:pe,onSetOption:K}=h2({getAvailableHours:U,getAvailableMinutes:J,getAvailableSeconds:re}),z=he=>he?ke(he)?he.map(Y=>Je(Y,n.format).locale(o.value)):Je(he,n.format).locale(o.value):null,te=he=>he?ke(he)?he.map(Y=>Y.format(n.format)):he.format(n.format):null,oe=()=>{if(ke(v))return v.map(Y=>Je(Y).locale(o.value));const he=Je(v).locale(o.value);return[he,he.add(60,\"m\")]};return t(\"set-picker-option\",[\"formatToString\",te]),t(\"set-picker-option\",[\"parseUserInput\",z]),t(\"set-picker-option\",[\"isValidValue\",T]),t(\"set-picker-option\",[\"handleKeydownInput\",j]),t(\"set-picker-option\",[\"getDefaultValue\",oe]),t(\"set-picker-option\",[\"getRangeAvailableTime\",N]),(he,Y)=>he.actualVisible?($(),X(\"div\",{key:0,class:D([c(a).b(\"range-picker\"),c(i).b(\"panel\")])},[Z(\"div\",{class:D(c(a).be(\"range-picker\",\"content\"))},[Z(\"div\",{class:D(c(a).be(\"range-picker\",\"cell\"))},[Z(\"div\",{class:D(c(a).be(\"range-picker\",\"header\"))},Ee(c(s)(\"el.datepicker.startTime\")),3),Z(\"div\",{class:D(c(b))},[H(Vh,{ref:\"minSpinner\",role:\"start\",\"show-seconds\":c(w),\"am-pm-mode\":c(S),\"arrow-control\":c(u),\"spinner-date\":c(g),\"disabled-hours\":F,\"disabled-minutes\":R,\"disabled-seconds\":B,onChange:E,onSetOption:c(K),onSelectRange:P},null,8,[\"show-seconds\",\"am-pm-mode\",\"arrow-control\",\"spinner-date\",\"onSetOption\"])],2)],2),Z(\"div\",{class:D(c(a).be(\"range-picker\",\"cell\"))},[Z(\"div\",{class:D(c(a).be(\"range-picker\",\"header\"))},Ee(c(s)(\"el.datepicker.endTime\")),3),Z(\"div\",{class:D(c(p))},[H(Vh,{ref:\"maxSpinner\",role:\"end\",\"show-seconds\":c(w),\"am-pm-mode\":c(S),\"arrow-control\":c(u),\"spinner-date\":c(m),\"disabled-hours\":F,\"disabled-minutes\":R,\"disabled-seconds\":B,onChange:k,onSetOption:c(K),onSelectRange:V},null,8,[\"show-seconds\",\"am-pm-mode\",\"arrow-control\",\"spinner-date\",\"onSetOption\"])],2)],2)],2),Z(\"div\",{class:D(c(a).be(\"panel\",\"footer\"))},[Z(\"button\",{type:\"button\",class:D([c(a).be(\"panel\",\"btn\"),\"cancel\"]),onClick:L=>_()},Ee(c(s)(\"el.datepicker.cancel\")),11,[\"onClick\"]),Z(\"button\",{type:\"button\",class:D([c(a).be(\"panel\",\"btn\"),\"confirm\"]),disabled:c(M),onClick:L=>C()},Ee(c(s)(\"el.datepicker.confirm\")),11,[\"disabled\",\"onClick\"])],2)],2)):de(\"v-if\",!0)}});var a9=Oe(i9,[[\"__file\",\"panel-time-range.vue\"]]);Je.extend(rm);var l9=ee({name:\"ElTimePicker\",install:null,props:{...sm,isRange:{type:Boolean,default:!1}},emits:[\"update:modelValue\"],setup(e,t){const n=W(),[r,s]=e.isRange?[\"timerange\",a9]:[\"time\",Au],o=a=>t.emit(\"update:modelValue\",a);return pt(\"ElPopperOptions\",e.popperOptions),t.expose({focus:()=>{var a;(a=n.value)==null||a.focus()},blur:()=>{var a;(a=n.value)==null||a.blur()},handleOpen:()=>{var a;(a=n.value)==null||a.handleOpen()},handleClose:()=>{var a;(a=n.value)==null||a.handleClose()}}),()=>{var a;const i=(a=e.format)!=null?a:Hh;return H(f2,ft(e,{ref:n,type:r,format:i,\"onUpdate:modelValue\":o}),{default:l=>H(s,l,null)})}}});const c9=Qe(l9),$d=Symbol(),u9=xe({...sm,type:{type:ie(String),default:\"date\"}}),d9=[\"date\",\"dates\",\"year\",\"years\",\"month\",\"months\",\"week\",\"range\"],om=xe({disabledDate:{type:ie(Function)},date:{type:ie(Object),required:!0},minDate:{type:ie(Object)},maxDate:{type:ie(Object)},parsedValue:{type:ie([Object,Array])},rangeState:{type:ie(Object),default:()=>({endDate:null,selecting:!1})}}),g2=xe({type:{type:ie(String),required:!0,values:C5},dateFormat:String,timeFormat:String,showNow:{type:Boolean,default:!0}}),im=xe({unlinkPanels:Boolean,parsedValue:{type:ie(Array)}}),am=e=>({type:String,values:d9,default:e}),f9=xe({...g2,parsedValue:{type:ie([Object,Array])},visible:{type:Boolean},format:{type:String,default:\"\"}}),Gi=e=>{if(!ke(e))return!1;const[t,n]=e;return Je.isDayjs(t)&&Je.isDayjs(n)&&t.isSameOrBefore(n)},lm=(e,{lang:t,unit:n,unlinkPanels:r})=>{let s;if(ke(e)){let[o,a]=e.map(i=>Je(i).locale(t));return r||(a=o.add(1,n)),[o,a]}else e?s=Je(e):s=Je();return s=s.locale(t),[s,s.add(1,n)]},h9=(e,t,{columnIndexOffset:n,startDate:r,nextEndDate:s,now:o,unit:a,relativeDateGetter:i,setCellMetadata:l,setRowMetadata:u})=>{for(let f=0;f<e.row;f++){const d=t[f];for(let h=0;h<e.column;h++){let v=d[h+n];v||(v={row:f,column:h,type:\"normal\",inRange:!1,start:!1,end:!1});const b=f*e.column+h,p=i(b);v.dayjs=p,v.date=p.toDate(),v.timestamp=p.valueOf(),v.type=\"normal\",v.inRange=!!(r&&p.isSameOrAfter(r,a)&&s&&p.isSameOrBefore(s,a))||!!(r&&p.isSameOrBefore(r,a)&&s&&p.isSameOrAfter(s,a)),r!=null&&r.isSameOrAfter(s)?(v.start=!!s&&p.isSame(s,a),v.end=r&&p.isSame(r,a)):(v.start=!!r&&p.isSame(r,a),v.end=!!s&&p.isSame(s,a)),p.isSame(o,a)&&(v.type=\"today\"),l==null||l(v,{rowIndex:f,columnIndex:h}),d[h+n]=v}u==null||u(d)}},$u=(e,t,n)=>{const r=Je().locale(n).startOf(\"month\").month(t).year(e),s=r.daysInMonth();return eo(s).map(o=>r.add(o,\"day\").toDate())},bl=(e,t,n,r)=>{const s=Je().year(e).month(t).startOf(\"month\"),o=$u(e,t,n).find(a=>!(r!=null&&r(a)));return o?Je(o).locale(n):s.locale(n)},zh=(e,t,n)=>{const r=e.year();if(!(n!=null&&n(e.toDate())))return e.locale(t);const s=e.month();if(!$u(r,s,t).every(n))return bl(r,s,t,n);for(let o=0;o<12;o++)if(!$u(r,o,t).every(n))return bl(r,o,t,n);return e},p9=xe({...om,cellClassName:{type:ie(Function)},showWeekNumber:Boolean,selectionMode:am(\"date\")}),v9=[\"changerange\",\"pick\",\"select\"],Wh=(e=\"\")=>[\"normal\",\"today\"].includes(e),m9=(e,t)=>{const{lang:n}=yt(),r=W(),s=W(),o=W(),a=W(),i=W([[],[],[],[],[],[]]);let l=!1;const u=e.date.$locale().weekStart||7,f=e.date.locale(\"en\").localeData().weekdaysShort().map(R=>R.toLowerCase()),d=O(()=>u>3?7-u:-u),h=O(()=>{const R=e.date.startOf(\"month\");return R.subtract(R.day()||7,\"day\")}),v=O(()=>f.concat(f).slice(u,u+7)),b=O(()=>Xw(c(w)).some(R=>R.isCurrent)),p=O(()=>{const R=e.date.startOf(\"month\"),B=R.day()||7,N=R.daysInMonth(),U=R.subtract(1,\"month\").daysInMonth();return{startOfMonthDay:B,dateCountOfMonth:N,dateCountOfLastMonth:U}}),g=O(()=>e.selectionMode===\"dates\"?jn(e.parsedValue):[]),m=(R,{count:B,rowIndex:N,columnIndex:U})=>{const{startOfMonthDay:J,dateCountOfMonth:re,dateCountOfLastMonth:le}=c(p),pe=c(d);if(N>=0&&N<=1){const K=J+pe<0?7+J+pe:J+pe;if(U+N*7>=K)return R.text=B,!0;R.text=le-(K-U%7)+1+N*7,R.type=\"prev-month\"}else return B<=re?R.text=B:(R.text=B-re,R.type=\"next-month\"),!0;return!1},y=(R,{columnIndex:B,rowIndex:N},U)=>{const{disabledDate:J,cellClassName:re}=e,le=c(g),pe=m(R,{count:U,rowIndex:N,columnIndex:B}),K=R.dayjs.toDate();return R.selected=le.find(z=>z.isSame(R.dayjs,\"day\")),R.isSelected=!!R.selected,R.isCurrent=C(R),R.disabled=J==null?void 0:J(K),R.customClass=re==null?void 0:re(K),pe},_=R=>{if(e.selectionMode===\"week\"){const[B,N]=e.showWeekNumber?[1,7]:[0,6],U=F(R[B+1]);R[B].inRange=U,R[B].start=U,R[N].inRange=U,R[N].end=U}},w=O(()=>{const{minDate:R,maxDate:B,rangeState:N,showWeekNumber:U}=e,J=c(d),re=c(i),le=\"day\";let pe=1;if(U)for(let K=0;K<6;K++)re[K][0]||(re[K][0]={type:\"week\",text:c(h).add(K*7+1,le).week()});return h9({row:6,column:7},re,{startDate:R,columnIndexOffset:U?1:0,nextEndDate:N.endDate||B||N.selecting&&R||null,now:Je().locale(c(n)).startOf(le),unit:le,relativeDateGetter:K=>c(h).add(K-J,le),setCellMetadata:(...K)=>{y(...K,pe)&&(pe+=1)},setRowMetadata:_}),re});ye(()=>e.date,async()=>{var R;(R=c(r))!=null&&R.contains(document.activeElement)&&(await je(),await S())});const S=async()=>{var R;return(R=c(s))==null?void 0:R.focus()},C=R=>e.selectionMode===\"date\"&&Wh(R.type)&&E(R,e.parsedValue),E=(R,B)=>B?Je(B).locale(c(n)).isSame(e.date.date(Number(R.text)),\"day\"):!1,k=(R,B)=>{const N=R*7+(B-(e.showWeekNumber?1:0))-c(d);return c(h).add(N,\"day\")},T=R=>{var B;if(!e.rangeState.selecting)return;let N=R.target;if(N.tagName===\"SPAN\"&&(N=(B=N.parentNode)==null?void 0:B.parentNode),N.tagName===\"DIV\"&&(N=N.parentNode),N.tagName!==\"TD\")return;const U=N.parentNode.rowIndex-1,J=N.cellIndex;c(w)[U][J].disabled||(U!==c(o)||J!==c(a))&&(o.value=U,a.value=J,t(\"changerange\",{selecting:!0,endDate:k(U,J)}))},x=R=>!c(b)&&(R==null?void 0:R.text)===1&&R.type===\"normal\"||R.isCurrent,M=R=>{l||c(b)||e.selectionMode!==\"date\"||j(R,!0)},A=R=>{R.target.closest(\"td\")&&(l=!0)},P=R=>{R.target.closest(\"td\")&&(l=!1)},G=R=>{!e.rangeState.selecting||!e.minDate?(t(\"pick\",{minDate:R,maxDate:null}),t(\"select\",!0)):(R>=e.minDate?t(\"pick\",{minDate:e.minDate,maxDate:R}):t(\"pick\",{minDate:R,maxDate:e.minDate}),t(\"select\",!1))},V=R=>{const B=R.week(),N=`${R.year()}w${B}`;t(\"pick\",{year:R.year(),week:B,value:N,date:R.startOf(\"week\")})},I=(R,B)=>{const N=B?jn(e.parsedValue).filter(U=>(U==null?void 0:U.valueOf())!==R.valueOf()):jn(e.parsedValue).concat([R]);t(\"pick\",N)},j=(R,B=!1)=>{const N=R.target.closest(\"td\");if(!N)return;const U=N.parentNode.rowIndex-1,J=N.cellIndex,re=c(w)[U][J];if(re.disabled||re.type===\"week\")return;const le=k(U,J);switch(e.selectionMode){case\"range\":{G(le);break}case\"date\":{t(\"pick\",le,B);break}case\"week\":{V(le);break}case\"dates\":{I(le,!!re.selected);break}}},F=R=>{if(e.selectionMode!==\"week\")return!1;let B=e.date.startOf(\"day\");if(R.type===\"prev-month\"&&(B=B.subtract(1,\"month\")),R.type===\"next-month\"&&(B=B.add(1,\"month\")),B=B.date(Number.parseInt(R.text,10)),e.parsedValue&&!ke(e.parsedValue)){const N=(e.parsedValue.day()-u+7)%7-1;return e.parsedValue.subtract(N,\"day\").isSame(B,\"day\")}return!1};return{WEEKS:v,rows:w,tbodyRef:r,currentCellRef:s,focus:S,isCurrent:C,isWeekActive:F,isSelectedCell:x,handlePickDate:j,handleMouseUp:P,handleMouseDown:A,handleMouseMove:T,handleFocus:M}},g9=(e,{isCurrent:t,isWeekActive:n})=>{const r=we(\"date-table\"),{t:s}=yt(),o=O(()=>[r.b(),{\"is-week-mode\":e.selectionMode===\"week\"}]),a=O(()=>s(\"el.datepicker.dateTablePrompt\")),i=O(()=>s(\"el.datepicker.week\"));return{tableKls:o,tableLabel:a,weekLabel:i,getCellClasses:f=>{const d=[];return Wh(f.type)&&!f.disabled?(d.push(\"available\"),f.type===\"today\"&&d.push(\"today\")):d.push(f.type),t(f)&&d.push(\"current\"),f.inRange&&(Wh(f.type)||e.selectionMode===\"week\")&&(d.push(\"in-range\"),f.start&&d.push(\"start-date\"),f.end&&d.push(\"end-date\")),f.disabled&&d.push(\"disabled\"),f.selected&&d.push(\"selected\"),f.customClass&&d.push(f.customClass),d.join(\" \")},getRowKls:f=>[r.e(\"row\"),{current:n(f)}],t:s}},_9=xe({cell:{type:ie(Object)}});var cm=ee({name:\"ElDatePickerCell\",props:_9,setup(e){const t=we(\"date-table-cell\"),{slots:n}=Fe($d);return()=>{const{cell:r}=e;return ue(n,\"default\",{...r},()=>{var s;return[H(\"div\",{class:t.b()},[H(\"span\",{class:t.e(\"text\")},[(s=r==null?void 0:r.renderText)!=null?s:r==null?void 0:r.text])])]})}}});const b9=ee({__name:\"basic-date-table\",props:p9,emits:v9,setup(e,{expose:t,emit:n}){const r=e,{WEEKS:s,rows:o,tbodyRef:a,currentCellRef:i,focus:l,isCurrent:u,isWeekActive:f,isSelectedCell:d,handlePickDate:h,handleMouseUp:v,handleMouseDown:b,handleMouseMove:p,handleFocus:g}=m9(r,n),{tableLabel:m,tableKls:y,weekLabel:_,getCellClasses:w,getRowKls:S,t:C}=g9(r,{isCurrent:u,isWeekActive:f});return t({focus:l}),(E,k)=>($(),X(\"table\",{\"aria-label\":c(m),class:D(c(y)),cellspacing:\"0\",cellpadding:\"0\",role:\"grid\",onClick:c(h),onMousemove:c(p),onMousedown:Xe(c(b),[\"prevent\"]),onMouseup:c(v)},[Z(\"tbody\",{ref_key:\"tbodyRef\",ref:a},[Z(\"tr\",null,[E.showWeekNumber?($(),X(\"th\",{key:0,scope:\"col\"},Ee(c(_)),1)):de(\"v-if\",!0),($(!0),X(We,null,vt(c(s),(T,x)=>($(),X(\"th\",{key:x,\"aria-label\":c(C)(\"el.datepicker.weeksFull.\"+T),scope:\"col\"},Ee(c(C)(\"el.datepicker.weeks.\"+T)),9,[\"aria-label\"]))),128))]),($(!0),X(We,null,vt(c(o),(T,x)=>($(),X(\"tr\",{key:x,class:D(c(S)(T[1]))},[($(!0),X(We,null,vt(T,(M,A)=>($(),X(\"td\",{key:`${x}.${A}`,ref_for:!0,ref:P=>c(d)(M)&&(i.value=P),class:D(c(w)(M)),\"aria-current\":M.isCurrent?\"date\":void 0,\"aria-selected\":M.isCurrent,tabindex:c(d)(M)?0:-1,onFocus:c(g)},[H(c(cm),{cell:M},null,8,[\"cell\"])],42,[\"aria-current\",\"aria-selected\",\"tabindex\",\"onFocus\"]))),128))],2))),128))],512)],42,[\"aria-label\",\"onClick\",\"onMousemove\",\"onMousedown\",\"onMouseup\"]))}});var Kh=Oe(b9,[[\"__file\",\"basic-date-table.vue\"]]);const y9=xe({...om,selectionMode:am(\"month\")}),w9=ee({__name:\"basic-month-table\",props:y9,emits:[\"changerange\",\"pick\",\"select\"],setup(e,{expose:t,emit:n}){const r=e,s=we(\"month-table\"),{t:o,lang:a}=yt(),i=W(),l=W(),u=W(r.date.locale(\"en\").localeData().monthsShort().map(_=>_.toLowerCase())),f=W([[],[],[]]),d=W(),h=W(),v=O(()=>{var _,w;const S=f.value,C=Je().locale(a.value).startOf(\"month\");for(let E=0;E<3;E++){const k=S[E];for(let T=0;T<4;T++){const x=k[T]||(k[T]={row:E,column:T,type:\"normal\",inRange:!1,start:!1,end:!1,text:-1,disabled:!1});x.type=\"normal\";const M=E*4+T,A=r.date.startOf(\"year\").month(M),P=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;x.inRange=!!(r.minDate&&A.isSameOrAfter(r.minDate,\"month\")&&P&&A.isSameOrBefore(P,\"month\"))||!!(r.minDate&&A.isSameOrBefore(r.minDate,\"month\")&&P&&A.isSameOrAfter(P,\"month\")),(_=r.minDate)!=null&&_.isSameOrAfter(P)?(x.start=!!(P&&A.isSame(P,\"month\")),x.end=r.minDate&&A.isSame(r.minDate,\"month\")):(x.start=!!(r.minDate&&A.isSame(r.minDate,\"month\")),x.end=!!(P&&A.isSame(P,\"month\"))),C.isSame(A)&&(x.type=\"today\"),x.text=M,x.disabled=((w=r.disabledDate)==null?void 0:w.call(r,A.toDate()))||!1}}return S}),b=()=>{var _;(_=l.value)==null||_.focus()},p=_=>{const w={},S=r.date.year(),C=new Date,E=_.text;return w.disabled=r.disabledDate?$u(S,E,a.value).every(r.disabledDate):!1,w.current=jn(r.parsedValue).findIndex(k=>Je.isDayjs(k)&&k.year()===S&&k.month()===E)>=0,w.today=C.getFullYear()===S&&C.getMonth()===E,_.inRange&&(w[\"in-range\"]=!0,_.start&&(w[\"start-date\"]=!0),_.end&&(w[\"end-date\"]=!0)),w},g=_=>{const w=r.date.year(),S=_.text;return jn(r.date).findIndex(C=>C.year()===w&&C.month()===S)>=0},m=_=>{var w;if(!r.rangeState.selecting)return;let S=_.target;if(S.tagName===\"SPAN\"&&(S=(w=S.parentNode)==null?void 0:w.parentNode),S.tagName===\"DIV\"&&(S=S.parentNode),S.tagName!==\"TD\")return;const C=S.parentNode.rowIndex,E=S.cellIndex;v.value[C][E].disabled||(C!==d.value||E!==h.value)&&(d.value=C,h.value=E,n(\"changerange\",{selecting:!0,endDate:r.date.startOf(\"year\").month(C*4+E)}))},y=_=>{var w;const S=(w=_.target)==null?void 0:w.closest(\"td\");if((S==null?void 0:S.tagName)!==\"TD\"||Zn(S,\"disabled\"))return;const C=S.cellIndex,k=S.parentNode.rowIndex*4+C,T=r.date.startOf(\"year\").month(k);if(r.selectionMode===\"months\"){if(_.type===\"keydown\"){n(\"pick\",jn(r.parsedValue),!1);return}const x=bl(r.date.year(),k,a.value,r.disabledDate),M=Zn(S,\"current\")?jn(r.parsedValue).filter(A=>(A==null?void 0:A.month())!==x.month()):jn(r.parsedValue).concat([Je(x)]);n(\"pick\",M)}else r.selectionMode===\"range\"?r.rangeState.selecting?(r.minDate&&T>=r.minDate?n(\"pick\",{minDate:r.minDate,maxDate:T}):n(\"pick\",{minDate:T,maxDate:r.minDate}),n(\"select\",!1)):(n(\"pick\",{minDate:T,maxDate:null}),n(\"select\",!0)):n(\"pick\",k)};return ye(()=>r.date,async()=>{var _,w;(_=i.value)!=null&&_.contains(document.activeElement)&&(await je(),(w=l.value)==null||w.focus())}),t({focus:b}),(_,w)=>($(),X(\"table\",{role:\"grid\",\"aria-label\":c(o)(\"el.datepicker.monthTablePrompt\"),class:D(c(s).b()),onClick:y,onMousemove:m},[Z(\"tbody\",{ref_key:\"tbodyRef\",ref:i},[($(!0),X(We,null,vt(c(v),(S,C)=>($(),X(\"tr\",{key:C},[($(!0),X(We,null,vt(S,(E,k)=>($(),X(\"td\",{key:k,ref_for:!0,ref:T=>g(E)&&(l.value=T),class:D(p(E)),\"aria-selected\":`${g(E)}`,\"aria-label\":c(o)(`el.datepicker.month${+E.text+1}`),tabindex:g(E)?0:-1,onKeydown:[Ht(Xe(y,[\"prevent\",\"stop\"]),[\"space\"]),Ht(Xe(y,[\"prevent\",\"stop\"]),[\"enter\"])]},[H(c(cm),{cell:{...E,renderText:c(o)(\"el.datepicker.months.\"+u.value[E.text])}},null,8,[\"cell\"])],42,[\"aria-selected\",\"aria-label\",\"tabindex\",\"onKeydown\"]))),128))]))),128))],512)],42,[\"aria-label\"]))}});var jh=Oe(w9,[[\"__file\",\"basic-month-table.vue\"]]);const S9=xe({...om,selectionMode:am(\"year\")}),C9=ee({__name:\"basic-year-table\",props:S9,emits:[\"changerange\",\"pick\",\"select\"],setup(e,{expose:t,emit:n}){const r=e,s=(w,S)=>{const C=Je(String(w)).locale(S).startOf(\"year\"),k=C.endOf(\"year\").dayOfYear();return eo(k).map(T=>C.add(T,\"day\").toDate())},o=we(\"year-table\"),{t:a,lang:i}=yt(),l=W(),u=W(),f=O(()=>Math.floor(r.date.year()/10)*10),d=W([[],[],[]]),h=W(),v=W(),b=O(()=>{var w;const S=d.value,C=Je().locale(i.value).startOf(\"year\");for(let E=0;E<3;E++){const k=S[E];for(let T=0;T<4&&!(E*4+T>=10);T++){let x=k[T];x||(x={row:E,column:T,type:\"normal\",inRange:!1,start:!1,end:!1,text:-1,disabled:!1}),x.type=\"normal\";const M=E*4+T+f.value,A=Je().year(M),P=r.rangeState.endDate||r.maxDate||r.rangeState.selecting&&r.minDate||null;x.inRange=!!(r.minDate&&A.isSameOrAfter(r.minDate,\"year\")&&P&&A.isSameOrBefore(P,\"year\"))||!!(r.minDate&&A.isSameOrBefore(r.minDate,\"year\")&&P&&A.isSameOrAfter(P,\"year\")),(w=r.minDate)!=null&&w.isSameOrAfter(P)?(x.start=!!(P&&A.isSame(P,\"year\")),x.end=!!(r.minDate&&A.isSame(r.minDate,\"year\"))):(x.start=!!(r.minDate&&A.isSame(r.minDate,\"year\")),x.end=!!(P&&A.isSame(P,\"year\"))),C.isSame(A)&&(x.type=\"today\"),x.text=M;const V=A.toDate();x.disabled=r.disabledDate&&r.disabledDate(V)||!1,k[T]=x}}return S}),p=()=>{var w;(w=u.value)==null||w.focus()},g=w=>{const S={},C=Je().locale(i.value),E=w.text;return S.disabled=r.disabledDate?s(E,i.value).every(r.disabledDate):!1,S.today=C.year()===E,S.current=jn(r.parsedValue).findIndex(k=>k.year()===E)>=0,w.inRange&&(S[\"in-range\"]=!0,w.start&&(S[\"start-date\"]=!0),w.end&&(S[\"end-date\"]=!0)),S},m=w=>{const S=w.text;return jn(r.date).findIndex(C=>C.year()===S)>=0},y=w=>{var S;const C=(S=w.target)==null?void 0:S.closest(\"td\");if(!C||!C.textContent||Zn(C,\"disabled\"))return;const E=C.cellIndex,T=C.parentNode.rowIndex*4+E+f.value,x=Je().year(T);if(r.selectionMode===\"range\")r.rangeState.selecting?(r.minDate&&x>=r.minDate?n(\"pick\",{minDate:r.minDate,maxDate:x}):n(\"pick\",{minDate:x,maxDate:r.minDate}),n(\"select\",!1)):(n(\"pick\",{minDate:x,maxDate:null}),n(\"select\",!0));else if(r.selectionMode===\"years\"){if(w.type===\"keydown\"){n(\"pick\",jn(r.parsedValue),!1);return}const M=zh(x.startOf(\"year\"),i.value,r.disabledDate),A=Zn(C,\"current\")?jn(r.parsedValue).filter(P=>(P==null?void 0:P.year())!==T):jn(r.parsedValue).concat([M]);n(\"pick\",A)}else n(\"pick\",T)},_=w=>{var S;if(!r.rangeState.selecting)return;const C=(S=w.target)==null?void 0:S.closest(\"td\");if(!C)return;const E=C.parentNode.rowIndex,k=C.cellIndex;b.value[E][k].disabled||(E!==h.value||k!==v.value)&&(h.value=E,v.value=k,n(\"changerange\",{selecting:!0,endDate:Je().year(f.value).add(E*4+k,\"year\")}))};return ye(()=>r.date,async()=>{var w,S;(w=l.value)!=null&&w.contains(document.activeElement)&&(await je(),(S=u.value)==null||S.focus())}),t({focus:p}),(w,S)=>($(),X(\"table\",{role:\"grid\",\"aria-label\":c(a)(\"el.datepicker.yearTablePrompt\"),class:D(c(o).b()),onClick:y,onMousemove:_},[Z(\"tbody\",{ref_key:\"tbodyRef\",ref:l},[($(!0),X(We,null,vt(c(b),(C,E)=>($(),X(\"tr\",{key:E},[($(!0),X(We,null,vt(C,(k,T)=>($(),X(\"td\",{key:`${E}_${T}`,ref_for:!0,ref:x=>m(k)&&(u.value=x),class:D([\"available\",g(k)]),\"aria-selected\":m(k),\"aria-label\":String(k.text),tabindex:m(k)?0:-1,onKeydown:[Ht(Xe(y,[\"prevent\",\"stop\"]),[\"space\"]),Ht(Xe(y,[\"prevent\",\"stop\"]),[\"enter\"])]},[H(c(cm),{cell:k},null,8,[\"cell\"])],42,[\"aria-selected\",\"aria-label\",\"tabindex\",\"onKeydown\"]))),128))]))),128))],512)],42,[\"aria-label\"]))}});var Uh=Oe(C9,[[\"__file\",\"basic-year-table.vue\"]]);const k9=ee({__name:\"panel-date-pick\",props:f9,emits:[\"pick\",\"set-picker-option\",\"panel-change\"],setup(e,{emit:t}){const n=e,r=(fe,$e,ce)=>!0,s=we(\"picker-panel\"),o=we(\"date-picker\"),a=mo(),i=an(),{t:l,lang:u}=yt(),f=Fe(\"EP_PICKER_BASE\"),d=Fe(Md),{shortcuts:h,disabledDate:v,cellClassName:b,defaultTime:p}=f.props,g=At(f.props,\"defaultValue\"),m=W(),y=W(Je().locale(u.value)),_=W(!1);let w=!1;const S=O(()=>Je(p).locale(u.value)),C=O(()=>y.value.month()),E=O(()=>y.value.year()),k=W([]),T=W(null),x=W(null),M=fe=>k.value.length>0?r(fe,k.value,n.format||\"HH:mm:ss\"):!0,A=fe=>p&&!se.value&&!_.value&&!w?S.value.year(fe.year()).month(fe.month()).date(fe.date()):K.value?fe.millisecond(0):fe.startOf(\"day\"),P=(fe,...$e)=>{if(!fe)t(\"pick\",fe,...$e);else if(ke(fe)){const ce=fe.map(A);t(\"pick\",ce,...$e)}else t(\"pick\",A(fe),...$e);T.value=null,x.value=null,_.value=!1,w=!1},G=async(fe,$e)=>{if(B.value===\"date\"){fe=fe;let ce=n.parsedValue?n.parsedValue.year(fe.year()).month(fe.month()).date(fe.date()):fe;M(ce)||(ce=k.value[0][0].year(fe.year()).month(fe.month()).date(fe.date())),y.value=ce,P(ce,K.value||$e),n.type===\"datetime\"&&(await je(),et())}else B.value===\"week\"?P(fe.date):B.value===\"dates\"&&P(fe,!0)},V=fe=>{const $e=fe?\"add\":\"subtract\";y.value=y.value[$e](1,\"month\"),Ct(\"month\")},I=fe=>{const $e=y.value,ce=fe?\"add\":\"subtract\";y.value=j.value===\"year\"?$e[ce](10,\"year\"):$e[ce](1,\"year\"),Ct(\"year\")},j=W(\"date\"),F=O(()=>{const fe=l(\"el.datepicker.year\");if(j.value===\"year\"){const $e=Math.floor(E.value/10)*10;return fe?`${$e} ${fe} - ${$e+9} ${fe}`:`${$e} - ${$e+9}`}return`${E.value} ${fe}`}),R=fe=>{const $e=Ke(fe.value)?fe.value():fe.value;if($e){w=!0,P(Je($e).locale(u.value));return}fe.onClick&&fe.onClick({attrs:a,slots:i,emit:t})},B=O(()=>{const{type:fe}=n;return[\"week\",\"month\",\"months\",\"year\",\"years\",\"dates\"].includes(fe)?fe:\"date\"}),N=O(()=>B.value===\"dates\"||B.value===\"months\"||B.value===\"years\"),U=O(()=>B.value===\"date\"?j.value:B.value),J=O(()=>!!h.length),re=async(fe,$e)=>{B.value===\"month\"?(y.value=bl(y.value.year(),fe,u.value,v),P(y.value,!1)):B.value===\"months\"?P(fe,$e??!0):(y.value=bl(y.value.year(),fe,u.value,v),j.value=\"date\",[\"month\",\"year\",\"date\",\"week\"].includes(B.value)&&(P(y.value,!0),await je(),et())),Ct(\"month\")},le=async(fe,$e)=>{if(B.value===\"year\"){const ce=y.value.startOf(\"year\").year(fe);y.value=zh(ce,u.value,v),P(y.value,!1)}else if(B.value===\"years\")P(fe,$e??!0);else{const ce=y.value.year(fe);y.value=zh(ce,u.value,v),j.value=\"month\",[\"month\",\"year\",\"date\",\"week\"].includes(B.value)&&(P(y.value,!0),await je(),et())}Ct(\"year\")},pe=async fe=>{j.value=fe,await je(),et()},K=O(()=>n.type===\"datetime\"||n.type===\"datetimerange\"),z=O(()=>{const fe=K.value||B.value===\"dates\",$e=B.value===\"years\",ce=B.value===\"months\",Re=j.value===\"date\",ne=j.value===\"year\",Pe=j.value===\"month\";return fe&&Re||$e&&ne||ce&&Pe}),te=O(()=>v?n.parsedValue?ke(n.parsedValue)?v(n.parsedValue[0].toDate()):v(n.parsedValue.toDate()):!0:!1),oe=()=>{if(N.value)P(n.parsedValue);else{let fe=n.parsedValue;if(!fe){const $e=Je(p).locale(u.value),ce=tt();fe=$e.year(ce.year()).month(ce.month()).date(ce.date())}y.value=fe,P(fe)}},he=O(()=>v?v(Je().locale(u.value).toDate()):!1),Y=()=>{const $e=Je().locale(u.value).toDate();_.value=!0,(!v||!v($e))&&M($e)&&(y.value=Je().locale(u.value),P(y.value))},L=O(()=>n.timeFormat||AC(n.format)),Q=O(()=>n.dateFormat||MC(n.format)),se=O(()=>{if(x.value)return x.value;if(!(!n.parsedValue&&!g.value))return(n.parsedValue||y.value).format(L.value)}),ge=O(()=>{if(T.value)return T.value;if(!(!n.parsedValue&&!g.value))return(n.parsedValue||y.value).format(Q.value)}),ae=W(!1),_e=()=>{ae.value=!0},me=()=>{ae.value=!1},Ce=fe=>({hour:fe.hour(),minute:fe.minute(),second:fe.second(),year:fe.year(),month:fe.month(),date:fe.date()}),Te=(fe,$e,ce)=>{const{hour:Re,minute:ne,second:Pe}=Ce(fe),rt=n.parsedValue?n.parsedValue.hour(Re).minute(ne).second(Pe):fe;y.value=rt,P(y.value,!0),ce||(ae.value=$e)},Se=fe=>{const $e=Je(fe,L.value).locale(u.value);if($e.isValid()&&M($e)){const{year:ce,month:Re,date:ne}=Ce(y.value);y.value=$e.year(ce).month(Re).date(ne),x.value=null,ae.value=!1,P(y.value,!0)}},Ie=fe=>{const $e=Je(fe,Q.value).locale(u.value);if($e.isValid()){if(v&&v($e.toDate()))return;const{hour:ce,minute:Re,second:ne}=Ce(y.value);y.value=$e.hour(ce).minute(Re).second(ne),T.value=null,P(y.value,!0)}},be=fe=>Je.isDayjs(fe)&&fe.isValid()&&(v?!v(fe.toDate()):!0),Ae=fe=>ke(fe)?fe.map($e=>$e.format(n.format)):fe.format(n.format),qe=fe=>Je(fe,n.format).locale(u.value),tt=()=>{const fe=Je(g.value).locale(u.value);if(!g.value){const $e=S.value;return Je().hour($e.hour()).minute($e.minute()).second($e.second()).locale(u.value)}return fe},et=async()=>{var fe;[\"week\",\"month\",\"year\",\"date\"].includes(B.value)&&((fe=m.value)==null||fe.focus(),B.value===\"week\"&&ht(Ne.down))},at=fe=>{const{code:$e}=fe;[Ne.up,Ne.down,Ne.left,Ne.right,Ne.home,Ne.end,Ne.pageUp,Ne.pageDown].includes($e)&&(ht($e),fe.stopPropagation(),fe.preventDefault()),[Ne.enter,Ne.space,Ne.numpadEnter].includes($e)&&T.value===null&&x.value===null&&(fe.preventDefault(),P(y.value,!1))},ht=fe=>{var $e;const{up:ce,down:Re,left:ne,right:Pe,home:rt,end:mt,pageUp:Me,pageDown:xt}=Ne,nn={year:{[ce]:-4,[Re]:4,[ne]:-1,[Pe]:1,offset:(_t,Nn)=>_t.setFullYear(_t.getFullYear()+Nn)},month:{[ce]:-4,[Re]:4,[ne]:-1,[Pe]:1,offset:(_t,Nn)=>_t.setMonth(_t.getMonth()+Nn)},week:{[ce]:-1,[Re]:1,[ne]:-1,[Pe]:1,offset:(_t,Nn)=>_t.setDate(_t.getDate()+Nn*7)},date:{[ce]:-7,[Re]:7,[ne]:-1,[Pe]:1,[rt]:_t=>-_t.getDay(),[mt]:_t=>-_t.getDay()+6,[Me]:_t=>-new Date(_t.getFullYear(),_t.getMonth(),0).getDate(),[xt]:_t=>new Date(_t.getFullYear(),_t.getMonth()+1,0).getDate(),offset:(_t,Nn)=>_t.setDate(_t.getDate()+Nn)}},qt=y.value.toDate();for(;Math.abs(y.value.diff(qt,\"year\",!0))<1;){const _t=nn[U.value];if(!_t)return;if(_t.offset(qt,Ke(_t[fe])?_t[fe](qt):($e=_t[fe])!=null?$e:0),v&&v(qt))break;const Nn=Je(qt).locale(u.value);y.value=Nn,t(\"pick\",Nn,!0);break}},Ct=fe=>{t(\"panel-change\",y.value.toDate(),fe,j.value)};return ye(()=>B.value,fe=>{if([\"month\",\"year\"].includes(fe)){j.value=fe;return}else if(fe===\"years\"){j.value=\"year\";return}else if(fe===\"months\"){j.value=\"month\";return}j.value=\"date\"},{immediate:!0}),ye(()=>j.value,()=>{d==null||d.updatePopper()}),ye(()=>g.value,fe=>{fe&&(y.value=tt())},{immediate:!0}),ye(()=>n.parsedValue,fe=>{if(fe){if(N.value||ke(fe))return;y.value=fe}else y.value=tt()},{immediate:!0}),t(\"set-picker-option\",[\"isValidValue\",be]),t(\"set-picker-option\",[\"formatToString\",Ae]),t(\"set-picker-option\",[\"parseUserInput\",qe]),t(\"set-picker-option\",[\"handleFocusPicker\",et]),(fe,$e)=>($(),X(\"div\",{class:D([c(s).b(),c(o).b(),{\"has-sidebar\":fe.$slots.sidebar||c(J),\"has-time\":c(K)}])},[Z(\"div\",{class:D(c(s).e(\"body-wrapper\"))},[ue(fe.$slots,\"sidebar\",{class:D(c(s).e(\"sidebar\"))}),c(J)?($(),X(\"div\",{key:0,class:D(c(s).e(\"sidebar\"))},[($(!0),X(We,null,vt(c(h),(ce,Re)=>($(),X(\"button\",{key:Re,type:\"button\",class:D(c(s).e(\"shortcut\")),onClick:ne=>R(ce)},Ee(ce.text),11,[\"onClick\"]))),128))],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(s).e(\"body\"))},[c(K)?($(),X(\"div\",{key:0,class:D(c(o).e(\"time-header\"))},[Z(\"span\",{class:D(c(o).e(\"editor-wrap\"))},[H(c(yn),{placeholder:c(l)(\"el.datepicker.selectDate\"),\"model-value\":c(ge),size:\"small\",\"validate-event\":!1,onInput:ce=>T.value=ce,onChange:Ie},null,8,[\"placeholder\",\"model-value\",\"onInput\"])],2),st(($(),X(\"span\",{class:D(c(o).e(\"editor-wrap\"))},[H(c(yn),{placeholder:c(l)(\"el.datepicker.selectTime\"),\"model-value\":c(se),size:\"small\",\"validate-event\":!1,onFocus:_e,onInput:ce=>x.value=ce,onChange:Se},null,8,[\"placeholder\",\"model-value\",\"onInput\"]),H(c(Au),{visible:ae.value,format:c(L),\"parsed-value\":y.value,onPick:Te},null,8,[\"visible\",\"format\",\"parsed-value\"])],2)),[[c(Es),me]])],2)):de(\"v-if\",!0),st(Z(\"div\",{class:D([c(o).e(\"header\"),(j.value===\"year\"||j.value===\"month\")&&c(o).e(\"header--bordered\")])},[Z(\"span\",{class:D(c(o).e(\"prev-btn\"))},[Z(\"button\",{type:\"button\",\"aria-label\":c(l)(\"el.datepicker.prevYear\"),class:D([\"d-arrow-left\",c(s).e(\"icon-btn\")]),onClick:ce=>I(!1)},[ue(fe.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"aria-label\",\"onClick\"]),st(Z(\"button\",{type:\"button\",\"aria-label\":c(l)(\"el.datepicker.prevMonth\"),class:D([c(s).e(\"icon-btn\"),\"arrow-left\"]),onClick:ce=>V(!1)},[ue(fe.$slots,\"prev-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1})])],10,[\"aria-label\",\"onClick\"]),[[Et,j.value===\"date\"]])],2),Z(\"span\",{role:\"button\",class:D(c(o).e(\"header-label\")),\"aria-live\":\"polite\",tabindex:\"0\",onKeydown:Ht(ce=>pe(\"year\"),[\"enter\"]),onClick:ce=>pe(\"year\")},Ee(c(F)),43,[\"onKeydown\",\"onClick\"]),st(Z(\"span\",{role:\"button\",\"aria-live\":\"polite\",tabindex:\"0\",class:D([c(o).e(\"header-label\"),{active:j.value===\"month\"}]),onKeydown:Ht(ce=>pe(\"month\"),[\"enter\"]),onClick:ce=>pe(\"month\")},Ee(c(l)(`el.datepicker.month${c(C)+1}`)),43,[\"onKeydown\",\"onClick\"]),[[Et,j.value===\"date\"]]),Z(\"span\",{class:D(c(o).e(\"next-btn\"))},[st(Z(\"button\",{type:\"button\",\"aria-label\":c(l)(\"el.datepicker.nextMonth\"),class:D([c(s).e(\"icon-btn\"),\"arrow-right\"]),onClick:ce=>V(!0)},[ue(fe.$slots,\"next-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})])],10,[\"aria-label\",\"onClick\"]),[[Et,j.value===\"date\"]]),Z(\"button\",{type:\"button\",\"aria-label\":c(l)(\"el.datepicker.nextYear\"),class:D([c(s).e(\"icon-btn\"),\"d-arrow-right\"]),onClick:ce=>I(!0)},[ue(fe.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"aria-label\",\"onClick\"])],2)],2),[[Et,j.value!==\"time\"]]),Z(\"div\",{class:D(c(s).e(\"content\")),onKeydown:at},[j.value===\"date\"?($(),ve(Kh,{key:0,ref_key:\"currentViewRef\",ref:m,\"selection-mode\":c(B),date:y.value,\"parsed-value\":fe.parsedValue,\"disabled-date\":c(v),\"cell-class-name\":c(b),onPick:G},null,8,[\"selection-mode\",\"date\",\"parsed-value\",\"disabled-date\",\"cell-class-name\"])):de(\"v-if\",!0),j.value===\"year\"?($(),ve(Uh,{key:1,ref_key:\"currentViewRef\",ref:m,\"selection-mode\":c(B),date:y.value,\"disabled-date\":c(v),\"parsed-value\":fe.parsedValue,onPick:le},null,8,[\"selection-mode\",\"date\",\"disabled-date\",\"parsed-value\"])):de(\"v-if\",!0),j.value===\"month\"?($(),ve(jh,{key:2,ref_key:\"currentViewRef\",ref:m,\"selection-mode\":c(B),date:y.value,\"parsed-value\":fe.parsedValue,\"disabled-date\":c(v),onPick:re},null,8,[\"selection-mode\",\"date\",\"parsed-value\",\"disabled-date\"])):de(\"v-if\",!0)],34)],2)],2),st(Z(\"div\",{class:D(c(s).e(\"footer\"))},[st(H(c(cn),{text:\"\",size:\"small\",class:D(c(s).e(\"link-btn\")),disabled:c(he),onClick:Y},{default:q(()=>[Ve(Ee(c(l)(\"el.datepicker.now\")),1)]),_:1},8,[\"class\",\"disabled\"]),[[Et,!c(N)&&fe.showNow]]),H(c(cn),{plain:\"\",size:\"small\",class:D(c(s).e(\"link-btn\")),disabled:c(te),onClick:oe},{default:q(()=>[Ve(Ee(c(l)(\"el.datepicker.confirm\")),1)]),_:1},8,[\"class\",\"disabled\"])],2),[[Et,c(z)]])],2))}});var E9=Oe(k9,[[\"__file\",\"panel-date-pick.vue\"]]);const T9=xe({...g2,...im,visible:Boolean}),_2=e=>{const{emit:t}=ct(),n=mo(),r=an();return o=>{const a=Ke(o.value)?o.value():o.value;if(a){t(\"pick\",[Je(a[0]).locale(e.value),Je(a[1]).locale(e.value)]);return}o.onClick&&o.onClick({attrs:n,slots:r,emit:t})}},b2=(e,{defaultValue:t,leftDate:n,rightDate:r,unit:s,onParsedValueChanged:o})=>{const{emit:a}=ct(),{pickerNs:i}=Fe($d),l=we(\"date-range-picker\"),{t:u,lang:f}=yt(),d=_2(f),h=W(),v=W(),b=W({endDate:null,selecting:!1}),p=w=>{b.value=w},g=(w=!1)=>{const S=c(h),C=c(v);Gi([S,C])&&a(\"pick\",[S,C],w)},m=w=>{b.value.selecting=w,w||(b.value.endDate=null)},y=w=>{if(ke(w)&&w.length===2){const[S,C]=w;h.value=S,n.value=S,v.value=C,o(c(h),c(v))}else _()},_=()=>{const[w,S]=lm(c(t),{lang:c(f),unit:s,unlinkPanels:e.unlinkPanels});h.value=void 0,v.value=void 0,n.value=w,r.value=S};return ye(t,w=>{w&&_()},{immediate:!0}),ye(()=>e.parsedValue,y,{immediate:!0}),{minDate:h,maxDate:v,rangeState:b,lang:f,ppNs:i,drpNs:l,handleChangeRange:p,handleRangeConfirm:g,handleShortcutClick:d,onSelect:m,onReset:y,t:u}},Sc=\"month\",R9=ee({__name:\"panel-date-range\",props:T9,emits:[\"pick\",\"set-picker-option\",\"calendar-change\",\"panel-change\"],setup(e,{emit:t}){const n=e,r=Fe(\"EP_PICKER_BASE\"),{disabledDate:s,cellClassName:o,defaultTime:a,clearable:i}=r.props,l=At(r.props,\"format\"),u=At(r.props,\"shortcuts\"),f=At(r.props,\"defaultValue\"),{lang:d}=yt(),h=W(Je().locale(d.value)),v=W(Je().locale(d.value).add(1,Sc)),{minDate:b,maxDate:p,rangeState:g,ppNs:m,drpNs:y,handleChangeRange:_,handleRangeConfirm:w,handleShortcutClick:S,onSelect:C,onReset:E,t:k}=b2(n,{defaultValue:f,leftDate:h,rightDate:v,unit:Sc,onParsedValueChanged:$e});ye(()=>n.visible,ce=>{!ce&&g.value.selecting&&(E(n.parsedValue),C(!1))});const T=W({min:null,max:null}),x=W({min:null,max:null}),M=O(()=>`${h.value.year()} ${k(\"el.datepicker.year\")} ${k(`el.datepicker.month${h.value.month()+1}`)}`),A=O(()=>`${v.value.year()} ${k(\"el.datepicker.year\")} ${k(`el.datepicker.month${v.value.month()+1}`)}`),P=O(()=>h.value.year()),G=O(()=>h.value.month()),V=O(()=>v.value.year()),I=O(()=>v.value.month()),j=O(()=>!!u.value.length),F=O(()=>T.value.min!==null?T.value.min:b.value?b.value.format(J.value):\"\"),R=O(()=>T.value.max!==null?T.value.max:p.value||b.value?(p.value||b.value).format(J.value):\"\"),B=O(()=>x.value.min!==null?x.value.min:b.value?b.value.format(U.value):\"\"),N=O(()=>x.value.max!==null?x.value.max:p.value||b.value?(p.value||b.value).format(U.value):\"\"),U=O(()=>n.timeFormat||AC(l.value)),J=O(()=>n.dateFormat||MC(l.value)),re=ce=>Gi(ce)&&(s?!s(ce[0].toDate())&&!s(ce[1].toDate()):!0),le=()=>{h.value=h.value.subtract(1,\"year\"),n.unlinkPanels||(v.value=h.value.add(1,\"month\")),L(\"year\")},pe=()=>{h.value=h.value.subtract(1,\"month\"),n.unlinkPanels||(v.value=h.value.add(1,\"month\")),L(\"month\")},K=()=>{n.unlinkPanels?v.value=v.value.add(1,\"year\"):(h.value=h.value.add(1,\"year\"),v.value=h.value.add(1,\"month\")),L(\"year\")},z=()=>{n.unlinkPanels?v.value=v.value.add(1,\"month\"):(h.value=h.value.add(1,\"month\"),v.value=h.value.add(1,\"month\")),L(\"month\")},te=()=>{h.value=h.value.add(1,\"year\"),L(\"year\")},oe=()=>{h.value=h.value.add(1,\"month\"),L(\"month\")},he=()=>{v.value=v.value.subtract(1,\"year\"),L(\"year\")},Y=()=>{v.value=v.value.subtract(1,\"month\"),L(\"month\")},L=ce=>{t(\"panel-change\",[h.value.toDate(),v.value.toDate()],ce)},Q=O(()=>{const ce=(G.value+1)%12,Re=G.value+1>=12?1:0;return n.unlinkPanels&&new Date(P.value+Re,ce)<new Date(V.value,I.value)}),se=O(()=>n.unlinkPanels&&V.value*12+I.value-(P.value*12+G.value+1)>=12),ge=O(()=>!(b.value&&p.value&&!g.value.selecting&&Gi([b.value,p.value]))),ae=O(()=>n.type===\"datetime\"||n.type===\"datetimerange\"),_e=(ce,Re)=>{if(ce)return a?Je(a[Re]||a).locale(d.value).year(ce.year()).month(ce.month()).date(ce.date()):ce},me=(ce,Re=!0)=>{const ne=ce.minDate,Pe=ce.maxDate,rt=_e(ne,0),mt=_e(Pe,1);p.value===mt&&b.value===rt||(t(\"calendar-change\",[ne.toDate(),Pe&&Pe.toDate()]),p.value=mt,b.value=rt,!(!Re||ae.value)&&w())},Ce=W(!1),Te=W(!1),Se=()=>{Ce.value=!1},Ie=()=>{Te.value=!1},be=(ce,Re)=>{T.value[Re]=ce;const ne=Je(ce,J.value).locale(d.value);if(ne.isValid()){if(s&&s(ne.toDate()))return;Re===\"min\"?(h.value=ne,b.value=(b.value||h.value).year(ne.year()).month(ne.month()).date(ne.date()),!n.unlinkPanels&&(!p.value||p.value.isBefore(b.value))&&(v.value=ne.add(1,\"month\"),p.value=b.value.add(1,\"month\"))):(v.value=ne,p.value=(p.value||v.value).year(ne.year()).month(ne.month()).date(ne.date()),!n.unlinkPanels&&(!b.value||b.value.isAfter(p.value))&&(h.value=ne.subtract(1,\"month\"),b.value=p.value.subtract(1,\"month\")))}},Ae=(ce,Re)=>{T.value[Re]=null},qe=(ce,Re)=>{x.value[Re]=ce;const ne=Je(ce,U.value).locale(d.value);ne.isValid()&&(Re===\"min\"?(Ce.value=!0,b.value=(b.value||h.value).hour(ne.hour()).minute(ne.minute()).second(ne.second())):(Te.value=!0,p.value=(p.value||v.value).hour(ne.hour()).minute(ne.minute()).second(ne.second()),v.value=p.value))},tt=(ce,Re)=>{x.value[Re]=null,Re===\"min\"?(h.value=b.value,Ce.value=!1,(!p.value||p.value.isBefore(b.value))&&(p.value=b.value)):(v.value=p.value,Te.value=!1,p.value&&p.value.isBefore(b.value)&&(b.value=p.value))},et=(ce,Re,ne)=>{x.value.min||(ce&&(h.value=ce,b.value=(b.value||h.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),ne||(Ce.value=Re),(!p.value||p.value.isBefore(b.value))&&(p.value=b.value,v.value=ce))},at=(ce,Re,ne)=>{x.value.max||(ce&&(v.value=ce,p.value=(p.value||v.value).hour(ce.hour()).minute(ce.minute()).second(ce.second())),ne||(Te.value=Re),p.value&&p.value.isBefore(b.value)&&(b.value=p.value))},ht=()=>{h.value=lm(c(f),{lang:c(d),unit:\"month\",unlinkPanels:n.unlinkPanels})[0],v.value=h.value.add(1,\"month\"),p.value=void 0,b.value=void 0,t(\"pick\",null)},Ct=ce=>ke(ce)?ce.map(Re=>Re.format(l.value)):ce.format(l.value),fe=ce=>ke(ce)?ce.map(Re=>Je(Re,l.value).locale(d.value)):Je(ce,l.value).locale(d.value);function $e(ce,Re){if(n.unlinkPanels&&Re){const ne=(ce==null?void 0:ce.year())||0,Pe=(ce==null?void 0:ce.month())||0,rt=Re.year(),mt=Re.month();v.value=ne===rt&&Pe===mt?Re.add(1,Sc):Re}else v.value=h.value.add(1,Sc),Re&&(v.value=v.value.hour(Re.hour()).minute(Re.minute()).second(Re.second()))}return t(\"set-picker-option\",[\"isValidValue\",re]),t(\"set-picker-option\",[\"parseUserInput\",fe]),t(\"set-picker-option\",[\"formatToString\",Ct]),t(\"set-picker-option\",[\"handleClear\",ht]),(ce,Re)=>($(),X(\"div\",{class:D([c(m).b(),c(y).b(),{\"has-sidebar\":ce.$slots.sidebar||c(j),\"has-time\":c(ae)}])},[Z(\"div\",{class:D(c(m).e(\"body-wrapper\"))},[ue(ce.$slots,\"sidebar\",{class:D(c(m).e(\"sidebar\"))}),c(j)?($(),X(\"div\",{key:0,class:D(c(m).e(\"sidebar\"))},[($(!0),X(We,null,vt(c(u),(ne,Pe)=>($(),X(\"button\",{key:Pe,type:\"button\",class:D(c(m).e(\"shortcut\")),onClick:rt=>c(S)(ne)},Ee(ne.text),11,[\"onClick\"]))),128))],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(m).e(\"body\"))},[c(ae)?($(),X(\"div\",{key:0,class:D(c(y).e(\"time-header\"))},[Z(\"span\",{class:D(c(y).e(\"editors-wrap\"))},[Z(\"span\",{class:D(c(y).e(\"time-picker-wrap\"))},[H(c(yn),{size:\"small\",disabled:c(g).selecting,placeholder:c(k)(\"el.datepicker.startDate\"),class:D(c(y).e(\"editor\")),\"model-value\":c(F),\"validate-event\":!1,onInput:ne=>be(ne,\"min\"),onChange:ne=>Ae(ne,\"min\")},null,8,[\"disabled\",\"placeholder\",\"class\",\"model-value\",\"onInput\",\"onChange\"])],2),st(($(),X(\"span\",{class:D(c(y).e(\"time-picker-wrap\"))},[H(c(yn),{size:\"small\",class:D(c(y).e(\"editor\")),disabled:c(g).selecting,placeholder:c(k)(\"el.datepicker.startTime\"),\"model-value\":c(B),\"validate-event\":!1,onFocus:ne=>Ce.value=!0,onInput:ne=>qe(ne,\"min\"),onChange:ne=>tt(ne,\"min\")},null,8,[\"class\",\"disabled\",\"placeholder\",\"model-value\",\"onFocus\",\"onInput\",\"onChange\"]),H(c(Au),{visible:Ce.value,format:c(U),\"datetime-role\":\"start\",\"parsed-value\":h.value,onPick:et},null,8,[\"visible\",\"format\",\"parsed-value\"])],2)),[[c(Es),Se]])],2),Z(\"span\",null,[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})]),Z(\"span\",{class:D([c(y).e(\"editors-wrap\"),\"is-right\"])},[Z(\"span\",{class:D(c(y).e(\"time-picker-wrap\"))},[H(c(yn),{size:\"small\",class:D(c(y).e(\"editor\")),disabled:c(g).selecting,placeholder:c(k)(\"el.datepicker.endDate\"),\"model-value\":c(R),readonly:!c(b),\"validate-event\":!1,onInput:ne=>be(ne,\"max\"),onChange:ne=>Ae(ne,\"max\")},null,8,[\"class\",\"disabled\",\"placeholder\",\"model-value\",\"readonly\",\"onInput\",\"onChange\"])],2),st(($(),X(\"span\",{class:D(c(y).e(\"time-picker-wrap\"))},[H(c(yn),{size:\"small\",class:D(c(y).e(\"editor\")),disabled:c(g).selecting,placeholder:c(k)(\"el.datepicker.endTime\"),\"model-value\":c(N),readonly:!c(b),\"validate-event\":!1,onFocus:ne=>c(b)&&(Te.value=!0),onInput:ne=>qe(ne,\"max\"),onChange:ne=>tt(ne,\"max\")},null,8,[\"class\",\"disabled\",\"placeholder\",\"model-value\",\"readonly\",\"onFocus\",\"onInput\",\"onChange\"]),H(c(Au),{\"datetime-role\":\"end\",visible:Te.value,format:c(U),\"parsed-value\":v.value,onPick:at},null,8,[\"visible\",\"format\",\"parsed-value\"])],2)),[[c(Es),Ie]])],2)],2)):de(\"v-if\",!0),Z(\"div\",{class:D([[c(m).e(\"content\"),c(y).e(\"content\")],\"is-left\"])},[Z(\"div\",{class:D(c(y).e(\"header\"))},[Z(\"button\",{type:\"button\",class:D([c(m).e(\"icon-btn\"),\"d-arrow-left\"]),\"aria-label\":c(k)(\"el.datepicker.prevYear\"),onClick:le},[ue(ce.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"aria-label\"]),Z(\"button\",{type:\"button\",class:D([c(m).e(\"icon-btn\"),\"arrow-left\"]),\"aria-label\":c(k)(\"el.datepicker.prevMonth\"),onClick:pe},[ue(ce.$slots,\"prev-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1})])],10,[\"aria-label\"]),ce.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(se),class:D([[c(m).e(\"icon-btn\"),{\"is-disabled\":!c(se)}],\"d-arrow-right\"]),\"aria-label\":c(k)(\"el.datepicker.nextYear\"),onClick:te},[ue(ce.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"disabled\",\"aria-label\"])):de(\"v-if\",!0),ce.unlinkPanels?($(),X(\"button\",{key:1,type:\"button\",disabled:!c(Q),class:D([[c(m).e(\"icon-btn\"),{\"is-disabled\":!c(Q)}],\"arrow-right\"]),\"aria-label\":c(k)(\"el.datepicker.nextMonth\"),onClick:oe},[ue(ce.$slots,\"next-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})])],10,[\"disabled\",\"aria-label\"])):de(\"v-if\",!0),Z(\"div\",null,Ee(c(M)),1)],2),H(Kh,{\"selection-mode\":\"range\",date:h.value,\"min-date\":c(b),\"max-date\":c(p),\"range-state\":c(g),\"disabled-date\":c(s),\"cell-class-name\":c(o),onChangerange:c(_),onPick:me,onSelect:c(C)},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\",\"cell-class-name\",\"onChangerange\",\"onSelect\"])],2),Z(\"div\",{class:D([[c(m).e(\"content\"),c(y).e(\"content\")],\"is-right\"])},[Z(\"div\",{class:D(c(y).e(\"header\"))},[ce.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(se),class:D([[c(m).e(\"icon-btn\"),{\"is-disabled\":!c(se)}],\"d-arrow-left\"]),\"aria-label\":c(k)(\"el.datepicker.prevYear\"),onClick:he},[ue(ce.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"disabled\",\"aria-label\"])):de(\"v-if\",!0),ce.unlinkPanels?($(),X(\"button\",{key:1,type:\"button\",disabled:!c(Q),class:D([[c(m).e(\"icon-btn\"),{\"is-disabled\":!c(Q)}],\"arrow-left\"]),\"aria-label\":c(k)(\"el.datepicker.prevMonth\"),onClick:Y},[ue(ce.$slots,\"prev-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1})])],10,[\"disabled\",\"aria-label\"])):de(\"v-if\",!0),Z(\"button\",{type:\"button\",\"aria-label\":c(k)(\"el.datepicker.nextYear\"),class:D([c(m).e(\"icon-btn\"),\"d-arrow-right\"]),onClick:K},[ue(ce.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"aria-label\"]),Z(\"button\",{type:\"button\",class:D([c(m).e(\"icon-btn\"),\"arrow-right\"]),\"aria-label\":c(k)(\"el.datepicker.nextMonth\"),onClick:z},[ue(ce.$slots,\"next-month\",{},()=>[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})])],10,[\"aria-label\"]),Z(\"div\",null,Ee(c(A)),1)],2),H(Kh,{\"selection-mode\":\"range\",date:v.value,\"min-date\":c(b),\"max-date\":c(p),\"range-state\":c(g),\"disabled-date\":c(s),\"cell-class-name\":c(o),onChangerange:c(_),onPick:me,onSelect:c(C)},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\",\"cell-class-name\",\"onChangerange\",\"onSelect\"])],2)],2)],2),c(ae)?($(),X(\"div\",{key:0,class:D(c(m).e(\"footer\"))},[c(i)?($(),ve(c(cn),{key:0,text:\"\",size:\"small\",class:D(c(m).e(\"link-btn\")),onClick:ht},{default:q(()=>[Ve(Ee(c(k)(\"el.datepicker.clear\")),1)]),_:1},8,[\"class\"])):de(\"v-if\",!0),H(c(cn),{plain:\"\",size:\"small\",class:D(c(m).e(\"link-btn\")),disabled:c(ge),onClick:ne=>c(w)(!1)},{default:q(()=>[Ve(Ee(c(k)(\"el.datepicker.confirm\")),1)]),_:1},8,[\"class\",\"disabled\",\"onClick\"])],2)):de(\"v-if\",!0)],2))}});var x9=Oe(R9,[[\"__file\",\"panel-date-range.vue\"]]);const O9=xe({...im}),M9=[\"pick\",\"set-picker-option\",\"calendar-change\"],A9=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const{t:r}=yt(),s=()=>{t.value=t.value.subtract(1,\"year\"),e.value||(n.value=n.value.subtract(1,\"year\"))},o=()=>{e.value||(t.value=t.value.add(1,\"year\")),n.value=n.value.add(1,\"year\")},a=()=>{t.value=t.value.add(1,\"year\")},i=()=>{n.value=n.value.subtract(1,\"year\")},l=O(()=>`${t.value.year()} ${r(\"el.datepicker.year\")}`),u=O(()=>`${n.value.year()} ${r(\"el.datepicker.year\")}`),f=O(()=>t.value.year()),d=O(()=>n.value.year()===t.value.year()?t.value.year()+1:n.value.year());return{leftPrevYear:s,rightNextYear:o,leftNextYear:a,rightPrevYear:i,leftLabel:l,rightLabel:u,leftYear:f,rightYear:d}},Cc=\"year\",$9=ee({name:\"DatePickerMonthRange\"}),L9=ee({...$9,props:O9,emits:M9,setup(e,{emit:t}){const n=e,{lang:r}=yt(),s=Fe(\"EP_PICKER_BASE\"),{shortcuts:o,disabledDate:a}=s.props,i=At(s.props,\"format\"),l=At(s.props,\"defaultValue\"),u=W(Je().locale(r.value)),f=W(Je().locale(r.value).add(1,Cc)),{minDate:d,maxDate:h,rangeState:v,ppNs:b,drpNs:p,handleChangeRange:g,handleRangeConfirm:m,handleShortcutClick:y,onSelect:_}=b2(n,{defaultValue:l,leftDate:u,rightDate:f,unit:Cc,onParsedValueChanged:F}),w=O(()=>!!o.length),{leftPrevYear:S,rightNextYear:C,leftNextYear:E,rightPrevYear:k,leftLabel:T,rightLabel:x,leftYear:M,rightYear:A}=A9({unlinkPanels:At(n,\"unlinkPanels\"),leftDate:u,rightDate:f}),P=O(()=>n.unlinkPanels&&A.value>M.value+1),G=(R,B=!0)=>{const N=R.minDate,U=R.maxDate;h.value===U&&d.value===N||(t(\"calendar-change\",[N.toDate(),U&&U.toDate()]),h.value=U,d.value=N,B&&m())},V=()=>{u.value=lm(c(l),{lang:c(r),unit:\"year\",unlinkPanels:n.unlinkPanels})[0],f.value=u.value.add(1,\"year\"),t(\"pick\",null)},I=R=>ke(R)?R.map(B=>B.format(i.value)):R.format(i.value),j=R=>ke(R)?R.map(B=>Je(B,i.value).locale(r.value)):Je(R,i.value).locale(r.value);function F(R,B){if(n.unlinkPanels&&B){const N=(R==null?void 0:R.year())||0,U=B.year();f.value=N===U?B.add(1,Cc):B}else f.value=u.value.add(1,Cc)}return t(\"set-picker-option\",[\"isValidValue\",Gi]),t(\"set-picker-option\",[\"formatToString\",I]),t(\"set-picker-option\",[\"parseUserInput\",j]),t(\"set-picker-option\",[\"handleClear\",V]),(R,B)=>($(),X(\"div\",{class:D([c(b).b(),c(p).b(),{\"has-sidebar\":!!R.$slots.sidebar||c(w)}])},[Z(\"div\",{class:D(c(b).e(\"body-wrapper\"))},[ue(R.$slots,\"sidebar\",{class:D(c(b).e(\"sidebar\"))}),c(w)?($(),X(\"div\",{key:0,class:D(c(b).e(\"sidebar\"))},[($(!0),X(We,null,vt(c(o),(N,U)=>($(),X(\"button\",{key:U,type:\"button\",class:D(c(b).e(\"shortcut\")),onClick:J=>c(y)(N)},Ee(N.text),11,[\"onClick\"]))),128))],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(b).e(\"body\"))},[Z(\"div\",{class:D([[c(b).e(\"content\"),c(p).e(\"content\")],\"is-left\"])},[Z(\"div\",{class:D(c(p).e(\"header\"))},[Z(\"button\",{type:\"button\",class:D([c(b).e(\"icon-btn\"),\"d-arrow-left\"]),onClick:c(S)},[ue(R.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"onClick\"]),R.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(P),class:D([[c(b).e(\"icon-btn\"),{[c(b).is(\"disabled\")]:!c(P)}],\"d-arrow-right\"]),onClick:c(E)},[ue(R.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"disabled\",\"onClick\"])):de(\"v-if\",!0),Z(\"div\",null,Ee(c(T)),1)],2),H(jh,{\"selection-mode\":\"range\",date:u.value,\"min-date\":c(d),\"max-date\":c(h),\"range-state\":c(v),\"disabled-date\":c(a),onChangerange:c(g),onPick:G,onSelect:c(_)},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\",\"onChangerange\",\"onSelect\"])],2),Z(\"div\",{class:D([[c(b).e(\"content\"),c(p).e(\"content\")],\"is-right\"])},[Z(\"div\",{class:D(c(p).e(\"header\"))},[R.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(P),class:D([[c(b).e(\"icon-btn\"),{\"is-disabled\":!c(P)}],\"d-arrow-left\"]),onClick:c(k)},[ue(R.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"disabled\",\"onClick\"])):de(\"v-if\",!0),Z(\"button\",{type:\"button\",class:D([c(b).e(\"icon-btn\"),\"d-arrow-right\"]),onClick:c(C)},[ue(R.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"onClick\"]),Z(\"div\",null,Ee(c(x)),1)],2),H(jh,{\"selection-mode\":\"range\",date:f.value,\"min-date\":c(d),\"max-date\":c(h),\"range-state\":c(v),\"disabled-date\":c(a),onChangerange:c(g),onPick:G,onSelect:c(_)},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\",\"onChangerange\",\"onSelect\"])],2)],2)],2)],2))}});var I9=Oe(L9,[[\"__file\",\"panel-month-range.vue\"]]);const P9=xe({...im}),D9=[\"pick\",\"set-picker-option\",\"calendar-change\"],B9=({unlinkPanels:e,leftDate:t,rightDate:n})=>{const r=()=>{t.value=t.value.subtract(10,\"year\"),e.value||(n.value=n.value.subtract(10,\"year\"))},s=()=>{e.value||(t.value=t.value.add(10,\"year\")),n.value=n.value.add(10,\"year\")},o=()=>{t.value=t.value.add(10,\"year\")},a=()=>{n.value=n.value.subtract(10,\"year\")},i=O(()=>{const d=Math.floor(t.value.year()/10)*10;return`${d}-${d+9}`}),l=O(()=>{const d=Math.floor(n.value.year()/10)*10;return`${d}-${d+9}`}),u=O(()=>Math.floor(t.value.year()/10)*10+9),f=O(()=>Math.floor(n.value.year()/10)*10);return{leftPrevYear:r,rightNextYear:s,leftNextYear:o,rightPrevYear:a,leftLabel:i,rightLabel:l,leftYear:u,rightYear:f}},vb=\"year\",N9=ee({name:\"DatePickerYearRange\"}),F9=ee({...N9,props:P9,emits:D9,setup(e,{emit:t}){const n=e,{lang:r}=yt(),s=W(Je().locale(r.value)),o=W(s.value.add(10,\"year\")),{pickerNs:a}=Fe($d),i=we(\"date-range-picker\"),l=O(()=>!!G.length),u=O(()=>[a.b(),i.b(),{\"has-sidebar\":!!an().sidebar||l.value}]),f=O(()=>({content:[a.e(\"content\"),i.e(\"content\"),\"is-left\"],arrowLeftBtn:[a.e(\"icon-btn\"),\"d-arrow-left\"],arrowRightBtn:[a.e(\"icon-btn\"),{[a.is(\"disabled\")]:!S.value},\"d-arrow-right\"]})),d=O(()=>({content:[a.e(\"content\"),i.e(\"content\"),\"is-right\"],arrowLeftBtn:[a.e(\"icon-btn\"),{\"is-disabled\":!S.value},\"d-arrow-left\"],arrowRightBtn:[a.e(\"icon-btn\"),\"d-arrow-right\"]})),h=_2(r),{leftPrevYear:v,rightNextYear:b,leftNextYear:p,rightPrevYear:g,leftLabel:m,rightLabel:y,leftYear:_,rightYear:w}=B9({unlinkPanels:At(n,\"unlinkPanels\"),leftDate:s,rightDate:o}),S=O(()=>n.unlinkPanels&&w.value>_.value+1),C=W(),E=W(),k=W({endDate:null,selecting:!1}),T=J=>{k.value=J},x=(J,re=!0)=>{const le=J.minDate,pe=J.maxDate;E.value===pe&&C.value===le||(t(\"calendar-change\",[le.toDate(),pe&&pe.toDate()]),E.value=pe,C.value=le,re&&M())},M=(J=!1)=>{Gi([C.value,E.value])&&t(\"pick\",[C.value,E.value],J)},A=J=>{k.value.selecting=J,J||(k.value.endDate=null)},P=Fe(\"EP_PICKER_BASE\"),{shortcuts:G,disabledDate:V}=P.props,I=At(P.props,\"format\"),j=At(P.props,\"defaultValue\"),F=()=>{let J;if(ke(j.value)){const re=Je(j.value[0]);let le=Je(j.value[1]);return n.unlinkPanels||(le=re.add(10,vb)),[re,le]}else j.value?J=Je(j.value):J=Je();return J=J.locale(r.value),[J,J.add(10,vb)]};ye(()=>j.value,J=>{if(J){const re=F();s.value=re[0],o.value=re[1]}},{immediate:!0}),ye(()=>n.parsedValue,J=>{if(J&&J.length===2)if(C.value=J[0],E.value=J[1],s.value=C.value,n.unlinkPanels&&E.value){const re=C.value.year(),le=E.value.year();o.value=re===le?E.value.add(10,\"year\"):E.value}else o.value=s.value.add(10,\"year\");else{const re=F();C.value=void 0,E.value=void 0,s.value=re[0],o.value=re[1]}},{immediate:!0});const R=J=>ke(J)?J.map(re=>Je(re,I.value).locale(r.value)):Je(J,I.value).locale(r.value),B=J=>ke(J)?J.map(re=>re.format(I.value)):J.format(I.value),N=J=>Gi(J)&&(V?!V(J[0].toDate())&&!V(J[1].toDate()):!0),U=()=>{const J=F();s.value=J[0],o.value=J[1],E.value=void 0,C.value=void 0,t(\"pick\",null)};return t(\"set-picker-option\",[\"isValidValue\",N]),t(\"set-picker-option\",[\"parseUserInput\",R]),t(\"set-picker-option\",[\"formatToString\",B]),t(\"set-picker-option\",[\"handleClear\",U]),(J,re)=>($(),X(\"div\",{class:D(c(u))},[Z(\"div\",{class:D(c(a).e(\"body-wrapper\"))},[ue(J.$slots,\"sidebar\",{class:D(c(a).e(\"sidebar\"))}),c(l)?($(),X(\"div\",{key:0,class:D(c(a).e(\"sidebar\"))},[($(!0),X(We,null,vt(c(G),(le,pe)=>($(),X(\"button\",{key:pe,type:\"button\",class:D(c(a).e(\"shortcut\")),onClick:K=>c(h)(le)},Ee(le.text),11,[\"onClick\"]))),128))],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(a).e(\"body\"))},[Z(\"div\",{class:D(c(f).content)},[Z(\"div\",{class:D(c(i).e(\"header\"))},[Z(\"button\",{type:\"button\",class:D(c(f).arrowLeftBtn),onClick:c(v)},[ue(J.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"onClick\"]),J.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(S),class:D(c(f).arrowRightBtn),onClick:c(p)},[ue(J.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"disabled\",\"onClick\"])):de(\"v-if\",!0),Z(\"div\",null,Ee(c(m)),1)],2),H(Uh,{\"selection-mode\":\"range\",date:s.value,\"min-date\":C.value,\"max-date\":E.value,\"range-state\":k.value,\"disabled-date\":c(V),onChangerange:T,onPick:x,onSelect:A},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\"])],2),Z(\"div\",{class:D(c(d).content)},[Z(\"div\",{class:D(c(i).e(\"header\"))},[J.unlinkPanels?($(),X(\"button\",{key:0,type:\"button\",disabled:!c(S),class:D(c(d).arrowLeftBtn),onClick:c(g)},[ue(J.$slots,\"prev-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(lo))]),_:1})])],10,[\"disabled\",\"onClick\"])):de(\"v-if\",!0),Z(\"button\",{type:\"button\",class:D(c(d).arrowRightBtn),onClick:c(b)},[ue(J.$slots,\"next-year\",{},()=>[H(c(He),null,{default:q(()=>[H(c(co))]),_:1})])],10,[\"onClick\"]),Z(\"div\",null,Ee(c(y)),1)],2),H(Uh,{\"selection-mode\":\"range\",date:o.value,\"min-date\":C.value,\"max-date\":E.value,\"range-state\":k.value,\"disabled-date\":c(V),onChangerange:T,onPick:x,onSelect:A},null,8,[\"date\",\"min-date\",\"max-date\",\"range-state\",\"disabled-date\"])],2)],2)],2)],2))}});var H9=Oe(F9,[[\"__file\",\"panel-year-range.vue\"]]);const V9=function(e){switch(e){case\"daterange\":case\"datetimerange\":return x9;case\"monthrange\":return I9;case\"yearrange\":return H9;default:return E9}};Je.extend($C);Je.extend(EV);Je.extend(rm);Je.extend(OV);Je.extend(LV);Je.extend(BV);Je.extend(VV);Je.extend(jV);var z9=ee({name:\"ElDatePicker\",install:null,props:u9,emits:[\"update:modelValue\"],setup(e,{expose:t,emit:n,slots:r}){const s=we(\"picker-panel\");pt(\"ElPopperOptions\",St(At(e,\"popperOptions\"))),pt($d,{slots:r,pickerNs:s});const o=W();t({focus:()=>{var l;(l=o.value)==null||l.focus()},blur:()=>{var l;(l=o.value)==null||l.blur()},handleOpen:()=>{var l;(l=o.value)==null||l.handleOpen()},handleClose:()=>{var l;(l=o.value)==null||l.handleClose()}});const i=l=>{n(\"update:modelValue\",l)};return()=>{var l;const u=(l=e.format)!=null?l:UV[e.type]||_i,f=V9(e.type);return H(f2,ft(e,{format:u,type:e.type,ref:o,\"onUpdate:modelValue\":i}),{default:d=>H(f,d,{\"prev-month\":r[\"prev-month\"],\"next-month\":r[\"next-month\"],\"prev-year\":r[\"prev-year\"],\"next-year\":r[\"next-year\"]}),\"range-separator\":r[\"range-separator\"]})}}});const W9=Qe(z9),um=Symbol(\"elDescriptions\");var Oa=ee({name:\"ElDescriptionsCell\",props:{cell:{type:Object},tag:{type:String,default:\"td\"},type:{type:String}},setup(){return{descriptions:Fe(um,{})}},render(){var e;const t=q5(this.cell),n=(((e=this.cell)==null?void 0:e.dirs)||[]).map(m=>{const{dir:y,arg:_,modifiers:w,value:S}=m;return[y,S,_,w]}),{border:r,direction:s}=this.descriptions,o=s===\"vertical\",a=()=>{var m,y,_;return((_=(y=(m=this.cell)==null?void 0:m.children)==null?void 0:y.label)==null?void 0:_.call(y))||t.label},i=()=>{var m,y,_;return(_=(y=(m=this.cell)==null?void 0:m.children)==null?void 0:y.default)==null?void 0:_.call(y)},l=t.span,u=t.rowspan,f=t.align?`is-${t.align}`:\"\",d=t.labelAlign?`is-${t.labelAlign}`:f,h=t.className,v=t.labelClassName,b=this.type===\"label\"&&(t.labelWidth||this.descriptions.labelWidth)||t.width,p={width:en(b),minWidth:en(t.minWidth)},g=we(\"descriptions\");switch(this.type){case\"label\":return st(Ye(this.tag,{style:p,class:[g.e(\"cell\"),g.e(\"label\"),g.is(\"bordered-label\",r),g.is(\"vertical-label\",o),d,v],colSpan:o?l:1,rowspan:o?1:u},a()),n);case\"content\":return st(Ye(this.tag,{style:p,class:[g.e(\"cell\"),g.e(\"content\"),g.is(\"bordered-content\",r),g.is(\"vertical-content\",o),f,h],colSpan:o?l:l*2-1,rowspan:o?u*2-1:u},i()),n);default:{const m=a();return st(Ye(\"td\",{style:p,class:[g.e(\"cell\"),f],colSpan:l,rowspan:u},[fn(m)?void 0:Ye(\"span\",{class:[g.e(\"label\"),v]},m),Ye(\"span\",{class:[g.e(\"content\"),h]},i())]),n)}}}});const K9=xe({row:{type:ie(Array),default:()=>[]}}),j9=ee({name:\"ElDescriptionsRow\"}),U9=ee({...j9,props:K9,setup(e){const t=Fe(um,{});return(n,r)=>c(t).direction===\"vertical\"?($(),X(We,{key:0},[Z(\"tr\",null,[($(!0),X(We,null,vt(n.row,(s,o)=>($(),ve(c(Oa),{key:`tr1-${o}`,cell:s,tag:\"th\",type:\"label\"},null,8,[\"cell\"]))),128))]),Z(\"tr\",null,[($(!0),X(We,null,vt(n.row,(s,o)=>($(),ve(c(Oa),{key:`tr2-${o}`,cell:s,tag:\"td\",type:\"content\"},null,8,[\"cell\"]))),128))])],64)):($(),X(\"tr\",{key:1},[($(!0),X(We,null,vt(n.row,(s,o)=>($(),X(We,{key:`tr3-${o}`},[c(t).border?($(),X(We,{key:0},[H(c(Oa),{cell:s,tag:\"td\",type:\"label\"},null,8,[\"cell\"]),H(c(Oa),{cell:s,tag:\"td\",type:\"content\"},null,8,[\"cell\"])],64)):($(),ve(c(Oa),{key:1,cell:s,tag:\"td\",type:\"both\"},null,8,[\"cell\"]))],64))),128))]))}});var q9=Oe(U9,[[\"__file\",\"descriptions-row.vue\"]]);const Y9=xe({border:Boolean,column:{type:Number,default:3},direction:{type:String,values:[\"horizontal\",\"vertical\"],default:\"horizontal\"},size:on,title:{type:String,default:\"\"},extra:{type:String,default:\"\"},labelWidth:{type:[String,Number],default:\"\"}}),G9=ee({name:\"ElDescriptions\"}),X9=ee({...G9,props:Y9,setup(e){const t=e,n=we(\"descriptions\"),r=sn(),s=an();pt(um,t);const o=O(()=>[n.b(),n.m(r.value)]),a=(l,u,f,d=!1)=>(l.props||(l.props={}),u>f&&(l.props.span=f),d&&(l.props.span=u),l),i=()=>{if(!s.default)return[];const l=to(s.default()).filter(b=>{var p;return((p=b==null?void 0:b.type)==null?void 0:p.name)===\"ElDescriptionsItem\"}),u=[];let f=[],d=t.column,h=0;const v=[];return l.forEach((b,p)=>{var g,m,y;const _=((g=b.props)==null?void 0:g.span)||1,w=((m=b.props)==null?void 0:m.rowspan)||1,S=u.length;if(v[S]||(v[S]=0),w>1)for(let C=1;C<w;C++)v[y=S+C]||(v[y]=0),v[S+C]++,h++;if(v[S]>0&&(d-=v[S],v[S]=0),p<l.length-1&&(h+=_>d?d:_),p===l.length-1){const C=t.column-h%t.column;f.push(a(b,C,d,!0)),u.push(f);return}_<d?(d-=_,f.push(b)):(f.push(a(b,_,d)),u.push(f),d=t.column,f=[])}),u};return(l,u)=>($(),X(\"div\",{class:D(c(o))},[l.title||l.extra||l.$slots.title||l.$slots.extra?($(),X(\"div\",{key:0,class:D(c(n).e(\"header\"))},[Z(\"div\",{class:D(c(n).e(\"title\"))},[ue(l.$slots,\"title\",{},()=>[Ve(Ee(l.title),1)])],2),Z(\"div\",{class:D(c(n).e(\"extra\"))},[ue(l.$slots,\"extra\",{},()=>[Ve(Ee(l.extra),1)])],2)],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(n).e(\"body\"))},[Z(\"table\",{class:D([c(n).e(\"table\"),c(n).is(\"bordered\",l.border)])},[Z(\"tbody\",null,[($(!0),X(We,null,vt(i(),(f,d)=>($(),ve(q9,{key:d,row:f},null,8,[\"row\"]))),128))])],2)],2)],2))}});var J9=Oe(X9,[[\"__file\",\"description.vue\"]]);const Z9=xe({label:{type:String,default:\"\"},span:{type:Number,default:1},rowspan:{type:Number,default:1},width:{type:[String,Number],default:\"\"},minWidth:{type:[String,Number],default:\"\"},labelWidth:{type:[String,Number],default:\"\"},align:{type:String,default:\"left\"},labelAlign:{type:String,default:\"\"},className:{type:String,default:\"\"},labelClassName:{type:String,default:\"\"}}),y2=ee({name:\"ElDescriptionsItem\",props:Z9}),Q9=Qe(J9,{DescriptionsItem:y2}),e7=Gt(y2),dm=e=>{if(!e)return{onClick:Mt,onMousedown:Mt,onMouseup:Mt};let t=!1,n=!1;return{onClick:a=>{t&&n&&e(a),t=n=!1},onMousedown:a=>{t=a.target===a.currentTarget},onMouseup:a=>{n=a.target===a.currentTarget}}},t7=xe({mask:{type:Boolean,default:!0},customMaskEvent:Boolean,overlayClass:{type:ie([String,Array,Object])},zIndex:{type:ie([String,Number])}}),n7={click:e=>e instanceof MouseEvent},r7=\"overlay\";var s7=ee({name:\"ElOverlay\",props:t7,emits:n7,setup(e,{slots:t,emit:n}){const r=we(r7),s=l=>{n(\"click\",l)},{onClick:o,onMousedown:a,onMouseup:i}=dm(e.customMaskEvent?void 0:s);return()=>e.mask?H(\"div\",{class:[r.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:o,onMousedown:a,onMouseup:i},[ue(t,\"default\")],fr.STYLE|fr.CLASS|fr.PROPS,[\"onClick\",\"onMouseup\",\"onMousedown\"]):Ye(\"div\",{class:e.overlayClass,style:{zIndex:e.zIndex,position:\"fixed\",top:\"0px\",right:\"0px\",bottom:\"0px\",left:\"0px\"}},[ue(t,\"default\")])}});const fm=s7,w2=Symbol(\"dialogInjectionKey\"),S2=xe({center:Boolean,alignCenter:Boolean,closeIcon:{type:Nt},draggable:Boolean,overflow:Boolean,fullscreen:Boolean,showClose:{type:Boolean,default:!0},title:{type:String,default:\"\"},ariaLevel:{type:String,default:\"2\"}}),o7={close:()=>!0},C2=(e,t,n,r)=>{let s={offsetX:0,offsetY:0};const o=u=>{const f=u.clientX,d=u.clientY,{offsetX:h,offsetY:v}=s,b=e.value.getBoundingClientRect(),p=b.left,g=b.top,m=b.width,y=b.height,_=document.documentElement.clientWidth,w=document.documentElement.clientHeight,S=-p+h,C=-g+v,E=_-p-m+h,k=w-g-y+v,T=M=>{let A=h+M.clientX-f,P=v+M.clientY-d;r!=null&&r.value||(A=Math.min(Math.max(A,S),E),P=Math.min(Math.max(P,C),k)),s={offsetX:A,offsetY:P},e.value&&(e.value.style.transform=`translate(${en(A)}, ${en(P)})`)},x=()=>{document.removeEventListener(\"mousemove\",T),document.removeEventListener(\"mouseup\",x)};document.addEventListener(\"mousemove\",T),document.addEventListener(\"mouseup\",x)},a=()=>{t.value&&e.value&&t.value.addEventListener(\"mousedown\",o)},i=()=>{t.value&&e.value&&t.value.removeEventListener(\"mousedown\",o)},l=()=>{s={offsetX:0,offsetY:0},e.value&&(e.value.style.transform=\"none\")};return it(()=>{En(()=>{n.value?a():i()})}),Pt(()=>{i()}),{resetPosition:l}},Ld=(...e)=>t=>{e.forEach(n=>{Ke(n)?n(t):n.value=t})},i7=ee({name:\"ElDialogContent\"}),a7=ee({...i7,props:S2,emits:o7,setup(e,{expose:t}){const n=e,{t:r}=yt(),{Close:s}=Iv,{dialogRef:o,headerRef:a,bodyId:i,ns:l,style:u}=Fe(w2),{focusTrapRef:f}=Fe(Hv),d=O(()=>[l.b(),l.is(\"fullscreen\",n.fullscreen),l.is(\"draggable\",n.draggable),l.is(\"align-center\",n.alignCenter),{[l.m(\"center\")]:n.center}]),h=Ld(f,o),v=O(()=>n.draggable),b=O(()=>n.overflow),{resetPosition:p}=C2(o,a,v,b);return t({resetPosition:p}),(g,m)=>($(),X(\"div\",{ref:c(h),class:D(c(d)),style:Ue(c(u)),tabindex:\"-1\"},[Z(\"header\",{ref_key:\"headerRef\",ref:a,class:D([c(l).e(\"header\"),{\"show-close\":g.showClose}])},[ue(g.$slots,\"header\",{},()=>[Z(\"span\",{role:\"heading\",\"aria-level\":g.ariaLevel,class:D(c(l).e(\"title\"))},Ee(g.title),11,[\"aria-level\"])]),g.showClose?($(),X(\"button\",{key:0,\"aria-label\":c(r)(\"el.dialog.close\"),class:D(c(l).e(\"headerbtn\")),type:\"button\",onClick:y=>g.$emit(\"close\")},[H(c(He),{class:D(c(l).e(\"close\"))},{default:q(()=>[($(),ve(dt(g.closeIcon||c(s))))]),_:1},8,[\"class\"])],10,[\"aria-label\",\"onClick\"])):de(\"v-if\",!0)],2),Z(\"div\",{id:c(i),class:D(c(l).e(\"body\"))},[ue(g.$slots,\"default\")],10,[\"id\"]),g.$slots.footer?($(),X(\"footer\",{key:0,class:D(c(l).e(\"footer\"))},[ue(g.$slots,\"footer\")],2)):de(\"v-if\",!0)],6))}});var l7=Oe(a7,[[\"__file\",\"dialog-content.vue\"]]);const k2=xe({...S2,appendToBody:Boolean,appendTo:{type:ie([String,Object]),default:\"body\"},beforeClose:{type:ie(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:\"2\"}}),E2={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[ot]:e=>Vt(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},hm=(e,t={})=>{Ft(e)||dn(\"[useLockscreen]\",\"You need to pass a ref param to this function\");const n=t.ns||we(\"popup\"),r=O(()=>n.bm(\"parent\",\"hidden\"));if(!bt||Zn(document.body,r.value))return;let s=0,o=!1,a=\"0\";const i=()=>{setTimeout(()=>{typeof document>\"u\"||(Bn(document==null?void 0:document.body,r.value),o&&document&&(document.body.style.width=a))},200)};ye(e,l=>{if(!l){i();return}o=!Zn(document.body,r.value),o&&(a=document.body.style.width),s=FS(n.namespace.value);const u=document.documentElement.clientHeight<document.body.scrollHeight,f=bs(document.body,\"overflowY\");s>0&&(u||f===\"scroll\")&&o&&(document.body.style.width=`calc(100% - ${s}px)`),pr(document.body,r.value)}),Np(()=>i())},T2=(e,t)=>{var n;const s=ct().emit,{nextZIndex:o}=da();let a=\"\";const i=Sn(),l=Sn(),u=W(!1),f=W(!1),d=W(!1),h=W((n=e.zIndex)!=null?n:o());let v,b;const p=Cd(\"namespace\",Ua),g=O(()=>{const V={},I=`--${p.value}-dialog`;return e.fullscreen||(e.top&&(V[`${I}-margin-top`]=e.top),e.width&&(V[`${I}-width`]=en(e.width))),V}),m=O(()=>e.alignCenter?{display:\"flex\"}:{});function y(){s(\"opened\")}function _(){s(\"closed\"),s(ot,!1),e.destroyOnClose&&(d.value=!1)}function w(){s(\"close\")}function S(){b==null||b(),v==null||v(),e.openDelay&&e.openDelay>0?{stop:v}=Jo(()=>T(),e.openDelay):T()}function C(){v==null||v(),b==null||b(),e.closeDelay&&e.closeDelay>0?{stop:b}=Jo(()=>x(),e.closeDelay):x()}function E(){function V(I){I||(f.value=!0,u.value=!1)}e.beforeClose?e.beforeClose(V):C()}function k(){e.closeOnClickModal&&E()}function T(){bt&&(u.value=!0)}function x(){u.value=!1}function M(){s(\"openAutoFocus\")}function A(){s(\"closeAutoFocus\")}function P(V){var I;((I=V.detail)==null?void 0:I.focusReason)===\"pointer\"&&V.preventDefault()}e.lockScroll&&hm(u);function G(){e.closeOnPressEscape&&E()}return ye(()=>e.modelValue,V=>{V?(f.value=!1,S(),d.value=!0,h.value=wS(e.zIndex)?o():h.value++,je(()=>{s(\"open\"),t.value&&(t.value.scrollTop=0)})):u.value&&C()}),ye(()=>e.fullscreen,V=>{t.value&&(V?(a=t.value.style.transform,t.value.style.transform=\"\"):t.value.style.transform=a)}),it(()=>{e.modelValue&&(u.value=!0,d.value=!0,S())}),{afterEnter:y,afterLeave:_,beforeLeave:w,handleClose:E,onModalClick:k,close:C,doClose:x,onOpenAutoFocus:M,onCloseAutoFocus:A,onCloseRequested:G,onFocusoutPrevented:P,titleId:i,bodyId:l,closed:f,style:g,overlayDialogStyle:m,rendered:d,visible:u,zIndex:h}},c7=ee({name:\"ElDialog\",inheritAttrs:!1}),u7=ee({...c7,props:k2,emits:E2,setup(e,{expose:t}){const n=e,r=an();Qs({scope:\"el-dialog\",from:\"the title slot\",replacement:\"the header slot\",version:\"3.0.0\",ref:\"https://element-plus.org/en-US/component/dialog.html#slots\"},O(()=>!!r.title));const s=we(\"dialog\"),o=W(),a=W(),i=W(),{visible:l,titleId:u,bodyId:f,style:d,overlayDialogStyle:h,rendered:v,zIndex:b,afterEnter:p,afterLeave:g,beforeLeave:m,handleClose:y,onModalClick:_,onOpenAutoFocus:w,onCloseAutoFocus:S,onCloseRequested:C,onFocusoutPrevented:E}=T2(n,o);pt(w2,{dialogRef:o,headerRef:a,bodyId:f,ns:s,rendered:v,style:d});const k=dm(_),T=O(()=>n.draggable&&!n.fullscreen);return t({visible:l,dialogContentRef:i,resetPosition:()=>{var M;(M=i.value)==null||M.resetPosition()}}),(M,A)=>($(),ve(c(pa),{to:M.appendTo,disabled:M.appendTo!==\"body\"?!1:!M.appendToBody},{default:q(()=>[H(_n,{name:\"dialog-fade\",onAfterEnter:c(p),onAfterLeave:c(g),onBeforeLeave:c(m),persisted:\"\"},{default:q(()=>[st(H(c(fm),{\"custom-mask-event\":\"\",mask:M.modal,\"overlay-class\":M.modalClass,\"z-index\":c(b)},{default:q(()=>[Z(\"div\",{role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":M.title||void 0,\"aria-labelledby\":M.title?void 0:c(u),\"aria-describedby\":c(f),class:D(`${c(s).namespace.value}-overlay-dialog`),style:Ue(c(h)),onClick:c(k).onClick,onMousedown:c(k).onMousedown,onMouseup:c(k).onMouseup},[H(c(ha),{loop:\"\",trapped:c(l),\"focus-start-el\":\"container\",onFocusAfterTrapped:c(w),onFocusAfterReleased:c(S),onFocusoutPrevented:c(E),onReleaseRequested:c(C)},{default:q(()=>[c(v)?($(),ve(l7,ft({key:0,ref_key:\"dialogContentRef\",ref:i},M.$attrs,{center:M.center,\"align-center\":M.alignCenter,\"close-icon\":M.closeIcon,draggable:c(T),overflow:M.overflow,fullscreen:M.fullscreen,\"show-close\":M.showClose,title:M.title,\"aria-level\":M.headerAriaLevel,onClose:c(y)}),_r({header:q(()=>[M.$slots.title?ue(M.$slots,\"title\",{key:1}):ue(M.$slots,\"header\",{key:0,close:c(y),titleId:c(u),titleClass:c(s).e(\"title\")})]),default:q(()=>[ue(M.$slots,\"default\")]),_:2},[M.$slots.footer?{name:\"footer\",fn:q(()=>[ue(M.$slots,\"footer\")])}:void 0]),1040,[\"center\",\"align-center\",\"close-icon\",\"draggable\",\"overflow\",\"fullscreen\",\"show-close\",\"title\",\"aria-level\",\"onClose\"])):de(\"v-if\",!0)]),_:3},8,[\"trapped\",\"onFocusAfterTrapped\",\"onFocusAfterReleased\",\"onFocusoutPrevented\",\"onReleaseRequested\"])],46,[\"aria-label\",\"aria-labelledby\",\"aria-describedby\",\"onClick\",\"onMousedown\",\"onMouseup\"])]),_:3},8,[\"mask\",\"overlay-class\",\"z-index\"]),[[Et,c(l)]])]),_:3},8,[\"onAfterEnter\",\"onAfterLeave\",\"onBeforeLeave\"])]),_:3},8,[\"to\",\"disabled\"]))}});var d7=Oe(u7,[[\"__file\",\"dialog.vue\"]]);const R2=Qe(d7),f7=xe({direction:{type:String,values:[\"horizontal\",\"vertical\"],default:\"horizontal\"},contentPosition:{type:String,values:[\"left\",\"center\",\"right\"],default:\"center\"},borderStyle:{type:ie(String),default:\"solid\"}}),h7=ee({name:\"ElDivider\"}),p7=ee({...h7,props:f7,setup(e){const t=e,n=we(\"divider\"),r=O(()=>n.cssVar({\"border-style\":t.borderStyle}));return(s,o)=>($(),X(\"div\",{class:D([c(n).b(),c(n).m(s.direction)]),style:Ue(c(r)),role:\"separator\"},[s.$slots.default&&s.direction!==\"vertical\"?($(),X(\"div\",{key:0,class:D([c(n).e(\"text\"),c(n).is(s.contentPosition)])},[ue(s.$slots,\"default\")],2)):de(\"v-if\",!0)],6))}});var v7=Oe(p7,[[\"__file\",\"divider.vue\"]]);const x2=Qe(v7),m7=xe({...k2,direction:{type:String,default:\"rtl\",values:[\"ltr\",\"rtl\",\"ttb\",\"btt\"]},size:{type:[String,Number],default:\"30%\"},withHeader:{type:Boolean,default:!0},modalFade:{type:Boolean,default:!0},headerAriaLevel:{type:String,default:\"2\"}}),g7=E2,_7=ee({name:\"ElDrawer\",inheritAttrs:!1}),b7=ee({..._7,props:m7,emits:g7,setup(e,{expose:t}){const n=e,r=an();Qs({scope:\"el-drawer\",from:\"the title slot\",replacement:\"the header slot\",version:\"3.0.0\",ref:\"https://element-plus.org/en-US/component/drawer.html#slots\"},O(()=>!!r.title));const s=W(),o=W(),a=we(\"drawer\"),{t:i}=yt(),{afterEnter:l,afterLeave:u,beforeLeave:f,visible:d,rendered:h,titleId:v,bodyId:b,zIndex:p,onModalClick:g,onOpenAutoFocus:m,onCloseAutoFocus:y,onFocusoutPrevented:_,onCloseRequested:w,handleClose:S}=T2(n,s),C=O(()=>n.direction===\"rtl\"||n.direction===\"ltr\"),E=O(()=>en(n.size));return t({handleClose:S,afterEnter:l,afterLeave:u}),(k,T)=>($(),ve(c(pa),{to:k.appendTo,disabled:k.appendTo!==\"body\"?!1:!k.appendToBody},{default:q(()=>[H(_n,{name:c(a).b(\"fade\"),onAfterEnter:c(l),onAfterLeave:c(u),onBeforeLeave:c(f),persisted:\"\"},{default:q(()=>[st(H(c(fm),{mask:k.modal,\"overlay-class\":k.modalClass,\"z-index\":c(p),onClick:c(g)},{default:q(()=>[H(c(ha),{loop:\"\",trapped:c(d),\"focus-trap-el\":s.value,\"focus-start-el\":o.value,onFocusAfterTrapped:c(m),onFocusAfterReleased:c(y),onFocusoutPrevented:c(_),onReleaseRequested:c(w)},{default:q(()=>[Z(\"div\",ft({ref_key:\"drawerRef\",ref:s,\"aria-modal\":\"true\",\"aria-label\":k.title||void 0,\"aria-labelledby\":k.title?void 0:c(v),\"aria-describedby\":c(b)},k.$attrs,{class:[c(a).b(),k.direction,c(d)&&\"open\"],style:c(C)?\"width: \"+c(E):\"height: \"+c(E),role:\"dialog\",onClick:Xe(()=>{},[\"stop\"])}),[Z(\"span\",{ref_key:\"focusStartRef\",ref:o,class:D(c(a).e(\"sr-focus\")),tabindex:\"-1\"},null,2),k.withHeader?($(),X(\"header\",{key:0,class:D(c(a).e(\"header\"))},[k.$slots.title?ue(k.$slots,\"title\",{key:1},()=>[de(\" DEPRECATED SLOT \")]):ue(k.$slots,\"header\",{key:0,close:c(S),titleId:c(v),titleClass:c(a).e(\"title\")},()=>[k.$slots.title?de(\"v-if\",!0):($(),X(\"span\",{key:0,id:c(v),role:\"heading\",\"aria-level\":k.headerAriaLevel,class:D(c(a).e(\"title\"))},Ee(k.title),11,[\"id\",\"aria-level\"]))]),k.showClose?($(),X(\"button\",{key:2,\"aria-label\":c(i)(\"el.drawer.close\"),class:D(c(a).e(\"close-btn\")),type:\"button\",onClick:c(S)},[H(c(He),{class:D(c(a).e(\"close\"))},{default:q(()=>[H(c(Dr))]),_:1},8,[\"class\"])],10,[\"aria-label\",\"onClick\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0),c(h)?($(),X(\"div\",{key:1,id:c(b),class:D(c(a).e(\"body\"))},[ue(k.$slots,\"default\")],10,[\"id\"])):de(\"v-if\",!0),k.$slots.footer?($(),X(\"div\",{key:2,class:D(c(a).e(\"footer\"))},[ue(k.$slots,\"footer\")],2)):de(\"v-if\",!0)],16,[\"aria-label\",\"aria-labelledby\",\"aria-describedby\",\"onClick\"])]),_:3},8,[\"trapped\",\"focus-trap-el\",\"focus-start-el\",\"onFocusAfterTrapped\",\"onFocusAfterReleased\",\"onFocusoutPrevented\",\"onReleaseRequested\"])]),_:3},8,[\"mask\",\"overlay-class\",\"z-index\",\"onClick\"]),[[Et,c(d)]])]),_:3},8,[\"name\",\"onAfterEnter\",\"onAfterLeave\",\"onBeforeLeave\"])]),_:3},8,[\"to\",\"disabled\"]))}});var y7=Oe(b7,[[\"__file\",\"drawer.vue\"]]);const w7=Qe(y7),S7=ee({inheritAttrs:!1});function C7(e,t,n,r,s,o){return ue(e.$slots,\"default\")}var k7=Oe(S7,[[\"render\",C7],[\"__file\",\"collection.vue\"]]);const E7=ee({name:\"ElCollectionItem\",inheritAttrs:!1});function T7(e,t,n,r,s,o){return ue(e.$slots,\"default\")}var R7=Oe(E7,[[\"render\",T7],[\"__file\",\"collection-item.vue\"]]);const O2=\"data-el-collection-item\",M2=e=>{const t=`El${e}Collection`,n=`${t}Item`,r=Symbol(t),s=Symbol(n),o={...k7,name:t,setup(){const i=W(null),l=new Map;pt(r,{itemMap:l,getItems:()=>{const f=c(i);if(!f)return[];const d=Array.from(f.querySelectorAll(`[${O2}]`));return[...l.values()].sort((v,b)=>d.indexOf(v.ref)-d.indexOf(b.ref))},collectionRef:i})}},a={...R7,name:n,setup(i,{attrs:l}){const u=W(null),f=Fe(r,void 0);pt(s,{collectionItemRef:u}),it(()=>{const d=c(u);d&&f.itemMap.set(d,{ref:d,...l})}),Pt(()=>{const d=c(u);f.itemMap.delete(d)})}};return{COLLECTION_INJECTION_KEY:r,COLLECTION_ITEM_INJECTION_KEY:s,ElCollection:o,ElCollectionItem:a}},x7=xe({style:{type:ie([String,Array,Object])},currentTabId:{type:ie(String)},defaultCurrentTabId:String,loop:Boolean,dir:{type:String,values:[\"ltr\",\"rtl\"],default:\"ltr\"},orientation:{type:ie(String)},onBlur:Function,onFocus:Function,onMousedown:Function}),{ElCollection:O7,ElCollectionItem:M7,COLLECTION_INJECTION_KEY:pm,COLLECTION_ITEM_INJECTION_KEY:A7}=M2(\"RovingFocusGroup\"),vm=Symbol(\"elRovingFocusGroup\"),A2=Symbol(\"elRovingFocusGroupItem\"),$7={ArrowLeft:\"prev\",ArrowUp:\"prev\",ArrowRight:\"next\",ArrowDown:\"next\",PageUp:\"first\",Home:\"first\",PageDown:\"last\",End:\"last\"},L7=(e,t)=>e,I7=(e,t,n)=>{const r=L7(e.code);return $7[r]},P7=(e,t)=>e.map((n,r)=>e[(r+t)%e.length]),mm=e=>{const{activeElement:t}=document;for(const n of e)if(n===t||(n.focus(),t!==document.activeElement))return},mb=\"currentTabIdChange\",gb=\"rovingFocusGroup.entryFocus\",D7={bubbles:!1,cancelable:!0},B7=ee({name:\"ElRovingFocusGroupImpl\",inheritAttrs:!1,props:x7,emits:[mb,\"entryFocus\"],setup(e,{emit:t}){var n;const r=W((n=e.currentTabId||e.defaultCurrentTabId)!=null?n:null),s=W(!1),o=W(!1),a=W(null),{getItems:i}=Fe(pm,void 0),l=O(()=>[{outline:\"none\"},e.style]),u=p=>{t(mb,p)},f=()=>{s.value=!0},d=Qt(p=>{var g;(g=e.onMousedown)==null||g.call(e,p)},()=>{o.value=!0}),h=Qt(p=>{var g;(g=e.onFocus)==null||g.call(e,p)},p=>{const g=!c(o),{target:m,currentTarget:y}=p;if(m===y&&g&&!c(s)){const _=new Event(gb,D7);if(y==null||y.dispatchEvent(_),!_.defaultPrevented){const w=i().filter(T=>T.focusable),S=w.find(T=>T.active),C=w.find(T=>T.id===c(r)),k=[S,C,...w].filter(Boolean).map(T=>T.ref);mm(k)}}o.value=!1}),v=Qt(p=>{var g;(g=e.onBlur)==null||g.call(e,p)},()=>{s.value=!1}),b=(...p)=>{t(\"entryFocus\",...p)};pt(vm,{currentTabbedId:ra(r),loop:At(e,\"loop\"),tabIndex:O(()=>c(s)?-1:0),rovingFocusGroupRef:a,rovingFocusGroupRootStyle:l,orientation:At(e,\"orientation\"),dir:At(e,\"dir\"),onItemFocus:u,onItemShiftTab:f,onBlur:v,onFocus:h,onMousedown:d}),ye(()=>e.currentTabId,p=>{r.value=p??null}),It(a,gb,b)}});function N7(e,t,n,r,s,o){return ue(e.$slots,\"default\")}var F7=Oe(B7,[[\"render\",N7],[\"__file\",\"roving-focus-group-impl.vue\"]]);const H7=ee({name:\"ElRovingFocusGroup\",components:{ElFocusGroupCollection:O7,ElRovingFocusGroupImpl:F7}});function V7(e,t,n,r,s,o){const a=ut(\"el-roving-focus-group-impl\"),i=ut(\"el-focus-group-collection\");return $(),ve(i,null,{default:q(()=>[H(a,xr(ro(e.$attrs)),{default:q(()=>[ue(e.$slots,\"default\")]),_:3},16)]),_:3})}var z7=Oe(H7,[[\"render\",V7],[\"__file\",\"roving-focus-group.vue\"]]);const Qc=xe({trigger:gl.trigger,triggerKeys:{type:ie(Array),default:()=>[Ne.enter,Ne.numpadEnter,Ne.space,Ne.down]},effect:{...pn.effect,default:\"light\"},type:{type:ie(String)},placement:{type:ie(String),default:\"bottom\"},popperOptions:{type:ie(Object),default:()=>({})},id:String,size:{type:String,default:\"\"},splitButton:Boolean,hideOnClick:{type:Boolean,default:!0},loop:{type:Boolean,default:!0},showTimeout:{type:Number,default:150},hideTimeout:{type:Number,default:150},tabindex:{type:ie([Number,String]),default:0},maxHeight:{type:ie([Number,String]),default:\"\"},popperClass:{type:String,default:\"\"},disabled:Boolean,role:{type:String,default:\"menu\"},buttonProps:{type:ie(Object)},teleported:pn.teleported}),$2=xe({command:{type:[Object,String,Number],default:()=>({})},disabled:Boolean,divided:Boolean,textValue:String,icon:{type:Nt}}),W7=xe({onKeydown:{type:ie(Function)}}),K7=[Ne.down,Ne.pageDown,Ne.home],L2=[Ne.up,Ne.pageUp,Ne.end],j7=[...K7,...L2],{ElCollection:U7,ElCollectionItem:q7,COLLECTION_INJECTION_KEY:Y7,COLLECTION_ITEM_INJECTION_KEY:G7}=M2(\"Dropdown\"),Id=Symbol(\"elDropdown\"),{ButtonGroup:X7}=cn,J7=ee({name:\"ElDropdown\",components:{ElButton:cn,ElButtonGroup:X7,ElScrollbar:ls,ElDropdownCollection:U7,ElTooltip:Cn,ElRovingFocusGroup:z7,ElOnlyChild:sC,ElIcon:He,ArrowDown:As},props:Qc,emits:[\"visible-change\",\"click\",\"command\"],setup(e,{emit:t}){const n=ct(),r=we(\"dropdown\"),{t:s}=yt(),o=W(),a=W(),i=W(null),l=W(null),u=W(null),f=W(null),d=W(!1),h=O(()=>({maxHeight:en(e.maxHeight)})),v=O(()=>[r.m(w.value)]),b=O(()=>Pn(e.trigger)),p=Sn().value,g=O(()=>e.id||p);ye([o,b],([I,j],[F])=>{var R,B,N;(R=F==null?void 0:F.$el)!=null&&R.removeEventListener&&F.$el.removeEventListener(\"pointerenter\",C),(B=I==null?void 0:I.$el)!=null&&B.removeEventListener&&I.$el.removeEventListener(\"pointerenter\",C),(N=I==null?void 0:I.$el)!=null&&N.addEventListener&&j.includes(\"hover\")&&I.$el.addEventListener(\"pointerenter\",C)},{immediate:!0}),Pt(()=>{var I,j;(j=(I=o.value)==null?void 0:I.$el)!=null&&j.removeEventListener&&o.value.$el.removeEventListener(\"pointerenter\",C)});function m(){y()}function y(){var I;(I=i.value)==null||I.onClose()}function _(){var I;(I=i.value)==null||I.onOpen()}const w=sn();function S(...I){t(\"command\",...I)}function C(){var I,j;(j=(I=o.value)==null?void 0:I.$el)==null||j.focus()}function E(){}function k(){const I=c(l);b.value.includes(\"hover\")&&(I==null||I.focus()),f.value=null}function T(I){f.value=I}function x(I){d.value||(I.preventDefault(),I.stopImmediatePropagation())}function M(){t(\"visible-change\",!0)}function A(I){(I==null?void 0:I.type)===\"keydown\"&&l.value.focus()}function P(){t(\"visible-change\",!1)}return pt(Id,{contentRef:l,role:O(()=>e.role),triggerId:g,isUsingKeyboard:d,onItemEnter:E,onItemLeave:k}),pt(\"elDropdown\",{instance:n,dropdownSize:w,handleClick:m,commandHandler:S,trigger:At(e,\"trigger\"),hideOnClick:At(e,\"hideOnClick\")}),{t:s,ns:r,scrollbar:u,wrapStyle:h,dropdownTriggerKls:v,dropdownSize:w,triggerId:g,currentTabId:f,handleCurrentTabIdChange:T,handlerMainButtonClick:I=>{t(\"click\",I)},handleEntryFocus:x,handleClose:y,handleOpen:_,handleBeforeShowTooltip:M,handleShowTooltip:A,handleBeforeHideTooltip:P,onFocusAfterTrapped:I=>{var j,F;I.preventDefault(),(F=(j=l.value)==null?void 0:j.focus)==null||F.call(j,{preventScroll:!0})},popperRef:i,contentRef:l,triggeringElementRef:o,referenceElementRef:a}}});function Z7(e,t,n,r,s,o){var a;const i=ut(\"el-dropdown-collection\"),l=ut(\"el-roving-focus-group\"),u=ut(\"el-scrollbar\"),f=ut(\"el-only-child\"),d=ut(\"el-tooltip\"),h=ut(\"el-button\"),v=ut(\"arrow-down\"),b=ut(\"el-icon\"),p=ut(\"el-button-group\");return $(),X(\"div\",{class:D([e.ns.b(),e.ns.is(\"disabled\",e.disabled)])},[H(d,{ref:\"popperRef\",role:e.role,effect:e.effect,\"fallback-placements\":[\"bottom\",\"top\"],\"popper-options\":e.popperOptions,\"gpu-acceleration\":!1,\"hide-after\":e.trigger===\"hover\"?e.hideTimeout:0,\"manual-mode\":!0,placement:e.placement,\"popper-class\":[e.ns.e(\"popper\"),e.popperClass],\"reference-element\":(a=e.referenceElementRef)==null?void 0:a.$el,trigger:e.trigger,\"trigger-keys\":e.triggerKeys,\"trigger-target-el\":e.contentRef,\"show-after\":e.trigger===\"hover\"?e.showTimeout:0,\"stop-popper-mouse-event\":!1,\"virtual-ref\":e.triggeringElementRef,\"virtual-triggering\":e.splitButton,disabled:e.disabled,transition:`${e.ns.namespace.value}-zoom-in-top`,teleported:e.teleported,pure:\"\",persistent:\"\",onBeforeShow:e.handleBeforeShowTooltip,onShow:e.handleShowTooltip,onBeforeHide:e.handleBeforeHideTooltip},_r({content:q(()=>[H(u,{ref:\"scrollbar\",\"wrap-style\":e.wrapStyle,tag:\"div\",\"view-class\":e.ns.e(\"list\")},{default:q(()=>[H(l,{loop:e.loop,\"current-tab-id\":e.currentTabId,orientation:\"horizontal\",onCurrentTabIdChange:e.handleCurrentTabIdChange,onEntryFocus:e.handleEntryFocus},{default:q(()=>[H(i,null,{default:q(()=>[ue(e.$slots,\"dropdown\")]),_:3})]),_:3},8,[\"loop\",\"current-tab-id\",\"onCurrentTabIdChange\",\"onEntryFocus\"])]),_:3},8,[\"wrap-style\",\"view-class\"])]),_:2},[e.splitButton?void 0:{name:\"default\",fn:q(()=>[H(f,{id:e.triggerId,ref:\"triggeringElementRef\",role:\"button\",tabindex:e.tabindex},{default:q(()=>[ue(e.$slots,\"default\")]),_:3},8,[\"id\",\"tabindex\"])])}]),1032,[\"role\",\"effect\",\"popper-options\",\"hide-after\",\"placement\",\"popper-class\",\"reference-element\",\"trigger\",\"trigger-keys\",\"trigger-target-el\",\"show-after\",\"virtual-ref\",\"virtual-triggering\",\"disabled\",\"transition\",\"teleported\",\"onBeforeShow\",\"onShow\",\"onBeforeHide\"]),e.splitButton?($(),ve(p,{key:0},{default:q(()=>[H(h,ft({ref:\"referenceElementRef\"},e.buttonProps,{size:e.dropdownSize,type:e.type,disabled:e.disabled,tabindex:e.tabindex,onClick:e.handlerMainButtonClick}),{default:q(()=>[ue(e.$slots,\"default\")]),_:3},16,[\"size\",\"type\",\"disabled\",\"tabindex\",\"onClick\"]),H(h,ft({id:e.triggerId,ref:\"triggeringElementRef\"},e.buttonProps,{role:\"button\",size:e.dropdownSize,type:e.type,class:e.ns.e(\"caret-button\"),disabled:e.disabled,tabindex:e.tabindex,\"aria-label\":e.t(\"el.dropdown.toggleDropdown\")}),{default:q(()=>[H(b,{class:D(e.ns.e(\"icon\"))},{default:q(()=>[H(v)]),_:1},8,[\"class\"])]),_:1},16,[\"id\",\"size\",\"type\",\"class\",\"disabled\",\"tabindex\",\"aria-label\"])]),_:3})):de(\"v-if\",!0)],2)}var Q7=Oe(J7,[[\"render\",Z7],[\"__file\",\"dropdown.vue\"]]);const ez=ee({components:{ElRovingFocusCollectionItem:M7},props:{focusable:{type:Boolean,default:!0},active:{type:Boolean,default:!1}},emits:[\"mousedown\",\"focus\",\"keydown\"],setup(e,{emit:t}){const{currentTabbedId:n,loop:r,onItemFocus:s,onItemShiftTab:o}=Fe(vm,void 0),{getItems:a}=Fe(pm,void 0),i=Sn(),l=W(null),u=Qt(v=>{t(\"mousedown\",v)},v=>{e.focusable?s(c(i)):v.preventDefault()}),f=Qt(v=>{t(\"focus\",v)},()=>{s(c(i))}),d=Qt(v=>{t(\"keydown\",v)},v=>{const{code:b,shiftKey:p,target:g,currentTarget:m}=v;if(b===Ne.tab&&p){o();return}if(g!==m)return;const y=I7(v);if(y){v.preventDefault();let w=a().filter(S=>S.focusable).map(S=>S.ref);switch(y){case\"last\":{w.reverse();break}case\"prev\":case\"next\":{y===\"prev\"&&w.reverse();const S=w.indexOf(m);w=r.value?P7(w,S+1):w.slice(S+1);break}}je(()=>{mm(w)})}}),h=O(()=>n.value===c(i));return pt(A2,{rovingFocusGroupItemRef:l,tabIndex:O(()=>c(h)?0:-1),handleMousedown:u,handleFocus:f,handleKeydown:d}),{id:i,handleKeydown:d,handleFocus:f,handleMousedown:u}}});function tz(e,t,n,r,s,o){const a=ut(\"el-roving-focus-collection-item\");return $(),ve(a,{id:e.id,focusable:e.focusable,active:e.active},{default:q(()=>[ue(e.$slots,\"default\")]),_:3},8,[\"id\",\"focusable\",\"active\"])}var nz=Oe(ez,[[\"render\",tz],[\"__file\",\"roving-focus-item.vue\"]]);const rz=ee({name:\"DropdownItemImpl\",components:{ElIcon:He},props:$2,emits:[\"pointermove\",\"pointerleave\",\"click\",\"clickimpl\"],setup(e,{emit:t}){const n=we(\"dropdown\"),{role:r}=Fe(Id,void 0),{collectionItemRef:s}=Fe(G7,void 0),{collectionItemRef:o}=Fe(A7,void 0),{rovingFocusGroupItemRef:a,tabIndex:i,handleFocus:l,handleKeydown:u,handleMousedown:f}=Fe(A2,void 0),d=Ld(s,o,a),h=O(()=>r.value===\"menu\"?\"menuitem\":r.value===\"navigation\"?\"link\":\"button\"),v=Qt(b=>{if([Ne.enter,Ne.numpadEnter,Ne.space].includes(b.code))return b.preventDefault(),b.stopImmediatePropagation(),t(\"clickimpl\",b),!0},u);return{ns:n,itemRef:d,dataset:{[O2]:\"\"},role:h,tabIndex:i,handleFocus:l,handleKeydown:v,handleMousedown:f}}});function sz(e,t,n,r,s,o){const a=ut(\"el-icon\");return $(),X(We,null,[e.divided?($(),X(\"li\",{key:0,role:\"separator\",class:D(e.ns.bem(\"menu\",\"item\",\"divided\"))},null,2)):de(\"v-if\",!0),Z(\"li\",ft({ref:e.itemRef},{...e.dataset,...e.$attrs},{\"aria-disabled\":e.disabled,class:[e.ns.be(\"menu\",\"item\"),e.ns.is(\"disabled\",e.disabled)],tabindex:e.tabIndex,role:e.role,onClick:i=>e.$emit(\"clickimpl\",i),onFocus:e.handleFocus,onKeydown:Xe(e.handleKeydown,[\"self\"]),onMousedown:e.handleMousedown,onPointermove:i=>e.$emit(\"pointermove\",i),onPointerleave:i=>e.$emit(\"pointerleave\",i)}),[e.icon?($(),ve(a,{key:0},{default:q(()=>[($(),ve(dt(e.icon)))]),_:1})):de(\"v-if\",!0),ue(e.$slots,\"default\")],16,[\"aria-disabled\",\"tabindex\",\"role\",\"onClick\",\"onFocus\",\"onKeydown\",\"onMousedown\",\"onPointermove\",\"onPointerleave\"])],64)}var oz=Oe(rz,[[\"render\",sz],[\"__file\",\"dropdown-item-impl.vue\"]]);const I2=()=>{const e=Fe(\"elDropdown\",{}),t=O(()=>e==null?void 0:e.dropdownSize);return{elDropdown:e,_elDropdownSize:t}},iz=ee({name:\"ElDropdownItem\",components:{ElDropdownCollectionItem:q7,ElRovingFocusItem:nz,ElDropdownItemImpl:oz},inheritAttrs:!1,props:$2,emits:[\"pointermove\",\"pointerleave\",\"click\"],setup(e,{emit:t,attrs:n}){const{elDropdown:r}=I2(),s=ct(),o=W(null),a=O(()=>{var v,b;return(b=(v=c(o))==null?void 0:v.textContent)!=null?b:\"\"}),{onItemEnter:i,onItemLeave:l}=Fe(Id,void 0),u=Qt(v=>(t(\"pointermove\",v),v.defaultPrevented),N_(v=>{if(e.disabled){l(v);return}const b=v.currentTarget;b===document.activeElement||b.contains(document.activeElement)||(i(v),v.defaultPrevented||b==null||b.focus())})),f=Qt(v=>(t(\"pointerleave\",v),v.defaultPrevented),N_(l)),d=Qt(v=>{if(!e.disabled)return t(\"click\",v),v.type!==\"keydown\"&&v.defaultPrevented},v=>{var b,p,g;if(e.disabled){v.stopImmediatePropagation();return}(b=r==null?void 0:r.hideOnClick)!=null&&b.value&&((p=r.handleClick)==null||p.call(r)),(g=r.commandHandler)==null||g.call(r,e.command,s,v)}),h=O(()=>({...e,...n}));return{handleClick:d,handlePointerMove:u,handlePointerLeave:f,textContent:a,propsAndAttrs:h}}});function az(e,t,n,r,s,o){var a;const i=ut(\"el-dropdown-item-impl\"),l=ut(\"el-roving-focus-item\"),u=ut(\"el-dropdown-collection-item\");return $(),ve(u,{disabled:e.disabled,\"text-value\":(a=e.textValue)!=null?a:e.textContent},{default:q(()=>[H(l,{focusable:!e.disabled},{default:q(()=>[H(i,ft(e.propsAndAttrs,{onPointerleave:e.handlePointerLeave,onPointermove:e.handlePointerMove,onClickimpl:e.handleClick}),{default:q(()=>[ue(e.$slots,\"default\")]),_:3},16,[\"onPointerleave\",\"onPointermove\",\"onClickimpl\"])]),_:3},8,[\"focusable\"])]),_:3},8,[\"disabled\",\"text-value\"])}var P2=Oe(iz,[[\"render\",az],[\"__file\",\"dropdown-item.vue\"]]);const lz=ee({name:\"ElDropdownMenu\",props:W7,setup(e){const t=we(\"dropdown\"),{_elDropdownSize:n}=I2(),r=n.value,{focusTrapRef:s,onKeydown:o}=Fe(Hv,void 0),{contentRef:a,role:i,triggerId:l}=Fe(Id,void 0),{collectionRef:u,getItems:f}=Fe(Y7,void 0),{rovingFocusGroupRef:d,rovingFocusGroupRootStyle:h,tabIndex:v,onBlur:b,onFocus:p,onMousedown:g}=Fe(vm,void 0),{collectionRef:m}=Fe(pm,void 0),y=O(()=>[t.b(\"menu\"),t.bm(\"menu\",r==null?void 0:r.value)]),_=Ld(a,u,s,d,m),w=Qt(C=>{var E;(E=e.onKeydown)==null||E.call(e,C)},C=>{const{currentTarget:E,code:k,target:T}=C;if(E.contains(T),Ne.tab===k&&C.stopImmediatePropagation(),C.preventDefault(),T!==c(a)||!j7.includes(k))return;const M=f().filter(A=>!A.disabled).map(A=>A.ref);L2.includes(k)&&M.reverse(),mm(M)});return{size:r,rovingFocusGroupRootStyle:h,tabIndex:v,dropdownKls:y,role:i,triggerId:l,dropdownListWrapperRef:_,handleKeydown:C=>{w(C),o(C)},onBlur:b,onFocus:p,onMousedown:g}}});function cz(e,t,n,r,s,o){return $(),X(\"ul\",{ref:e.dropdownListWrapperRef,class:D(e.dropdownKls),style:Ue(e.rovingFocusGroupRootStyle),tabindex:-1,role:e.role,\"aria-labelledby\":e.triggerId,onBlur:e.onBlur,onFocus:e.onFocus,onKeydown:Xe(e.handleKeydown,[\"self\"]),onMousedown:Xe(e.onMousedown,[\"self\"])},[ue(e.$slots,\"default\")],46,[\"role\",\"aria-labelledby\",\"onBlur\",\"onFocus\",\"onKeydown\",\"onMousedown\"])}var D2=Oe(lz,[[\"render\",cz],[\"__file\",\"dropdown-menu.vue\"]]);const uz=Qe(Q7,{DropdownItem:P2,DropdownMenu:D2}),dz=Gt(P2),fz=Gt(D2),hz=ee({name:\"ImgEmpty\"}),pz=ee({...hz,setup(e){const t=we(\"empty\"),n=Sn();return(r,s)=>($(),X(\"svg\",{viewBox:\"0 0 79 86\",version:\"1.1\",xmlns:\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\"},[Z(\"defs\",null,[Z(\"linearGradient\",{id:`linearGradient-1-${c(n)}`,x1:\"38.8503086%\",y1:\"0%\",x2:\"61.1496914%\",y2:\"100%\"},[Z(\"stop\",{\"stop-color\":`var(${c(t).cssVarBlockName(\"fill-color-1\")})`,offset:\"0%\"},null,8,[\"stop-color\"]),Z(\"stop\",{\"stop-color\":`var(${c(t).cssVarBlockName(\"fill-color-4\")})`,offset:\"100%\"},null,8,[\"stop-color\"])],8,[\"id\"]),Z(\"linearGradient\",{id:`linearGradient-2-${c(n)}`,x1:\"0%\",y1:\"9.5%\",x2:\"100%\",y2:\"90.5%\"},[Z(\"stop\",{\"stop-color\":`var(${c(t).cssVarBlockName(\"fill-color-1\")})`,offset:\"0%\"},null,8,[\"stop-color\"]),Z(\"stop\",{\"stop-color\":`var(${c(t).cssVarBlockName(\"fill-color-6\")})`,offset:\"100%\"},null,8,[\"stop-color\"])],8,[\"id\"]),Z(\"rect\",{id:`path-3-${c(n)}`,x:\"0\",y:\"0\",width:\"17\",height:\"36\"},null,8,[\"id\"])]),Z(\"g\",{id:\"Illustrations\",stroke:\"none\",\"stroke-width\":\"1\",fill:\"none\",\"fill-rule\":\"evenodd\"},[Z(\"g\",{id:\"B-type\",transform:\"translate(-1268.000000, -535.000000)\"},[Z(\"g\",{id:\"Group-2\",transform:\"translate(1268.000000, 535.000000)\"},[Z(\"path\",{id:\"Oval-Copy-2\",d:\"M39.5,86 C61.3152476,86 79,83.9106622 79,81.3333333 C79,78.7560045 57.3152476,78 35.5,78 C13.6847524,78 0,78.7560045 0,81.3333333 C0,83.9106622 17.6847524,86 39.5,86 Z\",fill:`var(${c(t).cssVarBlockName(\"fill-color-3\")})`},null,8,[\"fill\"]),Z(\"polygon\",{id:\"Rectangle-Copy-14\",fill:`var(${c(t).cssVarBlockName(\"fill-color-7\")})`,transform:\"translate(27.500000, 51.500000) scale(1, -1) translate(-27.500000, -51.500000) \",points:\"13 58 53 58 42 45 2 45\"},null,8,[\"fill\"]),Z(\"g\",{id:\"Group-Copy\",transform:\"translate(34.500000, 31.500000) scale(-1, 1) rotate(-25.000000) translate(-34.500000, -31.500000) translate(7.000000, 10.000000)\"},[Z(\"polygon\",{id:\"Rectangle-Copy-10\",fill:`var(${c(t).cssVarBlockName(\"fill-color-7\")})`,transform:\"translate(11.500000, 5.000000) scale(1, -1) translate(-11.500000, -5.000000) \",points:\"2.84078316e-14 3 18 3 23 7 5 7\"},null,8,[\"fill\"]),Z(\"polygon\",{id:\"Rectangle-Copy-11\",fill:`var(${c(t).cssVarBlockName(\"fill-color-5\")})`,points:\"-3.69149156e-15 7 38 7 38 43 -3.69149156e-15 43\"},null,8,[\"fill\"]),Z(\"rect\",{id:\"Rectangle-Copy-12\",fill:`url(#linearGradient-1-${c(n)})`,transform:\"translate(46.500000, 25.000000) scale(-1, 1) translate(-46.500000, -25.000000) \",x:\"38\",y:\"7\",width:\"17\",height:\"36\"},null,8,[\"fill\"]),Z(\"polygon\",{id:\"Rectangle-Copy-13\",fill:`var(${c(t).cssVarBlockName(\"fill-color-2\")})`,transform:\"translate(39.500000, 3.500000) scale(-1, 1) translate(-39.500000, -3.500000) \",points:\"24 7 41 7 55 -3.63806207e-12 38 -3.63806207e-12\"},null,8,[\"fill\"])]),Z(\"rect\",{id:\"Rectangle-Copy-15\",fill:`url(#linearGradient-2-${c(n)})`,x:\"13\",y:\"45\",width:\"40\",height:\"36\"},null,8,[\"fill\"]),Z(\"g\",{id:\"Rectangle-Copy-17\",transform:\"translate(53.000000, 45.000000)\"},[Z(\"use\",{id:\"Mask\",fill:`var(${c(t).cssVarBlockName(\"fill-color-8\")})`,transform:\"translate(8.500000, 18.000000) scale(-1, 1) translate(-8.500000, -18.000000) \",\"xlink:href\":`#path-3-${c(n)}`},null,8,[\"fill\",\"xlink:href\"]),Z(\"polygon\",{id:\"Rectangle-Copy\",fill:`var(${c(t).cssVarBlockName(\"fill-color-9\")})`,mask:`url(#mask-4-${c(n)})`,transform:\"translate(12.000000, 9.000000) scale(-1, 1) translate(-12.000000, -9.000000) \",points:\"7 0 24 0 20 18 7 16.5\"},null,8,[\"fill\",\"mask\"])]),Z(\"polygon\",{id:\"Rectangle-Copy-18\",fill:`var(${c(t).cssVarBlockName(\"fill-color-2\")})`,transform:\"translate(66.000000, 51.500000) scale(-1, 1) translate(-66.000000, -51.500000) \",points:\"62 45 79 45 70 58 53 58\"},null,8,[\"fill\"])])])])]))}});var vz=Oe(pz,[[\"__file\",\"img-empty.vue\"]]);const mz=xe({image:{type:String,default:\"\"},imageSize:Number,description:{type:String,default:\"\"}}),gz=ee({name:\"ElEmpty\"}),_z=ee({...gz,props:mz,setup(e){const t=e,{t:n}=yt(),r=we(\"empty\"),s=O(()=>t.description||n(\"el.table.emptyText\")),o=O(()=>({width:en(t.imageSize)}));return(a,i)=>($(),X(\"div\",{class:D(c(r).b())},[Z(\"div\",{class:D(c(r).e(\"image\")),style:Ue(c(o))},[a.image?($(),X(\"img\",{key:0,src:a.image,ondragstart:\"return false\"},null,8,[\"src\"])):ue(a.$slots,\"image\",{key:1},()=>[H(vz)])],6),Z(\"div\",{class:D(c(r).e(\"description\"))},[a.$slots.description?ue(a.$slots,\"description\",{key:0}):($(),X(\"p\",{key:1},Ee(c(s)),1))],2),a.$slots.default?($(),X(\"div\",{key:0,class:D(c(r).e(\"bottom\"))},[ue(a.$slots,\"default\")],2)):de(\"v-if\",!0)],2))}});var bz=Oe(_z,[[\"__file\",\"empty.vue\"]]);const B2=Qe(bz),yz=xe({size:{type:String,values:is},disabled:Boolean}),wz=xe({...yz,model:Object,rules:{type:ie(Object)},labelPosition:{type:String,values:[\"left\",\"right\",\"top\"],default:\"right\"},requireAsteriskPosition:{type:String,values:[\"left\",\"right\"],default:\"left\"},labelWidth:{type:[String,Number],default:\"\"},labelSuffix:{type:String,default:\"\"},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean]}}),Sz={validate:(e,t,n)=>(ke(e)||ze(e))&&Vt(t)&&ze(n)};function Cz(){const e=W([]),t=O(()=>{if(!e.value.length)return\"0\";const o=Math.max(...e.value);return o?`${o}px`:\"\"});function n(o){const a=e.value.indexOf(o);return a===-1&&t.value,a}function r(o,a){if(o&&a){const i=n(a);e.value.splice(i,1,o)}else o&&e.value.push(o)}function s(o){const a=n(o);a>-1&&e.value.splice(a,1)}return{autoLabelWidth:t,registerLabelWidth:r,deregisterLabelWidth:s}}const kc=(e,t)=>{const n=Pn(t);return n.length>0?e.filter(r=>r.prop&&n.includes(r.prop)):e},kz=\"ElForm\",Ez=ee({name:kz}),Tz=ee({...Ez,props:wz,emits:Sz,setup(e,{expose:t,emit:n}){const r=e,s=[],o=sn(),a=we(\"form\"),i=O(()=>{const{labelPosition:_,inline:w}=r;return[a.b(),a.m(o.value||\"default\"),{[a.m(`label-${_}`)]:_,[a.m(\"inline\")]:w}]}),l=_=>s.find(w=>w.prop===_),u=_=>{s.push(_)},f=_=>{_.prop&&s.splice(s.indexOf(_),1)},d=(_=[])=>{r.model&&kc(s,_).forEach(w=>w.resetField())},h=(_=[])=>{kc(s,_).forEach(w=>w.clearValidate())},v=O(()=>!!r.model),b=_=>{if(s.length===0)return[];const w=kc(s,_);return w.length?w:[]},p=async _=>m(void 0,_),g=async(_=[])=>{if(!v.value)return!1;const w=b(_);if(w.length===0)return!0;let S={};for(const C of w)try{await C.validate(\"\")}catch(E){S={...S,...E}}return Object.keys(S).length===0?!0:Promise.reject(S)},m=async(_=[],w)=>{const S=!Ke(w);try{const C=await g(_);return C===!0&&await(w==null?void 0:w(C)),C}catch(C){if(C instanceof Error)throw C;const E=C;return r.scrollToError&&y(Object.keys(E)[0]),await(w==null?void 0:w(!1,E)),S&&Promise.reject(E)}},y=_=>{var w;const S=kc(s,_)[0];S&&((w=S.$el)==null||w.scrollIntoView(r.scrollIntoViewOptions))};return ye(()=>r.rules,()=>{r.validateOnRuleChange&&p().catch(_=>void 0)},{deep:!0}),pt(oi,St({...hn(r),emit:n,resetFields:d,clearValidate:h,validateField:m,getField:l,addField:u,removeField:f,...Cz()})),t({validate:p,validateField:m,resetFields:d,clearValidate:h,scrollToField:y,fields:s}),(_,w)=>($(),X(\"form\",{class:D(c(i))},[ue(_.$slots,\"default\")],2))}});var Rz=Oe(Tz,[[\"__file\",\"form.vue\"]]);function Io(){return Io=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Io.apply(this,arguments)}function xz(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,yl(e,t)}function qh(e){return qh=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(n){return n.__proto__||Object.getPrototypeOf(n)},qh(e)}function yl(e,t){return yl=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(r,s){return r.__proto__=s,r},yl(e,t)}function Oz(){if(typeof Reflect>\"u\"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy==\"function\")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function eu(e,t,n){return Oz()?eu=Reflect.construct.bind():eu=function(s,o,a){var i=[null];i.push.apply(i,o);var l=Function.bind.apply(s,i),u=new l;return a&&yl(u,a.prototype),u},eu.apply(null,arguments)}function Mz(e){return Function.toString.call(e).indexOf(\"[native code]\")!==-1}function Yh(e){var t=typeof Map==\"function\"?new Map:void 0;return Yh=function(r){if(r===null||!Mz(r))return r;if(typeof r!=\"function\")throw new TypeError(\"Super expression must either be null or a function\");if(typeof t<\"u\"){if(t.has(r))return t.get(r);t.set(r,s)}function s(){return eu(r,arguments,qh(this).constructor)}return s.prototype=Object.create(r.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),yl(s,r)},Yh(e)}var Az=/%[sdj%]/g,$z=function(){};function Gh(e){if(!e||!e.length)return null;var t={};return e.forEach(function(n){var r=n.field;t[r]=t[r]||[],t[r].push(n)}),t}function ir(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var s=0,o=n.length;if(typeof e==\"function\")return e.apply(null,n);if(typeof e==\"string\"){var a=e.replace(Az,function(i){if(i===\"%%\")return\"%\";if(s>=o)return i;switch(i){case\"%s\":return String(n[s++]);case\"%d\":return Number(n[s++]);case\"%j\":try{return JSON.stringify(n[s++])}catch{return\"[Circular]\"}break;default:return i}});return a}return e}function Lz(e){return e===\"string\"||e===\"url\"||e===\"hex\"||e===\"email\"||e===\"date\"||e===\"pattern\"}function bn(e,t){return!!(e==null||t===\"array\"&&Array.isArray(e)&&!e.length||Lz(t)&&typeof e==\"string\"&&!e)}function Iz(e,t,n){var r=[],s=0,o=e.length;function a(i){r.push.apply(r,i||[]),s++,s===o&&n(r)}e.forEach(function(i){t(i,a)})}function _b(e,t,n){var r=0,s=e.length;function o(a){if(a&&a.length){n(a);return}var i=r;r=r+1,i<s?t(e[i],o):n([])}o([])}function Pz(e){var t=[];return Object.keys(e).forEach(function(n){t.push.apply(t,e[n]||[])}),t}var bb=function(e){xz(t,e);function t(n,r){var s;return s=e.call(this,\"Async Validation Error\")||this,s.errors=n,s.fields=r,s}return t}(Yh(Error));function Dz(e,t,n,r,s){if(t.first){var o=new Promise(function(h,v){var b=function(m){return r(m),m.length?v(new bb(m,Gh(m))):h(s)},p=Pz(e);_b(p,n,b)});return o.catch(function(h){return h}),o}var a=t.firstFields===!0?Object.keys(e):t.firstFields||[],i=Object.keys(e),l=i.length,u=0,f=[],d=new Promise(function(h,v){var b=function(g){if(f.push.apply(f,g),u++,u===l)return r(f),f.length?v(new bb(f,Gh(f))):h(s)};i.length||(r(f),h(s)),i.forEach(function(p){var g=e[p];a.indexOf(p)!==-1?_b(g,n,b):Iz(g,n,b)})});return d.catch(function(h){return h}),d}function Bz(e){return!!(e&&e.message!==void 0)}function Nz(e,t){for(var n=e,r=0;r<t.length;r++){if(n==null)return n;n=n[t[r]]}return n}function yb(e,t){return function(n){var r;return e.fullFields?r=Nz(t,e.fullFields):r=t[n.field||e.fullField],Bz(n)?(n.field=n.field||e.fullField,n.fieldValue=r,n):{message:typeof n==\"function\"?n():n,fieldValue:r,field:n.field||e.fullField}}}function wb(e,t){if(t){for(var n in t)if(t.hasOwnProperty(n)){var r=t[n];typeof r==\"object\"&&typeof e[n]==\"object\"?e[n]=Io({},e[n],r):e[n]=r}}return e}var N2=function(t,n,r,s,o,a){t.required&&(!r.hasOwnProperty(t.field)||bn(n,a||t.type))&&s.push(ir(o.messages.required,t.fullField))},Fz=function(t,n,r,s,o){(/^\\s+$/.test(n)||n===\"\")&&s.push(ir(o.messages.whitespace,t.fullField))},Ec,Hz=function(){if(Ec)return Ec;var e=\"[a-fA-F\\\\d:]\",t=function(w){return w&&w.includeBoundaries?\"(?:(?<=\\\\s|^)(?=\"+e+\")|(?<=\"+e+\")(?=\\\\s|$))\":\"\"},n=\"(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}\",r=\"[a-fA-F\\\\d]{1,4}\",s=(`\n(?:\n(?:`+r+\":){7}(?:\"+r+`|:)|                                    // 1:2:3:4:5:6:7::  1:2:3:4:5:6:7:8\n(?:`+r+\":){6}(?:\"+n+\"|:\"+r+`|:)|                             // 1:2:3:4:5:6::    1:2:3:4:5:6::8   1:2:3:4:5:6::8  1:2:3:4:5:6::1.2.3.4\n(?:`+r+\":){5}(?::\"+n+\"|(?::\"+r+`){1,2}|:)|                   // 1:2:3:4:5::      1:2:3:4:5::7:8   1:2:3:4:5::8    1:2:3:4:5::7:1.2.3.4\n(?:`+r+\":){4}(?:(?::\"+r+\"){0,1}:\"+n+\"|(?::\"+r+`){1,3}|:)| // 1:2:3:4::        1:2:3:4::6:7:8   1:2:3:4::8      1:2:3:4::6:7:1.2.3.4\n(?:`+r+\":){3}(?:(?::\"+r+\"){0,2}:\"+n+\"|(?::\"+r+`){1,4}|:)| // 1:2:3::          1:2:3::5:6:7:8   1:2:3::8        1:2:3::5:6:7:1.2.3.4\n(?:`+r+\":){2}(?:(?::\"+r+\"){0,3}:\"+n+\"|(?::\"+r+`){1,5}|:)| // 1:2::            1:2::4:5:6:7:8   1:2::8          1:2::4:5:6:7:1.2.3.4\n(?:`+r+\":){1}(?:(?::\"+r+\"){0,4}:\"+n+\"|(?::\"+r+`){1,6}|:)| // 1::              1::3:4:5:6:7:8   1::8            1::3:4:5:6:7:1.2.3.4\n(?::(?:(?::`+r+\"){0,5}:\"+n+\"|(?::\"+r+`){1,7}|:))             // ::2:3:4:5:6:7:8  ::2:3:4:5:6:7:8  ::8             ::1.2.3.4\n)(?:%[0-9a-zA-Z]{1,})?                                             // %eth0            %1\n`).replace(/\\s*\\/\\/.*$/gm,\"\").replace(/\\n/g,\"\").trim(),o=new RegExp(\"(?:^\"+n+\"$)|(?:^\"+s+\"$)\"),a=new RegExp(\"^\"+n+\"$\"),i=new RegExp(\"^\"+s+\"$\"),l=function(w){return w&&w.exact?o:new RegExp(\"(?:\"+t(w)+n+t(w)+\")|(?:\"+t(w)+s+t(w)+\")\",\"g\")};l.v4=function(_){return _&&_.exact?a:new RegExp(\"\"+t(_)+n+t(_),\"g\")},l.v6=function(_){return _&&_.exact?i:new RegExp(\"\"+t(_)+s+t(_),\"g\")};var u=\"(?:(?:[a-z]+:)?//)\",f=\"(?:\\\\S+(?::\\\\S*)?@)?\",d=l.v4().source,h=l.v6().source,v=\"(?:(?:[a-z\\\\u00a1-\\\\uffff0-9][-_]*)*[a-z\\\\u00a1-\\\\uffff0-9]+)\",b=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*\",p=\"(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))\",g=\"(?::\\\\d{2,5})?\",m='(?:[/?#][^\\\\s\"]*)?',y=\"(?:\"+u+\"|www\\\\.)\"+f+\"(?:localhost|\"+d+\"|\"+h+\"|\"+v+b+p+\")\"+g+m;return Ec=new RegExp(\"(?:^\"+y+\"$)\",\"i\"),Ec},Sb={email:/^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},La={integer:function(t){return La.number(t)&&parseInt(t,10)===t},float:function(t){return La.number(t)&&!La.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime==\"function\"&&typeof t.getMonth==\"function\"&&typeof t.getYear==\"function\"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t==\"number\"},object:function(t){return typeof t==\"object\"&&!La.array(t)},method:function(t){return typeof t==\"function\"},email:function(t){return typeof t==\"string\"&&t.length<=320&&!!t.match(Sb.email)},url:function(t){return typeof t==\"string\"&&t.length<=2048&&!!t.match(Hz())},hex:function(t){return typeof t==\"string\"&&!!t.match(Sb.hex)}},Vz=function(t,n,r,s,o){if(t.required&&n===void 0){N2(t,n,r,s,o);return}var a=[\"integer\",\"float\",\"array\",\"regexp\",\"object\",\"method\",\"email\",\"number\",\"date\",\"url\",\"hex\"],i=t.type;a.indexOf(i)>-1?La[i](n)||s.push(ir(o.messages.types[i],t.fullField,t.type)):i&&typeof n!==t.type&&s.push(ir(o.messages.types[i],t.fullField,t.type))},zz=function(t,n,r,s,o){var a=typeof t.len==\"number\",i=typeof t.min==\"number\",l=typeof t.max==\"number\",u=/[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,f=n,d=null,h=typeof n==\"number\",v=typeof n==\"string\",b=Array.isArray(n);if(h?d=\"number\":v?d=\"string\":b&&(d=\"array\"),!d)return!1;b&&(f=n.length),v&&(f=n.replace(u,\"_\").length),a?f!==t.len&&s.push(ir(o.messages[d].len,t.fullField,t.len)):i&&!l&&f<t.min?s.push(ir(o.messages[d].min,t.fullField,t.min)):l&&!i&&f>t.max?s.push(ir(o.messages[d].max,t.fullField,t.max)):i&&l&&(f<t.min||f>t.max)&&s.push(ir(o.messages[d].range,t.fullField,t.min,t.max))},di=\"enum\",Wz=function(t,n,r,s,o){t[di]=Array.isArray(t[di])?t[di]:[],t[di].indexOf(n)===-1&&s.push(ir(o.messages[di],t.fullField,t[di].join(\", \")))},Kz=function(t,n,r,s,o){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(n)||s.push(ir(o.messages.pattern.mismatch,t.fullField,n,t.pattern));else if(typeof t.pattern==\"string\"){var a=new RegExp(t.pattern);a.test(n)||s.push(ir(o.messages.pattern.mismatch,t.fullField,n,t.pattern))}}},zt={required:N2,whitespace:Fz,type:Vz,range:zz,enum:Wz,pattern:Kz},jz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n,\"string\")&&!t.required)return r();zt.required(t,n,s,a,o,\"string\"),bn(n,\"string\")||(zt.type(t,n,s,a,o),zt.range(t,n,s,a,o),zt.pattern(t,n,s,a,o),t.whitespace===!0&&zt.whitespace(t,n,s,a,o))}r(a)},Uz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&zt.type(t,n,s,a,o)}r(a)},qz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(n===\"\"&&(n=void 0),bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&(zt.type(t,n,s,a,o),zt.range(t,n,s,a,o))}r(a)},Yz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&zt.type(t,n,s,a,o)}r(a)},Gz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),bn(n)||zt.type(t,n,s,a,o)}r(a)},Xz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&(zt.type(t,n,s,a,o),zt.range(t,n,s,a,o))}r(a)},Jz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&(zt.type(t,n,s,a,o),zt.range(t,n,s,a,o))}r(a)},Zz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(n==null&&!t.required)return r();zt.required(t,n,s,a,o,\"array\"),n!=null&&(zt.type(t,n,s,a,o),zt.range(t,n,s,a,o))}r(a)},Qz=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&zt.type(t,n,s,a,o)}r(a)},eW=\"enum\",tW=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o),n!==void 0&&zt[eW](t,n,s,a,o)}r(a)},nW=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n,\"string\")&&!t.required)return r();zt.required(t,n,s,a,o),bn(n,\"string\")||zt.pattern(t,n,s,a,o)}r(a)},rW=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n,\"date\")&&!t.required)return r();if(zt.required(t,n,s,a,o),!bn(n,\"date\")){var l;n instanceof Date?l=n:l=new Date(n),zt.type(t,l,s,a,o),l&&zt.range(t,l.getTime(),s,a,o)}}r(a)},sW=function(t,n,r,s,o){var a=[],i=Array.isArray(n)?\"array\":typeof n;zt.required(t,n,s,a,o,i),r(a)},$f=function(t,n,r,s,o){var a=t.type,i=[],l=t.required||!t.required&&s.hasOwnProperty(t.field);if(l){if(bn(n,a)&&!t.required)return r();zt.required(t,n,s,i,o,a),bn(n,a)||zt.type(t,n,s,i,o)}r(i)},oW=function(t,n,r,s,o){var a=[],i=t.required||!t.required&&s.hasOwnProperty(t.field);if(i){if(bn(n)&&!t.required)return r();zt.required(t,n,s,a,o)}r(a)},Ja={string:jz,method:Uz,number:qz,boolean:Yz,regexp:Gz,integer:Xz,float:Jz,array:Zz,object:Qz,enum:tW,pattern:nW,date:rW,url:$f,hex:$f,email:$f,required:sW,any:oW};function Xh(){return{default:\"Validation error on field %s\",required:\"%s is required\",enum:\"%s must be one of %s\",whitespace:\"%s cannot be empty\",date:{format:\"%s date %s is invalid for format %s\",parse:\"%s date could not be parsed, %s is invalid \",invalid:\"%s date %s is invalid\"},types:{string:\"%s is not a %s\",method:\"%s is not a %s (function)\",array:\"%s is not an %s\",object:\"%s is not an %s\",number:\"%s is not a %s\",date:\"%s is not a %s\",boolean:\"%s is not a %s\",integer:\"%s is not an %s\",float:\"%s is not a %s\",regexp:\"%s is not a valid %s\",email:\"%s is not a valid %s\",url:\"%s is not a valid %s\",hex:\"%s is not a valid %s\"},string:{len:\"%s must be exactly %s characters\",min:\"%s must be at least %s characters\",max:\"%s cannot be longer than %s characters\",range:\"%s must be between %s and %s characters\"},number:{len:\"%s must equal %s\",min:\"%s cannot be less than %s\",max:\"%s cannot be greater than %s\",range:\"%s must be between %s and %s\"},array:{len:\"%s must be exactly %s in length\",min:\"%s cannot be less than %s in length\",max:\"%s cannot be greater than %s in length\",range:\"%s must be between %s and %s in length\"},pattern:{mismatch:\"%s value %s does not match pattern %s\"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var Jh=Xh(),Xl=function(){function e(n){this.rules=null,this._messages=Jh,this.define(n)}var t=e.prototype;return t.define=function(r){var s=this;if(!r)throw new Error(\"Cannot configure a schema with no rules\");if(typeof r!=\"object\"||Array.isArray(r))throw new Error(\"Rules must be an object\");this.rules={},Object.keys(r).forEach(function(o){var a=r[o];s.rules[o]=Array.isArray(a)?a:[a]})},t.messages=function(r){return r&&(this._messages=wb(Xh(),r)),this._messages},t.validate=function(r,s,o){var a=this;s===void 0&&(s={}),o===void 0&&(o=function(){});var i=r,l=s,u=o;if(typeof l==\"function\"&&(u=l,l={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,i),Promise.resolve(i);function f(p){var g=[],m={};function y(w){if(Array.isArray(w)){var S;g=(S=g).concat.apply(S,w)}else g.push(w)}for(var _=0;_<p.length;_++)y(p[_]);g.length?(m=Gh(g),u(g,m)):u(null,i)}if(l.messages){var d=this.messages();d===Jh&&(d=Xh()),wb(d,l.messages),l.messages=d}else l.messages=this.messages();var h={},v=l.keys||Object.keys(this.rules);v.forEach(function(p){var g=a.rules[p],m=i[p];g.forEach(function(y){var _=y;typeof _.transform==\"function\"&&(i===r&&(i=Io({},i)),m=i[p]=_.transform(m)),typeof _==\"function\"?_={validator:_}:_=Io({},_),_.validator=a.getValidationMethod(_),_.validator&&(_.field=p,_.fullField=_.fullField||p,_.type=a.getType(_),h[p]=h[p]||[],h[p].push({rule:_,value:m,source:i,field:p}))})});var b={};return Dz(h,l,function(p,g){var m=p.rule,y=(m.type===\"object\"||m.type===\"array\")&&(typeof m.fields==\"object\"||typeof m.defaultField==\"object\");y=y&&(m.required||!m.required&&p.value),m.field=p.field;function _(C,E){return Io({},E,{fullField:m.fullField+\".\"+C,fullFields:m.fullFields?[].concat(m.fullFields,[C]):[C]})}function w(C){C===void 0&&(C=[]);var E=Array.isArray(C)?C:[C];!l.suppressWarning&&E.length&&e.warning(\"async-validator:\",E),E.length&&m.message!==void 0&&(E=[].concat(m.message));var k=E.map(yb(m,i));if(l.first&&k.length)return b[m.field]=1,g(k);if(!y)g(k);else{if(m.required&&!p.value)return m.message!==void 0?k=[].concat(m.message).map(yb(m,i)):l.error&&(k=[l.error(m,ir(l.messages.required,m.field))]),g(k);var T={};m.defaultField&&Object.keys(p.value).map(function(A){T[A]=m.defaultField}),T=Io({},T,p.rule.fields);var x={};Object.keys(T).forEach(function(A){var P=T[A],G=Array.isArray(P)?P:[P];x[A]=G.map(_.bind(null,A))});var M=new e(x);M.messages(l.messages),p.rule.options&&(p.rule.options.messages=l.messages,p.rule.options.error=l.error),M.validate(p.value,p.rule.options||l,function(A){var P=[];k&&k.length&&P.push.apply(P,k),A&&A.length&&P.push.apply(P,A),g(P.length?P:null)})}}var S;if(m.asyncValidator)S=m.asyncValidator(m,p.value,w,p.source,l);else if(m.validator){try{S=m.validator(m,p.value,w,p.source,l)}catch(C){console.error==null||console.error(C),l.suppressValidatorError||setTimeout(function(){throw C},0),w(C.message)}S===!0?w():S===!1?w(typeof m.message==\"function\"?m.message(m.fullField||m.field):m.message||(m.fullField||m.field)+\" fails\"):S instanceof Array?w(S):S instanceof Error&&w(S.message)}S&&S.then&&S.then(function(){return w()},function(C){return w(C)})},function(p){f(p)},i)},t.getType=function(r){if(r.type===void 0&&r.pattern instanceof RegExp&&(r.type=\"pattern\"),typeof r.validator!=\"function\"&&r.type&&!Ja.hasOwnProperty(r.type))throw new Error(ir(\"Unknown rule type %s\",r.type));return r.type||\"string\"},t.getValidationMethod=function(r){if(typeof r.validator==\"function\")return r.validator;var s=Object.keys(r),o=s.indexOf(\"message\");return o!==-1&&s.splice(o,1),s.length===1&&s[0]===\"required\"?Ja.required:Ja[this.getType(r)]||void 0},e}();Xl.register=function(t,n){if(typeof n!=\"function\")throw new Error(\"Cannot register a validator by type, validator is not a function\");Ja[t]=n};Xl.warning=$z;Xl.messages=Jh;Xl.validators=Ja;const iW=[\"\",\"error\",\"validating\",\"success\"],aW=xe({label:String,labelWidth:{type:[String,Number],default:\"\"},labelPosition:{type:String,values:[\"left\",\"right\",\"top\",\"\"],default:\"\"},prop:{type:ie([String,Array])},required:{type:Boolean,default:void 0},rules:{type:ie([Object,Array])},error:String,validateStatus:{type:String,values:iW},for:String,inlineMessage:{type:[String,Boolean],default:\"\"},showMessage:{type:Boolean,default:!0},size:{type:String,values:is}}),Cb=\"ElLabelWrap\";var lW=ee({name:Cb,props:{isAutoWidth:Boolean,updateAll:Boolean},setup(e,{slots:t}){const n=Fe(oi,void 0),r=Fe(ns);r||dn(Cb,\"usage: <el-form-item><label-wrap /></el-form-item>\");const s=we(\"form\"),o=W(),a=W(0),i=()=>{var f;if((f=o.value)!=null&&f.firstElementChild){const d=window.getComputedStyle(o.value.firstElementChild).width;return Math.ceil(Number.parseFloat(d))}else return 0},l=(f=\"update\")=>{je(()=>{t.default&&e.isAutoWidth&&(f===\"update\"?a.value=i():f===\"remove\"&&(n==null||n.deregisterLabelWidth(a.value)))})},u=()=>l(\"update\");return it(()=>{u()}),Pt(()=>{l(\"remove\")}),os(()=>u()),ye(a,(f,d)=>{e.updateAll&&(n==null||n.registerLabelWidth(f,d))}),jt(O(()=>{var f,d;return(d=(f=o.value)==null?void 0:f.firstElementChild)!=null?d:null}),u),()=>{var f,d;if(!t)return null;const{isAutoWidth:h}=e;if(h){const v=n==null?void 0:n.autoLabelWidth,b=r==null?void 0:r.hasLabel,p={};if(b&&v&&v!==\"auto\"){const g=Math.max(0,Number.parseInt(v,10)-a.value),y=(r.labelPosition||n.labelPosition)===\"left\"?\"marginRight\":\"marginLeft\";g&&(p[y]=`${g}px`)}return H(\"div\",{ref:o,class:[s.be(\"item\",\"label-wrap\")],style:p},[(f=t.default)==null?void 0:f.call(t)])}else return H(We,{ref:o},[(d=t.default)==null?void 0:d.call(t)])}}});const cW=ee({name:\"ElFormItem\"}),uW=ee({...cW,props:aW,setup(e,{expose:t}){const n=e,r=an(),s=Fe(oi,void 0),o=Fe(ns,void 0),a=sn(void 0,{formItem:!1}),i=we(\"form-item\"),l=Sn().value,u=W([]),f=W(\"\"),d=JI(f,100),h=W(\"\"),v=W();let b,p=!1;const g=O(()=>n.labelPosition||(s==null?void 0:s.labelPosition)),m=O(()=>{if(g.value===\"top\")return{};const z=en(n.labelWidth||(s==null?void 0:s.labelWidth)||\"\");return z?{width:z}:{}}),y=O(()=>{if(g.value===\"top\"||s!=null&&s.inline)return{};if(!n.label&&!n.labelWidth&&x)return{};const z=en(n.labelWidth||(s==null?void 0:s.labelWidth)||\"\");return!n.label&&!r.label?{marginLeft:z}:{}}),_=O(()=>[i.b(),i.m(a.value),i.is(\"error\",f.value===\"error\"),i.is(\"validating\",f.value===\"validating\"),i.is(\"success\",f.value===\"success\"),i.is(\"required\",V.value||n.required),i.is(\"no-asterisk\",s==null?void 0:s.hideRequiredAsterisk),(s==null?void 0:s.requireAsteriskPosition)===\"right\"?\"asterisk-right\":\"asterisk-left\",{[i.m(\"feedback\")]:s==null?void 0:s.statusIcon,[i.m(`label-${g.value}`)]:g.value}]),w=O(()=>Vt(n.inlineMessage)?n.inlineMessage:(s==null?void 0:s.inlineMessage)||!1),S=O(()=>[i.e(\"error\"),{[i.em(\"error\",\"inline\")]:w.value}]),C=O(()=>n.prop?ze(n.prop)?n.prop:n.prop.join(\".\"):\"\"),E=O(()=>!!(n.label||r.label)),k=O(()=>n.for||(u.value.length===1?u.value[0]:void 0)),T=O(()=>!k.value&&E.value),x=!!o,M=O(()=>{const z=s==null?void 0:s.model;if(!(!z||!n.prop))return Fc(z,n.prop).value}),A=O(()=>{const{required:z}=n,te=[];n.rules&&te.push(...Pn(n.rules));const oe=s==null?void 0:s.rules;if(oe&&n.prop){const he=Fc(oe,n.prop).value;he&&te.push(...Pn(he))}if(z!==void 0){const he=te.map((Y,L)=>[Y,L]).filter(([Y])=>Object.keys(Y).includes(\"required\"));if(he.length>0)for(const[Y,L]of he)Y.required!==z&&(te[L]={...Y,required:z});else te.push({required:z})}return te}),P=O(()=>A.value.length>0),G=z=>A.value.filter(oe=>!oe.trigger||!z?!0:ke(oe.trigger)?oe.trigger.includes(z):oe.trigger===z).map(({trigger:oe,...he})=>he),V=O(()=>A.value.some(z=>z.required)),I=O(()=>{var z;return d.value===\"error\"&&n.showMessage&&((z=s==null?void 0:s.showMessage)!=null?z:!0)}),j=O(()=>`${n.label||\"\"}${(s==null?void 0:s.labelSuffix)||\"\"}`),F=z=>{f.value=z},R=z=>{var te,oe;const{errors:he,fields:Y}=z;(!he||!Y)&&console.error(z),F(\"error\"),h.value=he?(oe=(te=he==null?void 0:he[0])==null?void 0:te.message)!=null?oe:`${n.prop} is required`:\"\",s==null||s.emit(\"validate\",n.prop,!1,h.value)},B=()=>{F(\"success\"),s==null||s.emit(\"validate\",n.prop,!0,\"\")},N=async z=>{const te=C.value;return new Xl({[te]:z}).validate({[te]:M.value},{firstFields:!0}).then(()=>(B(),!0)).catch(he=>(R(he),Promise.reject(he)))},U=async(z,te)=>{if(p||!n.prop)return!1;const oe=Ke(te);if(!P.value)return te==null||te(!1),!1;const he=G(z);return he.length===0?(te==null||te(!0),!0):(F(\"validating\"),N(he).then(()=>(te==null||te(!0),!0)).catch(Y=>{const{fields:L}=Y;return te==null||te(!1,L),oe?!1:Promise.reject(L)}))},J=()=>{F(\"\"),h.value=\"\",p=!1},re=async()=>{const z=s==null?void 0:s.model;if(!z||!n.prop)return;const te=Fc(z,n.prop);p=!0,te.value=U0(b),await je(),J(),p=!1},le=z=>{u.value.includes(z)||u.value.push(z)},pe=z=>{u.value=u.value.filter(te=>te!==z)};ye(()=>n.error,z=>{h.value=z||\"\",F(z?\"error\":\"\")},{immediate:!0}),ye(()=>n.validateStatus,z=>F(z||\"\"));const K=St({...hn(n),$el:v,size:a,validateState:f,labelId:l,inputIds:u,isGroup:T,hasLabel:E,fieldValue:M,addInputId:le,removeInputId:pe,resetField:re,clearValidate:J,validate:U});return pt(ns,K),it(()=>{n.prop&&(s==null||s.addField(K),b=U0(M.value))}),Pt(()=>{s==null||s.removeField(K)}),t({size:a,validateMessage:h,validateState:f,validate:U,clearValidate:J,resetField:re}),(z,te)=>{var oe;return $(),X(\"div\",{ref_key:\"formItemRef\",ref:v,class:D(c(_)),role:c(T)?\"group\":void 0,\"aria-labelledby\":c(T)?c(l):void 0},[H(c(lW),{\"is-auto-width\":c(m).width===\"auto\",\"update-all\":((oe=c(s))==null?void 0:oe.labelWidth)===\"auto\"},{default:q(()=>[c(E)?($(),ve(dt(c(k)?\"label\":\"div\"),{key:0,id:c(l),for:c(k),class:D(c(i).e(\"label\")),style:Ue(c(m))},{default:q(()=>[ue(z.$slots,\"label\",{label:c(j)},()=>[Ve(Ee(c(j)),1)])]),_:3},8,[\"id\",\"for\",\"class\",\"style\"])):de(\"v-if\",!0)]),_:3},8,[\"is-auto-width\",\"update-all\"]),Z(\"div\",{class:D(c(i).e(\"content\")),style:Ue(c(y))},[ue(z.$slots,\"default\"),H(z1,{name:`${c(i).namespace.value}-zoom-in-top`},{default:q(()=>[c(I)?ue(z.$slots,\"error\",{key:0,error:h.value},()=>[Z(\"div\",{class:D(c(S))},Ee(h.value),3)]):de(\"v-if\",!0)]),_:3},8,[\"name\"])],6)],10,[\"role\",\"aria-labelledby\"])}}});var F2=Oe(uW,[[\"__file\",\"form-item.vue\"]]);const H2=Qe(Rz,{FormItem:F2}),V2=Gt(F2),dW=xe({urlList:{type:ie(Array),default:()=>Yt([])},zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},hideOnClickModal:Boolean,teleported:Boolean,closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:ie(String)}}),fW={close:()=>!0,switch:e=>Ge(e),rotate:e=>Ge(e)},hW=ee({name:\"ElImageViewer\"}),pW=ee({...hW,props:dW,emits:fW,setup(e,{expose:t,emit:n}){var r;const s=e,o={CONTAIN:{name:\"contain\",icon:Jr(k6)},ORIGINAL:{name:\"original\",icon:Jr(Y6)}},{t:a}=yt(),i=we(\"image-viewer\"),{nextZIndex:l}=da(),u=W(),f=W([]),d=Dp(),h=W(!0),v=W(s.initialIndex),b=Wt(o.CONTAIN),p=W({scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}),g=W((r=s.zIndex)!=null?r:l()),m=O(()=>{const{urlList:U}=s;return U.length<=1}),y=O(()=>v.value===0),_=O(()=>v.value===s.urlList.length-1),w=O(()=>s.urlList[v.value]),S=O(()=>[i.e(\"btn\"),i.e(\"prev\"),i.is(\"disabled\",!s.infinite&&y.value)]),C=O(()=>[i.e(\"btn\"),i.e(\"next\"),i.is(\"disabled\",!s.infinite&&_.value)]),E=O(()=>{const{scale:U,deg:J,offsetX:re,offsetY:le,enableTransition:pe}=p.value;let K=re/U,z=le/U;const te=J*Math.PI/180,oe=Math.cos(te),he=Math.sin(te);K=K*oe+z*he,z=z*oe-re/U*he;const Y={transform:`scale(${U}) rotate(${J}deg) translate(${K}px, ${z}px)`,transition:pe?\"transform .3s\":\"\"};return b.value.name===o.CONTAIN.name&&(Y.maxWidth=Y.maxHeight=\"100%\"),Y});function k(){x(),n(\"close\")}function T(){const U=zo(re=>{switch(re.code){case Ne.esc:s.closeOnPressEscape&&k();break;case Ne.space:V();break;case Ne.left:j();break;case Ne.up:R(\"zoomIn\");break;case Ne.right:F();break;case Ne.down:R(\"zoomOut\");break}}),J=zo(re=>{const le=re.deltaY||re.deltaX;R(le<0?\"zoomIn\":\"zoomOut\",{zoomRate:s.zoomRate,enableTransition:!1})});d.run(()=>{It(document,\"keydown\",U),It(document,\"wheel\",J)})}function x(){d.stop()}function M(){h.value=!1}function A(U){h.value=!1,U.target.alt=a(\"el.image.error\")}function P(U){if(h.value||U.button!==0||!u.value)return;p.value.enableTransition=!1;const{offsetX:J,offsetY:re}=p.value,le=U.pageX,pe=U.pageY,K=zo(te=>{p.value={...p.value,offsetX:J+te.pageX-le,offsetY:re+te.pageY-pe}}),z=It(document,\"mousemove\",K);It(document,\"mouseup\",()=>{z()}),U.preventDefault()}function G(){p.value={scale:1,deg:0,offsetX:0,offsetY:0,enableTransition:!1}}function V(){if(h.value)return;const U=zi(o),J=Object.values(o),re=b.value.name,pe=(J.findIndex(K=>K.name===re)+1)%U.length;b.value=o[U[pe]],G()}function I(U){const J=s.urlList.length;v.value=(U+J)%J}function j(){y.value&&!s.infinite||I(v.value-1)}function F(){_.value&&!s.infinite||I(v.value+1)}function R(U,J={}){if(h.value)return;const{minScale:re,maxScale:le}=s,{zoomRate:pe,rotateDeg:K,enableTransition:z}={zoomRate:s.zoomRate,rotateDeg:90,enableTransition:!0,...J};switch(U){case\"zoomOut\":p.value.scale>re&&(p.value.scale=Number.parseFloat((p.value.scale/pe).toFixed(3)));break;case\"zoomIn\":p.value.scale<le&&(p.value.scale=Number.parseFloat((p.value.scale*pe).toFixed(3)));break;case\"clockwise\":p.value.deg+=K,n(\"rotate\",p.value.deg);break;case\"anticlockwise\":p.value.deg-=K,n(\"rotate\",p.value.deg);break}p.value.enableTransition=z}function B(U){var J;((J=U.detail)==null?void 0:J.focusReason)===\"pointer\"&&U.preventDefault()}function N(){s.closeOnPressEscape&&k()}return ye(w,()=>{je(()=>{const U=f.value[0];U!=null&&U.complete||(h.value=!0)})}),ye(v,U=>{G(),n(\"switch\",U)}),it(()=>{T()}),t({setActiveItem:I}),(U,J)=>($(),ve(c(pa),{to:\"body\",disabled:!U.teleported},{default:q(()=>[H(_n,{name:\"viewer-fade\",appear:\"\"},{default:q(()=>[Z(\"div\",{ref_key:\"wrapper\",ref:u,tabindex:-1,class:D(c(i).e(\"wrapper\")),style:Ue({zIndex:g.value})},[H(c(ha),{loop:\"\",trapped:\"\",\"focus-trap-el\":u.value,\"focus-start-el\":\"container\",onFocusoutPrevented:B,onReleaseRequested:N},{default:q(()=>[Z(\"div\",{class:D(c(i).e(\"mask\")),onClick:Xe(re=>U.hideOnClickModal&&k(),[\"self\"])},null,10,[\"onClick\"]),de(\" CLOSE \"),Z(\"span\",{class:D([c(i).e(\"btn\"),c(i).e(\"close\")]),onClick:k},[H(c(He),null,{default:q(()=>[H(c(Dr))]),_:1})],2),de(\" ARROW \"),c(m)?de(\"v-if\",!0):($(),X(We,{key:0},[Z(\"span\",{class:D(c(S)),onClick:j},[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1})],2),Z(\"span\",{class:D(c(C)),onClick:F},[H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})],2)],64)),de(\" ACTIONS \"),Z(\"div\",{class:D([c(i).e(\"btn\"),c(i).e(\"actions\")])},[Z(\"div\",{class:D(c(i).e(\"actions__inner\"))},[H(c(He),{onClick:re=>R(\"zoomOut\")},{default:q(()=>[H(c(mD))]),_:1},8,[\"onClick\"]),H(c(He),{onClick:re=>R(\"zoomIn\")},{default:q(()=>[H(c(YS))]),_:1},8,[\"onClick\"]),Z(\"i\",{class:D(c(i).e(\"actions__divider\"))},null,2),H(c(He),{onClick:V},{default:q(()=>[($(),ve(dt(c(b).icon)))]),_:1}),Z(\"i\",{class:D(c(i).e(\"actions__divider\"))},null,2),H(c(He),{onClick:re=>R(\"anticlockwise\")},{default:q(()=>[H(c(K6))]),_:1},8,[\"onClick\"]),H(c(He),{onClick:re=>R(\"clockwise\")},{default:q(()=>[H(c(U6))]),_:1},8,[\"onClick\"])],2)],2),de(\" CANVAS \"),Z(\"div\",{class:D(c(i).e(\"canvas\"))},[($(!0),X(We,null,vt(U.urlList,(re,le)=>st(($(),X(\"img\",{ref_for:!0,ref:pe=>f.value[le]=pe,key:re,src:re,style:Ue(c(E)),class:D(c(i).e(\"img\")),crossorigin:U.crossorigin,onLoad:M,onError:A,onMousedown:P},null,46,[\"src\",\"crossorigin\"])),[[Et,le===v.value]])),128))],2),ue(U.$slots,\"default\")]),_:3},8,[\"focus-trap-el\"])],6)]),_:3})]),_:3},8,[\"disabled\"]))}});var vW=Oe(pW,[[\"__file\",\"image-viewer.vue\"]]);const z2=Qe(vW),mW=xe({hideOnClickModal:Boolean,src:{type:String,default:\"\"},fit:{type:String,values:[\"\",\"contain\",\"cover\",\"fill\",\"none\",\"scale-down\"],default:\"\"},loading:{type:String,values:[\"eager\",\"lazy\"]},lazy:Boolean,scrollContainer:{type:ie([String,Object])},previewSrcList:{type:ie(Array),default:()=>Yt([])},previewTeleported:Boolean,zIndex:{type:Number},initialIndex:{type:Number,default:0},infinite:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},zoomRate:{type:Number,default:1.2},minScale:{type:Number,default:.2},maxScale:{type:Number,default:7},crossorigin:{type:ie(String)}}),gW={load:e=>e instanceof Event,error:e=>e instanceof Event,switch:e=>Ge(e),close:()=>!0,show:()=>!0},_W=ee({name:\"ElImage\",inheritAttrs:!1}),bW=ee({..._W,props:mW,emits:gW,setup(e,{emit:t}){const n=e;let r=\"\";const{t:s}=yt(),o=we(\"image\"),a=mo(),i=O(()=>pl(Object.entries(a).filter(([F])=>/^(data-|on[A-Z])/i.test(F)||[\"id\",\"style\"].includes(F)))),l=Ul({excludeListeners:!0,excludeKeys:O(()=>Object.keys(i.value))}),u=W(),f=W(!1),d=W(!0),h=W(!1),v=W(),b=W(),p=bt&&\"loading\"in HTMLImageElement.prototype;let g,m;const y=O(()=>[o.e(\"inner\"),w.value&&o.e(\"preview\"),d.value&&o.is(\"loading\")]),_=O(()=>{const{fit:F}=n;return bt&&F?{objectFit:F}:{}}),w=O(()=>{const{previewSrcList:F}=n;return ke(F)&&F.length>0}),S=O(()=>{const{previewSrcList:F,initialIndex:R}=n;let B=R;return R>F.length-1&&(B=0),B}),C=O(()=>n.loading===\"eager\"?!1:!p&&n.loading===\"lazy\"||n.lazy),E=()=>{bt&&(d.value=!0,f.value=!1,u.value=n.src)};function k(F){d.value=!1,f.value=!1,t(\"load\",F)}function T(F){d.value=!1,f.value=!0,t(\"error\",F)}function x(){$H(v.value,b.value)&&(E(),P())}const M=ES(x,200,!0);async function A(){var F;if(!bt)return;await je();const{scrollContainer:R}=n;lr(R)?b.value=R:ze(R)&&R!==\"\"?b.value=(F=document.querySelector(R))!=null?F:void 0:v.value&&(b.value=xv(v.value)),b.value&&(g=It(b,\"scroll\",M),setTimeout(()=>x(),100))}function P(){!bt||!b.value||!M||(g==null||g(),b.value=void 0)}function G(F){if(F.ctrlKey){if(F.deltaY<0)return F.preventDefault(),!1;if(F.deltaY>0)return F.preventDefault(),!1}}function V(){w.value&&(m=It(\"wheel\",G,{passive:!1}),r=document.body.style.overflow,document.body.style.overflow=\"hidden\",h.value=!0,t(\"show\"))}function I(){m==null||m(),document.body.style.overflow=r,h.value=!1,t(\"close\")}function j(F){t(\"switch\",F)}return ye(()=>n.src,()=>{C.value?(d.value=!0,f.value=!1,P(),A()):E()}),it(()=>{C.value?A():E()}),(F,R)=>($(),X(\"div\",ft({ref_key:\"container\",ref:v},c(i),{class:[c(o).b(),F.$attrs.class]}),[f.value?ue(F.$slots,\"error\",{key:0},()=>[Z(\"div\",{class:D(c(o).e(\"error\"))},Ee(c(s)(\"el.image.error\")),3)]):($(),X(We,{key:1},[u.value!==void 0?($(),X(\"img\",ft({key:0},c(l),{src:u.value,loading:F.loading,style:c(_),class:c(y),crossorigin:F.crossorigin,onClick:V,onLoad:k,onError:T}),null,16,[\"src\",\"loading\",\"crossorigin\"])):de(\"v-if\",!0),d.value?($(),X(\"div\",{key:1,class:D(c(o).e(\"wrapper\"))},[ue(F.$slots,\"placeholder\",{},()=>[Z(\"div\",{class:D(c(o).e(\"placeholder\"))},null,2)])],2)):de(\"v-if\",!0)],64)),c(w)?($(),X(We,{key:2},[h.value?($(),ve(c(z2),{key:0,\"z-index\":F.zIndex,\"initial-index\":c(S),infinite:F.infinite,\"zoom-rate\":F.zoomRate,\"min-scale\":F.minScale,\"max-scale\":F.maxScale,\"url-list\":F.previewSrcList,crossorigin:F.crossorigin,\"hide-on-click-modal\":F.hideOnClickModal,teleported:F.previewTeleported,\"close-on-press-escape\":F.closeOnPressEscape,onClose:I,onSwitch:j},{default:q(()=>[F.$slots.viewer?($(),X(\"div\",{key:0},[ue(F.$slots,\"viewer\")])):de(\"v-if\",!0)]),_:3},8,[\"z-index\",\"initial-index\",\"infinite\",\"zoom-rate\",\"min-scale\",\"max-scale\",\"url-list\",\"crossorigin\",\"hide-on-click-modal\",\"teleported\",\"close-on-press-escape\"])):de(\"v-if\",!0)],64)):de(\"v-if\",!0)],16))}});var yW=Oe(bW,[[\"__file\",\"image.vue\"]]);const wW=Qe(yW),SW=xe({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.POSITIVE_INFINITY},min:{type:Number,default:Number.NEGATIVE_INFINITY},modelValue:Number,readonly:Boolean,disabled:Boolean,size:on,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:\"\",values:[\"\",\"right\"]},valueOnClear:{type:[String,Number,null],validator:e=>e===null||Ge(e)||[\"min\",\"max\"].includes(e),default:null},name:String,placeholder:String,precision:{type:Number,validator:e=>e>=0&&e===Number.parseInt(`${e}`,10)},validateEvent:{type:Boolean,default:!0},...kn([\"ariaLabel\"])}),CW={[Bt]:(e,t)=>t!==e,blur:e=>e instanceof FocusEvent,focus:e=>e instanceof FocusEvent,[Tn]:e=>Ge(e)||fn(e),[ot]:e=>Ge(e)||fn(e)},kW=ee({name:\"ElInputNumber\"}),EW=ee({...kW,props:SW,emits:CW,setup(e,{expose:t,emit:n}){const r=e,{t:s}=yt(),o=we(\"input-number\"),a=W(),i=St({currentValue:r.modelValue,userInput:null}),{formItem:l}=xn(),u=O(()=>Ge(r.modelValue)&&r.modelValue<=r.min),f=O(()=>Ge(r.modelValue)&&r.modelValue>=r.max),d=O(()=>{const V=m(r.step);return Lt(r.precision)?Math.max(m(r.modelValue),V):(V>r.precision,r.precision)}),h=O(()=>r.controls&&r.controlsPosition===\"right\"),v=sn(),b=On(),p=O(()=>{if(i.userInput!==null)return i.userInput;let V=i.currentValue;if(fn(V))return\"\";if(Ge(V)){if(Number.isNaN(V))return\"\";Lt(r.precision)||(V=V.toFixed(r.precision))}return V}),g=(V,I)=>{if(Lt(I)&&(I=d.value),I===0)return Math.round(V);let j=String(V);const F=j.indexOf(\".\");if(F===-1||!j.replace(\".\",\"\").split(\"\")[F+I])return V;const N=j.length;return j.charAt(N-1)===\"5\"&&(j=`${j.slice(0,Math.max(0,N-1))}6`),Number.parseFloat(Number(j).toFixed(I))},m=V=>{if(fn(V))return 0;const I=V.toString(),j=I.indexOf(\".\");let F=0;return j!==-1&&(F=I.length-j-1),F},y=(V,I=1)=>Ge(V)?g(V+r.step*I):i.currentValue,_=()=>{if(r.readonly||b.value||f.value)return;const V=Number(p.value)||0,I=y(V);C(I),n(Tn,i.currentValue),P()},w=()=>{if(r.readonly||b.value||u.value)return;const V=Number(p.value)||0,I=y(V,-1);C(I),n(Tn,i.currentValue),P()},S=(V,I)=>{const{max:j,min:F,step:R,precision:B,stepStrictly:N,valueOnClear:U}=r;j<F&&dn(\"InputNumber\",\"min should not be greater than max.\");let J=Number(V);if(fn(V)||Number.isNaN(J))return null;if(V===\"\"){if(U===null)return null;J=ze(U)?{min:F,max:j}[U]:U}return N&&(J=g(Math.round(J/R)*R,B),J!==V&&I&&n(ot,J)),Lt(B)||(J=g(J,B)),(J>j||J<F)&&(J=J>j?j:F,I&&n(ot,J)),J},C=(V,I=!0)=>{var j;const F=i.currentValue,R=S(V);if(!I){n(ot,R);return}F===R&&V||(i.userInput=null,n(ot,R),F!==R&&n(Bt,R,F),r.validateEvent&&((j=l==null?void 0:l.validate)==null||j.call(l,\"change\").catch(B=>void 0)),i.currentValue=R)},E=V=>{i.userInput=V;const I=V===\"\"?null:Number(V);n(Tn,I),C(I,!1)},k=V=>{const I=V!==\"\"?Number(V):\"\";(Ge(I)&&!Number.isNaN(I)||V===\"\")&&C(I),P(),i.userInput=null},T=()=>{var V,I;(I=(V=a.value)==null?void 0:V.focus)==null||I.call(V)},x=()=>{var V,I;(I=(V=a.value)==null?void 0:V.blur)==null||I.call(V)},M=V=>{n(\"focus\",V)},A=V=>{var I,j;i.userInput=null,Rd()&&i.currentValue===null&&((I=a.value)!=null&&I.input)&&(a.value.input.value=\"\"),n(\"blur\",V),r.validateEvent&&((j=l==null?void 0:l.validate)==null||j.call(l,\"blur\").catch(F=>void 0))},P=()=>{i.currentValue!==r.modelValue&&(i.currentValue=r.modelValue)},G=V=>{document.activeElement===V.target&&V.preventDefault()};return ye(()=>r.modelValue,(V,I)=>{const j=S(V,!0);i.userInput===null&&j!==I&&(i.currentValue=j)},{immediate:!0}),it(()=>{var V;const{min:I,max:j,modelValue:F}=r,R=(V=a.value)==null?void 0:V.input;if(R.setAttribute(\"role\",\"spinbutton\"),Number.isFinite(j)?R.setAttribute(\"aria-valuemax\",String(j)):R.removeAttribute(\"aria-valuemax\"),Number.isFinite(I)?R.setAttribute(\"aria-valuemin\",String(I)):R.removeAttribute(\"aria-valuemin\"),R.setAttribute(\"aria-valuenow\",i.currentValue||i.currentValue===0?String(i.currentValue):\"\"),R.setAttribute(\"aria-disabled\",String(b.value)),!Ge(F)&&F!=null){let B=Number(F);Number.isNaN(B)&&(B=null),n(ot,B)}R.addEventListener(\"wheel\",G,{passive:!1})}),os(()=>{var V,I;const j=(V=a.value)==null?void 0:V.input;j==null||j.setAttribute(\"aria-valuenow\",`${(I=i.currentValue)!=null?I:\"\"}`)}),t({focus:T,blur:x}),(V,I)=>($(),X(\"div\",{class:D([c(o).b(),c(o).m(c(v)),c(o).is(\"disabled\",c(b)),c(o).is(\"without-controls\",!V.controls),c(o).is(\"controls-right\",c(h))]),onDragstart:Xe(()=>{},[\"prevent\"])},[V.controls?st(($(),X(\"span\",{key:0,role:\"button\",\"aria-label\":c(s)(\"el.inputNumber.decrease\"),class:D([c(o).e(\"decrease\"),c(o).is(\"disabled\",c(u))]),onKeydown:Ht(w,[\"enter\"])},[ue(V.$slots,\"decrease-icon\",{},()=>[H(c(He),null,{default:q(()=>[c(h)?($(),ve(c(As),{key:0})):($(),ve(c(I6),{key:1}))]),_:1})])],42,[\"aria-label\",\"onKeydown\"])),[[c(Mu),w]]):de(\"v-if\",!0),V.controls?st(($(),X(\"span\",{key:1,role:\"button\",\"aria-label\":c(s)(\"el.inputNumber.increase\"),class:D([c(o).e(\"increase\"),c(o).is(\"disabled\",c(f))]),onKeydown:Ht(_,[\"enter\"])},[ue(V.$slots,\"increase-icon\",{},()=>[H(c(He),null,{default:q(()=>[c(h)?($(),ve(c(Mv),{key:0})):($(),ve(c(KS),{key:1}))]),_:1})])],42,[\"aria-label\",\"onKeydown\"])),[[c(Mu),_]]):de(\"v-if\",!0),H(c(yn),{id:V.id,ref_key:\"input\",ref:a,type:\"number\",step:V.step,\"model-value\":c(p),placeholder:V.placeholder,readonly:V.readonly,disabled:c(b),size:c(v),max:V.max,min:V.min,name:V.name,\"aria-label\":V.ariaLabel,\"validate-event\":!1,onKeydown:[Ht(Xe(_,[\"prevent\"]),[\"up\"]),Ht(Xe(w,[\"prevent\"]),[\"down\"])],onBlur:A,onFocus:M,onInput:E,onChange:k},_r({_:2},[V.$slots.prefix?{name:\"prefix\",fn:q(()=>[ue(V.$slots,\"prefix\")])}:void 0,V.$slots.suffix?{name:\"suffix\",fn:q(()=>[ue(V.$slots,\"suffix\")])}:void 0]),1032,[\"id\",\"step\",\"model-value\",\"placeholder\",\"readonly\",\"disabled\",\"size\",\"max\",\"min\",\"name\",\"aria-label\",\"onKeydown\"])],42,[\"onDragstart\"]))}});var TW=Oe(EW,[[\"__file\",\"input-number.vue\"]]);const gm=Qe(TW),RW=xe({modelValue:{type:ie(Array)},max:Number,tagType:{...ks.type,default:\"info\"},tagEffect:ks.effect,trigger:{type:ie(String),default:Ne.enter},draggable:{type:Boolean,default:!1},size:on,clearable:Boolean,disabled:{type:Boolean,default:void 0},validateEvent:{type:Boolean,default:!0},readonly:Boolean,autofocus:Boolean,id:{type:String,default:void 0},tabindex:{type:[String,Number],default:0},maxlength:{type:[String,Number]},minlength:{type:[String,Number]},placeholder:String,autocomplete:{type:String,default:\"off\"},ariaLabel:String}),xW={[ot]:e=>ke(e)||Lt(e),[Bt]:e=>ke(e)||Lt(e),[Tn]:e=>ze(e),\"add-tag\":e=>ze(e),\"remove-tag\":e=>ze(e),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0};function OW({props:e,emit:t,formItem:n}){const r=On(),s=sn(),o=Wt(),a=W(),i=O(()=>[\"small\"].includes(s.value)?\"small\":\"default\"),l=O(()=>{var T;return(T=e.modelValue)!=null&&T.length?void 0:e.placeholder}),u=O(()=>!(e.readonly||r.value)),f=O(()=>{var T,x;return Lt(e.max)?!1:((x=(T=e.modelValue)==null?void 0:T.length)!=null?x:0)>=e.max}),d=T=>{if(f.value){a.value=void 0;return}S.value||t(Tn,T.target.value)},h=T=>{var x;if(!S.value)switch(T.code){case e.trigger:T.preventDefault(),T.stopPropagation(),v();break;case Ne.numpadEnter:e.trigger===Ne.enter&&(T.preventDefault(),T.stopPropagation(),v());break;case Ne.backspace:!a.value&&((x=e.modelValue)!=null&&x.length)&&(T.preventDefault(),T.stopPropagation(),b(e.modelValue.length-1));break}},v=()=>{var T,x;const M=(T=a.value)==null?void 0:T.trim();if(!M||f.value)return;const A=[...(x=e.modelValue)!=null?x:[],M];t(ot,A),t(Bt,A),t(\"add-tag\",M),a.value=void 0},b=T=>{var x;const M=((x=e.modelValue)!=null?x:[]).slice(),[A]=M.splice(T,1);t(ot,M),t(Bt,M),t(\"remove-tag\",A)},p=()=>{a.value=void 0,t(ot,void 0),t(Bt,void 0),t(\"clear\")},g=(T,x,M)=>{var A;const P=((A=e.modelValue)!=null?A:[]).slice(),[G]=P.splice(T,1),V=x>T&&M===\"before\"?-1:x<T&&M===\"after\"?1:0;P.splice(x+V,0,G),t(ot,P),t(Bt,P)},m=()=>{var T;(T=o.value)==null||T.focus()},y=()=>{var T;(T=o.value)==null||T.blur()},{wrapperRef:_,isFocused:w}=_o(o,{beforeFocus(){return r.value},afterBlur(){var T;v(),e.validateEvent&&((T=n==null?void 0:n.validate)==null||T.call(n,\"blur\").catch(x=>void 0))}}),{isComposing:S,handleCompositionStart:C,handleCompositionUpdate:E,handleCompositionEnd:k}=ql({afterComposition:d});return ye(()=>e.modelValue,()=>{var T;e.validateEvent&&((T=n==null?void 0:n.validate)==null||T.call(n,Bt).catch(x=>void 0))}),{inputRef:o,wrapperRef:_,isFocused:w,isComposing:S,inputValue:a,size:s,tagSize:i,placeholder:l,closable:u,disabled:r,inputLimit:f,handleDragged:g,handleInput:d,handleKeydown:h,handleAddTag:v,handleRemoveTag:b,handleClear:p,handleCompositionStart:C,handleCompositionUpdate:E,handleCompositionEnd:k,focus:m,blur:y}}function MW(){const e=W(!1);return{hovering:e,handleMouseEnter:()=>{e.value=!0},handleMouseLeave:()=>{e.value=!1}}}function AW(){const e=Wt(),t=W(0),n=11,r=O(()=>({minWidth:`${Math.max(t.value,n)}px`}));return jt(e,()=>{var o,a;t.value=(a=(o=e.value)==null?void 0:o.getBoundingClientRect().width)!=null?a:0}),{calculatorRef:e,calculatorWidth:t,inputStyle:r}}function $W({wrapperRef:e,handleDragged:t,afterDragged:n}){const r=we(\"input-tag\"),s=Wt(),o=W(!1);let a,i,l,u;function f(b){return`.${r.e(\"inner\")} .${r.namespace.value}-tag:nth-child(${b+1})`}function d(b,p){a=p,i=e.value.querySelector(f(p)),i&&(i.style.opacity=\"0.5\"),b.dataTransfer.effectAllowed=\"move\"}function h(b,p){if(l=p,b.preventDefault(),b.dataTransfer.dropEffect=\"move\",Lt(a)||a===p){o.value=!1;return}const g=e.value.querySelector(f(p)).getBoundingClientRect(),m=a+1!==p,y=a-1!==p,_=b.clientX-g.left,w=m?y?.5:1:-1,S=y?m?.5:0:1;_<=g.width*w?u=\"before\":_>g.width*S?u=\"after\":u=void 0;const C=e.value.querySelector(`.${r.e(\"inner\")}`),E=C.getBoundingClientRect(),k=Number.parseFloat(bs(C,\"gap\"))/2,T=g.top-E.top;let x=-9999;if(u===\"before\")x=Math.max(g.left-E.left-k,Math.floor(-k/2));else if(u===\"after\"){const M=g.right-E.left;x=M+(E.width===M?Math.floor(k/2):k)}NS(s.value,{top:`${T}px`,left:`${x}px`}),o.value=!!u}function v(b){b.preventDefault(),i&&(i.style.opacity=\"\"),u&&!Lt(a)&&!Lt(l)&&a!==l&&t(a,l,u),o.value=!1,a=void 0,i=null,l=void 0,u=void 0,n==null||n()}return{dropIndicatorRef:s,showDropIndicator:o,handleDragStart:d,handleDragOver:h,handleDragEnd:v}}function LW({props:e,isFocused:t,hovering:n,disabled:r,inputValue:s,size:o,validateState:a,validateIcon:i,needStatusIcon:l}){const u=mo(),f=an(),d=we(\"input-tag\"),h=we(\"input\"),v=O(()=>[d.b(),d.is(\"focused\",t.value),d.is(\"hovering\",n.value),d.is(\"disabled\",r.value),d.m(o.value),d.e(\"wrapper\"),u.class]),b=O(()=>[u.style]),p=O(()=>{var y,_;return[d.e(\"inner\"),d.is(\"draggable\",e.draggable),d.is(\"left-space\",!((y=e.modelValue)!=null&&y.length)&&!f.prefix),d.is(\"right-space\",!((_=e.modelValue)!=null&&_.length)&&!m.value)]}),g=O(()=>{var y;return e.clearable&&!r.value&&!e.readonly&&(((y=e.modelValue)==null?void 0:y.length)||s.value)&&(t.value||n.value)}),m=O(()=>f.suffix||g.value||a.value&&i.value&&l.value);return{ns:d,nsInput:h,containerKls:v,containerStyle:b,innerKls:p,showClear:g,showSuffix:m}}const IW=ee({name:\"ElInputTag\",inheritAttrs:!1}),PW=ee({...IW,props:RW,emits:xW,setup(e,{expose:t,emit:n}){const r=e,s=Ul(),o=an(),{form:a,formItem:i}=xn(),{inputId:l}=Cr(r,{formItemContext:i}),u=O(()=>{var Y;return(Y=a==null?void 0:a.statusIcon)!=null?Y:!1}),f=O(()=>(i==null?void 0:i.validateState)||\"\"),d=O(()=>f.value&&Td[f.value]),{inputRef:h,wrapperRef:v,isFocused:b,inputValue:p,size:g,tagSize:m,placeholder:y,closable:_,disabled:w,handleDragged:S,handleInput:C,handleKeydown:E,handleRemoveTag:k,handleClear:T,handleCompositionStart:x,handleCompositionUpdate:M,handleCompositionEnd:A,focus:P,blur:G}=OW({props:r,emit:n,formItem:i}),{hovering:V,handleMouseEnter:I,handleMouseLeave:j}=MW(),{calculatorRef:F,inputStyle:R}=AW(),{dropIndicatorRef:B,showDropIndicator:N,handleDragStart:U,handleDragOver:J,handleDragEnd:re}=$W({wrapperRef:v,handleDragged:S,afterDragged:P}),{ns:le,nsInput:pe,containerKls:K,containerStyle:z,innerKls:te,showClear:oe,showSuffix:he}=LW({props:r,hovering:V,isFocused:b,inputValue:p,disabled:w,size:g,validateState:f,validateIcon:d,needStatusIcon:u});return t({focus:P,blur:G}),(Y,L)=>($(),X(\"div\",{ref_key:\"wrapperRef\",ref:v,class:D(c(K)),style:Ue(c(z)),onMouseenter:c(I),onMouseleave:c(j)},[c(o).prefix?($(),X(\"div\",{key:0,class:D(c(le).e(\"prefix\"))},[ue(Y.$slots,\"prefix\")],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(te))},[($(!0),X(We,null,vt(Y.modelValue,(Q,se)=>($(),ve(c(Yi),{key:se,size:c(m),closable:c(_),type:Y.tagType,effect:Y.tagEffect,draggable:c(_)&&Y.draggable,\"disable-transitions\":\"\",onClose:ge=>c(k)(se),onDragstart:ge=>c(U)(ge,se),onDragover:ge=>c(J)(ge,se),onDragend:c(re),onDrop:Xe(()=>{},[\"stop\"])},{default:q(()=>[ue(Y.$slots,\"tag\",{value:Q,index:se},()=>[Ve(Ee(Q),1)])]),_:2},1032,[\"size\",\"closable\",\"type\",\"effect\",\"draggable\",\"onClose\",\"onDragstart\",\"onDragover\",\"onDragend\",\"onDrop\"]))),128)),Z(\"div\",{class:D(c(le).e(\"input-wrapper\"))},[st(Z(\"input\",ft({id:c(l),ref_key:\"inputRef\",ref:h,\"onUpdate:modelValue\":Q=>Ft(p)?p.value=Q:null},c(s),{type:\"text\",minlength:Y.minlength,maxlength:Y.maxlength,disabled:c(w),readonly:Y.readonly,autocomplete:Y.autocomplete,tabindex:Y.tabindex,placeholder:c(y),autofocus:Y.autofocus,ariaLabel:Y.ariaLabel,class:c(le).e(\"input\"),style:c(R),onCompositionstart:c(x),onCompositionupdate:c(M),onCompositionend:c(A),onInput:c(C),onKeydown:c(E)}),null,16,[\"id\",\"onUpdate:modelValue\",\"minlength\",\"maxlength\",\"disabled\",\"readonly\",\"autocomplete\",\"tabindex\",\"placeholder\",\"autofocus\",\"ariaLabel\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\",\"onInput\",\"onKeydown\"]),[[rd,c(p)]]),Z(\"span\",{ref_key:\"calculatorRef\",ref:F,\"aria-hidden\":\"true\",class:D(c(le).e(\"input-calculator\")),textContent:Ee(c(p))},null,10,[\"textContent\"])],2),st(Z(\"div\",{ref_key:\"dropIndicatorRef\",ref:B,class:D(c(le).e(\"drop-indicator\"))},null,2),[[Et,c(N)]])],2),c(he)?($(),X(\"div\",{key:1,class:D(c(le).e(\"suffix\"))},[ue(Y.$slots,\"suffix\"),c(oe)?($(),ve(c(He),{key:0,class:D([c(le).e(\"icon\"),c(le).e(\"clear\")]),onMousedown:Xe(c(Mt),[\"prevent\"]),onClick:c(T)},{default:q(()=>[H(c(as))]),_:1},8,[\"class\",\"onMousedown\",\"onClick\"])):de(\"v-if\",!0),c(f)&&c(d)&&c(u)?($(),ve(c(He),{key:1,class:D([c(pe).e(\"icon\"),c(pe).e(\"validateIcon\"),c(pe).is(\"loading\",c(f)===\"validating\")])},{default:q(()=>[($(),ve(dt(c(d))))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0)],46,[\"onMouseenter\",\"onMouseleave\"]))}});var DW=Oe(PW,[[\"__file\",\"input-tag.vue\"]]);const BW=Qe(DW),NW=xe({type:{type:String,values:[\"primary\",\"success\",\"warning\",\"info\",\"danger\",\"default\"],default:\"default\"},underline:{type:Boolean,default:!0},disabled:Boolean,href:{type:String,default:\"\"},target:{type:String,default:\"_self\"},icon:{type:Nt}}),FW={click:e=>e instanceof MouseEvent},HW=ee({name:\"ElLink\"}),VW=ee({...HW,props:NW,emits:FW,setup(e,{emit:t}){const n=e,r=we(\"link\"),s=O(()=>[r.b(),r.m(n.type),r.is(\"disabled\",n.disabled),r.is(\"underline\",n.underline&&!n.disabled)]);function o(a){n.disabled||t(\"click\",a)}return(a,i)=>($(),X(\"a\",{class:D(c(s)),href:a.disabled||!a.href?void 0:a.href,target:a.disabled||!a.href?void 0:a.target,onClick:o},[a.icon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(a.icon)))]),_:1})):de(\"v-if\",!0),a.$slots.default?($(),X(\"span\",{key:1,class:D(c(r).e(\"inner\"))},[ue(a.$slots,\"default\")],2)):de(\"v-if\",!0),a.$slots.icon?ue(a.$slots,\"icon\",{key:2}):de(\"v-if\",!0)],10,[\"href\",\"target\"]))}});var zW=Oe(VW,[[\"__file\",\"link.vue\"]]);const W2=Qe(zW);let WW=class{constructor(t,n){this.parent=t,this.domNode=n,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll(\"li\"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,n=>{n.addEventListener(\"keydown\",r=>{let s=!1;switch(r.code){case Ne.down:{this.gotoSubIndex(this.subIndex+1),s=!0;break}case Ne.up:{this.gotoSubIndex(this.subIndex-1),s=!0;break}case Ne.tab:{Hc(t,\"mouseleave\");break}case Ne.enter:case Ne.numpadEnter:case Ne.space:{s=!0,r.currentTarget.click();break}}return s&&(r.preventDefault(),r.stopPropagation()),!1})})}},KW=class{constructor(t,n){this.domNode=t,this.submenu=null,this.submenu=null,this.init(n)}init(t){this.domNode.setAttribute(\"tabindex\",\"0\");const n=this.domNode.querySelector(`.${t}-menu`);n&&(this.submenu=new WW(this,n)),this.addListeners()}addListeners(){this.domNode.addEventListener(\"keydown\",t=>{let n=!1;switch(t.code){case Ne.down:{Hc(t.currentTarget,\"mouseenter\"),this.submenu&&this.submenu.gotoSubIndex(0),n=!0;break}case Ne.up:{Hc(t.currentTarget,\"mouseenter\"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),n=!0;break}case Ne.tab:{Hc(t.currentTarget,\"mouseleave\");break}case Ne.enter:case Ne.numpadEnter:case Ne.space:{n=!0,t.currentTarget.click();break}}n&&t.preventDefault()})}},jW=class{constructor(t,n){this.domNode=t,this.init(n)}init(t){const n=this.domNode.childNodes;Array.from(n).forEach(r=>{r.nodeType===1&&new KW(r,t)})}};const UW=ee({name:\"ElMenuCollapseTransition\",setup(){const e=we(\"menu\");return{listeners:{onBeforeEnter:n=>n.style.opacity=\"0.2\",onEnter(n,r){pr(n,`${e.namespace.value}-opacity-transition`),n.style.opacity=\"1\",r()},onAfterEnter(n){Bn(n,`${e.namespace.value}-opacity-transition`),n.style.opacity=\"\"},onBeforeLeave(n){n.dataset||(n.dataset={}),Zn(n,e.m(\"collapse\"))?(Bn(n,e.m(\"collapse\")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),pr(n,e.m(\"collapse\"))):(pr(n,e.m(\"collapse\")),n.dataset.oldOverflow=n.style.overflow,n.dataset.scrollWidth=n.clientWidth.toString(),Bn(n,e.m(\"collapse\"))),n.style.width=`${n.scrollWidth}px`,n.style.overflow=\"hidden\"},onLeave(n){pr(n,\"horizontal-collapse-transition\"),n.style.width=`${n.dataset.scrollWidth}px`}}}}});function qW(e,t,n,r,s,o){return $(),ve(_n,ft({mode:\"out-in\"},e.listeners),{default:q(()=>[ue(e.$slots,\"default\")]),_:3},16)}var YW=Oe(UW,[[\"render\",qW],[\"__file\",\"menu-collapse-transition.vue\"]]);function K2(e,t){const n=O(()=>{let s=e.parent;const o=[t.value];for(;s.type.name!==\"ElMenu\";)s.props.index&&o.unshift(s.props.index),s=s.parent;return o});return{parentMenu:O(()=>{let s=e.parent;for(;s&&![\"ElMenu\",\"ElSubMenu\"].includes(s.type.name);)s=s.parent;return s}),indexPath:n}}function GW(e){return O(()=>{const n=e.backgroundColor;return n?new xC(n).shade(20).toString():\"\"})}const j2=(e,t)=>{const n=we(\"menu\");return O(()=>n.cssVarBlock({\"text-color\":e.textColor||\"\",\"hover-text-color\":e.textColor||\"\",\"bg-color\":e.backgroundColor||\"\",\"hover-bg-color\":GW(e).value||\"\",\"active-color\":e.activeTextColor||\"\",level:`${t}`}))},XW=xe({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:Nt},expandOpenIcon:{type:Nt},collapseCloseIcon:{type:Nt},collapseOpenIcon:{type:Nt}}),Lf=\"ElSubMenu\";var _m=ee({name:Lf,props:XW,setup(e,{slots:t,expose:n}){const r=ct(),{indexPath:s,parentMenu:o}=K2(r,O(()=>e.index)),a=we(\"menu\"),i=we(\"sub-menu\"),l=Fe(\"rootMenu\");l||dn(Lf,\"can not inject root menu\");const u=Fe(`subMenu:${o.value.uid}`);u||dn(Lf,\"can not inject sub menu\");const f=W({}),d=W({});let h;const v=W(!1),b=W(),p=W(null),g=O(()=>k.value===\"horizontal\"&&y.value?\"bottom-start\":\"right-start\"),m=O(()=>k.value===\"horizontal\"&&y.value||k.value===\"vertical\"&&!l.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?C.value?e.expandOpenIcon:e.expandCloseIcon:As:e.collapseCloseIcon&&e.collapseOpenIcon?C.value?e.collapseOpenIcon:e.collapseCloseIcon:qn),y=O(()=>u.level===0),_=O(()=>{const B=e.teleported;return B===void 0?y.value:B}),w=O(()=>l.props.collapse?`${a.namespace.value}-zoom-in-left`:`${a.namespace.value}-zoom-in-top`),S=O(()=>k.value===\"horizontal\"&&y.value?[\"bottom-start\",\"bottom-end\",\"top-start\",\"top-end\",\"right-start\",\"left-start\"]:[\"right-start\",\"right\",\"right-end\",\"left-start\",\"bottom-start\",\"bottom-end\",\"top-start\",\"top-end\"]),C=O(()=>l.openedMenus.includes(e.index)),E=O(()=>{let B=!1;return Object.values(f.value).forEach(N=>{N.active&&(B=!0)}),Object.values(d.value).forEach(N=>{N.active&&(B=!0)}),B}),k=O(()=>l.props.mode),T=St({index:e.index,indexPath:s,active:E}),x=j2(l.props,u.level+1),M=O(()=>{var B;return(B=e.popperOffset)!=null?B:l.props.popperOffset}),A=O(()=>{var B;return(B=e.popperClass)!=null?B:l.props.popperClass}),P=O(()=>{var B;return(B=e.showTimeout)!=null?B:l.props.showTimeout}),G=O(()=>{var B;return(B=e.hideTimeout)!=null?B:l.props.hideTimeout}),V=()=>{var B,N,U;return(U=(N=(B=p.value)==null?void 0:B.popperRef)==null?void 0:N.popperInstanceRef)==null?void 0:U.destroy()},I=B=>{B||V()},j=()=>{l.props.menuTrigger===\"hover\"&&l.props.mode===\"horizontal\"||l.props.collapse&&l.props.mode===\"vertical\"||e.disabled||l.handleSubMenuClick({index:e.index,indexPath:s.value,active:E.value})},F=(B,N=P.value)=>{var U;if(B.type!==\"focus\"){if(l.props.menuTrigger===\"click\"&&l.props.mode===\"horizontal\"||!l.props.collapse&&l.props.mode===\"vertical\"||e.disabled){u.mouseInChild.value=!0;return}u.mouseInChild.value=!0,h==null||h(),{stop:h}=Jo(()=>{l.openMenu(e.index,s.value)},N),_.value&&((U=o.value.vnode.el)==null||U.dispatchEvent(new MouseEvent(\"mouseenter\")))}},R=(B=!1)=>{var N;if(l.props.menuTrigger===\"click\"&&l.props.mode===\"horizontal\"||!l.props.collapse&&l.props.mode===\"vertical\"){u.mouseInChild.value=!1;return}h==null||h(),u.mouseInChild.value=!1,{stop:h}=Jo(()=>!v.value&&l.closeMenu(e.index,s.value),G.value),_.value&&B&&((N=u.handleMouseleave)==null||N.call(u,!0))};ye(()=>l.props.collapse,B=>I(!!B));{const B=U=>{d.value[U.index]=U},N=U=>{delete d.value[U.index]};pt(`subMenu:${r.uid}`,{addSubMenu:B,removeSubMenu:N,handleMouseleave:R,mouseInChild:v,level:u.level+1})}return n({opened:C}),it(()=>{l.addSubMenu(T),u.addSubMenu(T)}),Pt(()=>{u.removeSubMenu(T),l.removeSubMenu(T)}),()=>{var B;const N=[(B=t.title)==null?void 0:B.call(t),Ye(He,{class:i.e(\"icon-arrow\"),style:{transform:C.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&l.props.collapse?\"none\":\"rotateZ(180deg)\":\"none\"}},{default:()=>ze(m.value)?Ye(r.appContext.components[m.value]):Ye(m.value)})],U=l.isMenuPopup?Ye(Cn,{ref:p,visible:C.value,effect:\"light\",pure:!0,offset:M.value,showArrow:!1,persistent:!0,popperClass:A.value,placement:g.value,teleported:_.value,fallbackPlacements:S.value,transition:w.value,gpuAcceleration:!1},{content:()=>{var J;return Ye(\"div\",{class:[a.m(k.value),a.m(\"popup-container\"),A.value],onMouseenter:re=>F(re,100),onMouseleave:()=>R(!0),onFocus:re=>F(re,100)},[Ye(\"ul\",{class:[a.b(),a.m(\"popup\"),a.m(`popup-${g.value}`)],style:x.value},[(J=t.default)==null?void 0:J.call(t)])])},default:()=>Ye(\"div\",{class:i.e(\"title\"),onClick:j},N)}):Ye(We,{},[Ye(\"div\",{class:i.e(\"title\"),ref:b,onClick:j},N),Ye(Ad,{},{default:()=>{var J;return st(Ye(\"ul\",{role:\"menu\",class:[a.b(),a.m(\"inline\")],style:x.value},[(J=t.default)==null?void 0:J.call(t)]),[[Et,C.value]])}})]);return Ye(\"li\",{class:[i.b(),i.is(\"active\",E.value),i.is(\"opened\",C.value),i.is(\"disabled\",e.disabled)],role:\"menuitem\",ariaHaspopup:!0,ariaExpanded:C.value,onMouseenter:F,onMouseleave:()=>R(),onFocus:F},[U])}}});const JW=xe({mode:{type:String,values:[\"horizontal\",\"vertical\"],default:\"vertical\"},defaultActive:{type:String,default:\"\"},defaultOpeneds:{type:ie(Array),default:()=>Yt([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:[\"hover\",\"click\"],default:\"hover\"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:Nt,default:()=>B6},popperEffect:{type:ie(String),default:\"dark\"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),If=e=>ke(e)&&e.every(t=>ze(t)),ZW={close:(e,t)=>ze(e)&&If(t),open:(e,t)=>ze(e)&&If(t),select:(e,t,n,r)=>ze(e)&&If(t)&&lt(n)&&(r===void 0||r instanceof Promise)};var QW=ee({name:\"ElMenu\",props:JW,emits:ZW,setup(e,{emit:t,slots:n,expose:r}){const s=ct(),o=s.appContext.config.globalProperties.$router,a=W(),i=we(\"menu\"),l=we(\"sub-menu\"),u=W(-1),f=W(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),d=W(e.defaultActive),h=W({}),v=W({}),b=O(()=>e.mode===\"horizontal\"||e.mode===\"vertical\"&&e.collapse),p=()=>{const V=d.value&&h.value[d.value];if(!V||e.mode===\"horizontal\"||e.collapse)return;V.indexPath.forEach(j=>{const F=v.value[j];F&&g(j,F.indexPath)})},g=(V,I)=>{f.value.includes(V)||(e.uniqueOpened&&(f.value=f.value.filter(j=>I.includes(j))),f.value.push(V),t(\"open\",V,I))},m=V=>{const I=f.value.indexOf(V);I!==-1&&f.value.splice(I,1)},y=(V,I)=>{m(V),t(\"close\",V,I)},_=({index:V,indexPath:I})=>{f.value.includes(V)?y(V,I):g(V,I)},w=V=>{(e.mode===\"horizontal\"||e.collapse)&&(f.value=[]);const{index:I,indexPath:j}=V;if(!(fn(I)||fn(j)))if(e.router&&o){const F=V.route||I,R=o.push(F).then(B=>(B||(d.value=I),B));t(\"select\",I,j,{index:I,indexPath:j,route:F},R)}else d.value=I,t(\"select\",I,j,{index:I,indexPath:j})},S=V=>{const I=h.value,j=I[V]||d.value&&I[d.value]||I[e.defaultActive];j?d.value=j.index:d.value=V},C=V=>{const I=getComputedStyle(V),j=Number.parseInt(I.marginLeft,10),F=Number.parseInt(I.marginRight,10);return V.offsetWidth+j+F||0},E=()=>{var V,I;if(!a.value)return-1;const j=Array.from((I=(V=a.value)==null?void 0:V.childNodes)!=null?I:[]).filter(le=>le.nodeName!==\"#comment\"&&(le.nodeName!==\"#text\"||le.nodeValue)),F=64,R=getComputedStyle(a.value),B=Number.parseInt(R.paddingLeft,10),N=Number.parseInt(R.paddingRight,10),U=a.value.clientWidth-B-N;let J=0,re=0;return j.forEach((le,pe)=>{J+=C(le),J<=U-F&&(re=pe+1)}),re===j.length?-1:re},k=V=>v.value[V].indexPath,T=(V,I=33.34)=>{let j;return()=>{j&&clearTimeout(j),j=setTimeout(()=>{V()},I)}};let x=!0;const M=()=>{if(u.value===E())return;const V=()=>{u.value=-1,je(()=>{u.value=E()})};x?V():T(V)(),x=!1};ye(()=>e.defaultActive,V=>{h.value[V]||(d.value=\"\"),S(V)}),ye(()=>e.collapse,V=>{V&&(f.value=[])}),ye(h.value,p);let A;En(()=>{e.mode===\"horizontal\"&&e.ellipsis?A=jt(a,M).stop:A==null||A()});const P=W(!1);{const V=R=>{v.value[R.index]=R},I=R=>{delete v.value[R.index]};pt(\"rootMenu\",St({props:e,openedMenus:f,items:h,subMenus:v,activeIndex:d,isMenuPopup:b,addMenuItem:R=>{h.value[R.index]=R},removeMenuItem:R=>{delete h.value[R.index]},addSubMenu:V,removeSubMenu:I,openMenu:g,closeMenu:y,handleMenuItemClick:w,handleSubMenuClick:_})),pt(`subMenu:${s.uid}`,{addSubMenu:V,removeSubMenu:I,mouseInChild:P,level:0})}it(()=>{e.mode===\"horizontal\"&&new jW(s.vnode.el,i.namespace.value)}),r({open:I=>{const{indexPath:j}=v.value[I];j.forEach(F=>g(F,j))},close:m,handleResize:M});const G=j2(e,0);return()=>{var V,I;let j=(I=(V=n.default)==null?void 0:V.call(n))!=null?I:[];const F=[];if(e.mode===\"horizontal\"&&a.value){const N=to(j),U=u.value===-1?N:N.slice(0,u.value),J=u.value===-1?[]:N.slice(u.value);J!=null&&J.length&&e.ellipsis&&(j=U,F.push(Ye(_m,{index:\"sub-menu-more\",class:l.e(\"hide-arrow\"),popperOffset:e.popperOffset},{title:()=>Ye(He,{class:l.e(\"icon-more\")},{default:()=>Ye(e.ellipsisIcon)}),default:()=>J})))}const R=e.closeOnClickOutside?[[Es,()=>{f.value.length&&(P.value||(f.value.forEach(N=>t(\"close\",N,k(N))),f.value=[]))}]]:[],B=st(Ye(\"ul\",{key:String(e.collapse),role:\"menubar\",ref:a,style:G.value,class:{[i.b()]:!0,[i.m(e.mode)]:!0,[i.m(\"collapse\")]:e.collapse}},[...j,...F]),R);return e.collapseTransition&&e.mode===\"vertical\"?Ye(YW,()=>B):B}}});const eK=xe({index:{type:ie([String,null]),default:null},route:{type:ie([String,Object])},disabled:Boolean}),tK={click:e=>ze(e.index)&&ke(e.indexPath)},Pf=\"ElMenuItem\",nK=ee({name:Pf,components:{ElTooltip:Cn},props:eK,emits:tK,setup(e,{emit:t}){const n=ct(),r=Fe(\"rootMenu\"),s=we(\"menu\"),o=we(\"menu-item\");r||dn(Pf,\"can not inject root menu\");const{parentMenu:a,indexPath:i}=K2(n,At(e,\"index\")),l=Fe(`subMenu:${a.value.uid}`);l||dn(Pf,\"can not inject sub menu\");const u=O(()=>e.index===r.activeIndex),f=St({index:e.index,indexPath:i,active:u}),d=()=>{e.disabled||(r.handleMenuItemClick({index:e.index,indexPath:i.value,route:e.route}),t(\"click\",f))};return it(()=>{l.addSubMenu(f),r.addMenuItem(f)}),Pt(()=>{l.removeSubMenu(f),r.removeMenuItem(f)}),{parentMenu:a,rootMenu:r,active:u,nsMenu:s,nsMenuItem:o,handleClick:d}}});function rK(e,t,n,r,s,o){const a=ut(\"el-tooltip\");return $(),X(\"li\",{class:D([e.nsMenuItem.b(),e.nsMenuItem.is(\"active\",e.active),e.nsMenuItem.is(\"disabled\",e.disabled)]),role:\"menuitem\",tabindex:\"-1\",onClick:e.handleClick},[e.parentMenu.type.name===\"ElMenu\"&&e.rootMenu.props.collapse&&e.$slots.title?($(),ve(a,{key:0,effect:e.rootMenu.props.popperEffect,placement:\"right\",\"fallback-placements\":[\"left\"],persistent:\"\"},{content:q(()=>[ue(e.$slots,\"title\")]),default:q(()=>[Z(\"div\",{class:D(e.nsMenu.be(\"tooltip\",\"trigger\"))},[ue(e.$slots,\"default\")],2)]),_:3},8,[\"effect\"])):($(),X(We,{key:1},[ue(e.$slots,\"default\"),ue(e.$slots,\"title\")],64))],10,[\"onClick\"])}var U2=Oe(nK,[[\"render\",rK],[\"__file\",\"menu-item.vue\"]]);const sK={title:String},oK=\"ElMenuItemGroup\",iK=ee({name:oK,props:sK,setup(){return{ns:we(\"menu-item-group\")}}});function aK(e,t,n,r,s,o){return $(),X(\"li\",{class:D(e.ns.b())},[Z(\"div\",{class:D(e.ns.e(\"title\"))},[e.$slots.title?ue(e.$slots,\"title\",{key:1}):($(),X(We,{key:0},[Ve(Ee(e.title),1)],64))],2),Z(\"ul\",null,[ue(e.$slots,\"default\")])],2)}var q2=Oe(iK,[[\"render\",aK],[\"__file\",\"menu-item-group.vue\"]]);const lK=Qe(QW,{MenuItem:U2,MenuItemGroup:q2,SubMenu:_m}),cK=Gt(U2),uK=Gt(q2),dK=Gt(_m),fK=xe({icon:{type:Nt,default:()=>jP},title:String,content:{type:String,default:\"\"}}),hK={back:()=>!0},pK=ee({name:\"ElPageHeader\"}),vK=ee({...pK,props:fK,emits:hK,setup(e,{emit:t}){const n=an(),{t:r}=yt(),s=we(\"page-header\"),o=O(()=>[s.b(),{[s.m(\"has-breadcrumb\")]:!!n.breadcrumb,[s.m(\"has-extra\")]:!!n.extra,[s.is(\"contentful\")]:!!n.default}]);function a(){t(\"back\")}return(i,l)=>($(),X(\"div\",{class:D(c(o))},[i.$slots.breadcrumb?($(),X(\"div\",{key:0,class:D(c(s).e(\"breadcrumb\"))},[ue(i.$slots,\"breadcrumb\")],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(s).e(\"header\"))},[Z(\"div\",{class:D(c(s).e(\"left\"))},[Z(\"div\",{class:D(c(s).e(\"back\")),role:\"button\",tabindex:\"0\",onClick:a},[i.icon||i.$slots.icon?($(),X(\"div\",{key:0,\"aria-label\":i.title||c(r)(\"el.pageHeader.title\"),class:D(c(s).e(\"icon\"))},[ue(i.$slots,\"icon\",{},()=>[i.icon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(i.icon)))]),_:1})):de(\"v-if\",!0)])],10,[\"aria-label\"])):de(\"v-if\",!0),Z(\"div\",{class:D(c(s).e(\"title\"))},[ue(i.$slots,\"title\",{},()=>[Ve(Ee(i.title||c(r)(\"el.pageHeader.title\")),1)])],2)],2),H(c(x2),{direction:\"vertical\"}),Z(\"div\",{class:D(c(s).e(\"content\"))},[ue(i.$slots,\"content\",{},()=>[Ve(Ee(i.content),1)])],2)],2),i.$slots.extra?($(),X(\"div\",{key:0,class:D(c(s).e(\"extra\"))},[ue(i.$slots,\"extra\")],2)):de(\"v-if\",!0)],2),i.$slots.default?($(),X(\"div\",{key:1,class:D(c(s).e(\"main\"))},[ue(i.$slots,\"default\")],2)):de(\"v-if\",!0)],2))}});var mK=Oe(vK,[[\"__file\",\"page-header.vue\"]]);const gK=Qe(mK),Y2=Symbol(\"elPaginationKey\"),_K=xe({disabled:Boolean,currentPage:{type:Number,default:1},prevText:{type:String},prevIcon:{type:Nt}}),bK={click:e=>e instanceof MouseEvent},yK=ee({name:\"ElPaginationPrev\"}),wK=ee({...yK,props:_K,emits:bK,setup(e){const t=e,{t:n}=yt(),r=O(()=>t.disabled||t.currentPage<=1);return(s,o)=>($(),X(\"button\",{type:\"button\",class:\"btn-prev\",disabled:c(r),\"aria-label\":s.prevText||c(n)(\"el.pagination.prev\"),\"aria-disabled\":c(r),onClick:a=>s.$emit(\"click\",a)},[s.prevText?($(),X(\"span\",{key:0},Ee(s.prevText),1)):($(),ve(c(He),{key:1},{default:q(()=>[($(),ve(dt(s.prevIcon)))]),_:1}))],8,[\"disabled\",\"aria-label\",\"aria-disabled\",\"onClick\"]))}});var SK=Oe(wK,[[\"__file\",\"prev.vue\"]]);const CK=xe({disabled:Boolean,currentPage:{type:Number,default:1},pageCount:{type:Number,default:50},nextText:{type:String},nextIcon:{type:Nt}}),kK=ee({name:\"ElPaginationNext\"}),EK=ee({...kK,props:CK,emits:[\"click\"],setup(e){const t=e,{t:n}=yt(),r=O(()=>t.disabled||t.currentPage===t.pageCount||t.pageCount===0);return(s,o)=>($(),X(\"button\",{type:\"button\",class:\"btn-next\",disabled:c(r),\"aria-label\":s.nextText||c(n)(\"el.pagination.next\"),\"aria-disabled\":c(r),onClick:a=>s.$emit(\"click\",a)},[s.nextText?($(),X(\"span\",{key:0},Ee(s.nextText),1)):($(),ve(c(He),{key:1},{default:q(()=>[($(),ve(dt(s.nextIcon)))]),_:1}))],8,[\"disabled\",\"aria-label\",\"aria-disabled\",\"onClick\"]))}});var TK=Oe(EK,[[\"__file\",\"next.vue\"]]);const G2=Symbol(\"ElSelectGroup\"),ma=Symbol(\"ElSelect\");function RK(e,t){const n=Fe(ma),r=Fe(G2,{disabled:!1}),s=O(()=>f(Pn(n.props.modelValue),e.value)),o=O(()=>{var v;if(n.props.multiple){const b=Pn((v=n.props.modelValue)!=null?v:[]);return!s.value&&b.length>=n.props.multipleLimit&&n.props.multipleLimit>0}else return!1}),a=O(()=>e.label||(lt(e.value)?\"\":e.value)),i=O(()=>e.value||e.label||\"\"),l=O(()=>e.disabled||t.groupDisabled||o.value),u=ct(),f=(v=[],b)=>{if(lt(e.value)){const p=n.props.valueKey;return v&&v.some(g=>Dt(rn(g,p))===rn(b,p))}else return v&&v.includes(b)},d=()=>{!e.disabled&&!r.disabled&&(n.states.hoveringIndex=n.optionsArray.indexOf(u.proxy))},h=v=>{const b=new RegExp(tm(v),\"i\");t.visible=b.test(a.value)||e.created};return ye(()=>a.value,()=>{!e.created&&!n.props.remote&&n.setSelected()}),ye(()=>e.value,(v,b)=>{const{remote:p,valueKey:g}=n.props;if(v!==b&&(n.onOptionDestroy(b,u.proxy),n.onOptionCreate(u.proxy)),!e.created&&!p){if(g&&lt(v)&&lt(b)&&v[g]===b[g])return;n.setSelected()}}),ye(()=>r.disabled,()=>{t.groupDisabled=r.disabled},{immediate:!0}),{select:n,currentLabel:a,currentValue:i,itemSelected:s,isDisabled:l,hoverItem:d,updateOption:h}}const xK=ee({name:\"ElOption\",componentName:\"ElOption\",props:{value:{required:!0,type:[String,Number,Boolean,Object]},label:[String,Number],created:Boolean,disabled:Boolean},setup(e){const t=we(\"select\"),n=Sn(),r=O(()=>[t.be(\"dropdown\",\"item\"),t.is(\"disabled\",c(i)),t.is(\"selected\",c(a)),t.is(\"hovering\",c(h))]),s=St({index:-1,groupDisabled:!1,visible:!0,hover:!1}),{currentLabel:o,itemSelected:a,isDisabled:i,select:l,hoverItem:u,updateOption:f}=RK(e,s),{visible:d,hover:h}=hn(s),v=ct().proxy;l.onOptionCreate(v),Pt(()=>{const p=v.value,{selected:g}=l.states,m=g.some(y=>y.value===v.value);je(()=>{l.states.cachedOptions.get(p)===v&&!m&&l.states.cachedOptions.delete(p)}),l.onOptionDestroy(p,v)});function b(){i.value||l.handleOptionSelect(v)}return{ns:t,id:n,containerKls:r,currentLabel:o,itemSelected:a,isDisabled:i,select:l,hoverItem:u,updateOption:f,visible:d,hover:h,selectOptionClick:b,states:s}}});function OK(e,t,n,r,s,o){return st(($(),X(\"li\",{id:e.id,class:D(e.containerKls),role:\"option\",\"aria-disabled\":e.isDisabled||void 0,\"aria-selected\":e.itemSelected,onMousemove:e.hoverItem,onClick:Xe(e.selectOptionClick,[\"stop\"])},[ue(e.$slots,\"default\",{},()=>[Z(\"span\",null,Ee(e.currentLabel),1)])],42,[\"id\",\"aria-disabled\",\"aria-selected\",\"onMousemove\",\"onClick\"])),[[Et,e.visible]])}var bm=Oe(xK,[[\"render\",OK],[\"__file\",\"option.vue\"]]);const MK=ee({name:\"ElSelectDropdown\",componentName:\"ElSelectDropdown\",setup(){const e=Fe(ma),t=we(\"select\"),n=O(()=>e.props.popperClass),r=O(()=>e.props.multiple),s=O(()=>e.props.fitInputWidth),o=W(\"\");function a(){var i;o.value=`${(i=e.selectRef)==null?void 0:i.offsetWidth}px`}return it(()=>{a(),jt(e.selectRef,a)}),{ns:t,minWidth:o,popperClass:n,isMultiple:r,isFitInputWidth:s}}});function AK(e,t,n,r,s,o){return $(),X(\"div\",{class:D([e.ns.b(\"dropdown\"),e.ns.is(\"multiple\",e.isMultiple),e.popperClass]),style:Ue({[e.isFitInputWidth?\"width\":\"minWidth\"]:e.minWidth})},[e.$slots.header?($(),X(\"div\",{key:0,class:D(e.ns.be(\"dropdown\",\"header\"))},[ue(e.$slots,\"header\")],2)):de(\"v-if\",!0),ue(e.$slots,\"default\"),e.$slots.footer?($(),X(\"div\",{key:1,class:D(e.ns.be(\"dropdown\",\"footer\"))},[ue(e.$slots,\"footer\")],2)):de(\"v-if\",!0)],6)}var $K=Oe(MK,[[\"render\",AK],[\"__file\",\"select-dropdown.vue\"]]);const LK=11,IK=(e,t)=>{const{t:n}=yt(),r=Sn(),s=we(\"select\"),o=we(\"input\"),a=St({inputValue:\"\",options:new Map,cachedOptions:new Map,optionValues:[],selected:[],selectionWidth:0,calculatorWidth:0,collapseItemWidth:0,selectedLabel:\"\",hoveringIndex:-1,previousQuery:null,inputHovering:!1,menuVisibleOnFocus:!1,isBeforeHide:!1}),i=W(null),l=W(null),u=W(null),f=W(null),d=W(null),h=W(null),v=W(null),b=W(null),p=W(null),g=W(null),m=W(null),y=W(null),{isComposing:_,handleCompositionStart:w,handleCompositionUpdate:S,handleCompositionEnd:C}=ql({afterComposition:De=>at(De)}),{wrapperRef:E,isFocused:k,handleBlur:T}=_o(d,{beforeFocus(){return j.value},afterFocus(){e.automaticDropdown&&!x.value&&(x.value=!0,a.menuVisibleOnFocus=!0)},beforeBlur(De){var Ze,Ot;return((Ze=u.value)==null?void 0:Ze.isFocusInsideContent(De))||((Ot=f.value)==null?void 0:Ot.isFocusInsideContent(De))},afterBlur(){x.value=!1,a.menuVisibleOnFocus=!1}}),x=W(!1),M=W(),{form:A,formItem:P}=xn(),{inputId:G}=Cr(e,{formItemContext:P}),{valueOnClear:V,isEmptyValue:I}=Sd(e),j=O(()=>e.disabled||(A==null?void 0:A.disabled)),F=O(()=>ke(e.modelValue)?e.modelValue.length>0:!I(e.modelValue)),R=O(()=>{var De;return(De=A==null?void 0:A.statusIcon)!=null?De:!1}),B=O(()=>e.clearable&&!j.value&&a.inputHovering&&F.value),N=O(()=>e.remote&&e.filterable&&!e.remoteShowSuffix?\"\":e.suffixIcon),U=O(()=>s.is(\"reverse\",N.value&&x.value)),J=O(()=>(P==null?void 0:P.validateState)||\"\"),re=O(()=>Td[J.value]),le=O(()=>e.remote?300:0),pe=O(()=>e.loading?e.loadingText||n(\"el.select.loading\"):e.remote&&!a.inputValue&&a.options.size===0?!1:e.filterable&&a.inputValue&&a.options.size>0&&K.value===0?e.noMatchText||n(\"el.select.noMatch\"):a.options.size===0?e.noDataText||n(\"el.select.noData\"):null),K=O(()=>z.value.filter(De=>De.visible).length),z=O(()=>{const De=Array.from(a.options.values()),Ze=[];return a.optionValues.forEach(Ot=>{const ln=De.findIndex(Mn=>Mn.value===Ot);ln>-1&&Ze.push(De[ln])}),Ze.length>=De.length?Ze:De}),te=O(()=>Array.from(a.cachedOptions.values())),oe=O(()=>{const De=z.value.filter(Ze=>!Ze.created).some(Ze=>Ze.currentLabel===a.inputValue);return e.filterable&&e.allowCreate&&a.inputValue!==\"\"&&!De}),he=()=>{e.filterable&&Ke(e.filterMethod)||e.filterable&&e.remote&&Ke(e.remoteMethod)||z.value.forEach(De=>{var Ze;(Ze=De.updateOption)==null||Ze.call(De,a.inputValue)})},Y=sn(),L=O(()=>[\"small\"].includes(Y.value)?\"small\":\"default\"),Q=O({get(){return x.value&&pe.value!==!1},set(De){x.value=De}}),se=O(()=>{if(e.multiple&&!Lt(e.modelValue))return Pn(e.modelValue).length===0&&!a.inputValue;const De=ke(e.modelValue)?e.modelValue[0]:e.modelValue;return e.filterable||Lt(De)?!a.inputValue:!0}),ge=O(()=>{var De;const Ze=(De=e.placeholder)!=null?De:n(\"el.select.placeholder\");return e.multiple||!F.value?Ze:a.selectedLabel}),ae=O(()=>xh?null:\"mouseenter\");ye(()=>e.modelValue,(De,Ze)=>{e.multiple&&e.filterable&&!e.reserveKeyword&&(a.inputValue=\"\",_e(\"\")),Ce(),!wn(De,Ze)&&e.validateEvent&&(P==null||P.validate(\"change\").catch(Ot=>void 0))},{flush:\"post\",deep:!0}),ye(()=>x.value,De=>{De?_e(a.inputValue):(a.inputValue=\"\",a.previousQuery=null,a.isBeforeHide=!0),t(\"visible-change\",De)}),ye(()=>a.options.entries(),()=>{bt&&(Ce(),e.defaultFirstOption&&(e.filterable||e.remote)&&K.value&&me())},{flush:\"post\"}),ye(()=>a.hoveringIndex,De=>{Ge(De)&&De>-1?M.value=z.value[De]||{}:M.value={},z.value.forEach(Ze=>{Ze.hover=M.value===Ze})}),En(()=>{a.isBeforeHide||he()});const _e=De=>{a.previousQuery===De||_.value||(a.previousQuery=De,e.filterable&&Ke(e.filterMethod)?e.filterMethod(De):e.filterable&&e.remote&&Ke(e.remoteMethod)&&e.remoteMethod(De),e.defaultFirstOption&&(e.filterable||e.remote)&&K.value?je(me):je(Se))},me=()=>{const De=z.value.filter(Mn=>Mn.visible&&!Mn.disabled&&!Mn.states.groupDisabled),Ze=De.find(Mn=>Mn.created),Ot=De[0],ln=z.value.map(Mn=>Mn.value);a.hoveringIndex=Pe(ln,Ze||Ot)},Ce=()=>{if(e.multiple)a.selectedLabel=\"\";else{const Ze=ke(e.modelValue)?e.modelValue[0]:e.modelValue,Ot=Te(Ze);a.selectedLabel=Ot.currentLabel,a.selected=[Ot];return}const De=[];Lt(e.modelValue)||Pn(e.modelValue).forEach(Ze=>{De.push(Te(Ze))}),a.selected=De},Te=De=>{let Ze;const Ot=el(De);for(let Is=a.cachedOptions.size-1;Is>=0;Is--){const Wr=te.value[Is];if(Ot?rn(Wr.value,e.valueKey)===rn(De,e.valueKey):Wr.value===De){Ze={value:De,currentLabel:Wr.currentLabel,get isDisabled(){return Wr.isDisabled}};break}}if(Ze)return Ze;const ln=Ot?De.label:De??\"\";return{value:De,currentLabel:ln}},Se=()=>{a.hoveringIndex=z.value.findIndex(De=>a.selected.some(Ze=>yo(Ze)===yo(De)))},Ie=()=>{a.selectionWidth=l.value.getBoundingClientRect().width},be=()=>{a.calculatorWidth=h.value.getBoundingClientRect().width},Ae=()=>{a.collapseItemWidth=m.value.getBoundingClientRect().width},qe=()=>{var De,Ze;(Ze=(De=u.value)==null?void 0:De.updatePopper)==null||Ze.call(De)},tt=()=>{var De,Ze;(Ze=(De=f.value)==null?void 0:De.updatePopper)==null||Ze.call(De)},et=()=>{a.inputValue.length>0&&!x.value&&(x.value=!0),_e(a.inputValue)},at=De=>{if(a.inputValue=De.target.value,e.remote)ht();else return et()},ht=nr(()=>{et()},le.value),Ct=De=>{wn(e.modelValue,De)||t(Bt,De)},fe=De=>yS(De,Ze=>{const Ot=a.cachedOptions.get(Ze);return Ot&&!Ot.disabled&&!Ot.states.groupDisabled}),$e=De=>{if(e.multiple&&De.code!==Ne.delete&&De.target.value.length<=0){const Ze=Pn(e.modelValue).slice(),Ot=fe(Ze);if(Ot<0)return;const ln=Ze[Ot];Ze.splice(Ot,1),t(ot,Ze),Ct(Ze),t(\"remove-tag\",ln)}},ce=(De,Ze)=>{const Ot=a.selected.indexOf(Ze);if(Ot>-1&&!j.value){const ln=Pn(e.modelValue).slice();ln.splice(Ot,1),t(ot,ln),Ct(ln),t(\"remove-tag\",Ze.value)}De.stopPropagation(),qt()},Re=De=>{De.stopPropagation();const Ze=e.multiple?[]:V.value;if(e.multiple)for(const Ot of a.selected)Ot.isDisabled&&Ze.push(Ot.value);t(ot,Ze),Ct(Ze),a.hoveringIndex=-1,x.value=!1,t(\"clear\"),qt()},ne=De=>{var Ze;if(e.multiple){const Ot=Pn((Ze=e.modelValue)!=null?Ze:[]).slice(),ln=Pe(Ot,De);ln>-1?Ot.splice(ln,1):(e.multipleLimit<=0||Ot.length<e.multipleLimit)&&Ot.push(De.value),t(ot,Ot),Ct(Ot),De.created&&_e(\"\"),e.filterable&&!e.reserveKeyword&&(a.inputValue=\"\")}else t(ot,De.value),Ct(De.value),x.value=!1;qt(),!x.value&&je(()=>{rt(De)})},Pe=(De=[],Ze)=>Lt(Ze)?-1:lt(Ze.value)?De.findIndex(Ot=>wn(rn(Ot,e.valueKey),yo(Ze))):De.indexOf(Ze.value),rt=De=>{var Ze,Ot,ln,Mn,Is;const Wr=ke(De)?De[0]:De;let Ps=null;if(Wr!=null&&Wr.value){const wo=z.value.filter(ya=>ya.value===Wr.value);wo.length>0&&(Ps=wo[0].$el)}if(u.value&&Ps){const wo=(Mn=(ln=(Ot=(Ze=u.value)==null?void 0:Ze.popperRef)==null?void 0:Ot.contentRef)==null?void 0:ln.querySelector)==null?void 0:Mn.call(ln,`.${s.be(\"dropdown\",\"wrap\")}`);wo&&Ov(wo,Ps)}(Is=y.value)==null||Is.handleScroll()},mt=De=>{a.options.set(De.value,De),a.cachedOptions.set(De.value,De)},Me=(De,Ze)=>{a.options.get(De)===Ze&&a.options.delete(De)},xt=O(()=>{var De,Ze;return(Ze=(De=u.value)==null?void 0:De.popperRef)==null?void 0:Ze.contentRef}),nn=()=>{a.isBeforeHide=!1,je(()=>rt(a.selected))},qt=()=>{var De;(De=d.value)==null||De.focus()},_t=()=>{var De;if(x.value){x.value=!1,je(()=>{var Ze;return(Ze=d.value)==null?void 0:Ze.blur()});return}(De=d.value)==null||De.blur()},Nn=De=>{Re(De)},nc=De=>{if(x.value=!1,k.value){const Ze=new FocusEvent(\"focus\",De);je(()=>T(Ze))}},rc=()=>{a.inputValue.length>0?a.inputValue=\"\":x.value=!1},sc=()=>{j.value||(xh&&(a.inputHovering=!0),a.menuVisibleOnFocus?a.menuVisibleOnFocus=!1:x.value=!x.value)},ba=()=>{if(!x.value)sc();else{const De=z.value[a.hoveringIndex];De&&!De.isDisabled&&ne(De)}},yo=De=>lt(De.value)?rn(De.value,e.valueKey):De.value,oc=O(()=>z.value.filter(De=>De.visible).every(De=>De.isDisabled)),Kd=O(()=>e.multiple?e.collapseTags?a.selected.slice(0,e.maxCollapseTags):a.selected:[]),ii=O(()=>e.multiple?e.collapseTags?a.selected.slice(e.maxCollapseTags):[]:[]),ic=De=>{if(!x.value){x.value=!0;return}if(!(a.options.size===0||K.value===0||_.value)&&!oc.value){De===\"next\"?(a.hoveringIndex++,a.hoveringIndex===a.options.size&&(a.hoveringIndex=0)):De===\"prev\"&&(a.hoveringIndex--,a.hoveringIndex<0&&(a.hoveringIndex=a.options.size-1));const Ze=z.value[a.hoveringIndex];(Ze.isDisabled||!Ze.visible)&&ic(De),je(()=>rt(M.value))}},jd=()=>{if(!l.value)return 0;const De=window.getComputedStyle(l.value);return Number.parseFloat(De.gap||\"6px\")},Ud=O(()=>{const De=jd();return{maxWidth:`${m.value&&e.maxCollapseTags===1?a.selectionWidth-a.collapseItemWidth-De:a.selectionWidth}px`}}),qd=O(()=>({maxWidth:`${a.selectionWidth}px`})),Yd=O(()=>({width:`${Math.max(a.calculatorWidth,LK)}px`}));return jt(l,Ie),jt(h,be),jt(p,qe),jt(E,qe),jt(g,tt),jt(m,Ae),it(()=>{Ce()}),{inputId:G,contentId:r,nsSelect:s,nsInput:o,states:a,isFocused:k,expanded:x,optionsArray:z,hoverOption:M,selectSize:Y,filteredOptionsCount:K,resetCalculatorWidth:be,updateTooltip:qe,updateTagTooltip:tt,debouncedOnInputChange:ht,onInput:at,deletePrevTag:$e,deleteTag:ce,deleteSelected:Re,handleOptionSelect:ne,scrollToOption:rt,hasModelValue:F,shouldShowPlaceholder:se,currentPlaceholder:ge,mouseEnterEventName:ae,needStatusIcon:R,showClose:B,iconComponent:N,iconReverse:U,validateState:J,validateIcon:re,showNewOption:oe,updateOptions:he,collapseTagSize:L,setSelected:Ce,selectDisabled:j,emptyText:pe,handleCompositionStart:w,handleCompositionUpdate:S,handleCompositionEnd:C,onOptionCreate:mt,onOptionDestroy:Me,handleMenuEnter:nn,focus:qt,blur:_t,handleClearClick:Nn,handleClickOutside:nc,handleEsc:rc,toggleMenu:sc,selectOption:ba,getValueKey:yo,navigateOptions:ic,dropdownMenuVisible:Q,showTagList:Kd,collapseTagList:ii,tagStyle:Ud,collapseTagStyle:qd,inputStyle:Yd,popperRef:xt,inputRef:d,tooltipRef:u,tagTooltipRef:f,calculatorRef:h,prefixRef:v,suffixRef:b,selectRef:i,wrapperRef:E,selectionRef:l,scrollbarRef:y,menuRef:p,tagMenuRef:g,collapseItemRef:m}};var PK=ee({name:\"ElOptions\",setup(e,{slots:t}){const n=Fe(ma);let r=[];return()=>{var s,o;const a=(s=t.default)==null?void 0:s.call(t),i=[];function l(u){ke(u)&&u.forEach(f=>{var d,h,v,b;const p=(d=(f==null?void 0:f.type)||{})==null?void 0:d.name;p===\"ElOptionGroup\"?l(!ze(f.children)&&!ke(f.children)&&Ke((h=f.children)==null?void 0:h.default)?(v=f.children)==null?void 0:v.default():f.children):p===\"ElOption\"?i.push((b=f.props)==null?void 0:b.value):ke(f.children)&&l(f.children)})}return a.length&&l((o=a[0])==null?void 0:o.children),wn(i,r)||(r=i,n&&(n.states.optionValues=i)),a}}});const DK=xe({name:String,id:String,modelValue:{type:[Array,String,Number,Boolean,Object],default:void 0},autocomplete:{type:String,default:\"off\"},automaticDropdown:Boolean,size:on,effect:{type:ie(String),default:\"light\"},disabled:Boolean,clearable:Boolean,filterable:Boolean,allowCreate:Boolean,loading:Boolean,popperClass:{type:String,default:\"\"},popperOptions:{type:ie(Object),default:()=>({})},remote:Boolean,loadingText:String,noMatchText:String,noDataText:String,remoteMethod:Function,filterMethod:Function,multiple:Boolean,multipleLimit:{type:Number,default:0},placeholder:{type:String},defaultFirstOption:Boolean,reserveKeyword:{type:Boolean,default:!0},valueKey:{type:String,default:\"value\"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},teleported:pn.teleported,persistent:{type:Boolean,default:!0},clearIcon:{type:Nt,default:as},fitInputWidth:Boolean,suffixIcon:{type:Nt,default:As},tagType:{...ks.type,default:\"info\"},tagEffect:{...ks.effect,default:\"light\"},validateEvent:{type:Boolean,default:!0},remoteShowSuffix:Boolean,showArrow:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:ie(String),values:$s,default:\"bottom-start\"},fallbackPlacements:{type:ie(Array),default:[\"bottom-start\",\"top-start\",\"right\",\"left\"]},tabindex:{type:[String,Number],default:0},appendTo:String,...fa,...kn([\"ariaLabel\"])}),kb=\"ElSelect\",BK=ee({name:kb,componentName:kb,components:{ElSelectMenu:$K,ElOption:bm,ElOptions:PK,ElTag:Yi,ElScrollbar:ls,ElTooltip:Cn,ElIcon:He},directives:{ClickOutside:Es},props:DK,emits:[ot,Bt,\"remove-tag\",\"clear\",\"visible-change\",\"focus\",\"blur\"],setup(e,{emit:t}){const n=O(()=>{const{modelValue:a,multiple:i}=e,l=i?[]:void 0;return ke(a)?i?a:l:i?l:a}),r=St({...hn(e),modelValue:n}),s=IK(r,t);pt(ma,St({props:r,states:s.states,optionsArray:s.optionsArray,handleOptionSelect:s.handleOptionSelect,onOptionCreate:s.onOptionCreate,onOptionDestroy:s.onOptionDestroy,selectRef:s.selectRef,setSelected:s.setSelected}));const o=O(()=>e.multiple?s.states.selected.map(a=>a.currentLabel):s.states.selectedLabel);return{...s,modelValue:n,selectedLabel:o}}});function NK(e,t,n,r,s,o){const a=ut(\"el-tag\"),i=ut(\"el-tooltip\"),l=ut(\"el-icon\"),u=ut(\"el-option\"),f=ut(\"el-options\"),d=ut(\"el-scrollbar\"),h=ut(\"el-select-menu\"),v=ed(\"click-outside\");return st(($(),X(\"div\",{ref:\"selectRef\",class:D([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),[Ba(e.mouseEnterEventName)]:b=>e.states.inputHovering=!0,onMouseleave:b=>e.states.inputHovering=!1},[H(i,{ref:\"tooltipRef\",visible:e.dropdownMenuVisible,placement:e.placement,teleported:e.teleported,\"popper-class\":[e.nsSelect.e(\"popper\"),e.popperClass],\"popper-options\":e.popperOptions,\"fallback-placements\":e.fallbackPlacements,effect:e.effect,pure:\"\",trigger:\"click\",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,\"stop-popper-mouse-event\":!1,\"gpu-acceleration\":!1,persistent:e.persistent,\"append-to\":e.appendTo,\"show-arrow\":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:b=>e.states.isBeforeHide=!1},{default:q(()=>{var b;return[Z(\"div\",{ref:\"wrapperRef\",class:D([e.nsSelect.e(\"wrapper\"),e.nsSelect.is(\"focused\",e.isFocused),e.nsSelect.is(\"hovering\",e.states.inputHovering),e.nsSelect.is(\"filterable\",e.filterable),e.nsSelect.is(\"disabled\",e.selectDisabled)]),onClick:Xe(e.toggleMenu,[\"prevent\"])},[e.$slots.prefix?($(),X(\"div\",{key:0,ref:\"prefixRef\",class:D(e.nsSelect.e(\"prefix\"))},[ue(e.$slots,\"prefix\")],2)):de(\"v-if\",!0),Z(\"div\",{ref:\"selectionRef\",class:D([e.nsSelect.e(\"selection\"),e.nsSelect.is(\"near\",e.multiple&&!e.$slots.prefix&&!!e.states.selected.length)])},[e.multiple?ue(e.$slots,\"tag\",{key:0},()=>[($(!0),X(We,null,vt(e.showTagList,p=>($(),X(\"div\",{key:e.getValueKey(p),class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{closable:!e.selectDisabled&&!p.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,\"disable-transitions\":\"\",style:Ue(e.tagStyle),onClose:g=>e.deleteTag(g,p)},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},[ue(e.$slots,\"label\",{label:p.currentLabel,value:p.value},()=>[Ve(Ee(p.currentLabel),1)])],2)]),_:2},1032,[\"closable\",\"size\",\"type\",\"effect\",\"style\",\"onClose\"])],2))),128)),e.collapseTags&&e.states.selected.length>e.maxCollapseTags?($(),ve(i,{key:0,ref:\"tagTooltipRef\",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,\"fallback-placements\":[\"bottom\",\"top\",\"right\",\"left\"],effect:e.effect,placement:\"bottom\",teleported:e.teleported},{default:q(()=>[Z(\"div\",{ref:\"collapseItemRef\",class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,\"disable-transitions\":\"\",style:Ue(e.collapseTagStyle)},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},\" + \"+Ee(e.states.selected.length-e.maxCollapseTags),3)]),_:1},8,[\"size\",\"type\",\"effect\",\"style\"])],2)]),content:q(()=>[Z(\"div\",{ref:\"tagMenuRef\",class:D(e.nsSelect.e(\"selection\"))},[($(!0),X(We,null,vt(e.collapseTagList,p=>($(),X(\"div\",{key:e.getValueKey(p),class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{class:\"in-tooltip\",closable:!e.selectDisabled&&!p.isDisabled,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,\"disable-transitions\":\"\",onClose:g=>e.deleteTag(g,p)},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},[ue(e.$slots,\"label\",{label:p.currentLabel,value:p.value},()=>[Ve(Ee(p.currentLabel),1)])],2)]),_:2},1032,[\"closable\",\"size\",\"type\",\"effect\",\"onClose\"])],2))),128))],2)]),_:3},8,[\"disabled\",\"effect\",\"teleported\"])):de(\"v-if\",!0)]):de(\"v-if\",!0),Z(\"div\",{class:D([e.nsSelect.e(\"selected-item\"),e.nsSelect.e(\"input-wrapper\"),e.nsSelect.is(\"hidden\",!e.filterable)])},[st(Z(\"input\",{id:e.inputId,ref:\"inputRef\",\"onUpdate:modelValue\":p=>e.states.inputValue=p,type:\"text\",name:e.name,class:D([e.nsSelect.e(\"input\"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,autocomplete:e.autocomplete,style:Ue(e.inputStyle),tabindex:e.tabindex,role:\"combobox\",readonly:!e.filterable,spellcheck:\"false\",\"aria-activedescendant\":((b=e.hoverOption)==null?void 0:b.id)||\"\",\"aria-controls\":e.contentId,\"aria-expanded\":e.dropdownMenuVisible,\"aria-label\":e.ariaLabel,\"aria-autocomplete\":\"none\",\"aria-haspopup\":\"listbox\",onKeydown:[Ht(Xe(p=>e.navigateOptions(\"next\"),[\"stop\",\"prevent\"]),[\"down\"]),Ht(Xe(p=>e.navigateOptions(\"prev\"),[\"stop\",\"prevent\"]),[\"up\"]),Ht(Xe(e.handleEsc,[\"stop\",\"prevent\"]),[\"esc\"]),Ht(Xe(e.selectOption,[\"stop\",\"prevent\"]),[\"enter\"]),Ht(Xe(e.deletePrevTag,[\"stop\"]),[\"delete\"])],onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onInput:e.onInput,onClick:Xe(e.toggleMenu,[\"stop\"])},null,46,[\"id\",\"onUpdate:modelValue\",\"name\",\"disabled\",\"autocomplete\",\"tabindex\",\"readonly\",\"aria-activedescendant\",\"aria-controls\",\"aria-expanded\",\"aria-label\",\"onKeydown\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\",\"onInput\",\"onClick\"]),[[rd,e.states.inputValue]]),e.filterable?($(),X(\"span\",{key:0,ref:\"calculatorRef\",\"aria-hidden\":\"true\",class:D(e.nsSelect.e(\"input-calculator\")),textContent:Ee(e.states.inputValue)},null,10,[\"textContent\"])):de(\"v-if\",!0)],2),e.shouldShowPlaceholder?($(),X(\"div\",{key:1,class:D([e.nsSelect.e(\"selected-item\"),e.nsSelect.e(\"placeholder\"),e.nsSelect.is(\"transparent\",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?ue(e.$slots,\"label\",{key:0,label:e.currentPlaceholder,value:e.modelValue},()=>[Z(\"span\",null,Ee(e.currentPlaceholder),1)]):($(),X(\"span\",{key:1},Ee(e.currentPlaceholder),1))],2)):de(\"v-if\",!0)],2),Z(\"div\",{ref:\"suffixRef\",class:D(e.nsSelect.e(\"suffix\"))},[e.iconComponent&&!e.showClose?($(),ve(l,{key:0,class:D([e.nsSelect.e(\"caret\"),e.nsSelect.e(\"icon\"),e.iconReverse])},{default:q(()=>[($(),ve(dt(e.iconComponent)))]),_:1},8,[\"class\"])):de(\"v-if\",!0),e.showClose&&e.clearIcon?($(),ve(l,{key:1,class:D([e.nsSelect.e(\"caret\"),e.nsSelect.e(\"icon\"),e.nsSelect.e(\"clear\")]),onClick:e.handleClearClick},{default:q(()=>[($(),ve(dt(e.clearIcon)))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?($(),ve(l,{key:2,class:D([e.nsInput.e(\"icon\"),e.nsInput.e(\"validateIcon\")])},{default:q(()=>[($(),ve(dt(e.validateIcon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2)],10,[\"onClick\"])]}),content:q(()=>[H(h,{ref:\"menuRef\"},{default:q(()=>[e.$slots.header?($(),X(\"div\",{key:0,class:D(e.nsSelect.be(\"dropdown\",\"header\")),onClick:Xe(()=>{},[\"stop\"])},[ue(e.$slots,\"header\")],10,[\"onClick\"])):de(\"v-if\",!0),st(H(d,{id:e.contentId,ref:\"scrollbarRef\",tag:\"ul\",\"wrap-class\":e.nsSelect.be(\"dropdown\",\"wrap\"),\"view-class\":e.nsSelect.be(\"dropdown\",\"list\"),class:D([e.nsSelect.is(\"empty\",e.filteredOptionsCount===0)]),role:\"listbox\",\"aria-label\":e.ariaLabel,\"aria-orientation\":\"vertical\"},{default:q(()=>[e.showNewOption?($(),ve(u,{key:0,value:e.states.inputValue,created:!0},null,8,[\"value\"])):de(\"v-if\",!0),H(f,null,{default:q(()=>[ue(e.$slots,\"default\")]),_:3})]),_:3},8,[\"id\",\"wrap-class\",\"view-class\",\"class\",\"aria-label\"]),[[Et,e.states.options.size>0&&!e.loading]]),e.$slots.loading&&e.loading?($(),X(\"div\",{key:1,class:D(e.nsSelect.be(\"dropdown\",\"loading\"))},[ue(e.$slots,\"loading\")],2)):e.loading||e.filteredOptionsCount===0?($(),X(\"div\",{key:2,class:D(e.nsSelect.be(\"dropdown\",\"empty\"))},[ue(e.$slots,\"empty\",{},()=>[Z(\"span\",null,Ee(e.emptyText),1)])],2)):de(\"v-if\",!0),e.$slots.footer?($(),X(\"div\",{key:3,class:D(e.nsSelect.be(\"dropdown\",\"footer\")),onClick:Xe(()=>{},[\"stop\"])},[ue(e.$slots,\"footer\")],10,[\"onClick\"])):de(\"v-if\",!0)]),_:3},512)]),_:3},8,[\"visible\",\"placement\",\"teleported\",\"popper-class\",\"popper-options\",\"fallback-placements\",\"effect\",\"transition\",\"persistent\",\"append-to\",\"show-arrow\",\"offset\",\"onBeforeShow\",\"onHide\"])],16,[\"onMouseleave\"])),[[v,e.handleClickOutside,e.popperRef]])}var FK=Oe(BK,[[\"render\",NK],[\"__file\",\"select.vue\"]]);const HK=ee({name:\"ElOptionGroup\",componentName:\"ElOptionGroup\",props:{label:String,disabled:Boolean},setup(e){const t=we(\"select\"),n=W(null),r=ct(),s=W([]);pt(G2,St({...hn(e)}));const o=O(()=>s.value.some(u=>u.visible===!0)),a=u=>{var f,d;return((f=u.type)==null?void 0:f.name)===\"ElOption\"&&!!((d=u.component)!=null&&d.proxy)},i=u=>{const f=Pn(u),d=[];return f.forEach(h=>{var v,b;a(h)?d.push(h.component.proxy):(v=h.children)!=null&&v.length?d.push(...i(h.children)):(b=h.component)!=null&&b.subTree&&d.push(...i(h.component.subTree))}),d},l=()=>{s.value=i(r.subTree)};return it(()=>{l()}),RS(n,l,{attributes:!0,subtree:!0,childList:!0}),{groupRef:n,visible:o,ns:t}}});function VK(e,t,n,r,s,o){return st(($(),X(\"ul\",{ref:\"groupRef\",class:D(e.ns.be(\"group\",\"wrap\"))},[Z(\"li\",{class:D(e.ns.be(\"group\",\"title\"))},Ee(e.label),3),Z(\"li\",null,[Z(\"ul\",{class:D(e.ns.b(\"group\"))},[ue(e.$slots,\"default\")],2)])],2)),[[Et,e.visible]])}var X2=Oe(HK,[[\"render\",VK],[\"__file\",\"option-group.vue\"]]);const fo=Qe(FK,{Option:bm,OptionGroup:X2}),wl=Gt(bm),zK=Gt(X2),ym=()=>Fe(Y2,{}),WK=xe({pageSize:{type:Number,required:!0},pageSizes:{type:ie(Array),default:()=>Yt([10,20,30,40,50,100])},popperClass:{type:String},disabled:Boolean,teleported:Boolean,size:{type:String,values:is},appendSizeTo:String}),KK=ee({name:\"ElPaginationSizes\"}),jK=ee({...KK,props:WK,emits:[\"page-size-change\"],setup(e,{emit:t}){const n=e,{t:r}=yt(),s=we(\"pagination\"),o=ym(),a=W(n.pageSize);ye(()=>n.pageSizes,(u,f)=>{if(!wn(u,f)&&ke(u)){const d=u.includes(n.pageSize)?n.pageSize:n.pageSizes[0];t(\"page-size-change\",d)}}),ye(()=>n.pageSize,u=>{a.value=u});const i=O(()=>n.pageSizes);function l(u){var f;u!==a.value&&(a.value=u,(f=o.handleSizeChange)==null||f.call(o,Number(u)))}return(u,f)=>($(),X(\"span\",{class:D(c(s).e(\"sizes\"))},[H(c(fo),{\"model-value\":a.value,disabled:u.disabled,\"popper-class\":u.popperClass,size:u.size,teleported:u.teleported,\"validate-event\":!1,\"append-to\":u.appendSizeTo,onChange:l},{default:q(()=>[($(!0),X(We,null,vt(c(i),d=>($(),ve(c(wl),{key:d,value:d,label:d+c(r)(\"el.pagination.pagesize\")},null,8,[\"value\",\"label\"]))),128))]),_:1},8,[\"model-value\",\"disabled\",\"popper-class\",\"size\",\"teleported\",\"append-to\"])],2))}});var UK=Oe(jK,[[\"__file\",\"sizes.vue\"]]);const qK=xe({size:{type:String,values:is}}),YK=ee({name:\"ElPaginationJumper\"}),GK=ee({...YK,props:qK,setup(e){const{t}=yt(),n=we(\"pagination\"),{pageCount:r,disabled:s,currentPage:o,changeEvent:a}=ym(),i=W(),l=O(()=>{var d;return(d=i.value)!=null?d:o==null?void 0:o.value});function u(d){i.value=d?+d:\"\"}function f(d){d=Math.trunc(+d),a==null||a(d),i.value=void 0}return(d,h)=>($(),X(\"span\",{class:D(c(n).e(\"jump\")),disabled:c(s)},[Z(\"span\",{class:D([c(n).e(\"goto\")])},Ee(c(t)(\"el.pagination.goto\")),3),H(c(yn),{size:d.size,class:D([c(n).e(\"editor\"),c(n).is(\"in-pagination\")]),min:1,max:c(r),disabled:c(s),\"model-value\":c(l),\"validate-event\":!1,\"aria-label\":c(t)(\"el.pagination.page\"),type:\"number\",\"onUpdate:modelValue\":u,onChange:f},null,8,[\"size\",\"class\",\"max\",\"disabled\",\"model-value\",\"aria-label\"]),Z(\"span\",{class:D([c(n).e(\"classifier\")])},Ee(c(t)(\"el.pagination.pageClassifier\")),3)],10,[\"disabled\"]))}});var XK=Oe(GK,[[\"__file\",\"jumper.vue\"]]);const JK=xe({total:{type:Number,default:1e3}}),ZK=ee({name:\"ElPaginationTotal\"}),QK=ee({...ZK,props:JK,setup(e){const{t}=yt(),n=we(\"pagination\"),{disabled:r}=ym();return(s,o)=>($(),X(\"span\",{class:D(c(n).e(\"total\")),disabled:c(r)},Ee(c(t)(\"el.pagination.total\",{total:s.total})),11,[\"disabled\"]))}});var ej=Oe(QK,[[\"__file\",\"total.vue\"]]);const tj=xe({currentPage:{type:Number,default:1},pageCount:{type:Number,required:!0},pagerCount:{type:Number,default:7},disabled:Boolean}),nj=ee({name:\"ElPaginationPager\"}),rj=ee({...nj,props:tj,emits:[\"change\"],setup(e,{emit:t}){const n=e,r=we(\"pager\"),s=we(\"icon\"),{t:o}=yt(),a=W(!1),i=W(!1),l=W(!1),u=W(!1),f=W(!1),d=W(!1),h=O(()=>{const w=n.pagerCount,S=(w-1)/2,C=Number(n.currentPage),E=Number(n.pageCount);let k=!1,T=!1;E>w&&(C>w-S&&(k=!0),C<E-S&&(T=!0));const x=[];if(k&&!T){const M=E-(w-2);for(let A=M;A<E;A++)x.push(A)}else if(!k&&T)for(let M=2;M<w;M++)x.push(M);else if(k&&T){const M=Math.floor(w/2)-1;for(let A=C-M;A<=C+M;A++)x.push(A)}else for(let M=2;M<E;M++)x.push(M);return x}),v=O(()=>[\"more\",\"btn-quickprev\",s.b(),r.is(\"disabled\",n.disabled)]),b=O(()=>[\"more\",\"btn-quicknext\",s.b(),r.is(\"disabled\",n.disabled)]),p=O(()=>n.disabled?-1:0);En(()=>{const w=(n.pagerCount-1)/2;a.value=!1,i.value=!1,n.pageCount>n.pagerCount&&(n.currentPage>n.pagerCount-w&&(a.value=!0),n.currentPage<n.pageCount-w&&(i.value=!0))});function g(w=!1){n.disabled||(w?l.value=!0:u.value=!0)}function m(w=!1){w?f.value=!0:d.value=!0}function y(w){const S=w.target;if(S.tagName.toLowerCase()===\"li\"&&Array.from(S.classList).includes(\"number\")){const C=Number(S.textContent);C!==n.currentPage&&t(\"change\",C)}else S.tagName.toLowerCase()===\"li\"&&Array.from(S.classList).includes(\"more\")&&_(w)}function _(w){const S=w.target;if(S.tagName.toLowerCase()===\"ul\"||n.disabled)return;let C=Number(S.textContent);const E=n.pageCount,k=n.currentPage,T=n.pagerCount-2;S.className.includes(\"more\")&&(S.className.includes(\"quickprev\")?C=k-T:S.className.includes(\"quicknext\")&&(C=k+T)),Number.isNaN(+C)||(C<1&&(C=1),C>E&&(C=E)),C!==k&&t(\"change\",C)}return(w,S)=>($(),X(\"ul\",{class:D(c(r).b()),onClick:_,onKeyup:Ht(y,[\"enter\"])},[w.pageCount>0?($(),X(\"li\",{key:0,class:D([[c(r).is(\"active\",w.currentPage===1),c(r).is(\"disabled\",w.disabled)],\"number\"]),\"aria-current\":w.currentPage===1,\"aria-label\":c(o)(\"el.pagination.currentPage\",{pager:1}),tabindex:c(p)},\" 1 \",10,[\"aria-current\",\"aria-label\",\"tabindex\"])):de(\"v-if\",!0),a.value?($(),X(\"li\",{key:1,class:D(c(v)),tabindex:c(p),\"aria-label\":c(o)(\"el.pagination.prevPages\",{pager:w.pagerCount-2}),onMouseenter:C=>g(!0),onMouseleave:C=>l.value=!1,onFocus:C=>m(!0),onBlur:C=>f.value=!1},[(l.value||f.value)&&!w.disabled?($(),ve(c(lo),{key:0})):($(),ve(c(p_),{key:1}))],42,[\"tabindex\",\"aria-label\",\"onMouseenter\",\"onMouseleave\",\"onFocus\",\"onBlur\"])):de(\"v-if\",!0),($(!0),X(We,null,vt(c(h),C=>($(),X(\"li\",{key:C,class:D([[c(r).is(\"active\",w.currentPage===C),c(r).is(\"disabled\",w.disabled)],\"number\"]),\"aria-current\":w.currentPage===C,\"aria-label\":c(o)(\"el.pagination.currentPage\",{pager:C}),tabindex:c(p)},Ee(C),11,[\"aria-current\",\"aria-label\",\"tabindex\"]))),128)),i.value?($(),X(\"li\",{key:2,class:D(c(b)),tabindex:c(p),\"aria-label\":c(o)(\"el.pagination.nextPages\",{pager:w.pagerCount-2}),onMouseenter:C=>g(),onMouseleave:C=>u.value=!1,onFocus:C=>m(),onBlur:C=>d.value=!1},[(u.value||d.value)&&!w.disabled?($(),ve(c(co),{key:0})):($(),ve(c(p_),{key:1}))],42,[\"tabindex\",\"aria-label\",\"onMouseenter\",\"onMouseleave\",\"onFocus\",\"onBlur\"])):de(\"v-if\",!0),w.pageCount>1?($(),X(\"li\",{key:3,class:D([[c(r).is(\"active\",w.currentPage===w.pageCount),c(r).is(\"disabled\",w.disabled)],\"number\"]),\"aria-current\":w.currentPage===w.pageCount,\"aria-label\":c(o)(\"el.pagination.currentPage\",{pager:w.pageCount}),tabindex:c(p)},Ee(w.pageCount),11,[\"aria-current\",\"aria-label\",\"tabindex\"])):de(\"v-if\",!0)],42,[\"onKeyup\"]))}});var sj=Oe(rj,[[\"__file\",\"pager.vue\"]]);const Hn=e=>typeof e!=\"number\",oj=xe({pageSize:Number,defaultPageSize:Number,total:Number,pageCount:Number,pagerCount:{type:Number,validator:e=>Ge(e)&&Math.trunc(e)===e&&e>4&&e<22&&e%2===1,default:7},currentPage:Number,defaultCurrentPage:Number,layout:{type:String,default:[\"prev\",\"pager\",\"next\",\"jumper\",\"->\",\"total\"].join(\", \")},pageSizes:{type:ie(Array),default:()=>Yt([10,20,30,40,50,100])},popperClass:{type:String,default:\"\"},prevText:{type:String,default:\"\"},prevIcon:{type:Nt,default:()=>ao},nextText:{type:String,default:\"\"},nextIcon:{type:Nt,default:()=>qn},teleported:{type:Boolean,default:!0},small:Boolean,size:on,background:Boolean,disabled:Boolean,hideOnSinglePage:Boolean,appendSizeTo:String}),ij={\"update:current-page\":e=>Ge(e),\"update:page-size\":e=>Ge(e),\"size-change\":e=>Ge(e),change:(e,t)=>Ge(e)&&Ge(t),\"current-change\":e=>Ge(e),\"prev-click\":e=>Ge(e),\"next-click\":e=>Ge(e)},Eb=\"ElPagination\";var aj=ee({name:Eb,props:oj,emits:ij,setup(e,{emit:t,slots:n}){const{t:r}=yt(),s=we(\"pagination\"),o=ct().vnode.props||{},a=IS(),i=O(()=>{var S;return e.small?\"small\":(S=e.size)!=null?S:a.value});Qs({from:\"small\",replacement:\"size\",version:\"3.0.0\",scope:\"el-pagination\",ref:\"https://element-plus.org/zh-CN/component/pagination.html\"},O(()=>!!e.small));const l=\"onUpdate:currentPage\"in o||\"onUpdate:current-page\"in o||\"onCurrentChange\"in o,u=\"onUpdate:pageSize\"in o||\"onUpdate:page-size\"in o||\"onSizeChange\"in o,f=O(()=>{if(Hn(e.total)&&Hn(e.pageCount)||!Hn(e.currentPage)&&!l)return!1;if(e.layout.includes(\"sizes\")){if(Hn(e.pageCount)){if(!Hn(e.total)&&!Hn(e.pageSize)&&!u)return!1}else if(!u)return!1}return!0}),d=W(Hn(e.defaultPageSize)?10:e.defaultPageSize),h=W(Hn(e.defaultCurrentPage)?1:e.defaultCurrentPage),v=O({get(){return Hn(e.pageSize)?d.value:e.pageSize},set(S){Hn(e.pageSize)&&(d.value=S),u&&(t(\"update:page-size\",S),t(\"size-change\",S))}}),b=O(()=>{let S=0;return Hn(e.pageCount)?Hn(e.total)||(S=Math.max(1,Math.ceil(e.total/v.value))):S=e.pageCount,S}),p=O({get(){return Hn(e.currentPage)?h.value:e.currentPage},set(S){let C=S;S<1?C=1:S>b.value&&(C=b.value),Hn(e.currentPage)&&(h.value=C),l&&(t(\"update:current-page\",C),t(\"current-change\",C))}});ye(b,S=>{p.value>S&&(p.value=S)}),ye([p,v],S=>{t(\"change\",...S)},{flush:\"post\"});function g(S){p.value=S}function m(S){v.value=S;const C=b.value;p.value>C&&(p.value=C)}function y(){e.disabled||(p.value-=1,t(\"prev-click\",p.value))}function _(){e.disabled||(p.value+=1,t(\"next-click\",p.value))}function w(S,C){S&&(S.props||(S.props={}),S.props.class=[S.props.class,C].join(\" \"))}return pt(Y2,{pageCount:b,disabled:O(()=>e.disabled),currentPage:p,changeEvent:g,handleSizeChange:m}),()=>{var S,C;if(!f.value)return r(\"el.pagination.deprecationWarning\"),null;if(!e.layout||e.hideOnSinglePage&&b.value<=1)return null;const E=[],k=[],T=Ye(\"div\",{class:s.e(\"rightwrapper\")},k),x={prev:Ye(SK,{disabled:e.disabled,currentPage:p.value,prevText:e.prevText,prevIcon:e.prevIcon,onClick:y}),jumper:Ye(XK,{size:i.value}),pager:Ye(sj,{currentPage:p.value,pageCount:b.value,pagerCount:e.pagerCount,onChange:g,disabled:e.disabled}),next:Ye(TK,{disabled:e.disabled,currentPage:p.value,pageCount:b.value,nextText:e.nextText,nextIcon:e.nextIcon,onClick:_}),sizes:Ye(UK,{pageSize:v.value,pageSizes:e.pageSizes,popperClass:e.popperClass,disabled:e.disabled,teleported:e.teleported,size:i.value,appendSizeTo:e.appendSizeTo}),slot:(C=(S=n==null?void 0:n.default)==null?void 0:S.call(n))!=null?C:null,total:Ye(ej,{total:Hn(e.total)?0:e.total})},M=e.layout.split(\",\").map(P=>P.trim());let A=!1;return M.forEach(P=>{if(P===\"->\"){A=!0;return}A?k.push(x[P]):E.push(x[P])}),w(E[0],s.is(\"first\")),w(E[E.length-1],s.is(\"last\")),A&&k.length>0&&(w(k[0],s.is(\"first\")),w(k[k.length-1],s.is(\"last\")),E.push(T)),Ye(\"div\",{class:[s.b(),s.is(\"background\",e.background),s.m(i.value)]},E)}}});const lj=Qe(aj),cj=xe({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:Ah,default:\"primary\"},cancelButtonType:{type:String,values:Ah,default:\"text\"},icon:{type:Nt,default:()=>z6},iconColor:{type:String,default:\"#f90\"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},teleported:pn.teleported,persistent:pn.persistent,width:{type:[String,Number],default:150}}),uj={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},dj=ee({name:\"ElPopconfirm\"}),fj=ee({...dj,props:cj,emits:uj,setup(e,{emit:t}){const n=e,{t:r}=yt(),s=we(\"popconfirm\"),o=W(),a=()=>{var h,v;(v=(h=o.value)==null?void 0:h.onClose)==null||v.call(h)},i=O(()=>({width:en(n.width)})),l=h=>{t(\"confirm\",h),a()},u=h=>{t(\"cancel\",h),a()},f=O(()=>n.confirmButtonText||r(\"el.popconfirm.confirmButtonText\")),d=O(()=>n.cancelButtonText||r(\"el.popconfirm.cancelButtonText\"));return(h,v)=>($(),ve(c(Cn),ft({ref_key:\"tooltipRef\",ref:o,trigger:\"click\",effect:\"light\"},h.$attrs,{\"popper-class\":`${c(s).namespace.value}-popover`,\"popper-style\":c(i),teleported:h.teleported,\"fallback-placements\":[\"bottom\",\"top\",\"right\",\"left\"],\"hide-after\":h.hideAfter,persistent:h.persistent}),{content:q(()=>[Z(\"div\",{class:D(c(s).b())},[Z(\"div\",{class:D(c(s).e(\"main\"))},[!h.hideIcon&&h.icon?($(),ve(c(He),{key:0,class:D(c(s).e(\"icon\")),style:Ue({color:h.iconColor})},{default:q(()=>[($(),ve(dt(h.icon)))]),_:1},8,[\"class\",\"style\"])):de(\"v-if\",!0),Ve(\" \"+Ee(h.title),1)],2),Z(\"div\",{class:D(c(s).e(\"action\"))},[ue(h.$slots,\"actions\",{confirm:l,cancel:u},()=>[H(c(cn),{size:\"small\",type:h.cancelButtonType===\"text\"?\"\":h.cancelButtonType,text:h.cancelButtonType===\"text\",onClick:u},{default:q(()=>[Ve(Ee(c(d)),1)]),_:1},8,[\"type\",\"text\"]),H(c(cn),{size:\"small\",type:h.confirmButtonType===\"text\"?\"\":h.confirmButtonType,text:h.confirmButtonType===\"text\",onClick:l},{default:q(()=>[Ve(Ee(c(f)),1)]),_:1},8,[\"type\",\"text\"])])],2)],2)]),default:q(()=>[h.$slots.reference?ue(h.$slots,\"reference\",{key:0}):de(\"v-if\",!0)]),_:3},16,[\"popper-class\",\"popper-style\",\"teleported\",\"hide-after\",\"persistent\"]))}});var hj=Oe(fj,[[\"__file\",\"popconfirm.vue\"]]);const J2=Qe(hj),pj=xe({trigger:gl.trigger,placement:Qc.placement,disabled:gl.disabled,visible:pn.visible,transition:pn.transition,popperOptions:Qc.popperOptions,tabindex:Qc.tabindex,content:pn.content,popperStyle:pn.popperStyle,popperClass:pn.popperClass,enterable:{...pn.enterable,default:!0},effect:{...pn.effect,default:\"light\"},teleported:pn.teleported,title:String,width:{type:[String,Number],default:150},offset:{type:Number,default:void 0},showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0},showArrow:{type:Boolean,default:!0},persistent:{type:Boolean,default:!0},\"onUpdate:visible\":{type:Function}}),vj={\"update:visible\":e=>Vt(e),\"before-enter\":()=>!0,\"before-leave\":()=>!0,\"after-enter\":()=>!0,\"after-leave\":()=>!0},mj=\"onUpdate:visible\",gj=ee({name:\"ElPopover\"}),_j=ee({...gj,props:pj,emits:vj,setup(e,{expose:t,emit:n}){const r=e,s=O(()=>r[mj]),o=we(\"popover\"),a=W(),i=O(()=>{var g;return(g=c(a))==null?void 0:g.popperRef}),l=O(()=>[{width:en(r.width)},r.popperStyle]),u=O(()=>[o.b(),r.popperClass,{[o.m(\"plain\")]:!!r.content}]),f=O(()=>r.transition===`${o.namespace.value}-fade-in-linear`),d=()=>{var g;(g=a.value)==null||g.hide()},h=()=>{n(\"before-enter\")},v=()=>{n(\"before-leave\")},b=()=>{n(\"after-enter\")},p=()=>{n(\"update:visible\",!1),n(\"after-leave\")};return t({popperRef:i,hide:d}),(g,m)=>($(),ve(c(Cn),ft({ref_key:\"tooltipRef\",ref:a},g.$attrs,{trigger:g.trigger,placement:g.placement,disabled:g.disabled,visible:g.visible,transition:g.transition,\"popper-options\":g.popperOptions,tabindex:g.tabindex,content:g.content,offset:g.offset,\"show-after\":g.showAfter,\"hide-after\":g.hideAfter,\"auto-close\":g.autoClose,\"show-arrow\":g.showArrow,\"aria-label\":g.title,effect:g.effect,enterable:g.enterable,\"popper-class\":c(u),\"popper-style\":c(l),teleported:g.teleported,persistent:g.persistent,\"gpu-acceleration\":c(f),\"onUpdate:visible\":c(s),onBeforeShow:h,onBeforeHide:v,onShow:b,onHide:p}),{content:q(()=>[g.title?($(),X(\"div\",{key:0,class:D(c(o).e(\"title\")),role:\"title\"},Ee(g.title),3)):de(\"v-if\",!0),ue(g.$slots,\"default\",{},()=>[Ve(Ee(g.content),1)])]),default:q(()=>[g.$slots.reference?ue(g.$slots,\"reference\",{key:0}):de(\"v-if\",!0)]),_:3},16,[\"trigger\",\"placement\",\"disabled\",\"visible\",\"transition\",\"popper-options\",\"tabindex\",\"content\",\"offset\",\"show-after\",\"hide-after\",\"auto-close\",\"show-arrow\",\"aria-label\",\"effect\",\"enterable\",\"popper-class\",\"popper-style\",\"teleported\",\"persistent\",\"gpu-acceleration\",\"onUpdate:visible\"]))}});var bj=Oe(_j,[[\"__file\",\"popover.vue\"]]);const Tb=(e,t)=>{const n=t.arg||t.value,r=n==null?void 0:n.popperRef;r&&(r.triggerRef=e)};var yj={mounted(e,t){Tb(e,t)},updated(e,t){Tb(e,t)}};const wj=\"popover\",Z2=IP(yj,wj),xo=Qe(bj,{directive:Z2}),Sj=xe({type:{type:String,default:\"line\",values:[\"line\",\"circle\",\"dashboard\"]},percentage:{type:Number,default:0,validator:e=>e>=0&&e<=100},status:{type:String,default:\"\",values:[\"\",\"success\",\"exception\",\"warning\"]},indeterminate:Boolean,duration:{type:Number,default:3},strokeWidth:{type:Number,default:6},strokeLinecap:{type:ie(String),default:\"round\"},textInside:Boolean,width:{type:Number,default:126},showText:{type:Boolean,default:!0},color:{type:ie([String,Array,Function]),default:\"\"},striped:Boolean,stripedFlow:Boolean,format:{type:ie(Function),default:e=>`${e}%`}}),Cj=ee({name:\"ElProgress\"}),kj=ee({...Cj,props:Sj,setup(e){const t=e,n={success:\"#13ce66\",exception:\"#ff4949\",warning:\"#e6a23c\",default:\"#20a0ff\"},r=we(\"progress\"),s=O(()=>{const _={width:`${t.percentage}%`,animationDuration:`${t.duration}s`},w=y(t.percentage);return w.includes(\"gradient\")?_.background=w:_.backgroundColor=w,_}),o=O(()=>(t.strokeWidth/t.width*100).toFixed(1)),a=O(()=>[\"circle\",\"dashboard\"].includes(t.type)?Number.parseInt(`${50-Number.parseFloat(o.value)/2}`,10):0),i=O(()=>{const _=a.value,w=t.type===\"dashboard\";return`\n          M 50 50\n          m 0 ${w?\"\":\"-\"}${_}\n          a ${_} ${_} 0 1 1 0 ${w?\"-\":\"\"}${_*2}\n          a ${_} ${_} 0 1 1 0 ${w?\"\":\"-\"}${_*2}\n          `}),l=O(()=>2*Math.PI*a.value),u=O(()=>t.type===\"dashboard\"?.75:1),f=O(()=>`${-1*l.value*(1-u.value)/2}px`),d=O(()=>({strokeDasharray:`${l.value*u.value}px, ${l.value}px`,strokeDashoffset:f.value})),h=O(()=>({strokeDasharray:`${l.value*u.value*(t.percentage/100)}px, ${l.value}px`,strokeDashoffset:f.value,transition:\"stroke-dasharray 0.6s ease 0s, stroke 0.6s ease, opacity ease 0.6s\"})),v=O(()=>{let _;return t.color?_=y(t.percentage):_=n[t.status]||n.default,_}),b=O(()=>t.status===\"warning\"?Ed:t.type===\"line\"?t.status===\"success\"?Av:as:t.status===\"success\"?jl:Dr),p=O(()=>t.type===\"line\"?12+t.strokeWidth*.4:t.width*.111111+2),g=O(()=>t.format(t.percentage));function m(_){const w=100/_.length;return _.map((C,E)=>ze(C)?{color:C,percentage:(E+1)*w}:C).sort((C,E)=>C.percentage-E.percentage)}const y=_=>{var w;const{color:S}=t;if(Ke(S))return S(_);if(ze(S))return S;{const C=m(S);for(const E of C)if(E.percentage>_)return E.color;return(w=C[C.length-1])==null?void 0:w.color}};return(_,w)=>($(),X(\"div\",{class:D([c(r).b(),c(r).m(_.type),c(r).is(_.status),{[c(r).m(\"without-text\")]:!_.showText,[c(r).m(\"text-inside\")]:_.textInside}]),role:\"progressbar\",\"aria-valuenow\":_.percentage,\"aria-valuemin\":\"0\",\"aria-valuemax\":\"100\"},[_.type===\"line\"?($(),X(\"div\",{key:0,class:D(c(r).b(\"bar\"))},[Z(\"div\",{class:D(c(r).be(\"bar\",\"outer\")),style:Ue({height:`${_.strokeWidth}px`})},[Z(\"div\",{class:D([c(r).be(\"bar\",\"inner\"),{[c(r).bem(\"bar\",\"inner\",\"indeterminate\")]:_.indeterminate},{[c(r).bem(\"bar\",\"inner\",\"striped\")]:_.striped},{[c(r).bem(\"bar\",\"inner\",\"striped-flow\")]:_.stripedFlow}]),style:Ue(c(s))},[(_.showText||_.$slots.default)&&_.textInside?($(),X(\"div\",{key:0,class:D(c(r).be(\"bar\",\"innerText\"))},[ue(_.$slots,\"default\",{percentage:_.percentage},()=>[Z(\"span\",null,Ee(c(g)),1)])],2)):de(\"v-if\",!0)],6)],6)],2)):($(),X(\"div\",{key:1,class:D(c(r).b(\"circle\")),style:Ue({height:`${_.width}px`,width:`${_.width}px`})},[($(),X(\"svg\",{viewBox:\"0 0 100 100\"},[Z(\"path\",{class:D(c(r).be(\"circle\",\"track\")),d:c(i),stroke:`var(${c(r).cssVarName(\"fill-color-light\")}, #e5e9f2)`,\"stroke-linecap\":_.strokeLinecap,\"stroke-width\":c(o),fill:\"none\",style:Ue(c(d))},null,14,[\"d\",\"stroke\",\"stroke-linecap\",\"stroke-width\"]),Z(\"path\",{class:D(c(r).be(\"circle\",\"path\")),d:c(i),stroke:c(v),fill:\"none\",opacity:_.percentage?1:0,\"stroke-linecap\":_.strokeLinecap,\"stroke-width\":c(o),style:Ue(c(h))},null,14,[\"d\",\"stroke\",\"opacity\",\"stroke-linecap\",\"stroke-width\"])]))],6)),(_.showText||_.$slots.default)&&!_.textInside?($(),X(\"div\",{key:2,class:D(c(r).e(\"text\")),style:Ue({fontSize:`${c(p)}px`})},[ue(_.$slots,\"default\",{percentage:_.percentage},()=>[_.status?($(),ve(c(He),{key:1},{default:q(()=>[($(),ve(dt(c(b))))]),_:1})):($(),X(\"span\",{key:0},Ee(c(g)),1))])],6)):de(\"v-if\",!0)],10,[\"aria-valuenow\"]))}});var Ej=Oe(kj,[[\"__file\",\"progress.vue\"]]);const wm=Qe(Ej),Tj=xe({modelValue:{type:Number,default:0},id:{type:String,default:void 0},lowThreshold:{type:Number,default:2},highThreshold:{type:Number,default:4},max:{type:Number,default:5},colors:{type:ie([Array,Object]),default:()=>Yt([\"\",\"\",\"\"])},voidColor:{type:String,default:\"\"},disabledVoidColor:{type:String,default:\"\"},icons:{type:ie([Array,Object]),default:()=>[pc,pc,pc]},voidIcon:{type:Nt,default:()=>jS},disabledVoidIcon:{type:Nt,default:()=>pc},disabled:Boolean,allowHalf:Boolean,showText:Boolean,showScore:Boolean,textColor:{type:String,default:\"\"},texts:{type:ie(Array),default:()=>Yt([\"Extremely bad\",\"Disappointed\",\"Fair\",\"Satisfied\",\"Surprise\"])},scoreTemplate:{type:String,default:\"{value}\"},size:on,clearable:Boolean,...kn([\"ariaLabel\"])}),Rj={[Bt]:e=>Ge(e),[ot]:e=>Ge(e)},xj=ee({name:\"ElRate\"}),Oj=ee({...xj,props:Tj,emits:Rj,setup(e,{expose:t,emit:n}){const r=e;function s(I,j){const F=N=>lt(N),R=Object.keys(j).map(N=>+N).filter(N=>{const U=j[N];return(F(U)?U.excluded:!1)?I<N:I<=N}).sort((N,U)=>N-U),B=j[R[0]];return F(B)&&B.value||B}const o=Fe(oi,void 0),a=Fe(ns,void 0),i=sn(),l=we(\"rate\"),{inputId:u,isLabeledByFormItem:f}=Cr(r,{formItemContext:a}),d=W(r.modelValue),h=W(-1),v=W(!0),b=O(()=>[l.b(),l.m(i.value)]),p=O(()=>r.disabled||(o==null?void 0:o.disabled)),g=O(()=>l.cssVarBlock({\"void-color\":r.voidColor,\"disabled-void-color\":r.disabledVoidColor,\"fill-color\":w.value})),m=O(()=>{let I=\"\";return r.showScore?I=r.scoreTemplate.replace(/\\{\\s*value\\s*\\}/,p.value?`${r.modelValue}`:`${d.value}`):r.showText&&(I=r.texts[Math.ceil(d.value)-1]),I}),y=O(()=>r.modelValue*100-Math.floor(r.modelValue)*100),_=O(()=>ke(r.colors)?{[r.lowThreshold]:r.colors[0],[r.highThreshold]:{value:r.colors[1],excluded:!0},[r.max]:r.colors[2]}:r.colors),w=O(()=>{const I=s(d.value,_.value);return lt(I)?\"\":I}),S=O(()=>{let I=\"\";return p.value?I=`${y.value}%`:r.allowHalf&&(I=\"50%\"),{color:w.value,width:I}}),C=O(()=>{let I=ke(r.icons)?[...r.icons]:{...r.icons};return I=Jr(I),ke(I)?{[r.lowThreshold]:I[0],[r.highThreshold]:{value:I[1],excluded:!0},[r.max]:I[2]}:I}),E=O(()=>s(r.modelValue,C.value)),k=O(()=>p.value?ze(r.disabledVoidIcon)?r.disabledVoidIcon:Jr(r.disabledVoidIcon):ze(r.voidIcon)?r.voidIcon:Jr(r.voidIcon)),T=O(()=>s(d.value,C.value));function x(I){const j=p.value&&y.value>0&&I-1<r.modelValue&&I>r.modelValue,F=r.allowHalf&&v.value&&I-.5<=d.value&&I>d.value;return j||F}function M(I){r.clearable&&I===r.modelValue&&(I=0),n(ot,I),r.modelValue!==I&&n(\"change\",I)}function A(I){p.value||(r.allowHalf&&v.value?M(d.value):M(I))}function P(I){if(p.value)return;let j=d.value;const F=I.code;return F===Ne.up||F===Ne.right?(r.allowHalf?j+=.5:j+=1,I.stopPropagation(),I.preventDefault()):(F===Ne.left||F===Ne.down)&&(r.allowHalf?j-=.5:j-=1,I.stopPropagation(),I.preventDefault()),j=j<0?0:j,j=j>r.max?r.max:j,n(ot,j),n(\"change\",j),j}function G(I,j){if(!p.value){if(r.allowHalf&&j){let F=j.target;Zn(F,l.e(\"item\"))&&(F=F.querySelector(`.${l.e(\"icon\")}`)),(F.clientWidth===0||Zn(F,l.e(\"decimal\")))&&(F=F.parentNode),v.value=j.offsetX*2<=F.clientWidth,d.value=v.value?I-.5:I}else d.value=I;h.value=I}}function V(){p.value||(r.allowHalf&&(v.value=r.modelValue!==Math.floor(r.modelValue)),d.value=r.modelValue,h.value=-1)}return ye(()=>r.modelValue,I=>{d.value=I,v.value=r.modelValue!==Math.floor(r.modelValue)}),r.modelValue||n(ot,0),t({setCurrentValue:G,resetCurrentValue:V}),(I,j)=>{var F;return $(),X(\"div\",{id:c(u),class:D([c(b),c(l).is(\"disabled\",c(p))]),role:\"slider\",\"aria-label\":c(f)?void 0:I.ariaLabel||\"rating\",\"aria-labelledby\":c(f)?(F=c(a))==null?void 0:F.labelId:void 0,\"aria-valuenow\":d.value,\"aria-valuetext\":c(m)||void 0,\"aria-valuemin\":\"0\",\"aria-valuemax\":I.max,tabindex:\"0\",style:Ue(c(g)),onKeydown:P},[($(!0),X(We,null,vt(I.max,(R,B)=>($(),X(\"span\",{key:B,class:D(c(l).e(\"item\")),onMousemove:N=>G(R,N),onMouseleave:V,onClick:N=>A(R)},[H(c(He),{class:D([c(l).e(\"icon\"),{hover:h.value===R},c(l).is(\"active\",R<=d.value)])},{default:q(()=>[x(R)?de(\"v-if\",!0):($(),X(We,{key:0},[st(($(),ve(dt(c(T)),null,null,512)),[[Et,R<=d.value]]),st(($(),ve(dt(c(k)),null,null,512)),[[Et,!(R<=d.value)]])],64)),x(R)?($(),X(We,{key:1},[($(),ve(dt(c(k)),{class:D([c(l).em(\"decimal\",\"box\")])},null,8,[\"class\"])),H(c(He),{style:Ue(c(S)),class:D([c(l).e(\"icon\"),c(l).e(\"decimal\")])},{default:q(()=>[($(),ve(dt(c(E))))]),_:1},8,[\"style\",\"class\"])],64)):de(\"v-if\",!0)]),_:2},1032,[\"class\"])],42,[\"onMousemove\",\"onClick\"]))),128)),I.showText||I.showScore?($(),X(\"span\",{key:0,class:D(c(l).e(\"text\")),style:Ue({color:I.textColor})},Ee(c(m)),7)):de(\"v-if\",!0)],46,[\"id\",\"aria-label\",\"aria-labelledby\",\"aria-valuenow\",\"aria-valuetext\",\"aria-valuemax\"])}}});var Mj=Oe(Oj,[[\"__file\",\"rate.vue\"]]);const Aj=Qe(Mj),wi={success:\"icon-success\",warning:\"icon-warning\",error:\"icon-error\",info:\"icon-info\"},Rb={[wi.success]:t6,[wi.warning]:Ed,[wi.error]:$v,[wi.info]:Lv},$j=xe({title:{type:String,default:\"\"},subTitle:{type:String,default:\"\"},icon:{type:String,values:[\"success\",\"warning\",\"info\",\"error\"],default:\"info\"}}),Lj=ee({name:\"ElResult\"}),Ij=ee({...Lj,props:$j,setup(e){const t=e,n=we(\"result\"),r=O(()=>{const s=t.icon,o=s&&wi[s]?wi[s]:\"icon-info\",a=Rb[o]||Rb[\"icon-info\"];return{class:o,component:a}});return(s,o)=>($(),X(\"div\",{class:D(c(n).b())},[Z(\"div\",{class:D(c(n).e(\"icon\"))},[ue(s.$slots,\"icon\",{},()=>[c(r).component?($(),ve(dt(c(r).component),{key:0,class:D(c(r).class)},null,8,[\"class\"])):de(\"v-if\",!0)])],2),s.title||s.$slots.title?($(),X(\"div\",{key:0,class:D(c(n).e(\"title\"))},[ue(s.$slots,\"title\",{},()=>[Z(\"p\",null,Ee(s.title),1)])],2)):de(\"v-if\",!0),s.subTitle||s.$slots[\"sub-title\"]?($(),X(\"div\",{key:1,class:D(c(n).e(\"subtitle\"))},[ue(s.$slots,\"sub-title\",{},()=>[Z(\"p\",null,Ee(s.subTitle),1)])],2)):de(\"v-if\",!0),s.$slots.extra?($(),X(\"div\",{key:2,class:D(c(n).e(\"extra\"))},[ue(s.$slots,\"extra\")],2)):de(\"v-if\",!0)],2))}});var Pj=Oe(Ij,[[\"__file\",\"result.vue\"]]);const Dj=Qe(Pj),Bj=[\"start\",\"center\",\"end\",\"space-around\",\"space-between\",\"space-evenly\"],Nj=[\"top\",\"middle\",\"bottom\"],Fj=xe({tag:{type:String,default:\"div\"},gutter:{type:Number,default:0},justify:{type:String,values:Bj,default:\"start\"},align:{type:String,values:Nj}}),Hj=ee({name:\"ElRow\"}),Vj=ee({...Hj,props:Fj,setup(e){const t=e,n=we(\"row\"),r=O(()=>t.gutter);pt(XC,{gutter:r});const s=O(()=>{const a={};return t.gutter&&(a.marginRight=a.marginLeft=`-${t.gutter/2}px`),a}),o=O(()=>[n.b(),n.is(`justify-${t.justify}`,t.justify!==\"start\"),n.is(`align-${t.align}`,!!t.align)]);return(a,i)=>($(),ve(dt(a.tag),{class:D(c(o)),style:Ue(c(s))},{default:q(()=>[ue(a.$slots,\"default\")]),_:3},8,[\"class\",\"style\"]))}});var zj=Oe(Vj,[[\"__file\",\"row.vue\"]]);const Q2=Qe(zj),Wj=ee({props:{item:{type:Object,required:!0},style:{type:Object},height:Number},setup(){return{ns:we(\"select\")}}});function Kj(e,t,n,r,s,o){return $(),X(\"div\",{class:D(e.ns.be(\"group\",\"title\")),style:Ue({...e.style,lineHeight:`${e.height}px`})},Ee(e.item.label),7)}var jj=Oe(Wj,[[\"render\",Kj],[\"__file\",\"group-item.vue\"]]);function Uj(e,{emit:t}){return{hoverItem:()=>{e.disabled||t(\"hover\",e.index)},selectOptionClick:()=>{e.disabled||t(\"select\",e.item,e.index)}}}const ek={label:\"label\",value:\"value\",disabled:\"disabled\",options:\"options\"};function Pd(e){const t=O(()=>({...ek,...e.props}));return{aliasProps:t,getLabel:a=>rn(a,t.value.label),getValue:a=>rn(a,t.value.value),getDisabled:a=>rn(a,t.value.disabled),getOptions:a=>rn(a,t.value.options)}}const qj=xe({allowCreate:Boolean,autocomplete:{type:ie(String),default:\"none\"},automaticDropdown:Boolean,clearable:Boolean,clearIcon:{type:Nt,default:as},effect:{type:ie(String),default:\"light\"},collapseTags:Boolean,collapseTagsTooltip:Boolean,maxCollapseTags:{type:Number,default:1},defaultFirstOption:Boolean,disabled:Boolean,estimatedOptionHeight:{type:Number,default:void 0},filterable:Boolean,filterMethod:Function,height:{type:Number,default:274},itemHeight:{type:Number,default:34},id:String,loading:Boolean,loadingText:String,modelValue:{type:ie([Array,String,Number,Boolean,Object])},multiple:Boolean,multipleLimit:{type:Number,default:0},name:String,noDataText:String,noMatchText:String,remoteMethod:Function,reserveKeyword:{type:Boolean,default:!0},options:{type:ie(Array),required:!0},placeholder:{type:String},teleported:pn.teleported,persistent:{type:Boolean,default:!0},popperClass:{type:String,default:\"\"},popperOptions:{type:ie(Object),default:()=>({})},remote:Boolean,size:on,props:{type:ie(Object),default:()=>ek},valueKey:{type:String,default:\"value\"},scrollbarAlwaysOn:Boolean,validateEvent:{type:Boolean,default:!0},offset:{type:Number,default:12},showArrow:{type:Boolean,default:!0},placement:{type:ie(String),values:$s,default:\"bottom-start\"},fallbackPlacements:{type:ie(Array),default:[\"bottom-start\",\"top-start\",\"right\",\"left\"]},tagType:{...ks.type,default:\"info\"},tagEffect:{...ks.effect,default:\"light\"},tabindex:{type:[String,Number],default:0},appendTo:String,...fa,...kn([\"ariaLabel\"])}),Yj=xe({data:Array,disabled:Boolean,hovering:Boolean,item:{type:ie(Object),required:!0},index:Number,style:Object,selected:Boolean,created:Boolean}),Gj={[ot]:e=>!0,[Bt]:e=>!0,\"remove-tag\":e=>!0,\"visible-change\":e=>!0,focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent,clear:()=>!0},Xj={hover:e=>Ge(e),select:(e,t)=>!0},Sm=Symbol(\"ElSelectV2Injection\"),Jj=ee({props:Yj,emits:Xj,setup(e,{emit:t}){const n=Fe(Sm),r=we(\"select\"),{hoverItem:s,selectOptionClick:o}=Uj(e,{emit:t}),{getLabel:a}=Pd(n.props);return{ns:r,hoverItem:s,selectOptionClick:o,getLabel:a}}});function Zj(e,t,n,r,s,o){return $(),X(\"li\",{\"aria-selected\":e.selected,style:Ue(e.style),class:D([e.ns.be(\"dropdown\",\"item\"),e.ns.is(\"selected\",e.selected),e.ns.is(\"disabled\",e.disabled),e.ns.is(\"created\",e.created),e.ns.is(\"hovering\",e.hovering)]),onMousemove:e.hoverItem,onClick:Xe(e.selectOptionClick,[\"stop\"])},[ue(e.$slots,\"default\",{item:e.item,index:e.index,disabled:e.disabled},()=>[Z(\"span\",null,Ee(e.getLabel(e.item)),1)])],46,[\"aria-selected\",\"onMousemove\",\"onClick\"])}var Qj=Oe(Jj,[[\"render\",Zj],[\"__file\",\"option-item.vue\"]]),xb=Number.isNaN||function(t){return typeof t==\"number\"&&t!==t};function eU(e,t){return!!(e===t||xb(e)&&xb(t))}function tU(e,t){if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!eU(e[n],t[n]))return!1;return!0}function nU(e,t){t===void 0&&(t=tU);var n=null;function r(){for(var s=[],o=0;o<arguments.length;o++)s[o]=arguments[o];if(n&&n.lastThis===this&&t(s,n.lastArgs))return n.lastResult;var a=e.apply(this,s);return n={lastResult:a,lastArgs:s,lastThis:this},a}return r.clear=function(){n=null},r}const tk=()=>{const t=ct().proxy.$props;return O(()=>{const n=(r,s,o)=>({});return t.perfMode?_d(n):nU(n)})},Zh=50,Lu=\"itemRendered\",Iu=\"scroll\",Si=\"forward\",Pu=\"backward\",vr=\"auto\",Dd=\"smart\",Sl=\"start\",Xr=\"center\",Cl=\"end\",Xi=\"horizontal\",Cm=\"vertical\",rU=\"ltr\",Ai=\"rtl\",kl=\"negative\",km=\"positive-ascending\",Em=\"positive-descending\",sU={[Xi]:\"left\",[Cm]:\"top\"},oU=20,iU={[Xi]:\"deltaX\",[Cm]:\"deltaY\"},aU=({atEndEdge:e,atStartEdge:t,layout:n},r)=>{let s,o=0;const a=l=>l<0&&t.value||l>0&&e.value;return{hasReachedEdge:a,onWheel:l=>{Zo(s);const u=l[iU[n.value]];a(o)&&a(o+u)||(o+=u,Rd()||l.preventDefault(),s=io(()=>{r(o),o=0}))}}},Qh=Vr({type:ie([Number,Function]),required:!0}),ep=Vr({type:Number}),tp=Vr({type:Number,default:2}),lU=Vr({type:String,values:[\"ltr\",\"rtl\"],default:\"ltr\"}),np=Vr({type:Number,default:0}),Du=Vr({type:Number,required:!0}),nk=Vr({type:String,values:[\"horizontal\",\"vertical\"],default:Cm}),rk=xe({className:{type:String,default:\"\"},containerElement:{type:ie([String,Object]),default:\"div\"},data:{type:ie(Array),default:()=>Yt([])},direction:lU,height:{type:[String,Number],required:!0},innerElement:{type:[String,Object],default:\"div\"},style:{type:ie([Object,String,Array])},useIsScrolling:{type:Boolean,default:!1},width:{type:[Number,String],required:!1},perfMode:{type:Boolean,default:!0},scrollbarAlwaysOn:{type:Boolean,default:!1}}),sk=xe({cache:tp,estimatedItemSize:ep,layout:nk,initScrollOffset:np,total:Du,itemSize:Qh,...rk}),rp={type:Number,default:6},ok={type:Number,default:0},ik={type:Number,default:2},Ko=xe({columnCache:tp,columnWidth:Qh,estimatedColumnWidth:ep,estimatedRowHeight:ep,initScrollLeft:np,initScrollTop:np,itemKey:{type:ie(Function),default:({columnIndex:e,rowIndex:t})=>`${t}:${e}`},rowCache:tp,rowHeight:Qh,totalColumn:Du,totalRow:Du,hScrollbarSize:rp,vScrollbarSize:rp,scrollbarStartGap:ok,scrollbarEndGap:ik,role:String,...rk}),ak=xe({alwaysOn:Boolean,class:String,layout:nk,total:Du,ratio:{type:Number,required:!0},clientSize:{type:Number,required:!0},scrollFrom:{type:Number,required:!0},scrollbarSize:rp,startGap:ok,endGap:ik,visible:Boolean}),Po=(e,t)=>e<t?Si:Pu,El=e=>e===rU||e===Ai||e===Xi,Ob=e=>e===Ai;let fi=null;function Bu(e=!1){if(fi===null||e){const t=document.createElement(\"div\"),n=t.style;n.width=\"50px\",n.height=\"50px\",n.overflow=\"scroll\",n.direction=\"rtl\";const r=document.createElement(\"div\"),s=r.style;return s.width=\"100px\",s.height=\"100px\",t.appendChild(r),document.body.appendChild(t),t.scrollLeft>0?fi=Em:(t.scrollLeft=1,t.scrollLeft===0?fi=kl:fi=km),document.body.removeChild(t),fi}return fi}function cU({move:e,size:t,bar:n},r){const s={},o=`translate${n.axis}(${e}px)`;return s[n.size]=t,s.transform=o,s.msTransform=o,s.webkitTransform=o,r===\"horizontal\"?s.height=\"100%\":s.width=\"100%\",s}const sp=ee({name:\"ElVirtualScrollBar\",props:ak,emits:[\"scroll\",\"start-move\",\"stop-move\"],setup(e,{emit:t}){const n=O(()=>e.startGap+e.endGap),r=we(\"virtual-scrollbar\"),s=we(\"scrollbar\"),o=W(),a=W();let i=null,l=null;const u=St({isDragging:!1,traveled:0}),f=O(()=>XS[e.layout]),d=O(()=>e.clientSize-c(n)),h=O(()=>({position:\"absolute\",width:`${Xi===e.layout?d.value:e.scrollbarSize}px`,height:`${Xi===e.layout?e.scrollbarSize:d.value}px`,[sU[e.layout]]:\"2px\",right:\"2px\",bottom:\"2px\",borderRadius:\"4px\"})),v=O(()=>{const C=e.ratio,E=e.clientSize;if(C>=100)return Number.POSITIVE_INFINITY;if(C>=50)return C*E/100;const k=E/3;return Math.floor(Math.min(Math.max(C*E,oU),k))}),b=O(()=>{if(!Number.isFinite(v.value))return{display:\"none\"};const C=`${v.value}px`;return cU({bar:f.value,size:C,move:u.traveled},e.layout)}),p=O(()=>Math.floor(e.clientSize-v.value-c(n))),g=()=>{window.addEventListener(\"mousemove\",w),window.addEventListener(\"mouseup\",_);const C=c(a);C&&(l=document.onselectstart,document.onselectstart=()=>!1,C.addEventListener(\"touchmove\",w,{passive:!0}),C.addEventListener(\"touchend\",_))},m=()=>{window.removeEventListener(\"mousemove\",w),window.removeEventListener(\"mouseup\",_),document.onselectstart=l,l=null;const C=c(a);C&&(C.removeEventListener(\"touchmove\",w),C.removeEventListener(\"touchend\",_))},y=C=>{C.stopImmediatePropagation(),!(C.ctrlKey||[1,2].includes(C.button))&&(u.isDragging=!0,u[f.value.axis]=C.currentTarget[f.value.offset]-(C[f.value.client]-C.currentTarget.getBoundingClientRect()[f.value.direction]),t(\"start-move\"),g())},_=()=>{u.isDragging=!1,u[f.value.axis]=0,t(\"stop-move\"),m()},w=C=>{const{isDragging:E}=u;if(!E||!a.value||!o.value)return;const k=u[f.value.axis];if(!k)return;Zo(i);const T=(o.value.getBoundingClientRect()[f.value.direction]-C[f.value.client])*-1,x=a.value[f.value.offset]-k,M=T-x;i=io(()=>{u.traveled=Math.max(e.startGap,Math.min(M,p.value)),t(\"scroll\",M,p.value)})},S=C=>{const E=Math.abs(C.target.getBoundingClientRect()[f.value.direction]-C[f.value.client]),k=a.value[f.value.offset]/2,T=E-k;u.traveled=Math.max(0,Math.min(T,p.value)),t(\"scroll\",T,p.value)};return ye(()=>e.scrollFrom,C=>{u.isDragging||(u.traveled=Math.ceil(C*p.value))}),Pt(()=>{m()}),()=>Ye(\"div\",{role:\"presentation\",ref:o,class:[r.b(),e.class,(e.alwaysOn||u.isDragging)&&\"always-on\"],style:h.value,onMousedown:Xe(S,[\"stop\",\"prevent\"]),onTouchstartPrevent:y},Ye(\"div\",{ref:a,class:s.e(\"thumb\"),style:b.value,onMousedown:y},[]))}}),lk=({name:e,getOffset:t,getItemSize:n,getItemOffset:r,getEstimatedTotalSize:s,getStartIndexForOffset:o,getStopIndexForStartIndex:a,initCache:i,clearCache:l,validateProps:u})=>ee({name:e??\"ElVirtualList\",props:sk,emits:[Lu,Iu],setup(f,{emit:d,expose:h}){u(f);const v=ct(),b=we(\"vl\"),p=W(i(f,v)),g=tk(),m=W(),y=W(),_=W(),w=W({isScrolling:!1,scrollDir:\"forward\",scrollOffset:Ge(f.initScrollOffset)?f.initScrollOffset:0,updateRequested:!1,isScrollbarDragging:!1,scrollbarAlwaysOn:f.scrollbarAlwaysOn}),S=O(()=>{const{total:J,cache:re}=f,{isScrolling:le,scrollDir:pe,scrollOffset:K}=c(w);if(J===0)return[0,0,0,0];const z=o(f,K,c(p)),te=a(f,z,K,c(p)),oe=!le||pe===Pu?Math.max(1,re):1,he=!le||pe===Si?Math.max(1,re):1;return[Math.max(0,z-oe),Math.max(0,Math.min(J-1,te+he)),z,te]}),C=O(()=>s(f,c(p))),E=O(()=>El(f.layout)),k=O(()=>[{position:\"relative\",[`overflow-${E.value?\"x\":\"y\"}`]:\"scroll\",WebkitOverflowScrolling:\"touch\",willChange:\"transform\"},{direction:f.direction,height:Ge(f.height)?`${f.height}px`:f.height,width:Ge(f.width)?`${f.width}px`:f.width},f.style]),T=O(()=>{const J=c(C),re=c(E);return{height:re?\"100%\":`${J}px`,pointerEvents:c(w).isScrolling?\"none\":void 0,width:re?`${J}px`:\"100%\"}}),x=O(()=>E.value?f.width:f.height),{onWheel:M}=aU({atStartEdge:O(()=>w.value.scrollOffset<=0),atEndEdge:O(()=>w.value.scrollOffset>=C.value),layout:O(()=>f.layout)},J=>{var re,le;(le=(re=_.value).onMouseUp)==null||le.call(re),j(Math.min(w.value.scrollOffset+J,C.value-x.value))});It(m,\"wheel\",M,{passive:!1});const A=()=>{const{total:J}=f;if(J>0){const[K,z,te,oe]=c(S);d(Lu,K,z,te,oe)}const{scrollDir:re,scrollOffset:le,updateRequested:pe}=c(w);d(Iu,re,le,pe)},P=J=>{const{clientHeight:re,scrollHeight:le,scrollTop:pe}=J.currentTarget,K=c(w);if(K.scrollOffset===pe)return;const z=Math.max(0,Math.min(pe,le-re));w.value={...K,isScrolling:!0,scrollDir:Po(K.scrollOffset,z),scrollOffset:z,updateRequested:!1},je(B)},G=J=>{const{clientWidth:re,scrollLeft:le,scrollWidth:pe}=J.currentTarget,K=c(w);if(K.scrollOffset===le)return;const{direction:z}=f;let te=le;if(z===Ai)switch(Bu()){case kl:{te=-le;break}case Em:{te=pe-re-le;break}}te=Math.max(0,Math.min(te,pe-re)),w.value={...K,isScrolling:!0,scrollDir:Po(K.scrollOffset,te),scrollOffset:te,updateRequested:!1},je(B)},V=J=>{c(E)?G(J):P(J),A()},I=(J,re)=>{const le=(C.value-x.value)/re*J;j(Math.min(C.value-x.value,le))},j=J=>{J=Math.max(J,0),J!==c(w).scrollOffset&&(w.value={...c(w),scrollOffset:J,scrollDir:Po(c(w).scrollOffset,J),updateRequested:!0},je(B))},F=(J,re=vr)=>{const{scrollOffset:le}=c(w);J=Math.max(0,Math.min(J,f.total-1)),j(t(f,J,re,le,c(p)))},R=J=>{const{direction:re,itemSize:le,layout:pe}=f,K=g.value(l&&le,l&&pe,l&&re);let z;if(kt(K,String(J)))z=K[J];else{const te=r(f,J,c(p)),oe=n(f,J,c(p)),he=c(E),Y=re===Ai,L=he?te:0;K[J]=z={position:\"absolute\",left:Y?void 0:`${L}px`,right:Y?`${L}px`:void 0,top:he?0:`${te}px`,height:he?\"100%\":`${oe}px`,width:he?`${oe}px`:\"100%\"}}return z},B=()=>{w.value.isScrolling=!1,je(()=>{g.value(-1,null,null)})},N=()=>{const J=m.value;J&&(J.scrollTop=0)};it(()=>{if(!bt)return;const{initScrollOffset:J}=f,re=c(m);Ge(J)&&re&&(c(E)?re.scrollLeft=J:re.scrollTop=J),A()}),os(()=>{const{direction:J,layout:re}=f,{scrollOffset:le,updateRequested:pe}=c(w),K=c(m);if(pe&&K)if(re===Xi)if(J===Ai)switch(Bu()){case kl:{K.scrollLeft=-le;break}case km:{K.scrollLeft=le;break}default:{const{clientWidth:z,scrollWidth:te}=K;K.scrollLeft=te-z-le;break}}else K.scrollLeft=le;else K.scrollTop=le}),Gp(()=>{c(m).scrollTop=c(w).scrollOffset});const U={ns:b,clientSize:x,estimatedTotalSize:C,windowStyle:k,windowRef:m,innerRef:y,innerStyle:T,itemsToRender:S,scrollbarRef:_,states:w,getItemStyle:R,onScroll:V,onScrollbarScroll:I,onWheel:M,scrollTo:j,scrollToItem:F,resetScrollTop:N};return h({windowRef:m,innerRef:y,getItemStyleCache:g,scrollTo:j,scrollToItem:F,resetScrollTop:N,states:w}),U},render(f){var d;const{$slots:h,className:v,clientSize:b,containerElement:p,data:g,getItemStyle:m,innerElement:y,itemsToRender:_,innerStyle:w,layout:S,total:C,onScroll:E,onScrollbarScroll:k,states:T,useIsScrolling:x,windowStyle:M,ns:A}=f,[P,G]=_,V=dt(p),I=dt(y),j=[];if(C>0)for(let N=P;N<=G;N++)j.push(Ye(We,{key:N},(d=h.default)==null?void 0:d.call(h,{data:g,index:N,isScrolling:x?T.isScrolling:void 0,style:m(N)})));const F=[Ye(I,{style:w,ref:\"innerRef\"},ze(I)?j:{default:()=>j})],R=Ye(sp,{ref:\"scrollbarRef\",clientSize:b,layout:S,onScroll:k,ratio:b*100/this.estimatedTotalSize,scrollFrom:T.scrollOffset/(this.estimatedTotalSize-b),total:C}),B=Ye(V,{class:[A.e(\"window\"),v],style:M,onScroll:E,ref:\"windowRef\",key:0},ze(V)?[F]:{default:()=>[F]});return Ye(\"div\",{key:0,class:[A.e(\"wrapper\"),T.scrollbarAlwaysOn?\"always-on\":\"\"]},[B,R])}}),ck=lk({name:\"ElFixedSizeList\",getItemOffset:({itemSize:e},t)=>t*e,getItemSize:({itemSize:e})=>e,getEstimatedTotalSize:({total:e,itemSize:t})=>t*e,getOffset:({height:e,total:t,itemSize:n,layout:r,width:s},o,a,i)=>{const l=El(r)?s:e,u=Math.max(0,t*n-l),f=Math.min(u,o*n),d=Math.max(0,(o+1)*n-l);switch(a===Dd&&(i>=d-l&&i<=f+l?a=vr:a=Xr),a){case Sl:return f;case Cl:return d;case Xr:{const h=Math.round(d+(f-d)/2);return h<Math.ceil(l/2)?0:h>u+Math.floor(l/2)?u:h}case vr:default:return i>=d&&i<=f?i:i<d?d:f}},getStartIndexForOffset:({total:e,itemSize:t},n)=>Math.max(0,Math.min(e-1,Math.floor(n/t))),getStopIndexForStartIndex:({height:e,total:t,itemSize:n,layout:r,width:s},o,a)=>{const i=o*n,l=El(r)?s:e,u=Math.ceil((l+a-i)/n);return Math.max(0,Math.min(t-1,o+u-1))},initCache(){},clearCache:!0,validateProps(){}}),Ci=(e,t,n)=>{const{itemSize:r}=e,{items:s,lastVisitedIndex:o}=n;if(t>o){let a=0;if(o>=0){const i=s[o];a=i.offset+i.size}for(let i=o+1;i<=t;i++){const l=r(i);s[i]={offset:a,size:l},a+=l}n.lastVisitedIndex=t}return s[t]},uU=(e,t,n)=>{const{items:r,lastVisitedIndex:s}=t;return(s>0?r[s].offset:0)>=n?uk(e,t,0,s,n):dU(e,t,Math.max(0,s),n)},uk=(e,t,n,r,s)=>{for(;n<=r;){const o=n+Math.floor((r-n)/2),a=Ci(e,o,t).offset;if(a===s)return o;a<s?n=o+1:a>s&&(r=o-1)}return Math.max(0,n-1)},dU=(e,t,n,r)=>{const{total:s}=e;let o=1;for(;n<s&&Ci(e,n,t).offset<r;)n+=o,o*=2;return uk(e,t,Math.floor(n/2),Math.min(n,s-1),r)},Mb=({total:e},{items:t,estimatedItemSize:n,lastVisitedIndex:r})=>{let s=0;if(r>=e&&(r=e-1),r>=0){const i=t[r];s=i.offset+i.size}const a=(e-r-1)*n;return s+a},fU=lk({name:\"ElDynamicSizeList\",getItemOffset:(e,t,n)=>Ci(e,t,n).offset,getItemSize:(e,t,{items:n})=>n[t].size,getEstimatedTotalSize:Mb,getOffset:(e,t,n,r,s)=>{const{height:o,layout:a,width:i}=e,l=El(a)?i:o,u=Ci(e,t,s),f=Mb(e,s),d=Math.max(0,Math.min(f-l,u.offset)),h=Math.max(0,u.offset-l+u.size);switch(n===Dd&&(r>=h-l&&r<=d+l?n=vr:n=Xr),n){case Sl:return d;case Cl:return h;case Xr:return Math.round(h+(d-h)/2);case vr:default:return r>=h&&r<=d?r:r<h?h:d}},getStartIndexForOffset:(e,t,n)=>uU(e,n,t),getStopIndexForStartIndex:(e,t,n,r)=>{const{height:s,total:o,layout:a,width:i}=e,l=El(a)?i:s,u=Ci(e,t,r),f=n+l;let d=u.offset+u.size,h=t;for(;h<o-1&&d<f;)h++,d+=Ci(e,h,r).size;return h},initCache({estimatedItemSize:e=Zh},t){const n={items:{},estimatedItemSize:e,lastVisitedIndex:-1};return n.clearCacheAfterIndex=(r,s=!0)=>{var o,a;n.lastVisitedIndex=Math.min(n.lastVisitedIndex,r-1),(o=t.exposed)==null||o.getItemStyleCache(-1),s&&((a=t.proxy)==null||a.$forceUpdate())},n},clearCache:!1,validateProps:({itemSize:e})=>{}}),hU={loading:Boolean,data:{type:Array,required:!0},hoveringIndex:Number,width:Number};var pU=ee({name:\"ElSelectDropdown\",props:hU,setup(e,{slots:t,expose:n}){const r=Fe(Sm),s=we(\"select\"),{getLabel:o,getValue:a,getDisabled:i}=Pd(r.props),l=W([]),u=W(),f=O(()=>e.data.length);ye(()=>f.value,()=>{var M,A;(A=(M=r.tooltipRef.value).updatePopper)==null||A.call(M)});const d=O(()=>Lt(r.props.estimatedOptionHeight)),h=O(()=>d.value?{itemSize:r.props.itemHeight}:{estimatedSize:r.props.estimatedOptionHeight,itemSize:M=>l.value[M]}),v=(M=[],A)=>{const{props:{valueKey:P}}=r;return lt(A)?M&&M.some(G=>Dt(rn(G,P))===rn(A,P)):M.includes(A)},b=(M,A)=>{if(lt(A)){const{valueKey:P}=r.props;return rn(M,P)===rn(A,P)}else return M===A},p=(M,A)=>r.props.multiple?v(M,a(A)):b(M,a(A)),g=(M,A)=>{const{disabled:P,multiple:G,multipleLimit:V}=r.props;return P||!A&&(G?V>0&&M.length>=V:!1)},m=M=>e.hoveringIndex===M;n({listRef:u,isSized:d,isItemDisabled:g,isItemHovering:m,isItemSelected:p,scrollToItem:M=>{const A=u.value;A&&A.scrollToItem(M)},resetScrollTop:()=>{const M=u.value;M&&M.resetScrollTop()}});const S=M=>{const{index:A,data:P,style:G}=M,V=c(d),{itemSize:I,estimatedSize:j}=c(h),{modelValue:F}=r.props,{onSelect:R,onHover:B}=r,N=P[A];if(N.type===\"Group\")return H(jj,{item:N,style:G,height:V?I:j},null);const U=p(F,N),J=g(F,U),re=m(A);return H(Qj,ft(M,{selected:U,disabled:i(N)||J,created:!!N.created,hovering:re,item:N,onSelect:R,onHover:B}),{default:le=>{var pe;return((pe=t.default)==null?void 0:pe.call(t,le))||H(\"span\",null,[o(N)])}})},{onKeyboardNavigate:C,onKeyboardSelect:E}=r,k=()=>{C(\"forward\")},T=()=>{C(\"backward\")},x=M=>{const{code:A}=M,{tab:P,esc:G,down:V,up:I,enter:j,numpadEnter:F}=Ne;switch(A!==P&&(M.preventDefault(),M.stopPropagation()),A){case P:case G:break;case V:k();break;case I:T();break;case j:case F:E();break}};return()=>{var M,A,P,G;const{data:V,width:I}=e,{height:j,multiple:F,scrollbarAlwaysOn:R}=r.props,B=c(d)?ck:fU;return H(\"div\",{class:[s.b(\"dropdown\"),s.is(\"multiple\",F)],style:{width:`${I}px`}},[(M=t.header)==null?void 0:M.call(t),((A=t.loading)==null?void 0:A.call(t))||((P=t.empty)==null?void 0:P.call(t))||H(B,ft({ref:u},c(h),{className:s.be(\"dropdown\",\"list\"),scrollbarAlwaysOn:R,data:V,height:j,width:I,total:V.length,onKeydown:x}),{default:N=>H(S,N,null)}),(G=t.footer)==null?void 0:G.call(t)])}}});function vU(e,t){const{aliasProps:n,getLabel:r,getValue:s}=Pd(e),o=W(0),a=W(),i=O(()=>e.allowCreate&&e.filterable);function l(v){const b=p=>r(p)===v;return e.options&&e.options.some(b)||t.createdOptions.some(b)}function u(v){i.value&&(e.multiple&&v.created?o.value++:a.value=v)}function f(v){if(i.value)if(v&&v.length>0){if(l(v))return;const b={[n.value.value]:v,[n.value.label]:v,created:!0,[n.value.disabled]:!1};t.createdOptions.length>=o.value?t.createdOptions[o.value]=b:t.createdOptions.push(b)}else if(e.multiple)t.createdOptions.length=o.value;else{const b=a.value;t.createdOptions.length=0,b&&b.created&&t.createdOptions.push(b)}}function d(v){if(!i.value||!v||!v.created||v.created&&e.reserveKeyword&&t.inputValue===r(v))return;const b=t.createdOptions.findIndex(p=>s(p)===s(v));~b&&(t.createdOptions.splice(b,1),o.value--)}function h(){i.value&&(t.createdOptions.length=0,o.value=0)}return{createNewOption:f,removeNewOption:d,selectNewOption:u,clearAllNewOption:h}}const mU=11,gU=(e,t)=>{const{t:n}=yt(),r=we(\"select\"),s=we(\"input\"),{form:o,formItem:a}=xn(),{inputId:i}=Cr(e,{formItemContext:a}),{aliasProps:l,getLabel:u,getValue:f,getDisabled:d,getOptions:h}=Pd(e),{valueOnClear:v,isEmptyValue:b}=Sd(e),p=St({inputValue:\"\",cachedOptions:[],createdOptions:[],hoveringIndex:-1,inputHovering:!1,selectionWidth:0,calculatorWidth:0,collapseItemWidth:0,previousQuery:null,previousValue:void 0,selectedLabel:\"\",menuVisibleOnFocus:!1,isBeforeHide:!1}),g=W(-1),m=W(),y=W(),_=W(),w=W(),S=W(),C=W(),E=W(),k=W(),T=W(),x=W(),M=W(),{isComposing:A,handleCompositionStart:P,handleCompositionEnd:G,handleCompositionUpdate:V}=ql({afterComposition:Le=>Mn(Le)}),{wrapperRef:I,isFocused:j,handleBlur:F}=_o(S,{beforeFocus(){return U.value},afterFocus(){e.automaticDropdown&&!N.value&&(N.value=!0,p.menuVisibleOnFocus=!0)},beforeBlur(Le){var nt,gt;return((nt=_.value)==null?void 0:nt.isFocusInsideContent(Le))||((gt=w.value)==null?void 0:gt.isFocusInsideContent(Le))},afterBlur(){N.value=!1,p.menuVisibleOnFocus=!1}}),R=W([]),B=W([]),N=W(!1),U=O(()=>e.disabled||(o==null?void 0:o.disabled)),J=O(()=>{var Le;return(Le=o==null?void 0:o.statusIcon)!=null?Le:!1}),re=O(()=>{const Le=B.value.length*e.itemHeight;return Le>e.height?e.height:Le}),le=O(()=>e.multiple?ke(e.modelValue)&&e.modelValue.length>0:!b(e.modelValue)),pe=O(()=>e.clearable&&!U.value&&p.inputHovering&&le.value),K=O(()=>e.remote&&e.filterable?\"\":As),z=O(()=>K.value&&r.is(\"reverse\",N.value)),te=O(()=>(a==null?void 0:a.validateState)||\"\"),oe=O(()=>{if(te.value)return Td[te.value]}),he=O(()=>e.remote?300:0),Y=O(()=>e.loading?e.loadingText||n(\"el.select.loading\"):e.remote&&!p.inputValue&&R.value.length===0?!1:e.filterable&&p.inputValue&&R.value.length>0&&B.value.length===0?e.noMatchText||n(\"el.select.noMatch\"):R.value.length===0?e.noDataText||n(\"el.select.noData\"):null),L=Le=>{const nt=gt=>{if(e.filterable&&Ke(e.filterMethod)||e.filterable&&e.remote&&Ke(e.remoteMethod))return!0;const Tt=new RegExp(tm(Le),\"i\");return Le?Tt.test(u(gt)||\"\"):!0};return e.loading?[]:[...p.createdOptions,...e.options].reduce((gt,Tt)=>{const Fn=h(Tt);if(ke(Fn)){const ds=Fn.filter(nt);ds.length>0&&gt.push({label:u(Tt),type:\"Group\"},...ds)}else(e.remote||nt(Tt))&&gt.push(Tt);return gt},[])},Q=()=>{R.value=L(\"\"),B.value=L(p.inputValue)},se=O(()=>{const Le=new Map;return R.value.forEach((nt,gt)=>{Le.set(_t(f(nt)),{option:nt,index:gt})}),Le}),ge=O(()=>{const Le=new Map;return B.value.forEach((nt,gt)=>{Le.set(_t(f(nt)),{option:nt,index:gt})}),Le}),ae=O(()=>B.value.every(Le=>d(Le))),_e=sn(),me=O(()=>_e.value===\"small\"?\"small\":\"default\"),Ce=()=>{var Le;g.value=((Le=m.value)==null?void 0:Le.offsetWidth)||200},Te=()=>{if(!y.value)return 0;const Le=window.getComputedStyle(y.value);return Number.parseFloat(Le.gap||\"6px\")},Se=O(()=>{const Le=Te();return{maxWidth:`${M.value&&e.maxCollapseTags===1?p.selectionWidth-p.collapseItemWidth-Le:p.selectionWidth}px`}}),Ie=O(()=>({maxWidth:`${p.selectionWidth}px`})),be=O(()=>({width:`${Math.max(p.calculatorWidth,mU)}px`})),Ae=O(()=>ke(e.modelValue)?e.modelValue.length===0&&!p.inputValue:e.filterable?!p.inputValue:!0),qe=O(()=>{var Le;const nt=(Le=e.placeholder)!=null?Le:n(\"el.select.placeholder\");return e.multiple||!le.value?nt:p.selectedLabel}),tt=O(()=>{var Le,nt;return(nt=(Le=_.value)==null?void 0:Le.popperRef)==null?void 0:nt.contentRef}),et=O(()=>{if(e.multiple){const Le=e.modelValue.length;if(e.modelValue.length>0&&ge.value.has(e.modelValue[Le-1])){const{index:nt}=ge.value.get(e.modelValue[Le-1]);return nt}}else if(!b(e.modelValue)&&ge.value.has(e.modelValue)){const{index:Le}=ge.value.get(e.modelValue);return Le}return-1}),at=O({get(){return N.value&&Y.value!==!1},set(Le){N.value=Le}}),ht=O(()=>e.multiple?e.collapseTags?p.cachedOptions.slice(0,e.maxCollapseTags):p.cachedOptions:[]),Ct=O(()=>e.multiple?e.collapseTags?p.cachedOptions.slice(e.maxCollapseTags):[]:[]),{createNewOption:fe,removeNewOption:$e,selectNewOption:ce,clearAllNewOption:Re}=vU(e,p),ne=()=>{U.value||(p.menuVisibleOnFocus?p.menuVisibleOnFocus=!1:N.value=!N.value)},Pe=()=>{p.inputValue.length>0&&!N.value&&(N.value=!0),fe(p.inputValue),mt(p.inputValue)},rt=nr(Pe,he.value),mt=Le=>{p.previousQuery===Le||A.value||(p.previousQuery=Le,e.filterable&&Ke(e.filterMethod)?e.filterMethod(Le):e.filterable&&e.remote&&Ke(e.remoteMethod)&&e.remoteMethod(Le),e.defaultFirstOption&&(e.filterable||e.remote)&&B.value.length?je(Me):je(ln))},Me=()=>{const Le=B.value.filter(Tt=>!Tt.disabled&&Tt.type!==\"Group\"),nt=Le.find(Tt=>Tt.created),gt=Le[0];p.hoveringIndex=qt(B.value,nt||gt)},xt=Le=>{wn(e.modelValue,Le)||t(Bt,Le)},nn=Le=>{t(ot,Le),xt(Le),p.previousValue=e.multiple?String(Le):Le},qt=(Le=[],nt)=>{if(!lt(nt))return Le.indexOf(nt);const gt=e.valueKey;let Tt=-1;return Le.some((Fn,ds)=>rn(Fn,gt)===rn(nt,gt)?(Tt=ds,!0):!1),Tt},_t=Le=>lt(Le)?rn(Le,e.valueKey):Le,Nn=()=>{Ce()},nc=()=>{p.selectionWidth=y.value.getBoundingClientRect().width},rc=()=>{p.calculatorWidth=C.value.getBoundingClientRect().width},sc=()=>{p.collapseItemWidth=M.value.getBoundingClientRect().width},ba=()=>{var Le,nt;(nt=(Le=_.value)==null?void 0:Le.updatePopper)==null||nt.call(Le)},yo=()=>{var Le,nt;(nt=(Le=w.value)==null?void 0:Le.updatePopper)==null||nt.call(Le)},oc=Le=>{if(e.multiple){let nt=e.modelValue.slice();const gt=qt(nt,f(Le));gt>-1?(nt=[...nt.slice(0,gt),...nt.slice(gt+1)],p.cachedOptions.splice(gt,1),$e(Le)):(e.multipleLimit<=0||nt.length<e.multipleLimit)&&(nt=[...nt,f(Le)],p.cachedOptions.push(Le),ce(Le)),nn(nt),Le.created&&mt(\"\"),e.filterable&&!e.reserveKeyword&&(p.inputValue=\"\")}else p.selectedLabel=u(Le),nn(f(Le)),N.value=!1,ce(Le),Le.created||Re();ii()},Kd=(Le,nt)=>{let gt=e.modelValue.slice();const Tt=qt(gt,f(nt));Tt>-1&&!U.value&&(gt=[...e.modelValue.slice(0,Tt),...e.modelValue.slice(Tt+1)],p.cachedOptions.splice(Tt,1),nn(gt),t(\"remove-tag\",f(nt)),$e(nt)),Le.stopPropagation(),ii()},ii=()=>{var Le;(Le=S.value)==null||Le.focus()},ic=()=>{var Le;if(N.value){N.value=!1,je(()=>{var nt;return(nt=S.value)==null?void 0:nt.blur()});return}(Le=S.value)==null||Le.blur()},jd=()=>{p.inputValue.length>0?p.inputValue=\"\":N.value=!1},Ud=Le=>yS(Le,nt=>!p.cachedOptions.some(gt=>f(gt)===nt&&d(gt))),qd=Le=>{if(e.multiple&&Le.code!==Ne.delete&&p.inputValue.length===0){Le.preventDefault();const nt=e.modelValue.slice(),gt=Ud(nt);if(gt<0)return;const Tt=nt[gt];nt.splice(gt,1);const Fn=p.cachedOptions[gt];p.cachedOptions.splice(gt,1),$e(Fn),nn(nt),t(\"remove-tag\",Tt)}},Yd=()=>{let Le;ke(e.modelValue)?Le=[]:Le=v.value,e.multiple?p.cachedOptions=[]:p.selectedLabel=\"\",N.value=!1,nn(Le),t(\"clear\"),Re(),ii()},De=(Le,nt=void 0)=>{const gt=B.value;if(![\"forward\",\"backward\"].includes(Le)||U.value||gt.length<=0||ae.value||A.value)return;if(!N.value)return ne();nt===void 0&&(nt=p.hoveringIndex);let Tt=-1;Le===\"forward\"?(Tt=nt+1,Tt>=gt.length&&(Tt=0)):Le===\"backward\"&&(Tt=nt-1,(Tt<0||Tt>=gt.length)&&(Tt=gt.length-1));const Fn=gt[Tt];if(d(Fn)||Fn.type===\"Group\")return De(Le,Tt);p.hoveringIndex=Tt,Ps(Tt)},Ze=()=>{if(N.value)~p.hoveringIndex&&B.value[p.hoveringIndex]&&oc(B.value[p.hoveringIndex]);else return ne()},Ot=Le=>{p.hoveringIndex=Le??-1},ln=()=>{e.multiple?p.hoveringIndex=B.value.findIndex(Le=>e.modelValue.some(nt=>_t(nt)===_t(Le))):p.hoveringIndex=B.value.findIndex(Le=>_t(Le)===_t(e.modelValue))},Mn=Le=>{if(p.inputValue=Le.target.value,e.remote)rt();else return Pe()},Is=Le=>{if(N.value=!1,j.value){const nt=new FocusEvent(\"focus\",Le);F(nt)}},Wr=()=>(p.isBeforeHide=!1,je(()=>{~et.value&&Ps(p.hoveringIndex)})),Ps=Le=>{T.value.scrollToItem(Le)},wo=(Le,nt)=>{const gt=_t(Le);if(se.value.has(gt)){const{option:Tt}=se.value.get(gt);return Tt}if(nt&&nt.length){const Tt=nt.find(Fn=>_t(f(Fn))===gt);if(Tt)return Tt}return{[l.value.value]:Le,[l.value.label]:Le}},ya=(Le=!1)=>{if(e.multiple)if(e.modelValue.length>0){const nt=p.cachedOptions.slice();p.cachedOptions.length=0,p.previousValue=e.modelValue.toString();for(const gt of e.modelValue){const Tt=wo(gt,nt);p.cachedOptions.push(Tt)}}else p.cachedOptions=[],p.previousValue=void 0;else if(le.value){p.previousValue=e.modelValue;const nt=B.value,gt=nt.findIndex(Tt=>_t(f(Tt))===_t(e.modelValue));~gt?p.selectedLabel=u(nt[gt]):(!p.selectedLabel||Le)&&(p.selectedLabel=_t(e.modelValue))}else p.selectedLabel=\"\",p.previousValue=void 0;Re(),Ce()};return ye(N,Le=>{Le?mt(\"\"):(p.inputValue=\"\",p.previousQuery=null,p.isBeforeHide=!0,fe(\"\")),t(\"visible-change\",Le)}),ye(()=>e.modelValue,(Le,nt)=>{var gt;(!Le||ke(Le)&&Le.length===0||e.multiple&&!wn(Le.toString(),p.previousValue)||!e.multiple&&_t(Le)!==_t(p.previousValue))&&ya(!0),!wn(Le,nt)&&e.validateEvent&&((gt=a==null?void 0:a.validate)==null||gt.call(a,\"change\").catch(Fn=>void 0))},{deep:!0}),ye(()=>e.options,()=>{const Le=S.value;(!Le||Le&&document.activeElement!==Le)&&ya()},{deep:!0,flush:\"post\"}),ye(()=>B.value,()=>T.value&&je(T.value.resetScrollTop)),En(()=>{p.isBeforeHide||Q()}),En(()=>{const{valueKey:Le,options:nt}=e,gt=new Map;for(const Tt of nt){const Fn=f(Tt);let ds=Fn;if(lt(ds)&&(ds=rn(Fn,Le)),gt.get(ds))break;gt.set(ds,!0)}}),it(()=>{ya()}),jt(m,Nn),jt(y,nc),jt(C,rc),jt(T,ba),jt(I,ba),jt(x,yo),jt(M,sc),{inputId:i,collapseTagSize:me,currentPlaceholder:qe,expanded:N,emptyText:Y,popupHeight:re,debounce:he,allOptions:R,filteredOptions:B,iconComponent:K,iconReverse:z,tagStyle:Se,collapseTagStyle:Ie,inputStyle:be,popperSize:g,dropdownMenuVisible:at,hasModelValue:le,shouldShowPlaceholder:Ae,selectDisabled:U,selectSize:_e,needStatusIcon:J,showClearBtn:pe,states:p,isFocused:j,nsSelect:r,nsInput:s,calculatorRef:C,inputRef:S,menuRef:T,tagMenuRef:x,tooltipRef:_,tagTooltipRef:w,selectRef:m,wrapperRef:I,selectionRef:y,prefixRef:E,suffixRef:k,collapseItemRef:M,popperRef:tt,validateState:te,validateIcon:oe,showTagList:ht,collapseTagList:Ct,debouncedOnInputChange:rt,deleteTag:Kd,getLabel:u,getValue:f,getDisabled:d,getValueKey:_t,handleClear:Yd,handleClickOutside:Is,handleDel:qd,handleEsc:jd,focus:ii,blur:ic,handleMenuEnter:Wr,handleResize:Nn,resetSelectionWidth:nc,resetCalculatorWidth:rc,updateTooltip:ba,updateTagTooltip:yo,updateOptions:Q,toggleMenu:ne,scrollTo:Ps,onInput:Mn,onKeyboardNavigate:De,onKeyboardSelect:Ze,onSelect:oc,onHover:Ot,handleCompositionStart:P,handleCompositionEnd:G,handleCompositionUpdate:V}},_U=ee({name:\"ElSelectV2\",components:{ElSelectMenu:pU,ElTag:Yi,ElTooltip:Cn,ElIcon:He},directives:{ClickOutside:Es},props:qj,emits:Gj,setup(e,{emit:t}){const n=O(()=>{const{modelValue:o,multiple:a}=e,i=a?[]:void 0;return ke(o)?a?o:i:a?i:o}),r=gU(St({...hn(e),modelValue:n}),t);pt(Sm,{props:St({...hn(e),height:r.popupHeight,modelValue:n}),expanded:r.expanded,tooltipRef:r.tooltipRef,onSelect:r.onSelect,onHover:r.onHover,onKeyboardNavigate:r.onKeyboardNavigate,onKeyboardSelect:r.onKeyboardSelect});const s=O(()=>e.multiple?r.states.cachedOptions.map(o=>o.label):r.states.selectedLabel);return{...r,modelValue:n,selectedLabel:s}}});function bU(e,t,n,r,s,o){const a=ut(\"el-tag\"),i=ut(\"el-tooltip\"),l=ut(\"el-icon\"),u=ut(\"el-select-menu\"),f=ed(\"click-outside\");return st(($(),X(\"div\",{ref:\"selectRef\",class:D([e.nsSelect.b(),e.nsSelect.m(e.selectSize)]),onMouseenter:d=>e.states.inputHovering=!0,onMouseleave:d=>e.states.inputHovering=!1},[H(i,{ref:\"tooltipRef\",visible:e.dropdownMenuVisible,teleported:e.teleported,\"popper-class\":[e.nsSelect.e(\"popper\"),e.popperClass],\"gpu-acceleration\":!1,\"stop-popper-mouse-event\":!1,\"popper-options\":e.popperOptions,\"fallback-placements\":e.fallbackPlacements,effect:e.effect,placement:e.placement,pure:\"\",transition:`${e.nsSelect.namespace.value}-zoom-in-top`,trigger:\"click\",persistent:e.persistent,\"append-to\":e.appendTo,\"show-arrow\":e.showArrow,offset:e.offset,onBeforeShow:e.handleMenuEnter,onHide:d=>e.states.isBeforeHide=!1},{default:q(()=>[Z(\"div\",{ref:\"wrapperRef\",class:D([e.nsSelect.e(\"wrapper\"),e.nsSelect.is(\"focused\",e.isFocused),e.nsSelect.is(\"hovering\",e.states.inputHovering),e.nsSelect.is(\"filterable\",e.filterable),e.nsSelect.is(\"disabled\",e.selectDisabled)]),onClick:Xe(e.toggleMenu,[\"prevent\"])},[e.$slots.prefix?($(),X(\"div\",{key:0,ref:\"prefixRef\",class:D(e.nsSelect.e(\"prefix\"))},[ue(e.$slots,\"prefix\")],2)):de(\"v-if\",!0),Z(\"div\",{ref:\"selectionRef\",class:D([e.nsSelect.e(\"selection\"),e.nsSelect.is(\"near\",e.multiple&&!e.$slots.prefix&&!!e.modelValue.length)])},[e.multiple?ue(e.$slots,\"tag\",{key:0},()=>[($(!0),X(We,null,vt(e.showTagList,d=>($(),X(\"div\",{key:e.getValueKey(e.getValue(d)),class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{closable:!e.selectDisabled&&!e.getDisabled(d),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,\"disable-transitions\":\"\",style:Ue(e.tagStyle),onClose:h=>e.deleteTag(h,d)},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},[ue(e.$slots,\"label\",{label:e.getLabel(d),value:e.getValue(d)},()=>[Ve(Ee(e.getLabel(d)),1)])],2)]),_:2},1032,[\"closable\",\"size\",\"type\",\"effect\",\"style\",\"onClose\"])],2))),128)),e.collapseTags&&e.modelValue.length>e.maxCollapseTags?($(),ve(i,{key:0,ref:\"tagTooltipRef\",disabled:e.dropdownMenuVisible||!e.collapseTagsTooltip,\"fallback-placements\":[\"bottom\",\"top\",\"right\",\"left\"],effect:e.effect,placement:\"bottom\",teleported:e.teleported},{default:q(()=>[Z(\"div\",{ref:\"collapseItemRef\",class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{closable:!1,size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,style:Ue(e.collapseTagStyle),\"disable-transitions\":\"\"},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},\" + \"+Ee(e.modelValue.length-e.maxCollapseTags),3)]),_:1},8,[\"size\",\"type\",\"effect\",\"style\"])],2)]),content:q(()=>[Z(\"div\",{ref:\"tagMenuRef\",class:D(e.nsSelect.e(\"selection\"))},[($(!0),X(We,null,vt(e.collapseTagList,d=>($(),X(\"div\",{key:e.getValueKey(e.getValue(d)),class:D(e.nsSelect.e(\"selected-item\"))},[H(a,{class:\"in-tooltip\",closable:!e.selectDisabled&&!e.getDisabled(d),size:e.collapseTagSize,type:e.tagType,effect:e.tagEffect,\"disable-transitions\":\"\",onClose:h=>e.deleteTag(h,d)},{default:q(()=>[Z(\"span\",{class:D(e.nsSelect.e(\"tags-text\"))},[ue(e.$slots,\"label\",{label:e.getLabel(d),value:e.getValue(d)},()=>[Ve(Ee(e.getLabel(d)),1)])],2)]),_:2},1032,[\"closable\",\"size\",\"type\",\"effect\",\"onClose\"])],2))),128))],2)]),_:3},8,[\"disabled\",\"effect\",\"teleported\"])):de(\"v-if\",!0)]):de(\"v-if\",!0),Z(\"div\",{class:D([e.nsSelect.e(\"selected-item\"),e.nsSelect.e(\"input-wrapper\"),e.nsSelect.is(\"hidden\",!e.filterable)])},[st(Z(\"input\",{id:e.inputId,ref:\"inputRef\",\"onUpdate:modelValue\":d=>e.states.inputValue=d,style:Ue(e.inputStyle),autocomplete:e.autocomplete,tabindex:e.tabindex,\"aria-autocomplete\":\"list\",\"aria-haspopup\":\"listbox\",autocapitalize:\"off\",\"aria-expanded\":e.expanded,\"aria-label\":e.ariaLabel,class:D([e.nsSelect.e(\"input\"),e.nsSelect.is(e.selectSize)]),disabled:e.selectDisabled,role:\"combobox\",readonly:!e.filterable,spellcheck:\"false\",type:\"text\",name:e.name,onInput:e.onInput,onCompositionstart:e.handleCompositionStart,onCompositionupdate:e.handleCompositionUpdate,onCompositionend:e.handleCompositionEnd,onKeydown:[Ht(Xe(d=>e.onKeyboardNavigate(\"backward\"),[\"stop\",\"prevent\"]),[\"up\"]),Ht(Xe(d=>e.onKeyboardNavigate(\"forward\"),[\"stop\",\"prevent\"]),[\"down\"]),Ht(Xe(e.onKeyboardSelect,[\"stop\",\"prevent\"]),[\"enter\"]),Ht(Xe(e.handleEsc,[\"stop\",\"prevent\"]),[\"esc\"]),Ht(Xe(e.handleDel,[\"stop\"]),[\"delete\"])],onClick:Xe(e.toggleMenu,[\"stop\"])},null,46,[\"id\",\"onUpdate:modelValue\",\"autocomplete\",\"tabindex\",\"aria-expanded\",\"aria-label\",\"disabled\",\"readonly\",\"name\",\"onInput\",\"onCompositionstart\",\"onCompositionupdate\",\"onCompositionend\",\"onKeydown\",\"onClick\"]),[[rd,e.states.inputValue]]),e.filterable?($(),X(\"span\",{key:0,ref:\"calculatorRef\",\"aria-hidden\":\"true\",class:D(e.nsSelect.e(\"input-calculator\")),textContent:Ee(e.states.inputValue)},null,10,[\"textContent\"])):de(\"v-if\",!0)],2),e.shouldShowPlaceholder?($(),X(\"div\",{key:1,class:D([e.nsSelect.e(\"selected-item\"),e.nsSelect.e(\"placeholder\"),e.nsSelect.is(\"transparent\",!e.hasModelValue||e.expanded&&!e.states.inputValue)])},[e.hasModelValue?ue(e.$slots,\"label\",{key:0,label:e.currentPlaceholder,value:e.modelValue},()=>[Z(\"span\",null,Ee(e.currentPlaceholder),1)]):($(),X(\"span\",{key:1},Ee(e.currentPlaceholder),1))],2)):de(\"v-if\",!0)],2),Z(\"div\",{ref:\"suffixRef\",class:D(e.nsSelect.e(\"suffix\"))},[e.iconComponent?st(($(),ve(l,{key:0,class:D([e.nsSelect.e(\"caret\"),e.nsInput.e(\"icon\"),e.iconReverse])},{default:q(()=>[($(),ve(dt(e.iconComponent)))]),_:1},8,[\"class\"])),[[Et,!e.showClearBtn]]):de(\"v-if\",!0),e.showClearBtn&&e.clearIcon?($(),ve(l,{key:1,class:D([e.nsSelect.e(\"caret\"),e.nsInput.e(\"icon\"),e.nsSelect.e(\"clear\")]),onClick:Xe(e.handleClear,[\"prevent\",\"stop\"])},{default:q(()=>[($(),ve(dt(e.clearIcon)))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0),e.validateState&&e.validateIcon&&e.needStatusIcon?($(),ve(l,{key:2,class:D([e.nsInput.e(\"icon\"),e.nsInput.e(\"validateIcon\")])},{default:q(()=>[($(),ve(dt(e.validateIcon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2)],10,[\"onClick\"])]),content:q(()=>[H(u,{ref:\"menuRef\",data:e.filteredOptions,width:e.popperSize,\"hovering-index\":e.states.hoveringIndex,\"scrollbar-always-on\":e.scrollbarAlwaysOn},_r({default:q(d=>[ue(e.$slots,\"default\",xr(ro(d)))]),_:2},[e.$slots.header?{name:\"header\",fn:q(()=>[Z(\"div\",{class:D(e.nsSelect.be(\"dropdown\",\"header\"))},[ue(e.$slots,\"header\")],2)])}:void 0,e.$slots.loading&&e.loading?{name:\"loading\",fn:q(()=>[Z(\"div\",{class:D(e.nsSelect.be(\"dropdown\",\"loading\"))},[ue(e.$slots,\"loading\")],2)])}:e.loading||e.filteredOptions.length===0?{name:\"empty\",fn:q(()=>[Z(\"div\",{class:D(e.nsSelect.be(\"dropdown\",\"empty\"))},[ue(e.$slots,\"empty\",{},()=>[Z(\"span\",null,Ee(e.emptyText),1)])],2)])}:void 0,e.$slots.footer?{name:\"footer\",fn:q(()=>[Z(\"div\",{class:D(e.nsSelect.be(\"dropdown\",\"footer\"))},[ue(e.$slots,\"footer\")],2)])}:void 0]),1032,[\"data\",\"width\",\"hovering-index\",\"scrollbar-always-on\"])]),_:3},8,[\"visible\",\"teleported\",\"popper-class\",\"popper-options\",\"fallback-placements\",\"effect\",\"placement\",\"transition\",\"persistent\",\"append-to\",\"show-arrow\",\"offset\",\"onBeforeShow\",\"onHide\"])],42,[\"onMouseenter\",\"onMouseleave\"])),[[f,e.handleClickOutside,e.popperRef]])}var yU=Oe(_U,[[\"render\",bU],[\"__file\",\"select.vue\"]]);const wU=Qe(yU),SU=xe({animated:{type:Boolean,default:!1},count:{type:Number,default:1},rows:{type:Number,default:3},loading:{type:Boolean,default:!0},throttle:{type:ie([Number,Object])}}),CU=xe({variant:{type:String,values:[\"circle\",\"rect\",\"h1\",\"h3\",\"text\",\"caption\",\"p\",\"image\",\"button\"],default:\"text\"}}),kU=ee({name:\"ElSkeletonItem\"}),EU=ee({...kU,props:CU,setup(e){const t=we(\"skeleton\");return(n,r)=>($(),X(\"div\",{class:D([c(t).e(\"item\"),c(t).e(n.variant)])},[n.variant===\"image\"?($(),ve(c(F6),{key:0})):de(\"v-if\",!0)],2))}});var Nu=Oe(EU,[[\"__file\",\"skeleton-item.vue\"]]);const TU=(e,t=0)=>{if(t===0)return e;const n=lt(t)&&!!t.initVal,r=W(n);let s=null;const o=i=>{if(Lt(i)){r.value=e.value;return}s&&clearTimeout(s),s=setTimeout(()=>{r.value=e.value},i)},a=i=>{i===\"leading\"?Ge(t)?o(t):o(t.leading):lt(t)?o(t.trailing):r.value=!1};return it(()=>a(\"leading\")),ye(()=>e.value,i=>{a(i?\"leading\":\"trailing\")}),r},RU=ee({name:\"ElSkeleton\"}),xU=ee({...RU,props:SU,setup(e,{expose:t}){const n=e,r=we(\"skeleton\"),s=TU(At(n,\"loading\"),n.throttle);return t({uiLoading:s}),(o,a)=>c(s)?($(),X(\"div\",ft({key:0,class:[c(r).b(),c(r).is(\"animated\",o.animated)]},o.$attrs),[($(!0),X(We,null,vt(o.count,i=>($(),X(We,{key:i},[c(s)?ue(o.$slots,\"template\",{key:i},()=>[H(Nu,{class:D(c(r).is(\"first\")),variant:\"p\"},null,8,[\"class\"]),($(!0),X(We,null,vt(o.rows,l=>($(),ve(Nu,{key:l,class:D([c(r).e(\"paragraph\"),c(r).is(\"last\",l===o.rows&&o.rows>1)]),variant:\"p\"},null,8,[\"class\"]))),128))]):de(\"v-if\",!0)],64))),128))],16)):ue(o.$slots,\"default\",xr(ft({key:1},o.$attrs)))}});var OU=Oe(xU,[[\"__file\",\"skeleton.vue\"]]);const MU=Qe(OU,{SkeletonItem:Nu}),AU=Gt(Nu),dk=Symbol(\"sliderContextKey\"),$U=xe({modelValue:{type:ie([Number,Array]),default:0},id:{type:String,default:void 0},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},showInput:Boolean,showInputControls:{type:Boolean,default:!0},size:on,inputSize:on,showStops:Boolean,showTooltip:{type:Boolean,default:!0},formatTooltip:{type:ie(Function),default:void 0},disabled:Boolean,range:Boolean,vertical:Boolean,height:String,debounce:{type:Number,default:300},rangeStartLabel:{type:String,default:void 0},rangeEndLabel:{type:String,default:void 0},formatValueText:{type:ie(Function),default:void 0},tooltipClass:{type:String,default:void 0},placement:{type:String,values:$s,default:\"top\"},marks:{type:ie(Object)},validateEvent:{type:Boolean,default:!0},...kn([\"ariaLabel\"])}),Df=e=>Ge(e)||ke(e)&&e.every(Ge),LU={[ot]:Df,[Tn]:Df,[Bt]:Df},IU=xe({modelValue:{type:Number,default:0},vertical:Boolean,tooltipClass:String,placement:{type:String,values:$s,default:\"top\"}}),PU={[ot]:e=>Ge(e)},DU=(e,t,n)=>{const r=W(),s=W(!1),o=O(()=>t.value instanceof Function),a=O(()=>o.value&&t.value(e.modelValue)||e.modelValue),i=nr(()=>{n.value&&(s.value=!0)},50),l=nr(()=>{n.value&&(s.value=!1)},50);return{tooltip:r,tooltipVisible:s,formatValue:a,displayTooltip:i,hideTooltip:l}},BU=(e,t,n)=>{const{disabled:r,min:s,max:o,step:a,showTooltip:i,precision:l,sliderSize:u,formatTooltip:f,emitChange:d,resetSize:h,updateDragging:v}=Fe(dk),{tooltip:b,tooltipVisible:p,formatValue:g,displayTooltip:m,hideTooltip:y}=DU(e,f,i),_=W(),w=O(()=>`${(e.modelValue-s.value)/(o.value-s.value)*100}%`),S=O(()=>e.vertical?{bottom:w.value}:{left:w.value}),C=()=>{t.hovering=!0,m()},E=()=>{t.hovering=!1,t.dragging||y()},k=U=>{r.value||(U.preventDefault(),F(U),window.addEventListener(\"mousemove\",R),window.addEventListener(\"touchmove\",R),window.addEventListener(\"mouseup\",B),window.addEventListener(\"touchend\",B),window.addEventListener(\"contextmenu\",B),_.value.focus())},T=U=>{r.value||(t.newPosition=Number.parseFloat(w.value)+U/(o.value-s.value)*100,N(t.newPosition),d())},x=()=>{T(-a.value)},M=()=>{T(a.value)},A=()=>{T(-a.value*4)},P=()=>{T(a.value*4)},G=()=>{r.value||(N(0),d())},V=()=>{r.value||(N(100),d())},I=U=>{let J=!0;switch(U.code){case Ne.left:case Ne.down:x();break;case Ne.right:case Ne.up:M();break;case Ne.home:G();break;case Ne.end:V();break;case Ne.pageDown:A();break;case Ne.pageUp:P();break;default:J=!1;break}J&&U.preventDefault()},j=U=>{let J,re;return U.type.startsWith(\"touch\")?(re=U.touches[0].clientY,J=U.touches[0].clientX):(re=U.clientY,J=U.clientX),{clientX:J,clientY:re}},F=U=>{t.dragging=!0,t.isClick=!0;const{clientX:J,clientY:re}=j(U);e.vertical?t.startY=re:t.startX=J,t.startPosition=Number.parseFloat(w.value),t.newPosition=t.startPosition},R=U=>{if(t.dragging){t.isClick=!1,m(),h();let J;const{clientX:re,clientY:le}=j(U);e.vertical?(t.currentY=le,J=(t.startY-t.currentY)/u.value*100):(t.currentX=re,J=(t.currentX-t.startX)/u.value*100),t.newPosition=t.startPosition+J,N(t.newPosition)}},B=()=>{t.dragging&&(setTimeout(()=>{t.dragging=!1,t.hovering||y(),t.isClick||N(t.newPosition),d()},0),window.removeEventListener(\"mousemove\",R),window.removeEventListener(\"touchmove\",R),window.removeEventListener(\"mouseup\",B),window.removeEventListener(\"touchend\",B),window.removeEventListener(\"contextmenu\",B))},N=async U=>{if(U===null||Number.isNaN(+U))return;U<0?U=0:U>100&&(U=100);const J=100/((o.value-s.value)/a.value);let le=Math.round(U/J)*J*(o.value-s.value)*.01+s.value;le=Number.parseFloat(le.toFixed(l.value)),le!==e.modelValue&&n(ot,le),!t.dragging&&e.modelValue!==t.oldValue&&(t.oldValue=e.modelValue),await je(),t.dragging&&m(),b.value.updatePopper()};return ye(()=>t.dragging,U=>{v(U)}),It(_,\"touchstart\",k,{passive:!1}),{disabled:r,button:_,tooltip:b,tooltipVisible:p,showTooltip:i,wrapperStyle:S,formatValue:g,handleMouseEnter:C,handleMouseLeave:E,onButtonDown:k,onKeyDown:I,setPosition:N}},NU=ee({name:\"ElSliderButton\"}),FU=ee({...NU,props:IU,emits:PU,setup(e,{expose:t,emit:n}){const r=e,s=we(\"slider\"),o=St({hovering:!1,dragging:!1,isClick:!1,startX:0,currentX:0,startY:0,currentY:0,startPosition:0,newPosition:0,oldValue:r.modelValue}),{disabled:a,button:i,tooltip:l,showTooltip:u,tooltipVisible:f,wrapperStyle:d,formatValue:h,handleMouseEnter:v,handleMouseLeave:b,onButtonDown:p,onKeyDown:g,setPosition:m}=BU(r,o,n),{hovering:y,dragging:_}=hn(o);return t({onButtonDown:p,onKeyDown:g,setPosition:m,hovering:y,dragging:_}),(w,S)=>($(),X(\"div\",{ref_key:\"button\",ref:i,class:D([c(s).e(\"button-wrapper\"),{hover:c(y),dragging:c(_)}]),style:Ue(c(d)),tabindex:c(a)?-1:0,onMouseenter:c(v),onMouseleave:c(b),onMousedown:c(p),onFocus:c(v),onBlur:c(b),onKeydown:c(g)},[H(c(Cn),{ref_key:\"tooltip\",ref:l,visible:c(f),placement:w.placement,\"fallback-placements\":[\"top\",\"bottom\",\"right\",\"left\"],\"stop-popper-mouse-event\":!1,\"popper-class\":w.tooltipClass,disabled:!c(u),persistent:c(u)},{content:q(()=>[Z(\"span\",null,Ee(c(h)),1)]),default:q(()=>[Z(\"div\",{class:D([c(s).e(\"button\"),{hover:c(y),dragging:c(_)}])},null,2)]),_:1},8,[\"visible\",\"placement\",\"popper-class\",\"disabled\",\"persistent\"])],46,[\"tabindex\",\"onMouseenter\",\"onMouseleave\",\"onMousedown\",\"onFocus\",\"onBlur\",\"onKeydown\"]))}});var Ab=Oe(FU,[[\"__file\",\"button.vue\"]]);const HU=xe({mark:{type:ie([String,Object]),default:void 0}});var VU=ee({name:\"ElSliderMarker\",props:HU,setup(e){const t=we(\"slider\"),n=O(()=>ze(e.mark)?e.mark:e.mark.label),r=O(()=>ze(e.mark)?void 0:e.mark.style);return()=>Ye(\"div\",{class:t.e(\"marks-text\"),style:r.value},n.value)}});const zU=(e,t,n)=>{const{form:r,formItem:s}=xn(),o=Wt(),a=W(),i=W(),l={firstButton:a,secondButton:i},u=O(()=>e.disabled||(r==null?void 0:r.disabled)||!1),f=O(()=>Math.min(t.firstValue,t.secondValue)),d=O(()=>Math.max(t.firstValue,t.secondValue)),h=O(()=>e.range?`${100*(d.value-f.value)/(e.max-e.min)}%`:`${100*(t.firstValue-e.min)/(e.max-e.min)}%`),v=O(()=>e.range?`${100*(f.value-e.min)/(e.max-e.min)}%`:\"0%\"),b=O(()=>e.vertical?{height:e.height}:{}),p=O(()=>e.vertical?{height:h.value,bottom:v.value}:{width:h.value,left:v.value}),g=()=>{o.value&&(t.sliderSize=o.value[`client${e.vertical?\"Height\":\"Width\"}`])},m=A=>{const P=e.min+A*(e.max-e.min)/100;if(!e.range)return a;let G;return Math.abs(f.value-P)<Math.abs(d.value-P)?G=t.firstValue<t.secondValue?\"firstButton\":\"secondButton\":G=t.firstValue>t.secondValue?\"firstButton\":\"secondButton\",l[G]},y=A=>{const P=m(A);return P.value.setPosition(A),P},_=A=>{t.firstValue=A??e.min,S(e.range?[f.value,d.value]:A??e.min)},w=A=>{t.secondValue=A,e.range&&S([f.value,d.value])},S=A=>{n(ot,A),n(Tn,A)},C=async()=>{await je(),n(Bt,e.range?[f.value,d.value]:e.modelValue)},E=A=>{var P,G,V,I,j,F;if(u.value||t.dragging)return;g();let R=0;if(e.vertical){const B=(V=(G=(P=A.touches)==null?void 0:P.item(0))==null?void 0:G.clientY)!=null?V:A.clientY;R=(o.value.getBoundingClientRect().bottom-B)/t.sliderSize*100}else{const B=(F=(j=(I=A.touches)==null?void 0:I.item(0))==null?void 0:j.clientX)!=null?F:A.clientX,N=o.value.getBoundingClientRect().left;R=(B-N)/t.sliderSize*100}if(!(R<0||R>100))return y(R)};return{elFormItem:s,slider:o,firstButton:a,secondButton:i,sliderDisabled:u,minValue:f,maxValue:d,runwayStyle:b,barStyle:p,resetSize:g,setPosition:y,emitChange:C,onSliderWrapperPrevent:A=>{var P,G;((P=l.firstButton.value)!=null&&P.dragging||(G=l.secondButton.value)!=null&&G.dragging)&&A.preventDefault()},onSliderClick:A=>{E(A)&&C()},onSliderDown:async A=>{const P=E(A);P&&(await je(),P.value.onButtonDown(A))},onSliderMarkerDown:A=>{u.value||t.dragging||y(A)},setFirstValue:_,setSecondValue:w}},WU=(e,t,n,r)=>({stops:O(()=>{if(!e.showStops||e.min>e.max)return[];if(e.step===0)return[];const a=(e.max-e.min)/e.step,i=100*e.step/(e.max-e.min),l=Array.from({length:a-1}).map((u,f)=>(f+1)*i);return e.range?l.filter(u=>u<100*(n.value-e.min)/(e.max-e.min)||u>100*(r.value-e.min)/(e.max-e.min)):l.filter(u=>u>100*(t.firstValue-e.min)/(e.max-e.min))}),getStopStyle:a=>e.vertical?{bottom:`${a}%`}:{left:`${a}%`}}),KU=e=>O(()=>e.marks?Object.keys(e.marks).map(Number.parseFloat).sort((n,r)=>n-r).filter(n=>n<=e.max&&n>=e.min).map(n=>({point:n,position:(n-e.min)*100/(e.max-e.min),mark:e.marks[n]})):[]),jU=(e,t,n,r,s,o)=>{const a=u=>{s(ot,u),s(Tn,u)},i=()=>e.range?![n.value,r.value].every((u,f)=>u===t.oldValue[f]):e.modelValue!==t.oldValue,l=()=>{var u,f;e.min>e.max&&dn(\"Slider\",\"min should not be greater than max.\");const d=e.modelValue;e.range&&ke(d)?d[1]<e.min?a([e.min,e.min]):d[0]>e.max?a([e.max,e.max]):d[0]<e.min?a([e.min,d[1]]):d[1]>e.max?a([d[0],e.max]):(t.firstValue=d[0],t.secondValue=d[1],i()&&(e.validateEvent&&((u=o==null?void 0:o.validate)==null||u.call(o,\"change\").catch(h=>void 0)),t.oldValue=d.slice())):!e.range&&Ge(d)&&!Number.isNaN(d)&&(d<e.min?a(e.min):d>e.max?a(e.max):(t.firstValue=d,i()&&(e.validateEvent&&((f=o==null?void 0:o.validate)==null||f.call(o,\"change\").catch(h=>void 0)),t.oldValue=d)))};l(),ye(()=>t.dragging,u=>{u||l()}),ye(()=>e.modelValue,(u,f)=>{t.dragging||ke(u)&&ke(f)&&u.every((d,h)=>d===f[h])&&t.firstValue===u[0]&&t.secondValue===u[1]||l()},{deep:!0}),ye(()=>[e.min,e.max],()=>{l()})},UU=(e,t,n)=>{const r=W();return it(async()=>{e.range?(ke(e.modelValue)?(t.firstValue=Math.max(e.min,e.modelValue[0]),t.secondValue=Math.min(e.max,e.modelValue[1])):(t.firstValue=e.min,t.secondValue=e.max),t.oldValue=[t.firstValue,t.secondValue]):(!Ge(e.modelValue)||Number.isNaN(e.modelValue)?t.firstValue=e.min:t.firstValue=Math.min(e.max,Math.max(e.min,e.modelValue)),t.oldValue=t.firstValue),It(window,\"resize\",n),await je(),n()}),{sliderWrapper:r}},qU=ee({name:\"ElSlider\"}),YU=ee({...qU,props:$U,emits:LU,setup(e,{expose:t,emit:n}){const r=e,s=we(\"slider\"),{t:o}=yt(),a=St({firstValue:0,secondValue:0,oldValue:0,dragging:!1,sliderSize:1}),{elFormItem:i,slider:l,firstButton:u,secondButton:f,sliderDisabled:d,minValue:h,maxValue:v,runwayStyle:b,barStyle:p,resetSize:g,emitChange:m,onSliderWrapperPrevent:y,onSliderClick:_,onSliderDown:w,onSliderMarkerDown:S,setFirstValue:C,setSecondValue:E}=zU(r,a,n),{stops:k,getStopStyle:T}=WU(r,a,h,v),{inputId:x,isLabeledByFormItem:M}=Cr(r,{formItemContext:i}),A=sn(),P=O(()=>r.inputSize||A.value),G=O(()=>r.ariaLabel||o(\"el.slider.defaultLabel\",{min:r.min,max:r.max})),V=O(()=>r.range?r.rangeStartLabel||o(\"el.slider.defaultRangeStartLabel\"):G.value),I=O(()=>r.formatValueText?r.formatValueText(J.value):`${J.value}`),j=O(()=>r.rangeEndLabel||o(\"el.slider.defaultRangeEndLabel\")),F=O(()=>r.formatValueText?r.formatValueText(re.value):`${re.value}`),R=O(()=>[s.b(),s.m(A.value),s.is(\"vertical\",r.vertical),{[s.m(\"with-input\")]:r.showInput}]),B=KU(r);jU(r,a,h,v,n,i);const N=O(()=>{const K=[r.min,r.max,r.step].map(z=>{const te=`${z}`.split(\".\")[1];return te?te.length:0});return Math.max.apply(null,K)}),{sliderWrapper:U}=UU(r,a,g),{firstValue:J,secondValue:re,sliderSize:le}=hn(a),pe=K=>{a.dragging=K};return It(U,\"touchstart\",y,{passive:!1}),It(U,\"touchmove\",y,{passive:!1}),pt(dk,{...hn(r),sliderSize:le,disabled:d,precision:N,emitChange:m,resetSize:g,updateDragging:pe}),t({onSliderClick:_}),(K,z)=>{var te,oe;return $(),X(\"div\",{id:K.range?c(x):void 0,ref_key:\"sliderWrapper\",ref:U,class:D(c(R)),role:K.range?\"group\":void 0,\"aria-label\":K.range&&!c(M)?c(G):void 0,\"aria-labelledby\":K.range&&c(M)?(te=c(i))==null?void 0:te.labelId:void 0},[Z(\"div\",{ref_key:\"slider\",ref:l,class:D([c(s).e(\"runway\"),{\"show-input\":K.showInput&&!K.range},c(s).is(\"disabled\",c(d))]),style:Ue(c(b)),onMousedown:c(w),onTouchstartPassive:c(w)},[Z(\"div\",{class:D(c(s).e(\"bar\")),style:Ue(c(p))},null,6),H(Ab,{id:K.range?void 0:c(x),ref_key:\"firstButton\",ref:u,\"model-value\":c(J),vertical:K.vertical,\"tooltip-class\":K.tooltipClass,placement:K.placement,role:\"slider\",\"aria-label\":K.range||!c(M)?c(V):void 0,\"aria-labelledby\":!K.range&&c(M)?(oe=c(i))==null?void 0:oe.labelId:void 0,\"aria-valuemin\":K.min,\"aria-valuemax\":K.range?c(re):K.max,\"aria-valuenow\":c(J),\"aria-valuetext\":c(I),\"aria-orientation\":K.vertical?\"vertical\":\"horizontal\",\"aria-disabled\":c(d),\"onUpdate:modelValue\":c(C)},null,8,[\"id\",\"model-value\",\"vertical\",\"tooltip-class\",\"placement\",\"aria-label\",\"aria-labelledby\",\"aria-valuemin\",\"aria-valuemax\",\"aria-valuenow\",\"aria-valuetext\",\"aria-orientation\",\"aria-disabled\",\"onUpdate:modelValue\"]),K.range?($(),ve(Ab,{key:0,ref_key:\"secondButton\",ref:f,\"model-value\":c(re),vertical:K.vertical,\"tooltip-class\":K.tooltipClass,placement:K.placement,role:\"slider\",\"aria-label\":c(j),\"aria-valuemin\":c(J),\"aria-valuemax\":K.max,\"aria-valuenow\":c(re),\"aria-valuetext\":c(F),\"aria-orientation\":K.vertical?\"vertical\":\"horizontal\",\"aria-disabled\":c(d),\"onUpdate:modelValue\":c(E)},null,8,[\"model-value\",\"vertical\",\"tooltip-class\",\"placement\",\"aria-label\",\"aria-valuemin\",\"aria-valuemax\",\"aria-valuenow\",\"aria-valuetext\",\"aria-orientation\",\"aria-disabled\",\"onUpdate:modelValue\"])):de(\"v-if\",!0),K.showStops?($(),X(\"div\",{key:1},[($(!0),X(We,null,vt(c(k),(he,Y)=>($(),X(\"div\",{key:Y,class:D(c(s).e(\"stop\")),style:Ue(c(T)(he))},null,6))),128))])):de(\"v-if\",!0),c(B).length>0?($(),X(We,{key:2},[Z(\"div\",null,[($(!0),X(We,null,vt(c(B),(he,Y)=>($(),X(\"div\",{key:Y,style:Ue(c(T)(he.position)),class:D([c(s).e(\"stop\"),c(s).e(\"marks-stop\")])},null,6))),128))]),Z(\"div\",{class:D(c(s).e(\"marks\"))},[($(!0),X(We,null,vt(c(B),(he,Y)=>($(),ve(c(VU),{key:Y,mark:he.mark,style:Ue(c(T)(he.position)),onMousedown:Xe(L=>c(S)(he.position),[\"stop\"])},null,8,[\"mark\",\"style\",\"onMousedown\"]))),128))],2)],64)):de(\"v-if\",!0)],46,[\"onMousedown\",\"onTouchstartPassive\"]),K.showInput&&!K.range?($(),ve(c(gm),{key:0,ref:\"input\",\"model-value\":c(J),class:D(c(s).e(\"input\")),step:K.step,disabled:c(d),controls:K.showInputControls,min:K.min,max:K.max,precision:c(N),debounce:K.debounce,size:c(P),\"onUpdate:modelValue\":c(C),onChange:c(m)},null,8,[\"model-value\",\"class\",\"step\",\"disabled\",\"controls\",\"min\",\"max\",\"precision\",\"debounce\",\"size\",\"onUpdate:modelValue\",\"onChange\"])):de(\"v-if\",!0)],10,[\"id\",\"role\",\"aria-label\",\"aria-labelledby\"])}}});var GU=Oe(YU,[[\"__file\",\"slider.vue\"]]);const XU=Qe(GU),JU=xe({prefixCls:{type:String}}),$b=ee({name:\"ElSpaceItem\",props:JU,setup(e,{slots:t}){const n=we(\"space\"),r=O(()=>`${e.prefixCls||n.b()}__item`);return()=>Ye(\"div\",{class:r.value},ue(t,\"default\"))}}),Lb={small:8,default:12,large:16};function ZU(e){const t=we(\"space\"),n=O(()=>[t.b(),t.m(e.direction),e.class]),r=W(0),s=W(0),o=O(()=>{const i=e.wrap||e.fill?{flexWrap:\"wrap\"}:{},l={alignItems:e.alignment},u={rowGap:`${s.value}px`,columnGap:`${r.value}px`};return[i,l,u,e.style]}),a=O(()=>e.fill?{flexGrow:1,minWidth:`${e.fillRatio}%`}:{});return En(()=>{const{size:i=\"small\",wrap:l,direction:u,fill:f}=e;if(ke(i)){const[d=0,h=0]=i;r.value=d,s.value=h}else{let d;Ge(i)?d=i:d=Lb[i||\"small\"]||Lb.small,(l||f)&&u===\"horizontal\"?r.value=s.value=d:u===\"horizontal\"?(r.value=d,s.value=0):(s.value=d,r.value=0)}}),{classes:n,containerStyle:o,itemStyle:a}}const QU=xe({direction:{type:String,values:[\"horizontal\",\"vertical\"],default:\"horizontal\"},class:{type:ie([String,Object,Array]),default:\"\"},style:{type:ie([String,Array,Object]),default:\"\"},alignment:{type:ie(String),default:\"center\"},prefixCls:{type:String},spacer:{type:ie([Object,String,Number,Array]),default:null,validator:e=>Ut(e)||Ge(e)||ze(e)},wrap:Boolean,fill:Boolean,fillRatio:{type:Number,default:100},size:{type:[String,Array,Number],values:is,validator:e=>Ge(e)||ke(e)&&e.length===2&&e.every(Ge)}}),eq=ee({name:\"ElSpace\",props:QU,setup(e,{slots:t}){const{classes:n,containerStyle:r,itemStyle:s}=ZU(e);function o(a,i=\"\",l=[]){const{prefixCls:u}=e;return a.forEach((f,d)=>{Ph(f)?ke(f.children)&&f.children.forEach((h,v)=>{Ph(h)&&ke(h.children)?o(h.children,`${i+v}-`,l):l.push(H($b,{style:s.value,prefixCls:u,key:`nested-${i+v}`},{default:()=>[h]},fr.PROPS|fr.STYLE,[\"style\",\"prefixCls\"]))}):U5(f)&&l.push(H($b,{style:s.value,prefixCls:u,key:`LoopKey${i+d}`},{default:()=>[f]},fr.PROPS|fr.STYLE,[\"style\",\"prefixCls\"]))}),l}return()=>{var a;const{spacer:i,direction:l}=e,u=ue(t,\"default\",{key:0},()=>[]);if(((a=u.children)!=null?a:[]).length===0)return null;if(ke(u.children)){let f=o(u.children);if(i){const d=f.length-1;f=f.reduce((h,v,b)=>{const p=[...h,v];return b!==d&&p.push(H(\"span\",{style:[s.value,l===\"vertical\"?\"width: 100%\":null],key:b},[Ut(i)?i:Ve(i,fr.TEXT)],fr.STYLE)),p},[])}return H(\"div\",{class:n.value,style:r.value},f,fr.STYLE|fr.CLASS)}return u.children}}}),tq=Qe(eq),nq=xe({decimalSeparator:{type:String,default:\".\"},groupSeparator:{type:String,default:\",\"},precision:{type:Number,default:0},formatter:Function,value:{type:ie([Number,Object]),default:0},prefix:String,suffix:String,title:String,valueStyle:{type:ie([String,Object,Array])}}),rq=ee({name:\"ElStatistic\"}),sq=ee({...rq,props:nq,setup(e,{expose:t}){const n=e,r=we(\"statistic\"),s=O(()=>{const{value:o,formatter:a,precision:i,decimalSeparator:l,groupSeparator:u}=n;if(Ke(a))return a(o);if(!Ge(o)||Number.isNaN(o))return o;let[f,d=\"\"]=String(o).split(\".\");return d=d.padEnd(i,\"0\").slice(0,i>0?i:0),f=f.replace(/\\B(?=(\\d{3})+(?!\\d))/g,u),[f,d].join(d?l:\"\")});return t({displayValue:s}),(o,a)=>($(),X(\"div\",{class:D(c(r).b())},[o.$slots.title||o.title?($(),X(\"div\",{key:0,class:D(c(r).e(\"head\"))},[ue(o.$slots,\"title\",{},()=>[Ve(Ee(o.title),1)])],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(r).e(\"content\"))},[o.$slots.prefix||o.prefix?($(),X(\"div\",{key:0,class:D(c(r).e(\"prefix\"))},[ue(o.$slots,\"prefix\",{},()=>[Z(\"span\",null,Ee(o.prefix),1)])],2)):de(\"v-if\",!0),Z(\"span\",{class:D(c(r).e(\"number\")),style:Ue(o.valueStyle)},Ee(c(s)),7),o.$slots.suffix||o.suffix?($(),X(\"div\",{key:1,class:D(c(r).e(\"suffix\"))},[ue(o.$slots,\"suffix\",{},()=>[Z(\"span\",null,Ee(o.suffix),1)])],2)):de(\"v-if\",!0)],2)],2))}});var oq=Oe(sq,[[\"__file\",\"statistic.vue\"]]);const fk=Qe(oq),iq=xe({format:{type:String,default:\"HH:mm:ss\"},prefix:String,suffix:String,title:String,value:{type:ie([Number,Object]),default:0},valueStyle:{type:ie([String,Object,Array])}}),aq={finish:()=>!0,[Bt]:e=>Ge(e)},lq=[[\"Y\",1e3*60*60*24*365],[\"M\",1e3*60*60*24*30],[\"D\",1e3*60*60*24],[\"H\",1e3*60*60],[\"m\",1e3*60],[\"s\",1e3],[\"S\",1]],Ib=e=>Ge(e)?new Date(e).getTime():e.valueOf(),Pb=(e,t)=>{let n=e;const r=/\\[([^\\]]*)]/g;return lq.reduce((o,[a,i])=>{const l=new RegExp(`${a}+(?![^\\\\[\\\\]]*\\\\])`,\"g\");if(l.test(o)){const u=Math.floor(n/i);return n-=u*i,o.replace(l,f=>String(u).padStart(f.length,\"0\"))}return o},t).replace(r,\"$1\")},cq=ee({name:\"ElCountdown\"}),uq=ee({...cq,props:iq,emits:aq,setup(e,{expose:t,emit:n}){const r=e;let s;const o=W(0),a=O(()=>Pb(o.value,r.format)),i=f=>Pb(f,r.format),l=()=>{s&&(Zo(s),s=void 0)},u=()=>{const f=Ib(r.value),d=()=>{let h=f-Date.now();n(\"change\",h),h<=0?(h=0,l(),n(\"finish\")):s=io(d),o.value=h};s=io(d)};return it(()=>{o.value=Ib(r.value)-Date.now(),ye(()=>[r.value,r.format],()=>{l(),u()},{immediate:!0})}),Pt(()=>{l()}),t({displayValue:a}),(f,d)=>($(),ve(c(fk),{value:o.value,title:f.title,prefix:f.prefix,suffix:f.suffix,\"value-style\":f.valueStyle,formatter:i},_r({_:2},[vt(f.$slots,(h,v)=>({name:v,fn:q(()=>[ue(f.$slots,v)])}))]),1032,[\"value\",\"title\",\"prefix\",\"suffix\",\"value-style\"]))}});var dq=Oe(uq,[[\"__file\",\"countdown.vue\"]]);const fq=Qe(dq),hq=xe({space:{type:[Number,String],default:\"\"},active:{type:Number,default:0},direction:{type:String,default:\"horizontal\",values:[\"horizontal\",\"vertical\"]},alignCenter:{type:Boolean},simple:{type:Boolean},finishStatus:{type:String,values:[\"wait\",\"process\",\"finish\",\"error\",\"success\"],default:\"finish\"},processStatus:{type:String,values:[\"wait\",\"process\",\"finish\",\"error\",\"success\"],default:\"process\"}}),pq={[Bt]:(e,t)=>[e,t].every(Ge)},vq=ee({name:\"ElSteps\"}),mq=ee({...vq,props:hq,emits:pq,setup(e,{emit:t}){const n=e,r=we(\"steps\"),{children:s,addChild:o,removeChild:a}=Zv(ct(),\"ElStep\");return ye(s,()=>{s.value.forEach((i,l)=>{i.setIndex(l)})}),pt(\"ElSteps\",{props:n,steps:s,addStep:o,removeStep:a}),ye(()=>n.active,(i,l)=>{t(Bt,i,l)}),(i,l)=>($(),X(\"div\",{class:D([c(r).b(),c(r).m(i.simple?\"simple\":i.direction)])},[ue(i.$slots,\"default\")],2))}});var gq=Oe(mq,[[\"__file\",\"steps.vue\"]]);const _q=xe({title:{type:String,default:\"\"},icon:{type:Nt},description:{type:String,default:\"\"},status:{type:String,values:[\"\",\"wait\",\"process\",\"finish\",\"error\",\"success\"],default:\"\"}}),bq=ee({name:\"ElStep\"}),yq=ee({...bq,props:_q,setup(e){const t=e,n=we(\"step\"),r=W(-1),s=W({}),o=W(\"\"),a=Fe(\"ElSteps\"),i=ct();it(()=>{ye([()=>a.props.active,()=>a.props.processStatus,()=>a.props.finishStatus],([C])=>{w(C)},{immediate:!0})}),Pt(()=>{a.removeStep(S.uid)});const l=O(()=>t.status||o.value),u=O(()=>{const C=a.steps.value[r.value-1];return C?C.currentStatus:\"wait\"}),f=O(()=>a.props.alignCenter),d=O(()=>a.props.direction===\"vertical\"),h=O(()=>a.props.simple),v=O(()=>a.steps.value.length),b=O(()=>{var C;return((C=a.steps.value[v.value-1])==null?void 0:C.uid)===(i==null?void 0:i.uid)}),p=O(()=>h.value?\"\":a.props.space),g=O(()=>[n.b(),n.is(h.value?\"simple\":a.props.direction),n.is(\"flex\",b.value&&!p.value&&!f.value),n.is(\"center\",f.value&&!d.value&&!h.value)]),m=O(()=>{const C={flexBasis:Ge(p.value)?`${p.value}px`:p.value?p.value:`${100/(v.value-(f.value?0:1))}%`};return d.value||b.value&&(C.maxWidth=`${100/v.value}%`),C}),y=C=>{r.value=C},_=C=>{const E=C===\"wait\",k={transitionDelay:`${E?\"-\":\"\"}${150*r.value}ms`},T=C===a.props.processStatus||E?0:100;k.borderWidth=T&&!h.value?\"1px\":0,k[a.props.direction===\"vertical\"?\"height\":\"width\"]=`${T}%`,s.value=k},w=C=>{C>r.value?o.value=a.props.finishStatus:C===r.value&&u.value!==\"error\"?o.value=a.props.processStatus:o.value=\"wait\";const E=a.steps.value[r.value-1];E&&E.calcProgress(o.value)},S=St({uid:i.uid,currentStatus:l,setIndex:y,calcProgress:_});return a.addStep(S),(C,E)=>($(),X(\"div\",{style:Ue(c(m)),class:D(c(g))},[de(\" icon & line \"),Z(\"div\",{class:D([c(n).e(\"head\"),c(n).is(c(l))])},[c(h)?de(\"v-if\",!0):($(),X(\"div\",{key:0,class:D(c(n).e(\"line\"))},[Z(\"i\",{class:D(c(n).e(\"line-inner\")),style:Ue(s.value)},null,6)],2)),Z(\"div\",{class:D([c(n).e(\"icon\"),c(n).is(C.icon||C.$slots.icon?\"icon\":\"text\")])},[ue(C.$slots,\"icon\",{},()=>[C.icon?($(),ve(c(He),{key:0,class:D(c(n).e(\"icon-inner\"))},{default:q(()=>[($(),ve(dt(C.icon)))]),_:1},8,[\"class\"])):c(l)===\"success\"?($(),ve(c(He),{key:1,class:D([c(n).e(\"icon-inner\"),c(n).is(\"status\")])},{default:q(()=>[H(c(jl))]),_:1},8,[\"class\"])):c(l)===\"error\"?($(),ve(c(He),{key:2,class:D([c(n).e(\"icon-inner\"),c(n).is(\"status\")])},{default:q(()=>[H(c(Dr))]),_:1},8,[\"class\"])):c(h)?de(\"v-if\",!0):($(),X(\"div\",{key:3,class:D(c(n).e(\"icon-inner\"))},Ee(r.value+1),3))])],2)],2),de(\" title & description \"),Z(\"div\",{class:D(c(n).e(\"main\"))},[Z(\"div\",{class:D([c(n).e(\"title\"),c(n).is(c(l))])},[ue(C.$slots,\"title\",{},()=>[Ve(Ee(C.title),1)])],2),c(h)?($(),X(\"div\",{key:0,class:D(c(n).e(\"arrow\"))},null,2)):($(),X(\"div\",{key:1,class:D([c(n).e(\"description\"),c(n).is(c(l))])},[ue(C.$slots,\"description\",{},()=>[Ve(Ee(C.description),1)])],2))],2)],6))}});var hk=Oe(yq,[[\"__file\",\"item.vue\"]]);const wq=Qe(gq,{Step:hk}),Sq=Gt(hk),pk=e=>[\"\",...is].includes(e),Cq=xe({modelValue:{type:[Boolean,String,Number],default:!1},disabled:Boolean,loading:Boolean,size:{type:String,validator:pk},width:{type:[String,Number],default:\"\"},inlinePrompt:Boolean,inactiveActionIcon:{type:Nt},activeActionIcon:{type:Nt},activeIcon:{type:Nt},inactiveIcon:{type:Nt},activeText:{type:String,default:\"\"},inactiveText:{type:String,default:\"\"},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},name:{type:String,default:\"\"},validateEvent:{type:Boolean,default:!0},beforeChange:{type:ie(Function)},id:String,tabindex:{type:[String,Number]},...kn([\"ariaLabel\"])}),kq={[ot]:e=>Vt(e)||ze(e)||Ge(e),[Bt]:e=>Vt(e)||ze(e)||Ge(e),[Tn]:e=>Vt(e)||ze(e)||Ge(e)},vk=\"ElSwitch\",Eq=ee({name:vk}),Tq=ee({...Eq,props:Cq,emits:kq,setup(e,{expose:t,emit:n}){const r=e,{formItem:s}=xn(),o=sn(),a=we(\"switch\"),{inputId:i}=Cr(r,{formItemContext:s}),l=On(O(()=>r.loading)),u=W(r.modelValue!==!1),f=W(),d=W(),h=O(()=>[a.b(),a.m(o.value),a.is(\"disabled\",l.value),a.is(\"checked\",m.value)]),v=O(()=>[a.e(\"label\"),a.em(\"label\",\"left\"),a.is(\"active\",!m.value)]),b=O(()=>[a.e(\"label\"),a.em(\"label\",\"right\"),a.is(\"active\",m.value)]),p=O(()=>({width:en(r.width)}));ye(()=>r.modelValue,()=>{u.value=!0});const g=O(()=>u.value?r.modelValue:!1),m=O(()=>g.value===r.activeValue);[r.activeValue,r.inactiveValue].includes(g.value)||(n(ot,r.inactiveValue),n(Bt,r.inactiveValue),n(Tn,r.inactiveValue)),ye(m,S=>{var C;f.value.checked=S,r.validateEvent&&((C=s==null?void 0:s.validate)==null||C.call(s,\"change\").catch(E=>void 0))});const y=()=>{const S=m.value?r.inactiveValue:r.activeValue;n(ot,S),n(Bt,S),n(Tn,S),je(()=>{f.value.checked=m.value})},_=()=>{if(l.value)return;const{beforeChange:S}=r;if(!S){y();return}const C=S();[Qa(C),Vt(C)].includes(!0)||dn(vk,\"beforeChange must return type `Promise<boolean>` or `boolean`\"),Qa(C)?C.then(k=>{k&&y()}).catch(k=>{}):C&&y()},w=()=>{var S,C;(C=(S=f.value)==null?void 0:S.focus)==null||C.call(S)};return it(()=>{f.value.checked=m.value}),t({focus:w,checked:m}),(S,C)=>($(),X(\"div\",{class:D(c(h)),onClick:Xe(_,[\"prevent\"])},[Z(\"input\",{id:c(i),ref_key:\"input\",ref:f,class:D(c(a).e(\"input\")),type:\"checkbox\",role:\"switch\",\"aria-checked\":c(m),\"aria-disabled\":c(l),\"aria-label\":S.ariaLabel,name:S.name,\"true-value\":S.activeValue,\"false-value\":S.inactiveValue,disabled:c(l),tabindex:S.tabindex,onChange:y,onKeydown:Ht(_,[\"enter\"])},null,42,[\"id\",\"aria-checked\",\"aria-disabled\",\"aria-label\",\"name\",\"true-value\",\"false-value\",\"disabled\",\"tabindex\",\"onKeydown\"]),!S.inlinePrompt&&(S.inactiveIcon||S.inactiveText)?($(),X(\"span\",{key:0,class:D(c(v))},[S.inactiveIcon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(S.inactiveIcon)))]),_:1})):de(\"v-if\",!0),!S.inactiveIcon&&S.inactiveText?($(),X(\"span\",{key:1,\"aria-hidden\":c(m)},Ee(S.inactiveText),9,[\"aria-hidden\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0),Z(\"span\",{ref_key:\"core\",ref:d,class:D(c(a).e(\"core\")),style:Ue(c(p))},[S.inlinePrompt?($(),X(\"div\",{key:0,class:D(c(a).e(\"inner\"))},[S.activeIcon||S.inactiveIcon?($(),ve(c(He),{key:0,class:D(c(a).is(\"icon\"))},{default:q(()=>[($(),ve(dt(c(m)?S.activeIcon:S.inactiveIcon)))]),_:1},8,[\"class\"])):S.activeText||S.inactiveText?($(),X(\"span\",{key:1,class:D(c(a).is(\"text\")),\"aria-hidden\":!c(m)},Ee(c(m)?S.activeText:S.inactiveText),11,[\"aria-hidden\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(a).e(\"action\"))},[S.loading?($(),ve(c(He),{key:0,class:D(c(a).is(\"loading\"))},{default:q(()=>[H(c(ts))]),_:1},8,[\"class\"])):c(m)?ue(S.$slots,\"active-action\",{key:1},()=>[S.activeActionIcon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(S.activeActionIcon)))]),_:1})):de(\"v-if\",!0)]):c(m)?de(\"v-if\",!0):ue(S.$slots,\"inactive-action\",{key:2},()=>[S.inactiveActionIcon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(S.inactiveActionIcon)))]),_:1})):de(\"v-if\",!0)])],2)],6),!S.inlinePrompt&&(S.activeIcon||S.activeText)?($(),X(\"span\",{key:1,class:D(c(b))},[S.activeIcon?($(),ve(c(He),{key:0},{default:q(()=>[($(),ve(dt(S.activeIcon)))]),_:1})):de(\"v-if\",!0),!S.activeIcon&&S.activeText?($(),X(\"span\",{key:1,\"aria-hidden\":!c(m)},Ee(S.activeText),9,[\"aria-hidden\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0)],10,[\"onClick\"]))}});var Rq=Oe(Tq,[[\"__file\",\"switch.vue\"]]);const xq=Qe(Rq),Bf=function(e){var t;return(t=e.target)==null?void 0:t.closest(\"td\")},Oq=function(e,t,n,r,s){if(!t&&!r&&(!s||ke(s)&&!s.length))return e;ze(n)?n=n===\"descending\"?-1:1:n=n&&n<0?-1:1;const o=r?null:function(i,l){return s?(ke(s)||(s=[s]),s.map(u=>ze(u)?rn(i,u):u(i,l,e))):(t!==\"$key\"&&lt(i)&&\"$value\"in i&&(i=i.$value),[lt(i)?rn(i,t):i])},a=function(i,l){if(r)return r(i.value,l.value);for(let u=0,f=i.key.length;u<f;u++){if(i.key[u]<l.key[u])return-1;if(i.key[u]>l.key[u])return 1}return 0};return e.map((i,l)=>({value:i,index:l,key:o?o(i,l):null})).sort((i,l)=>{let u=a(i,l);return u||(u=i.index-l.index),u*+n}).map(i=>i.value)},mk=function(e,t){let n=null;return e.columns.forEach(r=>{r.id===t&&(n=r)}),n},Mq=function(e,t){let n=null;for(let r=0;r<e.columns.length;r++){const s=e.columns[r];if(s.columnKey===t){n=s;break}}return n||dn(\"ElTable\",`No column matching with column-key: ${t}`),n},Db=function(e,t,n){const r=(t.className||\"\").match(new RegExp(`${n}-table_[^\\\\s]+`,\"gm\"));return r?mk(e,r[0]):null},Dn=(e,t)=>{if(!e)throw new Error(\"Row is required when get row identity\");if(ze(t)){if(!t.includes(\".\"))return`${e[t]}`;const n=t.split(\".\");let r=e;for(const s of n)r=r[s];return`${r}`}else if(Ke(t))return t.call(null,e)},Do=function(e,t){const n={};return(e||[]).forEach((r,s)=>{n[Dn(r,t)]={row:r,index:s}}),n};function Aq(e,t){const n={};let r;for(r in e)n[r]=e[r];for(r in t)if(kt(t,r)){const s=t[r];typeof s<\"u\"&&(n[r]=s)}return n}function Tm(e){return e===\"\"||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e=\"\")),e}function gk(e){return e===\"\"||e!==void 0&&(e=Tm(e),Number.isNaN(e)&&(e=80)),e}function $q(e){return Ge(e)?e:ze(e)?/^\\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function Lq(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,n)=>(...r)=>t(n(...r)))}function Fu(e,t,n,r,s,o){let a=o??0,i=!1;const l=e.indexOf(t),u=l!==-1,f=s==null?void 0:s.call(null,t,o),d=v=>{v===\"add\"?e.push(t):e.splice(l,1),i=!0},h=v=>{let b=0;const p=(r==null?void 0:r.children)&&v[r.children];return p&&ke(p)&&(b+=p.length,p.forEach(g=>{b+=h(g)})),b};return(!s||f)&&(Vt(n)?n&&!u?d(\"add\"):!n&&u&&d(\"remove\"):d(u?\"remove\":\"add\")),!(r!=null&&r.checkStrictly)&&(r!=null&&r.children)&&ke(t[r.children])&&t[r.children].forEach(v=>{Fu(e,v,n??!u,r,s,a+1),a+=h(v)+1}),i}function Iq(e,t,n=\"children\",r=\"hasChildren\"){const s=a=>!(ke(a)&&a.length);function o(a,i,l){t(a,i,l),i.forEach(u=>{if(u[r]){t(u,null,l+1);return}const f=u[n];s(f)||o(u,f,l+1)})}e.forEach(a=>{if(a[r]){t(a,null,0);return}const i=a[n];s(i)||o(a,i,0)})}const Bb=(e,t)=>({content:t,...e,popperOptions:{strategy:\"fixed\",...e.popperOptions}});let dr=null;function Pq(e,t,n,r){if((dr==null?void 0:dr.trigger)===n){SS(dr.vm.component.props,Bb(e,t));return}dr==null||dr();const s=r==null?void 0:r.refs.tableWrapper,o=s==null?void 0:s.dataset.prefix,a=H(Cn,{virtualTriggering:!0,virtualRef:n,appendTo:s,placement:\"top\",transition:\"none\",offset:0,hideAfter:0,...Bb(e,t)});a.appContext={...r.appContext,...r};const i=document.createElement(\"div\");so(a,i),a.component.exposed.onOpen();const l=s==null?void 0:s.querySelector(`.${o}-scrollbar__wrap`);dr=()=>{so(null,i),l==null||l.removeEventListener(\"scroll\",dr),dr=null},dr.trigger=n,dr.vm=a,l==null||l.addEventListener(\"scroll\",dr)}function _k(e){return e.children?_I(e.children,_k):[e]}function Nb(e,t){return e+t.colSpan}const bk=(e,t,n,r)=>{let s=0,o=e;const a=n.states.columns.value;if(r){const l=_k(r[e]);s=a.slice(0,a.indexOf(l[0])).reduce(Nb,0),o=s+l.reduce(Nb,0)-1}else s=e;let i;switch(t){case\"left\":o<n.states.fixedLeafColumnsLength.value&&(i=\"left\");break;case\"right\":s>=a.length-n.states.rightFixedLeafColumnsLength.value&&(i=\"right\");break;default:o<n.states.fixedLeafColumnsLength.value?i=\"left\":s>=a.length-n.states.rightFixedLeafColumnsLength.value&&(i=\"right\")}return i?{direction:i,start:s,after:o}:{}},Rm=(e,t,n,r,s,o=0)=>{const a=[],{direction:i,start:l,after:u}=bk(t,n,r,s);if(i){const f=i===\"left\";a.push(`${e}-fixed-column--${i}`),f&&u+o===r.states.fixedLeafColumnsLength.value-1?a.push(\"is-last-column\"):!f&&l-o===r.states.columns.value.length-r.states.rightFixedLeafColumnsLength.value&&a.push(\"is-first-column\")}return a};function Fb(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const xm=(e,t,n,r)=>{const{direction:s,start:o=0,after:a=0}=bk(e,t,n,r);if(!s)return;const i={},l=s===\"left\",u=n.states.columns.value;return l?i.left=u.slice(0,o).reduce(Fb,0):i.right=u.slice(a+1).reverse().reduce(Fb,0),i},Ji=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function Dq(e){const t=ct(),n=W(!1),r=W([]);return{updateExpandRows:()=>{const l=e.data.value||[],u=e.rowKey.value;if(n.value)r.value=l.slice();else if(u){const f=Do(r.value,u);r.value=l.reduce((d,h)=>{const v=Dn(h,u);return f[v]&&d.push(h),d},[])}else r.value=[]},toggleRowExpansion:(l,u)=>{Fu(r.value,l,u)&&t.emit(\"expand-change\",l,r.value.slice())},setExpandRowKeys:l=>{t.store.assertRowKey();const u=e.data.value||[],f=e.rowKey.value,d=Do(u,f);r.value=l.reduce((h,v)=>{const b=d[v];return b&&h.push(b.row),h},[])},isRowExpanded:l=>{const u=e.rowKey.value;return u?!!Do(r.value,u)[Dn(l,u)]:r.value.includes(l)},states:{expandRows:r,defaultExpandAll:n}}}function Bq(e){const t=ct(),n=W(null),r=W(null),s=u=>{t.store.assertRowKey(),n.value=u,a(u)},o=()=>{n.value=null},a=u=>{const{data:f,rowKey:d}=e;let h=null;d.value&&(h=(c(f)||[]).find(v=>Dn(v,d.value)===u)),r.value=h,t.emit(\"current-change\",r.value,null)};return{setCurrentRowKey:s,restoreCurrentRowKey:o,setCurrentRowByKey:a,updateCurrentRow:u=>{const f=r.value;if(u&&u!==f){r.value=u,t.emit(\"current-change\",r.value,f);return}!u&&f&&(r.value=null,t.emit(\"current-change\",null,f))},updateCurrentRowData:()=>{const u=e.rowKey.value,f=e.data.value||[],d=r.value;if(!f.includes(d)&&d){if(u){const h=Dn(d,u);a(h)}else r.value=null;r.value===null&&t.emit(\"current-change\",null,d)}else n.value&&(a(n.value),o())},states:{_currentRowKey:n,currentRow:r}}}function Nq(e){const t=W([]),n=W({}),r=W(16),s=W(!1),o=W({}),a=W(\"hasChildren\"),i=W(\"children\"),l=W(!1),u=ct(),f=O(()=>{if(!e.rowKey.value)return{};const _=e.data.value||[];return h(_)}),d=O(()=>{const _=e.rowKey.value,w=Object.keys(o.value),S={};return w.length&&w.forEach(C=>{if(o.value[C].length){const E={children:[]};o.value[C].forEach(k=>{const T=Dn(k,_);E.children.push(T),k[a.value]&&!S[T]&&(S[T]={children:[]})}),S[C]=E}}),S}),h=_=>{const w=e.rowKey.value,S={};return Iq(_,(C,E,k)=>{const T=Dn(C,w);ke(E)?S[T]={children:E.map(x=>Dn(x,w)),level:k}:s.value&&(S[T]={children:[],lazy:!0,level:k})},i.value,a.value),S},v=(_=!1,w=(S=>(S=u.store)==null?void 0:S.states.defaultExpandAll.value)())=>{var S;const C=f.value,E=d.value,k=Object.keys(C),T={};if(k.length){const x=c(n),M=[],A=(G,V)=>{if(_)return t.value?w||t.value.includes(V):!!(w||G!=null&&G.expanded);{const I=w||t.value&&t.value.includes(V);return!!(G!=null&&G.expanded||I)}};k.forEach(G=>{const V=x[G],I={...C[G]};if(I.expanded=A(V,G),I.lazy){const{loaded:j=!1,loading:F=!1}=V||{};I.loaded=!!j,I.loading=!!F,M.push(G)}T[G]=I});const P=Object.keys(E);s.value&&P.length&&M.length&&P.forEach(G=>{const V=x[G],I=E[G].children;if(M.includes(G)){if(T[G].children.length!==0)throw new Error(\"[ElTable]children must be an empty array.\");T[G].children=I}else{const{loaded:j=!1,loading:F=!1}=V||{};T[G]={lazy:!0,loaded:!!j,loading:!!F,expanded:A(V,G),children:I,level:\"\"}}})}n.value=T,(S=u.store)==null||S.updateTableScrollY()};ye(()=>t.value,()=>{v(!0)}),ye(()=>f.value,()=>{v()}),ye(()=>d.value,()=>{v()});const b=_=>{t.value=_,v()},p=(_,w)=>{u.store.assertRowKey();const S=e.rowKey.value,C=Dn(_,S),E=C&&n.value[C];if(C&&E&&\"expanded\"in E){const k=E.expanded;w=Lt(w)?!E.expanded:w,n.value[C].expanded=w,k!==w&&u.emit(\"expand-change\",_,w),u.store.updateTableScrollY()}},g=_=>{u.store.assertRowKey();const w=e.rowKey.value,S=Dn(_,w),C=n.value[S];s.value&&C&&\"loaded\"in C&&!C.loaded?m(_,S,C):p(_,void 0)},m=(_,w,S)=>{const{load:C}=u.props;C&&!n.value[w].loaded&&(n.value[w].loading=!0,C(_,S,E=>{if(!ke(E))throw new TypeError(\"[ElTable] data must be an array\");n.value[w].loading=!1,n.value[w].loaded=!0,n.value[w].expanded=!0,E.length&&(o.value[w]=E),u.emit(\"expand-change\",_,!0)}))};return{loadData:m,loadOrToggle:g,toggleTreeExpansion:p,updateTreeExpandKeys:b,updateTreeData:v,updateKeyChildren:(_,w)=>{const{lazy:S,rowKey:C}=u.props;if(S){if(!C)throw new Error(\"[Table] rowKey is required in updateKeyChild\");o.value[_]&&(o.value[_]=w)}},normalize:h,states:{expandRowKeys:t,treeData:n,indent:r,lazy:s,lazyTreeNodeMap:o,lazyColumnIdentifier:a,childrenColumnName:i,checkStrictly:l}}}const Fq=(e,t)=>{const n=t.sortingColumn;return!n||ze(n.sortable)?e:Oq(e,t.sortProp,t.sortOrder,n.sortMethod,n.sortBy)},tu=e=>{const t=[];return e.forEach(n=>{n.children&&n.children.length>0?t.push.apply(t,tu(n.children)):t.push(n)}),t};function Hq(){var e;const t=ct(),{size:n}=hn((e=t.proxy)==null?void 0:e.$props),r=W(null),s=W([]),o=W([]),a=W(!1),i=W([]),l=W([]),u=W([]),f=W([]),d=W([]),h=W([]),v=W([]),b=W([]),p=[],g=W(0),m=W(0),y=W(0),_=W(!1),w=W([]),S=W(!1),C=W(!1),E=W(null),k=W({}),T=W(null),x=W(null),M=W(null),A=W(null),P=W(null);ye(s,()=>{var fe;t.state&&(F(!1),t.props.tableLayout===\"auto\"&&((fe=t.refs.tableHeaderRef)==null||fe.updateFixedColumnStyle()))},{deep:!0});const G=()=>{if(!r.value)throw new Error(\"[ElTable] prop row-key is required\")},V=fe=>{var $e;($e=fe.children)==null||$e.forEach(ce=>{ce.fixed=fe.fixed,V(ce)})};let I;const j=()=>{i.value.forEach(ne=>{V(ne)}),f.value=i.value.filter(ne=>ne.fixed===!0||ne.fixed===\"left\"),d.value=i.value.filter(ne=>ne.fixed===\"right\"),Lt(I)&&i.value[0]&&i.value[0].type===\"selection\"&&(I=!!i.value[0].fixed),f.value.length>0&&i.value[0]&&i.value[0].type===\"selection\"&&(i.value[0].fixed?f.value.some(Pe=>Pe.type!==\"selection\")?I=void 0:(i.value[0].fixed=I,I||f.value.shift()):(i.value[0].fixed=!0,f.value.unshift(i.value[0])));const fe=i.value.filter(ne=>!ne.fixed);l.value=[].concat(f.value).concat(fe).concat(d.value);const $e=tu(fe),ce=tu(f.value),Re=tu(d.value);g.value=$e.length,m.value=ce.length,y.value=Re.length,u.value=[].concat(ce).concat($e).concat(Re),a.value=f.value.length>0||d.value.length>0},F=(fe,$e=!1)=>{fe&&j(),$e?t.state.doLayout():t.state.debouncedUpdateLayout()},R=fe=>w.value.some($e=>wn($e,fe)),B=()=>{_.value=!1;const fe=w.value;w.value=[],fe.length&&t.emit(\"selection-change\",[])},N=()=>{let fe;if(r.value){fe=[];const $e=Do(w.value,r.value),ce=Do(s.value,r.value);for(const Re in $e)kt($e,Re)&&!ce[Re]&&fe.push($e[Re].row)}else fe=w.value.filter($e=>!s.value.includes($e));if(fe.length){const $e=w.value.filter(ce=>!fe.includes(ce));w.value=$e,t.emit(\"selection-change\",$e.slice())}},U=()=>(w.value||[]).slice(),J=(fe,$e,ce=!0,Re=!1)=>{var ne,Pe,rt,mt;const Me={children:(Pe=(ne=t==null?void 0:t.store)==null?void 0:ne.states)==null?void 0:Pe.childrenColumnName.value,checkStrictly:(mt=(rt=t==null?void 0:t.store)==null?void 0:rt.states)==null?void 0:mt.checkStrictly.value};if(Fu(w.value,fe,$e,Me,Re?void 0:E.value)){const nn=(w.value||[]).slice();ce&&t.emit(\"select\",nn,fe),t.emit(\"selection-change\",nn)}},re=()=>{var fe,$e;const ce=C.value?!_.value:!(_.value||w.value.length);_.value=ce;let Re=!1,ne=0;const Pe=($e=(fe=t==null?void 0:t.store)==null?void 0:fe.states)==null?void 0:$e.rowKey.value,{childrenColumnName:rt}=t.store.states,mt={children:rt.value,checkStrictly:!1};s.value.forEach((Me,xt)=>{const nn=xt+ne;Fu(w.value,Me,ce,mt,E.value,nn)&&(Re=!0),ne+=K(Dn(Me,Pe))}),Re&&t.emit(\"selection-change\",w.value?w.value.slice():[]),t.emit(\"select-all\",(w.value||[]).slice())},le=()=>{const fe=Do(w.value,r.value);s.value.forEach($e=>{const ce=Dn($e,r.value),Re=fe[ce];Re&&(w.value[Re.index]=$e)})},pe=()=>{var fe;if(((fe=s.value)==null?void 0:fe.length)===0){_.value=!1;return}const{childrenColumnName:$e}=t.store.states,ce=r.value?Do(w.value,r.value):void 0;let Re=0,ne=0;const Pe=Me=>ce?!!ce[Dn(Me,r.value)]:w.value.includes(Me),rt=Me=>{var xt;for(const nn of Me){const qt=E.value&&E.value.call(null,nn,Re);if(Pe(nn))ne++;else if(!E.value||qt)return!1;if(Re++,(xt=nn[$e.value])!=null&&xt.length&&!rt(nn[$e.value]))return!1}return!0},mt=rt(s.value||[]);_.value=ne===0?!1:mt},K=fe=>{var $e;if(!t||!t.store)return 0;const{treeData:ce}=t.store.states;let Re=0;const ne=($e=ce.value[fe])==null?void 0:$e.children;return ne&&(Re+=ne.length,ne.forEach(Pe=>{Re+=K(Pe)})),Re},z=(fe,$e)=>{ke(fe)||(fe=[fe]);const ce={};return fe.forEach(Re=>{k.value[Re.id]=$e,ce[Re.columnKey||Re.id]=$e}),ce},te=(fe,$e,ce)=>{x.value&&x.value!==fe&&(x.value.order=null),x.value=fe,M.value=$e,A.value=ce},oe=()=>{let fe=c(o);Object.keys(k.value).forEach($e=>{const ce=k.value[$e];if(!ce||ce.length===0)return;const Re=mk({columns:u.value},$e);Re&&Re.filterMethod&&(fe=fe.filter(ne=>ce.some(Pe=>Re.filterMethod.call(null,Pe,ne,Re))))}),T.value=fe},he=()=>{s.value=Fq(T.value,{sortingColumn:x.value,sortProp:M.value,sortOrder:A.value})},Y=(fe=void 0)=>{fe&&fe.filter||oe(),he()},L=fe=>{const{tableHeaderRef:$e}=t.refs;if(!$e)return;const ce=Object.assign({},$e.filterPanels),Re=Object.keys(ce);if(Re.length)if(ze(fe)&&(fe=[fe]),ke(fe)){const ne=fe.map(Pe=>Mq({columns:u.value},Pe));Re.forEach(Pe=>{const rt=ne.find(mt=>mt.id===Pe);rt&&(rt.filteredValue=[])}),t.store.commit(\"filterChange\",{column:ne,values:[],silent:!0,multi:!0})}else Re.forEach(ne=>{const Pe=u.value.find(rt=>rt.id===ne);Pe&&(Pe.filteredValue=[])}),k.value={},t.store.commit(\"filterChange\",{column:{},values:[],silent:!0})},Q=()=>{x.value&&(te(null,null,null),t.store.commit(\"changeSortCondition\",{silent:!0}))},{setExpandRowKeys:se,toggleRowExpansion:ge,updateExpandRows:ae,states:_e,isRowExpanded:me}=Dq({data:s,rowKey:r}),{updateTreeExpandKeys:Ce,toggleTreeExpansion:Te,updateTreeData:Se,updateKeyChildren:Ie,loadOrToggle:be,states:Ae}=Nq({data:s,rowKey:r}),{updateCurrentRowData:qe,updateCurrentRow:tt,setCurrentRowKey:et,states:at}=Bq({data:s,rowKey:r});return{assertRowKey:G,updateColumns:j,scheduleLayout:F,isSelected:R,clearSelection:B,cleanSelection:N,getSelectionRows:U,toggleRowSelection:J,_toggleAllSelection:re,toggleAllSelection:null,updateSelectionByRowKey:le,updateAllSelected:pe,updateFilters:z,updateCurrentRow:tt,updateSort:te,execFilter:oe,execSort:he,execQuery:Y,clearFilter:L,clearSort:Q,toggleRowExpansion:ge,setExpandRowKeysAdapter:fe=>{se(fe),Ce(fe)},setCurrentRowKey:et,toggleRowExpansionAdapter:(fe,$e)=>{u.value.some(({type:Re})=>Re===\"expand\")?ge(fe,$e):Te(fe,$e)},isRowExpanded:me,updateExpandRows:ae,updateCurrentRowData:qe,loadOrToggle:be,updateTreeData:Se,updateKeyChildren:Ie,states:{tableSize:n,rowKey:r,data:s,_data:o,isComplex:a,_columns:i,originColumns:l,columns:u,fixedColumns:f,rightFixedColumns:d,leafColumns:h,fixedLeafColumns:v,rightFixedLeafColumns:b,updateOrderFns:p,leafColumnsLength:g,fixedLeafColumnsLength:m,rightFixedLeafColumnsLength:y,isAllSelected:_,selection:w,reserveSelection:S,selectOnIndeterminate:C,selectable:E,filters:k,filteredData:T,sortingColumn:x,sortProp:M,sortOrder:A,hoverRow:P,..._e,...Ae,...at}}}function op(e,t){return e.map(n=>{var r;return n.id===t.id?t:((r=n.children)!=null&&r.length&&(n.children=op(n.children,t)),n)})}function ip(e){e.forEach(t=>{var n,r;t.no=(n=t.getColumnIndex)==null?void 0:n.call(t),(r=t.children)!=null&&r.length&&ip(t.children)}),e.sort((t,n)=>t.no-n.no)}function Vq(){const e=ct(),t=Hq();return{ns:we(\"table\"),...t,mutations:{setData(a,i){const l=c(a._data)!==i;a.data.value=i,a._data.value=i,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),c(a.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):l?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(a,i,l,u){const f=c(a._columns);let d=[];l?(l&&!l.children&&(l.children=[]),l.children.push(i),d=op(f,l)):(f.push(i),d=f),ip(d),a._columns.value=d,a.updateOrderFns.push(u),i.type===\"selection\"&&(a.selectable.value=i.selectable,a.reserveSelection.value=i.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(a,i){var l;((l=i.getColumnIndex)==null?void 0:l.call(i))!==i.no&&(ip(a._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(a,i,l,u){const f=c(a._columns)||[];if(l)l.children.splice(l.children.findIndex(h=>h.id===i.id),1),je(()=>{var h;((h=l.children)==null?void 0:h.length)===0&&delete l.children}),a._columns.value=op(f,l);else{const h=f.indexOf(i);h>-1&&(f.splice(h,1),a._columns.value=f)}const d=a.updateOrderFns.indexOf(u);d>-1&&a.updateOrderFns.splice(d,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(a,i){const{prop:l,order:u,init:f}=i;if(l){const d=c(a.columns).find(h=>h.property===l);d&&(d.order=u,e.store.updateSort(d,l,u),e.store.commit(\"changeSortCondition\",{init:f}))}},changeSortCondition(a,i){const{sortingColumn:l,sortProp:u,sortOrder:f}=a,d=c(l),h=c(u),v=c(f);v===null&&(a.sortingColumn.value=null,a.sortProp.value=null);const b={filter:!0};e.store.execQuery(b),(!i||!(i.silent||i.init))&&e.emit(\"sort-change\",{column:d,prop:h,order:v}),e.store.updateTableScrollY()},filterChange(a,i){const{column:l,values:u,silent:f}=i,d=e.store.updateFilters(l,u);e.store.execQuery(),f||e.emit(\"filter-change\",d),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(a,i){e.store.toggleRowSelection(i),e.store.updateAllSelected()},setHoverRow(a,i){a.hoverRow.value=i},setCurrentRow(a,i){e.store.updateCurrentRow(i)}},commit:function(a,...i){const l=e.store.mutations;if(l[a])l[a].apply(e,[e.store.states].concat(i));else throw new Error(`Action not found: ${a}`)},updateTableScrollY:function(){je(()=>e.layout.updateScrollY.apply(e.layout))}}}const Za={rowKey:\"rowKey\",defaultExpandAll:\"defaultExpandAll\",selectOnIndeterminate:\"selectOnIndeterminate\",indent:\"indent\",lazy:\"lazy\",data:\"data\",\"treeProps.hasChildren\":{key:\"lazyColumnIdentifier\",default:\"hasChildren\"},\"treeProps.children\":{key:\"childrenColumnName\",default:\"children\"},\"treeProps.checkStrictly\":{key:\"checkStrictly\",default:!1}};function zq(e,t){if(!e)throw new Error(\"Table is required.\");const n=Vq();return n.toggleAllSelection=nr(n._toggleAllSelection,10),Object.keys(Za).forEach(r=>{yk(wk(t,r),r,n)}),Wq(n,t),n}function Wq(e,t){Object.keys(Za).forEach(n=>{ye(()=>wk(t,n),r=>{yk(r,n,e)})})}function yk(e,t,n){let r=e,s=Za[t];typeof Za[t]==\"object\"&&(s=s.key,r=r||Za[t].default),n.states[s].value=r}function wk(e,t){if(t.includes(\".\")){const n=t.split(\".\");let r=e;return n.forEach(s=>{r=r[s]}),r}else return e[t]}class Kq{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=W(null),this.scrollX=W(!1),this.scrollY=W(!1),this.bodyWidth=W(null),this.fixedWidth=W(null),this.rightFixedWidth=W(null),this.gutterWidth=0;for(const n in t)kt(t,n)&&(Ft(this[n])?this[n].value=t[n]:this[n]=t[n]);if(!this.table)throw new Error(\"Table is required for Table Layout\");if(!this.store)throw new Error(\"Store is required for Table Layout\")}updateScrollY(){if(this.height.value===null)return!1;const n=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(n!=null&&n.wrapRef)){let r=!0;const s=this.scrollY.value;return r=n.wrapRef.scrollHeight>n.wrapRef.clientHeight,this.scrollY.value=r,s!==r}return!1}setHeight(t,n=\"height\"){if(!bt)return;const r=this.table.vnode.el;if(t=$q(t),this.height.value=Number(t),!r&&(t||t===0))return je(()=>this.setHeight(t,n));Ge(t)?(r.style[n]=`${t}px`,this.updateElsHeight()):ze(t)&&(r.style[n]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,\"max-height\")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(r=>{r.isColumnGroup?t.push.apply(t,r.columns):t.push(r)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers(\"scrollable\")}headerDisplayNone(t){if(!t)return!0;let n=t;for(;n.tagName!==\"DIV\";){if(getComputedStyle(n).display===\"none\")return!0;n=n.parentElement}return!1}updateColumnsWidth(){if(!bt)return;const t=this.fit,n=this.table.vnode.el.clientWidth;let r=0;const s=this.getFlattenColumns(),o=s.filter(l=>!Ge(l.width));if(s.forEach(l=>{Ge(l.width)&&l.realWidth&&(l.realWidth=null)}),o.length>0&&t){if(s.forEach(l=>{r+=Number(l.width||l.minWidth||80)}),r<=n){this.scrollX.value=!1;const l=n-r;if(o.length===1)o[0].realWidth=Number(o[0].minWidth||80)+l;else{const u=o.reduce((h,v)=>h+Number(v.minWidth||80),0),f=l/u;let d=0;o.forEach((h,v)=>{if(v===0)return;const b=Math.floor(Number(h.minWidth||80)*f);d+=b,h.realWidth=Number(h.minWidth||80)+b}),o[0].realWidth=Number(o[0].minWidth||80)+l-d}}else this.scrollX.value=!0,o.forEach(l=>{l.realWidth=Number(l.minWidth)});this.bodyWidth.value=Math.max(r,n),this.table.state.resizeState.value.width=this.bodyWidth.value}else s.forEach(l=>{!l.width&&!l.minWidth?l.realWidth=80:l.realWidth=Number(l.width||l.minWidth),r+=l.realWidth}),this.scrollX.value=r>n,this.bodyWidth.value=r;const a=this.store.states.fixedColumns.value;if(a.length>0){let l=0;a.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.fixedWidth.value=l}const i=this.store.states.rightFixedColumns.value;if(i.length>0){let l=0;i.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=l}this.notifyObservers(\"columns\")}addObserver(t){this.observers.push(t)}removeObserver(t){const n=this.observers.indexOf(t);n!==-1&&this.observers.splice(n,1)}notifyObservers(t){this.observers.forEach(r=>{var s,o;switch(t){case\"columns\":(s=r.state)==null||s.onColumnsChange(this);break;case\"scrollable\":(o=r.state)==null||o.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:jq}=Sr,Uq=ee({name:\"ElTableFilterPanel\",components:{ElCheckbox:Sr,ElCheckboxGroup:jq,ElScrollbar:ls,ElTooltip:Cn,ElIcon:He,ArrowDown:As,ArrowUp:Mv},directives:{ClickOutside:Es},props:{placement:{type:String,default:\"bottom-start\"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function},appendTo:{type:String}},setup(e){const t=ct(),{t:n}=yt(),r=we(\"table-filter\"),s=t==null?void 0:t.parent;s.filterPanels.value[e.column.id]||(s.filterPanels.value[e.column.id]=t);const o=W(!1),a=W(null),i=O(()=>e.column&&e.column.filters),l=O(()=>e.column.filterClassName?`${r.b()} ${e.column.filterClassName}`:r.b()),u=O({get:()=>{var S;return(((S=e.column)==null?void 0:S.filteredValue)||[])[0]},set:S=>{f.value&&(typeof S<\"u\"&&S!==null?f.value.splice(0,1,S):f.value.splice(0,1))}}),f=O({get(){return e.column?e.column.filteredValue||[]:[]},set(S){e.column&&e.upDataColumn(\"filteredValue\",S)}}),d=O(()=>e.column?e.column.filterMultiple:!0),h=S=>S.value===u.value,v=()=>{o.value=!1},b=S=>{S.stopPropagation(),o.value=!o.value},p=()=>{o.value=!1},g=()=>{_(f.value),v()},m=()=>{f.value=[],_(f.value),v()},y=S=>{u.value=S,_(typeof S<\"u\"&&S!==null?f.value:[]),v()},_=S=>{e.store.commit(\"filterChange\",{column:e.column,values:S}),e.store.updateAllSelected()};ye(o,S=>{e.column&&e.upDataColumn(\"filterOpened\",S)},{immediate:!0});const w=O(()=>{var S,C;return(C=(S=a.value)==null?void 0:S.popperRef)==null?void 0:C.contentRef});return{tooltipVisible:o,multiple:d,filterClassName:l,filteredValue:f,filterValue:u,filters:i,handleConfirm:g,handleReset:m,handleSelect:y,isActive:h,t:n,ns:r,showFilterPanel:b,hideFilterPanel:p,popperPaneRef:w,tooltip:a}}});function qq(e,t,n,r,s,o){const a=ut(\"el-checkbox\"),i=ut(\"el-checkbox-group\"),l=ut(\"el-scrollbar\"),u=ut(\"arrow-up\"),f=ut(\"arrow-down\"),d=ut(\"el-icon\"),h=ut(\"el-tooltip\"),v=ed(\"click-outside\");return $(),ve(h,{ref:\"tooltip\",visible:e.tooltipVisible,offset:0,placement:e.placement,\"show-arrow\":!1,\"stop-popper-mouse-event\":!1,teleported:\"\",effect:\"light\",pure:\"\",\"popper-class\":e.filterClassName,persistent:\"\",\"append-to\":e.appendTo},{content:q(()=>[e.multiple?($(),X(\"div\",{key:0},[Z(\"div\",{class:D(e.ns.e(\"content\"))},[H(l,{\"wrap-class\":e.ns.e(\"wrap\")},{default:q(()=>[H(i,{modelValue:e.filteredValue,\"onUpdate:modelValue\":b=>e.filteredValue=b,class:D(e.ns.e(\"checkbox-group\"))},{default:q(()=>[($(!0),X(We,null,vt(e.filters,b=>($(),ve(a,{key:b.value,value:b.value},{default:q(()=>[Ve(Ee(b.text),1)]),_:2},1032,[\"value\"]))),128))]),_:1},8,[\"modelValue\",\"onUpdate:modelValue\",\"class\"])]),_:1},8,[\"wrap-class\"])],2),Z(\"div\",{class:D(e.ns.e(\"bottom\"))},[Z(\"button\",{class:D({[e.ns.is(\"disabled\")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:\"button\",onClick:e.handleConfirm},Ee(e.t(\"el.table.confirmFilter\")),11,[\"disabled\",\"onClick\"]),Z(\"button\",{type:\"button\",onClick:e.handleReset},Ee(e.t(\"el.table.resetFilter\")),9,[\"onClick\"])],2)])):($(),X(\"ul\",{key:1,class:D(e.ns.e(\"list\"))},[Z(\"li\",{class:D([e.ns.e(\"list-item\"),{[e.ns.is(\"active\")]:e.filterValue===void 0||e.filterValue===null}]),onClick:b=>e.handleSelect(null)},Ee(e.t(\"el.table.clearFilter\")),11,[\"onClick\"]),($(!0),X(We,null,vt(e.filters,b=>($(),X(\"li\",{key:b.value,class:D([e.ns.e(\"list-item\"),e.ns.is(\"active\",e.isActive(b))]),label:b.value,onClick:p=>e.handleSelect(b.value)},Ee(b.text),11,[\"label\",\"onClick\"]))),128))],2))]),default:q(()=>[st(($(),X(\"span\",{class:D([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:e.showFilterPanel},[H(d,null,{default:q(()=>[ue(e.$slots,\"filter-icon\",{},()=>[e.column.filterOpened?($(),ve(u,{key:0})):($(),ve(f,{key:1}))])]),_:3})],10,[\"onClick\"])),[[v,e.hideFilterPanel,e.popperPaneRef]])]),_:3},8,[\"visible\",\"placement\",\"popper-class\",\"append-to\"])}var Yq=Oe(Uq,[[\"render\",qq],[\"__file\",\"filter-panel.vue\"]]);function Sk(e){const t=ct();Dl(()=>{n.value.addObserver(t)}),it(()=>{r(n.value),s(n.value)}),os(()=>{r(n.value),s(n.value)}),xs(()=>{n.value.removeObserver(t)});const n=O(()=>{const o=e.layout;if(!o)throw new Error(\"Can not find table layout.\");return o}),r=o=>{var a;const i=((a=e.vnode.el)==null?void 0:a.querySelectorAll(\"colgroup > col\"))||[];if(!i.length)return;const l=o.getFlattenColumns(),u={};l.forEach(f=>{u[f.id]=f});for(let f=0,d=i.length;f<d;f++){const h=i[f],v=h.getAttribute(\"name\"),b=u[v];b&&h.setAttribute(\"width\",b.realWidth||b.width)}},s=o=>{var a,i;const l=((a=e.vnode.el)==null?void 0:a.querySelectorAll(\"colgroup > col[name=gutter]\"))||[];for(let f=0,d=l.length;f<d;f++)l[f].setAttribute(\"width\",o.scrollY.value?o.gutterWidth:\"0\");const u=((i=e.vnode.el)==null?void 0:i.querySelectorAll(\"th.gutter\"))||[];for(let f=0,d=u.length;f<d;f++){const h=u[f];h.style.width=o.scrollY.value?`${o.gutterWidth}px`:\"0\",h.style.display=o.scrollY.value?\"\":\"none\"}};return{tableLayout:n.value,onColumnsChange:r,onScrollableChange:s}}const cs=Symbol(\"ElTable\");function Gq(e,t){const n=ct(),r=Fe(cs),s=p=>{p.stopPropagation()},o=(p,g)=>{!g.filters&&g.sortable?b(p,g,!1):g.filterable&&!g.sortable&&s(p),r==null||r.emit(\"header-click\",g,p)},a=(p,g)=>{r==null||r.emit(\"header-contextmenu\",g,p)},i=W(null),l=W(!1),u=W({}),f=(p,g)=>{if(bt&&!(g.children&&g.children.length>0)&&i.value&&e.border){l.value=!0;const m=r;t(\"set-drag-visible\",!0);const _=(m==null?void 0:m.vnode.el).getBoundingClientRect().left,w=n.vnode.el.querySelector(`th.${g.id}`),S=w.getBoundingClientRect(),C=S.left-_+30;pr(w,\"noclick\"),u.value={startMouseLeft:p.clientX,startLeft:S.right-_,startColumnLeft:S.left-_,tableLeft:_};const E=m==null?void 0:m.refs.resizeProxy;E.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const k=x=>{const M=x.clientX-u.value.startMouseLeft,A=u.value.startLeft+M;E.style.left=`${Math.max(C,A)}px`},T=()=>{if(l.value){const{startColumnLeft:x,startLeft:M}=u.value,P=Number.parseInt(E.style.left,10)-x;g.width=g.realWidth=P,m==null||m.emit(\"header-dragend\",g.width,M-x,g,p),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor=\"\",l.value=!1,i.value=null,u.value={},t(\"set-drag-visible\",!1)}document.removeEventListener(\"mousemove\",k),document.removeEventListener(\"mouseup\",T),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{Bn(w,\"noclick\")},0)};document.addEventListener(\"mousemove\",k),document.addEventListener(\"mouseup\",T)}},d=(p,g)=>{var m;if(g.children&&g.children.length>0)return;const y=p.target;if(!lr(y))return;const _=y==null?void 0:y.closest(\"th\");if(!(!g||!g.resizable||!_)&&!l.value&&e.border){const w=_.getBoundingClientRect(),S=document.body.style,C=((m=_.parentNode)==null?void 0:m.lastElementChild)===_;w.width>12&&w.right-p.pageX<8&&!C?(S.cursor=\"col-resize\",Zn(_,\"is-sortable\")&&(_.style.cursor=\"col-resize\"),i.value=g):l.value||(S.cursor=\"\",Zn(_,\"is-sortable\")&&(_.style.cursor=\"pointer\"),i.value=null)}},h=()=>{bt&&(document.body.style.cursor=\"\")},v=({order:p,sortOrders:g})=>{if(p===\"\")return g[0];const m=g.indexOf(p||null);return g[m>g.length-2?0:m+1]},b=(p,g,m)=>{var y;p.stopPropagation();const _=g.order===m?null:m||v(g),w=(y=p.target)==null?void 0:y.closest(\"th\");if(w&&Zn(w,\"noclick\")){Bn(w,\"noclick\");return}if(!g.sortable)return;const S=p.currentTarget;if([\"ascending\",\"descending\"].some(x=>Zn(S,x)&&!g.sortOrders.includes(x)))return;const C=e.store.states;let E=C.sortProp.value,k;const T=C.sortingColumn.value;(T!==g||T===g&&T.order===null)&&(T&&(T.order=null),C.sortingColumn.value=g,E=g.property),_?k=g.order=_:k=g.order=null,C.sortProp.value=E,C.sortOrder.value=k,r==null||r.store.commit(\"changeSortCondition\")};return{handleHeaderClick:o,handleHeaderContextMenu:a,handleMouseDown:f,handleMouseMove:d,handleMouseOut:h,handleSortClick:b,handleFilterClick:s}}function Xq(e){const t=Fe(cs),n=we(\"table\");return{getHeaderRowStyle:i=>{const l=t==null?void 0:t.props.headerRowStyle;return Ke(l)?l.call(null,{rowIndex:i}):l},getHeaderRowClass:i=>{const l=[],u=t==null?void 0:t.props.headerRowClassName;return ze(u)?l.push(u):Ke(u)&&l.push(u.call(null,{rowIndex:i})),l.join(\" \")},getHeaderCellStyle:(i,l,u,f)=>{var d;let h=(d=t==null?void 0:t.props.headerCellStyle)!=null?d:{};Ke(h)&&(h=h.call(null,{rowIndex:i,columnIndex:l,row:u,column:f}));const v=xm(l,f.fixed,e.store,u);return Ji(v,\"left\"),Ji(v,\"right\"),Object.assign({},h,v)},getHeaderCellClass:(i,l,u,f)=>{const d=Rm(n.b(),l,f.fixed,e.store,u),h=[f.id,f.order,f.headerAlign,f.className,f.labelClassName,...d];f.children||h.push(\"is-leaf\"),f.sortable&&h.push(\"is-sortable\");const v=t==null?void 0:t.props.headerCellClassName;return ze(v)?h.push(v):Ke(v)&&h.push(v.call(null,{rowIndex:i,columnIndex:l,row:u,column:f})),h.push(n.e(\"cell\")),h.filter(b=>!!b).join(\" \")}}}const Ck=e=>{const t=[];return e.forEach(n=>{n.children?(t.push(n),t.push.apply(t,Ck(n.children))):t.push(n)}),t},kk=e=>{let t=1;const n=(o,a)=>{if(a&&(o.level=a.level+1,t<o.level&&(t=o.level)),o.children){let i=0;o.children.forEach(l=>{n(l,o),i+=l.colSpan}),o.colSpan=i}else o.colSpan=1};e.forEach(o=>{o.level=1,n(o,void 0)});const r=[];for(let o=0;o<t;o++)r.push([]);return Ck(e).forEach(o=>{o.children?(o.rowSpan=1,o.children.forEach(a=>a.isSubColumn=!0)):o.rowSpan=t-o.level+1,r[o.level-1].push(o)}),r};function Jq(e){const t=Fe(cs),n=O(()=>kk(e.store.states.originColumns.value));return{isGroup:O(()=>{const o=n.value.length>1;return o&&t&&(t.state.isGroup.value=!0),o}),toggleAllSelection:o=>{o.stopPropagation(),t==null||t.store.commit(\"toggleAllSelection\")},columnRows:n}}var Zq=ee({name:\"ElTableHeader\",components:{ElCheckbox:Sr},props:{fixed:{type:String,default:\"\"},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:\"\",order:\"\"})},appendFilterPanelTo:{type:String}},setup(e,{emit:t}){const n=ct(),r=Fe(cs),s=we(\"table\"),o=W({}),{onColumnsChange:a,onScrollableChange:i}=Sk(r),l=(r==null?void 0:r.props.tableLayout)===\"auto\",u=St(new Map),f=W(),d=()=>{setTimeout(()=>{u.size>0&&(u.forEach((x,M)=>{const A=f.value.querySelector(`.${M.replace(/\\s/g,\".\")}`);if(A){const P=A.getBoundingClientRect().width;x.width=P}}),u.clear())})};ye(u,d),it(async()=>{await je(),await je();const{prop:x,order:M}=e.defaultSort;r==null||r.store.commit(\"sort\",{prop:x,order:M,init:!0}),d()});const{handleHeaderClick:h,handleHeaderContextMenu:v,handleMouseDown:b,handleMouseMove:p,handleMouseOut:g,handleSortClick:m,handleFilterClick:y}=Gq(e,t),{getHeaderRowStyle:_,getHeaderRowClass:w,getHeaderCellStyle:S,getHeaderCellClass:C}=Xq(e),{isGroup:E,toggleAllSelection:k,columnRows:T}=Jq(e);return n.state={onColumnsChange:a,onScrollableChange:i},n.filterPanels=o,{ns:s,filterPanels:o,onColumnsChange:a,onScrollableChange:i,columnRows:T,getHeaderRowClass:w,getHeaderRowStyle:_,getHeaderCellClass:C,getHeaderCellStyle:S,handleHeaderClick:h,handleHeaderContextMenu:v,handleMouseDown:b,handleMouseMove:p,handleMouseOut:g,handleSortClick:m,handleFilterClick:y,isGroup:E,toggleAllSelection:k,saveIndexSelection:u,isTableLayoutAuto:l,theadRef:f,updateFixedColumnStyle:d}},render(){const{ns:e,isGroup:t,columnRows:n,getHeaderCellStyle:r,getHeaderCellClass:s,getHeaderRowClass:o,getHeaderRowStyle:a,handleHeaderClick:i,handleHeaderContextMenu:l,handleMouseDown:u,handleMouseMove:f,handleSortClick:d,handleMouseOut:h,store:v,$parent:b,saveIndexSelection:p,isTableLayoutAuto:g}=this;let m=1;return Ye(\"thead\",{ref:\"theadRef\",class:{[e.is(\"group\")]:t}},n.map((y,_)=>Ye(\"tr\",{class:o(_),key:_,style:a(_)},y.map((w,S)=>{w.rowSpan>m&&(m=w.rowSpan);const C=s(_,S,y,w);return g&&w.fixed&&p.set(C,w),Ye(\"th\",{class:C,colspan:w.colSpan,key:`${w.id}-thead`,rowspan:w.rowSpan,style:r(_,S,y,w),onClick:E=>{E.currentTarget.classList.contains(\"noclick\")||i(E,w)},onContextmenu:E=>l(E,w),onMousedown:E=>u(E,w),onMousemove:E=>f(E,w),onMouseout:h},[Ye(\"div\",{class:[\"cell\",w.filteredValue&&w.filteredValue.length>0?\"highlight\":\"\"]},[w.renderHeader?w.renderHeader({column:w,$index:S,store:v,_self:b}):w.label,w.sortable&&Ye(\"span\",{onClick:E=>d(E,w),class:\"caret-wrapper\"},[Ye(\"i\",{onClick:E=>d(E,w,\"ascending\"),class:\"sort-caret ascending\"}),Ye(\"i\",{onClick:E=>d(E,w,\"descending\"),class:\"sort-caret descending\"})]),w.filterable&&Ye(Yq,{store:v,placement:w.filterPlacement||\"bottom-start\",appendTo:b.appendFilterPanelTo,column:w,upDataColumn:(E,k)=>{w[E]=k}},{\"filter-icon\":()=>w.renderFilterIcon?w.renderFilterIcon({filterOpened:w.filterOpened}):null})])])}))))}});function Nf(e,t,n=.03){return e-t>n}function Qq(e){const t=Fe(cs),n=W(\"\"),r=W(Ye(\"div\")),s=(b,p,g)=>{var m;const y=t,_=Bf(b);let w;const S=(m=y==null?void 0:y.vnode.el)==null?void 0:m.dataset.prefix;_&&(w=Db({columns:e.store.states.columns.value},_,S),w&&(y==null||y.emit(`cell-${g}`,p,w,_,b))),y==null||y.emit(`row-${g}`,p,w,b)},o=(b,p)=>{s(b,p,\"dblclick\")},a=(b,p)=>{e.store.commit(\"setCurrentRow\",p),s(b,p,\"click\")},i=(b,p)=>{s(b,p,\"contextmenu\")},l=nr(b=>{e.store.commit(\"setHoverRow\",b)},30),u=nr(()=>{e.store.commit(\"setHoverRow\",null)},30),f=b=>{const p=window.getComputedStyle(b,null),g=Number.parseInt(p.paddingLeft,10)||0,m=Number.parseInt(p.paddingRight,10)||0,y=Number.parseInt(p.paddingTop,10)||0,_=Number.parseInt(p.paddingBottom,10)||0;return{left:g,right:m,top:y,bottom:_}},d=(b,p,g)=>{let m=p.target.parentNode;for(;b>1&&(m=m==null?void 0:m.nextSibling,!(!m||m.nodeName!==\"TR\"));)g(m,\"hover-row hover-fixed-row\"),b--};return{handleDoubleClick:o,handleClick:a,handleContextMenu:i,handleMouseEnter:l,handleMouseLeave:u,handleCellMouseEnter:(b,p,g)=>{var m;const y=t,_=Bf(b),w=(m=y==null?void 0:y.vnode.el)==null?void 0:m.dataset.prefix;if(_){const j=Db({columns:e.store.states.columns.value},_,w);_.rowSpan>1&&d(_.rowSpan,b,pr);const F=y.hoverState={cell:_,column:j,row:p};y==null||y.emit(\"cell-mouse-enter\",F.row,F.column,F.cell,b)}if(!g)return;const S=b.target.querySelector(\".cell\");if(!(Zn(S,`${w}-tooltip`)&&S.childNodes.length))return;const C=document.createRange();C.setStart(S,0),C.setEnd(S,S.childNodes.length);const{width:E,height:k}=C.getBoundingClientRect(),{width:T,height:x}=S.getBoundingClientRect(),{top:M,left:A,right:P,bottom:G}=f(S),V=A+P,I=M+G;(Nf(E+V,T)||Nf(k+I,x)||Nf(S.scrollWidth,T))&&Pq(g,_.innerText||_.textContent,_,y)},handleCellMouseLeave:b=>{const p=Bf(b);if(!p)return;p.rowSpan>1&&d(p.rowSpan,b,Bn);const g=t==null?void 0:t.hoverState;t==null||t.emit(\"cell-mouse-leave\",g==null?void 0:g.row,g==null?void 0:g.column,g==null?void 0:g.cell,b)},tooltipContent:n,tooltipTrigger:r}}function eY(e){const t=Fe(cs),n=we(\"table\");return{getRowStyle:(u,f)=>{const d=t==null?void 0:t.props.rowStyle;return Ke(d)?d.call(null,{row:u,rowIndex:f}):d||null},getRowClass:(u,f)=>{const d=[n.e(\"row\")];t!=null&&t.props.highlightCurrentRow&&u===e.store.states.currentRow.value&&d.push(\"current-row\"),e.stripe&&f%2===1&&d.push(n.em(\"row\",\"striped\"));const h=t==null?void 0:t.props.rowClassName;return ze(h)?d.push(h):Ke(h)&&d.push(h.call(null,{row:u,rowIndex:f})),d},getCellStyle:(u,f,d,h)=>{const v=t==null?void 0:t.props.cellStyle;let b=v??{};Ke(v)&&(b=v.call(null,{rowIndex:u,columnIndex:f,row:d,column:h}));const p=xm(f,e==null?void 0:e.fixed,e.store);return Ji(p,\"left\"),Ji(p,\"right\"),Object.assign({},b,p)},getCellClass:(u,f,d,h,v)=>{const b=Rm(n.b(),f,e==null?void 0:e.fixed,e.store,void 0,v),p=[h.id,h.align,h.className,...b],g=t==null?void 0:t.props.cellClassName;return ze(g)?p.push(g):Ke(g)&&p.push(g.call(null,{rowIndex:u,columnIndex:f,row:d,column:h})),p.push(n.e(\"cell\")),p.filter(m=>!!m).join(\" \")},getSpan:(u,f,d,h)=>{let v=1,b=1;const p=t==null?void 0:t.props.spanMethod;if(Ke(p)){const g=p({row:u,column:f,rowIndex:d,columnIndex:h});ke(g)?(v=g[0],b=g[1]):typeof g==\"object\"&&(v=g.rowspan,b=g.colspan)}return{rowspan:v,colspan:b}},getColspanRealWidth:(u,f,d)=>{if(f<1)return u[d].realWidth;const h=u.map(({realWidth:v,width:b})=>v||b).slice(d,d+f);return Number(h.reduce((v,b)=>Number(v)+Number(b),-1))}}}const tY=ee({name:\"TableTdWrapper\"}),nY=ee({...tY,props:{colspan:{type:Number,default:1},rowspan:{type:Number,default:1}},setup(e){return(t,n)=>($(),X(\"td\",{colspan:e.colspan,rowspan:e.rowspan},[ue(t.$slots,\"default\")],8,[\"colspan\",\"rowspan\"]))}});var rY=Oe(nY,[[\"__file\",\"td-wrapper.vue\"]]);function sY(e){const t=Fe(cs),n=we(\"table\"),{handleDoubleClick:r,handleClick:s,handleContextMenu:o,handleMouseEnter:a,handleMouseLeave:i,handleCellMouseEnter:l,handleCellMouseLeave:u,tooltipContent:f,tooltipTrigger:d}=Qq(e),{getRowStyle:h,getRowClass:v,getCellStyle:b,getCellClass:p,getSpan:g,getColspanRealWidth:m}=eY(e),y=O(()=>e.store.states.columns.value.findIndex(({type:E})=>E===\"default\")),_=(E,k)=>{const T=t.props.rowKey;return T?Dn(E,T):k},w=(E,k,T,x=!1)=>{const{tooltipEffect:M,tooltipOptions:A,store:P}=e,{indent:G,columns:V}=P.states,I=v(E,k);let j=!0;return T&&(I.push(n.em(\"row\",`level-${T.level}`)),j=T.display),Ye(\"tr\",{style:[j?null:{display:\"none\"},h(E,k)],class:I,key:_(E,k),onDblclick:R=>r(R,E),onClick:R=>s(R,E),onContextmenu:R=>o(R,E),onMouseenter:()=>a(k),onMouseleave:i},V.value.map((R,B)=>{const{rowspan:N,colspan:U}=g(E,R,k,B);if(!N||!U)return null;const J=Object.assign({},R);J.realWidth=m(V.value,U,B);const re={store:e.store,_self:e.context||t,column:J,row:E,$index:k,cellIndex:B,expanded:x};B===y.value&&T&&(re.treeNode={indent:T.level*G.value,level:T.level},Vt(T.expanded)&&(re.treeNode.expanded=T.expanded,\"loading\"in T&&(re.treeNode.loading=T.loading),\"noLazyChildren\"in T&&(re.treeNode.noLazyChildren=T.noLazyChildren)));const le=`${_(E,k)},${B}`,pe=J.columnKey||J.rawColumnKey||\"\",K=R.showOverflowTooltip&&SS({effect:M},A,R.showOverflowTooltip);return Ye(rY,{style:b(k,B,E,R),class:p(k,B,E,R,U-1),key:`${pe}${le}`,rowspan:N,colspan:U,onMouseenter:z=>l(z,E,K),onMouseleave:u},{default:()=>S(B,R,re)})}))},S=(E,k,T)=>k.renderCell(T);return{wrappedRowRender:(E,k)=>{const T=e.store,{isRowExpanded:x,assertRowKey:M}=T,{treeData:A,lazyTreeNodeMap:P,childrenColumnName:G,rowKey:V}=T.states,I=T.states.columns.value;if(I.some(({type:F})=>F===\"expand\")){const F=x(E),R=w(E,k,void 0,F),B=t.renderExpanded;return F?B?[[R,Ye(\"tr\",{key:`expanded-row__${R.key}`},[Ye(\"td\",{colspan:I.length,class:`${n.e(\"cell\")} ${n.e(\"expanded-cell\")}`},[B({row:E,$index:k,store:T,expanded:F})])])]]:(console.error(\"[Element Error]renderExpanded is required.\"),R):[[R]]}else if(Object.keys(A.value).length){M();const F=Dn(E,V.value);let R=A.value[F],B=null;R&&(B={expanded:R.expanded,level:R.level,display:!0},Vt(R.lazy)&&(Vt(R.loaded)&&R.loaded&&(B.noLazyChildren=!(R.children&&R.children.length)),B.loading=R.loading));const N=[w(E,k,B)];if(R){let U=0;const J=(le,pe)=>{le&&le.length&&pe&&le.forEach(K=>{const z={display:pe.display&&pe.expanded,level:pe.level+1,expanded:!1,noLazyChildren:!1,loading:!1},te=Dn(K,V.value);if(te==null)throw new Error(\"For nested data item, row-key is required.\");if(R={...A.value[te]},R&&(z.expanded=R.expanded,R.level=R.level||z.level,R.display=!!(R.expanded&&z.display),Vt(R.lazy)&&(Vt(R.loaded)&&R.loaded&&(z.noLazyChildren=!(R.children&&R.children.length)),z.loading=R.loading)),U++,N.push(w(K,k+U,z)),R){const oe=P.value[te]||K[G.value];J(oe,R)}})};R.display=!0;const re=P.value[F]||E[G.value];J(re,R)}return N}else return w(E,k,void 0)},tooltipContent:f,tooltipTrigger:d}}const oY={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:\"\"},highlight:Boolean};var iY=ee({name:\"ElTableBody\",props:oY,setup(e){const t=ct(),n=Fe(cs),r=we(\"table\"),{wrappedRowRender:s,tooltipContent:o,tooltipTrigger:a}=sY(e),{onColumnsChange:i,onScrollableChange:l}=Sk(n),u=[];return ye(e.store.states.hoverRow,(f,d)=>{var h;const v=t==null?void 0:t.vnode.el,b=Array.from((v==null?void 0:v.children)||[]).filter(m=>m==null?void 0:m.classList.contains(`${r.e(\"row\")}`));let p=f;const g=(h=b[p])==null?void 0:h.childNodes;if(g!=null&&g.length){let m=0;Array.from(g).reduce((_,w,S)=>{var C,E;return((C=g[S])==null?void 0:C.colSpan)>1&&(m=(E=g[S])==null?void 0:E.colSpan),w.nodeName!==\"TD\"&&m===0&&_.push(S),m>0&&m--,_},[]).forEach(_=>{var w;for(p=f;p>0;){const S=(w=b[p-1])==null?void 0:w.childNodes;if(S[_]&&S[_].nodeName===\"TD\"&&S[_].rowSpan>1){pr(S[_],\"hover-cell\"),u.push(S[_]);break}p--}})}else u.forEach(m=>Bn(m,\"hover-cell\")),u.length=0;!e.store.states.isComplex.value||!bt||io(()=>{const m=b[d],y=b[f];m&&!m.classList.contains(\"hover-fixed-row\")&&Bn(m,\"hover-row\"),y&&pr(y,\"hover-row\")})}),xs(()=>{var f;(f=dr)==null||f()}),{ns:r,onColumnsChange:i,onScrollableChange:l,wrappedRowRender:s,tooltipContent:o,tooltipTrigger:a}},render(){const{wrappedRowRender:e,store:t}=this,n=t.states.data.value||[];return Ye(\"tbody\",{tabIndex:-1},[n.reduce((r,s)=>r.concat(e(s,r.length)),[])])}});function aY(){const e=Fe(cs),t=e==null?void 0:e.store,n=O(()=>t.states.fixedLeafColumnsLength.value),r=O(()=>t.states.rightFixedColumns.value.length),s=O(()=>t.states.columns.value.length),o=O(()=>t.states.fixedColumns.value.length),a=O(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:n,rightFixedLeafCount:r,columnsCount:s,leftFixedCount:o,rightFixedCount:a,columns:t.states.columns}}function lY(e){const{columns:t}=aY(),n=we(\"table\");return{getCellClasses:(o,a)=>{const i=o[a],l=[n.e(\"cell\"),i.id,i.align,i.labelClassName,...Rm(n.b(),a,i.fixed,e.store)];return i.className&&l.push(i.className),i.children||l.push(n.is(\"leaf\")),l},getCellStyles:(o,a)=>{const i=xm(a,o.fixed,e.store);return Ji(i,\"left\"),Ji(i,\"right\"),i},columns:t}}var cY=ee({name:\"ElTableFooter\",props:{fixed:{type:String,default:\"\"},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:\"\",order:\"\"})}},setup(e){const{getCellClasses:t,getCellStyles:n,columns:r}=lY(e);return{ns:we(\"table\"),getCellClasses:t,getCellStyles:n,columns:r}},render(){const{columns:e,getCellStyles:t,getCellClasses:n,summaryMethod:r,sumText:s}=this,o=this.store.states.data.value;let a=[];return r?a=r({columns:e,data:o}):e.forEach((i,l)=>{if(l===0){a[l]=s;return}const u=o.map(v=>Number(v[i.property])),f=[];let d=!0;u.forEach(v=>{if(!Number.isNaN(+v)){d=!1;const b=`${v}`.split(\".\")[1];f.push(b?b.length:0)}});const h=Math.max.apply(null,f);d?a[l]=\"\":a[l]=u.reduce((v,b)=>{const p=Number(b);return Number.isNaN(+p)?v:Number.parseFloat((v+b).toFixed(Math.min(h,20)))},0)}),Ye(Ye(\"tfoot\",[Ye(\"tr\",{},[...e.map((i,l)=>Ye(\"td\",{key:l,colspan:i.colSpan,rowspan:i.rowSpan,class:n(e,l),style:t(i,l)},[Ye(\"div\",{class:[\"cell\",i.labelClassName]},[a[l]])]))])]))}});function uY(e){return{setCurrentRow:d=>{e.commit(\"setCurrentRow\",d)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(d,h,v=!0)=>{e.toggleRowSelection(d,h,!1,v),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:d=>{e.clearFilter(d)},toggleAllSelection:()=>{e.commit(\"toggleAllSelection\")},toggleRowExpansion:(d,h)=>{e.toggleRowExpansionAdapter(d,h)},clearSort:()=>{e.clearSort()},sort:(d,h)=>{e.commit(\"sort\",{prop:d,order:h})},updateKeyChildren:(d,h)=>{e.updateKeyChildren(d,h)}}}function dY(e,t,n,r){const s=W(!1),o=W(null),a=W(!1),i=F=>{a.value=F},l=W({width:null,height:null,headerHeight:null}),u=W(!1),f={display:\"inline-block\",verticalAlign:\"middle\"},d=W(),h=W(0),v=W(0),b=W(0),p=W(0),g=W(0);En(()=>{t.setHeight(e.height)}),En(()=>{t.setMaxHeight(e.maxHeight)}),ye(()=>[e.currentRowKey,n.states.rowKey],([F,R])=>{!c(R)||!c(F)||n.setCurrentRowKey(`${F}`)},{immediate:!0}),ye(()=>e.data,F=>{r.store.commit(\"setData\",F)},{immediate:!0,deep:!0}),En(()=>{e.expandRowKeys&&n.setExpandRowKeysAdapter(e.expandRowKeys)});const m=()=>{r.store.commit(\"setHoverRow\",null),r.hoverState&&(r.hoverState=null)},y=(F,R)=>{const{pixelX:B,pixelY:N}=R;Math.abs(B)>=Math.abs(N)&&(r.refs.bodyWrapper.scrollLeft+=R.pixelX/5)},_=O(()=>e.height||e.maxHeight||n.states.fixedColumns.value.length>0||n.states.rightFixedColumns.value.length>0),w=O(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:\"\"})),S=()=>{_.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(T)};it(async()=>{await je(),n.updateColumns(),x(),requestAnimationFrame(S);const F=r.vnode.el,R=r.refs.headerWrapper;e.flexible&&F&&F.parentElement&&(F.parentElement.style.minWidth=\"0\"),l.value={width:d.value=F.offsetWidth,height:F.offsetHeight,headerHeight:e.showHeader&&R?R.offsetHeight:null},n.states.columns.value.forEach(B=>{B.filteredValue&&B.filteredValue.length&&r.store.commit(\"filterChange\",{column:B,values:B.filteredValue,silent:!0})}),r.$ready=!0});const C=(F,R)=>{if(!F)return;const B=Array.from(F.classList).filter(N=>!N.startsWith(\"is-scrolling-\"));B.push(t.scrollX.value?R:\"is-scrolling-none\"),F.className=B.join(\" \")},E=F=>{const{tableWrapper:R}=r.refs;C(R,F)},k=F=>{const{tableWrapper:R}=r.refs;return!!(R&&R.classList.contains(F))},T=function(){if(!r.refs.scrollBarRef)return;if(!t.scrollX.value){const le=\"is-scrolling-none\";k(le)||E(le);return}const F=r.refs.scrollBarRef.wrapRef;if(!F)return;const{scrollLeft:R,offsetWidth:B,scrollWidth:N}=F,{headerWrapper:U,footerWrapper:J}=r.refs;U&&(U.scrollLeft=R),J&&(J.scrollLeft=R);const re=N-B-1;R>=re?E(\"is-scrolling-right\"):E(R===0?\"is-scrolling-left\":\"is-scrolling-middle\")},x=()=>{r.refs.scrollBarRef&&(r.refs.scrollBarRef.wrapRef&&It(r.refs.scrollBarRef.wrapRef,\"scroll\",T,{passive:!0}),e.fit?jt(r.vnode.el,M):It(window,\"resize\",M),jt(r.refs.bodyWrapper,()=>{var F,R;M(),(R=(F=r.refs)==null?void 0:F.scrollBarRef)==null||R.update()}))},M=()=>{var F,R,B,N;const U=r.vnode.el;if(!r.$ready||!U)return;let J=!1;const{width:re,height:le,headerHeight:pe}=l.value,K=d.value=U.offsetWidth;re!==K&&(J=!0);const z=U.offsetHeight;(e.height||_.value)&&le!==z&&(J=!0);const te=e.tableLayout===\"fixed\"?r.refs.headerWrapper:(F=r.refs.tableHeaderRef)==null?void 0:F.$el;e.showHeader&&(te==null?void 0:te.offsetHeight)!==pe&&(J=!0),h.value=((R=r.refs.tableWrapper)==null?void 0:R.scrollHeight)||0,b.value=(te==null?void 0:te.scrollHeight)||0,p.value=((B=r.refs.footerWrapper)==null?void 0:B.offsetHeight)||0,g.value=((N=r.refs.appendWrapper)==null?void 0:N.offsetHeight)||0,v.value=h.value-b.value-p.value-g.value,J&&(l.value={width:K,height:z,headerHeight:e.showHeader&&(te==null?void 0:te.offsetHeight)||0},S())},A=sn(),P=O(()=>{const{bodyWidth:F,scrollY:R,gutterWidth:B}=t;return F.value?`${F.value-(R.value?B:0)}px`:\"\"}),G=O(()=>e.maxHeight?\"fixed\":e.tableLayout),V=O(()=>{if(e.data&&e.data.length)return null;let F=\"100%\";e.height&&v.value&&(F=`${v.value}px`);const R=d.value;return{width:R?`${R}px`:\"\",height:F}}),I=O(()=>e.height?{height:\"100%\"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${b.value+p.value}px)`}:{maxHeight:`${e.maxHeight-b.value-p.value}px`}:{});return{isHidden:s,renderExpanded:o,setDragVisible:i,isGroup:u,handleMouseLeave:m,handleHeaderFooterMousewheel:y,tableSize:A,emptyBlockStyle:V,handleFixedMousewheel:(F,R)=>{const B=r.refs.bodyWrapper;if(Math.abs(R.spinY)>0){const N=B.scrollTop;R.pixelY<0&&N!==0&&F.preventDefault(),R.pixelY>0&&B.scrollHeight-B.clientHeight>N&&F.preventDefault(),B.scrollTop+=Math.ceil(R.pixelY/5)}else B.scrollLeft+=Math.ceil(R.pixelX/5)},resizeProxyVisible:a,bodyWidth:P,resizeState:l,doLayout:S,tableBodyStyles:w,tableLayout:G,scrollbarViewStyle:f,scrollbarStyle:I}}function fY(e){const t=W(),n=()=>{const s=e.vnode.el.querySelector(\".hidden-columns\"),o={childList:!0,subtree:!0},a=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{a.forEach(i=>i())}),t.value.observe(s,o)};it(()=>{n()}),xs(()=>{var r;(r=t.value)==null||r.disconnect()})}var hY={data:{type:Array,default:()=>[]},size:on,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:\"hasChildren\",children:\"children\",checkStrictly:!1})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:\"\"},tableLayout:{type:String,default:\"fixed\"},scrollbarAlwaysOn:Boolean,flexible:Boolean,showOverflowTooltip:[Boolean,Object],appendFilterPanelTo:String,scrollbarTabindex:{type:[Number,String],default:void 0}};function Ek(e){const t=e.tableLayout===\"auto\";let n=e.columns||[];t&&n.every(s=>s.width===void 0)&&(n=[]);const r=s=>{const o={key:`${e.tableLayout}_${s.id}`,style:{},name:void 0};return t?o.style={width:`${s.width}px`}:o.name=s.id,o};return Ye(\"colgroup\",{},n.map(s=>Ye(\"col\",r(s))))}Ek.props=[\"columns\",\"tableLayout\"];const pY=()=>{const e=W(),t=(o,a)=>{const i=e.value;i&&i.scrollTo(o,a)},n=(o,a)=>{const i=e.value;i&&Ge(a)&&[\"Top\",\"Left\"].includes(o)&&i[`setScroll${o}`](a)};return{scrollBarRef:e,scrollTo:t,setScrollTop:o=>n(\"Top\",o),setScrollLeft:o=>n(\"Left\",o)}};var Hb=!1,Mo,ap,lp,nu,ru,Tk,su,cp,up,dp,Rk,fp,hp,xk,Ok;function Jn(){if(!Hb){Hb=!0;var e=navigator.userAgent,t=/(?:MSIE.(\\d+\\.\\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\\d+\\.\\d+))|(?:Opera(?:.+Version.|.)(\\d+\\.\\d+))|(?:AppleWebKit.(\\d+(?:\\.\\d+)?))|(?:Trident\\/\\d+\\.\\d+.*rv:(\\d+\\.\\d+))/.exec(e),n=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(fp=/\\b(iPhone|iP[ao]d)/.exec(e),hp=/\\b(iP[ao]d)/.exec(e),dp=/Android/i.exec(e),xk=/FBAN\\/\\w+;/i.exec(e),Ok=/Mobile/i.exec(e),Rk=!!/Win64/.exec(e),t){Mo=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,Mo&&document&&document.documentMode&&(Mo=document.documentMode);var r=/(?:Trident\\/(\\d+.\\d+))/.exec(e);Tk=r?parseFloat(r[1])+4:Mo,ap=t[2]?parseFloat(t[2]):NaN,lp=t[3]?parseFloat(t[3]):NaN,nu=t[4]?parseFloat(t[4]):NaN,nu?(t=/(?:Chrome\\/(\\d+\\.\\d+))/.exec(e),ru=t&&t[1]?parseFloat(t[1]):NaN):ru=NaN}else Mo=ap=lp=ru=nu=NaN;if(n){if(n[1]){var s=/(?:Mac OS X (\\d+(?:[._]\\d+)?))/.exec(e);su=s?parseFloat(s[1].replace(\"_\",\".\")):!0}else su=!1;cp=!!n[2],up=!!n[3]}else su=cp=up=!1}}var pp={ie:function(){return Jn()||Mo},ieCompatibilityMode:function(){return Jn()||Tk>Mo},ie64:function(){return pp.ie()&&Rk},firefox:function(){return Jn()||ap},opera:function(){return Jn()||lp},webkit:function(){return Jn()||nu},safari:function(){return pp.webkit()},chrome:function(){return Jn()||ru},windows:function(){return Jn()||cp},osx:function(){return Jn()||su},linux:function(){return Jn()||up},iphone:function(){return Jn()||fp},mobile:function(){return Jn()||fp||hp||dp||Ok},nativeApp:function(){return Jn()||xk},android:function(){return Jn()||dp},ipad:function(){return Jn()||hp}},vY=pp,Tc=!!(typeof window<\"u\"&&window.document&&window.document.createElement),mY={canUseDOM:Tc,canUseWorkers:typeof Worker<\"u\",canUseEventListeners:Tc&&!!(window.addEventListener||window.attachEvent),canUseViewport:Tc&&!!window.screen,isInWorker:!Tc},Mk=mY,Ak;Mk.canUseDOM&&(Ak=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature(\"\",\"\")!==!0);function gY(e,t){if(!Mk.canUseDOM||t&&!(\"addEventListener\"in document))return!1;var n=\"on\"+e,r=n in document;if(!r){var s=document.createElement(\"div\");s.setAttribute(n,\"return;\"),r=typeof s[n]==\"function\"}return!r&&Ak&&e===\"wheel\"&&(r=document.implementation.hasFeature(\"Events.wheel\",\"3.0\")),r}var _Y=gY,Vb=10,zb=40,Wb=800;function $k(e){var t=0,n=0,r=0,s=0;return\"detail\"in e&&(n=e.detail),\"wheelDelta\"in e&&(n=-e.wheelDelta/120),\"wheelDeltaY\"in e&&(n=-e.wheelDeltaY/120),\"wheelDeltaX\"in e&&(t=-e.wheelDeltaX/120),\"axis\"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=n,n=0),r=t*Vb,s=n*Vb,\"deltaY\"in e&&(s=e.deltaY),\"deltaX\"in e&&(r=e.deltaX),(r||s)&&e.deltaMode&&(e.deltaMode==1?(r*=zb,s*=zb):(r*=Wb,s*=Wb)),r&&!t&&(t=r<1?-1:1),s&&!n&&(n=s<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:s}}$k.getEventType=function(){return vY.firefox()?\"DOMMouseScroll\":_Y(\"wheel\")?\"wheel\":\"mousewheel\"};var bY=$k;/**\n* Checks if an event is supported in the current execution environment.\n*\n* NOTE: This will not work correctly for non-generic events such as `change`,\n* `reset`, `load`, `error`, and `select`.\n*\n* Borrows from Modernizr.\n*\n* @param {string} eventNameSuffix Event name, e.g. \"click\".\n* @param {?boolean} capture Check if the capture phase is supported.\n* @return {boolean} True if the event is supported.\n* @internal\n* @license Modernizr 3.0.0pre (Custom Build) | MIT\n*/const yY=function(e,t){if(e&&e.addEventListener){const n=function(r){const s=bY(r);t&&Reflect.apply(t,this,[r,s])};e.addEventListener(\"wheel\",n,{passive:!0})}},wY={beforeMount(e,t){yY(e,t.value)}};let SY=1;const CY=ee({name:\"ElTable\",directives:{Mousewheel:wY},components:{TableHeader:Zq,TableBody:iY,TableFooter:cY,ElScrollbar:ls,hColgroup:Ek},props:hY,emits:[\"select\",\"select-all\",\"selection-change\",\"cell-mouse-enter\",\"cell-mouse-leave\",\"cell-contextmenu\",\"cell-click\",\"cell-dblclick\",\"row-click\",\"row-contextmenu\",\"row-dblclick\",\"header-click\",\"header-contextmenu\",\"sort-change\",\"filter-change\",\"current-change\",\"header-dragend\",\"expand-change\",\"scroll\"],setup(e){const{t}=yt(),n=we(\"table\"),r=ct();pt(cs,r);const s=zq(r,e);r.store=s;const o=new Kq({store:r.store,table:r,fit:e.fit,showHeader:e.showHeader});r.layout=o;const a=O(()=>(s.states.data.value||[]).length===0),{setCurrentRow:i,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:d,toggleAllSelection:h,toggleRowExpansion:v,clearSort:b,sort:p,updateKeyChildren:g}=uY(s),{isHidden:m,renderExpanded:y,setDragVisible:_,isGroup:w,handleMouseLeave:S,handleHeaderFooterMousewheel:C,tableSize:E,emptyBlockStyle:k,handleFixedMousewheel:T,resizeProxyVisible:x,bodyWidth:M,resizeState:A,doLayout:P,tableBodyStyles:G,tableLayout:V,scrollbarViewStyle:I,scrollbarStyle:j}=dY(e,o,s,r),{scrollBarRef:F,scrollTo:R,setScrollLeft:B,setScrollTop:N}=pY(),U=nr(P,50),J=`${n.namespace.value}-table_${SY++}`;r.tableId=J,r.state={isGroup:w,resizeState:A,doLayout:P,debouncedUpdateLayout:U};const re=O(()=>{var K;return(K=e.sumText)!=null?K:t(\"el.table.sumText\")}),le=O(()=>{var K;return(K=e.emptyText)!=null?K:t(\"el.table.emptyText\")}),pe=O(()=>kk(s.states.originColumns.value)[0]);return fY(r),Pt(()=>{U.cancel()}),{ns:n,layout:o,store:s,columns:pe,handleHeaderFooterMousewheel:C,handleMouseLeave:S,tableId:J,tableSize:E,isHidden:m,isEmpty:a,renderExpanded:y,resizeProxyVisible:x,resizeState:A,isGroup:w,bodyWidth:M,tableBodyStyles:G,emptyBlockStyle:k,debouncedUpdateLayout:U,handleFixedMousewheel:T,setCurrentRow:i,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:d,toggleAllSelection:h,toggleRowExpansion:v,clearSort:b,doLayout:P,sort:p,updateKeyChildren:g,t,setDragVisible:_,context:r,computedSumText:re,computedEmptyText:le,tableLayout:V,scrollbarViewStyle:I,scrollbarStyle:j,scrollBarRef:F,scrollTo:R,setScrollLeft:B,setScrollTop:N}}});function kY(e,t,n,r,s,o){const a=ut(\"hColgroup\"),i=ut(\"table-header\"),l=ut(\"table-body\"),u=ut(\"table-footer\"),f=ut(\"el-scrollbar\"),d=ed(\"mousewheel\");return $(),X(\"div\",{ref:\"tableWrapper\",class:D([{[e.ns.m(\"fit\")]:e.fit,[e.ns.m(\"striped\")]:e.stripe,[e.ns.m(\"border\")]:e.border||e.isGroup,[e.ns.m(\"hidden\")]:e.isHidden,[e.ns.m(\"group\")]:e.isGroup,[e.ns.m(\"fluid-height\")]:e.maxHeight,[e.ns.m(\"scrollable-x\")]:e.layout.scrollX.value,[e.ns.m(\"scrollable-y\")]:e.layout.scrollY.value,[e.ns.m(\"enable-row-hover\")]:!e.store.states.isComplex.value,[e.ns.m(\"enable-row-transition\")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,\"has-footer\":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:Ue(e.style),\"data-prefix\":e.ns.namespace.value,onMouseleave:e.handleMouseLeave},[Z(\"div\",{class:D(e.ns.e(\"inner-wrapper\"))},[Z(\"div\",{ref:\"hiddenColumns\",class:\"hidden-columns\"},[ue(e.$slots,\"default\")],512),e.showHeader&&e.tableLayout===\"fixed\"?st(($(),X(\"div\",{key:0,ref:\"headerWrapper\",class:D(e.ns.e(\"header-wrapper\"))},[Z(\"table\",{ref:\"tableHeader\",class:D(e.ns.e(\"header\")),style:Ue(e.tableBodyStyles),border:\"0\",cellpadding:\"0\",cellspacing:\"0\"},[H(a,{columns:e.store.states.columns.value,\"table-layout\":e.tableLayout},null,8,[\"columns\",\"table-layout\"]),H(i,{ref:\"tableHeaderRef\",border:e.border,\"default-sort\":e.defaultSort,store:e.store,\"append-filter-panel-to\":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,[\"border\",\"default-sort\",\"store\",\"append-filter-panel-to\",\"onSetDragVisible\"])],6)],2)),[[d,e.handleHeaderFooterMousewheel]]):de(\"v-if\",!0),Z(\"div\",{ref:\"bodyWrapper\",class:D(e.ns.e(\"body-wrapper\"))},[H(f,{ref:\"scrollBarRef\",\"view-style\":e.scrollbarViewStyle,\"wrap-style\":e.scrollbarStyle,always:e.scrollbarAlwaysOn,tabindex:e.scrollbarTabindex,onScroll:h=>e.$emit(\"scroll\",h)},{default:q(()=>[Z(\"table\",{ref:\"tableBody\",class:D(e.ns.e(\"body\")),cellspacing:\"0\",cellpadding:\"0\",border:\"0\",style:Ue({width:e.bodyWidth,tableLayout:e.tableLayout})},[H(a,{columns:e.store.states.columns.value,\"table-layout\":e.tableLayout},null,8,[\"columns\",\"table-layout\"]),e.showHeader&&e.tableLayout===\"auto\"?($(),ve(i,{key:0,ref:\"tableHeaderRef\",class:D(e.ns.e(\"body-header\")),border:e.border,\"default-sort\":e.defaultSort,store:e.store,\"append-filter-panel-to\":e.appendFilterPanelTo,onSetDragVisible:e.setDragVisible},null,8,[\"class\",\"border\",\"default-sort\",\"store\",\"append-filter-panel-to\",\"onSetDragVisible\"])):de(\"v-if\",!0),H(l,{context:e.context,highlight:e.highlightCurrentRow,\"row-class-name\":e.rowClassName,\"tooltip-effect\":e.tooltipEffect,\"tooltip-options\":e.tooltipOptions,\"row-style\":e.rowStyle,store:e.store,stripe:e.stripe},null,8,[\"context\",\"highlight\",\"row-class-name\",\"tooltip-effect\",\"tooltip-options\",\"row-style\",\"store\",\"stripe\"]),e.showSummary&&e.tableLayout===\"auto\"?($(),ve(u,{key:1,class:D(e.ns.e(\"body-footer\")),border:e.border,\"default-sort\":e.defaultSort,store:e.store,\"sum-text\":e.computedSumText,\"summary-method\":e.summaryMethod},null,8,[\"class\",\"border\",\"default-sort\",\"store\",\"sum-text\",\"summary-method\"])):de(\"v-if\",!0)],6),e.isEmpty?($(),X(\"div\",{key:0,ref:\"emptyBlock\",style:Ue(e.emptyBlockStyle),class:D(e.ns.e(\"empty-block\"))},[Z(\"span\",{class:D(e.ns.e(\"empty-text\"))},[ue(e.$slots,\"empty\",{},()=>[Ve(Ee(e.computedEmptyText),1)])],2)],6)):de(\"v-if\",!0),e.$slots.append?($(),X(\"div\",{key:1,ref:\"appendWrapper\",class:D(e.ns.e(\"append-wrapper\"))},[ue(e.$slots,\"append\")],2)):de(\"v-if\",!0)]),_:3},8,[\"view-style\",\"wrap-style\",\"always\",\"tabindex\",\"onScroll\"])],2),e.showSummary&&e.tableLayout===\"fixed\"?st(($(),X(\"div\",{key:1,ref:\"footerWrapper\",class:D(e.ns.e(\"footer-wrapper\"))},[Z(\"table\",{class:D(e.ns.e(\"footer\")),cellspacing:\"0\",cellpadding:\"0\",border:\"0\",style:Ue(e.tableBodyStyles)},[H(a,{columns:e.store.states.columns.value,\"table-layout\":e.tableLayout},null,8,[\"columns\",\"table-layout\"]),H(u,{border:e.border,\"default-sort\":e.defaultSort,store:e.store,\"sum-text\":e.computedSumText,\"summary-method\":e.summaryMethod},null,8,[\"border\",\"default-sort\",\"store\",\"sum-text\",\"summary-method\"])],6)],2)),[[Et,!e.isEmpty],[d,e.handleHeaderFooterMousewheel]]):de(\"v-if\",!0),e.border||e.isGroup?($(),X(\"div\",{key:2,class:D(e.ns.e(\"border-left-patch\"))},null,2)):de(\"v-if\",!0)],2),st(Z(\"div\",{ref:\"resizeProxy\",class:D(e.ns.e(\"column-resize-proxy\"))},null,2),[[Et,e.resizeProxyVisible]])],46,[\"data-prefix\",\"onMouseleave\"])}var EY=Oe(CY,[[\"render\",kY],[\"__file\",\"table.vue\"]]);const TY={selection:\"table-column--selection\",expand:\"table__expand-column\"},RY={default:{order:\"\"},selection:{width:48,minWidth:48,realWidth:48,order:\"\"},expand:{width:48,minWidth:48,realWidth:48,order:\"\"},index:{width:48,minWidth:48,realWidth:48,order:\"\"}},xY=e=>TY[e]||\"\",OY={selection:{renderHeader({store:e,column:t}){function n(){return e.states.data.value&&e.states.data.value.length===0}return Ye(Sr,{disabled:n(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,\"onUpdate:modelValue\":e.toggleAllSelection,modelValue:e.states.isAllSelected.value,ariaLabel:t.label})},renderCell({row:e,column:t,store:n,$index:r}){return Ye(Sr,{disabled:t.selectable?!t.selectable.call(null,e,r):!1,size:n.states.tableSize.value,onChange:()=>{n.commit(\"rowSelectedChanged\",e)},onClick:s=>s.stopPropagation(),modelValue:n.isSelected(e),ariaLabel:t.label})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||\"#\"},renderCell({column:e,$index:t}){let n=t+1;const r=e.index;return Ge(r)?n=t+r:Ke(r)&&(n=r(t)),Ye(\"div\",{},[n])},sortable:!1},expand:{renderHeader({column:e}){return e.label||\"\"},renderCell({row:e,store:t,expanded:n}){const{ns:r}=t,s=[r.e(\"expand-icon\")];return n&&s.push(r.em(\"expand-icon\",\"expanded\")),Ye(\"div\",{class:s,onClick:function(a){a.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[Ye(He,null,{default:()=>[Ye(qn)]})]})},sortable:!1,resizable:!1}};function MY({row:e,column:t,$index:n}){var r;const s=t.property,o=s&&Fc(e,s).value;return t&&t.formatter?t.formatter(e,t,o,n):((r=o==null?void 0:o.toString)==null?void 0:r.call(o))||\"\"}function AY({row:e,treeNode:t,store:n},r=!1){const{ns:s}=n;if(!t)return r?[Ye(\"span\",{class:s.e(\"placeholder\")})]:null;const o=[],a=function(i){i.stopPropagation(),!t.loading&&n.loadOrToggle(e)};if(t.indent&&o.push(Ye(\"span\",{class:s.e(\"indent\"),style:{\"padding-left\":`${t.indent}px`}})),Vt(t.expanded)&&!t.noLazyChildren){const i=[s.e(\"expand-icon\"),t.expanded?s.em(\"expand-icon\",\"expanded\"):\"\"];let l=qn;t.loading&&(l=ts),o.push(Ye(\"div\",{class:i,onClick:a},{default:()=>[Ye(He,{class:{[s.is(\"loading\")]:t.loading}},{default:()=>[Ye(l)]})]}))}else o.push(Ye(\"span\",{class:s.e(\"placeholder\")}));return o}function Kb(e,t){return e.reduce((n,r)=>(n[r]=r,n),t)}function $Y(e,t){const n=ct();return{registerComplexWatchers:()=>{const o=[\"fixed\"],a={realWidth:\"width\",realMinWidth:\"minWidth\"},i=Kb(o,a);Object.keys(i).forEach(l=>{const u=a[l];kt(t,u)&&ye(()=>t[u],f=>{let d=f;u===\"width\"&&l===\"realWidth\"&&(d=Tm(f)),u===\"minWidth\"&&l===\"realMinWidth\"&&(d=gk(f)),n.columnConfig.value[u]=d,n.columnConfig.value[l]=d;const h=u===\"fixed\";e.value.store.scheduleLayout(h)})})},registerNormalWatchers:()=>{const o=[\"label\",\"filters\",\"filterMultiple\",\"filteredValue\",\"sortable\",\"index\",\"formatter\",\"className\",\"labelClassName\",\"filterClassName\",\"showOverflowTooltip\"],a={property:\"prop\",align:\"realAlign\",headerAlign:\"realHeaderAlign\"},i=Kb(o,a);Object.keys(i).forEach(l=>{const u=a[l];kt(t,u)&&ye(()=>t[u],f=>{n.columnConfig.value[l]=f})})}}}function LY(e,t,n){const r=ct(),s=W(\"\"),o=W(!1),a=W(),i=W(),l=we(\"table\");En(()=>{a.value=e.align?`is-${e.align}`:null,a.value}),En(()=>{i.value=e.headerAlign?`is-${e.headerAlign}`:a.value,i.value});const u=O(()=>{let w=r.vnode.vParent||r.parent;for(;w&&!w.tableId&&!w.columnId;)w=w.vnode.vParent||w.parent;return w}),f=O(()=>{const{store:w}=r.parent;if(!w)return!1;const{treeData:S}=w.states,C=S.value;return C&&Object.keys(C).length>0}),d=W(Tm(e.width)),h=W(gk(e.minWidth)),v=w=>(d.value&&(w.width=d.value),h.value&&(w.minWidth=h.value),!d.value&&h.value&&(w.width=void 0),w.minWidth||(w.minWidth=80),w.realWidth=Number(w.width===void 0?w.minWidth:w.width),w),b=w=>{const S=w.type,C=OY[S]||{};Object.keys(C).forEach(k=>{const T=C[k];k!==\"className\"&&T!==void 0&&(w[k]=T)});const E=xY(S);if(E){const k=`${c(l.namespace)}-${E}`;w.className=w.className?`${w.className} ${k}`:k}return w},p=w=>{ke(w)?w.forEach(C=>S(C)):S(w);function S(C){var E;((E=C==null?void 0:C.type)==null?void 0:E.name)===\"ElTableColumn\"&&(C.vParent=r)}};return{columnId:s,realAlign:a,isSubColumn:o,realHeaderAlign:i,columnOrTableParent:u,setColumnWidth:v,setColumnForcedProps:b,setColumnRenders:w=>{e.renderHeader||w.type!==\"selection\"&&(w.renderHeader=C=>(r.columnConfig.value.label,ue(t,\"header\",C,()=>[w.label]))),t[\"filter-icon\"]&&(w.renderFilterIcon=C=>ue(t,\"filter-icon\",C));let S=w.renderCell;return w.type===\"expand\"?(w.renderCell=C=>Ye(\"div\",{class:\"cell\"},[S(C)]),n.value.renderExpanded=C=>t.default?t.default(C):t.default):(S=S||MY,w.renderCell=C=>{let E=null;if(t.default){const P=t.default(C);E=P.some(G=>G.type!==vn)?P:S(C)}else E=S(C);const{columns:k}=n.value.store.states,T=k.value.findIndex(P=>P.type===\"default\"),x=f.value&&C.cellIndex===T,M=AY(C,x),A={class:\"cell\",style:{}};return w.showOverflowTooltip&&(A.class=`${A.class} ${c(l.namespace)}-tooltip`,A.style={width:`${(C.column.realWidth||Number(C.column.width))-1}px`}),p(E),Ye(\"div\",A,[M,E])}),w},getPropsData:(...w)=>w.reduce((S,C)=>(ke(C)&&C.forEach(E=>{S[E]=e[E]}),S),{}),getColumnElIndex:(w,S)=>Array.prototype.indexOf.call(w,S),updateColumnOrder:()=>{n.value.store.commit(\"updateColumnOrder\",r.columnConfig.value)}}}var IY={type:{type:String,default:\"default\"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:\"\"},minWidth:{type:[String,Number],default:\"\"},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>[\"ascending\",\"descending\",null],validator:e=>e.every(t=>[\"ascending\",\"descending\",null].includes(t))}};let PY=1;var Lk=ee({name:\"ElTableColumn\",components:{ElCheckbox:Sr},props:IY,setup(e,{slots:t}){const n=ct(),r=W({}),s=O(()=>{let _=n.parent;for(;_&&!_.tableId;)_=_.parent;return _}),{registerNormalWatchers:o,registerComplexWatchers:a}=$Y(s,e),{columnId:i,isSubColumn:l,realHeaderAlign:u,columnOrTableParent:f,setColumnWidth:d,setColumnForcedProps:h,setColumnRenders:v,getPropsData:b,getColumnElIndex:p,realAlign:g,updateColumnOrder:m}=LY(e,t,s),y=f.value;i.value=`${y.tableId||y.columnId}_column_${PY++}`,Dl(()=>{l.value=s.value!==y;const _=e.type||\"default\",w=e.sortable===\"\"?!0:e.sortable,S=Lt(e.showOverflowTooltip)?y.props.showOverflowTooltip:e.showOverflowTooltip,C={...RY[_],id:i.value,type:_,property:e.prop||e.property,align:g,headerAlign:u,showOverflowTooltip:S,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:\"\",filterClassName:\"\",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:w,index:e.index,rawColumnKey:n.vnode.key};let M=b([\"columnKey\",\"label\",\"className\",\"labelClassName\",\"type\",\"renderHeader\",\"formatter\",\"fixed\",\"resizable\"],[\"sortMethod\",\"sortBy\",\"sortOrders\"],[\"selectable\",\"reserveSelection\"],[\"filterMethod\",\"filters\",\"filterMultiple\",\"filterOpened\",\"filteredValue\",\"filterPlacement\",\"filterClassName\"]);M=Aq(C,M),M=Lq(v,d,h)(M),r.value=M,o(),a()}),it(()=>{var _;const w=f.value,S=l.value?w.vnode.el.children:(_=w.refs.hiddenColumns)==null?void 0:_.children,C=()=>p(S||[],n.vnode.el);r.value.getColumnIndex=C,C()>-1&&s.value.store.commit(\"insertColumn\",r.value,l.value?w.columnConfig.value:null,m)}),Pt(()=>{const _=r.value.getColumnIndex;(_?_():-1)>-1&&s.value.store.commit(\"removeColumn\",r.value,l.value?y.columnConfig.value:null,m)}),n.columnId=i.value,n.columnConfig=r},render(){var e,t,n;try{const r=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),s=[];if(ke(r))for(const a of r)((n=a.type)==null?void 0:n.name)===\"ElTableColumn\"||a.shapeFlag&2?s.push(a):a.type===We&&ke(a.children)&&a.children.forEach(i=>{(i==null?void 0:i.patchFlag)!==1024&&!ze(i==null?void 0:i.children)&&s.push(i)});return Ye(\"div\",s)}catch{return Ye(\"div\",[])}}});const Ik=Qe(EY,{TableColumn:Lk}),Pk=Gt(Lk);var Tl=(e=>(e.ASC=\"asc\",e.DESC=\"desc\",e))(Tl||{}),Rl=(e=>(e.CENTER=\"center\",e.RIGHT=\"right\",e))(Rl||{}),Dk=(e=>(e.LEFT=\"left\",e.RIGHT=\"right\",e))(Dk||{});const vp={asc:\"desc\",desc:\"asc\"},xl=Symbol(\"placeholder\"),DY=(e,t,n)=>{var r;const s={flexGrow:0,flexShrink:0,...n?{}:{flexGrow:e.flexGrow||0,flexShrink:e.flexShrink||1}};n||(s.flexShrink=1);const o={...(r=e.style)!=null?r:{},...s,flexBasis:\"auto\",width:e.width};return t||(e.maxWidth&&(o.maxWidth=e.maxWidth),e.minWidth&&(o.minWidth=e.minWidth)),o};function BY(e,t,n){const r=O(()=>c(t).map((g,m)=>{var y,_;return{...g,key:(_=(y=g.key)!=null?y:g.dataKey)!=null?_:m}})),s=O(()=>c(r).filter(g=>!g.hidden)),o=O(()=>c(s).filter(g=>g.fixed===\"left\"||g.fixed===!0)),a=O(()=>c(s).filter(g=>g.fixed===\"right\")),i=O(()=>c(s).filter(g=>!g.fixed)),l=O(()=>{const g=[];return c(o).forEach(m=>{g.push({...m,placeholderSign:xl})}),c(i).forEach(m=>{g.push(m)}),c(a).forEach(m=>{g.push({...m,placeholderSign:xl})}),g}),u=O(()=>c(o).length||c(a).length),f=O(()=>c(r).reduce((g,m)=>(g[m.key]=DY(m,c(n),e.fixed),g),{})),d=O(()=>c(s).reduce((g,m)=>g+m.width,0)),h=g=>c(r).find(m=>m.key===g),v=g=>c(f)[g],b=(g,m)=>{g.width=m};function p(g){var m;const{key:y}=g.currentTarget.dataset;if(!y)return;const{sortState:_,sortBy:w}=e;let S=Tl.ASC;lt(_)?S=vp[_[y]]:S=vp[w.order],(m=e.onColumnSort)==null||m.call(e,{column:h(y),key:y,order:S})}return{columns:r,columnsStyles:f,columnsTotalWidth:d,fixedColumnsOnLeft:o,fixedColumnsOnRight:a,hasFixedColumns:u,mainColumns:l,normalColumns:i,visibleColumns:s,getColumn:h,getColumnStyle:v,updateColumnWidth:b,onColumnSorted:p}}const NY=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:s})=>{const o=W({scrollLeft:0,scrollTop:0});function a(v){var b,p,g;const{scrollTop:m}=v;(b=t.value)==null||b.scrollTo(v),(p=n.value)==null||p.scrollToTop(m),(g=r.value)==null||g.scrollToTop(m)}function i(v){o.value=v,a(v)}function l(v){o.value.scrollTop=v,a(c(o))}function u(v){var b,p;o.value.scrollLeft=v,(p=(b=t.value)==null?void 0:b.scrollTo)==null||p.call(b,c(o))}function f(v){var b;i(v),(b=e.onScroll)==null||b.call(e,v)}function d({scrollTop:v}){const{scrollTop:b}=c(o);v!==b&&l(v)}function h(v,b=\"auto\"){var p;(p=t.value)==null||p.scrollToRow(v,b)}return ye(()=>c(o).scrollTop,(v,b)=>{v>b&&s()}),{scrollPos:o,scrollTo:i,scrollToLeft:u,scrollToTop:l,scrollToRow:h,onScroll:f,onVerticalScroll:d}},FY=(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:s,ns:o,isScrolling:a})=>{const i=ct(),{emit:l}=i,u=Wt(!1),f=W(e.defaultExpandedRowKeys||[]),d=W(-1),h=Wt(null),v=W({}),b=W({}),p=Wt({}),g=Wt({}),m=Wt({}),y=O(()=>Ge(e.estimatedRowHeight));function _(x){var M;(M=e.onRowsRendered)==null||M.call(e,x),x.rowCacheEnd>c(d)&&(d.value=x.rowCacheEnd)}function w({hovered:x,rowKey:M}){if(a.value)return;s.vnode.el.querySelectorAll(`[rowkey=\"${String(M)}\"]`).forEach(G=>{x?G.classList.add(o.is(\"hovered\")):G.classList.remove(o.is(\"hovered\"))})}function S({expanded:x,rowData:M,rowIndex:A,rowKey:P}){var G,V;const I=[...c(f)],j=I.indexOf(P);x?j===-1&&I.push(P):j>-1&&I.splice(j,1),f.value=I,l(\"update:expandedRowKeys\",I),(G=e.onRowExpand)==null||G.call(e,{expanded:x,rowData:M,rowIndex:A,rowKey:P}),(V=e.onExpandedRowsChange)==null||V.call(e,I)}const C=nr(()=>{var x,M,A,P;u.value=!0,v.value={...c(v),...c(b)},E(c(h),!1),b.value={},h.value=null,(x=t.value)==null||x.forceUpdate(),(M=n.value)==null||M.forceUpdate(),(A=r.value)==null||A.forceUpdate(),(P=i.proxy)==null||P.$forceUpdate(),u.value=!1},0);function E(x,M=!1){c(y)&&[t,n,r].forEach(A=>{const P=c(A);P&&P.resetAfterRowIndex(x,M)})}function k(x,M,A){const P=c(h);(P===null||P>A)&&(h.value=A),b.value[x]=M}function T({rowKey:x,height:M,rowIndex:A},P){P?P===Dk.RIGHT?m.value[x]=M:p.value[x]=M:g.value[x]=M;const G=Math.max(...[p,m,g].map(V=>V.value[x]||0));c(v)[x]!==G&&(k(x,G,A),C())}return{expandedRowKeys:f,lastRenderedRowIndex:d,isDynamic:y,isResetting:u,rowHeights:v,resetAfterIndex:E,onRowExpanded:S,onRowHovered:w,onRowsRendered:_,onRowHeightChange:T}},HY=(e,{expandedRowKeys:t,lastRenderedRowIndex:n,resetAfterIndex:r})=>{const s=W({}),o=O(()=>{const i={},{data:l,rowKey:u}=e,f=c(t);if(!f||!f.length)return l;const d=[],h=new Set;f.forEach(b=>h.add(b));let v=l.slice();for(v.forEach(b=>i[b[u]]=0);v.length>0;){const b=v.shift();d.push(b),h.has(b[u])&&ke(b.children)&&b.children.length>0&&(v=[...b.children,...v],b.children.forEach(p=>i[p[u]]=i[b[u]]+1))}return s.value=i,d}),a=O(()=>{const{data:i,expandColumnKey:l}=e;return l?c(o):i});return ye(a,(i,l)=>{i!==l&&(n.value=-1,r(0,!0))}),{data:a,depthMap:s}},VY=(e,t)=>e+t,ou=e=>ke(e)?e.reduce(VY,0):e,Qo=(e,t,n={})=>Ke(e)?e(t):e??n,Xs=e=>([\"width\",\"maxWidth\",\"minWidth\",\"height\"].forEach(t=>{e[t]=en(e[t])}),e),Bk=e=>Ut(e)?t=>Ye(e,t):e,zY=(e,{columnsTotalWidth:t,rowsHeight:n,fixedColumnsOnLeft:r,fixedColumnsOnRight:s})=>{const o=O(()=>{const{fixed:y,width:_,vScrollbarSize:w}=e,S=_-w;return y?Math.max(Math.round(c(t)),S):S}),a=O(()=>c(o)+e.vScrollbarSize),i=O(()=>{const{height:y=0,maxHeight:_=0,footerHeight:w,hScrollbarSize:S}=e;if(_>0){const C=c(v),E=c(n),T=c(h)+C+E+S;return Math.min(T,_-w)}return y-w}),l=O(()=>{const{maxHeight:y}=e,_=c(i);if(Ge(y)&&y>0)return _;const w=c(n)+c(h)+c(v);return Math.min(_,w)}),u=y=>y.width,f=O(()=>ou(c(r).map(u))),d=O(()=>ou(c(s).map(u))),h=O(()=>ou(e.headerHeight)),v=O(()=>{var y;return(((y=e.fixedData)==null?void 0:y.length)||0)*e.rowHeight}),b=O(()=>c(i)-c(h)-c(v)),p=O(()=>{const{style:y={},height:_,width:w}=e;return Xs({...y,height:_,width:w})}),g=O(()=>Xs({height:e.footerHeight})),m=O(()=>({top:en(c(h)),bottom:en(e.footerHeight),width:en(e.width)}));return{bodyWidth:o,fixedTableHeight:l,mainTableHeight:i,leftTableWidth:f,rightTableWidth:d,headerWidth:a,windowHeight:b,footerHeight:g,emptyStyle:m,rootStyle:p,headerHeight:h}};function WY(e){const t=W(),n=W(),r=W(),{columns:s,columnsStyles:o,columnsTotalWidth:a,fixedColumnsOnLeft:i,fixedColumnsOnRight:l,hasFixedColumns:u,mainColumns:f,onColumnSorted:d}=BY(e,At(e,\"columns\"),At(e,\"fixed\")),{scrollTo:h,scrollToLeft:v,scrollToTop:b,scrollToRow:p,onScroll:g,onVerticalScroll:m,scrollPos:y}=NY(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,onMaybeEndReached:L}),_=we(\"table-v2\"),w=ct(),S=Wt(!1),{expandedRowKeys:C,lastRenderedRowIndex:E,isDynamic:k,isResetting:T,rowHeights:x,resetAfterIndex:M,onRowExpanded:A,onRowHeightChange:P,onRowHovered:G,onRowsRendered:V}=FY(e,{mainTableRef:t,leftTableRef:n,rightTableRef:r,tableInstance:w,ns:_,isScrolling:S}),{data:I,depthMap:j}=HY(e,{expandedRowKeys:C,lastRenderedRowIndex:E,resetAfterIndex:M}),F=O(()=>{const{estimatedRowHeight:Q,rowHeight:se}=e,ge=c(I);return Ge(Q)?Object.values(c(x)).reduce((ae,_e)=>ae+_e,0):ge.length*se}),{bodyWidth:R,fixedTableHeight:B,mainTableHeight:N,leftTableWidth:U,rightTableWidth:J,headerWidth:re,windowHeight:le,footerHeight:pe,emptyStyle:K,rootStyle:z,headerHeight:te}=zY(e,{columnsTotalWidth:a,fixedColumnsOnLeft:i,fixedColumnsOnRight:l,rowsHeight:F}),oe=W(),he=O(()=>{const Q=c(I).length===0;return ke(e.fixedData)?e.fixedData.length===0&&Q:Q});function Y(Q){const{estimatedRowHeight:se,rowHeight:ge,rowKey:ae}=e;return se?c(x)[c(I)[Q][ae]]||se:ge}function L(){const{onEndReached:Q}=e;if(!Q)return;const{scrollTop:se}=c(y),ge=c(F),ae=c(le),_e=ge-(se+ae)+e.hScrollbarSize;c(E)>=0&&ge===se+c(N)-c(te)&&Q(_e)}return ye(()=>e.expandedRowKeys,Q=>C.value=Q,{deep:!0}),{columns:s,containerRef:oe,mainTableRef:t,leftTableRef:n,rightTableRef:r,isDynamic:k,isResetting:T,isScrolling:S,hasFixedColumns:u,columnsStyles:o,columnsTotalWidth:a,data:I,expandedRowKeys:C,depthMap:j,fixedColumnsOnLeft:i,fixedColumnsOnRight:l,mainColumns:f,bodyWidth:R,emptyStyle:K,rootStyle:z,headerWidth:re,footerHeight:pe,mainTableHeight:N,fixedTableHeight:B,leftTableWidth:U,rightTableWidth:J,showEmpty:he,getRowHeight:Y,onColumnSorted:d,onRowHovered:G,onRowExpanded:A,onRowsRendered:V,onRowHeightChange:P,scrollTo:h,scrollToLeft:v,scrollToTop:b,scrollToRow:p,onScroll:g,onVerticalScroll:m}}const Om=Symbol(\"tableV2\"),Nk=String,Jl={type:ie(Array),required:!0},Mm={type:ie(Array)},Fk={...Mm,required:!0},KY=String,jb={type:ie(Array),default:()=>Yt([])},Ao={type:Number,required:!0},Hk={type:ie([String,Number,Symbol]),default:\"id\"},Ub={type:ie(Object)},Bo=xe({class:String,columns:Jl,columnsStyles:{type:ie(Object),required:!0},depth:Number,expandColumnKey:KY,estimatedRowHeight:{...Ko.estimatedRowHeight,default:void 0},isScrolling:Boolean,onRowExpand:{type:ie(Function)},onRowHover:{type:ie(Function)},onRowHeightChange:{type:ie(Function)},rowData:{type:ie(Object),required:!0},rowEventHandlers:{type:ie(Object)},rowIndex:{type:Number,required:!0},rowKey:Hk,style:{type:ie(Object)}}),Ff={type:Number,required:!0},Am=xe({class:String,columns:Jl,fixedHeaderData:{type:ie(Array)},headerData:{type:ie(Array),required:!0},headerHeight:{type:ie([Number,Array]),default:50},rowWidth:Ff,rowHeight:{type:Number,default:50},height:Ff,width:Ff}),iu=xe({columns:Jl,data:Fk,fixedData:Mm,estimatedRowHeight:Bo.estimatedRowHeight,width:Ao,height:Ao,headerWidth:Ao,headerHeight:Am.headerHeight,bodyWidth:Ao,rowHeight:Ao,cache:sk.cache,useIsScrolling:Boolean,scrollbarAlwaysOn:Ko.scrollbarAlwaysOn,scrollbarStartGap:Ko.scrollbarStartGap,scrollbarEndGap:Ko.scrollbarEndGap,class:Nk,style:Ub,containerStyle:Ub,getRowHeight:{type:ie(Function),required:!0},rowKey:Bo.rowKey,onRowsRendered:{type:ie(Function)},onScroll:{type:ie(Function)}}),jY=xe({cache:iu.cache,estimatedRowHeight:Bo.estimatedRowHeight,rowKey:Hk,headerClass:{type:ie([String,Function])},headerProps:{type:ie([Object,Function])},headerCellProps:{type:ie([Object,Function])},headerHeight:Am.headerHeight,footerHeight:{type:Number,default:0},rowClass:{type:ie([String,Function])},rowProps:{type:ie([Object,Function])},rowHeight:{type:Number,default:50},cellProps:{type:ie([Object,Function])},columns:Jl,data:Fk,dataGetter:{type:ie(Function)},fixedData:Mm,expandColumnKey:Bo.expandColumnKey,expandedRowKeys:jb,defaultExpandedRowKeys:jb,class:Nk,fixed:Boolean,style:{type:ie(Object)},width:Ao,height:Ao,maxHeight:Number,useIsScrolling:Boolean,indentSize:{type:Number,default:12},iconSize:{type:Number,default:12},hScrollbarSize:Ko.hScrollbarSize,vScrollbarSize:Ko.vScrollbarSize,scrollbarAlwaysOn:ak.alwaysOn,sortBy:{type:ie(Object),default:()=>({})},sortState:{type:ie(Object),default:void 0},onColumnSort:{type:ie(Function)},onExpandedRowsChange:{type:ie(Function)},onEndReached:{type:ie(Function)},onRowExpand:Bo.onRowExpand,onScroll:iu.onScroll,onRowsRendered:iu.onRowsRendered,rowEventHandlers:Bo.rowEventHandlers}),UY=\"ElTableV2Header\",qY=ee({name:UY,props:Am,setup(e,{slots:t,expose:n}){const r=we(\"table-v2\"),s=Fe(\"tableV2GridScrollLeft\"),o=W(),a=O(()=>Xs({width:e.width,height:e.height})),i=O(()=>Xs({width:e.rowWidth,height:e.height})),l=O(()=>Pn(c(e.headerHeight))),u=h=>{const v=c(o);je(()=>{v!=null&&v.scroll&&v.scroll({left:h})})},f=()=>{const h=r.e(\"fixed-header-row\"),{columns:v,fixedHeaderData:b,rowHeight:p}=e;return b==null?void 0:b.map((g,m)=>{var y;const _=Xs({height:p,width:\"100%\"});return(y=t.fixed)==null?void 0:y.call(t,{class:h,columns:v,rowData:g,rowIndex:-(m+1),style:_})})},d=()=>{const h=r.e(\"dynamic-header-row\"),{columns:v}=e;return c(l).map((b,p)=>{var g;const m=Xs({width:\"100%\",height:b});return(g=t.dynamic)==null?void 0:g.call(t,{class:h,columns:v,headerIndex:p,style:m})})};return os(()=>{s!=null&&s.value&&u(s.value)}),n({scrollToLeft:u}),()=>{if(!(e.height<=0))return H(\"div\",{ref:o,class:e.class,style:c(a),role:\"rowgroup\"},[H(\"div\",{style:c(i),class:r.e(\"header\")},[d(),f()])])}}});var YY=qY;const GY=({atXEndEdge:e,atXStartEdge:t,atYEndEdge:n,atYStartEdge:r},s)=>{let o=null,a=0,i=0;const l=(f,d)=>{const h=f<=0&&t.value||f>=0&&e.value,v=d<=0&&r.value||d>=0&&n.value;return h&&v};return{hasReachedEdge:l,onWheel:f=>{Zo(o);let d=f.deltaX,h=f.deltaY;Math.abs(d)>Math.abs(h)?h=0:d=0,f.shiftKey&&h!==0&&(d=h,h=0),!(l(a,i)&&l(a+d,i+h))&&(a+=d,i+=h,f.preventDefault(),o=io(()=>{s(a,i),a=0,i=0}))}}},Vk=({name:e,clearCache:t,getColumnPosition:n,getColumnStartIndexForOffset:r,getColumnStopIndexForStartIndex:s,getEstimatedTotalHeight:o,getEstimatedTotalWidth:a,getColumnOffset:i,getRowOffset:l,getRowPosition:u,getRowStartIndexForOffset:f,getRowStopIndexForStartIndex:d,initCache:h,injectToInstance:v,validateProps:b})=>ee({name:e??\"ElVirtualList\",props:Ko,emits:[Lu,Iu],setup(p,{emit:g,expose:m,slots:y}){const _=we(\"vl\");b(p);const w=ct(),S=W(h(p,w));v==null||v(w,S);const C=W(),E=W(),k=W(),T=W(null),x=W({isScrolling:!1,scrollLeft:Ge(p.initScrollLeft)?p.initScrollLeft:0,scrollTop:Ge(p.initScrollTop)?p.initScrollTop:0,updateRequested:!1,xAxisScrollDir:Si,yAxisScrollDir:Si}),M=tk(),A=O(()=>Number.parseInt(`${p.height}`,10)),P=O(()=>Number.parseInt(`${p.width}`,10)),G=O(()=>{const{totalColumn:ae,totalRow:_e,columnCache:me}=p,{isScrolling:Ce,xAxisScrollDir:Te,scrollLeft:Se}=c(x);if(ae===0||_e===0)return[0,0,0,0];const Ie=r(p,Se,c(S)),be=s(p,Ie,Se,c(S)),Ae=!Ce||Te===Pu?Math.max(1,me):1,qe=!Ce||Te===Si?Math.max(1,me):1;return[Math.max(0,Ie-Ae),Math.max(0,Math.min(ae-1,be+qe)),Ie,be]}),V=O(()=>{const{totalColumn:ae,totalRow:_e,rowCache:me}=p,{isScrolling:Ce,yAxisScrollDir:Te,scrollTop:Se}=c(x);if(ae===0||_e===0)return[0,0,0,0];const Ie=f(p,Se,c(S)),be=d(p,Ie,Se,c(S)),Ae=!Ce||Te===Pu?Math.max(1,me):1,qe=!Ce||Te===Si?Math.max(1,me):1;return[Math.max(0,Ie-Ae),Math.max(0,Math.min(_e-1,be+qe)),Ie,be]}),I=O(()=>o(p,c(S))),j=O(()=>a(p,c(S))),F=O(()=>{var ae;return[{position:\"relative\",overflow:\"hidden\",WebkitOverflowScrolling:\"touch\",willChange:\"transform\"},{direction:p.direction,height:Ge(p.height)?`${p.height}px`:p.height,width:Ge(p.width)?`${p.width}px`:p.width},(ae=p.style)!=null?ae:{}]}),R=O(()=>{const ae=`${c(j)}px`;return{height:`${c(I)}px`,pointerEvents:c(x).isScrolling?\"none\":void 0,width:ae}}),B=()=>{const{totalColumn:ae,totalRow:_e}=p;if(ae>0&&_e>0){const[be,Ae,qe,tt]=c(G),[et,at,ht,Ct]=c(V);g(Lu,{columnCacheStart:be,columnCacheEnd:Ae,rowCacheStart:et,rowCacheEnd:at,columnVisibleStart:qe,columnVisibleEnd:tt,rowVisibleStart:ht,rowVisibleEnd:Ct})}const{scrollLeft:me,scrollTop:Ce,updateRequested:Te,xAxisScrollDir:Se,yAxisScrollDir:Ie}=c(x);g(Iu,{xAxisScrollDir:Se,scrollLeft:me,yAxisScrollDir:Ie,scrollTop:Ce,updateRequested:Te})},N=ae=>{const{clientHeight:_e,clientWidth:me,scrollHeight:Ce,scrollLeft:Te,scrollTop:Se,scrollWidth:Ie}=ae.currentTarget,be=c(x);if(be.scrollTop===Se&&be.scrollLeft===Te)return;let Ae=Te;if(Ob(p.direction))switch(Bu()){case kl:Ae=-Te;break;case Em:Ae=Ie-me-Te;break}x.value={...be,isScrolling:!0,scrollLeft:Ae,scrollTop:Math.max(0,Math.min(Se,Ce-_e)),updateRequested:!0,xAxisScrollDir:Po(be.scrollLeft,Ae),yAxisScrollDir:Po(be.scrollTop,Se)},je(()=>z()),te(),B()},U=(ae,_e)=>{const me=c(A),Ce=(I.value-me)/_e*ae;le({scrollTop:Math.min(I.value-me,Ce)})},J=(ae,_e)=>{const me=c(P),Ce=(j.value-me)/_e*ae;le({scrollLeft:Math.min(j.value-me,Ce)})},{onWheel:re}=GY({atXStartEdge:O(()=>x.value.scrollLeft<=0),atXEndEdge:O(()=>x.value.scrollLeft>=j.value-c(P)),atYStartEdge:O(()=>x.value.scrollTop<=0),atYEndEdge:O(()=>x.value.scrollTop>=I.value-c(A))},(ae,_e)=>{var me,Ce,Te,Se;(Ce=(me=E.value)==null?void 0:me.onMouseUp)==null||Ce.call(me),(Se=(Te=k.value)==null?void 0:Te.onMouseUp)==null||Se.call(Te);const Ie=c(P),be=c(A);le({scrollLeft:Math.min(x.value.scrollLeft+ae,j.value-Ie),scrollTop:Math.min(x.value.scrollTop+_e,I.value-be)})});It(C,\"wheel\",re,{passive:!1});const le=({scrollLeft:ae=x.value.scrollLeft,scrollTop:_e=x.value.scrollTop})=>{ae=Math.max(ae,0),_e=Math.max(_e,0);const me=c(x);_e===me.scrollTop&&ae===me.scrollLeft||(x.value={...me,xAxisScrollDir:Po(me.scrollLeft,ae),yAxisScrollDir:Po(me.scrollTop,_e),scrollLeft:ae,scrollTop:_e,updateRequested:!0},je(()=>z()),te(),B())},pe=(ae=0,_e=0,me=vr)=>{const Ce=c(x);_e=Math.max(0,Math.min(_e,p.totalColumn-1)),ae=Math.max(0,Math.min(ae,p.totalRow-1));const Te=FS(_.namespace.value),Se=c(S),Ie=o(p,Se),be=a(p,Se);le({scrollLeft:i(p,_e,me,Ce.scrollLeft,Se,be>p.width?Te:0),scrollTop:l(p,ae,me,Ce.scrollTop,Se,Ie>p.height?Te:0)})},K=(ae,_e)=>{const{columnWidth:me,direction:Ce,rowHeight:Te}=p,Se=M.value(t&&me,t&&Te,t&&Ce),Ie=`${ae},${_e}`;if(kt(Se,Ie))return Se[Ie];{const[,be]=n(p,_e,c(S)),Ae=c(S),qe=Ob(Ce),[tt,et]=u(p,ae,Ae),[at]=n(p,_e,Ae);return Se[Ie]={position:\"absolute\",left:qe?void 0:`${be}px`,right:qe?`${be}px`:void 0,top:`${et}px`,height:`${tt}px`,width:`${at}px`},Se[Ie]}},z=()=>{x.value.isScrolling=!1,je(()=>{M.value(-1,null,null)})};it(()=>{if(!bt)return;const{initScrollLeft:ae,initScrollTop:_e}=p,me=c(C);me&&(Ge(ae)&&(me.scrollLeft=ae),Ge(_e)&&(me.scrollTop=_e)),B()});const te=()=>{const{direction:ae}=p,{scrollLeft:_e,scrollTop:me,updateRequested:Ce}=c(x),Te=c(C);if(Ce&&Te){if(ae===Ai)switch(Bu()){case kl:{Te.scrollLeft=-_e;break}case km:{Te.scrollLeft=_e;break}default:{const{clientWidth:Se,scrollWidth:Ie}=Te;Te.scrollLeft=Ie-Se-_e;break}}else Te.scrollLeft=Math.max(0,_e);Te.scrollTop=Math.max(0,me)}},{resetAfterColumnIndex:oe,resetAfterRowIndex:he,resetAfter:Y}=w.proxy;m({windowRef:C,innerRef:T,getItemStyleCache:M,scrollTo:le,scrollToItem:pe,states:x,resetAfterColumnIndex:oe,resetAfterRowIndex:he,resetAfter:Y});const L=()=>{const{scrollbarAlwaysOn:ae,scrollbarStartGap:_e,scrollbarEndGap:me,totalColumn:Ce,totalRow:Te}=p,Se=c(P),Ie=c(A),be=c(j),Ae=c(I),{scrollLeft:qe,scrollTop:tt}=c(x),et=Ye(sp,{ref:E,alwaysOn:ae,startGap:_e,endGap:me,class:_.e(\"horizontal\"),clientSize:Se,layout:\"horizontal\",onScroll:J,ratio:Se*100/be,scrollFrom:qe/(be-Se),total:Te,visible:!0}),at=Ye(sp,{ref:k,alwaysOn:ae,startGap:_e,endGap:me,class:_.e(\"vertical\"),clientSize:Ie,layout:\"vertical\",onScroll:U,ratio:Ie*100/Ae,scrollFrom:tt/(Ae-Ie),total:Ce,visible:!0});return{horizontalScrollbar:et,verticalScrollbar:at}},Q=()=>{var ae;const[_e,me]=c(G),[Ce,Te]=c(V),{data:Se,totalColumn:Ie,totalRow:be,useIsScrolling:Ae,itemKey:qe}=p,tt=[];if(be>0&&Ie>0)for(let et=Ce;et<=Te;et++)for(let at=_e;at<=me;at++){const ht=qe({columnIndex:at,data:Se,rowIndex:et});tt.push(Ye(We,{key:ht},(ae=y.default)==null?void 0:ae.call(y,{columnIndex:at,data:Se,isScrolling:Ae?c(x).isScrolling:void 0,style:K(et,at),rowIndex:et})))}return tt},se=()=>{const ae=dt(p.innerElement),_e=Q();return[Ye(ae,{style:c(R),ref:T},ze(ae)?_e:{default:()=>_e})]};return()=>{const ae=dt(p.containerElement),{horizontalScrollbar:_e,verticalScrollbar:me}=L(),Ce=se();return Ye(\"div\",{key:0,class:_.e(\"wrapper\"),role:p.role},[Ye(ae,{class:p.className,style:c(F),onScroll:N,ref:C},ze(ae)?Ce:{default:()=>Ce}),_e,me])}}}),{max:Hu,min:zk,floor:Wk}=Math,XY={column:\"columnWidth\",row:\"rowHeight\"},mp={column:\"lastVisitedColumnIndex\",row:\"lastVisitedRowIndex\"},ms=(e,t,n,r)=>{const[s,o,a]=[n[r],e[XY[r]],n[mp[r]]];if(t>a){let i=0;if(a>=0){const l=s[a];i=l.offset+l.size}for(let l=a+1;l<=t;l++){const u=o(l);s[l]={offset:i,size:u},i+=u}n[mp[r]]=t}return s[t]},Kk=(e,t,n,r,s,o)=>{for(;n<=r;){const a=n+Wk((r-n)/2),i=ms(e,a,t,o).offset;if(i===s)return a;i<s?n=a+1:r=a-1}return Hu(0,n-1)},JY=(e,t,n,r,s)=>{const o=s===\"column\"?e.totalColumn:e.totalRow;let a=1;for(;n<o&&ms(e,n,t,s).offset<r;)n+=a,a*=2;return Kk(e,t,Wk(n/2),zk(n,o-1),r,s)},qb=(e,t,n,r)=>{const[s,o]=[t[r],t[mp[r]]];return(o>0?s[o].offset:0)>=n?Kk(e,t,0,o,n,r):JY(e,t,Hu(0,o),n,r)},jk=({totalRow:e},{estimatedRowHeight:t,lastVisitedRowIndex:n,row:r})=>{let s=0;if(n>=e&&(n=e-1),n>=0){const i=r[n];s=i.offset+i.size}const a=(e-n-1)*t;return s+a},Uk=({totalColumn:e},{column:t,estimatedColumnWidth:n,lastVisitedColumnIndex:r})=>{let s=0;if(r>e&&(r=e-1),r>=0){const i=t[r];s=i.offset+i.size}const a=(e-r-1)*n;return s+a},ZY={column:Uk,row:jk},Yb=(e,t,n,r,s,o,a)=>{const[i,l]=[o===\"row\"?e.height:e.width,ZY[o]],u=ms(e,t,s,o),f=l(e,s),d=Hu(0,zk(f-i,u.offset)),h=Hu(0,u.offset-i+a+u.size);switch(n===Dd&&(r>=h-i&&r<=d+i?n=vr:n=Xr),n){case Sl:return d;case Cl:return h;case Xr:return Math.round(h+(d-h)/2);case vr:default:return r>=h&&r<=d?r:h>d||r<h?h:d}},QY=Vk({name:\"ElDynamicSizeGrid\",getColumnPosition:(e,t,n)=>{const r=ms(e,t,n,\"column\");return[r.size,r.offset]},getRowPosition:(e,t,n)=>{const r=ms(e,t,n,\"row\");return[r.size,r.offset]},getColumnOffset:(e,t,n,r,s,o)=>Yb(e,t,n,r,s,\"column\",o),getRowOffset:(e,t,n,r,s,o)=>Yb(e,t,n,r,s,\"row\",o),getColumnStartIndexForOffset:(e,t,n)=>qb(e,n,t,\"column\"),getColumnStopIndexForStartIndex:(e,t,n,r)=>{const s=ms(e,t,r,\"column\"),o=n+e.width;let a=s.offset+s.size,i=t;for(;i<e.totalColumn-1&&a<o;)i++,a+=ms(e,t,r,\"column\").size;return i},getEstimatedTotalHeight:jk,getEstimatedTotalWidth:Uk,getRowStartIndexForOffset:(e,t,n)=>qb(e,n,t,\"row\"),getRowStopIndexForStartIndex:(e,t,n,r)=>{const{totalRow:s,height:o}=e,a=ms(e,t,r,\"row\"),i=n+o;let l=a.size+a.offset,u=t;for(;u<s-1&&l<i;)u++,l+=ms(e,u,r,\"row\").size;return u},injectToInstance:(e,t)=>{const n=({columnIndex:o,rowIndex:a},i)=>{var l,u;i=Lt(i)?!0:i,Ge(o)&&(t.value.lastVisitedColumnIndex=Math.min(t.value.lastVisitedColumnIndex,o-1)),Ge(a)&&(t.value.lastVisitedRowIndex=Math.min(t.value.lastVisitedRowIndex,a-1)),(l=e.exposed)==null||l.getItemStyleCache.value(-1,null,null),i&&((u=e.proxy)==null||u.$forceUpdate())},r=(o,a)=>{n({columnIndex:o},a)},s=(o,a)=>{n({rowIndex:o},a)};Object.assign(e.proxy,{resetAfterColumnIndex:r,resetAfterRowIndex:s,resetAfter:n})},initCache:({estimatedColumnWidth:e=Zh,estimatedRowHeight:t=Zh})=>({column:{},estimatedColumnWidth:e,estimatedRowHeight:t,lastVisitedColumnIndex:-1,lastVisitedRowIndex:-1,row:{}}),clearCache:!1,validateProps:({columnWidth:e,rowHeight:t})=>{}}),eG=Vk({name:\"ElFixedSizeGrid\",getColumnPosition:({columnWidth:e},t)=>[e,t*e],getRowPosition:({rowHeight:e},t)=>[e,t*e],getEstimatedTotalHeight:({totalRow:e,rowHeight:t})=>t*e,getEstimatedTotalWidth:({totalColumn:e,columnWidth:t})=>t*e,getColumnOffset:({totalColumn:e,columnWidth:t,width:n},r,s,o,a,i)=>{n=Number(n);const l=Math.max(0,e*t-n),u=Math.min(l,r*t),f=Math.max(0,r*t-n+i+t);switch(s===\"smart\"&&(o>=f-n&&o<=u+n?s=vr:s=Xr),s){case Sl:return u;case Cl:return f;case Xr:{const d=Math.round(f+(u-f)/2);return d<Math.ceil(n/2)?0:d>l+Math.floor(n/2)?l:d}case vr:default:return o>=f&&o<=u?o:f>u||o<f?f:u}},getRowOffset:({rowHeight:e,height:t,totalRow:n},r,s,o,a,i)=>{t=Number(t);const l=Math.max(0,n*e-t),u=Math.min(l,r*e),f=Math.max(0,r*e-t+i+e);switch(s===Dd&&(o>=f-t&&o<=u+t?s=vr:s=Xr),s){case Sl:return u;case Cl:return f;case Xr:{const d=Math.round(f+(u-f)/2);return d<Math.ceil(t/2)?0:d>l+Math.floor(t/2)?l:d}case vr:default:return o>=f&&o<=u?o:f>u||o<f?f:u}},getColumnStartIndexForOffset:({columnWidth:e,totalColumn:t},n)=>Math.max(0,Math.min(t-1,Math.floor(n/e))),getColumnStopIndexForStartIndex:({columnWidth:e,totalColumn:t,width:n},r,s)=>{const o=r*e,a=Math.ceil((n+s-o)/e);return Math.max(0,Math.min(t-1,r+a-1))},getRowStartIndexForOffset:({rowHeight:e,totalRow:t},n)=>Math.max(0,Math.min(t-1,Math.floor(n/e))),getRowStopIndexForStartIndex:({rowHeight:e,totalRow:t,height:n},r,s)=>{const o=r*e,a=Math.ceil((n+s-o)/e);return Math.max(0,Math.min(t-1,r+a-1))},initCache:()=>{},clearCache:!0,validateProps:({columnWidth:e,rowHeight:t})=>{}}),tG=\"ElTableV2Grid\",nG=e=>{const t=W(),n=W(),r=W(0),s=O(()=>{const{data:g,rowHeight:m,estimatedRowHeight:y}=e;if(!y)return g.length*m}),o=O(()=>{const{fixedData:g,rowHeight:m}=e;return((g==null?void 0:g.length)||0)*m}),a=O(()=>ou(e.headerHeight)),i=O(()=>{const{height:g}=e;return Math.max(0,g-c(a)-c(o))}),l=O(()=>c(a)+c(o)>0),u=({data:g,rowIndex:m})=>g[m][e.rowKey];function f({rowCacheStart:g,rowCacheEnd:m,rowVisibleStart:y,rowVisibleEnd:_}){var w;(w=e.onRowsRendered)==null||w.call(e,{rowCacheStart:g,rowCacheEnd:m,rowVisibleStart:y,rowVisibleEnd:_})}function d(g,m){var y;(y=n.value)==null||y.resetAfterRowIndex(g,m)}function h(g,m){const y=c(t),_=c(n);lt(g)?(y==null||y.scrollToLeft(g.scrollLeft),r.value=g.scrollLeft,_==null||_.scrollTo(g)):(y==null||y.scrollToLeft(g),r.value=g,_==null||_.scrollTo({scrollLeft:g,scrollTop:m}))}function v(g){var m;(m=c(n))==null||m.scrollTo({scrollTop:g})}function b(g,m){var y;(y=c(n))==null||y.scrollToItem(g,1,m)}function p(){var g,m;(g=c(n))==null||g.$forceUpdate(),(m=c(t))==null||m.$forceUpdate()}return{bodyRef:n,forceUpdate:p,fixedRowHeight:o,gridHeight:i,hasHeader:l,headerHeight:a,headerRef:t,totalHeight:s,itemKey:u,onItemRendered:f,resetAfterRowIndex:d,scrollTo:h,scrollToTop:v,scrollToRow:b,scrollLeft:r}},rG=ee({name:tG,props:iu,setup(e,{slots:t,expose:n}){const{ns:r}=Fe(Om),{bodyRef:s,fixedRowHeight:o,gridHeight:a,hasHeader:i,headerRef:l,headerHeight:u,totalHeight:f,forceUpdate:d,itemKey:h,onItemRendered:v,resetAfterRowIndex:b,scrollTo:p,scrollToTop:g,scrollToRow:m,scrollLeft:y}=nG(e);pt(\"tableV2GridScrollLeft\",y),n({forceUpdate:d,totalHeight:f,scrollTo:p,scrollToTop:g,scrollToRow:m,resetAfterRowIndex:b});const _=()=>e.bodyWidth;return()=>{const{cache:w,columns:S,data:C,fixedData:E,useIsScrolling:k,scrollbarAlwaysOn:T,scrollbarEndGap:x,scrollbarStartGap:M,style:A,rowHeight:P,bodyWidth:G,estimatedRowHeight:V,headerWidth:I,height:j,width:F,getRowHeight:R,onScroll:B}=e,N=Ge(V),U=N?QY:eG,J=c(u);return H(\"div\",{role:\"table\",class:[r.e(\"table\"),e.class],style:A},[H(U,{ref:s,data:C,useIsScrolling:k,itemKey:h,columnCache:0,columnWidth:N?_:G,totalColumn:1,totalRow:C.length,rowCache:w,rowHeight:N?R:P,width:F,height:c(a),class:r.e(\"body\"),role:\"rowgroup\",scrollbarStartGap:M,scrollbarEndGap:x,scrollbarAlwaysOn:T,onScroll:B,onItemRendered:v,perfMode:!1},{default:re=>{var le;const pe=C[re.rowIndex];return(le=t.row)==null?void 0:le.call(t,{...re,columns:S,rowData:pe})}}),c(i)&&H(YY,{ref:l,class:r.e(\"header-wrapper\"),columns:S,headerData:C,headerHeight:e.headerHeight,fixedHeaderData:E,rowWidth:I,rowHeight:P,width:F,height:Math.min(J+c(o),j)},{dynamic:t.header,fixed:t.row})])}}});var $m=rG;function sG(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const oG=(e,{slots:t})=>{const{mainTableRef:n,...r}=e;return H($m,ft({ref:n},r),sG(t)?t:{default:()=>[t]})};var iG=oG;function aG(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const lG=(e,{slots:t})=>{if(!e.columns.length)return;const{leftTableRef:n,...r}=e;return H($m,ft({ref:n},r),aG(t)?t:{default:()=>[t]})};var cG=lG;function uG(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const dG=(e,{slots:t})=>{if(!e.columns.length)return;const{rightTableRef:n,...r}=e;return H($m,ft({ref:n},r),uG(t)?t:{default:()=>[t]})};var fG=dG;const hG=e=>{const{isScrolling:t}=Fe(Om),n=W(!1),r=W(),s=O(()=>Ge(e.estimatedRowHeight)&&e.rowIndex>=0),o=(l=!1)=>{const u=c(r);if(!u)return;const{columns:f,onRowHeightChange:d,rowKey:h,rowIndex:v,style:b}=e,{height:p}=u.getBoundingClientRect();n.value=!0,je(()=>{if(l||p!==Number.parseInt(b.height)){const g=f[0],m=(g==null?void 0:g.placeholderSign)===xl;d==null||d({rowKey:h,height:p,rowIndex:v},g&&!m&&g.fixed)}})},a=O(()=>{const{rowData:l,rowIndex:u,rowKey:f,onRowHover:d}=e,h=e.rowEventHandlers||{},v={};return Object.entries(h).forEach(([b,p])=>{Ke(p)&&(v[b]=g=>{p({event:g,rowData:l,rowIndex:u,rowKey:f})})}),d&&[{name:\"onMouseleave\",hovered:!1},{name:\"onMouseenter\",hovered:!0}].forEach(({name:b,hovered:p})=>{const g=v[b];v[b]=m=>{d({event:m,hovered:p,rowData:l,rowIndex:u,rowKey:f}),g==null||g(m)}}),v}),i=l=>{const{onRowExpand:u,rowData:f,rowIndex:d,rowKey:h}=e;u==null||u({expanded:l,rowData:f,rowIndex:d,rowKey:h})};return it(()=>{c(s)&&o(!0)}),{isScrolling:t,measurable:s,measured:n,rowRef:r,eventHandlers:a,onExpand:i}},pG=\"ElTableV2TableRow\",vG=ee({name:pG,props:Bo,setup(e,{expose:t,slots:n,attrs:r}){const{eventHandlers:s,isScrolling:o,measurable:a,measured:i,rowRef:l,onExpand:u}=hG(e);return t({onExpand:u}),()=>{const{columns:f,columnsStyles:d,expandColumnKey:h,depth:v,rowData:b,rowIndex:p,style:g}=e;let m=f.map((y,_)=>{const w=ke(b.children)&&b.children.length>0&&y.key===h;return n.cell({column:y,columns:f,columnIndex:_,depth:v,style:d[y.key],rowData:b,rowIndex:p,isScrolling:c(o),expandIconProps:w?{rowData:b,rowIndex:p,onExpand:u}:void 0})});if(n.row&&(m=n.row({cells:m.map(y=>ke(y)&&y.length===1?y[0]:y),style:g,columns:f,depth:v,rowData:b,rowIndex:p,isScrolling:c(o)})),c(a)){const{height:y,..._}=g||{},w=c(i);return H(\"div\",ft({ref:l,class:e.class,style:w?g:_,role:\"row\"},r,c(s)),[m])}return H(\"div\",ft(r,{ref:l,class:e.class,style:g,role:\"row\"},c(s)),[m])}}});var mG=vG;function gG(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const _G=(e,{slots:t})=>{const{columns:n,columnsStyles:r,depthMap:s,expandColumnKey:o,expandedRowKeys:a,estimatedRowHeight:i,hasFixedColumns:l,rowData:u,rowIndex:f,style:d,isScrolling:h,rowProps:v,rowClass:b,rowKey:p,rowEventHandlers:g,ns:m,onRowHovered:y,onRowExpanded:_}=e,w=Qo(b,{columns:n,rowData:u,rowIndex:f},\"\"),S=Qo(v,{columns:n,rowData:u,rowIndex:f}),C=u[p],E=s[C]||0,k=!!o,T=f<0,x=[m.e(\"row\"),w,{[m.e(`row-depth-${E}`)]:k&&f>=0,[m.is(\"expanded\")]:k&&a.includes(C),[m.is(\"fixed\")]:!E&&T,[m.is(\"customized\")]:!!t.row}],M=l?y:void 0,A={...S,columns:n,columnsStyles:r,class:x,depth:E,expandColumnKey:o,estimatedRowHeight:T?void 0:i,isScrolling:h,rowIndex:f,rowData:u,rowKey:C,rowEventHandlers:g,style:d};return H(mG,ft(A,{onRowExpand:_,onMouseenter:V=>{M==null||M({hovered:!0,rowKey:C,event:V,rowData:u,rowIndex:f})},onMouseleave:V=>{M==null||M({hovered:!1,rowKey:C,event:V,rowData:u,rowIndex:f})},rowkey:C}),gG(t)?t:{default:()=>[t]})};var bG=_G;const Lm=(e,{slots:t})=>{var n;const{cellData:r,style:s}=e,o=((n=r==null?void 0:r.toString)==null?void 0:n.call(r))||\"\",a=ue(t,\"default\",e,()=>[o]);return H(\"div\",{class:e.class,title:o,style:s},[a])};Lm.displayName=\"ElTableV2Cell\";Lm.inheritAttrs=!1;var yG=Lm;const wG=e=>{const{expanded:t,expandable:n,onExpand:r,style:s,size:o}=e,a={onClick:n?()=>r(!t):void 0,class:e.class};return H(He,ft(a,{size:o,style:s}),{default:()=>[H(qn,null,null)]})};var SG=wG;const qk=({columns:e,column:t,columnIndex:n,depth:r,expandIconProps:s,isScrolling:o,rowData:a,rowIndex:i,style:l,expandedRowKeys:u,ns:f,cellProps:d,expandColumnKey:h,indentSize:v,iconSize:b,rowKey:p},{slots:g})=>{const m=Xs(l);if(t.placeholderSign===xl)return H(\"div\",{class:f.em(\"row-cell\",\"placeholder\"),style:m},null);const{cellRenderer:y,dataKey:_,dataGetter:w}=t,S=Ke(w)?w({columns:e,column:t,columnIndex:n,rowData:a,rowIndex:i}):rn(a,_??\"\"),C=Qo(d,{cellData:S,columns:e,column:t,columnIndex:n,rowIndex:i,rowData:a}),E={class:f.e(\"cell-text\"),columns:e,column:t,columnIndex:n,cellData:S,isScrolling:o,rowData:a,rowIndex:i},k=Bk(y),T=k?k(E):ue(g,\"default\",E,()=>[H(yG,E,null)]),x=[f.e(\"row-cell\"),t.class,t.align===Rl.CENTER&&f.is(\"align-center\"),t.align===Rl.RIGHT&&f.is(\"align-right\")],M=i>=0&&h&&t.key===h,A=i>=0&&u.includes(a[p]);let P;const G=`margin-inline-start: ${r*v}px;`;return M&&(lt(s)?P=H(SG,ft(s,{class:[f.e(\"expand-icon\"),f.is(\"expanded\",A)],size:b,expanded:A,style:G,expandable:!0}),null):P=H(\"div\",{style:[G,`width: ${b}px; height: ${b}px;`].join(\" \")},null)),H(\"div\",ft({class:x,style:m},C,{role:\"cell\"}),[P,T])};qk.inheritAttrs=!1;var Gb=qk;const CG=xe({class:String,columns:Jl,columnsStyles:{type:ie(Object),required:!0},headerIndex:Number,style:{type:ie(Object)}}),kG=ee({name:\"ElTableV2HeaderRow\",props:CG,setup(e,{slots:t}){return()=>{const{columns:n,columnsStyles:r,headerIndex:s,style:o}=e;let a=n.map((i,l)=>t.cell({columns:n,column:i,columnIndex:l,headerIndex:s,style:r[i.key]}));return t.header&&(a=t.header({cells:a.map(i=>ke(i)&&i.length===1?i[0]:i),columns:n,headerIndex:s})),H(\"div\",{class:e.class,style:o,role:\"row\"},[a])}}});var EG=kG;function TG(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const RG=({columns:e,columnsStyles:t,headerIndex:n,style:r,headerClass:s,headerProps:o,ns:a},{slots:i})=>{const l={columns:e,headerIndex:n},u=[a.e(\"header-row\"),Qo(s,l,\"\"),{[a.is(\"customized\")]:!!i.header}],f={...Qo(o,l),columnsStyles:t,class:u,columns:e,headerIndex:n,style:r};return H(EG,f,TG(i)?i:{default:()=>[i]})};var xG=RG;const Im=(e,{slots:t})=>ue(t,\"default\",e,()=>{var n,r;return[H(\"div\",{class:e.class,title:(n=e.column)==null?void 0:n.title},[(r=e.column)==null?void 0:r.title])]});Im.displayName=\"ElTableV2HeaderCell\";Im.inheritAttrs=!1;var OG=Im;const MG=e=>{const{sortOrder:t}=e;return H(He,{size:14,class:e.class},{default:()=>[t===Tl.ASC?H(nD,null,null):H(eD,null,null)]})};var AG=MG;const $G=(e,{slots:t})=>{const{column:n,ns:r,style:s,onColumnSorted:o}=e,a=Xs(s);if(n.placeholderSign===xl)return H(\"div\",{class:r.em(\"header-row-cell\",\"placeholder\"),style:a},null);const{headerCellRenderer:i,headerClass:l,sortable:u}=n,f={...e,class:r.e(\"header-cell-text\")},d=Bk(i),h=d?d(f):ue(t,\"default\",f,()=>[H(OG,f,null)]),{sortBy:v,sortState:b,headerCellProps:p}=e;let g,m;if(b){const w=b[n.key];g=!!vp[w],m=g?w:Tl.ASC}else g=n.key===v.key,m=g?v.order:Tl.ASC;const y=[r.e(\"header-cell\"),Qo(l,e,\"\"),n.align===Rl.CENTER&&r.is(\"align-center\"),n.align===Rl.RIGHT&&r.is(\"align-right\"),u&&r.is(\"sortable\")],_={...Qo(p,e),onClick:n.sortable?o:void 0,class:y,style:a,\"data-key\":n.key};return H(\"div\",ft(_,{role:\"columnheader\"}),[h,u&&H(AG,{class:[r.e(\"sort-icon\"),g&&r.is(\"sorting\")],sortOrder:m},null)])};var Xb=$G;const Yk=(e,{slots:t})=>{var n;return H(\"div\",{class:e.class,style:e.style},[(n=t.default)==null?void 0:n.call(t)])};Yk.displayName=\"ElTableV2Footer\";var LG=Yk;const Gk=(e,{slots:t})=>{const n=ue(t,\"default\",{},()=>[H(B2,null,null)]);return H(\"div\",{class:e.class,style:e.style},[n])};Gk.displayName=\"ElTableV2Empty\";var IG=Gk;const Xk=(e,{slots:t})=>{var n;return H(\"div\",{class:e.class,style:e.style},[(n=t.default)==null?void 0:n.call(t)])};Xk.displayName=\"ElTableV2Overlay\";var PG=Xk;function Ma(e){return typeof e==\"function\"||Object.prototype.toString.call(e)===\"[object Object]\"&&!Ut(e)}const DG=\"ElTableV2\",BG=ee({name:DG,props:jY,setup(e,{slots:t,expose:n}){const r=we(\"table-v2\"),{columnsStyles:s,fixedColumnsOnLeft:o,fixedColumnsOnRight:a,mainColumns:i,mainTableHeight:l,fixedTableHeight:u,leftTableWidth:f,rightTableWidth:d,data:h,depthMap:v,expandedRowKeys:b,hasFixedColumns:p,mainTableRef:g,leftTableRef:m,rightTableRef:y,isDynamic:_,isResetting:w,isScrolling:S,bodyWidth:C,emptyStyle:E,rootStyle:k,headerWidth:T,footerHeight:x,showEmpty:M,scrollTo:A,scrollToLeft:P,scrollToTop:G,scrollToRow:V,getRowHeight:I,onColumnSorted:j,onRowHeightChange:F,onRowHovered:R,onRowExpanded:B,onRowsRendered:N,onScroll:U,onVerticalScroll:J}=WY(e);return n({scrollTo:A,scrollToLeft:P,scrollToTop:G,scrollToRow:V}),pt(Om,{ns:r,isResetting:w,isScrolling:S}),()=>{const{cache:re,cellProps:le,estimatedRowHeight:pe,expandColumnKey:K,fixedData:z,headerHeight:te,headerClass:oe,headerProps:he,headerCellProps:Y,sortBy:L,sortState:Q,rowHeight:se,rowClass:ge,rowEventHandlers:ae,rowKey:_e,rowProps:me,scrollbarAlwaysOn:Ce,indentSize:Te,iconSize:Se,useIsScrolling:Ie,vScrollbarSize:be,width:Ae}=e,qe=c(h),tt={cache:re,class:r.e(\"main\"),columns:c(i),data:qe,fixedData:z,estimatedRowHeight:pe,bodyWidth:c(C)+be,headerHeight:te,headerWidth:c(T),height:c(l),mainTableRef:g,rowKey:_e,rowHeight:se,scrollbarAlwaysOn:Ce,scrollbarStartGap:2,scrollbarEndGap:be,useIsScrolling:Ie,width:Ae,getRowHeight:I,onRowsRendered:N,onScroll:U},et=c(f),at=c(u),ht={cache:re,class:r.e(\"left\"),columns:c(o),data:qe,estimatedRowHeight:pe,leftTableRef:m,rowHeight:se,bodyWidth:et,headerWidth:et,headerHeight:te,height:at,rowKey:_e,scrollbarAlwaysOn:Ce,scrollbarStartGap:2,scrollbarEndGap:be,useIsScrolling:Ie,width:et,getRowHeight:I,onScroll:J},fe=c(d)+be,$e={cache:re,class:r.e(\"right\"),columns:c(a),data:qe,estimatedRowHeight:pe,rightTableRef:y,rowHeight:se,bodyWidth:fe,headerWidth:fe,headerHeight:te,height:at,rowKey:_e,scrollbarAlwaysOn:Ce,scrollbarStartGap:2,scrollbarEndGap:be,width:fe,style:`--${c(r.namespace)}-table-scrollbar-size: ${be}px`,useIsScrolling:Ie,getRowHeight:I,onScroll:J},ce=c(s),Re={ns:r,depthMap:c(v),columnsStyles:ce,expandColumnKey:K,expandedRowKeys:c(b),estimatedRowHeight:pe,hasFixedColumns:c(p),rowProps:me,rowClass:ge,rowKey:_e,rowEventHandlers:ae,onRowHovered:R,onRowExpanded:B,onRowHeightChange:F},ne={cellProps:le,expandColumnKey:K,indentSize:Te,iconSize:Se,rowKey:_e,expandedRowKeys:c(b),ns:r},Pe={ns:r,headerClass:oe,headerProps:he,columnsStyles:ce},rt={ns:r,sortBy:L,sortState:Q,headerCellProps:Y,onColumnSorted:j},mt={row:nn=>H(bG,ft(nn,Re),{row:t.row,cell:qt=>{let _t;return t.cell?H(Gb,ft(qt,ne,{style:ce[qt.column.key]}),Ma(_t=t.cell(qt))?_t:{default:()=>[_t]}):H(Gb,ft(qt,ne,{style:ce[qt.column.key]}),null)}}),header:nn=>H(xG,ft(nn,Pe),{header:t.header,cell:qt=>{let _t;return t[\"header-cell\"]?H(Xb,ft(qt,rt,{style:ce[qt.column.key]}),Ma(_t=t[\"header-cell\"](qt))?_t:{default:()=>[_t]}):H(Xb,ft(qt,rt,{style:ce[qt.column.key]}),null)}})},Me=[e.class,r.b(),r.e(\"root\"),{[r.is(\"dynamic\")]:c(_)}],xt={class:r.e(\"footer\"),style:c(x)};return H(\"div\",{class:Me,style:c(k)},[H(iG,tt,Ma(mt)?mt:{default:()=>[mt]}),H(cG,ht,Ma(mt)?mt:{default:()=>[mt]}),H(fG,$e,Ma(mt)?mt:{default:()=>[mt]}),t.footer&&H(LG,xt,{default:t.footer}),c(M)&&H(IG,{class:r.e(\"empty\"),style:c(E)},{default:t.empty}),t.overlay&&H(PG,{class:r.e(\"overlay\")},{default:t.overlay})])}}});var NG=BG;const FG=xe({disableWidth:Boolean,disableHeight:Boolean,onResize:{type:ie(Function)}}),HG=e=>{const t=W(),n=W(0),r=W(0);let s;return it(()=>{s=jt(t,([o])=>{const{width:a,height:i}=o.contentRect,{paddingLeft:l,paddingRight:u,paddingTop:f,paddingBottom:d}=getComputedStyle(o.target),h=Number.parseInt(l)||0,v=Number.parseInt(u)||0,b=Number.parseInt(f)||0,p=Number.parseInt(d)||0;n.value=a-h-v,r.value=i-b-p}).stop}),Pt(()=>{s==null||s()}),ye([n,r],([o,a])=>{var i;(i=e.onResize)==null||i.call(e,{width:o,height:a})}),{sizer:t,width:n,height:r}},VG=ee({name:\"ElAutoResizer\",props:FG,setup(e,{slots:t}){const n=we(\"auto-resizer\"),{height:r,width:s,sizer:o}=HG(e),a={width:\"100%\",height:\"100%\"};return()=>{var i;return H(\"div\",{ref:o,class:n.b(),style:a},[(i=t.default)==null?void 0:i.call(t,{height:r.value,width:s.value})])}}});var zG=VG;const WG=Qe(NG),KG=Qe(zG),Bd=Symbol(\"tabsRootContextKey\"),jG=xe({tabs:{type:ie(Array),default:()=>Yt([])}}),Jk=\"ElTabBar\",UG=ee({name:Jk}),qG=ee({...UG,props:jG,setup(e,{expose:t}){const n=e,r=ct(),s=Fe(Bd);s||dn(Jk,\"<el-tabs><el-tab-bar /></el-tabs>\");const o=we(\"tabs\"),a=W(),i=W(),l=()=>{let v=0,b=0;const p=[\"top\",\"bottom\"].includes(s.props.tabPosition)?\"width\":\"height\",g=p===\"width\"?\"x\":\"y\",m=g===\"x\"?\"left\":\"top\";return n.tabs.every(y=>{var _,w;const S=(w=(_=r.parent)==null?void 0:_.refs)==null?void 0:w[`tab-${y.uid}`];if(!S)return!1;if(!y.active)return!0;v=S[`offset${Gr(m)}`],b=S[`client${Gr(p)}`];const C=window.getComputedStyle(S);return p===\"width\"&&(b-=Number.parseFloat(C.paddingLeft)+Number.parseFloat(C.paddingRight),v+=Number.parseFloat(C.paddingLeft)),!1}),{[p]:`${b}px`,transform:`translate${Gr(g)}(${v}px)`}},u=()=>i.value=l(),f=[],d=()=>{var v;f.forEach(p=>p.stop()),f.length=0;const b=(v=r.parent)==null?void 0:v.refs;if(b){for(const p in b)if(p.startsWith(\"tab-\")){const g=b[p];g&&f.push(jt(g,u))}}};ye(()=>n.tabs,async()=>{await je(),u(),d()},{immediate:!0});const h=jt(a,()=>u());return Pt(()=>{f.forEach(v=>v.stop()),f.length=0,h.stop()}),t({ref:a,update:u}),(v,b)=>($(),X(\"div\",{ref_key:\"barRef\",ref:a,class:D([c(o).e(\"active-bar\"),c(o).is(c(s).props.tabPosition)]),style:Ue(i.value)},null,6))}});var YG=Oe(qG,[[\"__file\",\"tab-bar.vue\"]]);const GG=xe({panes:{type:ie(Array),default:()=>Yt([])},currentName:{type:[String,Number],default:\"\"},editable:Boolean,type:{type:String,values:[\"card\",\"border-card\",\"\"],default:\"\"},stretch:Boolean}),XG={tabClick:(e,t,n)=>n instanceof Event,tabRemove:(e,t)=>t instanceof Event},Jb=\"ElTabNav\",JG=ee({name:Jb,props:GG,emits:XG,setup(e,{expose:t,emit:n}){const r=Fe(Bd);r||dn(Jb,\"<el-tabs><tab-nav /></el-tabs>\");const s=we(\"tabs\"),o=nP(),a=pP(),i=W(),l=W(),u=W(),f=W(),d=W(!1),h=W(0),v=W(!1),b=W(!0),p=O(()=>[\"top\",\"bottom\"].includes(r.props.tabPosition)?\"width\":\"height\"),g=O(()=>({transform:`translate${p.value===\"width\"?\"X\":\"Y\"}(-${h.value}px)`})),m=()=>{if(!i.value)return;const k=i.value[`offset${Gr(p.value)}`],T=h.value;if(!T)return;const x=T>k?T-k:0;h.value=x},y=()=>{if(!i.value||!l.value)return;const k=l.value[`offset${Gr(p.value)}`],T=i.value[`offset${Gr(p.value)}`],x=h.value;if(k-x<=T)return;const M=k-x>T*2?x+T:k-T;h.value=M},_=async()=>{const k=l.value;if(!d.value||!u.value||!i.value||!k)return;await je();const T=u.value.querySelector(\".is-active\");if(!T)return;const x=i.value,M=[\"top\",\"bottom\"].includes(r.props.tabPosition),A=T.getBoundingClientRect(),P=x.getBoundingClientRect(),G=M?k.offsetWidth-P.width:k.offsetHeight-P.height,V=h.value;let I=V;M?(A.left<P.left&&(I=V-(P.left-A.left)),A.right>P.right&&(I=V+A.right-P.right)):(A.top<P.top&&(I=V-(P.top-A.top)),A.bottom>P.bottom&&(I=V+(A.bottom-P.bottom))),I=Math.max(I,0),h.value=Math.min(I,G)},w=()=>{var k;if(!l.value||!i.value)return;e.stretch&&((k=f.value)==null||k.update());const T=l.value[`offset${Gr(p.value)}`],x=i.value[`offset${Gr(p.value)}`],M=h.value;x<T?(d.value=d.value||{},d.value.prev=M,d.value.next=M+x<T,T-M<x&&(h.value=T-x)):(d.value=!1,M>0&&(h.value=0))},S=k=>{let T=0;switch(k.code){case Ne.left:case Ne.up:T=-1;break;case Ne.right:case Ne.down:T=1;break;default:return}const x=Array.from(k.currentTarget.querySelectorAll(\"[role=tab]:not(.is-disabled)\"));let A=x.indexOf(k.target)+T;A<0?A=x.length-1:A>=x.length&&(A=0),x[A].focus({preventScroll:!0}),x[A].click(),C()},C=()=>{b.value&&(v.value=!0)},E=()=>v.value=!1;return ye(o,k=>{k===\"hidden\"?b.value=!1:k===\"visible\"&&setTimeout(()=>b.value=!0,50)}),ye(a,k=>{k?setTimeout(()=>b.value=!0,50):b.value=!1}),jt(u,w),it(()=>setTimeout(()=>_(),0)),os(()=>w()),t({scrollToActiveTab:_,removeFocus:E}),()=>{const k=d.value?[H(\"span\",{class:[s.e(\"nav-prev\"),s.is(\"disabled\",!d.value.prev)],onClick:m},[H(He,null,{default:()=>[H(ao,null,null)]})]),H(\"span\",{class:[s.e(\"nav-next\"),s.is(\"disabled\",!d.value.next)],onClick:y},[H(He,null,{default:()=>[H(qn,null,null)]})])]:null,T=e.panes.map((x,M)=>{var A,P,G,V;const I=x.uid,j=x.props.disabled,F=(P=(A=x.props.name)!=null?A:x.index)!=null?P:`${M}`,R=!j&&(x.isClosable||e.editable);x.index=`${M}`;const B=R?H(He,{class:\"is-icon-close\",onClick:J=>n(\"tabRemove\",x,J)},{default:()=>[H(Dr,null,null)]}):null,N=((V=(G=x.slots).label)==null?void 0:V.call(G))||x.props.label,U=!j&&x.active?0:-1;return H(\"div\",{ref:`tab-${I}`,class:[s.e(\"item\"),s.is(r.props.tabPosition),s.is(\"active\",x.active),s.is(\"disabled\",j),s.is(\"closable\",R),s.is(\"focus\",v.value)],id:`tab-${F}`,key:`tab-${I}`,\"aria-controls\":`pane-${F}`,role:\"tab\",\"aria-selected\":x.active,tabindex:U,onFocus:()=>C(),onBlur:()=>E(),onClick:J=>{E(),n(\"tabClick\",x,F,J)},onKeydown:J=>{R&&(J.code===Ne.delete||J.code===Ne.backspace)&&n(\"tabRemove\",x,J)}},[N,B])});return H(\"div\",{ref:u,class:[s.e(\"nav-wrap\"),s.is(\"scrollable\",!!d.value),s.is(r.props.tabPosition)]},[k,H(\"div\",{class:s.e(\"nav-scroll\"),ref:i},[H(\"div\",{class:[s.e(\"nav\"),s.is(r.props.tabPosition),s.is(\"stretch\",e.stretch&&[\"top\",\"bottom\"].includes(r.props.tabPosition))],ref:l,style:g.value,role:\"tablist\",onKeydown:S},[e.type?null:H(YG,{ref:f,tabs:[...e.panes]},null),T])])])}}}),ZG=xe({type:{type:String,values:[\"card\",\"border-card\",\"\"],default:\"\"},closable:Boolean,addable:Boolean,modelValue:{type:[String,Number]},editable:Boolean,tabPosition:{type:String,values:[\"top\",\"right\",\"bottom\",\"left\"],default:\"top\"},beforeLeave:{type:ie(Function),default:()=>!0},stretch:Boolean}),Hf=e=>ze(e)||Ge(e),QG={[ot]:e=>Hf(e),tabClick:(e,t)=>t instanceof Event,tabChange:e=>Hf(e),edit:(e,t)=>[\"remove\",\"add\"].includes(t),tabRemove:e=>Hf(e),tabAdd:()=>!0},eX=ee({name:\"ElTabs\",props:ZG,emits:QG,setup(e,{emit:t,slots:n,expose:r}){var s;const o=we(\"tabs\"),a=O(()=>[\"left\",\"right\"].includes(e.tabPosition)),{children:i,addChild:l,removeChild:u}=Zv(ct(),\"ElTabPane\"),f=W(),d=W((s=e.modelValue)!=null?s:\"0\"),h=async(m,y=!1)=>{var _,w,S;if(!(d.value===m||Lt(m)))try{await((_=e.beforeLeave)==null?void 0:_.call(e,m,d.value))!==!1&&(d.value=m,y&&(t(ot,m),t(\"tabChange\",m)),(S=(w=f.value)==null?void 0:w.removeFocus)==null||S.call(w))}catch{}},v=(m,y,_)=>{m.props.disabled||(h(y,!0),t(\"tabClick\",m,_))},b=(m,y)=>{m.props.disabled||Lt(m.props.name)||(y.stopPropagation(),t(\"edit\",m.props.name,\"remove\"),t(\"tabRemove\",m.props.name))},p=()=>{t(\"edit\",void 0,\"add\"),t(\"tabAdd\")};ye(()=>e.modelValue,m=>h(m)),ye(d,async()=>{var m;await je(),(m=f.value)==null||m.scrollToActiveTab()}),pt(Bd,{props:e,currentName:d,registerPane:m=>{i.value.push(m)},sortPane:l,unregisterPane:u}),r({currentName:d});const g=({render:m})=>m();return()=>{const m=n[\"add-icon\"],y=e.editable||e.addable?H(\"div\",{class:[o.e(\"new-tab\"),a.value&&o.e(\"new-tab-vertical\")],tabindex:\"0\",onClick:p,onKeydown:S=>{[Ne.enter,Ne.numpadEnter].includes(S.code)&&p()}},[m?ue(n,\"add-icon\"):H(He,{class:o.is(\"icon-plus\")},{default:()=>[H(KS,null,null)]})]):null,_=H(\"div\",{class:[o.e(\"header\"),a.value&&o.e(\"header-vertical\"),o.is(e.tabPosition)]},[H(g,{render:()=>{const S=i.value.some(C=>C.slots.label);return H(JG,{ref:f,currentName:d.value,editable:e.editable,type:e.type,panes:i.value,stretch:e.stretch,onTabClick:v,onTabRemove:b},{$stable:!S})}},null),y]),w=H(\"div\",{class:o.e(\"content\")},[ue(n,\"default\")]);return H(\"div\",{class:[o.b(),o.m(e.tabPosition),{[o.m(\"card\")]:e.type===\"card\",[o.m(\"border-card\")]:e.type===\"border-card\"}]},[w,_])}}});var tX=eX;const nX=xe({label:{type:String,default:\"\"},name:{type:[String,Number]},closable:Boolean,disabled:Boolean,lazy:Boolean}),Zk=\"ElTabPane\",rX=ee({name:Zk}),sX=ee({...rX,props:nX,setup(e){const t=e,n=ct(),r=an(),s=Fe(Bd);s||dn(Zk,\"usage: <el-tabs><el-tab-pane /></el-tabs/>\");const o=we(\"tab-pane\"),a=W(),i=O(()=>t.closable||s.props.closable),l=Th(()=>{var v;return s.currentName.value===((v=t.name)!=null?v:a.value)}),u=W(l.value),f=O(()=>{var v;return(v=t.name)!=null?v:a.value}),d=Th(()=>!t.lazy||u.value||l.value);ye(l,v=>{v&&(u.value=!0)});const h=St({uid:n.uid,slots:r,props:t,paneName:f,active:l,index:a,isClosable:i});return s.registerPane(h),it(()=>{s.sortPane(h)}),xs(()=>{s.unregisterPane(h.uid)}),(v,b)=>c(d)?st(($(),X(\"div\",{key:0,id:`pane-${c(f)}`,class:D(c(o).b()),role:\"tabpanel\",\"aria-hidden\":!c(l),\"aria-labelledby\":`tab-${c(f)}`},[ue(v.$slots,\"default\")],10,[\"id\",\"aria-hidden\",\"aria-labelledby\"])),[[Et,c(l)]]):de(\"v-if\",!0)}});var Qk=Oe(sX,[[\"__file\",\"tab-pane.vue\"]]);const eE=Qe(tX,{TabPane:Qk}),tE=Gt(Qk),oX=xe({type:{type:String,values:[\"primary\",\"success\",\"info\",\"warning\",\"danger\",\"\"],default:\"\"},size:{type:String,values:is,default:\"\"},truncated:Boolean,lineClamp:{type:[String,Number]},tag:{type:String,default:\"span\"}}),iX=ee({name:\"ElText\"}),aX=ee({...iX,props:oX,setup(e){const t=e,n=sn(),r=we(\"text\"),s=O(()=>[r.b(),r.m(t.type),r.m(n.value),r.is(\"truncated\",t.truncated),r.is(\"line-clamp\",!Lt(t.lineClamp))]);return(o,a)=>($(),ve(dt(o.tag),{class:D(c(s)),style:Ue({\"-webkit-line-clamp\":o.lineClamp})},{default:q(()=>[ue(o.$slots,\"default\")]),_:3},8,[\"class\",\"style\"]))}});var lX=Oe(aX,[[\"__file\",\"text.vue\"]]);const nE=Qe(lX),cX=xe({format:{type:String,default:\"HH:mm\"},modelValue:String,disabled:Boolean,editable:{type:Boolean,default:!0},effect:{type:ie(String),default:\"light\"},clearable:{type:Boolean,default:!0},size:on,placeholder:String,start:{type:String,default:\"09:00\"},end:{type:String,default:\"18:00\"},step:{type:String,default:\"00:30\"},minTime:String,maxTime:String,name:String,prefixIcon:{type:ie([String,Object]),default:()=>WS},clearIcon:{type:ie([String,Object]),default:()=>as},...fa}),ys=e=>{const t=(e||\"\").split(\":\");if(t.length>=2){let n=Number.parseInt(t[0],10);const r=Number.parseInt(t[1],10),s=e.toUpperCase();return s.includes(\"AM\")&&n===12?n=0:s.includes(\"PM\")&&n!==12&&(n+=12),{hours:n,minutes:r}}return null},Vf=(e,t)=>{const n=ys(e);if(!n)return-1;const r=ys(t);if(!r)return-1;const s=n.minutes+n.hours*60,o=r.minutes+r.hours*60;return s===o?0:s>o?1:-1},Zb=e=>`${e}`.padStart(2,\"0\"),bi=e=>`${Zb(e.hours)}:${Zb(e.minutes)}`,uX=(e,t)=>{const n=ys(e);if(!n)return\"\";const r=ys(t);if(!r)return\"\";const s={hours:n.hours,minutes:n.minutes};return s.minutes+=r.minutes,s.hours+=r.hours,s.hours+=Math.floor(s.minutes/60),s.minutes=s.minutes%60,bi(s)},dX=ee({name:\"ElTimeSelect\"}),fX=ee({...dX,props:cX,emits:[\"change\",\"blur\",\"focus\",\"clear\",\"update:modelValue\"],setup(e,{expose:t}){const n=e;Je.extend(rm);const{Option:r}=fo,s=we(\"input\"),o=W(),a=On(),{lang:i}=yt(),l=O(()=>n.modelValue),u=O(()=>{const m=ys(n.start);return m?bi(m):null}),f=O(()=>{const m=ys(n.end);return m?bi(m):null}),d=O(()=>{const m=ys(n.step);return m?bi(m):null}),h=O(()=>{const m=ys(n.minTime||\"\");return m?bi(m):null}),v=O(()=>{const m=ys(n.maxTime||\"\");return m?bi(m):null}),b=O(()=>{const m=[];if(n.start&&n.end&&n.step){let y=u.value,_;for(;y&&f.value&&Vf(y,f.value)<=0;)_=Je(y,\"HH:mm\").locale(i.value).format(n.format),m.push({value:_,disabled:Vf(y,h.value||\"-1:-1\")<=0||Vf(y,v.value||\"100:100\")>=0}),y=uX(y,d.value)}return m});return t({blur:()=>{var m,y;(y=(m=o.value)==null?void 0:m.blur)==null||y.call(m)},focus:()=>{var m,y;(y=(m=o.value)==null?void 0:m.focus)==null||y.call(m)}}),(m,y)=>($(),ve(c(fo),{ref_key:\"select\",ref:o,\"model-value\":c(l),disabled:c(a),clearable:m.clearable,\"clear-icon\":m.clearIcon,size:m.size,effect:m.effect,placeholder:m.placeholder,\"default-first-option\":\"\",filterable:m.editable,\"empty-values\":m.emptyValues,\"value-on-clear\":m.valueOnClear,\"onUpdate:modelValue\":_=>m.$emit(\"update:modelValue\",_),onChange:_=>m.$emit(\"change\",_),onBlur:_=>m.$emit(\"blur\",_),onFocus:_=>m.$emit(\"focus\",_),onClear:()=>m.$emit(\"clear\")},{prefix:q(()=>[m.prefixIcon?($(),ve(c(He),{key:0,class:D(c(s).e(\"prefix-icon\"))},{default:q(()=>[($(),ve(dt(m.prefixIcon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)]),default:q(()=>[($(!0),X(We,null,vt(c(b),_=>($(),ve(c(r),{key:_.value,label:_.value,value:_.value,disabled:_.disabled},null,8,[\"label\",\"value\",\"disabled\"]))),128))]),_:1},8,[\"model-value\",\"disabled\",\"clearable\",\"clear-icon\",\"size\",\"effect\",\"placeholder\",\"filterable\",\"empty-values\",\"value-on-clear\",\"onUpdate:modelValue\",\"onChange\",\"onBlur\",\"onFocus\",\"onClear\"]))}});var hX=Oe(fX,[[\"__file\",\"time-select.vue\"]]);const pX=Qe(hX),vX=ee({name:\"ElTimeline\",setup(e,{slots:t}){const n=we(\"timeline\");return pt(\"timeline\",t),()=>Ye(\"ul\",{class:[n.b()]},[ue(t,\"default\")])}}),mX=xe({timestamp:{type:String,default:\"\"},hideTimestamp:Boolean,center:Boolean,placement:{type:String,values:[\"top\",\"bottom\"],default:\"bottom\"},type:{type:String,values:[\"primary\",\"success\",\"warning\",\"danger\",\"info\"],default:\"\"},color:{type:String,default:\"\"},size:{type:String,values:[\"normal\",\"large\"],default:\"normal\"},icon:{type:Nt},hollow:Boolean}),gX=ee({name:\"ElTimelineItem\"}),_X=ee({...gX,props:mX,setup(e){const t=e,n=we(\"timeline-item\"),r=O(()=>[n.e(\"node\"),n.em(\"node\",t.size||\"\"),n.em(\"node\",t.type||\"\"),n.is(\"hollow\",t.hollow)]);return(s,o)=>($(),X(\"li\",{class:D([c(n).b(),{[c(n).e(\"center\")]:s.center}])},[Z(\"div\",{class:D(c(n).e(\"tail\"))},null,2),s.$slots.dot?de(\"v-if\",!0):($(),X(\"div\",{key:0,class:D(c(r)),style:Ue({backgroundColor:s.color})},[s.icon?($(),ve(c(He),{key:0,class:D(c(n).e(\"icon\"))},{default:q(()=>[($(),ve(dt(s.icon)))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],6)),s.$slots.dot?($(),X(\"div\",{key:1,class:D(c(n).e(\"dot\"))},[ue(s.$slots,\"dot\")],2)):de(\"v-if\",!0),Z(\"div\",{class:D(c(n).e(\"wrapper\"))},[!s.hideTimestamp&&s.placement===\"top\"?($(),X(\"div\",{key:0,class:D([c(n).e(\"timestamp\"),c(n).is(\"top\")])},Ee(s.timestamp),3)):de(\"v-if\",!0),Z(\"div\",{class:D(c(n).e(\"content\"))},[ue(s.$slots,\"default\")],2),!s.hideTimestamp&&s.placement===\"bottom\"?($(),X(\"div\",{key:1,class:D([c(n).e(\"timestamp\"),c(n).is(\"bottom\")])},Ee(s.timestamp),3)):de(\"v-if\",!0)],2)],2))}});var rE=Oe(_X,[[\"__file\",\"timeline-item.vue\"]]);const bX=Qe(vX,{TimelineItem:rE}),yX=Gt(rE),sE=xe({nowrap:Boolean});var oE=(e=>(e.top=\"top\",e.bottom=\"bottom\",e.left=\"left\",e.right=\"right\",e))(oE||{});const wX=Object.values(oE),Pm=xe({width:{type:Number,default:10},height:{type:Number,default:10},style:{type:ie(Object),default:null}}),SX=xe({side:{type:ie(String),values:wX,required:!0}}),CX=[\"absolute\",\"fixed\"],kX=[\"top-start\",\"top-end\",\"top\",\"bottom-start\",\"bottom-end\",\"bottom\",\"left-start\",\"left-end\",\"left\",\"right-start\",\"right-end\",\"right\"],Dm=xe({arrowPadding:{type:ie(Number),default:5},effect:{type:ie(String),default:\"light\"},contentClass:String,placement:{type:ie(String),values:kX,default:\"bottom\"},reference:{type:ie(Object),default:null},offset:{type:Number,default:8},strategy:{type:ie(String),values:CX,default:\"absolute\"},showArrow:Boolean,...kn([\"ariaLabel\"])}),Bm=xe({delayDuration:{type:Number,default:300},defaultOpen:Boolean,open:{type:Boolean,default:void 0},onOpenChange:{type:ie(Function)},\"onUpdate:open\":{type:ie(Function)}}),hi={type:ie(Function)},Nm=xe({onBlur:hi,onClick:hi,onFocus:hi,onMouseDown:hi,onMouseEnter:hi,onMouseLeave:hi}),EX=xe({...Bm,...Pm,...Nm,...Dm,alwaysOn:Boolean,fullTransition:Boolean,transitionProps:{type:ie(Object),default:null},teleported:Boolean,to:{type:ie(String),default:\"body\"}}),Nd=Symbol(\"tooltipV2\"),iE=Symbol(\"tooltipV2Content\"),zf=\"tooltip_v2.open\",TX=ee({name:\"ElTooltipV2Root\"}),RX=ee({...TX,props:Bm,setup(e,{expose:t}){const n=e,r=W(n.defaultOpen),s=W(null),o=O({get:()=>Xo(n.open)?r.value:n.open,set:g=>{var m;r.value=g,(m=n[\"onUpdate:open\"])==null||m.call(n,g)}}),a=O(()=>Ge(n.delayDuration)&&n.delayDuration>0),{start:i,stop:l}=Jo(()=>{o.value=!0},O(()=>n.delayDuration),{immediate:!1}),u=we(\"tooltip-v2\"),f=Sn(),d=()=>{l(),o.value=!0},h=()=>{c(a)?i():d()},v=d,b=()=>{l(),o.value=!1};return ye(o,g=>{var m;g&&(document.dispatchEvent(new CustomEvent(zf)),v()),(m=n.onOpenChange)==null||m.call(n,g)}),it(()=>{document.addEventListener(zf,b)}),Pt(()=>{l(),document.removeEventListener(zf,b)}),pt(Nd,{contentId:f,triggerRef:s,ns:u,onClose:b,onDelayOpen:h,onOpen:v}),t({onOpen:v,onClose:b}),(g,m)=>ue(g.$slots,\"default\",{open:c(o)})}});var xX=Oe(RX,[[\"__file\",\"root.vue\"]]);const OX=ee({name:\"ElTooltipV2Arrow\"}),MX=ee({...OX,props:{...Pm,...SX},setup(e){const t=e,{ns:n}=Fe(Nd),{arrowRef:r}=Fe(iE),s=O(()=>{const{style:o,width:a,height:i}=t,l=n.namespace.value;return{[`--${l}-tooltip-v2-arrow-width`]:`${a}px`,[`--${l}-tooltip-v2-arrow-height`]:`${i}px`,[`--${l}-tooltip-v2-arrow-border-width`]:`${a/2}px`,[`--${l}-tooltip-v2-arrow-cover-width`]:a/2-1,...o||{}}});return(o,a)=>($(),X(\"span\",{ref_key:\"arrowRef\",ref:r,style:Ue(c(s)),class:D(c(n).e(\"arrow\"))},null,6))}});var Qb=Oe(MX,[[\"__file\",\"arrow.vue\"]]);const Zi=Math.min,jo=Math.max,Vu=Math.round,Rc=Math.floor,Qr=e=>({x:e,y:e}),AX={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"},$X={start:\"end\",end:\"start\"};function gp(e,t,n){return jo(e,Zi(t,n))}function Zl(e,t){return typeof e==\"function\"?e(t):e}function ei(e){return e.split(\"-\")[0]}function Ql(e){return e.split(\"-\")[1]}function aE(e){return e===\"x\"?\"y\":\"x\"}function Fm(e){return e===\"y\"?\"height\":\"width\"}function Qi(e){return[\"top\",\"bottom\"].includes(ei(e))?\"y\":\"x\"}function Hm(e){return aE(Qi(e))}function LX(e,t,n){n===void 0&&(n=!1);const r=Ql(e),s=Hm(e),o=Fm(s);let a=s===\"x\"?r===(n?\"end\":\"start\")?\"right\":\"left\":r===\"start\"?\"bottom\":\"top\";return t.reference[o]>t.floating[o]&&(a=zu(a)),[a,zu(a)]}function IX(e){const t=zu(e);return[_p(e),t,_p(t)]}function _p(e){return e.replace(/start|end/g,t=>$X[t])}function PX(e,t,n){const r=[\"left\",\"right\"],s=[\"right\",\"left\"],o=[\"top\",\"bottom\"],a=[\"bottom\",\"top\"];switch(e){case\"top\":case\"bottom\":return n?t?s:r:t?r:s;case\"left\":case\"right\":return t?o:a;default:return[]}}function DX(e,t,n,r){const s=Ql(e);let o=PX(ei(e),n===\"start\",r);return s&&(o=o.map(a=>a+\"-\"+s),t&&(o=o.concat(o.map(_p)))),o}function zu(e){return e.replace(/left|right|bottom|top/g,t=>AX[t])}function BX(e){return{top:0,right:0,bottom:0,left:0,...e}}function lE(e){return typeof e!=\"number\"?BX(e):{top:e,right:e,bottom:e,left:e}}function Wu(e){const{x:t,y:n,width:r,height:s}=e;return{width:r,height:s,top:n,left:t,right:t+r,bottom:n+s,x:t,y:n}}function ey(e,t,n){let{reference:r,floating:s}=e;const o=Qi(t),a=Hm(t),i=Fm(a),l=ei(t),u=o===\"y\",f=r.x+r.width/2-s.width/2,d=r.y+r.height/2-s.height/2,h=r[i]/2-s[i]/2;let v;switch(l){case\"top\":v={x:f,y:r.y-s.height};break;case\"bottom\":v={x:f,y:r.y+r.height};break;case\"right\":v={x:r.x+r.width,y:d};break;case\"left\":v={x:r.x-s.width,y:d};break;default:v={x:r.x,y:r.y}}switch(Ql(t)){case\"start\":v[a]-=h*(n&&u?-1:1);break;case\"end\":v[a]+=h*(n&&u?-1:1);break}return v}const NX=async(e,t,n)=>{const{placement:r=\"bottom\",strategy:s=\"absolute\",middleware:o=[],platform:a}=n,i=o.filter(Boolean),l=await(a.isRTL==null?void 0:a.isRTL(t));let u=await a.getElementRects({reference:e,floating:t,strategy:s}),{x:f,y:d}=ey(u,r,l),h=r,v={},b=0;for(let p=0;p<i.length;p++){const{name:g,fn:m}=i[p],{x:y,y:_,data:w,reset:S}=await m({x:f,y:d,initialPlacement:r,placement:h,strategy:s,middlewareData:v,rects:u,platform:a,elements:{reference:e,floating:t}});f=y??f,d=_??d,v={...v,[g]:{...v[g],...w}},S&&b<=50&&(b++,typeof S==\"object\"&&(S.placement&&(h=S.placement),S.rects&&(u=S.rects===!0?await a.getElementRects({reference:e,floating:t,strategy:s}):S.rects),{x:f,y:d}=ey(u,h,l)),p=-1)}return{x:f,y:d,placement:h,strategy:s,middlewareData:v}};async function Vm(e,t){var n;t===void 0&&(t={});const{x:r,y:s,platform:o,rects:a,elements:i,strategy:l}=e,{boundary:u=\"clippingAncestors\",rootBoundary:f=\"viewport\",elementContext:d=\"floating\",altBoundary:h=!1,padding:v=0}=Zl(t,e),b=lE(v),g=i[h?d===\"floating\"?\"reference\":\"floating\":d],m=Wu(await o.getClippingRect({element:(n=await(o.isElement==null?void 0:o.isElement(g)))==null||n?g:g.contextElement||await(o.getDocumentElement==null?void 0:o.getDocumentElement(i.floating)),boundary:u,rootBoundary:f,strategy:l})),y=d===\"floating\"?{x:r,y:s,width:a.floating.width,height:a.floating.height}:a.reference,_=await(o.getOffsetParent==null?void 0:o.getOffsetParent(i.floating)),w=await(o.isElement==null?void 0:o.isElement(_))?await(o.getScale==null?void 0:o.getScale(_))||{x:1,y:1}:{x:1,y:1},S=Wu(o.convertOffsetParentRelativeRectToViewportRelativeRect?await o.convertOffsetParentRelativeRectToViewportRelativeRect({elements:i,rect:y,offsetParent:_,strategy:l}):y);return{top:(m.top-S.top+b.top)/w.y,bottom:(S.bottom-m.bottom+b.bottom)/w.y,left:(m.left-S.left+b.left)/w.x,right:(S.right-m.right+b.right)/w.x}}const FX=e=>({name:\"arrow\",options:e,async fn(t){const{x:n,y:r,placement:s,rects:o,platform:a,elements:i,middlewareData:l}=t,{element:u,padding:f=0}=Zl(e,t)||{};if(u==null)return{};const d=lE(f),h={x:n,y:r},v=Hm(s),b=Fm(v),p=await a.getDimensions(u),g=v===\"y\",m=g?\"top\":\"left\",y=g?\"bottom\":\"right\",_=g?\"clientHeight\":\"clientWidth\",w=o.reference[b]+o.reference[v]-h[v]-o.floating[b],S=h[v]-o.reference[v],C=await(a.getOffsetParent==null?void 0:a.getOffsetParent(u));let E=C?C[_]:0;(!E||!await(a.isElement==null?void 0:a.isElement(C)))&&(E=i.floating[_]||o.floating[b]);const k=w/2-S/2,T=E/2-p[b]/2-1,x=Zi(d[m],T),M=Zi(d[y],T),A=x,P=E-p[b]-M,G=E/2-p[b]/2+k,V=gp(A,G,P),I=!l.arrow&&Ql(s)!=null&&G!==V&&o.reference[b]/2-(G<A?x:M)-p[b]/2<0,j=I?G<A?G-A:G-P:0;return{[v]:h[v]+j,data:{[v]:V,centerOffset:G-V-j,...I&&{alignmentOffset:j}},reset:I}}}),HX=function(e){return e===void 0&&(e={}),{name:\"flip\",options:e,async fn(t){var n,r;const{placement:s,middlewareData:o,rects:a,initialPlacement:i,platform:l,elements:u}=t,{mainAxis:f=!0,crossAxis:d=!0,fallbackPlacements:h,fallbackStrategy:v=\"bestFit\",fallbackAxisSideDirection:b=\"none\",flipAlignment:p=!0,...g}=Zl(e,t);if((n=o.arrow)!=null&&n.alignmentOffset)return{};const m=ei(s),y=Qi(i),_=ei(i)===i,w=await(l.isRTL==null?void 0:l.isRTL(u.floating)),S=h||(_||!p?[zu(i)]:IX(i)),C=b!==\"none\";!h&&C&&S.push(...DX(i,p,b,w));const E=[i,...S],k=await Vm(t,g),T=[];let x=((r=o.flip)==null?void 0:r.overflows)||[];if(f&&T.push(k[m]),d){const G=LX(s,a,w);T.push(k[G[0]],k[G[1]])}if(x=[...x,{placement:s,overflows:T}],!T.every(G=>G<=0)){var M,A;const G=(((M=o.flip)==null?void 0:M.index)||0)+1,V=E[G];if(V)return{data:{index:G,overflows:x},reset:{placement:V}};let I=(A=x.filter(j=>j.overflows[0]<=0).sort((j,F)=>j.overflows[1]-F.overflows[1])[0])==null?void 0:A.placement;if(!I)switch(v){case\"bestFit\":{var P;const j=(P=x.filter(F=>{if(C){const R=Qi(F.placement);return R===y||R===\"y\"}return!0}).map(F=>[F.placement,F.overflows.filter(R=>R>0).reduce((R,B)=>R+B,0)]).sort((F,R)=>F[1]-R[1])[0])==null?void 0:P[0];j&&(I=j);break}case\"initialPlacement\":I=i;break}if(s!==I)return{reset:{placement:I}}}return{}}}};async function VX(e,t){const{placement:n,platform:r,elements:s}=e,o=await(r.isRTL==null?void 0:r.isRTL(s.floating)),a=ei(n),i=Ql(n),l=Qi(n)===\"y\",u=[\"left\",\"top\"].includes(a)?-1:1,f=o&&l?-1:1,d=Zl(t,e);let{mainAxis:h,crossAxis:v,alignmentAxis:b}=typeof d==\"number\"?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return i&&typeof b==\"number\"&&(v=i===\"end\"?b*-1:b),l?{x:v*f,y:h*u}:{x:h*u,y:v*f}}const zX=function(e){return e===void 0&&(e=0),{name:\"offset\",options:e,async fn(t){var n,r;const{x:s,y:o,placement:a,middlewareData:i}=t,l=await VX(t,e);return a===((n=i.offset)==null?void 0:n.placement)&&(r=i.arrow)!=null&&r.alignmentOffset?{}:{x:s+l.x,y:o+l.y,data:{...l,placement:a}}}}},WX=function(e){return e===void 0&&(e={}),{name:\"shift\",options:e,async fn(t){const{x:n,y:r,placement:s}=t,{mainAxis:o=!0,crossAxis:a=!1,limiter:i={fn:g=>{let{x:m,y}=g;return{x:m,y}}},...l}=Zl(e,t),u={x:n,y:r},f=await Vm(t,l),d=Qi(ei(s)),h=aE(d);let v=u[h],b=u[d];if(o){const g=h===\"y\"?\"top\":\"left\",m=h===\"y\"?\"bottom\":\"right\",y=v+f[g],_=v-f[m];v=gp(y,v,_)}if(a){const g=d===\"y\"?\"top\":\"left\",m=d===\"y\"?\"bottom\":\"right\",y=b+f[g],_=b-f[m];b=gp(y,b,_)}const p=i.fn({...t,[h]:v,[d]:b});return{...p,data:{x:p.x-n,y:p.y-r,enabled:{[h]:o,[d]:a}}}}}};function Fd(){return typeof window<\"u\"}function ga(e){return cE(e)?(e.nodeName||\"\").toLowerCase():\"#document\"}function cr(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function us(e){var t;return(t=(cE(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function cE(e){return Fd()?e instanceof Node||e instanceof cr(e).Node:!1}function Br(e){return Fd()?e instanceof Element||e instanceof cr(e).Element:!1}function ss(e){return Fd()?e instanceof HTMLElement||e instanceof cr(e).HTMLElement:!1}function ty(e){return!Fd()||typeof ShadowRoot>\"u\"?!1:e instanceof ShadowRoot||e instanceof cr(e).ShadowRoot}function ec(e){const{overflow:t,overflowX:n,overflowY:r,display:s}=Nr(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&![\"inline\",\"contents\"].includes(s)}function KX(e){return[\"table\",\"td\",\"th\"].includes(ga(e))}function Hd(e){return[\":popover-open\",\":modal\"].some(t=>{try{return e.matches(t)}catch{return!1}})}function zm(e){const t=Wm(),n=Br(e)?Nr(e):e;return n.transform!==\"none\"||n.perspective!==\"none\"||(n.containerType?n.containerType!==\"normal\":!1)||!t&&(n.backdropFilter?n.backdropFilter!==\"none\":!1)||!t&&(n.filter?n.filter!==\"none\":!1)||[\"transform\",\"perspective\",\"filter\"].some(r=>(n.willChange||\"\").includes(r))||[\"paint\",\"layout\",\"strict\",\"content\"].some(r=>(n.contain||\"\").includes(r))}function jX(e){let t=ho(e);for(;ss(t)&&!ea(t);){if(zm(t))return t;if(Hd(t))return null;t=ho(t)}return null}function Wm(){return typeof CSS>\"u\"||!CSS.supports?!1:CSS.supports(\"-webkit-backdrop-filter\",\"none\")}function ea(e){return[\"html\",\"body\",\"#document\"].includes(ga(e))}function Nr(e){return cr(e).getComputedStyle(e)}function Vd(e){return Br(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function ho(e){if(ga(e)===\"html\")return e;const t=e.assignedSlot||e.parentNode||ty(e)&&e.host||us(e);return ty(t)?t.host:t}function uE(e){const t=ho(e);return ea(t)?e.ownerDocument?e.ownerDocument.body:e.body:ss(t)&&ec(t)?t:uE(t)}function Ol(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const s=uE(e),o=s===((r=e.ownerDocument)==null?void 0:r.body),a=cr(s);if(o){const i=bp(a);return t.concat(a,a.visualViewport||[],ec(s)?s:[],i&&n?Ol(i):[])}return t.concat(s,Ol(s,[],n))}function bp(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function dE(e){const t=Nr(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const s=ss(e),o=s?e.offsetWidth:n,a=s?e.offsetHeight:r,i=Vu(n)!==o||Vu(r)!==a;return i&&(n=o,r=a),{width:n,height:r,$:i}}function Km(e){return Br(e)?e:e.contextElement}function $i(e){const t=Km(e);if(!ss(t))return Qr(1);const n=t.getBoundingClientRect(),{width:r,height:s,$:o}=dE(t);let a=(o?Vu(n.width):n.width)/r,i=(o?Vu(n.height):n.height)/s;return(!a||!Number.isFinite(a))&&(a=1),(!i||!Number.isFinite(i))&&(i=1),{x:a,y:i}}const UX=Qr(0);function fE(e){const t=cr(e);return!Wm()||!t.visualViewport?UX:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function qX(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==cr(e)?!1:t}function ti(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const s=e.getBoundingClientRect(),o=Km(e);let a=Qr(1);t&&(r?Br(r)&&(a=$i(r)):a=$i(e));const i=qX(o,n,r)?fE(o):Qr(0);let l=(s.left+i.x)/a.x,u=(s.top+i.y)/a.y,f=s.width/a.x,d=s.height/a.y;if(o){const h=cr(o),v=r&&Br(r)?cr(r):r;let b=h,p=bp(b);for(;p&&r&&v!==b;){const g=$i(p),m=p.getBoundingClientRect(),y=Nr(p),_=m.left+(p.clientLeft+parseFloat(y.paddingLeft))*g.x,w=m.top+(p.clientTop+parseFloat(y.paddingTop))*g.y;l*=g.x,u*=g.y,f*=g.x,d*=g.y,l+=_,u+=w,b=cr(p),p=bp(b)}}return Wu({width:f,height:d,x:l,y:u})}function jm(e,t){const n=Vd(e).scrollLeft;return t?t.left+n:ti(us(e)).left+n}function hE(e,t,n){n===void 0&&(n=!1);const r=e.getBoundingClientRect(),s=r.left+t.scrollLeft-(n?0:jm(e,r)),o=r.top+t.scrollTop;return{x:s,y:o}}function YX(e){let{elements:t,rect:n,offsetParent:r,strategy:s}=e;const o=s===\"fixed\",a=us(r),i=t?Hd(t.floating):!1;if(r===a||i&&o)return n;let l={scrollLeft:0,scrollTop:0},u=Qr(1);const f=Qr(0),d=ss(r);if((d||!d&&!o)&&((ga(r)!==\"body\"||ec(a))&&(l=Vd(r)),ss(r))){const v=ti(r);u=$i(r),f.x=v.x+r.clientLeft,f.y=v.y+r.clientTop}const h=a&&!d&&!o?hE(a,l,!0):Qr(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+f.x+h.x,y:n.y*u.y-l.scrollTop*u.y+f.y+h.y}}function GX(e){return Array.from(e.getClientRects())}function XX(e){const t=us(e),n=Vd(e),r=e.ownerDocument.body,s=jo(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),o=jo(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+jm(e);const i=-n.scrollTop;return Nr(r).direction===\"rtl\"&&(a+=jo(t.clientWidth,r.clientWidth)-s),{width:s,height:o,x:a,y:i}}function JX(e,t){const n=cr(e),r=us(e),s=n.visualViewport;let o=r.clientWidth,a=r.clientHeight,i=0,l=0;if(s){o=s.width,a=s.height;const u=Wm();(!u||u&&t===\"fixed\")&&(i=s.offsetLeft,l=s.offsetTop)}return{width:o,height:a,x:i,y:l}}function ZX(e,t){const n=ti(e,!0,t===\"fixed\"),r=n.top+e.clientTop,s=n.left+e.clientLeft,o=ss(e)?$i(e):Qr(1),a=e.clientWidth*o.x,i=e.clientHeight*o.y,l=s*o.x,u=r*o.y;return{width:a,height:i,x:l,y:u}}function ny(e,t,n){let r;if(t===\"viewport\")r=JX(e,n);else if(t===\"document\")r=XX(us(e));else if(Br(t))r=ZX(t,n);else{const s=fE(e);r={x:t.x-s.x,y:t.y-s.y,width:t.width,height:t.height}}return Wu(r)}function pE(e,t){const n=ho(e);return n===t||!Br(n)||ea(n)?!1:Nr(n).position===\"fixed\"||pE(n,t)}function QX(e,t){const n=t.get(e);if(n)return n;let r=Ol(e,[],!1).filter(i=>Br(i)&&ga(i)!==\"body\"),s=null;const o=Nr(e).position===\"fixed\";let a=o?ho(e):e;for(;Br(a)&&!ea(a);){const i=Nr(a),l=zm(a);!l&&i.position===\"fixed\"&&(s=null),(o?!l&&!s:!l&&i.position===\"static\"&&!!s&&[\"absolute\",\"fixed\"].includes(s.position)||ec(a)&&!l&&pE(e,a))?r=r.filter(f=>f!==a):s=i,a=ho(a)}return t.set(e,r),r}function eJ(e){let{element:t,boundary:n,rootBoundary:r,strategy:s}=e;const a=[...n===\"clippingAncestors\"?Hd(t)?[]:QX(t,this._c):[].concat(n),r],i=a[0],l=a.reduce((u,f)=>{const d=ny(t,f,s);return u.top=jo(d.top,u.top),u.right=Zi(d.right,u.right),u.bottom=Zi(d.bottom,u.bottom),u.left=jo(d.left,u.left),u},ny(t,i,s));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function tJ(e){const{width:t,height:n}=dE(e);return{width:t,height:n}}function nJ(e,t,n){const r=ss(t),s=us(t),o=n===\"fixed\",a=ti(e,!0,o,t);let i={scrollLeft:0,scrollTop:0};const l=Qr(0);if(r||!r&&!o)if((ga(t)!==\"body\"||ec(s))&&(i=Vd(t)),r){const h=ti(t,!0,o,t);l.x=h.x+t.clientLeft,l.y=h.y+t.clientTop}else s&&(l.x=jm(s));const u=s&&!r&&!o?hE(s,i):Qr(0),f=a.left+i.scrollLeft-l.x-u.x,d=a.top+i.scrollTop-l.y-u.y;return{x:f,y:d,width:a.width,height:a.height}}function Wf(e){return Nr(e).position===\"static\"}function ry(e,t){if(!ss(e)||Nr(e).position===\"fixed\")return null;if(t)return t(e);let n=e.offsetParent;return us(e)===n&&(n=n.ownerDocument.body),n}function vE(e,t){const n=cr(e);if(Hd(e))return n;if(!ss(e)){let s=ho(e);for(;s&&!ea(s);){if(Br(s)&&!Wf(s))return s;s=ho(s)}return n}let r=ry(e,t);for(;r&&KX(r)&&Wf(r);)r=ry(r,t);return r&&ea(r)&&Wf(r)&&!zm(r)?n:r||jX(e)||n}const rJ=async function(e){const t=this.getOffsetParent||vE,n=this.getDimensions,r=await n(e.floating);return{reference:nJ(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function sJ(e){return Nr(e).direction===\"rtl\"}const oJ={convertOffsetParentRelativeRectToViewportRelativeRect:YX,getDocumentElement:us,getClippingRect:eJ,getOffsetParent:vE,getElementRects:rJ,getClientRects:GX,getDimensions:tJ,getScale:$i,isElement:Br,isRTL:sJ};function iJ(e,t){let n=null,r;const s=us(e);function o(){var i;clearTimeout(r),(i=n)==null||i.disconnect(),n=null}function a(i,l){i===void 0&&(i=!1),l===void 0&&(l=1),o();const{left:u,top:f,width:d,height:h}=e.getBoundingClientRect();if(i||t(),!d||!h)return;const v=Rc(f),b=Rc(s.clientWidth-(u+d)),p=Rc(s.clientHeight-(f+h)),g=Rc(u),y={rootMargin:-v+\"px \"+-b+\"px \"+-p+\"px \"+-g+\"px\",threshold:jo(0,Zi(1,l))||1};let _=!0;function w(S){const C=S[0].intersectionRatio;if(C!==l){if(!_)return a();C?a(!1,C):r=setTimeout(()=>{a(!1,1e-7)},1e3)}_=!1}try{n=new IntersectionObserver(w,{...y,root:s.ownerDocument})}catch{n=new IntersectionObserver(w,y)}n.observe(e)}return a(!0),o}function aJ(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:s=!0,ancestorResize:o=!0,elementResize:a=typeof ResizeObserver==\"function\",layoutShift:i=typeof IntersectionObserver==\"function\",animationFrame:l=!1}=r,u=Km(e),f=s||o?[...u?Ol(u):[],...Ol(t)]:[];f.forEach(m=>{s&&m.addEventListener(\"scroll\",n,{passive:!0}),o&&m.addEventListener(\"resize\",n)});const d=u&&i?iJ(u,n):null;let h=-1,v=null;a&&(v=new ResizeObserver(m=>{let[y]=m;y&&y.target===u&&v&&(v.unobserve(t),cancelAnimationFrame(h),h=requestAnimationFrame(()=>{var _;(_=v)==null||_.observe(t)})),n()}),u&&!l&&v.observe(u),v.observe(t));let b,p=l?ti(e):null;l&&g();function g(){const m=ti(e);p&&(m.x!==p.x||m.y!==p.y||m.width!==p.width||m.height!==p.height)&&n(),p=m,b=requestAnimationFrame(g)}return n(),()=>{var m;f.forEach(y=>{s&&y.removeEventListener(\"scroll\",n),o&&y.removeEventListener(\"resize\",n)}),d==null||d(),(m=v)==null||m.disconnect(),v=null,l&&cancelAnimationFrame(b)}}const lJ=Vm,mE=zX,cJ=WX,uJ=HX,gE=FX,_E=(e,t,n)=>{const r=new Map,s={platform:oJ,...n},o={...s.platform,_c:r};return NX(e,t,{...s,platform:o})},dJ=xe({style:{type:ie([String,Object,Array]),default:()=>({})}}),fJ=ee({name:\"ElVisuallyHidden\"}),hJ=ee({...fJ,props:dJ,setup(e){const t=e,n=O(()=>[t.style,{position:\"absolute\",border:0,width:1,height:1,padding:0,margin:-1,overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",wordWrap:\"normal\"}]);return(r,s)=>($(),X(\"span\",ft(r.$attrs,{style:c(n)}),[ue(r.$slots,\"default\")],16))}});var pJ=Oe(hJ,[[\"__file\",\"visual-hidden.vue\"]]);xe({});const vJ=e=>{if(!bt)return;if(!e)return e;const t=Un(e);return t||(Ft(e)?t:e)},mJ=({middleware:e,placement:t,strategy:n})=>{const r=W(),s=W(),o=W(),a=W(),i=W({}),l={x:o,y:a,placement:t,strategy:n,middlewareData:i},u=async()=>{if(!bt)return;const f=vJ(r),d=Un(s);if(!f||!d)return;const h=await _E(f,d,{placement:c(t),strategy:c(n),middleware:c(e)});zi(l).forEach(v=>{l[v].value=h[v]})};return it(()=>{En(()=>{u()})}),{...l,update:u,referenceRef:r,contentRef:s}},gJ=({arrowRef:e,padding:t})=>({name:\"arrow\",options:{element:e,padding:t},fn(n){const r=c(e);return r?gE({element:r,padding:t}).fn(n):{}}}),_J=ee({name:\"ElTooltipV2Content\"}),bJ=ee({..._J,props:{...Dm,...sE},setup(e){const t=e,{triggerRef:n,contentId:r}=Fe(Nd),s=W(t.placement),o=W(t.strategy),a=W(null),{referenceRef:i,contentRef:l,middlewareData:u,x:f,y:d,update:h}=mJ({placement:s,strategy:o,middleware:O(()=>{const _=[mE(t.offset)];return t.showArrow&&_.push(gJ({arrowRef:a})),_})}),v=da().nextZIndex(),b=we(\"tooltip-v2\"),p=O(()=>s.value.split(\"-\")[0]),g=O(()=>({position:c(o),top:`${c(d)||0}px`,left:`${c(f)||0}px`,zIndex:v})),m=O(()=>{if(!t.showArrow)return{};const{arrow:_}=c(u);return{[`--${b.namespace.value}-tooltip-v2-arrow-x`]:`${_==null?void 0:_.x}px`||\"\",[`--${b.namespace.value}-tooltip-v2-arrow-y`]:`${_==null?void 0:_.y}px`||\"\"}}),y=O(()=>[b.e(\"content\"),b.is(\"dark\",t.effect===\"dark\"),b.is(c(o)),t.contentClass]);return ye(a,()=>h()),ye(()=>t.placement,_=>s.value=_),it(()=>{ye(()=>t.reference||n.value,_=>{i.value=_||void 0},{immediate:!0})}),pt(iE,{arrowRef:a}),(_,w)=>($(),X(\"div\",{ref_key:\"contentRef\",ref:l,style:Ue(c(g)),\"data-tooltip-v2-root\":\"\"},[_.nowrap?de(\"v-if\",!0):($(),X(\"div\",{key:0,\"data-side\":c(p),class:D(c(y))},[ue(_.$slots,\"default\",{contentStyle:c(g),contentClass:c(y)}),H(c(pJ),{id:c(r),role:\"tooltip\"},{default:q(()=>[_.ariaLabel?($(),X(We,{key:0},[Ve(Ee(_.ariaLabel),1)],64)):ue(_.$slots,\"default\",{key:1})]),_:3},8,[\"id\"]),ue(_.$slots,\"arrow\",{style:Ue(c(m)),side:c(p)})],10,[\"data-side\"]))],4))}});var sy=Oe(bJ,[[\"__file\",\"content.vue\"]]);const yJ=xe({setRef:{type:ie(Function),required:!0},onlyChild:Boolean});var wJ=ee({props:yJ,setup(e,{slots:t}){const n=W(),r=Ld(n,s=>{s?e.setRef(s.nextElementSibling):e.setRef(null)});return()=>{var s;const[o]=((s=t.default)==null?void 0:s.call(t))||[],a=e.onlyChild?Y5(o.children):o.children;return H(We,{ref:r},[a])}}});const SJ=ee({name:\"ElTooltipV2Trigger\"}),CJ=ee({...SJ,props:{...sE,...Nm},setup(e){const t=e,{onClose:n,onOpen:r,onDelayOpen:s,triggerRef:o,contentId:a}=Fe(Nd);let i=!1;const l=y=>{o.value=y},u=()=>{i=!1},f=Qt(t.onMouseEnter,s),d=Qt(t.onMouseLeave,n),h=Qt(t.onMouseDown,()=>{n(),i=!0,document.addEventListener(\"mouseup\",u,{once:!0})}),v=Qt(t.onFocus,()=>{i||r()}),b=Qt(t.onBlur,n),p=Qt(t.onClick,y=>{y.detail===0&&n()}),g={blur:b,click:p,focus:v,mousedown:h,mouseenter:f,mouseleave:d},m=(y,_,w)=>{y&&Object.entries(_).forEach(([S,C])=>{y[w](S,C)})};return ye(o,(y,_)=>{m(y,g,\"addEventListener\"),m(_,g,\"removeEventListener\"),y&&y.setAttribute(\"aria-describedby\",a.value)}),Pt(()=>{m(o.value,g,\"removeEventListener\"),document.removeEventListener(\"mouseup\",u)}),(y,_)=>y.nowrap?($(),ve(c(wJ),{key:0,\"set-ref\":l,\"only-child\":\"\"},{default:q(()=>[ue(y.$slots,\"default\")]),_:3})):($(),X(\"button\",ft({key:1,ref_key:\"triggerRef\",ref:o},y.$attrs),[ue(y.$slots,\"default\")],16))}});var kJ=Oe(CJ,[[\"__file\",\"trigger.vue\"]]);const EJ=ee({name:\"ElTooltipV2\"}),TJ=ee({...EJ,props:EX,setup(e){const n=hn(e),r=St(Or(n,Object.keys(Pm))),s=St(Or(n,Object.keys(Dm))),o=St(Or(n,Object.keys(Bm))),a=St(Or(n,Object.keys(Nm)));return(i,l)=>($(),ve(xX,xr(ro(o)),{default:q(({open:u})=>[H(kJ,ft(a,{nowrap:\"\"}),{default:q(()=>[ue(i.$slots,\"trigger\")]),_:3},16),H(c(pa),{to:i.to,disabled:!i.teleported},{default:q(()=>[i.fullTransition?($(),ve(_n,xr(ft({key:0},i.transitionProps)),{default:q(()=>[i.alwaysOn||u?($(),ve(sy,xr(ft({key:0},s)),{arrow:q(({style:f,side:d})=>[i.showArrow?($(),ve(Qb,ft({key:0},r,{style:f,side:d}),null,16,[\"style\",\"side\"])):de(\"v-if\",!0)]),default:q(()=>[ue(i.$slots,\"default\")]),_:3},16)):de(\"v-if\",!0)]),_:2},1040)):($(),X(We,{key:1},[i.alwaysOn||u?($(),ve(sy,xr(ft({key:0},s)),{arrow:q(({style:f,side:d})=>[i.showArrow?($(),ve(Qb,ft({key:0},r,{style:f,side:d}),null,16,[\"style\",\"side\"])):de(\"v-if\",!0)]),default:q(()=>[ue(i.$slots,\"default\")]),_:3},16)):de(\"v-if\",!0)],64))]),_:2},1032,[\"to\",\"disabled\"])]),_:3},16))}});var RJ=Oe(TJ,[[\"__file\",\"tooltip.vue\"]]);const xJ=Qe(RJ),bE=\"left-check-change\",yE=\"right-check-change\",yi=xe({data:{type:ie(Array),default:()=>[]},titles:{type:ie(Array),default:()=>[]},buttonTexts:{type:ie(Array),default:()=>[]},filterPlaceholder:String,filterMethod:{type:ie(Function)},leftDefaultChecked:{type:ie(Array),default:()=>[]},rightDefaultChecked:{type:ie(Array),default:()=>[]},renderContent:{type:ie(Function)},modelValue:{type:ie(Array),default:()=>[]},format:{type:ie(Object),default:()=>({})},filterable:Boolean,props:{type:ie(Object),default:()=>Yt({label:\"label\",key:\"key\",disabled:\"disabled\"})},targetOrder:{type:String,values:[\"original\",\"push\",\"unshift\"],default:\"original\"},validateEvent:{type:Boolean,default:!0}}),yp=(e,t)=>[e,t].every(ke)||ke(e)&&fn(t),OJ={[Bt]:(e,t,n)=>[e,n].every(ke)&&[\"left\",\"right\"].includes(t),[ot]:e=>ke(e),[bE]:yp,[yE]:yp},wp=\"checked-change\",MJ=xe({data:yi.data,optionRender:{type:ie(Function)},placeholder:String,title:String,filterable:Boolean,format:yi.format,filterMethod:yi.filterMethod,defaultChecked:yi.leftDefaultChecked,props:yi.props}),AJ={[wp]:yp},tc=e=>{const t={label:\"label\",key:\"key\",disabled:\"disabled\"};return O(()=>({...t,...e.props}))},$J=(e,t,n)=>{const r=tc(e),s=O(()=>e.data.filter(f=>Ke(e.filterMethod)?e.filterMethod(t.query,f):String(f[r.value.label]||f[r.value.key]).toLowerCase().includes(t.query.toLowerCase()))),o=O(()=>s.value.filter(f=>!f[r.value.disabled])),a=O(()=>{const f=t.checked.length,d=e.data.length,{noChecked:h,hasChecked:v}=e.format;return h&&v?f>0?v.replace(/\\${checked}/g,f.toString()).replace(/\\${total}/g,d.toString()):h.replace(/\\${total}/g,d.toString()):`${f}/${d}`}),i=O(()=>{const f=t.checked.length;return f>0&&f<o.value.length}),l=()=>{const f=o.value.map(d=>d[r.value.key]);t.allChecked=f.length>0&&f.every(d=>t.checked.includes(d))},u=f=>{t.checked=f?o.value.map(d=>d[r.value.key]):[]};return ye(()=>t.checked,(f,d)=>{if(l(),t.checkChangeByUser){const h=f.concat(d).filter(v=>!f.includes(v)||!d.includes(v));n(wp,f,h)}else n(wp,f),t.checkChangeByUser=!0}),ye(o,()=>{l()}),ye(()=>e.data,()=>{const f=[],d=s.value.map(h=>h[r.value.key]);t.checked.forEach(h=>{d.includes(h)&&f.push(h)}),t.checkChangeByUser=!1,t.checked=f}),ye(()=>e.defaultChecked,(f,d)=>{if(d&&f.length===d.length&&f.every(b=>d.includes(b)))return;const h=[],v=o.value.map(b=>b[r.value.key]);f.forEach(b=>{v.includes(b)&&h.push(b)}),t.checkChangeByUser=!1,t.checked=h},{immediate:!0}),{filteredData:s,checkableData:o,checkedSummary:a,isIndeterminate:i,updateAllChecked:l,handleAllCheckedChange:u}},LJ=ee({name:\"ElTransferPanel\"}),IJ=ee({...LJ,props:MJ,emits:AJ,setup(e,{expose:t,emit:n}){const r=e,s=an(),o=({option:_})=>_,{t:a}=yt(),i=we(\"transfer\"),l=St({checked:[],allChecked:!1,query:\"\",checkChangeByUser:!0}),u=tc(r),{filteredData:f,checkedSummary:d,isIndeterminate:h,handleAllCheckedChange:v}=$J(r,l,n),b=O(()=>!sr(l.query)&&sr(f.value)),p=O(()=>!sr(s.default()[0].children)),{checked:g,allChecked:m,query:y}=hn(l);return t({query:y}),(_,w)=>($(),X(\"div\",{class:D(c(i).b(\"panel\"))},[Z(\"p\",{class:D(c(i).be(\"panel\",\"header\"))},[H(c(Sr),{modelValue:c(m),\"onUpdate:modelValue\":S=>Ft(m)?m.value=S:null,indeterminate:c(h),\"validate-event\":!1,onChange:c(v)},{default:q(()=>[Ve(Ee(_.title)+\" \",1),Z(\"span\",null,Ee(c(d)),1)]),_:1},8,[\"modelValue\",\"onUpdate:modelValue\",\"indeterminate\",\"onChange\"])],2),Z(\"div\",{class:D([c(i).be(\"panel\",\"body\"),c(i).is(\"with-footer\",c(p))])},[_.filterable?($(),ve(c(yn),{key:0,modelValue:c(y),\"onUpdate:modelValue\":S=>Ft(y)?y.value=S:null,class:D(c(i).be(\"panel\",\"filter\")),size:\"default\",placeholder:_.placeholder,\"prefix-icon\":c(X6),clearable:\"\",\"validate-event\":!1},null,8,[\"modelValue\",\"onUpdate:modelValue\",\"class\",\"placeholder\",\"prefix-icon\"])):de(\"v-if\",!0),st(H(c(HC),{modelValue:c(g),\"onUpdate:modelValue\":S=>Ft(g)?g.value=S:null,\"validate-event\":!1,class:D([c(i).is(\"filterable\",_.filterable),c(i).be(\"panel\",\"list\")])},{default:q(()=>[($(!0),X(We,null,vt(c(f),S=>($(),ve(c(Sr),{key:S[c(u).key],class:D(c(i).be(\"panel\",\"item\")),value:S[c(u).key],disabled:S[c(u).disabled],\"validate-event\":!1},{default:q(()=>{var C;return[H(o,{option:(C=_.optionRender)==null?void 0:C.call(_,S)},null,8,[\"option\"])]}),_:2},1032,[\"class\",\"value\",\"disabled\"]))),128))]),_:1},8,[\"modelValue\",\"onUpdate:modelValue\",\"class\"]),[[Et,!c(b)&&!c(sr)(_.data)]]),st(Z(\"div\",{class:D(c(i).be(\"panel\",\"empty\"))},[ue(_.$slots,\"empty\",{},()=>[Ve(Ee(c(b)?c(a)(\"el.transfer.noMatch\"):c(a)(\"el.transfer.noData\")),1)])],2),[[Et,c(b)||c(sr)(_.data)]])],2),c(p)?($(),X(\"p\",{key:0,class:D(c(i).be(\"panel\",\"footer\"))},[ue(_.$slots,\"default\")],2)):de(\"v-if\",!0)],2))}});var oy=Oe(IJ,[[\"__file\",\"transfer-panel.vue\"]]);const PJ=e=>{const t=tc(e),n=O(()=>e.data.reduce((o,a)=>(o[a[t.value.key]]=a)&&o,{})),r=O(()=>e.data.filter(o=>!e.modelValue.includes(o[t.value.key]))),s=O(()=>e.targetOrder===\"original\"?e.data.filter(o=>e.modelValue.includes(o[t.value.key])):e.modelValue.reduce((o,a)=>{const i=n.value[a];return i&&o.push(i),o},[]));return{sourceData:r,targetData:s}},DJ=(e,t,n)=>{const r=tc(e),s=(i,l,u)=>{n(ot,i),n(Bt,i,l,u)};return{addToLeft:()=>{const i=e.modelValue.slice();t.rightChecked.forEach(l=>{const u=i.indexOf(l);u>-1&&i.splice(u,1)}),s(i,\"left\",t.rightChecked)},addToRight:()=>{let i=e.modelValue.slice();const l=e.data.filter(u=>{const f=u[r.value.key];return t.leftChecked.includes(f)&&!e.modelValue.includes(f)}).map(u=>u[r.value.key]);i=e.targetOrder===\"unshift\"?l.concat(i):i.concat(l),e.targetOrder===\"original\"&&(i=e.data.filter(u=>i.includes(u[r.value.key])).map(u=>u[r.value.key])),s(i,\"right\",t.leftChecked)}}},BJ=(e,t)=>({onSourceCheckedChange:(s,o)=>{e.leftChecked=s,o&&t(bE,s,o)},onTargetCheckedChange:(s,o)=>{e.rightChecked=s,o&&t(yE,s,o)}}),NJ=ee({name:\"ElTransfer\"}),FJ=ee({...NJ,props:yi,emits:OJ,setup(e,{expose:t,emit:n}){const r=e,s=an(),{t:o}=yt(),a=we(\"transfer\"),{formItem:i}=xn(),l=St({leftChecked:[],rightChecked:[]}),u=tc(r),{sourceData:f,targetData:d}=PJ(r),{onSourceCheckedChange:h,onTargetCheckedChange:v}=BJ(l,n),{addToLeft:b,addToRight:p}=DJ(r,l,n),g=W(),m=W(),y=k=>{switch(k){case\"left\":g.value.query=\"\";break;case\"right\":m.value.query=\"\";break}},_=O(()=>r.buttonTexts.length===2),w=O(()=>r.titles[0]||o(\"el.transfer.titles.0\")),S=O(()=>r.titles[1]||o(\"el.transfer.titles.1\")),C=O(()=>r.filterPlaceholder||o(\"el.transfer.filterPlaceholder\"));ye(()=>r.modelValue,()=>{var k;r.validateEvent&&((k=i==null?void 0:i.validate)==null||k.call(i,\"change\").catch(T=>void 0))});const E=O(()=>k=>{var T;if(r.renderContent)return r.renderContent(Ye,k);const x=(((T=s.default)==null?void 0:T.call(s,{option:k}))||[]).filter(M=>M.type!==vn);return x.length?x:Ye(\"span\",k[u.value.label]||k[u.value.key])});return t({clearQuery:y,leftPanel:g,rightPanel:m}),(k,T)=>($(),X(\"div\",{class:D(c(a).b())},[H(oy,{ref_key:\"leftPanel\",ref:g,data:c(f),\"option-render\":c(E),placeholder:c(C),title:c(w),filterable:k.filterable,format:k.format,\"filter-method\":k.filterMethod,\"default-checked\":k.leftDefaultChecked,props:r.props,onCheckedChange:c(h)},{empty:q(()=>[ue(k.$slots,\"left-empty\")]),default:q(()=>[ue(k.$slots,\"left-footer\")]),_:3},8,[\"data\",\"option-render\",\"placeholder\",\"title\",\"filterable\",\"format\",\"filter-method\",\"default-checked\",\"props\",\"onCheckedChange\"]),Z(\"div\",{class:D(c(a).e(\"buttons\"))},[H(c(cn),{type:\"primary\",class:D([c(a).e(\"button\"),c(a).is(\"with-texts\",c(_))]),disabled:c(sr)(l.rightChecked),onClick:c(b)},{default:q(()=>[H(c(He),null,{default:q(()=>[H(c(ao))]),_:1}),c(Lt)(k.buttonTexts[0])?de(\"v-if\",!0):($(),X(\"span\",{key:0},Ee(k.buttonTexts[0]),1))]),_:1},8,[\"class\",\"disabled\",\"onClick\"]),H(c(cn),{type:\"primary\",class:D([c(a).e(\"button\"),c(a).is(\"with-texts\",c(_))]),disabled:c(sr)(l.leftChecked),onClick:c(p)},{default:q(()=>[c(Lt)(k.buttonTexts[1])?de(\"v-if\",!0):($(),X(\"span\",{key:0},Ee(k.buttonTexts[1]),1)),H(c(He),null,{default:q(()=>[H(c(qn))]),_:1})]),_:1},8,[\"class\",\"disabled\",\"onClick\"])],2),H(oy,{ref_key:\"rightPanel\",ref:m,data:c(d),\"option-render\":c(E),placeholder:c(C),filterable:k.filterable,format:k.format,\"filter-method\":k.filterMethod,title:c(S),\"default-checked\":k.rightDefaultChecked,props:r.props,onCheckedChange:c(v)},{empty:q(()=>[ue(k.$slots,\"right-empty\")]),default:q(()=>[ue(k.$slots,\"right-footer\")]),_:3},8,[\"data\",\"option-render\",\"placeholder\",\"filterable\",\"format\",\"filter-method\",\"title\",\"default-checked\",\"props\",\"onCheckedChange\"])],2))}});var HJ=Oe(FJ,[[\"__file\",\"transfer.vue\"]]);const VJ=Qe(HJ),Li=\"$treeNodeId\",iy=function(e,t){!t||t[Li]||Object.defineProperty(t,Li,{value:e.id,enumerable:!1,configurable:!1,writable:!1})},Um=function(e,t){return e?t[e]:t[Li]},Sp=(e,t,n)=>{const r=e.value.currentNode;n();const s=e.value.currentNode;r!==s&&t(\"current-change\",s?s.data:null,s)},Cp=e=>{let t=!0,n=!0,r=!0;for(let s=0,o=e.length;s<o;s++){const a=e[s];(a.checked!==!0||a.indeterminate)&&(t=!1,a.disabled||(r=!1)),(a.checked!==!1||a.indeterminate)&&(n=!1)}return{all:t,none:n,allWithoutDisable:r,half:!t&&!n}},Ia=function(e){if(e.childNodes.length===0||e.loading)return;const{all:t,none:n,half:r}=Cp(e.childNodes);t?(e.checked=!0,e.indeterminate=!1):r?(e.checked=!1,e.indeterminate=!0):n&&(e.checked=!1,e.indeterminate=!1);const s=e.parent;!s||s.level===0||e.store.checkStrictly||Ia(s)},xc=function(e,t){const n=e.store.props,r=e.data||{},s=n[t];if(Ke(s))return s(r,e);if(ze(s))return r[s];if(Lt(s)){const o=r[t];return o===void 0?\"\":o}};let zJ=0,kp=class au{constructor(t){this.id=zJ++,this.text=null,this.checked=!1,this.indeterminate=!1,this.data=null,this.expanded=!1,this.parent=null,this.visible=!0,this.isCurrent=!1,this.canFocus=!1;for(const n in t)kt(t,n)&&(this[n]=t[n]);this.level=0,this.loaded=!1,this.childNodes=[],this.loading=!1,this.parent&&(this.level=this.parent.level+1)}initialize(){const t=this.store;if(!t)throw new Error(\"[Node]store is required!\");t.registerNode(this);const n=t.props;if(n&&typeof n.isLeaf<\"u\"){const o=xc(this,\"isLeaf\");Vt(o)&&(this.isLeafByUser=o)}if(t.lazy!==!0&&this.data?(this.setData(this.data),t.defaultExpandAll&&(this.expanded=!0,this.canFocus=!0)):this.level>0&&t.lazy&&t.defaultExpandAll&&!this.isLeafByUser&&this.expand(),ke(this.data)||iy(this,this.data),!this.data)return;const r=t.defaultExpandedKeys,s=t.key;s&&r&&r.includes(this.key)&&this.expand(null,t.autoExpandParent),s&&t.currentNodeKey!==void 0&&this.key===t.currentNodeKey&&(t.currentNode=this,t.currentNode.isCurrent=!0),t.lazy&&t._initDefaultCheckedNode(this),this.updateLeafState(),this.parent&&(this.level===1||this.parent.expanded===!0)&&(this.canFocus=!0)}setData(t){ke(t)||iy(this,t),this.data=t,this.childNodes=[];let n;this.level===0&&ke(this.data)?n=this.data:n=xc(this,\"children\")||[];for(let r=0,s=n.length;r<s;r++)this.insertChild({data:n[r]})}get label(){return xc(this,\"label\")}get key(){const t=this.store.key;return this.data?this.data[t]:null}get disabled(){return xc(this,\"disabled\")}get nextSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return t.childNodes[n+1]}return null}get previousSibling(){const t=this.parent;if(t){const n=t.childNodes.indexOf(this);if(n>-1)return n>0?t.childNodes[n-1]:null}return null}contains(t,n=!0){return(this.childNodes||[]).some(r=>r===t||n&&r.contains(t))}remove(){const t=this.parent;t&&t.removeChild(this)}insertChild(t,n,r){if(!t)throw new Error(\"InsertChild error: child is required.\");if(!(t instanceof au)){if(!r){const s=this.getChildren(!0);s.includes(t.data)||(Lt(n)||n<0?s.push(t.data):s.splice(n,0,t.data))}Object.assign(t,{parent:this,store:this.store}),t=St(new au(t)),t instanceof au&&t.initialize()}t.level=this.level+1,Lt(n)||n<0?this.childNodes.push(t):this.childNodes.splice(n,0,t),this.updateLeafState()}insertBefore(t,n){let r;n&&(r=this.childNodes.indexOf(n)),this.insertChild(t,r)}insertAfter(t,n){let r;n&&(r=this.childNodes.indexOf(n),r!==-1&&(r+=1)),this.insertChild(t,r)}removeChild(t){const n=this.getChildren()||[],r=n.indexOf(t.data);r>-1&&n.splice(r,1);const s=this.childNodes.indexOf(t);s>-1&&(this.store&&this.store.deregisterNode(t),t.parent=null,this.childNodes.splice(s,1)),this.updateLeafState()}removeChildByData(t){let n=null;for(let r=0;r<this.childNodes.length;r++)if(this.childNodes[r].data===t){n=this.childNodes[r];break}n&&this.removeChild(n)}expand(t,n){const r=()=>{if(n){let s=this.parent;for(;s.level>0;)s.expanded=!0,s=s.parent}this.expanded=!0,t&&t(),this.childNodes.forEach(s=>{s.canFocus=!0})};this.shouldLoadData()?this.loadData(s=>{ke(s)&&(this.checked?this.setChecked(!0,!0):this.store.checkStrictly||Ia(this),r())}):r()}doCreateChildren(t,n={}){t.forEach(r=>{this.insertChild(Object.assign({data:r},n),void 0,!0)})}collapse(){this.expanded=!1,this.childNodes.forEach(t=>{t.canFocus=!1})}shouldLoadData(){return this.store.lazy===!0&&this.store.load&&!this.loaded}updateLeafState(){if(this.store.lazy===!0&&this.loaded!==!0&&typeof this.isLeafByUser<\"u\"){this.isLeaf=this.isLeafByUser;return}const t=this.childNodes;if(!this.store.lazy||this.store.lazy===!0&&this.loaded===!0){this.isLeaf=!t||t.length===0;return}this.isLeaf=!1}setChecked(t,n,r,s){if(this.indeterminate=t===\"half\",this.checked=t===!0,this.store.checkStrictly)return;if(!(this.shouldLoadData()&&!this.store.checkDescendants)){const{all:a,allWithoutDisable:i}=Cp(this.childNodes);!this.isLeaf&&!a&&i&&(this.checked=!1,t=!1);const l=()=>{if(n){const u=this.childNodes;for(let h=0,v=u.length;h<v;h++){const b=u[h];s=s||t!==!1;const p=b.disabled?b.checked:s;b.setChecked(p,n,!0,s)}const{half:f,all:d}=Cp(u);d||(this.checked=d,this.indeterminate=f)}};if(this.shouldLoadData()){this.loadData(()=>{l(),Ia(this)},{checked:t!==!1});return}else l()}const o=this.parent;!o||o.level===0||r||Ia(o)}getChildren(t=!1){if(this.level===0)return this.data;const n=this.data;if(!n)return null;const r=this.store.props;let s=\"children\";return r&&(s=r.children||\"children\"),n[s]===void 0&&(n[s]=null),t&&!n[s]&&(n[s]=[]),n[s]}updateChildren(){const t=this.getChildren()||[],n=this.childNodes.map(o=>o.data),r={},s=[];t.forEach((o,a)=>{const i=o[Li];!!i&&n.findIndex(u=>u[Li]===i)>=0?r[i]={index:a,data:o}:s.push({index:a,data:o})}),this.store.lazy||n.forEach(o=>{r[o[Li]]||this.removeChildByData(o)}),s.forEach(({index:o,data:a})=>{this.insertChild({data:a},o)}),this.updateLeafState()}loadData(t,n={}){if(this.store.lazy===!0&&this.store.load&&!this.loaded&&(!this.loading||Object.keys(n).length)){this.loading=!0;const r=o=>{this.childNodes=[],this.doCreateChildren(o,n),this.loaded=!0,this.loading=!1,this.updateLeafState(),t&&t.call(this,o)},s=()=>{this.loading=!1};this.store.load(this,r,s)}else t&&t.call(this)}eachNode(t){const n=[this];for(;n.length;){const r=n.shift();n.unshift(...r.childNodes),t(r)}}reInitChecked(){this.store.checkStrictly||Ia(this)}};class WJ{constructor(t){this.currentNode=null,this.currentNodeKey=null;for(const n in t)kt(t,n)&&(this[n]=t[n]);this.nodesMap={}}initialize(){if(this.root=new kp({data:this.data,store:this}),this.root.initialize(),this.lazy&&this.load){const t=this.load;t(this.root,n=>{this.root.doCreateChildren(n),this._initDefaultCheckedNodes()})}else this._initDefaultCheckedNodes()}filter(t){const n=this.filterNodeMethod,r=this.lazy,s=function(o){const a=o.root?o.root.childNodes:o.childNodes;if(a.forEach(i=>{i.visible=n.call(i,t,i.data,i),s(i)}),!o.visible&&a.length){let i=!0;i=!a.some(l=>l.visible),o.root?o.root.visible=i===!1:o.visible=i===!1}t&&o.visible&&!o.isLeaf&&(!r||o.loaded)&&o.expand()};s(this)}setData(t){t!==this.root.data?(this.nodesMap={},this.root.setData(t),this._initDefaultCheckedNodes(),this.setCurrentNodeKey(this.currentNodeKey)):this.root.updateChildren()}getNode(t){if(t instanceof kp)return t;const n=lt(t)?Um(this.key,t):t;return this.nodesMap[n]||null}insertBefore(t,n){const r=this.getNode(n);r.parent.insertBefore({data:t},r)}insertAfter(t,n){const r=this.getNode(n);r.parent.insertAfter({data:t},r)}remove(t){const n=this.getNode(t);n&&n.parent&&(n===this.currentNode&&(this.currentNode=null),n.parent.removeChild(n))}append(t,n){const r=Xo(n)?this.root:this.getNode(n);r&&r.insertChild({data:t})}_initDefaultCheckedNodes(){const t=this.defaultCheckedKeys||[],n=this.nodesMap;t.forEach(r=>{const s=n[r];s&&s.setChecked(!0,!this.checkStrictly)})}_initDefaultCheckedNode(t){(this.defaultCheckedKeys||[]).includes(t.key)&&t.setChecked(!0,!this.checkStrictly)}setDefaultCheckedKey(t){t!==this.defaultCheckedKeys&&(this.defaultCheckedKeys=t,this._initDefaultCheckedNodes())}registerNode(t){const n=this.key;!t||!t.data||(n?t.key!==void 0&&(this.nodesMap[t.key]=t):this.nodesMap[t.id]=t)}deregisterNode(t){!this.key||!t||!t.data||(t.childNodes.forEach(r=>{this.deregisterNode(r)}),delete this.nodesMap[t.key])}getCheckedNodes(t=!1,n=!1){const r=[],s=function(o){(o.root?o.root.childNodes:o.childNodes).forEach(i=>{(i.checked||n&&i.indeterminate)&&(!t||t&&i.isLeaf)&&r.push(i.data),s(i)})};return s(this),r}getCheckedKeys(t=!1){return this.getCheckedNodes(t).map(n=>(n||{})[this.key])}getHalfCheckedNodes(){const t=[],n=function(r){(r.root?r.root.childNodes:r.childNodes).forEach(o=>{o.indeterminate&&t.push(o.data),n(o)})};return n(this),t}getHalfCheckedKeys(){return this.getHalfCheckedNodes().map(t=>(t||{})[this.key])}_getAllNodes(){const t=[],n=this.nodesMap;for(const r in n)kt(n,r)&&t.push(n[r]);return t}updateChildren(t,n){const r=this.nodesMap[t];if(!r)return;const s=r.childNodes;for(let o=s.length-1;o>=0;o--){const a=s[o];this.remove(a.data)}for(let o=0,a=n.length;o<a;o++){const i=n[o];this.append(i,r.data)}}_setCheckedKeys(t,n=!1,r){const s=this._getAllNodes().sort((l,u)=>l.level-u.level),o=Object.create(null),a=Object.keys(r);s.forEach(l=>l.setChecked(!1,!1));const i=l=>{l.childNodes.forEach(u=>{var f;o[u.data[t]]=!0,(f=u.childNodes)!=null&&f.length&&i(u)})};for(let l=0,u=s.length;l<u;l++){const f=s[l],d=f.data[t].toString();if(!a.includes(d)){f.checked&&!o[d]&&f.setChecked(!1,!1);continue}if(f.childNodes.length&&i(f),f.isLeaf||this.checkStrictly){f.setChecked(!0,!1);continue}if(f.setChecked(!0,!0),n){f.setChecked(!1,!1);const v=function(b){b.childNodes.forEach(g=>{g.isLeaf||g.setChecked(!1,!1),v(g)})};v(f)}}}setCheckedNodes(t,n=!1){const r=this.key,s={};t.forEach(o=>{s[(o||{})[r]]=!0}),this._setCheckedKeys(r,n,s)}setCheckedKeys(t,n=!1){this.defaultCheckedKeys=t;const r=this.key,s={};t.forEach(o=>{s[o]=!0}),this._setCheckedKeys(r,n,s)}setDefaultExpandedKeys(t){t=t||[],this.defaultExpandedKeys=t,t.forEach(n=>{const r=this.getNode(n);r&&r.expand(null,this.autoExpandParent)})}setChecked(t,n,r){const s=this.getNode(t);s&&s.setChecked(!!n,r)}getCurrentNode(){return this.currentNode}setCurrentNode(t){const n=this.currentNode;n&&(n.isCurrent=!1),this.currentNode=t,this.currentNode.isCurrent=!0}setUserCurrentNode(t,n=!0){const r=t[this.key],s=this.nodesMap[r];this.setCurrentNode(s),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0)}setCurrentNodeKey(t,n=!0){if(this.currentNodeKey=t,t==null){this.currentNode&&(this.currentNode.isCurrent=!1),this.currentNode=null;return}const r=this.getNode(t);r&&(this.setCurrentNode(r),n&&this.currentNode.level>1&&this.currentNode.parent.expand(null,!0))}}const KJ=ee({name:\"ElTreeNodeContent\",props:{node:{type:Object,required:!0},renderContent:Function},setup(e){const t=we(\"tree\"),n=Fe(\"NodeInstance\"),r=Fe(\"RootTree\");return()=>{const s=e.node,{data:o,store:a}=s;return e.renderContent?e.renderContent(Ye,{_self:n,node:s,data:o,store:a}):ue(r.ctx.slots,\"default\",{node:s,data:o},()=>[Ye(\"span\",{class:t.be(\"node\",\"label\")},[s.label])])}}});var jJ=Oe(KJ,[[\"__file\",\"tree-node-content.vue\"]]);function wE(e){const t=Fe(\"TreeNodeMap\",null),n={treeNodeExpand:r=>{e.node!==r&&e.node.collapse()},children:[]};return t&&t.children.push(n),pt(\"TreeNodeMap\",n),{broadcastExpanded:r=>{if(e.accordion)for(const s of n.children)s.treeNodeExpand(r)}}}const SE=Symbol(\"dragEvents\");function UJ({props:e,ctx:t,el$:n,dropIndicator$:r,store:s}){const o=we(\"tree\"),a=W({showDropIndicator:!1,draggingNode:null,dropNode:null,allowDrop:!0,dropType:null});return pt(SE,{treeNodeDragStart:({event:f,treeNode:d})=>{if(Ke(e.allowDrag)&&!e.allowDrag(d.node))return f.preventDefault(),!1;f.dataTransfer.effectAllowed=\"move\";try{f.dataTransfer.setData(\"text/plain\",\"\")}catch{}a.value.draggingNode=d,t.emit(\"node-drag-start\",d.node,f)},treeNodeDragOver:({event:f,treeNode:d})=>{const h=d,v=a.value.dropNode;v&&v.node.id!==h.node.id&&Bn(v.$el,o.is(\"drop-inner\"));const b=a.value.draggingNode;if(!b||!h)return;let p=!0,g=!0,m=!0,y=!0;Ke(e.allowDrop)&&(p=e.allowDrop(b.node,h.node,\"prev\"),y=g=e.allowDrop(b.node,h.node,\"inner\"),m=e.allowDrop(b.node,h.node,\"next\")),f.dataTransfer.dropEffect=g||p||m?\"move\":\"none\",(p||g||m)&&(v==null?void 0:v.node.id)!==h.node.id&&(v&&t.emit(\"node-drag-leave\",b.node,v.node,f),t.emit(\"node-drag-enter\",b.node,h.node,f)),p||g||m?a.value.dropNode=h:a.value.dropNode=null,h.node.nextSibling===b.node&&(m=!1),h.node.previousSibling===b.node&&(p=!1),h.node.contains(b.node,!1)&&(g=!1),(b.node===h.node||b.node.contains(h.node))&&(p=!1,g=!1,m=!1);const _=h.$el.querySelector(`.${o.be(\"node\",\"content\")}`).getBoundingClientRect(),w=n.value.getBoundingClientRect();let S;const C=p?g?.25:m?.45:1:-1,E=m?g?.75:p?.55:0:1;let k=-9999;const T=f.clientY-_.top;T<_.height*C?S=\"before\":T>_.height*E?S=\"after\":g?S=\"inner\":S=\"none\";const x=h.$el.querySelector(`.${o.be(\"node\",\"expand-icon\")}`).getBoundingClientRect(),M=r.value;S===\"before\"?k=x.top-w.top:S===\"after\"&&(k=x.bottom-w.top),M.style.top=`${k}px`,M.style.left=`${x.right-w.left}px`,S===\"inner\"?pr(h.$el,o.is(\"drop-inner\")):Bn(h.$el,o.is(\"drop-inner\")),a.value.showDropIndicator=S===\"before\"||S===\"after\",a.value.allowDrop=a.value.showDropIndicator||y,a.value.dropType=S,t.emit(\"node-drag-over\",b.node,h.node,f)},treeNodeDragEnd:f=>{const{draggingNode:d,dropType:h,dropNode:v}=a.value;if(f.preventDefault(),f.dataTransfer&&(f.dataTransfer.dropEffect=\"move\"),d&&v){const b={data:d.node.data};h!==\"none\"&&d.node.remove(),h===\"before\"?v.node.parent.insertBefore(b,v.node):h===\"after\"?v.node.parent.insertAfter(b,v.node):h===\"inner\"&&v.node.insertChild(b),h!==\"none\"&&(s.value.registerNode(b),s.value.key&&d.node.eachNode(p=>{var g;(g=s.value.nodesMap[p.data[s.value.key]])==null||g.setChecked(p.checked,!s.value.checkStrictly)})),Bn(v.$el,o.is(\"drop-inner\")),t.emit(\"node-drag-end\",d.node,v.node,h,f),h!==\"none\"&&t.emit(\"node-drop\",d.node,v.node,h,f)}d&&!v&&t.emit(\"node-drag-end\",d.node,null,h,f),a.value.showDropIndicator=!1,a.value.draggingNode=null,a.value.dropNode=null,a.value.allowDrop=!0}}),{dragState:a}}const qJ=ee({name:\"ElTreeNode\",components:{ElCollapseTransition:Ad,ElCheckbox:Sr,NodeContent:jJ,ElIcon:He,Loading:ts},props:{node:{type:kp,default:()=>({})},props:{type:Object,default:()=>({})},accordion:Boolean,renderContent:Function,renderAfterExpand:Boolean,showCheckbox:{type:Boolean,default:!1}},emits:[\"node-expand\"],setup(e,t){const n=we(\"tree\"),{broadcastExpanded:r}=wE(e),s=Fe(\"RootTree\"),o=W(!1),a=W(!1),i=W(null),l=W(null),u=W(null),f=Fe(SE),d=ct();pt(\"NodeInstance\",d),e.node.expanded&&(o.value=!0,a.value=!0);const h=s.props.props.children||\"children\";ye(()=>{const T=e.node.data[h];return T&&[...T]},()=>{e.node.updateChildren()}),ye(()=>e.node.indeterminate,T=>{p(e.node.checked,T)}),ye(()=>e.node.checked,T=>{p(T,e.node.indeterminate)}),ye(()=>e.node.childNodes.length,()=>e.node.reInitChecked()),ye(()=>e.node.expanded,T=>{je(()=>o.value=T),T&&(a.value=!0)});const v=T=>Um(s.props.nodeKey,T.data),b=T=>{const x=e.props.class;if(!x)return{};let M;if(Ke(x)){const{data:A}=T;M=x(A,T)}else M=x;return ze(M)?{[M]:!0}:M},p=(T,x)=>{(i.value!==T||l.value!==x)&&s.ctx.emit(\"check-change\",e.node.data,T,x),i.value=T,l.value=x},g=T=>{Sp(s.store,s.ctx.emit,()=>{var x;if((x=s==null?void 0:s.props)==null?void 0:x.nodeKey){const A=v(e.node);s.store.value.setCurrentNodeKey(A)}else s.store.value.setCurrentNode(e.node)}),s.currentNode.value=e.node,s.props.expandOnClickNode&&y(),s.props.checkOnClickNode&&!e.node.disabled&&_(null,{target:{checked:!e.node.checked}}),s.ctx.emit(\"node-click\",e.node.data,e.node,d,T)},m=T=>{s.instance.vnode.props.onNodeContextmenu&&(T.stopPropagation(),T.preventDefault()),s.ctx.emit(\"node-contextmenu\",T,e.node.data,e.node,d)},y=()=>{e.node.isLeaf||(o.value?(s.ctx.emit(\"node-collapse\",e.node.data,e.node,d),e.node.collapse()):e.node.expand(()=>{t.emit(\"node-expand\",e.node.data,e.node,d)}))},_=(T,x)=>{e.node.setChecked(x.target.checked,!s.props.checkStrictly),je(()=>{const M=s.store.value;s.ctx.emit(\"check\",e.node.data,{checkedNodes:M.getCheckedNodes(),checkedKeys:M.getCheckedKeys(),halfCheckedNodes:M.getHalfCheckedNodes(),halfCheckedKeys:M.getHalfCheckedKeys()})})};return{ns:n,node$:u,tree:s,expanded:o,childNodeRendered:a,oldChecked:i,oldIndeterminate:l,getNodeKey:v,getNodeClass:b,handleSelectChange:p,handleClick:g,handleContextMenu:m,handleExpandIconClick:y,handleCheckChange:_,handleChildNodeExpand:(T,x,M)=>{r(x),s.ctx.emit(\"node-expand\",T,x,M)},handleDragStart:T=>{s.props.draggable&&f.treeNodeDragStart({event:T,treeNode:e})},handleDragOver:T=>{T.preventDefault(),s.props.draggable&&f.treeNodeDragOver({event:T,treeNode:{$el:u.value,node:e.node}})},handleDrop:T=>{T.preventDefault()},handleDragEnd:T=>{s.props.draggable&&f.treeNodeDragEnd(T)},CaretRight:zS}}});function YJ(e,t,n,r,s,o){const a=ut(\"el-icon\"),i=ut(\"el-checkbox\"),l=ut(\"loading\"),u=ut(\"node-content\"),f=ut(\"el-tree-node\"),d=ut(\"el-collapse-transition\");return st(($(),X(\"div\",{ref:\"node$\",class:D([e.ns.b(\"node\"),e.ns.is(\"expanded\",e.expanded),e.ns.is(\"current\",e.node.isCurrent),e.ns.is(\"hidden\",!e.node.visible),e.ns.is(\"focusable\",!e.node.disabled),e.ns.is(\"checked\",!e.node.disabled&&e.node.checked),e.getNodeClass(e.node)]),role:\"treeitem\",tabindex:\"-1\",\"aria-expanded\":e.expanded,\"aria-disabled\":e.node.disabled,\"aria-checked\":e.node.checked,draggable:e.tree.props.draggable,\"data-key\":e.getNodeKey(e.node),onClick:Xe(e.handleClick,[\"stop\"]),onContextmenu:e.handleContextMenu,onDragstart:Xe(e.handleDragStart,[\"stop\"]),onDragover:Xe(e.handleDragOver,[\"stop\"]),onDragend:Xe(e.handleDragEnd,[\"stop\"]),onDrop:Xe(e.handleDrop,[\"stop\"])},[Z(\"div\",{class:D(e.ns.be(\"node\",\"content\")),style:Ue({paddingLeft:(e.node.level-1)*e.tree.props.indent+\"px\"})},[e.tree.props.icon||e.CaretRight?($(),ve(a,{key:0,class:D([e.ns.be(\"node\",\"expand-icon\"),e.ns.is(\"leaf\",e.node.isLeaf),{expanded:!e.node.isLeaf&&e.expanded}]),onClick:Xe(e.handleExpandIconClick,[\"stop\"])},{default:q(()=>[($(),ve(dt(e.tree.props.icon||e.CaretRight)))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0),e.showCheckbox?($(),ve(i,{key:1,\"model-value\":e.node.checked,indeterminate:e.node.indeterminate,disabled:!!e.node.disabled,onClick:Xe(()=>{},[\"stop\"]),onChange:e.handleCheckChange},null,8,[\"model-value\",\"indeterminate\",\"disabled\",\"onClick\",\"onChange\"])):de(\"v-if\",!0),e.node.loading?($(),ve(a,{key:2,class:D([e.ns.be(\"node\",\"loading-icon\"),e.ns.is(\"loading\")])},{default:q(()=>[H(l)]),_:1},8,[\"class\"])):de(\"v-if\",!0),H(u,{node:e.node,\"render-content\":e.renderContent},null,8,[\"node\",\"render-content\"])],6),H(d,null,{default:q(()=>[!e.renderAfterExpand||e.childNodeRendered?st(($(),X(\"div\",{key:0,class:D(e.ns.be(\"node\",\"children\")),role:\"group\",\"aria-expanded\":e.expanded},[($(!0),X(We,null,vt(e.node.childNodes,h=>($(),ve(f,{key:e.getNodeKey(h),\"render-content\":e.renderContent,\"render-after-expand\":e.renderAfterExpand,\"show-checkbox\":e.showCheckbox,node:h,accordion:e.accordion,props:e.props,onNodeExpand:e.handleChildNodeExpand},null,8,[\"render-content\",\"render-after-expand\",\"show-checkbox\",\"node\",\"accordion\",\"props\",\"onNodeExpand\"]))),128))],10,[\"aria-expanded\"])),[[Et,e.expanded]]):de(\"v-if\",!0)]),_:1})],42,[\"aria-expanded\",\"aria-disabled\",\"aria-checked\",\"draggable\",\"data-key\",\"onClick\",\"onContextmenu\",\"onDragstart\",\"onDragover\",\"onDragend\",\"onDrop\"])),[[Et,e.node.visible]])}var GJ=Oe(qJ,[[\"render\",YJ],[\"__file\",\"tree-node.vue\"]]);function XJ({el$:e},t){const n=we(\"tree\"),r=Wt([]),s=Wt([]);it(()=>{a()}),os(()=>{r.value=Array.from(e.value.querySelectorAll(\"[role=treeitem]\")),s.value=Array.from(e.value.querySelectorAll(\"input[type=checkbox]\"))}),ye(s,i=>{i.forEach(l=>{l.setAttribute(\"tabindex\",\"-1\")})}),It(e,\"keydown\",i=>{const l=i.target;if(!l.className.includes(n.b(\"node\")))return;const u=i.code;r.value=Array.from(e.value.querySelectorAll(`.${n.is(\"focusable\")}[role=treeitem]`));const f=r.value.indexOf(l);let d;if([Ne.up,Ne.down].includes(u)){if(i.preventDefault(),u===Ne.up){d=f===-1?0:f!==0?f-1:r.value.length-1;const v=d;for(;!t.value.getNode(r.value[d].dataset.key).canFocus;){if(d--,d===v){d=-1;break}d<0&&(d=r.value.length-1)}}else{d=f===-1?0:f<r.value.length-1?f+1:0;const v=d;for(;!t.value.getNode(r.value[d].dataset.key).canFocus;){if(d++,d===v){d=-1;break}d>=r.value.length&&(d=0)}}d!==-1&&r.value[d].focus()}[Ne.left,Ne.right].includes(u)&&(i.preventDefault(),l.click());const h=l.querySelector('[type=\"checkbox\"]');[Ne.enter,Ne.numpadEnter,Ne.space].includes(u)&&h&&(i.preventDefault(),h.click())});const a=()=>{var i;r.value=Array.from(e.value.querySelectorAll(`.${n.is(\"focusable\")}[role=treeitem]`)),s.value=Array.from(e.value.querySelectorAll(\"input[type=checkbox]\"));const l=e.value.querySelectorAll(`.${n.is(\"checked\")}[role=treeitem]`);if(l.length){l[0].setAttribute(\"tabindex\",\"0\");return}(i=r.value[0])==null||i.setAttribute(\"tabindex\",\"0\")}}const JJ=ee({name:\"ElTree\",components:{ElTreeNode:GJ},props:{data:{type:Array,default:()=>[]},emptyText:{type:String},renderAfterExpand:{type:Boolean,default:!0},nodeKey:String,checkStrictly:Boolean,defaultExpandAll:Boolean,expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:Boolean,checkDescendants:{type:Boolean,default:!1},autoExpandParent:{type:Boolean,default:!0},defaultCheckedKeys:Array,defaultExpandedKeys:Array,currentNodeKey:[String,Number],renderContent:Function,showCheckbox:{type:Boolean,default:!1},draggable:{type:Boolean,default:!1},allowDrag:Function,allowDrop:Function,props:{type:Object,default:()=>({children:\"children\",label:\"label\",disabled:\"disabled\"})},lazy:{type:Boolean,default:!1},highlightCurrent:Boolean,load:Function,filterNodeMethod:Function,accordion:Boolean,indent:{type:Number,default:18},icon:{type:Nt}},emits:[\"check-change\",\"current-change\",\"node-click\",\"node-contextmenu\",\"node-collapse\",\"node-expand\",\"check\",\"node-drag-start\",\"node-drag-end\",\"node-drop\",\"node-drag-leave\",\"node-drag-enter\",\"node-drag-over\"],setup(e,t){const{t:n}=yt(),r=we(\"tree\"),s=Fe(ma,null),o=W(new WJ({key:e.nodeKey,data:e.data,lazy:e.lazy,props:e.props,load:e.load,currentNodeKey:e.currentNodeKey,checkStrictly:e.checkStrictly,checkDescendants:e.checkDescendants,defaultCheckedKeys:e.defaultCheckedKeys,defaultExpandedKeys:e.defaultExpandedKeys,autoExpandParent:e.autoExpandParent,defaultExpandAll:e.defaultExpandAll,filterNodeMethod:e.filterNodeMethod}));o.value.initialize();const a=W(o.value.root),i=W(null),l=W(null),u=W(null),{broadcastExpanded:f}=wE(e),{dragState:d}=UJ({props:e,ctx:t,el$:l,dropIndicator$:u,store:o});XJ({el$:l},o);const h=O(()=>{const{childNodes:F}=a.value,R=s?s.hasFilteredOptions!==0:!1;return(!F||F.length===0||F.every(({visible:B})=>!B))&&!R});ye(()=>e.currentNodeKey,F=>{o.value.setCurrentNodeKey(F)}),ye(()=>e.defaultCheckedKeys,F=>{o.value.setDefaultCheckedKey(F)}),ye(()=>e.defaultExpandedKeys,F=>{o.value.setDefaultExpandedKeys(F)}),ye(()=>e.data,F=>{o.value.setData(F)},{deep:!0}),ye(()=>e.checkStrictly,F=>{o.value.checkStrictly=F});const v=F=>{if(!e.filterNodeMethod)throw new Error(\"[Tree] filterNodeMethod is required when filter\");o.value.filter(F)},b=F=>Um(e.nodeKey,F.data),p=F=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in getNodePath\");const R=o.value.getNode(F);if(!R)return[];const B=[R.data];let N=R.parent;for(;N&&N!==a.value;)B.push(N.data),N=N.parent;return B.reverse()},g=(F,R)=>o.value.getCheckedNodes(F,R),m=F=>o.value.getCheckedKeys(F),y=()=>{const F=o.value.getCurrentNode();return F?F.data:null},_=()=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in getCurrentKey\");const F=y();return F?F[e.nodeKey]:null},w=(F,R)=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCheckedNodes\");o.value.setCheckedNodes(F,R)},S=(F,R)=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCheckedKeys\");o.value.setCheckedKeys(F,R)},C=(F,R,B)=>{o.value.setChecked(F,R,B)},E=()=>o.value.getHalfCheckedNodes(),k=()=>o.value.getHalfCheckedKeys(),T=(F,R=!0)=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCurrentNode\");Sp(o,t.emit,()=>{f(F),o.value.setUserCurrentNode(F,R)})},x=(F,R=!0)=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in setCurrentKey\");Sp(o,t.emit,()=>{f(),o.value.setCurrentNodeKey(F,R)})},M=F=>o.value.getNode(F),A=F=>{o.value.remove(F)},P=(F,R)=>{o.value.append(F,R)},G=(F,R)=>{o.value.insertBefore(F,R)},V=(F,R)=>{o.value.insertAfter(F,R)},I=(F,R,B)=>{f(R),t.emit(\"node-expand\",F,R,B)},j=(F,R)=>{if(!e.nodeKey)throw new Error(\"[Tree] nodeKey is required in updateKeyChild\");o.value.updateChildren(F,R)};return pt(\"RootTree\",{ctx:t,props:e,store:o,root:a,currentNode:i,instance:ct()}),pt(ns,void 0),{ns:r,store:o,root:a,currentNode:i,dragState:d,el$:l,dropIndicator$:u,isEmpty:h,filter:v,getNodeKey:b,getNodePath:p,getCheckedNodes:g,getCheckedKeys:m,getCurrentNode:y,getCurrentKey:_,setCheckedNodes:w,setCheckedKeys:S,setChecked:C,getHalfCheckedNodes:E,getHalfCheckedKeys:k,setCurrentNode:T,setCurrentKey:x,t:n,getNode:M,remove:A,append:P,insertBefore:G,insertAfter:V,handleNodeExpand:I,updateKeyChildren:j}}});function ZJ(e,t,n,r,s,o){const a=ut(\"el-tree-node\");return $(),X(\"div\",{ref:\"el$\",class:D([e.ns.b(),e.ns.is(\"dragging\",!!e.dragState.draggingNode),e.ns.is(\"drop-not-allow\",!e.dragState.allowDrop),e.ns.is(\"drop-inner\",e.dragState.dropType===\"inner\"),{[e.ns.m(\"highlight-current\")]:e.highlightCurrent}]),role:\"tree\"},[($(!0),X(We,null,vt(e.root.childNodes,i=>($(),ve(a,{key:e.getNodeKey(i),node:i,props:e.props,accordion:e.accordion,\"render-after-expand\":e.renderAfterExpand,\"show-checkbox\":e.showCheckbox,\"render-content\":e.renderContent,onNodeExpand:e.handleNodeExpand},null,8,[\"node\",\"props\",\"accordion\",\"render-after-expand\",\"show-checkbox\",\"render-content\",\"onNodeExpand\"]))),128)),e.isEmpty?($(),X(\"div\",{key:0,class:D(e.ns.e(\"empty-block\"))},[ue(e.$slots,\"empty\",{},()=>{var i;return[Z(\"span\",{class:D(e.ns.e(\"empty-text\"))},Ee((i=e.emptyText)!=null?i:e.t(\"el.tree.emptyText\")),3)]})],2)):de(\"v-if\",!0),st(Z(\"div\",{ref:\"dropIndicator$\",class:D(e.ns.e(\"drop-indicator\"))},null,2),[[Et,e.dragState.showDropIndicator]])],2)}var QJ=Oe(JJ,[[\"render\",ZJ],[\"__file\",\"tree.vue\"]]);const Ku=Qe(QJ),eZ=(e,{attrs:t,emit:n},{select:r,tree:s,key:o})=>{const a=we(\"tree-select\");return ye(()=>e.data,()=>{e.filterable&&je(()=>{var l,u;(u=s.value)==null||u.filter((l=r.value)==null?void 0:l.states.inputValue)})},{flush:\"post\"}),{...Or(hn(e),Object.keys(fo.props)),...t,\"onUpdate:modelValue\":l=>n(ot,l),valueKey:o,popperClass:O(()=>{const l=[a.e(\"popper\")];return e.popperClass&&l.push(e.popperClass),l.join(\" \")}),filterMethod:(l=\"\")=>{var u;e.filterMethod?e.filterMethod(l):e.remoteMethod?e.remoteMethod(l):(u=s.value)==null||u.filter(l)}}},tZ=ee({extends:wl,setup(e,t){const n=wl.setup(e,t);delete n.selectOptionClick;const r=ct().proxy;return je(()=>{n.select.states.cachedOptions.get(r.value)||n.select.onOptionCreate(r)}),ye(()=>t.attrs.visible,s=>{n.states.visible=s},{immediate:!0}),n},methods:{selectOptionClick(){this.$el.parentElement.click()}}});function Ep(e){return e||e===0}function qm(e){return ke(e)&&e.length}function pi(e){return ke(e)?e:Ep(e)?[e]:[]}function lu(e,t,n,r,s){for(let o=0;o<e.length;o++){const a=e[o];if(t(a,o,e,s))return r?r(a,o,e,s):a;{const i=n(a);if(qm(i)){const l=lu(i,t,n,r,a);if(l)return l}}}}function cu(e,t,n,r){for(let s=0;s<e.length;s++){const o=e[s];t(o,s,e,r);const a=n(o);qm(a)&&cu(a,t,n,o)}}const nZ=(e,{attrs:t,slots:n,emit:r},{select:s,tree:o,key:a})=>{ye(()=>e.modelValue,()=>{e.showCheckbox&&je(()=>{const h=o.value;h&&!wn(h.getCheckedKeys(),pi(e.modelValue))&&h.setCheckedKeys(pi(e.modelValue))})},{immediate:!0,deep:!0});const i=O(()=>({value:a.value,label:\"label\",children:\"children\",disabled:\"disabled\",isLeaf:\"isLeaf\",...e.props})),l=(h,v)=>{var b;const p=i.value[h];return Ke(p)?p(v,(b=o.value)==null?void 0:b.getNode(l(\"value\",v))):v[p]},u=pi(e.modelValue).map(h=>lu(e.data||[],v=>l(\"value\",v)===h,v=>l(\"children\",v),(v,b,p,g)=>g&&l(\"value\",g))).filter(h=>Ep(h)),f=O(()=>{if(!e.renderAfterExpand&&!e.lazy)return[];const h=[];return cu(e.data.concat(e.cacheData),v=>{const b=l(\"value\",v);h.push({value:b,currentLabel:l(\"label\",v),isDisabled:l(\"disabled\",v)})},v=>l(\"children\",v)),h}),d=()=>{var h;return(h=o.value)==null?void 0:h.getCheckedKeys().filter(v=>{var b;const p=(b=o.value)==null?void 0:b.getNode(v);return!fn(p)&&sr(p.childNodes)})};return{...Or(hn(e),Object.keys(Ku.props)),...t,nodeKey:a,expandOnClickNode:O(()=>!e.checkStrictly&&e.expandOnClickNode),defaultExpandedKeys:O(()=>e.defaultExpandedKeys?e.defaultExpandedKeys.concat(u):u),renderContent:(h,{node:v,data:b,store:p})=>h(tZ,{value:l(\"value\",b),label:l(\"label\",b),disabled:l(\"disabled\",b),visible:v.visible},e.renderContent?()=>e.renderContent(h,{node:v,data:b,store:p}):n.default?()=>n.default({node:v,data:b,store:p}):void 0),filterNodeMethod:(h,v,b)=>e.filterNodeMethod?e.filterNodeMethod(h,v,b):h?new RegExp(tm(h),\"i\").test(l(\"label\",v)||\"\"):!0,onNodeClick:(h,v,b)=>{var p,g,m,y;if((p=t.onNodeClick)==null||p.call(t,h,v,b),!(e.showCheckbox&&e.checkOnClickNode)){if(!e.showCheckbox&&(e.checkStrictly||v.isLeaf)){if(!l(\"disabled\",h)){const _=(g=s.value)==null?void 0:g.states.options.get(l(\"value\",h));(m=s.value)==null||m.handleOptionSelect(_)}}else e.expandOnClickNode&&b.proxy.handleExpandIconClick();(y=s.value)==null||y.focus()}},onCheck:(h,v)=>{var b;if(!e.showCheckbox)return;const p=l(\"value\",h),g={};cu([o.value.store.root],w=>g[w.key]=w,w=>w.childNodes);const m=v.checkedKeys,y=e.multiple?pi(e.modelValue).filter(w=>!(w in g)&&!m.includes(w)):[],_=y.concat(m);if(e.checkStrictly)r(ot,e.multiple?_:_.includes(p)?p:void 0);else if(e.multiple){const w=d();r(ot,y.concat(w))}else{const w=lu([h],E=>!qm(l(\"children\",E))&&!l(\"disabled\",E),E=>l(\"children\",E)),S=w?l(\"value\",w):void 0,C=Ep(e.modelValue)&&!!lu([h],E=>l(\"value\",E)===e.modelValue,E=>l(\"children\",E));r(ot,S===e.modelValue||C?void 0:S)}je(()=>{var w;const S=pi(e.modelValue);o.value.setCheckedKeys(S),(w=t.onCheck)==null||w.call(t,h,{checkedKeys:o.value.getCheckedKeys(),checkedNodes:o.value.getCheckedNodes(),halfCheckedKeys:o.value.getHalfCheckedKeys(),halfCheckedNodes:o.value.getHalfCheckedNodes()})}),(b=s.value)==null||b.focus()},onNodeExpand:(h,v,b)=>{var p;(p=t.onNodeExpand)==null||p.call(t,h,v,b),je(()=>{if(!e.checkStrictly&&e.lazy&&e.multiple&&v.checked){const g={},m=o.value.getCheckedKeys();cu([o.value.store.root],w=>g[w.key]=w,w=>w.childNodes);const y=pi(e.modelValue).filter(w=>!(w in g)&&!m.includes(w)),_=d();r(ot,y.concat(_))}})},cacheOptions:f}};var rZ=ee({props:{data:{type:Array,default:()=>[]}},setup(e){const t=Fe(ma);return ye(()=>e.data,()=>{var n;e.data.forEach(s=>{t.states.cachedOptions.has(s.value)||t.states.cachedOptions.set(s.value,s)});const r=((n=t.selectRef)==null?void 0:n.querySelectorAll(\"input\"))||[];bt&&!Array.from(r).includes(document.activeElement)&&t.setSelected()},{flush:\"post\",immediate:!0}),()=>{}}});const sZ=ee({name:\"ElTreeSelect\",inheritAttrs:!1,props:{...fo.props,...Ku.props,cacheData:{type:Array,default:()=>[]}},setup(e,t){const{slots:n,expose:r}=t,s=W(),o=W(),a=O(()=>e.nodeKey||e.valueKey||\"value\"),i=eZ(e,t,{select:s,tree:o,key:a}),{cacheOptions:l,...u}=nZ(e,t,{select:s,tree:o,key:a}),f=St({});return r(f),it(()=>{Object.assign(f,{...Or(o.value,[\"filter\",\"updateKeyChildren\",\"getCheckedNodes\",\"setCheckedNodes\",\"getCheckedKeys\",\"setCheckedKeys\",\"setChecked\",\"getHalfCheckedNodes\",\"getHalfCheckedKeys\",\"getCurrentKey\",\"getCurrentNode\",\"setCurrentKey\",\"setCurrentNode\",\"getNode\",\"remove\",\"append\",\"insertBefore\",\"insertAfter\"]),...Or(s.value,[\"focus\",\"blur\",\"selectedLabel\"])})}),()=>Ye(fo,St({...i,ref:d=>s.value=d}),{...n,default:()=>[Ye(rZ,{data:l.value}),Ye(Ku,St({...u,ref:d=>o.value=d}))]})}});var oZ=Oe(sZ,[[\"__file\",\"tree-select.vue\"]]);const iZ=Qe(oZ),Ym=Symbol(),aZ={key:-1,level:-1,data:{}};var Pa=(e=>(e.KEY=\"id\",e.LABEL=\"label\",e.CHILDREN=\"children\",e.DISABLED=\"disabled\",e.CLASS=\"\",e))(Pa||{}),Tp=(e=>(e.ADD=\"add\",e.DELETE=\"delete\",e))(Tp||{});const CE={type:Number,default:26},lZ=xe({data:{type:ie(Array),default:()=>Yt([])},emptyText:{type:String},height:{type:Number,default:200},props:{type:ie(Object),default:()=>Yt({children:\"children\",label:\"label\",disabled:\"disabled\",value:\"id\",class:\"\"})},highlightCurrent:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},defaultCheckedKeys:{type:ie(Array),default:()=>Yt([])},checkStrictly:{type:Boolean,default:!1},defaultExpandedKeys:{type:ie(Array),default:()=>Yt([])},indent:{type:Number,default:16},itemSize:CE,icon:{type:Nt},expandOnClickNode:{type:Boolean,default:!0},checkOnClickNode:{type:Boolean,default:!1},currentNodeKey:{type:ie([String,Number])},accordion:{type:Boolean,default:!1},filterMethod:{type:ie(Function)},perfMode:{type:Boolean,default:!0}}),cZ=xe({node:{type:ie(Object),default:()=>Yt(aZ)},expanded:{type:Boolean,default:!1},checked:{type:Boolean,default:!1},indeterminate:{type:Boolean,default:!1},showCheckbox:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},current:{type:Boolean,default:!1},hiddenExpandIcon:{type:Boolean,default:!1},itemSize:CE}),uZ=xe({node:{type:ie(Object),required:!0}}),kE=\"node-click\",EE=\"node-drop\",TE=\"node-expand\",RE=\"node-collapse\",xE=\"current-change\",OE=\"check\",ME=\"check-change\",AE=\"node-contextmenu\",dZ={[kE]:(e,t,n)=>e&&t&&n,[EE]:(e,t,n)=>e&&t&&n,[TE]:(e,t)=>e&&t,[RE]:(e,t)=>e&&t,[xE]:(e,t)=>e&&t,[OE]:(e,t)=>e&&t,[ME]:(e,t)=>e&&Vt(t),[AE]:(e,t,n)=>e&&t&&n},fZ={click:(e,t)=>!!(e&&t),drop:(e,t)=>!!(e&&t),toggle:e=>!!e,check:(e,t)=>e&&Vt(t)};function hZ(e,t){const n=W(new Set),r=W(new Set),{emit:s}=ct();ye([()=>t.value,()=>e.defaultCheckedKeys],()=>je(()=>{y(e.defaultCheckedKeys)}),{immediate:!0});const o=()=>{if(!t.value||!e.showCheckbox||e.checkStrictly)return;const{levelTreeNodeMap:_,maxLevel:w}=t.value,S=n.value,C=new Set;for(let E=w-1;E>=1;--E){const k=_.get(E);k&&k.forEach(T=>{const x=T.children;if(x){let M=!0,A=!1;for(const P of x){const G=P.key;if(S.has(G))A=!0;else if(C.has(G)){M=!1,A=!0;break}else M=!1}M?S.add(T.key):A?(C.add(T.key),S.delete(T.key)):(S.delete(T.key),C.delete(T.key))}})}r.value=C},a=_=>n.value.has(_.key),i=_=>r.value.has(_.key),l=(_,w,S=!0,C=!0)=>{const E=n.value,k=(T,x)=>{E[x?Tp.ADD:Tp.DELETE](T.key);const M=T.children;!e.checkStrictly&&M&&M.forEach(A=>{A.disabled||k(A,x)})};k(_,w),C&&o(),S&&u(_,w)},u=(_,w)=>{const{checkedNodes:S,checkedKeys:C}=b(),{halfCheckedNodes:E,halfCheckedKeys:k}=p();s(OE,_.data,{checkedKeys:C,checkedNodes:S,halfCheckedKeys:k,halfCheckedNodes:E}),s(ME,_.data,w)};function f(_=!1){return b(_).checkedKeys}function d(_=!1){return b(_).checkedNodes}function h(){return p().halfCheckedKeys}function v(){return p().halfCheckedNodes}function b(_=!1){const w=[],S=[];if(t!=null&&t.value&&e.showCheckbox){const{treeNodeMap:C}=t.value;n.value.forEach(E=>{const k=C.get(E);k&&(!_||_&&k.isLeaf)&&(S.push(E),w.push(k.data))})}return{checkedKeys:S,checkedNodes:w}}function p(){const _=[],w=[];if(t!=null&&t.value&&e.showCheckbox){const{treeNodeMap:S}=t.value;r.value.forEach(C=>{const E=S.get(C);E&&(w.push(C),_.push(E.data))})}return{halfCheckedNodes:_,halfCheckedKeys:w}}function g(_){n.value.clear(),r.value.clear(),je(()=>{y(_)})}function m(_,w){if(t!=null&&t.value&&e.showCheckbox){const S=t.value.treeNodeMap.get(_);S&&l(S,w,!1)}}function y(_){if(t!=null&&t.value){const{treeNodeMap:w}=t.value;if(e.showCheckbox&&w&&(_==null?void 0:_.length)>0){for(const S of _){const C=w.get(S);C&&!a(C)&&l(C,!0,!1,!1)}o()}}}return{updateCheckedKeys:o,toggleCheckbox:l,isChecked:a,isIndeterminate:i,getCheckedKeys:f,getCheckedNodes:d,getHalfCheckedKeys:h,getHalfCheckedNodes:v,setChecked:m,setCheckedKeys:g}}function pZ(e,t){const n=W(new Set([])),r=W(new Set([])),s=O(()=>Ke(e.filterMethod));function o(i){var l;if(!s.value)return;const u=new Set,f=r.value,d=n.value,h=[],v=((l=t.value)==null?void 0:l.treeNodes)||[],b=e.filterMethod;d.clear();function p(g){g.forEach(m=>{h.push(m),b!=null&&b(i,m.data,m)?h.forEach(_=>{u.add(_.key)}):m.isLeaf&&d.add(m.key);const y=m.children;if(y&&p(y),!m.isLeaf){if(!u.has(m.key))d.add(m.key);else if(y){let _=!0;for(const w of y)if(!d.has(w.key)){_=!1;break}_?f.add(m.key):f.delete(m.key)}}h.pop()})}return p(v),u}function a(i){return r.value.has(i.key)}return{hiddenExpandIconKeySet:r,hiddenNodeKeySet:n,doFilter:o,isForceHiddenExpandIcon:a}}function vZ(e,t){const n=W(new Set(e.defaultExpandedKeys)),r=W(),s=Wt(),o=W();ye(()=>e.currentNodeKey,Y=>{r.value=Y},{immediate:!0}),ye(()=>e.data,Y=>{z(Y)},{immediate:!0});const{isIndeterminate:a,isChecked:i,toggleCheckbox:l,getCheckedKeys:u,getCheckedNodes:f,getHalfCheckedKeys:d,getHalfCheckedNodes:h,setChecked:v,setCheckedKeys:b}=hZ(e,s),{doFilter:p,hiddenNodeKeySet:g,isForceHiddenExpandIcon:m}=pZ(e,s),y=O(()=>{var Y;return((Y=e.props)==null?void 0:Y.value)||Pa.KEY}),_=O(()=>{var Y;return((Y=e.props)==null?void 0:Y.children)||Pa.CHILDREN}),w=O(()=>{var Y;return((Y=e.props)==null?void 0:Y.disabled)||Pa.DISABLED}),S=O(()=>{var Y;return((Y=e.props)==null?void 0:Y.label)||Pa.LABEL}),C=O(()=>{var Y;const L=n.value,Q=g.value,se=[],ge=((Y=s.value)==null?void 0:Y.treeNodes)||[],ae=[];for(let _e=ge.length-1;_e>=0;--_e)ae.push(ge[_e]);for(;ae.length;){const _e=ae.pop();if(!Q.has(_e.key)&&(se.push(_e),_e.children&&L.has(_e.key)))for(let me=_e.children.length-1;me>=0;--me)ae.push(_e.children[me])}return se}),E=O(()=>C.value.length>0);function k(Y){const L=new Map,Q=new Map;let se=1;function ge(_e,me=1,Ce=void 0){var Te;const Se=[];for(const Ie of _e){const be=M(Ie),Ae={level:me,key:be,data:Ie};Ae.label=P(Ie),Ae.parent=Ce;const qe=x(Ie);Ae.disabled=A(Ie),Ae.isLeaf=!qe||qe.length===0,qe&&qe.length&&(Ae.children=ge(qe,me+1,Ae)),Se.push(Ae),L.set(be,Ae),Q.has(me)||Q.set(me,[]),(Te=Q.get(me))==null||Te.push(Ae)}return me>se&&(se=me),Se}const ae=ge(Y);return{treeNodeMap:L,levelTreeNodeMap:Q,maxLevel:se,treeNodes:ae}}function T(Y){const L=p(Y);L&&(n.value=L)}function x(Y){return Y[_.value]}function M(Y){return Y?Y[y.value]:\"\"}function A(Y){return Y[w.value]}function P(Y){return Y[S.value]}function G(Y){n.value.has(Y.key)?N(Y):B(Y)}function V(Y){const L=new Set,Q=s.value.treeNodeMap;Y.forEach(se=>{let ge=Q.get(se);for(;ge&&!L.has(ge.key);)L.add(ge.key),ge=ge.parent}),n.value=L}function I(Y,L){t(kE,Y.data,Y,L),F(Y),e.expandOnClickNode&&G(Y),e.showCheckbox&&e.checkOnClickNode&&!Y.disabled&&l(Y,!i(Y),!0)}function j(Y,L){t(EE,Y.data,Y,L)}function F(Y){re(Y)||(r.value=Y.key,t(xE,Y.data,Y))}function R(Y,L){l(Y,L)}function B(Y){const L=n.value;if(s.value&&e.accordion){const{treeNodeMap:Q}=s.value;L.forEach(se=>{const ge=Q.get(se);Y&&Y.level===(ge==null?void 0:ge.level)&&L.delete(se)})}L.add(Y.key),t(TE,Y.data,Y)}function N(Y){n.value.delete(Y.key),t(RE,Y.data,Y)}function U(Y){return n.value.has(Y.key)}function J(Y){return!!Y.disabled}function re(Y){const L=r.value;return L!==void 0&&L===Y.key}function le(){var Y,L;if(r.value)return(L=(Y=s.value)==null?void 0:Y.treeNodeMap.get(r.value))==null?void 0:L.data}function pe(){return r.value}function K(Y){r.value=Y}function z(Y){je(()=>s.value=k(Y))}function te(Y){var L;const Q=lt(Y)?M(Y):Y;return(L=s.value)==null?void 0:L.treeNodeMap.get(Q)}function oe(Y,L=\"auto\"){const Q=te(Y);Q&&o.value&&o.value.scrollToItem(C.value.indexOf(Q),L)}function he(Y){var L;(L=o.value)==null||L.scrollTo(Y)}return{tree:s,flattenTree:C,isNotEmpty:E,listRef:o,getKey:M,getChildren:x,toggleExpand:G,toggleCheckbox:l,isExpanded:U,isChecked:i,isIndeterminate:a,isDisabled:J,isCurrent:re,isForceHiddenExpandIcon:m,handleNodeClick:I,handleNodeDrop:j,handleNodeCheck:R,getCurrentNode:le,getCurrentKey:pe,setCurrentKey:K,getCheckedKeys:u,getCheckedNodes:f,getHalfCheckedKeys:d,getHalfCheckedNodes:h,setChecked:v,setCheckedKeys:b,filter:T,setData:z,getNode:te,expandNode:B,collapseNode:N,setExpandedKeys:V,scrollToNode:oe,scrollTo:he}}var mZ=ee({name:\"ElTreeNodeContent\",props:uZ,setup(e){const t=Fe(Ym),n=we(\"tree\");return()=>{const r=e.node,{data:s}=r;return t!=null&&t.ctx.slots.default?t.ctx.slots.default({node:r,data:s}):Ye(\"span\",{class:n.be(\"node\",\"label\")},[r==null?void 0:r.label])}}});const gZ=ee({name:\"ElTreeNode\"}),_Z=ee({...gZ,props:cZ,emits:fZ,setup(e,{emit:t}){const n=e,r=Fe(Ym),s=we(\"tree\"),o=O(()=>{var v;return(v=r==null?void 0:r.props.indent)!=null?v:16}),a=O(()=>{var v;return(v=r==null?void 0:r.props.icon)!=null?v:zS}),i=v=>{const b=r==null?void 0:r.props.props.class;if(!b)return{};let p;if(Ke(b)){const{data:g}=v;p=b(g,v)}else p=b;return ze(p)?{[p]:!0}:p},l=v=>{t(\"click\",n.node,v)},u=v=>{t(\"drop\",n.node,v)},f=()=>{t(\"toggle\",n.node)},d=v=>{t(\"check\",n.node,v)},h=v=>{var b,p,g,m;(g=(p=(b=r==null?void 0:r.instance)==null?void 0:b.vnode)==null?void 0:p.props)!=null&&g.onNodeContextmenu&&(v.stopPropagation(),v.preventDefault()),r==null||r.ctx.emit(AE,v,(m=n.node)==null?void 0:m.data,n.node)};return(v,b)=>{var p,g,m;return $(),X(\"div\",{ref:\"node$\",class:D([c(s).b(\"node\"),c(s).is(\"expanded\",v.expanded),c(s).is(\"current\",v.current),c(s).is(\"focusable\",!v.disabled),c(s).is(\"checked\",!v.disabled&&v.checked),i(v.node)]),role:\"treeitem\",tabindex:\"-1\",\"aria-expanded\":v.expanded,\"aria-disabled\":v.disabled,\"aria-checked\":v.checked,\"data-key\":(p=v.node)==null?void 0:p.key,onClick:Xe(l,[\"stop\"]),onContextmenu:h,onDragover:Xe(()=>{},[\"prevent\"]),onDragenter:Xe(()=>{},[\"prevent\"]),onDrop:Xe(u,[\"stop\"])},[Z(\"div\",{class:D(c(s).be(\"node\",\"content\")),style:Ue({paddingLeft:`${(v.node.level-1)*c(o)}px`,height:v.itemSize+\"px\"})},[c(a)?($(),ve(c(He),{key:0,class:D([c(s).is(\"leaf\",!!((g=v.node)!=null&&g.isLeaf)),c(s).is(\"hidden\",v.hiddenExpandIcon),{expanded:!((m=v.node)!=null&&m.isLeaf)&&v.expanded},c(s).be(\"node\",\"expand-icon\")]),onClick:Xe(f,[\"stop\"])},{default:q(()=>[($(),ve(dt(c(a))))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0),v.showCheckbox?($(),ve(c(Sr),{key:1,\"model-value\":v.checked,indeterminate:v.indeterminate,disabled:v.disabled,onChange:d,onClick:Xe(()=>{},[\"stop\"])},null,8,[\"model-value\",\"indeterminate\",\"disabled\",\"onClick\"])):de(\"v-if\",!0),H(c(mZ),{node:v.node},null,8,[\"node\"])],6)],42,[\"aria-expanded\",\"aria-disabled\",\"aria-checked\",\"data-key\",\"onClick\",\"onDragover\",\"onDragenter\",\"onDrop\"])}}});var bZ=Oe(_Z,[[\"__file\",\"tree-node.vue\"]]);const yZ=ee({name:\"ElTreeV2\"}),wZ=ee({...yZ,props:lZ,emits:dZ,setup(e,{expose:t,emit:n}){const r=e,s=an(),o=O(()=>r.itemSize);pt(Ym,{ctx:{emit:n,slots:s},props:r,instance:ct()}),pt(ns,void 0);const{t:a}=yt(),i=we(\"tree\"),{flattenTree:l,isNotEmpty:u,listRef:f,toggleExpand:d,isExpanded:h,isIndeterminate:v,isChecked:b,isDisabled:p,isCurrent:g,isForceHiddenExpandIcon:m,handleNodeClick:y,handleNodeDrop:_,handleNodeCheck:w,toggleCheckbox:S,getCurrentNode:C,getCurrentKey:E,setCurrentKey:k,getCheckedKeys:T,getCheckedNodes:x,getHalfCheckedKeys:M,getHalfCheckedNodes:A,setChecked:P,setCheckedKeys:G,filter:V,setData:I,getNode:j,expandNode:F,collapseNode:R,setExpandedKeys:B,scrollToNode:N,scrollTo:U}=vZ(r,n);return t({toggleCheckbox:S,getCurrentNode:C,getCurrentKey:E,setCurrentKey:k,getCheckedKeys:T,getCheckedNodes:x,getHalfCheckedKeys:M,getHalfCheckedNodes:A,setChecked:P,setCheckedKeys:G,filter:V,setData:I,getNode:j,expandNode:F,collapseNode:R,setExpandedKeys:B,scrollToNode:N,scrollTo:U}),(J,re)=>($(),X(\"div\",{class:D([c(i).b(),{[c(i).m(\"highlight-current\")]:J.highlightCurrent}]),role:\"tree\"},[c(u)?($(),ve(c(ck),{key:0,ref_key:\"listRef\",ref:f,\"class-name\":c(i).b(\"virtual-list\"),data:c(l),total:c(l).length,height:J.height,\"item-size\":c(o),\"perf-mode\":J.perfMode},{default:q(({data:le,index:pe,style:K})=>[($(),ve(bZ,{key:le[pe].key,style:Ue(K),node:le[pe],expanded:c(h)(le[pe]),\"show-checkbox\":J.showCheckbox,checked:c(b)(le[pe]),indeterminate:c(v)(le[pe]),\"item-size\":c(o),disabled:c(p)(le[pe]),current:c(g)(le[pe]),\"hidden-expand-icon\":c(m)(le[pe]),onClick:c(y),onToggle:c(d),onCheck:c(w),onDrop:c(_)},null,8,[\"style\",\"node\",\"expanded\",\"show-checkbox\",\"checked\",\"indeterminate\",\"item-size\",\"disabled\",\"current\",\"hidden-expand-icon\",\"onClick\",\"onToggle\",\"onCheck\",\"onDrop\"]))]),_:1},8,[\"class-name\",\"data\",\"total\",\"height\",\"item-size\",\"perf-mode\"])):($(),X(\"div\",{key:1,class:D(c(i).e(\"empty-block\"))},[ue(J.$slots,\"empty\",{},()=>{var le;return[Z(\"span\",{class:D(c(i).e(\"empty-text\"))},Ee((le=J.emptyText)!=null?le:c(a)(\"el.tree.emptyText\")),3)]})],2))],2))}});var SZ=Oe(wZ,[[\"__file\",\"tree.vue\"]]);const CZ=Qe(SZ),$E=Symbol(\"uploadContextKey\"),kZ=\"ElUpload\";class EZ extends Error{constructor(t,n,r,s){super(t),this.name=\"UploadAjaxError\",this.status=n,this.method=r,this.url=s}}function ay(e,t,n){let r;return n.response?r=`${n.response.error||n.response}`:n.responseText?r=`${n.responseText}`:r=`fail to ${t.method} ${e} ${n.status}`,new EZ(r,n.status,t.method,e)}function TZ(e){const t=e.responseText||e.response;if(!t)return t;try{return JSON.parse(t)}catch{return t}}const RZ=e=>{typeof XMLHttpRequest>\"u\"&&dn(kZ,\"XMLHttpRequest is undefined\");const t=new XMLHttpRequest,n=e.action;t.upload&&t.upload.addEventListener(\"progress\",o=>{const a=o;a.percent=o.total>0?o.loaded/o.total*100:0,e.onProgress(a)});const r=new FormData;if(e.data)for(const[o,a]of Object.entries(e.data))ke(a)&&a.length?r.append(o,...a):r.append(o,a);r.append(e.filename,e.file,e.file.name),t.addEventListener(\"error\",()=>{e.onError(ay(n,e,t))}),t.addEventListener(\"load\",()=>{if(t.status<200||t.status>=300)return e.onError(ay(n,e,t));e.onSuccess(TZ(t))}),t.open(e.method,n,!0),e.withCredentials&&\"withCredentials\"in t&&(t.withCredentials=!0);const s=e.headers||{};if(s instanceof Headers)s.forEach((o,a)=>t.setRequestHeader(a,o));else for(const[o,a]of Object.entries(s))fn(a)||t.setRequestHeader(o,String(a));return t.send(r),t},LE=[\"text\",\"picture\",\"picture-card\"];let xZ=1;const Rp=()=>Date.now()+xZ++,IE=xe({action:{type:String,default:\"#\"},headers:{type:ie(Object)},method:{type:String,default:\"post\"},data:{type:ie([Object,Function,Promise]),default:()=>Yt({})},multiple:Boolean,name:{type:String,default:\"file\"},drag:Boolean,withCredentials:Boolean,showFileList:{type:Boolean,default:!0},accept:{type:String,default:\"\"},fileList:{type:ie(Array),default:()=>Yt([])},autoUpload:{type:Boolean,default:!0},listType:{type:String,values:LE,default:\"text\"},httpRequest:{type:ie(Function),default:RZ},disabled:Boolean,limit:Number}),OZ=xe({...IE,beforeUpload:{type:ie(Function),default:Mt},beforeRemove:{type:ie(Function)},onRemove:{type:ie(Function),default:Mt},onChange:{type:ie(Function),default:Mt},onPreview:{type:ie(Function),default:Mt},onSuccess:{type:ie(Function),default:Mt},onProgress:{type:ie(Function),default:Mt},onError:{type:ie(Function),default:Mt},onExceed:{type:ie(Function),default:Mt},crossorigin:{type:ie(String)}}),MZ=xe({files:{type:ie(Array),default:()=>Yt([])},disabled:{type:Boolean,default:!1},handlePreview:{type:ie(Function),default:Mt},listType:{type:String,values:LE,default:\"text\"},crossorigin:{type:ie(String)}}),AZ={remove:e=>!!e},$Z=ee({name:\"ElUploadList\"}),LZ=ee({...$Z,props:MZ,emits:AZ,setup(e,{emit:t}){const n=e,{t:r}=yt(),s=we(\"upload\"),o=we(\"icon\"),a=we(\"list\"),i=On(),l=W(!1),u=O(()=>[s.b(\"list\"),s.bm(\"list\",n.listType),s.is(\"disabled\",n.disabled)]),f=d=>{t(\"remove\",d)};return(d,h)=>($(),ve(z1,{tag:\"ul\",class:D(c(u)),name:c(a).b()},{default:q(()=>[($(!0),X(We,null,vt(d.files,(v,b)=>($(),X(\"li\",{key:v.uid||v.name,class:D([c(s).be(\"list\",\"item\"),c(s).is(v.status),{focusing:l.value}]),tabindex:\"0\",onKeydown:Ht(p=>!c(i)&&f(v),[\"delete\"]),onFocus:p=>l.value=!0,onBlur:p=>l.value=!1,onClick:p=>l.value=!1},[ue(d.$slots,\"default\",{file:v,index:b},()=>[d.listType===\"picture\"||v.status!==\"uploading\"&&d.listType===\"picture-card\"?($(),X(\"img\",{key:0,class:D(c(s).be(\"list\",\"item-thumbnail\")),src:v.url,crossorigin:d.crossorigin,alt:\"\"},null,10,[\"src\",\"crossorigin\"])):de(\"v-if\",!0),v.status===\"uploading\"||d.listType!==\"picture-card\"?($(),X(\"div\",{key:1,class:D(c(s).be(\"list\",\"item-info\"))},[Z(\"a\",{class:D(c(s).be(\"list\",\"item-name\")),onClick:Xe(p=>d.handlePreview(v),[\"prevent\"])},[H(c(He),{class:D(c(o).m(\"document\"))},{default:q(()=>[H(c(m6))]),_:1},8,[\"class\"]),Z(\"span\",{class:D(c(s).be(\"list\",\"item-file-name\")),title:v.name},Ee(v.name),11,[\"title\"])],10,[\"onClick\"]),v.status===\"uploading\"?($(),ve(c(wm),{key:0,type:d.listType===\"picture-card\"?\"circle\":\"line\",\"stroke-width\":d.listType===\"picture-card\"?6:2,percentage:Number(v.percentage),style:Ue(d.listType===\"picture-card\"?\"\":\"margin-top: 0.5rem\")},null,8,[\"type\",\"stroke-width\",\"percentage\",\"style\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0),Z(\"label\",{class:D(c(s).be(\"list\",\"item-status-label\"))},[d.listType===\"text\"?($(),ve(c(He),{key:0,class:D([c(o).m(\"upload-success\"),c(o).m(\"circle-check\")])},{default:q(()=>[H(c(Av))]),_:1},8,[\"class\"])):[\"picture-card\",\"picture\"].includes(d.listType)?($(),ve(c(He),{key:1,class:D([c(o).m(\"upload-success\"),c(o).m(\"check\")])},{default:q(()=>[H(c(jl))]),_:1},8,[\"class\"])):de(\"v-if\",!0)],2),c(i)?de(\"v-if\",!0):($(),ve(c(He),{key:2,class:D(c(o).m(\"close\")),onClick:p=>f(v)},{default:q(()=>[H(c(Dr))]),_:2},1032,[\"class\",\"onClick\"])),de(\" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn\"),de(\" This is a bug which needs to be fixed \"),de(\" TODO: Fix the incorrect navigation interaction \"),c(i)?de(\"v-if\",!0):($(),X(\"i\",{key:3,class:D(c(o).m(\"close-tip\"))},Ee(c(r)(\"el.upload.deleteTip\")),3)),d.listType===\"picture-card\"?($(),X(\"span\",{key:4,class:D(c(s).be(\"list\",\"item-actions\"))},[Z(\"span\",{class:D(c(s).be(\"list\",\"item-preview\")),onClick:p=>d.handlePreview(v)},[H(c(He),{class:D(c(o).m(\"zoom-in\"))},{default:q(()=>[H(c(YS))]),_:1},8,[\"class\"])],10,[\"onClick\"]),c(i)?de(\"v-if\",!0):($(),X(\"span\",{key:0,class:D(c(s).be(\"list\",\"item-delete\")),onClick:p=>f(v)},[H(c(He),{class:D(c(o).m(\"delete\"))},{default:q(()=>[H(c(p6))]),_:1},8,[\"class\"])],10,[\"onClick\"]))],2)):de(\"v-if\",!0)])],42,[\"onKeydown\",\"onFocus\",\"onBlur\",\"onClick\"]))),128)),ue(d.$slots,\"append\")]),_:3},8,[\"class\",\"name\"]))}});var ly=Oe(LZ,[[\"__file\",\"upload-list.vue\"]]);const IZ=xe({disabled:{type:Boolean,default:!1}}),PZ={file:e=>ke(e)},PE=\"ElUploadDrag\",DZ=ee({name:PE}),BZ=ee({...DZ,props:IZ,emits:PZ,setup(e,{emit:t}){Fe($E)||dn(PE,\"usage: <el-upload><el-upload-dragger /></el-upload>\");const r=we(\"upload\"),s=W(!1),o=On(),a=l=>{if(o.value)return;s.value=!1,l.stopPropagation();const u=Array.from(l.dataTransfer.files);t(\"file\",u)},i=()=>{o.value||(s.value=!0)};return(l,u)=>($(),X(\"div\",{class:D([c(r).b(\"dragger\"),c(r).is(\"dragover\",s.value)]),onDrop:Xe(a,[\"prevent\"]),onDragover:Xe(i,[\"prevent\"]),onDragleave:Xe(f=>s.value=!1,[\"prevent\"])},[ue(l.$slots,\"default\")],42,[\"onDrop\",\"onDragover\",\"onDragleave\"]))}});var NZ=Oe(BZ,[[\"__file\",\"upload-dragger.vue\"]]);const FZ=xe({...IE,beforeUpload:{type:ie(Function),default:Mt},onRemove:{type:ie(Function),default:Mt},onStart:{type:ie(Function),default:Mt},onSuccess:{type:ie(Function),default:Mt},onProgress:{type:ie(Function),default:Mt},onError:{type:ie(Function),default:Mt},onExceed:{type:ie(Function),default:Mt}}),HZ=ee({name:\"ElUploadContent\",inheritAttrs:!1}),VZ=ee({...HZ,props:FZ,setup(e,{expose:t}){const n=e,r=we(\"upload\"),s=On(),o=Wt({}),a=Wt(),i=p=>{if(p.length===0)return;const{autoUpload:g,limit:m,fileList:y,multiple:_,onStart:w,onExceed:S}=n;if(m&&y.length+p.length>m){S(p,y);return}_||(p=p.slice(0,1));for(const C of p){const E=C;E.uid=Rp(),w(E),g&&l(E)}},l=async p=>{if(a.value.value=\"\",!n.beforeUpload)return f(p);let g,m={};try{const _=n.data,w=n.beforeUpload(p);m=el(n.data)?Ru(n.data):n.data,g=await w,el(n.data)&&wn(_,m)&&(m=Ru(n.data))}catch{g=!1}if(g===!1){n.onRemove(p);return}let y=p;g instanceof Blob&&(g instanceof File?y=g:y=new File([g],p.name,{type:p.type})),f(Object.assign(y,{uid:p.uid}),m)},u=async(p,g)=>Ke(p)?p(g):p,f=async(p,g)=>{const{headers:m,data:y,method:_,withCredentials:w,name:S,action:C,onProgress:E,onSuccess:k,onError:T,httpRequest:x}=n;try{g=await u(g??y,p)}catch{n.onRemove(p);return}const{uid:M}=p,A={headers:m||{},withCredentials:w,file:p,data:g,method:_,filename:S,action:C,onProgress:G=>{E(G,p)},onSuccess:G=>{k(G,p),delete o.value[M]},onError:G=>{T(G,p),delete o.value[M]}},P=x(A);o.value[M]=P,P instanceof Promise&&P.then(A.onSuccess,A.onError)},d=p=>{const g=p.target.files;g&&i(Array.from(g))},h=()=>{s.value||(a.value.value=\"\",a.value.click())},v=()=>{h()};return t({abort:p=>{DS(o.value).filter(p?([m])=>String(p.uid)===m:()=>!0).forEach(([m,y])=>{y instanceof XMLHttpRequest&&y.abort(),delete o.value[m]})},upload:l}),(p,g)=>($(),X(\"div\",{class:D([c(r).b(),c(r).m(p.listType),c(r).is(\"drag\",p.drag),c(r).is(\"disabled\",c(s))]),tabindex:c(s)?\"-1\":\"0\",onClick:h,onKeydown:Ht(Xe(v,[\"self\"]),[\"enter\",\"space\"])},[p.drag?($(),ve(NZ,{key:0,disabled:c(s),onFile:i},{default:q(()=>[ue(p.$slots,\"default\")]),_:3},8,[\"disabled\"])):ue(p.$slots,\"default\",{key:1}),Z(\"input\",{ref_key:\"inputRef\",ref:a,class:D(c(r).e(\"input\")),name:p.name,disabled:c(s),multiple:p.multiple,accept:p.accept,type:\"file\",onChange:d,onClick:Xe(()=>{},[\"stop\"])},null,42,[\"name\",\"disabled\",\"multiple\",\"accept\",\"onClick\"])],42,[\"tabindex\",\"onKeydown\"]))}});var cy=Oe(VZ,[[\"__file\",\"upload-content.vue\"]]);const uy=\"ElUpload\",dy=e=>{var t;(t=e.url)!=null&&t.startsWith(\"blob:\")&&URL.revokeObjectURL(e.url)},zZ=(e,t)=>{const n=xS(e,\"fileList\",void 0,{passive:!0}),r=v=>n.value.find(b=>b.uid===v.uid);function s(v){var b;(b=t.value)==null||b.abort(v)}function o(v=[\"ready\",\"uploading\",\"success\",\"fail\"]){n.value=n.value.filter(b=>!v.includes(b.status))}function a(v){n.value=n.value.filter(b=>b!==v)}const i=(v,b)=>{const p=r(b);p&&(console.error(v),p.status=\"fail\",a(p),e.onError(v,p,n.value),e.onChange(p,n.value))},l=(v,b)=>{const p=r(b);p&&(e.onProgress(v,p,n.value),p.status=\"uploading\",p.percentage=Math.round(v.percent))},u=(v,b)=>{const p=r(b);p&&(p.status=\"success\",p.response=v,e.onSuccess(v,p,n.value),e.onChange(p,n.value))},f=v=>{fn(v.uid)&&(v.uid=Rp());const b={name:v.name,percentage:0,status:\"ready\",size:v.size,raw:v,uid:v.uid};if(e.listType===\"picture-card\"||e.listType===\"picture\")try{b.url=URL.createObjectURL(v)}catch(p){p.message,e.onError(p,b,n.value)}n.value=[...n.value,b],e.onChange(b,n.value)},d=async v=>{const b=v instanceof File?r(v):v;b||dn(uy,\"file to be removed not found\");const p=g=>{s(g),a(g),e.onRemove(g,n.value),dy(g)};e.beforeRemove?await e.beforeRemove(b,n.value)!==!1&&p(b):p(b)};function h(){n.value.filter(({status:v})=>v===\"ready\").forEach(({raw:v})=>{var b;return v&&((b=t.value)==null?void 0:b.upload(v))})}return ye(()=>e.listType,v=>{v!==\"picture-card\"&&v!==\"picture\"||(n.value=n.value.map(b=>{const{raw:p,url:g}=b;if(!g&&p)try{b.url=URL.createObjectURL(p)}catch(m){e.onError(m,b,n.value)}return b}))}),ye(n,v=>{for(const b of v)b.uid||(b.uid=Rp()),b.status||(b.status=\"success\")},{immediate:!0,deep:!0}),{uploadFiles:n,abort:s,clearFiles:o,handleError:i,handleProgress:l,handleStart:f,handleSuccess:u,handleRemove:d,submit:h,revokeFileObjectURL:dy}},WZ=ee({name:\"ElUpload\"}),KZ=ee({...WZ,props:OZ,setup(e,{expose:t}){const n=e,r=On(),s=Wt(),{abort:o,submit:a,clearFiles:i,uploadFiles:l,handleStart:u,handleError:f,handleRemove:d,handleSuccess:h,handleProgress:v,revokeFileObjectURL:b}=zZ(n,s),p=O(()=>n.listType===\"picture-card\"),g=O(()=>({...n,fileList:l.value,onStart:u,onProgress:v,onSuccess:h,onError:f,onRemove:d}));return Pt(()=>{l.value.forEach(b)}),pt($E,{accept:At(n,\"accept\")}),t({abort:o,submit:a,clearFiles:i,handleStart:u,handleRemove:d}),(m,y)=>($(),X(\"div\",null,[c(p)&&m.showFileList?($(),ve(ly,{key:0,disabled:c(r),\"list-type\":m.listType,files:c(l),crossorigin:m.crossorigin,\"handle-preview\":m.onPreview,onRemove:c(d)},_r({append:q(()=>[H(cy,ft({ref_key:\"uploadRef\",ref:s},c(g)),{default:q(()=>[m.$slots.trigger?ue(m.$slots,\"trigger\",{key:0}):de(\"v-if\",!0),!m.$slots.trigger&&m.$slots.default?ue(m.$slots,\"default\",{key:1}):de(\"v-if\",!0)]),_:3},16)]),_:2},[m.$slots.file?{name:\"default\",fn:q(({file:_,index:w})=>[ue(m.$slots,\"file\",{file:_,index:w})])}:void 0]),1032,[\"disabled\",\"list-type\",\"files\",\"crossorigin\",\"handle-preview\",\"onRemove\"])):de(\"v-if\",!0),!c(p)||c(p)&&!m.showFileList?($(),ve(cy,ft({key:1,ref_key:\"uploadRef\",ref:s},c(g)),{default:q(()=>[m.$slots.trigger?ue(m.$slots,\"trigger\",{key:0}):de(\"v-if\",!0),!m.$slots.trigger&&m.$slots.default?ue(m.$slots,\"default\",{key:1}):de(\"v-if\",!0)]),_:3},16)):de(\"v-if\",!0),m.$slots.trigger?ue(m.$slots,\"default\",{key:2}):de(\"v-if\",!0),ue(m.$slots,\"tip\"),!c(p)&&m.showFileList?($(),ve(ly,{key:3,disabled:c(r),\"list-type\":m.listType,files:c(l),crossorigin:m.crossorigin,\"handle-preview\":m.onPreview,onRemove:c(d)},_r({_:2},[m.$slots.file?{name:\"default\",fn:q(({file:_,index:w})=>[ue(m.$slots,\"file\",{file:_,index:w})])}:void 0]),1032,[\"disabled\",\"list-type\",\"files\",\"crossorigin\",\"handle-preview\",\"onRemove\"])):de(\"v-if\",!0)]))}});var jZ=Oe(KZ,[[\"__file\",\"upload.vue\"]]);const UZ=Qe(jZ),qZ=xe({zIndex:{type:Number,default:9},rotate:{type:Number,default:-22},width:Number,height:Number,image:String,content:{type:ie([String,Array]),default:\"Element Plus\"},font:{type:ie(Object)},gap:{type:ie(Array),default:()=>[100,100]},offset:{type:ie(Array)}});function YZ(e){return e.replace(/([A-Z])/g,\"-$1\").toLowerCase()}function GZ(e){return Object.keys(e).map(t=>`${YZ(t)}: ${e[t]};`).join(\" \")}function XZ(){return window.devicePixelRatio||1}const JZ=(e,t)=>{let n=!1;return e.removedNodes.length&&t&&(n=Array.from(e.removedNodes).includes(t)),e.type===\"attributes\"&&e.target===t&&(n=!0),n},DE=3;function Kf(e,t,n=1){const r=document.createElement(\"canvas\"),s=r.getContext(\"2d\"),o=e*n,a=t*n;return r.setAttribute(\"width\",`${o}px`),r.setAttribute(\"height\",`${a}px`),s.save(),[s,r,o,a]}function ZZ(){function e(t,n,r,s,o,a,i,l){const[u,f,d,h]=Kf(s,o,r);if(t instanceof HTMLImageElement)u.drawImage(t,0,0,d,h);else{const{color:N,fontSize:U,fontStyle:J,fontWeight:re,fontFamily:le,textAlign:pe,textBaseline:K}=a,z=Number(U)*r;u.font=`${J} normal ${re} ${z}px/${o}px ${le}`,u.fillStyle=N,u.textAlign=pe,u.textBaseline=K;const te=ke(t)?t:[t];te==null||te.forEach((oe,he)=>{u.fillText(oe??\"\",d/2,he*(z+DE*r))})}const v=Math.PI/180*Number(n),b=Math.max(s,o),[p,g,m]=Kf(b,b,r);p.translate(m/2,m/2),p.rotate(v),d>0&&h>0&&p.drawImage(f,-d/2,-h/2);function y(N,U){const J=N*Math.cos(v)-U*Math.sin(v),re=N*Math.sin(v)+U*Math.cos(v);return[J,re]}let _=0,w=0,S=0,C=0;const E=d/2,k=h/2;[[0-E,0-k],[0+E,0-k],[0+E,0+k],[0-E,0+k]].forEach(([N,U])=>{const[J,re]=y(N,U);_=Math.min(_,J),w=Math.max(w,J),S=Math.min(S,re),C=Math.max(C,re)});const x=_+m/2,M=S+m/2,A=w-_,P=C-S,G=i*r,V=l*r,I=(A+G)*2,j=P+V,[F,R]=Kf(I,j);function B(N=0,U=0){F.drawImage(g,x,M,A,P,N,U,A,P)}return B(),B(A+G,-P/2-V/2),B(A+G,+P/2+V/2),[R.toDataURL(),I/r,j/r]}return e}const QZ=ee({name:\"ElWatermark\"}),eQ=ee({...QZ,props:qZ,setup(e){const t=e,n={position:\"relative\"},r=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.color)!=null?M:\"rgba(0,0,0,.15)\"}),s=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.fontSize)!=null?M:16}),o=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.fontWeight)!=null?M:\"normal\"}),a=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.fontStyle)!=null?M:\"normal\"}),i=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.fontFamily)!=null?M:\"sans-serif\"}),l=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.textAlign)!=null?M:\"center\"}),u=O(()=>{var x,M;return(M=(x=t.font)==null?void 0:x.textBaseline)!=null?M:\"hanging\"}),f=O(()=>t.gap[0]),d=O(()=>t.gap[1]),h=O(()=>f.value/2),v=O(()=>d.value/2),b=O(()=>{var x,M;return(M=(x=t.offset)==null?void 0:x[0])!=null?M:h.value}),p=O(()=>{var x,M;return(M=(x=t.offset)==null?void 0:x[1])!=null?M:v.value}),g=()=>{const x={zIndex:t.zIndex,position:\"absolute\",left:0,top:0,width:\"100%\",height:\"100%\",pointerEvents:\"none\",backgroundRepeat:\"repeat\"};let M=b.value-h.value,A=p.value-v.value;return M>0&&(x.left=`${M}px`,x.width=`calc(100% - ${M}px)`,M=0),A>0&&(x.top=`${A}px`,x.height=`calc(100% - ${A}px)`,A=0),x.backgroundPosition=`${M}px ${A}px`,x},m=Wt(null),y=Wt(),_=W(!1),w=()=>{y.value&&(y.value.remove(),y.value=void 0)},S=(x,M)=>{var A;m.value&&y.value&&(_.value=!0,y.value.setAttribute(\"style\",GZ({...g(),backgroundImage:`url('${x}')`,backgroundSize:`${Math.floor(M)}px`})),(A=m.value)==null||A.append(y.value),setTimeout(()=>{_.value=!1}))},C=x=>{let M=120,A=64;const P=t.image,G=t.content,V=t.width,I=t.height;if(!P&&x.measureText){x.font=`${Number(s.value)}px ${i.value}`;const j=ke(G)?G:[G],F=j.map(R=>{const B=x.measureText(R);return[B.width,B.fontBoundingBoxAscent!==void 0?B.fontBoundingBoxAscent+B.fontBoundingBoxDescent:B.actualBoundingBoxAscent+B.actualBoundingBoxDescent]});M=Math.ceil(Math.max(...F.map(R=>R[0]))),A=Math.ceil(Math.max(...F.map(R=>R[1])))*j.length+(j.length-1)*DE}return[V??M,I??A]},E=ZZ(),k=()=>{const M=document.createElement(\"canvas\").getContext(\"2d\"),A=t.image,P=t.content,G=t.rotate;if(M){y.value||(y.value=document.createElement(\"div\"));const V=XZ(),[I,j]=C(M),F=R=>{const[B,N]=E(R||\"\",G,V,I,j,{color:r.value,fontSize:s.value,fontStyle:a.value,fontWeight:o.value,fontFamily:i.value,textAlign:l.value,textBaseline:u.value},f.value,d.value);S(B,N)};if(A){const R=new Image;R.onload=()=>{F(R)},R.onerror=()=>{F(P)},R.crossOrigin=\"anonymous\",R.referrerPolicy=\"no-referrer\",R.src=A}else F(P)}};return it(()=>{k()}),ye(()=>t,()=>{k()},{deep:!0,flush:\"post\"}),Pt(()=>{w()}),RS(m,x=>{_.value||x.forEach(M=>{JZ(M,y.value)&&(w(),k())})},{attributes:!0,subtree:!0,childList:!0}),(x,M)=>($(),X(\"div\",{ref_key:\"containerRef\",ref:m,style:Ue([n])},[ue(x.$slots,\"default\")],4))}});var tQ=Oe(eQ,[[\"__file\",\"watermark.vue\"]]);const nQ=Qe(tQ),rQ=xe({zIndex:{type:Number,default:1001},visible:Boolean,fill:{type:String,default:\"rgba(0,0,0,0.5)\"},pos:{type:ie(Object)},targetAreaClickable:{type:Boolean,default:!0}}),sQ=(e,t,n,r,s)=>{const o=W(null),a=()=>{let d;return ze(e.value)?d=document.querySelector(e.value):Ke(e.value)?d=e.value():d=e.value,d},i=()=>{const d=a();if(!d||!t.value){o.value=null;return}oQ(d)||d.scrollIntoView(s.value);const{left:h,top:v,width:b,height:p}=d.getBoundingClientRect();o.value={left:h,top:v,width:b,height:p,radius:0}};it(()=>{ye([t,e],()=>{i()},{immediate:!0}),window.addEventListener(\"resize\",i)}),Pt(()=>{window.removeEventListener(\"resize\",i)});const l=d=>{var h;return(h=ke(n.value.offset)?n.value.offset[d]:n.value.offset)!=null?h:6},u=O(()=>{var d;if(!o.value)return o.value;const h=l(0),v=l(1),b=((d=n.value)==null?void 0:d.radius)||2;return{left:o.value.left-h,top:o.value.top-v,width:o.value.width+h*2,height:o.value.height+v*2,radius:b}}),f=O(()=>{const d=a();return!r.value||!d||!window.DOMRect?d||void 0:{getBoundingClientRect(){var h,v,b,p;return window.DOMRect.fromRect({width:((h=u.value)==null?void 0:h.width)||0,height:((v=u.value)==null?void 0:v.height)||0,x:((b=u.value)==null?void 0:b.left)||0,y:((p=u.value)==null?void 0:p.top)||0})}}});return{mergedPosInfo:u,triggerTarget:f}},zd=Symbol(\"ElTour\");function oQ(e){const t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:s,bottom:o,left:a}=e.getBoundingClientRect();return r>=0&&a>=0&&s<=t&&o<=n}const iQ=(e,t,n,r,s,o,a,i)=>{const l=W(),u=W(),f=W({}),d={x:l,y:u,placement:r,strategy:s,middlewareData:f},h=O(()=>{const m=[mE(c(o)),uJ(),cJ(),aQ()];return c(i)&&c(n)&&m.push(gE({element:c(n)})),m}),v=async()=>{if(!bt)return;const m=c(e),y=c(t);if(!m||!y)return;const _=await _E(m,y,{placement:c(r),strategy:c(s),middleware:c(h)});zi(d).forEach(w=>{d[w].value=_[w]})},b=O(()=>{if(!c(e))return{position:\"fixed\",top:\"50%\",left:\"50%\",transform:\"translate3d(-50%, -50%, 0)\",maxWidth:\"100vw\",zIndex:c(a)};const{overflow:m}=c(f);return{position:c(s),zIndex:c(a),top:c(u)!=null?`${c(u)}px`:\"\",left:c(l)!=null?`${c(l)}px`:\"\",maxWidth:m!=null&&m.maxWidth?`${m==null?void 0:m.maxWidth}px`:\"\"}}),p=O(()=>{if(!c(i))return{};const{arrow:m}=c(f);return{left:(m==null?void 0:m.x)!=null?`${m==null?void 0:m.x}px`:\"\",top:(m==null?void 0:m.y)!=null?`${m==null?void 0:m.y}px`:\"\"}});let g;return it(()=>{const m=c(e),y=c(t);m&&y&&(g=aJ(m,y,v)),En(()=>{v()})}),Pt(()=>{g&&g()}),{update:v,contentStyle:b,arrowStyle:p}},aQ=()=>({name:\"overflow\",async fn(e){const t=await lJ(e);let n=0;return t.left>0&&(n=t.left),t.right>0&&(n=t.right),{data:{maxWidth:e.rects.floating.width-n}}}}),lQ=ee({name:\"ElTourMask\",inheritAttrs:!1}),cQ=ee({...lQ,props:rQ,setup(e){const t=e,{ns:n}=Fe(zd),r=O(()=>{var i,l;return(l=(i=t.pos)==null?void 0:i.radius)!=null?l:2}),s=O(()=>{const i=r.value,l=`a${i},${i} 0 0 1`;return{topRight:`${l} ${i},${i}`,bottomRight:`${l} ${-i},${i}`,bottomLeft:`${l} ${-i},${-i}`,topLeft:`${l} ${i},${-i}`}}),o=O(()=>{const i=window.innerWidth,l=window.innerHeight,u=s.value,f=`M${i},0 L0,0 L0,${l} L${i},${l} L${i},0 Z`,d=r.value;return t.pos?`${f} M${t.pos.left+d},${t.pos.top} h${t.pos.width-d*2} ${u.topRight} v${t.pos.height-d*2} ${u.bottomRight} h${-t.pos.width+d*2} ${u.bottomLeft} v${-t.pos.height+d*2} ${u.topLeft} z`:f}),a=O(()=>({fill:t.fill,pointerEvents:\"auto\",cursor:\"auto\"}));return hm(At(t,\"visible\"),{ns:n}),(i,l)=>i.visible?($(),X(\"div\",ft({key:0,class:c(n).e(\"mask\"),style:{position:\"fixed\",left:0,right:0,top:0,bottom:0,zIndex:i.zIndex,pointerEvents:i.pos&&i.targetAreaClickable?\"none\":\"auto\"}},i.$attrs),[($(),X(\"svg\",{style:{width:\"100%\",height:\"100%\"}},[Z(\"path\",{class:D(c(n).e(\"hollow\")),style:Ue(c(a)),d:c(o)},null,14,[\"d\"])]))],16)):de(\"v-if\",!0)}});var uQ=Oe(cQ,[[\"__file\",\"mask.vue\"]]);const dQ=[\"absolute\",\"fixed\"],fQ=[\"top-start\",\"top-end\",\"top\",\"bottom-start\",\"bottom-end\",\"bottom\",\"left-start\",\"left-end\",\"left\",\"right-start\",\"right-end\",\"right\"],Gm=xe({placement:{type:ie(String),values:fQ,default:\"bottom\"},reference:{type:ie(Object),default:null},strategy:{type:ie(String),values:dQ,default:\"absolute\"},offset:{type:Number,default:10},showArrow:Boolean,zIndex:{type:Number,default:2001}}),hQ={close:()=>!0},pQ=ee({name:\"ElTourContent\"}),vQ=ee({...pQ,props:Gm,emits:hQ,setup(e,{emit:t}){const n=e,r=W(n.placement),s=W(n.strategy),o=W(null),a=W(null);ye(()=>n.placement,()=>{r.value=n.placement});const{contentStyle:i,arrowStyle:l}=iQ(At(n,\"reference\"),o,a,r,s,At(n,\"offset\"),At(n,\"zIndex\"),At(n,\"showArrow\")),u=O(()=>r.value.split(\"-\")[0]),{ns:f}=Fe(zd),d=()=>{t(\"close\")},h=v=>{v.detail.focusReason===\"pointer\"&&v.preventDefault()};return(v,b)=>($(),X(\"div\",{ref_key:\"contentRef\",ref:o,style:Ue(c(i)),class:D(c(f).e(\"content\")),\"data-side\":c(u),tabindex:\"-1\"},[H(c(ha),{loop:\"\",trapped:\"\",\"focus-start-el\":\"container\",\"focus-trap-el\":o.value||void 0,onReleaseRequested:d,onFocusoutPrevented:h},{default:q(()=>[ue(v.$slots,\"default\")]),_:3},8,[\"focus-trap-el\"]),v.showArrow?($(),X(\"span\",{key:0,ref_key:\"arrowRef\",ref:a,style:Ue(c(l)),class:D(c(f).e(\"arrow\"))},null,6)):de(\"v-if\",!0)],14,[\"data-side\"]))}});var mQ=Oe(vQ,[[\"__file\",\"content.vue\"]]),gQ=ee({name:\"ElTourSteps\",props:{current:{type:Number,default:0}},emits:[\"update-total\"],setup(e,{slots:t,emit:n}){let r=0;return()=>{var s,o;const a=(s=t.default)==null?void 0:s.call(t),i=[];let l=0;function u(f){ke(f)&&f.forEach(d=>{var h;((h=(d==null?void 0:d.type)||{})==null?void 0:h.name)===\"ElTourStep\"&&(i.push(d),l+=1)})}return a.length&&u(to((o=a[0])==null?void 0:o.children)),r!==l&&(r=l,n(\"update-total\",l)),i.length?i[e.current]:null}}});const _Q=xe({modelValue:Boolean,current:{type:Number,default:0},showArrow:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeIcon:{type:Nt},placement:Gm.placement,contentStyle:{type:ie([Object])},mask:{type:ie([Boolean,Object]),default:!0},gap:{type:ie(Object),default:()=>({offset:6,radius:2})},zIndex:{type:Number},scrollIntoViewOptions:{type:ie([Boolean,Object]),default:()=>({block:\"center\"})},type:{type:ie(String)},appendTo:{type:ie([String,Object]),default:\"body\"},closeOnPressEscape:{type:Boolean,default:!0},targetAreaClickable:{type:Boolean,default:!0}}),bQ={[ot]:e=>Vt(e),\"update:current\":e=>Ge(e),close:e=>Ge(e),finish:()=>!0,change:e=>Ge(e)},yQ=ee({name:\"ElTour\"}),wQ=ee({...yQ,props:_Q,emits:bQ,setup(e,{emit:t}){const n=e,r=we(\"tour\"),s=W(0),o=W(),a=xS(n,\"current\",t,{passive:!0}),i=O(()=>{var T;return(T=o.value)==null?void 0:T.target}),l=O(()=>[r.b(),g.value===\"primary\"?r.m(\"primary\"):\"\"]),u=O(()=>{var T;return((T=o.value)==null?void 0:T.placement)||n.placement}),f=O(()=>{var T,x;return(x=(T=o.value)==null?void 0:T.contentStyle)!=null?x:n.contentStyle}),d=O(()=>{var T,x;return(x=(T=o.value)==null?void 0:T.mask)!=null?x:n.mask}),h=O(()=>!!d.value&&n.modelValue),v=O(()=>Vt(d.value)?void 0:d.value),b=O(()=>{var T,x;return!!i.value&&((x=(T=o.value)==null?void 0:T.showArrow)!=null?x:n.showArrow)}),p=O(()=>{var T,x;return(x=(T=o.value)==null?void 0:T.scrollIntoViewOptions)!=null?x:n.scrollIntoViewOptions}),g=O(()=>{var T,x;return(x=(T=o.value)==null?void 0:T.type)!=null?x:n.type}),{nextZIndex:m}=da(),y=m(),_=O(()=>{var T;return(T=n.zIndex)!=null?T:y}),{mergedPosInfo:w,triggerTarget:S}=sQ(i,At(n,\"modelValue\"),At(n,\"gap\"),d,p);ye(()=>n.modelValue,T=>{T||(a.value=0)});const C=()=>{n.closeOnPressEscape&&(t(\"update:modelValue\",!1),t(\"close\",a.value))},E=T=>{s.value=T},k=an();return pt(zd,{currentStep:o,current:a,total:s,showClose:At(n,\"showClose\"),closeIcon:At(n,\"closeIcon\"),mergedType:g,ns:r,slots:k,updateModelValue(T){t(\"update:modelValue\",T)},onClose(){t(\"close\",a.value)},onFinish(){t(\"finish\")},onChange(){t(\"change\",a.value)}}),(T,x)=>($(),X(We,null,[H(c(pa),{to:T.appendTo},{default:q(()=>{var M,A;return[Z(\"div\",ft({class:c(l)},T.$attrs),[H(uQ,{visible:c(h),fill:(M=c(v))==null?void 0:M.color,style:Ue((A=c(v))==null?void 0:A.style),pos:c(w),\"z-index\":c(_),\"target-area-clickable\":T.targetAreaClickable},null,8,[\"visible\",\"fill\",\"style\",\"pos\",\"z-index\",\"target-area-clickable\"]),T.modelValue?($(),ve(mQ,{key:c(a),reference:c(S),placement:c(u),\"show-arrow\":c(b),\"z-index\":c(_),style:Ue(c(f)),onClose:C},{default:q(()=>[H(c(gQ),{current:c(a),onUpdateTotal:E},{default:q(()=>[ue(T.$slots,\"default\")]),_:3},8,[\"current\"])]),_:3},8,[\"reference\",\"placement\",\"show-arrow\",\"z-index\",\"style\"])):de(\"v-if\",!0)],16)]}),_:3},8,[\"to\"]),de(\" just for IDE \"),de(\"v-if\",!0)],64))}});var SQ=Oe(wQ,[[\"__file\",\"tour.vue\"]]);const CQ=xe({target:{type:ie([String,Object,Function])},title:String,description:String,showClose:{type:Boolean,default:void 0},closeIcon:{type:Nt},showArrow:{type:Boolean,default:void 0},placement:Gm.placement,mask:{type:ie([Boolean,Object]),default:void 0},contentStyle:{type:ie([Object])},prevButtonProps:{type:ie(Object)},nextButtonProps:{type:ie(Object)},scrollIntoViewOptions:{type:ie([Boolean,Object]),default:void 0},type:{type:ie(String)}}),kQ={close:()=>!0},EQ=ee({name:\"ElTourStep\"}),TQ=ee({...EQ,props:CQ,emits:kQ,setup(e,{emit:t}){const n=e,{Close:r}=Iv,{t:s}=yt(),{currentStep:o,current:a,total:i,showClose:l,closeIcon:u,mergedType:f,ns:d,slots:h,updateModelValue:v,onClose:b,onFinish:p,onChange:g}=Fe(zd);ye(n,k=>{o.value=k},{immediate:!0});const m=O(()=>{var k;return(k=n.showClose)!=null?k:l.value}),y=O(()=>{var k,T;return(T=(k=n.closeIcon)!=null?k:u.value)!=null?T:r}),_=k=>{if(k)return RI(k,[\"children\",\"onClick\"])},w=()=>{var k,T;a.value-=1,(k=n.prevButtonProps)!=null&&k.onClick&&((T=n.prevButtonProps)==null||T.onClick()),g()},S=()=>{var k;a.value>=i.value-1?C():a.value+=1,(k=n.nextButtonProps)!=null&&k.onClick&&n.nextButtonProps.onClick(),g()},C=()=>{E(),p()},E=()=>{v(!1),b(),t(\"close\")};return(k,T)=>($(),X(We,null,[c(m)?($(),X(\"button\",{key:0,\"aria-label\":\"Close\",class:D(c(d).e(\"closebtn\")),type:\"button\",onClick:E},[H(c(He),{class:D(c(d).e(\"close\"))},{default:q(()=>[($(),ve(dt(c(y))))]),_:1},8,[\"class\"])],2)):de(\"v-if\",!0),Z(\"header\",{class:D([c(d).e(\"header\"),{\"show-close\":c(l)}])},[ue(k.$slots,\"header\",{},()=>[Z(\"span\",{role:\"heading\",class:D(c(d).e(\"title\"))},Ee(k.title),3)])],2),Z(\"div\",{class:D(c(d).e(\"body\"))},[ue(k.$slots,\"default\",{},()=>[Z(\"span\",null,Ee(k.description),1)])],2),Z(\"footer\",{class:D(c(d).e(\"footer\"))},[Z(\"div\",{class:D(c(d).b(\"indicators\"))},[c(h).indicators?($(),ve(dt(c(h).indicators),{key:0,current:c(a),total:c(i)},null,8,[\"current\",\"total\"])):($(!0),X(We,{key:1},vt(c(i),(x,M)=>($(),X(\"span\",{key:x,class:D([c(d).b(\"indicator\"),M===c(a)?\"is-active\":\"\"])},null,2))),128))],2),Z(\"div\",{class:D(c(d).b(\"buttons\"))},[c(a)>0?($(),ve(c(cn),ft({key:0,size:\"small\",type:c(f)},_(k.prevButtonProps),{onClick:w}),{default:q(()=>{var x,M;return[Ve(Ee((M=(x=k.prevButtonProps)==null?void 0:x.children)!=null?M:c(s)(\"el.tour.previous\")),1)]}),_:1},16,[\"type\"])):de(\"v-if\",!0),c(a)<=c(i)-1?($(),ve(c(cn),ft({key:1,size:\"small\",type:c(f)===\"primary\"?\"default\":\"primary\"},_(k.nextButtonProps),{onClick:S}),{default:q(()=>{var x,M;return[Ve(Ee((M=(x=k.nextButtonProps)==null?void 0:x.children)!=null?M:c(a)===c(i)-1?c(s)(\"el.tour.finish\"):c(s)(\"el.tour.next\")),1)]}),_:1},16,[\"type\"])):de(\"v-if\",!0)],2)],2)],64))}});var BE=Oe(TQ,[[\"__file\",\"step.vue\"]]);const RQ=Qe(SQ,{TourStep:BE}),xQ=Gt(BE),OQ=xe({container:{type:ie([String,Object])},offset:{type:Number,default:0},bound:{type:Number,default:15},duration:{type:Number,default:300},marker:{type:Boolean,default:!0},type:{type:ie(String),default:\"default\"},direction:{type:ie(String),default:\"vertical\"}}),MQ={change:e=>ze(e),click:(e,t)=>e instanceof MouseEvent&&(ze(t)||Lt(t))},NE=Symbol(\"anchor\"),Oc=e=>{if(!bt||e===\"\")return null;if(ze(e))try{return document.querySelector(e)}catch{return null}return e};function AQ(e){let t=0;const n=(...r)=>{t&&Zo(t),t=io(()=>{e(...r),t=0})};return n.cancel=()=>{Zo(t),t=0},n}const $Q=ee({name:\"ElAnchor\"}),LQ=ee({...$Q,props:OQ,emits:MQ,setup(e,{expose:t,emit:n}){const r=e,s=W(\"\"),o=W(null),a=W(null),i=W(),l={};let u=!1,f=0;const d=we(\"anchor\"),h=O(()=>[d.b(),r.type===\"underline\"?d.m(\"underline\"):\"\",d.m(r.direction)]),v=k=>{l[k.href]=k.el},b=k=>{delete l[k]},p=k=>{s.value!==k&&(s.value=k,n(\"change\",k))};let g=null;const m=k=>{if(!i.value)return;const T=Oc(k);if(!T)return;g&&g(),u=!0;const x=f_(T,i.value),M=Fh(T,x),A=x.scrollHeight-x.clientHeight,P=Math.min(M-r.offset,A);g=MP(i.value,f,P,r.duration,()=>{setTimeout(()=>{u=!1},20)})},y=k=>{k&&(p(k),m(k))},_=(k,T)=>{n(\"click\",k,T),y(T)},w=AQ(()=>{i.value&&(f=h_(i.value));const k=S();u||Lt(k)||p(k)}),S=()=>{if(!i.value)return;const k=h_(i.value),T=[];for(const x of Object.keys(l)){const M=Oc(x);if(!M)continue;const A=f_(M,i.value),P=Fh(M,A);T.push({top:P-r.offset-r.bound,href:x})}T.sort((x,M)=>x.top-M.top);for(let x=0;x<T.length;x++){const M=T[x],A=T[x+1];if(x===0&&k===0)return\"\";if(M.top<=k&&(!A||A.top>k))return M.href}},C=()=>{const k=Oc(r.container);!k||wd(k)?i.value=window:i.value=k};It(i,\"scroll\",w);const E=O(()=>{if(!o.value||!a.value||!s.value)return{};const k=l[s.value];if(!k)return{};const T=o.value.getBoundingClientRect(),x=a.value.getBoundingClientRect(),M=k.getBoundingClientRect();return r.direction===\"horizontal\"?{left:`${M.left-T.left}px`,width:`${M.width}px`,opacity:1}:{top:`${M.top-T.top+(M.height-x.height)/2}px`,opacity:1}});return it(()=>{C();const k=decodeURIComponent(window.location.hash);Oc(k)?y(k):w()}),ye(()=>r.container,()=>{C()}),pt(NE,{ns:d,direction:r.direction,currentAnchor:s,addLink:v,removeLink:b,handleClick:_}),t({scrollTo:y}),(k,T)=>($(),X(\"div\",{ref_key:\"anchorRef\",ref:o,class:D(c(h))},[k.marker?($(),X(\"div\",{key:0,ref_key:\"markerRef\",ref:a,class:D(c(d).e(\"marker\")),style:Ue(c(E))},null,6)):de(\"v-if\",!0),Z(\"div\",{class:D(c(d).e(\"list\"))},[ue(k.$slots,\"default\")],2)],2))}});var IQ=Oe(LQ,[[\"__file\",\"anchor.vue\"]]);const PQ=xe({title:String,href:String}),DQ=ee({name:\"ElAnchorLink\"}),BQ=ee({...DQ,props:PQ,setup(e){const t=e,n=W(null),{ns:r,direction:s,currentAnchor:o,addLink:a,removeLink:i,handleClick:l}=Fe(NE),u=O(()=>[r.e(\"link\"),r.is(\"active\",o.value===t.href)]),f=d=>{l(d,t.href)};return ye(()=>t.href,(d,h)=>{je(()=>{h&&i(h),d&&a({href:d,el:n.value})})}),it(()=>{const{href:d}=t;d&&a({href:d,el:n.value})}),Pt(()=>{const{href:d}=t;d&&i(d)}),(d,h)=>($(),X(\"div\",{class:D(c(r).e(\"item\"))},[Z(\"a\",{ref_key:\"linkRef\",ref:n,class:D(c(u)),href:d.href,onClick:f},[ue(d.$slots,\"default\",{},()=>[Ve(Ee(d.title),1)])],10,[\"href\"]),d.$slots[\"sub-link\"]&&c(s)===\"vertical\"?($(),X(\"div\",{key:0,class:D(c(r).e(\"list\"))},[ue(d.$slots,\"sub-link\")],2)):de(\"v-if\",!0)],2))}});var FE=Oe(BQ,[[\"__file\",\"anchor-link.vue\"]]);const NQ=Qe(IQ,{AnchorLink:FE}),FQ=Gt(FE),HQ=xe({direction:{type:ie(String),default:\"horizontal\"},options:{type:ie(Array),default:()=>[]},modelValue:{type:[String,Number,Boolean],default:void 0},block:Boolean,size:on,disabled:Boolean,validateEvent:{type:Boolean,default:!0},id:String,name:String,...kn([\"ariaLabel\"])}),VQ={[ot]:e=>ze(e)||Ge(e)||Vt(e),[Bt]:e=>ze(e)||Ge(e)||Vt(e)},zQ=ee({name:\"ElSegmented\"}),WQ=ee({...zQ,props:HQ,emits:VQ,setup(e,{emit:t}){const n=e,r=we(\"segmented\"),s=Sn(),o=sn(),a=On(),{formItem:i}=xn(),{inputId:l,isLabeledByFormItem:u}=Cr(n,{formItemContext:i}),f=W(null),d=QI(),h=St({isInit:!1,width:0,height:0,translateX:0,translateY:0,focusVisible:!1}),v=T=>{const x=b(T);t(ot,x),t(Bt,x)},b=T=>lt(T)?T.value:T,p=T=>lt(T)?T.label:T,g=T=>!!(a.value||lt(T)&&T.disabled),m=T=>n.modelValue===b(T),y=T=>n.options.find(x=>b(x)===T),_=T=>[r.e(\"item\"),r.is(\"selected\",m(T)),r.is(\"disabled\",g(T))],w=()=>{if(!f.value)return;const T=f.value.querySelector(\".is-selected\"),x=f.value.querySelector(\".is-selected input\");if(!T||!x){h.width=0,h.height=0,h.translateX=0,h.translateY=0,h.focusVisible=!1;return}const M=T.getBoundingClientRect();h.isInit=!0,n.direction===\"vertical\"?(h.height=M.height,h.translateY=T.offsetTop):(h.width=M.width,h.translateX=T.offsetLeft);try{h.focusVisible=x.matches(\":focus-visible\")}catch{}},S=O(()=>[r.b(),r.m(o.value),r.is(\"block\",n.block)]),C=O(()=>({width:n.direction===\"vertical\"?\"100%\":`${h.width}px`,height:n.direction===\"vertical\"?`${h.height}px`:\"100%\",transform:n.direction===\"vertical\"?`translateY(${h.translateY}px)`:`translateX(${h.translateX}px)`,display:h.isInit?\"block\":\"none\"})),E=O(()=>[r.e(\"item-selected\"),r.is(\"disabled\",g(y(n.modelValue))),r.is(\"focus-visible\",h.focusVisible)]),k=O(()=>n.name||s.value);return jt(f,w),ye(d,w),ye(()=>n.modelValue,()=>{var T;w(),n.validateEvent&&((T=i==null?void 0:i.validate)==null||T.call(i,\"change\").catch(x=>void 0))},{flush:\"post\"}),(T,x)=>T.options.length?($(),X(\"div\",{key:0,id:c(l),ref_key:\"segmentedRef\",ref:f,class:D(c(S)),role:\"radiogroup\",\"aria-label\":c(u)?void 0:T.ariaLabel||\"segmented\",\"aria-labelledby\":c(u)?c(i).labelId:void 0},[Z(\"div\",{class:D([c(r).e(\"group\"),c(r).m(n.direction)])},[Z(\"div\",{style:Ue(c(C)),class:D(c(E))},null,6),($(!0),X(We,null,vt(T.options,(M,A)=>($(),X(\"label\",{key:A,class:D(_(M))},[Z(\"input\",{class:D(c(r).e(\"item-input\")),type:\"radio\",name:c(k),disabled:g(M),checked:m(M),onChange:P=>v(M)},null,42,[\"name\",\"disabled\",\"checked\",\"onChange\"]),Z(\"div\",{class:D(c(r).e(\"item-label\"))},[ue(T.$slots,\"default\",{item:M},()=>[Ve(Ee(p(M)),1)])],2)],2))),128))],2)],10,[\"id\",\"aria-label\",\"aria-labelledby\"])):de(\"v-if\",!0)}});var KQ=Oe(WQ,[[\"__file\",\"segmented.vue\"]]);const jQ=Qe(KQ),UQ=(e,t)=>{const n=e.toLowerCase();return(t.label||t.value).toLowerCase().includes(n)},qQ=(e,t,n)=>{const{selectionEnd:r}=e;if(r===null)return;const s=e.value,o=Pn(t);let a=-1,i;for(let l=r-1;l>=0;--l){const u=s[l];if(u===n||u===`\n`||u===\"\\r\"){a=l;continue}if(o.includes(u)){const f=a===-1?r:a;i={pattern:s.slice(l+1,f),start:l+1,end:f,prefix:u,prefixIndex:l,splitIndex:a,selectionEnd:r};break}}return i},YQ=(e,t={debug:!1,useSelectionEnd:!1})=>{const n=e.selectionStart!==null?e.selectionStart:0,r=e.selectionEnd!==null?e.selectionEnd:0,s=t.useSelectionEnd?r:n,o=[\"direction\",\"boxSizing\",\"width\",\"height\",\"overflowX\",\"overflowY\",\"borderTopWidth\",\"borderRightWidth\",\"borderBottomWidth\",\"borderLeftWidth\",\"borderStyle\",\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\",\"fontStyle\",\"fontVariant\",\"fontWeight\",\"fontStretch\",\"fontSize\",\"fontSizeAdjust\",\"lineHeight\",\"fontFamily\",\"textAlign\",\"textTransform\",\"textIndent\",\"textDecoration\",\"letterSpacing\",\"wordSpacing\",\"tabSize\",\"MozTabSize\"];if(t.debug){const h=document.querySelector(\"#input-textarea-caret-position-mirror-div\");h!=null&&h.parentNode&&h.parentNode.removeChild(h)}const a=document.createElement(\"div\");a.id=\"input-textarea-caret-position-mirror-div\",document.body.appendChild(a);const i=a.style,l=window.getComputedStyle(e),u=e.nodeName===\"INPUT\";i.whiteSpace=u?\"nowrap\":\"pre-wrap\",u||(i.wordWrap=\"break-word\"),i.position=\"absolute\",t.debug||(i.visibility=\"hidden\"),o.forEach(h=>{if(u&&h===\"lineHeight\")if(l.boxSizing===\"border-box\"){const v=Number.parseInt(l.height),b=Number.parseInt(l.paddingTop)+Number.parseInt(l.paddingBottom)+Number.parseInt(l.borderTopWidth)+Number.parseInt(l.borderBottomWidth),p=b+Number.parseInt(l.lineHeight);v>p?i.lineHeight=`${v-b}px`:v===p?i.lineHeight=l.lineHeight:i.lineHeight=\"0\"}else i.lineHeight=l.height;else i[h]=l[h]}),Rd()?e.scrollHeight>Number.parseInt(l.height)&&(i.overflowY=\"scroll\"):i.overflow=\"hidden\",a.textContent=e.value.slice(0,Math.max(0,s)),u&&a.textContent&&(a.textContent=a.textContent.replace(/\\s/g,\" \"));const f=document.createElement(\"span\");f.textContent=e.value.slice(Math.max(0,s))||\".\",f.style.position=\"relative\",f.style.left=`${-e.scrollLeft}px`,f.style.top=`${-e.scrollTop}px`,a.appendChild(f);const d={top:f.offsetTop+Number.parseInt(l.borderTopWidth),left:f.offsetLeft+Number.parseInt(l.borderLeftWidth),height:Number.parseInt(l.fontSize)*1.5};return t.debug?f.style.backgroundColor=\"#aaa\":document.body.removeChild(a),d.left>=e.clientWidth&&(d.left=e.clientWidth),d},GQ=xe({...Dv,options:{type:ie(Array),default:()=>[]},prefix:{type:ie([String,Array]),default:\"@\",validator:e=>ze(e)?e.length===1:e.every(t=>ze(t)&&t.length===1)},split:{type:String,default:\" \",validator:e=>e.length===1},filterOption:{type:ie([Boolean,Function]),default:()=>UQ,validator:e=>e===!1?!0:Ke(e)},placement:{type:ie(String),default:\"bottom\"},showArrow:Boolean,offset:{type:Number,default:0},whole:Boolean,checkIsWhole:{type:ie(Function)},modelValue:String,loading:Boolean,popperClass:{type:String,default:\"\"},popperOptions:{type:ie(Object),default:()=>({})}}),XQ={[ot]:e=>ze(e),search:(e,t)=>ze(e)&&ze(t),select:(e,t)=>ze(e.value)&&ze(t),focus:e=>e instanceof FocusEvent,blur:e=>e instanceof FocusEvent},JQ=xe({options:{type:ie(Array),default:()=>[]},loading:Boolean,disabled:Boolean,contentId:String,ariaLabel:String}),ZQ={select:e=>ze(e.value)},QQ=ee({name:\"ElMentionDropdown\"}),eee=ee({...QQ,props:JQ,emits:ZQ,setup(e,{expose:t,emit:n}){const r=e,s=we(\"mention\"),{t:o}=yt(),a=W(-1),i=W(),l=W(),u=W(),f=(_,w)=>[s.be(\"dropdown\",\"item\"),s.is(\"hovering\",a.value===w),s.is(\"disabled\",_.disabled||r.disabled)],d=_=>{_.disabled||r.disabled||n(\"select\",_)},h=_=>{a.value=_},v=O(()=>r.disabled||r.options.every(_=>_.disabled)),b=O(()=>r.options[a.value]),p=()=>{b.value&&n(\"select\",b.value)},g=_=>{const{options:w}=r;if(w.length===0||v.value)return;_===\"next\"?(a.value++,a.value===w.length&&(a.value=0)):_===\"prev\"&&(a.value--,a.value<0&&(a.value=w.length-1));const S=w[a.value];if(S.disabled){g(_);return}je(()=>m(S))},m=_=>{var w,S,C,E;const{options:k}=r,T=k.findIndex(M=>M.value===_.value),x=(w=l.value)==null?void 0:w[T];if(x){const M=(C=(S=u.value)==null?void 0:S.querySelector)==null?void 0:C.call(S,`.${s.be(\"dropdown\",\"wrap\")}`);M&&Ov(M,x)}(E=i.value)==null||E.handleScroll()};return ye(()=>r.options,()=>{v.value||r.options.length===0?a.value=-1:a.value=0},{immediate:!0}),t({hoveringIndex:a,navigateOptions:g,selectHoverOption:p,hoverOption:b}),(_,w)=>($(),X(\"div\",{ref_key:\"dropdownRef\",ref:u,class:D(c(s).b(\"dropdown\"))},[_.$slots.header?($(),X(\"div\",{key:0,class:D(c(s).be(\"dropdown\",\"header\"))},[ue(_.$slots,\"header\")],2)):de(\"v-if\",!0),st(H(c(ls),{id:_.contentId,ref_key:\"scrollbarRef\",ref:i,tag:\"ul\",\"wrap-class\":c(s).be(\"dropdown\",\"wrap\"),\"view-class\":c(s).be(\"dropdown\",\"list\"),role:\"listbox\",\"aria-label\":_.ariaLabel,\"aria-orientation\":\"vertical\"},{default:q(()=>[($(!0),X(We,null,vt(_.options,(S,C)=>($(),X(\"li\",{id:`${_.contentId}-${C}`,ref_for:!0,ref_key:\"optionRefs\",ref:l,key:C,class:D(f(S,C)),role:\"option\",\"aria-disabled\":S.disabled||_.disabled||void 0,\"aria-selected\":a.value===C,onMousemove:E=>h(C),onClick:Xe(E=>d(S),[\"stop\"])},[ue(_.$slots,\"label\",{item:S,index:C},()=>{var E;return[Z(\"span\",null,Ee((E=S.label)!=null?E:S.value),1)]})],42,[\"id\",\"aria-disabled\",\"aria-selected\",\"onMousemove\",\"onClick\"]))),128))]),_:3},8,[\"id\",\"wrap-class\",\"view-class\",\"aria-label\"]),[[Et,_.options.length>0&&!_.loading]]),_.loading?($(),X(\"div\",{key:1,class:D(c(s).be(\"dropdown\",\"loading\"))},[ue(_.$slots,\"loading\",{},()=>[Ve(Ee(c(o)(\"el.mention.loading\")),1)])],2)):de(\"v-if\",!0),_.$slots.footer?($(),X(\"div\",{key:2,class:D(c(s).be(\"dropdown\",\"footer\"))},[ue(_.$slots,\"footer\")],2)):de(\"v-if\",!0)],2))}});var tee=Oe(eee,[[\"__file\",\"mention-dropdown.vue\"]]);const nee=ee({name:\"ElMention\",inheritAttrs:!1}),ree=ee({...nee,props:GQ,emits:XQ,setup(e,{expose:t,emit:n}){const r=e,s=O(()=>Or(r,Object.keys(Dv))),o=we(\"mention\"),a=On(),i=Sn(),l=W(),u=W(),f=W(),d=W(!1),h=W(),v=W(),b=O(()=>r.showArrow?r.placement:`${r.placement}-start`),p=O(()=>r.showArrow?[\"bottom\",\"top\"]:[\"bottom-start\",\"top-start\"]),g=O(()=>{const{filterOption:A,options:P}=r;return!v.value||!A?P:P.filter(G=>A(v.value.pattern,G))}),m=O(()=>d.value&&(!!g.value.length||r.loading)),y=O(()=>{var A;return`${i.value}-${(A=f.value)==null?void 0:A.hoveringIndex}`}),_=A=>{n(\"update:modelValue\",A),T()},w=A=>{var P,G,V,I;if(!(!(\"code\"in A)||(P=l.value)!=null&&P.isComposing))switch(A.code){case Ne.left:case Ne.right:T();break;case Ne.up:case Ne.down:if(!d.value)return;A.preventDefault(),(G=f.value)==null||G.navigateOptions(A.code===Ne.up?\"prev\":\"next\");break;case Ne.enter:case Ne.numpadEnter:if(!d.value)return;A.preventDefault(),(V=f.value)!=null&&V.hoverOption?(I=f.value)==null||I.selectHoverOption():d.value=!1;break;case Ne.esc:if(!d.value)return;A.preventDefault(),d.value=!1;break;case Ne.backspace:if(r.whole&&v.value){const{splitIndex:j,selectionEnd:F,pattern:R,prefixIndex:B,prefix:N}=v.value,U=k();if(!U)return;const J=U.value,re=r.options.find(pe=>pe.value===R);if((Ke(r.checkIsWhole)?r.checkIsWhole(R,N):re)&&j!==-1&&j+1===F){A.preventDefault();const pe=J.slice(0,B)+J.slice(j+1);n(ot,pe);const K=B;je(()=>{U.selectionStart=K,U.selectionEnd=K,M()})}}}},{wrapperRef:S}=_o(l,{beforeFocus(){return a.value},afterFocus(){T()},beforeBlur(A){var P;return(P=u.value)==null?void 0:P.isFocusInsideContent(A)},afterBlur(){d.value=!1}}),C=()=>{T()},E=A=>{if(!v.value)return;const P=k();if(!P)return;const G=P.value,{split:V}=r,I=G.slice(v.value.end),j=I.startsWith(V),F=`${A.value}${j?\"\":V}`,R=G.slice(0,v.value.start)+F+I;n(ot,R),n(\"select\",A,v.value.prefix);const B=v.value.start+F.length+(j?1:0);je(()=>{P.selectionStart=B,P.selectionEnd=B,P.focus(),M()})},k=()=>{var A,P;return r.type===\"textarea\"?(A=l.value)==null?void 0:A.textarea:(P=l.value)==null?void 0:P.input},T=()=>{setTimeout(()=>{x(),M(),je(()=>{var A;return(A=u.value)==null?void 0:A.updatePopper()})},0)},x=()=>{const A=k();if(!A)return;const P=YQ(A),G=A.getBoundingClientRect(),V=l.value.$el.getBoundingClientRect();h.value={position:\"absolute\",width:0,height:`${P.height}px`,left:`${P.left+G.left-V.left}px`,top:`${P.top+G.top-V.top}px`}},M=()=>{const A=k();if(document.activeElement!==A){d.value=!1;return}const{prefix:P,split:G}=r;if(v.value=qQ(A,P,G),v.value&&v.value.splitIndex===-1){d.value=!0,n(\"search\",v.value.pattern,v.value.prefix);return}d.value=!1};return t({input:l,tooltip:u,dropdownVisible:m}),(A,P)=>($(),X(\"div\",{ref_key:\"wrapperRef\",ref:S,class:D(c(o).b())},[H(c(yn),ft(ft(c(s),A.$attrs),{ref_key:\"elInputRef\",ref:l,\"model-value\":A.modelValue,disabled:c(a),role:c(m)?\"combobox\":void 0,\"aria-activedescendant\":c(m)?c(y)||\"\":void 0,\"aria-controls\":c(m)?c(i):void 0,\"aria-expanded\":c(m)||void 0,\"aria-label\":A.ariaLabel,\"aria-autocomplete\":c(m)?\"none\":void 0,\"aria-haspopup\":c(m)?\"listbox\":void 0,onInput:_,onKeydown:w,onMousedown:C}),_r({_:2},[vt(A.$slots,(G,V)=>({name:V,fn:q(I=>[ue(A.$slots,V,xr(ro(I)))])}))]),1040,[\"model-value\",\"disabled\",\"role\",\"aria-activedescendant\",\"aria-controls\",\"aria-expanded\",\"aria-label\",\"aria-autocomplete\",\"aria-haspopup\"]),H(c(Cn),{ref_key:\"tooltipRef\",ref:u,visible:c(m),\"popper-class\":[c(o).e(\"popper\"),A.popperClass],\"popper-options\":A.popperOptions,placement:c(b),\"fallback-placements\":c(p),effect:\"light\",pure:\"\",offset:A.offset,\"show-arrow\":A.showArrow},{default:q(()=>[Z(\"div\",{style:Ue(h.value)},null,4)]),content:q(()=>{var G;return[H(tee,{ref_key:\"dropdownRef\",ref:f,options:c(g),disabled:c(a),loading:A.loading,\"content-id\":c(i),\"aria-label\":A.ariaLabel,onSelect:E,onClick:Xe((G=l.value)==null?void 0:G.focus,[\"stop\"])},_r({_:2},[vt(A.$slots,(V,I)=>({name:I,fn:q(j=>[ue(A.$slots,I,xr(ro(j)))])}))]),1032,[\"options\",\"disabled\",\"loading\",\"content-id\",\"aria-label\",\"onClick\"])]}),_:3},8,[\"visible\",\"popper-class\",\"popper-options\",\"placement\",\"fallback-placements\",\"offset\",\"show-arrow\"])],2))}});var see=Oe(ree,[[\"__file\",\"mention.vue\"]]);const oee=Qe(see);var iee=[PP,CD,gN,KG,CN,MN,CC,zN,WN,cn,Jv,B5,z5,oF,iF,oH,GC,dH,Sr,yF,HC,JC,e2,t2,Ad,r2,sV,l2,mV,gV,c2,_V,W9,Q9,e7,R2,x2,w7,uz,dz,fz,B2,H2,V2,He,wW,z2,yn,gm,BW,W2,lK,cK,uK,dK,gK,lj,J2,xo,bC,wm,Qv,$F,qC,Aj,Dj,Q2,ls,fo,wl,zK,wU,MU,AU,XU,tq,fk,fq,wq,Sq,xq,Ik,Pk,WG,eE,tE,Yi,nE,c9,pX,bX,yX,Cn,xJ,VJ,Ku,iZ,CZ,UZ,nQ,RQ,xQ,NQ,FQ,jQ,oee];const hr=\"ElInfiniteScroll\",aee=50,lee=200,cee=0,uee={delay:{type:Number,default:lee},distance:{type:Number,default:cee},disabled:{type:Boolean,default:!1},immediate:{type:Boolean,default:!0}},Xm=(e,t)=>Object.entries(uee).reduce((n,[r,s])=>{var o,a;const{type:i,default:l}=s,u=e.getAttribute(`infinite-scroll-${r}`);let f=(a=(o=t[u])!=null?o:u)!=null?a:l;return f=f===\"false\"?!1:f,f=i(f),n[r]=Number.isNaN(f)?l:f,n},{}),HE=e=>{const{observer:t}=e[hr];t&&(t.disconnect(),delete e[hr].observer)},dee=(e,t)=>{const{container:n,containerEl:r,instance:s,observer:o,lastScrollTop:a}=e[hr],{disabled:i,distance:l}=Xm(e,s),{clientHeight:u,scrollHeight:f,scrollTop:d}=r,h=d-a;if(e[hr].lastScrollTop=d,o||i||h<0)return;let v=!1;if(n===e)v=f-(u+d)<=l;else{const{clientTop:b,scrollHeight:p}=e,g=Fh(e,r);v=d+u>=g+b+p-l}v&&t.call(s)};function jf(e,t){const{containerEl:n,instance:r}=e[hr],{disabled:s}=Xm(e,r);s||n.clientHeight===0||(n.scrollHeight<=n.clientHeight?t.call(r):HE(e))}const fee={async mounted(e,t){const{instance:n,value:r}=t;Ke(r)||dn(hr,\"'v-infinite-scroll' binding value must be a function\"),await je();const{delay:s,immediate:o}=Xm(e,n),a=xv(e,!0),i=a===window?document.documentElement:a,l=zo(dee.bind(null,e,r),s);if(a){if(e[hr]={instance:n,container:a,containerEl:i,delay:s,cb:r,onScroll:l,lastScrollTop:i.scrollTop},o){const u=new MutationObserver(zo(jf.bind(null,e,r),aee));e[hr].observer=u,u.observe(e,{childList:!0,subtree:!0}),jf(e,r)}a.addEventListener(\"scroll\",l)}},unmounted(e){if(!e[hr])return;const{container:t,onScroll:n}=e[hr];t==null||t.removeEventListener(\"scroll\",n),HE(e)},async updated(e){if(!e[hr])await je();else{const{containerEl:t,cb:n,observer:r}=e[hr];t.clientHeight&&r&&jf(e,n)}}},xp=fee;xp.install=e=>{e.directive(\"InfiniteScroll\",xp)};const hee=xp;function pee(e){let t;const n=W(!1),r=St({...e,originalPosition:\"\",originalOverflow:\"\",visible:!1});function s(h){r.text=h}function o(){const h=r.parent,v=d.ns;if(!h.vLoadingAddClassList){let b=h.getAttribute(\"loading-number\");b=Number.parseInt(b)-1,b?h.setAttribute(\"loading-number\",b.toString()):(Bn(h,v.bm(\"parent\",\"relative\")),h.removeAttribute(\"loading-number\")),Bn(h,v.bm(\"parent\",\"hidden\"))}a(),f.unmount()}function a(){var h,v;(v=(h=d.$el)==null?void 0:h.parentNode)==null||v.removeChild(d.$el)}function i(){var h;e.beforeClose&&!e.beforeClose()||(n.value=!0,clearTimeout(t),t=setTimeout(l,400),r.visible=!1,(h=e.closed)==null||h.call(e))}function l(){if(!n.value)return;const h=r.parent;n.value=!1,h.vLoadingAddClassList=void 0,o()}const f=q1(ee({name:\"ElLoading\",setup(h,{expose:v}){const{ns:b,zIndex:p}=kd(\"loading\");return v({ns:b,zIndex:p}),()=>{const g=r.spinner||r.svg,m=Ye(\"svg\",{class:\"circular\",viewBox:r.svgViewBox?r.svgViewBox:\"0 0 50 50\",...g?{innerHTML:g}:{}},[Ye(\"circle\",{class:\"path\",cx:\"25\",cy:\"25\",r:\"20\",fill:\"none\"})]),y=r.text?Ye(\"p\",{class:b.b(\"text\")},[r.text]):void 0;return Ye(_n,{name:b.b(\"fade\"),onAfterLeave:l},{default:q(()=>[st(H(\"div\",{style:{backgroundColor:r.background||\"\"},class:[b.b(\"mask\"),r.customClass,r.fullscreen?\"is-fullscreen\":\"\"]},[Ye(\"div\",{class:b.b(\"spinner\")},[m,y])]),[[Et,r.visible]])])})}}})),d=f.mount(document.createElement(\"div\"));return{...hn(r),setText:s,removeElLoadingChild:a,close:i,handleAfterLeave:l,vm:d,get $el(){return d.$el}}}let Mc;const Op=function(e={}){if(!bt)return;const t=vee(e);if(t.fullscreen&&Mc)return Mc;const n=pee({...t,closed:()=>{var s;(s=t.closed)==null||s.call(t),t.fullscreen&&(Mc=void 0)}});mee(t,t.parent,n),fy(t,t.parent,n),t.parent.vLoadingAddClassList=()=>fy(t,t.parent,n);let r=t.parent.getAttribute(\"loading-number\");return r?r=`${Number.parseInt(r)+1}`:r=\"1\",t.parent.setAttribute(\"loading-number\",r),t.parent.appendChild(n.$el),je(()=>n.visible.value=t.visible),t.fullscreen&&(Mc=n),n},vee=e=>{var t,n,r,s;let o;return ze(e.target)?o=(t=document.querySelector(e.target))!=null?t:document.body:o=e.target||document.body,{parent:o===document.body||e.body?document.body:o,background:e.background||\"\",svg:e.svg||\"\",svgViewBox:e.svgViewBox||\"\",spinner:e.spinner||!1,text:e.text||\"\",fullscreen:o===document.body&&((n=e.fullscreen)!=null?n:!0),lock:(r=e.lock)!=null?r:!1,customClass:e.customClass||\"\",visible:(s=e.visible)!=null?s:!0,beforeClose:e.beforeClose,closed:e.closed,target:o}},mee=async(e,t,n)=>{const{nextZIndex:r}=n.vm.zIndex||n.vm._.exposed.zIndex,s={};if(e.fullscreen)n.originalPosition.value=bs(document.body,\"position\"),n.originalOverflow.value=bs(document.body,\"overflow\"),s.zIndex=r();else if(e.parent===document.body){n.originalPosition.value=bs(document.body,\"position\"),await je();for(const o of[\"top\",\"left\"]){const a=o===\"top\"?\"scrollTop\":\"scrollLeft\";s[o]=`${e.target.getBoundingClientRect()[o]+document.body[a]+document.documentElement[a]-Number.parseInt(bs(document.body,`margin-${o}`),10)}px`}for(const o of[\"height\",\"width\"])s[o]=`${e.target.getBoundingClientRect()[o]}px`}else n.originalPosition.value=bs(t,\"position\");for(const[o,a]of Object.entries(s))n.$el.style[o]=a},fy=(e,t,n)=>{const r=n.vm.ns||n.vm._.exposed.ns;[\"absolute\",\"fixed\",\"sticky\"].includes(n.originalPosition.value)?Bn(t,r.bm(\"parent\",\"relative\")):pr(t,r.bm(\"parent\",\"relative\")),e.fullscreen&&e.lock?pr(t,r.bm(\"parent\",\"hidden\")):Bn(t,r.bm(\"parent\",\"hidden\"))},uu=Symbol(\"ElLoading\"),hy=(e,t)=>{var n,r,s,o;const a=t.instance,i=h=>lt(t.value)?t.value[h]:void 0,l=h=>{const v=ze(h)&&(a==null?void 0:a[h])||h;return v&&W(v)},u=h=>l(i(h)||e.getAttribute(`element-loading-${Ts(h)}`)),f=(n=i(\"fullscreen\"))!=null?n:t.modifiers.fullscreen,d={text:u(\"text\"),svg:u(\"svg\"),svgViewBox:u(\"svgViewBox\"),spinner:u(\"spinner\"),background:u(\"background\"),customClass:u(\"customClass\"),fullscreen:f,target:(r=i(\"target\"))!=null?r:f?void 0:e,body:(s=i(\"body\"))!=null?s:t.modifiers.body,lock:(o=i(\"lock\"))!=null?o:t.modifiers.lock};e[uu]={options:d,instance:Op(d)}},gee=(e,t)=>{for(const n of Object.keys(t))Ft(t[n])&&(t[n].value=e[n])},py={mounted(e,t){t.value&&hy(e,t)},updated(e,t){const n=e[uu];t.oldValue!==t.value&&(t.value&&!t.oldValue?hy(e,t):t.value&&t.oldValue?lt(t.value)&&gee(t.value,n.options):n==null||n.instance.close())},unmounted(e){var t;(t=e[uu])==null||t.instance.close(),e[uu]=null}},_ee={install(e){e.directive(\"loading\",py),e.config.globalProperties.$loading=Op},directive:py,service:Op},VE=[\"success\",\"info\",\"warning\",\"error\"],An=Yt({customClass:\"\",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:\"\",message:\"\",onClose:void 0,showClose:!1,type:\"info\",plain:!1,offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:bt?document.body:void 0}),bee=xe({customClass:{type:String,default:An.customClass},center:{type:Boolean,default:An.center},dangerouslyUseHTMLString:{type:Boolean,default:An.dangerouslyUseHTMLString},duration:{type:Number,default:An.duration},icon:{type:Nt,default:An.icon},id:{type:String,default:An.id},message:{type:ie([String,Object,Function]),default:An.message},onClose:{type:ie(Function),default:An.onClose},showClose:{type:Boolean,default:An.showClose},type:{type:String,values:VE,default:An.type},plain:{type:Boolean,default:An.plain},offset:{type:Number,default:An.offset},zIndex:{type:Number,default:An.zIndex},grouping:{type:Boolean,default:An.grouping},repeatNum:{type:Number,default:An.repeatNum}}),yee={destroy:()=>!0},Mr=Wp([]),wee=e=>{const t=Mr.findIndex(s=>s.id===e),n=Mr[t];let r;return t>0&&(r=Mr[t-1]),{current:n,prev:r}},See=e=>{const{prev:t}=wee(e);return t?t.vm.exposed.bottom.value:0},Cee=(e,t)=>Mr.findIndex(r=>r.id===e)>0?16:t,kee=ee({name:\"ElMessage\"}),Eee=ee({...kee,props:bee,emits:yee,setup(e,{expose:t}){const n=e,{Close:r}=Pv,{ns:s,zIndex:o}=kd(\"message\"),{currentZIndex:a,nextZIndex:i}=o,l=W(),u=W(!1),f=W(0);let d;const h=O(()=>n.type?n.type===\"error\"?\"danger\":n.type:\"info\"),v=O(()=>{const E=n.type;return{[s.bm(\"icon\",E)]:E&&uo[E]}}),b=O(()=>n.icon||uo[n.type]||\"\"),p=O(()=>See(n.id)),g=O(()=>Cee(n.id,n.offset)+p.value),m=O(()=>f.value+g.value),y=O(()=>({top:`${g.value}px`,zIndex:a.value}));function _(){n.duration!==0&&({stop:d}=Jo(()=>{S()},n.duration))}function w(){d==null||d()}function S(){u.value=!1}function C({code:E}){E===Ne.esc&&S()}return it(()=>{_(),i(),u.value=!0}),ye(()=>n.repeatNum,()=>{w(),_()}),It(document,\"keydown\",C),jt(l,()=>{f.value=l.value.getBoundingClientRect().height}),t({visible:u,bottom:m,close:S}),(E,k)=>($(),ve(_n,{name:c(s).b(\"fade\"),onBeforeLeave:E.onClose,onAfterLeave:T=>E.$emit(\"destroy\"),persisted:\"\"},{default:q(()=>[st(Z(\"div\",{id:E.id,ref_key:\"messageRef\",ref:l,class:D([c(s).b(),{[c(s).m(E.type)]:E.type},c(s).is(\"center\",E.center),c(s).is(\"closable\",E.showClose),c(s).is(\"plain\",E.plain),E.customClass]),style:Ue(c(y)),role:\"alert\",onMouseenter:w,onMouseleave:_},[E.repeatNum>1?($(),ve(c(CC),{key:0,value:E.repeatNum,type:c(h),class:D(c(s).e(\"badge\"))},null,8,[\"value\",\"type\",\"class\"])):de(\"v-if\",!0),c(b)?($(),ve(c(He),{key:1,class:D([c(s).e(\"icon\"),c(v)])},{default:q(()=>[($(),ve(dt(c(b))))]),_:1},8,[\"class\"])):de(\"v-if\",!0),ue(E.$slots,\"default\",{},()=>[E.dangerouslyUseHTMLString?($(),X(We,{key:1},[de(\" Caution here, message could've been compromised, never use user's input as message \"),Z(\"p\",{class:D(c(s).e(\"content\")),innerHTML:E.message},null,10,[\"innerHTML\"])],2112)):($(),X(\"p\",{key:0,class:D(c(s).e(\"content\"))},Ee(E.message),3))]),E.showClose?($(),ve(c(He),{key:2,class:D(c(s).e(\"closeBtn\")),onClick:Xe(S,[\"stop\"])},{default:q(()=>[H(c(r))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0)],46,[\"id\"]),[[Et,u.value]])]),_:3},8,[\"name\",\"onBeforeLeave\",\"onAfterLeave\"]))}});var Tee=Oe(Eee,[[\"__file\",\"message.vue\"]]);let Ree=1;const zE=e=>{const t=!e||ze(e)||Ut(e)||Ke(e)?{message:e}:e,n={...An,...t};if(!n.appendTo)n.appendTo=document.body;else if(ze(n.appendTo)){let r=document.querySelector(n.appendTo);lr(r)||(r=document.body),n.appendTo=r}return Vt(Tr.grouping)&&!n.grouping&&(n.grouping=Tr.grouping),Ge(Tr.duration)&&n.duration===3e3&&(n.duration=Tr.duration),Ge(Tr.offset)&&n.offset===16&&(n.offset=Tr.offset),Vt(Tr.showClose)&&!n.showClose&&(n.showClose=Tr.showClose),n},xee=e=>{const t=Mr.indexOf(e);if(t===-1)return;Mr.splice(t,1);const{handler:n}=e;n.close()},Oee=({appendTo:e,...t},n)=>{const r=`message_${Ree++}`,s=t.onClose,o=document.createElement(\"div\"),a={...t,id:r,onClose:()=>{s==null||s(),xee(f)},onDestroy:()=>{so(null,o)}},i=H(Tee,a,Ke(a.message)||Ut(a.message)?{default:Ke(a.message)?a.message:()=>a.message}:null);i.appContext=n||ta._context,so(i,o),e.appendChild(o.firstElementChild);const l=i.component,f={id:r,vnode:i,vm:l,handler:{close:()=>{l.exposed.visible.value=!1}},props:i.component.props};return f},ta=(e={},t)=>{if(!bt)return{close:()=>{}};const n=zE(e);if(n.grouping&&Mr.length){const s=Mr.find(({vnode:o})=>{var a;return((a=o.props)==null?void 0:a.message)===n.message});if(s)return s.props.repeatNum+=1,s.props.type=n.type,s.handler}if(Ge(Tr.max)&&Mr.length>=Tr.max)return{close:()=>{}};const r=Oee(n,t);return Mr.push(r),r.handler};VE.forEach(e=>{ta[e]=(t={},n)=>{const r=zE(t);return ta({...r,type:e},n)}});function Mee(e){for(const t of Mr)(!e||e===t.props.type)&&t.handler.close()}ta.closeAll=Mee;ta._context=null;const wt=VS(ta,\"$message\"),Mp=\"_trap-focus-children\",No=[],vy=e=>{if(No.length===0)return;const t=No[No.length-1][Mp];if(t.length>0&&e.code===Ne.tab){if(t.length===1){e.preventDefault(),document.activeElement!==t[0]&&t[0].focus();return}const n=e.shiftKey,r=e.target===t[0],s=e.target===t[t.length-1];r&&n&&(e.preventDefault(),t[t.length-1].focus()),s&&!n&&(e.preventDefault(),t[0].focus())}},Aee={beforeMount(e){e[Mp]=__(e),No.push(e),No.length<=1&&document.addEventListener(\"keydown\",vy)},updated(e){je(()=>{e[Mp]=__(e)})},unmounted(){No.shift(),No.length===0&&document.removeEventListener(\"keydown\",vy)}},$ee=ee({name:\"ElMessageBox\",directives:{TrapFocus:Aee},components:{ElButton:cn,ElFocusTrap:ha,ElInput:yn,ElOverlay:fm,ElIcon:He,...Pv},inheritAttrs:!1,props:{buttonSize:{type:String,validator:pk},modal:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},showClose:{type:Boolean,default:!0},closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},closeOnHashChange:{type:Boolean,default:!0},center:Boolean,draggable:Boolean,overflow:Boolean,roundButton:{default:!1,type:Boolean},container:{type:String,default:\"body\"},boxType:{type:String,default:\"\"}},emits:[\"vanish\",\"action\"],setup(e,{emit:t}){const{locale:n,zIndex:r,ns:s,size:o}=kd(\"message-box\",O(()=>e.buttonSize)),{t:a}=n,{nextZIndex:i}=r,l=W(!1),u=St({autofocus:!0,beforeClose:null,callback:null,cancelButtonText:\"\",cancelButtonClass:\"\",confirmButtonText:\"\",confirmButtonClass:\"\",customClass:\"\",customStyle:{},dangerouslyUseHTMLString:!1,distinguishCancelAndClose:!1,icon:\"\",inputPattern:null,inputPlaceholder:\"\",inputType:\"text\",inputValue:null,inputValidator:null,inputErrorMessage:\"\",message:null,modalFade:!0,modalClass:\"\",showCancelButton:!1,showConfirmButton:!0,type:\"\",title:void 0,showInput:!1,action:\"\",confirmButtonLoading:!1,cancelButtonLoading:!1,confirmButtonLoadingIcon:Jr(ts),cancelButtonLoadingIcon:Jr(ts),confirmButtonDisabled:!1,editorErrorMessage:\"\",validateError:!1,zIndex:i()}),f=O(()=>{const I=u.type;return{[s.bm(\"icon\",I)]:I&&uo[I]}}),d=Sn(),h=Sn(),v=O(()=>u.icon||uo[u.type]||\"\"),b=O(()=>!!u.message),p=W(),g=W(),m=W(),y=W(),_=W(),w=O(()=>u.confirmButtonClass);ye(()=>u.inputValue,async I=>{await je(),e.boxType===\"prompt\"&&I!==null&&A()},{immediate:!0}),ye(()=>l.value,I=>{var j,F;I&&(e.boxType!==\"prompt\"&&(u.autofocus?m.value=(F=(j=_.value)==null?void 0:j.$el)!=null?F:p.value:m.value=p.value),u.zIndex=i()),e.boxType===\"prompt\"&&(I?je().then(()=>{var R;y.value&&y.value.$el&&(u.autofocus?m.value=(R=P())!=null?R:p.value:m.value=p.value)}):(u.editorErrorMessage=\"\",u.validateError=!1))});const S=O(()=>e.draggable),C=O(()=>e.overflow);C2(p,g,S,C),it(async()=>{await je(),e.closeOnHashChange&&window.addEventListener(\"hashchange\",E)}),Pt(()=>{e.closeOnHashChange&&window.removeEventListener(\"hashchange\",E)});function E(){l.value&&(l.value=!1,je(()=>{u.action&&t(\"action\",u.action)}))}const k=()=>{e.closeOnClickModal&&M(u.distinguishCancelAndClose?\"close\":\"cancel\")},T=dm(k),x=I=>{if(u.inputType!==\"textarea\")return I.preventDefault(),M(\"confirm\")},M=I=>{var j;e.boxType===\"prompt\"&&I===\"confirm\"&&!A()||(u.action=I,u.beforeClose?(j=u.beforeClose)==null||j.call(u,I,u,E):E())},A=()=>{if(e.boxType===\"prompt\"){const I=u.inputPattern;if(I&&!I.test(u.inputValue||\"\"))return u.editorErrorMessage=u.inputErrorMessage||a(\"el.messagebox.error\"),u.validateError=!0,!1;const j=u.inputValidator;if(Ke(j)){const F=j(u.inputValue);if(F===!1)return u.editorErrorMessage=u.inputErrorMessage||a(\"el.messagebox.error\"),u.validateError=!0,!1;if(ze(F))return u.editorErrorMessage=F,u.validateError=!0,!1}}return u.editorErrorMessage=\"\",u.validateError=!1,!0},P=()=>{const I=y.value.$refs;return I.input||I.textarea},G=()=>{M(\"close\")},V=()=>{e.closeOnPressEscape&&G()};return e.lockScroll&&hm(l),{...hn(u),ns:s,overlayEvent:T,visible:l,hasMessage:b,typeClass:f,contentId:d,inputId:h,btnSize:o,iconComponent:v,confirmButtonClasses:w,rootRef:p,focusStartRef:m,headerRef:g,inputRef:y,confirmRef:_,doClose:E,handleClose:G,onCloseRequested:V,handleWrapperClick:k,handleInputEnter:x,handleAction:M,t:a}}});function Lee(e,t,n,r,s,o){const a=ut(\"el-icon\"),i=ut(\"close\"),l=ut(\"el-input\"),u=ut(\"el-button\"),f=ut(\"el-focus-trap\"),d=ut(\"el-overlay\");return $(),ve(_n,{name:\"fade-in-linear\",onAfterLeave:h=>e.$emit(\"vanish\"),persisted:\"\"},{default:q(()=>[st(H(d,{\"z-index\":e.zIndex,\"overlay-class\":[e.ns.is(\"message-box\"),e.modalClass],mask:e.modal},{default:q(()=>[Z(\"div\",{role:\"dialog\",\"aria-label\":e.title,\"aria-modal\":\"true\",\"aria-describedby\":e.showInput?void 0:e.contentId,class:D(`${e.ns.namespace.value}-overlay-message-box`),onClick:e.overlayEvent.onClick,onMousedown:e.overlayEvent.onMousedown,onMouseup:e.overlayEvent.onMouseup},[H(f,{loop:\"\",trapped:e.visible,\"focus-trap-el\":e.rootRef,\"focus-start-el\":e.focusStartRef,onReleaseRequested:e.onCloseRequested},{default:q(()=>[Z(\"div\",{ref:\"rootRef\",class:D([e.ns.b(),e.customClass,e.ns.is(\"draggable\",e.draggable),{[e.ns.m(\"center\")]:e.center}]),style:Ue(e.customStyle),tabindex:\"-1\",onClick:Xe(()=>{},[\"stop\"])},[e.title!==null&&e.title!==void 0?($(),X(\"div\",{key:0,ref:\"headerRef\",class:D([e.ns.e(\"header\"),{\"show-close\":e.showClose}])},[Z(\"div\",{class:D(e.ns.e(\"title\"))},[e.iconComponent&&e.center?($(),ve(a,{key:0,class:D([e.ns.e(\"status\"),e.typeClass])},{default:q(()=>[($(),ve(dt(e.iconComponent)))]),_:1},8,[\"class\"])):de(\"v-if\",!0),Z(\"span\",null,Ee(e.title),1)],2),e.showClose?($(),X(\"button\",{key:0,type:\"button\",class:D(e.ns.e(\"headerbtn\")),\"aria-label\":e.t(\"el.messagebox.close\"),onClick:h=>e.handleAction(e.distinguishCancelAndClose?\"close\":\"cancel\"),onKeydown:Ht(Xe(h=>e.handleAction(e.distinguishCancelAndClose?\"close\":\"cancel\"),[\"prevent\"]),[\"enter\"])},[H(a,{class:D(e.ns.e(\"close\"))},{default:q(()=>[H(i)]),_:1},8,[\"class\"])],42,[\"aria-label\",\"onClick\",\"onKeydown\"])):de(\"v-if\",!0)],2)):de(\"v-if\",!0),Z(\"div\",{id:e.contentId,class:D(e.ns.e(\"content\"))},[Z(\"div\",{class:D(e.ns.e(\"container\"))},[e.iconComponent&&!e.center&&e.hasMessage?($(),ve(a,{key:0,class:D([e.ns.e(\"status\"),e.typeClass])},{default:q(()=>[($(),ve(dt(e.iconComponent)))]),_:1},8,[\"class\"])):de(\"v-if\",!0),e.hasMessage?($(),X(\"div\",{key:1,class:D(e.ns.e(\"message\"))},[ue(e.$slots,\"default\",{},()=>[e.dangerouslyUseHTMLString?($(),ve(dt(e.showInput?\"label\":\"p\"),{key:1,for:e.showInput?e.inputId:void 0,innerHTML:e.message},null,8,[\"for\",\"innerHTML\"])):($(),ve(dt(e.showInput?\"label\":\"p\"),{key:0,for:e.showInput?e.inputId:void 0},{default:q(()=>[Ve(Ee(e.dangerouslyUseHTMLString?\"\":e.message),1)]),_:1},8,[\"for\"]))])],2)):de(\"v-if\",!0)],2),st(Z(\"div\",{class:D(e.ns.e(\"input\"))},[H(l,{id:e.inputId,ref:\"inputRef\",modelValue:e.inputValue,\"onUpdate:modelValue\":h=>e.inputValue=h,type:e.inputType,placeholder:e.inputPlaceholder,\"aria-invalid\":e.validateError,class:D({invalid:e.validateError}),onKeydown:Ht(e.handleInputEnter,[\"enter\"])},null,8,[\"id\",\"modelValue\",\"onUpdate:modelValue\",\"type\",\"placeholder\",\"aria-invalid\",\"class\",\"onKeydown\"]),Z(\"div\",{class:D(e.ns.e(\"errormsg\")),style:Ue({visibility:e.editorErrorMessage?\"visible\":\"hidden\"})},Ee(e.editorErrorMessage),7)],2),[[Et,e.showInput]])],10,[\"id\"]),Z(\"div\",{class:D(e.ns.e(\"btns\"))},[e.showCancelButton?($(),ve(u,{key:0,loading:e.cancelButtonLoading,\"loading-icon\":e.cancelButtonLoadingIcon,class:D([e.cancelButtonClass]),round:e.roundButton,size:e.btnSize,onClick:h=>e.handleAction(\"cancel\"),onKeydown:Ht(Xe(h=>e.handleAction(\"cancel\"),[\"prevent\"]),[\"enter\"])},{default:q(()=>[Ve(Ee(e.cancelButtonText||e.t(\"el.messagebox.cancel\")),1)]),_:1},8,[\"loading\",\"loading-icon\",\"class\",\"round\",\"size\",\"onClick\",\"onKeydown\"])):de(\"v-if\",!0),st(H(u,{ref:\"confirmRef\",type:\"primary\",loading:e.confirmButtonLoading,\"loading-icon\":e.confirmButtonLoadingIcon,class:D([e.confirmButtonClasses]),round:e.roundButton,disabled:e.confirmButtonDisabled,size:e.btnSize,onClick:h=>e.handleAction(\"confirm\"),onKeydown:Ht(Xe(h=>e.handleAction(\"confirm\"),[\"prevent\"]),[\"enter\"])},{default:q(()=>[Ve(Ee(e.confirmButtonText||e.t(\"el.messagebox.confirm\")),1)]),_:1},8,[\"loading\",\"loading-icon\",\"class\",\"round\",\"disabled\",\"size\",\"onClick\",\"onKeydown\"]),[[Et,e.showConfirmButton]])],2)],14,[\"onClick\"])]),_:3},8,[\"trapped\",\"focus-trap-el\",\"focus-start-el\",\"onReleaseRequested\"])],42,[\"aria-label\",\"aria-describedby\",\"onClick\",\"onMousedown\",\"onMouseup\"])]),_:3},8,[\"z-index\",\"overlay-class\",\"mask\"]),[[Et,e.visible]])]),_:3},8,[\"onAfterLeave\"])}var Iee=Oe($ee,[[\"render\",Lee],[\"__file\",\"index.vue\"]]);const Ml=new Map,Pee=e=>{let t=document.body;return e.appendTo&&(ze(e.appendTo)&&(t=document.querySelector(e.appendTo)),lr(e.appendTo)&&(t=e.appendTo),lr(t)||(t=document.body)),t},Dee=(e,t,n=null)=>{const r=H(Iee,e,Ke(e.message)||Ut(e.message)?{default:Ke(e.message)?e.message:()=>e.message}:null);return r.appContext=n,so(r,t),Pee(e).appendChild(t.firstElementChild),r.component},Bee=()=>document.createElement(\"div\"),Nee=(e,t)=>{const n=Bee();e.onVanish=()=>{so(null,n),Ml.delete(s)},e.onAction=o=>{const a=Ml.get(s);let i;e.showInput?i={value:s.inputValue,action:o}:i=o,e.callback?e.callback(i,r.proxy):o===\"cancel\"||o===\"close\"?e.distinguishCancelAndClose&&o!==\"cancel\"?a.reject(\"close\"):a.reject(\"cancel\"):a.resolve(i)};const r=Dee(e,n,t),s=r.proxy;for(const o in e)kt(e,o)&&!kt(s.$props,o)&&(s[o]=e[o]);return s.visible=!0,s};function _a(e,t=null){if(!bt)return Promise.reject();let n;return ze(e)||Ut(e)?e={message:e}:n=e.callback,new Promise((r,s)=>{const o=Nee(e,t??_a._context);Ml.set(o,{options:e,callback:n,resolve:r,reject:s})})}const Fee=[\"alert\",\"confirm\",\"prompt\"],Hee={alert:{closeOnPressEscape:!1,closeOnClickModal:!1},confirm:{showCancelButton:!0},prompt:{showCancelButton:!0,showInput:!0}};Fee.forEach(e=>{_a[e]=Vee(e)});function Vee(e){return(t,n,r,s)=>{let o=\"\";return lt(n)?(r=n,o=\"\"):Lt(n)?o=\"\":o=n,_a(Object.assign({title:o,message:t,type:\"\",...Hee[e]},r,{boxType:e}),s)}}_a.close=()=>{Ml.forEach((e,t)=>{t.doClose()}),Ml.clear()};_a._context=null;const Ws=_a;Ws.install=e=>{Ws._context=e._context,e.config.globalProperties.$msgbox=Ws,e.config.globalProperties.$messageBox=Ws,e.config.globalProperties.$alert=Ws.alert,e.config.globalProperties.$confirm=Ws.confirm,e.config.globalProperties.$prompt=Ws.prompt};const zee=Ws,WE=[\"success\",\"info\",\"warning\",\"error\"],Wee=xe({customClass:{type:String,default:\"\"},dangerouslyUseHTMLString:Boolean,duration:{type:Number,default:4500},icon:{type:Nt},id:{type:String,default:\"\"},message:{type:ie([String,Object,Function]),default:\"\"},offset:{type:Number,default:0},onClick:{type:ie(Function),default:()=>{}},onClose:{type:ie(Function),required:!0},position:{type:String,values:[\"top-right\",\"top-left\",\"bottom-right\",\"bottom-left\"],default:\"top-right\"},showClose:{type:Boolean,default:!0},title:{type:String,default:\"\"},type:{type:String,values:[...WE,\"\"],default:\"\"},zIndex:Number}),Kee={destroy:()=>!0},jee=ee({name:\"ElNotification\"}),Uee=ee({...jee,props:Wee,emits:Kee,setup(e,{expose:t}){const n=e,{ns:r,zIndex:s}=kd(\"notification\"),{nextZIndex:o,currentZIndex:a}=s,{Close:i}=Iv,l=W(!1);let u;const f=O(()=>{const _=n.type;return _&&uo[n.type]?r.m(_):\"\"}),d=O(()=>n.type&&uo[n.type]||n.icon),h=O(()=>n.position.endsWith(\"right\")?\"right\":\"left\"),v=O(()=>n.position.startsWith(\"top\")?\"top\":\"bottom\"),b=O(()=>{var _;return{[v.value]:`${n.offset}px`,zIndex:(_=n.zIndex)!=null?_:a.value}});function p(){n.duration>0&&({stop:u}=Jo(()=>{l.value&&m()},n.duration))}function g(){u==null||u()}function m(){l.value=!1}function y({code:_}){_===Ne.delete||_===Ne.backspace?g():_===Ne.esc?l.value&&m():p()}return it(()=>{p(),o(),l.value=!0}),It(document,\"keydown\",y),t({visible:l,close:m}),(_,w)=>($(),ve(_n,{name:c(r).b(\"fade\"),onBeforeLeave:_.onClose,onAfterLeave:S=>_.$emit(\"destroy\"),persisted:\"\"},{default:q(()=>[st(Z(\"div\",{id:_.id,class:D([c(r).b(),_.customClass,c(h)]),style:Ue(c(b)),role:\"alert\",onMouseenter:g,onMouseleave:p,onClick:_.onClick},[c(d)?($(),ve(c(He),{key:0,class:D([c(r).e(\"icon\"),c(f)])},{default:q(()=>[($(),ve(dt(c(d))))]),_:1},8,[\"class\"])):de(\"v-if\",!0),Z(\"div\",{class:D(c(r).e(\"group\"))},[Z(\"h2\",{class:D(c(r).e(\"title\")),textContent:Ee(_.title)},null,10,[\"textContent\"]),st(Z(\"div\",{class:D(c(r).e(\"content\")),style:Ue(_.title?void 0:{margin:0})},[ue(_.$slots,\"default\",{},()=>[_.dangerouslyUseHTMLString?($(),X(We,{key:1},[de(\" Caution here, message could've been compromised, never use user's input as message \"),Z(\"p\",{innerHTML:_.message},null,8,[\"innerHTML\"])],2112)):($(),X(\"p\",{key:0},Ee(_.message),1))])],6),[[Et,_.message]]),_.showClose?($(),ve(c(He),{key:0,class:D(c(r).e(\"closeBtn\")),onClick:Xe(m,[\"stop\"])},{default:q(()=>[H(c(i))]),_:1},8,[\"class\",\"onClick\"])):de(\"v-if\",!0)],2)],46,[\"id\",\"onClick\"]),[[Et,l.value]])]),_:3},8,[\"name\",\"onBeforeLeave\",\"onAfterLeave\"]))}});var qee=Oe(Uee,[[\"__file\",\"notification.vue\"]]);const ju={\"top-left\":[],\"top-right\":[],\"bottom-left\":[],\"bottom-right\":[]},Ap=16;let Yee=1;const na=function(e={},t){if(!bt)return{close:()=>{}};(ze(e)||Ut(e))&&(e={message:e});const n=e.position||\"top-right\";let r=e.offset||0;ju[n].forEach(({vm:f})=>{var d;r+=(((d=f.el)==null?void 0:d.offsetHeight)||0)+Ap}),r+=Ap;const s=`notification_${Yee++}`,o=e.onClose,a={...e,offset:r,id:s,onClose:()=>{Gee(s,n,o)}};let i=document.body;lr(e.appendTo)?i=e.appendTo:ze(e.appendTo)&&(i=document.querySelector(e.appendTo)),lr(i)||(i=document.body);const l=document.createElement(\"div\"),u=H(qee,a,Ke(a.message)?a.message:Ut(a.message)?()=>a.message:null);return u.appContext=Lt(t)?na._context:t,u.props.onDestroy=()=>{so(null,l)},so(u,l),ju[n].push({vm:u}),i.appendChild(l.firstElementChild),{close:()=>{u.component.exposed.visible.value=!1}}};WE.forEach(e=>{na[e]=(t={},n)=>((ze(t)||Ut(t))&&(t={message:t}),na({...t,type:e},n))});function Gee(e,t,n){const r=ju[t],s=r.findIndex(({vm:u})=>{var f;return((f=u.component)==null?void 0:f.props.id)===e});if(s===-1)return;const{vm:o}=r[s];if(!o)return;n==null||n(o);const a=o.el.offsetHeight,i=t.split(\"-\")[0];r.splice(s,1);const l=r.length;if(!(l<1))for(let u=s;u<l;u++){const{el:f,component:d}=r[u].vm,h=Number.parseInt(f.style[i],10)-a-Ap;d.props.offset=h}}function Xee(){for(const e of Object.values(ju))e.forEach(({vm:t})=>{t.component.exposed.visible.value=!1})}na.closeAll=Xee;na._context=null;const KE=VS(na,\"$notify\");var Jee=[hee,_ee,wt,zee,KE,Z2],Zee=EP([...iee,...Jee]),Uf={exports:{}},my;function Qee(){return my||(my=1,function(e,t){(function(n,r){e.exports=r()})(globalThis,()=>(()=>{var n={4567:function(a,i,l){var u=this&&this.__decorate||function(y,_,w,S){var C,E=arguments.length,k=E<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")k=Reflect.decorate(y,_,w,S);else for(var T=y.length-1;T>=0;T--)(C=y[T])&&(k=(E<3?C(k):E>3?C(_,w,k):C(_,w))||k);return E>3&&k&&Object.defineProperty(_,w,k),k},f=this&&this.__param||function(y,_){return function(w,S){_(w,S,y)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.AccessibilityManager=void 0;const d=l(9042),h=l(9924),v=l(844),b=l(4725),p=l(2585),g=l(3656);let m=i.AccessibilityManager=class extends v.Disposable{constructor(y,_,w,S){super(),this._terminal=y,this._coreBrowserService=w,this._renderService=S,this._rowColumns=new WeakMap,this._liveRegionLineCount=0,this._charsToConsume=[],this._charsToAnnounce=\"\",this._accessibilityContainer=this._coreBrowserService.mainDocument.createElement(\"div\"),this._accessibilityContainer.classList.add(\"xterm-accessibility\"),this._rowContainer=this._coreBrowserService.mainDocument.createElement(\"div\"),this._rowContainer.setAttribute(\"role\",\"list\"),this._rowContainer.classList.add(\"xterm-accessibility-tree\"),this._rowElements=[];for(let C=0;C<this._terminal.rows;C++)this._rowElements[C]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[C]);if(this._topBoundaryFocusListener=C=>this._handleBoundaryFocus(C,0),this._bottomBoundaryFocusListener=C=>this._handleBoundaryFocus(C,1),this._rowElements[0].addEventListener(\"focus\",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(\"focus\",this._bottomBoundaryFocusListener),this._refreshRowsDimensions(),this._accessibilityContainer.appendChild(this._rowContainer),this._liveRegion=this._coreBrowserService.mainDocument.createElement(\"div\"),this._liveRegion.classList.add(\"live-region\"),this._liveRegion.setAttribute(\"aria-live\",\"assertive\"),this._accessibilityContainer.appendChild(this._liveRegion),this._liveRegionDebouncer=this.register(new h.TimeBasedDebouncer(this._renderRows.bind(this))),!this._terminal.element)throw new Error(\"Cannot enable accessibility before Terminal.open\");this._terminal.element.insertAdjacentElement(\"afterbegin\",this._accessibilityContainer),this.register(this._terminal.onResize(C=>this._handleResize(C.rows))),this.register(this._terminal.onRender(C=>this._refreshRows(C.start,C.end))),this.register(this._terminal.onScroll(()=>this._refreshRows())),this.register(this._terminal.onA11yChar(C=>this._handleChar(C))),this.register(this._terminal.onLineFeed(()=>this._handleChar(`\n`))),this.register(this._terminal.onA11yTab(C=>this._handleTab(C))),this.register(this._terminal.onKey(C=>this._handleKey(C.key))),this.register(this._terminal.onBlur(()=>this._clearLiveRegion())),this.register(this._renderService.onDimensionsChange(()=>this._refreshRowsDimensions())),this.register((0,g.addDisposableDomListener)(document,\"selectionchange\",()=>this._handleSelectionChange())),this.register(this._coreBrowserService.onDprChange(()=>this._refreshRowsDimensions())),this._refreshRows(),this.register((0,v.toDisposable)(()=>{this._accessibilityContainer.remove(),this._rowElements.length=0}))}_handleTab(y){for(let _=0;_<y;_++)this._handleChar(\" \")}_handleChar(y){this._liveRegionLineCount<21&&(this._charsToConsume.length>0?this._charsToConsume.shift()!==y&&(this._charsToAnnounce+=y):this._charsToAnnounce+=y,y===`\n`&&(this._liveRegionLineCount++,this._liveRegionLineCount===21&&(this._liveRegion.textContent+=d.tooMuchOutput)))}_clearLiveRegion(){this._liveRegion.textContent=\"\",this._liveRegionLineCount=0}_handleKey(y){this._clearLiveRegion(),new RegExp(\"\\\\p{Control}\",\"u\").test(y)||this._charsToConsume.push(y)}_refreshRows(y,_){this._liveRegionDebouncer.refresh(y,_,this._terminal.rows)}_renderRows(y,_){const w=this._terminal.buffer,S=w.lines.length.toString();for(let C=y;C<=_;C++){const E=w.lines.get(w.ydisp+C),k=[],T=(E==null?void 0:E.translateToString(!0,void 0,void 0,k))||\"\",x=(w.ydisp+C+1).toString(),M=this._rowElements[C];M&&(T.length===0?(M.innerText=\" \",this._rowColumns.set(M,[0,1])):(M.textContent=T,this._rowColumns.set(M,k)),M.setAttribute(\"aria-posinset\",x),M.setAttribute(\"aria-setsize\",S))}this._announceCharacters()}_announceCharacters(){this._charsToAnnounce.length!==0&&(this._liveRegion.textContent+=this._charsToAnnounce,this._charsToAnnounce=\"\")}_handleBoundaryFocus(y,_){const w=y.target,S=this._rowElements[_===0?1:this._rowElements.length-2];if(w.getAttribute(\"aria-posinset\")===(_===0?\"1\":`${this._terminal.buffer.lines.length}`)||y.relatedTarget!==S)return;let C,E;if(_===0?(C=w,E=this._rowElements.pop(),this._rowContainer.removeChild(E)):(C=this._rowElements.shift(),E=w,this._rowContainer.removeChild(C)),C.removeEventListener(\"focus\",this._topBoundaryFocusListener),E.removeEventListener(\"focus\",this._bottomBoundaryFocusListener),_===0){const k=this._createAccessibilityTreeNode();this._rowElements.unshift(k),this._rowContainer.insertAdjacentElement(\"afterbegin\",k)}else{const k=this._createAccessibilityTreeNode();this._rowElements.push(k),this._rowContainer.appendChild(k)}this._rowElements[0].addEventListener(\"focus\",this._topBoundaryFocusListener),this._rowElements[this._rowElements.length-1].addEventListener(\"focus\",this._bottomBoundaryFocusListener),this._terminal.scrollLines(_===0?-1:1),this._rowElements[_===0?1:this._rowElements.length-2].focus(),y.preventDefault(),y.stopImmediatePropagation()}_handleSelectionChange(){var T;if(this._rowElements.length===0)return;const y=document.getSelection();if(!y)return;if(y.isCollapsed)return void(this._rowContainer.contains(y.anchorNode)&&this._terminal.clearSelection());if(!y.anchorNode||!y.focusNode)return void console.error(\"anchorNode and/or focusNode are null\");let _={node:y.anchorNode,offset:y.anchorOffset},w={node:y.focusNode,offset:y.focusOffset};if((_.node.compareDocumentPosition(w.node)&Node.DOCUMENT_POSITION_PRECEDING||_.node===w.node&&_.offset>w.offset)&&([_,w]=[w,_]),_.node.compareDocumentPosition(this._rowElements[0])&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_FOLLOWING)&&(_={node:this._rowElements[0].childNodes[0],offset:0}),!this._rowContainer.contains(_.node))return;const S=this._rowElements.slice(-1)[0];if(w.node.compareDocumentPosition(S)&(Node.DOCUMENT_POSITION_CONTAINED_BY|Node.DOCUMENT_POSITION_PRECEDING)&&(w={node:S,offset:((T=S.textContent)==null?void 0:T.length)??0}),!this._rowContainer.contains(w.node))return;const C=({node:x,offset:M})=>{const A=x instanceof Text?x.parentNode:x;let P=parseInt(A==null?void 0:A.getAttribute(\"aria-posinset\"),10)-1;if(isNaN(P))return console.warn(\"row is invalid. Race condition?\"),null;const G=this._rowColumns.get(A);if(!G)return console.warn(\"columns is null. Race condition?\"),null;let V=M<G.length?G[M]:G.slice(-1)[0]+1;return V>=this._terminal.cols&&(++P,V=0),{row:P,column:V}},E=C(_),k=C(w);if(E&&k){if(E.row>k.row||E.row===k.row&&E.column>=k.column)throw new Error(\"invalid range\");this._terminal.select(E.column,E.row,(k.row-E.row)*this._terminal.cols-E.column+k.column)}}_handleResize(y){this._rowElements[this._rowElements.length-1].removeEventListener(\"focus\",this._bottomBoundaryFocusListener);for(let _=this._rowContainer.children.length;_<this._terminal.rows;_++)this._rowElements[_]=this._createAccessibilityTreeNode(),this._rowContainer.appendChild(this._rowElements[_]);for(;this._rowElements.length>y;)this._rowContainer.removeChild(this._rowElements.pop());this._rowElements[this._rowElements.length-1].addEventListener(\"focus\",this._bottomBoundaryFocusListener),this._refreshRowsDimensions()}_createAccessibilityTreeNode(){const y=this._coreBrowserService.mainDocument.createElement(\"div\");return y.setAttribute(\"role\",\"listitem\"),y.tabIndex=-1,this._refreshRowDimensions(y),y}_refreshRowsDimensions(){if(this._renderService.dimensions.css.cell.height){this._accessibilityContainer.style.width=`${this._renderService.dimensions.css.canvas.width}px`,this._rowElements.length!==this._terminal.rows&&this._handleResize(this._terminal.rows);for(let y=0;y<this._terminal.rows;y++)this._refreshRowDimensions(this._rowElements[y])}}_refreshRowDimensions(y){y.style.height=`${this._renderService.dimensions.css.cell.height}px`}};i.AccessibilityManager=m=u([f(1,p.IInstantiationService),f(2,b.ICoreBrowserService),f(3,b.IRenderService)],m)},3614:(a,i)=>{function l(h){return h.replace(/\\r?\\n/g,\"\\r\")}function u(h,v){return v?\"\\x1B[200~\"+h+\"\\x1B[201~\":h}function f(h,v,b,p){h=u(h=l(h),b.decPrivateModes.bracketedPasteMode&&p.rawOptions.ignoreBracketedPasteMode!==!0),b.triggerDataEvent(h,!0),v.value=\"\"}function d(h,v,b){const p=b.getBoundingClientRect(),g=h.clientX-p.left-10,m=h.clientY-p.top-10;v.style.width=\"20px\",v.style.height=\"20px\",v.style.left=`${g}px`,v.style.top=`${m}px`,v.style.zIndex=\"1000\",v.focus()}Object.defineProperty(i,\"__esModule\",{value:!0}),i.rightClickHandler=i.moveTextAreaUnderMouseCursor=i.paste=i.handlePasteEvent=i.copyHandler=i.bracketTextForPaste=i.prepareTextForTerminal=void 0,i.prepareTextForTerminal=l,i.bracketTextForPaste=u,i.copyHandler=function(h,v){h.clipboardData&&h.clipboardData.setData(\"text/plain\",v.selectionText),h.preventDefault()},i.handlePasteEvent=function(h,v,b,p){h.stopPropagation(),h.clipboardData&&f(h.clipboardData.getData(\"text/plain\"),v,b,p)},i.paste=f,i.moveTextAreaUnderMouseCursor=d,i.rightClickHandler=function(h,v,b,p,g){d(h,v,b),g&&p.rightClickSelect(h),v.value=p.selectionText,v.select()}},7239:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.ColorContrastCache=void 0;const u=l(1505);i.ColorContrastCache=class{constructor(){this._color=new u.TwoKeyMap,this._css=new u.TwoKeyMap}setCss(f,d,h){this._css.set(f,d,h)}getCss(f,d){return this._css.get(f,d)}setColor(f,d,h){this._color.set(f,d,h)}getColor(f,d){return this._color.get(f,d)}clear(){this._color.clear(),this._css.clear()}}},3656:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.addDisposableDomListener=void 0,i.addDisposableDomListener=function(l,u,f,d){l.addEventListener(u,f,d);let h=!1;return{dispose:()=>{h||(h=!0,l.removeEventListener(u,f,d))}}}},3551:function(a,i,l){var u=this&&this.__decorate||function(m,y,_,w){var S,C=arguments.length,E=C<3?y:w===null?w=Object.getOwnPropertyDescriptor(y,_):w;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")E=Reflect.decorate(m,y,_,w);else for(var k=m.length-1;k>=0;k--)(S=m[k])&&(E=(C<3?S(E):C>3?S(y,_,E):S(y,_))||E);return C>3&&E&&Object.defineProperty(y,_,E),E},f=this&&this.__param||function(m,y){return function(_,w){y(_,w,m)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.Linkifier=void 0;const d=l(3656),h=l(8460),v=l(844),b=l(2585),p=l(4725);let g=i.Linkifier=class extends v.Disposable{get currentLink(){return this._currentLink}constructor(m,y,_,w,S){super(),this._element=m,this._mouseService=y,this._renderService=_,this._bufferService=w,this._linkProviderService=S,this._linkCacheDisposables=[],this._isMouseOut=!0,this._wasResized=!1,this._activeLine=-1,this._onShowLinkUnderline=this.register(new h.EventEmitter),this.onShowLinkUnderline=this._onShowLinkUnderline.event,this._onHideLinkUnderline=this.register(new h.EventEmitter),this.onHideLinkUnderline=this._onHideLinkUnderline.event,this.register((0,v.getDisposeArrayDisposable)(this._linkCacheDisposables)),this.register((0,v.toDisposable)(()=>{var C;this._lastMouseEvent=void 0,(C=this._activeProviderReplies)==null||C.clear()})),this.register(this._bufferService.onResize(()=>{this._clearCurrentLink(),this._wasResized=!0})),this.register((0,d.addDisposableDomListener)(this._element,\"mouseleave\",()=>{this._isMouseOut=!0,this._clearCurrentLink()})),this.register((0,d.addDisposableDomListener)(this._element,\"mousemove\",this._handleMouseMove.bind(this))),this.register((0,d.addDisposableDomListener)(this._element,\"mousedown\",this._handleMouseDown.bind(this))),this.register((0,d.addDisposableDomListener)(this._element,\"mouseup\",this._handleMouseUp.bind(this)))}_handleMouseMove(m){this._lastMouseEvent=m;const y=this._positionFromMouseEvent(m,this._element,this._mouseService);if(!y)return;this._isMouseOut=!1;const _=m.composedPath();for(let w=0;w<_.length;w++){const S=_[w];if(S.classList.contains(\"xterm\"))break;if(S.classList.contains(\"xterm-hover\"))return}this._lastBufferCell&&y.x===this._lastBufferCell.x&&y.y===this._lastBufferCell.y||(this._handleHover(y),this._lastBufferCell=y)}_handleHover(m){if(this._activeLine!==m.y||this._wasResized)return this._clearCurrentLink(),this._askForLink(m,!1),void(this._wasResized=!1);this._currentLink&&this._linkAtPosition(this._currentLink.link,m)||(this._clearCurrentLink(),this._askForLink(m,!0))}_askForLink(m,y){var w,S;this._activeProviderReplies&&y||((w=this._activeProviderReplies)==null||w.forEach(C=>{C==null||C.forEach(E=>{E.link.dispose&&E.link.dispose()})}),this._activeProviderReplies=new Map,this._activeLine=m.y);let _=!1;for(const[C,E]of this._linkProviderService.linkProviders.entries())y?(S=this._activeProviderReplies)!=null&&S.get(C)&&(_=this._checkLinkProviderResult(C,m,_)):E.provideLinks(m.y,k=>{var x,M;if(this._isMouseOut)return;const T=k==null?void 0:k.map(A=>({link:A}));(x=this._activeProviderReplies)==null||x.set(C,T),_=this._checkLinkProviderResult(C,m,_),((M=this._activeProviderReplies)==null?void 0:M.size)===this._linkProviderService.linkProviders.length&&this._removeIntersectingLinks(m.y,this._activeProviderReplies)})}_removeIntersectingLinks(m,y){const _=new Set;for(let w=0;w<y.size;w++){const S=y.get(w);if(S)for(let C=0;C<S.length;C++){const E=S[C],k=E.link.range.start.y<m?0:E.link.range.start.x,T=E.link.range.end.y>m?this._bufferService.cols:E.link.range.end.x;for(let x=k;x<=T;x++){if(_.has(x)){S.splice(C--,1);break}_.add(x)}}}}_checkLinkProviderResult(m,y,_){var C;if(!this._activeProviderReplies)return _;const w=this._activeProviderReplies.get(m);let S=!1;for(let E=0;E<m;E++)this._activeProviderReplies.has(E)&&!this._activeProviderReplies.get(E)||(S=!0);if(!S&&w){const E=w.find(k=>this._linkAtPosition(k.link,y));E&&(_=!0,this._handleNewLink(E))}if(this._activeProviderReplies.size===this._linkProviderService.linkProviders.length&&!_)for(let E=0;E<this._activeProviderReplies.size;E++){const k=(C=this._activeProviderReplies.get(E))==null?void 0:C.find(T=>this._linkAtPosition(T.link,y));if(k){_=!0,this._handleNewLink(k);break}}return _}_handleMouseDown(){this._mouseDownLink=this._currentLink}_handleMouseUp(m){if(!this._currentLink)return;const y=this._positionFromMouseEvent(m,this._element,this._mouseService);y&&this._mouseDownLink===this._currentLink&&this._linkAtPosition(this._currentLink.link,y)&&this._currentLink.link.activate(m,this._currentLink.link.text)}_clearCurrentLink(m,y){this._currentLink&&this._lastMouseEvent&&(!m||!y||this._currentLink.link.range.start.y>=m&&this._currentLink.link.range.end.y<=y)&&(this._linkLeave(this._element,this._currentLink.link,this._lastMouseEvent),this._currentLink=void 0,(0,v.disposeArray)(this._linkCacheDisposables))}_handleNewLink(m){if(!this._lastMouseEvent)return;const y=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);y&&this._linkAtPosition(m.link,y)&&(this._currentLink=m,this._currentLink.state={decorations:{underline:m.link.decorations===void 0||m.link.decorations.underline,pointerCursor:m.link.decorations===void 0||m.link.decorations.pointerCursor},isHovered:!0},this._linkHover(this._element,m.link,this._lastMouseEvent),m.link.decorations={},Object.defineProperties(m.link.decorations,{pointerCursor:{get:()=>{var _,w;return(w=(_=this._currentLink)==null?void 0:_.state)==null?void 0:w.decorations.pointerCursor},set:_=>{var w;(w=this._currentLink)!=null&&w.state&&this._currentLink.state.decorations.pointerCursor!==_&&(this._currentLink.state.decorations.pointerCursor=_,this._currentLink.state.isHovered&&this._element.classList.toggle(\"xterm-cursor-pointer\",_))}},underline:{get:()=>{var _,w;return(w=(_=this._currentLink)==null?void 0:_.state)==null?void 0:w.decorations.underline},set:_=>{var w,S,C;(w=this._currentLink)!=null&&w.state&&((C=(S=this._currentLink)==null?void 0:S.state)==null?void 0:C.decorations.underline)!==_&&(this._currentLink.state.decorations.underline=_,this._currentLink.state.isHovered&&this._fireUnderlineEvent(m.link,_))}}}),this._linkCacheDisposables.push(this._renderService.onRenderedViewportChange(_=>{if(!this._currentLink)return;const w=_.start===0?0:_.start+1+this._bufferService.buffer.ydisp,S=this._bufferService.buffer.ydisp+1+_.end;if(this._currentLink.link.range.start.y>=w&&this._currentLink.link.range.end.y<=S&&(this._clearCurrentLink(w,S),this._lastMouseEvent)){const C=this._positionFromMouseEvent(this._lastMouseEvent,this._element,this._mouseService);C&&this._askForLink(C,!1)}})))}_linkHover(m,y,_){var w;(w=this._currentLink)!=null&&w.state&&(this._currentLink.state.isHovered=!0,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(y,!0),this._currentLink.state.decorations.pointerCursor&&m.classList.add(\"xterm-cursor-pointer\")),y.hover&&y.hover(_,y.text)}_fireUnderlineEvent(m,y){const _=m.range,w=this._bufferService.buffer.ydisp,S=this._createLinkUnderlineEvent(_.start.x-1,_.start.y-w-1,_.end.x,_.end.y-w-1,void 0);(y?this._onShowLinkUnderline:this._onHideLinkUnderline).fire(S)}_linkLeave(m,y,_){var w;(w=this._currentLink)!=null&&w.state&&(this._currentLink.state.isHovered=!1,this._currentLink.state.decorations.underline&&this._fireUnderlineEvent(y,!1),this._currentLink.state.decorations.pointerCursor&&m.classList.remove(\"xterm-cursor-pointer\")),y.leave&&y.leave(_,y.text)}_linkAtPosition(m,y){const _=m.range.start.y*this._bufferService.cols+m.range.start.x,w=m.range.end.y*this._bufferService.cols+m.range.end.x,S=y.y*this._bufferService.cols+y.x;return _<=S&&S<=w}_positionFromMouseEvent(m,y,_){const w=_.getCoords(m,y,this._bufferService.cols,this._bufferService.rows);if(w)return{x:w[0],y:w[1]+this._bufferService.buffer.ydisp}}_createLinkUnderlineEvent(m,y,_,w,S){return{x1:m,y1:y,x2:_,y2:w,cols:this._bufferService.cols,fg:S}}};i.Linkifier=g=u([f(1,p.IMouseService),f(2,p.IRenderService),f(3,b.IBufferService),f(4,p.ILinkProviderService)],g)},9042:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.tooMuchOutput=i.promptLabel=void 0,i.promptLabel=\"Terminal input\",i.tooMuchOutput=\"Too much output to announce, navigate to rows manually to read\"},3730:function(a,i,l){var u=this&&this.__decorate||function(p,g,m,y){var _,w=arguments.length,S=w<3?g:y===null?y=Object.getOwnPropertyDescriptor(g,m):y;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")S=Reflect.decorate(p,g,m,y);else for(var C=p.length-1;C>=0;C--)(_=p[C])&&(S=(w<3?_(S):w>3?_(g,m,S):_(g,m))||S);return w>3&&S&&Object.defineProperty(g,m,S),S},f=this&&this.__param||function(p,g){return function(m,y){g(m,y,p)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.OscLinkProvider=void 0;const d=l(511),h=l(2585);let v=i.OscLinkProvider=class{constructor(p,g,m){this._bufferService=p,this._optionsService=g,this._oscLinkService=m}provideLinks(p,g){var T;const m=this._bufferService.buffer.lines.get(p-1);if(!m)return void g(void 0);const y=[],_=this._optionsService.rawOptions.linkHandler,w=new d.CellData,S=m.getTrimmedLength();let C=-1,E=-1,k=!1;for(let x=0;x<S;x++)if(E!==-1||m.hasContent(x)){if(m.loadCell(x,w),w.hasExtendedAttrs()&&w.extended.urlId){if(E===-1){E=x,C=w.extended.urlId;continue}k=w.extended.urlId!==C}else E!==-1&&(k=!0);if(k||E!==-1&&x===S-1){const M=(T=this._oscLinkService.getLinkData(C))==null?void 0:T.uri;if(M){const A={start:{x:E+1,y:p},end:{x:x+(k||x!==S-1?0:1),y:p}};let P=!1;if(!(_!=null&&_.allowNonHttpProtocols))try{const G=new URL(M);[\"http:\",\"https:\"].includes(G.protocol)||(P=!0)}catch{P=!0}P||y.push({text:M,range:A,activate:(G,V)=>_?_.activate(G,V,A):b(0,V),hover:(G,V)=>{var I;return(I=_==null?void 0:_.hover)==null?void 0:I.call(_,G,V,A)},leave:(G,V)=>{var I;return(I=_==null?void 0:_.leave)==null?void 0:I.call(_,G,V,A)}})}k=!1,w.hasExtendedAttrs()&&w.extended.urlId?(E=x,C=w.extended.urlId):(E=-1,C=-1)}}g(y)}};function b(p,g){if(confirm(`Do you want to navigate to ${g}?\n\nWARNING: This link could potentially be dangerous`)){const m=window.open();if(m){try{m.opener=null}catch{}m.location.href=g}else console.warn(\"Opening link blocked as opener could not be cleared\")}}i.OscLinkProvider=v=u([f(0,h.IBufferService),f(1,h.IOptionsService),f(2,h.IOscLinkService)],v)},6193:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.RenderDebouncer=void 0,i.RenderDebouncer=class{constructor(l,u){this._renderCallback=l,this._coreBrowserService=u,this._refreshCallbacks=[]}dispose(){this._animationFrame&&(this._coreBrowserService.window.cancelAnimationFrame(this._animationFrame),this._animationFrame=void 0)}addRefreshCallback(l){return this._refreshCallbacks.push(l),this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh())),this._animationFrame}refresh(l,u,f){this._rowCount=f,l=l!==void 0?l:0,u=u!==void 0?u:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,l):l,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,u):u,this._animationFrame||(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._animationFrame=void 0,this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return void this._runRefreshCallbacks();const l=Math.max(this._rowStart,0),u=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(l,u),this._runRefreshCallbacks()}_runRefreshCallbacks(){for(const l of this._refreshCallbacks)l(0);this._refreshCallbacks=[]}}},3236:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.Terminal=void 0;const u=l(3614),f=l(3656),d=l(3551),h=l(9042),v=l(3730),b=l(1680),p=l(3107),g=l(5744),m=l(2950),y=l(1296),_=l(428),w=l(4269),S=l(5114),C=l(8934),E=l(3230),k=l(9312),T=l(4725),x=l(6731),M=l(8055),A=l(8969),P=l(8460),G=l(844),V=l(6114),I=l(8437),j=l(2584),F=l(7399),R=l(5941),B=l(9074),N=l(2585),U=l(5435),J=l(4567),re=l(779);class le extends A.CoreTerminal{get onFocus(){return this._onFocus.event}get onBlur(){return this._onBlur.event}get onA11yChar(){return this._onA11yCharEmitter.event}get onA11yTab(){return this._onA11yTabEmitter.event}get onWillOpen(){return this._onWillOpen.event}constructor(K={}){super(K),this.browser=V,this._keyDownHandled=!1,this._keyDownSeen=!1,this._keyPressHandled=!1,this._unprocessedDeadKey=!1,this._accessibilityManager=this.register(new G.MutableDisposable),this._onCursorMove=this.register(new P.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onKey=this.register(new P.EventEmitter),this.onKey=this._onKey.event,this._onRender=this.register(new P.EventEmitter),this.onRender=this._onRender.event,this._onSelectionChange=this.register(new P.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onTitleChange=this.register(new P.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onBell=this.register(new P.EventEmitter),this.onBell=this._onBell.event,this._onFocus=this.register(new P.EventEmitter),this._onBlur=this.register(new P.EventEmitter),this._onA11yCharEmitter=this.register(new P.EventEmitter),this._onA11yTabEmitter=this.register(new P.EventEmitter),this._onWillOpen=this.register(new P.EventEmitter),this._setup(),this._decorationService=this._instantiationService.createInstance(B.DecorationService),this._instantiationService.setService(N.IDecorationService,this._decorationService),this._linkProviderService=this._instantiationService.createInstance(re.LinkProviderService),this._instantiationService.setService(T.ILinkProviderService,this._linkProviderService),this._linkProviderService.registerLinkProvider(this._instantiationService.createInstance(v.OscLinkProvider)),this.register(this._inputHandler.onRequestBell(()=>this._onBell.fire())),this.register(this._inputHandler.onRequestRefreshRows((z,te)=>this.refresh(z,te))),this.register(this._inputHandler.onRequestSendFocus(()=>this._reportFocus())),this.register(this._inputHandler.onRequestReset(()=>this.reset())),this.register(this._inputHandler.onRequestWindowsOptionsReport(z=>this._reportWindowsOptions(z))),this.register(this._inputHandler.onColor(z=>this._handleColorEvent(z))),this.register((0,P.forwardEvent)(this._inputHandler.onCursorMove,this._onCursorMove)),this.register((0,P.forwardEvent)(this._inputHandler.onTitleChange,this._onTitleChange)),this.register((0,P.forwardEvent)(this._inputHandler.onA11yChar,this._onA11yCharEmitter)),this.register((0,P.forwardEvent)(this._inputHandler.onA11yTab,this._onA11yTabEmitter)),this.register(this._bufferService.onResize(z=>this._afterResize(z.cols,z.rows))),this.register((0,G.toDisposable)(()=>{var z,te;this._customKeyEventHandler=void 0,(te=(z=this.element)==null?void 0:z.parentNode)==null||te.removeChild(this.element)}))}_handleColorEvent(K){if(this._themeService)for(const z of K){let te,oe=\"\";switch(z.index){case 256:te=\"foreground\",oe=\"10\";break;case 257:te=\"background\",oe=\"11\";break;case 258:te=\"cursor\",oe=\"12\";break;default:te=\"ansi\",oe=\"4;\"+z.index}switch(z.type){case 0:const he=M.color.toColorRGB(te===\"ansi\"?this._themeService.colors.ansi[z.index]:this._themeService.colors[te]);this.coreService.triggerDataEvent(`${j.C0.ESC}]${oe};${(0,R.toRgbString)(he)}${j.C1_ESCAPED.ST}`);break;case 1:if(te===\"ansi\")this._themeService.modifyColors(Y=>Y.ansi[z.index]=M.channels.toColor(...z.color));else{const Y=te;this._themeService.modifyColors(L=>L[Y]=M.channels.toColor(...z.color))}break;case 2:this._themeService.restoreColor(z.index)}}}_setup(){super._setup(),this._customKeyEventHandler=void 0}get buffer(){return this.buffers.active}focus(){this.textarea&&this.textarea.focus({preventScroll:!0})}_handleScreenReaderModeOptionChange(K){K?!this._accessibilityManager.value&&this._renderService&&(this._accessibilityManager.value=this._instantiationService.createInstance(J.AccessibilityManager,this)):this._accessibilityManager.clear()}_handleTextAreaFocus(K){this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(j.C0.ESC+\"[I\"),this.element.classList.add(\"focus\"),this._showCursor(),this._onFocus.fire()}blur(){var K;return(K=this.textarea)==null?void 0:K.blur()}_handleTextAreaBlur(){this.textarea.value=\"\",this.refresh(this.buffer.y,this.buffer.y),this.coreService.decPrivateModes.sendFocus&&this.coreService.triggerDataEvent(j.C0.ESC+\"[O\"),this.element.classList.remove(\"focus\"),this._onBlur.fire()}_syncTextArea(){if(!this.textarea||!this.buffer.isCursorInViewport||this._compositionHelper.isComposing||!this._renderService)return;const K=this.buffer.ybase+this.buffer.y,z=this.buffer.lines.get(K);if(!z)return;const te=Math.min(this.buffer.x,this.cols-1),oe=this._renderService.dimensions.css.cell.height,he=z.getWidth(te),Y=this._renderService.dimensions.css.cell.width*he,L=this.buffer.y*this._renderService.dimensions.css.cell.height,Q=te*this._renderService.dimensions.css.cell.width;this.textarea.style.left=Q+\"px\",this.textarea.style.top=L+\"px\",this.textarea.style.width=Y+\"px\",this.textarea.style.height=oe+\"px\",this.textarea.style.lineHeight=oe+\"px\",this.textarea.style.zIndex=\"-5\"}_initGlobal(){this._bindKeys(),this.register((0,f.addDisposableDomListener)(this.element,\"copy\",z=>{this.hasSelection()&&(0,u.copyHandler)(z,this._selectionService)}));const K=z=>(0,u.handlePasteEvent)(z,this.textarea,this.coreService,this.optionsService);this.register((0,f.addDisposableDomListener)(this.textarea,\"paste\",K)),this.register((0,f.addDisposableDomListener)(this.element,\"paste\",K)),V.isFirefox?this.register((0,f.addDisposableDomListener)(this.element,\"mousedown\",z=>{z.button===2&&(0,u.rightClickHandler)(z,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})):this.register((0,f.addDisposableDomListener)(this.element,\"contextmenu\",z=>{(0,u.rightClickHandler)(z,this.textarea,this.screenElement,this._selectionService,this.options.rightClickSelectsWord)})),V.isLinux&&this.register((0,f.addDisposableDomListener)(this.element,\"auxclick\",z=>{z.button===1&&(0,u.moveTextAreaUnderMouseCursor)(z,this.textarea,this.screenElement)}))}_bindKeys(){this.register((0,f.addDisposableDomListener)(this.textarea,\"keyup\",K=>this._keyUp(K),!0)),this.register((0,f.addDisposableDomListener)(this.textarea,\"keydown\",K=>this._keyDown(K),!0)),this.register((0,f.addDisposableDomListener)(this.textarea,\"keypress\",K=>this._keyPress(K),!0)),this.register((0,f.addDisposableDomListener)(this.textarea,\"compositionstart\",()=>this._compositionHelper.compositionstart())),this.register((0,f.addDisposableDomListener)(this.textarea,\"compositionupdate\",K=>this._compositionHelper.compositionupdate(K))),this.register((0,f.addDisposableDomListener)(this.textarea,\"compositionend\",()=>this._compositionHelper.compositionend())),this.register((0,f.addDisposableDomListener)(this.textarea,\"input\",K=>this._inputEvent(K),!0)),this.register(this.onRender(()=>this._compositionHelper.updateCompositionElements()))}open(K){var te;if(!K)throw new Error(\"Terminal requires a parent element.\");if(K.isConnected||this._logService.debug(\"Terminal.open was called on an element that was not attached to the DOM\"),((te=this.element)==null?void 0:te.ownerDocument.defaultView)&&this._coreBrowserService)return void(this.element.ownerDocument.defaultView!==this._coreBrowserService.window&&(this._coreBrowserService.window=this.element.ownerDocument.defaultView));this._document=K.ownerDocument,this.options.documentOverride&&this.options.documentOverride instanceof Document&&(this._document=this.optionsService.rawOptions.documentOverride),this.element=this._document.createElement(\"div\"),this.element.dir=\"ltr\",this.element.classList.add(\"terminal\"),this.element.classList.add(\"xterm\"),K.appendChild(this.element);const z=this._document.createDocumentFragment();this._viewportElement=this._document.createElement(\"div\"),this._viewportElement.classList.add(\"xterm-viewport\"),z.appendChild(this._viewportElement),this._viewportScrollArea=this._document.createElement(\"div\"),this._viewportScrollArea.classList.add(\"xterm-scroll-area\"),this._viewportElement.appendChild(this._viewportScrollArea),this.screenElement=this._document.createElement(\"div\"),this.screenElement.classList.add(\"xterm-screen\"),this.register((0,f.addDisposableDomListener)(this.screenElement,\"mousemove\",oe=>this.updateCursorStyle(oe))),this._helperContainer=this._document.createElement(\"div\"),this._helperContainer.classList.add(\"xterm-helpers\"),this.screenElement.appendChild(this._helperContainer),z.appendChild(this.screenElement),this.textarea=this._document.createElement(\"textarea\"),this.textarea.classList.add(\"xterm-helper-textarea\"),this.textarea.setAttribute(\"aria-label\",h.promptLabel),V.isChromeOS||this.textarea.setAttribute(\"aria-multiline\",\"false\"),this.textarea.setAttribute(\"autocorrect\",\"off\"),this.textarea.setAttribute(\"autocapitalize\",\"off\"),this.textarea.setAttribute(\"spellcheck\",\"false\"),this.textarea.tabIndex=0,this._coreBrowserService=this.register(this._instantiationService.createInstance(S.CoreBrowserService,this.textarea,K.ownerDocument.defaultView??window,this._document??typeof window<\"u\"?window.document:null)),this._instantiationService.setService(T.ICoreBrowserService,this._coreBrowserService),this.register((0,f.addDisposableDomListener)(this.textarea,\"focus\",oe=>this._handleTextAreaFocus(oe))),this.register((0,f.addDisposableDomListener)(this.textarea,\"blur\",()=>this._handleTextAreaBlur())),this._helperContainer.appendChild(this.textarea),this._charSizeService=this._instantiationService.createInstance(_.CharSizeService,this._document,this._helperContainer),this._instantiationService.setService(T.ICharSizeService,this._charSizeService),this._themeService=this._instantiationService.createInstance(x.ThemeService),this._instantiationService.setService(T.IThemeService,this._themeService),this._characterJoinerService=this._instantiationService.createInstance(w.CharacterJoinerService),this._instantiationService.setService(T.ICharacterJoinerService,this._characterJoinerService),this._renderService=this.register(this._instantiationService.createInstance(E.RenderService,this.rows,this.screenElement)),this._instantiationService.setService(T.IRenderService,this._renderService),this.register(this._renderService.onRenderedViewportChange(oe=>this._onRender.fire(oe))),this.onResize(oe=>this._renderService.resize(oe.cols,oe.rows)),this._compositionView=this._document.createElement(\"div\"),this._compositionView.classList.add(\"composition-view\"),this._compositionHelper=this._instantiationService.createInstance(m.CompositionHelper,this.textarea,this._compositionView),this._helperContainer.appendChild(this._compositionView),this._mouseService=this._instantiationService.createInstance(C.MouseService),this._instantiationService.setService(T.IMouseService,this._mouseService),this.linkifier=this.register(this._instantiationService.createInstance(d.Linkifier,this.screenElement)),this.element.appendChild(z);try{this._onWillOpen.fire(this.element)}catch{}this._renderService.hasRenderer()||this._renderService.setRenderer(this._createRenderer()),this.viewport=this._instantiationService.createInstance(b.Viewport,this._viewportElement,this._viewportScrollArea),this.viewport.onRequestScrollLines(oe=>this.scrollLines(oe.amount,oe.suppressScrollEvent,1)),this.register(this._inputHandler.onRequestSyncScrollBar(()=>this.viewport.syncScrollArea())),this.register(this.viewport),this.register(this.onCursorMove(()=>{this._renderService.handleCursorMove(),this._syncTextArea()})),this.register(this.onResize(()=>this._renderService.handleResize(this.cols,this.rows))),this.register(this.onBlur(()=>this._renderService.handleBlur())),this.register(this.onFocus(()=>this._renderService.handleFocus())),this.register(this._renderService.onDimensionsChange(()=>this.viewport.syncScrollArea())),this._selectionService=this.register(this._instantiationService.createInstance(k.SelectionService,this.element,this.screenElement,this.linkifier)),this._instantiationService.setService(T.ISelectionService,this._selectionService),this.register(this._selectionService.onRequestScrollLines(oe=>this.scrollLines(oe.amount,oe.suppressScrollEvent))),this.register(this._selectionService.onSelectionChange(()=>this._onSelectionChange.fire())),this.register(this._selectionService.onRequestRedraw(oe=>this._renderService.handleSelectionChanged(oe.start,oe.end,oe.columnSelectMode))),this.register(this._selectionService.onLinuxMouseSelection(oe=>{this.textarea.value=oe,this.textarea.focus(),this.textarea.select()})),this.register(this._onScroll.event(oe=>{this.viewport.syncScrollArea(),this._selectionService.refresh()})),this.register((0,f.addDisposableDomListener)(this._viewportElement,\"scroll\",()=>this._selectionService.refresh())),this.register(this._instantiationService.createInstance(p.BufferDecorationRenderer,this.screenElement)),this.register((0,f.addDisposableDomListener)(this.element,\"mousedown\",oe=>this._selectionService.handleMouseDown(oe))),this.coreMouseService.areMouseEventsActive?(this._selectionService.disable(),this.element.classList.add(\"enable-mouse-events\")):this._selectionService.enable(),this.options.screenReaderMode&&(this._accessibilityManager.value=this._instantiationService.createInstance(J.AccessibilityManager,this)),this.register(this.optionsService.onSpecificOptionChange(\"screenReaderMode\",oe=>this._handleScreenReaderModeOptionChange(oe))),this.options.overviewRulerWidth&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(g.OverviewRulerRenderer,this._viewportElement,this.screenElement))),this.optionsService.onSpecificOptionChange(\"overviewRulerWidth\",oe=>{!this._overviewRulerRenderer&&oe&&this._viewportElement&&this.screenElement&&(this._overviewRulerRenderer=this.register(this._instantiationService.createInstance(g.OverviewRulerRenderer,this._viewportElement,this.screenElement)))}),this._charSizeService.measure(),this.refresh(0,this.rows-1),this._initGlobal(),this.bindMouse()}_createRenderer(){return this._instantiationService.createInstance(y.DomRenderer,this,this._document,this.element,this.screenElement,this._viewportElement,this._helperContainer,this.linkifier)}bindMouse(){const K=this,z=this.element;function te(Y){const L=K._mouseService.getMouseReportCoords(Y,K.screenElement);if(!L)return!1;let Q,se;switch(Y.overrideType||Y.type){case\"mousemove\":se=32,Y.buttons===void 0?(Q=3,Y.button!==void 0&&(Q=Y.button<3?Y.button:3)):Q=1&Y.buttons?0:4&Y.buttons?1:2&Y.buttons?2:3;break;case\"mouseup\":se=0,Q=Y.button<3?Y.button:3;break;case\"mousedown\":se=1,Q=Y.button<3?Y.button:3;break;case\"wheel\":if(K._customWheelEventHandler&&K._customWheelEventHandler(Y)===!1||K.viewport.getLinesScrolled(Y)===0)return!1;se=Y.deltaY<0?0:1,Q=4;break;default:return!1}return!(se===void 0||Q===void 0||Q>4)&&K.coreMouseService.triggerMouseEvent({col:L.col,row:L.row,x:L.x,y:L.y,button:Q,action:se,ctrl:Y.ctrlKey,alt:Y.altKey,shift:Y.shiftKey})}const oe={mouseup:null,wheel:null,mousedrag:null,mousemove:null},he={mouseup:Y=>(te(Y),Y.buttons||(this._document.removeEventListener(\"mouseup\",oe.mouseup),oe.mousedrag&&this._document.removeEventListener(\"mousemove\",oe.mousedrag)),this.cancel(Y)),wheel:Y=>(te(Y),this.cancel(Y,!0)),mousedrag:Y=>{Y.buttons&&te(Y)},mousemove:Y=>{Y.buttons||te(Y)}};this.register(this.coreMouseService.onProtocolChange(Y=>{Y?(this.optionsService.rawOptions.logLevel===\"debug\"&&this._logService.debug(\"Binding to mouse events:\",this.coreMouseService.explainEvents(Y)),this.element.classList.add(\"enable-mouse-events\"),this._selectionService.disable()):(this._logService.debug(\"Unbinding from mouse events.\"),this.element.classList.remove(\"enable-mouse-events\"),this._selectionService.enable()),8&Y?oe.mousemove||(z.addEventListener(\"mousemove\",he.mousemove),oe.mousemove=he.mousemove):(z.removeEventListener(\"mousemove\",oe.mousemove),oe.mousemove=null),16&Y?oe.wheel||(z.addEventListener(\"wheel\",he.wheel,{passive:!1}),oe.wheel=he.wheel):(z.removeEventListener(\"wheel\",oe.wheel),oe.wheel=null),2&Y?oe.mouseup||(oe.mouseup=he.mouseup):(this._document.removeEventListener(\"mouseup\",oe.mouseup),oe.mouseup=null),4&Y?oe.mousedrag||(oe.mousedrag=he.mousedrag):(this._document.removeEventListener(\"mousemove\",oe.mousedrag),oe.mousedrag=null)})),this.coreMouseService.activeProtocol=this.coreMouseService.activeProtocol,this.register((0,f.addDisposableDomListener)(z,\"mousedown\",Y=>{if(Y.preventDefault(),this.focus(),this.coreMouseService.areMouseEventsActive&&!this._selectionService.shouldForceSelection(Y))return te(Y),oe.mouseup&&this._document.addEventListener(\"mouseup\",oe.mouseup),oe.mousedrag&&this._document.addEventListener(\"mousemove\",oe.mousedrag),this.cancel(Y)})),this.register((0,f.addDisposableDomListener)(z,\"wheel\",Y=>{if(!oe.wheel){if(this._customWheelEventHandler&&this._customWheelEventHandler(Y)===!1)return!1;if(!this.buffer.hasScrollback){const L=this.viewport.getLinesScrolled(Y);if(L===0)return;const Q=j.C0.ESC+(this.coreService.decPrivateModes.applicationCursorKeys?\"O\":\"[\")+(Y.deltaY<0?\"A\":\"B\");let se=\"\";for(let ge=0;ge<Math.abs(L);ge++)se+=Q;return this.coreService.triggerDataEvent(se,!0),this.cancel(Y,!0)}return this.viewport.handleWheel(Y)?this.cancel(Y):void 0}},{passive:!1})),this.register((0,f.addDisposableDomListener)(z,\"touchstart\",Y=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchStart(Y),this.cancel(Y)},{passive:!0})),this.register((0,f.addDisposableDomListener)(z,\"touchmove\",Y=>{if(!this.coreMouseService.areMouseEventsActive)return this.viewport.handleTouchMove(Y)?void 0:this.cancel(Y)},{passive:!1}))}refresh(K,z){var te;(te=this._renderService)==null||te.refreshRows(K,z)}updateCursorStyle(K){var z;(z=this._selectionService)!=null&&z.shouldColumnSelect(K)?this.element.classList.add(\"column-select\"):this.element.classList.remove(\"column-select\")}_showCursor(){this.coreService.isCursorInitialized||(this.coreService.isCursorInitialized=!0,this.refresh(this.buffer.y,this.buffer.y))}scrollLines(K,z,te=0){var oe;te===1?(super.scrollLines(K,z,te),this.refresh(0,this.rows-1)):(oe=this.viewport)==null||oe.scrollLines(K)}paste(K){(0,u.paste)(K,this.textarea,this.coreService,this.optionsService)}attachCustomKeyEventHandler(K){this._customKeyEventHandler=K}attachCustomWheelEventHandler(K){this._customWheelEventHandler=K}registerLinkProvider(K){return this._linkProviderService.registerLinkProvider(K)}registerCharacterJoiner(K){if(!this._characterJoinerService)throw new Error(\"Terminal must be opened first\");const z=this._characterJoinerService.register(K);return this.refresh(0,this.rows-1),z}deregisterCharacterJoiner(K){if(!this._characterJoinerService)throw new Error(\"Terminal must be opened first\");this._characterJoinerService.deregister(K)&&this.refresh(0,this.rows-1)}get markers(){return this.buffer.markers}registerMarker(K){return this.buffer.addMarker(this.buffer.ybase+this.buffer.y+K)}registerDecoration(K){return this._decorationService.registerDecoration(K)}hasSelection(){return!!this._selectionService&&this._selectionService.hasSelection}select(K,z,te){this._selectionService.setSelection(K,z,te)}getSelection(){return this._selectionService?this._selectionService.selectionText:\"\"}getSelectionPosition(){if(this._selectionService&&this._selectionService.hasSelection)return{start:{x:this._selectionService.selectionStart[0],y:this._selectionService.selectionStart[1]},end:{x:this._selectionService.selectionEnd[0],y:this._selectionService.selectionEnd[1]}}}clearSelection(){var K;(K=this._selectionService)==null||K.clearSelection()}selectAll(){var K;(K=this._selectionService)==null||K.selectAll()}selectLines(K,z){var te;(te=this._selectionService)==null||te.selectLines(K,z)}_keyDown(K){if(this._keyDownHandled=!1,this._keyDownSeen=!0,this._customKeyEventHandler&&this._customKeyEventHandler(K)===!1)return!1;const z=this.browser.isMac&&this.options.macOptionIsMeta&&K.altKey;if(!z&&!this._compositionHelper.keydown(K))return this.options.scrollOnUserInput&&this.buffer.ybase!==this.buffer.ydisp&&this.scrollToBottom(),!1;z||K.key!==\"Dead\"&&K.key!==\"AltGraph\"||(this._unprocessedDeadKey=!0);const te=(0,F.evaluateKeyboardEvent)(K,this.coreService.decPrivateModes.applicationCursorKeys,this.browser.isMac,this.options.macOptionIsMeta);if(this.updateCursorStyle(K),te.type===3||te.type===2){const oe=this.rows-1;return this.scrollLines(te.type===2?-oe:oe),this.cancel(K,!0)}return te.type===1&&this.selectAll(),!!this._isThirdLevelShift(this.browser,K)||(te.cancel&&this.cancel(K,!0),!te.key||!!(K.key&&!K.ctrlKey&&!K.altKey&&!K.metaKey&&K.key.length===1&&K.key.charCodeAt(0)>=65&&K.key.charCodeAt(0)<=90)||(this._unprocessedDeadKey?(this._unprocessedDeadKey=!1,!0):(te.key!==j.C0.ETX&&te.key!==j.C0.CR||(this.textarea.value=\"\"),this._onKey.fire({key:te.key,domEvent:K}),this._showCursor(),this.coreService.triggerDataEvent(te.key,!0),!this.optionsService.rawOptions.screenReaderMode||K.altKey||K.ctrlKey?this.cancel(K,!0):void(this._keyDownHandled=!0))))}_isThirdLevelShift(K,z){const te=K.isMac&&!this.options.macOptionIsMeta&&z.altKey&&!z.ctrlKey&&!z.metaKey||K.isWindows&&z.altKey&&z.ctrlKey&&!z.metaKey||K.isWindows&&z.getModifierState(\"AltGraph\");return z.type===\"keypress\"?te:te&&(!z.keyCode||z.keyCode>47)}_keyUp(K){this._keyDownSeen=!1,this._customKeyEventHandler&&this._customKeyEventHandler(K)===!1||(function(z){return z.keyCode===16||z.keyCode===17||z.keyCode===18}(K)||this.focus(),this.updateCursorStyle(K),this._keyPressHandled=!1)}_keyPress(K){let z;if(this._keyPressHandled=!1,this._keyDownHandled||this._customKeyEventHandler&&this._customKeyEventHandler(K)===!1)return!1;if(this.cancel(K),K.charCode)z=K.charCode;else if(K.which===null||K.which===void 0)z=K.keyCode;else{if(K.which===0||K.charCode===0)return!1;z=K.which}return!(!z||(K.altKey||K.ctrlKey||K.metaKey)&&!this._isThirdLevelShift(this.browser,K)||(z=String.fromCharCode(z),this._onKey.fire({key:z,domEvent:K}),this._showCursor(),this.coreService.triggerDataEvent(z,!0),this._keyPressHandled=!0,this._unprocessedDeadKey=!1,0))}_inputEvent(K){if(K.data&&K.inputType===\"insertText\"&&(!K.composed||!this._keyDownSeen)&&!this.optionsService.rawOptions.screenReaderMode){if(this._keyPressHandled)return!1;this._unprocessedDeadKey=!1;const z=K.data;return this.coreService.triggerDataEvent(z,!0),this.cancel(K),!0}return!1}resize(K,z){K!==this.cols||z!==this.rows?super.resize(K,z):this._charSizeService&&!this._charSizeService.hasValidSize&&this._charSizeService.measure()}_afterResize(K,z){var te,oe;(te=this._charSizeService)==null||te.measure(),(oe=this.viewport)==null||oe.syncScrollArea(!0)}clear(){var K;if(this.buffer.ybase!==0||this.buffer.y!==0){this.buffer.clearAllMarkers(),this.buffer.lines.set(0,this.buffer.lines.get(this.buffer.ybase+this.buffer.y)),this.buffer.lines.length=1,this.buffer.ydisp=0,this.buffer.ybase=0,this.buffer.y=0;for(let z=1;z<this.rows;z++)this.buffer.lines.push(this.buffer.getBlankLine(I.DEFAULT_ATTR_DATA));this._onScroll.fire({position:this.buffer.ydisp,source:0}),(K=this.viewport)==null||K.reset(),this.refresh(0,this.rows-1)}}reset(){var z,te;this.options.rows=this.rows,this.options.cols=this.cols;const K=this._customKeyEventHandler;this._setup(),super.reset(),(z=this._selectionService)==null||z.reset(),this._decorationService.reset(),(te=this.viewport)==null||te.reset(),this._customKeyEventHandler=K,this.refresh(0,this.rows-1)}clearTextureAtlas(){var K;(K=this._renderService)==null||K.clearTextureAtlas()}_reportFocus(){var K;(K=this.element)!=null&&K.classList.contains(\"focus\")?this.coreService.triggerDataEvent(j.C0.ESC+\"[I\"):this.coreService.triggerDataEvent(j.C0.ESC+\"[O\")}_reportWindowsOptions(K){if(this._renderService)switch(K){case U.WindowsOptionsReportType.GET_WIN_SIZE_PIXELS:const z=this._renderService.dimensions.css.canvas.width.toFixed(0),te=this._renderService.dimensions.css.canvas.height.toFixed(0);this.coreService.triggerDataEvent(`${j.C0.ESC}[4;${te};${z}t`);break;case U.WindowsOptionsReportType.GET_CELL_SIZE_PIXELS:const oe=this._renderService.dimensions.css.cell.width.toFixed(0),he=this._renderService.dimensions.css.cell.height.toFixed(0);this.coreService.triggerDataEvent(`${j.C0.ESC}[6;${he};${oe}t`)}}cancel(K,z){if(this.options.cancelEvents||z)return K.preventDefault(),K.stopPropagation(),!1}}i.Terminal=le},9924:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.TimeBasedDebouncer=void 0,i.TimeBasedDebouncer=class{constructor(l,u=1e3){this._renderCallback=l,this._debounceThresholdMS=u,this._lastRefreshMs=0,this._additionalRefreshRequested=!1}dispose(){this._refreshTimeoutID&&clearTimeout(this._refreshTimeoutID)}refresh(l,u,f){this._rowCount=f,l=l!==void 0?l:0,u=u!==void 0?u:this._rowCount-1,this._rowStart=this._rowStart!==void 0?Math.min(this._rowStart,l):l,this._rowEnd=this._rowEnd!==void 0?Math.max(this._rowEnd,u):u;const d=Date.now();if(d-this._lastRefreshMs>=this._debounceThresholdMS)this._lastRefreshMs=d,this._innerRefresh();else if(!this._additionalRefreshRequested){const h=d-this._lastRefreshMs,v=this._debounceThresholdMS-h;this._additionalRefreshRequested=!0,this._refreshTimeoutID=window.setTimeout(()=>{this._lastRefreshMs=Date.now(),this._innerRefresh(),this._additionalRefreshRequested=!1,this._refreshTimeoutID=void 0},v)}}_innerRefresh(){if(this._rowStart===void 0||this._rowEnd===void 0||this._rowCount===void 0)return;const l=Math.max(this._rowStart,0),u=Math.min(this._rowEnd,this._rowCount-1);this._rowStart=void 0,this._rowEnd=void 0,this._renderCallback(l,u)}}},1680:function(a,i,l){var u=this&&this.__decorate||function(m,y,_,w){var S,C=arguments.length,E=C<3?y:w===null?w=Object.getOwnPropertyDescriptor(y,_):w;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")E=Reflect.decorate(m,y,_,w);else for(var k=m.length-1;k>=0;k--)(S=m[k])&&(E=(C<3?S(E):C>3?S(y,_,E):S(y,_))||E);return C>3&&E&&Object.defineProperty(y,_,E),E},f=this&&this.__param||function(m,y){return function(_,w){y(_,w,m)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.Viewport=void 0;const d=l(3656),h=l(4725),v=l(8460),b=l(844),p=l(2585);let g=i.Viewport=class extends b.Disposable{constructor(m,y,_,w,S,C,E,k){super(),this._viewportElement=m,this._scrollArea=y,this._bufferService=_,this._optionsService=w,this._charSizeService=S,this._renderService=C,this._coreBrowserService=E,this.scrollBarWidth=0,this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._wheelPartialScroll=0,this._refreshAnimationFrame=null,this._ignoreNextScrollEvent=!1,this._smoothScrollState={startTime:0,origin:-1,target:-1},this._onRequestScrollLines=this.register(new v.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this.scrollBarWidth=this._viewportElement.offsetWidth-this._scrollArea.offsetWidth||15,this.register((0,d.addDisposableDomListener)(this._viewportElement,\"scroll\",this._handleScroll.bind(this))),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(T=>this._activeBuffer=T.activeBuffer)),this._renderDimensions=this._renderService.dimensions,this.register(this._renderService.onDimensionsChange(T=>this._renderDimensions=T)),this._handleThemeChange(k.colors),this.register(k.onChangeColors(T=>this._handleThemeChange(T))),this.register(this._optionsService.onSpecificOptionChange(\"scrollback\",()=>this.syncScrollArea())),setTimeout(()=>this.syncScrollArea())}_handleThemeChange(m){this._viewportElement.style.backgroundColor=m.background.css}reset(){this._currentRowHeight=0,this._currentDeviceCellHeight=0,this._lastRecordedBufferLength=0,this._lastRecordedViewportHeight=0,this._lastRecordedBufferHeight=0,this._lastTouchY=0,this._lastScrollTop=0,this._coreBrowserService.window.requestAnimationFrame(()=>this.syncScrollArea())}_refresh(m){if(m)return this._innerRefresh(),void(this._refreshAnimationFrame!==null&&this._coreBrowserService.window.cancelAnimationFrame(this._refreshAnimationFrame));this._refreshAnimationFrame===null&&(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._innerRefresh()))}_innerRefresh(){if(this._charSizeService.height>0){this._currentRowHeight=this._renderDimensions.device.cell.height/this._coreBrowserService.dpr,this._currentDeviceCellHeight=this._renderDimensions.device.cell.height,this._lastRecordedViewportHeight=this._viewportElement.offsetHeight;const y=Math.round(this._currentRowHeight*this._lastRecordedBufferLength)+(this._lastRecordedViewportHeight-this._renderDimensions.css.canvas.height);this._lastRecordedBufferHeight!==y&&(this._lastRecordedBufferHeight=y,this._scrollArea.style.height=this._lastRecordedBufferHeight+\"px\")}const m=this._bufferService.buffer.ydisp*this._currentRowHeight;this._viewportElement.scrollTop!==m&&(this._ignoreNextScrollEvent=!0,this._viewportElement.scrollTop=m),this._refreshAnimationFrame=null}syncScrollArea(m=!1){if(this._lastRecordedBufferLength!==this._bufferService.buffer.lines.length)return this._lastRecordedBufferLength=this._bufferService.buffer.lines.length,void this._refresh(m);this._lastRecordedViewportHeight===this._renderService.dimensions.css.canvas.height&&this._lastScrollTop===this._activeBuffer.ydisp*this._currentRowHeight&&this._renderDimensions.device.cell.height===this._currentDeviceCellHeight||this._refresh(m)}_handleScroll(m){if(this._lastScrollTop=this._viewportElement.scrollTop,!this._viewportElement.offsetParent)return;if(this._ignoreNextScrollEvent)return this._ignoreNextScrollEvent=!1,void this._onRequestScrollLines.fire({amount:0,suppressScrollEvent:!0});const y=Math.round(this._lastScrollTop/this._currentRowHeight)-this._bufferService.buffer.ydisp;this._onRequestScrollLines.fire({amount:y,suppressScrollEvent:!0})}_smoothScroll(){if(this._isDisposed||this._smoothScrollState.origin===-1||this._smoothScrollState.target===-1)return;const m=this._smoothScrollPercent();this._viewportElement.scrollTop=this._smoothScrollState.origin+Math.round(m*(this._smoothScrollState.target-this._smoothScrollState.origin)),m<1?this._coreBrowserService.window.requestAnimationFrame(()=>this._smoothScroll()):this._clearSmoothScrollState()}_smoothScrollPercent(){return this._optionsService.rawOptions.smoothScrollDuration&&this._smoothScrollState.startTime?Math.max(Math.min((Date.now()-this._smoothScrollState.startTime)/this._optionsService.rawOptions.smoothScrollDuration,1),0):1}_clearSmoothScrollState(){this._smoothScrollState.startTime=0,this._smoothScrollState.origin=-1,this._smoothScrollState.target=-1}_bubbleScroll(m,y){const _=this._viewportElement.scrollTop+this._lastRecordedViewportHeight;return!(y<0&&this._viewportElement.scrollTop!==0||y>0&&_<this._lastRecordedBufferHeight)||(m.cancelable&&m.preventDefault(),!1)}handleWheel(m){const y=this._getPixelsScrolled(m);return y!==0&&(this._optionsService.rawOptions.smoothScrollDuration?(this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target===-1?this._smoothScrollState.target=this._viewportElement.scrollTop+y:this._smoothScrollState.target+=y,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()):this._viewportElement.scrollTop+=y,this._bubbleScroll(m,y))}scrollLines(m){if(m!==0)if(this._optionsService.rawOptions.smoothScrollDuration){const y=m*this._currentRowHeight;this._smoothScrollState.startTime=Date.now(),this._smoothScrollPercent()<1?(this._smoothScrollState.origin=this._viewportElement.scrollTop,this._smoothScrollState.target=this._smoothScrollState.origin+y,this._smoothScrollState.target=Math.max(Math.min(this._smoothScrollState.target,this._viewportElement.scrollHeight),0),this._smoothScroll()):this._clearSmoothScrollState()}else this._onRequestScrollLines.fire({amount:m,suppressScrollEvent:!1})}_getPixelsScrolled(m){if(m.deltaY===0||m.shiftKey)return 0;let y=this._applyScrollModifier(m.deltaY,m);return m.deltaMode===WheelEvent.DOM_DELTA_LINE?y*=this._currentRowHeight:m.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(y*=this._currentRowHeight*this._bufferService.rows),y}getBufferElements(m,y){var k;let _,w=\"\";const S=[],C=y??this._bufferService.buffer.lines.length,E=this._bufferService.buffer.lines;for(let T=m;T<C;T++){const x=E.get(T);if(!x)continue;const M=(k=E.get(T+1))==null?void 0:k.isWrapped;if(w+=x.translateToString(!M),!M||T===E.length-1){const A=document.createElement(\"div\");A.textContent=w,S.push(A),w.length>0&&(_=A),w=\"\"}}return{bufferElements:S,cursorElement:_}}getLinesScrolled(m){if(m.deltaY===0||m.shiftKey)return 0;let y=this._applyScrollModifier(m.deltaY,m);return m.deltaMode===WheelEvent.DOM_DELTA_PIXEL?(y/=this._currentRowHeight+0,this._wheelPartialScroll+=y,y=Math.floor(Math.abs(this._wheelPartialScroll))*(this._wheelPartialScroll>0?1:-1),this._wheelPartialScroll%=1):m.deltaMode===WheelEvent.DOM_DELTA_PAGE&&(y*=this._bufferService.rows),y}_applyScrollModifier(m,y){const _=this._optionsService.rawOptions.fastScrollModifier;return _===\"alt\"&&y.altKey||_===\"ctrl\"&&y.ctrlKey||_===\"shift\"&&y.shiftKey?m*this._optionsService.rawOptions.fastScrollSensitivity*this._optionsService.rawOptions.scrollSensitivity:m*this._optionsService.rawOptions.scrollSensitivity}handleTouchStart(m){this._lastTouchY=m.touches[0].pageY}handleTouchMove(m){const y=this._lastTouchY-m.touches[0].pageY;return this._lastTouchY=m.touches[0].pageY,y!==0&&(this._viewportElement.scrollTop+=y,this._bubbleScroll(m,y))}};i.Viewport=g=u([f(2,p.IBufferService),f(3,p.IOptionsService),f(4,h.ICharSizeService),f(5,h.IRenderService),f(6,h.ICoreBrowserService),f(7,h.IThemeService)],g)},3107:function(a,i,l){var u=this&&this.__decorate||function(p,g,m,y){var _,w=arguments.length,S=w<3?g:y===null?y=Object.getOwnPropertyDescriptor(g,m):y;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")S=Reflect.decorate(p,g,m,y);else for(var C=p.length-1;C>=0;C--)(_=p[C])&&(S=(w<3?_(S):w>3?_(g,m,S):_(g,m))||S);return w>3&&S&&Object.defineProperty(g,m,S),S},f=this&&this.__param||function(p,g){return function(m,y){g(m,y,p)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferDecorationRenderer=void 0;const d=l(4725),h=l(844),v=l(2585);let b=i.BufferDecorationRenderer=class extends h.Disposable{constructor(p,g,m,y,_){super(),this._screenElement=p,this._bufferService=g,this._coreBrowserService=m,this._decorationService=y,this._renderService=_,this._decorationElements=new Map,this._altBufferIsActive=!1,this._dimensionsChanged=!1,this._container=document.createElement(\"div\"),this._container.classList.add(\"xterm-decoration-container\"),this._screenElement.appendChild(this._container),this.register(this._renderService.onRenderedViewportChange(()=>this._doRefreshDecorations())),this.register(this._renderService.onDimensionsChange(()=>{this._dimensionsChanged=!0,this._queueRefresh()})),this.register(this._coreBrowserService.onDprChange(()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._altBufferIsActive=this._bufferService.buffer===this._bufferService.buffers.alt})),this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh())),this.register(this._decorationService.onDecorationRemoved(w=>this._removeDecoration(w))),this.register((0,h.toDisposable)(()=>{this._container.remove(),this._decorationElements.clear()}))}_queueRefresh(){this._animationFrame===void 0&&(this._animationFrame=this._renderService.addRefreshCallback(()=>{this._doRefreshDecorations(),this._animationFrame=void 0}))}_doRefreshDecorations(){for(const p of this._decorationService.decorations)this._renderDecoration(p);this._dimensionsChanged=!1}_renderDecoration(p){this._refreshStyle(p),this._dimensionsChanged&&this._refreshXPosition(p)}_createElement(p){var y;const g=this._coreBrowserService.mainDocument.createElement(\"div\");g.classList.add(\"xterm-decoration\"),g.classList.toggle(\"xterm-decoration-top-layer\",((y=p==null?void 0:p.options)==null?void 0:y.layer)===\"top\"),g.style.width=`${Math.round((p.options.width||1)*this._renderService.dimensions.css.cell.width)}px`,g.style.height=(p.options.height||1)*this._renderService.dimensions.css.cell.height+\"px\",g.style.top=(p.marker.line-this._bufferService.buffers.active.ydisp)*this._renderService.dimensions.css.cell.height+\"px\",g.style.lineHeight=`${this._renderService.dimensions.css.cell.height}px`;const m=p.options.x??0;return m&&m>this._bufferService.cols&&(g.style.display=\"none\"),this._refreshXPosition(p,g),g}_refreshStyle(p){const g=p.marker.line-this._bufferService.buffers.active.ydisp;if(g<0||g>=this._bufferService.rows)p.element&&(p.element.style.display=\"none\",p.onRenderEmitter.fire(p.element));else{let m=this._decorationElements.get(p);m||(m=this._createElement(p),p.element=m,this._decorationElements.set(p,m),this._container.appendChild(m),p.onDispose(()=>{this._decorationElements.delete(p),m.remove()})),m.style.top=g*this._renderService.dimensions.css.cell.height+\"px\",m.style.display=this._altBufferIsActive?\"none\":\"block\",p.onRenderEmitter.fire(m)}}_refreshXPosition(p,g=p.element){if(!g)return;const m=p.options.x??0;(p.options.anchor||\"left\")===\"right\"?g.style.right=m?m*this._renderService.dimensions.css.cell.width+\"px\":\"\":g.style.left=m?m*this._renderService.dimensions.css.cell.width+\"px\":\"\"}_removeDecoration(p){var g;(g=this._decorationElements.get(p))==null||g.remove(),this._decorationElements.delete(p),p.dispose()}};i.BufferDecorationRenderer=b=u([f(1,v.IBufferService),f(2,d.ICoreBrowserService),f(3,v.IDecorationService),f(4,d.IRenderService)],b)},5871:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.ColorZoneStore=void 0,i.ColorZoneStore=class{constructor(){this._zones=[],this._zonePool=[],this._zonePoolIndex=0,this._linePadding={full:0,left:0,center:0,right:0}}get zones(){return this._zonePool.length=Math.min(this._zonePool.length,this._zones.length),this._zones}clear(){this._zones.length=0,this._zonePoolIndex=0}addDecoration(l){if(l.options.overviewRulerOptions){for(const u of this._zones)if(u.color===l.options.overviewRulerOptions.color&&u.position===l.options.overviewRulerOptions.position){if(this._lineIntersectsZone(u,l.marker.line))return;if(this._lineAdjacentToZone(u,l.marker.line,l.options.overviewRulerOptions.position))return void this._addLineToZone(u,l.marker.line)}if(this._zonePoolIndex<this._zonePool.length)return this._zonePool[this._zonePoolIndex].color=l.options.overviewRulerOptions.color,this._zonePool[this._zonePoolIndex].position=l.options.overviewRulerOptions.position,this._zonePool[this._zonePoolIndex].startBufferLine=l.marker.line,this._zonePool[this._zonePoolIndex].endBufferLine=l.marker.line,void this._zones.push(this._zonePool[this._zonePoolIndex++]);this._zones.push({color:l.options.overviewRulerOptions.color,position:l.options.overviewRulerOptions.position,startBufferLine:l.marker.line,endBufferLine:l.marker.line}),this._zonePool.push(this._zones[this._zones.length-1]),this._zonePoolIndex++}}setPadding(l){this._linePadding=l}_lineIntersectsZone(l,u){return u>=l.startBufferLine&&u<=l.endBufferLine}_lineAdjacentToZone(l,u,f){return u>=l.startBufferLine-this._linePadding[f||\"full\"]&&u<=l.endBufferLine+this._linePadding[f||\"full\"]}_addLineToZone(l,u){l.startBufferLine=Math.min(l.startBufferLine,u),l.endBufferLine=Math.max(l.endBufferLine,u)}}},5744:function(a,i,l){var u=this&&this.__decorate||function(_,w,S,C){var E,k=arguments.length,T=k<3?w:C===null?C=Object.getOwnPropertyDescriptor(w,S):C;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")T=Reflect.decorate(_,w,S,C);else for(var x=_.length-1;x>=0;x--)(E=_[x])&&(T=(k<3?E(T):k>3?E(w,S,T):E(w,S))||T);return k>3&&T&&Object.defineProperty(w,S,T),T},f=this&&this.__param||function(_,w){return function(S,C){w(S,C,_)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.OverviewRulerRenderer=void 0;const d=l(5871),h=l(4725),v=l(844),b=l(2585),p={full:0,left:0,center:0,right:0},g={full:0,left:0,center:0,right:0},m={full:0,left:0,center:0,right:0};let y=i.OverviewRulerRenderer=class extends v.Disposable{get _width(){return this._optionsService.options.overviewRulerWidth||0}constructor(_,w,S,C,E,k,T){var M;super(),this._viewportElement=_,this._screenElement=w,this._bufferService=S,this._decorationService=C,this._renderService=E,this._optionsService=k,this._coreBrowserService=T,this._colorZoneStore=new d.ColorZoneStore,this._shouldUpdateDimensions=!0,this._shouldUpdateAnchor=!0,this._lastKnownBufferLength=0,this._canvas=this._coreBrowserService.mainDocument.createElement(\"canvas\"),this._canvas.classList.add(\"xterm-decoration-overview-ruler\"),this._refreshCanvasDimensions(),(M=this._viewportElement.parentElement)==null||M.insertBefore(this._canvas,this._viewportElement);const x=this._canvas.getContext(\"2d\");if(!x)throw new Error(\"Ctx cannot be null\");this._ctx=x,this._registerDecorationListeners(),this._registerBufferChangeListeners(),this._registerDimensionChangeListeners(),this.register((0,v.toDisposable)(()=>{var A;(A=this._canvas)==null||A.remove()}))}_registerDecorationListeners(){this.register(this._decorationService.onDecorationRegistered(()=>this._queueRefresh(void 0,!0))),this.register(this._decorationService.onDecorationRemoved(()=>this._queueRefresh(void 0,!0)))}_registerBufferChangeListeners(){this.register(this._renderService.onRenderedViewportChange(()=>this._queueRefresh())),this.register(this._bufferService.buffers.onBufferActivate(()=>{this._canvas.style.display=this._bufferService.buffer===this._bufferService.buffers.alt?\"none\":\"block\"})),this.register(this._bufferService.onScroll(()=>{this._lastKnownBufferLength!==this._bufferService.buffers.normal.lines.length&&(this._refreshDrawHeightConstants(),this._refreshColorZonePadding())}))}_registerDimensionChangeListeners(){this.register(this._renderService.onRender(()=>{this._containerHeight&&this._containerHeight===this._screenElement.clientHeight||(this._queueRefresh(!0),this._containerHeight=this._screenElement.clientHeight)})),this.register(this._optionsService.onSpecificOptionChange(\"overviewRulerWidth\",()=>this._queueRefresh(!0))),this.register(this._coreBrowserService.onDprChange(()=>this._queueRefresh(!0))),this._queueRefresh(!0)}_refreshDrawConstants(){const _=Math.floor(this._canvas.width/3),w=Math.ceil(this._canvas.width/3);g.full=this._canvas.width,g.left=_,g.center=w,g.right=_,this._refreshDrawHeightConstants(),m.full=0,m.left=0,m.center=g.left,m.right=g.left+g.center}_refreshDrawHeightConstants(){p.full=Math.round(2*this._coreBrowserService.dpr);const _=this._canvas.height/this._bufferService.buffer.lines.length,w=Math.round(Math.max(Math.min(_,12),6)*this._coreBrowserService.dpr);p.left=w,p.center=w,p.right=w}_refreshColorZonePadding(){this._colorZoneStore.setPadding({full:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*p.full),left:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*p.left),center:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*p.center),right:Math.floor(this._bufferService.buffers.active.lines.length/(this._canvas.height-1)*p.right)}),this._lastKnownBufferLength=this._bufferService.buffers.normal.lines.length}_refreshCanvasDimensions(){this._canvas.style.width=`${this._width}px`,this._canvas.width=Math.round(this._width*this._coreBrowserService.dpr),this._canvas.style.height=`${this._screenElement.clientHeight}px`,this._canvas.height=Math.round(this._screenElement.clientHeight*this._coreBrowserService.dpr),this._refreshDrawConstants(),this._refreshColorZonePadding()}_refreshDecorations(){this._shouldUpdateDimensions&&this._refreshCanvasDimensions(),this._ctx.clearRect(0,0,this._canvas.width,this._canvas.height),this._colorZoneStore.clear();for(const w of this._decorationService.decorations)this._colorZoneStore.addDecoration(w);this._ctx.lineWidth=1;const _=this._colorZoneStore.zones;for(const w of _)w.position!==\"full\"&&this._renderColorZone(w);for(const w of _)w.position===\"full\"&&this._renderColorZone(w);this._shouldUpdateDimensions=!1,this._shouldUpdateAnchor=!1}_renderColorZone(_){this._ctx.fillStyle=_.color,this._ctx.fillRect(m[_.position||\"full\"],Math.round((this._canvas.height-1)*(_.startBufferLine/this._bufferService.buffers.active.lines.length)-p[_.position||\"full\"]/2),g[_.position||\"full\"],Math.round((this._canvas.height-1)*((_.endBufferLine-_.startBufferLine)/this._bufferService.buffers.active.lines.length)+p[_.position||\"full\"]))}_queueRefresh(_,w){this._shouldUpdateDimensions=_||this._shouldUpdateDimensions,this._shouldUpdateAnchor=w||this._shouldUpdateAnchor,this._animationFrame===void 0&&(this._animationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>{this._refreshDecorations(),this._animationFrame=void 0}))}};i.OverviewRulerRenderer=y=u([f(2,b.IBufferService),f(3,b.IDecorationService),f(4,h.IRenderService),f(5,b.IOptionsService),f(6,h.ICoreBrowserService)],y)},2950:function(a,i,l){var u=this&&this.__decorate||function(p,g,m,y){var _,w=arguments.length,S=w<3?g:y===null?y=Object.getOwnPropertyDescriptor(g,m):y;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")S=Reflect.decorate(p,g,m,y);else for(var C=p.length-1;C>=0;C--)(_=p[C])&&(S=(w<3?_(S):w>3?_(g,m,S):_(g,m))||S);return w>3&&S&&Object.defineProperty(g,m,S),S},f=this&&this.__param||function(p,g){return function(m,y){g(m,y,p)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.CompositionHelper=void 0;const d=l(4725),h=l(2585),v=l(2584);let b=i.CompositionHelper=class{get isComposing(){return this._isComposing}constructor(p,g,m,y,_,w){this._textarea=p,this._compositionView=g,this._bufferService=m,this._optionsService=y,this._coreService=_,this._renderService=w,this._isComposing=!1,this._isSendingComposition=!1,this._compositionPosition={start:0,end:0},this._dataAlreadySent=\"\"}compositionstart(){this._isComposing=!0,this._compositionPosition.start=this._textarea.value.length,this._compositionView.textContent=\"\",this._dataAlreadySent=\"\",this._compositionView.classList.add(\"active\")}compositionupdate(p){this._compositionView.textContent=p.data,this.updateCompositionElements(),setTimeout(()=>{this._compositionPosition.end=this._textarea.value.length},0)}compositionend(){this._finalizeComposition(!0)}keydown(p){if(this._isComposing||this._isSendingComposition){if(p.keyCode===229||p.keyCode===16||p.keyCode===17||p.keyCode===18)return!1;this._finalizeComposition(!1)}return p.keyCode!==229||(this._handleAnyTextareaChanges(),!1)}_finalizeComposition(p){if(this._compositionView.classList.remove(\"active\"),this._isComposing=!1,p){const g={start:this._compositionPosition.start,end:this._compositionPosition.end};this._isSendingComposition=!0,setTimeout(()=>{if(this._isSendingComposition){let m;this._isSendingComposition=!1,g.start+=this._dataAlreadySent.length,m=this._isComposing?this._textarea.value.substring(g.start,g.end):this._textarea.value.substring(g.start),m.length>0&&this._coreService.triggerDataEvent(m,!0)}},0)}else{this._isSendingComposition=!1;const g=this._textarea.value.substring(this._compositionPosition.start,this._compositionPosition.end);this._coreService.triggerDataEvent(g,!0)}}_handleAnyTextareaChanges(){const p=this._textarea.value;setTimeout(()=>{if(!this._isComposing){const g=this._textarea.value,m=g.replace(p,\"\");this._dataAlreadySent=m,g.length>p.length?this._coreService.triggerDataEvent(m,!0):g.length<p.length?this._coreService.triggerDataEvent(`${v.C0.DEL}`,!0):g.length===p.length&&g!==p&&this._coreService.triggerDataEvent(g,!0)}},0)}updateCompositionElements(p){if(this._isComposing){if(this._bufferService.buffer.isCursorInViewport){const g=Math.min(this._bufferService.buffer.x,this._bufferService.cols-1),m=this._renderService.dimensions.css.cell.height,y=this._bufferService.buffer.y*this._renderService.dimensions.css.cell.height,_=g*this._renderService.dimensions.css.cell.width;this._compositionView.style.left=_+\"px\",this._compositionView.style.top=y+\"px\",this._compositionView.style.height=m+\"px\",this._compositionView.style.lineHeight=m+\"px\",this._compositionView.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._compositionView.style.fontSize=this._optionsService.rawOptions.fontSize+\"px\";const w=this._compositionView.getBoundingClientRect();this._textarea.style.left=_+\"px\",this._textarea.style.top=y+\"px\",this._textarea.style.width=Math.max(w.width,1)+\"px\",this._textarea.style.height=Math.max(w.height,1)+\"px\",this._textarea.style.lineHeight=w.height+\"px\"}p||setTimeout(()=>this.updateCompositionElements(!0),0)}}};i.CompositionHelper=b=u([f(2,h.IBufferService),f(3,h.IOptionsService),f(4,h.ICoreService),f(5,d.IRenderService)],b)},9806:(a,i)=>{function l(u,f,d){const h=d.getBoundingClientRect(),v=u.getComputedStyle(d),b=parseInt(v.getPropertyValue(\"padding-left\")),p=parseInt(v.getPropertyValue(\"padding-top\"));return[f.clientX-h.left-b,f.clientY-h.top-p]}Object.defineProperty(i,\"__esModule\",{value:!0}),i.getCoords=i.getCoordsRelativeToElement=void 0,i.getCoordsRelativeToElement=l,i.getCoords=function(u,f,d,h,v,b,p,g,m){if(!b)return;const y=l(u,f,d);return y?(y[0]=Math.ceil((y[0]+(m?p/2:0))/p),y[1]=Math.ceil(y[1]/g),y[0]=Math.min(Math.max(y[0],1),h+(m?1:0)),y[1]=Math.min(Math.max(y[1],1),v),y):void 0}},9504:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.moveToCellSequence=void 0;const u=l(2584);function f(g,m,y,_){const w=g-d(g,y),S=m-d(m,y),C=Math.abs(w-S)-function(E,k,T){let x=0;const M=E-d(E,T),A=k-d(k,T);for(let P=0;P<Math.abs(M-A);P++){const G=h(E,k)===\"A\"?-1:1,V=T.buffer.lines.get(M+G*P);V!=null&&V.isWrapped&&x++}return x}(g,m,y);return p(C,b(h(g,m),_))}function d(g,m){let y=0,_=m.buffer.lines.get(g),w=_==null?void 0:_.isWrapped;for(;w&&g>=0&&g<m.rows;)y++,_=m.buffer.lines.get(--g),w=_==null?void 0:_.isWrapped;return y}function h(g,m){return g>m?\"A\":\"B\"}function v(g,m,y,_,w,S){let C=g,E=m,k=\"\";for(;C!==y||E!==_;)C+=w?1:-1,w&&C>S.cols-1?(k+=S.buffer.translateBufferLineToString(E,!1,g,C),C=0,g=0,E++):!w&&C<0&&(k+=S.buffer.translateBufferLineToString(E,!1,0,g+1),C=S.cols-1,g=C,E--);return k+S.buffer.translateBufferLineToString(E,!1,g,C)}function b(g,m){const y=m?\"O\":\"[\";return u.C0.ESC+y+g}function p(g,m){g=Math.floor(g);let y=\"\";for(let _=0;_<g;_++)y+=m;return y}i.moveToCellSequence=function(g,m,y,_){const w=y.buffer.x,S=y.buffer.y;if(!y.buffer.hasScrollback)return function(k,T,x,M,A,P){return f(T,M,A,P).length===0?\"\":p(v(k,T,k,T-d(T,A),!1,A).length,b(\"D\",P))}(w,S,0,m,y,_)+f(S,m,y,_)+function(k,T,x,M,A,P){let G;G=f(T,M,A,P).length>0?M-d(M,A):T;const V=M,I=function(j,F,R,B,N,U){let J;return J=f(R,B,N,U).length>0?B-d(B,N):F,j<R&&J<=B||j>=R&&J<B?\"C\":\"D\"}(k,T,x,M,A,P);return p(v(k,G,x,V,I===\"C\",A).length,b(I,P))}(w,S,g,m,y,_);let C;if(S===m)return C=w>g?\"D\":\"C\",p(Math.abs(w-g),b(C,_));C=S>m?\"D\":\"C\";const E=Math.abs(S-m);return p(function(k,T){return T.cols-k}(S>m?g:w,y)+(E-1)*y.cols+1+((S>m?w:g)-1),b(C,_))}},1296:function(a,i,l){var u=this&&this.__decorate||function(P,G,V,I){var j,F=arguments.length,R=F<3?G:I===null?I=Object.getOwnPropertyDescriptor(G,V):I;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")R=Reflect.decorate(P,G,V,I);else for(var B=P.length-1;B>=0;B--)(j=P[B])&&(R=(F<3?j(R):F>3?j(G,V,R):j(G,V))||R);return F>3&&R&&Object.defineProperty(G,V,R),R},f=this&&this.__param||function(P,G){return function(V,I){G(V,I,P)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.DomRenderer=void 0;const d=l(3787),h=l(2550),v=l(2223),b=l(6171),p=l(6052),g=l(4725),m=l(8055),y=l(8460),_=l(844),w=l(2585),S=\"xterm-dom-renderer-owner-\",C=\"xterm-rows\",E=\"xterm-fg-\",k=\"xterm-bg-\",T=\"xterm-focus\",x=\"xterm-selection\";let M=1,A=i.DomRenderer=class extends _.Disposable{constructor(P,G,V,I,j,F,R,B,N,U,J,re,le){super(),this._terminal=P,this._document=G,this._element=V,this._screenElement=I,this._viewportElement=j,this._helperContainer=F,this._linkifier2=R,this._charSizeService=N,this._optionsService=U,this._bufferService=J,this._coreBrowserService=re,this._themeService=le,this._terminalClass=M++,this._rowElements=[],this._selectionRenderModel=(0,p.createSelectionRenderModel)(),this.onRequestRedraw=this.register(new y.EventEmitter).event,this._rowContainer=this._document.createElement(\"div\"),this._rowContainer.classList.add(C),this._rowContainer.style.lineHeight=\"normal\",this._rowContainer.setAttribute(\"aria-hidden\",\"true\"),this._refreshRowElements(this._bufferService.cols,this._bufferService.rows),this._selectionContainer=this._document.createElement(\"div\"),this._selectionContainer.classList.add(x),this._selectionContainer.setAttribute(\"aria-hidden\",\"true\"),this.dimensions=(0,b.createRenderDimensions)(),this._updateDimensions(),this.register(this._optionsService.onOptionChange(()=>this._handleOptionsChanged())),this.register(this._themeService.onChangeColors(pe=>this._injectCss(pe))),this._injectCss(this._themeService.colors),this._rowFactory=B.createInstance(d.DomRendererRowFactory,document),this._element.classList.add(S+this._terminalClass),this._screenElement.appendChild(this._rowContainer),this._screenElement.appendChild(this._selectionContainer),this.register(this._linkifier2.onShowLinkUnderline(pe=>this._handleLinkHover(pe))),this.register(this._linkifier2.onHideLinkUnderline(pe=>this._handleLinkLeave(pe))),this.register((0,_.toDisposable)(()=>{this._element.classList.remove(S+this._terminalClass),this._rowContainer.remove(),this._selectionContainer.remove(),this._widthCache.dispose(),this._themeStyleElement.remove(),this._dimensionsStyleElement.remove()})),this._widthCache=new h.WidthCache(this._document,this._helperContainer),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}_updateDimensions(){const P=this._coreBrowserService.dpr;this.dimensions.device.char.width=this._charSizeService.width*P,this.dimensions.device.char.height=Math.ceil(this._charSizeService.height*P),this.dimensions.device.cell.width=this.dimensions.device.char.width+Math.round(this._optionsService.rawOptions.letterSpacing),this.dimensions.device.cell.height=Math.floor(this.dimensions.device.char.height*this._optionsService.rawOptions.lineHeight),this.dimensions.device.char.left=0,this.dimensions.device.char.top=0,this.dimensions.device.canvas.width=this.dimensions.device.cell.width*this._bufferService.cols,this.dimensions.device.canvas.height=this.dimensions.device.cell.height*this._bufferService.rows,this.dimensions.css.canvas.width=Math.round(this.dimensions.device.canvas.width/P),this.dimensions.css.canvas.height=Math.round(this.dimensions.device.canvas.height/P),this.dimensions.css.cell.width=this.dimensions.css.canvas.width/this._bufferService.cols,this.dimensions.css.cell.height=this.dimensions.css.canvas.height/this._bufferService.rows;for(const V of this._rowElements)V.style.width=`${this.dimensions.css.canvas.width}px`,V.style.height=`${this.dimensions.css.cell.height}px`,V.style.lineHeight=`${this.dimensions.css.cell.height}px`,V.style.overflow=\"hidden\";this._dimensionsStyleElement||(this._dimensionsStyleElement=this._document.createElement(\"style\"),this._screenElement.appendChild(this._dimensionsStyleElement));const G=`${this._terminalSelector} .${C} span { display: inline-block; height: 100%; vertical-align: top;}`;this._dimensionsStyleElement.textContent=G,this._selectionContainer.style.height=this._viewportElement.style.height,this._screenElement.style.width=`${this.dimensions.css.canvas.width}px`,this._screenElement.style.height=`${this.dimensions.css.canvas.height}px`}_injectCss(P){this._themeStyleElement||(this._themeStyleElement=this._document.createElement(\"style\"),this._screenElement.appendChild(this._themeStyleElement));let G=`${this._terminalSelector} .${C} { color: ${P.foreground.css}; font-family: ${this._optionsService.rawOptions.fontFamily}; font-size: ${this._optionsService.rawOptions.fontSize}px; font-kerning: none; white-space: pre}`;G+=`${this._terminalSelector} .${C} .xterm-dim { color: ${m.color.multiplyOpacity(P.foreground,.5).css};}`,G+=`${this._terminalSelector} span:not(.xterm-bold) { font-weight: ${this._optionsService.rawOptions.fontWeight};}${this._terminalSelector} span.xterm-bold { font-weight: ${this._optionsService.rawOptions.fontWeightBold};}${this._terminalSelector} span.xterm-italic { font-style: italic;}`;const V=`blink_underline_${this._terminalClass}`,I=`blink_bar_${this._terminalClass}`,j=`blink_block_${this._terminalClass}`;G+=`@keyframes ${V} { 50% {  border-bottom-style: hidden; }}`,G+=`@keyframes ${I} { 50% {  box-shadow: none; }}`,G+=`@keyframes ${j} { 0% {  background-color: ${P.cursor.css};  color: ${P.cursorAccent.css}; } 50% {  background-color: inherit;  color: ${P.cursor.css}; }}`,G+=`${this._terminalSelector} .${C}.${T} .xterm-cursor.xterm-cursor-blink.xterm-cursor-underline { animation: ${V} 1s step-end infinite;}${this._terminalSelector} .${C}.${T} .xterm-cursor.xterm-cursor-blink.xterm-cursor-bar { animation: ${I} 1s step-end infinite;}${this._terminalSelector} .${C}.${T} .xterm-cursor.xterm-cursor-blink.xterm-cursor-block { animation: ${j} 1s step-end infinite;}${this._terminalSelector} .${C} .xterm-cursor.xterm-cursor-block { background-color: ${P.cursor.css}; color: ${P.cursorAccent.css};}${this._terminalSelector} .${C} .xterm-cursor.xterm-cursor-block:not(.xterm-cursor-blink) { background-color: ${P.cursor.css} !important; color: ${P.cursorAccent.css} !important;}${this._terminalSelector} .${C} .xterm-cursor.xterm-cursor-outline { outline: 1px solid ${P.cursor.css}; outline-offset: -1px;}${this._terminalSelector} .${C} .xterm-cursor.xterm-cursor-bar { box-shadow: ${this._optionsService.rawOptions.cursorWidth}px 0 0 ${P.cursor.css} inset;}${this._terminalSelector} .${C} .xterm-cursor.xterm-cursor-underline { border-bottom: 1px ${P.cursor.css}; border-bottom-style: solid; height: calc(100% - 1px);}`,G+=`${this._terminalSelector} .${x} { position: absolute; top: 0; left: 0; z-index: 1; pointer-events: none;}${this._terminalSelector}.focus .${x} div { position: absolute; background-color: ${P.selectionBackgroundOpaque.css};}${this._terminalSelector} .${x} div { position: absolute; background-color: ${P.selectionInactiveBackgroundOpaque.css};}`;for(const[F,R]of P.ansi.entries())G+=`${this._terminalSelector} .${E}${F} { color: ${R.css}; }${this._terminalSelector} .${E}${F}.xterm-dim { color: ${m.color.multiplyOpacity(R,.5).css}; }${this._terminalSelector} .${k}${F} { background-color: ${R.css}; }`;G+=`${this._terminalSelector} .${E}${v.INVERTED_DEFAULT_COLOR} { color: ${m.color.opaque(P.background).css}; }${this._terminalSelector} .${E}${v.INVERTED_DEFAULT_COLOR}.xterm-dim { color: ${m.color.multiplyOpacity(m.color.opaque(P.background),.5).css}; }${this._terminalSelector} .${k}${v.INVERTED_DEFAULT_COLOR} { background-color: ${P.foreground.css}; }`,this._themeStyleElement.textContent=G}_setDefaultSpacing(){const P=this.dimensions.css.cell.width-this._widthCache.get(\"W\",!1,!1);this._rowContainer.style.letterSpacing=`${P}px`,this._rowFactory.defaultSpacing=P}handleDevicePixelRatioChange(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}_refreshRowElements(P,G){for(let V=this._rowElements.length;V<=G;V++){const I=this._document.createElement(\"div\");this._rowContainer.appendChild(I),this._rowElements.push(I)}for(;this._rowElements.length>G;)this._rowContainer.removeChild(this._rowElements.pop())}handleResize(P,G){this._refreshRowElements(P,G),this._updateDimensions(),this.handleSelectionChanged(this._selectionRenderModel.selectionStart,this._selectionRenderModel.selectionEnd,this._selectionRenderModel.columnSelectMode)}handleCharSizeChanged(){this._updateDimensions(),this._widthCache.clear(),this._setDefaultSpacing()}handleBlur(){this._rowContainer.classList.remove(T),this.renderRows(0,this._bufferService.rows-1)}handleFocus(){this._rowContainer.classList.add(T),this.renderRows(this._bufferService.buffer.y,this._bufferService.buffer.y)}handleSelectionChanged(P,G,V){if(this._selectionContainer.replaceChildren(),this._rowFactory.handleSelectionChanged(P,G,V),this.renderRows(0,this._bufferService.rows-1),!P||!G)return;this._selectionRenderModel.update(this._terminal,P,G,V);const I=this._selectionRenderModel.viewportStartRow,j=this._selectionRenderModel.viewportEndRow,F=this._selectionRenderModel.viewportCappedStartRow,R=this._selectionRenderModel.viewportCappedEndRow;if(F>=this._bufferService.rows||R<0)return;const B=this._document.createDocumentFragment();if(V){const N=P[0]>G[0];B.appendChild(this._createSelectionElement(F,N?G[0]:P[0],N?P[0]:G[0],R-F+1))}else{const N=I===F?P[0]:0,U=F===j?G[0]:this._bufferService.cols;B.appendChild(this._createSelectionElement(F,N,U));const J=R-F-1;if(B.appendChild(this._createSelectionElement(F+1,0,this._bufferService.cols,J)),F!==R){const re=j===R?G[0]:this._bufferService.cols;B.appendChild(this._createSelectionElement(R,0,re))}}this._selectionContainer.appendChild(B)}_createSelectionElement(P,G,V,I=1){const j=this._document.createElement(\"div\"),F=G*this.dimensions.css.cell.width;let R=this.dimensions.css.cell.width*(V-G);return F+R>this.dimensions.css.canvas.width&&(R=this.dimensions.css.canvas.width-F),j.style.height=I*this.dimensions.css.cell.height+\"px\",j.style.top=P*this.dimensions.css.cell.height+\"px\",j.style.left=`${F}px`,j.style.width=`${R}px`,j}handleCursorMove(){}_handleOptionsChanged(){this._updateDimensions(),this._injectCss(this._themeService.colors),this._widthCache.setFont(this._optionsService.rawOptions.fontFamily,this._optionsService.rawOptions.fontSize,this._optionsService.rawOptions.fontWeight,this._optionsService.rawOptions.fontWeightBold),this._setDefaultSpacing()}clear(){for(const P of this._rowElements)P.replaceChildren()}renderRows(P,G){const V=this._bufferService.buffer,I=V.ybase+V.y,j=Math.min(V.x,this._bufferService.cols-1),F=this._optionsService.rawOptions.cursorBlink,R=this._optionsService.rawOptions.cursorStyle,B=this._optionsService.rawOptions.cursorInactiveStyle;for(let N=P;N<=G;N++){const U=N+V.ydisp,J=this._rowElements[N],re=V.lines.get(U);if(!J||!re)break;J.replaceChildren(...this._rowFactory.createRow(re,U,U===I,R,B,j,F,this.dimensions.css.cell.width,this._widthCache,-1,-1))}}get _terminalSelector(){return`.${S}${this._terminalClass}`}_handleLinkHover(P){this._setCellUnderline(P.x1,P.x2,P.y1,P.y2,P.cols,!0)}_handleLinkLeave(P){this._setCellUnderline(P.x1,P.x2,P.y1,P.y2,P.cols,!1)}_setCellUnderline(P,G,V,I,j,F){V<0&&(P=0),I<0&&(G=0);const R=this._bufferService.rows-1;V=Math.max(Math.min(V,R),0),I=Math.max(Math.min(I,R),0),j=Math.min(j,this._bufferService.cols);const B=this._bufferService.buffer,N=B.ybase+B.y,U=Math.min(B.x,j-1),J=this._optionsService.rawOptions.cursorBlink,re=this._optionsService.rawOptions.cursorStyle,le=this._optionsService.rawOptions.cursorInactiveStyle;for(let pe=V;pe<=I;++pe){const K=pe+B.ydisp,z=this._rowElements[pe],te=B.lines.get(K);if(!z||!te)break;z.replaceChildren(...this._rowFactory.createRow(te,K,K===N,re,le,U,J,this.dimensions.css.cell.width,this._widthCache,F?pe===V?P:0:-1,F?(pe===I?G:j)-1:-1))}}};i.DomRenderer=A=u([f(7,w.IInstantiationService),f(8,g.ICharSizeService),f(9,w.IOptionsService),f(10,w.IBufferService),f(11,g.ICoreBrowserService),f(12,g.IThemeService)],A)},3787:function(a,i,l){var u=this&&this.__decorate||function(C,E,k,T){var x,M=arguments.length,A=M<3?E:T===null?T=Object.getOwnPropertyDescriptor(E,k):T;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")A=Reflect.decorate(C,E,k,T);else for(var P=C.length-1;P>=0;P--)(x=C[P])&&(A=(M<3?x(A):M>3?x(E,k,A):x(E,k))||A);return M>3&&A&&Object.defineProperty(E,k,A),A},f=this&&this.__param||function(C,E){return function(k,T){E(k,T,C)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.DomRendererRowFactory=void 0;const d=l(2223),h=l(643),v=l(511),b=l(2585),p=l(8055),g=l(4725),m=l(4269),y=l(6171),_=l(3734);let w=i.DomRendererRowFactory=class{constructor(C,E,k,T,x,M,A){this._document=C,this._characterJoinerService=E,this._optionsService=k,this._coreBrowserService=T,this._coreService=x,this._decorationService=M,this._themeService=A,this._workCell=new v.CellData,this._columnSelectMode=!1,this.defaultSpacing=0}handleSelectionChanged(C,E,k){this._selectionStart=C,this._selectionEnd=E,this._columnSelectMode=k}createRow(C,E,k,T,x,M,A,P,G,V,I){const j=[],F=this._characterJoinerService.getJoinedCharacters(E),R=this._themeService.colors;let B,N=C.getNoBgTrimmedLength();k&&N<M+1&&(N=M+1);let U=0,J=\"\",re=0,le=0,pe=0,K=!1,z=0,te=!1,oe=0;const he=[],Y=V!==-1&&I!==-1;for(let L=0;L<N;L++){C.loadCell(L,this._workCell);let Q=this._workCell.getWidth();if(Q===0)continue;let se=!1,ge=L,ae=this._workCell;if(F.length>0&&L===F[0][0]){se=!0;const fe=F.shift();ae=new m.JoinedCellData(this._workCell,C.translateToString(!0,fe[0],fe[1]),fe[1]-fe[0]),ge=fe[1]-1,Q=ae.getWidth()}const _e=this._isCellInSelection(L,E),me=k&&L===M,Ce=Y&&L>=V&&L<=I;let Te=!1;this._decorationService.forEachDecorationAtCell(L,E,void 0,fe=>{Te=!0});let Se=ae.getChars()||h.WHITESPACE_CELL_CHAR;if(Se===\" \"&&(ae.isUnderline()||ae.isOverline())&&(Se=\" \"),oe=Q*P-G.get(Se,ae.isBold(),ae.isItalic()),B){if(U&&(_e&&te||!_e&&!te&&ae.bg===re)&&(_e&&te&&R.selectionForeground||ae.fg===le)&&ae.extended.ext===pe&&Ce===K&&oe===z&&!me&&!se&&!Te){ae.isInvisible()?J+=h.WHITESPACE_CELL_CHAR:J+=Se,U++;continue}U&&(B.textContent=J),B=this._document.createElement(\"span\"),U=0,J=\"\"}else B=this._document.createElement(\"span\");if(re=ae.bg,le=ae.fg,pe=ae.extended.ext,K=Ce,z=oe,te=_e,se&&M>=L&&M<=ge&&(M=L),!this._coreService.isCursorHidden&&me&&this._coreService.isCursorInitialized){if(he.push(\"xterm-cursor\"),this._coreBrowserService.isFocused)A&&he.push(\"xterm-cursor-blink\"),he.push(T===\"bar\"?\"xterm-cursor-bar\":T===\"underline\"?\"xterm-cursor-underline\":\"xterm-cursor-block\");else if(x)switch(x){case\"outline\":he.push(\"xterm-cursor-outline\");break;case\"block\":he.push(\"xterm-cursor-block\");break;case\"bar\":he.push(\"xterm-cursor-bar\");break;case\"underline\":he.push(\"xterm-cursor-underline\")}}if(ae.isBold()&&he.push(\"xterm-bold\"),ae.isItalic()&&he.push(\"xterm-italic\"),ae.isDim()&&he.push(\"xterm-dim\"),J=ae.isInvisible()?h.WHITESPACE_CELL_CHAR:ae.getChars()||h.WHITESPACE_CELL_CHAR,ae.isUnderline()&&(he.push(`xterm-underline-${ae.extended.underlineStyle}`),J===\" \"&&(J=\" \"),!ae.isUnderlineColorDefault()))if(ae.isUnderlineColorRGB())B.style.textDecorationColor=`rgb(${_.AttributeData.toColorRGB(ae.getUnderlineColor()).join(\",\")})`;else{let fe=ae.getUnderlineColor();this._optionsService.rawOptions.drawBoldTextInBrightColors&&ae.isBold()&&fe<8&&(fe+=8),B.style.textDecorationColor=R.ansi[fe].css}ae.isOverline()&&(he.push(\"xterm-overline\"),J===\" \"&&(J=\" \")),ae.isStrikethrough()&&he.push(\"xterm-strikethrough\"),Ce&&(B.style.textDecoration=\"underline\");let Ie=ae.getFgColor(),be=ae.getFgColorMode(),Ae=ae.getBgColor(),qe=ae.getBgColorMode();const tt=!!ae.isInverse();if(tt){const fe=Ie;Ie=Ae,Ae=fe;const $e=be;be=qe,qe=$e}let et,at,ht,Ct=!1;switch(this._decorationService.forEachDecorationAtCell(L,E,void 0,fe=>{fe.options.layer!==\"top\"&&Ct||(fe.backgroundColorRGB&&(qe=50331648,Ae=fe.backgroundColorRGB.rgba>>8&16777215,et=fe.backgroundColorRGB),fe.foregroundColorRGB&&(be=50331648,Ie=fe.foregroundColorRGB.rgba>>8&16777215,at=fe.foregroundColorRGB),Ct=fe.options.layer===\"top\")}),!Ct&&_e&&(et=this._coreBrowserService.isFocused?R.selectionBackgroundOpaque:R.selectionInactiveBackgroundOpaque,Ae=et.rgba>>8&16777215,qe=50331648,Ct=!0,R.selectionForeground&&(be=50331648,Ie=R.selectionForeground.rgba>>8&16777215,at=R.selectionForeground)),Ct&&he.push(\"xterm-decoration-top\"),qe){case 16777216:case 33554432:ht=R.ansi[Ae],he.push(`xterm-bg-${Ae}`);break;case 50331648:ht=p.channels.toColor(Ae>>16,Ae>>8&255,255&Ae),this._addStyle(B,`background-color:#${S((Ae>>>0).toString(16),\"0\",6)}`);break;default:tt?(ht=R.foreground,he.push(`xterm-bg-${d.INVERTED_DEFAULT_COLOR}`)):ht=R.background}switch(et||ae.isDim()&&(et=p.color.multiplyOpacity(ht,.5)),be){case 16777216:case 33554432:ae.isBold()&&Ie<8&&this._optionsService.rawOptions.drawBoldTextInBrightColors&&(Ie+=8),this._applyMinimumContrast(B,ht,R.ansi[Ie],ae,et,void 0)||he.push(`xterm-fg-${Ie}`);break;case 50331648:const fe=p.channels.toColor(Ie>>16&255,Ie>>8&255,255&Ie);this._applyMinimumContrast(B,ht,fe,ae,et,at)||this._addStyle(B,`color:#${S(Ie.toString(16),\"0\",6)}`);break;default:this._applyMinimumContrast(B,ht,R.foreground,ae,et,at)||tt&&he.push(`xterm-fg-${d.INVERTED_DEFAULT_COLOR}`)}he.length&&(B.className=he.join(\" \"),he.length=0),me||se||Te?B.textContent=J:U++,oe!==this.defaultSpacing&&(B.style.letterSpacing=`${oe}px`),j.push(B),L=ge}return B&&U&&(B.textContent=J),j}_applyMinimumContrast(C,E,k,T,x,M){if(this._optionsService.rawOptions.minimumContrastRatio===1||(0,y.treatGlyphAsBackgroundColor)(T.getCode()))return!1;const A=this._getContrastCache(T);let P;if(x||M||(P=A.getColor(E.rgba,k.rgba)),P===void 0){const G=this._optionsService.rawOptions.minimumContrastRatio/(T.isDim()?2:1);P=p.color.ensureContrastRatio(x||E,M||k,G),A.setColor((x||E).rgba,(M||k).rgba,P??null)}return!!P&&(this._addStyle(C,`color:${P.css}`),!0)}_getContrastCache(C){return C.isDim()?this._themeService.colors.halfContrastCache:this._themeService.colors.contrastCache}_addStyle(C,E){C.setAttribute(\"style\",`${C.getAttribute(\"style\")||\"\"}${E};`)}_isCellInSelection(C,E){const k=this._selectionStart,T=this._selectionEnd;return!(!k||!T)&&(this._columnSelectMode?k[0]<=T[0]?C>=k[0]&&E>=k[1]&&C<T[0]&&E<=T[1]:C<k[0]&&E>=k[1]&&C>=T[0]&&E<=T[1]:E>k[1]&&E<T[1]||k[1]===T[1]&&E===k[1]&&C>=k[0]&&C<T[0]||k[1]<T[1]&&E===T[1]&&C<T[0]||k[1]<T[1]&&E===k[1]&&C>=k[0])}};function S(C,E,k){for(;C.length<k;)C=E+C;return C}i.DomRendererRowFactory=w=u([f(1,g.ICharacterJoinerService),f(2,b.IOptionsService),f(3,g.ICoreBrowserService),f(4,b.ICoreService),f(5,b.IDecorationService),f(6,g.IThemeService)],w)},2550:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.WidthCache=void 0,i.WidthCache=class{constructor(l,u){this._flat=new Float32Array(256),this._font=\"\",this._fontSize=0,this._weight=\"normal\",this._weightBold=\"bold\",this._measureElements=[],this._container=l.createElement(\"div\"),this._container.classList.add(\"xterm-width-cache-measure-container\"),this._container.setAttribute(\"aria-hidden\",\"true\"),this._container.style.whiteSpace=\"pre\",this._container.style.fontKerning=\"none\";const f=l.createElement(\"span\");f.classList.add(\"xterm-char-measure-element\");const d=l.createElement(\"span\");d.classList.add(\"xterm-char-measure-element\"),d.style.fontWeight=\"bold\";const h=l.createElement(\"span\");h.classList.add(\"xterm-char-measure-element\"),h.style.fontStyle=\"italic\";const v=l.createElement(\"span\");v.classList.add(\"xterm-char-measure-element\"),v.style.fontWeight=\"bold\",v.style.fontStyle=\"italic\",this._measureElements=[f,d,h,v],this._container.appendChild(f),this._container.appendChild(d),this._container.appendChild(h),this._container.appendChild(v),u.appendChild(this._container),this.clear()}dispose(){this._container.remove(),this._measureElements.length=0,this._holey=void 0}clear(){this._flat.fill(-9999),this._holey=new Map}setFont(l,u,f,d){l===this._font&&u===this._fontSize&&f===this._weight&&d===this._weightBold||(this._font=l,this._fontSize=u,this._weight=f,this._weightBold=d,this._container.style.fontFamily=this._font,this._container.style.fontSize=`${this._fontSize}px`,this._measureElements[0].style.fontWeight=`${f}`,this._measureElements[1].style.fontWeight=`${d}`,this._measureElements[2].style.fontWeight=`${f}`,this._measureElements[3].style.fontWeight=`${d}`,this.clear())}get(l,u,f){let d=0;if(!u&&!f&&l.length===1&&(d=l.charCodeAt(0))<256){if(this._flat[d]!==-9999)return this._flat[d];const b=this._measure(l,0);return b>0&&(this._flat[d]=b),b}let h=l;u&&(h+=\"B\"),f&&(h+=\"I\");let v=this._holey.get(h);if(v===void 0){let b=0;u&&(b|=1),f&&(b|=2),v=this._measure(l,b),v>0&&this._holey.set(h,v)}return v}_measure(l,u){const f=this._measureElements[u];return f.textContent=l.repeat(32),f.offsetWidth/32}}},2223:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.TEXT_BASELINE=i.DIM_OPACITY=i.INVERTED_DEFAULT_COLOR=void 0;const u=l(6114);i.INVERTED_DEFAULT_COLOR=257,i.DIM_OPACITY=.5,i.TEXT_BASELINE=u.isFirefox||u.isLegacyEdge?\"bottom\":\"ideographic\"},6171:(a,i)=>{function l(f){return 57508<=f&&f<=57558}function u(f){return f>=128512&&f<=128591||f>=127744&&f<=128511||f>=128640&&f<=128767||f>=9728&&f<=9983||f>=9984&&f<=10175||f>=65024&&f<=65039||f>=129280&&f<=129535||f>=127462&&f<=127487}Object.defineProperty(i,\"__esModule\",{value:!0}),i.computeNextVariantOffset=i.createRenderDimensions=i.treatGlyphAsBackgroundColor=i.allowRescaling=i.isEmoji=i.isRestrictedPowerlineGlyph=i.isPowerlineGlyph=i.throwIfFalsy=void 0,i.throwIfFalsy=function(f){if(!f)throw new Error(\"value must not be falsy\");return f},i.isPowerlineGlyph=l,i.isRestrictedPowerlineGlyph=function(f){return 57520<=f&&f<=57527},i.isEmoji=u,i.allowRescaling=function(f,d,h,v){return d===1&&h>Math.ceil(1.5*v)&&f!==void 0&&f>255&&!u(f)&&!l(f)&&!function(b){return 57344<=b&&b<=63743}(f)},i.treatGlyphAsBackgroundColor=function(f){return l(f)||function(d){return 9472<=d&&d<=9631}(f)},i.createRenderDimensions=function(){return{css:{canvas:{width:0,height:0},cell:{width:0,height:0}},device:{canvas:{width:0,height:0},cell:{width:0,height:0},char:{width:0,height:0,left:0,top:0}}}},i.computeNextVariantOffset=function(f,d,h=0){return(f-(2*Math.round(d)-h))%(2*Math.round(d))}},6052:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.createSelectionRenderModel=void 0;class l{constructor(){this.clear()}clear(){this.hasSelection=!1,this.columnSelectMode=!1,this.viewportStartRow=0,this.viewportEndRow=0,this.viewportCappedStartRow=0,this.viewportCappedEndRow=0,this.startCol=0,this.endCol=0,this.selectionStart=void 0,this.selectionEnd=void 0}update(f,d,h,v=!1){if(this.selectionStart=d,this.selectionEnd=h,!d||!h||d[0]===h[0]&&d[1]===h[1])return void this.clear();const b=f.buffers.active.ydisp,p=d[1]-b,g=h[1]-b,m=Math.max(p,0),y=Math.min(g,f.rows-1);m>=f.rows||y<0?this.clear():(this.hasSelection=!0,this.columnSelectMode=v,this.viewportStartRow=p,this.viewportEndRow=g,this.viewportCappedStartRow=m,this.viewportCappedEndRow=y,this.startCol=d[0],this.endCol=h[0])}isCellSelected(f,d,h){return!!this.hasSelection&&(h-=f.buffer.active.viewportY,this.columnSelectMode?this.startCol<=this.endCol?d>=this.startCol&&h>=this.viewportCappedStartRow&&d<this.endCol&&h<=this.viewportCappedEndRow:d<this.startCol&&h>=this.viewportCappedStartRow&&d>=this.endCol&&h<=this.viewportCappedEndRow:h>this.viewportStartRow&&h<this.viewportEndRow||this.viewportStartRow===this.viewportEndRow&&h===this.viewportStartRow&&d>=this.startCol&&d<this.endCol||this.viewportStartRow<this.viewportEndRow&&h===this.viewportEndRow&&d<this.endCol||this.viewportStartRow<this.viewportEndRow&&h===this.viewportStartRow&&d>=this.startCol)}}i.createSelectionRenderModel=function(){return new l}},456:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.SelectionModel=void 0,i.SelectionModel=class{constructor(l){this._bufferService=l,this.isSelectAllActive=!1,this.selectionStartLength=0}clearSelection(){this.selectionStart=void 0,this.selectionEnd=void 0,this.isSelectAllActive=!1,this.selectionStartLength=0}get finalSelectionStart(){return this.isSelectAllActive?[0,0]:this.selectionEnd&&this.selectionStart&&this.areSelectionValuesReversed()?this.selectionEnd:this.selectionStart}get finalSelectionEnd(){if(this.isSelectAllActive)return[this._bufferService.cols,this._bufferService.buffer.ybase+this._bufferService.rows-1];if(this.selectionStart){if(!this.selectionEnd||this.areSelectionValuesReversed()){const l=this.selectionStart[0]+this.selectionStartLength;return l>this._bufferService.cols?l%this._bufferService.cols==0?[this._bufferService.cols,this.selectionStart[1]+Math.floor(l/this._bufferService.cols)-1]:[l%this._bufferService.cols,this.selectionStart[1]+Math.floor(l/this._bufferService.cols)]:[l,this.selectionStart[1]]}if(this.selectionStartLength&&this.selectionEnd[1]===this.selectionStart[1]){const l=this.selectionStart[0]+this.selectionStartLength;return l>this._bufferService.cols?[l%this._bufferService.cols,this.selectionStart[1]+Math.floor(l/this._bufferService.cols)]:[Math.max(l,this.selectionEnd[0]),this.selectionEnd[1]]}return this.selectionEnd}}areSelectionValuesReversed(){const l=this.selectionStart,u=this.selectionEnd;return!(!l||!u)&&(l[1]>u[1]||l[1]===u[1]&&l[0]>u[0])}handleTrim(l){return this.selectionStart&&(this.selectionStart[1]-=l),this.selectionEnd&&(this.selectionEnd[1]-=l),this.selectionEnd&&this.selectionEnd[1]<0?(this.clearSelection(),!0):(this.selectionStart&&this.selectionStart[1]<0&&(this.selectionStart[1]=0),!1)}}},428:function(a,i,l){var u=this&&this.__decorate||function(y,_,w,S){var C,E=arguments.length,k=E<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")k=Reflect.decorate(y,_,w,S);else for(var T=y.length-1;T>=0;T--)(C=y[T])&&(k=(E<3?C(k):E>3?C(_,w,k):C(_,w))||k);return E>3&&k&&Object.defineProperty(_,w,k),k},f=this&&this.__param||function(y,_){return function(w,S){_(w,S,y)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.CharSizeService=void 0;const d=l(2585),h=l(8460),v=l(844);let b=i.CharSizeService=class extends v.Disposable{get hasValidSize(){return this.width>0&&this.height>0}constructor(y,_,w){super(),this._optionsService=w,this.width=0,this.height=0,this._onCharSizeChange=this.register(new h.EventEmitter),this.onCharSizeChange=this._onCharSizeChange.event;try{this._measureStrategy=this.register(new m(this._optionsService))}catch{this._measureStrategy=this.register(new g(y,_,this._optionsService))}this.register(this._optionsService.onMultipleOptionChange([\"fontFamily\",\"fontSize\"],()=>this.measure()))}measure(){const y=this._measureStrategy.measure();y.width===this.width&&y.height===this.height||(this.width=y.width,this.height=y.height,this._onCharSizeChange.fire())}};i.CharSizeService=b=u([f(2,d.IOptionsService)],b);class p extends v.Disposable{constructor(){super(...arguments),this._result={width:0,height:0}}_validateAndSet(_,w){_!==void 0&&_>0&&w!==void 0&&w>0&&(this._result.width=_,this._result.height=w)}}class g extends p{constructor(_,w,S){super(),this._document=_,this._parentElement=w,this._optionsService=S,this._measureElement=this._document.createElement(\"span\"),this._measureElement.classList.add(\"xterm-char-measure-element\"),this._measureElement.textContent=\"W\".repeat(32),this._measureElement.setAttribute(\"aria-hidden\",\"true\"),this._measureElement.style.whiteSpace=\"pre\",this._measureElement.style.fontKerning=\"none\",this._parentElement.appendChild(this._measureElement)}measure(){return this._measureElement.style.fontFamily=this._optionsService.rawOptions.fontFamily,this._measureElement.style.fontSize=`${this._optionsService.rawOptions.fontSize}px`,this._validateAndSet(Number(this._measureElement.offsetWidth)/32,Number(this._measureElement.offsetHeight)),this._result}}class m extends p{constructor(_){super(),this._optionsService=_,this._canvas=new OffscreenCanvas(100,100),this._ctx=this._canvas.getContext(\"2d\");const w=this._ctx.measureText(\"W\");if(!(\"width\"in w&&\"fontBoundingBoxAscent\"in w&&\"fontBoundingBoxDescent\"in w))throw new Error(\"Required font metrics not supported\")}measure(){this._ctx.font=`${this._optionsService.rawOptions.fontSize}px ${this._optionsService.rawOptions.fontFamily}`;const _=this._ctx.measureText(\"W\");return this._validateAndSet(_.width,_.fontBoundingBoxAscent+_.fontBoundingBoxDescent),this._result}}},4269:function(a,i,l){var u=this&&this.__decorate||function(m,y,_,w){var S,C=arguments.length,E=C<3?y:w===null?w=Object.getOwnPropertyDescriptor(y,_):w;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")E=Reflect.decorate(m,y,_,w);else for(var k=m.length-1;k>=0;k--)(S=m[k])&&(E=(C<3?S(E):C>3?S(y,_,E):S(y,_))||E);return C>3&&E&&Object.defineProperty(y,_,E),E},f=this&&this.__param||function(m,y){return function(_,w){y(_,w,m)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.CharacterJoinerService=i.JoinedCellData=void 0;const d=l(3734),h=l(643),v=l(511),b=l(2585);class p extends d.AttributeData{constructor(y,_,w){super(),this.content=0,this.combinedData=\"\",this.fg=y.fg,this.bg=y.bg,this.combinedData=_,this._width=w}isCombined(){return 2097152}getWidth(){return this._width}getChars(){return this.combinedData}getCode(){return 2097151}setFromCharData(y){throw new Error(\"not implemented\")}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.JoinedCellData=p;let g=i.CharacterJoinerService=class jE{constructor(y){this._bufferService=y,this._characterJoiners=[],this._nextCharacterJoinerId=0,this._workCell=new v.CellData}register(y){const _={id:this._nextCharacterJoinerId++,handler:y};return this._characterJoiners.push(_),_.id}deregister(y){for(let _=0;_<this._characterJoiners.length;_++)if(this._characterJoiners[_].id===y)return this._characterJoiners.splice(_,1),!0;return!1}getJoinedCharacters(y){if(this._characterJoiners.length===0)return[];const _=this._bufferService.buffer.lines.get(y);if(!_||_.length===0)return[];const w=[],S=_.translateToString(!0);let C=0,E=0,k=0,T=_.getFg(0),x=_.getBg(0);for(let M=0;M<_.getTrimmedLength();M++)if(_.loadCell(M,this._workCell),this._workCell.getWidth()!==0){if(this._workCell.fg!==T||this._workCell.bg!==x){if(M-C>1){const A=this._getJoinedRanges(S,k,E,_,C);for(let P=0;P<A.length;P++)w.push(A[P])}C=M,k=E,T=this._workCell.fg,x=this._workCell.bg}E+=this._workCell.getChars().length||h.WHITESPACE_CELL_CHAR.length}if(this._bufferService.cols-C>1){const M=this._getJoinedRanges(S,k,E,_,C);for(let A=0;A<M.length;A++)w.push(M[A])}return w}_getJoinedRanges(y,_,w,S,C){const E=y.substring(_,w);let k=[];try{k=this._characterJoiners[0].handler(E)}catch(T){console.error(T)}for(let T=1;T<this._characterJoiners.length;T++)try{const x=this._characterJoiners[T].handler(E);for(let M=0;M<x.length;M++)jE._mergeRanges(k,x[M])}catch(x){console.error(x)}return this._stringRangesToCellRanges(k,S,C),k}_stringRangesToCellRanges(y,_,w){let S=0,C=!1,E=0,k=y[S];if(k){for(let T=w;T<this._bufferService.cols;T++){const x=_.getWidth(T),M=_.getString(T).length||h.WHITESPACE_CELL_CHAR.length;if(x!==0){if(!C&&k[0]<=E&&(k[0]=T,C=!0),k[1]<=E){if(k[1]=T,k=y[++S],!k)break;k[0]<=E?(k[0]=T,C=!0):C=!1}E+=M}}k&&(k[1]=this._bufferService.cols)}}static _mergeRanges(y,_){let w=!1;for(let S=0;S<y.length;S++){const C=y[S];if(w){if(_[1]<=C[0])return y[S-1][1]=_[1],y;if(_[1]<=C[1])return y[S-1][1]=Math.max(_[1],C[1]),y.splice(S,1),y;y.splice(S,1),S--}else{if(_[1]<=C[0])return y.splice(S,0,_),y;if(_[1]<=C[1])return C[0]=Math.min(_[0],C[0]),y;_[0]<C[1]&&(C[0]=Math.min(_[0],C[0]),w=!0)}}return w?y[y.length-1][1]=_[1]:y.push(_),y}};i.CharacterJoinerService=g=u([f(0,b.IBufferService)],g)},5114:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.CoreBrowserService=void 0;const u=l(844),f=l(8460),d=l(3656);class h extends u.Disposable{constructor(p,g,m){super(),this._textarea=p,this._window=g,this.mainDocument=m,this._isFocused=!1,this._cachedIsFocused=void 0,this._screenDprMonitor=new v(this._window),this._onDprChange=this.register(new f.EventEmitter),this.onDprChange=this._onDprChange.event,this._onWindowChange=this.register(new f.EventEmitter),this.onWindowChange=this._onWindowChange.event,this.register(this.onWindowChange(y=>this._screenDprMonitor.setWindow(y))),this.register((0,f.forwardEvent)(this._screenDprMonitor.onDprChange,this._onDprChange)),this._textarea.addEventListener(\"focus\",()=>this._isFocused=!0),this._textarea.addEventListener(\"blur\",()=>this._isFocused=!1)}get window(){return this._window}set window(p){this._window!==p&&(this._window=p,this._onWindowChange.fire(this._window))}get dpr(){return this.window.devicePixelRatio}get isFocused(){return this._cachedIsFocused===void 0&&(this._cachedIsFocused=this._isFocused&&this._textarea.ownerDocument.hasFocus(),queueMicrotask(()=>this._cachedIsFocused=void 0)),this._cachedIsFocused}}i.CoreBrowserService=h;class v extends u.Disposable{constructor(p){super(),this._parentWindow=p,this._windowResizeListener=this.register(new u.MutableDisposable),this._onDprChange=this.register(new f.EventEmitter),this.onDprChange=this._onDprChange.event,this._outerListener=()=>this._setDprAndFireIfDiffers(),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._updateDpr(),this._setWindowResizeListener(),this.register((0,u.toDisposable)(()=>this.clearListener()))}setWindow(p){this._parentWindow=p,this._setWindowResizeListener(),this._setDprAndFireIfDiffers()}_setWindowResizeListener(){this._windowResizeListener.value=(0,d.addDisposableDomListener)(this._parentWindow,\"resize\",()=>this._setDprAndFireIfDiffers())}_setDprAndFireIfDiffers(){this._parentWindow.devicePixelRatio!==this._currentDevicePixelRatio&&this._onDprChange.fire(this._parentWindow.devicePixelRatio),this._updateDpr()}_updateDpr(){var p;this._outerListener&&((p=this._resolutionMediaMatchList)==null||p.removeListener(this._outerListener),this._currentDevicePixelRatio=this._parentWindow.devicePixelRatio,this._resolutionMediaMatchList=this._parentWindow.matchMedia(`screen and (resolution: ${this._parentWindow.devicePixelRatio}dppx)`),this._resolutionMediaMatchList.addListener(this._outerListener))}clearListener(){this._resolutionMediaMatchList&&this._outerListener&&(this._resolutionMediaMatchList.removeListener(this._outerListener),this._resolutionMediaMatchList=void 0,this._outerListener=void 0)}}},779:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.LinkProviderService=void 0;const u=l(844);class f extends u.Disposable{constructor(){super(),this.linkProviders=[],this.register((0,u.toDisposable)(()=>this.linkProviders.length=0))}registerLinkProvider(h){return this.linkProviders.push(h),{dispose:()=>{const v=this.linkProviders.indexOf(h);v!==-1&&this.linkProviders.splice(v,1)}}}}i.LinkProviderService=f},8934:function(a,i,l){var u=this&&this.__decorate||function(b,p,g,m){var y,_=arguments.length,w=_<3?p:m===null?m=Object.getOwnPropertyDescriptor(p,g):m;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")w=Reflect.decorate(b,p,g,m);else for(var S=b.length-1;S>=0;S--)(y=b[S])&&(w=(_<3?y(w):_>3?y(p,g,w):y(p,g))||w);return _>3&&w&&Object.defineProperty(p,g,w),w},f=this&&this.__param||function(b,p){return function(g,m){p(g,m,b)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.MouseService=void 0;const d=l(4725),h=l(9806);let v=i.MouseService=class{constructor(b,p){this._renderService=b,this._charSizeService=p}getCoords(b,p,g,m,y){return(0,h.getCoords)(window,b,p,g,m,this._charSizeService.hasValidSize,this._renderService.dimensions.css.cell.width,this._renderService.dimensions.css.cell.height,y)}getMouseReportCoords(b,p){const g=(0,h.getCoordsRelativeToElement)(window,b,p);if(this._charSizeService.hasValidSize)return g[0]=Math.min(Math.max(g[0],0),this._renderService.dimensions.css.canvas.width-1),g[1]=Math.min(Math.max(g[1],0),this._renderService.dimensions.css.canvas.height-1),{col:Math.floor(g[0]/this._renderService.dimensions.css.cell.width),row:Math.floor(g[1]/this._renderService.dimensions.css.cell.height),x:Math.floor(g[0]),y:Math.floor(g[1])}}};i.MouseService=v=u([f(0,d.IRenderService),f(1,d.ICharSizeService)],v)},3230:function(a,i,l){var u=this&&this.__decorate||function(y,_,w,S){var C,E=arguments.length,k=E<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")k=Reflect.decorate(y,_,w,S);else for(var T=y.length-1;T>=0;T--)(C=y[T])&&(k=(E<3?C(k):E>3?C(_,w,k):C(_,w))||k);return E>3&&k&&Object.defineProperty(_,w,k),k},f=this&&this.__param||function(y,_){return function(w,S){_(w,S,y)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.RenderService=void 0;const d=l(6193),h=l(4725),v=l(8460),b=l(844),p=l(7226),g=l(2585);let m=i.RenderService=class extends b.Disposable{get dimensions(){return this._renderer.value.dimensions}constructor(y,_,w,S,C,E,k,T){super(),this._rowCount=y,this._charSizeService=S,this._renderer=this.register(new b.MutableDisposable),this._pausedResizeTask=new p.DebouncedIdleTask,this._observerDisposable=this.register(new b.MutableDisposable),this._isPaused=!1,this._needsFullRefresh=!1,this._isNextRenderRedrawOnly=!0,this._needsSelectionRefresh=!1,this._canvasWidth=0,this._canvasHeight=0,this._selectionState={start:void 0,end:void 0,columnSelectMode:!1},this._onDimensionsChange=this.register(new v.EventEmitter),this.onDimensionsChange=this._onDimensionsChange.event,this._onRenderedViewportChange=this.register(new v.EventEmitter),this.onRenderedViewportChange=this._onRenderedViewportChange.event,this._onRender=this.register(new v.EventEmitter),this.onRender=this._onRender.event,this._onRefreshRequest=this.register(new v.EventEmitter),this.onRefreshRequest=this._onRefreshRequest.event,this._renderDebouncer=new d.RenderDebouncer((x,M)=>this._renderRows(x,M),k),this.register(this._renderDebouncer),this.register(k.onDprChange(()=>this.handleDevicePixelRatioChange())),this.register(E.onResize(()=>this._fullRefresh())),this.register(E.buffers.onBufferActivate(()=>{var x;return(x=this._renderer.value)==null?void 0:x.clear()})),this.register(w.onOptionChange(()=>this._handleOptionsChanged())),this.register(this._charSizeService.onCharSizeChange(()=>this.handleCharSizeChanged())),this.register(C.onDecorationRegistered(()=>this._fullRefresh())),this.register(C.onDecorationRemoved(()=>this._fullRefresh())),this.register(w.onMultipleOptionChange([\"customGlyphs\",\"drawBoldTextInBrightColors\",\"letterSpacing\",\"lineHeight\",\"fontFamily\",\"fontSize\",\"fontWeight\",\"fontWeightBold\",\"minimumContrastRatio\",\"rescaleOverlappingGlyphs\"],()=>{this.clear(),this.handleResize(E.cols,E.rows),this._fullRefresh()})),this.register(w.onMultipleOptionChange([\"cursorBlink\",\"cursorStyle\"],()=>this.refreshRows(E.buffer.y,E.buffer.y,!0))),this.register(T.onChangeColors(()=>this._fullRefresh())),this._registerIntersectionObserver(k.window,_),this.register(k.onWindowChange(x=>this._registerIntersectionObserver(x,_)))}_registerIntersectionObserver(y,_){if(\"IntersectionObserver\"in y){const w=new y.IntersectionObserver(S=>this._handleIntersectionChange(S[S.length-1]),{threshold:0});w.observe(_),this._observerDisposable.value=(0,b.toDisposable)(()=>w.disconnect())}}_handleIntersectionChange(y){this._isPaused=y.isIntersecting===void 0?y.intersectionRatio===0:!y.isIntersecting,this._isPaused||this._charSizeService.hasValidSize||this._charSizeService.measure(),!this._isPaused&&this._needsFullRefresh&&(this._pausedResizeTask.flush(),this.refreshRows(0,this._rowCount-1),this._needsFullRefresh=!1)}refreshRows(y,_,w=!1){this._isPaused?this._needsFullRefresh=!0:(w||(this._isNextRenderRedrawOnly=!1),this._renderDebouncer.refresh(y,_,this._rowCount))}_renderRows(y,_){this._renderer.value&&(y=Math.min(y,this._rowCount-1),_=Math.min(_,this._rowCount-1),this._renderer.value.renderRows(y,_),this._needsSelectionRefresh&&(this._renderer.value.handleSelectionChanged(this._selectionState.start,this._selectionState.end,this._selectionState.columnSelectMode),this._needsSelectionRefresh=!1),this._isNextRenderRedrawOnly||this._onRenderedViewportChange.fire({start:y,end:_}),this._onRender.fire({start:y,end:_}),this._isNextRenderRedrawOnly=!0)}resize(y,_){this._rowCount=_,this._fireOnCanvasResize()}_handleOptionsChanged(){this._renderer.value&&(this.refreshRows(0,this._rowCount-1),this._fireOnCanvasResize())}_fireOnCanvasResize(){this._renderer.value&&(this._renderer.value.dimensions.css.canvas.width===this._canvasWidth&&this._renderer.value.dimensions.css.canvas.height===this._canvasHeight||this._onDimensionsChange.fire(this._renderer.value.dimensions))}hasRenderer(){return!!this._renderer.value}setRenderer(y){this._renderer.value=y,this._renderer.value&&(this._renderer.value.onRequestRedraw(_=>this.refreshRows(_.start,_.end,!0)),this._needsSelectionRefresh=!0,this._fullRefresh())}addRefreshCallback(y){return this._renderDebouncer.addRefreshCallback(y)}_fullRefresh(){this._isPaused?this._needsFullRefresh=!0:this.refreshRows(0,this._rowCount-1)}clearTextureAtlas(){var y,_;this._renderer.value&&((_=(y=this._renderer.value).clearTextureAtlas)==null||_.call(y),this._fullRefresh())}handleDevicePixelRatioChange(){this._charSizeService.measure(),this._renderer.value&&(this._renderer.value.handleDevicePixelRatioChange(),this.refreshRows(0,this._rowCount-1))}handleResize(y,_){this._renderer.value&&(this._isPaused?this._pausedResizeTask.set(()=>{var w;return(w=this._renderer.value)==null?void 0:w.handleResize(y,_)}):this._renderer.value.handleResize(y,_),this._fullRefresh())}handleCharSizeChanged(){var y;(y=this._renderer.value)==null||y.handleCharSizeChanged()}handleBlur(){var y;(y=this._renderer.value)==null||y.handleBlur()}handleFocus(){var y;(y=this._renderer.value)==null||y.handleFocus()}handleSelectionChanged(y,_,w){var S;this._selectionState.start=y,this._selectionState.end=_,this._selectionState.columnSelectMode=w,(S=this._renderer.value)==null||S.handleSelectionChanged(y,_,w)}handleCursorMove(){var y;(y=this._renderer.value)==null||y.handleCursorMove()}clear(){var y;(y=this._renderer.value)==null||y.clear()}};i.RenderService=m=u([f(2,g.IOptionsService),f(3,h.ICharSizeService),f(4,g.IDecorationService),f(5,g.IBufferService),f(6,h.ICoreBrowserService),f(7,h.IThemeService)],m)},9312:function(a,i,l){var u=this&&this.__decorate||function(k,T,x,M){var A,P=arguments.length,G=P<3?T:M===null?M=Object.getOwnPropertyDescriptor(T,x):M;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")G=Reflect.decorate(k,T,x,M);else for(var V=k.length-1;V>=0;V--)(A=k[V])&&(G=(P<3?A(G):P>3?A(T,x,G):A(T,x))||G);return P>3&&G&&Object.defineProperty(T,x,G),G},f=this&&this.__param||function(k,T){return function(x,M){T(x,M,k)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.SelectionService=void 0;const d=l(9806),h=l(9504),v=l(456),b=l(4725),p=l(8460),g=l(844),m=l(6114),y=l(4841),_=l(511),w=l(2585),S=\" \",C=new RegExp(S,\"g\");let E=i.SelectionService=class extends g.Disposable{constructor(k,T,x,M,A,P,G,V,I){super(),this._element=k,this._screenElement=T,this._linkifier=x,this._bufferService=M,this._coreService=A,this._mouseService=P,this._optionsService=G,this._renderService=V,this._coreBrowserService=I,this._dragScrollAmount=0,this._enabled=!0,this._workCell=new _.CellData,this._mouseDownTimeStamp=0,this._oldHasSelection=!1,this._oldSelectionStart=void 0,this._oldSelectionEnd=void 0,this._onLinuxMouseSelection=this.register(new p.EventEmitter),this.onLinuxMouseSelection=this._onLinuxMouseSelection.event,this._onRedrawRequest=this.register(new p.EventEmitter),this.onRequestRedraw=this._onRedrawRequest.event,this._onSelectionChange=this.register(new p.EventEmitter),this.onSelectionChange=this._onSelectionChange.event,this._onRequestScrollLines=this.register(new p.EventEmitter),this.onRequestScrollLines=this._onRequestScrollLines.event,this._mouseMoveListener=j=>this._handleMouseMove(j),this._mouseUpListener=j=>this._handleMouseUp(j),this._coreService.onUserInput(()=>{this.hasSelection&&this.clearSelection()}),this._trimListener=this._bufferService.buffer.lines.onTrim(j=>this._handleTrim(j)),this.register(this._bufferService.buffers.onBufferActivate(j=>this._handleBufferActivate(j))),this.enable(),this._model=new v.SelectionModel(this._bufferService),this._activeSelectionMode=0,this.register((0,g.toDisposable)(()=>{this._removeMouseDownListeners()}))}reset(){this.clearSelection()}disable(){this.clearSelection(),this._enabled=!1}enable(){this._enabled=!0}get selectionStart(){return this._model.finalSelectionStart}get selectionEnd(){return this._model.finalSelectionEnd}get hasSelection(){const k=this._model.finalSelectionStart,T=this._model.finalSelectionEnd;return!(!k||!T||k[0]===T[0]&&k[1]===T[1])}get selectionText(){const k=this._model.finalSelectionStart,T=this._model.finalSelectionEnd;if(!k||!T)return\"\";const x=this._bufferService.buffer,M=[];if(this._activeSelectionMode===3){if(k[0]===T[0])return\"\";const A=k[0]<T[0]?k[0]:T[0],P=k[0]<T[0]?T[0]:k[0];for(let G=k[1];G<=T[1];G++){const V=x.translateBufferLineToString(G,!0,A,P);M.push(V)}}else{const A=k[1]===T[1]?T[0]:void 0;M.push(x.translateBufferLineToString(k[1],!0,k[0],A));for(let P=k[1]+1;P<=T[1]-1;P++){const G=x.lines.get(P),V=x.translateBufferLineToString(P,!0);G!=null&&G.isWrapped?M[M.length-1]+=V:M.push(V)}if(k[1]!==T[1]){const P=x.lines.get(T[1]),G=x.translateBufferLineToString(T[1],!0,0,T[0]);P&&P.isWrapped?M[M.length-1]+=G:M.push(G)}}return M.map(A=>A.replace(C,\" \")).join(m.isWindows?`\\r\n`:`\n`)}clearSelection(){this._model.clearSelection(),this._removeMouseDownListeners(),this.refresh(),this._onSelectionChange.fire()}refresh(k){this._refreshAnimationFrame||(this._refreshAnimationFrame=this._coreBrowserService.window.requestAnimationFrame(()=>this._refresh())),m.isLinux&&k&&this.selectionText.length&&this._onLinuxMouseSelection.fire(this.selectionText)}_refresh(){this._refreshAnimationFrame=void 0,this._onRedrawRequest.fire({start:this._model.finalSelectionStart,end:this._model.finalSelectionEnd,columnSelectMode:this._activeSelectionMode===3})}_isClickInSelection(k){const T=this._getMouseBufferCoords(k),x=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;return!!(x&&M&&T)&&this._areCoordsInSelection(T,x,M)}isCellInSelection(k,T){const x=this._model.finalSelectionStart,M=this._model.finalSelectionEnd;return!(!x||!M)&&this._areCoordsInSelection([k,T],x,M)}_areCoordsInSelection(k,T,x){return k[1]>T[1]&&k[1]<x[1]||T[1]===x[1]&&k[1]===T[1]&&k[0]>=T[0]&&k[0]<x[0]||T[1]<x[1]&&k[1]===x[1]&&k[0]<x[0]||T[1]<x[1]&&k[1]===T[1]&&k[0]>=T[0]}_selectWordAtCursor(k,T){var A,P;const x=(P=(A=this._linkifier.currentLink)==null?void 0:A.link)==null?void 0:P.range;if(x)return this._model.selectionStart=[x.start.x-1,x.start.y-1],this._model.selectionStartLength=(0,y.getRangeLength)(x,this._bufferService.cols),this._model.selectionEnd=void 0,!0;const M=this._getMouseBufferCoords(k);return!!M&&(this._selectWordAt(M,T),this._model.selectionEnd=void 0,!0)}selectAll(){this._model.isSelectAllActive=!0,this.refresh(),this._onSelectionChange.fire()}selectLines(k,T){this._model.clearSelection(),k=Math.max(k,0),T=Math.min(T,this._bufferService.buffer.lines.length-1),this._model.selectionStart=[0,k],this._model.selectionEnd=[this._bufferService.cols,T],this.refresh(),this._onSelectionChange.fire()}_handleTrim(k){this._model.handleTrim(k)&&this.refresh()}_getMouseBufferCoords(k){const T=this._mouseService.getCoords(k,this._screenElement,this._bufferService.cols,this._bufferService.rows,!0);if(T)return T[0]--,T[1]--,T[1]+=this._bufferService.buffer.ydisp,T}_getMouseEventScrollAmount(k){let T=(0,d.getCoordsRelativeToElement)(this._coreBrowserService.window,k,this._screenElement)[1];const x=this._renderService.dimensions.css.canvas.height;return T>=0&&T<=x?0:(T>x&&(T-=x),T=Math.min(Math.max(T,-50),50),T/=50,T/Math.abs(T)+Math.round(14*T))}shouldForceSelection(k){return m.isMac?k.altKey&&this._optionsService.rawOptions.macOptionClickForcesSelection:k.shiftKey}handleMouseDown(k){if(this._mouseDownTimeStamp=k.timeStamp,(k.button!==2||!this.hasSelection)&&k.button===0){if(!this._enabled){if(!this.shouldForceSelection(k))return;k.stopPropagation()}k.preventDefault(),this._dragScrollAmount=0,this._enabled&&k.shiftKey?this._handleIncrementalClick(k):k.detail===1?this._handleSingleClick(k):k.detail===2?this._handleDoubleClick(k):k.detail===3&&this._handleTripleClick(k),this._addMouseDownListeners(),this.refresh(!0)}}_addMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.addEventListener(\"mousemove\",this._mouseMoveListener),this._screenElement.ownerDocument.addEventListener(\"mouseup\",this._mouseUpListener)),this._dragScrollIntervalTimer=this._coreBrowserService.window.setInterval(()=>this._dragScroll(),50)}_removeMouseDownListeners(){this._screenElement.ownerDocument&&(this._screenElement.ownerDocument.removeEventListener(\"mousemove\",this._mouseMoveListener),this._screenElement.ownerDocument.removeEventListener(\"mouseup\",this._mouseUpListener)),this._coreBrowserService.window.clearInterval(this._dragScrollIntervalTimer),this._dragScrollIntervalTimer=void 0}_handleIncrementalClick(k){this._model.selectionStart&&(this._model.selectionEnd=this._getMouseBufferCoords(k))}_handleSingleClick(k){if(this._model.selectionStartLength=0,this._model.isSelectAllActive=!1,this._activeSelectionMode=this.shouldColumnSelect(k)?3:0,this._model.selectionStart=this._getMouseBufferCoords(k),!this._model.selectionStart)return;this._model.selectionEnd=void 0;const T=this._bufferService.buffer.lines.get(this._model.selectionStart[1]);T&&T.length!==this._model.selectionStart[0]&&T.hasWidth(this._model.selectionStart[0])===0&&this._model.selectionStart[0]++}_handleDoubleClick(k){this._selectWordAtCursor(k,!0)&&(this._activeSelectionMode=1)}_handleTripleClick(k){const T=this._getMouseBufferCoords(k);T&&(this._activeSelectionMode=2,this._selectLineAt(T[1]))}shouldColumnSelect(k){return k.altKey&&!(m.isMac&&this._optionsService.rawOptions.macOptionClickForcesSelection)}_handleMouseMove(k){if(k.stopImmediatePropagation(),!this._model.selectionStart)return;const T=this._model.selectionEnd?[this._model.selectionEnd[0],this._model.selectionEnd[1]]:null;if(this._model.selectionEnd=this._getMouseBufferCoords(k),!this._model.selectionEnd)return void this.refresh(!0);this._activeSelectionMode===2?this._model.selectionEnd[1]<this._model.selectionStart[1]?this._model.selectionEnd[0]=0:this._model.selectionEnd[0]=this._bufferService.cols:this._activeSelectionMode===1&&this._selectToWordAt(this._model.selectionEnd),this._dragScrollAmount=this._getMouseEventScrollAmount(k),this._activeSelectionMode!==3&&(this._dragScrollAmount>0?this._model.selectionEnd[0]=this._bufferService.cols:this._dragScrollAmount<0&&(this._model.selectionEnd[0]=0));const x=this._bufferService.buffer;if(this._model.selectionEnd[1]<x.lines.length){const M=x.lines.get(this._model.selectionEnd[1]);M&&M.hasWidth(this._model.selectionEnd[0])===0&&this._model.selectionEnd[0]<this._bufferService.cols&&this._model.selectionEnd[0]++}T&&T[0]===this._model.selectionEnd[0]&&T[1]===this._model.selectionEnd[1]||this.refresh(!0)}_dragScroll(){if(this._model.selectionEnd&&this._model.selectionStart&&this._dragScrollAmount){this._onRequestScrollLines.fire({amount:this._dragScrollAmount,suppressScrollEvent:!1});const k=this._bufferService.buffer;this._dragScrollAmount>0?(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=this._bufferService.cols),this._model.selectionEnd[1]=Math.min(k.ydisp+this._bufferService.rows,k.lines.length-1)):(this._activeSelectionMode!==3&&(this._model.selectionEnd[0]=0),this._model.selectionEnd[1]=k.ydisp),this.refresh()}}_handleMouseUp(k){const T=k.timeStamp-this._mouseDownTimeStamp;if(this._removeMouseDownListeners(),this.selectionText.length<=1&&T<500&&k.altKey&&this._optionsService.rawOptions.altClickMovesCursor){if(this._bufferService.buffer.ybase===this._bufferService.buffer.ydisp){const x=this._mouseService.getCoords(k,this._element,this._bufferService.cols,this._bufferService.rows,!1);if(x&&x[0]!==void 0&&x[1]!==void 0){const M=(0,h.moveToCellSequence)(x[0]-1,x[1]-1,this._bufferService,this._coreService.decPrivateModes.applicationCursorKeys);this._coreService.triggerDataEvent(M,!0)}}}else this._fireEventIfSelectionChanged()}_fireEventIfSelectionChanged(){const k=this._model.finalSelectionStart,T=this._model.finalSelectionEnd,x=!(!k||!T||k[0]===T[0]&&k[1]===T[1]);x?k&&T&&(this._oldSelectionStart&&this._oldSelectionEnd&&k[0]===this._oldSelectionStart[0]&&k[1]===this._oldSelectionStart[1]&&T[0]===this._oldSelectionEnd[0]&&T[1]===this._oldSelectionEnd[1]||this._fireOnSelectionChange(k,T,x)):this._oldHasSelection&&this._fireOnSelectionChange(k,T,x)}_fireOnSelectionChange(k,T,x){this._oldSelectionStart=k,this._oldSelectionEnd=T,this._oldHasSelection=x,this._onSelectionChange.fire()}_handleBufferActivate(k){this.clearSelection(),this._trimListener.dispose(),this._trimListener=k.activeBuffer.lines.onTrim(T=>this._handleTrim(T))}_convertViewportColToCharacterIndex(k,T){let x=T;for(let M=0;T>=M;M++){const A=k.loadCell(M,this._workCell).getChars().length;this._workCell.getWidth()===0?x--:A>1&&T!==M&&(x+=A-1)}return x}setSelection(k,T,x){this._model.clearSelection(),this._removeMouseDownListeners(),this._model.selectionStart=[k,T],this._model.selectionStartLength=x,this.refresh(),this._fireEventIfSelectionChanged()}rightClickSelect(k){this._isClickInSelection(k)||(this._selectWordAtCursor(k,!1)&&this.refresh(!0),this._fireEventIfSelectionChanged())}_getWordAt(k,T,x=!0,M=!0){if(k[0]>=this._bufferService.cols)return;const A=this._bufferService.buffer,P=A.lines.get(k[1]);if(!P)return;const G=A.translateBufferLineToString(k[1],!1);let V=this._convertViewportColToCharacterIndex(P,k[0]),I=V;const j=k[0]-V;let F=0,R=0,B=0,N=0;if(G.charAt(V)===\" \"){for(;V>0&&G.charAt(V-1)===\" \";)V--;for(;I<G.length&&G.charAt(I+1)===\" \";)I++}else{let re=k[0],le=k[0];P.getWidth(re)===0&&(F++,re--),P.getWidth(le)===2&&(R++,le++);const pe=P.getString(le).length;for(pe>1&&(N+=pe-1,I+=pe-1);re>0&&V>0&&!this._isCharWordSeparator(P.loadCell(re-1,this._workCell));){P.loadCell(re-1,this._workCell);const K=this._workCell.getChars().length;this._workCell.getWidth()===0?(F++,re--):K>1&&(B+=K-1,V-=K-1),V--,re--}for(;le<P.length&&I+1<G.length&&!this._isCharWordSeparator(P.loadCell(le+1,this._workCell));){P.loadCell(le+1,this._workCell);const K=this._workCell.getChars().length;this._workCell.getWidth()===2?(R++,le++):K>1&&(N+=K-1,I+=K-1),I++,le++}}I++;let U=V+j-F+B,J=Math.min(this._bufferService.cols,I-V+F+R-B-N);if(T||G.slice(V,I).trim()!==\"\"){if(x&&U===0&&P.getCodePoint(0)!==32){const re=A.lines.get(k[1]-1);if(re&&P.isWrapped&&re.getCodePoint(this._bufferService.cols-1)!==32){const le=this._getWordAt([this._bufferService.cols-1,k[1]-1],!1,!0,!1);if(le){const pe=this._bufferService.cols-le.start;U-=pe,J+=pe}}}if(M&&U+J===this._bufferService.cols&&P.getCodePoint(this._bufferService.cols-1)!==32){const re=A.lines.get(k[1]+1);if(re!=null&&re.isWrapped&&re.getCodePoint(0)!==32){const le=this._getWordAt([0,k[1]+1],!1,!1,!0);le&&(J+=le.length)}}return{start:U,length:J}}}_selectWordAt(k,T){const x=this._getWordAt(k,T);if(x){for(;x.start<0;)x.start+=this._bufferService.cols,k[1]--;this._model.selectionStart=[x.start,k[1]],this._model.selectionStartLength=x.length}}_selectToWordAt(k){const T=this._getWordAt(k,!0);if(T){let x=k[1];for(;T.start<0;)T.start+=this._bufferService.cols,x--;if(!this._model.areSelectionValuesReversed())for(;T.start+T.length>this._bufferService.cols;)T.length-=this._bufferService.cols,x++;this._model.selectionEnd=[this._model.areSelectionValuesReversed()?T.start:T.start+T.length,x]}}_isCharWordSeparator(k){return k.getWidth()!==0&&this._optionsService.rawOptions.wordSeparator.indexOf(k.getChars())>=0}_selectLineAt(k){const T=this._bufferService.buffer.getWrappedRangeForLine(k),x={start:{x:0,y:T.first},end:{x:this._bufferService.cols-1,y:T.last}};this._model.selectionStart=[0,T.first],this._model.selectionEnd=void 0,this._model.selectionStartLength=(0,y.getRangeLength)(x,this._bufferService.cols)}};i.SelectionService=E=u([f(3,w.IBufferService),f(4,w.ICoreService),f(5,b.IMouseService),f(6,w.IOptionsService),f(7,b.IRenderService),f(8,b.ICoreBrowserService)],E)},4725:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.ILinkProviderService=i.IThemeService=i.ICharacterJoinerService=i.ISelectionService=i.IRenderService=i.IMouseService=i.ICoreBrowserService=i.ICharSizeService=void 0;const u=l(8343);i.ICharSizeService=(0,u.createDecorator)(\"CharSizeService\"),i.ICoreBrowserService=(0,u.createDecorator)(\"CoreBrowserService\"),i.IMouseService=(0,u.createDecorator)(\"MouseService\"),i.IRenderService=(0,u.createDecorator)(\"RenderService\"),i.ISelectionService=(0,u.createDecorator)(\"SelectionService\"),i.ICharacterJoinerService=(0,u.createDecorator)(\"CharacterJoinerService\"),i.IThemeService=(0,u.createDecorator)(\"ThemeService\"),i.ILinkProviderService=(0,u.createDecorator)(\"LinkProviderService\")},6731:function(a,i,l){var u=this&&this.__decorate||function(E,k,T,x){var M,A=arguments.length,P=A<3?k:x===null?x=Object.getOwnPropertyDescriptor(k,T):x;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")P=Reflect.decorate(E,k,T,x);else for(var G=E.length-1;G>=0;G--)(M=E[G])&&(P=(A<3?M(P):A>3?M(k,T,P):M(k,T))||P);return A>3&&P&&Object.defineProperty(k,T,P),P},f=this&&this.__param||function(E,k){return function(T,x){k(T,x,E)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.ThemeService=i.DEFAULT_ANSI_COLORS=void 0;const d=l(7239),h=l(8055),v=l(8460),b=l(844),p=l(2585),g=h.css.toColor(\"#ffffff\"),m=h.css.toColor(\"#000000\"),y=h.css.toColor(\"#ffffff\"),_=h.css.toColor(\"#000000\"),w={css:\"rgba(255, 255, 255, 0.3)\",rgba:4294967117};i.DEFAULT_ANSI_COLORS=Object.freeze((()=>{const E=[h.css.toColor(\"#2e3436\"),h.css.toColor(\"#cc0000\"),h.css.toColor(\"#4e9a06\"),h.css.toColor(\"#c4a000\"),h.css.toColor(\"#3465a4\"),h.css.toColor(\"#75507b\"),h.css.toColor(\"#06989a\"),h.css.toColor(\"#d3d7cf\"),h.css.toColor(\"#555753\"),h.css.toColor(\"#ef2929\"),h.css.toColor(\"#8ae234\"),h.css.toColor(\"#fce94f\"),h.css.toColor(\"#729fcf\"),h.css.toColor(\"#ad7fa8\"),h.css.toColor(\"#34e2e2\"),h.css.toColor(\"#eeeeec\")],k=[0,95,135,175,215,255];for(let T=0;T<216;T++){const x=k[T/36%6|0],M=k[T/6%6|0],A=k[T%6];E.push({css:h.channels.toCss(x,M,A),rgba:h.channels.toRgba(x,M,A)})}for(let T=0;T<24;T++){const x=8+10*T;E.push({css:h.channels.toCss(x,x,x),rgba:h.channels.toRgba(x,x,x)})}return E})());let S=i.ThemeService=class extends b.Disposable{get colors(){return this._colors}constructor(E){super(),this._optionsService=E,this._contrastCache=new d.ColorContrastCache,this._halfContrastCache=new d.ColorContrastCache,this._onChangeColors=this.register(new v.EventEmitter),this.onChangeColors=this._onChangeColors.event,this._colors={foreground:g,background:m,cursor:y,cursorAccent:_,selectionForeground:void 0,selectionBackgroundTransparent:w,selectionBackgroundOpaque:h.color.blend(m,w),selectionInactiveBackgroundTransparent:w,selectionInactiveBackgroundOpaque:h.color.blend(m,w),ansi:i.DEFAULT_ANSI_COLORS.slice(),contrastCache:this._contrastCache,halfContrastCache:this._halfContrastCache},this._updateRestoreColors(),this._setTheme(this._optionsService.rawOptions.theme),this.register(this._optionsService.onSpecificOptionChange(\"minimumContrastRatio\",()=>this._contrastCache.clear())),this.register(this._optionsService.onSpecificOptionChange(\"theme\",()=>this._setTheme(this._optionsService.rawOptions.theme)))}_setTheme(E={}){const k=this._colors;if(k.foreground=C(E.foreground,g),k.background=C(E.background,m),k.cursor=C(E.cursor,y),k.cursorAccent=C(E.cursorAccent,_),k.selectionBackgroundTransparent=C(E.selectionBackground,w),k.selectionBackgroundOpaque=h.color.blend(k.background,k.selectionBackgroundTransparent),k.selectionInactiveBackgroundTransparent=C(E.selectionInactiveBackground,k.selectionBackgroundTransparent),k.selectionInactiveBackgroundOpaque=h.color.blend(k.background,k.selectionInactiveBackgroundTransparent),k.selectionForeground=E.selectionForeground?C(E.selectionForeground,h.NULL_COLOR):void 0,k.selectionForeground===h.NULL_COLOR&&(k.selectionForeground=void 0),h.color.isOpaque(k.selectionBackgroundTransparent)&&(k.selectionBackgroundTransparent=h.color.opacity(k.selectionBackgroundTransparent,.3)),h.color.isOpaque(k.selectionInactiveBackgroundTransparent)&&(k.selectionInactiveBackgroundTransparent=h.color.opacity(k.selectionInactiveBackgroundTransparent,.3)),k.ansi=i.DEFAULT_ANSI_COLORS.slice(),k.ansi[0]=C(E.black,i.DEFAULT_ANSI_COLORS[0]),k.ansi[1]=C(E.red,i.DEFAULT_ANSI_COLORS[1]),k.ansi[2]=C(E.green,i.DEFAULT_ANSI_COLORS[2]),k.ansi[3]=C(E.yellow,i.DEFAULT_ANSI_COLORS[3]),k.ansi[4]=C(E.blue,i.DEFAULT_ANSI_COLORS[4]),k.ansi[5]=C(E.magenta,i.DEFAULT_ANSI_COLORS[5]),k.ansi[6]=C(E.cyan,i.DEFAULT_ANSI_COLORS[6]),k.ansi[7]=C(E.white,i.DEFAULT_ANSI_COLORS[7]),k.ansi[8]=C(E.brightBlack,i.DEFAULT_ANSI_COLORS[8]),k.ansi[9]=C(E.brightRed,i.DEFAULT_ANSI_COLORS[9]),k.ansi[10]=C(E.brightGreen,i.DEFAULT_ANSI_COLORS[10]),k.ansi[11]=C(E.brightYellow,i.DEFAULT_ANSI_COLORS[11]),k.ansi[12]=C(E.brightBlue,i.DEFAULT_ANSI_COLORS[12]),k.ansi[13]=C(E.brightMagenta,i.DEFAULT_ANSI_COLORS[13]),k.ansi[14]=C(E.brightCyan,i.DEFAULT_ANSI_COLORS[14]),k.ansi[15]=C(E.brightWhite,i.DEFAULT_ANSI_COLORS[15]),E.extendedAnsi){const T=Math.min(k.ansi.length-16,E.extendedAnsi.length);for(let x=0;x<T;x++)k.ansi[x+16]=C(E.extendedAnsi[x],i.DEFAULT_ANSI_COLORS[x+16])}this._contrastCache.clear(),this._halfContrastCache.clear(),this._updateRestoreColors(),this._onChangeColors.fire(this.colors)}restoreColor(E){this._restoreColor(E),this._onChangeColors.fire(this.colors)}_restoreColor(E){if(E!==void 0)switch(E){case 256:this._colors.foreground=this._restoreColors.foreground;break;case 257:this._colors.background=this._restoreColors.background;break;case 258:this._colors.cursor=this._restoreColors.cursor;break;default:this._colors.ansi[E]=this._restoreColors.ansi[E]}else for(let k=0;k<this._restoreColors.ansi.length;++k)this._colors.ansi[k]=this._restoreColors.ansi[k]}modifyColors(E){E(this._colors),this._onChangeColors.fire(this.colors)}_updateRestoreColors(){this._restoreColors={foreground:this._colors.foreground,background:this._colors.background,cursor:this._colors.cursor,ansi:this._colors.ansi.slice()}}};function C(E,k){if(E!==void 0)try{return h.css.toColor(E)}catch{}return k}i.ThemeService=S=u([f(0,p.IOptionsService)],S)},6349:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.CircularList=void 0;const u=l(8460),f=l(844);class d extends f.Disposable{constructor(v){super(),this._maxLength=v,this.onDeleteEmitter=this.register(new u.EventEmitter),this.onDelete=this.onDeleteEmitter.event,this.onInsertEmitter=this.register(new u.EventEmitter),this.onInsert=this.onInsertEmitter.event,this.onTrimEmitter=this.register(new u.EventEmitter),this.onTrim=this.onTrimEmitter.event,this._array=new Array(this._maxLength),this._startIndex=0,this._length=0}get maxLength(){return this._maxLength}set maxLength(v){if(this._maxLength===v)return;const b=new Array(v);for(let p=0;p<Math.min(v,this.length);p++)b[p]=this._array[this._getCyclicIndex(p)];this._array=b,this._maxLength=v,this._startIndex=0}get length(){return this._length}set length(v){if(v>this._length)for(let b=this._length;b<v;b++)this._array[b]=void 0;this._length=v}get(v){return this._array[this._getCyclicIndex(v)]}set(v,b){this._array[this._getCyclicIndex(v)]=b}push(v){this._array[this._getCyclicIndex(this._length)]=v,this._length===this._maxLength?(this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1)):this._length++}recycle(){if(this._length!==this._maxLength)throw new Error(\"Can only recycle when the buffer is full\");return this._startIndex=++this._startIndex%this._maxLength,this.onTrimEmitter.fire(1),this._array[this._getCyclicIndex(this._length-1)]}get isFull(){return this._length===this._maxLength}pop(){return this._array[this._getCyclicIndex(this._length---1)]}splice(v,b,...p){if(b){for(let g=v;g<this._length-b;g++)this._array[this._getCyclicIndex(g)]=this._array[this._getCyclicIndex(g+b)];this._length-=b,this.onDeleteEmitter.fire({index:v,amount:b})}for(let g=this._length-1;g>=v;g--)this._array[this._getCyclicIndex(g+p.length)]=this._array[this._getCyclicIndex(g)];for(let g=0;g<p.length;g++)this._array[this._getCyclicIndex(v+g)]=p[g];if(p.length&&this.onInsertEmitter.fire({index:v,amount:p.length}),this._length+p.length>this._maxLength){const g=this._length+p.length-this._maxLength;this._startIndex+=g,this._length=this._maxLength,this.onTrimEmitter.fire(g)}else this._length+=p.length}trimStart(v){v>this._length&&(v=this._length),this._startIndex+=v,this._length-=v,this.onTrimEmitter.fire(v)}shiftElements(v,b,p){if(!(b<=0)){if(v<0||v>=this._length)throw new Error(\"start argument out of range\");if(v+p<0)throw new Error(\"Cannot shift elements in list beyond index 0\");if(p>0){for(let m=b-1;m>=0;m--)this.set(v+m+p,this.get(v+m));const g=v+b+p-this._length;if(g>0)for(this._length+=g;this._length>this._maxLength;)this._length--,this._startIndex++,this.onTrimEmitter.fire(1)}else for(let g=0;g<b;g++)this.set(v+g+p,this.get(v+g))}}_getCyclicIndex(v){return(this._startIndex+v)%this._maxLength}}i.CircularList=d},1439:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.clone=void 0,i.clone=function l(u,f=5){if(typeof u!=\"object\")return u;const d=Array.isArray(u)?[]:{};for(const h in u)d[h]=f<=1?u[h]:u[h]&&l(u[h],f-1);return d}},8055:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.contrastRatio=i.toPaddedHex=i.rgba=i.rgb=i.css=i.color=i.channels=i.NULL_COLOR=void 0;let l=0,u=0,f=0,d=0;var h,v,b,p,g;function m(_){const w=_.toString(16);return w.length<2?\"0\"+w:w}function y(_,w){return _<w?(w+.05)/(_+.05):(_+.05)/(w+.05)}i.NULL_COLOR={css:\"#00000000\",rgba:0},function(_){_.toCss=function(w,S,C,E){return E!==void 0?`#${m(w)}${m(S)}${m(C)}${m(E)}`:`#${m(w)}${m(S)}${m(C)}`},_.toRgba=function(w,S,C,E=255){return(w<<24|S<<16|C<<8|E)>>>0},_.toColor=function(w,S,C,E){return{css:_.toCss(w,S,C,E),rgba:_.toRgba(w,S,C,E)}}}(h||(i.channels=h={})),function(_){function w(S,C){return d=Math.round(255*C),[l,u,f]=g.toChannels(S.rgba),{css:h.toCss(l,u,f,d),rgba:h.toRgba(l,u,f,d)}}_.blend=function(S,C){if(d=(255&C.rgba)/255,d===1)return{css:C.css,rgba:C.rgba};const E=C.rgba>>24&255,k=C.rgba>>16&255,T=C.rgba>>8&255,x=S.rgba>>24&255,M=S.rgba>>16&255,A=S.rgba>>8&255;return l=x+Math.round((E-x)*d),u=M+Math.round((k-M)*d),f=A+Math.round((T-A)*d),{css:h.toCss(l,u,f),rgba:h.toRgba(l,u,f)}},_.isOpaque=function(S){return(255&S.rgba)==255},_.ensureContrastRatio=function(S,C,E){const k=g.ensureContrastRatio(S.rgba,C.rgba,E);if(k)return h.toColor(k>>24&255,k>>16&255,k>>8&255)},_.opaque=function(S){const C=(255|S.rgba)>>>0;return[l,u,f]=g.toChannels(C),{css:h.toCss(l,u,f),rgba:C}},_.opacity=w,_.multiplyOpacity=function(S,C){return d=255&S.rgba,w(S,d*C/255)},_.toColorRGB=function(S){return[S.rgba>>24&255,S.rgba>>16&255,S.rgba>>8&255]}}(v||(i.color=v={})),function(_){let w,S;try{const C=document.createElement(\"canvas\");C.width=1,C.height=1;const E=C.getContext(\"2d\",{willReadFrequently:!0});E&&(w=E,w.globalCompositeOperation=\"copy\",S=w.createLinearGradient(0,0,1,1))}catch{}_.toColor=function(C){if(C.match(/#[\\da-f]{3,8}/i))switch(C.length){case 4:return l=parseInt(C.slice(1,2).repeat(2),16),u=parseInt(C.slice(2,3).repeat(2),16),f=parseInt(C.slice(3,4).repeat(2),16),h.toColor(l,u,f);case 5:return l=parseInt(C.slice(1,2).repeat(2),16),u=parseInt(C.slice(2,3).repeat(2),16),f=parseInt(C.slice(3,4).repeat(2),16),d=parseInt(C.slice(4,5).repeat(2),16),h.toColor(l,u,f,d);case 7:return{css:C,rgba:(parseInt(C.slice(1),16)<<8|255)>>>0};case 9:return{css:C,rgba:parseInt(C.slice(1),16)>>>0}}const E=C.match(/rgba?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*(,\\s*(0|1|\\d?\\.(\\d+))\\s*)?\\)/);if(E)return l=parseInt(E[1]),u=parseInt(E[2]),f=parseInt(E[3]),d=Math.round(255*(E[5]===void 0?1:parseFloat(E[5]))),h.toColor(l,u,f,d);if(!w||!S)throw new Error(\"css.toColor: Unsupported css format\");if(w.fillStyle=S,w.fillStyle=C,typeof w.fillStyle!=\"string\")throw new Error(\"css.toColor: Unsupported css format\");if(w.fillRect(0,0,1,1),[l,u,f,d]=w.getImageData(0,0,1,1).data,d!==255)throw new Error(\"css.toColor: Unsupported css format\");return{rgba:h.toRgba(l,u,f,d),css:C}}}(b||(i.css=b={})),function(_){function w(S,C,E){const k=S/255,T=C/255,x=E/255;return .2126*(k<=.03928?k/12.92:Math.pow((k+.055)/1.055,2.4))+.7152*(T<=.03928?T/12.92:Math.pow((T+.055)/1.055,2.4))+.0722*(x<=.03928?x/12.92:Math.pow((x+.055)/1.055,2.4))}_.relativeLuminance=function(S){return w(S>>16&255,S>>8&255,255&S)},_.relativeLuminance2=w}(p||(i.rgb=p={})),function(_){function w(C,E,k){const T=C>>24&255,x=C>>16&255,M=C>>8&255;let A=E>>24&255,P=E>>16&255,G=E>>8&255,V=y(p.relativeLuminance2(A,P,G),p.relativeLuminance2(T,x,M));for(;V<k&&(A>0||P>0||G>0);)A-=Math.max(0,Math.ceil(.1*A)),P-=Math.max(0,Math.ceil(.1*P)),G-=Math.max(0,Math.ceil(.1*G)),V=y(p.relativeLuminance2(A,P,G),p.relativeLuminance2(T,x,M));return(A<<24|P<<16|G<<8|255)>>>0}function S(C,E,k){const T=C>>24&255,x=C>>16&255,M=C>>8&255;let A=E>>24&255,P=E>>16&255,G=E>>8&255,V=y(p.relativeLuminance2(A,P,G),p.relativeLuminance2(T,x,M));for(;V<k&&(A<255||P<255||G<255);)A=Math.min(255,A+Math.ceil(.1*(255-A))),P=Math.min(255,P+Math.ceil(.1*(255-P))),G=Math.min(255,G+Math.ceil(.1*(255-G))),V=y(p.relativeLuminance2(A,P,G),p.relativeLuminance2(T,x,M));return(A<<24|P<<16|G<<8|255)>>>0}_.blend=function(C,E){if(d=(255&E)/255,d===1)return E;const k=E>>24&255,T=E>>16&255,x=E>>8&255,M=C>>24&255,A=C>>16&255,P=C>>8&255;return l=M+Math.round((k-M)*d),u=A+Math.round((T-A)*d),f=P+Math.round((x-P)*d),h.toRgba(l,u,f)},_.ensureContrastRatio=function(C,E,k){const T=p.relativeLuminance(C>>8),x=p.relativeLuminance(E>>8);if(y(T,x)<k){if(x<T){const P=w(C,E,k),G=y(T,p.relativeLuminance(P>>8));if(G<k){const V=S(C,E,k);return G>y(T,p.relativeLuminance(V>>8))?P:V}return P}const M=S(C,E,k),A=y(T,p.relativeLuminance(M>>8));if(A<k){const P=w(C,E,k);return A>y(T,p.relativeLuminance(P>>8))?M:P}return M}},_.reduceLuminance=w,_.increaseLuminance=S,_.toChannels=function(C){return[C>>24&255,C>>16&255,C>>8&255,255&C]}}(g||(i.rgba=g={})),i.toPaddedHex=m,i.contrastRatio=y},8969:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.CoreTerminal=void 0;const u=l(844),f=l(2585),d=l(4348),h=l(7866),v=l(744),b=l(7302),p=l(6975),g=l(8460),m=l(1753),y=l(1480),_=l(7994),w=l(9282),S=l(5435),C=l(5981),E=l(2660);let k=!1;class T extends u.Disposable{get onScroll(){return this._onScrollApi||(this._onScrollApi=this.register(new g.EventEmitter),this._onScroll.event(M=>{var A;(A=this._onScrollApi)==null||A.fire(M.position)})),this._onScrollApi.event}get cols(){return this._bufferService.cols}get rows(){return this._bufferService.rows}get buffers(){return this._bufferService.buffers}get options(){return this.optionsService.options}set options(M){for(const A in M)this.optionsService.options[A]=M[A]}constructor(M){super(),this._windowsWrappingHeuristics=this.register(new u.MutableDisposable),this._onBinary=this.register(new g.EventEmitter),this.onBinary=this._onBinary.event,this._onData=this.register(new g.EventEmitter),this.onData=this._onData.event,this._onLineFeed=this.register(new g.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onResize=this.register(new g.EventEmitter),this.onResize=this._onResize.event,this._onWriteParsed=this.register(new g.EventEmitter),this.onWriteParsed=this._onWriteParsed.event,this._onScroll=this.register(new g.EventEmitter),this._instantiationService=new d.InstantiationService,this.optionsService=this.register(new b.OptionsService(M)),this._instantiationService.setService(f.IOptionsService,this.optionsService),this._bufferService=this.register(this._instantiationService.createInstance(v.BufferService)),this._instantiationService.setService(f.IBufferService,this._bufferService),this._logService=this.register(this._instantiationService.createInstance(h.LogService)),this._instantiationService.setService(f.ILogService,this._logService),this.coreService=this.register(this._instantiationService.createInstance(p.CoreService)),this._instantiationService.setService(f.ICoreService,this.coreService),this.coreMouseService=this.register(this._instantiationService.createInstance(m.CoreMouseService)),this._instantiationService.setService(f.ICoreMouseService,this.coreMouseService),this.unicodeService=this.register(this._instantiationService.createInstance(y.UnicodeService)),this._instantiationService.setService(f.IUnicodeService,this.unicodeService),this._charsetService=this._instantiationService.createInstance(_.CharsetService),this._instantiationService.setService(f.ICharsetService,this._charsetService),this._oscLinkService=this._instantiationService.createInstance(E.OscLinkService),this._instantiationService.setService(f.IOscLinkService,this._oscLinkService),this._inputHandler=this.register(new S.InputHandler(this._bufferService,this._charsetService,this.coreService,this._logService,this.optionsService,this._oscLinkService,this.coreMouseService,this.unicodeService)),this.register((0,g.forwardEvent)(this._inputHandler.onLineFeed,this._onLineFeed)),this.register(this._inputHandler),this.register((0,g.forwardEvent)(this._bufferService.onResize,this._onResize)),this.register((0,g.forwardEvent)(this.coreService.onData,this._onData)),this.register((0,g.forwardEvent)(this.coreService.onBinary,this._onBinary)),this.register(this.coreService.onRequestScrollToBottom(()=>this.scrollToBottom())),this.register(this.coreService.onUserInput(()=>this._writeBuffer.handleUserInput())),this.register(this.optionsService.onMultipleOptionChange([\"windowsMode\",\"windowsPty\"],()=>this._handleWindowsPtyOptionChange())),this.register(this._bufferService.onScroll(A=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this.register(this._inputHandler.onScroll(A=>{this._onScroll.fire({position:this._bufferService.buffer.ydisp,source:0}),this._inputHandler.markRangeDirty(this._bufferService.buffer.scrollTop,this._bufferService.buffer.scrollBottom)})),this._writeBuffer=this.register(new C.WriteBuffer((A,P)=>this._inputHandler.parse(A,P))),this.register((0,g.forwardEvent)(this._writeBuffer.onWriteParsed,this._onWriteParsed))}write(M,A){this._writeBuffer.write(M,A)}writeSync(M,A){this._logService.logLevel<=f.LogLevelEnum.WARN&&!k&&(this._logService.warn(\"writeSync is unreliable and will be removed soon.\"),k=!0),this._writeBuffer.writeSync(M,A)}input(M,A=!0){this.coreService.triggerDataEvent(M,A)}resize(M,A){isNaN(M)||isNaN(A)||(M=Math.max(M,v.MINIMUM_COLS),A=Math.max(A,v.MINIMUM_ROWS),this._bufferService.resize(M,A))}scroll(M,A=!1){this._bufferService.scroll(M,A)}scrollLines(M,A,P){this._bufferService.scrollLines(M,A,P)}scrollPages(M){this.scrollLines(M*(this.rows-1))}scrollToTop(){this.scrollLines(-this._bufferService.buffer.ydisp)}scrollToBottom(){this.scrollLines(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp)}scrollToLine(M){const A=M-this._bufferService.buffer.ydisp;A!==0&&this.scrollLines(A)}registerEscHandler(M,A){return this._inputHandler.registerEscHandler(M,A)}registerDcsHandler(M,A){return this._inputHandler.registerDcsHandler(M,A)}registerCsiHandler(M,A){return this._inputHandler.registerCsiHandler(M,A)}registerOscHandler(M,A){return this._inputHandler.registerOscHandler(M,A)}_setup(){this._handleWindowsPtyOptionChange()}reset(){this._inputHandler.reset(),this._bufferService.reset(),this._charsetService.reset(),this.coreService.reset(),this.coreMouseService.reset()}_handleWindowsPtyOptionChange(){let M=!1;const A=this.optionsService.rawOptions.windowsPty;A&&A.buildNumber!==void 0&&A.buildNumber!==void 0?M=A.backend===\"conpty\"&&A.buildNumber<21376:this.optionsService.rawOptions.windowsMode&&(M=!0),M?this._enableWindowsWrappingHeuristics():this._windowsWrappingHeuristics.clear()}_enableWindowsWrappingHeuristics(){if(!this._windowsWrappingHeuristics.value){const M=[];M.push(this.onLineFeed(w.updateWindowsModeWrappedState.bind(null,this._bufferService))),M.push(this.registerCsiHandler({final:\"H\"},()=>((0,w.updateWindowsModeWrappedState)(this._bufferService),!1))),this._windowsWrappingHeuristics.value=(0,u.toDisposable)(()=>{for(const A of M)A.dispose()})}}}i.CoreTerminal=T},8460:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.runAndSubscribe=i.forwardEvent=i.EventEmitter=void 0,i.EventEmitter=class{constructor(){this._listeners=[],this._disposed=!1}get event(){return this._event||(this._event=l=>(this._listeners.push(l),{dispose:()=>{if(!this._disposed){for(let u=0;u<this._listeners.length;u++)if(this._listeners[u]===l)return void this._listeners.splice(u,1)}}})),this._event}fire(l,u){const f=[];for(let d=0;d<this._listeners.length;d++)f.push(this._listeners[d]);for(let d=0;d<f.length;d++)f[d].call(void 0,l,u)}dispose(){this.clearListeners(),this._disposed=!0}clearListeners(){this._listeners&&(this._listeners.length=0)}},i.forwardEvent=function(l,u){return l(f=>u.fire(f))},i.runAndSubscribe=function(l,u){return u(void 0),l(f=>u(f))}},5435:function(a,i,l){var u=this&&this.__decorate||function(F,R,B,N){var U,J=arguments.length,re=J<3?R:N===null?N=Object.getOwnPropertyDescriptor(R,B):N;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")re=Reflect.decorate(F,R,B,N);else for(var le=F.length-1;le>=0;le--)(U=F[le])&&(re=(J<3?U(re):J>3?U(R,B,re):U(R,B))||re);return J>3&&re&&Object.defineProperty(R,B,re),re},f=this&&this.__param||function(F,R){return function(B,N){R(B,N,F)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.InputHandler=i.WindowsOptionsReportType=void 0;const d=l(2584),h=l(7116),v=l(2015),b=l(844),p=l(482),g=l(8437),m=l(8460),y=l(643),_=l(511),w=l(3734),S=l(2585),C=l(1480),E=l(6242),k=l(6351),T=l(5941),x={\"(\":0,\")\":1,\"*\":2,\"+\":3,\"-\":1,\".\":2},M=131072;function A(F,R){if(F>24)return R.setWinLines||!1;switch(F){case 1:return!!R.restoreWin;case 2:return!!R.minimizeWin;case 3:return!!R.setWinPosition;case 4:return!!R.setWinSizePixels;case 5:return!!R.raiseWin;case 6:return!!R.lowerWin;case 7:return!!R.refreshWin;case 8:return!!R.setWinSizeChars;case 9:return!!R.maximizeWin;case 10:return!!R.fullscreenWin;case 11:return!!R.getWinState;case 13:return!!R.getWinPosition;case 14:return!!R.getWinSizePixels;case 15:return!!R.getScreenSizePixels;case 16:return!!R.getCellSizePixels;case 18:return!!R.getWinSizeChars;case 19:return!!R.getScreenSizeChars;case 20:return!!R.getIconTitle;case 21:return!!R.getWinTitle;case 22:return!!R.pushTitle;case 23:return!!R.popTitle;case 24:return!!R.setWinLines}return!1}var P;(function(F){F[F.GET_WIN_SIZE_PIXELS=0]=\"GET_WIN_SIZE_PIXELS\",F[F.GET_CELL_SIZE_PIXELS=1]=\"GET_CELL_SIZE_PIXELS\"})(P||(i.WindowsOptionsReportType=P={}));let G=0;class V extends b.Disposable{getAttrData(){return this._curAttrData}constructor(R,B,N,U,J,re,le,pe,K=new v.EscapeSequenceParser){super(),this._bufferService=R,this._charsetService=B,this._coreService=N,this._logService=U,this._optionsService=J,this._oscLinkService=re,this._coreMouseService=le,this._unicodeService=pe,this._parser=K,this._parseBuffer=new Uint32Array(4096),this._stringDecoder=new p.StringToUtf32,this._utf8Decoder=new p.Utf8ToUtf32,this._workCell=new _.CellData,this._windowTitle=\"\",this._iconName=\"\",this._windowTitleStack=[],this._iconNameStack=[],this._curAttrData=g.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=g.DEFAULT_ATTR_DATA.clone(),this._onRequestBell=this.register(new m.EventEmitter),this.onRequestBell=this._onRequestBell.event,this._onRequestRefreshRows=this.register(new m.EventEmitter),this.onRequestRefreshRows=this._onRequestRefreshRows.event,this._onRequestReset=this.register(new m.EventEmitter),this.onRequestReset=this._onRequestReset.event,this._onRequestSendFocus=this.register(new m.EventEmitter),this.onRequestSendFocus=this._onRequestSendFocus.event,this._onRequestSyncScrollBar=this.register(new m.EventEmitter),this.onRequestSyncScrollBar=this._onRequestSyncScrollBar.event,this._onRequestWindowsOptionsReport=this.register(new m.EventEmitter),this.onRequestWindowsOptionsReport=this._onRequestWindowsOptionsReport.event,this._onA11yChar=this.register(new m.EventEmitter),this.onA11yChar=this._onA11yChar.event,this._onA11yTab=this.register(new m.EventEmitter),this.onA11yTab=this._onA11yTab.event,this._onCursorMove=this.register(new m.EventEmitter),this.onCursorMove=this._onCursorMove.event,this._onLineFeed=this.register(new m.EventEmitter),this.onLineFeed=this._onLineFeed.event,this._onScroll=this.register(new m.EventEmitter),this.onScroll=this._onScroll.event,this._onTitleChange=this.register(new m.EventEmitter),this.onTitleChange=this._onTitleChange.event,this._onColor=this.register(new m.EventEmitter),this.onColor=this._onColor.event,this._parseStack={paused:!1,cursorStartX:0,cursorStartY:0,decodedLength:0,position:0},this._specialColors=[256,257,258],this.register(this._parser),this._dirtyRowTracker=new I(this._bufferService),this._activeBuffer=this._bufferService.buffer,this.register(this._bufferService.buffers.onBufferActivate(z=>this._activeBuffer=z.activeBuffer)),this._parser.setCsiHandlerFallback((z,te)=>{this._logService.debug(\"Unknown CSI code: \",{identifier:this._parser.identToString(z),params:te.toArray()})}),this._parser.setEscHandlerFallback(z=>{this._logService.debug(\"Unknown ESC code: \",{identifier:this._parser.identToString(z)})}),this._parser.setExecuteHandlerFallback(z=>{this._logService.debug(\"Unknown EXECUTE code: \",{code:z})}),this._parser.setOscHandlerFallback((z,te,oe)=>{this._logService.debug(\"Unknown OSC code: \",{identifier:z,action:te,data:oe})}),this._parser.setDcsHandlerFallback((z,te,oe)=>{te===\"HOOK\"&&(oe=oe.toArray()),this._logService.debug(\"Unknown DCS code: \",{identifier:this._parser.identToString(z),action:te,payload:oe})}),this._parser.setPrintHandler((z,te,oe)=>this.print(z,te,oe)),this._parser.registerCsiHandler({final:\"@\"},z=>this.insertChars(z)),this._parser.registerCsiHandler({intermediates:\" \",final:\"@\"},z=>this.scrollLeft(z)),this._parser.registerCsiHandler({final:\"A\"},z=>this.cursorUp(z)),this._parser.registerCsiHandler({intermediates:\" \",final:\"A\"},z=>this.scrollRight(z)),this._parser.registerCsiHandler({final:\"B\"},z=>this.cursorDown(z)),this._parser.registerCsiHandler({final:\"C\"},z=>this.cursorForward(z)),this._parser.registerCsiHandler({final:\"D\"},z=>this.cursorBackward(z)),this._parser.registerCsiHandler({final:\"E\"},z=>this.cursorNextLine(z)),this._parser.registerCsiHandler({final:\"F\"},z=>this.cursorPrecedingLine(z)),this._parser.registerCsiHandler({final:\"G\"},z=>this.cursorCharAbsolute(z)),this._parser.registerCsiHandler({final:\"H\"},z=>this.cursorPosition(z)),this._parser.registerCsiHandler({final:\"I\"},z=>this.cursorForwardTab(z)),this._parser.registerCsiHandler({final:\"J\"},z=>this.eraseInDisplay(z,!1)),this._parser.registerCsiHandler({prefix:\"?\",final:\"J\"},z=>this.eraseInDisplay(z,!0)),this._parser.registerCsiHandler({final:\"K\"},z=>this.eraseInLine(z,!1)),this._parser.registerCsiHandler({prefix:\"?\",final:\"K\"},z=>this.eraseInLine(z,!0)),this._parser.registerCsiHandler({final:\"L\"},z=>this.insertLines(z)),this._parser.registerCsiHandler({final:\"M\"},z=>this.deleteLines(z)),this._parser.registerCsiHandler({final:\"P\"},z=>this.deleteChars(z)),this._parser.registerCsiHandler({final:\"S\"},z=>this.scrollUp(z)),this._parser.registerCsiHandler({final:\"T\"},z=>this.scrollDown(z)),this._parser.registerCsiHandler({final:\"X\"},z=>this.eraseChars(z)),this._parser.registerCsiHandler({final:\"Z\"},z=>this.cursorBackwardTab(z)),this._parser.registerCsiHandler({final:\"`\"},z=>this.charPosAbsolute(z)),this._parser.registerCsiHandler({final:\"a\"},z=>this.hPositionRelative(z)),this._parser.registerCsiHandler({final:\"b\"},z=>this.repeatPrecedingCharacter(z)),this._parser.registerCsiHandler({final:\"c\"},z=>this.sendDeviceAttributesPrimary(z)),this._parser.registerCsiHandler({prefix:\">\",final:\"c\"},z=>this.sendDeviceAttributesSecondary(z)),this._parser.registerCsiHandler({final:\"d\"},z=>this.linePosAbsolute(z)),this._parser.registerCsiHandler({final:\"e\"},z=>this.vPositionRelative(z)),this._parser.registerCsiHandler({final:\"f\"},z=>this.hVPosition(z)),this._parser.registerCsiHandler({final:\"g\"},z=>this.tabClear(z)),this._parser.registerCsiHandler({final:\"h\"},z=>this.setMode(z)),this._parser.registerCsiHandler({prefix:\"?\",final:\"h\"},z=>this.setModePrivate(z)),this._parser.registerCsiHandler({final:\"l\"},z=>this.resetMode(z)),this._parser.registerCsiHandler({prefix:\"?\",final:\"l\"},z=>this.resetModePrivate(z)),this._parser.registerCsiHandler({final:\"m\"},z=>this.charAttributes(z)),this._parser.registerCsiHandler({final:\"n\"},z=>this.deviceStatus(z)),this._parser.registerCsiHandler({prefix:\"?\",final:\"n\"},z=>this.deviceStatusPrivate(z)),this._parser.registerCsiHandler({intermediates:\"!\",final:\"p\"},z=>this.softReset(z)),this._parser.registerCsiHandler({intermediates:\" \",final:\"q\"},z=>this.setCursorStyle(z)),this._parser.registerCsiHandler({final:\"r\"},z=>this.setScrollRegion(z)),this._parser.registerCsiHandler({final:\"s\"},z=>this.saveCursor(z)),this._parser.registerCsiHandler({final:\"t\"},z=>this.windowOptions(z)),this._parser.registerCsiHandler({final:\"u\"},z=>this.restoreCursor(z)),this._parser.registerCsiHandler({intermediates:\"'\",final:\"}\"},z=>this.insertColumns(z)),this._parser.registerCsiHandler({intermediates:\"'\",final:\"~\"},z=>this.deleteColumns(z)),this._parser.registerCsiHandler({intermediates:'\"',final:\"q\"},z=>this.selectProtected(z)),this._parser.registerCsiHandler({intermediates:\"$\",final:\"p\"},z=>this.requestMode(z,!0)),this._parser.registerCsiHandler({prefix:\"?\",intermediates:\"$\",final:\"p\"},z=>this.requestMode(z,!1)),this._parser.setExecuteHandler(d.C0.BEL,()=>this.bell()),this._parser.setExecuteHandler(d.C0.LF,()=>this.lineFeed()),this._parser.setExecuteHandler(d.C0.VT,()=>this.lineFeed()),this._parser.setExecuteHandler(d.C0.FF,()=>this.lineFeed()),this._parser.setExecuteHandler(d.C0.CR,()=>this.carriageReturn()),this._parser.setExecuteHandler(d.C0.BS,()=>this.backspace()),this._parser.setExecuteHandler(d.C0.HT,()=>this.tab()),this._parser.setExecuteHandler(d.C0.SO,()=>this.shiftOut()),this._parser.setExecuteHandler(d.C0.SI,()=>this.shiftIn()),this._parser.setExecuteHandler(d.C1.IND,()=>this.index()),this._parser.setExecuteHandler(d.C1.NEL,()=>this.nextLine()),this._parser.setExecuteHandler(d.C1.HTS,()=>this.tabSet()),this._parser.registerOscHandler(0,new E.OscHandler(z=>(this.setTitle(z),this.setIconName(z),!0))),this._parser.registerOscHandler(1,new E.OscHandler(z=>this.setIconName(z))),this._parser.registerOscHandler(2,new E.OscHandler(z=>this.setTitle(z))),this._parser.registerOscHandler(4,new E.OscHandler(z=>this.setOrReportIndexedColor(z))),this._parser.registerOscHandler(8,new E.OscHandler(z=>this.setHyperlink(z))),this._parser.registerOscHandler(10,new E.OscHandler(z=>this.setOrReportFgColor(z))),this._parser.registerOscHandler(11,new E.OscHandler(z=>this.setOrReportBgColor(z))),this._parser.registerOscHandler(12,new E.OscHandler(z=>this.setOrReportCursorColor(z))),this._parser.registerOscHandler(104,new E.OscHandler(z=>this.restoreIndexedColor(z))),this._parser.registerOscHandler(110,new E.OscHandler(z=>this.restoreFgColor(z))),this._parser.registerOscHandler(111,new E.OscHandler(z=>this.restoreBgColor(z))),this._parser.registerOscHandler(112,new E.OscHandler(z=>this.restoreCursorColor(z))),this._parser.registerEscHandler({final:\"7\"},()=>this.saveCursor()),this._parser.registerEscHandler({final:\"8\"},()=>this.restoreCursor()),this._parser.registerEscHandler({final:\"D\"},()=>this.index()),this._parser.registerEscHandler({final:\"E\"},()=>this.nextLine()),this._parser.registerEscHandler({final:\"H\"},()=>this.tabSet()),this._parser.registerEscHandler({final:\"M\"},()=>this.reverseIndex()),this._parser.registerEscHandler({final:\"=\"},()=>this.keypadApplicationMode()),this._parser.registerEscHandler({final:\">\"},()=>this.keypadNumericMode()),this._parser.registerEscHandler({final:\"c\"},()=>this.fullReset()),this._parser.registerEscHandler({final:\"n\"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:\"o\"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:\"|\"},()=>this.setgLevel(3)),this._parser.registerEscHandler({final:\"}\"},()=>this.setgLevel(2)),this._parser.registerEscHandler({final:\"~\"},()=>this.setgLevel(1)),this._parser.registerEscHandler({intermediates:\"%\",final:\"@\"},()=>this.selectDefaultCharset()),this._parser.registerEscHandler({intermediates:\"%\",final:\"G\"},()=>this.selectDefaultCharset());for(const z in h.CHARSETS)this._parser.registerEscHandler({intermediates:\"(\",final:z},()=>this.selectCharset(\"(\"+z)),this._parser.registerEscHandler({intermediates:\")\",final:z},()=>this.selectCharset(\")\"+z)),this._parser.registerEscHandler({intermediates:\"*\",final:z},()=>this.selectCharset(\"*\"+z)),this._parser.registerEscHandler({intermediates:\"+\",final:z},()=>this.selectCharset(\"+\"+z)),this._parser.registerEscHandler({intermediates:\"-\",final:z},()=>this.selectCharset(\"-\"+z)),this._parser.registerEscHandler({intermediates:\".\",final:z},()=>this.selectCharset(\".\"+z)),this._parser.registerEscHandler({intermediates:\"/\",final:z},()=>this.selectCharset(\"/\"+z));this._parser.registerEscHandler({intermediates:\"#\",final:\"8\"},()=>this.screenAlignmentPattern()),this._parser.setErrorHandler(z=>(this._logService.error(\"Parsing error: \",z),z)),this._parser.registerDcsHandler({intermediates:\"$\",final:\"q\"},new k.DcsHandler((z,te)=>this.requestStatusString(z,te)))}_preserveStack(R,B,N,U){this._parseStack.paused=!0,this._parseStack.cursorStartX=R,this._parseStack.cursorStartY=B,this._parseStack.decodedLength=N,this._parseStack.position=U}_logSlowResolvingAsync(R){this._logService.logLevel<=S.LogLevelEnum.WARN&&Promise.race([R,new Promise((B,N)=>setTimeout(()=>N(\"#SLOW_TIMEOUT\"),5e3))]).catch(B=>{if(B!==\"#SLOW_TIMEOUT\")throw B;console.warn(\"async parser handler taking longer than 5000 ms\")})}_getCurrentLinkId(){return this._curAttrData.extended.urlId}parse(R,B){let N,U=this._activeBuffer.x,J=this._activeBuffer.y,re=0;const le=this._parseStack.paused;if(le){if(N=this._parser.parse(this._parseBuffer,this._parseStack.decodedLength,B))return this._logSlowResolvingAsync(N),N;U=this._parseStack.cursorStartX,J=this._parseStack.cursorStartY,this._parseStack.paused=!1,R.length>M&&(re=this._parseStack.position+M)}if(this._logService.logLevel<=S.LogLevelEnum.DEBUG&&this._logService.debug(\"parsing data\"+(typeof R==\"string\"?` \"${R}\"`:` \"${Array.prototype.map.call(R,z=>String.fromCharCode(z)).join(\"\")}\"`),typeof R==\"string\"?R.split(\"\").map(z=>z.charCodeAt(0)):R),this._parseBuffer.length<R.length&&this._parseBuffer.length<M&&(this._parseBuffer=new Uint32Array(Math.min(R.length,M))),le||this._dirtyRowTracker.clearRange(),R.length>M)for(let z=re;z<R.length;z+=M){const te=z+M<R.length?z+M:R.length,oe=typeof R==\"string\"?this._stringDecoder.decode(R.substring(z,te),this._parseBuffer):this._utf8Decoder.decode(R.subarray(z,te),this._parseBuffer);if(N=this._parser.parse(this._parseBuffer,oe))return this._preserveStack(U,J,oe,z),this._logSlowResolvingAsync(N),N}else if(!le){const z=typeof R==\"string\"?this._stringDecoder.decode(R,this._parseBuffer):this._utf8Decoder.decode(R,this._parseBuffer);if(N=this._parser.parse(this._parseBuffer,z))return this._preserveStack(U,J,z,0),this._logSlowResolvingAsync(N),N}this._activeBuffer.x===U&&this._activeBuffer.y===J||this._onCursorMove.fire();const pe=this._dirtyRowTracker.end+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp),K=this._dirtyRowTracker.start+(this._bufferService.buffer.ybase-this._bufferService.buffer.ydisp);K<this._bufferService.rows&&this._onRequestRefreshRows.fire(Math.min(K,this._bufferService.rows-1),Math.min(pe,this._bufferService.rows-1))}print(R,B,N){let U,J;const re=this._charsetService.charset,le=this._optionsService.rawOptions.screenReaderMode,pe=this._bufferService.cols,K=this._coreService.decPrivateModes.wraparound,z=this._coreService.modes.insertMode,te=this._curAttrData;let oe=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._activeBuffer.x&&N-B>0&&oe.getWidth(this._activeBuffer.x-1)===2&&oe.setCellFromCodepoint(this._activeBuffer.x-1,0,1,te);let he=this._parser.precedingJoinState;for(let Y=B;Y<N;++Y){if(U=R[Y],U<127&&re){const ge=re[String.fromCharCode(U)];ge&&(U=ge.charCodeAt(0))}const L=this._unicodeService.charProperties(U,he);J=C.UnicodeService.extractWidth(L);const Q=C.UnicodeService.extractShouldJoin(L),se=Q?C.UnicodeService.extractWidth(he):0;if(he=L,le&&this._onA11yChar.fire((0,p.stringFromCodePoint)(U)),this._getCurrentLinkId()&&this._oscLinkService.addLineToLink(this._getCurrentLinkId(),this._activeBuffer.ybase+this._activeBuffer.y),this._activeBuffer.x+J-se>pe){if(K){const ge=oe;let ae=this._activeBuffer.x-se;for(this._activeBuffer.x=se,this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData(),!0)):(this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!0),oe=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y),se>0&&oe instanceof g.BufferLine&&oe.copyCellsFrom(ge,ae,0,se,!1);ae<pe;)ge.setCellFromCodepoint(ae++,0,1,te)}else if(this._activeBuffer.x=pe-1,J===2)continue}if(Q&&this._activeBuffer.x){const ge=oe.getWidth(this._activeBuffer.x-1)?1:2;oe.addCodepointToCell(this._activeBuffer.x-ge,U,J);for(let ae=J-se;--ae>=0;)oe.setCellFromCodepoint(this._activeBuffer.x++,0,0,te)}else if(z&&(oe.insertCells(this._activeBuffer.x,J-se,this._activeBuffer.getNullCell(te)),oe.getWidth(pe-1)===2&&oe.setCellFromCodepoint(pe-1,y.NULL_CELL_CODE,y.NULL_CELL_WIDTH,te)),oe.setCellFromCodepoint(this._activeBuffer.x++,U,J,te),J>0)for(;--J;)oe.setCellFromCodepoint(this._activeBuffer.x++,0,0,te)}this._parser.precedingJoinState=he,this._activeBuffer.x<pe&&N-B>0&&oe.getWidth(this._activeBuffer.x)===0&&!oe.hasContent(this._activeBuffer.x)&&oe.setCellFromCodepoint(this._activeBuffer.x,0,1,te),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}registerCsiHandler(R,B){return R.final!==\"t\"||R.prefix||R.intermediates?this._parser.registerCsiHandler(R,B):this._parser.registerCsiHandler(R,N=>!A(N.params[0],this._optionsService.rawOptions.windowOptions)||B(N))}registerDcsHandler(R,B){return this._parser.registerDcsHandler(R,new k.DcsHandler(B))}registerEscHandler(R,B){return this._parser.registerEscHandler(R,B)}registerOscHandler(R,B){return this._parser.registerOscHandler(R,new E.OscHandler(B))}bell(){return this._onRequestBell.fire(),!0}lineFeed(){return this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._optionsService.rawOptions.convertEol&&(this._activeBuffer.x=0),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows?this._activeBuffer.y=this._bufferService.rows-1:this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.x>=this._bufferService.cols&&this._activeBuffer.x--,this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._onLineFeed.fire(),!0}carriageReturn(){return this._activeBuffer.x=0,!0}backspace(){var R;if(!this._coreService.decPrivateModes.reverseWraparound)return this._restrictCursor(),this._activeBuffer.x>0&&this._activeBuffer.x--,!0;if(this._restrictCursor(this._bufferService.cols),this._activeBuffer.x>0)this._activeBuffer.x--;else if(this._activeBuffer.x===0&&this._activeBuffer.y>this._activeBuffer.scrollTop&&this._activeBuffer.y<=this._activeBuffer.scrollBottom&&((R=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y))!=null&&R.isWrapped)){this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).isWrapped=!1,this._activeBuffer.y--,this._activeBuffer.x=this._bufferService.cols-1;const B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);B.hasWidth(this._activeBuffer.x)&&!B.hasContent(this._activeBuffer.x)&&this._activeBuffer.x--}return this._restrictCursor(),!0}tab(){if(this._activeBuffer.x>=this._bufferService.cols)return!0;const R=this._activeBuffer.x;return this._activeBuffer.x=this._activeBuffer.nextStop(),this._optionsService.rawOptions.screenReaderMode&&this._onA11yTab.fire(this._activeBuffer.x-R),!0}shiftOut(){return this._charsetService.setgLevel(1),!0}shiftIn(){return this._charsetService.setgLevel(0),!0}_restrictCursor(R=this._bufferService.cols-1){this._activeBuffer.x=Math.min(R,Math.max(0,this._activeBuffer.x)),this._activeBuffer.y=this._coreService.decPrivateModes.origin?Math.min(this._activeBuffer.scrollBottom,Math.max(this._activeBuffer.scrollTop,this._activeBuffer.y)):Math.min(this._bufferService.rows-1,Math.max(0,this._activeBuffer.y)),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_setCursor(R,B){this._dirtyRowTracker.markDirty(this._activeBuffer.y),this._coreService.decPrivateModes.origin?(this._activeBuffer.x=R,this._activeBuffer.y=this._activeBuffer.scrollTop+B):(this._activeBuffer.x=R,this._activeBuffer.y=B),this._restrictCursor(),this._dirtyRowTracker.markDirty(this._activeBuffer.y)}_moveCursor(R,B){this._restrictCursor(),this._setCursor(this._activeBuffer.x+R,this._activeBuffer.y+B)}cursorUp(R){const B=this._activeBuffer.y-this._activeBuffer.scrollTop;return B>=0?this._moveCursor(0,-Math.min(B,R.params[0]||1)):this._moveCursor(0,-(R.params[0]||1)),!0}cursorDown(R){const B=this._activeBuffer.scrollBottom-this._activeBuffer.y;return B>=0?this._moveCursor(0,Math.min(B,R.params[0]||1)):this._moveCursor(0,R.params[0]||1),!0}cursorForward(R){return this._moveCursor(R.params[0]||1,0),!0}cursorBackward(R){return this._moveCursor(-(R.params[0]||1),0),!0}cursorNextLine(R){return this.cursorDown(R),this._activeBuffer.x=0,!0}cursorPrecedingLine(R){return this.cursorUp(R),this._activeBuffer.x=0,!0}cursorCharAbsolute(R){return this._setCursor((R.params[0]||1)-1,this._activeBuffer.y),!0}cursorPosition(R){return this._setCursor(R.length>=2?(R.params[1]||1)-1:0,(R.params[0]||1)-1),!0}charPosAbsolute(R){return this._setCursor((R.params[0]||1)-1,this._activeBuffer.y),!0}hPositionRelative(R){return this._moveCursor(R.params[0]||1,0),!0}linePosAbsolute(R){return this._setCursor(this._activeBuffer.x,(R.params[0]||1)-1),!0}vPositionRelative(R){return this._moveCursor(0,R.params[0]||1),!0}hVPosition(R){return this.cursorPosition(R),!0}tabClear(R){const B=R.params[0];return B===0?delete this._activeBuffer.tabs[this._activeBuffer.x]:B===3&&(this._activeBuffer.tabs={}),!0}cursorForwardTab(R){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let B=R.params[0]||1;for(;B--;)this._activeBuffer.x=this._activeBuffer.nextStop();return!0}cursorBackwardTab(R){if(this._activeBuffer.x>=this._bufferService.cols)return!0;let B=R.params[0]||1;for(;B--;)this._activeBuffer.x=this._activeBuffer.prevStop();return!0}selectProtected(R){const B=R.params[0];return B===1&&(this._curAttrData.bg|=536870912),B!==2&&B!==0||(this._curAttrData.bg&=-536870913),!0}_eraseInBufferLine(R,B,N,U=!1,J=!1){const re=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);re.replaceCells(B,N,this._activeBuffer.getNullCell(this._eraseAttrData()),J),U&&(re.isWrapped=!1)}_resetBufferLine(R,B=!1){const N=this._activeBuffer.lines.get(this._activeBuffer.ybase+R);N&&(N.fill(this._activeBuffer.getNullCell(this._eraseAttrData()),B),this._bufferService.buffer.clearMarkers(this._activeBuffer.ybase+R),N.isWrapped=!1)}eraseInDisplay(R,B=!1){let N;switch(this._restrictCursor(this._bufferService.cols),R.params[0]){case 0:for(N=this._activeBuffer.y,this._dirtyRowTracker.markDirty(N),this._eraseInBufferLine(N++,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,B);N<this._bufferService.rows;N++)this._resetBufferLine(N,B);this._dirtyRowTracker.markDirty(N);break;case 1:for(N=this._activeBuffer.y,this._dirtyRowTracker.markDirty(N),this._eraseInBufferLine(N,0,this._activeBuffer.x+1,!0,B),this._activeBuffer.x+1>=this._bufferService.cols&&(this._activeBuffer.lines.get(N+1).isWrapped=!1);N--;)this._resetBufferLine(N,B);this._dirtyRowTracker.markDirty(0);break;case 2:for(N=this._bufferService.rows,this._dirtyRowTracker.markDirty(N-1);N--;)this._resetBufferLine(N,B);this._dirtyRowTracker.markDirty(0);break;case 3:const U=this._activeBuffer.lines.length-this._bufferService.rows;U>0&&(this._activeBuffer.lines.trimStart(U),this._activeBuffer.ybase=Math.max(this._activeBuffer.ybase-U,0),this._activeBuffer.ydisp=Math.max(this._activeBuffer.ydisp-U,0),this._onScroll.fire(0))}return!0}eraseInLine(R,B=!1){switch(this._restrictCursor(this._bufferService.cols),R.params[0]){case 0:this._eraseInBufferLine(this._activeBuffer.y,this._activeBuffer.x,this._bufferService.cols,this._activeBuffer.x===0,B);break;case 1:this._eraseInBufferLine(this._activeBuffer.y,0,this._activeBuffer.x+1,!1,B);break;case 2:this._eraseInBufferLine(this._activeBuffer.y,0,this._bufferService.cols,!0,B)}return this._dirtyRowTracker.markDirty(this._activeBuffer.y),!0}insertLines(R){this._restrictCursor();let B=R.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const N=this._activeBuffer.ybase+this._activeBuffer.y,U=this._bufferService.rows-1-this._activeBuffer.scrollBottom,J=this._bufferService.rows-1+this._activeBuffer.ybase-U+1;for(;B--;)this._activeBuffer.lines.splice(J-1,1),this._activeBuffer.lines.splice(N,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}deleteLines(R){this._restrictCursor();let B=R.params[0]||1;if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const N=this._activeBuffer.ybase+this._activeBuffer.y;let U;for(U=this._bufferService.rows-1-this._activeBuffer.scrollBottom,U=this._bufferService.rows-1+this._activeBuffer.ybase-U;B--;)this._activeBuffer.lines.splice(N,1),this._activeBuffer.lines.splice(U,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.y,this._activeBuffer.scrollBottom),this._activeBuffer.x=0,!0}insertChars(R){this._restrictCursor();const B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return B&&(B.insertCells(this._activeBuffer.x,R.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}deleteChars(R){this._restrictCursor();const B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return B&&(B.deleteCells(this._activeBuffer.x,R.params[0]||1,this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}scrollUp(R){let B=R.params[0]||1;for(;B--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,0,this._activeBuffer.getBlankLine(this._eraseAttrData()));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollDown(R){let B=R.params[0]||1;for(;B--;)this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollBottom,1),this._activeBuffer.lines.splice(this._activeBuffer.ybase+this._activeBuffer.scrollTop,0,this._activeBuffer.getBlankLine(g.DEFAULT_ATTR_DATA));return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollLeft(R){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const B=R.params[0]||1;for(let N=this._activeBuffer.scrollTop;N<=this._activeBuffer.scrollBottom;++N){const U=this._activeBuffer.lines.get(this._activeBuffer.ybase+N);U.deleteCells(0,B,this._activeBuffer.getNullCell(this._eraseAttrData())),U.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}scrollRight(R){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const B=R.params[0]||1;for(let N=this._activeBuffer.scrollTop;N<=this._activeBuffer.scrollBottom;++N){const U=this._activeBuffer.lines.get(this._activeBuffer.ybase+N);U.insertCells(0,B,this._activeBuffer.getNullCell(this._eraseAttrData())),U.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}insertColumns(R){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const B=R.params[0]||1;for(let N=this._activeBuffer.scrollTop;N<=this._activeBuffer.scrollBottom;++N){const U=this._activeBuffer.lines.get(this._activeBuffer.ybase+N);U.insertCells(this._activeBuffer.x,B,this._activeBuffer.getNullCell(this._eraseAttrData())),U.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}deleteColumns(R){if(this._activeBuffer.y>this._activeBuffer.scrollBottom||this._activeBuffer.y<this._activeBuffer.scrollTop)return!0;const B=R.params[0]||1;for(let N=this._activeBuffer.scrollTop;N<=this._activeBuffer.scrollBottom;++N){const U=this._activeBuffer.lines.get(this._activeBuffer.ybase+N);U.deleteCells(this._activeBuffer.x,B,this._activeBuffer.getNullCell(this._eraseAttrData())),U.isWrapped=!1}return this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom),!0}eraseChars(R){this._restrictCursor();const B=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y);return B&&(B.replaceCells(this._activeBuffer.x,this._activeBuffer.x+(R.params[0]||1),this._activeBuffer.getNullCell(this._eraseAttrData())),this._dirtyRowTracker.markDirty(this._activeBuffer.y)),!0}repeatPrecedingCharacter(R){const B=this._parser.precedingJoinState;if(!B)return!0;const N=R.params[0]||1,U=C.UnicodeService.extractWidth(B),J=this._activeBuffer.x-U,re=this._activeBuffer.lines.get(this._activeBuffer.ybase+this._activeBuffer.y).getString(J),le=new Uint32Array(re.length*N);let pe=0;for(let z=0;z<re.length;){const te=re.codePointAt(z)||0;le[pe++]=te,z+=te>65535?2:1}let K=pe;for(let z=1;z<N;++z)le.copyWithin(K,0,pe),K+=pe;return this.print(le,0,K),!0}sendDeviceAttributesPrimary(R){return R.params[0]>0||(this._is(\"xterm\")||this._is(\"rxvt-unicode\")||this._is(\"screen\")?this._coreService.triggerDataEvent(d.C0.ESC+\"[?1;2c\"):this._is(\"linux\")&&this._coreService.triggerDataEvent(d.C0.ESC+\"[?6c\")),!0}sendDeviceAttributesSecondary(R){return R.params[0]>0||(this._is(\"xterm\")?this._coreService.triggerDataEvent(d.C0.ESC+\"[>0;276;0c\"):this._is(\"rxvt-unicode\")?this._coreService.triggerDataEvent(d.C0.ESC+\"[>85;95;0c\"):this._is(\"linux\")?this._coreService.triggerDataEvent(R.params[0]+\"c\"):this._is(\"screen\")&&this._coreService.triggerDataEvent(d.C0.ESC+\"[>83;40003;0c\")),!0}_is(R){return(this._optionsService.rawOptions.termName+\"\").indexOf(R)===0}setMode(R){for(let B=0;B<R.length;B++)switch(R.params[B]){case 4:this._coreService.modes.insertMode=!0;break;case 20:this._optionsService.options.convertEol=!0}return!0}setModePrivate(R){for(let B=0;B<R.length;B++)switch(R.params[B]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!0;break;case 2:this._charsetService.setgCharset(0,h.DEFAULT_CHARSET),this._charsetService.setgCharset(1,h.DEFAULT_CHARSET),this._charsetService.setgCharset(2,h.DEFAULT_CHARSET),this._charsetService.setgCharset(3,h.DEFAULT_CHARSET);break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(132,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!0,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!0;break;case 12:this._optionsService.options.cursorBlink=!0;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!0;break;case 66:this._logService.debug(\"Serial port requested application keypad.\"),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire();break;case 9:this._coreMouseService.activeProtocol=\"X10\";break;case 1e3:this._coreMouseService.activeProtocol=\"VT200\";break;case 1002:this._coreMouseService.activeProtocol=\"DRAG\";break;case 1003:this._coreMouseService.activeProtocol=\"ANY\";break;case 1004:this._coreService.decPrivateModes.sendFocus=!0,this._onRequestSendFocus.fire();break;case 1005:this._logService.debug(\"DECSET 1005 not supported (see #2507)\");break;case 1006:this._coreMouseService.activeEncoding=\"SGR\";break;case 1015:this._logService.debug(\"DECSET 1015 not supported (see #2507)\");break;case 1016:this._coreMouseService.activeEncoding=\"SGR_PIXELS\";break;case 25:this._coreService.isCursorHidden=!1;break;case 1048:this.saveCursor();break;case 1049:this.saveCursor();case 47:case 1047:this._bufferService.buffers.activateAltBuffer(this._eraseAttrData()),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!0}return!0}resetMode(R){for(let B=0;B<R.length;B++)switch(R.params[B]){case 4:this._coreService.modes.insertMode=!1;break;case 20:this._optionsService.options.convertEol=!1}return!0}resetModePrivate(R){for(let B=0;B<R.length;B++)switch(R.params[B]){case 1:this._coreService.decPrivateModes.applicationCursorKeys=!1;break;case 3:this._optionsService.rawOptions.windowOptions.setWinLines&&(this._bufferService.resize(80,this._bufferService.rows),this._onRequestReset.fire());break;case 6:this._coreService.decPrivateModes.origin=!1,this._setCursor(0,0);break;case 7:this._coreService.decPrivateModes.wraparound=!1;break;case 12:this._optionsService.options.cursorBlink=!1;break;case 45:this._coreService.decPrivateModes.reverseWraparound=!1;break;case 66:this._logService.debug(\"Switching back to normal keypad.\"),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire();break;case 9:case 1e3:case 1002:case 1003:this._coreMouseService.activeProtocol=\"NONE\";break;case 1004:this._coreService.decPrivateModes.sendFocus=!1;break;case 1005:this._logService.debug(\"DECRST 1005 not supported (see #2507)\");break;case 1006:case 1016:this._coreMouseService.activeEncoding=\"DEFAULT\";break;case 1015:this._logService.debug(\"DECRST 1015 not supported (see #2507)\");break;case 25:this._coreService.isCursorHidden=!0;break;case 1048:this.restoreCursor();break;case 1049:case 47:case 1047:this._bufferService.buffers.activateNormalBuffer(),R.params[B]===1049&&this.restoreCursor(),this._coreService.isCursorInitialized=!0,this._onRequestRefreshRows.fire(0,this._bufferService.rows-1),this._onRequestSyncScrollBar.fire();break;case 2004:this._coreService.decPrivateModes.bracketedPasteMode=!1}return!0}requestMode(R,B){const N=this._coreService.decPrivateModes,{activeProtocol:U,activeEncoding:J}=this._coreMouseService,re=this._coreService,{buffers:le,cols:pe}=this._bufferService,{active:K,alt:z}=le,te=this._optionsService.rawOptions,oe=Q=>Q?1:2,he=R.params[0];return Y=he,L=B?he===2?4:he===4?oe(re.modes.insertMode):he===12?3:he===20?oe(te.convertEol):0:he===1?oe(N.applicationCursorKeys):he===3?te.windowOptions.setWinLines?pe===80?2:pe===132?1:0:0:he===6?oe(N.origin):he===7?oe(N.wraparound):he===8?3:he===9?oe(U===\"X10\"):he===12?oe(te.cursorBlink):he===25?oe(!re.isCursorHidden):he===45?oe(N.reverseWraparound):he===66?oe(N.applicationKeypad):he===67?4:he===1e3?oe(U===\"VT200\"):he===1002?oe(U===\"DRAG\"):he===1003?oe(U===\"ANY\"):he===1004?oe(N.sendFocus):he===1005?4:he===1006?oe(J===\"SGR\"):he===1015?4:he===1016?oe(J===\"SGR_PIXELS\"):he===1048?1:he===47||he===1047||he===1049?oe(K===z):he===2004?oe(N.bracketedPasteMode):0,re.triggerDataEvent(`${d.C0.ESC}[${B?\"\":\"?\"}${Y};${L}$y`),!0;var Y,L}_updateAttrColor(R,B,N,U,J){return B===2?(R|=50331648,R&=-16777216,R|=w.AttributeData.fromColorRGB([N,U,J])):B===5&&(R&=-50331904,R|=33554432|255&N),R}_extractColor(R,B,N){const U=[0,0,-1,0,0,0];let J=0,re=0;do{if(U[re+J]=R.params[B+re],R.hasSubParams(B+re)){const le=R.getSubParams(B+re);let pe=0;do U[1]===5&&(J=1),U[re+pe+1+J]=le[pe];while(++pe<le.length&&pe+re+1+J<U.length);break}if(U[1]===5&&re+J>=2||U[1]===2&&re+J>=5)break;U[1]&&(J=1)}while(++re+B<R.length&&re+J<U.length);for(let le=2;le<U.length;++le)U[le]===-1&&(U[le]=0);switch(U[0]){case 38:N.fg=this._updateAttrColor(N.fg,U[1],U[3],U[4],U[5]);break;case 48:N.bg=this._updateAttrColor(N.bg,U[1],U[3],U[4],U[5]);break;case 58:N.extended=N.extended.clone(),N.extended.underlineColor=this._updateAttrColor(N.extended.underlineColor,U[1],U[3],U[4],U[5])}return re}_processUnderline(R,B){B.extended=B.extended.clone(),(!~R||R>5)&&(R=1),B.extended.underlineStyle=R,B.fg|=268435456,R===0&&(B.fg&=-268435457),B.updateExtended()}_processSGR0(R){R.fg=g.DEFAULT_ATTR_DATA.fg,R.bg=g.DEFAULT_ATTR_DATA.bg,R.extended=R.extended.clone(),R.extended.underlineStyle=0,R.extended.underlineColor&=-67108864,R.updateExtended()}charAttributes(R){if(R.length===1&&R.params[0]===0)return this._processSGR0(this._curAttrData),!0;const B=R.length;let N;const U=this._curAttrData;for(let J=0;J<B;J++)N=R.params[J],N>=30&&N<=37?(U.fg&=-50331904,U.fg|=16777216|N-30):N>=40&&N<=47?(U.bg&=-50331904,U.bg|=16777216|N-40):N>=90&&N<=97?(U.fg&=-50331904,U.fg|=16777224|N-90):N>=100&&N<=107?(U.bg&=-50331904,U.bg|=16777224|N-100):N===0?this._processSGR0(U):N===1?U.fg|=134217728:N===3?U.bg|=67108864:N===4?(U.fg|=268435456,this._processUnderline(R.hasSubParams(J)?R.getSubParams(J)[0]:1,U)):N===5?U.fg|=536870912:N===7?U.fg|=67108864:N===8?U.fg|=1073741824:N===9?U.fg|=2147483648:N===2?U.bg|=134217728:N===21?this._processUnderline(2,U):N===22?(U.fg&=-134217729,U.bg&=-134217729):N===23?U.bg&=-67108865:N===24?(U.fg&=-268435457,this._processUnderline(0,U)):N===25?U.fg&=-536870913:N===27?U.fg&=-67108865:N===28?U.fg&=-1073741825:N===29?U.fg&=2147483647:N===39?(U.fg&=-67108864,U.fg|=16777215&g.DEFAULT_ATTR_DATA.fg):N===49?(U.bg&=-67108864,U.bg|=16777215&g.DEFAULT_ATTR_DATA.bg):N===38||N===48||N===58?J+=this._extractColor(R,J,U):N===53?U.bg|=1073741824:N===55?U.bg&=-1073741825:N===59?(U.extended=U.extended.clone(),U.extended.underlineColor=-1,U.updateExtended()):N===100?(U.fg&=-67108864,U.fg|=16777215&g.DEFAULT_ATTR_DATA.fg,U.bg&=-67108864,U.bg|=16777215&g.DEFAULT_ATTR_DATA.bg):this._logService.debug(\"Unknown SGR attribute: %d.\",N);return!0}deviceStatus(R){switch(R.params[0]){case 5:this._coreService.triggerDataEvent(`${d.C0.ESC}[0n`);break;case 6:const B=this._activeBuffer.y+1,N=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${d.C0.ESC}[${B};${N}R`)}return!0}deviceStatusPrivate(R){if(R.params[0]===6){const B=this._activeBuffer.y+1,N=this._activeBuffer.x+1;this._coreService.triggerDataEvent(`${d.C0.ESC}[?${B};${N}R`)}return!0}softReset(R){return this._coreService.isCursorHidden=!1,this._onRequestSyncScrollBar.fire(),this._activeBuffer.scrollTop=0,this._activeBuffer.scrollBottom=this._bufferService.rows-1,this._curAttrData=g.DEFAULT_ATTR_DATA.clone(),this._coreService.reset(),this._charsetService.reset(),this._activeBuffer.savedX=0,this._activeBuffer.savedY=this._activeBuffer.ybase,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,this._coreService.decPrivateModes.origin=!1,!0}setCursorStyle(R){const B=R.params[0]||1;switch(B){case 1:case 2:this._optionsService.options.cursorStyle=\"block\";break;case 3:case 4:this._optionsService.options.cursorStyle=\"underline\";break;case 5:case 6:this._optionsService.options.cursorStyle=\"bar\"}const N=B%2==1;return this._optionsService.options.cursorBlink=N,!0}setScrollRegion(R){const B=R.params[0]||1;let N;return(R.length<2||(N=R.params[1])>this._bufferService.rows||N===0)&&(N=this._bufferService.rows),N>B&&(this._activeBuffer.scrollTop=B-1,this._activeBuffer.scrollBottom=N-1,this._setCursor(0,0)),!0}windowOptions(R){if(!A(R.params[0],this._optionsService.rawOptions.windowOptions))return!0;const B=R.length>1?R.params[1]:0;switch(R.params[0]){case 14:B!==2&&this._onRequestWindowsOptionsReport.fire(P.GET_WIN_SIZE_PIXELS);break;case 16:this._onRequestWindowsOptionsReport.fire(P.GET_CELL_SIZE_PIXELS);break;case 18:this._bufferService&&this._coreService.triggerDataEvent(`${d.C0.ESC}[8;${this._bufferService.rows};${this._bufferService.cols}t`);break;case 22:B!==0&&B!==2||(this._windowTitleStack.push(this._windowTitle),this._windowTitleStack.length>10&&this._windowTitleStack.shift()),B!==0&&B!==1||(this._iconNameStack.push(this._iconName),this._iconNameStack.length>10&&this._iconNameStack.shift());break;case 23:B!==0&&B!==2||this._windowTitleStack.length&&this.setTitle(this._windowTitleStack.pop()),B!==0&&B!==1||this._iconNameStack.length&&this.setIconName(this._iconNameStack.pop())}return!0}saveCursor(R){return this._activeBuffer.savedX=this._activeBuffer.x,this._activeBuffer.savedY=this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.savedCurAttrData.fg=this._curAttrData.fg,this._activeBuffer.savedCurAttrData.bg=this._curAttrData.bg,this._activeBuffer.savedCharset=this._charsetService.charset,!0}restoreCursor(R){return this._activeBuffer.x=this._activeBuffer.savedX||0,this._activeBuffer.y=Math.max(this._activeBuffer.savedY-this._activeBuffer.ybase,0),this._curAttrData.fg=this._activeBuffer.savedCurAttrData.fg,this._curAttrData.bg=this._activeBuffer.savedCurAttrData.bg,this._charsetService.charset=this._savedCharset,this._activeBuffer.savedCharset&&(this._charsetService.charset=this._activeBuffer.savedCharset),this._restrictCursor(),!0}setTitle(R){return this._windowTitle=R,this._onTitleChange.fire(R),!0}setIconName(R){return this._iconName=R,!0}setOrReportIndexedColor(R){const B=[],N=R.split(\";\");for(;N.length>1;){const U=N.shift(),J=N.shift();if(/^\\d+$/.exec(U)){const re=parseInt(U);if(j(re))if(J===\"?\")B.push({type:0,index:re});else{const le=(0,T.parseColor)(J);le&&B.push({type:1,index:re,color:le})}}}return B.length&&this._onColor.fire(B),!0}setHyperlink(R){const B=R.split(\";\");return!(B.length<2)&&(B[1]?this._createHyperlink(B[0],B[1]):!B[0]&&this._finishHyperlink())}_createHyperlink(R,B){this._getCurrentLinkId()&&this._finishHyperlink();const N=R.split(\":\");let U;const J=N.findIndex(re=>re.startsWith(\"id=\"));return J!==-1&&(U=N[J].slice(3)||void 0),this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=this._oscLinkService.registerLink({id:U,uri:B}),this._curAttrData.updateExtended(),!0}_finishHyperlink(){return this._curAttrData.extended=this._curAttrData.extended.clone(),this._curAttrData.extended.urlId=0,this._curAttrData.updateExtended(),!0}_setOrReportSpecialColor(R,B){const N=R.split(\";\");for(let U=0;U<N.length&&!(B>=this._specialColors.length);++U,++B)if(N[U]===\"?\")this._onColor.fire([{type:0,index:this._specialColors[B]}]);else{const J=(0,T.parseColor)(N[U]);J&&this._onColor.fire([{type:1,index:this._specialColors[B],color:J}])}return!0}setOrReportFgColor(R){return this._setOrReportSpecialColor(R,0)}setOrReportBgColor(R){return this._setOrReportSpecialColor(R,1)}setOrReportCursorColor(R){return this._setOrReportSpecialColor(R,2)}restoreIndexedColor(R){if(!R)return this._onColor.fire([{type:2}]),!0;const B=[],N=R.split(\";\");for(let U=0;U<N.length;++U)if(/^\\d+$/.exec(N[U])){const J=parseInt(N[U]);j(J)&&B.push({type:2,index:J})}return B.length&&this._onColor.fire(B),!0}restoreFgColor(R){return this._onColor.fire([{type:2,index:256}]),!0}restoreBgColor(R){return this._onColor.fire([{type:2,index:257}]),!0}restoreCursorColor(R){return this._onColor.fire([{type:2,index:258}]),!0}nextLine(){return this._activeBuffer.x=0,this.index(),!0}keypadApplicationMode(){return this._logService.debug(\"Serial port requested application keypad.\"),this._coreService.decPrivateModes.applicationKeypad=!0,this._onRequestSyncScrollBar.fire(),!0}keypadNumericMode(){return this._logService.debug(\"Switching back to normal keypad.\"),this._coreService.decPrivateModes.applicationKeypad=!1,this._onRequestSyncScrollBar.fire(),!0}selectDefaultCharset(){return this._charsetService.setgLevel(0),this._charsetService.setgCharset(0,h.DEFAULT_CHARSET),!0}selectCharset(R){return R.length!==2?(this.selectDefaultCharset(),!0):(R[0]===\"/\"||this._charsetService.setgCharset(x[R[0]],h.CHARSETS[R[1]]||h.DEFAULT_CHARSET),!0)}index(){return this._restrictCursor(),this._activeBuffer.y++,this._activeBuffer.y===this._activeBuffer.scrollBottom+1?(this._activeBuffer.y--,this._bufferService.scroll(this._eraseAttrData())):this._activeBuffer.y>=this._bufferService.rows&&(this._activeBuffer.y=this._bufferService.rows-1),this._restrictCursor(),!0}tabSet(){return this._activeBuffer.tabs[this._activeBuffer.x]=!0,!0}reverseIndex(){if(this._restrictCursor(),this._activeBuffer.y===this._activeBuffer.scrollTop){const R=this._activeBuffer.scrollBottom-this._activeBuffer.scrollTop;this._activeBuffer.lines.shiftElements(this._activeBuffer.ybase+this._activeBuffer.y,R,1),this._activeBuffer.lines.set(this._activeBuffer.ybase+this._activeBuffer.y,this._activeBuffer.getBlankLine(this._eraseAttrData())),this._dirtyRowTracker.markRangeDirty(this._activeBuffer.scrollTop,this._activeBuffer.scrollBottom)}else this._activeBuffer.y--,this._restrictCursor();return!0}fullReset(){return this._parser.reset(),this._onRequestReset.fire(),!0}reset(){this._curAttrData=g.DEFAULT_ATTR_DATA.clone(),this._eraseAttrDataInternal=g.DEFAULT_ATTR_DATA.clone()}_eraseAttrData(){return this._eraseAttrDataInternal.bg&=-67108864,this._eraseAttrDataInternal.bg|=67108863&this._curAttrData.bg,this._eraseAttrDataInternal}setgLevel(R){return this._charsetService.setgLevel(R),!0}screenAlignmentPattern(){const R=new _.CellData;R.content=4194373,R.fg=this._curAttrData.fg,R.bg=this._curAttrData.bg,this._setCursor(0,0);for(let B=0;B<this._bufferService.rows;++B){const N=this._activeBuffer.ybase+this._activeBuffer.y+B,U=this._activeBuffer.lines.get(N);U&&(U.fill(R),U.isWrapped=!1)}return this._dirtyRowTracker.markAllDirty(),this._setCursor(0,0),!0}requestStatusString(R,B){const N=this._bufferService.buffer,U=this._optionsService.rawOptions;return(J=>(this._coreService.triggerDataEvent(`${d.C0.ESC}${J}${d.C0.ESC}\\\\`),!0))(R==='\"q'?`P1$r${this._curAttrData.isProtected()?1:0}\"q`:R==='\"p'?'P1$r61;1\"p':R===\"r\"?`P1$r${N.scrollTop+1};${N.scrollBottom+1}r`:R===\"m\"?\"P1$r0m\":R===\" q\"?`P1$r${{block:2,underline:4,bar:6}[U.cursorStyle]-(U.cursorBlink?1:0)} q`:\"P0$r\")}markRangeDirty(R,B){this._dirtyRowTracker.markRangeDirty(R,B)}}i.InputHandler=V;let I=class{constructor(F){this._bufferService=F,this.clearRange()}clearRange(){this.start=this._bufferService.buffer.y,this.end=this._bufferService.buffer.y}markDirty(F){F<this.start?this.start=F:F>this.end&&(this.end=F)}markRangeDirty(F,R){F>R&&(G=F,F=R,R=G),F<this.start&&(this.start=F),R>this.end&&(this.end=R)}markAllDirty(){this.markRangeDirty(0,this._bufferService.rows-1)}};function j(F){return 0<=F&&F<256}I=u([f(0,S.IBufferService)],I)},844:(a,i)=>{function l(u){for(const f of u)f.dispose();u.length=0}Object.defineProperty(i,\"__esModule\",{value:!0}),i.getDisposeArrayDisposable=i.disposeArray=i.toDisposable=i.MutableDisposable=i.Disposable=void 0,i.Disposable=class{constructor(){this._disposables=[],this._isDisposed=!1}dispose(){this._isDisposed=!0;for(const u of this._disposables)u.dispose();this._disposables.length=0}register(u){return this._disposables.push(u),u}unregister(u){const f=this._disposables.indexOf(u);f!==-1&&this._disposables.splice(f,1)}},i.MutableDisposable=class{constructor(){this._isDisposed=!1}get value(){return this._isDisposed?void 0:this._value}set value(u){var f;this._isDisposed||u===this._value||((f=this._value)==null||f.dispose(),this._value=u)}clear(){this.value=void 0}dispose(){var u;this._isDisposed=!0,(u=this._value)==null||u.dispose(),this._value=void 0}},i.toDisposable=function(u){return{dispose:u}},i.disposeArray=l,i.getDisposeArrayDisposable=function(u){return{dispose:()=>l(u)}}},1505:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.FourKeyMap=i.TwoKeyMap=void 0;class l{constructor(){this._data={}}set(f,d,h){this._data[f]||(this._data[f]={}),this._data[f][d]=h}get(f,d){return this._data[f]?this._data[f][d]:void 0}clear(){this._data={}}}i.TwoKeyMap=l,i.FourKeyMap=class{constructor(){this._data=new l}set(u,f,d,h,v){this._data.get(u,f)||this._data.set(u,f,new l),this._data.get(u,f).set(d,h,v)}get(u,f,d,h){var v;return(v=this._data.get(u,f))==null?void 0:v.get(d,h)}clear(){this._data.clear()}}},6114:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.isChromeOS=i.isLinux=i.isWindows=i.isIphone=i.isIpad=i.isMac=i.getSafariVersion=i.isSafari=i.isLegacyEdge=i.isFirefox=i.isNode=void 0,i.isNode=typeof process<\"u\"&&\"title\"in process;const l=i.isNode?\"node\":navigator.userAgent,u=i.isNode?\"node\":navigator.platform;i.isFirefox=l.includes(\"Firefox\"),i.isLegacyEdge=l.includes(\"Edge\"),i.isSafari=/^((?!chrome|android).)*safari/i.test(l),i.getSafariVersion=function(){if(!i.isSafari)return 0;const f=l.match(/Version\\/(\\d+)/);return f===null||f.length<2?0:parseInt(f[1])},i.isMac=[\"Macintosh\",\"MacIntel\",\"MacPPC\",\"Mac68K\"].includes(u),i.isIpad=u===\"iPad\",i.isIphone=u===\"iPhone\",i.isWindows=[\"Windows\",\"Win16\",\"Win32\",\"WinCE\"].includes(u),i.isLinux=u.indexOf(\"Linux\")>=0,i.isChromeOS=/\\bCrOS\\b/.test(l)},6106:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.SortedList=void 0;let l=0;i.SortedList=class{constructor(u){this._getKey=u,this._array=[]}clear(){this._array.length=0}insert(u){this._array.length!==0?(l=this._search(this._getKey(u)),this._array.splice(l,0,u)):this._array.push(u)}delete(u){if(this._array.length===0)return!1;const f=this._getKey(u);if(f===void 0||(l=this._search(f),l===-1)||this._getKey(this._array[l])!==f)return!1;do if(this._array[l]===u)return this._array.splice(l,1),!0;while(++l<this._array.length&&this._getKey(this._array[l])===f);return!1}*getKeyIterator(u){if(this._array.length!==0&&(l=this._search(u),!(l<0||l>=this._array.length)&&this._getKey(this._array[l])===u))do yield this._array[l];while(++l<this._array.length&&this._getKey(this._array[l])===u)}forEachByKey(u,f){if(this._array.length!==0&&(l=this._search(u),!(l<0||l>=this._array.length)&&this._getKey(this._array[l])===u))do f(this._array[l]);while(++l<this._array.length&&this._getKey(this._array[l])===u)}values(){return[...this._array].values()}_search(u){let f=0,d=this._array.length-1;for(;d>=f;){let h=f+d>>1;const v=this._getKey(this._array[h]);if(v>u)d=h-1;else{if(!(v<u)){for(;h>0&&this._getKey(this._array[h-1])===u;)h--;return h}f=h+1}}return f}}},7226:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.DebouncedIdleTask=i.IdleTaskQueue=i.PriorityTaskQueue=void 0;const u=l(6114);class f{constructor(){this._tasks=[],this._i=0}enqueue(v){this._tasks.push(v),this._start()}flush(){for(;this._i<this._tasks.length;)this._tasks[this._i]()||this._i++;this.clear()}clear(){this._idleCallback&&(this._cancelCallback(this._idleCallback),this._idleCallback=void 0),this._i=0,this._tasks.length=0}_start(){this._idleCallback||(this._idleCallback=this._requestCallback(this._process.bind(this)))}_process(v){this._idleCallback=void 0;let b=0,p=0,g=v.timeRemaining(),m=0;for(;this._i<this._tasks.length;){if(b=Date.now(),this._tasks[this._i]()||this._i++,b=Math.max(1,Date.now()-b),p=Math.max(b,p),m=v.timeRemaining(),1.5*p>m)return g-b<-20&&console.warn(`task queue exceeded allotted deadline by ${Math.abs(Math.round(g-b))}ms`),void this._start();g=m}this.clear()}}class d extends f{_requestCallback(v){return setTimeout(()=>v(this._createDeadline(16)))}_cancelCallback(v){clearTimeout(v)}_createDeadline(v){const b=Date.now()+v;return{timeRemaining:()=>Math.max(0,b-Date.now())}}}i.PriorityTaskQueue=d,i.IdleTaskQueue=!u.isNode&&\"requestIdleCallback\"in window?class extends f{_requestCallback(h){return requestIdleCallback(h)}_cancelCallback(h){cancelIdleCallback(h)}}:d,i.DebouncedIdleTask=class{constructor(){this._queue=new i.IdleTaskQueue}set(h){this._queue.clear(),this._queue.enqueue(h)}flush(){this._queue.flush()}}},9282:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.updateWindowsModeWrappedState=void 0;const u=l(643);i.updateWindowsModeWrappedState=function(f){const d=f.buffer.lines.get(f.buffer.ybase+f.buffer.y-1),h=d==null?void 0:d.get(f.cols-1),v=f.buffer.lines.get(f.buffer.ybase+f.buffer.y);v&&h&&(v.isWrapped=h[u.CHAR_DATA_CODE_INDEX]!==u.NULL_CELL_CODE&&h[u.CHAR_DATA_CODE_INDEX]!==u.WHITESPACE_CELL_CODE)}},3734:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.ExtendedAttrs=i.AttributeData=void 0;class l{constructor(){this.fg=0,this.bg=0,this.extended=new u}static toColorRGB(d){return[d>>>16&255,d>>>8&255,255&d]}static fromColorRGB(d){return(255&d[0])<<16|(255&d[1])<<8|255&d[2]}clone(){const d=new l;return d.fg=this.fg,d.bg=this.bg,d.extended=this.extended.clone(),d}isInverse(){return 67108864&this.fg}isBold(){return 134217728&this.fg}isUnderline(){return this.hasExtendedAttrs()&&this.extended.underlineStyle!==0?1:268435456&this.fg}isBlink(){return 536870912&this.fg}isInvisible(){return 1073741824&this.fg}isItalic(){return 67108864&this.bg}isDim(){return 134217728&this.bg}isStrikethrough(){return 2147483648&this.fg}isProtected(){return 536870912&this.bg}isOverline(){return 1073741824&this.bg}getFgColorMode(){return 50331648&this.fg}getBgColorMode(){return 50331648&this.bg}isFgRGB(){return(50331648&this.fg)==50331648}isBgRGB(){return(50331648&this.bg)==50331648}isFgPalette(){return(50331648&this.fg)==16777216||(50331648&this.fg)==33554432}isBgPalette(){return(50331648&this.bg)==16777216||(50331648&this.bg)==33554432}isFgDefault(){return(50331648&this.fg)==0}isBgDefault(){return(50331648&this.bg)==0}isAttributeDefault(){return this.fg===0&&this.bg===0}getFgColor(){switch(50331648&this.fg){case 16777216:case 33554432:return 255&this.fg;case 50331648:return 16777215&this.fg;default:return-1}}getBgColor(){switch(50331648&this.bg){case 16777216:case 33554432:return 255&this.bg;case 50331648:return 16777215&this.bg;default:return-1}}hasExtendedAttrs(){return 268435456&this.bg}updateExtended(){this.extended.isEmpty()?this.bg&=-268435457:this.bg|=268435456}getUnderlineColor(){if(268435456&this.bg&&~this.extended.underlineColor)switch(50331648&this.extended.underlineColor){case 16777216:case 33554432:return 255&this.extended.underlineColor;case 50331648:return 16777215&this.extended.underlineColor;default:return this.getFgColor()}return this.getFgColor()}getUnderlineColorMode(){return 268435456&this.bg&&~this.extended.underlineColor?50331648&this.extended.underlineColor:this.getFgColorMode()}isUnderlineColorRGB(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==50331648:this.isFgRGB()}isUnderlineColorPalette(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==16777216||(50331648&this.extended.underlineColor)==33554432:this.isFgPalette()}isUnderlineColorDefault(){return 268435456&this.bg&&~this.extended.underlineColor?(50331648&this.extended.underlineColor)==0:this.isFgDefault()}getUnderlineStyle(){return 268435456&this.fg?268435456&this.bg?this.extended.underlineStyle:1:0}getUnderlineVariantOffset(){return this.extended.underlineVariantOffset}}i.AttributeData=l;class u{get ext(){return this._urlId?-469762049&this._ext|this.underlineStyle<<26:this._ext}set ext(d){this._ext=d}get underlineStyle(){return this._urlId?5:(469762048&this._ext)>>26}set underlineStyle(d){this._ext&=-469762049,this._ext|=d<<26&469762048}get underlineColor(){return 67108863&this._ext}set underlineColor(d){this._ext&=-67108864,this._ext|=67108863&d}get urlId(){return this._urlId}set urlId(d){this._urlId=d}get underlineVariantOffset(){const d=(3758096384&this._ext)>>29;return d<0?4294967288^d:d}set underlineVariantOffset(d){this._ext&=536870911,this._ext|=d<<29&3758096384}constructor(d=0,h=0){this._ext=0,this._urlId=0,this._ext=d,this._urlId=h}clone(){return new u(this._ext,this._urlId)}isEmpty(){return this.underlineStyle===0&&this._urlId===0}}i.ExtendedAttrs=u},9092:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.Buffer=i.MAX_BUFFER_SIZE=void 0;const u=l(6349),f=l(7226),d=l(3734),h=l(8437),v=l(4634),b=l(511),p=l(643),g=l(4863),m=l(7116);i.MAX_BUFFER_SIZE=4294967295,i.Buffer=class{constructor(y,_,w){this._hasScrollback=y,this._optionsService=_,this._bufferService=w,this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.tabs={},this.savedY=0,this.savedX=0,this.savedCurAttrData=h.DEFAULT_ATTR_DATA.clone(),this.savedCharset=m.DEFAULT_CHARSET,this.markers=[],this._nullCell=b.CellData.fromCharData([0,p.NULL_CELL_CHAR,p.NULL_CELL_WIDTH,p.NULL_CELL_CODE]),this._whitespaceCell=b.CellData.fromCharData([0,p.WHITESPACE_CELL_CHAR,p.WHITESPACE_CELL_WIDTH,p.WHITESPACE_CELL_CODE]),this._isClearing=!1,this._memoryCleanupQueue=new f.IdleTaskQueue,this._memoryCleanupPosition=0,this._cols=this._bufferService.cols,this._rows=this._bufferService.rows,this.lines=new u.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}getNullCell(y){return y?(this._nullCell.fg=y.fg,this._nullCell.bg=y.bg,this._nullCell.extended=y.extended):(this._nullCell.fg=0,this._nullCell.bg=0,this._nullCell.extended=new d.ExtendedAttrs),this._nullCell}getWhitespaceCell(y){return y?(this._whitespaceCell.fg=y.fg,this._whitespaceCell.bg=y.bg,this._whitespaceCell.extended=y.extended):(this._whitespaceCell.fg=0,this._whitespaceCell.bg=0,this._whitespaceCell.extended=new d.ExtendedAttrs),this._whitespaceCell}getBlankLine(y,_){return new h.BufferLine(this._bufferService.cols,this.getNullCell(y),_)}get hasScrollback(){return this._hasScrollback&&this.lines.maxLength>this._rows}get isCursorInViewport(){const y=this.ybase+this.y-this.ydisp;return y>=0&&y<this._rows}_getCorrectBufferLength(y){if(!this._hasScrollback)return y;const _=y+this._optionsService.rawOptions.scrollback;return _>i.MAX_BUFFER_SIZE?i.MAX_BUFFER_SIZE:_}fillViewportRows(y){if(this.lines.length===0){y===void 0&&(y=h.DEFAULT_ATTR_DATA);let _=this._rows;for(;_--;)this.lines.push(this.getBlankLine(y))}}clear(){this.ydisp=0,this.ybase=0,this.y=0,this.x=0,this.lines=new u.CircularList(this._getCorrectBufferLength(this._rows)),this.scrollTop=0,this.scrollBottom=this._rows-1,this.setupTabStops()}resize(y,_){const w=this.getNullCell(h.DEFAULT_ATTR_DATA);let S=0;const C=this._getCorrectBufferLength(_);if(C>this.lines.maxLength&&(this.lines.maxLength=C),this.lines.length>0){if(this._cols<y)for(let k=0;k<this.lines.length;k++)S+=+this.lines.get(k).resize(y,w);let E=0;if(this._rows<_)for(let k=this._rows;k<_;k++)this.lines.length<_+this.ybase&&(this._optionsService.rawOptions.windowsMode||this._optionsService.rawOptions.windowsPty.backend!==void 0||this._optionsService.rawOptions.windowsPty.buildNumber!==void 0?this.lines.push(new h.BufferLine(y,w)):this.ybase>0&&this.lines.length<=this.ybase+this.y+E+1?(this.ybase--,E++,this.ydisp>0&&this.ydisp--):this.lines.push(new h.BufferLine(y,w)));else for(let k=this._rows;k>_;k--)this.lines.length>_+this.ybase&&(this.lines.length>this.ybase+this.y+1?this.lines.pop():(this.ybase++,this.ydisp++));if(C<this.lines.maxLength){const k=this.lines.length-C;k>0&&(this.lines.trimStart(k),this.ybase=Math.max(this.ybase-k,0),this.ydisp=Math.max(this.ydisp-k,0),this.savedY=Math.max(this.savedY-k,0)),this.lines.maxLength=C}this.x=Math.min(this.x,y-1),this.y=Math.min(this.y,_-1),E&&(this.y+=E),this.savedX=Math.min(this.savedX,y-1),this.scrollTop=0}if(this.scrollBottom=_-1,this._isReflowEnabled&&(this._reflow(y,_),this._cols>y))for(let E=0;E<this.lines.length;E++)S+=+this.lines.get(E).resize(y,w);this._cols=y,this._rows=_,this._memoryCleanupQueue.clear(),S>.1*this.lines.length&&(this._memoryCleanupPosition=0,this._memoryCleanupQueue.enqueue(()=>this._batchedMemoryCleanup()))}_batchedMemoryCleanup(){let y=!0;this._memoryCleanupPosition>=this.lines.length&&(this._memoryCleanupPosition=0,y=!1);let _=0;for(;this._memoryCleanupPosition<this.lines.length;)if(_+=this.lines.get(this._memoryCleanupPosition++).cleanupMemory(),_>100)return!0;return y}get _isReflowEnabled(){const y=this._optionsService.rawOptions.windowsPty;return y&&y.buildNumber?this._hasScrollback&&y.backend===\"conpty\"&&y.buildNumber>=21376:this._hasScrollback&&!this._optionsService.rawOptions.windowsMode}_reflow(y,_){this._cols!==y&&(y>this._cols?this._reflowLarger(y,_):this._reflowSmaller(y,_))}_reflowLarger(y,_){const w=(0,v.reflowLargerGetLinesToRemove)(this.lines,this._cols,y,this.ybase+this.y,this.getNullCell(h.DEFAULT_ATTR_DATA));if(w.length>0){const S=(0,v.reflowLargerCreateNewLayout)(this.lines,w);(0,v.reflowLargerApplyNewLayout)(this.lines,S.layout),this._reflowLargerAdjustViewport(y,_,S.countRemoved)}}_reflowLargerAdjustViewport(y,_,w){const S=this.getNullCell(h.DEFAULT_ATTR_DATA);let C=w;for(;C-- >0;)this.ybase===0?(this.y>0&&this.y--,this.lines.length<_&&this.lines.push(new h.BufferLine(y,S))):(this.ydisp===this.ybase&&this.ydisp--,this.ybase--);this.savedY=Math.max(this.savedY-w,0)}_reflowSmaller(y,_){const w=this.getNullCell(h.DEFAULT_ATTR_DATA),S=[];let C=0;for(let E=this.lines.length-1;E>=0;E--){let k=this.lines.get(E);if(!k||!k.isWrapped&&k.getTrimmedLength()<=y)continue;const T=[k];for(;k.isWrapped&&E>0;)k=this.lines.get(--E),T.unshift(k);const x=this.ybase+this.y;if(x>=E&&x<E+T.length)continue;const M=T[T.length-1].getTrimmedLength(),A=(0,v.reflowSmallerGetNewLineLengths)(T,this._cols,y),P=A.length-T.length;let G;G=this.ybase===0&&this.y!==this.lines.length-1?Math.max(0,this.y-this.lines.maxLength+P):Math.max(0,this.lines.length-this.lines.maxLength+P);const V=[];for(let N=0;N<P;N++){const U=this.getBlankLine(h.DEFAULT_ATTR_DATA,!0);V.push(U)}V.length>0&&(S.push({start:E+T.length+C,newLines:V}),C+=V.length),T.push(...V);let I=A.length-1,j=A[I];j===0&&(I--,j=A[I]);let F=T.length-P-1,R=M;for(;F>=0;){const N=Math.min(R,j);if(T[I]===void 0)break;if(T[I].copyCellsFrom(T[F],R-N,j-N,N,!0),j-=N,j===0&&(I--,j=A[I]),R-=N,R===0){F--;const U=Math.max(F,0);R=(0,v.getWrappedLineTrimmedLength)(T,U,this._cols)}}for(let N=0;N<T.length;N++)A[N]<y&&T[N].setCell(A[N],w);let B=P-G;for(;B-- >0;)this.ybase===0?this.y<_-1?(this.y++,this.lines.pop()):(this.ybase++,this.ydisp++):this.ybase<Math.min(this.lines.maxLength,this.lines.length+C)-_&&(this.ybase===this.ydisp&&this.ydisp++,this.ybase++);this.savedY=Math.min(this.savedY+P,this.ybase+_-1)}if(S.length>0){const E=[],k=[];for(let I=0;I<this.lines.length;I++)k.push(this.lines.get(I));const T=this.lines.length;let x=T-1,M=0,A=S[M];this.lines.length=Math.min(this.lines.maxLength,this.lines.length+C);let P=0;for(let I=Math.min(this.lines.maxLength-1,T+C-1);I>=0;I--)if(A&&A.start>x+P){for(let j=A.newLines.length-1;j>=0;j--)this.lines.set(I--,A.newLines[j]);I++,E.push({index:x+1,amount:A.newLines.length}),P+=A.newLines.length,A=S[++M]}else this.lines.set(I,k[x--]);let G=0;for(let I=E.length-1;I>=0;I--)E[I].index+=G,this.lines.onInsertEmitter.fire(E[I]),G+=E[I].amount;const V=Math.max(0,T+C-this.lines.maxLength);V>0&&this.lines.onTrimEmitter.fire(V)}}translateBufferLineToString(y,_,w=0,S){const C=this.lines.get(y);return C?C.translateToString(_,w,S):\"\"}getWrappedRangeForLine(y){let _=y,w=y;for(;_>0&&this.lines.get(_).isWrapped;)_--;for(;w+1<this.lines.length&&this.lines.get(w+1).isWrapped;)w++;return{first:_,last:w}}setupTabStops(y){for(y!=null?this.tabs[y]||(y=this.prevStop(y)):(this.tabs={},y=0);y<this._cols;y+=this._optionsService.rawOptions.tabStopWidth)this.tabs[y]=!0}prevStop(y){for(y==null&&(y=this.x);!this.tabs[--y]&&y>0;);return y>=this._cols?this._cols-1:y<0?0:y}nextStop(y){for(y==null&&(y=this.x);!this.tabs[++y]&&y<this._cols;);return y>=this._cols?this._cols-1:y<0?0:y}clearMarkers(y){this._isClearing=!0;for(let _=0;_<this.markers.length;_++)this.markers[_].line===y&&(this.markers[_].dispose(),this.markers.splice(_--,1));this._isClearing=!1}clearAllMarkers(){this._isClearing=!0;for(let y=0;y<this.markers.length;y++)this.markers[y].dispose(),this.markers.splice(y--,1);this._isClearing=!1}addMarker(y){const _=new g.Marker(y);return this.markers.push(_),_.register(this.lines.onTrim(w=>{_.line-=w,_.line<0&&_.dispose()})),_.register(this.lines.onInsert(w=>{_.line>=w.index&&(_.line+=w.amount)})),_.register(this.lines.onDelete(w=>{_.line>=w.index&&_.line<w.index+w.amount&&_.dispose(),_.line>w.index&&(_.line-=w.amount)})),_.register(_.onDispose(()=>this._removeMarker(_))),_}_removeMarker(y){this._isClearing||this.markers.splice(this.markers.indexOf(y),1)}}},8437:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferLine=i.DEFAULT_ATTR_DATA=void 0;const u=l(3734),f=l(511),d=l(643),h=l(482);i.DEFAULT_ATTR_DATA=Object.freeze(new u.AttributeData);let v=0;class b{constructor(g,m,y=!1){this.isWrapped=y,this._combined={},this._extendedAttrs={},this._data=new Uint32Array(3*g);const _=m||f.CellData.fromCharData([0,d.NULL_CELL_CHAR,d.NULL_CELL_WIDTH,d.NULL_CELL_CODE]);for(let w=0;w<g;++w)this.setCell(w,_);this.length=g}get(g){const m=this._data[3*g+0],y=2097151&m;return[this._data[3*g+1],2097152&m?this._combined[g]:y?(0,h.stringFromCodePoint)(y):\"\",m>>22,2097152&m?this._combined[g].charCodeAt(this._combined[g].length-1):y]}set(g,m){this._data[3*g+1]=m[d.CHAR_DATA_ATTR_INDEX],m[d.CHAR_DATA_CHAR_INDEX].length>1?(this._combined[g]=m[1],this._data[3*g+0]=2097152|g|m[d.CHAR_DATA_WIDTH_INDEX]<<22):this._data[3*g+0]=m[d.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|m[d.CHAR_DATA_WIDTH_INDEX]<<22}getWidth(g){return this._data[3*g+0]>>22}hasWidth(g){return 12582912&this._data[3*g+0]}getFg(g){return this._data[3*g+1]}getBg(g){return this._data[3*g+2]}hasContent(g){return 4194303&this._data[3*g+0]}getCodePoint(g){const m=this._data[3*g+0];return 2097152&m?this._combined[g].charCodeAt(this._combined[g].length-1):2097151&m}isCombined(g){return 2097152&this._data[3*g+0]}getString(g){const m=this._data[3*g+0];return 2097152&m?this._combined[g]:2097151&m?(0,h.stringFromCodePoint)(2097151&m):\"\"}isProtected(g){return 536870912&this._data[3*g+2]}loadCell(g,m){return v=3*g,m.content=this._data[v+0],m.fg=this._data[v+1],m.bg=this._data[v+2],2097152&m.content&&(m.combinedData=this._combined[g]),268435456&m.bg&&(m.extended=this._extendedAttrs[g]),m}setCell(g,m){2097152&m.content&&(this._combined[g]=m.combinedData),268435456&m.bg&&(this._extendedAttrs[g]=m.extended),this._data[3*g+0]=m.content,this._data[3*g+1]=m.fg,this._data[3*g+2]=m.bg}setCellFromCodepoint(g,m,y,_){268435456&_.bg&&(this._extendedAttrs[g]=_.extended),this._data[3*g+0]=m|y<<22,this._data[3*g+1]=_.fg,this._data[3*g+2]=_.bg}addCodepointToCell(g,m,y){let _=this._data[3*g+0];2097152&_?this._combined[g]+=(0,h.stringFromCodePoint)(m):2097151&_?(this._combined[g]=(0,h.stringFromCodePoint)(2097151&_)+(0,h.stringFromCodePoint)(m),_&=-2097152,_|=2097152):_=m|4194304,y&&(_&=-12582913,_|=y<<22),this._data[3*g+0]=_}insertCells(g,m,y){if((g%=this.length)&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g-1,0,1,y),m<this.length-g){const _=new f.CellData;for(let w=this.length-g-m-1;w>=0;--w)this.setCell(g+m+w,this.loadCell(g+w,_));for(let w=0;w<m;++w)this.setCell(g+w,y)}else for(let _=g;_<this.length;++_)this.setCell(_,y);this.getWidth(this.length-1)===2&&this.setCellFromCodepoint(this.length-1,0,1,y)}deleteCells(g,m,y){if(g%=this.length,m<this.length-g){const _=new f.CellData;for(let w=0;w<this.length-g-m;++w)this.setCell(g+w,this.loadCell(g+m+w,_));for(let w=this.length-m;w<this.length;++w)this.setCell(w,y)}else for(let _=g;_<this.length;++_)this.setCell(_,y);g&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g-1,0,1,y),this.getWidth(g)!==0||this.hasContent(g)||this.setCellFromCodepoint(g,0,1,y)}replaceCells(g,m,y,_=!1){if(_)for(g&&this.getWidth(g-1)===2&&!this.isProtected(g-1)&&this.setCellFromCodepoint(g-1,0,1,y),m<this.length&&this.getWidth(m-1)===2&&!this.isProtected(m)&&this.setCellFromCodepoint(m,0,1,y);g<m&&g<this.length;)this.isProtected(g)||this.setCell(g,y),g++;else for(g&&this.getWidth(g-1)===2&&this.setCellFromCodepoint(g-1,0,1,y),m<this.length&&this.getWidth(m-1)===2&&this.setCellFromCodepoint(m,0,1,y);g<m&&g<this.length;)this.setCell(g++,y)}resize(g,m){if(g===this.length)return 4*this._data.length*2<this._data.buffer.byteLength;const y=3*g;if(g>this.length){if(this._data.buffer.byteLength>=4*y)this._data=new Uint32Array(this._data.buffer,0,y);else{const _=new Uint32Array(y);_.set(this._data),this._data=_}for(let _=this.length;_<g;++_)this.setCell(_,m)}else{this._data=this._data.subarray(0,y);const _=Object.keys(this._combined);for(let S=0;S<_.length;S++){const C=parseInt(_[S],10);C>=g&&delete this._combined[C]}const w=Object.keys(this._extendedAttrs);for(let S=0;S<w.length;S++){const C=parseInt(w[S],10);C>=g&&delete this._extendedAttrs[C]}}return this.length=g,4*y*2<this._data.buffer.byteLength}cleanupMemory(){if(4*this._data.length*2<this._data.buffer.byteLength){const g=new Uint32Array(this._data.length);return g.set(this._data),this._data=g,1}return 0}fill(g,m=!1){if(m)for(let y=0;y<this.length;++y)this.isProtected(y)||this.setCell(y,g);else{this._combined={},this._extendedAttrs={};for(let y=0;y<this.length;++y)this.setCell(y,g)}}copyFrom(g){this.length!==g.length?this._data=new Uint32Array(g._data):this._data.set(g._data),this.length=g.length,this._combined={};for(const m in g._combined)this._combined[m]=g._combined[m];this._extendedAttrs={};for(const m in g._extendedAttrs)this._extendedAttrs[m]=g._extendedAttrs[m];this.isWrapped=g.isWrapped}clone(){const g=new b(0);g._data=new Uint32Array(this._data),g.length=this.length;for(const m in this._combined)g._combined[m]=this._combined[m];for(const m in this._extendedAttrs)g._extendedAttrs[m]=this._extendedAttrs[m];return g.isWrapped=this.isWrapped,g}getTrimmedLength(){for(let g=this.length-1;g>=0;--g)if(4194303&this._data[3*g+0])return g+(this._data[3*g+0]>>22);return 0}getNoBgTrimmedLength(){for(let g=this.length-1;g>=0;--g)if(4194303&this._data[3*g+0]||50331648&this._data[3*g+2])return g+(this._data[3*g+0]>>22);return 0}copyCellsFrom(g,m,y,_,w){const S=g._data;if(w)for(let E=_-1;E>=0;E--){for(let k=0;k<3;k++)this._data[3*(y+E)+k]=S[3*(m+E)+k];268435456&S[3*(m+E)+2]&&(this._extendedAttrs[y+E]=g._extendedAttrs[m+E])}else for(let E=0;E<_;E++){for(let k=0;k<3;k++)this._data[3*(y+E)+k]=S[3*(m+E)+k];268435456&S[3*(m+E)+2]&&(this._extendedAttrs[y+E]=g._extendedAttrs[m+E])}const C=Object.keys(g._combined);for(let E=0;E<C.length;E++){const k=parseInt(C[E],10);k>=m&&(this._combined[k-m+y]=g._combined[k])}}translateToString(g,m,y,_){m=m??0,y=y??this.length,g&&(y=Math.min(y,this.getTrimmedLength())),_&&(_.length=0);let w=\"\";for(;m<y;){const S=this._data[3*m+0],C=2097151&S,E=2097152&S?this._combined[m]:C?(0,h.stringFromCodePoint)(C):d.WHITESPACE_CELL_CHAR;if(w+=E,_)for(let k=0;k<E.length;++k)_.push(m);m+=S>>22||1}return _&&_.push(m),w}}i.BufferLine=b},4841:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.getRangeLength=void 0,i.getRangeLength=function(l,u){if(l.start.y>l.end.y)throw new Error(`Buffer range end (${l.end.x}, ${l.end.y}) cannot be before start (${l.start.x}, ${l.start.y})`);return u*(l.end.y-l.start.y)+(l.end.x-l.start.x+1)}},4634:(a,i)=>{function l(u,f,d){if(f===u.length-1)return u[f].getTrimmedLength();const h=!u[f].hasContent(d-1)&&u[f].getWidth(d-1)===1,v=u[f+1].getWidth(0)===2;return h&&v?d-1:d}Object.defineProperty(i,\"__esModule\",{value:!0}),i.getWrappedLineTrimmedLength=i.reflowSmallerGetNewLineLengths=i.reflowLargerApplyNewLayout=i.reflowLargerCreateNewLayout=i.reflowLargerGetLinesToRemove=void 0,i.reflowLargerGetLinesToRemove=function(u,f,d,h,v){const b=[];for(let p=0;p<u.length-1;p++){let g=p,m=u.get(++g);if(!m.isWrapped)continue;const y=[u.get(p)];for(;g<u.length&&m.isWrapped;)y.push(m),m=u.get(++g);if(h>=p&&h<g){p+=y.length-1;continue}let _=0,w=l(y,_,f),S=1,C=0;for(;S<y.length;){const k=l(y,S,f),T=k-C,x=d-w,M=Math.min(T,x);y[_].copyCellsFrom(y[S],C,w,M,!1),w+=M,w===d&&(_++,w=0),C+=M,C===k&&(S++,C=0),w===0&&_!==0&&y[_-1].getWidth(d-1)===2&&(y[_].copyCellsFrom(y[_-1],d-1,w++,1,!1),y[_-1].setCell(d-1,v))}y[_].replaceCells(w,d,v);let E=0;for(let k=y.length-1;k>0&&(k>_||y[k].getTrimmedLength()===0);k--)E++;E>0&&(b.push(p+y.length-E),b.push(E)),p+=y.length-1}return b},i.reflowLargerCreateNewLayout=function(u,f){const d=[];let h=0,v=f[h],b=0;for(let p=0;p<u.length;p++)if(v===p){const g=f[++h];u.onDeleteEmitter.fire({index:p-b,amount:g}),p+=g-1,b+=g,v=f[++h]}else d.push(p);return{layout:d,countRemoved:b}},i.reflowLargerApplyNewLayout=function(u,f){const d=[];for(let h=0;h<f.length;h++)d.push(u.get(f[h]));for(let h=0;h<d.length;h++)u.set(h,d[h]);u.length=f.length},i.reflowSmallerGetNewLineLengths=function(u,f,d){const h=[],v=u.map((m,y)=>l(u,y,f)).reduce((m,y)=>m+y);let b=0,p=0,g=0;for(;g<v;){if(v-g<d){h.push(v-g);break}b+=d;const m=l(u,p,f);b>m&&(b-=m,p++);const y=u[p].getWidth(b-1)===2;y&&b--;const _=y?d-1:d;h.push(_),g+=_}return h},i.getWrappedLineTrimmedLength=l},5295:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferSet=void 0;const u=l(8460),f=l(844),d=l(9092);class h extends f.Disposable{constructor(b,p){super(),this._optionsService=b,this._bufferService=p,this._onBufferActivate=this.register(new u.EventEmitter),this.onBufferActivate=this._onBufferActivate.event,this.reset(),this.register(this._optionsService.onSpecificOptionChange(\"scrollback\",()=>this.resize(this._bufferService.cols,this._bufferService.rows))),this.register(this._optionsService.onSpecificOptionChange(\"tabStopWidth\",()=>this.setupTabStops()))}reset(){this._normal=new d.Buffer(!0,this._optionsService,this._bufferService),this._normal.fillViewportRows(),this._alt=new d.Buffer(!1,this._optionsService,this._bufferService),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}),this.setupTabStops()}get alt(){return this._alt}get active(){return this._activeBuffer}get normal(){return this._normal}activateNormalBuffer(){this._activeBuffer!==this._normal&&(this._normal.x=this._alt.x,this._normal.y=this._alt.y,this._alt.clearAllMarkers(),this._alt.clear(),this._activeBuffer=this._normal,this._onBufferActivate.fire({activeBuffer:this._normal,inactiveBuffer:this._alt}))}activateAltBuffer(b){this._activeBuffer!==this._alt&&(this._alt.fillViewportRows(b),this._alt.x=this._normal.x,this._alt.y=this._normal.y,this._activeBuffer=this._alt,this._onBufferActivate.fire({activeBuffer:this._alt,inactiveBuffer:this._normal}))}resize(b,p){this._normal.resize(b,p),this._alt.resize(b,p),this.setupTabStops(b)}setupTabStops(b){this._normal.setupTabStops(b),this._alt.setupTabStops(b)}}i.BufferSet=h},511:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.CellData=void 0;const u=l(482),f=l(643),d=l(3734);class h extends d.AttributeData{constructor(){super(...arguments),this.content=0,this.fg=0,this.bg=0,this.extended=new d.ExtendedAttrs,this.combinedData=\"\"}static fromCharData(b){const p=new h;return p.setFromCharData(b),p}isCombined(){return 2097152&this.content}getWidth(){return this.content>>22}getChars(){return 2097152&this.content?this.combinedData:2097151&this.content?(0,u.stringFromCodePoint)(2097151&this.content):\"\"}getCode(){return this.isCombined()?this.combinedData.charCodeAt(this.combinedData.length-1):2097151&this.content}setFromCharData(b){this.fg=b[f.CHAR_DATA_ATTR_INDEX],this.bg=0;let p=!1;if(b[f.CHAR_DATA_CHAR_INDEX].length>2)p=!0;else if(b[f.CHAR_DATA_CHAR_INDEX].length===2){const g=b[f.CHAR_DATA_CHAR_INDEX].charCodeAt(0);if(55296<=g&&g<=56319){const m=b[f.CHAR_DATA_CHAR_INDEX].charCodeAt(1);56320<=m&&m<=57343?this.content=1024*(g-55296)+m-56320+65536|b[f.CHAR_DATA_WIDTH_INDEX]<<22:p=!0}else p=!0}else this.content=b[f.CHAR_DATA_CHAR_INDEX].charCodeAt(0)|b[f.CHAR_DATA_WIDTH_INDEX]<<22;p&&(this.combinedData=b[f.CHAR_DATA_CHAR_INDEX],this.content=2097152|b[f.CHAR_DATA_WIDTH_INDEX]<<22)}getAsCharData(){return[this.fg,this.getChars(),this.getWidth(),this.getCode()]}}i.CellData=h},643:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.WHITESPACE_CELL_CODE=i.WHITESPACE_CELL_WIDTH=i.WHITESPACE_CELL_CHAR=i.NULL_CELL_CODE=i.NULL_CELL_WIDTH=i.NULL_CELL_CHAR=i.CHAR_DATA_CODE_INDEX=i.CHAR_DATA_WIDTH_INDEX=i.CHAR_DATA_CHAR_INDEX=i.CHAR_DATA_ATTR_INDEX=i.DEFAULT_EXT=i.DEFAULT_ATTR=i.DEFAULT_COLOR=void 0,i.DEFAULT_COLOR=0,i.DEFAULT_ATTR=256|i.DEFAULT_COLOR<<9,i.DEFAULT_EXT=0,i.CHAR_DATA_ATTR_INDEX=0,i.CHAR_DATA_CHAR_INDEX=1,i.CHAR_DATA_WIDTH_INDEX=2,i.CHAR_DATA_CODE_INDEX=3,i.NULL_CELL_CHAR=\"\",i.NULL_CELL_WIDTH=1,i.NULL_CELL_CODE=0,i.WHITESPACE_CELL_CHAR=\" \",i.WHITESPACE_CELL_WIDTH=1,i.WHITESPACE_CELL_CODE=32},4863:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.Marker=void 0;const u=l(8460),f=l(844);class d{get id(){return this._id}constructor(v){this.line=v,this.isDisposed=!1,this._disposables=[],this._id=d._nextId++,this._onDispose=this.register(new u.EventEmitter),this.onDispose=this._onDispose.event}dispose(){this.isDisposed||(this.isDisposed=!0,this.line=-1,this._onDispose.fire(),(0,f.disposeArray)(this._disposables),this._disposables.length=0)}register(v){return this._disposables.push(v),v}}i.Marker=d,d._nextId=1},7116:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.DEFAULT_CHARSET=i.CHARSETS=void 0,i.CHARSETS={},i.DEFAULT_CHARSET=i.CHARSETS.B,i.CHARSETS[0]={\"`\":\"◆\",a:\"▒\",b:\"␉\",c:\"␌\",d:\"␍\",e:\"␊\",f:\"°\",g:\"±\",h:\"␤\",i:\"␋\",j:\"┘\",k:\"┐\",l:\"┌\",m:\"└\",n:\"┼\",o:\"⎺\",p:\"⎻\",q:\"─\",r:\"⎼\",s:\"⎽\",t:\"├\",u:\"┤\",v:\"┴\",w:\"┬\",x:\"│\",y:\"≤\",z:\"≥\",\"{\":\"π\",\"|\":\"≠\",\"}\":\"£\",\"~\":\"·\"},i.CHARSETS.A={\"#\":\"£\"},i.CHARSETS.B=void 0,i.CHARSETS[4]={\"#\":\"£\",\"@\":\"¾\",\"[\":\"ij\",\"\\\\\":\"½\",\"]\":\"|\",\"{\":\"¨\",\"|\":\"f\",\"}\":\"¼\",\"~\":\"´\"},i.CHARSETS.C=i.CHARSETS[5]={\"[\":\"Ä\",\"\\\\\":\"Ö\",\"]\":\"Å\",\"^\":\"Ü\",\"`\":\"é\",\"{\":\"ä\",\"|\":\"ö\",\"}\":\"å\",\"~\":\"ü\"},i.CHARSETS.R={\"#\":\"£\",\"@\":\"à\",\"[\":\"°\",\"\\\\\":\"ç\",\"]\":\"§\",\"{\":\"é\",\"|\":\"ù\",\"}\":\"è\",\"~\":\"¨\"},i.CHARSETS.Q={\"@\":\"à\",\"[\":\"â\",\"\\\\\":\"ç\",\"]\":\"ê\",\"^\":\"î\",\"`\":\"ô\",\"{\":\"é\",\"|\":\"ù\",\"}\":\"è\",\"~\":\"û\"},i.CHARSETS.K={\"@\":\"§\",\"[\":\"Ä\",\"\\\\\":\"Ö\",\"]\":\"Ü\",\"{\":\"ä\",\"|\":\"ö\",\"}\":\"ü\",\"~\":\"ß\"},i.CHARSETS.Y={\"#\":\"£\",\"@\":\"§\",\"[\":\"°\",\"\\\\\":\"ç\",\"]\":\"é\",\"`\":\"ù\",\"{\":\"à\",\"|\":\"ò\",\"}\":\"è\",\"~\":\"ì\"},i.CHARSETS.E=i.CHARSETS[6]={\"@\":\"Ä\",\"[\":\"Æ\",\"\\\\\":\"Ø\",\"]\":\"Å\",\"^\":\"Ü\",\"`\":\"ä\",\"{\":\"æ\",\"|\":\"ø\",\"}\":\"å\",\"~\":\"ü\"},i.CHARSETS.Z={\"#\":\"£\",\"@\":\"§\",\"[\":\"¡\",\"\\\\\":\"Ñ\",\"]\":\"¿\",\"{\":\"°\",\"|\":\"ñ\",\"}\":\"ç\"},i.CHARSETS.H=i.CHARSETS[7]={\"@\":\"É\",\"[\":\"Ä\",\"\\\\\":\"Ö\",\"]\":\"Å\",\"^\":\"Ü\",\"`\":\"é\",\"{\":\"ä\",\"|\":\"ö\",\"}\":\"å\",\"~\":\"ü\"},i.CHARSETS[\"=\"]={\"#\":\"ù\",\"@\":\"à\",\"[\":\"é\",\"\\\\\":\"ç\",\"]\":\"ê\",\"^\":\"î\",_:\"è\",\"`\":\"ô\",\"{\":\"ä\",\"|\":\"ö\",\"}\":\"ü\",\"~\":\"û\"}},2584:(a,i)=>{var l,u,f;Object.defineProperty(i,\"__esModule\",{value:!0}),i.C1_ESCAPED=i.C1=i.C0=void 0,function(d){d.NUL=\"\\0\",d.SOH=\"\u0001\",d.STX=\"\u0002\",d.ETX=\"\u0003\",d.EOT=\"\u0004\",d.ENQ=\"\u0005\",d.ACK=\"\u0006\",d.BEL=\"\\x07\",d.BS=\"\\b\",d.HT=\"\t\",d.LF=`\n`,d.VT=\"\\v\",d.FF=\"\\f\",d.CR=\"\\r\",d.SO=\"\u000e\",d.SI=\"\u000f\",d.DLE=\"\u0010\",d.DC1=\"\u0011\",d.DC2=\"\u0012\",d.DC3=\"\u0013\",d.DC4=\"\u0014\",d.NAK=\"\u0015\",d.SYN=\"\u0016\",d.ETB=\"\u0017\",d.CAN=\"\u0018\",d.EM=\"\u0019\",d.SUB=\"\u001a\",d.ESC=\"\\x1B\",d.FS=\"\u001c\",d.GS=\"\u001d\",d.RS=\"\u001e\",d.US=\"\u001f\",d.SP=\" \",d.DEL=\"\"}(l||(i.C0=l={})),function(d){d.PAD=\"\",d.HOP=\"\",d.BPH=\"\",d.NBH=\"\",d.IND=\"\",d.NEL=\"\",d.SSA=\"\",d.ESA=\"\",d.HTS=\"\",d.HTJ=\"\",d.VTS=\"\",d.PLD=\"\",d.PLU=\"\",d.RI=\"\",d.SS2=\"\",d.SS3=\"\",d.DCS=\"\",d.PU1=\"\",d.PU2=\"\",d.STS=\"\",d.CCH=\"\",d.MW=\"\",d.SPA=\"\",d.EPA=\"\",d.SOS=\"\",d.SGCI=\"\",d.SCI=\"\",d.CSI=\"\",d.ST=\"\",d.OSC=\"\",d.PM=\"\",d.APC=\"\"}(u||(i.C1=u={})),function(d){d.ST=`${l.ESC}\\\\`}(f||(i.C1_ESCAPED=f={}))},7399:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.evaluateKeyboardEvent=void 0;const u=l(2584),f={48:[\"0\",\")\"],49:[\"1\",\"!\"],50:[\"2\",\"@\"],51:[\"3\",\"#\"],52:[\"4\",\"$\"],53:[\"5\",\"%\"],54:[\"6\",\"^\"],55:[\"7\",\"&\"],56:[\"8\",\"*\"],57:[\"9\",\"(\"],186:[\";\",\":\"],187:[\"=\",\"+\"],188:[\",\",\"<\"],189:[\"-\",\"_\"],190:[\".\",\">\"],191:[\"/\",\"?\"],192:[\"`\",\"~\"],219:[\"[\",\"{\"],220:[\"\\\\\",\"|\"],221:[\"]\",\"}\"],222:[\"'\",'\"']};i.evaluateKeyboardEvent=function(d,h,v,b){const p={type:0,cancel:!1,key:void 0},g=(d.shiftKey?1:0)|(d.altKey?2:0)|(d.ctrlKey?4:0)|(d.metaKey?8:0);switch(d.keyCode){case 0:d.key===\"UIKeyInputUpArrow\"?p.key=h?u.C0.ESC+\"OA\":u.C0.ESC+\"[A\":d.key===\"UIKeyInputLeftArrow\"?p.key=h?u.C0.ESC+\"OD\":u.C0.ESC+\"[D\":d.key===\"UIKeyInputRightArrow\"?p.key=h?u.C0.ESC+\"OC\":u.C0.ESC+\"[C\":d.key===\"UIKeyInputDownArrow\"&&(p.key=h?u.C0.ESC+\"OB\":u.C0.ESC+\"[B\");break;case 8:p.key=d.ctrlKey?\"\\b\":u.C0.DEL,d.altKey&&(p.key=u.C0.ESC+p.key);break;case 9:if(d.shiftKey){p.key=u.C0.ESC+\"[Z\";break}p.key=u.C0.HT,p.cancel=!0;break;case 13:p.key=d.altKey?u.C0.ESC+u.C0.CR:u.C0.CR,p.cancel=!0;break;case 27:p.key=u.C0.ESC,d.altKey&&(p.key=u.C0.ESC+u.C0.ESC),p.cancel=!0;break;case 37:if(d.metaKey)break;g?(p.key=u.C0.ESC+\"[1;\"+(g+1)+\"D\",p.key===u.C0.ESC+\"[1;3D\"&&(p.key=u.C0.ESC+(v?\"b\":\"[1;5D\"))):p.key=h?u.C0.ESC+\"OD\":u.C0.ESC+\"[D\";break;case 39:if(d.metaKey)break;g?(p.key=u.C0.ESC+\"[1;\"+(g+1)+\"C\",p.key===u.C0.ESC+\"[1;3C\"&&(p.key=u.C0.ESC+(v?\"f\":\"[1;5C\"))):p.key=h?u.C0.ESC+\"OC\":u.C0.ESC+\"[C\";break;case 38:if(d.metaKey)break;g?(p.key=u.C0.ESC+\"[1;\"+(g+1)+\"A\",v||p.key!==u.C0.ESC+\"[1;3A\"||(p.key=u.C0.ESC+\"[1;5A\")):p.key=h?u.C0.ESC+\"OA\":u.C0.ESC+\"[A\";break;case 40:if(d.metaKey)break;g?(p.key=u.C0.ESC+\"[1;\"+(g+1)+\"B\",v||p.key!==u.C0.ESC+\"[1;3B\"||(p.key=u.C0.ESC+\"[1;5B\")):p.key=h?u.C0.ESC+\"OB\":u.C0.ESC+\"[B\";break;case 45:d.shiftKey||d.ctrlKey||(p.key=u.C0.ESC+\"[2~\");break;case 46:p.key=g?u.C0.ESC+\"[3;\"+(g+1)+\"~\":u.C0.ESC+\"[3~\";break;case 36:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"H\":h?u.C0.ESC+\"OH\":u.C0.ESC+\"[H\";break;case 35:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"F\":h?u.C0.ESC+\"OF\":u.C0.ESC+\"[F\";break;case 33:d.shiftKey?p.type=2:d.ctrlKey?p.key=u.C0.ESC+\"[5;\"+(g+1)+\"~\":p.key=u.C0.ESC+\"[5~\";break;case 34:d.shiftKey?p.type=3:d.ctrlKey?p.key=u.C0.ESC+\"[6;\"+(g+1)+\"~\":p.key=u.C0.ESC+\"[6~\";break;case 112:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"P\":u.C0.ESC+\"OP\";break;case 113:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"Q\":u.C0.ESC+\"OQ\";break;case 114:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"R\":u.C0.ESC+\"OR\";break;case 115:p.key=g?u.C0.ESC+\"[1;\"+(g+1)+\"S\":u.C0.ESC+\"OS\";break;case 116:p.key=g?u.C0.ESC+\"[15;\"+(g+1)+\"~\":u.C0.ESC+\"[15~\";break;case 117:p.key=g?u.C0.ESC+\"[17;\"+(g+1)+\"~\":u.C0.ESC+\"[17~\";break;case 118:p.key=g?u.C0.ESC+\"[18;\"+(g+1)+\"~\":u.C0.ESC+\"[18~\";break;case 119:p.key=g?u.C0.ESC+\"[19;\"+(g+1)+\"~\":u.C0.ESC+\"[19~\";break;case 120:p.key=g?u.C0.ESC+\"[20;\"+(g+1)+\"~\":u.C0.ESC+\"[20~\";break;case 121:p.key=g?u.C0.ESC+\"[21;\"+(g+1)+\"~\":u.C0.ESC+\"[21~\";break;case 122:p.key=g?u.C0.ESC+\"[23;\"+(g+1)+\"~\":u.C0.ESC+\"[23~\";break;case 123:p.key=g?u.C0.ESC+\"[24;\"+(g+1)+\"~\":u.C0.ESC+\"[24~\";break;default:if(!d.ctrlKey||d.shiftKey||d.altKey||d.metaKey)if(v&&!b||!d.altKey||d.metaKey)!v||d.altKey||d.ctrlKey||d.shiftKey||!d.metaKey?d.key&&!d.ctrlKey&&!d.altKey&&!d.metaKey&&d.keyCode>=48&&d.key.length===1?p.key=d.key:d.key&&d.ctrlKey&&(d.key===\"_\"&&(p.key=u.C0.US),d.key===\"@\"&&(p.key=u.C0.NUL)):d.keyCode===65&&(p.type=1);else{const m=f[d.keyCode],y=m==null?void 0:m[d.shiftKey?1:0];if(y)p.key=u.C0.ESC+y;else if(d.keyCode>=65&&d.keyCode<=90){const _=d.ctrlKey?d.keyCode-64:d.keyCode+32;let w=String.fromCharCode(_);d.shiftKey&&(w=w.toUpperCase()),p.key=u.C0.ESC+w}else if(d.keyCode===32)p.key=u.C0.ESC+(d.ctrlKey?u.C0.NUL:\" \");else if(d.key===\"Dead\"&&d.code.startsWith(\"Key\")){let _=d.code.slice(3,4);d.shiftKey||(_=_.toLowerCase()),p.key=u.C0.ESC+_,p.cancel=!0}}else d.keyCode>=65&&d.keyCode<=90?p.key=String.fromCharCode(d.keyCode-64):d.keyCode===32?p.key=u.C0.NUL:d.keyCode>=51&&d.keyCode<=55?p.key=String.fromCharCode(d.keyCode-51+27):d.keyCode===56?p.key=u.C0.DEL:d.keyCode===219?p.key=u.C0.ESC:d.keyCode===220?p.key=u.C0.FS:d.keyCode===221&&(p.key=u.C0.GS)}return p}},482:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.Utf8ToUtf32=i.StringToUtf32=i.utf32ToString=i.stringFromCodePoint=void 0,i.stringFromCodePoint=function(l){return l>65535?(l-=65536,String.fromCharCode(55296+(l>>10))+String.fromCharCode(l%1024+56320)):String.fromCharCode(l)},i.utf32ToString=function(l,u=0,f=l.length){let d=\"\";for(let h=u;h<f;++h){let v=l[h];v>65535?(v-=65536,d+=String.fromCharCode(55296+(v>>10))+String.fromCharCode(v%1024+56320)):d+=String.fromCharCode(v)}return d},i.StringToUtf32=class{constructor(){this._interim=0}clear(){this._interim=0}decode(l,u){const f=l.length;if(!f)return 0;let d=0,h=0;if(this._interim){const v=l.charCodeAt(h++);56320<=v&&v<=57343?u[d++]=1024*(this._interim-55296)+v-56320+65536:(u[d++]=this._interim,u[d++]=v),this._interim=0}for(let v=h;v<f;++v){const b=l.charCodeAt(v);if(55296<=b&&b<=56319){if(++v>=f)return this._interim=b,d;const p=l.charCodeAt(v);56320<=p&&p<=57343?u[d++]=1024*(b-55296)+p-56320+65536:(u[d++]=b,u[d++]=p)}else b!==65279&&(u[d++]=b)}return d}},i.Utf8ToUtf32=class{constructor(){this.interim=new Uint8Array(3)}clear(){this.interim.fill(0)}decode(l,u){const f=l.length;if(!f)return 0;let d,h,v,b,p=0,g=0,m=0;if(this.interim[0]){let w=!1,S=this.interim[0];S&=(224&S)==192?31:(240&S)==224?15:7;let C,E=0;for(;(C=63&this.interim[++E])&&E<4;)S<<=6,S|=C;const k=(224&this.interim[0])==192?2:(240&this.interim[0])==224?3:4,T=k-E;for(;m<T;){if(m>=f)return 0;if(C=l[m++],(192&C)!=128){m--,w=!0;break}this.interim[E++]=C,S<<=6,S|=63&C}w||(k===2?S<128?m--:u[p++]=S:k===3?S<2048||S>=55296&&S<=57343||S===65279||(u[p++]=S):S<65536||S>1114111||(u[p++]=S)),this.interim.fill(0)}const y=f-4;let _=m;for(;_<f;){for(;!(!(_<y)||128&(d=l[_])||128&(h=l[_+1])||128&(v=l[_+2])||128&(b=l[_+3]));)u[p++]=d,u[p++]=h,u[p++]=v,u[p++]=b,_+=4;if(d=l[_++],d<128)u[p++]=d;else if((224&d)==192){if(_>=f)return this.interim[0]=d,p;if(h=l[_++],(192&h)!=128){_--;continue}if(g=(31&d)<<6|63&h,g<128){_--;continue}u[p++]=g}else if((240&d)==224){if(_>=f)return this.interim[0]=d,p;if(h=l[_++],(192&h)!=128){_--;continue}if(_>=f)return this.interim[0]=d,this.interim[1]=h,p;if(v=l[_++],(192&v)!=128){_--;continue}if(g=(15&d)<<12|(63&h)<<6|63&v,g<2048||g>=55296&&g<=57343||g===65279)continue;u[p++]=g}else if((248&d)==240){if(_>=f)return this.interim[0]=d,p;if(h=l[_++],(192&h)!=128){_--;continue}if(_>=f)return this.interim[0]=d,this.interim[1]=h,p;if(v=l[_++],(192&v)!=128){_--;continue}if(_>=f)return this.interim[0]=d,this.interim[1]=h,this.interim[2]=v,p;if(b=l[_++],(192&b)!=128){_--;continue}if(g=(7&d)<<18|(63&h)<<12|(63&v)<<6|63&b,g<65536||g>1114111)continue;u[p++]=g}}return p}}},225:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.UnicodeV6=void 0;const u=l(1480),f=[[768,879],[1155,1158],[1160,1161],[1425,1469],[1471,1471],[1473,1474],[1476,1477],[1479,1479],[1536,1539],[1552,1557],[1611,1630],[1648,1648],[1750,1764],[1767,1768],[1770,1773],[1807,1807],[1809,1809],[1840,1866],[1958,1968],[2027,2035],[2305,2306],[2364,2364],[2369,2376],[2381,2381],[2385,2388],[2402,2403],[2433,2433],[2492,2492],[2497,2500],[2509,2509],[2530,2531],[2561,2562],[2620,2620],[2625,2626],[2631,2632],[2635,2637],[2672,2673],[2689,2690],[2748,2748],[2753,2757],[2759,2760],[2765,2765],[2786,2787],[2817,2817],[2876,2876],[2879,2879],[2881,2883],[2893,2893],[2902,2902],[2946,2946],[3008,3008],[3021,3021],[3134,3136],[3142,3144],[3146,3149],[3157,3158],[3260,3260],[3263,3263],[3270,3270],[3276,3277],[3298,3299],[3393,3395],[3405,3405],[3530,3530],[3538,3540],[3542,3542],[3633,3633],[3636,3642],[3655,3662],[3761,3761],[3764,3769],[3771,3772],[3784,3789],[3864,3865],[3893,3893],[3895,3895],[3897,3897],[3953,3966],[3968,3972],[3974,3975],[3984,3991],[3993,4028],[4038,4038],[4141,4144],[4146,4146],[4150,4151],[4153,4153],[4184,4185],[4448,4607],[4959,4959],[5906,5908],[5938,5940],[5970,5971],[6002,6003],[6068,6069],[6071,6077],[6086,6086],[6089,6099],[6109,6109],[6155,6157],[6313,6313],[6432,6434],[6439,6440],[6450,6450],[6457,6459],[6679,6680],[6912,6915],[6964,6964],[6966,6970],[6972,6972],[6978,6978],[7019,7027],[7616,7626],[7678,7679],[8203,8207],[8234,8238],[8288,8291],[8298,8303],[8400,8431],[12330,12335],[12441,12442],[43014,43014],[43019,43019],[43045,43046],[64286,64286],[65024,65039],[65056,65059],[65279,65279],[65529,65531]],d=[[68097,68099],[68101,68102],[68108,68111],[68152,68154],[68159,68159],[119143,119145],[119155,119170],[119173,119179],[119210,119213],[119362,119364],[917505,917505],[917536,917631],[917760,917999]];let h;i.UnicodeV6=class{constructor(){if(this.version=\"6\",!h){h=new Uint8Array(65536),h.fill(1),h[0]=0,h.fill(0,1,32),h.fill(0,127,160),h.fill(2,4352,4448),h[9001]=2,h[9002]=2,h.fill(2,11904,42192),h[12351]=1,h.fill(2,44032,55204),h.fill(2,63744,64256),h.fill(2,65040,65050),h.fill(2,65072,65136),h.fill(2,65280,65377),h.fill(2,65504,65511);for(let v=0;v<f.length;++v)h.fill(0,f[v][0],f[v][1]+1)}}wcwidth(v){return v<32?0:v<127?1:v<65536?h[v]:function(b,p){let g,m=0,y=p.length-1;if(b<p[0][0]||b>p[y][1])return!1;for(;y>=m;)if(g=m+y>>1,b>p[g][1])m=g+1;else{if(!(b<p[g][0]))return!0;y=g-1}return!1}(v,d)?0:v>=131072&&v<=196605||v>=196608&&v<=262141?2:1}charProperties(v,b){let p=this.wcwidth(v),g=p===0&&b!==0;if(g){const m=u.UnicodeService.extractWidth(b);m===0?g=!1:m>p&&(p=m)}return u.UnicodeService.createPropertyValue(0,p,g)}}},5981:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.WriteBuffer=void 0;const u=l(8460),f=l(844);class d extends f.Disposable{constructor(v){super(),this._action=v,this._writeBuffer=[],this._callbacks=[],this._pendingData=0,this._bufferOffset=0,this._isSyncWriting=!1,this._syncCalls=0,this._didUserInput=!1,this._onWriteParsed=this.register(new u.EventEmitter),this.onWriteParsed=this._onWriteParsed.event}handleUserInput(){this._didUserInput=!0}writeSync(v,b){if(b!==void 0&&this._syncCalls>b)return void(this._syncCalls=0);if(this._pendingData+=v.length,this._writeBuffer.push(v),this._callbacks.push(void 0),this._syncCalls++,this._isSyncWriting)return;let p;for(this._isSyncWriting=!0;p=this._writeBuffer.shift();){this._action(p);const g=this._callbacks.shift();g&&g()}this._pendingData=0,this._bufferOffset=2147483647,this._isSyncWriting=!1,this._syncCalls=0}write(v,b){if(this._pendingData>5e7)throw new Error(\"write data discarded, use flow control to avoid losing data\");if(!this._writeBuffer.length){if(this._bufferOffset=0,this._didUserInput)return this._didUserInput=!1,this._pendingData+=v.length,this._writeBuffer.push(v),this._callbacks.push(b),void this._innerWrite();setTimeout(()=>this._innerWrite())}this._pendingData+=v.length,this._writeBuffer.push(v),this._callbacks.push(b)}_innerWrite(v=0,b=!0){const p=v||Date.now();for(;this._writeBuffer.length>this._bufferOffset;){const g=this._writeBuffer[this._bufferOffset],m=this._action(g,b);if(m){const _=w=>Date.now()-p>=12?setTimeout(()=>this._innerWrite(0,w)):this._innerWrite(p,w);return void m.catch(w=>(queueMicrotask(()=>{throw w}),Promise.resolve(!1))).then(_)}const y=this._callbacks[this._bufferOffset];if(y&&y(),this._bufferOffset++,this._pendingData-=g.length,Date.now()-p>=12)break}this._writeBuffer.length>this._bufferOffset?(this._bufferOffset>50&&(this._writeBuffer=this._writeBuffer.slice(this._bufferOffset),this._callbacks=this._callbacks.slice(this._bufferOffset),this._bufferOffset=0),setTimeout(()=>this._innerWrite())):(this._writeBuffer.length=0,this._callbacks.length=0,this._pendingData=0,this._bufferOffset=0),this._onWriteParsed.fire()}}i.WriteBuffer=d},5941:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.toRgbString=i.parseColor=void 0;const l=/^([\\da-f])\\/([\\da-f])\\/([\\da-f])$|^([\\da-f]{2})\\/([\\da-f]{2})\\/([\\da-f]{2})$|^([\\da-f]{3})\\/([\\da-f]{3})\\/([\\da-f]{3})$|^([\\da-f]{4})\\/([\\da-f]{4})\\/([\\da-f]{4})$/,u=/^[\\da-f]+$/;function f(d,h){const v=d.toString(16),b=v.length<2?\"0\"+v:v;switch(h){case 4:return v[0];case 8:return b;case 12:return(b+b).slice(0,3);default:return b+b}}i.parseColor=function(d){if(!d)return;let h=d.toLowerCase();if(h.indexOf(\"rgb:\")===0){h=h.slice(4);const v=l.exec(h);if(v){const b=v[1]?15:v[4]?255:v[7]?4095:65535;return[Math.round(parseInt(v[1]||v[4]||v[7]||v[10],16)/b*255),Math.round(parseInt(v[2]||v[5]||v[8]||v[11],16)/b*255),Math.round(parseInt(v[3]||v[6]||v[9]||v[12],16)/b*255)]}}else if(h.indexOf(\"#\")===0&&(h=h.slice(1),u.exec(h)&&[3,6,9,12].includes(h.length))){const v=h.length/3,b=[0,0,0];for(let p=0;p<3;++p){const g=parseInt(h.slice(v*p,v*p+v),16);b[p]=v===1?g<<4:v===2?g:v===3?g>>4:g>>8}return b}},i.toRgbString=function(d,h=16){const[v,b,p]=d;return`rgb:${f(v,h)}/${f(b,h)}/${f(p,h)}`}},5770:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.PAYLOAD_LIMIT=void 0,i.PAYLOAD_LIMIT=1e7},6351:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.DcsHandler=i.DcsParser=void 0;const u=l(482),f=l(8742),d=l(5770),h=[];i.DcsParser=class{constructor(){this._handlers=Object.create(null),this._active=h,this._ident=0,this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=h}registerHandler(b,p){this._handlers[b]===void 0&&(this._handlers[b]=[]);const g=this._handlers[b];return g.push(p),{dispose:()=>{const m=g.indexOf(p);m!==-1&&g.splice(m,1)}}}clearHandler(b){this._handlers[b]&&delete this._handlers[b]}setHandlerFallback(b){this._handlerFb=b}reset(){if(this._active.length)for(let b=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;b>=0;--b)this._active[b].unhook(!1);this._stack.paused=!1,this._active=h,this._ident=0}hook(b,p){if(this.reset(),this._ident=b,this._active=this._handlers[b]||h,this._active.length)for(let g=this._active.length-1;g>=0;g--)this._active[g].hook(p);else this._handlerFb(this._ident,\"HOOK\",p)}put(b,p,g){if(this._active.length)for(let m=this._active.length-1;m>=0;m--)this._active[m].put(b,p,g);else this._handlerFb(this._ident,\"PUT\",(0,u.utf32ToString)(b,p,g))}unhook(b,p=!0){if(this._active.length){let g=!1,m=this._active.length-1,y=!1;if(this._stack.paused&&(m=this._stack.loopPosition-1,g=p,y=this._stack.fallThrough,this._stack.paused=!1),!y&&g===!1){for(;m>=0&&(g=this._active[m].unhook(b),g!==!0);m--)if(g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=m,this._stack.fallThrough=!1,g;m--}for(;m>=0;m--)if(g=this._active[m].unhook(!1),g instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=m,this._stack.fallThrough=!0,g}else this._handlerFb(this._ident,\"UNHOOK\",b);this._active=h,this._ident=0}};const v=new f.Params;v.addParam(0),i.DcsHandler=class{constructor(b){this._handler=b,this._data=\"\",this._params=v,this._hitLimit=!1}hook(b){this._params=b.length>1||b.params[0]?b.clone():v,this._data=\"\",this._hitLimit=!1}put(b,p,g){this._hitLimit||(this._data+=(0,u.utf32ToString)(b,p,g),this._data.length>d.PAYLOAD_LIMIT&&(this._data=\"\",this._hitLimit=!0))}unhook(b){let p=!1;if(this._hitLimit)p=!1;else if(b&&(p=this._handler(this._data,this._params),p instanceof Promise))return p.then(g=>(this._params=v,this._data=\"\",this._hitLimit=!1,g));return this._params=v,this._data=\"\",this._hitLimit=!1,p}}},2015:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.EscapeSequenceParser=i.VT500_TRANSITION_TABLE=i.TransitionTable=void 0;const u=l(844),f=l(8742),d=l(6242),h=l(6351);class v{constructor(m){this.table=new Uint8Array(m)}setDefault(m,y){this.table.fill(m<<4|y)}add(m,y,_,w){this.table[y<<8|m]=_<<4|w}addMany(m,y,_,w){for(let S=0;S<m.length;S++)this.table[y<<8|m[S]]=_<<4|w}}i.TransitionTable=v;const b=160;i.VT500_TRANSITION_TABLE=function(){const g=new v(4095),m=Array.apply(null,Array(256)).map((E,k)=>k),y=(E,k)=>m.slice(E,k),_=y(32,127),w=y(0,24);w.push(25),w.push.apply(w,y(28,32));const S=y(0,14);let C;for(C in g.setDefault(1,0),g.addMany(_,0,2,0),S)g.addMany([24,26,153,154],C,3,0),g.addMany(y(128,144),C,3,0),g.addMany(y(144,152),C,3,0),g.add(156,C,0,0),g.add(27,C,11,1),g.add(157,C,4,8),g.addMany([152,158,159],C,0,7),g.add(155,C,11,3),g.add(144,C,11,9);return g.addMany(w,0,3,0),g.addMany(w,1,3,1),g.add(127,1,0,1),g.addMany(w,8,0,8),g.addMany(w,3,3,3),g.add(127,3,0,3),g.addMany(w,4,3,4),g.add(127,4,0,4),g.addMany(w,6,3,6),g.addMany(w,5,3,5),g.add(127,5,0,5),g.addMany(w,2,3,2),g.add(127,2,0,2),g.add(93,1,4,8),g.addMany(_,8,5,8),g.add(127,8,5,8),g.addMany([156,27,24,26,7],8,6,0),g.addMany(y(28,32),8,0,8),g.addMany([88,94,95],1,0,7),g.addMany(_,7,0,7),g.addMany(w,7,0,7),g.add(156,7,0,0),g.add(127,7,0,7),g.add(91,1,11,3),g.addMany(y(64,127),3,7,0),g.addMany(y(48,60),3,8,4),g.addMany([60,61,62,63],3,9,4),g.addMany(y(48,60),4,8,4),g.addMany(y(64,127),4,7,0),g.addMany([60,61,62,63],4,0,6),g.addMany(y(32,64),6,0,6),g.add(127,6,0,6),g.addMany(y(64,127),6,0,0),g.addMany(y(32,48),3,9,5),g.addMany(y(32,48),5,9,5),g.addMany(y(48,64),5,0,6),g.addMany(y(64,127),5,7,0),g.addMany(y(32,48),4,9,5),g.addMany(y(32,48),1,9,2),g.addMany(y(32,48),2,9,2),g.addMany(y(48,127),2,10,0),g.addMany(y(48,80),1,10,0),g.addMany(y(81,88),1,10,0),g.addMany([89,90,92],1,10,0),g.addMany(y(96,127),1,10,0),g.add(80,1,11,9),g.addMany(w,9,0,9),g.add(127,9,0,9),g.addMany(y(28,32),9,0,9),g.addMany(y(32,48),9,9,12),g.addMany(y(48,60),9,8,10),g.addMany([60,61,62,63],9,9,10),g.addMany(w,11,0,11),g.addMany(y(32,128),11,0,11),g.addMany(y(28,32),11,0,11),g.addMany(w,10,0,10),g.add(127,10,0,10),g.addMany(y(28,32),10,0,10),g.addMany(y(48,60),10,8,10),g.addMany([60,61,62,63],10,0,11),g.addMany(y(32,48),10,9,12),g.addMany(w,12,0,12),g.add(127,12,0,12),g.addMany(y(28,32),12,0,12),g.addMany(y(32,48),12,9,12),g.addMany(y(48,64),12,0,11),g.addMany(y(64,127),12,12,13),g.addMany(y(64,127),10,12,13),g.addMany(y(64,127),9,12,13),g.addMany(w,13,13,13),g.addMany(_,13,13,13),g.add(127,13,0,13),g.addMany([27,156,24,26],13,14,0),g.add(b,0,2,0),g.add(b,8,5,8),g.add(b,6,0,6),g.add(b,11,0,11),g.add(b,13,13,13),g}();class p extends u.Disposable{constructor(m=i.VT500_TRANSITION_TABLE){super(),this._transitions=m,this._parseStack={state:0,handlers:[],handlerPos:0,transition:0,chunkPos:0},this.initialState=0,this.currentState=this.initialState,this._params=new f.Params,this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._printHandlerFb=(y,_,w)=>{},this._executeHandlerFb=y=>{},this._csiHandlerFb=(y,_)=>{},this._escHandlerFb=y=>{},this._errorHandlerFb=y=>y,this._printHandler=this._printHandlerFb,this._executeHandlers=Object.create(null),this._csiHandlers=Object.create(null),this._escHandlers=Object.create(null),this.register((0,u.toDisposable)(()=>{this._csiHandlers=Object.create(null),this._executeHandlers=Object.create(null),this._escHandlers=Object.create(null)})),this._oscParser=this.register(new d.OscParser),this._dcsParser=this.register(new h.DcsParser),this._errorHandler=this._errorHandlerFb,this.registerEscHandler({final:\"\\\\\"},()=>!0)}_identifier(m,y=[64,126]){let _=0;if(m.prefix){if(m.prefix.length>1)throw new Error(\"only one byte as prefix supported\");if(_=m.prefix.charCodeAt(0),_&&60>_||_>63)throw new Error(\"prefix must be in range 0x3c .. 0x3f\")}if(m.intermediates){if(m.intermediates.length>2)throw new Error(\"only two bytes as intermediates are supported\");for(let S=0;S<m.intermediates.length;++S){const C=m.intermediates.charCodeAt(S);if(32>C||C>47)throw new Error(\"intermediate must be in range 0x20 .. 0x2f\");_<<=8,_|=C}}if(m.final.length!==1)throw new Error(\"final must be a single byte\");const w=m.final.charCodeAt(0);if(y[0]>w||w>y[1])throw new Error(`final must be in range ${y[0]} .. ${y[1]}`);return _<<=8,_|=w,_}identToString(m){const y=[];for(;m;)y.push(String.fromCharCode(255&m)),m>>=8;return y.reverse().join(\"\")}setPrintHandler(m){this._printHandler=m}clearPrintHandler(){this._printHandler=this._printHandlerFb}registerEscHandler(m,y){const _=this._identifier(m,[48,126]);this._escHandlers[_]===void 0&&(this._escHandlers[_]=[]);const w=this._escHandlers[_];return w.push(y),{dispose:()=>{const S=w.indexOf(y);S!==-1&&w.splice(S,1)}}}clearEscHandler(m){this._escHandlers[this._identifier(m,[48,126])]&&delete this._escHandlers[this._identifier(m,[48,126])]}setEscHandlerFallback(m){this._escHandlerFb=m}setExecuteHandler(m,y){this._executeHandlers[m.charCodeAt(0)]=y}clearExecuteHandler(m){this._executeHandlers[m.charCodeAt(0)]&&delete this._executeHandlers[m.charCodeAt(0)]}setExecuteHandlerFallback(m){this._executeHandlerFb=m}registerCsiHandler(m,y){const _=this._identifier(m);this._csiHandlers[_]===void 0&&(this._csiHandlers[_]=[]);const w=this._csiHandlers[_];return w.push(y),{dispose:()=>{const S=w.indexOf(y);S!==-1&&w.splice(S,1)}}}clearCsiHandler(m){this._csiHandlers[this._identifier(m)]&&delete this._csiHandlers[this._identifier(m)]}setCsiHandlerFallback(m){this._csiHandlerFb=m}registerDcsHandler(m,y){return this._dcsParser.registerHandler(this._identifier(m),y)}clearDcsHandler(m){this._dcsParser.clearHandler(this._identifier(m))}setDcsHandlerFallback(m){this._dcsParser.setHandlerFallback(m)}registerOscHandler(m,y){return this._oscParser.registerHandler(m,y)}clearOscHandler(m){this._oscParser.clearHandler(m)}setOscHandlerFallback(m){this._oscParser.setHandlerFallback(m)}setErrorHandler(m){this._errorHandler=m}clearErrorHandler(){this._errorHandler=this._errorHandlerFb}reset(){this.currentState=this.initialState,this._oscParser.reset(),this._dcsParser.reset(),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0,this._parseStack.state!==0&&(this._parseStack.state=2,this._parseStack.handlers=[])}_preserveStack(m,y,_,w,S){this._parseStack.state=m,this._parseStack.handlers=y,this._parseStack.handlerPos=_,this._parseStack.transition=w,this._parseStack.chunkPos=S}parse(m,y,_){let w,S=0,C=0,E=0;if(this._parseStack.state)if(this._parseStack.state===2)this._parseStack.state=0,E=this._parseStack.chunkPos+1;else{if(_===void 0||this._parseStack.state===1)throw this._parseStack.state=1,new Error(\"improper continuation due to previous async handler, giving up parsing\");const k=this._parseStack.handlers;let T=this._parseStack.handlerPos-1;switch(this._parseStack.state){case 3:if(_===!1&&T>-1){for(;T>=0&&(w=k[T](this._params),w!==!0);T--)if(w instanceof Promise)return this._parseStack.handlerPos=T,w}this._parseStack.handlers=[];break;case 4:if(_===!1&&T>-1){for(;T>=0&&(w=k[T](),w!==!0);T--)if(w instanceof Promise)return this._parseStack.handlerPos=T,w}this._parseStack.handlers=[];break;case 6:if(S=m[this._parseStack.chunkPos],w=this._dcsParser.unhook(S!==24&&S!==26,_),w)return w;S===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0;break;case 5:if(S=m[this._parseStack.chunkPos],w=this._oscParser.end(S!==24&&S!==26,_),w)return w;S===27&&(this._parseStack.transition|=1),this._params.reset(),this._params.addParam(0),this._collect=0}this._parseStack.state=0,E=this._parseStack.chunkPos+1,this.precedingJoinState=0,this.currentState=15&this._parseStack.transition}for(let k=E;k<y;++k){switch(S=m[k],C=this._transitions.table[this.currentState<<8|(S<160?S:b)],C>>4){case 2:for(let P=k+1;;++P){if(P>=y||(S=m[P])<32||S>126&&S<b){this._printHandler(m,k,P),k=P-1;break}if(++P>=y||(S=m[P])<32||S>126&&S<b){this._printHandler(m,k,P),k=P-1;break}if(++P>=y||(S=m[P])<32||S>126&&S<b){this._printHandler(m,k,P),k=P-1;break}if(++P>=y||(S=m[P])<32||S>126&&S<b){this._printHandler(m,k,P),k=P-1;break}}break;case 3:this._executeHandlers[S]?this._executeHandlers[S]():this._executeHandlerFb(S),this.precedingJoinState=0;break;case 0:break;case 1:if(this._errorHandler({position:k,code:S,currentState:this.currentState,collect:this._collect,params:this._params,abort:!1}).abort)return;break;case 7:const T=this._csiHandlers[this._collect<<8|S];let x=T?T.length-1:-1;for(;x>=0&&(w=T[x](this._params),w!==!0);x--)if(w instanceof Promise)return this._preserveStack(3,T,x,C,k),w;x<0&&this._csiHandlerFb(this._collect<<8|S,this._params),this.precedingJoinState=0;break;case 8:do switch(S){case 59:this._params.addParam(0);break;case 58:this._params.addSubParam(-1);break;default:this._params.addDigit(S-48)}while(++k<y&&(S=m[k])>47&&S<60);k--;break;case 9:this._collect<<=8,this._collect|=S;break;case 10:const M=this._escHandlers[this._collect<<8|S];let A=M?M.length-1:-1;for(;A>=0&&(w=M[A](),w!==!0);A--)if(w instanceof Promise)return this._preserveStack(4,M,A,C,k),w;A<0&&this._escHandlerFb(this._collect<<8|S),this.precedingJoinState=0;break;case 11:this._params.reset(),this._params.addParam(0),this._collect=0;break;case 12:this._dcsParser.hook(this._collect<<8|S,this._params);break;case 13:for(let P=k+1;;++P)if(P>=y||(S=m[P])===24||S===26||S===27||S>127&&S<b){this._dcsParser.put(m,k,P),k=P-1;break}break;case 14:if(w=this._dcsParser.unhook(S!==24&&S!==26),w)return this._preserveStack(6,[],0,C,k),w;S===27&&(C|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0;break;case 4:this._oscParser.start();break;case 5:for(let P=k+1;;P++)if(P>=y||(S=m[P])<32||S>127&&S<b){this._oscParser.put(m,k,P),k=P-1;break}break;case 6:if(w=this._oscParser.end(S!==24&&S!==26),w)return this._preserveStack(5,[],0,C,k),w;S===27&&(C|=1),this._params.reset(),this._params.addParam(0),this._collect=0,this.precedingJoinState=0}this.currentState=15&C}}}i.EscapeSequenceParser=p},6242:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.OscHandler=i.OscParser=void 0;const u=l(5770),f=l(482),d=[];i.OscParser=class{constructor(){this._state=0,this._active=d,this._id=-1,this._handlers=Object.create(null),this._handlerFb=()=>{},this._stack={paused:!1,loopPosition:0,fallThrough:!1}}registerHandler(h,v){this._handlers[h]===void 0&&(this._handlers[h]=[]);const b=this._handlers[h];return b.push(v),{dispose:()=>{const p=b.indexOf(v);p!==-1&&b.splice(p,1)}}}clearHandler(h){this._handlers[h]&&delete this._handlers[h]}setHandlerFallback(h){this._handlerFb=h}dispose(){this._handlers=Object.create(null),this._handlerFb=()=>{},this._active=d}reset(){if(this._state===2)for(let h=this._stack.paused?this._stack.loopPosition-1:this._active.length-1;h>=0;--h)this._active[h].end(!1);this._stack.paused=!1,this._active=d,this._id=-1,this._state=0}_start(){if(this._active=this._handlers[this._id]||d,this._active.length)for(let h=this._active.length-1;h>=0;h--)this._active[h].start();else this._handlerFb(this._id,\"START\")}_put(h,v,b){if(this._active.length)for(let p=this._active.length-1;p>=0;p--)this._active[p].put(h,v,b);else this._handlerFb(this._id,\"PUT\",(0,f.utf32ToString)(h,v,b))}start(){this.reset(),this._state=1}put(h,v,b){if(this._state!==3){if(this._state===1)for(;v<b;){const p=h[v++];if(p===59){this._state=2,this._start();break}if(p<48||57<p)return void(this._state=3);this._id===-1&&(this._id=0),this._id=10*this._id+p-48}this._state===2&&b-v>0&&this._put(h,v,b)}}end(h,v=!0){if(this._state!==0){if(this._state!==3)if(this._state===1&&this._start(),this._active.length){let b=!1,p=this._active.length-1,g=!1;if(this._stack.paused&&(p=this._stack.loopPosition-1,b=v,g=this._stack.fallThrough,this._stack.paused=!1),!g&&b===!1){for(;p>=0&&(b=this._active[p].end(h),b!==!0);p--)if(b instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!1,b;p--}for(;p>=0;p--)if(b=this._active[p].end(!1),b instanceof Promise)return this._stack.paused=!0,this._stack.loopPosition=p,this._stack.fallThrough=!0,b}else this._handlerFb(this._id,\"END\",h);this._active=d,this._id=-1,this._state=0}}},i.OscHandler=class{constructor(h){this._handler=h,this._data=\"\",this._hitLimit=!1}start(){this._data=\"\",this._hitLimit=!1}put(h,v,b){this._hitLimit||(this._data+=(0,f.utf32ToString)(h,v,b),this._data.length>u.PAYLOAD_LIMIT&&(this._data=\"\",this._hitLimit=!0))}end(h){let v=!1;if(this._hitLimit)v=!1;else if(h&&(v=this._handler(this._data),v instanceof Promise))return v.then(b=>(this._data=\"\",this._hitLimit=!1,b));return this._data=\"\",this._hitLimit=!1,v}}},8742:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.Params=void 0;const l=2147483647;class u{static fromArray(d){const h=new u;if(!d.length)return h;for(let v=Array.isArray(d[0])?1:0;v<d.length;++v){const b=d[v];if(Array.isArray(b))for(let p=0;p<b.length;++p)h.addSubParam(b[p]);else h.addParam(b)}return h}constructor(d=32,h=32){if(this.maxLength=d,this.maxSubParamsLength=h,h>256)throw new Error(\"maxSubParamsLength must not be greater than 256\");this.params=new Int32Array(d),this.length=0,this._subParams=new Int32Array(h),this._subParamsLength=0,this._subParamsIdx=new Uint16Array(d),this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}clone(){const d=new u(this.maxLength,this.maxSubParamsLength);return d.params.set(this.params),d.length=this.length,d._subParams.set(this._subParams),d._subParamsLength=this._subParamsLength,d._subParamsIdx.set(this._subParamsIdx),d._rejectDigits=this._rejectDigits,d._rejectSubDigits=this._rejectSubDigits,d._digitIsSub=this._digitIsSub,d}toArray(){const d=[];for(let h=0;h<this.length;++h){d.push(this.params[h]);const v=this._subParamsIdx[h]>>8,b=255&this._subParamsIdx[h];b-v>0&&d.push(Array.prototype.slice.call(this._subParams,v,b))}return d}reset(){this.length=0,this._subParamsLength=0,this._rejectDigits=!1,this._rejectSubDigits=!1,this._digitIsSub=!1}addParam(d){if(this._digitIsSub=!1,this.length>=this.maxLength)this._rejectDigits=!0;else{if(d<-1)throw new Error(\"values lesser than -1 are not allowed\");this._subParamsIdx[this.length]=this._subParamsLength<<8|this._subParamsLength,this.params[this.length++]=d>l?l:d}}addSubParam(d){if(this._digitIsSub=!0,this.length)if(this._rejectDigits||this._subParamsLength>=this.maxSubParamsLength)this._rejectSubDigits=!0;else{if(d<-1)throw new Error(\"values lesser than -1 are not allowed\");this._subParams[this._subParamsLength++]=d>l?l:d,this._subParamsIdx[this.length-1]++}}hasSubParams(d){return(255&this._subParamsIdx[d])-(this._subParamsIdx[d]>>8)>0}getSubParams(d){const h=this._subParamsIdx[d]>>8,v=255&this._subParamsIdx[d];return v-h>0?this._subParams.subarray(h,v):null}getSubParamsAll(){const d={};for(let h=0;h<this.length;++h){const v=this._subParamsIdx[h]>>8,b=255&this._subParamsIdx[h];b-v>0&&(d[h]=this._subParams.slice(v,b))}return d}addDigit(d){let h;if(this._rejectDigits||!(h=this._digitIsSub?this._subParamsLength:this.length)||this._digitIsSub&&this._rejectSubDigits)return;const v=this._digitIsSub?this._subParams:this.params,b=v[h-1];v[h-1]=~b?Math.min(10*b+d,l):d}}i.Params=u},5741:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.AddonManager=void 0,i.AddonManager=class{constructor(){this._addons=[]}dispose(){for(let l=this._addons.length-1;l>=0;l--)this._addons[l].instance.dispose()}loadAddon(l,u){const f={instance:u,dispose:u.dispose,isDisposed:!1};this._addons.push(f),u.dispose=()=>this._wrappedAddonDispose(f),u.activate(l)}_wrappedAddonDispose(l){if(l.isDisposed)return;let u=-1;for(let f=0;f<this._addons.length;f++)if(this._addons[f]===l){u=f;break}if(u===-1)throw new Error(\"Could not dispose an addon that has not been loaded\");l.isDisposed=!0,l.dispose.apply(l.instance),this._addons.splice(u,1)}}},8771:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferApiView=void 0;const u=l(3785),f=l(511);i.BufferApiView=class{constructor(d,h){this._buffer=d,this.type=h}init(d){return this._buffer=d,this}get cursorY(){return this._buffer.y}get cursorX(){return this._buffer.x}get viewportY(){return this._buffer.ydisp}get baseY(){return this._buffer.ybase}get length(){return this._buffer.lines.length}getLine(d){const h=this._buffer.lines.get(d);if(h)return new u.BufferLineApiView(h)}getNullCell(){return new f.CellData}}},3785:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferLineApiView=void 0;const u=l(511);i.BufferLineApiView=class{constructor(f){this._line=f}get isWrapped(){return this._line.isWrapped}get length(){return this._line.length}getCell(f,d){if(!(f<0||f>=this._line.length))return d?(this._line.loadCell(f,d),d):this._line.loadCell(f,new u.CellData)}translateToString(f,d,h){return this._line.translateToString(f,d,h)}}},8285:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferNamespaceApi=void 0;const u=l(8771),f=l(8460),d=l(844);class h extends d.Disposable{constructor(b){super(),this._core=b,this._onBufferChange=this.register(new f.EventEmitter),this.onBufferChange=this._onBufferChange.event,this._normal=new u.BufferApiView(this._core.buffers.normal,\"normal\"),this._alternate=new u.BufferApiView(this._core.buffers.alt,\"alternate\"),this._core.buffers.onBufferActivate(()=>this._onBufferChange.fire(this.active))}get active(){if(this._core.buffers.active===this._core.buffers.normal)return this.normal;if(this._core.buffers.active===this._core.buffers.alt)return this.alternate;throw new Error(\"Active buffer is neither normal nor alternate\")}get normal(){return this._normal.init(this._core.buffers.normal)}get alternate(){return this._alternate.init(this._core.buffers.alt)}}i.BufferNamespaceApi=h},7975:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.ParserApi=void 0,i.ParserApi=class{constructor(l){this._core=l}registerCsiHandler(l,u){return this._core.registerCsiHandler(l,f=>u(f.toArray()))}addCsiHandler(l,u){return this.registerCsiHandler(l,u)}registerDcsHandler(l,u){return this._core.registerDcsHandler(l,(f,d)=>u(f,d.toArray()))}addDcsHandler(l,u){return this.registerDcsHandler(l,u)}registerEscHandler(l,u){return this._core.registerEscHandler(l,u)}addEscHandler(l,u){return this.registerEscHandler(l,u)}registerOscHandler(l,u){return this._core.registerOscHandler(l,u)}addOscHandler(l,u){return this.registerOscHandler(l,u)}}},7090:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.UnicodeApi=void 0,i.UnicodeApi=class{constructor(l){this._core=l}register(l){this._core.unicodeService.register(l)}get versions(){return this._core.unicodeService.versions}get activeVersion(){return this._core.unicodeService.activeVersion}set activeVersion(l){this._core.unicodeService.activeVersion=l}}},744:function(a,i,l){var u=this&&this.__decorate||function(g,m,y,_){var w,S=arguments.length,C=S<3?m:_===null?_=Object.getOwnPropertyDescriptor(m,y):_;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")C=Reflect.decorate(g,m,y,_);else for(var E=g.length-1;E>=0;E--)(w=g[E])&&(C=(S<3?w(C):S>3?w(m,y,C):w(m,y))||C);return S>3&&C&&Object.defineProperty(m,y,C),C},f=this&&this.__param||function(g,m){return function(y,_){m(y,_,g)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.BufferService=i.MINIMUM_ROWS=i.MINIMUM_COLS=void 0;const d=l(8460),h=l(844),v=l(5295),b=l(2585);i.MINIMUM_COLS=2,i.MINIMUM_ROWS=1;let p=i.BufferService=class extends h.Disposable{get buffer(){return this.buffers.active}constructor(g){super(),this.isUserScrolling=!1,this._onResize=this.register(new d.EventEmitter),this.onResize=this._onResize.event,this._onScroll=this.register(new d.EventEmitter),this.onScroll=this._onScroll.event,this.cols=Math.max(g.rawOptions.cols||0,i.MINIMUM_COLS),this.rows=Math.max(g.rawOptions.rows||0,i.MINIMUM_ROWS),this.buffers=this.register(new v.BufferSet(g,this))}resize(g,m){this.cols=g,this.rows=m,this.buffers.resize(g,m),this._onResize.fire({cols:g,rows:m})}reset(){this.buffers.reset(),this.isUserScrolling=!1}scroll(g,m=!1){const y=this.buffer;let _;_=this._cachedBlankLine,_&&_.length===this.cols&&_.getFg(0)===g.fg&&_.getBg(0)===g.bg||(_=y.getBlankLine(g,m),this._cachedBlankLine=_),_.isWrapped=m;const w=y.ybase+y.scrollTop,S=y.ybase+y.scrollBottom;if(y.scrollTop===0){const C=y.lines.isFull;S===y.lines.length-1?C?y.lines.recycle().copyFrom(_):y.lines.push(_.clone()):y.lines.splice(S+1,0,_.clone()),C?this.isUserScrolling&&(y.ydisp=Math.max(y.ydisp-1,0)):(y.ybase++,this.isUserScrolling||y.ydisp++)}else{const C=S-w+1;y.lines.shiftElements(w+1,C-1,-1),y.lines.set(S,_.clone())}this.isUserScrolling||(y.ydisp=y.ybase),this._onScroll.fire(y.ydisp)}scrollLines(g,m,y){const _=this.buffer;if(g<0){if(_.ydisp===0)return;this.isUserScrolling=!0}else g+_.ydisp>=_.ybase&&(this.isUserScrolling=!1);const w=_.ydisp;_.ydisp=Math.max(Math.min(_.ydisp+g,_.ybase),0),w!==_.ydisp&&(m||this._onScroll.fire(_.ydisp))}};i.BufferService=p=u([f(0,b.IOptionsService)],p)},7994:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.CharsetService=void 0,i.CharsetService=class{constructor(){this.glevel=0,this._charsets=[]}reset(){this.charset=void 0,this._charsets=[],this.glevel=0}setgLevel(l){this.glevel=l,this.charset=this._charsets[l]}setgCharset(l,u){this._charsets[l]=u,this.glevel===l&&(this.charset=u)}}},1753:function(a,i,l){var u=this&&this.__decorate||function(_,w,S,C){var E,k=arguments.length,T=k<3?w:C===null?C=Object.getOwnPropertyDescriptor(w,S):C;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")T=Reflect.decorate(_,w,S,C);else for(var x=_.length-1;x>=0;x--)(E=_[x])&&(T=(k<3?E(T):k>3?E(w,S,T):E(w,S))||T);return k>3&&T&&Object.defineProperty(w,S,T),T},f=this&&this.__param||function(_,w){return function(S,C){w(S,C,_)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.CoreMouseService=void 0;const d=l(2585),h=l(8460),v=l(844),b={NONE:{events:0,restrict:()=>!1},X10:{events:1,restrict:_=>_.button!==4&&_.action===1&&(_.ctrl=!1,_.alt=!1,_.shift=!1,!0)},VT200:{events:19,restrict:_=>_.action!==32},DRAG:{events:23,restrict:_=>_.action!==32||_.button!==3},ANY:{events:31,restrict:_=>!0}};function p(_,w){let S=(_.ctrl?16:0)|(_.shift?4:0)|(_.alt?8:0);return _.button===4?(S|=64,S|=_.action):(S|=3&_.button,4&_.button&&(S|=64),8&_.button&&(S|=128),_.action===32?S|=32:_.action!==0||w||(S|=3)),S}const g=String.fromCharCode,m={DEFAULT:_=>{const w=[p(_,!1)+32,_.col+32,_.row+32];return w[0]>255||w[1]>255||w[2]>255?\"\":`\\x1B[M${g(w[0])}${g(w[1])}${g(w[2])}`},SGR:_=>{const w=_.action===0&&_.button!==4?\"m\":\"M\";return`\\x1B[<${p(_,!0)};${_.col};${_.row}${w}`},SGR_PIXELS:_=>{const w=_.action===0&&_.button!==4?\"m\":\"M\";return`\\x1B[<${p(_,!0)};${_.x};${_.y}${w}`}};let y=i.CoreMouseService=class extends v.Disposable{constructor(_,w){super(),this._bufferService=_,this._coreService=w,this._protocols={},this._encodings={},this._activeProtocol=\"\",this._activeEncoding=\"\",this._lastEvent=null,this._onProtocolChange=this.register(new h.EventEmitter),this.onProtocolChange=this._onProtocolChange.event;for(const S of Object.keys(b))this.addProtocol(S,b[S]);for(const S of Object.keys(m))this.addEncoding(S,m[S]);this.reset()}addProtocol(_,w){this._protocols[_]=w}addEncoding(_,w){this._encodings[_]=w}get activeProtocol(){return this._activeProtocol}get areMouseEventsActive(){return this._protocols[this._activeProtocol].events!==0}set activeProtocol(_){if(!this._protocols[_])throw new Error(`unknown protocol \"${_}\"`);this._activeProtocol=_,this._onProtocolChange.fire(this._protocols[_].events)}get activeEncoding(){return this._activeEncoding}set activeEncoding(_){if(!this._encodings[_])throw new Error(`unknown encoding \"${_}\"`);this._activeEncoding=_}reset(){this.activeProtocol=\"NONE\",this.activeEncoding=\"DEFAULT\",this._lastEvent=null}triggerMouseEvent(_){if(_.col<0||_.col>=this._bufferService.cols||_.row<0||_.row>=this._bufferService.rows||_.button===4&&_.action===32||_.button===3&&_.action!==32||_.button!==4&&(_.action===2||_.action===3)||(_.col++,_.row++,_.action===32&&this._lastEvent&&this._equalEvents(this._lastEvent,_,this._activeEncoding===\"SGR_PIXELS\"))||!this._protocols[this._activeProtocol].restrict(_))return!1;const w=this._encodings[this._activeEncoding](_);return w&&(this._activeEncoding===\"DEFAULT\"?this._coreService.triggerBinaryEvent(w):this._coreService.triggerDataEvent(w,!0)),this._lastEvent=_,!0}explainEvents(_){return{down:!!(1&_),up:!!(2&_),drag:!!(4&_),move:!!(8&_),wheel:!!(16&_)}}_equalEvents(_,w,S){if(S){if(_.x!==w.x||_.y!==w.y)return!1}else if(_.col!==w.col||_.row!==w.row)return!1;return _.button===w.button&&_.action===w.action&&_.ctrl===w.ctrl&&_.alt===w.alt&&_.shift===w.shift}};i.CoreMouseService=y=u([f(0,d.IBufferService),f(1,d.ICoreService)],y)},6975:function(a,i,l){var u=this&&this.__decorate||function(y,_,w,S){var C,E=arguments.length,k=E<3?_:S===null?S=Object.getOwnPropertyDescriptor(_,w):S;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")k=Reflect.decorate(y,_,w,S);else for(var T=y.length-1;T>=0;T--)(C=y[T])&&(k=(E<3?C(k):E>3?C(_,w,k):C(_,w))||k);return E>3&&k&&Object.defineProperty(_,w,k),k},f=this&&this.__param||function(y,_){return function(w,S){_(w,S,y)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.CoreService=void 0;const d=l(1439),h=l(8460),v=l(844),b=l(2585),p=Object.freeze({insertMode:!1}),g=Object.freeze({applicationCursorKeys:!1,applicationKeypad:!1,bracketedPasteMode:!1,origin:!1,reverseWraparound:!1,sendFocus:!1,wraparound:!0});let m=i.CoreService=class extends v.Disposable{constructor(y,_,w){super(),this._bufferService=y,this._logService=_,this._optionsService=w,this.isCursorInitialized=!1,this.isCursorHidden=!1,this._onData=this.register(new h.EventEmitter),this.onData=this._onData.event,this._onUserInput=this.register(new h.EventEmitter),this.onUserInput=this._onUserInput.event,this._onBinary=this.register(new h.EventEmitter),this.onBinary=this._onBinary.event,this._onRequestScrollToBottom=this.register(new h.EventEmitter),this.onRequestScrollToBottom=this._onRequestScrollToBottom.event,this.modes=(0,d.clone)(p),this.decPrivateModes=(0,d.clone)(g)}reset(){this.modes=(0,d.clone)(p),this.decPrivateModes=(0,d.clone)(g)}triggerDataEvent(y,_=!1){if(this._optionsService.rawOptions.disableStdin)return;const w=this._bufferService.buffer;_&&this._optionsService.rawOptions.scrollOnUserInput&&w.ybase!==w.ydisp&&this._onRequestScrollToBottom.fire(),_&&this._onUserInput.fire(),this._logService.debug(`sending data \"${y}\"`,()=>y.split(\"\").map(S=>S.charCodeAt(0))),this._onData.fire(y)}triggerBinaryEvent(y){this._optionsService.rawOptions.disableStdin||(this._logService.debug(`sending binary \"${y}\"`,()=>y.split(\"\").map(_=>_.charCodeAt(0))),this._onBinary.fire(y))}};i.CoreService=m=u([f(0,b.IBufferService),f(1,b.ILogService),f(2,b.IOptionsService)],m)},9074:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.DecorationService=void 0;const u=l(8055),f=l(8460),d=l(844),h=l(6106);let v=0,b=0;class p extends d.Disposable{get decorations(){return this._decorations.values()}constructor(){super(),this._decorations=new h.SortedList(y=>y==null?void 0:y.marker.line),this._onDecorationRegistered=this.register(new f.EventEmitter),this.onDecorationRegistered=this._onDecorationRegistered.event,this._onDecorationRemoved=this.register(new f.EventEmitter),this.onDecorationRemoved=this._onDecorationRemoved.event,this.register((0,d.toDisposable)(()=>this.reset()))}registerDecoration(y){if(y.marker.isDisposed)return;const _=new g(y);if(_){const w=_.marker.onDispose(()=>_.dispose());_.onDispose(()=>{_&&(this._decorations.delete(_)&&this._onDecorationRemoved.fire(_),w.dispose())}),this._decorations.insert(_),this._onDecorationRegistered.fire(_)}return _}reset(){for(const y of this._decorations.values())y.dispose();this._decorations.clear()}*getDecorationsAtCell(y,_,w){let S=0,C=0;for(const E of this._decorations.getKeyIterator(_))S=E.options.x??0,C=S+(E.options.width??1),y>=S&&y<C&&(!w||(E.options.layer??\"bottom\")===w)&&(yield E)}forEachDecorationAtCell(y,_,w,S){this._decorations.forEachByKey(_,C=>{v=C.options.x??0,b=v+(C.options.width??1),y>=v&&y<b&&(!w||(C.options.layer??\"bottom\")===w)&&S(C)})}}i.DecorationService=p;class g extends d.Disposable{get isDisposed(){return this._isDisposed}get backgroundColorRGB(){return this._cachedBg===null&&(this.options.backgroundColor?this._cachedBg=u.css.toColor(this.options.backgroundColor):this._cachedBg=void 0),this._cachedBg}get foregroundColorRGB(){return this._cachedFg===null&&(this.options.foregroundColor?this._cachedFg=u.css.toColor(this.options.foregroundColor):this._cachedFg=void 0),this._cachedFg}constructor(y){super(),this.options=y,this.onRenderEmitter=this.register(new f.EventEmitter),this.onRender=this.onRenderEmitter.event,this._onDispose=this.register(new f.EventEmitter),this.onDispose=this._onDispose.event,this._cachedBg=null,this._cachedFg=null,this.marker=y.marker,this.options.overviewRulerOptions&&!this.options.overviewRulerOptions.position&&(this.options.overviewRulerOptions.position=\"full\")}dispose(){this._onDispose.fire(),super.dispose()}}},4348:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.InstantiationService=i.ServiceCollection=void 0;const u=l(2585),f=l(8343);class d{constructor(...v){this._entries=new Map;for(const[b,p]of v)this.set(b,p)}set(v,b){const p=this._entries.get(v);return this._entries.set(v,b),p}forEach(v){for(const[b,p]of this._entries.entries())v(b,p)}has(v){return this._entries.has(v)}get(v){return this._entries.get(v)}}i.ServiceCollection=d,i.InstantiationService=class{constructor(){this._services=new d,this._services.set(u.IInstantiationService,this)}setService(h,v){this._services.set(h,v)}getService(h){return this._services.get(h)}createInstance(h,...v){const b=(0,f.getServiceDependencies)(h).sort((m,y)=>m.index-y.index),p=[];for(const m of b){const y=this._services.get(m.id);if(!y)throw new Error(`[createInstance] ${h.name} depends on UNKNOWN service ${m.id}.`);p.push(y)}const g=b.length>0?b[0].index:v.length;if(v.length!==g)throw new Error(`[createInstance] First service dependency of ${h.name} at position ${g+1} conflicts with ${v.length} static arguments`);return new h(...v,...p)}}},7866:function(a,i,l){var u=this&&this.__decorate||function(g,m,y,_){var w,S=arguments.length,C=S<3?m:_===null?_=Object.getOwnPropertyDescriptor(m,y):_;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")C=Reflect.decorate(g,m,y,_);else for(var E=g.length-1;E>=0;E--)(w=g[E])&&(C=(S<3?w(C):S>3?w(m,y,C):w(m,y))||C);return S>3&&C&&Object.defineProperty(m,y,C),C},f=this&&this.__param||function(g,m){return function(y,_){m(y,_,g)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.traceCall=i.setTraceLogger=i.LogService=void 0;const d=l(844),h=l(2585),v={trace:h.LogLevelEnum.TRACE,debug:h.LogLevelEnum.DEBUG,info:h.LogLevelEnum.INFO,warn:h.LogLevelEnum.WARN,error:h.LogLevelEnum.ERROR,off:h.LogLevelEnum.OFF};let b,p=i.LogService=class extends d.Disposable{get logLevel(){return this._logLevel}constructor(g){super(),this._optionsService=g,this._logLevel=h.LogLevelEnum.OFF,this._updateLogLevel(),this.register(this._optionsService.onSpecificOptionChange(\"logLevel\",()=>this._updateLogLevel())),b=this}_updateLogLevel(){this._logLevel=v[this._optionsService.rawOptions.logLevel]}_evalLazyOptionalParams(g){for(let m=0;m<g.length;m++)typeof g[m]==\"function\"&&(g[m]=g[m]())}_log(g,m,y){this._evalLazyOptionalParams(y),g.call(console,(this._optionsService.options.logger?\"\":\"xterm.js: \")+m,...y)}trace(g,...m){var y;this._logLevel<=h.LogLevelEnum.TRACE&&this._log(((y=this._optionsService.options.logger)==null?void 0:y.trace.bind(this._optionsService.options.logger))??console.log,g,m)}debug(g,...m){var y;this._logLevel<=h.LogLevelEnum.DEBUG&&this._log(((y=this._optionsService.options.logger)==null?void 0:y.debug.bind(this._optionsService.options.logger))??console.log,g,m)}info(g,...m){var y;this._logLevel<=h.LogLevelEnum.INFO&&this._log(((y=this._optionsService.options.logger)==null?void 0:y.info.bind(this._optionsService.options.logger))??console.info,g,m)}warn(g,...m){var y;this._logLevel<=h.LogLevelEnum.WARN&&this._log(((y=this._optionsService.options.logger)==null?void 0:y.warn.bind(this._optionsService.options.logger))??console.warn,g,m)}error(g,...m){var y;this._logLevel<=h.LogLevelEnum.ERROR&&this._log(((y=this._optionsService.options.logger)==null?void 0:y.error.bind(this._optionsService.options.logger))??console.error,g,m)}};i.LogService=p=u([f(0,h.IOptionsService)],p),i.setTraceLogger=function(g){b=g},i.traceCall=function(g,m,y){if(typeof y.value!=\"function\")throw new Error(\"not supported\");const _=y.value;y.value=function(...w){if(b.logLevel!==h.LogLevelEnum.TRACE)return _.apply(this,w);b.trace(`GlyphRenderer#${_.name}(${w.map(C=>JSON.stringify(C)).join(\", \")})`);const S=_.apply(this,w);return b.trace(`GlyphRenderer#${_.name} return`,S),S}}},7302:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.OptionsService=i.DEFAULT_OPTIONS=void 0;const u=l(8460),f=l(844),d=l(6114);i.DEFAULT_OPTIONS={cols:80,rows:24,cursorBlink:!1,cursorStyle:\"block\",cursorWidth:1,cursorInactiveStyle:\"outline\",customGlyphs:!0,drawBoldTextInBrightColors:!0,documentOverride:null,fastScrollModifier:\"alt\",fastScrollSensitivity:5,fontFamily:\"courier-new, courier, monospace\",fontSize:15,fontWeight:\"normal\",fontWeightBold:\"bold\",ignoreBracketedPasteMode:!1,lineHeight:1,letterSpacing:0,linkHandler:null,logLevel:\"info\",logger:null,scrollback:1e3,scrollOnUserInput:!0,scrollSensitivity:1,screenReaderMode:!1,smoothScrollDuration:0,macOptionIsMeta:!1,macOptionClickForcesSelection:!1,minimumContrastRatio:1,disableStdin:!1,allowProposedApi:!1,allowTransparency:!1,tabStopWidth:8,theme:{},rescaleOverlappingGlyphs:!1,rightClickSelectsWord:d.isMac,windowOptions:{},windowsMode:!1,windowsPty:{},wordSeparator:\" ()[]{}',\\\"`\",altClickMovesCursor:!0,convertEol:!1,termName:\"xterm\",cancelEvents:!1,overviewRulerWidth:0};const h=[\"normal\",\"bold\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"];class v extends f.Disposable{constructor(p){super(),this._onOptionChange=this.register(new u.EventEmitter),this.onOptionChange=this._onOptionChange.event;const g={...i.DEFAULT_OPTIONS};for(const m in p)if(m in g)try{const y=p[m];g[m]=this._sanitizeAndValidateOption(m,y)}catch(y){console.error(y)}this.rawOptions=g,this.options={...g},this._setupOptions(),this.register((0,f.toDisposable)(()=>{this.rawOptions.linkHandler=null,this.rawOptions.documentOverride=null}))}onSpecificOptionChange(p,g){return this.onOptionChange(m=>{m===p&&g(this.rawOptions[p])})}onMultipleOptionChange(p,g){return this.onOptionChange(m=>{p.indexOf(m)!==-1&&g()})}_setupOptions(){const p=m=>{if(!(m in i.DEFAULT_OPTIONS))throw new Error(`No option with key \"${m}\"`);return this.rawOptions[m]},g=(m,y)=>{if(!(m in i.DEFAULT_OPTIONS))throw new Error(`No option with key \"${m}\"`);y=this._sanitizeAndValidateOption(m,y),this.rawOptions[m]!==y&&(this.rawOptions[m]=y,this._onOptionChange.fire(m))};for(const m in this.rawOptions){const y={get:p.bind(this,m),set:g.bind(this,m)};Object.defineProperty(this.options,m,y)}}_sanitizeAndValidateOption(p,g){switch(p){case\"cursorStyle\":if(g||(g=i.DEFAULT_OPTIONS[p]),!function(m){return m===\"block\"||m===\"underline\"||m===\"bar\"}(g))throw new Error(`\"${g}\" is not a valid value for ${p}`);break;case\"wordSeparator\":g||(g=i.DEFAULT_OPTIONS[p]);break;case\"fontWeight\":case\"fontWeightBold\":if(typeof g==\"number\"&&1<=g&&g<=1e3)break;g=h.includes(g)?g:i.DEFAULT_OPTIONS[p];break;case\"cursorWidth\":g=Math.floor(g);case\"lineHeight\":case\"tabStopWidth\":if(g<1)throw new Error(`${p} cannot be less than 1, value: ${g}`);break;case\"minimumContrastRatio\":g=Math.max(1,Math.min(21,Math.round(10*g)/10));break;case\"scrollback\":if((g=Math.min(g,4294967295))<0)throw new Error(`${p} cannot be less than 0, value: ${g}`);break;case\"fastScrollSensitivity\":case\"scrollSensitivity\":if(g<=0)throw new Error(`${p} cannot be less than or equal to 0, value: ${g}`);break;case\"rows\":case\"cols\":if(!g&&g!==0)throw new Error(`${p} must be numeric, value: ${g}`);break;case\"windowsPty\":g=g??{}}return g}}i.OptionsService=v},2660:function(a,i,l){var u=this&&this.__decorate||function(v,b,p,g){var m,y=arguments.length,_=y<3?b:g===null?g=Object.getOwnPropertyDescriptor(b,p):g;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")_=Reflect.decorate(v,b,p,g);else for(var w=v.length-1;w>=0;w--)(m=v[w])&&(_=(y<3?m(_):y>3?m(b,p,_):m(b,p))||_);return y>3&&_&&Object.defineProperty(b,p,_),_},f=this&&this.__param||function(v,b){return function(p,g){b(p,g,v)}};Object.defineProperty(i,\"__esModule\",{value:!0}),i.OscLinkService=void 0;const d=l(2585);let h=i.OscLinkService=class{constructor(v){this._bufferService=v,this._nextId=1,this._entriesWithId=new Map,this._dataByLinkId=new Map}registerLink(v){const b=this._bufferService.buffer;if(v.id===void 0){const w=b.addMarker(b.ybase+b.y),S={data:v,id:this._nextId++,lines:[w]};return w.onDispose(()=>this._removeMarkerFromLink(S,w)),this._dataByLinkId.set(S.id,S),S.id}const p=v,g=this._getEntryIdKey(p),m=this._entriesWithId.get(g);if(m)return this.addLineToLink(m.id,b.ybase+b.y),m.id;const y=b.addMarker(b.ybase+b.y),_={id:this._nextId++,key:this._getEntryIdKey(p),data:p,lines:[y]};return y.onDispose(()=>this._removeMarkerFromLink(_,y)),this._entriesWithId.set(_.key,_),this._dataByLinkId.set(_.id,_),_.id}addLineToLink(v,b){const p=this._dataByLinkId.get(v);if(p&&p.lines.every(g=>g.line!==b)){const g=this._bufferService.buffer.addMarker(b);p.lines.push(g),g.onDispose(()=>this._removeMarkerFromLink(p,g))}}getLinkData(v){var b;return(b=this._dataByLinkId.get(v))==null?void 0:b.data}_getEntryIdKey(v){return`${v.id};;${v.uri}`}_removeMarkerFromLink(v,b){const p=v.lines.indexOf(b);p!==-1&&(v.lines.splice(p,1),v.lines.length===0&&(v.data.id!==void 0&&this._entriesWithId.delete(v.key),this._dataByLinkId.delete(v.id)))}};i.OscLinkService=h=u([f(0,d.IBufferService)],h)},8343:(a,i)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.createDecorator=i.getServiceDependencies=i.serviceRegistry=void 0;const l=\"di$target\",u=\"di$dependencies\";i.serviceRegistry=new Map,i.getServiceDependencies=function(f){return f[u]||[]},i.createDecorator=function(f){if(i.serviceRegistry.has(f))return i.serviceRegistry.get(f);const d=function(h,v,b){if(arguments.length!==3)throw new Error(\"@IServiceName-decorator can only be used to decorate a parameter\");(function(p,g,m){g[l]===g?g[u].push({id:p,index:m}):(g[u]=[{id:p,index:m}],g[l]=g)})(d,h,b)};return d.toString=()=>f,i.serviceRegistry.set(f,d),d}},2585:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.IDecorationService=i.IUnicodeService=i.IOscLinkService=i.IOptionsService=i.ILogService=i.LogLevelEnum=i.IInstantiationService=i.ICharsetService=i.ICoreService=i.ICoreMouseService=i.IBufferService=void 0;const u=l(8343);var f;i.IBufferService=(0,u.createDecorator)(\"BufferService\"),i.ICoreMouseService=(0,u.createDecorator)(\"CoreMouseService\"),i.ICoreService=(0,u.createDecorator)(\"CoreService\"),i.ICharsetService=(0,u.createDecorator)(\"CharsetService\"),i.IInstantiationService=(0,u.createDecorator)(\"InstantiationService\"),function(d){d[d.TRACE=0]=\"TRACE\",d[d.DEBUG=1]=\"DEBUG\",d[d.INFO=2]=\"INFO\",d[d.WARN=3]=\"WARN\",d[d.ERROR=4]=\"ERROR\",d[d.OFF=5]=\"OFF\"}(f||(i.LogLevelEnum=f={})),i.ILogService=(0,u.createDecorator)(\"LogService\"),i.IOptionsService=(0,u.createDecorator)(\"OptionsService\"),i.IOscLinkService=(0,u.createDecorator)(\"OscLinkService\"),i.IUnicodeService=(0,u.createDecorator)(\"UnicodeService\"),i.IDecorationService=(0,u.createDecorator)(\"DecorationService\")},1480:(a,i,l)=>{Object.defineProperty(i,\"__esModule\",{value:!0}),i.UnicodeService=void 0;const u=l(8460),f=l(225);class d{static extractShouldJoin(v){return(1&v)!=0}static extractWidth(v){return v>>1&3}static extractCharKind(v){return v>>3}static createPropertyValue(v,b,p=!1){return(16777215&v)<<3|(3&b)<<1|(p?1:0)}constructor(){this._providers=Object.create(null),this._active=\"\",this._onChange=new u.EventEmitter,this.onChange=this._onChange.event;const v=new f.UnicodeV6;this.register(v),this._active=v.version,this._activeProvider=v}dispose(){this._onChange.dispose()}get versions(){return Object.keys(this._providers)}get activeVersion(){return this._active}set activeVersion(v){if(!this._providers[v])throw new Error(`unknown Unicode version \"${v}\"`);this._active=v,this._activeProvider=this._providers[v],this._onChange.fire(v)}register(v){this._providers[v.version]=v}wcwidth(v){return this._activeProvider.wcwidth(v)}getStringCellWidth(v){let b=0,p=0;const g=v.length;for(let m=0;m<g;++m){let y=v.charCodeAt(m);if(55296<=y&&y<=56319){if(++m>=g)return b+this.wcwidth(y);const S=v.charCodeAt(m);56320<=S&&S<=57343?y=1024*(y-55296)+S-56320+65536:b+=this.wcwidth(S)}const _=this.charProperties(y,p);let w=d.extractWidth(_);d.extractShouldJoin(_)&&(w-=d.extractWidth(p)),b+=w,p=_}return b}charProperties(v,b){return this._activeProvider.charProperties(v,b)}}i.UnicodeService=d}},r={};function s(a){var i=r[a];if(i!==void 0)return i.exports;var l=r[a]={exports:{}};return n[a].call(l.exports,l,l.exports,s),l.exports}var o={};return(()=>{var a=o;Object.defineProperty(a,\"__esModule\",{value:!0}),a.Terminal=void 0;const i=s(9042),l=s(3236),u=s(844),f=s(5741),d=s(8285),h=s(7975),v=s(7090),b=[\"cols\",\"rows\"];class p extends u.Disposable{constructor(m){super(),this._core=this.register(new l.Terminal(m)),this._addonManager=this.register(new f.AddonManager),this._publicOptions={...this._core.options};const y=w=>this._core.options[w],_=(w,S)=>{this._checkReadonlyOptions(w),this._core.options[w]=S};for(const w in this._core.options){const S={get:y.bind(this,w),set:_.bind(this,w)};Object.defineProperty(this._publicOptions,w,S)}}_checkReadonlyOptions(m){if(b.includes(m))throw new Error(`Option \"${m}\" can only be set in the constructor`)}_checkProposedApi(){if(!this._core.optionsService.rawOptions.allowProposedApi)throw new Error(\"You must set the allowProposedApi option to true to use proposed API\")}get onBell(){return this._core.onBell}get onBinary(){return this._core.onBinary}get onCursorMove(){return this._core.onCursorMove}get onData(){return this._core.onData}get onKey(){return this._core.onKey}get onLineFeed(){return this._core.onLineFeed}get onRender(){return this._core.onRender}get onResize(){return this._core.onResize}get onScroll(){return this._core.onScroll}get onSelectionChange(){return this._core.onSelectionChange}get onTitleChange(){return this._core.onTitleChange}get onWriteParsed(){return this._core.onWriteParsed}get element(){return this._core.element}get parser(){return this._parser||(this._parser=new h.ParserApi(this._core)),this._parser}get unicode(){return this._checkProposedApi(),new v.UnicodeApi(this._core)}get textarea(){return this._core.textarea}get rows(){return this._core.rows}get cols(){return this._core.cols}get buffer(){return this._buffer||(this._buffer=this.register(new d.BufferNamespaceApi(this._core))),this._buffer}get markers(){return this._checkProposedApi(),this._core.markers}get modes(){const m=this._core.coreService.decPrivateModes;let y=\"none\";switch(this._core.coreMouseService.activeProtocol){case\"X10\":y=\"x10\";break;case\"VT200\":y=\"vt200\";break;case\"DRAG\":y=\"drag\";break;case\"ANY\":y=\"any\"}return{applicationCursorKeysMode:m.applicationCursorKeys,applicationKeypadMode:m.applicationKeypad,bracketedPasteMode:m.bracketedPasteMode,insertMode:this._core.coreService.modes.insertMode,mouseTrackingMode:y,originMode:m.origin,reverseWraparoundMode:m.reverseWraparound,sendFocusMode:m.sendFocus,wraparoundMode:m.wraparound}}get options(){return this._publicOptions}set options(m){for(const y in m)this._publicOptions[y]=m[y]}blur(){this._core.blur()}focus(){this._core.focus()}input(m,y=!0){this._core.input(m,y)}resize(m,y){this._verifyIntegers(m,y),this._core.resize(m,y)}open(m){this._core.open(m)}attachCustomKeyEventHandler(m){this._core.attachCustomKeyEventHandler(m)}attachCustomWheelEventHandler(m){this._core.attachCustomWheelEventHandler(m)}registerLinkProvider(m){return this._core.registerLinkProvider(m)}registerCharacterJoiner(m){return this._checkProposedApi(),this._core.registerCharacterJoiner(m)}deregisterCharacterJoiner(m){this._checkProposedApi(),this._core.deregisterCharacterJoiner(m)}registerMarker(m=0){return this._verifyIntegers(m),this._core.registerMarker(m)}registerDecoration(m){return this._checkProposedApi(),this._verifyPositiveIntegers(m.x??0,m.width??0,m.height??0),this._core.registerDecoration(m)}hasSelection(){return this._core.hasSelection()}select(m,y,_){this._verifyIntegers(m,y,_),this._core.select(m,y,_)}getSelection(){return this._core.getSelection()}getSelectionPosition(){return this._core.getSelectionPosition()}clearSelection(){this._core.clearSelection()}selectAll(){this._core.selectAll()}selectLines(m,y){this._verifyIntegers(m,y),this._core.selectLines(m,y)}dispose(){super.dispose()}scrollLines(m){this._verifyIntegers(m),this._core.scrollLines(m)}scrollPages(m){this._verifyIntegers(m),this._core.scrollPages(m)}scrollToTop(){this._core.scrollToTop()}scrollToBottom(){this._core.scrollToBottom()}scrollToLine(m){this._verifyIntegers(m),this._core.scrollToLine(m)}clear(){this._core.clear()}write(m,y){this._core.write(m,y)}writeln(m,y){this._core.write(m),this._core.write(`\\r\n`,y)}paste(m){this._core.paste(m)}refresh(m,y){this._verifyIntegers(m,y),this._core.refresh(m,y)}reset(){this._core.reset()}clearTextureAtlas(){this._core.clearTextureAtlas()}loadAddon(m){this._addonManager.loadAddon(this,m)}static get strings(){return i}_verifyIntegers(...m){for(const y of m)if(y===1/0||isNaN(y)||y%1!=0)throw new Error(\"This API only accepts integers\")}_verifyPositiveIntegers(...m){for(const y of m)if(y&&(y===1/0||isNaN(y)||y%1!=0||y<0))throw new Error(\"This API only accepts positive integers\")}}a.Terminal=p})(),o})())}(Uf)),Uf.exports}var ete=Qee(),qf={exports:{}},gy;function tte(){return gy||(gy=1,function(e,t){(function(n,r){e.exports=r()})(self,()=>(()=>{var n={};return(()=>{var r=n;function s(o,a,i){return o.addEventListener(a,i),{dispose:()=>{i&&o.removeEventListener(a,i)}}}Object.defineProperty(r,\"__esModule\",{value:!0}),r.AttachAddon=void 0,r.AttachAddon=class{constructor(o,a){this._disposables=[],this._socket=o,this._socket.binaryType=\"arraybuffer\",this._bidirectional=!(a&&a.bidirectional===!1)}activate(o){this._disposables.push(s(this._socket,\"message\",a=>{const i=a.data;o.write(typeof i==\"string\"?i:new Uint8Array(i))})),this._bidirectional&&(this._disposables.push(o.onData(a=>this._sendData(a))),this._disposables.push(o.onBinary(a=>this._sendBinary(a)))),this._disposables.push(s(this._socket,\"close\",()=>this.dispose())),this._disposables.push(s(this._socket,\"error\",()=>this.dispose()))}dispose(){for(const o of this._disposables)o.dispose()}_sendData(o){this._checkOpenSocket()&&this._socket.send(o)}_sendBinary(o){if(!this._checkOpenSocket())return;const a=new Uint8Array(o.length);for(let i=0;i<o.length;++i)a[i]=255&o.charCodeAt(i);this._socket.send(a)}_checkOpenSocket(){switch(this._socket.readyState){case WebSocket.OPEN:return!0;case WebSocket.CONNECTING:throw new Error(\"Attach addon was loaded before socket was open\");case WebSocket.CLOSING:return console.warn(\"Attach addon socket is closing\"),!1;case WebSocket.CLOSED:throw new Error(\"Attach addon socket is closed\");default:throw new Error(\"Unexpected socket state\")}}}})(),n})())}(qf)),qf.exports}var nte=tte(),Yf={exports:{}},_y;function rte(){return _y||(_y=1,function(e,t){(function(n,r){e.exports=r()})(self,()=>(()=>{var n={};return(()=>{var r=n;Object.defineProperty(r,\"__esModule\",{value:!0}),r.FitAddon=void 0,r.FitAddon=class{activate(s){this._terminal=s}dispose(){}fit(){const s=this.proposeDimensions();if(!s||!this._terminal||isNaN(s.cols)||isNaN(s.rows))return;const o=this._terminal._core;this._terminal.rows===s.rows&&this._terminal.cols===s.cols||(o._renderService.clear(),this._terminal.resize(s.cols,s.rows))}proposeDimensions(){if(!this._terminal||!this._terminal.element||!this._terminal.element.parentElement)return;const s=this._terminal._core,o=s._renderService.dimensions;if(o.css.cell.width===0||o.css.cell.height===0)return;const a=this._terminal.options.scrollback===0?0:s.viewport.scrollBarWidth,i=window.getComputedStyle(this._terminal.element.parentElement),l=parseInt(i.getPropertyValue(\"height\")),u=Math.max(0,parseInt(i.getPropertyValue(\"width\"))),f=window.getComputedStyle(this._terminal.element),d=l-(parseInt(f.getPropertyValue(\"padding-top\"))+parseInt(f.getPropertyValue(\"padding-bottom\"))),h=u-(parseInt(f.getPropertyValue(\"padding-right\"))+parseInt(f.getPropertyValue(\"padding-left\")))-a;return{cols:Math.max(2,Math.floor(h/o.css.cell.width)),rows:Math.max(1,Math.floor(d/o.css.cell.height))}}}})(),n})())}(Yf)),Yf.exports}var ste=rte();const Jm=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ote={},ite={class:\"container\"},ate={class:\"github-links\"};function lte(e,t){const n=W2;return $(),X(\"div\",ite,[Z(\"div\",ate,[H(n,{type:\"primary\",href:\"https://github.com/o8oo8o/WebSSH\",target:\"_blank\"},{default:q(()=>t[0]||(t[0]=[Z(\"div\",{class:\"github-link\"},[Z(\"i\",{class:\"github-icon\"},[Z(\"svg\",{viewBox:\"0 0 16 16\",width:\"64\",height:\"64\"},[Z(\"path\",{fill:\"currentColor\",d:\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\"})])]),Z(\"span\",{class:\"github-text\"},\"GitHub\")],-1)])),_:1})]),t[1]||(t[1]=Z(\"div\",{class:\"text3d-container\"},[Z(\"div\",{class:\"text3d\"},[Z(\"span\",null,\"W\"),Z(\"span\",null,\"e\"),Z(\"span\",null,\"b\"),Z(\"span\",null,\" \"),Z(\"span\",null,\"S\"),Z(\"span\",null,\"S\"),Z(\"span\",null,\"H\")])],-1))])}const cte=Jm(ote,[[\"render\",lte],[\"__scopeId\",\"data-v-83d2d7ef\"]]),ute={class:\"dialog-footer\"},dte={class:\"dialog-footer\"},fte={key:0,class:\"dialog-footer\"},hte={key:1,class:\"dialog-footer\"},pte=[\"innerHTML\"],vte={key:0},mte={key:1},gte={key:0,style:{color:\"red\"}},_te={key:1,style:{color:\"white\"}},bte={style:{\"padding-top\":\"5px\"}},yte={style:{\"padding-top\":\"5px\"}},wte={id:\"term-data\",style:{margin:\"1px\"}},Ste=[\"id\"],Cte=ee({__name:\"Home\",setup(e){q3(Y=>({\"700850ea\":he.value}));const t=jT(()=>$a(()=>import(\"./Manage-D_HsZWaT.js\"),__vite__mapDeps([0,1,2]),import.meta.url));let n=Su(),r=hd(),s=St({mode:0,id:0,name:\"\",address:\"\",user:\"\",auth_type:\"pwd\",net_type:\"tcp4\",cert_data:\"\",cert_pwd:\"\",pwd:\"\",port:22,h:20,w:80,session_id:\"\",background:\"#000000\",foreground:\"#FFFFFF\",cursor_color:\"#FFFFFF\",font_family:\"Courier\",font_size:16,cursor_style:\"block\",shell:\"bash\",pty_type:\"xterm-256color\",init_cmd:\"\",init_banner:\"\",upload_path:\"\",download_path:\"\",host_list:[],host_tabs:[],current_host:{session_id:\"\"},host_config_collapse:[\"1\"],host_dialog_visible:!1,file_dialog_visible:!1,modify_pwd_dialog_visible:!1,manage_dialog_visible:!1,dir_info:{},sftp_current_dir:\"\",sftp_upload_percentage:0,new_pwd_one:\"\",new_pwd_two:\"\"}),o=St({name:\"\",data:\"\",node:\"current\"}),a=W([]);const i=W(\"\"),l=O(()=>s.host_list.filter(Y=>!i.value||Y.name.toLowerCase().includes(i.value.toLowerCase())||Y.address.toLowerCase().includes(i.value.toLowerCase()))),u=W(\"\"),f=O(()=>a.value.filter(Y=>!u.value||Y.cmd_name.toLowerCase().includes(u.value.toLowerCase())));let d;const h=O(()=>`<span style=\"color:red;\">当前名称:${s.current_host.name} &nbsp;&nbsp;&nbsp;当前主机:${s.current_host.address}</span>`);function v(){if(s.new_pwd_one.length<2){wt.error(\"密码至少两个字符\");return}if(s.new_pwd_two.length<2){wt.error(\"密码至少两个字符\");return}if(s.new_pwd_one!==s.new_pwd_two){wt.error(\"两次密码输入不一致\");return}$t.patch(\"/api/user/pwd\",{pwd:s.new_pwd_one}).then(Y=>{Y.data.code===0?wt.success(\"密码修改成功\"):wt.error(\"密码修改失败\")}).catch(()=>{wt.error(\"密码修改错误\")}),s.modify_pwd_dialog_visible=!1}function b(){o.node==\"current\"&&y({id:0,cmd_name:\"\",cmd_data:o.data}),o.node==\"all\"&&_({id:0,cmd_name:\"\",cmd_data:o.data})}function p(){if(o.data.trim().length===0){wt.error(\"收藏的命令不能为空\");return}if(o.name.trim().length===0){wt.error(\"如果收藏命令,必须输入收藏名称\");return}$t.post(\"/api/cmd_note/\",{cmd_name:o.name,cmd_data:o.data}).then(Y=>{Y.data.code===0?(wt.success(\"收藏成功\"),m()):wt.error(\"收藏命令出错了\")})}function g(Y){$t.delete(`/api/cmd_note/${Y}`).then(L=>{L.data.code===0?(a.value=L.data.data,wt.success(\"删除成功\")):wt.error(\"删除命令收藏出错了\")})}function m(){$t.get(\"/api/cmd_note\").then(Y=>{Y.data.code===0?a.value=Y.data.data:wt.error(\"获取主机列表错误\")})}function y(Y){try{s.current_host.ws.send(Y.cmd_data+`\n`)}catch{wt.error(\"当前会话执行命令失败\")}}function _(Y){try{if(s.host_tabs.length===0){wt.error(\"没有连接会话\");return}s.host_tabs.forEach(L=>{L.ws.send(Y.cmd_data+`\n`)})}catch{wt.error(\"执行命令失败\")}}function w(){const Y=document.createElement(\"input\");Y.type=\"file\",Y.addEventListener(\"change\",L=>{const Q=L.target.files;if(Q&&Q.length>0){let se=Q[0];if(!(se.size/1024/1024<1)){wt.error(\"上传文件大小不能超过 1MB!\");return}const ae=new FileReader;ae.onload=_e=>{s.cert_data=_e.target.result},ae.readAsText(se)}}),Y.click()}function S(){let Y={host:{},is_success:!1};return s.name.length===0?(wt.error(\"名称不能为空\"),Y):s.name.length>30?(wt.error(\"名称不能大于30个字符\"),Y):s.address.length===0?(wt.error(\"主机不能为空\"),Y):s.address.length>60?(wt.error(\"主机不能大于60个字符\"),Y):s.user.length===0?(wt.error(\"用户名不能为空\"),Y):s.user.length>60?(wt.error(\"用户名不能大于60个字符\"),Y):s.user.length===0?(wt.error(\"用户名不能为空\"),Y):s.user.length>60?(wt.error(\"用户名不能大于60个字符\"),Y):s.auth_type===\"pwd\"&&s.pwd.length===0?(wt.error(\"密码不能为空\"),Y):s.user.length>60?(wt.error(\"密码不能大于60个字符\"),Y):s.port?s.port<1||s.port>65535?(wt.error(\"端口范围错误,必须是1-65535\"),Y):s.auth_type===\"cert\"&&s.cert_data===\"\"?(wt.error(\"使用密钥登陆,密钥内容不能为空\"),Y):{host:{id:s.id,name:s.name,address:s.address,user:s.user,auth_type:s.auth_type,net_type:s.net_type,cert_data:s.cert_data,cert_pwd:s.cert_pwd,pwd:s.pwd,port:s.port,session_id:s.session_id,background:s.background,foreground:s.foreground,cursor_color:s.cursor_color,font_family:s.font_family,font_size:s.font_size,cursor_style:s.cursor_style,shell:s.shell,pty_type:s.pty_type,init_cmd:s.init_cmd,init_banner:s.init_banner},is_success:!0}:(wt.error(\"端口输入错误,必须是1-65535\"),Y)}function C(){s.id=0,s.name=\"\",s.address=\"\",s.user=\"\",s.pwd=\"\",s.auth_type=\"pwd\",s.net_type=\"tcp4\",s.cert_data=\"\",s.cert_pwd=\"\",s.port=22,s.session_id=\"\",s.background=\"#000000\",s.foreground=\"#FFFFFF\",s.cursor_color=\"#FFFFFF\",s.font_family=\"Courier\",s.font_size=16,s.cursor_style=\"block\",s.shell=\"bash\",s.pty_type=\"xterm-256color\",s.init_cmd=\"\",s.init_banner=\"\",s.host_config_collapse=[\"1\"]}function E(){let Y=S();Y.is_success&&N(Y.host)}function k(Y,L){s.file_dialog_visible=!0,L&&re(L.session_id);let Q={...s.current_host};if(!Q.hasOwnProperty(\"session_id\"))return;let se=new FormData;se.append(\"session_id\",Q.session_id),se.append(\"path\",Y),$t.post(\"/api/sftp/list\",se).then(ge=>{ge.data.code===0?(s.dir_info=ge.data.data,s.sftp_current_dir=Y):wt.error(\"获取文件列表错误\")})}function T(Y){s.sftp_upload_percentage=0;function L(se){let ge=new FormData;ge.append(\"session_id\",s.current_host.session_id),ge.append(\"path\",Y);for(let ae=0;ae<se.length;ae++)ge.append(\"files\",se[ae]);$t({url:\"/api/sftp/upload\",method:\"put\",data:ge,onUploadProgress:ae=>{const{loaded:_e,total:me}=ae;me?s.sftp_upload_percentage=_e/me*100|0:s.sftp_upload_percentage=_e}}).then(ae=>{if(ae.data.code===0){k(s.sftp_current_dir,s.current_host);let _e=ae.data.data;if(_e){let me=\"\";_e.forEach(Ce=>{me+=`<p>${Ce}</p>`}),KE({type:\"success\",duration:7e3,title:ae.data.msg,dangerouslyUseHTMLString:!0,message:me})}}else wt.error(\"上传失败\")}).catch(()=>{wt.error(\"上传异常\")})}let Q=document.createElement(\"input\");Q.type=\"file\",Q.multiple=!0,Q.onchange=function(se){let ge=Q.files;L(ge)},Q.click()}function x(Y){let L=`/api/sftp/download?Authorization=${localStorage.getItem(\"token\")}&session_id=${s.current_host.session_id}&path=${encodeURIComponent(Y.path).replace(/%/g,\"%25\")}`,Q=document.createElement(\"a\");Q.style.display=\"none\",Q.href=L,Q.download=Y.name,Q.click()}function M(Y){let L={session_id:s.current_host.session_id,path:Y.path};$t.delete(\"/api/sftp/delete\",{data:L}).then(Q=>{Q.data.code===0?(k(s.sftp_current_dir,s.current_host),wt.success(\"删除文件成功\")):wt.error(\"删除文件出错了\")})}function A(Y,L){let Q={session_id:L.session_id,path:Y};$t.post(\"/api/sftp/create_dir\",Q).then(se=>{se.data.code===0?(k(s.sftp_current_dir,s.current_host),wt.success(\"创建目录成功\")):wt.error(\"创建目录出错了\")})}function P(){$t.get(\"/api/conn_conf\").then(Y=>{Y.data.code===0?s.host_list=Y.data.data:wt.error(\"获取主机列表错误\")})}function G(Y,L){if(L==0){for(let Q=0;Q<s.host_list.length;Q++)if(s.host_list[Q].name==Y.name){wt.error(\"名称已经存在,请修改\");return}}s.host_dialog_visible=!1,L==0?$t.post(\"/api/conn_conf\",Y).then(Q=>{Q.data.code===0?(s.host_list=Q.data.data,C()):wt.error(\"新增出错了\")}):$t.put(\"/api/conn_conf\",Y).then(Q=>{Q.data.code===0?(s.host_list=Q.data.data,C()):wt.error(\"更新出错了\")})}function V(){C(),s.host_dialog_visible=!0,s.mode=0}function I(Y=!1){s.mode=0;let L=S();L.is_success&&(G(L.host,0),Y&&N(L.host))}function j(Y){s.host_dialog_visible=!0,s.mode=1,s.id=Y.id,s.address=Y.address,s.name=Y.name,s.user=Y.user,s.auth_type=Y.auth_type,s.net_type=Y.net_type,s.cert_data=Y.cert_data,s.cert_pwd=Y.cert_pwd,s.pwd=Y.pwd,s.port=Y.port,s.background=Y.background,s.foreground=Y.foreground,s.cursor_color=Y.cursor_color,s.font_family=Y.font_family,s.font_size=Y.font_size,s.cursor_style=Y.cursor_style,s.shell=Y.shell,s.pty_type=Y.pty_type,s.init_cmd=Y.init_cmd,s.init_banner=Y.init_banner,s.host_config_collapse=[\"1\"]}function F(Y=!1){let L=S();L.is_success&&(G(L.host,1),Y&&N(L.host))}function R(Y){$t.delete(`/api/conn_conf/${Y.id}`).then(L=>{L.data.code===0?(s.host_list=L.data.data,C()):wt.error(\"删除主机出错了\")})}function B(Y){if(Y.term)try{Y.fit.dispose(),Y.term.dispose(),Y.ws.close()}catch(Q){console.log(\"清理资源错误:\"+Q)}let L=document.getElementById(Y.session_id);return L&&(L.innerHTML=\"\"),{id:Y.id,name:Y.name,address:Y.address,user:Y.user,auth_type:Y.auth_type,net_type:Y.net_type,cert_data:Y.cert_data,cert_pwd:Y.cert_pwd,pwd:Y.pwd,port:Y.port,session_id:Y.session_id,background:Y.background,foreground:Y.foreground,cursor_color:Y.cursor_color,font_family:Y.font_family,font_size:Y.font_size,cursor_style:Y.cursor_style,shell:Y.shell,pty_type:Y.pty_type,init_cmd:Y.init_cmd,init_banner:Y.init_banner}}function N(Y,L=!1){s.host_dialog_visible=!1;let Q=\"/api/ssh/create_session\";L&&(Q+=`?session_id=${Y.session_id}`);let se=B(Y);$t.post(Q,se).then(ge=>{if(ge.data.code===0){let ae=ge.data.data;if(se.session_id=ae,se.fit=new ste.FitAddon,se.term=new ete.Terminal({cursorBlink:!0,theme:{background:se.background,foreground:se.foreground,cursor:se.cursor_color},fontSize:se.font_size,fontFamily:se.font_family,cursorStyle:se.cursor_style}),se.term.loadAddon(se.fit),L){for(let[_e,me]of s.host_tabs.entries())if(me.session_id===ae){se.is_close=!1,s.host_tabs[_e]=se;break}}else s.host_tabs.push(se);je(()=>{let _e=document.getElementById(se.session_id);if(_e===null){wt.error(\"创建连接获取dom为空!\");return}_e.style.height=Math.floor(window.innerHeight-70)+\"px\",se.term.open(_e),se.fit.fit();let me=`h=${se.term.rows}&w=${se.term.cols}&session_id=${se.session_id}&Authorization=${localStorage.getItem(\"token\")}`,Ce=`${location.protocol==\"http:\"?\"ws://\":\"wss://\"}${location.host}/api/ssh/conn?${me}`,Te=new WebSocket(Ce);Te.onopen=function(){try{let Se=se.init_banner.trim();Se!==\"\"&&se.term.writeln(Se),le();let Ie=se.init_cmd.trim();Ie!==\"\"&&Te.send(`${Ie}\n`)}catch(Se){console.log(Se)}},Te.onerror=function(Se){console.log(\"WebSocket error\"),se.term.writeln(\"##  连接出错,请重连!  ##\")},Te.onclose=function(){console.log(\"WebSocket close:\"+se.session_id),se.term.writeln(\"##  连接关闭,请重连!  ##\"),se.is_close=!0,s.current_host.session_id===ae&&(s.current_host.is_close=!0)},se.term.loadAddon(new nte.AttachAddon(Te)),se.ws=Te,se.is_close=!1,se.term.focus(),C(),s.current_host={...se}})}else wt.error(\"创建连接出错了\")}).catch(ge=>{wt.error(\"创建会话出错了\"),console.log(ge)})}function U(Y){try{$t.post(`/api/ssh/disconnect?session_id=${Y}`)}catch(Q){console.log(Q)}let L=0;for(let[Q,se]of s.host_tabs.entries())if(se.session_id===String(Y)){L=Q;break}if(s.host_tabs[L].fit.dispose(),s.host_tabs[L].term.dispose(),s.host_tabs[L].ws.close(),s.host_tabs.splice(L,1),s.host_tabs.length!==0){if(s.host_tabs.length===1){let Q={...s.host_tabs[0]};re(Q.session_id);return}if(s.host_tabs.length>1){let Q={...s.host_tabs[L-1]};re(Q.session_id)}}}function J(Y){let L=Y.props.name;s.current_host.session_id!==L&&re(L)}function re(Y){for(const L of s.host_tabs)if(L.session_id===Y){s.current_host={...L};break}le()}function le(){let Y=s.current_host;Y.session_id!==\"\"&&n.currentRoute.value.name===\"Home\"&&je(()=>{let L=document.getElementById(Y.session_id);if(L===null){console.log(\"调整窗口大小,没有获取到dom\");return}L.style.height=Math.floor(window.innerHeight-70)+\"px\",Y.fit.fit();let Q=`/api/ssh/conn?w=${Y.term.cols}&h=${Y.term.rows}&session_id=${Y.session_id}`;$t.patch(Q),s.h=Math.floor(Y.term.rows),s.w=Math.floor(Y.term.cols)})}function pe(){d=setInterval(()=>{let Y=new FormData;s.host_tabs.forEach(L=>{Y.append(\"ids\",L.session_id)}),$t.put(\"/api/conn_manage/refresh_conn_time\",Y).then(L=>{L.data.code!==0&&console.log(\"刷新失败\")})},1e4)}function K(){s.manage_dialog_visible=!0}function z(Y,L){let Q=0;return function(se){clearTimeout(Q),Q=setTimeout(()=>{Y()},L)}}function te(){s.host_tabs.forEach((Y,L)=>{try{$t.post(`/api/ssh/disconnect?session_id=${Y.session_id}`)}catch(Q){console.log(Q)}})}function oe(){te(),r.logout(),n.push({name:\"Login\"})}it(()=>{n=Su(),pe(),P(),m(),window.addEventListener(\"resize\",z(le,200)),le(),window.onbeforeunload=function(){return\"关闭吗\"}}),Pt(()=>{clearInterval(d),te(),window.onbeforeunload=null});const he=O(()=>{var Y,L,Q,se;return(se=(Q=(L=(Y=s.current_host)==null?void 0:Y.term)==null?void 0:L.options)==null?void 0:Q.theme)!=null&&se.background?s.current_host.term.options.theme.background:s.background||\"#000000\"});return(Y,L)=>{const Q=cn,se=Pk,ge=yn,ae=J2,_e=Ik,me=V2,Ce=Qv,Te=qC,Se=JC,Ie=Jv,be=Q2,Ae=H2,qe=Cn,tt=nE,et=c2,at=R2,ht=gm,Ct=t2,fe=wl,$e=fo,ce=r2,Re=e2,ne=wm,Pe=tE,rt=eE,mt=l2;return $(),ve(mt,null,{default:q(()=>[H(et,{style:{height:\"32px\",\"padding-left\":\"0px\",\"padding-right\":\"0px\",\"background-color\":\"#409eff\"}},{default:q(()=>[H(be,null,{default:q(()=>[H(Se,{span:12},{default:q(()=>[H(Ie,null,{default:q(()=>[H(c(xo),{placement:\"bottom\",trigger:\"click\",width:800},{reference:q(()=>[H(Q,{type:\"primary\",icon:c($6)},{default:q(()=>L[43]||(L[43]=[Ve(\"打开\")])),_:1},8,[\"icon\"])]),default:q(()=>[H(_e,{data:l.value,height:\"360\",\"show-overflow-tooltip\":!0},{default:q(()=>[H(se,{sortable:\"\",fixed:\"left\",width:\"150\",property:\"name\",label:\"名称\"}),H(se,{sortable:\"\",width:\"150\",property:\"address\",label:\"主机\"}),H(se,{sortable:\"\",width:\"100\",property:\"user\",label:\"用户\"}),H(se,{sortable:\"\",width:\"90\",property:\"port\",label:\"端口\"}),H(se,{label:\"操作\",fixed:\"right\"},{header:q(()=>[H(ge,{modelValue:i.value,\"onUpdate:modelValue\":L[0]||(L[0]=Me=>i.value=Me),placeholder:\"名称及主机搜索\"},null,8,[\"modelValue\"])]),default:q(Me=>[H(Q,{onClick:xt=>j(Me.row)},{default:q(()=>L[44]||(L[44]=[Ve(\"编辑\")])),_:2},1032,[\"onClick\"]),H(ae,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:xt=>R(Me.row)},{reference:q(()=>[H(Q,{type:\"danger\"},{default:q(()=>L[45]||(L[45]=[Ve(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"]),H(Q,{type:\"primary\",onClick:xt=>N(Me.row)},{default:q(()=>L[46]||(L[46]=[Ve(\"连接\")])),_:2},1032,[\"onClick\"])]),_:1})]),_:1},8,[\"data\"])]),_:1}),H(Q,{type:\"primary\",onClick:V,icon:c(i6)},{default:q(()=>L[47]||(L[47]=[Ve(\"新建\")])),_:1},8,[\"icon\"]),H(c(xo),{placement:\"bottom\",trigger:\"click\",width:800},{reference:q(()=>[H(Q,{type:\"primary\",icon:c(_6)},{default:q(()=>L[48]||(L[48]=[Ve(\"执行命令\")])),_:1},8,[\"icon\"])]),default:q(()=>[H(Ae,{model:c(o)},{default:q(()=>[H(me,{label:\"执行命令\"},{default:q(()=>[H(ge,{modelValue:c(o).data,\"onUpdate:modelValue\":L[1]||(L[1]=Me=>c(o).data=Me),type:\"textarea\",autocomplete:\"off\",placeholder:\"命令或脚本\"},null,8,[\"modelValue\"])]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:10},{default:q(()=>[H(me,{label:\"会话选择\"},{default:q(()=>[H(Te,{modelValue:c(o).node,\"onUpdate:modelValue\":L[2]||(L[2]=Me=>c(o).node=Me)},{default:q(()=>[H(Ce,{value:\"current\"},{default:q(()=>L[49]||(L[49]=[Ve(\"当前会话\")])),_:1}),H(Ce,{value:\"all\"},{default:q(()=>L[50]||(L[50]=[Ve(\"所有会话\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:14},{default:q(()=>[H(me,null,{default:q(()=>[H(ge,{modelValue:c(o).name,\"onUpdate:modelValue\":L[3]||(L[3]=Me=>c(o).name=Me),maxlength:\"32\",\"show-word-limit\":\"\",placeholder:\"如果需要收藏命令,请输入名称\"},{append:q(()=>[H(Ie,{style:{color:\"blue\"}},{default:q(()=>[H(Q,{onClick:p},{default:q(()=>L[51]||(L[51]=[Ve(\"收藏\")])),_:1}),H(Q,{onClick:b},{default:q(()=>L[52]||(L[52]=[Ve(\"执行\")])),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1})]),_:1})]),_:1},8,[\"model\"])]),_:1}),H(c(xo),{placement:\"bottom\",trigger:\"click\",width:800},{reference:q(()=>[H(Q,{type:\"primary\",icon:c(jS)},{default:q(()=>L[53]||(L[53]=[Ve(\"命令收藏\")])),_:1},8,[\"icon\"])]),default:q(()=>[H(_e,{data:f.value,height:\"260\"},{default:q(()=>[H(se,{sortable:\"\",width:\"180\",\"show-overflow-tooltip\":!0,property:\"cmd_name\",label:\"名称\"}),H(se,{sortable:\"\",property:\"cmd_data\",label:\"命令\"},{default:q(Me=>[H(c(xo),{effect:\"light\",trigger:\"hover\",placement:\"right\",width:\"auto\"},{default:q(()=>[L[56]||(L[56]=Z(\"div\",null,\"命令详情\",-1)),Z(\"div\",null,[H(ge,{modelValue:Me.row.cmd_data,\"onUpdate:modelValue\":xt=>Me.row.cmd_data=xt,style:{width:\"600px\"},autosize:{minRows:4,maxRows:20},type:\"textarea\",disabled:!0},null,8,[\"modelValue\",\"onUpdate:modelValue\"])]),Z(\"div\",null,[H(Ie,null,{default:q(()=>[H(qe,{effect:\"dark\",content:\"执行命令,发送到所有会话\",placement:\"top-start\"},{default:q(()=>[H(Q,{type:\"warning\",onClick:xt=>_(Me.row)},{default:q(()=>L[54]||(L[54]=[Ve(\"发送所有会话\")])),_:2},1032,[\"onClick\"])]),_:2},1024),H(qe,{effect:\"dark\",content:\"执行命令,发送到当前会话\",placement:\"top-start\"},{default:q(()=>[H(Q,{type:\"primary\",onClick:xt=>y(Me.row)},{default:q(()=>L[55]||(L[55]=[Ve(\"发送当前会话\")])),_:2},1032,[\"onClick\"])]),_:2},1024)]),_:2},1024)])]),reference:q(()=>[Ve(Ee(Me.row.cmd_data.substring(0,15)+\"...\"),1)]),_:2},1024)]),_:1}),H(se,{label:\"操作\",fixed:\"right\",width:\"320\"},{header:q(()=>[H(ge,{modelValue:u.value,\"onUpdate:modelValue\":L[4]||(L[4]=Me=>u.value=Me),placeholder:\"名称搜索\"},null,8,[\"modelValue\"])]),default:q(Me=>[H(Ie,null,{default:q(()=>[H(ae,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:xt=>g(Me.row.id)},{reference:q(()=>[H(Q,{type:\"danger\"},{default:q(()=>L[57]||(L[57]=[Ve(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"]),H(qe,{effect:\"dark\",content:\"执行命令,发送到所有会话\",placement:\"top-start\"},{default:q(()=>[H(Q,{type:\"warning\",onClick:xt=>_(Me.row)},{default:q(()=>L[58]||(L[58]=[Ve(\"发送所有会话\")])),_:2},1032,[\"onClick\"])]),_:2},1024),H(qe,{effect:\"dark\",content:\"执行命令,发送到当前会话\",placement:\"top-start\"},{default:q(()=>[H(Q,{type:\"primary\",onClick:xt=>y(Me.row)},{default:q(()=>L[59]||(L[59]=[Ve(\"发送当前会话\")])),_:2},1032,[\"onClick\"])]),_:2},1024)]),_:2},1024)]),_:1})]),_:1},8,[\"data\"])]),_:1})]),_:1})]),_:1}),H(Se,{span:12,style:{\"text-align\":\"right\"}},{default:q(()=>[H(Ie,null,{default:q(()=>[H(c(xo),{placement:\"top-start\",title:\"详情\",width:300,trigger:\"hover\"},{reference:q(()=>[H(Q,{type:\"primary\",icon:c(qS)},{default:q(()=>[Ve(Ee(c(r).userName),1)]),_:1},8,[\"icon\"])]),default:q(()=>[Z(\"p\",null,[H(tt,{type:\"info\"},{default:q(()=>[Ve(\"用户名称:  \"+Ee(c(r).userDesc),1)]),_:1})]),Z(\"p\",null,[H(tt,{type:\"info\"},{default:q(()=>[Ve(\"过期时间:  \"+Ee(c(r).userExpiryAt),1)]),_:1})])]),_:1}),H(Q,{type:\"primary\",icon:c(Z6),onClick:L[5]||(L[5]=Me=>c(s).modify_pwd_dialog_visible=!0)},{default:q(()=>L[60]||(L[60]=[Ve(\"修改密码\")])),_:1},8,[\"icon\"]),c(r).isAdmin===\"Y\"?($(),ve(Q,{key:0,type:\"danger\",icon:c(u6),onClick:K},{default:q(()=>L[61]||(L[61]=[Ve(\"管理\")])),_:1},8,[\"icon\"])):de(\"\",!0),H(ae,{confirmButtonText:\"退出\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定退出吗\",onConfirm:oe},{reference:q(()=>[H(Q,{icon:c(as),type:\"danger\"},{default:q(()=>L[62]||(L[62]=[Ve(\"退出\")])),_:1},8,[\"icon\"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1}),Z(\"div\",null,[H(at,{modelValue:c(s).modify_pwd_dialog_visible,\"onUpdate:modelValue\":L[9]||(L[9]=Me=>c(s).modify_pwd_dialog_visible=Me),title:\"修改密码\",width:\"500\",center:\"\"},{footer:q(()=>[Z(\"div\",ute,[H(Q,{onClick:L[8]||(L[8]=Me=>c(s).modify_pwd_dialog_visible=!1)},{default:q(()=>L[65]||(L[65]=[Ve(\"取消\")])),_:1}),H(Q,{type:\"primary\",onClick:v},{default:q(()=>L[66]||(L[66]=[Ve(\" 提交 \")])),_:1})])]),default:q(()=>[H(Ae,null,{default:q(()=>[H(me,null,{default:q(()=>[H(ge,{modelValue:c(s).new_pwd_one,\"onUpdate:modelValue\":L[6]||(L[6]=Me=>c(s).new_pwd_one=Me),trim:\"\",type:\"password\",minlength:\"3\",maxlength:\"64\",\"show-word-limit\":\"\",\"show-password\":\"\",clearable:\"\",placeholder:\"输入新密码\"},{prepend:q(()=>L[63]||(L[63]=[Ve(\"输入新密码\")])),_:1},8,[\"modelValue\"])]),_:1}),H(me,null,{default:q(()=>[H(ge,{modelValue:c(s).new_pwd_two,\"onUpdate:modelValue\":L[7]||(L[7]=Me=>c(s).new_pwd_two=Me),trim:\"\",type:\"password\",minlength:\"3\",maxlength:\"64\",\"show-word-limit\":\"\",\"show-password\":\"\",clearable:\"\",placeholder:\"确认新密码\"},{prepend:q(()=>L[64]||(L[64]=[Ve(\"确认新密码\")])),_:1},8,[\"modelValue\"])]),_:1})]),_:1})]),_:1},8,[\"modelValue\"]),H(at,{title:c(s).mode==0?\"新增主机\":\"更新主机\",modelValue:c(s).host_dialog_visible,\"onUpdate:modelValue\":L[34]||(L[34]=Me=>c(s).host_dialog_visible=Me),width:\"80%\",top:\"60px\"},{footer:q(()=>[Z(\"span\",dte,[H(Q,{onClick:L[29]||(L[29]=Me=>c(s).host_dialog_visible=!1)},{default:q(()=>L[72]||(L[72]=[Ve(\"取消\")])),_:1}),H(Q,{type:\"success\",onClick:E},{default:q(()=>L[73]||(L[73]=[Ve(\"连接\")])),_:1})]),L[78]||(L[78]=Ve(\"      \")),c(s).mode==0?($(),X(\"span\",fte,[H(Q,{type:\"primary\",onClick:L[30]||(L[30]=Me=>I(!1))},{default:q(()=>L[74]||(L[74]=[Ve(\"保存\")])),_:1}),H(Q,{type:\"primary\",onClick:L[31]||(L[31]=Me=>I(!0))},{default:q(()=>L[75]||(L[75]=[Ve(\"连接并保存\")])),_:1})])):de(\"\",!0),c(s).mode==1?($(),X(\"span\",hte,[H(Q,{type:\"primary\",onClick:L[32]||(L[32]=Me=>F(!1))},{default:q(()=>L[76]||(L[76]=[Ve(\"更新\")])),_:1}),H(Q,{type:\"primary\",onClick:L[33]||(L[33]=Me=>F(!0))},{default:q(()=>L[77]||(L[77]=[Ve(\"连接并更新\")])),_:1})])):de(\"\",!0)]),default:q(()=>[H(Ae,{\"label-width\":\"80px\",ref:\"host_from\"},{default:q(()=>[H(Re,{modelValue:c(s).host_config_collapse,\"onUpdate:modelValue\":L[28]||(L[28]=Me=>c(s).host_config_collapse=Me)},{default:q(()=>[H(Ct,{title:\"基础配置\",name:\"1\"},{default:q(()=>[H(be,null,{default:q(()=>[H(Se,{span:16},{default:q(()=>[H(me,{label:\"名称\",prop:\"name\"},{default:q(()=>[H(ge,{modelValue:c(s).name,\"onUpdate:modelValue\":L[10]||(L[10]=Me=>c(s).name=Me),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"30\",\"show-word-limit\":\"\",placeholder:\"请输入名称\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:16},{default:q(()=>[H(me,{label:\"主机\",prop:\"address\"},{default:q(()=>[H(ge,{modelValue:c(s).address,\"onUpdate:modelValue\":L[11]||(L[11]=Me=>c(s).address=Me),modelModifiers:{trim:!0},minlength:\"1\",maxlength:\"60\",\"show-word-limit\":\"\",placeholder:\"请输入主机地址\"},null,8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:8},{default:q(()=>[H(me,{label:\"网络\",prop:\"net_type\"},{default:q(()=>[H(Te,{modelValue:c(s).net_type,\"onUpdate:modelValue\":L[12]||(L[12]=Me=>c(s).net_type=Me)},{default:q(()=>[H(Ce,{value:\"tcp4\"},{default:q(()=>L[67]||(L[67]=[Ve(\"IPv4\")])),_:1}),H(Ce,{value:\"tcp6\"},{default:q(()=>L[68]||(L[68]=[Ve(\"IPv6\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:16},{default:q(()=>[H(me,{label:\"用户\",prop:\"user\"},{default:q(()=>[H(ge,{minlength:\"1\",maxlength:\"60\",modelValue:c(s).user,\"onUpdate:modelValue\":L[13]||(L[13]=Me=>c(s).user=Me),modelModifiers:{trim:!0},\"show-word-limit\":\"\",placeholder:\"请输入用户名\"},null,8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:8},{default:q(()=>[H(me,{label:\"端口\",prop:\"port\"},{default:q(()=>[H(ht,{modelValue:c(s).port,\"onUpdate:modelValue\":L[14]||(L[14]=Me=>c(s).port=Me),min:1,max:65535},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(me,{label:\"认证方式\"},{default:q(()=>[H(Te,{modelValue:c(s).auth_type,\"onUpdate:modelValue\":L[15]||(L[15]=Me=>c(s).auth_type=Me)},{default:q(()=>[H(Ce,{value:\"pwd\"},{default:q(()=>L[69]||(L[69]=[Ve(\"密码\")])),_:1}),H(Ce,{value:\"cert\"},{default:q(()=>L[70]||(L[70]=[Ve(\"密钥\")])),_:1})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),c(s).auth_type===\"cert\"?($(),ve(be,{key:0},{default:q(()=>[H(Se,{span:16},{default:q(()=>[H(me,{label:\"密钥\"},{default:q(()=>[H(ge,{modelValue:c(s).cert_data,\"onUpdate:modelValue\":L[16]||(L[16]=Me=>c(s).cert_data=Me),type:\"textarea\",placeholder:\"请输入密钥内容或上传\"},null,8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:8},{default:q(()=>[H(me,{label:\"上传\"},{default:q(()=>[H(Q,{type:\"primary\",onClick:w},{default:q(()=>L[71]||(L[71]=[Ve(\"上传密钥文件\")])),_:1})]),_:1})]),_:1})]),_:1})):de(\"\",!0),H(be,null,{default:q(()=>[H(Se,{span:16},{default:q(()=>[c(s).auth_type===\"cert\"?($(),ve(me,{key:0,label:\"密钥口令\",prop:\"cert_pwd\"},{default:q(()=>[H(ge,{minlength:\"\",maxlength:\"60\",modelValue:c(s).cert_pwd,\"onUpdate:modelValue\":L[17]||(L[17]=Me=>c(s).cert_pwd=Me),modelModifiers:{trim:!0},type:\"passrowd\",\"show-password\":\"\",\"show-word-limit\":\"\",placeholder:\"密钥口令\"},null,8,[\"modelValue\"])]),_:1})):de(\"\",!0)]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:16},{default:q(()=>[c(s).auth_type===\"pwd\"?($(),ve(me,{key:0,label:\"SSH密码\",prop:\"pwd\"},{default:q(()=>[H(ge,{minlength:\"1\",maxlength:\"60\",modelValue:c(s).pwd,\"onUpdate:modelValue\":L[18]||(L[18]=Me=>c(s).pwd=Me),modelModifiers:{trim:!0},type:\"passrowd\",\"show-password\":\"\",\"show-word-limit\":\"\",placeholder:\"SSH密码\"},null,8,[\"modelValue\"])]),_:1})):de(\"\",!0)]),_:1})]),_:1})]),_:1}),H(Ct,{title:\"高级配置\",name:\"2\"},{default:q(()=>[H(be,null,{default:q(()=>[H(Se,{span:9},{default:q(()=>[H(me,{label:\"终端类型\",prop:\"pty_type\"},{default:q(()=>[H($e,{style:{width:\"130px\"},modelValue:c(s).pty_type,\"onUpdate:modelValue\":L[19]||(L[19]=Me=>c(s).pty_type=Me),placeholder:\"请选择终端类型\"},{default:q(()=>[H(fe,{label:\"xterm-256color\",value:\"xterm-256color\"}),H(fe,{label:\"linux\",value:\"linux\"}),H(fe,{label:\"xtrem\",value:\"xtrem\"})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:5},{default:q(()=>[H(me,{label:\"字体颜色\",prop:\"foreground\"},{default:q(()=>[H(ce,{modelValue:c(s).foreground,\"onUpdate:modelValue\":L[20]||(L[20]=Me=>c(s).foreground=Me)},null,8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:5},{default:q(()=>[H(me,{label:\"背景颜色\",prop:\"background\"},{default:q(()=>[H(ce,{modelValue:c(s).background,\"onUpdate:modelValue\":L[21]||(L[21]=Me=>c(s).background=Me)},null,8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:5},{default:q(()=>[H(me,{label:\"光标颜色\",prop:\"cursor_color\"},{default:q(()=>[H(ce,{modelValue:c(s).cursor_color,\"onUpdate:modelValue\":L[22]||(L[22]=Me=>c(s).cursor_color=Me)},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:9},{default:q(()=>[H(me,{label:\"字体\"},{default:q(()=>[H($e,{style:{width:\"130px\"},modelValue:c(s).font_family,\"onUpdate:modelValue\":L[23]||(L[23]=Me=>c(s).font_family=Me),placeholder:\"请选择字体\"},{default:q(()=>[H(fe,{label:\"Courier\",value:\"Courier\"}),H(fe,{label:\"Courier New\",value:\"Courier New\"}),H(fe,{label:\"Menlo\",value:\"Menlo\"}),H(fe,{label:\"Monaco\",value:\"Monaco\"}),H(fe,{label:\"monospace\",value:\"monospace\"})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:5},{default:q(()=>[H(me,{label:\"字体大小\"},{default:q(()=>[H($e,{modelValue:c(s).font_size,\"onUpdate:modelValue\":L[24]||(L[24]=Me=>c(s).font_size=Me),modelModifiers:{number:!0},placeholder:\"请选择字体大小\"},{default:q(()=>[H(fe,{label:\"8\",value:\"8\"}),H(fe,{label:\"12\",value:\"12\"}),H(fe,{label:\"14\",value:\"14\"}),H(fe,{label:\"16\",value:\"16\"}),H(fe,{label:\"18\",value:\"18\"}),H(fe,{label:\"20\",value:\"20\"}),H(fe,{label:\"22\",value:\"22\"}),H(fe,{label:\"24\",value:\"24\"}),H(fe,{label:\"26\",value:\"26\"}),H(fe,{label:\"28\",value:\"28\"}),H(fe,{label:\"30\",value:\"30\"}),H(fe,{label:\"32\",value:\"32\"}),H(fe,{label:\"34\",value:\"34\"})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:4},{default:q(()=>[H(me,{label:\"光标样式\"},{default:q(()=>[H($e,{modelValue:c(s).cursor_style,\"onUpdate:modelValue\":L[25]||(L[25]=Me=>c(s).cursor_style=Me),placeholder:\"请选择光标样式\"},{default:q(()=>[H(fe,{label:\"块状\",value:\"block\"}),H(fe,{label:\"下划线\",value:\"underline\"}),H(fe,{label:\"竖线\",value:\"bar\"})]),_:1},8,[\"modelValue\"])]),_:1})]),_:1}),H(Se,{span:6})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:24},{default:q(()=>[H(me,{label:\"连接命令\"},{default:q(()=>[H(ge,{modelValue:c(s).init_cmd,\"onUpdate:modelValue\":L[26]||(L[26]=Me=>c(s).init_cmd=Me),type:\"textarea\",row:1,placeholder:\"请输入连接后执行命令\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:24},{default:q(()=>[H(me,{label:\"连接横幅\"},{default:q(()=>[H(ge,{modelValue:c(s).init_banner,\"onUpdate:modelValue\":L[27]||(L[27]=Me=>c(s).init_banner=Me),type:\"textarea\",row:1,placeholder:\"请输入连接后提示横幅\"},null,8,[\"modelValue\"])]),_:1})]),_:1})]),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1},512)]),_:1},8,[\"title\",\"modelValue\"]),H(at,{modelValue:c(s).file_dialog_visible,\"onUpdate:modelValue\":L[40]||(L[40]=Me=>c(s).file_dialog_visible=Me),width:\"80%\",\"custom-class\":\"file-dialog\",top:\"60px\"},{header:q(()=>[Z(\"span\",{innerHTML:h.value},null,8,pte)]),default:q(()=>[H(Ie,{style:{width:\"auto\",display:\"flex\",\"flex-wrap\":\"nowrap\",\"overflow-x\":\"auto\"}},{default:q(()=>[($(!0),X(We,null,vt(c(s).dir_info.paths,(Me,xt)=>($(),ve(Q,{key:xt,onClick:nn=>k(Me.dir,c(s).current_host)},{default:q(()=>[Ve(Ee(Me.name),1)]),_:2},1032,[\"onClick\"]))),128))]),_:1}),H(me,{style:{\"margin-top\":\"10px\"}},{default:q(()=>[H(ge,{modelValue:c(s).sftp_current_dir,\"onUpdate:modelValue\":L[39]||(L[39]=Me=>c(s).sftp_current_dir=Me),style:{width:\"100%\"},placeholder:\"请输入路径\",class:\"input-with-select\"},{append:q(()=>[H(Ie,{style:{color:\"blue\"}},{default:q(()=>[H(Q,{onClick:L[35]||(L[35]=Me=>k(c(s).sftp_current_dir,c(s).current_host))},{default:q(()=>L[79]||(L[79]=[Ve(\"进入\")])),_:1}),H(Q,{onClick:L[36]||(L[36]=Me=>T(c(s).sftp_current_dir))},{default:q(()=>L[80]||(L[80]=[Ve(\"上传\")])),_:1}),H(Q,{onClick:L[37]||(L[37]=Me=>A(c(s).sftp_current_dir,c(s).current_host))},{default:q(()=>L[81]||(L[81]=[Ve(\"创建目录\")])),_:1}),H(Q,{onClick:L[38]||(L[38]=Me=>k(c(s).sftp_current_dir,c(s).current_host))},{default:q(()=>L[82]||(L[82]=[Ve(\"刷新\")])),_:1})]),_:1})]),_:1},8,[\"modelValue\"])]),_:1}),H(be,null,{default:q(()=>[H(Se,{span:24},{default:q(()=>[H(ne,{percentage:c(s).sftp_upload_percentage},null,8,[\"percentage\"])]),_:1})]),_:1}),H(_e,{data:c(s).dir_info.files,height:\"400\",\"show-overflow-tooltip\":!0},{default:q(()=>[H(se,{prop:\"name\",label:\"文件名\",fixed:\"left\",sortable:\"\"},{default:q(Me=>[Me.row.type===\"f\"?($(),ve(Q,{key:0,onClick:xt=>x(Me.row),type:\"primary\",link:\"\",icon:c(y6),style:{color:\"green\"}},{default:q(()=>[Ve(Ee(Me.row.name),1)]),_:2},1032,[\"onClick\",\"icon\"])):de(\"\",!0),Me.row.type===\"d\"?($(),ve(Q,{key:1,onClick:xt=>k(Me.row.path,c(s).current_host),type:\"primary\",link:\"\",icon:c(S6)},{default:q(()=>[Ve(Ee(Me.row.name),1)]),_:2},1032,[\"onClick\",\"icon\"])):de(\"\",!0)]),_:1}),H(se,{prop:\"size\",label:\"大小\",width:\"100\",sortable:\"\"}),H(se,{prop:\"mode\",label:\"权限\",width:\"100\",sortable:\"\"}),H(se,{prop:\"mod_time\",label:\"修改日期\",width:\"180\",sortable:\"\"}),H(se,{label:\"操作\",width:\"180\",fixed:\"right\"},{default:q(Me=>[H(Ie,null,{default:q(()=>[Me.row.type==\"f\"?($(),ve(Q,{key:0,onClick:xt=>x(Me.row),type:\"success\",icon:c(qP)},{default:q(()=>L[83]||(L[83]=[Ve(\"下载\")])),_:2},1032,[\"onClick\",\"icon\"])):($(),ve(Q,{key:1,type:\"primary\",icon:c(cD),onClick:xt=>T(Me.row.path)},{default:q(()=>L[84]||(L[84]=[Ve(\"上传\")])),_:2},1032,[\"icon\",\"onClick\"])),H(ae,{confirmButtonText:\"删除\",cancelButtonText:\"取消\",icon:\"el-icon-info\",iconColor:\"red\",title:\"确定删除吗\",onConfirm:xt=>M(Me.row)},{reference:q(()=>[H(Q,{type:\"danger\"},{default:q(()=>L[85]||(L[85]=[Ve(\"删除\")])),_:1})]),_:2},1032,[\"onConfirm\"])]),_:2},1024)]),_:1})]),_:1},8,[\"data\"])]),_:1},8,[\"modelValue\"]),H(at,{title:\"系统管理\",modelValue:c(s).manage_dialog_visible,\"onUpdate:modelValue\":L[41]||(L[41]=Me=>c(s).manage_dialog_visible=Me),fullscreen:!0},{default:q(()=>[H(c(t))]),_:1},8,[\"modelValue\"])]),c(s).host_tabs.length===0?($(),X(\"div\",vte,[H(cte)])):($(),X(\"div\",mte,[H(rt,{modelValue:c(s).current_host.session_id,\"onUpdate:modelValue\":L[42]||(L[42]=Me=>c(s).current_host.session_id=Me),type:\"card\",closable:\"\",onTabRemove:U,onTabClick:J},{default:q(()=>[($(!0),X(We,null,vt(c(s).host_tabs,Me=>($(),ve(Pe,{key:Me.session_id,label:Me.name,name:Me.session_id},{label:q(()=>[H(Ie,{style:{width:\"auto\",display:\"flex\",\"flex-wrap\":\"nowrap\",\"overflow-x\":\"auto\"}},{default:q(()=>[H(c(xo),{placement:\"bottom\",width:400,trigger:\"hover\"},{reference:q(()=>[H(Q,{type:Me.session_id===c(s).current_host.session_id?\"primary\":\"info\"},{default:q(()=>[Me.is_close?($(),X(\"span\",gte,Ee(Me.name),1)):($(),X(\"span\",_te,Ee(Me.name),1))]),_:2},1032,[\"type\"])]),default:q(()=>[Z(\"div\",null,[Z(\"div\",bte,[H(Ie,null,{default:q(()=>[H(Q,{type:\"primary\",onClick:xt=>N(Me,!0)},{default:q(()=>L[86]||(L[86]=[Ve(\"重连\")])),_:2},1032,[\"onClick\"]),H(Q,{type:\"primary\",onClick:xt=>Me.term.clear()},{default:q(()=>L[87]||(L[87]=[Ve(\"清空缓冲区\")])),_:2},1032,[\"onClick\"])]),_:2},1024)]),Z(\"div\",yte,[Z(\"div\",null,[H(ge,{disabled:\"\",modelValue:Me.session_id,\"onUpdate:modelValue\":xt=>Me.session_id=xt},{prepend:q(()=>L[88]||(L[88]=[Ve(\"会话\")])),_:2},1032,[\"modelValue\",\"onUpdate:modelValue\"])]),Z(\"div\",null,[H(ge,{disabled:\"\",modelValue:Me.address,\"onUpdate:modelValue\":xt=>Me.address=xt},{prepend:q(()=>L[89]||(L[89]=[Ve(\"主机\")])),_:2},1032,[\"modelValue\",\"onUpdate:modelValue\"])]),Z(\"div\",null,[H(ge,{disabled:\"\",modelValue:Me.user,\"onUpdate:modelValue\":xt=>Me.user=xt},{prepend:q(()=>L[90]||(L[90]=[Ve(\"用户\")])),_:2},1032,[\"modelValue\",\"onUpdate:modelValue\"])]),Z(\"div\",null,[H(ge,{disabled:\"\",modelValue:Me.port,\"onUpdate:modelValue\":xt=>Me.port=xt},{prepend:q(()=>L[91]||(L[91]=[Ve(\"端口\")])),_:2},1032,[\"modelValue\",\"onUpdate:modelValue\"])])])])]),_:2},1024),H(qe,{class:\"item\",effect:\"dark\",content:\"文件传输\",placement:\"top\"},{default:q(()=>[H(Q,{type:Me.session_id===c(s).current_host.session_id?\"primary\":\"info\",onClick:xt=>k(\"/\",Me),icon:c(sD)},null,8,[\"type\",\"onClick\",\"icon\"])]),_:2},1024)]),_:2},1024)]),default:q(()=>[Z(\"div\",wte,[Z(\"div\",{id:Me.session_id,style:{width:\"100vw\",height:\"100vh\"}},null,8,Ste)])]),_:2},1032,[\"label\",\"name\"]))),128))]),_:1},8,[\"modelValue\"])]))]),_:1})}}}),by=Jm(Cte,[[\"__scopeId\",\"data-v-5fa8db59\"]]),kte={class:\"login-container\"},Ete={class:\"login-box\"},Tte={class:\"login-form\"},Rte={class:\"form-item\"},xte={class:\"form-item\"},Ote={class:\"form-item\"},Mte=ee({__name:\"Login\",setup(e){let t=Su(),n=hd(),r=St({name:\"\",pwd:\"\"});function s(){if(r.name.trim().length<2){wt.error(\"用户名至少两个字符\");return}if(r.pwd.trim().length<2){wt.error(\"密码至少两个字符\");return}$t.post(\"/api/login\",r).then(o=>{if(o.data.code===0){wt.success(\"登陆成功\"),localStorage.setItem(\"token\",o.data.token),localStorage.setItem(\"auth\",\"yes\");let a=o.data;n.login(a.is_admin,a.is_root,a.user_name,a.user_desc,a.user_expiry_at),t.push({name:\"Home\"})}else wt.error(\"登陆失败\")}).catch(()=>{wt.error(\"登陆失败\")})}return(o,a)=>{const i=yn,l=cn;return $(),X(\"div\",kte,[Z(\"div\",Ete,[a[3]||(a[3]=Z(\"div\",{class:\"login-header\"},[Z(\"h1\",null,\"欢迎登录\"),Z(\"p\",null,\"Web Terminal Management System\")],-1)),Z(\"div\",Tte,[Z(\"div\",Rte,[H(i,{modelValue:c(r).name,\"onUpdate:modelValue\":a[0]||(a[0]=u=>c(r).name=u),placeholder:\"请输入用户名\",\"prefix-icon\":c(qS),trim:\"\",minlength:\"1\",maxlength:\"64\",\"show-word-limit\":\"\",clearable:\"\"},null,8,[\"modelValue\",\"prefix-icon\"])]),Z(\"div\",xte,[H(i,{modelValue:c(r).pwd,\"onUpdate:modelValue\":a[1]||(a[1]=u=>c(r).pwd=u),placeholder:\"请输入密码\",\"prefix-icon\":c(M6),type:\"password\",trim:\"\",minlength:\"3\",maxlength:\"64\",\"show-word-limit\":\"\",\"show-password\":\"\",clearable:\"\"},null,8,[\"modelValue\",\"prefix-icon\"])]),Z(\"div\",Ote,[H(l,{type:\"primary\",class:\"login-button\",onClick:s},{default:q(()=>a[2]||(a[2]=[Ve(\" 登录 \")])),_:1})])])])])}}}),Ate=Jm(Mte,[[\"__scopeId\",\"data-v-f15d6b48\"]]);let $te=\"./\";const Uu=Ox({history:sx($te),routes:[{path:\"/\",name:\"Home\",component:by},{path:\"/app\",name:\"Home\",component:by},{path:\"/login\",name:\"Login\",component:Ate},{path:\"/manage\",name:\"Manage\",component:()=>$a(()=>import(\"./Manage-D_HsZWaT.js\"),__vite__mapDeps([0,1,2]),import.meta.url)},{path:\"/sys-init\",name:\"SysInit\",component:()=>$a(()=>import(\"./SysInit-UcmoR0-x.js\"),__vite__mapDeps([3,4,2]),import.meta.url)},{path:\"/about\",name:\"About\",component:()=>$a(()=>import(\"./About-BpAaEtx1.js\"),__vite__mapDeps([5,6]),import.meta.url)},{path:\"/:all(.*)\",name:\"NotFound\",component:()=>$a(()=>import(\"./NotFound-Ts0Rt7lc.js\"),[],import.meta.url)}]}),Lte=/\"(?:_|\\\\u0{2}5[Ff]){2}(?:p|\\\\u0{2}70)(?:r|\\\\u0{2}72)(?:o|\\\\u0{2}6[Ff])(?:t|\\\\u0{2}74)(?:o|\\\\u0{2}6[Ff])(?:_|\\\\u0{2}5[Ff]){2}\"\\s*:/,Ite=/\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/,Pte=/^\\s*[\"[{]|^\\s*-?\\d{1,16}(\\.\\d{1,17})?([Ee][+-]?\\d+)?\\s*$/;function Dte(e,t){if(e===\"__proto__\"||e===\"constructor\"&&t&&typeof t==\"object\"&&\"prototype\"in t){Bte(e);return}return t}function Bte(e){console.warn(`[destr] Dropping \"${e}\" key to prevent prototype pollution.`)}function Nte(e,t={}){if(typeof e!=\"string\")return e;const n=e.trim();if(e[0]==='\"'&&e.endsWith('\"')&&!e.includes(\"\\\\\"))return n.slice(1,-1);if(n.length<=9){const r=n.toLowerCase();if(r===\"true\")return!0;if(r===\"false\")return!1;if(r===\"undefined\")return;if(r===\"null\")return null;if(r===\"nan\")return Number.NaN;if(r===\"infinity\")return Number.POSITIVE_INFINITY;if(r===\"-infinity\")return Number.NEGATIVE_INFINITY}if(!Pte.test(e)){if(t.strict)throw new SyntaxError(\"[destr] Invalid JSON\");return e}try{if(Lte.test(e)||Ite.test(e)){if(t.strict)throw new Error(\"[destr] Possible prototype pollution\");return JSON.parse(e,Dte)}return JSON.parse(e)}catch(r){if(t.strict)throw r;return e}}function Fte(e,t){if(e==null)return;let n=e;for(let r=0;r<t.length;r++){if(n==null||n[t[r]]==null)return;n=n[t[r]]}return n}function Zm(e,t,n){if(n.length===0)return t;const r=n[0];return n.length>1&&(t=Zm(typeof e!=\"object\"||e===null||!Object.prototype.hasOwnProperty.call(e,r)?Number.isInteger(Number(n[1]))?[]:{}:e[r],t,Array.prototype.slice.call(n,1))),Number.isInteger(Number(r))&&Array.isArray(e)?e.slice()[r]:Object.assign({},e,{[r]:t})}function UE(e,t){if(e==null||t.length===0)return e;if(t.length===1){if(e==null)return e;if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.slice.call(e,0).splice(t[0],1);const n={};for(const r in e)n[r]=e[r];return delete n[t[0]],n}if(e[t[0]]==null){if(Number.isInteger(t[0])&&Array.isArray(e))return Array.prototype.concat.call([],e);const n={};for(const r in e)n[r]=e[r];return n}return Zm(e,UE(e[t[0]],Array.prototype.slice.call(t,1)),[t[0]])}function qE(e,t){return t.map(n=>n.split(\".\")).map(n=>[n,Fte(e,n)]).filter(n=>n[1]!==void 0).reduce((n,r)=>Zm(n,r[1],r[0]),{})}function YE(e,t){return t.map(n=>n.split(\".\")).reduce((n,r)=>UE(n,r),e)}function yy(e,{storage:t,serializer:n,key:r,debug:s,pick:o,omit:a,beforeHydrate:i,afterHydrate:l},u,f=!0){try{f&&(i==null||i(u));const d=t.getItem(r);if(d){const h=n.deserialize(d),v=o?qE(h,o):h,b=a?YE(v,a):v;e.$patch(b)}f&&(l==null||l(u))}catch(d){s&&console.error(\"[pinia-plugin-persistedstate]\",d)}}function wy(e,{storage:t,serializer:n,key:r,debug:s,pick:o,omit:a}){try{const i=o?qE(e,o):e,l=a?YE(i,a):i,u=n.serialize(l);t.setItem(r,u)}catch(i){s&&console.error(\"[pinia-plugin-persistedstate]\",i)}}function Hte(e,t,n){const{pinia:r,store:s,options:{persist:o=n}}=e;if(!o)return;if(!(s.$id in r.state.value)){const l=r._s.get(s.$id.replace(\"__hot:\",\"\"));l&&Promise.resolve().then(()=>l.$persist());return}const i=(Array.isArray(o)?o:o===!0?[{}]:[o]).map(t);s.$hydrate=({runHooks:l=!0}={})=>{i.forEach(u=>{yy(s,u,e,l)})},s.$persist=()=>{i.forEach(l=>{wy(s.$state,l)})},i.forEach(l=>{yy(s,l,e),s.$subscribe((u,f)=>wy(f,l),{detached:!0})})}function Vte(e={}){return function(t){Hte(t,n=>({key:(e.key?e.key:r=>r)(n.key??t.store.$id),debug:n.debug??e.debug??!1,serializer:n.serializer??e.serializer??{serialize:r=>JSON.stringify(r),deserialize:r=>Nte(r)},storage:n.storage??e.storage??window.localStorage,beforeHydrate:n.beforeHydrate,afterHydrate:n.afterHydrate,pick:n.pick,omit:n.omit}),e.auto??!1)}}var zte=Vte();const Wd=q1(iO),GE=yR();GE.use(zte);Wd.use(GE);Wd.use(Zee,{zIndex:2e3});Wd.use(Uu);let Sy=hd();Uu.beforeEach((e,t)=>{if(!Sy.isInit&&e.name===\"SysInit\"||e.name===\"Login\")return!0;var n=localStorage.getItem(\"auth\");return n===\"yes\"&&Sy.isLogin?!0:(Uu.push({name:\"Login\"}),!1)});$t.interceptors.request.use(e=>(e.headers.Time=String(new Date().getTime()),e.headers.Authorization=localStorage.getItem(\"token\"),e),e=>Promise.reject(e));$t.interceptors.response.use(e=>{let t=e.headers.newtoken;return t&&localStorage.setItem(\"token\",t),e},e=>(e.response&&e.response.status===401&&Uu.replace({name:\"Login\"}),Promise.reject(e)));Wd.mount(\"#app\");export{W as A,O as B,X as C,wl as D,wt as E,fo as F,JC as G,Yi as H,gm as I,lj as J,hd as K,Su as L,eE as M,_V as N,l2 as O,Dl as P,de as Q,Ee as R,c2 as S,Sq as T,wq as U,x2 as V,Dj as W,W2 as X,Jm as _,$ as a,H as b,ve as c,ee as d,Ve as e,Z as f,$t as g,Pk as h,cn as i,J2 as j,Ik as k,Q2 as l,z5 as m,yn as n,it as o,V2 as p,Qv as q,St as r,qC as s,W9 as t,c as u,H2 as v,q as w,R2 as x,tE as y,Je as z};\n"
  },
  {
    "path": "gossh/webroot/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"zh-cn\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <link rel=\"icon\" href=\"./favicon.ico\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>GoWebSSH</title>\n    <style>\n      html,\n      body,\n      #app {\n        height: 100%;\n        margin: 0px;\n        padding: 0px;\n        font-family: \"Helvetica Neue\", Helvetica, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"微软雅黑\", Arial, sans-serif;\n      }\n    </style>\n    <script type=\"module\" crossorigin src=\"./assets/index-jH42E5tC.js\"></script>\n    <link rel=\"stylesheet\" crossorigin href=\"./assets/index-D6GWZ696.css\">\n  </head>\n\n  <body>\n    <noscript>\n      <strong>请开启JavaScript支持</strong>\n    </noscript>\n    <div id=\"app\"></div>\n  </body>\n\n</html>\n"
  },
  {
    "path": "gossh/webroot/readme.md",
    "content": "gowebssh"
  },
  {
    "path": "gossh/websocket/client.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"bytes\"\n\t\"context\"\n\t\"crypto/tls\"\n\t\"errors\"\n\t\"fmt\"\n\t\"io\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/http/httptrace\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n)\n\n// ErrBadHandshake is returned when the server response to opening handshake is\n// invalid.\nvar ErrBadHandshake = errors.New(\"websocket: bad handshake\")\n\nvar errInvalidCompression = errors.New(\"websocket: invalid compression negotiation\")\n\n// NewClient creates a new client connection using the given net connection.\n// The URL u specifies the host and request URI. Use requestHeader to specify\n// the origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies\n// (Cookie). Use the response.Header to get the selected subprotocol\n// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).\n//\n// If the WebSocket handshake fails, ErrBadHandshake is returned along with a\n// non-nil *http.Response so that callers can handle redirects, authentication,\n// etc.\n//\n// Deprecated: Use Dialer instead.\nfunc NewClient(netConn net.Conn, u *url.URL, requestHeader http.Header, readBufSize, writeBufSize int) (c *Conn, response *http.Response, err error) {\n\td := Dialer{\n\t\tReadBufferSize:  readBufSize,\n\t\tWriteBufferSize: writeBufSize,\n\t\tNetDial: func(net, addr string) (net.Conn, error) {\n\t\t\treturn netConn, nil\n\t\t},\n\t}\n\treturn d.Dial(u.String(), requestHeader)\n}\n\n// A Dialer contains options for connecting to WebSocket server.\n//\n// It is safe to call Dialer's methods concurrently.\ntype Dialer struct {\n\t// NetDial specifies the dial function for creating TCP connections. If\n\t// NetDial is nil, net.Dialer DialContext is used.\n\tNetDial func(network, addr string) (net.Conn, error)\n\n\t// NetDialContext specifies the dial function for creating TCP connections. If\n\t// NetDialContext is nil, NetDial is used.\n\tNetDialContext func(ctx context.Context, network, addr string) (net.Conn, error)\n\n\t// NetDialTLSContext specifies the dial function for creating TLS/TCP connections. If\n\t// NetDialTLSContext is nil, NetDialContext is used.\n\t// If NetDialTLSContext is set, Dial assumes the TLS handshake is done there and\n\t// TLSClientConfig is ignored.\n\tNetDialTLSContext func(ctx context.Context, network, addr string) (net.Conn, error)\n\n\t// Proxy specifies a function to return a proxy for a given\n\t// Request. If the function returns a non-nil error, the\n\t// request is aborted with the provided error.\n\t// If Proxy is nil or returns a nil *URL, no proxy is used.\n\tProxy func(*http.Request) (*url.URL, error)\n\n\t// TLSClientConfig specifies the TLS configuration to use with tls.Client.\n\t// If nil, the default configuration is used.\n\t// If either NetDialTLS or NetDialTLSContext are set, Dial assumes the TLS handshake\n\t// is done there and TLSClientConfig is ignored.\n\tTLSClientConfig *tls.Config\n\n\t// HandshakeTimeout specifies the duration for the handshake to complete.\n\tHandshakeTimeout time.Duration\n\n\t// ReadBufferSize and WriteBufferSize specify I/O buffer sizes in bytes. If a buffer\n\t// size is zero, then a useful default size is used. The I/O buffer sizes\n\t// do not limit the size of the messages that can be sent or received.\n\tReadBufferSize, WriteBufferSize int\n\n\t// WriteBufferPool is a pool of buffers for write operations. If the value\n\t// is not set, then write buffers are allocated to the connection for the\n\t// lifetime of the connection.\n\t//\n\t// A pool is most useful when the application has a modest volume of writes\n\t// across a large number of connections.\n\t//\n\t// Applications should use a single pool for each unique value of\n\t// WriteBufferSize.\n\tWriteBufferPool BufferPool\n\n\t// Subprotocols specifies the client's requested subprotocols.\n\tSubprotocols []string\n\n\t// EnableCompression specifies if the client should attempt to negotiate\n\t// per message compression (RFC 7692). Setting this value to true does not\n\t// guarantee that compression will be supported. Currently only \"no context\n\t// takeover\" modes are supported.\n\tEnableCompression bool\n\n\t// Jar specifies the cookie jar.\n\t// If Jar is nil, cookies are not sent in requests and ignored\n\t// in responses.\n\tJar http.CookieJar\n}\n\n// Dial creates a new client connection by calling DialContext with a background context.\nfunc (d *Dialer) Dial(urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) {\n\treturn d.DialContext(context.Background(), urlStr, requestHeader)\n}\n\nvar errMalformedURL = errors.New(\"malformed ws or wss URL\")\n\nfunc hostPortNoPort(u *url.URL) (hostPort, hostNoPort string) {\n\thostPort = u.Host\n\thostNoPort = u.Host\n\tif i := strings.LastIndex(u.Host, \":\"); i > strings.LastIndex(u.Host, \"]\") {\n\t\thostNoPort = hostNoPort[:i]\n\t} else {\n\t\tswitch u.Scheme {\n\t\tcase \"wss\":\n\t\t\thostPort += \":443\"\n\t\tcase \"https\":\n\t\t\thostPort += \":443\"\n\t\tdefault:\n\t\t\thostPort += \":80\"\n\t\t}\n\t}\n\treturn hostPort, hostNoPort\n}\n\n// DefaultDialer is a dialer with all fields set to the default values.\nvar DefaultDialer = &Dialer{\n\tProxy:            http.ProxyFromEnvironment,\n\tHandshakeTimeout: 45 * time.Second,\n}\n\n// nilDialer is dialer to use when receiver is nil.\nvar nilDialer = *DefaultDialer\n\n// DialContext creates a new client connection. Use requestHeader to specify the\n// origin (Origin), subprotocols (Sec-WebSocket-Protocol) and cookies (Cookie).\n// Use the response.Header to get the selected subprotocol\n// (Sec-WebSocket-Protocol) and cookies (Set-Cookie).\n//\n// The context will be used in the request and in the Dialer.\n//\n// If the WebSocket handshake fails, ErrBadHandshake is returned along with a\n// non-nil *http.Response so that callers can handle redirects, authentication,\n// etcetera. The response body may not contain the entire response and does not\n// need to be closed by the application.\nfunc (d *Dialer) DialContext(ctx context.Context, urlStr string, requestHeader http.Header) (*Conn, *http.Response, error) {\n\tif d == nil {\n\t\td = &nilDialer\n\t}\n\n\tchallengeKey, err := generateChallengeKey()\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tu, err := url.Parse(urlStr)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tswitch u.Scheme {\n\tcase \"ws\":\n\t\tu.Scheme = \"http\"\n\tcase \"wss\":\n\t\tu.Scheme = \"https\"\n\tdefault:\n\t\treturn nil, nil, errMalformedURL\n\t}\n\n\tif u.User != nil {\n\t\t// User name and password are not allowed in websocket URIs.\n\t\treturn nil, nil, errMalformedURL\n\t}\n\n\treq := &http.Request{\n\t\tMethod:     http.MethodGet,\n\t\tURL:        u,\n\t\tProto:      \"HTTP/1.1\",\n\t\tProtoMajor: 1,\n\t\tProtoMinor: 1,\n\t\tHeader:     make(http.Header),\n\t\tHost:       u.Host,\n\t}\n\treq = req.WithContext(ctx)\n\n\t// Set the cookies present in the cookie jar of the dialer\n\tif d.Jar != nil {\n\t\tfor _, cookie := range d.Jar.Cookies(u) {\n\t\t\treq.AddCookie(cookie)\n\t\t}\n\t}\n\n\t// Set the request headers using the capitalization for names and values in\n\t// RFC examples. Although the capitalization shouldn't matter, there are\n\t// servers that depend on it. The Header.Set method is not used because the\n\t// method canonicalizes the header names.\n\treq.Header[\"Upgrade\"] = []string{\"websocket\"}\n\treq.Header[\"Connection\"] = []string{\"Upgrade\"}\n\treq.Header[\"Sec-WebSocket-Key\"] = []string{challengeKey}\n\treq.Header[\"Sec-WebSocket-Version\"] = []string{\"13\"}\n\tif len(d.Subprotocols) > 0 {\n\t\treq.Header[\"Sec-WebSocket-Protocol\"] = []string{strings.Join(d.Subprotocols, \", \")}\n\t}\n\tfor k, vs := range requestHeader {\n\t\tswitch {\n\t\tcase k == \"Host\":\n\t\t\tif len(vs) > 0 {\n\t\t\t\treq.Host = vs[0]\n\t\t\t}\n\t\tcase k == \"Upgrade\" ||\n\t\t\tk == \"Connection\" ||\n\t\t\tk == \"Sec-Websocket-Key\" ||\n\t\t\tk == \"Sec-Websocket-Version\" ||\n\t\t\tk == \"Sec-Websocket-Extensions\" ||\n\t\t\t(k == \"Sec-Websocket-Protocol\" && len(d.Subprotocols) > 0):\n\t\t\treturn nil, nil, errors.New(\"websocket: duplicate header not allowed: \" + k)\n\t\tcase k == \"Sec-Websocket-Protocol\":\n\t\t\treq.Header[\"Sec-WebSocket-Protocol\"] = vs\n\t\tdefault:\n\t\t\treq.Header[k] = vs\n\t\t}\n\t}\n\n\tif d.EnableCompression {\n\t\treq.Header[\"Sec-WebSocket-Extensions\"] = []string{\"permessage-deflate; server_no_context_takeover; client_no_context_takeover\"}\n\t}\n\n\tif d.HandshakeTimeout != 0 {\n\t\tvar cancel func()\n\t\tctx, cancel = context.WithTimeout(ctx, d.HandshakeTimeout)\n\t\tdefer cancel()\n\t}\n\n\tvar netDial netDialerFunc\n\tswitch {\n\tcase u.Scheme == \"https\" && d.NetDialTLSContext != nil:\n\t\tnetDial = d.NetDialTLSContext\n\tcase d.NetDialContext != nil:\n\t\tnetDial = d.NetDialContext\n\tcase d.NetDial != nil:\n\t\tnetDial = func(ctx context.Context, net, addr string) (net.Conn, error) {\n\t\t\treturn d.NetDial(net, addr)\n\t\t}\n\tdefault:\n\t\tnetDial = (&net.Dialer{}).DialContext\n\t}\n\n\t// If needed, wrap the dial function to set the connection deadline.\n\tif deadline, ok := ctx.Deadline(); ok {\n\t\tforwardDial := netDial\n\t\tnetDial = func(ctx context.Context, network, addr string) (net.Conn, error) {\n\t\t\tc, err := forwardDial(ctx, network, addr)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\terr = c.SetDeadline(deadline)\n\t\t\tif err != nil {\n\t\t\t\tc.Close()\n\t\t\t\treturn nil, err\n\t\t\t}\n\t\t\treturn c, nil\n\t\t}\n\t}\n\n\t// If needed, wrap the dial function to connect through a proxy.\n\tif d.Proxy != nil {\n\t\tproxyURL, err := d.Proxy(req)\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t\tif proxyURL != nil {\n\t\t\tnetDial, err = proxyFromURL(proxyURL, netDial)\n\t\t\tif err != nil {\n\t\t\t\treturn nil, nil, err\n\t\t\t}\n\t\t}\n\t}\n\n\thostPort, hostNoPort := hostPortNoPort(u)\n\ttrace := httptrace.ContextClientTrace(ctx)\n\tif trace != nil && trace.GetConn != nil {\n\t\ttrace.GetConn(hostPort)\n\t}\n\n\tnetConn, err := netDial(ctx, \"tcp\", hostPort)\n\tif err != nil {\n\t\treturn nil, nil, err\n\t}\n\tif trace != nil && trace.GotConn != nil {\n\t\ttrace.GotConn(httptrace.GotConnInfo{\n\t\t\tConn: netConn,\n\t\t})\n\t}\n\n\t// Close the network connection when returning an error. The variable\n\t// netConn is set to nil before the success return at the end of the\n\t// function.\n\tdefer func() {\n\t\tif netConn != nil {\n\t\t\t// It's safe to ignore the error from Close() because this code is\n\t\t\t// only executed when returning a more important error to the\n\t\t\t// application.\n\t\t\t_ = netConn.Close()\n\t\t}\n\t}()\n\n\tif u.Scheme == \"https\" && d.NetDialTLSContext == nil {\n\t\t// If NetDialTLSContext is set, assume that the TLS handshake has already been done\n\n\t\tcfg := cloneTLSConfig(d.TLSClientConfig)\n\t\tif cfg.ServerName == \"\" {\n\t\t\tcfg.ServerName = hostNoPort\n\t\t}\n\t\ttlsConn := tls.Client(netConn, cfg)\n\t\tnetConn = tlsConn\n\n\t\tif trace != nil && trace.TLSHandshakeStart != nil {\n\t\t\ttrace.TLSHandshakeStart()\n\t\t}\n\t\terr := doHandshake(ctx, tlsConn, cfg)\n\t\tif trace != nil && trace.TLSHandshakeDone != nil {\n\t\t\ttrace.TLSHandshakeDone(tlsConn.ConnectionState(), err)\n\t\t}\n\n\t\tif err != nil {\n\t\t\treturn nil, nil, err\n\t\t}\n\t}\n\n\tconn := newConn(netConn, false, d.ReadBufferSize, d.WriteBufferSize, d.WriteBufferPool, nil, nil)\n\n\tif err := req.Write(netConn); err != nil {\n\t\treturn nil, nil, err\n\t}\n\n\tif trace != nil && trace.GotFirstResponseByte != nil {\n\t\tif peek, err := conn.br.Peek(1); err == nil && len(peek) == 1 {\n\t\t\ttrace.GotFirstResponseByte()\n\t\t}\n\t}\n\n\tresp, err := http.ReadResponse(conn.br, req)\n\tif err != nil {\n\t\tif d.TLSClientConfig != nil {\n\t\t\tfor _, proto := range d.TLSClientConfig.NextProtos {\n\t\t\t\tif proto != \"http/1.1\" {\n\t\t\t\t\treturn nil, nil, fmt.Errorf(\n\t\t\t\t\t\t\"websocket: protocol %q was given but is not supported;\"+\n\t\t\t\t\t\t\t\"sharing tls.Config with net/http Transport can cause this error: %w\",\n\t\t\t\t\t\tproto, err,\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn nil, nil, err\n\t}\n\n\tif d.Jar != nil {\n\t\tif rc := resp.Cookies(); len(rc) > 0 {\n\t\t\td.Jar.SetCookies(u, rc)\n\t\t}\n\t}\n\n\tif resp.StatusCode != 101 ||\n\t\t!tokenListContainsValue(resp.Header, \"Upgrade\", \"websocket\") ||\n\t\t!tokenListContainsValue(resp.Header, \"Connection\", \"upgrade\") ||\n\t\tresp.Header.Get(\"Sec-Websocket-Accept\") != computeAcceptKey(challengeKey) {\n\t\t// Before closing the network connection on return from this\n\t\t// function, slurp up some of the response to aid application\n\t\t// debugging.\n\t\tbuf := make([]byte, 1024)\n\t\tn, _ := io.ReadFull(resp.Body, buf)\n\t\tresp.Body = io.NopCloser(bytes.NewReader(buf[:n]))\n\t\treturn nil, resp, ErrBadHandshake\n\t}\n\n\tfor _, ext := range parseExtensions(resp.Header) {\n\t\tif ext[\"\"] != \"permessage-deflate\" {\n\t\t\tcontinue\n\t\t}\n\t\t_, snct := ext[\"server_no_context_takeover\"]\n\t\t_, cnct := ext[\"client_no_context_takeover\"]\n\t\tif !snct || !cnct {\n\t\t\treturn nil, resp, errInvalidCompression\n\t\t}\n\t\tconn.newCompressionWriter = compressNoContextTakeover\n\t\tconn.newDecompressionReader = decompressNoContextTakeover\n\t\tbreak\n\t}\n\n\tresp.Body = io.NopCloser(bytes.NewReader([]byte{}))\n\tconn.subprotocol = resp.Header.Get(\"Sec-Websocket-Protocol\")\n\n\tif err := netConn.SetDeadline(time.Time{}); err != nil {\n\t\treturn nil, resp, err\n\t}\n\n\t// Success! Set netConn to nil to stop the deferred function above from\n\t// closing the network connection.\n\tnetConn = nil\n\n\treturn conn, resp, nil\n}\n\nfunc cloneTLSConfig(cfg *tls.Config) *tls.Config {\n\tif cfg == nil {\n\t\treturn &tls.Config{}\n\t}\n\treturn cfg.Clone()\n}\n\nfunc doHandshake(ctx context.Context, tlsConn *tls.Conn, cfg *tls.Config) error {\n\tif err := tlsConn.HandshakeContext(ctx); err != nil {\n\t\treturn err\n\t}\n\tif !cfg.InsecureSkipVerify {\n\t\tif err := tlsConn.VerifyHostname(cfg.ServerName); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\treturn nil\n}\n"
  },
  {
    "path": "gossh/websocket/compression.go",
    "content": "// Copyright 2017 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"compress/flate\"\n\t\"errors\"\n\t\"io\"\n\t\"strings\"\n\t\"sync\"\n)\n\nconst (\n\tminCompressionLevel     = -2 // flate.HuffmanOnly not defined in Go < 1.6\n\tmaxCompressionLevel     = flate.BestCompression\n\tdefaultCompressionLevel = 1\n)\n\nvar (\n\tflateWriterPools [maxCompressionLevel - minCompressionLevel + 1]sync.Pool\n\tflateReaderPool  = sync.Pool{New: func() any {\n\t\treturn flate.NewReader(nil)\n\t}}\n)\n\nfunc decompressNoContextTakeover(r io.Reader) io.ReadCloser {\n\tconst tail =\n\t// Add four bytes as specified in RFC\n\t\"\\x00\\x00\\xff\\xff\" +\n\t\t// Add final block to squelch unexpected EOF error from flate reader.\n\t\t\"\\x01\\x00\\x00\\xff\\xff\"\n\n\tfr, _ := flateReaderPool.Get().(io.ReadCloser)\n\tmr := io.MultiReader(r, strings.NewReader(tail))\n\tif err := fr.(flate.Resetter).Reset(mr, nil); err != nil {\n\t\t// Reset never fails, but handle error in case that changes.\n\t\tfr = flate.NewReader(mr)\n\t}\n\treturn &flateReadWrapper{fr}\n}\n\nfunc isValidCompressionLevel(level int) bool {\n\treturn minCompressionLevel <= level && level <= maxCompressionLevel\n}\n\nfunc compressNoContextTakeover(w io.WriteCloser, level int) io.WriteCloser {\n\tp := &flateWriterPools[level-minCompressionLevel]\n\ttw := &truncWriter{w: w}\n\tfw, _ := p.Get().(*flate.Writer)\n\tif fw == nil {\n\t\tfw, _ = flate.NewWriter(tw, level)\n\t} else {\n\t\tfw.Reset(tw)\n\t}\n\treturn &flateWriteWrapper{fw: fw, tw: tw, p: p}\n}\n\n// truncWriter is an io.Writer that writes all but the last four bytes of the\n// stream to another io.Writer.\ntype truncWriter struct {\n\tw io.WriteCloser\n\tn int\n\tp [4]byte\n}\n\nfunc (w *truncWriter) Write(p []byte) (int, error) {\n\tn := 0\n\n\t// fill buffer first for simplicity.\n\tif w.n < len(w.p) {\n\t\tn = copy(w.p[w.n:], p)\n\t\tp = p[n:]\n\t\tw.n += n\n\t\tif len(p) == 0 {\n\t\t\treturn n, nil\n\t\t}\n\t}\n\n\tm := len(p)\n\tif m > len(w.p) {\n\t\tm = len(w.p)\n\t}\n\n\tif nn, err := w.w.Write(w.p[:m]); err != nil {\n\t\treturn n + nn, err\n\t}\n\n\tcopy(w.p[:], w.p[m:])\n\tcopy(w.p[len(w.p)-m:], p[len(p)-m:])\n\tnn, err := w.w.Write(p[:len(p)-m])\n\treturn n + nn, err\n}\n\ntype flateWriteWrapper struct {\n\tfw *flate.Writer\n\ttw *truncWriter\n\tp  *sync.Pool\n}\n\nfunc (w *flateWriteWrapper) Write(p []byte) (int, error) {\n\tif w.fw == nil {\n\t\treturn 0, errWriteClosed\n\t}\n\treturn w.fw.Write(p)\n}\n\nfunc (w *flateWriteWrapper) Close() error {\n\tif w.fw == nil {\n\t\treturn errWriteClosed\n\t}\n\terr1 := w.fw.Flush()\n\tw.p.Put(w.fw)\n\tw.fw = nil\n\tif w.tw.p != [4]byte{0, 0, 0xff, 0xff} {\n\t\treturn errors.New(\"websocket: internal error, unexpected bytes at end of flate stream\")\n\t}\n\terr2 := w.tw.w.Close()\n\tif err1 != nil {\n\t\treturn err1\n\t}\n\treturn err2\n}\n\ntype flateReadWrapper struct {\n\tfr io.ReadCloser\n}\n\nfunc (r *flateReadWrapper) Read(p []byte) (int, error) {\n\tif r.fr == nil {\n\t\treturn 0, io.ErrClosedPipe\n\t}\n\tn, err := r.fr.Read(p)\n\tif err == io.EOF {\n\t\t// Preemptively place the reader back in the pool. This helps with\n\t\t// scenarios where the application does not call NextReader() soon after\n\t\t// this final read.\n\t\tr.Close()\n\t}\n\treturn n, err\n}\n\nfunc (r *flateReadWrapper) Close() error {\n\tif r.fr == nil {\n\t\treturn io.ErrClosedPipe\n\t}\n\terr := r.fr.Close()\n\tflateReaderPool.Put(r.fr)\n\tr.fr = nil\n\treturn err\n}\n"
  },
  {
    "path": "gossh/websocket/conn.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"bufio\"\n\t\"crypto/rand\"\n\t\"encoding/binary\"\n\t\"errors\"\n\t\"io\"\n\t\"net\"\n\t\"strconv\"\n\t\"strings\"\n\t\"sync\"\n\t\"time\"\n\t\"unicode/utf8\"\n)\n\nconst (\n\t// Frame header byte 0 bits from Section 5.2 of RFC 6455\n\tfinalBit = 1 << 7\n\trsv1Bit  = 1 << 6\n\trsv2Bit  = 1 << 5\n\trsv3Bit  = 1 << 4\n\n\t// Frame header byte 1 bits from Section 5.2 of RFC 6455\n\tmaskBit = 1 << 7\n\n\tmaxFrameHeaderSize         = 2 + 8 + 4 // Fixed header + length + mask\n\tmaxControlFramePayloadSize = 125\n\n\twriteWait = time.Second\n\n\tdefaultReadBufferSize  = 4096\n\tdefaultWriteBufferSize = 4096\n\n\tcontinuationFrame = 0\n\tnoFrame           = -1\n)\n\n// Close codes defined in RFC 6455, section 11.7.\nconst (\n\tCloseNormalClosure           = 1000\n\tCloseGoingAway               = 1001\n\tCloseProtocolError           = 1002\n\tCloseUnsupportedData         = 1003\n\tCloseNoStatusReceived        = 1005\n\tCloseAbnormalClosure         = 1006\n\tCloseInvalidFramePayloadData = 1007\n\tClosePolicyViolation         = 1008\n\tCloseMessageTooBig           = 1009\n\tCloseMandatoryExtension      = 1010\n\tCloseInternalServerErr       = 1011\n\tCloseServiceRestart          = 1012\n\tCloseTryAgainLater           = 1013\n\tCloseTLSHandshake            = 1015\n)\n\n// The message types are defined in RFC 6455, section 11.8.\nconst (\n\t// TextMessage denotes a text data message. The text message payload is\n\t// interpreted as UTF-8 encoded text data.\n\tTextMessage = 1\n\n\t// BinaryMessage denotes a binary data message.\n\tBinaryMessage = 2\n\n\t// CloseMessage denotes a close control message. The optional message\n\t// payload contains a numeric code and text. Use the FormatCloseMessage\n\t// function to format a close message payload.\n\tCloseMessage = 8\n\n\t// PingMessage denotes a ping control message. The optional message payload\n\t// is UTF-8 encoded text.\n\tPingMessage = 9\n\n\t// PongMessage denotes a pong control message. The optional message payload\n\t// is UTF-8 encoded text.\n\tPongMessage = 10\n)\n\n// ErrCloseSent is returned when the application writes a message to the\n// connection after sending a close message.\nvar ErrCloseSent = errors.New(\"websocket: close sent\")\n\n// ErrReadLimit is returned when reading a message that is larger than the\n// read limit set for the connection.\nvar ErrReadLimit = errors.New(\"websocket: read limit exceeded\")\n\n// netError satisfies the net Error interface.\ntype netError struct {\n\tmsg       string\n\ttemporary bool\n\ttimeout   bool\n}\n\nfunc (e *netError) Error() string   { return e.msg }\nfunc (e *netError) Temporary() bool { return e.temporary }\nfunc (e *netError) Timeout() bool   { return e.timeout }\n\n// CloseError represents a close message.\ntype CloseError struct {\n\t// Code is defined in RFC 6455, section 11.7.\n\tCode int\n\n\t// Text is the optional text payload.\n\tText string\n}\n\nfunc (e *CloseError) Error() string {\n\ts := []byte(\"websocket: close \")\n\ts = strconv.AppendInt(s, int64(e.Code), 10)\n\tswitch e.Code {\n\tcase CloseNormalClosure:\n\t\ts = append(s, \" (normal)\"...)\n\tcase CloseGoingAway:\n\t\ts = append(s, \" (going away)\"...)\n\tcase CloseProtocolError:\n\t\ts = append(s, \" (protocol error)\"...)\n\tcase CloseUnsupportedData:\n\t\ts = append(s, \" (unsupported data)\"...)\n\tcase CloseNoStatusReceived:\n\t\ts = append(s, \" (no status)\"...)\n\tcase CloseAbnormalClosure:\n\t\ts = append(s, \" (abnormal closure)\"...)\n\tcase CloseInvalidFramePayloadData:\n\t\ts = append(s, \" (invalid payload data)\"...)\n\tcase ClosePolicyViolation:\n\t\ts = append(s, \" (policy violation)\"...)\n\tcase CloseMessageTooBig:\n\t\ts = append(s, \" (message too big)\"...)\n\tcase CloseMandatoryExtension:\n\t\ts = append(s, \" (mandatory extension missing)\"...)\n\tcase CloseInternalServerErr:\n\t\ts = append(s, \" (internal server error)\"...)\n\tcase CloseTLSHandshake:\n\t\ts = append(s, \" (TLS handshake error)\"...)\n\t}\n\tif e.Text != \"\" {\n\t\ts = append(s, \": \"...)\n\t\ts = append(s, e.Text...)\n\t}\n\treturn string(s)\n}\n\n// IsCloseError returns boolean indicating whether the error is a *CloseError\n// with one of the specified codes.\nfunc IsCloseError(err error, codes ...int) bool {\n\tif e, ok := err.(*CloseError); ok {\n\t\tfor _, code := range codes {\n\t\t\tif e.Code == code {\n\t\t\t\treturn true\n\t\t\t}\n\t\t}\n\t}\n\treturn false\n}\n\n// IsUnexpectedCloseError returns boolean indicating whether the error is a\n// *CloseError with a code not in the list of expected codes.\nfunc IsUnexpectedCloseError(err error, expectedCodes ...int) bool {\n\tif e, ok := err.(*CloseError); ok {\n\t\tfor _, code := range expectedCodes {\n\t\t\tif e.Code == code {\n\t\t\t\treturn false\n\t\t\t}\n\t\t}\n\t\treturn true\n\t}\n\treturn false\n}\n\nvar (\n\terrWriteTimeout        = &netError{msg: \"websocket: write timeout\", timeout: true, temporary: true}\n\terrUnexpectedEOF       = &CloseError{Code: CloseAbnormalClosure, Text: io.ErrUnexpectedEOF.Error()}\n\terrBadWriteOpCode      = errors.New(\"websocket: bad write message type\")\n\terrWriteClosed         = errors.New(\"websocket: write closed\")\n\terrInvalidControlFrame = errors.New(\"websocket: invalid control frame\")\n)\n\n// maskRand is an io.Reader for generating mask bytes. The reader is initialized\n// to crypto/rand Reader. Tests swap the reader to a math/rand reader for\n// reproducible results.\nvar maskRand = rand.Reader\n\n// newMaskKey returns a new 32 bit value for masking client frames.\nfunc newMaskKey() [4]byte {\n\tvar k [4]byte\n\t_, _ = io.ReadFull(maskRand, k[:])\n\treturn k\n}\n\nfunc isControl(frameType int) bool {\n\treturn frameType == CloseMessage || frameType == PingMessage || frameType == PongMessage\n}\n\nfunc isData(frameType int) bool {\n\treturn frameType == TextMessage || frameType == BinaryMessage\n}\n\nvar validReceivedCloseCodes = map[int]bool{\n\t// see http://www.iana.org/assignments/websocket/websocket.xhtml#close-code-number\n\n\tCloseNormalClosure:           true,\n\tCloseGoingAway:               true,\n\tCloseProtocolError:           true,\n\tCloseUnsupportedData:         true,\n\tCloseNoStatusReceived:        false,\n\tCloseAbnormalClosure:         false,\n\tCloseInvalidFramePayloadData: true,\n\tClosePolicyViolation:         true,\n\tCloseMessageTooBig:           true,\n\tCloseMandatoryExtension:      true,\n\tCloseInternalServerErr:       true,\n\tCloseServiceRestart:          true,\n\tCloseTryAgainLater:           true,\n\tCloseTLSHandshake:            false,\n}\n\nfunc isValidReceivedCloseCode(code int) bool {\n\treturn validReceivedCloseCodes[code] || (code >= 3000 && code <= 4999)\n}\n\n// BufferPool represents a pool of buffers. The *sync.Pool type satisfies this\n// interface.  The type of the value stored in a pool is not specified.\ntype BufferPool interface {\n\t// Get gets a value from the pool or returns nil if the pool is empty.\n\tGet() any\n\t// Put adds a value to the pool.\n\tPut(any)\n}\n\n// writePoolData is the type added to the write buffer pool. This wrapper is\n// used to prevent applications from peeking at and depending on the values\n// added to the pool.\ntype writePoolData struct{ buf []byte }\n\n// The Conn type represents a WebSocket connection.\ntype Conn struct {\n\tconn        net.Conn\n\tisServer    bool\n\tsubprotocol string\n\n\t// Write fields\n\tmu            chan struct{} // used as mutex to protect write to conn\n\twriteBuf      []byte        // frame is constructed in this buffer.\n\twritePool     BufferPool\n\twriteBufSize  int\n\twriteDeadline time.Time\n\twriter        io.WriteCloser // the current writer returned to the application\n\tisWriting     bool           // for best-effort concurrent write detection\n\n\twriteErrMu sync.Mutex\n\twriteErr   error\n\n\tenableWriteCompression bool\n\tcompressionLevel       int\n\tnewCompressionWriter   func(io.WriteCloser, int) io.WriteCloser\n\n\t// Read fields\n\treader  io.ReadCloser // the current reader returned to the application\n\treadErr error\n\tbr      *bufio.Reader\n\t// bytes remaining in current frame.\n\t// set setReadRemaining to safely update this value and prevent overflow\n\treadRemaining int64\n\treadFinal     bool  // true the current message has more frames.\n\treadLength    int64 // Message size.\n\treadLimit     int64 // Maximum message size.\n\treadMaskPos   int\n\treadMaskKey   [4]byte\n\thandlePong    func(string) error\n\thandlePing    func(string) error\n\thandleClose   func(int, string) error\n\treadErrCount  int\n\tmessageReader *messageReader // the current low-level reader\n\n\treadDecompress         bool // whether last read frame had RSV1 set\n\tnewDecompressionReader func(io.Reader) io.ReadCloser\n}\n\nfunc newConn(conn net.Conn, isServer bool, readBufferSize, writeBufferSize int, writeBufferPool BufferPool, br *bufio.Reader, writeBuf []byte) *Conn {\n\n\tif br == nil {\n\t\tif readBufferSize == 0 {\n\t\t\treadBufferSize = defaultReadBufferSize\n\t\t} else if readBufferSize < maxControlFramePayloadSize {\n\t\t\t// must be large enough for control frame\n\t\t\treadBufferSize = maxControlFramePayloadSize\n\t\t}\n\t\tbr = bufio.NewReaderSize(conn, readBufferSize)\n\t}\n\n\tif writeBufferSize <= 0 {\n\t\twriteBufferSize = defaultWriteBufferSize\n\t}\n\twriteBufferSize += maxFrameHeaderSize\n\n\tif writeBuf == nil && writeBufferPool == nil {\n\t\twriteBuf = make([]byte, writeBufferSize)\n\t}\n\n\tmu := make(chan struct{}, 1)\n\tmu <- struct{}{}\n\tc := &Conn{\n\t\tisServer:               isServer,\n\t\tbr:                     br,\n\t\tconn:                   conn,\n\t\tmu:                     mu,\n\t\treadFinal:              true,\n\t\twriteBuf:               writeBuf,\n\t\twritePool:              writeBufferPool,\n\t\twriteBufSize:           writeBufferSize,\n\t\tenableWriteCompression: true,\n\t\tcompressionLevel:       defaultCompressionLevel,\n\t}\n\tc.SetCloseHandler(nil)\n\tc.SetPingHandler(nil)\n\tc.SetPongHandler(nil)\n\treturn c\n}\n\n// setReadRemaining tracks the number of bytes remaining on the connection. If n\n// overflows, an ErrReadLimit is returned.\nfunc (c *Conn) setReadRemaining(n int64) error {\n\tif n < 0 {\n\t\treturn ErrReadLimit\n\t}\n\n\tc.readRemaining = n\n\treturn nil\n}\n\n// Subprotocol returns the negotiated protocol for the connection.\nfunc (c *Conn) Subprotocol() string {\n\treturn c.subprotocol\n}\n\n// Close closes the underlying network connection without sending or waiting\n// for a close message.\nfunc (c *Conn) Close() error {\n\treturn c.conn.Close()\n}\n\n// LocalAddr returns the local network address.\nfunc (c *Conn) LocalAddr() net.Addr {\n\treturn c.conn.LocalAddr()\n}\n\n// RemoteAddr returns the remote network address.\nfunc (c *Conn) RemoteAddr() net.Addr {\n\treturn c.conn.RemoteAddr()\n}\n\n// Write methods\n\nfunc (c *Conn) writeFatal(err error) error {\n\tc.writeErrMu.Lock()\n\tif c.writeErr == nil {\n\t\tc.writeErr = err\n\t}\n\tc.writeErrMu.Unlock()\n\treturn err\n}\n\nfunc (c *Conn) read(n int) ([]byte, error) {\n\tp, err := c.br.Peek(n)\n\tif err == io.EOF {\n\t\terr = errUnexpectedEOF\n\t}\n\t// Discard is guaranteed to succeed because the number of bytes to discard\n\t// is less than or equal to the number of bytes buffered.\n\t_, _ = c.br.Discard(len(p))\n\treturn p, err\n}\n\nfunc (c *Conn) write(frameType int, deadline time.Time, buf0, buf1 []byte) error {\n\t<-c.mu\n\tdefer func() { c.mu <- struct{}{} }()\n\n\tc.writeErrMu.Lock()\n\terr := c.writeErr\n\tc.writeErrMu.Unlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := c.conn.SetWriteDeadline(deadline); err != nil {\n\t\treturn c.writeFatal(err)\n\t}\n\tif len(buf1) == 0 {\n\t\t_, err = c.conn.Write(buf0)\n\t} else {\n\t\terr = c.writeBufs(buf0, buf1)\n\t}\n\tif err != nil {\n\t\treturn c.writeFatal(err)\n\t}\n\tif frameType == CloseMessage {\n\t\t_ = c.writeFatal(ErrCloseSent)\n\t}\n\treturn nil\n}\n\nfunc (c *Conn) writeBufs(bufs ...[]byte) error {\n\tb := net.Buffers(bufs)\n\t_, err := b.WriteTo(c.conn)\n\treturn err\n}\n\n// WriteControl writes a control message with the given deadline. The allowed\n// message types are CloseMessage, PingMessage and PongMessage.\nfunc (c *Conn) WriteControl(messageType int, data []byte, deadline time.Time) error {\n\tif !isControl(messageType) {\n\t\treturn errBadWriteOpCode\n\t}\n\tif len(data) > maxControlFramePayloadSize {\n\t\treturn errInvalidControlFrame\n\t}\n\n\tb0 := byte(messageType) | finalBit\n\tb1 := byte(len(data))\n\tif !c.isServer {\n\t\tb1 |= maskBit\n\t}\n\n\tbuf := make([]byte, 0, maxFrameHeaderSize+maxControlFramePayloadSize)\n\tbuf = append(buf, b0, b1)\n\n\tif c.isServer {\n\t\tbuf = append(buf, data...)\n\t} else {\n\t\tkey := newMaskKey()\n\t\tbuf = append(buf, key[:]...)\n\t\tbuf = append(buf, data...)\n\t\tmaskBytes(key, 0, buf[6:])\n\t}\n\n\tif deadline.IsZero() {\n\t\t// No timeout for zero time.\n\t\t<-c.mu\n\t} else {\n\t\td := time.Until(deadline)\n\t\tif d < 0 {\n\t\t\treturn errWriteTimeout\n\t\t}\n\t\tselect {\n\t\tcase <-c.mu:\n\t\tdefault:\n\t\t\ttimer := time.NewTimer(d)\n\t\t\tselect {\n\t\t\tcase <-c.mu:\n\t\t\t\ttimer.Stop()\n\t\t\tcase <-timer.C:\n\t\t\t\treturn errWriteTimeout\n\t\t\t}\n\t\t}\n\t}\n\n\tdefer func() { c.mu <- struct{}{} }()\n\n\tc.writeErrMu.Lock()\n\terr := c.writeErr\n\tc.writeErrMu.Unlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tif err := c.conn.SetWriteDeadline(deadline); err != nil {\n\t\treturn c.writeFatal(err)\n\t}\n\tif _, err = c.conn.Write(buf); err != nil {\n\t\treturn c.writeFatal(err)\n\t}\n\tif messageType == CloseMessage {\n\t\t_ = c.writeFatal(ErrCloseSent)\n\t}\n\treturn err\n}\n\n// beginMessage prepares a connection and message writer for a new message.\nfunc (c *Conn) beginMessage(mw *messageWriter, messageType int) error {\n\t// Close previous writer if not already closed by the application. It's\n\t// probably better to return an error in this situation, but we cannot\n\t// change this without breaking existing applications.\n\tif c.writer != nil {\n\t\tc.writer.Close()\n\t\tc.writer = nil\n\t}\n\n\tif !isControl(messageType) && !isData(messageType) {\n\t\treturn errBadWriteOpCode\n\t}\n\n\tc.writeErrMu.Lock()\n\terr := c.writeErr\n\tc.writeErrMu.Unlock()\n\tif err != nil {\n\t\treturn err\n\t}\n\n\tmw.c = c\n\tmw.frameType = messageType\n\tmw.pos = maxFrameHeaderSize\n\n\tif c.writeBuf == nil {\n\t\twpd, ok := c.writePool.Get().(writePoolData)\n\t\tif ok {\n\t\t\tc.writeBuf = wpd.buf\n\t\t} else {\n\t\t\tc.writeBuf = make([]byte, c.writeBufSize)\n\t\t}\n\t}\n\treturn nil\n}\n\n// NextWriter returns a writer for the next message to send. The writer's Close\n// method flushes the complete message to the network.\n//\n// There can be at most one open writer on a connection. NextWriter closes the\n// previous writer if the application has not already done so.\n//\n// All message types (TextMessage, BinaryMessage, CloseMessage, PingMessage and\n// PongMessage) are supported.\nfunc (c *Conn) NextWriter(messageType int) (io.WriteCloser, error) {\n\tvar mw messageWriter\n\tif err := c.beginMessage(&mw, messageType); err != nil {\n\t\treturn nil, err\n\t}\n\tc.writer = &mw\n\tif c.newCompressionWriter != nil && c.enableWriteCompression && isData(messageType) {\n\t\tw := c.newCompressionWriter(c.writer, c.compressionLevel)\n\t\tmw.compress = true\n\t\tc.writer = w\n\t}\n\treturn c.writer, nil\n}\n\ntype messageWriter struct {\n\tc         *Conn\n\tcompress  bool // whether next call to flushFrame should set RSV1\n\tpos       int  // end of data in writeBuf.\n\tframeType int  // type of the current frame.\n\terr       error\n}\n\nfunc (w *messageWriter) endMessage(err error) error {\n\tif w.err != nil {\n\t\treturn err\n\t}\n\tc := w.c\n\tw.err = err\n\tc.writer = nil\n\tif c.writePool != nil {\n\t\tc.writePool.Put(writePoolData{buf: c.writeBuf})\n\t\tc.writeBuf = nil\n\t}\n\treturn err\n}\n\n// flushFrame writes buffered data and extra as a frame to the network. The\n// final argument indicates that this is the last frame in the message.\nfunc (w *messageWriter) flushFrame(final bool, extra []byte) error {\n\tc := w.c\n\tlength := w.pos - maxFrameHeaderSize + len(extra)\n\n\t// Check for invalid control frames.\n\tif isControl(w.frameType) &&\n\t\t(!final || length > maxControlFramePayloadSize) {\n\t\treturn w.endMessage(errInvalidControlFrame)\n\t}\n\n\tb0 := byte(w.frameType)\n\tif final {\n\t\tb0 |= finalBit\n\t}\n\tif w.compress {\n\t\tb0 |= rsv1Bit\n\t}\n\tw.compress = false\n\n\tb1 := byte(0)\n\tif !c.isServer {\n\t\tb1 |= maskBit\n\t}\n\n\t// Assume that the frame starts at beginning of c.writeBuf.\n\tframePos := 0\n\tif c.isServer {\n\t\t// Adjust up if mask not included in the header.\n\t\tframePos = 4\n\t}\n\n\tswitch {\n\tcase length >= 65536:\n\t\tc.writeBuf[framePos] = b0\n\t\tc.writeBuf[framePos+1] = b1 | 127\n\t\tbinary.BigEndian.PutUint64(c.writeBuf[framePos+2:], uint64(length))\n\tcase length > 125:\n\t\tframePos += 6\n\t\tc.writeBuf[framePos] = b0\n\t\tc.writeBuf[framePos+1] = b1 | 126\n\t\tbinary.BigEndian.PutUint16(c.writeBuf[framePos+2:], uint16(length))\n\tdefault:\n\t\tframePos += 8\n\t\tc.writeBuf[framePos] = b0\n\t\tc.writeBuf[framePos+1] = b1 | byte(length)\n\t}\n\n\tif !c.isServer {\n\t\tkey := newMaskKey()\n\t\tcopy(c.writeBuf[maxFrameHeaderSize-4:], key[:])\n\t\tmaskBytes(key, 0, c.writeBuf[maxFrameHeaderSize:w.pos])\n\t\tif len(extra) > 0 {\n\t\t\treturn w.endMessage(c.writeFatal(errors.New(\"websocket: internal error, extra used in client mode\")))\n\t\t}\n\t}\n\n\t// Write the buffers to the connection with best-effort detection of\n\t// concurrent writes. See the concurrency section in the package\n\t// documentation for more info.\n\n\tif c.isWriting {\n\t\tpanic(\"concurrent write to websocket connection\")\n\t}\n\tc.isWriting = true\n\n\terr := c.write(w.frameType, c.writeDeadline, c.writeBuf[framePos:w.pos], extra)\n\n\tif !c.isWriting {\n\t\tpanic(\"concurrent write to websocket connection\")\n\t}\n\tc.isWriting = false\n\n\tif err != nil {\n\t\treturn w.endMessage(err)\n\t}\n\n\tif final {\n\t\t_ = w.endMessage(errWriteClosed)\n\t\treturn nil\n\t}\n\n\t// Setup for next frame.\n\tw.pos = maxFrameHeaderSize\n\tw.frameType = continuationFrame\n\treturn nil\n}\n\nfunc (w *messageWriter) ncopy(max int) (int, error) {\n\tn := len(w.c.writeBuf) - w.pos\n\tif n <= 0 {\n\t\tif err := w.flushFrame(false, nil); err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tn = len(w.c.writeBuf) - w.pos\n\t}\n\tif n > max {\n\t\tn = max\n\t}\n\treturn n, nil\n}\n\nfunc (w *messageWriter) Write(p []byte) (int, error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\n\tif len(p) > 2*len(w.c.writeBuf) && w.c.isServer {\n\t\t// Don't buffer large messages.\n\t\terr := w.flushFrame(false, p)\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\treturn len(p), nil\n\t}\n\n\tnn := len(p)\n\tfor len(p) > 0 {\n\t\tn, err := w.ncopy(len(p))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tcopy(w.c.writeBuf[w.pos:], p[:n])\n\t\tw.pos += n\n\t\tp = p[n:]\n\t}\n\treturn nn, nil\n}\n\nfunc (w *messageWriter) WriteString(p string) (int, error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\n\tnn := len(p)\n\tfor len(p) > 0 {\n\t\tn, err := w.ncopy(len(p))\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tcopy(w.c.writeBuf[w.pos:], p[:n])\n\t\tw.pos += n\n\t\tp = p[n:]\n\t}\n\treturn nn, nil\n}\n\nfunc (w *messageWriter) ReadFrom(r io.Reader) (nn int64, err error) {\n\tif w.err != nil {\n\t\treturn 0, w.err\n\t}\n\tfor {\n\t\tif w.pos == len(w.c.writeBuf) {\n\t\t\terr = w.flushFrame(false, nil)\n\t\t\tif err != nil {\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\tvar n int\n\t\tn, err = r.Read(w.c.writeBuf[w.pos:])\n\t\tw.pos += n\n\t\tnn += int64(n)\n\t\tif err != nil {\n\t\t\tif err == io.EOF {\n\t\t\t\terr = nil\n\t\t\t}\n\t\t\tbreak\n\t\t}\n\t}\n\treturn nn, err\n}\n\nfunc (w *messageWriter) Close() error {\n\tif w.err != nil {\n\t\treturn w.err\n\t}\n\treturn w.flushFrame(true, nil)\n}\n\n// WritePreparedMessage writes prepared message into connection.\nfunc (c *Conn) WritePreparedMessage(pm *PreparedMessage) error {\n\tframeType, frameData, err := pm.frame(prepareKey{\n\t\tisServer:         c.isServer,\n\t\tcompress:         c.newCompressionWriter != nil && c.enableWriteCompression && isData(pm.messageType),\n\t\tcompressionLevel: c.compressionLevel,\n\t})\n\tif err != nil {\n\t\treturn err\n\t}\n\tif c.isWriting {\n\t\tpanic(\"concurrent write to websocket connection\")\n\t}\n\tc.isWriting = true\n\terr = c.write(frameType, c.writeDeadline, frameData, nil)\n\tif !c.isWriting {\n\t\tpanic(\"concurrent write to websocket connection\")\n\t}\n\tc.isWriting = false\n\treturn err\n}\n\n// WriteMessage is a helper method for getting a writer using NextWriter,\n// writing the message and closing the writer.\nfunc (c *Conn) WriteMessage(messageType int, data []byte) error {\n\n\tif c.isServer && (c.newCompressionWriter == nil || !c.enableWriteCompression) {\n\t\t// Fast path with no allocations and single frame.\n\n\t\tvar mw messageWriter\n\t\tif err := c.beginMessage(&mw, messageType); err != nil {\n\t\t\treturn err\n\t\t}\n\t\tn := copy(c.writeBuf[mw.pos:], data)\n\t\tmw.pos += n\n\t\tdata = data[n:]\n\t\treturn mw.flushFrame(true, data)\n\t}\n\n\tw, err := c.NextWriter(messageType)\n\tif err != nil {\n\t\treturn err\n\t}\n\tif _, err = w.Write(data); err != nil {\n\t\treturn err\n\t}\n\treturn w.Close()\n}\n\n// SetWriteDeadline sets the write deadline on the underlying network\n// connection. After a write has timed out, the websocket state is corrupt and\n// all future writes will return an error. A zero value for t means writes will\n// not time out.\nfunc (c *Conn) SetWriteDeadline(t time.Time) error {\n\tc.writeDeadline = t\n\treturn nil\n}\n\n// Read methods\n\nfunc (c *Conn) advanceFrame() (int, error) {\n\t// 1. Skip remainder of previous frame.\n\n\tif c.readRemaining > 0 {\n\t\tif _, err := io.CopyN(io.Discard, c.br, c.readRemaining); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\t}\n\n\t// 2. Read and parse first two bytes of frame header.\n\t// To aid debugging, collect and report all errors in the first two bytes\n\t// of the header.\n\n\tvar errors []string\n\n\tp, err := c.read(2)\n\tif err != nil {\n\t\treturn noFrame, err\n\t}\n\n\tframeType := int(p[0] & 0xf)\n\tfinal := p[0]&finalBit != 0\n\trsv1 := p[0]&rsv1Bit != 0\n\trsv2 := p[0]&rsv2Bit != 0\n\trsv3 := p[0]&rsv3Bit != 0\n\tmask := p[1]&maskBit != 0\n\t_ = c.setReadRemaining(int64(p[1] & 0x7f)) // will not fail because argument is >= 0\n\n\tc.readDecompress = false\n\tif rsv1 {\n\t\tif c.newDecompressionReader != nil {\n\t\t\tc.readDecompress = true\n\t\t} else {\n\t\t\terrors = append(errors, \"RSV1 set\")\n\t\t}\n\t}\n\n\tif rsv2 {\n\t\terrors = append(errors, \"RSV2 set\")\n\t}\n\n\tif rsv3 {\n\t\terrors = append(errors, \"RSV3 set\")\n\t}\n\n\tswitch frameType {\n\tcase CloseMessage, PingMessage, PongMessage:\n\t\tif c.readRemaining > maxControlFramePayloadSize {\n\t\t\terrors = append(errors, \"len > 125 for control\")\n\t\t}\n\t\tif !final {\n\t\t\terrors = append(errors, \"FIN not set on control\")\n\t\t}\n\tcase TextMessage, BinaryMessage:\n\t\tif !c.readFinal {\n\t\t\terrors = append(errors, \"data before FIN\")\n\t\t}\n\t\tc.readFinal = final\n\tcase continuationFrame:\n\t\tif c.readFinal {\n\t\t\terrors = append(errors, \"continuation after FIN\")\n\t\t}\n\t\tc.readFinal = final\n\tdefault:\n\t\terrors = append(errors, \"bad opcode \"+strconv.Itoa(frameType))\n\t}\n\n\tif mask != c.isServer {\n\t\terrors = append(errors, \"bad MASK\")\n\t}\n\n\tif len(errors) > 0 {\n\t\treturn noFrame, c.handleProtocolError(strings.Join(errors, \", \"))\n\t}\n\n\t// 3. Read and parse frame length as per\n\t// https://tools.ietf.org/html/rfc6455#section-5.2\n\t//\n\t// The length of the \"Payload data\", in bytes: if 0-125, that is the payload\n\t// length.\n\t// - If 126, the following 2 bytes interpreted as a 16-bit unsigned\n\t// integer are the payload length.\n\t// - If 127, the following 8 bytes interpreted as\n\t// a 64-bit unsigned integer (the most significant bit MUST be 0) are the\n\t// payload length. Multibyte length quantities are expressed in network byte\n\t// order.\n\n\tswitch c.readRemaining {\n\tcase 126:\n\t\tp, err := c.read(2)\n\t\tif err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\n\t\tif err := c.setReadRemaining(int64(binary.BigEndian.Uint16(p))); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\tcase 127:\n\t\tp, err := c.read(8)\n\t\tif err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\n\t\tif err := c.setReadRemaining(int64(binary.BigEndian.Uint64(p))); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\t}\n\n\t// 4. Handle frame masking.\n\n\tif mask {\n\t\tc.readMaskPos = 0\n\t\tp, err := c.read(len(c.readMaskKey))\n\t\tif err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\t\tcopy(c.readMaskKey[:], p)\n\t}\n\n\t// 5. For text and binary messages, enforce read limit and return.\n\n\tif frameType == continuationFrame || frameType == TextMessage || frameType == BinaryMessage {\n\n\t\tc.readLength += c.readRemaining\n\t\t// Don't allow readLength to overflow in the presence of a large readRemaining\n\t\t// counter.\n\t\tif c.readLength < 0 {\n\t\t\treturn noFrame, ErrReadLimit\n\t\t}\n\n\t\tif c.readLimit > 0 && c.readLength > c.readLimit {\n\t\t\t// Make a best effort to send a close message describing the problem.\n\t\t\t_ = c.WriteControl(CloseMessage, FormatCloseMessage(CloseMessageTooBig, \"\"), time.Now().Add(writeWait))\n\t\t\treturn noFrame, ErrReadLimit\n\t\t}\n\n\t\treturn frameType, nil\n\t}\n\n\t// 6. Read control frame payload.\n\n\tvar payload []byte\n\tif c.readRemaining > 0 {\n\t\tpayload, err = c.read(int(c.readRemaining))\n\t\t_ = c.setReadRemaining(0) // will not fail because argument is >= 0\n\t\tif err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\t\tif c.isServer {\n\t\t\tmaskBytes(c.readMaskKey, 0, payload)\n\t\t}\n\t}\n\n\t// 7. Process control frame payload.\n\n\tswitch frameType {\n\tcase PongMessage:\n\t\tif err := c.handlePong(string(payload)); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\tcase PingMessage:\n\t\tif err := c.handlePing(string(payload)); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\tcase CloseMessage:\n\t\tcloseCode := CloseNoStatusReceived\n\t\tcloseText := \"\"\n\t\tif len(payload) >= 2 {\n\t\t\tcloseCode = int(binary.BigEndian.Uint16(payload))\n\t\t\tif !isValidReceivedCloseCode(closeCode) {\n\t\t\t\treturn noFrame, c.handleProtocolError(\"bad close code \" + strconv.Itoa(closeCode))\n\t\t\t}\n\t\t\tcloseText = string(payload[2:])\n\t\t\tif !utf8.ValidString(closeText) {\n\t\t\t\treturn noFrame, c.handleProtocolError(\"invalid utf8 payload in close frame\")\n\t\t\t}\n\t\t}\n\t\tif err := c.handleClose(closeCode, closeText); err != nil {\n\t\t\treturn noFrame, err\n\t\t}\n\t\treturn noFrame, &CloseError{Code: closeCode, Text: closeText}\n\t}\n\n\treturn frameType, nil\n}\n\nfunc (c *Conn) handleProtocolError(message string) error {\n\tdata := FormatCloseMessage(CloseProtocolError, message)\n\tif len(data) > maxControlFramePayloadSize {\n\t\tdata = data[:maxControlFramePayloadSize]\n\t}\n\t// Make a best effor to send a close message describing the problem.\n\t_ = c.WriteControl(CloseMessage, data, time.Now().Add(writeWait))\n\treturn errors.New(\"websocket: \" + message)\n}\n\n// NextReader returns the next data message received from the peer. The\n// returned messageType is either TextMessage or BinaryMessage.\n//\n// There can be at most one open reader on a connection. NextReader discards\n// the previous message if the application has not already consumed it.\n//\n// Applications must break out of the application's read loop when this method\n// returns a non-nil error value. Errors returned from this method are\n// permanent. Once this method returns a non-nil error, all subsequent calls to\n// this method return the same error.\nfunc (c *Conn) NextReader() (messageType int, r io.Reader, err error) {\n\t// Close previous reader, only relevant for decompression.\n\tif c.reader != nil {\n\t\tc.reader.Close()\n\t\tc.reader = nil\n\t}\n\n\tc.messageReader = nil\n\tc.readLength = 0\n\n\tfor c.readErr == nil {\n\t\tframeType, err := c.advanceFrame()\n\t\tif err != nil {\n\t\t\tc.readErr = err\n\t\t\tbreak\n\t\t}\n\n\t\tif frameType == TextMessage || frameType == BinaryMessage {\n\t\t\tc.messageReader = &messageReader{c}\n\t\t\tc.reader = c.messageReader\n\t\t\tif c.readDecompress {\n\t\t\t\tc.reader = c.newDecompressionReader(c.reader)\n\t\t\t}\n\t\t\treturn frameType, c.reader, nil\n\t\t}\n\t}\n\n\t// Applications that do handle the error returned from this method spin in\n\t// tight loop on connection failure. To help application developers detect\n\t// this error, panic on repeated reads to the failed connection.\n\tc.readErrCount++\n\tif c.readErrCount >= 1000 {\n\t\tpanic(\"repeated read on failed websocket connection\")\n\t}\n\n\treturn noFrame, nil, c.readErr\n}\n\ntype messageReader struct{ c *Conn }\n\nfunc (r *messageReader) Read(b []byte) (int, error) {\n\tc := r.c\n\tif c.messageReader != r {\n\t\treturn 0, io.EOF\n\t}\n\n\tfor c.readErr == nil {\n\n\t\tif c.readRemaining > 0 {\n\t\t\tif int64(len(b)) > c.readRemaining {\n\t\t\t\tb = b[:c.readRemaining]\n\t\t\t}\n\t\t\tn, err := c.br.Read(b)\n\t\t\tc.readErr = err\n\t\t\tif c.isServer {\n\t\t\t\tc.readMaskPos = maskBytes(c.readMaskKey, c.readMaskPos, b[:n])\n\t\t\t}\n\t\t\trem := c.readRemaining\n\t\t\trem -= int64(n)\n\t\t\t_ = c.setReadRemaining(rem) // rem is guaranteed to be >= 0\n\t\t\tif c.readRemaining > 0 && c.readErr == io.EOF {\n\t\t\t\tc.readErr = errUnexpectedEOF\n\t\t\t}\n\t\t\treturn n, c.readErr\n\t\t}\n\n\t\tif c.readFinal {\n\t\t\tc.messageReader = nil\n\t\t\treturn 0, io.EOF\n\t\t}\n\n\t\tframeType, err := c.advanceFrame()\n\t\tswitch {\n\t\tcase err != nil:\n\t\t\tc.readErr = err\n\t\tcase frameType == TextMessage || frameType == BinaryMessage:\n\t\t\tc.readErr = errors.New(\"websocket: internal error, unexpected text or binary in Reader\")\n\t\t}\n\t}\n\n\terr := c.readErr\n\tif err == io.EOF && c.messageReader == r {\n\t\terr = errUnexpectedEOF\n\t}\n\treturn 0, err\n}\n\nfunc (r *messageReader) Close() error {\n\treturn nil\n}\n\n// ReadMessage is a helper method for getting a reader using NextReader and\n// reading from that reader to a buffer.\nfunc (c *Conn) ReadMessage() (messageType int, p []byte, err error) {\n\tvar r io.Reader\n\tmessageType, r, err = c.NextReader()\n\tif err != nil {\n\t\treturn messageType, nil, err\n\t}\n\tp, err = io.ReadAll(r)\n\treturn messageType, p, err\n}\n\n// SetReadDeadline sets the read deadline on the underlying network connection.\n// After a read has timed out, the websocket connection state is corrupt and\n// all future reads will return an error. A zero value for t means reads will\n// not time out.\nfunc (c *Conn) SetReadDeadline(t time.Time) error {\n\treturn c.conn.SetReadDeadline(t)\n}\n\n// SetReadLimit sets the maximum size in bytes for a message read from the peer. If a\n// message exceeds the limit, the connection sends a close message to the peer\n// and returns ErrReadLimit to the application.\nfunc (c *Conn) SetReadLimit(limit int64) {\n\tc.readLimit = limit\n}\n\n// CloseHandler returns the current close handler\nfunc (c *Conn) CloseHandler() func(code int, text string) error {\n\treturn c.handleClose\n}\n\n// SetCloseHandler sets the handler for close messages received from the peer.\n// The code argument to h is the received close code or CloseNoStatusReceived\n// if the close message is empty. The default close handler sends a close\n// message back to the peer.\n//\n// The handler function is called from the NextReader, ReadMessage and message\n// reader Read methods. The application must read the connection to process\n// close messages as described in the section on Control Messages above.\n//\n// The connection read methods return a CloseError when a close message is\n// received. Most applications should handle close messages as part of their\n// normal error handling. Applications should only set a close handler when the\n// application must perform some action before sending a close message back to\n// the peer.\nfunc (c *Conn) SetCloseHandler(h func(code int, text string) error) {\n\tif h == nil {\n\t\th = func(code int, text string) error {\n\t\t\tmessage := FormatCloseMessage(code, \"\")\n\t\t\t// Make a best effor to send the close message.\n\t\t\t_ = c.WriteControl(CloseMessage, message, time.Now().Add(writeWait))\n\t\t\treturn nil\n\t\t}\n\t}\n\tc.handleClose = h\n}\n\n// PingHandler returns the current ping handler\nfunc (c *Conn) PingHandler() func(appData string) error {\n\treturn c.handlePing\n}\n\n// SetPingHandler sets the handler for ping messages received from the peer.\n// The appData argument to h is the PING message application data. The default\n// ping handler sends a pong to the peer.\n//\n// The handler function is called from the NextReader, ReadMessage and message\n// reader Read methods. The application must read the connection to process\n// ping messages as described in the section on Control Messages above.\nfunc (c *Conn) SetPingHandler(h func(appData string) error) {\n\tif h == nil {\n\t\th = func(message string) error {\n\t\t\t// Make a best effort to send the pong message.\n\t\t\t_ = c.WriteControl(PongMessage, []byte(message), time.Now().Add(writeWait))\n\t\t\treturn nil\n\t\t}\n\t}\n\tc.handlePing = h\n}\n\n// PongHandler returns the current pong handler\nfunc (c *Conn) PongHandler() func(appData string) error {\n\treturn c.handlePong\n}\n\n// SetPongHandler sets the handler for pong messages received from the peer.\n// The appData argument to h is the PONG message application data. The default\n// pong handler does nothing.\n//\n// The handler function is called from the NextReader, ReadMessage and message\n// reader Read methods. The application must read the connection to process\n// pong messages as described in the section on Control Messages above.\nfunc (c *Conn) SetPongHandler(h func(appData string) error) {\n\tif h == nil {\n\t\th = func(string) error { return nil }\n\t}\n\tc.handlePong = h\n}\n\n// NetConn returns the underlying connection that is wrapped by c.\n// Note that writing to or reading from this connection directly will corrupt the\n// WebSocket connection.\nfunc (c *Conn) NetConn() net.Conn {\n\treturn c.conn\n}\n\n// UnderlyingConn returns the internal net.Conn. This can be used to further\n// modifications to connection specific flags.\n// Deprecated: Use the NetConn method.\nfunc (c *Conn) UnderlyingConn() net.Conn {\n\treturn c.conn\n}\n\n// EnableWriteCompression enables and disables write compression of\n// subsequent text and binary messages. This function is a noop if\n// compression was not negotiated with the peer.\nfunc (c *Conn) EnableWriteCompression(enable bool) {\n\tc.enableWriteCompression = enable\n}\n\n// SetCompressionLevel sets the flate compression level for subsequent text and\n// binary messages. This function is a noop if compression was not negotiated\n// with the peer. See the compress/flate package for a description of\n// compression levels.\nfunc (c *Conn) SetCompressionLevel(level int) error {\n\tif !isValidCompressionLevel(level) {\n\t\treturn errors.New(\"websocket: invalid compression level\")\n\t}\n\tc.compressionLevel = level\n\treturn nil\n}\n\n// FormatCloseMessage formats closeCode and text as a WebSocket close message.\n// An empty message is returned for code CloseNoStatusReceived.\nfunc FormatCloseMessage(closeCode int, text string) []byte {\n\tif closeCode == CloseNoStatusReceived {\n\t\t// Return empty message because it's illegal to send\n\t\t// CloseNoStatusReceived. Return non-nil value in case application\n\t\t// checks for nil.\n\t\treturn []byte{}\n\t}\n\tbuf := make([]byte, 2+len(text))\n\tbinary.BigEndian.PutUint16(buf, uint16(closeCode))\n\tcopy(buf[2:], text)\n\treturn buf\n}\n"
  },
  {
    "path": "gossh/websocket/doc.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights reserved.\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 websocket implements the WebSocket protocol defined in RFC 6455.\n//\n// # Overview\n//\n// The Conn type represents a WebSocket connection. A server application calls\n// the Upgrader.Upgrade method from an HTTP request handler to get a *Conn:\n//\n//\tvar upgrader = websocket.Upgrader{\n//\t    ReadBufferSize:  1024,\n//\t    WriteBufferSize: 1024,\n//\t}\n//\n//\tfunc handler(w http.ResponseWriter, r *http.Request) {\n//\t    conn, err := upgrader.Upgrade(w, r, nil)\n//\t    if err != nil {\n//\t        log.Println(err)\n//\t        return\n//\t    }\n//\t    ... Use conn to send and receive messages.\n//\t}\n//\n// Call the connection's WriteMessage and ReadMessage methods to send and\n// receive messages as a slice of bytes. This snippet of code shows how to echo\n// messages using these methods:\n//\n//\tfor {\n//\t    messageType, p, err := conn.ReadMessage()\n//\t    if err != nil {\n//\t        log.Println(err)\n//\t        return\n//\t    }\n//\t    if err := conn.WriteMessage(messageType, p); err != nil {\n//\t        log.Println(err)\n//\t        return\n//\t    }\n//\t}\n//\n// In above snippet of code, p is a []byte and messageType is an int with value\n// websocket.BinaryMessage or websocket.TextMessage.\n//\n// An application can also send and receive messages using the io.WriteCloser\n// and io.Reader interfaces. To send a message, call the connection NextWriter\n// method to get an io.WriteCloser, write the message to the writer and close\n// the writer when done. To receive a message, call the connection NextReader\n// method to get an io.Reader and read until io.EOF is returned. This snippet\n// shows how to echo messages using the NextWriter and NextReader methods:\n//\n//\tfor {\n//\t    messageType, r, err := conn.NextReader()\n//\t    if err != nil {\n//\t        return\n//\t    }\n//\t    w, err := conn.NextWriter(messageType)\n//\t    if err != nil {\n//\t        return err\n//\t    }\n//\t    if _, err := io.Copy(w, r); err != nil {\n//\t        return err\n//\t    }\n//\t    if err := w.Close(); err != nil {\n//\t        return err\n//\t    }\n//\t}\n//\n// # Data Messages\n//\n// The WebSocket protocol distinguishes between text and binary data messages.\n// Text messages are interpreted as UTF-8 encoded text. The interpretation of\n// binary messages is left to the application.\n//\n// This package uses the TextMessage and BinaryMessage integer constants to\n// identify the two data message types. The ReadMessage and NextReader methods\n// return the type of the received message. The messageType argument to the\n// WriteMessage and NextWriter methods specifies the type of a sent message.\n//\n// It is the application's responsibility to ensure that text messages are\n// valid UTF-8 encoded text.\n//\n// # Control Messages\n//\n// The WebSocket protocol defines three types of control messages: close, ping\n// and pong. Call the connection WriteControl, WriteMessage or NextWriter\n// methods to send a control message to the peer.\n//\n// Connections handle received close messages by calling the handler function\n// set with the SetCloseHandler method and by returning a *CloseError from the\n// NextReader, ReadMessage or the message Read method. The default close\n// handler sends a close message to the peer.\n//\n// Connections handle received ping messages by calling the handler function\n// set with the SetPingHandler method. The default ping handler sends a pong\n// message to the peer.\n//\n// Connections handle received pong messages by calling the handler function\n// set with the SetPongHandler method. The default pong handler does nothing.\n// If an application sends ping messages, then the application should set a\n// pong handler to receive the corresponding pong.\n//\n// The control message handler functions are called from the NextReader,\n// ReadMessage and message reader Read methods. The default close and ping\n// handlers can block these methods for a short time when the handler writes to\n// the connection.\n//\n// The application must read the connection to process close, ping and pong\n// messages sent from the peer. If the application is not otherwise interested\n// in messages from the peer, then the application should start a goroutine to\n// read and discard messages from the peer. A simple example is:\n//\n//\tfunc readLoop(c *websocket.Conn) {\n//\t    for {\n//\t        if _, _, err := c.NextReader(); err != nil {\n//\t            c.Close()\n//\t            break\n//\t        }\n//\t    }\n//\t}\n//\n// # Concurrency\n//\n// Connections support one concurrent reader and one concurrent writer.\n//\n// Applications are responsible for ensuring that no more than one goroutine\n// calls the write methods (NextWriter, SetWriteDeadline, WriteMessage,\n// WriteJSON, EnableWriteCompression, SetCompressionLevel) concurrently and\n// that no more than one goroutine calls the read methods (NextReader,\n// SetReadDeadline, ReadMessage, ReadJSON, SetPongHandler, SetPingHandler)\n// concurrently.\n//\n// The Close and WriteControl methods can be called concurrently with all other\n// methods.\n//\n// # Origin Considerations\n//\n// Web browsers allow Javascript applications to open a WebSocket connection to\n// any host. It's up to the server to enforce an origin policy using the Origin\n// request header sent by the browser.\n//\n// The Upgrader calls the function specified in the CheckOrigin field to check\n// the origin. If the CheckOrigin function returns false, then the Upgrade\n// method fails the WebSocket handshake with HTTP status 403.\n//\n// If the CheckOrigin field is nil, then the Upgrader uses a safe default: fail\n// the handshake if the Origin request header is present and the Origin host is\n// not equal to the Host request header.\n//\n// The deprecated package-level Upgrade function does not perform origin\n// checking. The application is responsible for checking the Origin header\n// before calling the Upgrade function.\n//\n// # Buffers\n//\n// Connections buffer network input and output to reduce the number\n// of system calls when reading or writing messages.\n//\n// Write buffers are also used for constructing WebSocket frames. See RFC 6455,\n// Section 5 for a discussion of message framing. A WebSocket frame header is\n// written to the network each time a write buffer is flushed to the network.\n// Decreasing the size of the write buffer can increase the amount of framing\n// overhead on the connection.\n//\n// The buffer sizes in bytes are specified by the ReadBufferSize and\n// WriteBufferSize fields in the Dialer and Upgrader. The Dialer uses a default\n// size of 4096 when a buffer size field is set to zero. The Upgrader reuses\n// buffers created by the HTTP server when a buffer size field is set to zero.\n// The HTTP server buffers have a size of 4096 at the time of this writing.\n//\n// The buffer sizes do not limit the size of a message that can be read or\n// written by a connection.\n//\n// Buffers are held for the lifetime of the connection by default. If the\n// Dialer or Upgrader WriteBufferPool field is set, then a connection holds the\n// write buffer only when writing a message.\n//\n// Applications should tune the buffer sizes to balance memory use and\n// performance. Increasing the buffer size uses more memory, but can reduce the\n// number of system calls to read or write the network. In the case of writing,\n// increasing the buffer size can reduce the number of frame headers written to\n// the network.\n//\n// Some guidelines for setting buffer parameters are:\n//\n// Limit the buffer sizes to the maximum expected message size. Buffers larger\n// than the largest message do not provide any benefit.\n//\n// Depending on the distribution of message sizes, setting the buffer size to\n// a value less than the maximum expected message size can greatly reduce memory\n// use with a small impact on performance. Here's an example: If 99% of the\n// messages are smaller than 256 bytes and the maximum message size is 512\n// bytes, then a buffer size of 256 bytes will result in 1.01 more system calls\n// than a buffer size of 512 bytes. The memory savings is 50%.\n//\n// A write buffer pool is useful when the application has a modest number\n// writes over a large number of connections. when buffers are pooled, a larger\n// buffer size has a reduced impact on total memory use and has the benefit of\n// reducing system calls and frame overhead.\n//\n// # Compression EXPERIMENTAL\n//\n// Per message compression extensions (RFC 7692) are experimentally supported\n// by this package in a limited capacity. Setting the EnableCompression option\n// to true in Dialer or Upgrader will attempt to negotiate per message deflate\n// support.\n//\n//\tvar upgrader = websocket.Upgrader{\n//\t    EnableCompression: true,\n//\t}\n//\n// If compression was successfully negotiated with the connection's peer, any\n// message received in compressed form will be automatically decompressed.\n// All Read methods will return uncompressed bytes.\n//\n// Per message compression of messages written to a connection can be enabled\n// or disabled by calling the corresponding Conn method:\n//\n//\tconn.EnableWriteCompression(false)\n//\n// Currently this package does not support compression with \"context takeover\".\n// This means that messages must be compressed and decompressed in isolation,\n// without retaining sliding window or dictionary state across messages. For\n// more details refer to RFC 7692.\n//\n// Use of compression is experimental and may result in decreased performance.\npackage websocket\n"
  },
  {
    "path": "gossh/websocket/join.go",
    "content": "// Copyright 2019 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"io\"\n\t\"strings\"\n)\n\n// JoinMessages concatenates received messages to create a single io.Reader.\n// The string term is appended to each message. The returned reader does not\n// support concurrent calls to the Read method.\nfunc JoinMessages(c *Conn, term string) io.Reader {\n\treturn &joinReader{c: c, term: term}\n}\n\ntype joinReader struct {\n\tc    *Conn\n\tterm string\n\tr    io.Reader\n}\n\nfunc (r *joinReader) Read(p []byte) (int, error) {\n\tif r.r == nil {\n\t\tvar err error\n\t\t_, r.r, err = r.c.NextReader()\n\t\tif err != nil {\n\t\t\treturn 0, err\n\t\t}\n\t\tif r.term != \"\" {\n\t\t\tr.r = io.MultiReader(r.r, strings.NewReader(r.term))\n\t\t}\n\t}\n\tn, err := r.r.Read(p)\n\tif err == io.EOF {\n\t\terr = nil\n\t\tr.r = nil\n\t}\n\treturn n, err\n}\n"
  },
  {
    "path": "gossh/websocket/json.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"encoding/json\"\n\t\"io\"\n)\n\n// WriteJSON writes the JSON encoding of v as a message.\n//\n// Deprecated: Use c.WriteJSON instead.\nfunc WriteJSON(c *Conn, v any) error {\n\treturn c.WriteJSON(v)\n}\n\n// WriteJSON writes the JSON encoding of v as a message.\n//\n// See the documentation for encoding/json Marshal for details about the\n// conversion of Go values to JSON.\nfunc (c *Conn) WriteJSON(v any) error {\n\tw, err := c.NextWriter(TextMessage)\n\tif err != nil {\n\t\treturn err\n\t}\n\terr1 := json.NewEncoder(w).Encode(v)\n\terr2 := w.Close()\n\tif err1 != nil {\n\t\treturn err1\n\t}\n\treturn err2\n}\n\n// ReadJSON reads the next JSON-encoded message from the connection and stores\n// it in the value pointed to by v.\n//\n// Deprecated: Use c.ReadJSON instead.\nfunc ReadJSON(c *Conn, v any) error {\n\treturn c.ReadJSON(v)\n}\n\n// ReadJSON reads the next JSON-encoded message from the connection and stores\n// it in the value pointed to by v.\n//\n// See the documentation for the encoding/json Unmarshal function for details\n// about the conversion of JSON to a Go value.\nfunc (c *Conn) ReadJSON(v any) error {\n\t_, r, err := c.NextReader()\n\tif err != nil {\n\t\treturn err\n\t}\n\terr = json.NewDecoder(r).Decode(v)\n\tif err == io.EOF {\n\t\t// One value is expected in the message.\n\t\terr = io.ErrUnexpectedEOF\n\t}\n\treturn err\n}\n"
  },
  {
    "path": "gossh/websocket/mask.go",
    "content": "// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.  Use of\n// this source code is governed by a BSD-style license that can be found in the\n// LICENSE file.\n\n//go:build !appengine\n// +build !appengine\n\npackage websocket\n\nimport \"unsafe\"\n\nconst wordSize = int(unsafe.Sizeof(uintptr(0)))\n\nfunc maskBytes(key [4]byte, pos int, b []byte) int {\n\t// Mask one byte at a time for small buffers.\n\tif len(b) < 2*wordSize {\n\t\tfor i := range b {\n\t\t\tb[i] ^= key[pos&3]\n\t\t\tpos++\n\t\t}\n\t\treturn pos & 3\n\t}\n\n\t// Mask one byte at a time to word boundary.\n\tif n := int(uintptr(unsafe.Pointer(&b[0]))) % wordSize; n != 0 {\n\t\tn = wordSize - n\n\t\tfor i := range b[:n] {\n\t\t\tb[i] ^= key[pos&3]\n\t\t\tpos++\n\t\t}\n\t\tb = b[n:]\n\t}\n\n\t// Create aligned word size key.\n\tvar k [wordSize]byte\n\tfor i := range k {\n\t\tk[i] = key[(pos+i)&3]\n\t}\n\tkw := *(*uintptr)(unsafe.Pointer(&k))\n\n\t// Mask one word at a time.\n\tn := (len(b) / wordSize) * wordSize\n\tfor i := 0; i < n; i += wordSize {\n\t\t*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&b[0])) + uintptr(i))) ^= kw\n\t}\n\n\t// Mask one byte at a time for remaining bytes.\n\tb = b[n:]\n\tfor i := range b {\n\t\tb[i] ^= key[pos&3]\n\t\tpos++\n\t}\n\n\treturn pos & 3\n}\n"
  },
  {
    "path": "gossh/websocket/mask_safe.go",
    "content": "// Copyright 2016 The Gorilla WebSocket Authors. All rights reserved.  Use of\n// this source code is governed by a BSD-style license that can be found in the\n// LICENSE file.\n\n//go:build appengine\n// +build appengine\n\npackage websocket\n\nfunc maskBytes(key [4]byte, pos int, b []byte) int {\n\tfor i := range b {\n\t\tb[i] ^= key[pos&3]\n\t\tpos++\n\t}\n\treturn pos & 3\n}\n"
  },
  {
    "path": "gossh/websocket/prepared.go",
    "content": "// Copyright 2017 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"bytes\"\n\t\"net\"\n\t\"sync\"\n\t\"time\"\n)\n\n// PreparedMessage caches on the wire representations of a message payload.\n// Use PreparedMessage to efficiently send a message payload to multiple\n// connections. PreparedMessage is especially useful when compression is used\n// because the CPU and memory expensive compression operation can be executed\n// once for a given set of compression options.\ntype PreparedMessage struct {\n\tmessageType int\n\tdata        []byte\n\tmu          sync.Mutex\n\tframes      map[prepareKey]*preparedFrame\n}\n\n// prepareKey defines a unique set of options to cache prepared frames in PreparedMessage.\ntype prepareKey struct {\n\tisServer         bool\n\tcompress         bool\n\tcompressionLevel int\n}\n\n// preparedFrame contains data in wire representation.\ntype preparedFrame struct {\n\tonce sync.Once\n\tdata []byte\n}\n\n// NewPreparedMessage returns an initialized PreparedMessage. You can then send\n// it to connection using WritePreparedMessage method. Valid wire\n// representation will be calculated lazily only once for a set of current\n// connection options.\nfunc NewPreparedMessage(messageType int, data []byte) (*PreparedMessage, error) {\n\tpm := &PreparedMessage{\n\t\tmessageType: messageType,\n\t\tframes:      make(map[prepareKey]*preparedFrame),\n\t\tdata:        data,\n\t}\n\n\t// Prepare a plain server frame.\n\t_, frameData, err := pm.frame(prepareKey{isServer: true, compress: false})\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\t// To protect against caller modifying the data argument, remember the data\n\t// copied to the plain server frame.\n\tpm.data = frameData[len(frameData)-len(data):]\n\treturn pm, nil\n}\n\nfunc (pm *PreparedMessage) frame(key prepareKey) (int, []byte, error) {\n\tpm.mu.Lock()\n\tframe, ok := pm.frames[key]\n\tif !ok {\n\t\tframe = &preparedFrame{}\n\t\tpm.frames[key] = frame\n\t}\n\tpm.mu.Unlock()\n\n\tvar err error\n\tframe.once.Do(func() {\n\t\t// Prepare a frame using a 'fake' connection.\n\t\t// TODO: Refactor code in conn.go to allow more direct construction of\n\t\t// the frame.\n\t\tmu := make(chan struct{}, 1)\n\t\tmu <- struct{}{}\n\t\tvar nc prepareConn\n\t\tc := &Conn{\n\t\t\tconn:                   &nc,\n\t\t\tmu:                     mu,\n\t\t\tisServer:               key.isServer,\n\t\t\tcompressionLevel:       key.compressionLevel,\n\t\t\tenableWriteCompression: true,\n\t\t\twriteBuf:               make([]byte, defaultWriteBufferSize+maxFrameHeaderSize),\n\t\t}\n\t\tif key.compress {\n\t\t\tc.newCompressionWriter = compressNoContextTakeover\n\t\t}\n\t\terr = c.WriteMessage(pm.messageType, pm.data)\n\t\tframe.data = nc.buf.Bytes()\n\t})\n\treturn pm.messageType, frame.data, err\n}\n\ntype prepareConn struct {\n\tbuf bytes.Buffer\n\tnet.Conn\n}\n\nfunc (pc *prepareConn) Write(p []byte) (int, error)        { return pc.buf.Write(p) }\nfunc (pc *prepareConn) SetWriteDeadline(t time.Time) error { return nil }\n"
  },
  {
    "path": "gossh/websocket/proxy.go",
    "content": "// Copyright 2017 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"bufio\"\n\t\"bytes\"\n\t\"context\"\n\t\"encoding/base64\"\n\t\"errors\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t//\"golang.org/x/net/proxy\"\n)\n\ntype netDialerFunc func(ctx context.Context, network, addr string) (net.Conn, error)\n\nfunc (fn netDialerFunc) Dial(network, addr string) (net.Conn, error) {\n\treturn fn(context.Background(), network, addr)\n}\n\nfunc (fn netDialerFunc) DialContext(ctx context.Context, network, addr string) (net.Conn, error) {\n\treturn fn(ctx, network, addr)\n}\n\nfunc proxyFromURL(proxyURL *url.URL, forwardDial netDialerFunc) (netDialerFunc, error) {\n\treturn nil, errors.New(\"Go-Websocket proxy not supported\")\n\t/*\n\t\tif proxyURL.Scheme == \"http\" {\n\t\t\treturn (&httpProxyDialer{proxyURL: proxyURL, forwardDial: forwardDial}).DialContext, nil\n\t\t}\n\t\tdialer, err := proxy.FromURL(proxyURL, forwardDial)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tif d, ok := dialer.(proxy.ContextDialer); ok {\n\t\t\treturn d.DialContext, nil\n\t\t}\n\t\treturn func(ctx context.Context, net, addr string) (net.Conn, error) {\n\t\t\treturn dialer.Dial(net, addr)\n\t\t}, nil\n\t*/\n}\n\ntype httpProxyDialer struct {\n\tproxyURL    *url.URL\n\tforwardDial netDialerFunc\n}\n\nfunc (hpd *httpProxyDialer) DialContext(ctx context.Context, network string, addr string) (net.Conn, error) {\n\thostPort, _ := hostPortNoPort(hpd.proxyURL)\n\tconn, err := hpd.forwardDial(ctx, network, hostPort)\n\tif err != nil {\n\t\treturn nil, err\n\t}\n\n\tconnectHeader := make(http.Header)\n\tif user := hpd.proxyURL.User; user != nil {\n\t\tproxyUser := user.Username()\n\t\tif proxyPassword, passwordSet := user.Password(); passwordSet {\n\t\t\tcredential := base64.StdEncoding.EncodeToString([]byte(proxyUser + \":\" + proxyPassword))\n\t\t\tconnectHeader.Set(\"Proxy-Authorization\", \"Basic \"+credential)\n\t\t}\n\t}\n\n\tconnectReq := &http.Request{\n\t\tMethod: http.MethodConnect,\n\t\tURL:    &url.URL{Opaque: addr},\n\t\tHost:   addr,\n\t\tHeader: connectHeader,\n\t}\n\n\tif err := connectReq.Write(conn); err != nil {\n\t\tconn.Close()\n\t\treturn nil, err\n\t}\n\n\t// Read response. It's OK to use and discard buffered reader here because\n\t// the remote server does not speak until spoken to.\n\tbr := bufio.NewReader(conn)\n\tresp, err := http.ReadResponse(br, connectReq)\n\tif err != nil {\n\t\tconn.Close()\n\t\treturn nil, err\n\t}\n\n\t// Close the response body to silence false positives from linters. Reset\n\t// the buffered reader first to ensure that Close() does not read from\n\t// conn.\n\t// Note: Applications must call resp.Body.Close() on a response returned\n\t// http.ReadResponse to inspect trailers or read another response from the\n\t// buffered reader. The call to resp.Body.Close() does not release\n\t// resources.\n\tbr.Reset(bytes.NewReader(nil))\n\t_ = resp.Body.Close()\n\n\tif resp.StatusCode != http.StatusOK {\n\t\t_ = conn.Close()\n\t\tf := strings.SplitN(resp.Status, \" \", 2)\n\t\treturn nil, errors.New(f[1])\n\t}\n\treturn conn, nil\n}\n"
  },
  {
    "path": "gossh/websocket/server.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"bufio\"\n\t\"net\"\n\t\"net/http\"\n\t\"net/url\"\n\t\"strings\"\n\t\"time\"\n)\n\n// HandshakeError describes an error with the handshake from the peer.\ntype HandshakeError struct {\n\tmessage string\n}\n\nfunc (e HandshakeError) Error() string { return e.message }\n\n// Upgrader specifies parameters for upgrading an HTTP connection to a\n// WebSocket connection.\n//\n// It is safe to call Upgrader's methods concurrently.\ntype Upgrader struct {\n\t// HandshakeTimeout specifies the duration for the handshake to complete.\n\tHandshakeTimeout time.Duration\n\n\t// ReadBufferSize and WriteBufferSize specify I/O buffer sizes in bytes. If a buffer\n\t// size is zero, then buffers allocated by the HTTP server are used. The\n\t// I/O buffer sizes do not limit the size of the messages that can be sent\n\t// or received.\n\tReadBufferSize, WriteBufferSize int\n\n\t// WriteBufferPool is a pool of buffers for write operations. If the value\n\t// is not set, then write buffers are allocated to the connection for the\n\t// lifetime of the connection.\n\t//\n\t// A pool is most useful when the application has a modest volume of writes\n\t// across a large number of connections.\n\t//\n\t// Applications should use a single pool for each unique value of\n\t// WriteBufferSize.\n\tWriteBufferPool BufferPool\n\n\t// Subprotocols specifies the server's supported protocols in order of\n\t// preference. If this field is not nil, then the Upgrade method negotiates a\n\t// subprotocol by selecting the first match in this list with a protocol\n\t// requested by the client. If there's no match, then no protocol is\n\t// negotiated (the Sec-Websocket-Protocol header is not included in the\n\t// handshake response).\n\tSubprotocols []string\n\n\t// Error specifies the function for generating HTTP error responses. If Error\n\t// is nil, then http.Error is used to generate the HTTP response.\n\tError func(w http.ResponseWriter, r *http.Request, status int, reason error)\n\n\t// CheckOrigin returns true if the request Origin header is acceptable. If\n\t// CheckOrigin is nil, then a safe default is used: return false if the\n\t// Origin request header is present and the origin host is not equal to\n\t// request Host header.\n\t//\n\t// A CheckOrigin function should carefully validate the request origin to\n\t// prevent cross-site request forgery.\n\tCheckOrigin func(r *http.Request) bool\n\n\t// EnableCompression specify if the server should attempt to negotiate per\n\t// message compression (RFC 7692). Setting this value to true does not\n\t// guarantee that compression will be supported. Currently only \"no context\n\t// takeover\" modes are supported.\n\tEnableCompression bool\n}\n\nfunc (u *Upgrader) returnError(w http.ResponseWriter, r *http.Request, status int, reason string) (*Conn, error) {\n\terr := HandshakeError{reason}\n\tif u.Error != nil {\n\t\tu.Error(w, r, status, err)\n\t} else {\n\t\tw.Header().Set(\"Sec-Websocket-Version\", \"13\")\n\t\thttp.Error(w, http.StatusText(status), status)\n\t}\n\treturn nil, err\n}\n\n// checkSameOrigin returns true if the origin is not set or is equal to the request host.\nfunc checkSameOrigin(r *http.Request) bool {\n\torigin := r.Header[\"Origin\"]\n\tif len(origin) == 0 {\n\t\treturn true\n\t}\n\tu, err := url.Parse(origin[0])\n\tif err != nil {\n\t\treturn false\n\t}\n\treturn equalASCIIFold(u.Host, r.Host)\n}\n\nfunc (u *Upgrader) selectSubprotocol(r *http.Request, responseHeader http.Header) string {\n\tif u.Subprotocols != nil {\n\t\tclientProtocols := Subprotocols(r)\n\t\tfor _, clientProtocol := range clientProtocols {\n\t\t\tfor _, serverProtocol := range u.Subprotocols {\n\t\t\t\tif clientProtocol == serverProtocol {\n\t\t\t\t\treturn clientProtocol\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else if responseHeader != nil {\n\t\treturn responseHeader.Get(\"Sec-Websocket-Protocol\")\n\t}\n\treturn \"\"\n}\n\n// Upgrade upgrades the HTTP server connection to the WebSocket protocol.\n//\n// The responseHeader is included in the response to the client's upgrade\n// request. Use the responseHeader to specify cookies (Set-Cookie). To specify\n// subprotocols supported by the server, set Upgrader.Subprotocols directly.\n//\n// If the upgrade fails, then Upgrade replies to the client with an HTTP error\n// response.\nfunc (u *Upgrader) Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header) (*Conn, error) {\n\tconst badHandshake = \"websocket: the client is not using the websocket protocol: \"\n\n\tif !tokenListContainsValue(r.Header, \"Connection\", \"upgrade\") {\n\t\treturn u.returnError(w, r, http.StatusBadRequest, badHandshake+\"'upgrade' token not found in 'Connection' header\")\n\t}\n\n\tif !tokenListContainsValue(r.Header, \"Upgrade\", \"websocket\") {\n\t\tw.Header().Set(\"Upgrade\", \"websocket\")\n\t\treturn u.returnError(w, r, http.StatusUpgradeRequired, badHandshake+\"'websocket' token not found in 'Upgrade' header\")\n\t}\n\n\tif r.Method != http.MethodGet {\n\t\treturn u.returnError(w, r, http.StatusMethodNotAllowed, badHandshake+\"request method is not GET\")\n\t}\n\n\tif !tokenListContainsValue(r.Header, \"Sec-Websocket-Version\", \"13\") {\n\t\treturn u.returnError(w, r, http.StatusBadRequest, \"websocket: unsupported version: 13 not found in 'Sec-Websocket-Version' header\")\n\t}\n\n\tif _, ok := responseHeader[\"Sec-Websocket-Extensions\"]; ok {\n\t\treturn u.returnError(w, r, http.StatusInternalServerError, \"websocket: application specific 'Sec-WebSocket-Extensions' headers are unsupported\")\n\t}\n\n\tcheckOrigin := u.CheckOrigin\n\tif checkOrigin == nil {\n\t\tcheckOrigin = checkSameOrigin\n\t}\n\tif !checkOrigin(r) {\n\t\treturn u.returnError(w, r, http.StatusForbidden, \"websocket: request origin not allowed by Upgrader.CheckOrigin\")\n\t}\n\n\tchallengeKey := r.Header.Get(\"Sec-Websocket-Key\")\n\tif !isValidChallengeKey(challengeKey) {\n\t\treturn u.returnError(w, r, http.StatusBadRequest, \"websocket: not a websocket handshake: 'Sec-WebSocket-Key' header must be Base64 encoded value of 16-byte in length\")\n\t}\n\n\tsubprotocol := u.selectSubprotocol(r, responseHeader)\n\n\t// Negotiate PMCE\n\tvar compress bool\n\tif u.EnableCompression {\n\t\tfor _, ext := range parseExtensions(r.Header) {\n\t\t\tif ext[\"\"] != \"permessage-deflate\" {\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tcompress = true\n\t\t\tbreak\n\t\t}\n\t}\n\n\tnetConn, brw, err := http.NewResponseController(w).Hijack()\n\tif err != nil {\n\t\treturn u.returnError(w, r, http.StatusInternalServerError,\n\t\t\t\"websocket: hijack: \"+err.Error())\n\t}\n\n\t// Close the network connection when returning an error. The variable\n\t// netConn is set to nil before the success return at the end of the\n\t// function.\n\tdefer func() {\n\t\tif netConn != nil {\n\t\t\t// It's safe to ignore the error from Close() because this code is\n\t\t\t// only executed when returning a more important error to the\n\t\t\t// application.\n\t\t\t_ = netConn.Close()\n\t\t}\n\t}()\n\n\tvar br *bufio.Reader\n\tif u.ReadBufferSize == 0 && brw.Reader.Size() > 256 {\n\t\t// Use hijacked buffered reader as the connection reader.\n\t\tbr = brw.Reader\n\t} else if brw.Reader.Buffered() > 0 {\n\t\t// Wrap the network connection to read buffered data in brw.Reader\n\t\t// before reading from the network connection. This should be rare\n\t\t// because a client must not send message data before receiving the\n\t\t// handshake response.\n\t\tnetConn = &brNetConn{br: brw.Reader, Conn: netConn}\n\t}\n\n\tbuf := brw.Writer.AvailableBuffer()\n\n\tvar writeBuf []byte\n\tif u.WriteBufferPool == nil && u.WriteBufferSize == 0 && len(buf) >= maxFrameHeaderSize+256 {\n\t\t// Reuse hijacked write buffer as connection buffer.\n\t\twriteBuf = buf\n\t}\n\n\tc := newConn(netConn, true, u.ReadBufferSize, u.WriteBufferSize, u.WriteBufferPool, br, writeBuf)\n\tc.subprotocol = subprotocol\n\n\tif compress {\n\t\tc.newCompressionWriter = compressNoContextTakeover\n\t\tc.newDecompressionReader = decompressNoContextTakeover\n\t}\n\n\t// Use larger of hijacked buffer and connection write buffer for header.\n\tp := buf\n\tif len(c.writeBuf) > len(p) {\n\t\tp = c.writeBuf\n\t}\n\tp = p[:0]\n\n\tp = append(p, \"HTTP/1.1 101 Switching Protocols\\r\\nUpgrade: websocket\\r\\nConnection: Upgrade\\r\\nSec-WebSocket-Accept: \"...)\n\tp = append(p, computeAcceptKey(challengeKey)...)\n\tp = append(p, \"\\r\\n\"...)\n\tif c.subprotocol != \"\" {\n\t\tp = append(p, \"Sec-WebSocket-Protocol: \"...)\n\t\tp = append(p, c.subprotocol...)\n\t\tp = append(p, \"\\r\\n\"...)\n\t}\n\tif compress {\n\t\tp = append(p, \"Sec-WebSocket-Extensions: permessage-deflate; server_no_context_takeover; client_no_context_takeover\\r\\n\"...)\n\t}\n\tfor k, vs := range responseHeader {\n\t\tif k == \"Sec-Websocket-Protocol\" {\n\t\t\tcontinue\n\t\t}\n\t\tfor _, v := range vs {\n\t\t\tp = append(p, k...)\n\t\t\tp = append(p, \": \"...)\n\t\t\tfor i := 0; i < len(v); i++ {\n\t\t\t\tb := v[i]\n\t\t\t\tif b <= 31 {\n\t\t\t\t\t// prevent response splitting.\n\t\t\t\t\tb = ' '\n\t\t\t\t}\n\t\t\t\tp = append(p, b)\n\t\t\t}\n\t\t\tp = append(p, \"\\r\\n\"...)\n\t\t}\n\t}\n\tp = append(p, \"\\r\\n\"...)\n\n\tif u.HandshakeTimeout > 0 {\n\t\tif err := netConn.SetWriteDeadline(time.Now().Add(u.HandshakeTimeout)); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t} else {\n\t\t// Clear deadlines set by HTTP server.\n\t\tif err := netConn.SetDeadline(time.Time{}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\tif _, err = netConn.Write(p); err != nil {\n\t\treturn nil, err\n\t}\n\tif u.HandshakeTimeout > 0 {\n\t\tif err := netConn.SetWriteDeadline(time.Time{}); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\n\t// Success! Set netConn to nil to stop the deferred function above from\n\t// closing the network connection.\n\tnetConn = nil\n\n\treturn c, nil\n}\n\n// Upgrade upgrades the HTTP server connection to the WebSocket protocol.\n//\n// Deprecated: Use websocket.Upgrader instead.\n//\n// Upgrade does not perform origin checking. The application is responsible for\n// checking the Origin header before calling Upgrade. An example implementation\n// of the same origin policy check is:\n//\n//\tif req.Header.Get(\"Origin\") != \"http://\"+req.Host {\n//\t\thttp.Error(w, \"Origin not allowed\", http.StatusForbidden)\n//\t\treturn\n//\t}\n//\n// If the endpoint supports subprotocols, then the application is responsible\n// for negotiating the protocol used on the connection. Use the Subprotocols()\n// function to get the subprotocols requested by the client. Use the\n// Sec-Websocket-Protocol response header to specify the subprotocol selected\n// by the application.\n//\n// The responseHeader is included in the response to the client's upgrade\n// request. Use the responseHeader to specify cookies (Set-Cookie) and the\n// negotiated subprotocol (Sec-Websocket-Protocol).\n//\n// The connection buffers IO to the underlying network connection. The\n// readBufSize and writeBufSize parameters specify the size of the buffers to\n// use. Messages can be larger than the buffers.\n//\n// If the request is not a valid WebSocket handshake, then Upgrade returns an\n// error of type HandshakeError. Applications should handle this error by\n// replying to the client with an HTTP error response.\nfunc Upgrade(w http.ResponseWriter, r *http.Request, responseHeader http.Header, readBufSize, writeBufSize int) (*Conn, error) {\n\tu := Upgrader{ReadBufferSize: readBufSize, WriteBufferSize: writeBufSize}\n\tu.Error = func(w http.ResponseWriter, r *http.Request, status int, reason error) {\n\t\t// don't return errors to maintain backwards compatibility\n\t}\n\tu.CheckOrigin = func(r *http.Request) bool {\n\t\t// allow all connections by default\n\t\treturn true\n\t}\n\treturn u.Upgrade(w, r, responseHeader)\n}\n\n// Subprotocols returns the subprotocols requested by the client in the\n// Sec-Websocket-Protocol header.\nfunc Subprotocols(r *http.Request) []string {\n\th := strings.TrimSpace(r.Header.Get(\"Sec-Websocket-Protocol\"))\n\tif h == \"\" {\n\t\treturn nil\n\t}\n\tprotocols := strings.Split(h, \",\")\n\tfor i := range protocols {\n\t\tprotocols[i] = strings.TrimSpace(protocols[i])\n\t}\n\treturn protocols\n}\n\n// IsWebSocketUpgrade returns true if the client requested upgrade to the\n// WebSocket protocol.\nfunc IsWebSocketUpgrade(r *http.Request) bool {\n\treturn tokenListContainsValue(r.Header, \"Connection\", \"upgrade\") &&\n\t\ttokenListContainsValue(r.Header, \"Upgrade\", \"websocket\")\n}\n\ntype brNetConn struct {\n\tbr *bufio.Reader\n\tnet.Conn\n}\n\nfunc (b *brNetConn) Read(p []byte) (n int, err error) {\n\tif b.br != nil {\n\t\t// Limit read to buferred data.\n\t\tif n := b.br.Buffered(); len(p) > n {\n\t\t\tp = p[:n]\n\t\t}\n\t\tn, err = b.br.Read(p)\n\t\tif b.br.Buffered() == 0 {\n\t\t\tb.br = nil\n\t\t}\n\t\treturn n, err\n\t}\n\treturn b.Conn.Read(p)\n}\n\n// NetConn returns the underlying connection that is wrapped by b.\nfunc (b *brNetConn) NetConn() net.Conn {\n\treturn b.Conn\n}\n"
  },
  {
    "path": "gossh/websocket/util.go",
    "content": "// Copyright 2013 The Gorilla WebSocket Authors. All rights 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 websocket\n\nimport (\n\t\"crypto/rand\"\n\t\"crypto/sha1\"\n\t\"encoding/base64\"\n\t\"io\"\n\t\"net/http\"\n\t\"strings\"\n\t\"unicode/utf8\"\n)\n\nvar keyGUID = []byte(\"258EAFA5-E914-47DA-95CA-C5AB0DC85B11\")\n\nfunc computeAcceptKey(challengeKey string) string {\n\th := sha1.New()\n\th.Write([]byte(challengeKey))\n\th.Write(keyGUID)\n\treturn base64.StdEncoding.EncodeToString(h.Sum(nil))\n}\n\nfunc generateChallengeKey() (string, error) {\n\tp := make([]byte, 16)\n\tif _, err := io.ReadFull(rand.Reader, p); err != nil {\n\t\treturn \"\", err\n\t}\n\treturn base64.StdEncoding.EncodeToString(p), nil\n}\n\n// Token octets per RFC 2616.\nvar isTokenOctet = [256]bool{\n\t'!':  true,\n\t'#':  true,\n\t'$':  true,\n\t'%':  true,\n\t'&':  true,\n\t'\\'': true,\n\t'*':  true,\n\t'+':  true,\n\t'-':  true,\n\t'.':  true,\n\t'0':  true,\n\t'1':  true,\n\t'2':  true,\n\t'3':  true,\n\t'4':  true,\n\t'5':  true,\n\t'6':  true,\n\t'7':  true,\n\t'8':  true,\n\t'9':  true,\n\t'A':  true,\n\t'B':  true,\n\t'C':  true,\n\t'D':  true,\n\t'E':  true,\n\t'F':  true,\n\t'G':  true,\n\t'H':  true,\n\t'I':  true,\n\t'J':  true,\n\t'K':  true,\n\t'L':  true,\n\t'M':  true,\n\t'N':  true,\n\t'O':  true,\n\t'P':  true,\n\t'Q':  true,\n\t'R':  true,\n\t'S':  true,\n\t'T':  true,\n\t'U':  true,\n\t'W':  true,\n\t'V':  true,\n\t'X':  true,\n\t'Y':  true,\n\t'Z':  true,\n\t'^':  true,\n\t'_':  true,\n\t'`':  true,\n\t'a':  true,\n\t'b':  true,\n\t'c':  true,\n\t'd':  true,\n\t'e':  true,\n\t'f':  true,\n\t'g':  true,\n\t'h':  true,\n\t'i':  true,\n\t'j':  true,\n\t'k':  true,\n\t'l':  true,\n\t'm':  true,\n\t'n':  true,\n\t'o':  true,\n\t'p':  true,\n\t'q':  true,\n\t'r':  true,\n\t's':  true,\n\t't':  true,\n\t'u':  true,\n\t'v':  true,\n\t'w':  true,\n\t'x':  true,\n\t'y':  true,\n\t'z':  true,\n\t'|':  true,\n\t'~':  true,\n}\n\n// skipSpace returns a slice of the string s with all leading RFC 2616 linear\n// whitespace removed.\nfunc skipSpace(s string) (rest string) {\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif b := s[i]; b != ' ' && b != '\\t' {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn s[i:]\n}\n\n// nextToken returns the leading RFC 2616 token of s and the string following\n// the token.\nfunc nextToken(s string) (token, rest string) {\n\ti := 0\n\tfor ; i < len(s); i++ {\n\t\tif !isTokenOctet[s[i]] {\n\t\t\tbreak\n\t\t}\n\t}\n\treturn s[:i], s[i:]\n}\n\n// nextTokenOrQuoted returns the leading token or quoted string per RFC 2616\n// and the string following the token or quoted string.\nfunc nextTokenOrQuoted(s string) (value string, rest string) {\n\tif !strings.HasPrefix(s, \"\\\"\") {\n\t\treturn nextToken(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\n// equalASCIIFold returns true if s is equal to t with ASCII case folding as\n// defined in RFC 4790.\nfunc equalASCIIFold(s, t string) bool {\n\tfor s != \"\" && t != \"\" {\n\t\tsr, size := utf8.DecodeRuneInString(s)\n\t\ts = s[size:]\n\t\ttr, size := utf8.DecodeRuneInString(t)\n\t\tt = t[size:]\n\t\tif sr == tr {\n\t\t\tcontinue\n\t\t}\n\t\tif 'A' <= sr && sr <= 'Z' {\n\t\t\tsr = sr + 'a' - 'A'\n\t\t}\n\t\tif 'A' <= tr && tr <= 'Z' {\n\t\t\ttr = tr + 'a' - 'A'\n\t\t}\n\t\tif sr != tr {\n\t\t\treturn false\n\t\t}\n\t}\n\treturn s == t\n}\n\n// tokenListContainsValue returns true if the 1#token header with the given\n// name contains a token equal to value with ASCII case folding.\nfunc tokenListContainsValue(header http.Header, name string, value string) bool {\nheaders:\n\tfor _, s := range header[name] {\n\t\tfor {\n\t\t\tvar t string\n\t\t\tt, s = nextToken(skipSpace(s))\n\t\t\tif t == \"\" {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\ts = skipSpace(s)\n\t\t\tif s != \"\" && s[0] != ',' {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\tif equalASCIIFold(t, value) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif s == \"\" {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\ts = s[1:]\n\t\t}\n\t}\n\treturn false\n}\n\n// parseExtensions parses WebSocket extensions from a header.\nfunc parseExtensions(header http.Header) []map[string]string {\n\t// From RFC 6455:\n\t//\n\t//  Sec-WebSocket-Extensions = extension-list\n\t//  extension-list = 1#extension\n\t//  extension = extension-token *( \";\" extension-param )\n\t//  extension-token = registered-token\n\t//  registered-token = token\n\t//  extension-param = token [ \"=\" (token | quoted-string) ]\n\t//     ;When using the quoted-string syntax variant, the value\n\t//     ;after quoted-string unescaping MUST conform to the\n\t//     ;'token' ABNF.\n\n\tvar result []map[string]string\nheaders:\n\tfor _, s := range header[\"Sec-Websocket-Extensions\"] {\n\t\tfor {\n\t\t\tvar t string\n\t\t\tt, s = nextToken(skipSpace(s))\n\t\t\tif t == \"\" {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\text := map[string]string{\"\": t}\n\t\t\tfor {\n\t\t\t\ts = skipSpace(s)\n\t\t\t\tif !strings.HasPrefix(s, \";\") {\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t\tvar k string\n\t\t\t\tk, s = nextToken(skipSpace(s[1:]))\n\t\t\t\tif k == \"\" {\n\t\t\t\t\tcontinue headers\n\t\t\t\t}\n\t\t\t\ts = skipSpace(s)\n\t\t\t\tvar v string\n\t\t\t\tif strings.HasPrefix(s, \"=\") {\n\t\t\t\t\tv, s = nextTokenOrQuoted(skipSpace(s[1:]))\n\t\t\t\t\ts = skipSpace(s)\n\t\t\t\t}\n\t\t\t\tif s != \"\" && s[0] != ',' && s[0] != ';' {\n\t\t\t\t\tcontinue headers\n\t\t\t\t}\n\t\t\t\text[k] = v\n\t\t\t}\n\t\t\tif s != \"\" && s[0] != ',' {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\tresult = append(result, ext)\n\t\t\tif s == \"\" {\n\t\t\t\tcontinue headers\n\t\t\t}\n\t\t\ts = s[1:]\n\t\t}\n\t}\n\treturn result\n}\n\n// isValidChallengeKey checks if the argument meets RFC6455 specification.\nfunc isValidChallengeKey(s string) bool {\n\t// From RFC6455:\n\t//\n\t// A |Sec-WebSocket-Key| header field with a base64-encoded (see\n\t// Section 4 of [RFC4648]) value that, when decoded, is 16 bytes in\n\t// length.\n\n\tif s == \"\" {\n\t\treturn false\n\t}\n\tdecoded, err := base64.StdEncoding.DecodeString(s)\n\treturn err == nil && len(decoded) == 16\n}\n"
  },
  {
    "path": "postman.json",
    "content": "{\n\t\"info\": {\n\t\t\"_postman_id\": \"2be3976b-7d76-4a9b-b8b0-4bd386ca2826\",\n\t\t\"name\": \"GoWebSSH\",\n\t\t\"schema\": \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\"\n\t},\n\t\"item\": [\n\t\t{\n\t\t\t\"name\": \"连接配置\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/gapp/v1/api/conn_conf\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"gapp\",\n\t\t\t\t\t\t\t\t\"v1\",\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"conn_conf\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/conn_conf/1\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"conn_conf\",\n\t\t\t\t\t\t\t\t\"1\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n\\n    \\\"name\\\": \\\"vv\\\",\\n    \\\"address\\\": \\\"192.168.150.200\\\",\\n    \\\"user\\\": \\\"root\\\",\\n    \\\"pwd\\\": \\\"2\\\",\\n    \\\"auth_type\\\": \\\"pwd\\\",\\n    \\\"net_type\\\": \\\"tcp4\\\",\\n    \\\"cert_data\\\": \\\"\\\",\\n    \\\"cert_pwd\\\": \\\"\\\",\\n    \\\"port\\\": 22,\\n    \\\"font_size\\\": 16,\\n    \\\"background\\\": \\\"#000000\\\",\\n    \\\"foreground\\\": \\\"#FFFFFF\\\",\\n    \\\"cursor_color\\\": \\\"#FFFFFF\\\",\\n    \\\"font_family\\\": \\\"Courier\\\",\\n    \\\"cursor_style\\\": \\\"block\\\",\\n    \\\"shell\\\": \\\"bash\\\",\\n    \\\"pty_type\\\": \\\"xterm-256color\\\",\\n    \\\"init_cmd\\\": \\\"pwd\\\",\\n    \\\"init_banner\\\": \\\"huang\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/conn_conf\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"conn_conf\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 3,\\n    \\\"name\\\": \\\"111\\\",\\n    \\\"address\\\": \\\"192.168.150.200\\\",\\n    \\\"user\\\": \\\"root\\\",\\n    \\\"pwd\\\": \\\"2\\\",\\n    \\\"auth_type\\\": \\\"pwd\\\",\\n    \\\"net_type\\\": \\\"tcp4\\\",\\n    \\\"cert_data\\\": \\\"\\\",\\n    \\\"cert_pwd\\\": \\\"\\\",\\n    \\\"port\\\": 22,\\n    \\\"font_size\\\": 16,\\n    \\\"background\\\": \\\"#000000\\\",\\n    \\\"foreground\\\": \\\"#FFFFFF\\\",\\n    \\\"cursor_color\\\": \\\"#FFFFFF\\\",\\n    \\\"font_family\\\": \\\"Courier\\\",\\n    \\\"cursor_style\\\": \\\"block\\\",\\n    \\\"shell\\\": \\\"bash\\\",\\n    \\\"pty_type\\\": \\\"xterm-256color\\\",\\n    \\\"init_cmd\\\": \\\"pwd\\\",\\n    \\\"init_banner\\\": \\\"okokksss\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/conn_conf\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"conn_conf\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Id删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/conn_conf/3\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"conn_conf\",\n\t\t\t\t\t\t\t\t\"3\"\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"用户管理\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\"2\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\":\\\"abc\\\",\\n    \\\"pwd\\\":\\\"123\\\",\\n    \\\"desc_info\\\":\\\"ac\\\",\\n    \\\"is_admin\\\": \\\"N\\\",\\n    \\\"is_enable\\\": \\\"Y\\\",\\n    \\\"expiry_at\\\":\\\"2049-12-31 00:00:00\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 2,\\n    \\\"name\\\": \\\"abc\\\",\\n    \\\"pwd\\\": \\\"123\\\",\\n    \\\"desc_info\\\": \\\"ac\\\",\\n    \\\"is_admin\\\": \\\"Y\\\",\\n    \\\"is_enable\\\": \\\"N\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"Id删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NTg3NH0.o4pjzmnTwwV7k1MBsyk-mbM3NdroNpF3L6GHEWGEFQ\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user/4\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\"4\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"登陆\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\":\\\"huang\\\",\\n    \\\"pwd\\\":\\\"rui\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/gapp/v1/api/login\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"gapp\",\n\t\t\t\t\t\t\t\t\"v1\",\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"login\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"更新用户\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjEzMH0.wyBO_5wR6G2zzUkq3_6esLo9Wcmbhh69O3wbhxy3CEc\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 3,\\n    \\\"name\\\": \\\"abc\\\",\\n    \\\"pwd\\\": \\\"123\\\",\\n    \\\"desc_info\\\": \\\"ac\\\",\\n    \\\"is_admin\\\": \\\"Y\\\",\\n    \\\"is_enable\\\": \\\"N\\\",\\n    \\\"expiry_at\\\": \\\"2024-04-21 11:48:00\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"检查用户名是否存在\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PATCH\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\":\\\"huanga\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user/check_name_exists\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\"check_name_exists\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"修改密码\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PATCH\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"pwd\\\":\\\"ppp\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/user/pwd\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"user\",\n\t\t\t\t\t\t\t\t\"pwd\"\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"系统信息\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"是否初始化\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sys/is_init\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sys\",\n\t\t\t\t\t\t\t\t\"is_init\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"获取运行配置\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sys/config\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sys\",\n\t\t\t\t\t\t\t\t\"config\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"修改运行配置\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n        \\\"app_name\\\": \\\"BBc\\\",\\n        \\\"run_mode\\\": 3,\\n        \\\"db_dsn\\\": \\\"my:123@qqyy se aa=bb cc=44\\\",\\n        \\\"is_init\\\": true,\\n        \\\"jwt_secret\\\": \\\"mimaxx\\\",\\n        \\\"session_name\\\": \\\"mimixx\\\",\\n        \\\"session_path\\\": \\\"/xx/xx\\\",\\n        \\\"session_http_only\\\": true,\\n        \\\"session_secure\\\": false,\\n        \\\"session_domain\\\": \\\"websshaa\\\",\\n        \\\"session_max_age\\\": 10,\\n        \\\"session_same_site\\\": 20\\n    }\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sys/config\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sys\",\n\t\t\t\t\t\t\t\t\"config\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"数据库连接检查\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"db_type\\\": \\\"mysql\\\",\\n    \\\"db_dsn\\\": \\\"root:mima@tcp(192.168.150.200:3306)/dba?charset=utf8mb4&parseTime=True&loc=Local\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sys/db_conn_check\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sys\",\n\t\t\t\t\t\t\t\t\"db_conn_check\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"系统初始化\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"db_type\\\": \\\"pgsql\\\",\\n    \\\"db_dsn\\\": \\\"host=192.168.150.200 port=5432 user=postgres dbname=dba sslmode=disable password=mima\\\",\\n    \\\"jwt_secret\\\": \\\"rgcR6ifl3kdH3FWZCx2XFeXqqBrGumxLgxudtaQxL5ni8LdVumuevdxHJi9FLNHy\\\",\\n    \\\"session_secret\\\": \\\"ugLa8BlyUoWs60iCpZnAzvYz6EM5m1qnjDFGjDHTl4nspQtSJOY24fKso1WkbvOF\\\",\\n    \\\"username\\\": \\\"huang\\\",\\n    \\\"password\\\": \\\"rui\\\",\\n    \\\"sshd_host\\\": \\\"0.0.0.0\\\",\\n    \\\"sshd_port\\\": 22622,\\n    \\\"sshd_user\\\": \\\"admin\\\",\\n    \\\"sshd_pwd\\\": \\\"mima\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sys/init\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sys\",\n\t\t\t\t\t\t\t\t\"init\"\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"命令收藏\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/cmd_note?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"cmd_note\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/cmd_note/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"cmd_note\",\n\t\t\t\t\t\t\t\t\"2\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"cmd_name\\\": \\\"ss\\\",\\n    \\\"cmd_data\\\": \\\"ss\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/cmd_note\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"cmd_note\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"        {\\n            \\\"id\\\":2,\\n            \\\"cmd_name\\\": \\\"pwd\\\",\\n            \\\"cmd_data\\\": \\\"pwd && ls\\\"\\n        }\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/cmd_note\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"cmd_note\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"key\": \"Authorization\",\n\t\t\t\t\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6MiwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTcxMzA2NjU1NX0.9eTeYhvE9BiVXWYr3Sp_3JNB91vmxuMsuJ8TOokXjAA\",\n\t\t\t\t\t\t\t\t\"type\": \"text\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"        {\\n            \\\"id\\\":2,\\n            \\\"cmd_name\\\": \\\"pwd\\\",\\n            \\\"cmd_data\\\": \\\"pwd && ls\\\"\\n        }\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/cmd_note/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"cmd_note\",\n\t\t\t\t\t\t\t\t\"2\"\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"访问控制\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/net_filter?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"net_filter\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/net_filter/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"net_filter\",\n\t\t\t\t\t\t\t\t\"2\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\": \\\"dmz\\\",\\n    \\\"cidr\\\": \\\"127.0.0.0/32\\\",\\n    \\\"net_policy\\\": \\\"Y\\\",\\n    \\\"policy_no\\\": 15,\\n    \\\"expiry_at\\\": \\\"2024-04-20 19:31:35\\\",\\n    \\\"created_at\\\": \\\"2024-04-20 19:31:40\\\",\\n    \\\"updated_at\\\": \\\"2024-04-20 19:31:42\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/net_filter\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"net_filter\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 2,\\n    \\\"name\\\": \\\"222\\\",\\n    \\\"cidr\\\": \\\"10.10.3.0/16\\\",\\n    \\\"net_policy\\\": \\\"Y\\\",\\n    \\\"policy_no\\\": 18,\\n    \\\"expiry_at\\\": \\\"2024-04-20 19:31:35\\\",\\n    \\\"created_at\\\": \\\"2024-04-20 19:31:40\\\",\\n    \\\"updated_at\\\": \\\"2024-04-20 19:31:42\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/net_filter\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"net_filter\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"        {\\n            \\\"id\\\":2,\\n            \\\"name\\\": \\\"222\\\",\\n            \\\"cidr\\\": \\\"10.10.3.0/16\\\",\\n            \\\"net_policy\\\": \\\"Y\\\",\\n            \\\"policy_no\\\": 18,\\n            \\\"expiry_at\\\": \\\"2024-04-20 19:31:35\\\",\\n            \\\"created_at\\\": \\\"2024-04-20 19:31:40\\\",\\n            \\\"updated_at\\\": \\\"2024-04-20 19:31:42\\\"\\n        }\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/net_filter/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"net_filter\",\n\t\t\t\t\t\t\t\t\"2\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"策略配置\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/policy_conf?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"policy_conf\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/policy_conf/1\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"policy_conf\",\n\t\t\t\t\t\t\t\t\"1\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"net_policy\\\": \\\"Y\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/policy_conf\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"policy_conf\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 1,\\n    \\\"net_policy\\\": \\\"Y\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/policy_conf\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"policy_conf\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/policy_conf/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"policy_conf\",\n\t\t\t\t\t\t\t\t\"2\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"SSHD账号配置\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_user?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_user\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_user/1\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_user\",\n\t\t\t\t\t\t\t\t\"1\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\": \\\"admin\\\",\\n    \\\"pwd\\\": \\\"mima\\\",\\n    \\\"desc_info\\\": \\\"SSHD服务器初始化账号\\\",\\n    \\\"is_enable\\\": \\\"Y\\\",\\n    \\\"work_dir\\\": \\\"\\\",\\n    \\\"expiry_at\\\": \\\"2099-12-31 00:00:00\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_user\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_user\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 2,\\n    \\\"name\\\": \\\"dd\\\",\\n    \\\"pwd\\\": \\\"dd\\\",\\n    \\\"desc_info\\\": \\\"dddd\\\",\\n    \\\"is_enable\\\": \\\"N\\\",\\n    \\\"work_dir\\\": \\\"SS\\\",\\n    \\\"expiry_at\\\": \\\"2029-12-31 00:00:00\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_user\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_user\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_user/2\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_user\",\n\t\t\t\t\t\t\t\t\"2\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"name\": \"SSHD证书配置\",\n\t\t\t\"item\": [\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询列表\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert?offset=0&limit=100\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\"\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID查询\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert/3\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert\",\n\t\t\t\t\t\t\t\t\"3\"\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"新增\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"POST\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"name\\\": \\\"inits\\\",\\n    \\\"desc_info\\\":\\\"da\\\",\\n    \\\"pub_key\\\": \\\"ssh-rsa AAAAB3Nza..= root@aaa.com\\\",\\n    \\\"is_enable\\\": \\\"Y\\\",\\n    \\\"expiry_at\\\": \\\"2024-12-24 04:57:51\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID更新\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"PUT\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"body\": {\n\t\t\t\t\t\t\t\"mode\": \"raw\",\n\t\t\t\t\t\t\t\"raw\": \"{\\n    \\\"id\\\": 7,\\n    \\\"name\\\": \\\"777a\\\",\\n    \\\"desc_info\\\":\\\"da\\\",\\n    \\\"pub_key\\\": \\\"ssh-rsa AAAA123 root@aaa.com\\\",\\n    \\\"is_enable\\\": \\\"N\\\",\\n    \\\"expiry_at\\\": \\\"2024-10-24 04:57:51\\\"\\n}\",\n\t\t\t\t\t\t\t\"options\": {\n\t\t\t\t\t\t\t\t\"raw\": {\n\t\t\t\t\t\t\t\t\t\"language\": \"json\"\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\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"ID删除\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"DELETE\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert/5\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert\",\n\t\t\t\t\t\t\t\t\"5\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"query\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"key\": \"offset\",\n\t\t\t\t\t\t\t\t\t\"value\": \"0\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\n\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\t\t\"key\": \"limit\",\n\t\t\t\t\t\t\t\t\t\"value\": \"100\",\n\t\t\t\t\t\t\t\t\t\"disabled\": true\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\"response\": []\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"name\": \"查询证书TXT\",\n\t\t\t\t\t\"request\": {\n\t\t\t\t\t\t\"method\": \"GET\",\n\t\t\t\t\t\t\"header\": [],\n\t\t\t\t\t\t\"url\": {\n\t\t\t\t\t\t\t\"raw\": \"http://{{host}}:{{port}}/api/sshd_cert_text\",\n\t\t\t\t\t\t\t\"protocol\": \"http\",\n\t\t\t\t\t\t\t\"host\": [\n\t\t\t\t\t\t\t\t\"{{host}}\"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"port\": \"{{port}}\",\n\t\t\t\t\t\t\t\"path\": [\n\t\t\t\t\t\t\t\t\"api\",\n\t\t\t\t\t\t\t\t\"sshd_cert_text\"\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\"response\": []\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t\"auth\": {\n\t\t\"type\": \"apikey\",\n\t\t\"apikey\": [\n\t\t\t{\n\t\t\t\t\"key\": \"value\",\n\t\t\t\t\"value\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJJZCI6NSwiaXNzIjoiZ29fd2ViX3NzaCIsImV4cCI6MTczMzU2NDc3OX0.egktgJmb7LqwiKFoozdVF2N5yvnRE00CJhv7KqHPjHQ\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"key\": \"key\",\n\t\t\t\t\"value\": \"Authorization\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t]\n\t},\n\t\"event\": [\n\t\t{\n\t\t\t\"listen\": \"prerequest\",\n\t\t\t\"script\": {\n\t\t\t\t\"type\": \"text/javascript\",\n\t\t\t\t\"exec\": [\n\t\t\t\t\t\"\"\n\t\t\t\t]\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\t\"listen\": \"test\",\n\t\t\t\"script\": {\n\t\t\t\t\"type\": \"text/javascript\",\n\t\t\t\t\"exec\": [\n\t\t\t\t\t\"\"\n\t\t\t\t]\n\t\t\t}\n\t\t}\n\t],\n\t\"variable\": [\n\t\t{\n\t\t\t\"key\": \"host\",\n\t\t\t\"value\": \"127.0.0.1\"\n\t\t},\n\t\t{\n\t\t\t\"key\": \"port\",\n\t\t\t\"value\": \"8080\",\n\t\t\t\"disabled\": true\n\t\t},\n\t\t{\n\t\t\t\"key\": \"port\",\n\t\t\t\"value\": \"8899\"\n\t\t}\n\t]\n}"
  },
  {
    "path": "sshd.dockerfile",
    "content": "# 指定创建的基础镜像\nFROM alpine:3.21.0\n  \n# 替换阿里云的并更新源、安装openssh 并修改配置文件和生成key 并且同步时间\nRUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \\    \n\t&& apk update \\    \n\t&& apk add --no-cache openssh openssh-server tzdata \\\n\t&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \\\n\t&& sed -i \"s/#PermitRootLogin.*/PermitRootLogin yes/g\" /etc/ssh/sshd_config \\\n\t&& sed -i \"s/#PasswordAuthentication.*/PasswordAuthentication yes/g\" /etc/ssh/sshd_config \\\n\t&& ssh-keygen -t dsa -P \"\" -f /etc/ssh/ssh_host_dsa_key \\\n\t&& ssh-keygen -t rsa -P \"\" -f /etc/ssh/ssh_host_rsa_key \\ \n\t&& ssh-keygen -t ecdsa -P \"\" -f /etc/ssh/ssh_host_ecdsa_key \\\n\t&& ssh-keygen -t ed25519 -P \"\" -f /etc/ssh/ssh_host_ed25519_key \\\n\t&& echo \"root:admin\" | chpasswd\n\n# 开放22端口\nEXPOSE 22\n \n# 容器启动时执行ssh启动命令\nCMD [\"/usr/sbin/sshd\", \"-D\"]\n"
  },
  {
    "path": "webssh/.gitignore",
    "content": "# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\npnpm-debug.log*\nlerna-debug.log*\n\nnode_modules\nnode_modules/*\n.DS_Store\ndist\ndist-ssr\ncoverage\n*.local\n\n/cypress/videos/\n/cypress/screenshots/\n\n# Editor directories and files\n.vscode/*\n!.vscode/extensions.json\n.idea\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw?\n\n*.tsbuildinfo\nnode_modules\nnode_modules\nnode_modules\n"
  },
  {
    "path": "webssh/README.md",
    "content": "# webssh\n\nThis template should help get you started developing with Vue 3 in Vite.\n\n## Recommended IDE Setup\n\n[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).\n\n## Type Support for `.vue` Imports in TS\n\nTypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.\n\n## Customize configuration\n\nSee [Vite Configuration Reference](https://vitejs.dev/config/).\n\n## Project Setup\n\n```sh\nnpm install\n```\n\n### Compile and Hot-Reload for Development\n\n```sh\nnpm run dev\n```\n\n### Type-Check, Compile and Minify for Production\n\n```sh\nnpm run build\n```\n\n\n```sh\n# 设置\nnpm config set registry https://registry.npmmirror.com\n\n# 查询\nnpm config get registry\n\n# 恢复默认\nnpm config set registry https://registry.npmjs.org\n```"
  },
  {
    "path": "webssh/auto-imports.d.ts",
    "content": "/* eslint-disable */\n/* prettier-ignore */\n// @ts-nocheck\n// noinspection JSUnusedGlobalSymbols\n// Generated by unplugin-auto-import\n// biome-ignore lint: disable\nexport {}\ndeclare global {\n\n}\n"
  },
  {
    "path": "webssh/components.d.ts",
    "content": "/* eslint-disable */\n// @ts-nocheck\n// Generated by unplugin-vue-components\n// Read more: https://github.com/vuejs/core/pull/3399\nexport {}\n\n/* prettier-ignore */\ndeclare module 'vue' {\n  export interface GlobalComponents {\n    Account: typeof import('./src/components/Account.vue')['default']\n    Connect: typeof import('./src/components/Connect.vue')['default']\n    ElButton: typeof import('element-plus/es')['ElButton']\n    ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']\n    ElCard: typeof import('element-plus/es')['ElCard']\n    ElCol: typeof import('element-plus/es')['ElCol']\n    ElCollapse: typeof import('element-plus/es')['ElCollapse']\n    ElCollapseItem: typeof import('element-plus/es')['ElCollapseItem']\n    ElColorPicker: typeof import('element-plus/es')['ElColorPicker']\n    ElContainer: typeof import('element-plus/es')['ElContainer']\n    ElDatePicker: typeof import('element-plus/es')['ElDatePicker']\n    ElDialog: typeof import('element-plus/es')['ElDialog']\n    ElDivider: typeof import('element-plus/es')['ElDivider']\n    ElForm: typeof import('element-plus/es')['ElForm']\n    ElFormItem: typeof import('element-plus/es')['ElFormItem']\n    ElHeader: typeof import('element-plus/es')['ElHeader']\n    ElInput: typeof import('element-plus/es')['ElInput']\n    ElInputNumber: typeof import('element-plus/es')['ElInputNumber']\n    ElLink: typeof import('element-plus/es')['ElLink']\n    ElMain: typeof import('element-plus/es')['ElMain']\n    ElOption: typeof import('element-plus/es')['ElOption']\n    ElPagination: typeof import('element-plus/es')['ElPagination']\n    ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']\n    ElProgress: typeof import('element-plus/es')['ElProgress']\n    ElRadio: typeof import('element-plus/es')['ElRadio']\n    ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']\n    ElResult: typeof import('element-plus/es')['ElResult']\n    ElRow: typeof import('element-plus/es')['ElRow']\n    ElSelect: typeof import('element-plus/es')['ElSelect']\n    ElStep: typeof import('element-plus/es')['ElStep']\n    ElSteps: typeof import('element-plus/es')['ElSteps']\n    ElTable: typeof import('element-plus/es')['ElTable']\n    ElTableColumn: typeof import('element-plus/es')['ElTableColumn']\n    ElTabPane: typeof import('element-plus/es')['ElTabPane']\n    ElTabs: typeof import('element-plus/es')['ElTabs']\n    ElTag: typeof import('element-plus/es')['ElTag']\n    ElText: typeof import('element-plus/es')['ElText']\n    ElTooltip: typeof import('element-plus/es')['ElTooltip']\n    LoginAudit: typeof import('./src/components/LoginAudit.vue')['default']\n    NetFilter: typeof import('./src/components/NetFilter.vue')['default']\n    RouterLink: typeof import('vue-router')['RouterLink']\n    RouterView: typeof import('vue-router')['RouterView']\n    SshdCert: typeof import('./src/components/SshdCert.vue')['default']\n    SshdUser: typeof import('./src/components/SshdUser.vue')['default']\n  }\n}\n"
  },
  {
    "path": "webssh/env.d.ts",
    "content": "/// <reference types=\"vite/client\" />\n"
  },
  {
    "path": "webssh/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"zh-cn\">\n  <head>\n    <meta charset=\"UTF-8\">\n    <link rel=\"icon\" href=\"/favicon.ico\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>GoWebSSH</title>\n    <style>\n      html,\n      body,\n      #app {\n        height: 100%;\n        margin: 0px;\n        padding: 0px;\n        font-family: \"Helvetica Neue\", Helvetica, \"PingFang SC\", \"Hiragino Sans GB\", \"Microsoft YaHei\", \"微软雅黑\", Arial, sans-serif;\n      }\n    </style>\n  </head>\n\n  <body>\n    <noscript>\n      <strong>请开启JavaScript支持</strong>\n    </noscript>\n    <div id=\"app\"></div>\n    <script type=\"module\" src=\"/src/main.ts\"></script>\n  </body>\n\n</html>\n"
  },
  {
    "path": "webssh/package.json",
    "content": "{\n  \"name\": \"webssh\",\n  \"version\": \"2.4.0\",\n  \"private\": true,\n  \"type\": \"module\",\n  \"scripts\": {\n    \"dev\": \"vite\",\n    \"build\": \"run-p type-check \\\"build-only {@}\\\" --\",\n    \"preview\": \"vite preview\",\n    \"build-only\": \"vite build\",\n    \"type-check\": \"vue-tsc --build --force\"\n  },\n  \"dependencies\": {\n    \"@xterm/addon-attach\": \"^0.11.0\",\n    \"@xterm/addon-fit\": \"^0.10.0\",\n    \"@xterm/xterm\": \"^5.5.0\",\n    \"axios\": \"^1.7.8\",\n    \"element-plus\": \"^2.9.1\",\n    \"pinia\": \"^2.2.6\",\n    \"pinia-plugin-persistedstate\": \"^4.1.3\",\n    \"vue\": \"^3.5.13\",\n    \"vue-router\": \"^4.4.5\"\n  },\n  \"devDependencies\": {\n    \"@tsconfig/node22\": \"^22.0.0\",\n    \"@types/node\": \"^22.9.3\",\n    \"@vitejs/plugin-vue\": \"^5.2.1\",\n    \"@vue/tsconfig\": \"^0.7.0\",\n    \"npm-run-all2\": \"^7.0.1\",\n    \"typescript\": \"~5.6.3\",\n    \"unplugin-auto-import\": \"^0.18.5\",\n    \"unplugin-vue-components\": \"^0.27.4\",\n    \"vite\": \"^6.0.3\",\n    \"vite-plugin-vue-devtools\": \"^7.6.7\",\n    \"vue-tsc\": \"^2.1.10\"\n  }\n}\n"
  },
  {
    "path": "webssh/src/App.vue",
    "content": "<template>\n  <router-view />\n</template>\n\n<script setup lang=\"ts\">\n\nimport { onBeforeMount, onBeforeUnmount, onMounted } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport axios from \"axios\";\nimport { useGlobalStore } from \"./stores/store\";\n\n\nlet router = useRouter();\nlet globalStore = useGlobalStore();\n\n// 检查Wake Lock功能的支持情况\nconst isWakeLockSupported = \"wakeLock\" in navigator;\n\nlet wakeLock: WakeLockSentinel | null = null;\n\n/**\n * 屏幕保持唤醒状态\n */\nconst requestScreenWakeLock = async () => {\n  if (!isWakeLockSupported) return;\n  \n  try {\n    wakeLock = await navigator.wakeLock.request(\"screen\");\n    // console.log(\"屏幕保持唤醒状态成功\");\n  } catch (error) {\n    // 忽略 NotAllowedError，这是正常的行为\n    if ((error as Error).name !== 'NotAllowedError') {\n      console.error(`WakeLock 错误：${(error as Error).message}`);\n    }\n  }\n};\n\n/**\n * 处理页面可见性变化\n */\nconst handleVisibilityChange = async () => {\n  if (document.visibilityState === 'visible') {\n    // 页面变为可见时重新请求 wake lock\n    await requestScreenWakeLock();\n  }\n};\n\nonMounted(() => {\n  // 添加页面可见性变化监听\n  document.addEventListener('visibilitychange', handleVisibilityChange);\n  \n  // 初始请求 wake lock\n  if (document.visibilityState === 'visible') {\n    requestScreenWakeLock();\n  }\n});\n\n/**\n * 检查系统是否已经初始化及运行模式\n */\nonBeforeMount(async () => {\n  await axios.get<{ code: number; msg: string; data: { is_init: boolean } }>(\"/api/sys/is_init\")\n    .then((res) => {\n      if (res.data.code === 0) {\n        if (!res.data.data.is_init) {\n          // 如果系统没有进行过初始化操作,进入初始化页面\n          globalStore.isInit = false;\n          globalStore.logout();\n          localStorage.clear();\n          router.push({ \"name\": \"SysInit\" })\n          return;\n        }\n      } \n    }).catch((err) => {\n      console.log(\"获取系统初始化状态异常:\" + err);\n    });\n});\n\nonBeforeUnmount(() => {\n  // 移除页面可见性变化监听\n  document.removeEventListener('visibilitychange', handleVisibilityChange);\n  \n  // 释放 wake lock\n  if (wakeLock) {\n    wakeLock.release().then(() => {\n      wakeLock = null;\n    }).catch((error) => {\n      console.error(`释放 WakeLock 错误：${error}`);\n    });\n  }\n});\n\n</script>\n\n<style>\n.el-header,\n.el-footer {\n  background-color: #2b75d6;\n}\n\n</style>"
  },
  {
    "path": "webssh/src/components/Account.vue",
    "content": "<template>\n  <el-tab-pane label=\"Web账号配置\" name=\"accoutManage\">\n    <!-- ========================================= -->\n    <el-card>\n      <el-row>\n        <el-table :data=\"data.user_list\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column fixed sortable prop=\"name\" label=\"用户名\"></el-table-column>\n          <el-table-column sortable prop=\"desc_info\" label=\"备注信息\" width=\"200\"></el-table-column>\n          <el-table-column sortable prop=\"is_admin\" label=\"是否管理员\"></el-table-column>\n          <el-table-column sortable prop=\"is_enable\" label=\"是否启用\"></el-table-column>\n          <!-- <el-table-column sortable prop=\"created_at\" label=\"创建时间\" width=\"180\"></el-table-column> -->\n          <el-table-column sortable prop=\"expiry_at\" label=\"过期时间\" width=\"180\"></el-table-column>\n          <el-table-column fixed=\"right\" label=\"操作\">\n            <template #header>\n              <el-button type=\"primary\" @click=\"addUser\">新增</el-button>\n              <el-button type=\"primary\" @click=\"getUserList(0, 10000)\">刷新</el-button>\n            </template>\n            <template #default=\"scope\">\n              <el-button type=\"success\" @click=\"editUser(scope.row)\">编辑</el-button>\n              <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                title=\"确定删除吗\" @confirm=\"deleteUserById(scope.row.id)\">\n                <template #reference>\n                  <el-button type=\"danger\">删除</el-button>\n                </template>\n              </el-popconfirm>\n\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-row>\n    </el-card>\n    <!-- ========================================= -->\n    <el-dialog title=\"用户信息\" v-model=\"data.user_dialog_visible\" width=\"60%\">\n      <el-form label-width=\"80px\">\n\n        <el-form-item label=\"备注名\" prop=\"desc_info\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"user.desc_info\" show-word-limit\n            placeholder=\"请输入备注\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"用户名\" prop=\"name\">\n          <el-input v-model.trim=\"user.name\" minlength=\"1\" maxlength=\"30\" show-word-limit\n            placeholder=\"请输入用户名\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"密码\" prop=\"pwd\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"user.pwd\" type=\"passrowd\" show-password show-word-limit\n            placeholder=\"用户密码\"></el-input>\n        </el-form-item>\n\n        <el-form-item label=\"管理员\" prop=\"is_admin\">\n          <el-radio-group v-model=\"user.is_admin\" id=\"is_admin\">\n            <el-radio value=\"Y\">是</el-radio>\n            <el-radio value=\"N\">否</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item label=\"启用\" prop=\"is_enable\">\n          <el-radio-group v-model=\"user.is_enable\" id=\"is_enable\">\n            <el-radio value=\"Y\">是</el-radio>\n            <el-radio value=\"N\">否</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item label=\"过期时间\">\n\n          <el-date-picker v-model=\"user.expiry_at\" type=\"datetime\" placeholder=\"选择账号过期时间\" />\n\n        </el-form-item>\n\n      </el-form>\n      <template #footer>\n        <span class=\"dialog-footer\">\n          <el-button @click=\"data.user_dialog_visible = false\">取消</el-button>\n          <el-button type=\"success\" @click=\"saveUser\">保存</el-button>\n        </span>\n      </template>\n    </el-dialog>\n    <!-- ========================================= -->\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, reactive } from \"vue\";\nimport { ElMessage, dayjs } from \"element-plus\";\nimport axios from \"axios\";\n\n\nenum Mode {\n  \"create\" = 0,\n  \"update\" = 1,\n}\n\n/**\n * 用户信息\n */\n\ninterface User {\n  id: number;\n  name: string;\n  pwd: string;\n  desc_info: string;\n  is_admin: \"Y\" | \"N\";\n  is_enable: \"Y\" | \"N\";\n  is_root: \"Y\" | \"N\";\n  expiry_at: Date;\n}\n\ninterface UserInfo extends User {\n  created_at?: string;\n  updated_at?: string;\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nlet data = reactive({\n  mode: Mode.create,\n  user_dialog_visible: false,\n  active_name: \"accoutManage\",\n  user_list: Array<UserInfo>(),\n  is_admin: true,\n});\n\nlet user = reactive<User>({\n  id: 0,\n  name: \"\",\n  pwd: \"\",\n  desc_info: \"\",\n  is_admin: \"N\",\n  is_enable: \"Y\",\n  is_root: \"N\",\n  expiry_at: new Date(2050, 0, 0, 0, 0, 0)\n});\n\n\n/**\n * 获取用户列表\n */\nfunction getUserList(offset: number = 0, limit: number = 10000) {\n  axios.get<ResponseData>(`/api/user?offset=${offset}&limit=${limit}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"获取用户列表错误\");\n      }\n    })\n}\n\n/**\n * 添加用户\n */\nfunction addUser() {\n  user.id = 0;\n  user.name = \"\";\n  user.pwd = \"\";\n  user.desc_info = \"\";\n  user.is_admin = \"N\";\n  user.is_enable = \"Y\";\n  user.is_root = \"N\";\n  user.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.user_dialog_visible = true;\n\n}\n\n/**\n * 编辑用户\n * @param u \n */\nfunction editUser(u: UserInfo) {\n  user.id = u.id;\n  user.name = u.name;\n  user.pwd = u.pwd;\n  user.desc_info = u.desc_info;\n  user.is_admin = u.is_admin;\n  user.is_enable = u.is_enable;\n  user.is_root = u.is_root;\n  user.expiry_at = u.expiry_at;\n  data.user_dialog_visible = true;\n}\n\n\nfunction getRequestBody(): any {\n  return {\n    id: user.id,\n    name: user.name,\n    pwd: user.pwd,\n    desc_info: user.desc_info,\n    is_admin: user.is_admin,\n    is_enable: user.is_enable,\n    is_root: user.is_root,\n    expiry_at: dayjs(user.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\"),\n  }\n}\n\n/**\n * 根据ID更新用户\n * @param userId ID\n */\nfunction updateUserById() {\n  axios.put<ResponseData>(`/api/user`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"更新用户错误,请检查输入\");\n      }\n    })\n}\n\n/**\n * 根据ID删除用户\n * @param userId ID\n */\nfunction deleteUserById(userId: number) {\n  axios.delete<ResponseData>(`/api/user/${userId}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"删除用户错误\");\n      }\n    })\n}\n\n/**\n * 创建用户\n */\nfunction createUser() {\n  axios.post<ResponseData>(`/api/user`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"创建用户错误,请检查输入\");\n      }\n    })\n}\n\nfunction saveUser() {\n  if (user.id === 0) {\n    createUser();\n  } else {\n    updateUserById()\n  }\n  user.id = 0;\n  user.name = \"\";\n  user.pwd = \"\";\n  user.desc_info = \"\";\n  user.is_admin = \"N\";\n  user.is_enable = \"Y\";\n  user.is_root = \"N\";\n  user.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.user_dialog_visible = false;\n}\n\n\nonMounted(() => {\n  getUserList();\n})\n\n\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/components/Connect.vue",
    "content": "<template>\n  <el-tab-pane label=\"连接状态\" name=\"connectInfo\">\n    <el-card>\n      <el-row>\n        <el-table :data=\"data.host_list\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column fixed prop=\"name\" label=\"名称\"></el-table-column>\n          <el-table-column fixed prop=\"address\" label=\"服务器地址\" width=\"150\"></el-table-column>\n          <el-table-column prop=\"port\" label=\"端口\" width=\"60\"></el-table-column>\n          <el-table-column prop=\"user\" label=\"用户名\"></el-table-column>\n          <el-table-column prop=\"client_ip\" label=\"客户端IP\"></el-table-column>\n          <el-table-column prop=\"session_id\" label=\"会话ID\" width=\"180\"></el-table-column>\n          <el-table-column prop=\"last_active_time\" label=\"最后活跃时间\" width=\"165\"></el-table-column>\n          <el-table-column prop=\"start_time\" label=\"连接创建时间\" width=\"165\"></el-table-column>\n          <el-table-column fixed=\"right\" label=\"操作\">\n            <template #default=\"scope\">\n              <el-button type=\"danger\" @click=\"disconnect(scope.$index, scope.row)\">断开</el-button>\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-row>\n    </el-card>\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, reactive } from \"vue\";\nimport axios from \"axios\";\n\n/**\n * 主机信息\n */\ninterface HostInfo {\n  id: number;\n  name: string;\n  address: string;\n  user: string;\n  auth_type: \"pwd\" | \"cert\";\n  cert_data: string,\n  cert_pwd: string\n  pwd: string;\n  port: number;\n  font_size: number;\n  background: string;\n  foreground: string;\n  cursor_color: string;\n  font_family: string;\n  cursor_style: \"block\" | \"underline\" | \"bar\";\n  shell: string;\n  session_id: string;\n  start_time: string;\n  last_active_time: string;\n  client_ip: string;\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nlet data = reactive({\n  host_list: Array<HostInfo>(),\n  is_admin: true,\n});\n\ninterface OnlineInfo {\n  code: number,\n  msg: string,\n  data: Array<HostInfo>\n}\n\n/**\n * 断开链接\n */\nfunction disconnect(index: number, row: HostInfo) {\n  try {\n    axios.post(`/api/ssh/disconnect?session_id=${row.session_id}`);\n  } catch (error) {\n    console.log(error)\n  }\n}\n\n/**\n * 获取在线客户端连接\n */\nfunction getOnlineClient() {\n  if (data.is_admin) {\n    let tailPart = `/api/conn_manage/online_client/?Authorization=${localStorage.getItem(\"token\")}`;\n\n    let basePath = window.location.pathname.replace(\"/app/\", \"\");\n    if (import.meta.env.VITE_ROUTE_MODE === \"WebHistory\") {\n      if (import.meta.env.VITE_WEB_BASE_DIR) {\n        basePath = `${import.meta.env.VITE_WEB_BASE_DIR}`;\n      } else {\n        basePath = \"\";\n      }\n    }\n    let sseUrl = `${basePath}${tailPart}`;\n    let source = new EventSource(sseUrl);\n    source.onmessage = function (event) {\n      let onlineInfo = JSON.parse(event.data) as OnlineInfo;\n      if (onlineInfo.code === 0) {\n        data.is_admin = true;\n        data.host_list = onlineInfo.data;\n      }\n    };\n  }\n}\n\n\nonMounted(() => {\n  getOnlineClient();\n})\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/components/LoginAudit.vue",
    "content": "<template>\n  <el-tab-pane label=\"Web登录审计\" name=\"loginAudit\">\n    <!-- ========================================= -->\n    <el-card>\n      <el-row>\n        <el-col :span=\"4\" style=\"height: 24px;\">\n          <el-form-item label=\"登录状态\">\n            <el-radio-group v-model=\"data.is_success\">\n              <el-radio value=\"N\">失败</el-radio>\n              <el-radio value=\"Y\">成功</el-radio>\n            </el-radio-group>\n          </el-form-item>\n        </el-col>\n        &nbsp;&nbsp;&nbsp;&nbsp;\n        <el-col :span=\"8\" style=\"height: 24px;\">\n          <el-form-item label=\"时间范围\">\n            <el-date-picker v-model=\"time_range\" type=\"datetimerange\" range-separator=\"To\" start-placeholder=\"起始时间\"\n              end-placeholder=\"结束时间\" />\n          </el-form-item>\n        </el-col>\n        &nbsp;&nbsp;&nbsp;&nbsp;\n        <el-col :span=\"4\" style=\"height: 24px;\">\n          <el-form-item label=\"用户名\">\n            <el-input v-model=\"data.name\" />\n          </el-form-item>\n        </el-col>\n        &nbsp;&nbsp;&nbsp;&nbsp;\n        <el-col :span=\"4\" style=\"text-align: right;height: 24px;\">\n          <el-form-item label=\"客户端IP\">\n            <el-input v-model=\"data.client_ip\" />\n          </el-form-item>\n        </el-col>\n        <el-col :span=\"2\" style=\"text-align: right;height: 24px;\">\n          <el-button type=\"primary\" @click=\"searchLoginAudit\">搜索</el-button>\n        </el-col>\n      </el-row>\n      <el-row style=\"margin-top: 20px\">\n        <el-table :data=\"data.login_audit_list\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column sortable prop=\"id\" label=\"ID\" width=\"150\"></el-table-column>\n          <el-table-column sortable prop=\"name\" label=\"用户名\"></el-table-column>\n          <el-table-column sortable prop=\"pwd\" label=\"密码\"></el-table-column>\n          <el-table-column sortable prop=\"client_ip\" label=\"客户端\"></el-table-column>\n          <el-table-column sortable prop=\"user_agent\" label=\"userAgent\"></el-table-column>\n          <el-table-column sortable prop=\"err_msg\" label=\"错误信息\"></el-table-column>\n          <el-table-column sortable prop=\"is_success\" label=\"状态\">\n            <template #default=\"scope\">\n              <div v-if=\"scope.row.is_success === 'Y'\">\n                <el-tag type=\"success\">成功</el-tag>\n              </div>\n              <div v-else>\n                <el-tag type=\"danger\">失败</el-tag>\n              </div>\n            </template>\n          </el-table-column>\n          <el-table-column sortable prop=\"occur_at\" label=\"发生时间\"></el-table-column>\n        </el-table>\n\n      </el-row>\n      <el-row style=\"margin-top: 20px\">\n        <el-pagination v-model:current-page=\"currentPage\" v-model:page-size=\"pageSize\" :page-sizes=\"[10, 20, 50, 100]\"\n          :background=\"true\" layout=\"total, sizes, prev, pager, next, jumper\" :total=\"total\"\n          @size-change=\"searchLoginAudit\" @current-change=\"searchLoginAudit\" />\n      </el-row>\n    </el-card>\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, reactive, ref } from \"vue\";\nimport { ElMessage, dayjs } from \"element-plus\";\nimport axios from \"axios\";\n\nconst currentPage = ref(1);\nconst pageSize = ref(10);\nconst total = ref(0);\n\ninterface LoginAudit {\n  id: number;\n  name: string;\n  pwd: string;\n  client_ip: string;\n  user_agent: string;\n  err_msg: string;\n  is_success: \"Y\" | \"N\";\n  occur_at: string;\n}\n\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  count: number;\n  data?: any\n}\n\n\nconst time_range = ref<[Date, Date]>([\n  new Date(2020, 1, 1, 0, 0, 0),\n  new Date(2049, 12, 31, 0, 0, 0),\n])\n\nlet data = reactive({\n  login_audit_list: Array<LoginAudit>(),\n  is_success: \"N\",\n  client_ip: \"\",\n  name: \"\"\n});\n\n\n/**\n * 获取数据\n */\nfunction searchLoginAudit() {\n\n  let body = {\n    occur_begin: dayjs(time_range.value[0]).format(\"YYYY-MM-DD HH:mm:ss\"),\n    occur_end: dayjs(time_range.value[1]).format(\"YYYY-MM-DD HH:mm:ss\"),\n    name: data.name,\n    is_success: data.is_success,\n    client_ip: data.client_ip,\n    offset: (currentPage.value * pageSize.value) - pageSize.value,\n    limit: pageSize.value,\n  };\n\n  axios.post<ResponseData>(`/api/login_audit`, body)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.login_audit_list = ret.data.data;\n        total.value = ret.data.count;\n      } else {\n        ElMessage.error(\"获取登录审计信息错误\");\n      }\n    })\n}\n\n\nonMounted(() => {\n  searchLoginAudit();\n})\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/components/NetFilter.vue",
    "content": "<template>\n  <el-tab-pane label=\"访问控制\" name=\"netFilter\">\n    <!-- ========================================= -->\n    <el-card>\n      <el-row>\n        <el-col :span=\"8\" style=\"text-align: right;height: 24px;\">\n          <el-form-item label=\"搜索:\">\n            <el-input v-model=\"searchNetFilterName\" style=\"max-width: 400px\" placeholder=\"请输入策略名称\"\n              class=\"input-with-select\">\n              <template #prepend>\n                <el-select v-model=\"searchNetFilterType\" placeholder=\"选择策略\" style=\"width: 115px\">\n                  <el-option label=\"全部\" value=\"ALL\" />\n                  <el-option label=\"允许\" value=\"Y\" />\n                  <el-option label=\"拒绝\" value=\"N\" />\n                </el-select>\n              </template>\n            </el-input>\n          </el-form-item>\n        </el-col>\n        <el-col :span=\"2\"></el-col>\n        <!-- <el-col :span=\"6\"></el-col> -->\n        <el-col :span=\"6\" style=\"height: 24px;\">\n          <el-form-item label=\"默认策略\">\n            <el-radio-group v-model=\"data.policy_conf\">\n              <el-radio value=\"N\">拒绝</el-radio>\n              <el-radio value=\"Y\">允许</el-radio>\n            </el-radio-group>\n          </el-form-item>\n        </el-col>\n        <el-col :span=\"2\" style=\"height: 24px;\">\n          <el-form-item label=\"\">\n            <el-popconfirm confirmButtonText=\"确定\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n              title=\"确定修改策略,修改后可能导致不能连接?\" @confirm=\"updatePolicyConf\">\n              <template #reference>\n                <el-button type=\"danger\">保存策略</el-button>\n              </template>\n            </el-popconfirm>\n          </el-form-item>\n        </el-col>\n      </el-row>\n      <el-row style=\"margin-top: 20px\">\n        <el-table :data=\"filterHostTable\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column fixed sortable prop=\"name\" label=\"名称\" width=\"200\"></el-table-column>\n          <el-table-column sortable prop=\"cidr\" label=\"CIDR\"></el-table-column>\n          <el-table-column sortable prop=\"net_policy\" label=\"策略\">\n            <template #default=\"scope\">\n              <div v-if=\"scope.row.net_policy === 'Y'\">\n                <el-tag type=\"success\">允许</el-tag>\n              </div>\n              <div v-else>\n                <el-tag type=\"danger\">拒绝</el-tag>\n              </div>\n            </template>\n          </el-table-column>\n          <el-table-column sortable prop=\"policy_no\" label=\"策略编号\" width=\"120\"></el-table-column>\n          <el-table-column sortable prop=\"expiry_at\" label=\"过期时间\" width=\"180\"></el-table-column>\n          <el-table-column fixed=\"right\" label=\"操作\">\n            <template #header>\n              <el-button type=\"primary\" @click=\"addNetFilter\">新增</el-button>\n              <el-button type=\"primary\" @click=\"getNetFilterList(0, 10000)\">刷新</el-button>\n            </template>\n            <template #default=\"scope\">\n              <el-button type=\"success\" @click=\"editNetFilter(scope.row)\">编辑</el-button>\n              <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                title=\"确定删除吗\" @confirm=\"deleteNetFilterById(scope.row.id)\">\n                <template #reference>\n                  <el-button type=\"danger\">删除</el-button>\n                </template>\n              </el-popconfirm>\n\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-row>\n    </el-card>\n    <!-- ========================================= -->\n    <el-dialog title=\"策略配置\" v-model=\"data.net_filter_dialog_visible\" width=\"60%\">\n      <el-form label-width=\"80px\">\n        <el-form-item label=\"名称\" prop=\"name\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"netFilter.name\" show-word-limit\n            placeholder=\"请输入名称\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"CIDR\" prop=\"cidr\">\n          <el-input v-model.trim=\"netFilter.cidr\" minlength=\"1\" maxlength=\"90\" show-word-limit\n            placeholder=\"请输入CIDR,举例:192.168.1.0/24 或 fe80::acbc:1234:5678::/64\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"策略\">\n          <el-radio-group v-model=\"netFilter.net_policy\">\n            <el-radio value=\"Y\">允许</el-radio>\n            <el-radio value=\"N\">拒绝</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item label=\"策略编号\">\n          <el-input-number v-model=\"netFilter.policy_no\" :min=\"1\" :max=\"65535\" />\n        </el-form-item>\n        <el-form-item label=\"过期时间\">\n          <el-date-picker v-model=\"netFilter.expiry_at\" type=\"datetime\" placeholder=\"选择策略过期时间\" />\n        </el-form-item>\n      </el-form>\n      <template #footer>\n        <span class=\"dialog-footer\">\n          <el-button @click=\"data.net_filter_dialog_visible = false\">取消</el-button>\n          <el-button type=\"success\" @click=\"saveNetFilter\">保存</el-button>\n        </span>\n      </template>\n    </el-dialog>\n    <!-- ========================================= -->\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onMounted, reactive, ref } from \"vue\";\nimport { ElMessage, dayjs } from \"element-plus\";\nimport axios from \"axios\";\n\n\nenum Mode {\n  \"create\" = 0,\n  \"update\" = 1,\n}\n\n/**\n * 网络策略\n */\n\ninterface NetFilter {\n  id: number;\n  name: string;\n  cidr: string;\n  net_policy: \"Y\" | \"N\";\n  policy_no: number;\n  expiry_at: Date;\n}\n\ninterface NetFilterInfo extends NetFilter {\n  created_at?: string;\n  updated_at?: string;\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nlet data = reactive({\n  mode: Mode.create,\n  net_filter_dialog_visible: false,\n  net_filter_list: Array<NetFilter>(),\n  policy_conf: \"N\",\n});\n\nlet netFilter = reactive<NetFilter>({\n  id: 0,\n  name: \"\",\n  cidr: \"\",\n  net_policy: \"N\",\n  policy_no: 32768,\n  expiry_at: new Date(2050, 0, 0, 0, 0, 0)\n});\n\n/**\n * 搜索\n */\nconst searchNetFilterName = ref(\"\")\nconst searchNetFilterType = ref(\"ALL\")\nconst filterHostTable = computed(() =>\n  data.net_filter_list.filter(\n    (i) => {\n      if (searchNetFilterType.value === \"ALL\") {\n        return !searchNetFilterName.value || i.name.toLowerCase().includes(searchNetFilterName.value.toLowerCase());\n      }\n      return i.net_policy === searchNetFilterType.value && i.name.toLowerCase().includes(searchNetFilterName.value.toLowerCase());\n    }\n  )\n)\n\n/**\n * 获取列表\n */\nfunction getNetFilterList(offset: number = 0, limit: number = 10000) {\n  axios.get<ResponseData>(`/api/net_filter?offset=${offset}&limit=${limit}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.net_filter_list = ret.data.data;\n      } else {\n        ElMessage.error(\"获取策略列表错误\");\n      }\n    })\n}\n\n/**\n * 添加策略\n */\nfunction addNetFilter() {\n  netFilter.id = 0;\n  netFilter.name = \"\";\n  netFilter.cidr = \"\";\n  netFilter.net_policy = \"Y\";\n  netFilter.policy_no = 32768;\n  netFilter.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.net_filter_dialog_visible = true;\n\n}\n\n/**\n * 编辑策略\n * @param n \n */\nfunction editNetFilter(n: NetFilter) {\n  netFilter.id = n.id;\n  netFilter.name = n.name;\n  netFilter.cidr = n.cidr;\n  netFilter.net_policy = n.net_policy;\n  netFilter.policy_no = n.policy_no;\n  netFilter.expiry_at = n.expiry_at;\n  data.net_filter_dialog_visible = true;\n}\n\n/**\n * 获取请求体\n */\nfunction getRequestBody(): any {\n  return {\n    id: netFilter.id,\n    name: netFilter.name,\n    cidr: netFilter.cidr,\n    net_policy: netFilter.net_policy,\n    policy_no: netFilter.policy_no,\n    expiry_at: dayjs(netFilter.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\"),\n  }\n}\n\n/**\n * 根据ID更新策略\n */\nfunction updateNetFilterById() {\n  axios.put<ResponseData>(`/api/net_filter`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.net_filter_list = ret.data.data;\n      } else {\n        ElMessage.error(\"更新策略错误,请检查输入\");\n      }\n    })\n}\n\n/**\n * 根据ID删除策略\n */\nfunction deleteNetFilterById(id: number) {\n  axios.delete<ResponseData>(`/api/net_filter/${id}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.net_filter_list = ret.data.data;\n      } else {\n        ElMessage.error(\"删除策略错误\");\n      }\n    })\n}\n\n/**\n * 创建策略\n */\nfunction createNetFilter() {\n  axios.post<ResponseData>(`/api/net_filter`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.net_filter_list = ret.data.data;\n      } else {\n        ElMessage.error(\"创建策略错误,请检查输入\");\n      }\n    })\n}\n\n/**\n * 保存配置\n */\nfunction saveNetFilter() {\n  if (netFilter.id === 0) {\n    createNetFilter();\n  } else {\n    updateNetFilterById();\n  }\n  netFilter.id = 0;\n  netFilter.name = \"\";\n  netFilter.cidr = \"\";\n  netFilter.net_policy = \"Y\";\n  netFilter.policy_no = 32768;\n  netFilter.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.net_filter_dialog_visible = false;\n}\n\n/**\n * 获取策略配置\n */\nfunction getPolicyConf() {\n  axios.get<ResponseData>(`/api/policy_conf/1`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.policy_conf = ret.data.data.net_policy;\n      } else {\n        ElMessage.error(\"获取策略配置错误\");\n      }\n    })\n}\n\n/**\n * 更新策略\n */\nfunction updatePolicyConf() {\n  axios.put<ResponseData>(`/api/policy_conf`, { id: 1, net_policy: data.policy_conf })\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.policy_conf = ret.data.data.net_policy;\n        ElMessage.success(\"更新策略成功\");\n      } else {\n        ElMessage.error(\"更新策略失败\");\n      }\n    })\n}\n\nonMounted(() => {\n  getPolicyConf();\n  getNetFilterList();\n});\n\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/components/SshdCert.vue",
    "content": "<template>\n  <el-tab-pane label=\"SSHD证书管理\" name=\"sshdCert\">\n    <!-- ========================================= -->\n    <el-card>\n      <el-row>\n        <el-table :data=\"data.cert_list\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column fixed sortable prop=\"name\" label=\"标题\"></el-table-column>\n          <el-table-column sortable prop=\"desc_info\" label=\"备注\" width=\"200\"></el-table-column>\n          <el-table-column sortable prop=\"is_enable\" label=\"是否启用\"></el-table-column>\n          <el-table-column sortable prop=\"expiry_at\" label=\"过期时间\" width=\"180\"></el-table-column>\n          <el-table-column fixed=\"right\" label=\"操作\">\n            <template #header>\n              <el-button type=\"primary\" @click=\"addCert\">新增</el-button>\n              <el-button type=\"primary\" @click=\"getCertList(0, 10000)\">刷新</el-button>\n            </template>\n            <template #default=\"scope\">\n              <el-button type=\"success\" @click=\"editCert(scope.row)\">编辑</el-button>\n              <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                title=\"确定删除吗\" @confirm=\"deleteCertById(scope.row.id)\">\n                <template #reference>\n                  <el-button type=\"danger\">删除</el-button>\n                </template>\n              </el-popconfirm>\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-row>\n    </el-card>\n    <!-- ========================================= -->\n    <el-dialog title=\"SSHD证书信息\" v-model=\"data.cert_dialog_visible\" width=\"80%\">\n      <el-form label-width=\"80px\">\n        <el-form-item label=\"备注\" prop=\"desc_info\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"cert.desc_info\" show-word-limit\n            placeholder=\"请输入备注\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"标题\" prop=\"name\">\n          <el-input v-model.trim=\"cert.name\" minlength=\"1\" maxlength=\"30\" show-word-limit\n            placeholder=\"请输入标题\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"公钥\" prop=\"pub_key\">\n          <el-input v-model.trim=\"cert.pub_key\" type=\"textarea\" :row=\"3\" minlength=\"16\"\n            placeholder=\"支持以 'ssh-rsa', 'ssh-ed25519' 开头\" />\n        </el-form-item>\n        <el-form-item label=\"启用\" prop=\"is_enable\">\n          <el-radio-group v-model=\"cert.is_enable\" id=\"is_enable\">\n            <el-radio value=\"Y\">是</el-radio>\n            <el-radio value=\"N\">否</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item label=\"过期时间\">\n          <el-date-picker v-model=\"cert.expiry_at\" type=\"datetime\" placeholder=\"选择证书过期时间\" />\n        </el-form-item>\n      </el-form>\n      <template #footer>\n        <span class=\"dialog-footer\">\n          <el-button @click=\"data.cert_dialog_visible = false\">取消</el-button>\n          <el-button type=\"success\" @click=\"saveCert\">保存</el-button>\n        </span>\n      </template>\n    </el-dialog>\n    <!-- ========================================= -->\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, reactive } from \"vue\";\nimport { ElMessage, dayjs } from \"element-plus\";\nimport axios from \"axios\";\n\n\nenum Mode {\n  \"create\" = 0,\n  \"update\" = 1,\n}\n\n/**\n * 证书信息\n */\n\ninterface Cert {\n  id: number;\n  name: string;\n  pub_key: string;\n  desc_info: string;\n  is_enable: \"Y\" | \"N\";\n  expiry_at: Date;\n}\n\ninterface CertInfo extends Cert {\n  created_at?: string;\n  updated_at?: string;\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nlet data = reactive({\n  mode: Mode.create,\n  cert_dialog_visible: false,\n  active_name: \"sshdCert\",\n  cert_list: Array<CertInfo>(),\n  is_admin: true,\n});\n\nlet cert = reactive<Cert>({\n  id: 0,\n  name: \"\",\n  pub_key: \"\",\n  desc_info: \"\",\n  is_enable: \"Y\",\n  expiry_at: new Date(2050, 0, 0, 0, 0, 0)\n});\n\n\n/**\n * 获取sshd证书列表\n */\nfunction getCertList(offset: number = 0, limit: number = 10000) {\n  axios.get<ResponseData>(`/api/sshd_cert?offset=${offset}&limit=${limit}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.cert_list = ret.data.data;\n      } else {\n        ElMessage.error(\"获取sshd证书列表错误\");\n      }\n    })\n}\n\n/**\n * 添加sshd证书\n */\nfunction addCert() {\n  cert.id = 0;\n  cert.name = \"\";\n  cert.pub_key = \"\";\n  cert.desc_info = \"\";\n  cert.is_enable = \"Y\";\n  cert.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.cert_dialog_visible = true;\n\n}\n\n/**\n * 编辑sshd证书\n * @param u \n */\nfunction editCert(u: CertInfo) {\n  cert.id = u.id;\n  cert.name = u.name;\n  cert.pub_key = u.pub_key;\n  cert.desc_info = u.desc_info;\n  cert.is_enable = u.is_enable;\n  cert.expiry_at = u.expiry_at;\n  data.cert_dialog_visible = true;\n}\n\n\nfunction getRequestBody(): any {\n  return {\n    id: cert.id,\n    name: cert.name,\n    pub_key: cert.pub_key,\n    desc_info: cert.desc_info,\n    is_enable: cert.is_enable,\n    expiry_at: dayjs(cert.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\"),\n  }\n}\n\n/**\n * 根据ID更新sshd证书\n * @param certId ID\n */\nfunction updateCertById() {\n  axios.put<ResponseData>(`/api/sshd_cert`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.cert_list = ret.data.data;\n      } else {\n        ElMessage.error(\"更新sshd证书错误,请检查输入\");\n      }\n    })\n}\n\n/**\n * 根据ID删除sshd证书\n * @param certId ID\n */\nfunction deleteCertById(certId: number) {\n  axios.delete<ResponseData>(`/api/sshd_cert/${certId}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.cert_list = ret.data.data;\n      } else {\n        ElMessage.error(\"删除sshd证书错误\");\n      }\n    })\n}\n\n/**\n * 创建sshd证书\n */\nfunction createCert() {\n  axios.post<ResponseData>(`/api/sshd_cert`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.cert_list = ret.data.data;\n      } else {\n        ElMessage.error(\"创建sshd证书错误,请检查输入\");\n      }\n    })\n}\n\nfunction saveCert() {\n  if (cert.id === 0) {\n    createCert();\n  } else {\n    updateCertById()\n  }\n  cert.id = 0;\n  cert.name = \"\";\n  cert.pub_key = \"\";\n  cert.desc_info = \"\";\n  cert.is_enable = \"Y\";\n  cert.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.cert_dialog_visible = false;\n}\n\n\nonMounted(() => {\n  getCertList();\n})\n\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/components/SshdUser.vue",
    "content": "<template>\n  <el-tab-pane label=\"SSHD账号管理\" name=\"sshdUser\">\n    <!-- ========================================= -->\n    <el-card>\n      <el-row>\n        <el-table :data=\"data.user_list\" style=\"width: 100%\" :show-overflow-tooltip=\"true\">\n          <el-table-column fixed sortable prop=\"name\" label=\"用户名\"></el-table-column>\n          <el-table-column sortable prop=\"desc_info\" label=\"备注信息\" width=\"200\"></el-table-column>\n          <el-table-column sortable prop=\"is_enable\" label=\"是否启用\"></el-table-column>\n          <el-table-column sortable prop=\"expiry_at\" label=\"过期时间\" width=\"180\"></el-table-column>\n          <el-table-column fixed=\"right\" label=\"操作\">\n            <template #header>\n              <el-button type=\"primary\" @click=\"addUser\">新增</el-button>\n              <el-button type=\"primary\" @click=\"getUserList(0, 10000)\">刷新</el-button>\n            </template>\n            <template #default=\"scope\">\n              <el-button type=\"success\" @click=\"editUser(scope.row)\">编辑</el-button>\n              <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                title=\"确定删除吗\" @confirm=\"deleteUserById(scope.row.id)\">\n                <template #reference>\n                  <el-button type=\"danger\">删除</el-button>\n                </template>\n              </el-popconfirm>\n\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-row>\n    </el-card>\n    <!-- ========================================= -->\n    <el-dialog title=\"SSHD账号信息\" v-model=\"data.user_dialog_visible\" width=\"60%\">\n      <el-form label-width=\"80px\">\n        <el-form-item label=\"备注名\" prop=\"desc_info\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"user.desc_info\" show-word-limit\n            placeholder=\"请输入备注\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"用户名\" prop=\"name\">\n          <el-input v-model.trim=\"user.name\" minlength=\"1\" maxlength=\"30\" show-word-limit\n            placeholder=\"请输入用户名\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"密码\" prop=\"pwd\">\n          <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"user.pwd\" type=\"passrowd\" show-password show-word-limit\n            placeholder=\"用户密码\"></el-input>\n        </el-form-item>\n        <el-form-item label=\"启用\" prop=\"is_enable\">\n          <el-radio-group v-model=\"user.is_enable\" id=\"is_enable\">\n            <el-radio value=\"Y\">是</el-radio>\n            <el-radio value=\"N\">否</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item label=\"过期时间\">\n          <el-date-picker v-model=\"user.expiry_at\" type=\"datetime\" placeholder=\"选择账号过期时间\" />\n        </el-form-item>\n      </el-form>\n      <template #footer>\n        <span class=\"dialog-footer\">\n          <el-button @click=\"data.user_dialog_visible = false\">取消</el-button>\n          <el-button type=\"success\" @click=\"saveUser\">保存</el-button>\n        </span>\n      </template>\n    </el-dialog>\n    <!-- ========================================= -->\n  </el-tab-pane>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, reactive } from \"vue\";\nimport { ElMessage, dayjs } from \"element-plus\";\nimport axios from \"axios\";\n\n\nenum Mode {\n  \"create\" = 0,\n  \"update\" = 1,\n}\n\n/**\n * 用户信息\n */\n\ninterface User {\n  id: number;\n  name: string;\n  pwd: string;\n  desc_info: string;\n  is_enable: \"Y\" | \"N\";\n  expiry_at: Date;\n}\n\ninterface UserInfo extends User {\n  created_at?: string;\n  updated_at?: string;\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nlet data = reactive({\n  mode: Mode.create,\n  user_dialog_visible: false,\n  active_name: \"sshdUser\",\n  user_list: Array<UserInfo>(),\n  is_admin: true,\n});\n\nlet user = reactive<User>({\n  id: 0,\n  name: \"\",\n  pwd: \"\",\n  desc_info: \"\",\n  is_enable: \"Y\",\n  expiry_at: new Date(2050, 0, 0, 0, 0, 0)\n});\n\n\n/**\n * 获取sshd用户列表\n */\nfunction getUserList(offset: number = 0, limit: number = 10000) {\n  axios.get<ResponseData>(`/api/sshd_user?offset=${offset}&limit=${limit}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"获取sshd用户列表错误\");\n      }\n    })\n}\n\n/**\n * 添加用户\n */\nfunction addUser() {\n  user.id = 0;\n  user.name = \"\";\n  user.pwd = \"\";\n  user.desc_info = \"\";\n  user.is_enable = \"Y\";\n  user.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.user_dialog_visible = true;\n\n}\n\n/**\n * 编辑用户\n * @param u \n */\nfunction editUser(u: UserInfo) {\n  user.id = u.id;\n  user.name = u.name;\n  user.pwd = u.pwd;\n  user.desc_info = u.desc_info;\n  user.is_enable = u.is_enable;\n  user.expiry_at = u.expiry_at;\n  data.user_dialog_visible = true;\n}\n\n\nfunction getRequestBody(): any {\n  return {\n    id: user.id,\n    name: user.name,\n    pwd: user.pwd,\n    desc_info: user.desc_info,\n    is_enable: user.is_enable,\n    expiry_at: dayjs(user.expiry_at).format(\"YYYY-MM-DD HH:mm:ss\"),\n  }\n}\n\n/**\n * 根据ID更新用户\n * @param userId ID\n */\nfunction updateUserById() {\n  axios.put<ResponseData>(`/api/sshd_user`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"更新sshd用户错误,请检查输入\");\n      }\n    })\n}\n\n/**\n * 根据ID删除用户\n * @param userId ID\n */\nfunction deleteUserById(userId: number) {\n  axios.delete<ResponseData>(`/api/sshd_user/${userId}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"删除sshd用户错误\");\n      }\n    })\n}\n\n/**\n * 创建用户\n */\nfunction createUser() {\n  axios.post<ResponseData>(`/api/sshd_user`, getRequestBody())\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.user_list = ret.data.data;\n      } else {\n        ElMessage.error(\"创建sshd用户错误,请检查输入\");\n      }\n    })\n}\n\nfunction saveUser() {\n  if (user.id === 0) {\n    createUser();\n  } else {\n    updateUserById()\n  }\n  user.id = 0;\n  user.name = \"\";\n  user.pwd = \"\";\n  user.desc_info = \"\";\n  user.is_enable = \"Y\";\n  user.expiry_at = new Date(2050, 0, 0, 0, 0, 0);\n  data.user_dialog_visible = false;\n}\n\n\nonMounted(() => {\n  getUserList();\n})\n\n\n</script>\n\n\n<style scoped></style>"
  },
  {
    "path": "webssh/src/main.ts",
    "content": "import { createApp } from \"vue\";\r\nimport { createPinia } from \"pinia\";\r\n\r\nimport App from \"./App.vue\";\r\nimport router from \"./router\";\r\nimport ElementPlus from \"element-plus\";\r\nimport \"element-plus/dist/index.css\";\r\nimport axios from \"axios\";\r\nimport piniaPluginPersistedstate from \"pinia-plugin-persistedstate\";\r\n\r\nimport { useGlobalStore } from \"./stores/store\";\r\n\r\nconst app = createApp(App);\r\n\r\nconst pinia = createPinia();\r\npinia.use(piniaPluginPersistedstate);\r\n\r\napp.use(pinia);\r\napp.use(ElementPlus, { zIndex: 2000 });\r\n// app.use(ElementPlus, { size: \"small\", zIndex: 2000 });\r\napp.use(router);\r\n\r\nlet globalStore = useGlobalStore();\r\n\r\n// 导航守卫 配置\r\n// 使用 router.beforeEach 注册一个全局前置守卫，判断用户是否登陆\r\nrouter.beforeEach((to, from) => {\r\n    if ((!globalStore.isInit) && to.name === \"SysInit\") {\r\n        return true;\r\n    }\r\n\r\n    if (to.name === \"Login\") {\r\n        return true;\r\n    }\r\n\r\n    var local_auth = localStorage.getItem(\"auth\");\r\n    if (local_auth === \"yes\" && globalStore.isLogin) {\r\n        return true\r\n    }\r\n\r\n    router.push({ \"name\": \"Login\" });\r\n    return false;\r\n});\r\n\r\n\r\n//////////////\r\n//   拦截器\r\n//////////////\r\n\r\naxios.interceptors.request.use(\r\n    (req) => {\r\n        let basePath = window.location.pathname.replace(\"/app/\", \"\");\r\n\r\n        if (import.meta.env.VITE_ROUTE_MODE === \"WebHistory\") {\r\n            if (import.meta.env.VITE_WEB_BASE_DIR) {\r\n                basePath = `${import.meta.env.VITE_WEB_BASE_DIR}`;\r\n            } else {\r\n                basePath = \"\";\r\n            }\r\n        }\r\n\r\n        req.url = `${basePath}${req.url}`;\r\n        // 在发送请求之前加token\r\n        req.headers.Time = String(new Date().getTime());\r\n        req.headers.Authorization = localStorage.getItem(\"token\");\r\n        return req;\r\n    },\r\n    (err) => {\r\n        return Promise.reject(err);\r\n    }\r\n);\r\n\r\n// 添加响应拦截器\r\naxios.interceptors.response.use(\r\n    (res) => {\r\n        let newToken = res.headers[\"newtoken\"];\r\n        if (newToken) {\r\n            // 若有newtoken则刷新token\r\n            localStorage.setItem(\"token\", newToken);\r\n        }\r\n        return res;\r\n    },\r\n    (err) => {\r\n        if (err.response && (err.response.status === 401)) {\r\n            router.replace({ \"name\": \"Login\" });\r\n        }\r\n        return Promise.reject(err);\r\n    }\r\n)\r\n\r\napp.mount(\"#app\");\r\n"
  },
  {
    "path": "webssh/src/router/index.ts",
    "content": "import { createRouter, createWebHistory, createWebHashHistory } from \"vue-router\"\r\nimport Home from \"../views/Home.vue\"\r\nimport Login from \"../views/Login.vue\"\r\n\r\nlet basePath = \"\";\r\nlet history = createWebHashHistory(basePath);\r\nif (import.meta.env.VITE_ROUTE_MODE === \"WebHistory\") {\r\n  if (import.meta.env.VITE_WEB_BASE_DIR) {\r\n    basePath = `${import.meta.env.VITE_WEB_BASE_DIR}`;\r\n  }\r\n  history = createWebHistory(basePath);\r\n}\r\n\r\nconst router = createRouter({\r\n  history: history,\r\n  routes: [\r\n    {\r\n      path: \"/\",\r\n      name: \"Home\",\r\n      component: Home\r\n    },\r\n    {\r\n      path: \"/app\",\r\n      name: \"Home\",\r\n      component: Home\r\n    },\r\n    {\r\n      path: \"/login\",\r\n      name: \"Login\",\r\n      component: Login\r\n    },\r\n    {\r\n      path: \"/manage\",\r\n      name: \"Manage\",\r\n      component: () => import(/* webpackChunkName: \"manage\" */ '../views/Manage.vue')\r\n    },\r\n\r\n    {\r\n      path: \"/sys-init\",\r\n      name: \"SysInit\",\r\n      component: () => import(\"../views/SysInit.vue\")\r\n    },\r\n    {\r\n      path: \"/about\",\r\n      name: \"About\",\r\n      component: () => import(\"../views/About.vue\")\r\n    },\r\n    {\r\n      path: \"/:all(.*)\",\r\n      name: \"NotFound\",\r\n      component: () => import(\"../views/NotFound.vue\")\r\n    },\r\n\r\n  ]\r\n})\r\n\r\nexport default router;\r\n"
  },
  {
    "path": "webssh/src/stores/store.ts",
    "content": "import { ref } from \"vue\"\nimport { defineStore } from \"pinia\"\n\n// 系统初始化状态存储\nexport const useGlobalStore = defineStore(\n  \"global\",\n  () => {\n    const isInit = ref<boolean>(false);\n    const isLogin = ref<boolean>(false);\n    const isAdmin = ref<string>(\"N\");\n    const isRoot = ref<string>(\"N\");\n    const userName = ref<string>(\"\");\n    const userDesc = ref<string>(\"\");\n    const userExpiryAt = ref<string>(\"\");\n\n\n    function reset() {\n      isInit.value = false;\n      isLogin.value = false;\n      isAdmin.value = \"N\";\n      isRoot.value = \"N\";\n      userName.value = \"\";\n      userDesc.value = \"\";\n      userExpiryAt.value = \"\";\n    }\n\n    function login(\n      is_admin: string,\n      is_root: string,\n      user_name: string,\n      user_desc: string,\n      user_expiry_at: string) {\n      isLogin.value = true;\n      isAdmin.value = is_admin;\n      isRoot.value = is_root;\n      userName.value = user_name;\n      userDesc.value = user_desc;\n      userExpiryAt.value = user_expiry_at;\n    }\n\n    function logout() {\n      isLogin.value = false;\n      isAdmin.value = \"N\";\n      isRoot.value = \"N\";\n      userName.value = \"\";\n      userDesc.value = \"\";\n      userExpiryAt.value = \"\";\n      localStorage.clear();\n    }\n\n    return { isInit, isLogin, isAdmin, isRoot, userName, userDesc,userExpiryAt, login, logout, reset }\n  },\n  // 持久化到浏览器\n  {\n    persist: true,\n  }\n)\n"
  },
  {
    "path": "webssh/src/views/About.vue",
    "content": "<template>\n  <div style=\"position: absolute; width: 100%; height: 100%; text-align: center\">\n    <el-result icon=\"error\" title=\"about\" subTitle=\"兄弟,这是我的信息\">\n      <template #extra>\n        <h1>GoWebSSH</h1>\n        <br />\n        <br />\n        <el-link type=\"primary\" href=\"https://github.com/o8oo8o/\" target=\"_blank\">GitHub</el-link>\n      </template>\n    </el-result>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\n\n</script>\n"
  },
  {
    "path": "webssh/src/views/Empty.vue",
    "content": "<template>\r\n  <div class=\"container\">\r\n    <div class=\"github-links\">\r\n      <el-link type=\"primary\" href=\"https://github.com/o8oo8o/WebSSH\" target=\"_blank\">\r\n        <div class=\"github-link\">\r\n          <i class=\"github-icon\">\r\n            <svg viewBox=\"0 0 16 16\" width=\"64\" height=\"64\">\r\n              <path fill=\"currentColor\"\r\n                d=\"M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z\" />\r\n            </svg>\r\n          </i>\r\n          <span class=\"github-text\">GitHub</span>\r\n        </div>\r\n      </el-link>\r\n    </div>\r\n    <div class=\"text3d-container\">\r\n      <div class=\"text3d\">\r\n        <span>W</span>\r\n        <span>e</span>\r\n        <span>b</span>\r\n        <span>&nbsp;</span>\r\n        <span>S</span>\r\n        <span>S</span>\r\n        <span>H</span>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script setup lang=\"ts\">\r\n</script>\r\n\r\n<style scoped>\r\n.container {\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: center;\r\n  align-items: center;\r\n  min-height: calc(100vh - 100px);\r\n  width: 100%;\r\n  perspective: 1000px;\r\n  position: relative;\r\n  gap: 100px;\r\n}\r\n\r\n.github-links {\r\n  display: flex;\r\n  justify-content: center;\r\n  align-items: center;\r\n  padding: 20px;\r\n  z-index: 2;\r\n  position: relative;\r\n  margin-top: 50px;\r\n}\r\n\r\n.github-link {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 12px;\r\n  padding: 12px 24px;\r\n  border-radius: 8px;\r\n  transition: all 0.3s ease;\r\n  font-size: 18px;\r\n  background-color: rgba(64, 158, 255, 0.05);\r\n}\r\n\r\n.github-link:hover {\r\n  background-color: rgba(64, 158, 255, 0.15);\r\n  transform: translateY(-2px);\r\n}\r\n\r\n.github-icon {\r\n  display: flex;\r\n  align-items: center;\r\n  color: #409EFF;\r\n}\r\n\r\n.github-text {\r\n  font-weight: 500;\r\n  letter-spacing: 0.5px;\r\n}\r\n\r\n/* 3D 文字效果 */\r\n.text3d-container {\r\n  position: relative;\r\n  z-index: 1;\r\n  margin-top: 20px;\r\n  text-align: center;\r\n}\r\n\r\n.text3d {\r\n  font-size: 5em;\r\n  font-weight: bold;\r\n  font-family: Arial, sans-serif;\r\n  color: #409EFF;\r\n  display: flex;\r\n  justify-content: center;\r\n}\r\n\r\n.text3d span {\r\n  display: inline-block;\r\n  text-shadow: \r\n    0 1px 0 #ccc,\r\n    0 2px 0 #c9c9c9,\r\n    0 3px 0 #bbb,\r\n    0 4px 0 #b9b9b9,\r\n    0 5px 0 #aaa,\r\n    0 6px 1px rgba(0,0,0,.1),\r\n    0 0 5px rgba(0,0,0,.1),\r\n    0 1px 3px rgba(0,0,0,.3),\r\n    0 3px 5px rgba(0,0,0,.2),\r\n    0 5px 10px rgba(0,0,0,.25),\r\n    0 10px 10px rgba(0,0,0,.2),\r\n    0 20px 20px rgba(0,0,0,.15);\r\n  animation: popUp 2s ease-in-out infinite;\r\n}\r\n\r\n/* 为每个字母设置不同的动画延迟 */\r\n.text3d span:nth-child(1) { animation-delay: 0s; }\r\n.text3d span:nth-child(2) { animation-delay: 0.2s; }\r\n.text3d span:nth-child(3) { animation-delay: 0.4s; }\r\n.text3d span:nth-child(4) { animation-delay: 0.6s; }\r\n.text3d span:nth-child(5) { animation-delay: 0.8s; }\r\n.text3d span:nth-child(6) { animation-delay: 1s; }\r\n\r\n@keyframes popUp {\r\n  0% {\r\n    transform: translateY(0) scale(1);\r\n  }\r\n  25% {\r\n    transform: translateY(-20px) scale(1.1);\r\n  }\r\n  50% {\r\n    transform: translateY(0) scale(1);\r\n  }\r\n  75% {\r\n    transform: translateY(10px) scale(0.9);\r\n  }\r\n  100% {\r\n    transform: translateY(0) scale(1);\r\n  }\r\n}\r\n\r\n/* 修改悬浮效果 */\r\n.text3d span:hover {\r\n  animation-play-state: paused;\r\n  color: #66b1ff;\r\n}\r\n\r\n/* 响应式设计 */\r\n@media screen and (max-width: 768px) {\r\n  .container {\r\n    gap: 50px;\r\n  }\r\n\r\n  .github-links {\r\n    margin-top: 30px;\r\n  }\r\n\r\n  .text3d {\r\n    font-size: 3em;\r\n  }\r\n}\r\n\r\n@media screen and (max-width: 480px) {\r\n  .container {\r\n    gap: 30px;\r\n  }\r\n\r\n  .github-links {\r\n    margin-top: 20px;\r\n  }\r\n\r\n  .text3d {\r\n    font-size: 2em;\r\n  }\r\n\r\n  .text3d span {\r\n    text-shadow: \r\n      0 1px 0 #ccc,\r\n      0 2px 0 #c9c9c9,\r\n      0 3px 0 #bbb,\r\n      0 4px 5px rgba(0,0,0,.15);\r\n  }\r\n}\r\n\r\n/* 暗色模式支持 */\r\n@media (prefers-color-scheme: dark) {\r\n  .github-link {\r\n    background-color: rgba(64, 158, 255, 0.1);\r\n  }\r\n  \r\n  .github-link:hover {\r\n    background-color: rgba(64, 158, 255, 0.2);\r\n  }\r\n  \r\n  .text3d {\r\n    color: #60aeff;\r\n  }\r\n}\r\n</style>"
  },
  {
    "path": "webssh/src/views/Home.vue",
    "content": "<template>\n  <el-container>\n    <el-header style=\"\n        height: 32px;\n        padding-left: 0px;\n        padding-right: 0px;\n        background-color: #409eff;\n      \">\n      <el-row>\n        <el-col :span=\"12\">\n          <el-button-group>\n            <!-- 打开已存在主机配置 -->\n            <el-popover placement=\"bottom\" trigger=\"click\" :width=\"800\">\n              <template #reference>\n                <el-button type=\"primary\" :icon=\"Menu\">打开</el-button>\n              </template>\n              <el-table :data=\"filterHostTable\" height=\"360\" :show-overflow-tooltip=\"true\">\n                <el-table-column sortable fixed=\"left\" width=\"150\" property=\"name\" label=\"名称\"></el-table-column>\n                <el-table-column sortable width=\"150\" property=\"address\" label=\"主机\"></el-table-column>\n                <el-table-column sortable width=\"100\" property=\"user\" label=\"用户\"></el-table-column>\n                <el-table-column sortable width=\"90\" property=\"port\" label=\"端口\"></el-table-column>\n                <el-table-column label=\"操作\" fixed=\"right\">\n                  <template #header>\n                    <el-input v-model=\"searchHost\" placeholder=\"名称及主机搜索\" />\n                  </template>\n                  <template #default=\"scope\">\n                    <el-button @click=\"editHost(scope.row)\">编辑</el-button>\n                    <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                      title=\"确定删除吗\" @confirm=\"deleteHost(scope.row)\">\n                      <template #reference>\n                        <el-button type=\"danger\">删除</el-button>\n                      </template>\n                    </el-popconfirm>\n                    <el-button type=\"primary\" @click=\"connectHost(scope.row)\">连接</el-button>\n                  </template>\n                </el-table-column>\n              </el-table>\n            </el-popover>\n\n            <el-button type=\"primary\" @click=\"newHost\" :icon=\"CirclePlus\">新建</el-button>\n            <!-- 执行命令及收藏 -->\n            <el-popover placement=\"bottom\" trigger=\"click\" :width=\"800\">\n              <template #reference>\n                <el-button type=\"primary\" :icon=\"Edit\">执行命令</el-button>\n              </template>\n              <el-form :model=\"cmd\">\n                <el-form-item label=\"执行命令\">\n                  <el-input v-model=\"cmd.data\" type=\"textarea\" autocomplete=\"off\" placeholder=\"命令或脚本\" />\n                </el-form-item>\n                <el-row>\n                  <el-col :span=\"10\">\n                    <el-form-item label=\"会话选择\">\n                      <el-radio-group v-model=\"cmd.node\">\n                        <el-radio value=\"current\">当前会话</el-radio>\n                        <el-radio value=\"all\">所有会话</el-radio>\n                      </el-radio-group>\n                    </el-form-item>\n                  </el-col>\n                  <el-col :span=\"14\">\n                    <el-form-item>\n                      <el-input v-model=\"cmd.name\" maxlength=\"32\" show-word-limit placeholder=\"如果需要收藏命令,请输入名称\">\n                        <template #append>\n                          <el-button-group style=\"color:blue\">\n                            <el-button @click=\"addCmdNote\">收藏</el-button>\n                            <el-button @click=\"execCmd\">执行</el-button>\n                          </el-button-group>\n                        </template>\n                      </el-input>\n                    </el-form-item>\n                  </el-col>\n                </el-row>\n              </el-form>\n            </el-popover>\n\n            <!-- 命令收藏列表 -->\n            <el-popover placement=\"bottom\" trigger=\"click\" :width=\"800\">\n              <template #reference>\n                <el-button type=\"primary\" :icon=\"Star\">命令收藏</el-button>\n              </template>\n              <el-table :data=\"filterCmdNoteTable\" height=\"260\">\n                <el-table-column sortable width=\"180\" :show-overflow-tooltip=\"true\" property=\"cmd_name\"\n                  label=\"名称\"></el-table-column>\n                <el-table-column sortable property=\"cmd_data\" label=\"命令\">\n                  <template #default=\"scope\">\n                    <el-popover effect=\"light\" trigger=\"hover\" placement=\"right\" width=\"auto\">\n                      <template #default>\n                        <div>命令详情</div>\n                        <div>\n                          <el-input v-model=\"scope.row.cmd_data\" style=\"width: 600px\"\n                            :autosize=\"{ minRows: 4, maxRows: 20 }\" type=\"textarea\" :disabled=\"true\" />\n                        </div>\n                        <div>\n                          </br>\n                          <el-button-group>\n                            <el-tooltip effect=\"dark\" content=\"执行命令,发送到所有会话\" placement=\"top-start\">\n                              <el-button type=\"warning\" @click=\"execCmdAllSession(scope.row)\">发送所有会话</el-button>\n                            </el-tooltip>\n                            <el-tooltip effect=\"dark\" content=\"执行命令,发送到当前会话\" placement=\"top-start\">\n                              <el-button type=\"primary\" @click=\"execCmdCurrentSession(scope.row)\">发送当前会话</el-button>\n                            </el-tooltip>\n                          </el-button-group>\n                        </div>\n                      </template>\n                      <template #reference>\n                        {{ scope.row.cmd_data.substring(0, 15) + \"...\" }}\n                      </template>\n                    </el-popover>\n                  </template>\n                </el-table-column>\n                <el-table-column label=\"操作\" fixed=\"right\" width=\"320\">\n                  <template #header>\n                    <el-input v-model=\"searchCmdNote\" placeholder=\"名称搜索\" />\n                  </template>\n                  <template #default=\"scope\">\n                    <el-button-group>\n                      <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                        title=\"确定删除吗\" @confirm=\"delCmdNote(scope.row.id)\">\n                        <template #reference>\n                          <el-button type=\"danger\">删除</el-button>\n                        </template>\n                      </el-popconfirm>\n                      <el-tooltip effect=\"dark\" content=\"执行命令,发送到所有会话\" placement=\"top-start\">\n                        <el-button type=\"warning\" @click=\"execCmdAllSession(scope.row)\">发送所有会话</el-button>\n                      </el-tooltip>\n                      <el-tooltip effect=\"dark\" content=\"执行命令,发送到当前会话\" placement=\"top-start\">\n                        <el-button type=\"primary\" @click=\"execCmdCurrentSession(scope.row)\">发送当前会话</el-button>\n                      </el-tooltip>\n                    </el-button-group>\n                  </template>\n                </el-table-column>\n              </el-table>\n            </el-popover>\n          </el-button-group>\n        </el-col>\n        <el-col :span=\"12\" style=\"text-align: right\">\n          <el-button-group>\n            <el-popover placement=\"top-start\" title=\"详情\" :width=\"300\" trigger=\"hover\">\n              <template #reference>\n                <el-button type=\"primary\" :icon=\"User\">{{ globalStore.userName }}</el-button>\n              </template>\n              <p><el-text type=\"info\">用户名称:&nbsp;&nbsp;{{ globalStore.userDesc }}</el-text></p>\n              <p><el-text type=\"info\">过期时间:&nbsp;&nbsp;{{ globalStore.userExpiryAt }}</el-text></p>\n            </el-popover>\n\n            <el-button type=\"primary\" :icon=\"Setting\" @click=\"data.modify_pwd_dialog_visible = true\">修改密码</el-button>\n\n            <!-- admin 角色才能管理 -->\n            <el-button v-if=\"globalStore.isAdmin === 'Y'\" type=\"danger\" :icon=\"Coin\" @click=\"toManage\">管理</el-button>\n            <!-- <el-popconfirm v-if=\"globalStore.isAdmin === 'Y'\" confirmButtonText=\"确定\" cancelButtonText=\"取消\"\n              icon=\"el-icon-info\" iconColor=\"red\" title=\"确定离开此页面吗\" @confirm=\"toManage\">\n              <template #reference>\n                <el-button type=\"danger\" :icon=\"Coin\">管理</el-button>\n              </template>\n            </el-popconfirm> -->\n\n            <el-popconfirm confirmButtonText=\"退出\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n              title=\"确定退出吗\" @confirm=\"logout\">\n              <template #reference>\n                <el-button :icon=\"CircleClose\" type=\"danger\">退出</el-button>\n              </template>\n            </el-popconfirm>\n          </el-button-group>\n        </el-col>\n      </el-row>\n    </el-header>\n\n    <div>\n      <!-- 修改密码 -->\n      <el-dialog v-model=\"data.modify_pwd_dialog_visible\" title=\"修改密码\" width=\"500\" center>\n        <el-form>\n          <el-form-item>\n            <el-input v-model=\"data.new_pwd_one\" trim type=\"password\" minlength=\"3\" maxlength=\"64\" show-word-limit\n              show-password clearable placeholder=\"输入新密码\">\n              <template #prepend>输入新密码</template>\n            </el-input>\n          </el-form-item>\n          <el-form-item>\n            <el-input v-model=\"data.new_pwd_two\" trim type=\"password\" minlength=\"3\" maxlength=\"64\" show-word-limit\n              show-password clearable placeholder=\"确认新密码\">\n              <template #prepend>确认新密码</template>\n            </el-input>\n          </el-form-item>\n        </el-form>\n        <template #footer>\n          <div class=\"dialog-footer\">\n            <el-button @click=\"data.modify_pwd_dialog_visible = false\">取消</el-button>\n            <el-button type=\"primary\" @click=\"modifyPassword\">\n              提交\n            </el-button>\n          </div>\n        </template>\n      </el-dialog>\n\n      <!-- SSH主机配置弹窗 -->\n      <el-dialog :title=\"data.mode == 0 ? '新增主机' : '更新主机'\" v-model=\"data.host_dialog_visible\" width=\"80%\" top=\"60px\">\n        <el-form label-width=\"80px\" ref=\"host_from\">\n          <el-collapse v-model=\"data.host_config_collapse\">\n            <el-collapse-item title=\"基础配置\" name=\"1\">\n              <el-row>\n                <el-col :span=\"16\">\n                  <el-form-item label=\"名称\" prop=\"name\">\n                    <el-input v-model.trim=\"data.name\" minlength=\"1\" maxlength=\"30\" show-word-limit\n                      placeholder=\"请输入名称\"></el-input>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"16\">\n                  <el-form-item label=\"主机\" prop=\"address\">\n                    <el-input v-model.trim=\"data.address\" minlength=\"1\" maxlength=\"60\" show-word-limit\n                      placeholder=\"请输入主机地址\"></el-input>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"8\">\n                  <el-form-item label=\"网络\" prop=\"net_type\">\n                    <el-radio-group v-model=\"data.net_type\">\n                      <el-radio value=\"tcp4\">IPv4</el-radio>\n                      <el-radio value=\"tcp6\">IPv6</el-radio>\n                    </el-radio-group>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"16\">\n                  <el-form-item label=\"用户\" prop=\"user\">\n                    <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"data.user\" show-word-limit\n                      placeholder=\"请输入用户名\"></el-input>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"8\">\n                  <el-form-item label=\"端口\" prop=\"port\">\n                    <el-input-number v-model=\"data.port\" :min=\"1\" :max=\"65535\"></el-input-number>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-form-item label=\"认证方式\">\n                  <el-radio-group v-model=\"data.auth_type\">\n                    <el-radio value=\"pwd\">密码</el-radio>\n                    <el-radio value=\"cert\">密钥</el-radio>\n                  </el-radio-group>\n                </el-form-item>\n              </el-row>\n              <el-row v-if=\"data.auth_type === 'cert'\">\n                <el-col :span=\"16\">\n                  <el-form-item label=\"密钥\">\n                    <el-input v-model=\"data.cert_data\" type=\"textarea\" placeholder=\"请输入密钥内容或上传\" />\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"8\">\n                  <el-form-item label=\"上传\">\n                    <el-button type=\"primary\" @click=\"addCertFile\">上传密钥文件</el-button>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"16\">\n                  <el-form-item v-if=\"data.auth_type === 'cert'\" label=\"密钥口令\" prop=\"cert_pwd\">\n                    <el-input minlength=\"\" maxlength=\"60\" v-model.trim=\"data.cert_pwd\" type=\"passrowd\" show-password\n                      show-word-limit placeholder=\"密钥口令\"></el-input>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"16\">\n                  <el-form-item v-if=\"data.auth_type === 'pwd'\" label=\"SSH密码\" prop=\"pwd\">\n                    <el-input minlength=\"1\" maxlength=\"60\" v-model.trim=\"data.pwd\" type=\"passrowd\" show-password\n                      show-word-limit placeholder=\"SSH密码\"></el-input>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n            </el-collapse-item>\n\n            <el-collapse-item title=\"高级配置\" name=\"2\">\n              <el-row>\n                <el-col :span=\"9\">\n                  <el-form-item label=\"终端类型\" prop=\"pty_type\">\n                    <el-select style=\"width: 130px\" v-model=\"data.pty_type\" placeholder=\"请选择终端类型\">\n                      <el-option label=\"xterm-256color\" value=\"xterm-256color\" />\n                      <el-option label=\"linux\" value=\"linux\" />\n                      <el-option label=\"xtrem\" value=\"xtrem\" />\n                    </el-select>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"5\">\n                  <el-form-item label=\"字体颜色\" prop=\"foreground\">\n                    <el-color-picker v-model=\"data.foreground\"></el-color-picker>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"5\">\n                  <el-form-item label=\"背景颜色\" prop=\"background\">\n                    <el-color-picker v-model=\"data.background\"></el-color-picker>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"5\">\n                  <el-form-item label=\"光标颜色\" prop=\"cursor_color\">\n                    <el-color-picker v-model=\"data.cursor_color\"></el-color-picker>\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"9\">\n                  <el-form-item label=\"字体\">\n                    <el-select style=\"width: 130px\" v-model=\"data.font_family\" placeholder=\"请选择字体\">\n                      <el-option label=\"Courier\" value=\"Courier\" />\n                      <el-option label=\"Courier New\" value=\"Courier New\" />\n                      <el-option label=\"Menlo\" value=\"Menlo\" />\n                      <el-option label=\"Monaco\" value=\"Monaco\" />\n                      <el-option label=\"monospace\" value=\"monospace\" />\n                    </el-select>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"5\">\n                  <el-form-item label=\"字体大小\">\n                    <el-select v-model.number=\"data.font_size\" placeholder=\"请选择字体大小\">\n                      <el-option label=\"8\" value=\"8\" />\n                      <el-option label=\"12\" value=\"12\" />\n                      <el-option label=\"14\" value=\"14\" />\n                      <el-option label=\"16\" value=\"16\" />\n                      <el-option label=\"18\" value=\"18\" />\n                      <el-option label=\"20\" value=\"20\" />\n                      <el-option label=\"22\" value=\"22\" />\n                      <el-option label=\"24\" value=\"24\" />\n                      <el-option label=\"26\" value=\"26\" />\n                      <el-option label=\"28\" value=\"28\" />\n                      <el-option label=\"30\" value=\"30\" />\n                      <el-option label=\"32\" value=\"32\" />\n                      <el-option label=\"34\" value=\"34\" />\n                    </el-select>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"4\">\n                  <el-form-item label=\"光标样式\">\n                    <el-select v-model=\"data.cursor_style\" placeholder=\"请选择光标样式\">\n                      <el-option label=\"块状\" value=\"block\" />\n                      <el-option label=\"下划线\" value=\"underline\" />\n                      <el-option label=\"竖线\" value=\"bar\" />\n                    </el-select>\n                  </el-form-item>\n                </el-col>\n                <el-col :span=\"6\">\n                  <!--\n                        <el-form-item label=\"Shell\">\n                          <el-select v-model=\"data.shell\" placeholder=\"请选择Shell\">\n                            <el-option label=\"sh\" value=\"sh\" />\n                            <el-option label=\"bash\" value=\"bash\" />\n                            <el-option label=\"csh\" value=\"csh\" />\n                            <el-option label=\"zsh\" value=\"zsh\" />\n                            <el-option label=\"(windows)powershell\" value=\"powershell\" />\n                          </el-select>\n                        </el-form-item>                        \n                        -->\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"24\">\n                  <el-form-item label=\"连接命令\">\n                    <el-input v-model=\"data.init_cmd\" type=\"textarea\" :row=\"1\" placeholder=\"请输入连接后执行命令\" />\n                  </el-form-item>\n                </el-col>\n              </el-row>\n              <el-row>\n                <el-col :span=\"24\">\n                  <el-form-item label=\"连接横幅\">\n                    <el-input v-model=\"data.init_banner\" type=\"textarea\" :row=\"1\" placeholder=\"请输入连接后提示横幅\" />\n                  </el-form-item>\n                </el-col>\n              </el-row>\n            </el-collapse-item>\n          </el-collapse>\n        </el-form>\n        <template #footer>\n          <span class=\"dialog-footer\">\n            <el-button @click=\"data.host_dialog_visible = false\">取消</el-button>\n            <el-button type=\"success\" @click=\"connect\">连接</el-button>\n          </span>\n          &nbsp;&nbsp;&nbsp;&nbsp;\n          <span v-if=\"data.mode == 0\" class=\"dialog-footer\">\n            <el-button type=\"primary\" @click=\"createHost(false)\">保存</el-button>\n            <el-button type=\"primary\" @click=\"createHost(true)\">连接并保存</el-button>\n          </span>\n          <span v-if=\"data.mode == 1\" class=\"dialog-footer\">\n            <el-button type=\"primary\" @click=\"updateHost(false)\">更新</el-button>\n            <el-button type=\"primary\" @click=\"updateHost(true)\">连接并更新</el-button>\n          </span>\n        </template>\n      </el-dialog>\n\n      <!-- SSH文件上传下载弹窗 -->\n      <el-dialog v-model=\"data.file_dialog_visible\" width=\"80%\" custom-class=\"file-dialog\" top=\"60px\">\n        <template #header>\n          <span v-html=\"title\"></span>\n        </template>\n\n        <el-button-group style=\"width:auto;display: flex; flex-wrap: nowrap;overflow-x: auto;\">\n          <el-button v-for=\"(item, index) in data.dir_info.paths\" :key=\"index\"\n            @click=\"listDir(item.dir, data.current_host)\">{{ item.name }}</el-button>\n        </el-button-group>\n        </br>\n\n        <el-form-item style=\"margin-top: 10px;\">\n          <el-input v-model=\"data.sftp_current_dir\" style=\"width: 100%;\" placeholder=\"请输入路径\" class=\"input-with-select\">\n            <template #append>\n              <el-button-group style=\"color:blue\">\n                <el-button @click=\"listDir(data.sftp_current_dir, data.current_host)\">进入</el-button>\n                <el-button @click=\"uploadFile(data.sftp_current_dir)\">上传</el-button>\n                <el-button @click=\"createDir(data.sftp_current_dir, data.current_host)\">创建目录</el-button>\n                <el-button @click=\"listDir(data.sftp_current_dir, data.current_host)\">刷新</el-button>\n              </el-button-group>\n            </template>\n          </el-input>\n        </el-form-item>\n        </br>\n\n        <el-row>\n          <el-col :span=\"24\">\n            <el-progress :percentage=\"data.sftp_upload_percentage\" />\n          </el-col>\n        </el-row>\n\n        <el-table :data=\"data.dir_info.files\" height=\"400\" :show-overflow-tooltip=\"true\">\n          <el-table-column prop=\"name\" label=\"文件名\" fixed=\"left\" sortable>\n            <template #default=\"scope\">\n              <el-button v-if=\"scope.row.type === 'f'\" @click=\"downloadFile(scope.row)\" type=\"primary\" link\n                :icon=\"Files\" style=\"color: green\">{{ scope.row.name }}</el-button>\n              <el-button v-if=\"scope.row.type === 'd'\" @click=\"listDir(scope.row.path, data.current_host)\"\n                type=\"primary\" link :icon=\"FolderOpened\">{{ scope.row.name }}</el-button>\n            </template>\n          </el-table-column>\n          <el-table-column prop=\"size\" label=\"大小\" width=\"100\" sortable></el-table-column>\n          <el-table-column prop=\"mode\" label=\"权限\" width=\"100\" sortable></el-table-column>\n          <el-table-column prop=\"mod_time\" label=\"修改日期\" width=\"180\" sortable></el-table-column>\n          <el-table-column label=\"操作\" width=\"180\" fixed=\"right\">\n            <template #default=\"scope\">\n              <el-button-group>\n                <el-button v-if=\"scope.row.type == 'f'\" @click=\"downloadFile(scope.row)\" type=\"success\"\n                  :icon=\"Bottom\">下载</el-button>\n                <el-button v-else type=\"primary\" :icon=\"Upload\" @click=\"uploadFile(scope.row.path)\">上传</el-button>\n                <el-popconfirm confirmButtonText=\"删除\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                  title=\"确定删除吗\" @confirm=\"deleteFile(scope.row)\">\n                  <template #reference>\n                    <el-button type=\"danger\">删除</el-button>\n                  </template>\n                </el-popconfirm>\n              </el-button-group>\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-dialog>\n\n      <!-- 管理 -->\n      <el-dialog title=\"系统管理\" v-model=\"data.manage_dialog_visible\" v-bind:fullscreen=\"true\">\n        <Manage></Manage>\n      </el-dialog>\n    </div>\n\n    <div v-if=\"data.host_tabs.length === 0\">\n      <Empty></Empty>\n    </div>\n    <div v-else>\n      <el-tabs v-model=\"data.current_host.session_id\" type=\"card\" closable @tab-remove=\"removeTab\"\n        @tab-click=\"selectTab\">\n        <el-tab-pane v-for=\"item in data.host_tabs\" :key=\"item.session_id\" :label=\"item.name\" :name=\"item.session_id\">\n          <template #label>\n            <el-button-group style=\"width:auto;display: flex; flex-wrap: nowrap;overflow-x: auto;\">\n              <el-popover placement=\"bottom\" :width=\"400\" trigger=\"hover\">\n                <template #reference>\n                  <el-button :type=\"item.session_id === data.current_host.session_id\n                    ? 'primary' : 'info'\">\n                    <span v-if=\"item.is_close\" style=\"color:red\">{{ item.name }}</span>\n                    <span v-else=\"item.is_close\" style=\"color:white\">{{ item.name }}</span>\n                  </el-button>\n                </template>\n                <div>\n                  <div style=\"padding-top: 5px;\">\n                    <el-button-group>\n                      <el-button type=\"primary\" @click=\"connectHost(item, true)\">重连</el-button>\n                      <el-button type=\"primary\" @click=\"item.term.clear()\">清空缓冲区</el-button>\n                    </el-button-group>\n                  </div>\n                  <div style=\"padding-top: 5px;\">\n                    <div>\n                      <el-input disabled v-model=\"item.session_id\">\n                        <template #prepend>会话</template>\n                      </el-input>\n                    </div>\n                    <div>\n                      <el-input disabled v-model=\"item.address\">\n                        <template #prepend>主机</template>\n                      </el-input>\n                    </div>\n                    <div>\n                      <el-input disabled v-model=\"item.user\">\n                        <template #prepend>用户</template>\n                      </el-input>\n                    </div>\n                    <div>\n                      <el-input disabled v-model=\"item.port\">\n                        <template #prepend>端口</template>\n                      </el-input>\n                    </div>\n                  </div>\n                </div>\n              </el-popover>\n\n              <el-tooltip class=\"item\" effect=\"dark\" content=\"文件传输\" placement=\"top\">\n                <el-button :type=\"item.session_id === data.current_host.session_id\n                  ? 'primary'\n                  : 'info'\n                  \" @click=\"listDir('/', item)\" :icon=\"Sort\"></el-button>\n              </el-tooltip>\n            </el-button-group>\n          </template>\n          <template #default>\n            <div id=\"term-data\" style=\"margin: 1px\">\n              <div :id=\"item.session_id\" style=\"width: 100vw;height:100vh\"></div>\n            </div>\n          </template>\n        </el-tab-pane>\n      </el-tabs>\n    </div>\n  </el-container>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, reactive, ref, defineAsyncComponent } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { ElMessage, ElNotification, ElPopover } from \"element-plus\";\nimport { FolderOpened, Files, Bottom, Upload, Menu, CirclePlus, Coin, Sort, Edit, Setting, User, CircleClose, Star } from \"@element-plus/icons-vue\";\nimport axios, { type AxiosProgressEvent } from \"axios\";\nimport { useGlobalStore } from \"@/stores/store\";\nimport { Terminal } from \"@xterm/xterm\";\nimport { AttachAddon } from \"@xterm/addon-attach\";\nimport { FitAddon } from \"@xterm/addon-fit\";\nimport \"@xterm/xterm/css/xterm.css\";\nimport Empty from \"./Empty.vue\";\nconst Manage = defineAsyncComponent(() => import('./Manage.vue'))\n\n\nlet router = useRouter();\nlet globalStore = useGlobalStore();\n\nenum Mode {\n  \"create\" = 0,\n  \"update\" = 1,\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any;\n}\n\n/**\n * 连接Host对象\n */\ninterface Host {\n  id: number;\n  name: string;\n  address: string;\n  user: string;\n  auth_type: \"pwd\" | \"cert\";\n  net_type: \"tcp4\" | \"tcp6\";\n  cert_data: string;\n  cert_pwd: string;\n  pwd: string;\n  port: number;\n  font_size: number;\n  background: string;\n  foreground: string;\n  cursor_color: string;\n  font_family: string;\n  cursor_style: \"block\" | \"underline\" | \"bar\";\n  shell: string;\n  pty_type: \"xterm-256color\" | \"xterm\" | \"linux\";\n  init_cmd: string;\n  init_banner: string;\n  session_id: string;\n  term: Terminal;\n  fit: FitAddon;\n  ws: WebSocket;\n  is_close: boolean;\n}\n\n/**\n * 表单验证\n */\ninterface VerifyFromData {\n  host: Host;\n  is_success: boolean;\n}\n\n/**\n * sftp Path\n */\ninterface Path {\n  dir: string;\n  name: string;\n}\n\n/**\n * sftp FileInfo\n */\ninterface FileInfo {\n  name: string;\n  mod_time: string;\n  mode: string;\n  path: string;\n  type: \"d\" | \"f\";\n  size: number;\n}\n\n/**\n * sftp DirInfo\n */\ninterface DirInfo {\n  current_dir: string;\n  dir_count: number;\n  file_count: number;\n  files: Array<FileInfo>;\n  paths: Array<Path>;\n}\n\nlet data = reactive({\n  mode: Mode.create,\n  id: 0,\n  name: \"\",\n  address: \"\",\n  user: \"\",\n  auth_type: \"pwd\",\n  net_type: \"tcp4\",\n  cert_data: \"\",\n  cert_pwd: \"\",\n  pwd: \"\",\n  port: 22,\n  h: 20,\n  w: 80,\n  session_id: \"\",\n  background: \"#000000\",\n  foreground: \"#FFFFFF\",\n  cursor_color: \"#FFFFFF\",\n  font_family: \"Courier\",\n  font_size: 16,\n  cursor_style: \"block\",\n  shell: \"bash\",\n  pty_type: \"xterm-256color\",\n  init_cmd: \"\",\n  init_banner: \"\",\n\n  upload_path: \"\",\n  download_path: \"\",\n  host_list: [] as Array<Host>,\n  host_tabs: [] as Array<Host>,\n\n  current_host: { session_id: \"\" } as Host,\n  host_config_collapse: ['1'],\n  host_dialog_visible: false,\n  file_dialog_visible: false,\n  modify_pwd_dialog_visible: false,\n  manage_dialog_visible: false,\n  dir_info: {} as DirInfo,\n  sftp_current_dir: \"\",\n  sftp_upload_percentage: 0,\n  new_pwd_one: \"\",\n  new_pwd_two: \"\",\n});\n\n/**\n * 调试\n */\nfunction debug() {\n  console.log(data);\n  console.log(data.current_host);\n  console.log(data.host_list);\n  console.log(data.host_tabs);\n}\n\n/**\n * 批量执行命令\n */\nlet cmd = reactive({ name: \"\", data: \"\", node: \"current\" });\n\ninterface CmdNode {\n  id: number;\n  cmd_name: string;\n  cmd_data: string;\n}\n\nlet cmdNotes = ref<Array<CmdNode>>([]);\n\n/**\n * 搜索主机列表\n */\nconst searchHost = ref(\"\");\nconst filterHostTable = computed(() =>\n  data.host_list.filter(\n    (i) =>\n      !searchHost.value ||\n      i.name.toLowerCase().includes(searchHost.value.toLowerCase()) ||\n      i.address.toLowerCase().includes(searchHost.value.toLowerCase())\n  )\n)\n\n/**\n * 搜索命令收藏列表\n */\nconst searchCmdNote = ref(\"\");\nconst filterCmdNoteTable = computed(() =>\n  cmdNotes.value.filter(\n    (i) =>\n      !searchCmdNote.value ||\n      i.cmd_name.toLowerCase().includes(searchCmdNote.value.toLowerCase())\n  )\n)\n\n/**\n * 状态报告定时器\n */\nlet statusSetInterval: number;\n\n/**\n * sftp 文件传输弹窗title\n */\nconst title = computed(() => {\n  let titleHtml = `<span style=\"color:red;\">当前名称:${data.current_host.name} &nbsp;&nbsp;&nbsp;当前主机:${data.current_host.address}</span>`;\n  return titleHtml;\n});\n\n/**\n * 修改密码\n */\nfunction modifyPassword() {\n  if (data.new_pwd_one.length < 2) {\n    ElMessage.error(\"密码至少两个字符\");\n    return\n  }\n  if (data.new_pwd_two.length < 2) {\n    ElMessage.error(\"密码至少两个字符\");\n    return\n  }\n  if (data.new_pwd_one !== data.new_pwd_two) {\n    ElMessage.error(\"两次密码输入不一致\");\n    return\n  }\n\n  axios.patch<ResponseData>(\"/api/user/pwd\", { \"pwd\": data.new_pwd_one }).then((ret) => {\n    if (ret.data.code === 0) {\n      ElMessage.success(\"密码修改成功\");\n    } else {\n      ElMessage.error(\"密码修改失败\");\n    }\n  }).catch(() => {\n    ElMessage.error(\"密码修改错误\");\n  })\n  data.modify_pwd_dialog_visible = false;\n}\n\n/**\n * 执行命令\n */\nfunction execCmd() {\n  if (cmd.node == \"current\") {\n    execCmdCurrentSession({ \"id\": 0, \"cmd_name\": \"\", \"cmd_data\": cmd.data });\n  }\n  if (cmd.node == \"all\") {\n    execCmdAllSession({ \"id\": 0, \"cmd_name\": \"\", \"cmd_data\": cmd.data });\n  }\n}\n\n/**\n * 添加命令收藏\n */\nfunction addCmdNote() {\n  if (cmd.data.trim().length === 0) {\n    ElMessage.error(\"收藏的命令不能为空\");\n    return;\n  }\n\n  if (cmd.name.trim().length === 0) {\n    ElMessage.error(\"如果收藏命令,必须输入收藏名称\");\n    return;\n  }\n\n  axios.post<ResponseData>(`/api/cmd_note/`, { \"cmd_name\": cmd.name, \"cmd_data\": cmd.data })\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        ElMessage.success(\"收藏成功\");\n        getAllCmdNote();\n      } else {\n        ElMessage.error(\"收藏命令出错了\");\n      }\n    });\n\n}\n\n/**\n * 删除命令收藏\n */\nfunction delCmdNote(id: number) {\n  axios.delete<ResponseData>(`/api/cmd_note/${id}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        cmdNotes.value = ret.data.data;\n        ElMessage.success(\"删除成功\");\n      } else {\n        ElMessage.error(\"删除命令收藏出错了\");\n      }\n    });\n}\n\n/**\n * 更新命令收藏\n */\nfunction putCmdNote(id: number) {\n\n}\n\n/**\n * 查询所有命令收藏\n */\nfunction getAllCmdNote() {\n  axios.get<ResponseData>(\"/api/cmd_note\").then((ret) => {\n    if (ret.data.code === 0) {\n      cmdNotes.value = ret.data.data;\n    } else {\n      ElMessage.error(\"获取主机列表错误\");\n    }\n  });\n}\n\n/**\n * 在当前会话执行收藏命令\n */\nfunction execCmdCurrentSession(row: CmdNode) {\n  try {\n    data.current_host.ws.send(row.cmd_data + \"\\n\");\n  } catch (e) {\n    ElMessage.error(\"当前会话执行命令失败\");\n  }\n}\n\n/**\n * 在所有会话执行收藏命令\n */\nfunction execCmdAllSession(row: CmdNode) {\n  try {\n    if (data.host_tabs.length === 0) {\n      ElMessage.error(\"没有连接会话\");\n      return;\n    }\n    data.host_tabs.forEach((h) => {\n      h.ws.send(row.cmd_data + \"\\n\");\n    });\n  } catch (e) {\n    ElMessage.error(\"执行命令失败\");\n  }\n}\n\n/**\n * 添加密钥文件\n */\nfunction addCertFile() {\n  const input = document.createElement(\"input\");\n  input.type = \"file\";\n  input.addEventListener(\"change\", (event) => {\n    const files = (event.target as HTMLInputElement).files;\n    if (files && files.length > 0) {\n      let certFile = files[0];\n      const isLt1M = certFile.size / 1024 / 1024 < 1;\n      if (!isLt1M) {\n        ElMessage.error(\"上传文件大小不能超过 1MB!\");\n        return;\n      }\n      const reader = new FileReader();\n      reader.onload = (e) => {\n        data.cert_data = (e.target as FileReader).result as string;\n      };\n      reader.readAsText(certFile);\n    }\n  });\n  input.click();\n}\n\n/**\n * 验证输入的主机信息\n */\nfunction verifyFrom(): VerifyFromData {\n  let verifyFromData: VerifyFromData = {\n    host: {} as Host,\n    is_success: false,\n  };\n\n  if (data.name.length === 0) {\n    ElMessage.error(\"名称不能为空\");\n    return verifyFromData;\n  }\n\n  if (data.name.length > 30) {\n    ElMessage.error(\"名称不能大于30个字符\");\n    return verifyFromData;\n  }\n\n  if (data.address.length === 0) {\n    ElMessage.error(\"主机不能为空\");\n    return verifyFromData;\n  }\n\n  if (data.address.length > 60) {\n    ElMessage.error(\"主机不能大于60个字符\");\n    return verifyFromData;\n  }\n\n  if (data.user.length === 0) {\n    ElMessage.error(\"用户名不能为空\");\n    return verifyFromData;\n  }\n\n  if (data.user.length > 60) {\n    ElMessage.error(\"用户名不能大于60个字符\");\n    return verifyFromData;\n  }\n\n  if (data.user.length === 0) {\n    ElMessage.error(\"用户名不能为空\");\n    return verifyFromData;\n  }\n\n  if (data.user.length > 60) {\n    ElMessage.error(\"用户名不能大于60个字符\");\n    return verifyFromData;\n  }\n\n  if (data.auth_type === \"pwd\" && data.pwd.length === 0) {\n    ElMessage.error(\"密码不能为空\");\n    return verifyFromData;\n  }\n\n  if (data.user.length > 60) {\n    ElMessage.error(\"密码不能大于60个字符\");\n    return verifyFromData;\n  }\n\n  if (!data.port) {\n    ElMessage.error(\"端口输入错误,必须是1-65535\");\n    return verifyFromData;\n  }\n\n  if (data.port < 1 || data.port > 65535) {\n    ElMessage.error(\"端口范围错误,必须是1-65535\");\n    return verifyFromData;\n  }\n\n  if (data.auth_type === \"cert\" && data.cert_data === \"\") {\n    ElMessage.error(\"使用密钥登陆,密钥内容不能为空\");\n    return verifyFromData;\n  }\n\n  let h = {\n    id: data.id,\n    name: data.name,\n    address: data.address,\n    user: data.user,\n    auth_type: data.auth_type,\n    net_type: data.net_type,\n    cert_data: data.cert_data,\n    cert_pwd: data.cert_pwd,\n    pwd: data.pwd,\n    port: data.port,\n    session_id: data.session_id,\n    background: data.background,\n    foreground: data.foreground,\n    cursor_color: data.cursor_color,\n    font_family: data.font_family,\n    font_size: data.font_size,\n    cursor_style: data.cursor_style,\n    shell: data.shell,\n    pty_type: data.pty_type,\n    init_cmd: data.init_cmd,\n    init_banner: data.init_banner,\n  };\n  let result: VerifyFromData = {\n    host: h as Host,\n    is_success: true,\n  };\n  return result;\n}\n\n/**\n * 清空表单数据\n */\nfunction cleanFrom() {\n  data.id = 0;\n  data.name = \"\";\n  data.address = \"\";\n  data.user = \"\";\n  data.pwd = \"\";\n  data.auth_type = \"pwd\";\n  data.net_type = \"tcp4\";\n  data.cert_data = \"\";\n  data.cert_pwd = \"\";\n  data.port = 22;\n  data.session_id = \"\";\n  data.background = \"#000000\";\n  data.foreground = \"#FFFFFF\";\n  data.cursor_color = \"#FFFFFF\";\n  data.font_family = \"Courier\";\n  data.font_size = 16;\n  data.cursor_style = \"block\";\n  data.shell = \"bash\";\n  data.pty_type = \"xterm-256color\";\n  data.init_cmd = \"\";\n  data.init_banner = \"\";\n  data.host_config_collapse = ['1'];\n}\n\n/**\n * 连接\n */\nfunction connect() {\n  let result = verifyFrom();\n  if (!result.is_success) {\n    return;\n  }\n  connectHost(result.host);\n}\n\n/**\n * 打开文件列表\n */\nfunction listDir(dir: string, h: Host) {\n  data.file_dialog_visible = true;\n  if (h) {\n    setCurrentAcitveHost(h.session_id);\n  }\n  let host = { ...data.current_host };\n\n  if (!host.hasOwnProperty(\"session_id\")) {\n    // 没有连接主机\n    return;\n  }\n\n  let formData = new FormData();\n  formData.append(\"session_id\", host.session_id);\n  formData.append(\"path\", dir);\n  axios.post<ResponseData>(\"/api/sftp/list\", formData).then((ret) => {\n    if (ret.data.code === 0) {\n      data.dir_info = ret.data.data;\n      data.sftp_current_dir = dir;\n    } else {\n      ElMessage.error(\"获取文件列表错误\");\n    }\n  });\n}\n\n/**\n * 上传文件\n */\nfunction uploadFile(path: string) {\n  data.sftp_upload_percentage = 0;\n  function upload(fileList: FileList) {\n    let formData = new FormData();\n    formData.append(\"session_id\", data.current_host.session_id);\n    formData.append(\"path\", path);\n    for (let i = 0; i < fileList.length; i++) {\n      formData.append(\"files\", fileList[i]);\n    }\n\n    axios({\n      url: '/api/sftp/upload',\n      method: 'put',\n      data: formData,\n      //上传进度\n      onUploadProgress: (progressEvent: AxiosProgressEvent) => {\n        const { loaded, total } = progressEvent;\n        if (!total) {\n          // 没有获取到总大小，可能是流式上传或者chunked传输\n          data.sftp_upload_percentage = loaded;\n        } else {\n          // 计算进度，可以用 loaded / total 得到一个0到1的数字\n          data.sftp_upload_percentage = loaded / total * 100 | 0;\n        }\n      }\n    }).then((ret) => {\n      if (ret.data.code === 0) {\n        // ElMessage.success(ret.data.msg);\n        listDir(data.sftp_current_dir, data.current_host);\n        let list = ret.data.data as Array<string>;\n        if (list) {\n          let msg = \"\";\n          list.forEach((i) => {\n            msg += `<p>${i}</p>`;\n          });\n          ElNotification({\n            type: 'success',\n            duration: 7000,\n            title: ret.data.msg,\n            dangerouslyUseHTMLString: true,\n            message: msg,\n          });\n        }\n      } else {\n        ElMessage.error(\"上传失败\");\n      }\n    }).catch(() => {\n      ElMessage.error(\"上传异常\");\n    });\n  }\n\n  let fileInput = document.createElement(\"input\");\n  fileInput.type = \"file\";\n  fileInput.multiple = true;\n\n  fileInput.onchange = function (f: any) {\n    let fileList = fileInput.files as FileList;\n    upload(fileList);\n  };\n  fileInput.click();\n}\n\n/**\n * 下载文件(只能是文件,不能是目录)\n */\nfunction downloadFile(file: FileInfo) {\n  /*\n  // POST 方式\n  let formData = new FormData();\n  formData.append(\"session_id\", data.current_host.session_id);\n  formData.append(\"path\", file.path);\n  axios.post<Blob>(\"/api/sftp/download\", formData).then((ret) => {\n    let blob = new Blob([ret.data], { type: 'application/x-download' });\n    let a = document.createElement(\"a\");\n    a.style.display = 'none';\n    let url = window.URL.createObjectURL(blob);\n    a.href = url;\n    a.download = file.name;\n    document.body.appendChild(a);\n    a.click();\n    document.body.removeChild(a); \n    window.URL.revokeObjectURL(url);\n  });\n  */\n  let reqUrl = `/api/sftp/download?Authorization=${localStorage.getItem(\"token\")}&session_id=${data.current_host.session_id}&path=${encodeURIComponent(file.path).replace(/%/g, \"%25\")}`;\n  let a = document.createElement(\"a\");\n  a.style.display = 'none';\n  a.href = reqUrl;\n  a.download = file.name;\n  a.click();\n}\n\n/**\n * SFTP文件删除\n */\nfunction deleteFile(file: FileInfo) {\n  let body = {\n    \"session_id\": data.current_host.session_id,\n    \"path\": file.path\n  }\n  axios.delete<ResponseData>(\"/api/sftp/delete\", { data: body }).then((ret) => {\n    if (ret.data.code === 0) {\n      listDir(data.sftp_current_dir, data.current_host);\n      ElMessage.success(\"删除文件成功\");\n    } else {\n      ElMessage.error(\"删除文件出错了\");\n    }\n  });\n}\n\n/**\n * SFTP创建目录\n */\nfunction createDir(dir: string, h: Host) {\n  let body = {\n    \"session_id\": h.session_id,\n    \"path\": dir\n  }\n  axios.post<ResponseData>(\"/api/sftp/create_dir\", body).then((ret) => {\n    if (ret.data.code === 0) {\n      listDir(data.sftp_current_dir, data.current_host);\n      ElMessage.success(\"创建目录成功\");\n    } else {\n      ElMessage.error(\"创建目录出错了\");\n    }\n  });\n}\n\n/**\n * 获取所有主机列表\n */\nfunction getAllHost() {\n  axios.get<ResponseData>(\"/api/conn_conf\").then((ret) => {\n    if (ret.data.code === 0) {\n      data.host_list = ret.data.data;\n    } else {\n      ElMessage.error(\"获取主机列表错误\");\n    }\n  })\n}\n\n/**\n * 创建或更新主机\n */\nfunction createOrUpdateHost(host: Host, m: Mode) {\n  // 关闭模态框,from 表单验证后续在搞 :rules=\"host_from_rules\"\n  if (m == 0) {\n    for (let i = 0; i < data.host_list.length; i++) {\n      // 数据库中name是unique约束\n      let item = data.host_list[i];\n      if (item.name == host.name) {\n        ElMessage.error(\"名称已经存在,请修改\");\n        return;\n      }\n    }\n  }\n\n  // 关闭模态框\n  data.host_dialog_visible = false;\n  if (m == 0) {\n    // 新增\n    axios.post<ResponseData>(\"/api/conn_conf\", host)\n      .then((ret) => {\n        if (ret.data.code === 0) {\n          data.host_list = ret.data.data;\n          cleanFrom();\n        } else {\n          ElMessage.error(\"新增出错了\");\n        }\n      })\n  } else {\n    // 更新\n    axios.put<ResponseData>(`/api/conn_conf`, host)\n      .then((ret) => {\n        if (ret.data.code === 0) {\n          data.host_list = ret.data.data;\n          cleanFrom();\n        }\n        else {\n          ElMessage.error(\"更新出错了\");\n        }\n      })\n  }\n}\n\n/**\n * 进入主机创建模式\n */\nfunction newHost() {\n  cleanFrom();\n  data.host_dialog_visible = true;\n  data.mode = 0;\n}\n\n/**\n * 创建主机并保存(也可以创建主机并保存且保存)\n */\nfunction createHost(isConnect: boolean = false) {\n  // 创建模式\n  data.mode = Mode.create;\n  let result = verifyFrom();\n  if (!result.is_success) {\n    return;\n  }\n  createOrUpdateHost(result.host, Mode.create);\n  if (isConnect) {\n    connectHost(result.host);\n  }\n}\n\n/**\n * 编辑主机\n */\nfunction editHost(row: Host) {\n  // 打开模态框\n  data.host_dialog_visible = true;\n\n  // 编辑模式\n  data.mode = Mode.update;\n  data.id = row.id;\n  data.address = row.address;\n  data.name = row.name;\n  data.user = row.user;\n  data.auth_type = row.auth_type;\n  data.net_type = row.net_type;\n  data.cert_data = row.cert_data;\n  data.cert_pwd = row.cert_pwd;\n  data.pwd = row.pwd;\n  data.port = row.port;\n  data.background = row.background;\n  data.foreground = row.foreground;\n  data.cursor_color = row.cursor_color;\n  data.font_family = row.font_family;\n  data.font_size = row.font_size;\n  data.cursor_style = row.cursor_style;\n  data.shell = row.shell;\n  data.pty_type = row.pty_type;\n  data.init_cmd = row.init_cmd;\n  data.init_banner = row.init_banner;\n  data.host_config_collapse = ['1'];\n}\n\n/**\n * 更新主机信息\n */\nfunction updateHost(isConnect: boolean = false) {\n  let result = verifyFrom();\n  if (!result.is_success) {\n    return;\n  }\n  createOrUpdateHost(result.host, Mode.update);\n  if (isConnect) {\n    connectHost(result.host);\n  }\n}\n\n/**\n * 删除已经保存的主机\n */\nfunction deleteHost(row: any) {\n  axios.delete<ResponseData>(`/api/conn_conf/${row.id}`)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        data.host_list = ret.data.data;\n        cleanFrom();\n      } else {\n        ElMessage.error(\"删除主机出错了\");\n      }\n    });\n}\n\n/**\n * 去掉几个引用对象属性\n * @param data \n */\nfunction getHost(data: Host): Omit<Host, 'fit' | 'term' | 'ws' | 'is_close'> {\n  if (data.term) {\n    try {\n      data.fit.dispose();\n      data.term.dispose();\n      data.ws.close();\n    } catch (err) {\n      console.log(\"清理资源错误:\" + err);\n    }\n  }\n\n  let connectTabElement = document.getElementById(data.session_id);\n  if (connectTabElement) {\n    connectTabElement.innerHTML = \"\";\n  }\n\n  return {\n    id: data.id,\n    name: data.name,\n    address: data.address,\n    user: data.user,\n    auth_type: data.auth_type,\n    net_type: data.net_type,\n    cert_data: data.cert_data,\n    cert_pwd: data.cert_pwd,\n    pwd: data.pwd,\n    port: data.port,\n    session_id: data.session_id,\n    background: data.background,\n    foreground: data.foreground,\n    cursor_color: data.cursor_color,\n    font_family: data.font_family,\n    font_size: data.font_size,\n    cursor_style: data.cursor_style,\n    shell: data.shell,\n    pty_type: data.pty_type,\n    init_cmd: data.init_cmd,\n    init_banner: data.init_banner,\n  };\n}\n\n/**\n * 连接已经保存过的主机\n */\nfunction connectHost(host: Host, isReconnect: boolean = false) {\n  // 关闭模态框\n  data.host_dialog_visible = false;\n\n  let requestUrl = \"/api/ssh/create_session\";\n  // 如果重连,在url加上会话ID\n  if (isReconnect) {\n    requestUrl += `?session_id=${host.session_id}`;\n  }\n\n  // 上一个版本的解包\n  let connHost = getHost(host) as Host;\n  axios.post<ResponseData>(requestUrl, connHost)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        let session_id = ret.data.data;\n        connHost.session_id = session_id;\n\n        // 窗口大小适应插件\n        connHost.fit = new FitAddon();\n\n        connHost.term = new Terminal({\n          cursorBlink: true,\n          theme: {\n            background: connHost.background,\n            foreground: connHost.foreground,\n            cursor: connHost.cursor_color,\n          },\n          fontSize: connHost.font_size,\n          fontFamily: connHost.font_family,\n          cursorStyle: connHost.cursor_style,\n        });\n\n        // 加载窗口大小自适应插件\n        connHost.term.loadAddon(connHost.fit);\n\n        // 如果是重连就不需要再建立tab页面,直接替换\n        if (isReconnect) {\n          for (let [index, h] of data.host_tabs.entries()) {\n            if (h.session_id === session_id) {\n              connHost.is_close = false;\n              data.host_tabs[index] = connHost;\n              break;\n            }\n          }\n        } else {\n          // 新连接添加tab 页面\n          data.host_tabs.push(connHost);\n        }\n\n        nextTick(() => {\n          let connectTabElement = document.getElementById(connHost.session_id);\n\n          if (connectTabElement === null) {\n            ElMessage.error(\"创建连接获取dom为空!\");\n            return;\n          }\n\n          connectTabElement.style.height = Math.floor(window.innerHeight - 70) + \"px\";\n          connHost.term.open(connectTabElement);\n          connHost.fit.fit();\n\n          let param = `h=${connHost.term.rows}&w=${connHost.term.cols}&session_id=${connHost.session_id}&Authorization=${localStorage.getItem(\"token\")}`;\n          let headPart = `${location.protocol == \"http:\" ? \"ws://\" : \"wss://\"}${location.host}`;\n          let tailPart = `/api/ssh/conn?${param}`;\n\n          let basePath = window.location.pathname.replace(\"/app/\", \"\");\n          if (import.meta.env.VITE_ROUTE_MODE === \"WebHistory\") {\n              if (import.meta.env.VITE_WEB_BASE_DIR) {\n                  basePath = `${import.meta.env.VITE_WEB_BASE_DIR}`;\n              } else {\n                  basePath = \"\";\n              }\n          }\n\n          let webSockerUrl = `${headPart}${basePath}${tailPart}`;\n\n          let ws = new WebSocket(webSockerUrl);\n          ws.onopen = function () {\n            try {\n              // 初始化benner\n              let bannerStr = connHost.init_banner.trim();\n              if (bannerStr !== \"\") {\n                connHost.term.writeln(bannerStr);\n              }\n\n              // 调整窗口大小\n              windowResize();\n\n              // 初始化命令\n              let cmdStr = connHost.init_cmd.trim()\n              if (cmdStr !== \"\") {\n                ws.send(`${cmdStr}\\n`)\n              }\n            } catch (err) {\n              console.log(err);\n            }\n          }\n\n          ws.onerror = function (err) {\n            console.log(\"WebSocket error\");\n            connHost.term.writeln(\"##  连接出错,请重连!  ##\");\n          }\n\n          ws.onclose = function () {\n            console.log(\"WebSocket close:\" + connHost.session_id);\n            connHost.term.writeln(\"##  连接关闭,请重连!  ##\");\n            connHost.is_close = true;\n            if (data.current_host.session_id === session_id) {\n              data.current_host.is_close = true;\n            }\n          }\n\n          connHost.term.loadAddon(new AttachAddon(ws));\n          connHost.ws = ws;\n          connHost.is_close = false;\n          connHost.term.focus();\n          // 清空 from 表单数据\n          cleanFrom();\n\n          // 设置当前激活的host\n          data.current_host = { ...connHost };\n        });\n      } else {\n        ElMessage.error(\"创建连接出错了\");\n      }\n    }).catch((err) => {\n      ElMessage.error(\"创建会话出错了\");\n      console.log(err)\n    });\n}\n\n/**\n * 删除tab\n */\nfunction removeTab(tabId: string | number) {\n  try {\n    axios.post(`/api/ssh/disconnect?session_id=${tabId}`);\n  } catch (error) {\n    console.log(error);\n  }\n\n  let removeIndex = 0;\n  for (let [index, h] of data.host_tabs.entries()) {\n    if (h.session_id === String(tabId)) {\n      removeIndex = index;\n      break;\n    }\n  }\n\n  // 销毁term 对象\n  data.host_tabs[removeIndex].fit.dispose();\n  data.host_tabs[removeIndex].term.dispose();\n  data.host_tabs[removeIndex].ws.close();\n\n  // 从tab页签中删除\n  data.host_tabs.splice(removeIndex, 1);\n\n  // 如果没有打开的tab页签,就直接返回\n  if (data.host_tabs.length === 0) {\n    return;\n  }\n\n  // 如果打开的tab页签只有一个,就把这个tab页签设置成激活状态\n  if (data.host_tabs.length === 1) {\n    let activeHost = { ...data.host_tabs[0] };\n    setCurrentAcitveHost(activeHost.session_id);\n    return;\n  }\n\n  // 如果打开的tab页签只有一个以上,删除以后把下一个tab页签设置成激活\n  if (data.host_tabs.length > 1) {\n    let activeHost = { ...data.host_tabs[removeIndex - 1] };\n    setCurrentAcitveHost(activeHost.session_id);\n  }\n}\n\n/***\n * 点击切换tab\n */\nfunction selectTab(tab: any) {\n  let sessionId = tab.props.name;\n  if (data.current_host.session_id === sessionId) {\n    // 激活的已经是当前窗口直接返回\n    return;\n  }\n  setCurrentAcitveHost(sessionId);\n}\n\n/**\n * 设置当前正在使用的主机\n */\nfunction setCurrentAcitveHost(sessionId: string) {\n  for (const host of data.host_tabs) {\n    if (host.session_id === sessionId) {\n      data.current_host = { ...host };\n      break;\n    }\n  }\n  windowResize();\n}\n\n/**\n * 更改窗口大小\n */\nfunction windowResize() {\n  let currentHost = data.current_host;\n  if (currentHost.session_id === \"\") {\n    return;\n  }\n  // 没有在主机连接路由页面\n  if (router.currentRoute.value.name !== \"Home\") {\n    return;\n  }\n  nextTick(() => {\n    let connectTabElement = document.getElementById(currentHost.session_id);\n    if (connectTabElement === null) {\n      console.log(\"调整窗口大小,没有获取到dom\");\n      return;\n    }\n    (connectTabElement as HTMLElement).style.height = Math.floor(window.innerHeight - 70) + \"px\";\n\n    currentHost.fit.fit();\n    //if (data.h !== currentHost.term.rows || data.w !== currentHost.term.cols) {\n    let url = `/api/ssh/conn?w=${currentHost.term.cols}&h=${currentHost.term.rows}&session_id=${currentHost.session_id}`;\n    axios.patch<ResponseData>(url)\n    //}\n\n    data.h = Math.floor(currentHost.term.rows);\n    data.w = Math.floor(currentHost.term.cols);\n  });\n}\n\n/**\n * 报告连接状态\n */\nfunction reportConnectStatus() {\n  statusSetInterval = setInterval(() => {\n    let fm = new FormData();\n    data.host_tabs.forEach((hont) => {\n      fm.append(\"ids\", hont.session_id);\n    });\n    axios.put<ResponseData>(\"/api/conn_manage/refresh_conn_time\", fm)\n      .then((res) => {\n        if (res.data.code !== 0) {\n          console.log(\"刷新失败\");\n        }\n      });\n  }, 10000);\n}\n\n/**\n * 跳转到管理页面\n */\nfunction toManage() {\n  //router.push({ name: \"Manage\" });\n  data.manage_dialog_visible = true;\n}\n\n/**\n * 防抖\n * @param fn \n * @param delay \n */\nfunction debounce(fn: Function, delay: number) {\n  let timer = 0;\n  return function (event: Event) {\n    clearTimeout(timer);\n    timer = setTimeout(() => {\n      fn();\n    }, delay)\n  }\n}\n\n/**\n * 节流\n * @param fn \n * @param delay \n */\nfunction throttle(fn: Function, delay: number) {\n  let record = Date.now();\n  return function (event: Event) {\n    let now = Date.now();\n    if (now - record > delay) {\n      fn();\n      record = now;\n    }\n  }\n}\n\n/**\n * 断开所有会话\n */\nfunction disconnectAllSession() {\n  // 清理连接资源\n  data.host_tabs.forEach((host, index) => {\n    try {\n      axios.post(`/api/ssh/disconnect?session_id=${host.session_id}`);\n    } catch (error) {\n      console.log(error);\n    }\n  });\n}\n\n/**\n * 退出登陆\n */\nfunction logout() {\n  disconnectAllSession();\n  globalStore.logout();\n  localStorage.setItem(\"auth\", \"no\");\n  router.push({ \"name\": \"Login\" });\n}\n\n/**\n * 挂载后执行\n */\nonMounted(() => {\n  router = useRouter();\n  reportConnectStatus();\n  getAllHost();\n  getAllCmdNote();\n  window.addEventListener(\"resize\", debounce(windowResize, 200));\n  windowResize();\n  window.onbeforeunload = function () {\n    return \"关闭吗\";\n  };\n});\n\n/**\n * 销毁前执行\n */\nonBeforeUnmount(() => {\n  clearInterval(statusSetInterval);\n  disconnectAllSession();\n  window.onbeforeunload = null;\n})\n\n// 添加计算属性获取终端背景色\nconst terminalBackground = computed(() => {\n  if (data.current_host?.term?.options?.theme?.background) {\n    return data.current_host.term.options.theme.background;\n  }\n  return data.background || '#000000'; // 使用配置的背景色或默认黑色\n});\n\n</script>\n\n\n<style scoped>\n.file-dialog {\n  margin-top: 0px;\n}\n\n:deep(.el-tabs__header.is-top) {\n  margin: 0;\n  border-bottom: none;\n}\n\n/* 优化 tabs 整体布局 */\n:deep(.el-tabs) {\n  height: calc(100vh - 32px);\n}\n\n:deep(.el-tabs__content) {\n  flex: 1;\n  margin-top: 1px;\n  overflow: hidden;\n}\n\n:deep(.el-tab-pane) {\n  height: 100%;\n}\n\n/* 确保终端容器填充剩余空间 */\n:deep(.el-tab-pane > div) {\n  height: 100%;\n}\n\n/* 动态背景色样式 */\n:deep(.el-tabs__content),\n:deep(.el-tab-pane),\n:deep(.el-tab-pane > div > #term-data) {\n  background-color: v-bind('terminalBackground');\n}\n</style>\n"
  },
  {
    "path": "webssh/src/views/Login.vue",
    "content": "<template>\n  <div class=\"login-container\">\n    <div class=\"login-box\">\n      <div class=\"login-header\">\n        <h1>欢迎登录</h1>\n        <p>Web Terminal Management System</p>\n      </div>\n\n      <div class=\"login-form\">\n        <div class=\"form-item\">\n          <el-input v-model=\"data.name\" placeholder=\"请输入用户名\" :prefix-icon=\"User\" trim minlength=\"1\" maxlength=\"64\"\n            show-word-limit clearable />\n        </div>\n\n        <div class=\"form-item\">\n          <el-input v-model=\"data.pwd\" placeholder=\"请输入密码\" :prefix-icon=\"Lock\" type=\"password\" trim minlength=\"3\"\n            maxlength=\"64\" show-word-limit show-password clearable />\n        </div>\n\n        <div class=\"form-item\">\n          <el-button type=\"primary\" class=\"login-button\" @click=\"login\">\n            登录\n          </el-button>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { ElMessage } from \"element-plus\";\nimport { User, Lock } from '@element-plus/icons-vue';\nimport axios from \"axios\";\nimport { useGlobalStore } from \"@/stores/store\";\n\nlet router = useRouter();\nlet globalStore = useGlobalStore();\n\nlet data = reactive({\n  name: \"\",\n  pwd: \"\",\n})\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  token: string;\n  is_admin: \"Y\" | \"N\";\n  is_root: \"Y\" | \"N\";\n  user_name: string;\n  user_desc: string;\n  user_expiry_at: string;\n}\n\n/**\n * 登陆系统\n */\nfunction login() {\n  if (data.name.trim().length < 2) {\n    ElMessage.error(\"用户名至少两个字符\")\n    return\n  }\n\n  if (data.pwd.trim().length < 2) {\n    ElMessage.error(\"密码至少两个字符\")\n    return\n  }\n\n  axios.post<ResponseData>(\"/api/login\", data).then((ret) => {\n    if (ret.data.code === 0) {\n      ElMessage.success(\"登陆成功\");\n      localStorage.setItem(\"token\", ret.data.token);\n      localStorage.setItem(\"auth\", \"yes\");\n      let res = ret.data;\n      globalStore.login(res.is_admin, res.is_root, res.user_name, res.user_desc, res.user_expiry_at);\n      router.push({ name: \"Home\" });\n    } else {\n      ElMessage.error(\"登陆失败\");\n    }\n  }).catch(() => {\n    ElMessage.error(\"登陆失败\");\n  })\n}\n\n</script>\n\n<style scoped>\n.login-container {\n  min-height: 100vh;\n  height: 100vh;\n  background: linear-gradient(135deg, #1a365d 0%, #2d3748 100%);\n  display: flex;\n  justify-content: center;\n  align-items: flex-start;\n  padding: 20px;\n  overflow: hidden;\n  box-sizing: border-box;\n}\n\n.login-box {\n  width: 100%;\n  max-width: 420px;\n  background: rgba(255, 255, 255, 0.98);\n  border-radius: 20px;\n  box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);\n  padding: 40px 30px;\n  backdrop-filter: blur(10px);\n  margin-top: 10vh;\n}\n\n.login-header {\n  text-align: center;\n  margin-bottom: 25px;\n}\n\n.login-header h1 {\n  color: #2d3748;\n  font-size: clamp(1.8em, 4vw, 2.2em);\n  font-weight: 600;\n  margin: 0 0 10px 0;\n}\n\n.login-header p {\n  color: #718096;\n  font-size: clamp(0.9em, 2vw, 1.1em);\n  margin: 0;\n}\n\n.login-form {\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n}\n\n.form-item {\n  width: 100%;\n}\n\n:deep(.el-input__wrapper) {\n  background-color: #f8fafc;\n  border: 2px solid transparent;\n  border-radius: 12px;\n  transition: all 0.3s ease;\n  box-shadow: none !important;\n  padding: 0 15px;\n  height: 45px;\n}\n\n:deep(.el-input__wrapper:hover),\n:deep(.el-input__wrapper.is-focus) {\n  border-color: #4c51bf;\n  background-color: #ffffff;\n}\n\n:deep(.el-input__inner) {\n  height: 45px;\n  font-size: 16px;\n  color: #2d3748;\n}\n\n:deep(.el-input__prefix) {\n  font-size: 1.2em;\n  margin-right: 10px;\n  color: #718096;\n}\n\n:deep(.el-input__inner::placeholder) {\n  color: #a0aec0;\n  opacity: 1;\n  /* 修复Firefox中placeholder颜色过浅的问题 */\n}\n\n:deep(.el-input__inner::-webkit-input-placeholder) {\n  color: #a0aec0;\n}\n\n:deep(.el-input__inner::-moz-placeholder) {\n  color: #a0aec0;\n}\n\n:deep(.el-input__inner:-ms-input-placeholder) {\n  color: #a0aec0;\n}\n\n.login-button {\n  width: 100%;\n  height: 45px;\n  font-size: 16px;\n  font-weight: 500;\n  letter-spacing: 2px;\n  background: -webkit-gradient(linear, left top, right top, from(#4c51bf), to(#667eea));\n  background: -o-linear-gradient(left, #4c51bf, #667eea);\n  background: linear-gradient(to right, #4c51bf, #667eea);\n  border: none;\n  border-radius: 12px;\n  -webkit-transition: all 0.3s ease;\n  -o-transition: all 0.3s ease;\n  transition: all 0.3s ease;\n  cursor: pointer;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.login-button:hover {\n  -webkit-transform: translateY(-2px);\n  -ms-transform: translateY(-2px);\n  transform: translateY(-2px);\n  -webkit-box-shadow: 0 6px 20px rgba(76, 81, 191, 0.3);\n  box-shadow: 0 6px 20px rgba(76, 81, 191, 0.3);\n}\n\n.login-button:active {\n  -webkit-transform: translateY(0);\n  -ms-transform: translateY(0);\n  transform: translateY(0);\n}\n\n/* 响应式布局 */\n@media screen and (max-width: 768px) {\n  .login-container {\n    padding: 15px;\n  }\n\n  .login-box {\n    padding: 25px 20px;\n    width: 90%;\n    margin-top: 8vh;\n  }\n\n  :deep(.el-input__wrapper) {\n    height: 40px;\n  }\n\n  .login-button {\n    height: 40px;\n    font-size: 15px;\n  }\n}\n\n/* 平板设备适配 */\n@media screen and (min-width: 768px) and (max-width: 1024px) {\n  .login-box {\n    max-width: 480px;\n    padding: 35px 25px;\n  }\n}\n\n/* 横屏手机适配 */\n@media screen and (max-height: 480px) {\n  .login-container {\n    align-items: flex-start;\n    padding: 10px;\n  }\n\n  .login-box {\n    padding: 20px 15px;\n    margin-top: 5vh;\n  }\n\n  .login-header {\n    margin-bottom: 20px;\n  }\n\n  .login-form {\n    gap: 15px;\n  }\n}\n\n/* 确保在小屏幕设备上内容不会溢出 */\n@media screen and (max-height: 600px) {\n  .login-box {\n    margin-top: 5vh;\n    padding: 20px 15px;\n  }\n}\n\n/* 暗色模式支持 */\n@media (prefers-color-scheme: dark) {\n  .login-box {\n    background: rgba(255, 255, 255, 0.95);\n  }\n\n  :deep(.el-input__wrapper) {\n    background-color: rgba(248, 250, 252, 0.95);\n  }\n\n  .login-header h1 {\n    color: #1a202c;\n  }\n\n  .login-header p {\n    color: #4a5568;\n  }\n}\n\n/* 兼容性补充 */\n@supports not (gap: 25px) {\n  .login-form {\n    margin: -12.5px 0;\n  }\n\n  .login-form>* {\n    margin: 12.5px 0;\n  }\n}\n\n@supports not (backdrop-filter: blur(10px)) {\n  .login-box {\n    background: rgba(255, 255, 255, 0.98);\n  }\n}\n</style>\n"
  },
  {
    "path": "webssh/src/views/Manage.vue",
    "content": "<template>\n  <el-container class=\"manage-container\">\n    <el-main>\n      <div>\n        <el-tabs v-model=\"data.active_name\" type=\"card\">\n          <Connect></Connect>\n          <Account></Account>\n          <NetFilter></NetFilter>\n          <LoginAudit></LoginAudit>\n          <SshdUser></SshdUser>\n          <SshdCert></SshdCert>\n        </el-tabs>\n      </div>\n    </el-main>\n  </el-container>\n</template>\n\n<script setup lang=\"ts\">\nimport { reactive } from \"vue\";\nimport { useRouter } from \"vue-router\";\nimport { useGlobalStore } from \"@/stores/store\";\nimport Account from \"@/components/Account.vue\";\nimport Connect from \"@/components/Connect.vue\";\nimport NetFilter from \"@/components/NetFilter.vue\";\nimport LoginAudit from \"@/components/LoginAudit.vue\";\nimport SshdUser from \"@/components/SshdUser.vue\";\nimport SshdCert from \"@/components/SshdCert.vue\";\n\nlet router = useRouter();\nlet globalStore = useGlobalStore();\n\nlet data = reactive({\n  active_name: \"connectInfo\",\n});\n\n/**\n * 回到主页\n */\nfunction goHome() {\n  router.push({ name: \"Home\" })\n}\n\n/**\n * 退出登陆\n */\nfunction logout() {\n  globalStore.logout();\n  router.push({ \"name\": \"Login\" });\n}\n\n</script>\n\n<style scoped>\n.manage-container {\n  background-color: #fff;\n}\n</style>\n"
  },
  {
    "path": "webssh/src/views/NotFound.vue",
    "content": "<template></template>\n<script setup lang=\"ts\">\nimport { useRouter } from \"vue-router\";\nlet router = useRouter();\nconsole.log(\"404 Page\");\nrouter.push({ \"name\": \"Home\" })\n</script>\n"
  },
  {
    "path": "webssh/src/views/SysInit.vue",
    "content": "<template>\n\n  <div>\n    <el-container>\n      <el-header>\n        <h1 style=\"text-align: center;\">系统初始化</h1>\n      </el-header>\n      <el-main>\n        <el-row>\n          <el-col :span=\"4\"></el-col>\n          <el-col :span=\"16\">\n            <div>\n              <el-steps :active=\"active\" finish-status=\"success\">\n                <el-step title=\"数据库选择\" />\n                <el-step title=\"Web账号配置\" />\n                <el-step title=\"SSH服务器配置\" />\n                <el-step title=\"完成\" />\n              </el-steps>\n\n              <el-divider />\n              <el-form :model=\"form\">\n\n                <div v-if=\"active === 0\">\n                  <el-form-item label=\"数据库\">\n                    <el-radio-group v-model=\"form.db_type\">\n                      <el-radio value=\"sqlite\">SQLite</el-radio>\n                      <el-radio value=\"mysql\">MySQL</el-radio>\n                      <el-radio value=\"pgsql\">PostgresSQL</el-radio>\n                    </el-radio-group>\n                  </el-form-item>\n\n                  <el-form-item v-if=\"form.db_type === 'sqlite'\">\n                    <el-card style=\"width: 100%;\">\n                      <template #header>\n                        <div class=\"card-header\">\n                          <span>样例:&nbsp;&nbsp;gowebssh.db</span>\n                        </div>\n                      </template>\n\n                      <el-input v-model=\"form.sqlite_dbdsn\" minlength=\"10\" maxlength=\"65535\" show-word-limit clearable\n                        placeholder=\"请输入Sqlite数据库连接配置,参考上面的样例\">\n                      </el-input>\n                    </el-card>\n                  </el-form-item>\n\n                  <el-form-item v-if=\"form.db_type === 'mysql'\">\n                    <el-card style=\"width: 100%;\">\n                      <template #header>\n                        <div class=\"card-header\">\n                          <span>样例:&nbsp;&nbsp;root:mypwd@tcp(192.168.150.200:3306)/mydb?charset=utf8mb4&parseTime=True&loc=Local</span>\n                        </div>\n                      </template>\n\n                      <el-input v-model=\"form.mysql_dbdsn\" minlength=\"10\" maxlength=\"65535\" show-word-limit clearable\n                        placeholder=\"请输入MySQL数据库连接配置,参考上面的样例\">\n                      </el-input>\n                    </el-card>\n                  </el-form-item>\n\n                  <el-form-item v-if=\"form.db_type === 'pgsql'\">\n                    <el-card style=\"width: 100%;\">\n                      <template #header>\n                        <div class=\"card-header\">\n                          <span>样例:&nbsp;&nbsp;host=192.168.150.200 port=5432 user=postgres dbname=mydb sslmode=disable\n                            password=mypwd</span>\n                        </div>\n                      </template>\n\n                      <el-input v-model=\"form.pgsql_dbdsn\" minlength=\"10\" maxlength=\"65535\" show-word-limit clearable\n                        placeholder=\"请输入PostgresSQL数据库连接配置,参考上面的样例\">\n                      </el-input>\n                    </el-card>\n                  </el-form-item>\n                </div>\n\n                <div v-if=\"active === 1\">\n                  <div>\n                    <el-form-item label=\"Web登录账号:\">\n                      <el-input v-model=\"form.name\" trim minlength=\"1\" maxlength=\"64\" show-word-limit clearable\n                        placeholder=\"请输入用户名\">\n                      </el-input>\n                    </el-form-item>\n                    <el-form-item label=\"Web登录密码:\">\n                      <el-input v-model=\"form.pwd\" trim type=\"password\" minlength=\"3\" maxlength=\"64\" show-word-limit\n                        show-password clearable placeholder=\"请输入密码\">\n                      </el-input>\n                    </el-form-item>\n                  </div>\n                </div>\n\n                <div v-if=\"active === 2\">\n                  <div>\n                    <el-form-item label=\"SSH服务器登录账号:\">\n                      <el-input v-model=\"form.sshd_user\" trim minlength=\"1\" maxlength=\"64\" show-word-limit clearable\n                        placeholder=\"请输入账号\">\n                      </el-input>\n                    </el-form-item>\n                    <el-form-item label=\"SSH服务器登录密码:\">\n                      <el-input v-model=\"form.sshd_pwd\" trim type=\"password\" minlength=\"3\" maxlength=\"64\"\n                        show-word-limit show-password clearable placeholder=\"请输入密码\">\n                      </el-input>\n                    </el-form-item>\n                    <el-form-item label=\"SSH服务器监听端口:\">\n                      <el-input-number v-model=\"form.sshd_port\" :min=\"1\" :max=\"65535\" />\n                    </el-form-item>\n                    <el-form-item label=\"SSH服务器监听地址:\">\n                      <el-select v-model=\"form.sshd_host\" placeholder=\"选择监听地址\">\n                        <el-option label=\"0.0.0.0\" value=\"0.0.0.0\" />\n                        <el-option label=\"127.0.0.1\" value=\"127.0.0.1\" />\n                      </el-select>\n                    </el-form-item>\n                  </div>\n                </div>\n\n                <div v-if=\"active === 3\">\n                  <el-form-item>\n                    <el-card style=\"width: 100%;\">\n                      <template #header>\n                        <div class=\"card-header\">\n                          <span style=\"color: red;\">配置确认,请妥善保存密码</span>\n                        </div>\n                      </template>\n                      <p>数据库类型:&nbsp;&nbsp;{{ db_kind }}</p>\n                      <p>数据库DSN:&nbsp;&nbsp;{{ db_dsn }}</p>\n                      <p>Web登录账号:&nbsp;&nbsp;{{ form.name }}</p>\n                      <p>Web登录密码:&nbsp;&nbsp;{{ form.pwd }}</p>\n                      </br>\n                      <p>SSH服务器登录账号:&nbsp;&nbsp;{{ form.sshd_user }}</p>\n                      <p>SSH服务器登录密码:&nbsp;&nbsp;{{ form.sshd_pwd }}</p>\n                      <p>SSH服务器监听端口:&nbsp;&nbsp;{{ form.sshd_port }}</p>\n                      <p>SSH服务器监听地址:&nbsp;&nbsp;{{ form.sshd_host }}</p>\n                    </el-card>\n                  </el-form-item>\n                </div>\n\n                <div>\n                  <el-form-item>\n                    <el-button type=\"success\" v-if=\"active === 0\" @click=\"dbConnCheck\">测试连接</el-button>\n                    <el-button v-if=\"active > 0\" type=\"primary\" @click=\"goPrev\">上一步</el-button>\n                    <el-button v-if=\"active < 3\" type=\"primary\" @click=\"goNext\">下一步</el-button>\n                    <el-button v-if=\"active === 3\" type=\"success\" @click=\"sysInit\">完成</el-button>\n\n                    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n                    <div v-if=\"active === 3\">\n                      <el-popconfirm confirmButtonText=\"确定\" cancelButtonText=\"取消\" icon=\"el-icon-info\" iconColor=\"red\"\n                        title=\"确定初始化\" @confirm=\"sysInit\">\n                        <template #reference>\n                          &nbsp;&nbsp;<el-button type=\"success\">完成</el-button>\n                        </template>\n                      </el-popconfirm>\n                    </div>\n\n                  </el-form-item>\n                </div>\n              </el-form>\n            </div>\n          </el-col>\n        </el-row>\n      </el-main>\n    </el-container>\n  </div>\n\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  onBeforeMount,\n  reactive,\n  ref,\n} from \"vue\";\n\nimport { useRouter } from \"vue-router\";\nimport { ElMessage } from \"element-plus\";\nimport axios from \"axios\";\nimport { useGlobalStore } from \"@/stores/store\";\n\n\nlet globalStore = useGlobalStore();\nlet router = useRouter();\n\n\nconst form = reactive({\n  sqlite_dbdsn: \"gowebssh.db\",\n  mysql_dbdsn: \"\",\n  pgsql_dbdsn: \"\",\n  db_type: \"sqlite\",\n  name: \"\",\n  pwd: \"\",\n  sshd_host: \"0.0.0.0\",\n  sshd_port: 22622,\n  sshd_user: \"\",\n  sshd_pwd: \"\"\n})\n\nlet db_dsn = computed<string>(() => {\n  if (form.db_type == \"mysql\") {\n    return form.mysql_dbdsn\n  }\n  if (form.db_type == \"pgsql\") {\n    return form.pgsql_dbdsn\n  }\n  if (form.db_type == \"sqlite\") {\n    return form.sqlite_dbdsn\n  }\n  return \"\";\n})\n\nlet db_kind = computed<string>(() => {\n  if (form.db_type == \"mysql\") {\n    return \"MySQL\"\n  }\n  if (form.db_type == \"pgsql\") {\n    return \"PostgreSQL\"\n  }\n  if (form.db_type == \"sqlite\") {\n    return \"SQLite\"\n  }\n  return \"\";\n})\n\n\nconst active = ref<number>(0)\n\nconst goPrev = () => {\n  if (active.value-- < 0) {\n    active.value = 0\n\n  }\n}\nconst goNext = () => {\n  if (active.value++ > 2) {\n    active.value = 0\n  }\n}\n\ninterface ResponseData {\n  code: number;\n  msg: string;\n  data?: any\n}\n\nfunction dbConnCheck() {\n  let str = db_dsn.value.trim();\n  if (str.length < 2) {\n    ElMessage.error(\"请输入正确配置\")\n    return;\n  }\n  axios.post<ResponseData>(`/api/sys/db_conn_check`,\n    { \"db_type\": form.db_type, \"db_dsn\": str }\n  ).then((ret) => {\n    if (ret.data.code === 0) {\n      ElMessage.success(\"连接数据库成功\");\n    } else {\n      ElMessage.error(\"连接数据库错误:\" + ret.data.msg)\n    }\n  }).catch((ret) => {\n    ElMessage.error(\"连接数据库错误异常\");\n  })\n}\n\nfunction randomString(length: number) {\n  let result = \"\";\n  const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n  const charactersLength = characters.length;\n\n  for (let i = 0; i < length; i++) {\n    result += characters.charAt(Math.floor(Math.random() * charactersLength));\n  }\n\n  return result;\n}\n\nfunction sysInit() {\n  let initData = {\n    \"db_type\": form.db_type,\n    \"db_dsn\": db_dsn.value.trim(),\n    \"jwt_secret\": randomString(64),\n    \"session_secret\": randomString(64),\n    \"username\": form.name.trim(),\n    \"password\": form.pwd.trim(),\n    \"sshd_host\": form.sshd_host.trim(),\n    \"sshd_port\": form.sshd_port,\n    \"sshd_user\": form.sshd_user.trim(),\n    \"sshd_pwd\": form.sshd_pwd.trim()\n  }\n  if (initData.db_dsn.length < 5) {\n    ElMessage.error(\"系统初始化错误:请输入正确的数据库连接\")\n    return\n  }\n\n  if (initData.username.length < 2) {\n    ElMessage.error(\"系统初始化错误:Web登录账号至少两个字符\")\n    return\n  }\n\n  if (initData.password.length < 2) {\n    ElMessage.error(\"系统初始化错误:Web登录密码至少两个字符\")\n    return\n  }\n\n  if (initData.sshd_user.length < 2) {\n    ElMessage.error(\"系统初始化错误:SSH服务器登录账号至少两个字符\")\n    return\n  }\n\n  if (initData.sshd_pwd.length < 2) {\n    ElMessage.error(\"系统初始化错误:SSH服务器登录密码至少两个字符\")\n    return\n  }\n\n  axios.post<ResponseData>(`/api/sys/init`, initData)\n    .then((ret) => {\n      if (ret.data.code === 0) {\n        ElMessage.success(\"系统初始化成功\");\n        globalStore.isInit = true;\n        router.push({ \"name\": \"Login\" });\n      } else {\n        ElMessage.error(\"系统初始化错误:\" + ret.data.msg)\n      }\n    }).catch((ret) => {\n      console.log(ret)\n      ElMessage.error(\"系统初始化错误异常\");\n    })\n}\n\nonBeforeMount(() => {\n  if (globalStore.isInit) {\n    router.push({ \"name\": \"Login\" })\n  }\n})\n\n</script>\n\n<style scoped></style>\n"
  },
  {
    "path": "webssh/tsconfig.app.json",
    "content": "{\n  \"extends\": \"@vue/tsconfig/tsconfig.dom.json\",\n  \"include\": [\"env.d.ts\", \"src/**/*\", \"src/**/*.vue\"],\n  \"exclude\": [\"src/**/__tests__/*\"],\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.app.tsbuildinfo\",\n\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"@/*\": [\"./src/*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "webssh/tsconfig.json",
    "content": "{\n  \"files\": [],\n  \"references\": [\n    {\n      \"path\": \"./tsconfig.node.json\"\n    },\n    {\n      \"path\": \"./tsconfig.app.json\"\n    }\n  ],\n  \"compilerOptions\": {\n    \"types\": [\"element-plus/global\"]\n  }\n}\n"
  },
  {
    "path": "webssh/tsconfig.node.json",
    "content": "{\n  \"extends\": \"@tsconfig/node22/tsconfig.json\",\n  \"include\": [\n    \"vite.config.*\",\n    \"vitest.config.*\",\n    \"cypress.config.*\",\n    \"nightwatch.conf.*\",\n    \"playwright.config.*\"\n  ],\n  \"compilerOptions\": {\n    \"composite\": true,\n    \"noEmit\": true,\n    \"tsBuildInfoFile\": \"./node_modules/.tmp/tsconfig.node.tsbuildinfo\",\n\n    \"module\": \"ESNext\",\n    \"moduleResolution\": \"Bundler\",\n    \"types\": [\"node\"]\n  }\n}\n"
  },
  {
    "path": "webssh/vite.config.ts",
    "content": "import { fileURLToPath, URL } from 'node:url'\r\n\r\nimport { defineConfig } from 'vite'\r\nimport vue from '@vitejs/plugin-vue'\r\nimport vueDevTools from 'vite-plugin-vue-devtools'\r\n\r\n\r\nimport AutoImport from 'unplugin-auto-import/vite'\r\nimport Components from 'unplugin-vue-components/vite'\r\nimport { ElementPlusResolver } from 'unplugin-vue-components/resolvers'\r\n\r\n\r\n// https://vitejs.dev/config/\r\nexport default defineConfig({\r\n  plugins: [\r\n    vue(),\r\n    vueDevTools(),\r\n    AutoImport({\r\n      resolvers: [ElementPlusResolver()],\r\n    }),\r\n    Components({\r\n      resolvers: [ElementPlusResolver()],\r\n    }),\r\n  ],\r\n  resolve: {\r\n    alias: {\r\n      '@': fileURLToPath(new URL('./src', import.meta.url))\r\n    }\r\n  },\r\n  // 公共路径默认为 / ,我们指定为当前项目根目录./\r\n  base: \"./\",\r\n\r\n  server: {\r\n    // 监听地址\r\n    host: \"0.0.0.0\",\r\n\r\n    // 监听端口\r\n    port: 3000,\r\n\r\n    //boolean | string 设置服务启动时是否自动打开浏览器,当此值为字符串时,会被当作 URL 的路径名\r\n    open: true,\r\n\r\n    //为开发服务器配置 CORS，配置为允许跨域\r\n    cors: true,\r\n\r\n    // 配置代理\r\n    proxy: {\r\n      \"/api\": {\r\n        // 代理目标地址\r\n        target: \"http://127.0.0.1:8899\",\r\n\r\n        // websocket \r\n        ws: true,\r\n\r\n        // 支持https\r\n        secure: false,\r\n\r\n        // 是否允许不同源\r\n        changeOrigin: true,\r\n\r\n      },\r\n    },\r\n  },\r\n  \r\n  build:{\r\n    // 指定打包路径，默认为项目根目录下的 dist 目录\r\n    outDir: 'dist',\r\n\r\n      terserOptions: {\r\n          compress: {\r\n\r\n              // 防止 Infinity 被压缩成 1/0\r\n              keep_infinity: true,\r\n\r\n              // 生产环境去除 console\r\n              drop_console: true,\r\n\r\n              // 生产环境去除 debugger\r\n              drop_debugger: true   \r\n          },\r\n      },\r\n\r\n      // chunk 大小警告的限制（以 kbs 为单位）\r\n      chunkSizeWarningLimit: 1500\r\n  }\r\n})\r\n"
  }
]